最新 追記
RSS feed
Webサイトとは「つい、うっかりの存在論」である

角谷HTML化計画

「むずかしく考えることはない」と、偉そうに葉巻を振りまわしながら、トレヴィラヌスはいった。「ガリラヤの太守がじつにみごとなサファイアを持っていることは、みんなが知っている。何者かがそれを盗むつもりで、間違ってここへ入ったんだ。ヤルモリンスキーが起きていたので、泥棒は殺さざるをえなかった。どうだね、これで?」
「そのとおりかもしれません。しかし、おもしろくはないですね」と、レンロットは答えた。
J.L.ボルヘス『死とコンパス』(『伝奇集』収録)

2007-09-01(Sat) [長年日記] [Edit]

■1 dRubyによる分散・Webプログラミング(関 将俊) XP祭り2007でドリームチームの一員として参加

心身ともに絶不調。咳さんとペアプロということで朝から緊張し通し。はじまってからは緊張しすぎてもはや狼狽の域に。気持ちばかり焦る。全然手が動かない。もうだめ。

「落ち着け・・・心を平静にして考えるんだ・・・こんな時どうするか・・・落ち着くんだ・・『テスト』を書いて落ち着くんだ・・・『テスト』はテストに失敗した場合にしか『プロダクトコード』を書いてはいけないプログラマの偉大な習慣・・・わたしに勇気を与えてくれる

レッド。グリーン。リファクタ。レッド。グリーン。リファクタ。レッド。グリーン。リファクタ。

ディレクトリ構造

+ lib/
+-- chatdb.rb
+ spec/
+-- chatdb_spec.rb
+-- spec.opts
+ spec_helper.rb

chatdb_spec.rb

require File.dirname(__FILE__) + '/../spec_helper'

describe ChatDb do
  before do
    @db = ChatDb.new
  end

  it {
    @db.add("kakutani", "Hello")
    @db.add("m_seki", "druby")
    @db.head.collect do |x|
      x[1]
    end.should == ["druby", "Hello"]
  }

end

大したことのない殴り書きのテストたが、このおかげで咳さんと認識に自分の気持ちを追いつかせることができた。

chatdb.rb

class ChatLeaf
  attr_accessor :author, :text, :time
  def initialize(author, text)
    @author, @text, @time = author, text, Time.now
  end

  def to_a
    [@author, @text, @time]
  end
end

class ChatDb
  def initialize
    @strage = []
  end

  def add(author, text)
    @strage.unshift(ChatLeaf.new(author, text));nil
  end

  def head(size=10)
    @strage.first(size).collect { |e| e.to_a}
  end

end

if $0 == __FILE__
  require 'drb/drb'
  DRb.start_service('druby://:12345', ChatDb.new)
  gets
end

劣化したサンプルみたいなコードだ……。咳さんお付き合いありがとうございました。

使いかた

まずchatdbを起動させます。

$ ruby chatdb.rb

何にも表示されません。別コンソールでchatクライアントを起動させます。

$ irb --simple-prompt -rdrb/drb
>> c = DRbObject.new_with_uri('druby://localhost:12345')
=> #<DRb::DRbObject:0x10a0504 @ref=nil, @uri="druby://localhost:12345">
>> c.add('kakutani', 'Hello, ChatDb')
=> nil
>> c.head.add('kakutani', 'dRuby is awesome!"))
=> nil
>> c.head.each {|author,text,time| p "(#{time.strftime('%H:%M:%S')})[#{author}] #{text}"};nil
"(11:16:35)[kakutani] dRuby is awesome!"
"(11:16:26)[kakutani] Hello, Chatdb"
 => nil

ChatDb#headでせっかく取得したChatLeafにto_aしているのは、CGIは咳さんのMacで動かしていたので、ChatDb関連クラスを配布するのが面倒だったから。私の環境がqdbmをちゃんと動かせる状態になっておらず、永続化までやれませんでした。準備重要。

感想

  • 咳さんとペアプロできて幸せだった。
  • ライブコーディングはまったくアジャイルではない
  • ライブコーディングを楽しんでもらうには、やり方を考えておかないと勿体ない
  • コンテンツとして提供するつもりなら、ちゃんと仕込みが必要。
  • ライブ感だけを伝えたいなら、ユルい雰囲気でやったほうがよい。懇親会の片隅や、専用の場所など(中継とかあるといいのかも)。

■2 XP祭り2007のライトニングトークス

チェックリストの12項目に該当したらTDD脳

「Testing Will Challange Your Conventions」の12項目を淡々と紹介しようとして失敗したトークス。LTの順番はトリをつとめる角野"五十六"泰次の直前。露払い。

全トークスのビデオ(後述)がgoogle videoで公開されてます。そのうち、自分のしゃべった分だけニコニコ動画に置きました。コメントしてもらえると嬉しいです。

スライドはslideshareと、PDFで置いておきます。

全トークスのビデオ

Akiyah GJ!

お名前 : コメント :

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

うしお [いやいや、私も楽しかったですが、準備不足ですんませんでした。 咳さんとかくたにさんが、コードと解説を後からアップし..]

TrackBack [http://buy-tramadol-online-price.blogandorra.com/ Buy tram..]

TrackBack [http://phentermine-free-shipping.50webs.com/index.html Phe..]

TrackBack [http://freewebs.com/hydrocodone111 Hydrocodone. Hydrocodon..]

tsune [トークスかっこいい。だってテストしづらいもん最高。]


2007-09-07(Fri) [長年日記] [Edit]

■1IPA未踏ソフトウェア創造事業2006年度下期千葉PM採択プロジェクト最終成果報告会

初パネリスト。パネルって難しいなあ……言いたいことは半分も言えないんだな。

当日の内容は、id:hyoshiokログが参考になる。 RubyKaigi2007のDave Thomasに対してもそうだったけど、よしかおかさんはいつも良い質問をしていてかっこいい。

私が言いたかったこと:

  • Railsブームがきっかけで、もっとRubyが業務アプリケーションの分野でふつうに使われるようになるといいな。
  • 少し前にRubyの1.8系がknuさんやmputさんがメンテするようになったことで、MatzだけのRubyじゃなくなったのと同様に、YARVがRuby本体にマージされたことで、次バージョンももはやMatzだけのRubyじゃなくなった。これはYARVの「社会的な意義」としてはとてもとても大きなことだと思う。「5倍速い」とかいうアオリよりもよっぽど重要なことだと思う。
  • ささださんには心身の健康に気をつけて、これからも末永くHackできるようにして欲しいです(これは言えた)。

あまりキャッシュに余裕がない企業がRubyの発展に寄与できることは、きちんと目の前のお客様の期待に応える仕事を積み重ねていくことと、その成果をコードなり文書なり、講演なりで伝えていくことかな……と思ってる(というかそれしかできない。今のところ)。がんばります。

お名前 : コメント :


2007-09-12(Wed) [長年日記] [Edit]

■1 Re:「autotestが止まらない。

テストケースを増やして、いつの頃からかCtrl+C*2ではautotestが止まってくれなくなった。
カッとなって連打しても全然ダメ。

私も気がつくとAutotest::ScreenでCtrl+C 2回では止まらなくなりました(たしかそんなソースコードになっていた。リロードするんじゃなかったかな模造記憶。:interruptのフックでステータスメッセージを書き換えているそうです。パッチを投げてみるべき?)。

$HOME/.autotest

 require 'autotest/screen'
 Autotest::HOOKS.delete(:interrupt)

これで止まるようになりました。正しい対処かどうかはわかりませんが。

■2 RSpec + AutoTest::Screen

Autotest::Screenが便利な件について。 (SaikyoLine.jp)を多いに参考にさせてもらいましたので、AutoTest::ScreenをRSpec(1.0.8)に対応させた私のautotest設定を貼っておきます。

require 'autotest/screen'
Autotest::HOOKS.delete(:interrupt)
Autotest::Screen.statusline = %q[|%c %m/%d|%w %=]

class Autotest::Screen
  SCREEN_COLOR[:green] = 'gw'
  SCREEN_COLOR[:yellow] = 'yk'

  Autotest.add_hook :run_command do |at|
    message 'Running' if execute?
  end

  Autotest.add_hook :quit do |at|
    clear if execute?
  end

  Autotest.add_hook :ran_command do |at|
    return unless execute?
    results = [at.results].flatten.join("\n")
    output = results.slice(/(\d+)\sexamples?,\s*(\d+)\s.*failures?(?:,\s*(\d+)\s.*pendings?)?/)
    if output
      ex,fail,pend = $~.captures.map {|e| e.to_i}
      if 0 < fail
        message "FAIL #{ex}ex, F:#{fail} ", :red
      elsif 0 < pend
        message "Pend #{ex}ex, F:#{fail} P:#{pend}", :yellow
      else
        message "All Green #{ex}ex", :green
      end
    end
  end
end

Autotest::Screen.statuslineはお好みで。どうぞご利用ください。

お名前 : コメント :

本日のツッコミ(全3件) [ツッコミを入れる]

TrackBack [http://saikyoline.jp/weblog/2007/09/autotest_1.html Saikyo..]

yoshuki [こんにちは、どんなパッチを作ってよいやら悩んでしまったので顛末を報告してみました。 英語に自信がない・・・。]

かくたに [おおっ。すばらしい。パッチにできると英語できなくても問題ないからいいんですけどねー。"here's the patc..]


2007-09-21(Fri) [長年日記] [Edit]

■1 Re:「マトリックス 特別版

(あとで書く)

お名前 : コメント :


2007-09-22(Sat) [長年日記] [Edit]

■1 『ヱヴァンゲリヲン新劇場版』:序

樋口チャンの新作と聞いて。78分30秒ほどの予告編のあとに、30秒ぐらいの本編を見れて満足。

Tags: movie

お名前 : コメント :


2007-09-23(Sun) [長年日記] [Edit]

■1 kdnzm爆誕式 / 襲名披露宴に出席

(あとで書く)

Tags: kdnzm

お名前 : コメント :


2007-09-27(Thu) [長年日記] [Edit]

■1 箱入り息子 息子が3歳になった

まだ箱に入るサイズ。かなり普通に会話できる。というか嘘をつくようになった。 好きな食べものは「とうころもし」。

我われ両親が贈ったチロリアンルーレットは完全にスルーで、実母と弟からのプレゼント、『きょうはなにするの、ペネロペ』デンライナーゴウカがお気に入り。「仮面ライダー」と言えずに「赤い人」「カレンダー」と呼んでいた。まあ、デンライナーのギミックは確かによくできている。

仮面ライダー電王 アクションライナーシリーズ1~4 DXデンライナーゴウカ きょうはなにするの、ペネロペ (ペネロペおはなしえほん)(アン グットマン/ゲオルグ ハレンスレーベン/Anne Gutman/Georg Hallensleben/ひがし かずこ)

Tags: family

お名前 : コメント :

本日のツッコミ(全1件) [ツッコミを入れる]

Yuumi3 [「箱入り息子」さん七五三ですね、おめでとうございます!]


2007-09-29(Sat) S is for Spec [長年日記] [Edit]

■1 スは宇宙(スペース)のス (創元SF文庫)(レイ・ブラッドベリ/一ノ瀬 直二) スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

Rubyist Magazine 0021号にRSpecの記事を載せてもらいました。id:moroと共著。念願のるびまライターの称号を手に入れたぞ!

(あとで書く)


Tags: rubima rspec

お名前 : コメント :

本日のツッコミ(全1件) [ツッコミを入れる]

うしお [早速↑むっちゃ役立ちました〜。めっちゃわかりやすくてよかったっす!]


最新 追記
RSS feed