takaiwa.net

Android、Java、Web系、Linux、マラソン等の備忘録

2012/10/31

毎回VirtualBoxへadb connect 192.168...と打つのが面倒なので

0 件のコメント
ほとんど需要の無い話だと思いますが、以下2点をメモ。VirtualBoxでAndroidのデバッグを行う際にコマンドで毎回、
adb connect 192.168.1.3

のように打ち、VirtualBoxのAndroidと接続するわけですが、これを毎日のように打つのは、さすがに面倒通り越して飽きてくるので、バッチファイルで効率化したいと思います。その前に、

コマンドプロンプトのショートカット

今更メモするような事でもないかも知れません。PATHにadbのディレクトリを通してないので、どこでもadbコマンドが使えるわけではありません。そのため、コマンドプロンプト起動時にadbディレクトリから開始できるようにします。


コマンドプロンプトのショートカットを右クリック > プロパティ で作業フォルダに、

D:\android-sdk\platform-tools

のように記述してやります。これで適用ボタンを押せばおk

バッチファイル

adb connect 192.168.1までは毎回同じなので、テキストエディタで
if "%1" == "" goto error
adb connect 192.168.1.%1

と記述しました。これをac.batというファイル名で保存し、先ほどのコマンドプロンプトで、IPアドレスが192.168.1.3なら、
ac 3
スペース含め4文字でいけますね。disconnect側もadc.batファイルを作成して接続を解除するようにしました。

理想系は

理想は、VirtualBoxのAndroid起動と同事にコマンド打つことなく接続して欲しいですが...
まぁ考えられるところでは、バッチファイルを叩いてもIPアドレス末尾の数字1文字を入力待ちにしておいて、先ほどのコマンドプロンプトショートカットの作業フォルダにコマンドも書き込んでしまえば、
  1. ショートカットをダブルクリック
  2. 数字を入力してエンター
のステップでいけそうですね。そこまでしなくてもいいかと思って調べるのやめておきました(^^ゞ

トイレを覚えてくれた

0 件のコメント
子猫が我が家に来てから、トイレを1度もしてなかったので心配だったのと、トイレの躾をつけたいと思っていたのですが、この日ようやくウンチしてくれました。カーペットの上に(#^ω^)ヨシイイコダ

それをティッシュでくるみ猫砂の所へ置き、猫を連れて行って匂いを嗅がせ、カーペットは匂いが残らぬよう綺麗に掃除をしておきました。

すると、次回からは自分で猫砂の所へ行って排泄するようになりました。なんて優秀な子なんだ!理想を言えば、カーペットにされる前、催した兆候(猫が床の匂いをかいでウロウロする)らしきものがあったのを確認していたのですが、その時に連れていくべきでしたね。

これで一安心です。


ただ、

便秘が解消されて元気になってよくエサを食べるようになりましたし、機敏に動くようになったのですが、夜中にじゃれて欲しいのか手を噛んできたり、寝ている僕の胸あたりに乗って猫パンチしたりして、またもや寝不足です....

2012/10/30

子猫が我が家に来て一夜明け

0 件のコメント

ひょんな事から子猫を拾い、
・とびこみ日記: 子猫を拾った
http://www.takaiwa.net/2012/10/blog-post.html
飼うことになったのですが、当初は威嚇していた猫も緊張を和らげてくれた様子なので手のひらを近づけるとじゃれます。ただし、全力で噛みます(#^ω^)イタイヨ

子猫とは言え、歯が鋭利なのか時々指に血がにじむほど。昔、小学生だったか中学生の頃に猫を飼ってた経験から、これはそのうち加減を調節してくれるだろうととりあえず我慢。ググったら痛い!とリアクションするのが良いようですね。

とは言え、日常の生活に猫がいるなどというのは子供の頃ぶりなので、どうしていいか



子猫を拾った

0 件のコメント
考え事が捗るのでダイエットも兼ねて、小さい山に繋がる道路をよくウォーキングをしています。道路ができたのは、ここ十数年なのでそのせいか、トカゲやカマキリなどといった生物によく出くわし、遅い時間であれば鹿や猪も見たことあるで若干警戒しながら歩いているのですが、この日は茂みの中から何かの鳴き声がしました。


鳥かなにかだろうとスルーして折り返し地点を目指しました。で、折り返してまたここに来ると鳴いています。動かないという事は怪我した鳥なのだろうかと、ちょっと怖い物見たさで近寄ったら...

2012/10/27

ArrayAdapterで作ったListViewの行の更新

1 件のコメント
ArrayAdapterを継承したクラスでListViewを作る場合、些細な事ですが忘れがちなのでメモしておきます。基本的には、行の更新と言えどListViewはsetAdapterメソッドを叩いてやれば、ListViewを更新できますが、画面に収まりきらないほどのリスト項目を持ち、リストをタップする事でリスト項目を更新するような場合は注意が必要です。

具体例で言いうと、下図のような商品名が並んでいるリストがあり、ショッピングカートのボタンをタップすると、商品名の括弧内の数字(個数)が増えるようなアプリがあったとします。この場合は、下から2番目の”味付けカワハギ”までは、setAdapterでリストを更新しても特に問題はないと思いますが、”冷凍シメサバ”より下に項目が続く場合についてサンプルソースを基に注意点を見ていきたいと思います。




2012/10/26

AndroidでのXML解析と、Evernote本文のDocumentパースが激重い話

0 件のコメント

org.w3c.dom.Documentを使う場合

親ノードを辿れたり、タグの属性を指定して更新できたりしてコードがすっきりするのでこのAPIを使いたいわけですが、EvernoteのクラウドAPIで取得したnoteの本文を丸々突っ込むとパースがクソ重いです。コードは以下のようになるかと思います。

String content = "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\"><en-note><div><p><en-todo checked=\"true\"></en-todo>チェック項目1</p></div><div>ほげほげ</div></en-note>";

InputStream in = new ByteArrayInputStream(content.getBytes());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(in);

パースが遅い故、デバッグもし辛いしorg.w3c.domの利用を諦めようとしていましたが、<en-note>~</en-note>を抜き取ったものを使うと劇的に速くなります。理由までは調べてませんが...
String contentとInput Streamの宣言の間に以下のように、文字列処理を行うと良いでしょう。

int index = content.indexOf("<en-note");
content = content.substring(index);

これで取得したdocumentを
NodeList node_list = document.getElementsByTagName("a");

のように指定したタグでリストを作ってくれるので、僕にとってはXMLをイメージしやすく扱いやすいです。

※ソースは現在実装中のものから抜き出し見やすくしているので、コンパイルは通してません。考え方の参考までに。

XmlPullParserを使う場合

ググるとAndroidではXmlPullParserを使う例が多いようです。
        try {
            xmlPullParser.setInput( new StringReader ( content ) );
        } catch (XmlPullParserException e) {
             Log.v(TAG, "Error");
        }

        try {
            int eventType;
            while ((eventType = xmlPullParser.next()) != XmlPullParser.END_DOCUMENT) {
                Log.v(TAG, "name:" + xmlPullParser.getName() + " text:" + xmlPullParser.getText());
            }
        } catch (Exception e) {
            Log.v(TAG, "Error:" + e.getMessage());
        }

ノートの本文は上記同様String型のcontentに。データを丸々突っ込んでも快適に動作します。直感的ですが、while文を回して取得して文字列を辿るのが今回は適さないので深くは見てません。

SAXParserとDefaultHandlerを使う場合

Java関連でググると軽量なXMLの解析はSAXが提案されてました。parseを実行すると以下のNoteSAXHandler内のメソッドが実行されます。

private final static String TAG = "testActionSampleSAX";

public void testActionSampleSAX() throws Exception {

    String content = (note本文);

    // SAXパーサーファクトリを生成
    SAXParserFactory factory = SAXParserFactory.newInstance();
    // SAXパーサーを生成
    SAXParser parser = factory.newSAXParser();
    //XMLパーサーを定義 別途DefaultHandler を継承したクラス生成必要
    NoteSAXHandler handler = new NoteSAXHandler();


    InputStream is = new ByteArrayInputStream(content.getBytes());

    //パーサー実行
    parser.parse(is, handler);
}


private class NoteSAXHandler extends DefaultHandler {
    // ContentHandlerの実装
    public void startDocument() throws SAXException {
        Log.v(TAG, "startDocument()");
    }
    public void endDocument() throws SAXException {
        Log.v(TAG, "endDocument()");
    }
    public void startElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName,
                       Attributes atts)
                throws SAXException {
        Log.v(TAG, "startElement()");
        Log.v(TAG, "namespace=" + uri);
        Log.v(TAG, "local name=" + localName);
        Log.v(TAG, "qualified name=" + qName);
        for (int i = 0; i < atts.getLength(); i++) {
            Log.v(TAG, "attribute name=" + atts.getLocalName(i));
            Log.v(TAG, "attribute qualified name=" + atts.getQName(i));
            Log.v(TAG, "attribute value=" + atts.getValue(i));
        }
    }
    public void endElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName)
                throws SAXException {
        Log.v(TAG, "endElement()");
    }
    public void characters(char[] ch,
                       int start,
                       int length)
                throws SAXException {
        Log.v(TAG, "characters()" + new String(ch, start, length));
    }

    // ErrorHandlerの実装
    public void warning(SAXParseException e) {
        Log.v(TAG, "警告: " + e.getLineNumber() +"行目:" + e.getMessage());
    }
    public void error(SAXParseException e) {
        Log.v(TAG, "エラー: " + e.getLineNumber() +"行目:" + e.getMessage());
    }
    public void fatalError(SAXParseException e) {
        Log.v(TAG, "深刻なエラー: " + e.getLineNumber() +"行目:" + e.getMessage());
    }
}


タグ名などはstartElementメソッドで取得でき、タグに囲まれたテキストはcharactersメソッドで取得します。このように、タグを探して中身を取得&更新みたいな事をしようとすると、若干トリッキーな実装になりそうだったのでちょっと扱いづらいです。しかし、本文を丸々突っ込んでも快適に動作します。

最後に

動作を試したのは、いずれも少ないデータでの話なので、決定的な速度の違いはありませんでしたが、データが大きくなれば特徴が現れるかもしれません。でも、一番上のやり方でちょっと触れたように、パースが遅ければ文字列処理で削るなどの方法でなんとかなるんじゃないかと思いますし、あまりトリッキーな事はバグの原因やテストが増えるので、一番上のやり方を使いたいですね。まあ単にデータを引っ張ってくるなら、下2つのいずれかが良いでしょう。

Android:Documentでparseしたものを文字列に戻したい

0 件のコメント

エラー

java.lang.NoClassDefFoundError: org.apache.xalan.processor.TransformerFactoryImpl

経緯

AndroidでEvernoteのクラウドAPIを使ってノートの本文(XML)を解析するにあたり、調べてみたら、SAXだとかいろいろあるみたいですが、org.w3c.domがノードをたどれるし、今まで使った事のある経験から採用しました。

※まぁparseが遅いとかいうのもチラっと見かけましたが、次の記事あたりに遅さを解消について書きたいと思います。大したことではありませんが。

で、parseしてデータを取得するまではいいんですけど、これをEvernoteのnoteとして反映させるためには、paerseしたものをまた文字列へ戻す必要があります。ググるとTransformerが使われている例が多かったので、試してみました。Javaで動いてるJUnitで動かしてみたら問題なさそうだったのですが、Androidで動かしたら上記のエラーが出てしまいました。

対応

parseできるなら戻せるようにしておいて欲しい所ですが....どうするかについては単純に3種類くらいでしょうか。
  • それでもTransformerを使うべくxlan.jarを導入する
  • 他のフレームワークを使う
  • 手動で解析
xalan.jarを入れるが楽ではあるんですけど、
ただでさえ、EvernoteのクラウドAPIとActionbarSherlockの導入で数MBに肥大しているので、たかだか文字列にしたいだけで1.7MB近くあるJARファイルを入れたくないですし、
・java.lang.NoClassDefFoundError: org/apache/xalan/processor/TransformerFactoryImpl - Simple difficult things in Java, J2EE, J...
http://simpledevelopment.weebly.com/2/post/2011/11/javalangnoclassdeffounderror-orgapachexalanprocessortransformerfactoryimpl.html
バッドソリューションなどと書かれてますし....

他のフレームワークは特に調べてはないですが、容量増やしたくないということで、手動でやろうかなと。でも、完全に自分でやるのはデバッグが大変そうなのでググったらこちらの下の方にあるDmitryさんが紹介されてるやり方がいいんじゃないかと。
・Writing XML on Android - Stack Overflow
http://stackoverflow.com/questions/2290945/writing-xml-on-android
先頭にxmlタグ付けてくれたり、空白が多かったりするので除去したものを載せておきます。

※注意:追記参照


    private static String getStringFromNode(Node root) throws IOException {

        StringBuilder result = new StringBuilder();

        if (root.getNodeType() == 3)
            result.append(root.getNodeValue());
        else {
            if (root.getNodeType() != 9) {
                StringBuffer attrs = new StringBuffer();
                for (int k = 0; k < root.getAttributes().getLength(); ++k) {
                    attrs.append(" ").append(
                            root.getAttributes().item(k).getNodeName()).append(
                            "=\"").append(
                            root.getAttributes().item(k).getNodeValue())
                            .append("\"");
                }
                result.append("<").append(root.getNodeName()).append("")
                        .append(attrs).append(">");
            }

            NodeList nodes = root.getChildNodes();
            for (int i = 0, j = nodes.getLength(); i < j; i++) {
                Node node = nodes.item(i);
                result.append(getStringFromNode(node));
            }

            if (root.getNodeType() != 9) {
                result.append("</").append(root.getNodeName()).append(">");
            }
        }

        return result.toString();
    }

パラメータがnodeですが、Documentのオブジェクトを突っ込んでやれば文字列を戻してくれます。

追記:2013/02/24 ---------
このサンプルソースは、セルフクロージングタグであっても、それを解いて通常のクロージングタグにしてしまうので注意が必要です。シンプルで良いのですが、安易に使うと危険な気がします。
原形をとどめて戻すやり方は調べたいですが、保留中です.....

2012/10/21

EclipseのGitのCommitショートカットを有効にする

0 件のコメント

環境

  • Eclipse IDE for Java Developers:Helios Service Release 2
  • Git:上記Eclipseのプリインストール版Egit
  • OS:Windows 7

対応

デフォルトでショートCtrl + #が割り当てられてますが、押した所で有効になってないので、Commitが行えません。

メニューから
Window > Customize Perspectiv で表示されるダイアログのCommand Groups AvailabilityタブにあるGitにチェックを付けてOKボタンを押下します。




[参考]
Eclipse, Git - Keyboard Shortcut, How to use? - Stack Overflow

[PR]
アリスとボブのGit入門レッスン
Gitポケットリファレンス
入門git

2012/10/19

Evernote SDK for Androidを使う時はEclipseのヒープサイズをアップさせた方がよさそう

0 件のコメント
前回の記事、
・とびこみ日記: Eclipseが重いのでバージョンダウン
http://www.takaiwa.net/2012/10/eclipse.html
で、動作は軽くなったものの、デバッグ時がやっぱり重い。特にEvernoteのクラウドAPIを実装したもの場合。実機と接続すると、

Unable to execute dex: Java heap space


というダイアログが表示されて、インストールまでたどり付かない。ヒープサイズが問題のようで、ググったら、

・eclipse起動時に「Unable to execute dex: Java heap space」エラー - ロロロッサ
http://d.hatena.ne.jp/zakkiver24+rororossa/20110612/1307888021
にあるように、eclipse.iniのサイズを変更しました。

CPUは貧弱ですが、メモリは無駄に8GB積んでるので大いに使って欲しいのですが、いくらがいいのか特にわからずこんな値にしておきました。

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1536m

以前は、実機デバッグのインストール時に、Eclipseの応答がありませんとか言われるほど動作が重かったのですが、難なく動くようになりました。

[参考]
android - Unable to execute dex: Java heap space Java heap space - Stack Overflow


[PR]
Intel SSD 330 Series Maple Crest 120GB MLC 2.5inch 9.5mm Reseller Box SSDSC2CT120A3K5Intel CPU Core i7 3770K 3.5GHz 8M LGA1155 Ivy Bridge BX80637I73770K【BOX】
Transcend JetRam ノートPC用増設メモリ PC3-10600(DDR3-1333) 8GB KIT(4GB×2) 永久保証 JM1333KSN-8GK

Eclipseが重いのでバージョンダウン

0 件のコメント
前回Androidアプリを作った時は、Eclipse IDE for Java DevelopersのIndigoを使っていたのですが、アプリをリリースして、Eclipseがしっちゃかめっちゃかなっているし、何故かハイライト機能が死んでたので現時点で最新のJunoを入れてました。

ところが、これが重い。別にCPUが占有されてるわけではないですが、何をするにも重い。Eclipse内のViewの挙動が変ってるのも使い辛かったのもじきになれるだろうと思ってましたが、重いのだけは勘弁ならなくて、検索したら、

候補にHeliosが出てきたので、バージョンをダウンさせてみることにしました。ちなみに、Eclipse IDE for Java Developersのパッケージ毎のサイズは、
ダウンロードして、eclipse.exeをダブルクリックすると、まず、起動が速い。Viewもストレスなく移動できる。マシンスペックが上がるまではしばらく使っていきたいと思います。

新規に環境を構築するのが面倒なので、今までJunoで使ってたWorkspaceを利用し、足りないのはAndroid Developer Toolsなのですが、まずEclipse MarketplaceからAndroid Developer Tools for Eclipseをダウンロード。この、Eclipse Marketplace経由からADTをダウンロードすると、どのEclipseでも共通にエミュレータを扱うようなので、今まで設定していたエミュレータもそのまま残っています。なので、以降もすぐでした。

追記:2012/10/19

ヒープサイズを変更するのも重さ解消に繋がりました。
Evernote SDK for 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する方はちょっと試行錯誤中。


[PR:Eclipse高速化]
Intel SSD 330 Series Maple Crest 120GB MLC 2.5inch 9.5mm Reseller Box SSDSC2CT120A3K5Intel CPU Core i7 3770K 3.5GHz 8M LGA1155 Ivy Bridge BX80637I73770K【BOX】
Transcend JetRam ノートPC用増設メモリ PC3-10600(DDR3-1333) 8GB KIT(4GB×2) 永久保証 JM1333KSN-8GK

2012/10/18

ActionBarSherlockのsample demoを動かすまでにやった試行錯誤

0 件のコメント
あっちへぶつかりこっちへぶつかりやったので、ベストなやり方ではなないかもしれませんが、次回も試行錯誤しないようにメモしておきます。

プロジェクトのインポート

maven projectとしてsamples/demos/のプロジェクトをインポート

android-support-v4.jarの削除

前回もやりましたけど、同様にlibsフォルダのandroid-support-v4.jarを削除

dependency not found in workspace

下記エラーが発生したので、

dependency=[com.actionbarsherlock:library:apklib:4.1.0:compile] not found in workspace

こちらから、pom.xmlをコピー
・ActionBarSherlock/library/pom.xml at master · JakeWharton/ActionBarSherlock
https://github.com/JakeWharton/ActionBarSherlock/blob/master/library/pom.xml#

Project 'sample-demos' is missing required source folder: 'test'

このエラーに対して、右クリック Build Path > Configure build PathでSourceタブ内のtestをRemove


Conversion to Dalvik format failed with error 1

Androidアプリを起動しようとしてコンソールに表示されるエラー。ググったら
・android - "Conversion to Dalvik format failed with error 1" on external JAR - Stack Overflow
http://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar

これに困っている人がかなり居たのか、凄い数の回答と指示付いててワロタw
一番指示されている回答が
Go to Project » Properties » Java Build Path » Libraries and remove all except the "Android X.Y" (in my case Android 1.5). click OK. Go to Project » Clean » Clean projects selected below » select your project and click OK. That should work.
ですが、僕の環境での捕捉も足すと
  1. Configure build PathのLibrariesタブにて、全てのラブラリをRemove
  2. プロジェクトをクリーン
  3. プロジェクト上で右クリック > Android Tools > Fix Project Propperties

とりあえず、これで実機で起動できるようになりました。


[参考]
Eclipse Java Missing required source folder: 'src' - Stack Overflow
android - ActionBarSherlock + maven + eclipse: dependency not found in workspace - Stack Overflow
android - "Conversion to Dalvik format failed with error 1" on external JAR - Stack Overflow

[PR]
AndroidアプリUIデザイン&プログラミング  アイデア固めからユーザーフィードバック分析まで
Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術

ActionBarSherlockの導入が一筋縄にいかなかったのでメモ

0 件のコメント
Pattern Calendarを作った時は、このライブラリの存在を知らなかったので、Android 2.xとICSとかと表示が違いなどに困っていましたが、とても有り難いライブラリということで、早速使ってみることにしました。

こちらを参考に
・Android 2.xでAction Barが使えるActionBarSherlockの使い方 - gabuchanの日記
http://d.hatena.ne.jp/gabuchan/20120227/1330302592
Githubはリンク切れてたので、入手先はこちらから
・ActionBarSherlock - Home
http://actionbarsherlock.com/index.html

@Overrideのエラー


まず、ライブラリをAndroid applicationのプロジェクトとして取り込むと、エラーが出ます。



ソース内の@Overrideの所でエラーが出ています。Eclipseの設定を開いて、Java CompilerにJava1.5を使ってるのが問題で、1.6にすれば解決できます。




android-support-v4.jarがかぶる


で、先の解説の通り、自分のアプリを
import com.actionbarsherlock.app.SherlockActivity;

public class MainActivity extends SherlockActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
     setTheme(R.style.Theme_Sherlock);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

と修正して、ビルドをかけるとソースに問題がないのにエラーが残ってます。



Jar mismatch! Fix your dependencies HelloActionBar Unknown Android Dependency Problem

エラーには上記のように表示されています。これは、ライブラリ側と自分のアプリに、android-support-v4.jarが存在しているのが問題のようです。パッケージエクスプローラーから自分のアプリのlibsディレクトリに入っているandroid-support-v4.jarを削除する事で解決できます。

2012/10/13

Evernote SDK for Androidサンプルを自分のプロジェクトで実装する時の注意点

0 件のコメント
Evernote SDK for AndroidのクラウドAPIサンプルを参考にしながら、自前のプロジェクト上で実装してみた際の注意点というかエラーについてです。今後SDKのバージョンアップがあれば発生しなくなるかと思われますが下記環境に関しては注意が必要です。

環境


実装

基本的には、こちらの

”Using the SDK in your app”の項目を参考にすれば良いと思いますが、見落としてました...

2012/10/12

Evernote SDK for AndroidのサンプルのOAuthで躓く

0 件のコメント

環境

経緯など

昨年くらいに、一度WebアプリケーションとかJavaの環境でEvernote連携を試してみようとして、API Keyを発行してノートの一覧やノートの投稿などやったくらいに触った事あったんですけど、今回Androidで連携してみようと久々に触りました。

Androidでは、以下の2種類の方法でEvernoteのリソースへアクセスできるようです。
  • Intents
  • クラウドAPI
これはPattern Calendarアプリの時も、Googleカレンダーで両方使えたんですけどIntentsで実装しました。IntentsはSQLite感覚で使えて楽なんですけど、その分端末内の同期を待たないといけないというデメリットもあり、今回はクラウドAPIを利用してみます。


以前はEvernoteの開発者ページは英語だったような記憶をしていますが、日本語が充実しているのと、わかりやすいデザインになってますね。

2012/10/11

Androidエミュレータ爆速環境を試そうとして「XD not supported」

0 件のコメント

Intelのx86 Emulator Accelerator(XAXM)の存在は知っていて、僕のマシンじゃダメだと知っていたのですが、先ほどタイムラインに流れてきた、
・【番外編】Androidの爆速エミュレータ環境を構築する | クラスメソッド開発ブログ
http://dev.classmethod.jp/smartphone/build-fast-android-emulator/
これは新しいやり方だろうかと試してみたら、Hardware Accelerated Execution Managerのインストールでこけました。

XD not supported
This computer does not support Intel Execute Disable Bit(XD) or it is disable int the BIOS. HAXM cannot be installed Please refer to the Intel HAXM documentation for more informaiton.

とのこと(´_`;)ヤッパリ

まぁVirtualBoxで爆速環境は作れたりしますけど、エミュレータで動かしたい。



2012/10/09

Bloggerの投稿で指定できる見出し

0 件のコメント
標準

見出し


小見出し


準見出し

2012/10/07

WordPressからBloggerへ移行で躓いた点など

1 件のコメント

経緯


Androidアプリを作った時に、オンライン情報ページを設ける事を考えました。それまで運営していたtakaiwa.netのWordpressのブログにアプリ用ページを作成しても良かったのですが、自宅サーバのため不安定だしスパムコメントやら「wordpressの新しいバージョンが利用できます」などメッセージに対するメンテナンスが煩わしいので、ブログを移転する事にしました。何故Bloggerかというと、今まで使ってて特にクセがなかったといった軽い感じです。

WordpressからブログデータをExport


と行きたいころですが、ご丁寧にも未承認のスパムコメントまでエクスポートして、Bloggerに格納してくれるのでまずスパムコメントを消します。Bloggerでやってもいいですが、wordpressで消す方が楽だったように思います。スパムコメントを消し終わったら、[Tools] – [Export]を選択します。All contentsでも良いのですが、次の作業で1MB以内に抑える必要があったので、Postsだけにします。まあ特にPagesは作ってなかったのでExportはしません。



Bloggerへインポート


Wordpressほど有名ならインポートも余裕だろwwと思ってたら現実は甘くなくて、そのままだとインポートしてくれません。インポートできる形に変換してやる必要があり、そういうサービスを提供してくださってるありがたいサイトがありました。
・Wordpress2Blogger conversion utility
http://wordpress2blogger.appspot.com/
ここで、ファイルを指定してコンバートボタンを押せばおkです。では、インポートといきたいところですが、画像のURLが

http://takaiwa.net/wp-content/uploads~

というドメインのままインポートすることになるわけで、ドメインもそのまま移転させるので画像を別途移動させてやる必要があります。何か良いやり方があればいいのですけど、思いつかなかったのでDropboxのPublicフォルダを利用する事にしました。他のフォルダだとディレクトリ構造を維持しなてくれないです。


上図のようにDropbox - Publicディレクトリ配下に適当なフォルダを作って、wordpressのuploads配下の画像ディレクトリを丸々起きました。これで、先ほどコンバートしたファイルをテキストエディタで開き、「http://takaiwa.net/wp-content/uploads」の部分を丸々「http://dl.dropbox.com/u/19515983/takaiwanet_wordpress/uploads」のように置換してやればOKです!
Bloggerを開いて、[設定] – [その他] ブログをインポートで、先ほど置換したファイルを読み込ませます。そうすると、[投稿]にインポートされたものが表示されます。

ドメインをtakaiwa.netにする ※不完全



ここで難儀をして未だに解決できていない事があるのですが、途中までを掲載しておきます。 ⇒下記追記
takaiwa.netはお名前.comで取得したのですが、どういう風に設定するかのやり方は、
・ブログでカスタム ドメイン名を使用するには - Blogger ヘルプ
http://support.google.com/blogger/bin/static.py?hl=ja&ts=1233381&page=ts.cs
上記リンクで、ラジオボタンに、
  • 既存のURLでブログをホストする
  • いいえ
  • トップレベル ドメイン(例: www.example.com)。
とチェックを付けると該当する手順が表示されるので、それに従って操作を行いました。




お名前.com側(レンタルDNSレコード設定)


で、Bloggerを開いて[設定] – [基本]で、www.takaiwa.neをメインとするようにできましたが、



takaiwa.netでアクセスできない。上記画面で編集ボタンを開くと、



takaiwa.net を www.takaiwa.net にリダイレクトする。というチェックボックスがあるので、チェックを付けて保存ボタンを押しても反映されません。エラーも出ないので、何が問題なのかわかりません。何度も見直しましたが、これ以上手を入れるような部分はなく、あきらめてBloggerの「ご意見・ご感想」にやり方がわからない旨を送信しておきました。ご丁寧に、個別には返信しませんと念を押されました……
かと言って、今更アプリに直に、http://www.takaiwa.net/p/pattern-calendar-for-android.htmlのURLを記述してしまったのでブログを移すわけにもいかず。日付は先月ですけど、なんか未だにできねーw風な書き込みもありました。英語そんなに読んでないですが(;^_^A
・Blogger redirect from naked top level domain to www domain still not working - Google グループ
http://productforums.google.com/forum/#!topic/blogger/IA8qooEdq2k
修正中なんでしょうか。とりあえず、www.takaiwa.netの方が機能してるので、それでとりあえずは良しとします。
大した事ではなくてちょっとした事なんですけど、



ブログを管理するページなのに、ツールチップが「選択した写真を~」と表示されたり、インポートするときに「インポートして公開する」にチェックを付けたのに、公開されてなかったり、なんか細かい部分まで行き届いてないほど手が足りてないんじゃねーの?と思ったブログ移転でした。



追記:2012/10/22

今日見たらtakaiwa.netがリダイレクトされるようになってました。


Bloggerのダッシュボードに表示されるアクセス元に、ゾンビドメインリストというサイト経由でやってくる方がいたので、Bloggerからも音沙汰ないし、自宅サーバにてリダイレクトしてやろうかと思った矢先、対応してくれました(;^_^A やり方は間違ってなかったということで。