●●●●TCL/TKなら俺に聞け 2●●●●at TECH
●●●●TCL/TKなら俺に聞け 2●●●● - 暇つぶし2ch898:デフォルトの名無しさん
12/05/25 16:17:21.15
>>861 のベンチマークはちょっと変えるとTclが圧倒的に速くなるよ。
[Ruby1.9.3]
+ str=str.gsub(/efgh/, "____")
gstr+=str;
- gstr=gstr.gsub(/efgh/, "____")
exec.tm.sec str.length
2sec 256kb
略)
395sec 3840kb
455sec 4096kb
[Tcl8.5.11]
+ regsub -all {efgh} $str ____ str
append gstr $str;
- regsub -all {efgh} $gstr ____ gstr
exec.tm.sec str.length
0sec 256kb
略)
0sec 3840kb
0sec 4096kb

899:デフォルトの名無しさん
12/06/17 21:24:30.09
ジオメトリーマネージャ(pack, grid, place)の働きが
イマイチよくわかりません。通り一遍のことはぐぐれば
わかりますが、ちょっと凝ったことをしようとすると
どれを選んでどういったオプションを指定すればよいか
いつも迷ってしまいます。
何かこうスッキリわかりやすく解説してくれてるとこって
ないですかね。書物は、この手のものはたいてい
高額なのでちょっと手が出ないかな。。。


900:デフォルトの名無しさん
12/06/18 07:52:40.33
>>899
僕も最初はあいまいなまま結果オーライで使ってたけど、Ruby/Tkの本が丁寧な解説で役立ったよ。
Rubyを256倍使うための本・界道編
URLリンク(goo.gl)

901:デフォルトの名無しさん
12/06/18 09:01:28.10
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

902:デフォルトの名無しさん
12/06/18 22:46:47.84
>>900
256倍シリーズってまだあったんですね。
確かにあれはわかりやすいかも。
Rubyは盲点でした。


903:デフォルトの名無しさん
12/06/19 06:41:21.59
grid最強
pack, placeは後方互換用と思ってよい

…とtkdocsのサイトには書いてあった
URLリンク(www.tkdocs.com)

904:デフォルトの名無しさん
12/06/19 19:32:26.30
>>903
packはともかくplaceは置き換えられない部分があると思うなあ。
右上とか右下にくっついて動くロゴみたいなのはgridだとかえって難しい気がする。
gridのコマ割り考えるのも結構面倒。

905:デフォルトの名無しさん
12/06/19 22:00:48.41
pack,place,gridだけで配置するより、ある程度区切ったらframeを乗せて
その中で個別にpack,place,grid使って配置した方が楽

906:デフォルトの名無しさん
12/06/19 22:03:34.92
placeはゲームのようなドット単位で指定したりするときに便利。
俺はTkでそういうのを作る機会がなかったので使ったことがないけど。
gridが全てにおいて万能というわけでもない。

907:デフォルトの名無しさん
12/06/20 14:33:31.82
place使ってプログレスバーを作ってる例ならあるよ。Ruby/Tkだけど。
URLリンク(www.dumbo.ai.kyutech.ac.jp)


908:デフォルトの名無しさん
12/06/22 20:34:56.08
tclでテキスト処理して結果をxterm -e w3mで出力させたいのですが、以下のようにしても動きません。
どのようなやり方で出力させればよいでしょうか?

% tclsh
% set a "
test
test
"
% exec xterm -e "echo $a | w3m "



909:デフォルトの名無しさん
12/06/30 01:51:50.71
>>908
意図がよくわからないんだけど、aの中身はホントはHTMLにして
ターミナルにw3mでレイアウト表示したいってことなら、

set ch [open |[list w3m -T text/html << $a] r]
puts [read $ch]; close $ch

一応w3mが整形したとおりに出力される。

910:デフォルトの名無しさん
12/06/30 01:59:12.62
あ、xtermってあれか、Xのターミナルエミュレータか。
じゃあ、ちょっと違うかな。
リダイレクトのバリエーションでTclのチャネルを別プロセスに渡す方法とかあるみたいだから見てみたらいいかもしれない。
URLリンク(www.tcl.tk)

911:デフォルトの名無しさん
12/07/01 08:06:09.94
>>909,910
909を見てて下を試しましたら、出力することができました。

% exec xterm -e "w3m << a
$a
"
ありがとうございました。

912:デフォルトの名無しさん
12/07/28 08:05:27.41
Tcl/Tk 8.5.12 Release Announcement
July 27, 2012


913:デフォルトの名無しさん
12/08/02 19:12:11.95
ActiveTcl 8.5.12.0
URLリンク(www.activestate.com)

914:本田
12/08/02 23:54:45.63
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)
URLリンク(downloads.activestate.com)

915:デフォルトの名無しさん
12/09/12 07:36:14.95
PTさん、8.5.12のtclkit作ってくれないのかなぁ


916:デフォルトの名無しさん
12/09/27 00:17:38.23
pack [frame .f -background ""] -fill both -expand 1
ってやると,色々配置したウィンドウを見た目変えずに一気に無効にできる。
destroy .f
で有効化。
だから何っていわれてもアレだけど。

917:デフォルトの名無しさん
12/10/05 20:50:57.35
>>915 こんなんありますけど
URLリンク(www.cqi.com.tw)



918:デフォルトの名無しさん
12/10/05 22:25:49.47
>>916
確かにマニュアルにもframeの-bg ""の挙動は書いてあるけど、Windows7+Tk 8.5.11だとバグってるっぽい。
なぜか一旦destroyしてもう一回 frame作るとそれっぽい動きにはなる。最大化するとやっぱりいろいろおかしい。
Linuxだと問題ないのかな。

button .b1 -text hoge
button .b2 -text hoge
place .b1 -x 10 -y 10
place .b2 -x 50 -y 50
pack [frame .f -background ""] -fill both -expand 1

919:デフォルトの名無しさん
12/11/20 00:18:52.14
保守?

920:デフォルトの名無しさん
12/11/26 18:33:59.94
Latest Release: Tcl/Tk 8.5.13 (Nov 12, 2012)

921:デフォルトの名無しさん
12/12/08 02:46:12.21
今、html5がやろうとしてることって、もともとtcl/tkがやろうとしてたことだよね
何で政治的に負けちゃったんだろう

922:デフォルトの名無しさん
12/12/15 17:34:24.88
expectもTCLだからここで聞いていいよね

expectというかtclで、設定ファイルを読みたい
bashのように、設定ファイルと見せかけて実は実行 でもいい

ロードかインクルードの方法ってありますか?

923:デフォルトの名無しさん
12/12/15 20:09:19.04
>>922
sourceじゃダメなのか?
>>920
ActiveTcl来た
PTさんのtclkitも来た

924:デフォルトの名無しさん
12/12/17 13:28:41.57
そろそろ8.6がリリースされるんじゃないかと思って
今年4月にPro Studioのサブスクリプションを自腹で1年延長してみたものの、
8.6に対応するときはメジャーアップデートでアップグレード対象外になる可能性に今頃気付いた。
そんなもったいないことしてる人は他にいないと思うが。。。
でもいいの。ActiveTclだけでもリリースし続けてくれてるだけで満足でございます。

925:デフォルトの名無しさん
12/12/24 22:46:13.42
ついにTcl/Tk 8.6が12/20にリリースされました。

926:デフォルトの名無しさん
12/12/26 21:31:39.97
SL4AでTcl動かそうと思ったけど、うまくいかんな。つまらん

927:デフォルトの名無しさん
13/01/18 03:10:56.99
ubuntuが出すタブレットPCでも動くのかな?

928:デフォルトの名無しさん
13/01/21 19:38:03.19
ActiveTcl 8.6.0.0リリースだよ。

929:デフォルトの名無しさん
13/02/19 07:16:05.65
特定のwidgetだけ再描画することは出来ないでしょうか?
textに数千行読む時にprogressbarを更新したいけど、その他の再描画は無駄なので止めたいのです。
updateだと全体を再描画になります。

930:デフォルトの名無しさん
13/02/21 22:20:12.72
特定widgetだけ再描画する方法は分からないけど、
textへの追加を1行ずつしないで、全部を一旦変数に入れて一発でinsertする、じゃダメなの?

931:デフォルトの名無しさん
13/02/22 21:07:25.94
C:\Program Files\Tcl\demos\Tk8.5\widget.tcl
Scales and Progress Bars 4. Progress bar
はupdate なし
configure命令

932:デフォルトの名無しさん
13/02/23 21:44:59.02
Tkの部品はconfig命令を使うと色や形の現在値は変更できるが、Tkは高速化の為に画面への反映は遅延表示させているので途中経過を表示せずにいきなり最終結果が表示されたりする。
プロバー表示では現在値を強制表示させる為にupdate命令を使うのが定石だがこれが禁じ手になると結構難しいか。

①930番さんの様にまとめて一発表示
②update命令間隔をを10秒置きとか極端に長くする
③その他の部品はforgetオプション等で退避しておいて後で表示
④?
ところでTkのtext表示は普通はそんなに遅くはないが改行文字なしの長い行を表示させると異様に遅くなるみたい。

933:デフォルトの名無しさん
13/03/06 21:36:21.62
SSD環境なので参考にならんかもしれませんが、2000文字x5000行のファイルでは、
5行おきのアップデートにすると秒単位で高速化されました。
それでもプログレスバー表示しない場合の11.5倍時間がかかりました。

create_file: 483288 microseconds per iteration
gets_lines: 271409 microseconds per iteration
read_bulk: 252275 microseconds per iteration

test_full_update: 5123759 microseconds per iteration
test_skip_update: 3374500 microseconds per iteration
test_no_update: 291779 microseconds per iteration
test_bulk_insert: 285029 microseconds per iteration

934:デフォルトの名無しさん
13/03/09 03:48:33.45
最初にファイルサイズ取得して、サイズに応じてupdateする行数変更するとか。
5000行のファイルに5行おきにプログレスバーを更新するってのが...

935:デフォルトの名無しさん
13/03/12 17:51:41.39
tcl8.6爆速なんだけど↓からだいぶ状況変わったの?
URLリンク(d.hatena.ne.jp)
この速さはただの再帰もループになってる?

5桁とかになると1分以上かかって他に大きく離される
これはループにしても変わらないから多倍長ライブラリの性能かな

936:デフォルトの名無しさん
13/03/12 18:29:56.59
すまん関数名同じだからかんちがいした
fib 38は固まるわ

937:デフォルトの名無しさん
13/03/12 22:01:59.60
>935
私の中古機械で試してみた。式をまとめると約10倍速くなった
どうしてこんなに違うのか??
fib <39088169> term <80312600 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [expr {$n - 1}]] +[fib [expr {$n - 2}]]}]
}

fib <39088169> term <714145387 microseconds per iteration>
proc fib {n} {
if {$n < 2} { return $n }
set a [expr $n - 2]
set b [expr $n - 1]
set x [fib $a]
set y [fib $b]
return [expr $x + $y]
}

938:デフォルトの名無しさん
13/03/15 22:54:42.21
>>937
exprの引数を{ }で囲むだけでだいぶ違うな

939:デフォルトの名無しさん
13/03/15 23:06:47.65
初心者が初心者に嘘を教えるスレです

940:デフォルトの名無しさん
13/03/15 23:08:30.06
exprの引数を{ }で囲むのは8.6以前からの定石。
2回評価させないようにする。

941:デフォルトの名無しさん
13/03/23 22:06:55.05
937です。より速くより汚く
proc fib {n} {
if {$n < 2} { return $n }
return [expr {[fib [incr n -2]] +[fib [incr n ]]}]
}
fib <39088169> term <72891401 microseconds per iteration> でした。

935 引用のページからC++を複写してVisualC++Express2008(要するに無料ソフト)を使って実行してみた
fib44=701408733
fib45=1134903170
fib46=1836311903
fib47=-1323752223
fib48=512559680

tcl/tk(ver8.5.13)でfib47 は
fib <2971215073> term <1253824233 microseconds per iteration>
1254秒!!。鈍足で正確でした。なっとく

速度、精度、価格、安直さ、どれも一つの側面でしかなく、それらを総合的に評価して最適ソフトを選択することが肝要だと思う。

942:929
13/03/24 10:09:02.93
ありがとうございます。規制されてて遅くなりました。
progressbarはupdate idletasksで表示が更新されましたが、古いPCのWindowsXPでは5~6秒程度updateしないと
メニュー部分が白くなって、その後はprogressbarも更新されなくなります。(update idletasksではダメ)
ということで、数秒おきにupdateしないとprogressbarが更新されません。
見た目を重視しているので無駄はあきらめることにしました。

943:デフォルトの名無しさん
13/03/31 08:08:41.45
Tcl/Tk 8.4.20予告 6/1(随分さきの話だが)に最終版リリース予定らしい。まだ8.4.を改良してたのか。
Tcl/Tk 8.4.20 Release Announcement
June 1, 2013

The Tcl Core Team is pleased to announce the 8.4.20 releases of the Tcl
dynamic language and the Tk toolkit. This is the twentieth and *FINAL*
patch release of Tcl/Tk 8.4. With this release, support for Tcl/Tk 8.4
comes to an end.

944:デフォルトの名無しさん
13/04/03 22:36:01.28
Tcl/Tk 8.5.14 Release Announcement
April 3, 2013

945:デフォルトの名無しさん
13/04/09 21:46:20.56
>>5の予想を裏切り2014年まで持つ勢いだが、
ActiveTcl 8.6.1.0とTclDevKit 6.0の登場が変えてくれることを願う。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch