[#4013] regexp question — Kikutani Makoto <kikutani@...>
きくたにです。
まつもと ゆきひろです
[#4029] ruby-mode.el ... _end problem — Kikutani Makoto <kikutani@...>
ruby-mode.el ですが、
まつもと ゆきひろです
Tue, Sep 02, 1997 at 10:05:20AM +0900 において
まつもと ゆきひろです
Tue, Sep 02, 1997 at 10:30:01AM +0900 において
[#4047] make install prefix=hoge — Kikutani Makoto <kikutani@...>
きくたにです。
[#4053] How to 'break' inside case — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
[#4060] ruby-tk on Windows — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
>まつもと ゆきひろです
助田です
わたなべです.
助田です
助田です
原です。
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
まつもと ゆきひろです
酒本です。
わたなべです.
助田です。
In message "[ruby-list:4169] Re: ruby-tk on Windows"
原です。
わたなべです.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
[#4066] ~ (tilde) — Kikutani Makoto <kikutani@...>
きくたにです。
[#4076] which icon is the best? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4083] ruby 1.0-970903 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
小澤@日立 です。
[#4109] can not install 1.0-970903 — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
うさぎです。
大庭@鉄工所です.
[#4126] How to get value (ruby/tk) — Noritsugu Nakamura <nnakamur@...>
あ伊藤です.
まつもと ゆきひろです
[#4145] byte code compiler ? — Kikutani Makoto <kikutani@...>
rubyのインタープリタって、いったん中間コードに変換してから
[#4151] "autoload": NameError ... — taizo@... (Yamamoto Taizou)
[#4164] configure option --bindir= — Noritsugu Nakamura <nnakamur@...>
[#4201] Mini ML Program — Yasunari Momoi <conan@...>
ももちゃん@あるもにこすです.
きくたにです。
まつもと ゆきひろです
[#4211] subscribe — abe@...
阿部雅之と申します。
[#4236] tk sample die — Kikutani Makoto <kikutani@...>
あれ、sampleのtk拡張がみんな動かなくなってしまった。why?
[#4245] ruby 1.0-970909 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4258] class.new { ... } — Kikutani Makoto <kikutani@...>
きくたに@Tk拡張見習い中です。
[#4267] Sample Program ( mbox to INBOX ) — "nagano" <nagano@...>
長野@新日鉄情報通信システム と申します。
[#4272] [Q] tk ext... — Kikutani Makoto <kikutani@...>
きくたにです。
[#4278] Is there any english documentation ? [FreeBSD ports] — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
うさぎです。
まつもと ゆきひろです
うさぎです。
[#4287] Re: Sample Program ( mbox to INBOX ) — "nagano" <nagano@...>
長野です。
[#4309] Re: ruby small bugs — 渡辺博文 <VYV01212@...>
わたなべです.
[#4313] mail address class — akira yamada / やまだあきら <akira@...>
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
前田です。
前田です。
前田です。
出沢@富士フイルムです
わたなべです.
[#4322] ftplib.rb with Win — Masaki Suketa <suke@...>
cygwin32 版 ruby を使って ftplib.rbの
[#4324] ruby seminar — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
うさぎ@勤務地は西田幾太郎生誕の地です。
前田です。
小澤さくです.
うさぎです。
前田です。
うさぎです。
前田です。
[#4329] ruby mailing list sanka kibo. — ma2sim@...
[#4357] nif2news.rb — Kikutani Makoto <kikutani@...>
きくたにです。
前田です。
きくたにです。
まつもと ゆきひろです
[#4364] RE: Re: Mistake in turorial ??? — "EGUCHI Osamu" <eguchi@...>
> 助田です
[#4366] socket — Kikutani Makoto <kikutani@...>
きくたにです。
まつもと ゆきひろです
小澤@日立 です。
わたなべです.
わたなべです.
[#4448] ruby 1.0-970919 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4449] Bug?? (ruby-1.0-970911) — Yuji Shigehiro <sigehiro@...>
ruby-1.0-970701 から, ruby-1.0-970911 にバージョンアップしたところ,
まつもと ゆきひろです
重弘です.
[#4468] Re: ruby 1.0-970919 released — 渡辺博文 <VYV01212@...>
わたなべです.
[#4474] ruby1.0(970919) for mswin32 — Masaki Suketa <suke@...>
助田です。ちょっと長いです。
[#4498] Re: tcltk library — 渡辺博文 <VYV01212@...>
わたなべです.
[#4510] python doc — Kikutani Makoto <kikutani@...>
ここで聞くべきことじゃないのですが、きっと知ってる人がいるだろう
きくたにです。
きくたにさん>
まつもと ゆきひろです
まつもと ゆきひろさん>
助田です
まだ python はかじりはじめたばかりですが、
まつもと ゆきひろです
Wed, Sep 24, 1997 at 02:31:39PM +0900 において
まつもと ゆきひろです
[#4556] install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...>
うさぎです。
うさぎです。
うさぎです。
まつもと ゆきひろです
まつもと ゆきひろです
うさぎです。
うさぎです。
[#4564] Re: Object#freeze — "EGUCHI Osamu" <eguchi@...>
えぐち です。
前田です。
まつもと ゆきひろです
[#4586] new members — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4617] array --> float of C (ruby module) — Noritsugu Nakamura <nnakamur@...>
[#4701] XeasyGraphic module — Noritsugu Nakamura <nnakamur@...>
[#4702] warning: global variable `$BODY' not initialized — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#4705] fact.rb (1.0-970919, nextstep) — HYOUDOU Kouichi <hyoudo@...>
兵藤です
[#4738] ruby 1.0-970930 install failed — Yoshiyuki Kusano <kusano@...>
草野@構造計画です.
草野@構造計画です.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
助田です。
[#4741] rbc.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
わたなべです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[ruby-list:4289] Re: [Q] tk ext...
はじめまして. 重弘といいます.
私は, 研究テーマが VLSI のレイアウト設計自動化 ということになってまして,
・ オブジェクト指向
・ グラフィックのサポート(それも, 話題の tcl/tk らしい)
・ お手軽なプログラミング
という甘い響きに誘われて, ruby/tk を使ってみました.
たくさんの線を引くスクリプトを書いてみたのですが...
余りにも遅い.
おかしいなあ, と思ってソースを見てみると,
なるほど, wish を子プロセスとして起動するのか.
確かに移植性は良いけど...
> Date: Fri, 12 Sep 97 11:00:09 +0900
> Subject: [ruby-list:4283] Re: [Q] tk ext...
> Message-Id: <m0x9L8S-0000WPC@jdcpc13.nrj.ericsson.se>
> 2万個のデータのときは(時間がかかったものの)動きました。
> 10万個のデータのときはあまりにもマシンがスローダウンしたので
> 中止しました。topで見てるとwishの%MEMが70%以上で、スラッシング
> 起こしてる模様(32MBしないので)。言語上の制約はないようですね。
定性的なデータは取りませんでしたが, 私がやっても似たようなものでし
た. ps で見ると, wish の負荷がどんどん上がっていって, とんでもないこと
になりました.
原因は, おそらく以下の通りです.
普通, ウィンドウアプリケーションは, イベントループの中でボタンを押すな
どのイベントを受け取って, コールバックで線を引いたりします. (菊谷様の
プログラムは, ぱっと見たところ, イベントループに入る前に線を引いてしま
うみたいですが, wish が子プロセスで動作している以上, 事情は同じです.)
普通の X 等のアプリケーションであれば
[A]
1. イベント発生.
2. (ボタンを押したのであれば, ここで, ボタンを押された絵に変える).
3. コールバックを実行する (ここで線を引きまくるが, 線を引くというリク
エストはライブラリが一旦保留して, 実際に描画されるのはもっと後).
4. コールバックから帰って来る (ここでボタンを元の絵に戻すのか??)
5. イベントループに戻る. 処理すべきイベントが残っていなければ, ここで
はじめて, 実際の描画処理がまとめて行われる.
となりますが, ruby/tk の場合は
[B]
(ruby) (wish)
1. イベント発生.
2. (ボタンを押したのであれば,
ここで, ボタンを押された絵に変える).
3. <------------------ コールバックを実行する要求.
(想像ですが, 多分)
ack を返す -------------------> (+)
4.
線を引く --------------------> 要求を受け取る
<------------------- (想像ですが, 多分) ack を返す
(*)
線を引く --------------------> 要求を受け取る
<------------------- (想像ですが, 多分) ack を返す
(*)
.....
となります. で, 問題なのは, (*) の部分でして,
もし一瞬でも ruby からの要求が途絶えると, wish は
(ボタンを元の絵に戻して) 線の描画を開始してしまいます.
なぜなら, wish にとってのコールバックは (+) で既に終わっていますから.
↑
↑ (現在の ruby/tk の実装では, ruby と wish の通信チャネル(パイプ)が
↑ ひとつしかないので(←想像),
↑これを避けるのは困難だと思います.)
wish の canvas は, 線を引く要求があったら, 単に線を引くだけではなく,
線の情報を後で変更できるように内部に蓄えたりするので, かなり遅いのでは
ないでしょうか? さらに, まとめて引くのではなく, ruby からの要求が途絶
えたときに数本ずつ引くので, 致命的に遅くなります. (実際にコールバック
で線を引くスクリプトを組んでみると, 押したボタンがすぐに戻って描画をは
じめる様子が分かります.)
参考までに, テストに使ったスクリプトを付けます.
draw を押すと, 500 本の線を 100 回引きます.
最初に線を引かずにループに必要な時間を計測し, その後で実際に引きます.
(ちなみに, マシンが重くて動かなくなっても, 私は責任を持てません.)
----
#! /usr/local/bin/ruby
require "tk"
def drawlines()
print Time.now, "\n"
for j in 0 .. 99
print "*"
$stdout.flush
if (j & 1) != 0
col = "blue"
else
col = "red"
end
for i in 0 .. 499
# TkcLine.new($a, i, 0, 0, 500 - i, "-fill", col)
end
end
print Time.now, "\n"
for j in 0 .. 99
print "*"
$stdout.flush
if (j & 1) != 0
col = "blue"
else
col = "red"
end
for i in 0 .. 499
TkcLine.new($a, i, 0, 0, 500 - i, "-fill", col)
end
end
print Time.now, "\n"
# Tk.root.destroy
end
$a = TkCanvas.new{
height(500)
width(500)
}
$b = TkButton.new{
text("draw")
command(proc{drawlines()})
}
TkPack.configure($a, $b, {"side"=>"left"})
Tk.mainloop
# eof
----
実は, (tk.rb が使えないからといって ruby をあきらめるのは惜しいので,)
tcl/tk のライブラリを直接 *リンク* して ruby から呼ぶためのライブラリ
をつくりました. これを使うと, 正しく[A] のように描画が終わってからボタ
ンが戻るのが分かります.
(ちなみに, いろいろ理由はあるのですが, 拙作ライブラリのインターフェー
スは ruby/tk とは全く違います. tcl/tk の表現をなるべくそのまま ruby で
実現できるようにしてしまいました. (そうすれば, tcl/tk の man が使える.))
自分で使う分には十分完成したのですが, せっかくなので tcl/tk の勉強を兼
ねて, 一通りの機能が使えるかどうかテストしているところです.
なにせ, tcl/tk も ruby もはじめて...
----
重弘裕二
阪大情報処理教育センター (sigehiro@rd.ecip.osaka-u.ac.jp)
阪大工情報システム白川研 (sigehiro@ise.eng.osaka-u.ac.jp)