[#31928] securerandom.rb for 1.8 — Tanaka Akira <akr@...>

securerandom.rb を 1.8 に追加し、cgi/session.rb に使わせたい

18 messages 2007/10/03
[#31990] Re: securerandom.rb for 1.8 — "Akinori MUSHA" <knu@...> 2007/10/09

At Wed, 3 Oct 2007 12:49:20 +0900,

[#31992] Re: securerandom.rb for 1.8 — Tanaka Akira <akr@...> 2007/10/09

In article <86k5pwinco.knu@iDaemons.org>,

[#31993] Re: securerandom.rb for 1.8 — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/09

-----BEGIN PGP SIGNED MESSAGE-----

[#31936] Rake添付 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

21 messages 2007/10/04
[#31937] Re: Rake添付 — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/04

-----BEGIN PGP SIGNED MESSAGE-----

[#31938] Re: Rake添付 — Yukihiro Matsumoto <matz@...> 2007/10/04

まつもと ゆきひろです

[#31941] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...>

前田です。

20 messages 2007/10/04
[#31943] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/05

-----BEGIN PGP SIGNED MESSAGE-----

[#31945] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...> 2007/10/05

前田です。

[#31948] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/05

-----BEGIN PGP SIGNED MESSAGE-----

[#31952] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — Shugo Maeda <shugo@...> 2007/10/05

前田です。

[#31956] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — GOTOU Yuuzou <gotoyuzo@...> 2007/10/06

In message <47063403.3070402@ruby-lang.org>,

[#31960] Re: [ruby-list:44071] Re: Ruby 1.8.6-p111 / 1.8.5-p114 released (Security Fix) — GOTOU Yuuzou <gotoyuzo@...> 2007/10/07

In message <20071006.101915.596518898.gotoyuzo@sawara.priv.tokyo.netlab.jp>,

[#31980] multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

24 messages 2007/10/09
[#31981] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#31983] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/09

こんにちは、なかむら(う)です。

[#31984] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#31986] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/09

こんにちは、なかむら(う)です。

[#31987] Re: multibyte string/regex literal with escape sequence — Yukihiro Matsumoto <matz@...> 2007/10/09

まつもと ゆきひろです

[#32003] Re: multibyte string/regex literal with escape sequence — "U.Nakamura" <usa@...> 2007/10/10

こんにちは、なかむら(う)です。

[#32133] undefined method `now' for DateTime:Class (NoMethodError) — "NAKAMURA, Hiroshi" <nakahiro@...>

-----BEGIN PGP SIGNED MESSAGE-----

12 messages 2007/10/23
[#32135] Re: undefined method `now' for DateTime:Class (NoMethodError) — tadf@... 2007/10/23

どういう状況かよくわかってないのですが、いっそ必ず date 丸ごと読むようにするか、

[#32136] Re: undefined method `now' for DateTime:Class (NoMethodError) — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/10/23

-----BEGIN PGP SIGNED MESSAGE-----

[ruby-dev:31999] Re: multibyte string/regex literal with escape sequence

From: Hidetoshi NAGAI <nagai@...>
Date: 2007-10-09 21:53:17 UTC
List: ruby-dev #31999
永井@知能.九工大です.

From: Yukihiro Matsumoto <matz@ruby-lang.org>
Subject: [ruby-dev:31994] Re: multibyte string/regex literal with escape sequence
Date: Tue, 9 Oct 2007 22:57:16 +0900
Message-ID: <E1IfFa6-00015M-FF@x31>
> 「実際に処理してみて例外が起きるかどうか」以外の方法は現時点
> では提供していません。そういう意味だと「安心して混在できる
> US-ASCII」と「やってみないとわからないBINARY」は区別した方が
> 嬉しいケースがあるかもしれませんね。

私は 1.9 での文字列の encoding 情報の扱いの
具体的なところを理解できてはないですし,
encoding 変換についても厳密には分かっていないのですが,
Ruby/Tk でのケースについて少々.

Tk では,マルチバイト文字列を扱う場合には utf-8 で渡す必要がありますし,
逆に渡される場合も utf-8 で返されます.
ですが,毎度の変換を必要とするのはユーザにとって不便です.
そのため,$KCODE の値やシステムのデフォルトの encoding の値に基づいて
自動的に (悪く言えば勝手に) 相互の変換をかけるようにしています.
なお変換に際しては,Tk が期待している変換が行われるように,
Tcl/Tk 上の encoding 変換関数を使うようにしています.

各種 encoding を混在させて扱う場合には
文字列の encoding を明示する必要がありますが,
その場合は @encoding というインスタンス変数を持つかどうかで
判定する (値がその文字列の encoding 名とする) ようにしています.

通常はこれでうまく機能するのですが,
イメージデータなどのバイナリデータを扱う場合が問題です.

'ascii' にしておけば問題がないかと思いきや
-----------------------------------------------------------
irb(main):003:0> $KCODE
=> "NONE"
irb(main):004:0> Tk.encoding
=> "euc-jp"
irb(main):005:0> '漢字asdf'
=> "\264\301\273\372asdf"
irb(main):006:0> TkComm._toUTF8('漢字asdf')
=> "\346\274\242\345\255\227asdf"
irb(main):007:0> TkComm._toUTF8('漢字asdf','euc-jp')
=> "\346\274\242\345\255\227asdf"
irb(main):008:0> TkComm._toUTF8('漢字asdf','ascii')
=> "\302\264\303\201\302\273\303\272asdf"
-----------------------------------------------------------
というように,変換されてしまいます.

# この例は Linux 上なので,デフォルトでの Tk.encoding は
# 'euc-jp' になってますが,日本語 WinXP 上では 'cp932' となります.

相互変換で見てみるとこんな感じになってしまいます.
-----------------------------------------------------------
irb(main):004:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf'))
=> "\264\301\273\372asdf"
irb(main):005:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'euc-jp'), 'euc-jp')
=> "\264\301\273\372asdf"
irb(main):006:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'euc-jp'), 'ascii')
=> "??asdf"
irb(main):007:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'ascii'), 'ascii')
=> "????asdf"
irb(main):008:0> TkComm._fromUTF8(TkComm._toUTF8('漢字asdf', 'ascii'), 'euc-jp')
=> "\241\255???asdf"
-----------------------------------------------------------

そこで,Tk.encoding_names には含まれない 'binary' が指定された場合は
変換を行わないようにすることで,
-----------------------------------------------------------
irb(main):002:0> TkComm._toUTF8('漢字asdf','binary')
ArgumentError: unknown encoding name 'binary'
        from /usr/local/lib/ruby/1.8/tk.rb:638:in `_toUTF8'
        from /usr/local/lib/ruby/1.8/tk.rb:638:in `_toUTF8'
        from (irb):2
irb(main):003:0> TkComm._toUTF8(Tk::EncodedString.new('漢字asdf','binary'))
=> "\264\301\273\372asdf"
irb(main):004:0> TkComm._toUTF8(Tk::BinaryString.new('漢字asdf'))
=> "\264\301\273\372asdf"
irb(main):005:0> s = Tk::BinaryString.new('漢字asdf')
=> "\264\301\273\372asdf"
irb(main):006:0> s.encoding
=> "binary"
irb(main):007:0> TkComm._toUTF8(s)
=> "\264\301\273\372asdf"
-----------------------------------------------------------
というように,問題が出ないようにしています.

1.9 で文字列が encoding 情報を持つならば,
Ruby/Tk でもそれを用いることになるはずです.
encoding を明示しないケースで encoding がどのように扱われるのか
分かっていないのですが,とくに指定がない場合には US-ASCII となるならば,
Ruby/Tk では Tk のシステムデフォルト値を用いて
従来と同様に自動変換を行うようにすると思います.

# 現実に,今現在はそれでユーザの利便性を確保できていると思うので.

その際,US-ASCII と BINARY との区別ができないのであれば,
せっかく m17n 化されるにもかかわらず
Ruby/Tk で特別な対応を行わざるを得なくなり,
面倒なことになりそうに思います.
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread