記事一覧
技術記事・日々の学びをまとめています。
アルゴリズムとデータ構造 - ハッシュマップ
アルゴリズムとデータ構造を学ぶシリーズの記事。ハッシュマップの仕組みを取り上げ、平均O(1)のアクセスや、衝突解決のオープンアドレス法とチェイン法の違いを、Goでの基本的な実装例とともに解説する。
最新記事
隣接リストと隣接行列の違い|グラフ表現の使い分け
隣接リスト(O(V+E)の空間・疎グラフに有利)と隣接行列(O(V²)の空間・O(1)の辺判定)を比較。有向・無向グラフのGo実装例とともにグラフの表現方法を解説します。
スタックとキューの実装
Goでスタックとキューをそれぞれ実装してみた記事です。スライスを使ったパターンと連結リストを使ったパターンの2通りで、LIFOのスタックとFIFOのキューを実装し、push・popやenqueue・dequeueといった操作を時間計算量O(1)で構築する方法を、パターン別に比較しながら紹介します。
連結リストのランナーテクニック
連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。
再帰処理の苦手なところ
再帰処理を書く際につまずきやすい、return文の扱いやコールスタックの評価について解説する記事です。再帰が得意ではないという筆者自身の視点から、処理がどのように積み重なって評価されるのかを、克服のための考え方とともに整理します。
アルゴリズムとデータ構造の基本の復習
コーディングクイズを解く日課の再開にあたり、アルゴリズムとデータ構造の基本を総復習した記事。配列や文字列、ハッシュテーブル、連結リスト、木、スタック、キュー、ソート、計算量といった基礎を、コーディング問題を意識して整理する。
プログラマー脳
『プログラマー脳』の書評。認知科学のアプローチを用いて、コーディングという創造的なプロセスを科学する一冊。コードを速く正確に読み書きできる人の頭の中で何が起きているのかを解き明かし、記憶や学習の仕組みから、プログラミング力の根っこを鍛えるヒントを与えてくれる。
カウントソートの実装|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ゲートウェイの違いをわかりやすく比較した記事です。クライアントとサーバーの間に配置して通信を中継するそれぞれのサーバーが、どのような役割を持ち、どんなユースケースで使われるのかを整理して解説します。