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

lua 複製物件

Posted on Thu 06 October 2016 in note • Tagged with lua

之前踩到一個坑,因為沒注意到指定 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

聽哪些 podcast

Posted on Wed 05 October 2016 in note • Tagged with podcast

跟朋友聊天聊到我開車上下班的時候都聽 podcast,他就問我都聽哪些節目。整理一下聊到的內容。

中文

中文的大部分比較偏休閒但還有少許知識性。目前沒有聽到台灣的節目,以前有聽劉必榮在 MyAudioCast(已結束) 的節目。

  • 內核恐慌
    • IPN 旗下。一些技術類的閒談,更新時間不固定。
    • 如果要從這個節目得到新資訊就太慢了,當成同事閒聊就好。
    • 主播是兩位業內工程師。
  • 太醫來了
    • IPN 旗下。醫生談話類節目,接近每週更新。近期不穩定。
    • 聊一些中國大陸的醫療事件與現象,也有一些醫學常識。
    • 主播是兩位醫生。
  • 味之道
    • IPN 旗下。美食類節目。一週一檔新節目。
    • 聊各種食物、餐廰、主廚還有廚藝學校。我喜歡女主持人席妙雅的聲音。
    • 主播是餐飲工作相關人士。
  • 博物志
    • IPN 旗下。聊博物館、展覽與建築。每月兩至三檔新節目。
    • 主播是念博物館學的,另一位常駐的是建築師。
  • 選美
    • IPN 旗下。美國選舉觀察 …

Continue reading

dropbox 保存密碼的安全措施筆記

Posted on Sat 24 September 2016 in note • Tagged with dropbox, security, password

Dropbox 寫了一篇文章來告訴大家他們如何安全地保存用戶的密碼。我認為蠻有趣的,有一些是我沒有接觸過的。

保存密碼的方式

簡單用一行來寫

AES256(bcrypt(SHA512(PASSWORD)))
  • AES256 加密用的是另外存的金鑰 (global pepper),每個用戶都一樣。
  • bcrypt 做 hash 的 salt 是每個使用者分開的,強度是 10
    • 這是引起我細讀的地方

bcrypt 是什麼

bcrypt是基於Blowfish所發展出來的 hash function。因為有 salt 的關係,所以可以對抗 rainbow table 的攻擊。

同時,bcrypt 的 cost (上面寫的強度)會以 2 的 cost …


Continue reading

docker 更新 jenkins

Posted on Tue 13 September 2016 in note • Tagged with docker, jenkins

因為自己家的 jenkins 是用 docker 裝的,紀錄一下自動更新 weekly 版本的方式。

安裝 jenkins

照著 jenkins 自己的正式文件來做。

docker create -v /var/jenkins_home --name jenkins_data jenkinsci/jenkins
docker run --volumes-from jenkins_data --name jenkins_container --restart=always -d -p 8080:8080 -p 50000:50000 jenkinsci/jenkins

我的選擇是建一個 jenkins 專用的 volume container。run jenkins container 的時候再掛上來 …


Continue reading