「日記」に関する日記(8)

<前 次>

普通のエンディング

のんびりナマライザのログ一覧表示を作りました。
LineConstructorを使いまわしています。
どうも少し重いようですが既存のコントロールを使ったときのような余計な制限やメモリ消費がないところが強みです。
コントロールを使うとコントロールにデータのコピーを置かなければならないのでメモリ消費とデータ反映にかかる時間が馬鹿にならないのですよ。
もっとも、スクロールにスクロールバーコントロールを使っているのでいまだに32767項目の制限があったりするのですがね。

日記を改良しました。
JavaScriptが有効になっている方は既にわかっていると思いますが、左側のリストがクリックで開いたり閉じたりできるようになっています。
Netscapeだとon~系のイベントが出ないようでクリックしても反応が無いのですがそのときはそのときで少なくとも前より悪いことはないと思うので勘弁してください。

爆ボンを改めて最初からプレイしてみました。
フルパワーなので楽勝楽勝!
と思いきやいきなりドラゴ戦で自爆!
あの過剰な爆発力に自分自身が餌食となってしまいました。
リッパーのときも同じく自爆しまくりだったのですがこちらはハートを何度でも回収できるので本当に楽勝でした。
しかし最大の難関!ブラックシティ!
正面突破は最短ルートでの突破に失敗し、かなりのタイムロス。
アルタイルタワーともなると、まさに難攻不落、フルパワーなんて全くの無力なのです。
あまりに全てが揃いすぎていて非現実的なパワーで侵攻しているというのにその結果があまりに現実的なタイム!
レインボーパレスがただのボムジャンプ練習場に見えてきます。
そしてクリアするとシアターでは見られないノーマルエンディング!
ものすごく久しぶりに見たのですがスタッフロールでのあの完璧なプレイと言ったら!
シリウス版のあの馬鹿なNGエンディングとは全く違う感動的なまでの完璧なスーパープレイ!
一瞬の無駄すらもありません!
最後のレインボーパレスへの布石はレインボーパレスとクリアしてから見るとまた違って感じるものがあります。
あの頃は単なる観光地だと思っていたなぁ。
クリアタイム16分です。
アルタイル1戦目の体力が分かったのでそこを更新です。

日記とチャット

日記CGIを機能制限して軽くしました。
まず、コメント&トラックバック機能除去。
コメントはいらないしリファラを見ればトラックバックも不要だし、そもそもブログじゃないので最初から不要な機能だったのです。
そして次に、管理者の私にしか日記は更新できないため公開サーバーに置く利点がないということで、ローカルサーバーでのみ動作するようにしました。
それに伴い、同じサーバーを共有する他のユーザーに気を使って重い処理を避ける必要がなくなったので、自分で使うのに便利なように多機能にしてみました。
まあ、分割していた処理を一括で実行するようにしただけなんですが。
こうして書いた日記をあとでFTPでアップするのです。
公開サーバー側では一切書き込み処理をしないのでミラーリングアップロードが使えます。

チャットもリロード処理を改良しています。
リロードをログ表示側の処理ではなく、投稿フォーム側でJavaScriptにより処理することで、そのときの気分次第で自由にリロード時間を変えられるようになります。
勝手にリロードされると困る場合はリロードなしにすればよいのです。
ちなみに、JavaScriptが無効化されている場合は自動リロードは行われません。

在室者管理

さてと、チャットの在室者管理でも作りますかね。
入室時:member.dat読み込み→入室者チェック→member.datにデータがなければmember.datに入室者を追加して入室メッセージを表示→member.datを更新
ログ表示時:m読み込み→長期ROMの人がいた場合自動退室させてm保存→在室者を表示
発言時:m読み→発言者がmになければエラー→最終発言時間を更新してm保存→ログ表示
退室時:m読→退室者いなければ何もせず→いたら削除&m保&退室メッセージ
てな具合でどうでしょ。

DirectMusicProducerで作ったデータを再生しようとして見事に挫折。
どう頑張っても全く音が鳴らないしエラーが出るんですよぉ。

今日は「Bomber丸World」の海音楽裏。
短調です。

日記カテゴリに「掲示板」と「チャット」追加しましたよ。

1124204328.mid

エイミーと更新と学習と

Bomber丸WorldのBGM、製鋼所ダンジョンボスのところを更新しました。
イントロ部分の追加とエイミーパートの一部変更です。

更新のカテゴリを増やしました。
更新履歴に乗せないような更新は日記に載せていきます。

学校のレポートがたまってきてます。
最近学校でやっていることがわからなくなってきているようなので勉強もかねてレポートでやった内容や自分で考えてみたことを自分で理解したように(≠他人にも理解できるように)書いてみて学習帳にでもアップしようかと思っています。
さて、レポートを早いとこ片付けないと。

ファイル構造解析のために

日記と掲示板のプログラムをちょっと改良しました。
いずれもメンテナンス部門の変更なのでユーザーが使える部分では変更ありません。

FFCCでは、ちょっと気まずい手紙を拾って受け取ってしまったためリセット。
結構アイテム手に入ってたんだけどな。

ByteEditでも改良してみようかと思ったのですが、どうも今日中には間に合いそうにないです。
ファイルとの比較を作れば解析が簡単になるかなぁと思ってたり。

質量

日記はブログじゃないのです。
ブログは有用な情報こそが命、つまらないことなら更新せずに記事ひとつあたりの内容の密度を高めることが重要でしょうよ。
でも日記は毎日つけることそれ自体が目的、内容云々より一日一回書く!
その上で不要と思われる情報はあとから消していけばよいのです。
「質と量」のブログに対して「質より量」のWeb日記なのです。
ということをHP作成論に書こうと思ったり思わなかったり。

重い思い

サーバーのOSはRedHatLinuxだ。
Linux系はマルチタスクOSであり、複数のユーザーが同時に利用する。
だから、あまり高負荷なCGIは設置できない。
私自身のためでも訪問者のためでもない、サーバーを共有するほかのユーザーのためだ。
しかし、時としてCGI上で重い処理を実行しなければならないときがある。
もちろん一番手っ取り早い解決方法は処理を軽くすることであるが、理論的にも現実的にも限界というものがある。
例えば、N個のデータに対して処理を行いたい場合は、どんな場合でも最低N回の処理が必要になる。
また、実行しないという方法もある。
つまり、データをローカル環境にダウンロードしてそこで処理をすればサーバーに負荷はかからないという計算だ。
しかしそれには時間も手間も余計にかかる。
そこで、原点に立ち返って考えてみる。
なぜ高負荷の処理をしてはいけないのか。
マルチタスクの動作原理からわかるとおり、実際の処理は1つのCPUがこなしており、単純計算すれば、2人が同時に処理を行えば処理速度はそれぞれ半分になるということだ。
低負荷の処理であれば処理は瞬時に終わるため、2人が同時に、ということは少なく、仮にあったとして処理速度が半分になる期間はごく短いということになる。
そしてもうひとつ考えてみる。
高負荷とは何なのか。
言うまでもなく負荷が高いことである。
負荷が高いとはどういうことを言うのか。
非常に多くの処理を行う場合であろう。
しかし、その非常に多くのそれぞれひとつは実は軽い処理なのである。
例えば、同じ処理でも、10倍の時間を掛けて処理すれば単位時間当たりの負荷は10分の1に減るだろう。
つまり、常にほんの少し重い状態をキープすれば一見重さを感じないのではないか。

ということで、日記の左側メニューを生成する処理を作りました。
ローカルテストではこの機能は一回約0.17秒かかるようで、実際に使うのは数日に一回程度だから多少重くても気にしない。
逆にチャットのようなものだと一回一回が軽くても呼び出し回数が馬鹿にならなかったりしますけどね。

コメントラック

ドラクエ7でサンダーラットとメタルスライムをいじめてました。
目的はサンダーラットの心。
今度はゴーレムーガをいぢめる旅に。

日記、結局コメントもトラックバック受信も対応させちゃいました。
どうもブログによってトラックバック送信の際の文字コードが違うようで、はてなからの場合はUnicodeでjcode.plが対応していなかったりして、もう開き直っちゃってどんな文字コードでもそのまんま入れちゃえばいいやということで、コメント&トラックバック専用のファイルを用意して受信内容をそのまま記録という方式に。
で、後日管理人が正しいエンコードで確認してShiftJISにして日記に反映させるという方式です。
実際のところ、この日記は積極的に人に見てもらいたいわけではなく、ひっそりとよく見えるように配置しておき、見たい人は見てもらいたいし興味があるのなら毎日でも見てほしいということなので、トラックバックもあまりしてほしくはないのだけれどもしてくれたらやっぱり嬉しいという相反する考えを持っている次第であります。
そうそう、こちからは他人のブログを話題にすることもありませんし、トラックバックも送りませんよ。

ピーッピーッピーッ、バックします

う~む、そもそもこの日記の書き込み部分は管理人一人が利用するということで、ロック処理というものをしていないのです。
だから、コメントやトラックバックを下手に実装すると、2人以上による書き込みで2年分以上の日記が吹っ飛ぶかもしれない…
起こる確率としては数千分の一くらいだけど、言い換えれば数千人に一人は明日ログが消えちゃう計算だし、やっぱり可能な限りの対策はしておいたほうが安心できるというものです。
一応、今の予定としては、どちらもいったん管理人が目を通してから日記に反映することにするので、ならばこれらのユーザーからのフィードバックは小さなファイルに書き込んでおいて、消えたら残念でした、消えなかったら確認の上掲載という形でどうだ!

「Bomber丸World」のBGM作ってました。
海洋研究所のボスの音楽はとにかく勢いばっかりの曲なので勢いだけでばーっと作っちゃえそうな気がしたのですが、思ったより難しくて失速気味。

ブログとただの日記帳の中間を目指しています

「ドラクエ5」やってました。
偽太后の正体を暴くためラーの鏡を取りにいく準備段階としてマリアを誘うため教会へ。
先頭は主人公ゼボット、最後尾はマリアちゃんといい仲のヘンリー。
そのままマリアに話しかける。何事もなく会話が終わる。
あ、ヘンリー先頭のほうが良かったかも。
と思い、パーティの並びを逆順にして、その辺にいる女と会話。
あれよあれよという間にマリアが仲間に。それも最後尾に。
ごめんよヘンリー…
そして冒険の書に記録して、カジノで摩って終了。

日記についてですが、掲示板にも書いたとおり、完全にブログらしいブログにするつもりはないのでトラックバック機能はつけない予定。
とはいっても試験的に受信するだけは受信する可能性も無きにしも非ずですが。
コメントについては、要するに別CGIで処理するようにすれば良いのですが、コメントの保存形式をどうするかが問題となってきます。
単純に<br>で区切るかな…
その前に日付の記録形式を早く正常に戻さないとなぁ…

一応はてなダイアリーも試してみました。
http://d.hatena.ne.jp/tokio6/
すぐやめるつもりですが。

新しい日記で御座います

で・・・できたのだ。
これが新しい日記なのだ。
最も閲覧数の多い最新ログはHTMLで高速表示、過去ログやジャンル別の日記はPHPで効率よく管理、そして書き込みにはCGIを利用するというとても素晴らしい日記システムなのだ・・・。
それでは、また明日。

再インストール完了

ブラウザを入れなおすためLunascapeのサイトに行ったらバージョン2があったのですが、プレビューリリースということで、今は導入しないほうがよさそうだし、だからといって旧バージョンをインストールしてもすぐにいらなくなりそうだったので、とりあえずしばらくはIEで我慢ということになりました。

1日に更新していたのですが、トップページの更新を忘れていました。

DirectX8.1SDKがなかったので仕方なく9SDKをインストール。
サンプル見てみたけど数は少ないし大して見た目変わんないのにピクセルシェーダなんか使ってコンマ数FPSまで重くなるし、利用者を舐めてんのかと言いたくなる内容。
実際に製品として組み込むときにはピクセルシェーダを使わない設定とか付けたりするんでしょうかね。
とりあえずこれで「パネルγ」をリビルドしてみたけど必要環境がDirectX9になってしまっていないか不安です。

CGI&PHPの動作確認環境も何とか復帰。
ついでに新日記もちょいと更新。

使い分け

全員に全く同じ内容のページを見せる場合で、特に更新よりも閲覧が圧倒的に多い場合はHTML。
それぞれに違うページを見せる場合、更新が多く閲覧が少ない場合で、ファイルへの書き込みを伴わない場合、あるいはデータベースを利用する場合はPHP。
ファイルへの書き込みを伴う場合はCGI。
で、どうだろう。
ファイル内容はCGIとPHPで共有できるし、CGIで生成したページをHTMLファイルとして記録し、閲覧の際はそれを見せるようにすれば負荷は減らせる。
だからといって何でもかんでもHTMLを作るようにしていたら見られもしないのにHTMLファイルばかりが増えるということも。
新日記の左側メニューは基本的に月一の更新であり、かつ最新の日記とほぼ同じ回数呼ばれることになるのでHTML。
右側の日記は、よく見る人は基本的に最新のものしか見ないので最新の日記のみHTML、他はPHPで、書き込み部分のみCGI。
掲示板はランダムメッセージを表示したりクッキーを使ったりするのでCGIかPHP。
リンク集はトップのHTMLページだけで大体用事が事足りている様子なので現状維持。
TScriptはCGIとPHPを組み合わせるつもり。
カウンターはファイルへの書き込みがあるけどPHPにするメリットのほうが大きそうなのでPHP。

アクセス解析にて

新日記過去ログを2003年3月分まで入力しました。
で、そこでマインスイーパのことが書かれていたので、久しぶりにやってみたら、ハイスコア出しました。
中級50秒はなかなか速いんじゃないでしょうか。

アクセスログを回収してリファラを見ていたら、Googleからの訪問は激減していましたが、BIGLOBEのディレクトリサーチに登録されていたことがわかりました。
それもアクセス解析のカテゴリで。
あれ自分用にかなりカスタマイズされてるからそろそろ「MusicPlayer」と同じく完全自分仕様品にしちゃおうかと思っていたのですが、そうもいかなくなってしまったようです。
でも「TW Prog. Room」としてリンクしているところが他と違うところか。

テスト終了。
持ち込み可だった割には簡単だったので適当に回答。
途中式もいい加減。
大丈夫かな…

3D、自動で回るのを手動に切り替え。
ビューの位置を自在に変更していろんな位置から虎を見られるようになりました。
Direct3Dにはティーポットのメッシュを生成する関数があるそうですね。
実用性はともかく、練習用にメッシュを表示するときなんかには役に立ちそうです。

プログラミングのページにも説明つけるべきですかね…

ヘッドフォン

学校のパソコンで昨日に引き続き3Dを頑張ってみました。
とりあえずネットでサンプル明後日適当に自分なりに書き換えて2Dポリゴンを表示して自己満足して3Dポリゴンも調子に乗ってやってみようとしたら突然リンカエラーが!
libci.libが見つかりませんって言われたって、そんなのリンクするような設定はしていないのですが・・・?
で、勿論早速MSDNライブラリで調べてみたわけですが、見つからない。
帰ってからもう一度調べてみたら、「古い iostream ライブラリ」とのことで、「最新だったら新しいの使えよ!!」などと思ってみたりもしたのですが、新しいのにどうやって変えればいいのか、新しいのに変えることで不具合が起きるんじゃないか、新しいのがまだ古いのを使ってるのに何故に古いものを切り捨ててしまったのか、などなど気になってしまって、別に何もしませんでした。(何

「ByteEdit」を更新しました。
選択内容を検索します。
ついでに言うと、ドラッグによる範囲選択と右クリックにもこっそり対応させたので、検索したいバイト列をドラッグで反転→右クリックから検索で、簡易ながらもバイト列の検索ができるようになりました。
そこそこ拡張しやすい形になっていたので両方ともちょっとだけ手を加えただけで実現できました。
こんな感じですぐできる更新をちょっとずつやって行くことにしてます。

前にヘッドホンが壊れてしまっていたので、学校の帰りにヘッドホンを買ってみました。
買いに行くと、6000円くらいのオープン型・3000円くらいの密着型・2000円くらいの密着型・1000円程度のオープン型があったのですが、6000円のは完全に予算オーバーで問題外、1000円のは用途から考えてふさわしくないと感じ却下、3000円のは2000円のと比べてどこがいいのかわからなかったので結局2000円のにしました。

ピクミンその他のゲームのページ、気が向いたのでアップしてみました。
ついでにリンク集もちょい整理。
そんでもって新日記公開。

ピクピクニンジン

ピクミンのページ作りました。
ピクミンってどう考えたって扱いが奴隷。
今のところアップしてません。
気が向いたらアップします。

ちょっと学校のパソコンでDirectX8で3Dでもやってみようかと思ったのですが、チュートリアルが意味不明だったため挫折。
変数が何のために使われてどこでどう定義されて他の変数との関係がどうなのかとかがさっぱりわからないので打ち込んだところでどうにも…
DirectXGraphicsに統合された分簡単だと思ったのですが。

新日記2002年分の過去ログを仮入力完了しました。
12月の日記はほとんど同じ話題が続いていたので楽でした。
さて後1年半分…

そろそろ更新しようかと思います。
ByteEditかDirectXでも。

ひさびさFFCC

新日記の過去ログを2002年10月まで仮入力終了。
途中から過去ログの形式が変わったりするのでちょっと入力が大変です。

あ、FFCC久しぶりにやってみました。
きわめて庶民的なアイテムしか手に入らなかったのでセーブせず電源OFF。

ふしぎのぼうし3つ目のダンジョンをクリアしました。
ゴードン似のオーリス登場。

旧日記改造日記

アクセスログを回収しました。
新しいリンク無し、記述ミスによるリンク切れ無し、ダウンロード数やや減少、Googleからの訪問激減。

新日記のログの形式を変えました。
前までは月ごとに別のログを用意していましたが、月別の表示のときには、もしログに間違った月の日記が入っていてもそのまま表示してしまうし、検索機能を使うと一気にたくさんのファイルにアクセスすることになり、いろいろと不都合があったため、全部ひとつのファイルにまとめることにしました。
PHPはCGIではないのでSuExecとは関係ない模様。
ログファイルのパーミッションは読み書きするために666でないといけないようです。
ま、日記はログ内容を整形して表示しているだけなのでログを見られる分には一向に構わないんですけど。
でも書き込み権限に関してはこれは大問題です。
というほど重大な問題でもないのですが、やっぱり第三者による書き込みを許可しているのは少し心配…
いっそのこと書き込みだけはCGIに頼るか?
これに伴い、現行の日記CGIも、新日記にできるだけ合わせた形式のログを吐き出すように改造しました。
ついでにセキュリティもほんのちょっとだけ強化。

「ふしぎのぼうし」、2つ目のダンジョンクリア。
あまりハートのかけらが集まらない…
しかもボスがポケモンっぽい…

新日記作成日記

新しい日記をPHPで作り始めました。
とりあえずは個人的に需要のある日記の過去ログを表示する部分を先に作り始めました。
というより過去ログを見るPHPそのものはできたんですが。
ログの変換作業が結構大変なのです。
まずHTML化されたログをPHPで読める形式に変換しなければなりません。
これについては単純な置換作業で済むのですが。
で、大変なのが日付の記録方式の変換。
なんせ西暦で表された日付と時刻を 1970/01/01(Thu) 09:00:00 からの経過秒数で表さなければならないんですから!
月によって日数が違ったり閏年があったりして変換作業を自動化できないのですが、逆に秒数から西暦をすぐに出力するCGIを作ってできるだけ速くなるようにはしました。
最後は簡易検索用キーワード。
開発日記等は今まで日記の中から関連する場所を抜き出して別のHTMLファイルを作っていて、ファイルサイズも入力の手間も膨大になりがちでしたが、これを、キーワードを与えて日記の過去ログから検索して表示するという方式に変えて、効率化を図ります。
これはこれで何の関連記事かとかそういうのを、内容をよく読んで判断しなければならないのですが、開発日記用にHTMLを作ることを考えれば楽なものです。
まだ中途半端な状態なのでアップしていません。

<前 次>