Go
blog.arthur1.dev 以前公開したGoのバージョン指定・更新に関するブログで、GitHub Actionsのsetup-goについてこんなことを書きました。 stableを指定しておけば、大体の場合(最新に保った)toolchainディレクティブ以上のバイナリを最初から用意してくれる…
2024-09-01 v0.2.0で破壊的な変更をリリースしたので本エントリのコードも合わせて修正しました OpenFeatureとは OpenFeatureをご存知ですか?OpenFeatureは特定のベンダーに依存しないフィーチャーフラグの標準APIを定めるプロジェクトです。CNCF仲間のOpen…
2024-08-28 GOTOOLCHAIN=auto時にはtoolchainディレクティブに指定したものより新しいGoがインストールされていても戻るわけではないという話を追記しました。 Go言語では半年に1回メジャーリリース(マイナーバージョンの更新)がやってきます。ちょうどこ…
様々な言語で提供されているAzure SDKのコアモジュールにはHTTP Pipeline Policyという仕組みが実装されています。 Java版のドキュメントが一番わかりやすかったので、こちらに掲載されている画像を引用して、HTTP Pipeline Policyが何たるかを説明します。 …
Webアプリケーションの裏側にさらにHTTPサーバが立っていて、レスポンスを返すために裏側のサーバにリクエストを送ってその結果を必要とするような構成があります。裏側のサーバに設定さえたAPIレートリミットへの対応やサーバへの過負荷を避けるため、キャ…
OpenTelemetryを使い始めるにあたって、既存の監視ツールからいきなり切り替えることは難しく、基本的には一時的に並行稼働させて様子を見ることになると思います。 これまでmackerel-agentをインストールし、Mackerelにホストとして登録してシステムメトリ…
blog.arthur1.dev でご紹介した、OpenTelemetry Metricsを手軽に投稿できるCLIツール「otlc」のv0.2.0をリリースしたので再度ご紹介します。 github.com 使い方 インストール (macOS, Linux)×(x86_64, arm64)向けのバイナリをGitHubのReleaseで配布していま…
先日、kamakura.go #6にて、「slog登場に伴うloggerの取り回し手法の見直し」という題で登壇しました。Go Conference 2024にこの内容でproposalを出していて落選してしまったのですが、kamakura.go #6のテーマ「昔のGo、今のGo」とピッタリだったので応募し…
arm64では/proc/cpuinfoからCPUのモデル名を取得できない Linuxにはシステムの様子を知ることができる仮想ファイルがいくつかあります。そのうちの一つが/proc/cpuinfoで、その名の通りCPUの情報が以下のように閲覧できます。 $ cat /proc/cpuinfo processor…
Goのloggerを引き回す際に皆さんはどのような手法を取っていますか? グローバル変数にloggerのインスタンスを入れておく contextにloggerのインスタンスを入れておく トレースIDなどを入れたloggerを適宜作ってcontextに格納する 構造体のフィールドにlogge…
家でいくつかRaspberry Piを飼っておりそれぞれにUbuntuをインストールしているのですが、ログインした際に以下のように「System restart required」と言われることがあります。 Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1044-raspi aarch64) (中略…
Go言語で作ったアプリケーションをコンテナイメージにするとき、以下のようにマルチステージビルドを利用したDockerfileを書くことが多いでしょう。 FROM golang:1.21-bookworm as builder WORKDIR /opt/app COPY go.mod go.sum ./ RUN go mod download COPY…
私は個人開発で、読み込みのみが求められる(ユーザーの行動起因でのデータ更新が起こらない) GraphQL API を作っています。情報サイトや個人ブログのバックエンドとしての利用が挙げられます。 今回は趣味の個人開発向けにインフラ費用を抑え、そして手間…
OpenTelemetry Protocol (OTLP) を受ける endpoint を開発する際、デバッグのために簡単にテレメトリデータを送りたいという需要があります。OpenTelemetry Collector をいちいち立てたり、何らかのアプリケーションを作ってそれを計装したりするのは、デバ…
3行 GoReleaser を使うと、作ったツールを Homebrew でインストールするための formula を書き出してくれて便利 GitHub Actions でこれを行う際、GitHub の PAT が必要とされているが、代わりに GitHub Apps トークンも使える PAT を利用する方法と比較して…
Go 言語のプログラムのテストでは、テーブル駆動テストと呼ばれる書き方をすることが多いです。シンプルに例を挙げると以下のような形。 func TestAdd(t *testing.T) { cases := []struct{ title string inLhs int64 inRhs int64 want int64 }{ { name: "1 +…
要件 Go 言語で作られた、GitHub の private repository の go module に依存しているアプリケーションについて考えましょう。例えばオープンソースではない社内ライブラリに依存している、という状態です。 手元の開発マシン上では GOPRIVATE 環境変数を利…
OS 名は WMI から取得したほうが良いが…… 前にこんなエントリを書いた。 blog.arthur1.dev このエントリを要約すると、「Windows の OS 名を取得するとき、レジストリにアクセスするのではなく WMI を使って取得しよう。なぜなら、Win 11 が Win 10 として認…
3行 Windows の OS 名をレジストリから取得すると、Win 11 が Win 10 として表示されてしまう 例えば、WMI を使って取得する方法が正攻法っぽい Go から WMI を触るサンプルコードもあるよ Win 10 が Win 11 として Mackerel に登録されている 自分は OSS の…
この記事ははてなエンジニア Advent Calendar 2022 の 2023年1月4日の記事です。 Go 言語の ORM である ent をご存知でしょうか? ent はコード生成を用いて型安全に RDB のクエリを記述できる ORM です。エンティティ間の関係を Edge として定義するのが特…
この記事は Mackerel Advent Calendar 2022 16日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当してお…
この記事は Mackerel Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当してお…
この記事ははてなエンジニア Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年に新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。 arthur-1 という id に掛けて、トップバッターをいただきまし…
ISUCON 12 予選にチーム「横浜の缶詰」*1として参戦し、最終スコア 9368 点を残して敗退しました。参考値ではありますが 104 位(661 チーム中?)ですね。 isucon.net 結果としては残念な感じですが、初めての ISUCON で今後の成長に繋がるやり方を貫き通せ…