布団の中にいたい

Elasticsearchいじったり、Androidアプリ書いたり。最近は数学の勉強が楽しくなってきました。

golang

grpc-goを使った際のヘルスチェック

grpcを使ったアプリケーションを作る時にヘルスチェックをどうしようかと思って色々調べたのでメモ。 grpcでヘルスチェックを行う場合、公式にかかれているGRPC Health Checking Protocolを使うと良さそうです。 https://github.com/grpc/grpc/blob/master/d…

go-playground/validatorでomitemptyを使う

go-playground/validatorを使って、空の値を許容するクエリパラメータのvalidationをしようとして微妙にハマったのでメモ。 go-playground/validatorのリポジトリは以下。 https://github.com/go-playground/validator go-playground/validatorを使う場合、…

エラーの分岐にpkg/errorsを使う

modelのロジックが複数の種類のエラーを返す想定で出力を変えたいなーと思っていろいろ調べたのでメモ。 どうやったらシンプルにできるかなーと考えてたんですが、pkg/errorsを使う形に落ち着きました。 github.com だいたい以下のような感じで、独自のエラ…

echoでmiddlewareを挟もうとしてハマった話

echoでエンドポイントにmiddlewareをはさもうとしていろいろハマったのでメモ。 echoでルーティングする場合は以下のようにecho.EchoのGET、POSTであったり、Addだったりを呼ぶわけなんですが、それとは別に直接echo.RouterのAddを使ってルーティングしたり…

goでDBのテストを書くときに、go-sqlmockを使ってみた

goでDB周りのテストをするときに、毎度テスト用のDBにデータを流し込んで終わったら削除する、みたいなことをしていたのだけれど、若干面倒だなーと思い始めたのでgo-sqlmockを使ってみました。 go-sqlmockはgo用のmockライブラリです。 github.com 公式のサ…

echoでCORS対応する場合にpreflightリクエストの処理をどこでしているか調べてみた

昨日「Web API: The Good Parts」を読んで、APIを実装する場合の基本的な部分をおさえてみようということでCORS対応について色々確認してみてます。 net/httpで実装するのであれば、該当するhandler内部でMethodのチェックをして、OPTIONSならそのまま返す、…

depでgoaを使う

久しぶりにgoaで遊ぼうとしていて、開発環境をdockerで作ろうとしたら、ハマったのでメモ。 goaの使っているgo.uuidのbreaking changeが原因でシンプルにdep ensureで引っ張ってきても古いgo.uuidが取れてきてしまって、動かないのでGopkg.tomlで上書きする…

glideからdepに変えた話

前に自分の作ったライブラリのパッケージマネージャーをglideからdepに変えました。特に理由があってやったというよりは、そろそろdepに慣れておいた良さそうぐらいのモチベーションです。 dep自体が他ツールからの移行を想定しているので移行は非常に楽でし…

軽いノリでプルリク投げたらmergeされた話

今年のぼんやりとした目標で、何かしらの他人のプロダクトにプルリクを投げようと考えていたのですが、年始にgithub trendingに上がっていたプロダクトにノリでプルリク投げたら5分かからずmergeされてしまいました。 プルリクを投げたのは以下。 github.com…

golangのflagで引数を取得する

自分でCLIのツールを作るときは大抵、cobraを使ってやるのですが、サブコマンドを必要としていなかったり、そこまで処理が多くない場合にcobraを使うのは面倒だったので、標準パッケージに含まれているflagを使ってみている。そんななかでflagでオプション無…

logstashのmonitoring apiを叩くためのgo用ライブラリを作った

logstashを動かした時にどうやって監視しようと思うと、まぁほぼほぼx-packを使ってkibanaで監視すると思います。 monitoringに関してはx-packもただで使えますしね。 そんな中でkibanaを使わないで確認したいと思い至ったので、monitoring apiを叩くgo用ラ…

elasticsearchでanalyzerを試すコマンドラインツールを作った

elasticsearchでanalyzerを試す際に毎回/_analyzeを叩いて検証するのもだんだん面倒臭くなってきたので、さっくり試すためのコマンドラインツールを作りました。 github.com とりあえず試せることを目指して作ったので機能はかなり少なく、analyze apiのfilt…

go test で特定のテストのみを動かす

このところ、自分で使うようのコマンドラインツールを作っているのですが、テストが多くなってきたこととテストに他のソフトウェアを含んでいる影響で激烈にテストが遅くなってきていて若干不満だったのですが、特定のテストだけ実行する方法があったのでメ…

goでconnpassのイベントを検索するslackbotを作ってみた

つい最近のGoogle I/Oでkotlinがandroidアプリ開発の公式言語に追加された影響か、大したこと書いてないですが意外にアクセスが来ていて嬉しい限りです。 とりあえず間違った情報は流さないようにしたいと思います。 今回は今までのandroid + kotlin押しとは…