調査したい
http://www.phpactiverecord.org/
と
http://framework.zend.com/manual/ja/zend.db.table.html
を使って
それっぽい業務モデルをActiveRecordパターンとTableDataGatewayパターンで実装してみて比較したい
mac で iTerm や emacs を自分的に快適に使う設定
※screenのための設定なども追記しています。
自分はemacsユーザ。
コントロールキーは配置的にfnキーにしたい。
メタキーは配置的にcommandキーにしたい。
(optionキーはどうも慣れなかった)
ただし普通にcommandキーを潰してしまうと、
command+tab(アプリ切り替え)
command+v(ペースト)
command+space(ひらがななどの変換)
などの基本的なショートカットまで使えなくなってしまうのでそれは避けたかった。
ネットに埋もれる先人たちの知恵を拝借した結果、
以下のように設定することにした。
KeyRemap4MacBookを使ってコントロールキーとfnキーを入れ替える
- Change Control_L Key (Left Control)
- Control_L to Fn にチェックを入れて有効に
- Change Fn Key
- Fn to Control_L にチェックを入れて有効に
iTerm のキーボード設定を追加する
ブックマーク > プロファイルの管理 > キーボード設定 から
キーの組み合わせ | 動作 | メモ |
---|---|---|
cmd-shift-hex code 0x25 | ^[を送信 % (!) | emacs Query replace |
cmd-shift-hex code 0x3c | ^[を送信 < (!) | emacs ページ一番上への移動 |
cmd-shift-hex code 0x3e | ^[を送信 > (!) | emacs ページ一番下への移動 |
cmd-hex code 0x62 | ^[を送信 b (!) | emacs 後の単語への移動 |
cmd-hex code 0x64 | ^[を送信 d (!) | emacs 単語の削除 |
cmd-hex code 0x66 | ^[を送信 f (!) | emacs 前の単語への移動 |
cmd-hex code 0x67 | ^[を送信 g (!) | emacs Goto line |
cmd-hex code 0x6c | ^[を送信 l (!) | emacs lowercaseへ変換 |
cmd-hex code 0x75 | ^[を送信 u (!) | emacs UPPERCASEへ変換 |
cmd-hex code 0x77 | ^[を送信 w (!) | emacs リージョンコピー |
cmd-hex code 0x78 | ^[を送信 x (!) | emacs コマンド入力 |
ctrl-num-← | ^[を送信 [5D (!) | screen 右のスクリーンへ切り替え |
ctrl-num-→ | ^[を送信 [5C (!) | screen 左のスクリーンへ切り替え |
ctrl-shift-num-← | ^[を送信 OD (!) | 別のscreen 右のスクリーンへ切り替え |
ctrl-shift-num-→ | ^[を送信 OC (!) | 別のscreen 左のスクリーンへ切り替え |
commandキーをメタキーに変えてしまうのではなく
よく使う組み合わせのみ登録する方針にしました。
.screenrc
bindkey "^[[5C" next bindkey "^[[5D" prev
別の.screenrc
bindkey "^[OC" next bindkey "^[OD" prev
256色対応
http://d.hatena.ne.jp/milk1000cc/20090205/1233792728
をやりました。
array_chunk_pad的な
なるほどー。この使い方は初めて見ました。
これは便利そう。
ただ一つ気になったのが、 array_chunk と array_pad で分割数の 2 が重複して出てくるところ。
調べてみたら array_chunk には足りない要素を埋めるための引数、機能がないんですね。あってもよさそうなのに。。
まぁでも以下のように簡単なラッパ関数を書けばいいかな。
<?php function array_chunk_pad(array $input, $size, $pad_value, $preserve_keys = false) { $chunks = array_chunk($input, $size, $preserve_keys); $chunks[] = array_pad(array_pop($chunks), $size, $pad_value); return $chunks; } $fruits = array( 'apple', 'orange', 'strawberry', 'banana', 'cherry', ); ?> <table border="1"> <?php foreach (array_chunk_pad($fruits, 2, ' ') as $chunk): ?> <tr> <?php foreach ($chunk as $fruit): ?> <td><?php echo $fruit ?></td> <?php endforeach ?> </tr> <?php endforeach ?> </table>
macbook pro 買ったよ。届いたよ。
なんか思ったよりでかかったけど開発環境として使いたかったのでこれで正解だったかな。
スペックは
で、とりあえずやった作業は
- chrome 入れた
- KeyRemap入れた - http://pqrs.org/macosx/keyremap4macbook/document.html.ja
- fn キーと control キーの配置を逆にした
- ランチャー(alfred) 入れた
- システム環境設定 > 共有 > コンピュータ名の変更
- mail の設定
- cocoa emacs 入れた - http://www.emacsformacosx.com/
- .bashrc, .emacs の設定
- homebrew の install
- iCal の設定(google calender との同期)
zsh, screen とかの設定はまだ全然できてない。。
地道にやっていこーっと。
phpで関数やメソッドの引数が配列でもそうでなくてもいいみたいなやつ
そういうのを実装するときに、
与えられた変数が配列じゃなかったときに配列に詰め込みなおす関数
<?php function force_array($var) { if (!is_array($var)) { return array($var); } return $var; }
上記のようなものを実装してそれを使っていたのだが、
単に
<?php (array) $var
とキャストすればいいだけってことにさっき気づいた。(某ソースを眺めていて)
おお、私はなんと無駄なことをしていたのか・・。
ただ微妙に挙動が違うので表にまとめる。
型 | 元の値 | キャスト後の値 | 上記のforce_array()後の値 |
---|---|---|---|
NULL | NULL | array() | array(NULL) |
bool | true | array(true) | array(true) |
int | 1 | array(1) | array(1) |
float | 1.1 | array(1.1) | array(1.1) |
string | "string" | array("string") | array("string") |
array | array(1, 2) | array(1, 2) | array(1, 2) |
array | array('k1'=>'v1', 'k2'=>'v2') | array('k1'=>'v1', 'k2'=>'v2') | array('k1'=>'v1', 'k2'=>'v2') |
object | new stdClass() | array() | array(new stdClass()) |
上記のように NULL と object のときの挙動が違った。
NULL を array にキャストすると 要素0、つまり空の array() になり、
object を array にキャストすると そのプロパティを持った連想配列になる。
詳しくは PHP: 配列 - Manual
objectを1つ、もしくは複数どちらでも引数に取れるような関数を作る場合は
キャストだと問題が起こりそうだな。
phpmatsuri
#phpmatsuri - Google 検索 で少し追っていただけなんだけどすごく面白そうだった。
見つけたスライドを貼っておく。
なんかうまくslideshareが埋め込めなかったのでリンクです。
webアプリでのデザイナとプログラマの分業にまつわるエトセトラ
2010年の今。今更感あふれる話題。
でもぜんぜん自分の中で解決してなかった。
完全無欠な答えがないのは分かってる。(うそ!ほんとは分かってるフリだけどね)
でもどういった場合にどういう手法をとるのが有効なのか?
みんないったいどうやっているの!?
ネット上での事例を調べて咀嚼したい。
そんなエントリ。
ネット上で見つけた参考になるリンク
- F's Garage @fshin2000 :HTMLコーディングと開発者の完全分業はできるのか?
- デザイナに eRuby を書かせるのは、あくまで次善策 - kなんとかの日記
- Re: 典型的なRails屋はERBを使うことに何の疑問を持っていない - kなんとかの日記
- http://d.hatena.ne.jp/t_yano/20061118/1163878403
- tenya.info
- デザイナーとsymfony : アシアルブログ
上記を参考に、
- テンプレートエンジンによって本当に完全に分離できるのか?
- DreamWeaverなどのツールとの相性
- if文は?for文は?name属性は?ボタンは?(ビューではaタグがいいけどロジック的にはPOSTにしたいのでinput type="submit"がいいなど)
- テンプレートのフラグメント化はどう対応する?
- webサービスは仕様が凍結するのか?
- 運用フェーズでの問題点
といったところを切り口にしていろいろまとめたい。
ところだけどちょっと時間がないのであとで・・。