Google Chromeがリリースされてもう一年になりますねー。
日本でもChromiumの開発にかかわってるチームがあります。自分がかかわるようになったのはこの春からです。オープンソースなので何やってるかは調べればわかると思いますが、大きなところだとLinux版のSSLまわり(EV署名検証など)とかをやってました。最近 WebKit committerになったばかり。今は WebSocketの実装あたりをやってます。
そういえば最近またSoftware Engineer募集中なので興味のあるひとは応募してみてください。SWEの面接は日本の他の会社の面接とだいぶ違っているので、うけてみるとおもしろいと思います。採用面接ゲリラガイドぽいかんじといえばいいでしょうか。ホワイトボードにプログラムをかいてもらったりします。SWE以外にもEngineering Managerとかも募集中です。
営業よりのTechnical Account Managerも大募集中らしいですよ!
Thursday, October 8, 2009
Chrome 1周年記念パーティ
Chrome 1周年記念パーティに参加してきました。
Chromeマカロンのほうは食べられたけど、Chromeケーキは食べ(られ?)なかったみたいです。
Thursday, August 13, 2009
入門git
入門gitを入手しました。Pragmatic Version Control Using Git の日本語訳です。
git は cvs, svn などと若干概念が違うところがあるので難しいと感じるところもあるが、この本でだいぶ使い方がわかるようになると思います。手元でpatchをこねていく時にもバージョン管理できるので、使いこなせばcvs, svnとかよりも便利だと感じるところも多いですね。git-svnなどを使えば、mainのrepositoryはsvnのままで手元ではgitを使うとかもできるので、プロジェクトではsvnをつかいつつ自分だけgitを使うとかもできるので移行していきやすくなってますね。
advancedな内容はあまり書かれてませんが、入門として読むのには最適ではないかと。
git は cvs, svn などと若干概念が違うところがあるので難しいと感じるところもあるが、この本でだいぶ使い方がわかるようになると思います。手元でpatchをこねていく時にもバージョン管理できるので、使いこなせばcvs, svnとかよりも便利だと感じるところも多いですね。git-svnなどを使えば、mainのrepositoryはsvnのままで手元ではgitを使うとかもできるので、プロジェクトではsvnをつかいつつ自分だけgitを使うとかもできるので移行していきやすくなってますね。
advancedな内容はあまり書かれてませんが、入門として読むのには最適ではないかと。
Wednesday, August 12, 2009
第一回html5-developers-jp オフ会
8/12の夜は、ラボエムクアリタ渋谷でのhtml5-developers-jpオフ会に参加してきました。
会場は結婚式二次会とかにもつかうようなところで、geekな集りはあまりそぐわないかんじがしたんですがよいんでしょうか…
デモ・ライトニングトークで、Web Socketsについてちょっと解説とデモをしました。デモするためにVaio ZのDebian/sidに WebKit + Web Sockets patchをあてたGtkLauncherを作り、Web Socketsをつかった簡単なチャットプログラムを動かしてみました。
外部ディスプレイにすぐにだせなくてあせりました。システム|設定|ディスプレイ ではうまくいかなくて、結局 xrandr --auto とかしてちょっと待つというのがよかったようなかんじ。
デモ用にノートもっていったけど、カメラもっていくのを忘れてしまったので写真はなし。
デモ・ライトニングトークで、Web Socketsについてちょっと解説とデモをしました。デモするためにVaio ZのDebian/sidに WebKit + Web Sockets patchをあてたGtkLauncherを作り、Web Socketsをつかった簡単なチャットプログラムを動かしてみました。
外部ディスプレイにすぐにだせなくてあせりました。システム|設定|ディスプレイ ではうまくいかなくて、結局 xrandr --auto とかしてちょっと待つというのがよかったようなかんじ。
デモ用にノートもっていったけど、カメラもっていくのを忘れてしまったので写真はなし。
Saturday, June 13, 2009
FSIJ総会
今日は秋葉原ダイビルにてFSIJ理事会および総会。
そういえば snapshot.debian.net は fsijでのdisk 4.3Tがあふれていて、2009年4月あたりのぶんをとりそこねていた。5月最初に気付いて手元では残しているが、次をなんとかしないといけないかんじ。fsijには24台のディスクがはいるやつがあるけどディスクそのものをどう調達しようかなあというところで検討中。全部そろってないとだめで、全部買うと50万くらい? 寄付を募ってみるかとかいう話にもなりそう。などなど
その後の月例会では、chromium/linuxの話をしてみた。普段は Ubuntu/Hardy相当の会社のマシンで開発してたりするけど、前日あたりから手元のvaio Z(Debian/sid)でも開発環境をととのえてみたらいろいろはまった。以下そのまとめ。
とりあえずLinux用のBuild Instructionに従えばよい
vaio zはamd64 archなので64bit用のセットアップが必要(V8あたりが64bitサポートがないため)。
ただしDebian/sidだとbuild/install-build-deps.shはそのままうごかない。まずUbuntuチェックをはずす。そしてlibdirectfb-1.2-0をlib_listに加える必要がある。いくつか/usr/lib32で*.soがないので適当にシンボリックリンクをはる必要もある。はらないとgcc -m32でリンクする時にライブラリみつけるのに失敗して64bit用のをリンクしようとしてできないというエラーになる。
必要なパッケージをインストールしたら depot_toolsをcheckout
depot_toolsを入手したらgclientでrepositoryからチェックアウト
hammerでビルド
調べた結果、これが原因
結局次のような *.so をLD_PRELOADしてやればよいかんじに
これで一部のfontが変なのはなおるが、resolveできなくてweb browseできない問題が。 これは/etc/nsswitch.confの次の設定のせいっぽい
ディスカッションでは renderer process の sandboxはどういうのがあれば幸せになれるだろうかでもりあがった。chromiumではLinux Sandboxingあたりに情報が。ここにかいてある通り現状では linuxでは no sandboxです。(No sandbox - Where we are currently. A compromised renderer can still get at your X socket so it fails all requrements. )
現状では IMEサポートがまだなので実用的ではないです。
ただ現在鋭意開発中なので、ここに書いてあることはすぐにobsoleteになる可能性があります。詳しくはdev.chromium.orgをみてください。
そういえば snapshot.debian.net は fsijでのdisk 4.3Tがあふれていて、2009年4月あたりのぶんをとりそこねていた。5月最初に気付いて手元では残しているが、次をなんとかしないといけないかんじ。fsijには24台のディスクがはいるやつがあるけどディスクそのものをどう調達しようかなあというところで検討中。全部そろってないとだめで、全部買うと50万くらい? 寄付を募ってみるかとかいう話にもなりそう。などなど
その後の月例会では、chromium/linuxの話をしてみた。普段は Ubuntu/Hardy相当の会社のマシンで開発してたりするけど、前日あたりから手元のvaio Z(Debian/sid)でも開発環境をととのえてみたらいろいろはまった。以下そのまとめ。
とりあえずLinux用のBuild Instructionに従えばよい
vaio zはamd64 archなので64bit用のセットアップが必要(V8あたりが64bitサポートがないため)。
ただしDebian/sidだとbuild/install-build-deps.shはそのままうごかない。まずUbuntuチェックをはずす。そしてlibdirectfb-1.2-0をlib_listに加える必要がある。いくつか/usr/lib32で*.soがないので適当にシンボリックリンクをはる必要もある。はらないとgcc -m32でリンクする時にライブラリみつけるのに失敗して64bit用のをリンクしようとしてできないというエラーになる。
cd /usr/lib32 ln -s libpangoft2-1.0.so.0 libpangoft2-1.0.so ln -s libgthread-2.0.so.0 libgthread-2.0.so ln -s libgio-2.0.so.0 libgito-2.0 ln -s libgconf-2.so.4 libgconf-2.so ln -s libdirectfb-1.2.so.0 libdirectfb-1.2.soまあこれは install-build-deps.shのバグなのかも?
必要なパッケージをインストールしたら depot_toolsをcheckout
$ svn co \ http://src.chromium.org/svn/trunk/tools/depot_toolsそしてチェックアウトされたdepot_toolsにPATHを通す。ここに含まれるgclientやgclといったツールを使って開発する。
depot_toolsを入手したらgclientでrepositoryからチェックアウト
$ gclient config \ http://src.chromium.org/svn/trunk/src $ gclient syncこれでsrcディレクトリ以下にチェックアウトされる
hammerでビルド
$ cd src/build $ hammer app../sconbuild/Debug/chrome が実行ファイル。しかしそのままだと一部フォントのレンダリングが変…
調べた結果、これが原因
Pango-WARNING **: \ /usr/lib/pango/1.6.0/modules/pango-basic-fc.so: \ wrong ELF class: ELFCLASS64これは install-build-deps.sh でやってるhackが原因というか。このscript、i386で必要なdebをapt-getして、/lib、/usr/lib 以下のをそれぞれ /lib32、/usr/lib32 になるようにパッケージしなおしてインストールするということをしてます。だいたい問題ないけどmoduleのロードパスなどはそのまま/usr/lib以下だったりして、そっちは64bit *.soなのでmodule loadに失敗しているということに。
結局次のような *.so をLD_PRELOADしてやればよいかんじに
/** * Copyright (c) 2009 Fumitoshi Ukai * All rights reserved. * * Fix module load path from /lib,/usr/lib to /lib32,/usr/lib32 * * $ gcc -m32 -fPIC -o module_fix.o -c module_fix.c * $ gcc -m32 -shared -o module_fix.so module_fix.o -ldl * $ LD_PRELOAD=`pwd`/module_fix.so /path/to/chromium/sconsbuild/Debug/chrome */ #define _GNU_SOURCE 1 #include <dlfcn.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void *dlopen(const char *filename, int flag) { void *(*orig_func)(const char *, int) = dlsym(RTLD_NEXT, "dlopen"); char *new_filename = NULL; if (strncmp(filename, "/usr/lib/", strlen("/usr/lib/")) == 0) { int len = strlen(filename) + 3; new_filename = malloc(len); snprintf(new_filename, len, "/usr/lib32/%s", filename + strlen("/usr/lib/")); } else if (strncmp(filename, "/lib/", strlen("/lib/")) == 0) { int len = strlen(filename) + 3; new_filename = malloc(len); snprintf(new_filename, len, "/lib32/%s", filename + strlen("/lib/")); } printf("dlopen: %s\n", new_filename ? new_filename : filename); void *p = orig_func( new_filename ? new_filename : filename, flag); if (new_filename) free(new_filename); return p; }
これで一部のfontが変なのはなおるが、resolveできなくてweb browseできない問題が。 これは/etc/nsswitch.confの次の設定のせいっぽい
hosts: files mdns4_minimal [NOTFOUND=return] \ dns mdns4この設定だとgetaddrinfo(3)がEAI_NONAMEをかえすのでresolveできないという結果に。 結局mdns4あたりの設定をはずして次のようにしてやればよさげ
hosts: files dns
ディスカッションでは renderer process の sandboxはどういうのがあれば幸せになれるだろうかでもりあがった。chromiumではLinux Sandboxingあたりに情報が。ここにかいてある通り現状では linuxでは no sandboxです。(No sandbox - Where we are currently. A compromised renderer can still get at your X socket so it fails all requrements. )
現状では IMEサポートがまだなので実用的ではないです。
ただ現在鋭意開発中なので、ここに書いてあることはすぐにobsoleteになる可能性があります。詳しくはdev.chromium.orgをみてください。
Thursday, June 11, 2009
App Engine Hackathon
今日は秋葉原富士ソフトにてHachathon。去年はGoogle Developer Day内企画だったけど、それだとHackathon参加しているとセッションが聴けない、逆もしかり ということでHackathonはDeveloper Dayの後日企画として開催。
Geo、Android、Google App Engine、OpenSocialの4分野を2分野づつ二日に分けて、今日はGoogle App EngineとOpenSocialの日。
それぞれ部屋にわかれてHack。Google App Engineのほうはいくつかのチームにわかれて作業していました。けっこうできていてよかったです。
Geo、Android、Google App Engine、OpenSocialの4分野を2分野づつ二日に分けて、今日はGoogle App EngineとOpenSocialの日。
それぞれ部屋にわかれてHack。Google App Engineのほうはいくつかのチームにわかれて作業していました。けっこうできていてよかったです。
Tuesday, June 9, 2009
Google Developer Day 2009 Japan
今日はGoogle Developer Day 2009 Japan。場所は去年と同じく横浜パシフィコ。
今年は、午後のBreakout sessionの一つ「Java で動かす Google App Engine」でDataStoreをどう使えばいいかについてのtipsについての解説など。
その後Office Hours。App Engine admin consoleの開発エンジニアもきていたのでいくつか要望とかも言っておいた。後は一般開発者の質問などに答えたり。DataStoreがやはりApp EngineでのWebアプリ開発のキモなので、ちゃんと理解しておきたいところ。詳しくはApp Engineデベロッパーガイド(記事も要注目)や、Google I/Oでのセッションなどを見ておくとよいです。
App EngineのOffice Hoursのあとは Google Chrome Office Hours。
その後は、「Life of 新卒エンジニア」を聴いて、デベロッパーソーシャルトークへ。去年はロビーに人があふれて大変だったが、今年は同じ時間にWaveやAndroidのセッションがあったためかそんなに多くなかった。
今年の目玉はなんといってもAndroid開発フォンの配布とWaveの発表かと。しかし、キーノートでAndroidの説明をしたChrisとTomは途中まで英語でプレゼンして最後に日本語とか卑怯すぎるw
今年は、午後のBreakout sessionの一つ「Java で動かす Google App Engine」でDataStoreをどう使えばいいかについてのtipsについての解説など。
その後Office Hours。App Engine admin consoleの開発エンジニアもきていたのでいくつか要望とかも言っておいた。後は一般開発者の質問などに答えたり。DataStoreがやはりApp EngineでのWebアプリ開発のキモなので、ちゃんと理解しておきたいところ。詳しくはApp Engineデベロッパーガイド(記事も要注目)や、Google I/Oでのセッションなどを見ておくとよいです。
App EngineのOffice Hoursのあとは Google Chrome Office Hours。
その後は、「Life of 新卒エンジニア」を聴いて、デベロッパーソーシャルトークへ。去年はロビーに人があふれて大変だったが、今年は同じ時間にWaveやAndroidのセッションがあったためかそんなに多くなかった。
今年の目玉はなんといってもAndroid開発フォンの配布とWaveの発表かと。しかし、キーノートでAndroidの説明をしたChrisとTomは途中まで英語でプレゼンして最後に日本語とか卑怯すぎるw
Friday, May 1, 2009
google summer intern
今年の夏も Googleではサマーインターンを実施します。
Googleのサマーインターンは、Googleのエンジニアと一緒に開発することを経験することができます。期間は8 - 14 週間程度ですが、Googleの東京オフィスで Googleでの開発のやりかたを実際に体験してもらうことになります。プログラミングをいろいろしてみたいという学士、修士、博士課程の学生の皆様は参加してみてください。
とはいっても「インターンシップ中はどういったプロジェクトに携わることが出来るのか?」「一日の具体的なスケジュール・動き方は?」などいろいろ知っておきたいこともたくさんあると思います。そういう人のためにサマーインターンセミナー(説明会)が開催されます。インターンシップのご紹介とエンジニアとのQ&Aセッションをはじめオフィスツアー等をする予定です。5月17日(日)の午後にGoogle東京オフィスにて開催しますので時間のある人は申しこんでください。
Googleのサマーインターンは、Googleのエンジニアと一緒に開発することを経験することができます。期間は8 - 14 週間程度ですが、Googleの東京オフィスで Googleでの開発のやりかたを実際に体験してもらうことになります。プログラミングをいろいろしてみたいという学士、修士、博士課程の学生の皆様は参加してみてください。
とはいっても「インターンシップ中はどういったプロジェクトに携わることが出来るのか?」「一日の具体的なスケジュール・動き方は?」などいろいろ知っておきたいこともたくさんあると思います。そういう人のためにサマーインターンセミナー(説明会)が開催されます。インターンシップのご紹介とエンジニアとのQ&Aセッションをはじめオフィスツアー等をする予定です。5月17日(日)の午後にGoogle東京オフィスにて開催しますので時間のある人は申しこんでください。
Sunday, April 26, 2009
Monday, April 20, 2009
opaque typeの表示
今朝は hariさん、jinmeiさんとWunderlich County ParkにHikingへいきました。7:15amにFirst Lutheran Churchに集合してそこから車で Wunderlich County Parkへ。雑談しつつてくてく1時間半ほど山歩き。
Menlo Parkに戻ってCafe Borroneで ブランチを食べました。そこで「opaque typeをdebuggerで見たい時ってどうするのがいいんですかね?」という話がでたので、ちょっと試してみました。
libraryなどで、内部では具体的な型が定義されているけど、使う側にはgenericなpointer(void *)としてしか見せていない場合です。例えばこんなかんじ。
単純な場合なら examine でダンプしちゃうのが簡単ですね。
もし
デバッグ情報つきライブラリがつくれない/入手できない、でもopaque typeの中をみたいという場合は、型情報を含むオブジェクトをつくってロードしてみるとよいかと
static linkされている場合だとどうでしょう。
Menlo Parkに戻ってCafe Borroneで ブランチを食べました。そこで「opaque typeをdebuggerで見たい時ってどうするのがいいんですかね?」という話がでたので、ちょっと試してみました。
libraryなどで、内部では具体的な型が定義されているけど、使う側にはgenericなpointer(void *)としてしか見せていない場合です。例えばこんなかんじ。
# library側 % cat a.h void* create_foo(); void set_foo(void* p, int i); % cat liba.c #include <stdlib.h> #include <string.h> #include "a.h" struct foo { int i; }; void* create_foo() { void *p = malloc(sizeof(struct foo)); memset(p, 0, sizeof(struct foo)); return p; } void set_foo(void* p, int i) { struct foo* fp = (struct foo*)p; fp->i = i; } % gcc -fPIC -o liba.o -c liba.c % gcc -shared -o liba.so liba.o -lc # libraryを使う側 % cat b.c #include <stdlib.h> #include "a.h" int main(int argc, char *argv[]) { void* p = craete_foo(); set_foo(p, argc); exit(0); } % gcc -g -o b.o -c b.c % gcc -g -o b b.o -L. -la % LD_LIBRARY_PATH=. gdb b ... (gdb) break main Breakpoint 1 at 0x400657: file b.c, line 6. (gdb) run Starting program: /tmp/g/b Breakpoint 1, main (argc=1, argv=0x7fffb44a6e08 "?\213J??\177") at b.c:6 6 void *p = create_foo(); (gdb) n 7 set_foo(p, argc); (gdb) print p $1 = (void *) 0x601010 (gdb) whatis p type = void * (gdb) whatis *p type = void (gdb) ptype p type = void * (gdb) ptype *p type = void (gdb) print *(struct foo*)p No struct type named foo. (gdb)というかんじで p の中身をみることができません。defaultでは
set opaque-type-resolution on
ですが、liba.so
のデバッグ情報がないのでどうしようもないのです。単純な場合なら examine でダンプしちゃうのが簡単ですね。
(gdb) x/dw p 0x601010 0(
/dw
でword(w)を10進(d)で表示)もし
liba.so
のデバッグ情報つきが手にはいれば次のようにロードしてやればよいでしょう。# デバッグ情報つき % gcc -fPIC -g -o liba.g.o -c liba.c % gcc -shared -g -o liba.g.so liba.g.o -lc ... (gdb) info share From To Syms Read Shared Object Library 0x00007f3ba9cd3a60 0x00007f3ba9ce9d44 Yes /lib64/ld-linux-x86-64.so.2 0x00007f3ba9ad2520 0x00007f3ba9ad2648 Yes ./liba.so 0x00007f3ba978de30 0x00007f3ba987ee88 Yes /lib/libc.so.6 (gdb) add-symbol-file liba.g.so 0x00007f3ba9ad2520 add symbol table from file "liba.g.so" at .text_addr = 0x7f3ba9ad2520 (y or n) y Reading symbols from /tmp/g/liba.g.so...done. (gdb) print *(struct foo*)p $2 = {i = 0} (gdb) s set_foo (p=0x601010, i=1) at a.c:18 18 struct foo *fp = (struct foo *)p; (gdb) s 19 fp->i = i; (gdb) s 20 } (gdb) s main (argc=1, argv=0x7fffb1ef1858 "?\033??\177") at b.c:8 8 exit(0); (gdb) print *p Attempt to dereference a generic pointer. (gdb) print *(struct foo*)p $4 = {i = 1}このように p のさしている先を struct foo として解釈できるようになります。またstep実行もできますね。
デバッグ情報つきライブラリがつくれない/入手できない、でもopaque typeの中をみたいという場合は、型情報を含むオブジェクトをつくってロードしてみるとよいかと
% cat atype.c struct foo { int i; }; struct foo *fooptr; % gcc -fPIC -g -o atype.o -c atype.c % gcc -shared -g -o atype.so atype.o -lc % LD_LIBRARY_PATH=. gdb b ... (gdb) break main Breakpoint 1 at 0x400657: file b.c, line 6. (gdb) run Starting program: /tmp/g/b Breakpoint 1, main (argc=1, argv=0x7fff8bd03668 "?;?\213?\177") at b.c:6 6 void *p = create_foo(); (gdb) n 7 set_foo(p, argc); (gdb) info share From To Syms Read Shared Object Library 0x00007fde83ae5a60 0x00007fde83afbd44 Yes /lib64/ld-linux-x86-64.so.2 0x00007fde838e4520 0x00007fde838e4648 Yes ./liba.so 0x00007fde8359fe30 0x00007fde83690e88 Yes /lib/libc.so.6 (gdb) add-symbol-file atype.so 0x00007fde838e4520 add symbol table from file "atype.so" at .text_addr = 0x7fde838e4520 (y or n) y Reading symbols from /tmp/g/atype.so...done. (gdb) print *(struct foo*)p $1 = {i = 0} (gdb) s 8 exit(0); (gdb) print *(struct foo*)p $2 = {i = 1} (gdb)この場合はstep実行はできせんがstruct fooとして見ることはできるようになりました。
static linkされている場合だとどうでしょう。
# static library % ar ruv liba.a liba.o ar: creating liba.a a - liba.o % gcc -g -o b.static b.o liba.a % gdb b.static ... (gdb) break main Breakpoint 1 at 0x400547: file b.c, line 6. (gdb) run Starting program: /tmp/g/b.static Breakpoint 1, main (argc=1, argv=0x7fffedb324a8 "?+???\177") at b.c:6 6 void *p = create_foo(); (gdb) n 7 set_foo(p, argc); (gdb) print p $1 = (void *) 0x601010 (gdb) whatis p type = void * (gdb) whatis *p type = void (gdb) ptype p type = void * (gdb) ptype *p type = void (gdb) print *(struct foo*)p No struct type named foo. (gdb) info share From To Syms Read Shared Object Library 0x00007f49e5914a60 0x00007f49e592ad44 Yes /lib64/ld-linux-x86-64.so.2 0x00007f49e55cfe30 0x00007f49e56c0e88 Yes /lib/libc.so.6 (gdb) add-symbol-file atype.so 0x800000000000 add symbol table from file "atype.so" at .text_addr = 0x800000000000 (y or n) y Reading symbols from /tmp/g/atype.so...done. (gdb) print *(struct foo*)p $2 = {i = 0} (gdb) n 8 exit(0); (gdb) print *(struct foo*)p $3 = {i = 1}というかんじで適当なアドレスにadd-symbol-fileで型情報付きオブジェクトをロードしてやればよさそうです。
Sunday, April 19, 2009
Little Sheep Hot Pot
4/13からまたMountain Viewに来ています。
今晩は hariさん、jinmeiさんと一緒に Little Sheep Hot Potで食事をしました。なんか6人以上でないと予約できないらしく、混んでいて30分ほど(?)待ちました。モンゴリアン火鍋とかで、スパイスのきいたスープで羊肉などをしゃぶしゃぶ風に食べるかんじです。スープベースを人数分たのんで、いれる具をいくつか頼む形式でした。スープがけっこうおいしかったです。大勢でいくと予約もできるし、いろいろな具をためせるのでよさそうです。
San Mateoは混んでいて駐車場所をみつけるのが大変でした。San Mateo Stationが近いので電車でいくのでもいいのかも。
大きな地図で見る
今晩は hariさん、jinmeiさんと一緒に Little Sheep Hot Potで食事をしました。なんか6人以上でないと予約できないらしく、混んでいて30分ほど(?)待ちました。モンゴリアン火鍋とかで、スパイスのきいたスープで羊肉などをしゃぶしゃぶ風に食べるかんじです。スープベースを人数分たのんで、いれる具をいくつか頼む形式でした。スープがけっこうおいしかったです。大勢でいくと予約もできるし、いろいろな具をためせるのでよさそうです。
San Mateoは混んでいて駐車場所をみつけるのが大変でした。San Mateo Stationが近いので電車でいくのでもいいのかも。
大きな地図で見る
Wednesday, March 4, 2009
ネット業界滋賀県人会
社内に滋賀県にゆかりのある者からなる「近江っ子クラブ」があります。私も忍者市になりそこねた甲賀出身なので、そのメンバーです。
ちょうどMountain Viewにいっている時に新年会があったのですが、そこでネット業界関係者な滋賀県人があつまる会があるという話がでてました。
で、「ネット業界滋賀県人会2009 Spring」が3月4日にあるというのでいってきました。場所は恵比寿の個室ダイニング 囲。
大きな地図で見る
だいたい滋賀の琵琶湖沿い南部から東部の人がおおかったみたい。琵琶湖線ぞい。実家が数十mくらいしか離れてない人とかもいたみたい。甲賀の人はいなかったような? 市町村合併でいろいろかわったけど今はこうなっているのか
しかし、名刺もカメラも忘れてしまっていたのが悔やまれるなー。
ちょうどMountain Viewにいっている時に新年会があったのですが、そこでネット業界関係者な滋賀県人があつまる会があるという話がでてました。
で、「ネット業界滋賀県人会2009 Spring」が3月4日にあるというのでいってきました。場所は恵比寿の個室ダイニング 囲。
大きな地図で見る
だいたい滋賀の琵琶湖沿い南部から東部の人がおおかったみたい。琵琶湖線ぞい。実家が数十mくらいしか離れてない人とかもいたみたい。甲賀の人はいなかったような? 市町村合併でいろいろかわったけど今はこうなっているのか
しかし、名刺もカメラも忘れてしまっていたのが悔やまれるなー。
Saturday, February 28, 2009
フクオカRubyフォーラム2009
フクオカRubyフォーラム2009にいってきた。
羽田から福岡空港に11:30頃。会場までつれていってもらって昼食会。知事をまじえて実行委員会/審査委員のみなさんと。Ruby大賞は、海外から結構応募があって驚いたとか、大賞も結局海外にとられてしまいました とか。自治体のITシステムがベンダーロックインされているのをどうしたらいいかとかそういう話。きれいなインターフェイスをきめて疎結合にしてあればいいんだろうけど、そうじゃないんだろうねえ。
フクオカRubyフォーラム2009はまず主催者と知事の挨拶からはじまり、フクオカRuby大賞の発表。 その後、基調講演。RubyのイベントにGoogleとしてということで、ちょっとawayぎみなんで何の話にするか悩んでたけど、結局 Google Data APIとGoogle App Engineで、GoogleのスケーラブルなWebプラットフォームというタイトルにしました。RESTfulなプロトコルをつかうことで、Googleミッションの「世界中の情報を世界中の人がアクセスし、利用できる」ようにしているのがGoogle Data APIで、webアプリケーションの運用・構築をGoogleの強力なインフラ上で簡単にスケールできるようにしているのがGoogle App Engineというかんじのストーリー。Google Data APIについてはちょうどGoogle Data on Railsがあったのでそれを紹介することでちょっとrubyにふれることができた。App Engineはまだpythonのみなのでrubyな人には遠い話なのかもな…「技術のわかる人だけじゃないんで」といわれてたけどわかってもらえただろうか?
その後は、Matzさんの特別講演と受賞者のプレゼンテーション。
フォーラムの後は同じ会場で交流会。
交流会の後、現地の人につれられて屋台のラーメン屋へ。アゴ(トビウオの干物?)、明太イワシとか食べてあと長浜ラーメン+替え玉1。そのあとも芋焼酎とかけっこう飲んでだいぶ遅くなってから西鉄グランドホテルにチェックイン。なんか泊まった部屋はネットもwifiもなくてちょっと困った。
翌日朝7:30頃に起きて朝食くったあと、ネットなくてすることないし昨晩の酒でちょっとだるくて2度寝。10時頃おきてチェックアウトして福岡空港にいってお土産かったりラーメンくったりしたあと羽田へとんで帰宅。
羽田から福岡空港に11:30頃。会場までつれていってもらって昼食会。知事をまじえて実行委員会/審査委員のみなさんと。Ruby大賞は、海外から結構応募があって驚いたとか、大賞も結局海外にとられてしまいました とか。自治体のITシステムがベンダーロックインされているのをどうしたらいいかとかそういう話。きれいなインターフェイスをきめて疎結合にしてあればいいんだろうけど、そうじゃないんだろうねえ。
フクオカRubyフォーラム2009はまず主催者と知事の挨拶からはじまり、フクオカRuby大賞の発表。 その後、基調講演。RubyのイベントにGoogleとしてということで、ちょっとawayぎみなんで何の話にするか悩んでたけど、結局 Google Data APIとGoogle App Engineで、GoogleのスケーラブルなWebプラットフォームというタイトルにしました。RESTfulなプロトコルをつかうことで、Googleミッションの「世界中の情報を世界中の人がアクセスし、利用できる」ようにしているのがGoogle Data APIで、webアプリケーションの運用・構築をGoogleの強力なインフラ上で簡単にスケールできるようにしているのがGoogle App Engineというかんじのストーリー。Google Data APIについてはちょうどGoogle Data on Railsがあったのでそれを紹介することでちょっとrubyにふれることができた。App Engineはまだpythonのみなのでrubyな人には遠い話なのかもな…「技術のわかる人だけじゃないんで」といわれてたけどわかってもらえただろうか?
その後は、Matzさんの特別講演と受賞者のプレゼンテーション。
フォーラムの後は同じ会場で交流会。
交流会の後、現地の人につれられて屋台のラーメン屋へ。アゴ(トビウオの干物?)、明太イワシとか食べてあと長浜ラーメン+替え玉1。そのあとも芋焼酎とかけっこう飲んでだいぶ遅くなってから西鉄グランドホテルにチェックイン。なんか泊まった部屋はネットもwifiもなくてちょっと困った。
翌日朝7:30頃に起きて朝食くったあと、ネットなくてすることないし昨晩の酒でちょっとだるくて2度寝。10時頃おきてチェックアウトして福岡空港にいってお土産かったりラーメンくったりしたあと羽田へとんで帰宅。
Saturday, February 21, 2009
Release It!
Release It! 本番用ソフトウェア製品の設計とデプロイのためにが発売開始してます。
Ship It!、Manage It!に続く第3段。Ship It!は、ソースコード管理やビルド・テストなど開発手法に関する話、Manage It!はプロジェクトのマネジメントはどうすればいいかという話に対して、Release It!では、大規模なシステムを開発・運用する上で考慮すべきことをまとめた本になっています。いわゆる上流工程的な設計をどうするか、実装詳細がシステムにあたえる影響、負荷がかかった時のふるまいがどうなるか、デプロイをうまくやるにはどうしておくべきかなど、ただ単に要求された機能が動作できるシステムを作るだけでなく、安定して運用するために検討しておくべきことがうまくまとめられています。
今回もレビュアーの方々のおかげで、かなりこなれた日本語訳になっています。
装丁も船外活動している宇宙飛行士が「Release It!」というパネルをもっていたりしてかっこいいです。
Ship It!、Manage It!に続く第3段。Ship It!は、ソースコード管理やビルド・テストなど開発手法に関する話、Manage It!はプロジェクトのマネジメントはどうすればいいかという話に対して、Release It!では、大規模なシステムを開発・運用する上で考慮すべきことをまとめた本になっています。いわゆる上流工程的な設計をどうするか、実装詳細がシステムにあたえる影響、負荷がかかった時のふるまいがどうなるか、デプロイをうまくやるにはどうしておくべきかなど、ただ単に要求された機能が動作できるシステムを作るだけでなく、安定して運用するために検討しておくべきことがうまくまとめられています。
今回もレビュアーの方々のおかげで、かなりこなれた日本語訳になっています。
装丁も船外活動している宇宙飛行士が「Release It!」というパネルをもっていたりしてかっこいいです。
Thursday, February 19, 2009
Google Summer of Codeアンケート結果
そろそろまた
Google Summer of Code 2009がはじまりそうです。月日の経つのは早いものですね。
というわけで去年とったアンケートの結果をまとめてみました。
34 Response
Google Summer of Codeを知っていましたか?
あなたは?
(重複あり)
Google Summer of Codeに参加したことがありますか?
(重複あり)
Google Summer of Codeに参加した人はどこで知りましたか?
(重複あり)
Google Summer of Codeを参加しようとしなかった人は、その理由はなんですか?
(重複あり)
今後、参加してみたいと思いますか?
参加しやすいやり方に変われば参加してみたい人はどの点が変われば参加してみたいですか?/参加が増えるとおもいますか?
(重複あり)
フリーフォーマット回答から抜粋とその感想は以下のとおり
Google Summer of Codeに参加しなかった理由
というわけで去年とったアンケートの結果をまとめてみました。
34 Response
Google Summer of Codeを知っていましたか?
知っていた | 27 | 84% |
知らなかった | 5 | 16% |
あなたは?
参加資格のある学生 | 9 | 33% |
open source/free softwareの開発者 | 13 | 48% |
Google Summer of Codeに参加したことがありますか?
学生として申し込んだことがある | 2 | 33% |
学生として参加したことがある | 1 | 17% |
mentor organizationに所属している/所属していた | 1 | 17% |
mentorとして参加したことがある | 0 | 0% |
Google Summer of Codeに参加した人はどこで知りましたか?
Googleのblog | 1 | 8% |
mentor organizationでの告知 | 1 | 8% |
ニュースサイト | 4 | 31% |
その他 | 2 | 15% |
Google Summer of Codeを参加しようとしなかった人は、その理由はなんですか?
英語の壁 | 2 | 8% |
申し込みの仕方がわからなかった | 0 | 0% |
申し込む開発ネタがなかった | 3 | 13% |
open source/free softwareに興味がない | 0 | 0% |
$4500もらっても仕方がない | 0 | 0% |
結果がだせなくて$4500もらえないリスク | 0 | 0% |
気づいた時には締め切られていた | 2 | 8% |
開発期間に時間がとれるかどうか不明だった | 2 | 8% |
その他 | 0 | 0% |
今後、参加してみたいと思いますか?
今のやり方のままでいいので参加したい | 10 | 33% |
参加しやすいやり方に変われば参加してみたい | 17 | 57% |
参加してみたいと思わない | 3 | 10% |
参加しやすいやり方に変われば参加してみたい人はどの点が変われば参加してみたいですか?/参加が増えるとおもいますか?
日本の大学事情にあわせたスケジュールになっていれば | 5 | 24% |
日本語で参加できるのならば | 0 | 0% |
日本語が通じるmentorがいれば | 0 | 0% |
もっと広くアナウンスして見逃さないようにしてくれれば | 1 | 5% |
日本 Summer of Code | 3 | 14% |
フリーフォーマット回答から抜粋とその感想は以下のとおり
Google Summer of Codeに参加しなかった理由
- 自分の能力では恥をかくだけだという不安
- やってみないとわからないのでは? 若いうちは恥をかいても得られるメリットがあると思う
- 特許の懸念があるプロジェクトが多すぎる。ffmpeg等
- そのプロジェクトにapplyしなきゃいいんでは?
- 一緒に開発する友達が居なかった
- GSoCは個人でapplyして個人で開発するものです
- 行なわれたコミットメントに対して後から支払う
- 基本的にそうなっていますよ。application通過すれば$500、中間審査にpassすれば$2000、最終審査にpassすれば$2000です。途中でだめだと後はでません。mentor orgには終わった後に最後に支払いがあります。
- 夏のバカンスシーズンに、いきなり二日以内に答えろとか言ってくるのをやめてくれれば。
- (初年度の時はどもかく)スケジュールはだいたいはじまる前に決まっているので、あらかじめ予定をたてておきましょう
- 問題をもっと明確に定義して,その解決アイディアにお金をはらうようにするといいのではないか(アイデアゴラのように)
- 問題を明確に定義するのはmentor orgとstudentが協力しあってやりあうことです。GSoCは解決アイデアに金をはらうのではなく、ソフトウェア開発(coding!)に対してです。
- 私の知っている範囲では、ほとんどのプロジェクトで採用され成功している学生はすでに参加している人です。今まで参加したことがなくて、金に釣られてやってくるような学生には滅多にいい人がいません。SoCに認められるような有名プロジェクトで普段から参加しているような日本人がほとんどいないんですから、こうなるのも自然なことだと感じます。
- そうかもしれません…。金についてはバイトできないぶんの補償くらいかなあ。むしろなかなかprojectの中心メンバーとcommunicationしてprojectにはいりこむいいきっかけだと思うんですけどね。GSoCとかに参加しておくほうが就職活動のときにresumeに書けて有利というのがあると思います。(少なくともGoogle SWEにapplyする場合 resume screenはパスしやすくなるような…)
- 未踏ソフトウェア事業のように、オフラインで行う成果報告会に相当するものがあるといいと思います。
- やってるんですけどねー。日本ではfsijがやってますが、日本からの参加者がかなり少ないのであまりもりあがりませんね。もっとアナウンスしたほうがいいのかもしれません。
- SoCに参加したいとは思っているのですが,ネタが思いつかなくて躊躇してしまいます.「こういうネタでやってみませんか」という情報が広く伝わると参加しやすくなるのではないかと個人的には思っています.
- mentor orgがだしているideas listでは駄目なんでしょうか?
Monday, January 12, 2009
Android Dream phone の kernel module のbuild
ext2.ko
なんかをつくったりするためのやりかたのメモ。基本的にはBuilding for Dreamで環境を整える。
kernelだけならkernel/msmの
refs/heads/android-msm-htc-2.6.25
というrevisionをとってくればよいだけだとおもう。kernel versionがかわっていたら違うrevisionをとってくること。まあkernelのgitだけより全部のmoduleをrepoでとってきたほうがprebuilt
にtoolchainなんかもはいっているのでそのほうが楽かも。実機のkernelがどのversionかは
uname -r
などで確認。uname
はbusybox
にはいってる。CONFIG_LOCALVERSION_AUTO
がセットされおりgit revisionの情報がkernel moduleのversionに追加されているため、git revisionをあわせる必要がある。kernel/scripts/setlocalversion
をみればわかるようにgit describe
の結果あたりが使われているのでそれがあうようなrevisionにする。git log
でcommit logがわかるので、commitの行のhash値をつかってcheckoutしつつgit describeがそれっぽいのになるのにあわせる。
% git checkout commit行のhash値 % git describeあとは
/proc/config.gz
をとってきて、必要なconfigをしなおしてmake。gccのバージョンは実機の/proc/version
などでチェック。CROSS_COMPILE
はgcc
などへのprefixをセットする。
% adb pull /proc/config.gz ./config.gz % gunzip config.gz % mv config .config % vi .config # or make ARCH=arm menuconfigなど % make ARCH=arm \ CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-あとはできた
ext2.ko
などをadb
でpush。
% adb push fs/ext2/ext2.ko /data/bin/ext2.ko
/sbin/modinfo fs/ext2/ext2.ko
してdependsしている*.koもpushするのを忘れないように。dependsしているmoduleがloadされていないとエラーになります。
# insmod /data/bin/ext2.ko insmod: init_module '/data/bin/ext2.ko' failed (No such file or directory) # insmod /data/bin/mbcache.ko # insmod /data/bin/ext2.koこれでkernelのversionがあがっちゃっても
ext2.ko
なんかを自分で作ることができる。
Monday, January 5, 2009
Androidの/etc/resolv.conf
Android Dream PhoneでDebianだと、networkによっては nameserverがみつからなくて困ることがある。Android appなら問題ないけど、debianのプログラムだと/etc/resolv.confをちゃんとつくる必要があるのだ。nameserverの情報はgetpropコマンドでとれるのでchrootする前に次のようなかんじでchrootの中のetc/resolv.confをつくっておけばよい。
getprop | \ sed -n -e 's/^\[net\.dns.\]: \[\(.*\)\]/\1/p' \ > etc/resolv.conf
Sunday, January 4, 2009
謹賀新年2009
遅ればせながら、あけましておめでとうございます。今年もよろしくお願いします。
年末年始は実家のほうに帰省していました。
31日: 実家へ移動。
FOMAの/dev/ttyACM0がInput/output errorでopenできないのであせる。なんか何度かぬいたりさしたりいろいろ試しているとふいに繋るようになった。条件不明。いったん繋れば安定しているっぽい。
1日: 昼ごろ起きて御節料理。そのあとまた寝て起きたら晩飯。
2日: TV見たりしながらだらだら。
3日: 高校の同窓会へ。
11:30から。すごく久しぶりで懐しい。先生があんまりかわってない。というか、当時は今の我々より若かったみたいな話でみんな驚く。生徒は全体の1/3くらいが来ていたぽい。みんないろいろ活躍してるな。一次会は15:30に終了。
17:00から二次会。19:30ごろから三次会で22:00ごろにおひらき。終電まで余裕と思っていたら、乗り換えで50分待ちで終電になってた。田舎すぎる。
4日: 実家から東京へ。昼ごろに戻ってきていたのでその後明治神宮に初詣など。
年末年始は実家のほうに帰省していました。
31日: 実家へ移動。
FOMAの/dev/ttyACM0がInput/output errorでopenできないのであせる。なんか何度かぬいたりさしたりいろいろ試しているとふいに繋るようになった。条件不明。いったん繋れば安定しているっぽい。
1日: 昼ごろ起きて御節料理。そのあとまた寝て起きたら晩飯。
2日: TV見たりしながらだらだら。
3日: 高校の同窓会へ。
11:30から。すごく久しぶりで懐しい。先生があんまりかわってない。というか、当時は今の我々より若かったみたいな話でみんな驚く。生徒は全体の1/3くらいが来ていたぽい。みんないろいろ活躍してるな。一次会は15:30に終了。
17:00から二次会。19:30ごろから三次会で22:00ごろにおひらき。終電まで余裕と思っていたら、乗り換えで50分待ちで終電になってた。田舎すぎる。
4日: 実家から東京へ。昼ごろに戻ってきていたのでその後明治神宮に初詣など。
Subscribe to:
Posts (Atom)