index

2008年 4月
 
    1 2 3 4 5 6
  7 8 9 10 11 12 13
  14 15 16 17 18 19 20
  21 22 23 24 25 26 27
  28 29 30        
2008年 5月
        1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
  19 20 21 22 23 24 25
26 27 28 29 30 31  
2008年 6月
              1
  2 3 4 5 6 7 8
  9 10 11 12 13 14 15
16 17 18 19 20 21 22
  23 24 25 26 27 28 29
  30            

アレ

SimpleXML を使って XML をさくっと生成   ▽20080531a #プログラミング #PHP

……する方法についてはググれば山ほど出てくるので割愛(ぉ

なんかねーやってたら警告が.

Warning: SimpleXMLElement::addChild(): unterminated entity reference ほげほげ in ~~

で,調べてみるとどうも,SimpleXMLElement::addChild() でテキストデータを値としてエレメントを追加する時に, データの中の & とかをエスケープしてくれねーみたいです.

Bug #44458 Ampersand sign in SimpleXMLElement->addChild() causes incomplete XML

sergej at halogen-dg dot com: 追加データに & 入ってると警告でるんですが?

rrichards@php.net: あーそれバグじゃねーから.マニュアル嫁.& はエスケープしなきゃダメ.

えー……だって > とか < とかは自動的にエスケープされるじゃんよー. テキスト追加するのに & だけは手動でエスケープしてね,ってどういう仕様なのよー. ていうかマニュアルのどこにそんなこと書いてあんのよー見つかんねーよー.

んじゃ CDATA でぶっこんじゃうってのはどうっすかね? と思ってやってみたら, > とかだけはきっちりエスケープする仕様なので追加できません. 必要な事全部はやらないがしなくていい程度にはやるという PHP のうんこ仕様全開で困ります.

結局のところ…… htmlspecialchars() で & をエスケープしちゃうのが最速っぽいんだけど…… えー何それー……ダサー……

ハバネロ園芸 2008   ▽20080518a #園芸 #ハバネロ

今年もまた,母上様庭園を間借りしてハバネロを栽培してみております.

去年より大きな鉢を使っているので,去年よりもっと大きく育つのではなかろーか.

ついでに母上様はピーマンとししとうを買ってきて,一緒に育てております.

あと「鷹の爪」とうがらしも一緒に.

ハバネロ,ピーマン,ししとう,鷹の爪……みんな同じ科の植物なんで,基本的にそっくりというか見分けが付かんw

中でもハバネロだけが他とだいぶ違う感じ.実の見た目はハバネロとピーマンがそっくりなんだけどなw

symfony の YAML 定義ファイルに sprintf のパターンを書くと.   ▽20080514a #プログラミング #PHP

app.yml に sprintf で使うパターン定義を書いて, 環境に応じてパスとかを自由に定義できるようにしようとしたんですがね.

prod:
 hoge_path: "/data/path/%1$s/%2$s/%3$s"

みたいな感じにして,%1$s とかに格納ファイルのディレクトリが入る,とか. 元々は PHP4 で define() 定数だったものを, symfony に移行して同じように app.yml で書こうとしたのだが……

symfony の定義ファイルには「定数を定義値に埋め込む」という機能があって,"%SF_SYMFONY_LIB_DIR%/hogelib" みたいに % で囲んだ値を置換してくれる.

当然,% で囲まれてる範囲内が定数でなければ何もしない……はずなのだけど, sfToolKit::replaceConstants() を見ると, % で囲まれた部分をわざわざ文字列として評価しなおしてるわけですよ.

これがどういう弊害を呼ぶかというと……

上記の sprintf パターン定義のような場合に, "/data/path/%1$s/%2$s/%3$s" の %1$s/% がまず評価されて, 1$s/ という定数は当然ながら存在しないのでこれを文字列として評価, すると $s という変数っぽい何かが出てくるのだが, sfToolKit::replaceConstants() スコープ内に変数 $s が存在しないんでひそかに内部エラーを起こし, 結果,"/data/path/%1/%2$s/%3$s" という文字列が app.yml の値として登録されてしまう.

とりあえずの対応としては……

  1. 順序指定子を使わず "/data/path/%s/%s/%s" みたく書く.
  2. 余分な指定子を挟んで "/data/path/%1$-s/%1$-s/%1$-s" とか書く.
  3. sfToolKit::replaceConstants() を改造して,"%\\1%" をシングルクォートで囲うように書き直す.

今回はとりあえず,余計な指定子を挟む方式でなんとか…… でもなぁ,これ,定数でなかった値を文字列として再評価することに何か正当性あるんだろーか? 普通にバグっぽい気がするなぁ.拙い英語で投げてみるかのう……

部屋の掃除をしたお   ▽20080511a #日記

スッキリー

昨日・今日あたり妙に気温が下がったので,冷暖房なしで肉体労働(←部屋掃除は重労働だとオモイマス)をしても快適な室温でよしよし.

ここんとこ……日記書いてなかった間くらいずっと,だらだらーっと怠惰に,昼に仕事して夜にネトゲやって寝る生活だったんで,気力がないと掃除もあまりしないので部屋に amazon のダンボールとかが蓄積して大変なことになっていたわけだが.

一念発起して(←繰り返すが部屋掃除は重労働なので始めるのには気力が大量に必要デス)掃除して部屋がある程度はすっきりしたので,ちょっとKIAI入れて日記でも書いてみますよっと.


ところでここ数年「ブログ」などともてはやされてるソレでは,なんかこー読者っていう存在を意識して,なんつーの自分のシュチョーってーの?とかを問いかけねばならねー雰囲気があったりしてアレうざいんですが,ウチのコレはブログじゃなくて「日記」ですから,こういうどーーーーでもいい事も書きますっていうかどーでもいい事しか書きません.えへ.

というわけで今日の日記.

起きて掃除して仕事して品川に移動して仕事して家に帰って仕事して日記書いて(今ここ),F1 見てネトゲやって寝ます.あれ? 今日って日曜日?

シェーバ洗浄液を買ってきた   ▽20080510a #日記

シェーバ洗浄液の買い置きが尽きたので,ヨドバシに買いに行ってみた.

買ってきた.

下の箱のやつは,なんか洗浄液と一緒に買うとポインヨが余分に付くよーって販売のオネーチャンが言うから……ついでに……

index