Go
すでに世の中にありそうな気がするけど作りました。もうあったらそっちを使いたいので教えてください。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…
GoでSQLを書いて実行するとき、素のdatabase/sqlだけだとさすがに心もとないのでsqlxなどのライブラリを使ってDBの行をstructにマッピングすると思います。db struct tagでマッピング元のカラム名を指定できるのが便利ですね。 一方で、このstructを定義する…
アプリケーションの設定値を環境変数から注入していますか? Goの場合、structに設定値を集約するのには GitHub - caarlos0/env: A simple and zero-dependencies library to parse environment variables into structs. などのライブラリが使えると思います…
tl;dr キーワードは「monotonic clock」です。 あらすじ Goで以下のようなコードを書いていた*1*2。あるAPIを叩くクライアントで、APIコールに必要なアクセストークンを4時間キャッシュしている。c.getToken() で得られたトークンを使ってAPIコールを行えば…
Go Modules Reference - The Go Programming Language を流し読みつつ手元でちょっと実験した感じだと、go.modに指定したバージョンになるようだった。 Module-aware commandsの節を見るとそのように読める。 In module-aware mode, the go command uses go.…
小ネタだしプロダクションで試したことはないです。ISUCONの練習をしていたらふと、これで複数カラムのINクエリが書けるのでは?? と思いついたのでメモ。 package main import ( "fmt" "log" "strings" "github.com/jmoiron/sqlx" ) type WhereInArg struct …
あらすじ Go言語でGraphQL APIを叩くクライアントを書くことがあって、クエリをベタ書きするのはともかく返り値にマッピングされるようなstructの型を用意するのが面倒すぎる。正常系だけならそれでもまだなんとかなるかもしれないけど、異常系のことも考え…
モチベーション zatsu_monitorはシンプルなURL監視ツールです。crontab等で定期的に指定したURLにリクエストを送信し、ステータスコードに変化があれば通知してくれます。詳しくは作者の id:sue445 氏の記事をご覧ください。 sue445.hatenablog.com 手軽にUR…
はじめに これは KMC Advent Calendar 2020 - Adventar と はてなエンジニア Advent Calendar 2020 - Qiita 10日目の記事です。 KMC Advent Calendar 2020 9日目の担当は なな さんで 要約: 『CPUの創りかた』読んだら良かった。 - rebuild-kitashirakawa で…
req.Header.Set("X-Hoge", "fugapiyo") する http.RoundTripper を実装したらできそう。 実装 全てのリクエストの User-Agent を utagawakiki-bot (+https://twitter.com/utgwkk) に設定する RoudTripper です。こんな感じで http.DefaultClient.Transport …
github.com 表題のものを書きました。 CIをもっと高速に回したい、という欲求は誰しも持っていると思います。CIを高速化することは、開発のテンポを上げることにも、機能リリースまでのリードタイムを下げることにもつながります。 一般的にもそうだと思いま…
追記 nrechoというライブラリが公式から提供されているのでこっちを使ったほうがよいと思います。わざわざ自前実装をしてから見つけてしまったけど見つけられたのはよかったということでここはひとつ……。 そういうわけなので、以下の文章は読まなくてもよい…
単機能のSlack BOTとかコマンドラインツールとかは最近ずっとGoで書いている。なんで書いているのかまとめてみた。 静的型がある 型システムとしてはまだ弱い、とか、冗長すぎる、という意見があるかもしれないけど、ないよりはマシだと思っている。 静的解…
goreleaserはGoのプログラムをGitHubのreleasesとかHomebrewとかに簡単にリリースしてくれるプログラム。 goreleaserの設定ファイルでmainパッケージの位置を指定できるけど、指定方法によって挙動が変わる(し、あまりちゃんとドキュメントに書いてない気が…
こんにちは. アドベントカレンダーの記事から2週間ぐらいしか経過していませんが,「Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつ」をGoで書き直しました*1. github.com utgwkk.hateblo.jp 概念はこちらとほぼ変わりません.RubyをG…
github.com はじめに 2日ほど生活リズムを崩すことで、Goで書かれたPietの処理系が一応できあがりました。 きっかけ utgwkk.hateblo.jp Pietとは David Morgan-Mar氏によって設計された難解プログラミング言語 画像がソースコード 数値は色の面積で表現され…