
前回の続き?です。vol.1で終わらせないように継続(vol.3は出せなそうです)。
本の読み直しも最近行ったので何を読み直したのかもメモしておきます。
新規で読んだ
- センスは知識からはじまる
- 並行プログラミング入門: Rust、C、アセンブリによる実装からのアプローチ
読み直した
- SQL実践入門
- サーバ/インフラを支える技術
直近は「知識を得ることで何ができるようになるのか」、「改めて技術の知識を見直してみる」を考えていました。直近仕事がうまくいかないからですね。本を読むことで気持ちが晴れるわけではないですが少しだけでも気分転換になったんじゃないかと思います。
知識を得ることで何ができるようになるのか
センスは知識からはじまる
「センスって生まれ持った才能のことだけを指すものではないな」と捉えるようになりました。
しかし、何も努力しなくても良いというわけではありません。日々情報のインプット、アウトプットを行うことが前提です。アウトプットもコピペじゃダメです。
地味だけど普通のことをコツコツ続けられる人が強いんです。
改めて技術の知識を見直してみる
並行プログラミング入門: Rust、C、アセンブリによる実装からのアプローチ
最近、非同期やイベントという言葉をよく聞くようになったので触りだけ読みました。序盤の非同期処理までです。
メモリレベルのデータ操作から解説がありました。C言語やRustの知識が必要なのでコードの理解は難しかったです。しかし、なぜ低レイアでC言語やRustが使われるのかや普段実務で行っているプログラミングは難しい箇所が隠蔽されていることがわかりました。
また時間を置いて読み返したいです。実務に直接活かせなくても深い学びはいつか役に立つはずです。
SQL実践入門
テーブル結合、インデックスについて復習しました。
テーブル結合時、駆動用テーブルを小さくすること。駆動テーブルを小さくする場合、インデックスが貼られていないと駆動表を小さくしても意味がないこと etc... たくさん忘れていました。アプリケーションフレームワークを利用する際に勝手に外部キーが貼られる背景が少しわかりました。joinをよしなに高速化してくれていたのかもしれません。
また、インデックスは普通に忘れます。インデックスが効果をもたらす条件やインデックスを使った少し特殊なクエリ最適化を復習できました。インデックスオンリースキャンなんて完全に忘れていました。
サーバ/インフラを支える技術
DBのレプリカとレプリケーション、Webサーバー(Apache)のpreforkとworkerの違い、プロセスとスレッドの仕組みの違い etc...
パフォーマンス改善って難しいです。いざ必要になったときには知識を忘れていることが多くいつも知識をうまく活用できていない気がします。定期的に復習をしたり仕事でパフォーマンス改善について取り組む必要がありそうです。ISUCONがまた開催されてくれれば良いのになー
大規模サービス技術入門 を買って読みたくなりました。 gihyo.jp
最後に
自分が知ってるつもり は多いと思いました。技術書を読み返してみて忘れてることが多すぎたためです。
仕事もなかなかうまくいきませんし技術の知識や情熱も少し自信なくなる年末になりそうです。ここは我慢で変な自暴自棄にならないように気をつけます。積読でもしようかな。