ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

JavaFX2 TableView

2012-06-17 12:10:03 | PG(Java)

JavaFX Scene Builderを1.0-beta42にバージョンアップしてみた。
自分がScene Builderを使い始めたときはbeta32だったが、メニューが日本語になったりパネルの種類が増減したり、色々変化している。
コントローラークラスを指定する場所が変わっていて、けっこう手間取った^^; 

で、Table Viewを試してみた。
beta32ではTableViewに列を追加することが出来なかったが、beta42では出来るようになっていた。
なので、テーブル(表)にデータを表示するのはけっこう簡単に出来る。
ただ、実行時にユーザーがテーブルのセルを編集(値を変更)することは(簡単には)出来ないような気がする。もうちょっとバージョンアップを待たないと駄目かな?

そういえば、Scene Builderってまだ「Developer Preview」版なんだよね^^;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ドラスレ4パスワードサポート2改

2012-06-17 01:17:48 | ツール

ファルコムのドラゴンスレイヤーIVの、Windows上で動くエミュレーター版のパスワードを入力する支援ツールの改良版を改造した。

DS4のウィンドウを見つける為にJNI経由でWin32APIを呼び出していて、戻ってこないから別プロセスで実行するようにしていたのだけれど、全てのWin32APIが駄目という訳ではなくて、ウィンドウの列挙(EnumWindows)は上手くいっていて、取得した各ウィンドウのウィンドウタイトルを取得(GetWindowText)しようとする際に、取得できるウィンドウと出来ないウィンドウがあるという事に気付いた。
DS4のウィンドウはちゃんと取得できるけど、何かのウィンドウではGetWindowTextが戻ってこないので、全体として駄目という状態になっていたというわけ。

そこで、Scalaのfutureを使ってGetWindowTextを全部別スレッドで行い、一定時間以内に返ってきたものだけ判定に使うようにしたら上手く動いた。(DS4のウィンドウはちゃんと操作できるので、一定時間内に戻ってくる)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GCJとYAESSのエラー

2012-06-16 11:01:28 | PG(分散処理)

AsakusaフレームワークYAESSを使ってて、不可解なエラーが出た。
「ASAKUSA_HOMEが無い」って、ちゃんとあるがな!

なんか、GCJ(GNU Compiler for Java)が入っているとそういう挙動になるらしい。
PostgreSQLをインストールしたときにgcjが入ってきて何だろうとは思っていたけど、そんな影響があるとは(苦笑)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ドラスレ4パスワードサポート2

2012-06-10 18:21:47 | ゲーム

ファルコムのドラゴンスレイヤーIVの、Windows上で動くエミュレーター版のパスワードを入力する支援ツールの改良版を作った。

以前にも作っていたのだけれど、今回はMSX Game Playerにも対応した!


今回なぜ改良しようと思ったのかと言うと。

ここのところ、Twitter上で「」・ω・)」うー!(/・ω・)/にゃー!」ってのが流行ってて、何だろう?と思ったら、『這いよれ!ニャル子さん』のアニメの所為らしい。
クトゥルフがらみだというので存在は知っていたけど、原作ではMSXも出てきたらしい(なぜ?!)ので、どんなものか見てみようと思って、ニコニコ動画のユーザー登録をしたわけさ。(ユーザー登録しないと見られなかったので)

で、せっかくユーザー登録したので、ゲームのプレイ動画を色々見ていたら、ドラスレ4もある!
しかし、そのうちの一つが、えらく下手くそで…。これならさすがに自分の方が上手だ!ってわけで、久しぶりにドラスレ4をやりたいと思い立った。

ところが、秀和システムの『楽しい!!MSXエミュレータ&ゲーム』版は、Windows7でインストールは出来たけど、音楽が鳴らないorz(ドラスレ4は音楽も素晴らしいのだ!)
まぁそれはとりあえず置いといて、以前作ったパスワード入力支援ツールを使おうと思ったら、必要なDLLがWindows7に無くて動かない!
作り直そうにも、なにせVC++4.0時代に作ったものだから、今さら開発環境を構築するのも大変だ…。

また、エミュレーター版が動かないなら、これまた昔買った『MSX Game Player』(実際のMSXのROMを読み込んで動作する)はどうか?と思って試してみたが、これはWindows7ではインストールも出来ないorz

仕方が無いのでVMware PlayerでWindows XPをインストールしてみたら、こちらでは動いた。
(キーボードが英語キーボードになってしまうようで、どう打てばいいか分からないキーがあるが。例えば「け」は「:」では駄目で「;」キー、「へ」は「け」である「:」キーを押す必要がある。特に問題なのが、MSXの「SELECT」キーがどれになっているのか。MSX Playerでは「Page Down」に割り当てられていたのだが、Windows XP Modeでは反応しない)
ただ、パスワード入力支援ツールは、特に画面からの読み込み部分はパスワードが表示される位置が微妙にずれていて、そのままでは読み込めない。
また、MSX1版(これまた以前中古で買ったもの)はフォント自体が違っているようだった。 

という訳で、最近ScalaJavaFX2を勉強してることだし、JavaFX2+Scalaで作り直して、MSX Game Playerにも対応させてしまえ!
という事で作ったのでした。


Scala+JavaFX2自体はまぁ普通のプログラミングなので、特に難しい事は無い。
画面デザインはJavaFX Scene Builderの練習になるし。 

問題はウィンドウに対してキー入力メッセージを送ったり、画面を読み取ったりすること。
画面の読み取りは、JavaにRobotクラスがあるのでまぁ問題無いが、
対象のウィンドウを特定したり、キーメッセージを送るにはWin32 APIを使う必要がある。
まぁこれも昔作ったJavaからJNI経由でWin32 APIを呼び出すライブラリーがあるので、何とかなる。

と思っていたのだが、JavaFXアプリケーションからJNI経由でWin32 APIを呼び出すと、制御が返ってこない…!orz (エラーにもならず、無限に待ち続ける)
JavaFXアプリでない普通のScalaアプリから呼び出すとちゃんと動作するので、Windows7の所為では無いようだし。
スレッド関連の影響かと思って、自分で別スレッドを作って呼び出すくらいは試してみたけど、やっぱり駄目。
仕方が無いので、別プロセスを起こしてWin32 API呼び出しだけ別途実行するようにしてみた。動作はしたけど、まぁ面倒な事で(苦笑)

JavaFXはOSネイティブなライブラリーを持っているはずなので、それを使うことが出来たら自作のJNIライブラリーを使わなくていいから楽なんだけどなー。


という訳で、自分がやりたい事は実現できた。

しかし、今回作ったバージョンのパスワード支援ツールの対象者:MSX Game Player(ROMを読み込むハードウェア)とDS4のROM本体を持っていて、WindowsにScalaとJavaFXを入れてプレイしようなんて人、世界中にどれくらい居るんだ(爆)
(Windows XPの秀和システム版のパスワード支援ツールは前のバージョンで使えるからねぇ) 

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CDH4開発環境構築

2012-06-09 12:09:52 | PG(分散処理)

CDH4が出たので、試しにインストール(だけ)してみた。
単独環境や擬似分散環境だけ作ってもHadoop(分散システム)的にはあまり嬉しくないんだけど^^;、最初はそこから試すものだろうし。

で、CDH4はClouderaのサイトにインストール手順がかなり詳しく書かれているので、特に迷う事は無かった。素晴らしい。
MRv1とYARNのどちらをインストールするかはユーザー次第なので、そこは迷うかもしれないが(爆)
HDFSコンポーネントは共通で、ジョブ(MapReduce)を動かすコンポーネント(デーモン)をMRv1とYARNのどちらにするかで決める必要がある。
(両方を同じマシンにインストールすること自体は出来るようだが、推奨されないみたい)

CDH4はHadoop2.0(旧Hadoop0.23)がベースなのに、インストールするとhadoop-0.20の名を冠したコンポーネントが入ってくるのでちょっと混乱しそうだけど^^;


擬似分散環境の構築は、CDH3のときより手順が増えている気がする。
HDFSをフォーマットした後のディレクトリー作成を手動でやらないといけない。
というか、HDFSのフォーマット自体、CDH3のときは自動でやってくれたような気がするが、方針が変わったのかな。

そうそう、MRv1の擬似分散環境では、ジョブが実行できなくてハマった…orz
なぜか環境変数HADOOP_MAPRED_HOMEの有無によって動作が変わる。不思議不思議。バグなのかなぁ?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする