2003年05月07日
_ [tDiary][Becky] tDiaryをBeckyで更新するPluginを微調整。
エラーを適当にrescueしてあげたり、URIクラスを使うことでX-tDiary-Hogeの数を減らしたりするようにした。なんか使うライブラリが増えて遅くなってしまった気がするが気のせいということにしておこう。
class CallbackTDiary # tDiaryメールのアドレス TDiaryAddres = 'tDiary' def on_send(msg) begin # tDiaryメールを取得 require 'tmail' mail = TMail::Mail.parse(msg) return 0 if !mail.to.include?(TDiaryAddres) # パラメータの解釈 require 'uri' time = parse_date(mail.subject.untaint) uri = get_header(mail, 'X-tDiary-URI') raise "X-tDiary-URI ヘッダを指定していない。" if uri.nil? uri = URI::parse(uri) proxy_host = get_header(mail, 'X-tDiary-Proxy') proxy_host, proxy_port, = proxy_host.split(':') unless proxy_host.nil? # 送信データ作成 require 'kconv' require 'cgi' body = mail.body.tosjis.untaint data = "year=#{time.year}&month=#{time.month}&day=#{time.day}&title=&body=#{CGI::escape(mail.body.tosjis)}&append=#{CGI::escape(' 追加 ')}" # 送信 begin require 'net/http' Net::HTTP.start( uri.host, uri.port, proxy_host, proxy_port ) do |http| response = http.post( uri.request_uri, data, 'Authorization' => 'Basic ' + ["#{uri.user}:#{uri.password}"].pack('m').strip ) end rescue Exception raise "送信できない:#{$!}" end return Becky::ONSEND_PROCESSED rescue messageBox($!.to_s, "tDiary失敗") return Becky::ONSEND_ERROR end end private # Timeオブジェクトを生成 def parse_date(d) case d.downcase when 'now', 'today' time = Time::now else require 'parsedate' time = Time::local *(ParseDate::parsedate(d))[0..-3] end end # TMail::Mailよりuntaintしたヘッダを取得 def get_header(mail, header) h = mail[header] h = h.to_s.untaint unless h.nil? return h end # メッセージボックス表示 def messageBox(msg, title) require 'Win32API' messagebox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i') messagebox.call(0, msg, title, 0) end end Becky.add_callback CallbackTDiary.new
_ [V友] ふとももを久しぶりに使ってみた。
めちゃくちゃ久しぶりに、ふとももを使ってみたんだけど。結構ちゃんと作りこんでいたんだねぇ。我ながらちょっと感心。データもまっさらだから速いし。
で。なんか、「スレッド表示するとROOTの投稿以外は未読の*が太字にならない」とか「Alt+TabしたときのアイコンがVBのデフォルトのまま」とか「クエリー検索ダイアログで右側のリストからD&Dしたときは[Table名].[Field名]の方がいいかも」とか「クエリー検索ダイアログが出てるときはAlt+Tabのリストに出てこない」とかなんか細かい問題(?)をいろいろ見つけてしまった。
・・・修正したほうが良い?(汗)
_ [TTBase] オープンソース化。
された。原作者(既にそんな呼び方でいいのか?(汗))であるK2さんは、TTBaseに時間を割けなくなってしまっているようで、それならば、とオープンソース化を提案してくださった。そんでまー、一応プラグインを(多分)一番大量に公開してしまっている身としては、役に立たねばならんだろうとゆーことで、Delphi書けないくせにsourceforge.jpのプロジェクト管理者に名乗りをあげてしまったのであった。
まぁ、TTBaseに実装して欲しかった機能があったりしていたので、願ったりかなったりなのかもしれない。まずは、Delphiになれないといけないのかな。
とりあえずはわかるところから、ということでプロジェクトホームページにPukiWikiを立ててみたんだけど、やっぱりWiKiは便利だね。でも、プラグインのアップ場所として使うって利用法は思いつかなかった。いい案かもしれない。UPできる体裁を整えてみようか。