ライブリッツの筒井です。 GoのORマッパー連載、おまけ記事です。 特に示し合わせた訳では無いのですが、RDBは全員がPostgreSQLを使っていましたね。 さて、今回の連載記事のいくつかでも言及されていた、jackc/pgx について簡単に紹介します。 GoとPoatgreSQLでCOPY GORM v1 と v2 のソースコードリーディングしてみた GoでのPostgreSQLドライバは lib/pq が定番でしたが、現在その開発は消極的で今後機能が追加されることはめったに無いそうです。 https://github.com/lib/pq#status 一方 pgx は現在も活発に開発がなされており、GORM v2にも採用されています。 使い方の比較lib/pq (およびdatabase/sql)と pgx の使い方を比較していきます。 pgxはドライバだけでなく database/
春の入門祭り2024の1記事目です。 はじめにTIG真野です。 Testcontainers を用いて、単体テスト実行前に docker compose up -d 無しで、PostgreSQLにアクセスする単体テストを行う、入門記事です。 恩恵は次のような開発者体感の向上が個人的にあります。 テストを実行するうえで、別プロセスのサービスを起動しておく必要があるといった前提条件を考えなくても済むため、テストを行うビジネスロジックに集中できるdocker compose up -d 打たないだけだが、テストに必要なコンテナを考慮しなくても済む停止し忘れて、別のリポジトリの開発するときに混乱しなくても済む並列テストしやすくなるので、テストの実行速度が向上するGoにおいて、複数のパッケージを同時にテストするとき、 -p 1 で絞らずに済むTestcontainers とはhttps://test
docker/compose は Go で書かれてるが、これのテストに gotest.tools というライブラリが使われていた。あまり見たことがなかったけど、使ってみたらわりと手触りがよかったのでここに記しておく。 gotest.tools はいつもの testing パッケージを拡張するようなライブラリ集。あとテストを実行するための CLI も提供している。GitHub Org は gotestyourself という名前だけど、これは洒落てるのかどうか不明(洒落てないほうに賭ける)。 assert, cmp gotest.tools/v3/assert が多分このライブラリのコア。主な API は assert.Check(t, comparison, msgAndArgs...) で、シグネチャを見たらあーそういうやつねと分かると思う。 予想通り comparison の中身しだい
はじめに こんにちは、LayerXの id:convto です。 そしてこれは LayerX アドベントカレンダー (概念) の1日目の記事です。 アドベントカレンダー盛り上げていくぞ〜ということで11月から始まるらしいです。だいぶフライングしてるけど枠もかなり埋まっててすごい。 せっかくなのでお祭り参加したいぞ〜ということで一発目です。よろしくお願いします。 静的解析つくろうとしたきっかけ ちょうどつい最近記事になった下記の輪読会がきっかけでした。 tech.layerx.co.jp このなかで、mapのrange accesssについて、元mapのcopyを取らないから破壊するとループ挙動が壊れる可能性がある旨が言及されていました。 そのときは雑談で「range accessしてるmapに再代入してたら怒る!みたいな考え方で整理したら静的解析できそうっすよね〜」みたいな話をしたんですが
We’re going to write useful linter for Go using go/analysis. Then we will integrate it into go vet and golangci-lint. What to lint Let’s find all printf-like functions that don’t end with f. It’s the Go convention to name such functions with f at the end: fmt.Sprintf, fmt.Errorf, fmt.Printf, fmt.Fprintf, fmt.Scanf, fmt.Sscanf, log.Printf, log.Fatalf, log.Panicf. Writing a simple linter Sample prog
お久しぶりです ちゃんと元気に生きています。 1ヶ月ほど禁酒していて体の調子がすごく良いです。その代わりアイスの消費量が増えました。毎日ハーゲンダッツとかガリガリ君とか食べてます。 独自Linterをgolangci-lintと統合する手順 まずこの記事でカバーする範囲について補足します。 Linter のコードの書き方については一切触れません 書いたあと、それを golangci-lint に組み込む方法についてがメインです 手順の説明のため、GitHub - golangci/example-plugin-linter: example linter that can be used as a plugin for github.com/golangci/golangci-lint をサンプルプラグインとして使用します。自前のプラグインコードがすでに手元にあればそれを使って応用しても良
The Go 1.18 release adds support for generics. Generics are the biggest change we’ve made to Go since the first open source release. In this article we’ll introduce the new language features. We won’t try to cover all the details, but we will hit all the important points. For a more detailed and much longer description, including many examples, see the proposal document. For a more precise descrip
Go1.18は2022年3月にリリースされました。このリリースはGo言語へのジェネリクスの実装を含んでいます。 この記事ではできるだけ最新の仕様と用語法にもとづいてジェネリクスの言語仕様について解説していきます。 更新履歴 2024/01/03: Go1.21(2023-08-08)でcmpパッケージが標準ライブラリに追加されたことに対応しました。 2023/02/23: Go1.20(2023-02-01)のcomparableの仕様変更に対応しました。 次の関連資料があります: The Go Blog - All your comparable types Griesemer氏によるGo公式ブログです。 Go言語のBasic Interfaceはcomparableを満たすようになる(でも実装するようにはならない) 上記の内容に対する筆者の解説記事です。Go1.20リリース前に書いたの
本書は技術書典6で@knsh14と共に執筆し、頒布したものです。(移動にあたってこっそり更新はしましたが)2022年5月現在では内容が古くなっている可能性があります。最新の情報を知りたい場合は公式ドキュメントまたは httsp://tenn.in/analhysis をご覧ください。 読者のみなさんは静的解析ツールを自作したことはありますか?コードレビューで頻出するような指摘事項は静的解析ツールを使って自動化するとコードレビューに取られる工数が減ります。golintやgo vetなどは使っている方は多いでしょう。 標準のものやサードパーティ製など様々な静的解析ツールを見かけます。しかし、自分たちの開発チームの事情を汲んだ静的解析ツールを見つけるのは難しいでしょう。そんなときに諦めてしまわずに自作するという選択肢があります。 本書はGoで静的解析を行う際に逆引きとして使えるように書いています
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く