ActiveMQ: Cross Language Clients and Protocols
網頁下面有使用的範例,其中 Tcl/Tk 的部份有二個,一個是支援 STOMP 協定的 tstomp 套件,一個則是利用 Tcl/Java 來呼叫 Java API。因為有簡單的使用範例,所以我想有需要的時候可以用來參考。
* 另外,ActiveMQ 有支援 MQTT,所以 Tcl MQTT client 可以用來測試是否可以執行,或者是使用我包裝 Paho MQTT C Client 的 Tcl extension tcl.mqttc。
2017-06-28
2017-06-17
執行程式並且取得標準輸出的結果
set var [list ls -l]
catch {exec {*}$var} result
set lines [split $result "\n"]
foreach line $lines {
if {[string index $line 0] == "d"} {
puts $line
}
}
只是用來練習的程式。使用 exec 來執行程式 (ls -l),取得結果以後再來處理。
2017-06-14
Using Nashorn from Java code (TclBlend version)
package require java
java::import javax.script.ScriptEngine
java::import javax.script.ScriptEngineManager
java::import javax.script.ScriptException
set manager [java::new ScriptEngineManager]
set nashorn [$manager getEngineByName "nashorn"]
set value [$nashorn eval "10 + 20"]
puts "Result: [$value toString]"
2017-06-13
apply
set twice {{f v} {apply $f [apply $f $v]}}
set f {{v} {return [expr $v + 5]}}
puts [apply $twice $f 10]
這只是在說明,你可以將匿名函數的內容設給一個變數,然後使用 apply 來呼叫。
2017-06-05
tclhttpd-markdown
tclhttpd-markdown
Tcllib 在 1.18 中 提供了 Markdown 套件,可以將 Markdown 格式轉換為 HTML 的工具。為了檢視這個套件目前的情況,所以作了一個簡略的 TclHttpd 支援。如果是 *.md 檔案,就使用 Tcllib Markdown 套件進行轉換,然後傳回 UTF-8 編碼的 HTML。
我想使用其它的 Markdown 轉換工具應該也是可以,只要修改轉換的部份和提供正確的 package require 就可以才對。
Tcllib 在 1.18 中 提供了 Markdown 套件,可以將 Markdown 格式轉換為 HTML 的工具。為了檢視這個套件目前的情況,所以作了一個簡略的 TclHttpd 支援。如果是 *.md 檔案,就使用 Tcllib Markdown 套件進行轉換,然後傳回 UTF-8 編碼的 HTML。
我想使用其它的 Markdown 轉換工具應該也是可以,只要修改轉換的部份和提供正確的 package require 就可以才對。
2017-06-04
Apache Tomcat, CGI and Tcl
最近使用 Apache Tomcat 在測試一些東西,所以同時也測試一下如何設定 CGI 以執行 Tcl CGI scrpits 的設定。
預設中 CGI 是 disable 的。在 Apache Tomcat 下使用 Tcl 來撰寫 CGI 程式,需要設定 conf/web.xml 與 conf/context.xml。 可以參考 Apache Tomcat 的文件。
首先要設定 web.xml,開啟 CGIServlet 的支援,並且設定執行的程式。 如果是修改 conf/web.xml,那效果是全域性的。如果修改 WEB-INF/web.xml,就只侷限在你的 web application。
與 URL mapping:
再來是 context.xml,設定 Context 的 privileged 屬性為 true(但是要注意,這樣的更改是全域設定):
在 webapps/ROOT/WEB-INF 目錄中建立一個新的目錄 cgi。 接下來將我們的 Tcl CGI script 放在 cgi 目錄就可以了。舉例來說,如果是 hello.tcl,網址就是:
如果不要在根目錄,舉例來說,可以在 webapps 下建立一個目錄 myapp,myapp 目錄下再建立一個目錄 WEB-INF, 然後 WEB-INF 目錄下再建立目錄 cgi。
接下來將我們的 Tcl CGI script 放在 cgi 目錄,如果正確設定就可以執行。舉例來說,如果是 hello.tcl,網址就是:
預設中 CGI 是 disable 的。在 Apache Tomcat 下使用 Tcl 來撰寫 CGI 程式,需要設定 conf/web.xml 與 conf/context.xml。 可以參考 Apache Tomcat 的文件。
首先要設定 web.xml,開啟 CGIServlet 的支援,並且設定執行的程式。 如果是修改 conf/web.xml,那效果是全域性的。如果修改 WEB-INF/web.xml,就只侷限在你的 web application。
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>/usr/bin/tclsh</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
與 URL mapping:
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
再來是 context.xml,設定 Context 的 privileged 屬性為 true(但是要注意,這樣的更改是全域設定):
<Context privileged="true">
在 webapps/ROOT/WEB-INF 目錄中建立一個新的目錄 cgi。 接下來將我們的 Tcl CGI script 放在 cgi 目錄就可以了。舉例來說,如果是 hello.tcl,網址就是:
http://localhost:8080/cgi-bin/hello.tcl
如果不要在根目錄,舉例來說,可以在 webapps 下建立一個目錄 myapp,myapp 目錄下再建立一個目錄 WEB-INF, 然後 WEB-INF 目錄下再建立目錄 cgi。
接下來將我們的 Tcl CGI script 放在 cgi 目錄,如果正確設定就可以執行。舉例來說,如果是 hello.tcl,網址就是:
http://localhost:8080/myapp/cgi-bin/hello.tcl
訂閱:
文章 (Atom)