2012-02-09 setup.rb
■Pure Rubyのmarkdown処理系

Pure Rubyのmarkdown処理系を使ってみたかったんだけど、いろいろ調べてkramdownにした。
決め手はgemもRakeも使わず、setup.rbでインストールできる点。
$ git clone git://github.com/gettalong/kramdown.git $ cd kramdown $ ruby setup.rb config $ ruby setup.rb setup $ sudo ruby setup.rb install
とりあえず動かす。
require 'kramdown' puts Kramdown::Document.new("[The dRuby Book](http://pragprog.com/book/sidruby/the-druby-book)") .to_html
2012-02-05 デブサミさんのこと
■デブサミの本とひみつの予告

すごい99人とすごくない私が一人一冊ずつ本を紹介する本の書影が出たのでその本をここに紹介します。
100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
- 作者: デブサミ運営事務局,SEshop.com編集部
- 出版社/メーカー: 翔泳社
- 発売日: 2012/02/22
- メディア: 単行本(ソフトカバー)
- クリック: 150回
- この商品を含むブログ (5件) を見る
この本は10回目のデブサミと絡んだ企画だったと思うんだけど、そうだっけ?タイトルにはそう書いてないみたいだから違うかもしれない。
100人の誰かが架空の(実在の?)誰かに勧めたい本を思い入れたっぷり紹介するもので、私はオブジェクト指向入門 (ASCII SOFTWARE SCIENCE Programming Paradigm)へのファンレターを書きました。
その原稿はずいぶん前に公開してたんだけどさっぱりアクセスされなかったのでまたリンクしときます。
それからデブサミの初日の廊下で@kawagutiさんと「SECIモデルの別解釈」についてぐだぐだ話をすることになりましたが、廊下だし人が集まると迷惑なので時刻とかはひみつです。
あとでドラフトのスライドを公開しとくので話に混ざりたい人は予習しといてね。
2012-01-29 通販生活
■30th

30~Greatest Self Covers&More!!!~
- アーティスト: 野宮真貴,ポータブル・ロック
- 出版社/メーカー: SMAR
- 発売日: 2012/01/25
- メディア: CD
- 購入: 1人 クリック: 19回
- この商品を含むブログ (16件) を見る
iTunesStoreでは買えそうにないので物理メディアを買う。
■カメラの本

Flotsam (Caldecott Medal Book)
- 作者: David Wiesner
- 出版社/メーカー: Clarion Books
- 発売日: 2006/09/04
- メディア: ハードカバー
- クリック: 5回
- この商品を含むブログ (10件) を見る
迷ったけど買っちゃった。みんな買った方がいいよ。
あわせて読みたい。
2012-01-27 ドラゴンセレクション
■The Pragmatic Bookshelf

http://pragprog.com/book/sidruby/the-druby-book
やっと英語版の本のページができたよー。みんな4月まで貯金して5冊ずつくらい買おう!
■5年ぶりの組合せとファーストチケット

ファーストチケットっていうのが出ちゃったドラゴンセレクション。初手の7枚にチケットを引いてくる確率を考えてみる。この手のネタは五年ぶり。→ http://d.hatena.ne.jp/m_seki/20070919#1190134698
訂正版
komaさんの記事を見て間違いに気付きました。56枚タネで検算してたらすぐわかったのになー。
- 全ての組合せと、成功(あるいは失敗)の組合せを調べると確率がわかる
- 手札に1枚はタネがないと成立しない
- 7枚のうちタネがn枚、チケットがm枚になる組合せを合計すると成功の組合せ数がわかる。
$fact = Hash.new {|h, k| k <= 1 ? 1 : h[k] = k * h[k - 1] } $nCm = Hash.new {|h, k| n, m = k h[k] = $fact[n].div($fact[m] * $fact[n - m]) } def ticket_p(n_basic, n_ticket = 4) sum = 0 n_other = 60 - (n_basic + n_ticket) (1..6).each do |basic| (1..4).each do |ticket| other = 7 - (basic + ticket) next unless (0..n_other) === other sum += ($nCm[[n_basic, basic]] * $nCm[[n_ticket, ticket]] * $nCm[[n_other, other]]) end end sum.quo($nCm[[60, 7]]) end (1..56).each do |basic| p [basic, ticket_p(basic).to_f] end
実行結果。タネの数とタネとチケットのくる確率。今度はあってるかなー。54-56の結果が同じなのが当たり前だけどびっくりした。
% ruby ncm.rb [1, 0.041604119884749866] [2, 0.07953247445695691] [3, 0.11404964986127125] [4, 0.14540568045751226] [5, 0.17383659257063544] [6, 0.19956493788355734] [7, 0.22280031647283793] [8, 0.243739889487221] ... [50, 0.3994993150303987] [51, 0.3994995325303855] [52, 0.3994996050303811] [53, 0.39949962315538] [54, 0.3994996257446656] [55, 0.3994996257446656] [56, 0.3994996257446656]
以下間違い。
- 全ての組合せと、成功(あるいは失敗)の組合せを調べると確率がわかる
- nCmっていうメソッドをずいぶん前に書いていた
- 手札に1枚はタネがないと成立しないので、7枚のうち1枚はすでに決まっている
- 6枚ひいたうちに1枚でもチケットがあれば成功
- でもこれは計算が面倒なので、6枚引いたらすべてチケットではなかった組合せを考えてみる。
60枚デッキ。1枚はタネなので、のこりは59。そのうちチケットでないカードは55枚。失敗する組合せは55枚から6枚選んだときの組合せとなる。
- 全体 = 59C6
- 失敗 = 55C6
- 成功 = 59C6 - 55C6
- 成功する確率 = 成功 / 全体
で計算すると35.66%だと思う。多分。
ary = [:ticket] * 4 + [:basic] * 10 ary[59] = nil basic = 0 ticket = 0 n = 100000 n.times do it = ary.sort_by {rand}.to_a[0,7].compact.uniq case it when [:basic] # no ticket basic += 1 when [:ticket] # no basic when [] # no basic, no ticket else basic += 1 ticket += 1 end end puts "%.4f" % (ticket.quo(n)) # 初手にタネとチケットがくる確率 puts "%.4f" % (ticket.quo(basic)) # 初手にタネがきたときのチケットがくる確率
2012-01-19 hashdosって書けばアクセス増えるぞ
■赤黒木?

難しいことはよくわかんないんだけど、CGIみたいな用途だったら、Arrayにいれてソートして二分探索で充分じゃないの?
- Ruby/Bsearch: 配列を 2分探索する Ruby用のライブラリ bsearch
- http://d.hatena.ne.jp/m_seki/20110701 あんまり関係ないけど思い出した
- http://estore.ohmsha.co.jp/titles/978427406609P わりと関係ないけど買おう!













