iOS5 icloud上のフォトストリームを削除する方法

iOS5がリリースされて早速アップデートしてみました。
試しに、iPhoneで撮影した画像をicloud上にアップしたはいいけど、削除できない状況で困ってました。
ネットで方法を探すと削除できないとありましたが、下記の方法で試したところ、削除できましたので
備忘として記録しておきます。

手順(概要)

1.

PCのブラウザからicloudにログイン (icloudにアクセス

2.

ログイン後に画面右上にある自分のアカウント名部分をクリック

3.

「詳細設定」のボタンをクリック

4.

「フォトストリームをリセット」をクリック

5.

iPhoneのフォトストリーム設定が「ON」になっている場合は一度OFFにして再度「ON」にすることでiPhone内のキャッシュがクリアされて同期される模様
(これをやらなければ、iPhone上でicloud上の画像が残っているように見えてしまう)

6.

iPhoneで写真→フォトストリームを参照すると、「写真がありません」と表示される

うっかりして

30日で自動で消えるようですが、テストでアップした画像や間違って写ってはいけない女性、男性等の怪しい写真をアップしてしまった場合はこの方法でこっそり削除して他の端末に広がらないようにしないと大変なことになるぅぅ!

FlashBuilder -- Asdocの@authorを変更する方法

ActionScriptのクラスドキュメントを自動で生成してくれるAsdocは非常に便利です。

説明文書はソースコード内に定められた書き方でコメントを記載するればよい。

コメントをわざわざ入力するのは面倒なので、
flexformatter からpluginの.jarソースをダウンロードして
pluginフォルダに格納して利用すると、ボタン一発でソース内にAsdoc用のコメントを挿入してくれる。

クラスの説明箇所には自動で@authorが挿入されるが、その名前を変更するところがなくて困った

@authorの変更方法

${FlasBuilder_HOME}/Adobe Flash Builder 4.5.ini ファイルに以下の1行を追加すれば良い

-Duser.name=YourName

Flex3 FileReference.load()でエラーが発生する

FlashPlayer の バージョンを10.0以上にする必要がある。

ライブラリプロジェクトの場合、FlashPlayerのバージョンを選択することができないので、
読み込むライブラリを変更する必要がある

手順
  1. Open the "Flex Build Path" tab.
  2. Expand "Flex 3", select "playerglobal.swc" and click "Remove".
  3. Note the directory path in "Flex 3 - " (on my system it's /Applications/Adobe Flex Builder 3 Plug-in/sdks/3.2.0).
  4. Click "Add SWC" and navigate to the that path, and then deeper into frameworks/libs/player/10, select playerglobal.swc.
  5. Expand "playerglobal.swc", double-click "Link Type" and change it to "External".
  6. Open the "Flex Compiler" tab
  7. In "HTML wrapper", change the "Require Flash Player version" to 10.0.0.

Titanium -- HTTPClient()で配列をPOSTする方法

(HTTPリクエストでサーバにパラメータを投げる時の処理について、どうすれば良いか迷ってたので備忘として記録)

サーバに渡したいパラメータ例

"fooname"と"id"だけなら、よくあるHttpClient()の使い方に記載されているけど
”imagename"のような配列も一緒にサーバへPOSTしたい場合はどうすればよいか?

{
"fooname" => "hoge";
"id" => 1;
"imagename" => Array( "hogeimg1", "hogeimg2" );
}

サンプルコード(モバイル側)

ポイントはJSON.stringify()を使って
JSON文字列にしてから、サーバへリクエス

var xhr = Titanium.Network.createHTTPClient();

var param = {
'fooname': "hoge",
'id': 1,
'imagename': JSON.stringify(new Array("hogeimg1","hogeimg2"))
};

xhr.open('POST',"http:// ");

xhr.send(param);

サーバ側の処理

'imagename'はJSON文字列であるためオブジェクト(配列)に変換する必要がある。
各言語で用意されたJSONデコード関数*1を利用すればよい。

*1:PHPの場合はjson_decode

ActionScript -- サーバからXML形式でデータを受け取った時の注意点

サーバからXML形式でデータを受け取ると、ResultEventのresultプロパティに
オブジェクトとして結果を自動で格納してくれるのは良いがその仕様(XMLからオブジェクトへの変換)は、
デフォルトでは「先頭および最後の空白文字を、解析時に無視する」ようになっていることに注意!


つまり、nullで返ってくると想定しいたノードが、実は省略されていて
想定より少ないノード数になっていることがある。


例えば、以下のようなXMLがサーバから返ってきたとする。

<?xml version="1.0" encoding="UTF-8"?>
<data>
   <return>
      <item />
      <item />
      <item>最後データ</item>
   </return>
</data>

ResultEventのresult(array)に格納されているreturn配下のノード数は1個で、先頭の空白ノード2つは無視される。
(event.result.data.return[2] で値を取得することはできない)

空白行を無視しない方法

  1. ignoreProcessingInstructions プロパティに[false]をセットする
  2. XML操作をして、自分で用意した変数にノードを格納(hogeにノードをセット)

例は以下のとおり

private function httpreturn(e:ResultEvent):void{
   XML.ignoreWhitespace = false;	//空白無視をやらない
   var resxml:XML = new XML(e.message.body);
   var hoge:Array = new Array();
	
   //XML to Array
   for each(var tg:XML in resxml.return.item){
      hoge.push(tg.toString());	
   }
}

最後に

もっとスマートな方法(XML操作をしないやり方)がないか?を調べたけど見つかりませんでした。
良い方法があれば、教えていただけると幸いです。

Titanium mobile -- Android でrequire()エラー

(TitaniumのAndroidってまだまだやなぁ)

CommonJSに準拠しているっていうから、require()を利用して関数を共通化していたのに、
Androidエミュレーター上でエラーが出て、実機上だとOKになるケースが発生。
ちなみに、iOSでは全く問題ない。

エラー内容

Message: Wrapped java.lang.IllegalArgumentException: size must be >= 0 (file:///android_asset/Resources/app.js#1)

環境

  • mac OSX
  • Titanium studio (ver: 1.7.2)
  • Android OS : API 2.2

原因

Android のビルド時にFastDevを利用したモードの場合だと、require()できないみたい。
サイテー!

対応方法

FastDevを利用しないこと。しかし、ビルドに時間がかかりすぎるのでそれは避けたい。
どうすれば良いのか?? 調査中ですが厳しい感じ。今のところ実機でやるのがベター!?

FastDev の停止方法*1

tiapp.xmlをコード編集で開いて以下1の1行を  の後ろに追加する

false

*1:1回のビルド時間が長いというデメリットあり

flash builder mobile -- ios skin

ios用のスキン

このページにある「mobiletheme_ios_usage.fxp」をダウンロードして、プロジェクトをインポートする。

そして、自分で作成したプロジェクトのビルドパスに"mobiletheme_ios"を指定すれば
ios風のスキンが適用できる。

サンプルコードは、上記でダウンロードしたプロジェクトの"mobiletheme_ios_usage"のプロジェクトを参照