CakePHP ブラウザからのユニットテスト実行でNoticeが出て結果の表示がおかしくなる

Notice: ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush in /vagrant_data/vendor/cakephp/cakephp/lib/Cake/TestSuite/Reporter/CakeHtmlReporter.php on line 143

こんなNoticeが出てヘッダやらフッタが表示されなくなり、ハマったのでメモ。

原因は、PHPUnitのバージョンを最新の4.8.6にしていたため。3.7.38にしたら解決した。

本家にちゃんと書いてあったというオチ。

テスト — CakePHP Cookbook 2.x ドキュメント

Composer でのインストール

PHPUnit の最新バージョンは、 今のところ cake では動作しません:

"phpunit/phpunit": "3.7.38"

Knockout.js フォーム入力中に Enter キーでファンクション実行

検索ボックスなどで、入力中に Enter キーで検索を実行したいけど、submitではやりたくない場合などに。

<input type="text" placeholder="検索ワード" data-bind="textInput: query, event: {keypress: search}">

inputのdata-bindにtextInputを使うのがポイント。valueでのバインドだと一回目空で渡ってしまう。

function AppViewModel() {
    var self = this;
    self.search = function(d,e){
        // enterキーを拾う
        if (e.keyCode === 13) {
            // 何か処理
        }
        return true;
    };
}

ko.applyBindings(new AppViewModel());

eclipseが起動の途中で止まったときにした対処

環境は、OSX 10.9.5、eclipse 4.4。 eclipseを起動すると、「org.eclipse.mylyn.tasks.ui」のところで止まったままとなり、起動しない。

こうなると強制終了するしかない。 「eclipse -clean」して起動してみるも状況は変わらない。

引っかかっているmylyn関係のファイルを削除しても改善しない。

$ rm -rf workspace/.metadata/.plugins/org.eclipse.mylyn.tasks.ui 
$ rm -rf workspace/.metadata/.plugins/org.eclipse.mylyn.bugzilla.core/ 
$ rm -rf workspace/.metadata/.plugins/org.eclipse.mylyn.bugzilla.ui/ 
$ rm -rf workspace/.metadata/.plugins/org.eclipse.mylyn.context.core/

で、いろいろ試していたところ、「.snap」となるファイルをリネームしたら無事起動するようになった。

$ mv workspace/.metadata/.plugins/org.eclipse.core.resources/.snap workspace/.metadata/.plugins/org.eclipse.core.resources/snap_back