2009-06-30

OffiSync

これは凄い! 使いこなせれば作業効率が格段に上がりそうだ.


OffiSync Provides Google Syncing and Searches Inside Office





2009-06-28

Twitter + Google Desktop on Linux

I saw my friend said to recommend registration of twitter on his blog, so I registered it! twitterかー, 面白そうだなぁ。

my twitter account


追記:
おお, Google Desktop on Linux + twitterが出来るっぽい! これなら, 結構気軽に使えそうだ.



-"hogehoge"を入力


-twittering!

※gmailのgadgetはメールアドレスが表示されているので消去してます.

2009-06-26

tango! on Google App Engine


調子にのって連続投稿です. すみません.

色々試行錯誤した結果, 何とかold versionのGWTを1.6.4にアップデートできました. そして, GWT 1.6.Xといえば, 云わずもがな, Java on Google App Engineができるバージョンです! というわけで, ささっとGAEも最新バージョンにアップデートして, 早速サーバにデプロイしてみました. 結果はこちら↓

http://tango-old.appspot.com/
※古いバージョンではまだApache Derbyを実装していないので, かなり無理矢理データベースを構築しています. 結果として, 非常に遅いです. 動かないときは, F5などを押して更新してください. 何回かアクセスすると, キャッシュヒット率があがって正常に動作するようになります. また, リソースを非常に使うアプリケーションなので, スペックの低いPCではアクセスしないことをお薦めします. アクセスすると, きっとフリーズします.

感想としては, "Googleすげえええええええ!!!"って感じです. というのも, 下図の左上にある飛行機みたいなアイコンをポチっと押すだけで, なんとサーバにデプロイできてしまったからです!



地道にweb.xmlとかwarファイルとかFTPとか弄っていたのが馬鹿らしくなるくらい, シンプルなデプロイメントです. というか, これに慣れてしまったら, きっともう従来のデプロイとかできなくなりそうだ...

とまぁ, 今だ若干の興奮を隠せませんが, とりあえず今日はこんなところで失礼します. ではでは.

Migrating from Windows to Linux




お久しぶりです. 最近, 久々に暇が出来たのでtango!の移植作業の続きをしました.

以前, Google Developer Day 2009でGWTについて色々と学ばさせてもらった甲斐もあって, 何とかWindows XP -> Linux on 64-bit architectureの移植が完了しました. ところどころwarningは出ていますが, 致命的なエラーをゼロにすることが出来たのでまぁ良しとします.

念のため, もしかしたら同じようなことで躓いている人もいるかもしれないので, 以下に移植のKey wordsを, 覚えている限りですが, 書き出してみます.

-JVM 32-bitをインストールして, 例えば, /opt/以下に置く
--GWTが32-bitのJVMに対応していないため
--Build PathでインストールしたJVMを指定
---ダウンロード先
-GWTは複数のバージョンを用意 (e.g. gwt-linux-1.5.X, gwt-linux-1.6.X)
--どうしてもコンパイル出来なかったらバージョンを変えてみる.
--僕の場合, 1.6.4だとGWTShell周辺が動かなかったのですが, GWT1.5.3に変えたらうまくいきました.

---嘘です. さっきやってみたらプロパティが上書きされてしまって, 動かなくなりましたorz
---別々のプロジェクトおよびワークスペースでやった方が良いかもしれません.
---参考: Issue 134 GWT hosted web browser does not work in 64-bit Linux
---ダウンロード先
-Eclipseは64-bitでもOK?(うる覚え)
--確か32-bitだとGUIが恐ろしいことになって, 使いものにならなかったと記憶しています.
--参考までに, 僕のversion: Eclipse Platform Version: 3.4.2 Build id: M20090211-1700

加えて, 情報として多少古い(まだCypal Studioを使っていた頃)ですが, 以下のようなページもあります.
-tango!プロジェクトの背景&開発環境


とまぁ, こんな感じにやっていったら何とかなりました.

何とかエラーが無くなったとはいえ, 今無事に動いているtango!のversionは2008年9月時点のバージョンなので, これから少しずつversionをアップデートしていく地道な作業があったりします. 加えて, GAEではjettyのcommunication機能が使えないから, サーバにアップロードできないという潜在的な問題もまだ解決していませんが, まぁそれは後で考えればいいか(笑). とりあえずはローカルで動かせるように頑張ってみるテスト.

2009-06-10

Android携帯でGmailからログアウトする方法




Android携帯では, Gmailからログアウトする機能がついていません. これなんて孔明の罠?

「How to sign out of Gmail on G1 phone?」
http://groups.google.com/group/android-beginners/browse_thread/thread/9f362779566197e7/874238837445fe51?hl=en&lnk=gst&q=log+out+account#874238837445fe51

苦肉の策としてデータリセットも考えましたが, どうやらcacheをクリアすればどうにかなるようです. 実際に試してみたところ, ちゃんとログアウト(?)出来ていました.

Link dev phone to a different account, WITHOUT factory reset!
http://groups.google.com/group/android-beginners/browse_thread/thread/4d1e0f9f80bc6fb4#

恐らくメールの通知機能を持たせるとき, Loginしているかどうかの状態を考慮してしまうと, 想定しなければならない振る舞いが多くなってしまったから実装しなかったのかもしれません. とはいえ, ちょっと不便を感じずには入られませんでした. というか, キャッシュのクリアによるログアウトって, 一般ユーザは理解できるのかな?

2009-06-09

Google Developer Day 2009



今日は横浜まで行ってきて, Google Developer Day 2009に参加してきました。サプライズとしてAndroidが搭載されている携帯を無料で貰えました。開発用なので勿論サポートは無いし, SIM差すと請求額がとんでもなくなるらしいから, 実質Wi-Fi環境でしか動かせませんが, それを考慮してもメチャクチャ使い勝手が良いです(文字入力を除いて). 例えば, カメラで取った画像は2タッチでgmailおよびpicasaに送れます. また, 動画ならば2タッチでgmailおよびyoutubeにアップロードできます.

当日, 横浜で何があったかは, ネットで検索すれば色々と分かると思うのでここでは割愛します. とりあえず, Google Web Toolkitのベストプラクティスや, Google App Engineでjavaを動かす時の仕様および注意点などを聞けただけでも個人的には大満足です. あそこまで至れる尽くせりだと, なんか少しはオープンソースに貢献しないとバチがあたりそうな気がします. 時間が空いたらちょっとやってみたい気にさせられました.

Google Web ToolkitとGoogle App Engineには御世話になるつもりでいるので, またこのような機会があったら是非また参加したいと思います.

以上, 近況報告レポートでした.


#以下、メモ
※注意: 誤字脱字・誤解誤認の可能性あり

Google Developer Day 2009 memo

[基礎講演]
Google Chromeによる利点
-Speed up
--高精度化
--HTML5: canvas, vide, geolocation, app cache/DB, web workers(マルチタスク化)

1. canvas
-javascriptはスケールでない.
-canvasは宣言するだけ(?)
-O3D
--web app(NOT flash)で高解像度の3Dが描画可能

2. video
video tag
-Ex. 動画そのものをjavascriptで回転
-HTMLだけで動く, not flash

3. geolocation
???

4. app cache/DB
connectionに不具合がえってもcache/DBで補完

5. web workers
canvasで動かすタスクをマルチスレッド化

「これら全てをweb標準にする」
-そのためのGoogle Chrome
--IE以外(firefox, safari, opera)は賛同
--IE8でどうなるかは分からない

web socket -> Unixのsocketライク(パンフレット参照)
notice -> ポップアップは別の形で(パンフレット参照)

Google Chromeプロジェクトは"chromium"で今も動いてる。
-いつでも参加可能。
HTML5を実装し, マルチplatform化した(パンフレット参照)

次は, Mobileと統合したnew techを!

[Tom moss]
androidは活発で, USAでは既にNo.2に.
-次はJapanへ進出

[NTT docomo Mr. nagata]
Androidへの期待
-今までのdocomoのサービスを反省し, Smart phoneへ

keyはdeviceとapplication.
-deviceは良い
--あとはアプリ開発
---アプリ開発が売り上げ曲線の傾きに影響すると考えている.
----「ケータイするGoogle」
----Docomo Pro series HT-03A

app, dev, costの正の循環に期待
6月末〜7月上旬に環境を提供

[Chris Pruett]
Android storyの話

download app
-directly download
--easy to get
-develop business

サプライズ企画:Android Phoneの無料配布
-androidを広げたい
-androidのキラーアプリはGoogle以外の開発者が作ると期待


[Daud Glazer]
social webの話
-open social

webの特長
-web connect
--web <---> doc
--web <---> open

Problem
-app ---> user
--app <---> user

Social Web motivates innovations.

[Mr. kasahara]
mixiの次のステップ
-communication service

Mixi platform
1. application
-inside mixi
--social application
--PCとMobileの整合

2. connect
-outside mixi

3. ビジネス支援
-広告: 1page = 0.01 yen
-課金: 手取り8割
-資金: 出資or融資

利点: marketing costが低い
-マイミクによる伝播を利用
--social networkの一つの魅力
---アイデア勝負の環境を提供

Ex. ハグ☆ミー
-ハグ友達を選択
--相手に通知(それだけ?)

OSDE with Eclipse plug-in
-OpenSocial hackathonで使われている

[Ex. Goo home]
2 or 3以上のappを統合
-Goo homeのあるgadgetのアクションが他のgadgetに伝播

[Google Wave]
Google Waveの話
product, platform: API, protocol:open source
-serverにユーザがアクセス

Google Wave Demo
1. insert sentnce
2. real-time chat
3. 3人目以降は時系列を参照可能
4. localfileからD&Dでアップロード
5. uploadしたものはスライドショー可能
6. Blogからもアクセス可能
7. twitter + wave
8. Gameもシームレスにプレイ可能
9. Gameの時系列(Ex. チェスの手順)も参照可能

Ex. API
-loggy
--real-time translation

まとめ
-wave.google.com
-code.google.com/apis/wave
-222.waveprotocol.org
-devアカウントを後日配布

[Mr. Ishihara]
他productの紹介
-Google Web Elements
--make blog pwerful
-MapsAPI ver.3
--3年ぶりのバージョンアップ
--Key less
-ルート検索
--近いうちに公開予定
-GTUG(Google Technology User Group)発足
--1,2 monthlyで活動
---詳細はGOogle Lightening Talk

Android phoneについて
-Wi-Fi環境を強く推奨(通信費用の関係上)

Key: Make Powerful Web By Yourself


----------------------
[Google App Enging]
GAE-request処理について
-分散システムに類似してる?
-Ex. 分散システムのスケーラビリティ
--Ex. データでは無く参照ポインタを伝播

まとめ
-Fan-out
-Geolocation Info
-Relationship Glaph
-membership question
-write時間を考慮する


-----------------------
[Java on GAE]
outline
-GAEとは
-On Java Support
-App Enging Datastore

使えるもの
-Java 6が動く
-servelet/lib
-Google interface

特長
-install / maintainance不要
-負荷に応じてリソースの動的割り当て
--自動scaling
-CPUやband widthに応じて課金
--入っていの規模まではFree

App Engineについて
-Load Balancingベース
-開発者はアプリにfocusして欲しい
-最低でも3つのサーバ
--高信頼性

注意点
-HTTPリクエストが30秒をこえるとExeptionを投げる
--長いbackground processの禁止
-sand-box内でのみ動作
--ユーザによるスレッド操作はダメ
---serverはok(?)
--File Systemのread禁止
---FS readは必要ないはず

servelet API 2.5
Jettyを使用
-しかしjettyの特長は使えない
--jetty-web.xml
--continuations(継続) ← tango!は動かない可能性高いorz

Software Service
-JBBCはダメ
--Relational Databaseはコンセプトと合致しない
---正規化は必ずしも必要ではない
-APIはAPIProxyを通してつかう
--AOPができる
---サービス前後のprofilingが取得できる
----debugが簡単に!

sand-boxについて
-制限
--JVM permission
---local file / socketの禁止
----互いに参照させないため
--ただし, JVM上で動くものなら全てok
---JRuby, Jython, Rhino, etc.

under constructing...
-tech theme -> async
-full text search
-mail receive
-Datastore import/export tool
-etc.

Data Storeについて
-dataの格納の仕方が違う
--big tableは動的に分割される
---一見、制限は無いように見える
--schemaが無い
---not strict
--NOT RDBMS
---RDBMSはpowerful過ぎる
----ターゲットと合致しない

storeはsimpleに
-App dev
-App message
-App environment service on GAE
-APP scaleするインフラ
--リクエスト量, データ量を重要と考えているため

Data storeの特長
-Entity
--object in Java
-Kind
--Class in Java, table in DB
---person
-key
--primary-key in DB
---person/person:44, /pet:8
-e-group
--Transaction in DB
-property
-- Column in DB
-friends
--1対多
---/person:32, /person:34

functions
-get()
-put()

soft schema
-App layerによって決定
--devが楽 based on 経験
-JDO/JPAのmete-def

移行のヒント
-databaseはRDBMSは置換できない
--designし直す
---Primary key
---transactionが必要かどうか
----結構大変かも
----何がrootか考える
-----userがrootになりやすい
------複数かどうか考える
---array, view, trigger, data移動

Ex. joinが使えない
-非正規化

まとめ
-AFDを永続化
-soft schema
-非正規化を恐れずに行う
--高速化と堅牢性のトレードオフ

参考資料
-Google developer relations japan
-google code


※次はGoogle Web Toolkit: ベストプラクティスから

追記:
----------------------------
[Google Web TOolkit: ベストプラクティス]
Introduction
-nontrival cache
-client side
-AdWardsUI

History
-Event Bus
-DI + MVC(Model, View, Controller)

3 themes
1. async
-AJAX, ID array for scaling
--Sync/Asyncを2つとも用意
-make arm torelable
-failureを1つの場所に!
--GWT.ranAsyncUI to split
-Abstract Got
-通信したらレンダリング

2. decouple
2.1 DI
easy test, wit, debug
-Connection's'
-Geust's'
--remove over connections
-Instant
--if(コンタクトIDs!=???)
-EventBus for tossing

Ex. Private onSuccess{
cb.onSuccess{
... // then, create a new contact
}
}

2.2 MVC(Model, View, Controller)
ブラウザ遅い
-model<----prefetch<--->View
--Model: Keep Simple!
--prefetch:
---class PhoneEditor
inteface G_Display{
// ハンドラを増やす(?)
}
--View
---Keep Simple, but still slow
---MochView

3. stateless
duplicate functions
-Phone.front() // safer
-Save
-Cancel

Dependency Interaction(?)
-No Global, No Service
-GIN - client
-GUice - service

Decoupling Advantages
LayOff
-tests run fast
--Store Action in Local
--After cancelling, We can test

Ex. FireEvent(GwtEvent(?))...
// 色々用意して
-editor.editPhone
-display ...
//verify
-vndate...
-assert...
-phone...
-assert...

User Should NOT notice Server restart
-Expect multiple Instances

Recap
-Get b-history
-Use EventBus
-DI + MVP FTW
-3 themes
--1. 同期/非同期を含める
---常に使う必要は無い. scaleするため.
--2. 常にdecouplingする using EventBus
--3. strive to archive statelessness

参考資料
code.google.com/webtoolkit/
-スライドあり?

----------------------
[Google & OpenSource]
Googleとopensourceの関係の話
-結構面白かったからyoutubeであとでみるのも良いかも!

Google Code
-CSの学生は理論が強い
--しかし, 実践に弱い傾向がある
---Google Summer of Code

ライセンスの話
-GoogleのライセンスはBSDが多い
-Google Chromeは最もexposureなproject
--processやgoogleのstrategyもオープンにしている

プロジェクトによってopenの度合が違う
-Ex. 広 GoogleChrome, Android 狭

----------------------
[Google Lightening Talk]
Google Technology User Groupが各5分で自分のプロジェクトを発表
-Key by matsuo-san
-JRuby on GAE
--800 files to 100 files
-OpenSocial
--hackathon is opened for even begginers
-???VM

GTUGの発足
-メンバー募集
-活動は1,2ヵ月に一回

----------------------
[Google Wave API]
Google WAVE APIの仕様の話?
-途中から興味が無くなり, 寝惚け眼で聞いてた

3 waves type
-1. oneself
-2. 2 participants
-3. more than or equal to 3
※詳細は基礎講演のメモ参照

2 part
-1. embedding
--archtecture
---include javascript

method
-LoadWave
--ID
-SetUIConfig
--style???
-AddReply
--Visit -> reply
-Follow???

-2. Robot
???
※理解できなかった

2009-06-07

IAESTE派遣準備会





先日、IAESTE派遣準備会に出席し、自分の研究内容を英語で発表してきました。発表形式は、通常のプレゼンテーションではなく、ポスターセッション形式でした。実は人生で初めてのポスターセッションだったので、内心結構緊張してました。研究内容を英語で説明することはそこまで難しくは無かったけれど、ポスターセッションの発表方式に慣れるまでに四苦八苦しました。

というのも、一応ポスターセッションがどういう発表形式なのか事前にGoogleで調べて下記のサイトに辿りついたのですが、今回の場合、10分以内にきっちり収めないといけなかったからです。

ポスターセッションの実施例
http://www.otaru-uc.ac.jp/~egashira/post/poster.html

実際に、audienceから貰えるEvaluation Paperという評価表を読むと、"Learn Time Management"という文字がありましたw。ポスターセッションといえど守るものは守らないといけなかったようですorz。とはいえ、評価を頂けることは貴重なので、僕としては有り難いかぎりです。

今回の派遣準備会に参加してもう一つ有り難かったことは、他分野の技術者と話せたことです。皆、理系でありながら英語も流暢にしゃべれる方々なので、高い目的意識を持っている人も多く、話をしていてとても刺激的でした。まさに"しゃべれる理系"って感じでした。

僕の派遣まではまだ約2ヵ月、派遣が終わって帰って来るまで約4ヵ月弱ありますが、派遣後に集まって話をすればきっともっと面白い話できるのかなぁ、と妄想してます。IAESTE学生委員が幹事をしてくれたら嬉しいのですが、そうでなければ、多分きっと僕がまた幹事になるでしょう(笑)。

とまぁ、そんな近況報告でした。ではでは。


#以下、メモ
※MAX = 4, MIN = 1

Contents:
# 説明はわかりやすいか、論理的であるか。

# 聞いている人の興味を惹く説明であるか。
-3: 観客に分かり易い発表だが、主要な点をもっと明確にする。
→Ex. 次世代OSの利点を知ってもらい, 他分野へ貢献できること, または他分野から貢献できることを探る.
-4: 特に無し。
-3: 特に無し。
-3: 特に無し。
-3: 特に無し。

Visual Aids:
# 提示されている情報に論理的な流れが認められるか。
# 文字の大きさや形式などは読みやすいか。
# 発表内容を理解しやすくするために工夫されているか。
-4: よいスライドだが、各スライドが詳細過ぎたかもしれない。
→イラストがあれば, もっと簡潔なスライドに出来たはず.
-4: 特に無し。
-3: 特に無し。
-3: 特に無し。
-3: 特に無し。

Presence:
# 発表者に熱意や意欲があるか。
# 説明を聞いている人に対して、発表内容を伝えようとする姿勢は感じ取れるか。
-4: 楽しそうに研究の発表をしている雰囲気が良かった:)
→満点ktkr。
-4: 特に無し。
-4: 特に無し。
-4: 特に無し。
-4: 特に無し。

Pronunciation:
# 英語の発音は適切であるか。
# 聞き取りやすい英語表現であるか。
-3:一般的に良かったが、ときどき日本語訛りが聞こえる。
-4: 特に無し。
-3: 特に無し。
-4: 特に無し。
-4: 特に無し。

Response:
# 質問に対して的確な答えを述べることができるか。
# 質問に対して即座に対応できるか。
-3:よい回答が出来ていた。しかし、長すぎる回答は、結果として観客の注意を削ぐかもしれない。
-4: 特に無し。
-2: もっとシンプルに回答した方が良い。
-3: 特に無し。
-4: 特に無し。

Body Language:
# 説明をする際の身振りや動作は適切であるか。
# 発表者と聞いている人とのコミュニケーションはきちんと取れるか
-2: 特に無し。
-4: 特に無し。
-2: 特に無し。
-3: 特に無し。
-4: 特に無し。

Other Comments:
-ポスターに顔を向けている時間より、観客に顔を向けている時間を増やすと良い。
-一般的に、丁寧に解説された発表は聞き易かった。しかし、少ない専門性はあなたの主張の印象を弱くするだろう。
-発表中は頭を掻かないw
-冒頭の説明に時間をかけ過ぎていた。"Learn Time Management", もっとうまくなるでしょう。
-最後のReferenceのスライドは必要無いかもしれない。
-全ての観客に平等に注意を払うべき。
-時間を気にして、Time Managementを図るべき。
-簡単に分かるように説明してもらえたのが良かった。