日記(955)

<前 次>

ハーモニック

新しいラインブレイカ、早くもダイアログ作成の段階で手間取ってます。
グループボックス(VBでいうフレーム)の中にコントロールを入れてもグループ化されないんですよね。
それにエクスプローラからのドラッグ&ドロップの方法もわかってませんし。

ふにゃさんの13面の攻略ページが出来上がりました。
最難関ステージだけあって画像点数もトップクラスです。
そうそう、ふにゃさんのページのギャラリーとトップを改装中です。
JavaScriptに依存せず画像表示ができて、ギャラリーページの内容を他にも使いまわせるように、PHPで書いてみようかと考えています。

Bomber丸Worldのバトル2の曲をハーモニックマイナースケールにしてみたら暗い曲から怖い曲になりました。
特に出だし部分の印象が激しく変わるのですが、逆に後半部分は何も変わりませんでした。

1162911365.mid

msxml

更新しました。
結局書いたコードをどう扱うかでちょっと延びてしまったということなんです。

ラインブレイカのことなんですが、未来を見据えてここは.NETでやってみるか、それともマイナーバージョンアップということでVBのままいってみるか、予定通りC++でゴリゴリ書くか、迷っているところです。
C++が現実的だとは思うけど、ダイアログ作りから何から自分で作らなきゃいけないし…。

Bomber丸Worldのデータ構造読み込み機能、実は無理にXMLにする必要は無いんです。
うん、MSXMLのバージョンとかインストールとかがややこしそうだったので。
TGscriptを作っているときに見つけたPHPのserialize関数がなかなか便利なんですよ。
配列などのデータ構造をそっくりそのまま文字列にして出力できて、unserializeで復元できるんです。
で、その結果というのがいかにもコンピュータに優しい形式で、構造を表すだけならXMLよりむしろ作りやすいような気がするんです。

何でもかんでも値を持つ

今日プログラミングのところを更新しようかなと思ったのですが、今回から本当にインタープリタを作り始めることになるのでもうちょっときっちり作りこみながら書いていかないといけなさそうなので、もう一日ぐらいおいておいてからアップしようということになりました。
今度の更新分は「値」に焦点を絞って話をします。
もうちょっと何かを書こうと思ったのですが、まあ、あまりよいことではないので書かないでおきます。
悪いことがあったわけではありません。

IDの数値

TGscriptのIDをどうするか考えていました。
例えばIDをファイル名として記録していた場合、不正利用者がLinuxのコマンドをIDの代わりに送信してきた場合に非常にまずいことになるのです。
ですから通常CGIなどでは外部からの入力をそのままファイル名として開くようなことはしません。
しかし今回はたくさんあるかもしれないIDをファイル名として扱ったほうが非常に都合がいいと思われるのです。
そこで、IDを数字にすることで、コマンド実行をできなくすることにしました。
もちろん数字じゃなくてもコマンド実行をできなくすることは簡単ですが、ID生成のとき乱数をそのまま使えたり、IDに使われる文字の種類が少ないというだけでも充分に意味はあります。
さらに、ID偽装防止のためのキーも用意したりしました。
もっとも、ID偽装防止のキーを使うのはIDを使って悪さができる段階、つまり書き込みのタイミングのみですが。

キ モ チ イ イ‥‥

ラインブレイカ、やはりかなり効率の悪いプログラムでした。
とりあえずCで書く方法は漠然とは思い浮かんでいます。
一行読み込んでは一行書き出して、というプロセスでやると行数に正比例する時間で済むようになるのです。
そして更に、1バイトずつ読みながら1バイト単位で文字列を比較するアルゴリズムも考えています。
メモリ使用量も、核となるアルゴリズムの部分では、一行のデータと、削除対象の文字列と、文字列の一致状況の分のデータだけなので、かなり少ないはずです。
少なくとも元のファイルサイズ+変換後のファイルサイズとなる現状と比べれば圧倒的に。

マザー2のページにギーグのセリフを追加しました。
ギーグのセリフって14種類あるんですね。
知らない人が14種類と聞いたら少ないと思うかもしれませんが、実際にやった人からすれば意外と多い数字じゃないでしょうか。

<前 次>