array_chunk_pad的な

array_chunkって便利ですよね - てつじんにっき


なるほどー。この使い方は初めて見ました。
これは便利そう。

ただ一つ気になったのが、 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, '&nbsp;') as $chunk): ?>
 <tr>
<?php   foreach ($chunk as $fruit): ?>
  <td><?php echo $fruit ?></td>
<?php   endforeach ?>
 </tr>
<?php endforeach ?>
</table>

macbook pro 買ったよ。届いたよ。

なんか思ったよりでかかったけど開発環境として使いたかったのでこれで正解だったかな。

スペックは

ディスプレイ
15.4 inch, 高解像度, アンチグレア
CPU
2.53GHz Intel Core i5
MEMORY
4GB
HDD
500GBシリアルATA、5,400 rpm


で、とりあえずやった作業は

  1. chrome 入れた
    1. chromeroboform の extention を 入れた
  2. KeyRemap入れた - http://pqrs.org/macosx/keyremap4macbook/document.html.ja
    1. fn キーと control キーの配置を逆にした
  3. ランチャー(alfred) 入れた
  4. システム環境設定 > 共有 > コンピュータ名の変更
  5. mail の設定
  6. cocoa emacs 入れた - http://www.emacsformacosx.com/
  7. .bashrc, .emacs の設定
  8. homebrew の install
  9. 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年の今。今更感あふれる話題。
でもぜんぜん自分の中で解決してなかった。
完全無欠な答えがないのは分かってる。(うそ!ほんとは分かってるフリだけどね)
でもどういった場合にどういう手法をとるのが有効なのか?
みんないったいどうやっているの!?
ネット上での事例を調べて咀嚼したい。
そんなエントリ。

ネット上で見つけた参考になるリンク


上記を参考に、

  • テンプレートエンジンによって本当に完全に分離できるのか?
    • DreamWeaverなどのツールとの相性
    • if文は?for文は?name属性は?ボタンは?(ビューではaタグがいいけどロジック的にはPOSTにしたいのでinput type="submit"がいいなど)
    • テンプレートのフラグメント化はどう対応する?
  • webサービスは仕様が凍結するのか?
    • 運用フェーズでの問題点

といったところを切り口にしていろいろまとめたい。
ところだけどちょっと時間がないのであとで・・。