「TGscript」に関する日記(4)

<前 次>

機能停止とファイル解析と確認画面

今日メモちらしが原因不明の動作停止をしました。
元々暴走が怖かったため動いてるか動いてないかわからないぐらいの低速で動かしていたのでずいぶん長いこと気付きませんでした。
とりあえずソフトを再起動したら直ったのですが、止まる条件はプログラムの終了以外になかったはずだったので少し気持ち悪いです。

のんびりナマライザのログ読み込み部分の中枢が出来上がりました。
先月27日に言っていたところのファイル解析です。
まず、速度は多少遅くなるのですが、エラー処理を正しく行い、可読性の高いコードになるように、そしてもちろん正しいデータに対しては最低限正しく動くようにしました。
読み込みの都合や実際に解析するときの必要性などから一部のデータを使わないことにしたり場所を色々移動したりもしました。

掲示板の迷惑書き込み対策、もっと単純でなおかつ当たり前の方法がありました。
投稿内容反映の前に、投稿内容確認画面を入れて1ステップ多くするのです。
これにより一般のお客様には利便性が上がり、迷惑書き込みをする人には面倒になるのです。
一般のお客様から見れば、投稿結果のイメージが投稿前に確認できるし、やろうと思えばその場で修正もできるし、不適切な表現があれば警告が出るし(出せるようにしたい)、チャットのようにガンガン書き込みまくるということもないので便利さだけが大きく上がるのです。
そして迷惑書き込みをする人にとっては、一手間多くかかる(つまり2倍面倒になる)、機械での投稿がしにくくなる、ということで書き込みにくくなるのです。

投稿フォームのこと

掲示板にの一般の利用者に迷惑のかかりにくい迷惑書き込み対策については、一つの案として、レベル別の書き込みフォーム&投稿内容制限の変化を考えています。
まず書き込みフォーム。
元々用途に応じて様々な形態の書き込みフォームを使うことを考えているので、普通の投稿にも様々な投稿フォームがあってもあまり問題にならないのです。
非常に大まかに分けると、簡易コメントフォームと通常書き込みフォーム。
簡易コメントフォームはテキストだけのシンプルな画面構成で誰でも書き込むことができますが、載せられる情報は少なく、ちょっとしたことで投稿内容審査に引っかかり、封印されます。
通常書き込みフォームは、クッキーと画像を使って、利用者別の投稿画面が自動的に割り当てられます。
画像には適切な代替テキストを用意せず、目で見ないと何が書いてあるかわからないようにし、入力フォーム自体の形や配置も毎回変化します。
これでロボットによる書き込みフォームの判別は難しくなります。
しかし、各入力欄のname属性がわかりやすい名前であると意味がないので、一見意味のない文字の羅列をname属性に使い、投稿された時点でCGI側で、じゃなくてPHP側で元の名前に読み替えます。
そして、元の名前と意味不明な名前の対応も、一定時間で変化します。
すると変化する時間をまたいでの投稿がまずいことになりますが、そのあたりの時間差は考慮して、正しい対応を取れるようにします。

迷惑書き込み対策

いやぁ。急にNeoMuplをいじりだしました。
色々やるべきことがたまっていたりするので、まずはランダム演奏で当たる確率の調整機能を作ろうかと考えていたのですが、そのためにプロジェクトを開いてファイルの内容を見ていたら読み込み部分がなんとも不恰好なことになっていたのでこっちを先に改良しようかなどと思って改変を始めたのですが、なんだかんだで結局準備の準備段階ぐらいまでで両方とも終わってしまいました。

掲示板のロボットによる迷惑書き込みへの対策を考えています。
私が目指すのは、投稿者に少しの面倒をかけて確実に迷惑書き込みを排除する方法ではなく、一般の利用者には迷惑書き込み対策なんて意識させずにロボットだけが困るようなやり方です。
それでまず考えられるのが、HTMLソースのスクランブル。
完全にまぜこぜにするのではなく、入力フォームのname属性を意味不明な言葉にしてやるのです。
しかし結果だけいうと、それでも迷惑書き込みは来ました。
ロボットかどうかは定かではないのですが。
いろんなブラウザにそれなりに対応しつつ、迷惑書き込みはできないようにしたいのです。

Lunascape2.6.5

Lunascapeのバージョンが2.6.5になっていたのでインストールしました。
わかりやすいところでの2.5との最大の違いはタブに閉じるボタンがついたことです。
これにもまあ良し悪しはあって、簡単にわかりやすく閉じられる反面、そのタブを単に選ぼうとしてクリックしたところが運悪く閉じるボタンだったりすると予期せず閉じられてしまうことがあるのです。
最終的に慣れの問題だとは思うのですが。

TGscriptの吹き出しのデザインを作っていました。
今回ただ掲示板の記事に使うだけでなく色々な用途に使いたいので拡張性と可搬性を持たせて一つの関数にしてしまいました。
あと、ついでにアイコンもいくつか追加したのです。
7つ追加で1つ削除。
削除された1つは、システムアイコンとしての役割を持たせます。

15000

やぁ、あっさりカウンター15000回りましたね。
だからって別に何の特典もありませんが。

掲示板。TGBBSの開発をスタートしました。
いえ、TGscriptの共通設定を作っているところです。
ひとまずアイコンの設定が一段落着いたところなんです。

FrieveさんとこのFaleal Story、キーボードで動かすと画面表示が著しくずれるため、WindowsXPでは動かないものだとずっと思っていたのですが、マウス操作のみでプレイすると問題なく動かすことができたので久々に一気にクリアしてしまいました。
データがわかりやすい形式で記録されてたおかげで過去の自分に改造されまくりで法外な退職金が出されたりロプティーバニーキックが最強攻撃になっちゃったり、Frieveドラゴンより強い蟹がデスの書を持って転げ落ちてきたり、お城の中で唐突に甲殻寄生獣が現れたり、ハチャメチャな旅路となってしまいました。

怪しい書き込み

最近うちのGBBSにも迷惑書き込みが来るようです。
どういう方法なんでしょうね。
人がやっているにしてはURL表記を改善してこないところが怪しいです。
しかしフォームデータの名前を変更しているアップロード掲示板にも同様の書き込みがあるところから、人がやってるんじゃないかという疑いもあるわけで。
GBBSの根本的な問題も含めて、色々考えて変えていかなければならない場所が多そうです。

Bomber丸Worldの通常戦闘のテーマを少し改変しました。
ふにゃパートを少し。

キャラボックスの改良は進んでいます。
今は検索ダイアログボックスを作って、これから中身を実装するところです。

それと、すごく久々に爆ボンのMIDIを打ち込んでみました。
ブルーリゾートのベースをとりあえずですが最後まで打ち込みました。

1157295008.mid

騎士団長

マ、マルちゃんすげえ。
暗黒神を支配し利用してやがった。
しかし主人公らが余計な手出しをしたせいで結局ラプちゃん復活。
いや、でも案外これでよかったのかも。
そうでないとマルちゃんがラスボスに…?

ちょっとアクセス解析でディレクトリごとのアクセスの様子を見てみました。

1. /tokio6/ 178,249 28.61%
昔の遺産ですな。ずいぶんと長いこと皆をだましてました。
2. /akiyame/ 67,402 24.35%
飽きる前に忘れ去っているので意外に消えなかったりします。やっぱり繋ハートが強い。
3. /gohma6/ 170,821 23.55%
昔の遺産。どちらかというと馴れ合いサイト。
4. [root directory] 52,815 6.07%
正面玄関。リンク集やブックマーク経由だと大抵一度は通るんですよね。
5. /prog/ 33,910 4.96%
なんだかんだ言ってもメインコンテンツ。更新が少なくてもメインコンテンツ。
6. /diary/ 10,471 3.17%
更新量最大だけあって結構見てくれてますな。おそらくほとんどがリピーター。
7. /game/ 9,526 2.94%
「爆ボンバーマン 攻略」でYahoo!検索1位に君臨するんだから多くても不思議はありません。エアライド関係でも結構来てくれてるんですよね。
8. /dl/ 8,503 2.31%
かつては事実上のメインコンテンツだったのですが…。ページ構成を見直さねば。
9. /cgi/ 17,056 1.51%
この内部に特設サイトを作っていて大きなサイトからリンクしてもらってるので結構人が来てます。
10. /tgscript/ 9,663 0.85%
掲示板ですな。リピーターさんは何も書かないときでも結構見てるものです。
11. /profile/ 906 0.46%
1ページが馬鹿みたいにでかい。それだけ。
13. /ul/ 2,615 0.20%
電子工学系を今後充実させていきたいです。
14. /links/ 1,435 0.18%
どうでもいい。
15. /hpm/ 1,305 0.17%
欠番の12位は実は一代目HPM。だからそれ以上のところにはいきたい。
16. /midib/ 1,134 0.09%
ミディビはまだまだマイナーな様子。やはり必要な機能を早く実装しないと。
17. /support/ 493 0.08%
必要なときに見てもらえればそれで充分なので。
18. /gift/ 15 0.06%
ずたきゅん専用。
ミディビとダウンロードを頑張らねば。

掲示板が文字化けするようだったので直しました。
GBBS時代の文字数を可能な限り少なくする過剰に省略した書き方のせいで文字コードがブラウザに渡されず結果ブラウザだけの判断で最初のTGWSを見て英語らしいと判断されてしまっていたのが原因だったようです。

ミディビの開発やってます。
アンケートの結果多くの人がアプレット実行可能な環境でないこと、たとえ実行できても正しく音が鳴るとは限らないことがわかったのでそっち方面に改良を加えています。
それに伴いアンケートのほうは終了させました。

フリーのスクリプトとか

ドラクエ5、あの腹の立つカボチのイベントを無視して勝手にキラーパンサーを仲間にしちゃいました。
カカシとメダルはちょっと惜しいけどメダルはエスタークから無限に取れるらしいし、名産品はもう既にどうでもよくなってきちゃったし、娘エリーさえ元気に育ってくれればそれでいいんだし…

放置気味のTscript、そもそも完全オリジナルにする意味はあるのか、と考えてしまう今日この頃。
いろんなサイトで配布されている掲示板スクリプトは何から何までお膳立てしてくれてるものが多いけど、掲示板のコアとなる、記事の読み書きのみを提供したライブラリは少ないのではないか。
いやいやいや、あったらほしいのだ!
それも著作権フリーで、一部流用許可、パクリ上等、みたいなのを。
いやまて、自分で作って配布してみるのはどうか。
とりあえず考えておこう。

パネルγ、特にゲーム的に変更した部分はなし。
計算すると、連鎖で作ったHUGEが730点、smallによる17連鎖が765点、作る手間はそう変わらないので得点バランスとしては悪くない。
ただ、自由度が非常に高いので、できる人はどこまで行くか皆目見当も付かない。
1万点前後で終わるといいんだけど…
エンドレスのほかの、タイムアタックやプレスブレーカーやプラクティスやらのシステムもある程度構想ができたので、エンドレスの部分から、共通化できそうな部分をこれから探していこうと思います。

MIDIB、できるのできないの言ってるばっかりじゃなんにもできないので、Javaの練習も兼ねて、この製作過程をプログラミングコーナーのネタにしてしまおうかと考えております。
で、動きそうになったらためしに設置してみる、と。

一行の壁

レポート早めに終わらせました。
これで遊べ…いや、テスト勉強に集中できる。

掲示板でよく「一行書き込みはやめてください」という記述を見かけます。
別に禁止するほどのことでもないと思うのだが、たった一行のために書き込み一つのスペースと容量を使われるのがもったいないのでしょう。
そのために、一言掲示板なるものを用意するというのもひとつですが、書き込みが分散して全体としては減るまいかと思うんですね。
掲示板なら同じ掲示板として利用したい。でも書き込みひとつに一行というのは…
そこで考えたのが、複数の一行を着込みをひとつの書き込み(スレッド)の中に詰め込むシステム。
例えば、10行の書き込みが普通のところに1行の書き込みが来ると100行が一気に流れてしまいますが、1行書き込みを自動判別してひとつの書き込みに追加という形で投稿すれば流れるのは10行に過ぎないのです。
また、一行でもかまわないという気軽さから、書き込みが増える期待も。
Tscript、どうしようか…
既にあるCGIを使って9割変更するくらいならいっそのこと1から全部作ろうと思って作り始めたのですが、どうも最近はかどらない。

使い分け

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

もう爆発なんてしません

TscripBBSの個別の記事表示を作りました。
本当は個別の記事表示ページには下部に返信フォームとナビゲーション用リンクが作られますが、そこまではまだ作っていません。
それと、一覧表示Allの、次の5件・前の5件のリンクを作る処理も作りました。
今のところ記事が少ないのでリンクは出ていませんが、記事が増えると一番下のナビゲーションリンクの前後にリンクが作られます。

元「SuperBomber丸」だったゲームの改造がほぼ完了しました。
いつまで経っても爆発しない爆弾は人畜無害なスコアボールに(変数名は面倒なのでBombのままに)、制御不能勝負の行方は運任せになるとげとげはプレイヤーの操作で突然動きを変えたりする戦略的なアイテムに、丸に目と口だけだった主人公は丸に目と口と眉毛にと、いろいろ変更を加えました。
うまい人同士が対戦するといつまでも勝負が付かないというのが対戦ゲームでは問題となりがちなのですが、これも、点数が増えるに従って少しずつ少しずつ足場が少なくなっていって最後には全部なくなってしまうので、必ず決着は付きます。
点数制なので、いろんな行動が得点・減点に繋がります。
例えば、落ちれば大減点を食らうため落ちないようにジャンプしつつ足場を移動しなければならないのですが、ジャンプしまくっていれば何も考えなくてもそれなりに長持ちするので、ジャンプすればするほど減点。
スコアボールは出している時間が長いほど得点が貯まるけど、だったらスコアボールを出しまくればいいということになってしまうので、それを出す動作に減点。
もちろんとげとげにぶつかっても減点。
得点を増やす方法はスコアボールを出して、画面内にできるだけ長い間とどめて置くしかありません。他は減点のみです。
あと足りない機能は、大量得点を手に入れるリスクの高い方法といったところです。
そうそう、数値をいろいろカスタマイズするとまた面白いので、今回はソースを圧縮せずにそのまま公開して、各自で自由に数値を変えられるようにしておこうと思っています。

Simpleにしんぷる

TscripBBSのSimpleができました。
設定から一覧表示スタイルでSimpleを選ぶと表示されます。
見ての通り、アホみたいに簡単なので、すぐにできてしまいました。
そして、上のとごっちゃになりそうですが、しんぷるもできました。
設定から投稿内容表示でしんぷるを選ぶと表示されます(ただし今は一覧表示スタイルがAllの場合のみ)。
見た目の指定にタグをあまり使わず、各部分の意味と包含関係を表すためにタグを多く使いました。
例えば、表組みではないのでtableを使わずdivを使ったりしています。
見た目の上では結構無駄なタグが多いんですけどね。

たいふーん

朝、また地震がありました。
昼、台風が来て外に出られませんでした。
夕方、テレビがつかなくなりました。
夜、風は収まってきましたがテレビはまだつきません。

TscripBBS投稿処理作ろうと思って、そうしたらTscriptの個人情報処理を先に作らなきゃいけなくて、面倒臭いんでほっといてどうでもいい部分だけ作りました。
見た目も内容もほとんど変わりありません。

自然災害の多い年ですねぇ

TscripBBSが遂にそれらしくなってきました。
Allときゅーごの表示処理がそれなりにできたのです。
スタイルシートを使ったのでよりウィンドウらしく見せることができるようになりました。
今後は他のスタイルは一旦置いといて、投稿処理を作る予定です。
これができるようになったらテスト投稿もできるようにする予定です。

地震ですよ地震!
怖かったよぉ。
揺れてる間避難経路を考えてました。
マンションじゃ逃げにくい…

絡む蔦

Tscriptの登録された個人情報の取得処理を作りました。
個人情報とは言っても、もちろん実際の住所氏名を求めたりするわけではなく、メールアドレスや自分のサイトのURLなど、掲示板に一般的に書き込まれる程度の情報だけです。
独自の仕様として、メールアドレスは、公開するか否かを指定することができ、メールでの連絡はつけられるけどSPAMメールには見つからない(はず)ということが可能になります。
それともうひとつ、サイト名登録というのがあり、これはつまり、URLだけをでんと乗っけるだけだったり、[Home]ボタンだったりするのよりは見栄えがよいだろうという考えからです。
登録情報を変更すると、自分の全ての書き込みに対して影響があるため、ひとつの記事でのみ別のURLとか、メール欄にsageとかはできません。

デバッグモード

台風ですよ台風。
オリンピックが終わったと思ったら台風ですよ。
風がビュウビュウなってるので家でブルブル震えています。
オリンピックでも戦争は止まらず・・・・か。

そうそう、TscripBBSのログ表示部分ちょっとだけ作りましたよ。
ログの読み込みができていることを示すだけの悲しいほど簡易のものですが。
プログラミングに関しては、一週間前の自分は他人といわれますが、数ヶ月前の私は外人さんです。
ぷろぐらむ見テテモ何ヤッテルノカサッパリワカリマセーン!
デバッグモードというのは、出力結果にデバッグ用の文字を入れて、内部で実際にどんな動きを知るためのもので、それも実装しました。
また、あんまり関係ありませんが、未実装のスタイルを設定するとエラーメッセージが出るようにしました。

過去ログ

日記の過去ログのうち、プログラムの開発関係の部分をダウンロードのページに写し始めました。
本当はTscripBBSを作ろうと思っていたのですが、記号の意味を忘れてしまい、過去の日記を見て調べようと思ったのですが、なかなか見つからず、また、以前からやろうとも思っていたので、これを機に開発日記を作り始めたのです。
とりあえず最初の2か月分、2002年の5月と6月の分を移行しました。
「ふにゃふにゃ」、「ふわふわふにゃ」、「パネルα」、「MusicPlayer4」、「MusicPlayer5」、「Bomber丸World」、がでています。
今更言うのもなんですけど、日記の過去ログから関係する部分を抜粋してきただけなんで、抜け漏れがあったり、現在と文体が違っていたり、前後の文脈がない関係で少し意味不明だったり、明らかにいい加減にしか語られていなかったりしますが、まあ気にしないでください。

品質悪し

先週の映画の続きを見ました。
じーさんが酒飲み過ぎて家に担ぎ込まれて、実は女の子と喜んでたらしくて、じーさんの友人のダンナさんが死んで、その友人も心臓が悪いらしく死にそうなところで授業終了。
ことあと本当に死んじゃうらしいです。

TscripBBSのテスト用のログを作っていました。
ついでに、掲示板の一覧表示方法に、「All」を追加しました。
親記事一覧ではなく、記事を直接表示して並べます。

ダウンロードの注意事項に「品質」を追加しました。
ものすごく頼りないことが書いてあります。

ラッキー7

ドラクエ7のスロットで777を出しました!
今までドラクエやっていて初めてのことです。
それで賭けていた500コインx300倍で150,000コイン入手。
ついでにボーナスゲーム30回でスライムを1回揃え、+1,000コイン入手。
見事メタルキングヘルム3つを入手することに成功しました。

ドラクエ5では、とりあえず入手した種や木の実は全て未来を担う子孫のために残しておくことにしました。
そんなことを考えながらビアンカちゃんとオバケ退治に行くゼボット6歳でした。

Tscriptの開発を進めています。
今は何も表示されませんが、一応サンプルデータを作っていて、表示処理を作れば一応それっぽくできます。

気付く人は気付くと思いますが、ゲストブックをやめてバグ報告フォームを設置しました。
こちらのほうが意味があると思うので。

エリーはどこだ

CGIを除くほぼ全てのページにナビゲーション用リンクをつけました。
要するに、「戻る」リンクの強化版ですが。
これをつけたらなんだか急にカウンターが回りだしたような気がします。

Tscriptの開発を再開しました。
とりあえずCSSを適用してみました。
これから書き込みサンプルを入れるため、色サンプルは消しました。

ドラクエ5始めました。
主人公の名前を「ドレイ」、息子の名前を「しゅじん」、娘の名前を「ともだち」にして、ゲマが捕まえたのは元々ドレイで、主人公の息子のしゅじんが現れて、魔王がともだちの命を狙う、というとても楽しいふざけた世界にしようと思っていたのですが、弟の激しい反対に遭い断念。
結局主人公の名前を「ゼボット」にすることで名前が決定しました。

<前 次>