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を作成・管理するツールというかんじか。

Saturday, November 29, 2008

Java Festa 2008 in 札幌

Java Festa 2008 in 札幌Google App Engineの話をしてきました。

Java Festa といいつつ、JavaサポートのまだないGoogle App Engineの話ということでかなりawayなかんじ。
内容はGoogle App Engineでのアプリの開発の仕方の簡単なデモと、Datasourceがbigtableを使ってどのように実装されているかについての簡単な説明でした。
デモのほうは直前に「日本語のメッセージにしてみましょう」とかで、dev_appserverで動くことだけ確認してappengineにdeployして動くことを確認していなかったら、動かなかったというハプニング。appengine admin consoleのlogを見ると次のようなエラーが。
Non-ASCII character '\xe6' in file /base/data/home/apps/shoutjp/1.329600768188861926/main.py on line 30, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (main.py, line 30)
まあ、pythonスクリプトに直接日本語とか書くのはよくないということで。templatesとかのほうにいれるのは問題ない。 その後、認証でいろいろ失敗していたのは実はapplication idが違っていたせいだった。あせるとよくない。 Q&Aの時には、ちゃんと動かせていたのでヨシとするか。

その後の懇親会は、会場に比べて寒かった。そのせいか二次会の時はやや微熱っぽい体調で、おいしい海鮮料理だったのに、いっぱい食べられなかった。

翌日は飛行機まで時間があったので札幌市内をぶらぶら。
家についたらまただるい。熱をはかったら36.9℃とかだった。微熱ぎみ。

Monday, October 27, 2008

acm ICPC programming contest - Asia regional contest at Aizu

会津大学で開催されていたacm International Collegiate Programming Contest, Asia Regional Contestに行ってきた。

会場についたら Commentaries on Problemsの後半だった。「あれ? scheduleによればまだJava Challenge Competitionのはずなのになー」と思ってたらどうやら順番がいれかわってみたいで 16時すぎからが Java Challenge Competitionだった。
その後はAward and Closing Ceremony。Sponsorとしてちょっと挨拶。


月曜は会津若松を小雨の中ぶらぶら。鶴ヶ城などを観光してきた。
いく途中、甲賀町とかを発見。「なにか甲賀とゆかりが?」とおもったら、「蒲生氏郷が近江の日野から伴った者を居住させ日野町と名づけたが、加藤義明が「火」を忌み嫌って、同じ近江の郡名をとってこの名に改めた」とか書いてあった。なんだってー。

しかし、重い荷物で歩きまわってだいぶ疲れた。小雨の中を歩いていたせいかちょっと熱がでてきたぽい…

Wednesday, October 15, 2008

即興スクリプティング

「こういうことしたいんですけど、どうすればいいですかねえ」という質問を受けた。 "こういうこと"というのは次のようなことだった。
  • あるテキストの入力ファイルがあり、中身は次のようなかんじ
    Mapping JP {
      ...
    }
    Mapping AU {
      ...
    }
    Mapping JP {
      ...
    }
    
  • Mapping XX {という行ではじまり}でおわるのが一つのブロック。
  • この中で Mapping JP { ... }というブロックをすべて抜きだしたい
「ああ、それならsedで簡単にできますよ。」
こんなかんじで
 % sed -ne '/^Mapping JP {/,/^}/p' datafile
  • defaultでは出力しない(-nオプション)
  • Mapping JP {ではじまる行から、}ではじまる行までは出力する(/start/,/end/ という範囲で pコマンド)

しばらくして…
「実はフォーマットがちょっと違ってました。これならどうなりますか?」
  • テキストの入力ファイルがあり、中身は次のようなかんじ
    Mapping {
     id: foo
     country: "JP"
     ...
    }
    Mapping {
     id: bar
     country: "AU"
     ...
    }
    Mapping {
     id: baz
     country: "JP"
      ...
    }
    
  • Mapping {という行ではじまり}でおわるのが一つのブロック。
  • この中で country: "JP"を含むブロックをすべて抜きだしたい
「うーん、sedだとちょっと面倒だなあ。hold spaceかな」
といっていたら
perlでmultiline regexp使ったら簡単じゃないですか?」
で、でてきたのがこれ
% perl -n0e 'print "$_\n" for /^Mapping {[^}]+country: "JP"[^}]+}/gms'\
   datafile
  • sedawkのようにループして処理する(-nオプション)
  • record separetorとしてnull文字を設定する(-0オプション)。つまりファイルを全部一気に読む
  • ファイル全体に対して^Mapping {[^}]+"JP"[^}]+}にマッチする部分をそれぞれ出力する。gでglobal matching、mでmultilineとして処理する(^は文字列の先頭にマッチするのでは行頭にマッチするようになる)、sでsinglelineとして処理する(.なども改行文字にもマッチするようになる)
ちなみにsedだとこう
% sed -ne '/^Mapping {/,/^}/H;/^}/{s///;x;/country: "JP"/p}' datafile
  • defaultで出力しない(-nオプション)
  • Mapping {ではじまる行から}ではじまる行までhold spaceにためていく。(/start/,/end/ という範囲で Hコマンド)
  • }ではじまる行で次の処理を行う({...}で処理するコマンドをグルーピング
  • s///でまず現在の行(})を消す
  • hold spaceをpattern spaceに戻す(xコマンド)
  • 戻してきたpattern spaceでcountry: "JP"があれば出力(pコマンド)
最初s///するのを忘れていて、無駄な}がでちゃうなあというあたりでちょっとはまっていた。でもperl版より短い。

ちなみに世の中にはsgrepとかいうのがあって、次のように使えるっぽい
% sgrep 'outer("Mapping {" .. "}" containing ("country: \"JP\""))'\
   datafile
  • Mapping {から}の中にcountry: "JP"が含まれていたらそのブロック全体を出力
まあ、わかりやすいように見えるけどこのsyntaxを覚えとく価値はあるんかなあ。

Saturday, October 11, 2008

Manage It!

Manage It!が届きました。
プログラミングの本ではなく、(主にソフトウェア開発)プロジェクトのマネージメントはどうすればいいのかといったことを説明した本です。今回は監訳以外にレビューしてもらったので、より読みやすい訳、わかりやすい内容になっていると思います。

Wednesday, October 8, 2008

3分 Code Reading - date編

晩飯くってまったりしている頃にIRCを見ると次のような会話が。
22:44 <yaegashi> unix time からふつうの時刻表記に直すのはどうやる
22:44 <yaegashi> irb とかつかわずに
22:45 >ukai< % ruby -rtime -e 'puts Time.at(1234567)'
22:46 <yaegashi> いやだから ruby とかつかわんで(わら
22:46 <ar-m> dateコマンドで
22:46 <yaegashi> date(1) でなんとかできんのかな
22:46 <ar-m> できそうなもんだけどな
そうだなあ と思い、ちょっと調べてみることにした。 出力する方はdate +%sだけど逆はないものか。 まず何も考えずに
% date -d "$(date +%s)"
date: invalid date `1223478096'
で駄目。 date(1)を見てもちゃんと書いてない。
オプション
-d datestr, --date datestr
現 在の時刻・日付の代わりに、 datestr で指定された時刻・日付を表 示する。 datestr は普通のフォーマットならだいたいなんでも使う こ とができる。月名、タイムゾーン、`am' や `pm' なども用いてよい。
man -L C date しても特に情報はなさげ。 そういう時はやっぱりソースを見るのが早いかなと思うが、ソースとってきて展開するも面倒だなあと。(まあ apt-get source coreutils でいいんだけど) というか、こういう時こそwww.google.com/codesearchではないかと思い出し、早速検索。 dateコマンドはcoreutilsパッケージの中にあったよなということで、まずはdate.c coreutilsで検索。最初の候補はman/Makefile.am。manじゃないので..へ移動してみて、srcに移動。 するとdate.cがあるのでそれを見てみる。ざっと見ていくと
335  switch (optc)
336    {
337     case 'd':
338       datestr = optarg;
339       break;
とあるのでdatestrをたどっていきoption_specified_date = truereference = NULLなので
494  /* (option_specified_date || set_date) */
495     if (reference != NULL)
496        {
497          if (stat (reference, &refstats) != 0)
498             error (EXIT_FAILURE, errno, "%s", reference);
499          when = get_stat_mtime (&refstats);
500        }
501      else
502       {
503         if (set_datestr)
504           datestr = set_datestr;
505         valid_date = get_date (&when, datestr, NULL);
506        }
に辿りつく。get_datedate.cにはなさそうなのでcoreutils-6.6.tar.bz2get_dateを検索するとgetdate.cが見つかる。が、これbisonで生成されたコードなので、元のgetdate.yの方をみてみる。 ざっと見ると
238 spec:
239     timespec
240    | items
241    ;
242
243 timespec:
244  '@' seconds
245    {
246      pc->seconds = $2;
247      pc->timespec_seen = true;
248    }
249   ;
を発見。どうやら @を数字の前につければよいらしい。 というわけで試してみる。
% date -d "@$(date +%s)"
2008年 10月  8日 水曜日 22:54:21 JST
% LANG=C date -d "@$(date +%s)"
Wed Oct  8 22:54:21 JST 2008
結局manとか読んだりいろいろ試したりするのに5分少々、codesearchしはじめてからここまでは3分少々なかんじ。ということで報告
22:55 >ukai< わかった
22:55 >ukai< date -d "@$(date +%s)"
22:55 >ukai< @ をつけるべし
22:59 <yaegashi> @ てなんだ
22:59 <yaegashi> きいてないぞ
23:00 <yaegashi> どういうことだ
そういやinfoを見てなかったなあ と思ってinfo dateを見ると書いてあるね。
File: coreutils.info, Node: Seconds since the Epoch, Next: Specifying time zone rules, Prev: Pure numbers in date strings, Up: Date input formats

27.8 Seconds since the Epoch
============================

If you precede a number with `@', it represents an internal time stampas a count of seconds. The number can contain an internal decimalpoint (either `.' or `,'); any excess precision not supported by theinternal representation is truncated toward minus infinity. Such anumber cannot be combined with any other date item, as it specifies acomplete time stamp.
まとめ
  • Epoch time/unix timeから普通の時刻表記にする時には unix timeの前に @ を付けたものを datestr として date(1)の -d オプション(--dateオプション)に渡せばよい。
  • www.google.com/codesearchで検索するのが楽
  • GNU productsはmanよりinfoを読もう。see GNU Coding Style: Man Pages
    In the GNU project, man pages are secondary.

Monday, September 22, 2008

Packages|Sourcesのインデックス

Hackathonの続き。 SQLで毎回既にあるかどうかチェックするのが遅かったようなので、最初に既存の情報をロードして、python の dictおよびsetでチェックするようにしたらだいぶ速くなった。 最初、dictをdictのkeyに使おうとしたら使えなかったので、dictをstrにしたのをkeyにしていたら、入力のパスによって stringになっている時 (e.g. 'foo')と、unicodeになっている時(e.g. u'foo')があって全然keyとしての役目をはたしてなかったりするようなしょぼいバグがあったり。 初期状態からのロードは、大きいPackages.gzとかだとやはり10分とかかかるけど、更新ならせいぜい1〜2分になっているようだ。一日分もだいたい20-30分くらいにおさまるようになった。これならなんとかなるかな。今のところざっと1日で4〜5ヶ月分処理できているペースなので2週間ほどで全部 index できそう。 indexのdbファイルも2ヶ月分くらいつっこんで 120MB程度。300-400MBくらいになるかな。appengine使う時は ModelのEntityになるからもっと容量が必要になりそうだなあ。 あとはCGIかservletとして動かすようにしないと。

Sunday, September 21, 2008

App Engine Hackathon

土曜日はofficeでApp Engine Hackathon
講義としてはスケールする Web アプリを書くには製品レベルの Web アプリを書くにはでした。基本的にはGoogle I/Oのセッションを日本語で説明するかんじで、AppEngineつかう人はぜひ知っておくべき情報です。
あとはひたすら各自でコーディング。
昼と夕方に弁当がでました。

Software Freedom Dayということもあり(?)個人的には最近放置していたsnapshot.debian.netのインデックスをなんとかしようとscratchから作り直し。いままでのversionは pdumpfsのlogをよんで、更新されているdebに関して情報ととりだして packageごとのPackagesとSourcesをつくっていました。かなりad-hocなruby scriptで、生成されるものもそのままPackages, Sourcesなのでわかりやすいことはわかりやすいけど、いかんせん量がおおすぎてとりまわしが難しかったのです。ファイル数が約55万、ディレクトリが約24万、トータルで1.6GBほど。新しいディスクやマシーンにコピーしようとしてもファイル数が膨大すぎて何時間もかかってしまうし。
ちなみに現状のsnapshot archiveはこれくらい
$ df -h /archive/
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 4.5T 3.7T 613G 86% /archive

というわけで次世代ではなんらかのdatabaseを使おうと思っていたのでした。コピーの手段も pdumpfs から cp -a --link + rsync に変更してしまっているので、そのままじゃ動かないし。
App Engine の Hackathon なので App Engine を使うことも考えたのですが、なんといっても量が多いのでquota(500M)に収まらないんじゃないかと思い、とりあえず python + sqlite でコーディング。実用的なものをめざしつつ、サイズが小さくおさまりそうなら App Engine版をつくることを見据えた選択をしました。
最近 SQLとかさわってないので思い出しつつ、いくつかはまるところがあったり。
sqlite で string な column に'1.0'をつっこむと1になってしまうとか。'1.0 'とかにするとよさげ。
とりあえずそれっぽいところまでできたのですが、なんせ量が多いのに対しperformance(特にindexing)がいまいち。
そもそも 2005/03/12 (残っているなかで一番古いやつ) ですら、一日分だけで Packages.gz+Sources.gzが 約220ファイル、延べ47パッケージエントリ、gzipされてるファイルで90Mほど、Packages.gzとSources.gzをpython-deb822で全部scanするだけで7分ほどかかります。
つくったindexerではできるdbファイルがsql tableの作り方を工夫して無圧縮で約100Mほどまでにできたのですが、しかしindex構築するのに数時間かかってしまっています。dbファイルとhddに置いてたらかなり遅かったので/dev/shm(tmpfs)以下に置くようにしたら少しは早くなったのですがそれでもまだまだ遅いです。大きめのPackages.gzだとひとつのPackages.gzファイルだけで10分~20分とかかかるかんじ。
現在 1288日分あるわけで、1日処理するのに4-5時間以上かかるとすると、全部のindexをつくるのに1年ほどかかってしまいそうです。もっと高速化しないとなー。
やはり全スキャンはやめて以前みたいに更新ログから更新分だけを処理するようにしないとだめかな。
社内にあったらMapReduceでばばんとできるのになー(Google脳…)

Saturday, September 13, 2008

ESPer2008

未踏ソフトウェア創造事業関係者が集まるESPer2008に参加してきた。
一番驚いたのは、未踏ソフトウェア創造事業の英語表記が「Exploratory Software Project」から「The MITOH」に変わったらしいということ。
そういえばなんか未踏iPediaなんかできていたのか。IPAは○○iPediaが好きだな…

しかし今日はエンジニアの未来サミットとかぶっていたのね。takesakoさんはESPer2008に参加しつつUstream.TVの中継をみていた。さすが。

Friday, September 12, 2008

OpenSource協議会 System iセミナー と 裏Hackathon

今日はIBM飯倉にOpenSource協議会 System i主催の『ここまで来た企業情報システムのオープン化!』最新技術動向・事例セミナーで、「次世代Webプラットフォームにおける三つのC 〜 Client、Connectivity、そして Cloud」というタイトルでしゃべってきた。 他の会社の講演もあったけど、さっさと戻って裏Hackathon。本当は木金土と2泊3日で Hackathon だったのだけど、この用事のためにいけなかったのだ。そういうわけでこの二日間は、いけなかった人数人と一緒に会議室にこもって 裏Hackathon していた。 今回は春に20%でちょろっと作ってほったらかしにしておいたシステムを改善をめざした。完璧にはほど遠いけど以前よりはだいぶよくなってきたかなー。やりはじめるといろいろやりたいことがでてくる。普段やってないあたりなので、いろいろつまづくところもあったりもしたが、楽しい2日間であった。

Tuesday, September 9, 2008

NRI ABCIセッション

今日は丸の内へいってNRIABCI(Advanced Business Creation Initiative)セッションにて講演。
概要: ソフトウェア開発においては、エンジニアの技術力の差が大きく効いてきます。変化の激しいソフトウェア業界で生き残っていくためには、自分自身がどのようなエンジニアになることができるかが重要となります。 フリーソフトウェア・オープンソースソフトウェアの世界で活動してきたソフトウェアエンジニアとして、どのようなことをしてきたか、またその時どのような判断をしてきたかなどについてお話しします。
というかんじのネタで1時間ほど。基本的には昔話をベースにMy Job Went To Indiaの格言を引用しつつどうあてはまるかとかを話していました。 気になった人は本を読んでみてください。 そういえば会場について総合受付のところで「ぐーぐるの鵜飼ですが」といったら「ぐるぐるですか」とかいわれたよ?

Monday, July 7, 2008

Google 技術講演会 in 京都

Google 技術講演会 in 京都のため、また京都へ。会場はハイアットリージェンシー京都だったので、ちょっと早めに京都入りして三十三間堂を見てきた。京都駅から歩いていったので結構汗だくに。

15:15に受付開始して16時まで軽く交流会。16時から4つのプレゼンテーションとQ&A。そして、また交流会。抽選でGoogleロゴいりフォトフレーム5つと、サイン入り「Binary Hacks」1冊。今回は特にプレゼンとかもなくカメラマンで写真を適当にとりまくってました。最後の挨拶だけして終了。大きな地図で見る

その後、KMC関係者を中心に四条木屋町のアジアジアで宴会。さらにその後 残った人でDylan IIで1時過ぎまで。

Saturday, June 28, 2008

Blogger in Draft

Blogger in Draftの新機能をためしてみた。

Star Ratings: Star Ratings codeは次のようなかんじみたいだ。

 <p class='post-footer-line post-footer-line-3'>
 <span class='star-ratings'>
  <b:if cond='data:top.showStars'>
   <div expr:g:background-color='data:backgroundColor'
           expr:g:text-color='data:textColor'
           expr:g:url='data:post.absoluteUrl'
           g:height='42'
           g:type='RatingPanel'
           g:width='180'/>
  </b:if>
 </span></p>

Embedded Comment Form: ついでにOpenID とかでもコメント書けるようにしておいた

Thursday, June 26, 2008

ソフトウェアシンポジウム2008

ソフトウェアシンポジウム2008のパネル・ディスカッション「FLOSSは日本のソフトウェア技術者を救うか〜Don't trust anyone over thirty」にひろのぶさんかずひこさん, Matzさんとともにパネリストとして参加してきました。 FLOSSの4つの自由でソース読んだりいじったりすることでソフトウェアの技術が身につくんですよ、上流→下流よりもコア→アプリケーションなんじゃないんですかね、簡単なことを簡単にできないようでは難しい問題にはかないませんよ、できる人は仕事がはやいからどんどん作ってどんどん改良していくのですぐれた成果物がだせるんですよ、ソフトウェア開発はyak shavingになりがちだけど、やってみないとわからない問題というのはたくさんあるわけで、yak shavingすることで技術力がつくし、その中に真の解決すべき問題があるのかもしれませんよ、Done, Get Things Smart、コードレビューするのは大事ですよ、継続することが大事でそのためには好きであるほうがいいですよ、つまらないと思っているタスクも見方をかえるとおもしろい問題なのかもしれませんよ、とかそういう話をしました。 Q&Aではmatzを説得する方法とかMatzさんに限らず一般的にFLOSSコミュニティで活動する上で大事ですよ とか、コミュニティは大事だけど特に単なるお客さんになりがちなユーザーコミュニティとかはどうか とか。 しかし、ほとんど「上流→下流」な仕事はしたことないのでそういう世界は実際どういうかんじなのかわからないんですが、コード書けない人が設計やっているとか聞くと、それでよく作れるなーとか思うんですがどうなんでしょうか。もしコーダーは設計を機械的にプログラムにおとしているだけというのなら、そこはまさにコンピューターでやってしまうべき(自然言語なんかで記述するよりなんらかのDomain Specific Languageで書いてしまったほうがよさげで、コーダーみたいな人は不要)だと思うし、そうじゃないんなら、そこにはそれなりにややこしい問題が潜んでいることもあるわけで、重要な部分は技術力があって経験豊富な人がしっかりと実装しないと駄目だろうと思うわけです。実装しないと設計の問題がわからないことはよくあることです。実装しなくてもきちんと設計できるっていうのはよほどすごい人か、そもそも大して難しくないシステムかのどっちかじゃないかと。 仕事もあるんで、シンポジウム自体は3日あるけど初日のキーノート、パネル、懇親会だけでてさっさと帰ってきました。 さて、高松に来たからにはうどんを食わなければ、というわけで3食たべてきました。 まず高松空港からリムジンバスで到着した高松駅の近くで発見した「連絡船うどん」 夜は懇親会で結構食べたけど、その後町のほうにでかけて「北古馬場ごえもん」 朝早く起きて駅の近くの「味庄
大きな地図で見る

Sunday, June 22, 2008

KMC 0x20周年記念 OB会

土曜日は朝10時から京大会館にてKMC (Kyoto University Microcomputer Club)の0x20周年記念 OB会。 しかし朝寝坊してしまって会場の京大会館についたのは12時ごろ。午前の部が終わりかけていた。参加者70人くらい。KMCはいろんな人材を輩出してますなー。へたなイベントよりかなり豪華メンバーなイベント。 「これからのプログラマ」というお題でパネルすることになったので昼ぐらいにGoogle Docsつかって適当に資料作成。 晩は京都大学のレストランカンフォーラでパーティー。 その後、The Flying Kegで1時間ほど呑みをして帰省した。 そういえば2週間後 7/6には京都でGoogle Tech Talkがあるのでまたいきますよ

Saturday, June 14, 2008

FSIJ総会

今日は秋葉原ダイビルにてFSIJ理事会および総会。 今年はGNU Project 25周年だとか。 「フリーソフトウェアの世界はお互い様」「商売やってる人は『タダで落ちてるから使おう』だけじゃなくもう少しソフトウェアの生態系・エコを考えたほうがいいんでは」などなど その後、拡大月例会: プライバシ保護デバイスと自由ソフトウェア ソフトウェアと違ってハードウェアがからんでくると自由と実践とのバランスがむずかしいものだな。

Tuesday, June 10, 2008

Google Developer Day 2008 Japan

帰国早々今日は横浜パフィシコでGoogle Developer Day 2008 Japan。 今年は基調講演の中でGoogle App Engineの紹介。 Keynote終わったあとはPress Luncheonに参加。Pressの質問はほとんどAndroidに関するものだったので私が答えることは特になかった。 午後は基本的にGoogle App Engine codelabセッションで参加者のいくつかの質問に答えたり。 Q「ローカルでは動くけどデプロイするとファイルにアクセスできなくて動かない」 A「そのファイルをapp.yamlで明示的にuploadするようにしないと(importしているファイルなどは自動的に判断される)」 あとはkeyとkey nameの違いとか。基本的にはkey = Entity type + parent entities + key name で、これがbigtableのrowkeyになっているということのようだ。Under the Covers of the Google App Engine Datastoreに詳しい。 Google App Engineでアプリを書く人、もしくはスケーラブルなソフトウェアを書く人はBuilding Scalable Web Applications with Google App Engineは見ておくべき。

Sunday, June 8, 2008

帰国

8am に hotel を check out。 いつも I-101 なので、今日は久々に I-280 でSFOにむかってみる。 途中 Vista pointで写真を録ってみたり。 SFOで ANAで check in しようとしたら「この便はUA運行です」といわれ UAのほうに。 UAのほうのcheck in machineはなぜか予約と日が違うとかで処理できず、席のきまらぬままgateへ。boardingがはじまってから、ようやく席が確定。Economy Plusだった。 NRTからは、渋谷行きリムジンバスがすぐでそうだったのでバスにした。

Monday, June 2, 2008

Napa

日曜日は、みんなでNapaへ。
大きな地図で見る ついたら Hurley's Restaurant & Bar で Lunch。 最初は Opus One で、Wine Tasting。予約してないとだめだよといわれたけど、とりあえず Tastingできた。豪華。Wineも高い。 次は Mumm Napa でいろいろのみくらべ。その後、隣の ZD Wines でものみくらべ。 Dominousは architectureがすごいらしいというのでいってみたけど、見られるところまで近づくことができなかった。 最後に Rutherford Grill で晩飯

Sunday, June 1, 2008

Hiking

hariさんにさそわれて、jinmeiさん、masuiさん、nishio夫妻とWunderlich County ParkへHikingへ。7am にFirst Lutheran Churchに集合してそこから車で Wunderlich County Parkへ。 雑談しつつ2時間ほど Hiking。 その後、Menlo Parkに戻ってCafe Borroneで ブランチを食べて解散。

Saturday, May 31, 2008

Google Store

BARTで再びSFOに戻り、そこでレンタカーを借りてそのままGoogleplexへ。 昼はGoogle Developer Day supporterの人たちをホストしてランチ。 いつの間にか Onsite Google Store BETA というのが Bldg 41 2Fにできていたのでいってみた。 せっかくなので Avalanche Fleeceを買ってみた。社員割引でかなりお特。 ネットだとGoogle Storeで購入できるぽい。 品揃えはOnsiteよりネットのほうがよさげ。

Friday, May 30, 2008

Google I/O

火曜日からSan Franciscoに来ています。 Bay Areaにくるときは大抵レンタカーを借りるのだけど、今回はまずはBARTを使って、San Francisco市内へ。$5.35。BARTのチケットってプリペイドカードみたいになっていてチャージとかできるんですね。 宿は Moscone Westの隣の InterContinental San Francisco 着いた日はあまりすることがなかったのでPowell St.周辺をぶらぶら。Hotelの前にCalifornia Academy of Sciencesがあるとおもったら移転のために既にclosedになっていた。結局ぶらぶら歩いたあと、San Francisco Museum of Modern Artへ。 夜は、こちらに来ているGoogle Developer Day supporterの方たちとKuletosで晩飯。 5/28-29はGoogle I/Oに参加してきました。 5/28: - Keynote: Vic Gundotra - Extend the Reach of Your Google Apps Environment with Google APIs - Rapid Development with Python, Django and Google App Engine (by guido) - Building Scalable Web Applications with Google App Engine - Underneath the Covers at Google: Current Systems and Future Directions (by jeff dean) - Working with Google App Engine Models - After Hours 5/29: - Keynote: Marissa Mayer - HTML5, Brought to You by Gears - Effective Java Reloaded (by joshua bloch) - Building Scalable Web Applications with Google App Engine: again - How Open Source Projects Survive Poisonous People - Under the Covers of the Google App Engine Datastore 晩はSears Fine Food

Thursday, May 22, 2008

diversity

Sydneyの diversity program をやってる人とミーティング。 HPもそうだったけど、USの会社はdiversityに対する取り組みをいろいろやっているみたい。 未踏ソフトウェア創造事業の話を知りたがっていたので簡単に説明。 基本的には女性エンジニアを増やすにはどうしたらいいかとかをやっているらしい。日本やアジアは特に少ないのでどうしたらいいかといろいろ考えているようだ。すでにコンピュータサイエンスに進路を決めている女性とできるだけコンタクトととっていくようにするだけでなく、そもそもコンピュータサイエンスにすすむ女性を増やすために中高生あたりにもなんらかのアクションをとろうとしているみたい。

Saturday, May 17, 2008

CJK Engineer Summit

CJK officeにいるEngineerが集って 情報交換・discussion をおこなうCJK Engineer Summitに参加するために香港にいってきました。 移動日は香港に昼頃についたので、TramにのってVictoria Peakへ。Peak Towerで晩飯をたべているうちに夜景に。その後 Central をぶらぶらして Hillside Escalator にいってきた。 summit初日は Google Fellowの Jeff Deanの話を聞いたり、Team buildingをしたり、focus groupごとにdiscussionしたり。晩は Poster sessionしつつdinner。 2日目は Zurich officeの話を聞いたり、いろんなtopicでdiscussionしたり。晩はStar Ferryで Tsimshatsui にわたって、埠頭をぶらぶらして The Peninsula の上の Felix で一杯呑んで Tsimshatsui中心部をぶらぶらしてきた。 3日目は、それぞれのofficeのquick overviewをして昼には帰国の途へ。

Monday, May 5, 2008

BBQ

会社の人にさそわれて、10人くらい集ってその人の家の屋上でBBQパーティ。 のみくいはよかったけど、天候がいまいちだったのが残念。

Saturday, May 3, 2008

KMC OB宴会

風邪っぽいのが直ったような微妙な体調の中、Tetsu=TaLow先生が関東方面に来ているということで川崎にKMC OBが集まって宴会。10年ぶりくらいな人とかいてなつかしー。 あっという間に4時間が過ぎて解散。 次は32周年記念イベントか。

Thursday, May 1, 2008

風邪っぽい

なんかゴールデンウィークにはいって微妙に風邪っぽくてだるー

Tuesday, April 29, 2008

温泉いっていせや

月曜は有給休暇をとって4連休。 高井戸温泉 美しの湯にいってさっぱりしてきた。 温泉からでるころにIRCをみると、Ar-, nakanot, knokでいせやにいこうという話がでていたので参加。

Saturday, April 26, 2008

Google Summer of Code 2008採択決定

GSoC2008の採択結果が発表されていますね。 採択された人おめでとうございます。 結局あんまり日本からはいなかった模様? 他にみつけた人たれこんでください。 日本人とか関係なくてもおもしろそうなプロジェクトとかも

Thursday, April 24, 2008

WEB+DB PRESS Vol.44

WEB+DB PRESS Vol.44に「優れたソフトウェアを作る プログラミング5つの鉄則」というタイトルの特集を書きました。 一応 新社会人あたりをターゲットに、きちんとソフトウェアを開発するにはどうしていくのがいいのか という話をまとめてみました。 去年の ITPro Challenge! の時に、技評の編集の人につかまって「書いてみませんか」ということで書いてみたのですが、いざきちんと説明しようとするとなかなか難しいものですね。 特に最近フリーソフトウェアいじりをあまりしていないので適当な具体例がなかなか思いつかずに苦労しました。Google社内の開発手法はちゃんとしていると思うのですが、それはあまり具体的なことは説明できないので…。 Google社内では、プログラムをきちんと設計・開発できる人ならこうしたほうがいいと考えているようなある意味あたり前のことをきちんとやっているだけなので、それを説明できればいいんですが、あたり前に感じてしまっていることを、まだはじめたばかりの人にちゃんと理解してもらえるような説明を決められたページ数でするというのは難しいものですね。 もっと詳しく知りたい人はCode ReadingCode QualityCode CraftShip It!My Job Went To Indiaあたりを読んでもらうといいかと。

Friday, April 18, 2008

Eng offsite

今日は Engineerの offsite。 台風で中止になるかと思いきや、平塚の方は雨が降ってないということで決行。 江ノ島経由で平塚のF1ドリーム平塚というところで みんなでカート。 性格がでるというか、ゆっくり安全運転する人もいれば、かなりアグレッシブな走行をする人とか、すいすいと速いタイムをたたきだす人とかいろいろいておもしろい。 ちょうと雨が降りはじめたあたりで時間切れ終了。

Tuesday, April 15, 2008

Googleを支える技術

Googleを支える技術 ……巨大システムの内側の世界をいう本が出版されていますが、今日は Nooglerむけに、この本には書かれていないGoogleを作り動かすために必要なソフトウェアコンポーネントについて説明しました。

Saturday, April 12, 2008

寿司

HANZUBON, Ar-, tagoh, makutsu, nnn で 築地寿司清 伊勢丹会館店で寿司。 そのあとサザンテラスのスタバ。

Wednesday, April 9, 2008

Perfoce Codelab

Googleでは Perfoce(をGoogleのやりかたにあうように改変したもの)を全社的なsource code管理システムとして使っています。 (Perfoce as the version control system at Google) Source code管理システムを使いこなせないと Engineer の仕事はやっていられないので Nooglerにはまずその使いかたをマスターしてもらいます。今日はNooglerむけにGoogleでのPerforceの使われかた、code reviewのしかたなどの説明と、実際にPerforceをつかってもらうcodelabをしました。

Sunday, April 6, 2008

新宿御苑

新宿御苑で着物で花見をする会があるというので、カメラ部に招集がかかっていたのでいってみた。いろんな国からきている人がいて国際色豊かなかんじ。

Saturday, April 5, 2008

HPLJの人とメシ

吉祥寺で久々にHPLJの人とメシをたべました。 HPLはトップの交代でいろいろ変わってきてるみたいで大変そうです。

Nooglers

Googleでは新入社員のことをNooglerと呼びます。 今週は新卒の人がたくさん入社してきて、welcome partyとかがありました。 Engineerは、Nooglerの席を殺人現場にしたてあげたり、ホワイトボードをディスプレイにしておいたり、MSXをPCのかわりにおいていたりして歓迎。

Sunday, March 30, 2008

桜満開?

土曜日は原稿のうちあわせに市ヶ谷の技評まで。 Googleを支える技術とかをぱらぱらと読ませてもらう。 帰りは外堀公園のあたりをぶらぶら。桜が満開ぎみで花見してる人が結構いっぱいいた。カメラ持っていくのを忘れたので写真はなし。 その後新宿に寄ってジュンク堂プログラミングGaucheコンピュータを使わない情報教育 アンプラグドコンピュータサイエンスを購入。それからLupiciaEarl GreySakuraを購入。 日曜日は昼頃に気分転換に高井戸駅方面へ。曇り空だったけど桜が満開ぎみだった。 夕方にはレーズンスコーンを焼いてみた。

Sunday, March 23, 2008

桜 咲きはじめ

気分転換にちょっとぶらぶら。神田川沿いの桜が咲きはじめていた。

Saturday, March 15, 2008

Debian勉強会 @ Google Japan オフィス

今日はGoogle Japanオフィスで Debian勉強会でした。 今回は Open Source Conferenceの報告をさっとしたあと、データファイルのDebianパッケージングとライセンスの話などなど。cdbsは確かに便利だが、dpkg-debで作る方法、debian packaging policyにあわせるためのもろもろの処理を楽にするために debhelper、rulesファイルを簡単にするために cdbsという流れで説明したほうがいいんじゃないかと思ったり。 宴会はマークシティの近くの庵GuRi5566で宴会。日本人は問題が設定されたらそれを解決するのは得意な人はたくさんいるが解くべき問題をさがしだすのが得意な人がすくないのではないか とか、CとかC++は最近のLLに比べるとややこしいがそういったコンピューターの実行の詳細を理解して使いこなせることができない人はちゃんとプログラミングできているとは言えないんではとか、プログラミング言語によって密度(ソースコードの字面あたりのコードで表したい本質)が違うなあ(Javaはかなり密度が薄いかんじ、Perlは密度濃くできるけどそうするとメンテできなくなりそう)とか
大きな地図で見る

Saturday, March 1, 2008

日本語でGoogle Summer of Codeについて話しあうためのグループ

Google Summer of Codeは、そろそろmentor organizationの申請がはじまる予定です。 やり方などについて質問したり相談したりする場所として Freenodeの#gsocや、program discussion groupがありますが、ここでは当然英語でのやりとりが必要になります。 日本語で話しあうことができる場所があればmentorや学生の応募が増えるかもと思い、日本語でのディスカッショングループをつくりました。興味のある人はぜひ参加してください。 FSIJSummer of Code紹介ページも参考にしてください。
Google グループ
Google Summer of Code Discuss (Japanese)に参加
メール アドレス:
このグループにアクセス

Saturday, February 23, 2008

Matz Tech Talk in Googleplex

2月20日 Googleplexにて、まつもとゆきひろさんにRuby 1.9 についてTech Talkしてもらいました。 きっかけはまつもとさんがblogで書いていた海外出張計画です。これを見て、サンフランシスコおよびポートランドに寄られる時に時間があるのならMountain ViewのGoogleplexに来てもらってTech Talkしてもらうのがいいと思って「時間があればいかがでしょうか」とメールしました。2/20午前なら空いてますよということだったので社内のruby-usersメイリングリストでtechtalkをホストしてくれる人を募ったところDave Astelsが名乗りをあげてくれて彼がいいろorganizeしてくることになりました。彼はもともとrubyconfとかでまつもとさんに「このエリアに来るのならぜひGoogleplexに」とオファーしていたみたいです。
Thanks and kudos to Fumitoshi Ukai for noticing that Matz was going to be in the area and contacting him about visiting -- Dave Astels
彼がポスターつくって1週間くらい前から社内に貼られていました。 「Video Conferenceで参加したい」というスレは「オレもオレも」というかんじでいっぱい希望がありました。時差的に可能なofficeはだいぶつないでいたんじゃないでしょうか? (日本は深夜だったのでできませんでした) 同じスレにはこんな発言も :-)
Who's going to take point on handcuffing him to a massage chair until he signs his offer? -- Steve Yegge
このTech Talkは既に YouTube で閲覧できるようになっています。
And maybe this could be an open google talk (published on youtube). -- Adam Ritter

Thursday, February 21, 2008

Summer of Codeについて

そういえばそろそろGoogle Summer of Codeがはじまるようなと思い、日本からもっと参加してもらうにはどうしたらいいのか考えています。 フィンランドのように(or 最初の年にやった夏休みコード道場2005のように)日本独自のSummer of Codeをやったほうがいいのかなぁとも思いつつ、あんまり日本で閉じこもってしまうのもよくないよなあというのもあり… FSIJ的にはglobalな枠組みでもっと日本からの参加がしやすくなる方法があるんならそれを模索すべきで、日本domesticなものにしないほうが長期的にみてよいだろうという話になっています。 (cf. Google Summer of Code Mentor Summitについて) そもそも日本からの参加が少ない理由はなんなのかがわかっていないのでアンケートをとろうと思います。 Google Summer of Code非公式アンケート そもそもこのblogで読者がそんなにいるのかという気もしますが、協力よろしくお願いします。 disclamier: GSoC staffじゃないのでこのアンケートは全くの非公式ですが、希望とかあればGSoC teamに言ってみることくらいはできますのでこうして欲しいとか言ってみたいことがある人はどんどんsubmitしてください。 実は単にGoogleドキュメント/スプレッドシートのフォーム機能を試してみたかったというのもあったり…

Wednesday, February 20, 2008

FSIJ月例会「バグを追い詰め、経絡秘孔をつく」

今日はFSIJ月例会「バグを追い詰め、経絡秘孔をつく」に参加してきた。去年の11月に実施したCode Fest Week 2007の時にgniibeさんがおいかけていた玄箱/PROの謎の挙動についての結果についての報告でした。ここまで追い詰めるのは大変だったろうなあ。 終わった後、町役場で宴会。 なお、次回Code Fest Weekは4/6~4/12を予定しています。

Saturday, February 16, 2008

snapshot.debian.net diskいれかえ

750GB がそろそろ一杯になってきたのでいれかえ。今回は11/18-2/16分。
hdb: ST3750640A, ATA DISK drive
hdc: ST3750640A, ATA DISK drive
hdb: attached ide-disk driver.
hdb: host protected area => 1
hdb: 1465149168 sectors (750156 MB) w/16384KiB Cache, CHS=91201/255/63, UDMA(66)
hdc: attached ide-disk driver.
hdc: host protected area => 1
hdc: 1465149168 sectors (750156 MB) w/16384KiB Cache, CHS=91201/255/63, UDMA(66)

/dev/hdb1             688G  678G   11G  99% /archive
/dev/hdc1             688G  198M  688G   1% /archive2
もう1〜2日ぶんはいるかな。 というか早くnew machineに移行したいところ。

スコーン

原稿書きがはかどらないので、スコーン作ってみた

Sunday, February 10, 2008

パン

ふと思い立ってパンをつくってみた。

Friday, February 8, 2008

Beautiful Code

Eng Japan Libraryの本の紹介第一段(の予定)としてBeautiful CodeについてGoogle Japan blogに書きました これを書いたのは7週間くらい前なのでその時は知らなかったのですが、なんか訳本はでるらしいですね。 ちなみにGoogle Docsでdraftを書いていました。他の人とかとshareするのが楽なので。

Friday, February 1, 2008

Coffee session

最近 東京オフィスでは、週に1回 Coffee sessionといって、昼休み時に30分ほど直接仕事には関係なさそうだけど(主に技術的に)おもしろそうな話をしゃべる mini techtalkぽいことをおこなっています。coffeeでも飲みながらざっくばらんに知識や情報を共有していこうという試みです。 今週は私が「Debian package inside out」というお題で、パッケージフォーマットとかアーカイブのレイアウト、インストールとかパッケージの設定はどうおこなわれているかについて基本的なことろをざっとしゃべったりしました。

Wednesday, January 23, 2008

関西で技術講演会

1/21,22 と京都大学・大阪大学へ行ってきた。 京都大学で技術講演会をしました。内容はGoogleのData centerの話とかMapReduce, Sawzall, Bigtableの話とかスペルコレクションの話とか。

Sunday, January 20, 2008

NYC officeにいってきた

1/11の朝のweekly meetingで「来週 NYCにクラスタ関係者が集って次世代の話をするのだが」という話を聞いたので急遽いくことにした。フライトはANA、ホテルはHotel Metroにした。 行きのANAはなんかたまたまプレミアエコノミーの席になっていてかなりよかった。寝まくっていただけだが。 NYCについたらtaxiでNYC officeへ。1 blockまるまるあるビルで1 floorがかなり広くていいかんじ。火曜・水曜はいつものようにreviewしたり、こちらの人とちょっとミーティングしたり。 木曜・金曜は朝から晩までミーティング。 土曜の帰りの朝になってMacBookProがおかしくなってネットにつなげられなくてまいった。bootしてもFinderがずっとBusy状態でそのうちwatchdogかなんかでFinderが起動しなおすという状況でなにもできず… 帰りのANAは残念ながら普通のエコノミー。帰りも寝まくり。

Sunday, January 6, 2008

Moffle

Moffle(モッフル)なるものが流行っているそうで、早速ワッフルメーカーを購入して試してみた。モッフル専用メーカーもあるみたいだけど、ワッフルとかホットサンドも作ることもあるだろうということでVitantonioのワッフル&ホットサンドメーカー。 まあ焼き餅なんだけど外はサクサク中はモチモチで結構おいしい。

Thursday, January 3, 2008

あけましておめでとうございます

今年もよろしくお願いします。 年末年始は帰省して食っちゃ寝の生活をしていました。 結局 emobileは圏外でまったく駄目でした(滋賀県はほとんど駄目ぽい?) FOMA使えないかなあとちょっと USB CDC-ACM driver いじってみたが、単に vendor/product codeを登録するだけでは駄目ぽい。 というか年末頃にまた風邪ひいたのがずっと長びいていて、年始頃は喉が痛かったり夜に咳がとまらなかったりで、だらだらしているだけだった…