pdftk 移除 pdf 的浮水印

Posted on Mon 19 June 2017 in note • Tagged with pdf, linux, pdftk, watermark

目標:移除 pdf 中的文字浮水印

手上有一些 pdf 有浮水印,突然想要移除看看。找了一下 pdftk 可以做到這件事。Superuser 上的 How to remove watermark from pdf using pdftk? 寫得很清楚又簡單。

做修改之前應該要先備份原檔

做修改之前應該要先備份原檔

做修改之前應該要先備份原檔

步驟

1. 把壓縮過的 pdf 解壓縮

如果你的 pdf 有被壓縮,要先解壓縮

pdftk input.pdf ouput uncompress.pdf uncompress

2. 把浮水印的文字去除

sed -e "s/watermarktextstring/ /g" uncompress.pdf …

Continue reading

Tmux dump buffer to file

Posted on Tue 28 March 2017 in note • Tagged with tmux, linux, utlls

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, utlls

使用 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, exam

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

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

準備考試

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

寫考古題

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

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

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

計概

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


Continue reading

Tex 數學式

Posted on Wed 02 November 2016 in note • Tagged with tex, math

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, binfmt

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, nfa

NFA

DFA


Continue reading

Lua 處理 UTF-8 字串

Posted on Mon 17 October 2016 in note • Tagged with lua, utf8

最近要用 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, python

為了之後要畫圖方便,加裝了 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 lua

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