[#29986] ruby 1.6.4 to be released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#29987] ライセンス論点整理 — Tacos <ozaki@...>
なかだです。
Tacos っす。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
Tacos です。
[#30026] ライセンス/論点整理メモ ver0.91 — Tacos <ozaki@...>
まつもと ゆきひろです
Tacos です。
[#30030] Ruby license discussion — Masayuki Hatta <mhatta@...>
八田と申します。
At Sat, 2 Jun 2001 14:31:02 +0900,
In "akira yamada / やまだあきら <akira@ruby-lang.org>" wrote:
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#30041] Shellwords — "Akinori MUSHA" <knu@...>
自分のプログラムで、 Shellwords::shellwords を使うようにしたら
[#30048] RTtool and RDtool — Takahiro Kambe <taca@...>
こんばんは。
[#30067] [Q]drb で提供されている object のメソッド一覧を得るには ? — eda@...
えだです。
[#30112] Ann: NETRuby (NOTRuby for .NET) pre alpha — arton <arton@...>
artonです。
[#30120] Oracle7 用拡張モジュール +Oracle 7.2(Solaris) — SAITO Shukaku <shukaku@...>
斉藤秀格と申します。Oracle7用拡張モジュールをOracle 7.2に対して利用でき
[#30122] [Q]"2001 年 01 月 02 日 03 時 05 分 " を "2001 年 1 月 2 日 3 時 5 分 " のようにするには ? — eda@...
えだです。
[#30129] ライセンス FACT SHEET ver0.95 — Tacos <ozaki@...>
[#30132] ライセンスQ&A — Tacos <ozaki@...>
[#30141] 数字の 3 桁区切り — Makoto Sato <makotosato@...>
佐藤@NGBです。
[#30155] How do we treat local static variables? — IKEGAMI Daisuke <daisu-ik@...>
ruby-list の皆さんこんにちは。
にし@おかやまです。
NISHI Takao さん wrote :
元質問者のいけがみです。
[#30157] 「訴えられらくない」をまじめに考える。 — Tacos <ozaki@...>
[#30163] FW: [arg1:119] RE: [RubyUnit:4203] Re: インストーラ・プロジェクト — "KANEMITSU Masao" <masao-k@...>
金光です。RAAを改善しませんか?
In message <001701c0f156$5c897e50$6601a8c0@DELL>
artonです。
[#30188] Net::HTTP の new にパラメタを追加したい — matsui@...
Net::HTTPのnewに1つパラメタを追加した派生クラスを作ってみたのですが、
[#30190] 呼び出し元のクラスを知る方法? — "Shin'ya Adzumi" <adzumi@...>
あづみです。
あづみです。
[#30198] Ruby/Xlib の ArgumentError — FUJIMOTO Hisakuni <hisa@...>
藤本です、こんにちは(数年ぶりにメールします)
[#30206] .dup がされてないらしい ? — Atsushi Kanaya <todo-a2c@...>
金谷です。
[#30215] パス文字列を操作するライブラリはありませんか? — "Kaoru Shirai" <shirai@...1jp.com>
こんにちわ。常日頃 Ruby を愛用させて頂いております。
こんにちは kadu です。
From: kadu <kadu@zb.wakwak.com>
こんにちは kadu です。
[#30224] bug?: $= and string hash key — genta@... (IHA, genta)
はじめまして。伊波と申します。
[#30253] 物権/債権( re :ライセンス) — Tacos <ozaki@...>
[#30270] setup.rb — rubikitch@...
るびきちです。
あおきです。すみません、見逃してました。
From: Minero Aoki <aamine@mx.edit.ne.jp>
ただただしです。
高橋征義です。サブジェクト変えました。
[#30281] オブジェクトのプロパティの名前の取得 — "Inoue" <inoue@...>
井上です。
[#30305] TMarshal — rubikitch@...
るびきちです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#30312] composing a mail with a big file attached — "Akinori MUSHA" <knu@...>
ちょっとしたサイズのファイルを添付したメールを作成するコードを
あおきです。
[#30333] 共同著作物の謎( re :ライセンス) — Tacos <ozaki@...>
Tacos.self wrote :
ほんの、ちょっとだけ。
[#30345] PS2Linux への Ruby インストール — "T.Shimomura" <redbugml@...>
T.Shimomura です。
[#30362] 1.6.4 と open3 — "Toshihisa Tsuji" <dayan-ml-ruby-list@...>
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
[#30365] Samba+File.stat+ 奇数秒ファイル — Take_tk <ggb03124@...>
[#30369] メーリングリストの検索 — Takahiro Kambe <taca@...>
おはようございます。
[#30374] rdtool's bug? — Takahiro Kambe <taca@...>
こんにちは。
[#30404] setup.rb: pre_*, post_*, task 'all' — rubikitch@...
るびきちです。
[ruby-list:30312] composing a mail with a big file attached
ちょっとしたサイズのファイルを添付したメールを作成するコードを
Ruby で書いたのですが、いくつか速度上の問題にぶつかっています。
まず、以下のコードを。
#-------- begin
require 'tmail'
date_now = Time.now
filename = '/var/tmp/test.pdf'
mail = TMail::Mail.new
mail.from = TMail::HeaderField.new('From', 'test+from@idaemons.org')
mail.to = 'test+to@idaemons.org'
mail.date = date_now
mail.subject = 'test'
mail.mime_version = '1.0'
mail.set_content_type 'multipart', 'mixed', { 'boundary' => TMail.new_boundary }
textpart = TMail::Mail.new
textpart.set_content_type 'text', 'plain', { 'charset' => 'iso-2022-jp' }
textpart.body = "This is a test mail with an attachment.\n"
mail.parts << textpart
filepart = TMail::Mail.new
filepart.set_content_type 'application', 'pdf'
filepart.disposition = TMail::HeaderField.new('Content-Disposition',
'attachment; filename="' + File::basename(filename) + '"')
filepart.encoding = 'Base64'
#filepart.body = `uuenview -b #{filename}`
filecontent = File.open(filename).read
filepart.body = [filecontent].pack('m')
mail.parts << filepart
mail.write_back
print mail.encoded
#-------- end
テストに使った test.pdf は 700KB ほどのファイルです。
まず、 Ruby 1.6 を使って巨大な文字列を Array#pack で Base64
エンコードさせるととんでもない時間がかかってしまうのです。手元の
Pentium III 800MHz のマシンでは、エンコードになんと丸々 2 分も
かかりました。 (ファイルの読み込み〜格納は一瞬)
コメントアウトしてあるように外部のコマンド (uuenview) を使うと
瞬時 (0.1〜0.2 秒) に終わるのですが、三桁も違うとは。
なお、 Ruby 1.7 では rb_str_buf_cat() が導入され、最初に大きな
領域を確保しておいて再割り当てせずに使うようになっているため、
劇的に速度が改善しています。(0.2 秒ほどで終わりました)
そこで一つ要望なんですが、この変更を 1.6 にも持ってきませんか?
* * *
次に、性能上の問題になっているのが TMail::Mail#write_back です。
Base64 エンコードされたファイルのボリュームは 950KB 程なのですが、
write_back に 8 秒前後もかかるのです。
上の例の場合、 filepart の本文部分についてはキャラクタセットや
改行コードの変換は不要なので、「黙ってそのまま使ってくれ」という
指定ができればいいのですが、 TMail 側にそういう機能を用意できない
でしょうか?
例えば、本文の中身には関知しないメソッドとして write_back!,
encoded!, decoded! を新設するというのはいかがでしょう?
# あまり TMail の中身をよく見たわけじゃないので、使い方を間違って
# いるだけだったらすみません。
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.orgn
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"Freeze this moment a little bit longer, make each impression
a little bit stronger.. Experience slips away -- Time stand still"