Posts

Develop a Plugin for Hexo

這陣子心血來潮花了點時間整理敝部落格的原始碼,整理的過程發現其實可以把一些小工具獨立成模組,一方面可以讓 codebase 變精簡,另一方面則是抽出來的模組也可以給其他 Hexo 使用者使用。
一開始我以為只是搬移一下程式、剪剪貼貼就可以完成,後來越做越不對勁…原來要做一個 Hexo Plugin 也是滿多地方需要注意的。
最後的成品叫做 hexo-tag-photozoom,有興趣歡迎用用看~

Read More...

Timing Attack in String Compare

程式語言通常在執行的時候,為了要最佳化執行的速度,常常會利用所謂的 Early Return。[1]
比如說條件式裡面 if (a && b) 這種判斷式,假設已經知道 A == false,那其實就可以不需要知道 b 的值,如此就可以直接忽略 b 而達到更快的知道這個判斷式是否為真[2]
同樣的這種作法其實會發生在很多地方,比方說像是比對兩個字串是否一樣:在很多程式語言中的實作其實就是遍歷兩個字串比對每一個字元,那只要過程中有一個字元不一樣那這兩個字串肯定就是不一樣,即可提早返回結果。

Read More...

從奧客玩家視角看遊戲防禦性設計

常常聽到某某遊戲外掛猖獗,作弊仔沒品、破壞遊戲樂趣等等行徑。身為一個好奇寶寶,總是很想知道其中奧秘,雖然我沒有厲害到開發出什麼外掛程式,但這幾年也陸續發現多款遊戲設計上的缺陷,成功用非正當的方式遊玩遊戲 (好含蓄…XD)。看著看著也發現其實這些遊戲的開發者理論上有辦法防止這類型的攻擊,所以只好用我不專業的見解寫下這篇文章。

對沒錯我就是奧客玩家!

本文提及的遊戲只代表曾經可以作弊,不代表現在或未來也可以。

Read More...

Ways to Access Internal Network

一般的公司或者實驗室都會隔離內部資源,只留一個統一的對外出口來達到比較高的安全性以及讓系統管理者較好控管。但是較高的安全性總是會帶來不便,這種隔離內部資源的架構導致我們無法直接存取內部資源,要透過一些拐彎抹角的方式來存取。

Read More...

Monitoring: from Handcraft to Prometheus

身為一個系統管理者,時常要花時間確保系統正常運行,這時一個好的監控系統就很重要,將所有必要的資訊統整在一個畫面上一目瞭然,既能節省時間,當有問題時又能快速找出問題所在,好處多多。

Read More...

Setup Slurm Cluster

Slurm 是一個專門拿來做分散式平行運算的平台,已被各式超級運算電腦群集採用[1]。跟 Hadoop 其實有點像,但是我個人感覺是 Slurm 好用太多,更穩定更快速,而且不用會 Java…XD
最近剛好有機會需要建立以及管理一個 Slurm Cluster,就想說來記錄一下過程以及一些雷。

Read More...

Mac 維修小記

前陣子我的 Macbook pro 13” (2015) 出現奇怪的問題,突然一直跳出訊息叫我連接藍芽滑鼠,內建觸控板跟鍵盤完全失靈,看著電腦登入畫面我卻什麼都做不了,超級崩潰…

後來稍微多重開機試幾次發現這種狀況有時候會消失,查一下網路發現大概有幾種可能,一是主機板壞了,二是鍵盤跟滑鼠的連接到主機板的排線壞了。但是這兩種壞法修的價格可差距不少,所以我就堅信只是排線壞了(X

Read More...

Use PyTorch to solve FizzBuzz

FizzBuzz 是一個常見的程式考題,題目很簡單,就是給一個整數,如果可以被 15 整除就回傳 FizzBuzz;可以被 3 整除就回傳 Fizz;被 5 整除就回傳 Buzz;都不能整除就回傳原本的數字。

用 Python 可以簡單幾行就寫出來:

1
2
3
4
5
6
7
8
9
def fizz_buzz(num):
if num % 15 == 0:
return 'FizzBuzz'
elif num % 3 == 0:
return 'Fizz'
elif num % 5 == 0:
return 'Buzz'
else:
return str(num)

不過有狂人就把這當作分類問題,用 tensorflow 來解這個問題,原文在此,是篇很有趣的文章 XD

Read More...

搞懂 JavaScript 原型鍊

最近突然看到許多關於 js 原型鍊的介紹,這東西我從來沒搞懂過也沒認真想要搞懂過 XD
說真的好像不懂也不會影響甚麼,畢竟實戰上基本用不到這些比較底層的東西…
但是當作是邊緣冷知識來看看也是挺不錯的~

Read More...

Deep CORAL: Correlation Alignment for Deep Domain Adaptation

雖然現在可以透過 Deep neural networks 來訓練出非常強大的能力,但卻難以學到比較通用的知識,通常最後訓練出的 model 會只適合處理類似於 training data 的資料。
Domain adaption 是目前在 machine learning 比較新的問題,是希望可以讓 network 學到比較跨領域的 features ,進而使訓練出來的模型可以應用在不同 domain 的資料上。

這篇論文[1] (Deep CORAL: Correlation Alignment for Deep Domain Adaptation, B Sun, K Saenko, ECCV 2016) 提出一個 CORAL loss,通過對 source domain 和 target domain 進行線性變換來將他們各自的的二階統計量對齊 (minimizing the difference between source/target correlations).

Read More...