無題
ナマライザの統計画面の構造変更はうまくいきました。
ついでにバックグラウンドでの読み込みにも対応しました。
あとは、統計項目の追加もそうですが、メモリ使用量低減のための工夫も必要そうです。
ナマライザはメモリ使用量がログ件数に比例して肥大化するので、メモリが潤沢にあると仮定した高速化をするとかえって遅くなることが多いのです。
ナマライザの統計画面の構造変更はうまくいきました。
ついでにバックグラウンドでの読み込みにも対応しました。
あとは、統計項目の追加もそうですが、メモリ使用量低減のための工夫も必要そうです。
ナマライザはメモリ使用量がログ件数に比例して肥大化するので、メモリが潤沢にあると仮定した高速化をするとかえって遅くなることが多いのです。
NeoMuplのMCI再生を作り始めました。
最悪DirectMusicでエラーが起こるものはMCIでなんとかなるかと。
ならなきゃもうどうしようもありません。
ナマライザは読み込みの高速化はひとまず置いといて、機能強化のほうに着手しました。
前々から欲しいと思っていた、そして前身の簡易アクセス解析にはあった、検索語レポート機能です。
統計画面につけているところですが、そろそろ統計画面が重くなってきたので、まず機能追加で重くなりにくいような対策からはじめることになりそうです。
C#用単位・数値変換クラスにバグがあったので修正して、昨日言っていたサンプルも同梱して最新版として公開しました。
サンプルのほうは配布ページからも参照できます。
ナマライザの高速化のために自前のアルゴリズムでファイル読み込みのバッファリングをしてみたら帰って遅くなりました。
で、ためしに普通のBufferedStreamでバッファリングしてみたら速くなりました。
やっぱりC#で自前で書いてるものとは根本的に違うんでしょうね。
でも高速化できたとはいえ5%ほどであり、目覚しい効果とまではいえそうにありません。
ナマライザの読み込み改良版ができました。
まだ動作確認をしていないので、動作確認ができたら更なる最適化を目指してみようと思います。
ナマライザの読み込みが遅い気がしたので読み込み処理を作り直していました。
読み込みバッファを大きく取ればいいかと思ったのですが必ずしもそうではないようで。
ふと思い立ってナマライザをいじってました。
今まではディレクトリのインデックスがエクスプローラ画面からうまく開けなかったのでそのあたりの改良を。
今日はちょっとナマライザに細かい新機能をつけました。
それが、フィルタの並べ替え。
フィルタ条件が多くなってくると見通しが悪くなるので、並べ替えたり整頓したりして見通しを良くしようということです。
あとは、どんなデータがやってきても例外を出さない安全なクリップボードを作って、解析中にエラーで中断されないようにしました。
今日のメテオスもどきは、縦移動を作りました。
昨日の段階で横移動と同じではうまくいかないということはわかっていたのですが、想像していた以上にてこずりました。
しかも、やっと縦移動できるようになった今現在の状況でも、縦移動した後すぐに横移動、そしてその逆もできない状況なので、その点の改善が必要になりそうです。
ナマライザいじってました。
本当にやりたかったログの分析です。
まあ、要するに各項目ごとの出現数の統計というわけなのですが。
色々試行錯誤しながら、まあまあ順調に進んではいます。
ナマライザをいぢくってました。
まず、ログフィルタを通したログの扱いを変更。
読み込むかどうかを判断するための読み込みフィルタと、解析対象にするログの絞り込みを行うための解析フィルタに加えて、今回新たにウィンドウごとに更に細かく絞り込む詳細フィルタをつけました。
つまり、例えばエラーが出ているファイルのうち、favicon.icoだけを見たいとか、そういうのに対して使えるはずなのです。
そして、フィルタそのものもバージョンアップして、文字列関係には、「~で始まる」「~で終わる」なども指定できるようにしました。
本当にやりたかったログの分析はこれらの作業のため今日は作れませんでした。
ナマライザの動作確認もかねてひたすら過去のアクセスログを見てました。
細かなバグも直しました。
しかしリファラスパムが100件以上ってどうよ…。
また唐突にナマライザです。
ナマライザでフィルターの掃除…じゃなくて、保存と読み込みを作ってました。
まともなアクセスログばかりだったら別にフィルターの保存と読み込みなんて必要ないのですが、リファラスパムが最近非常に増えてきているので、毎回の入力を省いて一発で弾きたいのです。
またナマライザいじってました。
解析周りの面倒な部分は後回しにして、ユーザーインターフェイスの改善をメインに。
開いたファイルを読み直したい場合に、閉じて開きなおすのは面倒&たくさんファイルがあるとなお面倒、ということで、全部閉じる機能と、読み直す機能をつけました。
これでかなり便利になるはずー。
と思って使っていたら、なんだかログデータのほうが微妙におかしなことになってました。
軽くて高機能らしいGreenBrowserとやらを導入してみようと思ったのですが、ダウンロードできる公式サイトがとんでもなく重くて、ブラウザ乗り換えの重要なポイントに公式サイトの軽さやインストールの簡便さもあるなと感じました。
で、評価も実績もあって公式サイトも軽かったSleipnir2を入れてみました。
1とは別のソフトでありながら同じ名前のバージョン違いという名前のつけ方であるため少々ややこしい部分がありますがとりあえず今後の発展を期待して2を選びました。
それと、久々にナマライザいじりました。
リスト表示に右クリックメニューをつけて、項目の内容をクリップボードにコピーできるようにしました。
あと、フィルターのコピーや保存もしたいので、フィルタの保存場所みたいなものも作ろうかと考えています。
名前をどうするかが思いつかないのですが…。
まだ使い道はありませんがTGscriptのパスワード記録を実装しました。
今後は、掲示板の書き込みの削除・編集、プロフィールデータの復活、専用アイコンの使用制限などでの利用を考えています。
あと今日はナマライザのファイル情報表示ウィンドウにファイル名を渡して表示するところを作りました。
中身はまだ全然ですけど。
ナマライザ、ふと思いついて読み込みを本体とは別スレッドにしようとして、BackgroundWorkerを配置して、読み込み待ちのファイル名のキューを作ったところで急にやる気がなくなって、突然LDrawのデータをMetasequoiaの形式に変換するLDR2MQOを作り始めてしまいました。
なんだかListViewのSortの挙動が怪しかったので、Array.Sortを使って自前で並び替えを実装しました。
そして今度は一度読み込んだログの破棄を実装してみました。
そうそう、最近NeoMuplもC#で作り直そうとたくらんでいます。
別に現在のVB版では致命的な問題があるわけではないのですが、どうにもセーブデータのいじるのが果てしなく面倒なのですよ。
いえ、果てしなくというほどでもないのですが、新要素の追加は行いたいのですが、それに伴う色々な部分の細かい改変が面倒なんですよ。
機械的な作業なのに自動化できなくて、面倒なだけの入力が続き、こういうのがつまらないミスを生み出して、つまらないがゆえに、もっとすごいところでミスしているのだろうと思い、見当違いなところばかり探す羽目になって、無駄な苦労を増やすばかりになってしまうのです。
で、そういうところを自動化するようなプログラムはVBではなかなか書きにくいので、他の言語に移そうということなのです。
特に曲の情報の入力フォームの統一は今のプログラムでは非常にやりにくいので、ユーザーコントロールを簡単に作れるVisualC#で開発したいということなのです。
LDrawのレゴのデータをMetasequoiaに移そうと頑張ってたんですが、標準で普通の3Dデータに変換できるPOV-Rayを使ってみてもMetasequoiaはPOV-Rayのデータは読み込めないし、DXFやLWOとかのデータ経由でインポートしても全然正確なデータが得られず、こうなったら自分で一肌脱いでLDrawのデータから直接Metasequoiaのデータに変換するソフトを自分で作るしかないと考え、とりあえず双方のファイルフォーマットを確認していたのですが、これがまた面白いですね。
LDrawのデータには実はテクスチャの概念がなく、絵に見える部分も実は全部ポリゴンで表現していたりするんですね。
それに、線の引き方にしても、境界線のみを表示するために線に追加データを付け加えたりしているところあたり、興味深いです。
で、実際に色々なことを自分のソフトでやるのは面倒くさいので、単なるポリゴンデータの塊にするところまではLDraw側のソフトでやってもらい、その先のLDraw式のポリゴンをMetasequoia式のポリゴンにするところだけを自分で作ろうと思い、ためしにLDraw式のポリゴンにまで変換して結果をMLCADで開きなおしてみると、見事に色が消えてしまいました。とほほ。
どうにも全部自分で変換するしかなさそうですが、どうにも色の概念だけがいまだによくわかりません。
説明がなんだかねぇ…。
そうそう、ナマライザのエクスプローラ表示は結構いい具合にほぼ完成しました。
最初びっくりするようなデータが出てきて、プログラムのミスではないかと思ったのですが、どうやらびっくりするほどおばかさんなロボットがやってきて歩き回った記録が残っていただけのようでした。
表示アイコンはディレクトリとファイルの2種類にそれぞれステータスコードごとに3種類ずつ割り当てて計6種類使っています。
ステータスコードごとの割り当て方は、2xx系が普通のアイコンで、3xx系が青いマーク、4xx以降を赤マークにしています。
ふにゃさんが一区切りついたのでナマライザ作ってました。
ListViewでもDataBindingが使えるかなと思ったのですが、どうにもDataBindingが適用できるのはどうでもいいプロパティばかりで、肝心のItemsプロパティには適用できなかったようです。
おかげで自分で表示を更新するプログラムを書かねば…って、本来これが当たり前なんですけどね。
まあ、表示そのもののプログラムは、表示するべきデータを用意するプログラムと比べればずっと単純で楽な作業であるはずなのでいいと思うんですけどね。
いやー、使ってみるとなかなか便利ですね。
データバインディングとやらは。
データを与えれば勝手に表示してくれるのでプロパティの設定さえしてやればコードは一行で終わってしまいます。
爆ボンのラスボス戦のスピード攻略とその録画をやっていたんですが、なかなかうまくいかなくてかなり参ってしまいました。
何しろ初っ端で爆撃を始めてくれるかどうかがランダム、爆撃が終わってからお手玉で運べるかどうかもランダム、レグルスの奇行もランダム、で、シリウスが早い段階で攻撃してくれるかもランダムで、それを反撃に活かすのには微妙なタイミングが必要で、まあ、つまり、ものすごく運任せだったということです。
それで何十回となくやり直したんですが、一度成功して、それがほぼ完璧ながら少しだけ不備があり、だめもとでもう一度だけ録り直しをしてみたら、連続で成功してしまいました。
それもよりパーフェクトな状態で!
ナマライザのフィルタ処理が全部出来上がりました。
で、今度はログの時系列一覧表示を作るためにDataGridViewについて調べています。
前の簡易アクセス解析ではパフォーマンスの都合上表示件数が限られていたのですが、今回はどうなるでしょうか…。
一応、無理ならば自作するつもりでいます。
さしあたりは、DataSourceをどう扱うかを考えています。
爆ボンのリッパー戦のスピード攻略を書きました。
動画も一緒にアップロードしてます。
なんというか、本当に、スピード攻略では普段当たり前に使っている方法が逆効果だったりして、意外な攻撃方法が有効だったりして面白いものです。
今回は、ボムは蹴ってはいけない、投げるのも極力避けるべき、と、普段とはまるで違うやり方になってしまいました。