技術
やってみた記事ってやつです。 AWS Step Functionsから任意のHTTP APIを叩けるようになった*1ので、これを使ってMackerelに投稿してみましょう。 投稿するメトリックを用意する サービスメトリックを投稿するときのリクエストボディの形式に沿ったJSONを組み…
この記事のタイトルにあることの理由は MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.1.9.2 ALTER TABLE および生成されるカラム を読んだら分かります。 生成カラムの式を変えてsqldefでマイグレーションを反映したら、DROP COLUMNしてADD COLUMNするD…
はじめに 2024/10/18*1にgomock (mockgen) v0.5.0がリリースされました。 github.com リリースノートを見ていこうと思うのですが、その前にpackage modeという新しいコード生成のモードについて触れましょう。 はじめに reflect modeの限界とpackage modeに…
連休中に、golangci-lintに組み込まれているlinterを全部見た。Linters | golangci-lint から見れるので、みなさまも見てください。 世間でも全部見ている事例はありそう。こちらもあわせてどうぞ。 zenn.dev これで記事を終わってもいいけど、もうちょっと…
大吉祥寺.pmに参加しました。この記事の公開をもって吉祥寺からの帰還といたします。 登壇した speakerdeck.com タイトルは「君たちはどう生きるか」をモジりました。 コードレビューの目的は「コードの品質を保つこと」「知見を共有すること」である、とい…
Go Conference 2024に参加し、登壇してきました。 登壇しました Dive into gomockというタイトルで発表しました。2トラックのどちらかで40分トークかな? と思っていたら2部屋ぶち抜きでトークだったのでビビっていました。 発表資料はこちらです。 speakerde…
参加しました。サイボウズさんの大阪オフィスには初めて行きました。 umedago.connpass.com LTのスライドはこちらです。リフレクションしたくなっても早まるな!! という話です。 speakerdeck.com 個人的にはリーンコーヒーがおもしろかったです。Goにまつわ…
kyotogo.connpass.com 参加して、LTしました。 speakerdeck.com Webアプリケーションを運用する立場からは、多少パフォーマンスが犠牲になるよりもエラーの発生元を容易に特定できるほうがよいに決まっているだろう、となるとやっぱりスタックトレースが欲し…
生きてるといろいろなことがあり、リフレクションでstructのunexportedなフィールドに値を書き込みたくて調べていたら、以下のStackoverflowの回答が見つかった。 stackoverflow.com 以下のようなイディオムでstructのunexportedなフィールドにアクセスでき…
Well done! Your session Dive into gomock has been accepted for Go Conference 2024! ということなので、よろしくお願いします。「Dive into gomock」というタイトルで、gomockの内部実装に深入りする話をします。 gocon.jp 6/8に渋谷で会いましょう。今…
技術選択の場面において、ある技術を選ぶということは選ばれなかった技術があるということである。なぜその選択にしたのか、に目が向きがちだけど、選ばなかった技術についても述べるべきだろう。 今回の企画・要件に対して、この技術はこういう制約が見合わ…
ログ*1、油断すると絶妙に情報量が足りなかったり、欲しいものがdebugレベルでしか出ていなくて本番環境で見れなかったりしがち。ここでこういうログが欲しくなるだろう、という感覚を鍛えるには、実際にログが足りなくて困る経験をするしかないのか、もうち…
タイトルが全てです。 GraphQL Cursor Connectionの仕様の3.1.1節には以下のような注意書きがあります。 The naming echoes that of the “Node” interface and “node” root field as described in a later section of this spec. Spec-compliant clients can…
以下のツイートが全てです。 ラクスル シール・ステッカー・ラベル / バラ四角カット / 40x40mm / 光沢紙(アート) / 光沢ラミネート(PP) / 普通のり / カットパス作成: 四角形 50部 受付から7営業日後出荷 2,805円— うたがわきき (@utgwkk) 2024年2月27日 こ…
生きてると、テストがどんどん遅くなりがちです。実際にDBに接続するタイプのテストとか……。そしてそういう種類のテストに限って並列化しやすいように実装されていないこともありがちですよね。 GitHub Actionsを使っている場合*1、そのようなテストが複数フ…
tl;dr PutObject のオプションの Bucket フィールドに空文字列を渡していませんか? 環境変数経由で設定する値がうまく渡っていない、などありませんか? もう一度点検してみましょう。 この記事はこれでおしまいです。検索しても全く情報が出てこなくてしばら…
参加しました。前日祭や懇親会・アフターイベント・YAYAPCも含めて全て出席していました。 yapcjapan.org どの発表もおもしろく、全てについて詳細に取り上げるには紙面 (紙じゃなくない??) が足りないので、ピックアップ形式にさせていただきます。 とほほ…
kyotojs.connpass.com 登壇もしました。発表資料は以下です。「発表枠(Kyoto)」という枠がなかなか埋まっていなかったので、自分に話せることがないか、を2日前の夜に絞り出しました。 speakerdeck.com create-react-appの現状と自分との関わりについて話し…
参加しました。本当はプロポーザルを提出しようかと思っていたのですが、忙殺されていたら〆切を過ぎていました。そして参加記を書くのも忙殺されていて遅くなったのであった……。 kyotogo.connpass.com 聞いたトークのメモは以下のScrapboxにあります。 scra…
表題が全てです。たとえば以下のように定義されている I interfaceのモックをmockgenのreflect modeで生成するとエラーになる。 package generic import ( "go.uber.org/mock/sample/imp1" ) type V[T any] map[string]T type I interface { X() V[imp1.Imp1…
database_name をデータベース名に変えてください。 SELECT `table_name` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'database_name'; dev.mysql.com
tl;dr JSONカラムをマッピングするときは []byte 型を使わない string 型や json.RawMessage 型を使う 起こっていたこと Goのwebアプリケーションで、go-sql-driver/mysqlの interpolateParams=true オプションを有効にしてテストを回したら、以下のようなエ…
絶対もうあるでしょう、と思いつつも書きました。go-sql-driver/mysql を使っているのでlibmysqlclientが入っていなくても動くと思います。 github.com mysql コマンドでホスト名・ポート番号を指定して接続するのと同じコマンドライン引数が使えます。ほか…
移行しました。といっても元々ペライチのページだし、とくに自明じゃないことはやっていないと思います。 前提 Next.js 12.1.6 Static HTML ExportをしたものをNetlifyにデプロイしている リダイレクト設定がある https://utgw.net/labs/tatsuya.htm → https…
tl;dr 表題のようなツールを作りました。go install コマンドでただちにインストールできます。 $ go install github.com/utgwkk/bulkmockgen/cmd/bulkmockgen@latest 従来の //go:generate コメントから移行するツールもあります。 $ go install github.com…
すでに世の中にありそうな気がするけど作りました。もうあったらそっちを使いたいので教えてください。READMEがぜんぜん整備されていないので手があいたときになんとかしたい。 github.com 2023/6/19 11:53 追記 社内でcopierを教えてもらいました。 github.…
あらすじ go test が出力するログはシンプルです。シンプルなのはいいんですがテストサマリ的な情報が乏しくて、ログを全部見返さないとどのテストが落ちたのか分からなくなりがちという問題があります。 tparseというツールを使うと、go test を使いつつテ…
rowstructgenについては以下の記事を参照してください。 blog.utgw.net 以下のように -table-name-const という引数付きでrowstructgenを実行することで、テーブル名を表す定数を含めてコード生成できます。 $ rowstructgen -schema schema.sql -table users…
今どきlinterを使っていないプロジェクトなんて、と思われるあるかもしれませんが、歴史の長いプロジェクトだとそういうこともあるでしょうし、あるいは一部のDSLやスキーマ*1に対してのみlinterを走らせたいということもあるでしょう。 そういったプロジェ…
GoでSQLを書いて実行するとき、素のdatabase/sqlだけだとさすがに心もとないのでsqlxなどのライブラリを使ってDBの行をstructにマッピングすると思います。db struct tagでマッピング元のカラム名を指定できるのが便利ですね。 一方で、このstructを定義する…