Technology Engineering

178inaba の技術ブログ

Go

go-cmpでuintが16進数で表示される問題を解決した

Go

一ヶ月くらい前だがgo-cmpで uint が16進数で表示される問題を解決した。 go-cmpは差分がいい感じに表示されるので重宝していたのだがuint系の変数だけ16進数で表示されるのが気になっていた。 https://play.golang.org/p/uE2CalqpkTZ main.Ints{ - Int: 0, …

Go言語で画像生成のテストを書く #golang

Go

この記事はGo3 Advent Calendar 2019の18日目の記事です。 この記事ではGo言語における画像生成のテスト方法を紹介します。 画像生成というのはロジックに手を入れていなくてもライブラリがアップデートされたタイミング等でバグりやすい箇所です。 テストを…

gRPC(Go)でタイムアウト時にio.EOFエラーになる件を調査した

WEB+DB PRESS Vol.110のgRPC特集がおもしろくて手を動かしながら読んでいる。 WEB+DB PRESS(Vol.110(2019)) Webアプリケーション開発のためのプログラミング技 特集:名前付け大全/速習gRPC/最新TLS1.3ジャンル: 本・雑誌・コミック > PC・システム…

スプレッドシートのデータを取得する

slack botでスプレッドシートからデータ取得する場面があったので調査して検証がてらgolangで実装してみた。 気をつける所とかメモ的に書いておく。 作ったのはスプレッドシートで重み付け抽選を行うアプリ。 github.com 認証 認証方法はAPIキー、OAuth、サ…

GitHub Gistにファイルをアップロードするコマンドをgolangで作った

Go

Gistを作る時、毎回catでファイル内容を表示してコピーして、GistのWeb画面にペーストしてたんだけど、 これが地味にめんどくなってきたので、ファイルを渡すとGistを作ってくれるコマンドをgolangで作った。 github.com 使い方 target.goをGistにアップロー…

golang.tokyo #4に行ってきた。 #golang #golangtokyo

Go

inabaです。 golang.tokyo #4に補欠からの当日滑り込み繰り上がりという運の良さで参加してきました。 会場はペアーズの株式会社エウレカさん。 倍率が2倍ということもあり、狭き門という印象のgolang.tokyoですが、今回から動画撮影も始まったようです。 次…

bufio.Scannerのエラーと解決策 #golang

こんばんわ。 inabaです。 今日はAtCoder Beginner Contest 055に参加していました。 その時に起こったエラーを調査したので参考までに。 Runtime Error ある問題を解いて提出したら何件かでRuntime Errorが出た。 Runtime Errorの内容は見られないのでコー…

外部キーが設定されているとTRUNCATEできない #MariaDB #MySQL

inabaです。 最近はgolangでDBをいじっています。 テストもテスト用DBを作り、実際に書き込んで行うようにしていました。 テストをするたびにAUTO_INCREMENTの値が増えていく まぁそうでしょう。 なので、テストデータのクリアをするためにTRUNCATEしようと…

【Go】structをJSONにする時、ゼロ値を含む/含まないを切り替える方法と注意点 #golang

Go

inabaです。 Go言語でstructをJSONにする時、ゼロ値を含まない場合はタグにomitemptyをつけますよね。 type stampCard struct { Stamp int `json:"stamp,omitempty"` } しかし、同じstructを使っている時にゼロ値を含む/含まないを切り替えたい時があります…

【Go】kingpinをinit()でパースしていたらテストでエラーが出た話 #golang

Go

kingpin 標準のflagパッケージでは、同時に長いオプションと短いオプション(shortオプション)を定義するのが面倒。 package main import ( "flag" "fmt" ) var ( dryRun = flag.Bool("dry-run", false, "dry run mode.") ) func init() { flag.BoolVar(dryRu…