2024-05-17

The race to replace Redis

The race to replace Redis
redis (Tcler's Wiki)


雖然有點晚了(在三月發生的事情),不過事件持續中。Redis 資料庫更改授權,從 7.4 開始就不是 Open Source 軟體。Redeis 目前使用雙授權,其中 Server Side Public License (SSPL) 與 MongoDB 所使用的相同,不是 OSI 所認證的自由軟體授權(Redis 另外一個授權也不是!)。也因此有好幾個  Forks 出現,而各個 Linux distribution 需要找出可用的選項。

所以如果有人寫文章列出 Open Source Database,結果有 MongoDB(接下來 Redis 也是如此),你就知道這個文章的作者真的只是搜尋網路然後列出個名單,而他並不用心。

2024-05-16

tablelist v7.2 and Scrollutil v2.2

tablelist, Scrollutil 與 Mentry 都釋出了新版,可以參考作者的網頁

因為三個套件都是 Tklib 的套件,也可以下載 Tklib 最新的原始碼取得。

2024-05-09

ATOM to HTML

下面的程式使用 TclCurl 自網站下載 ATOM XML 的資料, 下載以後使用 tDom 分析並且將 title 與 link 的資料儲存為 html 格式。 只有使用自己的部落格資料測試過。

#!/usr/bin/env tclsh

package require TclCurl
package require tdom

proc get_atom {url} {
    try {
        set curlHandle [curl::init]
        $curlHandle configure -url $url -bodyvar result
        $curlHandle setopt CURLOPT_HTTP_VERSION 2TLS

        catch { $curlHandle perform } curlErrorNumber
        if { $curlErrorNumber != 0 } {
            throw error [curl::easystrerror $curlErrorNumber]
        }
    } on error {em} {
        error "Error: $em"
    } finally {
       $curlHandle cleanup
    }

    return $result
}

proc parse {XML ofname} {
    set doc [dom parse $XML]
    set root [$doc documentElement]
    set ns {xmlns http://www.w3.org/2005/Atom}
    $doc selectNodesNamespaces $ns
    set titleList [$root selectNodes //xmlns:entry/xmlns:title]
    set linkList [$root selectNodes {//xmlns:entry/xmlns:link[@rel='alternate']}]

    set out [open $ofname w 0666]
    foreach tnode $titleList lnode $linkList {
        set ntitle [$tnode text]
        set nlink [$lnode getAttribute href]

        puts $out "<a href=\"$nlink\">$ntitle</a><br>"
    }
    close $out
}

if {$argc == 2} {
    set url [lindex $argv 0]
    set ofile [lindex $argv 1]
} else {
    puts "Usage:"
    puts "\ttclsh atom2html.tcl url filename"
    exit
}

if {[catch {set data [get_atom $url]} err]} {
    puts $err
} else {
    parse $data $ofile
}