最近、久々にPerl、PHP、JavaScript、ちょっとだけはまったところのメモ。
意外と下記に言及されているサイトが少なかったんで。
Perl
文字列を区切り文字で分割して配列で受け取る場合について。
@data = split(/\t/ ,$line);
などは、空文字が途中にある場合、空文字以降捨てられてしまいます。
(無視されて切り詰められるのかと思いきや切捨てられるとは。)
最後の引数に-1をつければいいとサイトには書いてありますが、
@data = split(/\t/, $line, -1);
でもダメです。
@data = split(“\t”, $line, -1);
のように正規表現の所を文字列に変えると空文字も配列の1要素として格納されます。
TSVデータを外部から受け取って処理する場合など、配列の全要素の位置が固定のほうがいい場合は上記のコードがおすすめです。
PHP
クッキーの書き込みのタイミング。
setcookieでクッキーを書く場合、HTMLをoutputする前に書かないと書き込まれません。
(クッキーはヘッダー情報なので当然と言えば当然ですが。)
PHPと言うよりHTMLを直接書けるSCRIPT言語共通の仕様だと思います。
処理のあとに、一度にHTMLを吐きだすようなコードだとあまり関係ありませんが、
<%や<?phpなどでHTMLとロジックが混在していて、かつそれが他人のコードだったりすると、
「あれ?クッキー書かれてない。->ブラウザの問題?->セキュリティ設定?」などとあらぬ方向へ迷いこんでしまうこともあります。(ぼくみたいなおっちょこちょい君は特に)
JavaScript
画面表示時にウインドウを最大化する。
<script type=”text/javascript”>
<!–
window.resizeTo(screen.availWidth, screen.availHeight);
window.moveTo(0,0);
//–>
</script>
でウインドウを最大化(正確に言うと、スクリーンとほぼ同じサイズ)出来ますが、このままだとIEでは最大化されません。
IEにも対応させるには、
<script type=”text/javascript”>
<!–
window.moveTo(0,0);
window.resizeTo(screen.availWidth, screen.availHeight);
//–>
</script>
です。
ちなみに、moveToがなくてもダメ。理由は、IEの場合、resizeToが実行されるときに画面からはみ出るように大きくしてくれないから。つまり最初に中央に移動して、延ばせる領域を作ってから拡大するということです。

最近のコメント