index

2001年 3月
      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  
2001年 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            
2001年 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      

アレ

  ▽20010404b #日記

 先月までの忙しかったのの反動で,今日は一日中くてくてと.

 相変わらず ColdFusion なわけですが. この言語,HTML に直接タグを埋め込む形式なわけで, HTML にスクリプトを埋め込む形式の PHP とどう違うかっつーと, CF タグと CF タグの間のホワイトスペースはそのまま valid な HTML として出力されてしまうところが大違い. 例えば変数ふたつに値を代入する文とか,


・ColdFusion
    <cfset var1 = "abc">
    <cfset var2 = "def">
・PHP
    <?php
        $var1 = 'abc';
        $var2 = 'def';
    ?>

...っとなるわけだが,CF の場合, この 1行目の > から 2行目の < までの「改行 + 行頭スペース」が, まるまるソースに残ってしまうわけだ. 世の中の大抵の CF サイトはこの問題を放置してるみたい. 試しに http://www.sirius.co.jp のソースを見てみるとわかる. これがどう問題なのかというと, ホワイトスペースに寛容な text/html とかを出してる分にはいいんだけど, CSV ファイルを出力しようなんて思うと大問題なんだな.

 で,これを抑止するための <cfsetting enablecfoutputonly="Yes/No"> つータグがあって, これは <cfoutput> による出力以外の全ての出力を抑止するタグなのだな. これがあれば空白行問題は解決?  えーっと...結論から言うと,微妙にダメ.

 例えば cfZZZ とゆー CF タグがあったとすると, ソースにおいてその前後に文があった場合...

    abc<cfZZZ>def

 つまりここで cfZZZ タグで何らかの処理をしてソースから単純にタグを除去すると, 前後の abc と def はくっついちゃって abcdef とゆーひとつの単語になってしまう. たぶんこれを避けるためだと思うけど, タグは除去されるのではなく「ひとつのスペース」と置きかえられる. 結果,

    abc def

...っとなるわけだ.そこで先ほどの <cfsetting> タグは, 「Yes と No で囲まれた範囲内の出力を抑止する」タグであるから, 出力の抑止はそのタグ自身には適用されない. よって,<cfsetting> 自身がひとつのスペースに置換されるのだ!

 アホか,何だこの仕様! バーカバーカ!(笑)

index