2008/08/29(金) [n年前の日記]
#1 [iappli] Perlスクリプトの作成でハマってたり
ガイド画面用のテキストデータファイルを出力するために、元テキストファイルからiアプリで読み込める形にするためのPerlスクリプトを作成してるのだけど。sjisとutf8の扱いで悩んだり。
文字列を文字数で切り出したりするためには、内部的にutf8フラグを立てた状態で文字列を扱うといいらしいのだけど。そうすると正規表現部分をどう書けばいいのか…。
Perlスクリプト自体をutf8で書けば正規表現部分も「if ( /^[。、]+/ ) { } 」と書けてしまうけど。そうすると今度は、Pod::Usage でスクリプトのヘルプを表示しようとしたときに文字化けしてしまう。いや、podがutf8で書かれてるのに、コマンドプロンプトはsjisだから、文字化けするのだろうけど。自分は物忘れが激しいので、--help で何のスクリプトかぐらいは表示してくれないと困るわけで。コマンドプロンプト上で chcp 65001 と打ってutf8モードにすると、今度は pod が一切表示されない。うーん。
ひとまず、Perlスクリプトをsjisで記述。すると今度は、正規表現部分をどう書けばいいのかが…。とりあえず、
文字列を文字数で切り出したりするためには、内部的にutf8フラグを立てた状態で文字列を扱うといいらしいのだけど。そうすると正規表現部分をどう書けばいいのか…。
Perlスクリプト自体をutf8で書けば正規表現部分も「if ( /^[。、]+/ ) { } 」と書けてしまうけど。そうすると今度は、Pod::Usage でスクリプトのヘルプを表示しようとしたときに文字化けしてしまう。いや、podがutf8で書かれてるのに、コマンドプロンプトはsjisだから、文字化けするのだろうけど。自分は物忘れが激しいので、--help で何のスクリプトかぐらいは表示してくれないと困るわけで。コマンドプロンプト上で chcp 65001 と打ってutf8モードにすると、今度は pod が一切表示されない。うーん。
ひとまず、Perlスクリプトをsjisで記述。すると今度は、正規表現部分をどう書けばいいのかが…。とりあえず、
my $t = decode('shiftjis', '。、'); ... if ( /^([$t]+)(.*)$/ ) { };と書いてみたけど。これで合ってるんだろうか…。
◎ ガイド画面は一応できた。 :
テキストだけならまだ簡単だけど、画像が入ってくると途端に面倒になるなと。しかしこれでもまだ、処理しやすいフォーマットでテキストデータを用意してるわけで。いわゆるWebブラウザが処理しているような、htmlやcssの解析かつ画像を含めたレンダリングとなったら、一体どれだけ複雑になることやら。想像しただけでゾッとする。が、ちょっと面白そうでもある。
[ ツッコむ ]
#2 [prog][neta] 誰か、「ブラウザのレンダリングエンジンを作ろう!」的連載記事でも始めないものか。
無理か。なんとなくだけど、仮にそういう連載記事が書かれたとしても、本職(?)の人から見ると、「いやいや、フツーそんなやり方でレンダリングしませんから」という内容になりそうな気がする。昔、ベーマガの「ゲームを作ろう」的連載記事で、リアルタイムゲームの敵の動き・座標値を、方程式をそのまま使って求めていて、「今の非力なハード上でリアルタイムゲーム作ろうとしてるのに方程式そのままで計算したりしないだろ…」と思われてしまった、みたいな感じで。
とはいえ、作る上での概念というか、それをするためにはどんな処理が必要になりそうなのか等を考えていくという点では、実に役立つ記事になるのかもしれない。現在のハード上で実現・実装するための各種テクニック云々とは、レイヤーが異なる知識、なんだろうな。たぶん。ソートのアルゴリズムを教えるときに、遅いソートについても教えるようなもので。
問題は、記事を書いている人が、バブルソートしか知らない・クイックソートを知らないまま書いている可能性がある、ということかしら…。下手するとうんうん唸ってボゴソートを思いついてソレを記事に書いてしまったり。とか。
とはいえ、作る上での概念というか、それをするためにはどんな処理が必要になりそうなのか等を考えていくという点では、実に役立つ記事になるのかもしれない。現在のハード上で実現・実装するための各種テクニック云々とは、レイヤーが異なる知識、なんだろうな。たぶん。ソートのアルゴリズムを教えるときに、遅いソートについても教えるようなもので。
問題は、記事を書いている人が、バブルソートしか知らない・クイックソートを知らないまま書いている可能性がある、ということかしら…。下手するとうんうん唸ってボゴソートを思いついてソレを記事に書いてしまったり。とか。
[ ツッコむ ]
以上、1 日分です。