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で画面幅分の領域を指定すればよいです。

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

2013年8月22日木曜日

BitmapFun.zip

android Developersの Displaying Bitmaps Efficiently を勉強しています。
AsyncTaskは使ったことあるし、わかっているつもりだったのですが、ここのサンプルを読むと「こんな使い方するんだ!」という新たな驚きがありました。

サンプルコード BitmapFun.zip なのですが動かしてみると、サンプルの写真がキレイで感動すら覚えます。しかもネットワーク上の写真をHTTPで取得するサンプルでいろいろ勉強になります。

会社のパソコンでエミュレータ(AVD)で動かしたら、画像のダウンロードに失敗しました。
プロキシの影響でした。コードを書き換えると画像のダウンロードができるようになりました。

クラス: com.example.android.bitmapfun.util.ImageFetcher
メソッド: downloadUrlToStream(String, OutputStream)

urlConnection = (HttpURLConnection) url.openConnection();
これを書き直す。

↓↓↓↓
java.net.SocketAddress socketAddress = java.net.InetSocketAddress.createUnresolved("host", 50000/*port番号*/);
// java.net.SocketAddress socketAddress = new java.net.InetSocketAddress("host", 50000/*port番号*/); でもよいかも?
java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddress);
urlConnection = (HttpURLConnection) url.openConnection(proxy);

※"host"とport番号はお使いの環境にあわせてください。

詳細は HttpURLConnection を参照ください!


追伸
どうでもよいことですが、プロキシの設定をすればよいと気づいてコードを書き直したのですが、なかなか思ったとおりに動いてくれませんでした。

SocketAddress socketAddress = InetSocketAddress.createUnresolved("host", 50000/*port番号*/);
Proxy proxy = new Proxy(Proxy.Type.HTTP, socketAddress);
urlConnection = (HttpURLConnection) url.openConnection(proxy);

urlConnection = (HttpURLConnection) url.openConnection(); // proxy設定なしで、urlConnectionをセット

★の行が残ったままになっていました。
追加した行にばかり気を取られて、あれこれ悩んで、気づくまで1時間くらい時間がかかりました。。。
iTunes Store(Japan)

2013年6月11日火曜日

オノマトペ

最近の流行りだそうである。
「オノマトペ」とカタカナで言われてもピンとこなかった。

日本語は擬声語というらしい。
「ギセイゴ」とカタカナで言われてもやはりピンとはこなかったであろう。
擬声語と漢字で書かれると、ようやくぼんやりと意味がつかめる。

ぱみゅ
じぇじぇ

スポーツの指導でも使われはじめたそうだ。
というか、ようやくやっとのことで、その有効性に世間が追いついただけのことであるとおもう。
ご存知我らがミスターG、長嶋茂雄さんはもうずいぶん前から、オノマトペを多用されている。
オノマトペの第一人者といっても過言ではない。
この一事をもっても、やはり国民栄誉賞の受賞は遅すぎたくらいなのである。