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% 的時間,如果是小一點的檔案甚至可以省一半...

FreeBSD snapshot 版本復出...

很久前 FreeBSD 有提供 weekly build (還是 daily build?) 讓人安裝,以前還蠻喜歡抓這個版本下來裝,因為解開 ports 的東西不會太舊。現在網路夠快,用 Portsnap 拉一下就抓完了...

不過對於希望能用 -STABLE 的人絕對是一個相當棒的服務 (通常發生在 -STABLE 從 -CURRENT 合併新功能進來時... 這時可以直接裝一台機器測試,而不用先裝 -RELEASE 再 re-compile kernel & world 升級):「FreeBSD Development Snapshot Availability」。

目前針對 10-CURRENT 放出 amd64、i386、powerpc、powerpc64 四個平台,9-STABLE 則是 amd64 與 i386,所以總共是六個支線,檔案在官方的 FTP 站上可以取得:「ftp.freebsd.org/pub/FreeBSD/snapshots/」。

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

從 MySQL (單機) 轉到 Galera Cluster 的前置作業...

codership (Galera Cluster 背後的公司) 剛剛發了一篇文章,說明將 MySQL 轉換到 Galera Cluster 有哪些事情要先處理:「5 Tips for migrating your MySQL server to a Galera Cluster」。

純粹技術上的事情大致上是這樣:

  • 先轉到 InnoDB
  • 每個 Table 都加上 Primary Key。
  • 檢查 Event,確認在 Galera Cluster 裡面會怎麼跑,或是直接拆到 cron server 跑...

另外幾點不是技術上的問題,而是 policy 應該規劃的事情... 把事情列出來,多隻眼睛檢查後再一步一步照表操課。

PS:對於 Galera Cluster 不熟的人可以先去看官方網站以及 Percona 的說明,看不懂就不要用,這樣會比較安全...

Google 收到的 DMCA Takedown 在六個月內爆增為原來的十倍...

出自「DMCA Copyright Takedowns To Google Increased 10x In Just The Past Six Months」與 Google 公開的資料「資訊公開報告 - 移除要求 - 版權」。

六個月前是每週 250k 份,現在是 2500k 份。不知道是不是人工三班 (或是四班) 處理,如果每份算一分鐘,代表現在是千人以上的團隊處理 DMCA 問題。

DMCA 最大的問題慢慢浮現出來了:濫用 Takedown Notice 的人極少會受到處罰,所以就濫發。

前陣子 NASA 在 YouTube 上放好奇號登陸成功並傳回第一張照片的影片也被電視台 Takedown 過,最後仍然不了了之:「NASA's Own Video of Curiosity Landing Crashes Into a DMCA Takedown」。

也許要等數量再多十倍時 Google 會爆氣想辦法修法?

對於現在的瀏覽器,CSS 是否還需要加上 vendor prefix...

在「Do we need box-shadow or border-radius prefixes anymore?」這篇文章開頭就先給懶人包:

  • 如果沒有圓角 (border-radius) 或是陰影 (box-shadow) 會造成使用者不順。
  • 如果這四個平台 (以及瀏覽器) 的量夠大的話:Firefox 3.6-、Safari 4-、iOS 3.2-、Android 2.3-。

在這兩種情況下,你仍然需要加上 vendor prefix...

而比較長的說明,可以參考原文後半段,把這兩個效果分開說明。

如果是 Sass (SCSS) 使用者,就直接加吧,反正程式都幫你做好了... 雖然 validator 會叫 CSS 不合法,但也沒印象看過哪家瀏覽器會因為 css vendor prefix 就罷工... (真的有嗎?XD)

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 的服務,畢竟是直接從台灣的機房供應的...