犬ターネット
Archive : 2012年12月
うん
スキンシップって言葉は誰が考えたんだろうか、とても大事な言葉だ。
クリスマス
娘の喜ぶ顔が見たいがためにケーキを買ったりプレゼントを買ったり。誰かのためにこんなに一生懸命になるなんて10年前には想像できなかったな。
親友は「お前は人に興味がなさすぎる、他人の人生なんかどうでもいいだろ笑」と見抜いていたけれど、今は違うぜ。
初観劇
娘連れて宝塚劇場へ行ってきた。
拍手や暗転のタイミングでびっくりして毎回泣きそうになるし途中で飽きちゃって「アンパンマンみたいよー」しか言わないマシーン化したんだけど、まあ経験値詰んだと思って勘弁してくれ。周りの人には大変ご迷惑をおかけしました。でも隣のお兄さんすごいやさしくて助かった。ありがとうお兄さん。
画像は宝塚劇場の絨毯。
愛
すげえ昔、100年くらい昔に1回風俗行ったことあるんだけど、なんでこの女性はおれのチンポをボーッとなめてんのかなとか考えてたら全然イケなくて、なんかセックスとかそういうのって愛がないとダメなんだなって思ってからもう風俗行かなくていいやってなったんだけど、じゃあなんでオナニーはすぐイケるのかといえば、俺は俺を愛しているからです。
トーソズがレコーディングしてて来年「Code Red」ていうアルバム出すぜ
っていうメールが20年くらいつるんでる友人から届いて「うお、マジで、買うわ」って返した。
そいつからメールくるの多分3年ぶりくらいなんだけど、一生そんな感じでやりとりしてくんだろうなとぼんやりと思った。
いい関係だ。
セックス・ドラッグ・動物の赤ちゃん
っていうの、1日に4回くらい思い出すから、ヴォルタさんすげえやって思った。
Redis で prefix つけると、キー一覧引っ張ってきてループ処理するときに面倒
Redis + phpredis 環境で、setOption で prefix つけたデータ操作する場合、
キー一覧ループしても値が取れない。redis-cli で monitor してみると
ってなってて、終わり3行のGETコマンドで「TEST:TEST:key1」ていう prefix 重複したキーを叩いてる。
setOption で prefix つけてキー一覧使う場合は、
みたいに prefix 部分カットしないと想定した結果が得られない。
GAE for Python で web cron 実行させる
GAE for Python で web cron 実行させるまでざっくり。
まず webcron.py を作成。実行させたいURL に HTTP リクエストおくるだけの簡単なもの。
次に app.yaml を作成。「yourappname」は環境に合わせて。「login: admin」設定で外部アクセスを拒否。
最後に cron.yaml を作成。「schedule: every 1 hours」で1時間毎に webcron.py を実行させる。
上記3つを同じディレクトリ内(例えば /path/to/webcron/* )に作成して、
でデプロイして終わり。詳しくは以下。
Python 用クローンを使用したスケジュールされたタスク - Google App Engine — Google Developers
PHPで複数URLに並列でリクエスト出すやつ
web上のサンプル動かないのが多かったから、諸々調整して動くようにしたやつがこれ。
たとえば、こういう3秒スリープする PHP ファイルに対して、
こういうスクリプトを実行すると、
こういう結果になる。
foreachで回したほうは3秒毎のタイムスタンプになってるけど、fetch_multi_url 使ったほうは全部同じタイムスタンプになってて、並列でアクセスしに行ってるのがわかる。
絵本読んでた
娘が居間で「なんたらかんたら~」って喋ってたので見に行ったら、この前買ってあげた「しらゆきひめ」の絵本を読んでいた。
指さし確認しながら声に出したり。途中読めない言葉があると適当に補完して読んでみたり。
なんとか最後まで読み終えたところで、こっちを見て(ねえねえほめて!)光線だしてきたので、ガッツポーズ出したら満面の笑みで飛び込んできた。
生まれて3年、いつのまにかいろいろできるようになってきてる。
twitterの片思いとかとるやつ作ったときの工夫みたいなもん
twitterの片思いとかとるやつ 作ったときの工夫について。
結果キャッシュ
アクセス都度 Twitter API 叩きに行くのはバカらしいから、ログインと同時に以下の情報だけ API 叩いてセッションにキャッシュしてる。
これで、セッション参照して比較するだけで以下情報が取れる。
screen_name 一覧も、初回だけAPIアクセスして、結果キャッシュするようにしてる。
データ圧縮
各 user_id 一覧や screen_name 一覧 ってこういう配列で持たせてるんだけど、
セッションに格納する場合はシリアライズされて以下みたいな文字列になる。
これ、user_id が1000個とかになると結構容量食うから、配列→文字列に変換してる(user_id も screen_name も仕様上は「,」が含まれないから大丈夫)
シリアライズするとサイズが約半分に。
仕上げは gzdeflate 使って圧縮。以下サンプル。
なんでこんなことしてるかっつうと、appfogの無料プランってストレージやメモリに余裕がないから、削れるところは削ろうっていう考えから。
つっても、ディフォルトのセッションハンドラだと gzdeflate はできないから、独自にセッションハンドラ作んないとだめ。前のエントリ参照。
appfog + PHP 環境でセッションを使うには
appfog + PHP 環境だとファイルベースのセッション管理ができない。
でも PHPのRedis拡張 が使えるようなので、ものは試しで Redis をセッションストアとして使ってみる。
まずは、WEBコンソール( https://console.appfog.com/apps/[app名] )から Redis 追加しとく。
以下コードで Redis のホスト名やらポート番号やら取れるので、ini_set で設定して session_start() かませばOK、
と思ったら「Failed to write session data」ていうエラーが出まくってセッション書き込みに失敗する。なんでだろ
結局、以下のような独自セッションハンドラを作った。PREFIXとTIMEOUTハードコードしてるけどコンストラクタ引数に加えたほうがいいかも。
で、こんな感じで呼び出したらうまくいった。
あー
知り合いが離婚することになった。
直接の原因は奥さんの浮気なんだけど、なんで浮気してしまったかというと、夫が完璧すぎて毎日プレッシャーを感じていた、ミスしても怒らずにカバーしてくれるその優しさが更に私を追いこんだ、あなたには隙がないから責めようがない、もう苦しい、逃げたい、とのことだった。
美男美女の夫婦で、子どもも生まれたばかりで、傍目にはとても幸せそうに見えたんだけれども。
夫婦はお互いどこかに隙や弱みを見せておいたほうがいいんだなあ。
twitterのディフォルトアイコンは7種類
あら綺麗。
dataスキームを使ってjavascriptを実行させる
imgタグでdataスキームを使ってるのはよく見かけるんだけど、javascriptタグでもdataスキームを使えるのか...
ってファイル作って
って書くところを、dataスキームを使えば、
って書ける。以下実際の例。
---
っていうやりかた応用してtumblrの穴を突いたんだって↓
Tumblrでウイルス投稿が大量流通、閲覧すると自動でリブログ - ITmedia エンタープライズ
---
追記。
tumblr元々テーマ編集でscript書けるし記事内のscriptも別に真剣に塞いでいるわけではないように見える。XSSではなくてreblogがCSRFで出来てたのが問題の根本。Sophosはbase64で迂回とかいってるけど。
— malaさん (@bulkneets) 12月 4, 2012
シングルとダブル
トイレットペーパー、間違ってダブルを買ってきたらものすごい勢いでなくなっていくから、薄さって大事だなと思った。