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
時間あるときにプログラムちゃんと読んでみる。