Tibar 0.4.2でSDK 1.6.2や1.7.0RC1を使用すると、コンパイルが通らない問題について。

Titanium Studioでコンパイルが通らずエラーが出力された。
ZBar integration module for Titanium Mobile

エラーは以下の通り。

エラー出力

File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.0.RC1/iphone/builder.py", line 1149, in main
execute_xcode("iphonesimulator%s" % link_version,["GCC_PREPROCESSOR_DEFINITIONS=__LOG__ID__=%s DEPLOYTYPE=development TI_DEVELOPMENT=1 DEBUG=1 TI_VERSION=%s %s" % (log_id,sdk_version,debugstr)],False)
File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.0.RC1/iphone/builder.py", line 1066, in execute_xcode
output = run.run(args,False,False,o)
File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.0.RC1/iphone/run.py", line 39, in run
sys.exit(rc)
SystemExit: 1

対処法

/Library/Application\ Support/Titanium/modules/iphone/tibar/0.4.2/module.xcconfig
に以下の文章を追加を行う。

OTHER_LDFLAGS=$(inherited) -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework QuartzCore /usr/lib/libiconv.dylib

コンパイルが通るはず。

Javascriptのメソッド?の書き方に驚いた。

当方、C→C#とプログラムの「プ」を独学で勉強していたわけですが、
Titanium mobileのJavascriptでメソッドが書きにくくて非常に嫌いなんです。
以前書いた入力支援機能がないと、もう、プログラムを書けない。
そんな人なんですが以下のスタイルで"オレオレ"メソッド集が書けることを今日知りました。

これがあると、入力支援が有効になり、がんがんかけるのでうれしすぎる!
そういうわけで、メモ代わりに書いておく。

Katsuraghi = {
	KakkoIrane: function(inpuString){
		var SplitStrings=inpuString;
		var SplitStrings2 = SplitStrings.split("[");
		var SplitStrings3 = SplitStrings2[1].split("]");
		return	 SplitStrings3[0];
	},
	decode: function(input){
		return Titanium.Network.decodeURIComponent(input);
	}
};
//ex)
Katsuraghi.KakkoIrane(xhr4.responseText)

Titanium mobile のJSON.parseではエラーが出力される。

jsonengineでeqしたJSONデータになぜか"[","]"が含まれていた。
実際問題はないと思うけれど、Titanium mobile のJSON.parseではエラーはくので、取得したら括弧を消すと問題なく処理される。

xhr4.responseTextの内容がこれ。

[{"ImageLURL":"http://ecx.images-amazon.com/images/I/514geJcznIL.jpg",
"ISBN":4048704869,
"BookAuthor":"%E4%BC%8F%E8%A6%8B %E3%81%A4%E3%81%8B%E3%81%95",
"Title":"%E4%BF%BA%E3%81%AE%E5%A6%B9%E3%81%8C%E3%81%93%E3%82%93%E3%81%AA%E3%81%AB%E5%8F%AF%E6%84%9B%E3%81%84%E3%82%8F%E3%81%91%E3%81%8C%E3%81%AA%E3%81%84%E3%80%888%E3%80%89 (%E9%9B%BB%E6%92%83%E6%96%87%E5%BA%AB)",
"BookManufacturer":"%E3%82%A2%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9",
"ImageMURL":"http://ecx.images-amazon.com/images/I/514geJcznIL._SL160_.jpg",
"_docId":"CQZbYqlfiK8ocg1r3jhzrjvFJcq3SNxH",
"_updatedAt":1307166040619,
"_createdAt":1307166040619}]
Katsuraghi = {
	KakkoIrane: function(inpuString){
		//括弧外すだけなんだけれど、あまりに稚拙な気がする。
		var SplitStrings=inpuString;
		var SplitStrings2 = SplitStrings.split("[");
		var SplitStrings3 = SplitStrings2[1].split("]");
		return	 SplitStrings3[0];
	},
	decode: function(input){
		return Titanium.Network.decodeURIComponent(input);
	}
};
var ISBN= "4048704869";
var xhr4 = Titanium.Network.createHTTPClient();

	var ConvertGoogleAppsEngineURL ="http://(アプリ名).appspot.com/_je/BookList?cond=ISBN.eq." +ISBN;

	xhr4.open("GET",ConvertGoogleAppsEngineURL);
	xhr4.onload = function(){
		var json = JSON.parse(Katsuraghi.KakkoIrane(xhr4.responseText));
		if(json.redirect != null){
			Titanium.Platform.openURL(json.redirect);
		}else{
			//書籍名
			Katsuraghi.decode(json.Title);
			//俺の妹がこんなに可愛いわけがない〈8〉 (電撃文庫)
			//ISBN
			json.ISBN;
			//という感じで抽出される。
		};

前述のKeyRemap4MacBookについて。

Macに使い慣れたキーボードを接続し使っています。
下記のソフトを見つけるまでに、キーボード配列を変更したりして、妥協しながら使っておりました。

MacWindowsキーボード配列のダウンロード先はこちら
USB JIS Keyboard Layout 1.0.1 を使用していたんだけれども、「半角/全角」を日本語入力のOnOffのトグルスイッチをするために、
WinK for OSXを買うのはためらっていました。

キーボードレイアウトを変更せずKeyRemap4MacBookをインストールすれば、解決できるはず。
MacOSX86にチャレンジしている人とかおすすめかも。

MacOSXにて、Windowsの様にキーボードのHomeを行頭、Endを行末に変更するには?

MacOSX 10.6.7にて、Windowsの様にキーボードのHomeを行頭、Endを行末に変更するには?
KeyRemap4MacBookがおすすめだ。
設定画面の「For PC Users」にある「Use PC Style Home/End」を設定するとよい。
また、「半角/全角」を日本語入力のOnOffのトグルスイッチにすることもできる。

Backquote(`) to KANA/EISUU (toggle)


余談だが、これをインストールすると、ことえりで設定しているキーボード配列は無視される。

MPEG2-TSファイルが正しく再生されない場合には。

MPEG2-TSファイル(いわゆるTSファイル)に複数の音声データが入っている場合がある。
そのファイルを普通のVLCプレイヤーや、Media Player Classicなどで再生を行うとソフトが強制終了される場合がある。

それを回避する為には、MPEG2-TSファイルを音声の切り替えの時に、ファイルをわけることで回避できる。
ソフト名は「 TsSplitter Ver1.23 」である。

同梱のGUIを起動すると、画面中から下に「SEPA : 音声チャンネル切替箇所で分割する」とある。
チェックし分割すると切替箇所で分割されファイルができ解決する。

Titaniumのボタン画像で透過PNGを使う方法。

Titanium Mobileを少しずつ悩みながら書いていて、悩んだところをメモ。

var win1 = Titanium.UI.createWindow({  
    title:'ボタンテスト',
    backgroundColor:'#000'
});

var B1 = Titanium.UI.createButton({
	backgroundImage:'HATUNE_LOGO.png', //Imageの場合、透過にならない。
	top:628,
	left:180,
	height:109,//画像のサイズを入力しないと、正しく表示されない。
	width:255
});

win1.add(B1);
win1.open();