Tuesday, December 30, 2008

cdc acm(FOMA対応) on Linux

cdc acm(FOMA対応)を試してみました。 Linux 2.6.28でもcdc-acm自体はv0.26のままなのでcdc-acm-v026.zipがそのまま使えました。すばらし。 ちなみに端末は N906i です。
これで実家かえっても なんとかIP reachableにできそう。

以下、こんなかんじという記録
usb 4-1: new full speed USB device using uhci_hcd and address 7
usb 4-1: configuration #1 chosen from 1 choice
usb 4-1: New USB device found, idVendor=0409, idProduct=0234
usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 4-1: Product: FOMA N906i
usb 4-1: Manufacturer: NEC
usb 4-1: SerialNumber: nnnnnnnnnnnn
cdc_acm 4-1:1.0: CDC Header  1.10
cdc_acm 4-1:1.0: ttyACM0: USB ACM device
this device is FOMA Mobile Phone
cdc_acm 4-1:1.2: CDC Header  1.10
cdc_acm 4-1:1.4: CDC Header  1.10
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
pppconfigで適当に設定するとこんなかんじ
pppd 2.4.4 started by root, uid 0
abort on (BUSY)
abort on (NO CARRIER)
abort on (VOICE)
abort on (NO DIALTONE)
abort on (NO DIAL TONE)
abort on (NO ANSWER)
abort on (DELAYED)
send (ATZ^M)
expect (OK)
ATZ^M^M
OK
 -- got it
send (ATDT0570-00-1616^M)
expect (CONNECT)
^M
ATDT0570-00-1616^M^M
CONNECT
 -- got it
send (\d)
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyACM0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9c9d1e90> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <mru 1524> <auth chap MD5> <endpoint [MAC:00:c0:7b:8c:bb:a1]>]
sent [LCP ConfNak id=0x1 <auth pap>]
rcvd [LCP ConfRej id=0x1 <pcomp> <accomp>]
sent [LCP ConfReq id=0x2 <asyncmap 0x0> <magic 0x9c9d1e90>]
rcvd [LCP ConfReq id=0x2 <mru 1524> <auth pap> <endpoint [MAC:00:c0:7b:8c:bb:a1]>]
sent [LCP ConfAck id=0x2 <mru 1524> <auth pap> <endpoint [MAC:00:c0:7b:8c:bb:a1]>]
rcvd [LCP ConfAck id=0x2 <asyncmap 0x0> <magic 0x9c9d1e90>]
sent [LCP EchoReq id=0x0 magic=0x9c9d1e90]
sent [PAP AuthReq id=0x1 user="xxxx" password=<hidden>]
rcvd [LCP EchoRep id=0x0 magic=0x0]
rcvd [PAP AuthAck id=0x1 ""]
PAP authentication succeeded
PPP BSD Compression module registered
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 210.132.186.1>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 210.132.186.1>]
PPP Deflate Compression module registered
rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfNak id=0x1 <addr 210.132.186.12> <ms-dns1 202.238.95.24> <ms-dns3 202.238.95.26>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 210.132.186.12> <ms-dns1 202.238.95.24> <ms-dns3 202.238.95.26>]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 210.132.186.12> <ms-dns1 202.238.95.24> <ms-dns3 202.238.95.26>]
local  IP address 210.132.186.12
remote IP address 210.132.186.1
primary   DNS address 202.238.95.24
secondary DNS address 202.238.95.26
Script /etc/ppp/ip-up started (pid 5903)
Script /etc/ppp/ip-up finished (pid 5903), status = 0x0

追記 (2009/01/01 22:59): なんか openする時に Input/output error (EIO)になることがおおいな。さしなおして何度もやりなおしているとうまくいくことがあるが…

Linux 2.6.28 on VAIO Type Z

Linux 2.6.28がでていたのでupgradeしてみた。
まだdebパッケージがないので自分でビルド
改善したと気付いたところ

Android Dream Phone で Debian

Android Dream Phone を入手したのでいろいろいじってみた。以下その記録。基本的にAndroid Dev Phone 1と同じだと思う。

wifiでつかえるので、EM OneにWMWifiRouterとかいれておけばそれ経由でどこでも使えるか?と思ったら、現状ではAndroidがAd-hoc使えないみたいでだめげ。PHS300を買うべきなのか?

SDKをダウンロード&インストール。Eclispseに関しては後回し。VAIO Type Zは x86_64 (amd64)なので、Installation Notesに書いてあるとおりia32-libsなどをいれておく必要がある。android-sdk-linux_x86-1.0_r2/toolsにPATHを通したりするsetup scriptを書いた。

とりあえずshellだろうと思い、adb shellしてみるが動かない。adb devicesでdeviceがみつかってない。Developing on Device hardwareに書いてあるようにudev ruleを置いてみるがだめっぽい。いろいろ試した結果、50-android.rulesではなく、z60_android.rulesのようにz60でやらないといけないようだ。これで次のように見えるようになった。
% adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached 
HTnnnNnnnnnn    device

% adb shell
$
adb pushadb pullでおくりこんだり、とりだしたりできる。

/system/bin/shはとりあえずつかえるけど、微妙にたりないかんじなのでbusyboxをいれた。armelのbusybox-staticパッケージをつかうのが楽。microsdは/sdcardにmountされているけど、ここはVFATでnodev,noexec,fmask=0711などでmountされているので、ここに置いてもbinaryは実行できない。とりあえず/data/binあたりをつくってそこにおくりこむ。
$ mkdir /data/bin
$ exit
% dpkg -x busybox-static_1.10.2-2_armel.deb .
% adb push bin/busybox /data/bin/busybox
% adb shell
$ cd /data/bin
$ ln -s busybox ls
あとは必要なコマンド名でsymlinkをはっていけばよい。busyboxが提供しているコマンドはbusyboxを実行してみればわかる。で、そこにPATHをとおせばOK。

Android MarketにTerminal Emulatorってのがあるので、それをインストールしておけば実機上でもshellにさわれる。

せっかくなのでDebianをいれてみる。課題としてはmicrosdはFAT(symlink、hardlinkできないのでdebian chrootにできない)、defaultのkernelがsupportしているfsはFATとYAFFS(YAFFSは amd64とかには標準ではなさげ)。
とはいっても基本はLinuxなので、ext2.koあたりを作ってinsmodしてやればよい。microsdもpartitionをきってFAT partitionとext2 partitionをつくってやればOK。VAIO Type ZのSD slotにいれてDebian上でcfdisk /dev/mmcblk0とかしてpartitionをきればよい。udevがdeviceファイルをつくるようにいったんぬいて挿しなおし、mkfs/dev/mmcblk0p2をformat。Android上では最初のprimary partition(Androidで/dev/block/mmcblk0p1、VAIO Type Z Debianでは/dev/mmcblk0p1)が/sdcardに自動的にmountされる。2つめのpartitionを手でmountしてやればよい。
Debianのchroot環境は debootstrapでつくる。まずDebian上でfirst stage。
# mount -t ext2 /dev/mmcblk0p2 /mnt
# cd /mnt
# debootstrap --arch armel --foreign --variant=minbase \
     sid . http://ftp.jp.debian.org/debian/
これをAndroidにさして続きを。
$ su
# insmod ext2.ko
# mount -t ext2 /dev/block/mmcblk0p2 /data/sdcard1
# cd /data/sdcard1
# mv dev dev.orig
# mkdir dev
# mount --bind /dev dev
# chroot . bin/bash
# PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH
# mount -t proc proc /proc
# ./debootstrap/debootstrap --second-stage
...
#
こんなかんじでだいたいOK。/etc/apt/sources.listを設定すればapt-getもつかえる。

Sunday, December 21, 2008

VAIO Type Z (VGN-Z90S)

自宅のメインノートが長らくLet's note CF-Y2だったのだが、なんか熱がでてthrottleしまくりで遅くて使いものにならなくなってきたので、新しいノートを購入。
大きさ、重さ、画面の広さなどからVAIO Type Zにした。オーナーメードで次のような構成に。
  • VGN-Z90S - Windows Vista Home premium - どうせDebianにしちゃうので無しを選択できるようにしてほしい
  • CPU: Core 2 Duo P9500
  • memory: 4G
  • disk: SSD 64G (128G*2 RAIDも64G*2 RAIDも、もうなかった)
  • display: 1600x900
  • DVD super multi drive
  • Web camera
  • 日本語KB - US配列で使う
  • 大容量バッテリ
というかんじで 12月14日に新宿ヨドバシで購入で 273,800円。ヨドバシもオーナーメード店だからというのでいったのだが、そこで単にそこで申し込めるというだけでwebから購入するのと対してかわらないかんじだった。
納期は12月下旬なので、最悪12月31日 とか言われたけど、12月19日の朝に配送されてきた。 しかし、「ご注文いただいた商品: ワイヤレスLAN IEEE 802.11abgn /Z 他」とかになっているのは いかがなものか。
早速 Debianをインストール。
まず、jigdoで testing snapshotなisoimageを作成。
% jigdo-lite http://hanzubon.jp/debian-cd/daily/unstable/amd64/jigdo-cd/debian-testing-amd64-businesscard.jigdo
Debian mirrorをきいてくるので適当なmirror siteを指定すると、ダウンロードしてきてisoimageを作成してくれる。
debian-testing-amd64-businesscard.isoというファイルが作られるのでこれをCD-Rに書きこみ。
%  sudo nice --18 wodim -eject -v speed=2 dev=/dev/sr0 \
  -data -pad debian-testing-amd64-businesscard.iso
で、CD-RをVAIOのDVD driveにつっこんで起動。
せっかくなので grpahical installerをためしてみた。

とくにトラブルことなくインストール終了。 ちょっとはまったところは
  • Xが1024x768しかでなかった。よく見るとvesaドライバーになっているのが原因だった。intelドライバーとかにすればOK
  • flashはdeb http://www.debian-multimedia.org/ experimental mainからapt-get install flashplayer-mozillaしろ とのこと

Tuesday, December 16, 2008

丸山不二夫レクチャーシリーズ第2回 クラウドのエンタープライズ利用をめぐって

丸山不二夫レクチャーシリーズ第2回 クラウドのエンタープライズ利用をめぐってにいってきた。
ちょっと遅刻ぎみでいったら、すでにだいぶ席がうまってた。席をさがして前のほうにいったらたまたま首藤さんの隣
丸山先生の話を聞くかぎりでは、Microsoft Azure SQL Data Serviceは、DHTで構築されたkey-valueの分散データストアで、SQLぽくアクセスできるというかんじなのかな? できることはGQLと似たようなもの? Bigtableでは、rowkeyをうまく設計することでRowのlocalityをある程度制御できる(同じtabletになるかどうかは基本的にbigtable serverが制御しclient側ではしない。App EngineのDatasource APIで使う場合にはindexテーブルとかもあるので気にする必要はない)けど、Azure SDSではPartitioning Keyでclient側がどう分割するかを決めるというあたりが違ったりする? とか聞きながら考えてた。
今回は発表者としてではなく聞きにいっただけ。発表者のMacBookのVGAアダプタがなんかおかしかったみたいなので、持ってたやつを貸してあげた。内容自体は基本的に札幌のJava Festa 2008とほぼ同じ。前回と違ってデモの失敗もなく無事終了。
その後、懇親会があったようだけど、今日は会社のYear End Partyがあったので懇親会には不参加。

Saturday, December 13, 2008

App Engine Hackathon

今日はofficeで第2回App Engine Hackathon
今回は講義とかはなく、いくつかのグループにわかれてそれぞれ作業という形式だった。 チュートリアル、MashUp、Frameworkなどなど、おおまかなtopicにわかれて相談しつつ6-7時間ほどHackに集中。

昼には弁当がでました。 最後に各グループごとに成果発表。

今回は「20% ルール」(Google の「20% ルール」とは、勤務時間の 20% を自分の好きなことに使ってよい、という世界共通の社内ルールです。)で前からちょっとやってたinternal service(のprototype)を Java実装からPython/AppEngine実装に作り直しとかをやってました。Google Visualization APIをつかっていて、最近Data Source Python Libraryができていたのでそれを使ったりするようにしてみました。
Hackathonが終わったあと、App Engineのプレゼン用のデモコードを整理。そういえばこういうデモをするとき、liveでcodeを書いていくのもいいけど、gitリポジトリにいれておくと、「次のステップはこちら」とgit checkout branchでさくっと更新していけるので便利だなと思った。特にAppEngineLauncherを使う場合、Launcherからは同じディレクトリにないといけないのでgit checkoutでその場のコードをすぐに次のバージョンに変えていけるので便利。

Tuesday, December 9, 2008

404 Server Not Found

なんか、いつの間にか bloggerの構成(?)がかわっていたみたいで 404 Server Not Found になってしまっていた。
blogger-helpで聞いてみたところ
  • blogger.ukai.org IN CNAME ghs.google.com だけじゃなく www.blogger.ukai.org IN CNAME ghs.google.com も登録しろ。
  • 登録したら、一旦 blogspot.com に戻して、custom domainを設定しなおせ
ということらしい。
そんなことHelpHow do I use a custom domain name on my blog?に書いてないじゃん…
あと、CNAMEのTTLは短めにしといたほうがよいという話も。
というわけでこんなかんじで
blogger.ukai.org.       3600 IN CNAME ghs.google.com.
www.blogger.ukai.org.   3600 IN CNAME ghs.google.com.

Sunday, December 7, 2008

Google Friend Connectで遊ぶ

Google FriendConnectが使えるようになっていたので、ちょっと試してみました。 最初blogger.ukai.orgで使おうとしたら、なんか既に微妙に違うversionのrpc_replay.htmlとcanvas.htmlが見える模様? そのまま使えるのかなーと思っていたら、404 Server Not Found。
仕方ないのでukai.orgのほうをFriendConnectサイトにしてみた。むアンテナのほうも sign in して Ratingsの左の + をclickしてopenすれば、ratingとcommentが書けたりするようになってる。
とりあえず member gadgetとsign in gadget、comment gadgetをはってみた。それだけではさびしいのでついでにGoogle API使ったやつをいろいろと。

しかしなんかFriendConnect gadgetを使っていると、関係ないiframeのところもFriendConnect gadgetになってしまうという不可解な現象が…。とりあえずsetTimeoutでちょっとdelayを置いてからiframeを追加するようにしたら解決したが…

Monday, December 1, 2008

Ganeti - カーネル読書会番外編@グーグル

今日はYLUGのカーネル読書会番外編@グーグルということで、オフィスでやっていたので参加してみた。
(イベントごとのpermalinkはないんだろうか… > YLUGのサイト)
内容はGoogleで開発・運用しているGanetiと呼ばれる仮想マシン管理ソフトウェアツール。XenDRDBなんかを使ってfailureに強いclusterを作成・管理するツールというかんじか。