http://jp.rubyist.net/?KansaiWorkshop32
初めて発表してきました。
会場が近くだったのと、募集がちょうどRailsアプリ作り終わったとこだったのでそれを元に初めて発表に立候補。
全然実力ないのに勢いで発表したので、いろいろ言い訳したいところとか、反省したいところとかありまくり。
まず言い訳。keynoteでプレゼンは生涯2回目。というかパワポ系で資料作るの多分4回目。発表時間の20分を全然ショート。エリオへの追悼プレゼンのつかみもすべった。
次に他の人のプレゼンの紹介
fiber
Ruby1.9からスレッド処理がfiberと言う物に任せられるようになった事の紹介。例外とかで振り分けるパターンではないので直感的で使いやすそう。
Ruby1.9.1
正直寝てしまった。文字コードのあたりしっかり聞きたかったのに残念。
XMPPでMicroblogging
仕様があるって事を初めて知った。140字ルールもそこからなのかちょっと聞き逃した。
で、私の内容
meshiuma.comでつかったメールからの投稿の説明で、重たくなったときにcrontabだと失敗したりするからGodでシステムをモニタ。monitを使えば?と言う助言をいただいたが、monitをしらないのにRailsアプリの中に設定をほおりこめるからいいと力説。詳しくはここを見ていただきたい。
rails-svn
require 'rubygems'
require 'daemons'
dir = File.dirname(__FILE__)
Daemons.run(dir + '/mail_receiver.rb')
こんなのを準備しておいて
rails-svn
ENV['RAILS_ENV'] ||= 'production'
require File.join(File.dirname(__FILE__), '..', 'config', 'environment')
require 'net/imap'
require 'net/http'
SLEEP_TIME = 60
config = YAML.load(File.read(File.join(RAILS_ROOT, 'config', 'mail.yml')))
loop do
begin
imap = Net::IMAP.new(config['host'], config['port'], true)
imap.login(config['username'], config['password'])
imap.select('Inbox')
imap.uid_search(["NOT", "DELETED"]).each do |uid|
source = imap.uid_fetch(uid, ['RFC822']).first.attr['RFC822']
m = Checkmail.new_from_email(source)
imap.uid_copy(uid, "[Gmail]/All Mail")
imap.uid_store(uid, "+FLAGS", [:Deleted])
end
imap.expunge
imap.logout
imap.disconnect
rescue Net::IMAP::NoResponseError => e
rescue Net::IMAP::ByeResponseError => e
rescue => e
end
sleep(SLEEP_TIME)
end
こんなのを叩く。loopとdaemonsの組み合わせはGodからstart、stopを叩けるようにするため。結構気に入ってます。
lingrのログ見てみるとデモが見たかったとの書き込みがあり、デモしなかったなぁと反省してます。写真をここにupしておきました。携帯からの投稿です。