ardggy's blog

Esc - Meta - Alt - Ctrl - Shift

php

複数のイテレータを合流させる(承前)

php

前は2つのイテレータを合流させるパターンを書いたが、3つ以上のイテレータも混ぜられないだろうか。 confluence(confluence($it1, $it2, $compare), $it3, $compare) とやれば複数混ぜられそうな気がする。 つまり畳み込みの計算で、array_reduce をつかえ…

イテレータを合流させる

php

ソート済みの2つのイテレータを混ぜ合わせて直列にできないだろうか、という動機 $x <=> $y); assert([0,1,2,3,4,5,6,7,8,9] === iterator_to_array(new LimitIterator($iter, 0, 10), $use_keys = false)); function confluence(Iterator $it1, Iterator $…

ジェネレータとSQL

SQL の結果をなめたいがメモリにぜんぶ展開すると out of memory になりがちなところ、 チャンクを次々とジェネレータで供給するというパターンを思いついた。これならほぼ定数メモリで大量のデータを処理できる。 ジェネレータは Iterator を実装しているの…

1行で終わる php-mode のインデント

いろいろ設定するより php-mode で提供しているのをそのまま設定するのがよかった。結局ソース嫁という話。 (add-hook 'php-mode-hook 'php-enable-default-coding-style) c-mode で c-set-style している場合、その設定を継承してしまう可能性があるのでそ…

PHP7 じゃなくても無名クラス

php

この場合は無名じゃなくて匿名のほうがあってるけど。

PHPUnit の @runInSeparateProcess でハマる

php

まとめ @runInSeparateProcess を書くときは、 define('PHP_BINARY', 'php') しておいて 場合によっては @preservedGlobalState disabled を指定しておく 経緯 PHPUnit は composer 経由でインストールして使用している。バージョンは 4.7.3 系。 テストメソ…