「ラインブレイカ」に関する日記

キノコ無しでは生きられぬのか

マリオ64、炎の海のクッパで撃沈しました。
1階から2階に上る途中のポールの先で追跡型キノコが出てきましてね。
どうにも逃げ切れません。
所詮マリオはキノコが無いと生きられぬ運命なのか…。

Lunascape4のデザインいじりは順調です。
昨日言っていた再起動のことは、フォルダの設定を間違えていて認識されなかったためで、再起動とは全然関係なかったようです。
Luna4のスキンの特徴として、topleft.bmpがないとタイトルバーのスキンが無いと判定されるようで、逆にtopcenter.bmpはなくても問題なく表示されました。
そんなわけで、今の私のLuna4は右上のボタン以外はWindowsXPほぼそのままです。
もっとも、非アクティブのときのデザインが設定できなくて気持ち悪い部分があったりするのですが。

そうそう、LineBreaker2はなかなか感動的な速さです。
VBで作っていた1では処理中他の作業をして時間を潰していたのに、2はわずか2秒で終了なので他の作業をする暇がないんです。

そうそう、ミディビの迷惑書き込み対策はこっそり完了です。
問題のある内容であれば問題がなくなるまで書き直しさせます。
文章投稿と返信記事でのみ動作確認済みですが、多分MIDI投稿のときにもちゃんと動いてくれてると思います。

散髪に行きましたぞ

ラインブレイカ2の動作は良好です。
もう少し速くてもいいかと思ったのですが、とりあえずは許容範囲内でした。
もっと速くしようと思ってクラスの動作を調べるためMSDNライブラリを調べようとしたのですが、今日はサーバーに繋がらず、結局わかりませんでした。
とりあえずまずまずの速度は出ていたのでいったん開発が中断されるかもしれません。

中核

ラインブレイカの中核となる処理を書き終えました。
最初構想していた素晴らしいアルゴリズムは若干面倒臭そうだったので、実装の簡単そうなやや非効率的なアルゴリズムで作ってみました。
後は動作テストが済めば自分で使う分には充分な出来になります。
ただ、改行コードの設定がまだできなかったり、設定の保存も後回しになっていたりするので、一般公開までにはまだ時間がかかりそうです。

ラインブレイカ2

ラインブレイカ2のエンコードの種類を選ぶ画面はできました。
初期状態ではUS-ASCIIが選択されていますがたくさんあるエンコードから日本語を選ぶこともできます。
改行コードと削除対象は今までに入力したものの履歴を残すことができますが、エンコードだけはその性質上履歴は残さず最後に使ったものだけが次の起動時に考慮されます。

1163170630.png

ラインブレイカC#

ラインブレイカの新バージョンはC#で作ることにしました。
まず、VBでは高速化があまり期待できないこと、C++では面倒すぎること、そして、見つけたOLEドラッグ&ドロップのサンプルがたまたまC#だったことなどがあって、C#に決まりました。
C#ならば起動は遅くなりますが、ライブラリが充実していて多機能化も容易ですし、メインフォームを作るのも簡単なので、そこそこはかどりそうです。
Cで考えたアルゴリズムもC#ならばほぼ問題なく使えます。
ただ問題があって、それは、C#で通常使う文字コードがUNICODEなんです。
ただ、これを対象となるファイルの文字コードに変換することができれば、逆に様々な文字コードに対応も出来るということになります。

ダウンロードのトップページを軽量化しました。
THタグの中身をスタイルシートで改行しないようにしたのを忘れてNOBRを入れっぱなしにしていました。

ハーモニック

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

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

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

1162911365.mid

msxml

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

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

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

キ モ チ イ イ‥‥

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

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

日記の日記

ラインブレイカ、どうせ根本から考え直すならいっそのことCで書き直して思いっきり高速化しようかななんて考えたりしてます。
アルゴリズムはある程度考えています。
バックアップはオプションじゃなくて必ず作るようにして。

日記のカテゴリに「日記」を追加しました。
日記そのものについて書いた日記もたくさんありますので。
それと、日記のファイル構造も根本から見直そうかと考えたりしています。
さすがに日記のログが1500日分を超えてファイルサイズも1MBを超えてしまうといろんな部分でつらくなってきます。

久々ラインブレイカ

バトル4のMIDI、着実に進んでいます。
あの曲はバイオリン・ピアノ・フルート・太鼓の4つが入った曲なので、一つ一つにきっちり特徴をつけながら作っています。

爆ボンのページを更新しました。
最近は参考タイムばっかりですけどね。
ブラックシティ4面をクリアしてレインボーパレスへ、そしてレインボーパレスの1面をカード5狙いでクリアして、2~4面はそのまま一発で全アイテムを入手しました。
というわけで残すはレインボーパレス1面のカード5以外のアイテムです。

今更ながら、ラインブレイカ、めっちゃくちゃ遅いですね。
今日、27日から29日にかけて異常な数のアクセスがあったことに気付いて調べていたのですが、要らない情報の削除のためラインブレイカに通したら普段なら数分以内で終わるところが高々10倍程度のデータ量で数時間経っても終わらなくて、どうにも効率の悪いアルゴリズムを組んでしまったために行数の2乗以上のオーダーで増えているような感じがします。
だとするとメモリ使用量も不必要に多い可能性が考えられるので、一度根本からソースを見直そうと思います。

簡易アクセス解析でも似たようなところで高速化ができるかもしれませんね。
こちらは根本からではなくちょっと手直し程度で。

CGI関連

「簡易アクセス解析」をバージョンアップしました。
検索語チェックの強化と、詳細検索の機能です。
ちなみに、ここの「簡易アクセス解析」は、「簡易アクセス解析」で検索をかけると第一位に出てきます。
他のところの簡易アクセス解析はいわゆるおまけであるため、そのものズバリで、なおかつご丁寧にも「<a href="accesslog.html">簡易アクセス解析</a>」と名前でリンクを張っているここの簡易アクセス解析は必然的に上位にランクされるのです。

「ラインブレイカ」も同時に公開しました。
ファイルから特定の文字を含む行を削除します。
ただし、改行コードの違いや特定の文字の設定ミスなどで消しすぎてしまうことがあるので(場合によっては全部ごっそり)、初期設定でバックアップファイルを生成するようにできています。

アンケートCGIを作り始めました。
改造である程度CGIには慣れたので、今回は完全オリジナルでいってみようと思います。
いろいろ聞いてみたいことがあるので。