postgresql.conf がどこにあるかわからなくなった
ps auxw | grep postgres
でだいたいめぼしつく
symfony1.4 で現在の routing 名を取得する
$this->getContext()->getRouting()->getCurrentRouteName();
doctrine join して sfDocetinePager 使うと大量にSQLはかれる
$this->hasMany('ATable', array('local' => 'a_table_id', 'foreign' => 'id')); $q = $this->createQuery() ->select('self.id as id') ->from($this->_options['name'] . ' self') ->leftJoin('self.ATable at'); $pager = new sfDoctrinePager($this->_options['name'], $limit); $pager->setQuery($q); $pager->setPage($page); $pager->init();
ってあったときにこれで取得したレコードを foreach で回すと1レコードごとに1SQL発行しちゃう。
$this->hasMany('ATable', array('local' => 'a_table_id', 'foreign' => 'id')); $q = $this->createQuery() ->select('self.id as id, at.id as at_id') ->from($this->_options['name'] . ' self') ->leftJoin('self.ATable at'); $pager = new sfDoctrinePager($this->_options['name'], $limit); $pager->setQuery($q); $pager->setPage($page); $pager->init();
のようにしてjoinしてるテーブルの主キー(今回の場合はat.id)を明示的にselectすると解決。
なんでやねん。
jquery で複数の ajax 処理が終わったらある処理をしたいとき
var requests = [ { url: 'http://...', settings: { ... } }, { url: 'http://...', settings: { ... } }, { url: 'http://...', settings: { ... } } ]; var dfds = []; for (var i =0; i < requests.length; i++) { req = requests[i]; dfd = $.ajax(req.url, req.settings); dfds.push(dfd); } $.when.apply($, dfds).done(function() { //処理 })
ってやるとdedsの処理がすべて終わったら特定の処理を行うことができる。
jQuery.ajax のコールを行って、戻り値として得られる jQuery.Deferred を dfds 配列に格納して
$.when.apply($, dfds).done で全ての Ajax コールの終了を待機してる。
なるほど。
親クラスの中で小クラスでオーバーライドした関数や変数を使いたいとき
class parent { const test = 1; public function test() { echo self::test } } class child extends parent { const test = 2; } $hoge = new child; $hoge->test();
ってやると 1 が出力されちゃう。
これを 2 を出したいときは
class parent { const test = 1; public function test() { echo constant(get_called_class().'::test') } } class child extends parent { const test = 2; } $hoge = new child; $hoge->test();
ってやってあげると 2 が出る。
定数なら constant 使えばいいし
関数なら call_user_func 使えばOK(call_user_func(get_called_class().'::sendMail', $test) ッて感じ)
android 画像の上書きをしたい
上書きするときは一旦ちゃんとデータベースの情報も消さないと
ギャラリーのサムネイルで古いの表示されたりしちゃう
File saveFile = new File(attachName); if(saveFile.exists()) { //上書き保存の場合はデータベースの情報をいったん消す String[] proj = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, }; Cursor cursor = activity.managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, MediaStore.Images.Media.DATA + " = ?", new String[] { attachName }, null); if(cursor.getCount() != 0) { cursor.moveToFirst(); Uri deleteUri = ContentUris.appendId( MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon(), cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID))).build(); activity.getContentResolver().delete(deleteUri, null, null); } }
android で同期通信したかった
画像Aをよんで画像Bをよんでその後処理Cを実行したくて悪戦苦闘。
そんな時ここのブログに救われました。
http://ameblo.jp/programmer-samurai/entry-11518431582.html
時間あるときにプログラムちゃんと読んでみる。