W-ZERO3[es]を立川で修理に出して来ました!

立川で修理に出せるとは以外・・・
かなり穴場ですね。
立川ビックの定員さんに恐る恐る「修理依頼って出来ますか??」と尋ねると・・・
「南口にWillcomカウンターをやっている携帯ショップさんがありますのでそちらで・・・」
との事。


おおー!Willcomカウンター!!


どうも立川南口の駅前マックの横の通り(Aionとか言うパチンコ屋の横の通り。パチンコ・プレ5に行かない方)沿いの
ローソンの前辺りにあるとの事・・・
行って見ると


ちいせー。
店ちいせー。


でも、ちゃんとWillcomカウンターって書いてあるーー!!


これは強い味方を発見したましたw
中には人が2人。
客が2人。
僕が入るのにはギリギリw


ほぼノーウェイトタイムで受付開始出来ました。
30分後にヒカエを取りに来てくれと言われたので、近くのドトールで一息。
無事、修理受付出来ました!!
ココでは代替え機は出してもらえない様子だったので、修理に行く人は事前に連絡を取っておこう!!


http://www.willcom-inc.com/ja/service/bases/search/tokyo/1215150001.html


ちなみに・・・
僕は・・・


ESの黒を衝動買いしました。
だってパチンコで勝ったんだもん。


それでSIMを替えて本体だけ修理に出したわけです。


2度同じ症状が出た、とも伝えたので修理上がりが楽しみですね。
白が帰ってくるまで頼むぜ黒ES!!



”RealVGA環境でIMEを切り替えると起動不能に”ってどう言う意味??

W-ZERO3[es]にて
http://wiki.wince.ne.jp/W-ZERO3es/?%CE%A2%B5%BB%A5%BD%A5%D5%A5%C8%B4%D8%CF%A2#f4938fac
こちらに書かれているんですけど
どう言う意味でしょう??
RealVGAにしてる時に、キーボードの”文字”キーから入力モードを変更すると
再起不能の修理行きになるってことなのでしょうか??


ビビッてキーボード打ちの際に文字キーを押せない・・・(−−;

ところで、そんなビビリなもので文字キーに別の挙動をさせようとノーマル画面モードでいじっていたら・・・


ESが固まった。そしてそのまま再起不能に・・・


本末転倒ですな。
つか、また修理行きですか・・・
もーあったま来たからもう一台予備にES買う事にしました!←暴挙


ところで、何で僕のESはこんなにも壊れやすいの??
使い方が悪いの??
でも同じカスタマイズを施してある相方のは無事だけど??


謎だー・・・


家に帰ったら修理のシタクしなくちゃ・・・
鬱だ・・・orz



新規ライトメールへのショートカットを作って見る。

かなり強引ですが・・・
ExecMultiとKeyInputEmuLatorを使いますw
それぞれをアプリへのパスは自己の環境に合わせて変えて下さい。
ExecMulti.iniに以下のようなセクションを追加します

[NewLightMail]
# ライトメールプログラムを起動
exec=\Windows\lightmail.exe
# アプリの起動が終わるまで待機(私はこのくらいが調度でした。)
sleep=300
# ソフトキーが標準である事が前提ですが・・・左ソフトキーのキーコードを送って新規画面へ
# ソフトキーがいじられている場合などはMTAPを使うといいかもしれません。
exec=\Program Files\CustomKeys\KeyInputEmulator.exe|LeftSoftKry
# あて先へフォーカスを移動
exec=\Program Files\CustomKeys\KeyInputEmulator.exe|Right
# ライトメールを送信したい相手のPHS番号を入力
exec=\Program Files\CustomKeys\KeyInputEmulator.exe|0 7 0 1 2 3 4 2 2 3 4
# 入力を2度確定(Atokを使っているから2度目は予測を終了する意味)
exec=\Program Files\CustomKeys\KeyInputEmulator.exe|Enter Enter
# 本文へフォーカスを移動
exec=\Program Files\CustomKeys\KeyInputEmulator.exe|Down

以上、こんな感じですね。
あとはこれをショートカットかランチャーにでも登録して
一発起動!!


誰かもっといい方法がありましたら教えて下さいm( )m



AEButtonPlus単体では画面回転ボタンの長押しが機能しない!?

またまたW-ZERO3ネタですが・・・


どーもですね、AEBPlusだけでは画面回転ボタンのLongPressに機能をアサインしても
動作しないようです。W03UtilityPlusと共存してる時は確かに動いたんですけどねー・・・
AEBPlus単体の時とCtrlSwapMiniと併用している時では動作しませんでした・・・
さらに言うと動作しない事象の際にDobluePressとSinglePressに機能をアサインしたところ
どちらの機能も動作しませんでした・・・
んー謎ですね。
兎に角、画面回転ボタンの長押しに機能をアサインするのはあきらめろと、言う事ですかねー・・・

W-ZERO3 es 購入 そして・・・2週間でフラッシュ領域が破壊された!!

困りました。買ってジャスト2週間。
仕事がリリース作業真っ只中だったので
すぐに修理には持って行かず、2日空けてウィルコムプラザへ行ったら
「その日に行けば初期不良で交換してもらえたかも・・・」
あー!気付かなかった!!
そして、メーカーが夏休みとの事で2週間近く修理にかかりました。


結局原因はわからないのですが、いじりすぎたせいでフラッシュ領域を壊してしまった模様。
W-ZERO3メールからメール送信を終了した後、しばらく放置していたら固まっていた。
再起動するも、上がってこず。フォーマットも途中で止まるしまつ・・・


W-ZERO3の時と同様にサービスメニューが出せりゃー
もう一台、相方のエスがあるので復旧出来そうなのに
こう言うどーでもいい事に手が加えられていて
敢え無く修理決定となった次第です。


まー無事に帰って来てからは元気です。


ところで、最近はW03が出てからかWM5用やPPC用のアプリが非常に充実、高機能化して来ていますねー。
自分もプログラマなので、何か作ろうかとは考えているのですが
ことごとく作ろうと考えると、誰かが作って出してくれていますねw
非常にうれしいです。
ソフトウェア作者様方、ありがとうございます。


最近もそんな事がありました。
CtrlSwapMiniと言うソフトがありまして、エスのテンキー入力をより携帯に近づけようと
試みられた作品で、非常に良く出来ています。
ナイスタイミングです。


しかし、副作用がありました。
キーフックを監視するAPIがあるようなのですが、こいつは
複数のアプリで同時に利用出来ないそうで・・・
まーなんとなーく理屈はわかりますけどねー。明確な優先順位が無いですしね。キーフックを受け取るアプリに。


と、言う事で今まで使っていたW-ZERO3 UtilityPlusが使えなくなりました。


ので、AE Button Plus と言うソフトを再び見直す事となったわけ。
このAEBPlusと言うソフト
他のキーアサイン変更ツール(W03UtilityPlusとかPQzIIとか)と違って
上記で書いたようなキーフックを監視するAPIをどうも使っていないようなのですよ。
それはそれで不思議なんですけどね・・・
どうやって実現してんだろ・・・


なのでですね、このAEBPlusを使えばCtrlSwapMiniを使っていてもボタンの各種割り当てを変えられる訳です。


しかーし。
AEBPlusから離れていたのにはそれなりに訳がありまして。
以前はですね、WinボタンとOKボタンに機能を割り当てられなかったのですよ。
で、W03UtilityPlusを使っていたのですが。
ところがですね、仕方なしにAEBPlusに戻ってみたらですね、"Add Button"と言う機能が追加されているではありませんか!!


もしや・・・と思い試行錯誤する事数週間
インストールしては消し、ボタンのアサインを変え、またインストール
なんて事を繰り返していてついに出来たわけです!!
しかもWinキーの長押し付き!!


すばらし〜い♪


方法は簡単でした。
AEBPlusのインストール先ディレクトリに
AEBPlus.cfg
と、言うファイルが出来ています。
こいつを直接変更してしまうとですね、GUI上からはAdd出来ないようなボタンも設定出来てしまうのですよ。


キーコードは特殊なようで
PQzのキーコード調べるやつでコードを調べてですね、16進数で表示される
「0x」の部分を「40」と置き換えて


Key 40** e000 e000 e000 e000


と、言う記述で行を追加して行くと
次回AEBPlusを起動した際にボタンに機能を割り当てられるようになります。
AEBPlusのバージョンは2.5が良いようです。


一度お試しあれ!!!



PHPで暗号化した文字列をJAVAで複合化できない!?の改善策

前回書きました、暗号化・複合化問題の完全策を提示しようと思います。
多分気付いてる人もいると思いますが
要は一つのモジュールでやればいいわけですよ。
なので解決策は


・コンソール上で実行して結果を出力するモジュールとして作る


わけですね。
PHPでモジュールを叩く場合は

/**
 * 暗号化を簡単な関数にする場合の例(コードは適当なので鵜呑みにしないで!)
 * 
 * 
 * 引数1 暗号化対照の文字列
 * 引数2 アルゴリズムの指定 例)アルゴリズム/ブロック暗号指定/パディング方式
 *       デフォルトはAES(国防総省推奨の暗号化の事 今はRinjdael128)/CBC/PKC5
 */
function encrypt($argStr,$algrisum = "AES/CBC/PKC5"){

	exec("モジュールのパス ".$algrisum." ".$argStr);

	$endFlag = 0;
	$convertedTmpFile = "一時的に実行結果を保存して置くファイル";

	while(!$endFlag){
		if(is_file($convertedTmpFile)){
				$hanle = fopen($convertedTmpFile);
			$convertStr = fread($handle);
			fclose($handle);
			$endFlag = 1;
		}
	}

	exec("一時ファイルを削除するコマンド");

	return $convertStr;
}

とかやっとけば大丈夫でしょう。


暗号化はアプリケーションにしてしまって実装するのがよさそうですねー。
設置は面倒ですが、一度やってしまえば運用は楽になる気がします。
JAVAPHP両方のモジュールを用意して置くのが吉ですね。



PHPで暗号化した文字列をJAVAで複合化できない!?

逆もしかりです。
恐らく方法はあるんだと思いますが
公開されているAPIだけでは不可能だと思います。


暗号化には
アルゴリズム:RIJNDAEL128
・ブロック暗号:CBC
・初期ベクトル:1234567812345678(CBCモードでの暗号化の場合、これが必要。最低16Byte)
を、使用


PHPのソースは省きます・・・w長いんでw


Javaのソースはこんな感じ

	/**
	 * 秘密鍵の生成<br>
	 * 鍵は固定でひとつだけ持つ。
	 *
	 * @return	SecretKeySpec skeySpec 秘密鍵
	 */
	public SecretKeySpec secretKey() throws Exception {			
		byte[] key = "1234567812345678".getBytes();
		kgen.init(128);
		SecretKeySpec keyspec = new SecretKeySpec(key, "AES");

		return keyspec;
	}

	/**
	 * ラインダール複合化
	 *
	 * @param String str 暗号化した文字列を16進数変換したもの
	 * @param SecretKeySpec skeySpec 秘密鍵
	 * @return	String 複合化した文字列
	 */
	public String decrypt(String str) throws Exception {

		// 初期ベクトル生成
		byte[] ivbb = "1234567812345678".getBytes();
		IvParameterSpec ivspec = new IvParameterSpec(ivbb);
		
		// 鍵の生成
		SecretKeySpec skeySpec = secretKey();

		// 暗号化されているデータ(DBとかから取得した値)
		byte[] skey = byteToHex(str);

		cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
		cipher.init(Cipher.DECRYPT_MODE, skeySpec,ivspec);
		
		byte[] original = cipher.doFinal(skey);		
		String originalStr = new String(original);
		
		return originalStr;
	}

と、言う感じ。
かなりざっくりですがw


用はPHPや、他の言語で暗号化してDBに入れたデータを
JAVAで取得して使おうとしたわけですよ。


ところがですねー、コレうまく行きません。
実は最初にわざと書かなかったんですが、”キー”の問題なんですね、これ。
仮に、多言語で”キー”つまり鍵ですが、
1234567812345678
とかを鍵として使うとして、
常に同じ暗号化、複合化の結果を得たいので
取り合えず固定にしたりするわけですよ。


で一つの言語ならそれでもうまく行くんですが
JAVAではですねー
SecretKeySpec
と、言うのが味噌になるわけですよ。
鍵を作る元の値が
1234567812345678
でも、実際にはココから固定の鍵を生成してくれちゃうんですよ。
セキュアーな鍵を。
親切ですねー。
で、その鍵がなんなのかは”わからない”んです!w
だって”SecretKeySpec”ですからね、秘密なわけですよw


と、言う事で鍵をJAVAと多言語で同じ仕様に出来ない限り不可能なわけです・・・


もし、方法があるとしたら”Key”と言うスーパークラスがあるので
コレに準拠して自作でSecretKeySpecクラスを作るしかないでしょうね・・・


あー困った。(T-T)