$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

tech

「DMM.comを支えるデータ駆動戦略」読んだ

データ分析を学びたいシリーズとして読んだ。 DMM.comを支えるデータ駆動戦略作者:石垣 雅人マイナビ出版Amazon この本はプロダクト作りにおけるKPI分解から施策決定、施策振り返りから次の施策へ活かすなどのリーンおよびアジャイルな開発の一連の流れをデ…

「達人に学ぶSQL徹底指南書」読んだ

最近データ分析をしていて複雑なSQLを書き始めた結果、SQLの概念が理解できてなくて上手くクエリを書けないことに気づいた。そこで概念を理解するために「達人に学ぶSQL徹底指南書」を読んだ。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなた…

データ分析設計を知るために「本物のデータ分析力が身につく本」を読んだ

最近仕事では機能開発ではなくデータ分析の仕事をしばらくやっているのだが、同僚から「本物のデータ分析力が身に付く本」というムックが良かったと聞いたので読んでみた。 本物のデータ分析力が身に付く本 (日経BPムック)作者:河村 真一,日置 孝一,野寺 綾,…

データ指向アプリケーションデザイン 第Ⅱ部 分散データを読んだ

データ指向アプリケーションデザイン 第I部 データシステムの基礎を読んだ - $shibayu36->blog; の続き。今回は第Ⅱ部を読んだ。長いし難しいが勉強になる。 今回はクオラム、並行操作の検知、パーティショニングとセカンダリインデックス、スナップショット…

データ指向アプリケーションデザイン 第I部 データシステムの基礎を読んだ

今更ながらデータ指向アプリケーションデザインを読んでいる。第I部 データシステムの基礎まで読んだ。とにかく面白くて良い。 自分は「3章 ストレージと抽出」がもっとも面白いと感じ、とくにSSTableとLSMツリーというシンプルなアルゴリズムで多くの問題を…

MySQLのREPEATABLE READとREAD COMMITTEDのロック状況をdata_locksから観察する

前回MySQLのREPEATABLE READとREAD COMMITTEDの違いを知るために色々試した - $shibayu36->blog;という記事を書いたところ、yoku0825さんにMySQL 8.0以降だとperformance_schema.data_locksが使えると教えてもらったので試した。 ちなみに、後ろからロックが…

Action Graphを使ってGoのpackageごとのビルド時間を可視化する

Goのパッケージごとのビルド時間を計測したいんだけど (どのパッケージのビルドに何秒かかってる、とか見たい) どうしたらいいのか、ちょっとググってみたけどランタイムにおけるパフォーマンス測定の話題ばっかり出てくる— うたがわきき (@utgwkk) February…

MySQLのREPEATABLE READとREAD COMMITTEDの違いを知るために色々試した

MySQLのトランザクション分離レベルについてふんわりとした理解しかないなと感じた。もう少し理解するために、とくにREPEATABLE READとREAD COMMITTEDの違いを手を動かして色々確認してみた。 以下の記事を参考にした。 [RDBMS][SQL]トランザクション分離レ…

Goで関数の引数に、union型っぽくstruct Aもしくはstruct Bのどちらかを受け取れるようにしたい

Goで関数の引数に、struct Aという型もしくはstruct Bのどちらかを受け取るということをしたかった。interfaceをちゃんと切ってそれに必要なメソッドをAとBに実装することで実現できることを知った上で、あまり丁寧にそういうことをせずにやりたい。 色々調…

本の内容が頭に入ってくるのは結局は知見まとめノートを作っている時

最近は読書のやり方を変えてみたら知識の吸収速度・引き出し速度が上がった話 - $shibayu36->blog;に書いているやり方で読書をしている。こういう流れだ。 (1)学びたいと思った知識が書いてありそうな本を2~5冊選ぶ (2)1冊ずつざっくり読みながら、面白かっ…

YAPC::Hiroshima 2024にクラスター株式会社としてスポンサー参加しました #yapcjapan

毎年恒例YAPCに行ってきました!いやー今回も楽しかったですね。いろんな種類の発表もあり、久しぶりの人や名前は知っているけど話したことない人ともたくさん関われました。スタッフの皆さん、こんな楽しいカンファレンスを開催してくれてありがとうござい…

文化による知覚・認識・行動への影響を知る - 異文化理解力を読んだ

異文化理解力という本がおもしろいと聞いたことがあり、興味があったので読んだ。想像以上に面白く夢中になって一気に読んでしまった。 異文化理解力 ― 相手と自分の真意がわかる ビジネスパーソン必須の教養作者:エリン・メイヤー,田岡恵英治出版Amazon こ…

Googleスプレッドシートで特定の列ヘッダー名を持つ1列を読み込む

別シートからQUERYなどの関数を用いて読み込みたいことがある。この時 =QUERY(..., "select A, C", 1)のようにAやCのような識別子を用いて読み込める。この方式は簡単に別の場所から読み込めるため非常に便利に使える。 一方でマスターとなっているシートで…

あるレポジトリを別のレポジトリのサブディレクトリへ履歴付きで移動する

あるレポジトリのサブディレクトリ配下を別のレポジトリへ履歴付きで移行する - $shibayu36->blog; の逆バージョン。 あるレポジトリでずっと開発していたが、やっぱりモノレポの中に入れたいとなって、履歴付きでモノレポの特定のサブディレクトリ配下に移…

Googleスプレッドシートで複数シートの内容を1つのシートに統合する

たとえばユーザー向け開発とリファクタリングなどの内部改善を、スプレッドシートの別シートで管理していたとする。これらを別シートに分けている理由は管理したい情報がそれぞれで違うためだ。 一方、それら進行状態については全部一覧で見たいことがあった…

Goでtemplateファイルをembedして、コードとテンプレートを分離する

Goでtext/templateを使ってコードジェネレータを書いている時、コード内にテンプレート自体を文字列として埋め込むのはコードが見にくくなるため困っていた。例えばPerlのData::Section::Simpleみたいにコードとテンプレートを分離して、見やすくしておきた…

fzfを使ってgit stashを便利に扱えるように

git stashをもっと便利に扱いたいと思い、fzfを使って使いやすくしてみた。以下のURLに載っているものを参考にして自分にとって使いやすいように改変した。 fzfでGUI選択したファイルをgit stashするシェルスクリプト git-stash-explore できたこと 今の変更…

VSCodeのworkbench.activityBar.visibleをworkbench.activityBar.locationに移行する

僕はSettings Cycler - Visual Studio Marketplaceを使ってVSCodeのActivityBarの表示非表示を切り替えている。こういうやつ。 "settings.cycle": [ { "id": "zen", "values": [ { "editor.folding": false, "editor.glyphMargin": false, "workbench.activi…

Goでは-race付きでテストするとビルドキャッシュが完全に別になる

gotesplitにAdd -race to list when it is specified for test optionsというPullRequestを投げたのだが、この背景を書いておこうと思う。 まずGoでは-raceオプションについて、以下のような挙動を起こす。 -raceフラグをつけるとruntime/raceがおそらく一番…

セキュリティが満たされやすい設計を学ぶ - セキュア・バイ・デザインを読んだ

設計やアーキテクチャについて学び直したいと思い、今回はセキュア・バイ・デザインを読んだ。 セキュア・バイ・デザイン: 安全なソフトウェア設計 Compass Booksシリーズ作者:Dan Bergh Johnsson,Daniel Deogun,Daniel Sawanoマイナビ出版Amazon この本の作…

進化的アーキテクチャ読んだ

最近アーキテクチャ関連の知識を身につけようと思い、進化的アーキテクチャを読んだ。 進化的アーキテクチャ ―絶え間ない変化を支える作者:Neal Ford,Rebecca Parsons,Patrick Kuaオライリー・ジャパンAmazon 言葉の定義が独特で、正直この本は難しいな〜と…

git logの内容を検索する-Sと-Gの違い

ずっとgit logの内容を検索するときに-Sオプションを使っていたが、実は近いオプションに-Gオプションもあり、探したい内容によっては使い分けないとダメということを初めて知った... 詳しくはhttps://git-scm.com/docs/git-logの-Sと-Gのドキュメントを見て…

特定ファイルを更新したマージコミットを探す

あるファイルが最近どの程度の頻度で更新されたのか、マージコミット単位(≒PullRequest単位)で調べたいことがあった。git logのコマンドを使ったら簡単に調べられたのでメモ。 たとえば1年以内に https://github.com/x-motemen/ghq のレポジトリで .github/ …

スムーズに進行するためのエンジニアリングタスク分割の工夫

会社の振り返りで「エンジニアリングの作業タスクがうまく分割できていそうだったが、その知見を共有してほしい」と言われたので、自分がどう考えてタスク分割をしているかをこの記事で共有したい。 この記事のスコープとすること・しないこと タスク分割を…

Goで実際にどのパッケージがコンパイルされたかを確認する

Goでどのパッケージが再コンパイル予定か確認する - $shibayu36->blog;の続き。前回は大体のコンパイル計画を知る形だったが、今度は実際にどのpackageがコンパイルされたかを確認する方法についてメモ。 まずgoのコマンドは-xオプションを使うことで実行さ…

Goでどのパッケージが再コンパイル予定か確認する

build cacheがうまく使えているかを調べる必要があり、どのパッケージが再コンパイル予定かを確認するコマンドを調べたのでメモ。ちょっと自信がない部分もあるので間違っているところがあったら教えてください。 先に結論から言うと、go listを使った以下の…

ある特定のパターンにヒットする次の行が特定のパターンだった時に削除するワンライナー

あるディレクトリ以下で特定のパターンにヒットする行を全て削除する - $shibayu36->blog;に引き続き、やり方を模索してみた。 たとえばgolangを使っていて、ある処理をt.Cleanupに寄せたので対応するdeferを全部消したい時がある。 // StartHogeHelperの中…

優れたテストスイートの4本の柱を学ぶ - 「単体テストの考え方、使い方」を読んだ

良いテストケースの作成手法を学ぶ - 「はじめて学ぶソフトウェアのテスト技法」を読んだ - $shibayu36->blog;に引き続き、ソフトウェアテストの知識について言語化を進めたいと考え、「単体テストの考え方、使い方」を読んだ。 単体テストの考え方/使い方作…

良いテストケースの作成手法を学ぶ - 「はじめて学ぶソフトウェアのテスト技法」を読んだ

ソフトウェアテストに関する知識をもう少し言語化したいなと思い、「はじめて学ぶソフトウェアのテスト技法」を読んだ。 はじめて学ぶソフトウェアのテスト技法作者:リー コープランド日経BPAmazon この本では主に良いテストケースの作成手法について学べた…

Goでstruct内に定義されたタグの内容を再帰的に取得する

あるstruct構造の中のdbというタグの内容に何が含まれているかをすべて取得したい時があったため。 たとえばこういう構造があったとして type Timestamp struct { CreatedAt time.Time `db:"created_at"` UpdatedAt time.Time `db:"updated_at"` } type Json…