« 2007年08月 | メイン | 2007年10月 »

2007年09月19日

Shibuya.js 24 - JavaScript.GIF x LiveConnect 発表資料公開しました

出張Shibuya.js 24 の Lightining Talks で発表した資料を slideshareで公開しました。

ちなみに、LiveConnectでUSBミサイルランチャーを制御するデモは、先日のJapan Linux Conference 2007 で行なったものと同じなのですが、ストリーミング中継と録画に失敗していたため、急遽リベンジすることにしました。

Google Video / YouTube 動画アーカイブ

Mozilla24 / 出張Shibuya.js 24 各発表の動画が公開されています。

Shibuya.js 24 - Google Video Shibuya.js 24 - Google Video

Mozilla24 / 出張 Shibuya.js 24 関連の感想リンク集

  1. TAKESAKO @ Yet another Cybozu Labs: Mozilla24リアルタイム中継(shibuya.jsもあるよ)
  2. 兼雑記 - 2007-09-15
  3. 出張Shibuya.js 24の発表資料 (mitsunari@cybozu labs)
  4. Piece of a Puzzle - Weblog - Shibuya.JS の Mozilla 24 出張イベント行ってきた。
  5. Mozilla24 on Flickr - Photo Sharing!
  6. Mozilla 24にスタッフとして参加 // 起業家・Webデザイナー・SE→CIOを目指しつつの大学生のアレ
  7. Mi manca qualche giovedi`? - Shibuya.JS in Mozilla24 行ってきた
  8. 404 Blog Not Found:LiveCodingに学ぶプログラミングの三原則
  9. Mozilla24 - A・Fool・O
  10. はこべにっき# - Mozilla24でLiveCodingしてきました
  11. snsn9panの日記 - mozilla24のLive coding#4に参加してきたよ。
  12. Moziila24 行ってきた C-Shirts、Shibuya.js、LiveCoding - AUSGANG SOFT
  13. 最速チュパカブラ研究会 - 出張 Shibuya.js 24の資料
  14. ネットランダム - 出張 Shibuya.js 24に参加した
  15. littlestarlingの日記 - [Mozilla][JavaScript]Mozilla24に行ってきた
  16. o0^~o0~''~0o~^0o: o0 Mozilla24 出張 Shibuya.js 0o
  17. Sep 15 2007 :: 出張 Shibuya.js 24 「正しい Photoshop の使い方」 / nulog, NULL::something : out of the washer
  18. blog.8-p.info: Mozilla 24
  19. Gen Kanai weblog: Firefox Celica
  20. 煤 - Note : mozilla 24 (Shibuya.js)行った
  21. Google を Yahoo! に - A・Fool・O
  22. 出張Shibuya.JSいっていました - blog.katsuma.tv
  23. まさにっき(使えないプログラマーの記録) - mozilla24 行ってきたよ
  24. Nothing ventured, nothing gained. - Mozilla24終了
  25. 野人観察日誌: 出張Shibuya.js24
  26. 就職活動日記 * YTPD - Shibuya.js 24 行ってきました。
  27. mukakenの日記 - Mozilla24に参加してきました
  28. I am Cruby! - Shibuya.jsに行ったよ
  29. カラクレナイ - 出張 Shibuya.js
  30. カサヒラボ - インターネットのこれからを語る24時間連続イベント「Mozilla 24」が開催中
  31. A Better Project@はてなダイアリー - DocFest M24 参加レポ
  32. とりあえずなんですけどね - 2007-09-15
  33. lambda {|diary| lambda { diary = 1 } }.call(hatena) - Mozilla24 参加中 出張 Shibuya.js 24に行ってきた
  34. 文殊堂 - Mozilla 24 出張 Shibuya.js 24行ってきた
  35. SWDYH - 出張 Shibuya.js 24 AutoPagerize 発表資料
  36. うらもじら24
  37. Twitter / 哀 (i)/Hiro Kanai: 『Shibuya.js 24』と『ブラポロリ』は企業や...
  38. 出張 Shibuya.JS 24『Facebook.JS』発表資料(2007年9月15日)
  39. ECMAScript 4 » SlideShare
  40. ネットランダム - 出張 Shibuya.js 24に参加したの続き
  41. Taken SPC : 出張 Shibuya.js 24 Lightning Talk ビデオのプレイリスト作った
  42. ◆F99a.q8oVEの日記 - mozilla 24 の個人的まとめ
  43. エモーショナル昆虫 - 出張shibuya.jsに行ってきた
  44. jiroの日記 - 出張 Shibuya.js 24に行ってきた
  45. becomingの日記 - 出張Shibuya.js24
  46. slw/brd-s on htn_00oo00_ - 三連休でした
  47. IT戦記 - Shibuya.JS の資料「The next genaration of browsers」公開
  48. Mozilla24 / Shibuya.JS Lightning Talks by ma.la
  49. 日記/2007-9-18 - W4M: Wiki for me - 俺のためのWiki
  50. 【Mozilla 24】IEやFirefoxなどブラウザベンダーがユーザーを交えてディスカッション
  51. 出張 Shibuya.JS 24(Mozilla 24)に参加してきました Kawa.netブログ(川崎有亮)/ウェブリブログ
  52. porori24.txt
  53. Mozilla24行ってきた : fublog - 2007-09-18
  54. Mozilla24 出張Shibuya.jsでjQueryの話をしました。
  55. 最速インターフェース研究会 :: Mozilla24でしゃべってきました
  56. Latest topics > Mozilla 24オワタ! - outsider reflex
  57. 最速チュパカブラ研究会 - Shibuya.js 24関係のビデオ
  58. とりあえずなんですけどね - 2007-09-18
  59. 徒然 SBS - TUREZURE SBS: Mozilla24 イベント打ち合わせ
  60. エンジニアにも黄色い声援を(Live Coding #4) - テクノロジー解放日記 [ITmedia オルタナティブ・ブログ]
  61. the time ship - 「出張 Shibuya.js 24」に行ってきました

FlashLite難読化どう書くか?第2回モバイル勉強会

第2回モバイル勉強会にて、FlashLiteの難読化について発表してきました。

そのときの発表資料を若干修正してSlideShareにアップロードしました。

途中のデモに失敗してgdgdになっていたりするので、ustream.tvの動画の方はあんまり見ないで下さい。(><)

自分はモバイル業界ではありませんでしたが、他の方の発表も非常に面白かったです。

下の写真は小飼弾さんのケータイを使ったプレゼンを再現したものです。

第2回モバイル勉強会

総勢12名の発表者のみなさん、会場を提供してくださったECナビさん、イベントを取り纏めてくれたmemokamiさん、ustream.tvの中継を見てくださったみなさん、どうもありがとうございました。

2007年09月15日

Mozilla24リアルタイム中継(shibuya.jsもあるよ)

既に申し込みを締め切ったMozilla24のshibuya.jsイベントですが、今回ウタゴエさんによるリアルタイム動画配信がオフィシャルに行なわれているようです。いつもありがとうございます。

Mozilla24 オンラインで参加

OceanGrid はMozilla 24 後援企業であるウタゴエ株式会社によって開発された P2P 技術を応用したグリッド型ライブストリーミング配信システムです。グリッド型ライブストリーミングとは、同じライブ中継を視聴する視聴者間で直接ライブストリーミングのデータをリレー送信することで大規模なライブ中継を実現するためのシステムです。

OceanGrid + Windows Media Player ベルサール九段 日本語音声

12時半頃、自宅のネットワークからアクセスしたところ、安定してストリーミングを視聴することができました。

この調子でずっと見れるといいですね。あと、チャットルーム(IRC)もあるみたいです。

2007年09月14日

Linux Conference 2007ストリーミング中継

現在開催中の Linux Conference 2007 ですが、ストリーミング中継で発表の様子を見ることができるようになっています。

vlc_lc2007.jpg

[専用URL]   http://www.linux.or.jp:8000/lc2007.ogg(終了しました)

[実施期間]  Japan Linux Conference 2007開催期間
- 9月13日(木) 午前10時半から午後7時15分まで
- 9月14日(金) 午前10時半から午後4時まで

ストリーミングは「Ogg/Theora, Vorbis」形式です。自由なソフトウェアの立場としても非常に綺麗なフォーマットです。Linux環境ではmplayerなどで試聴可能だと思います。

自分のWindows環境では VideoLAN VLC media player 0.8.6c をインストールして中継を見ることができました。

2007/9/14 14:43頃より、中継機器の不具合によりストリーミング配信が停止していたようです。 Lightning Talksのセッションはとても面白い発表が多かったので、とても残念です。(><)

中継スタッフのknokさん、関係者の皆さん、ありがとうございます。

2007年09月13日

core dumpするコードの短さを競う「Core Golf」

まめめもさんの core golf のエントリー(6/27)より
さて、core dump するコードの短さで競う core golf はゲームとして成立するでしょうか。明らかに環境や処理系に依存するのでルールの決め方が難しいです。とりあえずうちでは core dump した C のコード (15B) 。もっと短くなる?

core dumpの定義はいろいろあると思いますが、とりあえず手元の環境 CentOS Linux x64_64 で segmentation fault が起きるコードで。

(1) C言語で core dump

早速、core dumpした5byteのCのコード。 (via. λx.x K S K @ はてな - core golf

main;
実行結果
$ echo -n "main;" > a.c && cc a.c && ./a.out 
a.c:1: 警告: データ定義が型や記憶クラスを持っていません 
a.c:1:6: 警告: no newline at end of file 
zsh: segmentation fault  ./a.out

コンパイラの警告は出るけどちゃんと実行バイナリができて、それを実行するとsegmentation faultしてくれます。

(2) Perlでcore dump

正規表現でsegmentation faultを起こすのが簡単かな、と思ってトライ。Perlで22byte。
(via. [perl #33945] Segmentation fault with deep recursion in regex engine

$x=qr/(??{$x})/;""=~$x
実行結果
$ perl -e'$x=qr/(??{$x})/;""=~$x' 
zsh: segmentation fault  perl -e'$x=qr/(??{$x})/;""=~$x'

barewordを使ってもよければもう1byte節約することができますが、とりあえずここまで。

(3) Rubyでcore dump

ruby-devのMLには、最新のrubyをcore dumpさせるコードがたくさん投稿されているようです。以下、手元の環境で再現した5byteのコードです。
(via. [ruby-dev:31085] 0..:" dumps core

0..:"
実行結果
$ ruby -e '0..:"'
-e:1: unterminated string meets end of file
-e:1: empty symbol literal
-e:1: [BUG] Segmentation fault
ruby 1.8.5 (2006-08-25) [x86_64-linux]

アボートしました

最強言語 Ruby ?

あと、Ruby 1.8系では正常に(?)core dumpできませんが、Ruby 1.9 では 4byte で core dump 可能なコードもいくつか報告されているみたいでした。 もしかしたら最新のリリースビルドでは再現できないかもしれません。

$ ruby -e '$&;[]'
$ ruby -e '$`;0'
$ ruby -e '$1;0'
$ ruby -e '{*0}'

ということで、現在 Ruby 1.9 が 4 byte で Core Golf 最強になっていますが、3 byte 以下で core dumpできる処理系をご存知の方がいらっしゃいましたら教えてください。

2007年09月10日

ITpro Challenge!でニコLT発表してきました

2007年9月7日(金)東京ドームホテルB1Fで開催された「ITpro Challenge!」に行ってきました。 先着70名までという超プレミアムなイベントでしたが、ライトニング・トークスでの発表の機会をいただき、私も参加することができました。 東京を直撃した台風により多摩川がバッファオーバーフローしていたにもかかわらず、会場は満席で大盛況でした。

私がApacheモジュールを書く理由「wafful.org」

LTの発表に使用したスライドのサムネイルを一部公開します。

wafful.org wafful.org wafful.org wafful.org wafful.org wafful.org wafful.org wafful.org

発表内容を全部録画したデータは後日公開されると思いますので、時間の関係で今回詳しく話せなかったこととして、 Apacheのフィルタモジュールを書くときに参考にした情報について補足しておきたいと思います。

Apache2から用意されたライブラリ APR (Apache Portable Runtime) そのもののチュートリアルはネット上にいくつか存在しているのですが、 フィルタモジュールを書くために必要な Bucket Brigades について詳しく解説しているまとまったドキュメントはほぼ皆無だったりします。 Bucket Brigades - APR (Apache Portable Runtime) Utility Library のマクロ定義Apacheのソースコードを追いかけて理解するしかなかったのですが、なぜこのようなデータ構造が必要だったのかは、Bucket Brigades: Data Management for Apache 2.0 のプレゼン資料(PPT形式)から察知することができます。

また最近では、Apache2のフィルタモジュールの書き方が載った本が出版されていたようで、 英語ではありますが、ネット上に分散している情報をうまく本一冊にまとめた感じです。

The Apache Modules Book
The Apache Modules Book


ITpro Challenge! 発表内容

  • How we built Lingr(江島健太郎さん)
  • ハッカーのソフトウェアエンジニアリング(鵜飼文敏さん) - ukai's blog
  • ベンチャー指向プログラマ(伊藤直也さん)
  • ニコニコ動画の創りかた(戀塚昭彦さん) - koizukaの日記
  • Lightning Talks(ライトニング・トークス)
    • GPSケータイを使った新しい位置情報サービス「doodle」「Which?」のご紹介(石丸健太郎さん)
    • Alinous-Core(飯塚友裕さん)
    • 風呂グラミング(増井雄一郎さん)
    • 「来週金曜」「明日3時」で登録可能なカレンダーの提案(古川大輔さん)
    • 開発環境と言語(氏久達博さん)
    • 思いやり駆動開発(五十嵐邦明さん)
    • wikia - 新しいコンテンツ作成の在り方(福澤俊さん)
    • もう一つのRIA、アプレットサーバシステム(柳瀬隆敏さん)
    • ニコニコ市場ができるまで(溝口浩二さん、木野瀬友人さん)
    • もう一つのTDD … チケット駆動開発(松岡浩平さん)
    • 私がApacheモジュールを書く理由「wafful.org」 竹迫良範さん)
    • Yappoハックの歴史(題字TKSK)(大沢和宏さん)
    • RESTの勝利宣言。私はいかに(勝手に)RESTの広報を行ってきたか(山本陽平さん)
  • 懇親会でプレゼン
    • 突発的にいろいろ

2年ぶりのppencodeその後

その後の懇親会のお店でプロジェクターが接続できる!ということで突発的にプレゼン大会が行なわれたのですが、 そこで2年前のLLDNで公開したppencodeとその後の世界進出についてプレゼンしました。 ppencodeの発表以降otsuneさんの観測対象としてウォッチされることになり、その後、私の人生は一転しました。感慨深い作品です。

Perlで予約語プログラミング - まちゅダイアリー (2007-09-09)

そのときの発表の様子を録画した動画が、まちゅさんの手によって早速ニコニコ動画にアップロードされてました。 いろいろコメントがついているようで、ありがとうございました。 はてなブックマーク - ニコニコ動画(RC)‐Perlで予約語プログラミングもありがとうございます。

ppencode世界進出の歴史

  1. ad-hocな人生 - TAKESAKO (仮) - ppencode公開しました
  2. TAKESAKO @ Yet another Cybozu Labs: YAPC::Asia 2006 Tokyo 2日目
  3. TAKESAKO @ Yet another Cybozu Labs: Happy Birthday 鳳たん!
  4. TAKESAKO @ Yet another Cybozu Labs: ppencode欧州進出
  5. TAKESAKO @ Yet another Cybozu Labs: ppencode buzz at OSCON 2006

その他の発表内容を録画した動画は、後日YouTube・ニコニコ動画にアップされる予定です。

2007年09月05日

ついカッとなってGopherサーバを立ててみた

gopherは非常に簡単なプロトコルのため、 telnetでGopherサーバにアクセスする方法 もお手軽です。HTTPと比べて、バイク小屋の議論となるようなサーバシグネチャもありません。

そういうのの相手するくらいならhttpdはぜんぶ捨ててgopherに戻りたい…。
(gopher対ゲイツ様 : ひろ式めもちょう)

今日はなぜか空前のGopherブームでしたので、「昔のgopher時代に戻ったらどうなるのか」を真剣に考えるため、実際にGopherサーバを立ててみました。

gopher://wafful.org/

gopher://wafful.org/ (※ Firefoxやlynxでアクセスできます)

どう見ても時代に逆行していますが、 私達が今JavaScriptを弄っているのも10年前の技術の再発見に他なりません。 もしかしたらそこに新しい未来が開けている可能性があるのかもしれません。

追記:Web2.0時代のGopher新サービス

GopherSnake

Gopher専用ソーシャルブックマークサイト「GopherSnake」が早速ローンチしてました。tokuhiromさん、相変わらず仕事が速すぎです。


■ GoFish - Gopher/Web Server

2005-10-21 に最新版 1.1 がリリースされている GoFish Gopher Serverを使ってみることにしました。他のGopherサーバソフトウェアは既に配布を終了していたり、10年に更新を停止してたりするので、非常に危険です。でも、GoFishなら./configureもついてます。今でも十分通用しそうです。 sourceforge.netから最新のgofish-1.1.tar.gzをダウンロードできます

CentOS 4.xでビルドしたソースRPM

自分が今メインで使っているサーバがCentOSなLinuxのため、RPMパッケージが欲しかったのでした。 rpmfind.netでgofishを検索すると0.29のバージョンまでしかでてきません。 1.0以降のspecファイルがメンテナンスされていないようでしたので、 最新の gopher-1.1 に対応したRPMパッケージを作成しました。

gopher経由で配布していますので、gopher対応クライアントより入手してください。

残念ながらrpmコマンドやwgetコマンドはgopherプロトコルをサポートしていませんが、lwpのGETコマンドやlynxはgopherに対応しています。 w3mはgopherに対応していません。 追記: w3mは./configure時に --enable-gopher を付けてコンパイルすれば gopher 対応になるとのことでした。(ukaiさん、yshlさん、ご指摘ありがとうございました。)

gofishサービスの再起動

$ service gofish stop
$ service gofish start

インストール時の注意事項などのBKは、すべてgofish.specファイルに記述しております。

■ gofish.spec ファイル(抜粋)

Summary: GoFish Gopher Server
Name: gofish
Version: 1.1
Release: 1
License: GPL
Group: Networking/Daemons
Source: %{name}-%{version}.tar.gz
URL: http://gofish.sourceforge.net/
BuildRoot: %{_tmppath}/%{name}-%{version}-root
AutoReqProv: no
Conflicts: gopher, gopherd

%description
GoFish is a simple gopher / web server. It is designed with security
and low resource usage in mind. GoFish uses a single process that
handles all the connections. This provides low resource usage, good
latency (no context switches), and good scalability.

GoFish runs in a chroot(2) environment. This means that GoFish can
only serve files from the root directory or below. While GoFish must
run at root privilege to be able to use port 70, it drops to a normal
user while accessing files.

%prep

%setup -n %{name}
%configure

%build
%{__make}

%install
%{__rm} -rf $RPM_BUILD_ROOT
perl -p -i.bak -e 's{(daemon /usr/sbin/gofish).*$}{mkcache -r -c /etc/gofish.conf && $1 -d -c /etc/gofish.conf};' init-gofish
perl -p -i.bak -e 's{^;(root|logfile|pidfile|port)}{$1};s{gopherd\.}{gofish.};' gofish.conf
%{__make} DESTDIR=$RPM_BUILD_ROOT install
%{__mkdir} -m 0755 -p $RPM_BUILD_ROOT/etc/rc.d/init.d
%{__install} -m 0755 init-gofish $RPM_BUILD_ROOT/etc/rc.d/init.d/gofish
%{__mkdir} -m 0755 -p $RPM_BUILD_ROOT/etc/logrotate.d
%{__cat} <<EOF> $RPM_BUILD_ROOT/etc/logrotate.d/gofish
/var/log/gofish.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
}
EOF
%{__rm} -f $RPM_BUILD_ROOT/etc/gofish-www.conf
%{__rm} -f $RPM_BUILD_ROOT/usr/bin/check-files

%clean
%{__rm} -rf $RPM_BUILD_ROOT

%post
if [ "$1" = 1 ] ; then
    %{__chown} gopher /var/gopher
    /sbin/chkconfig --add gofish
    /sbin/service gofish start 2>&1 >/dev/null
fi

%preun
if [ "$1" = 0 ] ; then
    /sbin/service gofish stop 2>&1 >/dev/null
    /sbin/chkconfig --del gofish
    /sbin/chkconfig --del gofish
fi

%files
%defattr(-,root,root)
%doc COPYING README INSTALL NEWS AUTHORS ChangeLog
/usr/sbin/gofish
/usr/bin/mkcache
/etc/rc.d/init.d/gofish
/etc/logrotate.d/gofish
%{_mandir}/man1/*
%{_mandir}/man5/*
/var/gopher/icons/*
/var/gopher/.gopher+
/var/gopher/.cache
/var/gopher/Configure_GoFish
%config(noreplace) /etc/gofish.conf

どうぞご利用ください。