カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年
知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。
Rubyでメールを送るときの処理を検索してもなかなかエレガントなのが見つからない。
MIME::Lite::TT::Japanese ほど手軽ではありませんが tmail を使うとメールの作成は簡単です。文字コード変換には NKF、あとは必要に応じてテンプレートに erb を使ったりしています。
require 'net/smtp'
require 'nkf'
require 'tmail'
mail = TMail::Mail.new
mail.to = ['receiver01@example.com', 'receiver02@example.com']
mail.cc = ['receiver03@example.com']
mail.bcc = ['receiver04@example.com']
mail.from = 'sender@example.com'
mail.subject = NKF.nkf('-j -m0', "件名")
mail.date = Time.now
mail.mime_version = '1.0'
mail.set_content_type('text', 'plain', {'charset' => iso-2022-jp'})
mail.encoding = '7bit'
mail.body = NKF.nkf('-j -m0', "本文")
Net::SMTP.start('smtp.example.com', 25) do |smtp|
str = mail.encoded
smtp.send_mail(str, mail.from_address, mail.destinations)
end
XML データベースエンジンの Yggdrasill がオープンソース化したというのでダウンロードしてみました。
製品マニュアルも API リファレンスもあるのだけど、ビルドの仕方に関するドキュメントがなさげ。Makefile を読めということなのでしょう。とりあえず gonzui に一式突っ込んでソースを読みやすくして、ビルドに挑戦してみました。
$ make cd YgEngine; LC_ALL=ja_JP dcc -U../Common -U../XPath -U../YgClient -U../RelaxNG -U../RelaxNG/Datatype -U../RelaxNG/Pattern -U../RelaxNG/Datatype/Pattern -U../RelaxNG/Datatype/Xsd -U../RelaxNG/Datatype/NameClass -U../RelaxNG/NameClass -U../RelaxNG/Datatype/RelaxNG -E. YggdrasillServerE.dpr >/dev/null /bin/sh: dcc: command not found make: *** [YgEngine/YggdrasillServerE] エラー 127
早速つまづく。dcc って Delphi/Kylix のコンパイラかな?
Borland のトライアル版/無償製品版ダウンロードページから Kylix をダウンロード。
$ tar fvxz kylix3_open.tar.gz $ cd kylix3_open # ./setup.sh -m
-m をつけて、rpm を使わずにインストールです。
$ dcc --version dcc (Borland Delphi for Linux) 14.5 Borland Delphi for Linux Version 14.5 Open Edition Copyright (c) 1983,2002 Borland Software Corporation
再び make に挑戦。
$ make cd YgEngine; LC_ALL=ja_JP dcc -U../Common -U../XPath -U../YgClient -U../RelaxNG -U../RelaxNG/Datatype -U../RelaxNG/Pattern -U../RelaxNG/Datatype/Pattern -U../RelaxNG/Datatype/Xsd -U../RelaxNG/Datatype/NameClass -U../RelaxNG/NameClass -U../RelaxNG/Datatype/RelaxNG -E. YggdrasillServerE.dpr >/dev/null YggdrasillTCPServerE.pas(13) Fatal: ファイル 'IdThreadMgr.dcu' が見つかりません make: *** [YgEngine/YggdrasillServerE] エラー 1
Indy コンポーネントを必要とするようです。
Indy9.0 を使うことにします。Download Indy 9.0 から 9.0.17 Source code distribution の Indy_9_00_17_src.tar.gz をダウンロード。
パッケージの使い方がわからないので、↓のようなパッチをあてて、
diff -ru Indy_9_00_17_src/IdLogStream.pas Indy_9_00_17_src-/IdLogStream.pas --- Indy_9_00_17_src.orig/IdLogStream.pas 2002-10-08 12:19:22.000000000 +0900 +++ Indy_9_00_17_src/IdLogStream.pas 2005-12-12 00:59:48.000000000 +0900 @@ -14,7 +14,7 @@ unit IdLogStream; interface -uses classes, IdLogBase; +uses Classes, IdLogBase; type TIdLogStream = class(TIdLogBase) diff -ru Indy_9_00_17_src/IdQOTDUDP.pas Indy_9_00_17_src-/IdQOTDUDP.pas --- Indy_9_00_17_src.orig/IdQOTDUDP.pas 2002-10-08 12:21:16.000000000 +0900 +++ Indy_9_00_17_src/IdQOTDUDP.pas 2005-12-12 01:00:19.000000000 +0900 @@ -14,7 +14,7 @@ unit IdQOTDUDP; interface -uses classes, IdAssignedNumbers, IdUDPBase, IdUDPClient; +uses Classes, IdAssignedNumbers, IdUDPBase, IdUDPClient; type TIdQOTDUDP = class(TIdUDPClient) protected
$dcc `ruby -ne 'if m=/(\w+\.pas)/.match($_);puts m[1];end' indy.dpk`
などとして、dcu ファイルを量産してみました。これを Yggdrasill_1.5E/common にコピー。我ながら適当すぎ。
そしてまた make。
$ make cd YgEngine; LC_ALL=ja_JP dcc -U../Common -U../XPath -U../YgClient -U../RelaxNG -U../RelaxNG/Datatype -U../RelaxNG/Pattern -U../RelaxNG/Datatype/Pattern -U../RelaxNG/Datatype/Xsd -U../RelaxNG/Datatype/NameClass -U../RelaxNG/NameClass -U../RelaxNG/Datatype/RelaxNG -E. YggdrasillServerE.dpr >/dev/null YggdrasillServerE.dpr(170) Warning: コンパイラは 'end.' 以降の文字を無視します Error: Bad file format: 'YggdrasillTCPServerE.dfm' make: *** [YgEngine/YggdrasillServerE] エラー 1
うーん。先は長そう。
いくつかコンパイルできていますが、どれがなにやら良く分りません。闇雲に make するのはやめてコードを読むことにします。
オープンソースにするのは良いのですが、何を目的としているのでしょうね。オープンソースになったことで、Yggdrasill というソフトウェアが今後数十年は生き残るだろうことは喜ばしいと思います。しかし、ただオープンソースにするだけでは、Internet Archive のキャッシュに残るだけの結果になるかもしれません。知ってもらう、使ってもらうことが目的なら、Windows と主要な Linux (FedoraCore4 とか) で実行できるバイナリも配布してほしいとこですし、Yggdrasill をベースとしたソフトウェアが発展することを期待するのでしたら SourceForge に登録するくらいはしてもいいと思います。XML データベースは研究ネタとしても使えるでしょうから Yggdrasill のコードを使って何かをしってくれる学生を募ってみるのも面白いかもしれません。何をやるにせよ人手がかかりますから、オープンソース化以上のことを求めるのは難しいと思いますけれども。
知ってもらう、使ってもらうことが目的なら、Windows と主要な Linux (FedoraCore4 とか) で実行できるバイナリも配布してほしい
などと書いた Yggdrasill ですが、同じことを思った人が多かったらしく、(Windows) バイナリ同梱となりました。
イグドラシルGPL Editionついてお知らせ
弊社では今回、皆様からのご要望にお答えいたしまして、プログラムの実行バイナリファイルをご用意いたしました。
また、配布するソースコードコード自体も内容を見直し、不必要なものはできるだけ削除してあります。
後で遊んでみます。
先日始まった O'Reilly の Ruby グループブログ から。
Bruce Eckel が書いた The departure of the hyper-enthusiasts を受けての記事です。プログラミング言語が多くのユーザを獲得できるかどうかはマーケティングによるとしています。例としてオライリーのような出版社の存在や、コミュニティの態度(楽しい or 真面目すぎる)を挙げています。
この記事は現状から後付けで理由を与えている感がありますが(結局 fun に帰結させているし)、rails を考えると確かにマーケティング重要ですねえ。
Ruby hotlinks 五月雨版 から はてなダイアリー - 「Ruby」を含む日記 を巡回しているのですが、このページがいつの間にか縦に長くなっていました。おかげで「Ruby」を含む日記までの距離が遠いです。try ruby の結果をコピペしなくても……
私個人としては、リンクを辿るのを止めて RSS を購読することにして解決。
You're Using SwitchTower, Aren't You? の翻訳。
SwitchTower は rails アプリをデプロイするツールなわけですが、SCM の trunk とデプロイの差分を調べる diff_from_last_deploy、ウェブアクセスを一時的に止めるための disable_web/enable_web など運用時に活用する「かゆいところに手が届く」機能も揃っているようです。ウェブアプリは一度リリースしたら後は運用が続きますから、こういうツールの存在はありがたい限り。
といいつつ rails を仕事で運用する予定はなかったりしますが。ま、プライベートで使っているアプリに使ってみようと思います。
最近のコメント:
RSS
![]()
This work is licensed under a
Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).
_ k田 [いやあホントにやりましょうか>原因分析 僕はまるで技術者ではないので技術者のマネジメントはできないのですが、技術畑以..]
_ だて [人が増えるとやることも増えます。やることの量がこなせる量を超え続ける限り、人が増えても状況は変わりません。うちの会社..]
_ n [問題はTOP・MIDDLE・LOWERそれぞれのクラスにあると考えています。 特にTOP(経営者層)が戦略を明確化し..]