メイン

2009年04月21日

[Debug Hacks] #66.手元のx86マシンが64bitモード対応かどうかを調べる

本日オライリージャパン様より「Debug Hacks――デバッグを極めるテクニック&ツール」の献本をいただきました。著者の皆様、出版社の皆様ありがとうございます。

とりあえず、ざっくりと気になる章だけをかいつまんで読んでみたのですが、最後の章「#66.手元のx86マシンが64bitモード対応かどうかを調べる」では、/proc/cpuinfo で lm の文字列を探す方法と、以下のような CPUID 命令を発行して今自分が使っているマシンのCPUが64bitに対応しているかどうかを調べるハックが紹介されていました。

#include <stdio.h>

void cpuid(int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) {
  __asm__("cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (op));
}


int main() {
  unsigned int eax, ebx, ecx, edx;
  cpuid(0x80000000, &eax, &ebx, &ecx, &edx);
  if (eax < 0x80000001) return 0;
  cpuid(0x80000001, &eax, &ebx, &ecx, &edx);
  if (!((1<<29) & edx)) return 0;
  printf("64bit Long mode is supported.\n");
  return 1;
}

ただし、このハックの問題点は、CPUが64bitをサポートしているかどうかだけをチェックしていて、実際に64bitロングモードか32bitのx86互換モードで動いているかどうかを検出できないことにあります。

そこで、現在のCPUが64bitロングモードで動作しているかどうかをチェックする簡単なPerlスクリプトを書いてみました。

#!/usr/bin/perl

use DynaLoader;

sub x86_sub {
	my ($func, $x86) = @_;
	if ($^O eq "linux") {
		require 'syscall.ph';
		syscall(&SYS_mprotect,(unpack"L",pack"P",$x86)&~4095,4096*2,7);
	}
	DynaLoader::dl_install_xsub(caller(0)."::$func",unpack"L",pack"P",$x86);
}

x86_sub check64bit => do {
	our $LM64bit = "?";

	"\xb8\x31\x00\x00\x00".    # mov eax, 0x31

	"\x48".                    # dec eax // 64bit REX PREFIX
	"\xa2".pack("P",$LM64bit). # mov [$LM64bit], al
	"\xc3";                    # ret

};

&check64bit();

warn $LM64bit; # "0" => 32bit, "1" => 64bit

これは、DynaLoader::dl_install_xsubでx86の機械語を直接実行させるサブルーチンを定義して、64bitロングモード特有のREX PREFIXを解釈するかどうかで判別している方法になります。32bitのx86互換モードでは dec eax が実行され $LM64bit='0' となりますが、64bitロングモードではこのような1byte decは解釈されず、直後のmov命令のREX PREFIXを指定することになるので、$LM64bit='1' となります。

したがって、x86_64対応の「Intel(R) Xeon(R) CPU E5430 @ 2.66GHz」が搭載されているマシンでもCentOS 5.2(i386)のような64bitに対応していないOSで動かしてしまっている場合は、32bitと判定されます。

本Hackはデバッグには関係ありませんが、普段スクリプト言語を書いておられる方にも興味を持っていただければ幸いです。

2009年03月27日

4/22(水)Shibuya.pm#11開催します

Shibuya.pmテクニカルトーク#11を2009年4月22日(水)に開催します。

とりあえず、仮のプログラムですが、告知&申し込みフォームを公開しました。

  • テーマ - "no Perl; use x86;"
  • 日時 - 2009年4月22日(水) 18:30-21:00 (18:00 開場)
  • 会場 - グラントウキョウサウスタワー23F リクルート本社サウスホール
  • 住所 - 東京都千代田区丸の内1-9-2 (JR東京駅 八重洲南口すぐ)
  • 料金 - 無料
  • 事前登録 - 申し込みフォームより受付開始しています(定員200名)
    http://shibuya.pm.org/blosxom/techtalks/200904.html

会場はリクルートMTLの川崎さんにお世話になりまして、机付きの200人規模の大きな会場を使わさせていただくことになりました。ありがとうございます。

ちなみに今回のプログラムは XS Nite のときよりも低レベルになる予定です。正規表現やPerlに詳しくない方でも安心して聞ける内容になると思います。現在お使いのプログラミング言語を問わず、ふるってご参加ください。

2009年03月24日

Pure Perl で Acme::x86::CPUID を作りました

Perlでアセンブリプログラミングしているとき、実行マシンのCPUを判別してプログラムの処理を分岐したいときがでてくると思います。

そういうときに困ってしまわないように Acme::x86::CPUID を作ってみました。

package Acme::x86::CPUID;

use DynaLoader;

sub ProcessorBrandString {
	my $cpu = "\0" x 48;
	my $x86 = ""
	. "S\xbf" . pack("P", $cpu)
	. "\xb8\x02\x00\x00\x80"
	. ("P\x0f\xa2\x89\x07\x89_\x04\x89O\x08\x89W\x0c\x8d\x7f\x10X\x8d\@\x01" x 3)
	. "[\xc3"
	;
	DynaLoader::dl_install_xsub("X",unpack"L",pack"P",$x86);&X;
	$cpu =~ s/\0+//g;
	$cpu =~ s/^ +//;
	$cpu;
}

### print Acme::x86::CPUID::ProcessorBrandString, "\n";

1;

DynaLoaderはPerlコアに標準でバンドルされているとっても便利なモジュールです。

※ Acme::x86::CPUID は 100% Pure Perl で書かれているため、別途CコンパイラやXSモジュールなどをインストールする必要がありません。

■ 実行結果

以下、手元にある複数の環境で Acme::x86::CPUID::ProcessorBrandString の値を調べてみました。

※ Linux/Windows/FreeBSDのx86環境でそれぞれ動作確認しましたが、それ以外の環境ではシステムがクラッシュする可能性がありますので実行はお勧めしません。

1. WindowsXP(32bit) - ブログを書いているDELLデスクトップ

Intel(R) Pentium(R) 4 CPU 3.40GHz

2. CentOS5.2(i386) - wafful.org で使用しているVPSレンタルサーバ

Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz

3. CentOS4.4(x86_64) - Linux/AMD64 の開発環境

AMD Opteron(tm) Processor 240 EE

4. FreeBSD(i386) - 奥さんから借りている jail 環境

Intel(R) Pentium(R) 4 CPU 3.20GHz

うまく CPU の情報を取ってこれているみたいですね!

■ まとめ

次回Shibuya.pmで発表の機会があれば、この辺の DynaLoader を活用した基礎的なテクニックを簡単にお話ししようと思います。

XS Niteよりも低レベルな内容ですので、Perlや正規表現に詳しくない人でも安心して聞けると思います。どうぞご安心ください。

2009年03月23日

Shibuya.pmリーダーとしてインタビュー取材を受けました

Shibuya.pmリーダーとしてインタビューを受けた記事が公開されましたので、ご報告です。

参加者の成長を見守る、Shibuya.pm 2代目リーダー − @IT自分戦略研究所

参加者の成長を見守る、Shibuya.pm 2代目リーダー − @IT自分戦略研究所

記事トップの写真は、プロカメラマンの大星直輝さんによる撮影です。 自分でもびっくりするほどかっこよく撮っていただきありがとうございます。

インタビューを受けたのは 「@IT自分戦略研究所 今週のリーダー」という面白い企画で、 技術者経験があり、現在はリーダーもしくはマネージャ的な役割を果たされている「若手リーダー」にインタビューし、その経験、リーダーシップに対する考え方を紹介し、それを通して読者に「リーダーシップとは何か、どうすれば身に付けられるのか」を伝える企画だそうです。

次はどんなリーダーの方の記事が掲載されるのか楽しみですね。

アイティメディアの長谷川さん、素晴らしい記事をありがとうございました。

ちなみに、次回Shibuya.pmは4月にテクニカルトークを開催する方向で準備を進めていますので、どうぞご期待ください。

■ 参考文献
  1. TAKESAKO @ Yet another Cybozu Labs: Shibuya.pmリーダ交代式@バソキヤオフ
  2. Shibuya.pm と私 - にぽたん研究所

2008年11月28日

Shibuya.pm#10お疲れ様でした

Shibuya Perl Mongersテクニカルトーク#10無事、終了いたしました。 雨の中にもかかわらず、サテライトの会場にお越しいただいた皆様、 現地の会場までお越しいただいた皆様、本当にありがとうございました。

牧さんのJPA話

今回は福岡・大阪・京都・御茶ノ水などの複数の箇所での パブリックビューイングも初めて公式に開催しましたが、 ustream.tv の中継もトラブルもなくうまくいき(cojiさんありがとうございました) 気付いたときは視聴者数が 200 viewers を越えていました。

各サテライト会場でホスト役を務めてくださった会社の皆様(ネットエージェント様、はてな様、Fusic様、SST様)、本当にありがとうございました。 また、いつも素晴らしい会場を無償で貸し出していただいているIIJの皆様(今回は特に堂前さん)、本当にお世話になりました。

当日のプログラムはこんな感じで…

  • 第一部 Main Talks
    1. 18:30 TPF-J(仮)について (lestrrat) 発表資料
    2. 18:50 初心者向け Perl OO 講習 - LL温泉報告 (tokuhirom)
  • 第二部 特別企画「最速Perlフレームワーク研究会」
    1. 19:00 Benchmark of Perl Web Application Frameworks (hidek)
    2. 19:10 Yacafi と見せかけて Module::Setup の話 (Yappo)
    3. 19:15 MENTA (tokuhirom)
    4. 19:20 NanoA (kazuho) 発表資料
    5. 19:25 Catalyst の次は Mojo ? (charsbar)
    6. 19:30 質疑応答/休憩
  • 第三部 Demo Talks
    1. 19:45 "remedie" pluggable media center application (miyagawa)
    2. 19:55 "kamaitachi" perl flash media server (typester)
    3. 20:10 ウェブサービスにおける SSD の使い方 (kazuho) 発表資料
  • 第四部 Lightning Talks
    1. 20:25 Moxy at Dwango(仮) (acotie)
    2. 20:30 EC2 と S3 で Hadoop する (lopnor)
    3. 20:35 SVありーな概要 (wakapon)
    4. 20:40 Acme::Acme::Don't 2.0 (gfx)
    5. 20:45 EBCDIC 2.0 Binary Hacks (takesako)
    6. 20:50 Yokohama.pm 活動報告 (clouder)
    7. 20:55 京都観光を終えて (mala)

このように滞りなく進行できたのも、すべて発表者の方々の準備とご協力のおかげです。 wakaponさんが事情により当日会場に来られなかったというアクシデントが一つありましたが、 それ以外は大きな問題はなく、無事時間までに終了することができました。

家に帰ってブログを書くまでがShibuya.pmということで、 ぜひ今回のテクニカルトークで感じたことなどを書いていただけると有難いです。 今後の運営の参考にしたいと思います。

早速、講演録画がニコニコ動画にアップロードされたようです。(cojiさん、いつも仕事が速くて素敵です) → http://www.nicovideo.jp/mylist/9691133

読んだブログの記事は感想リンク集に追加していきたいと思います。

続きを読む "Shibuya.pm#10お疲れ様でした" »

2008年11月26日

Shibuya.pm#10前夜祭パブリックビューイング

Yokohama.pm#3の前夜祭であるShibuya.pm#10の前夜祭であるHEcon#1のパブリックビューイングを視聴しています。

茄子カレーを食べながらust視聴 中継に見とれてアクシデント発生→このあとスタッフがおいしくいただきました

HTTP::Engine アツいですね。明日も楽しみです。

2008年11月18日

Shibuya.pm#10「最新Perlフレームワーク特集」

Shibuya Perl Mongersテクニカルトーク#10「最新Perlフレームワーク特集」を2008年11月27日に開催します。

  • 日時 - 2008年11月27日(木) 18:30-21:00 (18:00 開場)
  • 会場 - 神保町三井ビル 17F 株式会社インターネットイニシアティブ (IIJ) 大会議室
  • 事前登録 - 以下の参加フォームからお申し込みください (定員100名)
  • URL - http://shibuya.pm.org/blosxom/techtalks/2008011.html

今回は普段Perl以外の言語(PHPやRubyやPythonなど)を使われている方にも楽しめる内容となるように、Perlのオブジェクト指向がスッキリわかる「初心者向け Perl OO 講習」や、Catalystだけじゃない!「Perlの最新Webアプリケーションフレームワーク特別比較」セッションを企画しました。その他、EC2 と S3 で Hadoop する話や、flash media serverのPerl実装のデモや、SSDで安価な検索エンジンを構築する方法など、Webサービスに関連する幅広い話題も取り扱っています。なお、今回は特別にインターネット中継では味わえないmiyagawaさんの特別セッションも予定されています。最近活発に活動を始めた新しいPerlコミュニティYokohama.pmの活動報告や、これから立ち上げを準備しているTPF-J(仮)の話も聞くことが出来ます。どうぞお楽しみください。

追記:パブリックビューイング会場のご案内

YappoLogs: Shibuya.PM tech talk #10 の申し込み間に合わなかった人への提案とust時代の勉強会の関わり方

  1. 大阪Shibuya.pm ustream中継 新大阪サテライト会場 - 葉っぱ日記
  2. 京都Shibuya Perl Mongersテクニカルトーク#10 京都サテライト開場のご案内 - antipop
  3. 福岡Fukuoka Perl Mongers: 「Shibuya Perl Mongersテクニカルトーク#10 福岡サテライト」開催のお知らせ

パブリックビューイング会場一覧ページ (by doumaeさん)

2008年06月25日

本日開催 Shibuya.pm#9 (通称:XS Nite)

Shibuya Perl Mongersテクニカルトーク#9 (通称:XS Nite) を2008年6月25日に開催します

  • 日時 - 2008年6月25日(水) 18:30-21:00 (18:00 開場)
  • 会場 - 神保町三井ビル 17F 株式会社インターネットイニシアティブ (IIJ) 大会議室
  • 料金 - 無料
  • 事前登録 - (定員100名) 定員に達したので締め切りました。 キャンセルが出たので下記で追加募集中
  • ストリーミング
  • プログラム 内容・順番・時間などは予告なく変更する場合があります。
    • 第一部「XS 概論」
      1. 18:30 はじめてのXS - ハマりどころはココだ (hirose31)
      2. 18:45 Perl 5 internals の世界にようこそ (Daisuke Maki)
      3. 19:30 休憩
    • 第二部「XS 若手の会」
      1. 19:50 Inside Ruby.pm (藤 吾郎)
      2. 20:10 PerlMachine (wakapon)
    • Lightning Talks
      1. 20:30 autobox.xs 徹底解説 (tokuhirom)
      2. 20:35 PL_check Hacks (Yappo)
      3. 20:40 arguments.callee の作り方 (TAKESAKO)
      4. 20:45 gdbでXS on mod_perlをデバッグ (stanaka)
      5. 20:50 Abstract Script Engines (Akira Higuchi)
      6. 20:55 Acme::PerlVMGolf (tokuhirom)

YAPC::Asia 2008 Tokyo で一部(※)人気だったセッションをもとに、今回は XS Nite と称して、これから XS を書いてみようと思う Perl プログラマの人を対象に、PerlとCライブラリとの拡張インターフェースを作るためのマクロ言語 XS だけについて語る XS only イベントを開催します。C言語で書かれた Perl 処理系の内部構造についても軽く中身をのぞいてみる予定です。

※一部の人に人気だったセッションという意味です。C言語の話がメインです。Perlのプログラムはほとんで出てこないと思います。このセッションの内容を近い理解するためにはPerlよりもC言語の知識が必要です。あらかじめご了承ください。

■ 追加募集

申し込み間に合わなかったけど参加したい人

キャンセルが2名でましたので、追加で参加募集します。 参加希望の方はこのブログのエントリーに「Shibuya.pm#9参加希望」と書き込んでください。 定員に達したらまた締め切ります。

(万が一SPAMコメントに分類されたらごめんなさい)

2008年02月29日

YAPC::Asia 2008 Tokyo について(デブサミ発表資料公開)

デブサミ2008「ネットコミュニケーション2.0」(旧称:竹迫アワー)のセッションで発表したLTの資料を公開します。

「地域コミュニティに国境はないかも」というタイトルで YAPC::Asia 2008 Tokyo について告知を行いました。

ちょうど今年のデブサミのテーマが 「越境しよう! コードで世界を変えよう」という題目だったので、 開かれたPerlコミュニティの実例を紹介しようと思いました。

地域コミュニティとITについては、地域格差と情報格差の問題が切り離せないのではないかと 最近思っていて、それを越境するためのYAPCかなと。

Shibuya.pmのコアメンバーである 宮川さん、台場さん、エマーソンさん、佐藤さん、小山さん、上之郷谷さん、 その他、スポンサーの皆さんのご協力により開催準備をすすめています。 本当にありがとうございます。

おかげさまでYAPCメイントークのCFPは〆切までに64件のサブミットがあり、 15社の皆様よりスポンサーシップのご協力をいただいているところです。

今年は2006年に引き続き Larry Wall も来日する予定になっていますので、 ぜひお見逃しなく。

2007年11月14日

Module-Starter-1.470

Module-Starter が 1.470 にバージョンアップしました。v1.470 より以前報告のあったmodule-starter を実行すると Unknown placeholder in Makefile.PL というエラーが出る問題は解消されました。

Revision history for Perl extension Module::Starter 1.46 Fri Nov 9 18:36 America/New_York 2007

[FIXES]
* undo some bugs introduced by changing API of subclassable "guts"
methods

ということで、今週から記事中の手順で問題なく module-starter が使えると思います。

$ module-starter --version
module-starter v1.470
$ module-starter --module=My::Yakudoshi
Created starter directories and files

バグ報告いただいた皆さん、ありがとうございました。

2007年10月29日

[訂正] Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro

2007/11/14 追記: Module-Starter-1.470 のバージョンアップによって、下記不具合は解消されました。 記事中の手順で問題なく module-starter が使えるようになっています。

以前、日経ソフトウエア2007.03(1月24日発売)に書いた特集記事Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro ──Webプログラミング初心者からの脱出の手引き としてITpro上で公開されましたが、その間にCPANモジュールのModule-Starterのバージョンアップがあって、module-starterが動作しない例がありました。

■ 問題点

module-starter を実行すると Unknown placeholder

in Makefile.PL というエラーが出る。

http://b.hatena.ne.jp/kits/20071023#bookmark-6249546
2007年10月23日 [perl][programming]module-starter --module=My::Yakudoshi したら Unknown placeholder
in Makefile.PL と言われた。
cpanを使ってみる - いつの間にか27歳日記
sudo perl -MCPAN -e shell
get Module::Starter
force install Module::Starter

が、いざ使ってみるとやっぱり。

Unknown placeholder <MAIN PM FILE> in Makefile.PL

むむ~~。

たしかに、最新の Module-Starter-1.44(Ricardo SIGNES 版)だとうまくいかない模様。

同様の指摘を古川さんよりメールでいただきました。

■ 解決方法

古いバージョンの Module-Starter-1.42(Andy Lester 版)をインストールする。

$ cpan P/PE/PETDANCE/Module-Starter-1.42.tar.gz

このようにすると、記事中の module-starter --module=My::Yakudoshi がうまく実行できると思います。

■ pmsetupを使う(別の解決方法)

正直、Module::Starter::PBP は Damian Conway臭が強すぎるので、結局自分でモジュールのテンプレートを弄るのであれば、 宮川さん作のpmsetupを使う手もあります。

テンプレートが一つのファイルにまとまっているのでカスタマイズが容易で、svkとの連携も簡単です。

pmsetup のインストール手順
$ wget http://svn.yappo.jp/repos/public/misc/pmsetup
$ vi pmsetup
$ sudo install -m 0755 pmsetup /usr/local/bin

実行には Template, YAML, Module::Install, Test::Perl::Critic の CPANモジュールが必要です。事前にインストールしてください。

$ cpan Template
$ cpan YAML
$ cpan Module::Install
$ cpan Test::Perl::Critic (エラーが出る場合はforce installしてください)

pmsetup初回実行時には以下の項目を聞かれるので自分用の設定を入力します。

Your name:  [] Yoshinori TAKESAKO
Your email:  [] takesako{at}shibuya.pm.org
Your svk base scratch DEPOTPATH: [//scratch] [] //scratch
Your svk base mirror DEPOTPATH: [//mirror] [] //mirror
Your workdir: [/home/takesako/tmp] /home/takesako/tmp
pmsetup でモジュールを作る
$ pmsetup My::Yakudoshi
$ cd My-Yakudoshi
$ perl Makefile.PL
$ make test
$ make manifest (MANIFEST の作成)
$ make dist     (tarball の作成)

これをカスタマイズして、自分用のpmsetupを作ってみるのもいいと思います。

  1. YappoLogs: 自分用のpmsetupを作った

以上、ご参考まで。

2007年10月24日

日経ソフトウエアのPerl/CGI記事がオンラインで公開

既にはてなブックマーク経由でご存知の方もいらっしゃるかと思いますが、 以前、日経ソフトウエア2007.03(1月24日発売)に書いた特集記事がITpro上で公開され、オンラインで読めるようになりました。

  1. Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro
    ──Webプログラミング初心者からの脱出の手引き
  2. 対談「初心者とハッカーが共存できるPerl」:ITpro
    ──KENT-WEB 見上氏 & Shibuya.pm 竹迫氏

また、ちょうど1年前にKENT さんと対談させていただいたときの記事も併せて公開されました。編集の皆様どうもありがとうございました。

2007年10月02日

続イメージファイト - HTML 2.0 New Browser Detection

Shibuya Perl Mongersテクニカルトーク#8 で発表した「続イメージファイト」の資料を SlideShare で公開しました。

Shibuya.pm#8 続イメージファイト - HTML 2.0 New Browser Detection

JavaScriptやCSS Hacksを一切使わずにHTMLでブラウザを判別するハックの紹介です。

HTML 2.0 - Browser detection [3]
HTML 2.0 only

ブラウザ判別のデモのページにアクセスすると、使っているブラウザの画像が表示されます。

このimgタグのsrc属性はfirefox2.0、firefox1.5、その他のGeckoエンジンを搭載したブラウザ、Safari2、Safari3、Opera、ie、w3m、lynxなどのブラウザの判別に対応しています。

テキストブラウザの判別
w3m - demo

この手法を使うと w3m と lynx の判別もできます。

lynx - demo
デバッグ風景
Debugging Browser-detection on papers

HTMLタグだけでブラウザ判別を行なう手法はまだ体系化されていないため、こんな感じで机上デバッグしてデモのコードを作りました。

参考文献
  1. ブラウザ振り分けクイズ - hoshikuzu | star_dust の書斎 (id:hoshikuzuさん)
  2. 葉っぱ日記 - ブラウザによって異なる画像を表示する(その2) (id:hasegawayosukeさん)
免責事項

ちなみに、ブラウザのバグや細かい実装に依存したハックは、ブラウザのバージョンアップによって覆される可能性が高いですので、一切無保証です。予めご了承下さい。

2007年10月01日

Shibuya.pm#8 ustream中継

2007/10/1は緊急地震速報本格運用開始、郵政民営化スタート、mixiリニューアル、babieさん人生の転機、と新しいスタートを感じさせる一日ですが、本日18:30よりShibuya Perl Mongersテクニカルトーク#8を開催します。

今回は、有志によるustream.tvのストリーミング中継を行なう予定です。

Shibuya Perl Mongers Technical Talk #8 - ustream.tv
  1. http://ustream.tv/channel/shibuya-pm (otsuneさんカメラ) - メイン中継
  2. http://ustream.tv/channel/shibuya-pm-slide (Yappoさんカメラ) - スライド専用

ustream.tvのアカウントを持っていれば、右側のIRCチャットにも参加できます。

スライドの文字を拡大して映した中継チャンネルも用意する予定です。

負荷的に大丈夫なのかどうか未知数ではありますが、どうぞご利用ください。

2007年05月10日

FizzBuzz - Golf Challenge

FizzBuzzプログラムを書くのが流行っているみたいなので私も参加してみることに。

Perl部門

1. 目指せ最短 (perl -eも含めて56byte)

perl -e'die+map{(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/}1..1e2'

※ perl -lオプションを使わずに最短を目指す。標準エラー出力がNGの場合はprintを使って57byteに

perl -e'print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..1e2'

anarchy golf - FizzBuzz で換算すると48byteでPerl最短 (perl -eを含めない)

print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..1e2

これだと perl FizzBuzz.pl と実行できて Code Golf に参加できます。

お約束の展開

2. ppencodeバージョンで

perl -e "print q q print q and print chr oct oct ord uc q map m and print chr oct oct oct ord uc q else and print chr ord uc qw q for q and print chr ord q tie gt and print chr length q x rename sethostent srand pack pipe setpwent syscall else eq split sleep endservent qw require symlink ne keys ord require x and print chr length q q splice srand getservbyname setnetent ne reset endprotoent foreach scalar rewinddir cos setnetent not else getprotobyname q and print chr oct oct oct ord uc q rmdir and print chr oct hex ord uc q dump and and print chr oct oct oct ord uc qw q binmode q and print chr oct hex ord uc q my m and print chr oct oct oct ord uc q oct no and print chr oct oct ord uc q rmdir and print chr oct hex ord uc qw q wait q and print chr oct oct ord uc qw q fcntl q and print chr oct hex ord q q eq and print chr ord uc qw q bind q and print chr ord q dump and and print chr length q q splice srand getservbyname setnetent ne reset endprotoent foreach scalar rewinddir cos setnetent not else getprotobyname q and print chr length q q splice srand getservbyname setnetent ne reset endprotoent foreach scalar rewinddir cos setnetent not else getprotobyname q and print chr oct oct oct ord uc q rmdir and print chr oct hex ord uc q dump and and print chr oct oct oct ord uc qw q bless q and print chr oct hex ord uc q my m and print chr oct oct oct ord uc q lc eval and print chr oct ord uc q each ne and print chr oct hex ord uc qw q wait q and print chr oct oct hex ord qw q die q and print chr oct oct hex ord qw q die q and print chr oct oct oct ord uc qw q binmode q and print chr oct hex ord uc q my m and print chr oct oct ord uc qw q bind q and print chr oct oct oct ord uc qw q binmode q and print chr oct oct ord uc qw q gt q and print chr ord qw q for q and print chr ord q xor x and print chr ord q or no and print chr ord q q q and print chr oct oct oct ord q eq ne and print chr oct oct ord uc qw q fcntl q and print chr oct oct ord uc qw q for q and print chr oct oct oct ord q eq le and print chr ord q ne sin and print chr hex ord q m alarm" | perl

※ perlの予約語だけでプログラミングした場合

他の Perl Monger の解答

3. 404 Blog Not Found:ブクマゴルフってどうよ? (66byte)

perl -le 'print $_%15?$_%5?$_%3?$_:Fizz:Buzz:FizzBuzz for(1..100)'

※オーソドックスな実装

4. ひおにっき(2007-05-09) [Program] FizzBuzz (56byte)

perl -le'print+(Fizz)[$_%3].(Buzz)[$_%5]||$_ for 1..100'

※インスパイヤの元ネタ。おそらくこれが最短でスマートな実装かも。hioさんの実装よりも短くしようと頑張ったけど、結局抜けませんでした。

5. Golf Challenge: FizzBuzz (この中から面白い実装をピックアップ)

perl -le 'print+($_,Fizz,Buzz,FizzBuzz)[3&19142723>>2*$_%30]for 1..100'

※ あとでググって見つけたページ。自分の解答もかぶっててちょっと悔しかったです。(><)

6. YappoLogs: FizzBuzzのPerlさいたんきろくたっせい(34ばいと) (Yappoさんのwarn実装)

perl -le'warn((Fizz)[$_%3].(Buzz)[$_%5]||$_)for 1..100'

※ FizzBuzz at -e line 1. みたいな表示になるけど、hioさんの実装より1byte短くなる

7. Acme::FizzBuzz を使えば、これ最強

SET PERL5OPT=-MAcme::FizzBuzz # MS-DOSの場合
setenv PERL5OPT="-MAcme::FizzBuzz" # tcsh系の場合
PERL5OPT="-MAcme::FizzBuzz"; export PERL5OPT # bash系の場合

※ 環境変数PERL5OPTを使う方法はmiyagawaさんに教えてもらいました。

perl -e1

やっぱりPerl最強です。Ruby や Python でもこの最短記録を抜けるのかな?

anarchy golf - FizzBuzz #Language Ranking ではPerlを抜いてBashが1位で43byte、すげー。どんなコードなんだろうか。興味津々です。

2007年04月07日

[YAPC] 正規表現にフォーカスしたPerl6入門

YAPC::Asia 2007 Tokyo で発表した資料を公開しました。

Yoshinori Takesako - s/ Perl5 Regular Expression / Perl6 Regex and Rule /mixes;

正規表現にフォーカスしたPerl6入門 - s/ Perl5 Regular Expression / Perl6 Regex and Rule /mixes;
Perlの黒魔術の一つであった正規表現。後付の拡張を繰り返した結果、問題解決の強力な武器に成長した反面、人間にも計算機にも読みにくい諸刃の剣にもなってしまいました。そこで再設計されたのがPerl6!
正規表現の書き方がPerl5からどのように変わるのか、これからPerl6のプログラムを書いてみようという人向けにわかりやすく解説します。

Software Design 2007年2月号の巻末特別企画「先取り Perl6正規表現カタログ ~ Perl5からの変更点を徹底解説!」の記事がベースになっています。

Perl6ではPerl5からの後方互換性は考慮しなくなったので、プログラムの書き方が変わっています。 したがって、Perl6の文法の他にPerl6での正規表現の書き方の事を知っていないと、 自分でPerl6のコードを書くときや人の書いたPugsのサンプルコードを読むときなどに困ってしまうことになります。 正規表現の部分はPerl6の実装の中で遅れているところではあります。最新のPugsやPerl6-Regexモジュールでまだ動作しない構文も多いですが、過去のしがらみを捨てて一から再設計して、人間にもコンピュータにもやさしい表現を目指しています。

Perlの正規表現が難しい、と言われてきた原因を再考するには、Perl6の言語仕様は非常に示唆的で良い題材だと思います。

2007年04月04日

YAPC::Asia 2007 Tokyo now on start!

YAPCのパンフレットが刷り上りました。手作り感溢れる作りになっています。

YAPC::Asia 2007 Tokyo 公式パンフレット

続きは会場で。

2007年03月27日

YAPCまであと一週間

YAPC::Asia 2007 Tokyo開催まであと残り一週間です。 参加される皆さん、準備の方はいかがでしょうか?

確認事項

津田ホール

今回のYAPCの会場は、前回の大田区PiOではなくって、津田ホールです。 CSS Nite LP, Disk 1の開催場所として使われた津田ホールです。 世界フィギュアスケート選手権が開催された東京体育館の隣の津田ホールです。

くれぐれもお間違えのないようにお願いします。

# 先週の Shibuya.esでは場所を間違えて秋葉原ダイビルに行ってしまった人が多数いたとか。。。

2007年01月24日

KENTさんとの対談写真が見れるのは日経ソフトウエアだけ

今日発売の日経ソフトウエア2007.03(1月24日発売)に特集記事を10ページほど書かせていただきました。

日経ソフトウエア2007.03(1月24日発売) 新春Perl対談「初心者とハッカーが共存できるPerl」KENT-WEB 見上氏 & Shibuya.pm 竹迫氏

特集:Webプログラミング実力アップ講座

生産性や品質に差が出る「プロの作り方」を学ぶ

  • Part 1.「初心者とプロはどこが違うのか」これが生産性と品質を上げるカギだ!(斉藤国博)RFCを読もう(大森敏行)
  • Part 2.「正しいPerl/CGIの書き方」Webプログラミング初心者からの脱出の手引き(竹迫良範)
  • 新春Perl対談「初心者とハッカーが共存できるPerl」KENT-WEB 見上氏 & Shibuya.pm 竹迫氏
  • Part 3.「Webアプリケーション・フレームワーク入門」(斉藤国博)
  • Part 4.「セキュアWebプログラミング入門」入力と出力・設計に潜むワナ(大垣靖男)
  • Part 5.「テストを自動化する注目のツールSelenium」こまめなテストがバグ早期発見の決め手に(笹谷真也)

「初心者のレベルから脱出できない」──そんな悩みを抱えているWebプログラマの方のために「プロのやり方」をまとめました。 プロのスキルを身に付けて1ランク上のWebプログラマを目指しましょう。

特集記事では、通常のPerl/CGIの解説書とは異なり、 いきなりModule::Starter::PBPを使ってPerl5のモジュールを作る方法から始めてみました。 テストファーストでクラスを設計し、Test::Moreで単体テストを先に書く。 モジュールの実装ではClass::Accessor::Fastを使ってアクセサを定義する。 POD(Plain Old Document)形式でソースの中にドキュメントを埋め込むこと、 そして、Module::Buildでパッケージングする方法について解説しました。

こうしてできたPerlモジュールを呼び出す形でCGIプログラムを作成し、 HTMLテンプレートエンジンとHTML::FillInFormを使って、 デザインと実装を分離するサンプルプログラムを作成しました。

今回、私が書かせていただいた記事の内容は以上になります。

フレームワークやWebセキュリティ、ブラウザのテスト自動化についてはPart 3.以降の記事に譲り、 Perlの有名なWebフレームワークであるCatalystCGI::ApplicationSledgeJiftySoozyなどについては、名前を紹介する程度にとどめました。 その他、minicpanや、perltidyによるソースコード整形、Perlで日本語の文字コードを扱うときの注意点としてjperlからjcode.plJcode.pmEncode.pmUnicode::Japaneseレガシーエンコーディングまでの 歴史と各サンプルプログラムを載せた原稿も書いたのですが、思いっきりページオーバーとなり、泣く泣くごっそり削除しました。 力及ばず、すみませんでした。

今回の私の担当編集さんは 東京の勉強会やカンファレンスでよくお見かけする 大森敏行さん でした。

大森さんは私にはない才能を持っていらっしゃる方で、個人的に尊敬申し上げている編集者の一人です。 私の原稿の提出が大幅に遅れてしまったにもかかわらず、忍耐強く待っていただき、 限られた時間の中で、キャッチーなフレーズと、わかりやすい図を描いていただき、 さらに綺麗で読みやすい文章の記事にまとめていただきました。 大変ありがとうございました。

新春Perl対談「初心者とハッカーが共存できるPerl」KENT-WEB 見上氏 & Shibuya.pm 竹迫氏

そして、去年の11月に:: KENT WEB - CGIスクリプト :: で有名な KENT さんと対談させていただいたときの記事が写真つきで載っています。 KENTさんの写真が見れるのは日経ソフトウエア2007.03(1月24日発売)だけです。 まだ見ていない方は、書店にゴー。Amazon.co.jpでも購入できます。

このたびは、このような貴重な機会を与えてくださり、ありがとうございました。

最新のネットランナーでPlaggerが紹介されてるっ

ネットランナー2007年2月号の記事の中で、Plaggerが紹介されていることを教えてもらいました。

ネットランナー2007年2月号 pp.72-75

おおお。本当に紹介されてる。

「オレ専用ポッドキャストで新着Youtube動画配信」という記事で、72ページ目から4ページまるごとPlaggerです。mizzyさんのハックが全面的に紹介されています。

しかもご丁寧にダウンロードサイトも開設されています。

ツール保管庫.net/2007年2月号 特集2
ツール保管庫.net/2007年2月号 特集2

編集部で用意した config.yaml とバッチファイルもダウンロードできるようになっていて、 ActivePerlのインストールから、Plaggerをタスクスケジューラに登録するところまで解説されています。 紙媒体のWindowsのインストール記事としては一番よくまとまっているのではないでしょうか。

こんなに早くネットランナーで紹介されるとはまさに想定の範囲外でした。 もしかして、Plagger Conference #1 での予言が進んでいくんでしょうか。

今後の展開に目が離せません。

2007年01月23日

オールドタイプのためのPlagger入門

SEA & FSIJ 合同フォーラム~オールドタイプのためのPlagger入門~で発表してきました。

秋葉原ダイビル夜景

場所は秋葉原ダイビル11F。夜景が綺麗でした。

主催:ソフトウェア技術者協会(SEA)、フリーソフトウェアイニシアティブ(FSIJ)

1. 日時: 2006年1月22日(月曜日) 18:30 ~ 20:30
          
2. 場所: 産総研秋葉原サイト 11F 会議室
         千代田区外神田1-18-13 秋葉原ダイビル 11F
         1101 室 産業技術総合研究所秋葉原サイト会議室

   交通: JR秋葉原駅より徒歩1分

3. 内容

  ・テーマ: オールドタイプのためのPlagger入門

    話者: 竹迫 良範 (サイボウズ・ラボ)

       Plagger は Perl で書かれたオープンソースの RSS/Atom アグリゲータ
       です。洗練されたプラグイン機構を持ち、様々なモジュールを組み合わ
       せることによって世の中に存在する様々なフィードを自分好みにカスタ
       マイズできます。
       宮川さん個人のハックから生まれた Plagger が、どのようにして作られ
       どのように成長してきたかを非公開スライドを交えながら面白おかしく
       紹介したいと思います。オールドタイプ以外のニュータイプの方も歓迎
       です。

平日の夜早い時間にもかかわらず、集まっていただいたみなさん、どうもありがとうございました。

オールドタイプな人はやっぱりすごかったです。 ツッコミも質問も的確。 物事の本質をきちんととらえていて、 今までのイベントで一番質疑応答の質が高かった気がします。

「PlaggerのCustomFeedは emacs-w3m shimbunインスパイアではないか」といった指摘や、 g新部先生の最後のネタ「ゴルゴ13は、Plaggerを使っているのではないか?」 は大変興味深かったです。

このたびは貴重な機会をどうもありがとうございました。

参加者の感想レポート

2007年01月18日

Perl6正規表現リファレンス(Software Design 2007年2月号)

今日1/18発売のSoftware Design 2007年2月号にて、巻末特別企画「先取り Perl6正規表現カタログ ~ Perl5からの変更点を徹底解説!」を書かせていただきました。

Software Design 2007年2月号 先取り Perl6正規表現カタログ ~ Perl5からの変更点を徹底解説!

記事については、難易度の設定が非常に難しかったのですが、Perl5から変更のあった記法を中心にピックアップし、 Perl6の一つの実装である最新のPugsで動作するサンプルを中心に正規表現の書き方を解説しました。 なので、Perl6の元々の仕様とは若干異なっている部分がありますし、正しくない部分もあるかと思います。 間違いがあればブログで指摘していただけると嬉しいです。

巻末特集は、毎回デスクトップリファレンスとして使えることを目指して書いていますので、 Software Design巻末リファレンスの正しい読み方 を参考に、冊子を作ってみてはいかがでしょうか。

Software Design巻末リファレンスの正しい読み方

他にも、柴田さんの「速報!Python 3000」の記事などもあり、 今月発売号のSoftware Designは、かなり先取りしてる感が溢れる内容になっていると思います。 OSSライセンスのわかりやすい解説や、コミュニティについての記事も面白かったですね。 OSASK河合さんのインタビューとか。 あと、親会社の「サイボウズに聞く、グループウェアの導入のツボ」という記事も載っていたりします。

そういえば、最近、gihyo.jpってサイトができたんですね。 大垣さんの「なぜPHPアプリにセキュリティホールが多いのか?」という Web媒体の記事も載っていたりして結構面白いです。技評さんのこれからの動きが非常に楽しみです。

追記:

アンケートに答えて LL Ring Tシャツげっと

読者プレゼントのページを見たら、なんとLL Ring Tシャツが出品されてるではありませんかっ。これにはびっくり。 ぜひアンケートに答えて限定Tシャツをゲットしてください。

2006年12月27日

Software Design巻末リファレンスの正しい読み方

現在発売中の技術評論社 Software Design 2007年1月号には、 id:hazy-moonさんが書かれたPlaggerプラグイン活用カタログが載っています。 これは、MyWiki.jp - plaggerドキュメント和訳(perldocの日本語訳)を ベースに応用例を含めてわかりやすくまとめられたもので、Plagger初学者の手引きとしてもよくできていると思います。

ということで、2005年から続いているSD巻末リファレンスの正しい読み方を実践してみました。

■ (1) 用意するもの

  1. 技術評論社 Software Design
  2. カッター(ナイフ)
  3. 定規(30cm以上)
  4. A4クリアファイル(下敷き)
  5. 2穴パンチ(JIS S 6041
  6. ひも もしくは フラットファイル(バインダー)
用意するもの

■ (2) カッターで切り取る

傷がついてもよいA4クリアファイルなどを下敷きにして、カッターで巻末リファレンスを切り取ります。

カッターで切り取る

■ (3) パンチで穴を開ける

2穴パンチで穴を開けます。小型パンチの場合は一度に穴を開けられる紙の厚さに上限がありますので、複数回に分けて穴を開けます。 このときカッターで切り取った部分の余白がなくなっていますので、少し穴を開ける位置をずらすのがポイントです。

パンチで穴を開ける

■ (4) フラットファイルに閉じる

クリスマスプレゼントの手編みマフラーの余ったひもで結ぶか、それを持っていない人はフラットファイル(バインダー)に閉じるかすれば、完成です。

フラットファイルに閉じる

どうぞご利用ください。

2006年12月08日

韓国語で「それPla!」ブログ

Planet Plaggerのフィードを眺めていたら、韓国語で書かれたPlaggerの記事を発見しました。

Senza 만화 ::: 소레Pla!

おおお。何が書いてあるのかサッパリわからなかったので、早速 Excite エキサイト 韓国語翻訳のお世話に。

Excite エキサイト 翻訳 : 韓国語翻訳>ウェブページ翻訳の結果
韓国語でPlaggerの説明

ふむふむ。自動翻訳の結果を要約すると:

韓国ではあまり使われないけど、日本ではウェブページの更新をチェックする「アンテナ」と言うプログラムがあって、2000年に公開されたWWWDとか、今でも1998年に公開されたなつみかんというCGIプログラムが使われていて、同じようなことをするはてなアンテナlivedoorチェッカーズなどのサービスも広く使われているみたい。

そこで最近よく聞くようになったのが Plagger という名前のソフト。

残念なことにPlaggerは韓国でほとんど紹介されたことがないけど、RSS DIY ツールとして、日本のウェブではかなり話題になっているプログラム。WindowsのGUIじゃなくって、Perlのプログラムなんだけど。日本では「それPla!」「それPlaggerでできるよ!」という流行語があって、自分はPerlよくわからないんだけど頑張ってインストールしてみました。

Bloglines2Gmail

すげーよ!Plagger動いた!


って、フタを空けてみると日本でよくみかけるPlaggerのインストール記事なんですが、韓国語というのが非常に新鮮で、読んでいる私にもその感動が伝わる記事でした。すばらしい。

わざとPlaggerのインストールを難しくしている甲斐がありましたね!miyagawaさん

ロシア語のPlagger紹介記事に引き続き、どんどん非英語圏の世界へも進出しているPlagger。もしも韓流サイトのCustomFeedが増えたりすると日本の主婦層のPlaggerユーザも新しく増えたりするのでしょうか。

2006年12月07日

Web2.0ワークショップでPlagger講演

Internet Week 2006 二日目の Web 2.0 ワークショップにて Plaggerのプレゼンをしてきました。
主催: 日本UNIXユーザ会 
日時: 12月6日(水)9:45-18:00 
会場: パシフィコ横浜 会議センター 502

◇◆プログラム◇◆ 

09:45 ウェブサービスの次世代とアマゾンのウェブサービス概念 
   エマーソン・ミルズ(アマゾンジャパン株式会社 ウェブサービス日本担当) 
10:30 Web2.0 時代のサーバ仮想化技術について 
   油谷曉(奈良先端科学技術大学院大学 情報科学センター) 
11:30 一歩進んだ位置情報~位置情報デバイスとデータストア~ 
   大塚恒平(「ここギコ!」ブログ管理人) 
12:30 昼休み 
13:30 非WebとWebのMashup - Web2.0がもたらす真の衝撃とは 
   小川浩(フィードパス株式会社) 
14:30 楽天におけるオープンソースソフトウェア活用への取り組みについて 
   川村敦(楽天株式会社) 
15:30 Plaggerで学ぶ、初めてのRSS/Atomアグリゲーション 
   竹迫良範(Shibuya.pl/サイボウズ・ラボ株式会社) 
16:30 パネルディスカッション: 動画共有サービスの現状と将来 
   時澤正(ワッチミー!TV)、山田由希美(GREE)、段野光紹(ClipLife) 
   司会: 小山哲志(日本UNIXユーザ会) 
17:30 終了予定

ワークショップのタイトルがWeb2.0ということなので、会場の皆さんにクイズを出してみました。

Quiz. どちらの猫がWeb2.0的か?

私なりの回答はこちら(会場の正答率は五分五分でした)

ワークショップの発表の様子を撮影した動画(最初の5分間)は日本の動画サービスのサイト上で後日公開されるそうです。

参加者の感想を見ると楽しんでいただけたようで安心しました。

ワークショップにご参加いただいた皆様に対しては、日本UNIXユーザ会のサイト上で当日使用した発表資料がダウンロードできるようになるそうです。今しばらくお待ちください。

このような貴重な機会をいただきありがとうございました。

2006年11月28日

KENTさんと対談しました

先日、日経ソフトウエア様の対談企画で、 :: KENT WEB - CGIスクリプト :: で有名な KENT さんと対談させていただきました。 このような貴重な機会を与えてくださった編集部の英断に感謝いたします。

KENTさんの最新著書:最速攻略 CGI/Perl 作り方入門「はじめに」より

もし、他人が書いたPerlプログラムのコードを見て、残念なことに その未熟さを批評する人がいたとしたら、実は彼自身のほうが未熟です。 彼はPerlが何たるかを理解していないからです。

この言葉の書かれているページにKENTさんご本人のサインをいただきました。ありがとうございます!

最速攻略 CGI/Perl 作り方入門

Perlの哲学でもあるTMTOWTDI (There's more than one way to do it.) のスローガンは Perlのコミュニティの中でも浸透していて、 There's more Dan the way to do it. といった形式で今もその一端を見ることができます。

続きを読む "KENTさんと対談しました" »

2006年11月20日

大阪Plagger入門セミナー終了

大阪でのPlagger入門セミナー、無事に終了しました。

KOF2006でのPlagger入門の様子

今回は意図的に「Perl」というキーワードをタイトルに盛り込まなかったのですが、セミナー会場は満席で、立ち見が出るほどでした。 後から教えてもらって気付いたのですが、現役女子高校生な方もPlagger入門のセミナーを受けにきていたとかいなかったとか。 同じ時間帯の裏では「Haskell」と「PostgreSQL」のセミナーがあった中で、あえて「Plagger」を選んで来ていただき、ありがとうございました。

最後の5分はAzureStoneさんによるライトニングトーク「Tor + Plagger」もあり、楽しんでいただけたのではないかと思います。

このような貴重な機会を与えてくださった、 関西オープンソース(KOF)2006のスタッフの皆さん、Kansai.pm (Kansai Perl Mongers)の皆さん、本当にありがとうございました。

2006年11月02日

Shibuya.pmリーダ交代式@バソキヤオフ

先日サイボウズ・ラボのオフィスを開放して、バソキヤオフを開催しました。

■バソキヤオフ

現在ではほぼ入手不可能と言われている幻のバソキヤ2006を集めて、
みんなで楽しく食そうという企画です。

バソキヤ

ロングテールの力を結集してみんなで持ち寄った未開封品バソキヤは全部で22個。壮絶です。

この日のためにわざわざ取り寄せたわさびラムネは40本、
大王わさび農場工場直送のわさびアイスもなか、わさび煎餅、
ねりわさび、タバスコ、梅干、ポテトチップス、などなど、みんなが
それぞれバソキヤのオカズになりそうなもの持ち寄って来ました。

詳しくは、サイレントマジョリティを考慮すればアルファブロガーさんが
バソキヤオフのレポートをまとめてくださっています。

- カイ氏伝: バソキヤオフまとめ
- カイ氏伝: バソキヤオフ動画レポート

ジョジョネタ、ツンデレ、YouTube、サイレントマジョリティの複合技をちりばめた
高度なエントリーに仕上がっています。グッジョブです!


■ Shibuya.pmリーダ交代式

バソキヤオフの後半では、11月からUSのサンフランシスコオフィス勤務となるmiyagawaさんの壮行会も敢行し、前人未踏のわさびマヨネーズ×4倍のバソキヤ世界記録にチャレンジ(動画)しました。日本を離れて辛いことがあっても、この動画を見ればきっと大丈夫です。これからも世界の最先端をリードするmiyagawaさんであり続けてください。さらなるご活躍を期待しております。

Shibuya.pm のリーダーから、新リーダーへ、バソキヤの杯が贈呈されました。

miyagawa to takesakomiyagawa to takesako
(写真:nipotanさん、otsuneさん)

手に持っているのはバソキヤ×4倍の杯です。このバソキヤを食えたPerl使いは成長するという伝説があるそうで、私も必死の覚悟で食べました。げふっ!げふっ!

この儀式をShibuya.pmの伝統として受け継いでいこうと思います。

ちなみに、前回のShibuya.pm#7で発表もあった通り、これでShibuya.pmのリーダをmiyagawaさんから正式に引き継ぐことになりました。miyagawaさんのいないShibuya.pmなんて面白くない…とDISられないよう継続的に活動を続けていこうと思います。Skypeでのリモート中継やりたいですね。

今後ともよろしくお願いします。

2006年10月11日

Shibuya Perl Mongers テクニカルトーク #7 参戦

ひさびさの Shibuya Perl Mongersテクニカルトーク#7 で私も一つ発表することになりました。

日時 - 2006年10月20日 (金) 18:30-21:00 (18:00 開場)
会場 - 神保町三井ビル 17F 株式会社インターネットイニシアティブ (IIJ) 大会議室
料金 - 無料
事前登録 - 120名 定員に達したので締め切りました。

プログラム 内容・順番・時間などは予告なく変更する場合があります。

1. Amazon Web Services, S3 and EC2 (Emerson Mills)
2. PMConnect: Perl-SpiderMonkeyバインディング(樋口 証)
3. Catalyst+Lighttpdテクニック (typester)
4. 実践 MogileFS 構築事例 ~ Catalystと一緒 ~ (ZIGOROu)
5. Lightning Talks
- Using Test::Base (宮川達彦)
- Apache わっふるモジュールで SQL injection 対策 (竹迫良範)
- ppm パッケージができるまで (charsbar)
- 俺とマッシュアップ (上野宣)
- 今空前のブーム第2部:deploy tool編 (松野徳大)
- CDBI to DBIC (nekokak:小林篤)
- 自然文書から日本の住所を頑張って抽出 (Yappo)
- svk による plagger プラグイン開発プロセス (mizzy)

私の発表内容は以下を予定しています。

Apache わっふるモジュールで SQL injection 対策 (竹迫良範)

昨今の脆弱性報告ブームにより、Webアプリケーションの脆弱性対策に頭を悩ましている人も多いと思います。本来あるべき論の修正についてはソフトウェア設計時に頑張って対策していただくとして、世の中にはいろんな理由があって脆弱性発見時の対応がすぐにできない場合もあります。本セッションではプログラム本体の書き換えなしにXSSやinjectionなどの攻撃を防御する手法について紹介します。

ふざけた名前に見えるかもしれませんが、当人は真剣です。名前の秘密は当日明かされるということで。

余力があれば、Apache バージョン 2 から導入された input フィルタ(Apacheモジュール)のC言語による実装についても少しだけ解説したいと思います。この辺の情報は日本語に限らず英語でもドキュメントが少ないような気がします…。

樋口さんもわざわざ北海道からお越しいただくことになっていて、他の発表も楽しみです!

それでは当日よろしくお願いいたします。

10/20 12:10 追記:
非公式でありますが、IIJ(i-revo)様のご好意により、
実験的にストリーミング配信が行なわれる予定です。
http://stream.i-revo.jp/event/shibuya.pm/

2006年10月06日

Internet Week 2006 で 「はじめてのPlagger講師」

12月に開催される>「Internet Week 2006」の2日目のカンファレンスでPlaggerの講師をすることになりました。

InternetWeek2006

Web2.0ワークショップ開催のお知らせ

タイトル: Plaggerで学ぶ、初めてのRSS/Atomアグリゲーション
講演者: 竹迫良範 (Shibuya.pl / サイボウズ・ラボ株式会社)

PlaggerはPerlで書かれたオープンソースのRSS/Atomアグリゲータです。
洗練されたプラグイン機構を持ち、豊富なプラグインを組み合わせることに
よって世の中に存在する様々なフィードを自分好みにカスタマイズできます。
設定ファイル(config.yaml)の書き方とその応用例について解説します。

時間: 60分程度を予定しています。

この日はmiyagawaさんの都合がつかないということで、ノーギャラで引き受けました。

タイトルの通り、対象者は今まで一度もPlaggerをインストールしたことがない人向けになります。もちろん「新しいWebサービスのアイディアを思いついたけど、それPlaggerでできそうなので、作るのやめました」と思っている人も大歓迎です。講師の代わりにいろいろ新しいアイディアを教えてください。

詳細のスケジュールは以下になります。

名称: Web2.0ワークショップ(Internet Week 2006 共催カンファレンス C5)
日時: 12月6日(水)10:00-17:00
主催: 日本UNIXユーザ会
場所: パシフィコ横浜 502
定員: 200名
参加料
 一般:\4,500 会員:\2,500 学生:\1,000(11/22までの事前登録料金)
 一般:\5,000 会員:\3,000 学生:\1,500(当日料金)

事前登録は Internet Week 2006 参加申込のページから。

1時間まるまるPlaggerの講師なんて初体験です。もしも発表が5分で終わったらすみません。(><)

2006年09月16日

今月号のSoftware DesignでPlagger特集

Shibuya.pl のみんなで、Software Design 2006年10月号でPlagger特集の記事を書きました。

セキュリティキャンプ2006のレポートも載っていて今回も面白い記事がたくさんです。

Software Design 2006年10月号

[Software Design本誌]SD2006年10月号 ここに注目!

■今回だけの特別企画!Plagger登場

さらに今月だけの特別企画!「俺流Plagger活用術」と題し,Plaggerを徹底的に使いこなすためのノウハウを伝授します.「それPlaggerで」と言われて,何だろう?と思った方,Plaggerに興味はあるけど調べる時間が…という方,もっともっとPlaggerを知りたいという方に朗報です.

Plaggerのしくみ,使い方,応用サンプル,Plaggerのこれから,etc.
Plaggerな方々による徹底解説をお届けします!

Plaggerの開発は非常に活発で、雑誌が出る間にインストールの記事の内容はもう古くなってしまっているのですが、Perlのソースコードのコンパイルから手順を書いているので、いろいろ応用はきくと思います。困ったときはフォースを使ってPlaggerをインストールしてみてください。

実際には各OSのrpmやdeb、PPMなどのバイナリパッケージを利用してインストールするのが一番簡単だと思います。

FreeBSD なら

portinstall textproc/p5-Plagger

のコマンド一発でOK。

Debian Hansode Package を使えば apt-lineを追加し、apt-getするだけでインストールが完了。

worepo は Fedora Core で yum install perl-Plagger できる素晴らしいリポジトリです。

http://ppm.tcool.org/ を使えば WindowsのActivePerlで PPM install が可能です。

どうぞご利用下さい。

2006年07月28日

ppencode buzz at OSCON 2006

オレゴン州ポートランドで開催中の OSCON 2006 (O'Reilly Open Source Convention 2006) 7/26 Perl Lightning Talks のセッションで、拙作の ppencode が紹介されました。

エンターテイナーはもちろんあの "鳳たん" AKA world wide ppencode Evangelist! :-)
今回で5回目の発表ということで、私よりもプレゼンが上手で完全に場慣れしています。

Pugs: RHOX slides available!
Oh, and I just discovered I have another lightning talk (ppencode) to give. Well, at least this one is just five minutes, and I already go the slides ready. :-)

参加者の反応も上々のようで、グッジョブです!

Notes: OSCON 2006
ppencode, by TAKESAKO Yoshinori: Fun, Fun, Fun! It will be a lightning talk, presented by Audrey Tang;
Under The Network: OSCON: Day One part 5
After that came the Perl lightning talks. These are a series of short presentations where individuals talk about interesting hacks or ideas relating to Perl. Audrey kicked it off by showing us a tool called ppencode. If you're not a Perl hacker it would have been pretty uninteresting, but the audience was roaring with laughter at her obscure jokes about the syntax of dynamic programming languages. Her slides were pretty slick too. Nice animation.
OSCON 2006: Day Three Recap :: canspice.org (2006/08/14 追記)
The last half of the afternoon was taken up by the “Perl Lightning Talks” hosted by Mark-Jason Dominus. As with most lightning talk sessions — which consist of mini talks that last five minutes or so — it was hit or miss. Audrey Tang was a hit, talking about ppencode. She also gave this talk at YAPC::NA, and part of it is on YouTube.

→ OSCONの発表の様子って誰か撮影していないかなぁ。私も見てみたい!

ということで、それまで待てないという奇特な方は YAPC::NA 2006 Chicago で一部撮影された動画で会場の盛り上がりの様子をお楽しみください。

YAPC::NA 2006 Chicago に行ってきました: blog.bulknews.net
6/26-28 とシカゴの IIT (イリノイ工科大学)で行われた YAPC::NA 2006 に参加してきました。
Lightning Talks では Audrey の ppencode プレゼンが大ウケ。YAPC::Asia の takesako さんのプレゼンが元ですが、もうこのプレゼンをするのは4度目らしい。芸人ネタになってます。

View Audrey's ppencode talk in YAPC::NA at YouTube

2006年06月20日

ppencode欧州進出

6月15~16日に開催されたNordic Perl Workshop 2006で、
拙作のppencodeが英語のプレゼンテーションにて紹介されました。

NPW'06 lightning talk.

I registered an impromptu lightning talk slot at the last moment, and delivered an English port of Takesako's highly entertaining ppencode talk. (I ported it from the original Japanese to Chinese for OSDC.tw this April, as noted in Takesako's blog.)
Although some of the humor were inevitably lost in translation, it seems to be well received -- people were certainly laughing a lot! The PDF slides and Flash slides are available, too.

翻訳・発表はPerl6/Pugsの凰たん。相変わらず Good job です!

ppencode
(※バイオハザードやジョルジュ長岡のスライドも健在です)

早速Perl Hacks: ppencodeなど、ヨーロッパのブログで話題に取り上げていただいております。
ありがとうございます。

NPW'06 は Norway の Oslo で開催されたとのこと。よく考えたら Oslo は最速ブラウザの Opera Software ASA の本拠地ではありませんか。日本の Shibuya.pm みたいな感じだとすると、Oslo.pm の活動が活発なのもよくわかりますね。

この調子で世界5大陸を制覇するまで頑張りたいと思います!

2006年04月18日

Happy Birthday 鳳たん!

今日は鳳たんの誕生日です!

Audrey Tangと言えば、Perl/Haskell界隈で知らない人はモグリと言われるほどの有名なCPAN Authorで、PAR/Pugsの作者、そして高橋メソッドを英語圏に輸出した人としても知られています。

そのAudreyたんから、Open Source Developers' Conference in Taiwan (2006/4/8,9)で、拙作の ppencode を紹介したよという連絡が先日IRC経由で入りました。

中国語(繁体字)バージョン、テラスゴスwww

ppencode OSDC.tw version
ppencode 中国語(繁体字)版(translated by 鳳たん)

ここまで忠実に翻訳していただけるとは思ってもいませんでした。感無量です。

13:08 (audreyt) takesako:
13:09 (audreyt) as promised I delivered this over OSDC.tw
13:09 (audreyt) to a greatly amused audience
13:09 (audreyt) thanks a lot for your slides :)

Auderyたん、こちらこそありがとうございます。身に余る光栄です。

OSDC.twの写真を見るとこちらにも楽しさが伝わってきます。YAPC::AsiaのTシャツを着るingyもカッコイイ!世界のあちこちで活躍しているAuderyたんを見ると、私も刺激を受けます。来年は私も台湾に行ってみたいです。


OSDC.tw版 ppencode 発表の様子

osdc_tw_takahashi.jpg
中国語(繁体字)の高橋メソッド

Happy Birthday 鳳たん!

ありがとう!


過去のエントリー


  1. 2005年11月06日 Journal of autrijus で Shibuya.pm が紹介されました
  2. 2006年03月28日 YAPC::Asia秋葉原ツアーで引率
  3. 2006年03月29日 YAPC::Asia 2006 Tokyo 1日目「Introduction to Pugs」の翻訳
  4. 2006年03月30日 YAPC::Asia 2006 Tokyo 2日目
  5. 2006年04月02日 YAPC Hackathon に参加してきた

2006年04月02日

YAPC Hackathon に参加してきた

YAPC::Asia のゲストである Larry、Audrey、Damian、Matz さんをはじめとするハッカー達 (総勢 20 人) によってYAPC Hackathon が行われました。

yapc-hackathon.jpg

場所は小飼弾さんの自宅

私も3/31~4/1の2日間Hackathonに参加して新年度を弾さん宅で迎えました。:-)

Hackathonの写真をぱるまの原稿に載せたり、エイプリルフールのネタを仕込んだり。

せっかくのチャンスなので、LarryとAudreyたんにお願いしてノートPCにサインをもらっちゃいました。

AudreyたんとLarry Wallと記念撮影

記念ショット。(nagayamaさん、Thanks!)

ちなみに英語ではサインのことを autograph と言うみたいです。

2004.01.09 「サインください」を英語で言うと?

用例

  1. May I have your autograph, please?
  2. Would you autograph your book for me?
  3. I want you to autograph my T-shirt.

日本語の直訳で「Give me your sign!」と言ってしまうと、別の意味の sign(星座?) と勘違いされたりする可能性があるので native speaker の方には通じないことが多いのだそうです。また、sigunatureだと、クレジットカードなどに署名するサインという意味が強いようなので、この例では不適切だとか。

2006年03月30日

YAPC::Asia 2006 Tokyo 2日目

YAPC::Asia 2006 Tokyo の2日目は2トラックに分かれて、最後のLightning TalksとClosing session(Larry's Keynote)は全員がホールに集まるというタイムテーブル

私はLightning Talksで「ppencode for Perl6 Perl lover」という5分間の発表をしてきました。

ppencode for Perl lover

発表時の音声ファイルは「YAPC::Asia 2006 Tokyo audio files」からダウンロードできますが、たぶん、音声だけだと何が面白いのかわくわからないと思います。

[追記] [Perl]YAPC::Asiaにいってきました その2より:

ppencode for Perl6

たぶんLightningTalkのなかで一番面白かったのではないかな、とおもう竹迫さんのppencodeのお話。あーさこーだいうより実物見たほうがいいと思います。

http://namazu.org/~takesako/ppencode/demo.html

予約語だけで入力されたテキストを表示しようというもうバカawardをあげたいくらいのバカです(褒め言葉)。どんなアルゴリズムだろうと思ってソース見たけどぷーでした。こんど暇があったら読んでみよう。

ほか竹迫さんはネタいっぱいなので思い出せるものを箇条書き。

  • ラリーとダミアンキターーー
  • デスマーチから抜け出すのにuse Rubyしよう
  • Ruby on Snails(snailはのろまとかいう意味)
  • Pair Management(Not Pair Programming)
  • UnreadableなコードでJobを守る。
  • これでFindJobとはおさらば!
  • 読みにくいコードといえば昔のコード
  • useとかstrictがなくてlocalしか使われていない某K*NT
  • 地球なAAのHello World
  • $と;キーをとればPerlHackerはRubyに行くんじゃね?
  • ppencodeデモ(文字コード3つ対応)
  • rrencode(ppencodeのRuby版)
  • これがPythonならpypyencode(ぱいぱいえんこーど)だね。
  • 上記の文字と同時にジョルジュ長岡出現。ここで見るとは思わなかったよ。

(aglieさんありがとうございます)公開資料のスライドには一部変更を加えています。

ナイアガラの滝で「ウォーターフォール 2006 カンファレンス」などをネタにさせていただきました。そのうち動画がYouTubeにアップロードされるかもしれません。

その他の発表資料はhttp://tokyo.yapcasia.org/wiki/?SlidesListからダウンロードできます。

なにはともあれ、去年の年末から準備してきたYAPC::Asia 2006 Tokyoのイベントが無事終了しました(まだ残りの作業があるけど)。スポンサー各社様、スタッフの方々、ボランティアの方々、参加してくれた皆さん、本当にどうもありがとうございました。

2006年03月29日

YAPC::Asia 2006 Tokyo 1日目「Introduction to Pugs」の翻訳

YAPC::Asia 2006 Tokyo の一番最初の発表「Introduction to Pugs」の翻訳を私が担当することになっていたので徹夜で作業。ギリギリになってしまいましたが何とか間に合いました。

pugsの紹介
Introduction to Pugs(高橋メソッド日本語版)

本当は英語の発表資料に映画の字幕のように日本語訳を付ける予定だったのですが、Audreyたんのアツイ要望で英語を極力排除した日本語onlyのスライドを準備することになりました。日本語のスライドを見せながら通訳なしで発表者がそのまま英語で話すというちょっと新鮮なスタイルでした。

Audreyたんが日本向けにテロップを付け直した動画motd.p6(日本語字幕)の翻訳も載せておきます。

Greetings. こんにちは。

This is Audrey, bringing you the message of the day from the pugs
examples/ dircetory as contributed by the lambdacamels.
Audreyです。今日は世界中のPugsの開発者達(λラクダ)から
pugsのexamples/ディレクトリに寄せられたメッセージをお届けします。

Pugs is stealing all the good ideas it can from other languages.
Pugsは他の言語から良いアイデアを可能な限り盗んでいます。

Pugs is providing the capability to evolve a little faster.
Pugsのおかげで、あなたは人よりも一歩先を行くことができます。

Pugs is not going to bite.
Pugsは噛み付いたりしません。:-)

Pugs is happening now.
Pugsは今も変わり続けています。

Pugs is a love letter to the Cabal.
Perl6の使徒達に向けたラブレターです。

Pugs is Perl 6, raised to the power of woot!
PugsはとにかくすっごいPerl6なんです!

Pugs is caching in the tuits.
Pugs は人々の抑圧されたハック魂を解き放ちます!

Pugs is sensitive (to semantic, pragmatic, and cultural context).
文法も、実用性も、これまでの歴史も大事にします。

Pugs is test-driven; it's going great shakes, and committed to change.
Pugsはテスト駆動ですっごく良くなっています。

Pugs is a proof of concept of a Perly functional programming language.
Perl的な関数型言語が実際に動くという証拠にもなりました。

Pugs is a hyperoperator applied to the collective Perl imagination.
Perlのイマジネーションをすべて結集した>>ハイパー演算子<<なのです。

Pugs is a grab-bag of new ways to shoot yourself in the foot.
Pugsではありとあらゆる方法で自分の足を撃つことができます。
とにかくハマること間違いなし(笑)

Pugs is keeping the wheels but reinventing the vehicle!
Pugsでは車輪の再発明をせずに乗り物を再発明してるんです!

この翻訳には大変気を使いましたが、私の力不足により、元の英語のニュアンスが失われてしまった部分も多かったと思います。YAPCの舞台裏ということで、ある1行の翻訳のやりとりの例を紹介したいと思います。

続きを読む "YAPC::Asia 2006 Tokyo 1日目「Introduction to Pugs」の翻訳" »

2006年03月28日

YAPC::Asia秋葉原ツアーで引率

YAPC::Asiaの前夜祭ということで、YAPC::Asiaに海外から参加する人たち向けの秋葉原巡礼ツアーに一緒に参加してきました。正しい日本の文化を伝えるために秋葉原のメイドカフェに行ってきたのですが、そこではDamian ConwayとAudreyたんと同じテーブルに座ることになってちょっぴり緊張。以前Software Design 2006年3月号でPerl6/Pugsの日本語紹介記事を書いたので、感謝の意を込めてAudreyたんに雑誌をプレゼント。Damianは日本語が読めないのでPerl6のソースコードを読んでうなずいたり、Audreyは自分の読める漢字を英語に翻訳したりして楽しんでいました。メイドカフェのテーブルでAudreyたんから直々にModule::Compileの裏話などを聞けてとても嬉しかったです。

その後自由行動になってDaveの付き添いで一緒に音楽CDを買いに行ったのですが、日本のインディーズROCKバンドのアルバムを探しに来ていて全然アーティスト名がわからず四苦hackしました。米国ではなかなか手に入らないんだと言っていましたが、それは日本でも入手困難です(笑)。結局石丸電気のSOFT 1で10枚くらいのアルバムをお買い上げいただいたのですが、日本の音楽CDの値段はとても高いと言って怒っていました。そりゃそうだ。


その後、夕方に成田空港に到着した組と合流してWiFi完備の居酒屋へ。秋元さんに通訳してもらいながらAudreyの明日のプレゼンをいち早く聴かせてもらう。話に夢中になりすぎて、自分のノートPCに飲み物がこぼれるというアクシデントがありましたが、すぐにバッテリーを外して乾かしたのでなんとか致命傷を避けることができました。音の再生速度が速くなって変な音が出てたんですが、数時間して再起動したら元に戻りました。NP :)

Audreyすごい!

YAPC::Asia 一番最初の発表「Introdution to Pugs」のスライド翻訳を担当していたので、わからなかったところをAudreyたんにやさしく解説してもらいました。顔につばがかかるぐらいの至近距離で。

私は幸せ者です。:)

そこで改めて感じたのがAudreyたんはとにかくすごい人だということ。バックグラウンドの知識の量が半端じゃなく、英語も流暢でボキャブラリーが豊富、しかもユーモアのセンスがある。それにキータイプのスピードが尋常じゃありません。こんなに一人で何でもできる人が世界にはいるんだと正直びっくりしました。発表スライドを全部日本語に置き換えたいとのアツい要望で、今夜は徹夜で翻訳作業と明日の準備です。

Audreyのプレゼンに聴き入る

翻訳で苦労した点、周りの人に助けていただいたエピソードは後日ブログにエントリーしたいと思います。

2005年12月16日

Yet Another Perl Conference Asia 2006 Tokyo

YAPC::Asia 2006 Tokyo を開催します (in English)

日時: 2006/03/29-30 (Wed-Thu) 10:00-19:00 (予定)
会場: 大田区産業プラザ (PiO)
料金: 3000円 (T シャツ込み・予定)
主催: Shibuya Perl Mongers

YAPC とは Yet Another Perl Conference の略で、あの Lightning Talks 発祥のイベントでもあります。本家のPerl Conferenceと違って参加費もTシャツ込みで3,000円と激安となってますので、興味のある方はぜひご参加ください。世界のPerlハッカー達に向けてプレゼンしてみようっていう方も随時募集中。

今回は縁あって私もイベント運営のお手伝いをしています。会場手配ではwakatonoさんに多大なるご協力をいただきました。この場を借りてお礼申し上げます。

来年の3月はこのイベントのためにあのオートリジャスも来日するとかしないとか。

今からとっても楽しみです!

2005年12月15日

ライブドア次世代テクノロジーセミナー第1弾

六本木ヒルズで開催されたライブドア次世代テクノロジーセミナーに、会社の同僚の秋元さんと一緒に行って来ました。

livedoor_seminar.jpg

当社は長い受託ビジネスやWEB開発から蓄積した、膨大な経験と実績を使い、現在UU14,336千人、月間約22億PVというポータルサイト 「livedoor」を構築するまでになりました。そこには飽くなきローコストへの挑戦と、多くの優秀なエンジニア、更には膨大なインフラを支えるネットワークエンジニアによる日々の汗と苦労の結晶です。今回は、それらの技術面及びインフラ面のノウハウの一端を、皆様の成功の鍵にしていただきたく紹介をさせていただきます。

定員50名の募集に対して、告知後数時間で150名超の申し込みがあった
いわば選ばれた者だけが参加できた貴重なセミナーでした。

■参加者のレポート

[システム運用] ライブドア 次世代テクノロジーセミナー
http://pmakino.jp/tdiary/20051213.html#p01

ライブドアの次世代テクノロジーセミナーに行ってきた
http://d.hatena.ne.jp/a666666/20051214

てくのーと2.0 : 六本木ヒルズ初上陸
http://blog.kan.vc/1134571006.html

どこまで公開してよいかわからないけど、当日の個人のメモを公開してみます。
(一部やばそうな内容は削除しています)

続きを読む "ライブドア次世代テクノロジーセミナー第1弾" »

2005年11月06日

Journal of autrijus で Shibuya.pm が紹介されました

miyagawaさんから教えていただいたのですが、PugsをHaskellで実装した天才プログラマーAutrijus Tang (唐宗漢)氏のJournalで、先日のShibuya.pmのセミナーの事が紹介されていました。

Last week's Shibuya.pm meeting features Catalyst, Ajax, Pugs and ICFP. Takesako-san did a nice presentation (PPT in Japanese) about Pugs, though some slides leaves me feeling excessively flattered. ;-)

Journal of autrijus: Eighth day at Liz's - Parrot interop.


続きを読む "Journal of autrijus で Shibuya.pm が紹介されました" »

2005年11月04日

Shibuya.pm テクニカルトーク#6でHaskellを語る

約1年ぶりに開催されたShibuya Perl Mpngers テクニカルトーク#6で発表してきました。

去年と同様IIJさんの大会議室をお借りしたのですが、途中、会場に人が収まりきらなくてパネルをぶち抜いて2つの会議室をつないだりしました。最終的に120人超のPerlモンガー達が一同に集まった模様です。さすが世界最大の.pmです。

私は「Pugsでお手軽Perl6入門」という題目で発表させていただきました。参加された方々の感想を見てみると「Haskellすげー」「モナディウスすげー」とか書かれていて、プレゼンの内容は果たしてこれで良かったのかどうか不安が残ります。(Perl関係ないじゃん、とか突っ込まないでください。)

これを機にPerl6Haskellに興味を持ってくださる人が増えるといいなぁ、ということでよろしくお願いします。

続きを読む "Shibuya.pm テクニカルトーク#6でHaskellを語る" »