やかん部@FLATz

[PHP]の記事一覧

技術系のtweet – ~2010/01/14

2010年01月18日(月)10:00|nasu|PHP, Perl, ひとりごと, やかん部, 技術情報, 未分類このエントリをdel.icio.usに追加このエントリをはてなブックマークに追加

那須です。


最近、その時々で調べたtipsをtwitterでつぶやいたりしてます。主に自分の備忘メモとして使っています。後日検索することがあるかといえば。。。今のところは特にないのですが、とはいえ埋もれてしまっていざというときに使えないのは残念なので、こちらにまとめておこうと思います。


私の全てのつぶやきはこちら


Excel


=COUNT(INDEX(1/(MATCH(A1:A39,A1:A39)=ROW(A1:A39)),0)) a1からa39の中でユニークな値の数を算出。理解できないけど、ひとまず動く #Excel


1/MATCH() が未だによくわからないなぁ


perl


$SIG{INT}=”IGNORE”;$p=fork;if($p){wait;}else{$SIG{INT}=sub{$a=1};sleep 30;sleep 5;if($a){die}} SIGINTすると子プロセスの最初のsleepがリセットされる #perl
perl -n -l -e ‘print +(split(/\t/))[2]‘ filename cut使えって話 #unix
perl -n -l -e ‘print +(split(/\t/))[2]‘ filename タブ区切りの3列目だけ抽出 -n の使い道 #perl
[perl] \b 単語境界 $& マッチ変数 正規表現構文
[perl] perl -i.bak -wnl -e ’s/A/B/g; print’ file 上書き編集
[perl] -l 改行 -n 暗黙ループ -p 読み込みループ perl -wpl -e ” file1 file2 イミフ


UNIX


PAGER JLESSCHARSET=japanese /usr/bin/less -isr 日本語文字化けの時man.confにこれ書く。書けなければ man -C ~/man.conf とかする #unix
1:06 PM Dec 25th, 2009 from web
[bash] command 2> /dev/null STDERRの出力を捨てる。
[unix]grep -L 文字列が含まれないファイル一覧を返す GNU grep
[unix]find . -type f -print | xargs ls -lrdt | tail -l xargsの処理できる引数の数を越えると期待通りにいかない


MySQL


[MySQL] INSERT INTO table () VALUES () ON DUPLICATE KEY UPDATE を使ったときに、UPDATE側が作動すると affected rows が 2になる。これにはめられました。
[MySQL] order by で DESCとASCが混在するとインデックス利きません
[mysql]auto_incrementの解除にはalter table changeを使う


affected rowsの件は本当にハメられたましたよ。というかこれMySQLのバグじゃないのかな…replace into が affected rows = 2 になるのは、実質 delete & insert かけるので正しいと思うけど、insert on duplicate はinsert失敗してupdateかかるわけだし、affected rows = 1 が正しい気がする


PHP


[PHP]foreach内ではbreakが効かないらしい。初めて知った


よく考えたら、知っていた気もする。


SVN


[svn] function svnvimdiff() { tmp=[file]; vimdiff $1 `svn cat $1 > $tmp ;ls $tmp;` && rm -f $tmp; } vimdiffで名前付パイプがうまく機能しないとき用
[svn] vimdiff [file] < (svn cat [file]) svnの差分をvimdiffで見る
[svn] svn diff --diff-cmd /usr/bin/diff -x "-b -E" svnでのdiffコマンドの変更とかに


svnvimdiff 重宝してます。


vim


[vim] :s/./&\r/g 行を一文字区切りで改行する。「あ\nい\nう\nえ\nお\n…」のような列を作るのに便利
[vim]:set noro リードオンリモードの解除。sambaとかにある共有ファイル開くときとかデフォルトで-Rしといて必要なときにこれ使うようにしようかなぁ
[vim]:compiler perl “-I”が指定できないのかな…
[vim]:set list 制御文字表示。常時はうざいから確認のときに使う

続きを読む


SymfonyでマルチプルFKの利用がしたい件(Symfony1.2-Doctrine)

2009年11月26日(木)10:37|amakata|PHP, symfony, やかん部, 技術情報このエントリをdel.icio.usに追加このエントリをはてなブックマークに追加

こんにちは、天方です。


最近、久しぶりにマルチプルFKが使いたくなりました。(本当は使いたくないのですが…)
Symfony1.2のDoctrineでマルチプルFKをしようとしたら、うまくいきませんでした。(注:Propelの場合はaddJoinではできないっぽいです。)
新規で設計するならいいんですが、過去の遺産にアクセスする時には必要なので、なにかしら対応方法があるとうれしいのです。


例えば、下記のように、idとsub_idがあるテーブルをリレーションでつなげる設定を書きたいのです。(実際にはこれはうまく動かなかったです…)


Parent:
columns:
id:
type: integer(4)
notnull: true
sub_id:
type: string(14)
notnull: true
Child:
columns:
id:
type: integer(4)
notnull: true
parent_id:
type: integer(4)
notnull: true
parent_sub_id:
type: string(14)
notnull: true
relations:
Parent:
local: parent_id, parent_sub_id
foreign: id, sub_id
type: one

私の環境だと、


  $q = $parent->createQuery('p')
$q->innerJoin('p.Child c');
$q->execute();

と書きたいコードが実行時エラーになります。


とりあえず、下記のような感じでSQLを記述することでで対応しました。


$con = Doctrine_Manager::connection();
$stmt = $con->prepare('SELECT
id, sub_id
FROM parent p INNER JOIN child c ON p.id = c.parent_id AND p.sub_id = c.parent_sub_id');
$stmt->execute(array());

これだとSQLを書かなきゃいけないし、結果がオブジェクトにマッピングされてなくて、他と統一性が失われてしまうので面倒なのですが、いい方法はないだろうか…。

続きを読む


Page 1 of 2412345»...Last »

このページの先頭へ