ちゃんとしたConferenceというよりもかなりad-hocで、当日になってどういうトピックでディスカッションするかを決めて適当に時間・部屋割りするという感じだった。
でたのは
- Web Inspector
- better code review tool
- WebKit2
- experimental features
- Loader code
- releasing WebKit
技術講演会が終った後は、KMCの例会に顔をだして、久し振りに中央食堂でご飯たべてきました。
Google Chromeがリリースされてもう一年になりますねー。
日本でもChromiumの開発にかかわってるチームがあります。自分がかかわるようになったのはこの春からです。オープンソースなので何やってるかは調べればわかると思いますが、大きなところだとLinux版のSSLまわり(EV署名検証など)とかをやってました。最近 WebKit committerになったばかり。今は WebSocketの実装あたりをやってます。
そういえば最近またSoftware Engineer募集中なので興味のあるひとは応募してみてください。SWEの面接は日本の他の会社の面接とだいぶ違っているので、うけてみるとおもしろいと思います。採用面接ゲリラガイドぽいかんじといえばいいでしょうか。ホワイトボードにプログラムをかいてもらったりします。SWE以外にもEngineering Managerとかも募集中です。
営業よりのTechnical Account Managerも大募集中らしいですよ!
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のバグなのかも?
$ svn co \ http://src.chromium.org/svn/trunk/tools/depot_toolsそしてチェックアウトされたdepot_toolsにPATHを通す。ここに含まれるgclientやgclといったツールを使って開発する。
$ gclient config \ http://src.chromium.org/svn/trunk/src $ gclient syncこれでsrcディレクトリ以下にチェックアウトされる
$ 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に失敗しているということに。
/**
* 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;
}
hosts: files mdns4_minimal [NOTFOUND=return] \ dns mdns4この設定だとgetaddrinfo(3)がEAI_NONAMEをかえすのでresolveできないという結果に。 結局mdns4あたりの設定をはずして次のようにしてやればよさげ
hosts: files dns