Mitaka.rb #3 & Tokyu.rb #9 に行ってきた

連日だったので、まとめて。
小田急線沿いというどっちつかずの中途半端な位置に生息しているため、
両方に参加してきました。

以下、飲み食いしすぎで記憶がうつろですが覚えている限り。

Mitaka.rb #3

  • 会場: 三鷹のリトルスターレストラン
  • 30人以上でざわざわ。プログラマーズカフェの人々も多かった。
  • 料理はとてもとてもうまかった。食い過ぎで次の日腹痛かったのは内緒。
  • 5人ほどLT! After Ruby Kaigi!
  • Hamlの会会長、Director's cutで再び。削ったスライドからの質問が飛んだりとかw
  • btoさんの話は初めて聞いたことなので大変面白かった。

Tokyu.rb #9

  • 出席率高い!宴会席が満席に。
  • 大企業についての色々を聞いたり、RDBやkey-value, BigTableについてのよもやま。
  • 今のところは用途や特化すべきものによって使い分け。今後は?
  • Rails会議の話をしている横で組み込みクラスタが出来ていたりとカオス。
  • 会話がかなーりの濃度で、酔ってる暇なかった。
  • でも肉は食い過ぎて腹が(ry
  • 7人くらいで2次会へ。
  • サロンパスさんとひたすらbot談義。結構楽しそうな世界だ。
  • ウイスキー飲んでたら酔ってた。


どっち付かずな生息地なのに、参加させてくれてありがとうございます。
皆様お疲れ様でした!

日本Ruby会議2009に行ってきた

今年初参加です。
3日分の感想等まとめてアップ。それなりに長いけど中身は大してありません。

1日目

Scott Chacon from Github
  • 英語が早くてほとんど聴き取れず。スライドがわかりやすかった
  • gitの使い方や概念、git の運用パターンなど
  • 特にgitの運用パターンは参考になりそう。あとで穴が空く程動画見る。
  • Grit ruby-git library http://github.com/mojombo/grit/tree/master
  • Gitのホスト設定が超めんどくさいので自動化した。
現場で役立つRails (大場さん@万葉)
  • Railsの実装パターンや陥りやすい罠に対する対策などを解説
  • 見事にダメパターンな実装をしていたことがわかり、一人で凹んだw
Adherison (Jason Goecke)
  • 後ろの方で充電ついでにコード書いてたので、あんまり聞いてませんでしたごめんなさい。
  • でも、Ruby による自動応答アプリケーションのデモはすごかった。
  • http://adherison.com
Rails3 (Yahuda Kats@EngineYard)
  • 英語が堪能すぎて全く聴き取れませんでした。
  • スライドはとてもよかったので、もう一度見直す
  • とりあえず「Rails3はすげー変わっちゃうよ」ってことは把握
懇親会
  • サイン色紙が全員に配られた。「有名人にいっぱいサインもらってください!」
  • 恥を捨てていろんなところに突撃してきましたw 皆様ありがとうございました。
  • Matzのところには大行列ができていた
  • 英語圏の方々とは話す勇気がなかった。いくじなし・・・
  • id:ReLaxの中の人と遭遇したのが最大のびっくり!*1

2日目

Ruby1.8のゆくえ (卜部さん)
  • 1.8.7 は 1.8.6 と compatible ではないと思われている
  • 1.8.7 => セキュリティやバグ修正優先
  • 1.8.8 => 下位互換の予定。1.8系の機能としてはこれで完成
  • 1.8.9 => 出ない。
  • 1.9移行へむけて、1.9の文法がParse Errorになるのをなんとかしたい
Ruby1.9.2 (Yuguiさん)
  • 1.9.1 => もうすぐPatch release
  • 1.9.2 => preview release 1 (時期を聞き逃した)
  • 1.9.2の変更は割と地味。地味なのはいいこと。better than 1.9.1
  • 地雷が結構埋まってるので注意
    • dl: i386べったりの実装。ffiを元に再実装したい。
    • ripper
    • tk
    • irb
  • ライブラリで内部関数は使わないで欲しい ex) ParseTree library
  • Ruby 1.8 => 1.9 の互換性は Perl 5 => 6 より高いw
  • 非互換なのは、CharsetやC API, M17Nなど
  • ライブラリもアプリも、移植を開始して欲しい
  • 不満はパッチに変えてMLへ!
Ramaze(Mr. Michael & Mr. Uehara)
  • Michaelは日本在住 => Ramazeは国産?!
  • Rubyらしい書き方でアプリケーションが作成できる
  • Rack以外の依存モジュールはなし => Rackとは密結合
    • # 多くのモジュールを必要とするRailsやMerbとは逆方向ですね
Keynote (松本さん)
  • lvar_propagateのキモさに度肝を抜かれた。だが、@wycatsが興味を持ったらしい。
    • その後、マジックコメントを入れた時だけ挙動が変わるようなパッチが入ったらしい。
  • 公平になりましょう。
LT
  • Rubyでギャルゲー@万葉のインパクトがすごすぎて、あとはなんも覚えてません。


調布花火大会に行くため、ここで離脱。
終了後のBeer bustでRejectKaigi2009#1が行われたらしい。
jugyoさんyoshukiさんが話したようだ。後で見る。

3日目

TermtterKaigi
  • 企画部屋で行われていたTermtterKaigiに参加。http://jugyo.org/blog/3517
  • termtter解説とか今後の課題とか。ちょっと課題を思いついたので、そのうちパッチ書く。
  • 個人的にCygwinで少し使えるようにしておきたいんだが、環境が自宅にないのが難点。誰かWindowsください。
Macruby
  • 安定性ならRubyCocoa, 使ってみたいならMacruby 0.4, Crazyな人はMacruby0.5
  • 1.9ベースで作られているが、Ruby再実装みたいなことになっている。人が足りない。
  • 内部ではObj-Cのオブジェクトを使っている。NSStringとか。
  • MultiCoreが使えるので、超はやい
  • AOT Compilerが使える
RubyMac OS X開発 & iPhone
Haml and Sass
  • Haml
    • %p&= @user.name で h メソッドと同じようにエスケープしてくれる
    • endを付けるとエラーになるが、メソッドチェイン時のみ書く事ができる
    • 読みやすいし書きやすい!
  • Sass
    • Nested Rules
    • 変数宣言や設定値の演算が可能
    • mixingが可能。引数渡しもできる。
  • 1年ほど実務で使っても特に問題は出ていない
  • ursm先生のHaml愛が伝わって来た。すごく嬉しそうだった。
Take the Red Pill(角谷さん)
  • Rubyの良さははっきりとは説明できない
  • Rubyのよさは楽しいと言い切ったところがすごい
  • 無名の質
  • Rubyの楽しさの先にあるものを共有する。月を差す指を見るのではなく、月を見る
  • より多くの人が満足するためには?
Keynote(高橋さん)
  • Ruby, 日本Rubyの会の振り返り
  • 引退宣言かと思ってあせったが、どうやら2人いたらしい。3人目かも。
番外編
  • yoshukiさんの経歴をかいま見る。熱い話でした。
  • tatsuosakuraiさんの奥さんは美人でできた人らしい。
  • takiuchiさんとメガネが一緒だった!メガネスキーとしてはうれしい!!

まとめ

スタッフ、関係者の皆様、親しく接してくださった皆様、ありがとうございました。
また、参加者の方々お疲れ様でした!
来年はLTかスタッフ辺りから関わってみたいです!

後で見る

http://www.ustream.tv/rubykaigi/videos
ニコ動かなんかがアップされたらまとめよう。どれ見るべきか忘れる。

*1:訂正:id間違えてました。ごめんなさい。

Shibuya.lisp テクニカルトーク #3 に行ってきた

letの使い方を先月知ったようなLisp童貞ですが、勇気出して行ってきました。


発表はニコ動にアップされるらしいので、内容は割愛。
色々感じるところが多かったので、感想をダイジェストでお送りします。

Shibuya.lisp » Blog Archive » 2009/07/04 Shibuya.lisp テクニカルトーク #3 開催!!

オープニング

  • Shibuya.lisp ではスタッフとTalkerを募集してます!
  • 研究室にこもっている人も多いみたいなので、他薦もお願いします
    • なんかLispらしい悩みですよね。

世界一短いコードで web アプリ作成ができるフレームワーク開発 (松本さん)

JVM 日本語 Scheme インタプリタ Gino (ilma さん)

  • ずっとスタンドアロンで作成していた。他の処理系もソースコードは読んでいない。
  • エラーメッセージも親切
  • デバッグ機能。オプションをつけるだけで、評価順序を図で表してくれる
    • call/ccの処理順まで!!すげええええええええええ!使いたい!!
  • 年内に公開予定。

teepeedee2 fast lisp web server (John さん)

  • マクロで簡単にアプリケーション構築が可能なチャットサーバー

Inside c-wrapper (小黒さん)

  • GaucheからCライブラリを読み込むライブラリ
  • stub書くのが面倒だから、全部自動で作っちゃえ!
    • 発想が当然のようでものすごい。
  • マンガでわかるc-wrapper

(現場のScheme)と(Gaucheの進化) (川合さん)

  • 会場の半分くらいの人が処理系を作った事があるらしい
  • すぐに使える解決策、根本的な解決策
  • 前者をまず適用して、有効なら本格的にメンテ
  • とはいっても、根本的で地道な対策が大事
  • 「仕事で使える」ようにしたい。
    • 目から鱗。どんなものにでも適用できますね。

LT

Scheme on Ruby on Rails(yuum3さん)
  • Gauche on Rails => Scheme on RoR
  • Schemeっぽい文法でRoRを記述できるように!
    • 処理方法をぽわわんと考えてたら終わってた。ソースコードがうpされるの待ってます!
WebブラウザをインターネットOSのシェルにしてGaucheと対話する(源馬さん)
  • GaucheXMPPライブラリ
  • ブラウザをI/Oとして活用する
    • デモがすごい。
失敗したら会社終わるようなプロジェクトで本当にlispを使ってみた(mitamexさん)
  • PCトラブル。Windowsマシンの表示がおかしく。。。
  • 会場にWindowsマシンは数台しかなかった!パワポはなし!!
    • 実はあったみたいだけど、激しく盛り上がっていたので引っ張ってしまったらしいw鬼w
  • WindowsのピンチをMacが救った!
Emacs上での携帯絵文字の表示と入力補完(IMAKADOさん)
  • elispUnicodeを絵文字画像に変換
  • 各キャリアに対応。
  • 画像検索でanythingを使っているらしい。
    • こういうelispをさっと書けるっていいなあ・・・

懇親会

  • ()と[]の話
  • どの言語でも、「好きなものをとにかく読む/書く」というのは変わらないらしい
  • 言語論とかフレームワークの話とかテストの話とか盛りだくさん
    • Lisper/Schemer/Haskellerから見た他言語という視点がものすごく面白い。
    • どう面白いかは若干過激なので割愛。
  • JVM上でのJavaライブラリ呼び出しの話
    • SchemeJavaは文法も概念も大きく違うので、可能だけど悩ましい
  • Ginoのリリース期待してます!


すごい人だらけでした。
でも、抱えている問題とか困っていることというのはやはり同じなんですね。


スタッフ、発表者の皆様、からんでくださった方々ありがとうございました。
#4までにはもう少し自分のレベルを上げておこうと思います。

MongoDB,Tokyo Tyrant, CouchDBのベンチマーク記事

maihaさんの日記を見て、MongoDBのことを思い出したので関連しそうな記事の紹介だけでも。
ヽ( ・∀・)ノくまくまー(2009-07-02)


以下の記事で、3種のkey-valueストレージの性能比較を行っている。
Evaluating key-value and document stores for short read data « Blue Collar Bioinformatics


280万件のレコードを読み込ませ、その初期読み込み時間、レコードの読み込み時間、ファイルサイズの比較を行っている。

  • Tokyo Tyrant : 初期の読み込み時間が遅い
  • CouchDB: レコード読み込み時間が遅い
  • MongoDB: ファイルサイズが大きくなる

となったそうな。
ただ、Pythonのライブラリを経由した結果であること、コメントで様々なツッコミが入っているなど、どの程度信頼性のある数字なのかは読み取れてない。

読解力低くてごめんなさい。正確な情報は元記事を読んでください。

ともあれ

Rubyオブジェクト直接突っ込めるのは楽しそう。やってみよう。

create_functionはクロージャにはなれない

Rubyだとこんな感じで書ける

def counter
  i = 0
  lambda{|n| i += n}
end

count = counter
puts count.call(1) #=> 1
puts count.call(2) #=> 3
puts count.call(3) #=> 6


PHPの場合も同じ結果を期待したけど、クロージャとしては動いてくれないらしい。

<?php
function counter() {
	$i = 0;
	return create_function('$n',"$i = $i + $n;"); 
}

$func = counter();
echo $func(1); // Parse error: syntax error, unexpected '='
echo $func(3);
echo $func(5);


文字列をダブルクォーテーションで囲っているため、$iは文字列内で変数として評価されてしまう。
そのため、create_function内では以下のような式が入ることになる。

0 = 0 + 1

そりゃ動かないわな。

ちなみにシングルクォーテーションにすると、function内のローカル変数扱いになるため、外の変数は参照されません。

5.3のλ導入までは使えないってことですかね。

Sinatra勉強会@万葉に行って来ました

Sinatraという軽量フレームワークについての勉強会に参加してきました。

Sinatraの印象

フレームワーク全体の印象としては、簡単にURLディスパッチャーを利用するためのものという印象。
haml&sassやerbなどのテンプレートエンジンや、sequal, DataMapperといったDBアクセスライブラリを組み合わせることで、簡単にアプリケーションが作成できる。

本編

詳しくはid:tsuyoshikawa 氏のエントリをご覧ください。

懇親会

  • 東京 × Emacs で何かが起こるらしい
  • Vim vs Emacs
  • PHPは恐ろしい
  • なんだかすごい人だらけで、若干気後れしていたのは内緒

その他

haml 楽しい!

勉強会参加前にサンプルを組んでみた時に、初めてhamlを使ってみました。あの糞面倒くさいhtmlがこんなに簡単に書けるなんて!!と感動しきり。
余計な記号がないのが素晴らしすぎる!!

WanderlustでGmailを読めるようにする

最近Emacsいじってばかり。
Emacsでメールも扱えるようにしておく。
メールは全てGmailに集中させているので、Gmailに接続できればよい。

apel, FLIM, SEMIのインストール

前提となるものを入れる。APELは先日入れたので割愛。

FLIM

http://www.kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/FLIM/

$ make install LISPDIR=~/lisp
SEMI

http://www.kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/SEMI/

$ make install LISPDIR=~/lisp

Wanderlustのインストール

公式ページftpになぜか全て繋がらないので、CVSか他からダウンロードする。
今回は下記から持って来た
http://www.jpl.org/elips/wl/wl-2.14.0.tar.gz

$ make install LISPDIR=~/lisp PIXMAPDIR=~/lisp/wl/icon

あとは設定ファイル。
各ツールを .emacs でロードして、細かい設定は .wl に書く。
あと、.folders というのも必要らしい。

~/.emacs

;; flim
(add-to-list 'load-path "~/lisp/flim")

;; semi
(add-to-list 'load-path "~/lisp/semi")
(require 'mime-setup)


;; wanderlust wl.el
(add-to-list 'load-path "~/lisp/wl")
(require 'wl)
(require 'wl-draft)
(autoload 'wl-other-frame "wl" "Wanderlust on new frame." t)

~/folders

%inbox "inbox"
+trash "Trash"
+draft "Draft"

~/.wl

;; wanderlust setting

;; icon directory
(setq wl-icon-directory "~/lisp/wl/icon")

;;; mail
(require 'ssl)
(setq ssl-program-name "openssl")
(setq ssl-program-arguments '("s_client" "-quiet" "-host" host "-port" service))

;; IMAP
(setq elmo-imap4-default-server "imap.gmail.com")
(setq elmo-imap4-default-user "<username>@gmail.com") 
(setq elmo-imap4-default-authenticate-type 'clear) 
(setq elmo-imap4-default-port '993)
(setq elmo-imap4-default-stream-type 'ssl)

(setq elmo-imap4-use-modified-utf7 t) 

;; SMTP
(setq wl-smtp-connection-type 'starttls)
(setq wl-smtp-posting-port 587)
(setq wl-smtp-authenticate-type "plain")
(setq wl-smtp-posting-user "mattofransen")
(setq wl-smtp-posting-server "smtp.gmail.com")
(setq wl-local-domain "gmail.com")

(setq wl-default-folder "%inbox")
(setq wl-default-spec "%")
(setq wl-draft-folder "%[Gmail]/Drafts") ; Gmail IMAP
(setq wl-trash-folder "%[Gmail]/Trash")

(setq wl-folder-check-async t) 

(setq elmo-imap4-use-modified-utf7 t)

(autoload 'wl-user-agent-compose "wl-draft" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'wl-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'wl-user-agent
      'wl-user-agent-compose
      'wl-draft-send
      'wl-draft-kill
      'mail-send-hook))

完了

お疲れ様でした。
メールの読み書きができるようになったのはいいが、Archiveのやり方などが全くわからんので戸惑っている。