[#42454] 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...>

出沢です

22 messages 2006/06/22
[#42455] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/22

From: しん <dezawa@aliadne.net>

[#42456] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です

[#42458] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/23

From: しん <dezawa@aliadne.net>

[#42459] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です

[#42460] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/23

From: しん <dezawa@aliadne.net>

[#42461] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です。

[ruby-list:42429] Re: toplevel ウィジェットにイベントがわたらない?

From: Hidetoshi NAGAI <nagai@...>
Date: 2006-06-20 08:23:14 UTC
List: ruby-list #42429
永井@知能.九工大です.

From: Hiroshi Kimura <Hiroshi.Kimura@melt.kyutech.ac.jp>
Subject: [ruby-list:42428] toplevel ウィジェットにイベントがわたらない?
Date: Tue, 20 Jun 2006 15:43:59 +0900
Message-ID: <20060620064357.C25E3D324@goriate.melt.kyutech.ac.jp>
> で起動します。表れたウィンドウのエントリー上でマウスをクリック、しかし、
> キーボードをタイプしてもエントリーには何も表示されず、
> ターミナル側にも反応がありません。ボタンは有効に機能します。
    (snip)
> さらに不思議なのは、プログラムが期待どおりに動かないのはわたしの回りで
> は1種類のPC(HP compaq dc5000)だけで、悪いことにそのPCと同じ構成のPCが
> 100台、大学の一斉授業で学生が使うPCなんです。

かなり困った状況のようですね.
私のところでも試してみましたが,問題の再現ができませんでした.

> PCは debian/sarge をインストールしており、カーネルは 2.6.8-2-686 を
> apt-get しました。

私は debian のことは分からないのですが,

> ii  libreadline-ru 1.8.2-1        Readline interface for Ruby
> ii  libreadline-ru 1.8.2-7sarge2  Readline interface for Ruby 1.8
> ii  libruby1.8     1.8.2-7sarge2  Libraries necessary to run Ruby 1.8
> ii  libtcltk-ruby  1.8.2-1        Tcl/Tk interface for Ruby
> ii  libtcltk-ruby1 1.8.2-7sarge2  Tcl/Tk interface for Ruby 1.8
> ii  ruby           1.8.2-1        An interpreter of object-oriented scripting
> ii  ruby-elisp     1.8.2-1        Emacs-lisp ruby-mode for Ruby
> ii  ruby1.8        1.8.2-7sarge2  Interpreter of object-oriented scripting lan

これは二つのバージョンが混在しているということなのでしょうか?

Ruby/Tk におけるハングアップなどの挙動不審は
例外が絡んだりライブラリ周りに不整合 (Tcl/Tk のライブラリは pthread 
サポートなのに Ruby のバイナリはサポートしていないなど) があったり
する場合に発生することが多いです.
今回のケースでは例外は絡んでいませんから,Tcl/Tk のライブラリとの
整合性,特に pthread 周りの整合性が気になります.
もし二つのバージョンが混在しているのであれば,なおさらです.

# 例外が絡む場合は SEGV となる可能性の方が高いです.
# 例外に絡む SEGV はかなり減ってきてはいますが,
# まだすべてのケースを潰しきれてはいなさそうです.

ruby 本体,tcltklib.so ( と tkutil.so ),Tcl/Tk のライブラリで,
すべて正しいものが読み込まれているか,
各バイナリでの pthread サポートに不整合がないかを
確認してみていただけますでしょうか.

例えば
----------------------------------------------------------------
$ ldd /usr/local/lib/ruby/1.8/i686-linux/tcltklib.so
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40015000)
        libm.so.6 => /lib/libm.so.6 (0x400de000)
        libdl.so.2 => /lib/libdl.so.2 (0x40101000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x40104000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4011a000)
        libc.so.6 => /lib/libc.so.6 (0x40148000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
$ ldd /usr/local/lib/libtcl8.4.so 
        libdl.so.2 => /lib/libdl.so.2 (0x400ad000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x400b0000)
        libm.so.6 => /lib/libm.so.6 (0x400c7000)
        libc.so.6 => /lib/libc.so.6 (0x400e9000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
----------------------------------------------------------------
などと調べれば pthread を link するようになっているかは
確認できるでしょうし,

TclTkLib::RELEASE_DATE ,TkUtil::RELASE_DATE ,Tk::RELASE_DATE を
見ればそれぞれのリリース日がわかります.
ご利用のものが 1.8.2 のリリース版に基づくものであれば,
それぞれ '2004-12-23', '2004-12-23', '2004-12-24' と
なっているのではないかと思います.

また,TclTkLib::COMPILE_INFO も出力させてみてください.
例えば
----------------------------------------------------------------
"tcltklib 2006-04-25 :: Ruby1.8.4 (2006-06-11) with pthread :: Tcl8.4.4(with stub)/Tk8.4.4(with stub) unknown tcl_threads"
----------------------------------------------------------------
などというように,コンパイル時の情報の一部として
pthread サポート指定やコンパイル時の Tcl/Tk のバージョン,
stub をサポートしていたかどうかといったことを得られると思います.

P.S.
> entry.pack  #1
> button.pack #2
> Tk.mainloop
> 
> 不思議なのは、entry と button のパックの順番(上の#1と#2)を入れ換える
> と、エントリーには入力したキーが表示され、ターミナル側にはキーイベント
> の情報がプリントされることです。

button.pack(:side=>:bottom)
entry.pack(:side=>:bottom)
とすると,応急処置的には回避できたりしますか?
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread