immudbの継続的インテグレーション実践: 自動テストとコード品質チェック
CIフロー概要
immudbの継続的インテグレーションはMakefileを基盤としており、コード生成からテスト実行までのライフサイクルを網羅しています。主なCI目標にはコード品質の確保、機能の検証、パフォーマンスのモニタリング、多環境への対応が含まれます。プロジェクトではMakefileで統一されたビルドエントリポイントを定義し、開発者は単純なコマンドで一連のテストフロ ...
8月6日 18:26 投稿
Go製高速WebファジングツールFFUFの実践ガイド
FFUFは、Go言語で実装された軽量かつ高並列なWebファジングツールであり、ディレクトリ探索、パラメータ列挙、エンドポイント発見などのセキュリティテストに広く活用されています。その設計は単純ながらも拡張性が高く、HTTPリクエストの送信効率と結果のフィルタリング精度を両立させています。
FFUFの主な技術的特徴
並列処理最適化:goroutineによる非同期リクエス ...
7月29日 07:12 投稿
Goにおける変数のライフサイクルとメモリ管理
変数の有効期間とメモリ割り当ての仕組み
Go言語では、変数のライフサイクル(生存期間)がそのメモリ割り当て場所(スタックまたはヒープ)に直接影響します。変数がいつ、どこでどのように確保されるかを理解することで、パフォーマンスの最適化や不要なガベージコレクション(GC)負荷の低減が可能になります。
スタックとヒープの違い
スタック: 関数呼び出し時に ...
7月24日 21:19 投稿
CentOS7.9 で io.Copy がハングする:splice システムコールと古い Linux カーネルの相性問題
事象の概要
Go 1.21.0〜1.21.4 でコンパイルした TCP プロキシが CentOS 7.9(カーネル 3.10.0)上で動作中、io.Copy が永遠に戻らなくなるケースが発生しました。
原因は net.TCPConn.ReadFrom が内部的に使う splice が SPLICE_F_NONBLOCK フラグを失ったことで、ノンブロッキング動作が無効になり、古いカーネルでブロックしていたためです。
Go 1.21.5 で該当フラグが ...
7月23日 22:50 投稿
Kubernetes client-go DeltaFIFOのソースコード分析
概要
Queueインターフェース
DeltaFIFO
要素の追加・削除・更新 - queueActionLocked()
Pop()
Replace()
概要
ソースコードのバージョン情報
プロジェクト: kubernetes
ブランチ: master
最新コミットID: d25d741c
日付: 2021-09-26
前回の記事「Kubernetes client-goソースコード分析 - 序章」で、カスタムコントローラーが関与するclient-goコンポーネントの全体的な ...
7月23日 16:47 投稿
LedisDBのデータバックアップと復元:dump、load、repairツールの詳細解説
LedisDBのデータバックアップと復元:dump、load、repairツールの詳細解説
1. LedisDBのデータバックアップ:dumpコマンドの詳細
LedisDBは、Go言語で開発された高性能NoSQLデータベースサーバーであり、様々なデータタイプに対応したバックアップ機能を提供しています。これらのコマンドはserver/cmd_migrate.goに定義されており、以下のように分類されます:
dump:KVタ ...
7月21日 23:20 投稿
Go言語のreflectパッケージを使った実行時メタプログラミング実践
実行時に型情報を扱うための3原則
インタフェース値 → reflect.Value / reflect.Type への変換が可能
reflect.Value / reflect.Type → インタフェース値 への復元が可能
reflect.Value で値を書き換えるには「アドレス可能」である必要がある
型システムとreflectの関係
Goでは変数は「静的型」と「実行時型(コンクリート型)」を持つ。
静的型はソースコード上で宣言 ...
7月20日 17:30 投稿
Elasticsearchの災害復旧システム構築:Infini Gatewayを用いた堅牢なアーキテクチャ
Elasticsearchを中心とした基幹システムにおいて、障害発生時の業務継続性を確保するための効果的な災害復旧(DR)ソリューションが求められています。本記事では、Infini Gateway(旧称:极限网关)を活用し、アプリケーション側の改修を最小限に抑えたまま、データの複製とフェイルオーバーを実現するアーキテクチャについて解説します。
アーキテクチャ概要
本ソリュー ...
7月18日 21:23 投稿
Charles ライセンスキー生成メカニズムの解析
基本的なアクティベーション方法
Charlesでアクティベーションを行うには、メニューから Help -> Register Charles を選択します。
表示されたダイアログの Registered Name に任意の名前を、生成された License key に入力して Register をクリックします。
以下に、このライセンスキーを計算するためのJavaおよびGoによる実装例を示します。
Java による実装
import ...
7月17日 19:37 投稿
ローカル大規模言語模型の実行環境構築:Ollama 活用ガイド
Ollama の概要
Ollama は、Go 言語で構築されたオープンソースのフレームワークであり、ユーザーが自身のマシン上で大規模言語模型(LLM)を容易に実行できるように設計されています。Windows、Linux、macOS といった主要なオペレーティングシステムに対応しており、シンプルなコマンド操作だけでモデルのデプロイから推論までが可能です。また、モデルの量子化(quantizat ...
7月15日 19:48 投稿