April 29(Sun), 2012
CakePHP1.3xでSecurity Componentを使用せずにCSRF対策する
CakePHP1.3xで、二重送信防止も兼ねてCSFR対策をしようと思ったけれど、Security Componentの使い勝手が悪かった。
極める!Security Component (CakePHP Advent Calendar 2010 24日目) : akiyan.com
仕方がないのでSecurity Componentを使わずにパーフェクトPHP に載っていたコードを参考にして対応した。
改めてパーフェクトPHPは良い本だと思った。
app_controller.phpにイカのコードを追加する。
<?php /** * CSRFトークンを生成 * * @param string $form_name * @return string $token */ function generateCsrfToken($form_name) { $key = 'csrf_tokens/' . $form_name; $tokens = $this->Session->read($key, array()); if (count($tokens) >= 10) { array_shift($tokens); } $token = sha1($form_name . session_id() . microtime() . mt_rand()); $tokens[] = $token; $this->Session->write($key, $tokens); return $token; } /** * CSRFトークンが妥当かチェック * * @param string $form_name * @param string $token * @return boolean */ function checkCsrfToken($form_name, $token) { $key = 'csrf_tokens/' . $form_name; $tokens = $this->Session->read($key, array()); if (false !== ($pos = array_search($token, $tokens, true))) { unset($tokens[$pos]); $this->Session->write($key, $tokens); return true; } return false; }
イカのようにして使用する。
[app/controllers/squid_controller.php]
<?php class SquidController extends AppController { var $name = 'Squid'; function geso() { if (!empty($this->data)) { // CSRFトークンか妥当かチェック if (!$this->checkCsrfToken('geso', $this->data['token'])) { exit('CSRF.'); } } // CSRFトークンをビューに渡す $this->set('token',$this->generateCsrfToken('geso')); } }
[app/views/squid/geso.ctp]
<?php echo $form->hidden('token', array('value' => $token));
ちなみにCakePHP2.xだったら、Security Componentが余計なことをしなくなり、CSRF対策とフォーム改竄対策もそれぞれオプションでOFFにできるらしい。
April 22(Sun), 2012
家賃について
前回「東京への引越しに役立った情報まとめ」とかいう記事を調子に乗って書いたけど、最近早くも引っ越したい衝動に駆られている。
やはり家賃があまりにも高い。
というのも、入社してから一人暮らしをしている同期の何人かに住んでいる部屋の家賃を聞いてみたけど、僕の部屋が圧倒的に一番高かった(僕より千円程高い人が存在するというのも聞いたけど直接は話していないので都市伝説かもしれない)。
しかも、周りの同期の8割くらいは院卒で初任給が僕より2万くらい高いはずなのに、家賃は1〜2万くらい安いという信じられない状況となっていた。
確かに、勤務地までのアクセスのしやすさや部屋のグレードは、高いだけあって僕の部屋のほうが優れている点が多かったけど、それでも1〜2万くらい安くても、そんなに大差ない人も多かった。そもそも僕の部屋の家賃で独立洗面台が無いのは痛いし、何故かついている床暖房はいらない。
というような感じで僕の情弱ぶりが露呈されてしまったので、利用しているプロバイダのYahoo!BBのキャッシュバック4万円が返って来る1年後くらいには、真剣に引越し先を探し始めたいと思う。
April 01(Sun), 2012
東京への引越しに役立った情報まとめ
引越し作業(特に荷物の梱包とか)は物凄く大変だった。このまま京都から脱出できず何もかもが破綻してしまうのではなイカ、と何回か挫けそうになったけど、最終的には何とかなった。母親が手伝ってくれたのが大きかった。僕の秘蔵のイカちゃんグッズを見る目が少し気になったけど、とにかく本当に助かった。
敷金も2万5千円くらい返ってきた。
引越し業者に払った金額は、会社からの引越し補助もあったので4万円くらいだった。
机とか棚は東京に持って行くと一つ1万2、3千円くらいする感じだったので、全部京都で処分して東京で新しいものを買った。
部屋を探す上で一番優先したのは「勤務地に近いこと」という条件だった。
だけど、僕の勤務地の周辺は不動産会社の人曰く日本一高いらしく、実際京都とは比較にならないほど高かった。
なので、最初は勤務地まで1時間10分くらいのところに決めかけたけど、次の日の朝に通勤をシミュレーションしてみたところ、これを毎日繰り返したら直ぐに出社拒否に陥りそうだと感じたのでやめた。
そもそも僕は今まで電車通学をしたことがなく、大体15分以内で通えるような学校ばかりだった。しかも直近の専門学校は歩いて5分と凄まじく近かったので、そこからいきなり1時間10分程の、東京の地獄のような電車での通勤は少しハードルが高すぎるような気がしたので、予算をもう少し上げて電車一本(勤務地まで25分くらい)で行けるところに決めた。
一般的には手取り収入の3割前後が家賃として支払える目安らしいけど、今回の物件は4割を少し超えるくらいだった。安くて遠いところに住んで、余裕がでてきたら高くて近いところに引っ越すよりも、余程のことがない限り当分の間はここに住むという前提で、そこそこ高いけど近くて良さ気な部屋を選んだ。というのも、また引っ越すと初期費用とかに何十万もかかるし、そもそも引越し作業自体をもうできるだけしたくないと思っていたので、築10年以内でSRC造で分譲賃貸な感じの良さ気な部屋にした。
実際、部屋のグレードは明らかに京都のやつより良いと思う。家賃も1.6倍くらいになったけど。
で、最近やっと少しだけ落ち着いてきたので、今後のためにも、引越しする際に役に立った情報をまとめておきたいと思う(正直もう本当に2度と引越し作業をしたくはないけど)。
取り敢えず、ここ見ておけば何とかなると思う。
たった7つのチェックで完了!引越しで必要になる書類・手続きチェックリスト:Blogで本を紹介しちゃいます。
不動産会社情報の検索|賃貸や不動産・住宅情報検索サイト【ホームアドパーク】
賃貸探しで不動産屋さんを攻めるたった一つのポイント - concretism
物件探しから公共料金の手続きまで 覚えておきたい引っ越しのポイント - はてなブックマークニュース
絶対に借りてはいけない部屋・物件 働くモノニュース : 人生VIP職人ブログwww
VIPPERな俺 : 【賃貸】1人暮らしする時の部屋探しのコツ
引っ越すときの部屋探しの時のコツって何よ? 働くモノニュース : 人生VIP職人ブログwww
あとプロバイダ。何か今だと合計で5万円キャッシュバックしてくれるみたいなので、Yahoo! BB 光 with フレッツにした。
Yahoo! BB フレッツ光 40,000円キャッシュバックキャンペーン|光回線・フレッツ光 − Yahoo! BB
次に引っ越す機会があった際には気をつけたいこと
駐輪場はちゃんと空きがあるかどうかも確認しておく
駐輪場は存在すると不動産会社の人が言っていたので今回の部屋を選んだけど、実際に引っ越して来てから貼り出されていた張り紙をよく見てみたら「現在駐輪場の空きはありません。2年に一度抽選で〜」とか何とか書いてあったので、これはやばいと思ったけど、つい最近、丁度一台分の空きが出たらしく何とかなった。本当に命拾いした。
色々と早めに動く
この時期は何かと色々と混み合ってしまうみたいなので早めに動く。
今回失敗したのがプロバイダの申し込み。一応引越しの2週間前くらいには申し込んだけど、結局引越し後3週間くらいは固定回線が使えない、ということになってしまった。なので今は仕方なく、前の記事でも触れたe-caのレンタルWiMAXモバイルルータを部屋でも使ってるけど、今の住まいではアンテナが一本しか立たないので、あまり速くはない。というか外でもWiMAXは思っていたより繋がらないことが多い気がする。
あと、京都の時は引越し業者が洗濯機の設置をやってくれたけど、今回の引越し業者はやってくれなかった。なので自分でやろうと思ったけど、排水口が洗濯機の真下に近いところにあって手持ちのホースだけでは設置できず、自分で部品を揃えるのも面倒なので、ヤマトホームコンビニエンスというサービスを利用してやってもらった。部品料込みで5000円くらいだった。
実はヤマトがこんなサービスをやっているとは知らなかったので、最初は他の似たようなサービスを提供する業者にやってもらおうとしたけど、この時期はどこも混み合っているらしく、2週間後とかコインランドリー必須な時期を掲示してくる業者ばかりだった。
そんな中、ヤマトホームコンビニエンスは申し込んだ日の翌日にやってくれた上、他の業者と比較して料金も安かった。他にも掃除や重い家具の移動なんかもやってくれたりするらしいので、一人暮らしをする上で知っておいて損はないサービスだと思う。
生活サポート《クロネコヤマト公式HP》:暮らしを便利に!快適に!
以上です。
明日は入社式なので今日は改めて通勤をシミュレーションしておいた。僕は頻繁に遅刻するほうだけど、さすがに入社式に遅刻するのはやばいので今日は頑張っておいた。
March 13(Tue), 2012
CakePHPでViewに渡す変数を自動的にエスケープする(XSS対策)
CakePHPにはViewに渡す変数を自動的にエスケープしてくれたりする機能が無い雰囲気だったので、調べた記事に載っていたコードを使用させてもらおうかと思ったけど、Controller::setメソッドの第一引数に連想配列を渡した場合の対応がされていないようだったのでしてみた。
app_controller.phpにイカのメソッドを追加する。
<?php // setメソッドをオーバーライド public function set($one, $two = null, $escape = true) { if ($escape) { if (is_array($one)) { $one = $this->escape($one); } else { $two = $this->escape($two); } } return parent::set($one, $two); } // エスケープ private function escape($value) { if (is_array($value)) { return array_map(array('AppController','escape'), $value); } /* CakePHPではあまり機会がないような気がするけど オブジェクトの場合はアクセス可能な変数だけエスケープする (何か中途半端なので何もしないほうが良いかもしれない) */ if (is_object($value)) { foreach ($value as $key => $v) { $value->$key = $this->escape($v); } return $value; } return h($value); }
March 05(Mon), 2012
緊張感を持って開発するために外で作業する
ちょっと前に、僕の部屋の作業スペースはトリプルモニタなので色々と凄く捗るという内容の記事を書いたけど、あれは事実ではなかった、ということに最近気づいた。
というのも、最近色々あってアルバイト先のオフィスが使えないので家で作業することが多いんだけど、自分でも驚くほどに捗らなかった。スケジュール的には少し遅れていて危機感も抱いているというのに捗らなかった。僕の部屋には色々な誘惑が存在するので、それが原因の一つではあると思うけど、それでも今までは家でもある程度は普通に作業できていたのに、最近は本当に捗らなくなってしまった。原因は未だによくわかってないけど、まあ色々あるんだと思う。原因はともかく、このままではやばいと思ったので、ここ1、2週間は出来る限り外で作業するようにしている。
その結果、やっぱり外での作業のほうが良いと思った。
家と外での作業で一番違うと感じたのは緊張感の有無だった。カフェとかで作業していると凄く人に見られているような気がして、凄く緊張感が出て作業が捗る。勿論、ほぼ間違いなく誰も僕なんかを見てはいないんだろうけど、周囲に見知らぬ人間が大勢いるという環境は、やはり凄く緊張感が生まれると思う。さらに、僕の自意識過剰な性質も緊張感の増幅に活かされているように思う。その緊張感によって家作業と比較して3倍くらいのパフォーマンスを発揮できているような気がしないでもない。あと、最近ノマドとか流行っているけど、やっぱりカフェとかで作業するのは個人的に何か格好良い気がする。その悦にも浸ることができて良い。
それで、最近、京都駅周辺で作業した場所で良い感じだったのが以下の2ヶ所。
このポータルカフェはJR京都駅の中央改札口を降りてすぐという、すごくアクセスしやすい場所にある。電源は勿論、有線LANも完備されている。さらにメニューの中にレッドブル(400円)が存在するのもポイントが高いと思う。僕はレッドブルがめちゃくちゃ好きというわけでもないけど、普通にコーヒーを飲んで作業するよりギークな感じがするので、ここ最近は3日に一度くらいの頻度で、レッドブル1本で4時間くらい作業したりしている。そういう雰囲気作りは大事だと思う。なので費用は、4時間でレッドブル代400円+僕は自転車で駅に向かうので駐輪代150円で550円程。微妙に高いような気もするけど、ここで得られる緊張感には、それだけの価値があるような気がする。
もう一ヶ所が僕の通う学校。家から自転車で5分で行けるのが良い。電源、無線LANも完備されている。ただ勿論ここは学生しか利用できないし、時間も17時までとなっている。それと知り合いに会ったりすると集中力が切れてしまったりする。さらに今は春休み中なので学生が少なく得られる緊張感も薄め。ただ、費用はかからないし凄まじく近いのでポータルカフェと交互くらいに利用したい感じ。ちなみに僕は今月で卒業してしまうので、今のうちに支払った設備費を少しでも多く回収しておきたいと思っている。
それと最近行った東京では定番だけど、東京駅内にあったスタバと、東京駅から歩いて5分くらいのルノアールが良い感じだった。ただ、この2店(特にスタバ)はかなり人が多く、電源が使えるテーブルが常に確保できる感じではないので、バッテリーに不安がある人は注意したほうが良いと思う。あと、レッドブルはメニューに無い。
スターバックス・コーヒー JR東京駅 八重洲北口店 [東京/グルメ] - Yahoo!ロコ
ルノアール 東京駅八重洲北口店 [東京/グルメ] - Yahoo!ロコ
どこかでシングルモニターのが捗る的な記事を読んだような気もするけど、トリプルモニター自体は悪くないと思う。可能であればカフェで下のような環境を構築して作業してみたい。


