「プログラミング」に関する日記(22)

プログラミング関係の話題。プログラミングコーナーを更新したとか、プログラミングの内容に踏み込んだ話とか。

<前 次>

無題

研修で数式を計算するプログラムを作りました。
昔コンパイラを作ろうとしたときの経験が役に立ったような気がします。
C++/CLIも久々に触ってみたけどやっぱり私には合わない気がします。
ネイティブコードとマネージコードを混在させられるという利点はあってもそのせいでややこしくなった面もあるし…。

不良品金庫

さて、研修中にアルゴリズムに関する問題が出されまして、それが一見すると途方にくれてしまいそうな内容でして。
それは、不良品金庫の問題。
電子鍵とボタンとランプが1個ずつある金庫があって、今はボタンを押すと鍵が開く仕様になっているので、ハードウェアは変えずに鍵の制御を行うプログラムの改良だけで金庫として機能させろというもの。
ボタンはたったの1個だけ、数字の表示もできない、でも考えれば案外何とかなるもので。
一応金庫にはいくつかの制御用APIが用意されていて、それを使ってボタンの状態を得たりランプを光らせたりすることができます。
一応私が作ったプログラムも用意しました。
kinko.hにある関数のみ使用可能で他のヘッダファイルはインクルード禁止と考えればいいかと。
ちなみにウイルス感染したUSBメモリから持ってきたファイルなので見るときはあらかじめウイルスチェックを忘れずに!

1211122329.lzh

繋がらん

う~ん、今度はローカルではうまくデータベースに繋がるのにサーバーにアップすると動かないという前とは逆の現象が起きるようになりました。
どうもリモートじゃないファイルにリモートアクセスしようとしたからっぽい?
…でもなさそうな気もするんだけど…。

データベース中継

さて、うちのデータベースはここのサイト以外の場所からのアクセスを禁止されていて、そのままではローカルテストができないので、データベース処理の中継用のスクリプトを書いてサーバーに置いてみました。
PHPのお節介仕様のおかげで多少問題はありましたが大方うまくいったようです。

シリアライザ

メテオンもどきで惑星パラメータやオプションなどの保存に利用したFieldSerializerを公開しました。
あと、簡単な更新ネタとしては、うちのサイトで使っている雑用JavaScriptのtenuki.jsの公開もいいかもしれません。

orgはいらない

今日はJavaとPHPのドキュメントをダウンロードしてました。
別にオンライン版でも良かったんですが、明らかに使わない項目までたくさん載ってるのでそういった部分の除去のためにローカルに保存しました。

O(n)

うえーい。
離散フーリエ変換のプログラム作成しています。
もともとある程度の周期性があるデータなので高速フーリエ変換に頼らずとも相当高速に処理ができそうです。
まぁ、もともと高速フーリエ変換が適用しにくいデータだったんですけどね。

ワドルドゥボール

なんか別のワドが出てきました。

あと、プログラミングコーナーも改装し始めました。
ん~。でも古いコンテンツは正直恥ずかしいなぁ…。

FFT

卒研に使う解析プログラムのフーリエ変換の部分を高速フーリエ変換によって実装しなおしてます。
今まで素直に計算しすぎていました。
あまりに時間がかかりすぎて非現実的だったので。

VistaでのBomber丸World開発環境

メテオンもどきを改良していました。
まず、旧形式のデータを投稿してもエラーが出ないようにしました。
そして、お試しプレイ前にデータ抽出してもちゃんとデータを取れるようにしました。

そうそう、VistaでのBomber丸World開発環境を整えました。
DirectX8SDKを入れてVC6を入れればそれで終わりだと思っていたのですが、ディレクトリ設定で優先するディレクトリを間違えて設定していたため、一部のライブラリが古いほうを使われ、リンクに失敗するということがありました。
もちろん今ではそれも直しましたが。
メテオンもどきでやることがないときはこっちのほうを開発しましょうかね。

移植失敗

前のパソコンから一部ハードを移植してこようと思ったのですが、ケーブルが取り外せず、新しいほうにもケーブルを差し込めそうな部分が見当たらなかったので、断念しました。

そして今、RSS配信プログラムを作っているところです。

そういえばそれとは関係なく気になったのですが、VS2005上でデバッグしているプログラムは、Vista環境ではエクスプローラからのドラッグ&ドロップが効かないんですね。
リリースコンパイルしたものでは当然可能なのですが。

更新情報RSS化計画

VisualBasic起動したらなぜかいきなりOfficeのインストールが始まりましたよ。と。
従来式のヘルプが表示されなかったり、一部で文字化けが起こったりもしています。
また近いうちにVista対応状況でもレポートしましょうかね。

それはそうと、更新情報を普通のHTMLから、RSSに変更しようかと考えています。
私自身はRSSは特に使っていない(というより、あふれかえる更新情報についていけてない)のですが、しかしいちいちチェックしに来なきゃ更新があるかどうかわからないというのも閲覧者にとって面倒くさかろうということで、RSSの利用を考え始めました。
一応、情報を出しすぎて閲覧者を混乱させないために、コンテンツごとに別々のRSSを配信しようと考えています。

Visual Studio on Vista

今日は本格的に開発環境をインストールしてました。
VisualC#は無難にExpressEditionにサービスパックを当て、VisualC++は6.0は使えないらしいのでやはり最新の2005Expressを入れ、VisualBasicは6.0でもVistaに対応しているらしいのでそのまま使おうとしたのですが、どうにもVB6のVista対応は「VB6で作られたソフト」についてだったようです。
まだ実際に起動はしていませんが、どうなることやら…。

フィールドシリアライザ

メテオスもどきの惑星パラメータの文字列による出力が出来上がって、今は文字列を入力として惑星パラメータを復元する部分を作っているところです。
ほかにも、描画システムを見直したりしてました。
まあ、結局もとのやりかた以外は全然うまくいかなかったため戻したんですけどね。

ツールの登録

DirectMusicツールの更新のときに書いた、「次の機会」のところを更新しました。
とはいっても、ほぼ定型文なので大した内容にはなりませんでしたが。
あと、ツールの作り方のページでのメッセージの扱いについて少し修正しました。

メテオスもどき、縦切り離し点火の特例ができたのでアップしてきました。
Qに送る文章も考え中です。
自分を正当化しつつ、相手にとっても損がないように、考えてるところです。

IDirectMusicTool

今日はプログラミングコーナーを更新しました。
国内ではあまり記述を見かけないDirectMusicツールについて書きました。
Bomber丸Worldで使う予定の技術なのでちょっとお披露目です。
今検索したところ、海外でもあまり丁寧な解説してくれてるサイトはないみたいですね。

キー&マウス入力処理

メテオスもどき、リソースを読み込んで表示するところまでできたので、今日はキー&マウス入力処理を作りました。
Javaには現在のキー&マウスの状態を直接的に得る方法はないので、イベントを拾ってそれで状態を検出しています。
このあたりは昔VisualBasicでAPIに頼らずゲームを作っていた頃の知識を使っています。

メディアトラッカー

メテオスもどき、効率の良いリソースの読み込みを考え中なのです。
ロード時間を体感的にゼロにしたいんですよね。
なので、最初に画像を必要としない画面を表示して、その裏で別スレッドでMediaTrackerを動かして読み込むことにしました。
あと、メインスレッドの動作をアプレットのクラスに組み込んで全体をすっきりさせたり、後々に響きそうな部分の最適化とかをしていました。

再コンパイル

アプレットテスト用のPHPを改良して更新されていないクラスは再コンパイルしないようにしました。
クラスファイルの最終更新日時とソースファイルの最終更新日時を調べてソースのほうが新しければ再コンパイルします。
で、それで作っているメテオスもどきのほうは実はほとんど進んでません。
画像を出すぐらいは作りたかったんですけどね。

マスクを使わなかったら?

どうも~。
とりあえず今日は前から更新しようしようと思い続けていてずっとしてこなかったActiveBasicのコーナーを更新しました。
当たり前のようにキャラ画像にマスク画像をつけていたので、それをつけなかった場合にどうなるか、というのを実際に試しました。
それと、ついでにActiveBasicの公式サイトのURLが変更になっていたのに合わせてリンク先も変更しました。

<前 次>