日々、雑雑と。

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

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

背景

1つのDockerコンテナ内にメインアプリ用とバッチ処理用のGoバイナリを入れて、メインアプリはpid 1(シェルスクリプト経由で実行)、バッチ処理はcron上で周期的に実行するコンテナを作った。

が、後々Fluentdにログを集約することになったものの、cronで動かしたバッチ処理洋バイナリの標準・エラー出力が集約されなかったので、どうしたもんかとなった。

回避策

cronのログを一旦何かしらのファイルにリダイレクトし、pid 1でtail -fをバックグラウンドで実行すれば、メインアプリと同じ標準出力に乗るからFluentdに集約できるんじゃないの?と考えた。

とりあえず、apiとbatchのバイナリをgo buildで作ったとして以下のファイル構成とする。

~/
├ app (goバイナリ)
├ batch (goバイナリ)
└ batch.log (一時的に)

DockerFileでエントリポイントで実行させるシェルスクリプト

#!bin/sh
touch batch.log
echo "* * * * * ./bin/batch >> batch.log 2>&1 " >> /var/spool/cron/crontabs/root 
echo "0 0 * * * : > batch.log" >> /var/spool/cron/crontabs/root && crond
tail -f batch.log 2> /dev/null &
./app

一応これで、appもbatchもFluentdに集約できるようになった。が、コンテナの中にcronのログが一時的にdumpするのが最高にキモチワルイ。。。

他の回避案

既に事後だが、あまり美しくない回答なので、他にやりようがないか考えてみた

  • batchを単純に1回実行するだけのコンテナを作る
    • ホストでcron組んで、定期的にコンテナを立ち上げる
    • 共有するファイルやディレクトリは-vでマウント
  • アプリ自体にFluentd連携のパッケージを組み込む

最初からアプリ自体にFluentd関連のパッケージ組み込んで開発しとけばココらへん悩む必要もなかった。

kakakakakku.hatenablog.com

おわり。

映画「ルイスと不思議の時計」

なんとなく観る作品は大体面白い法則。

lewis-movie.jp

久しぶりに金曜日の仕事が早く纏まったので鑑賞。結果は良作でした。

後半から面白かった

後半から面白くなるのは殆どの映画に当てはまることだが。。。正直、序盤は淡白すぎる展開で、どういう話になるのかイマイチ掴めなかったから、あまり惹き込まれなかった。

後半あたりから目的がはっきりしてきて、魔法やコメディ演出とか賑やかになってきて、ちゃんと終わりもしっかりしてて、前半の失速は何だったのかっという感じ。

フローレンスが個性的

館に住んでいるフローレンスという女性が、後半から個性爆発してきて、彼女だけで十分面白いんじゃないの?って思ったりして観てた。

ドッキリ演出

ちょくちょく挟むドッキリ演出のおかげで、終始気休めできず。苦手な人には辛い。。。一応前フリのようなものがあるから心構えはできるが。。。

【画像多め】写真撮影ゲーム「Shadow of the Tomb Raider」プレイ

www.tombraider.jp

2018年の9/14(金)にリリースされたので、デジタルデラックスエディションをSteamからポチった。

殺人狂考古学者のララ・クロフトが、世界の破滅を目論む秘密結社「トリニティ」の企みを阻止しようと、躊躇なく敵をステルスキルしたり、ヘッドショットしたり、敵を吊り下げておびき寄せたり、遺跡を探検して手がかりを探したりするアドベンチャーゲーム

まだゲーム遊んで間もないレベルだけど、CGに感動を覚えてしまったので記事に投下。※画像多いので注意

続きを読む

映画「タリーと私の秘密の時間」

tully.jp

アトミック・ブロンドシャーリーズ・セロンが出てるので、日比谷の映画館で鑑賞。

あらすじ

第3子が産まれ、その赤子と兄妹の世話で疲労が蓄積していく母親のマーロ。ある日、マーロは夫の反対を押し切りヘルパーを雇うことを決断する。そして、毎晩、子供を寝かせた後、ヘルパーのタリーが家に訪れ、赤子の世話をするようになる。タリーのサポートで、生活に余裕を持ち始めたマーロは明るさを取り戻していくが・・・。

感想

子育ての苦しさを如実に描いたような映画だった。タリーと契約するまえの母親マーロのグロッキーさは、見るに耐えなかった。その分、タリーと話をしたり、息子や娘の時間を楽しんだりしている後半の明るいマーロは対象的で観ててほっこりした。

出産の苦しみやその後の疲労困憊に苛まれるマーロに一切構わなかった夫だが、さすがに鈍感すぎる。 ヘルパーのことについても無関心で、終始帰宅後もゲームに夢中。。。仕事が忙しすぎるのは一理あるが、それに感けず妻を気遣う心を少しぐらいは持てなかったものか。最後はまだやり直せるフェーズで反省する機会が与えられたから良かったものの、最悪取り返しのつかない展開もあり得た訳で。。。

シャーリーズ・セロンの体であるが、アトミック・ブロンドの撮影に向けて歯を折りながら鍛え上げたと思えば、この映画の撮影のため、鬱になりながらも暴飲暴食生活で肥満体系になったりと、なかなか過酷な役作りをされているようで。。。感服ながらも、やや心配ではある。

盗賊会社 - 星新一

盗賊会社 (新潮文庫)

星新一ショートショートは読んだことはあるが、盗賊会社は読んでことがなかったので購読。

盗み・会社にまつわるショートショート(超短い短編集)シリーズの一つ。たまに宇宙人モノもあったり、関係ない作品もあったりする。

感想

1話が6,7ページ程度の(稀に1ページで終わる)ショートショートのため、通勤時間中や食事後のちょっとした休憩中に、区切りを付けて読みやすかった。

内容であるが、どれもブラックユーモアに満ち溢れた面白い作品だった。

一番後味悪かったのが『善意の集積』というショートショートで、地球の盲目な少女が宇宙人に連れ去られ、宇宙人の善意で美しい姿になり、目も見えるようになったのだが、地球に戻ってみたら3日も経たずに自害してしまうという話。
あまりにも救われない話で、人によっては受け入れられないかもしれないが、個人的には、短時間でこんな鬱屈とした心境にさせてくれて、かつショートショートならではのさっぱりさがある良作だと思った。

映画「ペンギン・ハイウェイ」レビュー

penguin-highway.com

8/17(金)公開。前々からチラシで見て気になってたので、日比谷のTOHOシネマズで鑑賞。

原作は森見登美彦著の同タイトル小説から。

あらすじ

知性派小学生のアオヤマくんが、街に突如現れた大量のペンギンの発生理由、どこへ向かうのかを「ペンギン・ハイウェイ」というテーマで研究していく。すると、偶然ながら、歯科クリニックで働くお姉さんがこの現象に関わっていることを知るが、不思議な現象が次々と起こり、謎が更に深まっていく。

感想

原作者が森見登美彦だからか、劇中の言葉選びや表現がいちいち面白く捻られている。クレしん映画のようなギャグ描写が小刻みに入るため、コメディ好きなら決して飽きずに見続けられる。天丼もしっかりあり、どこでウケを取れるのかちゃんと考えられている印象だった。

人間描写は本当に丁寧。思想や言動の変化に違和感がなかった。あと、機械のような答弁をするアオヤマくんが時折見せる人間味が印象に残るし、お姉さんと触れ合いながら、より感情的になっていく所が良き。

話の構成に触れると、ペンギンが突然現れたり、突然消滅したり、ペンギンを捕食するジャバウォックが現れたり、巨大な水球が現れたり、不可解な事柄が増えて謎が深まっていくのだが、ちゃんとそれらを纏めて納得できる〆だった。

雑感

  • おっぱい
  • ペンギン可愛い
  • OPの管弦楽曲が素晴らしすぎる。不本意ながら泣きそうになった
  • ハマモト=サン愛おしい。今作で一番喜怒哀楽が激しい印象的な女の子だった
  • ウチダくん可愛い。池ポチャ三冠王
  • アオヤマくん可愛い。天才児はおっぱいに一途
  • アオヤマくん可愛い。1分間に5回以上もおっぱい連呼するの一途
  • スズキくんはジャイアニズムを発揮してて良い
  • 不思議お姉さん不思議だった
  • チェスで盛り上がる小学校あるの?
  • ペンギン可愛い
  • 中盤の挿入曲でオーケストラの管楽器が耳につんざめく音を出しててやや鬱陶しかった
  • どこが爆死なの?というレベルで面白い
  • EDは宇多田ヒカルだった
  • ペンギン可愛い

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

time.Timeのゼロ値はUnixtimeのゼロではないことを知り、備忘録。

まとめ

以下のコードだと、tにはUnixtimeとしてのゼロは入らない。

t := time.Time{}
fmt.Println(t.UnixNano() == 0) // -> false

time.Unix()関数で2引数に0を指定すると、Unixtimeとしてのゼロが入る。

t := time.Unix(0, 0)
fmt.Println(t.UnixNano() == 0) // -> true

time.Time{}とtime.Unix(0,0)

time.Time{}とtime.Unix(0,0)で得られるそれぞれの時刻とUnixtimeを以下に纏めた。time.Timeのゼロ値は西暦基準で、Unixtime基準ではない。このゼロ値をUnixtime[ナノ秒]にすると、過去の時刻なので負数になる。

記述 出力
time.Unix(0, 0) 1970-01-01 00:00:00 +0000 UTC
time.Unix(0, 0).UnixNano() 0
time.Time{} 0001-01-01 00:00:00 +0000 UTC
time.Time{}.UnixNano() -6795364578871345152

サンプルコード:The Go Playground

リファレンス

改めてtimeパッケージの仕様を見たら、勿論ちゃんと記載されている。やはり仕様書はしっかり読むべき(自戒)

https://golang.org/pkg/time/#Time

The zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC. As this time is unlikely to come up in practice, the IsZero method gives a simple way of detecting a time that has not been initialized explicitly.