2009-01-22 (Thu) [長年日記]

そろそろ松島かき祭りについてひとこと言っておくか

仙台Ruby会議ロゴ

仙台Ruby会議01の東北で一言で、松島かき祭りについて言及したところ『せっかくだから俺はこの「松島かき祭り」に行くぜ』などと突き動かされるものを感じてしまった勇者が現れたので松島かき祭り参加にあたっての諸注意をまとめておきます。

参加する時間について

かき祭りは焼き場の確保がすべてといっても過言ではありません。かき祭りでは道路の側溝を作るときに使うブロックを利用してたくさんの焼き場を用意します。しかし、参加者全員に行きわたるとは言えません。焼き場がないと牡蠣を焼くことができないため食べることができません。初日の開始は10:00くらいだった気がしますが、9:00には会場入りして焼き場を確保しておきたいものです。前日入りなら問題ないですが東京から当日入りを考えるなら新幹線はほぼ始発に乗ると考えておけばよいでしょう。

移動手段について

絶対電車+徒歩おすすめです。松島海岸駅は仙台駅から仙石線に乗り換えて40分くらいでいけます。会場までは5~10分くらいでいけます。最近は整備されてるのかもしれませんが、塩釜~松島間で一車線が長いところがあり、お祭り渋滞で車はぜんぜん動きません。駐車場を探すのにも苦労するので車で行くのはやめましょう。

牡蠣について

焼き場を確保できたら火が起きる*1のと牡蠣が売り始めるのをまって、はじまったら速効で買いにいきましょう。20個(もっとかも)くらい入ってそうな殻付き牡蠣が500円くらいで手に入ります。無料配布もありますが、ひとり1回1個しかくれないし長蛇の列になるので心ゆくまで堪能するには二袋くらい買ってきて焼いて無心に食べる。これです。もちろん宮城の地酒もいっしょに買うのも忘れずに。

防寒について

2月は仙台が一番寒い時期です。防寒は完璧に。ホッカイロ複数所持おすすめ。海岸なので風が強かったり雪も降ったりします。しかし雪見酒も結構なもの。濃い純米酒の熱燗が欲しいところですが、日本酒を燗してるところはあまりないかもしれません。さすが北国だね!

座れる場所が無いに等しいので簡易の折りたたみ椅子があるとグッと楽になります。一昨年いったときは、だいぶ役に立ちました。間違ってもレジャーシートを敷こうとはおもわないこと。寒くて死にます。プロはキャンプ用のバーベキューセットとイスを持ち込んだりしてます。

道具について

牡蠣を開ける用のナイフも軍手も売ってます。手ぶらでいっても楽しむことができます。持ってる人は持参してもいいね。

アフターアワー

ひととおり食べて体力があまってる人は近くの瑞巌寺や伊達政宗歴史資料館や松島さかな市場とか、もうすぐ移転らしい松島水族館とか行くのもイイネ!

思いついたのはこんなとこ。

| Bookmark:

*1 レンタン配るおじさんとバナーで火を起こすおじさんが各焼き場をまわります。


2009-01-17 (Sat) [長年日記]

ExtC祭り

2009-01-17-DSC_0546

漢字データベースの川幡さん、GlyphWikiの上地さん主催による拡張漢字C & GlyphWiki勉強会に参加しました。会場は我らが万葉さんです。

拡張漢字Cは昨年12月にISO規格に新たに追加された4000文字あまりの追加文字で、CJKTUVの各国の文字が追加されていること。中でも台湾の文字がとても多いことなどを学びました。ISOには入ったもののUnicodeには、まだ取り込まれていないそうなので各OSやアプリケーションで対応が進むのはまだ先でしょうか。先取りで試してみたい人は、川幡さんが昨年末に対応したEmacsを使ったり、Vista以降のWindowsではフォントさえあれば表示できるそうです。

そのフォントも生成できてしまうGlyphWikiですが、上地さんのお手本を見ながらみんなで実際にExtCのグリフを追加する実習も行い勉強会のときだけでも100文字以上のグリフが追加されたようです。嫁もグリフ作成に熱中し、10文字ぐらい作ったあげく今度カッとなったときにまた作ると言ってました。

門外漢ではありましたが、興味深いお話もあり参加した方々のレベルも非常に高く楽しい勉強会でした*1

ところで川幡さんのプレゼンスライドはどこかに公開されるのでしょうか?

| Bookmark:

*1 どなたかがおっしゃってましたが漢字にもコンピュータにも強い人々が集結した感がありました。


2008-12-22 (Mon) [長年日記]

Re: はじめてのswing on jruby その参

xibbarさんのところでその参が追加されたのでさらに便乗しましたが、すでに載ってました。メソッドでのディスパッチが必要な例を書いてみました。遅くなってすまん。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'java'
 
import javax.swing.JFrame
import javax.swing.JPanel
 
class SimplePaint < JFrame
  def initialize(title)
    super title
    panel=self.content_pane
    panel.add_mouse_listener(java.awt.event.MouseListener.impl do |method, e|
      case method
      when :mousePressed
        @x = e.get_x
        @y = e.get_y
      end
    end)
    panel.add_mouse_motion_listener(java.awt.event.MouseMotionListener.impl do |method, e|
      case method
      when :mouseDragged
        g = e.source.graphics
        x = e.get_x
        y = e.get_y
        g.draw_line(@x,@y,x,y)
        @x = x
        @y = y
      end
    end)
  end
end
 
frame=SimplePaint.new("SimplePaint")
frame.default_close_operation=(JFrame::EXIT_ON_CLOSE)
frame.set_size(350,250)
frame.visible=true    

ブロックにすると変数のスコープが最小化できるのが良いですね。ハンドラをひとつのクラスに集約したいときは普通にクラスにしたほうが良いでしょう。

| Bookmark:
Tags: JRuby

2008-12-21 (Sun) [長年日記]

Rails勉強会@東京#36 & 東京Ruby忘年会

DSC_0127

Rails勉強会と地域Ruby忘年会に参加しました。幹事のid:moroさん、会場提供のクオンさんありがとうございました。

  • Rubyで教育クラスターでプログラミングに限らずシステム開発全般についての教育について話をきいた
  • 東北クラスターで牛タンについて討論した。松島の牡蠣たべたい
  • たいやき部クラスターで次回のたいやき会議について打ち合わせした
  • iPhoneクラスターには時間切れで絡めず残念
| Bookmark:

「実践Railsを愛でる」覚え書き

DSC_0131

勉強会では角谷さんホストの実践 Rails -強力なWebアプリケーションをすばやく構築するテクニック(Brad Ediger) 実践 Rails -強力なWebアプリケーションをすばやく構築するテクニック(Brad Ediger)を愛でるに参加しました。 あのYuguiさんが嫉妬したヤヴァい本を1章から丹念に愛でるセッション。

  • 1章ヤヴァい
  • [角谷] この本に書いてある「Railsの基礎」とは「Railsを構成している要素の基礎部分」のこと。建築の基礎工事に該当する。「Railsを使うための基礎」ではないので注意
  • RHGを推薦参考書籍にあげておりRHGに書いてある内容が断りなしにでてくる。「皆さんご存じのCmap...」
  • 同様にCで実装されている部分の話もナチュラルに出てくる
  • 基本的にパーツが投げ出されている([nay] 大学の講義のようだ)
  • ProcとLambdaの違い ([Yuumi] 書いてるのはLisp厨だ)
  • 「モンキーパッチは非常に有用であると認められている」
  • Rubyを勉強したかったらCapistrano2のソースを嫁! オススメ!([角谷] 元々Java(?)の配備ツールを移植した1.0から、Rubyらしく書き直した2.0はかわいいよ)
  • 「良いテキストエディタはTextMateとVimである」(Emacs厨涙目[角谷][t-wada][ko])
  • 「プログラミング言語を英語に近づけるという試みが決まって失敗するのは、実装が不十分だからではなく、英語とプログラミング言語の間にはインピーダンスミスマッチがあるから」(RSpec涙目)
  • RESTfulについての解説が異様に厚い。RESTのためだけでも買い!
  • URIの透明性、不透明性→クライアントだけで決定しちゃダメよ
  • RESTの章の最後の参考文献はクリストファーアレクザンダーの「The Timeless Way of Building」
  • 大規模開発には分散リポジトリが必須である→Mercurialの丁寧な解説

非常に濃い本&セッションでありました。角谷さん、参加者のみなさんありがとうございました。とてもハードですが、みんなも買うといいよ。

| Bookmark:

2008-12-18 (Thu) [長年日記]

Re: はじめてのSwing on JRubyその弐

id:xibbarさんのところでJRubyチュートリアルっぽいことをしているので便乗してみます。

最後のSimpleGui1Bクラスは次のように書くと多少Rubyっぽく見えるかもしれません。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
require 'java'
import javax.swing.JFrame
import javax.swing.JButton

class SimpleGui1B
  def initialize
    frame = JFrame.new
    button = JButton.new("click me")
    frame.default_close_operation = JFrame::EXIT_ON_CLOSE
    frame.content_pane.add(button)
    frame.setSize(300,300)
    frame.visible = true
    button.add_action_listener java.awt.event.ActionListener.impl { |method, e|
      e.source.text = "I've been clicked!"
    }
  end
end

SimpleGui1B.new    

JRubyの場合、Javaインターフェースを直接実装したクラスを作らなくてもRubyのブロックを渡して実装クラスとすることができます。この場合、第1ブロック引数にはメソッド名が文字列で渡されます*1。第2のブロック引数にはイベント発生時に渡される情報(この場合java.awt.event.ActionListenerを実装したインスタンス)が渡されます。

Swingのイベントハンドラのようにメソッドがひとつしかない単純なインターフェースを持ったクラスがたくさん必要なプログラミングでは特に、Rubyの強力なブロック渡しを活用することで簡潔に書けますね。

またブロックはコンテキストを保持するため@buttonをインスタンス変数にする必要が無くなるのもポイントでしょうか。

追記12/19: @tom_eneboからインターフェースのimplメソッドは使わなくてよいと教えてもらったので、その場合のソースも書いておきます。より短くなりました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
require 'java'
import javax.swing.JFrame
import javax.swing.JButton

class SimpleGui1B
  def initialize
    frame = JFrame.new
    button = JButton.new("click me")
    frame.default_close_operation = JFrame::EXIT_ON_CLOSE
    frame.content_pane.add(button)
    frame.setSize(300,300)
    frame.visible = true
    button.add_action_listener { |e|
      e.source.text = "I've been clicked!"
    }
  end
end

SimpleGui1B.new    

| Bookmark:
Tags: JRuby

*1 メソッド名をキーに処理をディスパッチするのに使えます。

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

# xibbar [なかなかRuby的に書ける部分がわかんなかったりして、 それがハードルだったりしますよね。 JRubyの本無いの..]


track feed