emahiro/b.log

Drastically Repeat Yourself !!!!

actions/setup-go で Go のバージョンを指定する

actions/setup-go は Go のバージョンを指定しないとデフォルトで Go1.20 が使われているっぽい挙動に出くわしたので Go のバージョンを指定する方法のメモ。 github.com 気づいたきっかけは local で使用してる Go のバージョンと CI (GitHub Actions 上)…

BigQuery のクライアントを Go で実装する

Overview Go で BigQuery のクライアントを実装する BigQuery のライブラリは 2種類ある BigQuery の型はそれぞれ Go で対応する形が決まっている カラム名とフィールド名は一致させる必要がある 余談: ValueLoader を実装すると独自型を BigQuery の型を pa…

git コマンドが重たくなったら git gc コマンドを使ってみる

git

Overview git gc が便利という話です。 git push が重たい ここ1年くらい git コマンドがものすごく重たい事象に直面しており、特に git push したときに 10秒くらい待たないと push が完了しないという事象が発生してました。 github も頻繁にアプデ繰り返…

子供と過ごす初めての冬休み

まえがき 子供過ごす初めての年末年始だった その他 年末年始のテレビ番組は結構面白い 年末年始は断捨離が捗る 年賀状を書く まえがき 人生で初めて子供と年末年始を共に過ごしたので思ったことを備忘録として書いておく。 子供過ごす初めての年末年始だっ…

2023 年の振り返り

まえがき 子供が生まれた & 育休を取った 筋トレの頻度が増えた 自分の作ったプロダクトが TVCM で放映された 数年ぶりに個人開発した ブログ継続した 来年の話 2023年の買って良かったもの HHKB Studio 大きな本棚 オーブンレンジ SIXPAD パワーガン iPhone…

go-cmp/cmpopts を使って map の特定の key のみをフィルタする

go

Overview cmpopts.IgnoreMapEntries を利用する Ref Overview go-cmp を使って実際取得した値と期待値を比較するときに go-cmp/cmpopts を使って、二値の比較のオプションを設定することが出来ますが、この二値が map のときに map の中の特定の key に紐づ…

育休から復帰してみて変わったこと

はじめに About Me 週末の過ごし方が変わった 出かける先が変わった 通勤が嫌いじゃなくなる スキルアップのスタンスが変わる 一日のやることを極限まで絞る その他 政治に興味を持つようになった 良い父親像みたいな理想を捨てる おわりに はじめに これは…

AWS Go SDK でのエラーハンドリングについて

AWS の Go SDK はその本体のコードを読もうとすると実装がものすごく抽象化されていて、慣れていないと実際のコードを追いかけることも結構難しい。 Go の実装でエラーの中身(型)を見て処理を変えたいケースやそもそもどういうエラーを返すのかを知りたい…

配列形式のクエリパラメータを受け取る実装について考えてみる

go

Overview Motivation 実装パターンについて GET /user?id=1,2,3 のパターン GET /user?id=1&id=2&id=3&id=... のパターン GET /user?id[]=1&id[]=2&id[]=3&... のパターン RFC 3986 を見る まとめ Overview ID=1, ID=2,... のようにクエリパラメータで指定し…

VSCode で CUE を書く

Overview VSCode で CUE を書くときの設定です。 手順 CUE の Install cuelang.org 上記の公式ドキュメントに書かれてる通りに進めればよいです。 僕個人は go コマンドでインストールするのが好みです。 CUE を入れたら cueimports を使うために PATH を通…

『STAFF ENGINEER』を読んで自分のこれからについて少し考えた

Overview 読書メモ キャリアの方向性について スナッキングを避けること インパクトのある仕事をすること 肩書の重要性 結局のところ Overview 『スタッフエンジニア マネジメントを超えるリーダーシップ』を読んで、この本に書かれていた内容が自分自身の「…

OpenAPI3 で外部ファイルの定義を参照する

Overview 業務で利用してる OpenAPI3 に置いて、Endpoint の定義間(api と admin みたいな)で共有したいコンポーネントがあり、それを外部ファイルに定義したときに、各定義で参照する方法を調べたので備忘録として記載します。 やり方 $ref にファイルパ…

gonew コマンドを試してみた

go

Overview gonew とは? gonew を使う まとめ See Also Overview gonew コマンドを触ってみたので備忘録です。 go.dev gonew とは? 既存の Go のプロジェクトからコピペで作らずに、そのプロジェクトをテンプレートとして新規の Go プロジェクトを始める事が…

cockroachdb/errors でスタックトレースを取得するのが良さそうだった

go

Overview Go でエラーハンドリングするときにどこでエラーが発生したのかわかるように StackTrace を取得して、エラーメッセージと一緒に出力したいケースがあると思いますが、Go でStackTrace を取得するのはひと手間かかります。 「Go スタックトレース」…

遠出の練習をしてきた

Overview 週末にジャスコに行くお父さんムーブの実績をとりあえず今日解除した(ただ疲れた)— Ema (@ema_hiro) 2023年8月13日 娘の月齢がもうすぐ3ヶ月を超えるので、遠出の練習に越ヶ谷レイクタウンまで行ってきました。 首もだいぶ安定して体もがっしりし…

育休から復帰しました

Overview 育休について 育児について 買って良かったもの ~育児編~ Amazon Echo 調乳ポッド バウンサー ベビーモニター リンサークリーナー 番外編1 - あって良かったもの 車 ドラム式洗濯乾燥機 家 番外編2 - 使ってるアプリ・サービスなど ぴよログ みてね…

Cloud Functions で ImageMagick 使って OGP 画像を生成・表示する

Overview 自前で OGP を生成する 何を使って画像を生成するか Next.js で用意されてる OGP 向けの機能を利用する Puppeteer を利用してキャプチャする ImageMagick を利用する 準備 ImageMagick での実装 補足 生成した画像の保存先 ビルド時に CloudFunctio…

GitHub Actions で CloudRun にデプロイする

Overview 準備 Cloud Run のデプロイ方法 環境変数を追加する 権限について 権限付与手順 サービスアカウントの作成と借用権限の設定 権限の追加 GitHub Actions の設定ファイル source からデプロイする場合 Docker Image からデプロイする場合 See Also Ov…

http.Request をコピーする

go

Overview どういうケースか? 結論: Clone してから Body に詰め直す まとめ Overview Go の http.Request を二度読み込みしたいケースでハマったのでその備忘録です。 どういうケースか? API を書いていると認証・認可等のAPI全体に関わる共通の前処理を m…

ポートフォリオサイトを Nuxt3 から Next に乗り換えた

Overview なぜ変えようと思ったか 移行手順 Memo Font を変更する スタイルをあてる Static page を生成する。 Static export を設定してる状態では Image をそのまま使うには最適化モードを false にする。 favicon を設定する 雑感 Overview 自分のポート…

Nuxt3 での static page の生成には nuxi generate を使う

Overview Firebase とのかみ合わせの問題 とはいえ Overview タイトルの通りですが、Nuxt3 で静的ページの機能しか使っていないケースにおいては nuxi build じゃなくて nuxi generate を使おうね、という話です。 Firebase とのかみ合わせの問題 Firebase H…

Firebase Deploy で Failed to get details for project というエラーが出たのでその調査

Overview 対応 See Also Overview 自分のポートフォリオサイトをメンテナンスしたときに Firebase 周りの設定も最新の状況に合わせて色々更新したところ、Deploy 時にエラーが発生するようになっていたので、その調査と修正の備忘録です。 主に必要だった内…

父になった

サマリ 家族が増えました。 また1つ Pairs に人生を変えてもらいました。 育休取ります。 育児は大変。本当に大変。 家族が増えました 4/23 日に娘が生まれて、人生で初めて「父親」になりました。 自分たちは Pairs で出会って結婚した夫婦であるので、Pair…

Go で重複を削除する処理のパフォーマンスについて

Overview 具体的な実装方法 パフォーマンスについて Overview ※ 過去何度か上げた内容のエントリの更新版です。 Go で Slice から重複してる要素を排除する unique の処理について実装方法でパフォーマンスが異なるのでこのエントリを書いています。 最近暇…

time.Now() を使ってテスト結果の比較をするときにCreatedAt に幅を持たせる

go

知らなかったので備忘録です。 Overview go-cmp を使用して DB の Insert のテストを記述するとき time.Now() を使ってしまうと生成したデータと比較対象のデータでレコードの作成時刻( created_at )で誤差レベルの Diff が生じてしまいます。 ※ 生成時刻…

次世代ターミナル「Warp」を試したらとても便利だった

Overview Warp とは 便利だったポイント そもそも Warp を使い始めた理由 まとめ Overview 最近 Warp というターミナルエミュレーターを使い始めてみて、これがとても便利だったのでその紹介エントリです。 ちなみにこのターミナルエミュレーターを知ったの…

Go で Response Header を差し込む

go

Overview 大した話じゃないですが久しぶりに http を色々ゴニョゴニョするコードを書いていたら忘れていたので備忘録 Response Header を差し込む ※ サンプルは httptest の Server を立ち上げています。 // application/json を Response Header の Content…

GitHub Actions 上で Multi Platform 対応した Image を作る

Overview GitHub 上で Multi Platform 対応のビルドをする Docker build に渡す引数 Docker Hub 側の設定 実際の設定ファイル See Also Overview GitHub Actions 上で Multi Platform に対応した Docker Image を作成して Docker Hub に push するまでの備忘…

gokzen/redis-cluster を使って protected mode "no" で Redis Cluster を起動するまで

※ このエントリはある特定の Docker Iamge を利用して Github Actions で Redis Cluster を起動してアクセスできるようにするものです。他の Image を使っていたりする場合には特に有益な情報はありません。 Overview 背景・前提 はまったところ Redis Clust…

Mac ✕ OBS でゲーム配信をする

Overview 用意したもの 配線図 OBS の設定周り ソースにキャプチャを加える。 まとめ その他 ハマったところ 「映像キャプチャデバイス」のバッファリングを ON にすると音ズレが起きる Mac は音声入力がしづらい。 Overview キャプチャボードを手に入れたの…