記事一覧

技術記事・日々の学びをまとめています。

アルゴリズムとデータ構造 - ハッシュマップ
アルゴリズムとデータ構造 2023-07-31

アルゴリズムとデータ構造 - ハッシュマップ

アルゴリズムとデータ構造を学ぶシリーズの記事。ハッシュマップの仕組みを取り上げ、平均O(1)のアクセスや、衝突解決のオープンアドレス法とチェイン法の違いを、Goでの基本的な実装例とともに解説する。

#データ構造

最新記事

隣接リストと隣接行列の違い|グラフ表現の使い分け
アルゴリズムとデータ構造 2023-07-29

隣接リストと隣接行列の違い|グラフ表現の使い分け

隣接リスト(O(V+E)の空間・疎グラフに有利)と隣接行列(O(V²)の空間・O(1)の辺判定)を比較。有向・無向グラフのGo実装例とともにグラフの表現方法を解説します。

#データ構造
スタックとキューの実装
アルゴリズムとデータ構造 2023-07-25

スタックとキューの実装

Goでスタックとキューをそれぞれ実装してみた記事です。スライスを使ったパターンと連結リストを使ったパターンの2通りで、LIFOのスタックとFIFOのキューを実装し、push・popやenqueue・dequeueといった操作を時間計算量O(1)で構築する方法を、パターン別に比較しながら紹介します。

#データ構造
連結リストのランナーテクニック
アルゴリズムとデータ構造 2023-07-22

連結リストのランナーテクニック

連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。

#アルゴリズム#データ構造#ランナーテクニック#Tips
再帰処理の苦手なところ
アプリケーション 2023-07-08

再帰処理の苦手なところ

再帰処理を書く際につまずきやすい、return文の扱いやコールスタックの評価について解説する記事です。再帰が得意ではないという筆者自身の視点から、処理がどのように積み重なって評価されるのかを、克服のための考え方とともに整理します。

#アルゴリズム
アルゴリズムとデータ構造の基本の復習
アルゴリズムとデータ構造 2023-06-28

アルゴリズムとデータ構造の基本の復習

コーディングクイズを解く日課の再開にあたり、アルゴリズムとデータ構造の基本を総復習した記事。配列や文字列、ハッシュテーブル、連結リスト、木、スタック、キュー、ソート、計算量といった基礎を、コーディング問題を意識して整理する。

#アルゴリズム#データ構造
プログラマー脳
アプリケーション 2023-06-26

プログラマー脳

『プログラマー脳』の書評。認知科学のアプローチを用いて、コーディングという創造的なプロセスを科学する一冊。コードを速く正確に読み書きできる人の頭の中で何が起きているのかを解き明かし、記憶や学習の仕組みから、プログラミング力の根っこを鍛えるヒントを与えてくれる。

#認知科学#書評#コードリーディング
カウントソートの実装|O(n+k)の整列をGoで
アルゴリズムとデータ構造 2023-06-24

カウントソートの実装|O(n+k)の整列をGoで

比較を使わずにソートするカウントソートを、実装を通じて学ぶ記事。要素をカウントして累積和を求めることで線形時間O(n)を実現する仕組みを、Goでの実装例とともに、その数学的な考え方から解説する。

#アルゴリズム
プログラミング脳をこれから鍛える本
アプリケーション 2023-06-24

プログラミング脳をこれから鍛える本

『プログラミング脳をこれから鍛える本』の書評。算数を題材に、プログラミングにつながる思考法をトレーニングする一冊。内容は平易で、これからプログラミング的な考え方に触れる人の入口に向く。大人には物足りない場合もあるが、思考の基礎を確かめられる。

#ロジカルシンキング#書評
バックトラッキングの実装
アルゴリズムとデータ構造 2023-06-23

バックトラッキングの実装

バックトラッキングアルゴリズムを実装で学ぶ。制約満たし探索、重複なし組み合わせ、再帰処理、木構造による考え方でGoの実装例から理解を深める実践ガイドです。

#アルゴリズム
Goで始めるコードのパフォーマンス改善
パフォーマンス 2023-06-12

Goで始めるコードのパフォーマンス改善

Goのパフォーマンス改善の実践。pprofによるプロファイリング、ベンチマーク、エスケープ解析、メモリアロケーション削減を、自作HTTPルーターの最適化事例とともに解説します。

#Golang
MySQLのトランザクション分離レベル:ダーティリード・ファントムリードを防ぐ
データベース 2023-06-08

MySQLのトランザクション分離レベル:ダーティリード・ファントムリードを防ぐ

MySQL のトランザクション分離レベルを解説。ダーティリード・ノンリピータブルリード・ファントムリードと、それぞれを防ぐ設定方法を学べます。

#トランザクション#MySQL
Githubでレジュメを管理するようにした
キャリア 2023-06-07

Githubでレジュメを管理するようにした

これまでGoogle Driveで管理していたレジュメを、GitHubで管理するように切り替えた経緯とその方法を紹介します。ここでいうレジュメとは、自分のキャリアの情報をテキストベースでまとめたものを指します。個人的に良い取り組みだったので記事にしました。

#Git#GitHub#レジュメ
Google Cloud認定 Associate Cloud Engineer 合格体験記|勉強法
インフラストラクチャ 2023-06-07

Google Cloud認定 Associate Cloud Engineer 合格体験記|勉強法

Google Cloud認定アソシエイトクラウドエンジニア試験を受験し合格したので、再受験や別の試験に備えて勉強の過程を振り返った記事です。ソフトウェアエンジニアとしての経験やGCPの利用歴を前提に、実践した学習方法や受験しての所感をまとめます。

#Google Cloud Platform
Road to ISUcon
アーキテクチャ 2023-06-07

Road to ISUcon

ISUCONへの初出場に向けて準備したことを記した記事です。予選の時間を目一杯使ってチューニングに取り組む、という現実的な目標を立てるところから、初参戦に向けてどのような準備や心構えをしていったのかを、目標・目的の設定とあわせて紹介します。

#パフォーマンスチューニング#ISUCON#ISUCON8
トランザクション概観
データベース 2023-06-07

トランザクション概観

データベースのトランザクションの基礎について解説する記事です。データを正しく保つための手法であるトランザクションを、多数のクライアントから同時アクセスが発生する状況などを念頭に、ACID特性や並行性制御、分離レベルといったデータ整合性を支える仕組みとあわせて紹介します。

#トランザクション
コンテナ技術とは?DockerとOCIコンテナの仕組みを解説
インフラストラクチャ 2023-06-05

コンテナ技術とは?DockerとOCIコンテナの仕組みを解説

コンテナ技術の仕組みを解説。namespace・cgroup・OCI 標準がどのように機能するか、なぜコンテナが現代のアプリケーションデプロイに不可欠かを学べます。

#Docker#libcontainer#lxc#lxd#コンテナ
キャッシュの書き込み方式
インフラストラクチャ 2023-06-03

キャッシュの書き込み方式

キャッシュの3つの書き込み方式を解説。Write-Through(同期書き込み)、Write-Back(後でフラッシュ)、Write-Around(キャッシュを迂回)の違いを紹介します。

#キャッシュ
デプロイ戦略を解説:ブルーグリーン・カナリア・ローリング等の比較
アプリケーション 2023-06-03

デプロイ戦略を解説:ブルーグリーン・カナリア・ローリング等の比較

ブルーグリーン・カナリア・ローリング・リクリエイトといった代表的なデプロイ戦略を比較します。デプロイ・リリース・ロールバックの定義を整理したうえで、それぞれの仕組みと長所短所、ダウンタイムを最小化するための選び方と使い分けを解説します。

#デプロイ
フォワードプロキシ vs リバースプロキシ vs APIゲートウェイ:わかりやすい比較
インフラストラクチャ 2023-06-03

フォワードプロキシ vs リバースプロキシ vs APIゲートウェイ:わかりやすい比較

フォワードプロキシ・リバースプロキシ・APIゲートウェイの違いをわかりやすく比較した記事です。クライアントとサーバーの間に配置して通信を中継するそれぞれのサーバーが、どのような役割を持ち、どんなユースケースで使われるのかを整理して解説します。

#フォワードプロキシ#リバースプロキシ#ゲートウェイ