パーミッション設定忘れに注意

Google Android WebAPIプログラミング入門
を読みながら、Youtube アプリ作成の勉強してます

今回、単純なエラーをしていました
JUnit Test を行っていましたが
Run As > Android JUnit Test を実行したとき、
エラーがでて、かなり考え込みました
JUnit のエラーログには
at net.linuxliker.data.test.FeedFactoryTest.testCreate(FeedFactoryTest.java:17) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
となっていて、調べると
assertEquals(iRet,HttpStatus.SC_OK);
に問題があるということだったので、ソースを見ましたが
問題になりそうなところがありませんでした
しかし、よくよく考えてみたら、
AndroidManifest.xml
のパーミッション設定で
<uses-permission android:name=”android.permission.INTERNET”></uses-permission>
を追記するのを忘れていました
この権限をつけないと、アプリはネット接続することができません
これが原因でした

大量生産と芸術品

スティーブ・ジョブズ I
を購入し、読んでみました

昔からいろいろと本は読んでいますが、人物のバックグラウンドを
見てみるのはとても興味深いものがあります
今回、興味を引いたのが
書籍の中にあった文
大量生産可能な芸術品を作る ルイス・ティファニーから学ぶというものでした
そして、ルイス・ティファニーがすべてをやろうとせず
デザインをほかの人たちに与えることができたのはなぜか
というところです

日経 Linux の特集の再現

今回の 日経 Linux 2011 12月号がおもしろそうなので購入してみました

今回は、ubuntu 10.10 32bit を使って構築しているようです
しかし、いまほとんどのマシンが64bit 対応マシンで
動いているため、一度64bit の ubuntu で構築をしてみます
Ubuntu 11.04にAndroid開発環境を構築する
に載っていましたが
ubuntu で 64bit OS で 32bit 関連を使うには
sudo apt-get install ia32-libs
を実行することで、32bit アプリにもある程度は対応するようです
まず、仮想環境で実験して、成功したら 64bit の実機に搭載してみます
そういえば、久々に VMware Player をインストールしました
バージョンが4になっていましたが
残念ながら、_の入力ができないという欠点はそのままでした
[解決済み] VMware Player 3.1 ゲストOSでの アンダースコア入力について
を参考に
sudo vi /etc/vmware/config
でファイルを開き、
最下行に
xkeymap.keycode.97 = 0x73
xkeymap.nokeycodeMap = true

追記
sudo /etc/init.d/vmware restart
で再起動すれば
無事に使えるようになります

Elastic IPs でも private IP は変わる

Amazon からのメールがきたため、念のためインスタンスを停止
また、いい機会だったので、
Elastic IPs をつけたときにインスタンスを停止したらどうなるか実験
結果、Elastic IPs をつけていても
インスタンスを停止すると、設定が外れました
インスタンスを再起動し、再度 Elastic IP の設定を行います
次に、HTTPSでの接続を実験
念のため、確認したら Private IP の数値が変わっていたため
firefox でアクセスすると
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
が表示されました
仕方ないため、再度設定ファイルを変更
記述されている IP を Private IP の数値に変更して
Apache2 を再起動
再度アクセスすると、問題なく表示されました
どうやら、Elastic IP は、インスタンスが起動しているときのみ
有効になるようです
そして、一度再起動などをすると
設定が外れてしまうようです
AmazonEC2 API なども公開されていますので
スクリプトを組めるようにスキルアップし
このあたりを対処できるようにするのが今後の課題になりそうです

AmazonEC2 からメールきました

先日、AmazonEC2 からメールがきました
そして、内容はすべて英語です
内容は
Hello,
We have noticed that one or more of your instances is running on a host degraded due to hardware failure. The host needs to undergo maintenance and will be taken down after 12:00 GMT on 2011-11-08. If you do not take action before this time they will be terminated at this point.
The risk of your instances failing is increased at this point. We cannot determine the health of any applications running on the instances. We recommend that you take appropriate action.
If your instance was launched from an EBS-backed AMI, issuing a stop and start from the AWS Management Console will migrate your instance to new hardware and help avoid any unforeseen downtime.
For more options to stop and start your instance please see:
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/starting-stopping-instances.html
If your instance was launched from an instance store-backed AMI, you should launch a replacement instance from your most recent AMI and migrate all necessary data to the replacement instance.
Should have you have any additional questions, we offer AWS Basic Support via our Community Forums for free, or Premium Support for one-on-one assistance direct from an AWS Developer Support Engineer at http://aws.amazon.com/support.
Sincerely,
The Amazon EC2 Team
ここは手っ取り早く
Google 翻訳
を使って見ました
翻訳してみると
こんにちは、
我々は、インスタンスの1つまたは複数が原因でハードウェア障害のために縮退ホスト上で実行されていることに気づいた。ホストは、メンテナンスを受ける必要があり、2011年11月8日の12:00 GMT後に停止します。あなたがこの時間より前に行動をとらないならば、それらはこの時点で終了されます。
失敗、インスタンスのリスクは、この時点で増加している。我々は、インスタンス上で実行される任意のアプリケーションの健全性を判断することはできません。我々はあなたが適切なアクションをとることをお勧めします。
インスタンスがEBSでバックアップされたAMIから起動した場合、ストップを発行し、AWS Management Consoleから起動すると、新しいハードウェアにインスタンスを移行し、不測のダウンタイムを防ぐことができます。
停止し、インスタンスを起動できるオプションについての詳細は参照してください。
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/starting-stopping-instances.html
あなたのインスタンスがインスタンスストア担保AMIから起動された場合、あなたの最も最近のAMIから交換用のインスタンスを起動し、交換用インスタンスに必要なすべてのデータを移行する必要があります。
何かご質問がいるはず、私達は自由のための私達のコミュニティフォーラムを経由してAWSベーシックサポート、またはhttp://aws.amazon.com/supportでAWS開発者サポートエンジニアから直接一対一の支援のためのプレミアムサポートを提供します。
誠実に、
Amazon EC2のチーム
どうやら、メンテのため、インスタンスを停止するとか
バックアップしておくようにということらしいです
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?starting-stopping-instances.html
をみたかんじでは
stop とかかれているため、インスタンスを一時停止しておこうと思います

AmazonEC2 Virtualdomain 設定(Https)

AmazonEC2 で HTTPSでのサイトを表示しようとしたものの、
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
* 受信したデータの真正性を検証できなかったため、このページは表示できませんでした。
* この問題を Web サイトの管理者に連絡してください。あるいは [ヘルプ] メニューの [不具合のあるサイトを報告] でこのサイトについて報告してください。
というエラーメッセージがでて、なぜか進めないという状態に
まず、再度 AWSアカウントで、
public DNS で グローバルIP を確認したものの、間違いがないため
さらに悩むことになりました
原因は、指定するのがグローバルIPではなく
ローカルIPであったのが原因でした
ローカルIPは、Private IP Address に表示されています
この問題の解決には
Amazon EC2 (Amazon Linux) での ApacheとPHP インストールと設定 を参考にさせていただきました
運用するドメイン分を記述します。
(ElasticIPを割り当てていてもローカルIPが使われるようなので、
*ではなくIPを指定する場合はローカルIPを記述します。)
ということがかかれていましたので、
この Private IP Address を VirtualHost へ設定し
apache を再起動することで解決しました
ElasticIP を設定していたので、グローバルIPを指定すると思っていました
SSH公開鍵認証ではグローバルIP指定するし、
HTTP接続にもグローバルIPで対応できていましたので、全然気がつきませんでした
このローカルIPと、ElasticIP の関係については
Amazon EC2のElastic IP(固定IPアドレス)を設定する!
に解説が載っていました
どうやら
内部的には、NATを設定して、IPアドレスを自動で割り振り、
DDNSでドメインを与えている
Elastic IP は、そのNATの部分を固定IPにする作業
ということになるようです
どうやら、自宅サーバーなどでの固定IPとは少し違うようです

Twitter の開発者向けイベント開催t

本日届いた ITPro のメルマガで、Twitter の開発者向けの
イベントがあることが記載されていました
イベント名は「Tokyo Dev Teatime」
リンク先はhttps://dev.twitter.com/form/tokyo-dev-teatime
となります
当日の会場の状況は Ustream でも視聴できるようです
日本人エンジニアの採用活動も進めており、10月と11月に東京都内でエンジニアの採用面接を行っている
とのことですが、勤務先は
米国サンフランシスコのツイッター本社で勤務ということになるようです
ちなみに、元記事は
ツイッター、開発者向けイベントを2011年11月に開催
です
最近はいろいろな講習が Usrream で見ることができます
パスワードつけての配信や、商用も可能になってきたようです

Facebook アプリ作成で必要な curl

第四回Web APIを使ってWebアプリケーションを作る勉強会
に参加しました
とはいっても、仕事の関係上、録画していただいたものをみながら行っています
今回、つまづいたところとしては、
SSL通信可能なサーバーを用意するところでした
実際にはSSL通信可能なサーバーは、以前からいろいろと
VMware Player で構築してあったので、これについては問題なくできたのですが
問題は、ここではなく
その後のアプリへのアクセスでおきました
SSLの証明書作成や Web サーバー構築などについては問題ないのですが
キャンバスページへアクセスすると
Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the CURL PHP extension.
というエラーが発生します
原因は、エラーにあるように、curlがないためでした
このため、以前 VmwarePlayer で作成した fedora13 を使うことにしました
この仮想マシンには XAMPPでいろいろと 日経Linux を参考に
Web アプリをインストールしてありましたので、こちらを使うことで解決しました
XAMPP で WordPress
Webメールアプリ RoundCube
スクリプトを混ぜたサーバー構築実験
Piwigo でWeb フォトアルバム
ClipBucket
といった過去に掲載した内容がこれには構築してあるため、実験には最適でした
なお、今回の勉強会では
レンタルサーバーを用意して行っていましたが、XAMPPや自宅サーバーでも
再現はできるようです
(今回はXAMPPで行いました)
xampp で実験する場合、
/opt/lampp/htdocs/
の中に
mkdir /opt/lampp/htdocs/facebook
として
facebook というディレクトリを作成
必要なファイルの編集が終わったら、FTPソフト、FileZila
もしくは scp コマンドで転送することですすめることができます
今回の場合、キャンパスURLには
http://192.168.10.141/facebook/
セキュリティで保護されたキャンパスURLには
htts://192.168.10.141/facebook/
というようにしました
セキュリティで保護されているほうは
https となりますのでご注意
ちなみに、XAMPPの場合、permission 関連でエラーになることがあるので
そのときには
chown で権限を変更することが必要になります
今回は、scp でコピーしたときに root 権限になっていたので、
URLへアクセスしてもエラーになりました
対策として
chown wiki -R /opt/lampp/htdocs/facebook/
として
権限を root から一般ユーザへと移す必要がありました

Google Map API の有料化

google アラートを使ってマッシュアップや API関連を
メールで届くようにしていますが
気になるものが送信されてきました
それは Google Map API の来年からの有料化
とはいっても、使うと課金ではなく、関係するのは 開発者サイド
このため、Google Map をつかったサイトが少し減るかもしれません
情報ソースは
Google Maps API有料化の詳細発表、該当ユーザーは2012年初めに強制課金開始
Android アプリ作成で使っている場合、どうなるのか調べてみようと思います

Facebook 開発者登録

第1回 Facebookアプリを開発する前に必要な予習と準備とは
と、ネットでの検索を使って登録してみた
基礎から分かる、Facebookアプリの作り方
にも載っているけど、
ITPro のほうが内容が新しいのでいいかもしれない
ただし、こちらの記事の内容は
PHPと Eclipse プラグインが必要
Windows Azure SDK が必要
Facebook アカウントがすでに取得済みという条件付き
今回は、開発者登録のみなので、
facebook にログインして、一番下にある 開発者 をクリック
次に、画面の上にある アプリ をクリック
パスワードを聞かれるので Facebook のパスワード入力
最初にログインしたときには、
基本データへのアクセスを許可するか聞かれるので、許可する
をクリック
これで、開発者登録は完了となります
ただし、いままでやってきたものとは大きく違うところは
アプリを登録するのには条件が難しいかもということです
アカウントを作成してから一定期間以上経っていること
そして、
アカウントに携帯電話、またはクレジットカード情報を登録する
この2つが必要な条件になっています
しばらくは、Facebook アプリとマーケティングの勉強のため
facebook を使って見ようと思います