あぼぼーぼ・ぼーぼぼ

のんびり生きたい

Go

Go 1.19.3 and 1.18.8 security fix の内容を読んだ

Go

今更ながら Go 1.93 及び 1.8.8 のマイナーリリース、security fix の内容について。 リリース内容はこちら groups.google.com どういう問題があったか github.com Windowsにおいて、環境変数をサブプロセスに渡す際にヌル文字(NUL)が含まれていると別の環…

Go 1.19.2 and 1.18.7 security fix の内容を読んだ

Go

https://groups.google.com/g/golang-announce/c/xtuG5faxtaU 3つの security fix が含まれている。 archive/tar : ヘッダー読み込み時のメモリ消費量に制限をかけた net/http/httputil : ReverseProxy でパース不可能なクエリパラメータを転送しないように…

http.NewRequestがerrorを返すパターン

Go

以下のPRをマージする過程で調べる必要があったのでメモしておく。 github.com 結論http.NewRequestがerrorを返すパターンは、HTTPメソッドが不正な場合と、URLのパースに失敗した場合の2パターンある。 http.NewRequestはgodocにもあるとおりhttp.NewReques…

『詳解Go言語Webアプリケーション開発』を読んだ

本の約半分がハンズオン形式になっていて、実際にWeb APIを開発しながら必要となる知識をインストールできる本でした。ハンズオンで作るWeb APIはBeyond the Twelve-Factor Appに準拠した形で、お題もMySQLを使ったデータ永続化、RedisとJWTを使った認証・認…

Goの静的解析の事始めとしてエラーラップフォーマットのLinterをつくった

Go

こちらのもくもく会も活用して、簡単なLinterをつくりました。 gostaticanalysis.connpass.com つくったもの github.com Goの静的解析の事始めとして、エラーのラップフォーマットの間違いを検知するLinter errwrapfmtをつくりました。 errwrapfmtは文字列リ…

Goでスタックトレースを出力するには

Go

スタックトレース周りについて調べたので放流。 概要 Goでエラーを扱う標準パッケージ errors はGo1.18現在スタックトレースに対応していません。Go2では標準パッケージerrorsにスタックトレースがサポートされる予定です(proposal)。それまでの間、スタック…

Goのリンターstaticcheckのルールを全部読んだからいくつか紹介

Go

Goのリンターの1つであるstaticcheckのルールを全部読みました。 staticcheck.io 全部書くとただのコピーになってしまうので、その中からかいつまんでいくつか紹介します。 SA1 – Various misuses of the standard library SA1004 - Suspiciously small unty…

httptest.ResponseRecorderを使ったテストでHTTPステータスコードが意図した値にならないとき

Go

httptest.ResponseRecorderを使ってHTTPサーバーのテストをしている際、レスポンスのHTTPステータスコードが意図した値にならないなぁと思って色々調べたのでそのメモです。 例えば以下のようなコードで再現することができます。 type MyHandler struct{} fu…

『実用Go言語』を読んだ

https://www.amazon.co.jp/dp/4873119693 実務レベルでGoを読み書きする際に考えるであろう様々な「問い」とその回答が体系的にまとまっている超良書でした。ぼくは最近Goを触り始めたペーペーなので、本書を読むと昨日自分が書いたコードを書き直したくなっ…

「テスト駆動開発でGo言語を学びましょう」をやった

Go

andmorefine.gitbook.io TDDをしながらGoの型や標準パッケージについて学べる教材です。対象としては他のプログラミング言語で一定経験があり、GoについてもA Tour of Goはやったことある以上の人かなという気がします。全くの未経験だとそもそもTDDやテスト…

Belong Study - BelonGo (4/26) 参加レポ

belong.connpass.com connpassで参加する際のアンケートに質問書いたところ、丁寧に用意して答えてくれました。ありがとうございます! Idomatic Go知らなかった〜〜〜。 dmitri.shuralyov.com Go による API クライアント実装の勘所 docs.google.com ディレ…

slack-go/slackを使ったAPI通信をモックしてテストする

Go

Go言語でSlack APIを使ったシステムを作る場合https://pkg.go.dev/github.com/slack-go/slackが便利なのですが、テストどう書くと良いかな〜と迷いました。 github.com 先に結論 結論から言うとhttps://pkg.go.dev/github.com/slack-go/slack/slacktestパッ…

Go Code Review Commentsを読んだ

Go

Go Code Review Comments · GitHub Effective Go - The Go Programming Languageとどっち先に読もうかなと思って、分量が短いのでGo Code Review Commentsを読んだのですが、冒頭で「Effective Goの補足として使えるで」って書いてあったので結局両方読むし…

Go Conference 2022 Spring参加レポ

gocon.jp 楽しかった〜〜 ぼく自身は会社で「Go書いていくぞ!」って状況に最近なって、すぐこういう大きいカンファレンスに参加してもどうせ内容ついていけないだろうなぁとか思ってたのですが、もちろんわからないやつもあるけど総合的にめっちゃ楽しめま…

ミクシィにおける Go 活用事例 〜 #gocon 2022 Spring 前夜祭(非公式)〜 参加メモ

mixi.connpass.com 各発表と気になったところ〜(発表資料見つけたら追記) Go移行におけるJSON-RPC対応 speakerdeck.com せっかくRPCつかうならスキーマ駆動開発したいですよね〜。RESTとRPCが両方あるから、RESTにも対応できるOpenAPIを選んで、JSON-RPCに…

Udemyの『Go言語で学ぶ実践gRPC入門』を受講した

Go

Udemyの『Go言語で学ぶ実践gRPC入門』を受講しました ٩( ᐛ )و www.udemy.com Goに関する基本的な情報はわりとネット上に無料で見つけられたので、実践的・応用的な内容を期待して購入しました。 この講座は、gRPCのサーバーとクライアントをGoで実装するので…

iOS(Swift)エンジニアがGoでAPI作って感じたこと

普段Swiftを使ってiOSアプリを開発している私が、GoでAPIを開発した際に感じたことを紹介します。 列挙型(Enum)がない! SwiftではEnumをめちゃめちゃ使います。ですがGoにはありません。が、Goではtypeを用いて擬似的にEnumっぽいことを実現できるようです…