2018-11-29

HTTP/3 explained

HTTP/3 explained
HTTP/3 協定出爐
The Road to QUIC
HTTP/3


可以開始閱讀 HTTP/3 相關的文件。

From https://http3-explained.haxx.se/images/quic-stack.png

HTTP/3 主要在 UDP 上建立一個新的協定,QUIC (Transfer protocol over UDP)。

2018-11-18

Tcl/Expect: Auto login to PTT BBS (using ssh) on Linux

使用 expect 套件:
#!/usr/bin/env tclsh

#
# A script to login ptt BBS
# tclsh -encoding big5 login.tcl host user username password
#
package require Expect

set timeout 60

encoding system big5
spawn ssh [lindex $argv 1]@[lindex $argv 0]

expect "請輸入代號,或以 guest 參觀,或以 new 註冊:" {
    exp_send "[binary decode base64 [lindex $argv 2]]\r"
    expect "請輸入您的密碼:" { exp_send "[binary decode base64 [lindex $argv 3]]\r" }
}

interact

我只是將 username/password 使用 base64 編碼,所以這裡需要解回來。然後這個 script 需要使用 BIG5 編碼存檔(執行時也需要使用 -encoding 設定編碼)。

然後寫一個 script 呼叫這個 tcl script,下面是一個例子:
#!/usr/bin/env bash

tclsh -encoding big5 ~/bin/login.tcl ptt.cc bbs dXNlcg== cGFzc3dk

再來將這個 shell script 設為可執行,就可以執行以後自動登入 PTT BBS。

2018-11-11

Print PATH Entries (no duplicate)

#!/usr/bin/env tclsh

set path [lsort -unique [split $::env(PATH) ":"]]

foreach p $path {
    puts $p
}

這只是一個簡單的練習。在取得目前的 PATH 環境變數列表以後使用 lsort 排序並且將重覆的部份移除 (-unique option),然後印出來。