2018-08-16

EMQ/emqttd (Erlang MQTT Broker)

EMQ (Erlang MQTT Broker) is a distributed, massively scalable, highly extensible MQTT message broker written in Erlang/OTP.

在 openSUSE 從 source code 安裝,需要下列的套件:
sudo zypper in erlang erlang-observer

(erlang/otp version 需要 >= R17)

再來是下載 source code 並且編譯:
git clone https://github.com/emqtt/emq-relx.git
cd emq-relx && make

如果要執行的話:
cd _rel/emqttd && ./bin/emqttd console


再來使用 tcl.mqttc 驗證是否可以正確連線,這只是進行簡單的驗證。
Subscribe:
package require mqttc

mqttc client "tcp://localhost:1883" "USERSSub" 1 -cleansession 1 
client subscribe  "MQTT Examples" 1
while 1 {
    if {[catch {set result [client  receive]}]} {
        puts "Receive error!!!"
        break
    }
    if {[llength $result] > 0} {
        puts "[lindex $result 0] - [lindex $result 1]"
        if {![string compare -nocase [lindex $result 1] "Exit"]} {
            break
        }
    }
}
client unsubscribe  "MQTT Examples"
client close

Publish:
package require mqttc

mqttc client "tcp://localhost:1883" "USERSPub" 1 -timeout 1000
client publishMessage "MQTT Examples" "Hello MQTT!" 1 0
client publishMessage "MQTT Examples" "Exit" 1 0
client close

先執行 Subscribe 的部份,再使用 Publish 發送訊息,確定可以正確執行。

2018-08-08

Apache Rivet transition from svn to git complete

Rivet transition from svn to git complete

The migration from svn is now complete, the svn repository is now read only and every new commit has to be pushed to either GitBox (https://gitbox.apache.org/repos/asf/tcl-rivet.git) or GitHub (https://github.com/apache/tcl-rivet.git)


Apache Rivet 從 SVN 遷移到 Git,而且在 Github 有一個 mirror。

2018-08-01

tDOM 0.9.1

ANNOUNCE: tDOM 0.9.1
下載網址

(更新:我找到更新訊息了,所以有發佈更新訊息)

The most notable changes since the last release are:
- The included expat is now 2.2.5, the most recent expat release.
- An interface to use expat as pull parser (StAX like).
- Some minor options for more control about parsing ([dom parse
  -keepCDATA]) and serialization (asXML -nogtescape
  --noEmptyElementTag).
- A few bug fixes important to whom are bitten by them.


因為下載網址已經放上去檔案了,所以我更新了我自己的 openSUSE RPM spec,將版本更新到 0.9.1。

2018-07-23

TDBC and MariaDB (use MySQL driver)

下面是一個測試程式:
#!/usr/bin/env tclsh

package require tdbc::mysql
tdbc::mysql::connection create db -user root -passwd admin -host 127.0.0.1 -port 3306 -database test

set statement [db prepare {
    SELECT VERSION() as version
}]


$statement foreach row {
    puts [dict get $row version]
}

$statement close

db close


在 openSUSE Leap 15.0 上測試,需要安裝 libmariadb-devel 才能夠正確執行。我的 libmariadb-devel 來源是 http://download.opensuse.org/repositories/server:/database/openSUSE_Leap_15.0/,因為我之前需要安裝跟資料庫有關的軟體,所以有使用這個 repository。

2018-07-10

MAWT - Movie Automation With Tcl

MAWT - Movie Automation With Tcl


MAWT is a Tcl package based on FFmpeg. It provides high level procedures for movie automation with Tcl.

如果要下載的話,可以到 Downloads

我還沒有自己編譯過,會在 openSUSE 上嘗試是否可以編譯成功。

2018-07-09

Apache Rivet 3.0.2 released

Rivet 3.0.2 is a bug fix release of rivet 3.0. This release includes
  • Fixed a bug in the default error handler
  • Other minor changes are relevant to the code and have no interest at the application level

如果要看 3.0 系列的 Release Notes,可以看這個網頁。如果要下載的話,可以去 download page

2018-06-24

tcl-zstd

tcl-zstd
Zstandard (@ Tcler's Wiki)


Tcler's Wiki 上一樣已經有人使用 Critcl 寫好了壓縮與解壓縮的 code。我只是拿這份 code 來使用(不過有做一點點的修改,因為我要編譯出套件而不是採用 Tcl Module 的模式,而且不知道為什麼 openSUSE Build Service 在測試的時候會有相容性錯誤,為了通過測試,所以加改了三行左右)。

不過要注意的是 libzstd1 不存在於 openSUSE LEAP 42.3 軟體庫中,openSUSE Leap 15.0 才開始有收入軟體庫中。


真正神奇的是原作者利用了 Critcl 的特性,所以一開始的版本是 Tcl Module,而只要你有安裝 Critcl,就可以使用 libzstd 來壓縮與解壓縮。

2018-06-22

tcl-lmdb v0.4.0

檔案放置網頁

tcl-lmdb - Tcl interface to the Lightning Memory-Mapped Database

About

This is the Lightning Memory-Mapped Database (LMDB) extension for Tcl using the Tcl Extension Architecture (TEA).

LMDB is a Btree-based database management library with an API similar to BerkeleyDB. The library is thread-aware and supports concurrent read/write access from multiple processes and threads. The DB structure is multi-versioned, and data pages use a copy-on-write strategy, which also provides resistance to corruption and eliminates the need for any recovery procedures. The database is exposed in a memory map, requiring no page cache layer of its own. This extension provides an easy to use interface for accessing LMDB database files from Tcl.

Main Change

  1. Add command to handle byte array
  2. Add test cases for new command

一些說明

事情有點複雜。 我在 Github 上有一個 Use byte arrays for keys and values 的 pull request。可是如果我直接 merge,就會造成 API 之間行為的不一致。所以我關掉那個要求,但是說我會加新的 command 來處理這件事。

可是加完以後,我覺得這樣事情只做了一半,所以最後我加入更多的 command 來處理 byte array 的部份,同時也加入一些 test cases 確定我加入的部份是 OK 的。

所以現在你可以將 key/value 視為 string,或者是 byte array,看你使用的 command 而定。如果沒有 byte array 的需求,那這個版本對你而言只是版本號的增加,那就…… 沒影響;如果需要視為 byte array 處理,那這個版本就會符合需求。因為修改了介面,所以跳升一個版本,變成 0.4.0。

tcl-brotli

tcl-brotli
brotli (@ Tcler's Wiki)


Tcler's Wiki 上已經有人使用 Critcl 寫好了壓縮與解壓縮的 code。我只是拿這份 code 來使用。

不過要注意的是 libbrotlidec1/libbrotlidec1/libbrotlicommon1 不存在於 openSUSE LEAP 42.3 軟體庫中,openSUSE Leap 15.0 才開始有收入軟體庫中。

2018-06-21

Google Sites tclmonetdb is gone

簡單的說,就是 tclmonetdb  進行 Google 新的協作平台轉換以後版面直接炸掉,在試著調整了一下以後,我發現調整好是個有點麻煩的任務,我本來想說放棄新的保留舊的,但是 Google 顯然沒考慮有人會想這麼做,所以變成一個 zombie 的狀態。

經過思考,我直接刪除新的,然後在 tclmonetdb 舊的 Google Sites 網頁 留下訊息,這個站已經移往 Github 了,將在 2018/06/22 刪除。

所以事情就是這樣了,Google Sites tclmonetdb is gone. 如果 Google 服務繼續這樣,那他們會有麻煩,問題不在技術高低,問題在於使用的過程。

所以 Source code 你可以在 Github 找到:
tclmonetdb

如果是 openSUSE,你可以找到 OBS 上的檔案:
tclmonetdb @ OBS

至於 Windows 平台,其實我今天本來是要放新的檔案,但是因為炸掉了所以也直接被我刪除,就…… 跳過這件事吧。


更新:
我也刪除了這個部落格關於 tclmonetdb 文章(因為都會指向錯誤的連結)。