Info

Posts from the Google Category

これ、何ヶ月ぶりのブログ更新だろう?半年か!

先日 Galaxy Nexus (docomo) の OTA で Android 4.0.4になってテザリングが標準に付いてきた。
今まではroot取って、WiFi Tether for Root Usersを使ってが、動かなくなった。Androidのアップグレードでroot化されたやつが可笑しくなったみたい。
試しに標準のテザリングをやってみたら、案の定パケ放題のほかにFOMAの通信料が追加されてた。これはテザリングの料金だな。。。
調べてみたら、通常の3G SPモードの時のIPアドレスとテザリングの時のIPアドレスが違う。おそらくdocomoがテザリングの時にAPNを変えただろうと。
テザリング契約してないユーザには接続させないのが普通だような。。。やり方が汚い!!!
どうしてもじゃないけど、無料でテザリングしたい(実際はほとんどやってない)。単にdocomoに勝ちたい?という気持ちでちょっとやったことをメモ。
root取ったり、カスタムROM入れたりしてNexusが汚くなったので今回奇麗にしたいのも一つの理由

1. 初期化
AOKP ROMを入れてたの端末での初期化したら AOKPの初期化になってNexusの初期化になってない。
ROM Managerでバッグアップ取ったGalaxy Nexus ROMで復元する。
1. Power + Volume 上下ボタンを当時に押して、BootLoader画面を出す。
2. Recorvery Mode選択してPowerボタン
3. Backup and Restoreを選択して、ROM Manager でバックアップしたROMを復元する。

adb shellで中に入ってみると以下のディレクトリにあった。
# cd /sdcard/clockworkmod/backup/
CyanogenMon/ Galaxy_Nexus/ Team_Kang/

Galaxy_Nexusを選択して復元する。

復元はしたけどゴミが残ってみるみたいでROMのインストールでどうも可笑しい動きがしてきたので、docomoの純正ROMに戻してみる。
データが全部飛んじゃうのでバックアップが必要。自分は全部クラウドにあるので必要なし。

https://www.dropbox.com/sh/c7z1l0hai098u82/LOn7Kachfu
URLから docomo-romをダウンロードする。

$ cd docomo-rom
# bootloaderで起動 Power + Volume ↑↓と同じ
docomo-rom dongriab$ adb reboot bootloader  
docomo-rom dongriab$ fastboot erase system -w
docomo-rom dongriab$ fastboot erase boot
docomo-rom dongriab$ fastboot flash system system-ITL41D-SC04D0MKKD.img
docomo-rom dongriab$ fastboot flash boot boot.img
docomo-rom dongriab$ fastboot reboot
docomo-rom dongriab$ 

Googleロゴが二回出たあと正常に起動される。

端末情報を見るとAndroid 4.0.1になった。これは買う時のバージョンだね。。。
それでアプリケーション一覧に Super Userがなくなった。これはもう完全な初期状態だ。よっし!
1分ぐらい待つとOTAが来る、おそらく4.0.4だろう。
OTAは来たが再起動するところで失敗した。
端末初期化ボタンを押してもう一度待つ。
来たけどもう一回失敗。
しょうがなく手動してアップグレードすることにした。

上のリンクから OTA ファイルダウンロードする。
7f97fbc19417.signed-yakju-IMM76D-from-ICL53F.7f97fbc1.zip ファイルをダウンロードして install しようとしても失敗。

Google サイトでimageファイルを直接ダウンロードすることに

https://developers.google.com/android/nexus/images
docomoのやつはこれっぽい
https://developers.google.com/android/nexus/images#yakju

https://www.dropbox.com/sh/ac9ruf65aneolfq/L5HvGLUD4G
yakju-imm76i-factory-8001e72f.tgz ダウンロード

解凍して bootloaderにして flash-all.shを実行

yakju-imm76i dongriab$ adb reboot bootloader
yakju-imm76i dongriab$ ./flash-all.sh 
yakju-imm76i dongriab$ 

終わったら再起動。

今度はデフォルト言語が英語になってた。
試しにテザリングして見たが、APNが変わってなかった。当然だよなdocomoの純正romのアップグレードじゃないんだから。

2. rootを取る
https://www.dropbox.com/sh/hojofhhvgpd44wf/YVgAggxVlC

$ adb push su.zip sdcard/
$ adb reboot bootloader
$ fastboot flash recovery recovery-clockwork-5.5.0.4-toro.img

Recovery mode 選択して install zip from sdcard
su.zip を選択して install su.zip
終わったら go back , restart system now

再起動してアプリケーション一覧に Superuserが現れた。

3. ROMを入れる
ROM Manager を play からインストール
ROM Manager 起動してclockworkなんとかをインストール(GSM)

CyanogenModを使ってたがバッテリーが半日も持てなかったので Team Kangを入れる。

以上でNexusも奇麗になって、あの汚いdocomoを騙してテザリングも可能に!

これ書く必要ないですが、自己責任でお願いします

Advertisements

appengine-java-php

1. Quercusライブラリダウンロード
http://quercus.caucho.com/ から Quercus 3.1.6をダウンロードする(Quercus 4.0.1は文字化けが発生するので、今回は3.1.6を使うようにする)
jar xf quercus-3.1.6.war
(quercus.jar, resin-util.jar, script-10.jar)

2. Jettyライブラリダウンロード
http://dist.codehaus.org/jetty/jetty-6.1.17/ から jetty-6.1.17.zip をダウンロード
(jetty-6.1.17.jar, jetty-util-6.1.17.jar)

3. ライブラリをlibフォルダに入れる
1と2で取得したjarファイルを war/WEB-INF/lib に入れる

4. 設定ファイル修正
4-1 appengine-web.xml

<static-files>
  <exclude path="/**.php" />
</static-files>
<resource-files>
  <include path="/**.php" />
</resource-files>

 
4-2 web.xml

<servlet>
  <servlet-name>Quercus Servlet</servlet-name>
  <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
  <init-param>
    <param-name>script-encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>ini-file</param-name>
    <param-value>WEB-INF/php.ini</param-value>
    </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>Quercus Servlet</servlet-name>
  <url-pattern>*.php</url-pattern>
</servlet-mapping>

 
4-3 php.ini ファイル作成
war/WEB-INF の下に php.ini ファイルを新規作成

unicode.semantics=on
unicode.http_input_encoding=UTF-8
unicode.output_encoding=UTF-8
unicode.runtime_encoding=UTF-8

 
5. info.php
warの下にinfo.phpを作成

<?php
phpinfo();
?>

 
6. アクセスしてみる。
http://localhost:8080/info.php

RIMG1093先日Google Developer Dayに参加して、Google のサプライズでGDD phoneをもらいました。デザインのほうは今まで出したAndroid phone中で一番だと思います。OSはコードネーム“cupcake”のAndroid最新版1.5だったので従来の物理キーボードからソフトキーボードに変わってます。SIMフリー版なのでSIMカードなくても起動できます。Googleからは「積極的にAndroidの開発に参加してほしい」とのことですね。今回参加者全員に配るためにGoogleはすごく苦労したようです。おそらくDocomoさんとの交際かと思います。夏に発売するHT-03Aと同じモデルかな?とにかくありがとう!Google!

あくまでも開発用で、他社のSIMカードを挿して使った場合「パケ死」になる可能性があるのでお勧めしませんとGoogleから何回も言われました。でも、試してみたいですね。iPhone 3GのSIMカード取り出すのが面倒だったので、普通のSoftbank携帯のSIMカードを挿してみました。起動したらちゃんと認識されたようです、画面に「SoftBank」と表示されてました、電話もSMSも普通にできました。ネットはどうだい?と思ってブラウザを起動したら、やっぱり「ネットワークに接続していません」と表示されました。

以下ようにAPN(Access Point Name)の設定を行います。
「設定」→「ワイヤレス設定」→「モバイルネットワーク」→「アクセスポイント名」→「menuボタン」→「新しいAPN」の順にAPN設定画面に辿ります。

  • 名前:Softbank Test
  • APN:smile.world
  • ユーザー名:dna1trop
  • パスワード:so2t3k3m2a
menuボタンで保存して、再びブラウザを開くと、お~接続できました。3Gマークも表示されで
RIMG1094
以上でテスト完了。上の情報はSoftBankからの情報ではないので「パケ死」になる可能性があります。設定したい方は自己責任でお願いします。
名前:Softbank Test
APN:smile.world
ユーザー名:dna1trop
パスワード:so2t3k3m2a

android-logoAndroid SDKってどうゆうもんかと知りたくて試してみました。

1.SDKをダウンロード
http://developer.android.com/sdk/ からWindows用 android-sdk-windows-1.5_r2.zip ダウンロード

2.インストール
インストールと言ってもzipファイルを解凍するだけです。(適当な場所に)
自分の場合は「F:\ide\android-sdk」に入れてます。

3.emulatorを起動してみる
「F:\ide\android-sdk\tools」 に「emulator.exe」がありますが、コマンドプロンプトからそのまま > emulator.exe 起動すると以下のエラーが発生します。

emulator: ERROR: You did not provide the name of an Android Virtual Device
with the ‘-avd <name>’ option. Read -help-avd for more information.

If you *really* want to *NOT* run an AVD, consider using ‘-data <file>’
to specify a data partition image file (I hope you know what you’re doing).

Android Virtual Deviceを指定してくださいとのことですね、バーチャルデバイスを作成。

F:\ide\android-sdk\tools>android.bat create avd -n test -t 2
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ‘test’ based on Android 1.5

F:\ide\android-sdk\tools>

-n testはtestという名前のバーチャルデバイス
-t 2はAndroid 1.5 をtargetにして起動
ちなみに作成したAVDを削除するには 「android.bat delete avd -n test」、AVD一覧を表示するには「android.bat list avds」

emulator起動

F:\ide\android-sdk\tools>emulator.exe -avd test

AndroidEmulator

4.EclipseのプラグインADT(Android Development Tools)をインストール
Eclipseは3.2か3.3が必要です。Eclipseを起動して、「ヘルプ」→「ソフトウェア更新」→「サイト追加」で以下のURLを指定してインストールします。

https://dl-ssl.google.com/android/eclipse/

「ウィンドウ」→「設定」→「Android」 で SDKロケーションを設定します。

5.プロジェクト作成
「新規」→「プロジェクト」→「Android プロジェクト」の順にプロジェクトを作成する。
以下は自分が作成したプロジェクトですので、ご参考まで
プロジェクト名:footmark
ビルド・ターゲット:Android 1.5
アプリケーション名:footmark
パッケージ名:com.wordpress.footmark
Create Activity:footmark
Min SDK Version:3

footmark.javaが生成されるので、修正してみます。

package com.wordpress.footmark;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class footmark extends Activity implements OnClickListener{

 int i=0;
 TextView tv;
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 //setContentView(R.layout.main);

 LinearLayout linearLayout = new LinearLayout(this);
 linearLayout.setOrientation(LinearLayout.HORIZONTAL);//VERTICAL
 setContentView(linearLayout);

 tv = new TextView(this);
 tv.setText("Hello Android x ("+i+")");
 tv.setGravity(1);
 linearLayout.addView(tv,
 new LinearLayout.LayoutParams(
 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

 Button button1 = new Button(this);
 button1.setText("Click Me!");
 button1.setOnClickListener(this);
 linearLayout.addView(button1,
 new LinearLayout.LayoutParams(
 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
 }

 public void onClick(View v) {
 i++;
 tv.setText("Hello Android x ("+i+")");
 }
}

画面イメージ

AndroidApp

3時間でここまで…

明日、GDD phoneに転送してみよう

001最近iPhoneアプリの開発に夢中になって、なかなか時間が取れなかったのですが、今日やっと時間がすこしあったので、前からやってみたかった app engine for java を試すことにしました。Pythonの時はSDKをダウンロードして、秀丸なり好きなエディターでコードを書いてましたが、今回はEclipseのプラグインという素晴らしい選択肢がありました。もちろんJava版のSDKも用意してますけど。

推奨されてるJavaバージョンは6ですが、5でも大丈夫みたいです。Javaはすでにイスントールしてあるので、Eclipseのプラグインを入れることにしました。使ってたEclipse3.3.1にプラグインを入れようとしましたが、「org.eclipse.wst.xml.core」が必須ですと怒られて、本体のUpdateを行いましたが、今度はEclipseの起動すらできませんでした。ショック!しょうがないんでEclipse3.4でチャレンジすることにしました。

まずは、こちらからEclipse3.4.2をダウンロード(http://www.eclipse.org/downloads/packages/

英語が得意ではないんで日本語化(http://mergedoc.sourceforge.jp/index.html#/pleiades.html

次はGoogle Plugin for Eclipseを入れる。(http://dl.google.com/eclipse/plugin/3.4)

完了すると、メニューに三つのアイコンが出てきます。(可愛い~)左からプロジェクト作成、コンパイル、デプロイです。新規でプロジェクトを作成するとテンプレートでAjaxを使ったサンプルコードが自動生成されます。試しにappspotにデプロイしたのがこちら(http://term.appspot.com/)。これだけだと寂しいんでGuestBookも入れようとしましたが、失敗しました。ローカルでは問題なく動きますが、appspotにデプロイするとServer Errorが発生します。
「java.lang.ClassCastException: com.google.appengine.api.users.UserServiceFailureException cannot be cast to javax.servlet.ServletException」
どうもこれが原因らしい。(http://groups.google.com/group/google-appengine-java/browse_thread/thread/3263e14c37391830

やってみて、Pythonの時と比べると少しは楽かと思いました、少なくとも言語がJavaなんで言語そのものの勉強は要らないですね。さ~何を作ってみようかな?時間があるときですけど。時間は自分が作るものだと言われてますが、なかなか難しいですね・・・

Googleの大ファンである私にとってGoogleの一連サービスは無くてはならない存在になってます。Gmailは言うまでも毎日使って、会社のメール、携帯メール、その他ドメインのメールを全てGmailに統括して管理してます。最近はドキュメントまでGoogleDocsを使うようになりました。その他 GoogleCalendarGoogleBookmarks などなど…. 同然、Googleを信用してるから使うわけですが、今日Google mapのことでちょっと裏切られた気がしました。

今日、昔同僚との飲み会があって、先日メールで送ってきた飲み会の住所に行ってみたが、どうしても店が見当たらなくて、結局は同僚が迎えに来ました。「東京の真ん中にある店も見つからないんで馬鹿じゃないの?」と言われるかも知らないが、実はGoogle mapに騙されたのが原因でした。先日送ってきた住所をGmapで検索してリンクをiPhoneに送りました。送った住所が「東京都中央区日本橋3-6-2 」。なぜか「東京都中央区日本橋本町3-6-2」になってしまうんです。

30分ほど生を飲む時間を無駄にしたのがちょっともったいないな~。
一応Googleには連絡してありますが、早く修正してくれるといいですね。

Googleの3Dソーシャルサービス「Lively」を体験してみました。あの「SecondLife」と違って専用のソフトは必要ありません、IE、Firefoxのプラグインをインストールするだけでブラウザで起動できます。Googleらしいですね。

まずは、www.lively.com からセットアップファイルをダウンロードしてインストールします。完了するとデスクトップにショートカットアイコンが出来上がるのでクリックすると、www.lively.com に飛びます。ログインするためにはGoogleアカウントが必要です。Facebookアカウントでもログインできるみたいです。My Rooms から Create a new room。空のroomが出来上がるので、後は自由にObjectを配置できたり、Avatarをかっこう良く作ったりできます。便利だと思ったのは、Webにある写真を取り込む機能とYoutubeのビデオを取り込む機能でした。

残念なことに、wordpressにiframeが使えないので、roomへのリンクは作成できませんでした…

http://www.lively.com/dr?rid=-8660374474388054342

今のところ、チャットで直接日本語、中国語、韓国語は打てないですが、コピー&ペストでなんとかできます。

今後はSLのようにユーザがObjectを作れるようなAPIを提供するのを楽しみにしてます。言語は何を使ってるかな??

前回はPHPとFlickrAPIを使って自分の写真を表示するようなことをやってみましたが、今回は最近人気上昇中のGoogleAppEngine(GAE)を使ってFlickrタグ検索をやってみたいと思います。GAEの説明はここでは省略します。が参考になるページを紹介します。
Google Code – Google App Engine
さっそくHello Worldから作ってみた
Google App Engine を使ってみよう

Flickr APIページを見るとPythonのライブラリもありましたが、決して使う気になりませんでした。一つ一つ調べながら遊びたいからです。以下がタグ検索して画面に表示するコードになります。キーワードになるものとしては、google.appengine.api.urlfetch と xml.dom.minidom です。

main.py

#!/usr/bin/env python
#
import cgi,os
import wsgiref.handlers

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.api import urlfetch
from xml.dom import minidom

class MainPage(webapp.RequestHandler):
  def get(self):
    api_url    = "http://api.flickr.com/services/rest/?"
    api_key    = "5f5ffa7c9fcf9f65bc0aae95ad71****"
    api_method = "flickr.photos.search"
    tag = self.request.get("tag")
    if tag == "":
      tag = "Flower"
    url = api_url+"api_key="+api_key+"&method="+api_method+"&tags="+tag
    result = urlfetch.fetch(url)
    dom = minidom.parseString(result.content)
    photos = dom.getElementsByTagName("photo")
    galleries=[]
    for photo in photos:
      farm   = photo.getAttribute("farm")
      server = photo.getAttribute("server")
      id     = photo.getAttribute("id")
      secret = photo.getAttribute("secret")
      img = "http://farm"+farm+".static.flickr.com/"+server+"/"+\
             id+"_"+secret+"_s.jpg"
      galleries.append(img)
    values = { 'galleries': galleries, 'tag':tag, }
    path = os.path.join(os.path.dirname(__file__), "main.html")
    self.response.out.write(template.render(path, values))
application = webapp.WSGIApplication([
  ('/', MainPage)
], debug=True)

def main():
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
  main()


main.html

<form action="" method="get">
Tag:<input type="text" name="tag" value="{{ tag }}">
<input type="submit" value="Search">
</form>
</div>
<div id="galllery">
	{% for galllery in galleries %}
	<img src="{{ galllery }}" class="gallery-img">
	{% endfor %}
</div>


ちょっと工夫をするとこのようなページが作れます。

http://kings.appspot.com/gallery/


昨日、横浜で行われたGoogle Developer Day 2008に行って来ました。先輩から誘われたのですが、行ってみて本当によかったと思いました。

朝8時に起きて名刺と入場券の準備。横須賀線で横浜へ、みなとみらいに着いたのが9時40分。先輩と待ち合わせしてパシフィコ横浜へ。入り口のところにあるでっかいGoogleロゴを見た瞬間、「しまった!カメラ持ってくるのを忘れた!」。こんなイベント参加するのが初めだったもんで…(来年は忘れない)

入場してメインホールに着いたら既に大勢の人が席に座ってました。意外と多くの人がノートPCを持ってました。空いてる席を見つけて間もなく開始されました。村上憲郎氏の挨拶から始まりました。今年のテーマは3つの「C」。

  1. Cloud
    クラウドをよりアクセスしやすく
  2. Connectivity
    コネクティビティをユビキタスに
  3. Client
    クライアントをよりパワフルに

Cloudには「Google App Engine」、Connectivityには「Android」、Clientには「Gears」と順に説明がありました。「Android」は今回はじめて聞きました。デモを見ると「iPhone」と似たようなUIを開発できるらしいです。Google Maps API for Flashデモでトラブルも発生しましたが、まあ~理解できる話ですよね。午後のセッションデモではちゃんと動いたようです。12時から各セッションが始まりました。人気のある「Google App Engine」のセッションはアメリカのエンジニアが講演しました。サンプルを作成してる途中で何回もコンパイルエラーが発生して笑いも取れました。自分の話だと「自分もまだ完璧ではないということですね」(ハハハ)。最後のセッションは「Googleソフトウェア エンジニアの日常」を聞きました。Googleほとんどのプロジェクトはボトムアップ的に始まったものだと言いました。何かというととりあえずアイディアがひらめいたら、20%プロジェクトとして開始する、認められたらメインプロジェクトとして発展させるということです。主に使ってる言語はC++、Java、Python、Javascript。ちょっとびっくりしたのは、ソースの共有でした。要するに秘密プロジェクトなどはないと、Googleの一員であればGoogleのすべてが見れるということですね。うらやましい~

充実は1日でした。来年も参加したいな。

一か月ほど前Googleから発表された新しいサービス「App Engine」ですが、今日やっと試すことになりました。他社(Amazon)のサービスと比べ、Google Bigtableにアクセスできて、GoogleFileSystemデータストレージサービスから構成されてるのが魅力だと思います。

1.まずは、Pythonの環境を作成。
http://www.python.org/download/ から Pythos2.5のインストール。
インストール完了後パスの設定を行います。
バージョン確認

C:\>python -V
Python 2.5.2

C:\>

2.SDKインストール。
http://code.google.com/appengine/downloads.html から自分のプラットフォームに合わせてSDKをダウンロードして、インストール。今回はWindowsで試したので、GoogleAppEngine_1.0.2.msi をダウンロードしてインストールしました。

3.デモを実行してみる。
AppEngineのインストールが完了すると C:\Program Files\Google\google_appengine が出来上がるので、コマンドプロンプトからそこに移動します。

C:\>cd C:\Program Files\Google\google_appengine
C:\Program Files\Google\google_appengine>dev_appserver.py demos\guestbook

http://localhost:8080 にアクセスしてみる。ゲストブックが表示されてることを確認

4.Hello Worldを作成してみる。
google_appengineの下に新たに helloworld フォルダを作成、その下に app.yaml と main.py ファイル作成。

app.yaml
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
– url: .*
script: main.py

main.py
#!/usr/bin/env python
print “Hello World”

作成完了後もう一度http://localhost:8080にアクセスしてみる。「Hello Wolrd」ができた!

ローカルで作成したアプリケーションを公開するためにはアカウントが必要ですが、まだ貰えませんでした。待つ……