2023回顧

  • 工作這一整年特別忙
  • 一些服務開始自架(XMPP等等的)
  • 買了一些還沒有正式看的書
  • 難以專注在讀書上
  • 收割韭菜(物理)
  • 體重還是上升
  • 運動習慣還是沒有很好的建立
  • 開始建立一些每週習慣,雖然有些習慣還沒很好建立
  • 這一整年創作文學類的動力甚低,就算有個想創作世界文明毀滅下的台灣社會的小說,也不想寫。

排版的想法一則

目錄
  1. Span style

這是個人筆記。

Span style

HTML 的span加上style指定文字格式,可以進行文字的調整。但要如何實作於自己的排版軟體上呢?

我們可以想像文字的呈現是:有格式的文字 = f(純文字,環境)

我們可以假設預設格式為:dfStyle

applyStyle(dfStyle, [txt1, span([a_1: v_1, a_2: v_2, ..., a_n, v_n],txt2), txt3])可以轉為:

applyStyle(dftyle,txt1), applyStyle(dfStyle.replaceAttr([a _ 1: v_1, ...a_n, v_n], applyStyle(txt2)), applyStyle(txt3)

寫成虛擬碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
fn applyStyle(style, appliee) -> void{
if isArray(appliee){
// if appliee[0] is a span then replace the attrs in appliee[1]
if (appliee[0] == span){
applyStyle(style.replaceAttr(appliee[1], appliee[2])
}else{
return map(appliee, applyStyle);
}
}else{
drawText(appliee, style);
}
}

gitweb 的架設使用

(最近更新:2024-03-22)

因為有點想要脫離FAANGM的影響(詳見前文),不想要利用GitHub,又想要仿效SourceHut的方式,來用傳統的方式管理專案,但也不想要在另一個網站註冊新帳號,所以就用自架網站和租用的託管主機來安裝。目前使用以下三個工具,以Clo為案例:

  • 共筆MediaWiki:簡介專案、彙整錯誤回報列表、其他相關文件也可以放進去(案例)
  • 郵件論壇(mailing list, Mailman):用來討論程式使用以及回報錯誤用(案例)
  • Nginx伺服器上的GitWeb:來放置、瀏覽並提供他人下載git的repo

因為考慮到其他用戶或出外時的我能夠即時通連錯誤,加上設定mailing list平臺很麻煩,還要和mail transfer agent這種郵件伺服器引擎的安裝打交道,所以使用web hosting託管提供的服務。雖然所提供的Mailman引擎的版本比較老。MediaWiki就用之前的個人維基。

但是比較麻煩的還有gitweb,雖然可以在線上瀏覽repo程式碼庫,但是設定比較麻煩,所以在此記錄下:

部落格遷移網址,另外不用Disqus討論系統。

部落格遷移網址

鑑於整合個人網路與資訊科技資源,並且計劃部分降低對FAANGM數位財團相關資源的使用,所以將部落格遷移到新網址,日後再遷站到自己的門口埕二號機。

新網址:blog.kianting.info。

最近也打算更新一下相簿和程式碼倉庫的放置位置,時程未定。初步成果(日後會擴增)如:

停用Disqus討論系統

鑑於討論量比較低,好幾年不到10條,而且為了安全特性,不用動態部落格,Disqus又有追蹤器(追蹤訪客瀏覽行為的程式)的疑慮,影響使用者權利。經評估,故撤掉Disqus的討論系統。

以前的迴響存檔如下(PDF),技術限制無法完全備份請海涵:

迴響存檔.pdf

感謝大家先前的留言,如果有反饋,可以用電郵聯絡。

在 A2hosting 用 AppImage deploy Rust rocket 這個 framework 的 app

Rust 的 Rocket 是一個後端框架 (framework)。除了有靜態型別語言的好處(比如減少runtime error)外,還有一個binary檔包全部,免除裝其他太多 library 或是框架 library 的問題。

因為自己的是網路租用的A2 site hosting 空間(Linux),想說為了物盡其用,所以想要把產生的 web app binary 放在上面執行,但想當然爾,還是缺相依性(空間提供的函式庫版本太舊)。後來想,既然 AppImage 可以包一個執行檔的諸多相依軟體或是函式庫,為何不用之包呢?

以下以放在 /path/to/exampleapp 這個 app 為例,講述我 deploy 的方法。

LaTeX斷行演算法

以下內容係參考網路上找到的LaTeX斷行演算法,加上一些修改而成。

使用程式筆記本的.ipynb檔撰寫,語言是OCaml,授權為MIT License。載點:

以下是程式筆記本檔內文:

1
2
3
4
5
(*有關於LaTeX使用於斷行的演算法

首先我們要制定一個字元(包含斷行後新生的連字號,以及空白)在斷行前、斷行後的寬度

*)

一個外行對依值型別的理解

依值型別 (dependent type) 是型別理論 (type theory) 的重要概念,也是FP的進階概念。因為概念很抽象,而且還要會點型別概念,方好入手。雖此係函數式程式語言的重要概念,但是許多程式人,會仰之彌高,進而生畏,降低學習意願,遑論相關係的定理證明了。

身為一個外行,之前筆者亦如是。對型別理論感到興趣之際,面對依值型別還是一頭霧水,不知何以理解。然最近稍理解些,所以做了這份筆記。

但是因為內文牽涉許多數學符號,為利閱讀,以Typst排版軟體製成PDF版:[下載連結]

個人wiki最近更新(2023年4-6月)