2013年10月31日木曜日

OSX MavericksにHAXMをインストールしてエミュレータを起動すると……(android)

Intel(R) Hardware Accelerated Execution Manager(HAXM)は13/10/31現在、Mac OS X 10.7 Lionまでのサポートのようです。
READMEみたいなファイルをみて、それは知っていたのですが、まあ大丈夫だろうとおもって、OSX Mavericksにインストールしてみました。
失敗しました……

HAXMをOSX Mavericksにインストールして、androidエミュレータを起動しようとすると、Macがフリーズしました。
こんなのはじめてです……
お気をつけください。
3時間ほど放置しましたが、画面中央下部にインジケーターがまわりつづけ、マウスは反応せず、Command + Option + Escも効かず、嫌でしたが買ってからはじめて、泣く泣く電源ボタン長押しをしました。
iMac 21.5-inch, Late 2012です。

再起動後はアンインストールとディスクユーティリティで、ディスクの検証とかをしておきました。
上記のリンクにアンインストール方法が書いてあります。
念のため、AVD Managerでエミュレータを消して(※)、作成しなおしました。
今度は無事、エミュレータの起動ができました。とりあえずよかったです。

このへんの話は、stackoverflowでも話題がでていました。
公式見解(やりとり)はこちら。

(※)Macがフリーズするまえに、起動しようとしていたデバイスのdeleteができませんでした。電源ボタンを押し強制終了したことによる影響かとおもいます。こちらを参考にして、~/.android/avd配下の.iniファイルと*.avdフォルダを消しました。

追記(2013/11/7)
hotfixがでていました。私はまだインストールしていないです。
http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/




2013年10月14日月曜日

Alt+P

「現在他のプロセスによって書き込みが禁止されています。」

ドットインストール様を利用させていただいて、HTMLの勉強をしています。

OSはWindows7、エディタはサクラエディタを使用していましたところ、
なんだかわからないタイミングで「現在他のプロセスによって書き込みが禁止されています。」と表示されて保存ができなくなるのです。
ウィルス感染? とか焦っていると、Alt+Pで解決しました。

こちらのページを参考にさせていただきました。
ありがとうございました。



2013年9月22日日曜日

JavaScript勉強

aaa
をお使いですね。


東京五輪開幕まで残り
test
です。


  • 2020/07/24までの残りの時間を計算しています。
  • JavaScriptは月を0-11で表すのですね。
  • Chromeだと、右クリック->ページのソースを表示でソースが見れるのですね。
デルカへ

2013年9月7日土曜日

[GAE]テキストファイルを読み込む

Google App Engineにテキストファイルを置いておいて、それを読み込みたいことってありますよね? ありませんかね。。。

ファイル書き出しはできないけれど、読み出しはできるみたいなことは書いてあるのですが、どこにどうおいて、ファイルパスはどうなるのかがいまいちわかりませんでした。
今日わかりました。
どうでもよい話ですが、私の失敗談をひとつご披露。
わからない間は、String data = "……"; で、ものすごい長い文字列を書いていました……
その文字列の中に"とかエスケープしないといけない文字があったりするので、生データをエスケープするためのプログラムを書いたりしていました……
その変換プログラムがバグだらけで、データが増えるたびに、変換プログラムで不都合が発生して……
まあ、たぶんGAEにテキストファイルを置きたいという時点で根本を間違えている気がしないでもないのですが…… とまれ、余談でした。


まずファイルは、war/ の下に格納します。
たとえば、war/data/test.txt みたいな感じです。

読み出し処理は、

ServletContext context = super.getServletContext(); // HttpServletインスタンスです

URL url = context.getResource("/data/test.txt"); // warから下のパスで書きます。

FileInputStream is = new FileInputStream(url.getPath());

FileInputStreamのインスタンスが得られたここから先は、「とほほのJava入門」様がとても参考になります。
よく参考にさせてもらっています。ありがとうございます!

追記
ここに似た話が書いてありました。



  デルカへ


2013年9月6日金曜日

[android]HTTP GETする

ドコモからiPhoneがでる(?)らしく、早くiOSアプリのほうをなんとかしたいのですが、これまでのことをまとめておきたくて私がよく使う手を公開します。

HTTP GETして、Stringが欲しいことってよく(?)ありますよね。
WEB APIでレスポンスがJSONで返ってくるというのはよくあるようにおもいます。

TorifukuHttpClient.Decoder decorder = new TorifukuHttpClient.Decoder() {
@Override
public Object decode(TorifukuHttpClient client,
InputStream is) {
return client.convertString(is, "SJIS");
}
};
TorifukuHttpClient client = new TorifukuHttpClient();
String text = (String) client.getContent("http://google.com", decorder);


画像をダウンロードして、Bitmapにしたいこともよく(?)ありますよね。

TorifukuHttpClient.Decoder decorder = new TorifukuHttpClient.Decoder() {
@Override
public Object decode(TorifukuHttpClient client,
InputStream is) {
return BitmapFactory.decodeStream(is);
}
};
TorifukuHttpClient client = new TorifukuHttpClient();
Bitmap bmp = (Bitmap) client.getContent("https://lh4.googleusercontent.com/--dq8niRp7W4/URquVgmXvgI/AAAAAAAAAbs/-gnuLQfNnBA/s1024/A%252520Song%252520of%252520Ice%252520and%252520Fire.jpg", decorder);

ところで、TorifukuHttpClient て何だ? という話ですが、すでに使いやすいとってもすばらしいApache HTTP Clientを私がよく使う形にしてまとめたクラスです。
GitHubで公開しています。

  デルカへ

2013年9月1日日曜日

映画アンコール見た


おじいちゃんおばあちゃんがロックやポップスを歌ってるのが、
ミスマッチで面白い、みんな生き生きしててすごく可愛らしい。
真剣に練習に取り組んでいて、なかなかうまい。
合唱のシーンは、こちらもノッてくる。
耳にしたことのある昔のポップス、ロックを選曲してたので懐かしく感じる。
練習中にのり過ぎて、ぎっくり腰になったおじいちゃんや倒れたりする人
がでてきたりと、いろんなハプニングが起こるが、なんか笑いにしてしまう
雰囲気がよかった。
コーラスグループ名が「年金ず」。というのがいい。
妻のマリオンが重篤な病を持っているにもかかわらず、ここに通いたがった
気持ちも理解できる。
歌の力と歌友達の存在があったからだろうな。
マリオンのがやっとの思いで立てたステージのソロで歌ったのが、トゥルーカラーズ。
夫へのメッセージを込めて歌いきった。
渾身の歌を聴いた夫、アーサーの表情にいろんな思いを感じた。
気難しいだの社交的でないなどと周りに思われても、マリオンの身の回りの世話や介護
丁寧に愛情深くしているのを見ると、外面だけ良い夫よりは何倍もいい。
二人のやりとりに、長年ともにしてきた夫婦の絆と愛を感じる。
マリオンの願いは、アーサーに息子のことを理解して欲しいこと。
生きている間に和解して欲しいのに。
マリオンを二人で看病することで、父子の隙間が縮まるかと期待したけど、それはない。
医師から死期が迫っていると告げられてからと亡くなってからは、余計に離れていく。
最愛の妻を亡くした喪失感でアーサーは、立ち直れない。
本来マリオンが歌うことになってたソロでのパートをアーサーが代役することにした。
コンクールにでて歌うまで、いろんな葛藤、挫折を乗り越える。
マリオンが伝えたかったこと、分かった。
前向きに生きること、楽しむこと。
アーサーの人生は、これからアンコールするんだね。










2013年8月30日金曜日

Visual Basicはじめました

ひょんなことからその原型が1990年代後半につくられたVisual Basicプロジェクトをメンテナンスすることになりました。
Visual Basicははじめてですが、なかなかおもしろいです。
個人的に憧れの(?)Windowsアプリをちょっとしたものなら作れるようになってきていることはうれしいです。

Visual Basic6.0 -> Visual Basic2010への移行を行なっています。
ははは(笑)、これもう文法が全然違うものになってますね。
Visual Basic6.0 ⇒ Visual Basic .NETというのにあがったときに、だいぶ言語レベルでの変更がされているようです。

1. Visual Basic6.0 -> Visual Basic2008は移行ツールがあるので、それで一度あげます。Visual Basic2008を起動して、Visual Basic6.0のプロジェクトファイル(.vbp)を開きます。
2. ものにもよるのでしょうけど、コンパイル通りませんので、とりあえず無理やりにでもコンパイルを通します。
3. Visual Basic2008 -> Visual Basic2010に移行ツールであげます(No.1と似たような操作です)。ものにもよるのでしょうけど、No.2ほどはコンパイルエラーはでませんでした。
4. No.3までのものは全く動きませんでした。ひとつひとつ機能を動かしながら、ダメなところを特定して、Visual Basic2010で動くように修正していきます。
ふつうのデバッグ作業です。

おおよそ15年前の先輩方の苦労がしのばれる工夫が随所にみられます。
メモリサイズ、実行速度そういったことを気にされていたのでしょう。
(自分が作ったものもどこかで誰かが触っていることがあるかもしれないとおもうと、ちょっとゾッとしました。)

最後に、Labelの中央寄せについて書いておきます。
Visual Basic6.0は、中央寄せを指定すると、Labelを配置した位置を中心として、左右に文字列が広がっていく感じです。
Visual Basic2010では、TextAlignをMiddleCenter等にした場合、Labelが配置された領域のなかで文字を中央に寄せる感じになります。
AutoSizeはFalseにする必要があるようです。
画面の中央に揃うように表示したい場合は、上記に加えて、LocationとSizeで画面幅分の領域を指定すればよいです。

言葉だけじゃ伝わらないとおもうので、絵をかけばよいのでしょうけど、面倒なので、「中央寄せの定義が異なっています」がポイントです。
(というかこんなことブログに書かなくても周知の事実なのでしょうけど……)