年中アイス

いろいろつらつら

golang

GoでJSONの数字/数値を扱う

JSONはデータの表現形式です。表現はできますが、項目があるかや、型が何であるかを検査する仕組みはありません。*1 そのため、システムや実装が分かれている場合に、数値を期待しているが、JSONの表現上、数値か数字かがずれていることが起き得ます。どうい…

GoでJSON文字列を整形し直す

Goで、JSONを返すWebAPIを呼んだ時、普通は結果をプログラムで使うので、対応する構造体を用意して、json.Unmarshal()などで変換します。 しかし、JSONをそのまま整形だけして出力したい場合があります。例えば、WebAPIを呼んで、そのレスポンスを見せるだけ…

Apexでlambda slack POSTにGoを使う

以前のエントリで、Lambda Node.js 4.3を使ってSlackにPostしていました。 reiki4040.hatenablog.com 普段Javascriptは書かないので、Goで書いてApexでデプロイする版を試しました。 ApexはLambdaのコードを管理(?)、デプロイするツールで、PythonやNode.js…

AWS CodeBuildでGoプロジェクトをビルドする

AWS TokyoリージョンにもCodeBuild等のCodeシリーズ(?)一式揃い、使ってみようということで、まずはCodeBuildを試してみました。 公式にGoのサンプルはあるんですが、他のライブラリ使ってないhello worldなので、CodeBuildの説明だけという感じでした。vend…

golangのHTTPサーバを構成しているもの

golangのHTTPサーバは、少量のコードで動くものを作ることができます。内部的には、net/httpパッケージのServerとHandlerで構成されます。 Serverは名前の通り、Serveするもので、HTTPをどのネットワークソースで提供するかを定義するものです。 Handlerは、…

rnzoo 0.2.0をリリースしました。

golangで書き直した新しいrnzoo version 0.2.0をリリースしました。(ssh呼び出しが有るので、rnsshはshell) Release version 0.2.0 · reiki4040/rnzoo · GitHub今回のバージョンの目的は、導入のハードルを下げるために、boto(Python)からgolangにしたことで…

golangでのシグナルハンドリング

golangでデーモンやWebサーバなどの設定再読み込みなどをどうしようかなと考えてた時に、fluentdがシグナルでいろいろやってたな*1と思ったので、golangだとどうやるか調べてみました。全体はこれ 動作の確認 ビルドして実行ファイル作成 go build 実行しま…

golangとPythonでの可変長引数(variable arguments)の扱い方

ltsv_pipe/ltsv_filterではフィルタするラベルを渡すのに、可変長引数を使用しています。 reiki4040/ltsv_pipe · GitHub rnzoo/ltsv_filter at master · reiki4040/rnzoo · GitHub 可変長引数は、引数の個数を固定せずに渡された個数分が関数わたるようにな…