アーカイブ 2023
75 件の記事
プログラマー脳
『プログラマー脳』の書評。認知科学のアプローチを用いて、コーディングという創造的なプロセスを科学する一冊。コードを速く正確に読み書きできる人の頭の中で何が起きているのかを解き明かし、記憶や学習の仕組みから、プログラミング力の根っこを鍛えるヒントを与えてくれる。
カウントソートの実装|O(n+k)の整列をGoで
比較を使わずにソートするカウントソートを、実装を通じて学ぶ記事。要素をカウントして累積和を求めることで線形時間O(n)を実現する仕組みを、Goでの実装例とともに、その数学的な考え方から解説する。
プログラミング脳をこれから鍛える本
『プログラミング脳をこれから鍛える本』の書評。算数を題材に、プログラミングにつながる思考法をトレーニングする一冊。内容は平易で、これからプログラミング的な考え方に触れる人の入口に向く。大人には物足りない場合もあるが、思考の基礎を確かめられる。
バックトラッキングの実装
バックトラッキングアルゴリズムを実装で学ぶ。制約満たし探索、重複なし組み合わせ、再帰処理、木構造による考え方でGoの実装例から理解を深める実践ガイドです。
Goで始めるコードのパフォーマンス改善
Goのパフォーマンス改善の実践。pprofによるプロファイリング、ベンチマーク、エスケープ解析、メモリアロケーション削減を、自作HTTPルーターの最適化事例とともに解説します。
MySQLのトランザクション分離レベル:ダーティリード・ファントムリードを防ぐ
MySQL のトランザクション分離レベルを解説。ダーティリード・ノンリピータブルリード・ファントムリードと、それぞれを防ぐ設定方法を学べます。
Githubでレジュメを管理するようにした
これまでGoogle Driveで管理していたレジュメを、GitHubで管理するように切り替えた経緯とその方法を紹介します。ここでいうレジュメとは、自分のキャリアの情報をテキストベースでまとめたものを指します。個人的に良い取り組みだったので記事にしました。
Google Cloud認定 Associate Cloud Engineer 合格体験記|勉強法
Google Cloud認定アソシエイトクラウドエンジニア試験を受験し合格したので、再受験や別の試験に備えて勉強の過程を振り返った記事です。ソフトウェアエンジニアとしての経験やGCPの利用歴を前提に、実践した学習方法や受験しての所感をまとめます。
Road to ISUcon
ISUCONへの初出場に向けて準備したことを記した記事です。予選の時間を目一杯使ってチューニングに取り組む、という現実的な目標を立てるところから、初参戦に向けてどのような準備や心構えをしていったのかを、目標・目的の設定とあわせて紹介します。
トランザクション概観
データベースのトランザクションの基礎について解説する記事です。データを正しく保つための手法であるトランザクションを、多数のクライアントから同時アクセスが発生する状況などを念頭に、ACID特性や並行性制御、分離レベルといったデータ整合性を支える仕組みとあわせて紹介します。
コンテナ技術とは?DockerとOCIコンテナの仕組みを解説
コンテナ技術の仕組みを解説。namespace・cgroup・OCI 標準がどのように機能するか、なぜコンテナが現代のアプリケーションデプロイに不可欠かを学べます。
キャッシュの書き込み方式
キャッシュの3つの書き込み方式を解説。Write-Through(同期書き込み)、Write-Back(後でフラッシュ)、Write-Around(キャッシュを迂回)の違いを紹介します。
デプロイ戦略を解説:ブルーグリーン・カナリア・ローリング等の比較
ブルーグリーン・カナリア・ローリング・リクリエイトといった代表的なデプロイ戦略を比較します。デプロイ・リリース・ロールバックの定義を整理したうえで、それぞれの仕組みと長所短所、ダウンタイムを最小化するための選び方と使い分けを解説します。
フォワードプロキシ vs リバースプロキシ vs APIゲートウェイ:わかりやすい比較
フォワードプロキシ・リバースプロキシ・APIゲートウェイの違いをわかりやすく比較した記事です。クライアントとサーバーの間に配置して通信を中継するそれぞれのサーバーが、どのような役割を持ち、どんなユースケースで使われるのかを整理して解説します。
シャーディング vs パーティショニング:違いと使い分け
ときどきどちらがどちらか混乱してしまうシャーディングとパーティショニングの違いについて、メモとしてまとめた記事です。水平分割と垂直分割の使い分けや、データを複数に分けることでスケールさせるデータベースのスケーリング戦略を、両者を対比しながら整理します。
GCPについての覚え書き
Google Cloud認定アソシエイトクラウドエンジニア試験に向けた学習の際にまとめた、雑多な覚え書きです。責任共有モデルや最小権限の原則といった考え方から、Google Cloudの各種サービスの要点までを整理した個人用のメモです。
ライト、ついてますか 問題発見の人間学
『ライト、ついてますか 問題発見の人間学』の書評。「問題は解くことより見つけることが難しい」という核心を、印象的なエピソードを通じて説く名著。当たり前のようでいて忘れがちな、正しい問題を見極めることの大切さに気づかせてくれる。
ユニコーン企業のひみつ ―Spotifyで学んだソフトウェアづくりと働き方
『ユニコーン企業のひみつ ―Spotifyで学んだソフトウェアづくりと働き方』の書評。ユニコーン企業の組織論や文化を、Spotifyでの経験をもとに学べる一冊。方法論そのものより、方法論を問わず成長性を支える文化や資質とは何かが主題で、スクラムを超えた先を考えさせてくれる。
PyroscopeでContinuous Profiling
Pyroscopeを使った継続的プロファイリングを解説。サーバー構築、pull型プロファイリング、保持期間の設定、Grafana連携の方法を紹介します。
ファイルシステムの容量不足によるサービスダウン
自身のブログでファイルシステムの容量不足が原因でサービスダウンが発生した際の、調査と対処の記録です。2023年初めに500エラーが返るようになった事象を題材に、Dockerのログの肥大化によってディスクを圧迫していた原因の特定から、容量の管理・復旧までを解説します。