Sunflat のブログ

ソフトウェア開発についての話題が多いかも

Android 1.5/1.6 のsampleのビルドエラー

Android 1.5/1.6 のsample(ApiDemo)を、最新のAndroidSDKでビルドするとエラーが出るようだ。
以下のように、res/values/strings.xmlアポストロフィー(')の前に、バックスラッシュ(/)を入れれば解決するっぽい。

例:

変更前: <string name="summary_on_advanced_toggle_preference">I'm on! :)</string>
変更後: <string name="summary_on_advanced_toggle_preference">I\'m on! :)</string>


まだまだAndroid1.5端末は生き残ってるので、当分は対応が必要そうだなぁ
http://developer.android.com/resources/dashboard/platform-versions.html

スマートフォンまみれ

ふと気づけば、机の上がスマートフォンまみれだ。(iPod touch含む)

ほんの2〜3年前までは、ガラケーまみれの環境でFlash Lite開発の日々だったのになぁ。
(2007年に撮った写真)


今から3年後は、どんな環境で開発してるんだろうか。
とりあえず、iPhone7には3D液晶と指紋センサと心拍計ぐらいはついてそうだな。
CPUは32コアぐらいになって、並列処理向け言語のErlangやgoとかでソフト開発してたりするのかな。

Apple Wireless KeyboardをiMacからiPadへ付け替える方法

1. iMacBluetoothをOFF

    • タスクバーのBluetoothアイコンから。WirelessMouse利用時には、USBマウスを接続する必要

2. Keyboardの電源ボタンを"長押し"して、電源切
3. iPadBluetoothをON

4. Keyboardの電源ボタンを押して、電源入

    • 初回接続時には、iPadの画面上でKeyboardを選んで接続

元に戻す場合は、上の説明の"iMac"と"iPad"を入れ替えた操作をすればOK

ナイパッド族のためのiPadシミュレータ活用方法

1980年代、パソコンに興味を持ちながら所有出来ない者のことをナイコン族と呼んだ。

そして2010年4月、アップルによる突然のiPad発売延期を受け、iPadに興味を持ちながら所有出来ない「ナイパッド族」が大量発生するだろう。

そこで、iPadシミュレータ中心のゲーム開発手法を探求する。

続きを読む

InterfaceBuilderで作ったUIの色が変わる

追記1:どうも、常にこの問題が起こるわけではないみたい。新しいプロジェクトを作って試してみたら、この問題は発生しなかった。iPhoneSDK 2.0の時に作った古いプロジェクトを使いまわしているので、それが原因かもしれない。 →下の追記2も参照

iPhone SDKのInterfaceBuilderでゲームのタイトル画面を作ったのだが、同じソースファイルでビルドしたにもかかわらず、タイトル画面の背景色が微妙に変わってしまうことがあった(上図)。

詳しく調べてみると、どうもXCodeでビルドする時のディスプレイプロファイル(システム環境設定>ディスプレイ>カラー)によって、InterfaceBuilderで指定した色が変換されてしまうようだ。その結果、ビルド時に外付けディスプレイをつなぐかどうかで色が変わったりしてしまう。

実際に、実行時にbackGroundColorの値を表示してみると、以下のようにビルド時のディスプレイプロファイルによって若干変化している。

ビルド時のディスプレイプロファイル 実際に表示される色
カラーLCD kCGColorSpaceModelRGB 0.736403 0.2621 0.125456 1
カラーLCD (色温度をD50にカスタマイズ) kCGColorSpaceModelRGB 0.81819 0.337517 0.189591 1
DELL E207WFP kCGColorSpaceModelRGB 0.822632 0.210778 0.0575691 1
一般RGBプロファイル kCGColorSpaceModelRGB 0.839216 0.298039 0.0196078 1

実際に指定した色はRGB=(0xD6,0x4C,0x05)なので、上記の「一般RGBプロファイル」の場合が正しい値のはず。

というわけで、色の微妙な変化が気になる場合は、提出する実行ファイルをビルドする時に、ディスプレイプロファイルを「一般RGBプロファイル」に変更してからリビルド(クリーニングしてからビルド)したほうがよさそう。あるいは、下記のように色の値をハードコーディングしてしまうとか。

self.backgroundColor=[UIColor colorWithRed:(0xD6/255.f) green:(0x4C/255.f) blue:(0x05/255.f) alpha:1.f];

追記2:どうやら、xibファイルをテキストエディタで開いたときに「2」という項目があるとこの問題が発生するようだ。これを「1」にテキスト置換してやれば、問題は発生しなくなる。最新のInterfaceBuilderでUIを新規作成すると最初から後者になるが、前者の項目が残っているとそれが引き継がれるようだ。

Remember the Milkのタスク画面に、週間スケジュールを表示する

Remember the Milkのタスク一覧画面に、週間スケジュールを表示するgreasemonkeyスクリプトを作ったので、置いておきます。(iframe要素を埋め込んで週間スケジュールページを表示しているだけ)

以下の内容をコピペして、var username="〜"; の所を、RTMのユーザ名(URLに表示されているもの)に変更して、add_weeaky_schedule.user.js というファイル名で保存し、Firefoxにドラッグ&ドロップすればインストールできるはず。

SSLを使わない場合は、https:// を http:// に置換する。

タスク一覧を表示する時は、https://www.rememberthemilk.com/home/ユーザ名/#section.tasks というURLにアクセスする。

追記:今日の日付を冒頭に表示させました

追記:Google Chrome でも動作しました

// ==UserScript==
// @name           add weekly schedule to RTM
// @namespace      http://sunflat.net/
// @include        https://www.rememberthemilk.com/home/*/#section.tasks
// ==/UserScript==

(function(){

// configuration
var username="ユーザ名";

//
var d1=document.getElementById("list");
if (d1==null) return;
var ifr=document.createElement("iframe");
ifr.src="https://www.rememberthemilk.com/printplanner/"+username+"/";
ifr.width="100%";
ifr.height="400px";
ifr.style.border="none";

ifr.addEventListener('load', function(){
	// modify inner page 
	var idoc=ifr.contentDocument;
	var d2=idoc.getElementById("printheader");
	d2.style.display="none";
	var d3=idoc.getElementById("content").getElementsByTagName("div")[0];
	var d=new Date();
	var w=["日","月","火","水","木","金","土"];
	var daye=idoc.createElement("h1");
	daye.appendChild(idoc.createTextNode("今日: "+(d.getMonth()+1)+"月"+d.getDate()+"日("+w[d.getDay()]+")"));
	d3.replaceChild(daye, d3.getElementsByTagName("h1")[0]);
}, false);

d1.appendChild(ifr);

})();