てきとうなメモ

本の感想とか技術メモとか

YAPC::Asia 2008 1日め

とりあえず

  • スライドとかupされていたので追記

Welcome to YAPC::Asia 2008 - Tatsuhiko Miyagawa

  • Encountered a 404 error
  • 開会の挨拶
  • 去年は437名で今年は569名参加している.他のYAPCに比べても最大.
  • しかしPerl Mongersは50人程度.ここにきたら自分もPerl Mongersと思ってほしいとのこと

TPF Introduction - José Castro (cog)

A Standard That Is Meant To Be Broken, 本当に! - Larry Wall

  • Larry Wall御大によるPerl6のParsingの紹介
  • Perl6のsyntaxはmethodとして記述する
  • 文法自体が拡張可能.
    • +-演算子を持つように拡張したPerl文法をPlusMinusPerlとすると,以下のように解釈される.
{
  use PlusMinusPerl;
  +-$x;  # (+-)$x
}
+-$x; # (+(-$x))
  • ダメージ最小主義.
    • global scope is bad. lexical scope is good
    • source filters are bad. macros are bad.
  • COREもなく,キーワードもない
  • ... =, !..はメタオペレータ
    • "foo" !ne "bar"とか 3 !< 5aとか

拡張可能な言語というのは面白いけど,いろんな言語が混在するのは読みにくいような.もちろん,読みにくくすることができるだけで,そんなことをする必要はないのだけども.

perl5.10を使うべき510の理由 - Tokuhiro Matsuno (tokuhirom)

  • はてなブログ
  • Perl 5.10の紹介.あと,Perl 5.10使えよという話
  • タイトルは急遽変更.といっても510も理由があったわけではない
  • 2008には5.12.0がでる
  • Perl 6.0.0 ...
  • Perl 5.8と互換性があるので安心してほしい
    • 唯一だめだったのはIngyのXXX.pm
  • say.改行コード入れなくてよくなった
  • dor operator
use feature qw/dor err/;
$c = $a // $b; # if defined($a) ? $a : $b
  • state variable (Cの静的変数のようなもの).以下のコードでカウンタができる
sub incr {
  state $i = 0;
  return $i++;
}
  • switch
    • Switch.pmはあったけどもsource filterなのでうまく行かない場合もあった.
    • switch構文は正規表現なども使えていいよ
  • smart match operator
    • リストの中に存在するかとか
    • サブルーチンの実行結果が真であるかとか
  • named capture
s/(?<letter>.)\k/$+{letter}/g
    • $1, $2ではなくハッシュ%+に名前付きで入れる
    • pythonにあったなあ.あと%+はちときもい
  • -Eオプション = -e + perl 5.10 features
  • stacked filetest
    • これのこと

Perl 5.10からは、-Xを重ね打ちすることもできるようになりました。

% perl -le 'print (-f -x shift)' /usr/local/bin/perl
1

重ね打ちした場合、全ての条件が1の場合に1になります。すなわち

my $is_executable = -f -x $filename;

my $is_executable = -f $filename && -x _;

と等価ということです。

404 Blog Not Found:perl - stat()、-X 演算子、そして _ ファイルハンドル
  • others
    • misc attribute decoration
    • $AUTOLOAD can be tainted
    • ...
  • more
    • stat() on windows
    • relocatable installation
    • overload re-blessed reference
    • ...
  • CPANPLUSが標準モジュールに入ったので,それに依存するモジュール(たくさんある)も標準モジュールに入った.
    • Time::Pieceなど
  • Audreyとかのプレゼンからコピペしました
  • 質疑
    • misc attribute decorationって何
    • 知らない.othersの辺はつっこまないで.

PSL = Perl as a Second Language - Dan Kogai

  • 404 Blog Not Found
  • Perlがfirst languageでない人のためへのPerlの紹介
  • どうして外国語を学ぶのか
  • languages pay more attention to particular subjects
    • 中国語は従兄弟という言葉の表記が8通りある
    • 英語は三単現のsがめんどい
  • 他の言語を見ることで自分の言語を見直せる
  • Perlが他の言語とどこが似ていてどこが似ていないのか
  • perl is like python and ruby
print 'hello, world'
    • 必要ないことは書かなくてよい
  • perl is like scheme
    • y-combinatorが書ける
  • perl is not like ruby or smalltalk
    • すべてがobjectであるわけではない
    • autoboxがあるけど
  • perlオブジェクト指向が組み込まれていないけど,どう実装しているのか見ることができるので,perlオブジェクト指向を学ぶべきだ
  • そもそもオブジェクトって何
    • 自分が何をできるかを知っているデータ
  • blessしたrefereneによる実装
  • InsideOutによる実装
  • Mooseによる実装
  • Perl自然言語のようにcontext-oriented languageである
    • 演算子,関数によってデータの解釈が変化する
"1" + "1" # 2
1 . 1 # "11"
print localtime()
print scalar localtime()
  • B::Deparseを使うとコンテキストがわかる
  • Perlはみんなのためのもの.perl使っている人のためだけにあるわけではないよ

JavaScript Love for Perl Hackers - Ingy döt Net

  • Ingy döt Net
    • INGY DOT NET
    • Ingy d?t net
    • Ingy dt net
    • Ingy d♨t net
    • mr. net
  • any questions?
  • 今日話すこと
    • vroom
    • pQuery
    • pQuery::Dom
    • 中貝.pm
    • JS.pm
  • Vroom
    • vimでプレゼンテーション
    • CPANにupしました
    • Perlのシンタックスハイライトやアニメーション(リストを徐々に表示する)ができる
  • pQuery
    • Javascript without jQuery is like perl without Moose
    • jQueryと同様の処理を書く,selector, action, each
    • pQueryの良さは?
      • Perlだから
      • 大文字で書くとDOMの配列を扱える.
PQUERY(@urls)->find()->EACH(sub {...})
  • 中貝.pm
    • Ingyは中国語の勉強をしているので,そのために作ったモジュール
    • 中貝 ... 中貝.pmを利用するツール
    • use utf8しているので漢字が使える
    • 中国語の辞書ソフトみたいで,英語,中国語,読み,その単語を引くことができる
    • pQueryを使って,辞書をスクレイピングしてローカルにキャッシュしているのかな
  • JS.pm

Working in the cloud - Leon Brocard (acme)

Step 3: Prophet - A peer to peer replicated property database

  • Jesse Vincent
  • Cloud Computingは小作農だよ.他人のインフラを借りて開発している
  • clとsvkやrtを開発している
  • clと顔を合わせなければならないけど,遠いよね.じゃあ,真ん中をとってハワイで.
  • prophet - syncable database
    • 8000 lines
    • semirelational
    • pear-to-pear replication
    • disconnected
    • versioned
    • property database
    • self-healing collision resolution
  • semirelational
    • joinは実装していない.高コストなので
  • pear-to-pear
    • どのレプリカに対してもupdate/pull/push/publishの操作が行える
    • 変更はレプリカにpropagateする
  • disconnected
    • リアルタイムに更新しない
    • いつでも更新することができる
  • versioned
    • 変更は記録される
    • undoできる
    • ヒストリを見ることができる
  • property database
    • RDBのように固定的なスキーまではなく属性と値
  • self-healing conflict resolution
    • resolutionを覚えておく
    • resolutionをsyncする
    • vote
  • sd
    • simple bug tracker
    • id,status summary, comments history, attachments
    • foreign replicaにsyncする.foreign replicaはsd以外の外部システムのレプリカ.
    • rt, hiveminder.comなど.web apiのみで簡単に実装できた
  • prophetは何に利用できるか
    • 小規模のデータベースに
    • CRM, blog, bug tracking, trading card database, sales orders, phone book
    • private sns
  • replica type
    • subversion
      • 遅い
    • filesystem
      • readableで速いが,完全にatomicではない
    • HTTP
    • foreign replica
  • まだ作ったばっかり(10日)

最後らへん速かったのでちょっとよくわからなかった.

Easy system administration programming with a framework - フレームワークでシステム管理プログラミングをもっと簡単に - Gosuke Miyashita (mizzy)

puncmasterd マスタ
puncd スレーブ
punc コマンドラインツール
    • マスタがスレーブに命令して,スレーブはモジュールを実行し結果をマスタに返す.
  • モジュール
  • 抽象化レイヤ
    • Pfacter
    • puppetのfacterを真似た
  • Punc/Func/Puppetの違いは
    • puppetは静的でPunc/Funcは動的に情報を取得する

Let's enjoy Perl on the %^H - Kazuhiro Osawa (Yappo)

  • YappoLogs
  • %^H ... hinthash
    • $^H(hintbits)の親戚.コンパイラにヒントを与えて動作を変える
    • autoboxなどで利用されている
  • BEGINフェーズで実行される
    • レキシカルスコープにしたい
    • $^HにHINT_LOCALIZE_HHのビットを立てる
  • perl 5.10では(caller())[10]でhinthashを取得できる
  • dan.pm
    • コンテキスト(空気)を読まない
    • 置換(痴漢)する
    • encodingする時にフックをかけることができるらしい

Lightning Talks

String::TT - Jonathan Rockway (jrockway)
  • www.jrock.us
  • heredocsは便利だけども醜い
    • インデントが汚く見える
  • TT+heredocs = String::TT
  • tt q{...}
  • strip tt q{}でインデントしてもスペースを削る
  • source filterではなくメソッド
  • Sub::Exporter
  • 同じ名前のスカラー,配列,ハッシュが存在するが,TTは名前のみ
    • remappingする
収支概算を公表します - Hiroyuki Oyama
Open Fastladder with Plagger - Daisuke Murase (typester)
Everybody wanna know where you belong! - Kenichi Ishigaki (charsbar)
  • Charsbar::Note
  • CPAN Authors 6650
  • Japanese 201
    • 登録された名前と日本人っぽい名前を数えている
    • Japanese CPAN Authorのトップ10
      • blogにupするそうです
Developing Amazon's Dynamo in POE and Erlang - prologue of "From POE to Erlang" - Takeru INOUE (takemaru)
  • たけまる
  • Dynamo
    • amazonの分散データベース
    • memcachedのデータが消えないバージョンのようなもの
    • 小さいデータに特化している
  • POEとErlangで実装してみた
    • Erlangの方が実装しやすかった
    • MoosX::POEだとそれっぽくかけるのではというつっこみも
Perl (Perl Machine) - Kazunari Asano (wakapon)
Text::MicroMason::SafeServerPages - cho45

‎- テンプレートエンジンいやだ

    • 新しい言語を覚えたくない
    • erbっぽい埋め込みで
  • Text::MicroMason
    • Perlのコードを埋め込む
    • TTよりも速い
  • Text::MicroMason::SafeServerPage
  • Text::MicroMason > TT
  • Tenjin > Text::Micromason > TT
WebService::Simple - Yusuke Wada (yusukebe)
  • ゆーすけべー日記 v1
  • 最近CPAN Authorになった
    • CPANAuthors::Japaneseに追加した
  • WebService::Simple
    • [POX over HTTP - naoyaのはてなダイアリー:title=POX over HTTP]を扱うモジュール
      • getだけのsimpleなweb api
    • デフォルトでXML::Simpleでparseするが,他のparserも指定できる
  • lestrratに書き換えてもいい?て聞かれてokしたら,ほとんど書き得られてしまった
Ingyの
prototype::signatures - Chia-liang Kao (clkao)
  • Perl6っぽいメソッドのシグネチャをPerl5で実装しようという話
takesakoさんの