Perl 版本的 YUICompressor (CSS 的部份)

看到 Booking.comYUICompressor 移植到 Perl 上:「Efficient CSS Compression in Perl」。模組在 CSS::Compressor 這裡,看日期其實放出來蠻久的了?

開發的起因是因為 Java 啟動速度太慢,所以用 Perl 改寫... 雖然只能處理 CSS 的部份,但因為現在 JS 的主力應該是 UglifyJS2 或是 UglifyJS,理論上是可以把 Java 版本的 YUICompressor 了放到旁邊了?

據開發者自己的說法,因為 Java 啟動的 overhead 實在太重,就算是處理很大的 CSS 檔案,也可以省 40% 的時間,如果是小一點的檔案甚至可以省一半...

Btrfs 的 Hash Collision...

Slashdot 上看到「Denial-of-Service Attack Found In Btrfs File-System」覺得很有趣,結果一看,又是 hash collision... XD

一年前的「n.runs-SA-2011.004 - web programming languages and platforms - DoS through hash table (PDF)」打爆所有主流語言,沒想到在 filesystem 上也發生了 XDDD

不知道要怎麼修正... (已經存在的資料要怎麼 migrate?incompatible change?)

惡搞的 pull request 被人嫌到不行...

GitHub 上總是有人會送一些奇怪的 pull request 出來,把整個 code repository 砍掉換成惡搞的東西... 這次是 CoderDojo / CoderDojo-Kata 這個專案被人發 pull request 要惡搞,結果一堆人利用 comment 的功能開始嫌東嫌西:「pull 1」。

看完一次後覺得實在是太... 有趣 XDDD 乾脆列出來:

  • 沒有 doctype。
  • <style> 沒有指定 type。
  • <script> 指定的版本居然是 JavaScript 1.2... XDDD
  • 「你的 code 疑似抄自 1995 年的 sample,請考慮加回 GPL statement」
  • jslint 掛得很慘 XDDD
  • javascript 裡使用不必要的全域變數。
  • 可以用三元表示式讓 code 更清楚。
  • 變數名稱不具意義 XD
  • setInterval() 只是要呼叫一個 function,可以直接用 function name 而不需要用字串。
  • 為什麼你不縮排呢,很難讀耶...
  • 為什麼結尾不加上分號呢 (然後就呼叫 Douglas Crockford XDDD)
  • body 加上 bgcolor 被罵 XDDD
  • bgcolor 的顏色用 #000000 也被罵 XDDD 應該用 #111111... XDDD
  • 用 <br/> 排版被罵應該用 css 排 XD
  • table 排版再被罵...
  • single-quote 與 double-quote 混用也被罵不一致...
  • 用 inline css 被糾正 XD
  • 裡面用到圖片被稱讚 XDDD 被問圖片裡的鍵盤哪裡可以買 XDDD
  • 然後圖片沒有 alt 也被刁 XD
  • 沒用 safe color 被揍...
  • 下面有 alt 的圖片,但 alt 內容是空白而被人罵,但就有人很認真的回他說「alt 空白是合法而且某些 case 下是正確的語意,blah blah blah...」XDDD
  • 用 <b> 被提醒 deprecated,然後又有人很認真的回「在 HTML5 裡面被 undeprecated 了」XDDD
  • 出現 "click here" 但卻不能按啊啊啊

(倒地不起)

mctop:memcache top

mctop 其實是個看得懂 L7 packet 的 sniffer XDDD

軟體是由 Etsy 所開發,出自:「mctop - a tool for analyzing memcache get traffic」。跑起來像這樣 (官方的範例圖):

GitHub 頁面上官方有提到因為是透過 ruby-pcap,目前沒有辦法完全承載大流量 (會有 packet loss),不過看起來是 profiling 必備工具 :p

cdnjs (其實我要說的是 Bootstrap...)

之前曾經提過 BootstrapCDN,不過我不是很喜歡用。主要的原因包括 netdna.bootstrapcdn.com 所使用的 CDN 在是不包含亞洲範圍 (會需要到美西抓),加上之前因為換 url 結構結果本來的 url broken...

cdnjs 是之前就知道的服務,剛剛看了一下發現東西愈來愈完整了... 雖然名稱裡是放 js,但實際上上面放的 Bootstrap 是完整的:

//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings.png
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings-white.png
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.min.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.css
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.js

剛剛在 CloudFlare 官方的 blog 上看到介紹 cdnjs 有點意外:「CDNJS: The Fastest Javascript Repo on the Web」。

翻了翻 cdnjs.cloudflare.com,看起來是包含亞洲的點,在 HiNetTWGate 上測試是導到香港的點,應該會用用看吧。至於其他 Google Hosted Libraries 有提供的應該是會用 Google 的服務,畢竟是直接從台灣的機房供應的...

了解 C 語言的數字資料型態...

在「Deep C: Understanding the Design of C Integer Types」這篇文章裡面以 C99 為參考文件,說明 C 語言的資料型態 (尤其是數字的部份)。

裡面引用了規個書的文件,說明「為什麼」數字資料型態會長這樣:

To help ensure that no code explosion occurs for what appears to be a very simple operation, many operations are defined to be how the target machine’s hardware does it rather than by a general abstract rule.

以 target machine 為主要考量的特性與 C 語言被認為是 portable assembly language 的想法還蠻同調的... (What is a portable assembly language?)

所以寫 Portable C code 的人會比較辛苦,需要查規格書的資料,確保各平台都能夠正確被編譯... 而到最後演變成沒什麼人在管 "portable" 這件事情,反正 Autotools 開下去針對不能跑的平台用不同的 code XD

429 Too Many Requests

剛剛在「Apache HTTP ServerをRFC6585の"429 Too Many Requests"に(とりあえず)対応させるパッチ」看到的... 429 Too Many Requests 是在四月才被提出來的 (RFC 6585),雖然還不是 Standard (目前是 Proposed Standard),但看起來不錯啊...

一定要放一張經典畫面...

暴力法破解密碼...

MD5SHA-1 或是前陣子通過的 SHA-3,都不是設計用來單向儲存密碼用的。bcrypt 或是 PBKDF2 比較接近這個需求。

針對使用 Cryptographic hash function 儲存密碼的行為,除了可以用 Rainbow table 攻擊外,最近流行使用 GPU 加速暴力運算...

前幾天看到的 cluster 相當威猛,可以在 5.5 小時內計算出「所有 8 個字元的組合」(NTLM):「25-GPU cluster cracks every standard Windows password in <6 hours」。

這個 cluster 用了 25 張 AMD Radeon 卡,如果是針對 SHA-1 計算,每秒可以計算 630 億次,如果是 MD5 的話則可以到每秒 1800 億次,NTLM 則是每秒 3500 億次。

不過算一算也是吃電大怪物... XD

在 Linux 上跑 Mac 應用程式...

Slashdot 上看到 Darling 計畫,想要在 Linux 上跑 Mac OS X 的程式,類似 Wine 在 Linux 上跑 Windows 程式:「Darling: Run Apple OS X Binaries On Linux」。

看起來還在早期階段,貢獻者也不多?

不過,有什麼程式是在 Mac 上 (而且沒有 Windows 版) 但想在 Linux 上跑的...?