●●●●TCL/TKなら俺に聞け 2●●●●at TECH
●●●●TCL/TKなら俺に聞け 2●●●● - 暇つぶし2ch1:デフォルトの名無しさん
07/05/01 14:52:44
【英語サイト】
プロジェクト本拠地
URLリンク(tcl.sourceforge.net)
最新版ソースコード
fURLリンク(ftp.tcl.tk)
The Tcler's Wiki
URLリンク(wiki.tcl.tk)
The comp.lang.tcl Newsgroup
URLリンク(groups.google.com)
ActiveTcl
URLリンク(www.activestate.com)

【日本語サイト】
もっとTcl/Tk
URLリンク(www.interq.or.jp)
Tcl/Tk Scripting Laboratory
URLリンク(www.geocities.jp)
Tcl/Tk Primer
URLリンク(mibai.tec.u-ryukyu.ac.jp)
Tcl 8.4.1 Manual Command Reference
URLリンク(www.freesoftnet.co.jp)
CategoryTclTk - mynote
URLリンク(reddog.s35.xrea.com)

【前スレ】
●●●●TCL/TKなら俺に聞け●●●●
スレリンク(tech板)

2:デフォルトの名無しさん
07/05/01 15:06:41
待ってました!

3:デフォルトの名無しさん
07/05/01 15:16:44
待ってたならおまえが建てろよw
8.5a6が出たので来てみればdat落ちしてるし

4:デフォルトの名無しさん
07/05/01 19:27:39
なんか急に落ちたよね

5:デフォルトの名無しさん
07/05/01 20:30:10
前スレは4年半も持ったので、このスレも2012年くらいまではいけるという予言

6:デフォルトの名無しさん
07/05/01 23:55:07
                / ̄ ̄\
              /  ヽ_  .\
              ( ●)( ●)  |     ____
              (__人__)      |     /      \
              l` ⌒´    |  / ─    ─  \
             . {         |/  (●)  ( ●)   \
               {       / |      (__人__)      |
          ,-、   ヽ     ノ、\    ` ⌒´     ,/_
         / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ,
        /  L_         ̄  /           _l__( { r-、 .ト
           _,,二)     /            〔― ‐} Ll  | l) )
           >_,フ      /               }二 コ\   Li‐'
        __,,,i‐ノ     l              └―イ   ヽ |
                    l                   i   ヽl

             2007年 5月1日 糞スレにて

7:デフォルトの名無しさん
07/05/01 23:57:49
>>1
986で落ちたか

8:デフォルトの名無しさん
07/05/02 12:17:37
TCL\TKで書かれたアプリって例えばどんなものがあるんでしょうか?

9:デフォルトの名無しさん
07/05/02 13:35:18
Getleftとか

10:デフォルトの名無しさん
07/05/02 16:47:22
PgAccess
aMSN
TkSQLite
TkDiff
TkCVS

ちょっと知られてるのはこんなもんすか・・・。

11:デフォルトの名無しさん
07/05/03 06:03:04
tknamazu と tkppxp に世話になった人は多いんでは。
あの頃はLinuxのデスクトップ回りがあまりにウンコ品質だったんで、
tkが神に思えた。

12:デフォルトの名無しさん
07/05/10 05:16:32
Filerunnerを今でも使っている俺が来ましたよ

13:デフォルトの名無しさん
07/05/12 00:35:15
URLリンク(bitwalk.blogspot.com)
bitWalkってこっちでTclのことをゴソゴソやってたんだな!
今まで気がつかなかったぜ!!


14:デフォルトの名無しさん
07/06/17 00:04:31
hosyul/tk

15:デフォルトの名無しさん
07/06/18 03:43:58
やっぱ age るわ

16:デフォルトの名無しさん
07/06/18 16:13:39
Tk8.5のCVS HEADでttk::dialogが予告無く消えてて困った。
おまえらもきおつけろ

17:デフォルトの名無しさん
07/06/18 23:54:50
8.5の正式版っていつになったら出るんだろうな。

18:デフォルトの名無しさん
07/06/19 23:33:28
tileのtreeviewの使い勝手やルック&フィールと速度がいまいちなんだなぁ
本家に取り込まれるならもう少しがんばってほしい
panedも妙に重いし...本家のpanedwindowはweightが指定できないのなんとかならんのかなぁ

19:デフォルトの名無しさん
07/06/20 03:02:08
>>18
ttk::treeviewは将来なくなるかもしれないからきおつけろ。

20:デフォルトの名無しさん
07/06/21 00:12:13
>>19
treectrlを使うことにしたよ。速度も外観もなかなかイイ

21:デフォルトの名無しさん
07/06/28 13:14:37
×ティックルティーケー
○ティコゥスラァッシティーケィ

英語は発音大事。

22:デフォルトの名無しさん
07/06/28 20:48:55
ところでActiveTcl8.4.15は出ないのかね・・・。

23:本田
07/08/02 23:05:36
>ActiveTcl 8.4.15.0 July, 2007
> includes Expect for Windows
>ActiveTcl 8.5.0.0 Beta 8 July, 2007
URLリンク(www.tcl.tk)

24:デフォルトの名無しさん
07/08/03 17:30:19
Tcl8.5をCVS HEADに上げたらIncrTclが動かなくなった
おまえらもきおつけろ

25:デフォルトの名無しさん
07/08/04 00:10:21
アイコンも替わった

26:デフォルトの名無しさん
07/08/04 01:07:13
Tcl8.5のHEADはまじやべえ。Tktableもうごかねえ・・・。

27:デフォルトの名無しさん
07/08/04 15:13:06
CVSのHEADを勝手にビルドして羽後かねぇとほざいているやつがウザイ

28:デフォルトの名無しさん
07/08/04 18:32:52
勝手にビルドっていうけど、誰かが試してバグを見つけていかないといけないんだぜ。
なんでうざいんだぜ。

29:本田
07/08/27 08:11:15
>Legacy Tcl
URLリンク(sourceforge.net)
>Tcl in the legacy applications world: includes a Cobol/Tcl interface,
> an LDAP directory browser/manager and a set of tk/widgets with strong formatting.

30:デフォルトの名無しさん
07/08/29 18:20:11
ネットワークプログラミングについて解説してあるサイトってありますか?

31:本田
07/08/29 22:53:15
>>30

>telnet
URLリンク(wiki.tcl.tk)

32:デフォルトの名無しさん
07/08/30 09:38:55
>>31
サンキュー! ああでも難しそうだ。

33:デフォルトの名無しさん
07/09/16 23:50:53
panedwindowに関する質問です。
以下のコードで、sashの位置を求めると
"5 2"
という値が返ってくるのですが、これはどういう意味なのでしょうか?
(画面上ではsashは横幅1000くらいのメインウインドウの左右中央に表示されています)

またsash placeで値100 0を設定後、再び取得しても、設定した値とは違う値"6 2"が返ってきます。
これはwidgetのバグでしょうか?
環境はwindowsXP、ActiveTcl 8.4.15です。

panedwindow .m
pack .m -fill both -expand yes

frame .m.l
frame .m.r

.m add .m.l .m.r

text .m.l.t
text .m.r.t
pack .m.l.t
pack .m.r.t

.m.l.t insert end [.m sash coord 0]
.m sash place 0 100 0
.m.l.t insert end [.m sash coord 0]


34:デフォルトの名無しさん
07/09/17 18:55:09
再描画のじおめとりの再計算タイミングとかかな
Linux@ActiveTclでやってみると 100 2 と要望どおりになるな
Winsows版のバグかもなあ

35:デフォルトの名無しさん
07/09/20 22:11:06
>>34
回答ありがとうございます。
誰も人がいないのかと思い、別の場所で聞いてしまっていました。すみません。
updateを挟むと解決するようです。

36:デフォルトの名無しさん
07/09/21 22:10:46
dqkitの8.4.13版から8.5版に乗換えたら日本語が文字化けしてしまった!?
unwrapするとcp932.encもshiftjis.encも入っているけど使ってないのか??
取敢えず8.4.版に戻るか


37:デフォルトの名無しさん
07/09/22 00:56:48
>>36
URLリンク(reddog.s35.xrea.com)
これ関係?

38:デフォルトの名無しさん
07/09/23 16:20:31
ActiveStateの有償のやつだと、バイナリ化する事が出来るみたいだけど、
使われてる方いますか?

39:デフォルトの名無しさん
07/09/23 21:17:51
>>38
有償版でもただのstarkitなんちゃうん?
フリーのActiveTclにもbasekitがついてるので
それでいいんちゃうん?

40:38
07/09/23 23:50:01
恥を忍んで初心者レベルの質問をするのですが、
Tcl/Tkではstdinを一旦closeして、再openする事は出来ないのでしょうか?
ActiveTclのExpectで、既に存在するファイルを読み込ませようとして

close stdin
set stdin [open "testbinaryfile.dat" "r"]
fconfigure stdin -translation binary

とかやってみても、うまくいかず…。

>>39
TclAppなるものを使って、バイトコードを専用インタプリタでラップする
構成みたいです。
URLリンク(aspn.activestate.com)
ターゲット環境にTcl/Tkのインタプリタをインストールする必要が無いとか、
ソースを見られたくないとか云う用途に使うみたいです。

41:デフォルトの名無しさん
07/09/24 00:48:29
標準入力を閉じるのはたぶん無理。

set fd [open testbinaryfile.dat r]
fconfigure $fd -translation binary
set data [read $fd]

42:38
07/09/24 01:25:05
どうも。

>>41
expectに任意のファイルを読ませる為には、
1)外側(expect(1)やtclsh)でリダイレクトさせるか
2)exp_spawn等で、cat(1)するだけのコマンドを開く
しかないみたいですね。むぅ…。

43:デフォルトの名無しさん
07/09/24 10:44:10
そもそもset stdin [open...]はstdinという名前の変数に新しく出来たファイルハンドル文字列を代入しているだけでしょ。
「stdin」っていう文字列が標準入力を表現するファイルハンドルだよ。

付け替えはたぶん dup を使うんじゃないかな?Tclxに入ってる

package require Tclx

set f [open aaa.txt]
dup $f stdin

puts [read stdin]


44:38
07/09/24 13:10:16
>>43
試してみたのですが、>>43のdupをやってから、package require Expectしないと、
うまくいかないみたいです。こんなモノなんでしょうか?

>>39で紹介されたstarkit化(やstarpack化)に不安が…。

45:デフォルトの名無しさん
07/09/24 19:01:05
普通にファイルを開くんじゃなくてstdinに流し込みたいってどういう状況なん?

46:38
07/09/24 22:11:31
やろうとしてる事は、バイナリファイルの中からパターンを拾って、
マッチした付近で少し加工(殆どは元ファイルのコピー)なんですが、
うまくいってません。

>>45
expect_userに食わせる為にはstdinじゃないと駄目だからです。
expect_userだと、入力のコピーをするのに、自前で、
puts $expect_out(0,string) とかやらないといけないらしく、
Expectを使うメリットが怪しくなってきました。

47:デフォルトの名無しさん
07/09/24 22:40:08
それどう考えてもExpectを使うところじゃなくね?

48:デフォルトの名無しさん
07/09/24 23:48:56
Tclのobjc.objvのI/Fは別途後で作ってやるとして、そういう中身はCで書いた方がはやくないか?

49:38
07/09/25 00:46:23
>>47-48
うん、そんな気がしてきました。

expect_user {...} の中で、read stdin とかやると、期待とは違う振舞いに
なったりするみたいなので、Expectを使わない方向で考え直します。

50:デフォルトの名無しさん
07/09/25 06:14:59
TCLは終わる予感がするね・・・昔は散々使ってたのに・・・

51:38
07/09/25 06:39:39
>>50
www.oreilly.comからTcl/Tk本が完全に消えてますね。

52:デフォルトの名無しさん
07/09/25 11:11:11
最初の空白までがコマンドって文法のお陰で、シェルとの相性は良いんだけどなぁ

53:デフォルトの名無しさん
07/09/25 18:45:35
bashやtcshに取って代われる力がtclshには無かった

54:本田
07/09/25 21:07:53
>>50
TKはGUIとして他の言語とコラボレーションする例は多いのに、
TCLは冷遇されてる、
TCLはTKのおまけとして盲腸のような存在なるかもしれない。

55:デフォルトの名無しさん
07/09/25 21:55:27
なんでも文字列として扱ってしまえってUnix的思想の象徴のような言語だと思う

56:デフォルトの名無しさん
07/09/25 22:48:53
>>51
検索したらあるけど。。。

57:デフォルトの名無しさん
07/09/25 22:59:03
OusterhoutのTcl本が8.5の内容で書き直されるっていう話を結構前から聞いてる気がするけど
肝心の8.5が全然正式版にならんな。

58:デフォルトの名無しさん
07/09/25 23:05:52
もうRuby/TKの時代になったのか

59:デフォルトの名無しさん
07/09/26 00:10:10
EDAの分野では当分デフォ

60:本田
07/09/26 20:39:38
>Why Threads Are A Bad Idea (for most purposes).
> This was an Invited Talk at the 1996 USENIX Technical Conference (January 25, 1996).
> The talk compares the threads style of programming to an alternative approach, events,
> that use only a single thread of control.
> Although each approach has its weaknesses, events result in simpler,
> more manageable code than threads,
> with efficiency that is generally as good as or better than threads.
> Most of the applications for which threading is currently recommended
>(including nearly all user-interface applications)
> would be better off with an event-based implementation.
> The slides for the talk are available in PowerPoint or PDF format.
> There isn't a written paper that corresponds to this talk.
URLリンク(home.pacbell.net)
URLリンク(home.pacbell.net)
URLリンク(home.pacbell.net)


61:デフォルトの名無しさん
07/09/26 22:12:33
>>60
未だにその話を知らない奴も居たのか…
Guido とか Matz とか、言語設計者には並列処理を軽んじる人が少なからず居るのは
何でだろうね。実装が面倒だからか、ショボイマシンしか触った事が無いのか…

62:デフォルトの名無しさん
07/09/26 22:29:22
そのスライドの7枚目にある

Callbacks don't work with locks.

ってどういう意味?


63:本田
07/09/26 22:43:01
>>61

恥ずかしながら知らんかった。

>>62

Deadlock問題のことか?

>Deadlock
URLリンク(en.wikipedia.org)

64:38
07/09/26 23:24:53
>>56
すいません、JavaScript切ってました(入れると正しく検索されます)。

65:38
07/09/26 23:33:34
>>61
そう云うのは、OSが面倒を見るべき問題だと思ってるとか、
あるいは、細粒度処理に興味がないとか…。

66:デフォルトの名無しさん
07/09/27 08:32:38
>>63
たぶんdeadlockの話だと思うが、thread+callback関数の場合に
特有の問題とはなんなのだろう?

67:本田
07/09/27 21:29:44
>>60

>2007年05月08日
>Event-driven Programming for Robust Software
URLリンク(www.ce-lab.net)

>Rob von Behren, Jeremy Condit and Eric Brewer (UCB)
>Why Events Are A Bad Idea (for high-concurrency servers)
>Proceedings of HotOS 03, May 2003
URLリンク(www.spa.is.uec.ac.jp)
URLリンク(www.cs.ualberta.ca)

>= Event-driven Programming for Robust Software =
URLリンク(www.ce-lab.net)
URLリンク(pdos.csail.mit.edu)

>On the duality of operating system structures
URLリンク(www.sics.se)

>Protothreads: simplifying event-driven programming of memory-constrained embedded systems
URLリンク(www.sics.se)
URLリンク(www.sics.se)

>"Combining Events and Threads for Scalable Network Services --- Implementation and evaluation of monadic, application-level concurrency primitives",
> by Peng Li and Steve Zdancewic, 2007
URLリンク(www.seas.upenn.edu)
URLリンク(www.seas.upenn.edu)
URLリンク(www.seas.upenn.edu)

68:デフォルトの名無しさん
07/09/27 21:44:38
みんなよろこべTcl8.5がついに!!!!
















URLリンク(www.tcl.tk)
アルファからベータになった。

69:デフォルトの名無しさん
07/09/27 22:44:49
やっと仕様凍結か。
8.5のお気に入り機能

1. inオペレーター
2. switchの高速化
3. namespace ensemble



70:デフォルトの名無しさん
07/09/27 22:55:45
  _________ 
  (遠く宇宙のラップを)
   ̄ ̄ ̄\| ̄ ̄ ̄ ̄ 
URLリンク(www.premiumtv.12gbfree.com)


71:デフォルトの名無しさん
07/09/30 08:42:31
8.5 で bind のキー定義が複数書けるようになって欲しかったよ。


72:デフォルトの名無しさん
07/10/02 02:53:59
>54
でもやっぱりtkのコードを一番書きやすいのはTclだと思う。
Python/tkやRuby/tkも弄ったが、凄く書きにくいと思った。

73:デフォルトの名無しさん
07/10/03 02:01:30
spinboxもtile対応してくれよ...
ほかのtileウィジェットとheightあわねーし...

74:デフォルトの名無しさん
07/10/03 21:41:05
>>73
なんやしらんけどOSXでの実装の問題で
どうたらこうたらとJeffがゆってた気がする。


75:本田
07/10/05 06:02:42
>>68
>Tcl/Tk 8.4.16 Sep 21, 2007
> Download Tcl/Tk 8.4.16
URLリンク(www.tcl.tk)

76:デフォルトの名無しさん
07/10/23 16:03:51
tkの概観をWindowsXPスタイルみたいに変更できますか?

77:デフォルトの名無しさん
07/10/23 22:30:31
>>76
tile/ttk使え

78:デフォルトの名無しさん
07/10/24 23:50:04
そんなばながー


79:デフォルトの名無しさん
07/10/31 23:43:39
久々にtcl wikiみたら、なんか見た目がかわってた

80:デフォルトの名無しさん
07/11/04 10:21:30
tcl/tk ver8.4.16 コンパイルしてtbcにしたら64bit足し算間違えるようになった。

81:デフォルトの名無しさん
07/11/04 19:39:02
ソースをUP

82:デフォルトの名無しさん
07/11/05 22:47:37
>80
足し算のソースは set sum [expr $a+$b] 
そう云えば expr {$a+$b} と expr $a+$b は32bit演算では同じになるけど64bitでやると違ってしまう????

83:デフォルトの名無しさん
07/11/08 13:29:27
邦訳されているリファレンス本の値段がチョー高すぎる
こりゃだめだorz

84:デフォルトの名無しさん
07/11/08 19:13:15
どうせ古いやつだろ。イラネ!

85:デフォルトの名無しさん
07/11/09 00:56:19
ActiveTcl8.4.9で、DOMでXMLを扱いたいんだけど、


package require dom

set afp [open "AAA.xml"]
set adoc [dom::DOMImplementation parse [read $afp]]
set aroot [dom::document conf $adoc -documentElement]


までは良くて、RootNodeを取得できるんだけど、
Root以下のNodeが取得できない。

dom::selectNode $aroot "//AA"

てやっても帰ってくるリストは空。(AAはXMLに含まれる要素名)
なんでダメなの?

86:デフォルトの名無しさん
07/11/09 20:23:56
AAA.xml見せい

87:デフォルトの名無しさん
07/11/09 20:33:02
あとtcl domよりtdomのほうがおすすめだ。速い。

88:デフォルトの名無しさん
07/11/10 17:30:54
>>86
ごめん、都合上見せられないんだ。
一昨日は上手くいったのに・・・

>>87
試してみます。

89:デフォルトの名無しさん
07/11/17 11:08:39
>80 自己レスポ
ver8.4で64bit演算するときはwide()を使うらしい
wideなんて関数知らんかった。
ver8.5関連の頁をみていると8.5ではwide()使わなくても64bit演算できると書いてあるので気がついた。8.4の仇花か。
兎も角一応まにあった。 お騒がせ



90:本田
07/12/08 11:36:23
>TkSQLite
URLリンク(reddog.s35.xrea.com)
>What is This?
>TkSQLite is a GUI database manager for SQLite implemented by Tcl/Tk.
>It can manage SQLite version2.8 and SQLite version3.x database.
> And it can handle many encodings like Shift-JIS, EUC-JP and Windows native milti-byte encodings not only UTF-8.
> And it can run on Windows and Linux and MacOSX as native Look & Feel. And it's Freeware.

91:本田
07/12/14 18:00:36
Tcl/Tk 8.5.0 RC3
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)

92:デフォルトの名無しさん
07/12/14 23:08:49
rc3出るの早すぎね?このまえrc2出たばっかじゃん?


93:本田
07/12/15 00:34:06
>>92
RC2とRC3の間は、約3日間。

94:本田
07/12/15 08:10:05
Tcl/Tk 8.5.0 RC4
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)


95:デフォルトの名無しさん
07/12/15 17:40:19
rc4出るの早すぎね?このまえrc3出たばっかじゃん?

96:デフォルトの名無しさん
07/12/15 18:33:04
うおおおこのペースなら年末までにTcl/Tk9.0だな!

97:本田
07/12/15 22:04:32
>>95
RC3とRC4の間は、約1日間。

98:本田
07/12/17 23:22:46
>MinGW Cross Compiler
URLリンク(sourceforge.net)
>The aim of this project is to provide and maintain MinGW
>(Minimalist GNU-Win32, URLリンク(www.mingw.org)) cross-compiler package for Linux

> Project Admins : bitwalkProject Admin
> Developers : 1

99:本田
07/12/18 18:03:59
>>94
Tcl/Tk 8.5.0 RC5
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)


100:本田
07/12/18 18:07:11
>>96
年末までに、Tcl/Tk 8.5.0 RC10だろう。(笑)

101:デフォルトの名無しさん
07/12/18 18:33:52
rc5出るn(ry

102:本田
07/12/19 02:01:17
>>99
Tcl 8.5.0 RC6
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)


103:デフォルトの名無しさん
07/12/19 02:13:18
rc6(ry
バグ報告まとまってから出そうよw

104:本田
07/12/19 04:21:33
>>102
Tcl/Tk 8.5.0
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)
fURLリンク(ftp.tcl.tk)


105:本田
07/12/19 04:23:03
>>104
一週間早いクリスマスプレゼント。

106:デフォルトの名無しさん
07/12/19 20:40:38
てぃくる/てぃーけー?
てぃっくる/てぃーけー?

107:デフォルトの名無しさん
07/12/19 20:41:14
てぃーしーえる/てぃーけー?

108:デフォルトの名無しさん
07/12/19 21:44:49
>104
どれを開いても URL Not Found と出るばかり 何なんだ???


109:デフォルトの名無しさん
07/12/19 21:46:18
>102,104
どれを開いてもURL Not Found と出るばかり 何なんだこれは????


110:本田
07/12/20 01:04:21
>>109
fURLリンク(ftp.tcl.tk)

111:本田
07/12/20 02:31:01
>>109
URLリンク(sourceforge.net)

112:デフォルトの名無しさん
07/12/20 17:43:39
いまだにTcl使っている人いるんだなー

113:デフォルトの名無しさん
07/12/21 08:21:18
アナウンスでたね。上に出てるURLは先にもれてたのかな。

114:デフォルトの名無しさん
07/12/21 23:42:59
さっそくだがベンチマーク取ろうぜ

115:本田
07/12/23 15:47:41
>>98
URLリンク(sourceforge.net)

>[PRODUCT] Tcl/Tk
>Latest tcltk8.5.0-011 Notes (2007-12-21 21:27)
> tcltk8.5.0-011-20071222.exe Mirror 6723504 9 i386 .exe (32-bit Windows)
> tcltk8.5.0-011-build_script.tar.gz Mirror 1565623 0 Other Other Source File

116:デフォルトの名無しさん
07/12/23 17:22:37
ActiveTcl8.5まだあ

117:デフォルトの名無しさん
07/12/23 18:19:04
>>116
もう出た。もう出たけど、ライブラリは付いていない罠。
ライブラリは8.4のを使うみたい?

118:デフォルトの名無しさん
07/12/31 09:21:10
>>117
URLリンク(groups.google.com)

Is ActiveTcl 8.5 release to be used as it is?
の議論によると、今のところ8.4に上書きするのが正しいらしい。


119:本田
08/01/01 22:35:05
>>118
アンインストールしないで、
上書きすると、
tclsh84とtclsh85の両方が使えるよ。

120:本田
08/01/07 06:33:26
>Latest Release: Tcl/Tk 8.4.17 (Jan 4, 2008)
URLリンク(www.tcl.tk)

121:デフォルトの名無しさん
08/01/12 04:09:05
EDAの制御用でもなく、単純なツールを書くのに
tclshとか利用すんのマジでやめてくれ > R社

122:デフォルトの名無しさん
08/01/12 08:22:41
Renesas?

123:デフォルトの名無しさん
08/01/12 15:19:29
単純なツールなら別にいいじゃん

124:デフォルトの名無しさん
08/01/12 23:55:37
ローカルに手を加えたいができないユーザ多数なんよ。
なんせtclなんかで書いてあるからな。

125:デフォルトの名無しさん
08/01/13 03:24:36
単純なツールならどの言語で書かれていても調べて改造するくらいできるのでわ

126:デフォルトの名無しさん
08/01/13 09:24:32
ActiveTcl8.5のchm見てたら
いつの間にやらチュートリアルついてるのな
今初めて気付いた

127:デフォルトの名無しさん
08/01/13 09:30:28
Whitespaceで書かれたら改造する自信ないな

128:本田
08/01/13 14:26:09
>Micropolis Downloads
URLリンク(www.donhopkins.com)
>Micropolis, Unix Version.
> This game was released for the Unix platform in or about 1990 and has been modified for inclusion in the One Laptop Per Child program.
> Copyright (C) 1989 - 2007 Electronic Arts Inc.
>If you need assistance with this program, you may contact:
URLリンク(www.donhopkins.com)

Tcl6.4とTk2.3のソースコードが丸ごと入ってる。


129:デフォルトの名無しさん
08/01/13 16:10:55
シムシティってTclで書かれてたんだ・・・

130:本田
08/01/18 07:45:20
>>120
>ActiveTcl 8.4.17.0
URLリンク(www.activestate.com)

131:デフォルトの名無しさん
08/01/19 03:51:09
Tcl/Tk紹介ビデオ
URLリンク(www.nicovideo.jp)

132:デフォルトの名無しさん
08/01/19 11:27:48
Tk がファイルのドラッグドロップに対応していて、
OpenGL の描画先として簡単に指定できるなら
wxWidgets から乗り換えようかと思っているんだけど、どうなんでしょうか。




133:本田
08/01/19 12:44:05
>>132
TkDND
>URLリンク(sourceforge.net)
>tkdnd is an extension that adds native drag & drop capabilities to the tk toolkit.
> It can be used with any tk version equal or greater to 8.3.3
>and currently only the UNIX (X-Windows)
>and Microsoft Windows operating systems are supported.

134:本田
08/01/19 12:45:44
>>132
>Togl ― a Tk OpenGL widget
>Copyright (C) 1996-2002 Brian Paul and Ben Bederson
URLリンク(togl.sourceforge.net)

135:本田
08/01/19 12:49:01
>>132
>TkOGL
URLリンク(hct.ece.ubc.ca)
>TkOGL is a package extension to the Tcl scripting language that enables a user to utilize OpenGL,
> a multi-platform API for interactive 2D and 3D graphics applications.
> TkOGL makes it possible for the user to display OpenGL graphics on the Tk canvas along with other Tk widgets.
> This creates opportunities for developers,
> educators and presenters to script up interactive demos,
> graphical learning models, and colorful presentations.
> Designing a simple user interface that interacts with OpenGL graphics is much simpler and much faster through the Tcl interpreter.
> Much like other Tk Widgets,
> OpenGL graphics can be rendered step by step so users can see the progressive steps appear on the canvas.
> TkOGL eliminates the use of compilers, shared libraries, header files and utility toolkits such as GLUT.

136:デフォルトの名無しさん
08/01/19 14:10:43
今OpenGLやるならTogl よりTcl3Dがいいぜ。サンプルも多いし。
それよりwxから乗り換えようと思った動機を教えて欲しいんだぜ。

137:本田
08/01/19 14:21:52
>>136
URLリンク(www.tcl3d.org)

138:デフォルトの名無しさん
08/01/24 17:38:15
みなさん、こんにちは。
突然おじゃましてすみません。
一つ質問があります。

実は先日、Linux用のあるシミュレーションソフトを購入して、
それをASUS Eee PCというPCにインストールして動かしているのですが、
もっと計算速度が上がればなーと考えていてふと思い付いたのが、
もしPS3にLinuxを入れて動かせばいいのかもしれない、と。

そのシミュレーションソフトはTCL/TKというグラフィカル・ツールキットを
先に入れておく必要があるのですが、そのTCL/TKというものはPS3にも
対応しているのでしょうか?

ちなみにEee PcにはActiveTcl8.4というものをインストールしました。
このシミュレーションソフトは、なにやらwishというものを必要とするとかで、
詳しいことはわかりません。


139:デフォルトの名無しさん
08/01/24 22:31:28
>138はマルチ

140:本田
08/01/24 23:28:35
>>138
まずサポートセンターに電話する。

141:デフォルトの名無しさん
08/01/24 23:44:55
8.5正式版でたけどOusterhout本の改訂の話ってどうなったのかなあ。

142:132
08/01/25 10:30:05
どもありがとう
今 wxPython + PyOpenGL でゲームを作ってるけど
wxWidgets はDLLのサイズがでかくてどうにかならんものかと。
あと Python には標準で Tkinter がついてるから、Tk でできるならその方が何かと楽。

143:本田
08/01/25 21:55:41
>epcEdit XML/SGML editor
>Available for Windows, Linux, and Solaris - use one application on all relevant platforms in your organization.
>Download your free copy!Download your free copy of epcEdit for Windows, Linux or Solaris!

URLリンク(www.epcedit.com)

>News: epcEdit is now free for personal and commercial use!
>epcEdit will become available under an open source license in the future,
> after we have removed copyrighted third-party components.
> In the meantime the current version of epcEdit can be used free of charge.
> An unlimited activation key can be downoaded here.




144:デフォルトの名無しさん
08/01/26 15:08:49
ひとつお聞きしたいことがあります。

Tcl/Tkを使って連続的にデータを処理表示しているのですが、
数時間たつと、
X Error of failed request: BadAlloc
(insufficient resources for operation)
Major opcode of failed request: 53
というエラーを吐いて止まってしまいます。

どこが悪いか調べたいので、
Tcl/Tkのプログラムで、残り資源を表示するような機能はありませんか。
解決策をご存知でしたら教えてください。


145:デフォルトの名無しさん
08/01/26 17:38:21
psコマンドで調べたらええんちゃうの。
何の処理をしてるのかしらんが、Tkのありがちな
罠として画像の解放しわすれのようなオチの予感がする。

146:本田
08/01/27 12:32:24
>>143
>TkSGML
URLリンク(www.epcedit.com)
>SGML widget reference manual

147:デフォルトの名無しさん
08/01/27 13:38:41
Tclでヒープ的なメモリ割り当てをしてGCすることってできないのかなあ。

148:デフォルトの名無しさん
08/01/27 16:00:48
>>145
144です。ありがとうございます。
自分でもDeleteコマンドで削除して、気をつけてはいるんですが、
どこかうまくいってないようです。

149:デフォルトの名無しさん
08/01/27 16:05:09
>>147
ローカル変数の割り当てはそうしてるだろ

150:本田
08/01/27 18:19:52
>>144
> X Error of failed request: BadAlloc
> (insufficient resources for operation)
> Major opcode of failed request: 53

これはおさらく、
X Serverのエラーで、
TclやTkのエラーではない。


>LECTURE 14 エラーイベント
URLリンク(homepage3.nifty.com)
>BadAlloc 要求リソースの割り当てに失敗

151:デフォルトの名無しさん
08/01/27 19:52:34
>>149
ローカル変数は全然ヒープ的じゃないよー。スコープ=寿命でスタック的なもの。

152:デフォルトの名無しさん
08/01/29 14:41:57
はじめまして、私は新人プログラマです。
ひとつお伺いしたいことがあります。

IPフィルタリング機能をTCLで行ないたいと思っております。動作としては、下記のIPアドレスがサイトへアクセスしてきた場合
ページを閲覧できる様にし、それ以外のIPアドレスが来た場合は閲覧出来ない様にするといった感じのものです。OSはSolarisを使用して行います。

特定のIP
1.1.1.1
1.1.1.2

以上の事から、TCLで上記の様な制御を行なうにはどういったソースを書けば宜しいのでしょうか。例題的な感じで結構ですので御回答宜しくお願いします。また、これらの内容をみて不明点などが御座いましたら
ご質問頂けたらと思います。


ちなみに、下記方法で実施してみましたがダメでした。

【リモートホスト情報の取得】
CGI プログラミングをする上でクライアントのリモートホストの情報を利用したい場合がある。 例えば特定のホストからのアクセスを規制したい場合などである。
サーバに Apache を使用していれば IP アドレスの値が環境変数 REMOTE_ADDR から取得できる。 Tcl では $env(REMOTE_ADDR) のようにして環境変数を取り出す。
さらに Apache の設定次第では環境変数 REMOTE_HOST にホスト名が与えられているかもしれない。 そうでない場合は IP アドレスからホスト名を取り出す必要がある。
このためには TclX に含まれている host_info コマンドを使えばよい。 このコマンドは Perl での gethostbyaddr 関数や gethostbyname 関数に相当する機能を提供する。

ホスト名を取り出す場合はサブコマンド official_name を以下の書式で使用する。 引数 host には $env(REMOTE_ADDR) で得た値などを与える。

153:デフォルトの名無しさん
08/01/29 19:02:57
長文乙。
そんなことより、Apacheの設定見れ。

154:デフォルトの名無しさん
08/01/29 21:19:27
if { $env(REMOTE_ADDR) in $blacklist } {
exit
}

こんなのでいいのか?こんな簡単なことでいいのか?
簡単すぎて不安になるぜ!

155:デフォルトの名無しさん
08/01/29 21:21:40
新人がTclでウェブプログラミングやるっていったいどんな会社なのか興味があるなあ。
なんにせよ152が書いたコードを張るところからだね。

156:デフォルトの名無しさん
08/01/29 21:25:37
>>154
in演算子ってTcl8.5からだからまだ152の環境に入っていない可能性が高いね。

157:デフォルトの名無しさん
08/01/29 22:03:18
ていうかどうせならTclHttpd試してみてくれよ。

158:本田
08/01/30 19:46:55
>>157
TclHttpdは、アプリケーションに組込むのが主流だろうな。
つまりアプリケーションサーバー。

>>143
>epcEdit XML/SGML editor
に組込まれていてヘルプを見るのに使われている。

159:本田
08/01/30 20:59:27
>>152
>サーバに Apache を使用していれば IP アドレスの値が環境変数 REMOTE_ADDR から取得できる。

同時に複数の人がApacheに接続すれば、
環境変数 REMOTE_ADDRには、
誰のIP アドレスが入るのかな?

最初の人か?
最後の人か?

160:デフォルトの名無しさん
08/01/30 21:48:36
CGIなんだからそれぞれの人のでしょ。

161:本田
08/01/30 22:47:10
>>160
そうですね。

162:デフォルトの名無しさん
08/01/31 11:32:40
えーっと・・・

163:デフォルトの名無しさん
08/02/03 19:01:06
正直Tcl使うよりRuby/TK使った方が便利なんだが・・・

164:デフォルトの名無しさん
08/02/03 19:18:05
俺は C から使うのが便利だな

165:デフォルトの名無しさん
08/02/03 20:38:40
で、Ruby/Tkで書いたアプリって何かあんの?

166:デフォルトの名無しさん
08/02/03 20:45:24
やっぱPerlで

167:デフォルトの名無しさん
08/02/03 22:23:35
non-TclのTkバインディングってろくにドキュメント整備されてるやつがない印象がある。

168:デフォルトの名無しさん
08/02/05 18:14:27
俺も普段よくRuby使うからRuby/Tk触ったことはあるが…
Ruby流でもTcl流でもない、妙な違和感があるんだよなぁ。

169:デフォルトの名無しさん
08/02/06 11:36:52
数値計算のパラメータ設定マクロ用にtclを使いたいのですが、
C, C++プログラムにtclを組込む方法はどうやれば良いですかね?


170:169
08/02/06 14:25:55
Tcl_CreateInterpでインタプリタを作って、Tcl_EvalFileでtclで記述したファイルを実行、
特定の名前の変数にパラメータを入れて、Tcl_GetVar等でパラメータの入った変数を読み出せばできますね。

自己レスすまそ

171:本田
08/02/07 00:52:46
>>157
>AOLserver
URLリンク(sourceforge.net)
>AOLserver is a multithreaded,
> Tcl-enabled,
> massively-scalable and extensible web server tuned for large scale, dynamic web sites.
> AOLserver also includes complete database integration and a dynamic page scripting language.

172:デフォルトの名無しさん
08/02/08 00:00:42
8.5版に入換えたらeval命令が異様に遅くなった
md5を計算するのにevalを多用した箇所がすごいことになってしまった。困った。

173:デフォルトの名無しさん
08/02/08 00:31:28
MD5なんかCで実装するもんじゃないのか

174:デフォルトの名無しさん
08/02/08 00:54:46
よくわからんが、md5なんてtcllib_critclとかTrfなんかの
Cで書いた枯れた拡張をつかうものなのでわ・・・。

175:本田
08/02/08 19:00:15
Eggdrop Bots and Tcl Scripts
URLリンク(www.ruptbot.com)
URLリンク(www.ruptbot.com)
URLリンク(www.ruptbot.com)

176:デフォルトの名無しさん
08/02/08 22:56:12
172です。誤解を招くような文章で申し訳ない。改めて書直します。
8.4版->8.5版に乗換えて快適な環境になりましたか。小生の場合は疑問符です
小生の場合、既存のプログラムの内の1つが異常なくらい遅くなりました。
調べると1つのprocが極端に遅くなっていた。このprocはRFC1321の手順通りにmd5を計算しているだけで、何の変哲もないprocですが、evalを多用しています。
今の所evalの処理が遅くなったのかと疑っています。無論真相は不明です。


177:デフォルトの名無しさん
08/02/08 23:19:07
よっしゃ3連休で暇な俺が8.5に最適化してやるからうpしろ。

178:デフォルトの名無しさん
08/02/09 02:17:51
あれ、evalか...exprかと勝手に脳内変換してたよ
md5をPureTclで計算するのになぜevalを多用するのかよくわからないな
evalでプレコンパイルして次回からはより速くなるようにする処理のところが
8.5では相対的にオーバーヘッドが大きくなったのかもしれないな

179:デフォルトの名無しさん
08/02/09 21:05:44
うpまだ?暇すぎて死にそう

180:デフォルトの名無しさん
08/02/09 22:46:28
>>176
URLリンク(reddog.s35.xrea.com)
ここを見た感じではevalが遅くなってるってことは
なさげに見えるけどなあ・・・。なんだろう。

181:デフォルトの名無しさん
08/02/09 23:51:09
>>177,179
md5を計算する手製proc
リストはここに置いておきます。
URLリンク(home.netyou.jp)

tcl ver8.4迄は正常に動作しver8.5でとち狂った。
ver8.2で動作させるとrfc1321の例題と同じ結果が得られることは確認すみ。


182:デフォルトの名無しさん
08/02/10 05:19:39
できた!たしかに8.5だと3倍くらい遅くなってた。たぶん変数を
二重に展開してexprとevalのコンボで最適化が効かなくなって
しまったと推測。

直したのは基本的にそこを素直にprocにしただけ。
8.4では4倍、8.5では12倍高速化した。あと、applyを使った
ものも書いてみたけど、procの方が速かった。

URLリンク(chun.s11.xrea.com)

ていうか、ひょっとして一つのprocで完結させたかったのかな。
それならapplyだ!

183:デフォルトの名無しさん
08/02/10 08:03:16
VineLinux4.2とActiveTcl8.5の環境でtktreectrlをソースからビルドしたいんだけど、
makeでつまづいてしまうんだが。

$tar xzf tktreectrl-2.2.3.tar.gz
$cd tktreectrl-2.2.3
$./configure --prefix=/opt/ActiveTcl-8.5 --enable-threads
$make
うだうだ
generic/tkTreeColumn.c:13 から include されたファイル中:
generic/tkTreeCtrl.h:13:20: tkPort.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:14:21: default.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:15:20: tclInt.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:16:19: tkInt.h: そのようなファイルやディレクトリはありません
うだうだ

tkPort.hってなんぞ?
/opt/ActiveTcl-8.5/include にそんなヘッダ入ってないんだけど・・・

184:本田
08/02/10 09:05:22
>>183
URLリンク(sourceforge.net)
からtcl8.5とtk8.5のソースコードをgetしろ。

185:デフォルトの名無しさん
08/02/10 09:16:09
>>184
ActiveTclを使わずにtckもtkも自分でソースからビルドしたらtktreectrlも上手く入ってくれた
ありがと

186:デフォルトの名無しさん
08/02/10 14:19:14
exprを多用したTclプログラムを高速化するにはとにかくexprの引数全体を { } で囲むってことを覚えておくといい。
式のコンパイル結果をキャッシュしてくれるようになるので本当にこれだけでだいぶ高速化する。
181のコードだとさらにexprコマンドを変数にいれてevalとかしちゃってるんでそこもどうにかしなきゃだけど

187:デフォルトの名無しさん
08/02/10 14:23:36
あー182の改訂版だとそういうところばっちり抑えてるね。余計なコメントだったか

188:デフォルトの名無しさん
08/02/10 22:14:14
184 09:05:22 >>185 09:16:09 僅か10分でソースコードをgetして確認まで完了。天晴れ!

189:デフォルトの名無しさん
08/02/10 22:31:43
>>188
まぁ俺様のスパコンなら余裕よ

じゃなくて、同じ事考えててソースから入れたら上手く行って「ヤッター」って書き込もうとしたらレスが付いてたの。
そんだけ。

190:本田
08/02/11 12:39:59
Welcome to the Tcl Developer Xchange!
URLリンク(www.tcl.tk)
Latest Software Releases

Tcl/Tk 8.5.1 Feb 5, 2008
Tcl/Tk 8.4.18 Feb 8, 2008

ActiveTcl 8.5.1.0 Feb, 2008


191:デフォルトの名無しさん
08/02/15 19:14:58
181>どうやら8.5版ではevalの処理が今一歩か。
evalはtclのインタープレタ(解釈実行)機能を利用する窓口なのでevalを封印する様では暫く8.4版に留まって様子を見るのも有力な選択肢かもしれない。


192:デフォルトの名無しさん
08/02/15 23:04:55
俺は8.4の頃からバイトコンパイルの邪魔になるので
evalは封印してきたわけだが・・・。

193:デフォルトの名無しさん
08/02/15 23:09:55
そういえば8.5で{*}が追加されたけどこれもeval使うよりは速いのかなー。

194:デフォルトの名無しさん
08/02/16 07:42:19
>192 :バイトコンパイルの邪魔になるのでevalは封印・・・。 
     →eval命令のコンパイルで何か支障があるのですか?

195:デフォルトの名無しさん
08/02/16 16:20:43
すみません。教えてください。
set a 3
set b {$a + 2}
expr $b*4
これが 20 でなく 11 になる理由は分かりました。しかし、次のような C 言語のソースをそのまま Tcl に直すとどうなるのですか?
int a = 3;
int b = a + 2;
int c = b * 4;

196:デフォルトの名無しさん
08/02/16 18:05:43
set a 3
set b [expr $a + 2]
set c [expr $b * 4]

197:デフォルトの名無しさん
08/02/16 21:40:46
なるほど。ありがとうございました。

198:デフォルトの名無しさん
08/02/22 21:40:37
書籍の類が姿を消して久しいが今日丸善本店に立寄るとEffective Tcl/Tkが書棚にあった。手にとって奥付を見ると「1999年8月1日初版発行」になっている!?今年は平成廿年。

199:本田
08/02/23 07:19:41
>>198
>Effective Tcl/Tk Library
URLリンク(sourceforge.net)
>Souce code from the book "Effective Tcl/Tk Programming"

200:デフォルトの名無しさん
08/02/28 23:15:28
三浦カズヨシ逮捕されたな
関係ないけど

201:デフォルトの名無しさん
08/02/29 00:01:03
美しいクンニ日本
今日本のクンニが乱れている!!
URLリンク(www.youtube.com)

202:デフォルトの名無しさん
08/02/29 11:17:41
wish83 hoge.tcl
とかでソースを実行するときにエラーがあると,ダイアログが出てOKボタンを押さないと次に進まなくなるけど,
これを抑制する方法はない?

203:デフォルトの名無しさん
08/02/29 23:15:30
普通に考えて例えばファイルオープンでしくじったら
読み取りの次の処理も失敗するだろ。止まるのが
普通なのではないだろうか。エラーを「抑制」するとは
この場合はどういう処理を期待してるのだろうか。


204:デフォルトの名無しさん
08/03/01 11:24:06
まあcatchしてエラー処理をすればよいのではないかな。

205:202
08/03/01 11:28:23
>>203
ダイアログを出さずに落っこちてほしいのです.
バッチ処理でデータを自動的に次々処理しているときに,ダイアログが出てそこで止まってしまうと,
オペレータが常時監視してOKボタンを押さなくてはいけない.
そうではなくて,エラーが出たらそのまま落ちて,次のデータに処理が移るようにしたい.

206:デフォルトの名無しさん
08/03/01 11:29:12
余談だけど前にどっかの英語のブログでプログラミング関連のフォーラムのスクリーンキャプチャ画像があって、
PHP のフォーラムと Python のフォーラムの最新の質問がそれぞれ
How to hide error messages? と How to handle exceptions? だったっていうのが面白かった。

207:202
08/03/01 11:30:59
>>204
確かにそうですね.ありがとうございます.

208:デフォルトの名無しさん
08/03/01 11:31:07
>>205
wishじゃなくtclshを使うのではどうか?


209:202
08/03/01 11:44:18
>>208
それが,処理自体はバッチ的なんだが,過去の経緯を引きずっている関係から,
部分的にGUIパッケージを使っているんですよね….
どういう方法をとるにしろ,プログラムにある程度の修正を加えるしかなさそうですね.

210:デフォルトの名無しさん
08/03/01 11:59:26
んー、冒頭に package require Tk ってつければいいだけでは?
というかバッチの中で呼ぶのだったら wish だと同期的にならないのでいろいろ不都合じゃないの。

Tclの中でのエラー処理の必要がなくて落っこちればそれでいいっていう前提で話してるけど。


211:デフォルトの名無しさん
08/03/01 12:12:15
>>205
なんだそういうことか。それならbgerrorでエラー処理を変えればいい。
でも、ていうか8.3ってbgerrorあったっけ。昔過ぎて忘れた。

proc bgerror {message} {
exit 1
}

pack [button .b -text GENERROR -width 15]
.b configure -command {
read $notexists
}


212:デフォルトの名無しさん
08/03/07 10:24:47
(・∀・)チックルチーコ! チックルチーコ! ラッキーペア!

tcl tcl tcl tcl tcl tcl チャチャチャ
二人は双子♪ 似てない双子♪


213:本田
08/03/08 08:39:49
>>166
Perl/Tk Tools
URLリンク(ptktools.sourceforge.net)

214:本田
08/03/08 08:44:33
ActiveTcl 8.4.18.0
URLリンク(www.activestate.com)

215:デフォルトの名無しさん
08/03/08 08:46:19
PowerShellから使えんのかなぁ

216:本田
08/03/08 09:15:21
>>215
tcom
URLリンク(wiki.tcl.tk)

217:本田
08/03/08 09:32:54
>>216
COM Object Implementation in Tcl
URLリンク(www.vex.net)
URLリンク(www.vex.net)

218:本田
08/03/08 09:35:20
>>217
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
URLリンク(msdn.microsoft.com)
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。


219:デフォルトの名無しさん
08/03/08 10:58:39
Tcl使ってる人はLISPも使ってることが多いんでしょうか

220:本田
08/03/08 11:22:01
>>219
特別関係は深くないと思う。
ただTKの方は、色々な言語から使える。

221:本田
08/03/08 11:24:10
LTK - The Lisp Toolkit
"The easy way to do Lisp GUI programming"
URLリンク(www.peter-herth.de)
>LTK is a Common Lisp binding for the Tk graphics toolkit.
> It does not require any Tk knowledge for its usage.
> As it is written in pure Lisp, it is highly portable.

222:デフォルトの名無しさん
08/03/08 11:29:39
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね

223:デフォルトの名無しさん
08/03/08 12:43:06
Lisp使いでEmacs使いの人はTclに間違った偏見を持っていることがあるかも。

224:本田
08/03/08 13:03:45
>>223
なぜ Tcl を使うべきではないのか
URLリンク(www.os-omicron.org)

225:本田
08/03/08 13:10:51
>>224
Tcl7.x時代の話でTcl8.xにはもう当てはまらない議論。

226:デフォルトの名無しさん
08/03/08 13:35:14
URLリンク(www.geocities.jp)

227:本田
08/03/14 22:01:12
tBuild
URLリンク(sourceforge.net)
tBuild is a cross-platform Tcl/Tk extension that extends Tcl/Tk with the ability to compile
& link shared libraries of Tcl extensions written in C/C++.
tBuild currently supports all unix compilers & MS VC++ 5.x/6.x/7.0/7.1/.NET under windows.
No Mac supp

228:本田
08/03/16 01:19:13
Tcl9
URLリンク(sourceforge.net)
Tcl9 is an umbrella for all projects related to the improvement of the current Tcl language,
towards the hypothetical version 9 (current version is 8.5).

229:本田
08/04/02 18:18:34
>Tcl/Tk 8.5.2 Release Announcement
>March 28, 2008
URLリンク(www.tcl.tk)

230:デフォルトの名無しさん
08/04/03 15:17:36
-e 位使えるようにしてくれ

231:本田
08/04/06 12:46:05
>>229
>tcltk8.5.2-014-20080405.exe
URLリンク(sourceforge.net)

232:gth
08/04/06 14:25:37
アイム
出口


233:七つの海の
08/04/10 23:24:00
×テックルティーケー
○ティコティケェィーィエ

234:デフォルトの名無しさん
08/04/13 03:08:28
x86-32bit Linuxでは正常に動いてたプログラムをx86-64bit Linuxで
動かそうとしたらcannot execute binaryとなってダメなんですけど、
どうすればいいんですか?原因はなんなんですか?
中学生にも分かるように説明してくれませんか?

235:本田
08/04/14 06:00:48
>ActiveTcl 8.5.2.0 Apr, 2008
URLリンク(www.tcl.tk)

236:本田
08/04/14 06:02:18
>>234
サポートセンターに電話すべし。

237:デフォルトの名無しさん
08/04/16 04:48:20
>>234ですが自己解決しました。
libc6-i386というのをインストールしたら64ビットOSでも
動きました。でも、32ビットOSのときよりも動きが遅いです。

238:本田
08/04/22 08:24:49
URLリンク(snackamp.sourceforge.net)
>SnackAmp
URLリンク(sourceforge.net)
>SnackAmp is a powerful multi-platform audio music (mp3, ogg ,wav, streams ...) player and organizer for large music collections.
>Manage your entire collection, including ID3 tagging and auto-playlisting. Integrated web server for remote control/streaming

239:デフォルトの名無しさん
08/05/02 15:58:13
ファイルから読み込んだ文字列中に"があるとうまく処理ができません。

たとえば、中身が
He said "I am
a boy"

のようなfileに対して

set ch [open "file"]
while {[gets $ch line] >= 0} {
puts [lindex $line 0]
}

を実行すると

unmatched open quote in list
while executing
"lindex $line 0"

となって止ってしまいます。
(mingw のtclsh84 )

このような"の入った文字列を処理するにはどうしたらよいのでしょうか?


240:デフォルトの名無しさん
08/05/02 20:11:53
クォートをエスケすりゃいんじゃね
gets $ch line
regsub -all \" $line \\" buf
puts [lindex $buf 0]

241:239
08/05/02 20:56:37
自己解決…って>>240さんの書かれた通りです。
あ、自分のは -all 忘れてましたわ。
ありがとうございます。

ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。

242:デフォルトの名無しさん
08/05/05 18:25:21
使い勝手悪い言語だなあ。

243:デフォルトの名無しさん
08/05/06 10:44:47
Active Tcl ver.8.4.19に改版されている。
ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。

244:デフォルトの名無しさん
08/05/08 16:18:48
>>242
regularExpressionの速さはピカ一ですが

245:デフォルトの名無しさん
08/05/08 20:01:20
そうなの?

246:デフォルトの名無しさん
08/05/09 04:16:30
コーディングにかかる時間とか、バグのとりやすさのほうが重要だろ。
この観点から見るとtclひどすぎ。
正規表現使う構文にしてもすっきりしてないし。

247:デフォルトの名無しさん
08/05/09 12:00:11
わかったからすきなの使いなよ。

248:デフォルトの名無しさん
08/05/09 12:42:24
まさに正論

249:デフォルトの名無しさん
08/05/14 08:49:38
例に Perl/Tk 使ってみ。
Tcl ってよー出来てるって思えるから。


250:デフォルトの名無しさん
08/05/14 13:17:13
Tkを使う為の言語としては最強だよな。
他がちょっと弱いけど。

251:デフォルトの名無しさん
08/05/14 13:44:24
Cと組み合わせれば良いじゃん。


252:デフォルトの名無しさん
08/05/15 02:02:59
恥を忍んで質問させて下さい。

Win版のActiveTclのExpectは、sendの-breakが無いので、
一旦openしてfconfigureでbreakするのを試みてます。

set fd [open "COM1:" RDWR]
fconfigure $fd -ttycontrol {BREAK 1}
exp_sleep 2
fconfigure $fd -ttycontrol {BREAK 0}
exp_spawn -open $fd

でも、最後のexp_spawnがうまくいかないです。何故でしょう?

253:デフォルトの名無しさん
08/05/17 04:37:43
239みたいな例に対応できる汎用的方法がよく分からない。
'"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。
tcl faq list eval とかで検索してみたけど結局どうすれば。

254:デフォルトの名無しさん
08/05/18 17:33:48
複数行にわたって書いているリストの中で
コメントをなんとか書けないものかなあ

255:本田
08/05/22 06:02:40
>exp_spawn failed on Windows 2003 with DEP(DataExecutionPrevention)
URLリンク(lists.activestate.com)

256:デフォルトの名無しさん
08/05/23 08:27:47
tclshでプロンプト(PS1)の設定は出来ますか?

257:デフォルトの名無しさん
08/05/23 21:06:59
こうじゃね?
たとえば、
set tcl_prompt1 {puts -nonewline [info hostname]@[pwd]> }
で、ラインコンティニュー用は tcl_prompt2に設定
set tcl_prompt2 {puts -nonewline continue?> }

258:デフォルトの名無しさん
08/05/24 00:50:15
>>257
なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ

259:デフォルトの名無しさん
08/05/24 01:27:29
>>257
出来た!
ありがとうございます

260:デフォルトの名無しさん
08/05/25 04:51:53
aliasの設定なんか無理かな?
~/.tclshに ls color=auto を入れたいんだけど

261:本田
08/05/25 06:00:16
>C++/Tcl
URLリンク(cpptcl.sourceforge.net)
>A C++ library for interoperability between C++ and Tcl

>C++/Tk
URLリンク(cpptk.sourceforge.net)
>A complete C++ interface to the Tk GUI toolkit

262:デフォルトの名無しさん
08/05/29 20:12:22
Tcl/Tk 8.5でBLT-2.4z使えてる方はいらっしゃいますか?

パッチとか修正とか、かなり手を入れないと使えないのでしょうか。

263:デフォルトの名無しさん
08/06/02 21:39:25
>>239
ここにその議論がある。URLリンク(wiki.tcl.tk)
要するにsplitすればよい。ただし連続する空白文字に対する動作が意図と異なるかもしれない。
while {[gets $ch line] >= 0} {
puts [lindex [split $line] 0]
}

あるいは、
puts [join [split $line] |]
などに書き換えて様子を見よう。

>>262
Windows版の場合、tcl84.dllに直接リンクしてしまってるからどうにもならないよね。
Tcl8.3あたり以降のextension作成のガイドラインから外れた古い作りになっているんだろう。
実際何年も更新されてないようだし。
自前ビルドしてやるしか。

264:262
08/06/03 11:42:06
>>263
URLリンク(jos.decoster.googlepages.com)
を基に試してみました。

demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。
BLT-3.0で対応するのかなぁ。

265:デフォルトの名無しさん
08/06/14 18:22:11
URLリンク(reddog.s35.xrea.com)
これは試した?

266:262
08/06/16 16:43:53
後出しでごめんなさい。Linuxです。
Fedora 9で試してまして、そうこうしてるうちに、>>263の方法で対応したパッケージがリリースされました。

URLリンク(bugzilla.redhat.com)
で対処してくださったようです。

267:デフォルトの名無しさん
08/06/20 19:54:08
tk でコンボボックスの幅を指定するにはどうすればいいでしょうか?
また、できれば選択した文字列が表示されるテキストボックス部分を
複数行表示にしたいのですが、可能でしょうか?

268:デフォルトの名無しさん
08/06/20 21:03:00
>>tk でコンボボックス
tile拡張のttk::comboboxのやつか?
ttk::combobox .cb -width 100 とかでいけんじゃね
>>複数行表示にしたいのですが、可能でしょうか?
不可能じゃね

269:デフォルトの名無しさん
08/06/27 03:20:15
質問があります。

set a hoge
set b a
set c b

とやって、cからたどってhogeに辿り着くには
どうすればいいのでしょうか。
$$$c とか $[$[$c]] とかいろいろやってみたのですが
できません……。

270:デフォルトの名無しさん
08/06/27 22:53:22
set a hoge
set b a
set c b

proc aho foo {
upvar $foo bar
return $var
}

puts [aho [aho $c]]


271:デフォルトの名無しさん
08/06/27 23:22:33
>>269
puts [set [set $c]]
>>267
2行は無理。BWidgetsのコンボを改造すればできるかも


272:デフォルトの名無しさん
08/06/28 00:44:17
>>271
へ~、setって変数の参照にも使えるんだ。 勉強になりますた。

273:デフォルトの名無しさん
08/06/28 03:31:47
>>263
> ただし連続する空白文字に対する動作が意図と異なるかもしれない。

この制約がどうにも辛いです。
連続した空白があってもそれをただ一つの区切りとみなしつつ、
安全にファイルなどから読み込んだ文字列を処理するには
どうしたらいいのだろうか。

274:269
08/06/28 04:50:38
>>270
>>271
ありがとうございます。

275:デフォルトの名無しさん
08/06/28 06:01:58
>>273
そんなの教わったregsub使えよ
while {[gets $ch line] >= 0} {
puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0]
}

276:デフォルトの名無しさん
08/06/28 12:50:19
>>273
set line {He said "I am}
foreach word [string map {\" \\"} $line] {
puts $word
}

277:デフォルトの名無しさん
08/06/28 14:34:54
>>276
'{' inside string

278:デフォルトの名無しさん
08/06/28 17:20:38
文字列の中に"や{がある事を気にする必要がある時と
必要がない時の条件がよく分からん。。。
あと、ファイルから読み込んだ行を一律regsubしてしまって
常に構わないのかどうかも。。。

279:デフォルトの名無しさん
08/06/28 21:56:13
>>278
文字列をリストに自動変換してるところは気にしろ。文字列をforeachしたり
リスト系のコマンドに直接文字列を渡したりしてるところは注意だ。
>>276
set line "He said \"I am \{ a boy \}"
foreach word [string map {\" \\\" \{ \\\{ \} \\\}} $line] {
puts $word
}

280:デフォルトの名無しさん
08/06/28 23:10:12
> \} \\\}
これは必要? あってもなくても同じではないの?

281:本田
08/07/01 06:46:34
>Tcl/Tk 8.5.3 June 30, 2008
>Tcl/Tk 8.6a1 June 25, 2008
>Tcl/Tk 8.4.19 Apr 18, 2008
URLリンク(www.tcl.tk)

282:263
08/07/02 07:53:23
>>273
そもそもの話をしてもいいだろうか。
こんなコードは試しましたか?


set lines {He said "I am
a boy"}

set i 0
foreach l $lines {
puts $i:$l
incr i
}

Tclのlist「形式」は平易ながらバイナリデータまで扱える立派な「データ構造」なので、
まともに実装しようとすればTclが最初から持ってるパーサーを実装しなおすようなことになるよ。

平易ではあるがあまり(書いたソフトの)ユーザーには触ってもらいたくないデータ形式のような気がする。
コメントも使えないしね。自分自身で読み書き保存するためにはいいけど、
ユーザーに触らせるならJSONやYAMLなどのより一般的な形式がいいだろうね。
今ならtcllibのCVS HEADにライブラリが置かれてるよ。

283:239
08/07/02 09:03:58
なんか、今頃また盛り上がってるが・・・

>>282
それじゃ根本的に違うんだよね~
getsで一行ごとにテキストファイルから読んでるの文字列に「"」があるのがミソなんで

set lines {He said "I am}

を処理することになるんですよ。


284:デフォルトの名無しさん
08/07/02 19:51:00
8.5から文字列をリストに変換できるかどうかチェックする
string is list $strが追加されてんぞ。

285:デフォルトの名無しさん
08/07/03 00:00:27
info completeで失敗したら、さらに1行読み込んでappendすりゃいいだけだろ
そもそもデータ自体が1行ずつ処理されるように書かれていないのになぜ、1行ずつ
処理したがるのか

286:デフォルトの名無しさん
08/07/03 01:29:08
ファイルの文書が、必ずしも""の対応関係があっている保障はないわけだが。

287:デフォルトの名無しさん
08/07/03 01:43:11
たしかにそういうこともあるな
flex/bisonでやるか PureTclでやるならfickle/taccle


288:デフォルトの名無しさん
08/07/04 11:09:03
canvasにarcなどを1000個くらい書くと激重でどうしようもありません。
自分の描画ルーチンが重いのではなく、Tkがcanvasをリフレッシュするのが激重です。
描画したアイテムを選択して移動とかするつもりはなく、単に絵が表示されればいいのですが…
こんな場合は、image photoに直接力技で図形を書いていくしかないですかね。

289:デフォルトの名無しさん
08/07/05 12:36:31
Tkのキャンバスウィジェット並みの機能ってほかのGUIフレームワークにないですかね。
書いた絵をドラッグできるとかそういう系。

290:本田
08/07/06 13:21:30
>>289
Zinc Is Not Canvas!
URLリンク(www.tkzinc.org)

OpenGLが、速い環境が無いと、遅すぎてかなわん。

291:デフォルトの名無しさん
08/07/07 21:37:10
Zincもええが、tkpathの方がシンプルでとっつきやすいよ

292:デフォルトの名無しさん
08/07/08 00:37:16
tkpath使ったら早くなるかとおもったけど全然早くならなかった・・・


293:デフォルトの名無しさん
08/07/09 07:59:32
>>288
>>292

1000を超える描画単位(図形やウィジェットなど)をリアルタイムで取り扱うことはスクリプト言語系のツールキットでは想定されてないと思う。
素直にネイティブコードで動く言語で実装したほうが早いんじゃない? 描画結果のキャッシュでもしつつ。

294:デフォルトの名無しさん
08/07/09 20:18:40
いやまだ手はある。Tcl3DでOpenGLで直接描画すれば・・・!

295:デフォルトの名無しさん
08/07/09 22:18:26
マルチスレッド拡張使ってる人いる?

296:デフォルトの名無しさん
08/07/09 23:06:43
ときどき使う。

297:デフォルトの名無しさん
08/07/09 23:44:51
>>296
非同期で走っている複数のスレッドから進行状況や終了などをメインのスレッドで
受け取るにはどういう手段があるんでしょう? tsv でスレッド内で状況をセットして
メインでpollするというぐらいしか思いつかないのですが。 メインの方で
vwaitしてスレッドのほうからthread::sendなんて出来ませんよね? 


298:デフォルトの名無しさん
08/07/10 06:48:22
C++などで書いてるソフトにTclのインタプリタを組み込んでるやつはいないだろうか。
Tcl_Eval()でTclスクリプトを実行したときにそのスクリプトにエラーが含まれていると、
エラーメッセージはResultの中に入ってる。
これをResultの代わりにエラー出力に出したいんだが、その方法がよくわからない。
やり方があるようなら教えてもらえないだろうか。

299:297
08/07/10 06:54:59
あ、だめだ。 これ以前にExpectがthread-safeで無くてスレッドからは使えないとか。 
Expectを多用してるので諦めます。

URLリンク(community.activestate.com)

300:本田
08/07/10 07:54:03
stderr
URLリンク(wiki.tcl.tk)
stderr is one of the stdio output files opened
- applications and functions tend to use it for the output of error messages.

301:298
08/07/10 10:32:22
>>300
ご協力ありがとう。
読んでみたけどどうやらこれはTclインタプリタ側(Tclスクリプト側)から
外部コマンドを呼び出したときのstderrについて議論しているみたいで、この話とはちょっと違う。

Tcl_CreateInterp()でinterpを作った後、
Tcl_SetStdChannel(channel, TCL_STDOUT);
Tcl_SetStdChannel(channel, TCL_STDERR);
を呼び出すことでinterpが呼び出すputsコマンドによる標準出力、エラー出力をトラップできることは確認できている。

だがTcl_Eval()やその他のTcl変数を直接いじるAPIを呼び出したときの文法エラー、実行時エラーは出力されないみたいなんだ。
(で、Resultの中に入っている)
こいつを、他と同じようにトラップできればいいんだが……。

302:デフォルトの名無しさん
08/07/10 11:44:58
>>297
>>299
URLリンク(www.tcl.tk)

303:デフォルトの名無しさん
08/07/10 14:59:25
>>301
TCL_ERRORだったらResultを出力すればいいだけじゃね?

304:デフォルトの名無しさん
08/07/10 22:13:52
>>298
なんでそんなことそをする必要があるかもう少し詳しく書いた方がいいぞ。そうしないと、
>>303みたいにすりゃいいだろ思うんだが
if (Tcl_Eval(interp, script)!=TCL_OK) {
char str;int len;Tcl_Channel e=Tcl_GetStdChannel(TCL_STDERR);
str=Tcl_GetStringFromObj(Tcl_GetObjResult(interp), &len);
Tcl_Write(err,str,len);Tcl_Flush(interp,err);
}


305:304
08/07/10 22:23:39
あー、どうでもいいけど、Tcl_WriteObjつかうと、Tcl_GetObjResultから一発で済むわ。

306:本田
08/07/22 20:12:44
TkSTEP 0.3b3 (Tk 4.1)
NEXTSTEP(tm)-lookalike-wanabee-hack-kit for Tk
Alfredo K. Kojima
tkstep0.3b3.tar.gz
tkstep8.0.4-2.tar.gz

Alfredo Kojima
URLリンク(en.wikipedia.org)
Alfredo Kengi Kojima
URLリンク(si3.inf.ufrgs.br)

TkSTEPは、現在、開発がストップしてるけど、
windowmakerなど他の仕事で作者は有名なんだな。

307:本田
08/07/23 01:18:22
The Tcl IRCd
URLリンク(www.hping.org)
The Tcl IRCd is an IRC server written in the Tcl language.
The current version is not a complete implementation of the IRC protocol
but should interoperate well with most IRC clients, and allows to register,
change nick, create channels, talk on a public channel or in query and so on.
The program is small,
less than 500 lines of code, and was written in order to be very simple to modify/extend.

308:デフォルトの名無しさん
08/07/24 04:12:37
string hoge とかって具合に 任意の string * コマンド(?)を追加したりはできないでしょうか。

309:デフォルトの名無しさん
08/07/24 20:37:58
proc stringHello {} {puts "HELLO WORLD"}

set map [namespace ensemble configure string -map]
dict append map hello stringHello
namespace ensemble configure string -map $map

string hello


ただし8.5以上。

8.4のときはstringコマンドをtcl_stringなんかに名前を変えて
そのうえでそれのラッパーのstringを作ったりしてた。

310:デフォルトの名無しさん
08/07/24 23:57:42
>>269
>$$$c とか $[$[$c]] とか…
puts [subst $[subst $[subst $c]]]

遅レスだが…

311:デフォルトの名無しさん
08/07/27 18:35:14
>>269 & >>310
$$var (間接指定)について
URLリンク(psg.com)
に丁寧な説明がある。
古い我家頁だが、今でもアクセス可能と思う。



312:デフォルトの名無しさん
08/07/29 00:59:08
BrowseX for Windows使ってた人いない?
いきなり消滅してて悲しい・・・

313:デフォルトの名無しさん
08/08/02 08:48:51
Active Tcl やっと8.5.3になった

314:デフォルトの名無しさん
08/08/05 04:33:00
tclコードをソース隠ぺいのため、バイナリ化または、
暗号化したいがどうすればよいでしょうか?

315:デフォルトの名無しさん
08/08/05 21:26:28
バイナリ化(exe化)ならここに色々ある。
URLリンク(home.netyou.jp)
隠ぺいのためになるかは不明.


316:デフォルトの名無しさん
08/08/11 10:37:56
comポートとかソケットをopenで開いてgetsした時、
相手が何も返してこないと、一生待ちつづけてしまうのですが、
タイムアウトさせたりする方法は無いですか?

317:デフォルトの名無しさん
08/08/12 07:07:15
>>316
Tcllibは調べた?

318:デフォルトの名無しさん
08/08/12 08:05:26
>>316
fconfigure -blocking
fileeventで非同期に処理するのが良いと思う


319:デフォルトの名無しさん
08/08/13 20:58:56
>>316この手のシークエンスを記述するためにafter ms命令が用意されている

320:316
08/08/14 09:50:55
>>318
fileeventがまさに探していた機能です
サンクスコ

>>319
それは考えたけど、一度発行したgetsを取り消す術がないからダメポ

321:デフォルトの名無しさん
08/08/24 00:56:41
foreach {o i } [regexp -all -inline {<item>(.*?)</item>} $read] {
のlsearchとかlreplaceとかで、ネストタグの抽出が簡単にできるのが良い。
perlより全然良い。日本語が問題なく使えるのが良い。簡単GUIも良い。
foreachの中のregexpが速ければもっと良い。なかなか最適化ができない。





322:デフォルトの名無しさん
08/08/24 01:10:16
tclの正規表現は早いほうって聞いたけどなあ・・・

323:デフォルトの名無しさん
08/08/24 02:59:06
Tclで書いたスクリプト自体はそれほど早く動作しないよね。
TclはJITに対応してるという記述がちらほら(wiki.tcl.tk含む)で見かけたので
ソースコードを調べたら、スクリプトを内部表現に書き換えるコンパイラはあっても
CPUのニーモニックに直接変換してる実装部分は見当たらなかった。

インタプリタ自体がやってることはそれほど複雑ではないので(ほとんどがコマンド自体の実装)
誰か実装してくれればいいなとは思うが、
googleのannualのフォーラムでの議題には特にあがっていないようだ。

324:デフォルトの名無しさん
08/08/24 09:13:12
速くしたけりゃその部分だけCで書け
そもそも
コマンド 引数 引数 ...
しかなくて、構文などというものもない簡易言語に期待しすぎでしょ。


325:デフォルトの名無しさん
08/08/24 22:12:31
その理屈で言うと括弧しかなくて構文などというもののない簡易言語にも期待できないのか。
それはさておきTclでバイトコードコンパイルしてるってのだけで驚異的じゃない?
Tclって意味論的には素直に考えるとevalに満ち溢れたような代物でしょ。

326:デフォルトの名無しさん
08/08/25 00:18:54
インタプリタ作ったり、DLLやsoを簡単にロードできたり、Cとの融合が十分考慮されてる言語なんだから、
処理速度を要求される部分はCで作った方がいいでしょ、マジで。

327:デフォルトの名無しさん
08/08/25 01:11:39
別にそこには反論してないよ。
それはTclのシンタクスとは直接の関係はないし、Tclが簡易言語とも思わないけど。

328:デフォルトの名無しさん
08/08/26 00:03:21
stdinを1文字単位で扱いたいのですが・・可能ですか?
Enter押すまで入力待ちになってしまいます。
機種依存が必要であればlinuxでお願いします。
proc getch {} {
return [read stdin -nonewline]
}
目的は簡易lessコマンド作成です。

329:デフォルトの名無しさん
08/08/26 00:10:49
>>327
tclはねぇ、ローカルスコープ切れないからちょっとプロシージャが長くなると変数がゴッチャになるのよ。
長いもの書くには向かないと思うがね。

330:デフォルトの名無しさん
08/08/26 00:44:05
zero3 [es]でeTcl使ってるんだけど・・・バージョン進むにつれてサイズでかくなりすぎ。
最新版はついに起動できなくなったwww
動的に拡張を読み込めるのがTclの利点なのに、一つの実行形式に使わない拡張までまとめないで欲しい・・・

331:デフォルトの名無しさん
08/08/26 01:37:04
>>329
Tclなめんな!

proc block {body} {
    eval $body
}

set x 100
set y 1000
block {
    set x 200
    upvar y y
    puts "value is $x $y"; # value is 200 1000
}
puts "value is $x $y"; # value is 100 1000

332:デフォルトの名無しさん
08/08/26 01:41:54
>>328
URLリンク(wiki.tcl.tk)
まあこれを読め

URLリンク(tcllib.sourceforge.net)
そして次はこれだ

333:デフォルトの名無しさん
08/08/26 03:33:43
>>332
ありがとうございます。
解決しました!

334:デフォルトの名無しさん
08/08/26 17:03:54
>>331
blockがたくさんネストしたらどこまでupvarしたらいいかわかんなくなっちゃうね。

335:デフォルトの名無しさん
08/09/08 13:49:03
日本語に関して質問です。
encoding systemがwindowsではcp932, Linuxではutf-8となっていて、
スクリプトを書くさいにそれぞれの文字コードで保存せねばなりません。
(string bytelengthはいずれの環境も一緒になるので内部ではutf-8のようですが)
ですので、windowsで作ったスクリプトをそのままLinuxに持っていくと文字化けしてしまい困っております。

encoding systemをcp932やutf-8に強制的にセットしたところで上手く動きません
(windowsでencoding system utf-8にし、スクリプトをutf-8で保存しても文字化け、等)

encoding systemの異なる環境間で同一スクリプトで動かす手立てはないものですかね。

336:デフォルトの名無しさん
08/09/08 20:35:03
Unicodeリテラルで書く。

337:デフォルトの名無しさん
08/09/10 03:14:41
>>335
もし8.5を使ってるんだったら、、sourceやtclshやwishに-encodingオプションが付いたから、
スクリプトはcp932で書いておいて、最初の3行を

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh -encoding cp932 "$0" "$@"

にすることで、できたりしませんか?

逆に、スクリプトはutf-8で書いておいて、
windowsの関連付けの方で、wishに -encoding utf-8を付けるという手もあるかも。

試せないので、無責任に書きっぱなしですいません。


ところで、スクリプトをwindowsからLinuxへ持っていくときに
nkf通して変換というのじゃ駄目なんでしょうか。

338:デフォルトの名無しさん
08/09/10 07:12:11
>>335
shift-jisで書いておいて
#!/bin/sh
# \
LANG=ja_JP.SJIS; export LANG; # \
exec tclsh "$0" "$@"

で動くかもしれないし、動かないかもしれない。

339:335
08/09/10 10:06:33
>>336
よくわかりません。

>>337
8.4使っているのですいません。
(ActiveTclの拡張が8.5では少なすぎるので)
Linux側で修正したりwindows側で修正したりしたのを日付で同期してるのでnkfやiconvは使いにくいですね。

>>338
凄いぜ。
putsでターミナルに出力する文字は化ける(konsoleのモードがutfだからしかたない)が、
widgetに出力する文字はきちんと出たよ~。


340:デフォルトの名無しさん
08/09/10 20:07:26
>>339
puts \u0055\u0069\u0063\u006f\u0064\u0065\u30ea\u30c6\u30e9\u30eb\u304f\u3089\u3044\u3050\u3050\u308c

341:150.29.213.49 335
08/09/10 21:37:28
>>340
それはさすがに嫌杉でしょw

342:デフォルトの名無しさん
08/09/10 23:21:08
>>339
putsは fconfigure stdout -encoding utf8 とかで化けなくなると思う。
でも、そこまで文字コード意識するならWindows<->Linuxでコピーする時に変換するほうが良いんじゃないの?

最近ActiveTcl8.5.4に乗り換えたけど一見拡張が入っていないように見えて、実は Tcl\lib\teapot\package\ 以下に
入っているように思った。

343:デフォルトの名無しさん
08/09/11 21:48:49
>>341
この技はおぼえておけ。かならず役に立つときが来る。

344:デフォルトの名無しさん
08/09/12 22:20:20
>>339
>>342
ActiveTcl8.5.x のインストーラの最初の画面で、

8.5は8.4とほとんど互換性があるから、
teacupを使うか8.4に上書きインストールしたら
たくさんのパッケージが手に入る。

というようなことが書いてました。
まだ8.5に乗り換える気はないんで、それだけ見てキャンセルしたけど。

345:デフォルトの名無しさん
08/09/17 02:39:50
>>331
>>334
見つかるまでさかのぼるupvarを書いてみました。
upvarが上位の変数名とローカル変数名を並べて書くのに対し、
上位の変数名だけ並べて書いて同じ名前でリンクするようにしてます。

proc upvar2 {args} {
  set leveldepth [info level]
  foreach varname $args {
    for {set varlevel 2} {$varlevel <= $leveldepth} {incr varlevel} {
      if {[uplevel $varlevel info exists $varname]} {
        incr varlevel -1
        uplevel 1 upvar $varlevel $varname $varname
        break
      }
    }
  }
}


346:デフォルトの名無しさん
08/09/19 21:57:20
windows mobile でeTcl使ってプログラム作ってたらメモリが足りなくて死んだorz
image photoって、-paletteで色数制限しても内部はフルカラーメモリ展開するのね。
やっぱ、WMで使うには富豪過ぎるか、Tclはorz

347:デフォルトの名無しさん
08/10/16 04:52:51
内部イテレータ欲しい

348:デフォルトの名無しさん
08/10/27 13:15:30
Tclを久しぶりに書いてみたら、firefox用のpluginが正常にインストールできません。
どういう状況なのでしょうか?ご存知でしたら教えてください。



349:デフォルトの名無しさん
08/10/27 15:39:46
>>348
スネーク。状況をもう一度よく確認するんだ。

Tcl → バージョンが上がらない
Firefox → バージョンあがりまくり

放っておかれたアドオン(plugin)はどうなる?

350:デフォルトの名無しさん
08/10/28 07:20:41
>>348
了解

メインバージョンが上がらないと更新されない訳ですね。

351:デフォルトの名無しさん
08/10/31 16:09:38
300Kbyte程のTclTkを書いてみた。
っかZETってソフトのちょい変だけど。

URLリンク(carnageez.web.fc2.com)


352:デフォルトの名無しさん
08/10/31 22:10:52
10秒見ただけだが、名前空間使わずによくこんだけ書いたな

353:デフォルトの名無しさん
08/11/01 05:18:31
>>352
名前空間って何?( ゚д゚)ポカーン

354:デフォルトの名無しさん
08/11/01 05:45:22
>>353
URLリンク(www.tcl.tk)

355:デフォルトの名無しさん
08/11/01 07:09:06
>>354
ありがと。
へえーーなんちゃってオブジェクト化って感じなんだね。

356:デフォルトの名無しさん
08/11/01 09:51:35
Tcl 8.5からapplyコマンドでラムダ式とかが使えるらしいんだけど、
なんか入門的な情報ない?


357:デフォルトの名無しさん
08/11/01 16:24:05
set lis [another commend]
for e $lis { something $e }
とかやらずに、$lisに直接何かを作用して写像を得たり、
フィルタリングできるの?

358:デフォルトの名無しさん
08/11/01 22:49:17
初心者すぎてすいません。
tclのproc関数の出力をtkのテキストに書き出すにはどのようにすれば
いいのでしょうか?
いまいちtclとtkの連携方法がわからず困っています。


359:デフォルトの名無しさん
08/11/02 02:01:41
んと、こんなんやってる
set str "hogehoge"

f_text_update $str

proc f_text_update {win str}
if {![winfo exists $win]} {
text $win
grid $win -column 0 -row 0
}
$win delete 0.0 end
$win insert end $str
}

360:デフォルトの名無しさん
08/11/02 02:12:55
んもしや回答を誤ったか?

f_text_update [f_proc_func]

proc f_proc_func {} {
return "hogehoge"
}

これでどうだ

361:デフォルトの名無しさん
08/11/02 06:25:56
>>359-360
ありがとうございます。
試してみます!!

362:デフォルトの名無しさん
08/11/05 11:35:53
>>356
この記事は読んだ?
URLリンク(wiki.tcl.tk)

363:デフォルトの名無しさん
08/11/05 23:30:13
λx.λy.x(2)(3)
みたいなことをやろうとして、
apply {{x} {return [apply {{y} {return x}} 2]}} 3
てやっても
x
が返ってくる。
で、
apply {{x} {return [set [apply {{y} {return x}} 2]]}} 3
ってやれば3が帰ってくるが、setを使っている時点で2回目のapplyの戻り値が変数名であることを前提にしていて気持ち悪い。



364:デフォルトの名無しさん
08/11/08 14:38:54
ツール組込みのtcl環境でもlambda使いたい

365:デフォルトの名無しさん
08/11/10 23:01:54
>>363
こりゃーいったい何をやろうとしとんじゃ?return xで
文字列のxが返るのはあたりまえじゃないか

366:デフォルトの名無しさん
08/11/11 14:14:10
>>365
単に$のつけ忘れじゃ?


ついでに質問。
{}内の変数は置換されないよね?
そうすると、applyの引数にとる関数にはその引数で宣言した変数しか出てこれない。
これだと、例えば「xを引数にとって、『引数yをとって、yとxとの和を求める関数』を返す関数」とかが表現できない気がするんだけど…
""だとyが束縛されてないし…無理矢理置換するしかない?

367:デフォルトの名無しさん
08/11/11 20:25:25
答えると、Tclにはクロージャ無いねん。
だからxを置き換えるしかないんじゃないかなあ。

set func {x {return [list y [list expr $x + \$y]] }}
apply [apply $func 1] 2
3

こういうこと?

368:デフォルトの名無しさん
08/11/12 00:20:16
>>365
λx.λy..x
=λx.x
でしょ。
こうならないってこと。

369:デフォルトの名無しさん
08/11/12 08:27:21
>>368
> >>365
> λx.λy..x
> =λx.x
> でしょ。

そんなequalityを持つλ計算の体系は見たことが無い

370:デフォルトの名無しさん
08/11/14 22:42:02
結局なんだったんだ。もう

371:デフォルトの名無しさん
08/11/15 10:04:27
>>370
同感

372:デフォルトの名無しさん
08/11/15 10:11:42
点が余計に入った
λ.x.(λy.x)は変換するとλx.xだろうと。

373:デフォルトの名無しさん
08/11/15 18:14:51
>>372
お前が前提にしているλ計算の公理系を言え。
通常のβη変換ではλx.(λy.x) = λx.xは導出できない。

374:デフォルトの名無しさん
08/11/30 09:35:24
Tcl and the Tk Toolkit, Rough Cuts, 2nd Edition
* By John K. Ousterhout, Ken Jones
URLリンク(www.informit.com)

ついこの前プレンティスから出てる妙に読みにくいTcl本買った俺涙目

375:デフォルトの名無しさん
08/11/30 19:08:03
日本語で良書なTcl本ってなにがあるかな

376:デフォルトの名無しさん
08/12/01 20:34:12
ものすごいつまらんこと聞いていいっすか?

Tclって、pythonで言うところのinputとかraw_inputって無いの?

377:デフォルトの名無しさん
08/12/01 22:11:19
gets

378:デフォルトの名無しさん
08/12/02 09:18:28
>>376
pythonで言うところのinputって何をするものか書いたほうがアドバイスもらえると思うが?

379:376
08/12/02 20:46:30
>>378
それもそうですね。失礼しました。自分は職業プログラマではな
いのであんまりうまく説明できそうにないですが。。
webで見つけた説明によれば、

raw_input関数
標準入力から1行読み込んで(末尾の改行をのぞいたものを)文字列に変換して返す。

>>> s = raw_input()
test
>>> s
'test'

とこんな感じです。上記はインタプリタでの動作です。
呼ばれると、ユーザの入力を待つモードになります。
ユーザが文字列を入力すると変数に文字列が代入されます。
input関数は数値入力用です。

380:デフォルトの名無しさん
08/12/02 20:56:09
やっぱgetsでいいじゃん

tclsh>gets stdin s
test
tclsh>puts $s
test


381:379
08/12/02 23:32:57
>>380
レスありがとうございます。

getsにはそんな風に書くんですね。
channelIdってのが何を指してるのかサッパリでした。。

明日会社に行ってまた試してみます。
たまーに仕事用ツール作成でスクリプト書くんですが、
諸事情あって今回はTclにで書いていて。。

382:デフォルトの名無しさん
08/12/04 00:53:01
scan $str "%s,%s,%s,%s" a b c d
とかもあるよ。scanfみたいなの。
また正規表現を使った読み込みとか便利
set fp [open $fname]
gets $fp str
regexp {\[\s*\s*\]\s*(\w+)} $str d1 d2とかね

以下が改行取って読み込みとか
set fp [open $fname];gets $fp str
foreach i [split $str "\n"] {

}
以下とかするとバイナリファイルも開けるよ
set fp [open $fname]
fconfigure $fp -translation binary
binary scan [read $fp 1000] H* str


383:デフォルトの名無しさん
08/12/04 22:00:38
binary scanとbinary formatの使い方をすぐ忘れちゃうのは秘密だ

384:デフォルトの名無しさん
08/12/04 22:04:45
>>375
Tcl/Tkデスクトップリファレンスには超おせわになった。
あとEffective Tcl/Tk。この2冊はTcl/Tk修行時代の
10年位前にかなり読んだ。

385:デフォルトの名無しさん
08/12/10 21:58:58
Tcl初心者です。すみません、教えて下さい。

ビルトインコマンドにラッパーをかける事は
できるのでしょうか。

例えば

proc wrapper {cmd} {
catch {eval {$cmd}} status
puts "$cmd , $status"
}
:
alias expr {wrapper expr}
:
expr {1+1} ;# wrapper {expr {1+1}} -> expr {1+1} ,0

的な感じです。

386:デフォルトの名無しさん
08/12/11 22:04:10
>>385
これじゃ無限ループになるだろ。exprはrenameして新たにラッパーのexprを定義すれば?

387:デフォルトの名無しさん
08/12/17 17:04:55
>312
>BrowseX for Windows使ってた人いない?

Hv3というtkhtmlベースのブラウザならある。
URLリンク(tkhtml.tcl.tk)

388:デフォルトの名無しさん
08/12/19 21:06:51
Dr. OusterhoutがTclコアチームから抜ける。
URLリンク(groups.google.com)

389:デフォルトの名無しさん
08/12/22 21:53:03
プログラムから逃げてきたのに卒論で無理やりやらされてる
Cで作ったexeファイルをtcl/tkで作ったGUI上で実行したりできるの?

ていうかこんなことも分からない感じで死にそう・・・

390:デフォルトの名無しさん
08/12/22 23:27:50
>>388
そしてその翌日itclのコア組み込みが決定したのであった・・・!

>>389
CでCUIのexe作って、Tcl/Tkでガワ作って、パイプで接続とか。
まあどんなことがやりたいかによる。CでDLL作って、それをTcl/Tk
から使うほうが楽かもしれない。


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