golang
Microservicesのようなものを考えた際、Goで書かれたコンポーネントがHTTP(S)を使って他のコンポーネントと通信するという場合があると思います。 その「他のコンポーネント」がAWS NLBの配下にある時、GoのHTTPクライアントがTCPコネクションを使い回す場合…
GoのIP Routing Tableの実装について調べてみたところ、だいたいOSのRouting Tableを操作する系のライブラリがヒットし *1、そうではなくユーザー側コードでRouting Table相当の実装・処理をしたい時に使えそうなライブラリがパッと見当たらなかったのでそれ…
例えば以下のようなGoのコードを書き、 package main import "C" import ( "fmt" ) //export DoSomething func DoSomething(cstr *C.char) { fmt.Printf("Go: %s\n", C.GoString(cstr)) } func main() { } go build -buildmode c-shared -o libdosomething.s…
openapi-generator を使って go のコード生成をすると、 // Linger please var ( _ context.Context ) という一見不要そうな変数宣言がコード中に出てきます。これはなんなのでしょうか? 「残しておいてね」とは書いてありますが…… TL;DR たぶんこれ過去の…
具体的に言うと、aws/aws-lambda-go@v1.18.0よりも前のバージョンでAWS Lambdaのcontainer image runtimeを使うとハンドラが呼び出されず、タイムアウトするまで刺さります。例えば以下のような非常に簡単なLambda Functionをデプロイした時、 package main …
Go Genericsがどんなもんか試してみたかったので、これを使ってOptionの実装を書いてみました。github.com基本的な使い方としてはSynopsisを読んでもらえばわかると思いますが、ユーティリティとしては IsSome() IsNone() Take() TakeOr() TakeOrElse() Filt…
github.com定期的に実行したい何かがあって、そしてそのインターバルにjitterが入っていてほしいということがしばしばあり、必要な時に都度そういうコードを書いていたのですが、毎度書くのもしんどいな〜と思ったのでこの度ライブラリにしたという次第です…
github.com表題の通りです.出オチのような名前です.使い方やどういう挙動をするかという話題についてはREADME.mdのSynopsisをご覧いただければと思います.Javaのlombokをご存知の方はlombokの@Valueのような挙動をする,と言えばイメージしやすいでしょう…
gowrtr (go writerと発音します) というgoのコード生成支援ライブラリ (ジェネレータ群) を書きました.github.comSynopsisに書いたように, package main import ( "fmt" "github.com/moznion/gowrtr/generator" ) func main() { generator := generator.Ne…
goのstructにエラー定義を書いておけば良い感じで「エラーを返却する関数」をコード生成するツールであるgo-errgenを書きました.github.comSynopsisに書いてあるとおり, package mypkg //go:generate errgen -type=myErrors type myErrors struct { FooErr…
type Foo struct { Bar string `buz:"qux" iyan:"bakan"` } における `buz:"qux" iyan:"bakan"` を良い感じで buz => "qux", iyan => "bakan" のように取得したいというケースでは以下のようにするとよい: tagKeyValue := reflect.StructTag(`buz:"qux" iyan…
req_mirrorというサーバアプリケーションを書いた.受け取ったHTTP requestをJSONにserializeして,responseに詰めて返してくれるというやつ.つまりHTTP requestをおうむ返しにしてくれる雰囲気です.鏡的な挙動なのでreq_mirrorという名前にした次第.gith…
表題の通り.いくらかポイントがあったのでメモとして記す.基本的にこの記事の内容を真似した.medium.comあらかじめ,CircleCIの側の設定でGITHUB_TOKENという環境変数を登録しておく.なおGitHubのPersonal access tokenにはrepoのpermissionを付与してお…
LINE Notifyが便利でよく使っています.LINE Notifyが何かとか何が便利なのかとかをご存じない方はコマンドラインから LINE にメッセージを送れる LINE Notify « LINE Engineers' Blogを読んでいただければと思いますが,あえてものすごくざっくり説明すると…
まず以下の様なシェルスクリプトを用意する. #!/bin/bash # ここで依存しているパッケージを go get する # 例えば以下の様な感じ # go get -v gopkg.in/yaml.v2 # go get -v gopkg.in/redis.v3 for GOOS in darwin linux; do for GOARCH in 386 amd64; do …
最近 Prometheus を使って各種メトリクスを取っていて,ふと resque の queue のステータス,つまり各 queue に 積まれている job の数を集計・可視化したくなったので,そのための exporter を書きました *1.実装としては,resque は <namespace>:queues という SET </namespace>…
setlock is a command line tool which is in daemontools. That tool is known as powerful and useful. Then I implemented setlock command by golang, called go-setlock.moznion/go-setlockgo-setlock has functions which are equivalent to the origi…
[2015/08/10 12:47 追記]なんか一部のOS Xで動かないので調査中です…… [2015/08/11 10:15 追記]v1.1.0で直っています setlock は daemontools に同梱されているコマンドラインツールで,非常に便利かつ強力なツールであることが知られています.この件につい…
表題のやつです.便利っぽかったのと書きたかったという理由からgoで書いています.moznion/persec例えばアクセスログのようなものがあった時,「1秒間に何行ログに書き込まれているか」が分かれば秒間のアクセス数を求めることが可能となります.これはそう…
色々な事情があり,秘密のメッセージを送り合う必要性が今年に入ってから多数発生していて, そのたびに毎度毎度手で暗号化して〜みたいな風にやるのめんどいですね,そうですね, ということでこの度 naisho というものをこさえました.みんなには内緒です…
golangでforkってどうやるんだ— 単位落としました (@moznion) 2014, 9月 14 @moznion できねぇよ— Daisuke Maki (@lestrrat) 2014, 9月 14 @moznion 外部プロセスの起動、ならできる。— Daisuke Maki (@lestrrat) 2014, 9月 14 @moznion でもforkしたい、と…