なんかてきとうに

わりと個人的な忘備録的ですよ。

isucon8に出た話 なんも情報ない感じのやつ

何もわからないまま、1人でもエントリーできるという事で誰にも迷惑かけないだろうとエントリー。

結果

  • 38位 24,353 箱 (1)

前日までにやったこと

  • なし

本当に何の準備もせず。

当日やったこと

  • pythonで行くことに決めた。

  • mysql のslow log を取ろうとしてダメだった。

ベンチはしらせたら結果にこれが遅かったのでみたいなのが出たのでそれでカバー。

使った結果良くなったのかさっぱりわからない。

  • pythonのapp.pyをいじる。

遅いところが 無駄にDBにクエリなげていたのでざっくり修正 get_event()がつらい感じだった。あとget_users()も。

構成をちゃんとする

という感じ。(他の人達はDB+app*2みたいな構成にしてたっぽい?)

ちなみに1台構成だと普通にメモリ不足からのDiskIOで死にました。

これで24,000行ったし、初めてでこれなら良いのでは?と終了。

ベンチ前にinitializeでDB初期化が走るんですけど、ローカルのDB初期化する感じになってたので、リモートDBの初期化をするように変えたり、この段階でmemcachedの初期化したり現存するユーザ突っ込んだりとかもした。

そのほか、 mariadbinnodb_buffer_pool_sizeを500Mくらいにしたり gunicornに -w 5 をつけてworkerを5にしたりした。(2論理CPUだったので2*2+1=5)

感想

何も準備してなかったので、用意されたサーバにsshしてそこでvimrcなんもなしのvimで書いてたので、スペルミスによるfailとかたくさんあってしんどかった。

モニタリングの準備と、何らかちゃんとしたエディタで書けるようにくらいはしておかないとダメでは。

x264で実写動画をエンコード

実写動画をエンコードする機会があったのでメモ。

ソースが 1440x1080で、アスペクト比16:9の場合、sar比を 4:3にする。--sar 4:3(1920:1080の16:9ならsar比は1:1のまま)

x264には実写向けチューニングプリセット film というのがあるのでそれを指定する。--tune film

最終的に出力したいファイルサイズから、ビットレートを算出し、VBRのupperとしておく --vbv-maxrate 2000 数字はビットレート

VBRのバッファサイズも指定する必要がある(-1にするといい感じにしてくれる) --vbv-bufsize -1

インターレースは再生時に解除してもらうほうがきれいだったりとかあるので、解除しない。 --interlace --tff (tffとbffがあるが、いちぶBSがbffらしいけれど、大体tff。事前に調べておかないとひどいことになる)

だいたいこのくらいの設定をしておけば無難な感じになる。さらに画質を上げるとかいろいろ考えたい場合は、チューニングプリセットではなく、個別にいろいろ指定する感じ。

でも、用意されたプリセットはやっぱり優秀なはず。

ビーフカレーLEE 辛さ×30倍

ビーフカレーLEE 辛さ×30倍 という商品をご存知でしょうか。

グリコのビーフカレーLEEで、夏限定販売される商品です。

私はLEEがあまり好きではないので、普段は買わないのですが、 この夏限定のx30倍だけは毎年まとめ買い(10箱)しています。

単に辛いものが好きなだけなのですが、このx30倍、良い感じに辛いです。

水を飲みながら飲むと刺激が増すので、あまりお勧めはしないというレベルなのと、空腹時に食べるとおなかが痛くなる可能性がある。

そのくらいの辛さです。

一度食べてみると病みつきになるのであなたも是非。

amazonで買えます。

チョコミン党

チョコミントは最高である。

ローソンのチョコミントパンケーキ、アレは良かった。お昼ご飯としては微妙だったけれど。

昨今のチョコミントブームのおかげでコンビニで気軽にチョコミント味のものが買えるようになってQoLが上がりっぱなし。

もう、何も怖くない。

パソコンの中身を一部新調した話

AMD Phenom II X6 1065T に Radeon HD 6850という構成のマシンを自宅サーバとして利用していましたが、 マザーボードがいい加減古くなっていたため、ゴールデンウィークを利用して新調しました。

新調と言っても、マザーボード、CPU、メモリを交換しただけです。

B350なAM4マザーボードと、Ryzen2400G、DDR4 2333 8GBx2 という構成です。

交換自体はとてもすんなりいきました。

パーツを交換し、電源オン。 これで普通に起動してくれました。

最近のWindowsはすごいですね。一昔前ならCPUの世代が変わるとほぼ確実にブルー・スクリーンが出ていたのですが。

Windows10のライセンスがWindows7からの無料アップデート期間中に行ったもので、プロダクトコードを探すのが面倒だと思っていたのですが、 Windowsアカウントにライセンスを紐付けるやつで、更新したらそのまま利用できました。

このあたりも、すごく、親切になっています。

ディスプレイだけうまく認識してくれていなかったのですが、デバイスマネージャからグラフィックを一旦削除して再認識させたら新しいドライバを利用してくれるようになりました。

いい時代になったものです。

WSLで遊ぶ。

WSLAPIというのが用意されています。

この中のWslLaunchInteractiveというのを呼ぶと、名前指定してWSL環境が呼べます。

つまり

from ctypes import *

ret = c_ulong()
windll.wslapi.WslLaunchInteractive("DistroName","",0,byref(ret))

などとやるとDistroNameなものが呼べます。

登録するために WslRegisterDistribution というものが用意されていますが、  これで

from ctypes import *
windll.wslapi.WslRegisterDistribution("DistroName","rootfs.tar.gz")

などと登録を試みると、 python.exeのある場所にインストールしてくれます。 とても辛い。

ですので、登録自体はレジストリを操作するなどして、用意されたAPIを利用しない方が良いような気がしています。