今回は、US企業で働く場合の、日本との働き方の違いについて書いてみたいと思います。労働体系や労働時間といったものは、企業ごとに風土があるので一概には言えないかと思いますが、サンフランシスコのスタートアップ企業の一例ということで、あらかじめご了承のほど。
まず、最初に大きく日本と違っているのは労働時間、とくにその時間帯です。
この続きは、こちらで。
YAPC::Europe 2006 Schedule
http://www.birmingham2006.com/cgi-bin/yapc.pl?act=talk-schedule&dayid=1
8/30-9/1 にイギリスはバーミンガムで開催される YAPC::Europe 2006 のスケジュールがでました。3日目の一発目で Plagger ネタ しゃべってきます。 Plagger World Tour に追加しないと。
実はヨーロッパに旅行するのは初めて。カンファレンスの前後は Leon や clkao のいるロンドンに宿泊するんですが、ノッティンガムパレードやらプレミアリーグの開幕戦やら、楽しめるといいなあ。
Google Maps を ThinkPad 加速度センサーで操作 というナイスなハックをやってみたわけですが、ちょっと技術的な部分を解説。
まず ThinkPad の加速度を読む部分は、Google で検索すると、
あたりのコードが見つかります。C で書くと、
if( !DeviceIoControl( hFile, 0x733fc, NULL, 0, // via IOCTL(0x733fc) (void *)&AccelerometerData, 0x24, &ulRead, NULL)) throw "Failed to DeviceIoControl"; X = AccelerometerData.x0 + OffsetX; Y = AccelerometerData.y0 + OffsetY;
という感じ。これを ActivePerl でやるには、Win32API::File を使って、
use Win32API::File; my $file = createFile("//./ShockMgr", "r ke") or die "Can't get ShockMgr device"; DeviceIoControl($file, 0x733fc, [], 0, my($buf), 0x24, my($bytes), []); my @data = unpack "x4s*", $buf;
という具合にやればよし。ネイティブの createFile, DeviceIoControl をそのまま呼べるので簡単。
これでX軸、Y軸の加速度が取れたので、あとは Google Maps とどうやって組み合わせるか。調べてみたところ、Google Maps の JavaScript は v2.0 からローカルの HTML ドキュメントから API Key なしで実行できるようになったとのこと。
というわけで WinIE で ActiveX として Perl を実行してしまって、Google Maps の JS コードと融合すればOK。この ActiveX + Perl はかなり協力で、
<script language="PerlScript"> $window->document->write("hello"); </script>
のようにブラウザのオブジェクトをさわれるし、
<script language="PerlScript"> sub foo { alert("$_[0]") } </script> <script language="JavaScript"> foo("bar"); </script>
のように PerlScript で書いた関数を JavaScript から呼び出し、またその逆なんてのも OK。当然 ActivePerl だから、LWP でも Win32::OLE でも使い放題。
てなわけで GMaps との融合。通常の GMaps アプリ同様に js をロードして Map オブジェクトを配置。ポイントは、
window.setTimeout(loop, interval); } } function loop() { var pos = get_pos(0).split(/,/); var ax = (pos[0] - base[0]) / 20; var ay = (pos[1] - base[1]) / 20; x += ax * 0.0005; y -= ay * 0.0005; // opposite way map.panTo(new GLatLng(y, x)); window.setTimeout(loop, interval); }
という具合に setTimeout でループしながら、Perl で定義した get_pos を呼び出して XY 加速度を取得。その値に応じて map.panTo() で移動、といった具合。
Win32-Perl の機能がブラウザから使えることによって、オンラインアプリの Google Maps とローカルの融合ができる、というわけでこれはアツイなー、と思ったしだいです。
最近メインのこの Blog (blog.bulknews.net) の更新が滞り気味、というのも他にいくつも Blog があってカテゴリを散らしているうちに、メインのここに書くネタがほとんどなくなってきたという罠。
Bulknews::SubTech を Plagger ネタ専用に立ち上げていたんですが、はてな記法(でもなんでもいいんですがいわゆる Pre がそのまま書けるフォーマット)だとコードが書きやすいということもあり、コードネタ専門に。それでここのメインが侵食されてきたという感じですね。
せっかく一番読者が多いこの Blog なので、こっちにももっとコード系のtechネタを戻していって、subtech は Plagger 中心のコードメモ系に特化させる予定。というわけで mt-text-hatena をインストールしてみました。このエントリはテストもかねてます。(はてなフォーマットを使うのは一番の本意ではなくてできれば Trac か Kwiki がよかったんですが、もうすでに Subtech ではてなフォーマットを使っているので、まあこれでいいかと)
というわけで、
てな感じに整理。まあ、あんまりこだわらずにポストしていきます。
Six Apart CPAN Leaderboard (generated from 02packages.details.txt.gz on Thu Jun 1 12:31:59 2006)
Contributors are ranked by number of modules and then by name.
Want to work with us? Send me your resume now!
214 of 10791 packages (1.98%)
on CPAN
and constitute 17 of all 2919 authors (0.58%).
You can find the script on london.pm.org