ダメ人間オンライン

あまり信用しないほうがいい技術メモとか備忘録とかその他雑記

進捗どうですか?

進捗ダメです

大体インターネッツのせいでダメなこと多いので、人間から怒り口調で聞かれるより前に優しく聞いてくれるChrome拡張書いた。
dameninngenn/chrome-ext-shinchoku-san · GitHub

f:id:dameninngenn_owata:20131001025607g:plain

ウェッッッブページ開いた回数をカウントして指定した回数に達したら通知が出る。回数は自分で設定できる。

YAPC::Asia Tokyo 2013に行ってきた&LT-THONで話してきた

今年もYAPC::Asia Tokyoに行ってきました。

前夜祭

LT-THONで話しました。
前半は前夜祭であるということをお伝えし、後半はここ一年ぐらいで書いたコードのことをいくつか話しました。

誕生日ですっつってあんなに拍手もらったの人生で初めてで、社交辞令的拍手だとわかってはいても嬉しいものでした。

あ、そういえば今日は25日ですね。多くの方は今日給料日ではないでしょうか?有益なURL置いておきますね^^

https://www.amazon.co.jp/registry/wishlist/2NFCUB363SFD8

https://www.amazon.co.jp/registry/wishlist/2NFCUB363SFD8

https://www.amazon.co.jp/registry/wishlist/2NFCUB363SFD8

https://www.amazon.co.jp/registry/wishlist/2NFCUB363SFD8

https://www.amazon.co.jp/registry/wishlist/2NFCUB363SFD8

まだ間に合いますし遠慮しなくていいんですよ^^^

あと質疑応答で「コメントは差し控えさせていただきます」みたいなこと言ったのは、名前挙がった方とは面識ないので(もちろん一方的に知ってはいる)何も言えなかっただけです。。


前夜祭の会場は結構広かったんですが、後ろのほうまで机が並んでいてみんなちゃんと座る感じだったのでみんなLTを聞き入ってた感じでした。後ろ1/3ぐらいは机とっぱらってLT聞きたい人は前のほう座って後ろのほうは人と話して交流できるような感じにしとくのもアリだったのかなとも思いました。

LT-THONは気楽に参加できるので、今年も開催されて嬉しかったし楽しかったです。ありがとうございました。

1日目

急行乗ってると思ったら特急乗ってて日吉余裕で通りすぎて遅刻した。

1日目で一番印象に残ったのはおまけの話だったけど Regexp::Debugger で、なんかワクワク感がすごかった。ワクワク人間。

某非公式イベントもすげーおもしろくて良かった。特にyusukebeさんが親指を立てながら溶鉱炉に沈んでいくシーンは涙無しには見られなかった。

2日目

座談会のセッションおもしろかった。今回のYAPCで一番楽しみにしてた。

懇親会ではビールこぼしておもらししたみたいになってしまった。実際におもらししたとしてもみんな酔っ払ってたのできっと気づかれないし何も問題はなかった。

まとめ

今年も3日間とても楽しかった。スタッフの方々や皆様に感謝です。

ちらっと話が出てたYAPC::Tohokuも楽しみですね。

さて来年は・・・

mod_cacheとVaryヘッダ

mod_cahceで画像をキャッシュしてる場合は画像に"Vary: User-Agent"つけないようにしましょうという話

はい

外部ストレージで画像を管理してて、表示時に毎回その外部ストレージに取りにいかなくて済むようにフロント側でキャッシュしとくというのはよくある話(?)だと思います。

例えばapacheの設定で

RewriteEngine on
RewriteRule ^/images/(.+)$  http://external.storage.dameninngenn.com/images/$1 [P,L]

<IfModule mod_cache.c>
    CacheRoot /dev/shm/mod_cache
    CacheEnable disk /images
    # ...
</IfModule>

みたいにしておくと /images/hoge.jpg にリクエストきた場合キャッシュされてなければ外部ストレージにとりにいって表示して、キャッシュされていればそれを返すという風になります。

このままだと特に問題はないのですが、ここに"Vary: User-Agent"が入っているとUser-Agent毎にキャッシュが保存されてしまいキャッシュサイズが膨れ上がります。
今回のケースだとdiskキャッシュだけど/dev/shmを使ってるのでモリモリメモリ使ってあげくswapしまくって人間が死ぬ。

画像にはVaryヘッダつかないようにしとくでしょーって思うかもしれませんが、結構コピペとかでうっかりがあったりするもんです。

例えばdeflateの設定部分で全部にVaryつけても問題ない場合だと

Header append Vary User-Agent

としてたり。

SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary

Header append Vary User-Agent env=!dont-vary

こうするとか。
http://httpd.apache.org/docs/2.2/mod/mod_deflate.html

余談

なんかのプロセスがswap領域使ってる場合とかだと割りと簡単にどのプロセスが使ってるかっていうのはわかるけど、プロセス以外の何かがswap使ってる時にどいつがswap使ってるのかをどう調べたらいいか全然わかんなかった。

swap使ってるのはコイツですよーってすぐ分かる方法があれば知りたい。。

プロセス以外だとだいたい目処がついたりするもんなんかな?あそこかあそこかなーぐらいの。
いかんせんそこらへんの知識が貧弱なので色々身に付けたいけど、実際に問題が起きて自分でトラブルシュートして始めて身についたりするもんだとも思ってるので難しい。

vim-airline使い始めた

こんにちは、うすっぺら人間です。

powerline 使ってみたいと思ってたけど
・全部の環境でfontにパッチ当てられるわけじゃないので悩ましい。
・そんなことより将棋指そうぜ!
というような感じで腰が重くて結局使ってなかった。

最近powerlineと同じようなやつでvim-airlineっていうのがあることを知って、評判も良さそうだったので使ってみることにした。
bling/vim-airline · GitHub

powerlineとvim-airlineの違いそんなに分かってないけど、vim-airlineは純粋なvim scriptで書かれてるとか(powerlineはpython?)なんか読み込みが速いらしいとかUnite.vimの色付けも良い感じになるとかあるそうです。

でvim-airline入れてみたけど超かっちょいいステータスライン表示になるまで色々あった。

既存の設定とぶつかるとこ

vim-airlineをインストールした直後
f:id:dameninngenn_owata:20130823161824p:plain

自分でstatuslineの設定とか書いてたのでそっちが優先されてる(?)っぽくて特に変化なし。

set statusline+=%=\ %{g:HahHah()}\ %m%r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}\ %l,%c%V%8P

を消して、あと buftabs っていうバッファで開いてるファイル名をstatuslineに表示するためのpluginも使ってたのでそれも外した。

256色

ここまでで
f:id:dameninngenn_owata:20130823161831p:plain

あれ、色・・・って状態。
色々調べてたらいくつか言及されてた
Themes don't work for me · Issue #26 · bling/vim-airline · GitHub
Set t_Co=256 forcely by mattn · Pull Request #112 · bling/vim-airline · GitHub

で自分の環境のを :set t_Co でみてみると t_Co=8 だったので、ちょうどいいし .vimrc に set t_Co=256 を追加した。colorschemeの設定の前に書かないといけなみたいなのをみたけど逆にその後ろに書かないと自分の環境だとダメだった。よくわかんない。
Vim-users.jp - Hack #64: 256色ターミナルでVimを使用する

set t_Co=256 をしたあと
f:id:dameninngenn_owata:20130823161835p:plain

おー、カラフr・・・あれ?なんか違う?
サンプルにあるようなかっちょいい色使いじゃなくなんか微妙な色。themeが違うんかなと思って全部試してみたけどどれも何か違うあるぇ〜ってなった。

環境としてはscreen + iTerm2使ってて、iTerm2の設定で Profiles->Terminal:Report Terminal Type が xterm-256 じゃなくて xterm になってた。ずっとまえに xterm-256 とかにしたような記憶あったのに xterm のままだった。

そこをxterm-256にすると
f:id:dameninngenn_owata:20130823161847p:plain

おー、これやこれ!
で安心したのも束の間でローカルのmacで同じようにやろうとすると、また微妙な色使いに戻ってしまった。

macで使ってたscreenが256色対応してない感じだったので256色対応するようにしてmakeしたら良い感じになった。

最終的に

buftabsのかわりにvim-bufferlineを使うようにして、ついでにvim-fugitiveも入れた。
f:id:dameninngenn_owata:20130823161852p:plain

fontもちゃんとやればもっとかっちょよくなると思います。

ターミナルでカジュアルに使えるタイマー書いた

皆さんカップ焼きそば好きですよね。僕も大好きです。一平ちゃん最高です。

カップ焼きそばと言えばお湯を入れて3分待つのが一般的だと思います。皆さんはどうやって時間計ってますか?僕はキッチンタイマーとか持ってないし買うつもりもないのでアナログ時計の針を見て時間計ってます。

ただ人の記憶というものは曖昧なもので「あれ、何分スタートやっけ。。。」となってしまうこともたまにあります。それはそれでいつもと違う一平ちゃんを堪能できるのでいいのですが、ノウハウが溜まりきってしまうとやはりベストな時間というものが見えてくるので一番おいしく食べられる時間ぴったりでお湯を捨てられるのが良いです。

なのでターミナルでサッと使えるタイマー書いた。
https://gist.github.com/dameninngenn/5865715

f:id:dameninngenn_owata:20130626234422g:plain

文字の大きさと色は変えられます。
f:id:dameninngenn_owata:20130626234436g:plain


Perl5.8以降あたり入ってたらたぶん下の一行で動く気がします。

% curl https://raw.github.com/gist/5865715/timer.pl | perl

時間指定したり色とか変えるなら

% curl https://raw.github.com/gist/5865715/timer.pl | perl - --color=green --scale=5 --timer=180

上のgistのtimer.plを信用しきってる場合は.zshrcとかにalias設定しとくといざという時役に立つかもしれません。

alias ippei='curl https://raw.github.com/gist/5865715/timer.pl | perl - --color=green'

もしかしたらtimer.plの中身がある日急にoppai時計になったりするかもしれませんが。

あとLTとかの時間測りたいけどタイマーアプリ入ってなくて急いでる時とかにも使えますね!

ちなみにデフォルトの時間が2分30秒なのは「お湯を入れてPCの前に戻ってくる時間」と「時間きてからお湯を捨てるまでの時間」を考慮してさらに3分より少し前にお湯を捨てるぐらいでちょうどいいという好みのためです。