<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Tcl' on doukaku.org</title><link>http://ja.doukaku.org/lang/tcl/</link><description>Latest comments for language 'Tcl' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 19:37:49 -0000</lastBuildDate><item><title>yyamasak's comment on ミリ秒まで含んだ時刻文字列
</title><link>http://ja.doukaku.org/comment/6712/</link><description>



&lt;a href="http://ja.doukaku.org/184/"&gt;ミリ秒まで含んだ時刻文字列&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/184/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/184/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;Tcl8.5の場合は、
clock millisecondsが使える。
clock microsecondsも使える。&lt;/p&gt;
&lt;p&gt;Tcl8.4の場合は、
最近のActiveTclにバックポートとして入っているnewclock拡張を使う。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;set pit [clock milliseconds]
set sec [clock format [string range $pit 0 9] -format %Y%m%d%H%M%S]]
set msec [string range $pit 10 end]
puts $sec.$msec
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/6712/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/6712/</guid></item><item><title>匿名's comment on クリップボードへの転送
</title><link>http://ja.doukaku.org/comment/6711/</link><description>



&lt;a href="http://ja.doukaku.org/188/"&gt;クリップボードへの転送&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/188/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/188/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;Tkのclipboardコマンドで実現できます。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;package require Tk
clipboard clear
clipboard append &amp;quot;テキスト&amp;quot;; # 転送
clipboard get; # 取得
#=&amp;gt; テキスト
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/6711/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/6711/</guid></item><item><title>yyamasak's comment on 自分自身のファイル名を知る方法
</title><link>http://ja.doukaku.org/comment/5790/</link><description>



&lt;a href="http://ja.doukaku.org/151/"&gt;自分自身のファイル名を知る方法&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/151/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/151/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;puts [file dirname [info script]]
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/5790/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/5790/</guid></item><item><title>ether's comment on Hello, world! PDF版
</title><link>http://ja.doukaku.org/comment/2483/</link><description>



&lt;a href="http://ja.doukaku.org/50/"&gt;Hello, world! PDF版&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/50/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/50/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  Tk キャンバスの内容を PDF に出力する Trampoline! というライブラリを使用してみました。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;package require trampoline

. configure -menu [menu .menu]
.menu add command -label {Save as PDF} -command {::pdf::generate .c hello.pdf}

pack [canvas .c -width 297 -height 210  -bg white]
.c create text 150 105 -text &amp;quot;Hello,\nWorld!&amp;quot; -font {Helvetica 70} -justify center
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2483/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2483/</guid></item><item><title>ether's comment on ウィンドウの表示
</title><link>http://ja.doukaku.org/comment/1992/</link><description>



&lt;a href="http://ja.doukaku.org/7/"&gt;ウィンドウの表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/7/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/7/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  wish でなく tclsh から実行するときは package require Tk を冒頭につけます。

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;set w 400
set h 300
set x [expr ([winfo screenwidth .] - $w) / 2]
set y [expr ([winfo screenheight .] - $h) / 2]
wm geometry . ${w}x$h+$x+$y
wm title . こんにちは、GUI！
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/1992/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/1992/</guid></item><item><title>ether's comment on ローカル変数の一覧を取得
</title><link>http://ja.doukaku.org/comment/1989/</link><description>



&lt;a href="http://ja.doukaku.org/35/"&gt;ローカル変数の一覧を取得&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/35/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/35/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  Tcl にも info locals というずばりなコマンドがありますが Python と違って返されるのは名前のリストのみなので記述量は若干増えます。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;proc foo {} {
  set x 1
  set y hello

  set locals [info locals]
  set result {}
  foreach k $locals { lappend result $k [set $k] }
  return $result
}

# % foo
# x 1 y hello
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/1989/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/1989/</guid></item><item><title>ether's comment on Tiny MML
</title><link>http://ja.doukaku.org/comment/1818/</link><description>



&lt;a href="http://ja.doukaku.org/31/"&gt;Tiny MML&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/31/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/31/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  Snack という Tcl/Python 向けの音声ライブラリを使用しました。Snack は ActiveTcl のディストリビューションにも含まれています。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;package require snack

set C     262
set dur   4000
set beat  5000
set amp   30000
set score cdefedcrefgagfercrcrcrcrcdefedcr

set freq $C
foreach note {c _ d _ e f _ g _ a _ b} {
  set freq [expr {$freq * pow(2, 1. / 12.)}]
  set osc  [snack::filter generator $freq $amp 0.0 sine $dur]
  snack::sound $note
  $note filter $osc
  $note length $beat
}
snack::sound r; r length $beat

snack::sound snd
foreach note [split $score {}] {
  snd concatenate $note
}
snd play -blocking yes
# snd write kaeru.wav -fileformat WAV 
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/1818/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/1818/</guid></item><item><title>ether's comment on メソッド名一覧の表示
</title><link>http://ja.doukaku.org/comment/1463/</link><description>



&lt;a href="http://ja.doukaku.org/32/"&gt;メソッド名一覧の表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/32/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/32/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  呼び出すって実行するところまでだと気づいたので修正。引数はなしで。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;foreach cmd [info commands target::test_*] { $cmd }
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/1463/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/1463/</guid></item><item><title>ether's comment on メソッド名一覧の表示
</title><link>http://ja.doukaku.org/comment/1462/</link><description>



&lt;a href="http://ja.doukaku.org/32/"&gt;メソッド名一覧の表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/32/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/32/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;info commands target::test_*
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/1462/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/1462/</guid></item><item><title>ether's comment on アレイのuniq
</title><link>http://ja.doukaku.org/comment/769/</link><description>



&lt;a href="http://ja.doukaku.org/16/"&gt;アレイのuniq&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/16/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/16/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  特にこれが一般的な Tcl 風スタイルというわけではありませんが tcllib の struct::list を使うと fold もできますという例です。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;package require struct::list

proc lappend_uniq {l e} {
  if {[lsearch $l $e] == -1} {lappend l $e}
  set l
}

proc uniq {l} {
  ::struct::list fold $l {} lappend_uniq
}

# % uniq {3 1 4 1 5 9 2 6 5 3 5 8 9 7 9}
# 3 1 4 5 9 2 6 8 7
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/769/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/769/</guid></item><item><title>ether's comment on HTTPでGET
</title><link>http://ja.doukaku.org/comment/653/</link><description>



&lt;a href="http://ja.doukaku.org/18/"&gt;HTTPでGET&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/18/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/18/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  Tcl 標準の http パッケージで。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;package require http
http::geturl http://ja.doukaku.org/feeds/comments/ -channel stdout
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/tcl/"&gt;
      Tcl
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/653/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/653/</guid></item></channel></rss>