2015-05-04

Tcllib 1.17 released

Tcllib 1.17 released


An excerpt from the release README:

    6   new packages                in 5   modules
    66  changed packages            in 39  modules
    46  internally changed packages in 31  modules
    293 unchanged packages          in 74  modules
    418 packages, total             in 118 modules, total

The full details can be found in the
[release technote](http://core.tcl.tk/tcllib/technote/56416fe9cf1b0c0f5cd535861225a56af8228999).

2015-02-28

TLS v1.6.4 is out

TLS and Openssl - Static libraries (w32, mingw/msys)


下載 TLS v1.6.4 以後使用之前 MinGW/MSYS 的方式編譯,確定可以編譯。


測試的 script 從 Tcler's Wiki 來的:
package require tls
variable quit 0

proc Read {chan} {
    if {[eof $chan]} { fileevent $chan readable {}; puts "Closed"; set ::forever 1; return }
    puts [read $chan]
    variable quit ; if {!$quit} { puts $chan QUIT; set quit 0 }
}

proc Write {chan} {
    fileevent $chan writable {}
    tls::handshake $chan
    fconfigure $chan -buffering line -blocking 0 -translation crlf
}

set sock [tls::socket -async pop.gmail.com 995]
fconfigure $sock -encoding binary -buffering none -blocking 1
fileevent $sock writable [list Write $sock]
fileevent $sock readable [list Read $sock]

vwait ::forever

2015-02-26

Wub Direct example

Tcler's Wiki: Wub Direct


稍微嘗試了一下 Tcler's Wiki 提供的範例,發現 local.tcl 如果是使用 svn checkout 目前的 code,要放在跟 site.config 與 Wub.tcl 同一個目錄中。


我發現在 examples 有放一個 hello-direct.tcl,想要測試這個檔案,所以在 local.tcl 使用:
source examples/hello-direct.tcl

然後加入下列的設定到 site.config -
hello {
       domain Direct
       url /hello
       namespace ::Hello
}

再打 http://localhost:8080/hello/ 測試,是有網頁內容顯示的(而不是丟出錯誤訊息),看起來有成功。


但是在 local.tcl 直接使用 source 的方式感覺還是有點怪怪的,不知是否有更好的方式。


更新:
在設定  hello-direct.tcl 以後,又用 hello 來測試 Wub 的 rewrite 功能,site.config 設定如下:
testrewrite {
    url /testrewrite
    rewrite /hello
}

如果使用 http://localhost:8080/testrewrite/ 測試,確實會被轉到 http://localhost:8080/hello/。

2015-02-12

REST library at Tcllib

a rest framework
rest - A framework for RESTful web services


寫了一個 FACEBOOK REST API 的小程式來測試:
package require rest

set urls "http://tcl-eval.blogspot.tw/"
set res [rest::get http://api.facebook.com/restserver.php [list method links.getStats urls $urls]]
puts $res

Facebook 回傳回來的是 XML 形式的資料,我只有印出來確定沒問題,但是看樣子是可以使用的。

下面就是結果:
<?xml version="1.0" encoding="UTF-8"?>
<links_getStats_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/
1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
  <link_stat>
    <url>http://tcl-eval.blogspot.tw/</url>
    <normalized_url>http://tcl-eval.blogspot.tw/</normalized_url>
    <share_count>0</share_count>
    <like_count>0</like_count>
    <comment_count>0</comment_count>
    <total_count>0</total_count>
    <click_count>0</click_count>
    <comments_fbid xsi:nil="true"/>
    <commentsbox_count>0</commentsbox_count>
  </link_stat>
</links_getStats_response>

2015-02-01

Tclqrencode v0.2, update libpng dll and header files

版本一樣維持在 v0.2,因為主要的 code base 沒有變動。主要的改變是更新 win 目錄下的 libpng,使用 libpng v1.6. 16 的 source code 編譯出一個新的,並且也更新了 header files。

希望我全部的事情都有做對。


連結網址:
Tclqrencode


我只有使用 Tclqrencode v0.1 這篇文章的範例進行測試,希望不會有什麼問題。

2015-01-29

TclOO Past Present Future

TclOO Past Present Future - Tcl Community Association


在網路上找到的關於 TclOO 的簡報,簡介了 TclOO 的來由以及發展。

2015-01-26

FreeWrap 6.64 released

在 com.lang.tcl 上看到訊息:
ANNOUNCE: FreeWrap 6.64 released


Tcl/Tk 版本已更新到 8.6.3,Tcllib 更新到 v1.16。下面是更新的內容:
 
Changes implemented in version 6.64
------------------------------

  1. FreeWrap 6.64 is based on TCL/TK 8.6.3
  2. The 64-bit Windows version has tcllib1.16 included (instead of tcllib1.15).
  3. FreeWrap 6.64 now returns the correct time stamp for a file contained within a wrapped application or within a ZIP archive.
  4. The following additional ttk themes are now installed into freeWrap.
    - aquablue
    - aquativo
    - black
    - blue
    - clearlooks
    - keramik
    - keramik_alt
    - plastik
    - radiance
    - winxpblue

2015-01-24

tdbc::sqlite3 test script

只是測試用的 script。

#!/usr/bin/tclsh

package require tdbc::sqlite3
tdbc::sqlite3::connection create db "sample.db" 


set statement [db prepare {drop table if exists person}]
$statement execute
$statement close

set statement [db prepare {create table person (id integer, name varchar(40))}]
$statement execute
$statement close

set statement [db prepare {insert into person values(1, 'leo')}]
$statement execute
$statement close

set statement [db prepare {insert into person values(2, 'yui')}]
$statement execute
$statement close

set statement [db prepare {SELECT * FROM person}]

$statement foreach row {
    puts [dict get $row id]
    puts [dict get $row name]
}

$statement close
db close

2015-01-18

SQLite extension

Tcl 的 source package 已經有內建 SQLite,放置在 pkgs 的目錄裡。


如果要自己編譯一份最新的 (使用 MinGW/MSYS),我目前的做法是這樣:

首先去 SQLite 的下載網頁,下載 C source code as an amalgamation. Also includes a "configure" script and TEA makefiles for the TCL Interface. 這一個檔案。以目前的版本為例,就是 sqlite-autoconf-3080800.tar.gz。

再來是建好一個 SQLite 的目錄,以目前的版本為例,就是 sqlite3.8.8。

解壓縮從 SQLite 下載網頁下載的檔案以後,可以看到裡面有一個 tea 目錄,將 tea 目錄下的全部檔案都複製到剛好建立的 sqlite3.8.8 下,然後將 sqlite3.c 複製到 sqlite3.8.8 下的 generic 目錄。

接下來就使用

./configure
make
make install

就可以了。

2014-12-27

Get the exact version ot Tcl

記錄一下,如何得到 Tcl 目前的版本號。(可以參考 Get the version of TCL from the command-line?)


使用下列的 command:
info patchlevel