emahiro/b.log

Drastically Repeat Yourself !!!!

Go で BigQuery を叩くときは公式の Nullable 型を利用する

Overview Go で BigQuery (以下 BQ) のクライアントの実装して返されたクエリの結果を Entity に Unmarshal する方法について調べたのでその備忘録です。 pkg.go.dev Note 結論から言ってしまうと自前でゴリゴリ型指定して Unmarshal するよりも BQ の packa…

Go に Contribute する

go

Overview 準備 CLA の同意とアカウント作成 レビューツールを入れる 早速コミットしてみる まとめ 余談 VSCode で Go の最新版を開発する (Go1.18 の場合) VSCode のセットアップ方法 Overview これは 2021年Goアドベントカレンダー 7日目の記事です。 つい…

入籍しました

全然技術ネタじゃないけどご報告です。 12/4 に入籍しました。 いわゆる Pairs 婚ってやつです。 まさか自分の人生変えてもらうなんて夢にも思ってなかったので、Pairs は本当にすごいサービスだなと今更ながら実感しました。 そして実は2ヶ月前くらいから脱…

TypeScript で集合関係にある型の値の再代入をする

Overview 以下のような集合関係にある2つの型の間で値の再代入をしたいケースでハマってしまい、同僚のフロントエンドエンジニアに手伝ってもらって一定の方針で解決したのでその備忘録です。 type ObjA = { a: number; b: string; } type ObjB = { a: numbe…

メソッドを持つ参照型をフィールドに持つ Struct の初期化後のアクセスについて

go

Overview Sample まとめ Overview メソッドを持つ参照型をフィールドを持つカスタム struct を初期化したときの参照型が持つ(見かけ上ネストしてる)メソッドにアクセスした時の振る舞いがたまたま職場の雑談で上がり、挙動について調べてみたのその備忘録…

Docker Compose v2 以降環境変数にインラインコマンドが使えないっぽい

Overview タイトルの通りです。 direnv などを使ってディレクトリごとに環境変数を差し変えることはよくある local の環境構築の手法だと思います。 そして、その環境変数に対してインラインコメントで環境変数を動的に差し替えたいケースなどもよくあると思…

Serverless Framework でモノレポっぽい構成にする

Overview 考えたきっかけ モノレポ構成で考える ハマったところ デプロイ周り デプロイコマンドを実行する位置からの相対 path を指定する まとめ Overview Deprecated Deprecation code: NESTED_CUSTOM_CONFIGURATION_PATH Note: Applies only to eventual …

go-cmp の cmp.Option と可変長引数 `...` について少し調べた話

Overview go-cmp の cmp.Option How to use cmp.Option cmp.Options の中に option で指定したい設定を入れる cmp.Option 単体を指定する slice にして指定する Go の可変長引数の指定方法について cmp.Options をそのまま Diff に指定できるわけ まとめ Ove…

TRPL の数当てゲームをやってみる

Overview Memo クレートについて Result 型を返り値に持つメソッドとパターンマッチについて 新しい型での覆い隠し(Shadow) Overview The Rust Programing Language のチュートリアルにある「数当てゲーム」* をやってみました。 doc.rust-jp.rs やった内容…

読書 Note -『Righting Software』- 第一部 -「構造」と「組み立て」

Overview 読書 Note ユースケースと要件 必要な振る舞い 表現方法 ユースケース図とアクティビティ図 ユースケース図 アクティビティ図 階層化されたアプローチ サービスの活用 階層の種類 その他 階層についての個人としての解釈・考察 各階層について ユー…

Rust で grep コマンドを実装する

Overview 以下のハンズオンの内容にある Rust で grep コマンドを再実装する部分を再度自分でやってみました。 speakerdeck.com やった内容は以下にまとめてあります。 github.com Memo いくつか工夫したりメモしたりしたポイントがあるのでまとめます。 検…

Cookie に格納された情報を使っている Handler のテストを実装する

go

Overview 前提: そもそも Go で Cookie を操作するには? Cookie を使った認証機構がある Handler のテスト サンプル SecureCookie を使って Cookie で Session を扱う ちょっとだけリファクタリングする まとめ Memo http: Request.RequestURI can't be set…

Go で作る自作 Linter 開発入門

go

Overview 準備 自作 Linter を作る手順 GoAst Viewer で Ast の構造を視覚的に確認する 追記 x/tools/cmd/gotype singlechecker を使って検出する nodeFilter で階層を指定する Tips SuggestedFixes がめちゃくちゃ便利なので絶対に使う 使い方 ハマったとこ…

Go の string についてなんとなく調べた

go

Overview ちょっと興味があって Go の string の実装周りについてふらっと調べたので備忘録。 そのほかにも何かわかれば追記するかも。 Memo string 本体について string is the set of all strings of 8-bit bytes, conventionally but not necessarily rep…

fmt.Fprintf で ``(バッククオート)で囲った文字列をformatしたときにハマった話

go

Overview タイトルの通りです。 Go で文字列の中に改行コードが含まれていた場合 "" なら \\n のようにバックスラッシュを使ってエスケープしますが、そもそもの改行コードを含む文字列をバッククオートで出力した場合、自動で改行コードがエスケープされる…

Rust のパターン記法 ( Pattern matching )

Overview Rust の Pattern matching がとても便利だなと思ったので備忘録です。 TRPL には以下のように記載されています。 doc.rust-jp.rs これを読めばパターン記法に関して必要なことは大体網羅されてるので本当にドキュメントが充実してるいい環境だなと…

Rust で制御構文を書く

Overview 4連休なので Rust のお勉強をしてる記録です。いつまで続くかはわかりません。 ema-hiro.hatenablog.com Rust のハンズオンを開催してもらって以降、開発できる環境を整備したりしてましたので今回は改めて制御構文について単純な Fizzbuzz を実装…

byte 文字列を Int に変換する

go

Overview ちょっと凝ったユースケースですが、byte 文字列を Int に変換したいユースケースがあったときに使えるテクニックについてまとめます。 以下のようなユースケースを考えます。 func main() { b := []byte("123456") for idx := range b { fmt.Print…

Go でテキストを1行ずつ読み込む

go

Overview Go でテキストファイルを1行ずつ読み込んでいく方法を忘れてたので思い出しついでに備忘録です。 bufio を使う bufio を忘れてました。 こんな感じで処理できます。 package main import ( "bufio" "bytes" "fmt" ) // text ファイルに書かれてる内…

VSCode で Rust の開発環境を整備する

Overview VSCode での Rust の開発環境を整備する手順にまとめます。PR としては以下にまとめました。 github.com Install Rust 以下に書いてある手順そのままです。 doc.rust-jp.rs Rust ではこの rustup というツールという公式のツールをつかって色々とイ…

Rust ハンズオンを開催したブログを書きました

会社のブログで金曜日に開催した Rust のハンズオンに関するエントリを書きました。 link.medium.com 登壇者からずっと Rust やらないんすか?とプレッシャーをかけられていて、本まで貰っていたのですが、ようやく踏ん切りついてはじめました。 ハンズオン…

Kalidoface3D × OBS を使って Mac でアバター配信に入門する

Overview 必要機材 手順 Kalidoface 3D にいってお好きなアバターを選ぶ OBS をDL して入力ソースの設定を行う OBS の DL & Install 入力ソースの設定 Zoom で OBS の仮想カメラをカメラのソースに指定する 配信時の Tips クロマキー設定して OBS の背景を透…

2021年上半期をふりかえる

Overview Good 仕事忙しい 家電の入れ替え 積読消化 More 生活リズムの崩壊 有給残り少ない 英語学習たりない Try 生活リズム直す 英会話やる その他 上半期買ったものリスト 洗剤自動投入付きドラム式選択乾燥機 冷蔵庫 cores コーングラインダー RICHO GRⅢ…

DynamoDB のリクエストで Context Canceled をハンドリングする

aws

Overview タイトルの通りです。 DynamoDB へのリクエストにおいて Context Cancel エラーになった場合にその Context Cancel をハンドリングします。 DynamoDB 側でのエラーハンドリング DynamoDB へのリクエストにおいて Context Cancel の実装は https://p…

dynamodbattribute には omitempty が使える

ただの備忘録です。 dynamodbattribute には omitemtpty タグが使えてStruct の中でゼロ値になってしまうところを無視したい(Item の attribute として登録したくない)ケースにおいては使えるなと思いました。 https://docs.aws.amazon.com/sdk-for-go/api…

Loop 内の値渡しと参照渡しで久しぶりにハマった話

go

Overview 何が起きたか? 原因: 実態のコピーを上書きしていたので大元の slice の struct の値が書き変わらなかった まとめ 追記 20210531 Overview Go の loop 処理の中で Slice の中の全値を書き換えたいと言う処理、において参照渡しと値渡しを取り違え…

DynamoDB の Query with FilterExpression の挙動を調べた話

Overview どういう挙動だったか Conclusion DynamoDB のクセ的なもの DynamoDB について学んだこと Overview DynamoDB の Scan の挙動について以下のエントリで調べましたが、FilterExpression を指定した場合の Query の挙動について実際に API で Query を…

DynamoDB の Scan の挙動がわからなかったので調べた話

Overview DynamoDB の Scan 操作について AWS のマネジメントコンソールと API 直叩きで返ってくる List が違う、ということがあったので調べてみました。 どう違ったのか? 以下のような事象が起きてました。 AWS マネジメントコンソール上からあるテーブル…

DynamoDB で Update GSI しようとしてやらかした話

Overview 何をしたのか? 何が起きたか どうして起きたか? 今後どうすればいいか まとめ Overview タイトルの通りなのですが、DynamoDB の Global Secondary Index(以下 GSI) を更新するにあたり、更新方法でミスったのでことの顛末を備忘録として記載しま…

Lambda の同時実行数を制限する

aws

Overview タイトルの通りです。 久しぶりに Lambda on Serverless Framework を触っていて忘れていたので備忘録です。 Conclusion Lambda の同時実行数を制限するには Reseved Concurrency の設定を 1 にします。 Serverless Framework は function の reser…