1048576 Hows, 2097152 Wheres, And 8388608 Whys

從 Link Register 看函式呼叫的前世今生

在開發嵌入式系統的程式時,通常使用的處理器都和桌機/筆電的 x86 不同,因此會注意到有不同的 register ,其中會用 link register 來記錄函式返回的位置。因為功能看起來和 call stack 重複,因此去尋找了 call stack 的一點歷史紀錄。

Priority Inversion 是什麼?作業系統應該避免嗎?

在作業系統課程中,會提到一種叫做 priority inversion 的現象,這個現象通常是不希望發生的,通常也會順帶介紹幾種解決方式。但有些作業系統沒有把這些 protocol 通常沒有包含在預設的 scheduling policy 中。本文從一些文件和歷史 mailing list 來推測可能的原因。

新北市自行車橋上橋點/橫移門攻略:板橋來往新莊、三重

居住在板橋,要騎腳踏車在周邊區域到處跑或通勤的話就會常常需要過橋,因為腳踏車在上下橋走的路線常常和汽機車不太一樣,找了一個假日把板橋靠大漢溪這一側,也就是和新莊、三重來往的的橋用腳踏車騎過一遍,整理了一些橋的上橋點和附近方便的一些橫移門。

記憶體錯誤檢查工具 Address Sanitizer 介紹

在 C/C++ 程式中,存取越界或 use-after-free 類型的記憶體錯誤是很常見的 bug ,除了透過良好的習慣跟 design pattern 可以手工避免之外,也有一些工具在編譯過程或執行時期進行自動化的檢查。最近看到了 Google 在 2012 年發表 Address Sanitizor (簡稱 ASAN)的論文,整理一下使用方法還有論文裡面介紹 的 ASAN 實作。

在 shell 上快速架設 HTTP server 的方法:Python, nc, socat

架設測試用的 HTTP server 有幾種方法,直接裝標準的 HTTP server 軟體需要寫設定檔,用 Python 或 Golang 直接套框架寫對一些簡單的需求也太慢了。 HTTP 也是標準的網路協定,因此一些設計來在 shell 上使用的網路測試工具就剛好可以用來架簡單的 HTTP server 。這篇文章整理了幾種我自己會使用的方法和情境。

Proxmox VE 6.x -> 8.1 驚險升級過程紀錄

PVE 太久沒升級,一升上去就作死手殘好幾步差點掉一堆資料。沒有技術內容的分析,純粹作為以後警惕。

鍵盤排列轉換測試心得(一)

近期嘗試了練習不同的英文鍵盤排列,整理一些練習過程還有一些中文使用者特有的適應過程。

最小的 Root Filesystem 需要哪些東西

編譯完 Linux kernel 在 QEMU 中跑起來之後,完整啟動後遇到的第一個錯誤應該會是 Unable to mount root fs ,從解決這個錯誤到進入一個可以執行的 shell 其實不會太遠,接下來就建立一個可以讓 QEMU 上的 Linux 執行 shell 的磁碟 image

怎麼認識 tensor (一)

以前覺得張量這個名字很酷,但各種介紹文章在一開始都看不懂,希望可以寫一系列的文章給跟當時的我一樣的人。

在 Linux 上不使用 poweroff, reboot 指令關機以及重新開機的方法

最近遇到看似磁碟損壞造成大部分指令回傳 Input/output error 無法使用的情況,包含想要嘗試重新開機的指令,這時可以利用 Linux 內建的 SysRq 機制來完成。