雑記帳 2004年 2月第4週

2004/02/22 Sun.

自宅サーバーが上手く動かないっ!何故だっ!俺の十数時間を返せ!
AN HTTPD」を利用して自宅サーバーを運用している人が結構多いようなので、興味本位で自分も参戦。
……いまいちよくわからんなぁ。NAT周辺の仕組みがわかってないと、自宅サーバー運用は無理っすかね。
グローバルIPでアクセスすると、パスワード認証画面になるし、何をやっても中に入れない。何がマズいんだろうか。
一般公開用のじゃないにしてもFTPか何かにしちゃえば、会社でのデータのやり取りとかが楽になるし。
でも、一日中立ち上げっぱなしになるけど。親からも最近電気代で文句言われてるし。本来ならば自粛したいとこ。
そんなワケで、自宅サーバー運用計画は途中で挫折というか断念というか。また気が向いたらやります。
で、今日は何をしていたかと言えば、相変わらずの「BBS」の改造とFF7をやったくらいか。暇な連休だったなー。
有り余る時間を使ってFF7を一応全部終えたんですけど、あのエンディングの意味がサッパリだったりします。
あれは結局どういう意味なんですかね。星は生き残って、でも人類は滅亡?よくわからねーっす。誰か考察して下さい。
さて、時間が余ったら今度はFF8でもやるかぁ。最近の新しいゲームとかには全然ついていけないっす。
自分がプレイした中で、一般コンシューマー向けのゲームで一番新しいのって、まさかFF8なのか。古すぎです。

続いて「BBS」の改造。最近になって、そこまで機能いらないんじゃないかと思ってきたり。
別に配布するほどのレベルのものじゃないだろうし、自分しか使う人いないっぽいし。他には「gadult」を犠牲にするくらいか。
とりあえず、ログの保存形式を変更。http://で始まる文字列を書き込むと自動でURLリンクするようにしてたんだけど、
<A href="http://..."></A>ってタグもログに書き込んでるのが見苦しいので、そこの周辺を改良。
ログの書き込み時には自動リンクさせずに、読み出す時にだけ自動リンクをさせてHTMLに反映させるようにしたってことです。
別にログに<A>タグがあっても問題なかったんだけど、ログの編集機能を付けようとした時に、ちょっと面倒がありそうなんで。
具体的に言うと、管理者がログを直接編集する部分。ログを読み出してフォームに出力するところ。
まぁ口頭じゃ説明しにくいんで、これは割愛という事で。明日中には完成できるといいんだけど。
あと、すっかり忘れていたのがCookie関連。あった方が自分でテストするときにも便利だし。毎回名前とか書くのも手間だし。
他にも色々付加したいものもあるけど、その辺までで抑えておこうかな。無意味にソースが長くても嫌だし。

最近USBポートが不足して困る。普段3つ使うのに、2しかポートがない。困ったものだ。
USBハブとか買えって話になるんだろうけど、今の机の上じゃそんなの置くスペースは無いし。どうすっかなぁ。
PCケース前面下部に付いてるポートを使えばいいんだろうけど、M/Bに直接繋ぐタイプのもので、よくわからないものだし。
LCD見に行くときにでも、ついでにUSBハブも買ってきちゃうか。数千円くらいっしょ。
ちなみにUSBを何に使うかというと、ゲーム用のパッドとプリンタとスマートメディアリーダー、MP3プレイヤー接続用。
プリンタは普段からそんなに頻繁に使う物じゃないから、基本的には外してある状態。で、使用するのが3つ。
何つーか、中途半端な環境だよな、俺のPC周辺ってのは。ゴチャゴチャしてきたし、そろそろ綺麗にまとめますか。

2004/02/23 Mon.

BBS」の投稿済記事修正及び置換機能実装完了!漢字ばっかで微妙な表現。
前後の脈絡全くないけど、今日は生命保険の勉強しました。住友生命の人とちょっとお話を。
……住友生命にリンク貼ろうと思ったんだけど、ちょうどいいタイミングでサーバーが落ちてやがる。
こうして顧客獲得のチャンスを逃していくわけですな。哀れなり、合掌。
全然この業界の話って知らないから、説明されても何が何やらさっぱり。色々あって何やら難しいのだね。
適当に見積もってもらって、月額13,000円くらい。高いのか安いのかもわからないけど、予想通りの金額。
でも年間で10万以上の出費になるんだよなぁ。保険は半年我慢して、LCD買ってからにするか。別に緊急じゃないし。
ただ、若いうちに入らないと後から逆に高くつく諸刃の剣。一体どうしろと言うのだ。
23歳の段階で死亡時やらガン保障とかケガで通院時は一日いくらとか、あまり考えたくないのが本音。
もちろん、他の生保も調べてはみるつもり。保険は即決なんてできませんよ。高い買い物です。
知り合いにこの業界に詳しい人いないかなぁ。でも、この業界で働いている人じゃないほうがいい。
本でも読んで調べようかと思ったけど、そんなのよりも読みたい本はあるし、本の中に理解不能な点があっても困る。
その場でささっと話ができて、企業に先入観を持たずに保険とは何ぞやを語ってくれる人。激しく募集中。

保険の話は置いといて、いつもの「BBS」開発関連の話でも。覚え書きみたいなものだけどねー。
とりあえず何が困ってるって、全然Cookieを食べてくれません。そんなにややこしい処理してないと思うんだけどな。
Cookie発行処理はできてるっぽいんだけど。ちゃんとキャッシュに入ってるし。取得方法に問題があるのだろうか。
知らない人はいないと思うけど、Cookieについて簡単に説明。ある意味、食べ物でも間違っていないかも。
掲示板とかに書き込みする時に、名前とかメールアドレスとかをフォームに記入すると思う。普通の掲示板ならそれが普通かと。
で、再びそのフォームのページにアクセスすると、自分は入力してないのにすでにフォームの中にデータが入ってる事ない?
そういう入力の手間を省いたりするのがCookieの役目。他にも使い方は色々。アクセスカウンタにもできます。
ちなみに、サーバーが入力側の情報を延々と保持したりしているワケではないのでご安心を。
自分で動作確認テストをする時も、Cookie使わないとかなり不便だったりするのですよ。同じ項目を何回も記入するの嫌だし。
明日中にはさっさと修正して、まず不要であろう文字色変更機能にでも着手したい。あと、ワード検索機能。
フリーの掲示板の機能見てると、自分の手で実装できるかチャレンジしたくなってくるこのクセ、いいのか悪いのか。
知識増えるのはいいんだけど、いかんせん時間がかかるのよねー。他にもやりたい事あるってのに。
今週は睡眠時間を多めに取ろうというプランを立てているので、まだ午前0時半ですが失礼します。

2004/02/24 Tue.

BBS」関連の最低限の機能の実装が終わったー。後は細かい修正だけになった。
ちゃんとCookieも認識させることもできた。ってか、家で一日考えたら今日は一瞬で終わった。
仕組みをいまいち理解していなかったのが敗因。やっぱり仕様は確認してからじゃなきゃダメだね。
PerlでしかまだCookieの機能を触ったことないけど、まさかレスポンスヘッダまで送信するものとは思わなかったよ。
これでようやく一般的な掲示板のレベルに近づいた感じかな。ゼロから始めると長いなー。
機能的にも結構充実した掲示板になりそうだし、一般向けにでもソース公開してみようかな。バグ残ってるけど。
URLの自動リンクの部分が解決しないで困ってるんだよね。<A>タグが無意味に重なる部分がある。
多分正規表現の記述に間違いがあるんだろうけど、これだけ時間かけて考えても、解決策はまだ見つからず……。
そろそろ真面目に解決するか。またくだらない部分が原因なんだろうな。そういう部分に限って自分で気付かない罠。
残るべき最大の課題は、レス番指定アンカーによるリンク(>>774みたいな「2ch BBS」っぽい表記)の実装。
これさえ終わってしまえば、一通り開発(?)は終了って感じかな。あと、ログの整理関連の機能かな。
削除や修正したときに、一覧には表示させない部分でログをいじってる部分があるんだけど、そこを綺麗にまとめる機能。
ログの削除は一時的にログのデータを別ファイルに移して、擬似的に消えているように見せかけてあるんだけど、
一回消したログを再び表示させる機能も欲しい。明日はこれがメインかな。もっと時間が取れればいいんだけど。
これが終わったら何作ろうかな。そろそろPerlを一回離れて、真面目にC言語にでも着手したほうがいいんだろうけど。
都合良くPerl関連の仕事とかって回ってこないかなー。バリバリ頑張らせていただきますよ。あまり知識無いけど。
あと、何故かカウンタのログが飛んだので、これも自分で組み直してみるかな。グラフィックカウンタは扱ったこと無いし。
テキストカウンタが使えれば話が早いんだけどな。せめてSSIくらい可能にして下さい。不便でしょうがない。
gifcat.plも使ったこと無いんで、この辺も結構勉強になりそう。ライブラリヤモジュールも調べてみるか。
そういやgifで思い出したけど、著作権問題ってどうなったんだろうか。最近話はさっぱり聞かないけど。
この際だし、全てpngで出力してみるとか。まだまだ調べることありそうだ。ってか山積み。
基礎となる知識が無いだけ、その分時間かけてやっていくしかないんだよね。地道に進めることにします。

家のマシンを一つだけUNIXにしようかと検討中。そろそろこの辺も真剣に覚えていかないといけないし。
コマンドラインの嵐になるだろうけど、自分はWindows 3.1時代からやってる人なんで、MS-DOS6.2で慣れてます。
加えて、UNIXでファイル操作となればPerlで組めるものもあるだろうし。真剣に検討中。安いマシン買うかな。
3万円ちょいでそこそこのスペックのは買えるだろうし、勉強になる上に実用化できれば安い投資だろう。
ついでに「Lindows」でも触ってみようかな。リリース当時は話題になったけど、最近は何も話を聞かないし。
値段見てみたけど、かなり安いもんだね。OSだというのにこの値段にはちょっと驚き。買ってこようかな。
ちょっと調べてみたら、インストール不要のタイプでCDから直接起動できるものもあるらしい。このタイプいいな。
どうやら「mouse computer」と組んで、このOSを積んだ安いモデルも提供してるっぽい。
……29,800円。これいいなー。ってか、最近のマシンってどれも安いんだな。ちょっと驚き。
自分のは自作だから、相場ってのがよくわからん。ちなみに自作で7万円くらいのマシンです。まぁ妥当な価格かな。
そんなワケで、ここ数日でLinuxなどにも興味が出てきたって話です。誰か詳しい人いないかなー。

2004/02/25 Wed.

今日は職場に着いた途端に頭痛が始まり、すんげーかったるい日だった。体調崩すのだけは勘弁。
昨日寝たことは寝たんだけど、多分その前の日の睡眠不足の影響かね。3時間睡眠はちと苦しい。
しかも、その原因はFF8だし。生活崩壊してますな。でも面白いからいいや。楽観的思考。
まぁとにかく朝から頭痛があったせいで、今日一日自分が何をしたかってのがいまいちわからん。
BBS」ばっかりコーディングしてたけど、一体何を変えたんだっけか。結構変更点多かった気がする。
そんな時に役に立つのが通称DFツール。二つのファイルを比較して、その差分を教えてくれるソフトです。
3,000行とかを超えるレベルのソースを書いてると、これが無くちゃ話にならなくなってくる。PG必須ツールの一つ。
早速差分を見てみると、今日の改造点は4つ。

  • 指定した保存件数を超えた分のログを、ログファイルとは別のファイルに保存して閲覧可能とする。
  • ログファイルを読み出す際のロジックの変更。
  • レス番指定アンカーによるリンク(>>774みたいな「2ch BBS」っぽい表記)の実装。
  • 管理者用ログファイル編集機能を使ってフォームにログを読み出した際に、余分なタグが読み込まれていた点の修正。

1番目は比較的容易に完成した。ってか、昨日作った削除ログ閲覧機能をそのまま流用したようなもの。
だけど、これを作ったせいでとんでもないバグが発生。これのデバッグが一番時間かかった。
具体的に言うと、管理者用のログファイル編集機能を使ってログファイルの修正をしようとする。
この時に、例えば最新の記事から3番目の記事を編集しようとすると、何故か関係ないナンバーの記事の編集画面に入ったり。
当初は1番目の機能は念頭に無かったから、簡単なロジックで済ませてたんだけど、それがアダになりました。

foreach $temp (@line) {
    @data = split (/\t/, $temp);
    if ($data[0] eq $logn) {
        (以下略)
    }
}

色々書き方を考えた結果、別に変わった書き方もせずに普通の処理で事足りました。悩んだ時間は何だったんだ。
最初からまともな書き方をしておけば、いきなりバグ出して戸惑うことも無かった。プログラムに手抜きは禁物ですな。
簡単に説明すると、ログから1行ずつ読み取って、それをタブ区切りで配列に格納するという処理です。
その配列の先頭にログのナンバーが入っています。25件目の書き込みなら「25」という数値が入っているワケです。
で、編集しようとした記事のナンバーとログの記事のナンバーが一致した場合、(以下略)の部分で読み出しを行う、と。
これが本来あるべき普通の処理。手抜きは無しで、普通に条件判断処理をしてます。最初からやればよかった……。
以前のは何がマズいのか。例えば、ログの最大保存件数が30件だとします。しかし、30件以上の書き込みがあったとします。
今日作った「指定した保存件数を超えた分のログを、別のファイルに保存して閲覧可能」がここで影響してきます。
30件保存のログファイルに35件書き込みがあった場合、6件目から35件目までのログが保存されてるワケです。
ここで、変更前のソースを見てみます。

@line = @line[$total - $logn];

編集しようとするログのデータを決めるための処理が違うのです。これはかなり手抜きな書き方なのですが。
自分はログファイルは新しい書き込みが一番上に来るように保存しています。この方法が主流っぽいんだけど。
例えば30件保存のログファイルに30件書き込みがあったとします。この場合、上の処理でも問題は無いんです。
読み出すログのデータを26件目としてみます。

編集するログのデータ(ログファイルの上から○番目) = (最大30件保存 - 26件目のデータ)

ログファイルは新しい順に書かれてます。かつ、配列の添え字は0から始まる事を考慮する必要があります。
この場合だと、ログファイルの上から5番目になります。30件目、29件目、28件目、27件目、26件目。26件目を編集できます。
でも、古いログが別ファイルに移っていくことを考えると、この方法じゃマズいのです。ここは盲点でした。
上と同じ方法で、6件目から35件目までのログが保存されてる場合を考えると、何がマズいのかは一目瞭然。
読み出すログのデータを同じく33件目としてみます。

編集するログのデータ(ログファイルの上から○番目) = (最大30件保存 - 33件目のデータ)

もうこの時点で異常さが目に見えてます。存在しないログのナンバーを指定して編集画面に入るワケです。
もちろん、こんなナンバーを指定しても画面には何も出てこないです。こういうバグを出してしまったと。
こんな下らない組み込みバグを入れてしまうとは……。仕事でこんなバグ出したら許されないです。
現在は当然このバグは直ってます。これを発見した時には泣きたくなりましたね。いやー、何かと難しいっすよ。
このまま話していくと、今日の分がとんでもなく長くなりそうなんで、残りの二つに関しては明日という事で。

2004/02/26 Thu.

そろそろ支社の外に出たいんですが。プロジェクト回ってこないもんかねぇ。
そんな事を一日中考えつつ、転職を考えて「リクナビ NEXT」を見てみたり。どうせ当分はしないだろうけど。
あれこれ考えるのがメンドくさくなったら「BBS」の続き。いいのか、こんな生活で。
で、昨日書こうと思ってたけどまだ書いてなかった残りの実装点について。
2ch BBS」で使われている>>774形式のレス番指定アンカーもようやく完成。でも、まだ小さいバグがあったりして。
要は正規表現の問題なんだよな。あまり得意じゃない部分だし。でも、これ覚えると非常に便利になるのもわかってるし。
今は連続してこの形式のアンカーを書くと、一部分だけリンクが貼られないというバグに悩んでたりします。例を挙げてみます。

>>1,>>20,>>300

この様に、各アンカーの間にカンマとか半角スペースとかを入れれば、問題なくリンクされるんだけど、困るのが下の例。

>>1>>20>>300

例えばこんな風に間隔をあけずにアンカーを記述すると、この場合だと>>20の部分だけリンクがつかなくなるのです。

$_[0] =~ s/([^=^\"]|^)(\>\>([0-9]{1,3}(?![0-9])))/$1<A href="$file?logn=$3">$2<\/A>/g;

この正規表現でリンクを付け加えてるんだけど、また単純なところで間違えてるんだろうなぁ。明日中には何とか……。
しかも、職場からFTPに上げておいたファイルを確認したら、何故か修正前のファイルだった。
まさか、今日の最新のファイルに昨日のファイルとかを上書きしてしまったんだろうか。明日は職場で朝イチに確認しないと。
昨日の最後の修正点としては、管理者用メニューからログファイルをフォームに読み出した際のログとの整合性。
これは口で言っても伝わることじゃないんで割愛。何で愛を割ると省略みたいな意味になるんだろうか。

で、肝心な今日の修正点。今日は色々進んだな。最新のファイルが職場のマシンに残っていればいいんだが……。
まず、>>774形式のレス番指定アンカーの有効桁数を設定。最大3桁くらいまでが現実的かな。
>>4000とかってアンカーを貼られても、そこまでログが肥大化する掲示板もないだろうし。3桁で十分なはず。
あと、存在しないレス番を指定したアンカーを踏んだ際のエラー処理の追加。これの追加は容易だったな。
>>-50とかって書かれたとしても、正の数以外は存在しえないですからね。1未満はエラーを返す、と。
で、ちょっとメンドかったのが、タグを使用不可にしていた場合、このアンカーが効かなくなってたんだけど、その部分の修正。
タグを使用不可にするってことなんだけど、要するに「>>」を「&gt;&gt;」みたいな文字コードに変換するってこと。
これも結局はフラグの設定で回避。あまり設定項目とかを増やしたくないんだけど、こればかりはやむを得ず追加。
あとは、削除済み及び退避済みログファイルの初期化項目を追加。これはあまり要らないと思うんだけど、一応ってことで。
一般向けに公開を考えているんで、それなりに機能はあったほうがいいだろうし。使用するしないは自分で決められるしね。
あぁ、職場に最新のデータは残ってるよなぁ。ファイル整理は苦手じゃないんだけど、たまにこういうことやらかすんだよね。
今日一日の修正点が無に還るのだけはご勘弁を……。

2004/02/27 Fri.

            i、 〈l〈l r,==¬
           -=| |=‐  |.|   |.| o o o    ひどい……!
     /       i7 |.| 「/   L===」        ひどすぎるっ……!
    〈        ゙'              こんな話があるかっ……!
    /      、ー--‐へ、 (⌒\      夜の生活を捨てて……
.  , '      l`i‐r-ゝ  v   \\、ヾ;  ヽーァ─  必死の思いで…
  /イ    :ト、!│| ! , ij   u \ヽリ   ∨    早起きしてたのに……
  │,イ   | u | | l∠ニ  u    ト、     ヽ  /  ここまで続けてきたのに……
   l/ | ,イ |─ァつ_ ~U~ u/;⌒i   |:: \   ヽ /
    レ W f/ ノ ,.- // ./ j v |:: u \  V   遅刻っ……!
         { /つ ィ .// /   u  |::v /ヽ.  i  遅刻をやらかしてしまった
        l /つ/ レ'  〈__,.ヘ   | ̄7  ヽ |  ………!
        ヽ ヘ'v ー-、 ノ  ヽ  | /    W  せっかく手にした
          \ ij 0 ヽ.   `ー' | r‐¬ |   オレの未来… 希望…
           \ ノ O \    |_!o ol_|    優秀PGの理想像をっ……!
             ヽ     \    ヽ ̄

ついにやっちまいました……。だって朝起きたら8時25分だし。どうしろと言うのだ。
いつも乗ってるモノレールが発車する時間だってーの。起きた瞬間、有休使って休もうかと思ったけどね。
で、とりあえずタクシー呼んで立川北の支社の前まで。5,000円也。痛すぎる予想外の出費。
ギリギリ間に合うかと思ったら、ギリギリ間に合わず。タイムカード押したのが9時5分過ぎ。悲しすぎる……。

すんません、今日はもう何も書く気力がありません。かなり凹みました。
とりあえず「BBS」が完成して、一般配布向けのを作り始めました。
それを仕上げてもまだ暇な時間があったので、ログが飛びまくってて嫌だったGIFカウンタを自作のものに切り替えました。
バイナリ出力モードって初めて使ったけど、そんなに難しくないものだな。ってか、ライブラリが便利すぎます。
とりあえず両方とも一般配布向けのが完成したので、その為のページを増やさねば。ようやくコンテンツが増えるよ。
さて、頑張って仕上げてきます。

2004/02/28 Sat.

飲み会帰りで日記を書くというのもかったるいもんだ。寝たいっちゅーに。
今日は来月で大学を卒業するサークルの後輩たちを連れて、新宿に飲みに行ってきました。
一次会も二次会も結構金出したから、財政状況が一層厳しく……。まぁいいけど。面白かったし。
サークルでは殆どの時間を一緒に過ごした連中も卒業間近か。ホントに時間経つのが速いんですけど。
それにしても、皆いいトコに就職するよなぁ。一部を除いては素養のある連中ばっかりだ。
東京に残るのと、地方に出る連中の割合は半分ずつくらいか。やっぱ実家通いってのはいいもんだよ。
地方ってことは一人暮らしなり寮に入るなりで生活費もバカにならんだろうし。環境も変わりまくるしね。
卒業式の日には有休取れるかもしれないし、機会があったらまた顔を出しますよ。
そういや、「itsuki」が新しいノートPCを買ってた。12万弱であのスペックなら、かなりお買い得の予感。
自分もノートPCは持ってることは持ってるけれども、PentiumⅢの800MHzだしな。本格的に使うには力不足。
でも、ノートはそこまで使う頻度が高いわけでもないし、気が向いたら新しいのを物色してみますかね。

ここ最近FFにハマり過ぎ。ゲームなんて久しくやってないから、かなり没頭しちゃいます。
これも生活リズムを崩す要因の一つになりそうだ。さっさと終わらせて、普段の生活に戻らなければ。
PSの初期FFとかは非常にやりたい。ムービーとかあるんだっけ。FF2とかを美麗グラフィックでやりたいものだ。
ってか、FF面白いとか言ってる連中に限って、初期のFFを知らない連中ばっかりだったり。
あのな、FFの原型を知らずにしてFFを語るな。もうね、アホかと。馬鹿かと。
流行に乗ってFFやってるようなお前らは、バンゲリングベイでもやってろと。ポートピアでもやってろと。
バンゲリングベイで思い出したけど、一般的に言われるクソゲーってものも、実際には面白いものが多かったり。

とりあえず今日の一言。

             , -──‐- 、
                //⌒ニ二ニ´`\
            l L_ ─-、  ,.-‐:!   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
             |r‐、!. ‐- ,  、-- |    |  財布の中身……
              |!.__l|. _,ノ !._,ハ._ |    |  マイナス
           /| /| ヾ三三三ヲ |   <  1万5千円っ……!
    , _-─===/ .|/ ヽ、.___,.イ、._  \_______
   /     `ヽ,.-'ーー(⌒)  :::::::::::/l |   `'''-、
    ! 二ニ=,゙イ i l F='(_、__/ l  |    |ヽ
.   ト、   / ししL.j⊂二)\ / '´\.|.     |. l
.   !:::\./ ,.ヘ. ̄`7´ヘ「」「」    /~7   :| /l
   |::::::::: \.\ \/ /  |o-  / /-ー┤//!
   !::::::::::::: ` ー>  /    │  / ,.'-、o__,|///l /二二.ヽ
.  |:::::::::   / ./     |   ./  _ ヽ リ~7 |   _,) )
.   |:::::    (  ‘-----‐┐ |o-/ /l_ヽ. ~ /イ   'ー '′
  |::       ` ー-----‐┘.|  '─'    `ー1´ .| ○ O o

ボーナスがもうちょい出れば、これくらいの金は使っても問題無いんだろうけどなぁ。