Goで権限をドロップする
1.0この記事では、Go言語で記述されたアプリケーションにおいて、不要になった特権を安全にドロップ(放棄)する方法について解説する。setuidやケーパビリティの扱い、特権分離の実践的な実装パターンをコード例とともに紹介する。
30 件
この記事では、Go言語で記述されたアプリケーションにおいて、不要になった特権を安全にドロップ(放棄)する方法について解説する。setuidやケーパビリティの扱い、特権分離の実践的な実装パターンをコード例とともに紹介する。
Sonarqubeのセルフホスティングは面倒で、Codecovは50ユーザー制限のライセンスが必要。OpenCovやCovergatesなど無償プロジェクトも非推奨になっている。そこで、Go言語で実装したシンプルなテストカバレッジ集約ツールを自作し公開する価値があるかどうかを議論する。最低限PythonとJSのみ対応でも、チームは使ってくれるのか、それとも有料サービスに頼るのがデフォルトなのか、コミュニティに問いかけている。
NexusCortexは、従来の大規模言語モデル(LLM)ではなく、Go言語で構築されたスパースAIコーテックスです。このプロジェクトは、Opus 4.8を凌駕する性能を目指しており、軽量かつ効率的な推論を実現する新たなアプローチを提供します。
Pastaayは、1つのGoバイナリで8つのプロトコル(HTTP、gRPC、MySQL、PostgreSQL、Redis、Kafka、MongoDB、RabbitMQ)に対応したカオスエンジニアリングツールです。障害注入やレイテンシ追加などの実験を簡単に実行でき、システムの resiliency(回復力)をテストできます。
Goの標準ライブラリであるnet/http/httptraceパッケージを使うと、HTTPリクエストの各フェーズ(DNS解決、TCP接続、TLSハンドシェイク、リクエスト送信、レスポンス受信など)を詳細にトレースできる。この記事では、httptrace.ClientTraceを使って各イベントにフックを仕掛け、パフォーマンスボトルネックの特定やデバッグに役立つ実践的なテクニックを紹介している。
KefkaはGoネイティブのシェルサンドボックスで、coreutilsやWebAssembly経由のPythonなどを備えています。これを実現するために行われた狂気の取り組みについて学びましょう。
Online Go Server(OGS)は、ブラウザ上で囲碁をプレイできる無料のプラットフォームです。リアルタイム対局や通信対局に対応し、AI分析機能や段級位認定システムも備えています。初心者から上級者まで幅広いユーザーが利用する、世界最大級のオンライン囲碁サーバーの一つです。
Gochanは、Goでよく使われるチャネルアーキテクチャ(oneshot、spsc、spmc、mpsc、mpmc、broadcast、watch)を共通ライブラリとして抽出したものです。Rustのチャネルに影響を受けており、車輪の再発明を防ぎ再利用性を高めることを目的としています。
Go言語におけるエラー処理は単なる技術的な問題ではなく、コードの「物語」として捉えるべきだと論じる。エラーには文脈(ストーリー)が必要であり、単にエラーをラップするだけでなく、何が起こったのか、なぜ失敗したのかを明確に伝えることで、デバッグや保守が容易になる。多くの開発チームはこの「筋書き」を軽視し、意味のないエラー処理に終始していると指摘する。
This project implements a minimal GPT (Generative Pre-trained Transformer) model in Go, designed for educational clarity rather than performance. It is trained on the complete works of Jules Verne, providing a practical, hands-on example of transformer architecture, tokenization, and text generation in Go.
Go言語にジェネリックメソッド(型パラメータを持つメソッド)のサポートを追加する提案。現在のGoはジェネリック関数や型はサポートしているが、特定のレシーバ型にのみ適用されるジェネリックメソッドは許可されておらず、その制限を解除するための議論が行われている。
Posthornは、セルフホスト型アプリとトランザクションメールプロバイダーをつなぐ軽量なメールゲートウェイです。1つのDockerコンテナ(またはGoバイナリ)で動作し、Postmark、Resend、Mailgun、Amazon SES、またはSMTPリレーに対応。さらに、静的サイトのフォーム送信を安全に処理するためのhoneypotフィールド、オリジンチェック、IPレート制限などのセキュリティ機能も備えています。
Hush は、Go 言語で開発されたセルフホスト可能なオープンソースの Discord 代替です。OpenMLS によるエンドツーエンド暗号化をサポートし、ユーザーが自分のサーバー上で安全なチャット基盤を構築できるようにします。プライバシーを重視しつつ、既存の Discord に似たユーザー体験を提供することを目指しています。
The Little Go Bookは、Go言語の基礎を無料で学べる入門書です。変数や制御構文から、ポインタ、構造体、インターフェース、並行処理(ゴルーチンとチャネル)までを、簡潔な説明とコード例でカバーしています。初心者にも経験者にも役立つ、コンパクトながら実践的な内容が特徴です。
Go言語で実装された最小限のrsyncクローンについて解説。メモリ安全性を重視し、C言語ベースのオリジナルrsyncに存在する既知の脆弱性を回避している。本記事では設計上の選択と安全性のトレードオフを詳述する。
RiscrithmはGo言語で実装されたRISC-Vアセンブラ兼最適化ツールです。直感的な操作性を備え、RISC-Vアセンブリコードの組み立てと最適化を効率的に行うことができます。
2012年、Rob Pike氏がGo言語の設計哲学を解説。シンプルさと少ない機能が、スケーラビリティ・メンテナンス性・開発効率において指数関数的なメリットをもたらすと主張。複雑さを排除した設計こそが長期的な生産性向上の鍵である。本稿はGo言語の思想を理解する上で重要な古典的エッセイ。
著者がGo言語で実装した最小限のrsyncクライアントについて解説。メモリ安全性を重視し、C言語ベースの従来のrsyncが抱えるメモリ関連の脆弱性を回避できることを示す。独自実装によって、安全で移植性の高いファイル同期ツールを提供する試みを紹介している。
WhatsKeptは、iOSバックアップからWhatsAppのチャット履歴を抽出し、検索可能かつAIエージェントから照会できるようにするツールです。単一のGoバイナリで動作し、プライバシーを重視したローカル処理を実現します。
Goのメモリセーフな機能を活用し、最小限の設計でrsyncの脆弱性を回避する方法について解説。従来のrsyncが抱えるメモリ安全性の問題を、Go言語の型安全性とガベージコレクションによって根本的に解決し、シンプルながら堅牢なファイル同期ツールを実現している。
Mvmは、Go言語向けに設計された高速な仮想マシンプロジェクトです。効率的な実行と軽量な設計を特徴とし、Goのエコシステム内でパフォーマンスが求められる処理を高速化することを目的としています。
GoからRustへの移行ガイド。所有権、借用チェッカー、エラーハンドリング、並行処理モデルの違いなど、両言語の主要な概念の違いを解説しながら、段階的に移行するための実践的なアドバイスを提供します。
2025年1月にrsyncで発見された6件のセキュリティ脆弱性(任意コード実行やファイル漏洩を含む)を受け、Goで実装されたミニマルなrsyncであるgokrazy/rsyncがこれらの脆弱性の影響をどう受けているか、またメモリ安全な言語Goがどのように脆弱性クラス全体を排除できるのかを詳細に分析。本稿では2025年1月と2026年5月の全12件の脆弱性をカバーし、Goランタイムのバウンドチェックが実際にヒープバッファオーバーフローを防ぐことを実証。さらに、OpenBSDのopenrsync(C言語で記述)との比較や、Linuxで利用可能な多層防御機構についても論じている。
著者がGoで実装した最小限のrsyncクローンについて解説。メモリ安全性を重視し、C言語ベースのオリジナルrsyncに存在するバッファオーバーフローなどの脆弱性を回避できる点を強調している。
Go公式パッケージドキュメントサイト「Pkg.go.dev」が公式APIを公開。これにより、パッケージのメタデータやドキュメント情報をプログラムから取得できるようになり、ツールやワークフローへの統合が容易になった。
mvm is a fast virtual machine designed specifically for Go, aiming to provide efficient execution and performance optimization for Go programs.
Go公式パッケージドキュメントサイト「Pkg.go.dev」の新しいJSON APIが公開されました。このAPIを使うと、パッケージのドキュメント、ライセンス情報、バージョン履歴などをプログラムから取得できます。開発者はWebスクレイピングに頼らず、安定したインターフェースでGoエコシステムの情報にアクセス可能になります。
GobanFTPは、囲碁の対局をFTPサーバーのディレクトリリストとして表現するユニークなツールです。碁盤の各交点をファイルやフォルダに見立て、石の配置をFTPのファイル構造で表示。標準のFTPクライアントを使って碁を打つことができる、遊び心あふれるプロジェクトです。
Pkg.go.dev が新たに公開した公式APIについての紹介。このAPIを利用することで、Goパッケージのドキュメントやメタデータをプログラムから取得できるようになり、開発ツールやCIパイプラインとの統合が容易になる。また、従来のスクレイピングに依存する方法から脱却し、安定したアクセス手段を提供する。
Go Deep into Code(コードディープ)は、ソースコードの深い理解を可能にする新しいツールです。開発者はコードベースを視覚的に探索し、依存関係や構造を直感的に分析できます。このツールは複雑なプロジェクトの把握を容易にし、効率的なコードレビューやデバッグを支援します。