件のコメントほとんど需要の無い話だと思いますが、以下2点をメモ。192.168.1.3のように打ち、VirtualBoxのAndroidと接続するわけですが、これを毎日のように打つのは、さすがに面倒通り越して飽きてくるので、バッチファイルで効率化したいと思います。その前に、コマンドプロンプトのショートカット今更メモするような事でもないかも知れません。PATHにadbのディレクトリを通してないので、どこでもadbコマンドが使えるわけではありません。そのため、コマンドプロンプト起動時にadbディレクトリから開始できるようにします。作業フォルダに、D:\android-sdk\platform-toolsのように記述してやります。192.168.1.%1と記述しました。3スペース含め4文字でいけますね。disconnect側もadc.batファイルを作成して接続を解除するようにしました。理想系は理想は、VirtualBoxのAndroid起動と同事にコマンド打つことなく接続して欲しいですが...まぁ考えられるところでは、バッチファイルを叩いてもIPアドレス末尾の数字1文字を入力待ちにしておいて、先ほどのコマンドプロンプトショートカットの作業フォルダにコマンドも書き込んでしまえば、ショートカットをダブルクリック数字を入力してエンターのステップでいけそうですね。件のコメント子猫が我が家に来てから、トイレを1度もしてなかったので心配だったのと、トイレの躾をつけたいと思っていたのですが、この日ようやくウンチしてくれました。カーペットの上に(#^ω^)ヨシイイコダそれをティッシュでくるみ猫砂の所へ置き、猫を連れて行って匂いを嗅がせ、カーペットは匂いが残らぬよう綺麗に掃除をしておきました。すると、次回からは自分で猫砂の所へ行って排泄するようになりました。優秀な子なんだ!理想を言えば、カーペットにされる前、催した兆候(猫が床の匂いをかいでウロウロする)らしきものがあったのを確認していたのですが、その時に連れていくべきでしたね。子猫を拾ったhttp://www.takaiwa.net/2012/10/blog-post.html飼うことになったのですが、当初は威嚇していた猫も緊張を和らげてくれた様子なので手のひらを近づけるとじゃれます。全力で噛みます(#^ω^)イタイヨ子猫とは言え、歯が鋭利なのか時々指に血がにじむほど。昔、小学生だったか中学生の頃に猫を飼ってた経験から、これはそのうち加減を調節してくれるだろうととりあえず我慢。ググったら痛い!とリアクションするのが良いようですね。件のコメント考え事が捗るのでダイエットも兼ねて、小さい山に繋がる道路をよくウォーキングをしています。道路ができたのは、ここ十数年なのでそのせいか、トカゲやカマキリなどといった生物によく出くわし、遅い時間であれば鹿や猪も見たことあるで若干警戒しながら歩いているのですが、この日は茂みの中から何かの鳴き声がしました。鳥かなにかだろうとスルーして折り返し地点を目指しました。折り返してまたここに来ると鳴いています。件のコメントArrayAdapterを継承したクラスでListViewを作る場合、些細な事ですが忘れがちなのでメモしておきます。基本的には、行の更新と言えどListViewはsetAdapterメソッドを叩いてやれば、ListViewを更新できますが、画面に収まりきらないほどのリスト項目を持ち、リストをタップする事でリスト項目を更新するような場合は注意が必要です。具体例で言いうと、下図のような商品名が並んでいるリストがあり、ショッピングカートのボタンをタップすると、商品名の括弧内の数字(個数)が増えるようなアプリがあったとします。この場合は、下から2番目の”味付けカワハギ”までは、setAdapterでリストを更新しても特に問題はないと思いますが、”冷凍シメサバ”より下に項目が続く場合についてサンプルソースを基に注意点を見ていきたいと思います。親ノードを辿れたり、タグの属性を指定して更新できたりしてコードがすっきりするのでこのAPIを使いたいわけですが、EvernoteのクラウドAPIで取得したnoteの本文を丸々突っ込むとパースがクソ重いです。コードは以下のようになるかと思います。builder.parse(in);パースが遅い故、デバッグもし辛いしorg.w3c.domの利用を諦めようとしていましたが、<en-note>~</en-note>を抜き取ったものを使うと劇的に速くなります。Streamの宣言の間に以下のように、文字列処理を行うと良いでしょう。document.getElementsByTagName("a");のように指定したタグでリストを作ってくれるので、僕にとってはXMLをイメージしやすく扱いやすいです。※ソースは現在実装中のものから抜き出し見やすくしているので、コンパイルは通してません。XmlPullParserを使う場合ググるとAndroidではXmlPullParserを使う例が多いようです。}ノートの本文は上記同様String型のcontentに。データを丸々突っ込んでも快適に動作します。直感的ですが、while文を回して取得して文字列を辿るのが今回は適さないので深くは見てません。SAXParserとDefaultHandlerを使う場合Java関連でググると軽量なXMLの解析はSAXが提案されてました。parseを実行すると以下のNoteSAXHandler内のメソッドが実行されます。}}タグ名などはstartElementメソッドで取得でき、タグに囲まれたテキストはcharactersメソッドで取得します。このように、タグを探して中身を取得&更新みたいな事をしようとすると、若干トリッキーな実装になりそうだったのでちょっと扱いづらいです。本文を丸々突っ込んでも快適に動作します。最後に動作を試したのは、いずれも少ないデータでの話なので、決定的な速度の違いはありませんでしたが、データが大きくなれば特徴が現れるかもしれません。上のやり方でちょっと触れたように、パースが遅ければ文字列処理で削るなどの方法でなんとかなるんじゃないかと思いますし、あまりトリッキーな事はバグの原因やテストが増えるので、一番上のやり方を使いたいですね。データを引っ張ってくるなら、下2つのいずれかが良いでしょう。org.apache.xalan.processor.TransformerFactoryImpl経緯AndroidでEvernoteのクラウドAPIを使ってノートの本文(XML)を解析するにあたり、調べてみたら、SAXだとかいろいろあるみたいですが、org.w3c.domがノードをたどれるし、今まで使った事のある経験から採用しました。※まぁparseが遅いとかいうのもチラっと見かけましたが、次の記事あたりに遅さを解消について書きたいと思います。大したことではありませんが。parseしてデータを取得するまではいいんですけど、これをEvernoteのnoteとして反映させるためには、paerseしたものをまた文字列へ戻す必要があります。ググるとTransformerが使われている例が多かったので、試してみました。Javaで動いてるJUnitで動かしてみたら問題なさそうだったのですが、Androidで動かしたら上記のエラーが出てしまいました。対応parseできるなら戻せるようにしておいて欲しい所ですが....どうするかについては単純に3種類くらいでしょうか。J...http://simpledevelopment.weebly.com/2/post/2011/11/javalangnoclassdeffounderror-orgapachexalanprocessortransformerfactoryimpl.htmlバッドソリューションなどと書かれてますし....他のフレームワークは特に調べてはないですが、容量増やしたくないということで、手動でやろうかなと。完全に自分でやるのはデバッグが大変そうなのでググったらこちらの下の方にあるDmitryさんが紹介されてるやり方がいいんじゃないかと。Overflowhttp://stackoverflow.com/questions/2290945/writing-xml-on-android先頭にxmlタグ付けてくれたり、空白が多かったりするので除去したものを載せておきます。}パラメータがnodeですが、Documentのオブジェクトを突っ込んでやれば文字列を戻してくれます。---------このサンプルソースは、セルフクロージングタグであっても、それを解いて通常のクロージングタグにしてしまうので注意が必要です。シンプルで良いのですが、安易に使うと危険な気がします。#が割り当てられてますが、押した所で有効になってないので、Commitが行えません。AvailabilityタブにあるGitにチェックを付けてOKボタンを押下します。Eclipseが重いのでバージョンダウンhttp://www.takaiwa.net/2012/10/eclipse.htmlで、動作は軽くなったものの、デバッグ時がやっぱり重い。EvernoteのクラウドAPIを実装したもの場合。spaceというダイアログが表示されて、インストールまでたどり付かない。ロロロッサhttp://d.hatena.ne.jp/zakkiver24+rororossa/20110612/1307888021にあるように、eclipse.iniのサイズを変更しました。CPUは貧弱ですが、メモリは無駄に8GB積んでるので大いに使って欲しいのですが、いくらがいいのか特にわからずこんな値にしておきました。-vmargs-Dosgi.requiredJavaVersion=1.5-Xms512m-Xmx1536m以前は、実機デバッグのインストール時に、Eclipseの応答がありませんとか言われるほど動作が重かったのですが、難なく動くようになりました。DevelopersのIndigoを使っていたのですが、アプリをリリースして、Eclipseがしっちゃかめっちゃかなっているし、何故かハイライト機能が死んでたので現時点で最新のJunoを入れてました。ところが、これが重い。別にCPUが占有されてるわけではないですが、何をするにも重い。候補にHeliosが出てきたので、バージョンをダウンさせてみることにしました。99MBダウンロードして、eclipse.exeをダブルクリックすると、まず、起動が速い。Viewもストレスなく移動できる。マシンスペックが上がるまではしばらく使っていきたいと思います。Eclipseをダウンロード。Marketplace経由からADTをダウンロードすると、どのEclipseでも共通にエミュレータを扱うようなので、今まで設定していたエミュレータもそのまま残っています。追記:2012/10/19ヒープサイズを変更するのも重さ解消に繋がりました。Androidを使う時はEclipseのヒープサイズをアップさせた方がよさそうhttp://www.takaiwa.net/2012/10/evernote-sdk-for-androideclipse.html追記:2012/12/19問題点Heliosのせいかどうかわからないけど、Eclipseがファイルをつかんで離さない事がある。EGitでBranchをswitchする場合、Eclipseがファイルをつかんでいるため、エラーが出る事が多々ある。リネームの時にリネーム元ファイルが削除されない。この場合は、プロジェクトをクリーンするか、Eclipseを再起動すると良い。Branchをswitchする方はちょっと試行錯誤中。件のコメントあっちへぶつかりこっちへぶつかりやったので、ベストなやり方ではなないかもしれませんが、次回も試行錯誤しないようにメモしておきます。1Androidアプリを起動しようとしてコンソールに表示されるエラー。Proppertiesとりあえず、これで実機で起動できるようになりました。2.xとICSとかと表示が違いなどに困っていましたが、とても有り難いライブラリということで、早速使ってみることにしました。applicationのプロジェクトとして取り込むと、エラーが出ます。ソース内の@Overrideの所でエラーが出ています。CompilerにJava1.5を使ってるのが問題で、1.6にすれば解決できます。}}と修正して、ビルドをかけるとソースに問題がないのにエラーが残ってます。Problemエラーには上記のように表示されています。これは、ライブラリ側と自分のアプリに、android-support-v4.jarが存在しているのが問題のようです。パッケージエクスプローラーから自分のアプリのlibsディレクトリに入っているandroid-support-v4.jarを削除する事で解決できます。AndroidのクラウドAPIサンプルを参考にしながら、自前のプロジェクト上で実装してみた際の注意点というかエラーについてです。今後SDKのバージョンアップがあれば発生しなくなるかと思われますが下記環境に関しては注意が必要です。Keyを発行してノートの一覧やノートの投稿などやったくらいに触った事あったんですけど、今回Androidで連携してみようと久々に触りました。Androidでは、以下の2種類の方法でEvernoteのリソースへアクセスできるようです。Calendarアプリの時も、Googleカレンダーで両方使えたんですけどIntentsで実装しました。IntentsはSQLite感覚で使えて楽なんですけど、その分端末内の同期を待たないといけないというデメリットもあり、今回はクラウドAPIを利用してみます。http://dev.evernote.com/intl/jp/documentation/cloud/以前はEvernoteの開発者ページは英語だったような記憶をしていますが、日本語が充実しているのと、わかりやすいデザインになってますね。Managerのインストールでこけました。́_`;)ヤッパリまぁVirtualBoxで爆速環境は作れたりしますけど、エミュレータで動かしたい。件のコメント備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。件のコメント経緯Androidアプリを作った時に、オンライン情報ページを設ける事を考えました。それまで運営していたtakaiwa.netのWordpressのブログにアプリ用ページを作成しても良かったのですが、自宅サーバのため不安定だしスパムコメントやら「wordpressの新しいバージョンが利用できます」などメッセージに対するメンテナンスが煩わしいので、ブログを移転する事にしました。Bloggerかというと、今まで使ってて特にクセがなかったといった軽い感じです。WordpressからブログデータをExportと行きたいころですが、ご丁寧にも未承認のスパムコメントまでエクスポートして、Bloggerに格納してくれるのでまずスパムコメントを消します。Bloggerでやってもいいですが、wordpressで消す方が楽だったように思います。[Export]を選択します。contentsでも良いのですが、次の作業で1MB以内に抑える必要があったので、Postsだけにします。Pagesは作ってなかったのでExportはしません。BloggerへインポートWordpressほど有名ならインポートも余裕だろwwと思ってたら現実は甘くなくて、そのままだとインポートしてくれません。インポートできる形に変換してやる必要があり、そういうサービスを提供してくださってるありがたいサイトがありました。utilityhttp://wordpress2blogger.appspot.com/ここで、ファイルを指定してコンバートボタンを押せばおkです。インポートといきたいところですが、画像のURLがhttp://takaiwa.net/wp-content/uploads~というドメインのままインポートすることになるわけで、ドメインもそのまま移転させるので画像を別途移動させてやる必要があります。何か良いやり方があればいいのですけど、思いつかなかったのでDropboxのPublicフォルダを利用する事にしました。他のフォルダだとディレクトリ構造を維持しなてくれないです。Publicディレクトリ配下に適当なフォルダを作って、wordpressのuploads配下の画像ディレクトリを丸々起きました。ブログをインポートで、先ほど置換したファイルを読み込ませます。すると、[投稿]にインポートされたものが表示されます。※不完全ここで難儀をして未だに解決できていない事があるのですが、途中までを掲載しておきます。www.example.com)。とチェックを付けると該当する手順が表示されるので、それに従って操作を行いました。[基本]で、www.takaiwa.neをメインとするようにできましたが、takaiwa.netでアクセスできない。いうチェックボックスがあるので、チェックを付けて保存ボタンを押しても反映されません。エラーも出ないので、何が問題なのかわかりません。何度も見直しましたが、これ以上手を入れるような部分はなく、あきらめてBloggerの「ご意見・ご感想」にやり方がわからない旨を送信しておきました。ご丁寧に、個別には返信しませんと念を押されました......かと言って、今更アプリに直に、http://www.takaiwa.net/p/pattern-calendar-for-android.htmlのURLを記述してしまったのでブログを移すわけにもいかず。日付は先月ですけど、なんか未だにできねーw風な書き込みもありました。グループhttp://productforums.google.com/forum/#!topic/blogger/IA8qooEdq2k修正中なんでしょうか。www.takaiwa.netの方が機能してるので、それでとりあえずは良しとします。大した事ではなくてちょっとした事なんですけど、ブログを管理するページなのに、ツールチップが「選択した写真を~」と表示されたり、インポートするときに「インポートして公開する」にチェックを付けたのに、公開されてなかったり、なんか細かい部分まで行き届いてないほど手が足りてないんじゃねーの?と思ったブログ移転でした。追記:2012/10/22今日見たらtakaiwa.netがリダイレクトされるようになってました。やり方は間違ってなかったということで。ここ3,4ヶ月くらいAndroid端末が急にシャットダウンして困ってたんですが、何となく原因が分かった気がします。python-...JavaでprivateなfieldやmethodにアクセスするJUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。次のような対象のクラスがあるとします。Blogger.自己紹介Android、Java、Web系、何かしらAPIとかに触れてます。プログラミングで躓いた話と猫、どうでもいい話などを載せてます。参考となるものがあれば幸いです。ギュインギュインするEDMが大好物です。