日々、雑雑と。

いろいろなことを垂れ流し

プログラミング

gin.Contextをgoroutineに渡す時に気をつけること

ginのContextをgoroutineに渡す時は、Context.Copy()を使うこと。 ... ctx := c.Copy() go func() { // ctx を使った処理など } ... gin.Contextのインスタンスはsync.Poolで使い回されており、使う度にフィールドを初期化するためにリセットしている。その…

DockerコンテナのcronログをFluentdに伝搬する

背景 1つのDockerコンテナ内にメインアプリ用とバッチ処理用のGoバイナリを入れて、メインアプリはpid 1(シェルスクリプト経由で実行)、バッチ処理はcron上で周期的に実行するコンテナを作った。が、後々Fluentdにログを集約することになったものの、cronで…

time.Timeのゼロ値はUnixtimeのゼロじゃない

time.Timeのゼロ値はUnixtimeのゼロではないことを知り、備忘録。 まとめ 以下のコードだと、tにはUnixtimeとしてのゼロは入らない。 t := time.Time{} fmt.Println(t.UnixNano() == 0) // -> false time.Unix()関数で2引数に0を指定すると、Unixtimeとして…

難易度表のコンテンツをGoogleスプレッドシート+GASで管理してみる

BMS制作について Advent Calendar 2017 - Adventar 「BMS制作について Advent Calendar 2017」の23日目の記事です。 「難易度表を作ってみたい」、「難易度表を簡単に管理したい」という方に向けて、Googleスプレッドシート+GASを使った管理しやすい難易度表…

サイトを大改造:Barba.jsを導入してページ遷移を高速化

はじめに 最近は1つのWebページにヘッダ、フッタ、メインコンテンツ、サイドバーとたくさんの情報を詰め込むため、何かと容量がでかくなる。すると、いちいち別のページに映るたびに、メインコンテンツ以外の共通している要素を再度読み込みなおす必要があり…

ディープラーニングに挑戦中

いまいちディープラーニングの仕組みがわからないけど、とりあえず環境だけ構築して実習形式で勉強していく予定。 環境 OS CentOS7 Python 2.7.5 protobuf 3.0.0a3 Tensorflow 0.6.0 参考 TensorFlow全般 ディープラーニングの有名ライブラリ5種を最短距離で…