2018-10-19

tcl-caca

tcl-caca: Tcl bindings for Colour ASCII Art library (libcaca)


我只實作了一部份的功能,但是如果用來作簡單的文字界面處理應該夠用了。

2018-10-15

tklib spec update

tklib-spec
ANNOUNCE: Multi-entry widget package Mentry 3.8


因為 Mentry 更新,而發佈的文章說也有包含在 tklib 中,所以我更新自己的 tklib RPM spec 到目前的 code base,這樣理論上就會同時更新到最近的變更。

2018-10-09

Tcl: Show platform/arch info

這只是簡單的程式練習。

#!/usr/bin/env tclsh

puts "Platform: $tcl_platform(os)"
puts "Arch: $tcl_platform(machine)"


在 Ubuntu 14.04 64bit 上,答案是這樣:
Platform: Linux
Arch: x86_64

2018-10-08

Tcl: {*}

{*} was new in Tcl 8.5, and resulted in the Endekalogue becoming the Dodekalogue.

{*} 可以說是 Tcl 語法上一個比較大的修改(也可以說是語法糖)。將 List 的每個 item 轉變為目前 command 的參數。這是 TIP 293  的提案。

下面是簡單的測試:
set command [list set a 5]
set value [eval {*}$command]
puts $value

我最常用的是在使用 exec 時:
set command [list ls -al]
exec >@stdout 2>@stderr {*}$command


大抵來說,是個很好的改進。

2018-09-30

Next Scripting Framework 2.2.0

Changes to NSF in version 2.2.0
ANNOUNCE: Next Scripting Framework 2.2.0 is available


NSF 釋出了一個新的版本,2.2.0。可以在這裡下載。 所以我也更新了我自己的 RPM spec

2018-09-27

SQLite3 and UUID

uuid


使用 SQLite3 產生一個亂數的值,然後拿到以後進行處理。因為 SQLite 支援 In-Memory Databases,我加上一點處理的 code,所以可以這樣用:
proc uuid {} {
    try {
        package require sqlite3
        
        sqlite3 db1 ":memory:"
        set u [db1 onecolumn {select (hex(randomblob(16)))}]
        db1 close
        
        return [string range $u 0 7]-[string range $u 8 11]-[string range $u 12 15]-[string range $u 16 19]-[string range $u 20 end]        
    } on error {em} {
        error $em
    }
}


這樣就可以使用 SQLite Tcl interface 產生一個 UUID string。

2018-09-26

Java 11 Released

Java 11 Released
JDK 11
Java Is Still Free
Do not fall into Oracle's Java 11 trap
The future of Java and OpenJDK updates without Oracle support
Java依舊免費?


但是 Java 加快了開發的循環以後,對我而言,tclBlend 要使用哪一個 JDK 版本就變成一個麻煩的問題。

我已經在之前將我自己使用的 RPM spec 設為 java-11-openjdk-devel,而在下個 JDK 版本(也就是 12)來臨之前,應該有六個月的時間可以考慮。

另外一個考慮的重點是如果我升上 openSUSE LEAP 15.1,我就會以 openSUSE Leap 15.1 為主要的考量點。


更新:
另外,目前 OpenJDK 與 Oracle JDK 在技術上來說已經一致,所以接下來在六個月之後的長期更新版本負擔將會在 OpenJDK 上。但是如果六個月就要跳一次版本,這會是個麻煩的議題。

tklib/tablelist 更新

tklib-spec
tablelist-spec


tablelist 釋出了 6.3 版,所以我更新了 tklib 與 tablelist 的 openSUSE RPM spec。

2018-09-20

tcl-zstd 更新

tcl-zstd


因為 Zstandard 有更新內容,所以我也跟著更新了 RPM spec。在做的過程中,我出現了嚴重的錯誤,我居然誤殺了自己 openSUSE build service 的 Home Project,還好殺完以後 OBS 有做防呆機制,所以使用者如果嘗試建立一個新的,OBS 會提供選項回復 Home Project 的資料。這表示我最近的情況都不在狀態內,我想我可能需要休息一下。

我思考了一下,把另外一個部落格也刪除了,只留下這個部落格。這個部落格以後應該還是會更新吧,我不太確定。

2018/09/21 更新
我復原了另外一個部落格。

2018-09-17

tcl.mqttc v0.4

tcl.mqttc


paho.mqtt.c 的檔案升到 v1.3.0。加入一個 option -version,用來指定 MQTT protocol 的版本(3.1, 3.1.1, 5 以及不指定的就使用預設值,目前確定 MQTT 3.1/3.1.1 是正確的,但是 MQTT 5 還沒有測試。

接下來等 MQTT 5 broker 的部份準備好再測試(如果那個時候我有時間的話),同時如果 paho.mqtt.c 的版本如果有更新,我再更新檔案。

更新:
使用 VerneMQ 測試 Websockets 的部份,確定可以使用,所以我更新了 README.md。


2018/09/18 更新
要支援 MQTT5 的連線需要加入更多的 code,我使用 VerneMQ 測試以後,基本的連線功能看起來 OK,所以我更新了 source code,同時將版本更新到 v0.5。