Tmux dump buffer to file

Posted on Tue 28 March 2017 in note • Tagged with tmux, linux, utllsLeave a comment

tmux buffer 中的資料寫到檔案中

參考 Unix stackexchange

prefix + :, then type in capture-pane -S -3000

上面這行把 3000 行的資料複製到 buffer 中。

prefix + : again, and type in save-buffer filename.txt

上面這行把 buffer 中的資料寫到 filename.txt

prefix 預設值是 Ctrl+b

Continue reading

Find 排除目錄

Posted on Wed 15 March 2017 in note • Tagged with find, linux, utllsLeave a comment

使用 find 可以很簡單的找出目標檔案來做處理,記錄一下要排除特定目錄怎麼做。

目標是排除 .git 下的所有檔案

find . -path "./.git/*" -prune -o -type f -exec blahblah {} \;

blahblah 就是要對每個檔案做處理的程式。

單元解釋

-path "./.git/*" -prune

除去 (-prune) 路徑符合 ./.git/* 的部分

-o -type f -exec blahblah {} \;

或者是 (-o) 找出類別是檔案 (-type f) 的項目交給程式處理 ( -exec blahblah {} \; )

Continue reading

準備資工在職專班考試與書面審查資料

Posted on Sun 11 December 2016 in graduate school • Tagged with nctu, examLeave a comment

新一個年度的在職專班招生開始了,考試的日期也一天天逼近。有網友寫信來詢問如何準備,回覆之後現在整理後發出供有需要的人參考。

同時,決定要唸在職碩士班通常也是一個生涯的轉折點,或者說是目標實現的一個步驟。在職碩的生活會變得更加忙碌,這是工作、家庭、學業三個面向同時都需要你付出時間與努力的生活,三個面向相互的調整與平衡是很重要的。

準備考試

大多數有筆試的學校都會考計算機概論,有的學校會加註資料結構,但是其實計算機概論要怎麼考都可以的。整體的範圍其實蠻廣泛的,底下就是我當初的準備方向。

寫考古題

我去年(2015)十二月開始寫考古題,交大->中央->政大,寫過去十年的考古題總共寫兩遍。然後就自己的擅長與弱項去做調整。

中央的考題通常會有程式題,去年出了兩題手寫程式題。程式題中有一點是線代的內積,另一題是費式數列。

交大去年(104學年入學考)有一題考計組的機器碼追蹤。那題是從政大 100 學年的在職碩入學考來的,opcode 定義完全一樣,只有要追蹤的機器碼不同。

計概

計概有一些是基本分,像是編碼、進制轉換。交大去年我記得有一題是 gray code。有小數的轉換一定要會,這是基本 …

Continue reading

Tex 數學式

Posted on Wed 02 November 2016 in note • Tagged with tex, mathLeave a comment

render_math 可以把 tex 語法的數學式畫出來。語法參考 MathJax

範例 - inline

$e=mc^2$

這是行內數學式的範例: \(e=mc^2\) 這樣就可以了。

範例 - block

$$e=mc^2$$
$$e=mc^2$$

範例 - block with label

\begin{equation}
    \label{eq}
    X^2
\end{equation}

\begin{equation}
    \label{eq2}
    e=mc^2
\end{equation}

Ref: \ref{eq}

Ref: \ref …
Continue reading

Kernel Support for miscellaneous Binary Formats

Posted on Thu 20 October 2016 in note • Tagged with linux, kernel, binfmtLeave a comment

Linux Kernel 文件 binfmt_misc.txt 提到的功能。主要就是告訴 kernel 如果把特定的檔案當成執行檔來呼叫。判斷的方式分成 extension 及 magic。

第一步掛載 binfmt_misc

mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc 

向 binfmt 註冊你的格式

註冊字串組成

:name:type:offset:magic:mask:interpreter:flags
  • name 是識別用的字串,註冊後會出現在 /proc/sys/fs/binfmt_misc
  • type 有 MEM 就是 magic number …
Continue reading

Formal language 作業:nfa 轉 dfa

Posted on Tue 18 October 2016 in graduate school • Tagged with formal language, dfa, nfaLeave a comment

NFA

DFA

Continue reading

Lua 處理 UTF-8 字串

Posted on Mon 17 October 2016 in note • Tagged with lua, utf8Leave a comment

最近要用 Lua 處理 UTF-8 字串,但是 Lua 到了 5.3 才開始支援 UTF-8。

UTF-8 字串長度及複製

我的需求很簡單,只要判斷字串長度及類似 strncpy 的字串複製。所以直接利用 Lua 5.3 手冊 提到的 charpattern 來進行字串的操作。

[\0-\x7F\xC2-\xF4][\x80-\xBF]*

utf8len

function utf8len(s)
    _, len = string.gsub(s, '([\0-\x7F\xC2-\xF4][\x80-\xBF]*)', '%1')
    return len …
Continue reading

Pelican 裝 ligquid tags plugin

Posted on Mon 17 October 2016 in note • Tagged with graphviz, pelican, pythonLeave a comment

為了之後要畫圖方便,加裝了 ligquid tags 的 plugin。方法很簡單只要加入 PLUGIN_PATHSPLUGIN 即可。

PLUGIN_PATHS = ['../pelican-plugins']
PLUGINS = ['liquid_tags.graphviz']

之後底下的 dot 語言就可以畫出 graphviz 的圖了。

{% graphviz
    dot {
        digraph graphname {
            a -> b -> c;
            b -> d;
        }
    }
%}

但是

因為我用的是 Python 3 會因為 base64.b64encode 會輸出 byte string。這會導致 inline base64 encodeing 的格式跑掉,所以圖會出不來。改了一下程式碼發了個 PR #798

底下是 …

Continue reading

Lua 中的 ipairs 與 pairs 的差異。

Posted on Fri 07 October 2016 in note • Tagged with luaLeave a comment

PIL 7.3 – Stateless Iterators 中有提到

ipairs, which iterates over all elements in an array, as illustrated next

The pairs function, which iterates over all elements in a table

也就是說 ipairs 是遍歷 array (Lua 中以數字為 index 的 table, 1 為起始),而 pairs 則是遍歷 table 中所有的元素。

當你把 Lua 的 table …

Continue reading

lua 複製物件

Posted on Thu 06 October 2016 in note • Tagged with luaLeave a comment

之前踩到一個坑,因為沒注意到指定 array table 中的物件時是 reference 到原有物件,所以整個 table 中的東西都長得一樣,而且還牽一髮動全身。解決方式就是複製生出新的物件。

function deepcopy(orig)
    local orig_type = type(orig)
    local copy
    if orig_type == 'table' then
        copy = {}
        for orig_key, orig_value in next, orig, nil do
            copy[deepcopy(orig_key)] = deepcopy(orig_value)
        end
        setmetatable(copy, deepcopy(getmetatable(orig)))
    else -- number, string, boolean, etc …
Continue reading