アーカイブ

2006年 1月 22日 のアーカイブ
1310 letters | 588 views | コメントする

今日は久しぶりに本屋に行ったが、なんとなくムック本を一つ買ってきた。
XREAにサイトを置くようになってからというもの、その自由度に驚かされているが、
その中でも、PHPはいろんな事に使えて本格的にやりたいとずっと思っている。
いままでは、rNoteのソースを自分用にあちこちいじったりといった程度だけだが、
手元のPCでソース編集、FTPでアップロード、サイトにアクセスしてテスト、
という手順でやっていて面倒だと感じてきた。
手元のPCのみでPHPのデバッグが出来るようにしたいと思ってた所、
関連しそうなムック本が目に入ったので、特に中を見ることなく買ってきた。
きっと玄人には当たり前の事だろうが、あたしには新鮮なことが書いてあった。

まず、あたしゃ大きな誤解をしていた。
Windowsでサーバーをやるには、Windows付属のIISしかないと思いこんでいた。
同様に、WindowsでPHPをやるにはIISで動かすものだと思いこんでいたのだ。
Windows用のApacheがあり、それようにPHPもMySQLもあり、
本に紹介してあったのはXAMPPってやつで、これでまとめてインストールできる。
本について来たヤツではなく、ググって新しいバージョンを入手した。
インストールは全部YESを選んで行けば、自動的に使えるようになる。
後は該当する場所にPHPソースを置いて、そのままエディタで編集でき、
localhostでアクセスできる。
なるほど、こんなで良かったのか、簡単だ。

ただ、XAMPPをインストールした時点では、最新のPHP5が動作するようになってるし、
このムック本もPHP5を前提に書いてある。
しかしなぜかPHP4の方が普及していて、最終的にXREAで動かすならこのままではまずい。
ので、php-switch.batっていうバッチファイルがついてきていて、いつでも切替可能。
ほかにも、phpinfo()での設定を見て合わせるところは多々あるだろう。

こうしたインストールの手順から、PHP/MySQLまで一通り本に書いてそうだ。
うん、楽しい。

4822228339
4822228339

真魚というか、TNotePadでは等幅フォントでないとマトモな文字幅にならない。
これは、全ての文字を半角か全角かという2種類の横幅に分類しちゃうことで、
いちいち文字の幅を計算しなくても良くなるので、その分高速な処理をしているのだ。
まぁ、内部は結構な量でTEditorのパクリがあるわけだから仕方がない。
ただ、SJIS外の文字幅は、フォントの種類によって異なるという問題がある。
その実例がコレ。
http://wantech.ikuto.com/software/UnicodeTest.exe
真魚2.xxの前身であるぎょえ(仮)の設計時点で、こういった問題は抱えていた。
仕方がないので、SJIS外の文字は全て全角文字幅で扱うことにしてきた。

だが、ソースコード内には、それぞれのフォント幅を計算する痕跡は残っている。
実際に計算させた場合にどれだけ動作が遅くなるかを試したのだ。
それを試した時点で、あまりにも動作が遅いのでやるのをあきらめた。
しかし、いったん表示した文字はキャッシュしちゃう方法を使ってみたら、
それほど遅さは気にならずに表示できたので、そういう実装にしてみた。
以前試して遅かった時とはパソコンの性能も違うので、
もう少し遅いパソコンでもテストする必要があるかも知れない。

具体的に何が変ったかというと、ユニコードの文字を表示したときに、
実際の文字幅は半角なのに、全角の幅で表示されていた文字が半角になった。
たったそれだけのために遅くなってもいい程度の犠牲かどうかは問題だ。
遅くなるのは、起動してすぐやフォント変更後、フォントサイズ変更後など、
フォントサイズの再計算が必要となってから、まだ表示してない文字を表示する時。
だから、「あ」を初めて表示するのは遅いけど、「あ」の幅はそこで覚える。
「ああああ」とかって同じ字があると、2回目以降の「あ」は遅くならない。
「あ」を削除してもう一回書いても遅くならない。
でもまだ一度も書いていない「い」が出てくると遅くなり、「い」の幅も覚える。
フォントを変更すると、「あ」の大きさを調べてない状態に戻ってしまう。
設定を保存しないので、真魚を再起動しても元に戻ってしまう。
とにかくコレ。
http://mana.ikuto.com/Mana2beta.zip

さて、今回の文字幅計算部分って、せっかくピクセル単位の幅が出てるのに、
全角か半角かに振り分けてしまって、ピクセル幅は使わないことにしちゃってる。
だが、この部分でこの計算さえやっておけば、等幅以外のフォントにも対応できそうだ。
それをやってさらに遅くなるってことも十分あり得るし、
ボックス選択とかタブ幅とか、解決が面倒そうな部分もたくさんある。
「何文字目」で判断してる部分を「何ピクセル目」で処理すべき変更も必要。
やる気さえあれば、プロポーショナルフォント対応で新テキストエディタ作るべきかも。
やる気はないんだよなぁ。

484431937X
484431937X