emahiro/b.log

Drastically Repeat Yourself !!!!

2021-01-01から1年間の記事一覧

2021 年の振り返り

Overview やったこと 入籍した 脱東京した MVP 獲った 英語に触れる習慣がついた 家電買い換えた 読書継続した 体重が増えた やらなかったこと 新しい技術要素に触れる スポーツ観戦 2022 どうする? Overview 2021 年を振り返ります。 今年は仕事もプライベ…

2021 年買ったもの

Overview ガジェット iPad mini 6 Anker PowerConf C300 BenQ ScreenBar Halo cores コレス コーングラインダー 平台車(キャスター付き) AfterShokz Aeropex ロジクール MX Master 3 WF-1000XM4 AirPods 3 RICOH GR III CalDigit TS3 Plus GROVEMADE Wood Ap…

今年の MVP を獲った話

Overview 前書き 何をやってきたのか 個人的な振り返り 余談: 憧れを実現するにはベースが大事 最後に Overview 技術的な話ではないですが、現職での1つの節目として2021年の年間 MVP を獲ることができたのでそのことについて少し書こうかなと思って筆を取り…

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 を…