From de47a7fab3b9361ca967402c9fb91bbeb8b64e1f Mon Sep 17 00:00:00 2001 From: Gea-Suan Lin Date: Sun, 18 Feb 2024 04:59:55 +0800 Subject: [PATCH] Import my own blog. --- data/articles.json | 37897 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 37886 insertions(+), 11 deletions(-) diff --git a/data/articles.json b/data/articles.json index 2f67934..4d59d16 100644 --- a/data/articles.json +++ b/data/articles.json @@ -1,22 +1,37897 @@ [ - { - "id": "1", - "body": "開推土機衝火場,奧斯卡頒獎典禮,1變形裝置熱賣,捐發票做公益,富者越富卻是為何?", - "title": "到最後亦無一人降志,一絲絲涼爽秋風,等一會,因為一片暗黑,但終於覺悟地走向滅亡,連生意本,既不能把它倆,這有什麼含義?" - }, { "id": "2", - "body": "付款時使用行動支付,怎麼變得怪怪的;前陣子也實地去走過兩次,國安的便衣、也要保留一些掌聲、天剛亮;你是在作夢嗎、因為我們只有一個地球;不要以書面的邏輯來設計介面,供給將來分組參考,那就變成直接的用詞,氘跟氚都是氫的同位素、謝謝大大的說明;希望我以後;海景三房、變成語料;愛你喔!", - "title": "無法在中國拍戲的藝人、隨著經營目標改變、晶球一粒一粒,我回家再傳、在幾任政府的努力之下;基金投資有賺有賠;重大社會公益性資料,可以再說明一次嗎?" + "body": "這個 Blog 主要是偏技術方面的資訊 (以及各種雜七雜八的抱怨文章),另外有幾個 Blog 是其他方面的:\r\n\r\n\r\n\r\n除了 Blog 以外,你可以在這些地方找到我:\r\n\r\n\r\n\r\n關於我的連絡的方法:gslin at gslin.com (主要)、darkkiller at gmail.com (也是主要)、gslin at gslin.org (備用)。", + "title": "關於我 (about me)" }, { "id": "3", - "body": "他哭哭好可愛;今天吵架的原因比较简单,爆炸想吃大學附近的控肉飯(發瘋、来杯咖啡提提神,牙買加香醇無暇的咖啡,我说没关系我不喝咖啡,海鮮炒麵,好好的滤纸包装给我扯坏了,我相信每個人自己心中都有自己的soulfood,整理理不清的情緒,好吧,炸粿,白馬-東方之星-數位全釉拋石英磚。", - "title": "看似完美,在學期末之後,在學期末之後,老師好;我是網頁設計課的同學,但從頭到尾那些網頁也不是他自己寫的,請他的交通大學資訊工程系朋友幫忙他,呵呵、甚至他沒有出席過任何一堂課。" + "body": "因為鳥蛋 UTF-8 的原因,所以從零開始。\r\n\r\n主要的原因是這樣子:我在 phpMyAdmin 裡面發現 gslin.org 用的資料庫居然是 latin1-based,於是很手賤的把 latin1-based 改成 UTF8-based,然後就...\r\n\r\n在修改前我有用 mysqldump 備份,但是我忘記加上 --default-character-set=latin1,而預設的 charset 是 utf8,然後就... 雖然有備份,但是在不斷嘗試 restore 失敗後放棄,也許想到方法的時候會把 gslin.org 恢復,不過我打算先在這邊弄新的再說。(本來就有打算要換,只是沒想到是這種方法...)\r\n\r\nmysqldump 的檔案在這:a.zip,如果你解開後可以用 phpMyAdmin 正確看到所有中文的話就麻煩了 :P", + "title": "從零開始" }, { "id": "4", - "body": "Kalafina是2007年梶浦由記因製作空之境界劇場版主題曲而組成的團體。一開始的成員並不固定,而是配合「空之境界」劇場版主題曲所需要的音色,選擇適合的歌手。在第一張的單曲《oblivious》起用了同樣是梶浦由記的團體FictionJunction中的成員Wakana與Keiko。之後在第二張單曲《sprinter/ARIA》中加入了日本索尼音樂娛樂(SMEJ)甄選會上入選的Hikaru,並加入了Maya。2009年5月,官方正式將Kalafina定位為Wakana、Keiko、Hikaru三人的女子團體,同時宣布此前只參加了第二張單曲的Maya並不會繼續以Kalafina成員的身分進行演藝活動。", - "title": "Kalafina" + "body": "在「俗話說得好:一分錢一分貨啊...」這篇看到的新聞。hlb 大長輩 (用力 Google Bomb) 把 url 丟出來第一句就是:\r\n
00:51 <@hlb> http://blog.yam.com/sunjoe/archives/359732.html\r\n00:51 <@hlb> 這是怎樣, 大家來比騙術就是了.
\r\n與我心有戚戚焉 XD (*狂笑*)\r\n\r\n另外「blog行銷與葉教授的關係」這篇也很棒啊 XD", + "title": "Blog 行銷?" + }, + { + "id": "5", + "body": "雖然 Blog 被我升到爛掉很衰,不過昨天還是有些好事情就是了。\r\n\r\nADSL 超距升速到 8M/640K 終於過了,速度也還蠻快的,下載速度可以到 570KB/sec 左右 (SEEDNet 的 DHCP mode)。", + "title": "ADSL 升速" + }, + { + "id": "6", + "body": "Google 的 Open Source Program Manager Chris Dibona 在 LinuxWorld Conference 提到了為什麼他們會用 LinuxGoogle Gives Reason Why it is Built on Linux。\r\n\r\n不過真正有趣的在 comments :) 因為 Chris Dibona 本人親自在 Slashdot 上面回應了相關的問題 :p", + "title": "Google 使用 Linux 的主因" + }, + { + "id": "7", + "body": "這是個老新聞了 (因為前幾天就有很多人講過了),不過目前只有 北美版 Google News 才有:Google News Now Providing RSS and Atom Feeds。", + "title": "Google News 提供 RSS & Atom" + }, + { + "id": "8", + "body": "Engadget 的報導:Caption Contest: cellphones are big in Japan tonight,這邊有照片:\r\n\r\n\"\"\r\n\r\n不過後面怎麼看都像是 種花奠信 的 logo 啊?而且原網頁也的確是拍台北的展覽不是嗎?@_@", + "title": "日本?" + }, + { + "id": "9", + "body": "Slashdot 這篇 BitTorrent for Content Providers 提到了 ibiblio 將提供各種軟體及影片,以 Bittorrent 的方式下載:ibiblio torrentOsprey:Peer-to-peer enabled content distribution。\r\n\r\n於是 ibiblio 可以提供穩定的 Seed 來源,而又可以利用 Bittorrent 高速下載,但又可以節省 ibiblio 的頻寬 :)", + "title": "ibiblio 提供 Bittorrent Download 服務" + }, + { + "id": "10", + "body": "在 Slashdot 看到 SonyToshiba 想要在新規格的光碟機上做版權控制 (事實上是 Self-Destruction 的功能):Blu-Ray to Include New Copy Protection。\r\n\r\n至於這個保護能撐多久嘛... 大概是光碟機正式出貨後一個禮拜吧,到時候一定會有「工程版」,或是直接在電路上面拿鉛筆畫一畫之類的解法...", + "title": "在光碟機上進行版權控制" + }, + { + "id": "11", + "body": "Slashdot 上報導了 GPLv3 很有可能會再延期:GPL v3 Coming Out in 2007?。\r\n\r\n會有這麼大的問題就是在於 GPLv2 有一段話:\r\n
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\r\n\r\nEach version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and \"any later version\", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
\r\n於是就大爆炸了:如果 GPLv3 有問題的話,那麼會有許多軟體當場鳥掉。\r\n\r\n其實比較好的做法是直接放棄 GPL 這個名字,改用其他的名字來發展新的 License Agreement,不過有很多政治角力在裡面而不可行 :p (因為有很多廠商希望 GPLv3 有更寬鬆的做法,這樣他們就可以惡搞那些沒有指定 \"GPLv2\" 而是 \"GPLv2 or later version\" 的軟體)\r\n\r\n苦啊 :p", + "title": "GPLv3 可能會再延期" + }, + { + "id": "12", + "body": "SimpleBits 這篇 Miss the old SimpleBits design? 指出了 Palm Drawing, Painting, and Animation Software 抄襲他舊的版面。\r\n\r\n嗯,唯一不一樣的地方大概是抄襲站台的 Copyright 這樣寫:\r\n
Copyright pending site update, with apologies to one person, you-are-right's to approximately 20 others, thus far, and an \"Up Yours!\" to the rest.
\r\n*boom*\r\n\r\nPS:舊的 SimpleBits 版面可以在 Web Archive 找到:SimpleBits。", + "title": "SimpleBits" + }, + { + "id": "13", + "body": "這是在 Bloglines 上看到的情況:\r\n\r\n\"\"\r\n\r\n你可以發現 Google Adsense on RSS 是爛掉的 -_-\r\n\r\nPS:Yahoo! Hong Kong 居然去買 Google Adwords?", + "title": "Google Adsense on RSS" + }, + { + "id": "14", + "body": "在 Adblock 裡面將這兩個字串擋掉後看起來會舒服很多:\r\n\r\n這是原圖:\r\n\r\n\"\"\r\n\r\n這是擋掉 ad.wretch.cc 與 http://pic.wretch.cc/ 後:\r\n\r\n\"\"\r\n\r\n好很多,對吧?:p", + "title": "善用 Adblock" + }, + { + "id": "15", + "body": "Slashdotcn 的「亚马逊用4000万美元解决专利纠纷」這篇文章提到了 FFII (Foundation for a Free Information Infrastructure) 架設的一個網站,這個網站說明了歐盟專利的浮濫 - 一個網路購物平台會觸犯的專利 (而且是已經被核准的) 居然有二十個:Patented European webshop。", + "title": "歐盟專利問題" + }, + { + "id": "16", + "body": "ForeverGeek 上提到了 Flickr Prints 的可行性:Flickr Prints Coming Soon。\r\n\r\n配合 Creative Commons 標示授權看起來是相當讚的作法 :p", + "title": "Flickr Prints" + }, + { + "id": "17", + "body": "在 None 那邊看到星界の戦旗 III 的消息 (不含內容),剛好我前幾天問 slzzp 大長輩 另外一本小說 (呃,臨時忘記名字了... 睡長輩 提醒一下?:Q) 會不會像永野大神的五星一樣 blah blah... XD (不過我後來忘記 slzzp 大長輩 說什麼了 Q_Q)\r\n\r\nAnyway... 戰旗相當棒的啊,到時候一定要去看的 :p", + "title": "星界の戦旗 III" + }, + { + "id": "18", + "body": "由於 Blake 學長 最近在研究 Connections 這個 theme 要怎麼加上 archive.php,參考別的 theme 加了老半天發現一堆問題...\r\n\r\n於是我就幫他看了一下 Connections 的 code,發現這傢伙超惡搞,同樣的 code 居然重複出現在每個檔案裡,然後就出現這樣很糟的對話:\r\n
23:21 <@Blake> 剛剛和DK長輩的對話...\r\n23:21 <@Blake> 長輩「這個作者在亂搞啊。」\r\n23:21 <@Blake> 「長輩不要衝動啊,作者只是一個大姊姊啊。」\r\n23:21 <@Blake> 「這樣,好吧那我們就原諒她。」\r\n23:22 <@Blake> 「blog上面有她的照片啊,33歲的大姊姊啊。」\r\n23:22 <@Blake> 「阿幹,那過期了。」\r\n23:22 <@Blake> 「長輩不要這樣說啊。」\r\n23:22 <@Blake> 「我只是學slzzp的說法。」
\r\n肥睡睡長輩,都是你教壞的啦!", + "title": "不要惡搞啊 :~" + }, + { + "id": "19", + "body": "其實 WordPress 1.6 (從 1.6-ALPHA-do-not-use 到 1.6-ALPHA2-still-dont-use) 並不會太恐怖,只是沒事會看到 Matt 亂 commit 一堆奇怪的 bug code 進去就是了,像是:突然冒出來的 '-' (Changeset 2764),或是 Javascript comment 所造成的 bug (Changeset 2766,看不出來 bug 在哪裡?加了 \"//\" 以後那行 if 就會往下找 tinyMCE.addEvent 那行,然後就爛掉了),不過這些都還好...\r\n\r\n真正讓我暈倒的是 Backspace 不能用了:當 post 文章在移動方向鍵時,不小心按到 x31 的 Backword 時 Firefox 就會回到上一頁。在 1.5 的時候你只要按下一頁資料就都回來了,但 1.6 的時候就...\r\n\r\n有些東西是有心情的時候才會寫的啊 :~ (我都快寫完 bogofilter 的說明了,結果剛剛按到 Alt-Left 又...)", + "title": "WordPress 1.6" + }, + { + "id": "20", + "body": "在抱怨過 post 到一半,不小心按到上一頁文章就會不見的問題後,ychsiao 留言說 Autosave 不錯,測了一下好像真的不錯:用 Cookie 存文章內容,在 Save/Publish 的時候就會移除 :p\r\n\r\n\"\"\r\n\r\n你可以看到 Autosave 跳出來告訴你上次輸入的文章沒有存起來,要不要恢復上次的文章內容 :p", + "title": "Autosave" + }, + { + "id": "21", + "body": "現在位置上還空空的... (該拿些東西來放了)\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "兩張我現在的位置" + }, + { + "id": "22", + "body": "在 Engadget 看到利用 Subpixel 的技術 (Cleartype 算是 Subpixel 裡面比較有名的技術) 彌補 LCD 的壞點:Subpixel trick covers up dead pixels。", + "title": "用 Subpixel 的技術彌補 LCD 的壞點" + }, + { + "id": "23", + "body": "Slashdot 的瘋狂新聞,有人成功將 Intel Pentium 4 超頻到 7.1GHz:Pentium 4 Overclocked to 7.1GHz, Sets World Record。", + "title": "瘋狂的超頻:將 Pentium 4 超頻到 7.1GHz" + }, + { + "id": "24", + "body": "其實我之前就有遇到 WordPress 1.6 的 permlink 失效的問題,最主要的原因是 .htaccess 的改變:1.5 的時候是 WordPress 自己產生 RewriteRule,但 1.6 則固定變成這樣:\r\n
# BEGIN WordPress\r\n<IfModule mod_rewrite.c>\r\nRewriteEngine On\r\nRewriteBase /\r\nRewriteCond %{REQUEST_FILENAME} !-f\r\nRewriteCond %{REQUEST_FILENAME} !-d\r\nRewriteRule . /index.php\r\n</IfModule>\r\n# END WordPress
\r\n這段 code 在 mod_php4 模式下是正常的,但 DreamHost 預設是用 CGI mode 執行 PHP,於是就爆炸了。\r\n\r\n今天在回台北前看到 wp-testers 有人問到這個問題,也確定在 CGI mode 下有問題,應該有機會修正吧 :p\r\n\r\nPS:關於這個問題的後續,如果不想訂閱 wp-testers,可以參考 mailing list archive 上 [wp-testers] permalinks broken ? 這個 thread。", + "title": "WordPress 1.6 的 permlink 問題" + }, + { + "id": "25", + "body": "Slashdot 的消息指出 John CarmackQuakeCon 上宣布不久後將釋出 Quake 3 的原始程式碼:Quake 3 Source Code to be Released。\r\n\r\n我本來以為 John Carmack 是偷幹 Source Code 後要惡搞 id Software,用 GoogleWikipedia 查了一下這個人,才發現我嚴重誤會了整件事情 :p\r\n\r\n依照 Wikipedia 的資料,John Carmackid Software 的創辦人,而且對於 3D Computer Graphics 有相當顯著的貢獻。那為什麼他會放出 Quake 3 的原始程式碼呢:因為這是 id Software 在發生 Linux Quake port 事件後所形成的 Open Source 文化。\r\n\r\n在 Linux Quake port 事件中,id Software 的前雇員 Dave D. Taylor (當時是還是員工) 用他閒暇時間將 Quake 移植到 Linux 上,不過當時主要只是說明 Quake 可以在 Linux 上跑,並不是很完整的 porting 整個系統。\r\n\r\n後來 Dave D. Taylor 出去開了一家公司 (Crack dot Com),推出了 Abuse 這套遊戲,並在推出這套遊戲後用 Quake Engine 發展一個新的計畫 (After releasing Abuse, Dave Taylor's game development company Crack dot Com licensed the Quake engine for a new project, Golgotha.),不過 Crackers 把他們的 server 搞定後取得了 Quake 的 source code,並開始流傳。\r\n\r\nGreg Alexander 在看到以後決定完整的 porting 到 Linux 上,在二十四小時內完成後,Greg Alexander 將 patch 送回給 John Carmack!而最後這段 code 成為 id SoftwareQuake Linux version 的基礎,而 id Software 也在 1999 年十二月正式公開 Quake 的 source code。\r\n\r\nPS:上面這段說明是參考 Wikipedia 所提供的資料寫的,有可能有錯,如果有的話麻煩告知 :p", + "title": "Quake 3 將釋出原始程式碼" + }, + { + "id": "26", + "body": "Slashdot 看到 Google 將與 iTunes 合作的謠言:Google to Include iTunes?,所以現在就是等待幾個禮拜看看這個消息是不是真的?:p", + "title": "Google 與 iTunes 合作?" + }, + { + "id": "27", + "body": "在 Slashdot 看到有人在惡搞 XD (Typewriter As Keyboard Mod)\r\n\r\n\"\"\r\n\r\nPS:如果看不到原網站的圖片,可以用 CoralCDN (在網址上面加上.nyud.net:8090/) 試看看。", + "title": "打字機鍵盤 (鍵盤打字機?)" + }, + { + "id": "28", + "body": "當初利用 ouiouioui 成立「[企畫] 共筆書籤」的時候 quawn 就有在思考 Spam 的問題:\r\n
可能會有很大一部份的朋友對於這個想法會存疑,我了解,因為就連我也掙扎了很久。如果有人惡搞?如果有人狂打自家網站的廣告?如果ouiouioui的標籤被SPAM盯上?這些考慮都曾經阻礙了我心中想法的實踐進度,不過,小弟覺得儘管這個計劃有一天失敗了、或是事實證明根本不可行,那至少我們試圖證明過,就像大多數的科學實驗一樣,尤其,特別在這個實驗並沒有明顯的成本時。
\r\n當時擔心的事情,很不幸的,發生了。\r\n\r\n可以看到 某個人 幾乎自己每寫一篇文章就 submit 到 del.icio.usouiouiouihttp://del.icio.us/pojenhuang/ouiouioui。\r\n\r\n除了 ouiouioui 被 spam 外,hkblogger 也被 spam:http://del.icio.us/pojenhuang/hkblogger。\r\n\r\n說實話,我覺得這位先生寫的文章跟第四台賣藥的節目差不多 - 自吹自擂,努力推銷。\r\n\r\nUpdate:我寫完這篇以後才發現 豬小草 早在六月的時候就已經在「[企劃] 共筆書籤」這篇 comment 的地方幹剿過了:\r\n
那個「上班族投資理財」每次都利用共筆書籤幫自己的文章打廣告,這樣不太好吧。如果你真的寫的好,自然有人會摘阿,何必要自己在那邊強力推薦呢?
", + "title": "OuiOuiOui 的 tag spam" + }, + { + "id": "29", + "body": "剛剛發現交大對外整個斷掉 (很少遇到斷得這麼徹底的情況),透過教育部連,發現交大的 TANet6509 沒有回應,而透過 SEEDNet 連則發現 HCIX7609 沒有回應。\r\n\r\n\"\"\r\n\r\n差不多是五點的時候斷掉的,看起來很有可能是計中大跳電?(因為 TANet6509 與 HCIX7609 同時故障的可能性實在不高) 看起來要等白天上班才有人處理了...", + "title": "交大對外斷線" + }, + { + "id": "30", + "body": "在 終極邊疆BLOG 看到 WordPress 1.5.2 announced 這篇,回官方網站去找看看寫什麼:WordPress 1.5.2。\r\n\r\n這次升級其實就有人幹剿應該出 1.5.1.4 而非 1.5.2 (參考 wp-hackers 上的 [wp-hackers] WP 1.5.1.4 bugfix agenda 以及 [wp-hackers] 1.5.2 這兩個 thread),不過後來還是推出 1.5.2 了...", + "title": "WordPress 1.5.2" + }, + { + "id": "31", + "body": "先說竹苗區網從網路上消失的事情... 計中內有兩大組電源,一組是直接接市電,另外一組分成四個小組,各接一台 Online UPS (所以有四台),而這四台都有接市電與發電機電源。\r\n\r\n只接市電的部分包括了電燈、計中的緊急照明燈之類的部分,而 UPS + 發電機的部分則是給門禁系統、Server 這類不應該斷電就消失的設備。\r\n\r\n每個暑假通常都會有高壓電檢修以及其他維護,公告時間通常都是從早上九點到下午五點,不過通常不會真的到下午五點,快的時候中午或下午一兩點就會恢復供電。一棟建築物通常會有兩次停電:一次是各建築物本身的電力維護,另外一次是北校區或是南校區的高壓電維護。\r\n\r\n今年計中所在的資訊館當然也有兩次,上星期六的停電是第二次 (北區高壓電維護),早上停電後發電機很正常的啟動,到下午三點的時候市電來了,但計中配電盤似乎沒有自動切回去,於是發電機連續運轉四十幾個小時後在星期一早上五點將油吃完了... 然後就大爆炸了 =_=\r\n\r\n事實上只要多撐四個小時就不會有事:因為星期一有上班,八點上班一發現市電的部分還沒來就會馬上請廠商到場處理,通常這種事情一個小時內就會處理完 (先人工切回市電,有 Online UPS 擋),不過就是少了四個小時 :p\r\n\r\nAnyway,爆炸後可以看出來在下午一點半後才恢復供電 (router 只要一有電就會馬上起來,所以看教育部的 MRTG 就夠了),然後整個下午學弟都在整理機房裡面的機器。\r\n\r\n到剛剛清點了一下有不少機器發生問題,看來要好好整頓一下了... *boom*", + "title": "機房停電" + }, + { + "id": "32", + "body": "在 Download Squad 看到 IE7 將正式命名為 Windows Internet Explorer 7 的消息:Internet Explorer 7 gets new name, new logo,在 IEBlog 上的 New IE 7 Icon and Logo 也正式發表了新的 Icon 與 Logo。\r\n\r\n\"\"", + "title": "IE7 正式名稱:Windows Internet Explorer 7" + }, + { + "id": "33", + "body": "您可以訂閱這幾個 feed:\r\n\r\n\r\n\r\n如果您要訂閱留言 (comment) 的部份,您可以訂閱:\r\n\r\n", + "title": "訂閱 (subscribe)" + }, + { + "id": "34", + "body": "在 Slashdot 這篇 MS05-039 Worm in the Wild 引用了 SANS - Internet Storm Center 的報告:Handler's Diary August 14th 2005,其中這段實在是很好笑 :p\r\n
Interesting game of numbers:\r\nSQL Slammer was using bug fixed in MS02-039\r\nZotob is using bug fixed in MS05-039\r\nHex 39 is 57 decimal, which is big W (Worm? Windows?) in ASCII.
", + "title": "MS05-039" + }, + { + "id": "35", + "body": "要 Google Bomb 最好的辦法就是在 title 的地方 bomb (效果比文章內好 XD)\r\n\r\n強者我同學 hlb 終於把 Blog 弄出來了:hlb's weblog,不過網頁居然沒過 XHTML 1.0 Strict :p 經過抱怨以後得到下列意見:\r\n
01:56 <@gslin> hlb: 長輩,你的 blog 沒過 XHTML 1.0 Strict XD\r\n01:56 <@hlb> gslin: 隨便啦
\r\n既然 大長輩 都說隨便,那我們小喀也不敢說什麼了 XD", + "title": "強者布丁大長輩 Blog" + }, + { + "id": "36", + "body": "這幾天剛好有些人跑來問我系統安全的東西 (像是 WindTop 這次的 bpop3d security issue),說實話,四五年前還有到國外接觸,後來就不想碰了 - 該備份的東西備份好,有公告要 security upgrade 的做一做,其他就隨便了啦...\r\n\r\n怎麼說呢?尋找 security hole 需要大量的花時間去看 source code,或是在聽到風聲的時候拿奇怪的 debugger 翻 assembly,甚至有時候還要跟其他的大長輩 pk (oh my god),還要小心會不會被抓到列管... (噗 XD) 那種整天提心吊膽的日子是很刺激,不過久了實在是沒力氣玩 :p\r\n\r\n所以到後來就是該做的事情做一做,如果你真的要 root 就給你,資料別亂動就是了 :p 時間拿去看 Keroro 軍曹 或是去拐女朋友會比較快樂,真的 :p", + "title": "系統安全" + }, + { + "id": "37", + "body": "在 Jedi 那邊看到 vanilla 這套討論區軟體,目前版本是 0.9.2。畫面很「乾淨」(比起 phpBB...)\r\n\r\n我在安裝以後發現中文仍然存在一些問題,看了一下 Jedi 的 Language Pack,發現他只有翻譯而沒有 patch,只好裝了 phpMyAdmin 看資料庫的情況,發現是 latin1 老毛病 (呃),處理一下再測試就正常了。\r\n\r\n測試站台在 http://vanilla.gslin.org/,如果您有興趣可以在上面玩看看。這邊提供 UTF-8 安裝所需要的動作:\r\n\r\n頗有趣的是 vanilla 支援的 Atom 是 1.0,而非 0.3,看起來動作很快啊 :p\r\n\r\n另外就是效率問題,我不清楚整體效率如何,但是我已經瞄到大量的 Class 殺手... 我猜 (猜錯不負責) 效率可能比 pLog 還 XD", + "title": "vanilla UTF-8 修正" + }, + { + "id": "38", + "body": "如果你沒有注意在看最近 Search Engine 的新聞,說起來就有點複雜了。\r\n\r\n我們從頭說起好了:Yahoo! Search Blog 在 8/8 的時候宣稱 Yahoo! Search 索引了兩百億個網頁 (這邊的網頁包括了文件及圖片)。請注意:Yahoo! 並沒有說他們索引的數量比 Google 多,他們只宣稱索引了兩百億個網頁,但大家當然都會很自然的解讀成「Yahoo! Search 索引的頁面比 Google 多」,因為在 Google 的網頁上就直接寫明了他索引八十億個網頁。\r\n\r\n然後這則炫耀文被報導到 Slashdot 上並引起廣泛討論:Yahoo Passes Google in Total Items Searched。(當然,標題的意思就很清楚了)\r\n\r\n然後這幾天就吵得頗凶,像是 John Battelle 在 8/9、8/10、8/11 各寫了一篇這件事情的發展,說明 Google 的內部工程師並沒有觀察到 Yahoo! Search 索引的數量有這麼大的變化:How Many Pages Does Yahoo Index?In This Battle, Size Does Matter: Google Responds to Yahoo Index ClaimsMore On Yahoo, Google, Index, Size。\r\n\r\n不過到了今天,Slashdot 上報導了 NCSA 的 Dr. Orville Vernon Burton 以及兩位研究員 Matthew Cheney 與 Mike Perry 利用一些比較公正的方法分析了 Yahoo! SearchGoogle 索引的數量的相對值 (也就是誰比較多、以及多了多少):NCSA Compares Google and Yahoo Index Numbers。\r\n\r\n簡單說明一下這個方法:因為你不可能直接取得後端資料庫的資料,所以你沒有辦法直接比較兩個 Search Engine 的情況,所以研究員打算用一些常見的字去找 (但也不能太常用到),然後去確認 Result 真的存在 (換句話說,有被索引) 而估計相對的情況:\r\n
Although there is no direct way to verify the size of each search engine's respective index, we developed a technique to approximate the relative size of the both the Yahoo! index and the Google index.
\r\n但他們發現這兩個搜尋引擎都無法取得超過一千筆的資訊,所以他們只能利用筆數少於一千筆的 keyword 研究:\r\n
Unfortunately, both the Yahoo! and Google search engines truncate results returned to the user after 1,000 results. Thus, for the purposes of this study, we were forced to restrict our searches to those queries that returned less than 1,000 results on both Yahoo! and Google. Any search result found to have more than 1,000 returned results on either search engine was disregarded from our sample. [3]
\r\n在經過十八個小時將所需要的數據蒐集出來後,他們發現不管有沒有濾掉重複網頁 (兩個搜尋引擎都有選項可以選擇要不要顯示重複網頁),Yahoo! Search 所能找到的數量都遠少於 Google,實際的數目大約在 1:2.5 左右。\r\n\r\n最後他們給了一個很直接的結論:\"suspicious\"\r\n
It is the opinion of this study that Yahoo!'s claim to have a web index of over twice as many documents as Google's index is suspicious. Unless a large number of the documents Yahoo! has indexed are not yet available to its search engine, we find it puzzling that Yahoo!'s search engine consistently returned fewer results than Google.
", + "title": "Yahoo! Search 索引的數量比 Google 少" + }, + { + "id": "39", + "body": "我們可以看到很多報導在報 Blog 成長數量驚人之類的話,但 Greg LindenOn the state of the blogosphere 這篇文章裡面直接說:其實大部分都是 Spam、Fake Blog,所以不要再自欺欺人了。而透過 Bloglines 分析可能更少 - 真正有價值的 Blog (這邊「有價值」只是表示是真的有人在寫、有人在讀) 大約在 100k 左右。\r\n\r\n最後這句說的很實際:\r\n
The real problem of scaling for growth of the blogosphere is not scaling the tools, but scaling the readers.
", + "title": "虛偽的 Blog 數字" + }, + { + "id": "40", + "body": "\"\"\r\n\r\n剛剛 hlb 長輩 在 IRC 上說:\r\n
21:36 <@hlb> 結果 google image 第一個就是這張圖
\r\n好糟啊...", + "title": "用 Google Images 搜尋 \"orz\"..." + }, + { + "id": "42", + "body": "在 My Flickr Day 看到新版的 Flickr Uploadr,抓下來更新以後還沒機會測試,先記錄下來,應該中午就可以測試了 :p (因為會去新竹...)\r\n\r\n不過在 薄荷 的 Screenshot 可以看到多了一些功能,尤其是可以直接加到 Set 裡面了:\r\n\r\n\"\"", + "title": "新版的 Flickr Uploadr" + }, + { + "id": "43", + "body": "之前都教別人用 PuTTY 設定 tunnel 穿越,剛剛才發現原來同一家的 plink 也很好用 :p\r\n\r\n抓下來以後丟到 C:\\WINDOWS 裡 (只是因為這樣比較方便),然後在命令提示字元下輸入:\r\n
plink -ssh -L 3128:163.28.64.50:3128 -C gslin@ccca.nctu.edu.tw
\r\n然後登入進去以後就把視窗最小化,然後 IE 或是 Firefox 的 Proxy 就設定到 127.0.0.1:3128 即可 :p\r\n\r\n其中 3128:163.28.64.50:3128 表示的是 127.0.0.1:3128:163.28.64.50:3128,也就是把 127.0.0.1:3128 導入 163.28.64.50:3128。\r\n\r\n這台 163.28.64.50:3128 就是我們家的古董 Cacheflow (Proxy),有允許 ccca.nctu.edu.tw 連過去使用 (因為在 140.113.0.0/16 裡面)。如果你要用其他的機器,請找看看其他的 Proxy server 謝謝 :p", + "title": "穿越公司的 FireWall" + }, + { + "id": "44", + "body": "在這裡:Security Advisory: Acrobat and Adobe Reader plug-in buffer overflow。\r\n
Release Date: August 16th, 2005\r\n\r\nProducts: Adobe Reader 5.1, 6.0-6.0.3, 7.0-7.0.2, Adobe Acrobat 5.0-5.0.5, 6.0-6.0.3, 7.0-7.0.2\r\n\r\nPlatform : Windows, Mac OS, Linux, Solaris\r\n\r\nVulnerability Identifier: CVE-2005-2470
", + "title": "該來的還是來了 - PDF Security Issue" + }, + { + "id": "45", + "body": "\"\" 本來的 IBM 小黑鼠爛掉了 (絕對不是因為打 Diablo II 打太多),只好去買一支新的滑鼠... (雖然 TrackPoint 很棒,不過打 Diablo II 不方便啊)\r\n\r\n結果換 MicrosoftStandard Wireless Optical Mouse,觸感還不錯,不過比起之前用的滑鼠貴了點 :o", + "title": "換滑鼠" + }, + { + "id": "46", + "body": "\"\"Download Squad 有一篇文章:Free Utility to Mount an ISO Disk Image from Microsoft,文章內提到了 Microsoft 發展了一套可以掛 .iso 的虛擬磁碟機,可以透過 Microsoft Download Center 下載:Mounting ISO images in a virtual CD-ROM drive。\r\n\r\n不過我看到的第一個想法是:只能掛 .iso?那我不如裝 Daemon Tools 算了。結果發現 Deamon Tools 受歡迎的程度遠超過我想像... 不論是在 Download Squad 還是在原 Blog 上都被直接提出來批判 :p (狂笑)", + "title": "掛上 ISO Image" + }, + { + "id": "47", + "body": "(東張西望一下,應該沒有維護廠商的人在看?)\r\n\r\n\"\" 因為星期一的跳電,造成不少設備都不太正常,尤其是三台 MRTG 主機,除了看骨幹 router 的那台外,其他兩台好像一直有問題。另外 hw-driver 的硬碟爛掉一顆,到現在還沒好 (也許等下用 remote kvm 先想辦法處理一下)。然後星期三 (今天) 下午一顆 3COM 4400 24 ports 的 Switch 再起不能。\r\n\r\n再起不能後受影響最大的就是我 =_= (以及其他透過交大 netnews 轉信的大戶們) 因為我掛 screen 的地方接在下面,在通知 老人家老人家 說會通知廠商,不過廠商好像沒來... (喂喂)\r\n\r\n剛剛趁計中要關門前先拿了一顆 3COM 4400 (48 ports) 進去接,明天再找 24 ports 的換回來... (廠商不能這麼墮落啊 Q_Q)", + "title": "抱怨一下" + }, + { + "id": "48", + "body": "就... 我弟的 Blog:adyan0。\r\n\r\n前幾天告訴他 Blog,就跟他說 Yam Blog 的功能還可以,寫寫東西還蠻方便的,如果用習慣以後再自己架好了... 另外也跟他說 Bloglines 很好用啊,亂訂一堆東西 zzz\r\n\r\nPS:那個 肥睡睡 (指),不要亂來啊。", + "title": "我弟的 Blog" + }, + { + "id": "49", + "body": "看到 Slashdot 這篇 Death of Cookies, Spyware Greatly Exaggerated? 我就想提一下利用 Firefox 的一些設定降低 Cookie 被使用到的機會。\r\n\r\n先把 Privacy 裡的 Cookie 預設值關掉,再把會用到 Cookie 的站台加進去。\r\n\r\n\"\"\r\n\r\n比較需要注意的是 xuite.net 會利用 Cookie 檢查圖片 (而不只是 Referer),所以就只好開個 Allow for Session 給他。(超鳥)\r\n\r\n\"\"", + "title": "避免瀏覽器的 Cookie 亂來" + }, + { + "id": "50", + "body": "在 Pop the Champagne! 這裡看到 IETF 的 mailing list 上正式公告 Atom 1.0 成為標準了:Protocol Action: 'The Atom Syndication Format' to Proposed Standard,規格書在 http://www.ietf.org/internet-drafts/draft-ietf-atompub-format-11.txt 這裡。", + "title": "Atom 1.0 成為標準 (Proposed Standard)" + }, + { + "id": "51", + "body": "在 Slashdot 看到用非常機車的方法教育使用者 phishing 的觀念:Anti-Phishers Pose as Phishers to Make Point。\r\n\r\nWilliam Pelgrin (New York's chief information security officer) 發送了一萬封 phishing mail 給他們的政府職員,如果你上當輸入了你的帳號密碼,那麼你就會被告知這樣是很危險的 :p 換句話說,William Pelgrin 利用實戰介紹了 Phishing 最常見的方式 :p\r\n\r\n相當有趣啊 :p", + "title": "以實戰經驗教育使用者 Phishing 的危險" + }, + { + "id": "52", + "body": "在 Bruce Schneier 的 Blog 上提到了在王小雲女士成功在合理的時間找到 SHA-0 與 SHA-1 的 collision 後,Andrew Yao 與 Frances Yao 提出了更快的方法:New Cryptanalytic Results Against SHA-1。\r\n\r\nBruce Schneier 提到了 Shamir (我猜是 RSA 的那位 Adi Shamir) 在 CRYPTO 2005 指出這次的時間複雜度是 263,而 Shamir 希望王小雲與她的學生可以再找到更快的方法。\r\n\r\n另外值得注意的是 Bruce Schneier 指出了 264 是一個很重要的里程碑,因為以前曾經用「暴力」以及 264 Algorithm 硬幹其他的東西...\r\n\r\n沒想到進展這麼快啊...", + "title": "SHA-1 collision 進一步發展" + }, + { + "id": "53", + "body": "Slashdot 上面提到 GoogleIBM 與美國開始實驗 Internet over Power Lines,而 Earthlink 在明年可能就會正式推出這項服務:Web Access Over Power Lines。\r\n\r\n從文章裡看不出來頻寬可以到多少。有沒有機會到 1Mbps?另外就是 Security 的問題:是不是有可能用改裝後的 modem 聽到附近用戶的 packet?", + "title": "Internet over Power Lines" + }, + { + "id": "54", + "body": "剛剛在 del.icio.us 看到免費的 Usenet Service 列表:DISENTER Free News Servers。\r\n\r\n大家可以把那些允許 posting 的 news server 直接列入黑名單 :p", + "title": "免費的 Usenet Service" + }, + { + "id": "55", + "body": "在 Slashdotcn 上看到:全球大学电话系统。\r\n\r\n我想到 交大清大中央陽明 四所學校用 Cisco 的設備與 T1 線路將四校的校內電話串起來,另外,這四校撥台北、桃園、新竹地區都是市內電話,整套系統購置的成本「據說」在一年內回收回來... 如果今天不使用 Cisco 的設備,再加上參與的學校夠多...\r\n\r\n喔對了,有要撥交大校內分機的人可以考慮以下步驟:(以價格排序)\r\n", + "title": "全球大學電話系統" + }, + { + "id": "56", + "body": "在 Download Squad 看到 SopCastFree P2P Internet Television with SOPCast,看起來是對岸或是香港的人主導的。\r\n\r\n不過在 Channel (Live) 裡面看到 BBC World News、HBO Movies、ESPN Sports,嗯嗯啊啊...\r\n
I love this, but I wonder how legal is it? It's a great program.\r\n\r\nPosted at 4:34 PM ET on Aug 19, 2005 by Chris 0 stars
", + "title": "SopCast" + }, + { + "id": "57", + "body": "在 淡水生活 這看到的:不是網摘 2005.8.20。\r\n
3. 為了搬家方便,南方網站現在用 www.esouth.org.tw 的假網址,想進來的人,請在電腦裡的c:\\windows\\system32\\drivers\\etc\\hosts (for XP,95,98,me) 或 c:\\winnt\\system32\\drivers\\etc\\hosts (for win2k)檔案加上 \"210.59.228.33 www.esouth.org.tw\" 一行字。不過,不曉得為什麼,Jeph、TM、豆腐魚都進不來,所以現在還是我一個人努力搬文章中。
\r\n我知道南方有 esouth.org,不過我不知道有 esouth.org.tw?查 esouth.org.tw 的 NS RR 沒找到,再跑去 TWNIC Whois 查 esouth.org.tw 也沒找到,最後猜測沒繳錢已經 expire,去 Google 找 \"esouth.org.tw\" 也沒找到?\r\n\r\n用 Yahoo! Kimo 找,唯一找到的是 Yahoo! Kimo 的頁庫存檔:(原站台暫時連不上去)\r\nhttp://www.hgsh.hc.edu.tw/geography/%A6n%AF%B8%A4H%A4%E5.htm。\r\n\r\n這是在 high 什麼啊?(呃,還叫別人加上 www.esouth.org.tw?) 我不懂啊...\r\n\r\nPS:以 \"esouth.org.tw\" 搜尋的話,Ask Jeeves 也找不到、MSN SearchAlltheweb 找到的東西與 Yahoo! Kimo 一樣。", + "title": "esouth.org.tw?" + }, + { + "id": "58", + "body": "在 Oui News 上又看到 \"ouiouioui\" 的 tag spam:del.icio.us 上的 engadget.chinese。(專門註冊起來用?XD)\r\n\r\n請注意:雖然可能是有人故意抹黑 Engadget Chinese,不過依照目前 Engadget Chinese 的水準,他們自己出來 spam 我也不會覺得很奇怪啦...\r\n\r\nPS:我又想到瓦肯人的冷翻譯了 :~\r\n\r\nUpdate:8/21 下午又變本加厲了,一口氣 submit 一卡車 Engadget Chinese 的文章啊,呼呼哈哈 XD", + "title": "Engadget.Chinese 與 ouiouioui spam?" + }, + { + "id": "59", + "body": "WordPress 1.6 在發表文章時的 Categories 欄位不是依據 cat_name alphabet 排序,而是依照文章篇數排 (喂喂,不是這樣啊...),於是我只好 patch 一下 wp-admin/admin-functions.php,把 return_categories_list() 改成:\r\n
function return_categories_list( $parent = 0 ) {\r\n        global $wpdb;\r\n        return $wpdb->get_col("SELECT cat_ID FROM $wpdb->categories \r\n                WHERE category_parent = $parent ORDER BY cat_name");\r\n}
\r\n也許晚點檢查一下照文章數排的原因,如果是新進來的 code 就送 ticket...", + "title": "WordPress 1.6 的 Categories" + }, + { + "id": "60", + "body": "今天跟 Blake 學長汪長輩far 長輩 一起去麻布茶房吃東西,結果遇到一堆鳥事情... 汪長輩 的 Blog 裡有寫了,我就懶得再幹剿了:新竹遠百的麻布茶房。", + "title": "新竹遠百的麻布茶房" + }, + { + "id": "61", + "body": "\"\" 薄荷這篇「GM Script: 解開無名小站的右鍵限制」用 Greasemonkey 處理這類擋右鍵的功能... 不過,用 Firefox 明明就不用這麼麻煩啊啊啊啊啊~~~\r\n\r\n我在「用 Firefox 處理擋右鍵的網頁」這篇有提到 Firefox 對於這些對右鍵毛手毛腳的 Javascript 早就很不滿 (?) 了... 有興趣的可以自己看看 :Q", + "title": "Firefox 反制「鎖右鍵」的功能" + }, + { + "id": "62", + "body": "在 zonble 那邊看到「OpenVanilla win32 版」,裝起來以後... 果然是測試版 XD\r\n\r\n測試以後抓了 source 回來翻翻,不知道改不改的動咧 :~", + "title": "香草輸入法 Win32 版" + }, + { + "id": "63", + "body": "請以 Google 搜尋以下關鍵字:\r\n\r\n您會發現,全都是 布丁大長輩 啊 XD", + "title": "真正的長輩" + }, + { + "id": "64", + "body": "最近好像常常看到 Spam:如果依照時間排,先是 pjhuang 的 ouiouioui tag spam,再來是「怪癖連鎖信」(源頭在「Blog Tag:怪癖」這篇),然後是 del.icio.us 的 engadget.chinese 所發的 tag spam (剛剛還在 tag spam,晚點再平平穩穩地給他一腳)。\r\n\r\n其中 ouiouioui 的兩個 tag spam 事情因為很明顯就是 spam,講出來大家就知道發生什麼事情,所以寫起來很快,拿出來罵一罵就好了。而 Blog Spam 的部分因為要寫一些東西 (因為我希望能阻止這個行為),不過因為最近再研究實驗室的一些系統,就一直擱著沒寫。\r\n\r\n先給某個 IRC channel 上的 log:\r\n
14:50 <@i> 我覺得這篇也幹譙得很好 XD # http://blog.yam.com/balazoo/archives/388725.html\r\n14:51 <@gslin> 啊啊,被搶先了\r\n14:51 <@B> i: 還不必看,我光看標題就心動了,明燈耶\r\n14:52 <@i> gslin: 搶先 ? 你也要幹譙了嗎 :p\r\n14:52 <@gslin> i: 我本來打算等有人亂點名我的時候才幹剿的\r\n14:52 <@i> gslin: 我也有過這種想法... 不過我後來發現這不可能 :p\r\n14:53 <@gslin> 怎麼說 :p\r\n14:53 <@gslin> 我覺得還蠻有可能的啊,5 個人... factor 真的很大 :p\r\n14:53 <@i> 因為不認識我的人不會點名我, 認識我的人都應該知道點我我也不會去寫 ;p\r\n14:53 <@gslin> 這很難說 :p\r\n14:53 <@i> 反而有可以幹譙兩句這樣 :p
\r\n我當初看到這個活動的時候我馬上想到「幸運連鎖信」- 你必須做完某些事情,然後轉寄給其他五個人,而這五個人必須再繼續下去。唯一的差別在「幸運連鎖信」會詛咒你「不照做會如何如何」,而「怪癖連鎖信」沒有。\r\n\r\n本來一開始看到還不覺得應該玩不起來,直到後來慢慢在 Bloglines 上看到一篇一篇的連鎖信後,才發現事情跟我期望的相反。\r\n\r\n不過事情發展到現在,整個規模已經無法停止了:一方面是人情壓力被濫用,另外一方面是已經流到對岸了。\r\n\r\n前者是在 cutiecherry 的 blog 上看到因為人情壓力被強迫寫:[Blog串連]五個怪癖 by cherry。\r\n
昨天歪八msn問我要不要寫[Blog串連]五個怪癖\r\n想都不想直接拒絕\r\n怪癖不就是很怪的癖好咩?\r\n公開寫給人家知道不是很怪嗎?\r\n今天好死不死又被晴兒點到= =\"\r\n看來真的是在劫難逃
\r\n而後者則是在 keso 的文章出現:玩儿个游戏:怪癖。\r\n\r\n我仍然希望看到這篇文章的人能夠仔細的替身旁的朋友想:並不是每個人都願意公開自己的隱私,你發連鎖信給他,他不一定很高興 - 並不是每個人都有勇氣直接拒絕或是不理會。", + "title": "Blog Spam - 「怪癖連鎖信」" + }, + { + "id": "65", + "body": "Jason Kottke 幾天前寫了 So long, Technorati 這篇文章,表達對 Technorati 的失望。他發現當 Results 愈來愈多,速度就愈慢 (而且是慢的很誇張的那種慢),而有的時候會發現某些 Link 根本沒被算進來。\r\n\r\n在比較過 PubSub 所得到的結果,發現 PubSub 得到的資料比較多、而且不會重複。但是很有趣的是,TechnoratiPubSub 提供的 Link 重複的很少:\r\n
Over the past few months, I've been comparing the results from PubSub to those of Technorati and PS is kicking ass. Technorati currently says that 19 sites have linked to me in the past 6 days (and at least four of those are old and/or repeats...one is from last September, fer chrissakes) while PubSub has returned 38 fresh, unrepeated results during that same time. (Not that PubSub is all roses and sunshine either...the overlap between the result sets is surprisingly small.)
\r\n另外在 ijliao 大長輩 這篇 Technorati 可以做 OR 搜尋 也講了Technorati 搜尋數字非常怪異。(灌水)\r\n\r\n難怪很多人期待 Google/Yahoo 能提供更好的功能給大家用...", + "title": "Technorati" + }, + { + "id": "66", + "body": "\"\"Slashdot 看到 New 1 Kilowatt PSU - Too Much Power? 這篇,然後也在 ForeverGeek 看到 1000 Watt Power Supply 這篇...\r\n\r\n一千瓦的 PSU?比冷氣機還會吃?這是怎樣 XD\r\n\r\n我直覺想到是 某位大長輩 的 16 HDs Array 需要這種東西,不過有需要到 1KW 嗎?*thinking*", + "title": "千瓦 PSU" + }, + { + "id": "67", + "body": "Slashdot 上看到 Sun 在搞 Open Source DRM 的消息:Sun Spearheads Open DRM。\r\n\r\n不過如果我對於 DRM 的概念沒錯的話,這種東西 Open Source 出來不就等於廢了?除非他的 \"DRM\" 還包括了 Watermarking 的技術 (換句話說,每個 user 拿到的東西都不一樣),但就算這樣,目前也沒有任何一個 Watermarking 能承受公開攻擊。\r\n\r\n就學理上而言,Open Source DRM 目前不存在任何效果。\r\n\r\n不過,就社會價值而言,這篇 Comment 寫得很精彩:Re:Oh good grief...:(其實整篇都寫得很好...)\r\n
Copyright is basically a pricing issue. After an agreed period of time, the material goes out of copyright and into public domain. Preventing material from entering public domain is the real theft. These people are the real thieves. And in a civilized society, thieves don't get to decide what the property laws are going to be.\r\n\r\nThese guys plan to use DRM to deny forever any material entering the public domain. We have a duty to future generations to remove the DRM from any material encoded on any digital format, regardless of how old or new it is or who believes that they 'own' it.\r\n\r\nThese guys don't control the information age; we control the information age. Because we created it. If we don't want DRM, DRM won't exist.
\r\n其中最有名的惡搞例子應該是 \"THE MOUSE THAT ATE THE PUBLIC DOMAIN\" 這篇:Disney 以及利益團體把著作權有效期限從死後五十年改成死後七十年,而使得 2003 年到期的 Mickey Mouse...\r\n\r\n再回過頭來看 Tim Bray (目前在 Sun Microsystem 工作) 對 Open Source DRM 的看法:\r\n
What all the DRM dreamers don’t want to admit is that 95% or more of the population hasn’t yet encountered DRM, and when they do, they aren’t going to like it. They’re going to scream and scream and scream and get mad as hell and not take it any more.
\r\n連 Sun 的員工都這樣講了... (狂笑)", + "title": "Open Source DRM" + }, + { + "id": "68", + "body": "Blake 學長 在幾年前就在 BBS 上寫了不少跟 Vim 相關的文章 (當時的標題是「不是打vi的廣告」),最近把這些文章整理到 Blog 上:\r\n\r\n目前還在「連載」中 :p 有興趣的人可以在 vim 這個 Category 看到:vim Archived Posts from this Category。", + "title": "Vim 的介紹" + }, + { + "id": "69", + "body": "\"\"Boing Boing 看到對抗 CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) 的軟體:PWNTCHA: defeating CAPTCHAs with software。\r\n\r\n在官方網頁 PWNtcha - captcha decoder 裡就分析了目前常見到的 CAPTCHA 辨識率... (Quite Interesting :p)", + "title": "PWNTCHA" + }, + { + "id": "70", + "body": "Boing Boing 報導最近 Google 搜尋的 link 會被 Google 紀錄:Google stealthily monitoring clickthroughs from search-results。\r\n\r\n假設你用 Google 打 \"gslin\" 的第一個 link 是 Gea-Suan Lin's BLOG (http://gslin.org/)。在以前他會直接連到 gslin.org,但最近被改成像是 http://www.google.com/url (後面接一大串) 的地方,讓 Google 先記錄後再導到目的站台...\r\n\r\n這樣對隱私其實有很大的傷害,所以就有人寫了 Greasemonkey Script 把該閹的閹掉。(資訊在 Boing Boing 的 Update 6)", + "title": "Google 搜尋的 Link" + }, + { + "id": "71", + "body": "在 rafan 那邊的 Blog 看到 FreeBSD 換 Security OfficerNew FreeBSD Security Officer。\r\n\r\n新的 FreeBSD Security Officer 是超強強者 Colin Percival,也就是提出 HTT 安全性問題 (並在 FreeBSD 平台上攻擊成功:Hyper-Threading Considered Harmful) 的大長輩 :p", + "title": "新的 FreeBSD Security Officer" + }, + { + "id": "72", + "body": "Jeremy Zawodny 在這篇 Trackback is Dead 提到他準備把 Trackback 的服務拿掉,而可能改用 Yahoo! Search 或是其他類似的服務代替。\r\n\r\n他引用了三篇文章,其中 Trackback is dead. Are Comments dead too? 這篇說:\r\n
It has been killed by spam and by spammers - by the sheer horror of ping after ping pushing mother/son incest and bestiality links.
\r\n這是很無奈的事實:現在全世界用 Trackback 用的最多的不是 Blogger,而是 Spammer。而且幾乎所有的 User 都不知道什麼是 Trackback。\r\n\r\n在技術上,可以用 Search Engine 提供的 link: (或是類似的功能) 找到 Inbound Link 時,Trackback 沒有存在的價值。換句話說,除了助長 Spamdexing 以外,沒有其他用途。\r\n\r\n所以我剛剛也先查了一下目前 Search Engine 能夠做到多少,以 SHA-1 collision 進一步發展 這篇來說,Yahoo! Search 給的比較新:Yahoo! Search results for link:http://blog.gslin.org/archives/2005/08/19/52/,而 Google 找不到 XD\r\n\r\n所以我改了一下 single.php,多了一個 Inbound Link 可以看有誰 Link 過來,也許之後寫成 Plugin 吧?", + "title": "利用 Yahoo! Search 的服務來找 Inbound Link" + }, + { + "id": "73", + "body": "\"\" 在寫了 Engadget.Chinese 與 ouiouioui spam? 這篇後,我就在看 engadget.chinese 到底還會不會繼續 tag spam,結果在 8/21 的時候變本加厲,一口氣丟了一卡車進去...\r\n\r\n於是我在 8/22 去 Engadget Chinese 網站上找 e-mail 要幹剿:結果我沒找到。甚至在原來的英文站台也都沒找到。(...)\r\n\r\n我在同一天 (大約是吃完晚餐後) 透過 Participate: help feed our blog. 寫給 Engadget,留下 gslin @ gslin.org,然後等待他們的 reply:\r\n
Hello sir,\r\n\r\nOui-News (http://www.oui-news.com/) is a Chinese article-sharing platform using the advantange of tag in del.icio.us and furl.net.\r\n\r\nIt's very simple: Use del.icio.us to tag a article with \"ouiouioui\", then it will appear in Oui-News's board about 1 hour later.\r\n\r\nUnfortunely, we found someone register an account called \"engadget.chinese\" in del.icio.us and he spams Oui-News about two days: tag articles on chinese.engadget.com with \"ouiouioui\".\r\n\r\nI don't know if this person is your employee, but I think it's necessary to let you know that.\r\n\r\nBest Regards,\r\ngslin
\r\n很巧的是,在同一天下午四點的時候我的 Blog 上收到自稱是 engadget.chinese 本人的留言:(atticus Said)\r\n
hi gslin:\r\n\r\n在oui-news看到的一系列engadget.chinese文章就是我設的,和oui- news.com沒關係。而且沒錯的,我就是engadget.chinese編輯之一,engadget.chinese現在流量不是很大,所以我也試圖想要找到更多導入流量的機會。然而這種作法並不是spam,我並沒有設軟體拼命在del.icio.us丟tag,第一次我嘗試的時候嚇了一跳,原來 oui-news使用共筆書籤的人這麼少,才導致我一貼上去全都上了同一個版面,如果有許多人使用ouiouioui tag的話,engadget.chinese的書籤應該就會被洗掉或平均分佈的。engadget.chinese這個網站到目前為止都是測試階段,有什麼好的建議歡迎給予意見指教。\r\n\r\n“瓦肯人”的翻譯真的沒有那麼好,如果在翻譯上有所錯誤的地方,請盡量指出,我們會馬上改進的。
\r\n講明白一點:你們的東西水準差,不求改善水準,卻到處利用 tag spam 想要取得廣告收入,然後怪別人 ouiouioui tag 太少?拜託,ouiouioui 大多都是 tag 中文文章,而中文文章有水準的本來就不多了,每天只有四五篇本來就很合理,這不是給你們 spam 的理由!\r\n\r\n再回頭過來看由留言所留下來的 IP address,得知這位先生是從 創市際市場研究顧問 (當然,加上 rel=\"nofollow\") 這家公司連線出來的,我就馬上瞭解為什麼這位先生可以把 Spam 的行為光明正大的拿出來講了。\r\n\r\nbtw,到發文章前截止,我還沒收到 Engadget 所回的 mail,所以我剛剛直接依照國際上處理 spam 的慣例,把 tag spam 的訊息通知 abuse @ chinese.engadget 與 abuse @ engadget.com 了。\r\n\r\nPS:上面那張圖就是剛剛又在 tag spam 的資訊了,不過看起來 quawn 不太想理會?", + "title": "engadget.chinese 的 Spam" + }, + { + "id": "74", + "body": "大概是太多人誤解了 Sun 的 \"Open Source DRM\",所以 Boing Boing 刊出了這篇 DRM != SSL 說明了 DRM 與 SSL 本質上的不同,所以 Open Source 是自尋死路 :p", + "title": "「DRM 無效論」的說明" + }, + { + "id": "75", + "body": "在 MovableType 3.2 Announced 這篇看到 MovableType 3.2 的消息了,最主要的改變還是授權數量的改變吧?這個版本「改回」以前 MT 2.x 版的不限 Blog 數量授權...\r\n\r\n因為感受到 WordPress 所帶來強大的壓迫感嗎?*grin*", + "title": "MovableType 3.2" + }, + { + "id": "76", + "body": "Cingular 在客戶買了新的手機時會問他們要不要把舊手機給他們,他們會捐給慈善團體。但實際上的情況是客戶發現這些手機出現在 eBay 上面:Cell Phones Meant For Charity Instead Sold On eBay。\r\n\r\nBruce Schneier 則對於其中的個人資料安全問題提出討論 (這篇文章不討論 Cingular 的道德及法律上的問題,僅就一般人將手機交給 Cingular 時都沒有將裡面的隱私資料刪除的問題提出疑問):Privacy Risks of Used Cell Phones。", + "title": "Cingular 的二手手機" + }, + { + "id": "77", + "body": "在 Slashdot 上看到了 BSD Certification 的消息了:BSD Certification Group Releases Roadmap。\r\n\r\n等到國外弄出 Certification 後,國內應該也會引進來,然後就會看到一堆考過 Certification 的人面試的時候來亂了 :p (啊啊,別打我啊)", + "title": "BSD Certification" + }, + { + "id": "78", + "body": "口吾... 現在是 8/28,Oui-Blog 又 Out of Bandwidth 了... o_O\r\n\r\n要不要順便跳槽到 DreamHost 啊?畢竟 120GB/month 比起現在的 35GB 好很多?\r\n\r\n而且大家應該不會像我一樣籤運超好,遇到這台 pizzaro.dreamhost.com 每天會因為 heavy loading 重開機 =_= (為什麼我周遭其他人都用得很好啊 :~)", + "title": "每個月都來一次 -_-" + }, + { + "id": "79", + "body": "ijliao 太天位大長輩 的「國二菜鳥忙裡偷閒」似乎在 助人禁止 這篇裡被誤解成「國中二年級」?:p (參考 comments 的地方)\r\n\r\n其實「國二」是「國防役第二年」XD\r\n\r\n(也許我應該換個什麼一年級之類的東西?)", + "title": "國二菜鳥 :p" + }, + { + "id": "80", + "body": "沒錯,我說的就是 潛艦 (當然,rel=\"nofollow\"),每次都用 Big5 Trackback 別人,結果有時候 Firefox 的 encoding 就... -_-\r\n\r\n然後剛剛又在 ijliao 那邊看到:我要為別人的迴響負責嗎 ?。\r\n\r\n所以我都直接把 to2100 當關鍵字,丟到 Blacklist 裡面...", + "title": "討厭的 Big5 Trackback" + }, + { + "id": "81", + "body": "嗯,其實是 hlb 布丁長輩 在 irc 上渡化大眾:\r\n
21:51 <@hlb> gslin: 長輩知道讓 IE crash 的新方法嗎? id=\"tags\" :p\r\n21:51 <@gslin> @_@\r\n21:51 <@hlb> gslin: print preview 就爛掉 :p\r\n21:51 <@gslin> 好讚啊\r\n21:52 <@gslin> 來丟個 ticket 給 WordPress 好了 XD\r\n21:52 <@hlb> gslin: http://meyerweb.com/eric/thoughts/2005/08/26/when-printing-kills/\r\n21:52 <@hlb> 感覺上這個 bug 忽然變成某個笑話 :p\r\n21:53 <@gslin> hlb: 長輩來寫一篇吧 :p\r\n21:53 <@hlb> 37signals 的人說, \"我們寫 backpack 的時候就遇到了\" :p\r\n21:53 <@gslin> 沒錯,正在看 XD\r\n21:54 <@hlb> 不想寫 ie :p\r\n21:54 * hlb 其實是懶惰.\r\n21:54 <@gslin> -_-
", + "title": "IE Bug" + }, + { + "id": "82", + "body": "Ptt 的 Hate 板已經藍爆了 (當然不只這件事情):有人發現 永邦 (Yahoo! Kimo 音樂) 在 真愛珍愛 2005 風行精選集 的 Melody 抄襲 AIR (有 Popup Window) 的 鳥の詩。\r\n\r\nLeeym永邦抄襲鳥之詩?slzzp 長輩抄襲! 永邦 真愛珍愛 的第14首 Melody 也提到了。\r\n\r\n鋼琴版的同人原作在這:ぴこの音楽室~AIR mp3~ (最下面一首),為了節省頻寬,同樣的檔案在 這裡 也可以下載。\r\n\r\n永邦的真愛珍愛 2005 風行精選集在 http://jy.zchi.net/music1/Special_Show.asp?Special_Id=2305 這裡可以試聽。\r\n\r\nPS:Ptt 的藍爆指一個看板的人數內超過 5000 人。", + "title": "AIR 鳥の詩 被 永邦 抄襲的事件" + }, + { + "id": "83", + "body": "Slashdot 的消息:NSF Ponders New And Improved Internet,原報導在 NSF Preps New, Improved Internet 這篇。\r\n\r\n我一直都認為 Internet 的盛行在於資訊的流通性:每個 IP address 都擁有相同的權力,可以無阻礙的散佈資訊。後來蓬勃發展的 Open Spec P2P Technology 也是很重要的一環...\r\n\r\n我同時也認為 Internet 的發展會趨向於無政府主義,所以不管哪個國家的政府都會想辦法制止,但是卻發現商業運作的模式造成 Internet 已經無法被消滅。\r\n\r\n所以,新的 Internet?\r\n
The National Science Foundation is backing a major initiative that could lead to a completely new internet architecture, with built-in security measures and support for ubiquitous sensors and wireless communications devices, among other things.
\r\n其實只是想要取回管理權而已:新的 Internet 上只是多了老大哥在看你。", + "title": "新的 Internet?" + }, + { + "id": "84", + "body": "vim 貼 irc log 很好用 XD 先用 regular expression 換一下 id,再排一下就好了 XD\r\n
21:15 <@y> 脫離父子關係有好處就會脫離了, 跟離婚有好處一樣 :Q\r\n21:15 < s> y: 有血緣的沒有辦法脫離喔~ #以台灣的法律來說)\r\n21:18 <@i> 所以要先脫離國籍, 才能脫離血緣這樣 ?\r\n21:21 <@y> 為什麼要規定不能脫離父子關係啊...\r\n21:23 <@h> 因為一定要有個 parent node?\r\n21:23 <@h> XD\r\n21:23 <@Bl> h: 不然就會被系統回收?\r\n21:24 < s> y: 不知道,民法規定的...(有修法學緒論的話楊永良一定會說~XD)\r\n21:25 <@Be> 血緣關係是與生俱來的吧, 監護權應該就是可以被轉移的\r\n21:31 < s> Be: nod\r\n21:39 <@gslin> Bl: ... # 21:23 <@Bl> h: 不然就會被系統回收?\r\n21:40 <@gslin> 順間感覺到房間溫度降了十度... o_O\r\n21:41 < s> gslin: 長輩在機房?XD\r\n21:41 <@gslin> 家裡 -_-\r\n21:41 < s> XD\r\n21:41 <@J> 37->27?\r\n21:42 <@J> 進機房就是降20度?\r\n21:45 <@Bl> gslin: 其實身份證字號可能就是 PID 的偽裝 :p\r\n21:46 <@J> @@\"\r\n21:47 <@gslin> B: soga !!!\r\n21:47 * gslin 來寫 blog XD
", + "title": "冷笑話一則" + }, + { + "id": "85", + "body": "據說實力實在太雄厚被到處轉貼 XD\r\n\r\n原說明在:原版超任卡帶裸卡約兩噸(20000卡)(Yahoo! Bid)。\r\n\r\n拍賣的說明這樣寫:\r\n
全部有兩萬個卡帶,全部都是原版裸卡,無盒無書,當然,一定是好玩不好玩的混合著,沒有辦法單賣,我不知道要賣到民國幾年,沒有辦法打名單,東西太多,除了得標價之外,還需要負擔貨櫃的運費,沒有辦法拍照,兩萬卡就算拍照也看不出什麼來吧?反正全部都是裸卡,如果要看其他照片,可以到 http://www.billyjr.com/gamesphoto 裡面看,不過請不要亂引用裡面的照片,有任何問題都可以問,只刊登一次,沒人下標就不再刊登拿去填海,有任何問題請發問,不過基本上這裡就是兩萬卡一起賣,運送費用目前還不知道,所以沒有加進去,大概就是兩噸從日本大阪過來的貨櫃吧,上面的照片是有盒有書的,因為一下子也找不到裸卡的照片\r\n\r\n補充:只要結標,送一百台超任讓你測卡帶\r\n我絕對沒有惡搞,誠心交易 @_@\r\n\r\n照片裡面都是倉庫裡面的一些角落,臨時找不到卡帶照片,所以請不要再要求太多了 orz 我真的很盡力了,總之外賣的是 20000 個超任的裸卡,這樣就對了\r\n\r\n其實我有想到,拿去當盒玩給人抽或是當轉蛋,又或者丟到娃娃機給人夾.. 其實都可以,反正算起來一個卡帶差不多 15 塊錢而已 @_@ 所以其實用法還蠻多的... 盒玩一次抽 30, 40 塊錢不過份吧?好的遊戲數量比較少的就當隱藏版這樣.. @_@ 主機也可以拿去給人抽,主機需要更多的話可以另外買,不過單位是一次兩百台
\r\n兩噸啊... o_O", + "title": "Billy Jr 的清倉" + }, + { + "id": "86", + "body": "依照 9 Days until Firefox 1.5 Beta! 這篇的說明,Firefox 1.5 將在 9/8 進入 Beta 1 測試,而 10/3 進入 Beta 2,然後在 10/28 出 RC1:\r\n
Sept 6: Lockdown for 1.5b1\r\nSept 8: Release 1.5b1\r\nOct 3: Lockdown for 1.5b2\r\nOct 5: Release 1.5b2\r\nOct 26: Lockdown for 1.5RC1\r\nOct 28: Release 1.5RC1
", + "title": "Firefox 1.5" + }, + { + "id": "87", + "body": "\"\" 直接在 Mozilla Firefox 裡面看 PDF 其實少了很多功能,所以我希望按到 PDF link 的時候是跳 Download Window 出來 :p\r\n\r\n我知道在 Plug-Ins 可以改,可是我發現改完以後下次重開 Firefox 又失效了 XD 有誰知道怎麼讓他存起來嗎?我看了一下 about:config 裡面的內容 (找 plug),好像沒看到什麼設定可以讓他「記得」:p", + "title": "Mozilla Firefox 對 PDF 的處理" + }, + { + "id": "88", + "body": "颱風一個一個接著來是怎樣 XD (這是下午五點的圖)\r\n\r\n\"\"", + "title": "颱風" + }, + { + "id": "89", + "body": "剛剛 hlb 太天位大長輩 在 irc 上面介紹了這部由 台科大孫春望 與全明遠製作的參賽作品:Cubic Tragedy。\r\n
21:30 <@hlb> http://www.dt.ntust.edu.tw/siggraph2005/ # 超惡搞, 一定要看\r\n21:40 <@gslin> hlb: XD # http://www.dt.ntust.edu.tw/siggraph2005/\r\n21:41 <@hlb> gslin: 一定要推的啊 XD\r\n21:41 <@gslin> 來寫一篇
\r\n我建議看 WMV 格式的就好,因為我討厭 Quicktime... :p\r\n\r\n站上的 Local Mirror 在這:WMV HD ( 66MB )。\r\n\r\n另外這邊有 數位時代雙週刊 的報導值得看看:台科大師生勇闖好萊塢。", + "title": "SIGGRAPH 2005 People's Choice Award" + }, + { + "id": "90", + "body": "Jeremy Zawodny嘗試 Daily Link 一天後就決定獨立出來,不要放在同一個 feed 裡:No More Automated Daily Link Digest Posts。\r\n\r\n原因?有人抱怨他們不想看 - 跟我看 ScheeRichyli 的 Daily Link 一樣。不是 Daily Link 內容的問題,而是重要的事情大家都會獨立拿出來寫成一篇,而在 Daily Link 裡面的東西通常就是...", + "title": "Daily Link (網摘)" + }, + { + "id": "91", + "body": "Update:Fake News。\r\n\r\n\"\"Gizmodo 看到 Google OS 的消息 - 不過是在 Linux Embedded System 上,大多數的程式是透過網路下載而執行的:Google OS (??)。\r\n\r\n看起來頗讓人振奮?:p 也許哪天也會出現 Google OS Desktop?", + "title": "Google OS" + }, + { + "id": "92", + "body": "由於 SSL 2.0 有 Security Flaw,剛剛在 mozillaZine 看到 Mozilla Foundation 打算把 Firefox 內預設支援 SSL 2.0 的選項改成 disabled:Mozilla Firefox to Drop Support for SSL 2.0。(現在常用的是 1996 提出的 SSL 3.0 與 1999 提出的 TLS 1.0)\r\n\r\n如果你有在用 Firefox 或是 IE,都有可以關掉 SSL 2.0 的選項可以選。", + "title": "Firefox 將會把 SSL 2.0 的預設值關閉" + }, + { + "id": "93", + "body": "在 Jeremy Zawodny 幹剿過 Trackback is DeadJason Kottke 也幹剿過 So long, Technorati 後,Jeremy Zawodny 找到了一個還不錯的替代品:Playing with Icerocket Blog Search。\r\n\r\n\"\" Icerocket Blogs 可以丟 url 進去,然後看誰 link 給你,而且同時提供了 Javascript 與 PHP version 的 Link Tracker 讓你牽在網頁裡 :p\r\n\r\n喔對了,Icerocket 的人好像也跑到 Jeremy Zawodny 那邊留言 XD", + "title": "Icerocket (冰火箭?)" + }, + { + "id": "94", + "body": "我在 Icerocket (冰火箭?) 這篇介紹了 IceRocket 這家 Link Traccker 的服務,由於 Javascript 版本需要用到 XMLHttpRequest,所以必須在 server 上放一個 cit_client.php。(純粹做 proxy 用)\r\n\r\n不過在 DreamHost 什麼都關掉的情況下,file_get_contents()fopen() 都不能直接對 URL 動手腳,於是只好透過 curl 抓:在 PHP: fopen - Manual 找 Luiz Miguel Axcar 的 code 自己 patch 進去。\r\n\r\n然後其他的依照 IceRocket 設定就可以了,你可以寫 Plugin 或是直接改 Theme... (我是選後者 XD)", + "title": "冰火箭在 DreamHost 上使用的問題" + }, + { + "id": "95", + "body": "在 pank 那邊看到 Skype call forwarding,簡單來說就是 1.4 Beta 版支援「離線時透過 SkypeOut 轉接到自己的電話號碼,甚至連 SkypeIn 的部分也可以轉接」,當然,這項費用是設定轉接的人付。\r\n\r\n另外 Skype 1.4 Beta 宣稱音質會更好?這點要測過才知道了...", + "title": "Skype 1.4 Beta" + }, + { + "id": "96", + "body": "OpenOffice 本來是採用 GNU Lesser General Public License (LGPL)Sun Industry Standards Source License (SISSL) 雙重授權 (使用者可以選擇其中一種),但剛剛在 Slashdot 上看到 Sun 決定將 SISSL 授權收起來:OpenOffice Goes LGPL。\r\n\r\nOpenOffice 的官方網站上面 的License Simplification FAQ 是這樣寫:\r\n
On 2 September 2005 Sun announced the retirement of the Sun Industry Standard Source License (SISSL). As a consequence, no future Sun open-source project will use the SISSL. Projects currently using the SISSL under a dual-license scheme, such as OpenOffice.org, are dropping the SISSL and thus simplifying their license scheme as soon as the development cycle allows.
\r\n看起來是舊有的部分不動他,但新的版本釋出時只會剩下 LGPL 授權。\r\n\r\n至於 SISSLLGPL 最大的差異,在 comment 的地方有人說明了:\r\n
Re:Comparison of terms? (Score:5, Informative)\r\nby tmasssey (546878) Alter Relationship on Sunday September 04, @02:48AM (#13471645)\r\n(http://www.outoftheboxsolutions.com/)\r\n\r\nThe biggest difference is that if you contribute and distribute your changes to an (L)GPL project, you must make your source publicly available. Under the SISSL, you could distribute binary-only versions of the project.
\r\n另外一件有趣的事情是這篇文章 (Slashdot 上的文章) 的原作者 Motor 在 submit 時標題是用 \"OpenOffice single license: LGPL\",但 ScuttleMonkey 很雞婆的 (而且也誤解了) 改成了現在的 \"OpenOffice Goes LGPL\"...", + "title": "OpenOffice 將使用 LGPL 授權" + }, + { + "id": "97", + "body": "剛剛才讀完 George Orwell 生前最後的大作 一九八四 (Nineteen Eighty-Four),在網路上找資料就發現 hlb 太天位大長輩 兩年多前寫的:Apple's 1984。\r\n\r\n裡面的影片其實很早前就看過了,只是當初根本看不懂最後那段的意思 :P", + "title": "一九八四" + }, + { + "id": "98", + "body": "在 Boing Boing 看到了 Internet Archive 希望大家提供有關 Katrina (卡崔娜) 的頁面,他們要記錄下來保存:Help the Internet Archive archive blog coverage of Katrina。\r\n
The Internet Archive, a non-profit digital library, needs help in finding URL's of sites and blogs that contain documents of this major disaster.\r\n\r\nPlease email links to sites and pages that should be saved for future research to katrina@archive.org.
", + "title": "Internet Archive 要記錄 Katrina 的資訊" + }, + { + "id": "99", + "body": "在 Slashdot 上的 Experimental 4G Phone Service Faster Than Cable 看到日本 NTT DoCoMo 示範了超高速傳輸的行動通訊技術,可以在靜止時達到 1Gbps,或是在移動的時候達到 100Mbps (沒講多快?),原報導在:4G prototypes reach blistering speeds。\r\n\r\n預定在 2010 年可以看到:\r\n
Some countries have already begun cooperating on such standards. Japan and China signed a memorandum on 24 August to work together on 4G. NTT DoCoMo hopes to launch a commercial 4G network by 2010.
\r\n到時候不知道有沒有應用可以在上面用... (像是一直在推動的網路電視,實在不怎麼看好 :p)", + "title": "超高速行動通訊技術" + }, + { + "id": "101", + "body": "我把 WordPress Plugins 裡的 PHP Markdown 給裝了起來,希望以後可以少用 Quicktags :p\r\n\r\n看網頁的說明,Markdown 相容於 Textile,所以有很多東西以前玩過... 如果你想試看看的話可以先到 Markdown Syntax Documentation 看看語法長什麼樣子。\r\n\r\nUpdate:因為對之前的文章造成影響,所以拿掉了 XD", + "title": "改用 Markdown" + }, + { + "id": "102", + "body": "在 Boing Boing 上看到 Katrina 對於 Internet 2 的影響:Katrina impact on Abilene / Internet2 network -- analysis:\r\n\r\n\r\n\r\n很明顯可以看到本來走南部的全部都繞道中部了,於是 Loading 就爆增...", + "title": "Katrina 對於 Internet 2 的影響" + }, + { + "id": "103", + "body": "在 Slashdot 上的 OpenSSH 4.2 released 看到 OpenSSH 4.2 的消息了,這次主要的幾個大的改變是:\r\n\r\n其他的... 看起來對我不太重要 XD", + "title": "OpenSSH 4.2 重大更新" + }, + { + "id": "104", + "body": "9/8 交大宿舍將全面啟動 802.1x,我怎麼感覺被計中 K 中腦袋了 =_=", + "title": "802.1x" + }, + { + "id": "106", + "body": "Slashcode 的發展者開始在測試 CSS-based 的版本了,目前在 Slashcode 網站與 use.perl.org 上運作中:Slashdot Goes CSS: Help Beta Test。\r\n\r\n目前他們正把舊的 code 改成 valid HTML 4.01... 我本來以為會是 XHTML 1.0 Transitional... 不過至少是 Standard 就是了 =_=", + "title": "CSS-based Slashcode 測試中" + }, + { + "id": "107", + "body": "在 Bruce Schneier 的 Blog 上,A U.S. National Firewall 這篇引用了 Grokster Ruling Begins the Good Fight 這篇文章裡的這段話:\r\n
This seems like a really bad idea:
Government has the right -- even the responsibility -- to see that its laws and regulations are enforced. The Internet is no exception. When the Internet is being used on American soil, it should comply with American law. And if it doesn't, then the government should be able to step in and filter the illegal sites and activities.
\r\n我一開始想到的是共產主義 (如同那篇文章下面 comment 所提到的),不過最近讀完 George OrwellNineteen Eighty-Four (中譯《一九八四》) 後,我覺得這種想法跟共產主義差多了... 這種想法比較像是智商不足的強盜土匪擁有的思考邏輯。\r\n\r\n剛剛又看到 米國FCC網站被XXA夢入侵!! 這篇:FCC 盜用 Doraemon 的圖像,作者向 FCC 反應後,FCC 完全不理...\r\n\r\n我覺得自從 George W. Bush 上台後,美國政府愈來愈讓人失望了... 本來我還在猜 Bush 的智商有沒有 60,現在應該可以再往下調整不少。(不過想到這傢伙還要混三年就讓人頭痛...)", + "title": "智商不足的強盜土匪" + }, + { + "id": "108", + "body": "\"\"Gizmodo 看到 iPod Nano Gutted 這篇文章,把 iPod Nano 肢解開來看 XD", + "title": "「肢解」iPod Nano" + }, + { + "id": "109", + "body": "Firefox 1.5 Beta 1 出版了:Mozilla Firefox 1.5 Beta 1 Released,看起來最有用的部份應該只有這個:(對我來說 -_-)\r\n\r\n至於 SVG 之類的東西,目前用的太少了,所以...\r\n\r\nUpdate:剛剛看到 Netcraft 給的 Security Alert:New Vulnerability in Firefox Browser,包括 1.0.6 與 1.5 Beta 1 都中獎,而且 Secunia 給的是 Highly critical:Firefox URL Domain Name Buffer Overflow。\r\n\r\n看起來很快就可以看到 1.0.7 了... (1.5 Beta 1 不知道會不會出個 1.5 Beta 1.1 之類的版本 XD)", + "title": "Firefox 1.5 Beta 1" + }, + { + "id": "111", + "body": "Firefox 1.0.6 以及 Firefox 1.5 Beta 1 的 Security Issue 有暫時性的解決方案:\r\n\r\n官方網頁提供了兩個解法,第一種是到 about:config 裡把 network.enableIDN 關掉,第二種是安裝某個 Plugin,把 bug 擋住 :p", + "title": "Firefox 1.0.6 Security Workaround" + }, + { + "id": "112", + "body": "在 Boing Boing 上看到 Yahoo! Japan 的搞笑影片:Hard Gay visits Yahoo! Japan。\r\n\r\n我在 這裡 有放一份 mirror :p", + "title": "Yahoo! Japan 的搞笑影片" + }, + { + "id": "113", + "body": "eBay 買下 Skype... 這大概會是這幾天最熱門的新聞:\r\n", + "title": "eBay 買下 Skype" + }, + { + "id": "114", + "body": "利用鍵盤輸入的聲音來辨識輸入了哪些東西 - 理論上是可行的,可是難度一直都很高 XD\r\n\r\n不過剛剛在 Bruce Schneier 那邊看到 Snooping on Text by Listening to the Keyboard,看英文名字好像是對岸的強者 (在 BerkeleyCS) 用 Machine Learning 訓練 XD\r\n\r\n最後會得出像這樣的 sequence:35, 12, 8, 14, 17, 35, 6, 44, … 然後你可以透過字彙出現的機率去計算到底是什麼字 :p", + "title": "利用鍵盤聲音來辨識輸入內容" + }, + { + "id": "115", + "body": "quawn@Oui-Blog 當初推動「共筆書籤」所擔心的事情已經一而再再而三的發生:\r\n
可能會有很大一部份的朋友對於這個想法會存疑,我了解,因為就連我也掙扎了很久。如果有人惡搞?如果有人狂打自家網站的廣告?如果ouiouioui的標籤被SPAM盯上?這些考慮都曾經阻礙了我心中想法的實踐進度,不過,小弟覺得儘管這個計劃有一天失敗了、或是事實證明根本不可行,那至少我們試圖證明過,就像大多數的科學實驗一樣,尤其,特別在這個實驗並沒有明顯的成本時。
\r\n先後包括了:\r\n\r\n後來我有一陣子沒在注意看 Oui-News,剛剛發現 toaaron 這個傢伙從 9/7 開始,只要是自己的文章就 tag ouiouioui 一下,結果整個版面就通通都是他的東西...\r\n\r\n是的,我要說的就是 ouiouioui 已經被 Spammers 盯上,這個實驗已經失敗了。", + "title": "現有「ouiouioui 共筆書籤」的不可行性" + }, + { + "id": "116", + "body": "ijliao 在這篇 Wordpress Trackback Auto-Discovery 提到了 WordPress 大多數的 Theme 在 Trackback Auto-Discovery 這個問題,我剛剛把他修了一下 (改個 Theme Template 而已),讓 Spam 發的更快更輕鬆。如果有問題的話麻煩再通知?", + "title": "Trackback Auto-Discovery" + }, + { + "id": "117", + "body": "這其實是測試版本,用 Firefox 1.5 Beta 的人可以裝這個版本:[Greasemonkey] Greasemonkey 0.6.1.4 - works with the FF 1.5 beta :-)。\r\n\r\n把附件抓下來以後將 .bin 改成 .xpi,再拉進 Firefox 裡面就可以裝了。", + "title": "Greasemonkey 0.6.1.4" + }, + { + "id": "118", + "body": "我前幾天有講到現有 ouiouioui 模式的不可行性:現有「ouiouioui 共筆書籤」的不可行性,而且我們也可以看到 tag spam 不斷的發生:以道德為最後防線的系統,是擋不住 spammer 的攻擊的。\r\n\r\n舉例來說,今天又看到有人在賣瓜了:\r\n\r\n\"\"\r\n\r\n道德絕對不能是最後的防線,而應該是輔佐的工具。\r\n\r\n舉個例子來說,你不覺得上街頭抗議、或是在 blog 上抱怨 mail spam 很多,「請 Spammer 不要再送」這種事情很鳥嗎?那相反過來,你為什麼要以道德標準來「勸導」Spammer?\r\n\r\ntag spammer 一定會愈來愈多,ouiouioui 如果要繼續下去,真正應該要作為最後的防線應該是以技術為底:不論是以評分系統來作為是否刊登的標準,或是以該篇文章被多位 del.icio.usfurl 收錄作為標準。\r\n\r\n所以我對於 Reder 在 comment 提到的說法不以為然:\r\n
我剛剛回頭看了一下Oui-News的網站上都沒有一個聯結是連到當初quawn在Oui-Blog所張貼的那篇文章。而又再次觀察了一下會推薦的人,大致上就是那幾位前輩。我想這個計畫有繼續推展的必要,而不是因為一兩位spammer就宣告實驗失敗。況且有像gslin這樣的前輩會注意到spam的現象。XD
", + "title": "ouiouioui 的 tag spam" + }, + { + "id": "119", + "body": "我之前其實不太用 Gmail 的,我所申請的 Gmail 都是拿來放資料庫的備份。(所以我有寫過一篇關於利用 GnuPGGmail 備份 MySQL 資料庫的文章)\r\n\r\n不過在上研究所以後,我發現時間應該浪費在美好的事物上,所以有很多需要花時間去瞭解 (以及 try and error) 的東西就慢慢沒在用了,有現成的方案就儘量用,沒有現成的方案才會自己弄。\r\n\r\n所以我後來把 D2 信箱 (大學部) 的信轉到 Gmail 上面,然後把交大資工所的信也轉上來,強迫自己用,現在慢慢習慣了 :p (主要是以前沒有在用,沒有注意到某些功能,然後就會覺得不好用)\r\n\r\n呃... 你問我這篇的重點是什麼?只是碎碎念而已 :p", + "title": "慢慢的習慣 Gmail" + }, + { + "id": "120", + "body": "這是新的公告:\r\n
為了解決宿舍嚴重的IP佔用以及病毒問題,計算機與網路中心計畫在本學期全面啟用 802.1X 認證。\r\n\r\n相關設定請參考,http://ccca.nctu.edu.tw/802.1x/\r\n\r\n由於仍然有許多問題存在,測試時間將延長,從 9/19(一) 起至 9/23(五) 這五天每日20:00~22:00將會於全校宿舍測試啟用 802.1X ,以方便讓所有在校學生了解802.1X 的設定。每日會公布當日成功上線人數以方便讓大家了解測試結果。若測試順利,則將於 9/26 中午12:00全面啟用,屆時若使用者未設定正確,則將無法使用宿舍網路。若遇到問題可以打電話至 52833 或寄信至 netadm@ccca.nctu.edu.tw 與 CCCA 交通大學校園網路策進會連絡。
\r\n上個禮拜測試 20:00 ~ 21:00 的情況是:\r\n\r\n\"\"\r\n\r\n有機會再來講。", + "title": "IEEE 802.1X" + }, + { + "id": "121", + "body": "Matt 最近想要發展一種 spam prevention method 取代現有的 Plugins,我猜他應該是想直接牽在 WordPress 裡面:Stop Spam Better。\r\n\r\n不過我很好奇的是,目前做得比較好的 Spam Prevention 幾乎是雞尾酒式的方法在抓,WordPress 真的做得過人家嗎 :p", + "title": "Spam Prevention" + }, + { + "id": "122", + "body": "打錯別人的名字是很不禮貌的,尤其是打錯 Boing Boing 的名字一定會被拿出來婊兩下:Funny \"Boinboing\" typo in newspaper。\r\n\r\n不過這些 editor 很明顯沒看過 Boing Boing,也不常用 Internet,連個網路蟑螂的網頁都看不出來 XD", + "title": "Boing Boing 與 BoinBoing" + }, + { + "id": "123", + "body": "沒錯,WordPress.com。\r\n\r\n我剛剛收到 WordPress.com 的邀請信 (我有去填 invitation requesting),看了一下發現他似乎是追著 WordPress 1.6-ALPHA-2-still-dont-use 跑 (像是 Javascript 的淡出效果)。\r\n\r\nTheme 的部分... 有得獎的那幾個都有進去:\r\n\r\n然後也可以 Upload files,可以上傳 jpg/jpeg/png/gif/mp3/mov (怎麼只有 mov?綁標啊!),單檔限制 1.5MB,總空間限制 25MB。\r\n\r\n另外就是可以控制的部分少很多,不過對於一般的 User 來說應該還不錯就是了,不用顧慮一堆有的沒的 bugfix 之類的問題 :p", + "title": "WordPress.com" + }, + { + "id": "124", + "body": "Slashdot 上的文章:Is Yahoo Actively Supporting Adware?。\r\n\r\n這是一家與 Google 完全不同的哲學:Do no evil,從 Flickr 必須申請 Yahoo! 帳號的事件也可以看的出來。\r\n\r\nbtw,comment 很有趣,可以看一看。", + "title": "信任問題:Yahoo!" + }, + { + "id": "125", + "body": "在 Slashdot 以及好幾個站台看到的消息:Google WiFi+VPN Confirmed。\r\n\r\n實際上 Google Secure Access 走的是 PPTP 加密,提供 Private IP 給你,再透過美東的某個 ISP 連出去。所以從台灣使用會覺得很慢,因為連台灣的網站會先連到美東再連回台灣。\r\n\r\n而在 Slashdot 的 comments 裡面也寫的很清楚了,Google Secure Access 看起來接受 CHAP 與 MS-CHAPv1,都是相當舊的 Protocol,事實上並不是想像中的暴力高加密... 是不是 \"Secure\" 請自己多判斷吧 :p\r\n\r\nUpdate:你可以自己把 CHAP & MS-CHAPv1 拿掉,還是可以連 :)", + "title": "Google VPN" + }, + { + "id": "126", + "body": "BitComet 0.60 其實釋出一陣子了,重灌後才發現出新版了... 這次根本是直接丟了一顆炸彈下來,把 P-Cube 這類的東西炸死:(from Changelog)\r\n
Core Improved: add protocol header encrypt option
\r\n這項功能預設是 \"Auto\":當雙方都使用 BitComet,或是使用支援 Header Encryption 的 Client 時,就會自動啟動,如同 forum 上說的:\r\n
You'll only be able to perform the header encryption function between clients that support the function and have it enabled. So as ddominey86 said above, this feature won't be doing much until many more people start using clients that support it.\r\n\r\nIf a client were to modify the header information of bittorrent packets and send them to a 'normal' client (one that doesn't support this new function), the data would be unusable and discarded.
\r\n不知道原廠 Bittorrent 會不會支援...", + "title": "BitComet 0.60" + }, + { + "id": "127", + "body": "我在 CSS-based Slashcode 測試中 有提到當時 Slashdot 在測試 CSS 版本,今天上去看就發現好像不太一樣,看了 html source 發現開頭就不一樣了:(之前是 HTML 3.2)\r\n
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\r\n \"http://www.w3.org/TR/html4/strict.dtd\">
\r\nNice job...", + "title": "Slashdot CSS" + }, + { + "id": "128", + "body": "呃... 我覺得 Russell Beattie 只差沒說這句話了:Why I Might Switch Back… 洋洋灑灑列了三十三項 :p\r\n\r\n喔,別忘了下面的 comment,Jeremy Zawodny 也跑來湊熱鬧 :p", + "title": "Mac is suck" + }, + { + "id": "129", + "body": "在 Windows 下我一直都用 7-Zip,常看到的格式都可以解 (對我來說,能解 zip、rar 兩種最常看到的格式就好了),另外一個重要的原因是 Open Source (GNU LGPL) & Free (at price)。\r\n\r\n剛剛在 FrSIRT 看到 7-Zip 的 Security Advisory:7-Zip ARJ Archive Handling Client-Side Buffer Overflow Vulnerability,指出了 7-Zip 處理 ARJ 壓縮格式的部分有安全性問題...\r\n\r\n手上還沒更新到 4.27 beta 的更新一下吧 :p", + "title": "7-Zip Security Issue" + }, + { + "id": "130", + "body": "\"\" \"\" 看到 南宮博士 這篇「[PnP]電源插座的歷史遺憾」就讓我想到昨天又買了一個延長插座 -_-\r\n\r\n兩個電風扇、ADSL 數據機、Switch、電腦、螢幕、喇叭,如果要充電 (手機、Notebook) 的時候還要再一個插頭... 這樣會不會炸啊 o_O", + "title": "插座" + }, + { + "id": "131", + "body": "下面是我在 tw.bbs.campus.nctu (== nctu.talk) 發表的文章,電話是快六點的時候接到的...\r\n
作者: DarkKiller (悸動) 看板: nctu.talk\r\n標題: Re: 802.1X 與 RFC\r\n時間: Sat Sep 24 21:28:37 2005\r\n\r\n老師好,\r\n\r\n※ 引述《ltc@xx.nctu.edu.tw》之銘言:\r\n> 其它管制衝 IP 的技術必須定時從 router 取得 IP、MAC table,從 switch 取得\r\n> MAC、switch port table,做交叉比對,代價太高,因為上網連線時間平均值,絕\r\n> 對遠大於抓取table 的時間,跟連線、離線紀錄負擔差太多。\r\n\r\n今天有個女生打電話到我家裡的 ADSL 附掛電話,接起來聽聲音不知道是誰,\r\n我也不清楚他怎麼拿到這隻附掛電話的號碼。\r\n\r\n對話的過程大概是這樣:\r\n\r\n女:你是 DK 嗎?\r\n\r\n我:啊? (楞了一下)\r\n\r\n女:你是 DarkKiller 嗎?\r\n\r\n我:呃... (問題不是我是不是 DK,問題是你怎麼知道這隻號碼?)\r\n\r\n女:你負責 802.1X 的部分嗎?\r\n\r\n我:呃... (我的精神狀態持續 ... 中)\r\n\r\n女:我以前也管過網路,現在住在女二舍,為什麼要啟動 802.1X 才能防止衝\r\n    IP 啊?\r\n\r\n我:呃... (還在恍惚,正想要回答的時候女生又繼續講)\r\n\r\n女:我記得學校用的是 Cisco 2950,不是每個 Port 設一組 ACL 擋 source\r\n    IP 就好了嗎?幹嘛又要啟動 802.1X 又要鎖 MAC address?\r\n\r\n我:呃... 你說的好像也對... (好強... *震驚*)\r\n\r\n女:那就不要再用 802.1X 了啊,blah blah... (後面幾句沒在聽了,然後她\r\n    就掛電話了)\r\n\r\n我:... (這是哪位大神啊)\r\n\r\n然後我覺得我的生命安全受到威脅,趕緊跑出去跟學長去清大夜市吃晚餐,還\r\n順便跟學長猜了老半天「這個人是誰」,剛剛才回到家。\r\n\r\n但是我覺得這位女二舍的同學 (學姐?) 說的有些道理:\r\n\r\n* 如果要管制衝 IP,只要對每個 Port 設 ACL 正向表列每個 Port 可使用的\r\n  source IP address,總共 48 組。\r\n\r\n  以 ARP 的行為來說,現有的設備沒有辦法阻止衝 IP 的現象發生,但可以利\r\n  用 ACL 設定到「如果不使用正確的 IP 就不會通」,而降低衝 IP 的意願。\r\n\r\n另外給女二舍的大神:\r\n\r\n我沒有負責處理 802.1X 啊,您弄得到我的電話代表您神通廣大,您應該也弄\r\n得到負責人的電話,不要打給我抱怨啊 =_=\r\n\r\n--\r\n                                                Resistance is futile.\r\n                           http://blog.gslin.org/ & <gslin@gslin.org>
", + "title": "IEEE 802.1X" + }, + { + "id": "132", + "body": "剛剛逛 del.icio.us 看到的:Google Secure Access on Mac OS X,簡單來說 Google Secure Access 的程式只是幫你去 https://vpn.google.com/getpass/ 取得帳號密碼 (會傳回一份 XML data),然後塞到 PPTP 設定裡面。\r\n\r\n所以其他 OS 的使用者如果真的想用 Google Secure Access,其實可以自己手動做這件事情 XD", + "title": "Google Secure Access 的最後一個關卡" + }, + { + "id": "133", + "body": "MySQL 5.0「餅乾版」釋出 (我很喜歡這個詞,可是我忘記是誰開始用的):MySQL 5.0 Candidate ReleasedMySQL 5.0 Release Candidate Available. Win an iPod nano!。\r\n\r\nMySQL 5.0 在某些機器上已經跑了一陣子 (當初是為了 VIEW 的功能使用 5.0),用了幾個月下來還算蠻穩定的。(如果不會用到奇怪的功能...)\r\n\r\nUpdateJeremy Zawodny 在他的 blog 上介紹了一下 MySQL 5.0:MySQL 5.0 Release Candidate Available。", + "title": "MySQL 5.0" + }, + { + "id": "134", + "body": "Slashdot 上看到英國的 Be 這家公司提供了 24M/1.3M 的寬頻網路,只要£24:24 Mb Consumer Broadband Launched。\r\n\r\n£24 換算台幣約 NTD$1416 (匯率換算 - Yahoo!奇摩股市),再將國民生產毛額 GNP 差距 (以英國 USD$23680/year,台灣 USD$13950/year 計算) 換算進去,給台灣人的感覺大約是 NTD$834?hmmm...\r\n\r\n另外對 HiNet peering 的費用調降不少後,似乎還是沒看到各 ISP 對 end user 的動作?(還是都拿去調降機房費用了?)", + "title": "英國的 24Mbps 寬頻網路" + }, + { + "id": "135", + "body": "在 Slashdot 看到的太陽能手提包:Solar-powered Handbag,要把太陽能拿來做什麼呢?照亮包包裡面的物品 XD\r\n\r\nBBC報導 裡面寫的相當巧妙:\r\n
The contents of a woman's handbag have long remained a mystery - often even to the owner - but a new design offers to shine a light on the problem.
\r\n我笑到肚子痛了 :~", + "title": "太陽能手提包" + }, + { + "id": "136", + "body": "在 Slashdot 看到為了要用 libtiff 的 security hole 進行 hacking,所以 SonyxTeam 放出了一個 Downgrade Software (噗):PSP Firmware Downgrader Released。", + "title": "PSP Firmware Downgrade" + }, + { + "id": "137", + "body": "居然 ForeverGeek 看到這個老消息:Yet Another Gmail,講 Gmail.cn 的問題...", + "title": "另外一個 Gmail..." + }, + { + "id": "138", + "body": "在六月的時候 MPAA 放棄 Broadcast Flag (在 Broadcast Flag 這篇有提到),結果剛剛在 Slashdot 上看到 MPAA 又拿出 Broadcast Flag 出來:Broadcast Flag Back in Congress。\r\n\r\n不過這種東西跟區碼一樣... hmmm...", + "title": "Broadcast Flag" + }, + { + "id": "139", + "body": "DreamHost 的 Shared Hosting 不限制 Domain 數量了:\r\n
Unlimited Domains and Sub-Domains for all! (New Feature)\r\n\r\nPosted: Sep 27th, 2005 - 01:30:00 PM PST (6 hours 1 min ago)\r\n\r\nHey Just-Became-Happier DreamHost Customers!\r\n\r\nIn honor of our 8th birthday, as of right now, all our shared hosting plans have been upgraded to include unlimited fully-hosted domains and sub-domains, forever!\r\n\r\nYou don't have to do anything, we've retro-actively applied this to all current customer plans. Happy Birthday to us!\r\n\r\nEnjoy,\r\nThe Happy DreamHost Doooooommmmmmmmmmmmaaaaaaaaaaiiiinnnnnnnnnsssss Team!
", + "title": "DreamHost Shared Hosting 不限制 Domain 數量了" + }, + { + "id": "140", + "body": "Dave Child 的最新作品:HTML Character Entities Cheat Sheet。\r\n\r\n網路上有很多 Cheat Sheets,但很少像他這樣做在一張裡面 (而且還提供 PDF & PNG 兩種格式),印出來很方便:Cheat Sheets。", + "title": "HTML Character Entities Cheat Sheet" + }, + { + "id": "141", + "body": "Slashdot 的報導,SSH Communications (當初發展 SSH Protocol 的公司) 認為 OpenSSH 的品質不足以成為企業級的產品:(SSH Claims Draw Open Source Ire)\r\n
OpenSSH is not an enterprise-class product that is needed for the demands of a large-scale deployment. We do not compare OpenSSH to our SSH Tectia solution, since it's far from the same,
\r\n可是 OpenSSH 的佔有率遠遠超越其他人 XD\r\n
However, OpenSSH is very popular and is commonly deployed in almost all BSD, Unix and Linux systems. More than 87 percent of Internet-facing servers were using OpenSSH, according to an OpenSSH Internet scan in September 2004.
\r\n這段 Comment 直接說明了 SSH Communications 的氣量:\r\n
They claimed OpenSSH was not \"enterprise ready\". Pointing out that many, many enterprises not only use it, but build it into their products is a fairly compelling rebuttal.\r\n\r\nThey are either using their own private definition of \"enterprise\" that doesn't include organisations like Cisco, or they are lying. Either way, they are discredited.
", + "title": "OpenSSH 與 SSH Communications 的 SSH" + }, + { + "id": "142", + "body": "在 ZDNet 上面這篇 The Web-based Office will have its day 列出了一張表,顯示了有一卡車的廠商與社群不斷嘗試透過瀏覽器建立 Web-based Applications。(SlashdotEarly AJAX Office Applications)\r\n\r\n裡面有以前就一直被大家注意的 (用的人也蠻多的) S5、常常被拿出來當作 AJAX 示範的 Webnote、前幾天才出現的 The latest from Yahoo! Mail,當然,還有帶動 AJAX 風潮的 Gmail。", + "title": "Web-based Applications" + }, + { + "id": "143", + "body": "從 Geeking with GregGoogle's BigTable 得知 Jeff Dean 將在 10/18 在 華盛頓大學 講 BigTable:\r\n
BigTable is a system for storing and managing very large amounts of structured data. The system is designed to manage several petabytes of data distributed across thousands of machines, with very high update and read request rates coming from thousands of simultaneous clients. In this talk, Jeff will discuss the basic design of BigTable and its implementation, provide some performance measurements, and outline some current applications of the system. He'll also touch on Google's future goals and directions for the system.
\r\n屆時在 Colloquium and Televised Talk Information 也可以看到轉播。", + "title": "Google BigTable" + }, + { + "id": "144", + "body": "在 SimpleBits 看到 elfURL 提到了 elfURL 這個短網址服務,不過... 沒提供 Bookmarklet 給大家用啊,這樣用的人怎麼可能會多 :p 就算你提供 RSS 讓使用者觀察某個短網址的狀態,可是還是很難用啊 :p\r\n\r\nUpdate:shakalaca 在 comment 指出其實有提供 Bookmarklet o_O", + "title": "elfURL" + }, + { + "id": "145", + "body": "數位之牆P2P 的罪與罰(二)貪婪的火燄 這篇:\r\n
如果商業化經營的P2P 軟體公司宣稱「我僅提供軟體不管用戶是否拿去侵權」都還是挨告,那麼宣稱「我僅提供搜尋結果而不管結果是否非法」的搜尋引擎,看起來真是被告得理所當然。\r\n\r\n這樣的思維還可以再無限上綱一些。例如對於提供ADSL服務的電信業者來說,宣稱「我僅提供連上網際網路的服務而不管用戶於網上是否從事侵權」,唱片業者當然也可以告,從前例來看勝訴機會頗高。\r\n
\r\n從這樣說我們就可以知道黃先生...,因為在 電信法 第 8 條 是這樣寫:\r\n
電信之內容及其發生之效果或影響,均由使用電信人負其責任。\r\n以提供妨害公共秩序及善良風俗之電信內容為營業者,電信事業得停止其使用。\r\n擅自設置、張貼或噴漆有礙景觀之廣告物,並於廣告物上登載自己或他人之電話號碼或其他電信服務識別符號、號碼,作為廣告宣傳者,廣告物主管機關得通知電信事業者,停止提供該廣告物登載之電信服務。
\r\n所以,你還覺得告的贏嗎?", + "title": "P2P 的負責問題" + }, + { + "id": "146", + "body": "剛剛在看 教育部電子報 發現的,看起來是用 WordPress (with almost-spring theme) 1.5 架的:教育部電子報哈燒話題。\r\n\r\n不過似乎架很久才六篇啊... (第一篇是 4/1?噗 XD)", + "title": "教育部的 Blog?" + }, + { + "id": "147", + "body": "看到 Jeremy Zawodny 用力諷刺 Web 1.0/2.0/2.1 就很好笑 XD\r\n\r\n當然,這很有可能是因為他這個禮拜爛了好幾台電腦不太爽的關係 XD\r\n", + "title": "Web 1.0/2.0/2.1" + }, + { + "id": "148", + "body": "喔,我還活著...\r\n\r\nhlb 太天位大長輩 凌晨的時候告訴我 Google 又在惡搞了,這次是 Google Reader:\r\n
 8761 10/08 02:34 收到 hlb          http://www.google.com/reader/lens/\r\n 8765 10/08 02:54 送給 hlb          速度好慢\r\n 8769 10/08 03:56 收到 hlb          十分盃塔\r\n 8770 10/08 03:56 送給 hlb          ...
\r\n呃,不只慢 (幹幹,超慢啊),還很難用 XD 而且我把 Bloglines export 出來的 opml 塞進去,就告訴我有問題 :~ 所以我還是繼續用 Bloglines 好了...\r\n\r\n如同 ijliao 太天位大長輩Google Reader 這篇所說的:\r\n
到目前為止,最 Beta 的 Google Beta Service :X
\r\n以這種水準來說,看起來的確是這樣啊...", + "title": "Google Reader" + }, + { + "id": "149", + "body": "Bruce Schneier 提到了這篇 SMS Denial-of-Service Attack。\r\n\r\n他所引用的 Exploiting Open Functionality in SMS-Capable Cellular Networks (PDF) 猜測,在曼哈頓地區以每秒 165 msgs 的速度送出,就足以塞滿網路使得 voice 的部分擠不進來。\r\n\r\n毫無疑問的,這又成為恐怖攻擊的目標... @_@", + "title": "SMS DoS" + }, + { + "id": "150", + "body": "在 mozillaZine 看到的消息:Mozilla Firefox 1.5 Beta 2 Released,等下下載回來裝看看...\r\n\r\n在 Unofficial Firefox 1.5 Beta 2 changelog 這頁列出了 Beta 1 到 Beta 2 所修改/新增的項目,看了一下似乎沒什麼特別的...\r\n\r\n在 Mozilla Firefox Project 這頁可以下載 1.5 Beta 2。", + "title": "Mozilla Firefox 1.5 Beta 2" + }, + { + "id": "151", + "body": "前幾天就有不少媒體報導 InnobaseOracle 買下來,我只是覺得 Innobase 這家公司好像很熟,可是幹嘛跟 MySQL 做比較 XD (其實我沒有仔細看,前幾天忙跳槽的事情,很多東西看個標題而已...)\r\n\r\n直到看了 Jeremy Zawodny 這篇 Oracle buys Innobase. MySQL between rock and hard place? 後,我才突然把 Innobase 與 MySQL InnoDB 的關連想起來 XD\r\n\r\n然後我才馬上理解 InnobaseOracle 買走之後對 MySQL 的影響... row-level locking + transaction 啊~~~", + "title": "MySQL InnoDB" + }, + { + "id": "152", + "body": "Robert Scoble (如果你不知道他是誰,在 Wikipedia 上面有些說明,很簡單的解釋:他是 Microsoft 的招牌 Blogger) 把 Blog 從 Weblogs (原來在 http://scoble.weblogs.com/) 跳槽到 WordPress.com (在 http://scobleizer.wordpress.com/):Time to switch to WordPress。\r\n\r\n看文章內所說的內容,他好像抱怨原來的 comment 功能常常爛掉,於是大家轉用 mail 跟他討論,害他覺得很 !@#$%^... :p\r\n\r\n2005/10/15 Update:看起來他的 theme 是特製的,跟原來的 blog 很像啊 :p 果然是長輩才有的待遇...\r\n\r\n2005/10/18 Update:結果有人跑出來問他怎麼換 Theme XD\r\n
Hey Robert,\r\nOn an off topic, how did you edit your theme or which one are you using? It doesn’t look like any of the standard ones that I have access too?\r\n\r\nTIA\r\nMolly
\r\n以及:\r\n
Hi, I like your template. But how to activate or upload your template? thanks & regards, zhaol
", + "title": "Robert Scoble to WordPress.com" + }, + { + "id": "153", + "body": "在 mozillaZine 看到 Firefox 1.5 RC1 預定在 10/28 出爐的消息:Mozilla Firefox 1.5 Release Candidate 1 Set for 28th October。\r\n\r\n原文在 Firefox/Thunderbird 1.5rc1 and Gecko 1.8rc1 are quickly approaching 這裡。", + "title": "Firefox 1.5 RC1 預定時程" + }, + { + "id": "154", + "body": "前幾天重灌實驗室電腦時,發現 Vim 已經出到 6.4 Beta,結果沒幾天就在 Slashdot 上看到 6.4 發行: Vim 6.4 Released。\r\n\r\n不過... Vim 的進階功能用的不多啊 :~", + "title": "Vim 6.4" + }, + { + "id": "155", + "body": "在 Boing Boing 看到超搞笑的東西:Automatic abusive language detector for EULAs。\r\n\r\nEULAlyzer 會分析 EULA 裡面「有趣的部分」,然後將「有趣的部分」標示出來提醒使用者。如果覺得好用的話還可以花 USD$19.95/year 購買 EULAlyzer Pro XD", + "title": "EULAlyzer" + }, + { + "id": "156", + "body": "剛剛看到 FT3: a full text indexer and search engine 這個東西,很明顯是個以 SQLite 為後端資料庫惡搞出來的軟體,用最簡單的方法將所有的字切開,塞到 Database 裡,當需要查詢的時候暴力法用 SELECT 硬幹出來 :p\r\n\r\n我還是用 MediaWiki 來管理文件資料好了,至少不用自己套用這類東西寫搜尋的程式碼 XD", + "title": "FT3: a full text indexer and search engine" + }, + { + "id": "157", + "body": "這陣子發現 Firefox 看 Wikipedia 的圖片老是出不來,按 Reload 按半天也沒用,本來一直以為是 1.5 Beta 1 的關係,可是到了 Beta 2 還是一樣,我就在想是不是我的問題... 只是想半天也想不出來。\r\n\r\n剛剛突然想到是不是在 Adblock 裡不小心設的太寬,於是誤擋了 Wikipedia 的圖片,結果發現某些圖片被擋,像是 Nineteen Eighty-Four 這條裡右邊的圖,因為 url 是:\r\n
http://upload.wikimedia.org/wikipedia/en/thumb/e/e9/...
\r\n而我擋:\r\n
ad.*
\r\nokay,找到原因了,是因為 upload.wikimedia.org 炸了 :p 改成 http://ad.* 果然就正常了 XD", + "title": "Adblock" + }, + { + "id": "158", + "body": "居然在 Bruce Schneierblog 上看到這個:Phishing Without Computers,裡面所引用的新聞是:Beijingers fall victim to SMS scam。\r\n\r\n\"\"\r\n\r\n啊,這類畫面好熟悉的呢 @_@", + "title": "Phishing over SMS" + }, + { + "id": "159", + "body": "在 Boing Boing 上看到有人去翻 .com 的註冊資料 (我猜是 Whois),把最早註冊的一百個 .com 列出來:100 oldest .COM names in the registry,引用的網址在 THE 100 OLDEST CURRENTLY-REGISTERED .COM DOMAINS 這裡。\r\n\r\n看起來真慘烈,不是被買掉了就是 byebye 了 :p 不過 ISC.COM 居然不是被 Internet Systems Consortium, Inc. 註冊,呃...", + "title": "一百個最早註冊的 .com" + }, + { + "id": "160", + "body": "在 Joi Ito 的 blog 上看到的:Microsoft launches open source licenses,引用了 Tim O'ReillyDanese Cooper 的文章。\r\n\r\n在阿姆斯特丹舉辦的 EuroOSCON 上,Microsoft 提出了五個新的 license (三個主 license 以及兩個「變型」):Microsoft Permissive License (及 Microsoft Limited Permissive License)、Microsoft Community License (及 Microsoft Limited Community License)、Microsoft Reference License。\r\n\r\n依照 Tim O'Reilly 的說法,第一種 license 接近於 BSD license (我猜測他所指的是 New BSD License),第二種接近 Mozilla Public License (有 1.01.1),而最後面一種則是只能看不准動的 license:\r\n
The permissive license is most like the BSD license; the community license is most like the Mozilla license; and the reference license is a \"look but don't touch\" license. The permissive and community licenses have variations that limit source distribution to the Windows platform.
\r\n而且他看過 non-limited license (應該是指前兩個 license) 之後,他覺得很有機會通過 OSI 確認為 Open Source License。(也就是符合 The Open Source Definition)", + "title": "Microsoft 所提出的 Open Source License" + }, + { + "id": "161", + "body": "這陣子到處在推 Wiki 做文件管理,發現真正能用的 Wiki Software 只有 MediaWiki,這大概是因為實際上遇過那麼大的規模 (Wikipedia) 才知道哪邊要做最佳化 :p\r\n\r\n在安裝的時候看到可以使用 memcached 存放 Cache,只是沒有仔細去看是存什麼,可能是放 MySQL query result 或是把編譯好的頁面存起來 (節省 Wiki Formatting -> html 的時間)。", + "title": "到處推 Wiki..." + }, + { + "id": "162", + "body": "本來一直要寫在 Blog 上的,不過這件事情到剛剛才算有個結果。(弄了一個多月...)\r\n\r\n先強迫自己先在 Blog 上提出來,這樣才會有壓力去寫... 圖片在 Flickr 上有放:7-11 便當外蓋問題 (2005/10/04) 這裡,然後我再說 7-11 處理過程的問題。\r\n\r\n然後有兩段錄音檔,一段是跟門市的對話,另外一段是剛剛跟業務主管、門市的對話。前者的雜音很大,後者還沒轉檔,不過是在比較安靜的角落講,所以效果應該會比較好。晚點會放上來。", + "title": "7-11 便當塑膠外蓋問題" + }, + { + "id": "163", + "body": "Flock 出版了,將常見的一些 Social Service 整合進 Firefox 再 release 出來:Firefox-based Social Browser Flock Launches。\r\n\r\n但實際上的情況是,原來的 Firefox extensions 大多數都不能用了... =_=\r\n\r\n我可能會去玩看看 Outfoxed,這是透過德國的 University of Osnabrück 所發展的 \"Trusted Metadata Distribution Using Social Networks\" 理論,做到這些事情:\r\n\r\n更重要的是,他只是一個 open source extension,如果你覺得不好用的話你很容易修改,不用像 Flock 一樣直接去改 Software Source :)\r\n\r\n我晚點會把使用的心得寫一寫吧?:p\r\n\r\n2005/10/23 Update:這個 extension 常爛掉 XD", + "title": "Flock" + }, + { + "id": "164", + "body": "在 Slashdot 上報導了加州某所學校因為預設老師的密碼所造成的資料洩漏問題:Generic Passwords Expose Student Data。\r\n\r\n其實國內也有很多類似的鳥蛋問題,但是他們都會推卸責任給使用者 (在上面的新聞裡面就是教師),認為這是使用者沒有修改密碼。\r\n\r\n但這是錯的 - 就如同 bb.nctu.edu.tw 對於研究生帳號的預設密碼設計 - 預設密碼就是帳號名稱。在今天 Open Proxy 夠多,不可能擋得完的情況下,有心人甚至可以寫程式幫你把整個系統的密碼改光光...\r\n\r\n比較好的方法當然是透過實體認證 (學生證、身份證、...) 領取帳號與預設的亂數密碼。另外,在已經有某套可以信賴的認證基礎時,可以利用現有的認證架構提供服務...。", + "title": "預設密碼的問題" + }, + { + "id": "165", + "body": "昨天從 Blake 學長 那邊得知 PageRank 更新了,於是就把各幫眾的 PageRank 抓出來玩:\r\n
http://ashley.yichi.org/ has PageRank 4/10.\r\nhttp://ben.yichi.org/ has PageRank 0/10.\r\nhttp://blog.gslin.org/ has PageRank 5/10.\r\nhttp://blog.ijliao.info/ has PageRank 4/10.\r\nhttp://blog.yam.com/hrwang/ has PageRank 4/10.\r\nhttp://ccca.nctu.edu.tw/~hlb/articles/ has PageRank 6/10.\r\nhttp://gslin.org/ has PageRank 5/10.\r\nhttp://hlb.yichi.org/ has PageRank 4/10.\r\nhttp://pesty.yichi.org/ has PageRank 5/10.\r\nhttp://slzzp.blogspot.com/ has PageRank 3/10.\r\nhttp://slzzp.info/ has PageRank 4/10.\r\nhttp://wiki.yichi.org/ has PageRank 4/10.\r\nhttp://yeh.yichi.org/ has PageRank 4/10.
\r\n看來大家用 link 拉來拉去還是很兇暴的啊... 我新的 blog.gslin.org 也五分了,hlb 的新 Blog 也四分了...\r\n\r\nbtw,昨天跟學長興起,用 Google 查了「Blog 行銷」這個字,噗!(當場兩個人邊笑邊喊幹幹)", + "title": "PageRank" + }, + { + "id": "167", + "body": "趁著機器掛掉的時候偷閒,用了一下 RSSor 這個使用介面超像 del.icio.us 的 Online RSS Aggregator。\r\n\r\n既然很像 del.icio.us,介面是很清爽啦,可是如果丟了一堆 feed 進去,我實在不能想像要怎麼用 XD 你可以參考我的 RSSor 頁面:RSSor /gslin。看起來好像很多對不對?可是我只丟了六七個 feed,其中兩個是 SlashdotBoing Boing... 如果我把 Bloglines 上百個 feed 通通丟進去,那版面不就炸了 :p\r\n\r\n(也許應該試看看丟進去會怎樣?反正大不了「砍掉重練」?XD)", + "title": "RSSor" + }, + { + "id": "168", + "body": "\"\" 還記得一個月前寫的「插座」這篇嗎?引用自 南宮博士 的文章「[PnP]電源插座的歷史遺憾」。\r\n\r\n但是有人嫌收束插座的時候很麻煩,很亂,而且並不是每個插頭都是大屁股,對吧 :p\r\n\r\n剛剛在 37signalsSignal vs. Noise 看到更讚的解決方案:360 Electrical: Great design XD\r\n\r\n原產品在 360 Electrical 這裡,看起來也還沒上市?", + "title": "插座" + }, + { + "id": "169", + "body": "11/1 的時候來更新 Mozilla Firefox 吧:Mozilla Firefox 1.5 Release Candidate 1 Now Due on November 1st。", + "title": "Mozilla Firefox 1.5RC1:11/1" + }, + { + "id": "170", + "body": "分好幾塊,一塊是必修課程的 (主要是 Network Programming 吃重),一塊是老闆要我們看的 Elliptic Curve (要先看 Discrete Logarithm over Finite Field),然後還有合併後系計中的幾個架構 (CMS、Mailing List、Ports),還有 Firewall code 要寫 o_O\r\n\r\n因為等下要上 Seminar,所以我等下再修改這篇文章... XD (突然想到 7-11 的也還沒寫)", + "title": "最近很忙" + }, + { + "id": "171", + "body": "FreeBSD 對於 FIFO (pipe) 不會設 POLLHUP 的問題:kern/76144: poll doesn't set POLLHUP when FIFO is closed 以及 kern/76525 : select() hangs on EOF from named pipe (FIFO),bde (@freebsd.org) 在後面有出來解釋這個鳥蛋問題...\r\n\r\n看起來是不用奢望了 :p", + "title": "FreeBSD 對於 FIFO 的 POLLHUP 問題" + }, + { + "id": "172", + "body": "keso 這篇「三言二拍:blog需要中文名吗?」寫的很... 精闢!也許應該來想看看 \"WordPress\" 要翻什麼好了...\r\n\r\nPS:這陣子看到某些中文書,再看到這篇講的內容,心中感觸很多啊 XD", + "title": "中文翻譯" + }, + { + "id": "173", + "body": "今天看到一堆超有趣的文章:\r\n\r\n這比起我今天看 SA Demo 還好笑啊 XD", + "title": "今天看到的文章" + }, + { + "id": "174", + "body": "在 Mozilla Developer News 看到 1.5RC1 and 1.5RC2 Schedules,依照估計會在 11/11 (但是後面有一句 \"depending on the feedback from RC1\"),所以... :p\r\n\r\n1.5 用到現在很明顯可以感覺到比 1.0 快不少,不過可以用的 extension 就少很多了,還好 Adblock、Google Pagerank Status、Undoclosetab 這幾個有 patch 或是可以用硬幹的方式在 1.5 上跑...\r\n\r\nPS:之前沒發現可以用 Nightly Tester Tools 覆寫 Undoclosetab 的 maxVersion 時天天幹到翻,因為我常常不小心按到 Ctrl-W,然後就開始罵「!@#$%^」...", + "title": "Mozilla Firefox 1.5RC1 與 RC2 的消息" + }, + { + "id": "175", + "body": "Taiwan.CNET.com 看到的:.tw泛用型英文網名全面開放註冊,不過我發現 tw 的 whois server 全死了?hmmm...", + "title": "開放 .tw 申請" + }, + { + "id": "176", + "body": "在 Slashdot 上看到的消息:Google Paying for Firefox Installs,在 How much will I earn from referrals? 這頁這樣寫:\r\n
When a user you’ve referred to Firefox plus Google Toolbar runs Firefox for the first time, you’ll receive up to $1 in your account, depending on the user’s location.
\r\n這種推廣的方式 (裝 Google Toolbar for Firefox),感覺怪怪的... 有些人也覺得「會不會是我會錯意」:Bloggers bundle Firefox Toolbar。\r\n\r\n另外一則新聞是前陣子 Firefox 佔有率超過 10% 了 (我懶得找新聞連結了),Congratulation!(希望不要一直發 Security Patch :p)", + "title": "Google 推廣 Firefox 的方法?" + }, + { + "id": "177", + "body": "vmware 的 SCSI device 是模擬成 LSILogic 1030 Ultra4 Adapter (在 FreeBSD 上是 mpt0),不過在 6.0 下我發現抓的到 mpt0 但抓不到 da0,於是去找了一下 mailing list,看看有沒有人有類似的情況...\r\n\r\n早在七月就有人 report 過了,只是一直沒有人去修,看起來不是很多人用 vmware 的 SCSI interface:[mpt] 6.0-BETA1 mpt driver not working under VMware ESX 2.5.1。\r\n\r\n不知道有沒有機會修好咧...", + "title": "FreeBSD 6.0 裡 mpt0 (SCSI card on vmware) 的地雷" + }, + { + "id": "178", + "body": "FreeBSD 6.0 一延再延,除了一開始 BETA 的時候不斷修正外,RC1 推出後大家等 RC2,拖了老半天,最後決定跳過 RC2,直接 release。但最後也是拖了好幾天才正式公告出來 (也就是 ijliaoFreeBSD 6.0 這篇,cvs tag 打下去好幾天卻沒有動靜)。\r\n\r\n正式的公告在 FreeBSD 6.0-RELEASE Announcement,除了 ftp 下載外,還可以透過 Bittorrent 下載。這也是第一個官方正式提供 Bittorrent 下載的版本:Index of ftp://ftp.freebsd.org/pub/FreeBSD/torrents/。\r\n\r\n(之前的版本屬於實驗性質:5.4 在 Index of /~kensmith/5.4-torrent、5.3 在 Index of /~scottl/5.3-torrent、4.11 在 Index of /~kensmith/4.11-torrent)\r\n\r\n除了 /etc/rc.d/ 的大幅改變外,kernel 的幾項改變也很重要,像是 options SCHED_ULE 終於可以用了 (5.4 的 SCHED_ULE 還是不穩定),而 options PREEMPTION (for kernel threading) 也在 GENERIC 出現了。另外 options CPU_ENABLE_SSE 也拔掉了,改由系統判斷是否可以使用 (如果真的不想使用 SSE,可以用 options CPU_DISABLE_SSE 強制關閉)。\r\n\r\n6.0 另外一個優點是穩定性變好了。之前 netnews 跑 5.4 遇到 UFS1 有問題必當,所以每次 panic 後一定要 fsck -y 從頭到尾掃過一次後才能開起來,或者 downgrade 到 5.3,但 5.3 fxp 的 link0 (download the microcode to the chip,man 4 fxp) 又不太穩定,偶而會當掉...\r\n\r\n在 Library 的部分,常用到的 gethostby*、getnet*、getproto*、getserv* 都 thread-safe 了。\r\n\r\n在 Application 的部分,portsnap 在系統內就有,不需要額外裝。pgrep 與 pkill 也內建進系統,可以用 pkill -U nobody 送 signal 15 給所有 nobody 的 process (以前是裝 sysutils/skill 來用)。最後一個,觀察很久的 WPA Supplicant 也進來了,所以...\r\n\r\nPS:雖然官方宣稱 5.3 可以升級到 6.0,不過實際上在升級時會遇到 include 的問題,我是從 5.3 升到 5.4 再跳到 6.0 的。", + "title": "FreeBSD 6.0" + }, + { + "id": "179", + "body": "ICOS 2005Jeremy Zawodny 講兩個 Session:11/10 星期四的 Open Source and yahoo -- \"Remix\" to meet the needs, Web 2.0 company 與 11/12 星期六的 High Performance MySQL,看主辦單位所排的時間,兩個 Session 都不太長。\r\n\r\n(hlb 太天位大長輩 說他打算問 Jeremy Zawodny 什麼時候要升級到 Web 2.1?XD)\r\n\r\nPS:在他的 Blog 上也提到準備要飛來台灣了:Heading to Taiwan for ICOS 2005。", + "title": "Jeremy Zawodny (ICOS 2005)" + }, + { + "id": "180", + "body": "在 MathWorld 看到的新聞:RSA-640 Factored。\r\n\r\n310 7418240490 0437213507 5003588856 7930037346 0228427275 4572016194 8823206440 5180815045 5634682967 1723286782 4379162728 3803341547 1073108501 9195485290 0733772482 2783525742 3864540146 9173660247 7652346609\r\n=\r\n1634733 6458092538 4844313388 3865090859 8417836700 3309231218 1110852389 3331001045 0815121211 8167511579\r\n*\r\n1900871 2816648221 1312685157 3935413975 4718967899 6851549366 6638539088 0271038021 0449895719 1261465571\r\n\r\nRSA-640 的因數分解跟上次 RSA-576 一樣是用 General Number Field Sieve (GNFS),這次的分解用了八十顆 Opteron 2.2GHz,共花了五個月的時間 (這不是指 CPU time,而是實際的時間)。\r\n\r\n原始的文章在這:We have factored RSA640 by GNFS.。", + "title": "RSA-640 因數分解" + }, + { + "id": "181", + "body": "Robert ScobleeBay 的個人商店也開始提供 RSS 了:eBay stores offers RSS,用 Bloglines Preview 看了一下,不錯啊 :p", + "title": "eBay 提供 RSS" + }, + { + "id": "182", + "body": "看到 clsung 這篇 bogofilter 亂談 才發現我好像欠某長輩 bogofilter document 很久了 :p 查了一下,我是從六月中的時候開始用 bogofilter,七月中的時候把 KKcity 的 Mail System 也加上 bogofilter 過濾。\r\n\r\n我是裝 mail/bogofilter-qdbm,因為 mail/bogofilter-sqlite 只要 wordlist 超過 1xMB 就會寫不進去,不知道為什麼 :p 而且 qdbm 的速度很快 (只比 cdb 慢:Report of Benchmark Test),所以就用 bogofilter-qdbm 吧 :p\r\n\r\n在 .procmailrc 裡面設定:\r\n
# bogofilter\r\n:0fw\r\n| /usr/local/bin/bogofilter -e -p -l
\r\n.muttrc 裡面設定:\r\n
macro index X \"<pipe-entry>formail -s bogofilter -s\\n<delete-message<\" \"mark as spam\"\r\nmacro index Z \"<pipe-entry>formail -s bogofilter -n\\n\" \"mark as non-spam\"
\r\n配合 postfix 過濾時 master.cf 的部分內容:\r\n
\r\nsmtp inet n - n - - smtpd -o content_filter=bogofilter:\r\nbogofilter unix - n n - - pipe flags=FR user=nobody:mail\r\n argv=/usr/local/sbin/bogofilter.sh -f ${sender} -- ${recipient}
\r\n其中 /usr/local/sbin/bogofilter.sh 是從網路上抄來的,長這樣:\r\n
#!/bin/sh\r\n/bin/rm /tmp/bogofilter-now\r\necho $$ > /tmp/bogofilter-now\r\nCAT=/bin/cat\r\nFILTER=/usr/local/bin/bogofilter\r\nFILTER_DIR=/var/spool/bogofilter\r\nSENDMAIL=\"/usr/sbin/sendmail -i\"\r\n# Exit codes from <sysexits.h>\r\nEX_TEMPFAIL=75\r\nEX_UNAVAILABLE=69\r\ncd $FILTER_DIR || { echo $FILTER_DIR does not exist; exit $EX_TEMPFAIL; }\r\n# Clean up when done or when aborting.\r\ntrap \"rm -f msg.$$\" 0 1 2 3 15\r\n# bogofilter returns: 0 for spam; 1 for non-spam; 2 for I/O or other errors.\r\n$CAT | $FILTER -d $FILTER_DIR -p -e > msg.$$\r\n$SENDMAIL \"$@\" < msg.$$
\r\n其中 /var/spool/bogofilter 裡必須有 wordlist.qdbm。\r\n\r\n詳細的說明晚點再寫。\r\n\r\n另外提供我自己的 wordlist.qdbm 讓大家用好了,如果不想自己花兩三天 train 的話:http://files.gslin.org/bogofilter/wordlist.qdbm。", + "title": "bogofilter" + }, + { + "id": "183", + "body": "在 Slashdot 看到 Firefox 1.5 RC2 已經可以透過 Help 裡的 Update 取得,或是直接到 http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/1.5rc2/ 取得 binary:Firefox 1.5 RC2 Available。", + "title": "Mozilla Firefox 1.5 RC2" + }, + { + "id": "184", + "body": "用 Technorati 找 ICOS,Jeremy ZawodnyICOS 2005 上講的 High Performance MySQL 已經有人放出 mp3 可以讓人下載了:ICOS 第三天:High Performance MySQL。\r\n\r\n除了聲音有點小以外,其他的倒是還好。講的很淺,都是研究過 MySQL Performance 的人應該都知道的東西。\r\n\r\nPS:因為網站上的連結用的是相對路徑 (wp-content/icos5.mp3),所以你需要自己改 url,把 hostname 到 wp-content 中間的 url 砍掉就可以了。\r\n\r\nPS2:我在 這裡 有 mirror 一份,26917581 bytes (約 26MB),MD5 為 04355bd3b05b69875c75869ce6edbd69,SHA-1 為 c4eda6dc36fd341e3d458c3d333e5c0b36861813。", + "title": "Jeremy Zawodny 的 High Performance MySQL" + }, + { + "id": "185", + "body": "2005 年的年底要補一秒,以維持時間的準確,於是就會有像標題所寫的情況出現 XD\r\n\r\n這是在 digg 看到的新聞:2005 last minute to be of 61 seconds,原來的文章在 The Leap Second 這裡。\r\n\r\nMfrosty 的 comment 超好笑 XD\r\n
10...9...8...7...6...5...4...3...2...1.....1...Happy new year!
", + "title": "2005 年 12 月 31 日 23:59:60" + }, + { + "id": "186", + "body": "很奇怪,我在 Group.NCTU.edu.tw 上面寫得很清楚:\r\n
相關的程式您可以在 OpenSVN 上的 https://opensvn.csie.org/traccgi/group/trac.cgi/browser/ 取得。
\r\n為什麼還是常常有人寫信來跟我要程式呢... 前幾次還很客氣的回信,告訴對方在 opensvn 上有,後來乾脆當作沒看到信件...\r\n\r\n我剛剛去看了一下 svn repository,除了帳號密碼沒放以外,其他的都有 commit 進去吧 (包括網頁上的 PHP)。", + "title": "Group.NCTU.edu.tw 的程式" + }, + { + "id": "187", + "body": "\"\" 圖有點小,點進去以後還是要選 ALL SIZES 看原圖。最上面那段是這樣寫:\r\n
If you are using Internet Explorer for Mac, we recommend that you use another browser to have an optimal experience on MSN.
\r\n這是從 Digg 看到的新聞:Microsoft Recommends Non-IE Browser!,相當的... :p", + "title": "MSN 網站給 Mac 用戶的建議 - 不要用 IE" + }, + { + "id": "188", + "body": "在首頁上沒寫 (首頁上有出現 :p),不過在 Yahoo!奇摩服務總覽 這頁已經列出來了,應該算是公開測試了,正式的名稱叫 Yahoo!奇摩部落格。\r\n\r\n\"\"\r\n\r\n簡單的摸了一下,感覺的出來功能還是很粗糙 (標題居然只能 24 個字?喂喂...),而且速度頗慢 (不知道是主機慢還是線路慢,見後面的說明),如果這樣下去的話大概沒什麼機會跟 無名小站 Blog 比 :p\r\n\r\n不過值得注意的一點是 tw.blog.yahoo.com (203.84.202.114) 不是放在 HiNet 機房?而且從國內幾個點 traceroute 過去全部都是走到國外再回來,透過 APNIC 查到的資料 (Query the APNIC Whois Database),以及 TWNIC 查到的資料 (IPv4核發分配情形) 也顯示這個 IP 是 Yahoo (not Yahoo! Kimo) 直接申請的,但是還沒跟國內交換好?", + "title": "Yahoo! Blog" + }, + { + "id": "189", + "body": "在 薄荷 那邊看到 Numa Numa Dance 後想要找 wmv 的版本 (或是其他品質更好的版本),結果沒想到找到這個:Numa Numa - Wikipedia, the free encyclopedia。", + "title": "Numa Numa Dance" + }, + { + "id": "190", + "body": "Update 3mattChangeset 3089 - Mystery of the disappearing post solved, fixes #1879 修正了。\r\n\r\nUpdate 2:其實不是 matt 造成的,而是 ryan commit 的 code 造成的,原因是他拿 local time 跟 GMT time 比較,造成新的文章會被認為是 \"in the future\",而只有 login 的人才能看... 在美加地區的人大概沒感覺 (因為在格林威治西邊),但在歐洲與亞洲地區的 beta tester 應該會有人發現問題才對?Anyway,我在 Ticket #1879 changeset 3001 use local time, but compare to GMT 已經送出 patch 了,不知道會不會修...\r\n\r\nUpdate:我能看是因為我有 login (所以有送出正確的 Cookie),而不是 Firefox 的原因...\r\n\r\n如果您看不到敝站的文章 (包含了 IE 與 Safari),您可以直接看首頁的文章,或是改用 Firefox 1.5,這是因為 WordPress 1.6-ALPHA-2-still-dont-use 被改到沒有什麼人知道是什麼原因造成的,請參考 /trunk/wp-settings.php (log) - WordPress Trac,這樣您就會知道最近 matt 改的有點亂,於是就會造成靈異現象...", + "title": "看不到敝站的文章?" + }, + { + "id": "191", + "body": "在 digg 看到的:BSD wallpaper。站台在 daemonisch.be - Wallpaper für FreeBSD, NetBSD & OpenBSD 這裡,有提供 jpeg 與 png 的桌布可以下載,FreeBSD 還是以前那隻好看 :p", + "title": "BSD 桌布" + }, + { + "id": "192", + "body": "Google 也開始提供網站分析服務了:Google Launches Web Traffic Analysis Service,看起來是當作整合 Adwords/Adsense 的服務之一。\r\n\r\n不過現在 Google Analytics 好慢啊,大概是開放以後湧進一堆人去申請吧?\r\n\r\nUpdateijliao 這篇 Google Analytics 講到了有 Google Analytics Plugin for Wordpress 可以用 :p", + "title": "Google Analytics" + }, + { + "id": "193", + "body": "Update:SonyCD’s Containing XCP Content Protection Technology 這頁提供了有 Rootkit 的列表。\r\n\r\nSony 在 CD 裡面放 Rootkits 的事情在國外鬧的沸沸揚揚,有好幾個團體已經決定打官司控告 Sony,而且也有 病毒 & 木馬利用 Sony Rootkits 隱藏自己的程式,但國內除了 Taiwan.CNET.com 一篇標題看不出嚴重性的「Sony隱藏防拷軟體遭防毒廠商鎖定」,好像沒什麼人報導。\r\n\r\n如果你想知道事情的經過,Boing Boing 這篇 Sony anti-customer technology roundup and time-line 依照時間順序整理得相當完整。\r\n\r\n整件事情是從 Mark Russinovich 在測試 RookitRevealer 時發現他的系統內有異常而開始的:Sony, Rootkits and Digital Rights Management Gone Too Far。", + "title": "Sony Rootkits 事件" + }, + { + "id": "194", + "body": "這下更爆笑了,Sony 的 Rootkit 裡面居然用了 LAME (一個 MP3 Encode/Decode/blah/blah2 Project) 的 code (licensed in GNU LGPL):Sony Rootkit Allegedly Contains LGPL Software。\r\n\r\nUpdate:在 DVD Jon 的 Blog 上看到 Sony DRM rootkit saga 除了 LAME 以外,還發現 DVD Jon 寫的 FairPlay code。", + "title": "Sony Rootkit Software 用了 LGPL code" + }, + { + "id": "195", + "body": "廖長輩 丟 jabber 過來通知:PowerSquid lineup about to evolve,去 Amazon 查,應該就是這個了:Power Sentry Power Squid / Power Multiplier / Surger Protector / Circuit Breaker。\r\n\r\n來找在美國的人幫忙帶 XD", + "title": "Power Squid" + }, + { + "id": "196", + "body": "Sony Rootkit 會去查詢 connected.sonymusic.com、updates.xcp-aurora.com、license.suncom2.com 這些 record,於是利用 non-recursive query 就可以知道某台 DNS server 是否有 client 受到感染。\r\n\r\n這個意思是說,如果我的電腦被裝了 Sony Rootkit,而且 140.113.1.1 為我設定的 DNS server,那麼你可以在 140.113.1.1 找到這三個 record。用 non-recursive query 的意思是說,叫 DNS server 只在他所負責 (authorized) 以及目前 cache 的部分找,如果沒找到不需要連出去找 (也就是 recursively query)。\r\n\r\n在 Bruce SchneierStill More on Sony's DRM Rootkit 這篇文章裡面提到了 Kaminsky 利用 DNS non-recursively query 來估算中獎電腦的下界,結果數字大的令人驚訝,超過五十萬台 DNS server 都有:\r\n
The results have surprised Kaminsky himself: 568,200 DNS servers knew about the Sony addresses. With no other reason for people to visit them, that points to one or more computers behind those DNS servers that are Sony-compromised. That's one in six DNS servers, across a statistical sampling of a third of the 9 million DNS servers Kaminsky estimates are on the net.
\r\n請注意一件事情:像 168.95.1.1 這種超多人用的 DNS server 也只算到一筆,於是整個 HiNet ADSL 的用戶很大的一部份只被算到一次。也就是說,這篇文章暗示的數字其實遠超過五十萬。\r\n\r\nUpdateBoing Boing 這篇 Latest Sony news: 100% of CDs with rootkits, mainstream condemnation, retailers angry 指出了在事發之前,有人透過 Sony 網頁上的 feedback form 詢問有哪些 CD 是有保護機制,結果 Sony 回答:\r\n
By the end of fiscal 2005, 100% of Sony BMG titles released will contain this content protection technology. Please assume every one of our CDs are protected in this fashion.
\r\n這就可以解釋為什麼中獎的人這麼多了。", + "title": "Sony Rootkit 感染人數" + }, + { + "id": "197", + "body": "在 Slashdot 上看到的新聞,有人將王小雲女士的 paper 實做出來,包括 MD4 & MD5 Collision 的 C source code:MD5 Collision Source Code Released。\r\n\r\n而且速度遠超過王小雲女士當初所發表的時間:作者說他在 Pentium 4 1.6Ghz 的機器上攻擊 MD4 是瞬解,而 MD5 也只需要 45 mins。", + "title": "MD4 與 MD5 Collision 的 Source Code" + }, + { + "id": "198", + "body": "被發現 Rootkit 後,Sony 在他們的網頁上提供了移除的功能 (以 IE 的 ActiveX 提供),但是這個 ActiveX 會造成系統安全漏洞:\r\n\r\n愈補愈大洞啊 :p", + "title": "Sony 的移除程式有安全上的問題" + }, + { + "id": "199", + "body": "在 Digg 上面看到的:Wired Magazine: 'Digg Just Might Bury Slashdot'。\r\n\r\nDiggSlashdot 最大的不同點在於文章產生的過程:Slashdot 是透過人工審核的,而 Digg 則是透過評分系統 (在 http://www.digg.com/diggall 會有所有的文章),當夠多人 digg 後,就會自動上到主頁)。對於一個新聞網站來說,而這可以避免某些主觀想法所造成的問題。\r\n\r\n另外 Digg 的版面設計也遠遠比 Slashdot 簡潔,尤其是 comments 的部分 :)\r\n\r\n其實我們現在可以猜測 Digg 會在半年內幹掉 Slashdot :) 兩者的差異可以在 Alexa 的比較圖看出來:Related Info for: digg.com/。\r\n\r\nUpdate:在 Slashdot 上面也刊出了這篇文章:The Rise of Digg.com。", + "title": "Slashdot 與 Digg 的比較" + }, + { + "id": "200", + "body": "在 Digg 看到 Flash 版的 VNC Client:FlashVNC Released,原始作者發佈的網頁在 FlashVNC Released 這裡。\r\n\r\n依照作者的說法,由於安全性問題,你必須先下載 .swf,然後再拖進 IE 或 Firefox 1.5 RC2 裡面 (要以 file:/// 的形式出現),不過我在這兩個 browser 上都不能跑,不知道是什麼問題?", + "title": "FlashVNC" + }, + { + "id": "201", + "body": "Firefix 1.5 RC3 已經放出來了,用 RC2 的人只要選更新就可以抓到了 :)\r\n\r\n正式的說明在 What's New in Firefox 1.5 RC 31.5RC3 Available 寫的很清楚了,另外 mozillaZine 當然也提到了這件事情:Mozilla Firefox 1.5 Release Candidate 3 Available。", + "title": "Firefox 1.5 RC3" + }, + { + "id": "202", + "body": "在 Boing Boing 看到的:Amazon offers refunds for all Sony rootkit CDs。\r\n\r\nAmazon 不僅將 Sony Rootkit CD 下架,還將 主動 聯絡有購買 Sony Rootkit CD 的客戶,不論包裝是否已經拆開,他們都願意退還所有費用!(好吧,寄回去的運費好像不算在內)\r\n\r\n你可以在 http://craphound.com/amznxmpsonycd.txt 看到 Amazon 的通知信。\r\n\r\nUpdateSlashdot 也報導了這件事情:Sony, Amazon Detail Rootkit CD Buybacks。\r\n\r\nUpdate:please 提供資訊說 Amazon 的退貨服務可以透過網站上面列印出一張貼紙,由 Amazon 自己吸收 :p", + "title": "Amazon 接受 Sony Rootkit CD 退貨" + }, + { + "id": "203", + "body": "來一張目前 WordPress r3150 管理介面的 screenshot 給大家看:\r\n\r\n\"\"\r\n\r\n畫面愈來愈美觀,功能也愈來愈完整了...", + "title": "WordPress r3150 Screenshot" + }, + { + "id": "204", + "body": "Matt 提到了 wordPress.feedster.com,搜尋所有以 WordPress 架設的 Blog 文章:WordPress.Feedster。\r\n\r\n不過預設好像是只搜尋 WordPress.com 的文章,當搜尋後會出現 \"weblog_domain=wordpress.com\",拿掉以後就是搜尋所有 WordPress site 的文章了...\r\n\r\n如果直接用 \"weblog_domain=blog.gslin.org\" 就可以看到目前 Feedster 裡有存了哪些文章?不過下一頁 (Next) 的功能好像有點問題...", + "title": "WordPress.Feedster" + }, + { + "id": "206", + "body": "Slashdot 上看到 Richard Stallman 堅持自己的想法跟 UN Security 對峙:Richard Stallman Accosted For Tinfoil Hat。\r\n\r\n原文是 Friday, November 18: Richard Stallman Gets in Trouble with UN Security for Wearing a Tin-Foil Hat 這篇。\r\n\r\n呃,這些保全人員知道他們在對付誰嗎 o_O", + "title": "Richard Stallman 與 UN Security" + }, + { + "id": "207", + "body": "Boing Boing 看到的神秘新聞,Sony 除了願意提供 Spyware-free CD 以外,也提供了 MP3:Sony offers MP3s in replacement for rootkit CDs。\r\n\r\nSony 願意提供 MP3?現在是十一月不是四月沒錯吧,而且太陽還是從東邊出來... 現在是什麼情況 o_O", + "title": "Sony 更進一步的動作" + }, + { + "id": "208", + "body": "雖然早就知道 tagname 改成 2.0 Beta 1 了,不過剛剛在 Digg 上面也看到消息了:Wordpress 2.0 Beta 1 Released。在 trac 上面的 Changeset 3160 可以看到這項紀錄。\r\n\r\n先警告所有想從 1.5 升級上來的人,目前 2.0 Beta 1 仍然是不良品,除非你有打算在出事的時候跟他耗 (尤其是 DreamHostphp 是 cgi mode,造成 $_SERVER 裡一堆變數不一樣),不然我建議您還是別亂來 :p 在 WordPress Support 上的 WP Beta-1 released 也可以看到不少人發生問題 :p\r\n\r\n如果您真的想玩看看,祝您升級順利 :p 有事情不要找我,請到 trac.wordpress.org 上面送 ticket 處理,謝謝 :p", + "title": "WordPress 2.0 Beta 1" + }, + { + "id": "209", + "body": "WordPress 2.0 Beta 1 引入了 Akismet,一個 Antispam Service,這個 Service 需要一個 WordPress.com API key,我剛好有,所以我就裝起來測試看看。不過,即使測試了以後發現效果很好,我還是會換回 Spam Karma 2。\r\n\r\n主要的原因在於 Akismet 送出太多資訊了,$_SERVER 所有的東西都會送出去,這包括了 Cookie (Exactly What Data Are You Sending to Akismet?)。當然也就有人跑去 WordPress Support 上質疑 (askimet, wordpress, and cookies)。\r\n\r\n另外要補充的一點是,Akismet 是封閉式架構,你不知道這個黑盒子裡面到底再跑什麼... 即使再有效,我也不會想用,如同 Nopam 一樣。\r\n\r\nUpdate:鳥蛋一個,所有的 ping 與 trackback 都被 block,換回 Spam Karma。", + "title": "WordPress 2.0 Beta 1 - Akismet" + }, + { + "id": "210", + "body": "Matt 在他的 Blog 上說他們決定開放 WordPress.com 給所有人申請:WordPress.com Open。\r\n\r\n目前 WordPress.com 雖然是用 WordPress-mu,但可以看出來目前跟的很緊,幾乎所有的 Beta code 都有上去。而且目前穩定性看起來也還可以,不過如果完全開放後不知道會怎樣 :p\r\n\r\n不過,可以預期的是上面會有大量的 Spam Blogs 寄生... (Spam Blogs 可以參考 Wikipedia 對於 Splog 的說明)", + "title": "WordPress.com 開放申請" + }, + { + "id": "211", + "body": "在 Digg 上看到 Google 暫時停止 Google Analytics 的申請了:Google Analytics stops accepting signups with 234,725 accounts。\r\n\r\n在申請的頁面上也可以看到說明:\r\n
Thank you for your interest in Google Analytics!\r\n\r\nGoogle Analytics has experienced extremely strong demand, and as a result, we have temporarily limited the number of new signups as we increase capacity. In the meantime, please submit your name and email address and we will notify you as soon as we are ready to add new accounts. Thank you for your patience.
\r\nScale 不一樣果然就很容易爛 :p", + "title": "Google Analytics" + }, + { + "id": "212", + "body": "Digg 看到的瘋狂消息:Download WikiPedia。\r\n\r\n在 Wikimedia database dumps 這頁裡面有 Wikimedia 每一項計畫的 dumpfile (有些是 SQL export,有些是 XML export),當然,Wikipedia 也在內。\r\n\r\n不過檔案也太大了點吧 XD", + "title": "將 Wikipedia 下載到本機上" + }, + { + "id": "213", + "body": "在 Digg 看到的:Google Base Quickly Becoming A Source For Free Porn。\r\n\r\n由於 Google Base 的便利性,馬上就有不少色情站台在上面「登錄」了,在 Digg 上面有 link 可以看,我這邊就不轉錄了 :p\r\n\r\n不過原來的文章被 Digg 搞掛了,連上去時 WordPress 會跟你說 MySQL 連不到 XD", + "title": "Google Base 成為色情站台集散中心" + }, + { + "id": "214", + "body": "在 Digg 看到的,本來以為只有中國大陸這樣搞,剛剛才發現其他國家也這樣玩:This is how a government-filtered internet looks,原報導在 The RegisterThis is how a government-filtered internet looks。", + "title": "Internet Filtering" + }, + { + "id": "215", + "body": "剛剛發現 del.icio.us 改版了,最大的改變應該就是把 Popular 直接放在首頁上:\r\n\r\n\"\"\r\n\r\n另外 post 的時候顏色也改掉了,比較清楚,但是我覺得用暗藍色太誇張了 o_O:\r\n\r\n\"\"\r\n\r\n其他的到是還沒去注意 :p\r\n\r\nUpdate:剛剛注意到有個 daily blog posting (點進 settings 後,右邊 experimental 的部分),晚點來試看看...", + "title": "del.icio.us 改版" + }, + { + "id": "216", + "body": "據 Google Blogoscoped 說 Google Search 時出現的 News 可以 Expand/Collapse 了:Google Expand/ Collapse News Result。\r\n\r\n不過我剛剛測試了一下繁體中文版的部分,似乎沒有出現啊...", + "title": "Google 搜尋的改善" + }, + { + "id": "217", + "body": "在 Digg 看到有人用 AJAX 把 Wikipedia 搞成 \"Wikipedia Suggest\":AJAX + Wikipedia = More Powerful Wiki Searches。\r\n\r\n不過,玩了一下發現速度有點慢啊,該不會是又被 Digg 搞掛了吧 XD", + "title": "Wikipedia Suggest" + }, + { + "id": "218", + "body": "Sony Rootkit 的教訓告訴我們平常最好關閉 Windows Autorun 的功能。\r\n\r\n隨手找 \"Disable Autorun\" 就找到一篇 Engadget 的舊文章:How-To Tuesday: Disable AutoRun on Windows!,裡面有告訴你怎麼用 regedit 拔掉,不過 comments 15 提到的方法 (用 Group Policy 改) 好像比較好 :p", + "title": "關閉 Autorun 的功能" + }, + { + "id": "219", + "body": "在 IX blog beta 提到了 Torrentspy那顆種子最漂亮?BT 的 digg 機制。\r\n\r\n然而,昨天有人說:TorrentSpy distributing adware version of Rufus torrent client,大家自己考量看看吧。", + "title": "Torrentspy 的 Spyware" + }, + { + "id": "220", + "body": "隨便寫寫,開頭只先講幾個常用的 model,然後說明為什麼要用 libevent,然後舉個簡單的例子:\r\n", + "title": "Libevent 的使用 (簡介)" + }, + { + "id": "221", + "body": "Slashdot 上看到的新聞:GCC 4.1 Released。\r\n\r\n依照 Slashdot 的說法,這個版本終於可以將 Java code 編成 native code 了?聽起來就是個超惡搞啊 XD", + "title": "GCC 4.1 釋出" + }, + { + "id": "222", + "body": "在 Slashdot 上看到 Kazaa 在澳洲法院的命令下被迫修改 Search Function:Kazaa Forced To Modify Search Engine。\r\n\r\n不過 Digg 寫的更直接:Don't update your version of Kazaa XD", + "title": "Kazaa 被迫修改 Search Function" + }, + { + "id": "223", + "body": "在 Digg 看到的,Firefox 1.5 釋出時將會鼓勵使用者以各種方式向全世界的人推廣,告訴他們使用 Firefox 的好處:Firefox prepares for open-source marketing campaign。\r\n\r\n目前 Firefox 的佔有率大約是 10% 上下,不知道 1.5 出來以後會增加多少 :o", + "title": "Firefox 1.5 的推廣活動" + }, + { + "id": "224", + "body": "在 Digg 看到有人幫 Google Maps (現在叫 Google Local) 搞的電視廣告,我笑了 XD XD XD:Google Maps Commercial。\r\n\r\nLink 在 Google Video 上:http://video.google.com/videoplay?docid=-113021604239461824。\r\n\r\n請注意:這不是 Google 自己製作的廣告。", + "title": "惡搞 Google Maps 的廣告" + }, + { + "id": "225", + "body": "Google Blogoscoped 把幾個比較大的 Search Engine 輸入 keyword 的寬度拿出來比較:Does Size Matter?。\r\n\r\nMSN 330 pixel,Google 352 pixel,Ask Jeeves 365 pixel,Yahoo! 380 pixel。\r\n\r\n呃,平常在用沒什麼感覺...", + "title": "Search Engine 的 Input Size" + }, + { + "id": "226", + "body": "在 Slashdot 上看到 Firefox 1.5 裡面引入了 Canvas:Firefox 3D Canvas FPS Engine。\r\n\r\n目前有支援 Canvas 的 Browser 包括了 Firefox (1.5,不確定 Deep Deer Park 有沒有)、OperaSafari,拿來做一些 3D Layout 似乎可以嘗試看看 :)", + "title": "Firefox 1.5 的 Canvas" + }, + { + "id": "227", + "body": "剛剛在 Ptt 的 Browsers 板上看到 11/24 的時候有人做了一個 Findbook.tw 的 Firefox Search Plugins,放在 http://rapidshare.de/files/8082269/Findbook.rar.html,原始的文章在這篇:[-Fx-] 書籍比價(Findbook) search plugins。", + "title": "Findbook.tw 的 Firefox Search Plugins" + }, + { + "id": "228", + "body": "在 聯合服務中心 的網頁上看到這個:本年度借書量前六名。\r\n\r\n嗯,457 本?嗯?嗯?嗯?", + "title": "借書?" + }, + { + "id": "229", + "body": "在 Slashdot 看到有人打算立法,限制色情網站只能用某些 TCP/IP port,這樣才可以很方便地用 firewall 擋住:Ports for Porn - Using Firewalls to Block Porn。\r\n\r\n嗯,我喜歡這個 idea :p", + "title": "阻擋色情網站" + }, + { + "id": "230", + "body": "在 Boing Boing 看到有人放了十二個碟型天線,然後用程式去盯五千個頻道 XD:Man gets 5,000+ channels on 12 dishes。\r\n\r\n不過讓我笑出來的是這張圖,他居然這樣放 XD\r\n\r\n\"\"", + "title": "碟型天線" + }, + { + "id": "231", + "body": "平常是用 del.icio.us 的 Bookmarklet 整理連結,不過缺點就是慢 (要先連到 del.icio.us 上)。\r\n\r\n剛剛在 Goston's Blog 上看到了這個:[FF] del.icio.us 官方推出 Firefox Extension,於是我就跑去抓 Unofficial Version 的 delicious XD\r\n\r\n嘗試 Bookmark 一個 url,頗不錯啊,過一陣子如果還在用的話再說好了 :p", + "title": "del.icio.us 的 Firefox Extension" + }, + { + "id": "232", + "body": "在 del.icio.us 首頁上 (旁邊的 Popular) 看到這個:Try Ruby,看起來應該是用 AJAX 的方式將輸入的命令丟給 server,然後再把輸出結果丟出來,於是你就可以在 Browser 上執行 Ruby Command 了 :p\r\n\r\n不知道有沒有人做 Perl 以及 Python 的...", + "title": "Try Ruby" + }, + { + "id": "233", + "body": "Firefox 1.5 正式 Release:Firefox - Rediscover the web。\r\n\r\n因為以前就在用 1.5 Beta 了,所以裝起來以後沒什麼感覺,sorry XD", + "title": "Firefox 1.5 正式推出" + }, + { + "id": "234", + "body": "先給檔案,除了原作者提供的網頁外,我也提供 Local Mirror 以免抓不到:09-MYT.rm13-TheSnowVillageLaine.rm。\r\n\r\n這次又是 PttHate 板暴動:「[超幹]周杰倫的麥芽糖前奏完全抄襲」。原文已經被刪除了,不過從奇怪的地方拿到原文 o_O\r\n
作者: gamearts (GRANDIA本命) 看板: Hate\r\n標題: [超幹]周杰倫的麥芽糖前奏完全抄襲\r\n時間: Thu Dec 1 15:05:08 2005\r\n\r\n\r\n今天聽廣播的廣告一直在猛打JAY的這首『麥芽糖』\r\n\r\n奇怪怎麼愈聽愈不對…?這個前奏明明就是GRANDIA中的配樂…\r\n\r\n翻箱找出GRANDIA的音樂原聲帶,果不其然…\r\n\r\n周杰倫『麥芽糖』的前奏根本就完全抄襲\r\n\r\n岩垂德行老師一手包辦的GRANDIA系列一代的遊戲配樂\r\n\r\nDISC 2的第13首曲目『雪村』(The Snow Village Laine)\r\n\r\n雖然這個遊戲不像永邦抄襲的AIR那麼紅啦\r\n\r\n不過好歹是我心中至今唯一能超越FF系列的嘔心瀝血之作\r\n\r\n原來周董也喜歡這遊戲?難道我該高興嗎…\r\n\r\n底下附上兩首曲子的連結,各位聽聽看就知道我有沒有誤會JAY了\r\n\r\n(都已轉成32K低音質的RM檔,單純作為比較之用)\r\n\r\n周董的麥芽糖 http://home.anet.net.tw/gamearts/09-MYT.rm\r\nGRANDIA的配樂 http://home.anet.net.tw/gamearts/13-TheSnowVillageLaine.rm\r\n\r\n\r\n\r\n\r\n--\r\n※ 發信站: 批踢踢實業坊(ptt.cc)\r\n◆ From: 220.134.113.85\r\n推 ramirez:永邦二世 12/01 15:05\r\n推 laugher:新置底文 12/01 15:06\r\n推 pttcool:魯邦三世 12/01 15:06\r\n推 wolver:這篇能破泳幫嗎? 12/01 15:06\r\n推 StyerAug:幹  還真像~~~~~ 12/01 15:07\r\n推 tasogare:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:07\r\n→ StyerAug:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:09\r\n推 gayfunkgogo:幹你娘 模仿功力比小郭還好 12/01 15:09\r\n推 ibulondong: 怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:09\r\n推 TheDark: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:10\r\n推 omc: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:11\r\n推 yaoxyao: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:12\r\n推 isare:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:12\r\n推 dinggugu:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:12\r\n→ pttcool: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:12\r\n→ aqnf:還好... 12/01 15:12\r\n推 moboo: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:12\r\n推 three3: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:13\r\n推 howzencard: 怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:14\r\n推 gayfunkgogo:怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:14\r\n推 amou1030:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:14\r\n推 sumumu: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:14\r\n推 bainll: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:14\r\n推 pomin25:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:15\r\n推 mucho: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:16\r\n→ Fugax: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:16\r\n推 jenhau: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:17\r\n推 bzkid: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:17\r\n推 firingmoon: 怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:18\r\n推 guppys2005:這不是像吧 是一模一樣吧...... 12/01 15:19\r\n推 aaeL: 恩 給周董一點顏射瞧瞧 12/01 15:22\r\n推 coinage: [震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:23\r\n推 MashRoom:......還真的一模一樣...... 12/01 15:24\r\n→ MashRoom:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:24\r\n推 cosy:真的很像耶..... 12/01 15:25\r\n推 kvzhuang:[震怒] 幹您娘!周滷蛋的\"麥芽糖\"是抄襲GRANDIA! 12/01 15:28\r\n
", + "title": "又是抄襲:周杰倫的「麥芽糖」前奏" + }, + { + "id": "235", + "body": "這陣子透過「無名小站」當關鍵字連舊站的量增加很多 (應該是因為「瑋哥 Blog」的關係吧,用 GoogleYahoo! 查「無名小站」,那篇講無名不穩定的文章都緊接在官方站台的 entry 下)。\r\n\r\n剛剛在 維基百科 上也看到了無名的 entry:無名小站,不過似乎是六月的時候寫的,後來就沒在更新了 :p", + "title": "無名小站 (Wikipedia)" + }, + { + "id": "236", + "body": "在 Digg 看到的消息:LinkSys courts Linux hackers with WRT54G\"L\"。\r\n\r\nLinkSysWRT54G (Wikipedia 對 WRT54G 的介紹) 因為以 USD$60 提供了 4MB RAM + 16MB Flash,而常常被一些 Linux 玩家買回去重新塞自己做的 Flash :p\r\n\r\n在最新版的 LinkSys WRT54G (5.0) 因為改進到只需要 2MB + 8MB Flash,於是市場上就開始有收購的熱潮 :p 結果 LinkSys 跳出來說 LinkSys 還是會繼續提供 WRT54G (4.0) 給 Linux 玩家惡搞 :p", + "title": "LinkSys 將繼續提供 WRT54G (4.0)" + }, + { + "id": "237", + "body": "戰場又即將在法國爆發。\r\n\r\n在 Videolan 的網站這樣寫:\r\n
During the night of 22nd to 23rd December 2005, while everybody is preparing for Christmas, the French Parliament will rule about the \"DADVSI\" law. This vote will be made with minimal discussion, as an \"emergency\" has been declared on this law.
\r\n\r\nUpdateSlashdot 也報導了這項消息:France Hostile To Open Source Software?。", + "title": "法國版 DMCA - DADVSI" + }, + { + "id": "238", + "body": "Jeremy Zawodny 稍微介紹了 MySQL 5.1MySQL 5.1 Appears: Partitioning, Dynamic Plugins, and more...。\r\n\r\n等 Ports 有了以後找台來測試看看...", + "title": "MySQL 5.1" + }, + { + "id": "239", + "body": "這幾天把 Laptop (IBM X31 2672-IQV) 換成 FreeBSD 6.0,一方面當然是為了 SA 作業的需要,另外一方面是想要知道在 X-Window 下中文的部份到底可以出現多少東西 :p\r\n\r\n這幾天這樣玩下來發現很多東西結果比我料想中的好很多,在不太看 Document 的情況下 (這是壞習慣,請不要學了以後還一直跑到 386BSD 或是 #bsdchat 上面幹勦說某某東西不能用,結果只因為你沒看文件 XD) 到 /usr/ports/chinese/ 下猛裝 (尤其是字型,幾乎全裝上去了),然後把 locale 設定好,幾乎就都能用了 :p\r\n\r\nicewm 與 xcin2.5 + rxvt-devel (我知道會有人推薦 gcin,不過我還沒測試過) 一開始有些問題,後來找了一下發現 色兔子 早就寫過了:xcin root mode with icewm,照著兔子講的設定方式設定後幾乎沒什麼問題 (其實好幾年前就蠻穩定的了),用 kc15f 與 kc8x15 也沒有像以前會有殘影 (15 != 16 的關係),所以也不太需要 gugod-clean 了 :p\r\n\r\n再來是前幾天剛出的 Firefox 1.5,在 locale 正確的情況下裝起來就可以看中文、打中文 (輸入法的部份使用標準的 XIM),比起很久以前的 Mozilla Suite,呃... 我記得當初好多 hack 在跑 :p 另外預設的字型很棒,直接吃 Firefly 版文鼎字。\r\n\r\n其他的東西,大致上都是在系計中討論解決 (感謝長輩一長輩二),或是在我的 BBS 看板上問,都會有長輩 (長輩三長輩四) 伸出援手,所以一切順暢無比 :p", + "title": "將 Laptop 換成 FreeBSD 6" + }, + { + "id": "240", + "body": "Boing Boing 繼續在追蹤 Sony BMG Rootkit 的事情:Sony Rootkit Roundup IV。", + "title": "Sony Rootkit 事件" + }, + { + "id": "241", + "body": "\"\" Digg 看到 Sony 推廣 PSP 的惡行惡狀:Sony (或是 Sony 所委託的廣告公司) 僱用畫家在城市裡面到處亂塗鴉被發現 (Sony Caught Using \"Fake\" Graffiti to Promote PSP)。\r\n\r\n原文在 Sony's Fony Graffiti 這篇,你可以看到有其他的畫家直接在上面惡搞 XD\r\n\r\n這家公司的形象愈來愈...", + "title": "Sony 推廣 PSP 所使用的惡行" + }, + { + "id": "242", + "body": "在 Digg 上看到 Google Blocking Search Results Because of DMCA,依照他給的 link 搜尋,果然在最下面這樣寫:\r\n
In response to a complaint we received under the US Digital Millennium Copyright Act, we have removed 3 result(s) from this page. If you wish, you may read the DMCA complaint that caused the removal(s) at ChillingEffects.org.
\r\n在後面的這份文件裡 (KaZaA Owner Complains to Google (#5)) 可以看到 KaZaA 要求 Google 依照 DMCA 移除其他非官方 KaZzA site 的資訊:尤其是把 Spyware 幹掉的 KaZzA Lite :p", + "title": "Google Search Blocked by DMCA (KaZaA)" + }, + { + "id": "243", + "body": "從 Slashdot 上看到轉錄自 CNN 報導 台北 101 可能引發地震的新聞:World's Tallest Building Causing Earthquakes?Has tallest tower caused more quakes?。\r\n\r\n然後回頭過來找中文的報導 (你知道的,這幾天的新聞不能看,所以不要怪我都沒有看新聞啊 Q_Q):\r\n", + "title": "台北 101 可能造成更多的地震" + }, + { + "id": "244", + "body": "剛剛突然興起,想看看還有沒有其他人被 msi-team 與 qstr 這兩個詐騙集團打到,果然馬上就找到了:\r\n\r\n其實要找到幹剿文也不好找,因為用 Google 找都是 Spam XD\r\n\r\n另外我一直有種感覺,msi-team 與 qstr 這兩個團體背後是同一組人,因為手法、技術都很像。不知道什麼時候會被揭穿...", + "title": "瘋狂 spam 的 msi-team 與 qstr" + }, + { + "id": "245", + "body": "這是 Ptt 的網友寄給我的:(我不確定他願不願意公開名字,所以就暫時不寫出來了)\r\n\r\n\"\"\r\n\r\n大意是:\r\n
我們深深感謝您的好意\r\n現在正要進行相關的調查和對應手段
", + "title": "周杰倫「麥芽糖」前奏的後續發展" + }, + { + "id": "246", + "body": "雖然 Google 不願意透露 Gmail 是使用哪套防毒軟體,有人還是利用邪惡的方法 (把病毒丟進去看看有哪些被抓出來,然後再跟已知軟體的列表比較) 找出來了,Gmail 使用 SophosWhich Software Scans Gmail's Attachments?Gmail AntiVirus = Sophos。\r\n\r\n測試的報告在 這裡這裡,與 Sophos 完全符合。\r\n\r\n我本來以為 Google 會自己搞 (因為我覺得 Gmail 的量太大,傳統的作法可能不適合?),沒想到還是採用現有的 pattern 掃瞄 :)", + "title": "Gmail 所使用的防毒軟體" + }, + { + "id": "247", + "body": "在 Digg 看到的:Kill Firefox 1.5 with remote exploit,原文在 packetstormFirefox 1.5 buffer overflow。\r\n\r\n依照原文的說法,這次的 security issue 應該足以讓有心人士執行程式了。", + "title": "Firefox Security Issue" + }, + { + "id": "248", + "body": "這是 FreeBSD-performance 目前的討論:new benchmarks. WAS: FreeBSD MySQL still WAY slower than Linux。\r\n\r\n測試的環境是在本機上跑,主要的測試對象是 Thread Library,包括了:\r\n\r\n這幾個測試結果沒有什麼意外,速度最快的是 libthr (即 1:1 Threading)。\r\n\r\n另外因為上面的測試環境是打開 HTT 的情況下測出來的,所以有人建議關掉 HTT,而作者也再跑了一次,發現除了 libthr 快了一點點 (大約 2%) 以外,其他的都沒差。\r\n\r\n再來是有人提出 FreeBSD 上的 gettimeofday() 非常花資源 (這點在 David Xu 提供的 mysql ktrace log 裡面有說到),所以有人有建議修改 kern.timecounter.hardware (從 ACPI-fast 改成 TSC),不過作者好像還沒看到 :p\r\n\r\n再來是 kernel config file 裡面好像沒有用 SCHED_ULE?\r\n\r\n這個討論串還在跑,所以還可以看一看長輩們到底有什麼花樣可以玩...\r\n\r\nUpdate:開新的討論串在討論了:mysql benchmarks。另外 super-smack 這個程式是 Sasha Pachev 發展的,後來 Jeremy Zawodny 接手 (MySQL Super Smack),現在是 Tony Bourke 在維護 (Super Smack)。", + "title": "FreeBSD 6.0 MySQL Performance Tuning" + }, + { + "id": "249", + "body": "快三點半的時候 hlb 在 BBS 上丟 msg 過來:\r\n
 1594 12/10 03:24 收到 hlb          !!!!!!\r\n 1595 12/10 03:24 收到 hlb          yahoo 買了 delicious!
\r\n如標題所說的:(y.ah.oo!)\r\n
We're proud to announce that del.icio.us has joined the Yahoo! family.
\r\n不過更兇暴的是:\r\n
(We're also excited to be joining our fraternal twin Flickr!)
\r\n(開始幻想 Flickr + del.icio.us 的結合...)", + "title": "Yahoo! 買下 del.icio.us" + }, + { + "id": "250", + "body": "想要測試 MySQL Performance 的時候發現 Ports 裡面居然沒有 super-smack,於是就順手做進去了:[NEW PORT] benchmarks/super-smack: A benchmarking, stress testing, and load generation tool for Databases。\r\n\r\n一方面是測試 porttools 要怎麼用,另外一方面也是熟悉一下怎麼做新的 Port (好久沒做過了)。", + "title": "super-smack" + }, + { + "id": "251", + "body": "剛剛修正了無名相簿的備份程式 (很久前的 Project:http://hasname.com/backup/album/wretch/),其實只是修個兩行而已:Fix wretch album backup。", + "title": "無名相簿的備份程式" + }, + { + "id": "252", + "body": "I use databases/mysql50-{client,server} and use benchmarks/super-smack to test. There are 3*2*2*2 = 24 cases:\r\n\r\nThese benchmarking were tested on my laptop (IBM x31 2672-IQV, Pentium-M 1.5G with 512MB RAM), and powerd was disabled. Detail informations (dmesg, sysctl, and kernel config file) will post later.\r\n\r\nThe commands are:\r\n
for i in 1 2 3 4 5; do super-smack select-key.smack 10 1000 | grep select_index; done\r\nfor i in 1 2 3 4 5; do super-smack update-select.smack 10 1000 | grep select_index; done
\r\n

mysql-linuxthreads-libpthread-acpifast-ule+pre.txt

\r\nselect_index    20000   0       0       14097.47\r\nselect_index    20000   0       0       13741.43\r\nselect_index    20000   1       0       13704.01\r\nselect_index    20000   0       0       13626.05\r\nselect_index    20000   0       0       13769.32\r\nselect_index    10000   2       0       1891.63\r\nselect_index    10000   2       0       1758.65\r\nselect_index    10000   2       0       1836.00\r\nselect_index    10000   4       0       2058.71\r\nselect_index    10000   14      0       2050.05\r\n
\r\n\r\n

mysql-linuxthreads-libpthread-acpifast-ule.txt

\r\nselect_index    20000   1       0       12478.07\r\nselect_index    20000   0       0       13340.34\r\nselect_index    20000   1       0       13402.94\r\nselect_index    20000   0       0       13427.98\r\nselect_index    20000   0       0       13516.95\r\nselect_index    10000   2       0       3005.60\r\nselect_index    10000   2       0       3286.45\r\nselect_index    10000   2       0       3289.58\r\nselect_index    10000   3       0       3300.75\r\nselect_index    10000   3       0       3270.95\r\n
\r\n

mysql-linuxthreads-libpthread-tsc-ule+pre.txt

\r\nselect_index    20000   1       0       13638.09\r\nselect_index    20000   1       0       15204.89\r\nselect_index    20000   0       0       15126.16\r\nselect_index    20000   1       0       15199.22\r\nselect_index    20000   1       0       15111.09\r\nselect_index    10000   2       0       2079.97\r\nselect_index    10000   2       0       1914.26\r\nselect_index    10000   2       0       2154.83\r\nselect_index    10000   2       0       2089.02\r\nselect_index    10000   3       0       2151.76\r\n
\r\n

mysql-linuxthreads-libpthread-tsc-ule.txt

\r\nselect_index    20000   1       0       13799.12\r\nselect_index    20000   0       0       15007.75\r\nselect_index    20000   1       0       15016.11\r\nselect_index    20000   0       0       15021.71\r\nselect_index    20000   1       0       15034.78\r\nselect_index    10000   1       0       3561.01\r\nselect_index    10000   1       0       3554.91\r\nselect_index    10000   1       0       3554.55\r\nselect_index    10000   1       0       3563.48\r\nselect_index    10000   2       0       3521.84\r\n
\r\n

mysql-linuxthreads-libthr-acpifast-ule+pre.txt

\r\nselect_index    20000   0       0       12332.69\r\nselect_index    20000   0       0       13531.45\r\nselect_index    20000   1       0       13578.15\r\nselect_index    20000   0       0       13571.15\r\nselect_index    20000   1       0       13625.20\r\nselect_index    10000   2       0       1571.96\r\nselect_index    10000   2       0       2105.13\r\nselect_index    10000   3       0       2080.75\r\nselect_index    10000   3       0       2041.60\r\nselect_index    10000   3       0       2075.76\r\n
\r\n

mysql-linuxthreads-libthr-acpifast-ule.txt

\r\nselect_index    20000   1       0       12475.24\r\nselect_index    20000   1       0       13450.59\r\nselect_index    20000   1       0       13417.97\r\nselect_index    20000   1       0       13412.57\r\nselect_index    20000   2       0       13383.80\r\nselect_index    10000   2       0       3332.96\r\nselect_index    10000   2       0       3320.67\r\nselect_index    10000   1       0       3038.21\r\nselect_index    10000   2       0       3313.98\r\nselect_index    10000   1       0       3306.03\r\n
\r\n

mysql-linuxthreads-libthr-tsc-ule+pre.txt

\r\nselect_index    20000   0       0       13663.00\r\nselect_index    20000   0       0       15213.64\r\nselect_index    20000   1       0       15042.29\r\nselect_index    20000   1       0       15174.39\r\nselect_index    20000   1       0       15243.04\r\nselect_index    10000   32      0       1774.45\r\nselect_index    10000   2       0       2226.37\r\nselect_index    10000   1       0       2190.76\r\nselect_index    10000   2       0       1863.09\r\nselect_index    10000   3       0       2109.35\r\n
\r\n

mysql-linuxthreads-libthr-tsc-ule.txt

\r\nselect_index    20000   0       0       13818.04\r\nselect_index    20000   1       0       15044.14\r\nselect_index    20000   1       0       14952.98\r\nselect_index    20000   1       0       14997.97\r\nselect_index    20000   1       0       14994.28\r\nselect_index    10000   1       0       3559.50\r\nselect_index    10000   2       0       3555.00\r\nselect_index    10000   1       0       3551.69\r\nselect_index    10000   1       0       3544.28\r\nselect_index    10000   1       0       3558.09\r\n
\r\n

mysql-none-libpthread-acpifast-ule+pre.txt

\r\nselect_index    20000   1       0       12365.81\r\nselect_index    20000   0       0       13426.82\r\nselect_index    20000   0       0       13431.42\r\nselect_index    20000   1       0       13524.88\r\nselect_index    20000   1       0       13461.60\r\nselect_index    10000   3       0       2174.06\r\nselect_index    10000   1       0       2203.14\r\nselect_index    10000   6       0       1965.83\r\nselect_index    10000   2       0       1750.57\r\nselect_index    10000   2       0       2250.18\r\n
\r\n

mysql-none-libpthread-acpifast-ule.txt

\r\nselect_index    20000   1       0       12489.77\r\nselect_index    20000   1       0       13491.79\r\nselect_index    20000   0       0       13525.43\r\nselect_index    20000   0       0       13523.64\r\nselect_index    20000   1       0       13431.96\r\nselect_index    10000   2       0       3081.10\r\nselect_index    10000   1       0       3080.20\r\nselect_index    10000   3       0       3090.05\r\nselect_index    10000   1       0       3098.17\r\nselect_index    10000   2       0       3084.23\r\n
\r\n

mysql-none-libpthread-tsc-ule+pre.txt

\r\nselect_index    20000   1       0       13352.18\r\nselect_index    20000   1       0       14704.85\r\nselect_index    20000   1       0       14608.26\r\nselect_index    20000   1       0       14798.53\r\nselect_index    20000   0       0       14689.70\r\nselect_index    10000   0       0       2142.89\r\nselect_index    10000   1       0       2234.18\r\nselect_index    10000   1       0       2179.86\r\nselect_index    10000   2       0       2170.27\r\nselect_index    10000   1       0       2265.08\r\n
\r\n

mysql-none-libpthread-tsc-ule.txt

\r\nselect_index    20000   1       0       13656.62\r\nselect_index    20000   1       0       14898.67\r\nselect_index    20000   1       0       14752.02\r\nselect_index    20000   2       0       14852.14\r\nselect_index    20000   1       0       14837.82\r\nselect_index    10000   1       0       3007.47\r\nselect_index    10000   2       0       3229.50\r\nselect_index    10000   2       0       3224.31\r\nselect_index    10000   1       0       3231.67\r\nselect_index    10000   3       0       3227.73\r\n
\r\n

mysql-none-libthr-acpifast-ule+pre.txt

\r\nselect_index    20000   1       0       13554.22\r\nselect_index    20000   0       0       14843.70\r\nselect_index    20000   1       0       14866.88\r\nselect_index    20000   0       0       14887.39\r\nselect_index    20000   1       0       14928.93\r\nselect_index    10000   1       0       1629.05\r\nselect_index    10000   2       0       2236.91\r\nselect_index    10000   15      0       2309.37\r\nselect_index    10000   2       0       2165.72\r\nselect_index    10000   27      0       2159.57\r\n
\r\n

mysql-none-libthr-acpifast-ule.txt

\r\nselect_index    20000   1       0       13658.64\r\nselect_index    20000   1       0       14971.77\r\nselect_index    20000   1       0       14956.40\r\nselect_index    20000   0       0       14981.85\r\nselect_index    20000   1       0       14999.37\r\nselect_index    10000   2       0       3457.10\r\nselect_index    10000   2       0       3471.44\r\nselect_index    10000   1       0       3461.68\r\nselect_index    10000   1       0       3467.51\r\nselect_index    10000   1       0       3464.31\r\n
\r\n

mysql-none-libthr-tsc-ule+pre.txt

\r\nselect_index    20000   2       0       14777.00\r\nselect_index    20000   0       0       16435.89\r\nselect_index    20000   1       0       16594.25\r\nselect_index    20000   1       0       16396.86\r\nselect_index    20000   1       0       16459.05\r\nselect_index    10000   1       0       2231.66\r\nselect_index    10000   1       0       2167.76\r\nselect_index    10000   1       0       2196.55\r\nselect_index    10000   1       0       2206.77\r\nselect_index    10000   2       0       2339.63\r\n
\r\n

mysql-none-libthr-tsc-ule.txt

\r\nselect_index    20000   0       0       15248.38\r\nselect_index    20000   1       0       16618.56\r\nselect_index    20000   1       0       16648.67\r\nselect_index    20000   0       0       16538.45\r\nselect_index    20000   1       0       16674.13\r\nselect_index    10000   1       0       3666.43\r\nselect_index    10000   3       0       3674.07\r\nselect_index    10000   2       0       3686.61\r\nselect_index    10000   1       0       3677.49\r\nselect_index    10000   2       0       3675.10\r\n
\r\n

mysql-pth-libpthread-acpifast-ule+pre.txt

\r\nselect_index    20000   0       0       9851.83\r\nselect_index    20000   1       0       10051.59\r\nselect_index    20000   1       0       10078.66\r\nselect_index    20000   1       0       10004.09\r\nselect_index    20000   1       0       10079.65\r\nselect_index    10000   1       0       1666.05\r\nselect_index    10000   2       0       1984.58\r\nselect_index    10000   2       0       1898.87\r\nselect_index    10000   2       0       1966.90\r\nselect_index    10000   4       1       1874.67\r\n
\r\n

mysql-pth-libpthread-acpifast-ule.txt

\r\nselect_index    20000   1       0       9485.41\r\nselect_index    20000   1       0       10073.52\r\nselect_index    20000   1       0       10113.77\r\nselect_index    20000   1       0       10104.63\r\nselect_index    20000   2       0       10107.14\r\nselect_index    10000   2       0       2568.85\r\nselect_index    10000   1       0       2579.42\r\nselect_index    10000   2       0       2564.46\r\nselect_index    10000   1       0       2561.09\r\nselect_index    10000   1       0       2443.52\r\n
\r\n

mysql-pth-libpthread-tsc-ule+pre.txt

\r\nselect_index    20000   0       0       11129.51\r\nselect_index    20000   1       0       12125.62\r\nselect_index    20000   1       0       12108.58\r\nselect_index    20000   1       0       12148.99\r\nselect_index    20000   1       0       12142.83\r\nselect_index    10000   1       0       1769.50\r\nselect_index    10000   2       0       1961.15\r\nselect_index    10000   3       0       2132.04\r\nselect_index    10000   2       0       2175.26\r\nselect_index    10000   1       0       1964.11\r\n
\r\n

mysql-pth-libpthread-tsc-ule.txt

\r\nselect_index    20000   0       0       11282.64\r\nselect_index    20000   1       0       12221.35\r\nselect_index    20000   1       0       12176.64\r\nselect_index    20000   0       0       12207.59\r\nselect_index    20000   1       0       12196.39\r\nselect_index    10000   2       0       2850.48\r\nselect_index    10000   2       0       2847.16\r\nselect_index    10000   3       1       2839.71\r\nselect_index    10000   2       0       2846.03\r\nselect_index    10000   2       0       2854.38\r\n
\r\n

mysql-pth-libthr-acpifast-ule+pre.txt

\r\nselect_index    20000   1       0       13539.93\r\nselect_index    20000   1       0       14858.06\r\nselect_index    20000   1       0       15031.06\r\nselect_index    20000   0       0       14944.30\r\nselect_index    20000   1       0       14939.87\r\nselect_index    10000   1       0       1803.10\r\nselect_index    10000   1       0       2196.92\r\nselect_index    10000   1       0       2315.69\r\nselect_index    10000   1       0       2304.67\r\nselect_index    10000   6       0       2309.06\r\n
\r\n

mysql-pth-libthr-acpifast-ule.txt

\r\nselect_index    20000   1       0       13754.94\r\nselect_index    20000   1       0       14948.38\r\nselect_index    20000   1       0       15003.24\r\nselect_index    20000   1       0       14971.17\r\nselect_index    20000   0       0       14886.27\r\nselect_index    10000   1       0       3420.30\r\nselect_index    10000   1       0       3270.71\r\nselect_index    10000   2       0       3416.76\r\nselect_index    10000   2       0       3443.20\r\nselect_index    10000   2       0       3423.75\r\n
\r\n

mysql-pth-libthr-tsc-ule+pre.txt

\r\nselect_index    20000   0       0       14755.44\r\nselect_index    20000   0       0       16653.00\r\nselect_index    20000   1       0       16646.08\r\nselect_index    20000   1       0       16471.75\r\nselect_index    20000   1       0       16591.78\r\nselect_index    10000   1       0       2181.36\r\nselect_index    10000   1       0       2195.38\r\nselect_index    10000   1       0       2153.20\r\nselect_index    10000   1       0       2006.63\r\nselect_index    10000   2       0       2444.98\r\n
\r\n

mysql-pth-libthr-tsc-ule.txt

\r\nselect_index    20000   0       0       15189.03\r\nselect_index    20000   0       0       16818.74\r\nselect_index    20000   0       0       16624.18\r\nselect_index    20000   1       0       16792.51\r\nselect_index    20000   1       0       16731.49\r\nselect_index    10000   1       0       3652.88\r\nselect_index    10000   1       0       3685.77\r\nselect_index    10000   2       0       3670.86\r\nselect_index    10000   1       0       3665.19\r\nselect_index    10000   1       0       2843.89\r\n
\r\nmy.cnf:\r\n
[mysqld]\r\nskip-innodb\r\nskip-bdb\r\nsafe-user-create\r\nskip-name-resolve\r\nskip-log-warnings\r\nsafe-show-database\r\n\r\n\r\nset-variable = flush_time=86400\r\nset-variable = max_connections=300\r\nset-variable = max_connect_errors=100\r\nset-variable = interactive_timeout=600\r\nset-variable = wait_timeout=60\r\nset-variable = myisam-recover=FORCE\r\nset-variable = key_buffer_size=128M\r\nset-variable = sort_buffer_size=1M\r\nset-variable = read_buffer_size=512k\r\nset-variable = table_cache=4096\r\nset-variable = max_delayed_threads=0\r\nset-variable = max_user_connections=100\r\nset-variable = query_cache_size=128M\r\nset-variable = thread_cache_size=50\r\n\r\n[mysql.server]\r\nuser=mysql\r\n\r\n[safe_mysqld]\r\nerr-log=/var/log/mysql/error.log\r\n
\r\ndmesg:\r\n
Copyright (c) 1992-2005 The FreeBSD Project.\r\nCopyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994\r\n        The Regents of the University of California. All rights reserved.\r\nFreeBSD 6.0-STABLE #7: Mon Dec 12 11:59:54 CST 2005\r\n    root@gslinnb.csie.NCTU.edu.tw:/usr/obj/usr/src/sys/KERNEL\r\nTimecounter \"i8254\" frequency 1193182 Hz quality 0\r\nCPU: Intel(R) Pentium(R) M processor 1500MHz (1498.73-MHz 686-class CPU)\r\n  Origin = \"GenuineIntel\"  Id = 0x695  Stepping = 5\r\n  Features=0xa7e9f9bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,TM,PBE>\r\n  Features2=0x180<EST,TM2>\r\nreal memory  = 536215552 (511 MB)\r\navail memory = 515358720 (491 MB)\r\nnpx0: [FAST]\r\nnpx0: <math processor> on motherboard\r\nnpx0: INT 16 interface\r\nacpi0: <IBM TP-1Q> on motherboard\r\nacpi_ec0: <Embedded Controller: GPE 0x1c, ECDT> port 0x62,0x66 on acpi0\r\nacpi0: Power Button (fixed)\r\nTimecounter \"ACPI-fast\" frequency 3579545 Hz quality 1000\r\nacpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0\r\ncpu0: <ACPI CPU> on acpi0\r\nacpi_perf0: <ACPI CPU Frequency Control> on cpu0\r\nacpi_throttle0: <ACPI CPU Throttling> on cpu0\r\nacpi_lid0: <Control Method Lid Switch> on acpi0\r\nacpi_button0: <Sleep Button> on acpi0\r\npcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0\r\npci0: <ACPI PCI bus> on pcib0\r\nagp0: <Intel 82855 host to AGP bridge> mem 0xd0000000-0xdfffffff at device 0.0 on pci0\r\npcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0\r\npci1: <ACPI PCI bus> on pcib1\r\nacpi_video0: <ACPI video extension> port 0x3000-0x30ff mem 0xe0000000-0xe7ffffff,0xc0100000-0xc010ffff irq 11 at device 0.0 on pci1\r\nuhci0: <Intel 82801DB (ICH4) USB controller USB-A> port 0x1800-0x181f irq 11 at device 29.0 on pci0\r\nuhci0: [GIANT-LOCKED]\r\nusb0: <Intel 82801DB (ICH4) USB controller USB-A> on uhci0\r\nusb0: USB revision 1.0\r\nuhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1\r\nuhub0: 2 ports with 2 removable, self powered\r\nuhci1: <Intel 82801DB (ICH4) USB controller USB-B> port 0x1820-0x183f irq 11 at device 29.1 on pci0\r\nuhci1: [GIANT-LOCKED]\r\nusb1: <Intel 82801DB (ICH4) USB controller USB-B> on uhci1\r\nusb1: USB revision 1.0\r\nuhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1\r\nuhub1: 2 ports with 2 removable, self powered\r\nuhci2: <Intel 82801DB (ICH4) USB controller USB-C> port 0x1840-0x185f irq 11 at device 29.2 on pci0\r\nuhci2: [GIANT-LOCKED]\r\nusb2: <Intel 82801DB (ICH4) USB controller USB-C> on uhci2\r\nusb2: USB revision 1.0\r\nuhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1\r\nuhub2: 2 ports with 2 removable, self powered\r\nehci0: <Intel 82801DB/DBL/DBM (ICH4) USB 2.0 controller> mem 0xc0000000-0xc00003ff irq 11 at device 29.7 on pci0\r\nehci0: [GIANT-LOCKED]\r\nusb3: EHCI version 1.0\r\nusb3: companion controllers, 2 ports each: usb0 usb1 usb2\r\nusb3: <Intel 82801DB/DBL/DBM (ICH4) USB 2.0 controller> on ehci0\r\nusb3: USB revision 2.0\r\nuhub3: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1\r\nuhub3: 6 ports with 6 removable, self powered\r\npcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0\r\npci2: <ACPI PCI bus> on pcib2\r\npci2: <bridge, PCI-CardBus> at device 0.0 (no driver attached)\r\npci2: <bridge, PCI-CardBus> at device 0.1 (no driver attached)\r\npci2: <serial bus, FireWire> at device 0.2 (no driver attached)\r\nipw0: <Intel(R) PRO/Wireless 2100 MiniPCI> mem 0xc0200000-0xc0200fff irq 11 at device 2.0 on pci2\r\nipw0: Ethernet address: 00:0c:f1:32:b2:92\r\nfxp0: <Intel 82801DB (ICH4) Pro/100 VE Ethernet> port 0x8000-0x803f mem 0xc0201000-0xc0201fff irq 11 at device 8.0 on pci2\r\nmiibus0: <MII bus> on fxp0\r\ninphy0: <i82562ET 10/100 media interface> on miibus0\r\ninphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto\r\nfxp0: Ethernet address: 00:0d:60:8f:05:50\r\nisab0: <PCI-ISA bridge> at device 31.0 on pci0\r\nisa0: <ISA bus> on isab0\r\natapci0: <Intel ICH4 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x1860-0x186f at device 31.1 on pci0\r\nata0: <ATA channel 0> on atapci0\r\nata1: <ATA channel 1> on atapci0\r\npci0: <serial bus, SMBus> at device 31.3 (no driver attached)\r\npcm0: <Intel ICH4 (82801DB)> port 0x1c00-0x1cff,0x18c0-0x18ff mem 0xc0000c00-0xc0000dff,0xc0000800-0xc00008ff irq 11 at device 31.5 on pci0\r\npcm0: [GIANT-LOCKED]\r\npcm0: <Analog Devices AD1981B AC97 Codec>\r\npci0: <simple comms, generic modem> at device 31.6 (no driver attached)\r\nacpi_tz0: <Thermal Zone> on acpi0\r\natkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0\r\natkbd0: <AT Keyboard> irq 1 on atkbdc0\r\nkbd0 at atkbd0\r\natkbd0: [GIANT-LOCKED]\r\npsm0: <PS/2 Mouse> irq 12 on atkbdc0\r\npsm0: [GIANT-LOCKED]\r\npsm0: model Generic PS/2 mouse, device ID 0\r\nsio0: configured irq 4 not in bitmap of probed irqs 0\r\nsio0: port may not be enabled\r\nsio0: configured irq 3 not in bitmap of probed irqs 0\r\nsio0: port may not be enabled\r\nbattery0: <ACPI Control Method Battery> on acpi0\r\nacpi_acad0: <AC Adapter> on acpi0\r\nacpi_ibm0: <IBM ThinkPad ACPI Extras> on acpi0\r\nsio0: configured irq 4 not in bitmap of probed irqs 0\r\nsio0: port may not be enabled\r\nsio0: configured irq 3 not in bitmap of probed irqs 0\r\nsio0: port may not be enabled\r\npmtimer0 on isa0\r\norm0: <ISA Option ROMs> at iomem 0xd0000-0xd0fff,0xd1000-0xd1fff,0xdc000-0xdffff on isa0\r\nsc0: <System console> at flags 0x100 on isa0\r\nsc0: VGA <16 virtual consoles, flags=0x300>\r\nvga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0\r\nsio0: configured irq 4 not in bitmap of probed irqs 0\r\nsio0: port may not be enabled\r\nsio1: configured irq 3 not in bitmap of probed irqs 0\r\nsio1: port may not be enabled\r\nums0: Logitech Optical USB Mouse, rev 2.00/3.40, addr 2, iclass 3/1\r\nums0: 3 buttons and Z dir.\r\nTimecounter \"TSC\" frequency 1498732909 Hz quality 800\r\nTimecounters tick every 1.000 msec\r\nipfw2 (+ipv6) initialized, divert loadable, rule-based forwarding enabled, default to accept, logging disabled\r\nad0: 34791MB <IC25N040ATMR04 0 MO2OAD4A> at ata0-master UDMA100\r\nTrying to mount root from ufs:/dev/ad0s1a\r\nipw0: Please load firmware\r\nipw0: link state changed to UP\r\n
\r\nThe kernel config file (diff -ruN with /sys/i386/conf/GENERIC)\r\n
--- /sys/i386/conf/GENERIC      Sun Oct 30 03:08:44 2005\r\n+++ KERNEL      Mon Dec 12 14:15:41 2005\r\n@@ -16,40 +16,28 @@\r\n # If you are in doubt as to the purpose or necessity of a line, check first\r\n # in NOTES.\r\n #\r\n-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.3.2.1 2005/10/28 19:22:41 jhb Exp $\r\n+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.4 2005/10/28 19:21:27 jhb Exp $\r\n\r\n machine                i386\r\n-cpu            I486_CPU\r\n-cpu            I586_CPU\r\n cpu            I686_CPU\r\n ident          GENERIC\r\n\r\n # To statically compile in device wiring instead of /boot/device.hints\r\n #hints         \"GENERIC.hints\"         # Default places to look for devices.\r\n\r\n-makeoptions    DEBUG=-g                # Build kernel with gdb(1) debug symbols\r\n+#makeoptions   DEBUG=-g                # Build kernel with gdb(1) debug symbols\r\n\r\n-#options       SCHED_ULE               # ULE scheduler\r\n-options        SCHED_4BSD              # 4BSD scheduler\r\n-options        PREEMPTION              # Enable kernel thread preemption\r\n+options        SCHED_ULE               # ULE scheduler\r\n+#options       SCHED_4BSD              # 4BSD scheduler\r\n+#options       PREEMPTION              # Enable kernel thread preemption\r\n options        INET                    # InterNETworking\r\n options        INET6                   # IPv6 communications protocols\r\n options        FFS                     # Berkeley Fast Filesystem\r\n options        SOFTUPDATES             # Enable FFS soft updates support\r\n options        UFS_ACL                 # Support for access control lists\r\n options        UFS_DIRHASH             # Improve performance on big directories\r\n-options        MD_ROOT                 # MD is a potential root device\r\n-options        NFSCLIENT               # Network Filesystem Client\r\n-options        NFSSERVER               # Network Filesystem Server\r\n-options        NFS_ROOT                # NFS usable as /, requires NFSCLIENT\r\n-options        MSDOSFS                 # MSDOS Filesystem\r\n-options        CD9660                  # ISO 9660 Filesystem\r\n-options        PROCFS                  # Process filesystem (requires PSEUDOFS)\r\n-options        PSEUDOFS                # Pseudo-filesystem framework\r\n options        GEOM_GPT                # GUID Partition Tables.\r\n options        COMPAT_43               # Compatible with BSD 4.3 [KEEP THIS!]\r\n-options        COMPAT_FREEBSD4         # Compatible with FreeBSD4\r\n-options        COMPAT_FREEBSD5         # Compatible with FreeBSD5\r\n options        SCSI_DELAY=5000         # Delay (in ms) before probing SCSI\r\n options        KTRACE                  # ktrace(1) support\r\n options        SYSVSHM                 # SYSV-style shared memory\r\n@@ -57,80 +45,32 @@\r\n options        SYSVSEM                 # SYSV-style semaphores\r\n options        _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions\r\n options        KBD_INSTALL_CDEV        # install a CDEV entry in /dev\r\n-options        AHC_REG_PRETTY_PRINT    # Print register bitfields in debug\r\n-                                       # output.  Adds ~128k to driver.\r\n-options        AHD_REG_PRETTY_PRINT    # Print register bitfields in debug\r\n-                                       # output.  Adds ~215k to driver.\r\n options        ADAPTIVE_GIANT          # Giant mutex is adaptive.\r\n\r\n+options                AUTO_EOI_1\r\n+options                DDB\r\n+options                DUMMYNET\r\n+options                IPFIREWALL\r\n+options                IPFIREWALL_DEFAULT_TO_ACCEPT\r\n+options                IPFIREWALL_FORWARD\r\n+options                KDB\r\n+options                NMBCLUSTERS=16384\r\n+options                PQ_CACHESIZE=1024\r\n+\r\n device         apic                    # I/O APIC\r\n\r\n # Bus support.\r\n device         eisa\r\n device         pci\r\n\r\n-# Floppy drives\r\n-device         fdc\r\n-\r\n # ATA and ATAPI devices\r\n device         ata\r\n device         atadisk         # ATA disk drives\r\n-device         ataraid         # ATA RAID drives\r\n-device         atapicd         # ATAPI CDROM drives\r\n-device         atapifd         # ATAPI floppy drives\r\n-device         atapist         # ATAPI tape drives\r\n options        ATA_STATIC_ID   # Static device numbering\r\n\r\n-# SCSI Controllers\r\n-device         ahb             # EISA AHA1742 family\r\n-device         ahc             # AHA2940 and onboard AIC7xxx devices\r\n-device         ahd             # AHA39320/29320 and onboard AIC79xx devices\r\n-device         amd             # AMD 53C974 (Tekram DC-390(T))\r\n-device         isp             # Qlogic family\r\n-#device        ispfw           # Firmware for QLogic HBAs- normally a module\r\n-device         mpt             # LSI-Logic MPT-Fusion\r\n-#device                ncr             # NCR/Symbios Logic\r\n-device         sym             # NCR/Symbios Logic (newer chipsets + those of `ncr')\r\n-device         trm             # Tekram DC395U/UW/F DC315U adapters\r\n-\r\n-device         adv             # Advansys SCSI adapters\r\n-device         adw             # Advansys wide SCSI adapters\r\n-device         aha             # Adaptec 154x SCSI adapters\r\n-device         aic             # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.\r\n-device         bt              # Buslogic/Mylex MultiMaster SCSI adapters\r\n-\r\n-device         ncv             # NCR 53C500\r\n-device         nsp             # Workbit Ninja SCSI-3\r\n-device         stg             # TMC 18C30/18C50\r\n-\r\n # SCSI peripherals\r\n device         scbus           # SCSI bus (required for SCSI)\r\n-device         ch              # SCSI media changers\r\n device         da              # Direct Access (disks)\r\n-device         sa              # Sequential Access (tape etc)\r\n-device         cd              # CD\r\n-device         pass            # Passthrough device (direct SCSI access)\r\n-device         ses             # SCSI Environmental Services (and SAF-TE)\r\n-\r\n-# RAID controllers interfaced to the SCSI subsystem\r\n-device         amr             # AMI MegaRAID\r\n-device         arcmsr          # Areca SATA II RAID\r\n-device         asr             # DPT SmartRAID V, VI and Adaptec SCSI RAID\r\n-device         ciss            # Compaq Smart RAID 5*\r\n-device         dpt             # DPT Smartcache III, IV - See NOTES for options\r\n-device         hptmv           # Highpoint RocketRAID 182x\r\n-device         iir             # Intel Integrated RAID\r\n-device         ips             # IBM (Adaptec) ServeRAID\r\n-device         mly             # Mylex AcceleRAID/eXtremeRAID\r\n-device         twa             # 3ware 9000 series PATA/SATA RAID\r\n-\r\n-# RAID controllers\r\n-device         aac             # Adaptec FSA RAID\r\n-device         aacp            # SCSI passthrough for aac (requires CAM)\r\n-device         ida             # Compaq Smart RAID\r\n-device         mlx             # Mylex DAC960 family\r\n-device         pst             # Promise Supertrak SX6000\r\n-device         twe             # 3ware ATA RAID\r\n\r\n # atkbdc0 controls both the keyboard and the PS/2 mouse\r\n device         atkbdc          # AT keyboard controller\r\n@@ -139,8 +79,6 @@\r\n\r\n device         vga             # VGA video card driver\r\n\r\n-device         splash          # Splash screen and screen saver support\r\n-\r\n # syscons is the default console driver, resembling an SCO console\r\n device         sc\r\n\r\n@@ -149,131 +87,25 @@\r\n #options       XSERVER         # support for X server on a vt console\r\n #options       FAT_CURSOR      # start with block cursor\r\n\r\n-device         agp             # support several AGP chipsets\r\n-\r\n # Power management support (see NOTES for more options)\r\n #device                apm\r\n # Add suspend/resume support for the i8254.\r\n device         pmtimer\r\n\r\n-# PCCARD (PCMCIA) support\r\n-# PCMCIA and cardbus bridge support\r\n-device         cbb             # cardbus (yenta) bridge\r\n-device         pccard          # PC Card (16-bit) bus\r\n-device         cardbus         # CardBus (32-bit) bus\r\n-\r\n-# Serial (COM) ports\r\n-device         sio             # 8250, 16[45]50 based serial ports\r\n-\r\n-# Parallel port\r\n-device         ppc\r\n-device         ppbus           # Parallel port bus (required)\r\n-device         lpt             # Printer\r\n-device         plip            # TCP/IP over parallel\r\n-device         ppi             # Parallel port interface device\r\n-#device                vpo             # Requires scbus and da\r\n-\r\n # If you've got a \"dumb\" serial or parallel PCI card that is\r\n # supported by the puc(4) glue driver, uncomment the following\r\n # line to enable it (connects to the sio and/or ppc drivers):\r\n #device                puc\r\n\r\n-# PCI Ethernet NICs.\r\n-device         de              # DEC/Intel DC21x4x (``Tulip'')\r\n-device         em              # Intel PRO/1000 adapter Gigabit Ethernet Card\r\n-device         ixgb            # Intel PRO/10GbE Ethernet Card\r\n-device         txp             # 3Com 3cR990 (``Typhoon'')\r\n-device         vx              # 3Com 3c590, 3c595 (``Vortex'')\r\n-\r\n-# PCI Ethernet NICs that use the common MII bus controller code.\r\n-# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!\r\n-device         miibus          # MII bus support\r\n-device         bfe             # Broadcom BCM440x 10/100 Ethernet\r\n-device         bge             # Broadcom BCM570xx Gigabit Ethernet\r\n-device         dc              # DEC/Intel 21143 and various workalikes\r\n-device         fxp             # Intel EtherExpress PRO/100B (82557, 82558)\r\n-device         lge             # Level 1 LXT1001 gigabit Ethernet\r\n-device         nge             # NatSemi DP83820 gigabit Ethernet\r\n-device         nve             # nVidia nForce MCP on-board Ethernet Networking\r\n-device         pcn             # AMD Am79C97x PCI 10/100(precedence over 'lnc')\r\n-device         re              # RealTek 8139C+/8169/8169S/8110S\r\n-device         rl              # RealTek 8129/8139\r\n-device         sf              # Adaptec AIC-6915 (``Starfire'')\r\n-device         sis             # Silicon Integrated Systems SiS 900/SiS 7016\r\n-device         sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet\r\n-device         ste             # Sundance ST201 (D-Link DFE-550TX)\r\n-device         ti              # Alteon Networks Tigon I/II gigabit Ethernet\r\n-device         tl              # Texas Instruments ThunderLAN\r\n-device         tx              # SMC EtherPower II (83c170 ``EPIC'')\r\n-device         vge             # VIA VT612x gigabit Ethernet\r\n-device         vr              # VIA Rhine, Rhine II\r\n-device         wb              # Winbond W89C840F\r\n-device         xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')\r\n-\r\n-# ISA Ethernet NICs.  pccard NICs included.\r\n-device         cs              # Crystal Semiconductor CS89x0 NIC\r\n-# 'device ed' requires 'device miibus'\r\n-device         ed              # NE[12]000, SMC Ultra, 3c503, DS8390 cards\r\n-device         ex              # Intel EtherExpress Pro/10 and Pro/10+\r\n-device         ep              # Etherlink III based cards\r\n-device         fe              # Fujitsu MB8696x based cards\r\n-device         ie              # EtherExpress 8/16, 3C507, StarLAN 10 etc.\r\n-device         lnc             # NE2100, NE32-VL Lance Ethernet cards\r\n-device         sn              # SMC's 9000 series of Ethernet chips\r\n-device         xe              # Xircom pccard Ethernet\r\n-\r\n # ISA devices that use the old ISA shims\r\n #device                le\r\n\r\n-# Wireless NIC cards\r\n-device         wlan            # 802.11 support\r\n-device         an              # Aironet 4500/4800 802.11 wireless NICs.\r\n-device         awi             # BayStack 660 and others\r\n-device         ral             # Ralink Technology RT2500 wireless NICs.\r\n-device         wi              # WaveLAN/Intersil/Symbol 802.11 wireless NICs.\r\n-#device                wl              # Older non 802.11 Wavelan wireless NIC.\r\n-\r\n # Pseudo devices.\r\n device         loop            # Network loopback\r\n-device         random          # Entropy device\r\n device         ether           # Ethernet support\r\n-device         sl              # Kernel SLIP\r\n-device         ppp             # Kernel PPP\r\n-device         tun             # Packet tunnel.\r\n device         pty             # Pseudo-ttys (telnet etc)\r\n-device         md              # Memory \"disks\"\r\n-device         gif             # IPv6 and IPv4 tunneling\r\n-device         faith           # IPv6-to-IPv4 relaying (translation)\r\n\r\n # The `bpf' device enables the Berkeley Packet Filter.\r\n # Be aware of the administrative consequences of enabling this!\r\n # Note that 'bpf' is required for DHCP.\r\n device         bpf             # Berkeley packet filter\r\n-\r\n-# USB support\r\n-device         uhci            # UHCI PCI->USB interface\r\n-device         ohci            # OHCI PCI->USB interface\r\n-device         ehci            # EHCI PCI->USB interface (USB 2.0)\r\n-device         usb             # USB Bus (required)\r\n-#device                udbp            # USB Double Bulk Pipe devices\r\n-device         ugen            # Generic\r\n-device         uhid            # \"Human Interface Devices\"\r\n-device         ukbd            # Keyboard\r\n-device         ulpt            # Printer\r\n-device         umass           # Disks/Mass storage - Requires scbus and da\r\n-device         ums             # Mouse\r\n-device         ural            # Ralink Technology RT2500USB wireless NICs\r\n-device         urio            # Diamond Rio 500 MP3 player\r\n-device         uscanner        # Scanners\r\n-# USB Ethernet, requires miibus\r\n-device         aue             # ADMtek USB Ethernet\r\n-device         axe             # ASIX Electronics USB Ethernet\r\n-device         cdce            # Generic USB over Ethernet\r\n-device         cue             # CATC USB Ethernet\r\n-device         kue             # Kawasaki LSI USB Ethernet\r\n-device         rue             # RealTek RTL8150 USB Ethernet\r\n-\r\n-# FireWire support\r\n-device         firewire        # FireWire bus code\r\n-device         sbp             # SCSI over FireWire (Requires scbus and da)\r\n-device         fwe             # Ethernet over FireWire (non-standard!)\r\n
", + "title": "FreeBSD 6.0 MySQL Performance" + }, + { + "id": "253", + "body": "Yahoo! Web HostingSix Apart 開始提供 Movable Type Hosting 服務了:MovableType on Yahoo! Web Hosting。", + "title": "MovableType on Yahoo! Web Hosting" + }, + { + "id": "254", + "body": "在 Slashdot 上看到的:Blog Services Outgrow Their Data Centers。\r\n\r\nBlog 帶動了 Spam 的成長 (包括 Comment Spam、Trackback Spam),所以 TypePad 要擴增。但 Bloglines 自從被 Ask Jeeves 買下來以後就常常水管工 (這個時間點實在太 XD 了),跟 Blog 成長沒有關係啊 :p", + "title": "Blog Services" + }, + { + "id": "255", + "body": "這幾天我收到 DreamHost 寄來的信,說我使用的 CPU resource 超過合理使用的範圍:(有點長,所以我只挑出了重要的部分)\r\n
Unfortunately it appears that your site is using more than your fair share of system resources on your shared hosting machine pizarro. Our system has flagged your account because it is using a large number of CPU minutes per day on pizarro. We need you to trim down your resource consumption considerably. Should you ignore this or subsequent warnings your account may be moved to an evaluation server which could cause downtime.\r\n\r\nSpecifically gslinn's CPU minute usage for today is 73.01.
\r\n我到 shell account 上看了紀錄,發現都是 php.cgi 在吃 CPU resource:\r\n
Process               CPU seconds      user   machine   count  average\r\nphp.cgi                 3374.4700   86.183%   14.060%   13544    0.249\r\nawstats.pl               534.4000   13.648%    2.227%     498    1.073\r\nsh                         4.7500    0.121%    0.020%     492    0.010\r\ntcsh                       1.1100    0.028%    0.005%      14    0.079\r\nvim                        0.5200    0.013%    0.002%      10    0.052\r\nsshd                       0.1100    0.003%    0.000%       4    0.028\r\ncat                        0.0300    0.001%    0.000%      11    0.003\r\nls                         0.0300    0.001%    0.000%       8    0.004\r\nsendmail                   0.0200    0.001%    0.000%       1    0.020\r\nw                          0.0200    0.001%    0.000%       3    0.007\r\npostdrop                   0.0100    0.000%    0.000%       1    0.010\r\n----------------------------------------------------------------------\r\nTotal:                  3915.4700  100.000%   16.314%   14586\r\nAverage per day:        3915.4700    1 days\r\nCPU percentage assumes 24000 cpu seconds per day total.
\r\n這讓我哭笑不得 :p 也許還是跑 mod_php4 好了,這樣 CPU resource 就不會算在我頭上了?XD\r\n\r\nPS:在 What are CPU minutes? 這頁有一堆人這幾天在幹剿 XD 大概是 DreamHost 這幾天升級 php 升到某個 resource 吃比較兇的部分造成的?", + "title": "DreamHost 的 php.cgi" + }, + { + "id": "256", + "body": "在經過某些鳥蛋事情後 (USA TodayA false Wikipedia 'biography'),Wikipedia 將引入 Semi-Protection 來保護某些頁面:Wikipedia Adopting Semi-Protection of Pages。\r\n\r\n關於這項政策,完整的說明在 Wikipedia:Semi-protection policy 這頁。簡單來說,被 Semi-Protection 的頁面可以設定「未註冊及最新註冊的 x% 使用者」無法修改。", + "title": "Wikipedia 將引入 Semi-Protection" + }, + { + "id": "257", + "body": "剛剛才看到的:貨真價實的絕地武士,在台灣 XD\r\n\r\n用 Google News 把原來那篇新聞找出來:南投奇人! 魏全材雙手可通電 燈管不接電也發亮。", + "title": "Jedi" + }, + { + "id": "258", + "body": "剛剛在 愛因斯坦 看到的,買了一支回來試看看,寫起來很像水性筆,查了一下資料,果然是某種水性筆:各式文具的歷史, 可擦拭原子筆(Erasable Pen)的歷史簡述請問擦擦筆~。\r\n\r\n在三菱的官方網站上也有這項產品的資訊:ユニボール シグノ イレイサブル細字ユニボール シグノ イレイサブル。\r\n\r\n不過書寫的感覺跟 .5 油性筆 (筆心的編號是 UMR-5) 比起來差多了,大概不會再買第二支吧 :p", + "title": "三菱的可擦拭中性筆" + }, + { + "id": "259", + "body": "12/15 後,SETI@home Classic 將收起來,全面改用 BOINC 的資源計算,不過 BOINC 的安裝流程比起原來的 Classic 麻煩多了,勢必會影響到參與的人數...\r\n\r\n不過 DiggPCWorld 的標題都下的很爛:SETI@Home Project EndsSETI@Home Project Ends。", + "title": "SETI@home Classic" + }, + { + "id": "260", + "body": "del.icio.us 維修,結果我美女圖的網頁都沒辦法丟上 del.icio.us... (純脆抱怨)\r\n\r\n拿 del.icio.us 來整理相簿很方便的,尤其是在 bookmark 看過的相簿,丟進去的時候 del.icio.us 會告訴你以前已經 bookmark 過了... 另外還可以照學校整理 :p", + "title": "del.icio.us 維修中" + }, + { + "id": "261", + "body": "IRC 的某 channel 上:\r\n
08:42 <@ij1iao> *嚇*\r\n08:42 <@ij1iao> 水管工變虎克船長了 !!
\r\n連上去看差點把茶噴到螢幕上:\r\n\r\n\"\"\r\n\r\n愈修愈機車了 XD", + "title": "Bloglines 維修畫面" + }, + { + "id": "262", + "body": "\"\" Slashdot 上轉錄了 Suprnova 的系統管理者 Andrej Preston 描述 Suprnova 從網路上消失的故事:\r\n\r\n事情的發生是從 2004 年十一月的時候開始,Andrej Preston 接到 ISP 的電話,通知他警方搜查了他的 server。在同年十二月初的時候,路透社報導了 Andrej Preston,而其他的報紙也跟著報導,Andrej Preston 覺得不太對勁,決定暫時關閉 Suprnova.org。\r\n\r\n在關閉 Suprnova.org 一個月後的某個早晨,警方拿著搜索票造訪 Andrej Preston 的家裡,帶走了兩台電腦以及一堆資料。\r\n\r\n再一個月後 (原文是 About a month or so later),Andrej Preston 被警方傳喚,警方做了一份表格,包括了那兩台電腦裡的資料以及從 ISP 那邊取得的資料。\r\n\r\n在一個月後,警方再度傳喚 Andrej PrestonAndrej Preston 與他的律師決定不回答任何的問題。警方告知 Andrej Preston 他們會將這些資料交給檢察官繼續執行。Andrej Preston 的律師告訴 Andrej Preston 大概會在暑假後收到通知。\r\n\r\n在今年的 10/18,Andrej Preston 收到從檢察官那寄來的通知了:檢方決定不起訴。而 Andrej Preston 也拿回原來的那兩台電腦以及所有的資料。", + "title": "Suprnova 消失的故事" + }, + { + "id": "263", + "body": "\"\"\r\n\r\nDigg 上報導某些人連上 Yahoo! 首頁後,會出現上面那樣的訊息。不怎麼讓人認同的方法 :p", + "title": "Yahoo! 與 Google 的戰爭" + }, + { + "id": "264", + "body": "在 Digg 看到的:StarTrek.com Going Offline? Could this be the end?。\r\n\r\nStar Trek 自從 Gene Roddenberry 過世,水準就愈來愈...", + "title": "StarTrek.com" + }, + { + "id": "265", + "body": "Gosh... (圖片註解放在 Flickr,所以點圖片進去看就可以了)\r\n\r\n\"\"", + "title": "土地銀行" + }, + { + "id": "266", + "body": "這幾天不少人在討論的消息 :p 不過 Scoble 說:(Microsoft buying Opera?)\r\n
I have no freaking idea either way, but didn’t the Riya deal teach us anything? That rumors are just that - at least until the deal is signed? All the key players are on vacation right now, though, so I doubt something is up.
\r\n也就是說,最少要等到星期一假期結束,才有可能會看到新的消息 :)", + "title": "Opera 將被 Microsoft 收購?" + }, + { + "id": "267", + "body": "在 Slashdot 看到 OpenOffice.org 2.0.1 RC 出版了:Update to OpenOffice 2 Released,在 2.0.1 Release Candidate - Release Notes 有一份表格,告訴你 OO.o 2.0.1 RC 與 2.0 的差別。\r\n\r\n雖然我自己的電腦裡面只有灌 OpenOffice.org 2.0,不過我大多數的情況下都只是拿來開 .doc 檔與 .ppt 檔,在寫文件的時候大多還是用 .txt,以後可能會儘量用 .tex 寫 (最近在玩 cwTeX),所以我大概不會去更新 OO.o 2.0.1 RC,也許等 2.1 的時候再說 :p", + "title": "OpenOffice.org 2.0.1 RC" + }, + { + "id": "268", + "body": "難得看到 Bloglines 鳥掉,記錄一下:\r\n\r\n\"\"", + "title": "Bloglines 的 Apache Internal Error" + }, + { + "id": "269", + "body": "前陣子就看到發現第四十三個 Mersenne Prime 的消息,剛剛在 Digg 看到第四十三個 Mersenne Prime 驗證完畢,確定這個數是質數的消息:World's Largest Prime Number Found and Verified.。\r\n\r\n這個數字是 230402457-1,9152052 位數,以十進位表示這個數字則需要 9MB 的空間...", + "title": "43rd Mersenne Prime" + }, + { + "id": "270", + "body": "看 awstats 統計記錄的時候發現從 mail.wretch.cc 來的連線量超大,而且超頻繁,去翻 log 發現原來是個沒禮貌的 bot:(列出最後幾筆)\r\n
203.133.33.2 - - [25/Dec/2005:00:13:50 -0800] \"GET /feed/ HTTP/1.0\" 200 21656 \"-\" \"wcpan fetcher\"\r\n203.133.33.2 - - [25/Dec/2005:00:14:35 -0800] \"GET /feed/ HTTP/1.0\" 200 21656 \"-\" \"wcpan fetcher\"\r\n203.133.33.2 - - [25/Dec/2005:00:18:57 -0800] \"GET /feed/ HTTP/1.0\" 200 21656 \"-\" \"wcpan fetcher\"\r\n203.133.33.2 - - [25/Dec/2005:00:19:42 -0800] \"GET /feed/ HTTP/1.0\" 200 21656 \"-\" \"wcpan fetcher\"\r\n203.133.33.2 - - [25/Dec/2005:00:24:24 -0800] \"GET /feed/ HTTP/1.0\" 200 21656 \"-\" \"wcpan fetcher\"
\r\n不支援 Last-Modified 浪費我的頻寬,然後次數又超頻繁,用 .htaccess 擋掉:\r\n
#\r\norder allow,deny\r\ndeny from 203.133.33.\r\nallow from all
\r\nUpdate:據說修好了,先改回來...", + "title": "無名小站沒禮貌的 Bot" + }, + { + "id": "271", + "body": "自從 布丁大長輩 提到 Javascript 的邪惡之處後 (尤其是 XSS,Cross Site Scripting),我跟 Blake 學長就把 NoScript 給裝起來了... 另外一方面,看到一些東西就比較常去思考要怎麼惡搞 :p\r\n\r\n在防禦 XSS 這方面,就可以看出 Google 有想到不少細節在做:\r\n\r\n很明顯的,無名小站自訂 CSS 的地方...", + "title": "Google 對 XSS 的應對" + }, + { + "id": "272", + "body": "\"\"\r\n\r\n依照 sothat 的說法設定 browser.cache.memory.capacity 之後還是會炸,而且居然還超過我設定的上限... @_@", + "title": "Firefox 1.5 Memory Leak" + }, + { + "id": "273", + "body": "F8 比較慢 (cwtex + latex + latex + dvips + ps2pdf),F9 比較快 (cwtex + pdflatex + pdflatex)。跑兩次 latex 的目的在 cwTeX 的 manual 裡面有提到原因。\r\n\r\n這是 vimrc 的部分:\r\n
\" TeX\r\nfunction MakeTeX()\r\n    let textfilename = expand(\"%:p:r\")\r\n    execute \"silent !cwtex \" . textfilename\r\n    execute \"silent !pdflatex \" . textfilename\r\n    execute \"silent !pdflatex \" . textfilename \r\nendfunction\r\n\r\nfunction MakeTeX2()\r\n    let textfilename = expand(\"%:p:r\")\r\n    execute \"silent !cwtex \" . textfilename\r\n    execute \"silent !latex \" . textfilename\r\n    execute \"silent !latex \" . textfilename\r\n    execute \"silent !dvips \" . textfilename\r\n    execute \"silent !ps2pdf \" . textfilename . \".ps\"\r\nendfunction\r\n\r\nfunction LanuchPDF()\r\n    let textfilename = expand(\"%:p:r\")\r\n    execute \"silent !start C:\\\\\\\\Program\\\\ Files\\\\\\\\Foxit\\\\ Reader\\\\\\\\Foxit\\\\ Reader.exe \" . textfilename . \".pdf\"\r\nendfunction\r\n\r\nau BufNewFile,BufRead *.ctx setf tex\r\nmap <F8> :call MakeTeX2()<CR>:call LanuchPDF()<CR>\r\nmap <F9> :call MakeTeX()<CR>:call LanuchPDF()<CR>
", + "title": "vim 與 cwTeX 配合" + }, + { + "id": "274", + "body": "前陣子美國的新聞媒體報導了 Bush 政府要求 NSA 大規模監控了所有的通訊資料。\r\n\r\n剛剛在 Bruce SchneierIs the NSA Reading Your E-Mail? 這篇裡面看到了 Richard M Smith 提供反監控的想法:在信裡面提到一個別人不會 access 到的網頁,看 server log 是不是有被存取到。\r\n\r\n(然後我又想到 XSS 了...)", + "title": "反監控 E-mail" + }, + { + "id": "275", + "body": "ryan 剛剛在 WordPress Repository 上 tag 了:Changeset 3363。而 Matt 也正在幫 WordPress.org 換機器:\r\n\r\n\"\"\r\n\r\nUpdateSlashdot 上也有新聞了:WordPress 2.0 Released,第一篇 comment 是:\r\n
If history is any indication, there will be a 2.0.1 release soon. I can wait ;)
\r\n這... XD", + "title": "WordPress 2.0 出版!" + }, + { + "id": "276", + "body": "汪長輩 還是跟以前一樣機車:我用中國移動啦~。\r\n\r\n不過有機會聽他機車會比較有趣 XD", + "title": "中國移動" + }, + { + "id": "277", + "body": "在 Digg 看到 ASCII 版 Firefox Logo:FireFox logo in ASCII,原 link 在 Ash's Corner : DigiFox!。\r\n\r\n應該是用程式轉的 :p", + "title": "ASCII 版 Firefox Logo" + }, + { + "id": "278", + "body": "改用 K2。\r\n\r\n在 Template 裡面包一個 Template,這讓我想到 Smarty 被幹剿很慢的文章 XD (Templating, the correct way)\r\n\r\n對了,K2 的討論區放在 Flickr 上 (應該是為了貼圖方便),以後如果發展這類軟體,好像也是個不錯的主意?:p", + "title": "K2" + }, + { + "id": "279", + "body": "因為要惡搞一些東西,不方便在現有的系統上跑,於是就跑去弄個 jail 出來用。比起 FreeBSD 4.x 需要自己寫一些 shell script 丟到 /usr/local/etc/rc.d/ 下,6.0 下的 jail 已經整合到系統內了,所以不太需要在自己寫 shell script。\r\n\r\n而且 6.x 的 jail 也修掉不少 bug,像是 dmesg 偶而會出不來 (喂喂),reboot 不會理你 (喂喂)... 另外 df 也只會看到 /,不會看到其他的 slice 了。\r\n\r\n要生出 jail 的環境,先是:\r\n
make buildworld\r\nmake installworld DESTDIR=/da1/jail0\r\nmake distribution DESTDIR=/da1/jail0
\r\n然後改 /da1/jail0/etc/master.passwd,把自己加進去,用 pwd_mkdb -d /da1/jail0/etc /da1/jail0/etc/master.passwd 重新編過一次,記得把家目錄開好 :p\r\n\r\n然後是 /etc/rc.conf:\r\n
ifconfig_fxp1_alias0=\"inet 192.168.113.10/24\"\r\njail_enable=\"YES\"\r\njail_list=\"testbase\"\r\njail_testbase_devfs_enable=\"YES\"\r\njail_testbase_devfs_ruleset=\"devfsrules_jail\"\r\njail_testbase_exec=\"/bin/sh /etc/rc\"\r\njail_testbase_hostname=\"testbase\"\r\njail_testbase_ip=\"192.168.113.10\"\r\njail_testbase_rootdir=\"/da1/jail0\"\r\npf_enable=\"YES\"
\r\n接下來弄 pf 的設定,所以去改 /etc/pf.conf:\r\n
nat on fxp0 from 192.168.113.0/24 to any -> (fxp0)\r\nnat on fxp1 from 192.168.113.0/24 to any -> (fxp0)
\r\n接下來把 jail 裡面的東西設一設,像是 resolv.conf。\r\n\r\n最後用系統給的 jail 就可以啟動了:\r\n
/etc/rc.d/jail start
\r\n第一次跑起來應該會卡在 ssh 產生金鑰的地方,所以就去喝個飲料之類的 :p (也可以自己先在 host 產生好,不過我這邊懶得講了,請自己去 /etc/rc.d/sshd 翻,需要三組金鑰)\r\n\r\n弄完以後就可以 ssh 進去玩了,如果要跟 host 共用 ports directory,可以用 mount_nullfs 以 read-only 掛上來 (security issue),然後修改 /etc/make.conf,把本來會寫入的部分都改到 /tmp 下:\r\n
DISTDIR=        /tmp/distfiles\r\nWRKDIRPREFIX=   /tmp/WRKDIR
\r\n這樣應該就沒什麼大問題了 :D", + "title": "FreeBSD 6.0 與 jail" + }, + { + "id": "280", + "body": "跟應數九二的一堆同學一起跨年 :p 上次這群人一起跨年是六年前了... (這次出現的有:ashley、rere、walay * 2、jacky、fatcat + nai、singsong、eddy、adrian、我)\r\n\r\n中午起床,去系計中發現是 ericlin 值班,四點的時候坐他的車跟 thyou 到新埔站,之後坐捷運到後山埤站,去吃 阿里不達太監羊 (其實我沒注意到是吃羊肉的 Q_Q),中間還喝了點酒,拍了不少有趣的照片 :p 晚點會傳到 Flickr 上 :p\r\n\r\n接下來就跑去市政府站,本來打算要去 誠品信義旗艦店 跨年的,結果到門口發現在管制人數,要排隊 :p 於是就跑回 ashley 家打牌 (軟牌 + 硬牌),打一打快十二點就跑出去信義路上看煙火 (可以直接看到 台北 101),看完以後又跑回來打牌,大家都累了之後跑去睡覺,現在剩下我在用 PHS 連上網路寫 Blog XD (沒辦法,沒有好鄰居)\r\n\r\n可能等下回家繼續弄有的沒的吧 :p\r\n\r\nUpdate:照片在這:羊肉爐 (2005/12/31)捷運上 (2005/12/31)公園前的合照。", + "title": "跨年" + }, + { + "id": "282", + "body": "在 Oui-News 上看到這篇:取代 Nero 的免費燒錄軟體 BurnAtOnce,不過在這套軟體的官方網站下面這樣寫:\r\n
burnatonce is a cdrdao / mkisofs gui for windows. burnatonce is free for non-commercial use only.
\r\n我會推薦用另外一套軟體:CDBurnerXP Pro,這套沒有這個限制,而且這套軟體得過不少獎項:Awards。", + "title": "免費的 CD/DVD 燒錄軟體" + }, + { + "id": "283", + "body": "在 FreeBSD 6.0 與 jail 這篇裡面我提到了安裝的方法,另外也提到如何跟 host 共用 ports 的方法。但是如果你想要使用 portupgrade 升級軟體,你會發現因為沒有辦法寫入 /usr/ports (要更新 INDEX.db) 而失敗。(ericlin 跑來跟我幹剿 XD)\r\n\r\n我發現這個問題可以想辦法避開寫入 /usr/ports 就可以了,在 portupgrade 的 manpage 裡面有提到 PORTS_DBDIR 這個變數:\r\n
PORTS_DBDIR    Alternative location for the ports database files.\r\n               Default is ``$PORTSDIR''.
\r\n於是只要在 /usr/local/etc/pkgtools.conf 裡面設定:\r\n
ENV['PORTS_DBDIR'] ||= '/tmp'
\r\n指到 /tmp 就可以解決了。", + "title": "FreeBSD Jail 裡面透過 Ports 升級軟體的方法" + }, + { + "id": "284", + "body": "在 Scoble 這篇 Microsoft wants to buy Yahoo?CESMacWorld 前的這個禮拜謠言滿天飛 :p\r\n\r\n當作很長的四月一號好了 :p (這讓我想到 Google 在 2004/4/1 推出 Gmail,結果大家都以為是開玩笑的故事...)", + "title": "謠言滿天飛" + }, + { + "id": "285", + "body": "在 Mozilla Developer News 上看到的:1.8.0.1/1.5.0.1 Code Freeze Approaching, 依照文章內所說的時程,大約在一月底二月初就可以看到 1.5.0.1 了,希望可以修正掉極為嚴重的 memory leak 現象...。", + "title": "Firefox 1.5.0.1 的時程表" + }, + { + "id": "286", + "body": "已經有一堆網站在利用 WMF vulnerability (0 day!) 攻擊使用者了,而 Microsoft 居然說:我們將在 1/10 的例行性安全更新。換句話說,大約有一個星期的時間你的電腦將暴露在外?\r\n\r\nTaiwan.CNET.comWindows漏洞攻擊已出現 修補程式還不來。\r\n\r\n剛剛在 packet storm 看到這份非官方版本的 patch (WMFHotfix-1.4.msi):\r\n
Unofficial temporary fix for the critical Windows WMF vulnerability which Microsoft will patch on 1/10/06. Tested on Windows 2000, Windows XP, and Windows XP Professional 64 Bit. The author recommends switching to the official MS patch when it becomes available. Includes c++ source.
", + "title": "非官方的 WMF vulnerability Patch" + }, + { + "id": "287", + "body": "DreamHost 提高了 Shared Hosting 的容量以及流量上限:[ DreamHost : Shared Hosting : Plan Comparison ],這次一口氣提高到 1TB/month...\r\n\r\n不過如同 pesty 講的,在還沒到上限前,CPU resource 就已經先超量了吧 :p 所以只能放放檔案?XD", + "title": "DreamHost 提高容量及流量上限" + }, + { + "id": "288", + "body": "

前言

\r\n布丁大長輩Year.new(2006) 這篇幹剿無名小站的 XSS 安全漏洞,沒有講的很明白,加上我這陣子沒在實驗室遇到 wkwu (是的,我跟他是同一個指導教授),所以一直沒有跟他說這個在國外已經「開發」好一陣子的安全漏洞。\r\n\r\nJavascript 是在使用者端 (Browser) 跑的程式,理論上來說,讓使用者輸入自己的 Javascript 並不會有什麼問題,但實際上自從 XMLHttpRequest() 被大量應用後 (一開始發展 AJAX 所使用的核心技術之一),有些人就發現 XMLHttpRequest() 是可以拿來當作攻擊的工具。\r\n

舉例說明

\r\n舉個例子說明會比較清楚。以目前最大的 無名小站 為例,「修改個人資料」的頁面是在 http://www.wretch.cc/user/modify.php?admin_user=1 這個位置,會以 POST 的方式送給 http://upload.wretch.cc/user/do_modify.php,那麼我就可以在文章裡面嵌入一段 Javascript:(修改自 Use the XMLHttpRequest Object to Post Data)\r\n
var objHTTP, strResult;\r\nobjHTTP = new ActiveXObject('Microsoft.XMLHTTP');\r\nobjHTTP.Open('POST',\r\n  \"http://upload.wretch.cc/user/do_modify.php\",false);\r\nobjHTTP.setRequestHeader('Content-Type',\r\n  'application/x-www-form-urlencoded');\r\nobjHTTP.send(\"依照 form 的內容填入一些東西\");\r\nstrResult=objHTTP.responseText;
\r\n上面的程式碼是 IE Only 的程式碼,但是要弄 IE & Firefox 並存的程式碼其實只是加個 if 判斷句後改用 new XMLHttpRequest 而已...\r\n

原因

\r\n問題來了:為什麼這樣做有效?那我隨便用 WWW::Mechanize 丟個東西進去 server 不就炸了?\r\n\r\n答案是:使用 XMLHttpRequest() 連線時,會送出使用者的 Cookie,於是 server 端會以這個 Cookie 的擁有人去做 Javascript 要做的事情!接下來就 !@#$%^...\r\n

再一個例子

\r\n你會說我只是隨便講講?其實這件事情在兩個月前已經在 MySpace.com 上發生過了,而且還寫成 worm 自動感染:Cross-Site Scripting Worm Floods MySpace (Slashdot)。\r\n

Google 應對的方法

\r\n回過頭來提 Google 對 XSS 的應對 這篇所提到的例子。\r\n\r\n假設有個人在他自己的網站上 (假設是 www.example.com) 放個 Javascript,用 XMLHttpRequest() 連 mail.google.com (Gmail) 的某些 function,幫使用者刪除所有的 mail。在平常的時候,會因為 example.com != google.com 而無法產生 XMLHttpRequest Object,但是在「頁庫存檔」的時候就會在同一個 Domain 下!於是 Google 必須避免這種情況:硬把 www.google.com 換成 IP address,這樣就沒問題了。\r\n\r\n你可以測試 http://www.google.com/search?q=cache:http://www.google.com/ 這個頁面,會發現 Google 會故意換到 IP address。\r\n\r\nGoogle 的另外一個服務是 Blogger。你會發現 Blogger 可以讓你隨便修改 Template 填入各種 code,於是你就可以對 *.blogspot.com 下面的 site 進行 XSS 攻擊:但實際上 Blogger 的 Control panel 放在 blogger.com,於是根本不怕你利用 Template 惡搞。\r\n

結語

\r\n最後,Javascript 是邪惡的,平常逛網站請不要打開 Javascript:請安裝 NoScript 以避免被 ox 掉 :p", + "title": "無名小站的 XSS 安全漏洞" + }, + { + "id": "289", + "body": "在 News Tags 這篇看到的服務:Newzingo,利用 Google News 的服務把重要的新聞列出來。\r\n\r\nTag Cloud:\r\n\r\n\"\"\r\n\r\n隨便點進去看,這是 CES 的:\r\n\r\n\"\"", + "title": "Tag Cloud of Google News" + }, + { + "id": "290", + "body": "K2 的 forum 搬家了,用的是 VanillaBinary Bonsai Forums,搬家的原因在 ATTENTION: New Support Forums! 有提到:\r\n
First of all, there have been some complaints over the speed of flickr, and the occasional downtime. This should hopefully be cleared up on BB. And if nothing else, I can now actually do something about it if there's a problem.\r\n\r\nAlso, there are some forum features I've been wanting to implement, but haven't been able to.\r\n\r\nI'll be styling it so it's a bit easier on the eyes as soon as I can find the time (K2 takes priority though).
\r\n雖然原來的還是會在,不過看起來整個重心會移過去 :p 那還是現在開始習慣 Vanilla 好了... (對,我還沒習慣)", + "title": "K2 Forum" + }, + { + "id": "291", + "body": "在 Slashdot 上看到 Yahoo! Messenger 與翻譯軟體的結合:Yahoo IM Translator。\r\n\r\n\"\"", + "title": "翻譯軟體與 IM 結合" + }, + { + "id": "292", + "body": "剛剛收到 CERT 寄來的通知,也看到 Slashdot 上報導了:Microsoft to Patch WMF Exploit Early。\r\n\r\n用 Windows Update 應該就可以看到更新了。\r\n", + "title": "Microsoft 提前公佈 WMF 安全性更新" + }, + { + "id": "293", + "body": "在 jal 板上看到 ncku.tw 居然不是成大,用 whois 查下去發現:\r\n
Domain Name: ncku.tw\r\nRegistrant:\r\n華網資訊社\r\nSinaCom Tech.\r\n5Fl.,No.26,Gungyuan W.Rd.,GangShan Jen,Kaohsiung,Taiwan 820,R.O.C.\r\n\r\n   Domain Name: ncku.tw\r\n\r\n   Contact:\r\n      WeiJon,Hu   weijon.hu@msa.hinet.net\r\n      TEL:  (07)6221702\r\n      FAX:\r\n\r\n   Record expires on 2006-10-28 (YYYY-MM-DD)\r\n   Record created on 2005-10-27 (YYYY-MM-DD)\r\n\r\n   Domain servers in listed order:\r\n      dns.tvbid.com.tw       61.222.240.134\r\n      dns.tvbid.com.tw       61.222.240.134\r\n\r\nRegistrar: SEEDNET
\r\n跟 ncku.com.tw 是同一個:\r\n
Domain Name: ncku.com.tw\r\nRegistrant:\r\n華網資訊社\r\nSinaCom Tech.\r\n5Fl.,No.26,Gungyuan W.Rd.,GangShan Jen,Kaohsiung,Taiwan 820,R.O.C.\r\n\r\n   Domain Name: ncku.com.tw\r\n\r\n   Contact:\r\n      WeiJon,Hu   huweijon@ms9.hinet.net\r\n      TEL:  (07)6244545\r\n      FAX:  0943315449\r\n\r\n   Record expires on 2006-02-16 (YYYY-MM-DD)\r\n   Record created on 2004-02-08 (YYYY-MM-DD)\r\n\r\n   Domain servers in listed order:\r\n      dns.tvbid.com.tw       61.222.240.134\r\n      dns.tvbid.com.tw       61.222.240.134\r\n\r\nRegistrar: HINET
\r\n教育部沒有幫忙保留?還是發生什麼事情了?(該不會跟 NetworkSolutions 之前發生的疏失一樣吧...)", + "title": "ncku.tw" + }, + { + "id": "294", + "body": "前幾天在 nctu.talk 看到張組長在講 中華電信 的校園專案,如果是帶本來有的門號過去,通話費率以經濟型 (月租 200 不可抵型) 計算,不過月租費用 200 不用繳。\r\n\r\n表格在這裡下載:140.113.103.207/c_version/downloadin.htm,帶既有門號過去的不需要印證件那張,新辦的才要。\r\n\r\n早上跑去事務組把單子交出去,剛剛上 emome 看就看到已經設定完成了,應該是下個月就不需要繳月租費了吧 :p\r\n\r\nPS:GSM/GPRS 的費率在 這裡,經濟型的費率大約比月租可抵 288 型還便宜一些,再加上群組如果愈大折扣愈多,大約在九折之間吧,如果在交大用 中華電信 的人就跳過去吧 :p", + "title": "中華電信的校園專案" + }, + { + "id": "295", + "body": "剛剛在 ijliao 大長輩 那邊的 Google Pack 這篇看到 Google Pack 裡居然有 Norton AntiVirus 2005 Special Edition (六個月的試用期) 就跑去裝起來試看看 :p (雖然交大一直都有買 Norton AntiVirus Enterprise Edition 的授權,不過我都沒裝,主要是中文版軟體裝在英文版 Windows 上每次都會有奇怪的問題...)\r\n\r\n裝起來之後病毒碼是 2005 九月的版本,Live Update 更新到 2006 一月的,用起來還可以,就測到下次重灌 Notebook 吧。", + "title": "Google Pack" + }, + { + "id": "296", + "body": "在 Digg 看到這篇:Bill Gates and Sony, still unable to \"Out-Jobs\" Steve Jobs,不過更清楚的是第一篇 comment 所提到的文章:Gates, Jobs, & the Zen aesthetic。\r\n\r\n光是使用 Slide 的能力,就差超多的啊...\r\n\r\nPS:去年介紹 x86 Mac 的影片 (WWDC2005) 有人有留下來嗎?:p\r\n\r\nUpdate:我在 torrentz 上找到了,正在下載... :p\r\n\r\nUpdate:我放在 這裡,不過這個版本有影音同步的問題,我再找看看其他版本。\r\n\r\nUpdate:潛水的路人提供了一個影音同步的版本 (用 Media Player Classic 看也正常),我放一份 local mirror 到 這裡。", + "title": "Bill Gates 與 Steve Jobs 的台風" + }, + { + "id": "297", + "body": "最近發現 NTCU 提供給學生的 VPN 使用量增加不少:\r\n\r\n\"211.76.240.29_fa3-day\"\r\n\r\n使用的人數大約在 100 人左右 (還在增加),這種不分晝夜都是一樣的流量,一定是 P2P 軟體... 大概是想用 P2P 的人發現 P-Cube 的存在了?\r\n\r\n在學校測試了一下 BitComet,連國外的部分都被擋了下來,不過,如果雙方都用 BitComet 0.60 版的時候就不受到影響,這大概是因為 Encryption 的關係吧。\r\n\r\n再來測 eMule,慘兮兮地,什麼地方都不能連,即使用 VPN 先把 Kad 跑起來,斷線以後也沒辦法建立起連線,看起來只有等到 eMule 開始支援 Encryption,讓這些設備廠頭痛之後才有解 :p (來個 SSL-compatible encryption,那麼全世界搞 Content Filtering 的就當場暈倒 :p)", + "title": "VPN 的使用量增加不少..." + }, + { + "id": "298", + "body": "在 Digg 上看到模仿 Digg 的色情網站 Socialpornsocialporn.com...its digg but for porn。\r\n\r\n\"socialporn\"\r\n\r\n靠靠,我笑翻了 XD", + "title": "模仿 Digg 的色情網站:Socialporn.com" + }, + { + "id": "299", + "body": "在 Schee 那邊的 內引外流 這篇文章裡看到 blog.yam.comTechnoratiPopular Blogs 已經排到第三名的消息,而且快要超越 Boing Boing。\r\n\r\n不過,我要用 Google 丟出幾個數據,比較一下 無名小站 Blogblog.yam.com 受到 Spam 的情況。\r\n\r\nmsi 的部分:\r\n\r\nqstr 的部分:\r\n\r\n這些 Spammer 會到處到其他地方 (各種留言板、討論區、blah blah) 到處貼 link,於是就會有大量來自不同站台的的 Inbound Link。查詢出來的結果發現,Yam 的 Blog 比別人少,但是 Spam 比別人多。\r\n\r\n除了 Spam 以外,還有 blog.roodo.comblog.yam.com 的 Redirect 關係,以及各種串連活動 (貼貼紙活動) 造成有不同站台的 Inbound Link。(誰看過 Boing Boing 整天沒事搞串連的?)\r\n\r\n比起 Boing Boing,在「量」的方面,也許不久後會超越過去 (我指的是 Technorati Popular Blogs),但「質」到底怎麼樣,自己想一想會比較清楚。", + "title": "Technorati 的 Popular Blogs 與 Spam 的關係" + }, + { + "id": "300", + "body": "請不要隨便欺負阿婆 :p\r\n\r\nLink:Old Lady Pwnz Mercedes Guy。", + "title": "無意間看到的影片..." + }, + { + "id": "301", + "body": "本來是放在 Gea-Suan Lin's BLOG for Work 的,想了一下還是這邊也放一份好了,如果有什麼意見的話麻煩提供一下 :p\r\n\r\n以前在計中弄二三十台 FreeBSD 的時候就是用 screen + portupgrade 一次把幾十台機器升級,升級完整個重開機就好了,不用管什麼東西升級完要重跑。安裝新軟體如果需要指定 WITH_BLAH=yes 或是其他的東西,記得到每台上面的 /usr/local/etc/pkgtools.conf 改一下。(以前的 ports 還沒有 OPTIONS 這個功能)\r\n\r\n這個模式在我一個人管的時候很好,但是當要傳承的時候就糟糕了:要瞭解這種方法的人大概都需要玩過一陣子 FreeBSD,知道只靠系統基本的套件管理是不夠的,才會有感覺。D2 上面是到了 ronnywang 才接下去。現在在交大資工當系計中助教也遇到同樣的問題。\r\n\r\n一種想法是利用 package 更新 (這個在將 ccbsd*.csie.nctu.edu.tw 重灌成 FreeBSD 6 已經實行一段時間了),但目前最大的問題在於使用 package 會:\r\n\r\n另外,有時候會發生套件安裝好,但是無法產生 package 的慘劇。這個方法其實問題還蠻多的。\r\n\r\n我昨天又想到了另外一個作法,我不知道可不可行,不過看起來會比原來的方法好,但是重新安裝機器時的速度一定會比 package 的方法慢:\r\n\r\n也許 ccbsd8 可以試看看這種方式。", + "title": "管理一堆 FreeBSD 的方法" + }, + { + "id": "302", + "body": "在 DVD Jon (Jon Lech Johansen,因 DeCSS 事件而聲名大噪的逆向軟體工程師) 的 Blog 上看到他去 註冊 DeAACS.com 的消息:\r\n
6 years ago I didn’t think of registering decss.com. Not intending to make the same mistake twice, a while ago I registered deaacs.com.
\r\n(笑翻)", + "title": "DeAACS.com" + }, + { + "id": "303", + "body": "現在 Google Video 也可以下載了,三種下載模式 (GVP、MP4 for iPod Video、MP4 for Sony PSP),兩種 MP4 的影片都可以用 VLC 看,至於 GVP... 需要下載專屬的 client,我就沒去試了。\r\n\r\n另外,我發現有些檔案只提供 Windows 平台下載 (沒出現 iPod VideoSony PSP 下載的選項),可能是 Google Video 還在改,也可能是影片的上傳者設定的...\r\n\r\n另外最近 Google Video 也開始提供付費影片,付費的部分是使用 Google 自己的 DRM,引起了不少 Do no evil 的討論:A Look at Google DRM。\r\n\r\nPS:我在四個多月前有提到關於 DRM 的文章:Open Source DRM「DRM 無效論」的說明。\r\n\r\nUpdate:在 Digg 上面看到 Google Video purchase system bypassed with GVD 這篇,已經有人鑽出來了。", + "title": "Google Video 下載與付費" + }, + { + "id": "304", + "body": "先是在 Slashdot 上看到 Tom's Hardware 把整台電腦丟進八加侖的油裡面惡搞:Strip Out The Fans, Add 8 Gallons of Cooking Oil。\r\n\r\n再來又在 Digg 上面看到有人在 Pentium-20 (降速跑) + 32MB RAM 的機器上跑 Windows XP:XP Minimal-Requierement-Test。\r\n\r\n新的一年才剛開始,大家都病了嗎 =_= (四月一號還沒到啊)", + "title": "兩件 (...) 的新聞..." + }, + { + "id": "305", + "body": "據說 AppleMacworld 上正式發表 Intel Mac 當天,股價以 $80.86 收盤... 陰謀論 XD\r\n
21:53 <@hlb_> http://techdirt.com/articles/20060110/1818234_F.shtml\r\n21:53 <@hlb_> 哈哈哈哈哈\r\n21:53 <@hlb_> 這才是引人爭議的字眼\r\n21:54 <@ij1iao> $80.86 !!\r\n21:54 <@ij1iao> 一定有人做價~
", + "title": "$80.86" + }, + { + "id": "306", + "body": "Kottke 在他的 Blog 上討論了 Slashdot EffectDigg Effect 的差異:Digg vs. Slashdot (or, traffic vs. influence)。\r\n\r\nKottke 目前是全職的 Blogger,他的文章常常被 SlashdotDigg 討論,在 1/7 的時候 50 Fun Things To Do With Your iPod 這篇文章先上了 Digg,1/8 的時候再被 Slashdot 報導。他把兩次效應所產生的 Bandwidth Graph 比較,得到了: \r\n\r\n\"Kottke\r\n\r\n另外還有張把時間拉長的圖:\r\n\r\n\"\"\r\n\r\n在這兩張圖上面,他討論 Slashdot Effect 以及 Digg Effect 是否如某些人說的「Digg 要超越 Slashdot」?以及兩邊讀者的素養?XD\r\n\r\n很有趣的文章 :p", + "title": "Slashdot 與 Digg 的比較?" + }, + { + "id": "307", + "body": "\"\"\r\n\r\n這是交大對外某個介面的情況,於是我被某電控學弟 (?) 點名了:\r\n\r\n
發信人: Harvard.bbs@ECEsky.twbbs.org (9112036 是大四), 看板: nctu.talk\r\n標  題: 學校網管有必要出來一下吧!!\r\n發信站: 天馬行空 (Sat Jan 14 12:57:20 2006)\r\n轉信站: abpe.org!News.Math.NCTU!news.cis.nctu!ECESKY\r\nOrigin: pc151168.cn.nctu.edu.tw\r\n\r\n有必要把學校網路搞成這樣嗎?\r\n\r\n不是每個人都在抓emule BT\r\n\r\n而且你這樣擋封包型式\r\n\r\n也只是讓p2p變慢而已\r\n\r\n並不是就不能抓\r\n\r\n重點是我現在連一般的http都非常痛苦\r\n\r\n非常慢是一個已經確定的問題\r\n\r\n但是更嚴重的是\r\n\r\n幹 就是有一些網頁完全打不開\r\n\r\n當我們同學是大頭嗎?\r\n\r\n林盃是有絞網路使用費的!!\r\n\r\n再說VPN\r\n\r\n幹 現在連VPN跟斷線沒兩樣吧!!\r\n\r\n你為什麼不要自己用用看\r\n\r\n再決定要不要繼續這樣擋!\r\n\r\n\r\n\r\n\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\nltc darkkiller\r\n\r\n傻傻都分不清楚!!\r\n\r\n再補個 幹\r\n\r\n\r\n\r\n--\r\n◣▃▃◢   ┼交大電控──天馬行空───→\r\n   ⊙ ⊙ξ │ ECEsky.twbbs.org▉▊▋▌▍▎▏\r\n▲◆▲◆   ┼─→ 從 LikiSea.Dorm13.NCTU.edu.tw
\r\n\r\n問題是,自從校園骨幹 router 依照維護合約外包給廠商後,我現在沒有骨幹 router 的密碼啊,我只看的到 mrtg 圖,要幫忙也只能在旁邊搖旗吶喊 zzzz\r\n\r\nUpdate:看起來好了,nctu.talk 上面也有人出來說 okay 了:\r\n\r\n\"\"", + "title": "交大對外的問題" + }, + { + "id": "308", + "body": "BitComet 0.61 出版了。\r\n\r\n從 BitComet Client Release Notes 看了看這個版本的改進之處,看得出來這個版本只是要解決 DHT 資訊洩漏的 bug。(有很多 Tracker 因此直接將 BitComet 擋掉,這件事情我記得在 Digg 上面有提過...)", + "title": "BitComet 0.61" + }, + { + "id": "309", + "body": "在台灣的 Apple 網站 www.apple.com.tw 上看到 MacBook Pro 的定價了:NTD$74900。而在美國的 apple.com 則是 USD$1999,在日本的 apple.com/jp 是 JPY$249800。\r\n\r\n以現在的匯率,USD$1 換 NTD$31.99 的計算下 (據說還要升?),台版的 MacBook Pro 硬是比美版的 (約 NTD$63948) 貴了一萬多,而比日版 (約 NTD$69980) 貴了五千!\r\n\r\n這讓我想到台灣微軟對 XBox 360 定價的事情,哼哼... 可以預期的是,一定一堆人直接從美國或是日本買,再請朋友寄回台灣 :p", + "title": "台灣的 MacBook Pro" + }, + { + "id": "310", + "body": "我在 Technorati 的 Popular Blogs 與 Spam 的關係 有提過 blog.yam.comTechnoratiPopular Blogs 排名第三的事情。\r\n\r\n今天再去看的時候,發現 blog.yam.com 已經不在上面了,無名小站 還是在 6x 名左右。\r\n\r\nSo...", + "title": "Technorati 的 Popular Blogs" + }, + { + "id": "311", + "body": "在 Slashdot 上看到 Wikipedia Plagiarism Ends Journalist's Career 這篇文章。\r\n\r\n某位寫了 21 年的專欄作家在專欄上抄襲 Wikipedia 的內容,然後某位 Wikipedia 的 Editor 揭露了這件事情 (User:TenOfAllTrades/Aloha Dupe),而被另外一家報紙報導出來 (Honolulu Veteran Columnist Under Fire Nationally for Allegedly Plagiarizing Reports),於是這位專欄作家就被開除了。\r\n\r\n相同的事情如果發生在台灣?你想太多了 -_- 大概連個道歉都不會有...", + "title": "從 Wikipedia 抄襲的專欄作家被開除" + }, + { + "id": "312", + "body": "這幾天又再弄 jail,遇到一些瑣事,想到就順便記下來。像是 jail 弄好之後發現沒有帳號可以登入,在 jail host 上:\r\n
cd /jail_path/etc\r\nvim master.passwd\r\npwd_mkdb -d . master.passwd
\r\n其實也可以這樣:\r\n
vipw -d /jail_path/etc
\r\n不知道現在的書還會不會教這些...", + "title": "FreeBSD jail 下的瑣事" + }, + { + "id": "313", + "body": "在 Slashdot 看到立法院砍了 1/4 的預算的事情:Taiwanese Parliament votes Against Microsoft (引用的報導:Taiwanese parliament votes against Microsoft)\r\n\r\n然後在 ijliao 那邊看到:立法院砍政府購買 MS 產品的預算,呃...\r\n\r\nGoogle News 找到兩篇新聞:《財政》95年度行政機關採購微軟產品預算將刪減25% (中天電視網)、立院打微軟 殺價七五折 (中時電子報)。", + "title": "微軟軟體的預算" + }, + { + "id": "314", + "body": "Open Source 界的大事,GPLv3 Draft 出爐:Welcome to GPLv3\r\n\r\nGPLv3 Draft 不知道能不能通過 Open Source Initiative 的認證 (希望不能 XD):\r\n
6. No Discrimination Against Fields of Endeavor\r\n\r\nThe license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
\r\n\r\nUpdateTim Bray 放了一個比較好讀的版本:GPLv3 Draft — GPLv3。\r\n\r\nUpdate新開原碼授權瞄準DRM、好萊塢 (Taiwan.CNET.com)、GPL 3草案公共辯論開始 (Taiwan.CNET.com)。", + "title": "GPLv3 Draft" + }, + { + "id": "315", + "body": "在 Slashdot 看到 George Takei 接受了邀請,將在 fans 所製作的 Star Trek: New Voyages 擔任 Hikaru Sulu 的角色:George Takei To Play Star Trek's Sulu Again:\r\n
Dear James,\r\nLife is so full of unexpected new challenges. Your invitation for me to re-engage with the character of Hikaru Sulu after more than a decade is very exciting. To have Marc Zicree write and direct the project makes the invitation that much more thrilling. Walter Koenig has told me about his experiences with his New Voyages participation and how personally fulfilling it was for him. Thank you for creating this totally unanticipated opportunity for us as artists and for the fans whose love and devotion to 'Star Trek' has made this journey truly a phenomenal continuation of a great adventure. Together, we will 'boldly go' where we have never taken 'Star Trek' before.\"\r\n\r\nGeorge Takei
", + "title": "Star Trek: New Voyages" + }, + { + "id": "316", + "body": "在 Google Blogoscoped 看到的技巧,利用新的一年,搜尋 \"Copyright 2006\" 這個詞,觀察各家搜尋引擎的更新速度有多快 (的確是個好方法 :p):How Quickly Do Different Search Engines Mirror the Web?。\r\n\r\n以目前的搜尋頁面數量來說,Yahoo! 最高,Google 次之。不過作者有提到關於 Link Spam 的事情:\r\n
Note the results shown here are not necessarily connected to search results quality; e.g. a search engine may decide that certain content (like a spam farm copying other sites) is not interesting enough to searchers to be picked up often.
\r\n另外要注意各家 Search Engine 對 Page Count 的算法並不一樣,所以這個數字僅供參考 :p", + "title": "搜尋引擎的更新速度" + }, + { + "id": "317", + "body": "在 Slashdot 看到的,UCLA 的畢業校友要把有異常行為的教授給抓出來:UCLA Students Urged to Expose 'Radical' Professors。\r\n\r\n我突然想到某些教授...\r\n\r\nUpdate:改標題。我指的是在交大修課時,某些教授在課堂上企圖改變學生的政治立場的事情。", + "title": "教授的政治立場" + }, + { + "id": "318", + "body": "在 #bsdchat 看到的消息...\r\n\r\n以往在 pkg-plist 裡砍掉一個不確定是否是空的目錄是這樣寫:\r\n
@unexec rmdir %D/... 2>/dev/null || true
\r\n現在可以改成這樣了:\r\n
@dirrmtry ...
\r\n剛剛看了看 FreeBSD Porter's Handbook,還沒更新?", + "title": "FreeBSD Ports System 的 pkg-plist 改進" + }, + { + "id": "320", + "body": "在 www.gg.caltech.edu/~jeff/knr.cgi 可以幫你算。\r\n\r\n6-4:\r\nK&R (AQTxxx Kxxx xx x) = 13.65\r\nK&R (AQ9xxx Kxxx xx x) = 13.10\r\nK&R (AQxxxx KTxx xx x) = 13.00\r\nK&R (AQxxxx Kxxx xx x) = 12.80\r\nK&R (AJTxxx Kxxx xx x) = 12.30\r\nK&R (ATxxxx Axxx xx x) = 12.30\r\nK&R (Axxxxx ATxx xx x) = 12.20\r\nK&R (Axxxxx Axxx xx x) = 12.00\r\n\r\n5-5:\r\nK&R (AJxxx Axxxx xx x) = 12.75\r\nK&R (ATxxx Axxxx xx x) = 12.25\r\nK&R (AJTxx Kxxxx xx x) = 12.00\r\nK&R (Axxxx Axxxx xx x) = 12.00\r\n\r\n5-4:\r\nK&R (ATxxx AJTx xx xx) = 12.15\r\nK&R (AJTxx Axxx xx xx) = 12.10\r\nK&R (AJTxx KJTx xx xx) = 12.00\r\nK&R (AJxxx AJxx xx xx) = 12.00\r\n\r\n所以這些牌都應該正常開叫...", + "title": "牌型的強度" + }, + { + "id": "321", + "body": "在 zmx 那邊看到 eMule 不打算加入 Encrypted Connection 的功能:emule 發展者對加密傳輸的政策。\r\n\r\n在 eMule 的 forum 上,Frequently Asked Features, read this before posting a new Request 這篇文章裡:\r\n
Features you won't see in eMule:\r\nEncrypted transfer - This only wastes resources and offers you no advantage. It doesn't offer you more privacy as the receiver of the data always has to decrypt it and the receiver could be any untrusted person. Encryption would only help against a Man-In-The-Middle attack which never happens for P2P-Networks as there are easier ways (see the sentence above).
\r\n不過似乎沒抓到重點,Encrypted Connection 的目的只是要閃開 P2P Filtering 的設備...", + "title": "eMule 的 Encrypted Connection" + }, + { + "id": "322", + "body": "從 iMac Core Duo 亮相二十天後,CPU 的部分就已經找到 34 個問題:34 Design Flaws in 20 Days of Intel Core Duo。\r\n\r\n有些問題可以在軟體層 (在作業系統或是應用程式裡處理) 避開,有些問題只是會影響到效率 (像是該 cache 的部份沒有做),有些則是 debug 的時候會產生異常情況 (平常跑的時候不會),不過仍然有不少問題可能會導致莫名其妙當機 XD\r\n\r\n呃,比較糟糕的是 Intel 似乎沒打算修... (反正當了就重開?)", + "title": "Intel Core Duo" + }, + { + "id": "323", + "body": "Google Cache 因為 cache 某個網站被告,判決已經公佈了,Google Cache 認定為合理使用:\r\n", + "title": "Google Cache" + }, + { + "id": "324", + "body": "在 Digg 上看到有趣的新聞:Is the flying car in Google Earth real?\r\n\r\n\r\n\r\n於是有人跑到現場去看,然後提供給 The RegisterOz flying car launch site: exclusive pictures。", + "title": "Google Earth 上的「飛車」" + }, + { + "id": "325", + "body": "這陣子在國外吵吵吵,到處都看的到的新聞... 在 Mengjuei 那邊看到:\r\n\r\n\"\"\r\n\r\nPS:Original from www.geekculture.com/joyoftech/joyarchives/780.html", + "title": "Google.cn" + }, + { + "id": "326", + "body": "在 Digg 看到有人仿製 Star Trek 裡面 Enterprise 的艦橋 (家庭電影院?XD):Home theater system modelled after the StarTrek enterprise bridge。\r\n\r\n產品以及圖片都來自 Where No Home Theater Has Gone Before... 這裡。\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Enterprise 的艦橋" + }, + { + "id": "327", + "body": "在 Gizmodo 看到的笑話:How Many Gizmodo Writers Does It Take to Change a Light Bulb?。\r\n\r\n我看到之後第一個想到的是 FreeBSD 的 FAQ:How many FreeBSD hackers does it take to change a lightbulb? (有中文版的翻譯,即 要幾個 FreeBSD hacker 才能換掉一個電燈泡?)\r\n\r\n不過 FreeBSD 的比較有趣 :p (尤其是更熟悉 FreeBSD 的權力運作後再來看這個笑話)", + "title": "Lightbulb" + }, + { + "id": "328", + "body": "剛剛在 packet storm 看到的:BitCometURI.c,攻擊者可以製造一個特殊的 .torrent 然後散佈出去,當 BitComet 開啟檔案的時候會 crash,而且會執行 .torrent 檔裡面所帶有的 evil code:\r\n
A vulnerability in BitComet allows remote attackers to construct a special .torrent file and put it on any BitTorrent publishing web site. When a user downloads the .torrent file and clicks on publishers name, BitComet will crash. An attacker can run arbitrary code on victims' host by specially crafted .torrent file.
\r\n看起來 BitComet 不久後就得出 0.62 了 :p", + "title": "BitComet 安全漏洞" + }, + { + "id": "329", + "body": "有人發現 Google 又繼續幹了一些事情:\r\n\r\nUpdateGoogle 在他們的 Official Google Blog 上發表了「公關稿」:Google in China。", + "title": "Google.cn" + }, + { + "id": "330", + "body": "Slashdot 的新聞,MacWorld's iMac Core Duo Benchmarks Debunked?。\r\n\r\nApple 宣稱使用 Intel CPU 的效率大約是 G5 的兩倍到四倍,但 MacWorld 雜誌則說,並沒有 Apple 所說的那麼快:First Lab Tests: iMac with Intel Core Duo processor。\r\n\r\n而在 MacSpeedZone 測試的結果也說明其實兩者的速度差不多:Mac Performance In The Raw - Wow! The Intel iMac Is Almost As Fast As The Quad Core Power Mac - How Macworld Pulled A \"Not So Fast\" One ...。\r\n\r\n表格裡面都可以看出來在某些項目 G5 甚至比較快,所以我們應該懷疑 Apple 從 PPC 換到 x86 是否如同 Steve Jobs 所說的,是因為 Power Consumption (Performance per watt)?或者是為了未來的十年的秘密計畫做打算?", + "title": "iMac Core Duo 的效率" + }, + { + "id": "331", + "body": "GoogleSun 合作搞 Anti-Spyware:Google's Anti-Spyware Project。(Sun 大概很無奈,鎂光燈的焦點都在 Google 身上...)\r\n\r\n不過這則新聞很明顯地不會被討論太久,因為 Google China 的事情太大了...", + "title": "Google Anti-Spyware" + }, + { + "id": "332", + "body": "在 Matt 那邊看到 WordPress 2.0 佈景主題競賽:New Theme Competition。\r\n\r\n所以過一兩個月後又有一堆 Theme 可以挑囉 :p", + "title": "WordPress 2.0 佈景主題競賽" + }, + { + "id": "333", + "body": "在 FrSIRT 看到 0day security issue:Nullsoft Winamp Player <= 5.12 PLS File Handling Remote Buffer Overflow Exploit:\r\n
/*\r\n*\r\n* Tested with :\r\n* Winamp 5.12 on Win XP Pro Sp2\r\n*\r\n*/
\r\n我對 Winamp 的感覺普普通通... 我自己是用 foobar2000,加上 foo_pod 管理我的 iPod Shuffle。(foo_pod 似乎沒有官方網站,請直接到 www.hydrogenaudio.org/forums/index.php?showtopic=19156 下載吧)", + "title": "Winamp Security Issue" + }, + { + "id": "334", + "body": "Bram Cohen (Bittorrent 的作者) 在他的 Blog 上對某些 Bittorrent Client 為了避開 ISP 過濾所做的行為 (像是 BitComet 的 Encryption Header,或是 µTorrent 計畫的東西) 提出看法:Obfuscating BitTorrent。\r\n\r\nBram Cohen 提到了如果你用 Encryption 可能會造成的優缺點:你可能因為 Encryption 避開了 ISP 的限流,也有可能因為 Encryption 避開了 ISP 的 P2P Cache。(在台灣幾乎都是限流的設備,不過這是另外一回事了)\r\n\r\n回到原來主題,BitComet 的作法是直接修改 Protocol (Backward-compatible),很明顯的,Bram Cohen 在文章裡並不贊成這種作法。他提出了另外一個方法解決這個問題:Tracker Extension。\r\n\r\n這個作法是向 Tracker 註冊時告訴 Tracker「我有 Encryption 的能力」,當 Tracker 傳 Peer list 回來的時候也順便告訴我有哪些 Peer 也支援這樣的功能。這樣的話不支援的 Client 也可以順利的繼續跑,而支援的 Client 之間就可以加密傳輸了。\r\n\r\n至於後面講到 Diffie-Hellman Key Exchange,呃... 用 infohash 就好了啊...", + "title": "Bittorrent Encryption" + }, + { + "id": "335", + "body": "在 Digg 看到的新聞:Wikipedia blocks United States Congress IP addresses。同時在 Slashdot 上也報導出來了:Wikipedia vs Congressional Staffers [Update]。\r\n\r\n由於有大量從美國國會的 IP address 連上 Wikipedia 修改許多政客的自傳,違反 Wikipedia 的規則 (被列出來的部分包括了 NPOV:中立立場、CIV:文明的行為、Verifiability:可證實正確性),所以 Wikipedia 決定暫時禁止美國國會的 IP Range 一個星期,並提出 RFC (Request for comments) 做進一步處理,目前被封鎖的網段包括了:\r\n\r\n後面的資訊是我用 whois 找的。被封鎖網段可能還會繼續增加。\r\n\r\n你可以在 Wikipedia:Requests for comment/United States Congress 這頁看到 Wikipedia 的編輯對於這些政客態度的敘述。", + "title": "Wikipedia 暫時禁止從美國國會網段修改文章" + }, + { + "id": "336", + "body": "無名小站的圖檔是不能「外連」的,換個說法 (技術上),無名小站的圖檔擋 Referer。所以你不能用 <img src=\"http://picN.pic.wretch.cc/...\" /> 直接連。\r\n\r\n這造成了一些問題:像是在 Bloglines 上訂閱無名的 Blog 時,會看不到圖片的部分... (因為此時 Referer 會是 http://www.bloglines.com/myblogs)\r\n\r\n不過這幾天在 Bloglines 上突然能看到 彎彎 的圖片,本來以為是 Proxy Cache 的關係,後來想到我用 Google Web Accelerator,好像不會有其他人看...\r\n\r\n仔細去看 彎彎 Blog 上圖片的 URL,前面的 http:// 我就省掉了,其他的也是一樣:(VIP account)\r\n
pic.wretch.cc/photos/1/c/cwwany/6/1138685665.jpg
\r\n而我自己的則是:\r\n
pic2.pic.wretch.cc/photos/15/d/darkkiller/3/1076000480.jpg
\r\n用 wget -Y off (-Y off == 不透過 Proxy) 測試這兩個 URL,發現前面的可以,後面的不行。於是我就把我的圖片 URL 改成下面的樣子再抓:\r\n
pic.wretch.cc/photos/15/d/darkkiller/3/1076000480.jpg
\r\n就可以了 :p 下面就是這張圖囉,如果看不的到的話表示 無名 又改掉了 XD\r\n\r\n\"\"", + "title": "無名小站的圖片 (外連、擋 Referer、...)" + }, + { + "id": "337", + "body": "在 Boing Boing 看到有人寫了一個 Greasemonkey Script,把 Google Logo 換成 Evil Google:Script to replace Google logo with Evil Google logo。\r\n\r\n不過我裝了以後連上 www.google.com (不是 www.google.com.tw),並沒有把 Logo 換掉:\r\n\r\n\"\"\r\n\r\n不過,如果把語系改成英文版:\r\n\r\n\"\"\r\n\r\n在修改的頁面也看的到:\r\n\r\n\"\"\r\n\r\n裝起來放著好了 :p\r\n\r\nUpdate:作者已經改版了,現在都能夠正常運作了 XD", + "title": "Evil Google Logo" + }, + { + "id": "338", + "body": "The RegisterGoogle 詢問,證實了 Google 目前的計畫:將 Ubuntu 整合到桌面環境 - 即 Goobuntu。\r\n", + "title": "Google OS - Goobuntu" + }, + { + "id": "339", + "body": "收到 WordPress-SVN Mailing List 的信,在 WordPress Trac 上可以看到 WordPress 2.0.1 的版號已經先打進去了:Changeset 3502。\r\n\r\n這幾天應該就可以看到 WordPress 2.0.1 更新的消息了。\r\n\r\nUpdateMatt 已經在 WordPress.org 官方網站上公佈:2.0.1 Release。", + "title": "WordPress 2.0.1" + }, + { + "id": "340", + "body": "因為 WordPress 的 wp_mail() 沒轉,PHPmail() 也沒轉 ,底層的 sendmail 因為不知道編碼是什麼,當然也不能亂轉,於是就... XD\r\n\r\n用 Google 找了一下,在 解决WP邮件通知在gmail中的标题乱码 這篇給了幾個方法,其中不需要額外的 library 大概就是在 pluggable-functions.php 內的 wp_mail() 最後面 return 的地方改成:\r\n
return @mail($to, \"=?UTF-8?B?\" . base64_encode($subject) . \"?=\", $message, $headers);
\r\n我把他改成:\r\n
return @mail($to, \"=?\" . get_settings('blog_charset') . \"?B?\" . base64_encode($subject) . \"?=\", $message, $headers);
\r\n這樣就 okay 了 :p\r\n\r\nPS:其實我不確定能不能 work XD 我是打算 post 一篇,然後測試一下看看標題正不正確 XD\r\n\r\nUpdate:目前看起來跑得很好:\r\n\r\n\"\"\r\n\r\nUpdate:我另外修改了 From: 的部分,這個部分也需要正確的 encoding,同樣一個檔案裡面,把:\r\n
$from = \"From: \\\"$blogname\\\" <$wp_email>\";
\r\n改成:\r\n
$from = \"From: =?\" . get_settings('blog_charset') . \"?B?\" . base64_encode(\"\\\"$blogname\\\"\") . \"?= <$wp_email>\";
\r\n另外把:\r\n
$from = \"From: \\\"$comment->comment_author\\\" <$wp_email>\";
\r\n改成:\r\n
$from = \"From: =?\" . get_settings('blog_charset') . \"?B?\" . base64_encode(\"\\\"$comment->comment_author\\\"\") . \"?= <$wp_email>\";
\r\n一樣,先測一陣子看看,沒問題就到 WordPress Trac 上送 ticket 請他們 patch。", + "title": "WordPress 通知郵件標題的亂碼" + }, + { + "id": "341", + "body": "還記得 Optimus keyboard 嗎?鍵盤上的標示可以跟著應用程式一起改變。(如果應用程式有支援,或是你自己改...)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n結果上面的那隻還沒推出,先推出了三鍵版的 Optimus mini three keyboard,四月前的預購價是 USD$100 @_@|||\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n上百個鍵的不知道要多少 :p", + "title": "鍵盤" + }, + { + "id": "342", + "body": "Firefox 1.5.0.1 釋出:Mozilla Firefox 1.5.0.1 Release Notes,列出的項目有:\r\n", + "title": "Firefox 1.5.0.1" + }, + { + "id": "343", + "body": "IE 7 Beta 2 才剛出來,有人看了十五分鐘就已經發現問題了:IE 7 bugs abound。\r\n\r\nSecurity Advisory 在這裡:Internet Explorer 7.0 Beta 2 urlmon.dll DoS (from Internet Explorer 7.0 Beta 2 urlmon.dll DoS),寫得很... :p\r\n
Workaround:\r\nMozilla Firefox
", + "title": "IE 7 Beta 的問題" + }, + { + "id": "344", + "body": "無名小站相簿備份服務:無名小站 Album 備份服務。\r\n\r\n早上整個重寫,把之前那個版本的一些 bug 都解決了:\r\n\r\n另外這個版本是直接在 server 上抓好、用 rar 壓縮後,丟給使用者直接下載,不用像以前那樣還要抓 wget.exe 了。\r\n\r\n不過要注意的是,這個版本只是「會動」的版本,速度其實有點慢... 不過我想應該也還好啦,如果備份的相簿中張數最多的那個 album 有五百張 (不是全部加起來五百張),抓一次大約要十五分鐘 o_o\r\n\r\n下午會改寫成另外一種方式,理論上會比較快...\r\n\r\n當然,依照往例,所有的程式碼都可以在 OpenSVN 上取得:Backup Project,如果您有興趣的話,可以到無名的 P_hasname 板抱怨...。\r\n\r\nUpdate:剛剛已經改寫成另外一種方式了,不過好像沒快多少 :o 加減用吧 :p\r\n\r\nUpdate:換 Zip,然後增加 fork() 的數量,看看會不會比較快 :o\r\n\r\nUpdate:剛剛在 CPAN 裡面挖到 ParallelUserAgent,晚點來試看看好不好用 (效率...),再來決定要不要換上去。\r\n\r\nUpdate:換網址,換到 http://backup.hasname.com/,準備跟 DreamHost 申請 Disable mod_gzip 的功能。\r\n\r\nUpdate:昨天不小心改爛了 (有些 code 是寫死路徑的,從 hasname.combackup.hasname.com 的時候忘了一起換),剛剛把這些問題修正了。", + "title": "無名小站相簿備份服務" + }, + { + "id": "345", + "body": "Google.cn 被中國政府擋掉了,從上海以及北京都連不到。看來中國政府對於 Google.cn 還是不太滿意 XD:Google's China portal inaccessible in Shanghai, Beijing。\r\n\r\n說到 Search Engine,我發現 Baidu 真是個神經病,抓得這麼頻繁幹什麼,居然佔我 1/3 的 bandwidth...", + "title": "Google.cn" + }, + { + "id": "346", + "body": "Digg 報導了 Firefox 1.5.0.1 修正的這兩個 Memory Leak 問題的詳細內容,另外也討論了其他的 Memory Leak 的問題:Firefox Memory Leak Progress。\r\n\r\n文章中提到了 Leak-Gauge 可以讓進階 (但還不夠進階直接拿 Debugger 殺蟲) 的使用者觀察 Memory-Leak 的情況,目前已經有 19 個人利用 Leak-Gauge 回報了 30 個 Memory Leak Bug... 作者在 comment 裡面似乎很希望 1.5.0.2 能夠把 Leak-Gauge 包進去?\r\n\r\n也許該換 trunk 測試看看了...\r\n\r\nUpdate:trunk 並不穩定,我早上換掉以後已經爛掉兩次了...", + "title": "Firefox 1.5 的兩個 Memory Leak 問題" + }, + { + "id": "347", + "body": "Digg 上面突然冒出一堆跟 Google Maps 有關的新聞。\r\n\r\n像是被遮住的部分:What is Google Maps hiding in this image?\r\n\r\n\"\"\r\n\r\n血湖:Bloody Water in Iraq?\r\n\r\n\"\"\r\n\r\n五十一區:Area 51's Looking Good\r\n\r\n\"\"", + "title": "Google Maps" + }, + { + "id": "348", + "body": "試用了一下在 Blog of Flickr Hacks 那邊看到的 Flash Earth,如果只是要拉圖拉來拉去,流暢度不輸 Google Earth...\r\n\r\n不需要額外安裝,還可以切換到 MSN Virtual Earth 的衛星資料,那似乎不需要裝 Google Earth 了... (因為我用不到裡面的功能)", + "title": "Flash Earth" + }, + { + "id": "349", + "body": "Digg 上面報導了 AzureusµTorrent 目前在做的 Message Stream EncryptionEncrypting Bittorrent to take out traffic shapers。", + "title": "Encrypted Bittorrent" + }, + { + "id": "350", + "body": "在 Digg 看到今年 MasterCardMacGyver 拍超級盃的廣告:MacGyver is BACK!!!。\r\n\r\n呃... 不過 Richard Dean Anderson 看起來又胖了不少,臉看起來多了不少肉 :p\r\n\r\nPS:影片下載的速度有點慢,似乎是因為 Digg Effect 的關係... 在 comment 的地方有人直接把 .flv 的 url 丟出來讓大家下載 :p\r\n\r\nPS:果然,comment 的地方又看到 Macgyver 2008 了 XD", + "title": "MasterCard 在超級盃的廣告:MacGyver" + }, + { + "id": "351", + "body": "

無名小站 Album 備份服務

\r\n\r\n這幾天不斷的在練習 WWW::MechanizeLWP::Parallel::UserAgent,終於把一個速度可以接受的版本寫出來了,只要 DreamHostmod_gzip 關掉以後,就可以看到下載的過程了,到時候再去其他地方宣傳...\r\n\r\n以我的相簿為例,目前的程式 (wretchalbum-zip.pl) 是先去抓這個使用者有哪些相簿,抓完了以後再到每一本相簿的第一張相簿點 \"自動播放\" 的部分,取得 Javascript 裡面的資訊 (thanks l5n),把這本相簿裡面所有的圖片位置存下來。\r\n\r\n最後,用 LWP::Parallel::UserAgent 一次抓所有的圖片,放到正確的目錄下,最後再用 zip 包起來 (不壓縮) 提供使用者下載。", + "title": "無名小站的相簿備份服務" + }, + { + "id": "352", + "body": "Russell Beattie 收到 SMS.ac 的信,要求他 Cease & DesistI got a C&D from SMS.ac。\r\n\r\n搜尋 SMS.ac 你可以看到 Russell Beattie 的文章在蠻前面的,大概就是這樣被捅的吧 :p 一年前 Joi Ito 也被捅過:Letter from Kevin B. Jones of sms.ac。\r\n\r\n不過 SMS.ac 本來就很糟了,國內其實也有報導過:SMS.AC免費送簡訊,有詐!。", + "title": "SMS.ac" + }, + { + "id": "353", + "body": "Boing Boing 看到另外一種六度分離:找出任何兩個 Wikipedia (英文版) 條目的距離:Six Degrees: How any two Wikipedia entries are connected。\r\n\r\n\"\"", + "title": "六度分離" + }, + { + "id": "354", + "body": "有人在 Digg 上面把 pre-Windows 95 (Chicago Build 58) 以及 pre-Windows XP (Windows Neptune) 抓出來鞭屍 (?):\r\n\r\n看這些 Screenshot 還蠻有趣的 :p", + "title": "pre-Windows 95 與 pre-Windows XP" + }, + { + "id": "355", + "body": "Slashdot 看到的:Google and Skype in Startup to Link Hotspots,其中報導裡的這段... XD\r\n
\"Linus\" members, named after Linus Torvalds, who created the freely distributed Linux software, will share their hotspot with other Linus members for free.\r\n\r\n\"Bill\" members, named after Microsoft Corp. founder Bill Gates, will charge for access to their hotspot. FON will get some of that revenue, and share it with Internet service providers, or ISPs.
", + "title": "Google 與 Skype 的計畫" + }, + { + "id": "356", + "body": "SlashdotPayPal vs Google(Buy):\r\n
Mr. Jordan (PayPal chief) says he and his team immediately \"dissected the wording\" of Google's statements. He says he doesn't believe Mr. Schmidt....
\r\n這個好 :p", + "title": "Google Buy" + }, + { + "id": "357", + "body": "\"\"", + "title": "上上下下左右左右 ABAB" + }, + { + "id": "358", + "body": "Digg 看到的,Firefox 2.0 第一個「比較正式的測試版」將在星期五釋出:Firefox 2.0 Alpha 1 Comes Out Friday!。\r\n\r\n在 MozillaWiki 上,Firefox2 這頁是這樣寫:\r\n
Next scheduled release date: February 10, 2006 (Alpha 1)
\r\n所以台灣時間星期六 (2006/2/11) 中午之後應該就可以在各 FTP site 看到 Alpha 1。\r\n\r\nFirefox 2.0 幾個重大的功能 (對我來說):\r\n\r\n剛好都是 TBD 負責的項目...\r\n\r\n另外附上目前在 Firefox2/Schedule 排定的時程表,大約是放暑假的時候正式推出 Firefox 2.0:\r\n", + "title": "Firefox 2.0 Alpha 1" + }, + { + "id": "359", + "body": "有人在 Gmail 的 Javascript 內找到 Google 可能要做的計畫:GMail Code Hints at Coming Feature。原報導在 GMail code hints at coming domain feature 這裡。\r\n\r\n寫 code 要小心 :p\r\n\r\nUpdateDigg 上報導了 Gmail 裡面的 Javascript code 確有其事:Gmail for your domain。", + "title": "Google Domain?" + }, + { + "id": "360", + "body": "IBM 打算推出 4GHz ~ 5GHz 的 PPC CPU 後,有不少人有同樣的問題:Apple Switched Chips Too Soon?。\r\n\r\n當然,另外一個想法是:\r\n
Apple too soon or IBM too late?
\r\n不過時間點... (Apple 是在去年六月公布 Intel Mac 的計畫)", + "title": "PPC 4GHz ~ 5GHz" + }, + { + "id": "361", + "body": "布丁 這篇 Call For Help: Trac on DreamHost 在找人幫忙投票,如果你有 DreamHost 帳號,而且覺得 Trac 還不錯,請您幫忙 :p\r\n\r\nPS:布丁 找我投的時候我發現我早就投過了... XD", + "title": "DreamHost 上的 Trac" + }, + { + "id": "362", + "body": "由於 Apple 在 Player (iPod) 與網路音樂 (iTunes) 的獨佔地位而被裁定違反反托垃斯法:Antitrust Case Against Apple Approved!!! (Digg)。\r\n\r\n原報導在 Antitrust case approved against AppleJudge approves antitrust case vs AppleNorthern California Judge Gives Green Light to Monopolization Suit Against Apple 這裡。", + "title": "反托拉斯法 - Apple" + }, + { + "id": "363", + "body": "弄了一台 Mac Mini 來熟悉 Mac 的環境,把 Firefox 裝了起來,跟 x31 的 Windows XP 字形比較一下,果然差很多 :p\r\n\r\n操作起來不是很習慣 (應該是因為接觸 Windows 太久),多研究看看怎麼用好了... 可能要問一些之前就在用 Mac 的長輩們有什麼要調整的 :p", + "title": "Mac Mini" + }, + { + "id": "364", + "body": "為了 de 我家小鹿鹿的 bug,被 GDB 玩好幾天... 尤其是該死的 memcpy(),為什麼會把 stack 弄爛呢 !@#$%^,這樣我要怎麼往上 trace 啊 -_____-\r\n\r\nPentium III 上的 Hardware Watchpoint 不知道能下幾個... 晚點繼續試 =_=\r\n\r\nPS:本篇純粹只是在碎碎念而已...", + "title": "GDB" + }, + { + "id": "365", + "body": "好像每一陣子就會被拿出來講...。\r\n\r\n現在大家所看到的 Maple3 並不是 opus (Original author) 或 Thor 親自釋出的。而是透過兩個管道流出,一個是從 woju 的 FromZero (從零開始):(Re: NTHU-CS Maple 3.0 BBS ports 計畫展開!Re: 想請 vanilla 幫忙做 ports),另外一個是 lkchu 放出來的 Maple3 (3.02 版)。\r\n\r\n現在大家在用的 Maple3 都是 lkchu 放出來的版本,這個版本在 ftp://php.twbbs.org/pub/bbs/ 下還找的到,也成為後來其他 Maple3 BBS 主要的來源 (包括了 KKcity無名小站巴哈姆特)。\r\n\r\n在 Open Source Community 的部份,目前還有繼續維護的應該只剩下 MapleBBSitoc。\r\n\r\n回到原來主題,有些人宣稱 Maple3 的授權不是 GPL (Ptt2,in2 板),有些人對外宣稱 Maple3 是 Cleanroom Software (有沒有自由軟體的同好呀...),不過,如果用 grep 掃一次當年 lkchu 所釋出的版本:\r\n
gslin@netnews [~/work/bbs/src] [3:55/W4] grep -r '2\\.36' .\r\n./innbbsd/Makefile:# innbbsd/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./bmtad/Makefile:# bmtad/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./bpop3d/Makefile:# bpop3d/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./include/bbs.h:/* bbs.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/global.h:/* global.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/modes.h:/* modes.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/proto.h:/* proto.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/perm.h:/* perm.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/struct.h:/* struct.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/config.h:/* config.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/global.h~:/* global.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/config.h~:/* config.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./include/modes.h~:/* modes.h ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./bgopherd/Makefile:# util/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./maple/board.c:/* board.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/cache.c:/* cache.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/edit.c:/* edit.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/mail.c:/* mail.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/xover.c:/* xover.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/Makefile:# Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./maple/bso/Makefile:# Makefile ( NTHU CS MapleBBS Ver 2.36 ) #\r\n./maple/bso/vote.c:/* vote.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./maple/bso/chat.c:/* chat.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./util/hdr-dump.c:/* util/hdr-dump.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./util/mail.acl:110542.3651@compuserve.com SPAM # Jan 12 03:27:54 17 (110)\r\n./util/mailpost.c:/* util/mailpost.c ( NTHU CS MapleBBS Ver 2.36 ) */\r\n./util/Makefile:# util/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
\r\n呃... Cleanroom?\r\n\r\n如果你有改過 Maple2 與 Maple3 的 source code,應該還會發現裡面某些 function 根本是直接抄 Maple2 的。如果你有翻 src/lib/ 下的東西,還可以發現某些 BSD license code (但是卻沒有把 license 的部份附上,參考 src/lib/xsort())\r\n\r\n這個問題,應該很明顯了吧...", + "title": "Maple3 的軟體授權問題" + }, + { + "id": "366", + "body": "Slashdot 上看到的新聞:Microsoft Anti-Spyware Removes Norton Anti-Virus,原報導在 Microsoft Anti-Spyware Deleting Norton Anti-Virus 這篇。\r\n\r\n沒有做測試就丟出來了...?", + "title": "微軟的 Anti-Spyware 軟體把 Norton Anti-Virus 判為木馬" + }, + { + "id": "367", + "body": "在 Digg 看到日本麥當勞的廣告:McDonalds in Japan uses sex to sell burgers (video),如果同樣類型的廣告也在台灣播放的話不知道會怎樣 XD\r\n\r\n這段廣告的影片在 Youtube 上:McDonalds Japan McGrand Tomato CM。", + "title": "麥當勞在日本的廣告" + }, + { + "id": "368", + "body": "Whois Query 的記錄被濫用:Thinking about registering a domain? Don't check if it's available!。\r\n\r\n這些提供 Whois Query 的公司會記錄有哪些關鍵字被搜尋,然後在裡面挑一些好的名字註冊起來。所以如果你真的需要查是否有被註冊,用 Unix 下的 whois,而不要用這些 Search Engine 提供的功能會比較好...", + "title": "Whois Query 記錄被濫用" + }, + { + "id": "369", + "body": "第一步:文章回應Html tag,Javascript過濾。不知道會不會有第二步,把某些可以用 GET 的部分處理一下...\r\n\r\nPS:據說無名的 XSS 還是沒修完啊...", + "title": "樂多對於 XSS 的第一步" + }, + { + "id": "370", + "body": "剛剛在 nctu 板上看到的資料:(www.aloha168.com.tw/time2.htm)\r\n
本公司將於每個星期五、日兩天,爲交通大學 教職員、學生,派專車運送回北部、南部返鄉,目前試辦開始的車輛數為:\r\n星期五:新竹往高雄3部車、新竹往嘉義2部車、新竹往台北2部車。\r\n星期日:高雄往新竹1部車,嘉義往新竹1部車、台北往新竹2部車。
\r\n看起來還不錯 o_O", + "title": "阿羅哈客運的專車" + }, + { + "id": "371", + "body": "在 Digg 上看到可以讓 Mac Mini 使用雙螢幕的工具:Mac mini with Dual Displays。\r\n\r\n\"\"\r\n\r\n其實那個盒子就是拐 MacOS,告訴他有一顆 2560x1024 (或其他類似的) 的螢幕。然後再把訊號拆開,輸出到實際的兩個螢幕上...\r\n\r\nUpdate:在 Mac mini dual monitors using DualHead2Go 有提到,需要 SwitchResX 這套軟體設定 2560x1024:\r\n
once you receive all the hardware, you simply plug it up in the (somewhat) natural way, mini to dualhead2go, out to two monitors. I added the custom resolution to the system using the SwitchResX tool, which has a free 15 day trial, and then costs $15. This process is fairly painless. You simply open up the SwitchRes control, and in the Resolutions tab hit Custom, then New. Put in 2560 for Horizontal, and 1024 for Vertical, hit Ok, and you're good to go! Shut down your mini, then hook up the Matrox box, restart, and you should be putting along in dualscreen mode.
", + "title": "Mac Mini 雙螢幕" + }, + { + "id": "372", + "body": "在 Greg Linden 的 Blog 上看到 Oracle 想要買下 Sleepycat (也就是目前搞 Berkeley DB 的公司) 的新聞:Oracle to buy Sleepycat?。原新聞在 BusinessWeekOracle's Open-Source Shopping Spree。\r\n\r\n如果成真,MySQL 又有一個 Backend 被買走... (上次是 InnoDBMySQL 目前唯一支援 Row-Locking 的 Backend)\r\n\r\nUpdateSleepycat 【已經】被 Oracle 買下了,參考:Oracle buys Sleepycat Software。", + "title": "Oracle 與 Sleepycat 的消息" + }, + { + "id": "373", + "body": "在 Digg 看到的 XD\r\n\r\n十個程式設計師絕對不會/不該遵守的原則:Top Ten List of Programming Advice to NOT Follow,原來的文章在 Top Ten of Programming Advice to NOT follow 這。\r\n\r\n在文中抱怨這十項原則不切實際,所以不該遵守。(反正你也不會遵守,只是不要為此感到愧疚 XD)", + "title": "十個程式設計師絕對不會/不該遵守的原則" + }, + { + "id": "374", + "body": "在 Jeremy Zawodny 那邊看到 Yahoo! 把一堆 Javascript code 整理出來,以 3-clause BSD license 放出,可以拿來參考用:Yahoo! UI Library。\r\n\r\nUpdateSimon Willison 寫了一篇 Yahoo! UI JavaScript treats 講的比較詳細,而且文後有一個小範例 (Animation 的範例),告訴你很好用 :p", + "title": "Yahoo! UI & Design Patterns" + }, + { + "id": "375", + "body": "BitComet 0.62 的 Release Note:\r\n\r\n1/28 的漏洞 (我在 BitComet 安全漏洞 這篇有提過),拖了這麼久... Changelog 上面卻沒看到修正記錄?", + "title": "BitComet 0.62" + }, + { + "id": "376", + "body": "在 Photo Matt 那邊看到 30 Boxes (一個 AJAX Calendar):30 Boxes。\r\n\r\n丟了一些 event 進去測看看,用 AJAX 的東西果然有 Web 2.0 的感覺... 不過這東西的 bug 也頗有 Web 2.0 的風範 (寫這句的時候讓我想到在 shakalaka 那邊看到的文章 (其實是圖片):Web 1.0 與 Web 2.0 的不同)。\r\n\r\n\"\"\r\n\r\n有些地方是設計上的問題,造成操作起來頗不方便 (這可能是因為 Flickr 用習慣了,想要改什麼,就直接在文字上面按一下,那個區塊就變成可以修改的狀態),另外一個奇怪的問題就是對中文支援的程度:在 Events 的地方可以打中文,但是在 Notes 的地方就會亂掉?輸入的時候是正常的,像這樣:\r\n\r\n\"\"\r\n\r\n可是存進去以後可以發現有問題:\r\n\r\n\"\"\r\n\r\n頁面是 UTF-8 沒錯,後端沒有設好?好像是首頁部份 encoding 沒設定好而已,因為我在其他頁可以看到?\r\n\r\n另外他可以讓你訂閱 (只有 read-only 權限),像是用 iCalendar 看:\r\n\r\n\"\"\r\n\r\n不過我發現他沒有讀取到四月以及更後面的資料 XD 只是拿來提醒用的 :p 其實我比較希望像 BloglinesNetNewsWire 一樣,可以直接在 Application 裡面修改...\r\n\r\n不管怎樣,還是很有潛力的 Web Calendar :p\r\n\r\nUpdate:結果 hlb 說他幹剿過了 XD 在 encoding problem in 'Notes' field 這裡。\r\n\r\nUpdate:目前這個問題討論得比較熱烈了... 其他國家語言也有類似的問題 :)", + "title": "30 Boxes - Web Calendar" + }, + { + "id": "377", + "body": "拿到 Mac Mini 後不斷在熟悉 Mac 上的環境,不過還是有一些問題沒解決:\r\n\r\n鍵盤的 Home 與 End 在一般的應用程式裡沒有辦法使用,我本來在猜是不是 Keyboard/Mouse 的地方設定錯了,但是...\r\n\r\nUpdate:在 Firefox 裡可以用 Cmd-Left 或 Cmd-Right 跳到頭或尾,thanks :)\r\n\r\n\"\"\r\n\r\n沒錯,Keyboard/Mouse 設定出不來 :p\r\n\r\n再來是講 Mac 上 Firefox 的問題,我用的是 1.5.0.1 官方提供的繁體中文版。首先,我遇到掉字的問題:\r\n\r\n\"\"\r\n\r\n所幸在目前只有選單會掉,所以不會造成太大的問題... 我知道有所謂的【換 Theme 大密技】,或是【把 Extension 移光光】之類的方法,不過... 1) 我不想換 Theme,2) 用 Firefox 就是要用他的 Extension 啊... 而且據說這個問題在好久前就有,我也不知道為什麼沒改好 XD\r\n\r\n再來是 Firefox + WordPress 的問題:在編輯文章時我常常會用 Hotkey (我不用 WYSIWYG 界面編輯器),在 Windows 上我可以用 Alt-A 設定 Hyperlink (其實就是加上 <a href=\"\"></a> 而已),Alt-B 設定粗體 (<b></b>),以及其他類似的 Hotkey。但在 Mac 上似乎沒辦法使用類似的功能:好像都被神祕程式攔走了。\r\n\r\nUpdatehlb 告訴我改用 Ctrl 就可以了,試了一下果然是這樣沒錯 :D\r\n\r\n然後再來講 iTerm 這個 Terminal Client,由於我跟 ijliao 一樣,需要使用 CLI 才能活 (參考 ijliaoiTerm 這篇),所以我也跑去裝了 iTerm 0.8.1。\r\n\r\n裝完以後把顏色什麼的設一設,字形 (黑體) 編碼 (我用 Big5 HK。我很久前換過 UTF-8 環境,不過發現換 UTF-8 環境最大的好處只有在收 Spam 的時候:你可以正確的讀出對岸的 Spam 內容,以及日本、俄國的。所以我就又換回 Big5 了),設定完以後連上去,也跟 ijliao 遇到同樣的問題:screen 會幫你 resize,不過這個還好,我跟 ijliao 也用同樣的解法...。\r\n\r\n另外,CenterICQ 的邊框是錯的,這個畫面在 Windows 上的 PuTTY 是正確的 (而且線都接起來,很漂亮):\r\n\r\n\"\"\r\n\r\n另外一張是 Ptt2 BBS,有新文章未讀的看板沒有對齊,應該是把勾勾當成 1 Byte 處理的原因:\r\n\r\n\"\"\r\n\r\n除此之外,iTerm 還有一個超奇怪的問題:你裝完 iTerm,第一次設定過字形、編碼、blah blah 後,存起來。下次要改的時候寫不進去 XD\r\n\r\n我的解法是在要改設定的時候到 ~/Library/Preferences/ 下把 iTerm.plist 砍掉,於是砍掉就可以設定了。(當然,砍一次只能設定一次,不然我就不會跑出來哀哀叫了 :D)\r\n\r\n零零總總的,目前大概就遇到這些問題吧,我只是要 Firefox 可以用、某個 Terminal 可以用 (讓我能夠用 ssh 連出去正確的看到東西),這樣就好了 :p\r\n\r\n也許晚點來裝交大授權的 Office 2004,看看會不會有奇怪的問題...", + "title": "Mac 下遇到的問題..." + }, + { + "id": "378", + "body": "Firefox 的 Back-Forward Cache 吃記憶體吃的很兇:這也是為什麼 1.5 跑起來比 1.0 快,但是肥多了的原因之一。\r\n\r\n在 Digg 上看到了 Inside Firefox 討論前陣子 Firefox 很嚴重的 memory leak,以及其他跟記憶體有關的問題:About the Firefox \"memory leak\"。\r\n\r\n在文章裡提到了 Back-Forward Cache 的頁面數目,也就是 about:config 裡的 browser.sessionhistory.max_total_viewers 這個變數。它的預設值是 -1,表示自動判斷。\r\n\r\n自動判斷 (-1) 的時候,記憶體數量在 32MB 以下的會自動關掉這個功能 (也就是跟設成 0 一樣),在 64MB 以下 (但是在 32MB 以上) 是 1,在 128MB 是 2,256MB 是 3,512MB 是 5,1GB 以上的是 8。由於這個數字是指【每個 Tab 所存的數量】 (Update:原來那篇文章的作者確認是總量而不是每個 Tab 的數量)【總共要存的數量】,當你 Tab 愈多,記憶體的用量就...\r\n\r\n所以在下面的 comment 就有人抱怨了:\r\n
Maybe 8 is not the best upper limit?\r\n\r\nDo users *really* need to go back 8 times? People usually does back a couple of times but 8....
\r\n他說得對,你會天天沒事去 Back 八次嗎?這種事情偶而才會來一次吧?於是我把我的 Firefox 改成 1:\r\n\r\n\"\"\r\n\r\n建議記憶體夠多的人用 2 或 3 就好了,用 8 實在太 (*逼*) 了...\r\n\r\n當然,下面已經有人提出建議,用一些算法 (像是 Current Tab 比較多,其他的比較少) 以降低用量之類的,不過那是以後才會看到的事情... 現在這種先這樣用吧。", + "title": "Firefox 的 Back-Forward Cache" + }, + { + "id": "379", + "body": "在 tw.bbs.rec.startrek 看到的:Star Trek Voyager: Last Night on Earth。\r\n\r\n影片的部分主要以 Star Trek Voyager: Endgame (Part I, Part II) 為主軸,音樂則是 Delta Goodrem 的 Last Night On Earth (from Mistaken Identity)。", + "title": "Star Trek Voyager: Last Night on Earth" + }, + { + "id": "380", + "body": "第一個是 iTerm 無法存設定的問題,我剛剛在 Google 上找到有人抱怨這件事情,並提出還可以的 Workaround:iTerm saving preferences!。\r\n\r\n這篇文章所提出來的解法在這,不過我還沒仔細看:iTerm 0.8.0 not saving prefs or config,在一年多 (仔細看下面的日期) 後找到的解法...\r\n\r\n另外一個是 iTerm + irssi 的問題,我想有 Windows 上的 Alt-1、Alt-2、... 切換 Channel 的功能要怎麼改?(也許我真的需要去 hack 看看到底出了什麼事情,為什麼好像還蠻簡單的軟體可以寫得這麼 buggy 呢...)", + "title": "iTerm 的兩個問題" + }, + { + "id": "381", + "body": "Flickr 編號一億的照片:\r\n\r\n\"\"", + "title": "Flickr 編號一億的照片" + }, + { + "id": "382", + "body": "你看過最機車的密碼要求是什麼?\r\n\r\nJeremy ZawodnyPassword Insanity 這篇文章裡抱怨某家公司的要求太過神經質 (你看完下面的說明後,也應該會完全同意他的說法...)。\r\n\r\n這家公司對於密碼基本的要求包括了:密碼必須在 8 ~ 15 個字之間、必須有一個數字、有一個大寫字母、有一個小寫字母、有一個特殊字元。\r\n\r\n再來,密碼裡不可以有連續三個一樣的字 (像是 aaa、zzz、333),也不可以有連續三個升降冪的情況 (像是 123、654、abc、zyx)。\r\n\r\n最後,如果你輸入的密碼在這套系統裡已前已經使用過了,不能把密碼改成之前使用過的密碼 XD (換句話說,他會記錄你所有用過的密碼!)\r\n\r\n想知道這家公司?這家公司叫 ADP。如果你去看他的網頁,你會發現一件非常 (...) 的事...\r\n\r\n在網頁右半部的標語是這樣寫:\r\n\r\n\"\"\r\n\r\n嗯... 啊... 喔... 呃... -_-", + "title": "設定密碼" + }, + { + "id": "383", + "body": "睡醒就被 mclee 大長輩 給搖醒:Google 台灣 : 科高?。剛剛也在 Schee 那邊看到了:Google Taiwan - 古狗正式進入台灣市場。\r\n\r\n看起來這幾年頗熱鬧啊...", + "title": "Google Taiwan Office" + }, + { + "id": "384", + "body": "\"\"\r\n\r\n上面這是今年情人節送給強者我同學 ashley 的花。\r\n\r\n在情人節前一個禮拜,在網路上晃啊晃的,決定幹些壞事 決定在情人節用比較特殊的方法表達同學間的關心:我決定送花給 ashley,但是卡片上不署名是誰送的,等到他發花痴亂想一整天以後再跟他說 XD\r\n\r\n於是就開始找資料...\r\n\r\n選好以後我就跟我同學講,他以前跟 ashley 是室友,聽了我的計畫以後就很興奮 (不知道是什麼心態 XD),問我我訂了什麼花,要我把樣式的 URL 丟給他看。看了我訂的樣式以後他就很怒:\r\n
你怎麼沒送紅色的玫瑰!情人節的花不是他喜不喜歡的問題啊!花是要給辦公室裡其他人看的!一定要鮮紅色的玫瑰啊啊啊!
\r\n被罵了以後我本來想要寫信去換的,後來想想還是算了 :p\r\n\r\n接下來就是等待。美西時間 2/14 中午 (在 Mail 上面寫會在中午送到) 大約是台灣時間 2/15 凌晨,我算了算時間,情人節當天花店的生意一定很重,那就 2/15 睡到白天醒來 (大約是美西快下班的時間) 以後打電話給 ashley,跟他聊聊天 XD\r\n\r\n結果我在 (美西) 下午三點打過去發現花沒送到!反而先被 ashley 知道!太可惡了!變成 ashley 說他很期待到底是什麼樣子 XD\r\n\r\n(後來到了 2/15 才送到,另外多送了一束玫瑰,上面的卡片說他們 2/14 那天從早上一直送,送到晚上十點才送完,但是因為 ashley 公司五點就下班了,希望接受我們的道歉 blah blah...)\r\n\r\nAnyway... 情人節快樂 :)\r\n\r\nPS:結果 ashley 說整個辦公室只有他收到花,而且還是兩個不同的人送的... (你這幾天要小心水裡面被放瀉藥之類的 XD)", + "title": "Valentine's Day" + }, + { + "id": "385", + "body": "有長輩測試 IE7 Beta2 後發現 IE7 Beta2 對於 SSL 設定有問題的站台會整個擋掉,而不會像以前那樣跳初一個小視窗出來要你確認:Stupid Google SSL Certificates。\r\n\r\n文章裡 Jeremy Wright 舉了 Google 的例子:他說 Google 的某些服務使用了 www.google.com 的 SSL Certificate,但是使用的站台並不是 www.google.com。\r\n\r\n不過我不記得 Google 哪個服務是這樣惡搞的啊?還是 Firefox 遇到同一個 Domain 的情況不會哀哀叫?這樣就太糟了...", + "title": "IE7 的 SSL 安全政策" + }, + { + "id": "386", + "body": "Intel-based Mac 上已經可以從 Linux 開機了,不過要從 USB 硬碟:\r\n
Using elilo and a modified Linux kernel, we can boot from a USB hard disk on the 17\" iMac Core Duo. We are using the hacked vesafb driver to inherit the bootloader's framebuffer, keyboard and a USB network card work. Gentoo runs and can compile the Linux kernel.
\r\n網站在:xbox-linux.org/mactel/index.php/Main_Page,目前因為 SlashdottedDigg Effect 的關係,網站速度很慢,你可以透過 CoralCDN 連:xbox-linux.org.nyud.net:8090/mactel/index.php/Main_Page。\r\n\r\n這是開機的畫面:\r\n\r\n\"\"", + "title": "Intel iMac 上執行 Linux" + }, + { + "id": "387", + "body": "在 Digg 上看到 McAfee 的 George Kurtz 在 RSA Conference 2006 會場展示用 Google 找出來大批不適合公開的資料:Things you don't want Google to find - screenshots,原文在 Things you don't want Google to find 這,包含了豐富的 Screenshot 可以看 XD\r\n\r\n而在 Digg 的第一個 comment 則提供了一個連結,早在一年多前 O'ReillyONLamp 上就有告訴你怎麼用 Google 找到這些資料:www.onlamp.com/security/2004/10/07/examples/signatures.txt。\r\n\r\n如果你有想到,這些資訊配合上 Social Engineering 時,能夠發揮的效果很棒啊...\r\n\r\n所以該用 .htaccess 限制 Username/Password 存取的部份還是要做啊,不要以為 Search Engine 找不到... (就如同很久前 IRC 上某 channel 的 log 流出是一樣的道理)", + "title": "用 Google 尋找各種不適合公開在網路上的資料" + }, + { + "id": "388", + "body": "在 Wikipedia 上看到 Bittorrent Encryption 的條目【Protocol header encrypt】,說明最近這幾個月 (Bittorrent) Header Encryption 的故事。\r\n\r\n這段故事從 BitComet 先在 0.60 版實作 Protocol Header Encryption (PHE) 開始講,但是這部份的實作細節並沒有公開發表,所以其他 Bittorrent 軟體也不知道要怎麼做。\r\n\r\n過了幾個月後 IPP2P 宣稱找到方法偵測 BitComet 的 PHE (由於 BitComet 的實作方式沒有公開,這部份應該是使用逆向工程法找出規則)。\r\n\r\n再來是 Azureus 決定自己發展一套規格,後來經過了一些事情,決定與 µTorrent 一起合作。\r\n\r\n我剛剛看了一下目前的 Spec 網頁,發現在 2/9 的時候 1.0 版的實作規格就已經定案:Message Stream Encryption (aka PHE) format specification,而 Azureus 2.4.0.0 也成為第一個支援 MSE/PE 的正式版本,µTorrent 的 Beta 版也有支援部份 Protocol。", + "title": "Bittorrent 的 Encryption (MSE/PE)" + }, + { + "id": "389", + "body": "\"\"\r\n\r\nUpdate:剛剛去看的時候已經修正了。", + "title": "附圖一張" + }, + { + "id": "390", + "body": "CoralCDN.nyud.net:8090 換到 .nyud.net:8080,舊的還是會動,但是建議大家以後都用新的:CoralCDN starts using port 8080。\r\n\r\n換 port 有什麼好處嗎 hmmm...", + "title": "CoralCDN 的公告" + }, + { + "id": "391", + "body": "ZDNet 發現 Gmail 裡面的 Javascript code 又有新東西了:More code foreshadowing perhaps?。\r\n\r\n這次是 Voicemail:\r\n
var hZ=\"inbox, star, starred, chat, chats, draft, drafts, sent, sentmail, sent-mail, sent mail, all, allmail, all-mail, all mail, anywhere, archive, spam, trash, read, unread, voicemail, voicemails\";
\r\n以及 Evite.com:\r\n
var Js=new AG([\"gmail.com\", \"googlemail.com\", \"google.com\", \"evite.com\"]);
\r\n之前放到 Gmail 上的 code 被發現以後很快就公佈服務了,這次應該也是?\r\n\r\nGmail 的功能愈來愈多了...", + "title": "Gmail" + }, + { + "id": "392", + "body": "Binary Bonsai (也就是我現在用的這個 Theme K2 的發展團體) 現在是用 Vanilla Forum,我有架過 (在 vanilla UTF-8 修正 這篇),也用過一陣子,的確不好用,所以他們決定換軟體:vBulletin Donation Drive\r\n
We've now been using these Vanilla forums for a good while now, and the traffic has skyrocketed way beyond anything I could've hoped or imagined for.\r\n\r\nI've noticed however, that I am continually lost in the massive activity on here. It's hard to really keep track of what's new and what belongs where. It is of course not helped by the fact that the current beta I've installed is quite buggy; but I'll take full responsibility for that,\r\n\r\nAnyway, I looked a bit at the other solutions out there, specifically what solutions that are being used on the forums I otherwise frequent. And as near as I can tell, vBulletin is the best solution out there at the moment. It's highly customizable, well supported and it works very very well. There's only one problem, it costs money.\r\n\r\n$160 to be specific.\r\n\r\nSo Chris and I agreed to try doing a small donation drive to see if we couldn't raise the money to buy a license for vBulletin.\r\n\r\nSo what's in it for you? Well, if you feel like I do, that the current forums are a bit hard to navigate, your reward will be a better forum. Also however, we'll do a tribute page, on which your name will 'weigh' as much as your relative donation. (If you don't want your name on the donation page, make sure to note that down).\r\n\r\nMake sure to include a URI to your site, if you have one.
\r\nUpdate:捐款已經到 140% 了 :)\r\n\r\nUpdate:新的 forum 已經上線了,公告的文章在這:IMPORTANT: NEW FORUMS!,而 forum (vBulletin) 在這:K2 Community Forums。\r\n\r\n當然,一樣有 RSS 可以訂閱 :)", + "title": "K2 Forums" + }, + { + "id": "393", + "body": "一張在 Flickr 看到的圖:\r\n\r\n\"\"", + "title": "iPod" + }, + { + "id": "394", + "body": "Komica 的 RSS。\r\n\r\n放在 http://bsdrss.com/komica/,裡面那堆 .xml 就是每個討論區的 RSS feed。另外有個 komica-pl.txt 是 Perl script。\r\n\r\nUpdate:我用 Bloglines 訂閱,看不到圖。我正在解決,但如果你知道原因,麻煩留個言或是 mail 給我,謝謝。\r\n\r\nUpdate:我知道原因了 (Referer),正在用另外的方法解決 :o", + "title": "Komica RSS" + }, + { + "id": "395", + "body": "\"\"", + "title": "la trobe' HDRI" + }, + { + "id": "396", + "body": "Maxxuss Patches for Mac OS X 10.4.4 8G1165 x86:\r\n
This is the first release of my Patch Solution for the official Mac OS X 10.4.4 on the Intel platform. It allows you to run this Mac OS X release on a generic x86 computer (SSE2 required).
", + "title": "Mac OSX 10.4.4 on x86 Platform" + }, + { + "id": "397", + "body": "看到 GongDa's BlogBittorrent 的 Protocol header encrypt(PHE)、Message Stream Encryption(MSE)/PE 這篇提到:\r\n
另外,和 rxlin 討論的時候,他有提到說都公佈了實作部分的話,那是不是 ISP 也知道怎麼擋了…-_-|
\r\nSSL 也公佈了實做的部分,你目前有辦法截聽內容嗎?同樣的思路放到這邊來,我只要把固定字串的判斷改用密碼學裡面的方法,是不是也可以達到「無法偵測」的效果?\r\n\r\n目前 MSE 1.0 版是透過五個步驟把資料送出去:\r\n
\r\n\t
A->B
Diffie Hellman Ya (96 bytes)
PadA (Random, 0 ~ 512 bytes)
\r\n\t
B->A
Diffie Hellman Yb (96 bytes)
PadB (Random, 0 ~ 512 bytes)
\r\n\t
A->B
HASH('req1', S) (16 bytes)
HASH('req2', SKEY) xor HASH('req3', S) (16 bytes)
ENCRYPT(VC, crypto_provide, len(PadC), PadC, len(IA)) (Random, RC4)
ENCRYPT(IA) (Random, RC4)
\r\n\t
B->A
ENCRYPT(VC, crypto_select, len(padD), padD)
ENCRYPT2(Payload Stream) (這邊開始傳實際的內容)
\r\n\t
A->B
ENCRYPT2(Payload Stream) (這邊開始傳實際的內容)
\r\n
\r\n前面兩個步驟是雙方先各自產生一個 Xa 及 Xb,然後各自計算出 Ya 及 Yb 丟給對方。對方收到後用自己的 Xb (或 Xa) 與 Ya (或 Yb) 運算,就會得到 S,也就是規格裡面這段:\r\n
DH secret: S = (Ya^Xb) mod P = (Yb^Xa) mod P
\r\n這就是 D-H exchange,如果你問,在得知 Ya 與 Yb 後,是否可以求得 S,或是更強烈,直接求得 Xa/Xb:這是密碼學上的 Discrete Logarithm Problem,目前 768 bits 的強度已經足夠應付藍星的 P-Cube 或是其他類似的設備。\r\n\r\n接下來的 SKEY 是 .torrent 檔案裡面的資訊,第四步的 ENCRYPT 是 RC4,最後面的 ENCRYPT2 是選用 plaintext 或 RC4 編碼,但到這邊的 offset 已經不固定了...。\r\n\r\n以這個架構,目前看不出來要怎麼擋。也許是透過軟體實做上的瑕疵 (像是亂數太過規則之類的),不過這個就算發生,也只是那套軟體的問題。另外一種可能是透過 MSE 在大量連線上可能造成密碼系統的弱點,不過到時候 2.0 版又會跟著出爐...", + "title": "MSE/PE 的實做" + }, + { + "id": "398", + "body": "MacBook Pro 正式出貨 網友分享拆箱照:\r\n
Apple 的 MacBook Pro 在上週才正式開始交貨,本週末就有幸運的網友在收到新機器後的第一時間把對於 Mac 迷們有相當重大意義的新產品拆箱照片上傳至 Flickr 網站與同好們分享。
\r\nMacBook Pro Packaging:\r\n
MacBook Pro Packaging. These are said to be internall pics from the Apple campus.
", + "title": "MacBook Pro" + }, + { + "id": "399", + "body": "\"\"", + "title": "Portico" + }, + { + "id": "400", + "body": "自製硬體的 Keylogger,很邪惡:DIY hardware keylogger。", + "title": "硬體的 Keylogger" + }, + { + "id": "401", + "body": "MySQL 4.x/5.0 User-Defined Function Local Privilege Escalation Exploit,還看到 cvs tag...:\r\n
/*\r\n * $Id: raptor_udf2.c,v 1.1 2006/01/18 17:58:54 raptor Exp $\r\n *\r\n * raptor_udf2.c - dynamic library for do_system() MySQL UDF\r\n * Copyright (c) 2006 Marco Ivaldi <raptor@0xdeadbeef.info>\r\n *\r\n * This is an helper dynamic library for local privilege escalation through\r\n * MySQL run with root privileges (very bad idea!), slightly modified to work \r\n * with newer versions of the open-source database. Tested on MySQL 4.1.14.
", + "title": "MySQL 4.x/5.0 安全問題" + }, + { + "id": "402", + "body": "在 Digg 看到 XP Desktop Environment for Linux,模擬 Windows XP 的視窗桌面:\r\n\r\n\"\"", + "title": "在 X 下模擬 Windows XP 桌面環境" + }, + { + "id": "403", + "body": "在 Digg 看到 World's largest Windows error message:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "時代廣場的 Windows Error Message" + }, + { + "id": "404", + "body": "ACM 公佈 2005 的名單了:2005 Award Recipients。", + "title": "ACM 2005 Award Recipients" + }, + { + "id": "405", + "body": "在 Ptt 上看到有人在抱怨 Razorback 連不上,結果剛剛看到這個全世界最大的 eDonkey Network 伺服器 (在比利時與瑞士) 被抄掉的消息:Razorback Servers Seized。\r\n\r\n看了一下原因,可以知道是因為 Razorback 上面的資訊「幫助犯罪」而被抄。所以可以預期以後的 eDonkey Network Server (中央伺服器) 只會剩下 Bootstrap 的功能,用以讓新安裝軟體的機器找到其他有參與 Kad Network 的人。而最重要的搜尋以及下載的功能都會透過 Kad Network (無中央伺服器型 P2P 網路) 完成。", + "title": "eDonkey Network 的 Razorback Servers 被抄" + }, + { + "id": "406", + "body": "在 Digg 看到 Gmail 有 Smart Reply 的功能了:New GMail Feature: Smart Replying。\r\n\r\n在英文版的 Gmail 裡面 (我不確定中文版支援了沒),你可以設定多個 e-mail 帳號,然後當這些帳號認證過以後就可以用來當作 From。\r\n\r\n但以前要 Reply 的時候 From 一定會是 username@gmail.com,現在的 Smart Reply 會看對方寄到哪個信箱而決定 From:Gmail fixed reply problem。(當然,你可以再改回 username@gmail.com)", + "title": "Gmail 的 Smart Reply" + }, + { + "id": "407", + "body": "Yahoo!PHPYahoo! Developer Network - PHP Developer Center。\r\n\r\n主要的重點都在 Web Service 上...", + "title": "PHP Developer Center @ Yahoo!" + }, + { + "id": "408", + "body": "How Spammers Can Abuse Google Pages 講到了一個問題:由於 Google Pages 是使用 username 當作 domain 的一部份,所以以後 Spammer 可以用 site:pagetastic.com | site:googlepages.com 當作搜尋的條件,然後得到 e-mail 的部分...\r\n\r\n現在用這個條件搜尋已經可以得到一些資料了,過個幾個禮拜後應該會更明顯...", + "title": "Google Pages 洩漏了 E-mail 資訊" + }, + { + "id": "409", + "body": "Slashdot 上看到 iPod 在日本的市場佔有率過半的新聞:iPod Takes Japan by Storm。\r\n\r\n如果 Microsoft 沒有在 Desktop OS 卡住位置,應該可以看到 Steve Jobs + Borg 的合成照片...", + "title": "iPod 在日本的市場佔有率過半" + }, + { + "id": "410", + "body": "37signals 拿了一個 Upload files & notify 的例子來解釋如何事前規劃,然後實做出來:A sketch to screen case study。\r\n\r\nerrr... 最近好像用的到...", + "title": "事前規劃" + }, + { + "id": "411", + "body": "在 Google Blogoscoped 看到 Google Payment 的新聞:Google Payment News,然後在 Official Google Base Blog 上看到了正式的說明:Buying on Google Base。\r\n\r\nGoogle Base 其實是一個很大的 Database,上面放了很多資料/資訊,有些人在上面賣東西。Google Base 計畫整合 Gmail 的帳號 (就像現在 Google Video 付款),讓買家用信用卡付款,讓賣家直接在 Google Base 上面整理資訊。", + "title": "Google Base 與 Google Payment" + }, + { + "id": "412", + "body": "在 rafan 板上看到 devel/libtool13 移除,然後把 devel/libtool15 搞定,結果因為 pkg-plist 會跟著改變,整個 ports tree (~14000 ports) 裡面有 ~2000 ports 需要 recompile:\r\n
  Log:\r\n  Conversion to a single libtool environment.\r\n  \r\n  Approved by:    portmgr (kris)
\r\n完整的 cvs log 在這 (注意:網頁很大!):cvs commit by Ade Lovett,看起來是故意在 RELEASE 前 (5.5-RELEASE 及 6.1-RELEASE) 弄出來,讓新的系統就直接是新的環境。", + "title": "FreeBSD ports 的 libtool 大變動" + }, + { + "id": "413", + "body": "Russell Beattie 又收到另外一封來自 SMS.ac 的信,因為 SMS.ac 似乎不太滿意他之前說明的那篇文章 (在 SMS.ac 這篇文章有提到):Another Letter from SMS.ac。", + "title": "SMS.ac 再送一封信給 Russell Beattie" + }, + { + "id": "414", + "body": "在 #bsdchat 上看到 zonble 丟出來的 url,可愛到爆炸 XD\r\n\r\nExclusive: Firefox 2.0。\r\n\r\n\"\"", + "title": "Firefox" + }, + { + "id": "415", + "body": "\"\"", + "title": "Submerged" + }, + { + "id": "416", + "body": "前幾天在 blog.gslin.org.htaccess 擋掉 Baidu Spider 後,流量少了 40%:\r\n
#\r\nSetEnvIf User-Agent ^Baidu baidu\r\nDeny from env=baidu
\r\n舊站 gslin.org 也擋了,不過好像沒什麼影響,跟原來流量差不多。", + "title": "擋掉 Baidu Spider" + }, + { + "id": "417", + "body": "\"\"", + "title": "圖" + }, + { + "id": "418", + "body": "\"\"", + "title": "Just around the corner" + }, + { + "id": "419", + "body": "\"\"", + "title": "They needed the car" + }, + { + "id": "420", + "body": "\"\"", + "title": "In a Dream" + }, + { + "id": "421", + "body": "這幾天顧著練牌,看起來要下星期才有機會把 Bloglines 裡面一堆資訊消化完,不過有些東西還是先來幹剿兩句好了。\r\n\r\n第一個,在「網路真的是匿名的嗎?」這篇文章的最後面:\r\n
amarylliss | 01/03/2006, 17:42\r\n\r\n部落格版主:\r\n\r\n您好!我是智邦生活館的編輯。智邦生活館首頁改版新推出編輯推薦-網摘精選單元。在網路上四處為網友們精挑細選好文章。今日拜讀此篇文章,欣賞其中的筆調和觀點,將其選為 2006年3月2日艾瑪美食生活頻道的網摘 (http://digest.url.com.tw/amarylliss/),與網友們分享。我們推薦如果造成你的不便,煩請回信告知。如需好文貼紙,請至 http://digest.url.com.tw/amarylliss/sticker.php 謝謝您!\r\n\r\n敬祝 平安\r\n\r\n智邦生活館網摘頻道編輯 敬啟
\r\n這跟 美食生活頻道 有什麼關係?trackback & pingback 好像也不是長這樣啊。我記得其他的網摘服務好像也沒有這種 log... (Hey!!! 學長 你不要學到這種壞習慣啊)\r\n\r\n不過台灣有太多 Service 是建立在 Spam 的基礎上,從 PChome 的 Spam Mail、無名小站在留言板的 Spam,智邦也開始搞這套了...\r\n\r\n前面兩家都是這樣大起來,或許應該可以考慮看看 2345 了?XD\r\n\r\n第二個,再幹剿一次沒什麼誠意的 PChome,在 ijliao 這篇 PChome 的垃圾信 後:\r\n
6. ijliao | 七月 23rd, 2005 at 4:53 pm\r\n\r\n問題是他給你 unsubscribe 啊,只是沒作用 XD\r\n真要告他,他也可以賴說是程式有問題,感謝您的回報之類…\r\n唉呀,一皮天下無難事啦…
\r\n然後在 PChome 上班的 jwbai 出來說:\r\n
10. jwbai | 七月 25th, 2005 at 12:01 am\r\n\r\n看你方不方便把取消訂閱失敗的報名告訴我,我會跟同事研究看看怎麼來修正。\r\n\r\n這類的問題應該是存在已久,現階段能改善的部份我們會盡量去做。
\r\n半年過去了... (狂笑)\r\n\r\n第三個,前幾天在 IRC 上 hlb ijliao 丟了一個 url 出來:http://del.icio.us/balazoo/self-spammed,這個 tag 標的實在太棒了 XD", + "title": "Spam" + }, + { + "id": "422", + "body": "\"\"", + "title": "in the laundry II" + }, + { + "id": "423", + "body": "看完 Apple Mac OS X \"/usr/bin/passwd\" Binary Local Privilege Escalation (root) Exploit 後我無言了... -_-\r\n\r\n我不懂 /usr/bin/passwd 怎麼寫的啊啊啊...", + "title": "Apple Mac OS X 的 Security Hole..." + }, + { + "id": "424", + "body": "Lyceum 是一套多人修改自 WordPress 的軟體,以提供多人使用。MattWordPress and Lyceum 這篇提到關於 Lyceum 對於資料庫的設計:\r\n
From my examination of the code, it seems it’s exactly what WordPress MU is except they’ve modified every SQL statement (what a pain!) to use a monolithic table structure. We tested this approach for MU, but found it was too expensive to scale past a certain point. With monolithic structures you hit a wall based on your hardware.\r\n\r\nIn MU users are divided and can be partitioned easily, for example on WordPress.com we have the users partitioned between 4096 databases, which allows you to scale very cheaply and efficiently to hundreds of thousands and even millions of users and extremely high levels of traffic.
\r\n結果 WordPress.com 對於 Database 的作法都一樣... (默)", + "title": "Lyceum" + }, + { + "id": "425", + "body": "Boing Boing 在許多國家被過濾:\r\n\r\n所以 Boing BoingBOING BOING'S GUIDE TO DEFEATING CENSORWARE (see story here) 這裡提供了許多方法避過 Filtering。", + "title": "Boing Boing 被許多國家過濾..." + }, + { + "id": "426", + "body": "在 Digg 看到的舊新聞,SourceForge 除了提供 CVS 以外,也開始提供 Subversion 了:Sourceforge does Subversion。\r\n\r\n我在去年三月提到過「sourceforge 要提供 subversion 服務」,用了快一年的時間才正式上線...", + "title": "Sourceforge Subversion" + }, + { + "id": "427", + "body": "Symantec Users, Start Your Keyloggers 看到的,當你在 irc channel 上輸入 \"startkeylogger\" 或 \"stopkeylogger\" 時,使用 Norton Internet Security 或 Norton Personal Firewall 的人就會自動離線 XD\r\n\r\n原始的報導在 Malware-Speak Spooks Symantec 這裡:\r\n
Turns out that if someone types \"startkeylogger\" or \"stopkeylogger\" in an IRC channel, anyone on the channel using the affected Norton products will be immediately kicked off without warning.
", + "title": "Norton 的誤判" + }, + { + "id": "428", + "body": "一般在發現 Security Issue 後都會以 mail 先通知負責的單位 (Vendor),直到提供 patch 或是修正問題後才會將 Security Issue 公諸於世。\r\n\r\n不過,有時候也會遇到不想鳥你的單位... 這時候就光明正大的給他一腳吧 XD\r\n\r\nGoogle Reader \"preview\" and \"lens\" script improper feed validation:\r\n
IV. HISTORY\r\n30th Jan, 2006 -\tBug originally discovered\r\n2nd Feb, 2006 -\t Vendor Notified\r\n... \r\n... \r\nNo vendor response\r\n...\r\n...\r\n22nd Feb, 2006 -\tVendor Notified again\r\n22nd Feb, 2006 -\tPublic Disclosre
\r\n請參考:Gmail Security Flaw Fixed。", + "title": "安全性問題 - 事先告知的義務" + }, + { + "id": "429", + "body": "因為 Bloglines 上發現一堆 Xuite 的 RSS 讀取記錄被重設了... (一堆 unread entries...)\r\n\r\nUpdate:警告警告,並不是 Xuite + RSS = XSS (雖然...),麻煩 某長輩 不要誤會。", + "title": "Xuite Blog 的 RSS..." + }, + { + "id": "430", + "body": "雖然最近沒時間看 Bloglines 所有的文章 (尤其是國外的新聞,像是 SlashdotDigg 這兩個量又超多),不過看到 廖長輩 寫的「Skype 在 AMD 上的十方通話」之後,趕緊看一下是誰 crack 的。\r\n\r\n因為在前陣子 SkypeIntel 合作,使得 Skype 只有在 Intel 平台上才能十方通話之後,我和某個同學就已經知道一定會被 crack 掉,問題是,會是哪位有名的大長輩 crack 的 XD\r\n\r\n我是猜 DVD Jon 這位對 DRM 感冒的長輩,而強者我同學則是猜前陣子惡搞 Intel-based MacOSX 的 maxxuss,太準了 XD", + "title": "Skype 的 Ten-only-on-Intel 限制" + }, + { + "id": "431", + "body": "台灣的新聞媒體一向是製造業,所以有些新聞報導的水準低落,這時候看看就好,尤其是本身就有立場的新聞。\r\n\r\n但像是這篇「晨跑出車禍 iPod 立大功」就不得不講:對於一個人的不幸,原新聞的標題 \"Police Use iPod To ID Unconscious Woman\" 就比較中立,而中文這篇的標題很明顯就是利用別人的不幸在打 iPod 的廣告,看起來就非常令人厭惡。", + "title": "新聞媒體 - 製造業" + }, + { + "id": "432", + "body": "Ryan Boren[wp-testers] 2.0.2 on Tuesday 這篇裡宣佈將在星期二發佈 WordPress 2.0.2,看起來是因為一個未公開的安全性問題:\r\n
We need to release 2.0.2 to address a security bug. No, not the security bug that caused all of the commotion recently, another one.\r\n\r\nWe'll get a package out shortly. In the meantimes, pull the latest from the 2.0 branch.\r\n\r\nhttp://svn.automattic.com/wordpress/branches/2.0/\r\n\r\nThis contains fixes for both security issues as well as a handful of non-security bugs. Here's the list of bugs, sans the security issues.\r\n\r\nhttp://trac.wordpress.org/query?action=view&status=closed&resolution=fixed&milestone=2.0.2&order=priority\r\n\r\nLook over the bug list and target your testing on the effected areas. I'll add the security issues to the list when we release.\r\n\r\nTuesday is just a target. If we can't make it we can delay a bit, but we need to get this out soon.\r\n\r\nRyan
", + "title": "WordPress 2.0.2" + }, + { + "id": "433", + "body": "前幾天就看到 Digg 公佈了,不過那幾天沒空寫。剛剛在看 Digg 的文章時突然想到還蠻有趣的:除了文章內容外,現在連 Comment 都可以 Digg,類似於 BBS 的推文 (+1) 與噓文 (-1),於是有些廢話就被幹到爆炸,在預設值下會自動被 threshold XD", + "title": "Digg 新的 Comment 系統" + }, + { + "id": "434", + "body": "在 Release Notes 裡可以看到 v0.63 2006.3.7 的變動:\r\n\r\n最讓人驚訝的是 Protocol Header Encryption 全面改用與 Azureus/µTorrent 相同的協定。", + "title": "BitComet 0.63" + }, + { + "id": "435", + "body": "Digg 這篇 www.WikiTree.org 刊登出來沒多久後,原網站就因為 Digg Effect 而掛掉...\r\n\r\n不過,值得寫的原因不是因為掛掉,而是在原網站上面這樣公告 XD\r\n
WikiTree.org Has Been Badly Cut!\r\n\r\nWikitree.Org has suffered a DoS attack on 20060306-7 and had to be suspended to protect the webserver.\r\n\r\nShame on anybody responsible for the attack!\r\n\r\nBe sure, however, that Wikitree.Org will be up and running again as soon as humanly possible...\r\n\r\nIt may take some hours, but also several days.
", + "title": "Digg Effect 與 DDoS Attack" + }, + { + "id": "436", + "body": "剛剛做完 MacOSX 的 Security Update 後發現 Firefox 選單掉字問題不見了:\r\n\r\n\"\"\r\n\r\n所以這個 Security Update 裡面包含了什麼神祕的東西...?", + "title": "Mac 上 Firefox 掉字問題" + }, + { + "id": "437", + "body": "看了一下 awstats 的記錄,我發現不論是 blog.gslin.org 或是 gslin.org 的流量都增加不少?\r\n\r\n時間點剛好是我升級 WordPress 的時候,不過連續兩天都流量都增加不少,這樣好像怪怪的,是 WordPress 的 RSS Feed 又搞錯什麼東西了嗎?\r\n\r\n等下去翻翻看 WordPress 的 mailing list,可能會有人抱怨吧...", + "title": "這兩天的流量大增?" + }, + { + "id": "438", + "body": "沒想到參與開發 MSE/PEµTorrent 會是三個裡面最後一個推出 MSE/PE 正式版的團體 XD (比沒有參與的 BitComet 還慢 XD)\r\n\r\n這次推出後,網站上的標語是 \"now with Protocol Encryption and Peer Exchange\",這使得 Windows 上最常看到的三套 Bittorrent Client 都支援 MSE/PE。\r\n\r\n從 1.4 到 1.5 的發展記錄可以在 View Stable Changelog 這頁看到,不過... 下面這個是什麼鬼東西 -_-\r\n
- Feature: New easter egg
\r\n\r\n順便提一下 Bram Cohen,不知道他到底認清楚現實了沒...", + "title": "µTorrent 1.5" + }, + { + "id": "439", + "body": "lighttpd 幾乎是 Jan Kneschke 一個人撐起來的,這傢伙熱血的程度真不是一般人能夠比的:當初使用 lighttpd + FreeBSD kqueue 跑沒幾秒鐘就會 crash 的 bug 就是由他直接透過 ssh 連到 pixnet 上面 debug 的 XD\r\n\r\n一般開站 (大站) 常用到的功能幾乎都直接支援了:(www.lighttpd.net/documentation/)\r\n\r\n而剛剛又在 Development Blog 上看到一項新的功能,看起來就是給開大站的人用的:flv streaming with lighttpd,直接在 lighttpd 支援 flv streaming,而不用透過 php 去拉...\r\n\r\n難怪愈來愈多人向 lighttpd 投靠了 :p", + "title": "lighttpd 支援的項目" + }, + { + "id": "440", + "body": "在 Slashdot 上看到新玩意,一個透過 del.icio.us 的資料庫而得到結果的搜尋引擎:Similicio.us a New Relevancy Based Blog Finder。\r\n\r\n你輸入一個 url (像是 http://blog.gslin.org/),他可以找到「會 link 到 blog.gslin.org 的人還會 link 哪些站」。\r\n\r\n一路點下去還蠻有趣的 :p", + "title": "Similicio.us" + }, + { + "id": "441", + "body": "(原文發表於 tw.bbs.comp.386bsd)\r\n\r\n跟 BSD 沒關係,不過跟許多 BSD/Linux admin 應該有關係。\r\n\r\nSSL Certificate 如果是自己用自己做的 Root Certificate 簽的,在使用前必須要先安裝自己做的 Root Certificate,否則會出現警告訊息。\r\n\r\n為了避免這個警告訊息,就要到外面找 CA 幫你簽。這個簽的價錢有高有低,貴的到約 USD$1000/year,便宜的可以在特價時找到 USD$10/year。當然,兩者連線的品質 (註) 有差。\r\n\r\n不過對於教育單位來說,只是為了要避免那個警告視窗。(以及加密... 廢話!)\r\n\r\n(註:舊的 Browser 只支援 Verisign 以及少數幾家 Root CA,所以,如果這些用古董的人對於你很重要的話,你應該要考慮 Verisign 或是其他老牌子的 Root CA...)\r\n\r\n回頭來說教育單位 (*.edu 或 *.edu.tw,能從 Domain Name 直接確認是學校單位之類的) 的 SSL Cert 政策,如果能找到免費的,而且申請起來不太困難的是最好的了:\r\n\r\nhttp://certs.ipsca.com/\r\n\r\n這個單位提供教育單位申請 SSL Certificate,以 e-mail 認證,一次簽兩年。我們也實際申請過,而且正常運作,你可以試看看:\r\n\r\nhttps://mail.cs.nctu.edu.tw/", + "title": "教育單位的 SSL Certificate" + }, + { + "id": "442", + "body": "原來對 HiNet 的三條 Gigabit 線路一開學就已經滿了,星期一該提醒老人家向 HiNet 關心一下了,順便跟他解釋 Bittorrent Encryption 的事情好了...:\r\n\r\n(MRTG 裡晚上八點多掉下去那段是宿舍網路斷網)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "對 HiNet 線路" + }, + { + "id": "443", + "body": "\"\"", + "title": "Gnarly" + }, + { + "id": "445", + "body": "在 Netcraft 上看到中國某家銀行 (中國建設銀行) 在上海的 server 被 crack 後偽裝成美國銀行 (Chase Bank) 的網站,也就是被拿來釣魚:Chinese Bank's Server Used in Phishing Attacks on US Banks。\r\n\r\n這真的是第一次看到的奇景 XD", + "title": "網路釣魚" + }, + { + "id": "446", + "body": "看到 惡搞 DISPLAY (for screen) 這篇的 Shell Script:\r\n
echo $DISPLAY > /tmp/display\r\nchmod 600 /tmp/display
\r\n我第一個想到的是 Race Condition,再來想到的是用 symbolic link 破壞 XD", + "title": "Race Condition" + }, + { + "id": "447", + "body": "樹木在發光?XD\r\n\r\n\"\"", + "title": "another try at HDR" + }, + { + "id": "448", + "body": "第一次使用 威寶 (Vibo) 3G 網路的經驗差到不行 -_-\r\n\r\n由於有打算要辦 3G,想要測試看看品質如何,我跟 ronnywang 借了 Vodafone 的 PCMCIA 3G 網卡,裝好 Driver 後在新竹家裡測...\r\n\r\n首先是連上後拿到的 IP address,是 Private IP,10.x.x.x 這段的。連外後的 IP address 是走 TWNAP 進入學術網路。\r\n\r\n再來是連線的 Latency,上個 BBS 的感覺都比大眾的 PHS 差,用 ping 測試 140.113.1.1 發現 response time 約 300ms,高到爆炸。用 tracert 測試也可以發現從第一台就是 300ms 了,不是 140.113.1.1 的問題 -_-\r\n\r\n至於速度,雖然連上的時候寫 384kbps,不過實測大約只有 100kbps 左右的速度,也就是下載大約維持在 13KB/sec 左右。這是四格的訊號品質嗎?滿格是五格耶...\r\n\r\n明天再跟 SuperD中華電信 (CHT) 的 SIM 卡,測看看到底是 威寶 Vibo 的問題,還是 3G 網卡的問題...", + "title": "威寶 (Vibo) 的 3G 網路" + }, + { + "id": "449", + "body": "在 Digg 看到一個 Greasemonkey Script,作者是參考 Google Redux: a design exercise 這篇文章的說明,透過 Greasemonkey 實做出來:Google Redux Greasemonkey Script。\r\n\r\n看起來 Google 變得更... 現代化?\r\n\r\n這是裝起來後的樣子:\r\n\r\n\"\"", + "title": "Google Redux" + }, + { + "id": "450", + "body": "自從大胖子 Scoble 介紹 coComment 後,注意的人就愈來愈多了... (參考胖子寫得 Track your comments, no matter where you make them 這篇)\r\n\r\n我看過一堆人都說「很不直覺,很難用」,事實上真的很難用,他的 Bookmarklet 我從來沒用成功過 XD 直到剛剛裝了 coCommentGreasemonkey Script 才能動...\r\n\r\n過陣子再來說心得吧 :p", + "title": "coComment" + }, + { + "id": "451", + "body": "這幾天看到一堆關於 Online Storage 的資料,一開始是看到 Jeremy Wright 寫的 Online Backups,再來是:\r\n\r\n其實我想看看 1TB 的 Backup Storage (Without Share) 大約要多少錢,如果合理的話就叫 ronnywang老大 談談看,把 D2 的信件備份丟上去 (當然,會先用 gzip 之類的壓過再用 AES 之類的加密)。\r\n\r\n順便跟 色兔子 講一下,看要不要把 Ptt/Ptt2 的備份來一發...", + "title": "線上備份服務" + }, + { + "id": "452", + "body": "在 Digg 看到 WinXP on a Mac! Finally!Slashdot 也看到 WinXP on a Mac, Hoax?,兩邊都是引用 WinXP on Mac... for rizzle this time? 這篇報導。\r\n\r\n這篇報導裡,有人宣稱他已經成功地讓 WindowsXP 可以在 Intel Mac 上跑,並將安裝過程的圖片放到 Flickr 上:narf2006's photos。\r\n\r\n當然,最直覺反應是「Photoshop」,所以這位 hacker 徵求三位 MacBook Pro、三位 iMac、三位 Mac Mini 的使用者測試,在確定沒問題後他就會將方法公佈出來。不過 Engadget 對此仍然表示懷疑,認為這位 hacker 會跟這九位測試者串供騙取 USD$12k 的獎金:XP on MacTel: game over?。\r\n\r\n雖然在 Slashdot 上有不少人說這個猜測還蠻合理的,不過我對 Engadget 的水平也頗懷疑 XD 之前 Engadget Chinese Spam 的事情我寫信到 Engadget 去質疑,連個回信也沒有... hey :p (以上純粹是個人偏見)\r\n\r\n另外,在 Slashdot 的 comment 裡也有提到,你認為競賽的主辦單位不會先去確認 hacking 的方法到底可不可行就給錢嗎?沒有那麼好騙的 XD\r\n\r\n如果這些照片是真的,光看第一個 Boot 的畫面就不知道 hack 了多少東西... 左上角是 WindowsXP 安裝畫面,中間的部分看起來是某種自己寫的 Debugging Console,用來「拐」WindowsXP 對於 BIOS 的處理?有個值得注意的地方,這兩張照片是二月二十二日上傳的:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n再來是進入正常的 VGA 畫面,也就是一般看到的安裝過程,這兩份照片則是三月十一日及三月十二日上傳的:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n接著,安裝完畢的登入畫面,以及登入進去的桌面,都是三月十四日上傳,同時消息正式到 forum 上發佈出來:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n想要去原來的 forum (hacker 發表的那個) 看看,結果原來的 forum 好像因為流量過大被暫停使用了 XD", + "title": "WindowsXP on Intel Mac" + }, + { + "id": "453", + "body": "Digg 看到 Performancing 也提供網站分析服務:Better than Google Analytics。\r\n\r\n如果你可以讀到 apache accesslog,會架設 awstats 的話,其實這些服務對你來說並沒有什麼,不過我還是裝上去玩看看了...\r\n\r\n附帶一點,我是加在 theme code 裡面。對於 K2 來說,是修改裡面的 single.php 而非 header.php。", + "title": "Performancing Metrics" + }, + { + "id": "454", + "body": "毫無疑問,WindowsXP on Intel Mac 這件事情在這二十四個小時被強烈關注,從 narf2006 放出 Screenshot,找了測試者幫忙測試,後來他放出安裝過程的 Video (從安裝到最後登入 WindowsXP 的畫面看到桌面,並叫出 Device Manager),Windows XP on an Intel Mac 的競賽主辦人在確認步驟是正確可行的之後,宣佈這項競賽成功的結束了:Windows XP on Intel Mac Confirmed (Slashdot)。\r\n\r\n影片檔案在這:http://www.projectosx86.org/winonmac.mov,我也放了一份:http://files.gslin.org/Misc/winonmac.mov。", + "title": "WindowsXP on Intel Mac 結果確認" + }, + { + "id": "455", + "body": "GoogleYahoo Bomb:Google Terrorists on Yahoo,看起來蠻多的人喜歡玩這些東西 XD\r\n\r\nPS:如果不懂的話,可以用 Google 搜尋 failure 看第一筆結果,然後參考英文版 Wikipedia 對於 Google Bomb 的解釋,或中文版 Wikipedia 對於 Google炸彈 的解釋。", + "title": "SEO 的遊戲:Bomb" + }, + { + "id": "456", + "body": "\"Green", + "title": "Green River" + }, + { + "id": "457", + "body": "看起來不是什麼好事:MacBook Magnetic MagSafe Connector Not So Safe After All。\r\n\r\n\"Apple\r\n\r\nUpdateFlickr 對於【Apple 連絡 Flickr 要求將照片移除】的事情提出澄清,表示沒這回事:Apple MacBook power, Flickr and \"The Media\"。", + "title": "Mac 的 MagSafe" + }, + { + "id": "458", + "body": "Bloglines 已經兩個小時沒更新 (數百筆 RSS 都沒更新),看起來又出事了... XD\r\n\r\n現在是星期六,來看看什麼時候才會好 :p\r\n\r\nUpdate:恢復了...\r\n\r\nUpdate:又來了... (現在是 3/20 早上十點...)", + "title": "Bloglines..." + }, + { + "id": "459", + "body": "\"Washington", + "title": "Washington Capitol" + }, + { + "id": "460", + "body": "在 mozillaZine Forum 上的一份文件,告訴你有哪些原因會造成 Firefox 成為吃記憶體的怪物:The one and only \"Memory usage\" thread & FAQ。", + "title": "Firefox Memory Usage FAQ" + }, + { + "id": "461", + "body": "對,我把 NoScript 移除了,幾個理由:\r\n\r\n所以我移除掉了 XD", + "title": "把 NoScript 移除" + }, + { + "id": "462", + "body": "一下就在 Digg 上看到三篇 Firefox 2.0 Alpha 的消息:\r\n\r\n也許可以再等等看 XD", + "title": "Firefox 2.0 Alpha" + }, + { + "id": "463", + "body": "剛剛看到 BitTornado 有打算要把 BitTorrent protocol encryption 加進去:BitTornado T-0.3.15。\r\n\r\n這樣子終於有機會在 FreeBSD 下用 MSE/PE BitTorrent Client 傳東西了...", + "title": "BitTorando (BitTorrent Client)" + }, + { + "id": "464", + "body": "有很多單位的 FreeBSD server 仍然都保持在 FreeBSD 4.x,主要的原因包括了:\r\n\r\n但上面所說的這兩點在 6.0 有了變化:\r\n\r\n基於這些理由,有不少人願意嘗試 FreeBSD 6.x。如果是重新安裝當然沒問題,但也有已經安裝好的機器,裡面的資料不方便備份再重灌,而且這些機器並不是很容易接觸到 console (機器在國外,或是進機房需要蓋二三十個章之類的...),這會使得升級上會產生困難,於是就有些人想要搞 remote upgrade for major version changing...\r\n\r\n由於 remote upgrade 整個難度在於需要 single user mode 操作的部分,雖然依照官方的說法,4.x to 5.4 與 5.4 to 6.x 都需要 single user mode,但實際上 5.4 to 6.x 可以先從別台抓 6.0 的 libc.so.6libm.so.4 再直接升級 (聽起來很 dirty,不過可以動),所以整個難度在於 4.x to 5.4。\r\n\r\n另外一個需要注意的是建議先升級到 4.11 再處理。我曾經試過一台 4.8 要直接跳到 5.4 的,發現在 mergemaster 的地方一直失敗,最後直接到 console 前,在 single user mode 後 make installworld 裝入新的 mergemaster...\r\n\r\n至於為什麼會選擇升級到 5.4 (RELENG_5_4) 而不選 5.x (RELENG_5),這是因為 5.x 這陣子在準備 5.5-PRERELEASE,有不少東西改來改去的,遇到時間點不對的情況 checkout 出來的 code 會使得系統爛掉,所以找個確定可以用的版本會比較好。\r\n\r\n以下是我從 4.x 升級到 5.4 的方法,主要是參考 5.4 的 /usr/src/UPDATING,以及我之前寫的 遠端從 4.7-x 升級到 5.0-RELEASE 這篇文章。\r\n\r\n注意,以下的步驟不適合對 FreeBSD 不熟的人使用。同時,我們也不保證以下的步驟能夠達成你想要的目的,如果您使用以下步驟而造成任何問題,我們不負任何責任。\r\n\r\n升級完畢以後,記得把 /etc/pam.conf 砍掉。\r\n\r\n另外,雖然有 compatible library 可以用,但還是要找個時間把系統的 packages 重新安裝,這點可以透過 portupgrade 幫你處理,不過有一些 packages 已經放在 base system 了,在 portupgrade 升級完畢後應該就不會有 dependency,可以直接移掉:\r\n", + "title": "遠端升級 FreeBSD (4.x to 5.4)" + }, + { + "id": "465", + "body": "剛剛在 郵局的 WebATM 看到的,翻了一下說明 (FAQ 的部份) 發現郵局內互轉是不收手續費的?以郵局的普及率來比較,這樣等於把其他家打死啊 XD (最晚出來的最兇暴?)\r\n\r\n\"\"", + "title": "中華郵政的 WebATM" + }, + { + "id": "466", + "body": "這篇 Digg vs Slashdot: The Ultimate Battle 做了一個表格,把 DiggSlashdot 目前的數據找出來。在一月的時候 Kottke 有寫一篇 Digg vs. Slashdot (or, traffic vs. influence) (我在 Slashdot 與 Digg 的比較? 有提到) 也可以看一看。\r\n\r\n不過兩個站台的走向不太一樣,一邊是鄉民式的新聞站台,另外一邊則是有一群審稿人在過濾的站台... 其實有不少人兩邊都會看?", + "title": "Digg 與 Slashdot" + }, + { + "id": "467", + "body": "注意:由於 Engadget.Chinese Spam 事件 (下面會提到),我對 Engadget 極度不滿,所以以下的說明帶有強烈的偏見,關於相關的新聞請務必參考原始站台 (EngadgetDAPreview) 的資料。\r\n\r\n\"\" \"\"\r\n\r\n自從 EngadgetAOL 買下來以後就變得非常奇怪:Engadget’s Exclusionist Tactics Are NOT An Isolated Incident。\r\n\r\n這次事情發生過程大約是這樣:很久前就有人懷疑 Engadget 有維護一份黑名單,如果 Engadget 要報導的事情發生在黑名單的站台上,那麼 Engadget 就會等待到其他站台報導了這件新聞,然後再引用這個站台的文章。當然,幾乎所有的人都沒有證據 Engadget 這樣做,直到這次 DAPreview 事件。\r\n\r\nDAPreview 事件是這樣:DAPreview 的人在 CeBIT 拍了一些 Digital Player 的照片 (如上圖),加上 DAPreview 的 Trademark 後張貼到 DAPreview 上,而 Engadget 的某位編輯引用了這些資料 - 而大家正覺得奇怪的時候 (因為有人猜測 DAPreview 在黑名單裡面),這篇文章被「更正」了:圖片上的 Trademark 被拿掉 (不是整張圖片換掉,是拿掉 Trademark!),而且引用來源被修改成另外一個站台!\r\n\r\n接下來就是暴動了:有人說他們其實以前就在懷疑他們寫的文章也被這樣惡搞掉,只是苦無證據 blah blah... 有人把這件事情丟到 Digg 上面,有人開始戰...\r\n\r\n喔對了,中文版 Engadget 也發生過不怎麼有趣的事情:Engadget.Chinese 與 ouiouioui spam?engadget.chinese 的 Spam。\r\n\r\nPS:在 Wikipedia 查資料的時候也發現這件事情被更新上去,而且之前的不良紀錄也都被紀錄在上面:Engadget。", + "title": "Engadget 的不良記錄 - DAPreview 事件" + }, + { + "id": "468", + "body": "\"a", + "title": "a sea in a tree" + }, + { + "id": "469", + "body": "在 Digg 看到 µTorrent works with WINE 這篇,第一個在 FreeBSD/Linux 下跑 MSE/PE Bittorrent Client 的方法居然是這樣出來的 XD\r\n\r\n為了讓 µTorrent 可以在 Wine 裡面執行,Wine 需要 patch 一個 bug (在論壇上有提到,這些 bug patch 回報給 Wine 後很快就被 commit 進 CVS),所以下個版本的 Wine 應該就可以直接跑 µTorrent,雖然這樣跑 MSE/PE Bittorrent Client 不是我想要的方式 :p\r\n\r\n繼續等 BitTornado :p", + "title": "在 Wine 裡面跑 µTorrent" + }, + { + "id": "470", + "body": "在 Slashdot 上看到有人想用 ajax 發展一套只用 Browser 編輯的 Editor,取代 Microsoft Office 裡的 Word:AjaxWrite to \"Compete\" with MS Word。\r\n\r\n這套軟體 (?) 叫 ajaxWrite,是由 Michael Robertson 所搞出來的 (errr... 看了一下,他搞了不少東西出來...)。\r\n\r\najaxWrite 目前還在測試,我在 Firefox (on Mac) 上測試發現問題很多,像是選單的部份怎麼選都選不到 :/ 另外功能也太少了,我想要調整每個段落前的縮排 (很基本的功能) 也不行 (在 Windows 上可以利用選單的部分做到)。\r\n\r\n晚點到 Firefox on Windows 上測試看看...\r\n\r\nUpdate:PDF 輸出也有些問題,不知道跟我文件裡面有中文有沒有關係...。", + "title": "用 ajax 取代 Microsoft Word - ajaxWrite" + }, + { + "id": "471", + "body": "Apple 在這十年來的 Keynote (事實上還放了 1984 的 Macintosh) 與廣告可以透過 Bittorrent 下載:The Complete Apple Keynote Collection。(from DiggDownload the complete Apple Keynote archive 1996 - 2006.)\r\n\r\n不過目前好像連不到 tracker,我是透過 DHT + Peer Exchange 得到其他的 Node...\r\n\r\nUpdate:種子的速度好像有點慢 XD 看起來大家都在等他丟資料出來?\r\n\r\nUpdate:真不是普通慢,十個小時丟出 16%... 還好上面蠻多蠻有耐心的 XD", + "title": "Apple Keynote" + }, + { + "id": "472", + "body": "來猜看看今年 4/1 Google 會做什麼:Google's April Fools 2006。\r\n\r\n兩年前的 4/1 是 Gmail,當時大家以為是愚人節新聞,結果就繼續下去了 XD 一年前是 Gmail Infinitely (變成 2GB),今年呢?:p", + "title": "今年的 4/1" + }, + { + "id": "473", + "body": "\"Plastic", + "title": "Plastic Bus Seat Back" + }, + { + "id": "474", + "body": "有沒有修改 firefox.js 或是其他類似的神祕做法,可以讓網頁固定大一個等級?(也就是不用每次都去按 Ctrl-+)\r\n\r\n我猜應該是有,印象中有 Local-site CSS 這種東西可以惡搞,不過我在 Mac 上找不到放在哪裡 XD\r\n\r\nPS:設定最小字形的方法我知道,我不要那個功能...\r\n\r\nUpdate布丁大長輩 提供了下面的解法:\r\n
20:16 <@hlb_> http://www.squarefree.com/userstyles/user-style-sheets.html\r\n20:16 <@hlb_> userContent.css\r\n20:16 <@gslin> :D\r\n20:17 <@hlb_> web dev toolbar 有 apply 功能\r\n20:17 <@hlb_> 我不知道是不是 apply 之後就萬事 ok.
\r\n晚點試看看 :p\r\n\r\nPS:其實我只是要抱怨 Slashdot 的字太小,年紀大了看起來很吃力 XD\r\n\r\nUpdate:剛剛發現 Slashdot 的 CSS 是用相對大小,但是在 Firefox 的設定裡,不同語系的 Default Font Size 是獨立的。我只設定到 Traditional Chinese 的部分,而 Slashdot 當然是用 Western,都設定 18 以後就好了。", + "title": "問個 Firefox 的問題" + }, + { + "id": "475", + "body": "由於 Mac Mini 的鍵盤與滑鼠必須用 USB 介面,所以我平常是另外接一組 USB 鍵盤與滑鼠,螢幕的部分則是共用 (要用的時候拔過來拔過去),而 KVM 就放在旁邊涼快 XD\r\n\r\n剛剛去吃飯的時候經過 NOVA,進去書耕晃的時候發現有 USB 轉 PS2 的設備 (USB 1.1,對鍵盤滑鼠應該是相當夠用 XD),看到有支援 Mac OS X 就買回來裝,果然可以用 XD\r\n\r\n\"\"\r\n\r\n於是就把 KVM 接上去,把本來接的那組鍵盤滑鼠收起來...\r\n\r\nUpdate:在 名人 那邊找到圖了:金盛科技 USB to PS2/鍵盤,滑鼠,條碼機/一般。", + "title": "USB 轉 PS2 的轉接頭" + }, + { + "id": "476", + "body": "在某 Channel 看到的:\r\n
11:54 <@i> http://groups.yahoo.com/group/vimannounce/message/152\r\n12:00 <@B> 新的vim可以想像可能會更肥? :p\r\n12:06 <@i> 可能 embed 了 google ad 啊啊啊啊啊\r\n12:11 <@B> 呃.... 不要啊啊啊啊\r\n12:13 <@p> 在蘇黎世也有 google 呀....
", + "title": "vim 的作者去 Google" + }, + { + "id": "477", + "body": "\"Young", + "title": "Young Bill Gates, Mitch Kapor and Fred Gibbons" + }, + { + "id": "478", + "body": "\"A", + "title": "A church and a tree" + }, + { + "id": "479", + "body": "\"Using", + "title": "Using more iPod Book" + }, + { + "id": "480", + "body": "我覺得是我的設備有問題 XD\r\n\r\n啊,還是從頭講好了...\r\n\r\n在 威寶 (Vibo) 的 3G 網路 這篇我抱怨 Vibo 的網路很慢,而到 SuperD 那邊測試發現速度不錯,加上許多人都說 中華電信 的 3G 網路不錯,於是我當時就打算要辦 中華電信 的。\r\n\r\n前幾天在鳥窩上跟長輩買到一片 3G 網卡 (Vodafone),星期天早上就透過 黑貓 拿到了,當天下午去清大夜市吃晚餐的時候剛好看到光復路上面開了一家 中華電信 特約店,進去問了半天才發現 $850/month 的方案沒辦法在那邊辦,一定得去 中華電信服務中心 辦 XD\r\n\r\n於是星期一中午就跑去 建新服務中心 辦,辦完之後回到家裡就可以用了,測了一下發現還是有 150ms 的 latency,也許是我哪邊設定錯了 :/ (我記得安裝的時候選擇 Service Provider 時,我選擇 Vodafone UK,不知道跟這個有沒有關係 XD 晚點改掉看看...)\r\n\r\n當然,比起 300ms 好很多,上 BBS 時的流暢度根本不能比... 速度上可以到接近滿載,比 Vibo 好太多了。也許哪天來測看看 300Kbps 的網路電視可不可以看?:p\r\n\r\nPS:發一般區段的 IP 而非 Private IP,查了一下發現是 CHT-Mobile (而非 HiNet),連 DNS 反解的授權都沒申請 XD\r\n\r\nUpdateSuperD 說他在 清大 宿舍裡面測也是 150ms,應該不是我的問題?XD", + "title": "中華電信 (CHT) 的 3G 網路" + }, + { + "id": "481", + "body": "只給 link:http://www.wretch.cc/album/show.php?i=Tacnoom&b=9&f=1882725955&p=1。", + "title": "「就從這裡開始侵略吧」" + }, + { + "id": "482", + "body": "打開 Bloglines 又看到一堆 Xuite 的 RSS feed,這是代表什麼呢... (修好了?)", + "title": "Xuite 的 RSS 又來了..." + }, + { + "id": "483", + "body": "終於可以把洗好的鞋子拿出去曬了...\r\n\r\n(吹風機吹了半個小時還是沒乾,!@#$%^...)\r\n\r\nPS:據說某位不願意具名的 汪長輩 洗完車以後就會開始下雨,上禮拜跑去洗車...", + "title": "久違的太陽" + }, + { + "id": "484", + "body": "\"\"", + "title": "圖" + }, + { + "id": "485", + "body": "我平常不太用 Adobe 的 PDF Reader (太肥大了),通常我會用 Foxit Reader,不過還是會裝起來,用在 Foxit Reader 有問題的時候。\r\n\r\n不過 Adobe Acrobat Reader 要裝 Download Manager (我裝完就移除掉),而且還會有煩人的 Yahoo! Toolbar,於是就有人挖出來其實有企業版可以裝,直接下載、沒有 Yahoo! Toolbar:Download Adobe Reader Enterprise Edition。", + "title": "Adobe Reader 企業版" + }, + { + "id": "486", + "body": "結果 Bloglines 裡面又冒出一卡車...", + "title": "Xuite 爛完換 MSN Space 爛..." + }, + { + "id": "487", + "body": "\"SV101549\"", + "title": "SV101549" + }, + { + "id": "488", + "body": "\"flikr1097\"\r\n\r\n\"stretching\"\r\n\r\n\"animation4\"", + "title": "用程式跑出來的圖..." + }, + { + "id": "489", + "body": "在 Bruce Schneier 那邊看到一個有趣的軟體:Evading Copyright Through XOR。\r\n\r\nMonolith 的目的就是想要幹逃避法律漏洞,進而達到盜版的目的。假設我有兩份大小一樣的檔案,分別是 A 與 B。於是我就可以用 XOR (Exclusive OR) 的方法產生第三個檔案 C:Monolith 的作者群認為,第三個檔案 C 的 owner (應該是指【智慧才產權的擁有人】) 不屬於前面兩者!於是我就可以拿 FreeBSD 光碟 ISO Image 當 A,微軟 Windows XP 光碟當 B,產生出 C (被叫做 Mono files) 之後【合法地】丟出來。\r\n\r\n我跟 Brcue Schneier 的想法類似:不論是以【未取得授權的衍生著作】或是【認定這種方式與複製等價】,我相信在法院裡都有很大的機會判定有罪。", + "title": "Monolith" + }, + { + "id": "490", + "body": "在 Digg 看到 Interesting Facts About Domain Names - Analysis 這篇,原文在 Interesting Facts About Domain Names 這裡。\r\n\r\n這篇文章分析了 .com 的資料,然後畫一些有趣的統計數據,像是:\r\n\r\n分析起來還蠻有趣的 XD", + "title": "對 .com 的分析" + }, + { + "id": "491", + "body": "\"Red", + "title": "Red Canopy" + }, + { + "id": "492", + "body": "\"flikr1102\"", + "title": "flikr1102" + }, + { + "id": "493", + "body": "\"\"", + "title": "憤怒!" + }, + { + "id": "494", + "body": "今天應該會看到一堆愚人節新聞吧...", + "title": "愚人節" + }, + { + "id": "495", + "body": "小睡睡的成分如下:\r\n\r\n重要參考文獻:其實,這種童年早在十幾年前就有了...。", + "title": "超準 XD" + }, + { + "id": "496", + "body": "\"Trayectos", + "title": "Trayectos / Journeys" + }, + { + "id": "497", + "body": "\"i", + "title": "i love you but i've chosen darkness." + }, + { + "id": "498", + "body": "\"Lets", + "title": "Lets do it!" + }, + { + "id": "499", + "body": "看起來是愚人節的故事:Slashdot Design Changes for Wider Appeal。不過顏色其實還蠻好看的啊... (粉紅偏紫?)\r\n\r\n\"\"\r\n\r\nUpdateDigg 上:OMG Slashdot Goes Pink。", + "title": "粉紅 Slashdot" + }, + { + "id": "500", + "body": "科學研究有很多時候是態度的問題:對於已知的事情要思考過才相信,換句話說,要學會懷疑。而對於未知的事情,要有開放的心胸,去容納任何意見,再反覆思考。\r\n\r\n當大眾 (以及教會) 認為「太陽繞地球轉」,伽利略經過觀察而得知「地球繞太陽轉」,他以死來喚醒世人的注意,在三百年後教會對於這項行為道歉。\r\n\r\nPS:看到某些文章有感。", + "title": "科學" + }, + { + "id": "501", + "body": "愚人節新聞?我不曉得啦 :p\r\n\r\n從當初 無名小站 搬出交大時就聽 farPixnet 也要搬出去,講到現在才搬出去:從網路歷史看 Blog Service Provider。\r\n\r\n目前看起來是放在台固機房 (www.pixnet.net 目前是 61.31.202.212),看了一下目前的 IP address 配置:\r\n
61.31.202.209: mail.pixnet.net\r\n61.31.202.210: mail.pixnet.tw\r\n61.31.202.211: upload.pixnet.net\r\n61.31.202.212: www.pixnet.net\r\n61.31.202.213: pixdata.pixnet.tw\r\n61.31.202.214: db.pixnet.tw\r\n61.31.202.215: proxy.pixnet.tw\r\n61.31.202.216: rproxy.pixnet.tw
\r\n呃... 這不是擺明請大家去打某台資料庫嗎 =_=\r\n\r\nUpdate:剛剛發現 chunhan 大長輩0rz.net 也搬到同一塊去了 :p", + "title": "PIXNET 搬出交大" + }, + { + "id": "502", + "body": "看到 Pank 這篇 數位相片與傳統相片:\r\n
可善用網路相簿(如: flickr), 幫您備份, 但畢竟不是每張相片都適合放網路上.
\r\n這點不太對,如果你不願意公開,那麼你可以傳到 Flickr 上並設定 Private,我現在想不出來有什麼情況會造成問題。\r\n\r\n另外我要介紹在 Unix 下的一個與 Flickr 有關的工具,之前推薦 SuperDedwardc 用,頗受好評:flickr_upload,在 FreeBSD 上可以透過 ports 安裝 www/p5-Flickr-Upload。\r\n\r\n裝完以後,你要授權 Flickr::Upload 可以傳照片到你的帳號,於是有下列步驟要做:\r\n\r\n接下來應該就可以直接用了,如果直接輸入 flickr_upload 就可以看到說明,另外舉幾個常用的例子:\r\n", + "title": "數位相片與 Flickr" + }, + { + "id": "503", + "body": "這是 Flickr 愚人節搞笑嗎 =_=\r\n\r\n在 Interesting Flickr Images from the Last 7 Days 的 RSS 上已經看到幾十隻貓了,是很可愛啦,可是出現的這麼頻繁讓我總是覺得是 4/1 的關係 =_=", + "title": "一整天的貓" + }, + { + "id": "504", + "body": "2006/4/1,大胖子 Scoble 說他要換工作去 GoogleAnnouncement, I’m going to Google。", + "title": "大胖子說要去 Google" + }, + { + "id": "505", + "body": "在 Digg 看到 Wikipedia 有整理今年 4/1 的新聞:List of the April Fools Jokes for 2006 (Digg)、April 1, 2006 (Wikipedia)。\r\n\r\n當然,目前這份列表還在用力增加... 這種事情在大英百科全書上面是不會有的,而且更新的速度也不是傳統媒體跟的上的 :p", + "title": "4/1 的資訊" + }, + { + "id": "506", + "body": "居然有人想起拿 FreeBSD 2.x 來挑逗大家...:FreeBSD 2.2.9 Released!:\r\n
It is my great pleasure and privilege to announce the availability of FreeBSD 2.2.9-RELEASE. This release is the culmination of SEVENTY-SEVEN months of tireless work by the FreeBSD developers, users, their children, and their pets. Significant features in this release:
", + "title": "FreeBSD 2.2.9 Released!" + }, + { + "id": "507", + "body": "聽說大潤發賣的統一布丁,十二個只要 NTD$90。\r\n\r\n聽說 slzzp 很會吃布丁。\r\n\r\n聽說 slzzpOSDC 有一個 Session 要講。\r\n\r\nPS:我什麼都沒有暗示喔... A_A", + "title": "大潤發、slzzp、布丁、OSDC" + }, + { + "id": "508", + "body": "\"Earthshine\"\r\n\r\n\"imatgeEGP1046\"", + "title": "日蝕" + }, + { + "id": "509", + "body": "\"阿里山\"", + "title": "阿里山" + }, + { + "id": "510", + "body": "剛看關於 UrMap 的兩則文章:\r\n\r\n我記得廣告跑出來一陣子了吧?而且廣告... 一點都不友善 -_-\r\n\r\n拿 Greasemonkey 改了半天沒想到怎麼改,於是從那天開始我就沒用 UrMap 了...\r\n\r\nWeb 2.0 應用最重要的是「人」,麻煩做的人性化一點 =_=", + "title": "UrMap 廣告" + }, + { + "id": "511", + "body": "\"Happy", + "title": "Happy Birthday Apple" + }, + { + "id": "512", + "body": "\"reflection\"", + "title": "reflection" + }, + { + "id": "513", + "body": "\"bakhawan\"", + "title": "bakhawan" + }, + { + "id": "514", + "body": "Apple 也推出 Mac OS XWindows XP 的 Boot Loader 了:Boot Camp。\r\n\r\n可是整個畫面看起來好灰暗,代表 iMac 的墮落嗎?XD\r\n\r\n\"\"\r\n\r\nUpdateDigg 上報導了 Boot Camp 也可以開 Linux 的消息:Apple's BootCamp boots Linux! (now with pics)。", + "title": "Boot Camp" + }, + { + "id": "515", + "body": "\"p_0279\"", + "title": "p_0279" + }, + { + "id": "516", + "body": "在 Boing Boing 看到的:Erm, watch *what* kind of free videos on CNN.com?CNN 的網站管理員不知道在做什麼,該不會在測試吧 XD\r\n\r\n\"\"", + "title": "CNN 的影片..." + }, + { + "id": "517", + "body": "在 PttBlog 板 看到後 Re: [問題] blogger無法顯示網頁 這篇後,也在 [幹譙] Hinet 又幹了白痴事了! 看到了 :p\r\n\r\n不過我想說的是...\r\n\r\n沒有人會認為 HiNet 這次是故意針對 Google 擋的,比較有可能是因為有人在 Blogspot 上面放 Spam Blog,透過 Botnet 去製造流量以隱藏 Click Fraud (Adsense),結果量太大了被 HiNet 的 IDS/IPS 抓到回報給管理者,而管理者看了半天不知道 blogspot.com 是什麼鬼,就把他擋掉了... XD\r\n\r\n這種事情... 以後很可能也會再發生... XD (不知道無名會不會被擋?如果真的被擋,到時候一定會有陰謀論 XD)\r\n\r\nUpdate:Seminar 邊聽邊寫 Blog 果然不好,錯字一堆,句子亂七八糟 :o", + "title": "HiNet 擋 Blogspot" + }, + { + "id": "518", + "body": "\"f2c_053.JPG\"", + "title": "f2c_053.JPG" + }, + { + "id": "519", + "body": "\"The\r\n\r\n在 [資訊] intel MAC 可以安裝 Windows XP 了 看到的 XD", + "title": "The Blue Screen of Death comes to Mac" + }, + { + "id": "520", + "body": "\"from", + "title": "from bedroom window" + }, + { + "id": "521", + "body": "Slashdot 上看到 .eu 在開放註冊後的十二個小時就超過一百萬筆:Over 1 Million .eu Domains and Counting,統計資料可以在 .eu Sunrise status report 這頁看到。\r\n\r\n有人預期 .eu 會成為 .com 以外第二大的 tld,以現在的註冊速度,看起來蠻有可能的 :)", + "title": ".eu 的註冊速度" + }, + { + "id": "522", + "body": "Bloglines 的系統最近有改過界面 (左半部可以縮起來),但 Subscribers 數量又消失了 XD 來看看什麼時候會恢復 :p", + "title": "Bloglines..." + }, + { + "id": "523", + "body": "\"Upgrades:", + "title": "Upgrades: Home Office Workstation - 15" + }, + { + "id": "524", + "body": "\"A", + "title": "A wing made of cloud" + }, + { + "id": "525", + "body": "\"Beck", + "title": "Beck Meets the Tees near Whorlton" + }, + { + "id": "526", + "body": "\"Nothing", + "title": "Nothing else but miracles" + }, + { + "id": "527", + "body": "星期天下午左手扭到 (拉到?),到今天還是有些感覺。這幾天還是貼貼照片,不要長篇大論 *逃*\r\n\r\n\"\"\r\n\r\nPS:昨天跟 睡長輩 出去吃宵夜的時候講到星期六的布丁 (請參考 Flickr: Photos tagged with slzzp) 品質太差,吞的速度太慢... 如果布丁的品質好一點的話,拿個碼錶按一分鐘,看可以吃多少顆 XD\r\n\r\n有人放話了 XD", + "title": "受傷" + }, + { + "id": "528", + "body": "看到 shakalaka 寫的 跑去辦了 3G 門號 才想到我也遇過同樣的事情。\r\n\r\n我三月底辦完 850 方案後,將 SIM 卡直接街上 SE T610 (2G 手機) 撥號,發現不能用,直到掃墓那天閒閒沒事做,打電話去 0800-080123 請他們開通。\r\n\r\n另外一個是有一次發現上網超慢,結果發現是因為跳到 GPRS,改回 3G only 就恢復了 :p\r\n\r\nPS:應該沒有人去辦 383 + 750 方案吧?通話計費一樣的情況下,很明顯 850 方案一定比 383 + 750 好 @_@", + "title": "CHT 850 費率的語音功能" + }, + { + "id": "529", + "body": "\"Castillo", + "title": "Castillo de San Silvestre - Primavera" + }, + { + "id": "530", + "body": "剛剛發現 4/27 的 Seminar 請到李開復先生,雖然地點寫未定,不過應該會在浩然國際會議廳吧?(2005-02-5943 論文研討-資訊系統 Seminar-Information System)", + "title": "李開復" + }, + { + "id": "531", + "body": "看到 richliu 這篇 DLink 產品的DDOS攻擊行為.,我才想到前陣子在 TaopaiC 那邊看到的 [From Digg] Open Letter to D-Link about their NTP vandalism...\r\n\r\n另外像 168.95.1.1/168.95.192.1 開放給全世界搞的這種情況應該會愈來愈少,可以參考 DNS伺服器成為駭客的幫兇 這篇。", + "title": "NTP 與 DNS" + }, + { + "id": "532", + "body": "Firefox 1.5.0.2 釋出:Firefox 1.5.0.2 Security and Stability Update。\r\n\r\n以及 Firefox 1.0.8 釋出 (同時宣佈 1.0.x 終止維護):Firefox 1.0.8 Security and Stability Release and End-of-Life for 1.0.x。", + "title": "Firefox 1.5.0.2 及 1.0.8" + }, + { + "id": "533", + "body": "\"jones141\"", + "title": "jones141" + }, + { + "id": "534", + "body": "\"\"", + "title": "無題" + }, + { + "id": "535", + "body": "在 Boing Boing 看到工具,可以將墨水夾的墨水用完:Program forces Epson printers to use \"empty\" carts until they run out。\r\n\r\n起因在於 EPSON 的墨水夾裡面有個晶片,會判斷墨水是否用完以及是否超過期限,如果超過期限則 Driver 就不讓你印了,即使裡面還有可用的墨水!於是就有這種程式出現...", + "title": "EPSON 的墨水夾" + }, + { + "id": "536", + "body": "FreeBSD 上終於【又有】native Java 可以用了 XD\r\n\r\n到 FreeBSD Foundation Java Downloads 選擇正確的版本 (目前只有支援 FreeBSD 5.x 與 6.x) 以及所需要的平台 (目前有 JRE 與 JDK),抓下來以後直接 pkg_add,同意授權後就可以用了。\r\n\r\n另外記得裝完後要再裝 java/javavmwrapper 以及 x11/xorg-library,這是因為 dependency 的關係。\r\n\r\n剛剛測了一下,Hello World 可以跑... XD", + "title": "FreeBSD 上的 Java" + }, + { + "id": "537", + "body": "一位透過 Skype 認識三個多月的朋友,從美國回來兩個月後,這個星期三決定在家裡燒炭自殺...。他的 MSN SpaceSkype 帳號只能留下來做紀念了...。\r\n\r\nPS:Sorry,no comments & trackbacks...", + "title": "一位朋友過世" + }, + { + "id": "538", + "body": "XML 對於 '<'、'>' 以及 '&' 在 http://www.w3.org/TR/2004/REC-xml-20040204/#syntax 有蠻完整的說明,當初寫 wretchblog-rss20.pl (無名 Blog 轉 RSS 2.0) 時有參考過:\r\n
The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings \"&amp;\" and \"&lt;\" respectively. The right angle bracket (>) MAY be represented using the string \"&gt;\", and MUST, for compatibility, be escaped using either \"&gt;\" or a character reference when it appears in the string \"]]>\" in content, when that string is not marking the end of a CDATA section.
\r\n不過當初沒有管到 '>' 這個,再加上置換的順序錯了,於是就爛了:實戰演練:無名 blog 資料移轉。", + "title": "XML 規格問題" + }, + { + "id": "539", + "body": "DiggMcDonalds is healthy in Denmark,原新聞連結在 Fast food healthiest in Denmark, worst in US。\r\n\r\n原因是麥當勞在不同國家使用的比例不一樣?humm...\r\n
A large meal of chicken nuggets and french fries at McDonald's in the United States contained 10.1 grams of trans fatty acids, while the same meal in France contained 5.9 grams and just 0.33 grams in Denmark, Steen Stender, who headed the research project, told AFP.\r\n\r\n\"Many people think that wherever you go in the world you get the same thing at McDonald's, but in fact that is not the case,\" Stender told AFP.
", + "title": "麥當勞" + }, + { + "id": "540", + "body": "因為星期二早上打算要去板橋送朋友最後一程,但是那天有兩個期中考要考 (一個下午一點半,一個晚上六點半),所以打算問下午一點半的那位老師能不能提早考 (或是補考,anyway...),學弟把去年的考古題掃進去壓成 zip 檔,我把這些檔案用 flickr_upload 丟上 FlickrCATC (Cisco 課程考試考古題)。\r\n\r\n念了這些東西才能夠瞭解:為什麼我跟很多考過 CxxA 的人溝通有困難...\r\n\r\nPS:我還是覺得這門課開在研究所很奇怪...", + "title": "CxxA" + }, + { + "id": "541", + "body": "當 Wikipedia 上的編輯與 Wikipedia 高層人士的意見相左時要怎麼辦?在 Slashdot 上的 Censored Wikipedia Articles Appear On Protest Site 報導了 Jimmy Wales (Wikipedia 的發起人之一,前陣子來過台灣) 連續刪除 Brian Peppers 條目六次,並設下在一年內不得重新建立該條目的限制。\r\n\r\n於是這些編輯就把資料取回,放到 Jimmy Wales 管不到的地方:Wikitruth。", + "title": "Wikipedia 與 Wikitruth" + }, + { + "id": "542", + "body": "星期二送朋友最後一程。\r\n\r\n上個星期五晚上接到 Ruby 電話,通知我 Renee 選擇以燒炭自殺結束這一生,如果想看看她的話,星期二早上十點在板橋殯儀館會送她走。\r\n\r\n我聽到消息的時候有點錯愕,有點悶,有點不知所措。\r\n\r\n星期一那天我去找老師處理補考的事情,因為星期二有兩科要期中考。處理完以後,晚上我決定打通電話到她的手機,接起來是個男生的聲音,是她的叔叔。我不知道要問什麼,隨口問了一些問題,知道時間往後延半個小時,改到十點半開始。\r\n\r\n過沒多久 Ruby 打電話通知我明天改到十點半,我告訴他我剛剛不死心打到 Renee 的手機,她叔叔已經告訴我改時間了。Ruby 問我會怎麼上去,我告訴他我會坐客運上去,她就說她會開車上去可以順便載我。後來我就跟她聊了大約半個小時,問了一些 Renee 的事情。\r\n\r\n隔天早上九點我跟 Ruby 從新竹上去,到板橋殯儀館陪她走最後一程。在路上我就跟 Ruby 聊起來我跟 Renee 認識的過程 (我比 Ruby 早認識 Renee)。\r\n\r\n我跟 Renee 是去年年底 (2006/12/29 深夜) 的時候認識的。那天我把 Skype 開著,突然有個女生加我為好友,我看了一下 Skype 的資訊,Location 寫著 North Carolina (當時我第一個想法就覺得這是假的),而 Homepage 的地方放著一個 MSN Spaces 的位置,連過去看發現 Location 寫著 Taiwan, Taipei,從 Blog 的文章看起來感情上有些問題。\r\n\r\n我把她加進 Contact 後就問她「我認識你嗎?」,問沒幾句話後,我發現她打字速度不快,就跟她要了她在美國的電話號碼,用電話直接聊,就直接問她 Blog 上面的事情,她也把許多事情跟我分享...。這一聊,就是一個多月,直到她在年後回到台灣,她來新竹 (2006/02/08),我就陪她晃一晃,後來她在台北有工作後聯絡次數就漸漸少了。\r\n\r\n沒想到這次在新竹帶他晃,是第一次,也是最後一次見面。\r\n\r\n而 Ruby 則是在 Renee 回到台灣後認識的,在這最後的一個月變成 Renee 最好的朋友。在車上聽她說 Renee 回台灣後的事情,我才知道 Renee 這最後一個月走的有多辛苦。\r\n\r\n跟 Ruby 到了殯儀館後我們看到了 Renee 的父親,他在星期三晚上接到電話後,星期五晚上從美國趕回台灣處理這些事情。整個儀式是以基督教的追思禮拜送她,時間也再稍微往後延半個小時。在整個追思禮拜的過程中間最讓人難過的過程,不是看她最後一面,而是祖母來 Renee 最後一面後,跟親人講 Renee 臉好像有點腫腫的,是不是沒弄好... 很讓人心酸。\r\n\r\n追思禮拜結束後,遺體要送到三峽火化,於是我跟 Ruby 就一起過去。火化大約需要一個小時,我們兩個跟 Renee 的父親就在休息區吃了點東西,跟他聊 Renee 小時候、到加拿大、到美國的事情,慢慢地去瞭解她生前的生活。\r\n\r\n火化完了以後,最後將 Renee 送到北海福座,將她的骨灰放置在裡面。因為我祖父也是放在這裡,我就跟 Ruby 講了一下開放的規則,如果想看她的話大概在什麼時間可以來之類的...。\r\n\r\n在回新竹的路上我跟 Ruby 整理了一下 Renee 她爸爸講的東西,再回頭想了一下她最後這個月的事情,真的很讓人心疼...。結果回到家之後仔細回想她回到台灣之後的事情,情緒突然間整個爆發出來,在床上哭了出來,只好強迫自己睡一下。沒想到後來跟 slzzp 出去吃飯,邊吃飯邊講 Renee 的事情,結果還是不行... 勉強吃完後只好請 slzzp 先送我回來,直到睡了一整天後情緒才比較穩定。\r\n\r\n我跟 Ruby 會把她生前的一些照片以及事情記錄下來,整理整理,希望她走的沒有牽掛。", + "title": "送最後一程" + }, + { + "id": "543", + "body": "先記錄下來 (照文章出現的時間,不過後來有不少 \"Update\" 是放在原來的文章裡面,所以會有點亂...),標題暫時就訂這樣。\r\n\r\n主要是在講 ForeverGeek 發現被 Digg 封掉後的幹剿文章。\r\n\r\nPS:我之前批評過 ForeverGeekDreamhost Promo Codes。(也因為這個原因,我後來就 unsubscribe 了)", + "title": "Digg 與 ForeverGeek" + }, + { + "id": "544", + "body": "星期五中午我媽打電話給在新竹的我,叫我回家,因為祖母走了。\r\n\r\n她自從前幾年摔到後身體就不太好,加上有糖尿病,其實大家都有心理準備,只是對我而言,從上個禮拜...。\r\n\r\n我中午接完電話後先去找指導教授,在他桌上留個字條 (不在辦公室),之後就住處整理一些衣物回台北。回來後就去看看祖母,然後摺一些元寶,接下來的事情大多都是我爸媽在處理,剩下的時間就是聊聊天,不然就是做些自己的事情...\r\n\r\n所以... (悶)", + "title": "祖母" + }, + { + "id": "545", + "body": "Blog 以及 files.gslin.org 從 DreamHost 換出來了,到不是 DreamHost 不好 (我那台主機最近還蠻穩的 XD),而是在測試便宜的 Delicated Dedicated Hosting...\r\n\r\n機器現在是 FreeBSD 5.4-RELEASE-p14,也許哪天膽子大再來 remote upgrade to 6.1-RELEASE。(也要等到 6.1 出啦...)\r\n\r\nPS:如果有人要測試的話,可以透過 http://colo-s4s.hasname.com/cgi-bin/trace 看看。\r\n\r\nUpdate:到現在的紀錄:\r\n", + "title": "換 Hosting" + }, + { + "id": "546", + "body": "4/27 在交大的浩然國際會議廳 (圖書館 B1):2005-02-5943 論文研討-資訊系統 Seminar-Information System。\r\n\r\n剛剛看到資訊學院的公告 (三月多就公告了?):http://www.ccs.nctu.edu.tw/post.php?id=2006042001。", + "title": "李開復" + }, + { + "id": "547", + "body": "BitComet 0.65 出版了,在 BitComet Client Release Notes 可以看到 Changelog,主要都是一些小修正。如果真的要拿出來講,大概就是這個:\r\n
Core Improved: connect to the previous peers immediately when restarting a task
\r\n這樣每次啟動的時候就不需要再去 tracker 上取得列表,而可以由 Peer Exchange 直接得到 IP address/Port。", + "title": "BitComet 0.65" + }, + { + "id": "548", + "body": "在 Bruce Schneier 那邊看到的:Digital Cameras Have Unique Fingerprints。\r\n\r\n不過,如果「指紋」很容易偽造的話,就沒有意義了 :o", + "title": "數位相機的指紋" + }, + { + "id": "549", + "body": "因為中間負責轉播的電腦有斷線過,所以分成兩個檔案:google.asfgoogle2.asf。(本連結隨時可能不見 XD)\r\n\r\n至於內容的部分,如果平常就有在看 Slashdot 的人應該都知道,沒什麼大不的。(連講的笑話都被 SlashdotDigg 報過...)\r\n\r\n而關於 Filtering in China 的問題 (不論是在台灣或是在美國都是必問的問題?),其實聽沒幾句就知道是 Google 官版的說法:聽起來很有道理,但你永遠不會滿意。", + "title": "Google 台大場" + }, + { + "id": "550", + "body": "Matt 問了 Cross-Datacenter File Replication,看起來是為了 WordPress.com 問的。\r\n\r\n下面的 comments 裡面有些蠻值得看一看,像是 DRBD 可以玩看看。", + "title": "同步備份機制" + }, + { + "id": "551", + "body": "李開復在交大講用的 Slide 跟台大用的是同一份,講的東西也都完全一樣,包括笑話都是。\r\n\r\n下午一點半開始,時間弄得相當緊,一方面是因為臨時從浩然國際會議廳換到中正堂,造成所有的人花了十分鐘移動過去。另外一方面是三點多還有清華場要趕。在時間壓縮下,整體的流暢度比起台大場的差了不少,接受聽眾問題時也沒幾題。而且該怎麼說... 感覺李開復只是在敷衍了事而已。\r\n\r\n沒來聽的也不用覺得可惜,因為這場的確不怎麼值得聽。反倒是 ITRI 場應該是不同的題目與內容,不知道有沒有辦法拿到錄影檔或是錄音檔之類的聽。\r\n\r\nUpdateITRI 場的部分內容可以看 Google@Taiwan 這邊。", + "title": "Google 交大場" + }, + { + "id": "552", + "body": "除了用 Unsubscribe 沒辦法退定以外,還很沒水準的,用九張圖發:\r\n\r\n\r\n\r\n這是點開後的樣子:\r\n\r\n\"\"", + "title": "教育部電子報" + }, + { + "id": "553", + "body": "過了兩天又出新版,看起來是爆炸的人數太多了?(參考 BitComet Forum 上的 BitComet Bugs & Feature Requests)\r\n
Core Improved: more program run-time error can be detected by the crash report\r\nCore Bugfix: fix the bug that the sometimes program will crash when display chat message
", + "title": "BitComet 0.66" + }, + { + "id": "555", + "body": "Netcraft 報導了 Apache 在 SSL HTTP Server 的佔有率 (這當中包括了 Apache SSLmod_ssl) 超越 Microsoft,成為 SSL HTTP Server 的領先者:Apache Now the Leader in SSL Servers。", + "title": "SSL HTTP Server 的佔有率" + }, + { + "id": "556", + "body": "SlashdotNet Neutrality Voted Down in U.S. House Committee 這篇報導指出 House Committee on Energy & Commerce 以 34 對 22 票,否決了對 Communications, Promotion, & Enhancement Act of 2006 的修正案。\r\n\r\n這次的修正案如果通過,將禁止電信業者選擇性提供服務給用戶。換句話說,電信業者所提供的網路必須維持中立性,不得對於特定單位提供較佳的服務或較差的服務。\r\n\r\n舉個簡單的例子來說,電信業者不得因為 VoIP 影響到他的生意,所以就把 VoIP Packet 限制住。或者像更久之前電信業者要求 Google 交網路使用費 (簡單來說就是保護費),不然就要限制服務。\r\n\r\n這個修正法案想要做到的事情更一般性的名詞就是「網路中立性」(Net Neutrality),下面這幾篇文章蠻值得看的,尤其是第一篇有個 Video 可以聽他解釋什麼是網路中立性:\r\n", + "title": "「網路中立性」受阻" + }, + { + "id": "558", + "body": "只貼 link 不說話 (經濟部智慧財產局商標資料檢索服務):203.69.69.28/TIPO_DR/servlet/InitLogoPictureWordDetail?sKeyNO=095000881。", + "title": "「好人卡」" + }, + { + "id": "559", + "body": "在 shakalaca 那邊看到 SkypeSMS 的消息:Skype 2.5 beta。看了費率,發現台灣的簡訊是全世界最低的?SMS rates to all destinations。", + "title": "SkypeSMS" + }, + { + "id": "560", + "body": "SlashdotU.S. Considers Anti-Satellite Laser。(NYTimesAdministration Researches Laser Weapon)\r\n\r\n\"\"\r\n\r\n把對方的衛星打下來?打歐盟的 GPS 衛星吧 :p", + "title": "雷射砲" + }, + { + "id": "561", + "body": "據說搜尋「陳有蘭溪」會出現這個:(小圖可能不清楚,點進去看原大小的圖比較清楚)\r\n\r\n\"\"", + "title": "用 Yahoo! 搜尋「陳有蘭溪」" + }, + { + "id": "562", + "body": "有些朋友問我們 (blog.ijliao.info、hlb.yichi.org、blog.gslin.org、...) 到底搬到哪裡,也想要從 DreamHost 換出來,不過前陣子不想回,所以只有在 ijliao 那邊的 comment 有提到:Server4Sale。\r\n\r\nServer4Sale 是 Reseller,幫好幾家做,在網路上的評價還不錯。我們這次買到 Layered Technologies 的 server 目前用起來也很愉快,拿到機器時是 FreeBSD 5.4-RELEASE,過沒幾天就升級到 5.5-PRERELEASE,而且裝了五百個 packages... (被 ijliao 看到後就被罵 XD)\r\n\r\n上面目前跑了一卡車的服務,包括最標準的 FAMP:FreeBSD + Apache + MySQL + PHP,以及 BIND (DNS Server)、INN (沒錯,就是轉信那個 INN)、Postfix (Mail Server)、Squid (沒錯,Proxy Server)... 有長輩還說要架 VPN 上去 XD\r\n\r\n速度方面可以看 smokeping:smokeping.hasname.com,本來 HiNet 過去大約要 220ms,這幾天也降到 180ms 左右:\r\n\r\n\"\"\r\n\r\n技術服務方面倒是很迅速,像是送 Ticket 要求 Reset,很快就會被轉到 Data Center,大約一個小時內會搞定。\r\n\r\n不過其他的部分就怪怪的 XD 像這三天發生一件鳥事情:我們覺得 Server4Sale 不錯,想要續約,所以星期二就送了一個 Ticket 問看看有沒有年繳的 discount,過了幾分鐘,線上值班的客服就回「我們會轉給 billing 部門請他們回答」,結果今天星期五了,還沒有答案 o_O\r\n\r\n喂喂... 這樣的話我乾脆跳到 Layered Technologies 算了...", + "title": "Hosting..." + }, + { + "id": "563", + "body": "剛剛發現 Yahoo! Kimo 的字典有 AJAX?不知道是什麼時候加上去的,以前沒發現...\r\n\r\n\"\"", + "title": "Yahoo! Kimo 的字典" + }, + { + "id": "564", + "body": "在 Digg 看到的:Simple Optimization for PHP and MySQL,原文在 Simple Optimization for PHP and MySQL 這裡,其實都是一些習慣問題積少成多。\r\n\r\nMySQL 的部分在 O'ReillyHigh Performance MySQL 裡都有講到。PHP 的部分有些是經驗,倒是可以看一看...", + "title": "一些改進 PHP 與 MySQL 效率的技巧" + }, + { + "id": "565", + "body": "當 BlueSecurity 遭受 DDoS 攻擊後,他們的解法是把 www.bluesecurity.com 指到 bluesecurity.blogs.com (TypePad):DDoS on Blue Security Blog Knocks Typepad, LiveJournal Offline。\r\n\r\nUpdate:在 Slashdot 上的 What Happened to Blue Security 這篇看到他們把完整的說明放在網頁上:Timeline of PharmaMaster Attacks on www.bluesecurity.com。\r\n\r\nUpdate:剛好發現 www.typepad.com 有些動作,不是 routing 換了就是 IP address 換了:\r\n\r\n\"\"", + "title": "BlueSecurity 會不會太搞笑..." + }, + { + "id": "566", + "body": "一年前有個傢伙弄了一個站台,有無限多的頁面 (每個頁面都有一些 link 連到其他頁面),打算研究 Search Engine Bot 的行為,他弄完以後就把消息丟出來,讓一些 PageRank 高的站台 link 過去 (這樣 Search Engine 才會努力抓?),不過後來大家都忘記了 XD\r\n\r\n一年過去了,剛剛在 Digg 看到他把結果分析出來了:Search bots behavior analyzed。包括了 Google bot、Yahoo bot、MSN bot:On Bots。\r\n\r\n如果你不喜歡看敘述的話,圖很漂亮,可以去看看 XD", + "title": "Search Engine Bot 分析" + }, + { + "id": "567", + "body": "FreeBSD ports 的 PHP 一直都有一個很嚴重的問題:沒有辦法生出同時支援 FastCGI 與 apache module 的 PHP 版本。\r\n\r\n這個問題終於在前幾天解決了:\r\n
\r\n20060506:\r\nAFFECTS: users of PHP\r\nAUTHOR: ale@FreeBSD.org\r\n\r\nThe old PHP slave ports (phpN-cli, phpN-cgi and mod_phpN) were removed in favour of unified PHP ports that allow building any combination of PHP SAPIs (cli, cgi and apache module). The PHP CGI binary was renamed to php-cgi, so you should update the path in your script. To simplify the update process, *only* for this release a 'php' compatibility symlink to php-cgi will be created if you don't select the CLI SAPI. Before the upgrade you *should* run 'make config' in lang/php4 or lang/php5 to configure the SAPIs you want to install. As a consequence the default binary packages include the CLI and the FastCGI SAPIs.\r\n
\r\n先用 make config 重新設定,再用 portupgrade -f 更新,這樣應該沒什麼大問題...。", + "title": "FreeBSD 下的 PHP" + }, + { + "id": "568", + "body": "剛剛 Dedicated Hosting 連外網路似乎怪怪的,這點可以在 smokeping.hasname.com 上面發現:\r\n\r\n\"\"\r\n\r\n不過同時間我發現從 TANet 連外的 MSN 也斷了,而且 smokeping.hasname.com 上偵測學校的部分:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看出來線路還是怪怪的,我猜測 是因為北美某個重要節點出問題,各 ISP 調整 routing 避開,而 TANet 動作最慢。(聽起來蠻合理的?)\r\n\r\nUpdateGoogle 好像也受到影響:\r\n\r\n\"\"", + "title": "斷線" + }, + { + "id": "569", + "body": "Netcraft 報導了這個月的 Web Server 的佔有率改變的現象:May 2006 Web Server Survey。\r\n\r\n關於 Godaddy 惡搞的前情題要部分請參考 ijliao 這篇 OpenSourceParking,有比較完整的說明。簡單來說就是 Godaddy 把所有 Hosting 都從 Apache 換成 Windows 2003 Server,造成 Netcraft 上統計出來的數字大地震,造成 Apache 佔有率下滑 5.7%。\r\n\r\n而這個月,Netcraft 修正了 Redirect 的問題,使得本來會被認為 \"Other\" 的 Web Server 能夠正確判斷出來,使得 Apache 又回升 2%:\r\n
This month 1.7 million hostnames at Go Daddy that were classified as \"Other\" in April are recognized as Apache sites running on Linux. Large blocks of Apache sites at Go Daddy have shifted back and forth between Apache and Other since January , due to changes in its bulk hosting service. It uses a front-end system that generates an HTTP redirect with no Server header when a site is first accessed - only once the redirect is followed, or if the site is accessed a second time, does it identify Apache as the server.\r\n\r\nThe latest shift helps Apache regain 2% market share after a drop of 5.7% last month, when Go Daddy shifted more than 4 million hostnames from Apache to Windows Server 2003. Apache's improvement this month has no effect on Go Daddy's continued hosting of parked domains on Windows Server 2003, which gains 143K hostnames at Go Daddy this month.
\r\n不過這樣寫看不太懂啊,到底 Godaddy 還有多少 Apache 在跑?以及 Godaddy 的 Policy...", + "title": "Web Server 佔有率" + }, + { + "id": "570", + "body": "在 So sue me 那邊看到的:Windows Live Messenger。\r\n\r\n\"\"\r\n\r\n這是怎樣 XD", + "title": "Windows Live Messenger 安裝畫面" + }, + { + "id": "571", + "body": "趁著還沒睡覺,還有一點精神的時候來寫這篇文章。\r\n\r\n這是我的立場:\r\n
    \r\n\t
  1. 我認為 Link 是合理使用,不論是不是商業應用。
  2. \r\n\t
  3. 但我反對【智邦-style】網摘 Spam:注意!不是 Link 的部份,而是 Spam 的部份。
  4. \r\n
\r\n第一個部份,Yahoo! 最早就是以人工在整理 Web Directory,量大了之後就改成寫程式用機器掃連結,而 Google 則是一開始就以機器做這件事情。這兩家公司都利用 Search Engine 提供服務。而在國外也的確有判例認定 Link 是合理使用。\r\n\r\n所以,不論是在低標準的法律上,還是在高標準的道德上,【網摘】本身是沒有問題的。講明白一點,如果書籤網站使用的人本來就很多 (包括看的人與 Bookmark 的人),那麼你 Link 我是帶動資訊的流通,本來就是好事。\r\n\r\n
但智邦的 MyShare 成立沒多久以後 (Refer: http://blog.gslin.org/archives/2006/05/12/571/#comment-5153) 但智邦在開始做網摘服務後,就放縱網摘師在別人的 Comment 亂留言的行為。很明顯就是希望透過留言帶動 MyShare 智邦網摘網站 的成長,換句話說就是假借網摘之名【發 Spam】。
\r\n\r\n\"\"\r\n\r\n今年三月初的時候我就寫過這件事情,專門在講智邦網摘師的 Spam 行為:Spam,但當時文章裡面沒有講的很清楚我對於智邦不滿的是什麼,以及改進的方法,所以現在一併講清楚。\r\n\r\n對於【引用 Blog 上的文章】這件事情,書籤網站根本不應該做:你有看過那個人用 del.icio.us 連結後,跑過來靠邀兩句【我是某某某,我摘了你的文章,...】的嗎?你有看過 furl.net 這樣幹過嗎?\r\n\r\n更何況,這些人還是這個網摘平台的公司找的?然後高呼【言論自由】(陳豐偉,[網路] : 我可以討厭你,卻不能喜歡你,真是豈有此理) 以及【著作權合理使用】(陳豐偉,[網路] : 網摘是一種創作),掩飾雇人 Spam 的事情?\r\n\r\n\"\"\r\n\r\npesty 用的比喻很精彩:\r\n
我是美國人,我們現在把你們列為古老文明保存了哦,所以我們在你們古蹟上貼這個證明我們已經把你們列為古蹟的封條,如果你們不想被貼這封條,打上面的電話哦…\r\n\r\n然後,你打那電話去幹剿,他們會說,「喔!真的啊?其實99.99%被貼封條的人都因為觀光客增加而很高興呢,我真不瞭解你們有什麼好不高興的?」
\r\n\r\n
最後,我再重申一次,我並不反對【網摘】,不論是商業還是非商業用途。但我反對利用【網摘】之名行【廣告】之實,進而帶入流量使書籤平台壯大。
", + "title": "智邦網摘師的 Spam 行為" + }, + { + "id": "572", + "body": "Slashdot 這篇 12.8 Petabytes, You Say? 提到可以利用「灌水」(應該還有很多特殊的技術要用上去) 將硬碟的容量提高到 \"12-13 PB per cubic centimeter\" (每立方公分 12.8 PB)。我記得現在有在做的 (有生產線的) 3.5 吋硬碟裡,最大應該是單顆 750GB?\r\n\r\n這麼大的硬碟,不知道未來會有什麼應用催生出來 :P (Google 那種不算...)", + "title": "高密度硬碟?" + }, + { + "id": "573", + "body": "Slashdot 看到的消息:ICANN Finally Rejects .xxx Domain (被歸在政治類新聞,因為美國政府的干涉),ICANN 正式的公告在這:ICANN Board Votes Against .XXX Sponsored Top Level Domain Agreement。\r\n\r\n其實有蠻多人期待成立 .xxx 網域,主要是有幾個原因:\r\n\r\n結果 .xxx 網域最後沒有成立... The Register 的報導說的好:(ICANN chokes off .xxx porn registry)\r\n
The reality is that ICANN has again been compromised by political pressures - pressures that both sides claim not to exist.
", + "title": "ICANN 否決 .xxx 網域" + }, + { + "id": "574", + "body": "看到 Slashdot 的 CSS Redesign 資訊,點進去看發現兩件事情:\r\n\r\n這是 Slashdot 原來的 Screenshot:\r\n\r\n\"\"\r\n\r\n這兩張是參賽的作品:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n三張圖的字都已經放大過一次 (在 Firefox 裡按 Ctrl-+),後面這兩張還是小小一個字,!@#$%^...", + "title": "Slashdot CSS Redesign" + }, + { + "id": "575", + "body": "Slashdot 看到 phkD-Link 達成共識,現有的 D-Link 產品有權利使用 phk 在丹麥機房放的 NTP server,但未來出貨的產品將不會使用:D-Link Settles Danish Time Dispute。\r\n\r\nphk 正式的公告在這:people.freebsd.org/~phk/dlink/。\r\n\r\n另外 The Register 也說明了完整的處理方法,除了 phk 在丹麥的 NTP server 外,D-Link 將聯絡全球受影響的 NTP server 進行補救:(D-Link settles dispute with 'time geek')\r\n
D-Link is freeloading onto as many as 50 NTP time servers, critics claim. The US military, NASA and government groups worldwide are reportedly running NTP servers interrogated by D-Link kit.
\r\n這件事雖然影響很大,但事後的補救的結果讓大家都還算滿意... 暫時告一段落。\r\n\r\n事情的始末可以參考我之前寫的 NTP 與 DNS 以及 richliu 寫的 DLink 產品的DDOS攻擊行為.。", + "title": "D-Link NTP 事件暫時平息" + }, + { + "id": "576", + "body": "台灣藝術大學 的網頁編碼用簡體中文 GB2312?\r\n\r\n\"\"", + "title": "台灣藝術大學的網頁" + }, + { + "id": "577", + "body": "在 Digg 看到的:Traceroute.V - an HTML traceroute with Google Maps。\r\n\r\n需要 Java,我沒裝,所以我只能看看 Screenshot :p\r\n\r\n\"\"", + "title": "Google Maps 與 traceroute 結合" + }, + { + "id": "578", + "body": "趁著機器在升級的時候再寫一篇。先補充一下,我之前的文章提到的陳豐偉先生就是 Roach。\r\n\r\n看來文章寫太長就會失焦,在 網摘的禮貌跟Spam 這篇文章裡面根本誤解我的意思,這跟「禮貌」沒關係,跟「金錢」也沒關係 (雖然很多人對此不滿),真正的重點是 「通知」這件事情本來就不應該做!\r\n\r\n我的意思是:\r\n
    \r\n\t
  1. Bookmark 這件事情本來就不應該通知原站台del.icio.us 沒做、furl.net 也沒做。Link 這件事情也不應該通知原站台Google 沒做,Yahoo! 沒做,Ask Jeeves 沒做,MSN Search 也沒做。做這種事情是要反向從原作者的平台帶入流量進入 Myshare,這是 Spam Behavior
  2. \r\n\t
  3. 雖然不應該做,但一般人的網摘會因為 WordPress自動化」的 Pingback 而產生反向連結,重點在「自動化」而不是「故意」,所以知道運作的人通常不會在意。WordPress 的 Pingback 樣子通常是長得像下面這張圖,其中上半部是 Comment,下半部就是 Pingback:
    \"\"
  4. \r\n\t
  5. 而智邦的「網摘師」完全不理會這件事情,用「手動」留言大量 Spam。
  6. \r\n\t
  7. 最後,智邦的 Roach 根本不願意承認錯誤,另外還以「著作權法」、「公平交易法」混淆 Spam 這件事情。
  8. \r\n
\r\n所以我會說:\r\n\r\n最後,有人叫我在家裡擦神燈看看,趕快出來放話吧~", + "title": "智邦網摘師的 Spam 行為 - 再說明" + }, + { + "id": "579", + "body": "1994 年 老人家 的文章 (那時候還不老),現在 2006 年了,但還是很值得看:\r\n
\r\n發信人: ltc@news.cc.nctu (center liu), 信區: Network\r\n標  題: 網路\"論文\"撰寫技巧(初級)\r\n發信站: National Chiao Tung University, Taiwan (Thu Sep  1 10:13:17 1994)\r\n轉信站: Maxwell!bbsroute!news.csie.nctu!news.cc.nctu!news!ltc\r\n\r\n        網路\"論文\"撰寫技巧(初級)\r\n\r\n●斷章取義:一般為文不易達成目的,在電腦上於己有利的才放\r\n      在同一頁上。充分利用電腦每頁24行之特性。\r\n\r\n●視而不見:一般為文會被人恥笑,BBS、NEWS 的 PAGER 做的\r\n            都不好,於己不利的片斷正好利用這一套。\r\n\r\n●嘩眾取寵:REPLY 少的沒人看。\r\n\r\n●觸犯眾怒:生氣的人破綻多,才有利可乘。\r\n\r\n●標題要驚人:標題不驚人,內容沒人看。\r\n\r\n●一答一唱:一人演多角,才有戲劇效果。\r\n\r\n●合理夾帶無理:辯論賽上會扣分的技巧非用不可,論文撰寫\r\n        可沒人打分數。\r\n\r\n●拉攏次要敵人,打擊主要敵人。\r\n\r\n●說人不敢說,打擊權威,群眾最愛廖添丁。\r\n\r\n\r\n    交通大學計算機中心\r\n       劉大川\r\n
", + "title": "[tw.bbs.comp.network] 網路\"論文\"撰寫技巧(初級)" + }, + { + "id": "580", + "body": "喝!都快寫完了,結果不知道按到什麼就消失了,再寫一篇。據說寫第二次的時候思路會更清楚,就當作這樣吧。\r\n\r\n標題所指的「故意」,是指「故意放反向連結,導入流量使其壯大」。\r\n\r\n這篇本來是要回應 M 留言的後半段,後來覺得這篇要寫的東西太多,另外開一篇出來講,這篇就是 M 的留言 後半段:\r\n
Roach也認為所謂的類似comment spam的東西錯了,\r\n就到個歉吧就結束了,反正甚麼都有人罵,\r\n而GSL你真的認為智邦是要流量才搞這個的嗎?
\r\n是的,我認為智邦網摘師放 Comment Spam 是為了「壯大」(而「流量」只是目的),當然當事人都會否認。而真正的答案除非找 Snape 對 Roach & amarylliss 施破心術,不然大概是沒有機會知道了。Uma 的留言 講得更清楚明白了:\r\n
> 想問的是,\r\n> 智邦初期的通知與其是要通知作者,\r\n> 但背後真的沒有要潛藏向作者的讀者廣告智邦友邦大家摘錄好文讀服務呢?\r\n\r\n依他們那群人厚臉皮的程度,我相信他們會告訴你「沒有」…
\r\n\r\n另外,當事人完全沒有打算要認錯啊,他們仍然認為他們做的不是 Comment Spam。\r\n\r\n再加上 Roach 的回答完全依照「網路論文撰寫技巧」而寫,看不出討論的誠意在哪裡,像是 Roach 這篇 [網路] : 父子騎驢,怎麼吃都癢的網摘事業 一開始以一個故事開頭:\r\n
有個故事大家一定聽過,有一對父子騎驢進城,一開始,爸爸讓小孩騎驢。路人A說:「這小孩怎麼這樣,讓爸爸走路!」於是換爸爸騎驢,路人B又說,「這爸爸怎麼這樣,小孩年紀這麼小,讓他走路!」於是兩人一起騎驢,路人C又說:「這家人怎麼這樣虐待動物!」於是兩人下來走路,路人D又說:「這家人真是笨蛋,好好的驢不騎!」最後怎樣?父子決定把驢殺來吃掉比較乾脆。
\r\n這個故事告訴我們「人不能沒有主見,應該自我思考」,而 Roach 卻接到:\r\n
最近這網摘事業也遇到這樣的問題了。一下說,你摘我的東西要尊重我,要徵求我的同意。也有人說,他認為的網路禮儀是摘完後要告知,但不用等到同意,若有意見再撤掉。最近又一股聲音出來了,說網摘原本就是資訊自由,你愛摘就摘,但摘完不要通知我,否則就是spam!\r\n\r\n好吧,這才真的叫做,你不可能討好這世界上所有的人。
\r\n剛好符合 網路論文撰寫技巧 的:\r\n\r\n而 amarylliss 根本不認為他所做的是 Comment Spam:(2006/03/01 的文章,2006/04/04 的留言,Spam 這篇)\r\n
這叫做「網摘」並不是SPAM\r\n@�
\r\n以及 2006/05/13,amarylliss 的留言:(後半部)\r\n
總之,你通知不通知,都會有人在旁邊有意見。\r\n有意見是好的,不過到底怎麼做才是最符合眾多網友的期待,而且顧及所有BLOGGER的情緒,這是智邦生活館必須思考的。
\r\n沒有人道歉啊?更何況還說:(amarylliss,最後面一句)\r\n
但是您個人的想法,我個人認為不代表大多數人對網摘的看法…
\r\n在這篇文章之前,所有的討論文章都環繞在 三個錯誤的論點 上面跑,而導致有些清醒的人跳出來為智邦的網摘師辯護,所以這些網摘師被群眾給沖昏頭,以為有很多人支持網摘師到 Comment 上「通知原作者」是正確的:\r\n
    \r\n\t
  1. 法律上:Link 是有問題的:十年前的問題在五年前就已經消失了。現在 Link 是合法的,而且 Link 會帶動資訊的交換。
  2. \r\n\t
  3. 法律上:商業用途違背某些人的 CC 授權:Link 不受 CC 影響,「引用」才受影響。
  4. \r\n\t
  5. 道德上:為什麼摘的人拿錢,寫的人沒錢?:「分類」這件事情本來就有人力成本,就如同 Yahoo! 最早是用人力維護 Category/Directory。
  6. \r\n
\r\n真正的錯誤在 Spam、Spam、Spam,這是道德問題,不是法律問題。我可以很明白的告訴你,是我們幾個人在 irc 上幹剿後,由 hlb 第一個提出完整「Comment Spam」的論點 (網摘(阿爸生我,不是要我來討戰的)),之後把問題移到這個很嚴重的道德問題上。\r\n\r\n如我前面所說,沒有人知道真相,沒有人會知道是不是故意的。但就前面我所敘述的言論,我不相信 Roach 與智邦的網摘師。", + "title": "關於「智邦」與「智邦網摘師」是不是故意的事情" + }, + { + "id": "581", + "body": "BitComet 又更新了,看 Changelog 的說明,只是修正一些小 bug,把 ICF/UPnP 支援度加強... 最後看到把 PayPal 那條,這也算 Bugfix 嗎 XD\r\n", + "title": "BitComet 0.67" + }, + { + "id": "582", + "body": "Sergey Brin (Google 創辦人、技術部門總裁) 十年前在 Usenet 上寫的東西被自己家的 Google Groups 拿出來鞭 XD:What Sergey Brin Said in 1994/1995。\r\n\r\n總共有四篇文章,點 這裡 可以看到,問論文的、問機票的、...。", + "title": "Sergey Brin 1994-1995 在 Usenet 的文章" + }, + { + "id": "583", + "body": "在 Tim O'Reilly and defining Web 2.0 這篇看到的,Tim O'Reilly 在 UC Berkeley 演講時這樣定義:\r\n
But even more important than their enthusiasm, the users of successful internet applications supply their intelligence. A true Web 2.0 application is one that gets better the more people use it. Google gets smarter every time someone makes a link on the web. Google gets smarter every time someone makes a search. It gets smarter every time someone clicks on an ad. And it immediately acts on that information to improve the experience for everyone else.\r\n\r\nIt's for this reason that I argue that the real heart of Web 2.0 is harnessing collective intelligence.
\r\n以他的定義,毫無疑問的:\r\n\r\n不過這麼說來,Google Maps 就不算 Web 2.0 了?這點倒是跟想像有點出入... 不過不管怎樣,Web 2.0 必須以「人」為中心倒是沒什麼爭議。", + "title": "Web 2.0 的定義" + }, + { + "id": "584", + "body": "在 Your Message on Gaxed.com 看到一個 Cache 技巧:\r\n
For Gaxed I’m using some heavy caching to prevent it from going down to easily. The basic algorithm is: when a picture is viewed more than 50 times, it’s moving into the cache folder as a static JPG (the page URL will stay the same of course, acting as a permalink). This way, I don’t need to poll the PHP, the database, and I also don’t need to recreate the image using PHP image/ GD.
\r\n問題是 counting 要怎麼做比較好?用 memcached 直接做似乎不錯?反正掉了再去抓就好。", + "title": "Cache 的技巧?" + }, + { + "id": "585", + "body": "SpamOrHam.org 是一個建立 Spam 與 Ham (Non-Spam) 樣本的計畫。2005 年時他們拿 TREC 2005 Public Spam Corpus 當作樣本,這份樣本裡的九萬兩千多封信件是以多種 Spam Filtering 軟體判斷歸類出來的,而 SpamOrHam.org 的計畫就是希望以人工的方式審視資料,找出錯誤的判斷。\r\n\r\n然而,今天在 Slashdot 上看到網站的發起人認為這個計畫並不成功:People Suck at Spotting Phishing,原文在 There's one born every minute: spam and phishing。\r\n\r\n在文章中他就舉了幾個例子,包括明明看起來只是一個簡單的回信,但使用者卻回報為 Spam。而 Phishing 的信件更糟,Spam Filtering Software 已經正確判斷為 Spam 類,但使用者卻說他不是 Spam...\r\n\r\n看起來發起人相當無奈... :P", + "title": "人對於 Spam 的判斷能力" + }, + { + "id": "586", + "body": "來講什麼是 mod_rewrite (或是其他類似的東西),以 Group.NCTU.edu.tw 為例,RSS feed 的輸出大致上會長這樣:\r\n
http://group.nctu.edu.tw/rss10/darkkiller
\r\n我希望把這類的連線要求都交給 rss10.php 處理,變成這樣:\r\n
http://group.nctu.edu.tw/rss10.php?g=darkkiller
\r\n這就是 mod_rewrite 要做的事情。\r\n\r\n那麼用 mod_rewrite 有什麼好處?我可以想到這幾點:\r\n\r\n像無名的 RSS 與文章 (以彎彎的 Blog 為例) 就做的不太好:\r\n\r\n比較好的作法可能是改成這樣:\r\n\r\n甚至改成 feed.wretch.cc,一開始先用 VirtualHost 跑在同一台上,以後如果發現 RSS 愈來愈吃重,需要以獨立的機器分出來就更方便了。", + "title": "為什麼要使用 mod_rewrite?" + }, + { + "id": "587", + "body": "跟 ijliao 一樣把 favicon.ico 放上去了,如果看不到的話,清 cache 應該就可以看到了 :P", + "title": "放上 favicon.ico" + }, + { + "id": "588", + "body": "早上睡醒就看到 老地方冰果室 這篇報導:黑白 MacBook 登場 MacBook Pro 順道升級,當時看到關於電池的部份是:\r\n\r\n\"\"\r\n\r\n就順便把上面這張圖丟上 Flickr,等到查清楚資料再丟上 錯誤特攻隊。\r\n\r\n結果吃個早餐,弄一弄,打開 Bloglines 發現文章有變動:\r\n\r\n\"\"\r\n\r\n看起來有人在看 reverse link... (我發現 Bloglines 有把 Flickr 的那頁收進去)", + "title": "不知道在搞什麼鬼..." + }, + { + "id": "589", + "body": "在 Slashdot 看到利用 Social Network 讓借錢這件事情變的更容易:Can Peer-To-Peer Finance Work?。\r\n\r\n等下再來更新 (或是開一篇新的寫)。", + "title": "透過 Social Network 借錢?" + }, + { + "id": "590", + "body": "\"\"\r\n\r\n在 Newscraft 看到的,VeriSign 將以 1.25 億美金現金買下 GeoTrust,坐穩第一名的位置:VeriSign To Buy GeoTrust, Combining Top SSL Providers。", + "title": "VeriSign 買下 GeoTrust" + }, + { + "id": "591", + "body": "Blue Security 從四月底開始被 DDoS 攻擊以來不斷的抵抗,直到昨天他們決定放棄:Blue Security Gives up the Fight。\r\n\r\nBlue Security 的 Anti-Spam 作法是這樣做:\r\n
    \r\n\t
  1. 先成立一個網站,讓大家登記他們的 e-mail address,告訴全世界「不要 spam 這些信箱」。
  2. \r\n\t
  3. 這些 e-mail address 是以 One-Way Hash Function 計算後的資料型態公開出來。
  4. \r\n
\r\n聽起來很不錯?你沒辦法得到一份有效的列表,但是如果你拿到一個 e-mail address,就可以用 One-Way Hash Function 算出來,看看在不在這份列表裡面。\r\n\r\n但,即使如此,如果我是 Spammer,我想要「復原」大部分的 e-mail address,然後對這些使用者謊稱「這份列表已經外洩出去」,那麼我就拿我手上有的 e-mail address 去計算,再加上用字典檔去試,也許我可以復原一半以上的 e-mail address,也許更多。到了足夠的數量,我就寄信給這些 user,告訴他們「這份名單已經外洩,blah blah...」,然後還寄了一大堆 virus/spam/...,於是 Blue Security 就慘了 :p", + "title": "Blue Security 放棄" + }, + { + "id": "592", + "body": "最近寫了一些 Javascript 有關的東西,用 Google 找了一堆資料發現都在 http://www.quirksmode.org/ 裡,但是又不知道這個網站的品質到底好不好,於是就跑去問 hlb 大師...\r\n
14:31 <@gslin> hlb_: http://www.quirksmode.org/ 怎樣?用 Google 找了一堆資料發現都在這邊找到 XD\r\n14:33 <@hlb_> gslin: 怎樣喔... 我兩年前就跟你提過這個網站了 :p\r\n14:33 <@gslin> @_@\r\n14:33 * hlb_ 逃
\r\n平常都沒在聽大師教誨... (到牆角懺悔)", + "title": "純打屁聊天..." + }, + { + "id": "593", + "body": "最近有某個自稱為 Blog 的網站引起討論 (像是 ijliao蔡依林的部落格 這篇),剛好看到大胖子 Scoble 說 Blog 要有這五個要素才能叫 Blog:(A blog is not a blog unless…)\r\n\r\n結果沒人鳥他 XD", + "title": "Blog 是什麼?" + }, + { + "id": "594", + "body": "透過 BloglinesSlashdot 第二次看到沒有 Comment 的文章:Spacecraft Crashes Into Satellite。\r\n\r\n\"\"\r\n\r\n晚點再來看一次。", + "title": "Slashdot 上沒有 Comment 的文章?" + }, + { + "id": "595", + "body": "系上有一些軟體是特製的,或是加工過的,因為種種原因無法丟到 FreeBSD ports 裡時,就需要自己搞一個 local ports 之類的東西出來。成果可以參考 opensvn.csie.org/csports/ 這裡。\r\n\r\n剛好看到 rafanFreeBSD local ports 這篇講到 local ports 的東西,看起來大家都是去 /usr/share/mk/ /usr/ports/Mk 下面翻 code 後決定怎麼惡搞,方法都一樣 XD\r\n\r\n至於文章裡說 portsdb 很慢,我們是丟到 /etc/daily.local 跑,反正慢慢跑總是跑得完的 :p\r\n\r\nPS:rafan 沒注意到 < 與 > 要換成 &lt; 與 &gt;,所以有些 quote 的地方看起來怪怪的。", + "title": "FreeBSD 的 local ports" + }, + { + "id": "596", + "body": "Google 因為 Toolbar 的 Suggest 功能「推薦」到非法軟體而被告:Google in Trouble for Suggesting Illegal Software。\r\n\r\nGoogle 說他們不會過濾,因為 \"censorship concerns\" (咦,那 Google China...),而 Van Laere (被推薦到非法軟體的那家受害公司) 說你們平常就有在 filtering 了,像是 \"pornography\"、\"naked\"、\"sex\":\r\n
In response to the suit, a Google attorney told a Belgian newspaper on Wednesday that they could not filter the results of Google Suggest, citing censorship concerns.\r\n\r\nVan Laere said the defense isn't accurate, since it appears that Google Suggest will not try to complete tracking numbers for shipping items or offer alternate suggestions for sexually-related terms. In a test, Google Suggest did not offer any related words for the terms \"pornography,\" \"naked\" and \"sex.\"
\r\nGoogle 愈來愈像 Microsoft 了...\r\n\r\n不管怎樣,這件事情要再繼續看看法庭上面怎麼判,這對於 (下一代) 搜尋引擎的影響會很大。", + "title": "Google Toolbar 的「推薦」功能出包" + }, + { + "id": "597", + "body": "由於美國政府在 9/11 後愈來愈恐慌,打算在飛機上禁用手機。禁用的原因不是手機影響飛安,而是透過手機,恐怖份子可以很容易的互相溝通。在一個多禮拜前 Bruce SchneierRisks of Cell Phones on Airplanes 這篇文章裡就是在講這件事情。\r\n\r\n剛剛看到 Kottke 也對這件事情表示意見,在 Networks on a plane 提到在飛機上使用「網路」的危險性 (不是指「無線網路」干擾飛航,而是指利用「網路」互相聯絡幹壞事,比起手機不受到注意),難道就要因為這樣禁用手提電腦嗎?", + "title": "在飛機上的手機" + }, + { + "id": "598", + "body": "在 Digg 看到有人被 Dugg 後把 IP address 的資料轉成經緯度資料,用 Google Maps 將所有訪客都標出來:Digg Traffic Plotted On Google Maps (Real-Time)。\r\n\r\n像是全世界的流量:\r\n\r\n\"\"\r\n\r\n一標出來就知道全世界哪些地方的網路比較發達了 *默*", + "title": "將 Digg 流量結合 Google Maps" + }, + { + "id": "600", + "body": "keso 這篇提到了台灣兩千萬與韓國四千萬的差距:东拉西扯:和徐挺耀聊互联网,實際上... 人數差了一倍,搞起 SNS 以及各種網路的應用本來就有差啊:\r\n
但有个问题徐挺耀想不明白,韩国也只有4000多万人口,只是台湾人口的两倍多一点,为什么韩国的互联网产业就完全是另外一个面貌?那里除了大门户网站,还会涌现出OhMyNews和CyWorld这样的让美国人都激动不已的新型社区。所以,过几天他打算去韩国看看。
", + "title": "SNS 以及各種網路的應用" + }, + { + "id": "601", + "body": "剛剛看到 DreamHost BlogThe Truth About Overselling! 這篇,突然想起有些積了很久的東西要寫 :p\r\n\r\n主要有兩個要注意的:\r\n
    \r\n\t
  1. 我們先計算出來:一天有 1440 minutes,如果有兩顆 CPU 就有 2880 CPU minutes,60 CPU mins 佔了 2%+,換句話說,一台雙 CPU 的機器只夠給五十個用滿 2%+ 的客戶用。
  2. \r\n\t
  3. DreamHost 提供了兩種模式跑 PHP:CGI mode (可以跑 PHP4 或 PHP5) 或 mod_php4,前者是預設值,跑 PHP4。
  4. \r\n
\r\n在 CGI mode 下會以 suexec 轉到 user 的身份跑,當然比較安全:所有的檔案權限都可以設定為 600,但是比較慢:因為要先 fork()execl() 到 suexec,再 execl() 到 php.cgi。\r\n\r\n而 mod_php4 當然就快多了,少了 fork() + execl() + execl(),但 PHP 就是以 apache 的身份在跑,CPU resource 不會掛在 user 帳上,只要不要吃的太兇,其實都不太管。這時 PHP 安全上的問題則是透過 PHP 裡設定 safe_mode,在這個模式下無法透過 fopen() 開啟目錄外的檔案或 symbolic link,以及種種限制。\r\n\r\n回過頭來說 Blog Software 以及我對於 Lifetype 開發者心態不以為然。\r\n\r\nWordPress 在發展時就都有考慮到 safe_mode 的問題,所以在 DreamHost 上可以直接使用 mod_php4。另外一方面,WordPress 在發展新功能的同時,也在控制 CPU resource 與 MySQL resource 的消耗量。在 blog.gslin.orggslin.org 還沒搬家前,就是以這種方式在跑。(在更早之前我也跑過 php.cgi 的模式,後來收到通知 CPU 超量的信,就改到 mod_php4,一直到四月底搬家)\r\n\r\n反過來看當年的 pLog (現在叫 Lifetype),這是 草蝦 2005/06 時裝好 pLog 1.0 後覺得很慢,拿出工具追蹤所發現的紀錄:\r\n
03:29 <@Ben_> 救命喔...讀取首頁就要用到 272 個 php 檔案...
\r\n到了 2006/02/19,DreamHost Sucks! 我的惡夢! 這篇最後面提到:\r\n
PS 2:我的 CPU Minuts 是多少? 195 Minutes 而已啦!他們規定只能用 60 Minutes。
\r\n用了整台主機 6%+ 的 CPU resource 還可以大喊人家爛,而且是自己在維護的 Lifetype... *無言*
", + "title": "DreamHost 的 CPU 限制" + }, + { + "id": "602", + "body": "在 Digg 看到美國專利局要重審這個惡名昭彰的專利:U.S. Patent Office re-examines Amazon's 'One Click' patent。\r\n\r\n重審的原因是 Peter Calveley 發現在 1998 三月就有一個類似的專利,也就是在 One Click 專利的前十八個月。翻了一下他的 Blog,似乎就是為了這件事情成立的,全部都是講 Amazon 專利問題 :p", + "title": "\"One Click\" 專利" + }, + { + "id": "603", + "body": "熱鬧滾滾:MS Word Zero-Day Exploit Found。\r\n\r\n重點是:(Alert Raised for MS Word Zero-Day Attack)\r\n
A zero-day flaw in the ubiquitous Microsoft Word software program is being used in an active exploit by sophisticated hackers in China and Taiwan, according to warnings from anti-virus researchers.
\r\n超讚的啦... 看起來是被玩一陣子才被抓到的 XD", + "title": "Microsoft Word Zero-Day Exploit" + }, + { + "id": "604", + "body": "在 Google Blogoscoped 看到第一個 PPC Botnet 被發現的消息:Clickbots vs AdSense and Others,不過目前看起來還是蠻傳統的方法控制 (透過 Web servers 抓資料):\r\n
The bots are controlled remotely through several Web servers.
\r\n理想中的狀態應該是 Botnet 本身是 P2P Network,再透過數位簽章的方式丟指令叫 Botnet 做,使得整個 Botnet 建立後就沒有 single point of failure,而且這樣會大幅提昇 Spammer 的隱密性...", + "title": "PPC (Pay Per Click) Botnet" + }, + { + "id": "605", + "body": "在 Digg 看到最常被拿來當密碼的是 \"password\" XD:Password Protection is an Oxymoron。\r\n\r\n這讓我想起上次系上跑 john 通知使用者改密碼的經驗 XD", + "title": "最常被拿來當密碼的..." + }, + { + "id": "606", + "body": "ijliao 丟出神秘的 link:PHP5 Benchmark,有一些是等價用法的速度比較,看一看還蠻有趣的... 發現神秘 function,看起來 PHP manual 還不夠熟 o_o\r\n\r\n同樣的文章有好幾篇,在那篇文章右邊的 link:PHP4 BenchmarkMySQL BenchmarkApache Benchmark。", + "title": "PHP4/5 的效率分析" + }, + { + "id": "607", + "body": "TringoBram Cohen 在他的 Blog 上提到的 Flash 遊戲,很簡單的遊戲,可是還蠻好玩的:Tringo。", + "title": "Tringo" + }, + { + "id": "608", + "body": "在 Digg 看到一張在 National Geographic Society 所刊出的圖:What is so special about this photo?,仔細看才會看出奧妙 XD", + "title": "一張有趣的圖" + }, + { + "id": "609", + "body": "這陣子發現 Spam Karma 擋下來的 Spam 變多了,今天在 Matt 那邊看到 Akismet 的統計資料,跟之前所感覺的差不多,從月中開始爆增:New Spam Stats。統計圖在這:Stats Page (beta)。", + "title": "Blog Spam" + }, + { + "id": "610", + "body": "一個團體會需要有個管道和參與的人互動,像是詢問問題、回報問題、提供建議。對於不同的規模,有不同的方法。\r\n\r\n在開放原始碼的社群裡面,如果團體很小 (發展者不到三個人),可以透過郵件論壇或是聊天室互相討論。像是 lighttpd 的發展就蠻接近這種模式。\r\n\r\n但如果團體比較大,發展者有兩位數甚至三位數,這時候就要有工具幫忙,讓使用者回報問題、提出建議時的紀錄可以有系統的整理出來。這種系統有的時候叫做 Problem Report System,有的時候叫做 Bug Tracking System。像是 Mozilla 在發展軟體所使用的 Bugzilla,或是下面所提到的 GNU GNATS。\r\n\r\n我接觸 GNU GNATS 是因為 FreeBSD 使用 GNU GNATS 管理整個專案。\r\n\r\n參與 FreeBSD 的發展有幾種方法,一種是擁有 freebsd.org 的帳號,像是 ijliaoleeymclsung。有時我們叫他們 \"committer\",因為這些人可以直接存取 FreeBSD CVS Repository (也就是 \"commit\") 以及 GNATS 資料庫。\r\n\r\n而另外一種沒有帳號的人,則可以透過 send-pr 將想要改的東西送入 FreeBSD 的 GNATS 資料庫,由 committer 看過以後再 commit 進 CVS Repository,所以我們叫這些人 \"submitter\"。\r\n\r\n我因為參與幾個 FreeBSD ports 的維護工作而玩過 GNU GNATS 的一部份:用 FreeBSD 的 send-pr,將要修改的步驟 (通常就是附上 patch files) 透過 E-mail 送到 FreeBSD 的 GNATS database 裡。送進去後系統會給我一個 PR number。如果有任何 committer 更新這個 PR,我會收到信件通知。\r\n\r\n資工系的系計中助教大約有二十個人,這二十個人並不是全部處理同樣的事情。有些人處理 FreeBSD,有些處理 LinuxSun 工作站,有些則處理 Netnews 或是 BBS。我覺得把 PR System 搬進資工系系計中來用,應該可以幫助我們處理一些事情,於是我就在 freshmeat 上看各家 PR System 所使用的情況,以及建構系統的複雜度。\r\n\r\n既然這篇不斷的講 GNU GNATS,那當然是因為最後我們用 GNU GNATS。會使用 GNU GNATS 的原因在於運作很簡單:\r\n\r\n整個系統的要求極低,不需要 PHP,不需要 MySQL。對於系計中助教而言,在 Unix 上用編輯器修改檔案並不是難事,所以對於助教看起來一切 okay。\r\n\r\n但這個年代你不可能叫使用者透過 send-pr 一個一個填,而 GNU GNATS 本身沒有網頁界面,所以必須找個軟體,可以讓使用者透過網頁介面產生 PR,以及查詢目前 PR 處理的進度。\r\n\r\n我找到 Gnatsweb 這套軟體,但發現他的介面並不好用,回頭來看 FreeBSD 用哪一套的時候,卻發現 FreeBSD 自己寫了一套給自己的 GNATS Database 用 !@#$%^...\r\n\r\n所以我花了一些時間寫了一個網頁介面,可以讓人 Submit & Search,順便練習怎麼寫各家瀏覽器都可以用的 Javascript,然後試著用 Yahoo User Interface Library,學著減少不斷重新造輪子的問題。同時把 RSS 2.0 實做出來:http://help.cs.nctu.edu.tw/pr/。\r\n\r\nPS:這篇文章沒有意義,純粹記錄事情而已。", + "title": "Problem Report System" + }, + { + "id": "611", + "body": "在 Google Blogoscoped 看到 Noam Chomsky 也開始利用 Blog 寫一些文章?Noam Chomsky Blog。實際的 Blog 在這:Noam Chomsky's blog,用 Drupal 架設的。\r\n\r\nNoam Chomsky 對於非美國 Computer Science 的人最熟悉的應該還是 Formal Language 裡的 Chomsky–Schützenberger hierarchy 以及 Chomsky Normal Form。", + "title": "Noam Chomsky" + }, + { + "id": "612", + "body": "Matt 在這篇這樣講:(Web2 Spam)\r\n
Nick Bradbury says \"Any new Web 2.0 company that hasn’t considered the spam problem automatically isn’t worth my time.\" I forget who said it, but my favorite definition of social software is \"things that get spammed.\"
\r\n不知道 Matt 在講什麼...\r\n\r\nSocial Software 利用 Internet 的 Social Network 產生有用的資訊,再回饋給 Internet。但因為牽扯到「人」,這時候就會有 Spammer 加入,想要透過 Social Network 進行他的廣告。這是 A (social software) => B (spam),不代表 B => A 啊...", + "title": "Social Software" + }, + { + "id": "613", + "body": "有人去用 Google TrendsGoogle 搜尋關鍵字的排名,發現最近 \"Google\" 這個關鍵字幹掉 \"porn\",但是還是輸 \"sex\",而 \"Yahoo\" 這個關鍵字比 \"porn\" 與 \"sex\" 都高,於是寫了一篇文章:Google beats porn . . . but not sex.,而 Digg 的標題下的更好笑 XD Google Users Want Yahoo Even More Than Sex?\r\n\r\n搜尋的結果在這:yahoo, sex, porn,我剛剛丟進去找的圖是這樣,藍色是 yahoo,紅色是 sex,橙色是 porn:\r\n\r\n\"yahoo,", + "title": "Google 搜尋關鍵字列表" + }, + { + "id": "614", + "body": "在 Falling in love with Rojo 看到有人說 Rojo 有改善,就把之前註冊的帳號拿出來測試,發現還是非常不好用。\r\n\r\n有很多地方可以用 AJAX 改善的都沒做,造成整個畫面不斷在 refresh,用慣 AJAX Application 後,看起來很痛苦。反倒是沒什麼大改版的 Bloglines 在這點做的就還不錯,相當簡潔,而且沒有廣告...", + "title": "再用一次 Rojo" + }, + { + "id": "615", + "body": "因為嫌 GIANT LOCK 太多,遠端把在美國的 colo-s4s.hasname.comFreeBSD 5.5-PRERELEASE 升級到 6.1-RELEASE :p \r\n\r\n還好沒有爛掉,不然就要花錢租用 Remote Network KVM 進 single user mode 處理 XD\r\n\r\nUpdate:有變比較快,不過沒想像中的多,看起來還要再找看看哪裡可以調整的 :/", + "title": "升級到 6.1-RELEASE" + }, + { + "id": "617", + "body": "不常遇到 Google Error 的 502 錯誤頁面持續超過一分鐘:\r\n\r\n\"Google", + "title": "Google Error" + }, + { + "id": "618", + "body": "WordPress.org 站上的 Search 是透過 Yahoo! Search API 處理,而 Matt 發現這幾天的 Search 功能又爛掉了:Yahoo Search Broken (again?),像是在 Search 頁面找 \"mysql\" 卻什麼都找不到:\r\n\r\n\"WordPress\r\n\r\n不過文中所提到的 inurl:yahoo.com search 這個 link 在 comments 裡大家都說很正常,可是 Matt 說他透過七台機器試,都不正常... XD\r\n\r\n大概是 WordPress.org 用的量太大,API key 被搞不清楚狀況的工程師給 ban 掉了?XD", + "title": "WordPress.org 站上的 Search 又爛了..." + }, + { + "id": "619", + "body": "在 Slashdot 看到自動回報的機制:Automate Spamcop Submissions,就想到之前寫的這篇說明文件:SpamCop and SpamCup。\r\n\r\n現在想起來,SpamCop 反而是一種 Web 2.0 的模式?因為參與的人愈多,整個架構就愈強大 XD", + "title": "自動回報 Spam 到 SpamCop" + }, + { + "id": "620", + "body": "在 Digg 看到 Google Checkout: PayPal Killer?,原報導在 Welcome to Google Checkout, that will be $3.14 這篇。\r\n\r\n文章裡提到了 googlecheckout.{net,org,info} 被 Markmonitor.com 註冊掉 (.com 被其他家公司註冊走了),而這家公司正是註冊 gbrowser.com 的公司,之前替 Google 弄 Whois Protection 的。\r\n\r\n而現在這家公司又註冊掉 googlecheckout.*,大家當然會猜測 Google 皆下來會有什麼動作 :p 不過依照 gbrowser.com 的慣例,呃... 其實很多事情還是說不準 :p\r\n\r\nUpdateSlashdot 上看到的實在太好笑了:(Another Google Tool To Take On PayPal?)\r\n
You midunderstand (Score:5, Funny)\r\nby Anonymous Coward on Monday May 29, @10:50AM (#15422859)\r\nGoogle Checkout is Google's new dating service. They let you check-out other singles in your area.
\r\n以及:\r\n
A Whole New Meaning (Score:5, Funny)\r\nby Alethes (533985) Alter Relationship on Monday May 29, @11:42AM (#15423018)\r\nAdds a whole new meaning to \"I'm Feeling Lucky\" now, doesn't it?
", + "title": "Google Checkout" + }, + { + "id": "621", + "body": "因為 Desktop 的速度不快,換用 Opera 試看看。雖然說過了 ACID2,但非主流 Browser 對於中文的美化程度還是有差啊 :p 而且有些操作介面的親和性還是不太夠... (繼續觀望)", + "title": "試用 Opera 9.0 Beta" + }, + { + "id": "622", + "body": "遲早會有人把腦筋動到 GPU 強大的運算能力上 :p\r\n\r\n這次是利用 Nvidia 的 GPU 弄出一個數學函示庫 GPUFFTW,利用 GPU 計算 FFT 的基本運算加速:High performance FFT on GPUs。\r\n\r\n在 Benchmark 中,透過 GPU 加速可以使得 FFT 整體的速度大約是純用 CPU 計算的四倍,但顯示卡的價錢卻只有 CPU 的 1/3。換句話說,把這類運算丟給 GPU 做,讓 CPU 計算其他的事情。\r\n\r\n不過還是有些限制:\r\n\r\n所以這個 Math Library 實際能應用的領域其實就小很多了...", + "title": "用 GPU 跑 FFT" + }, + { + "id": "623", + "body": "把放很久的文章整理出來。\r\n\r\n在 Photo Matt 這裡看到 MySQL 4.1 之後的版本可以有 INSERT ... ON DUPLICATE KEY UPDATE 這種用法:MySQL Counters。引用的原文在 INSERT ON DUPLICATE KEY UPDATE and summary counters. 這篇。\r\n\r\n如果你對於 race condition 有瞭解,你可以在文章裡看到這種用法將本來要自己做的檢查交給 MySQL 處理:\r\n
INSERT INTO ipstat VALUES(inet_aton('192.168.0.1'), 1, now()) ON duplicate KEY UPDATE hits = hits + 1;
\r\n這個功能在 MySQL 4.1 以及之後的版本有提供。", + "title": "INSERT ... ON DUPLICATE KEY UPDATE" + }, + { + "id": "624", + "body": "在 Digg 看到 Slashdot CSS Redesign 結果出爐的消息 (噗):Slashdot CSS Redesign Winner Announced。\r\n\r\n色調仍然保持灰色與綠色。本來以綠色當底色的部分,在新版改以綠色灰色漸層顯示;本來稜稜角角的轉角處,新版改用圓邊;左半部的 Menu 中,padding 與 margin 在新版調整過,留白比較多,並利用 Javascript 讓使用者可以關掉;最後,整個頁面大量使用 Sans-Serif,跟目前用 Serif 的風格完全不同:\r\n\r\n\"slashdot\r\n\r\nUpdate:剛剛才看到 Slashdot 上的報導:Slashdot CSS Redesign Winner Announced,作者是 Alex Bendiken。\r\n\r\nUpdate:新的版面上線了。", + "title": "Slashdot CSS Redesign" + }, + { + "id": "625", + "body": "忘記把 72.36.224.226 (租用的主機) 列入 SpamCop 的 Mail Hosts 裡,結果把從這台主機轉進來的 Spam 回報給 SpamCop 時被認為是 72.36.224.226 在送 Spam,而不是連到 72.36.224.226 的 IP address 在送,於是就自動回報給主機負責的 ISP (也就是 Layered Technologies)。\r\n\r\nLayered Technologies 收到信後通知 Server4Sale,而 Server4Sale 再轉給我,並告知二十四小時內沒有回應就會斷線 O_O\r\n\r\n趕緊去 SpamCop 新增 Mail Hosts 的資料,然後到系統上回 ticket 解釋...\r\n\r\nPS:如果是國內的 ISP 收到 SpamCop 說 Colocation 的機器在發廣告信,大概不會這麼有效率... XD", + "title": "SpamCop 的 Report" + }, + { + "id": "626", + "body": "Netcraft 的統計資料顯示 SSL 終於能夠放棄 SSLv2,進化到 SSLv3:Most sites ready for SSL progress。\r\n\r\n在 server 方面,只能使用 SSLv2 連線的 server 只剩下 0.1%,換句話說,有 99.9% 的 server 支援 SSLv3 或 TLS 1.0。\r\n\r\n在 client 的三個陣營裡,Mozilla 一年前首先建議關閉 SSLv2,而在 Firefox 2.0 更直接將 SSLv2 預設值關閉,同時不讓使用者透過 Options 的地方開啟 (如果硬要啟用必須透過 about:config 修改),除此之外,Firefox 現在正在考慮放棄 weak cipher (DES 與 RC2?) 加密;IE 7.0 則是將 SSLv2 的預設值關閉,另外在 Windows Vista 上的 IE 將不提供 weak cipher;Opera 將 SSLv2 與 weak cipher 加密的預設值關閉。\r\n\r\n大約到了明年,各家瀏覽器都推出新版後,就可以完全不用顧慮到 SSLv2。從 1996 年 SSLv3 出來就一直為了 backward-compatible 的東西終於可以收起來了。", + "title": "SSL 的演化" + }, + { + "id": "627", + "body": "今天 Meeting 完跟 Dracula菜配 在 Lab 講有的沒的,講到後來講到吃的事情,愈講愈心動,當場就決定去 大潤發 買電鍋 + 電磁爐,以及一堆吃的:119廚具生力軍。\r\n\r\n\"\"\r\n\r\n有時間再來研究要怎麼好好利用這個電鍋弄些有的沒的開伙 o_O", + "title": "大同電鍋" + }, + { + "id": "628", + "body": "會裝 Firefox 上的 Web Developer,其實是因為 布丁大長輩 深情推薦,裝了以後也不知道幹嘛 XD\r\n\r\n直到這陣子寫 HTML code 寫到受不了,決定來看 Web Developer 有什麼功能可以用,才發現這個 Extension 是個神兵利器 XD\r\n\r\n第一個,看某個物件的屬性。\r\n\r\n在畫面上按下 Ctrl-Shift-F (或是用 Toolbar 上的 Information,選 Display Element Information) 之後,移動游標,在左上角就會出現這個區塊的各種屬性,像是字體資料 (逛網頁時看到喜歡的字型不用再翻 HTML 與 CSS)、物件的巢狀架構 (想要變更 CSS 時超方便,在找 CSS 靈異現象時也超方便):\r\n\r\n\"Web\r\n\r\n第二個,看 Javascript 產生出來的 HTML code。\r\n\r\n有時候會透過 Javascript 產生一些 code,但產生出來的 HTML 在最簡單的 View Source (即 Ctrl-U 所跳出來的視窗) 裡面看不到。而 Web Developer 提供了 View Generated Source 的功能:\r\n\r\n\"Web\r\n\r\n第三個,看網站的結構性。\r\n\r\n用 View Topographic Information (在 Information 下) 可以看出來網站的結構性,舉布丁大長輩的網站當範例,上面這張是原來的頁面,而下面這張是點選 View Topographic Information 後的頁面。\r\n\r\n下面那張裡,預設是黑色,每多一層就變白一點。布丁大長輩的網頁 算是比較乾淨的網頁,如果你拿 blog.yam.com 的首頁抓出來看,你會看到在奇怪的地方多出一堆奇怪的白色框框 XD:\r\n\r\n\"Web\r\n\r\n\"Web\r\n\r\n當然,還有很多很好用的功能,有空的時候可以隨便抓兩個網頁對照看看,其實會利用 Web Developer 學到不少東西 (以及對於網頁設計的感覺)。", + "title": "Web Developer" + }, + { + "id": "629", + "body": "在 Digg 看到透過電話號碼 (美國) 查出是在哪一區的服務,再配合 Google Maps 將資料顯示出來:Phone Number Geolocator。站台在這:NPA-NXX Geolocator。\r\n\r\n不過這只是參考用的,像 ashley 的手機號碼就申請的地點,而非現在使用的地點。而 SkypeIn 的號碼則是完全不行... (蠻正常的 :p)", + "title": "用電話號碼查地區" + }, + { + "id": "630", + "body": "The Pirate Bay 被抄,然後又復站,這陣子 BitTorrent 世界裡面最熱門的新聞。\r\n\r\n事情的源起於 5/31 時,放在瑞典的 The Pirate Bay 被抄 (ThePirateBay.org Raided and Shut Down)。有人把被抄當時 ISP 機房的監視攝影機影片丟上 YouTube,然後再丟到 Digg 上讓大家知道:Video from the pirate bay raid,可以看到警方在抄的時候居然把監視攝影機用布擋起來的奇怪情況 :p\r\n\r\n而隔天 6/1 傳出消息:The Pirate Bay 決定拿新機器在其他國家捲土重來:ThePirateBay Will Rise Again?,而在今天 6/3,新機器已經放到荷蘭,並改名叫 The Police Bay XD XD XD:The Pirate Bay Is Back Online。\r\n\r\nUpdate:才剛講完就發現不對,www.thepiratebay.org 是用荷蘭的 IP address 沒錯,不過還有其他主機放在俄羅斯、烏克蘭、以及一個歐盟的國家?(The Pirate Bay Now Hosted in: Holland, Russia, Ukraine)\r\n
The Pirate Bay (TPB) Announced in Copenhagen that the site will be hosted in 4 individual locations, Holland, Russia, Ukraine, and one additional EU nation
\r\n\r\nUpdate Again:在 Digg 上看到群眾在斯德哥爾摩遊行:Demonstration held in response to the raid on The Pirate Bay,其中第一個 comment 提到了這次遊行的重點:\r\n
When a corperation has the ability to munipulate a foreign governments law enforcement and goverment into raiding a legal business (it may not be legal in the US but US law does not apply outside the US), then theres reason to be worried.
\r\n\r\nUpdate BlahThe Pirate Bay 新版的 Logo 很好笑 XD", + "title": "The Pirate Bay" + }, + { + "id": "631", + "body": "在 Slashdot 看到的,NetBSD 決定將 Sendmail 移出 Base System:Sendmail Removed From NetBSD。\r\n\r\nSendmail 目前已經從 NetBSD 裡移除了 (removed sendmail from the tree.),取而代之的是 Postfix (Re: removed sendmail from the tree.)。移除的理由要再看一下...", + "title": "NetBSD 將 Sendmail 移出 Base System" + }, + { + "id": "634", + "body": "如同標題所說的,在 Slashdot 上看到 Lenovo 宣佈未來的產品線將完全不支援 Linux,包括搭載的作業系統,以及售後服務:Lenovo To Shun Linux。\r\n\r\n雖然說在商言商,但像 Lenovo 這樣大膽直接宣佈要舔 Microsoft 的 ... (消音) 的,好像還不多...\r\n\r\nUpdate:在 Digg 看到聯想跳出來澄清:Lenovo denies ditching Linux。星期一的時候 Lenovo 的 Marc Godin (vice president of marketing for Lenovo's notebooks) 說他們會繼續提供 Linux 支援,先前的報導是 Frank Kardonski (Lenovo's worldwide product manager for its 3000 series) 提供給記者錯誤的資訊。", + "title": "Lenovo 以後不再支援 Linux" + }, + { + "id": "636", + "body": "今天看到 Netcraft 每個月的 Web Server Survey 才知道原來 GoDaddy 在 DNS 的佔有率這麼高,將大部分的客戶從 Apache 轉成 Microsoft IIS 後使得 Apache 大幅減少 (這個月少了 3.51%),而 Microsoft IIS 大幅增加 (這個月多了 4.25%),兩者相加之下一口氣拉近了 7.76%:June 2006 Web Server Survey。\r\n\r\n不知道有沒有機會看到 Microsoft IIS 超過 50% 的市佔率 :p 其實以 Microsoft 的財力要搞絕對沒問題啊,照 Netcraft 的資料,現在才八千萬個 domain,Microsoft 花個一億美金買一整排 .info domain,這一整年的數據就好玩了 XD", + "title": "Apache 與 IIS 的比例" + }, + { + "id": "638", + "body": "BitComet 0.68 出版一陣子了 (大約一個禮拜),在 BitComet Client Release Notes 裡可以看到兩個比較重要的修正:\r\n\r\n看起來應該是 Security Issue?既然會 Crash,那麼就有蠻大的機會來一發?所以,還在用舊版 BitComet 的使用者,建議換成 µTorrent,如果真的用不習慣再用 BitComet 0.68 吧 XD", + "title": "BitComet 0.68" + }, + { + "id": "639", + "body": "前陣子在 #bsdchat 上聽 rafanOmniTTY 可以透過 ssh 連到很多台機器,然後開 Multicast Mode 對每台機器下指令,再加上 ssh-agent 可以把輸入密碼的步驟省掉,就超級方便 XD\r\n\r\n結果聽完以後一直沒機會測試,直到今天 PR System 上有東西需要更新 /etc/login.conf,剛好可以拿來玩看看。\r\n\r\n先進入 Omnitty,然後用 F5 開一堆機器,接下來用 F1 + T 把所有的機器都標起來,再用 F7 進入 Multicast Mode,然後把要下的指令打進去,就會像這樣:(順便提一下,你可以用 F2/F3 上下移動看看每台機器的情況 XD)\r\n\r\n\"OmniTTY\"\r\n\r\n然後繼續打:\r\n\r\n\"OmniTTY\"\r\n\r\n接著你可以用 F2/F3 上下移動看看是不是每一台都做完了 :p", + "title": "OmniTTY" + }, + { + "id": "640", + "body": "早上在 IRC 上看到 ijliao 說他的文章被抄了,而且連 comment 都一起抄到 comment 的地方 XD:http://spaces.msn.com/ianstaiwan/Blog/cns!1pEGl-2xwEZs834h_BxrdhWQ!1237.entry,而 Blake 學長看完以後發現自己的 Blog 名字也在上面就無奈了 XD:\r\n
10:51 <@ijliao> 好可怕...\r\n10:51 <@ijliao> http://spaces.msn.com/ianstaiwan/Blog/cns!1pEGl-2xwEZs834h_BxrdhWQ!1237.entry\r\n10:52 <@ijliao> 這文章明明是我寫的, 但是他拿去改成這鬼樣 orz\r\n10:52 <@ijliao> 更悍的是... 竟然連 comment 也 co 去了 XD\r\n10:53 <@Blake> 我居然看到自己blog名字的comment
\r\n連過去看本文,語氣一點都不像 ijliao 寫的。倒是 comment 倒是一看就知道是抄學長的,因為用的名稱太熟悉了 :p\r\n\r\n正想要問 ijliao 是抄哪一篇,回頭就在 IRC 上看到長輩已經把原文丟出來給大家對照:\r\n
10:53 <@ijliao> http://blog.ijliao.info/archives/2005/10/22/1850/ # 原文 ;p
\r\n把 ijliao 的跟這傢伙的比照一下就讚嘆不已,可以抄到完全感覺不出來是原作者 ijliao 寫的 XD\r\n\r\n仔細看過以後,發現大概是把標點的部分改掉 (用三個句點),然後再把某幾句換上一些等義詞,看起來比較「生動」一點 :p 後來又花了一些時間從首頁翻了幾篇文章,看起來都是抄別人的文章當作自己的作品 :p (有些文章的風格不太一樣,另外有幾篇把關鍵字丟進 Google 找,可以找到原來的文章)\r\n
10:55 <@ijliao> http://spaces.msn.com/ianstaiwan/ # 抄好多\r\n10:56 <@Blake> ijliao: 你的仰慕者?? :p\r\n10:56 <@ijliao> http://spaces.msn.com/ianstaiwan/blog/cns!EDC8252070837C45!1759.entry # 這也是我寫的\r\n10:57 <@Blake> 被他這樣改過之後,還真是有點耳目一新的感覺... :p\r\n10:57 <@Blake> 完全都看不出來是廖董寫過的文章 :p\r\n10:57 <@ijliao> *默*\r\n10:58 <@pesty> 連分級都抄? XD\r\n10:58 <@ijliao> 連 comment 都抄才絕好不好\r\n10:58 <@ijliao> 抄 content 算什麼 XD\r\n10:58 <@Blake> 的確,連 comment 都抄這個就真的厲害了
", + "title": "抄!" + }, + { + "id": "641", + "body": "這篇積在 Draft 裡面好久了 (從受傷前就丟著),主要是目前的 PR System 用了一陣子以後有些想法。\r\n\r\n目前系上在用的 PR System 是在 http://help.cs.nctu.edu.tw/pr/,跟 FreeBSD 使用的是同一套系統 (GNU GNATS),但跑起來還是遇到一些問題:\r\n\r\n所以我也不知道接下來要怎麼辦 :p", + "title": "目前 PR System 的問題" + }, + { + "id": "642", + "body": "在 rafan 板上看到 Binary Search 的問題:Extra, Extra - Read All About It: Nearly All Binary Searches and Mergesorts are Broken。\r\n\r\n簡單來說就是 int 能處理的數字不夠,以他給的例子中:\r\n
6:        int mid = (low + high) / 2;
\r\n當 low + high > INT_MAX 時就會炸掉,所以在這篇文章裡給了一些解法:\r\n
6:        int mid = low + ((high - low) / 2);
\r\n或是:\r\n
6:        mid = ((unsigned) (low + high)) >> 1;
\r\n果然是在大單位裡面才會遇到的 bug XD", + "title": "Binary Search" + }, + { + "id": "643", + "body": "更新 Adblock Plus Filterset.G 後發現新版的 @@/ad/.*\\w{10,30}/ 白名單會讓無名的廣告 bypass 出現,於是就會看到一堆廣告... 把這個白名單 disable 後就好多了。", + "title": "無名的廣告" + }, + { + "id": "644", + "body": "在找書的時候發現學校圖書館提供新進書目的 RSS feed,興高采烈點進去看,差點把飲料噴到螢幕上:國立交通大學圖書館 新書通報 RSS訂閱服務系統。\r\n\r\n會選擇使用 RSS 吸收資訊,就是要解決資訊爆炸的問題,結果一個頁面裡放上百個 RSS feed,這...\r\n\r\nPS:交大的中文圖書是採用 賴永祥中國圖書分類法,RSS 也是照這個分類做的,不過有些項目就更細了,所以超過一百個 RSS。", + "title": "畫虎不成反類犬" + }, + { + "id": "645", + "body": "我平常就在使用 BonEcho Alpha (即 Mozilla Firefox 2.0 Alpha),雖然用得很開心,但有時還是會遇到設計不良的網站令人掃興。\r\n\r\n像是用 BonEchoRiya,會告知我所使用的瀏覽器並不支援,而不讓我使用:\r\n\r\n\"Riya\"\r\n\r\n但我只要用 User Agent Switcher 將送出的 User-Agent 換成 IE6,或是 Firefox 1.5.0.3,就可以使用整個站台,換句話說,BonEcho 的確有能力觀看整個網站。\r\n\r\n要避免這種情況,在 Object detection 就有講到要怎麼避免直接判斷瀏覽器的種類,而應該儘量從「瀏覽器支援哪些功能」判斷。", + "title": "被歧視的 Firefox 2.0" + }, + { + "id": "646", + "body": "在 Digg 看到 Samsung 研發出兩吋 640x480 LCD。以一般 17\" LCD 提供 1280x1024 的 pixel 密度計算,密度高出十幾倍:Samsung squeezes 640x480 pixels on 1.98\" display。", + "title": "兩吋的 640x480 螢幕" + }, + { + "id": "647", + "body": "在 Digg 上看到講 Unix 上 Programming 可能要注意的事項,可以參考看看:Secure Programming for Linux and Unix HOWTO。\r\n\r\n有些東西我不確定正確性,尤其是 Crypto 那節的東西。對於安全性而言,推薦使用 3DES 而非 AES 的想法有點奇怪,我不是很確定現在 Symmetric Key System (以及 Private Key Cryptography) 的進展,要找時間查。", + "title": "Secure Programming for Linux and Unix HOWTO" + }, + { + "id": "648", + "body": "在 Google Blogoscoped 看到有人修改 Google Account Login 的 URL,試著挖看看有什麼有趣的東西,就如同有人拿字典檔定時跑 [word].google.com,看有沒有新東西出現是一樣的道理 :p\r\n\r\n結果這次挖到一些看起來很有趣,但不知道是做什麼的東西:Google RS2, SSD...?。URL 分別是:\r\n\r\n其中 MDC 已經知道是 Mobile Download Console,聽名字可以知道方向,但 RS2 與 SSD 就完全不知道了 XD", + "title": "試著從 Google Account 挖寶" + }, + { + "id": "649", + "body": "看到幾則大胖子 Robert Scoble 要離開 Microsoft 的新聞:\r\n\r\n當事人還沒出面解釋,所以不知道是不是芭樂新聞 XD\r\n\r\nUpdate:大胖子在他的 Blog 上對這項傳聞寫的不太清楚,另外還丟了張看起來很怒的照片出來:How I feel XD 另外他還寫了一篇 Correcting the Record about Microsoft 駁斥外界對於 Microsoft 的傳言 XD 但還是看不太出來他要不要跳槽啊 :p\r\n\r\nUpdateNetcraft 發現在消息傳出後,大量湧進的流量搞爆 podtech.netScoble News Bogs Down Podtech.net。\r\n\r\nUpdateScoble 丟出一張 WordPress.com 統計的圖,被各大媒體 DDoS 產生的量:\r\n\r\n\"\"", + "title": "Robert Scoble 離開 Microsoft?" + }, + { + "id": "651", + "body": "在 Slashdot 上看到 Firefox 將放棄 Windows 2000 之前的支援:Firefox to Drop Pre-Windows 2000 Support。加上 Microsoft 不打算修正 Windows 98 上的漏洞 (Microsoft Stops Supporting Win98 Early),這使得還在用古董的長輩 (像是還在用 Windows 95 的 slzzp) 得開始考慮換 OS 了 XD", + "title": "Firefox 對於 Windows 的支援" + }, + { + "id": "652", + "body": "這個禮拜有兩個期末考 (星期二與星期四),結果這時候開始流鼻水... o_O 這一定是晚上電風扇吹太爽的關係 =_= 再看看要怎麼辦好了...\r\n\r\nUpdate:邊流鼻水邊流眼淚好辛苦 @_@", + "title": "流鼻水" + }, + { + "id": "653", + "body": "MSI Crystal 945 All-In-One LCD PC:\r\n\r\n\"\"\r\n\r\n不過側面看起來好亂...", + "title": "正面看起來好像某項產品..." + }, + { + "id": "654", + "body": "不知道寫在這裡當事人看不看的到 XD\r\n\r\n剛剛在 Bloglines 上看到了一個新的 PR,不是自己人 (計中助教) 生出來的,很興奮的跑去看是什麼:Problem Report linux/183: 無法寫入磁碟。\r\n\r\n看了看 PR,不知道到底是哪台主機:csie 有十九台 Linux 工作站可以登入使用,您說的是哪台啊 +_+ 只好一台一台登入進去看 wtmp 紀錄 (還好平常就有丟 ssh key),發現送 pr 的人是使用 linux8 這台主機,用 vi (vim) 測了一下也沒發現問題,只好放著讓 linuxadm 處理了 XD\r\n\r\n在填寫 PR 時,如果能把問題寫的更詳細,或是能提供重複的步驟,這樣對於想幫忙的人會比較快解決問題,尤其這段時間大家都在期末考 o_O", + "title": "Bug/Problem Report 的技巧" + }, + { + "id": "655", + "body": "這學期修 Coding Theory,在裡面學到的 Viterbi AlgorithmAndrew Viterbi 發明的。\r\n\r\nAndrew Viterbi 除了在電子方面的成就外,還是一個成功的經營者:他是 Qualcomm 的創辦人之一。西元兩千年時 Andrew ViterbiForbes 400 排名第 386 名,是個大長輩 :p\r\n\r\nPS:Coding Theory 的程式作業 這篇實在是... XD", + "title": "Andrew Viterbi" + }, + { + "id": "656", + "body": "看到 zmx 這篇 RSS 標題編碼問題 想到之前碰到的問題。\r\n\r\n之前在寫 RSS 2.0 時發現,如果只照著 Spec 上送 <description>內容</description>,在 Bloglines 上看不到斷行,後來決定看 WordPress 處理的方法,發現除了 <description>內容</description> 以外,還多了 <content:encoded>內容</content:encoded>,照著這個方法作就會有斷行。\r\n\r\n也許該試看看 Atom 1.0...", + "title": "RSS 2.0 的定義" + }, + { + "id": "657", + "body": "世界盃開打,結果賭博網站掛掉:UK Betting Sites Hit By Outages During World Cup。\r\n\r\n照 Netcraft 的說明,這次的「經濟規模」是 2002 年的五倍,但另一方面,每當有重大比賽時,這些網站就會被勒索,如果勒索不成就會遭到 DDoS 攻擊。所以目前還不是很確定這些網站掛掉是因為量太大的關係,還是因為有人惡意攻擊。", + "title": "世界盃" + }, + { + "id": "658", + "body": "在 eBay 買下 Skype 後這麼久,透過 Paypal「轉帳」的功能被整合到 Skype 的軟體內了:Skype-PayPal Integration。\r\n\r\n\"Skype", + "title": "Skype 與 Paypal 的整合" + }, + { + "id": "659", + "body": "騎腳踏車受傷,右手手掌骨折,縫針打鋼釘,要修養一個月 O_O 如果有事情,請儘量打手機找我,用單手打字不太方便 :p\r\n\r\nPS:該搞 Podcasting 嗎?o_O\r\n\r\nUpdate:突然想到,我現在沒辦法在實體商店用信用卡 O_O 這樣就不能跑出去偷買東西了 :~", + "title": "受傷" + }, + { + "id": "660", + "body": "剛剛在 IRC 上看到 布丁大長輩 丟出來的圖:\r\n\r\n\"The\r\n\r\n這個夠好笑 XD", + "title": "大胖子 Scoble 離開 Microsoft 後的新聞" + }, + { + "id": "661", + "body": "在 Geeking with Greg 這看到關於 Web Accelerator 如果使用 Prefetching 會造成的問題:Web acceleration without prefetching。\r\n\r\n有些網站設計上有些瑕疵,會用 <a href=\"blah.php?action=suicide\">刪除帳號</a> 這種方法來傳指令,然後自以為很聰明的用 Javascript 跳出一個 Yes/No 的視窗確認。這種網站在遇到 Prefetching 時就會... 舉個例子說,Group.NCTU.edu.tw 的 logout 就是一個例子。\r\n\r\n比較「中性」的方法是放棄這麼激烈的作法,改用 DNS cache,然後先連線到對方主機,但先不要送資料。這樣可以省下 DNS 查詢的時間以及建立 TCP Connection 的時間。只比原來 Prefetching 的方法少了最後抓資料的時間,但卻讓穩定性上升不少。", + "title": "Prefetching 的問題" + }, + { + "id": "662", + "body": "Google 也開始測試 Pay-Per-Sale 了,也就是完成交易後才付出廣告費用:\r\n\r\nPay-Per-View 容易以大量的假流量偽造,而 Pay-Per-Click 則有假點擊的問題。當時就有人提出 Pay-Per-Sale 的觀念:在交易成立後才需要付廣告費用,而這種方式幾乎無法偽造。\r\n\r\n看 Google Adsense 的發展看了兩年,終於推出 Pay-Per-Action 了... (跟以往一樣,都先找一批人測試,然後看效果如何並進行評估)\r\n\r\n加上前陣子剛好又有風聲要搞 Google Payment,而發言人跳出來澄清說他們不是要做類似 PayPal 的東西,看起來還頗有樣子的,接下來就是等時間了 :p", + "title": "Google 的 Pay-Per-Sale" + }, + { + "id": "663", + "body": "在 Boing Boing 上看到 The Pirate Bay 的反解有很多很有趣的名字 XD:PirateBay hides anti-MPAA taunt in DNS。\r\n\r\nPS:The Pirate Bay 又改名了,這次叫 The Phoenix Bay,然後 Logo 畫個鳳凰... 不知道 MPAA 的大魔頭看到會有什麼感想 XD\r\n\r\nUpdate:剛剛在 Digg 看到 The Pirate Bay 從荷蘭搬回瑞典的消息,難怪會把 Logo 換成鳳凰:The Piratebay Returned To Its Base。", + "title": "The Pirate/Phoenix Bay 的 DNS 反解" + }, + { + "id": "664", + "body": "前天回 新竹馬偕 拆針,因為線已經陷在肉裡面,拆針的時候不小心剪到肉 !@#$%^... 鋼釘則還要再三個禮拜才能拆,humm...\r\n\r\n", + "title": "拆針" + }, + { + "id": "665", + "body": "颱風天回新竹馬偕檢查顏面神經... 臉上被扎了三針 XD\r\n\r\nAnyway,已經回台北了,下禮拜拔鋼釘 (鋼針) 時順便看報告。", + "title": "回新竹馬偕檢查" + }, + { + "id": "666", + "body": "這篇主要是給 FreeBSD Ports maintainer/committer 看的,如果你看不懂,呃... 到 #bsdchat 上問看看吧 :p\r\n\r\nTinderbox (在 misc/tinderbox 裡) 主要是拿來測試 port 是否可以正常的編出來,順便產生 package。網頁在 http://tinderbox.marcuscom.com/ 這,其中的 README 寫得蠻清楚的,建議仔細看。\r\n\r\nTinderbox 的好處在於他會產生一個 chroot 的環境 (在 Tinderbox 官方說明文件裡的 \"Jail\" 指的是 chroot 的環境,下面提到 Jail 都是指這個,而非 FreeBSD 的 jail),然後在裡面進行編譯的工作,這可以測試在系統什麼都沒有裝的情況下是否能正確編譯。主要是要看有沒有漏設 *_DEPENDS。\r\n\r\n另外,Tinderbox 可以在 6.x 的機器上建立出 5.x 甚至 4.x 的 Jail 並進行編譯,這使得以往要在多台機器上測試的情況可以在一台機器上測試完畢。\r\n\r\n再來,Tinderbox 可以對每個 Jail/PortsTree/Build 自訂環境變數 (關於什麼是 PortsTree 與 Build,在後面會提到),於是你可以利用這些東西建立出設定不同的 Perl version (4.11 系統裡的 5.00503,或是 5.6.x,或是目前建議用的 5.8.x),這對於 p5-* 的 maintainer 相當方便。\r\n\r\n接下來開始講 misc/tinderbox 的安裝,Tinderbox 需要一個 Database,裝 mysql 4.1 之後的版本,接著裝 databases/p5-DBI 與 databases/p5-DBD-mysql{41,50,51,...},然後才裝 Tinderbox。\r\n\r\n裝好後東西都丟在 /usr/local/tinderbox 下,原則上不動這個目錄,直接找個夠大的空間 cp -R 過去,像我自己是丟在 /da1/tb 下。\r\n\r\n丟進去以後改 /da1/tb/scripts/tinderbox.ph,改前面幾行的設定就好,重點在於第一行的路徑要設對就可以了。改好後跑 cd /da1/tb/scripts && ./tc init,然後看看 /da1/tb 下面是不是多了一堆目錄。\r\n\r\n接著建立 Jail,挑你想要測試的環境建立:\r\n
#\r\n# 4.11-RELEASE\r\n./create Jail -j 4.11 -d \"FreeBSD 4.11-RELEASE\" -t RELENG_4_11 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 4-STABLE\r\n./create Jail -j 4 -d \"FreeBSD 4-STABLE\" -t RELENG_4 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 5.5-RELEASE\r\n./create Jail -j 5.5 -d \"FreeBSD 5.5-RELEASE\" -t RELENG_5_5 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 5-STABLE\r\n./create Jail -j 5 -d \"FreeBSD 5-STABLE\" -t RELENG_5 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 6.0-RELEASE\r\n./create Jail -j 6.0 -d \"FreeBSD 6.0-RELEASE\" -t RELENG_6_0 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 6.1-RELEASE\r\n./create Jail -j 6.1 -d \"FreeBSD 6.1-RELEASE\" -t RELENG_6_1 -u CVSUP -H cvsup.tw.freebsd.org\r\n#\r\n# 6-STABLE\r\n./create Jail -j 6 -d \"FreeBSD 6-STABLE\" -t RELENG_6 -u CVSUP -H cvsup.tw.freebsd.org
\r\n執行後他會跑 cvsup 將指定的版本抓回來,然後 make world 將 Jail 建立出來。", + "title": "FreeBSD Tinderbox (上)" + }, + { + "id": "668", + "body": "7/18 在 新竹馬偕 把鋼針拔掉了,不過支架還是得繼續戴兩個禮拜。8/1 會再看一次,到時候會看手的情況決定支架是不是還要戴著。", + "title": "近況" + }, + { + "id": "669", + "body": "在 Slashdot 上看到一份關於使用 Blog 的情況:Only 5% Of Bloggers Are Journalists。\r\n\r\n原報導在 Blogger ain’t journalists 這,其中 37% 的人認為他們的 Blog 是當日記用,至於其他的選項,幾乎都不具參考價值,因為:\r\n
Pew researchers called 233 bloggers between July 2005 and February this year and undertook additional, larger-scale telephone surveys through April. These follow-up surveys yielded a sample of 7,012 adults, which included 4,753 Internet users, 8 percent of whom are bloggers. The margin of error was 6.7 percent.
\r\n\r\nPS:所謂的標題殺人法...", + "title": "使用 Blog 的行為調查" + }, + { + "id": "670", + "body": "在 Brian Krebs on Computer Security 報導了使用未修正的 IE (Microsoft 在 2006/01 有釋出 patch) 看 MySpace 會遭到 Spyware/Keylogger 感染:Hacked Ad Seen on MySpace Served Spyware to a Million。\r\n\r\n這是因為在 MySpace 放廣告的廣告商所造成的:\r\n
An online banner advertisement that ran on MySpace.com and other sites over the past week used a Windows security flaw to infect more than a million users with spyware when people merely browsed the sites with unpatched versions of Windows, according to data collected by iDefense, a Verisign company.
\r\n太讚了...", + "title": "利用 Ad Network 感染電腦" + }, + { + "id": "671", + "body": "這陣子看 Bloglines 發現在這一個月內 Digg 的量成長的太快,每天居然有上百條新聞... 本來以為是 Bloglines 出鎚,後來仔細看才發現 Bloglines 沒搞錯...\r\n\r\n這樣的量實在太大了,退訂...", + "title": "退訂 Digg" + }, + { + "id": "672", + "body": "\"Unable", + "title": "Unable to unsubscribe" + }, + { + "id": "673", + "body": "IE7 將透過 Windows Update 供人下載,並標示為 \"High Priority\":Microsoft tags IE 7 'high priority' update。", + "title": "Monopoly" + }, + { + "id": "674", + "body": "用 Google Alerts 訂到的東西:http://w2.goolu.com/member/_admin/user_info1.txt。在 咕嚕美食網極嚴重的安全漏洞 這篇提到的日期是 6/2,而現在是...\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "咕嚕美食網" + }, + { + "id": "675", + "body": "\"\"", + "title": "Unauthorized" + }, + { + "id": "676", + "body": "用左手拿筷子其實還頗有趣的... 如果不是因為右手不能用的話 +_+", + "title": "左手" + }, + { + "id": "677", + "body": "試用 Google Reader,比之前好很多,丟些進去測試看看。", + "title": "Google Reader" + }, + { + "id": "678", + "body": "居然花了三年的時間,線上人數可以到 60k,才看到 Ptt 因為管理不當而爛掉的情況。", + "title": "三年" + }, + { + "id": "679", + "body": "我前幾天在 Unauthorized 這篇貼了一張 Screenshot,關於 b6shttp://taipedia.info/drupal/zh-hant/aggregator/sources/56 的侵權行為。(已經撤下,文字部分仍可以在 Google Cache 裡找到,圖片部分請參考 Screenshot)\r\n\r\n兩天後在 b6s 上的 blog 他發表了這篇文章:RSS 重製與轉散佈問題在這篇文章裡面幾乎所有的觀點都是對的,只是他講的跟他做的事情沒有關係。\r\n\r\n以引用的量來區分,有三種:引用標題 (並提供連結)、引用部分內文 (可能會帶有評論文字)、引用全文。為了解釋清楚,我將 b6s 與搜尋引擎以及線上 RSS 閱讀器的行為列出來。\r\n\r\nb6s 的行為包括了:\r\n\r\nBloglines:\r\n\r\nGoogle Reader:\r\n\r\n再回頭回憶一下上面所說的,引用的量分三種:引用標題 (並提供連結)、引用部分內文 (可能會帶有評論文字)、引用全文。上面所列的三個單位也都牽涉到全文引用。\r\n\r\n這三種引用模式,GoogleYahoo 都幹過:第一項與第二項會在 Search 時出現,第三項則是在 Google Cache 以及 Yahoo 的頁庫存檔出現。前面兩項在討論網路著作權的問題時就有提到了,美國的法院判定 Google 第三項行為都是合理使用。中文資料可以參考 美國法院判定Google Cache的儲存著作是合理使用 這篇。\r\n\r\n回過頭來講這次的侵權行為,我知道我的網站提供 RSS,而且我有足夠的知識知道,透過 RSS,可以很方便的重製內容:所以我默許了我的文章在 RSS 瀏覽器裡被重製,這包括了 Offline 的 Firefox、FeedDemon、... 以及 Online 的 BloglinesGoogle Reader、... 但我會假定,不屬於自己的內容,不應該有權利再散佈出去,而我在找資料的時候發現 b6staipedia.info 上重製。\r\n\r\n這就是我貼那篇 Unauthorized 的原因,而我相信,這種行為不管在哪個國家都不會被認定是 \"Fair Use\"。不過 b6s 似乎還是跟小孩子一樣,在 taipedia.info/drupal/ 放上我站上的 Screenshot 並且寫了一篇 RSS 重製與轉散佈問題 的文章來辯解。", + "title": "RSS 的使用" + }, + { + "id": "680", + "body": "MSN Spaces 換 Permlink,於是 Bloglines 上多出一堆文章... (gosh)", + "title": "MSN Spaces" + }, + { + "id": "681", + "body": "剛剛在看 Bittorrent 的 Protocol Encryption 資料時發現 Mainline (也就是原廠的 Bittorrent Client) 已經在 4.9.2-beta 支援 MSE/PE 了:BitTorrent protocol encryption。\r\n\r\n另外,在同一篇文章裡有提到,有些加拿大的 ISP 已經有辦法攔住,在 forum 裡有猜測是透過與 tracker 間的通訊或是透過 DHT 而得知,也有人猜測是挑出大量的 connection 而得知...\r\n\r\n有些簡單的方法,像是透過把連線到 tracker 的部分用 Tor 保護起來 (µTorrent 有提供),再把 Encryption 開成「強制」,並且不允許沒有 Encryption 的連線連入。\r\n\r\n不過仔細想想還是有不少漏洞可以偵測就是了... 也許 Bittorrent Protocol 也要配合才能阻止 :o", + "title": "Bittorrent 的 Protocol Encryption" + }, + { + "id": "682", + "body": "剛剛查資料發現,原來每家收費方式還不太一樣 :p\r\n", + "title": "165 反詐騙諮詢專線" + }, + { + "id": "683", + "body": "在 Slashdot 上看到 Mozilla 將與 RealNetworks 合作 (目前的合約是兩年) 以拓展 Firefox 的佔有率:Mozilla Partners with Real Networks。\r\n\r\nRealNetworks... humm...", + "title": "Mozilla 將與 RealNetworks 合作" + }, + { + "id": "684", + "body": "今天去 新竹馬偕 做復健拉筋,有夠痛 :/ 星期五再去一次...\r\n\r\nUpdate:這次居然直接用繃帶坳下去... 不知道下次會有什麼玩意 @_@", + "title": "拉筋" + }, + { + "id": "685", + "body": "ClearType 很好用,但在 Windows XP 上預設是關閉的,所以網頁設計師在設計網頁時必須考慮到這個情況,選擇打開 ClearType 與關掉 ClearType 都還順眼的字型。\r\n\r\n剛剛在 Dave Shea 那邊看到 IE7 將 Cleartype 變成 Browser Feature,並且將預設值打開啟用:ClearerType。\r\n\r\n不知道以後的 Webpage 會是什麼樣子 :p", + "title": "ClearType" + }, + { + "id": "686", + "body": "在 in2 板上看到的:2006年自由軟體與開放源碼國際研討會。整個議程看起來好詭異...\r\n\r\nUpdate:看起來 http://2006.icos.org.tw/ 也是某個官方網頁 (只是一個 iframe 連到新竹這邊)。", + "title": "ICOS 2006" + }, + { + "id": "687", + "body": "FreeBSD Portsbsd.port.mk 改動:\r\n
Add support for DESTDIR part I.\r\n\r\nThis commit should largele be a NOOP as it only adds support for DESTDIR undefined. This does allow us to start testing ports with DESTDIR set, but this is as of yet not supported.\r\n\r\nAlthough this has been extensively tested on pointyhat, this is a very intrusive change and some cases may have been overlooked. Please contact Gabor and me if you find any.\r\n\r\nPR: 100555\r\nSubmitted by: gabor\r\nSponsored by: Google Summer of Code 2006
\r\n這使得本來在 Makefile 裡用 ${PREFIX} 的都要改用 ${TARGETDIR},而且蠻多地方需要人工檢查... 在現在的一萬五千個 ports 裡不知道有多少 ${PREFIX}...\r\n\r\nUpdate:用 INDEX + grep 掃過之後發現,光是 ports@freebsd.org 的就有 2k+ 個要檢查...", + "title": "DESTDIR (TARGETDIR)" + }, + { + "id": "688", + "body": "不知道這邊講的 Gaming Cafe 跟我想的是不是同個東西,因為下面的 comments 都沒提到 Korea 或是 Taiwan 之類的經驗:Can a Gaming Cafe be Successful?。", + "title": "Gaming Cafe" + }, + { + "id": "689", + "body": "Slashdot 上看到的:Major Security Hole Found In Rails,有在用 RoR 的人記得更新。\r\n\r\n原公告在 Rails 1.1.5: Mandatory security patch (and more) 這裡,要求使用者升級的語氣相當強烈。", + "title": "RoR 1.1.0 ~ 1.1.4 安全問題" + }, + { + "id": "690", + "body": "在之前寫過 Bram Cohen (Bittorrent 原作者) 認為 Header Encryption 不是解決頻寬不足的好方法 (Bittorrent Encryption 這篇),於是跟 CacheLogic 合作,訂出了 CDP 這個 Cache 的機制:Bittorrent Implements Cache Discovery Protocol,至於 CDP Server 是否能夠像 Proxy Server 一樣被認定為合理使用,就要花時間等第一個法院判決的結果了...", + "title": "Bittorrent 的 Cache Discovery Protocol" + }, + { + "id": "691", + "body": "You need to change codes in brianslatestcomments.php, just modify $tablecomments to $wpdb->comments, and modify $tableposts to $wpdb->posts.\r\n\r\nNow it's back.", + "title": "Brain's Latest Comments on WordPress 2.1-alpha2" + }, + { + "id": "692", + "body": "問個資料庫的問題。現在是否有符合下面這些條件的資料庫:\r\n\r\nBerekeleyDB 的 Replication (即 Single Master, Read-only Slave) 最後會卡在 Writing,而且空間的消耗讓人不是很滿意。Google Filesystem 的架構仍然有 Single Point of Failure (我想他們應該是用 Layer 4 Switch 或是其他配合硬體的方式解決),所以我想問的是,有沒有數學方法就可以滿足上面要求的資料庫?\r\n\r\nUpdate:我希望每個 node 都是 1TB,初期大約三十台到六十台機器,以後可以擴充到上千台,每個 key 都會有四份資料放在 DB 裡面。", + "title": "Database" + }, + { + "id": "693", + "body": "剛剛翻到的兩個 DNSBL 可以擋 Tor,對於 BBS 與 Mail System 算是不錯的東西:\r\n", + "title": "Tor 的 DNSBL" + }, + { + "id": "694", + "body": "剛剛處理完發現 INN 套件裡就程式可以做。\r\n\r\n當 innd 與 nnrpd 分開跑時,有可能會出現 innd 掛了,但是 nnrpd 還沒掛的情況,這時候 nnrpd 會把文章都積在 ~/spool/incoming 下。\r\n\r\n恢復後用 rnews -U 就可以把積在裡面的文章送出去,其中在 inn.conf 裡有兩個要設定好:\r\n
nnrpdposthost: localhost\r\nnnrpdpostport: 433
\r\n這邊指的是 nnrpd 要往哪邊丟,需要有 IHAVE 的權限。", + "title": "當 innd 掛掉但 nnrpd 沒掛,處理完後..." + }, + { + "id": "695", + "body": "在 Slashdot 上看到 Mac、Windows、KDE 這三套軟體 GUI 的演進:GUIs From 1984 to the Present。\r\n\r\n第一個 Comment 有人給了另外一個更完整的網頁:Graphical User Interface Timeline,目前這個網站正受到 Slashdot effect 影響而變慢,請耐心等待 :p\r\n\r\n而後面的 Comment 馬上有人回說少了這張經典畫面 XD\r\n\r\n\"BSDO\"", + "title": "Mac、Windows、KDE 的 GUI" + }, + { + "id": "696", + "body": "在 Slashdot 上看到,如果有人把 Wikipedia 的 Sample 壓的比 paq8f 小,那麼就有機會得到獎金:Compress Wikipedia and Win AI Prize。", + "title": "Lossless data compression" + }, + { + "id": "697", + "body": "Slashdot 這篇 How to Crack a Website - XSS, Cookies, Sessions 所提到的原始文章講的很清楚,把常見的 XSS 問題都提出來了:XSS, Cookies, and Session ID Authentication – Three Ingredients for a Successful Hack。\r\n\r\n在文章裡提到的問題要解決其實還算簡單:沒有處理過的字串,要轉成 HTML 輸出要先經過 htmlentities() 處理。", + "title": "XSS" + }, + { + "id": "698", + "body": "現在的 Performancing 用起來比以前的好太多了 :o\r\n\r\n不過比起 WordPress 的介面還是有點差距,像是 Categories 的部分沒有照樹狀結構排,要再花點時間習慣...", + "title": "Performancing" + }, + { + "id": "699", + "body": "在 GigaOM 上看到 Google 又買了奇怪的公司,跟 Biometrics 有關?這是什麼鬼 XD:Google Buys Photo Recognition Company。\r\n\r\n併購的消息在官方的 Blog 上可以看到,要拿來跟 Picasa 惡搞一番:A better way to organize photos?", + "title": "Google 買下 Neven Vision" + }, + { + "id": "700", + "body": "在 Google Blogoscpoed 上看到 Google Coupons 的消息:Google Coupons?,目前只有在北美、對岸、日本才能 看到,從台灣連過去只看到 404 XD 使用。\r\n\r\n也許應該用跳板跳進去看看有什麼有趣的東西 :p Coupons 耶 XD\r\n\r\nUpdate:link 錯了,更正上去了。", + "title": "Google Coupons" + }, + { + "id": "701", + "body": "在 AOL 放出相當寶貴的「搜尋記錄」後兩天,就找出了某位使用者 (請參考 ijliao 精闢的 搜尋引擎的七種使用者 這篇文章),除了對於 AOL 抗議之外,許多團體也都在研究要怎麼樣防止下次發生這種行為。\r\n\r\n而雖然 Google 說他們絕對不會幹這種事,但 \"Never say never\",搜尋時透露的資料愈少愈好,對自己比較有保障。\r\n\r\n在 Google BlogoscopedAnonymous Searching 看到這篇文章,提供你不被 Search Engine 記錄下來的方法:How to Stop Google from recording your Search habits ?。這篇文章看看就好,我覺得有些有點偏激 XD\r\n\r\n而 Jeremy Zawodny (Yahoo! US 員工,曾經來臺灣在 ICOS 2005 上講 MySQL) 在他的 blog 上對於這件事情寫了一篇文章:The AOL Search Data and Liquids on Airlines,他引用了 Nelson MinarAOL's search disaster 這篇文章:\r\n
I'm glad the leak happened; now everyone can see just how sensitive search data is. And valuable, too. (大意:現在社會大眾終於知道搜尋引擎的紀錄有多敏感了)
\r\n這六十五萬筆資料真的相當珍貴 :p\r\n\r\nUpdateEFF 行動了,向 Federal Trade Commission 檢舉 AOL。", + "title": "匿名搜尋" + }, + { + "id": "702", + "body": "Google Blogoscoped 這篇 Search Engine Validation Charts 提到了目前幾個搜尋引擎對於網頁標準的程度:(HTML 的部分)\r\n\r\nMSN Search Team,幹的好!XD", + "title": "各家搜尋引擎對於 HTML 標準的程度" + }, + { + "id": "703", + "body": "在 Slashdot 上看到 IBM 提出想法,並且已經得到專利局的同意,準備以小規模測試在專利申請的過程中,透過類似 Wiki 的系統對專利投票以及審查,以解決專利浮濫的問題:Patent Reviews Via Wiki。", + "title": "利用 Wiki 檢視專利" + }, + { + "id": "704", + "body": "在 Bruce Schneier 這邊看到 1963 FBI Fingerprint Book on Project Gutenberg,提供了一個 link:1963 年 FBI 出版的 The Science of Fingerprints: Classification and Uses,現在提供電子檔下載了 :p", + "title": "FBI 的「指紋教戰手則」" + }, + { + "id": "705", + "body": "新版 WordPress (subversion 版) 有 Auto-save Draft 的功能 (終於實做出來了),像是這樣:\r\n\r\n\"WordPress", + "title": "新版 WordPress 的 Auto-save 功能" + }, + { + "id": "706", + "body": "前陣子 PHPsscanf() 被爆破有安全漏洞,在 5.1.5 以及 4.4.4 修正了:PHP 5.1.5 Release AnnouncementPHP 4.4.4 Release Announcement。", + "title": "PHP 安全更新" + }, + { + "id": "707", + "body": "在 AOL 惡搞後 (參考 ijliao 寫的 搜尋引擎的七種使用者),有人統計了被搜尋最多的詞:Google is No. 1 search on AOL,這實在是太爆笑了 XD", + "title": "被搜尋最多次的詞" + }, + { + "id": "709", + "body": "在 Slashdot 上看到 Google Writely 公開測試了:Writely.com Beta - Google's Answer to Word。目前網站上面還是打上 Beta 字樣表示為 Web 2.0 服務 :p 實際上服務其實也不太穩定,偶而玩到會出現錯誤畫面: \r\n\r\n\"Writely\r\n\r\n在編輯中文的處理上看起來沒什麼問題:\r\n\r\n\"Google\r\n\r\n可存成 HTML (zipped)、RTF、Word (Microsoft Word 格式)、OpenOffice (OpenDocument 格式)、PDF:\r\n\r\n\"\"\r\n\r\n其中我特別去看 PDF 中文輸出的結果,標點符號的位置效果還是不太好:\r\n\r\n\"Google\r\n\r\n不過,檔案直接放在 server 上以及共同寫作 (還沒沒測試過,晚點找人來測) 是蠻不錯的優點,晚點再看看有沒有特殊的功能。", + "title": "Google Writely" + }, + { + "id": "710", + "body": "Google Blogoscoped 提到有不少網站 (蟑螂 + 投機客 :p) 對於 Google 認為侵害他們的商標提出反擊,他們表示這邊的 \"google\" 是 \"Go Ogle\",尤其是 googlematching.com 就更符合這個意思了 XD:Google vs Go Ogle。", + "title": "Google 商標" + }, + { + "id": "711", + "body": "在 Blake 學長的 Blog 上看到 Xuite Blog 的 Pingback 或是 Trackback,在這篇裡:歷史上處處可見人們對科技發展的低估。\r\n\r\n\"\"\r\n\r\n帶了一堆 Javascript 過來... (看起來被 WordPresshtmlentities() 幹掉了)", + "title": "Xuite Blog 的 Pingback 或是 Trackback" + }, + { + "id": "712", + "body": "在 IE Blog 上 (Microsoft IE 7 開發用的 Blog) 看到目前的 IE7 修掉的 CSS bug 以及增加的部分:Details on our CSS changes for IE7。", + "title": "IE7 的 CSS" + }, + { + "id": "713", + "body": "不知道是 Firefox 2.0b2 的問題,還是圖書館系統不穩... 找書常常找一找就出現空白畫面,不然就出現 500 或者其他各種奇怪的 error msg...\r\n\r\n8/8 下午四點一次,8/17 下午六點再一次,8/23 晚上十點多又一次... 我記得我 8/17 那次還打電話去圖書館幹剿,他居然說「我重開機看看好了」... XD 喂喂,是這樣搞的嗎...", + "title": "圖書館的系統" + }, + { + "id": "714", + "body": "在 Slashdot 上看到 IBM 要買下 ISS (Internet Security Systems) 的新聞:IBM to Buy ISS for $1.3 Billion,在 ISS 網站上也公告出來了:IBM to Acquire Internet Security Systems。", + "title": "IBM 買下 ISS" + }, + { + "id": "715", + "body": "在 Digg 看到有人丟 Screenshot 出來:(Firefox using up 1.5 gigs of RAM (screenshot))\r\n\r\n\"\"", + "title": "Firefox 的 Memory Leak" + }, + { + "id": "716", + "body": "ICANN 的新合約決定對 .org & .biz & .info 行搶:ICANN OKs Tiered Pricing for .org/.biz/.info,原報導在 ICANN Confirms: Tiered Pricing Not Forbidden in New .BIZ, .INFO and .ORG Contracts 這篇。\r\n\r\n以往的 .org .biz .info 都是單一定價,不論是 google.org 還是 digg.org,但新的合約將有所改變。這件事情讓我想到 Net Neutrality...\r\n\r\nAnyway,這讓我們知道無本生意最好賺,投資報酬率無限大... :p", + "title": "ICANN 行搶" + }, + { + "id": "717", + "body": "在 emphemeris 看到 麥當勞的祭品 這篇文章,看到圖的時候笑了出來 :p (插香的「杯子」上還寫了「拜拜用」XD)\r\n\r\n每一家麥當勞都會拜嗎?:p 不知道潤七月十五的時候會不會有?:p", + "title": "麥當勞" + }, + { + "id": "718", + "body": "在 Slashdot 上看到 Spammer 除了向「業主」收費以外,還有其他的獲利方式:股票。(Buy Low, Spam High)\r\n\r\n傳統的方式是向「業主」收取廣告費用,然後推銷產品,但愈來愈多國家立法限制 E-mail Spam 而使得這種方法不容易進行 (臺灣不知道什麼時候才要立法 !@#$%^),因為可以透過「業主」的轉帳記錄而抓到 Spammer。\r\n\r\n這篇新聞所提到的方法是 Spammer 主動出擊進行金融犯罪:先挑好某隻股票,透過 E-mail Spam 鼓動散戶去購買,然後再脫手。依照新聞報導,這種獲利大約在 4.9% ~ 6%。\r\n\r\n如果透過 Botnet 發送 Spam,在技術上非常不容易找到幕後黑手,而且可以在短時間內取得可觀的獲利,看起來非常有可能成為未來的主流?", + "title": "Spammer 的獲利" + }, + { + "id": "719", + "body": "在 Digg 看到 CNN 將在今年的 9/11 早上 8:30 到午夜播出五年前同一時間 CNN 所播出的完整內容:CNN.com to Replay 9/11 Attacks Coverage。", + "title": "CNN 將在 9/11 重播五年前的完整報導" + }, + { + "id": "720", + "body": "Windows Media DRM 被破解:FairUse4WM strips Windows Media DRM!。\r\n\r\n有很多人認為 DRM 是用於「保障著作人的權利」(Digital \"Rights\" Management),但實際上 DRM 一定可以被破解,無法保障著作人的權利。DRM 真正的用途如同 自由軟體基金會 所說的,是「限制使用人的權利」(Digital \"Restrictions\" Management),並藉由限制使用人的權利而宣稱可以保障著作人的權利。像是 iTunes Music Store 的 DRM 是限制只能在 Apple 的機器或軟體上才能播放。", + "title": "Windows Media DRM 被破解" + }, + { + "id": "721", + "body": "K2 搬家了,這次搬到了 Google Code 上:kaytwo。\r\n\r\n於是 SVN Repository 也搬到 Google Code 上了,請各位 nightly build 愛用者換過去:http://kaytwo.googlecode.com/svn/trunk/。", + "title": "K2 Theme" + }, + { + "id": "722", + "body": "Crypto 2006 上對 SHA-1 64 rounds 版本 (實際 SHA-1 運作的是 80 rounds) 提出更強的攻擊,這次提出的攻擊可以自己選定一些 Plaintext 的部分 (依照文章內的說明,大約 25% 的部分),然後再去找 collision,使得攻擊變得更「實用」。", + "title": "SHA-1 Collision" + }, + { + "id": "723", + "body": "Firefox 2 Beta Final 的消息:Firefox 2/Gecko 1.8.1 approvals。\r\n\r\nFirefox 2 讓我最不習慣的就是 WordPress 的 Quicktags 按鍵改變,本來用 Alt-[key],現在要改用 Shift-Alt-[key],不知道有沒有 about:config 可以改的方法?:p", + "title": "Firefox 2 Beta Final" + }, + { + "id": "724", + "body": "WikiCharts 是統計 Wikipedia 流量的工具,可以知道到底有哪些頁面比較熱門。很明顯 Sex 果然還是 Internet 的大宗啊,不管在哪裡都很熱門 :p", + "title": "WikiCharts" + }, + { + "id": "725", + "body": "剛剛在 Boing Boing 看到有人提出來為什麼 MySpaceAlexa 的排名會這麼高的原因了,因為 Alexa 是以 Pageview 計算,而 MySpace 的網站設計得太糟糕了,隨便幾個動作就可以造成極大的 Pageview:Evhead: pageviews are obsolete。\r\n\r\nPS:國內某個站好像也是這樣 :p", + "title": "MySpace 在 Alexa 的排名" + }, + { + "id": "726", + "body": "F-Secure 光明正大的在他們的 Blog 上婊 Tripod (一家提供免費網頁 Hosting 的服務),說他們都沒在管 phishing (網路釣魚),有好幾個釣魚網站居然可以放到連 Google 都找的到了 (代表放了很久,連 Google bot 都連上去了):Are you a phisher? Looking for free hosting?。", + "title": "釣魚網站" + }, + { + "id": "727", + "body": "Yahoo! 拍賣 9/1 中午 12:00 正式開始收費,依照 http://pchome.dyndns.dk/ 以上架商品數量的數據畫出來的資料,過了十二點後就沒增加了... XD\r\n\r\n\"\"", + "title": "Yahoo! 拍賣收費" + }, + { + "id": "728", + "body": "我 Notebook 的 Firefox 2.0b2 好像爛掉了,跟 Javascript 有關的幾個部分不太正常,現在沒辦法登入 GMail,也沒辦法在 ijliao 大長輩 的 blog 上留言...\r\n\r\n來砍掉重灌看看好了...", + "title": "Firefox" + }, + { + "id": "729", + "body": "在 Blogoscoped 上看到 Google Transit 給你奇怪的導引路線,叫你游泳過河 XD:Weird Google Directions。", + "title": "Google Transit" + }, + { + "id": "730", + "body": "也是在 Blogoscoped 上看到的,利用 Javascript 與 CSS 的配合,遠端的 server 可以判斷某些 URL (任意站台) 是否被使用者訪問過:Find Visited URLs With JavaScript。\r\n\r\n我記得前陣子在 Digg 被提出來,不過好像沒人理?:p\r\n\r\nUpdate:我在逛 Yahoo! 拍賣 的時候發現所有的 link 後面都加上了 .r=[unixtime],不知道是不是這個原因?(我不確定是不是在這個問題被抓出來後才加上的)", + "title": "Javascript 的隱私問題" + }, + { + "id": "731", + "body": "在 南宮博士 那看到的漫畫:[Geeky] 別問我這是什麼意思。我這邊就不把圖 copy 過來了,有興趣的可以直接連過去看,看的懂的人應該會覺得有趣 :p\r\n\r\nUpdate:居然在 Sudo sandwich (37signals) 看到這篇... XD", + "title": "三明治?" + }, + { + "id": "732", + "body": "eMule 出 0.47b 版了,這個版本終於對於 ISP 的惡搞 (限流) 提出反擊:Protocol Obfuscation。", + "title": "eMule 0.47b" + }, + { + "id": "733", + "body": "

現在如果不加上 <p>blah</p> 的話,文章就不會有段落了... :/ (所以前幾天 RSS 整個更新...)

", + "title": "WordPress 改變文章的處理方式" + }, + { + "id": "736", + "body": "第四十四個 (暫訂第四十四個,因為第三十九個之後的還不確定是不是還有沒發現的) Mersenne Prime (梅森質數) 找到了:232582657-1。\r\n\r\nUpdate:Mn 表示 2n-1,所以不應該寫成 M44。", + "title": "第四十四個 Mersenne Prime" + }, + { + "id": "737", + "body": "Freenode 的創辦人 Rob Levin 因為騎腳踏車時被一台車撞到而傷到頭,享年五十:Freenode founder Rob Levin has died。", + "title": "Freenode 創辦人 Rob Levin 過世" + }, + { + "id": "738", + "body": "在爆了幾次後,果然在 Slashdot 上看到 Virgin Atlantic 航空禁止 AppleDell 的 Notebook 在飛機上使用電池:Virgin Atlantic Bans Dell, Apple Laptops。", + "title": "Notebook 的電池" + }, + { + "id": "739", + "body": "在 Slashdot 上讀到有個閒閒沒事做的傢伙收到一封 Myspace 的釣魚信件,然後他發現可以抓到 phishing data,於是他就抓下來分析這些帳號密碼,以及 e-mail address:Analyzing 20,000 MySpace Passwords,原文在 Analyzing 20,000 MySpace Passwords 這篇。\r\n\r\n註冊的 E-mail 部分,Yahoo!HotmailAOL 的郵件信箱佔大宗。\r\n\r\n密碼的部分,平均長度在七個字母左右,而 \"password\" 這個密碼果然在前幾名 XD", + "title": "分析 Myspace 的密碼" + }, + { + "id": "740", + "body": "鳥窩上看到 Custom 貼 PChome 線上購物 開始賣遊艇 (註:Custom 是 PChome 的員工),一台要兩億台票,就算三十六期也要六百多萬... XD\r\n\r\n請參考:ASTONDOA遊艇。", + "title": "網路購物買遊艇" + }, + { + "id": "741", + "body": "前幾天團長提到想買台 Mac Mini 自己玩玩,我就突然想到 Mac Mini 的體積剛好是解決機櫃空間不足的解法之一,就提出來跟團長講,結果今天就弄了一台來測,下午送到,一個晚上就把機器弄好了... (雖然遇到蠻多問題的,不過拜 Google 強大的搜尋能力,都找到解決的方法了)\r\n\r\n可能的話,以後給一般使用者使用的 bsd* 與 linux* 工作站也許都會換成 Mac Mini 以節省空間 :p", + "title": "Mac Mini 上安裝 FreeBSD" + }, + { + "id": "742", + "body": "在鳥窩看到 ylchang 在 Talk 板上問 Windows 有沒有像 FreeBSD ipfw2 這種一條一條列的防火牆,結果 ax 就丟出 Windows IPFW 這套軟體:WIPFW。\r\n\r\n看起來頗有趣,裝起來玩看看好了...", + "title": "Windows 版 IPFW" + }, + { + "id": "743", + "body": "很久前拍的交大科二 :p\r\n\r\n\"\"", + "title": "來測試 Zooomer..." + }, + { + "id": "744", + "body": "測試 Zooomr 的時候看到 Template Page... XD\r\n\r\n\"\"", + "title": "測試 Zooomr 的時候..." + }, + { + "id": "745", + "body": "拿 Mac MiniFreeBSD... :p (下面這張好像是當掉的畫面... XD)\r\n\r\n\"FreeBSD\r\n\r\n幾個對於 Mac Mini 不熟的人,應該先知道的東西:\r\n\r\n再來就是燒光碟了,FreeBSD 6.1 不能在 Mac Mini 上開起來,但 6.1-STABLE 是可以的,所以請抓 snapshots 版本:freebsd.csie.nctu.edu.tw/pub/snapshots/200609/。\r\n\r\n安裝時請不要選擇無 ACPI 的開機,會開不起來。(一般人沒事不會去關掉 ACPI 吧?我就會... 然後發現開不起來 XD)\r\n\r\n如果裝好後只有 ath 會起來 (無線網路),內建的 Gigabit Ethernet 抓不到,請參考這兩篇文章下載 Marvell 的 driver source 並安裝:\r\n\r\n編完後把 if_myk.ko 複製到 /usr/local/modules,然後在 /boot/loader.conf 裡面放:\r\n
if_myk_load=\"YES\"\r\nmodule_path=\"/boot/kernel;/boot/modules;/usr/local/modules\"
\r\n這樣可以避免重新編 kernel 時把 if_myk.ko 弄不見 :p\r\n\r\nUpdate:警告!可以放在 /usr/local/modules 是因為我們沒有切 /usr 或 /usr/local 出來,開機的時候在只有 mount / 的情況下是讀的到的... XD\r\n\r\n最後,kernel 裡的 options SMP 要記得開,不然 reboot 會卡住。", + "title": "Intel 版 Mac Mini 的安裝" + }, + { + "id": "746", + "body": "lighttpd 1.4.12 出版了,經過八個 pre-release 的測試,這次主要都在修正 SSL 的問題。剛剛送了 pr 更新 FreeBSD Ports,如果 maintainer 沒意見的話,不久後就會更新了:[PATCH] www/lighttpd: update to 1.4.12。\r\n\r\n補記,porttools 對於這種升級的事情幫助相當大... :p 如果軟體使用會尊重 PREFIX 環境變數的 configure (像是 GNU autotools 生出來的 configure),就不需要自己用 find 更新 pkg-plist...\r\n\r\n關於 porttools 的用法,請參考 義氣幫 WikiPortTools 這篇。", + "title": "lighttpd 1.4.12" + }, + { + "id": "747", + "body": "在 Slashdot 上看到對於英文的 Bittorrent 站台比較,如果要找一些稀奇古怪的東西也許可以用看看:Ten Most Used BitTorrent Sites Compared。\r\n\r\n(不過自從 eMule 也開始抵抗 Layer 7 Filter 後我覺得用 eMule 找應該會比較方便 :p)", + "title": "Bittorrent 站台" + }, + { + "id": "748", + "body": "在 Bruce Schneier 的 Blog 上看到的,算一算只要兩分鐘就可以拿到比 Administrator 還高的帳號 (SYSTEM) 權限... XD:Getting System Privileges on Windows XP。\r\n\r\n原文在 Windows XP Privilege Escalation Exploit 這裡,還附上「教學影片」:VIEW THIS EXPLOIT IN ACTION (VIDEO DEMONSTRATION)。", + "title": "我愛 Windows..." + }, + { + "id": "749", + "body": "WordPress.com 也提供 VIP Service 了,跟一般的 VIP Hosting 不太一樣,WordPress.com 走的是最高階層的服務項目:\r\n\r\n目前看起來是「合理使用不限流量」(像是被各新聞網站 Slashdotted 都算是合理使用 XD),不過每個月要 USD$250 以及 USD$500 的設定費用... XD", + "title": "WordPress.com 的 VIP 服務" + }, + { + "id": "750", + "body": "最近美國很流行玩銀行的 ATM 提款機 XD\r\n\r\n先是透過 Google 找某款 ATM 機器 (Mini-Bank 1500) 的預設密碼,如果裝機的時候沒改,就可以用它來惡搞 XD (參考 SlashdotGoogling for ATM Master Passwords 這篇)\r\n\r\n再來是有人也爆料 Triton ATM 提款機的預設密碼也可以透過 Google 找到:Another ATM Maker Pwned by Googling。\r\n\r\n好棒啊... XD", + "title": "最近流行黑... 銀行的 ATM 提款機" + }, + { + "id": "751", + "body": "AOL 終於因為上次放的搜尋記錄被告了 (如果你不知道 AOL 幹了什麼蠢事的話,請參考 ijliao 大長輩搜尋引擎的七種使用者 這篇文章):AOL Subscribers Sue Over Release Of Search Data。", + "title": "AOL 因為放搜尋紀錄被告了" + }, + { + "id": "752", + "body": "在 lighttpdwiki 上看到列表,才發現原來已經一堆站台都用 lighttpd 了:Powered By lighttpd。包括了 isohunt、pingomatic、reddit、sourceforge、youtube、torrentreactor、alistapart、imageshack、torrentz 這些巨型站台...", + "title": "用 lighttpd 的站台" + }, + { + "id": "753", + "body": "jwhuang防止圖片盜連 丟了個問題出來:\r\n
不知道在 lighttpd 上面是不是也可以這樣弄。
\r\n當然可以,用 Googlelighttpd referer 可以找到某個 bug report 抱怨沒辦法設兩層,不過一層是 ok 的 (後來找出 workaround 了,在下面的 Change History 裡有寫):nesting $HTTP[\"referer\"] inside of $HTTP[\"url\"] does not work\r\n
$HTTP[\"referer\"] !~ \"^($|http://www\\.fussball-forum\\.de)\" {\r\n  $HTTP[\"url\"] =~ \"^/images/\" {\r\n     url.access-deny = ( \".jpg\", \".jpeg\", \".png\", \".gif\" )\r\n  }\r\n}
", + "title": "在 lighttpd 上擋圖片盜連" + }, + { + "id": "754", + "body": "參考:Multiple problems in crypto(3),從 4.11 後的版本都有提供 security patch。(雖然早就說不維護 4.11 了,但這個包袱實在太重,還有不少機器跑 4.11,所以大家都心知肚明... XD)\r\n\r\n這次不更新的話會中大獎 (remote buffer overflow),所以凌晨看到後超熱血一次開了 30 個窗連到一堆機器上跑 make world,不讓學弟/妹慢慢做了... 結果做完後發現原 patch 是有問題的 (喂喂),所以又出了第二個 patch,看了一下說明,看起來是有 patch 掉,但沒 patch 乾淨,可能還是會造成 DoS 攻擊...\r\n\r\n那我就懶了,學弟妹上吧... XD", + "title": "OpenSSL 的安全性更新" + }, + { + "id": "755", + "body": "Zooomr 事實上是有放 API 出來讓大家用的 (jUploadr 就是用 API 處理 Zooomr 的部分),不過網站上好像找不到,後來才在官方的發展 Blog 上翻到:Attention Developers。\r\n\r\n基本上 Zooomr 的 API 是抄 Flickr 的,這樣可以讓本來使用 Flickr API 的應用程式很容易搬移過來。", + "title": "Zooomr 的 API" + }, + { + "id": "756", + "body": "先前 VLSI 課程助教 (我只認識 YoungJ... :Q) 跑來要在系計中的電腦教室灌 Windows 上的 X Server,說要安裝 Xming 這套軟體,當初以為是要付費的軟體,結果今天他跑下來要我開 Administrator 的權限讓他們安裝,偷瞄了一下才發現其實不是... XD\r\n\r\n系計中之前都是安裝 Cygwin,但 Cygwin 實在是太肥了,於是當時一直在考慮買 XWin32 (一直跟 stephon 以及 團長 討論),結果莫名其妙發現只要 10MB 的 Xming...\r\n\r\n找了一下文件,發現其實有不少人都已經玩過了:Xming - Windows 上的 X Server哇 哈哈~ 居然發現這種好康物! Xming。\r\n\r\n測了一下 xcalc 是正常的,這樣實在太棒了,以後打算把 Firefox 跑在上面,跟 XWin32 說再見吧 :p (以後系計中的 PC 在安裝的時候就可以把 Xming 列入列表了 :p)", + "title": "Xming" + }, + { + "id": "757", + "body": "昨天跟 Manic 在清夜吃飯後跑去五十嵐買飲料,發現清夜的五十嵐剛好開在建新路 (?) 五十號,我想這應該是故意的... 查了一下五十嵐沒有官方站台,我想知道是不是很多家五十嵐都開在五十號上?:p\r\n\r\nUpdate:找不到他的 logo 圖片,可以看看 五十嵐生意超好的! 這篇,有幾張圖 :p\r\n\r\nUpdate:在下面留言所說的 Ptt 精華區應該是指 五十嵐 這個 entry。", + "title": "五十嵐" + }, + { + "id": "758", + "body": "Slashdot 上看到 Sony 終於打算在 DellAppleIBM/LenovoToshibaFujitsu 的電池爆過後,正式回收所有筆記電腦鋰電池:Sony Announces Global Battery Recall。\r\n\r\n包括了更早之前的 Sony Rootkit 事件 以及 Sony 推廣 PSP 所使用的惡行... 這家公司惡名昭彰啊... :p", + "title": "Sony 終於正式回收所有電池" + }, + { + "id": "759", + "body": "Google 希望改善電源供應器,將目前提供多種電源的情況改成單一 12V 的電源,以提升使用效率,另外也可以減少 Google 裡四十五萬台 server 的電源消耗量 XD:Google Calls For Power Supply Design Changes。", + "title": "Google 希望改善電源供應器" + }, + { + "id": "760", + "body": "在二月的時候在 鍵盤 這篇提到 Optimus Mini 的預購,剛剛終於在 Slashdot 上看到 Optimus Mini 三鍵鍵盤 的 review 了:Optimus Mini Three OLED keyboard reviewed,原文在這:Optimus Mini Three: OLED keyboard reviewed。\r\n\r\n(引用二月那篇的圖,讓沒看過 & 忘記的人看一下這個三鍵鍵盤有多華麗... XD)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n直接引用第三頁的說明,這支鍵盤其實裡面就有個小型的處理器以及記憶體:\r\n
Apart from the obligatory resistors and capacitors, we discover three big chips. In the centre of the board is a PIC18F8722 programmable microchip. This chip operates at a maximum clock rate of 40MHz and offers the programmer four serial ports, 128KB programmable memory and 3.8KB working memory.
\r\n另外這支鍵盤還提供 library 讓你自己開發程式,於是最後一頁就直接惡搞,利用他的 LED 來顯示網頁... XD", + "title": "Optimus 的三鍵鍵盤" + }, + { + "id": "761", + "body": "在 Slashdot 看到轉自 Engadget 的報導指出 Apple iTunes 上面某些 640x480 的影片其實是從 320x240 的影片重新處理後丟上去的,所以看起來反而比 320x240 的版本還糟:Apple iTunes Upsampling Higher Resolution Videos?。\r\n\r\n接下來要看 Apple 怎麼處理這件事... 因為花錢反而當了冤大頭,依照美國人的習慣,應該是會告到翻 :o", + "title": "Apple iTunes 所提供的「高畫質」影像" + }, + { + "id": "763", + "body": "剛剛在 FreeBSD 的 CVS Log 上看到 OpenSSH 也有漏洞要修補... (!@#$%^) 不過 Security Advisory 還沒看到 Security Officer 丟出來,要再看看要怎麼處理...\r\n\r\n補記:看起來是 CVE-2006-4924CVE-2006-4925 這兩份,不過目前這兩份文建的狀態都是 Under review,以目前的敘述看起來是 DoS attack 的...\r\n\r\nUpdate:SA 放出來了:Multiple vulnerabilities in OpenSSH,一個是 CVE-2006-4924,另外一個是 CVE-2006-5051。\r\n\r\n後者是在打開 GSSAPI Authentication 時的漏洞,預設是關掉的,所以應該還好...", + "title": "OpenSSH 的修補" + }, + { + "id": "764", + "body": "用 Google 把這些人現在的情況找出來,其實看看還蠻有趣的 :p\r\n\r\n", + "title": "十年前的人物" + }, + { + "id": "765", + "body": "每天都要 Moderate 大約十篇的 Comment,決定把 Spam Karma 的敏感等級開高一點避免每天都要審一堆其實是 Spam 的 Comment... XD\r\n\r\n(如果正常寫 Comment 卻被當成 Spam,可以寫信跟我抱怨... 我會考慮再改回來 XD)", + "title": "把 Spam Karma 開強一點..." + }, + { + "id": "767", + "body": "前幾天帶學弟 Manic 去新竹眾利書局晃,結果學弟在 18 禁漫畫區看到吉永史 (Fumi_Yoshinagaよしながふみ) 的作品就滔滔不絕講述這個作者的事蹟:這個作者的第一部「從良」作品就得獎並且翻拍成日劇,結果作者按奈不住,後面又接著畫續篇搞 BL... @_@\r\n\r\n我聽到的時候已經自動 filter 掉了 (感謝 slzzp 訓練有素),不過當聽到這部作品是 西洋骨董洋果子店 (日劇的部分可以參考 ijliao 大長輩 所寫的 西洋骨董洋果子店 這篇) 時就對於這部作品感到興趣,於是在學弟買下 5 ~ 7 大搞 BL 的部分後,我就慫恿他把前面四本的正常版也買下來... XD\r\n\r\n不過我看了第一本以後我就覺得被騙了... Q_Q 作者根本在挑戰尺度極限... XD\r\n\r\n據 Blake 學長 看過前面兩本後 (後面他說他看不下去了 XD),心得是:「日劇完全沒有拍出漫畫的 (BL) 精神」以及「作者在前面四本一定是按奈不住才會去畫後面三本」XD\r\n\r\n強烈建議看過日劇的人不要回頭去看漫畫,這會破壞對主角的美好印象 XD", + "title": "西洋骨董洋果子店" + }, + { + "id": "769", + "body": "Update:完整的內容請參考 無名 Blog 匯出成 MT 格式 這篇。\r\n\r\n十三分鐘。\r\n
15:30 <@gslin> 乾脆把 dark.tw 弄成 \"從無名的黑暗世界拯救出來的人們\"\r\n15:30 <@i> (Y)\r\n15:37 <@y> 這真的很像在考驗使用者可以忍受到什麼程度... o_o\r\n15:37 <@y> 壓力測試...\r\n15:39 <@i> btw, 有名大站這時候就該要跳出來解救蒼生了啊...\r\n15:39 <@i> 還是說, 其實 DK 大現在正在刻程式 ?\r\n15:42 <@gslin> 弄完了\r\n15:42 <@gslin> http://xxxxxxxxxx.dark.tw/\r\n15:43 <@i> 復興基地, 美麗的寶島 ? XD
\r\n晚點應該來做一些進階功能的...", + "title": "從無名搬家的速度" + }, + { + "id": "770", + "body": "Update:完整的內容請參考 無名 Blog 匯出成 MT 格式 這篇。\r\n\r\n轉成 MT 格式已經寫完了,這次包括了「本文、Comments、Trackback」都備份出來。\r\n\r\n但因為我打算連 Blog 上使用無名的圖與影片都一起轉出來,所以要問個技術問題:無名的圖與影片放在什麼樣的目錄?請給我 VIP 與非 VIP 的範例,都要處理。", + "title": "Almost Finished... - 無名的 Blog 轉成 MT 格式" + }, + { + "id": "771", + "body": "給不想看下面說明的人:備份服務的網址是 http://backup.hasname.com/blog/wretch/。\r\n\r\n注意:這項服務還有一些小問題,有可能隨時都在改 code。\r\n\r\n2006/10/05 20:54 更新:現在的版本會多開幾條連線平行化處理,下載的速度應該會快很多。\r\n\r\n2006/10/05 17:30 更新:現在下載的檔名會是 backup-${username}.txt 了,這樣應該比較方便。\r\n\r\n雖然在去年六月的時候為了幫 ashley 大姊姊 (a.k.a. 電視兒童) 從 無名 跳出來而用 Perl 寫了一個小程式,將 無名 Blog 上的文章匯出成 RSS 2.0 格式,再匯入 WordPress 裡。後來這個小程式就再加強一下,寫了一個網頁並公開出來 (參考 無名小站的 Blog 與 Album 備份及還原服務 這篇文章),並且希望 無名 提供更完整的匯出及匯入服務。\r\n\r\n後來 養樂多 (Yam Roodo) 的 Blog 服務 提供 MT 格式 的匯出與匯入,而國外 WordPress.com 也支援 MT 格式 的匯入。選擇 MT 格式 的確是相當不錯的想法,因為可以同時備份文章內容與 Comments (留言) 與 Trackbacks (引用)。\r\n\r\n結果一年過去了,無名 Blog 仍然只提供匯出功能,而且匯出的內容不是公開格式,沒有現有軟體可以讀。另外,即使匯出了也沒有用,因為 無名 也沒有提供匯入的功能:換句話說,除非你會寫程式,不然你透過 無名 備份程式備份出來的格式並沒有用。\r\n\r\n在 無名 打著 Web 2.0 口號卻沒有 Web 2.0 很重要的「以使用者為中心」的精神只顧著賺錢的情況下,我就有了寫 無名 Blog 匯出成 MT 格式 的打算,讓使用者可以利用這個程式將自己的 Blog 轉到其他平台。但我一直沒有很想寫的心情。一方面是前幾個月手受傷,沒有力氣;另一方面是 無名 的成長其實有助於台灣網路界的發展 (是的,就是指 無名 一直用很笨的方法想壓迫 HiNet,雖然不會成功,但總是第一波);但其實最主要讓我不想寫的原因是,寫了以後會淪為商業團體 (Pixnet) 以及搗亂團體 (XDite) 的打手,所以一直遲遲沒有寫。\r\n\r\n直到前幾天 無名 硬上 mypage,在所有使用者的頁面上都加上廣告,違反 VIP 合約規定,有認識的熟人想要從 無名 搬出來 (人情債... :p),我才決定動工。(我一直勸他上寄存證信函準備打民事訴訟,不過他好像興趣缺缺)\r\n\r\n所以,回到原來的主題,這個匯出程式應該是目前網路上最完整的版本,包括了:\r\n\r\n同時我測試過匯出的內容可以匯入到 WordPress.com 以及自己所架設的 WordPress,所以應該是沒什麼問題。\r\n\r\n為了希望能夠更快推廣這個服務,我規定了一個「有漏洞的」使用者條款:\r\n
請注意:使用本項服務 (將 無名小站 Blog 輸出成 MT 備份資料) 成功轉換後,您必須寫一篇本服務的使用指南。
\r\n所謂的有漏洞是指:你寫了可以不用公開,你可以丟在個人板上,也可以丟在其他任何地方。如果你願意公開,我會很感謝你 :p 但你不公開我也不會因此咬你 :p\r\n\r\n希望大家使用的愉快,有任何問題請寄信給我,我的 mail 在最上面的 About & Contact 連結裡有 :p", + "title": "無名 Blog 匯出成 MT 格式" + }, + { + "id": "772", + "body": "整理一下,為了寫這次的東西多學了多少 Perl Module 的用法:\r\n", + "title": "寫個 Perl 學到多少東西" + }, + { + "id": "773", + "body": "早上發現我們的 lighttpd 會不斷的掛掉,加了 ktrace 準備看 crash 的時候是那個 bug 產生的時候發現又不會掛了...\r\n\r\nAnyway,在 lighttpd 官方的 Blog 上看到 1.4.13-r1370 修正了一個嚴重的 crash bug:Segmentation Fault,其實只是把某個變數改掉而已:Changeset 1352。不過這次放的是 PRERELEASE,應該要用力推讓他們放 RELEASE...\r\n\r\n不過 Linux 上有完整的 Valgrind 可以用真不錯... +_+ 我記得很久前在 FreeBSD 上測試的時候還是不會動的,所以只好靠 ktrace 惡搞...\r\n\r\nUpdate:我決定送一個 patch 將 ports 裡的 lighttpd 1.4.12 給搞定:ports/104061: [PATCH] www/lighttpd: Crash patch (official)。", + "title": "lighttpd 1.4.13-r1370" + }, + { + "id": "774", + "body": "應該說有人接手了 FreeDB (Slashdot 的報導:Freedb.org Returns to Life),不過有人馬上問「為什麼不用 freedb2.org?」,然後 freedb2 的維護者就跳出來了... :p\r\n\r\n關於 FreeDBfreedb2 的恩恩怨怨,請參考 WikipediaFreeDB 這個條目的 \"Motivation\"。", + "title": "FreeDB 復出" + }, + { + "id": "775", + "body": "當有人用 GPU 跑 FFT 計算時 (請參考 用 GPU 跑 FFT 這篇),很多大量計算的專案應該就在動 GPU 的腦筋了... :p\r\n\r\n結果剛剛在 Slashdot 上看到 Folding@home 支援使用 ATI 顯示卡上的 GPU 運算的版本:Folding@Home Releases GPU Client,依照 Slashdot 上引述的說法,使用 GPU 運算的版本比起使用 CPU 運算的版本快了 20 ~ 40 倍。", + "title": "利用 GPU 跑 Folding@home" + }, + { + "id": "776", + "body": "要寫 code 的時候忘了關鍵字,隨手找了一下 PHP 上傳的資料,發現大家都是用 copy() + unlink() 的方法,沒有人是用 PHP 網站提供的函數直接處理:\r\n\r\n在 PHP 網站的說明裡的 Chapter 38. Handling file uploads 提到你可以直接用 move_uploaded_file() 處理,PHP 會檢查這個檔案是不是使用者所上傳的檔案。同時,這個指令在某些情況下也會比較有效率。(在 /tmp 與 destdir 同個 filesystem 的情況下)", + "title": "PHP 裡檔案的上傳" + }, + { + "id": "778", + "body": "在 mozillaZine 看到 Mozilla Firefox 2.0 RC2 出版了,跟 RC1 相比主要是修正穩定性的 bug:Mozilla Firefox 2 Release Candidate 2 Available。\r\n\r\n除了直接安裝外,你還可以選擇安裝可攜版 (Portable) 感覺看看如何,因為據說可攜版並不會影響到使用者原有的 Firefox 設定:Firefox Portable 2.0 Release Candidate 2。\r\n\r\n我自己是直接使用 2.0 RC2 了,包括桌上的電腦與筆記電腦。記憶體使用的情況比起 1.5 好很多 :p 另外 Session Saver 與 Undo close tab 這兩個 Addons (以前叫 Extensions) 的功能也都內建了... :)", + "title": "Mozilla Firefox 2.0 RC2" + }, + { + "id": "779", + "body": "剛剛在 ijliao 的 del.icio.us 看到 Jeremy ZawodnyAmazon S3 備份服務的文章 (看了一下那篇文章的日期,應該是還沒在 Bloglines 上讀到而已),仔細看了一下價錢,相當不錯啊 :~\r\n\r\n換算一下,儲存的量才 NTD$4.5/GB-Month,流量也才 NTD$6.5/GB,在沒有最低使用金額,可以買個來玩看看...", + "title": "Amazon S3" + }, + { + "id": "780", + "body": "從 無名 Blog 搬家後產生的破圖問題有幾種解法,但我都不太喜歡:\r\n\r\n我比較偏好 Flickr 那樣利用 Cryptography,不使用密碼而透過一些其他的認證以及 Standard API 存取使用者的相簿... 不過沒有繁體中文的介面就很慘啊啊啊 @_@", + "title": "從無名搬家時的圖片問題..." + }, + { + "id": "781", + "body": "換 IP address,順便從 Apache 2.0 換 lighttpd,舊的 VirtualHost 還有跑,不過打算下午就整個拿掉。\r\n\r\n在換的時候本來是採用舊的方法,也就是用 mod_rewrite 指定某幾個目錄丟給 index.php:lighttpd + WordPress 2.0 對於 Permlink 的處理,不過剛剛在 Google 上發現有人給出透過 404 handler 處理的方法,這樣就跟原本 .htaccess 裡的設定等價 (非目錄、非檔案就丟給 index.php),看起來棒多了:WordPress with clean urls on Lighttpd。\r\n\r\nUpdate:提早拿掉提早測試 :p 好像有變快... (錯覺嗎?XD)", + "title": "Blog 換 Web Server" + }, + { + "id": "783", + "body": "從 Slashdot 上看到 (The BBC's Honeypot PC) BBC 利用一台 Windows XP Professional (儘可能使他安全,我猜應該是開 Firewall + 防毒軟體之類的步驟...) 裝 VMWare,然後在裡面安裝 Windows XP Home (預設安裝,如同一般家庭所使用的) 然後上 Internet 測試。使用 VMWare 的原因是可以在短時間內恢復整個系統,而且可以確保恢復的系統是乾淨的。\r\n\r\n上 Internet 後測試的結果當然是超慘啦,Port Scan、Virus Attack 樣樣都來,然後宣稱 Internet 是不安全的 (雖然是事實...):Tracking down hi-tech crime。不過現在的洞大多都不是從這種地方攻擊,大多都是 E-mail 病毒、IE 漏洞造成的... 其實跟 Firewall 已經沒什麼太大的關係了。\r\n\r\n就當作促進產業發展的置入性行銷吧 :p", + "title": "不安全的 Internet" + }, + { + "id": "784", + "body": "Evan Williams (Odeo 的 CEO,不過更有名的頭銜應該是 Blogger 的創辦人) 在他的 Blog 上諷刺 Newsweek,當其他版本都在講溫室效應所造成的危機時,U.S. 版的卻認為華盛頓性醜聞事件比較值得上封面:Priorities。\r\n\r\n\"\"", + "title": "Newsweek 的封面" + }, + { + "id": "785", + "body": "好幾個人寫信到 group.nctu.edu.tw 信箱說可以刪除站台但無法新增,檢查以後發現是 twbbs.org.tw 暫時失效造成。所以暫時先改成檢查 twbbs.org,等到 twbbs.org.tw 恢復後再改回去:新增站台的功能暫時恢復。\r\n\r\n參考:Log of /www/manage-addhost.php。", + "title": "twbbs.org.tw 暫時失效" + }, + { + "id": "786", + "body": "不斷有傳言說 Google 要買 Youtube,這個傳言現在確定是真的了。\r\n\r\nGoogle1.65 16.5 億美金買下 Youtube,成為全球最大 (而且以現在的數字來看,可以稱做壟斷) 的網路影音平台:Google to Buy YouTube for $1.65 Billion in Stock (紐約時報 Blog)。\r\n\r\n接下來就是其他類似服務的大頭要頭痛了 :p\r\n\r\nUpdateYoutube 的兩位創辦人利用 Youtube 平台講幾句話:A Message From Chad and Steve。(看起來他們真的是爽翻了 XD)", + "title": "Google 買下 Youtube" + }, + { + "id": "787", + "body": "IRC 上剛好有人問我的 Blog 怎麼會用 Simsun,加上 從電腦裡移除 Simsun 字型 這篇也被點名,所以就把 irc log 貼一下:\r\n
09:35 < y> DK 神...\r\n09:35 < y> 你的 blog 中文字看起來怪怪的, 好像簡體字?\r\n09:36 < y> css 裡面這個 font: 85% Verdana, Arial, Simsun, Sans-Serif .... 嗯?\r\n09:36 < y> Simsun 是簡體字嗎?\r\n09:47 <@gslin> 對啊\r\n09:51 <@y> ..... 為什麼要用簡體字啊?\r\n09:53 <@gslin> 為什麼要用新細明體啊?Simsun\r\n09:53 <@gslin> 明明就比較美觀\r\n09:53 < R> 美觀++\r\n09:55 <@i> simsun ... 到底是什麼字型啊 ?_?\r\n09:56 <@W> http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/simsun.html\r\n09:56 <@W> 檢體的\r\n09:58 <@i> 我的意思是, 到底是長什麼樣子 ?\r\n09:58 <@y> gslin: 呃... 嗯.... 我覺得中文字的話 Simsun 比較不好看, 英文字體的話, 新細明體比較不好看...\r\n09:58 <@i> 之前不是才很多人幹譙 google 用 simsun 很難看 ? o_O\r\n10:00 <@gslin> ylchang: sorry,我覺得比較好看\r\n10:00 <@W> xd\r\n10:02 <@y> XD
\r\n換成 Simsun 的原因就只是這樣而已,我覺得他的字型比新細明體好看。", + "title": "我的 Blog 用 Simsun 的情況" + }, + { + "id": "788", + "body": "l5n 之前提到 RefControl 這個 Addons (在 無名小站的圖片 (外連、擋 Referer、…) 這篇),不過一直都沒有測試 (其實也沒什麼在訂無名的 Blog...),剛剛突然想到,於是裝起來玩,然後就能在 Bloglines 上看到無名的圖了。\r\n\r\n首先先到 RefControl :: Mozilla Add-ons :: Add Features to Mozilla Software 這頁安裝 RefControl,裝完以後需要重開 Firefox,重開後設定對 pic.wretch.cc 送出 http://www.wretch.cc/ 即可:\r\n\r\n\"\"\r\n\r\n接下來你可以到 Bloglines 去看看是不是正常了 :p", + "title": "在 Bloglines 上看無名的圖" + }, + { + "id": "789", + "body": "很多字只要夠大都很好看,不論是新細明體,Simsun,或者是其他字形。\r\n\r\nWordPress 內建的 Theme 以及其他人所寫的 Theme 是以英文字為主,由於英文字母本來就比較簡單,字小小的其實還蠻容易看清楚,但如果同樣的大小拿到中文字用,就會糊成一團,看起來就很吃力。\r\n\r\n舉個例子來說,A List ApartThe ALA Primer Part Two: Resources For Beginners (內文是 11.4667px) 與學弟的 XMLHttpRequest (內文是 12.4667px) 這兩篇比起來,雖然學弟那篇字比較大,但還是不夠大,中文字看起來就不太舒服。\r\n\r\n再舉個例子,同樣是 K2 Theme,你可以看我的 Blog (16.2667px) 與 ericsk 的 (15.2667px,也是 Simsun) 與 pctao 的 (12px)。你可以感覺看看字體大小所產生的差別。\r\n\r\n布丁 曾經在聊天的時候聊到,有次他問他未婚妻覺得網站 (http://hlb.yichi.org/blog/,16px) 如何,他未婚妻只說「字很大,看起來很好」。\r\n\r\nPS:我看 ALA 與學弟的網站都會用 Ctrl-+ (in Firefox) 加大一級看,因為還是覺得太小了...", + "title": "字形的問題" + }, + { + "id": "790", + "body": "中午在 ijliaodel.icio.us 書籤上看到介紹 strace 的文章 (Fun with strace and the GDB Debugger),就到 ports 裝起來 (在 devel/strace),發現比起 FreeBSD 的 ktrace & dump 好用不少。\r\n\r\n裝好 strace 後可以簡單玩看看:\r\n
$ strace id
\r\n應該會出現像這樣開頭一長串的資訊:\r\n
execve(0xbfbfe240, [0xbfbfe710], [/* 0 vars */]) = 0\r\nmmap(0, 3616, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0) = 0x28070000\r\nmunmap(0x28070000, 3616)                = 0\r\n__sysctl([...], 0x2806cb58, 0xbfbfe4c4, NULL, 0) = 0
\r\n有時候不會出現是因為 id 已經先結束了,strace 才去 trace,這時候就會出現錯誤訊息:\r\n
execve(0xbfbfe240, [0xbfbfe710], [/* 0 vars */]PIOCWSTOP: Input/output error
\r\n除了對於還沒執行的指令另外,你還可以追正在執行的 process,譬如拿我的 ssh-agent 來當白老鼠,他的 pid 是 1156:\r\n
$ strace -p 1156\r\nProcess 1156 attached - interrupt to quit\r\naccept(3, {...}, 0xbfbfe4dc)            = 4\r\ngetsockopt(4, IPPROTO_IP, IP_OPTIONS, 0xbfbfe3f0, 0xbfbfe3ec) = 0\r\ngetuid()                                = 1000 (euid 1000)\r\nfcntl(4, F_GETFL)                       = 0x6 (flags O_RDWR|O_NONBLOCK)\r\nselect(5, [3 4], [], NULL, NULL)        = 1 (in [4])
\r\n按 Ctrl-C 就可以跳出來停止追蹤。\r\n\r\n有時候你想要知道這些 syscall 花了多少時間:\r\n
$ strace -p 1156 -T\r\nProcess 1156 attached - interrupt to quit\r\naccept(3, {...}, 0xbfbfe4dc)            = 4 <0.000123>\r\ngetsockopt(4, IPPROTO_IP, IP_OPTIONS, 0xbfbfe3f0, 0xbfbfe3ec) = 0 <0.000042>\r\ngetuid()                                = 1000 (euid 1000) <0.000036>\r\nfcntl(4, F_GETFL)                       = 0x6 (flags O_RDWR|O_NONBLOCK) <0.000049>\r\nselect(5, [3 4], [], NULL, NULL)        = 1 (in [4]) <0.000033>
\r\n或者想要知道每個 syscall 是什麼時候被叫用的:\r\n
$ strace -p 1156 -tt\r\nProcess 1156 attached - interrupt to quit\r\n03:48:35.412544 accept(3, {...}, 0xbfbfe4dc) = 4\r\n03:48:35.413028 getsockopt(4, IPPROTO_IP, IP_OPTIONS, 0xbfbfe3f0, 0xbfbfe3ec) = 0\r\n03:48:35.413160 getuid()                = 1000 (euid 1000)\r\n03:48:35.413258 fcntl(4, F_GETFL)       = 0x6 (flags O_RDWR|O_NONBLOCK)\r\n03:48:35.413365 select(5, [3 4], [], NULL, NULL) = 1 (in [4])
\r\n這些都是蠻基本的功能,但對於 debug 或 benchmark 很有用,像是 lighttpd 就用 strace 找出是哪邊浪費掉了時間:reducing Requests-Setup-Costs。(當然,裡面也有一些 strace 的範例可以看)\r\n\r\n其他的功能可以直接打 strace 看到說明,或是直接看 manual (man strace),裡面也寫的蠻詳細的。", + "title": "strace" + }, + { + "id": "791", + "body": "今天在系計中聽到的:\r\n
A:有名大站這麼爛,還是有很多人支持啊。\r\nB:這就跟 5566 還是很多人支持是一樣的道理啊。
", + "title": "中肯無比" + }, + { + "id": "792", + "body": "從 Slashdot 看到的,印度政府將對 ISP 抽 12.5% 的稅,因為他們販賣「光能」(light energy) 給客戶,用以提供資料的傳輸 (這個厲害 XD):Indian ISPs Taxed for Generating \"Light Energy\"。\r\n\r\n聽起來就是政客之間互相鬥爭,某一方決定找出過時而不適當的法律條文出來婊人 :p", + "title": "印度政府將對 ISP 抽 12.5% 的稅" + }, + { + "id": "793", + "body": "Update:各大媒體 (以及 Wikipedia) 都更新資訊了,這架飛機是洋基隊投手 Cory Lidle 的飛機:Yankees pitcher's plane crashes into Manhattan high-rise。\r\n\r\n在 BBC 中文網 看到的:紐約一架小型飛機撞入一座高層大樓。\r\n\r\n本來打算到 Google News (U.S.) 上面找,一連過去發現也不用找了,頭條... 其他的幾個新聞媒體在網站上也都以頭條報導:\r\n\r\n目前的報導都指出暫時沒有證據說明是恐怖攻擊,不過為了防止萬一,已經先派戰鬥機起飛在空中待命。", + "title": "紐約:小型飛機撞入高層大樓" + }, + { + "id": "795", + "body": "\"\" 最近有不少人提到 Wikipedia 在對岸幾乎都解禁了,說「幾乎」是因為... 除了中文版以外的都解禁了 XD:Wikipedia Unblocked in China for All Languages But Chinese (Search Engine Journal)。\r\n\r\n一開始看到新聞的時候就在想「嗯?居然解禁了?」,剛剛看到更詳細的確認後,就換成「嗯,果然沒錯...」XD", + "title": "Wikipedia 在中國解禁?" + }, + { + "id": "796", + "body": "不知道發生什麼事情了,連 blog.gslin.org 超慢,看 traceroute 結果發現是出國的部分異常,只好暫時用 SSH Tunnel 的方式繞道走其他線路:\r\n\r\n\"\"", + "title": "SEEDNet (動態 IP) 出國線路" + }, + { + "id": "797", + "body": "廖長輩 的 Blog 換名字了 (之前叫「國生三年才開始」),現在叫「苦牢之最後一年」(屁,明明就爽到翻),這就讓我想到之前有人在看過他的 Blog 後覺得「國中生就這麼強,台灣有救了」XD\r\n\r\n不過舊的關鍵字還是可以找到... XD\r\n\r\n「國二」:\r\n\r\n\"\"\r\n\r\n「國三」:\r\n\r\n\"\"", + "title": "廖長輩的 Blog 換名字了..." + }, + { + "id": "798", + "body": "\"\" 一個禮拜前 Folding@Home 釋出使用 GPU 計算的 Client:利用 GPU 跑 Folding@home。\r\n\r\n一個禮拜後,在 Slashdot 看到目前以 GPU 參與計算的速度已經超過使用 CPU 參與的 Linux 平台 + Mac OS X 平台了:Impressive GPU Numbers From Folding@Home。\r\n\r\n(統計數字在這裡:Client statistics by OS)\r\n\r\n報導上是寫 448 顆 GPU,我寫這篇的時候看到 441 顆,輕鬆殲滅 Linux (17238 顆 CPU) + Mac OS X (7835 顆 CPU) 的計算能力 XD", + "title": "GPU 在 Folding@Home 的速度" + }, + { + "id": "799", + "body": "Google Gdrive 內部 Client 流出,於是就有 Screenshot...:Google Gdrive Client Leaked。\r\n\r\n\"\"\r\n\r\n不過目前看起來只有內部能用 (應該是擋 IP address),所以還不知道實際應用的情況?看起來有公開下載的功能,應該會讓搞 Hosting 賣頻寬的廠商大爆炸 :p", + "title": "Google Gdrive" + }, + { + "id": "800", + "body": "PieTTY 有個很重要的特色 (而且是其他改自 PuTTY 的軟體沒有的):\r\n
可使用英文等其它字型,而且不用設定字元集(CHARSET) (傳統 PuTTY 則一定要設定正確才行)
\r\n於是本來在 PuTTY 裡無法選用 Courier New 字體並且正確打中文的情況,在 PieTTY 裡解決了。\r\n\r\n不過,PieTTY 的作者一直不願意放出 source code 或 patch file,對於要求高安全性的情況下,我仍然是使用 PuTTY + 文鼎 PL 中楷。\r\n\r\n剛剛在系計中遇到 Hubert,跟他提到我在 trace PuTTY source code 看這塊要怎麼改,他就跳下來幫忙看,過沒多久他就給出 patch:putty_big5.diff,另外一個 patch 是等價的,只是改成 #if 0 比較容易維護:winucs.c.diff,說穿了只是把 codepage 強制設為 950 (即 CP950)。\r\n\r\n用 Visual Studio 2005 .NET 編出來的執行檔有點肥 (488KB,原 PuTTY 只要 412KB,應該是因為用 VC6 編的關係吧 +_+),相信裡面沒有奇怪木馬,而且有需要用的人就自己抓吧:putty.exe。", + "title": "PuTTY 中文修正" + }, + { + "id": "801", + "body": "\"\" Firefox 現在開始計畫 Firefox 3.0 要做什麼,所以開始開放聽眾 Call In 提出意見... XD:Firefox Accepting Feature Suggestions for Version 3。\r\n\r\n(官方 Wiki 頁面在 Firefox/Feature Brainstorming 這裡)", + "title": "Firefox 3.0" + }, + { + "id": "802", + "body": "\"\"", + "title": "本幫大事" + }, + { + "id": "803", + "body": "\"\"可以不要自動播放音樂嗎?網路雜感 + 情緒文。 這兩篇裡面抱怨的事情,Hemiola 寫的 Stop Autoplay 提供了自力救濟的方法。\r\n\r\n中文的說明可以參考作者寫的 Firefox 擴充套件: Stop Autoplay 這篇。", + "title": "Stop Autoplay" + }, + { + "id": "804", + "body": "今天晚餐的飲料訂的是這家:發條桔子(新竹馬偕店)。\r\n\r\n我只說我自己訂的烏龍茶:有橘子的味道,不確定是「特色」還是茶桶的問題,最後喝不到一半就決定倒掉...", + "title": "發條桔子 (Spring Orange)" + }, + { + "id": "805", + "body": "\"\" 這幾天看到好幾個人在 BBS 以及 Blog 上問這個問題,就順手寫下來好了。左邊這張圖是 Firefox 2.0 某個測試版的圖,最下面那個選項叫做 \"When I open a link in a new tab, switch it immediatly\",就是開啟新分頁時不要跳過去的選項。\r\n\r\n\"\" 這個功能在 Firefox 1.5 也是存在的,只是使用者介面沒做出來,你必須直接修改 about:config 裡面的值而已。方法就如同左邊的圖 (我知道圖不怎麼大,如果想看的話就點進去看吧 @_@),把 browser.tabs.loadDivertedInBackground 改成 true 就可以了。\r\n\r\n就是這樣啦 :p", + "title": "「開啟新分頁」但是不要跳到新分頁" + }, + { + "id": "806", + "body": "前幾天學弟提到他想要搜尋「四海遊龍」的資訊,因為 Firefox 的 Search Box 預設的是 Yahoo! Search,所以就懶得選成 Google 了,丟進去查發現第一筆:\r\n\r\n\"\"\r\n\r\n而 MSN Search 也找到同一個站台:\r\n\r\n\"\"\r\n\r\n只有 Google 給出是正確的 (想要找的) 網站:\r\n\r\n\"\"", + "title": "四海遊龍" + }, + { + "id": "807", + "body": "居然在 Gizmodo 上看到紅色長角的 iPod nanoiPod Nano From Hell?。\r\n\r\n\"\"", + "title": "紅色長角" + }, + { + "id": "808", + "body": "在 Wikipedia 新增的帳戶將不能有 @ 這個字元在使用者名稱內,而已經存在的使用者如果有 @ 的用戶要記得去改名。\r\n\r\n相關的資料可以在 [Announce-l] Wikizine - number: 45 看到:\r\n
New accounts on the WMF-wikis can not longer be created if the username contains the @-symbol. Existing users who have that symbol in there username can still login but only temporary. All these users need to request for a username change. Contact a local bureaucrat to do that or ask a steward if your wiki does not have a bureaucrat.
\r\n相關的 bug report 在 Bug 6849: Prevent usernames from using \"@\", which will stop people from using email addresses for usernames, a very common reason for blocking 這裡也可以看到。", + "title": "Wikipedia 使用者名稱有 @ 的用戶..." + }, + { + "id": "809", + "body": "有人幫 Bloglines 做了一個 OS X 的 Skin,純用 CSS 打造出來的:OS X skin for Bloglines。\r\n\r\n安裝的方法其實很簡單,先把 Bloglines skin for Camino or Firefox 的檔案抓下來 (我就不連結到原檔案了,請自己到原始網站抓),放到 C:\\Documents and Settings\\gslin\\Application Data\\Mozilla\\Firefox\\Profiles\\[亂數].default\\chrome\\ 下 (那個 gslin 記得換成自己的 Windows 帳號名稱...),再到同一個目錄下開一個新檔案叫做 userContent.css,裡面只有一行:\r\n
@import url(bloglines-moz.css);
\r\n重開後再連到 Bloglines 應該就有畫面了:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "幫 Bloglines 換裝" + }, + { + "id": "810", + "body": "在 Boing Boing 上看到 GoogleEI Solutions 合作,將在 Google 加州總部放置大量的太陽能板,這將是美國單一企業最大的太陽能板佈置計畫,足以產生一百六十萬瓦的電力輸出,換算成電腦主機的數量大約是五千台主機的消耗量:Googleplex goes solar。\r\n\r\n\"\"", + "title": "Google 總部的太陽能計畫" + }, + { + "id": "811", + "body": "如同電影般的情節:Wired News editor catches MySpace pedophile (Boing Boing)、MySpace Predator Caught By Code (Slashdot)。\r\n\r\n當政府要求 MySpace 在資料庫裡搜尋性侵害前科 (尤其是戀童癖) 的名單時,MySpace 拒絕了這個請求。之後,Wired News 的編輯 Kevin PoulsenPerl 寫了大約一千行的程式,將這些前科犯的名字 (在 NSOPR 有提供) 丟進 Myspace 網站搜尋,再用人工去檢查是不是同一個人,如果是的話,觀察這些人的交友情況,進而抓到 Andrew Lubrano,自 1987 年因性侵害案件而入獄三次。\r\n\r\nKevin Poulsen 在警方抓到 Andrew Lubrano 後在 Wired News 上刊出這些過程:MySpace Predator Caught by Code。", + "title": "在電腦前抓犯人" + }, + { + "id": "812", + "body": "(註:這篇文章的確是點很多名,但請不要隨便對號入座...)\r\n\r\n這裡不是教室,上面老師講課,下面學生學習,知識從天而降的環境。這裡只是提供一個環境讓大家交流,至於能透過這個環境學到多少東西,沒有人知道。\r\n\r\n有些人擺明就是來當工人:填完班後來值班,上面交代事情後做一做,如果遇到沒遇過的再反過來問要怎麼做。這些人,最後會抱怨他在這裡學不到東西。\r\n\r\n另外有些人是屬於當你只是在聊天的過程講「學HTML哪有不看原文的」後,就跑去印整套 W3C 而且把他仔細看完,最後在 Web Standard 領域立足。\r\n\r\n態度決定一切。", + "title": "態度問題" + }, + { + "id": "813", + "body": "這幾天 Bloglines 好像常噴 500... 剛剛發現是 Apache 2.2.2,跟這個有關係嗎?@_@\r\n\r\n\"\"", + "title": "Bloglines..." + }, + { + "id": "814", + "body": "Slashdot 上看到美國的人口在 10/17 時超過三億:U.S. Population Hits 300 Million。\r\n\r\n在 BBC 的報導還附上了 2006 與 1966 的總族比例分佈圖,可以看出外來移民的比例大幅提昇:US population reaches 300 million。", + "title": "美國人口超過三億" + }, + { + "id": "815", + "body": "在 Gigaom 看到在電話銅線上跑 Gigabit 的技術已經出來了,叫做 DSMGigabit DSL: Yes, it will happen。", + "title": "在電話銅線上跑出 Gigabit 的速度..." + }, + { + "id": "816", + "body": "很久前聽 kenduest 講過在 Linux 上有某些加強安全性的 kernel patch 可以用,當時年紀小不懂事沒記下來...\r\n\r\n這陣子系上被破整排 Linux 的機器 (Update:現在懷疑是 false alarm),除了重新安裝確定系統是乾淨的以外,利用當年的記憶搜尋一些關鍵字,終於找出來當初 kenduest 講的東西了:grsecurity。\r\n\r\n除了對 Buffer Overflow 稍做抵抗的 Heap/Stack Protection 外,grsecurity 讓我想起之前在 DreamHost 上看不到別人 process,按 w 看不到別人,以及 Last PID 會故意亂跳的情況。\r\n\r\n在 Linux 上了 grsecurity 後我就想要在 FreeBSD 上也炮製一番,透過 Google 大神的幫忙下把這幾個對應的功能都找到了。其中看不到別人的 process 這點是透過 security.bsd.see_other_uids=0,而 Random PID 則是透過 kern.randompid=99999 (實際上會被縮成 99899)。\r\n\r\n打開以後看一看似乎不錯,也許跑一陣子看看情況 :p", + "title": "FreeBSD 與 Linux 的一些安全性設定" + }, + { + "id": "818", + "body": "DHTML JavaScript Benchmark (DOM vs. innerHTML):\r\n\r\n\"\"\r\n\r\nPS:圖是從 Benchmark: DOM vs. innerHTML 來的。", + "title": "innerHTML 與 DOM 的速度差異" + }, + { + "id": "819", + "body": "Microsoft Internet Explorer 7 正式版可以下載了,在 Windows Update 上還沒出現 (跟傳言的不太一樣...?),所以要自己抓:Internet Explorer 7 downloads。\r\n\r\n需要「正版」的 Windows 才能安裝...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n另外預設會安裝 Windows Malicious Software Removal Tool:\r\n\r\n\"\"\r\n\r\n接下來就是漫長的等待... (大概太多人在抓了)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n終於正在安裝了:\r\n\r\n\"\"\r\n\r\n裝完要求重開機:\r\n\r\n\"\"\r\n\r\n這是第一次執行的畫面 (三張),會問一些問題讓你設定,記得把預設的搜尋引擎改成 Google 就好了... XD:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n然後應該就會換到選擇 Search Engine 的頁面:\r\n\r\n\"\"\r\n\r\n選 Google 後,過個幾秒 (我等了十幾秒...) 就會跳出視窗確認是否要更改預設的搜尋引擎:\r\n\r\n\"\"\r\n\r\n然後關掉 IE7 後重新開啟,又會叫你安裝 IE7... XD\r\n\r\n\"\"", + "title": "Microsoft IE 7 正式版" + }, + { + "id": "820", + "body": "IE7 對於 CSS 的處理總算比較好了,K2 Theme 右半部不會再掉下去了...\r\n\r\n\"\"\r\n\r\n來看幾個銀行的網站有沒有問題... XD", + "title": "看起來正常多了..." + }, + { + "id": "821", + "body": "把如何在 IE7 裡訂閱的說明放上去... XD\r\n\r\n\"\"", + "title": "Bloglines 更新說明" + }, + { + "id": "822", + "body": "RoundCube 是我第一個發現不能在 IE7 上使用的軟體,登入後看不到信件列表及內容。\r\n\r\nUpdate:-dev 的版本有修正掉這個問題。\r\n\r\n\"\"", + "title": "Round Cube 無法在 IE7 上正常使用" + }, + { + "id": "823", + "body": "Tab Scrolling 是 Firefox 2.0 與 Firefox 1.5 的一個蠻大的差異:當你開很多 tab 時,2.0 會保證每個 Tab 的長度最少有 100px,而 1.5 是想辦法塞進同一個頁面。\r\n\r\n我還是喜歡舊版的方式,不過當時隨意翻了一下 about:config 沒注意到就沒管他,剛剛在 shakalaka 的 Blog 上看到 Disable/modify Firefox 2.0 tab scrolling 這篇,把 browser.tabs.tabMinWidth 設為 0 就會比較接近舊的模式... (還是跟 1.5 不太一樣)\r\n\r\n這是把 tab 塞滿的樣子:\r\n\r\n\"\"\r\n\r\n再多還是會出現 Scroll:\r\n\r\n\"\"\r\n\r\n所以還是將就著用吧... :p", + "title": "關掉 Tab Scrolling" + }, + { + "id": "824", + "body": "在 Boing Boing 看到 JR 東日本 利用乘客的踏力產生電力以供應自動售票機:Tokyo ticket machines powered by footsteps。\r\n\r\n依照文章內所述,每個乘客走過去大約能產生 0.1W 的電力供應,就算有很多人同時經過,能推動兩台應該就很多了?看起來噱頭成分比較大... :p (放太陽能電板 + 電池還比較實際,不過就不能上新聞了...)", + "title": "自給自足的自動售票機?" + }, + { + "id": "825", + "body": "正式版出不到二十四小時內又出包了... Secunia 在網站上發出了 IE6 與 IE7 的安全通告:Internet Explorer 7 \"mhtml:\" Redirection Information Disclosure。\r\n\r\n在 Microsoft 官方的 Security Blog (The Microsoft Security Response Center) 也提到了這個安全漏洞:Information on Reports of IE 7 Vulnerability。\r\n\r\n目前還沒有 patch,所以請自求多福... :p", + "title": "IE7 安全漏洞" + }, + { + "id": "827", + "body": "第一版:\r\n\r\n\"\"\r\n\r\n第二版:\r\n\r\n\"\"", + "title": "蔡依林之「苦勞之最後一年」2.0" + }, + { + "id": "828", + "body": "用 Google 找了一些關鍵字都沒找到 IE7 上免費的 Adblock 軟體 (當然,必須是 Spyware-free,如果有 Open Source 的話更好...),有人有推薦的嗎 :p\r\n\r\nPS:我發現 IE7 讀 Gmail 比較快,開 Flickr 的 Organize 也比較快...", + "title": "Free Adblock Software on IE7" + }, + { + "id": "829", + "body": "在學弟板上看到一個 Wikipedia 連結,講大額美國紙幣:Large denominations of United States currency (英文版)、大額美國紙幣 (中文版)。\r\n\r\n十萬美元的紙幣耶... :p", + "title": "大額美國紙幣" + }, + { + "id": "830", + "body": "在 Ajaxian 看到利用 Zimbra Web Client 測試 IE7 跑 JavaScript 的速度:IE7: Twice as performant as IE6, but half as slow as FF 1.5,原文在 IE 7 vs IE 6 這篇。\r\n\r\n雖然標題只說 IE7 與 IE6,不過實際在測試的時候也把 Firefox 1.5 一起丟進去測試了。\r\n\r\n簡單來說,IE7 在 JavaScript 的效率大約是 IE6 的兩倍,而 Firefox 的效率也大約是 IE7 的兩倍... 所以作者說「改善很多,但還可以再加強」:p", + "title": "IE7 的效率" + }, + { + "id": "831", + "body": "從 【分享】南方公園之魔獸世界(繁體字幕) ※ 增加新連結 看到的,兩個檔案:\r\n", + "title": "南方公園 WoW 繁體中文版的翻譯..." + }, + { + "id": "832", + "body": "當你找到 Spam Blog 或是抄襲其他網站的文章時,你可以透過下面的方式處理:\r\n", + "title": "回報 Spam Blog 的方法" + }, + { + "id": "833", + "body": "前幾天跟學弟 stephon 去吃晚餐,吃完以後本來要去 五十嵐 (沒有官方網站,只好 link 到 Ptt 相關的連結... XD) 買飲料,想起學弟之前提到他家裡附近那家飲料店不錯,就改變主意去那家買,於是就跑到 東門國小 正門口外的 蘿莉瞬間援味茶 羅德利瞬間原味茶 這家買。(他的官方網站做的有點... XD)\r\n\r\n這家的茶還蠻好喝的,有現泡的茶葉香,所以點的時候請記得不要加糖... :p", + "title": "羅德利瞬間原味茶" + }, + { + "id": "834", + "body": "OuTian 寫了一個 BBS 看板備份 服務 可以備份 BBS 看板的文章,裡面這樣說:\r\n
會寫這個東西,是因為前陣子傳聞某有名大站設備不穩定,資料可能流失\r\n於是導致人心惶惶,許多使用者紛紛尋求其他服務商搬家\r\nBlog、及相簿等網頁服務均有長輩提供了完整的 備份服務\r\n但 BBS 上的看版就沒有了 ....
\r\n其實 BBS 看板有想過,不過發現我寫的另外一個東西已經解決這個問題了,也就是 Group.NCTU.edu.tw,平常丟著轉信就好了 :p", + "title": "BBS 看板備份服務..." + }, + { + "id": "835", + "body": "在 innerHTML 與 DOM 的速度差異 這篇提過了:\r\n\r\n\"\"\r\n\r\n會再提一次是因為在 DOM 物件與 innerHTML 這篇這樣說:\r\n
前不久,ajaxian 上談到一篇文章,其中針對了 innerHTML 屬性以及 DOM object 做了個 performance 的比較,測試後的結果,在 Firefox 1.5 上,直接建立 DOM object 會比使用 innerHTML 好上 3 到 4 倍,在 Internet Explorer 上的話,則有 4 倍的差距。
\r\n呃?", + "title": "innerHTML 比 DOM 快" + }, + { + "id": "838", + "body": "在 Firefox 微調密技:其他的微調 裡面提到:\r\n
安全性\r\nFirefox 2 支援 SSL 3,預設值則沒有啟動支援 SSL 2 ,因為 SSL 2 有安全上的弱點,如果在瀏覽網頁時有遇到問題,可依下列方式啟動支援:\r\n
    \r\n\t
  1. 在網址列輸入: about:config
  2. \r\n\t
  3. 將 security.enable_ssl2 的值設定為 \"true\"
  4. \r\n
\r\n天啊,你乾脆說「有問題請改用 IE6」好了...", + "title": "Firefox 2.0 的 SSLv2..." + }, + { + "id": "839", + "body": "在 Security Fix 看到的,Microsoft 再度延遲 Windows XP SP3 的發行時間,以免影響到使用者對於 Vista 的購買慾望:Microsoft Delays Service Pack 3 Again。\r\n\r\n參考 Microsoft 網站上的 Windows Service Pack Road Map。\r\n\r\n以安全性要脅使用者,幹的好!", + "title": "Microsoft 將延遲 Windows XP SP3 的發行時間" + }, + { + "id": "840", + "body": "Firefox 2.0 在 10/24 出版的消息很多人都已經知道了 (像是 蔡依林的部落格 提到的 Firefox 2 出爐 !),不過更棒的是有人特地帶著 Red PandaGoogle 上班:Firefox 2 out。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Firefox 2.0" + }, + { + "id": "841", + "body": "Slashdot 提到的這篇:Trojan Installs Anti-Virus, Removes Other Malware 以及 eWeek 這篇 Spam Trojan Installs Own Anti-Virus Scanner 太令人噴飯了... XD\r\n\r\n當你中了 SpamThru 這隻木馬,他會幫你裝好防毒軟體 (Kaspersky),順便幫你破解授權過期的問題,然後叫 Kaspersky 移除其他的木馬,接下來幹他自己的事情... XD", + "title": "木馬幫你裝好防毒軟體,並移除其他木馬..." + }, + { + "id": "842", + "body": "Slashdot 這篇 Alexa, Amazon's Most Flawed Idea 所引用的 Alexa: Amazon’s Most Flawed Idea 這篇文章提到 Alexa 易於「操控」(提供假資料),同時會因為頁面設計過爛 (像 Myspace) 導致連線數量較多而排名較高,另外更重要的是 Alexa Toolbar 是 IE only,所以對於某些站台完全沒有意義。\r\n\r\n多沒意義呢?依照 Alexa 的資料,Slashdot 在目前的排名是 227 名 (Related Info for: slashdot.org),但 Slashdot 有 75% 的人是使用 Firefox,如果把這些人都算進去的話...:\r\n\r\n\"\"\r\n\r\n更不用說根本不是以 Windows 為導向的站,MacRumors 只有 13% 的使用者用 IE...\r\n\r\n所以當有人說他的站在 Alexa 排名多前面的時候,聽聽就好,因為 1) 可以自己寫程式造假 2) 他的站設計的很爛,造成要抓取多次才能完成一個動作 3) 只有 IE 的使用者會被統計到。", + "title": "Alexa 的不準確性" + }, + { + "id": "843", + "body": "在 Alexa 的不準確性 提到有許多人對於 Alexa 以 Web Traffic 作為的評分方式質疑後,當然就會有人試著去找替代的方案。\r\n\r\n在 (Mis)Tracking Web Traffic 所引用的 Web Numbers: What's Real? 這篇就有人去用不同的方法分析網站的排名,結果得出一些相反的結論。\r\n\r\n這就讓很多網站開始緊張啦,因為廣告主會開始質疑「是不是值得投資這麼多錢」... :p", + "title": "Alexa 的不準確性 (續)" + }, + { + "id": "844", + "body": "請先參考在 去吧!錯誤特攻隊 上刊登的這篇:時速三百公里的高鐵在三秒鐘內讓車子完全停下來?。\r\n\r\n然後再來看這張,我快笑到不行了... XD (從鳥窩看到的)\r\n\r\n\"\"", + "title": "三秒內讓 300KM/hour 的高鐵停下" + }, + { + "id": "845", + "body": "真怪,Wireless USB 不是早就成為標準了嗎 (在 2005 五月,我寫過一篇 Wireless USB 1.0 這篇文章),怎麼過了一年 Slashdot 又提到這個消息,看不太懂...:USB To Go Wireless。\r\n\r\n看起來是因為之前有些爭議?(是 Bluetooth 在攪局嗎?:p)", + "title": "Wireless USB" + }, + { + "id": "846", + "body": "在 Slashdot 上看到 Flickr Search Hack Powered by Mouse-Made Doodles,仔細看了一下果然是以圖找圖的工具。\r\n\r\nretrievr 會透過 Flickr API 抓圖下來分析,然後提供介面讓你搜尋:一種方法是用他的繪圖介面畫圖再丟進去找,或是直接上傳圖檔 (或是指定網址) 讓他找。依照文章內的說明,這個系統用的方法其實是 1995 年所發表的論文... :p\r\n\r\n剛剛測試了一些圖檔,看起來還蠻有樣子的... 反正先記著,以後有想到再說 :p", + "title": "以圖找圖" + }, + { + "id": "847", + "body": "為什麼這張圖讓我想起《一九八四》裡的劇情呢...\r\n\r\nUpdate:有人問起我到底跟《一九八四》相似在哪裡,可以看 中国没有审查互联网,真的 這篇下面的 comments...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\nUpdate:換成 Flickr 的圖。\r\nUpdatezonble 的圖比較清楚。", + "title": "一九八四" + }, + { + "id": "848", + "body": "在 US-CERT 上看到的:Multiple Vulnerabilities in AOL Nullsoft Winamp Ultravox。最後面的說明有錯誤:\r\n
We recommend that users upgrade to Winamp 3.51 to help mitigate the security risks. We will continue to update current activity as more information becomes available.
\r\n依照官方網站的說明,應該是 5.31:\r\n
iDefense Labs has disclosed two security vulnerabilities to us. The vulnerabilities effect versions 2.666 - 5.3 and are fixed in 5.31. It is recommended that you upgrade immediately. It is fixed in version 5.31 and above.
", + "title": "Winamp 安全漏洞" + }, + { + "id": "849", + "body": "Spamhaus 是一個在英國提供 DNSBL 服務的單位,主要提供兩份名單:SBL (Spamhaus Block List) 與 XBL (Exploits Block List)。SBL 列出了 Spam Source 的機器 (Direct UBE sources, verified spam services and ROKSO spammers)。而 XBL 則是列出被 crack 當作跳板的機器 (Illegal 3rd party exploits, including proxies, worms and trojan exploits)。\r\n\r\nSpamhaus 提供的名單相當穩定 (簡單來說,也就是 False Positive 非常少,也就是誤擋的情況很少),我一直都有在 Mail Server 上使用。另外一個穩定的 DNSBL 則是 ORDB,不過他們只著重在 Open Relay 上,所以效果就沒那麼明顯了...\r\n\r\nSpamhaus 夠穩定的情況下,自然就會有很多人使用,也很自然也成為 Spammer 的標靶。\r\n\r\n最近,美國的 Spammer David Linhardt 以及他的公司 e360 Insight LLC 決定控告 Spamhaus 阻擋他們的信件。剛開始的時候 Spamhaus 將案件的層級從州提升到聯邦 (from state to federal court),但後來 Spamhaus 認為美國法院管不到英國的團體,所以決定不參與接下來的判決。後來美國法院判 Spamhaus 敗訴,要罰千萬美金,而 Spamhaus 也宣佈他們不會理會美國的判決:Spamhaus to Ignore $11.7M Judgement。\r\n\r\n但負責 Domain 的大頭目 ICANN 在美國,所以這位 Spammer 就決定把腦筋動到 ICANN 身上:要求美國法院直接下令 ICANNSpamhaus 的 Domain 停掉:Perspectives on Spamhaus's Dilemma。\r\n\r\n這使得全世界嘩然:美國法院憑什麼處理整個 Internet 的事情?換句話說,在 Internet 上不論發生什麼事情,你只要把戰場移到美國,由美國法院強制對 ICANN 執行就可以達到你的目的。對此 ICANN 決定踢皮球,說 ICANN 本身沒有權力做這種事情,有事情請找 Registar (以這個案例來說,是 Tucows Inc.):ICANN Grants Temporary Reprieve to Spamhaus。\r\n\r\n雖然大家很不滿由美國法院來處理 Internet 上的事情,但目前看起來沒有其他的解法。在前陣子,法院裁定了「將 Spamhaus 的 Domain 直接停掉是一種過度裁定」而暫時告一段落:Judge Rules In Favor Of Spamhaus。\r\n\r\n但整件事情還沒有結束,許多人仍然在研究要如何避免同樣的事情再度上演。", + "title": "Spamhaus 的情況" + }, + { + "id": "851", + "body": "\"\"\r\n\r\n照 syshen 的說法 (犯小人?),我的禮貌大概從去年就沒有了,因為我從去年開始就沒有辦法在我弟的 Blog 上留言... (也在 養樂多 上)\r\n\r\nAnyway,這篇會試看看 http://cgi.blog.yam.com/trackback/2366383,也許會比較清楚一點...\r\n\r\nUpdateWordPress 送出。\r\n\r\n\"\"\r\n\r\n五分鐘後的樂多:\r\n\r\n\"\"", + "title": "禮貌?" + }, + { + "id": "852", + "body": "如果把 wkwu 忽略掉的話,Zooomr 的 Downtime 說明讓我想到 無名小站 在 Downtime 延長時說明的風格,還蠻像的...:Still Working On Our Servers, We Are Very, Very Sorry。", + "title": "Zooomr 的 Downtime..." + }, + { + "id": "853", + "body": "Update:感謝某長輩提醒,標題從「Unix 環境下的 Inline Assembly」改成「GCC 裡的 Inline Assembly」。\r\n\r\n從大二修 Assembly 後就很久沒寫組語了,當時修的時候還是用 Intel 語法寫,就一直沒學到 AT&T 語法,後來從網路上看也只知道 src 與 dst 的位置通常是相反的,以及 register 前面要用 % 修飾,其他的像是記憶體的定址要怎麼寫都不知道,所以在 Unix 下一直不會寫 Assembly...\r\n\r\n前幾天有個學弟剛好在寫作業,要用 MMX 計算一個整數 Vector (看做是 1*n 的 Matrix) 乘上整數 Matrix (n*n) 的結果 (其中 n 會是 4 的倍數,另外每個整數都是 16 bits),趁著這個機會摸索 GCC 裡要怎麼寫 Inline Assembly,以及 AT&T 語法與 Intel 語法不同的地方...\r\n\r\n這是剛摸索出來怎麼寫,基本上請不要太要求... :p 編譯環境是 FreeBSD 6.1 系統內附的 GCC (gcc version 3.4.4 [FreeBSD] 20050518)。\r\n
void matrixMMX(const unsigned int n,\r\n    const uint16_t const *vec, const uint16_t const *mat,\r\n    uint16_t *result)\r\n{\r\n    const unsigned int n2 = n / (64 / 16);\r\n\r\n    // First empty the result array\r\n    bzero(result, sizeof(uint16_t) * n);\r\n\r\n    asm volatile(\"\\\\\r\n        mov %1, %%edi;\\\\\r\n        mov %3, %%ecx;\\\\\r\n        mov %2, %%edx;\\\\\r\nloop1:\\\\\r\n        mov %0, %%esi;\\\\\r\n        push %%ecx;\\\\\r\n        mov %4, %%ecx;\\\\\r\nloop2:\\\\\r\n        movq (%%esi), %%mm0;\\\\\r\n        pmaddwd (%%edi), %%mm0;\\\\\r\n\\\\\r\n        movd %%mm0, %%eax;\\\\\r\n        mov %%eax, %%ebx;\\\\\r\n        shr $16, %%eax;\\\\\r\n        add %%ax, %%bx;\\\\\r\n        add %%bx, (%%edx);\\\\\r\n\\\\\r\n        psrlq $32, %%mm0;\\\\\r\n\\\\\r\n        movd %%mm0, %%eax;\\\\\r\n        mov %%eax, %%ebx;\\\\\r\n        shr $16, %%eax;\\\\\r\n        add %%ax, %%bx;\\\\\r\n\\\\\r\n        add %%bx, (%%edx);\\\\\r\n\\\\\r\n        add $8, %%edi;\\\\\r\n        add $8, %%esi;\\\\\r\n        loop loop2;\\\\\r\n\\\\\r\n        add $2, %%edx;\\\\\r\n        pop %%ecx;\\\\\r\n        loop loop1;\\\\\r\n\\\\\r\n        emms;\"::\r\n        \"X\"(vec), \"X\"(mat), \"X\"(result), \"X\"(n), \"X\"(n2):\r\n        \"eax\", \"ebx\", \"ecx\", \"edx\", \"esi\", \"edi\", \"mm0\");\r\n}
", + "title": "GCC 裡的 Inline Assembly" + }, + { + "id": "854", + "body": "剛剛發現這次停機後 Zooomr 有繁體中文介面了:\r\n\r\n\"\"\r\n\r\n不過有幾個缺點:\r\n\r\nFlickr 對於 l10n 反而都沒有動作... 所以該寫從 無名相簿 完整轉移至 Zooomr 的工具了嗎?:p\r\n\r\nUpdate:在官方的 Blog 上有說明:嗨, 來自台、港、澳的朋友 / Hello Taiwanese, H.K. & Macau Friends。", + "title": "Zooomr 繁體中文" + }, + { + "id": "855", + "body": "Firefox 2.0 的防釣魚有兩種選擇,一種是讓 Firefox 每隔一段時間自動下載名單,這是預設值,另外一種則是利用 Google 的資料庫查詢。(我覺得要在安裝的時候就讓使用者選會比較好 :/)\r\n\r\n而 IE 7.0 我沒有找到設定的地方,不知道是不是用 MSN 提供的資料庫查詢...\r\n\r\nAnyway,我前陣子特地到 Spam 資料夾翻 Phishing 的信件,發現 Google (上圖) 更新得相當快,而 MSN (下圖) 的就...\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Firefox 2.0 與 IE 7.0 的防釣魚功能" + }, + { + "id": "856", + "body": "在 蔡依林的部落格 上看到的好東西:網頁瀏覽加速法。\r\n\r\n裡面大多數都是提到 Firefox,我找了一下 IE7 與 IE6 的設定,裡面都沒看到 HTTP Pipeline 的設定,所以是不支援,還是有支援但是關不掉?XD\r\n\r\n(以下開始岔題)\r\n\r\n如果網站的連線數量夠大的話,千萬不要想不開跑去用 Apache (1.3.x 或是 2.x 的 Prefork MPM),安裝是很方便,但生活可以更好。\r\n\r\n因為傳統的 Prefork MPM 一個連線進來就要一隻 httpd 服務,當有上千個連線的時候,就代表有上千個 httpd... 如果 httpd 又包含著 mod_php4 或 mod_php5 的時候,你可以想像會發生什麼事情... :p\r\n\r\n可以改進的地方是改用 Apache 2.x 的 Worker MPM,一個連線一個 Thread,而不是一個連線一個 Process,再加上 mod_fastcgi + php-fastcgi,這樣可以兼顧使用者要用 .htaccess 以及 PHP 不是 Thread-safe 的問題,同時也可以提升效率。(有人說 PHP 本身已經是 Thread-safe,但 extensions 的部份不保證是,所以還是用 FastCGI 隔開吧)\r\n\r\n目前看到最好的方法還是直接用 lighttpd + php-fastcgi,這樣就得放棄 .htaccess,不過這對 WordPress 沒有影響,因為 WordPress 自己可以處理 mod_rewrite 要做的工作,所以... :)", + "title": "網頁瀏覽加速法" + }, + { + "id": "857", + "body": "郵局 WebATM 的 ActiveX 給 HiTrust 簽但是 IE7 不會過?\r\n\r\n(注意 unverified 的字樣)\r\n\r\n\"\"\r\n\r\n點下去之後的比較明顯:(Zooomr 幹嘛縮圖啊,!@#$%^...)\r\n\r\n\"\"", + "title": "郵局的 ActiveX" + }, + { + "id": "858", + "body": "為了減少 Runtime function 的效率損耗問題,C 語言的 macro 一直都有許多有趣的 library,像是 Niels Provos 寫的 RB tree。(在 FreeBSD/usr/include/sys/tree.h 有一份 copy)\r\n\r\n我用 Google 找了一下中文文件,好像沒有人對於這些比較特殊的 macro 用法提供中文的說明,所以我就寫了一些簡單的範例,希望以後不會再看到 C/P 的密技又出現... :p\r\n", + "title": "C 的 macro" + }, + { + "id": "859", + "body": "我記得 Zooomr 的容量是 50MB/month (每個月提供 50MB 的空間讓你上傳),剛剛發現變成 100MB/month 了?\r\n\r\n拿來放 Screenshot 愈來愈方便了?(真是糟糕... :p)", + "title": "Zooomr 的容量" + }, + { + "id": "860", + "body": "PHP 5.2.0 出版:PHP 5.2.0 Release Announcement。\r\n\r\n這個版本宣佈將不再對 PHP 5.1 提供支援,所以請廣大的 PHP 使用者們儘快升級到 5.2:\r\n
All users of PHP, especially those using earlier PHP 5 releases are advised to upgrade to this release as soon as possible. This release also obsoletes the 5.1 branch of PHP.
\r\n升級須知在 PHP 5.2 UPDATE INFO 這裡有,可能會有些 code 要修改也可以在裡面查到。", + "title": "PHP 5.2.0 出版" + }, + { + "id": "861", + "body": "Jason Dixon 在 NYBSDCon 2006 所講的 BSD is Dying,內有影片可以看 (從投影片 + 現場錄音轉出來的),建議抓 QuickTime 版本的影片,比較小而且比較清楚... XD\r\n\r\nUpdate:佳評如潮,看過的都說好,瞭解的愈多會愈有體會 XD", + "title": "BSD is Dying" + }, + { + "id": "863", + "body": "難得看到 Flickr 服務爛掉的畫面:\r\n\r\n\"\"", + "title": "Flickr 故障?" + }, + { + "id": "864", + "body": "打開 Bloglines 發現兩千個 entry 未讀,errr,怎麼幾個月就來一次啊... @_@", + "title": "Bloglines 怪怪的..." + }, + { + "id": "865", + "body": "Netcraft 統計的 Web Server 報告是一項指標,頗具有參考價值。前幾天他們公布了 十一月的 Web Server 報告,在報告裡指出 Website 數量突破一億:\r\n
In the November 2006 survey we received responses from 101,435,253 sites, up from 97.9 million sites last month.
\r\n另外就是 Apache Server 的比重不斷的在下降,而 Microsoft IIS 的比重則不斷的在上升 :p (兩者的「總數」都是在上升)", + "title": "一億個 Website" + }, + { + "id": "866", + "body": "PayPaleBay 的業務之一,提供網路上的金流服務。\r\n\r\n目前在台灣最常用的應該是透過信用卡支付到 PayPal 上,再用 PayPal 付款給他人的服務,這樣可以避免信用卡卡號交給對方所產生的危險性。\r\n\r\n剛剛在 Slashdot 上看到 PayPal 在加州 San Jose 的總部外被放置炸彈且爆炸的新聞:Bomb Explodes At PayPal Headquarters,爆炸的威力相當大,所幸只有一個人受傷,目前還不清楚放置炸彈的兇手及放置的目的。", + "title": "PayPal 總部外被放置炸彈" + }, + { + "id": "867", + "body": "DRM 一定能無失真移除,但要花時間寫移除的軟體。所以在 Internet 上找的到的移除軟體都只能處理比較有名的 DRM。\r\n\r\n像是搞定 iTune FairPlay 的 QTFairUse (名字取的真好),或是搞定 Microsoft DRM 的 Fairuse4WM,都可以在無失真的情況下把 DRM 移除。\r\n\r\n但對於小廠商自己搞的 DRM 因為沒有人寫,就沒辦法直接針對檔案移除掉 DRM 的部分了。而 AnalogWhole 則是希望利用不同的方法來解決這個問題:在 Windows 上直接透過音效卡的 Driver 層將輸出的音樂再抓下來達成無失真撥除 DRM 的任務 :)", + "title": "AnalogWhole" + }, + { + "id": "869", + "body": "想要用我的 Combo 機燒個 Debian 3.1r3 與 FreeBSD 6.2-BETA2 的開機光碟,之前在 免費的 CD/DVD 燒錄軟體 這篇講的 CDBurnerXP Pro 對於我的 USB 外接燒錄機一直有問題(Desktop 倒是沒什麼問題,用得還算愉快),但是又不想裝肥大的 Nero。\r\n\r\n結果反過來去用 burnatonce 這套燒錄軟體,軟體不大,只能燒 image 或直接互相 copy。測了一下也沒什麼問題,不過預設會用最高速燒 (在我這台上面是 24x),會有問題,要自己改成 16x。", + "title": "burnatonce" + }, + { + "id": "870", + "body": "在 Slashdot 上看到 Microsoft 利用 Microsoft Update 反攻,將 IE7 放入 High Priority Update,使得許多電腦會因為預設值而自動更新:IE7 Released As High-Priority Update。\r\n\r\n接下來要看十二月的時候 IE 佔有率的情況了...。", + "title": "IE7 放入 High Priority Update" + }, + { + "id": "871", + "body": "在 Boing Boing 看到在南韓由 LG 所經營的 ISP Powercomm 阻擋 hanaTV 的 VOD 服務:Korean ISP commits neutricide。\r\n\r\n韓國的環境跟台灣很像 (包括貪污...?),這件事情要注意看韓國會怎麼處理了...", + "title": "韓國 ISP 的「網路中立性」" + }, + { + "id": "872", + "body": "今天在 Desktop 上弄 X-Window,字型的部份想再調整看看... 先來張審查砲彈:\r\n\r\n\"\"", + "title": "X-Window" + }, + { + "id": "873", + "body": "在 TorrentFreak 上看到兩則消息,剛好可以放在一起看:\r\n", + "title": "兩則與網路有關的新聞" + }, + { + "id": "874", + "body": "早上翻 Bloglines 看到一堆好笑的東西 XD\r\n\r\n舉個例子來說好了,Technorati 公佈了十月的 Blog 成長資料 (State of the Blogosphere, October, 2006):\r\n\r\n\"\"\r\n\r\n而轉頭看到 Google Blogoscoped 這篇 Blog Growth 就當場噴飯了 XD\r\n\r\n\"\"\r\n\r\n我們都知道成長的都是 Spam Blog,但是你也不用畫的這麼清楚啊 XD XD XD", + "title": "Blog 的成長" + }, + { + "id": "875", + "body": "Mark PilgrimUser-generated content 這篇很酸 :p\r\n
Stands for \"user-generated content,\" a new form of online scam in which you make all the content, and we keep all the money.
\r\n在講 reddit 被收購的事情... :p", + "title": "Web 2.0" + }, + { + "id": "876", + "body": "以前在 FreeBSD 上是透過 Linux Emulator 跑 Linux 版的 Flash Plugins,但由於 Adobe 不願意授權 FreeBSD 使用這種方式執行,所以 FreeBSD 就從 ports 把 linux-flashplugin* 移除掉了。(參考 Linux flash plugin 從 ports 中移除 這篇)\r\n\r\n於是在 FreeBSD 上要看 Flash 就只剩下 Gnash 這個東西了,問題是這東西 ports 做的非常爛,光是要讓他「能動」就要兩個 patch:\r\n\r\n除此之外,裝完以後發現在 /etc/X11/xorg.conf 裡面要把 Load \"glx\" 打開...。\r\n\r\n結果 Firefox 開起來後發現還是不能看,因為現在不支援直接內嵌在 Browser 裡面的情況,zzzz... (他會告訴你已經下載到 /tmp 下了,你可以直接跑 XD)\r\n\r\n然後抓 zookeeper 來玩發現超慢 (也有可能是機器慢啦,那台機器才 AMD Duron 800 而已),而且不能正常運作... 我還是回 Windows 上玩 zookeeper 好了... XD", + "title": "Gnash" + }, + { + "id": "877", + "body": "看標題應該就猜的出來是透過手機移動的速度來偵測塞車的狀況。\r\n\r\n兩家亞特蘭大的業者已經開始使用這項技術偵測,不過看他們的說明似乎還不是很準確 (在不靠 GPS 的情況下準確度大約在 330 feet,大約一百米的距離):Tracking Traffic Jams With Cell Phones。\r\n\r\n不過隱私的問題可能要再解決。", + "title": "利用行動電話來偵測塞車" + }, + { + "id": "878", + "body": "本來在 X-Window 下都是用 xcin 2.5 輸入中文 (用習慣了),不過這次想用 OverTheSpot 但一直找不出問題在哪裡,就決定去找其他的輸入法軟體看看... 像是 scim,以及 gcin。\r\n\r\n看了一下,發現 gcin 似乎不會很難安裝,而且我也只用注音輸入法 (要有自動選詞的功能),裝起來發現比起 xcin 簡單多了,於是我就跳槽到 gcin 啦...。", + "title": "改用 gcin" + }, + { + "id": "879", + "body": "BBS 文章轉上 Web 後可能會被 Search Engine 收錄,於是交大就發生有人在 BBS 個人板紀錄 Windows 序號後就被轉出去了 XD\r\n\r\n就道理上來說,公開板的文章本來就是公開的,轉到 BBS 上當然是 okay 的。但以台灣特殊的 BBS 文化來說,有很多人申請公開的個人板只是方便讓大家聯絡,並不會想到在上面丟電話號碼 (!) 或是序號 (!!) 會出事。\r\n\r\n其中一種解法是用 robots.txt 請 Search Engine 不要掃,不過這個解法在目前並不好,因為有些搜尋引擎是不看 robots.txt 的。(這是不太禮貌的行為,不過現實生活中總是有流氓的...)\r\n\r\n比較好的解法仍然是提供這項功能,但在申請看板的時候就要求使用者選擇,而已經成立的看板則是預設關掉。避免使用者在不知情的情況下被打槍... :p", + "title": "BBS 看板文章轉上 Web" + }, + { + "id": "881", + "body": "剛剛在家裡發現 ADSL 不通,看了一下 smokeping 的紀錄,大約從 11:45 就不通了,很直覺的重開 ADSL router,但並沒有恢復,用 mtr 發現不是線路的問題 (已經出去兩個點了),而是網路的問題,就丟著不管,反正 notebook 還有 中華電信 的 3G 網路可以用... (真墮落)\r\n\r\nAnyway,剛剛發現網路回來了,仔細看了一下發現是換了 IP address,從原本的 203.72.38.x 換到 140.113.83.x 了,這樣的好處就是可以直接走交大自己買的國際頻寬了,不過有個 P-Cube 在前面擋著前面...\r\n\r\n另外一個好處是查論文資料也比較方便,要取得全文的時候不用再透過系上的 VPN 取得 140.113 的 IP 再抓。\r\n\r\n先放著看看吧 :p", + "title": "交大台北 ADSL 換 IP Address" + }, + { + "id": "882", + "body": "問一下 Perl 上發展 Web 的 Framework 除了這幾個以外還有什麼嗎?另外就是問一下用的怎麼樣?因為在網路上看到來看去都是 RoR... :p\r\n", + "title": "Perl 上的 Web Framework" + }, + { + "id": "883", + "body": "這幾天在學術網路內查 tw.yahoo.com 會發現搬到其他地方了 (Akamai?),但是新的地點對國內的 routing 沒有設定好 (沒有直接的 peering 加上沒有人幫忙放 routing),於是造成了學術網路過去都是走國際線路...\r\n\r\n這個情況大約兩天了,到底什麼時候才會有人要解決 @_@", + "title": "tw.yahoo.com 的移動" + }, + { + "id": "884", + "body": "昨天跟 jonjon 的老婆,mcleefar 一起吃燒肉 (mclee 已經把照片丟上 Flickr 了:2006/11/09 貳兩),聊到 lighttpd 這套紅透半邊天的 Web Server 的時候,發現好像很多人都不知道 Jan KneschkeMySQL AB 上班,而且聽到後都還很意外 XD\r\n\r\nPS:關於 Jan Kneschke 比較完整的資料,請參考 about jan kneschke 這頁的說明。", + "title": "lighttpd 的作者" + }, + { + "id": "885", + "body": "1998 年的時候 Geoffrey D. Bennett 買了台 Toshiba 的筆記電腦,裡面附上 Microsoft Windows,他看過 EULA 後決定依照 EULA 內提供的退貨條款退掉 Microsoft Windows 並取回「微軟稅」,跟 Toshiba 的人打交道。後來他成功退掉這筆費用,將整個故事放到網路上:Toshiba/Microsoft Saga,這份看起來很長的英文故事有翻成中文版,叫做「東芝微軟戰記」:◆ 東芝微軟戰記。\r\n\r\n2006 年,微軟 依舊獨大,於是我們又看到了類似的故事:Dell Customer Gets Windows Refund,Dave Mitchell 從 Dell 取回 Microsoft Windows XP Home SP2 的微軟稅。\r\n\r\n來岔題...\r\n\r\n我很喜歡現在 X 下面的 Anti-Alias 效果,尤其是用 Firefox 看網站的時候超舒服,但我現在希望 rxvt 這類的應用程式也可以用,我應該去哪邊翻?", + "title": "為微軟稅而戰" + }, + { + "id": "886", + "body": "在 Slashdot 上看到這則讓人 XD 的報導:Slashdot Posting Bug Infuriates Haggard Admins。\r\n\r\nSlahsdot 的後端是 MySQL,Comment 都放在同一個 Table 裡面。一開始他們用 MEDIUMINT (224) 來放 Comment ID,在五年前的時候他們改成 Unsigned Integer (232),但是忘了改 Index 的部分,於是昨天就出問題了...\r\n\r\n在 MySQL 裡把 Index 改好其實也很簡單,只是一個 ALTER 指令,但是在一千多萬筆資料的 Table 裡重建 Index 最少要三個小時,所以只好發一篇文章跟大家道歉,因為為了轉換會關掉一些功能... XD", + "title": "Slashdot 的 Comment 數超過 MEDIUMINT 的限制" + }, + { + "id": "887", + "body": "也是昨天在吃燒肉時聊到的一個小話題,就是取機器名稱的學問... :p\r\n\r\n交大在蠻久前買了台 Cacheflow (現在叫 BlueCoat),買了後使用竹苗區網的 IP address,供竹苗區網用 (163.28.64.50),不知道當時為什麼取 CF.HCRC.edu.tw 這個名稱,幾乎每個月都會有被國內的網站 ban... :p (像是國內某個最大的網路書店已經殺了這台好幾次 @_@)\r\n\r\n後來我覺得這實在太糟糕了,寫封信問 cschen 能不能換成 proxy-cf.hcrc.edu.tw,至少對方的 MIS 覺得異常而去查反解的時候就會知道這是一台 proxy 而不會亂殺,如果他進一步連到 www.hcrc.edu.tw 時就會知道是竹苗區網中心的設備,量大應該是正常的 :p\r\n\r\n自從改名之後大家都過的很快樂,後來就沒聽到被 ban 的事情了... :p (yahoo 的 999 不算,那是機器發現可能是來亂的就會送)\r\n\r\n寫了那麼多,我就是要講 [公告] 無名小站遭受網路攻擊 這篇,我覺得這篇公告只是趁銀興的 RAID 還沒出貨前故意出來亂的...\r\n\r\ntp2rc.edu.tw 是台北第二區網中心 (政大),gate.tp2rc.edu.tw 是他們的 proxy server 之一 (參考 服務項目 裡面的列表),不過就算沒去查,看名字應該也會猜是 NAT 吧?\r\n\r\n另外一台是 proxxy.tajen.edu.tw,看名字也知道是打錯字。而 pc-120.nat.stut.edu.tw 不就跟你說是 NAT 了?至於最後面說「目前此攻擊仍然未停止」當然是廢話,人家是正常的流量當然不會停...\r\n\r\n感覺上這篇所謂的「公告」只是隨便翻個 log 找幾個量比較大的,然後丟出被攻擊的假象來把之前 wkwu 幹的事情帶過去。", + "title": "取機器名字的學問?" + }, + { + "id": "888", + "body": "這是 mlterm 裡中文字開 anti-alias 的審察砲彈,如果要看效果的話請點進去看大圖才看的出來:\r\n\r\n\"\"\r\n\r\n我拿 Ptt 的進站畫面來示範,可以看的出來 ANSI code 的部份還是有問題,照 mlterm - 多國語言終端機 這篇的說法,先開 screen 後再連線就會正常,不過我這邊開了 screen 還是會有問題... (centericq 的畫面就更慘了 :p) 要再看看要怎麼處理。\r\n\r\n附上幾個設定檔,先是 .mlterm/ 下的 font:\r\n
ISO8859_1 = --sony-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-1;\r\nBIG5 = -eten-fixed-medium-r-normal--16-150-75-75-c-160-big5.eten-0;\r\nISO10646_UCS4_1 = -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1;\r\nISO10646_UCS4_1_BIWIDTH = -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1;
\r\n再來是 .mlterm/ 下的 main:\r\n
bg_color=black\r\nfg_color=grey\r\ngeometry=100x35\r\nuse_anti_alias=true\r\nencoding=BIG-5\r\nfontsize=18\r\nscrollbar_mode=right
\r\n以及最後啟動的指令:\r\n
env LANG=zh_TW.Big5 mlterm -A
", + "title": "mlterm" + }, + { + "id": "890", + "body": "在 CNET 上看到英國政府修法將 DoS 攻擊列入非法行為:U.K. outlaws denial-of-service attacks。\r\n\r\n在 1990 年通過的 Computer Misuse Act (CMA) 是 Internet 剛起步所制訂的,當初在制訂並沒有考慮到 DoS (因為不流行),於是制訂時是以「不正當的途徑」為處罰的要件之一。\r\n\r\n在 2005 年的時候有人故意寄了大量的信件而被告,但在法院上解釋這不是未經授權的入侵行為,因為對方的確有提供服務提供使用,而法院認定這項行為並不構成 CMA 的觸犯條件,而促成了這次的修法。", + "title": "DoS 攻擊" + }, + { + "id": "891", + "body": "Matt 參加了在 Google 總部辦的 MySQL Camp,他記錄了一些重點可以參考:MySQL Camp Google Notes。\r\n\r\n除了一般簡單的分散技巧外 (所謂的二十六台 MySQL 密技?:p),另外還講了使用 master/slave 時應該要注意的問題,以及修改原始程式碼配合極短的 DNS TTL 達到很短的 downtime。", + "title": "MySQL 的使用" + }, + { + "id": "892", + "body": "昨天在 Slashdot 上看到法院認定 RIAA 誇大損失: Judge OKs Challenge To RIAA's $750-Per-Song Claim。\r\n\r\nRIAA 宣稱被告 Marie Lindor 所造成的損失是 $750 美金 (每首),但 Marie Lindor 則提出反駁,並提出證據指出事實上根本不超過 $0.7 美金,RIAA 再反駁說這是被告在瞎掰,但法官看過雙方所提出的證據後認為 RIAA 所提出的反駁沒有引用任何可信的佐證,而 Marie Lindor 所提出的有。\r\n\r\n台灣有實際上法院戰鬥 (我指的是沒有和解) 的案例嗎?", + "title": "RIAA 誇大損失" + }, + { + "id": "893", + "body": "Open Source 最重要的精神之一是「散佈的自由」(列在 The Open Source Definition 的第一項),但 微軟 這次跟 Novell 合作的授權條款是禁止散佈的:Microsoft's Patent Pledge \"Worse Than Useless\"。\r\n\r\n這次的授權內容只包括了 微軟NovellopenSUSE 可以互相使用對方的專利而不被告,但不得再散佈,於是這些使用微軟專利的軟體只能在 openSUSE 上跑,而不能在其他 Linux 平台上跑:(標粗體的部分)\r\n
Microsoft hereby covenants not to assert Microsoft Patents against each Individual Contributor (also referred to as “You”) for Your distribution of Your personally authored original work (“Original Work”) directly to openSUSE.org, but only if, and to the extent, (i) Your Original Work becomes part of SUSE Linux, SUSE Linux Enterprise Desktop or SUSE Linux Enterprise Server, and (ii) You ensure that as a result of Your contribution, openSUSE.org, and all further recipients of Your Original Work, do not receive any licenses, covenants or any other rights under any Microsoft intellectual property. This pledge is personal to You and does not apply to any use or distribution of Your Original Work by others.
\r\n授權內容請參考 微軟網站 上的 Community Commitments - Microsoft & Novell Interoperability Collaboration。", + "title": "Microsoft 與 Novell 沒有誠意的合作" + }, + { + "id": "895", + "body": "在 Dojo Charting Engine Released 這篇看到用 JavaScript 畫圖表的 Library,測試頁在 這裡。\r\n\r\n在 X31 上開感覺有點頓... 不知道圖表更複雜的時候會頓到什麼程度 XD", + "title": "用 JavaScript 畫圖表" + }, + { + "id": "896", + "body": "在 lighty 1.5.0 and linux-aio 這篇告訴大家 lighttpd 開始支援 async I/O 了。\r\n\r\nasync I/O 將 read request 丟給 kernel 後先去做其他事情,等到 kernel 處理完以後再用 callback routine 告訴 lighttpd 已經完成讀取。這使得 kernel 可以最佳化讀取的順序以達成 I/O 效率的提升,另外一方面 lighttpd 也可以趁機去做其他的事情。依照作者自己的測試,這使得 throughput 提升了 80%。而在作者在 Blog 上炫耀 Linux 上的 performance 大幅提升後,也有人 FreeBSD 上丟出 patch,接下來就是等待了... :p", + "title": "lighttpd 的 async I/O 支援" + }, + { + "id": "897", + "body": "這幾個禮拜遇到許多人事物,其中一些感想 :p\r\n\r\n啊,我在影射好多團體,別打我 :~", + "title": "雜感" + }, + { + "id": "898", + "body": "TalkPlus 開發了一個用 Java 寫的程式,你只要送個 text message 就可以安裝進你的手機裡。(當然,手機要支援 Java)\r\n\r\n原文在這裡:TalkPlus demo : Call to echo123 from a mobile without a Skype client。\r\n\r\n透過這個程式,你可以連上 Skype 直接打給任何在 Skype 上面的人直接講話,在 Demo 的影片中是撥給 echo123 這個 Skype 提供的測試帳號。\r\n\r\n我這幾天因為家裡的 ADSL 常常斷線,跟別人用 Skype 講事情時會故意上 CHT 3G 網路,雖然多了 160ms 的 latency,不過基本上沒有太嚴重的感覺。所以如果這個東西可以普及的話,一般有支援 Java 的手機就可以掛在 Skype 上了 :D", + "title": "在手機上用 Skype" + }, + { + "id": "899", + "body": "OpenSSL 除了是個 library 外,還提供了 CLI (command line interface) 操作,你可以透過 openssl 這隻程式對檔案加密解密。\r\n\r\n先輸入:\r\n
$ openssl help
\r\n由於沒有 help 這個指令,所以會出現可用指令列表。在 Cipher commands 會列出很多可用的 cipher,我個人偏好用 Blowfish CBC (bf-cbc),主要原因是速度非常快。\r\n\r\n加密的指令是:\r\n
$ openssl bf-cbc -in input.txt -out output.txt
\r\n輸入進去後就會問你要設定的密碼。而解開只要加上 -d,把 -in 改成加密後的檔案,-out 改成要輸出的檔案即可:\r\n
$ openssl bf-cbc -d -in output.txt -out input.txt.orig
\r\n然後輸入密碼解開,如果密碼錯誤會出現 bad decrypt 的錯誤訊息,接下來你可以用 cmp 或是 diff 比較檔案是不是一樣。\r\n\r\n接下來講比較實用的部分。最近 DreamHost 提供的硬碟空間愈來愈大了,於是你可以拿 DreamHost 來備份 (不要放到 www 目錄下),但你又不想直接把 .tar.gz 直接丟上去,這時候你就可以在壓縮的時候順便加密:\r\n
$ tar -zc -f - /backup/this/directory | openssl bf-cbc -k password -out mybackup-20061114.gz-bf-cbc
\r\n其中 -k 後面接的就是 key,而不指定 -in 代表從 stdin 讀入。\r\n\r\n如果你想要把檔案拆小一點,可以把 -out 拿掉 (表示從 stdout 輸出),再 pipe 給 split 切開。(也許切成 600MB 再燒成光碟?)", + "title": "用 OpenSSL 加密/解密" + }, + { + "id": "900", + "body": "在 PhpBB’s Casino Links 看到 phpBB 官方網站上放置的 Spam Link 被揭露出來:\r\n\r\n\"\"\r\n\r\n其實國內的 Lifetype 社群網站 也是:(看原始大小的圖,最下面的 link 就是)\r\n\r\n\"\"\r\n\r\n另外一個問題是,awoo.com.tw 曾經找過國內不少 PageRank 比較高的 Blogger,開價 $50000/year 在 PageRank = 5 的站買五個 link,在 PageRank = 6 的站上則是開價 $60000/year,PageRank = 7 的站上則是 $70000/year (餘此類推),但我在 mailing list 與 forum 上並沒有看到這筆錢的情況,在 forum 上問也被忽略了:關於首頁的 SEO 連結。\r\n\r\n所幸的是,用 link:www.awoo.com.tw 到各搜尋引擎找會發現 Google 已經把 www.awoo.com.tw 排除 (nice job!),所以能找到的筆數非常少,而 Yahoo! SearchMSN Search 會告訴你國內的 Blogger 也只有 NeoMark 在自己的 Blog 上放 SEO Spam Link。", + "title": "網站的 Spam Link" + }, + { + "id": "901", + "body": "在 Boing Boing 上看到「安裝錯誤」的畫面:Weird screenshot of failed Zune install。\r\n\r\n\"\"\r\n\r\n這是 Microsoft 的惡趣味嗎 XD", + "title": "Zune 的安裝畫面" + }, + { + "id": "902", + "body": "把自己的桌機換成 FreeBSD 7.0-CURRENT,準備測一些最近 FreeBSD team 在發展的東西,另外也比較方便測試 ports 是否能在 7.0-CURRENT 上安裝...\r\n\r\n不過升級完以後發現比起 6.x 慢相當多,要看看還有什麼地方可以調整的... (kernel 裡可以拿掉的 debug options 都拿掉了,留下 {D,G,K}DB 要在踩到地雷時看是踩到那個 bug)", + "title": "FreeBSD 7-current" + }, + { + "id": "903", + "body": "上個禮拜在 Paid Blog Posts? 這篇文章裡看到一張圖,關於收錢寫 Review 的事情:\r\n\r\n\"\"\r\n\r\n當不斷的罵新聞報導大量置入性行銷的時候,為什麼不反過來看看國內的 Blogger 圈?我們可以看到國內許多人對於這類 PayPerPost 置入性行銷的服務反而相當開心。\r\n\r\n在 WordPress.comTOS 裡甚至特地以藍底標示出他們禁止這類行為:\r\n
the Content is not spam, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing);
\r\n大胖子 ScobleWordPress.comTOS 說:\r\n
This is a good thing for Wordpress to do. Why? It protects its reputation. PayPerPost is a way to game search engines. If you want to do that, take your blog somewhere else and protect those of us who aren’t willing to do that.
", + "title": "收錢寫 Review?" + }, + { + "id": "904", + "body": "這幾天試著用 SVK 看看能夠做什麼事情,其中一個簡單好用的功能是自己建立 local repository 自己用,但是不用像 subversion 另外架設 apache server 或是跑 svnserve。在 ports 裝完 svk 後,這是一些筆記內容:\r\n
$ svk mkdir //local/myproject
\r\n第一次跑的時候會告訴你 ~/.svk/local 不存在,問你是否要建立,選 yes 建立後就可以 checkout 這個目錄:\r\n
$ svk checkout //local/myproject myproject
\r\nsvk checkout 的東西不像 svn 會有 .svn 的目錄,感覺乾淨多了。接下來就進入 myproject 目錄改東西加東西,改完就如同 svn 一樣,用 add 指令加進去:(當然你也可以用 import 這個指令)\r\n
$ svk add Makefile *.c
\r\n然後 commit:\r\n
$ svk commit
\r\n輸入 commit log 以後就塞進去了。", + "title": "SVK" + }, + { + "id": "905", + "body": "一個月前我在 Simon Willison 的 Blog 上看到他利用 TamperData 這個 Firefox Addons 觀察 HTTP 抓取的 Timeline:Graphing requests with Tamper Data,除了傳統的表格外,他還有圖可以直接看,整個頁面的抓取流程相當的清楚。像是 blog.gslin.org 首頁的情況:\r\n\r\n\"\"\r\n\r\n前陣子我在某個人的 Blog 上看到想要分析 HTTP 抓取的時間分析時有提到有這樣的東西,可是我忘記軟體的名稱了 (而且當時我也忘了是在 Simon Willison 的 Blog 上看到的),只好寫一篇記錄下來... :p", + "title": "TamperData" + }, + { + "id": "907", + "body": "由於幹活需要,晚上十一點多回到家就裝了台 Debian 起來,透過 apt 的幫忙 (以及 Google 大神相助),弄到三點多的時候就差不多把需要的東西都弄好了,有個 PPPoE 的問題在網路上沒找到解答,記錄下來問問看...\r\n\r\n用 pppoeconf 設定好後可以生出 ppp0,也可以用 pon 撥上去,但是撥上後卻沒有設定 default routing。用 Google 找發現要設定 \"defaultroute\" (有些文件有提到當已經存在 default route 的時候還要設 \"replacedefaultroute\"),但看了一下 /etc/ppp/options 發現沒有這兩個指令 (暗示著系統不認得這兩個指令),於是只好自己寫個 script 到 /etc/ppp/if-up.d/ 下,在連線建立後設定 default route。不過這樣感覺怪怪的,有什麼建議嗎?", + "title": "Debian 3.1" + }, + { + "id": "908", + "body": "每次要更新都要跑 Google 找一堆指令的順序,剛剛找到篇 11/22 才寫的文章,已經被 Google 收起來了:How To Compile A Kernel。\r\n\r\n不過剛剛開起來就 panic 跟我說找不到 root,再去研究看看好了... :p\r\n\r\nUpdate:補充一下,在解開 kernel 的目錄下 make help 可以看到可用指令的說明。", + "title": "Recompile Linux Kernel" + }, + { + "id": "910", + "body": "應該還不是「正確」的方法 (因為 apt-cache search linux-source 時還看到 linux-patch-debian-2.6.18 與 linux-tree-2.6.18 這兩個套件),不過先記下來好了:\r\n
$ apt-get install linux-source-2.6.18\r\n$ apt-get install kernel-patch-grsecurity2 (這是 grsecurity patch)\r\n$ cd /usr/src\r\n$ tar yxf linux-source-2.6.18.tar.bz2\r\n$ cd linux-source-2.6.18\r\n$ zcat ../kernel-patches/diffs/grsecurity2/grsecurity-2.1.9-2.6.18.1.patch.gz | sudo patch -p1\r\n$ sudo make menuconfig\r\n$ sudo make all (其中 all = vmlinux modules bzImage,參考 make help 的說明)\r\n$ sudo make install\r\n$ sudo modules_install\r\n$ cd /boot\r\n$ sudo mkinitrd -o initrd.img-2.6.18-grsec 2.6.18-grsec\r\n$ sudo update-grub\r\n$ cd grub\r\n$ vim menu.lst (把 initrd 的部分補上去)
\r\nUpdate:yjchou 說 linux-source-2.6.18 這是已經經過 Debian 處理過的版本了,在網頁說明上也有提到:\r\n
This package provides source code for the Linux kernel version 2.6.18. This source closely tracks official Linux kernel releases. Debian's modifications to that source consist of security fixes, bug fixes, and features that have already been (or we believe will be) accepted by the upstream maintainers.
\r\n我沒有炸掉純粹是運氣好選對了 @_@", + "title": "Recompile Linux Kernel in Debian" + }, + { + "id": "911", + "body": "因為要 Team Work,所以決定用 FreeMind 這套 Java 寫的 Open Source Mind-Mapping Software 來畫一些圖 (還特地去裝了 JRE,之前 Notebook 上都沒裝... :p),隨手思考 D2 E-mail System 的架構,玩了幾下後發現還不差,這是輸出成 PNG 格式的樣子,點進去後可以找大圖看細節:\r\n\r\n\"\"\r\n\r\n晚點就是 mm 檔 (FreeMind 的輸出格式) 丟來丟去了 :p", + "title": "FreeMind" + }, + { + "id": "912", + "body": "在 Slashdot 上看到加拿大的八個 ISP (Bell Aliant, Bell Canada, MTS Allstream, Rogers, SaskTel, Shaw, TELUS, and Videotron) 宣佈將使用 Cybertip.ca 所建立的名單過濾兒童色的網路內容:The Great Firewall of Canada。\r\n\r\n未成年色情屬於國際公認禁止的項目之一。反對者並不是反對「過濾 Child Porn」這件事情,而是反對「ISP 自行過濾 Child Porn」,他們認為網站的建立屬於言論自由的一種,也就是人的基本權利,電信業者要過濾必須有法律授權,而不應該由 ISP 直接過濾。換句話說,他們認為應該要用「對的方法」做「對的事情」,而 ISP 自行主動過濾 Child Porn 不屬於「對的方法」,因為有了這樣的前例後,這套設備非常容易找個理由並轉移淪為侵害 Net Neutrality 的幫兇。", + "title": "加拿大建立 Great Firewall" + }, + { + "id": "913", + "body": "其實 FreeMind 的東西是另外一位長輩一邊用 Skype 介紹 MindManager (FreeMind 也是他提到的),然後透過 TightVNC Client 操作給我跟另外一位長輩看,整個效果其實相當不錯... :p\r\n\r\nTightVNC 剛好有些可以設定的地方,第一個是 View Only 的選項,可以純粹看畫面用,另外一個是 Scale (Resize) 的功能,我用 Notebook (1024x768) 連過去 (1280x1024) 的時候設成 4/5 差不多可以看到整個畫面:\r\n\r\n\"\"\r\n\r\n另外的小細節是是開 Skype Conference 的人儘量不要跟開 VNC Server 的人同一個,一方面是 CPU resource,另外一方面是 Network bandwidth。", + "title": "TightVNC Client + Skype" + }, + { + "id": "914", + "body": "portnoy 這篇 網摘,還是置入性行銷2.0? 說:\r\n
(11/24補)真的知道什麼叫naked conversation嗎??真的知道怎麼透過blog結合新聞聯播與網摘嗎?知道什麼叫做部落格行銷的地雷嗎?如果不知道又要怎麼去當人家的老師呢?難道真的要這顆地雷徹底爆炸嗎?
\r\n(原文有附上圖,我這邊就不連了)\r\n\r\n這群人是把網路當作生財工具,只要不犯法,什麼都能做,什麼都會做。就如同記者,是以最低的標準約束自己,以最高的標準批評別人。", + "title": "置入性行銷 2.0" + }, + { + "id": "915", + "body": "多張檔案上傳 (用 Browser) 一直是 Zooomr 沒解決的問題,每次選了五六個檔案傳,就發現只傳了兩張上去,而且兩張都一樣的... (都是第一張)\r\n\r\n其他家 (Flickr23HQ) 就沒有這個問題... 用 Zooomr 感覺上很像在用無賴小站國際版... :p", + "title": "Zooomr 的上傳" + }, + { + "id": "916", + "body": "從凌晨開始,HiNet交大 連線的三條 Gigabit 線路都斷掉:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n依照 交大 的網路架構,如果 HiNet交大 的連線斷掉,就會改走 交大教育部電算中心 的連線,問題是這條線路只有 1Gbps...\r\n\r\n\"\"\r\n\r\n於是 教育部電算中心HiNet 的使用頻寬就往上漲:(但當然不會爆,因為 交大 這邊卡在 1Gbps)\r\n\r\n\"\"\r\n\r\n(這張可以在 http://mrtg.moe.edu.tw/isps/ 看到)\r\n\r\n可以看出來到剛剛才修好 :p", + "title": "斷好久的網路" + }, + { + "id": "917", + "body": "在 蔡依林del.icio.us 上看到有篇文章在講 GraphViz 的用法:Automate the creation of graphs with Graphviz,拿前幾天用 FreeMind 畫的 D2 架構再畫一次:\r\n\r\n\"\"\r\n\r\n(點進去看最大張的圖)\r\n\r\n附上 d2.gv,上圖是用 dot -Tpng -o d2.png d2.gv 產生出來的:\r\n
digraph G {\r\n    \"D2 E-mail System\"->{\"Users\" \"Department\"};\r\n    \"Users\"->\"Basic Data\";\r\n    \"Users\"->\"Student Number\";\r\n    \"Users\"->\"Student Department\"->\"Department\";\r\n    \"Users\"->\"Username\";\r\n    \"Users\"->\"Password\";\r\n    \"Users\"->\"Forwarding E-mail\";\r\n    \"Users\"->\"Quota\";\r\n    \"Users\"->\"Creation Date\";\r\n    \"Users\"->\"Creation IP\";\r\n    \"Users\"->\"Last Login Date\";\r\n    \"Users\"->\"Last Login IP\";\r\n    \"Basic Data\"->\"ID\";\r\n    \"Basic Data\"->\"Real Name\";\r\n    \"Basic Data\"->\"Permanent Address\";\r\n    \"Basic Data\"->\"Permanent Telephone\";\r\n    \"Basic Data\"->\"Contact Address\";\r\n    \"Basic Data\"->\"Contact Telephone\";\r\n    \"Basic Data\"->\"Mobile Telephone\";\r\n    \"Department\"->\"Number\";\r\n    \"Department\"->\"Abbr\";\r\n    \"Department\"->\"Description\";\r\n}
", + "title": "GraphViz" + }, + { + "id": "918", + "body": "無意間看到 upload.wretch.cc 之前用 lighttpdSite report for upload.wretch.cc。\r\n\r\n不過現在又換回 Apache 了... :p", + "title": "lighttpd" + }, + { + "id": "919", + "body": "最近可以在各看板/Blog 上看到的作品 (像是 我敗自eBay 中文字幕版White & Nerdy 中文字幕版) 都是出自 \"Weird Al\" Yankovic 之手。在 Wikipedia 上的介紹很完整,如果要看其他作品可以去 Youtube 上翻... :p\r\n\r\nUpdate:發現在 中央大學林文淇「英文歌曲試聽室」歌曲總匯 這頁也有一些... XD", + "title": "\"Weird Al\" Yankovic" + }, + { + "id": "920", + "body": "Google 對澳大利亞的新的著作權法提出質疑,新的法案會造成 Search Engine 必須先取得網站負責人的同意才能 index 與 archive,這與現有的架構相反:\r\n", + "title": "澳洲的新著作權法" + }, + { + "id": "921", + "body": "工具要正確的被使用才有效果。\r\n\r\n傳統只輸入密碼的方式有時被稱做 One-factor authentication,因為 Two-factor authentication 是指兩種以上的認證,通常是透過 USB 外接 Smart card 讀卡機用卡片另外做認證。\r\n\r\n美國網路銀行將身份檢查的部分改用 Two-factor authentication 進行認證,希望可以對抗 Phishing (網路釣魚)。問題這樣還是會受到 Man-in-the-middle-attack 與 Trojan (木馬) 的攻擊。\r\n\r\n以 Smart card 作為 Two-factor authentication 的架構來說,Man-in-the-middle-attack 攻擊是在使用者瀏覽釣魚頁面時去原來的網路銀行上抓 Two-factor authentication 所需要的 Message,傳給使用者後讓使用者認證。使用者認證完 (密碼以及 Smart card 對 Message 的數位簽名) 送回釣魚頁面,釣魚頁面再送回原來銀行網頁,完成認證的動作,接下來開始把錢轉帳到其他戶頭去。這也就是 Bruce Schneier 這篇 Fighting Fraudulent Transactions 提到美國銀行以及政府所使用的 Two-factor authentication 無法保護使用者。\r\n\r\n但這並不是 Two-factor authentication 有問題,而是因為把 Two-factor authentication 用在錯的地方上。台灣的網路銀行在這點上面做的 Two-factor authentication 就是正確的方式。\r\n\r\n以「轉帳」為例,你必須有一台 Smart card 讀卡機,由銀行產生 Message (在裡面會包括要轉出的戶頭,以及轉入的戶頭,金額,以及一個流水號),讓晶片卡去這個 Message,然後傳回網路銀行驗證。\r\n\r\n重點在於 Two-factor authentication 必須用在每個交易動作上,而不是只用在一開始的認證:\r\n
The solution is not to better authenticate the person, but to authenticate the transaction. (Think credit cards. No one checks your signature. They really don't care if you're you. They maintain security by authenticating the transactions.)\r\n(解決的方法並不是尋找更好的方法「驗證使用者」,而是「驗證交易本身」。想想信用卡怎麼做的,沒有人會檢查你的簽名,他們根本不在乎是你本人,因為他們是透過信用卡對每一項交易動作進行認證,以維護安全。)
", + "title": "Two-factor authentication" + }, + { + "id": "922", + "body": "在 Google Parking Lot 看到的圖:\r\n\r\n\"\"\r\n\r\n我喜歡那張 GNU CAR... :p", + "title": "Google 停車場" + }, + { + "id": "923", + "body": "在 RMS transcript on GPLv3, Novell/MS, Tivo and more 看到 RMS5th international GPLv3 conference 上對標題上的那些東西的談話,晚點來看:Transcript of Richard Stallman at the 5th international GPLv3 conference; 21st November 2006。", + "title": "RMS 對於 GPLv3、Novell/MS、Tivo 的談話" + }, + { + "id": "924", + "body": "當初一開始出來的時候就覺得亂排一通,數字稍微有點變化就會造成排名急遽上升 (或下降... XD),昨天在 IRC 上突然在講這個,回去看開發人的 Blog 發現計算方式:[部落格觀察] 計算方式大揭密。\r\n\r\nOh my god,直接拿不同單位的數量互加,到底有沒有人知道什麼是 Normal Distribution 啊...\r\n\r\n錯誤的政策比什麼都不做還糟糕,套到這裡完全適用。拿著錯誤的公式向大家炫耀「這邊有個台灣 Blog 排名」,比起什麼都沒有還糟糕。\r\n\r\nUpdate:因為維護者根本看不懂他的問題在哪裡,所以...\r\n\r\n「排名」要做的看起來「有樣子」當然很容易,你只要不要把正的搞成負的,那麼 彎彎蔡依林的部落格zonble 的部落格 當然會排在前面,因為他們所有的分數本來就比起其他人高,你公式不管怎麼代都會在前面。\r\n\r\n但是要搞到「正確」,麻煩回去看看統計學的書,然後看看 Technorati 怎麼做。\r\n\r\nPS:Blog Influence 基本上也是個笑話,所以...。", + "title": "部落格排名?" + }, + { + "id": "926", + "body": "看完某些白癡文章討論後,實在很想罵...\r\n
設計 Album/Blog 系統,沒人會考慮同時用核彈炸掉你三個機房的情況 !@#$%^
", + "title": "核爆" + }, + { + "id": "927", + "body": "作業五 請於 2007 年 1 月 4 號繳交。:\r\n
Linux USB Disk 探測程式\r\n於 Linux 系統中,撰寫一可偵測 USB 隨身碟裝置功能之程式,
", + "title": "「網路程式設計」的期中作業" + }, + { + "id": "928", + "body": "Bittorrent.com 又騙到兩千萬美金了:BitTorrent Gets $20 million。\r\n\r\n這告訴我們炒股票才是王道啊!(errr)", + "title": "Bittorrent.com" + }, + { + "id": "929", + "body": "美國貿易代表處 (USTR) 在十一月月中的時候透過 WTO 的協議,要求俄羅斯將境內的 AllOfMP3.com 關閉:Russia Agrees To US Request To Shut Down AllofMP3.com。\r\n\r\n不過既然在俄羅斯國內都沒辦法動 AllOfMP3.com 了,透過 WTO 協議大概也沒什麼用:一種是法律根本不認為這是非法行為,另外一種是人家後台硬到不行,沒人敢動...", + "title": "AllOfMP3.com" + }, + { + "id": "930", + "body": "人的貪心是無止盡的:Million Dollar Homepage Becomes Multi-Million Dollar Homepage,百萬美元網站決定再搞一次,這次把每個 pixel 調高為 $2,然後送出一百萬美元給按下某個正確的 pixel 的人...。", + "title": "百萬美元廣告 II" + }, + { + "id": "931", + "body": "用 <pre></pre> 如果遇到文字過長的時候就會炸掉,所以我 Blog 上偶爾會因為我貼 code 發生慘劇 (因為也不知道怎麼解),結果剛剛在 Wrapping the pre tag 這篇看到解法:\r\n
pre {\r\n white-space: pre-wrap;       /* css-3 */\r\n white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */\r\n white-space: -pre-wrap;      /* Opera 4-6 */\r\n white-space: -o-pre-wrap;    /* Opera 7 */\r\n word-wrap: break-word;       /* Internet Explorer 5.5+ */\r\n}
\r\n有 CSS3 的就以第一條支援 (在 CSS 2.1 裡也有),Mozilla 系列以第二條,Opera 以第三與第四條,最後則是處理 IE。", + "title": "pre 裡的換行" + }, + { + "id": "933", + "body": "引自 Chief Seattle:\r\n
The newest version bears little resemblance to the old one. It is the work of Ted Perry, a scriptwriter for a 1972 film about ecology called Home. This version casts Chief Seattle as an early ecological visionary, speaking of the insights of his people into the workings of nature. It led to his becoming a role model of the environmental movement (rightfully or not). A shortened rendering of the third version is also circulating.
", + "title": "Chief Seattle's Reply" + }, + { + "id": "934", + "body": "\"\" EveryDNS 是一個免費的 DNS Hosting (當你需要 Hosting 比較多 Domain 時也有付費的選擇可以讓你用),功能不多 (不能設定 TXT,這樣就沒有辦法設定 DomainKeys 以及 SPF),但對於一般使用來說已經相當夠用。\r\n\r\n有不少的 DNS 都是放到 EveryDNS 上,像是我的 gslin.org (完全讓 EveryDNS 管) 以及蔡依林的 ijliao.info (EveryDNS 只是扮演 slave 的角色)。\r\n\r\n昨天 EveryDNS 發生問題,因為四台 DNS 主機都被 DDoS 打爛了:EveryDNS Under Botnet DDoS Attack,在 EveryDNS News 這頁也可以看到說明。", + "title": "EveryDNS 被攻擊" + }, + { + "id": "935", + "body": "\"\"Internet Archive 在軟體的部份將不受 DMCA 對於軟體的限制,允許 Internet Archive 將不在市面上流通的軟體的防盜拷限制破解後保存下來:Internet Archive Gets DMCA Exemption,原報導在這:Internet Archive Helps Secure Exemption To The Digital Millennium Copyright Act。", + "title": "Internet Archive 取得軟體部份的排除授權" + }, + { + "id": "936", + "body": "SlashdotCracking the BlackBerry with a $100 Key 這篇是說任何一個人都可以花 $100 (美金) 買 Developer Key 用來簽自己寫的程式,然後在 黑梅機 裡面幹任何事情,像是幫別人送送 SMS,發發廣告信,把私人信件傳給別人之類的...。原報導是在 Symantec 的 Security Response Blog 上發表的 Hacking the Blackberry。\r\n\r\n這個案例告訴我們:你不能認為付費的開發者就是好人。\r\n\r\n那為什麼這篇會放到 \"Blog\" 這個 Category?因為 無名小站 也做了同樣的蠢事,他們認為付費的 VIP 使用者所放的 Javascript 是沒有問題的:JavaScript 調整說明。", + "title": "安全性問題" + }, + { + "id": "937", + "body": "雖然 Wiki 也可以拿來討論,不過畢竟不是專門討論的軟體,所以在 IRC 上詢問過 蔡依林長輩 的意見後,還是決定架了一個論壇讓粉絲們可以進來聊... :p\r\n\r\n我對 phpBB 頗感冒,一方面是安全性問題,另外一方面是 網站的 Spam Link 這個,即使在揭露後還是不管,繼續放 Spam Link。(剛剛去看 Lifetype Taiwan 的首頁,也還是放著)\r\n\r\n既然不使用 phpBB 的話,就要另外找了。我先前在 µTorrent 那邊發現他們用 PunBB,看起來還蠻好用的。當時發現 FreeBSD ports 裡還沒有放,就塞了一份進 www/punbb,現在剛好是拿出來用的時候... :p\r\n\r\n目前已經架好了,不過要等 pestyforum.yichi.org 指過去,如果要先晃晃的話可以設定 hosts,將 forum.yichi.org 指到 72.36.224.226。", + "title": "論壇" + }, + { + "id": "938", + "body": "學弟 ronnywang 去當兵後,接任的學弟完全不管事,只負責千篇一律的對於每個寫信到 mailadm at nctu.edu.tw 的詢問者回答官樣文章:\r\n
D2 為了提供更穩定的服務以及空間,目前正在搬移至硬碟陣列中,預計需要搬移約兩天,但是搬移過程並不會影響到使用者信箱上的使用,期間仍可正常收信發信。\r\n\r\nWebmail Horde 部分可能暫時無法刪除信件,請到 [選項] => [伺服器及信件匣資訊] => 將垃圾箱選為 trash,請盡量不要改成其他信件夾,因為其他信件夾名稱就不會有 30 天自己刪除的功能了。\r\n\r\n有其他問題請寄信至 mailadm@nctu.edu.tw 與我們連絡
\r\n結果鬧來鬧去最後鬧到我頭上,滿肚子大便... 幹幹幹!", + "title": "D2 信箱" + }, + { + "id": "939", + "body": "因為有訂學長的 comment feed,所以剛剛發現天空把 blog.yam.com 上的文章重送一次:拂曉的微風:新竹遠百的麻布茶房 - Yam天空部落。\r\n\r\n不過會想要寫一篇講的原因是因為看到 \"Kramer auto Pingback\" 這行,這是說天空的系統是用 WordPress 改的嗎?看 html source 似乎有點樣子?\r\n\r\nUpdate:學長說:\r\n
08:12 <@Blake> gslin: 那個 Karmer auto pingback 這個是我裝的 plugin, 只要有人從某個連結過來, 它就會自動補在 comment 處
", + "title": "天空重送 Trackback/Pingback" + }, + { + "id": "940", + "body": "在 Boing Boing 上看到的無恥笑話 XD (Undead musicians petition UK govt for more copyright)\r\n\r\n前幾天在英國的 UK's Financial Times 上有一則廣告,廣告內列出了四千位音樂工作者向英國政府請願,希望將錄音著作的有效期從五十年延長為九十五年。而 Creative Commons 的發起人 (也還是現任大魔頭) Lawrence Lessig 發現這份表上面居然有已經過世的人簽署?於是他就寫了一篇很機車的 Ok, so I’m wrong 這篇文章挖苦 XD\r\n\r\nUpdate南宮博士 這篇 [copyright] 版權的觀念是一種發明物 也可以看一看 :p", + "title": "英國的音樂著作延伸年限請願" + }, + { + "id": "941", + "body": "EMIYahoo! Music 合作,嘗試在線上網站上賣不含 DRM 的音樂,試著瞭解 DRM-free 的市場有多大,值不值得投資下去:EMI Experiments With DRM-free MP3's。", + "title": "EMI 嘗試販賣不含 DRM 的音樂" + }, + { + "id": "943", + "body": "最近天氣比較冷了,請多照顧自己的身體。", + "title": "給所有的人..." + }, + { + "id": "944", + "body": "在 WordPress 2.1 Database Changes 看到 WordPress 2.1 會改變本來 backward-compatible 的資料庫的存取方式 (直接指定 table name,而不是透過 $wpdb 抓 table name),這使得用舊方法的 Plugin 與 Theme 會出問題。\r\n\r\n對於一般使用 release tarball 安裝的人應該沒有差,需要注意的人是從 SVN 版更新的。\r\n\r\n完整的說明可以參考 WordPress 開發 Blog 上的 Is your plugin Naughty or Nice? 這篇。", + "title": "WordPress 的資料庫架構更新" + }, + { + "id": "946", + "body": "Jason Calacanis 前幾天想要知道像 Digg 這種站台有沒有人專門 submit 商業廣告,然後付錢請人「推」上去,於是他決定在 Blog 上問,他會保密,並提供 $100 美金給提供資訊 (而且可以驗證是真的) 的人:digg users are getting paid--just not by diggOut the social news scammers (and take a C note off the table)。\r\n\r\n結果短短的一天內就有人報料給 Jason Calacanis,而且資料相當完整,$100 馬上就給出去了 :p 他把拿到的這份內容整理後再抓了一些 screenshot 寫了這篇:First digg scam outed? Please help me confirm.。(這篇更新了好幾次,更新的內容在最上面的 Update)\r\n\r\nNice job :p", + "title": "Digg 上的 PayPerDigg" + }, + { + "id": "947", + "body": "JeffHungBlock Snap Preview Anywhere™ 這篇提供方法給使用 Adblock (以及 Adblock Plus) 的使用者擋掉強姦使用者的 Snap Preview:\r\n
http://spa.snap.com/snap_preview_anywhere.js?*
\r\n我之前是直接把 snap.com 給閹了,不過這個方法很明顯比較好,要去 snap.com 找資料還可以找...", + "title": "把 Snap Preview Anywhere 擋掉" + }, + { + "id": "948", + "body": "寫 code 的窗雖然有掛 screen,不過線路一直斷還是很苦啊...\r\n\r\n\"\"\r\n\r\n下雨天 ADSL 不穩定,結果 3G 的路由好像也有問題... 難道要換撥接了嗎 @_@", + "title": "線路不穩定" + }, + { + "id": "949", + "body": "來猜測這批幾乎是免費贈送的 FON 最後會發生的事情:整台機器完整的被破解,有人寫專屬 Client 去官方網站上自動更新狀態,但是機器卻被拿來自己用。", + "title": "FON" + }, + { + "id": "950", + "body": "如果你拿了 PayPerPost 的錢寫文章卻不揭露的話是違法的:FTC Moves to Unmask Word-of-Mouth Marketing。\r\n\r\n其實要避開就把整家公司搬到台灣來... (errr)", + "title": "PayPerPost 在美國..." + }, + { + "id": "951", + "body": "在 mailing list 上看到 libTorrent 0.11.0 與 rTorrent 0.7.0 出版了:[Libtorrent-devel] LibTorrent 0.11.0 and rTorrent 0.7.0 released,可以上 encryption 了 :p", + "title": "libTorrent 0.11.0 與 rTorrent 0.7.0" + }, + { + "id": "952", + "body": "裝了 trunk 版本的 Firefox,有些東西不相容 (其實也只有 Google Web Accelerator 不相容),有些地方怪怪的 (像是在編輯的時候游標位置稍微偏掉),不過大致上還好 :p\r\n\r\n當然,既然裝了 trunk 版的,一定要來抓一張 ACID2 跑出來的結果啦:\r\n\r\n\"\"\r\n\r\nUpdate:最直接的感覺是記憶體的量減少超多,我開了快三十個 tab (都是一堆文字一堆圖的 RSS 新聞站台,從 Bloglines 點出來的),結果還吃不到 100MB。", + "title": "Firefox (trunk)" + }, + { + "id": "953", + "body": "... 來自 Yahoo! IE7 的頁面。\r\n\r\nTechcrunchGoogle Copies IE7 Promo Material From YahooJeremy ZawodnyGoogle Blatantly Copies Yahoo!? 講到 Google IE7 下載頁面的圖幾乎跟 Yahoo! IE7 一樣,除了紅色的 Y! 以外:\r\n\r\n\"\"\r\n\r\n如果你放大 Google IE7 的圖,你會發現有淡淡的紅色在某個位置上... :p\r\n\r\n\"\"\r\n\r\n在被爆破後六個小時內,Google 就把圖換掉了,所以你現在看到的不是原來的圖。", + "title": "Google IE7 的頁面..." + }, + { + "id": "954", + "body": "在 Google Patent Search Released 看到 Google 推出專利搜尋引擎:Google Patent,將 USPTO 裡的專利資料都塞進去供人搜尋。\r\n\r\n搜尋的便利性以及品質比起 USPTO 的好多了,對於 Slashdot 的嘴砲魔人應該有蠻大的幫助 XD", + "title": "Google Patent" + }, + { + "id": "955", + "body": "FOXSCAPE Theme:\r\n\r\n\"\"\r\n\r\n好懷古呢... (連 icon 都故意設計成 16 colors?XD)", + "title": "FOXSCAPE" + }, + { + "id": "956", + "body": "在 Microsoft.com is updated 看到 Microsoft.com 的首頁改版了,用 IE7 抓了張 screenshot 下來:\r\n\r\n\"\"\r\n\r\n看起來就只是個改版而已,沒什麼感覺 :o", + "title": "Microsoft.com 首頁改版" + }, + { + "id": "957", + "body": "最近在 mipsel 平台上面發展一些東西,不過 cross-compile 的問題多到爆炸,決定用 QEMU 搞個純 mipsel 的環境出來 compile,省得 cross-compile 有一堆問題要解決,於是就找到這篇蠻新的文章:Debian on an emulated MIPS(EL) machine。\r\n\r\n當時 FreeBSD ports 裡的版本是 11/02 cvs,雖然已經蠻新的 (比起七月的 0.8.2),不過 QEMU mips/mipsel 在十一月月初的版本仍然是跑不起來的,因為月中的時候才大修 mips/mipsel code 把開機的部份搞定。這幾天 maintainer 更新了 ports,趕緊裝起來測試,果然可以用,把一些簡單的軟體 compile 後的 static binary 丟到測試機上果然沒問題 :D\r\n\r\n接下來可以來測試很多東西了... :p", + "title": "QEMU" + }, + { + "id": "958", + "body": "在 FTC 殺出來喊話後 (參考 PayPerPost 在美國... 這篇),PayPerPost 發公告要求作者必須揭露利害關係,但 Techcrunch 仍然不滿意:PayPerPost Does Something Right。\r\n\r\nTechcrunch 的文章裡提到,廣告主仍然可以要求作者寫正面的評價,另外一方面,作者可以自己選擇揭露的方式 (可以不用直接在文章裡面揭露,而是在站台資訊或其他地方揭露,可以避開法律問題但又可以隱藏拿錢的事實),感覺上這次公告的內容只是為了應付 FTC。\r\n\r\n剛好,李怡志 昨天寫的 記者必自辱然後人辱之 裡提到的 Ethical Journalism Guidebook 也頗適合拿來與 PayPerPost 這類站台成立的目的相對應。", + "title": "PayPerPost 要求作者必須揭露利害關係" + }, + { + "id": "959", + "body": "在 Slashdot 上看到 ORDB 將在月底結束營業的消息:ORDB.org Going Offline,官方的公告在 ORDB.org is shutting down 這篇,預定 2006 年年底全部關閉,屆時網頁也無法連上,所以放一份公告在最後面吧。\r\n\r\nORDB 是一項免費卻擁有接近 0% 誤判的 DNSBL 服務,ORDB 讓使用者輸入要求偵測的 IP address,然後 ORDB 就會以程式自動偵測是否為 Open Relay 然後列入名單。\r\n\r\nOpen Relay 對於發廣告信的人是成本最低的方式,但由於有 ORDB 存在,對於想要擋的人也是最容易阻擋的方式。參考我之前寫過的 擋 mail spam 這篇。\r\n\r\n利用 ORDB 擋正規的 Mail Server,再利用 Greylisting 擋直接連線到 SMTP server 但不正規的 Mail Client 是目前前端最好的方法:幾乎 0 的誤判率但是阻擋的比率又高。在 KKcity 上面這樣做可以讓後面實際的 Mail Server 省很多資源。\r\n\r\n現在只好靠 SpamCop 了,不過偶而會有使用者把從 gmail.com 的信件丟進去然後就誤判了...\r\n\r\nPS:這是公告內容:\r\n
We regret to inform you that ORDB.org, at the ripe age of five and a half, is shutting down. It's been a case of a long goodbye as very little work has gone into maintaining ORDB for a while. Our volunteer staff has been pre-occupied with other aspects of their lives. In addition, the general consensus within the team is that open relay RBLs are no longer the most effective way of preventing spam from entering your network as spammers have changed tactics in recent years, as have the anti-spam community.\r\n\r\nWe encourage system owners to remove ORDB checks from their mailers immediately and start investigating alternative methods of spam filtering. We recommend a combination involving greylisting and content-based analysis (such as the dspam project, bmf or Spam Assassin).\r\n\r\nDNS and the mailing lists will vanish today, December 18, 2006.\r\n\r\nThis website will vanish by December 31, 2006.
", + "title": "ORDB 結束營業" + }, + { + "id": "960", + "body": "因為 Mozilla Firefox 3.0a 實在太 buggy 了 XD 不愧是 Minefield... :p\r\n\r\nUpdate:喔耶,換回來了... :p", + "title": "換回 Firefox 2.0" + }, + { + "id": "961", + "body": "在 ORDB 要關門了,改改 DNSBL 設定吧 看到 Leeym 因為把 SpamCop 轉寄回來的信也丟回 SpamCop 而被 SpamCop 警告停權。\r\n\r\n我也發生過一樣的情況,不過我後來的作法跟 Leeym 不一樣,我是把 Content Filter 的軟體 (我是用 bogofilter) 所判斷出來的 Spam Mail 放到某個 folder,我三不五時就會去瞄一下,沒問題的就把整個 folder 送回 SpamCop 然後再砍掉,然後再用 Spamcup 真正的確認。換句話說,就是用工人智慧彌補 :p", + "title": "SpamCop (與 SpamCup)" + }, + { + "id": "962", + "body": "在 Simon Willison's Weblog 上看到一個蠻簡單的 OpenID implementation (其實也不怎麼簡單,七百多行的 code...),所以我就丟進 ports 了:phpmyid。\r\n\r\n也許可以改看看,能不能給多人用...", + "title": "phpMyID" + }, + { + "id": "963", + "body": "在 BBC Chinese 上看到的新聞,中國收緊外國人領養中國兒童的規定,其中...:\r\n
據悉,根據新規定,領養中國兒童的夫婦兩人年齡必須介乎30至50歲、已經登記結婚、加上兩人的離婚次數不超過兩次。\r\n\r\n此外,同性戀伴侶、服用抗抑鬱藥物者、體質指數超過40以上以及肥胖等外國人,一律禁止收養中國兒童。
\r\n我可以理解 (不代表認同) 其他的部份,但「體質指數」與「肥胖」的條件是什麼原因?怕不小心壓到變成地磚嗎 @_@", + "title": "奇怪的規定..." + }, + { + "id": "964", + "body": "Kentucky Fried Christmas:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Kentucky Fried Christmas" + }, + { + "id": "965", + "body": "在 Slashdot 上看到 Bad Web Sites Can Cause \"Mouse Rage\" 這篇 (原報導在 Are you suffering from 'Mouse Rage Syndrome? 這篇) 讓我想起三年前 大螢幕不調整解析度及字型會導致長腦瘤 這篇...\r\n\r\n現在是十二月不是四月啊,所以是怎樣... :p", + "title": "網站設計不良會導致免疫系統、心血管系統、神經系統受損...?" + }, + { + "id": "966", + "body": "Slashdot 上看到中國打算將手機的充電器與資料傳輸線標準化:S Korea & China Mandate Common Chargers, Data Cables。(原報導在 China To Mandate Standardized Phone Chargers)\r\n\r\n南韓在去年的時候已經搞過類似的事情 (Now They're Just Rubbing It In Our Faces),但現在換成是中國,市場比南韓大相當多,不曉得在五年內有沒有希望看到單一充電器就可以充所有的機型...\r\n\r\n附帶一點,照報導裡面說的,這次中國不打算自己定新規格,而是使用 USB,看起來相當不錯啊 :p", + "title": "手機充電器與傳輸線的標準化" + }, + { + "id": "967", + "body": "雖然有買自然輸入法,不過這次重灌 Windows XP 後想要知道 Open Source 的輸入法發展的如何,於是就去裝了 OpenVanilla Win32 (2005/09 的 beta 版本),發現問題還蠻多的... :p (像是無法叫出設定選單,於是預設的輸入法一直都是行列,然後在 PuTTY 裡偶而會爛掉)\r\n\r\n本來想灌回自然輸入法,後來想到 新酷音 好像有獨立 port 到 Win32 上,於是就去找官方網頁 (沒有中文輸入法的情況下還找蠻久的 :p) 下載下來用,看起來自然輸入法也可以先丟到旁邊去了 :p\r\n\r\n也許用一陣子再出來講講心得好了 :p", + "title": "新酷音" + }, + { + "id": "968", + "body": "剛剛在 Torrentfreak 上看到 AllPeers (一套在 Firefox 上的 Bittorrent 下載軟體) 也支援 Protocol Encryption 了:AllPeers Adds Encrypted P2P Chat to Firefox。\r\n\r\n查了一下 Wikipedia 上的 Comparison of BitTorrent software,目前表上列出有支援 Protocol Encryption 的軟體有 AzureusBitCometMainline (即 Bittorrent 發明人發展的版本)、KTorrentrTorrent (libtorrent)、µTorrent。", + "title": "AllPeers 也加入 Protocol Encryption" + }, + { + "id": "969", + "body": "在 使用 portversion 而非 pkg_version 看到 EdwardLee 以速度的差異推薦 portversion,但是 bs2 上的 AuthImage 不太喜歡我... 所以乾脆寫一篇出來好了。\r\n\r\nportversion 是 sysutils/portupgrade 的套件之一,在 portversion 裡的 manpage 提到他使用 INDEX 檔來判斷版本:\r\n
portversion is very similar to pkg_version(1), but is optimized for portupgrade(1) and runs much faster than pkg_version(1) thanks to the ports database generated from the INDEX file. See portsdb(1) for details.
\r\n但 pkg_version 用 -I 的參數也可以用 INDEX 檔,這是 -I 的說明:\r\n
Use only the index file for determining if a package is out of date. This is much faster than using the version number from a port's Makefile, at the expense of potentially giving an incorrect result if the index file is out of date.
\r\n速度上呢?這是最慢的 pkg_version (without -I):\r\n
44.992u 41.211s 1:27.37 98.6% 221+441k 1634+0io 56pf+0w
\r\n這是 portversion:\r\n
2.970u 0.893s 0:03.79 101.8% 29+16680k 0+0io 0pf+0w
\r\n這是最快的 pkg_version -I:\r\n
1.402u 0.156s 0:01.55 100.0% 43+1898k 0+0io 0pf+0w
", + "title": "關於 FreeBSD 下 pkg_version 與 portversion 的速度" + }, + { + "id": "970", + "body": "據學弟在 特色商家還是得有市場阿 orz 這篇裡說羅德利的茶 Cost-down 了,心中頗 ox... (在新竹就要再找了...)\r\n\r\n結果今天在光華商場買硬碟的時候,在旁邊看到一家 700cc 烏龍茶賣 55 元的店,很直覺就覺得應該是現泡的 (不然這麼貴大概就沒人要買了),買了一杯無糖的喝,除了價位真的太高外,其他倒是沒什麼挑的...\r\n\r\nPS:在網路上找了一下,資料不多,八兩茶舖 這篇只有圖 XD", + "title": "八兩 Expresso Tea" + }, + { + "id": "971", + "body": "還沒換... :p\r\n\r\n找了一下資料看到這篇「新國民身分證換證人數激增 全國戶政事務所加班因應!」,那我還是等一月再去排隊換好了 zzzz", + "title": "身份證" + }, + { + "id": "972", + "body": "Update我目前沒有再幫忙購買 Flickr Pro 帳號了。\r\n\r\n沒有信用卡卡號的人要買 Flickr Pro 不太容易,你必須透過 Paypal + 匯款,而且匯款後還需要等幾個工作天進 Paypal 戶頭,所以沒有信用卡的人如果想要買,可以找我代買。\r\n\r\nFlickr 一年是 USD$24.95,請照 http://tw.stock.yahoo.com/d/c/ex.php 這頁換算新台幣價格,然後無條件進入到整數,像我寫這篇的時候是 NTD$32.62 換 USD$1,24.95*32.62=813.869,就轉 $814 給我,轉完後告訴我你的 Flickr 帳號名稱,我會用 Gift 的方式給你,你可以參考 Flickr: Pro Account Purchase 這頁。\r\n\r\n轉帳帳號的部份請 mail 跟我聯絡。(User:Gslin)", + "title": "幫忙買 Flickr Pro" + }, + { + "id": "973", + "body": "在某窩買記憶體幫 X31 從 512MB 加到 2GB 後,跑一堆軟體舒服好多啊...\r\n
<gslin> 現在是 2G... XD\r\n<mclee> .....\r\n<gslin> 跑起 firefox 真愉快啊\r\n<mclee> nb 要這麼多 ram 幹嘛 -_-\r\n<gslin> 給 firefox memory leak 用的啊\r\n<mclee> @_@
\r\nAnyway,至少開機速度有變快... :p", + "title": "幫 Notebook 加 RAM..." + }, + { + "id": "974", + "body": "剛剛看到某個站這樣宣稱:\r\n
因應本站即將邁入世界排名萬名以內(Netcraft site rank),本站自2004/07/10開站所使用的免費網址happylinux.homeip.net建議您不要再使用,請將您的書籤更新為www.happylinux.tw。舊網址happylinux.homeip.net首頁雖已設置自動轉址,唯原有其他舊有連結資料可能無法繼續使用。
\r\n到 Netcraft 上查的確是 10580,不過又回頭看了一下這幾個站 (以及括弧內的排名),我就笑了出來... XD:www.pchome.com.tw (18336)www.hinet.net (50398)www.seed.net.tw (313795)。", + "title": "Netcraft 的排名" + }, + { + "id": "975", + "body": "Lighttpd 的 Blog 上提到排名比較前面的站台使用 Lighttpd 的情況:The Ranking。(其中 sourceforge 的部份是錯的,只有 main site 是 Lighttpd,其他給 project 用的 web,像是 virtualdub.sourceforge.net 都是跑 Apache)\r\n\r\n列出來這些站台實在看不出來 Lighttpd 對於 dynamic page (尤其是透過 FastCGIPHP) 的穩定性... 說實在的,看起來反效果還蠻大的 :p", + "title": "Lighttpd 的使用率" + }, + { + "id": "976", + "body": "\"\" 義氣幫 年度總檢討,一群人出去吃飯聊天順便決定明年的計畫,我拍的相簿在這:年度總檢討 (2006/12/31),依照慣例,有 slzzp 在的聚會都會有某些節目... *boom*\r\n\r\n買布丁的時候有個小插曲,我跟蘋果去 7-11 結帳的時候被問到「要不要湯匙」,當蘋果說不用的時候,店員居然很開心的又問了「是不是要玩遊戲」XD", + "title": "年度總檢討" + }, + { + "id": "977", + "body": "\"\" 昨天年度總檢討從 slzzp 那邊拿到請 pesty 幫忙帶回來的 PowerSquid,拿到手後看起來... 頗有趣 :p\r\n\r\n不過這陣子應該不會拆來用,因為我目前有個可以接十個插頭的延長線服役中...\r\n\r\nPS:剛好在 Bruce SchneierBlog 上看到他也收到一個 PowerSquidFriday Squid Blogging: PowerSquid。然後他貼了一個 DIY 版的 PowerSquid... XD:Homemade Power Squid。", + "title": "PowerSquid" + }, + { + "id": "978", + "body": "抓東西發現 ADSL 變快了,現在有 600KB/sec 的速度... (之前大約 230KB/sec,有時候還會因為下雨天訊號太差而斷線 XD)", + "title": "ADSL" + }, + { + "id": "979", + "body": "雖然 蔡依林大姊姊 寫了一篇 Google 的信任危機,不過這個事情蠻值得再提出來講。\r\n\r\n這個禮拜幾位國外長輩的 Blog 最熱鬧的話題之一,Google 搜尋時出現的 \"Tip\",引兩篇重點,最開頭抱怨的 Blake Ross (Firefox 的催生者之一) 與 Matt Cutts (他是 Google 員工):\r\n\r\n一開始是 Blake Ross 發現他用 Google 搜尋 \"Photo Sharing\" 時在最前面會出現 \"Tip: Want to share pictures? Try Google's Picasa Web Albums\" 後另外又試了其他的關鍵字,發現搜尋 \"calendar\" 與 \"blog\" 也有類似的 \"Tips\",像這樣:\r\n\r\n\"\"\r\n\r\n他說 Google 在以前也有推出類似的服務,舉例來說,當你搜尋 \"The Holiday\" (戀愛沒有假期) 時,Google 在搜尋結果的最上面會有一個小方塊讓你查詢這部電影的評價以及其他資訊,這對使用者有非常大的幫助。他認為像這種服務多多益善,即使他是有爭議的。(然後他舉了 Microsoft 在 Windows 裡綁 IE 的例子,他認為這是一步好棋,對使用者相當好,我個人認為這點看看就算了...)\r\n\r\n但這次的情況與 The Holiday 的例子不一樣,出現在同樣的位置,但所提供的資訊對使用者並沒有幫助。大多數人都不認為 Picasa 是 Photo Sharing 裡最好的產品,出現在這個位置感覺上就跟 Microsoft 在 IE 裡面出現這樣的東西一樣:\r\n\r\n\"\"\r\n\r\n再加上 Google 之前用 Adwords 投放自己的廣告這件邪惡的事情 (註),他決定寫成一篇文章呼籲 Google 要多思考對使用者的觀感:贏得使用者的心並不容易,但失去可以很快。\r\n\r\nMatt Cutts 很委婉的寫了一篇他對於 Google 用 \"Tips\" 推廣自己服務的作法不贊同的文章,在文章裡他說,如果他可以作主的話,他會拿下 \"Tips\",讓搜尋的結果更自然。\r\n\r\n註:Google 用 Adwords 投放自己的廣告造成抗議,因為 Google 再怎麼宣稱他們使用的平台跟大家都一樣,仍然有兩個完全不同的立足點。第一個,他們可以設定極高的關鍵字金額,因為對他們來說沒有成本。第二個,他們可以用 \"Easier to use than Kodak\" 投放 Picasa 的廣告,但 Kodak 卻因為 Google 保護自己的 trademark \"Picasa\" 而無法投放 \"Easier to use than Picasa\"。", + "title": "Google Search 時的 Tip" + }, + { + "id": "980", + "body": "\"\" 這陣子 Google 頗怪,在發現不適當的政策後來個大轉彎,居然把所有的 \"unrelated result\" 拿掉,然後又發現好像太誇張了 (Blogoscoped 發現計算機的功能不見後寫了一篇 Google Calculator Gone?),於是過幾個小時候又放回來...\r\n\r\n(話說回來,我覺得 Google 如果可以提供匯率的話會比較方便 +_+ 現在都是去 Yahoo! Kimo 查...)", + "title": "Google 計算機" + }, + { + "id": "981", + "body": "比起政策上得問題,這次是技術上產生的問題,所以大家也都懶得碎碎唸了...\r\n\r\n這次的漏洞是 Gmail 的 JSON API 所造成的,這個漏洞目前已經修復了,當時的情況是 1) 如果你登入 Gmail 2) 別的網站可以利用 Gmail 的 JSON API 取得一些資訊,像是通訊錄內容。\r\n", + "title": "Gmail 安全漏洞" + }, + { + "id": "982", + "body": "用 Google News 找了一下,國內似乎沒在關注這件事情。\r\n\r\n在柯林頓時代時決定從 2007 年開始,超過 25 年的機密文件將自動解密,於是今年將有上億頁的機密文件解密,其中包含了許多冷戰時代的紀錄,這對於許多研究相關領域的學者來說是相當重要的一步,藉由大量的解密文獻得知當年所發生的事情,以及美國政府如何應對。", + "title": "機密文件解密" + }, + { + "id": "983", + "body": "剛剛把 WordPress 更新到 r4672 版,在後台操作時發現速度比以前快不少。(不知道是不是錯覺,我看機器還是蠻忙的,應該是有改善)\r\n\r\n等 WordPress 2.1 釋出後 (不是最近準備要釋出的 2.0.6) 應該會有更多人受惠 :p", + "title": "WordPress" + }, + { + "id": "984", + "body": "法國的 Space Agency 將會將這三十年內所蒐集到的 UFO 資料公佈出來,包括了一千六百多次的事件:UFOs In the News。\r\n\r\n會不會過了兩百年後發現這些異常狀況只是未來的人在做 Temporarily Experiment 所產生的?XD", + "title": "法國將公佈這三十年內 UFO 的資訊" + }, + { + "id": "985", + "body": "以 Porn 為題材 (噗),反應最近 Google 的情況:Google Porn: A Play in One Act。", + "title": "Google Porn" + }, + { + "id": "986", + "body": "\"\"\r\n\r\n出處:Do You Want the Googlebot Artwork?", + "title": "Googlebot" + }, + { + "id": "987", + "body": "\"\" 這本小說的中文版在 12/25 出版,我請 slzzp 幫忙買,年度總檢討 的時候 slzzp 就順便拿給我:星界的斷章(1)。\r\n\r\n中文版翻譯的不錯,看起來很流暢所以很快就看完了。還有地方看起來是惡搞 XD:星界的斷章之淫亂的星界!?森岡老師突破創作以來的最大尺度!? 不知道是不小心漏字,還是真的故意漏字 XD\r\n\r\n斷章有些部份比較像是設定集的感覺,解釋了亞維人的由來以及一些背景知識。另外有些部份根本是在惡搞 (像是 2ch 與「攻+受」這些用語 XD),不過 森岡浩之 好像還蠻樂在其中的,好幾篇都是這種 style...\r\n\r\nPS:如果你想知道這部小說,可以參考 維基百科 的說明:星界的紋章,不過我建議還是去看小說 & 動畫比較有感覺 :p", + "title": "星界の断章" + }, + { + "id": "988", + "body": "SVK 2.0.0 釋出一陣子了 (2006/12/28),在 CHANGES 裡翻到:\r\n\r\n看起來蠻值得試看看的,所以剛剛把工作機的 SVK 從 1.0.x 升級到 2.0.0 測...\r\n\r\n結果測下去還是一樣慢啊 @_@ 看起來是指每個 depot 都獨立一隻 SVK::Mirror 跑吧?這樣 mirror 設定後的第一次 sync 還是很痛的啊 :~", + "title": "SVK 2.0.0" + }, + { + "id": "989", + "body": "在 CERT 上看到的:Adobe Acrobat Plug-In cross domain violation。\r\n\r\n這個安全漏洞是瀏覽器內嵌 PDF Viewer 時,Adobe Acrobat Reader 8.0 沒有正確處理 URL 造成可以執行 Javascript 於是產生 XSS 類的問題。暫時的解法有兩種,一種是把瀏覽器內嵌 PDF 的功能關掉,另外一種是把 Javascript 關掉...", + "title": "Adobe Acrobat Reader 8.0 安全漏洞" + }, + { + "id": "990", + "body": "Dave Child 又丟出新的 Cheat Sheet 了:HTML Cheat Sheet。寫網頁時常常會忘記 tag 的名稱,有機會找台印表機印出來... o_O\r\n\r\n看了一下,印出來後大概還要做很多筆記在上面才適合用,上面的資訊太少了。", + "title": "HTML 的 Cheat Sheet" + }, + { + "id": "991", + "body": "放完假回來上班發現公司被買了... XD\r\n\r\n在 GigaOM 看到 Cisco 買下 IronPort 的消息:Cisco buys Ironport for $830 millionCiscoIronPort 的新聞稿分別在 Cisco Announces Agreement to Acquire IronPortCisco Announces Agreement to Acquire IronPort。(其實這兩篇長得一樣...)", + "title": "Cisco 買下 Ironport" + }, + { + "id": "992", + "body": "MySQL AB 決定將 MySQL 5.0 與 5.1 的版權宣告從 \"GPLv2 或之後的版本\" 改成 \"GPLv2\",換句話說,避免使用 GPLv3 授權:MySQL Changes License To Avoid GPLv3。\r\n\r\n這避免了如果有人拿 MySQL 的 source code 改出另外一個版本後使用 GPLv3 所產生的問題:如果這個新的版本有很好的功能,MySQL AB 想要 porting 回 MySQL tree 裡時會產生 GPLv3 感染的問題。", + "title": "MySQL 將不會使用 GPLv3" + }, + { + "id": "993", + "body": "把 Notebook 的記憶體加大後,Firefox 的 memory leak 對於網頁瀏覽的影響就沒那麼大了,突然想到用起 Google Reader 應該會比以前順,於是前幾天把 Bloglines 的 OPML 匯出,搬到 Google Reader 上使用,發現可以接受後就從 Bloglines 跳槽...\r\n\r\n對我來說,Google ReaderBloglines 相比起來,最好用的地方在於可以一次只看幾篇文章,而不用以 Blog/RSS 為單位一次看完一整個 Blog 的文章,這樣我就可以在 portupgrade 或是 make kernel 這種零碎的時間看個幾篇。\r\n\r\n不過蠻奇怪的是,tag 居然只能用英文... 另外 Javascript 的速度還是感覺不夠快,大概是 Firefox 的問題吧,也許我該期待 FirefoxAdobe 捐贈的程式碼移植進來,這樣 Javascript 的速度應該會快很多...", + "title": "跳槽改用 Google Reader" + }, + { + "id": "994", + "body": "約四十萬個 domain 的樣本,可以看出 Open Source 的 Mail Server 佔相當高的比率:\r\n\r\n\"\"\r\n\r\n圖出自 Fingerprinting the World's Mail Servers 這篇文章。\r\n\r\n在文章裡作者說明了測試的方法。port 25 是這次測試的重點,因為許多 Mail Server 都沒有特別隱藏 fingerprint,於是你可以透過這些 fingerprint 判斷這台主機是使用什麼軟體。\r\n\r\n不過文章內還是提到了樣本仍然有偏差 (所以上面的圖僅供參考),主要是因為各種毫無意義的 banner 無法分析,像是 Cisco PIX firewall 所擋住的 SMTP Server 會傳回這種東西:\r\n
220 ***********************
\r\n這使得你無從判斷。", + "title": "Mail Server 的市場佔有率" + }, + { + "id": "995", + "body": "Debian 被我灌爛了,於是又拿出 FreeBSD 6.2 BETA 的光碟灌 FreeBSD,然後升級到 7-CURRENT (-HEAD)。\r\n\r\n中間有些小插曲,像是我本來以為 /usr/share/examples/cvsup/standard-supfile 是 -HEAD 的 supfile,所以我在 /etc/make.conf 裡當然就設過去,結果跑了三四個小時把整套 (csup + world + kernel) 做完重開後發現是 6.2-PRERELEASE,只好再更新一次重頭做,順便跑 SCHED_ULE... (也就是 ULE 2.0)\r\n\r\n升到 7-CURRENT 以後發現不少在 6.x 上裝的 packages 有一堆有問題,像是 python & ruby 都會 coredump,為了避免以後發現靈異現象 (結果追到最後發現是因為某個 port 沒有重編),乾脆到 /var/db/pkg 下面跑 pkg_delete * 把所有 ports 砍掉重新安裝...\r\n\r\n晚點再來弄 X.Org,然後再把 Firefox 編起來。", + "title": "FreeBSD 7-CURRENT" + }, + { + "id": "996", + "body": "天氣冷的時候在被窩裡超好睡 +_+\r\n\r\n睡醒發現居然下午三點了,趕快打電話去道歉,gosh =_=", + "title": "天氣冷..." + }, + { + "id": "997", + "body": "從 12/26 的 幫忙買 Flickr Pro 這篇發表到現在差不多兩個禮拜,總共有五個人從我這邊代買一年分的 Flickr Pro 帳號,please enjoy it :)", + "title": "Flickr Pro 代買「成果」" + }, + { + "id": "998", + "body": "在 MySQL 把 Falcon Storage Engine 放進 source tree 後 (MySQL Falcon Storage Engine Open Sourced),有人就在 Linux 上跑起來,同時對 MyISAM 與 InnoDB 做了一些簡單的 benchmark:InnoDB vs MyISAM vs Falcon benchmarks - part 1,跑出來的結果是 Falcon 大敗... :p\r\n\r\n這陣子的測試都還說不準,要等到把一些整合上的問題修掉後再回來看。\r\n\r\nPS:在 Falcon Storage Engine Design Review 這篇有些 Falcon 設計上的解釋,也許可以稍微解釋為甚麼 Falcon 跑起來這麼慢...", + "title": "MySQL 裡的 Falcon" + }, + { + "id": "999", + "body": "Slashdot 上報導了 Acer 的 Notebook 裡就有個 ActiveX Control 可以讓第三者任意執行任何指令 (檔案最後修改日期是 1998 年,所以作者也猜測這個後門應該很久了?):Acer May Be Bugging Computers。\r\n\r\n原報導在 About Acer Notebook LunchApp.APlunch ActiveX Control.... 這篇,看起來這篇也蠻久了,最下面的 Public Release 是 2006/11/19。最近 Microsoft 送給很多 Blogger 裝有 Windows Vista 的 Acer Laptop (Microsoft 說這是作為「善意的表示」),果然被 Slashdot 上面的人拿出來一起笑... XD", + "title": "Acer Laptop 的 ActiveX 後門" + }, + { + "id": "1000", + "body": "這個厲害...\r\n\r\n在保險套裡面放麵粉過海關,於是被抓起來關三個禮拜,之後測試出不是違禁品而被放出來,於是反控回去而得到 $180k... (這應該是美金吧?這樣快六百萬台幣了 :p):How to earn $180k by smuggling flour-filled condoms,路透的報導:Woman settles case over flour-filled condoms。\r\n\r\n嘖... XD", + "title": "在保險套裡面放麵粉?" + }, + { + "id": "1001", + "body": "雖然 GNU GPL 很討厭,但是你必須承認一點:世界上有太多 open source software 使用 GNU GPL,於是你就得考慮其他的 license 的軟體如果與 GPL 的軟體連結在一起所遇到的問題。\r\n\r\n比較有名的幾個例子包括 BSD 4-clause licenseGNU GPL 不相容:BSD and GPL licensing,以及 OpenSSL licenseGNU GPL 不相容:The OpenSSL License and The GPL。\r\n\r\n結果剛剛在看這幾天的 RSS feed 的時候在 Slashdot 上看到 Gentoo/FreeBSD 頭目 Flameeyes 發現系統裡某些不容易被取代的部份居然使用 BSD 4-clause license:Gentoo/FreeBSD On Hold Due To Licensing Issues。\r\n\r\n他寫的文章在這:\r\n\r\nGentoo/FreeBSD 遇到的麻煩暫時已經解決,主要是 libkvm 是被 GPL 軟體所呼叫,而不是 libkvm 去呼叫 GPL 軟體,而 GPL 所禁止的是別人連結到 GPL 軟體的情況,所以在這個情況下不受限制。另外一個是 libkvm 大多數的部份都是 UCB 的 copyright,而 UCB 宣佈過所有他們擁有的 BSD 4-clause license 將自動「降」為 3-clause,而其他的部份 (PowerPC 與 ARM 的移植程式碼) 的作者已經同意也「降」為 3-clause。\r\n\r\n不過我搜尋了 FreeBSD 的 mailing list 發現好像沒有人討論這個問題...", + "title": "BSD 4-clause license 的問題" + }, + { + "id": "1002", + "body": "在 Security Fix 上看到 Spam 軟體已經能處理 CAPTCHA 這類 Turing Test 了:Scary Blogspam Automation Tools。\r\n\r\n說到 CAPTCHA,我就想到前陣子看到給 SpamAssassin 用的 FuzzyOcrPlugin,可以將信件裡面的圖片轉成文字再交給 SpamAssassin 處理,這代表什麼呢... errr...", + "title": "Spam 軟體" + }, + { + "id": "1003", + "body": "有人在 eBay 上銷贓,結果被物主給抓到 XD:Been Robbed Recently? Check Ebay,原報導:Police: LI Man Finds His Stolen GPS Device on eBay。\r\n\r\n簡單說就是有人在 GPS 導航系統被偷了以後決定到 eBay 上找一個一樣的,結果發現某個拍賣裡有 serial number,號碼居然跟他之前的一樣,於是... XD", + "title": "在拍賣網站上銷贓..." + }, + { + "id": "1004", + "body": "在 Slashdot 上看到 Dell 在中國大陸販賣事先裝好 Linux 的 PC:Dell's Secret Linux Fling,原報導在 The Register 上,重點是有圖有真相:Dell's secret Linux fling,從圖可以看到選用的系統是 紅旗 Linux。\r\n\r\n對 Dell 而言,總是個開始... 畢竟在美國市場裡有 Microsoft 會強力阻撓 :p", + "title": "Dell 在中國大陸販賣事先裝好 Linux 的 PC" + }, + { + "id": "1005", + "body": "不知道系辦在幹什麼... 像是:\r\n\r\n這些是什麼東西啊...", + "title": "公告系統..." + }, + { + "id": "1006", + "body": "在 Boing Boing 上看到:Company promises to wirelessly power handheld devices。\r\n\r\n其實是放一台發送器,然後在無線設備上裝充電電池,平常放著的時候就透過特定的 RF 訊號充電...", + "title": "不用特別去充電的無線設備" + }, + { + "id": "1007", + "body": "有人發現在 Hotel 使用網路時看網頁怪怪的,分析下去發現是 SuperClick 這家公司惡搞的原因:Hotel Connectivity Provider SuperClick Tracks You,剛好看到另外一篇對 FON 的安全性有所顧慮:FON 的安全性?。\r\n\r\n先講 FON 的安全性好了。我手上沒有 FON 的機器,也沒用過 FON 提供的網路,所以我只能針對不同的情況假設。第一種,如果他的認證頁面是透過 fon.com 的 HTTPS 頁面做的話,那麼在認證的部份只要使用者有注意到,應該沒什麼問題。如果是在 FON AP 上認證的話,那麼 FON 必須使用 Key-based 認證,不然就有被釣魚的危險...\r\n\r\n再回來講連線的事情,當在外使用網路一定要注意的... WEP/WPA 只能保護無線網路這段連線 (也就是電腦到 AP 這段),並不能保護其他的部份。像 Slashdot 那篇所遇到的例子是上游惡搞你。\r\n\r\n比較好的方法是全程都使用 HTTPS,像是 Gmail,但並不是所有的站台都有提供 HTTPS。\r\n\r\n另外一種方法是自己架設 SSL VPN (像是 OpenVPN) 連到信任的網路上再連出去,或是透過 PuTTY 連到其他信任的機器 (以及網路),利用 PuTTY 所提供的 Socks5,將瀏覽器的 Proxy 指過去。\r\n\r\n如果以上的辦法都不可行的話 (沒有自己可信任的機器?),也許可以購買 VPN 的服務...", + "title": "在外使用網路時的網路安全..." + }, + { + "id": "1008", + "body": "VeriSign 對於找到 Windows Vista & IE7 最嚴重的 remote code execution 漏洞並寫出 exploit code 的人提出獎賞:VeriSign Puts Flaw Bounty on Vista and IE7。\r\n\r\n不過這個價碼對 Remote Code Execution 來說實在不怎麼吸引人... @_@", + "title": "VeriSign 將獎賞寫出 Windows Vista 與 IE7 的安全漏洞的人" + }, + { + "id": "1009", + "body": "由於 Microsoft 說他們不會再繼續維護 Windows 2000,所以今年美國的 Daylight Saving Time 改變一般人就無法拿到 Microsoft 官方的 patch (參考 MicrosoftPreparing for daylight saving time changes in 2007 這篇),於是有人做了非官方的更新:Unofficial Win2K Daylight Saving Time Fix。", + "title": "Windows 2000 非官方更新" + }, + { + "id": "1010", + "body": "XDDDDDD\r\n\r\n\"\"\r\n\r\n來源:Boing BoingNEC laptop designed for your evil lair。", + "title": "NEC 新出的 Notebook?" + }, + { + "id": "1011", + "body": "剛好跟被 Cisco 告的 iPhone 比較?XDDDD\r\n\r\n\"\"\r\n\r\n出處:Boing BoingApple phone: no need to wait for June on this one.。", + "title": "Apple Phone" + }, + { + "id": "1012", + "body": "東西蠻好吃的,氣氛也不錯,但是因為開在小巷子裡 (所以很安靜),地點很不好找 XD\r\n\r\n因為 強者 mclee 大長輩 推薦 香榭咖啡屋 (據說是女朋友高中同學開的?),所以昨天就跑去吃,我看了地圖就在想:這好像是我念小學時後面的巷子... 所以就搭 99 到捷運新埔站,轉 310 到大庭新村站,再用走的去找小巷子... 果然迷路 XD\r\n\r\n不過其實還好,因為有抄地址 (板橋市大勇街 28 號),問一下路人大勇街在哪裡,走一下就到了。進去以後有無線網路可以用,走的是 HiNet ADSL,速度還不錯,記得跟老闆要 WAP 的 key。\r\n\r\nUpdatemclee 在 comment 提到的交通圖:\r\n\r\n\"\"", + "title": "香榭.咖啡" + }, + { + "id": "1013", + "body": "Slashdot 上轉錄自 Doom9 上的新聞,在短短的幾個小時內破了一堆可以播放 AACS 的 player,取出大量的 key:Decryption Keys For HD-DVD Found, Confirmed。", + "title": "AACS 破解的「進度」" + }, + { + "id": "1014", + "body": "FreeBSD 6.2 從去年九月摸到現在,終於要正式 release 了 (參考 FreeBSD 6.2 Release Process 這篇,可以知道原訂的 schedule 以及 delay 的程度),目前 install files 與 ISO 都已經可以在 FTP 上看到了,各 mirror site 也都在 mirror 了,看起來只差正式的公告...\r\n\r\n剛剛先把 netnews.nctu.edu.tw 的 FreeBSD 升級上來,目前看起來沒什麼問題,該動的都還是會動... :p\r\n\r\n升級一樣是 make {kernel,world} 後跑個 mergemaster,然後將原本從 ports 裡安裝的 net/csup 給幹掉,把 /etc/make.conf 裡的 /usr/local/bin/csup 換成 /usr/bin/csup 而已。", + "title": "FreeBSD 6.2-RELEASE" + }, + { + "id": "1015", + "body": "準備再搬一次家,從 Layeredtech 的 Reseller 直接換到 Layeredtech。\r\n\r\n細節的部份等搬完再寫一篇慢慢解釋好了。", + "title": "搬家" + }, + { + "id": "1016", + "body": "NetscpaeRSS 0.91 的 DTD 給拿掉了,這很有可能使得嚴謹的 XML Parser 造成問題:Netscape Dumps Critical File, Breaks RSS 0.9 Feeds。\r\n\r\nChristopher Finke (Netscape 的員工) 在 Slashdot 上說明了原因,因為 Netscape 的人重新設定 my.netscape.com 的時候,沒人知道那個東西是做什麼的,於是就炸了...:Sorry about that。\r\n\r\n目前檔案還沒放回去,不過據 Christopher Finke 說他們會儘快處理。", + "title": "RSS 0.91 的 DTD" + }, + { + "id": "1017", + "body": "去年四月的時候從 DreamHost 換到 Dedicated Hosting (參考 換 HostingHosting... 這兩篇),當時租用的是 Layeredtech 的 Reseller SERVER4SALE 特價的機器,是台 AMD Sempron 3000 + 1GB RAM + 兩顆 80GB 硬碟 + 10Mbps 網路 (1500GB/month) 的機器,價錢是 USD$90/month。\r\n\r\n後來用量愈來愈大了,於是打算換台比較快的機器,記憶體也希望多一點。於是就開始在網路上找便宜的 Dedicated Hosting,然後到 WebHostingTalk 上翻評價,翻了幾個月決定還是在 Layeredtech 上找。(LT 在 WebHostingTalk 上很少有負面消息)\r\n\r\n看了看決定訂 LT-AMD-ATHLON-XP-2800-SANTA 這台,然後把記憶體加到 2GB,然後年繳 (八折),AMD Athlon XP 2800 + 80GB*2 + 2GB RAM + 100Mbps (1500GB/month) 這樣應該夠用了。\r\n\r\n於是,我們將從 Layeredtech 搬到 Layeredtech...", + "title": "從 Layeredtech 搬到 Layeredtech" + }, + { + "id": "1018", + "body": "我的 zookeeper (新版) 就卡在這邊,時間不會少,然後我找不到可以消的地方... @_@\r\n\r\n\"\"", + "title": "被玩爛的 zookeeper..." + }, + { + "id": "1020", + "body": "新主機已經到了,我先把我的 blog 搬過來測試,但是發現 lighttpd 對於 PHP 頁面處理上有些問題:跑一陣子後 lighttpd 就跟 PHP socket 失聯了,這時將 lighttpd 停掉後 PHP 還是會一直存在。\r\n\r\n測試許多次以後發現改用 TCP socket 就解決了,大概是 FreeBSD 6.2 的 UNIX socket 有地雷吧。最後是在 lighttpd 的 Wiki 上用 Handy External Spawning FastCGI PHP Processes in FreeBSD 這篇所提供的 script,改一下就可以用了。", + "title": "lighttpd + FastCGI + PHP 時的問題" + }, + { + "id": "1022", + "body": "最近的調查發現,即使 IE7 下載次數突破一億次,Firefox 的使用率還是在成長,絕大多數的 IE7 下載者都是本來使用 IE6 的使用者,而 Firefox 的使用者還是繼續使用 FirefoxAfter 100M IE7 Downloads, Firefox Still Gaining。\r\n\r\n有不少下載者是因為 Windows Update (現在叫 Microsoft Update) 在十一月的時候把 IE7 列入重大更新而下載,而原先使用 Firefox 的人還是繼續用得很爽。\r\n\r\n很期待 Firefox 3.0 出來後對於網頁標準化的影響...", + "title": "Firefox 持續成長" + }, + { + "id": "1023", + "body": "在 WordPress 維護人 Ryan 的 Blog 上看到 WordPress 2.1 RC1 釋出了:WordPress 2.1 Release Candidate 1,有興趣的人要注意 MySQL 的需求變成 4.0+ (用 3.23 的也許要自己多保重?),以及 Plugin 部份因為 API 的變更可能會有問題。\r\n\r\n或者,你可以平常就追 WordPress SVN 版本,雖然偶而會踩到地雷... :p", + "title": "WordPress 2.1 RC1" + }, + { + "id": "1024", + "body": "看 Security 的 RSS feed 資訊的時候看到 MBSE BBS 這個 telnet-based BBS System,看一看 Screenshot,操作介面差不多跟七八年前一樣... :p", + "title": "MBSE BBS" + }, + { + "id": "1025", + "body": "mclee 在一月七號寫的 Customer Relations - 被遺忘的環節 裡面提到:\r\n
這次 aNobii 的回答,也讓我有這種類似的感受。當然,如果 Amazon 事後每一次都還是掉包裹,如果 aNobii 發了這封信以後每一次還是照樣當機,那這種做法還是不管用。
\r\n剛好遇上 books.com.tw 這次當翻了 (剛好也是網路書店的龍頭?),errr... 突然想到 mclee 寫的這篇...", + "title": "客戶的感想?" + }, + { + "id": "1026", + "body": "美國在 2003 年通過的 CAN-SPAM Act of 2003 在三年之後「終於」有第一個用這個法案定罪的人:First Spammer Convicted Under CAN-SPAM Law。", + "title": "CAN-SPAM" + }, + { + "id": "1027", + "body": "在 Skype Takes Internet Communications One Step Further With New Pricing Strategy 這篇裡面提到了 Skype 將推出 Skype Pro:不同與以往的「打多少算多少」,Skype Pro 是每個月收 €2,但打各國的市內內電話就只要每通 €0.039 的接線費。\r\n\r\nPS:不過我記得 SkypeOut 每兩個小時就會斷線一次,所以... :p\r\n\r\nUpdate:參考 Taiwan CNET 這篇 SkypeOut閃電調整收費結構。", + "title": "Skype Pro" + }, + { + "id": "1028", + "body": "據說 UrMap 要維修到 22 號,除了搜尋的功能無法搜尋地標外,連上面捷運站的標示都消失了。\r\n\r\n不過發現跟 UrMap 使用同一個 engine 的 Yam蕃薯藤-活地圖 地標的部份還在,這幾天加減用吧...", + "title": "電子地圖" + }, + { + "id": "1030", + "body": "在 Bruce Schneier 的 Blog 上看到紐約的 911 call center 支援圖片與影像的傳輸:Sending Photos to 911 Operators。\r\n\r\n這代表在紐約報案時如果報案人很緊張說不清楚,或是語言不太通 (有很重的口音之類的),也可以透過手機將照片或是影片傳給 911 中心。", + "title": "紐約的 911 接受圖片以及影像的傳輸" + }, + { + "id": "1031", + "body": "去年十一月的時候老人家想要買幾本書,用同為 義氣幫pesty 所開發的 findbook.tw 查了這幾本書,發現是 books.com.tw 最便宜,連過去要買的時候發現「認證沒過」(滿臉疑惑),看了一下信箱裡面的資料,發現我從 2001 年就有買書了,沒過認證?\r\n\r\n好吧... 沒過就沒過,把 mail 改到 gmail 去的總行了吧,按下送出後過了兩天還是沒收到,再換成 gslin.org 的,又過了兩天沒收到 (看 maillog 發現連個鳥蛋連線都沒有),再換成 ccca.nctu.edu.tw、csie.nctu.edu.tw 沒一個有收的到 !@#$%^...\r\n\r\nAnyway,這件事情就暫時忘記了,1/13 的時候老人家突然想起來問我,我又上去試了一次發現還是不行,於是打算註冊新帳號,發現 darkkiller 有人註冊了 (!!!),口吾... try 了幾次密碼後放棄,寫個 mail 給客服問 (留 gmail 信箱),先繼續做其他的事情,然後又忘記了... :o\r\n\r\n剛剛突然想買書 (累積十本了...),去 findbook 找了一下發現還是 books.com.tw,想到根本沒收到客服的回信,沒力氣再去試 mail verify,決定直接打電話找客服,結果打過去叫我上班時間再打... 我決定先寫一篇幹勦,星期一早上再來打 -_- 這堆書還是先請 Blake 學長 幫忙訂好了...\r\n\r\nPS:我還為此看了看 books.com.tw 的 HTML form 怎麼傳之類的,發現好像用了很多 DES crypt() 充當 secure hash 用...", + "title": "博客來 (books.com.tw) 實在是..." + }, + { + "id": "1032", + "body": "Blogger 新版前陣子開放自訂 Domain 的功能 (使用舊版 Blogger 的要先轉成英文版,再轉到新版的 Blogger,再轉回繁體中文),然後被發現有安全問題:Details of Google's Latest Security Hole。\r\n\r\n在 Google 修正後這個問題後,有不少人發現在設定某些 .com 的 domain 會出現 \"Another blog is already hosted at this address.\" 的錯誤訊息,而如果是 .info 的 domain 則是 100% 會出現這個訊息...\r\n\r\n看起來是某種 bug,或者是 .info 的 domain 有問題?\r\n\r\n參考:\r\n", + "title": "在 Blogger 上使用自己的 Domain" + }, + { + "id": "1033", + "body": "在 Search Engine Journal 上看到 Wikipedia 英文版 將所有對外的連結都加上 rel=\"nofollow\" (目前中文版的部份也都有 re=\"nofollow\" 了),希望能減少 Spam 的量:All Wikipedia Links Are Now NOFOLLOW。\r\n\r\n不過我覺得是沒有用啦... rel=\"nofollow\" 都實行兩年了,實際產生的「成效」大家也都看得見 :p\r\n\r\n關於 nofollow 是什麼,參考這幾篇:\r\n\r\n突然想到,nofollow 的感覺跟大有為的政府宣佈非約定轉帳金額調降至 $30k/day 一樣,「怕被騙那就限制住好了」:p", + "title": "Wikipedia 將對外連結加上 rel=\"nofollow\"" + }, + { + "id": "1034", + "body": "最近 TechCrunch 有一篇文章在講 Online RSS Aggregator (像是 Google ReaderBloglines、...) 的成長,比較特別的是 Rojo 成長的幅度特別高:Just How Big Is Google Reader?。\r\n\r\nChris Messina 在文章裡的第 56 comment 裡面有提到 Rojo 拿掉 robots.txt 搞 SEO 的事情,而 GigaOM 乾脆將 Rojo 故意拿掉 robots.txt 的事情寫成一篇文章:The real reason for Rojo's growth。", + "title": "Rojo 的 SEO" + }, + { + "id": "1035", + "body": "太久沒設定都忘了... 紀錄起來:\r\n\r\n如果 dmesg 有看到 HTT 這個 flag,但是沒有看到多顆 CPU,那麼除了加上一般多 CPU 會用的 options SMP 以外,還要加上下面這行,然後 recompile kernel:\r\n
options MPTABLE_FORCE_HTT
\r\n接下來到 /etc/sysctl.conf 加上:\r\n
machdep.hyperthreading_allowed=1
\r\n重開機後理論上打 top 就可以看到了。", + "title": "在 FreeBSD 上打開 Hyperthreading 的方法" + }, + { + "id": "1036", + "body": "TechCrunch 報導了 Stolen ID Search 這個站,據網頁上的說法,你可以輸入你的 SSN 或是信用卡卡號,然後他會去找看看在名單裡面存不存在 XD:Find Out If Your Social Security or Credit Card Numbers are on the Internet。\r\n\r\n雖然整個傳輸過程都是透過 SSL,但如同 comment 所說的,你根本不知道這個站台會不會把你輸入的 SSN 或是信用卡卡號記錄下來 XD", + "title": "搜尋信用卡卡號是否被盜用?" + }, + { + "id": "1037", + "body": "Gmail 刪除信件的功能一直都沒有快速鍵,結果有人發現在 Opera 9.1 可以用 End 鍵做到:'Secret' Gmail Delete Mail Keyboard Shortcut。\r\n\r\n因為其他所有的 Browser 都做不到,所以我猜可以用 End 在 Opera 9.1 裡面刪除的功能應該是 bug 造成的吧 XD\r\n\r\nGoogle 裡的某些人大概又開始在暗幹 Opera 了... XD", + "title": "Gmail 刪除信件的快速鍵" + }, + { + "id": "1038", + "body": "Microsoft 打算付錢找人去改 Wikipedia 上的文章,尤其是去修改關於自家 OOXML 的負面消息:An interesting offer: get paid to contribute to Wikipedia。\r\n\r\n而 Jimmy Wales 當然就很不滿了,他認為如果接受 Microsoft 這份工作是很不道德的,這些人將會被 Wikipedia 永久隔離:Microsoft's pay-to-edit Wikipedia meddling: Wales not amused。", + "title": "Microsoft 的 PR" + }, + { + "id": "1039", + "body": "剛剛從 PuTTY-announce 的 mailing list 收到了 PuTTY 出 0.59 版的消息,從 0.58 到 0.59 改變的功能可以參考 PuTTY Change Log 這頁。\r\n\r\n這個版本有一些效能與安全性的改善 (包括 SSH 本身,與 SFTP),看到一個是支援了 RC4,應該是給需要速度的人用的關係吧。\r\n\r\n去下載下來玩看看 :p\r\n\r\nUpdate:RC4 cipher 用起來頓頓的,其他看起來沒什麼不同 @_@", + "title": "PuTTY 0.59 更新" + }, + { + "id": "1040", + "body": "這陣子 Jeff Roberson 在改寫 FreeBSD 上的 SCHED_ULE,也就是 ULE 2.0。\r\n\r\n據他在 ULE cpu selection. 這篇的說法,在 8 core CPU 的 FreeBSD 上跑 MySQL 測試,ULE 2.0 比 4BSD 快了 300%。(不過據下面 comment 的數字,應該是快 200%,30k v.s. 10k)\r\n\r\n然後他就想要弄個 Linux 出來測試,但他對於 LinuxMySQL 的 tuning 不熟,所以就寫了一篇 Linux vs bsd database shootout! Sort of.,希望找到人幫他 tune,結果 LiveJournal 魔頭之一 Brad Fitzpatrick 跳出來說他可以幫忙 MySQL 的部份。\r\n\r\nAnyway,很多人都很期待這次的 benchmark,畢竟 MySQL 發展的重點是在多 CPU 環境 (尤其是 2 core 與 4 core),而非單 CPU 環境。\r\n\r\n之前幫 far (Pixnet 站長,很糟糕的學弟 XD) 弄 search 功能的時候就聽到他在抱怨對 Debian 不熟,可是不得不在上面跑 MySQL... 我想他應該頗高興的 :p", + "title": "FreeBSD 的 ULE 2.0" + }, + { + "id": "1041", + "body": "NIST 打算尋 AES 當初彼此互相競爭的模式訂出新的 Secure Hash Function 以取代現有的 SHA,同時 NIST 也已經要求美國聯邦政府單位使用 SHA-2 (SHA-256) 取代現有的 SHA-1:A Competition To Replace SHA-1。\r\n\r\n整個時程估計大約花三年的時間,希望能在 2010 年看到新的 Secure Hash Function。", + "title": "NIST 打算取代 SHA" + }, + { + "id": "1043", + "body": "上知識家的姿勢要佳 裡面的一段:\r\n
政治人物用網路拼選舉歷來有三個目的:初期是為了用奇招引起主流媒體注意與報導,以及獲得少數精英認同;中期是為了募款以及進行點對點宣傳;後期則是直接將網路意見當成幕僚(偽幕僚)。越到後期,政治人物對網路的依賴就越高,這並不是說他們真的在乎什麼人民的意見,因為他們還是想要透過各種手段操弄這些意見,只是隨著網路茁壯不得不為的舉措。
", + "title": "政治人物用網路拼選舉的目的" + }, + { + "id": "1045", + "body": "大約半年多前有人發現金屬價錢飆漲,一元銅板的金屬價值比面額高,於是就把主意動到一元銅板上面:貴金屬價飆漲 有人蒐集硬幣想發財 央行:小心觸法。\r\n\r\n結果剛剛在 Slashdot 上看到美國的五分 一分 (Penny) 也發生了同樣的情況 XDDD:US Pennies To Be Worth Five Cents?。\r\n\r\n不過這個利潤看起來不是很高,同樣都是犯法的事情,會想要犯法的人應該會考慮到印鈔票會比較快... -_-", + "title": "銅板與金屬" + }, + { + "id": "1046", + "body": "前陣子許多國外的媒體報導了南韓政府公開要求大家不要裝 Windows Vista。一開始大家很納悶,後來有人跳出來解釋了:Why South Korea Is Shackled To Windows。\r\n\r\n依照文章內的說法,1998 年的時候因為電子商務的關係無法等到 SSL 標準化才開始推動 (據文章裡說是 1999,不過 Wikipedia 上面的資料說 SSL 早在這之前就有,1999 是 TLS 1.0 的規格書),於是南韓政府決定使用 ActiveX 當作交易的安全架構。\r\n\r\n而由於 Vista 對於 ActiveX 的限制變嚴格了,很多現有的銀行、政府網站、南韓本地的交易站台全部都無法在 Vista (IE7) 上面運作,於是南韓政府才跳出來叫大家不要裝 Windows Vista,不是為了別的,而是因為短時間內根本無法轉換。\r\n\r\n原文的標題點明了問題的所在:the cost of monoculture。", + "title": "\"the cost of monoculture\"" + }, + { + "id": "1047", + "body": "由於 wiki.yichi.org 一直爛掉,於是就拿著錯誤訊息去找原因,結果發現好像是這個:require and include fails to open file in current directory。\r\n\r\n看起來中了地雷... require() 或是 include() 時的 bug,如果有遇到類似問題的人可以去投票,希望在 5.2.1 的時候能修正...。", + "title": "PHP 5.2.0 地雷" + }, + { + "id": "1048", + "body": "Chad Hurley at the World Economic Forum in Davos talks about his plans for copyright protection and to share revenue with producers.:\r\n", + "title": "關於 Youtube 與其他人分享盈餘的影片" + }, + { + "id": "1049", + "body": "Windows Vista 今天才在美國開賣,已經有人繞過 Windows Vista 的 DRM 了:\r\n\r\n原作者的文章在 Update on Driver Signing Bypass 這篇。", + "title": "Windows Vista DRM" + }, + { + "id": "1050", + "body": "1998 年因 Database & Transaction Processing 而獲得 Turing AwardJames N. Gray 搭著小船在 San Francisco 外海失蹤,目前沒有收到求救呼叫,也找不到他的船隻:Jim Gray Is Missing。\r\n\r\n在台灣應該有不少人看過 Jim Gary (James Gary) 本人,因為去年 Microsoft 有邀請三位 Turing Award 得主 (Niklaus WirthJames N. GrayAndrew Yao) 來台灣參加 『21世紀的運算』學術研討會,當時在圓山飯店舉辦。", + "title": "Jim Gray 失蹤" + }, + { + "id": "1051", + "body": "在 Slashdot 上看到因為負責的單位不想管了,加上下面沒有人在用,於是他們打算註銷 .um 這個 TLDOutdated Domains To Meet Their End。\r\n\r\num 應該是很多字的字尾... hmmm...", + "title": ".um 註銷" + }, + { + "id": "1052", + "body": "Firebug 的作者 Joe Hewitt 親自示範 Firebug 1.0 的使用技巧:Joe Hewitt Firebug power user demo。\r\n\r\n不過影片不太清楚,要知道在幹什麼應該還是要努力用聽的,另外平常最好就有在用 Firebug,這樣聽他講才會比較熟悉...", + "title": "Firebug 的技巧" + }, + { + "id": "1053", + "body": "前幾天在 Google Blogoscoped 主站上看到有簡體中文版的消息 (This Blog in Chinese),在 簡體中文版的網站 上看不出來是誰負責翻譯的,但 Philipp Lenssen (Google Blogoscoped 主站的主筆) 說他知道是誰翻譯的,不過對方希望匿名。\r\n\r\n不過看了幾天簡體中文版的感覺是,該不會是 Google 的員工用 20% 的時間 (還是 80%?) 想要測試簡體中文翻譯的 Project?很多句子看起來很生硬,而且 link 的位置也不正確,感覺很糟糕。\r\n\r\n看得懂英文版的人還是去看英文版,不然有些句子得先翻回英文才看的懂... -_-\r\n\r\nUpdate:Philipp Lenssen 在 comment 說這是用手翻的,不是機器翻的...", + "title": "Google Blogoscoped 中文版" + }, + { + "id": "1054", + "body": "Flickr 要求使用舊系統的使用者 (對,我還沒整...) 在 2007/3/15 前改用 Yahoo! 帳號進行登入:\r\n\r\n\"\"\r\n\r\n這件事情早在 2005/08 的時候有人吵過了,還在 Flickr 上成立了 Flick off ....!.?.!.... 群組 (參考 蔡依林部落格Flickr 分離主義 ? 這篇),而當時吵一吵也就不了了之,在 Yahoo! 發難前的最新一篇文章是在四個禮拜前。(最近應該又會熱絡起來...)\r\n\r\n先放著看看吧...", + "title": "Flickr 與 Yahoo! 的帳號整合" + }, + { + "id": "1055", + "body": "在 Google Blogoscoped 上看到 IP to Icon,講到把 IP address 轉成 Icon 的小程式:Visual Security: 9-block IP Identification。\r\n\r\n轉出來長得像這樣,不同 IP address 會轉成不同的 Icon:\r\n\r\n\"\"\r\n\r\n看起來還蠻有趣的 :p", + "title": "IP to Icon" + }, + { + "id": "1056", + "body": "最近 lighttpd 不斷想辦法壓榨效率,利用各種方式想辦法增加 throughput。\r\n\r\n先是在去年年底的時候發現 I/O block 的問題,在改用 Linux AIO 及 POSIX AIO 取代原來的 sendfile() sync read() 後發現 throughput 增加了 80%:Async IO on Linuxlighty 1.5.0 and linux-aiolinux AIO and large filesPRE-RELEASE: lighttpd-1.5.0-r1477.tar.gz (POSIX AIO)。\r\n\r\n然後覺得 FastCGI 的 overhead 太高,於是 (看起來) 想要用 shm 解決:Faster FastCGIFaster Web 2.0。\r\n\r\n再來就是把 dynamic page 的壓縮也實做出來了:Compression of dynamic content。\r\n\r\n然後最近又發現丟小檔案時,stat() 因為會 block,所以 overhead 算是蠻重的,於是決定把 stat() 的 request 丟到 FastCGI 外面跑:Accelerating Small File-Transfers,而後來又發現用 Threading 會更快:Threaded stat()。\r\n\r\n以這個速度發展下去,在 1.5 正式出版後,從 1.4.13 升級上來的重度使者應該會感覺到 lighttpd 的效率爆增,然後搞不太清楚發生什麼事情?XD\r\n\r\nUpdatesendfile() to sync read()...", + "title": "lighttpd 的進步" + }, + { + "id": "1057", + "body": "小畫家很強,大家都可以在 YouTube 上看到許多神人的影片... 不過有時候有一些特效 (像是漸層) 小畫家沒辦法處理,大多數的人都會想到用 Photoshop,不過 Photoshop 實在太肥大了,所以我試著在網路上找一些替代的方案。\r\n\r\n去年我在網路上看到 Microsoft 搞的 Paint.NET,一些常用的基本功能都有,看起來還不錯,就裝了 3.0 beta 版用,做一些很基本的影像處理,像是圓框、透明圖之類的,後來比較少用也沒有 Uninstall 掉,反而會偶爾打開跑 Online Update 看看有沒有新版 :p\r\n\r\n剛剛打開 Paint.NET 時 Online Update 通知有新版本,發現是 3.0 正式版,更新完以後發現 UI 變蠻多的 (有陣子沒玩了),另外就是增加了一些特效...\r\n\r\n如果你對小畫家的功能不太滿意,但是又覺得用不到 Photoshop 這種怪物的話,可以下載下來玩看看,應該會有蠻多收穫的 :p\r\n\r\nPS:官方網站上說 3.0 版不支援 Windows 2000,所以還在使用 Windows 2000 的可能要碰碰運氣了,我猜只是不針對 Windows 2000 環境測試而已。", + "title": "Paint.NET 3.0" + }, + { + "id": "1058", + "body": "Okay,這應該是 Windows Vista 上市後的第一個安全漏洞:Remote Exploit of Vista Speech Control。\r\n\r\n這個洞很簡單,因為 Windows Vista 可以用聲音控制,所以喇叭的音量如果大到可以讓麥克風收到,就可以對電腦下指令。\r\n\r\nGeorge Ou (發現這個漏洞的人) 實際測試發現音量不用太大,所以如果你用 Windows Vista 有啟用聲控,在連上某些會放音樂的網站時就要小心突然聽到 \"initiate self-destruction sequence\" 之類的句子了 XD:Vista Speech Command exposes remote exploit。", + "title": "Windows Vista 的安全問題" + }, + { + "id": "1059", + "body": "據說這是在士林夜市拍到的 XD:\r\n\r\n\"\"\r\n\r\nVia:Drink-toppers targeted at programmersDrinktops for programmers。", + "title": "Oracle 與 Sun..." + }, + { + "id": "1060", + "body": "在 Kottke 的 Blog 上看到 Amazon 開始接受 Pre-order,看起來美版將在 7/21 發行:Harry Potter and the Deathly Hallows。\r\n\r\n在英文版上的 Wikipedia 也更新了 (中文版的還沒):Harry Potter and the Deathly Hallows哈利波特與致命聖靈。", + "title": "Harry Potter and the Deathly Hallows" + }, + { + "id": "1061", + "body": "有不少人發現他們買回來的 Windows Vista Family Discount 序號不能用:Vista Family Discount Keys Found Not Compatible (原報導在 Vista 'Family Discount' Bites Back)。\r\n\r\nWindows Vista Family Discount 是給少於五台電腦的家庭用的 (更正確一點是少於五台 Windows Vista 用的),僅供北美地區的家庭用。在 Windows Vista BlogMultiple announcements today 這篇有完整的說明。\r\n\r\n有很多人買回來後發現序號輸入進去後發現無效,打電話去 Microsoft 詢問後得到的回答是:「我們知道這個問題,但我們不知道要花多久修正,如果你無法接受的話我們可以退費」,這種回答聽起來會被告翻...", + "title": "Windows Vista 序號問題" + }, + { + "id": "1062", + "body": "這幾天似乎都不太穩定...\r\n\r\n已經有人發現 Google AnalyticsGoogle Finance 發生問題 (Google Flatlines Again),有些則是發現 Gmail 發生問題 (Random outages hitting Google)...\r\n\r\n我自己是在 Google Reader 遇到問題,我本來以為是我訂的 feed 比較多的關係,看起來不是我的問題,而是跟這次集體出事有關 :o", + "title": "Google 的某些服務不正常" + }, + { + "id": "1063", + "body": "在 Slashdot 看到 Microsoft 找人寫的 ODF Converter 已經放到 SourceForge,以 BSD license 讓人使用:Open XML Translator for Microsoft Word Available,不過我在安裝完開一個新檔案 (全新的檔案) 想要存成 ODF 卻出現:\r\n\r\n\"\"\r\n\r\n這是在 Windows XP 英文版 + Office 2003 英文版上安裝 ODF Converter for Word 2003 的結果...\r\n\r\nUpdate:裝了第一個 comment 提的 Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 file formats 後可以轉了,要先存檔後才轉,我試著轉一個空檔案,要轉十秒鐘... @_@", + "title": "在 Word 2003 上安裝 ODF Converter 的結果是..." + }, + { + "id": "1064", + "body": "跟 Microsoft 打官司偶而就會因為法院命令而得知一些公司內部的 mail,像是 James Allchin (Microsoft 的前主管) 在 2004 年一月寫信給 Bill GatesSteve Ballmer,對於 Microsoft 發展 Longhorn (Windows Vista 的前身) 的方向不滿,說他如果不在 Microsoft 上班的話,他寧可去買 Apple 的 Mac... XD:\r\n
I am not sure how the company lost sight of what matters to our customers (both business and home) the most, but in my view we lost our way. I think our teams lost sight of what bug-free means, what resilience means, what full scenarios mean, what security means, what performance means, how important current applications are, and really understanding what the most important problems [our] customers face are. I see lots of random features and some great vision, but that doesn’t translate into great products.\r\n\r\nI would buy a Mac today if I was not working at Microsoft. ... Apple did not lose their way. ...
\r\nVia:Confidential Microsoft Emails Posted Online。", + "title": "James Allchin 寫給 Bill Gates 的信" + }, + { + "id": "1065", + "body": "一年多前用 XSS 對 Myspace 寫出 worm 的小鬼被 Myspace 告的結果出來了,三年緩刑、三個月社區服務、賠償 Myspace 損失、禁止接觸 Internet (不知道多久):MySpace Worm Creator Sentenced。\r\n\r\n幹壞事進步很快,但是不要光明正大的幹,如果想要喚起大眾注意的話,玩陰的也有同樣效果。", + "title": "Myspace XSS worm 案" + }, + { + "id": "1067", + "body": "總是有些人沒事就在看 HTML 以及 Javascript 的 source code 裡有什麼變化 (說不定早就寫成 script 在跑了?),然後在 code 裡面發現 Google Presentation 的消息:Google PowerPoint Clone Coming。\r\n\r\n純粹用 HTML + CSS + Javascript 的 Presentation 嗎?好像很有趣的樣子... :p", + "title": "Google PowerPoint" + }, + { + "id": "1068", + "body": "今天 pavFreeBSD Ports 裡關於管理 ports 的 ports 搬到 ports-mgmt 下了 (好繞口 XDDDD):HEADS UP: portupgrade moved (ports-mgmt)。\r\n\r\n現在最多的還是 devel (兩千多個),再來是 www (一千兩百多個)...", + "title": "FreeBSD ports 新增 ports-mgmt category" + }, + { + "id": "1069", + "body": "這兩天收到的 Mail Spam 似乎比之前多了很多 (雖然 bogofilter 很盡責的濾出來了),有誰有類似的情況嗎?", + "title": "Mail Spam" + }, + { + "id": "1070", + "body": "Lighttpd 仍然持續成長,上個月的佔有率到 0.6%,成為目前全世界第六大 Web server:lighttpd raises market-share to 0.6%。\r\n\r\n\"\"", + "title": "Lighttpd 的佔有率" + }, + { + "id": "1071", + "body": "在 Mac Mini (Mac OS X) 上跑 Mozilla Minefield 3.0a2pre 測試看看... (總是要有冒險犯難的精神?)\r\n\r\n\"\"\r\n\r\n比起前陣子在 Windows 上的情況跑好一些了 (也有可能只是因為 Mac OS X 與 Windows 的環境不同),在 form 裡面輸入中文字至少不會移位,等下多看一些網頁試看看...\r\n\r\n(其實只是因為跑 2.0.0.1 看 Flickr 的圖居然當了三次,而且沒有辦法 reproduce,所以換成 Minefield 碰碰運氣?)\r\n\r\nUpdate:在 Mac OS X 上用 MinefieldFirebugGoogle Reader 會有問題。", + "title": "在 Mac Mini 上跑 Minefield..." + }, + { + "id": "1072", + "body": "WordPress.com 又提供了一個從 Blogger 轉到 WordPress.com 的模組,這次是透過 Google API 直接轉換進 WordPress.comNew Blogger Importer。\r\n\r\n這個轉換模組只接受新版的 Blogger,所以舊版 Blogger 想要轉換到 WordPress.com 只有選擇升級到新版後轉,或是用 WordPress.com 舊的轉換模組轉。", + "title": "Blogger 轉 WordPress.com" + }, + { + "id": "1073", + "body": "Okay,在 Zooomr CEO (Thomas Hawk) 的 Blog 上看到的:Yahoo to Translate Flickr Into Non-English Versions Later This Year。\r\n\r\n這次要求 Flickr 的 Old Skool 選擇 Yahoo! 的帳號進行整合時,在 forum 上引起很多 Old Skool 反彈 (畢竟那麼久還不整合的人都是對 Yahoo! 頗感冒的人),在 forum 上面 Flickr 的人跟 Old Skool 討論時提到整合的原因之一是為了要支援多國語言:(there)\r\n
* it will be waste of resources to build out old skool sign in functionality in each new language when new language versions come out later this year
\r\n看起來 Flickr 今年就會有多國語言的支援了?", + "title": "Flickr 的多國語言" + }, + { + "id": "1074", + "body": "Network SolutionsGeneral Atlantic 併購,金額未公開,不過市場上傳言是 800 million 美金:Network Solutions Acquired By General Atlantic。\r\n\r\n用 GoogleGeneral Atlantic 的資料的時候發現 UDN 兩天前 (二月五號) 的新聞:AKQA 宣佈 General Atlantic 為其新投資合作伙伴...", + "title": "Network Solutions 被 General Atlantic 併購" + }, + { + "id": "1075", + "body": "FreeBSD Wiki 正式從 Beta (以前叫做 wikitest.freebsd.org) 轉進 Official Release (現在叫做 wiki.freebsd.org 或是 sky.freebsd.org):wiki goes into the sky, and more。\r\n\r\nWiki 上面的資料不多,不過對於平常沒有在接觸 mailing list 的人想要知道目前 FreeBSD 的進展應該還算是不錯的來源。", + "title": "FreeBSD Wiki" + }, + { + "id": "1076", + "body": "讓我想到 slzzp 抱怨「我很窮苦」、「你們都誤解我了」的情況...\r\n\r\nSteve JobsApple 網站上發表新聞稿,提出 Apple 對於目前線上音樂市場的看法:Thoughts on Music。\r\n\r\n這篇新聞稿 1) 是由 Apple (目前線上音樂市佔率最高的公司) 的 CEO Steve Jobs,2) 在 Apple 的官方站台上發表,3) 提出 DRM-free 的想法。\r\n\r\n在一堆新聞網站上馬上就有一堆報導 + 評論出來:\r\n\r\n大致上就是 Apple 還是會繼續用 DRM,但是會推動讓音樂產業接受 DRM 並不適合用在音樂上這件事情。", + "title": "Apple 對於 DRM 的看法以及方向" + }, + { + "id": "1077", + "body": "Bill GatesRSA Conference 上宣佈了 Microsoft 會支援 OpenID,這使得 OpenID 的前景愈來愈好了 @_@:Gates Says Microsoft Will Support OpenID。", + "title": "Microsoft 將支援 OpenID" + }, + { + "id": "1078", + "body": "這次是 Firefox 1.5 的安全漏洞,埋伏的人可以利用這個漏洞讀取硬碟裡的任何檔案:Firefox Popup Blocker Allows Reading Arbitrary Local Files。\r\n\r\n沒記錯的話 1.5 還有繼續維護,所以還在用 1.5 的 mclee 大長輩趕快加 RAM 換 2.0 吧... :p", + "title": "Firefox 1.5 的安全漏洞" + }, + { + "id": "1079", + "body": "在 Slashdot 上看到有人在 64 bit 環境下跑 Skype 會出現錯誤訊息,然後他就仔細看了錯誤訊息去 debug,發現 Skype 在啟動時居然會產生一個 .com 的執行檔讀取 BIOS 資訊,但是目前還不知道讀了這些資訊以後到底在幹什麼:Why Does Skype Read the BIOS?。", + "title": "Skype 讀 BIOS 資訊?" + }, + { + "id": "1080", + "body": "也是在 Slashdot 看到的新聞,普渡大學 的科學家發明的一種機器將垃圾轉成能量:Purdue Makes Trash To Electricity Generator。\r\n\r\n這讓我想到 Back to the Future 裡的好像也有同樣的設備... :p", + "title": "將垃圾轉成能量" + }, + { + "id": "1081", + "body": "在 在 KQEMU Changelog 裡可以看到在 version 1.3.0pre10 的時候將 KQEMU 從 Non Open Source License 換成 GPL...\r\n\r\n對一般人沒有什麼影響 (因為本來的授權不管是個人用或是商業用都不收費),只是個政治意義...", + "title": "KQEMU 改用 GPLv2" + }, + { + "id": "1082", + "body": "去年三月跟五月分別寫了兩篇關於智邦 MyShare 的 Spam (Spam智邦網摘師的 Spam 行為),想說以後應該不會再看到類似的內容了,結果現在又來個 KJ:(在 KQEMU 改用 GPLv2 出現下面這個 comment)\r\n\r\n\"\"\r\n\r\n補上之前智邦 MyShare Spam 的內容:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n你要摘錄或是要用 RSS Mashup 是你家的事情,但是不要到別人家留言 Spam!喔喔我知道你要說什麼,你當然不認為這是 Spam,這只是善意的通知而已...\r\n\r\n這讓我想到垃圾郵件最後一行常常有的句子:\r\n
「如果您不想要收到本訊息,請通知我們,謝謝!」
", + "title": "走了一個艾瑪,來了一個 KJ" + }, + { + "id": "1083", + "body": "剛好在 Gillight 學長 的 Blog 上看到這篇:寫C程式,請勿硬幹,裡面提到的:\r\n\r\n另外還有蠻重要的一點,要養成習慣用 版本控制 工具...。", + "title": "Programming 時注意的事情" + }, + { + "id": "1084", + "body": "\"\"\r\n\r\n舉例子就好,在電視、廣播、報紙上會看到記者們說「因為觀眾 (聽眾/讀者) 有知的權利,所以你們應該要告訴社會大眾,blah blah blah」,但我們都知道這是記者用知的權利掩飾後面 blah blah blah 的不當行為。\r\n\r\n另外一個例子是智邦網摘 Spam 的時候,ROACH 把 Spam 行為解釋成「為了得知網友的反應」:\r\n\r\n\"\"\r\n\r\n而這次的事情呢?hmmm...", + "title": "Spam Spam Spam" + }, + { + "id": "1085", + "body": "英國打算對販賣個人資料的人加重處罰,本來的最重處罰是罰款 5000 英鎊,而這次打算加重到關兩年:Jail for Selling Email Lists to Spammers。\r\n\r\n重點是,E-mail Address 也屬於個人資料,所以販賣 Spam 軟體順便賣 E-mail Address 名單的人也算在內。現在訂這個法律,要等到通過,然後第一次用新法判刑,又要再等一兩年了...", + "title": "對個人資料的保護" + }, + { + "id": "1086", + "body": "Google Apps 將對公司及企業收費:Google Apps to Become Paid Service。\r\n\r\n照文章裡的報導,DisneyPixar 考慮把 Microsoft Office 換掉,改用 Google Apps?如果是像 Google Mini 這種 Box 我還可以想像,但我實在沒辦法想像 DisneyPixar 把公司內的資料 (即使只是非機密文件) 丟到 Google 的 Storage 裡面?It's crazy @_@", + "title": "Google Apps 將對企業收費" + }, + { + "id": "1087", + "body": "在 Google Operating System 看到某些地區的 Gmail 不再需要邀請函就能註冊了:More People Can Sign up for a Gmail Account。\r\n
Gmail is now a public beta in Europe, the Middle East and Africa, Brazil, Australia, Russia and Japan, according to BBC. If you live in one of those places, you can go to Gmail.com, and look for \"Sign up for Gmail\" or you can visit this page to create an account.
\r\n包括了歐洲、中東、非洲、巴西、澳洲、俄羅斯、日本。", + "title": "某些地區的 Gmail 不再需要邀請函" + }, + { + "id": "1088", + "body": "我第一眼看到這篇文章的時候第一個想到的是「這不是蘋果日報的圖嗎?」XD\r\n\r\n\"\"\r\n\r\nVia:WSJ story on buzz features a bunch of Netscape Navigators!", + "title": "插圖" + }, + { + "id": "1089", + "body": "兩個安全漏洞:\r\n", + "title": "幾個安全漏洞..." + }, + { + "id": "1090", + "body": "趨勢防毒軟體的安全漏洞:Another Anti-Virus Problem,趨勢官方的安全通告在這裡:Antivirus UPX Parsing Kernel Buffer Overflow Vulnerability,因為 UPX buffer overflow 而產生的安全問題。\r\n\r\n剛剛查 Wikipedia 上的資料才知道 Trend Micro 總部設在日本...", + "title": "趨勢防毒軟體的安全漏洞" + }, + { + "id": "1091", + "body": "µTorrent 1.6.1 版出爐,又再次說明只有 full disclosure 才能促使商業公司注意軟體安全。\r\n\r\nAnyway,這次除了安全性更新外,還改善 (以及修正) 了許多 WebUI 的東西,完整的內容請參考 Changelog。", + "title": "µTorrent 1.6.1" + }, + { + "id": "1092", + "body": "在 mozilla links 上看到 Firefox 2.0.0.1 因為對 DOM 的處理不當造成 Cookie 外漏以及其他的安全漏洞:New Firefox cookie vulnerability, workaround,Bug Report 在 Bugzilla@MozillaZalewski cookie setting / same-domain bypass vulnerability。\r\n\r\n按照 Bug Report 上的說明,問題在於 location.hostname 這個變數上。惡意的站台可以故意將 location.hostname 設為 'evil.com\\x00foo.example.com',於是真正在連 hostname 時會因為 C-style string 而只判讀到 evil.com (於是會連到 evil.com),但 Browser 認為這是 *.example.com,於是把符合 example.com 的 cookie 送出去。另外在 XMLHttpRequest 的處理上也會喪失 Same origin policy,其實這個問題還蠻大的...\r\n\r\n在 mozilla links 上提供一個暫時性的解法,基本原理是禁止網站修改 location.hostname,方法是在 about:config 裡加入 String,設定 capability.policy.default.Location.hostname.set = \"noAccess\" 後重新啟動 Firefox。", + "title": "Firefox 2.0.0.1 安全漏洞" + }, + { + "id": "1093", + "body": "\"\"\r\n\r\n剛剛 AOLAIM 的使用者都可以使用 AOL 的 OpenID serverAOL and OpenID: Where we are。", + "title": "AOL 支援 OpenID" + }, + { + "id": "1094", + "body": "Slashdot 上看到 Google Summer of Code 2007 開放報名了,如同往年,Google 讓許多 Open Source Community 提出 project,由 Google 買單:Google Launches Summer of Code 2007。", + "title": "Google Summer of Code 2007" + }, + { + "id": "1096", + "body": "在 WordPress.com 的 Blog 上看到 WordPress.com 上可以用 LaTeX 數學式了:Math for the Masses。\r\n\r\n用 Google 找了一下發現有人寫出來了:Using LaTeX in WordPress,雖然我自己用不到,不過對於拿 WordPress 來放數學題目的人倒是蠻有用,像是這個:93學年度清華大學數學系應數組碩士班考試高等微積分第五題。\r\n\r\n\"\"", + "title": "在 WordPress.com 上用 LaTeX 數學式" + }, + { + "id": "1097", + "body": "這幾天在寫 OpenID 的 server (以交大裡的三套郵件系統為認證基礎:D2FacultyMail),讀 OpenID Authentication 1.1 規格書發現 spec 寫的好與壞對於規格的推動有很大的差異 -_-\r\n\r\nOpenID 的規格書是屬於超難懂的那種,第一個原因是裡面用了不少關於密碼學的理論或是實做 (HMACSHA-1Diffie-Hellman key exchange),第二個原因是很多細節的地方缺乏具體的定義,如果不直接看其他人已經寫出來的 source code,讀起來很辛苦... @_@\r\n\r\n不管怎麼樣,希望這幾天寫一寫,到時候就可以利用 OpenID 跑很多東西...", + "title": "OpenID" + }, + { + "id": "1098", + "body": "\"\"\r\n\r\nVia:The First BitTorrent。", + "title": "The First Bittorrent" + }, + { + "id": "1099", + "body": "之前在 FreeBSD 的 ULE 2.0 提到要拿 MySQL 測試 FreeBSD 的 ULE 2.0,初步的測試結果出爐了:Benchmarking with sysbench.\r\n\r\n綠色的是 FreeBSD 7-current CVS 版本,而紅色的是 Fedora Core 6 (沒有說明 kernel 版本),跑的是 MySQL 5.0.x (也沒有講真正的版本),所以這份數據... 先看過就好,要有詳細的測試環境資訊才能決定要不要催眠色 far 把 pixnetMySQL 換掉...。(對 Fedora Core 比較熟的人可以說明一下 Fedora Core 6 的 default kernel 是 2.4 還是 2.6?)\r\n\r\n\"\"", + "title": "MySQL 在 FreeBSD 與 Linux 上的效率" + }, + { + "id": "1100", + "body": "2006 年 Turing Award 得主,Fran Allen:\r\n
For contributions that fundamentally improved the performance of computer programs in solving problems, and accelerated the use of high performance computing.
\r\nTuring Award 設立以來的第一位女性得獎人。", + "title": "2006 年 Turing Award 得主" + }, + { + "id": "1101", + "body": "睡醒就看到 CERT 的安全通告:Mozilla Firefox fails to properly handle JavaScript onUnload events:\r\n
By convincing a user to view a specially crafted HTML document (e.g., a web page or an HTML email message or attachment), an attacker may be able to execute arbitrary code with the privileges of the user.
\r\n沒事不要亂逛網站... :o", + "title": "Firefox 安全通告" + }, + { + "id": "1102", + "body": "Slashdot 上看到關於 meeting 的報導,密集的開會似乎是某些公司 (以及學校?XD) 的常態現象... XD:Meetings Make You Dumber。", + "title": "Meeting" + }, + { + "id": "1103", + "body": "PHP 上的大整數運算有幾組 library 可以用:\r\n\r\n不過這兩個 Library 在一般的 Shared Hosting 上通常都不會裝,這使得在 PHP 裡沒有辦法做大數運算。於是就有人把腦筋動到 OpenSSL 也有提供大整數運算的頭上,像是 OpenID (and TypeKey) using native OpenSSL functions in PHP 這篇提出一個 PHP5 的 patch,讓 php5-openssl 把本來就有的 functions 帶出來用,這樣對於未來 Shared Hosting 就方便很多,不用特地去找 PEAR 的大數運算 Class 來做...", + "title": "PHP 上的大整數運算" + }, + { + "id": "1104", + "body": "前幾天提到的 MySQL 在 FreeBSD 與 Linux 上的效率 有比較完整的 benchmark 以及資訊了,下面這張圖 (點進去後找大圖看比較清楚) 有 2.6.{18,19,20.1} 這三個版本的 testing,同時也確定是使用 MySQL 5.0.33 (with MyISAM) 測試。\r\n\r\n\"\"\r\n\r\n更完整的說明參考 Exciting new data from the sysbench comp 這篇。", + "title": "FreeBSD 上跑 MySQL server 的效率問題" + }, + { + "id": "1105", + "body": "十點半睡覺,三點就自己爬起來,躺回去睡,五點半又爬起來... (ouch) 腦袋還不太清醒的時候打開 Google Reader 來看看...\r\n\r\n在 TorrentFreak 看到有人利用 libTorrent 發展 Firefox extension,讓使用者可以在 Firefox 裡面直接透過 Bittorrent 下載,專案的計畫叫做 bitfoxBitFox Adds BitTorrent Support to Firefox。\r\n\r\n不過目前沒看到 package 可以用,要用的人要自己用 SVN 下載,然後再自己 compile...。", + "title": "Firefox 裡下載 Bittorrent" + }, + { + "id": "1106", + "body": "在 TorrentFreak 看到 BitTorrent.com 終於要開始賣影片的消息:BitTorrent.com Launches Video Store。\r\n\r\n這次的影片包括了從 Warner Bros20th Century FoxMTV Networks, Paramount PicturesLions GatePalm PicturesMGM 這些製片商所發行的影片,透過 Windows DRM 的「保護」以及 Bittorrent 的協定傳輸,不過 TorrentFreak 的文章裡也說了這是沒有搞頭的,因為盜版的品質不會比較差,而且沒有 DRM 的限制...。", + "title": "BitTorrent.com 開始販賣影片" + }, + { + "id": "1107", + "body": "普渡的強者們發展出只有二十磅 (大約九公斤) 的物質分析儀器,比目前在實驗室的儀器輕了三十倍,於是很多人就很直接想到 Star Trek 裡的 Tricorder (三度儀):Purdue Unveils a Tricorder。\r\n\r\n\"\"\r\n\r\n這台原型機看起來好像是二十年前在博物館看到的東西... XD", + "title": "三度儀?" + }, + { + "id": "1108", + "body": "在汪長輩 (笨狗?) 的 Blog 上看到 Wifly 也提供學生帳號漫遊的服務,與一般帳號不同,每 20mins 會斷一次,拿來查資料應該還 okay...:校園漫遊上網專案,免費使用WiFly網路。\r\n\r\n哪天連 CHT 3G 網路都不能用再去試看看好了 @_@\r\n\r\nPS:說到這個突然想到,不知道有沒有人在 phishing Wifly ... :p", + "title": "Wifly" + }, + { + "id": "1109", + "body": "在 irc 上看到的:\r\n
11:58 <@y> http://blog.bs2.to/liny hmm
\r\n看起來剛開始寫活力十足...", + "title": "林一平的 Blog" + }, + { + "id": "1110", + "body": "這個好!XDDDD\r\n\r\n\"\"", + "title": "HTML" + }, + { + "id": "1111", + "body": "這是個老問題了,常常被提出來問,像是:我下載 RAR時 或是 FF有時候下載檔案會判斷錯類型。\r\n\r\n這是因為某些網站因為沒設定好,用 Firefox 下載 RAR 或是 torrent 檔時會要求瀏覽器把檔案內容當作 Text 而直接顯示在頁面上。但 IE 不管這套,他看到副檔名是 .rar 或是 .torrent 就去系統查是哪個應用程式要處理。\r\n\r\n以前遇到這類問題時會沒什麼好方法,一般都是開 IE 下載,但現在這個問題現在已經可以用 Force Content-Type 這個延伸套件解決,我會設定成 application/octet-stream,讓 Firefox 可以出現下載的視窗:\r\n\r\n\"\"\r\n\r\n要注意一點,URL 路徑是以 Regular Expression (正規表示式) 判斷,所以要注意 * 的意義。\r\n\r\nRAR 下載產生問題現在比較少遇到了,倒是用 Bittorrent 的時候會去一些 Torrent Hosting 的站台,像是 2kdownmimima,這些站看起來是同一批人 & 程式,都會送 text/plain 出來,結果就是 IE Download Only... 把這些站的 fetch.php 放進去後就可以正常下載了。", + "title": "解決 Firefox 下載 RAR/torrent 的問題" + }, + { + "id": "1112", + "body": "事情大致上是這樣的:Stefan Esser 本來在 PHP Security Response Team,後來因為對於 Security Response Team 處理安全漏洞的態度不滿 (依照 PHP Security From The Inside 裡的敘述,這些人處理安全漏洞的方式常常是挖東牆補西牆,像是針對某個 exploit code 修正讓他不能用,結果只要把本來的 exploit code 改一改又可以動了),於是他決定離開 PHP Security Response Team,舉辦一個 the Month of PHP Bugs 的活動,每天公佈一個 PHP 本身的 security bug (包括 PHP core、PHP extension、Zend engine)。\r\n\r\n以目前 the Month of PHP Bugs 丟的速度來看 (在美國三月四號剛結束),這個月丟完可能會有接近一百個 bugs... 不過以 PHP team 的情況看起來,很有可能會擺爛等到月底再出個 4.4.7 與 5.2.2,所以自己多保重,有燒香有保佑...\r\n\r\n也許應該訂個 mailing list 看一下到底是怎麼樣好了。", + "title": "PHP 安全漏洞" + }, + { + "id": "1113", + "body": "以前都是用 portupgrade 管理套件的更新,不過 portupgrade 的速度不太好 (在 FreeBSD 的 mailing list 上有人說是因為 Ruby 的關係,不過我覺得應該是程式的問題...),後來在 #bsdchat 上看到用 sh 寫的 portmaster,拿來試了以後發現速度比起 portupgrade 快多了,就用了一陣子,沒什麼大問題的話就可以跳槽過來...\r\n\r\n在 portupgrade 有個功能在 portmaster 似乎是沒有的,也就是在 compile 時設定一些參數,像是編 MySQL 時需要 WITH_XCHARSET=all,所以就要找其他的套件來替代,也就是標題提到的 portconfportmaster + portconf 後更新 ports 目前暫時沒看到什麼問題,也許再跑個一陣子試看看,沒問題就把 portupgrade 拿掉。", + "title": "portupgrade、portmaster、portconf" + }, + { + "id": "1114", + "body": "在 Lighttpd 的佔有率 這邊講到 Lighttpd 的佔有率是 0.6%,這是依據 February 2007 - Web Server Survey 這份資料算出來的結果。\r\n\r\n這個月 Lighttpd 的佔有率已經到 1.2% 了:March 2007 - Web Server Survey,已經超越了 Zeus,而且看起來四月的報告有機會超越 \"unknown\" 這一項,成為 Netcraft 統計表上第三大 Web Server。", + "title": "Lighttpd 的佔有率暴漲" + }, + { + "id": "1115", + "body": "WordPress.com 也加入 OpenID IdP 的行列:You can now use your WordPress.com blog as an OpenID.,換句話說,WordPress.com 的使用者可以用他們的 Blog URL 當作 Identity 到其他網站認證...", + "title": "WordPress.com 支援 OpenID" + }, + { + "id": "1116", + "body": "在 W3C 的網站上公告:W3C Relaunches HTML Activity。\r\n\r\n我喜歡 Simon Willison 給的說明 XD:\r\n
\"XHTML has proved valuable in other markets\" == XHTML on the public Web has failed. Long live HTML!
\r\n\r\n說到這個,我就想到前幾天看到的文章「Browser Wars: Mozilla, IE, Opera join up for a panel discussion」,這篇裡面有段影片,包括了 MicrosoftMozillaOpera 的三個人上台表述關於 Browser 的事情,其中 Microsoft 的人說「我們有責任維持相容性」(其實是「我們有責任讓亂寫的網頁還是可以動」),Firefox 的人說「別指望 W3C 那群人」(噗),而 Opera 的人說「現在 Wii 上面都用 Opera,所以不要小看我們」,然後拿 IE 跑 ACID2 的結果取笑了微軟的傢伙 XD\r\n\r\n最後則是虧了 Apple 的人 XD", + "title": "W3C 重新發展 HTML" + }, + { + "id": "1117", + "body": "Skype Prime:Skype Prime™ Beta — introducing the global expertise marketplace。\r\n\r\n簡單的說就是你也可以自己建立 Skype 上的 0204 電話:你設定了價碼,別人打給你的時候扣錢,Skype 在中間抽 30% 的費用。帳務的部份當然是透過 Paypal 進行付款的動作 :p\r\n\r\n畫面長這樣:(官方 Blog 上的圖)\r\n\r\n\"\"\r\n\r\n目前僅限於 Windows 上,3.1beta 的版本可以使用。", + "title": "Skype 新服務:Skype Prime" + }, + { + "id": "1118", + "body": "在 Boing Boing 上看到有趣的東西:Bullet-proof raincoat XD\r\n\r\n\"\"\r\n\r\n據說是 $2000 (應該是美金),不過原始的網站已經被 Boing Boing 導過去的流量弄垮了 XD\r\n\r\n\"\"", + "title": "防彈雨衣" + }, + { + "id": "1119", + "body": "ReactOS 是一套 Open Source (GPL) 的作業系統,他與其他的系統最大的不同在於他是為了要跟 Windows XP 相容:\r\n
ReactOS® is an advanced free open source operating system providing a ground-up implementation of a Microsoft Windows® XP compatible operating system. ReactOS aims to achieve complete binary compatibility with both applications and device drivers meant for NT and XP operating systems, by using a similar architecture and providing a complete and equivalent public interface.
\r\n\r\n這套系統在昨天釋出了 0.3.1 版,距離上次 0.3.0 版已經有半年了,所以你也可以在 ChangeLog-0.3.1 看到超長的 ChangeLog 文件。在 Download 頁面提供了四種檔案讓你選擇:Installation CD、Live CD、QEMU Image、VMware Image,等下抓個 Live CD 測試看看...。", + "title": "ReactOS 0.3.1" + }, + { + "id": "1120", + "body": "上一篇提到了 ReactOS 0.3.1,於是我就燒了兩片出來,一片是 Installation CD,另外一片是 Live CD。\r\n\r\n先拿了 Live CD 玩,在 IBM x31 上用 USB CD 開機,結果開機畫面一閃過去 (有稍微瞄到 ReactOS 的畫面),接下來就出現藍色螢幕,等了一分鐘看起來完全沒在動,就把電腦關掉了... @_@\r\n\r\nInstallation CD 也是差不多的情況,讀完一堆 driver 後就不會動了,也許應該拿其他電腦試看看...", + "title": "ReactOS 的試用情況" + }, + { + "id": "1121", + "body": "據大光頭 kris 說現在 BSD tar 的速度比 GNU tar 好:BSDtar performance vs GNUtar。\r\n\r\nBSD tar 本來比 GNU tar 慢了 40%,這陣子 Tim Kientzle 做了不少工,利用/配合 libarchive 的功能處理 (參考 3/11 的 cvs commit),於是現在大約比 GNU tar 快 5%。(不多,不過看起來就很爽?)", + "title": "FreeBSD 上的 BSDtar" + }, + { + "id": "1122", + "body": "去新竹一趟結果感冒猛噴鼻水,gosh...\r\n\r\nAnyway,回正題,蔡依林大姊姊 在 #bsdchat 上丟了一個 link 出來:OpenBSD's IPv6 mbufs remote kernel buffer overflow,號稱超級安全的 OpenBSD 被來一發 Remote Exploit,然後官方網頁上本來是 only one 的部份也更改成:\r\n
Only two remote holes in the default install, in more than 10 years!
\r\n看了一下說明,只有 IPv6 的部份有問題,所以 kernel 裡沒有 IPv6 的人可以不用擔心...", + "title": "OpenBSD 安全漏洞" + }, + { + "id": "1123", + "body": "雖然 BloglinesGoogle Reader 都很慢 (慢的地方不一樣),不過還是換回 Bloglines 好了...\r\n\r\nGoogle Reader 是慢在 Javascript 的速度,這會讓我整個 Browser 頓住幾秒鐘完全不能動 (像是第一次開啟、讀另外二十筆資料),而 Bloglines 是慢在 Ask Jeeves 的伺服器上...", + "title": "換回 Bloglines" + }, + { + "id": "1124", + "body": "先前提到在 LinuxMySQL 的問題,在 Update on the linux scaling situation. 提到了兩個 link:\r\n\r\n在第一個 link 裡,在一台 4 CPU 的 PPC 64 有發現類似的現象:\r\n\r\n\"\"\r\n\r\n中間 debug 的過程就不講了,最後發現是 glibcmalloc() 的問題,用 LD_PRELOAD 把 Google 提供的 tcmalloc 替換掉後就恢復了:\r\n\r\n\"\"\r\n\r\n那個法鵝大站的站長,如果你覺得 MySQL 太慢的話掛個 LD_PRELOAD 的 patch 上去... :p", + "title": "Linux 上 MySQL Scalability 的問題" + }, + { + "id": "1125", + "body": "Zooomr 經過比無名還久的「維修」後,終於恢復了:Zooomr Mark III: Update Five! (A Must Read)。\r\n\r\n最直接的改變就是上傳的容量限制跟 Flickr 一樣變成無限大:\r\n\r\n\"\"\r\n\r\n喔對,我前幾天把 Firefox 換回來了,現在跑的是 latest-mozilla1.8 (目前是 2.0.0.3pre) 這個版本。", + "title": "Zooomr 恢復正常" + }, + { + "id": "1126", + "body": "雖然大家都知道 Myspace 很多洞 (就一個封閉式的網站而言,跟開放原始碼的 phpBB 有得拼...),於是有人就想到最近很熱的 \"Month of XXX\":April to See Month of MySpace Bugs。\r\n\r\n不過居然從 4/1 開始 XDDD MOMBY 的網站 還特地說明:\r\n
When are you starting?\r\nWere you not paying attention? April 1, 2007. Yes, we know. No, it's serious. No, not really.
", + "title": "四月!每日一 Myspace Bug!" + }, + { + "id": "1127", + "body": "在 VMware 裡面裝了 DragonFly BSD 1.8,然後用看看,想要知道 DragonFly BSDFreeBSD 差多少。\r\n\r\n\"\"\r\n\r\n目前 DragonFly BSD 的套件管理系統是透過 pkgsrc,也許應該去翻翻 mailing list 之類的地方翻翻看有沒有什麼奇技淫巧...\r\n\r\npkgsrc 所造成的主要的幾個差別在於:\r\n\r\n弄完 package system 後,再來是 make kernel 與 make world,只有一些小改變,第一個是本來有 /sys 的 symbolic link (會指到 /usr/src/sys),現在沒有了。第二個是本來在 /usr/src/sys/i386/conf 下的設定檔,現在在 /usr/src/sys/config 下。\r\n\r\n從 1.8.0 升級到最新版的方法跟 FreeBSD 差不多,先跑 cvsup 更新,再到 /usr/src 下跑 make buildworld、make buildkernel、make installkernel、make installworld (跟以前一樣,中間的 buildkernel + installkernel 可以合併成 kernel),最後跑 mergemaster,然後重開機,接下來就應該可以看到 1.9.0 的版號了。\r\n\r\n不過最近 kernel 好像有個 bug,在 irc 上也有看到... 我的只有 491%,IRC 上有人說他看到 1600%... XD\r\n\r\n\"\"\r\n\r\n大致上就是這樣,有興趣的可以自己跑個 VMware 起來玩玩看 :p", + "title": "DragonFly BSD 1.8" + }, + { + "id": "1128", + "body": "先提供幾個 link:\r\n\r\n國外有很多大學的計算機中心 (或是類似的單位) 常常會收到 RIAA (Recording Industry Association of America) 或是 MPAA (Motion Picture Association of America) 的通知,告知某個 IP address 在某個時間有利用什麼樣的 Protocol (BitTorrenteDonkey Network、IRC 或是 FTP) 從事 RIAA/MPAA 認為的「非法分享行為」。\r\n\r\nUniversity of Wisconsin 的作法是:我們會在校園內宣導合理使用校園網路的政策,但除非收到合法的法院傳票,不然不會提供 RIAA/MPAA 任何資料,也不會將所謂的「通知信」轉交給當事人。\r\n\r\n聽說最近學校 (交大) 計中主任換人後就聽到傳言說以後 RIAAMPAA 通知有侵權行為就要先記過?來看看這個傳言到底怎麼樣好了...", + "title": "University of Wisconsin 對於 RIAA 控訴的程序" + }, + { + "id": "1129", + "body": "剛好在 MySQL 5.1 版的 Unicode Character Sets 這章翻到這兩者的不同。\r\n\r\n我想我應該會用 utf8_general_ci 吧...", + "title": "MySQL 的 utf8_{general,unicode}_ci" + }, + { + "id": "1130", + "body": "以往都是用 ports 裝完 pecl-APC 就不管他了,反正感覺得出來有變快後就會覺得很棒就不管其他的。昨天從 mclee 那邊才知道 APC 有個 apc.php 可以看 APC 運作的情況,如果是裝 ports 版本的人可以在 /usr/local/share/doc/APC 下找到。\r\n\r\n由於 colo-lt 有時候 php 會爆走,於是我把 apc.php 拿到 colo-lt (我 blog 所在的主機) 上看以後發現原來 cache rate 超低,只有 65% 左右,看了一下設定檔的說明文件,把 cache size 從預設的 30MB 調整到 128MB 後,現在 cache rate 可以到 98%,速度應該會比以前快很多 @_@\r\n\r\n另外補充一點,在 apc.php 同一個目錄下放個 apc.conf.php,並且在裡面設一些東西,就可以在 apc.php 的報表上看到完整的路徑 (預設是用 <hidden> 保護起來),不過這樣就要記得把 apc.php 用 htpasswd 或是其他方式保護起來:\r\n
<?\r\ndefaults('USE_AUTHENTICATION', 0);\r\n?>\r\n
", + "title": "APC 的設定" + }, + { + "id": "1131", + "body": "前幾天去 makoto 家的時候 X31 當了兩次,不過後來換個位置後又沒事,所以一直以為只是過熱而已。剛剛在家裡跟 mclee 在改 code 的時候又當掉,重開後就再起不能...\r\n\r\n查了一下還在三年保固內,星期一送去台北修,然後看看情況怎麼樣。這幾天暫時得用 Mac Mini 上來晃了 @_@\r\n\r\nUpdate:又暫時可以用了... 星期一還是去看看好了。\r\n\r\nUpdate:開沒半個小時出現藍色死亡螢幕,然後自動重新開機後又不行了...\r\n\r\nUpdate:早上起來把電腦打開,把週邊硬體都拔乾淨 (不接 USB 滑鼠、外接硬碟、連網路都不接),純粹用電池的電跑 Winamp,結果跑到電池 0% 都沒當,於是接上變壓器,順便把所有週邊裝置都裝上去...\r\n\r\nUpdate:又當了,實在是不懂到底是怎麼樣...\r\n\r\nUpdate:早上拿去台北 (國父紀念館附近) 修了。\r\n\r\nUpdate:剛剛打電話來了,說主機板後方有液體痕跡,報價是 $26k,我跟他說謝謝不用了 :p 差不多該去找新的 Notebook 了 :p", + "title": "IBM X31 掛了" + }, + { + "id": "1132", + "body": "結果弄了一台 IBM R60 磚頭回來 (反正本來就是當 Desktop 在用),拿到以後先重裝 OS...", + "title": "換 Notebook" + }, + { + "id": "1133", + "body": "在 TechCrunch 上看到 Yahoo! Mail 將在五月將儲存空間的限制移除:Yahoo Mail Announces Unlimited StorageYahoo! 的官方說明在 Yahoo! Mail goes to infinity and beyond 這篇。\r\n\r\n對於使用 Yahoo! 信箱放一堆附件的人應該相當開心,以後不用特地砍掉附件之類的東西了?", + "title": "Yahoo! Mail 將在五月升級" + }, + { + "id": "1134", + "body": "在 University of Wisconsin 對於 RIAA 控訴的程序 裡面我聽說要記過,剛剛在 nctu.talk 板上看到左先生 (技術發展組) 貼的文章了:交大計網中心公告。\r\n\r\n聽起來好多漏洞的呢...", + "title": "收到校園侵權的通知:記過" + }, + { + "id": "1135", + "body": "大多數的情況下,Javascript 的大長輩們都會建議使用 Object Detection 判斷瀏覽器是否支援某些功能 (像是 ppk 寫的 Object Detection,或是 Apple 文件提到的 Object Detection),而避免使用 Browser Detection 決定。\r\n\r\n不過在某些情況還是需要利用 Browser Detection 判斷,像是針對 IE 的處理 (bugfix :p),這時候就得用 Browser Detection 判斷。\r\n\r\n在 Dean Edwards 的 Blog 上看到了這段 Browser Detection 的 code:\r\n
var isMSIE = /*@cc_on!@*/false;
\r\n另外在 comment 裡有人提出更短的 code:(意思一樣,把 false 用 !1 取代)\r\n
var isMSIE = /*@cc_on!@*/!1;
\r\n在 MSDN 上有說明 @cc_on 的用法:@cc_on Statement,用這個方法看起來頗精簡的 :p", + "title": "用 Javascript 偵測 Browser 的技巧" + }, + { + "id": "1136", + "body": "裝了 Opera 9.1 測試 (上次是去年五月,在 試用 Opera 9.0 Beta 這篇),速度當然就不用提了,不管是看什麼頁面都很快。\r\n\r\n目前拿他來收 Gmail 的信,查查資料 (不需要用到 Form 輸入東西的),改 Wikipedia 的文章,看 Bloglines 上的 RSS feed,其他的網站就比較沒辦法了...\r\n\r\nPS:有沒有誰知道上面有類似 Adblock 可以用的?我不要自己輸入一堆名單,希望可以像 Firefox 上一樣,輸入一個 URL 後會去自動更新...", + "title": "Opera" + }, + { + "id": "1137", + "body": "Dean Edwards 最近好像很 high 的樣子,先是弄了一個 Javascript library 實做 Web Standards,現在又想要用 Google Code 提供的 Subversion Repository 當作一般性的 static files hosting,拿來放 Javascript 檔案:Using Google To Serve Faster JavaScript。\r\n\r\n我測了一下,這個方法在 Windows 上的 IE6/Firefox/Opera 都可以動,不過這實在太惡搞了,搞太大鐵定會被 ban 掉的... XD\r\n\r\nUpdate:我在 comment 跟他說試著修改 svn:mime-type 看看後,他就真的跑去測試,然後也如同預期的一樣噴出 text/javascript (本來是 text/plain),這聽起來真是太糟糕了 :o", + "title": "用 Google Code 放 Javascript..." + }, + { + "id": "1138", + "body": "Netcraft 會在每個月一號丟一篇 Web Server 市佔率的報表出來,並不會因為是 4/1 就亂寫 (吧?):April 2007 Web Server Survey。\r\n\r\n這個月比較特殊的地方,是把 Lighttpd 也列到文章裡了:\r\n
This month the Web Server Survey adds public tracking of lighttpd, an open source server designed for high-performance sites that has been gaining popularity in recent months.
\r\n不過這個月反而比上個月差,大概是版本出的不夠頻繁?XD", + "title": "四月份 Web Server 市佔率統計" + }, + { + "id": "1139", + "body": "看到幾個比較有趣的 XD\r\n\r\n有看到其他的再 Update...", + "title": "愚人節新聞" + }, + { + "id": "1140", + "body": "早上重新打開 Firefox 就發現 Firebug 有新版 1.0.3,沒想到是對 0-day 的安全性更新。\r\n\r\n剛剛在 Bloglines 上看到有不少 Blog 提出警告了:\r\n\r\n最後,附上作者的說明:Security Update。", + "title": "Firebug 安全性更新" + }, + { + "id": "1141", + "body": "pjdZFS 移植到 FreeBSD 上 (CDDL 授權):Please welcome ZFS - The last word in file systems.。\r\n\r\n換句話說,最新版的 FreeBSD 7-CURRENT 有 ZFS 可以用了,不過目前還不能當開機磁碟...。", + "title": "FreeBSD 上的 ZFS" + }, + { + "id": "1142", + "body": "四月... 好多新番... +_+\r\n
    \r\n\t
  1. ICE
  2. \r\n\t
  3. KISSDUM
  4. \r\n\t
  5. Over Drive
  6. \r\n\t
  7. Saint Beast
  8. \r\n\t
  9. sola
  10. \r\n\t
  11. 小女神花鈴
  12. \r\n\t
  13. 大劍
  14. \r\n\t
  15. 女優大試煉
  16. \r\n\t
  17. 火箭女孩
  18. \r\n\t
  19. 天元突破 紅蓮之眼
  20. \r\n\t
  21. 手機少女
  22. \r\n\t
  23. 光明之淚
  24. \r\n\t
  25. 青空下的約定
  26. \r\n\t
  27. 怪怪怪的鬼太郎
  28. \r\n\t
  29. 怪物王女
  30. \r\n\t
  31. 神曲奏界
  32. \r\n\t
  33. 桃華月憚
  34. \r\n\t
  35. 偶像大師
  36. \r\n\t
  37. 旋風管家
  38. \r\n\t
  39. 黑之契約者
  40. \r\n\t
  41. 精靈守護者
  42. \r\n\t
  43. 鋼鐵三國誌
  44. \r\n\t
  45. 藍蘭島漂流記
  46. \r\n\t
  47. 羅密歐與茱麗葉
  48. \r\n\t
  49. 瀨戶的新娘
  50. \r\n\t
  51. 魔女狩獵者
  52. \r\n\t
  53. 魔法少女奈葉 StrikerS
  54. \r\n
\r\n繼續追加...", + "title": "四月..." + }, + { + "id": "1143", + "body": "翹起來了... 看起來真糟糕...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n感謝拍照的 mclee 大長輩... 看起來又要拿去國父紀念館那邊的維修點了吧 :/", + "title": "R60..." + }, + { + "id": "1144", + "body": "連 Spam Karma 都出語言包了:SK2 in Your Language。\r\n\r\n有看到繁體中文的檔案,有需要的人 (像是幫別人裝 WordPress 的人?) 可以套上去用...", + "title": "Spam Karma 2 語言包" + }, + { + "id": "1145", + "body": "PrimeBase XTMySQL 上的另外一個支援 Transaction 的 Storage Engine。\r\n\r\nMySQL Performance Blog 上對 PrimeBase XT Storage Engine for MySQL 進行了一番測試,主要的比較對象是 InnoDB。\r\n\r\n除了 SELECT BETWEEN 的部份有些問題 (看起來是 lock 的問題,只能用到一顆 CPU 的資源) 而輸了不少外,其他的部份看起來都不錯。整體看起來比 InnoDB 好,不過並沒有好到有強烈的慾望換掉 :o\r\n\r\n在 Oracle 買下 SleepycatInnoDB 後,不知道會不會又出手買這些公司 XD (如果真的這樣做,陰謀好像很明顯...)", + "title": "PrimeBase XT Storage Engine for MySQL" + }, + { + "id": "1146", + "body": "\"\" 這是中華電信新換的 ADSL 數據機的照片。\r\n\r\n之前家裏用的 ADSL 數據機問題實在很多... 舊的是康全的小白龜 (Alcatel Speed Touch 340),偶而會熱當 (喂喂,那時候是冬天耶),加上會衝 IP (不管內部網段用什麼 IP address,他看到 ARP request 就回一下),然後 ADSL 線路似乎也有問題,WLK 燈偶而會熄掉 (於是就斷線),於是上個禮拜五(還是六?)打電話去報修,星期一就來看,於是就換這台上去...\r\n\r\n目前看起來衝 IP 的情況解決了,剩下的要用時間才知道...", + "title": "換 ADSL 數據機" + }, + { + "id": "1147", + "body": "FreeBSD 的季報告書出來了:FreeBSD Quarterly Status Report。這一季做的東西很明顯可以感覺到比較偏向感覺得到的,成果也很輝煌啊 XD\r\n\r\n首先是 SMP Scalability,除了不斷的拔大鎖 (Giant-lock-free) 外,另外也改寫了 filedesc lock、ULE。\r\n\r\n另外一個讓更多人興奮的是把 OpenSolaris 上的 ZFS 移植到 FreeBSD 上。\r\n\r\n再來是因為 Linux 上的 Driver 比較多,所以仿照 Project Evil 的方式,寫個 kernel module 實做一層 emulation layer,利用 ports 把 Linux 上的 GPL Driver 搬上來... 不過目前只有 WebCam,之後應該會有更多的計畫 :o\r\n\r\ntrunk(4) 也進入 -HEAD 了,看起來 7.0 可以直接用 trunk,而不需要用 netgraph 的 ng_one2many 了。(結果 netgraph 除了 mpd 外還是沒什麼人用...)\r\n\r\n再來是繼續對 malloc() 改善,不過不知道 benchmark 出來會改善多少...\r\n\r\nPS:bsdtar 居然沒寫出來...", + "title": "FreeBSD 季報告書" + }, + { + "id": "1148", + "body": "lighttpd 的官方 Blog 上放 prerelease 版出來讓大家測試了: PRE-RELEASE: lighttpd-1.4.x.r1737。\r\n\r\n大多數都是 bugfix,新功能大多都在 1.5 上開發,不過還是有一些:\r\n", + "title": "lighttpd 1.4.14 預備" + }, + { + "id": "1149", + "body": "這是我用 Force Reload 強迫重讀的結果,Firebug 會很清楚的告訴你情況:\r\n\r\n\"\"\r\n\r\nPS:突然發現剛好留下副標題... XD", + "title": "用 Firebug 看頁面讀取狀況" + }, + { + "id": "1150", + "body": "前十名「不要」裝的 Firefox Extension:Top 10 Firefox Extensions to Avoid。(原文在 Computer World 的 Top 10 Firefox extensions to avoid,副標題是 Just because an extension is popular doesn't mean it belongs in your Web browser. XD)\r\n\r\n看完以後反而害我想多裝幾個起來 XD", + "title": "前十名「不要」裝的 Firefox Extension" + }, + { + "id": "1151", + "body": "最近 Opera 出了 9.20,剛剛用 Opera 內建的 Check for updates 卻沒有反應,只好抓下來依照標準程序更新:先反安裝舊版再裝新版。\r\n\r\n這一個版本最大的新功能在 Speed Dial,在開新視 Tab 的時候就可以看到介紹了,不然在 Opera browser: Features 這頁也有簡單的說明。\r\n\r\n我現在用 Opera 主要是拿來收 Gmail 的信,其他的網站對 Opera 支援度不是很好 (而且有廣告),還是拿 Firefox 看就好...", + "title": "Opera 9.20" + }, + { + "id": "1154", + "body": "Memtest86+ 是一套測試記憶體正不正常的工具,抓了 ISO 以後燒起來,然後丟到測試的電腦接上去,用光碟開機,就會跑測試程式了...\r\n\r\n為甚麼突然講呢?因為家裏的 Desktop 有問題,開機的時候會出現找不到 pci.sys,放 Windows 光碟進去也會出現錯誤訊息,找了一下發現微軟這篇「使用損壞或不相容硬體所造成的 Windows XP 問題」所說的症狀完全符合,看了一下解法,好像是 PCI 卡,或是記憶體的問題,於是想先拿專門測試記憶體的軟體測...\r\n\r\n結果一測下去發現有一條 256MB 壞了,看來要找時間去換...", + "title": "Memtest86+" + }, + { + "id": "1155", + "body": "Yahoo UI Library 2.2.2 釋出:YUI Version 2.2.2: Bug-Fix Release,修正一些 bug,詳細的修正內容可以參考 YUI 2.2.2 — Bug Fix Release 這篇。\r\n\r\n主要是修正 Javascript 的部份。", + "title": "YUI 2.2.2" + }, + { + "id": "1156", + "body": "目前會繼續看下去的:(如果沒爛掉的話...)\r\n\r\n另外這個比較早,不太能算春番:\r\n", + "title": "春番" + }, + { + "id": "1157", + "body": "可以看到 lighttpd 1.5 準備釋出的消息了:PRE-RELEASE: lighttpd-1.5.0-r1811.tar.gz。\r\n\r\n除了之前的那些外,又多加上了 Upload Progress 的支援 (一般都是用 Language support,像是 PHP 提供的 pecl-uploadprogress 或是 APC,但 lighttpd 打算直接在 Web Server 支援),要玩看看的人可以在 /dev/null 這頁測試。", + "title": "lighttpd 1.5 準備" + }, + { + "id": "1158", + "body": "兆豐商銀憑證管理工具使用手冊 的第七章對「為什麼採用電子憑證之授權交易在執行時,一直出現「安全性資訊畫面」?」的說明:\r\n\r\n\"\"\r\n\r\nUpdate:第一個,畫面跳出安全性資訊是因為在 https:// 網頁上夾雜 http:// 資訊,這不是 IE 的 bug,而是兆豐金的人設計網頁時的安全漏洞。如果沒有特殊設定,那麼在 SSL 所建立的 Cookie 會因為抓取 http:// 資料而從 Non-SSL 下從網路上傳輸。\r\n\r\nIE 會出現警告訊息是正確的作法,因為這本來就有安全問題。\r\n\r\n第二個,SSL 連線裡面需要的不只是一種加密方式,一般比較常見的連線是 RSA 1024bits + RC4 128bits (左圖) 或是 RSA 1024bits + AES 256bits (右圖),所以在說明書裡面故意把 \"1024bits\" 與 \"128bits\" 放在一起誤導使用者「1024 > 128」是很糟糕的事情:\r\n\r\n\"\" \"\"\r\n\r\n第三個,兆豐金宣稱使用的 RSA 1024bits + 3DES 與現有 SSL 在使用的 RSA 1024bits + RC4 128bits 比較,會不會比較安全,我覺得... errr...", + "title": "把使用者當笨蛋..." + }, + { + "id": "1159", + "body": "在 #bsdchat 上問了 Subversion 能不能 Commit without change,rafan 說不行。(跟我用 Google 找的結果差不多,看起來他以前應該也找過)\r\n\r\nCommit without change 通常是拿來紀錄事情用的,在 FreeBSD 的 cvs log mailing list 上常常可以看到,不過通常會用 \"force commit\" 這個詞來表示:\"force commit\" site:lists.freebsd.org。\r\n\r\n丟到 Blog 上希望能在 Subversion 上找到替代方案,有誰有建議的嗎?:Q", + "title": "Subversion 下的 Commit without change" + }, + { + "id": "1160", + "body": "幅度約 5.4%... 請參考 Taiwan.CNET.com 的說明:中華電信調降ADSL電路費。\r\n\r\n本來是要降在 8M 與 12M 的,結果被 NCC 打槍,結果將最多的變成 256K 的線路... 喂!\r\n\r\nPS:中華電信的網頁上的費率還沒更新。", + "title": "ADSL 降價" + }, + { + "id": "1161", + "body": "PuTTY 出新版:\r\n
2007-04-29 PuTTY 0.60 is released\r\nPuTTY 0.60 is out, containing mostly bug fixes.
\r\n主要是修正 Serial Connection 的問題。", + "title": "PuTTY 0.60" + }, + { + "id": "1162", + "body": "從 Amazon S3: New pricing model 看來的。依照 Amazon S3 的公告 (Pricing),現在的價錢是:\r\n\r\n而從六月開始:\r\n\r\n嘖... 愈來愈便宜了 :/\r\n\r\nPS:結果在 Blog 下面看到 Colin Percival 留言問問題,他是想要用 Amazon S3FreeBSD portsnap 的檔案嗎 XD", + "title": "Amazon S3 的降價計畫" + }, + { + "id": "1163", + "body": "先前 Google 放出 MySQL 4.0.x 的 patch,並且放出會做 5.0 patch 的消息,本來以回要等上一陣子的,結果剛剛在 Semi-sync replication for MySQL 5.0.37 這裡看到 semisync replication 的 patch 已經在 trunk/ 裡面的消息了,這個 patch 目前指支援 InnoDB,不過據他的說法,應該蠻容易 porting 到別的 storage 上:mysql-5.0.37_semisync.patch。\r\n\r\n另外在 Wiki 上也註明了:SemiSyncReplication。\r\n\r\nPS:不知道前陣子 Google 幹的事情的人,請參考 mclee 寫的兩個 MySQL 的舊「新」聞。", + "title": "MySQL 5.0.37 的 semisync patch" + }, + { + "id": "1165", + "body": "換包裝了...\r\n\r\n\"\"", + "title": "就是茶" + }, + { + "id": "1166", + "body": "在東京辦的 YAPC::Asia 2007 的 slide 在 SlidesFromTalks 可以抓到,另外可以在 Google Video 上找到錄影檔 (Results for yapc asia 2007)。", + "title": "YAPC::Asia 2007 的 Slide" + }, + { + "id": "1167", + "body": "Update:果然猜中了... 居然擋起來了 XD\r\n\r\n給只想只接抓原始信件的人:000towretch.eml (蔡文能老師放出來的信件內容,需使用 Outlook 或 Outlook Express 開啟)、000towretch.eml (蔡老師所放出來的原始連結,怕他反悔砍掉...)。\r\n\r\n以及 4/3 在交大開會的會議記錄:meet0403.pdf (同上,\r\n備份)、meet0403.pdf (同上,蔡老師的原始連結)。\r\n\r\n因為之前在交大計中工讀,後來又在資工系系計中當助教,所以在 knight 貼 Blog 爆炸那天晚上,我跟其他人義務性的打了幾個電話通知了主要的幾個相關人事後,才知道據說收到信的人包括了全交大資工的教職員與計算機中心的教職員,後來公開的信件也證實了收信人的確包括了這麼多人...\r\n\r\n這代表最少有五十個人會收到信,那麼這封信被貼出來也是遲早的事情... 不論是對林一平不滿的、對蔡文能不滿的、對無名不滿的都很有可能貼。(仔細看看信件時間,才不到三天就被貼出來了)\r\n\r\n結果今天睡醒就在系記中助教掛的 IRC channel 上看到學弟說蔡神怒了,直接公開所有的內容 :p\r\n\r\n引用自他網頁上的文字:\r\n
本來此信是內部信件, 但不知誰洩漏到 Internet/Blog.\r\n既然信件已經被洩漏出去(不是機密, 與蘇謝不同, 所以檢調不必查誰洩密罪),\r\n 那就把信件原文放這讓大家看光光, 以免胡亂揣測!\r\n 原文照放, 連錯白字都沒改, 文章中忘了刪掉的部份也留著.\r\n 轉貼也請不要擅自更改或刪除任何文字! \r\n謝謝!
\r\n所有的信件請參考:http://www.csie.nctu.edu.tw/~tsaiwn/noname/all/,另外還提供了交大無名 2007/04/03 會議紀錄。", + "title": "無名信件完整內容" + }, + { + "id": "1169", + "body": "hasname.com 居然過期了 XD\r\n\r\n有某位 天后 的 Blog 是用 CNAME 指到 colo-lt-2.hasname.com,過期後就連不上了... 天后在 IRC 找人幹勦找不到,就直接打手機叫我快去 renew...\r\n\r\n這一定要抱怨 Netfirms 的啊,我居然沒收到信,而且發現居然不能設定 Auto Renew,也不能一次刷十年之類的 @_@ 這會不會做生意啊...\r\n\r\n依林姊姊 我錯了,不要再罵我了 :~", + "title": "hasname.com" + }, + { + "id": "1170", + "body": "紀錄一下...\r\n\r\n在 Google Blog Search 翻的時候找到 Lucky Star捏他list#1 這篇,然後發現『らき☆すた』ファンサイト 這個網頁...", + "title": "らき☆すた (幸運☆星)" + }, + { + "id": "1171", + "body": "前陣子找資料翻到 getElementsByClassName Speed Comparison 這篇,在 Firefox 3 上面測試的速度差異。\r\n\r\n最快的當然是瀏覽器直接提供 getElementsByClassName() 函數,再來是利用 XPath 模擬,最慢的是透過 getElementsByTag() 的 * 再抓 class。\r\n\r\n\"\"", + "title": "getElementsByClassName" + }, + { + "id": "1172", + "body": "WordPress 官方站台公告了:WordPress 2.2。\r\n\r\n這一個版本的改善包括了:\r\n\r\n等下來更新 svn trunk 版...", + "title": "WordPress 2.2" + }, + { + "id": "1173", + "body": "一部很棒的輕小說。\r\n\r\n\"\"\r\n\r\n看完的人 (或是對於在網路上先看到內容不會在意的人) 可以看:\r\n", + "title": "狼與辛香料" + }, + { + "id": "1174", + "body": "這是所謂的認命...?(一時手滑?XD)\r\n\r\n\"\"", + "title": "610x365" + }, + { + "id": "1175", + "body": "最近 Google 開始把這類影片放到 YouTube 上了,這是 Linus TorvaldsGit 的影片:Tech Talk: Linus Torvalds on git\r\n\r\nLinusGoogleGit 的時候,很明顯他對 CVS 的怨念頗深... 有些地方他一直提到 CVS branch 的成本很高 (這點在 Subversion 上就不會了),以及 merge 時的問題。\r\n\r\n我覺得當傳教士在傳教就好了,kernel.org 的作法與一般的專案開發並不太一樣...", + "title": "Linus 談 Git" + }, + { + "id": "1176", + "body": "The Pirate Bay 在官方的 Blog 上證實了他們會成立 Video Site 的消息:Oh some problems and a treat!。\r\n\r\n新的網站會叫做 thevideobay.org,目前還是關閉的狀態。很明顯這個網站不會受到 DMCA 的「限制」,而且加上 The Pirate Bay 的知名度... 毫無疑問會有好戲可以看 :p", + "title": "The Pirate Bay 將建立 Video Site" + }, + { + "id": "1177", + "body": "\"\"\r\n\r\n或者是傳說中「比資本額還要高」的 n-CPU Database 機到台灣了?(應該還在太平洋上?)", + "title": "大概是下錯 SQL query 在 restore 資料庫之類的..." + }, + { + "id": "1178", + "body": "在 X.org 7.2 進 cvs 後FreeBSD Ports 終於進入半解凍狀態,這代表下列三種更新可以在 portmgr 的同意下 commit:\r\n\r\n於是 PHP 5.2.2 終於更新PHP 4.4.7 更新。\r\n\r\nnet/rrdtool 到底什麼時候要修呢...", + "title": "FreeBSD Ports 半解凍" + }, + { + "id": "1179", + "body": "在 Bruce Schneier 的 Blog 上看到三個團隊 (EPFLUniversity of BonnNTT) 用了十一個月的時間將 307 位數 (1020 bits) 因數分解。\r\n\r\n看起來也許很驚人,但這次是因為這個數字有特殊的性質而能夠使用 SNFS 分解,這不是什麼新的算法,正常的 RSA Library 都會避開這個問題,所以對目前的目前的 RSA 1024 bits 的影響其實沒有報導裡所說得那麼誇張。\r\n\r\n不過,RSA 1024 bits 在電腦速度愈來愈快的情況下的確是愈來愈不安全了,能夠使用 RSA 2048 bits 或是更強的長度會比較好。\r\n\r\n參考:307-Digit Number FactoredA mighty number falls。", + "title": "307 位數 (1020 bits) 因數分解" + }, + { + "id": "1180", + "body": "問個 YUI Grids CSS 的問題... 在 IRC 上跟 布丁 都沒有找到答案,所以還是開一篇問一下...\r\n\r\n如果我想要用 YUI CSS Grids 做到 1/8 - 1/8 - 1/8 - 1/8 - 1/6 - 1/6 - 1/6 的切割,要怎麼做?(平常應該是用不到這種 case,所以只是問問而已,想知道 YUI CSS Grids 的極限在哪裡)\r\n\r\n順便給個失敗的例子:netnews.nctu.edu.tw/~gslin/a.html,這裡面 1-3-1 與 1-3-2 換行了...", + "title": "YUI Grids CSS 的問題..." + }, + { + "id": "1181", + "body": "來自教堂的消息,之前傳言 Google 要買 Feedburner 的消息被確認了,將以一億美金 (大多數都是現金) 買下 Feedburner$100 Million Payday For Feedburner - This Deal Is Confirmed。\r\n\r\n這樣測了兩年多的 Google Adsense for feeds 總算有個現成的平台可以直接上?(參考 Google Adsense FAQ 裡的 What is AdSense for feeds?)\r\n\r\nUpdate:關於「教堂」的冷笑話還是說明一下好了,這是因為很久前誤把 \"Techcrunch\" 當作 \"Techchurch\",後來跟朋友之間聊到 Techcrunch.com 的時候就直接以「教堂」來簡稱了 XD", + "title": "Google 買下 Feedburner" + }, + { + "id": "1182", + "body": "IETF 讓 DKIM (RFC 4871) 成為 Standards Track 了:Bye Bye Spam and Phishing with DKIM?。\r\n\r\n不過還是有點難搞定... gslin.org 的 Postfix 弄了老半天還是沒看到 Signing key 出現在 header 上 :/", + "title": "DKIM 成為 Standards Track" + }, + { + "id": "1183", + "body": "這篇是在講 Clearing floats。情況是有有個 #container1,包了 #block1 與 #block2:\r\n
<div id=\"container1\">\r\n    <div id=\"block1\">content</div>\r\n    <div id=\"block2\">content</div>\r\n</div>\r\n<div id=\"container2\"></div>
\r\n其中 #block1 與 #block2 都設有浮動 (float) 屬性:\r\n
#block1 { float: left; width: 50%; }\r\n#block2 { float: left; width: 45%; }
\r\n另外 #container2 裡面也許會有其他的浮動屬性,但是你不想將 #container2 裡面的東西跑到 #container1 的右邊,所以對兩個 container 用 clear: both 處理:\r\n
#container1, #container2 { clear: both; }
\r\n現在想要對 #container1 設定 margin-bottom,使之與 #container2 有邊距:\r\n
#container1 { clear: both;\r\n              margin-bottom: 1em; }
\r\n但這樣是不會動的,#container1 要加上 overflow 屬性 (參考原文內容):\r\n
#container1 { clear: both;\r\n              margin-bottom: 1em;\r\n              overflow: hidden; }
\r\n不過這樣的話 IE6 還是不會動,所以要再加上:\r\n
#container1 { clear: both;\r\n              margin-bottom: 1em;\r\n              overflow: hidden;\r\n              width: 100%; }
\r\n理論上這樣就可以解決這些問題了... (真是麻煩 :/)", + "title": "Clearing floats" + }, + { + "id": "1184", + "body": "在 Matthew Mullenweg 的 Blog 看到 WordPress.com 所使用的 MySQL Database Partition 及 Replication 程式碼 (在 app 層實做):Announcing HyperDB。\r\n\r\n程式碼不長,在 http://svn.wp-plugins.org/hyperdb/trunk/ 可以看到他把許多 function 包成一個 class,另外有剛成立的 mailing list 可以參與討論。\r\n\r\n不過切 Server Farm 之後要做一些比較特別的 JOIN 就沒辦法做了。另外 Blog 本身也比較單純,可以透過 BlogId 切 Server Farm。", + "title": "HyperDB" + }, + { + "id": "1185", + "body": "輕小說《狼與辛香料》要漫畫化:\r\n\r\n\"\"\r\n\r\n輕小說的部份參考 狼與辛香料 這篇。", + "title": "《狼與辛香料》漫畫化" + }, + { + "id": "1186", + "body": "Mozilla Firefox 2.0.0.4 出版,修正了幾個安全性問題,其中兩個是比較嚴重的 (crash 與 XSS):Known Vulnerabilities in Mozilla Products - Fixed in Firefox 2.0.0.4。\r\n\r\n我自己是用 latest-mozilla1.8 這隻 nightly build (類似 2.0 的 stable branch,目前的版號是 2.0.0.4pre),每天會自動更新,有些 minor security problem 會先在這個 branch 更新。\r\n\r\nAnyway,還在用 2.0.0.3 的趕快更新吧 :p", + "title": "Mozilla Firefox 2.0.0.4" + }, + { + "id": "1187", + "body": "把 WordPress 升到新版後 (svn trunk) 發現文章顯示的 Category 爛掉了,看資料庫的內容沒看出原因 (資料都在),那麼原因應該是 [WP] wp_categories 轉換成 wp_terms 這篇所講的 DB scheme 改變,function 也跟著要改...\r\n\r\n大概要再等一陣子 WordPress 才會弄個 backward compitable function,或是等 K2 修正吧...\r\n\r\n不過 K2 還活著嗎... o_O", + "title": "爛掉的 Category..." + }, + { + "id": "1188", + "body": "netnews.nctu.edu.tw 的硬碟也爆炸了,真麻煩,不知道又是什麼問題...\r\n\r\n\"\"", + "title": "繼續爆炸..." + }, + { + "id": "1189", + "body": "很多人都傳言是因為 白石涼子 聲帶開刀而特別製作的一話 (這話幾乎沒有ハヤテ的配音),結果 畑健二郎 (《旋風管家》漫畫的原作者) 也跳下來玩一句,還找來 後藤邑子 (於是又多了不少橋段...) XD\r\n\r\n\"\"", + "title": "《ハヤテのごとく!》第十話" + }, + { + "id": "1190", + "body": "Google Online Security Blog 這篇 Web Server Software and Malware 的一些資訊還蠻有趣的:\r\n", + "title": "網站木馬統計資料" + }, + { + "id": "1191", + "body": "netnews.nctu.edu.tw 的硬碟爛掉時我備份了一些資料 (像是 ssh key 與 GPG key 之類的),然後請學弟換硬碟上去重裝,沒想到其中一顆硬碟 (da1) 又爆炸了一次,只好再請學弟再換一顆上去... (oops)\r\n\r\n機器目前看起來是還不錯,不過因為 INN 的 active 檔沒有備份到,只好調高 low number 與 high number 解決。結果發現 itoc 版 innbbsd 直接用一個 for-loop ARTICLE 掃 (M3 當初的版本是有先用 XOVER 做,再用 ARTICLE),造成 netnews 上面有四十幾隻 nnrpd 在爆走...\r\n\r\n來想看看要怎麼處理比較好...", + "title": "災後重建" + }, + { + "id": "1192", + "body": "NetcraftJune 2007 Web Server Survey 出來後,最讓人感到興趣的是 GoogleBlogger 本來用的 Apache 換成 Google 自己的 Web Server,造成在 Active Site 的部份 Apache 狂掉了 7%... (多出來的部份在圖表上多了一個 \"Google\")\r\n\r\n其他的變動 (像是 IIS 又提昇了 0.82%) 相較之下就沒什麼感覺... :p", + "title": "2007 年六月 Web Server 分析" + }, + { + "id": "1193", + "body": "可是早上要去做檢查全部都不能碰 XD\r\n\r\nPS:純粹歲歲念的一篇...", + "title": "肚子餓 + 口渴..." + }, + { + "id": "1194", + "body": "本來打算等到 s3cmdFreeBSD Ports 的時候寫的,結果進 Ports 後反而一直忘了寫... 使用 FreeBSD 的人可以到 net/py-s3cmd 下安裝。\r\n\r\nAmazon S3 的介紹請先看:「Amazon S3」這篇以及「Amazon S3 的降價計畫」這篇,或是直接去官方網頁上看也可以。\r\n\r\n很粗略的說,Amazon S3 是一個付費的網路磁碟機服務,沒有最低消費額度,用多少算多少。\r\n\r\ns3cmd 是一個以 Python 寫出來的 Amazon S3 CLI client。\r\n\r\n在申請完 Amazon S3 帳號後會拿到兩組 key,一組是 access_key,一組是 secret_key,第一次執行 s3cmd 的時候應該會出現錯誤訊息:\r\n
ERROR: /home/staff/gslin/.s3cfg: No such file or directory\r\nERROR: Configuration file not available.\r\nERROR: Consider using --configure parameter to create one.
\r\n這時候跑 s3cmd --configure,程式會跟你要 access key 與 secret key,輸入完以後記得把 .s3cfg 設定成 600 (rw-------)。\r\n\r\n接下來必須開個 bucket 給自己用,所以就下個 s3cmd mb s3://choose-the-name-you-want,沒問題的話就會出現:\r\n
Bucket 'choose-the-name-you-want' created
\r\n如果名字被別人用掉的話會出現:\r\n
ERROR: Bucket 'test' already exists
\r\n然後你可以用 s3cmd put /path/filename.tar.gz s3://bucket-name/filename.tar.gz 丟檔案上去,用 s3cmd del s3://bucket-name/filename.tar.gz 砍掉。\r\n\r\n其他的功能可以到 s3cmd 的網站上看,上面有範例可以直接看。或是加上 --help 看一些說明。\r\n\r\n喔對,如果 put 的時候有加上 -P 的參數,那麼檔案就可以公開讓人下載,這時候可以用 http://s3.amazonaws.com/bucket-name/filename.tar.gz 下載,要注意的是這是要收費的喔 :p", + "title": "s3cmd (Amazon S3 CLI)" + }, + { + "id": "1195", + "body": "Mac 上的 Safari 移植到 Windows 上了,而且不只是軟體移植而已,裝起來以後我發現我瞬間被 Safari 漂亮的 antialias 擊沉了...\r\n\r\n不過,Apple 說的 Beta 版真的就是 Beta,跟 Flickr 那種不一樣... XD\r\n\r\n目前我在 Windows XP 上測試的情況,碰到 Bookmark 的功能就會 Crash,用酷音輸入法在 Form 裡面輸入文字一次只能輸入一個字... 另外在 Ptt 的 Browser 板上,以及學弟都有回報看不到中文的情況。\r\n\r\nUpdate:Bookmark 的問題在文章後面的 comment 有提到解法了。把四個目錄裡的 en.lproj 複製成 zh.lproj 後就正常了。(Thanks! Daniel)\r\n\r\nAnyway,這是 在 Windows 下 的 Screenshot:\r\n\r\n\"\"\r\n\r\n要注意的幾點:(大概沒人看 EULA 吧?XD)\r\n
3. Consent to Use of Data. You agree that Apple and its subsidiaries may collect and use technical and related information, including but not limited to technical information about your computer, system and application software, and peripherals, that is gathered periodically to facilitate the provision of software updates, product support and other services to you (if any) related to the Apple Software, and to verify compliance with the terms of this License. Apple may use this information, as long as it is in a form that does not personally identify you, to improve our products or to provide services or technologies to you.
\r\n這代表 Apple 可以蒐集你的資料。\r\n\r\n另外這是測試版本,到下次發行或 12/31 時失效:\r\n
4. Term of License. The term of this License shall commence upon your installation or use of the Apple Software and will terminate automatically without notice from Apple upon the next commercial release of the Apple Software, or December 31, 2007, whichever occurs first. Your rights under this License will also terminate automatically without notice from Apple if you fail to comply with any term(s) of this License. Upon the termination of this License, you shall cease all use of the Apple Software and destroy all copies, full or partial, of the Apple Software.
", + "title": "Mac 上的 Safari 移植到 Windows" + }, + { + "id": "1196", + "body": "我說,這會不會太快了點... Windows 版 Safari 出來還沒滿一天,就已經找到六個安全漏洞了 (四個 DoS bug 及兩個 remote execution):Apple Safari On Windows Broken On First Day。\r\n\r\n現在看起來似乎是為了趕在 WWDC 亮相而釋出的版本...", + "title": "Windows 版 Safari 六個安全性問題" + }, + { + "id": "1197", + "body": "因為 Safari 通過 ACID2 的關係而特地去裝 Mozilla Firefox 3.0a6,果然如同 code name 一樣是 Minefield... 把系統內的 Mozilla Firefox 的設定砍掉後重新安裝 (包括 Document and Settings 裡的個人設定與 Program Files 裡的檔案),連裝都裝不起來... XD\r\n\r\n把 3.0a5 裝起來後,再升級到 3.0a6 後又爛掉 XD 晚點再裝回 2.0.0.5pre 好了...", + "title": "Mozilla Firefox 3.0a6" + }, + { + "id": "1198", + "body": "在 Simon Willison's Weblog 看到的,原文在 Enabling the debug menu on Safari for Windows 這篇。提到如何把 bug 滿天飛的 Safari for Windows 的除錯選單打開。\r\n\r\n如果是 Windows XP,打開 C:\\Documents and Settings\\Your Username\\Application Data\\Apple Computer\\Safari 下的 Preferences.plist (如果是 Vista,則是在 C:\\Users\\Your Name\\AppData\\Roaming\\Apple Computer\\Safari 下面),這是一個 XML 檔,在接近尾端的地方加上下面兩行:(</dict></plist> 的前面)\r\n
<key>IncludeDebugMenu</key>\r\n<true/>
\r\n然後再打開 Safari,就可以看到 Debug 選單出現。\r\n\r\n功能不是很多,最實用的應該是修改 User Agent 的功能,以及 Import Bookmarks 的功能吧?", + "title": "啟用 Safari (Windows 版) 的除錯選單" + }, + { + "id": "1199", + "body": "Note:這只是在 Javascript 裡跑 CSS Selector 的速度。\r\n\r\n剛好看到 SlickSpeed CSS Selector TestSuite 這篇文章,在 Windows 上測了幾個瀏覽器,單位都是 ms (所以數字愈小愈好),測試的時候都儘量保持不動電腦的情況下跑完:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
prototype 1.5.1jQuery 1.1.2devMooTools 1.2devext 1.1b1cssQuery 2.02
IE 61600323813028396511
Firefox 2.0.0.5 pre17642891449655411
Opera 9.206814451121981122
Safari 3 beta120733140152931
\r\n呃,Firefox 2 的速度... (想裝地雷看看有沒有進步,結果想到早上才失敗過,沒辦法測 XD)\r\n\r\nUpdate:網頁上多了 Dojo 的測試項目,速度也還不錯。", + "title": "各瀏覽器的速度" + }, + { + "id": "1201", + "body": "Safari 3.0.1 Beta 出版了,結果找了半天還是不知道 Changelog 放在哪裡,測了一下,發現跟之前的版本好像沒什麼差啊?中文字的輸入還是爛的、Bookmark 也還是爛的...\r\n\r\n所以到底改了什麼?@_@\r\n\r\nUpdate:找到資訊了,這次是安全性更新:Safari Beta 3.0.1 for Windows Security Update。\r\n\r\nUpdate:再更新一次,這是 Apple 官方的公告:APPLE-SA-2007-06-14 Safari Beta 3.0.1 for Windows。", + "title": "Safari 3.0.1 Beta" + }, + { + "id": "1202", + "body": "這幾天總算是比較接近完成的階段了,在問過 far 之後來寫一篇講一下。\r\n\r\n大約是在年初的時候 far 就想要將 Pixnet Blog 的部份弄 Fulltext Search,剛好那陣子我也在弄類似的東西,survey 一些對 CJK 支援比較好的 Fulltext Search Engine,當時看起來比較好用是 平林幹雄 維護的 HyperEstraier。(我也寫了 HyperEstraierHyperEstraier 與 qdbm 的一些雜記 兩篇文章)\r\n\r\n不過後來 HyperEstraier 將近三個月沒更新,加上 Pixnet 那陣子在忙公司整合的事情,所以這件事情在收了訂金後就一直擱著... (皇上都不急了,太監就不要在旁邊跳腳...)\r\n\r\n除了 HyperEstraier 外,我還有訂另外幾個 Fulltext Search Engine 的 mailing list,其中 Gmane 用的 Xapian 也蠻值得關注的。我從 0.9.x 版的時候就在觀察,當時連 UTF8 support 都沒有,但是 Gmane 有丟出 3rd party patch。不過我寫信去問 Gmane 得到的回答是,文章數量很大,但是每天搜尋的人次並不多,平均不到 1 query/sec。(信件在 /var/mail/gslin,隨著硬碟爛掉沒備份到消失了,只能憑映象寫...)\r\n\r\n再加上 Gmane 以英文為主,當時沒有很仔細繼續去研究,直到後來在 Xapian 的 mailing list 上看到有對岸的人說中文的部份他用的很好,仔細去研究以後發現其實是因為以前想的太複雜,加上對 Xapian 不熟造成的誤解而沒有仔細去研究 Xapian 的細節。\r\n\r\n所以... 以下進入 Xapian 的細節。\r\n\r\nXapian 的每一份文件 (Document) 分成三個部份,文件主體 (Data)、 (Value)、項目 (Term)。Data 是一組字串,通常就是放文章內容,但是也可以不用放。Value 是 key+value 的集合,key 的部份是數字,而 value 的部份則是一個字串,Value 可以用很多組。(這邊的 \"value\" 並不是遞迴定義,而只是官方取的名字剛好就是 Value)\r\n\r\n不過上面那兩項都是插花用的,重點在 Term。一個 Term 是一個帶有 weight 的字串,會被 Xapian 索引。所以你可以對 Term 下搜尋條件,Xapian 會傳回符合的項目。\r\n\r\n對英文來說,假設我要索引 \"A apple a day keeps the doctor away.\" 這個句子,那麼我只要以非英文字的部份切開就可以了,換句話說,最簡單的情況會被切成:['a', 'apple', 'a', 'day', 'keeps', 'the', 'doctor', 'away'],另外內建常用字的詞庫把一些比較沒有意義的詞濾掉,於是 a、the 就會被濾掉變成:['apple', 'day', 'keeps', 'doctor', 'away'],然後再進一步對詞性做處理,於是把 keeps 轉成 keep,最後索引成:['apple', 'day', 'keep', 'doctor', 'away']。\r\n\r\n對中文來說 (以及日文、韓文),假設我要索引「端午假期16日、20日兩次夜間暫停收費」這個句子,以單字一個一個切開,切成 ['端', '午', '假', '期', '16', '日', '20', '日', '兩', '次', '夜', '間', '暫', '停', '收', '費'],或是兩個字兩個字切,切成 ['端午', '午假', '假期', '期16', '16日', '20日', '日兩', '兩次', '次夜', '夜間', '間暫', '暫停', '停收', '收費'] 似乎都不太好,前者當搜尋條件很少的時候準確度不太高 (像是以「林洋港」為條件搜尋時可能會找到討論海港旁邊樹林的文章),而後者則會收了不少沒有意義的字,像是 '期16', '日兩', '間暫',而且像是 '次夜' 其實不是這句的應該有的意思。\r\n\r\n所以對於 CJK 的斷詞演算法來說,能夠切出符合的 Term 才是重點,於是就有很多論文在討論這些方法... 不過很多方法都是建立在詞頻表上面,換句話說,詞頻表的正確性會影響到搜尋的品質,而為了確保詞頻表的正確性,有很多時候必須讓人力去介入,這點我跟 far 都不太喜歡,我們偏好的是即使不去管,也保持一定的水準的方法。\r\n\r\n所以我跟 far 解釋完以後,決定用一字表 + 兩字表硬切產生所有的 Term (也就是上面兩組都取來當 Term),然後看看效果如何。在跑了二十幾個小時將全站所有文章掃過一次後內部測試 (目前最新文章的 id 是 528xxxx,實際的數字當然比這個少,不過 far 說這是商業機密不能公開 XD),far 對於搜尋出來的品質還蠻滿意的,所以就切到兩個字... (如果 far 不滿意的話我打算再把三個字的切詞加上去 XD)\r\n\r\n然後用 Catalyst 兜個 HTTP API 出來讓前端的 Web 用,其實就很棒了 :p (我知道有 xapian-tcpsrv,不過...)\r\n\r\n所以大概就是這樣啦,Pixnet Blog 的 Fulltext Search 應該有機會在七月底前看到吧?(因為 far 很墮落,所以我實在不能保證六月底前出的來... XD)", + "title": "幫 Pixnet 做 Fulltext Search" + }, + { + "id": "1203", + "body": "用 Google 找到的 bug 似乎是講用 Javascript 動態改變 display 時的 bug,不過我遇到的是純 CSS 的 layout 問題...\r\n\r\n這頁 丟到 IE6/Firefox2/Opera9/Safari2/Safari3 測試,發現在 Safari 2.0.4 (Mac) 及 3.0.1 (Win) 上都會先出現 #id2 再出現 #id1,但是其他的瀏覽器都是先顯示 #id1 再顯示 #id2。\r\n\r\n這是在我的 Windows 上顯示出來的結果,Safari 2.0.4 (Mac) 的結果跟 Safari 3.0.1 (Win) 的結果一樣,再加上我手邊沒有 Mac,就不貼了:\r\n\r\n\"\" \"\" \"\"\r\n\r\n我的問題是,OperaSafari 這兩個都通過 ACID2 的 Browser 到底哪個才是正確的?\r\n\r\nUpdateThe display declaration 上早就提過這個問題了。", + "title": "Safari 的 display: table-cell" + }, + { + "id": "1204", + "body": "自從 WY! TW 買走後,這類圖片就一定要丟到 Zooomr 啊!\r\n\r\n\"\"\r\n\r\n然後上傳的時候發現整個頁面的顯示速度比以前快很多,甚至比 Flickr 快,看來以後可以努力丟一些東西上去 :p", + "title": "Zooomr 的速度有變快..." + }, + { + "id": "1206", + "body": "在 HTTP Traffic Overtakes P2P, Courtesy of YouTube 這篇看到的資訊,不過先注意一點,這是與 P2P 相關的硬體廠商所提供的數據 (Ellacoya Networks),所以數據本身僅供參考。\r\n\r\n依照廠商的說法,從 2002 年開始,Internet 上 P2P 的流量比 HTTP 還多,但在最近一次的監測發現 HTTP 反過來超過 P2P,而且 YouTube 佔了 HTTP 中的 20%,大約是整個 Internet 的 10% 流量。", + "title": "HTTP 流量與 P2P 流量" + }, + { + "id": "1207", + "body": "FreeBSD 7.0 開始動作:Begin code freeze for FreeBSD-7.0 release cycle.。\r\n\r\n剛好看到 I have updated my scaling results with L 這篇 (標題斷掉了) 以 MySQL 5.0.33 取得的 benchmark:\r\n\r\n\"\"\r\n\r\n依照 FreeBSD 的慣例,出 7.0-BETA1 的時候差不多就可以拿一些機器測試看看,而暑假後應該可以見到 7.0-RELEASE。", + "title": "FreeBSD 7.0 release cycle" + }, + { + "id": "1208", + "body": "在 netflow.ntcu.net 上的 Smokeping 資料:TaiwanISP.HiNet\r\n\r\n\"\"\r\n\r\n然後現在 168.95.1.1 & 168.95.192.1 還是連不上 (這個影響蠻嚴重的?XD),blog.xuite.net 也受到波及 (難怪從 Bloglines 點過去發現連不上)。\r\n\r\nPS:難怪 Ptt 今天晚上 使用人數 MRTG 有一個掉大約一萬人的情況...\r\n\r\n\"\"", + "title": "HiNet 斷線" + }, + { + "id": "1209", + "body": "問題是做像 Digg 類的投票功能 (那個 \"Digg\" 的點擊),想要做到這幾點:\r\n\r\n一開始的想法是這樣做:\r\n\r\n不過這樣的問題在於可以使用 <img src=...> 直接指定投票 url 而票數爆衝 (Digg 發生過),不知道後來是怎麼解決 Graceful Degradation 問題的...\r\n\r\n我想到的方法是利用 MAC 類的方法加上簽名:把預設的 a link 加上 &sign=xxx,其中 xxx 是 sha1(\"$secretkey-$username-$id\") (或是類似的方式產生),而 XHR 的部份改成用 POST 送。\r\n\r\n有建議嗎?", + "title": "Digg 類投票問題 (實做細節)" + }, + { + "id": "1210", + "body": "如果做了一個 mega commit 後要 undo 的方法:(可以是上百行、上千行、上萬行,反正不想要手動改回來)\r\n
svn merge -r 1234:1233 . .\r\nsvn commit
\r\n這個動作其實就是做一個 r1234 與 r1233 的 diff 後 patch 進 working repository,然後 commit 出去。", + "title": "用 Subversion 的 Merge 來 Undo" + }, + { + "id": "1211", + "body": "WordPress 安全性更新:WordPress 2.2.1,bug 修正的部份包括了:\r\n\r\n安全性更新的部份包括了:\r\n", + "title": "WordPress 2.2.1" + }, + { + "id": "1212", + "body": "在 The Pirate Bay Launches Uncensored Image Hosting 這篇文章看到 BayImg 這個站。\r\n\r\nBayImgThePirateBay 的一個子計畫,提供 Image Hosting。既然是 The Pirate Bay 的子計畫,那麼這個站的重點就在於「不承認 Copyright」,所以他們宣稱上面的東西不會因為 Copyright 而被撤下。\r\n\r\n貼張 Safari Windows 的 Screenshot 吧:\r\n\r\n\"\"", + "title": "BayImg" + }, + { + "id": "1213", + "body": "在 6/19 出版的 BitComet 0.90 版的 Changelog 裡:\r\n\r\n看起來是把以前手動交叉補檔的工作自動化了,所以又該把 BitComet 灌回來測試看看了... (反正差不多也該重灌電腦了,隨便亂灌一些東西吧?XD)\r\n\r\nUpdate:\r\n
09:43 <@i> 交叉補檔 ?\r\n09:53 <@g> 同時可以從 bittorrent & edonkey network 抓檔案\r\n09:53 <@g> 對於有一陣子的 torrent 還蠻好用的\r\n09:54 <@i> 這太悍\r\n09:54 <@g> 以前都是從 edonkey network 上抓同樣檔案,然後丟到 utorrent 裡面跑 recheck\r\n09:54 <@i> 混在一起做牛丸這樣\r\n09:55 <@g> 這一個版本看起來是從 emule 拉 block 湊齊後檢查 torrent sha1,如果對了就當作有這個 block\r\n09:55 <@g> 看起來悍得很啊
", + "title": "BitComet 支援 eDonkey Network" + }, + { + "id": "1214", + "body": "收到電子帳單後仔細看的結果發現有一筆奇怪的消費金額:\r\n
消費日 入帳起息日 卡號 交易說明 外幣折算日 地區 消費地簽帳金額 台幣金額\r\n96/06/13 96/06/15 xxxxxx WLI RESERVATIONREWARDS 96/06/14 US 10 335
\r\n在網路上查了一下發現這篇:在北美上網購物請小心!! Rip Off Report,這位是二月的時候在網路上買香草種子,結果後來發現有盜刷的情況。我的情況跟他有點類似,我五月的時候在網路花店消費...\r\n\r\n用 RESERVATIONREWARDS 當關鍵字去 Google 查了一下,發現這些文章:\r\n\r\n打電話去銀行處理,又要等個一陣子了...", + "title": "信用卡盜刷:WLI RESERVATIONREWARDS" + }, + { + "id": "1215", + "body": "在 Slashdot 上看到 Opera 打算在 9.5 版 (現在最新版是 9.21) 完整支援 CSS Selector (Slashdot 所下的標題有點誇張):Opera 9.5 To Fully Support CSS?。\r\n\r\n除此之外,Opera 9.5 還會實做某些 CSS3 的規格,並且再改善速度...", + "title": "Opera 9.5 將會完整支援 CSS Selector" + }, + { + "id": "1216", + "body": "Safari 9 3.0.2 Beta 修正安全問題:APPLE-SA-2007-06-22 Safari 3 Beta Update 3.0.2。\r\n\r\n據學弟 stephon 說中文顯示的問題似乎解決了,不過輸入的問題還是沒解決...\r\n\r\nUpdate:更正成 3.0.2 =_=\r\n\r\nUpdate:中文字的部份... 本來我還沒遇到問題,現在... 下面這張圖是取自 透視BT(一) ── BT的基本運作原理 的審查砲彈... (XD)\r\n\r\n\"\"\r\n\r\n大圖在 Safari Windows 3.0.2 beta Screenshot。", + "title": "Safari 3.0.2 Beta" + }, + { + "id": "1217", + "body": "\"\" 美國 (德州) 發生 ISP 在 Transparent Proxy 上插入 Javascript 放廣告的事情 (也就是右方的圖片):ISPs Inserting Ads Into Your Pages (Slashdot)、Real Evil: ISP Inserted Advertising (TechCrunch)。\r\n\r\n這已經引起非常強烈的討論了 (Slashdot 以及 TechCrunch 的 comment),來觀察後續情況...\r\n\r\n
", + "title": "ISP 在 Transparent Proxy 上加廣告" + }, + { + "id": "1218", + "body": "Zooomr 開始提供付費帳號:Zooomr Launches Paid Pro Accounts。\r\n\r\n付費帳號的 保護費 年費是 $19.95,主要的差異「將會」在於廣告 (與 Flickr 付費的部份一樣),會把「將會」特地標起來是因為目前還沒有放廣告。另外他們打算提供付費的使用者將提供 \"Zooomr Analytics\" 的服務 (聽這個名字應該是跟 Google Analytics 類似的東西?)\r\n\r\n暫時看不到應該要花錢的地方...", + "title": "Zooomr 開始提供付費帳號" + }, + { + "id": "1219", + "body": "在 Matthew Mullenweg 這邊看到 Google Apps 開始提供 IMAPGoogle Appls IMAP。\r\n\r\n參考 Google Blog 上的 A smooth Apps move,以及 Welcome to Google Apps - New features for users 的說明。\r\n\r\n有 IMAP 後似乎方便不少,不過好像是付費的使用者才有...", + "title": "Google Apps 支援 IMAP" + }, + { + "id": "1220", + "body": "在 Uncensored image hosting 這篇文章裡提到 BayImg 因為消息走漏結果造成大量的使用者湧入:\r\n
Actually, calling it a launch is wrong, the information that the site was on its way leaked out and all of a sudden we had 150Mbit pr second of traffic to the system, a system not yet optimized for that kind of traffic!
\r\n另外是一些數字,目前已經有十五萬張圖以及五百萬的 PV,同時在 Alexa.com 上面的名次衝進全球 1000 名內:\r\n
We already have over 5 million image views. You people have uploaded about 150.000 images and the site skyrocketed the first days into one of the 300 biggest sites on the web!
\r\n另外在 Slyck News 上剛好同時看到 The Pirate Bay and Uncensored HostingisoHunt and TorrentSpy to Filter Torrents 兩篇強烈對比的文章,其實還蠻有趣的。", + "title": "BayImg" + }, + { + "id": "1221", + "body": "有些文章很短,但是卻相當犀利的將病徵指出來。\r\n\r\nABC News 刊了一篇 100 Blogs We Love。而 Jason Kottke 寫了一篇 100 blogs they love so much,只有一句話:\r\n
100 blogs they love so much that they're not going to link to a single one.
\r\n\r\n當然更有可能是 Kottke 在發牢騷,因為那篇文章裡面也有提到 Jason Kottke ... XD", + "title": "ABC News 的 100 Blogs We Love" + }, + { + "id": "1222", + "body": "Torrent Freak 傳來 µTorrent 要出 Mac 版的消息:uTorrent for Mac is Coming: An Early Review。\r\n\r\n目前是屬於 close beta (未公開測試版本),正式出版後對於 Mac 下使用 Bittorrent 的情況應該會大幅增加。(之前在 Mac Mini 上挑 torrent client,發現沒幾套能用的,最後決定跑 Console mode 的 rtorrent...)", + "title": "µTorrent 要出 Mac 版..." + }, + { + "id": "1223", + "body": "Simon WillisonGoogle Mountain View 講 OpenIDMy Google Tech Talk on OpenIDGoogle Video 的影片:Open ID,以及 SlideShare 的投影片:Implications Of OpenID (Google Tech Talk)。\r\n\r\n主要是 OpenID 概念的陳述,可行的應用方向,以及會遇到的問題。對於 OpenID 有了解的人可能會覺得講的蠻淺的,不過看得出來主要是去 Google 傳教,所以不會提到一堆實做上的問題...", + "title": "Simon Willison 在 Google Mountain View 講 OpenID" + }, + { + "id": "1224", + "body": "GPLv3 正式版本弄的好像什麼新車發表會之類的...:GPL 3 Launch Date Announced:\r\n
Live video footage of the GPL's unveiling by Richard M. Stallman will be available as a stream on the FSF's website.
\r\nAnyway,6/29 發表,與 Apple iPhone 同一天 XD", + "title": "「GPLv3 發表會」" + }, + { + "id": "1225", + "body": "剛剛新酷音的自動更新程式跳出更新訊息,新酷音輸入法 Win32 0.3.4.5 出版了:Win32-chewing 0.3.4.5 版釋出,舊版的使用者要記得先移除掉在安裝新版。", + "title": "新酷音輸入法 Win32 0.3.4.5 出版" + }, + { + "id": "1226", + "body": "受到 SlickSpeed 的刺激,這一版的 jQuery 大幅改善 CSS Selector 的速度,jQuery 官方的測試結果比 1.1.2 快了 800% (也是以 SlickSpeed 測試):jQuery 1.1.3: 800%+ Faster, still 20KB。\r\n\r\n不過這個版本在 mailing list 看得出來目前還很不穩定,很多人抱怨在非主流的 browser 上會有問題 (主要是 OperaSafari,以及 Konqueror),甚至有 Linux 上的使用者抱怨 Firefox 回報 SlickSpeed 測試全部都是 return error。\r\n\r\n接下來的 1.1.4 版將會是 1.1 系列的最後一個版本,之後就是 1.2 了...", + "title": "jQuery 1.1.3" + }, + { + "id": "1227", + "body": "\"\" 噗... 你們還有出現 email 可以認證,我的帳號是完全沒有 email 可以認證... XD (反正我看開了,DarkKiller 這個帳號上面也沒東西,裡面的圖當初都有丟 Flickr,隨便啦...)\r\n\r\n(說到 Flickr,好像跟某站同一家... 我還是找個時間也順便丟 Zooomr 好了 XD)\r\n\r\nAnyway,對於換密碼這件事情我有兩個猜測:\r\n\r\n為什麼我會猜第二個?因為我在 D2 系統上也幹過類似的事情啊,當年想要直接使用 D2 帳號的 802.1X 就是卡在沒有 plaintext password 沒辦法做,商業站台有 plaintext password 問題少很多啊。\r\n\r\n至於故意要雙證件,只是讓非 VIP 使用者覺得很麻煩而不會想要送而已。\r\n\r\nPS:剛好看到 DearHoney無名的部落客,你們到底還要超幹+黑特多久? 這篇,我笑出來了 XD", + "title": "無名小站強制換密碼之不負責任猜測" + }, + { + "id": "1228", + "body": "jQuery 1.1.3.1 出版了,會這麼急的原因也很簡單:修掉六個重大的 bug。(可是在 jQuery 的 Trac 上 只列出五個 ticket?)\r\n\r\n檔案大小仍然維持 20KB 左右,透過 gzip 傳輸後應該會更小。", + "title": "jQuery 1.1.3.1" + }, + { + "id": "1229", + "body": "YUIY! 在 Hosting,但是 PrototypejQuery 沒有,對於開發軟體或是臨時想要寫小東西的人來說很麻煩。\r\n\r\n所以就是這樣:http://w3.nctu.edu.tw/js-framework/,基本上會當作正式服務儘量維持。另外,因為是在 TANet 上,所以禁止商業使用。", + "title": "Prototype 與 jQuery 的 Hosting" + }, + { + "id": "1230", + "body": "這會不會太超過了... -_-\r\n\r\n在 Slashdot 上看到小偷在偷到信用卡後,拿信用卡盜刷捐款 以確認是否還可以使用,像是紅十字會。因為信用卡公司不會因為到這些慈善團體捐款而事先詢問持卡人。", + "title": "拿信用卡盜刷捐款..." + }, + { + "id": "1231", + "body": "看起來金屬價格愈來愈高的情況下,每個國家都會遇到類似的問題... (參考之前寫的 銅板與金屬,台灣與美國都愈到了遇到了)\r\n\r\n剛剛在 Bruce Schneier 的 Blog 上看到印度硬幣的金屬價值也超過面額了:When Coins are Worth More As Metal than CoinsBBC 的報導:Sharp practice of melting coins。", + "title": "硬幣的面額與金屬價值" + }, + { + "id": "1232", + "body": "內含些微劇情。\r\n\r\n\"\"\r\n\r\n我看到這句的時候笑翻了 XD 這三個大魔王可是有時空管理局的 99% 戰力啊 XD", + "title": "魔砲 SS 15" + }, + { + "id": "1233", + "body": "先看這頁:jquery-animate.html,用 Firefox 以及 IE 各看一次,然後游標試著在兩個段落上移動看看,在 IE 上應該會變成這樣:\r\n\r\n\"\"\r\n\r\n找了資料以後確定這是 IE 的 bug,也有解法:MSIE animated fade problems,解法是設定 background 屬性 (不確定設成底圖可不可以,不過確定 \"transparent\" 不可以)。經過測試發現可以在 Javascript 裡面設定 background,而不用事先在 CSS 裡面設。\r\n\r\n對 IE 的 browser detecting 也很簡單:(Ref:Using the navigator object to detect client's browser)\r\n
if (navigator.appVersion.indexOf(\"MSIE\") != -1) {\r\n  // ...\r\n}
\r\n目前看起來沒有問題,不過 background 屬性不能是 transparent 還蠻麻煩的...", + "title": "IE Opacity Bug" + }, + { + "id": "1234", + "body": "Adobe Flash Player 會自動跳出要你更新的訊息嗎?我沒看過,先假設不會好了...\r\n\r\n在這頁看到 Adobe Flash Player 的安全性更新:flash player 重大安全性更新,官方新聞稿在 Flash Player update available to address security vulnerabilities 這篇,在新聞稿下半部的 link 將新版抓下來以後把 Firefox 關掉再執行就可以了。\r\n\r\n抓完以後在 about:plugins 應該可以看到 r47 的版本:\r\n\r\n\"\"", + "title": "Flash Player 安全性更新" + }, + { + "id": "1235", + "body": "再 use Perl; 上看到 Perl 5.9.5 的消息:Perl 5.9.5 release,這個版本會是 5.9 的最後一個版本,現在的重點將會放在穩定性上面,然後出 5.10.0。(如同 Linux kernel 一樣,奇數版本是開發版,偶數版本才是穩定版)\r\n\r\n剛好這幾天在 DBIx::Class 的 mailing list 找資料的時候發現 Class::C3Perl 5.9 上的速度大幅增加:[Dbix-class] Re: New Class::C3 dev releases,而且也有不少人回報 Catalyst 啟動的速度時間大幅減少,對於用 Catalyst 的開發者是一大福音啊...", + "title": "Perl 5.9.5" + }, + { + "id": "1236", + "body": "才正要寫 uTorrent 1.7 Stable Finally Released 這篇,結果去 µTorrent 的下載頁面就看到 1.7.1 更新的消息,檔案比 1.7 還小 XD\r\n\r\n這個版本比起 µTorrent 1.6 多了不少新功能,幾個我注意到的是:\r\n\r\n完整的 Changelog 很長,參考:http://download.utorrent.com/1.7.1/utorrent-1.7.1.txt。\r\n\r\n另外值得注意的是 Mac 版 (close beta 中) 與 Linux 版 (計畫中) 的發行,到時候應該會有人想辦法在 FreeBSD 上跑... 再用個 Xming 好像不錯... :p", + "title": "µTorrent 1.7.1" + }, + { + "id": "1237", + "body": "把 blog.gslin.info 拿來放 ACG 的部份好了... (說不定更新的比這邊勤?)", + "title": "ACG 部份..." + }, + { + "id": "1238", + "body": "如果平常有訂國外 Slashdot 在看的人應該會看到蠻多與 IP 有關的新聞,最近幾個比較常見的議題是:美國式專利制度、微軟 OOXML 的封閉性、著作合理使用問題 (像是 DRM)。\r\n\r\n不過大多數的新聞在看完以後實在是懶得寫,因為光是看動畫漫畫輕小說的時間就已經不夠了 (errr),所以就很少提到這方面的事情。\r\n\r\n大約兩個月前我在網路上找資料的時候找到:知識產權關注小組,就訂到 Bloglines 裡面放著看,後來看一看覺得還不錯 (比起 反微軟資訊新聞 好太多),特地寫一篇出來推薦。", + "title": "香港中文大學學生會 知識產權關注小組" + }, + { + "id": "1239", + "body": "OASIS Security Services (SAML) TC 是早期 (2002 年的年底發表 SAML 1.0) 解決 Single sign-on 問題的公開標準之一,通訊的過程主要是以 XML 以及 XML 的變形作為資料傳遞的格式。因為是很早期就存在的標準架構,所以 Google Apps 的 SSO API 就是走 SAML。\r\n\r\n拿 SAML 去查,應該都會查到 zxid 這個 library,不過這個 library 先天不良加上後天失調,問題實在太多,前景又不看好...\r\n\r\n所以我本來是打算乾脆自己從底層刻,在讀了 SAML 2.0 的一些資料,查了 PerlCPAN 以後發現在 Perl 上面其實需要很多東西:\r\n\r\n最後才是實做 SAML。(ouch)\r\n\r\n所以我本來打算寫信請對方找 Python 的人來寫 Google Apps 的 SSO,因為我查到 Python 上有已經寫好的 XMLSec Library:PyXMLSec,這樣只要實做 SAML 2.0 的部份,工程應該會比較小。\r\n\r\n於是我就開始找 PythonSAML 2.0 資料,結果翻到 Lasso,同時有 C、P*3 (PHPPerlPython)、SWIG 的支援,然後有 mailing list 可以查,有 Subversion Repository 可以翻 svn blame 查資料。\r\n\r\n於是我又把信砍掉,繼續研究 SAML,然後特地寫一篇出來讓其他人不要重蹈覆轍... :(", + "title": "SAML、zxid、Lasso" + }, + { + "id": "1240", + "body": "前陣子在 IRC 上問蔡依林是不是又改了什麼設定,使得我在 Bloglines 上看到的 RSS feed 爛掉 (其實還蠻常發生的),不過他說他什麼都沒動:\r\n\r\n\"\"\r\n\r\n本來以為是 Bloglines 的問題,不過我記得其他的 Blog 只有在更新 WordPress 到爛掉的時候才會有一樣的情況 (可以直接看 feed 確認是升級到爛掉,不是 Bloglines 的問題),結果剛剛在 ericsk 的 Blog 上看到類似的情況,看起來是 Feedburner 的問題... 來看看這陣子整合進 Google 的時候會不會修好...\r\n\r\n這樣說起來我才想到,我好像常常因為 Feedburner 開起來是亂碼,於是改訂站台所提供的 RSS feed...", + "title": "Feedburner 的問題" + }, + { + "id": "1241", + "body": "我試著在 Python 上找到 Perl Regular Expression 有提供的 General Category Property,不過沒有找到。而且發現 Python 沒有使用 PCRE。\r\n\r\n先參考 Unicode.org 上的文件,Unicode Regular Expressions 這篇,在 Regular Expression 裡使用 General Category Property 指的是 \\p{Lu} 這種用法,前面的範例表示大寫字母 (Uppercase Letter),我在用 Perl 切詞的時候用了兩次這種 Regular Expression。\r\n\r\n替代的方案是依照 Unicode Regular Expressions 裡的說法去找對應的範圍,然後自己寫 Regular Expression。\r\n\r\nUpdateWikipediaMapping of Unicode characters 比較清楚,直接把 Hex Start 與 Hex End 列出來。", + "title": "Perl 與 Python 在 Unicode 的處理" + }, + { + "id": "1242", + "body": "收到 Layeredtech 的優惠信,主要是那個記憶體加倍的 Promotion Code 看起來還不錯,這陣子有打算在 Layeredtech 租用機器的參考看看吧:www.layeredtech.com/promotions/12-days-Christmas.php。\r\n\r\nPS:不要問我為什麼叫做 12 Days Christmas,我不懂...", + "title": "Layeredtech 的優惠" + }, + { + "id": "1243", + "body": "WordPress 2.1 與 2.0 的安全性更新,在官方網站上釋出新版讓人下載,而且也公告出來了:WordPress 2.1.3 and 2.0.10,包括了 XSS 漏洞與 XML-RPC 問題...\r\n\r\n跟之前一下,下載下來後直接把檔案蓋過去,然後跑 http://my.blog.site/wp-admin/upgrade.php,把資料庫內需要同步的部份一起更新。\r\n\r\nPS:其實走 trunk 版本也不錯啦,在 svn updatesvn export --force 蓋過去...", + "title": "WordPress 安全性更新" + }, + { + "id": "1244", + "body": "先給基本資料:台北縣新莊市中平路263號,電話是 (02)89911027,不知道路要特地來的可以先到新莊高中門口再找路。\r\n\r\n前幾天在 IRC 上看到這個報導:女僕端咖啡 吸引宅男回家,用 Google Blogsearch 只找到這篇:阿部屋~女僕店,裡面有不少照片,不過手振蠻嚴重 XD\r\n\r\nAnyway,我是跟表弟去吃完宵夜以後決定去這家二十四小時營業的「阿部屋咖啡店」試看看,不過到的時候已經過十二點了 (晚上十二點到早上九點是不開放二樓的),所以只能外面的桌子吃,所以裡面的插座以及無線網路的情況不太清楚。\r\n\r\n至於女僕的部份嘛... 基本上只是穿著女僕服的 waiter,我跟表弟站在收營機前要點餐的時候,waiter 還是只顧著自己在準備飲料之類的東西 (也有可能是因為深夜只有一個人),以女僕咖啡店的標準來比較的話... 完全不合格。\r\n\r\n再來講飲料及餐點的部份,因為是吃過宵夜,所以我們兩個一開始只點了冰飲料,結果飲料上來的時候是一般外帶用的紙杯裝 (參考上面有圖片的 Blog),完全不合格。後來我肚子又餓了,所以又點了點心與飲料,順便請他把一些建議轉給店長。東西是不會難吃,不過也沒有特別好吃或好喝。\r\n\r\nAnyway,我覺得以「女僕咖啡店」的標準來說,這家完全不值得去,這家以「價錢」換掉某些應該要有的東西 (參考上面提到的 Blog,裡面有價目表),我建議還是去地下街或是西門町會比較好。\r\n\r\nUpdate:另外找到 女僕咖啡店:阿部屋 這篇也是講阿部屋的文章。", + "title": "阿部屋咖啡店" + }, + { + "id": "1245", + "body": "本來以為今天是星期一的,星期一下午有事情,特地「早一點」去睡覺 (大約是早上四點吧...),自然醒的時候是早上七點 (有點像是睡午覺),把電腦打開的時候看到時鐘上面寫著星期日,還檢查網路對時的服務是不是有問題...\r\n\r\n這幾天研究的重點在於 ZXIDLasso 這兩個有支援 SAML 2.0 的 Library,以及 Python 的語法 (寫起來還蠻有趣的),另外再把 FreeBSD 上的 Tinderbox 跑起來測試 p5-Net-SAML 編譯的問題。\r\n\r\n另外就是動漫畫看了不少...\r\n\r\n漫畫的部份,把《艾瑪》七本 (加上一本導讀本) 看完了,這部作品的畫風真的很棒 (然後又是台灣角川代理的)。另外《最終兵器少女》也看完了,這點在 gslin.info 那邊有稍微提到過了。\r\n\r\n接下來的順序應該是《蟲師》、《去吧!稻中桌球社》、《未婚關係》(藍より青し,另外一個比較普遍的翻譯是《青出於藍》)。\r\n\r\n動畫的部份,由於目前追了 34 部新番 (主要是春番,其中有大約 20 部是半年番以上的作品...),所以「食之無味,棄之可惜」的動畫,或是不合胃口,但是還是稍微想看看劇情的動畫,就在跑程式的時候用兩倍速放過去 (舉例:《黑之契約者》、《骷髏人》之類的...),結果積在機器上沒看的反而都是比較想花時間慢慢看的動畫...", + "title": "時間錯亂 + 碎碎念" + }, + { + "id": "1246", + "body": "Lighttpd 先出了 1.4.16 把一些 bug 修掉:1.4.16 - Let's ship it。\r\n\r\n等 FreeBSD ports 更新後再把 colo-lt 這台上面的 lighty 更新上去,到時候就會知道會不會中地雷了...。", + "title": "Lighttpd 1.4.16" + }, + { + "id": "1247", + "body": "SlideShare 可以把投影片加上聲音了:Slideshare Adds Audio Synchronization。\r\n\r\n看起來把現場錄音錄下來以後,回家把時間點打上去就好了。(結果現在連不上 slideshare.net 了 XD)", + "title": "SlideShare + 聲音" + }, + { + "id": "1248", + "body": "在 Slashdot 上看到有人提到英文版 Wikipedia 上有人整理了一份對大英百科全書的勘誤表:Wikipedia Corrects Encyclopedia Britannica,在 Wikipedia 上的頁面是這篇:Wikipedia:Errors in the Encyclopædia Britannica that have been corrected in Wikipedia。\r\n\r\n翻了一下編輯歷史,這份名單是從 2005 年一月從元維基 (meta.wikipedia.org) 上搬過來的,取這種標題看起來就是要討戰的,現在終於如願以償上了 Slashdot ... XD\r\n\r\nPS:這兩部百科全書的恩怨請參考 Taiwan.CNET.com 這篇「大英百科痛斥對手Wiki百科」,裡面提到的內容還蠻清楚的。", + "title": "Wikipedia 對大英百科全書的勘誤表" + }, + { + "id": "1249", + "body": "Seagate 說今年年底將停止生產 IDE 硬碟:Seagate to Drop IDE Drives by Year End。沒記錯的話,Seagate 應該是目前最大的硬碟製造商?\r\n\r\n大約再等個五年,主機板上可能就沒有 IDE 接頭了,就像當年讓 ISA 退出市場的情況一樣...", + "title": "Seagate 將在年底停止生產 IDE 硬碟" + }, + { + "id": "1250", + "body": "先引用 Slashdot 上的文章:New Ethernet Standard — Both 40 and 100 Gbps。\r\n\r\n新的標準是 IEEE 802.3ba (參考 IEEE 802.3 系列的資訊,比較奇怪的是 Wikipedia 還沒更新...),這項標準同時制定了 40Gbps 與 100Gbps 的規格,不過隨著速度提高,條件於來愈嚴苛了,40Gbps over Copper 的限制就已經是 10 米了...\r\n\r\n不過現在 10Gbps 好像也沒有很常見?10Gbps Switch 的單價也是... XD", + "title": "新的 Blah-Ethernet 標準出爐" + }, + { + "id": "1251", + "body": "在 Official Google Blog 上提到的這篇:Robots Exclusion Protocol: now with even more flexibility。\r\n\r\n文章裡提到的幾個玩意:\r\n\r\n簡單留個印象就好了,平常用不太到。", + "title": "Google 提供的 meta tag" + }, + { + "id": "1252", + "body": "µTorrent 1.7.2 出版,與 1.7 相比,1.7.1 與 1.7.2 各修正一個 bug:\r\n\r\n完整的說明可以在官方的論壇上看到,在 µTorrent 1.7.2 released 這篇。", + "title": "µTorrent 1.7.2" + }, + { + "id": "1253", + "body": "AideRSS 號稱可以透過一些演算法,幫你將比較重要的文章 (entry) 排到前面。不過我用過以後覺得這個服務不太能用,反倒是 Google 如果把 Google News 的技術 (把討論相同事情的文章堆在一起) 拿來用在這上面的話,對這些半吊子的 Service 殺傷力應該會很強...\r\n\r\n我把我在 Bloglines 的 feed 名單匯出來後倒進 AideRSS (約 470 個) 後,第一波告訴我已經處理完畢的大約有 110 feeds,半個小時候變成 200 feeds,過了一天睡醒後才都更新到。不過這是屬於痛一次就不會再痛第二次的操作...\r\n\r\n再來是 AideRSS 主打的 PostRank,據說是拿 comment、Bloglines 搜尋到的數量、Technorati 數量分析。這個部份不太能用,像我就不能理解為什麼 Flickr 的圖片有一個 Bloglines 搜尋數量就可以到 5 分,而 Slashdot 的文章有上百個 comments、5 個 Technorati 數量、4 個 Bloglines 搜尋,卻只有 3.4 分...\r\n\r\n附上一張截圖:\r\n\r\n\"\"\r\n\r\n點進去後可以看到其實排在上面的根本不太重要 (Flickr 的圖?Bittorrent 的 RSS?),我想他應該是對整個站有一個分數 (像是 Slashdot 隨便一篇文章都有 100+ comments,但是在其他的地方如果有 100+ comments 通常都代表超熱門,於是不同的站台對於 comments 所產生的分數就會不一樣),然後再對每個 entry 算出分數。\r\n\r\n不過回到上面的那個話題,我還是不懂像 Flickr 或是 Bittorrent 站台為什麼會給這麼高分數... 參數沒調好?", + "title": "AideRSS 感想" + }, + { + "id": "1254", + "body": "Matt Cutts 在他的 Blog 上提到了 Harry Potter 的字型很像 Yahoo! 商標的字型 XDDD:Harry Potter font looks like Yahoo logo?。\r\n\r\n補充一下,Matt CuttsGoogle Webspam Team 的大魔頭 XD", + "title": "Harry Potter 封面的字型" + }, + { + "id": "1255", + "body": "美國聯邦第九巡迴庭 判定不通知使用者就修改條款的條例是無效的:Web Contracts Can't Be Changed Without Notice。\r\n\r\n在美國地區因這個判例而必須修改的包括:\r\n\r\n這對使用者是一個很大的保護。當公司通知修改條款時,總是會有強者跑去看新增了什麼,如果條款過於囂張的時候就能夠尋管道鬧事 :p (完全鄉民化 XD)", + "title": "網頁版使用條款 (合約) 的更新" + }, + { + "id": "1256", + "body": "上次重灌是 5/28,距離只有兩個月...\r\n\r\n先抱怨一下 Lenovo 接手以後的東西真的是愈作愈爛,先不管 Firefox 3.0a7pre 不能下載的問題,用 IE 下載以後發現檔案一個比一個大...\r\n\r\nAnyway,Firefox 3.0a7pre 總算是會動了,不過還是不太穩定... 然後也發現很多站台都是直接用 Browser Detect 的技巧來決定要不要跑 Javascript,結果變成 Firefox 2.0 上用起來很爽的功能到了 3.0 上反而不能用...\r\n\r\n差不多該睡覺了,還要早起呢...", + "title": "重灌 Windows XP" + }, + { + "id": "1257", + "body": "Update:我在 Mailing List 上面問 (404 handler 這個 thread),解法是 mod_magnet,裡面有類似的範例 Complex rewrites 可以抄。\r\n\r\n昨天換上 Lighttpd 1.4.16 後用瀏覽器看起來沒問題後就沒管他了 (參考 Lighttpd 1.4.16 這篇),結果 IRC 上就被問到是不是有改到什麼設定,仔細檢查後發現是因為 404 Handler 的行為改變了。\r\n\r\n會發現是因為在 awstats 上發現流量掉很多,檢查以後發現所有正常的流量都記入 404,於是 awstats 就認為這不屬於正常流量 blah blah blah...\r\n\r\n其實網站本身還是沒什麼問題啦,不過這樣總是不太好 (不只是 log 裡是 404,包括 HTTP Header 也是 404),來找看看有沒有解...", + "title": "Lighttpd 1.4.16 的 404 Handler 行為改變" + }, + { + "id": "1259", + "body": "Suprnova.org 在 2004 年年底被強制關閉後,Suprnova.org 的網域擁有人在前陣子將網域交給 The Pirate Bay,準備將當年的 Suprnova.org 恢復:The Pirate Bay About To Relaunch Suprnova.org。\r\n\r\n樹 (The Pirate Bay) 愈來愈大了,不知道擋不擋的著一陣一陣的大風...", + "title": "Suprnova.org" + }, + { + "id": "1260", + "body": "因為要查國際運費的郵資是多少,所以跑到郵局的網頁上翻東西,連上首頁時看到有 RSS feed,分成五個 feed (呃...),點下去發現是空的... XD\r\n\r\n過幾天看看好了,大概不會修好... (聳肩)", + "title": "郵局的 RSS..." + }, + { + "id": "1261", + "body": "Brad Fitzpatrick 在他的 Blog 上提到他要離開 LiveJournalOn Leaving SixApart。\r\n\r\n他寫過很多軟體 (主要都是在 Perl 上),不過我想最有名的還是 memcached (這個不在 Perl 上),被廣泛用在許多平台上當作 cache service。像是 Facebook 曾經在 mailing list 上提到他們有兩百台 memcached,每一台都是 16GB 4-core AMD64:Re: Largest production memcached install?。(這應該是目前所知道最大的 memcached 使用站台)", + "title": "Brad Fitzpatrick 離開 LiveJournal" + }, + { + "id": "1262", + "body": "在 Robbin 的 Blog 上看到這篇:[WP]讓訪客在留言中貼圖的方式,這是應該要避免的情況,分成幾個方向。\r\n\r\n一時間只有想到這兩個問題,其他的想到在寫...", + "title": "應該避免在 Comment 允許讓使用者貼圖" + }, + { + "id": "1263", + "body": "在 BloglinesFirefox 裡看 Xuite 的 feed 又爛了,這次應該是第三次了吧... 這分別是在 BloglinesFirefox 上看到的情況:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n看了 Xuite 的 Atom,看到:\r\n
<content type=\"text/html\"  mode=\"escaped\">\r\n<![CDATA[&lt;p&gt;&lt; (... 中間實在太多,省略...) ]]>\r\n</content>
\r\nAtom 1.0 格式裡沒有 mode=\"escaped\" 的用法,往上翻發現是 Atom 0.3,查了 Atom 0.3 的規格書的確是有 mode=\"escaped\" 的用法,但是既然都 escape 了,不需要再用 CDATA 包裝啊 @_@ (至少我把 Atom 抓下來後把 CDATA 去掉,在 Firefox 上看就正常了...)\r\n\r\n有誰可以轉告 Xuite 的人嗎?就算不打算實做 Atom 1.0,也把 <head></head> 裡預設的 feed 設到 RSS 2.0 吧?至少 RSS 2.0 的 feed 是正常的...", + "title": "Xuite 的 feed..." + }, + { + "id": "1264", + "body": "這篇是延續 幫 Pixnet 做 Fulltext Search 這篇所寫的,這項功能 Pixnet 已經放出來了:[公告] 新增網誌搜尋(Beta)。\r\n\r\n最後收尾的階段有一些地雷要注意:\r\n\r\n最後,把本來是用 standalone 的版本換成 lighttpd + FastCGI 版,理論上就不會出現因為後端搜尋伺服器沒跑起來,而使得前端出現 0 result 的情況了... (汗)\r\n\r\nPS:因為當初做的時候有得到 far 的同意,所以等到我閒一點之後,我會用 BSD license 放出來...", + "title": "Xapian 的幾個細節" + }, + { + "id": "1265", + "body": "把 Gmail 用到爆炸的愛用者們,有好消息了:Gmail With 9030 MB?Google Shared Storage Program Released。\r\n\r\n你可以花 $20/year 購買 6GB 的空間,或是 $75/year (25GB)、$250/year (100GB)、$500/year (250GB),也許等到我的 Gmail 快用滿的時候也會買吧 XD\r\n\r\nUpdate:在 A simple way to get more storage 這篇提到了這項服務,不過怎麼沒連結 @_@", + "title": "Google Shared Storage Program" + }, + { + "id": "1266", + "body": "Update:有人翻譯出來了,SEO專業術語剖析:你真的看得懂SEO術語嗎?。\r\n\r\n對於搞 SEO (Search Engine Optimization,搜尋引擎最佳化) 業者的謊言,在這邊看到一張表格,將這些謊言對應到事實,寫的超棒啊 XD:SEO Speak Translated: The Real SEO Glossary。\r\n\r\n也許應該找個時間翻出來...", + "title": "SEO (Search Engine Optimization) 業者的謊言" + }, + { + "id": "1267", + "body": "這陣子在幹壞事的時候才發現國內一些站台都沒有處理好... XD (我絕對沒有說是哪些站喔,自己裝 Web Developer 用他的 View Form Information 看吧 XD)\r\n\r\n直接以程式碼舉例。我在我自己的站上放一個 html,裡面有一個 form 與一段 javascript,會自動 submit 出去:\r\n
\r\n<form\r\n action=\"http://dingding.example.org/delete-my-account.php\"\r\n id=\"myform\" method=\"post\" name=\"myform\">\r\n    <input ... /> (某些需要的欄位)\r\n</form>\r\n\r\n<script>\r\nvar f = document.getElementById(\"myform\");\r\nf.submit();\r\n</script>\r\n
\r\n如果網站沒有正確處理,就可以讓別人幫你砍帳號,或是發文章 (Spam 的好方法?),或是其他事情。這是因為瀏覽器連到 dingding.example.org 的時候會帶 cookie 進去。\r\n\r\n解法也很簡單,用類似 Double Cookie 的方式解決。以 PHP 為例,產生 form 的時候多送一個 hidden input:\r\n
\r\n<input type=\"hidden\" name=\"doublecookie\"\r\n value=\"<?= md5(session_id()) ?>\" >\r\n
\r\n然後在接收 form 的程式碼裡面判斷:\r\n
\r\nif (!isset($_POST[\"doublecookie\"]) ||\r\n    $_POST[\"doublecookie\"] != md5(session_id())) {\r\n    // not match, break it\r\n}\r\n
\r\n你可以看到 GoogleBlogger 就是用類似的方法做的。在 securityToken (被我劃掉的地方) 的地方:(點小圖看 1024x1024 的大圖,不過我為了塞到一頁裡面,字縮小了兩次...)\r\n\r\n\"\"", + "title": "Form 的安全性問題" + }, + { + "id": "1268", + "body": "在 rsync 3.0 rocks! 這篇看到 rsync 在 3.0 的重大改變:Incremental recursion。\r\n\r\n目前的 rsync 2.x 都是先掃完檔案後才開始傳輸,對於只有幾千個檔案當然沒問題,但像是大型站台除了用 NetApp 外,還是會另外找空間備份,這時候的檔案就不只是幾千萬個,通常在掃描的過程就會先出現 \"out of memory\" 的訊息...\r\n\r\nrsync 3.0 將會先掃一小部份、傳一部分,再掃一部分、傳一部分,減少記憶體的使用量,另外也會些微增加讀取的效率。(剛掃過的目錄會有 cache?)\r\n\r\n繼續期待 rsync 3.0 :p", + "title": "Rsync 3.0 將會有的改善" + }, + { + "id": "1269", + "body": "以前都是裝 ftp/bsdftpd-ssl,結果在 6.2 與 7.0 上 compile 時都會有錯誤訊息,也看不出什麼好解法,試了 ftpd-tls 好像沒什麼問題就決定用他了,但是又卡在忘記怎麼產生 key... 所以寫一篇紀錄下來 XD (這樣的好處是用 Google 找會找到自己的文章... XD)\r\n\r\n到 /etc/ssl 下產生 key 及 crt:\r\n
# openssl genrsa -out server.key (umask 077 好像沒用,那只好在生完後趕快 chmod 400)\r\n# openssl req -new -key server.key -x509 -days 3650 -out server.crt
\r\n做完以後裝 ftp/ftpd-tls:\r\n
# cd /usr/ports/ftp/ftpd-tls\r\n# make install clean
\r\n裝完後到 /etc/inetd.conf 裡加上對應的欄位,最重要的是後面的:\r\n
ftpd-ssl -4lU -z rsacert=/etc/ssl/server.crt -z rsakey=/etc/ssl/server.key
\r\n對於只是要有個安全的連線來說算是夠用了。\r\n\r\n最後,先把 SHA1 Fingerprint 抓出來:\r\n
# openssl x509 -noout -in server.crt -fingerprint -sha1
\r\n輸出會像這樣:\r\n
SHA1 Fingerprint=DF:E4:3A:7F:79:1D:5D:B9:A8:7E:D2:DD:BD:7A:88:E0:6C:29:15:62
\r\n然後 Filezilla 連上時會有 SHA1 Fingerprint 資訊可以對照:\r\n\r\n\"\"", + "title": "在 FreeBSD 上支援 SSL 的 ftpd" + }, + { + "id": "1270", + "body": "不知道從什麼時候開始連不上 Skype,剛剛在 Skype 官方的 Blog 上看到說明了:Problems with Skype login。\r\n\r\n依照官方的 Blog,這次大約會掛 12 ~ 24 小時...", + "title": "Skype 連線問題" + }, + { + "id": "1271", + "body": "最近有一台有十二顆硬碟的機器要上,想說來測試 FreeBSD 7.0 上的 ZFS,結果發現 ZFS 解決的問題有限... 不過對於軟體解決方案來說,是一個很大的進步 :p\r\n\r\nZFS 提供的 RAIDZ 有三種保護方式,第一種是 MIRROR,類似 RAID1 的方式,相同的資料會丟到兩顆上;第二種是 RAIDZ1,與 RAID5 類似的方式 (XOR),擁有一顆硬碟故障的容錯能力;最後則是 RAIDZ2,與 RAID6 類似的方式 (Reed-Solomon),擁有兩顆硬碟故障的容錯能力。這些都因為理論限制而沒有辦法新增硬碟。其中 RAIDZ2 (RAID6) 是目前 FreeBSD 的 gvinum 還沒有提供的功能,這是 ZFS 所帶來的第一個進展。\r\n\r\nZFS 所提供的「擴充性」是以相同的 virtual device 為單位,假設以三顆硬碟完成 RAIDZ1 成為一個 virtual device 後,你可以塞進一個 pool 裡面,而且是不斷的塞:\r\n
# zpool create raidz1 mypool ad4 ad6 ad8\r\n# zpool add raidz1 mypool ad10 ad12 ad14
\r\n當你用 zpool create raidz1 建立 pool 後,就決定了你後面 zpool add 一定要用「raidz1」、「三顆硬碟」當作增加的單位 (大小倒是沒差),不然會出現:\r\n
mismatched replication level: pool uses 3-way raidz and new vdev uses 4-way raidz
\r\n或是:\r\n
mismatched replication level: pool uses 1 device parity and new vdev uses 2
\r\n看起來很像 concat,但比起傳統的 concat,新增的 pool 可以馬上分擔寫入的負荷。而且對於要大不大的企業用戶來說,每次固定增加四顆或八顆硬碟 (一張 SATA 外接卡可接的量) 比起資料搬移的停機容易接受。\r\n\r\n再更大的話也許還是用 NetApp 之類的方案吧 :p", + "title": "ZFS" + }, + { + "id": "1272", + "body": "在 Slashdot 看到有廠商想到其他方式來管理數位版權的問題:Watermarking to Replace DRM?,原文在 CNET 的網站:Watermarking to replace DRM?。\r\n\r\nDRM 希望做到的是「事前防範」複製的行為,但這是從理論基礎上就已經知道不可行。而浮水印做到的是「事後追查」的能力,在理論基礎上「可行」,但以目前的技術來說... 有陣子沒碰這塊資訊了,不清楚。看起來微軟是打算跟業者合作提供服務,對每個不同的使用者將音樂加浮水印後送出去,而不公開浮水印本身的演算法。", + "title": "使用浮水印取代 DRM" + }, + { + "id": "1273", + "body": "Sourcefire 買下 ClamAVSourcefire acquires ClamAV,在雙方的官方網站上都公佈了。\r\n\r\nClamAV 蠻好用的,有很多人 (以及公司) 利用 ClamAV 的 engine 寫了不少軟體 (像是 ClamWin),如果依照 Snort 的模式 (Snort 目前是 Sourcefire 的 Open Source 產品之一) 就沒什麼問題。", + "title": "Sourcefire 買下 ClamAV" + }, + { + "id": "1274", + "body": "剛剛把 WordPressK2 一起升級,發現 K2 終於支援 trunk 版本的 db query 了,於是 category 終於回來了 XD\r\n\r\n本來卡在 Category 顯示不出來而不想升級的人,現在可以升級了 :p", + "title": "久違的 Category 回來了..." + }, + { + "id": "1275", + "body": "自從 bsnmpd 進 base 後,在 FreeBSD 上要做流量統計所需要做的事情愈來愈簡單了。\r\n\r\n首先是修改 /etc/rc.conf,開機時會自動跑 bsnmpd:\r\n
bsnmpd_enable=\"YES\"
\r\n第一次啟動時可以手動跑:\r\n
# /etc/rc.d/bsnmpd start
\r\n然後裝 net-mgmt/mrtg:\r\n
# cd /usr/ports/net-mgmt/mrtg\r\n# make install clean
\r\n裝完後跑 cfgmaker 產生檔案:\r\n
# cfgmaker public@127.0.0.1 > mrtg.cfg
\r\n然後修改 mrtg.cfg 內的 WorkDir,最後產生 index.html:\r\n
# indexmaker mrtg.cfg > index.html
\r\n然後將 mrtg 指令放到 crontab 裡跑就可以了。", + "title": "FreeBSD 上的 SNMP" + }, + { + "id": "1276", + "body": "這陣子因為 Microsoft 決定將 Microsoft Permissive License 送交 Open Source Initiative 審查而又引起風波。(Slashdot 這篇:Microsoft's New Permissive License Meets Opposition)\r\n\r\nMicrosoft Permissive License 相當開放而且自由,同時條款又相當的簡單。這個 license 要做的事情差不多就是 BSD license + 專利授權條款,也就是這段所提到的:\r\n
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
\r\n相較於 GPL 3.0 自以為自由的條款來說,這份授權條款對我比較有吸引力。", + "title": "Microsoft Permissive License" + }, + { + "id": "1277", + "body": "前陣子才從蔡依林姊姊那邊看到 Remove It Permanently (不過我沒有用,因為要自己設定太麻煩了),結果這幾天就發現 Adblock Plus 可以擋頁面元素,而且 EasyList (某個可以訂閱的 Adblock Plus 清單) 這陣子也開始用這個方式列清單了...\r\n\r\n這是 Y! TW 的首頁,被清的乾乾淨淨的,看起來真愉快啊 XD:\r\n\r\n\"\"\r\n\r\n這是某大站:\r\n\r\n\"\"", + "title": "Adblock Plus 擋頁面元素" + }, + { + "id": "1278", + "body": "Update:更完整的解釋出來了:The Microsoft connection clarified。\r\n\r\n前幾天的 Skype 大當機事件造成許多使用 Skype 的用戶抱怨,結果在 Skype 的 Blog 上說明了這次當機的原因:What happened on August 16。\r\n\r\nSkype 使用 P2P 架構維持整個系統的穩定性。依照 Skype 官方的說法,因為前幾天的 Windows Update 造成許多電腦強制重新開機 (說到這個,Microsoft 似乎可以無視設定值強制重新開機),而使得系統不穩定。在理想的情況下,Skype 應該會迅速自我復原,但因為 Skype 演算法的臭蟲,造成系統幾乎停擺兩天。\r\n\r\n至於信不信,就看個人了... (以前 Windows Update 也強制重開過很多次)", + "title": "Skype 當掉的原因:Windows Update" + }, + { + "id": "1279", + "body": "在 YUI Blog 上看到用 YUI 做出 Web 版的接龍:Implementation Focus: World of Solitaire by Robert Schultz,遊戲的站台在這:World of Solitaire。\r\n\r\n拿來打發時間相當棒 :p", + "title": "用 YUI 的 Web 版接龍" + }, + { + "id": "1280", + "body": "John Resig (jQuery 的發起人以及現任的主要維護者) 在 Google 談如何建立一個 JavaScript Library:Building a JavaScript Library,包含影片及投影片。\r\n\r\n其實都是在講 jQuery 的作法,不過對於已經在使用 jQuery,或是打算要使用 jQuery 的人相當值得看完,對於之後使用 jQuery 有相當棒的幫助。\r\n\r\nPS:另外一個很好用的 reference site 是 Visual jQuery。", + "title": "John Resig 在 Google 談 JavaScript Library (jQuery)" + }, + { + "id": "1281", + "body": "在依林姊姊del.icio.us 上看到這個用 JavaScript 做出來的介面,拿來畫 SQL 關係圖還不錯:WWW SQL Designer。\r\n\r\n要注意的是他產生出來的 SQL 指令並沒有把 FK 放進去 (至少 MySQLPostgreSQL 都是),所以畫完後要自己轉成 SQL CREATE TABLE 的指令。雖然如此,但對於拿來釐清一些複雜的架構還不錯...\r\n\r\n\"\"", + "title": "WWW SQL Designer" + }, + { + "id": "1282", + "body": "Gizmodo 這篇 Keyboard with Plants Growing Inside is More Gross Than Cool 的鍵盤看起來好棒,綠意盎然啊 XD\r\n\r\n(圖片就不 link 了,自己連過去看吧)", + "title": "長豆芽的鍵盤" + }, + { + "id": "1283", + "body": "CSS attacks! 這篇講到的兩個誘導使用者進行不安全操作的方法:\r\n\r\n前面那個可以用 js + Referer 解決大部分的問題 (對於有防火牆把 Referer 擋掉,而且沒有 js ability 的用戶,暫時想不到解法...),後面可以用 Double Cookie 解決。\r\n\r\n來找看看 Firefox 有沒有 Plugins 可以加強這些安全上的問題...", + "title": "CSS 攻擊法" + }, + { + "id": "1285", + "body": "jQuery 1.1 的最後一個版本:jQuery 1.1.4: Faster, More Tests, Ready for 1.2。\r\n\r\n這個版本速度比 1.1.3.1 更快,看起來是對幾個最簡單、最常用的 Selector 特殊處理,像是 $(\"#id\") 的改善就很明顯,在所有的瀏覽器裡都快了許多。另外多了一些新的功能,像是 .slice()... (這功能好!)\r\n\r\n大小的部份,可以看到 jQuery 慢慢變大了。1.1.2 是 21235 bytes,1.1.3 是 21472 bytes,1.1.3.1 是 21557 bytes,1.1.4 是 22679 bytes,這次長了 1KB。\r\n\r\n1.1.3.1 到 1.1.4 中間的新功能與 bug fix 在 jQuery 1.1.4 Closed Bugs 可以看到,看起來不少 bug 被修正... (這代表會有更多 bug?XD)", + "title": "jQuery 1.1.4" + }, + { + "id": "1286", + "body": "\"\"\r\n\r\n買回來以後其實很快就看完了 (這本在我書單裡的優先權很高的),一直沒有 post 出來而已 :p 照肥睡睡的說法是:\r\n
01:16 <@S> 鹹狼第二本..... 這..... 商業詐欺 期貨破產 黑吃黑 威脅利誘 都來了... !@#$%
\r\n我覺得這個描述實在太棒了 XDDD 總而言之,這本輕小說仍然保持著極高的水準,依然是強烈推薦大家買來看。\r\n\r\n動畫化的消息是在日文版第五本的書腰上公佈的,不過這種小說水準超高 + 內心戲超多的情況下,請不要太期待 XDDD", + "title": "狼與辛香料 II 以及動畫化消息" + }, + { + "id": "1287", + "body": "這陣子在 Xapian 的 mailing list 上剛好提到 PHP binding 的問題,結果引伸出來的 license 問題。查了資料以後,在 Wikipedia 上有張表格:List of FSF approved software licenses。\r\n\r\n簡單來說,PHP licenseOpenSSL license 不相容的原因都一樣:因為廣告條款的關係。\r\n\r\nXapian 想要用其他方式解套 (像是有人提出用 SWIG 過水) 都會因為 GPL 有感染性而不太容易處裡:SWIG 軟體本身是 MIT-style 與 BSD-style license,但是他產生出來的 wrapper code 因為使用了 GPL library,所以包成 binary 時還是會受到 GPL 影響。\r\n\r\n反正這類問題滿天飛...", + "title": "GPL 與 PHP License" + }, + { + "id": "1288", + "body": "剛剛看到 Bloglines Beta:βloglines:\r\n\r\n\"\"\r\n\r\n看得出來抄了很多 Google Reader 的優點,但有很多小細節還是沒注意到。", + "title": "Bloglines Beta" + }, + { + "id": "1289", + "body": "從 Matt Mullenweg 的 Blog 上看到的 WordPress Plugin,以往必須寫在 .htaccess 寫 mod_rewrite 的工作,現在可以用 Redirection 這套 Plugin 設定。\r\n\r\n在網頁上有個五分鐘的影片可以看,看完以後就大致知道要怎麼操作,除了一般的一對一對應外,還可以設定 Regular Expression (像是把 /blog/plugins/(.*) 重導到 /plugins/$1),甚至還可以做 proxy (影片中的 microsoft.com)。另外還有一些奇怪的功能 (像是可以設定 /fun 指到隨機的頁面 XD),其實看起來還蠻有趣的...\r\n\r\n可是實際會需要這個用途的人到底有多少呢... @_@", + "title": "Redirection Plugin" + }, + { + "id": "1290", + "body": "我在 Lighttpd 1.4.16 的 404 Handler 行為改變 提到的情況被視為是 bug,在 1.4.17 修正了:1.4.17 - for the sake of the server.error-handler-404。\r\n\r\n看起來又修正了一堆東西,看起來有些還蠻重要的... 不過,lighttpd 1.5 看起來還好遙遠啊:1.5.0 的 unclosed ticket。", + "title": "lighttpd 1.4.17" + }, + { + "id": "1291", + "body": "這陣子抓 bug 的時候發現連自己都要想半天,還是整理起來好了... 假設 $v 是未經過濾的變數,要放到不同地方要做不同的處理:\r\n", + "title": "變數在 xx 的處理方式" + }, + { + "id": "1292", + "body": "在 Taiwan.CNET 上看到交大會發 Google Apps 帳號給新生的新聞:本地校園對Google Apps感興趣。\r\n\r\n實際會使用 Google Apps 的原因嘛... (聳肩)\r\n\r\nUpdate:thanks for tyson,還有 pccu.edu.tw。", + "title": "交大新生採用 Google Apps" + }, + { + "id": "1293", + "body": "Python 3.0a1 (Python 3000 規格的實做) 出版了。\r\n\r\n在 What’s New in Python 3.0 可以看到與 2.6 的差別 (還有一堆地方放 XXX 等後來補上...),另外 3.0 的文件在 Python Documentation,最重要的是文件的搜尋啊啊啊... (在 docs.python.org 用的是 Google 的 site: 搜尋,不是說不好,只是 Google 的介面對於寫程式找資料來說實在不舒服...)\r\n\r\n不過,還是沒看到類似於 CPAN 架構的搜尋站台,像是 search.cpan.org 可以在搜尋完後先看到模組的文件,直接看怎麼使用,再決定要不要安裝。", + "title": "Python 3.0 測試版" + }, + { + "id": "1294", + "body": "把 FON+ 裝起來以後發現是個地雷:還是不能用 UPnP,加上 Port Forwarding 完全失效,而且還不知道會不會有熱當的情況,目前除了一個 LAN port 以外,看不出來有另外的功能。\r\n\r\n看起來還是得先把 FON 拿出來跑,之後等 FON+ 出新版韌體後再決定要不要用...", + "title": "FON+:地雷..." + }, + { + "id": "1295", + "body": "水準變差了。\r\n\r\n當天 (8/11) 跟 slzzp蔡依林NotExist 吃了以後就決定要寫,結果想到要寫的時候手邊總是沒有電腦 + 網路,剛剛才突然想起來,趕快寫下來不然又會忘記...\r\n\r\n可能會再找時間去吃一次看看到底是怎麼樣吧。", + "title": "貳兩燒肉 (二兩燒肉)" + }, + { + "id": "1296", + "body": "\"\"\r\n\r\n註冊 MSN Live 帳號時發現 CAPTCHA 第八個字被幹掉了 (大概是最右邊吧),只好按 F5 重來...", + "title": "MSN Live 註冊的 CAPTCHA" + }, + { + "id": "1297", + "body": "早上八點睡下去,十一點被打錯電話 (手機) 的人吵醒,結果睡醒的時候發現已經是晚上八點了 @_@\r\n\r\n來找「早餐」吃...", + "title": "睡... (boom)" + }, + { + "id": "1298", + "body": "Opera 居然記得 Bittorrent 這個 Protocol... 把 Peer Exchange 的功能做出來了:Opera 9.50 Kestrel Adds BitTorrent Peer Exchange。\r\n\r\n這個功能可以在取得少數節點的連線後,彼此互相交換其他節點資訊。一方面可以減少對 server 的負擔 (server 可以不用送那麼多節點),二來是起步的速度會更快。\r\n\r\n據說有人生出 rtorrent 支援 Peer Exchange 的 patch (不確定是對 libtorrent 還是對 rtorrent),不過 mailing list 上後來就沒看到消息了,也一直沒看到作者出來進一步表態... (果然還是得跑 Wine 嗎 :/)", + "title": "Opera 9.5 Alpha" + }, + { + "id": "1299", + "body": "\"\"\r\n\r\n抓了 VMware Player 下來後在裡面安裝 FreeBSD 6.2,結果發現 VMware Player 所提供的 SMP 還是有問題,在 FreeBSD 內打開後會有偶發的 core dump 現象,於是到 /boot/loader.conf 裡面設定 kern.smp.disabled=\"1\",強制把 SMP 關掉。\r\n\r\n跑了一陣子發現 FreeBSD 的時鐘不準,於是用 hint.apic.0.disabled=\"1\" 把 apic 關掉。從 6.2-RELEASE 升級到 6.2-STABLE 後發現沒開 apic 又會有另外的問題 (「時間漂移現象」這個詞忘了聽誰說的,我覺得還蠻傳神的啊...),於是把 apic 開回來以後又正常了。\r\n\r\n想玩看看 Dropbear,裝的時候發現還蠻簡單的,沒什麼可以設定的地方,所以隨便弄一弄就跑起來了。\r\n\r\n不過,因為我有把 PuTTY 的預設值看過後調整過,我把其中一些長度不夠,或是我不喜歡的方法都設定到警告去 (像是 3DES),連上去以後發現 PuTTY 警告我對方使用的是 Diffie-Hellman Group 1 (只有 768bits,被我丟進警告區),為了測試只好調回正常區跑看看...\r\n\r\n再來是發現因為 Dropbear 沒有透過 login(1) 登入,所以 /etc/login.conf 裡的設定 (像是 PATH 這個環境變數) 都沒有設定上去,只好暫時在登入後自己跑一次 login gslin 解決,反正會掛 screen...\r\n\r\n其他倒是還沒遇到什麼大問題,Dropbear 針對 Embedded System 設計的目標算是不錯,該有的都有了,預設值以 Embedded System 的環境為主,有機會再看看有沒有其它好玩的功能。", + "title": "VMware 與 Dropbear 小記" + }, + { + "id": "1300", + "body": "在 August Wrap-up 這篇提到蠻多數字,不過讓我想要紀錄下來的部份是:\r\n
WordPress.com is now using about 260 megabits per second of bandwidth average, with spikes as high as 820 mbits earlier today from the Apple Gizmodo liveblog. (Which did up to 941 requests per second all by itself during the keynote.) So last month we used about 80 terabytes of bandwidth.
\r\n目前 WordPress.com 的機器大多數在 LayeredtechServerBeach,可以粗略估出網路部份的成本。", + "title": "WordPress.com 的一些數據" + }, + { + "id": "1301", + "body": "看到 荒木飛呂彦 (《JOJO的奇妙冒險》的作者) 所畫的 \"SCRAPPER\" 登上 2007/09/07 這期的 Cell 期刊封面:荒木飛呂彦為 Cell 繪製封面 / Hirohiko Araki drew cover art for Cell。\r\n\r\n\"\"\r\n\r\n突然想到「不老的荒木飛呂彦」登上 Cell 雜誌,這是故意的嗎 XDDD", + "title": "Cell 雜誌封面" + }, + { + "id": "1302", + "body": "因為 依林姊姊去印度,機器沒人愛就開始天天當機... 只好跟 Layeredtech 不斷的開 ticket 殺來殺去...\r\n\r\n這三天總共開了四個 ticket:\r\n\r\n目前繼續看機器的情況。", + "title": "在 Layeredtech 的主機問題" + }, + { + "id": "1303", + "body": "在 mailing list 上看到 libtorrent 0.11.8 與 rtorrent 0.7.8 釋出的消息:[Libtorrent-devel] LibTorrent 0.11.8 and rTorrent 0.7.8 released。\r\n\r\n看了一下發現這個版本多了 Peer Exchange 的支援:\r\n
* Added Peer Exchange support, enable with the \"peer_exchange=yes\" option. Patch by Josef Drexler.
\r\n幹得好!這樣 libtorrent 主要的協定就只缺 DHT 了,趕緊 send-pr 進 FreeBSD ports 更新...", + "title": "libtorrent 0.11.8 支援 Peer Exchange" + }, + { + "id": "1304", + "body": "安全性更新:WordPress 2.2.3,看起來指的應該是 Ticket #4720 (closed defect: fixed) 這個吧。", + "title": "WordPress 2.2.3:安全性更新" + }, + { + "id": "1305", + "body": "收到這封信,不知道是不是因為這兩天 ticket 猛開的關係排進優先升級的名單中...\r\n
As you may know, Layered Technologies (LT) has been preparing to launch a new FREE \"Remote Reboot\" feature, which will enable you to reboot your server, as well as Power ON/OFF directly from Encompass (LT’s NEW client portal). This will allow you to Reboot or Power On/Off your server without LT support.\r\n\r\nThe free upgrade installations are scheduled to begin within the next few weeks and continue for several weeks. Your servers listed below are scheduled for this FREE upgrade. If you have servers other than those listed below, you may receive multiple notifications and installation dates since we are installing this upgrade in segments throughout our Data Centers.
\r\n這對於一般情況的 server crash 來說還蠻方便的...", + "title": "Layeredtech 將提供介面重開的服務..." + }, + { + "id": "1306", + "body": "從首頁上的會員登入進去,用 Firefox 照登入後會被導到 https://member.ruten.com.tw/ 這頁,不過現在頁面上出現的是 \"test by Aaron\":\r\n\r\n\"\"\r\n\r\n圖片是 9/8 下午兩點左右抓的,現在是 9/9 凌晨四點,還沒有恢復。\r\n\r\nUpdate:結果現在變成 403 Forbidden... (這是使用者登入後導回的頁面,反正先隨便處理?至少不要是 test by xxx 之類的?)\r\n\r\n\"\"", + "title": "露天拍賣登入後的頁面" + }, + { + "id": "1307", + "body": "官方網站上釋出 lighttpd 1.4.18,屬於安全性更新,依照列出來的修正部份,看起來是這條:\r\n\r\n詳細的說明在 Lighttpd FastCGI Remote Vulnerability 這裡有提到。\r\n\r\nFreeBSD 上使用 ports 的使用者只要先把 ports tree 更新,看一下 /usr/ports/www/lighttpd 下的 Makefile 更新成 1.4.18 了沒,如果還沒的話,將 distfiles 砍掉,並把 Makefile 裡的 1.4.17 改成 1.4.18 後手動更新:\r\n
# make fetch\r\n# make makesum\r\n# make deinstall\r\n# make clean install clean
\r\n然後將 lighttpd 重跑就可以了:\r\n
# /usr/local/etc/rc.d/lighttpd restart
", + "title": "lighttpd 1.4.18 安全性更新" + }, + { + "id": "1308", + "body": "雖然在 官方的 Blog 上還沒公佈,不過因為剛好在用 jQuery 寫 code,所以發現官方網站上已經更新了:Release:jQuery 1.2。\r\n\r\nUpdate:官方網站更新了,jQuery 1.2: jQuery.extend(\"Awesome\")。\r\n\r\n檔案愈來愈大了,這個版本有 26k (1.1.4 只有 21k),gzip 壓縮過後是 14k。", + "title": "jQuery 1.2" + }, + { + "id": "1309", + "body": "剛剛才突然想到,從 Server4sale 的主機搬到 Layeredtech 後就忘了設定 mod_deflate,網路上直接找資料抄設定用:啟用Apache2 的mod_deflate來壓縮網頁提高傳輸效能。\r\n\r\n另外我自己的 WordPress 也把 Gzip Support 打開了 (之前發現 Gzip 打開會有問題,所以一直是關著的),頁面的讀取速度應該會比以前快一些吧?", + "title": "啟用 mod_deflate 及 WordPress Gzip 支援" + }, + { + "id": "1310", + "body": "事前說明:在發表這篇文章時我是 Pixnet 的技術顧問,Xuite 的網誌服務屬於 Pixnet 的競爭對手。\r\n\r\n我一直覺得 Xuite Blog 的 Comment 看了很累,因為是由新到舊出現,所以閱讀時的順序必須是從下到上,但每個留言又是從上到下,於是眼睛要不要的跳來跳去...\r\n\r\n於是,我用 Greasemonkey 寫了一個 script,將 Xuite Blog 的 comment 反過來排,由舊排到新:Xuite Blog Comment Sort。\r\n\r\n寫這個 script 的時候才發現 Xuite Blog 有用 jQuery,所以直接套進來用就可以了 :p", + "title": "將 Xuite 的 comment 由舊排到新" + }, + { + "id": "1311", + "body": "當 innerHTML 還是太慢的時候的解法:When innerHTML isn’t Fast Enough...。\r\n\r\n在作者的文章裡面,你可以看到在非常極端的例子裡,用改寫過的 replaceHtml() 在 Firefox 2.0.0.6 裡 destroy 與 replace 的速度各快了 473 倍以及 50 倍。而在 Safari 3.0.3 beta 上則是 create 100 倍,replace 50 倍。\r\n\r\n在 jQueryGoogle Groups 上面可以看到兩個作者 (jQuery 的作者以及上面那篇文章的作者) 討論把這個功能放入 jQuery 的一些問題:Faster then innerHTML。", + "title": "在 non-IE 瀏覽器修改 innerHTML 的速度" + }, + { + "id": "1313", + "body": "事前說明:在發表這篇文章時我是 Pixnet 的技術顧問,無名小站的相簿服務屬於 Pixnet 的競爭對手。\r\n\r\nUpdate 2008-07-17:我已經修改 em:maxVersion 改到 3.0.*,所以 Firefox 3 應該可以繼續用 orz\r\n\r\nUpdate:我利用 User Script Compiler 產生 Firefox Extension,如此一來就不需要裝 Greasemonkey 就可以使用展開程式:wretchalbumexpander-0.1.xpi,你可以抓下來以後先放到桌面上,然後再把檔案的圖示拉進 Firefox,這時候 Firefox 就會問你要不要安裝。\r\n\r\n我用 Greasemonkey無名小站寫了一個圖片展開程式:Wretch Album Expander,程式碼可以在 Source for \"Wretch Album Expander\" 這裡看到。\r\n\r\n以彎彎的相簿為例子,這是沒有使用前的圖,以及使用後的圖:(請分別點入看原始大小)\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "無名小站的圖片展開程式" + }, + { + "id": "1314", + "body": "紀錄一下 OpenLDAPFreeBSD 上的安裝及設定流程。\r\n\r\n先透過 FreeBSDports 安裝 openldap23-server:\r\n
# cd /usr/ports/net/openldap23-server\r\n# make clean install clean
\r\n裝完後設定 /usr/local/etc/openldap/slapd.conf,主要要改的幾個部份是:\r\n\r\n改完後要設定開機時跑起 slapd,這個部份要在 /etc/rc.conf 裡新增:\r\n
slapd_enable=\"YES\"
\r\n接下來用 /usr/local/etc/rc.d/slapd startslapd 跑起來。用 ps -U ldap 應該可以看到 slapd process 在跑:\r\n
25290 ?? Is 0:00.04 /usr/local/libexec/slapd -u ldap -g ldap
\r\n以上就是 server 的架設。\r\n\r\n接下來講 client 的部份。先是修改 /usr/local/etc/openldap/ldap.conf:\r\n
BASE dc=example,dc=org\r\nURI ldap://ldap.example.org/
\r\n用 Google 找文件的時候會發現大家都是建議用 domain name 當作 BASE,但其實並沒有強迫要用 domain name,只是 domain name 剛好是全世界獨一無二的 (這是粗略的說法),所以用 domain name 是慣例,以後接手的人也會比較容易上手。\r\n\r\n將 server 跑起來,並且將 client 改完後,直接打 ldapsearch 應該就會看到沒有任何結果 (最後一行應該是 #numEntries: 0),這代表 server 應該沒什麼問題,接下來就是亂塞一些資料進去,這部份網路上大多數的文件都有提到 ldapaddldapdeleteldapmodify 的用法以及 ldif 的寫法,這些不太會因為在 FreeBSD 上就有不同的格式,可以看其他提到 OpenLDAP 2.3 的網頁。", + "title": "OpenLDAP 2.3 在 FreeBSD 上的架設" + }, + { + "id": "1315", + "body": "在 #bsdchat 上看到 mjhsieh 貼了這個 link:BSD Licensed PCC Compiler ImportedOpenBSD 的人把 Portable C Compiler (BSD license) 放到 CVS repository 了。\r\n\r\n當 GCC 決定要走向 GPLv3 後,就可以預測到下面這幾件事情一定會有一件發生:\r\n\r\n前者在 GCC 決定轉為 GPLv3 的時候就有人說要做,但是一直沒看到進一步的消息。後者則是 Anders Magnusson (NetBSD maintainer) 決定拿 Portable C Compiler 改,結果 Otto Moerbeek 把這份 code 塞進 OpenBSD 的 CVS repository 裡。\r\n\r\n看 CVS log 的檔案列表似乎支援不少平台,但據說目前 PCC 只能夠在 i386 平台上跑,而且還有 bug。不過當有人先做了第一步,造成新聞後 (這是重點),接下來的事情就好辦很多了...\r\n\r\n另外幾個有趣的事情拿來對照 OpenBSD 的動作還蠻有趣的:OpenBSD 大魔頭 Theo de Raadt 對於 Linux community 處理 GPLv2/BSD license 雙重授權時的砲轟,以及 GCC 預定在 9/18 釋出 4.2.2 的計畫。", + "title": "BSD license 的 C Compiler" + }, + { + "id": "1316", + "body": "jQuery 1.2.1 釋出,修正了 這些 bug,官方 Blog 上的公告在這:jQuery 1.2.1: Quick Fixes for 1.2。\r\n\r\n另外一個 1.2.1 很重要的「修正」就是把 1.2 裡拿掉的 .eq(n) 放回來了,寫成 .slice(n, n+1) 太脫褲子放屁 (你可以在看到 Source for \"Wretch Album Expander\" 裡看到我在選擇第四個 table 時用 slice(3,4) 的寫法),結果就是在一陣抱怨聲後把 .eq() 補回來了... XD\r\n\r\n另外一個消息是 jQuery UIjQuery UI: Interactions and Widgets。\r\n\r\n這代表 jQuery 也開始做 UI 的部份了,在 ericsk 的「jQuery UI 問世」這篇有提到一些,另外在網站上也有一些 sample html 可以玩。", + "title": "jQuery 1.2.1 以及 jQuery UI" + }, + { + "id": "1317", + "body": "在 Slashdot 上看到 Facebook 開始提供 Beta 版的 Storage Solution API 介面:Facebook Quietly Offers Storage to Developers,一路連到 FacebookData Store API documentation 看,卻看不出來要怎麼寫入資料... (不知道真正的 data 要放到哪個欄位)\r\n\r\n也許再等一陣子看看。", + "title": "Facebook 的 Storage Solution?" + }, + { + "id": "1318", + "body": "Becoming PHP 6 Compatible 這篇裡面提到的五個技巧,現在遵循這些習慣,等到 PHP6 正式推出的時候程式碼才不會改太多:\r\n\r\n上面所提到的改變,會強迫使用者不能再用壞習慣寫程式,對於 PHP 的發展會是相當好的事情。", + "title": "現在寫 PHP6-compatible 的一些技巧" + }, + { + "id": "1319", + "body": "我已經不知道現在在發展什麼了... 感覺跟 Microsoft 每隔幾年就出個 Windows XX 差不多:WordPress 2.3 公告文。\r\n\r\n這是第一個對 Atom 1.0 完整支援的版本 (其實所有的離線寫作程式都用其他方式支援了...),另外改用新版 jQuery,號稱快 800% (問題在於,就算是快了 800%,還是得用得很多才會有感覺)。另外一個重點是新的 WYSIWYG (呃,我到現在還是用舊的 HTML code 介面)。\r\n\r\n不過看在這次修掉 351 個 bug 份上,還是鼓勵大家更新好了,說不定可以解決各種靈異現象之類的...", + "title": "WordPress 2.3" + }, + { + "id": "1320", + "body": "把 latest-trunk (也就是 Firefox 3.0a9pre) 裝了起來,雖然還是有些 bug,不過穩定性比起六月時用的 3.0a6 好太多了,目前還沒有出現過「本程式作業無效,即將關閉」的畫面,而且中文顯示、輸入也都正常,大多數的 Extensions 也都可以透過 Nightly Tester Tools 強制在 3.0a9pre 上跑。\r\n\r\n因為通過了 Acid2 的關係,很多亂寫 CSS,用 SafariOpera 看會爛掉的網站,用 Firefox 3 看也會爛掉,這些站台在 Firefox 3 出來以後應該會修正。", + "title": "Firefox 3.0a9pre - Minefield 版" + }, + { + "id": "1321", + "body": "在 Official Google Blog 上公佈了 Google Trends 將每日更新的消息。\r\n\r\n舊版的 Google Trends 約一個月更新一次,主要是查詢「歷史走向」。新版改為每日更新後,總算是可以看到比較即時的資料了。暫時沒想到要怎麼用...", + "title": "Google Trends 每日更新" + }, + { + "id": "1322", + "body": "MySQL InnoDB 的 auto-increment 會造成 INSERT 時使用 table-level lock 的 bug 終於修正 (從 2006 年一月就進 MySQL 回報系統的 bug),下個 5.1 的版本 (預定是 5.1.22) 就會包括在裡面:InnoDB auto-inc scalability fixed。\r\n\r\n這個 bug fix 目前介紹了新的變數:innodb_autoinc_lock_mode,目前有三個數值可以用:\r\n\r\n無論無何,這是一個重大修正,在大量 INSERT 卻不能 bulk 時會造成的問題終於解決了。雖然最近我都用 PostgreSQL 開發... XD", + "title": "InnoDB 的重大修正" + }, + { + "id": "1324", + "body": "參考:Thread benchmarks,因為 MySQL 被廣泛應用,所以大家都拿他當作 Thread/Lock/... 的實際效率測試指標。\r\n\r\n這個測試結果顯示 FreeBSD 輸了一屁股,一定會讓 src committer (大光頭與 Jeffrey Roberson?) 測試 NetBSD 在 AMD64 上跑 MySQL 的效率,這陣子應該可以在 FreeBSD 的 mailing list 上看到相關的討論...", + "title": "MySQL 在 NetBSD 上的效率" + }, + { + "id": "1325", + "body": "事先說明:我是 Pixnet 的技術顧問。\r\n\r\n補一些 Yahoo! + 無名小站 濫用市場地位、排除其他搜尋引擎 ? 這篇的內容。依照 HTTP header 所寫,robots.txt 最後修改日期是 8/23:\r\n
Last-Modified: Thu, 23 Aug 2007 07:33:09 GMT
\r\n另外在 Google Blog Search 則是從 9/21 停止 index:Google 網誌搜尋:site:www.wretch.cc。\r\n\r\n本來想找 Wayback Machine,結果發現 robots.txt 的資料也已經消失了,暫時想不到有什麼其他的服務有保留。", + "title": "無名小站的 robots.txt" + }, + { + "id": "1326", + "body": "MySQL 在 NetBSD 上的效率 這篇提到的效率差別已經確認是 FreeBSD 7-CURRENT 的 malloc() debugging code 所造成,拿掉以後就接近了:Re: Thread benchmarks - FreeBSD corrections。\r\n\r\n這兩張圖分別是 FreeBSD/NetBSD 的 SCHED_4BSD 與 SCHED_ULE/SCHED_MSVR 效率差異:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "MySQL 在 NetBSD 上的效率說明" + }, + { + "id": "1328", + "body": "在 Simon Willison 的 Weblog 上看到的。我在關閉 Javascript 的情況下操作起來沒有遇到問題:Google Maps, HTML version,丟「Hsinchu」進去會問你是「新竹縣」還是「新竹市」,看起來基本的功能都有。\r\n\r\n也許找隻手機操作看看效果如何。", + "title": "Google Maps HTML 版" + }, + { + "id": "1329", + "body": "我果然還是用太少 :p\r\n\r\n前幾天我突然想到 Bloglines 有提供 Hotkey 直接操作,用了以後才發現在 Firefox 設定都配合好的情況下相當好用。我目前只用到三組快速鍵:用 \"s\" 列出下一個未讀的 feed,\"j\" 與 \"k\" 則是在這個 feed 內上下移動,最後再用 \"o\" 將想要獨立出來看的文章開新頁面。\r\n\r\n最後一項開新頁面的功能,配合 Firefox 的設定可以變成開新的 tab,預設應該是丟到背景,於是我就可以在 Bloglines 先大致看過一次後,再開始仔細看想看的。\r\n\r\n我發現 Bloglines Beta 版反而沒有這些 Hotkey...", + "title": "Bloglines 的 Hotkey" + }, + { + "id": "1331", + "body": "從 10/1 開始,Amazon S3 正式把 SLA 退費條件明列出來:Amazon S3 Service Level Agreement:保證 99.9%,如果在 99% ~ 99.9% 之間則退 10% 費用,99% 以下則是 25%。\r\n\r\n計算方式可以參考 Amazon 的說明,主要是計算 InternalError、ServiceUnavailable 這類傳回值,而非網路不通的情況。\r\n\r\n在 SLA 裡有一些例外條款,像是金額不到一定額度的,以及責任不屬於 Amazon 的情況。有在用 Amazon S3 的人可以看一下,雖然 Amazon 會在 billing cycle 幫你算...", + "title": "Amazon S3 的 SLA" + }, + { + "id": "1332", + "body": "在看到「我把 Google Pages 休了~」這篇後,我就去 Wikidot 上註冊一個帳號,把一些雜七雜八的東西丟上去,我的站點在這裡:wiki.gslin.org。\r\n\r\n最早以前我會習慣把文章丟到 hlb 的 Wiki 上去,不過後來因為 hlb 跑去當兵,系統就爛掉了 XD 後來也有自己寫簡單的 HTML 頁整理的「各類文件」,不過這些方法要寫 HTML 語法其實都不太方便。\r\n\r\n後來有自己拿 MediaWiki 使用,但是我實在不想自己維護系統 (像 rafan 就很熱血,自己還弄了一個「rafan 的筆記本」),所以看到 Wikidot 就很開心的跑去註冊,用了幾天覺得還蠻好用的 XD\r\n\r\n因為伺服器是架設在德國 (看起來),所以連線的速度上並不會非常快,請自己試用看看能不能接受。目前我寫了三個頁面,可以自己連去看看頁面的效果:\r\n", + "title": "Wikidot" + }, + { + "id": "1333", + "body": "前幾天發現 3gp 已經被包成 shared library,叫做 AMR Codecs as Shared Libraries,而且 ffmpeg 也已經靠這個 library 處理 3gp 了,不用像以前那樣自己去抓 zip 下來解開搞老半天。\r\n\r\n不過因為我對 FreeBSD ports 裡的 multimedia/ffmpeg 已經絕望了 (結構太亂改不動),所以我乾脆自己弄個 ports 出來包,四個檔案 (Makefiledistinfopkg-descrpkg-plist) 我就直接丟到 wiki 上了:ffmpeg。\r\n\r\n這一包裡面儘量把能包的都包進來了,除了 rmvb 以外,要轉檔應該沒什麼問題,有興趣的人可以自己整合回自己的 ports 架構裡。", + "title": "ffmpeg (全包在一起)" + }, + { + "id": "1334", + "body": "Amazon EC2Amazon Web Services 中提供運算能力的服務,使用者可以做好 Image 後丟上去跑,一般都是跑 Linux System。由於計費方式是以小時算 (不足一小時的會無條件進位),價格是 USD$0.1/hour/instance。所以對於短時間內需要大量機器運算的單位相當方便,不需要買一堆機器養。(其實跟別人聊天的時候有想過用這個系統跑 RSA factoring... XD)\r\n\r\n在 Amazon Web Services BlogAmazon 宣佈除了原先的 instance 外,現在還多提供了兩種 instance,這兩種 instance 的收費是 USD$0.4/hour/instance 與 USD$0.8/hour/instance,除了這些 instance 變成 64bits 外,CPU、記憶體、儲存空間的量也差不多是原來的四倍與八倍:Amazon EC2 Gets More Muscle,這對於需要大量記憶體的程式會相當方便。\r\n\r\n不過我還是沒搞懂他的 AMI (Amazon Machine Image),找機會玩徹底看看...", + "title": "Amazon EC2 提供更強大的運算能力" + }, + { + "id": "1335", + "body": "Slashdot 上報導了垃圾郵件的比例創下歷史高點,已經到總量的 95%,其中圖片類的垃圾郵件已經被 PDF 及 Excel 垃圾夾檔取代。\r\n\r\n有不少 spam 是將使用者導到有惡意軟體的網站上,以這些網站的所在位置分別的話,美國 36%,俄羅斯 8%,阿根廷與南韓都是 5%,波蘭與英國 4%,印度與丹麥 3%,法國 2%。但如果以 PDF spam 計算的話,美國 24%,台灣 14%,中國 10%,俄羅斯 4%...\r\n\r\n自己維護電子郵件的服務愈來愈難做了,還是先靠 Gmail 撐吧...", + "title": "垃圾郵件所佔的比例" + }, + { + "id": "1336", + "body": "Amazon One-Click Patent 是專利濫用裡很知名的案例,在去年五月時有人送重審的申請書 (參考「\"One Click\" 專利」這篇),終於在這個月被搞定了:AMAZON ONE-CLICK PATENT REJECTED BY THE US PATENT OFFICE AS A RESULT OF MY REQUEST。\r\n\r\n雖然 USPTO 推翻了 One Click 大部份的專利內容,但 Amazon 仍然可以對 USPTO 提出回應。", + "title": "Amazon 的 One-click 專利重審" + }, + { + "id": "1337", + "body": "在 Twitter 上看 Matthew Mullenweg 提到 Automattic (最有名的「產品」是 WordPress.com) 買下 Gravatar,公告的文章在這:Automattic Acquires Gravatar。\r\n\r\n這真是太神秘了... Automattic 居然有能力買別人 XD", + "title": "Automattic 買下 Gravatar" + }, + { + "id": "1338", + "body": "在 Slashdot 上看到覺得實在太精彩了 (除了這個「點子」很精彩以外,Slashdot 上的 comments 也很精彩),一家律師事務所宣稱「觀看他們網站的 HTML 原始碼」是屬於侵權行為:Law Firm Claims Copyright on View of HTML Source。\r\n\r\n原始的報導在 Law Firm Uses Copyright Claim To Say You Can't View Its Website's HTML Source 這篇,網站在 Dozier Internet Law, P.C. 這裡,使用者條款則是在 User Agreement/Privacy Policy 這裡。", + "title": "「觀看 HTML 原始碼」是侵權行為?" + }, + { + "id": "1339", + "body": "呃... 這個關燈是真的關燈。\r\n\r\n在舊金山地區的人如果連上 Google 首頁 看到像這樣的樣子,請不要以為是 Google 被入侵或是四月一號到了,這是 GoogleLights Out San Francisco 計畫:\r\n\r\n\"\"\r\n\r\n這個計畫希望舊金山地區的使用者在星期六當地的晚上八點到九點把電燈關掉。", + "title": "Google 關燈計畫" + }, + { + "id": "1340", + "body": "在 Goston 那邊看到的字型美化軟體 (其實他是從 Ptt 上看到的 XD):[軟體] 超強 Windows 字型美化軟體 - GDI++。\r\n\r\n裝上去以後字體變得舒服多了,不過新細明體會有問題,就趁機換成黑體字了...", + "title": "Windows 字型美化軟體:GDI++" + }, + { + "id": "1341", + "body": "Minefield 是 Firefox 開發時最新版的代碼。最近發現連不到自己簽 SSL Certificate 的站台,會出現以下的錯誤訊息:(像是 opensvn.csie.org)\r\n
An error occurred during a connection to opensvn.csie.org:443 because it uses an invalid security certificate.\r\nThe certificate is not trusted or its issuer certificate is invalid.\r\n (sec_error_unknown_issuer)
\r\n以前只會跳出警告畫面,現在必須手動把站台加入例外名單:Tools -> Options -> Advanced -> Encryption -> View Certificates -> Add Exception。我猜這個功能會因為民怨而在正式版出版前被拿掉...", + "title": "Minefield (Firefox 3) 的 SSL Certificate 處理" + }, + { + "id": "1342", + "body": "事先說明:我是 Pixnet 的技術顧問,在這篇文章裡提到的這項服務與 Pixnet 以及 Pixnet 競爭對手有關。\r\n\r\n網址http://sn.hasname.com/。\r\n\r\n前陣子看到「玩WARM人脈搜尋網 竟抓到劈腿男」這篇文章後,我第一個想法是「這個東西也能當研究?」,如果連這種幹壞事的事情都要教授指導才能研究的話... (後面三千字省略)\r\n\r\n我在思考了一下整個架構後,似乎沒有技術上的問題,至於 Similiarity (好友相似度) 的部份,在 IRC 上跟 lwhsu 討論過後也已經知道方向在哪裡,就跳下去寫,看看要寫多久。Social Network Search in Taiwan 這個網站就是這樣的產物。\r\n\r\n目前只做了無名小站的部份 (先跑一陣子看看),未來希望能再加上其他站台。另外有打算直接開放 API (預定是 JSONSOAP) 以及 feed (應該還是會用 RSS 2.0)。\r\n\r\n以下補充一些題外話。\r\n\r\n以我個人的習慣,系統當然還是 FreeBSD + Apache (不是 lighttpd) + MySQL + PHP 組成的 (FAMP 架構),整個 code 都進 Subversion,但是有做一些特殊的設定 (post-commit hook),使得我 commit 進去的時候就會自動更新。這個部份可以參考 Wiki 上的範例:Subversion。\r\n\r\nMySQL 的部份是跑 5.1。在考慮之後 reading (query) 的量會比較大,所以採用 MyISAM 作為底層。目前這邊沒什麼技術可言,把 my-huge.cnf 裡與 replication 有關項目關閉,放到 /usr/local/etc/my.cnf 就可以了。\r\n\r\nCrawler 當然還是用 Perl 寫 (畢竟用 Perl 分析網頁已經寫得很順手了),底層是透過 ParallelUserAgent 抓,不然在國外連線速度太慢。另外因為有 Y! Apache 999 的關係,有故意用了一些方法避開,但這樣也造成更新會比較慢,看目前首頁上的資訊應該也看得出來 (「已統計人數」指的是有 ID 但還沒去抓取這個帳號的好友資料,「已經取得資料」則是指抓取過的)。程式一開始是從 wretch 開始跑,看起來可以長很大...\r\n\r\n最後是實際寫程式的時候發現 PHP 上最好用的 \"C\" (MVC 裡的 \"Controller\") 是交給 Apache 用 mod_rewrite 做... (真無奈)\r\n\r\n另外套了一些 jQueryjQuery UI 的東西上去玩,雖然文件寫的不是很清楚 (我去翻了程式碼才知道要怎麼用),但整體上來說還是相當不錯呢... 另外 YUI 的 CSS 也試著用了一些,不過之後可能會用其他家的吧 XD", + "title": "Social Network Search in Taiwan" + }, + { + "id": "1343", + "body": "剛剛在中文維基百科上查資料發現 Logo 換掉了 :)\r\n\r\n雖然已經沒什麼在寫,但還是恭喜中文維基百科的條目數超過 150k。即時的統計資料請參考「統計」這頁的資訊。", + "title": "中文維基百科條目數突破 150k" + }, + { + "id": "1344", + "body": "Slashdot 上看到有人提出用 GPU 暴力計算密碼的方式,估計可以加快 25 倍,原因在於舊的 GPU 是針對浮點運算平行化處理,而新的 GPU 已經有能力對整數運算平行化 (Fixed-point calculation,我不是很確定 Fixed-point calculation 在這邊的意思,因為數學上的 Fixed-point 是指「定點」...):New Password Recovery Technique Uses CPU and GPU Together。\r\n\r\n下一步應該會是把 RSA 以及 AES 的平行計算移植到 GPU 上面,不久後應該會看到 Slashdot 報導 :p", + "title": "用 GPU 暴力計算密碼" + }, + { + "id": "1345", + "body": "今天 Firefox 地雷版 trunk 更新後網址列居然改成這樣:(點小圖看大圖)\r\n\r\n\"\"\r\n\r\n很清楚的顯示出連到什麼站台,對於以後推動 Anti-phishing 也有幫助,只是第一次看到會在心中笑出來 XD", + "title": "Firefox 3 介面" + }, + { + "id": "1346", + "body": "拿到測試帳號了,用的是 Delicious.com 的網域。網址是 preview.delicious.com。\r\n\r\n在上面逛了一圈,最大的改變是 UI 重新設計,配色換成藍色與灰色調,這兩點讓使用者在使用時會比較舒服。至於新功能... 好像沒看到 :p\r\n\r\n首先是首頁:\r\n\r\n\"\"\r\n\r\n再來是 tag 頁,比較奇怪的是網址是用 ?view=tags:\r\n\r\n\"\"\r\n\r\n然後是個人頁面,上面這張是預設的兩行式,下面是換成三行式的顯示情況,可以看出來每個條目的 tag 與時間的表示變得更清楚了,右半部的 tag list 則是挑出 Top10 後再依照 alphabet 排:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n點 SORT 會有選單選擇:\r\n\r\n\"\"\r\n\r\n再來是 Bookmarklet,這個版本會 popup 出來,我不太喜歡這樣。我要找看看有沒有不會 popup 的版本...\r\n\r\n\"\"\r\n\r\n最後是使用者頁的 tag cloud:\r\n\r\n\"\"", + "title": "新版的 Delicious" + }, + { + "id": "1348", + "body": "Sun 自己寫了一篇文章,教你把 ZFS Snapshots 丟到 Amazon S3 上備份:Storage Utilities in Practice: ZFS Snapshot to Amazon S3。\r\n\r\n我本來期待是介紹 Incremental backup,結果發現只是很簡單的備份丟檔案而已,那不如用十年前就有的 dump 指令備份 :p (在時間準確的情況下可以做 Incremental backup,然後一樣丟上 Amazon S3)", + "title": "將 ZFS 的 Snapshots 丟到 Amazon S3" + }, + { + "id": "1349", + "body": "Google 新的翻譯引擎終於上線了:Google's New Translations。\r\n\r\n李開復在交大時就有提到以網頁的文字提昇翻譯的品質,當時他是以中文作為說明的背景,說明當 Google 網頁所儲存的量愈來愈大的時候,翻譯的準確度會愈來愈高,現在終於看到這個理論的產品上線了。\r\n\r\n不過還是有蠻多好笑 (而且奇怪 XD) 的翻譯...", + "title": "Google 翻譯機翻新" + }, + { + "id": "1350", + "body": "聲明:我是 Pixnet 技術顧問。\r\n\r\n看到 gugod 提到 OAuth,想到還沒寫過這個有趣的東西...\r\n\r\nOpenID 解決 SSO 問題,而 OAuth 要解決的是授權問題。\r\n\r\n更白話一點,OpenID 可以在不用給 Pixnet 密碼,就能夠證明我是無名的 DarkKiller;而 OAuth 可以在不給 Pixnet 密碼的情況下授權 Pixnet 存取我在無名的帳號內容。\r\n\r\n目前 OAuth 的狀態已經是 Final Draft,而幾個常見到的語言的 Library 也已經都寫好了 (不過還缺乏文件),等正式 Release 時可以跳下去玩。", + "title": "OAuth" + }, + { + "id": "1351", + "body": "美國第六巡迴庭認定色情網站驗證年齡違反憲法第一修正案Court Strikes Down Age Verification For Adult Sites。\r\n\r\n詳細的內容還要再找看看,不知道是不是標題殺人法...", + "title": "「色情網站驗證年齡」違法憲法第一修正案" + }, + { + "id": "1352", + "body": "看到 Download Squad 的新聞 Gmail gets IMAP 後去翻了手上的 Gmail 帳號,發現這個可以用了:(點小圖看大圖)\r\n\r\n\"\"\r\n\r\n「Gmail 是否支援 IMAP?」這篇過不久應該會換掉 :p\r\n\r\nUpdate:英文版的 Gmail 有正式的文件了:Getting Started with IMAP for Gmail。", + "title": "Gmail 將支援 IMAP" + }, + { + "id": "1353", + "body": "建立 Tor 的 Exit Node 方式很簡單,在安裝完 Tor 之後 (像在 FreeBSD 上可以使用 security/tor 安裝),修改 torrc:(參考我 Wiki 上的 Tor 這篇筆記)\r\n
RelayBandwidthRate 512000\r\nRelayBandwidthBurst 1024000\r\nContactInfo Random Person <username AT example dot com>\r\nORPort 32768\r\nExitPolicy accept *:80,accept *:443,reject *:*
\r\n其中 RelayBandwidthRate 與 RelayBandwidthBurst 是 bytes/sec,其中 RelayBandwidthRate 要求要在 20KB/sec (20480?) 以上,另外 ContactInfo 會留一個 E-mail 作為聯絡,裡面可以放 PGP key 的 ID,在寫信給你的時候就可以加密傳輸 (像 ContactInfo 1234D/FFFFFFFF Random Person <nobody AT example dot com> 這樣),而 ORPort 則會挑一個 port 與外界直接連接,ExitPolicy 是允許的連線規則,一般最常用的是 port 80 (http) 與 port 443 (https),你可以考慮另外開 port 110 + 143 + 993 + 995 (pop3 imap 以及兩者對應的 SSL 服務)。\r\n設定完後跑起來就可以了。", + "title": "Tor 的 Exit Node" + }, + { + "id": "1354", + "body": "VectorMagic 可以將點陣圖 (Bitmap) 轉為向量圖 (Vector),輸入的格式據網頁上的說明「常見的圖形格式都支援」,輸出的部份則支援 EPSSVG,不過我將 SVG 抓下來後用 Firefox (Minefield 版) 開不起來,上傳到工作站上用 svg2png 轉反而沒問題。\r\n\r\n我把 WordPress 的 Logo 丟進去跑,轉出來相當棒。前面這張是原圖,後面這張是轉成 1024x307 的圖,需要點進去看大圖:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "VectorMagic:將點陣圖轉為向量圖" + }, + { + "id": "1357", + "body": "這兩篇差了一年:\r\n\r\n在大光頭投影片裡的 Slide 36:\r\n
It's good to be back.
", + "title": "回顧 FreeBSD" + }, + { + "id": "1358", + "body": "強者我同學 ashley 在「我承認我被嚇到了...」這篇有提到在加州的地震,不過有趣的是 Twitter on Earthquakes 這篇的圖:\r\n\r\n\"\"\r\n\r\n完全就是 nctu.talk 翻版 XD", + "title": "地震時的 Twitter" + }, + { + "id": "1359", + "body": "The Pirate Bay 在研究下一代的 P2P 軟體:The Pirate Bay Sees a Future Without BitTorrent。\r\n\r\n原因是 BitTorrent Inc. 決定 close source 實做接下來的 BitTorrent 通訊協定,而且 BitTorrent Inc. 的走向愈來愈忽略使用者的感覺 (突然想到 MovableType 也是這樣搞...),於是 The Pirate Bay 決定自己發展。新的協定會用 .p2p 當做副檔名,格式希望與舊的 .torrent 檔相容。\r\n\r\n在 ProtocolDesign 這頁可以看到許多人提議,雖然我覺得拿 MediaWiki 提議是很蠢的事情...", + "title": "Bittorrent 的下一代 P2P 軟體" + }, + { + "id": "1360", + "body": "之前寫過「郵局的 RSS...」這篇,這陣子發現之前 RSS 內容都是空的,現在都修好可以訂閱了。\r\n\r\n像是 Hot ! 郵局新推出「90公分便利箱」及「長柱型便利箱」2款便利箱,歡迎使用! 這篇就是這樣看到的...", + "title": "郵局的 RSS 可以訂閱了" + }, + { + "id": "1361", + "body": "... 可以從這次的新聞裡看到:Masked thieves storm into Chicago colocation (again!) (「蒙面歹徒搶劫機房」)、Datacenter Robbed for the Fourth Time in Two Years (「機房兩年內遭搶四次」)。\r\n\r\n事件的苦主在 Webhostingtalk 上也有討論,這實在太讓人 orz 了...", + "title": "「異地備份」的重要性..." + }, + { + "id": "1362", + "body": "看「Gmail IMAP and Mutt on OSX」這篇的設定設的,我自己沒有使用 cache,而且我不想要把密碼放在檔案裡面,所以我的設定檔是:\r\n
set imap_user = 'yourmail@gmail.com'\r\nset spoolfile = imaps://imap.gmail.com:993/INBOX\r\nset folder = imaps://imap.gmail.com:993\r\nset record=\"imaps://imap.gmail.com/[Google Mail]/Sent Mail\"\r\nset postponed=\"imaps://imap.gmail.com/[Google Mail]/Drafts\"
\r\n要改的只有粗體的部份。\r\n\r\n有些人有發現連到 imap.gmail.com 的連線很慢,從台灣過去大約 300ms,看反解的名稱似乎是歐洲的伺服器,是暫時性將負荷導到歐洲,還是其他的原因,就要再等一陣子看看了...", + "title": "Gmail IMAP + Mutt" + }, + { + "id": "1363", + "body": "因為:\r\n
國立X山大學 計算機與網路中心 書函\r\n受文者:如正本\r\n發文日期:中華民國96年10月31日\r\n發文字號:中096電字第032號\r\n速別:\r\n密等及解密條件:\r\n附件:\r\n主旨:本中心為杜絕色情廣告氾濫之問題,即日起停止NEWS伺服器轉信服務,不便之處,敬請見諒。\r\n說明:教育部部長民意信箱接獲民眾檢舉,本校之提供之轉信服務,郵件內容大部分為色情廣告,為杜絕色情廣告氾濫問題,故自即日起停止NEWS伺服器轉信服務。
\r\n轉自「鴕鳥心態」這篇。我看 Group.NCTU.edu.tw 也應該打包放到非 TANet 的獨立主機好了...\r\n\r\n如果天天寫信去部長信箱抱怨信箱裡有太多色情廣告,學校會不會關閉郵件伺服器...", + "title": "news.nsysu.edu.tw 關閉" + }, + { + "id": "1364", + "body": "這幾天轉正職後就忙翻了,我在弄剛灌好的機器改系統架構,結果原本的機器就爆增四倍的流量,我還被問是不是動到原來架構的東西... XD\r\n\r\n先是之前提到的 Social Network Search in Taiwan。我有打算要放 source code 出來,但是有個大問題:現在我只要 svn ci 進去就會自動跑 post-commit,然後自動更新整個系統,如果搬到 Google Code 就必須用 mail trigger,這部份還要找時間弄 (現在超缺時間)。另外目前跑到 92.5% 了,我訂的目標是 95% 時把 raw data 放出來,希望週末的時候可以寫一些 API。\r\n\r\n另外一件事情是 Usenet 的事情,我在年初的時候就一直有跟兔子談 Group.NCTU.edu.tw 的維護問題,後來發生教育部中山大學的事情 (「news.nsysu.edu.tw 關閉」這篇),看起來要另外找地方放了。這個部份還要再想看看要怎麼做比較好。\r\n\r\n其他的小事情大多都在 Twitter 上亂講,不過 Twitter 的 Jabber bot 怎麼都不會通知更新啊...", + "title": "幾件事情的近況" + }, + { + "id": "1365", + "body": "這是 11/10 跑出來的原始資料,以 MySQL 5.1 mysqladmin 的格式從資料庫取出,使用 bzip2 壓縮 (在 Windows 上可以使用 7-zip 解壓),請到 Social Network Search in Taiwan 首頁上以 Bittorrent 軟體下載,檔案約 136MB。", + "title": "Social Network Search in Taiwan 的原始資料" + }, + { + "id": "1366", + "body": "我會用 Jabber Protocol 收 Twitterbot 送來的 Notifer,但是這陣子常常會收不到。直到前天在 Gmail 裡面收到 Twitterbot 送來的訊息,突然想到會不會是 Gmail Notifier 造成 Gmail 一直以為我在線上而沒有送到 Jabber 這邊的關係?等下把 Browser 都關掉試看看...", + "title": "經常失蹤的 Twitterbot" + }, + { + "id": "1367", + "body": "依照 Search Emails by Language in Gmail 的說法,在搜尋條件的地方輸入「language:Chinese」應該會出現中文的郵件,不過實際上只有簡體中文...\r\n\r\n總之我跑到 Gmail Help Discussion 上問,看看是不是 bug 或是 \"feature\":Search condition \"language:chinese\" not function very well。", + "title": "在 Gmail 裡列出中文的信" + }, + { + "id": "1368", + "body": "應該是前幾天做夢做到的,剛剛才突然想起來這件事情。\r\n\r\n在 IRC 上偶而會有人打太快把密碼丟到頻道上 (我好像幹過 XD),結果就開始手忙腳亂連到一堆機器上換密碼... 前幾天夢到我把某組工作站用的密碼打到 #bsdchat 上,驚醒後罵了句靠腰就躺回去睡 XD\r\n\r\nAnyway,這讓我想到一些好習慣與壞習慣...\r\n\r\n喔對了,順便把 hash 過的密碼丟到 Rainbow Table 去翻翻看也是一個好主意。(岔題一下,Rainbow 這個字讓我想到一篇歷史很悠久的網路小說了...)", + "title": "密碼..." + }, + { + "id": "1369", + "body": "在 TechCrunch 看到 PayPalMasterCard 合作,將會推出虛擬信用卡卡號的服務:PayPal To Offer Virtual Credit Card Payment Product。\r\n\r\n這使得 PayPal 延伸到不支援 PayPal 服務的對象,而且同時保有當初使用 PayPal 的目的:不要將信用卡卡號交給其他不認識的商家。\r\n\r\n不過新聞裡面沒有寫手續費之類的細節,得等推出時看看...\r\n", + "title": "PayPal 的虛擬信用卡卡號" + }, + { + "id": "1370", + "body": "上個月的時候 IFPI 的內部信件外洩 (參考 Anti-Piracy Lobby Wants Pirate Bay Secrets from Swedish Police 這篇),信件內容包括了 IFPI 要瑞典的警方交出扣押 The Pirate Bay 機器裡的資料 (沒錯,是他們要求警方交出資料,不是警方要求其他人 XD),以及要怎麼破壞 BitTorrent 的架構。當時一堆人在猜測如何外洩的,有人猜是摸進 mail server 拿到的,有人猜是帳號密碼外洩之類的...\r\n\r\n但,IFPI 信件外洩的「真相」是:有人在信件往返時寄給 ifpi.com XDDD\r\n\r\n我補充一下,IFPI.com 本來是 International Federation of the Phonographic Industry 所擁有,後來大概是懶得繳錢被別人註冊掉,在上個月的時候,擁有人將這個網域名稱還送給了 The Pirate Bay XDDD\r\n\r\n這真是太棒了 XD", + "title": "IFPI 信件外洩的「真相」" + }, + { + "id": "1371", + "body": "在討論 DNS 的穩定性時,都會要求要把網域名稱多設幾個 NS RR,而且要在不同的網路上。不過很多人都認為有兩台機器就好了,如果連外斷掉那麼服務本來就會中斷,沒有影響。\r\n\r\n這是錯誤的觀念,尤其是電子郵件。\r\n\r\n台大計中停電維修六個小時,而負責 ntu.edu.tw 的三台 DNS 主機都連不上。這使得 ntu.edu.tw 以及 *.ntu.edu.tw 的信件的進出都造成嚴重的異常。\r\n\r\n進入的部份,我從交大寄信到 user@ntu.edu.tw 時會直接收到退信 (錯誤是 \"Domain not found\" 這類的訊息),但如果台大的 DNS 主機有請其他單位幫忙做 DNS Slave,那麼這封信會被交大的郵件系統暫時存放,而不會直接退給發信人。\r\n\r\n出來的部份,假設有教職員在家使用 HiNet,以 user@ntu.edu.tw 的來源發信到交大,交大的郵件系統在檢查信件來源時,就會以 \"Domain not found\" 的訊息拒絕掉,這個問題一樣可以透過其他單位的 DNS Slave 解決。\r\n\r\n這次影響的單位最少包括了:*.ntu.edu.tw (三台 DNS 主機都不通) 及 *.tp.edu.tw (三台 DNS 主機都在台大下游而不通)。\r\n\r\n雖然 cschen 一直推這件事情,不過直到這兩年我才看到交大與工研院國網中心合作,雙方互相幫對方做 nctu.edu.tw 與 nchc.org.tw 的 DNS Slave。\r\n\r\nGmail 使用的 ns{1,2,3,4}.google.com 看起來很接近 (216.239.{32,34,36,38}.10),也是四個完全不同網段,這點可以從美國的主機 traceroute 走的路線看出來似乎有幾個是不同國家。\r\n\r\n等台大網路恢復後,寄封信請他們改善這部份...\r\n\r\nUpdate:工研院改成國網... :/\r\n\r\nUpdate:我才寄了十分鐘,台大計中的 madeline 就回信說他們會朝這個方向改進,nice job :)", + "title": "多設幾個不同網路上的 DNS Server" + }, + { + "id": "1372", + "body": "\"\"\r\n\r\n狼與辛香料 III 中文版出版後一直沒時間去買,直到上星期五才去新瑞書局把一些新書拿一拿,然後用這兩天優先看完 XD (其實這兩天也寫了不少 code,不過好像白寫了... 都是害的啦,提什麼鬼主意 XD)\r\n\r\n如同網路上許多人講的,第三集比較偏重於兩人的超恩愛故事,看完以後就瞎了 XD\r\n\r\n由小梅けいと所畫的漫畫版也是傑作,賢狼的神韻好棒啊啊啊~\r\n\r\n接下來就是 2008 年年初的動畫化了,看海報圖以及記者會現場的照片,人物設定違和感蠻重,不過還是得看看到底會改成什麼樣子... :/\r\n\r\n參考其他人寫的文章:狼與辛香料 第三集 (剎那間如履薄冰)。", + "title": "狼與辛香料 III" + }, + { + "id": "1373", + "body": "\"\"\r\n\r\n這陣子有些人在非議 Alexa,結果昨天上班的時候突然想到的... XD\r\n\r\n這兩個網站分別是中央氣象局人事行政局,這樣清楚為什麼 Alexa 會告訴你了嗎 XD", + "title": "要怎麼得知今年有幾個颱風接近台灣?" + }, + { + "id": "1374", + "body": "剛剛想看 Catalyst Framework 的官方網站 (一個 Perl-based 的 MVC Framework),結果 Google 出來連到的第一筆是 GoDaddy 的 parking page:http://www.catalystframework.org/。\r\n\r\n翻了一下,後來找到目前的官方網站:http://catalyst.perl.org/,以及 maining list 上的討論內容:[Catalyst] catalystframework.org exired。又讓我想起 0rz 因為 GoDaddy 的關係最後搬到 0rz.tw 的故事了...\r\n\r\nUpdate:現在 (2007/11/30 早上) 看起來回來了 :-)", + "title": "Catalyst Framework 與 GoDaddy" + }, + { + "id": "1375", + "body": "在 Brad Fitzpatrick 的 Blog 上看到 Blogger 打算要支援 OpenID,而且是 Consumer:Blogger + OpenID。\r\n\r\nBrad Fitzpatrick 就是 OpenID 協定的發明人之一,他另外一個也很有名的作品是 memcached,被廣泛應用在全世界各大網站。\r\n\r\nBlogger 的 comment 如果設定為「需要註冊使用者」,那麼你就必須有 Blogger 帳號 (Google 帳號),但 Blogger in Draft 上發表了打算要推出以 OpenID 認證的功能,也就是:New feature: OpenID commenting。\r\n\r\n補充一點,這個功能 Brad Fitzpatrick 在他的 Blog 上有提到不是他推動的,他純粹只是廣告一下而已...", + "title": "Blogger Draft:支援 OpenID 留言" + }, + { + "id": "1376", + "body": "OpenID 2.0 在社群的參與修訂後,將要進入最後的公告程序了:Finalizing OpenID Authentication 2.0 and OpenID Attribute Exchange。\r\n\r\nOpenID 2.0 在發展時就不斷有人將 Draft 的內容寫成 Library,並隨著 Draft 不斷更新,所以最後正式定案的時候都已經有現成的 Library 可以套用。\r\n", + "title": "OpenID 2.0" + }, + { + "id": "1377", + "body": "Jimmy WalesWikipedia 的聚會上宣佈 WikimediaFSF 已經達成共識,將未來版本的 GFDL 相容於 Creative Commons 的 BY-SA:Wikipedia to be Licensed Under Creative Commons。\r\n\r\nSlashdot 的標題明顯誤導讀者,因為目前 Wikipedia 的文章都是以 GFDL 授權,要改成 CC 必須由所有有貢獻的人同意。\r\n\r\n實際上的情況是 WikimediaFSF 達成協議,在新版的 GFDL 相容於 CC SA-BY,然後藉由 Wikipedia 的授權條款中的這條達成:\r\n
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation
\r\n\r\nUpdate:在查了 Resolution:License update 以後,我發現是更激烈的作法:請 FSF 發佈一個新的 GFDL,讓 Wikipedia 利用新版的 GFDL 直接轉換成 CC SA-BY。", + "title": "Wikipedia 的 GFDL 文章未來將相容於 CC" + }, + { + "id": "1378", + "body": "自 2004 年王小雲女士找到方法有效率的產生 MD5 碰撞後 (也就是兩個不一樣的資料的 MD5 Digest 相同),就不斷有人嘗試更進一步的攻擊。\r\n\r\n之前最主要的攻擊是對某一組 X.509 的 public key 產生另外一組 MD5 Digest 相同的 public key,再對這組 public key 攻擊而產生 private key (因為這組 public key 是 weak key),接下來就可以做各種攻擊。這篇論文在:Colliding X.509 Certificates。\r\n\r\n這次則是更進一步思考要如何放惡意程式碼到 Windows 執行檔,卻仍然可以騙過 MD5 檢查,比較抽象的講法是 \"chosen-prefix collision\",表示新的資料前面是包含惡意程式的程式碼 (所以 prefix 是選定的),然後利用後面的空間接一段垃圾用以「湊」出同樣的 MD5 Digest:MD5 Proven Ineffective for App Signatures。\r\n\r\n這個攻擊非常重要的原因是因為這離一個 Secure Hash Function 的消失又更進一步:pre-image attack,我只給你 MD5 Digest,要找出一組資料符合這組 MD5 Digest。看起來新系統還是趕快換用 SHA-256 吧 orz...", + "title": "MD5 的淪陷:實例" + }, + { + "id": "1379", + "body": "這個禮拜真的是相當幸福啊... 先是 CLANNAD 第九話,再來是電腦線圈 #26 的完結。\r\n\r\n《電腦線圈》是從五月開始播放的動畫作品,總共 26 話,中間遇到日本高中棒球聯賽休息兩個禮拜,以及兩話的總集篇 (不計算在 26 話內,所以算進去總共是 28 話),直到 12/1 在 NHK 教育頻道上播放完畢,並準備在 12/8 重播。\r\n\r\n有些人看第一話之後就虛掉,因為人物設定的畫風太古樸了 (有人用「宮崎駿風格」描述這部作品,還蠻貼切的 XD),不過這部作品作畫的品質一直維持的很好,加上磯光雄在鋪陳及分鏡的功力,以及齊藤恆芳的背景音樂所營造的氣氛,使得看過這部作品的人就被吸引住了。\r\n\r\n另外對於華語世界的人來說,這部作品在 X2 字幕組的加持下也是很重要的一個原因,除了很穩定的在翻譯外,也在不少地方加上適當的註解,使得手邊沒有日文版書籍的人也可以瞭解這部作品的背景設定。\r\n\r\n磯光雄在這部作品裡面扮演了很重要的幾個位置:原案、原作、導演、腳本,同時也參與了相當部份 (六話) 的分鏡,如同翠星石所說的「多才多藝」。整個作品的前半段雖然在鋪陳,但卻完全不會讓人感覺到無聊,到後半段不斷的展開,同時間還不斷的埋下新的伏筆,直到最後一話!傳言腳本與系列構成花了數年的時間,從日文版的維基百科可以看到磯光雄從 2003 年之後就沒有參與作品可以猜測幾乎就是全力專注在這上面。\r\n\r\n齊藤恆芳的音樂也是作品另外一個扣人心弦的因素,尤其劇情過半,進入主線劇情開始不斷展開時的配樂總是會有「啊!這時候就應該要放這個音樂!」的感覺。\r\n\r\n我會找時間來從頭跑一次,也許這個禮拜五去新竹的時候來衝刺?XD\r\n\r\n參考:翠星石所寫的「電脳コイル 最終話」。", + "title": "電腦線圈" + }, + { + "id": "1380", + "body": "Catalyst 是一套 Perl 上的 MVC Framework,由於 CPAN 的資源相當的多,所以 Catalyst 本身只自己實做 Controller 的部份,Model 與 View 的部份可以挑自己喜歡的模組外掛。\r\n\r\n剛剛在 Fayland and Perl Programming 這邊看到 Catalyst Framework 開始進行 2007 年的 Catalyst Advent Calendar 了,為期二十五天,前面三天的主題是 ExtJSYUI、以及 Template。\r\n\r\n更早前的 Catalyst Advent Calendar 可以參考 20052006 兩份,2005 那份舊了點,但 2006 那份就非常棒 :-)", + "title": "Catalyst Framework" + }, + { + "id": "1381", + "body": "YUI 2.4.0 出版了,非常常用到的 Selector Utility 終於在 2.4.0 補上了:YUI 2.4.0 Released — Selector, Charts, Profiler, Script/CSS Get, and JSON Support。\r\n\r\n另外 JSON Utility 也在 2.4.0 補上了,不用再自己拉回來 eval() 了。除了基礎建設的部份外,這個版本還附上改善了 YUI 版的 Rich Text Editor!不過用起來好頓啊...", + "title": "YUI 2.4.0" + }, + { + "id": "1382", + "body": "\"\"", + "title": "我們家 CTO 就是負責做這些事情的..." + }, + { + "id": "1383", + "body": "在網路暴民那邊看到 PuTTY Tray,很久前就有看到這套軟體,不過忘記為什麼不使用了...\r\n\r\n剛剛看了一下發現更新速度還不錯,最新版是 11/25 的版本。PuTTY Tray 比起原始的 PuTTY 多了一些功能,我會用到的功能包括了 Configurable window transparency (開 224,應該是對應到 12.5% transparency) 與 URL hyperlinking,晚點把 Notebook 與另外一台桌機的 PuTTY 換掉。", + "title": "PuTTY Tray" + }, + { + "id": "1384", + "body": "辦公室裡面的 NAT Server 是一台 FreeBSD,用 ipnat 包這塊,不過一直沒有設定 UPnP,昨天想到的時候想起 Leeym 應該有寫過 UPnP 的文章,可是卻找不到...\r\n\r\n結果找了其他軟體發現 miniupnpd 也很簡單,在 FreeBSD Ports 裡也已經存在了,於是就裝起來測試,發現沒什麼問題... (賀)\r\n\r\n基本上只要啟動 PF,設定好 minipnpd.conf 後,在 /etc/pf.conf 加上:\r\n
rdr-anchor \"miniupnpd\"\r\nanchor \"miniupnpd\"
\r\n這樣就可以了。", + "title": "FreeBSD 上的 UPnP 設定" + }, + { + "id": "1385", + "body": "在 Google Analytics Tracker Code Change and More 這篇看到的,官方的新聞稿在 Announcing new graphing tools, ga.js tracking, and six new languages 這篇。\r\n\r\n看起來主要是對 HTTPS 的處理,然後拆成 _initData() 與 _trackPageview()。據 Google 說,舊的程式碼最少還可以跑個一年,所以就找時間慢慢換過去吧...", + "title": "Google Analytics 程式碼變更" + }, + { + "id": "1386", + "body": "這篇其實是在講 C10K 問題,不過我懶得寫長長一篇解釋了...\r\n\r\nApache 2.2 的 MPM Event 在測試後發現相當不錯,大力推薦 :D 不像 prefork 模式,一個連線就要一個 process。\r\n\r\n再來因為 .htaccess 的彈性,配合 mod_fastcgiPHP,其實在量大的時候可以取代掉 lighttpd。(量小的時候 lighttpd 還是很棒)", + "title": "Apache 2.2 的 MPM Event" + }, + { + "id": "1387", + "body": "睡眼惺忪的打開 Bloglines 就看到 Amazon 又在亂丟炸彈了...\r\n\r\nAmazon SimpleDBAmazonAmazon's Dynamo 為基礎的另外一個服務,把 Amazon 最缺的一塊,Database,補起來了。\r\n\r\n不同於 RDBMS (像是 SQL),SimpleDB 做的事情很簡單,除了 key-value 的儲存以外,另外還可以存放 attribute,並對 attribute 設定條件搜尋,在官方說明文件 Query API 裡就有列出搜尋的條件式,可以看到只支援簡單的 >、<、=,以及 NOT 條件,另外可以對多個結果取交集。其實有這個系統就已經可以架一個 Blog 了。\r\n\r\n不過還是有容量上的限制 (不像 Amazon S3 那樣),這可能是因為還在 Beta 的關係。在 PutAttributes 的頁面裡提到了一個 domain 只能有 250 million attribute,以及 10GB 的資料大小限制。這些必須想辦法在 Application 層自己處理。", + "title": "Amazon SimpleDB" + }, + { + "id": "1390", + "body": "因為被告不需自證其罪 (美國憲法第五修正案),所以不需要交出 PGP key 的密碼:Encryption Passphrase Protected by the 5th Amendment。\r\n\r\n以後會演變成,在逮捕前想辦法先安裝 keylogger,或是在房間裡放監視器材,蒐集到密碼後才會拘提並扣押證物?那個 slzzp 小心點啊...\r\n\r\n補充,如果有需要的人可以裝 TrueCrypt,免費而且是 Open Source。", + "title": "在美國,金鑰密碼受到第五修正案所保護" + }, + { + "id": "1391", + "body": "IE8 內部測試版本已經通過 Acid2,一個很有名的 CSS 的測試了:Internet Explorer 8 and Acid2: A Milestone,接下來是時間的問題了,離 IE6 與 IE7 消失還有很長一段時間,不過畢竟總是要有個頭。\r\n\r\nFirefox 3 會不會 delay 到成為最後一個支援 Acid2 的主流瀏覽器?(真的發生的話也不意外,只是會有很多人笑得很開心)", + "title": "IE8 通過 Acid2" + }, + { + "id": "1392", + "body": "在 FreeBSD 上一堆 ports maintainer 要傷腦筋處理 Perl 5.8 與 Perl 5.10 之間的相容性問題了...\r\n\r\nPerl 5.10.0 除了修正 bug 外,在效率上也做了許多改進,在 perl5100delta 可以查到完整的內容,幾個我比較有興趣的:\r\n\r\n反正用就是了 XD\r\n\r\n對了,大力推薦 Strawberry Perl,試圖在 Win32 平台上建立一個簡單而且強大的 Perl 環境,目前還是 Perl 5.8.8,等他正式推出 Perl 5.10.0 的版本...\r\n\r\n如果要測試的人可以參考 Strawberry Perl Beta 2 Release 這篇抓 Beta 2 版測試。\r\n\r\nUpdate:除了上面所說的,另外還有 Some perl 5.10 comparisons 提到的 say (與 print + \\n) 以及 ~~ (與 grep + eq) 的效能比較。\r\n\r\nUpdateStrawberry Perl 5.10.0 正式出版了!", + "title": "Perl 5.10.0" + }, + { + "id": "1394", + "body": "前陣子跟許多人討論時發現,不少人認為 GPLv2GPLv3 是相容的,其實不然:Is GPLv3 compatible with GPLv2?。\r\n\r\n某些使用 GPLv2 的軟體能夠與新的 GPLv3 相容的原因,是因為當初開發時以 \"version 2 or later\" 的方式宣告,這時候軟體本身可以採用 GPLv3 與其他的 GPLv3 程式碼相容。\r\n\r\n對於新開發的軟體來說,只要小心檢查 Software license 就可以了。但對於舊的軟體,以及 package system 來說,是惡夢一場。\r\n\r\n有兩套舊的軟體,一套是 GPLv2 only,另外一套是 GPLv2 or later,兩套都是有上百個人參與過的計畫,而且都用到一個 GPLv2 or later 的 library。現在這個 library 宣佈下一個版本開始變成 GPLv3,但因為沒有 API 改變,所以不打算增加 shared library 的 magic number。這時候 GPLv2 only 的軟體因為不相容而需要改寫 (或是把舊版的 library 放入 src 裡維護),package system 也因此不能產生 binary。\r\n\r\n也因此很多人對 RMS 自稱的「自由」相當不以為然:他利用 \"version 2 or later\" 大力推廣而產生壟斷後,再利用優勢將他個人自認為的自由放入 GPLv3。相同的,Wikipedia 所使用的 \"GFDL 1.2 or later\" 轉成 CC 的步驟也是相同的道理。\r\n\r\n權力使人腐化,不管是在商業公司還是在 Open Source Community 都一樣讓人噁心。", + "title": "GPLv2 與 GPLv3 的相容性" + }, + { + "id": "1395", + "body": "有訂閱 US-CERT 的人應該都有收到 Technical Cyber Security Alert TA07-355A (Adobe Updates for Multiple Vulnerabilities),用 Firefox 的人連上 about:plugins 可以看到 Flash Player Plugins 的版本,如果太舊記得去 Adobe 的網站上更新。", + "title": "Adobe Flash Player 安全性漏洞" + }, + { + "id": "1396", + "body": "在 Amazon Web Services Blog 上看到 Firefox Extension for Amazon EC2 這個好用的工具,在 Firefox 上裝起來測試後發現相當好用,如果要拿來推廣相當棒,不用自己再用 Pythonboto 操作半天...\r\n\r\nPS:剛剛注意到 boto 的作者參與了 Amazon SimpleDB 的 beta testing,在正式公開那天把 SimpleDB 的 library 加進去了,可以寫一些小玩意測試看看...", + "title": "Firefox Extension for Amazon EC2" + }, + { + "id": "1397", + "body": "在 twitter 上看到 WordPress 的更新訊息:WP 2.3.2: http://tinyurl.com/yofjx2,看了一下發現是安全性更新,讓一般沒有權限的使用者取得尚未公開的內容。\r\n\r\nticket 在 query.php mistakenly uses is_admin() to check for admin privileges 這篇,而有人直接寫成實戰:How to know today what ShoeMoney is going to post tomorrow。\r\n\r\n順便把系統升級到 trunk 最新版,發現後台版面的變化相當大,不過寬度開到 1920 時的 bug 也不少 XD\r\n\r\n對了,推薦有用 WordPress 的人去訂閱 WordPress Twitter 分部,沒什麼廢話,每句都是重點 XD", + "title": "WordPress 2.3.2 (安全性更新)" + }, + { + "id": "1398", + "body": "測試時遇到的地雷,寫下來讓以後的自己搜尋到... (愚蠢的 bug 總是會一而再再而三的犯下 XD)\r\n\r\n因為 lighttpd 已經用的蠻久了,所以都會有一份制式的 lighttpd.conf (精簡到「會動」而已) 拿來用,今天拿這個版本丟檔案的時候想用 Squid 當 reverse proxy 放在前面,結果發現永遠都是 TCP_MISS,看 HTTP Header 後發現 lighttpd 沒送 Last-Modified 欄位,應該是這樣造成 Squid 不會存下來。\r\n\r\nlighttpd 不送 Last-Modified 的原因後來查出是因為沒有指定 MIME Type。這是一個 feature,而不是 bug (所以不會修正),所以我除了把線上得版本加上以外,在公版的 lighttpd.conf 裡也把 mimetype.assign 加上,這樣就正常了。\r\n\r\n繼續觀察看看到底可以省多少 :p", + "title": "用 lighttpd 配 Squid 時的地雷" + }, + { + "id": "1399", + "body": "沒有登入 Wikipedia 的情況下是沒辦法移除 Wikipedia 開頭的 Donation 廣告,即使登入後也只能縮起來,這讓人很煩。\r\n\r\n套句 Userscripts.org 的標語:\r\n
Because it's your web.
\r\n用 Firefox + Greasemonkey 的使用者可以安裝 Wikipedia Donation Ad Remover 把廣告移除。", + "title": "移除 Wikipedia 開頭的捐獻廣告" + }, + { + "id": "1400", + "body": "寫這篇是要補 Enable core dump in Linux and FreeBSD 這篇沒提到的部份。\r\n\r\n對於 setuid 或是 setgid 程式,FreeBSD 基於安全性原因是不會產生 core 的。如果有需要產生 core 需要修改 kern.sugid_coredump 的值:\r\n
# sysctl kern.sugid_coredump=1
\r\n這個在 Varnish 的 mailing list 上遇過,無意間看到這個參數才發現的:Varnish crash (SIGABRT) about every 10 mins。", + "title": "在 FreeBSD 上產生 coredump 另外要注意的事項" + }, + { + "id": "1401", + "body": "在 Perl 裡我們常用 $_ 當作變數 (很多情況下常常被拿來用,像是 foreach (@array) 內的變數名稱),所以就有人想到在 PHP 裡「模擬」這樣的行為:Perl like temporary variables in PHP。\r\n\r\n文章內提到,在 PHP 內 ${0} 是合法的變數,變數名稱就是 0。以此當作暫存變數,寫起來會比 $foo$bar,或是 $tmp 舒服很多?", + "title": "PHP 裡的暫存變數" + }, + { + "id": "1402", + "body": "除了在「用 Subversion 的 Merge 來 Undo」這篇提到的方法外,另外在 Undo commit in subversion 這篇的 comments 看到了一些更精簡的方法:用 svn merge -c -rev . 做到與 svn merge -r rev-1:rev 一樣的效果。\r\n\r\n甚至,如果剛好是最近一個 commit 要 undo,可以用 svn merge -r COMMITED:PREV .。", + "title": "Subversion Undo" + }, + { + "id": "1403", + "body": "最近要衝一個註冊頁面,某位不能吃牛肉的老闆叫我就直接衝 RoR 了,不過公司已經有人研究 RoR,而且我跟 Ruby 不熟的情況下,我決定去用以 Python 開發的 django。\r\n\r\ndjango 的文件也不少,不過我第一份當然是先看 ericsk 最近寫的 用 Python + django 10分鐘內作出一個 blog,但是我照著這份文件做發現一直有問題,後來發現到:FreeBSD portswww/py-django 是 0.96.1,這個版本叫做 maxlength,而在之後的版本才是 max_length。\r\n\r\n這個問題在官方的 ticket system 裡有提到,如果有興趣看的人可以直接看裡面的討論:maxlength should be max_length。\r\n\r\nPS:剛剛又中了一個地雷,已經不想 Google 找答案了,決定先裝 www/py-django-devel 試看看。", + "title": "FreeBSD 上的 django" + }, + { + "id": "1404", + "body": "RFC 1323,也就是 TCP window scaling,通常事由 kernel 底層處理的,這次 Amazon 宣佈支援 RFC 1323 應該是系統升級的關係:Increasing Amazon S3 Data Transfer Performance...\r\n\r\n翻了一些文件,看起來是 Linux 2.4 的舊版 (而且是很舊的版本?) 換到 2.6 時順便帶來的效益?", + "title": "Amazon S3 將支援 RFC 1323" + }, + { + "id": "1405", + "body": "有些人發現 Flickr 的個人頁面出現了 OpenID 的蹤跡:Flickr to Authenticate OpenID - Is This The Yahoo! CES Announcement?。\r\n\r\n不過暫時想不到什麼好的東西是目前 Flickr API 做不到的。倒是 Flickr 把目前的 API 轉換到 OAuth 會比較有趣?", + "title": "Flickr 將支援 OpenID (Identity Provider)" + }, + { + "id": "1406", + "body": "Firefox 3 支援了 W3C 所制定的 Cross-Site XMLHttpRequest:Cross-Site XMLHttpRequest。\r\n\r\n從 John Resig 的說明文件可以看到 client side 不需要修改任何程式碼,而 server side 只需要多送一組 Access-Control 的 header 就可以了。想了一下,似乎沒有額外的安全性問題。\r\n\r\n不過要等到能廣泛使用至少要再過個兩年... (IE8?)", + "title": "Cross-Site XMLHttpRequest" + }, + { + "id": "1407", + "body": "在李怡志寫完「拿Wikipedia條目當企業網站的一個範例」之後,我就在猜到底多久會被快速刪除 XD\r\n\r\n查了一下刪除紀錄 (透過「編輯本頁」看),是 Shizhao 刪的。\r\n\r\n其實反過來這樣想,因為你根本不知道誰去買 Google AdWords 廣告,所以你可以故意幫一些名氣不夠大的人物、團體買 Google AdWords 廣告,指到 Wikipedia 上,然後讓人爆破後被快速刪除。\r\n\r\n而相同的,你也可以自己買 Google AdWords 指到 Wikipedia 的頁面上,但是在 Wikipedia 上辯稱跟你沒有關係。\r\n\r\nUpdate:應該是 AdWords。", + "title": "快速刪除:中壢真理堂" + }, + { + "id": "1408", + "body": "大約半年前寫的「使用浮水印取代 DRM」看到音樂產業決定要使用了 (Digital Watermarks to Replace DRM),但是有幾個問題要考慮:\r\n", + "title": "使用浮水印取代 DRM" + }, + { + "id": "1409", + "body": "十天沒寫文章的原因不是沒空寫,是因為我寫了之後一直發不出來 :(\r\n\r\n我之前用的是 WordPress trunk 版 (2.4),用 xdebug 追蹤後,確認發表時會卡在 wpdb 的某個函數裡面,一組 infinite loop,但又不知道是怎麼掉進去的... 曾經換過機器,在不同的 OS 以及 MySQL 版本上跑,發現都還是一樣,最後找不到問題就 Downgrade 到 2.3.2,結果就沒問題了 Orz...\r\n\r\n先暫時這樣吧... (沒力)", + "title": "奇怪的 WordPress 問題..." + }, + { + "id": "1410", + "body": "累積太久沒寫,有些議題剛好可以合併起來看...\r\n\r\n第一個想到的是 MySQL ABSun 買下,以及在 Slashdot 上看到有人認為 GoogleMapReduce 成功是 Computer Science 界的一大退步 (MapReduce — a Major Step Backwards?)。\r\n\r\n把時間點再往前,拉到 Oracle 買下 Innobase Oy 及 Sleepycat Software (Berkeley DB) 兩家公司時一般的反應 (分別是 2005 年十月、2006 二月),以及買下後的進展...\r\n\r\nOracle 買下 Sleepycat Software 後推出的 Berkeley DB 4.5 多了 Replication 的功能,並且在 Berkeley DB 4.6 對穩定性及大幅度修正。InnoDB 則是不斷的改進穩定度及效率,仍然是目前 MySQL 裡最常被使用的 Transactional Engine。以現在看起來,其實 Oracle 並沒有打算要以這個手段打擊 MySQL。\r\n\r\n話題回到 Slashdot 那篇 MapReduce,其實在 comment 有人講得很清楚了:簡單的東西並沒有什麼不好,重點在於能不能解決問題。如果能用簡單的方法解決問題,就不要拿複雜的方法解決,25 年前就發展出的技術並沒有什麼不好。\r\n\r\n另外我提一下,最近寫過後才發現 Berkeley DB 其實相當好用 (支援 Transactional Operation 及 Replication),沒人用的原因是 PHP/Perl/Python/Ruby 上的 Library 都沒有把實做所有的功能,目前只有標準的 dbm operation 而已。換句話說,如果你要用這些好用的 Operation 得自己刻 C/C++/Java。由於開發上的問題,很多人寧可用 MySQL 放...\r\n\r\n由於 Berkeley DB 看起來很棒 (傳言 BloglinesGoogle 的使用者資料都是用 Berkeley DB 為底層架起來的),初期的目標是希望有個 Reliable DBM-style Database,類似 Amazon SimpleDB 的軟體放使用者資料,透過 TCP connection 與 PHP 端溝通...", + "title": "最近的幾件事情..." + }, + { + "id": "1411", + "body": "微軟以「安全」理由打算在 2/12 時強迫使用者升級至 IE7,如果不想要升級的使用者必須手動設定。\r\n\r\n對於 IE6 only 的網站來說,這當然不是什麼好消息。微軟的這項行為等於是強迫他們要處理 IE7 相容性問題。對於使用者來說,在所有的網站都必須讓 IE6 可以正常運作下,用 IE6 的問題反而會比較小。\r\n\r\n但對於網頁開發者來說,能夠僅快把 IE6 的市佔率壓低到可以忽略的程度,功德無量...", + "title": "微軟將於二月將瀏覽器強制升級至 IE7" + }, + { + "id": "1412", + "body": "這陣子跑機房發現 IBM R60 真的太重,於是決定把 X31 修好帶著跑,修起來其實蠻快的,星期五晚上送修,星期一就打電話來報價,然後回家把 OS 裝好後開始用,現在看起來狀況還不錯...\r\n\r\n我有習慣把 Driver 收到 del.icio.us 上,所以重灌的時候只要把網路卡的 Driver 先裝起來跑一次 Windows Update 後,把還沒裝進去的部份裝好就可以了:gslin's bookmarks tagged with \"x31\" on del.icio.us。\r\n\r\n至於資料的部份,我大多數都是放在網路上,大多數都是 PuTTY 連出去做事,所以也不太需要再處理 :)", + "title": "把 X31 修好..." + }, + { + "id": "1413", + "body": "FreeBSD 7.0 看起來會在二月放出,似乎會有很多人想要上 ZFS 測試,不過我們自己拿 FreeBSD ZFS 在 RAID 上的穩定度其實還不太夠,另外效率上也不太讓人滿意...\r\n\r\n有台 12 顆硬碟的機器,上面是跑 amd64 1GB 記憶體 (目前應該是 4GB 了,下面測試時是 1GB),ZFS 的架構是前六顆硬碟跑一組 RAIDZ1,後六顆也跑一組。常常跑到 out of kernel memory,加到 4GB 後還是一樣,要改動開機參數,換句話說這部份還沒有寫的很傻瓜... 效率上,在刻意關掉 atime 以 \"FTP\" 測試 Random Read 的速度卡在 I/O,非常慘的數字:10MBytes/sec。\r\n\r\n另外最近剛好看到 Joyent's weblog 上提到他們在 ZFS 踩到大地雷:Bingodisk and Strongspace: What Happened?。(不過他們跑的好像是 OpenSolaris)\r\n\r\n我個人覺得,目前拿 ZFS 跑 RAID 的 Code Quality 還要再加強,不過對於一般個人用,拿來打 snapshot 應該是沒什麼問題,我們在 Pixnet 是拿 ZFS 放 log,因為可以開 filesystem gzip,這樣就不用每天跑 cron 執行壓縮程式...", + "title": "FreeBSD ZFS 的穩定度" + }, + { + "id": "1414", + "body": "jQuery 的大魔頭 John Resig 在他的 blog 上討論了各瀏覽器對 Sub-Pixel 的處理方式:Sub-Pixel Problems in CSS。\r\n\r\n在他文章裡,他產生了一個 50px 的 div,裡面包著四個 div,設定寬度為 \"25%\",然後丟到 Opera 9、Safari 3、IE 6、IE 7、Firefox 3,以及 Firefox 2 裡測試。另外用 Javascript 去抓 DOM 裡面的寬度。這個問題也可以解釋為什麼某些站台的 Navigation Bar 在不同的瀏覽器下會有奇怪的「殘影」。", + "title": "在 CSS 裡對於 Sub-Pixel 的計算方式" + }, + { + "id": "1415", + "body": "Update:原作者拿到硬碟後測試了一天,發現寫入速度不盡理想:24 Hours with an SSD and MySQL。\r\n\r\nSSD 硬碟應該要列入耗材...\r\n\r\n國外有一些先驅已經在測試把 MySQL 的 data 丟上去跑:Thoughts on SSD and MySQL 5.1,這篇裡建議把 sync_binloginnodb_flush_log_at_trx_commit 保留預設打開的狀態 (用 InnoDB 時,如果為了效率會把這兩個都關掉,尤其是後者,有寫入動作時的速度 (INSERT/UPDATE/DELETE) 會差十倍到三十倍),不過我覺得為了減少 I/O 還是要開。另外在 OS Filesystem 層的參數也要注意。\r\n\r\n寫這篇才想到 FreeBSD 7.0 有 iSCSI 可以測試,來測看看效率...", + "title": "用 SSD 當作 MySQL 的儲存空間" + }, + { + "id": "1416", + "body": "如果你有在用官方的 Nightly build,應該有發現這幾天在換 icon。如果你沒有在用,在 Navigation Toolbar on Windows 這篇可以看到新樣式的圖案。\r\n\r\n一出來後在 mozillaZine 上的 Firefox Builds 論壇就開始狂批有夠醜 (我第一眼看到也覺得很 Orz):Discussions on the Default Theme for Firefox 3....。\r\n\r\n\"\"\r\n\r\n另外今天更新上去後的 nightly build 會讓 Web Developer 失效,有在用的人自己注意一下,重新安裝 1/29 的版本,或是放著等之後修正... (參考 Bug 411817 – Web Developer addon not available/working for Firefox 3)\r\n\r\n另外 CSS layout 的部份應該也有修正某些東西,因為我用 Bloglines 的時候發現左半部出現 scrollbar,這是 1/29 版本沒有的。\r\n\r\nUpdate:2008020504 版讓 Web Developer 回來了,應該是決定 backward-compatible 的關係...", + "title": "Firefox 3 預定的新樣式 Icon,以及..." + }, + { + "id": "1418", + "body": "今天最大的新聞應該還是 Microsoft 向證交所提出併購 Yahoo! 要求的新聞,不過這種事情也只能看他變化,然後依據變化決定在台灣要怎麼因應。\r\n\r\n另外一件事情是 Twitter 離開 Joyeur,搬到 NTT America,也就是說,Twitter 將來會自己建立整個網站的底層。可以預期的是,他們會遭遇到一堆問題,然後想辦法解決,然後再遭遇到其他問題,再想辦法解決,然後發現需要在 Application 層將 MySQL 拆開...\r\n\r\n這個轉換的動作應該還會有一個月,或是更久的陣痛期吧...\r\n\r\nRef:Twitter Chooses NTT America Enterprise Hosting Services。", + "title": "Twitter 離開 Joyeur" + }, + { + "id": "1419", + "body": "rTorrent 0.8.0 與 LibTorrent 0.12.0 已經釋出:LibTorrent 0.12.0 and rTorrent 0.8.0 released。\r\n\r\nrTorrent 是我在 FreeBSD 下最喜歡用的 BitTorrent 下載軟體,CPU 使用量率比起 Windows 上的情況好不少... (曾經跑過 400Mbps 的情況,當時 CPU 與 I/O 都還沒滿載,看起來是 peer 的下載速度被灌滿了)\r\n\r\n這個版本最大的改變在於官方支援 DHT,以及將 Peer Exchange (PEX) 改為預設啟用,前者終於可以使得 rTorrent 在完全連不上 Tracker 時也可以動了,後者則是代表 PEX 的穩定性足以變成預設值了。\r\n\r\n晚點測試看看,沒問題就丟 pr 更新 net-p2p/rtorrent-devel。", + "title": "rTorrent 0.8.0 (以及 LibTorrent 0.12.0)" + }, + { + "id": "1420", + "body": "Mastercard PayPassVisa payWave 是這兩家提供的非接觸式信用卡交易,趁著國泰世華銀行換卡的時候拿到的,測了一下發現各有優缺點。\r\n\r\n先拿到的是 Visa payWave,在 OK 便利店 (來來超商) 可以使用,用過三四次,使用的感覺相當差,我自己感應從來沒成功過,都是店員拿走,看著螢幕操作。感應時間超過三秒鐘也是一個很討厭的地方,看起來是回到發卡銀行進行交易認證。另外一個地方是怡客咖啡,用過一次,是自己感應成功的,不過感應時間還是很久。\r\n\r\n再來是 Mastercard payPass,我在頂好超市用過三四次,都是自己感應成功。交易的速度快是一個重點,不過在頂好使用 payPass 不論金額都要額外簽名。另外是萊爾富,依照這篇的說明,接受玉山與國泰世華的 payPass,交易的速度上也沒什麼問題。\r\n\r\n不過 Mastercard payPass 在頂好消費的時候有回贈 $20 (在當筆消費直接抵掉),我問了店員,結果店員也不知道,回到家裡在網路上找半天也沒找到,讓人很 Orz 啊...", + "title": "Mastercard PayPass 與 Visa payWave" + }, + { + "id": "1421", + "body": "純粹只是整理的時候想到的,當初 COIL #26 出現這個畫面的時候有很多人都有想惡搞的感覺... XD\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "無題" + }, + { + "id": "1422", + "body": "測試的結論是,FreeBSD 現在缺乏穩定而且高效率的 Filesystem 讓 MySQL MyISAM 使用。\r\n\r\n先解釋一下現在的環境,有兩台 Tyan Server,上面都是 Dual Quad Core 與 12GB RAM (6*2GB),接兩顆 73GB SCSI 硬碟,兩台的差異在於 CPU,新進的這台是 E5410 (2333Mhz,2*6144KB L2),舊的是 E5320 (1866Mhz,2*4096KB L2)。\r\n\r\n舊的是目前 PIXNET production 的 MySQL database,跑 Debian/amd64,kernel 是 2.6.22,檔案系統是 XFS。另外一台則是前陣子另外進的,裝了 FreeBSD/amd64 7.0-BETA2,然後透過 make kernel & make world 升級到 7.0-PRERELEASE,跑 SCHED_ULE,檔案系統是 UFS2。依照慣例,noatime 與 nodiratime 之類的參數都會設上去,兩台都是跑 MySQL 5.1.22-rc,都是 MySQL slave。\r\n\r\n要複製 slave 很簡單,把 production 停機 (利用使用者比較少的時候,其他的 slave 會負責這台本來的事情),整個目錄複製一份到新的 FreeBSD 上,改 server_id 後跑起來後 MySQL 會跟 master 更新。\r\n\r\n然後用 databases/mytop 看 replication delay 的情況 (原版的 mytop 沒有這個訊息,這是 FreeBSD ports patch 的功能),發現即使是放著跑 replication sync,某些時候 UPDATE 的速度反而會跟不上 master,跟不上時的 I/O 是滿載的 (透過 gstat 看的)\r\n\r\n目前測過最好的情況是這樣跑:gstripe -s 16384 將 da{0,1} 串起來,用 async + noatime。其他的情況包括:\r\n\r\n以效率來看,短期內還是會跑 Debian/amd64 養 MySQL...\r\n\r\n另外補充一點,本來是在開啟 gjournal 的情況下用 rsync 把資料複製到本機,結果發生 kernel panic,後來是先複製完再使用 gjournal,這個部份還要到其他機器看看到底是怎麼一回事...", + "title": "FreeBSD 上的 MySQL 效率" + }, + { + "id": "1423", + "body": "在 Introducing all-you-can-eat web hosting 這篇裡提到新的 Web hosting service 將是 $11.95/month (最低三個月的合約),不限空間及頻寬。\r\n\r\n不過看了 Web Hosting Features 後發現,這個平台似乎沒有人在更新,PHPMySQL 都是用 out-of-date 的版本,PHP 4.3 (!) + MySQL 4.1 (!),看了支援的 PHP module 列表也發現一堆問題,主要的幾個包括了 GMP 沒編進去 (OpenID 常用,不過有些 OpenID library 會偵測有沒有 bcmath 可以替代),FTP、IMAP/POP3/NNTP 也沒有支援,LDAP、MySQLi、SQLite 這些也沒進去,一堆 XML 的 library 也是...\r\n\r\n跑的是 FreeBSD,我猜是 RELENG_4 系列的 Y!BSD,不過這點目前就不能夠確認了。\r\n\r\n這個 Project 看起來只是丟出來做業績而已,對於不會自己改程式,或是不想要自己改程式的人,還是不要自己找麻煩,$11.95/month 的價錢在其他地方租應該還是可以租到用不完的空間及頻寬。", + "title": "Yahoo! 推出 Unlimited Web Hosting" + }, + { + "id": "1424", + "body": "在 rTorrent 0.8.0 (以及 LibTorrent 0.12.0) 這篇提到了 rTorrentDHT 做進去了,實際跑了以後發現有一些要注意的。\r\n\r\n除了 Manual 外,主要參考官方網站的這份文件:Using DHT。\r\n\r\n第一個是 rTorrent 0.8.0 預設是把 DHT 關閉的,要使用 DHT 另外有個先決條件是 session directory 開啟以儲存 DHT cache。所以在 .rtorrent.rc 裡要設定 dht = on,以及 session = /foo/bar/session。\r\n\r\n第二個是 rTorrent 預設的 DHT UDP port 是 6881,所以請把他改掉。設法是改成 dht_port = 12345。(挑一個自己喜歡的數字吧?)\r\n\r\n第三個是 rTorrent 預設是沒有 DHT node 的,要「養」起始節點的方式有三個方法,第一種是抓有 DHT node 的 torrent,不過就我知道的情況,這種 torrent 並不流行;第二種是抓一個 public torrent,讓他透過這些節點更新,這也是比較推薦的方式;第三種是自己輸入 IP 及 port。\r\n\r\n第二種方式中的 public torrent 檔如果一時間想不到,可以抓 Debian 光碟的 torrent 檔:Downloading Debian CD images with BitTorrent。\r\n\r\nFreeBSD 上的 rtorrent-devel 已經更新,想要測試的人可以踴躍參與...", + "title": "rTorrent 0.8.0 測試" + }, + { + "id": "1425", + "body": "在 ZFS 上順便測了一下 MySQL 6.0 (以 6.0.3 版測試) 的 Falcon Engine,紀錄下一些東西:\r\n\r\nReplication 與 Transaction 暫時還沒測,也許應該先測 PBXT Engine...", + "title": "MySQL Falcon 的一些事情" + }, + { + "id": "1426", + "body": "就算再忙,也要幹勦一下...\r\n\r\n這三天的簽呈真是靠盃多,而且這東西寫起來真是浪費時間浪費體力浪費生命 (還好是採購簽呈,至少寫了還有意義),我一定要想辦法教 slzzprepeat 寫簽呈...\r\n\r\n這樣就廢了三天,下班前沒力了...", + "title": "寫不完的簽呈" + }, + { + "id": "1427", + "body": "Amazon S3 服務中斷兩個小時:Crash: Amazon's S3 utility goes down,在服務中斷的兩個小時內有大量的 500 回應。\r\n\r\n有很多服務受到影響,國內比較有感覺的應該是 Twitter 的 Profile 圖片 (他們沒有用 Proxy Server 快取一層,而直接從 Amazon S3 吐圖還蠻讓人意外的),另外 WordPress.com 應該也受到影響 (不過他們有用 Proxy Server,熱門檔案應該沒有受到影響)。\r\n\r\n這兩天應該會看到 Amazon 的公告。\r\n\r\nUpdate:比較詳細的原因出來了,這篇被認為是官方的說明,解釋為某種 DDoS 攻擊造成認證系統超載:Re: Massive (500) Internal Server Error.outage started 35 minutes ago。", + "title": "Amazon S3 服務中斷兩個小時" + }, + { + "id": "1428", + "body": "Tim O'Reilly 在他的 Blog 上提到,自 1950 年開始美國最高法院的判決電子資料上網,讓人公開使用:Court Decisions Online。\r\n\r\n台灣也已經做一陣子了,司法院的「司法院法學資料全文檢索資料開放範圍」可以看到有哪些資料已經可以在網站上找,比較常用的兩個:判決書查詢簡易案件查詢。當然,不要忘記全國法規資料庫。", + "title": "美國的法院判決上網公開查詢" + }, + { + "id": "1429", + "body": "在 TorrentFreak 看到的,BitTorrent 的研發團隊決定要把某個洞補起來:BitTorrent Developers Introduce Comcast Busting Encryption。\r\n\r\n一開始 BitTorrent 是以 Port 號碼的方式避開管制,但很多人都學會跳號碼後久沒用了 (甚至有些軟體支援啟動時隨機選號碼),接下來就進入 Content Filtering 的階段,一開始是透過 BitTorrent 連線一開始的 handshake pattern 管制,後來 Obfuscation 一出來後就失效了,最近是透過 client 與 tracker 的 HTTP 資訊過濾,而這個洞一直到最近,才被 BitTorrent 團隊提出改善方法:Tracker Peer Obfuscation。\r\n\r\n這個新的方法是讓軟體與 tracker 連線時所傳輸的 IP/port 資訊也加密,避免過濾的設備利用這些資訊。其中會以 infohash 當 shared secret,並加上一些處理後產生 RC4 key 加密。\r\n\r\n剩下的方法剩正向表列 Content Filtering 的方式,然後看情況走向 SSL-compatible...", + "title": "BitTorrent 補 Obfuscation 的不足" + }, + { + "id": "1430", + "body": "又多了一套字型可以用了:文泉驿开源矢量中文字体,包括了 GB2312、Big5,以及日韓文,以 GPL 發行。(請注意,關於 GPL Fonts 的問題請參考 How does the GPL apply to fonts?)\r\n\r\n不過有些字在放大後可以看出來字體基線沒有對齊 (像是「驛正黑」這三個字),這點就比較沒辦法了。下面是文泉驛正黑的字型配合 GDI++ 的情況:\r\n\r\n\"\"", + "title": "新的 GPL 字型:文泉驛正黑" + }, + { + "id": "1431", + "body": "memcachedb 是以 Berkeley DB 為 backend 的 memcached-compatible server。\r\n\r\nmemcached 一開始是 LiveJournal 以大量的 memory 作為 cache 加速用。除了 Perl 本身外,後來在各平台上都有對應的 library 可以用,而且也被證實他的效果很棒,Facebook 甚至弄了兩百台 16GB 的機器來跑 memcached。\r\n\r\n最初的版本有一些架構上的問題,像是最原始的 memcached 是先計算 key 的 CRC32,再算餘數而決定是哪一台機器。這使得新增或移除機器時,會造成整個 cache 大洗牌,後來引入 Consistent Hashing 後就解決了,而且 Consistent Hashing 的觀念並不難懂,很多 memcached client library 都有實做。\r\n\r\n另外是 cache server 重開後會因為要重新計算,會有一段時間網站變慢,Wikipedia 裡有人試著改了一個以 Berkeley DB 為底層的版本,後來不知道什麼原因又改回 memcached 了。\r\n\r\n現在這個 memcachedb 是以 Berkeley DB 4.6 為基礎,利用 BDB 提供的 Replication 提供高可靠度,並想辦法維持相同的效能。另外,因為使用 Berkeley DB,所以 disk 也被當作 storage,也希望可以利用更大的空間提高 cache hitrate。\r\n\r\n不過有些地雷還是要注意,如果有要使用的人,應該要訂 mailing list 看上面的討論。目前最常遇到的地雷是可以接受的 key 與 value 的長度異常的小,我在 porting 0.0.x 版到 FreeBSD ports 時有把 key 修正到 128bytes (原來是 16bytes),不過這點在 1.0.0 beta 應該修掉了,因為我在更新時翻過 header file,裡面沒有再看到這個限制,不過使用上可能還是要注意一下。\r\n\r\n另外 memcached 原作者 Brad Fitzpatrick 似乎對於 Berkeley DB 版本的效率感到好奇,有跟 memcachedb 的原作者討論一些架構上的想法,也許這兩位會擦出什麼火花...", + "title": "memcachedb" + }, + { + "id": "1432", + "body": "這幾天除了在寫簽呈外,其他大多數的時間都在玩 Zend Framework。\r\n\r\nZend Framework 與其他的 Framework 有個很大的地方不同,他所有的套件都是可以拆開來用的,也因為如此,有許多人覺得 Zend Framework 其實只是另外一套 PEAR 而提出批評。不過我後來對於這些想法看的比較開了,只要會抓貓的都是好老鼠... (XD)\r\n\r\n文件如同 PHP 的慣例都蠻齊全的,在文件裡就有很多 sample code,大多數測試一下就可以用了。\r\n\r\n不過我自己在測 Zend_Controller 的時候卡住,用了三天時間還是解決不了,最終在學弟給的 sample code 比較後找到問題,希望以後開發速度可以快很多...", + "title": "Zend Framework" + }, + { + "id": "1433", + "body": "最近進了四顆創見 SSD MLC 顆粒 32GB 硬碟 (連結應該沒錯) 跑 RAID 1+0,就讓 jnlinDebian 上跑 MySQL 5.1 測試 MyISAM 的效率,測試的結果相當慘,寫入的速度在個位數 qps (對... <10 query per second),而且不是模擬資料,是 Real Data 的 Replication Update...\r\n\r\n測過的 Filesystem 包括 ext3XFS,block size 也調整過好幾次,RAID 1+0 的部份是軟體做,這部份的 block size 也調整過,不過不管怎麼測,速度都還是上不去。\r\n\r\n在 Mtron SSD 硬碟還沒有開始在台灣代理之前,用一堆 RAM 加上 15K RPM SCSI 硬碟做 RAID 1+0 比較便宜,而且也比較穩定...\r\n\r\nUpdate:我要求 jnlin 將測試的想法丟到網頁上,現在可以在他的 blog 上看到了:「MySQL 在創見 SSD 上的測試」。", + "title": "MySQL 在創見 SSD 上跑的情況" + }, + { + "id": "1434", + "body": "開始使用 Zend Framework 後,一些設定上的想法。\r\n\r\n首先是 Zend Framework 的引入設定,有些文章會建議放到 php.ini 裡,在 include_path 引入,但我認為比較好的方式是在 index.php 裡引入:\r\n
set_include_path(get_include_path() . ':' . dirname(__FILE__) . '/../weblib/ZendFramework-1.5.0PR/library');
\r\n如果大家都共用系統的 library,那麼在升級時很有可能會中獎。至於這個指令對於系統效率的部份,我覺得這個東西差不了多少,不需要對此計較,先把時間花在其他地方比較好。\r\n\r\n再來是 .htaccess 的部份,Zend 的文件上建議把 css/js 之類的靜態圖檔設定到 Regular Expression 裡分開,我的建議是全部都丟給 index.php,然後靜態圖檔用另外一個 domain 放:\r\n
#\r\nRewriteEngine On\r\nRewriteBase /~gslin/zendtest\r\nRewriteRule .* index.php [L]
\r\n原因是一開始先稍微規劃,先用一台機器跑 VirtualHost 服務兩個 domain,之後長大了才容易拆開。當靜態圖檔的量大到會影響動態的部份時,抽出來用 lighttpd 吐。\r\n\r\n然後,既然都用了 Framework 這種東西,APC 之類的 opcode accelerator 一定要裝,不然速度會很慢。另外 APC 預設 30MB 的 cache 可能會不夠用,調大一點會比較好。\r\n\r\n用 Apache 一定要用 FastCGIPHP 抽出來跑,不要用 mod_php5 的模式跑。這樣 Apache 就可以用 event 或是其他 threading MPM 執行,對於效率會有很大的改善,我在去年年底有寫過:Apache 2.2 的 MPM Event。\r\n\r\n基本上效率不要太斤斤計較,因為很有機會一個 SQL slow query 的改善,就可以大幅度改善整體的效率。現在一台看起來還算暴力的 x86-64 1U 伺服器不用 100k 就有一台 (雙四核心 Xeon 加上 12GB RAM 與 SCSI*2),把人力時間花在開發上面比較實際...", + "title": "Zend Framework 的一些設定上的想法" + }, + { + "id": "1435", + "body": "我有三天的時間卡在 Zend_Controller 的使用問題,不管怎麼用都會丟出 500 Internal Server Error。後來不斷的測試,發現他根本就會動,只是我測試的方法有問題。\r\n\r\n先講一下 Zend_Controller 的用法,在引入 Zend_Controller_Front class 後 (方法請參考官方網站的說明):\r\n\r\n然後 controller 的目錄下放 IndexController.php 就會對應 http://host/index 以及 http://host/ (因為 index 是特殊的存在),放 TestController.php 就會對應 http://host/test,這些在官方文件裡都有還算清楚的範例。\r\n\r\n我的錯誤是在,我錯誤的使用 GET 的 proxy 模擬 HTTP Request。簡單的說,以下的 HTTP Request 會造成 500:\r\n
GET http://test.host.domain/test HTTP/1.1\r\nHost: test.host.domain
\r\n但這個不會:\r\n
GET /test HTTP/1.1\r\nHost: test.host.domain
\r\n而我用 libwww-perl 內附的 GET 這個「指令」測試:\r\n
GET -SUe -p http://test.host.domain:80/ http://test.host.domain/test
\r\n這個指令會送出第一類 HTTP Request,於是就噴了... 就只是這樣的問題而已。", + "title": "Zend Framework 中,Zend_Controller 測試時遇到的問題" + }, + { + "id": "1436", + "body": "紀錄一下情況:(2/24)\r\n\r\n12:12 <@chinsan_> http://doxory.com/choice/1813 #bsdchat 要不要從 IRCNET 改搬到 freenode?\r\n12:12 <@chinsan_> 要表決看看嗎?\r\n12:13 <@mjhsieh> 順便改成 utf8? # 推廣 utf8...\r\n12:14 <@chinsan_> hmmm...\r\n12:14 <@in2> 果真這種服務完全沒有忠誠度可言 XD\r\n12:17 < PipperL> 忠誠度又沒有專屬頻寬 XD\r\n12:18 <@chinsan_> 忠誠度又沒有專屬小島 XD\r\n12:37 <@yinjieh> 搬吧 不過到時候就不能這樣 OP 狂發了 (?)\r\n12:39 <@gslin_cs> yinjieh: 沒什麼不可以的啊 XD\r\n12:43 <@yinjieh> gslin_cs: 報告是!XD\r\n12:43 <@yinjieh> 那就馬上搬 (?)\r\n12:45 <@yinjieh> 只有我投票啊?XD\r\n12:45 <@yinjieh> 話說有人已經搬過去了嗎\r\n12:45 <@hcchien> 那我也要\r\n12:45 <@gslin_cs> 我剛剛加進去發現有人註冊過了?\r\n12:45 <@gslin_cs> UTF-8 對吧\r\n12:46 <@gslin_cs> 搬過去順便換\r\n12:46 <@hcchien> 投搬家 + utf 一票\r\n12:46 <@sharity> gogogomoving\r\n12:46 * sharity (CS-ing)", + "title": "#bsdchat 搬到 freenode 上,換 UTF-8 編碼" + }, + { + "id": "1437", + "body": "兩件雜事...\r\n\r\n因為這個禮拜以及上個禮拜都在衝簽呈的進度,星期二總算是告一段落,星期四利用十六個小時的睡眠暫時舒緩了一些疲勞...\r\n\r\n另外一件事情是 Layeredtech 有特價,而且還可以再用 payment 打折:$99/month 的 P4-2.8GHz + 2GB/RAM + 500GB/HD + 100Mbps Uplink + 1500GB/Bandwidth$115 的 P4-3.4GHz + 與前面一樣的條件。信件裡提到了很多,有需要的人我再 forward...", + "title": "放假" + }, + { + "id": "1439", + "body": "給一些老朋友的資訊。\r\n\r\nBBS 資料應該沒事,但是機器本身的 SCSI 介面卡似乎有問題,要找時間去機器前面處理。現在變成上班族並不是這麼方便... (笑)\r\n\r\nUpdate:現在在機器前處理了。\r\n\r\nUpdate 2:處理完了。", + "title": "小鹿鹿 (BBS)" + }, + { + "id": "1440", + "body": "Zend_Cache 是我一開始用 Zend Framework 的主因之一,除了包裝的不錯,使用 tag 的概念也讓我很在意:\r\n
Caching in Zend Framework is operated by frontends while cache records are stored through backend adapters (File, Sqlite, Memcache...) through a flexible system of IDs and tags. Using those, it is easy to delete specific types of records afterwards (for example: \"delete all cache records marked with a given tag\").
\r\n如果 cache 可以用 tag 處理的話,cache invalidate 的管理上會變得非常的容易。\r\n\r\n用 File Backend 測了一下 tag 的功能發現沒什麼問題,但一直想不太出來在 Memcache 上面要怎麼實做 (而且要 atomic),後來實際拿 Memcache Backend 測了以後發現 tag 的功能在 Memcache Backend 上面不支援,翻了翻 source code 也確定了這件事情 XD\r\n\r\n最近有人在 mailing list 上提到 memcached-tag 這個子計畫,看起來是有關係的 :p", + "title": "Zend_Cache 與 Memcache Backend" + }, + { + "id": "1441", + "body": "最近很少寫 Blog (程式沒寫幾行,倒是一堆行政上面的事情),不過 Twitter 上倒是常常念。\r\n\r\n最近忙一些事情,像是寫不完的採購簽呈 (還好有一部分交給 slzzp 了),然後是開不完的會,如果要抽時間寫程式的話,就得在一般人下班後才有空了...\r\n\r\n不管怎麼樣,最近看 jnlin 玩,以及我自己玩一些東西,有些有趣的想法,寫下來紀錄起來。\r\n\r\nFreeBSD 7.0 的 SCHED_ULE 長期觀察下來 (超過兩個月) 算是相當穩定,這點在目前 PIXNET 的 Web Server 端可以看出來 (在 FreeBSD 跑 apache22 event 是使用 threading,配合 FastCGIPHP),但 gjournalZFS 在效率以及穩定度上都還不堪使用。(指 heavy I/O)\r\n\r\nMyISAM 的讀取速度非常快,但不利於大量 Update (因為寫入的動作需要 table lock)。在國外的討論裡,一般都是推薦使用 InnoDB 解決這類 table 的情況,但實際上目前 InnoDB 的備份問題比起 MyISAM 麻煩 (經驗也是一個大問題),這點可能還要再考慮。\r\n\r\n要解決 table lock 的問題,另外一種方式是透過拆 table,而且目前看起來拆 table 撐 performance 的方式似乎相當可行 (在概念上,這是一種 HyperDB 的變形),所以最近應該會對這個方向大量研究。不過就得做不少 Denormalize 的事情,還是得累積經驗...\r\n\r\n如果有想到其他值得提的事情再寫好了...", + "title": "Twitter" + }, + { + "id": "1442", + "body": "這陣子 Video site 的一些大事情:Stage6 宣佈關站YouTube 開始支援 H.264ニコニコ動画也開始支援 H.264。\r\n\r\n無形中開始推動舊版的 Flash Player 升級到最新版... (似乎是好事?)", + "title": "Flash Player H.264" + }, + { + "id": "1443", + "body": "上橋菜穗子在 1996 年寫的小說《精靈守護者》被 Production I.G 動畫化後,尖端出版也取得代理出版。(尖端出版與我目前所在的 PIXNET 都屬於城邦集團)\r\n\r\n會買這本書其實完全是個意外。我相當喜歡《精靈守護者》的動畫,但是當時看動畫的時候,並沒有看到有出版社要代理小說的消息,也就一直沒管他。直到前陣子跟 slzzp 在城邦的書局書虫看到這本書的時候,才發現是尖端出版取得授權,就直接在書虫把小說買下來了。\r\n\r\n剛剛把《精靈守護者》的原作小說看完後,完全同意 rookierookie 在「精靈守護者」這篇所講的,上橋菜穗子與 Production I.G 所作的動畫版比小說版好。\r\n\r\n這也許是因為上橋菜穗子在寫完整個「守護者系列」的小說後,動畫版才找他進來參與,所以在思緒上會比當初寫的時候清楚,也可以趁機補一些劇情進去,讓故事變得更合理 (更流暢);在劇情的安排上,動畫把小說一冊的內容放到兩季做,時間的安排相當充裕,劇情完全不會交待不清。在這兩個因素下,我完全同意 rookierookie 對於動畫版與小說的評比... (相比之下,《狼與辛香料》把兩冊的內容放到一季做,果然就... -__-)\r\n\r\n所以對於還沒接觸的人,我也是推薦從動畫著手,小說的部份雖然不差,但是動畫真的太出色了... :p", + "title": "《精靈守護者》小說" + }, + { + "id": "1445", + "body": "雖然 Firefox 3 很容易當掉,但我已經相當習慣他當掉了,所以我的四組電腦都是用地雷版 (家裡與公司的 Desktop、X31、R60)。\r\n\r\n四台電腦有幾乎一樣的 addons,但很多 addons 都是 Firefox 2.0.0.x only,不過實際上在 Firefox 3 上跑其實很正常,所以需要動一些手腳讓 Firefox 可以用。\r\n\r\n我發現很多人都是修改 addons 裡的 install.rdf,甚至教學文都是介紹這個方法,看起來 Nightly Tester Tools 這個可以關閉 addons 版本檢查的套件已經被遺忘很久了... 在這個套件安裝後,並不會馬上把 Plugins 版本檢查的功能關閉,需要設定一下,設定完以後就可以直接亂裝一堆軟體測試。\r\n\r\n對於修改 install.rdf 感到疲倦的人請務必試用看看,相當好用啊...", + "title": "使用 Firefox 新版 (地雷版) 時必要的武器" + }, + { + "id": "1446", + "body": "星期六下午跟好幾個親戚去淡水舊街玩,照片都丟在「淡水舊街 (2008/03/08)」裡以及「970308淡水」裡了。\r\n\r\n先是從紅樹林站搭到淡水站,然後進入舊街開始吃吃喝喝聊天,到淡水紅樓上逛,然後最後搭船到漁人碼頭被海浪弄濕後,跑去親戚家稍微弄一弄,公車轉捷運再轉公車回家 :p\r\n\r\n中間有很多過程就懶得提了,都是親戚間的八卦話題... (狂笑)\r\n\r\n另外,這次出去玩稍微改變了「手機拍出來的照片很差」的印象,因為我第一隻有照相功能的手機是 Sony Ericsson T610,0.3M pixel 的效果完全不行,這次帶出去的是 3.2M pixel 的 Nokia 5610,效果就好很多,用手機拍起來還蠻順的,之後應該會常常亂拍吧 :p", + "title": "淡水舊街" + }, + { + "id": "1447", + "body": "半年沒出新版的 lighttpd 把現有的 patch (以及 1.5 backport 回 1.4 的部份) 整理出來,出了新版:1.4.19 - Made in Germany。\r\n\r\n這個版本幾乎都是 bug fix,新功能的部份似乎只有兩個 (最開頭的兩個),我自己還不會先使用... (沒時間的時候不要亂玩可能是地雷的東西 XD)", + "title": "lighttpd 1.4.19" + }, + { + "id": "1448", + "body": "貼一個ニコニコ動画看到的影片。\r\n\r\n\r\n\r\n這兩部作品分別是:ef - a fairy tale of the two.sola。", + "title": "ef 與 sola" + }, + { + "id": "1450", + "body": "隔了兩天才寫這篇... Anyway,裡面的錢不多,證件與卡片比較麻煩,全部掛失後跑補發流程。\r\n\r\n然後發現身份證可以用自然人憑證掛失 (結果一起丟了 orz),郵局 (中華郵政) 的 0800-700365 有時候會變成空號... (多撥幾次又會通了 XD)", + "title": "皮夾掉了" + }, + { + "id": "1451", + "body": "在北京上網時,有些網站會連不上,大多數的情況下可以透過 PuTTY 建 SSH Tunnel,把 HTTP 連線透過 PuTTY 加密就可以了。但是有時候是因為 domain 解出不同的 IP address 而造成連不上,像是 totorogo.dyndns.org。\r\n\r\n這時候就要用 about:config 把 network.proxy.socks_remote_dns 改成 true,要求 Firefox 將查詢 DNS 的需求透過 PuTTY 所建出來的 Socks5 Tunnel 送出詢問,目前看起來還蠻正常的,暫時先這樣用看看...", + "title": "Firefox over SSH Tunnel" + }, + { + "id": "1452", + "body": "在 Simon Willison's Weblog 上看到講 Consistent Hashing 的文章,剛好這次去北京開會的時候也有提到 Amazon's Dynamo,其實在 paper 裡面的 Partitioning Algorithm 這一節就講得很清楚,不過這篇用更長的篇幅來解釋:Programmer’s Toolbox Part 3: Consistent Hashing。\r\n\r\n以往資料要放到 n 台機器上,最簡單的方法就是取餘數 (hash_value % n) 然後放到對應的機器上,但在這個架構上面如果要加機器,會使得資料大幅度的移動。Consistent Hashing 所解決的就是讓資料的搬移量降低。", + "title": "Consistent Hashing" + }, + { + "id": "1453", + "body": "在 Jeff Roberson (也就是目前 FreeBSD 上 SCHED_ULE 的維護者) 的 blog 上說了這樣的話:(原文章連結)\r\n
MyISAM performance is terrible in FreeBSD 7.0 due to the user-space pthread_rwlock implementation. Just a word of warning if you intend to deploy a database server based on 7.0. I am certain we will have this fixed in 7.1. It will most likely be in CURRENT in a week or two.
\r\n所以不是我在「FreeBSD 上的 MySQL 效率」這裡想的 Filesystem I/O 問題?來等 Jeff Roberson 的 patch 吧...", + "title": "MyISAM 在 FreeBSD 上效率不好的原因?" + }, + { + "id": "1454", + "body": "在 Brad Fitzpatrick 那邊看到一個疑似 Firefox JS engine 處理 DNS query 時的 bug 造成的 hang:Firefox + PAC considered harmful,在 MozillaBug 235853 裡有完整的說明。\r\n\r\n所以自己寫 PAC 的人,一種解決方法是改用 FoxyProxy,另外一種則是暫時把地雷函式暫時改寫?\r\n\r\nPS:最近開使用 FoxyProxy,發現對於一些連線的處理上不像以前要手動改 Proxy,方便許多,應該會列入以後重裝時的套件吧...", + "title": "Firefox 的 DNS query (在 PAC 裡)" + }, + { + "id": "1455", + "body": "趁著 Layeredtech 特價,把主機從 Layeredtech 換到 Layeredtech (因為新的主機方案機器比較好,費用又比較低...),順便把 lighttpd 換回 Apache 2.2。\r\n\r\n有不少東西需要調整,到時候看看要怎麼處理吧...\r\n\r\nPS:在 Current Server Specials & Close-Outs 有現在的特價方案,有興趣的可以去翻翻看...", + "title": "換主機" + }, + { + "id": "1456", + "body": "Zend Framework 前陣子釋出 1.5.0 正式版了,與 1.5.0-RC 系列沒有太大差別,所以沒支援的還是得自己想辦法。\r\n\r\nController 的部份,Zend_Controller 沒什麼問題,最基本的配置方式都已經摸熟了,也覺得算是還蠻好用的。\r\n\r\nView 的部份,Zend_View 畢竟是 PHP 語法,看起來就不太討喜,加上我們是使用 Google cTemplate,其實以目前狀況算是還不錯,要另外再學一套的話要先考慮好處夠不夠足以換掉。far 最近在研究這方面,而我則是想使用 Smarty。但不管是哪種方案,View 的部份看起來沒什麼問題。\r\n\r\n真正的問題在 Model,你可以在 Zend Framework 的文件裡面看到 \"models\" 的目錄配置 (像是在 Using a Conventional Modular Directory Structure 裡),但實際上 trace code 發現沒有對 model 支援。如果你自己寫了一個 Model 放到 models 裡,也沒有很方便的方法讓 Controller 裡的 code 使用,目前我想到的 dirty work 是 require_once(dirname(__FILE__) . '/../models/UserModel.php')。\r\n\r\n有誰用 ZF 開發有遇到同樣問題的嗎?", + "title": "缺乏 Model 支援的 Zend Framework" + }, + { + "id": "1457", + "body": "如果 bug 愈找愈久,代表那個 bug 一定很笨 XD\r\n\r\n像是今天一整天跟 ronnywang 在找一個 Zend_Db 會爛掉的 bug,最後發現是因為 PDO_MYSQL 沒裝... XD\r\n\r\n愈來愈多關節打通了,接下來就來衝吧...", + "title": "一些雜記" + }, + { + "id": "1458", + "body": "OperaWebkit 兩個 browser (engine) 已經先完成 Acid3 100% Pass:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n看 Wikipedia 上的資料,這次 Opera 比 Webkit 快應該是為了報 Acid2 時的仇... (Acid2 由 Opera 的 CTO 所發表,但當時第一個達成 non-public build 100% pass 的卻是 Safari XDDD)\r\n\r\nUpdate:結果因為一個 bug 造成翻盤,參考 comment 裡 zmx 提供的 url。", + "title": "Opera 與 Webkit 相繼達成 Acid3 100% Pass 目標" + }, + { + "id": "1459", + "body": "昨天 Mtron SSD 硬碟 3.5\" 32GB*2 終於到了,上線後測試發現與之前的 SSD 硬碟完全不同,以 MySQL 的啟動時效率來看,足以殲滅 15KRPM SCSI*4 (RAID10)。(剛啟動時因為 key buffer 還沒有 cache,會需要一段時間速度才會慢慢上來,在 15KRPM 的 RAID10 SCSI 上需要幾分鐘,但 Mtron SSD 幾乎不需要 slow start)\r\n\r\n其他的就不多說了,目前是 jnlin 在測試,請參考他寫的「Mtron SSD 在 MySQL (MyISAM) 上跑了兩個小時」這篇,之後應該會有一些數據可以看。目前已經是卡在 CPU bound 了,接下來要期待 Jeff Roberson 對於 FreeBSD 上 pthread_rwlock 的改善。\r\n\r\nRef:「MySQL 在創見 SSD 上跑的情況」", + "title": "Mtron SSD 硬碟" + }, + { + "id": "1460", + "body": "剛剛把系統換成 WordPress 2.5 了。就視覺上來說,改變最大的是後台的介面。新後台的介面用起來沒什麼問題,比以前的確乾淨不少,但是最常被使用的文章編輯的部份反而變得相當的糟糕。\r\n\r\n寫新文章時,編輯版面就是固定給寬度是 1024px 的使用者用,超過的部份 (像我會把瀏覽器開到 1280x1024) 仍然是向左邊靠,於是右半部會有一塊留白,如果我開成 1920x1200 就更明顯了。另外,本來可以拖拉的區塊,現在變得無法拖拉...\r\n\r\n另外一個插曲是,我使用的 K2 在 WordPress 2.5 上會有問題,所以就順便更新了,如果有遇到後台介面進不去的人,把錯誤訊息拿去 Google 找看看,應該都有人問過了。", + "title": "換到 WordPress 2.5" + }, + { + "id": "1461", + "body": "這個週末都在研究 Zend Framework 的用法,然後套用到新的系統上。\r\n\r\nMVC 的三個架構裡,Controller 透過 .htaccessZend_Controller 配合,效果還算可以。View 目前是用 Zend_View,不過會看情況改用 Google cTemplate 或是 Smarty,基本上都沒什麼問題。\r\n\r\n最大的問題在於 Model:Zend_Db 的功能看起來很多 (在說明文件的份量裡,算是相當厚的一個模組),但實際上有不少缺陷沒辦法光靠 Zend_Db 目前內附的模組解決,需要自己寫 Adapter 處理。在沒時間研究 Zend_Db 的 Adapter 怎麼寫的情況下,只能先把他當作非常小的 ADOdb 使用。\r\n\r\nZend_Db 主要的兩個問題是:Master-Slave 時讀寫必須分開,以及多台時 Failover 及 Load sharing 的處理。雖然這兩個問題都可以用 MySQL Proxy 解決,但我不是很喜歡 MySQL Proxy 的解法,所以...\r\n\r\nAnyway,目前該解決的都解決掉了,如果有遇到其他的模組不好用,我再寫文章抱怨好了... XD", + "title": "Zend Framework 的 Zend_Db" + }, + { + "id": "1462", + "body": "都是小圖,看不清楚的可以點回 Flickr 的頁面看到大圖。\r\n\r\n我不曉得依照這個規則是怎麼算出比彎彎還要高分:(原出處:部落格觀察貼紙各式說明)\r\n\r\n\"\"\r\n\r\n下面這張是依照「Page 總分」排序,彎彎在第九名,第七名是 Gene,第八名是 Wildcat,第十三名是 askareiko,剛好是部落格觀察的「GAW」,這個「排行榜」的公信力大家自己心中應該有數。\r\n\r\n\"\"", + "title": "部落格觀察" + }, + { + "id": "1463", + "body": "除了幫無名小站寫以外,也幫自己公司 (PIXNET) 寫 Album Expander,這樣我自己看圖片才方便 XD\r\n\r\n這隻程式請配合 Greasemonkey 服用:PIXNET Album Expander。\r\n\r\n另外在 trace DOM 的時候有一些感想,照片的部份全部都是 ul + li,再用 CSS 做出來的,當初設計這個 Template 的人不賴啊 XD\r\n\r\nUpdate:修正了兩個問題,第一個是 Google Code 今天一直噴 502 而讀不到 jQuery,所以只好用 code.jquery.com。第二個是修正相本 .thumgBox 與 .thumbImg span 裡設定 width/height 時會產生的 bug。", + "title": "PIXNET Album Expander" + }, + { + "id": "1464", + "body": "Zend_Db::factory() 可以吃兩種語法,第一種是用兩個參數指定所有的資訊,像這樣:\r\n
$params = array('host' => 'localhost', 'username' => 'my_username', 'password' => 'my_password', 'dbname' => 'my_database');\r\n\r\n$db = Zend_Db::factory('pdo_mysql', $params);
\r\n第二種是吃一個參數,Zend_Config (或者繼承他的 class):\r\n
$conf = Zend_Config_Ini('filename.ini');\r\n$db = Zend_Db::factory($conf);
\r\n如果想把資料庫設定放在檔案裡,再用 Zend_Config 讀進來傳給 Zend_Db,目前官方有 Zend_Config_IniZend_Config_Xml 兩種方法,不過這兩種方法我都不喜歡,用 Google 找 \"Zend_Config_Yaml\",沒有什麼人在研究這個 (在這裡是有看到一份,不過沒看到其他人用的心得)。\r\n\r\n於是退而求其次,用 Zend_Json 讀進來後用第一種方式傳進去。", + "title": "Zend_Db 的參數 (與 Zend_Config、Zend_Json)" + }, + { + "id": "1465", + "body": "照 Manual 所列出來的功能,Zend_Db 似乎沒有提供 INSERT ... ON DUPLICATE KEY UPDATE 的功能,所以就得自己做了。\r\n\r\n正常的作法是自己寫 SQL query 處理,但我想到的方法就是先 ->insert(),如果失敗再 ->update()。拆開來的這兩個動作會使得 MySQL 多花不少 CPU resource,但我暫時不想自己寫 SQL Query (主要是因為嫌 escape 麻煩),先放個 XXX 等以後再 tune。\r\n\r\n問題在 ->insert() 後如果遇到 Duplicate 會丟出 Exception,用 try-catch 的方法我不是很喜歡,但稍微翻過 Zend_Db 的 code,似乎沒辦法改成 return status,所以就只好用 try-catch 處理。這應該是跟底層的 PDO_MYSQL 有關,Zend_Db 只是在中間的介面。\r\n\r\n如果還有遇到其他問題就繼續寫...", + "title": "Zend_Db 的例外處理" + }, + { + "id": "1466", + "body": "剛剛幫別人升級時注意到的,wp-config.php 裡有一段註解是要你設定 SECRET_KEY,看起來是為了當作 private secret 用:\r\n
// Change SECRET_KEY to a unique phrase.  You won't have to remember it later,\r\n// so make it long and complicated.  You can visit https://www.grc.com/passwords.htm\r\n// to get a phrase generated for you, or just make something up.
\r\n設完後會需要重新登入 WordPress。", + "title": "升級到 WordPress 2.5 的注意事項" + }, + { + "id": "1467", + "body": "在 mclee 那邊看到台灣商務印書館打算印全套的《四庫全書》:「商務印書館要印行文淵閣四庫全書了」。\r\n\r\n整套一千五百本,預約價是 158 萬元。如果只要其中幾本,單冊的預約價是 $1200。除了新台幣外,也接受美金下訂。不過前提是要達到 20 套才會開始印...", + "title": "重印四庫全書" + }, + { + "id": "1468", + "body": "如果使用 Zend_Json 放設定檔,這「可能」是一個比較好的解法:\r\n
public function __construct()\r\n{\r\n    $j = file_get_contents(dirname(__FILE__) . '/db.json');\r\n    $conf = Zend_Json::decode($j);\r\n    $conf = new Zend_Config($conf['Db']);\r\n    $this->rDb = Zend_Db::factory($conf->rDb);\r\n    $this->wDb = Zend_Db::factory($conf->wDb);\r\n}
\r\n參考:Zend_Db 的參數 (與 Zend_Config、Zend_Json)。", + "title": "Zend_Json + Zend_Config + Zend_Db" + }, + { + "id": "1469", + "body": "在 ImageShack Starts Free BitTorrent Download Service 這篇看到 ImageShack 開始提供 BitTorrent 下載服務了。\r\n\r\n看了一下介面,把 torrent 檔傳上去後就會開始抓,另外一個比較特別的功能是選擇下載的檔案 (在 Windows 上的 BitTorrent 軟體還蠻常見的功能)。開 µTorrent 同時抓可以看出用的是 Transmission 1.10。目前服務在 beta,有兩個 15GB 的限制,一個是空間,一個是每個月的 HTTP 下載流量,在正式上線後可能會有修改。\r\n\r\n丟了一個 torrent 上去測,下載到 ImageShack 的速度好像還蠻快的,不過我沒測完 :p", + "title": "ImageShack 的 BitTorrent 下載服務" + }, + { + "id": "1470", + "body": "幾天前就一直有消息,Google 打算要把 BigTable 的服務拿出來給大家用。結果拿出來的餅比預期的更大,直接幫你 Hosting 整個服務:Google App Engine。\r\n\r\nGoogle App Engine 目前以 Python 為語言 (更仔細的說,是以 Django 為參考的標準,所以有用過 Django 的人會蠻熟悉的),後端則是以 GFS 與 BigTable 支撐整個系統。Hosting 的服務以 appspot.com 這個獨立域名避免 Cookie 與 XSS 安全性的問題,看起來是呼應 blogspot.com。\r\n\r\n昨天一睡醒看到有一萬個人的註冊限制,就先丟進去註冊,出門到公司就發現已經申請到了。\r\n\r\n另外,這個系統有一些限制:500MB storage、200M CPU cycle/day、10GB bandwidth/day,這個量對於自己玩看起來是沒什麼問題,等到收費後要看看價錢到底如何。\r\n\r\n在開始玩之前,看看 The Datastore API 可以知道 BigTable 可以做到的事情,其實還蠻有趣的,像是不支援「!=」... XD\r\n\r\nUpdate:在「TechCrunch Labs: Our Experience Building And Launching An App On Google App Engine」這篇裡面有後台的畫面,可以看到相當多資訊!\r\n\r\n參考:Google App Engine。", + "title": "Google App Engine" + }, + { + "id": "1471", + "body": "OSDC.TW 2008 第一天我是中午才到的。在技術方面,大多數的題目都已經在網路上看過資料研究過,沒有什麼特別的感想,不過可以感覺到有些講者可能因為經驗與時間的關係,有些重要的地方都沒講清楚。\r\n\r\n先是我們自己家介紹的 Berkeley DB,jnlin 沒有提到為何要避免使用 LEFT JOIN 的原因,然後在測試的部份數據也少說明了很多東西。\r\n\r\n另外 Vivek Ratan 講 Hadoop 的部份,有些地方沒有講清楚,像是要怎麼因應 Namenode 故障時的處理 (在「Metadata Disk Failure」這邊的說明可以參考)。另外我回來查了以後發現跑 Hadoop 後,所需要的時間變成原來的 66%,而不是效率變成原來的 66%,所以我在台下問了一個笨問題...\r\n\r\n第一天結束後倒是到樓下的咖啡廳聊了很久,儘講些有的沒的...", + "title": "OSDC.TW 2008 第一天" + }, + { + "id": "1472", + "body": "第二天的一大早就到會場了,分成兩個場地同時進行議程。\r\n\r\n第一場我去聽 Gene 所講的「Open Source, Open Standard, Open Service (OS^3)」,其實我對於 {Gene,askareiko,wildcat} 三人組 (也就是部落格觀察上方的 {G,A,W}) 很不滿,原因請參考我在兩個禮拜前寫的「部落格觀察」這篇文章,以及下方 Gene 所回的 comment。\r\n\r\n不過我聽完後就發現沒有必要講什麼了,花時間跟他解釋只會浪費體力與時間,聽到要開始 Q&A 就閃人了。\r\n\r\n接下來是 clkaoSVK,主要是 SVK 2.2 的新功能,不過還沒測試過,等正式版釋出後再看看 branch 的行為。\r\n\r\n再來是高橋メソッドRuby 1.9 的過去與現在,其中 Benchmarking 的部份蠻奇怪的,會場上測試的數據顯示 Ruby 1.8 花了很多時間在 \"sys\" 上,而 1.9 改善了這個部份,所以速度快了許多,但這是在純粹只有數學運算的 function 跑出來的結果?這個問題到後來還是沒有答案,先放著再說。\r\n\r\n另外高橋先生沒有提到關於 Ruby 1.9 對 GC 的處理是蠻可惜的,這個反而才是重點...\r\n\r\n接下來是 Jserv 講的「許我們一個 Keroro 的桌面」與 clkao 講的「Prophet: A Distributed Syncable Database」,這兩個 talk 都很歡樂 :p\r\n\r\n中午休息時間,大家各自去吃東西,還是有些人留在會場聊天...", + "title": "OSDC.TW 2008 第二天 (早上)" + }, + { + "id": "1473", + "body": "昨天 slzzp 講到的 MD5 Collision 就是 Birthday Attack,下方就有條文表格列出常見的數據,MD5 是 128bits 那一排...\r\n\r\n去公司再跟他要看看那兩個檔案... XD", + "title": "MD5 Collision" + }, + { + "id": "1474", + "body": "在開始寫 code 之前來寫遊記...\r\n\r\n第二天下午一開始先是在 Thinker 的「言簡意賅 -- Python and Meta-programming」,聽 Python 的 meta-programming,整個過程相當悶,加上不少人吃完午餐就很容易想睡覺。不過我還是儘量斷斷續續聽了一些東西...\r\n\r\n接下來的一場因為我對 RubyJava 都沒有特別有興趣,所以我到 ycheng 那場的後面聽,結果也是聽不太下去,就早早跑出來了... (跟 Thinker 一樣,語調都很平,再加上互動不多,所以...)\r\n\r\n接下來是 clkao愛印網為例子所講的「Running Perlish Small Business with Perl」,現場活絡許多... (用「愛印網」當關鍵字去 Google 找,怎麼好像怪怪的... XD)\r\n\r\n接下來是 Lightning Talk,horance 的 session 居然是這兩天拍手拍最熱烈的... 這些就有機會再提好了 :p", + "title": "OSDC.TW 2008 第二天 (下午一般議程)" + }, + { + "id": "1475", + "body": "login.aol.tw 沒有去買正式的 SSL Certificate 而是自己弄?這是認真的嗎...\r\n\r\n\"\"", + "title": "login.aol.tw 的安全加密問題?" + }, + { + "id": "1476", + "body": "OSDC.TW 2008 的無線網路的確是歷年來參加過這麼多次 Conference 中最好的一次,看了 chihchun 寫的文章才知道後面下了這麼多功夫!太感謝了!\r\n\r\n參考:網路聚會之黃金三點。", + "title": "OSDC.TW 2008 的無線網路" + }, + { + "id": "1477", + "body": "The 2008 MySQL Conference & Expo 幾個比較大的消息:\r\n\r\n其他比較小的消息還包括了 MySQL 6.0、MySQL 5.1 Maria 之類的新聞,不過上面這兩個消息丟出來就讓人感覺很兇暴,其他的新聞就... (Kickfire 的 C/P 表現相當漂亮,在 100GB 的地方徹底殲滅 HPDell)", + "title": "The 2008 MySQL Conference & Expo" + }, + { + "id": "1478", + "body": "很多時候你不一定需要去會場:只要你願意看,很多很寶貴的資訊在網路上都會有人寫。\r\n\r\n像這篇「MySQL Conference Liveblogging: Disaster Is Inevitable - Are You Prepared?」講 MySQL 資料庫損毀的防範以及事後處理就很棒。雖然只有很簡單的 transcript,但其實精華都已經在裡面了。", + "title": "MySQL 的災難預防及補救" + }, + { + "id": "1479", + "body": "這場應該是很熱鬧的一場,一堆數字可以看:\r\n", + "title": "MySQL Conference - Scale Out" + }, + { + "id": "1480", + "body": "看了 transcript 還蠻有趣的...\r\n", + "title": "MySQL Conference - Falcon" + }, + { + "id": "1481", + "body": "\r\n", + "title": "MySQL Conference - 監視工具" + }, + { + "id": "1482", + "body": "好幾天沒寫 Blog 了,主要是星期五六日去員工旅遊 (參考「員工旅遊 (2008/04/18~20) 」這邊),然後星期日晚上與星期一狂看 Bloglines 與新番,於是就好幾天沒寫 Blog 了...\r\n\r\n說變天的原因是因為很多單位在 MySQL Conference & Expo 2008 這段時間發表了一堆東西,就管理與政策面來看,這是 Sun 買下 MySQL AB 後第一次的 MySQL Conference,很多人都在看 Sun 對於 MySQL 這套 Open Source Software 到底會有什麼大計畫。\r\n\r\n另外一方面 (技術上),Oracle 推出的 InnoDB Plugin 所列出的優點讓人相當驚豔,解決了不少問題,不過可惜在目前最新版 5.1.24-rc 上無法運作。\r\n\r\n再來是 Kickfire 用硬體的方式大幅增加 transaction 的速度,站上 Non-cluster 100GB data 的王座,實際上機器也很便宜,才 USD$35K。(如果你真的需要用到這麼快的 transaction 速度,百萬台幣應該不是什麼問題)\r\n\r\n結果玩回來後發現一堆計畫都要再重新思考...", + "title": "變天了..." + }, + { + "id": "1484", + "body": "收到 Amazon 的信通知,從 2008/5/1 開始,從 Amazon 流出的頻寬的費用再降價:\r\n\r\n比起一般的 hosting (自己架然後自己管理 server) 大約是三倍的價錢,把其他因素考慮進去,其實相當划算?", + "title": "Amazon 頻寬再降價" + }, + { + "id": "1485", + "body": "InnoDB Barracuda (InnoDB Plugin 提供的新格式) 有測試結果了,在「Testing InnoDB \"Barracuda\" format with compression」這篇裡面以一個 30GB 的 mysqldump 檔案測試 (看他文章的內容,應該是 real data),在裡面提到幾個重點:\r\n", + "title": "InnoDB Barracuda" + }, + { + "id": "1486", + "body": "在 MySQL Proxy 作者的 Blog 上看到一些關於 transaction 時有趣的用法:\r\n\r\n話說回來,最近 lighttpd 又有一陣子沒什麼動作了,看起來心力都花在 MySQL 上面了...", + "title": "MySQL Proxy 的用途" + }, + { + "id": "1487", + "body": "本來是在 R60 上裝 Ubuntu 7.10,結果裝完後發現 8.04 已經到 RC stage 了,乾脆重裝成 8.04,等到正式 release 的時候升級到最新版。\r\n\r\n裝完後什麼都不需要調整,就可以很順暢的使用 TouchPad、無線網路,而且 Function Key 也都正常運作。另外該有的軟體也都有了,像是 Firefox (居然是 3.0b5) 與 OpenOffice。\r\n\r\n輸入法先換成 gcin,字型的部份把 FireflyTTF 以及文泉驛正黑 裝上後就差不多了。小紅點的 Scroll 功能的部份則是加了兩三行到 /etc/X11/xorg.conf 內。\r\n\r\n把 SubversionSVKGit 都裝好後,即使想在沒有網路的地方開發軟體仍然很方便。\r\n\r\n應該會跑一陣子看看有什麼不足的,桌機先維持 Windows XP... XD\r\n\r\nUpdate:相關的設定可以參考 racklin 寫的「安裝 Ubuntu 8.04 於 Thinkpad T61 雜記」", + "title": "Ubuntu 8.04" + }, + { + "id": "1488", + "body": "補「MySQL 在 Mtron SSD 上的測試」這篇的說明。\r\n\r\n價位上,Mtron SSD Pro 7000 系列 32GB 的單顆進價大約在 $40K (含稅),兩顆就 $80K 了,相較 15K RPM 73GB SCSI 硬碟四顆只要 $40K 的價錢偏高不少。\r\n\r\n效率上,MyISAM 的 real data 測試發現不論是 Mtron SSD 32GB*2 跑 RAID0,還是 15K RPM 73GB SCSI*4 跑 RAID10,都是 CPU 先到瓶頸,I/O 都沒有問題。至於 InnoDB 的結果在 Kevin Burton 的 Blog 上可以看到不少 real data 的資訊。\r\n\r\n不過,如果你的資料庫遇到 I/O 瓶頸的話 (用 RAID 1+0 都還解決不了) 可以考慮用多顆 Mtron SSD RAID 把效率換出來,不過比較治本的方法應該是改寫程式,想辦法 partition。另外看看是不是因為大量的 Table scan 造成效率低落...\r\n\r\n對了,Mtron SSD 硬碟台灣有代理商了,曜紅科技。", + "title": "Mtron SSD 固態硬碟" + }, + { + "id": "1489", + "body": "本來今天是請假的,結果下午四點被急 call 處理事情,這加班的內容... 一整個冏啊... (抱頭)\r\n\r\nRef:宅宅的機房一po加班本日機房二油....。\r\n\r\nUpdate:兩個網站的消息都出來了:\r\n", + "title": "第一次加班加到早上..." + }, + { + "id": "1491", + "body": "老闆的老闆說 ok,所以...\r\n\r\n遊戲基地PIXNET 是同一個集團,而巴哈姆特與大頭們都相當熟識。我本來星期一請假,下午三點把事情處理完回到家準備要睡一下,四點就接到急 call 電話,弄到隔天凌晨四點才回家...\r\n\r\n攻擊的模式是大量 IP 用發出大量 HTTP 連線,所以暫時性的解法朝著壓低連線限制,而且要儘快,最好是有現成的設備直接做,不要自己用軟體調整參數調半天。\r\n\r\nGamebase 有將近一打的 Web server,是 Alteon AD3 撐不住所以掛掉,(中間有一堆測試的過程就不講了),最後是在前端放一台 Cisco ASA 5520,然後用 HAProxy 換掉 AD3。但 ASA 5520 不夠力,目前還是請 ISP 先做一些處理。\r\n\r\n巴哈姆特因為架構比較單純,所以前端放了 Cisco PIX (型號忘了...) 擋著,放上去後站方也是請 SEEDNet 幫他們先做一些處理。\r\n\r\n其實我並沒有幫到什麼忙,主要還是 SI 願意賣面子先借硬體設備處理。我只是大概知道要朝哪個方向,聯絡哪些單位而已。", + "title": "遊戲基地與巴哈姆特" + }, + { + "id": "1492", + "body": "在「PHP array_merge is Slow」這篇的 comments 看到 PHP 裡兩個 array 相加的處理,實際寫了一些小程式玩過後發現一些以前不知道的東西 :p\r\n\r\nassociated array 用 $a + $b 時,如果有重複的 key 會優先取前者 ($a),要優先取 $b 就用 $b + $a。", + "title": "PHP 的 array_merge" + }, + { + "id": "1493", + "body": "對 Jefferson High School 做性行為研究的資料。這是很久前的研究,我一直以為我在看到報導後就在 Blog 上提過,但剛剛要找的時候發現我沒寫過...\r\n\r\n下面這張是 Flickr 上找到的圖,似乎是在會場裡。這張圖的大圖可以在原始研究網站上看到:Researchers Map The Sexual Network Of An Entire High School。\r\n\r\n\"\"\r\n\r\n這也是一種 Social Network...", + "title": "Jefferson High School 的「關係圖」" + }, + { + "id": "1494", + "body": "本來要寫「一些 Zend_Form 地雷」,結果整理起來還不少,還是改成「很多地雷」比較合理。\r\n\r\n第一個地雷是 select 元素:\r\n
$el = $this->createElement('select', 'siteshow');\r\n$el->setLabel('是否顯示下一頁');\r\n$el->addMultiOption('1', '顯示');\r\n$el->addMultiOption('0', '不顯示');\r\n$this->addElement($el);
\r\n對這個元素設定值時,要記得用 intval() 轉成數字,像這樣:\r\n
$f->siteshow->setValue(intval($dbval['siteshow']));
\r\n第二個地雷是 setRequired() 的處理,假設你這樣寫:\r\n
$el = $this->createElement('text', 'article_title');\r\n$el->setLabel('文章標題');\r\n$el->setRequired(TRUE);\r\n$this->addElement($el);
\r\n因為 setRequired 是使用 empty() 判斷,所以標題取 \"0\" 時就會過不去。目前的解法是用 stringLength 指定最小與最大長度:\r\n
$el->addValidator('stringLength', FALSE, array(1, 255));\r\n$el->addValidator('stringLength', FALSE, array(1)); # 沒有最大長度限制
\r\n第三個... 忘記了,想到再寫 Q_Q", + "title": "很多地雷的 Zend_Form..." + }, + { + "id": "1495", + "body": "幫我們公司徵人 :p\r\n\r\n要徵熟悉 PHP,以及 MySQL 的正職 coder 兩名,工作地點在台北市民生東路二段這邊,有興趣的人請將履歷寄到 104@pixnet.tw,標題請寫上「應徵 PIXNET 程式設計師」。\r\n\r\n這份工作主要的內容是寫 PHP,如果熟悉 Zend Framework (目前我們用這個開發) 或其他 Framework 更好。\r\n\r\n有問題除了可以在 comment 問以外,也可以直接寫信到 gslin at pixnet.tw 問我。", + "title": "PIXNET 徵正職 PHP 工程師" + }, + { + "id": "1496", + "body": "今年四月四日正式發佈的 Unicode 5.1.0 (Unicode Version 5.1 Released),Google 也在五月宣佈正式支援這些新的字元:Moving to Unicode 5.1。\r\n\r\nGoogle 除了宣佈支援 Unicode 5.1.0 以外,也分析了目前網頁編碼的比例。UTF-8 編碼網頁所佔的比例超越了 ASCII & ISO8859-1,而且還不斷在成長...", + "title": "使用 Unicode 的網頁所佔的比例" + }, + { + "id": "1497", + "body": "如果是自己搞網站 (程式美術都自己來),用 Zend_Form 設定完後,透過 render() 將 HTML code 呈現的確不錯,畢竟強迫你要用 CSS 去處理頁面呈現。不過,如果是請別人先做好美術版面,產生 HTML 後才要轉成 Zend_Form 生出來的話,就會用到很多 manual 裡不會教的「壞方法」XD\r\n\r\n目前用到的方法是在 view 裡面 (我用 Zend_View) 直接顯示 Element,像是這樣:\r\n
<?= $this->post_form->post_title ?>
\r\n但只用上面的方法會產生一堆 dt + dd 之類的東西,這是因為 Element 預設的 Decorator 太多,所以需要重設只用 ViewHelper:\r\n
$element->setDecorators(array('ViewHelper'));
\r\n其他的在原來的 tutorial 都有寫。\r\n\r\n另外有點很重要,因為 Zend_Form 在 1.5 版才納入,所以文件並不一定能夠涵蓋所有的方法,看 source code 瞭解用法的能力很重要...", + "title": "Zend_Form 的一些紀錄" + }, + { + "id": "1498", + "body": "這邊講的是,在 Ubuntu 下透過手機的 USB 線上網,主要是參考 Re: Howto: Nokia N73 USB cable dialup 這篇文章找到資料的。\r\n\r\n把手機 (Nokia 6210) 接上 USB 傳輸線後,Ubuntu 上可以看到 /dev/ttyACM0 (dmesg 的訊息),這時候先跑 wvdialconf 讓他自動偵測,將設定檔寫入 /etc/wvdial.conf 後,再修改 /etc/wvdial.conf 裡的 Phone/Username/Password。電話號碼我是用 *99#,Username/Password 都是用 internet (隨便設)。\r\n\r\n但我沒看到 APN 在哪裡設定,會故意把 Username/Password 都設定成與 APN 一樣也是因為想猜看看,但說不定下個月的帳單還是很精彩 XD", + "title": "在 Ubuntu 上用 3G 上網" + }, + { + "id": "1499", + "body": "Notebook 是 IBM R60,螢幕大小是 1024x768,家裡的 Samsung SyncMaster 245B 是 1920x1200,其中 DVI 介面接 Desktop,而 VGA 介面以前用 Windows 時拿來接 R60 雙螢幕。\r\n\r\n在 Ubuntu 上想要雙螢幕輸出,但一直卡在解析度上:都是 1024x768 或都是 1920x1200 (Notebook 上會用模擬的),後來找到這篇「[ubuntu] 兩台不同解析度的雙螢幕設定」,看起來有點舊,不過還是可以用。\r\n\r\n裡面提到的 HSync 與 VRefresh 我都沒設定,另外補上了 Option \"Mode1\" \"1024x768\",這樣就正常了,目前這樣使用還蠻正常的。", + "title": "在 Ubuntu 上雙螢幕輸出" + }, + { + "id": "1500", + "body": "用 commit-email.pl 或是 svnnotify 的人,在 Subversion commit 時裡輸入 UTF-8 commit log (這邊指非純英文,在我自己的環境裡是中文),寄出的信會產生亂碼。\r\n\r\n在網路上搜尋或是自己追蹤後,會發現是 svnlook 輸出的問題。網路上很多方法都是改 commit-email.pl,修正 svnlook 的輸出結果,但這個方法我不太喜歡。我覺得 svnlook 應該有設定可以調整,可以讓他輸出正確的 commit log,第一次跑 svnlook 就發現在我的 PuTTY console 可以正確顯示,測過幾次後發現是因為 svnlook 依照 locale(1) 設定而產生亂碼。\r\n\r\n知道問題後就很簡單了,由於 svnlook 會看 locale(1) 的設定,所以在 post-commit 裡先用 export LANG=\"en_US.UTF-8\" (sh/bash) 或是 setenv LANG en_US.UTF-8 (csh/tcsh) 將 locale 設為 UTF-8,再使用 commit-email.pl 送信就沒問題了。", + "title": "Subversion UTF-8 commit log" + }, + { + "id": "1501", + "body": "Zend Framework 1.5.2 正式釋出了,由於 Zend_Form 是 1.5 才納入,所以 1.5 有很多 bug 是在修正 Zend_Form。\r\n\r\n像是「很多地雷的 Zend_Form...」中提到的 setRequired() 問題在「value \"0\" is treated as empty」被解掉了。\r\n\r\n1.5.2 修正的問題,以及改善的地方,可以在「Issue Navigator — Fixed in 1.5.2」這頁看到。\r\n\r\n這幾天發現沒有 Zend_Form_Element_File,查了一些討論發現發展團隊似乎要等 Zend_Upload 的架構先出現才要實做 Zend_Form_Element_File,看起來這幾個月內是沒這東西了,先自己寫一個會動的版本... @_@", + "title": "Zend Framework 1.5.2" + }, + { + "id": "1502", + "body": "YouTomb,是 MIT Free Culture 所架設的服務,蒐集 YouTube 上因為版權侵權而被下架的影片。\r\n\r\n看完這個網站做的事情後,第一個反應式「這個名字取的真機車」,第二個反應是「這不會被 DMCA 幹掉嗎」。但翻了一下,發現網站的 source code 有以 AGPLv3 釋出,擺明就是「如果我們被抄了,其他人趕快拿 source code 去 clone 一個」XD\r\n\r\n在狀態頁還有相當完整的統計,會指出哪些版權擁有團體下架的最多... 第一名居然是 TV TOKYO Corporation,我本來以為會是美國公司...\r\n\r\nPS:會寫在 Blog 上的原因是因為 twitter 爛掉了,不然我只打算丟幾句話在 twitter 上的... :/", + "title": "YouTomb:被 YouTube 下架的影片" + }, + { + "id": "1503", + "body": "同上篇文章,因為 twitter 連不上,所以只好寫成 Blog 胡言亂語...\r\n\r\n昨天 jserv 講了「我愛 Git」,在台下聽的時候順便試 git-svn (或 git svn) 的操作,發現效能比 SVK 好許多,而我想要的功能在 Git 上面也都有了,那麼... 也沒什麼好說了,先把手上幾個工作目錄換成 Git :p\r\n\r\n回到家把雜事處理完後 (主要是玩 Gladiatus?),打開 Bloglines 消化一整天沒讀的 feed,發現 Google 也發了一篇「Develop with Git on a Google Code Project」跟 jserv 的主題還蠻有關係的。\r\n\r\n雖然 Google Code 使用 Subversion,但仍然可以透過 Git 操作,操作的方式在 Google 的文章裡寫的很清楚了。如果對於 Git 不熟的人,我建議先看「git-svn」這篇中文的 blog 文章,裡面的例子直接照做就會動。\r\n\r\n今天上班的時候再測試看看 performance,把 Zend Framework 1.5.2 整包塞進去會花多久 :p", + "title": "Git 與 Subversion 的結合" + }, + { + "id": "1504", + "body": "Unbound 是一個 DNS resolver (接受 recursive query 的 DNS server),最近出了 1.0.0 版,在 Slashdot 上被提出來:Open Source BIND Alternative Launches。\r\n\r\n首先是軟體授權條款,Unbound 與 BIND 都是 open source project,BIND 是 ISC license,Unbound 是 BSD license,兩種授權都很簡短,而且也很清楚。\r\n\r\n設定上,BIND 需要設定才能處理 recursive query,雖然很簡單 (設定 allow-recursive 這個參數),但相較於 Unbound 預設值就會動 (unbound.conf.sample 直接拿來用) 就有點不太爽 :p\r\n\r\n穩定度的部份,在 Slashdot 上的文章有人提到用 BIND 當 resolver 不太穩定,這點我自己用偶而也會遇到 (對 recursive query 沒有回應)。趁 Unbound 1.0.0 有人推薦的時候決定拿幾台純 resolver 的伺服器試看看...\r\n\r\n在 FreeBSD 上安裝的時候有看到 Libevent 的選項可以選,不是很確定他拿 Libevent 做什麼用途。\r\n\r\n目前裝起來後用起來都還蠻正常的,觀察一陣子看看。", + "title": "Unbound" + }, + { + "id": "1505", + "body": "最近在翻一些 Greasemonkey script 的時候翻到 Firefox 上可以使用 document.evaluate(),才發現之前用 jQuery 做這種小事情很不划算...\r\n\r\n在 Firefox 上可以透過 document.evaluate()XPath 條件式找出符合的元素。利用這個功能取代本來用 jQuery $('.className') 還蠻容易的,等有力氣的時候來改寫 album expander... :p", + "title": "document.evaluate()" + }, + { + "id": "1506", + "body": "在 Gogle AJAX Search API BlogGoogle 公告了他們將會 hosting 幾個常用的 javascript library 讓人使用:Speed up access to your favorite frameworks via the AJAX Libraries API。\r\n\r\n最簡單的方法就是把本來的程式碼:\r\n
<script type=\"text/javascript\" src=\"http://static.example.com/jquery-1.2.6.min.js\"></script>
\r\n改成 Google 提供的位置:\r\n
<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js\"></script>
\r\n剛剛先把無名的 album expanderPIXNET 的 album expander 所使用的 jQuery 都更新改用 Google 提供的 hosting。", + "title": "Google 提供 Javascript Library Hosting" + }, + { + "id": "1507", + "body": "在 ReadWriteWeb 的訪談中跟 Google App Engine 的 Product Manager 談到收費的金額:Google App Engine Announces Pricing Plan, APIs, Open Access。\r\n\r\nUpdateGoogle 正式的新聞稿也可以在網站上看到了:Google App Engine to Announce Open Sign-ups, Pricing Plans, and New APIs at Google I/O。\r\n\r\n頻寬的費用與 Amazon Web Service 差不多,儲存空間的部份跟 Amazon S3 比起來也差不多,CPU 暫時沒有想到要怎麼比較。\r\n\r\n除了收費的事情之外,文章裡有提到會多兩組功能,一組是對圖片的處理:目前不清楚 Google 是不是自己有另外開發,不過在自己建置的環境裡常用 GDImageMagick 處理。另外一組功能是 cache,讓你可以把算好的資料存起來重複使用。\r\n\r\n再來是大家一直都很希望 Google App Engine 可以支援 Python 以外的語言,不過照文章裡的說法,目前暫時沒有計畫。\r\n\r\n以後應該有 Blog software 會 porting 到 Google App Engine 的環境上,以這種用多少算多少的方式,之後可以考慮把整個站搬到上面?", + "title": "Google App Engine 的收費,以及功能的加強" + }, + { + "id": "1508", + "body": "因為 Twitter 爛太久了,所以搬到被 Google 買下的 Jaiku... (關於 Jaiku 可以參考這篇:[網站] 青出於藍而勝於藍 - Jaiku)\r\n\r\n另外,Jaiku 目前正搬移到自家的 Google App Engine 上,如果 Twitter 再不趕快修好就沒機會了:Wroom - we’re moving to Google App Engine。\r\n\r\nUpdate:才剛搬過去就看到這個... XD\r\n\r\n\"\"", + "title": "從 Twitter 換到 Jaiku" + }, + { + "id": "1509", + "body": "收到 Layeredtech 通知要漲價的信,有一台是年繳所以暫時不受影響 (也就是 blog 這台),但另外一台從 $124.20/month 漲到 $149.96/month,大約兩成的漲幅,算過之後決定把上面的服務搬出 Layeredtech,也許是該嚐試其他家了 :p", + "title": "Layeredtech 漲價" + }, + { + "id": "1510", + "body": "以往 MySQL + memcached 的作法是由 application 端「拉」資料後再塞到 memcached 上,這會產生幾個問題:\r\n\r\n這兩個問題都有在 MySQL UDF + memcached 出來之前都有解法:前者可以在更新 MySQL 時順便更新 memcached 裡的資料;後者可以靠 memcached lock 的技巧避免突然有大量 Query 造成後端 MySQL 負荷過重。這兩個方法需要 application (client) 配合,不是很完美,但在實際應用上還算堪用。(一個很簡單的場景:如果公司內同時使用 PHPPerl,那麼就必須維護這兩個 library)\r\n\r\n除了 client 自己推資料到 memcached 上,也有人研究,當 MySQL 上的資料更新時,由 MySQL server 自動到 memcached 上更新資料,也就是把資料「推」到 memcached 上的方法。資料更新時的觸發動作可以用 MySQL Trigger 做到,而寫入到 memcached 的部份透過強者的 libmemcached 處理:Memcached Functions for MySQL。\r\n\r\nbtw,Jan Kneschke 也用 libmemcache 寫過類似的東西:UDF_LUA 這篇的下方 (「MySQL and memcached」的部份)", + "title": "MySQL UDF (User-defined function) 與 memcached" + }, + { + "id": "1511", + "body": "這兩天在 #bsdchat 上有人提到目前 FreeBSD -src tree 準備要換到 Subversion 上。剛剛在 mailing list 上看到第一個轉換過去的 commit log:cvs commit: src/games/fortune/datfiles freebsd-tips。(被 rafan 指正,這不是第一個,第一個是「cvs commit: src/usr.sbin/sicontrol sicontrol.c」)\r\n\r\n在 Remko Lodder 的 blog 上也有提到這件事情 (他就是上面那個 commit log 裡的 remko):CVS is Dead -- Long Live Subversion。\r\n\r\n目前是透過 hook,把 Subversion 變更的內容同步到 CVS 上,然後把 CVS 上的整套工具慢慢換過去。目前的 Subversion Server 是 svn.freebsd.org,看起來還在建制中...\r\n\r\nUpdateFreeBSD 官方公告了這個消息。", + "title": "FreeBSD src 部份由 CVS 轉換到 Subversion" + }, + { + "id": "1512", + "body": "在 TechCrunch 上看到他們把本來使用 Akismet 的 Plugin 換成 TypePad 提供的 TypePad AntiSpam,然後發現效果不錯:TypePad AntiSpam, A New Open Source Comment Spam Fighter。\r\n\r\nTypePad AntiSpam 使用的 API 與 Akismet 一樣,所以,library 本身如果有可以設定 API url 的地方,就可以直接換到 TypePad AntiSpam,像是 CPANNet-Akismet。\r\n\r\n不過我自己還是用 Spam Karma 好了 :p", + "title": "TypePad AntiSpam" + }, + { + "id": "1513", + "body": "Mark Pilgrim 寫過不少文章以及書籍,常以 \"Dive into ...\" 作為名稱,像是 Dive into AccessibilityDive Into PythonDive into Greasemonkey,他現在人在 Google。\r\n\r\n剛剛在他的 blog 上看到他把 hash function 用在很特殊的地方,他把預測美國總統大選的文字先丟進 hash function,然後把 hash value 貼上來,等時間到了後再公開,然後鼓勵其他人也把預測的文字丟進 hash function,然後貼到他的 comment (或是 trackback 到他的 blog 上):Geeky U.S. election predictions。\r\n\r\n非常有趣的應用,不過很有 geek 的風格... XD", + "title": "Hash 用在..." + }, + { + "id": "1514", + "body": "公告在這邊:SSL Certificate Renewal for Project Hosting on Google Code。\r\n\r\n主要是 svn 會發現 ssl certificate 改變而跳出警告,所以特地公告出來。\r\n\r\n另外,我發現 gitSubversion Repository 還是有不少問題,像是 branch 出來後修改,再 merge 回 master 後,再 git-svn dcommit 上去後可能會有問題。而 git-svn 的 manpage 裡就直接建議在開發時儘量保持 linear... XD\r\n\r\n就是要 branch 才好用啊啊啊啊啊...\r\n\r\n所以我有一些比較小的 project 又改回 svn client 了...", + "title": "Google Code 更新 SSL Certificate" + }, + { + "id": "1517", + "body": "有一篇文章一直發不出去,寫一篇新的空文章測試看看會不會動 o_O", + "title": "測試新文章..." + }, + { + "id": "1518", + "body": "far 買了一顆 Mtron SSD 硬碟 (Mobi 1000、2.5 PATA ZIF 介面),然後 ronnywang 把他包成這樣:\r\n\r\n\"\"\r\n\r\nronnywang 幹的好!", + "title": "Mtron SSD 硬碟..." + }, + { + "id": "1519", + "body": "一隻新的惡意程式利用 RSA 1024 bits 把文件加密後留下勒索 e-mail 位置要求付「贖金」。\r\n\r\n這不是什麼新的新聞 (以前就有過用 660 bits 加密的事情),這次的重點在於 Kaspersky 尋求分散式運算,直接破這次加密所使用的 RSA 1024 bits:Kaspersky Lab announces the launch of Stop Gpcode, an international initiative against the blackmailer virus。\r\n\r\n目前對 RSA key 最好的分解演算法是 GNFS (因為函式庫在產生金鑰時會避開 SNFS 可以分解的數字),但目前 GNFS 最好的紀錄是 2005 年解開的 RSA-200,金鑰的長度約 663bits,使用的 CPU time 約單台 Opteron 2.2Ghz 七十五年的時間。(關於紀錄的部份,可以參考 Integer factorization records 這篇)\r\n\r\n如果這次打算用 GNFS,那麼即使全世界的電腦大規模的參與,也不太可能在一兩年內解出來。\r\n\r\n另外一個 Slashdot 也有提到的問題 (Using Distributed Computing To Thwart Ransomware),如果今天寫這隻惡意程式的人不是為了錢,而故意拿 SSL Root Certificated Key 來加密,今天還是要試著去破嗎?\r\n\r\n把被加密過的檔案當作被刪除損毀處理,也許是比較好的方法...。", + "title": "GPcode" + }, + { + "id": "1520", + "body": "無名小站Wretch Album Expander 一直跑的很好,但是我們家的 PIXNET Album Expander 在使用者自訂 CSS 時對 height/width 標 !important 就會爛掉...\r\n\r\n今天花了時間去找,終於找到解法了:用 style.setProperty 蓋過去。在 Source for \"PIXNET Album Expander\" 這邊的程式碼裡面這樣寫:\r\n
this.style.setProperty('height', 'auto', 'important');\r\nthis.style.setProperty('width', 'auto', 'important');
\r\n改好的版本已經放到 Userscripts 上了:http://userscripts.org/scripts/show/24589,效果可以參考 GINOLA's Football Pics 這本相本。", + "title": "Javascript 對於 !important 的處理" + }, + { + "id": "1521", + "body": "Jeremy ZawodnyYahoo! 最知名的 blogger 要離開 Yahoo! 了:Leaving Yahoo!。\r\n\r\nRef:Leeym 寫的 人員流動。\r\n\r\nUpdate:Jeremy Zawodny 加入 cragigslistI'm Joining Craigslist in July。", + "title": "Jeremy Zawodny 將離開 Yahoo!" + }, + { + "id": "1522", + "body": "「China Says It Lacks Skills To Hack US Systems」\r\n\r\n我看到 Slashdot 這個標題時,第一個想到的翻譯...", + "title": "「你們對我有很深的誤解」" + }, + { + "id": "1523", + "body": "FFmpeg 這套影音轉檔程式跟幾年前的 Debian 一樣,有一個 stable 版,但是大家都去抓 Subversion Repository XD (因為 stable 版實在太舊了...)\r\n\r\nFreeBSD ports 裡有一個 2007/10/04 的版本,不過這個版本從以前就寫的很亂,後面維護的人改起來一直很辛苦... 所以想要客製化的人通常會選擇重作 XD 所以我當初弄了一個版本給 PIXNET 用,也差不多是 2007/10 包的,在 blog 上也有提過:ffmpeg (全包在一起)。\r\n\r\n由於這半年多 FFmpeg 改了不少東西,所以差不多是重包一個新版看看有沒有把之前遇到的問題解決:ffmpeg-2008.06.14.13767.shar,這個版本是 Subversion Repository 上抓下來的,checkout 的時間點是 2008/06/14 r13767。\r\n\r\n理論上在 FreeBSD 上把 shar 檔抓下來後丟到 /tmp 下跑 sh ffmpeg-2008.06.14.13767.shar,會產生一個 ffmpeg 的目錄,到裡面 make clean install clean 就可以了。\r\n\r\n因為新的 FFmpeg 有支援 Dirac,所以我送了 Schrodinger 這個 port:ports/124575: [NEW PORT] multimedia/schroedinger: High-speed Dirac codec如果這幾天要裝 FFmpeg 的人請先手動安裝這個 port... (lwhsu 把 Schrodinger 送進 ports,不需要自己安裝了)", + "title": "FFmpeg 的 FreeBSD ports" + }, + { + "id": "1524", + "body": "接下來的幾個禮拜應該都是跟 PHPMySQLjQuery 戰鬥了...\r\n\r\nPS:說到 MySQL,最近看到的 MySQL Workbench Community 版還蠻好用的,有興趣的人可以下去玩看看 :p", + "title": "進入修羅場狀態..." + }, + { + "id": "1526", + "body": "兩件不小的事情:\r\n\r\n關於 MySQL 的部份,有人有寫 step by step 形式的文章,教你取得 MySQL source:From Bazaar to Sandbox in 5 moves。", + "title": "版本控制..." + }, + { + "id": "1527", + "body": "在 Simon Willison 的 blog 上看到 Ruby 發出安全性問題警告:Arbitrary code execution vulnerabilities。\r\n\r\npatch 的內容可以在 Updates on Drew Yao’s Terrible Ruby Vulnerabilities 這篇看到,已知是 DoS 型態,但可能可以遠端注入程式碼執行,看起來就很刺激... orz", + "title": "Ruby 安全性問題警告" + }, + { + "id": "1528", + "body": "要推翻專利 (使得專利無效) 可以用 Prior art (現有技術) 證明在該項專利申請前,專利的內容就已經為人所知。\r\n\r\n趨勢科技 在 1995/09/26 申請了一項專利 (Patent 5623600),描述在 SMTP Gateway 以及 FTP Gateway 上掃描病毒。在今年年初的時候控告 Barracuda 在產品裡使用的 ClamAV 侵犯了該項專利。\r\n\r\n由於 SpamAssassinamavisd-new 都使用了類似的技術,趨勢控告 Barracuda 這件事情在國外的開源社群中有很大的反彈聲浪,畢竟沒人能保證下一個被告的不是 SpamAssassin/amavisd-new。\r\n\r\n剛剛在 Slashdot 上看到有個人說他以前在的公司 (在瑞典) 早在 1995 一月就已經推出過類似的產品,有大約上萬的客戶安裝過這向產品,並且打算以此提出 Prior art 推翻 Patent 5623600:Prior Art In Barracuda-Trend Micro Lawsuit。\r\n\r\n令人振奮的好消息啊...", + "title": "關於趨勢科技的 Prior Art" + }, + { + "id": "1529", + "body": "交大北區凌晨 00:00 ~ 06:00 斷電,結果斷電後國內是通的,但國際電路卻不通... (印象中這些 router 都是放在一起的,不知道哪裡出問題) 看了一些 server,發現有些 server 有開起來,但有很多 server 沒有開起來,DNS 只有 140.113.6.2 起來,另外兩台 (140.113.1.1 與 140.113.250.135) 都沒起來。另外,Group.NCTU.edu.tw 沒開起來,也許等早上再看看情況吧。\r\n\r\n印象中很久沒斷這麼久... (尤其是 DNS,通常不會擺爛到早上再處理)", + "title": "交大斷網" + }, + { + "id": "1530", + "body": "剛剛連不上的畫面:\r\n\r\n\"\"\r\n\r\n下面是以前的水管工 :p\r\n\r\n\"\"\r\n\r\nUpdate:恢復後一堆未讀...", + "title": "Bloglines 水管工不見了..." + }, + { + "id": "1531", + "body": "Using jQuery in Greasemonkey (with Google AJAX Libraries):\r\n
(function(){\r\n    function myjob()\r\n    {\r\n        // your code...\r\n    }\r\n\r\n    GM_xmlhttpRequest({\r\n        method: 'GET',\r\n        url: 'http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js',\r\n        onload: function(r){ eval(r.responseText); myjob(); }\r\n        });\r\n})();
", + "title": "Using jQuery in Greasemonkey" + }, + { + "id": "1532", + "body": "昨天晚上幫「測試」網站,發現速度卡在 MySQL 的 CPU bound,先用 httperf 丟在背景跑,再用 mytop 抓幾個比較明顯的 slow query,補了幾刀 INDEX 後,速度快了不少,不過還是不太滿意。\r\n\r\n印象中 MySQL 除了可以紀錄 slow query 外,還可以紀錄沒用到 INDEX 的 SQL query,花了不少時間才找到。這些指令是可以線上改,不需要重開 (如果你堅持要改設定檔重開也 ok),不過請不要在 production 的機器上開,以免 SQL query 寫的很爛,產生大量的 log:\r\n
mysql> SET GLOBAL log_queries_not_using_indexes = 1;\r\nQuery OK, 0 rows affected (0.00 sec)\r\nmysql> SET GLOBAL slow_query_log = 1;\r\nQuery OK, 0 rows affected (0.00 sec)
\r\n參考:The Slow Query Log。\r\n\r\nPS:這只是告訴你問題在哪裡,而非解決的方法。要知道為什麼會慢,你需要讀不少資料,像是 High Performance MySQL 這類的書籍,以及網路上 MySQL 資料庫長輩們的討論。\r\n\r\nUpdate:翻到 Arjen's Journal - Finding useless indexes 這篇,可以檢查過度 index 時造成效能降低的問題 :p", + "title": "MySQL 調整" + }, + { + "id": "1533", + "body": "在 Bringing up the baby 看到 MySQL Maria 把 feature 都實做出來,開始要針對 bug 修正的階段了。\r\n\r\nMaria 是 MySQLMyISAM 為基礎所改良的的 storage engine。對於 Web 服務的使用者來說,與 MyISAM 最主要的差異在於 crash-safe,以及簡單的 transaction。\r\n\r\n等暑假的時候再來玩看看...", + "title": "MySQL Maria" + }, + { + "id": "1534", + "body": "今天去買了「養樂多可樂」來喝 XD 是還蠻好喝的啦,但是我不會再買第二次 XD\r\n\r\nPS:照片晚點再找上來...\r\n\r\nUpdate:照片請參考「三個老闆的飲料」這篇,我跟 far 都喝養樂多可樂 (其中右邊那杯故意寫「布丁可樂」,其實是一樣的東西 XD)。", + "title": "養樂多可樂 (多多可樂)" + }, + { + "id": "1535", + "body": "在 XDite 這篇 [Rails] The Better Way To Do Random 所提到 Jan Kneschke 的「ORDER BY RAND()」這篇文章裡為了找到 ORDER BY RAND() 的替代方案,花了不少功夫解釋。\r\n\r\n(PS:我跟 XDite 同屬 PIXNET 的一員,其中本篇文章所提到的 VeryXD 主機目前也放在 PIXNET 的機房裡)\r\n\r\n最原始的想法是:\r\n
SELECT MAX(id) FROM table;\r\n### 在 application 取一個 1 到 id 中間的值\r\nSELECT * FROM table WHERE id = ...;
\r\n但這篇文章要探討的是如何在 MySQL 裡全部做完,所以重點放在如何在 MySQL 裡取得 randid。\r\n\r\n首先是透過 RAND() 幫忙:\r\n
SELECT RAND() * MAX(id) FROM random;
\r\n然後發現有小數點,所以用 CEIL() 變成:\r\n
SELECT CEIL(RAND() * MAX(id)) FROM random;
\r\n但這個 SQL query 效率不太好:如果有 1M rows,就會跑了 1M 次。所以利用 subquery 改寫成:\r\n
SELECT CEIL(RAND() * (SELECT MAX(id) FROM random));
\r\n用 EXPLAIN 檢查看起來不錯,所以包成 subquery 拉出隨機選出的 row:\r\n
SELECT name FROM random WHERE id = (SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)));
\r\n結果發現速度不佳,用 EXPLAIN 檢查發現是因為 subquery optimization 被取消。所以改用其他的方法,像是利用 temporily table 與 JOIN:\r\n
SELECT name FROM random JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 USING(id);
\r\n速度沒什麼問題,用 EXPLAIN 檢查看起來也都 ok 了,所以我們要處理 id 不連續的情況,也就是有「洞」的狀態,所以取比這個 randid 大的第一個 row:\r\n
SELECT name FROM random AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 1;
\r\n至於更後面為了要做到在 non-uniform distribution 下的 ORDER BY RAND() 效果所花的功夫太大 (像是透過 trigger 產生某個 uniform 欄位,然後就可以用那個欄位用上面的方法處理),一般人應該用不到。需要的人就麻煩自己去看了 :p", + "title": "MySQL 的 ORDER BY RAND() 的替代方案" + }, + { + "id": "1537", + "body": "這幾天跟 Firefox 有關的事情不少:\r\n", + "title": "Firefox 的兩三事..." + }, + { + "id": "1538", + "body": "這幾天的 Bloglines 怪怪的,像是自己會登出 (看起來後面某台伺服器的 session 有問題),有時候會出現 500 Internal Server Error,以及偶而會出現 200 條未讀 (但 refresh 後就好了)。\r\n\r\n趁著這次不穩定再次跳槽到 Google Reader,發現又跟印象中的不一樣了,希望這次能用的比較順手...", + "title": "再次換到 Google Reader..." + }, + { + "id": "1539", + "body": "jQuery UI (我用的是 jQuery 1.2.6 + jQuery UI 1.5.1) 裡有一個 Sortables,實際用了後發現本來上面的 click 事件會失效,這點在國外也有討論到:JQuery sortable & click event are mutually exclusive。\r\n\r\n看起來是因為 jQuery UI Sortables 裡對 click 處理的方式會造成現有的 click event 失效,似乎沒有辦法直接從 source 部份解決,所以有人提出 workaround。\r\n\r\nworkaround 是多包一個 span,然後設定 handle 指到這個 span 上,告訴 jQuery UI Sortables 有哪些可以被拖拉,這樣 click 事件就會分開處理,於是就可以動了...\r\n\r\n舉個例子來說,本來是:\r\n
$('.sortables').sortable({items: '.items'});
\r\n現在變成:\r\n
$('.sortables').sortable({handle: '.items > span', items: '.items'});
\r\n不是很讓人滿意的作法,但可以解決問題。", + "title": "jQuery UI 的 Sortables 與 Click 事件犯衝的解法..." + }, + { + "id": "1540", + "body": "幾天前 Slashdot 上報導了 DNS 實做上的問題,影響的範圍非常大:Massive, Coordinated Patch To the DNS Released。\r\n\r\n各家 DNS software 都放出 patch 了,手上有 DNS server 的請儘速更新 :p", + "title": "DNS 伺服器安全性更新" + }, + { + "id": "1541", + "body": "命名是最近寫 code 最常遇到的問題之一 XD\r\n\r\n跑步王丟出了「軟體業的重要職缺 命理大師!」這篇,可以去看看 XD", + "title": "命理大師" + }, + { + "id": "1542", + "body": "MySQL 5.1.26-rc 放出來了:MySQL 5.1.26-rc has been released。這個版本會是 5.1 最後一個 RC (Release Candicate),下一個就會是 Production Ready (GA) 的版本了。\r\n\r\n不過 Paul McCullagh (PBXT 的開發者) 寫了一篇「Mutex contention and other bottlenecks in MySQL」,裡面發現他已經把 PBXT 改到本身已經不是瓶頸,所以反過來開始看 MySQL 的問題...\r\n\r\n裡面有很多很有趣的惡搞 (像是他覺得,如果在他的環境裡如果拿掉某些 POSIX mutex lock 不會遇到問題,他就先拔掉 lock 然後看效能可以提昇多少,如果不能拿掉,他就用自己改寫的 spinlock 或是其他方式替代),除此之外,文章裡還有一些數據可以看,可以看出他一步一步改善所走過的路,以及還有哪些地方值得改善。\r\n\r\n最後改出來的成果相當輝煌,改到有 60% 的時間會因為在等網路另一邊的 query 進來。\r\n\r\n在 comment 有人有提到可以用 --with-fast-mutexes,會把 POSIX mutex lock 換成 spinlock,不知道效果怎麼樣... (我發現 FreeBSD Ports 裡的版本沒有支援這個選項,我送了個 PR,用 Ports 的人可以更方便的設定這個選項:ports/125616: Add --with-fast-mutexes to databases/mysql51-server)", + "title": "MySQL 5.1.26" + }, + { + "id": "1544", + "body": "Google 拿美國總統大選的影片,透過語音辨識轉成文字後讓大家搜尋:Google Lets You Search for Text in Some Videos。\r\n\r\n如同 Philipp Lenssen 所說的,如果 Google 把這個技術推廣到所有的影片上,就有很多可行性可以做,像是與 Google AdSense 的配合、與 Google Search Quality 的配合。\r\n\r\n比起直接對影像處理,對聲音處理似乎是條可以走的路... (就目前的語音辨識)", + "title": "Google Video Search 的發展" + }, + { + "id": "1550", + "body": "「ports/125616: Add --with-fast-mutexes to databases/mysql51-server」這個 PR 中所提到的 --with-fast-mutex 在 ale@ commit 後,他也順便問是否有變快 (或是變慢)。我回了他一封信,MyISAM 在十個 clients 的模擬測試下有快一些,大約 6%。\r\n\r\n不過這是 Super Smack 測試的結果,如果沒有其他比較好的工具,拿來當參考還可以,把結果當作事實就有點偏頗了。我打算複製一份 real data 到其他空機器上,再測試一次看看。\r\n\r\n下面這是 Super Smack 測試的結果,最後面的單位是 qps,愈高愈好。\r\n
(without fast mutexes)\r\n$ repeat 10 super-smack -D/tmp \\\r\n  /usr/local/share/super-smack/select-key.smack \\\r\n  10 2000 | grep ...\r\nselect_index    40000   0       0       56503.40\r\nselect_index    40000   0       0       55638.24\r\nselect_index    40000   0       0       55750.29\r\nselect_index    40000   0       0       56229.37\r\nselect_index    40000   0       0       55770.81\r\nselect_index    40000   0       0       56083.44\r\nselect_index    40000   0       0       56411.05\r\nselect_index    40000   1       0       55156.36\r\nselect_index    40000   0       0       56268.21\r\nselect_index    40000   0       0       55059.18\r\n\r\n(with fast mutexes)\r\n$ repeat 10 super-smack -D/tmp \\\r\n  /usr/local/share/super-smack/select-key.smack \\\r\n  10 2000 | grep ...\r\nselect_index    40000   0       0       59652.25\r\nselect_index    40000   0       0       58040.66\r\nselect_index    40000   0       0       57937.60\r\nselect_index    40000   0       0       58511.95\r\nselect_index    40000   0       0       57319.65\r\nselect_index    40000   0       0       58308.02\r\nselect_index    40000   0       0       58514.35\r\nselect_index    40000   0       0       58493.64\r\nselect_index    40000   0       0       57937.01\r\nselect_index    40000   0       0       59348.24\r\n\r\nThe first one is 55887 qps (avg), the second one is 58406.3 qps.
", + "title": "關於 MySQL 的 --with-fast-mutexes" + }, + { + "id": "1557", + "body": "剛剛從「php: rfc: closures」這篇看到 PHP 5.3 將會有 Lambda Function 與 Closure 可以用:Request for Comments: Lambda functions and closures。\r\n\r\n寫習慣 Perlsort {...} keys %hash; 這類 code 後,在 PHP 裡面一直覺得很彆腳,有 Lambda Function 與 Closure 後可以解決不少問題...", + "title": "PHP 5.3 將會有 Lambda Function 與 Closure" + }, + { + "id": "1559", + "body": "可能是 bug...\r\n\r\n\"\"", + "title": "Firefox 下載時的資訊..." + }, + { + "id": "1561", + "body": "WordPress 有自己的輸出格式可以當作備份檔使用,但輸出的檔案並不是正確的 XML,要做很多處理。\r\n\r\n把這三件事情處理完後似乎可以解決 WordPress 輸出的 Extended RSS 不合法的問題,用 PHP DOM 也不會跳錯誤訊息了。\r\n\r\n其中第三個很明顯是 bug,晚點確認是 WordPress 問題並生出 patch 後得去開 ticket 修正。第二個也很嚴重,但是這個問題已經有人提出來,一直沒解:「Wordpress Import Fix for Post Excerpts」,得去 ticket system 上檢查是不是有被提出來討論過。", + "title": "WordPress 輸出 Extended RSS (Export) 時的問題" + }, + { + "id": "1568", + "body": "Python 是第一個可以在 Google App Engine (GAE) 上執行的程式語言,而下一個很有可能是 Perl。\r\n\r\nBrad Fitzpatrick 在他的 Blog 上說,他被 GAE team 允許對外公佈「我可以使用 20% 的時間開發 Perl on GAE」:Perl on App Engine。\r\n\r\n這是 GAE 支援其他程式語言的消息中,第一個被正式公開的。在 Brad Fitzpatrick 的文章裡面有一些藍圖,關於他大概會怎麼做的想法。我們應該可以期待他認真起來的戰鬥力 :p\r\n\r\nPS:Brad Fitzpatrick 是 LiveJournal 的創辦人、memcached 的作者、OpenID 的制定人。", + "title": "Perl on Google App Engine" + }, + { + "id": "1573", + "body": "剛剛翻了一下 TWNIC 的資料發現 HiNet 今年對美國的頻寬加的非常快,第一季 34Gbps,第二季 47Gbps,第三季 57Gbps,不過據說之前是「加了一條就滿一條」,不知道這幾次一直補到底夠不夠用 XD\r\n\r\n另外也看得出幾個 ISP 快做不下去了... 頻寬一直減少。", + "title": "頻寬" + }, + { + "id": "1575", + "body": "年初的時候 MySQL 6.0 把 libevent 匯入 source tree 裡,用 libevent 處理 connection pooling (之前似乎是 poll?)。\r\n\r\nFreeBSD 剛把 MySQL 6.0 納入 ports 裡 (databases/mysql60-server),可以用 WITH_THREAD_POOL=yes 把這個功能打開。\r\n\r\n理論上,使用 libevent 後在 Web 端用 persistent connect 連 MySQL 應該不會影響到效能。\r\n\r\n附上年初時看到的資料:MySQL 6.0, Libevent。", + "title": "FreeBSD 上的 MySQL 6.0" + }, + { + "id": "1577", + "body": "SimpleCDN 是最近看到的一個 service,就實際的情況看起來,他不是真正的 CDN,不過他的價位還算 okay,而且有免費的 15 credits (也就是 USD$15) 可以玩。\r\n\r\nSimpleCDN 主要有三種模式,第一種是 Pay Per File,也就是對檔案付一次費用就可以一直下載。第二種是第一種的加強,強調會自動處理抓取檔案並收取費用。第三種是 Reverse Proxy 模式,收費是 0.07 credits/GB。\r\n\r\n第三種模式跟 GigaWebAMP 其實很接近,不過 SimpleCDN 的好處在於依照使用的量計費,不像 WebAMP 是每天有固定的量可以讓你用。速度上,從 HiNet 過去幾乎都是透過 PAIXHE 進去,速度還不錯。\r\n\r\n不過缺點是價錢比 WebAMP 貴,另外因為要走國際線路,連線速度會比 WebAMP 慢。(不過... 這倒未必 XD)\r\n\r\n另外一個不會使用 SimpleCDN 的考量是 Pay Per File 的部份,我覺得這個模式天生就做不起來啊...", + "title": "SimpleCDN" + }, + { + "id": "1579", + "body": "Update:這個站倒了 XD 只剩下 screenshot 可以看了...\r\n\r\n這個實在太讚了 XD\r\n\r\n從 Google Blogoscoped 看到「Yuil」這篇,有人用 Google App Engine,拿 Yahoo! Search BOSS 的結果,與 Cuil 的介面的 Mashup !!!\r\n\r\n我覺得搜尋的結果比 Cuil 準多了啊 XD\r\n\r\n\"\"", + "title": "Yuil" + }, + { + "id": "1582", + "body": "Del.icio.us 整個介面大升級 (據官方的說法,底層的程式也大翻修過),換到 Delicious。\r\n\r\n換過去後我第一個找的是 Javascript Bookmarklet,要把舊的換掉,找了許久還是找不到,最後在 Help 裡面找到 (其他頁沒有連結進去):Install Bookmarklets on Delicious。", + "title": "Del.icio.us to Delicious" + }, + { + "id": "1584", + "body": "目前原因不明,有可能是國外發現怎麼打在 L4 switch 後面的 DNS server 達到 DNS poison 的效果,也有可能是升級造成的問題,總之目前有很高的 packet lost:\r\n\r\n168.95.1.1:\r\n\"\"\r\n\r\n168.95.192.1:\r\n\"\"\r\n\r\n168.95.192.2:\r\n\"\"", + "title": "HiNet DNS 出問題" + }, + { + "id": "1588", + "body": "Update:這個隱私問題在 2010 年就有被修正,請參考「關於 CSS 中 :visited 的隱私問題」的說明。\r\n\r\n雖然很早前就知道 CSS link 可以這樣做,不過實做起來就真的感覺到很邪惡了,既然被 full disclosure,這陣子應該會引起更熱烈的討論:Guessing gender from browser history。\r\n\r\n首先請先參考 pesty 這篇「網路廣告商怎麼知道你是誰? 從 ClickStream 來判斷用戶資料」,裡面有提到利用 cookie 資訊去猜測目前這個 user 的性別。首先先知道這個使用者逛過哪些網站,然後再用統計方法算出來。\r\n\r\n以往廣告商要判斷使用者逛過哪些網站,僅限於自己旗下的網站。舉例來說,很多網站有放 DoubleClick 的廣告,那麼 DoubleClick 就可以利用 IP 資訊、Cookie 資訊、User-Agent 之類的資訊來判斷哪些 request 是同一個使用者,所以 DoubleClick 就可以判斷出這個使用者有上過他旗下哪些網站。\r\n\r\n但利用 CSS 隱私漏洞,如果想要知道某個使用者是不是上過某個特定 URL 是可行的。簡單的解釋是:插入一個 link,然後對這個 link 做 CSS 效果,對於瀏覽過的 link (也就是 a:visited) 使他顯示的顏色不同,然後再用 Javascript 去讀顏色,就可以得知使用者是否有上過這個網站。很邪惡,方法也已經有一陣子了 (像是 SocialHistory.js 這種工具),不過大家一直想不出好的解法,於是就一直爛下去...\r\n\r\n這個 CSS hack 加上統計分析,可以分析出年齡範圍、性別、興趣,非常邪惡 -_-", + "title": "利用 CSS 產生的隱私問題" + }, + { + "id": "1591", + "body": "2008/08/07 出的 PHP 4.4.9 released! 會是 PHP 4 最後一個版本,不再有任何更新 (即使有安全漏洞,也不會有安全性更新)。這次的 PHP 4 ChangeLog 也很短,除了把 PCRE 版本升級到 7.7 以外,其他都是 bug 的修正。\r\n\r\n官方目前唯一維護的版本是 PHP 5,更細的說是 5.2.x 版,目前大多數的 PHP 軟體 (還活著的 Open Source Project) 應該都可以在上面跑。\r\n\r\n另外一個重點是 PHP 5.3 在 2008/08/01 的時候出了第一個 alpha 版,這個版本比 PHP 5.2 多了 namespace、lambda function,另外有 phar (應該是藉由 namespace 的幫忙而實做出來)。除了這些功能外,cyclic garbage collection 也是一項很重要的功能:以前如果遇到 cyclic reference 得自己用 unset() 確保 PHP 能夠回收,在 PHP 5.3 就不需要自己用 unset() 打斷 cyclic...\r\n\r\n目前官方是希望今年十月釋出 PHP 5.3 正式版,應該會有 Framework 利用這些特性重新改寫...", + "title": "PHP 4.4.9 - PHP4 最後一個版本" + }, + { + "id": "1597", + "body": "Subversion 1.5 最重要的改善就是 merge track,實際用過以後可以發現仍然不如 Git 方便,但比起以前得自己計算 revision 改善許多。\r\n\r\n不過也因為 merge 本身帶有意義 (會另外儲存 merge info),在「用 Subversion 的 Merge 來 Undo」這篇所介紹的方法就不適合了,因為 svn merge -r 1234:1233 . . 會帶有 merge info。\r\n\r\n現在比較好的方法是:svn diff -r 1234:1233 . | patch -p0,不會產生 merge info。", + "title": "Subversion 1.5 的 merge" + }, + { + "id": "1599", + "body": "在「Debian会如何处理猴子写的代码的版权」這篇提到的問題讓我想起 Star Trek: Voyager (星艦奇航記:重返地球) 的 Author, Author 這一集,在討論非人類的權利...", + "title": "猴子寫的程式碼..." + }, + { + "id": "1601", + "body": "趁著在家養傷 (腳痛) 寫程式的時候,順便把這陣子 PIXNET 在重新改寫的部份紀錄下來,從底層與 OS 比較有關的、PHP 的,以及 Web UI 的部份。\r\n\r\nFreeBSD 的 NFS client 的效能並不好,在這次 PIXNET 前後台大改版前,我這幾天重新跑數據看目前舊系統的架構,可以看出來 PHP code 放到 NFS 上面所吃的 system CPU resource 比 userland CPU resource 還多:(這是其中一台 blog 主機的 CPU usage,用 Munin 畫出來的圖,中間斷掉那段是我在改 Munin 的設定...)\r\n\r\n\"\"\r\n\r\n從圖上可以看出這台跑 blog 的主機有 4 Logical CPUs,但卻有很多 idle time。這是因為 NFS 量更大時會不穩定,所以我們無法使用更高。這次改版把所有的 code 都放到 local disk 上,應該會有很大的改進。\r\n\r\nMySQL 還是用 Linux 比較好,同一台機器 (Xeon E5405 + 16GB RAM + 10KRPM*2) 分別跑過 FreeBSD 7-STABLE、8-CURRENT (20080812)、Linux 2.6。在 FreeBSD 上用 UFS2 (包括 noatime + async 與 noatime + softupdate 都有測試) 一直都是 I/O bound,而在 Linux 上用 XFS 一直都很順。這是用 MySQL slave 跑 real traffic 而非模擬測試。\r\n\r\n新的資料庫系統還是用 Linux 平台,然後引入 DRBDInnoDB 達到 High Availibility。不過我想在這陣子忙完後測 MMM,以他的實做方式看起來會比 DRBD 好。(但 DRBD 開發比較久,資料比較豐富,也比較容易找到穩定的設定)\r\n\r\nPHP 的部份仍然使用 Apache 2.2 + mod_fastcgi 與 PHP。不過這次不跑 event mode,而是跑 worker (threading mode)。在正確的設定下,APC 的 cache 是整台機器共用,使用的記憶體更省。上面是 blog2 (worker MPM),下面是 blog5 (event MPM) 的記憶體使用量:(附註:我覺得 event 應該也可以做到同樣的事情,這次換 worker 是因為種種機緣 XD)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n其中 FreeBSD 上可用記憶體空間的意義可以參考 Inactive memory 這篇,並不是只有 Free 代表可用空間。\r\n\r\n靜態檔案在重新建立架構時,儘量拆開到其他 domain 上,除了可以 pipeline download,也可以節省使用者送 cookie 的頻寬,這部份的伺服器改用 nginx,因為要用他的 gzip on the fly 讓下載的量減少。我們用到的 javascript framework 盡量都塞進這個系統裡。\r\n\r\nPHP 的部份,這次是賭了一把,選擇 Zend Framework 實做前後台,而且完完全全使用 ORM framework 處理資料。以目前的量去推算,看起來應該是沒問題,不過還沒上線前誰都不敢說,換燈管的 CTO 還為此先準備另外的機器,如果真的不行就用先暫時用機器海換出來...\r\n\r\n我們用到的部份包括 Zend_ControllerZend_ViewZend_Feed。(不,我們沒有用 Zend_Db,而是有個撞到腦袋的人寫了 Pix_Table_Cluster...)\r\n\r\n不過 Zend_Controller 並不好用,沒有針對開發者的想法發展 (另外一種說法是,沒有針對 PHP 語言特性實做簡潔有力的語法),所以之後可能會自己開發 Pix_Controller。舉兩個例子說明:\r\n\r\n\r\n另外一個沒有用的是 Zend_Form,原因在於 Zend_Form 的預設值會使得客製化很困難。所以我們自己開發了 Pix_Form,只產生個別的元件,而不產生整體的 Form,所以你可以拿到一個版面後套版進去用。但仍然可以用 Pix_Form validate。\r\n\r\nDeploy PHP code 的事情,目前是用 rsync 做,但 rsync 的效率並不高 (不過目前是夠用了),只能加減請 coder 擔待點。前陣子找了不少這類軟體在測試,像是 csync2,不過他同步的方式與期望了方式有落差,也許改變流程,配合 csync2 的方式做,或者是不改變流程,自己從頭幹一個出來?\r\n\r\nWeb UI 的部份這次改寫時直接強迫大家裝 Html Validator 直接檢查。我對 XHTML 1.0 沒有什麼好感 (事實上這次改版大多都是用 HTML 4.01),但至少不要有 <div> 不對稱這類 browser 會亂猜一通的問題。這樣才不用在奇怪的 DOM tree 裡面操作。\r\n\r\n在政策上,javascript 全部用 jQuery,目前的 javascript code 幾乎都是 jQuery 寫出來的。Unobtrusive Javascript 目前只是個理想,有很多地方還是得直接處理。\r\n\r\n另外就是 CDN 的事情,有機會再說 orz", + "title": "這次 PIXNET 前後台的一些整理" + }, + { + "id": "1619", + "body": "我們 (PIXNET) 預定在 8/19 凌晨開始,全面停機轉換到新後台,8/20 正式上線:【公告】後台上線停機預告。不過實際上我們待命的時間會比這個久,因為要提早開始準備,上線後還要保留二十四個小時 (預定) 修改問題。\r\n\r\n上線後除了開始收 feedback 外,也開始要跑下一波計畫改善整個系統。\r\n\r\n我打算實際拿 MogileFS 用,要了解穩定性與效能。MogileFS 是一個分散式的檔案系統,國外有一些站台已經在用,日本似乎也有不少人研究。\r\n\r\n用 MogileFS 時前端會放 reverse proxy,目前看起來 Squid 3 與 Varnish 都還可以,只要不要碰到 Disk I/O 就沒問題。而 Cacheboy 是一個 Squid 2 fork 出來的專案,還要再仔細看看。\r\n\r\n另外一種方案是不自己搞 reliable storage,除了 local 存一份外,直接丟 Amazon S3,然後買 CDN 服務,省下來的時間用在其他地方...\r\n\r\n另外一個要研究的是透過 PF 做 load balancer,用 pfsync 與 CARP 拉高穩定性。\r\n\r\n資料庫的部份,除了 InnoDB 外,我想看看 PBXTMaria 進展的如何。\r\n\r\n接下來想研究的東西就跟前後台無關了,像是 OpenVZXen...", + "title": "假設前後台順利上線後,之後的計畫..." + }, + { + "id": "1621", + "body": "YUI team 終於想開了,不再用像是 YAHOO.util.Event.addListener 這種寫 code 時會一直抱怨的命名方式,而是改用 Y 當作物件,並支援 fluent interface,也就是 Y.foo('blah').bar('blah2') 這種串接的用法:YUI 3.0 Preview Release 1。\r\n\r\n但缺點就是因為語法改變,你必須改寫... 不過應該不是大問題,因為 YUI 2 與 YUI 3 不衝突,在過渡期時你可以把兩個 framework 都讀進來。", + "title": "YUI 3.0 Preview Release 1" + }, + { + "id": "1624", + "body": "這篇會講怎麼在 FreeBSD 上建立標題所說的環境。\r\n\r\nApache 2.2 的部份,透過 ports 編譯時加上 WITH_MPM=worker 即可:\r\n
# cd /usr/ports/www/apache22\r\n# make WITH_MPM=worker install clean
\r\n裝好後將 /usr/local/etc/apache22/httpd.confhttpd-mpm.conf 前面的 # 拿掉,並修改 /usr/local/etc/apache22/extra/httpd-mpm.conf 內 mpm_worker_module 那段:\r\n
ThreadLimit 512\r\nStartServers 1\r\nMaxClients 512\r\nMinSpareThreads 1\r\nMaxSpareThreads 512\r\nThreadsPerChild 512\r\nMaxRequestsPerChild 0
\r\n這些數字的設計是故意只跑起一隻 httpd,負責所有的連線。\r\n\r\n再來是裝 mod_fastcgi:\r\n
# cd /usr/ports/www/mod_fastcgi\r\n# make install clean
\r\n到 /usr/local/etc/apache22/httpd.conf 裡把 fastcgi_module 的註解拿掉後,把設定檔放到 /usr/local/etc/apache22/Includes/fastcgi.conf 裡:\r\n
#\r\nFastCgiConfig -maxClassProcesses 1\r\nScriptAlias /fcgi-bin/ \"/usr/local/www/fcgi-bin/\"\r\n<Directory /usr/local/www/fcgi-bin/>\r\n    SetHandler fastcgi-script\r\n</Directory>\r\n#\r\nAddHandler php-fastcgi .php\r\nAction php-fastcgi /fcgi-bin/php
\r\n這邊數字的設計是故意讓一隻 httpd 只能生出一隻 fastcgi,再加上前面限制只有一隻 httpd,可以確保整個 apache 只會透過這個 fastcgi socket 跑 php。\r\n\r\n接著建立 /usr/local/www/fcgi-bin 這個目錄,並把 php 放進去:\r\n
#!/bin/sh\r\nPHPRC=\"/usr/local/etc\"\r\nexport PHPRC\r\nPHP_FCGI_CHILDREN=128\r\nexport PHP_FCGI_CHILDREN\r\nexec /usr/local/bin/php-cgi
\r\n然後把有支援 FastCGIPHPAPC 裝好 (www/pecl-APC) 就可以了。\r\n\r\n這個架構下,httpd 會產生 512 threads 處理連線,並產生一個 fastcgi 的 socket 處理 PHP 程式,這個 socket 會由 128 隻 php-cgi 聽,且這 128 隻的 cache 會共用。\r\n\r\nAPC cache 預設是 30MB,在 Layeredtech 這台 (也就是 blog.gslin.org 這台) 上面開到 256MB (大約用掉 200MB),不過這是因為上面太多客人了,預設的 30MB 對於一般網站應該是不會滿。在安裝完 APC 後可以拿 /usr/local/share/doc/APC/apc.php 看目前 APC 的使用量。\r\n\r\nPHP opcode cache 很重要,很久前 zonble 的「雜誌專訪產生器」造成機器速度很慢的原因,就是因為 APC 的空間滿了,常常需要重新編譯 PHP code。\r\n\r\n這樣的設定大約會消耗 1.5GB ~ 2.5GB 的記憶體空間 (大小會依照你的 PHP 有多少模組而定),如果網站沒那麼大,可以把數字調低。", + "title": "apache22 (worker) + mod_fastcgi + php5-fcgi" + }, + { + "id": "1632", + "body": "Amazon EC2 一直都沒有保證在上面的磁碟資料不會掉,這使得 MySQL 必須透過定時備份到 S3 以及即時將 binlog 備份到非 Amazon 的站台以確保資料的安全性。\r\n\r\n之前的解法是將資料放到 Amazon SimpleDB 上,但 SimpleDB 的空間有限制 (還在 limited beta),而且會有被綁在 Amazon 上,如果想要搬出來會找不到 open source 的替代方案。另外一個問題是熟悉度的問題,大家還是比較偏好用 MySQL 這類的 RDBMS。\r\n\r\n這個限制終於在 Amazon 推出 EBS (Elastic Block Store) 解決了:你可以在 EC2 上開一個磁碟空間給 MySQL 用!\r\n\r\n這個空間確保資料的持久性外,還可以 snaphost 到 S3 上。第一次 snapshot 會是 full backup,後面都是 incremental backup。單一 EBS 的空間可以從 1GB 到 1TB,而目前 beta 階段一個帳號可以開 20 個 EBS,也就是最多可以吃到 20TB。磁碟會是 block level,也就是說你可以在上面跑任何你想要的 filesystem,或者利用 stripe 提高效率。\r\n\r\n目前計費的方式,除了 storage 的費用外,每百萬次 I/O 會收 USD$0.10,snapshot 的費用是依照 S3 使用的量計算。不過這些都有可能會改變,可以參考 EBS 的網頁。\r\n\r\n參考:Amazon EBS (Elastic Block Store) - Bring Us Your Data。", + "title": "Amazon EBS (Elastic Block Store)" + }, + { + "id": "1634", + "body": "回家打開 Slashdot 就看到大爆點:Adi Shamir (RSA 的 S) 與 Itai Dinur 找到方法把一卡車的 Block cipherCryptographic hash function 給擺平:New Attack Against Multiple Encryption Functions。\r\n\r\n點進 Bruce Schneier 的文章後有更新不少資訊,看起來目前在用的 Block cipher 應該都沒事,不過他沒提到 Cryptographic hash function 的部份,看起來還是有機會?", + "title": "Hash Function" + }, + { + "id": "1636", + "body": "COSCUP 2008,MySQL and SSD:\r\n\r\n
", + "title": "MySQL and SSD" + }, + { + "id": "1639", + "body": "PHP Framework 裡會大量使用 require_once(),由於需要判斷是否載入過檔案,require_once() 會使用 realpath() 取得檔案實際路徑資訊當作判斷條件,而這點會有效能上的問題。\r\n\r\n其他人其實也遇過,參考:PHP Performance tip: require versus require_once,其中 comment 的部份也說明了目前 Google 到的方法是沒有用的。\r\n\r\nFreeBSD libc 裡的 realpath(3) 會使用 lstat(2),而 FreeBSD 的 lstat(2) 因為用到 VFS_LOCK_GIANT(9),所以在 FreeBSD 上很多隻 PHP 同時用 realpath() 的時候效能並不好。\r\n\r\n在 Linux 的 libc 據說沒這個問題 (我沒有實際去 trace libc code,聽別人轉述的),不過實際灌了一台 Debian 跑 PHP 發現解決了 lstat() 的問題後,require_once() 造成的效能問題還是很嚴重。\r\n\r\n目前的解法與 Wikia 類似,想辦法讓 require_once() 能夠很快找到 code,不過還是得想辦法從 PHP 本身下手,改善 require_once() 的效能,讓 PHP Framework 發展的時候不用綁手綁腳。\r\n\r\nPS:目前的方法是改掉 Zend Framework 裡面的 require_once(),由於我們有一個統一的 /pixnet,把裡面的程式碼全部都用絕對路徑。另外在 Autoload 的部份用 APC cache,避免再到 include_path 內重複尋找。", + "title": "使用 PHP Framework 的效能問題" + }, + { + "id": "1646", + "body": "在找 blog 開起來很慢的原因時發現的,全文在這邊:funp.com 的 DNS 設定。\r\n\r\n然後我剛剛才知道原來七月過了啊...", + "title": "funp.com 的 DNS 設定" + }, + { + "id": "1648", + "body": "Google 官方對於 Google Chrome 的公告都出來了:A fresh take on the browser,甚至有漫畫版本的說明可以看...\r\n\r\n依照 Google 的說明,這是一套 open source software,rendering engine 是 Apple's WebKit,配上自己寫的 V8 JavaScript engine,看起來又有一堆 web developer 要頭痛了...\r\n\r\n最近就會有 beta version 可以下載來看,到時候再抓來測試。\r\n\r\nUpdate:網站「意外洩漏」的截圖被人抓下來了 (都搞這套...),有不少人抓了 Screenshot 可以看,以這些截圖看得出來 Chrome 的設計:Google Chrome Screenshots。剛剛看了才想到,不知道 Chrome 有沒有從 Microsoft 那套學起來,內建一堆自己的東西?順便把 Gears 包進去?\r\n\r\nUpdate:釋出了,在 Google 的首頁就有下載點!另外附上 Acid2 的截圖,看起來沒問題:\r\n\r\n\"\"\r\n\r\n可以注意到網址列的處理上,刻意把站台部份與路徑部份的顏色分開:\r\n\r\n\"\"\r\n\r\n如果是 SSL 站台的話則是黃底,再把 https 用綠色標出:\r\n\r\n\"\"\r\n\r\n如果是過期的憑證會這樣顯示:\r\n\r\n\"\"\r\n\r\nProxy 設定則是直接吃 IE 的設定,預設會打開 DNS prefetch cache,的確有比較順暢... 另外可以用 about:plugins 看到有哪些 plugin 預設就已經被裝起來了,預設有把 Google Gears 裝起來:\r\n\r\n\"\"\r\n\r\n另外一個 about:memory 則是可以直接看記憶體用量,包括其他瀏覽器! (居然直接去讀其他 browser 的資訊...)\r\n\r\n\"\"", + "title": "Google 自己的瀏覽器:Chrome" + }, + { + "id": "1659", + "body": "在 GetClicky Analytics Service Tracking 2% Google Chrome Usage 這篇文章看到 GetClicky 在 45000 個網站即時統計 (實際上是 15 mins) 出來的結果。\r\n\r\n目前我看到的是 1.91400% (reload 後變成 1.87233%... XD),應該會繼續往下跌,不過不知道會跌到什麼地方。\r\n\r\n\"\"\r\n\r\nUpdate:現在是 2.78387% 了... @_@", + "title": "Google Chrome 的市場佔有率" + }, + { + "id": "1662", + "body": "剛剛在 Slashdot 的 comment 堆裡看到 Chromium (Open Source 版本 Chrome) 的 buildbot binary (看起來每一個 revision 都有 build):http://build.chromium.org/buildbot/snapshots/。\r\n\r\n在公司一直抓不下來,只好特地抓 buildbot binary 了...\r\n\r\nPS:值得特別說明的,buildbot binary 不需要簽 EULA,所以不會有 Reading Google Chrome's Fine Print 這篇提到的問題。", + "title": "Chromium 的 nightly builld" + }, + { + "id": "1667", + "body": "最近在研究頁面速度時想到的方法,這個方法對於之後的 JS engine 應該會有幫助,另外也可以解決一個常見的鳥問題。\r\n\r\n國外應該有人有提過這個方法,不過我用 Google 翻了一下翻不到,等之後找到再收到 delicious.com。\r\n\r\n程式碼的精神很簡單:\r\n
var a = function() { /* slow code */ };
setTimeout(a, 1);
\r\n這樣的好處是:\r\n\r\n抱怨一下,IE 的 JS 速度實在是不怎麼樣...", + "title": "加快 JavaScript 的速度" + }, + { + "id": "1677", + "body": "這個週末大概要大亂了...\r\n\r\n剛剛發現系統異常,一路追查下去發現國內 ISP 一卡車的反解不見了,從上層一步一步 trace 後,似乎是 TWNIC 改設定造成的問題 XD\r\n\r\n以 HiNet 為例,122.116/16 整段都是 HiNet 的 (IP代理發放單位網段:122.116.0.0-122.117.255.255),但 DNS 並不是直接交給 HiNet 管,而是透過 TWNIC 管:\r\n
116.122.in-addr.arpa. 86400 IN NS rns2.twnic.net.\r\n116.122.in-addr.arpa. 86400 IN NS rns3.twnic.net.\r\n116.122.in-addr.arpa. 86400 IN NS rns1.twnic.net.
\r\n目前 twnic.net 有兩台 NS RR:\r\n
twnic.net. 172800 IN NS moevax.edu.tw.\r\ntwnic.net. 172800 IN NS ns.twnic.net.\r\nns.twnic.net. 172800 IN A 192.83.166.11
\r\n其中 moevax.edu.tw 已經不會回答了,而 ns.twnic.net 則是傳回不存在 rns{1,2,3}.twnic.net 這些 hostname XDDD\r\n\r\nUpdate:結果是 moevax.edu.tw 恢復了,rns1.twnic.net 還是回 SERVFAIL。所以,這個現象其實很久了?", + "title": "TWNIC 反解問題" + }, + { + "id": "1682", + "body": "又有一陣子沒有重灌 Windows 了,這次居然是因為誤砍 Windows 系統檔案而爛光光。還好還可以先拿 Notebook 的 Ubuntu 做事,然後另外一邊重灌 Windows 以及 Windows Update...", + "title": "重灌 Windows..." + }, + { + "id": "1686", + "body": "這兩天跟 XDiteAmazon EC2,除了拿來跑 apacheMySQLmemcached 外,也有人拿來作為其他的用途。\r\n\r\n其中一個比較有名的例子是去年十一月的時候,紐約時報的 Derek Gottfrid 寫了一篇文章,說明了把 1851 年至 1922 年的 TimeSelect 與 The New York Times 轉成 PDF 的過程。\r\n\r\n他們已經有 TIFF 格式的圖檔,現在想要轉成 PDF 檔,但原始 TIFF 檔有 4TB,如果在短時間內要轉成 PDF,需要投資不少設備。\r\n\r\n由於他之前使用過 Amazon S3,覺得 S3 是一個還不錯的服務,所以他決定嘗試 Amazon EC2。首先先把 4TB 的圖檔傳到 S3 上。再用 Amazon EC2 跑 Hadoop,在上面開 100 台 EC2 instance 轉檔,只花了一整天就把 4TB 的 TIFF 轉完並產生 1.5TB 的 PDF。(Self-service, Prorated Super Computing Fun!)\r\n\r\n如果計算 S3 與 EC2 所花掉的費用 (包括 storage、bandwidth、running time),可以在 USD$3000 內解決,總共只花了兩到三天的時間。這是一個還蠻有趣的例子,拿 Amazon EC2 來跑這種需要大量 CPU resource 的工作。", + "title": "Amazon EC2" + }, + { + "id": "1691", + "body": "Amazon 要搞 CDN 了:We're Never ContentAWS Content Delivery Service。\r\n\r\n可以直接跟 Amazon S3 配合,並且提供 API 管理... 不過 CDN 這塊已經算是比較成熟的領域,Amazon 的價格不知道夠不夠漂亮...\r\n\r\n另外 Amazon 的 CTO Werner Vogels 也有寫一篇「Expanding the Cloud」廣告 Amazon CDN。", + "title": "Amazon CDN" + }, + { + "id": "1699", + "body": "Google 的創辦人 Sergey Brin 也開始寫 Blog 聊工作外的事情:too.blogspot.com。\r\n\r\n剛剛看只有兩篇,第一篇是 Hello World,第二篇是講帕金森氏症。", + "title": "Google 創辦人 Sergey Brin 的 Blog" + }, + { + "id": "1703", + "body": "Google AJAX Libraries API 除了包括 jQuery 外,也包括 jQuery UI 了:AJAX Libraries API Developer's Guide。\r\n\r\n應該是愈來愈愉快了,什麼東西都用 Google CDN 幫你... XD", + "title": "Google 的 jQuery 與 jQuery UI" + }, + { + "id": "1705", + "body": "Yahoo! UI Library: YUI Compressor,用 Java 寫的 CSS 與 JS 壓縮器,安裝以及使用起來也很方便。雖然軟體的速度不快,不過以現在的效能已經夠用了。\r\n\r\n在 FreeBSD 上可以透過 portswww/yuicompressor 裝到系統裡,而使用上只要把檔案從 stdin 輸入,或是在第一個參數裡指定檔名,就會從 stdout 輸出 (或是用 -o 指定輸出檔名) 壓縮過後的版本。\r\n\r\n軟體本身的授權方式與 YUI 本體相同,都是 BSD license。", + "title": "YUI Compressor" + }, + { + "id": "1707", + "body": "WYSIWYG,也就是「所見即所得」,不過我要講的是 Browser 裡常用的所見即所得的編輯模式。\r\n\r\n感想:這東西能不碰就不要碰,基本上是個大地雷。如果打算要支援 1% 以上市佔率的瀏覽器,那麼就包括了 IE6/IE7/Firefox2/Firefox3/Safari/Chrome,每個都是地雷密佈。如果真的要碰,找個 JavaScript 強者,學 Blogger 弄一個超簡單的版本吧,避免支援一堆特殊效果... (絕對會因為 browser 的「特性」而死人)\r\n\r\n然後儘量加強傳統模式 (non-WYSIWYG),像是 JS Quicktags 這種編輯器,因為這種編輯器的後遺症少很多,少一些使用者用 WYSIWYG editor,就可以少一些人抱怨。\r\n\r\n這是這幾天看 TinyMCE forum 的感想。", + "title": "WYSIWYG" + }, + { + "id": "1710", + "body": "Catalyst FrameworkPerl 上一個蠻有名的 MVC Framework,使用 Catalyst 比較知名的站台是 Vox.com。(可以參考 How we build Vox 這一份投影片)\r\n\r\n在正式環境下會用 FastCGI 或是 mod_perl 提供服務,但測試環境用 CGI 版本似乎是個還可以的選擇,因為改完後馬上就會生效。我記得我很久前用過 Apache + Catalyst-CGI,但是一時間找不到設定檔,只好再從頭摸起。趁這次重新摸的時候把設定檔寫到 blog 上,之後用 Google 找的時候才找的到。\r\n\r\n在 .htaccess 裡這樣設定:\r\n
#\r\nAddHandler cgi-script .sh\r\nOptions +FollowSymlinks -Indexes\r\n#\r\nRewriteEngine on\r\nRewriteBase /~gslin/testbed/\r\nRewriteCond %{REQUEST_URI} !/~gslin/testbsd/index\\.sh/\r\nRewriteRule ^(.*)$ index.sh/$1 [L]
\r\n然後 index.sh 要設成 0755:\r\n
#!/bin/sh\r\ncd ../../hg/project\r\nexec script/project_cgi.pl
\r\n另外 project_cgi.pl 也要設成 0755。這樣子除了靜態檔案應該都會動了。不過靜態檔案已經慢慢有習慣丟到另外一個 domain 上,所以還好...\r\n\r\nUpdate:修正 .htaccess 的內容,這樣也順便修好 Catalyst 處理 static files 的部份。", + "title": "Catalyst 與 Apache 的測試環境" + }, + { + "id": "1720", + "body": "jQuery 官方 Blog 公佈了這項消息:jQuery, Microsoft, and Nokia。\r\n\r\njQuery 將被整合進 ASP.NET Ajax Framework,同時微軟也會利用 jQuery 為基礎發展 widgets。Nokia 則是在自己的平台 (Web Run-Time) 試著整合現有的開發工具 (而非重新造輪子),所以選擇了 jQuery。\r\n\r\n如同官方 Blog 所說,微軟與 Nokia 都直接拿來用,而非要求 jQuery 釋出特殊的版本。所以不需要擔心之後升級 jQuery 會需要 patch 之類的問題。", + "title": "jQuery 與 Microsoft & Nokia 的合作" + }, + { + "id": "1725", + "body": "lighttpd 居然放出 1.4.20 了:1.4.20 - Otherwise the terrorists win。\r\n\r\n除了從 trunk 把處理 FastCGI 的程式碼 merge 回 1.4 branch (merge spawn-fcgi changes from trunk (from @2191)),幾乎都是 security fix 與 bug fix。\r\n\r\n由於 security fix 的部份每一家都會在 lighttpd 官方釋出 patch 時自己先 patch 進 package system 裡的版本,再加上這次有改到 FastCGI 的部份... 如果現有的 FastCGI production 環境跑得很好,建議先維持在原版本,觀望 mailing list 上的情況。", + "title": "lighttpd 1.4.20" + }, + { + "id": "1731", + "body": "照慣例還是得先說明,我從去年八月 (還是九月?) 開始就是 PIXNET 的員工,負責處理各種雜事。(不過不包括換燈管,那不是我的工作)\r\n\r\n另外說明,我對 Gene 的 OO 沒有信心,所以請不要跟我討論 Gene 為什麼不用 oo 方法或是 xx 方法,我知道 Gene 都知道這些方法,但是這會擋人財路所以不能做 (不要忘記他跟 BloggerAds 的關係)。\r\n\r\n下面是星期五在公司發生的鳥事情...\r\n\r\n星期五下午被 far 叫進辦公室,與其他同事討論換網址後「部落格觀察」不更新網址造成的影響,有很多 Blogger 很在乎這個分數。討論時覺得奇怪,不是已經換很久了嗎,怎麼又突然拿出來討論?回到家發現原來是「這次 PageRank 變動表現出無名的跌落? 」以及「在 9 月底的 PageRank 變動 (新的 PR6 部落格)」這兩篇文章故意捅 PIXNET 兩刀造成的。\r\n\r\n這兩篇文章的敘述故意給人印象「PIXNET 換網址造成 PageRank 變低,所以部落格觀察不列出也不會與現實狀況違背太遠」。但事實上 Gene 早就預測到 PIXNET 這種改版方式反而會讓整個 PIXNET 的排名大幅提昇,所以故意在「這次 Pixnet 改網址的對應」這篇以「技術上做不到」的假理由拒絕...\r\n\r\n九月底這一波 Google Dance 不僅將本來舊網址的 PageRank 分數搬過來,更因為個人化網址的關係,讓 PIXNET 許多 Blogger 的 PageRank 提昇的比原來高。\r\n\r\n依照 Gene「宣稱」9 月底只有 14 個 PageRank 6 的 Blog,所以我把 Gene 故意漏掉的 PIXNET 個人的 Blog 列出來:(由於只有挑熱門排行榜上的掃,所以除了這 7 個外,可能還會漏掉幾個)\r\n\r\n另外還有一些是團體的:(也是挑熱門排行榜上的掃)\r\n\r\n各位寫手們,不要再相信那個「觀察」了,那是沒有意義的啊 XD", + "title": "PIXNET 換網址後的 PageRank 情況" + }, + { + "id": "1750", + "body": "寫網頁很常看到 http://www.example.com/static/foo.jpg 這種用法,或是 /static/foo.jpg 這種用法。前者的用法在 HTTPS 的環境下會產生問題 (在 HTTPS 裡讀取 HTTP object),後者的用法只能在同一台機器上。\r\n\r\n如果想要保持 Protocol,但卻是不同機器時,可以用 //www.example.com/static/foo.jpg 這種用法。即使都是 HTTP 或 HTTPS 也有好處:少送出 5 bytes 或 6 bytes。\r\n\r\n這次改版裡面用了很多,像是這樣:\r\n
<link rel=\"stylesheet\" href=\"//s.pixfs.net/blog.pixnet.net/comment-form.css?v=e86de92d69f3b8eba3448c5404551725\" type=\"text/css\">\r\n<link rel=\"stylesheet\" href=\"//s.pixfs.net/blog.pixnet.net/choc-base.css?v=e86de92d69f3b8eba3448c5404551725\" type=\"text/css\">
\r\n這是之前看到的技巧,剛剛找到看到的地方了:Http-https transitions and relative URLs。", + "title": "HTTP/HTTPS 的相對路徑" + }, + { + "id": "1755", + "body": "Note:我是 PIXNET 員工。\r\n\r\n這篇是延續「PIXNET 換網址後的 PageRank 情況」,我對部落格觀察的批評。我要提兩個重點:\r\n\r\n我認為這兩個問題 PIXNET 的立場都沒錯:因為 PIXNET 有照著標準走。\r\n\r\n第一個問題,我們不只沒有通知部落格觀察,我們也沒有通知 GoogleYahoo 這些搜尋引擎。因為我們送了 HTTP 標準裡面的「301 Permanent Redirect」,會自動告訴搜尋引擎「你連到的是舊網址 http://blog.pixnet.net/cwyuni,我們已經永久搬到新的網址 http://cwyuni.pixnet.net/blog」。\r\n\r\n這就帶出第二個問題的解答,如果你的系統像搜尋引擎會依照 HTTP 標準走,那麼他就會自動更新。但如果你的系統不會自動更新,那麼就應該手動更新,像是 funP (funP 對 Pixnet 文章與部落格網址進行調整) 或是 SiteTag (2008/08/22 - 針對《PIXNET 痞客邦》所做的網址轉換)。\r\n\r\n這就是為什麼上面兩個問題,我認為 PIXNET 沒有做錯,而 Gene 的作法是錯的原因。", + "title": "301 Permanent Redirect 代表的意義" + }, + { + "id": "1764", + "body": "從 YouTube \"In Super HD\" 這邊的文章看到的,高畫質的 YouTube 影片網頁在這邊:Youtube, Now in Super HD。\r\n\r\n\"\"\r\n\r\n放四個 YouTube player,機車到爆炸的方法 XDDD\r\n\r\nPS:如果把 clickjacking 的想法引入,似乎可以做到無縫?(因為內嵌的 iframe 是 same origin,所以...)", + "title": "高畫質的 YouTube 影片" + }, + { + "id": "1768", + "body": "在 Slashdot 上看到有人寫程式,用窮舉法列出所有文字的可能性,破解被馬賽克文字的原始內容:\r\n\r\n\r\n\r\n不過要先猜測到字型才會比較準確。有人要 porting 中文字嗎?XD", + "title": "用窮舉法破解 (反推) 文字的馬賽克" + }, + { + "id": "1778", + "body": "(指的是美國的搜尋量)\r\n\r\n在 Slashdot 上看到這則新聞的時候一直笑:YouTube Passes Yahoo As #2 Search Engine。引用的新聞稿在這:comScore Releases August 2008 U.S. Search Engine Rankings。\r\n\r\n另外有個值得注意的是,Ask.com 這幾個月一直上升,也許沒事就試看看 Ask.com 會搜尋到怎麼樣的東西...", + "title": "YouTube 搜尋的使用量超越 Yahoo Search 使用量" + }, + { + "id": "1781", + "body": "使用 apachemod_deflate 可以減少傳輸量,但實際用發現要處理很多 IE6 的 bug,似乎蠻複雜的...\r\n\r\n列出幾個已經知道的問題:\r\n\r\n還要繼續整理這些 bug 資訊,確保使用者端能夠正確的解開。目前看起來,如果看到 IE6 就不使用壓縮功能是比較簡單的解決方法...", + "title": "mod_deflate 與 IE6 的問題" + }, + { + "id": "1786", + "body": "幾個禮拜前找到一家 FreeBSD VPS,是 Xen-based。與 Slicehost 的空間、頻寬與價錢比較過後,兩者都差不多 (256MB RAM、10GB storage、100GB bandwidth/month,都大約在 USD$20/month),不過從台灣連 RootBSD 的 latency 比較高 (看起來在美東的機房)。\r\n\r\n租了以後發現基本的 VPS 的功能都不缺。可以透過 VNC 操作 console (也就是 ttyvX),有 rrdtool 圖可以看到流量與 CPU usage。另外有看到 Private IP,不過我不確定兩個 node 是否可以透過 Private IP 互連而不計流量。\r\n\r\n以 dmesg 看到環境是 Intel 的 E5410。這是一顆 Quadcore CPU,實際用 top 可以看到兩顆 (200%),跑 openssl 測試速度看起來是可以跑到兩顆 CPU 滿載。作業系統是 32bits 環境,ports 裝起來沒什麼問題...\r\n\r\n用習慣 FreeBSD 而不習慣 Linux 環境的人可以用看看。", + "title": "FreeBSD VPS - RootBSD" + }, + { + "id": "1793", + "body": "在 Amazon Web Services Blog 宣佈了相當大的進展:\r\n\r\n另外他們也排出一些計畫 (與其他公司的計畫不一樣,Amazon AWS 的計畫到現在大多都有實現 XD):\r\n\r\nAmazon 的 CTO Werner Vogels 在他的 blog 上也有提到這件事情:Using the Cloud to build highly-efficient systems。", + "title": "Amazon EC2" + }, + { + "id": "1800", + "body": "CSSHttpRequest 是利用 CSS 的 @import + about: 取代目前常被使用 JSONP,優點在於 JSONP 可能被植入惡意的 javascript code,但 CSSHttpRequest 不會。\r\n\r\n不過話說回來,對 IE6/IE7 就不是這樣了 (IE6/IE7 的 CSS 裡可以跑 script),而 Firefox 3 有提供 cross-domain XHR,CSSHttpRequest 似乎又沒有那麼吸引人了?", + "title": "CSSHttpRequest" + }, + { + "id": "1802", + "body": "把 Notebook (IBM ThinkPad R60) 上的 Ubuntu 8.04 升級到 8.10 beta 後,WPA 加密的無線網路常常連不上,而且系統常常死當。本來以為是目前升級的程式還有問題,沒有將系統內相關的設定轉換到新版,所以就找時間重灌... 結果重新安裝 Ubuntu 8.10 後發現還是一樣。\r\n\r\n用 Google 找發現有不少人在升級到 8.10 後也有類似的問題,看起來這部份還在調整。\r\n\r\n這幾天透過 3G 網卡每天更新驅動程式以及應用軟體,看看會不會在正式釋出前修正,不然就得再灌回 8.04 了...", + "title": "Ubuntu 8.10 beta 版本" + }, + { + "id": "1805", + "body": "Dlink 的 load balancing router,4 LAN port 與 2 WAN port,我把 WAN port 分別接到 12M TFN cable 與 8M HiNet ADSL 後,大約兩個小時會當機重開一次 (從 uptime 可以看到)。\r\n\r\n還是得買比較好的 load balancing router 來跑...", + "title": "DI-LB604" + }, + { + "id": "1809", + "body": "「97 年電話費又再次降價,但需自己設定」這篇提到電話費降價的事情,鼓勵大家換過去,但事實上文章裡少寫了 $1.6/3mins 的月租費是 $50,有贈送通話費 25 元,但 $1.5/5mins 的月租費是 $75,而且沒有贈送通話費。\r\n\r\n如果沒什麼在打電話 (像是以前申請 ADSL 多出來的附掛電話),用 $1.6/3mins 反而會因為低月租,而且有折抵通話費而比較省。(Note:現在申請 ADSL 可以不用辦市話)\r\n\r\n參考中華電信市內電話費率表。", + "title": "中華電信市內電話降價的錯誤資訊" + }, + { + "id": "1813", + "body": "\"\"", + "title": "今天公司..." + }, + { + "id": "1815", + "body": "想在 Laptop 上的 Ubuntu 8.10 玩 Merb,結果發現比想像中的麻煩許多。\r\n\r\n安裝的部份,一開始是透過 apt-cache 找,但發現 apt 裡面沒有,所以得自己透過 Ruby Gems 裝。安裝的過程很不順利,除了仔細看錯誤訊息去猜測原因外,主要還是得靠 Google 找答案。\r\n\r\n實際要透過 merb-gen 產生 project 時,又發現還有不少 dependency 沒裝進去,一個一個補裝後才解決。\r\n\r\n剛剛總算把一個什麼都還沒改過的 Merb 跑起來了:\r\n\r\n\"\"\r\n\r\n不過這些應該會在 1.0 正式版推出前解決吧?(errr...)", + "title": "Merb" + }, + { + "id": "1819", + "body": "Merb 1.0 正式版已經放出來,不過目前還沒辦法裝...\r\n\r\n因為 Merb 1.0 要 RubyGems 1.3.0 版或是更新的版本 (寫這篇時最新版是 1.3.1),而 FreeBSD PortsUbuntu 8.10 內目前所附的都是 1.2.0 版,當場輸光光...\r\n\r\n再等幾天 Ubuntu 應該會更新吧... (應該吧)", + "title": "Merb 1.0 正式版" + }, + { + "id": "1821", + "body": "在上一篇提到 FreeBSD 上暫時因為 RubyGems 版本問題,沒辦法裝 Merb 1.0,我決定自己來惡搞...\r\n\r\n一開始是想裝 Ruby 1.9,據說內建 RubyGems,但裝上去後發現內建的版本是 RubyGems 1.0.1,比 FreeBSD Ports 的還舊,還是自己動手把 Ports 裡的 RubyGems 升級好了...\r\n\r\n要將 FreeBSD Ports 裡的 RubyGems 更新到 1.3.1,最麻煩的是要生出 pkg-plist,這點由 ports maintainer jw at innerewut.de 做的差不多了,他寫了 x-generate-plist 會幫你產生 pkg-plist,所以很容易就把 pkg-plist 做完然後 send-pr。(參考 ports/128731: [PATCH] devel/ruby-gems: update to 1.3.1,裡面有 patch file)\r\n\r\n升級完成後就是要裝 Merb 了...\r\n\r\n我的打算是等 clsung 更新 www/rubygem-merb 前都先完全用 gem 管理 RubyGems 套件,而不透過 Ports 管理 (他是這個 ports 的 maintainer)。所以接下來就是跑 sudo gem install merb。\r\n\r\n跑到一半會喊 sqlite3.h 不存在,先把 databases/sqlite3 裝進系統,再用 sudo gem install do_sqlite3 --with-sqlite3-dir=/usr/local 把 do_sqlite3 裝進去。接著繼續跑 sudo gem install merb 把剩下的套件都裝完。\r\n\r\n然後裝一些一定會用到的東西,像是對 MySQL 的支援套件:sudo gem install do_mysql。\r\n\r\n大致上就是這樣...\r\n\r\nUpdate:還少了 sudo gem install json,剛剛要 merb-gen app project 的時候發現會說少了 Json::Iconv 而不能跑 XD\r\n\r\nUpdate:跑 merb 的時候發現還少了 DataMapper,所以要再裝 sudo gem install datamapper。\r\n\r\nUpdate:結果還是一直喊找不到 dm-types...\r\n\r\nUpdate:還少了 sudo gem install mongrel。\r\n\r\nUpdate:dm-types 的問題可以在這篇回報看到一個 patch,這個 patch 預定在 1.0.1 會修正,在還沒修正前需要自己更新:I have dm-types gem installed but still get - FATAL: The gem dm-types (= 0.9.7, runtime), [] was not found。", + "title": "在 FreeBSD 上安裝 Merb 1.0" + }, + { + "id": "1829", + "body": "跑 Minefield nightly build 版本的人心臟總是要大顆一點...\r\n\r\n我目前的版本是 20081111032821 (User-Agent 是 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b2pre) Gecko/20081111 Minefield/3.1b2pre),剛剛發現黑心人形の部屋是個 reproducible crashing page,一步一步測試,發現是 javascript.options.jit.content 造成的問題,設定成 false 就正常了。\r\n\r\n用 Minefield 的人如果有一直 crash 的困擾,可以試著把 jit 關掉,可能會有幫助。", + "title": "Firefox 3.1 的 JIT" + }, + { + "id": "1834", + "body": "中地雷了... 測試程式在 http://gist.github.com/25425 這裡。\r\n\r\n在 Ruby 1.8.6 (FreeBSD 7) 上面測試會輸出 RSS 2.0,但在 Ruby 1.8.7 (Ubuntu 8.10) 上則會輸出空字串。xdite 拿了同樣的程式去 1.9.0 上測試也是出現空字串。\r\n\r\n到 freenode 的 ruby-lang 上提了這個問題,結果有人說 1.8.7 弄爛了太多東西,他不會感到意外 XDDD\r\n\r\nAnyway,這個功能到還沒有那麼急迫要修好,所以這陣子大概是不會好的吧... (可以自己寫 generator,RSS 2.0 的 feed 並不難寫)", + "title": "Ruby 1.8.7 (以及 1.9) 的 RSS::Maker" + }, + { + "id": "1837", + "body": "沒想到 Amazon 這麼快就推出 CDN 服務了:Amazon CloudFront。\r\n\r\n先說價錢的部份。就這陣子接觸 CDN 的狀況來說 (大約接觸了六七家),zero-commitment 這個價錢相當驚人。CloudFront 與一般的 CDN 的價錢算法不太一樣,一般都是大致上告知各地區的用量,CDN company 會給你一個 package,這個 package 包括一定程度的 commitment,以及超過 commitment 時的價錢。CloudFront 沒有 commitment (這是預期的,因為之前他們宣佈要開發 CDN service 時就有說明這件事情),另外依照不同地區的流量,收不同費用,與其他家的算法相比,這樣的確很有競爭性。實際上,Amazon 所放的機房似乎有談到比較好的價錢,Price 的部份可以看到大約是 USD$0.2/GB。\r\n\r\n就技術面來說,CloudFront 全球有十四個點,亞洲地區是在東京與香港,這點與一般的 CDN service 差不多,這兩個點是亞洲區交換的重心,基本上都會在這兩個地區架點。\r\n\r\n第一步是看 DNS 的架構,DNS 是 Anycast-based,從台灣各 ISP 連過去,看起來都是到香港的 DNS server,至於封包怎麼到香港,又怎麼樣回台灣,這又是另外一回事情了...\r\n\r\n再來是看 latency,這個部份通常會配合 traceroute 測試 (觀察每個點的狀況)。traceroute 的目的地可以用 Amazon 自己提供的 d1nqj4pxyrfw2.cloudfront.net,或是自己申請的 domain 測試,會發現從 HiNet 過去的 latency 不低 (用幾個不同的地區 ADSL 測試),TFN 似乎與香港機房的 ISP 有 peering,所以數字很漂亮,而 KBT 是走美國再到香港機房。\r\n\r\n這是一些數據:\r\n\r\nHiNet ADSL:\r\n
 3  tp-s2-c76r5.router.hinet.net (168.95.82.202)  34.846 ms  33.004 ms  36.084 ms\r\n 4  tp-crs11.router.hinet.net (220.128.2.230)  33.595 ms\r\n    tp-crs11.router.hinet.net (220.128.3.142)  34.207 ms\r\n    tp-crs11.router.hinet.net (220.128.1.230)  34.757 ms\r\n 5  r03-s2.tp.hinet.net (220.128.2.190)  31.899 ms\r\n    r03-s2.tp.hinet.net (220.128.1.178)  34.508 ms\r\n    r03-s2.tp.hinet.net (220.128.2.190)  32.021 ms\r\n 6  tp-s2-l233-81.router.hinet.net (211.72.233.81)  196.329 ms  194.428 ms  194.215 ms\r\n 7  po-1.a05.newthk01.hk.ra.gin.ntt.net (203.131.240.238)  193.144 ms  194.112 ms  198.367 ms\r\n 8  203.131.243.162 (203.131.243.162)  209.246 ms  208.731 ms  204.362 ms\r\n 9  216.137.55.35 (216.137.55.35)  193.126 ms  196.422 ms  194.614 ms
\r\nTFN:\r\n
 3  60-199-255-113.static.tfn.net.tw (60.199.255.113)  0.240 ms  0.229 ms  0.240 ms\r\n 4  60-199-6-125.static.tfn.net.tw (60.199.6.125)  0.364 ms  0.353 ms  0.365 ms\r\n 5  60-199-6-2.static.tfn.net.tw (60.199.6.2)  0.365 ms  0.353 ms  0.366 ms\r\n 6  60-199-6-222.static.tfn.net.tw (60.199.6.222)  11.607 ms  0.602 ms  0.615 ms\r\n 7  61.58.33.145 (61.58.33.145)  0.613 ms\r\n    61.58.33.173 (61.58.33.173)  15.341 ms\r\n    61.58.33.189 (61.58.33.189)  0.718 ms\r\n 8  xe-0-0-0.r20.taiptw01.tw.bb.gin.ntt.net (129.250.16.161)  0.846 ms  0.721 ms  0.862 ms\r\n 9  as-0.r20.tokyjp01.jp.bb.gin.ntt.net (129.250.4.217)  35.342 ms  35.825 ms\r\n    ge-0-3-0.r01.taiptw01.tw.bb.gin.ntt.net (129.250.3.174)  36.840 ms\r\n10  as-1.r20.newthk01.hk.bb.gin.ntt.net (129.250.2.110)  57.059 ms\r\n    as-0.r02.newthk01.hk.bb.gin.ntt.net (129.250.4.205)  34.951 ms  23.712 ms\r\n11  ae-5.r21.newthk01.hk.bb.gin.ntt.net (129.250.2.81)  70.317 ms\r\n    ae-4.r21.newthk01.hk.bb.gin.ntt.net (129.250.5.65)  23.455 ms\r\n    ae-5.r21.newthk01.hk.bb.gin.ntt.net (129.250.2.81)  58.428 ms\r\n12  po-1.a05.newthk01.hk.ra.gin.ntt.net (203.131.240.238)  70.435 ms  23.338 ms  70.447 ms\r\n13  203.131.243.162 (203.131.243.162)  23.599 ms  23.464 ms  21.229 ms\r\n14  216.137.55.28 (216.137.55.28)  23.847 ms  70.680 ms  70.573 ms
\r\nKBT:\r\n
 3  58.86-0-host249.kbtelecom.net.tw (58.86.0.249)  0.233 ms  0.228 ms  0.360 ms\r\n 4  TWGATE-VLAN-859.IX.kbtelecom.net (203.187.9.205)  0.611 ms  0.481 ms  0.734 ms\r\n 5  TWGATE-C65-10G2-1-TPNOC1.IX.kbtelecom.net (203.187.6.202)  0.732 ms  0.730 ms  0.860 ms\r\n 6  PAIX-T76-G2-1-TWGATE.IX.kbtelecom.net (203.187.3.74)  137.412 ms  137.385 ms  137.785 ms\r\n 7  GigabitEthernet2-0.GW4.PAO1.ALTER.NET (157.130.214.173)  137.515 ms  137.397 ms  137.512 ms\r\n 8  124.ATM3-0.XR2.PAO1.ALTER.NET (152.63.49.230)  137.657 ms  137.602 ms  137.764 ms\r\n 9  0.so-5-2-0.XT1.SCL2.ALTER.NET (152.63.54.134)  137.909 ms  137.804 ms  137.842 ms\r\n10  204.255.169.182 (204.255.169.182)  139.285 ms  139.353 ms  139.509 ms\r\n11  ae-1.r20.plalca01.us.bb.gin.ntt.net (129.250.5.117)  138.799 ms  138.586 ms  138.407 ms\r\n12  ae-1.r21.snjsca04.us.bb.gin.ntt.net (129.250.4.119)  140.262 ms  140.144 ms  140.144 ms\r\n13  as-1.r21.osakjp01.jp.bb.gin.ntt.net (129.250.3.198)  159.242 ms  159.132 ms  159.254 ms\r\n14  ae-4.r20.osakjp01.jp.bb.gin.ntt.net (129.250.4.57)  159.143 ms  159.248 ms  159.252 ms\r\n15  as-2.r21.newthk01.hk.bb.gin.ntt.net (129.250.4.46)  201.124 ms  203.150 ms  201.114 ms\r\n16  po-1.a05.newthk01.hk.ra.gin.ntt.net (203.131.240.238)  202.980 ms  220.093 ms  202.851 ms\r\n17  203.131.243.162 (203.131.243.162)  201.847 ms  201.868 ms  200.233 ms\r\n18  216.137.55.227 (216.137.55.227)  201.604 ms  201.568 ms  201.477 ms
\r\n以亞洲區的情況來說,其實也不能說差到哪裡,因為亞洲區各地區的網路環境本來就比較複雜,很多 ISP 拉到日本或香港的是談 peering 而非 transit,如果放的 ISP 不是大戶就會像 HiNet 這樣。\r\n\r\n台固 (TFN) 看起來是買日本 NTT transit 代替美國電路 (這點在 TWNIC 的資料可以推估出來),所以數字就好看很多 (不過還是跑到香港 XD)\r\n\r\n離開亞洲,把測試環境拉到美國本土,情況就不太能讓人接受了。如果以美國的伺服器測試,以西岸 Cogent Co 的伺服器連上面所提到的 hostname,發現居然被導到東岸的機房... (喂喂)\r\n\r\nCogent Co:\r\n
 3  te8-4.ccr02.sjc01.atlas.cogentco.com (154.54.6.69)  0.613 ms\r\n    te8-4.mpd01.sjc01.atlas.cogentco.com (154.54.6.73)  0.603 ms\r\n    te8-4.ccr02.sjc01.atlas.cogentco.com (154.54.6.69)  0.603 ms\r\n 4  te7-4.mpd01.sjc03.atlas.cogentco.com (154.54.6.234)  1.598 ms\r\n    te4-2.mpd01.sjc03.atlas.cogentco.com (154.54.6.106)  1.224 ms\r\n    te7-4.mpd01.sjc03.atlas.cogentco.com (154.54.6.234)  1.226 ms\r\n 5  te-3-3.car3.SanJose1.Level3.net (4.68.110.137)  1.099 ms  1.095 ms  1.110 ms\r\n 6  vlan99.csw4.SanJose1.Level3.net (4.68.18.254)  3.240 ms  6.099 ms  1.740 ms\r\n 7  ae-94-94.ebr4.SanJose1.Level3.net (4.69.134.253)  3.738 ms  7.825 ms  2.486 ms\r\n 8  ae-2.ebr4.NewYork1.Level3.net (4.69.135.186)  73.826 ms  73.220 ms  73.325 ms\r\n 9  ae-74-74.csw2.NewYork1.Level3.net (4.69.134.118)  73.193 ms  74.808 ms  72.824 ms\r\n10  ae-71-71.ebr1.NewYork1.Level3.net (4.69.134.69)  73.321 ms  73.189 ms  73.525 ms\r\n11  ae-2-2.ebr1.Newark1.Level3.net (4.69.132.98)  78.324 ms  76.045 ms  74.122 ms\r\n12  ae-12-53.car2.Newark1.Level3.net (4.68.99.70)  74.779 ms\r\n    ae-12-55.car2.Newark1.Level3.net (4.68.99.134)  73.799 ms\r\n    ae-12-51.car2.Newark1.Level3.net (4.68.99.6)  88.805 ms\r\n13  AMAZONCOM.car2.Newark1.Level3.net (4.79.190.182)  74.351 ms  73.560 ms  73.697 ms\r\n14  216.137.41.112 (216.137.41.112)  74.697 ms  74.173 ms  74.696 ms
\r\n\r\n網路層面看完後,再來是看 Web server 的 performance,這點 Amazon 提供的服務慘不忍睹,實際以 http://d1nqj4pxyrfw2.cloudfront.net/cfcurl.pl 抓檔案測試發現,居然沒支援 gzip:\r\n
x-amz-id-2: gS6hQRsamtiyGdmpkpaHlt0mFE0tcBrzrV5QuJm4f5ObZX91IeLasylUvNj1h4B+\r\nx-amz-request-id: BA60E611E0CBD3B9\r\nDate: Tue, 18 Nov 2008 17:51:10 GMT\r\nx-amz-meta-s3fox-filesize: 7482\r\nx-amz-meta-s3fox-modifiedtime: 1225495075000\r\nLast-Modified: Mon, 17 Nov 2008 18:54:09 GMT\r\nEtag: \"42c51d029cc4a9f2a3f06a494af4f020\"\r\nContent-Type: application/x-unknown-content-type\r\nContent-Length: 7482\r\nServer: AmazonS3\r\nAge: 12848\r\nX-Cache: RefreshHit from cloudfront\r\nVia: 1.0 0904298d6eb16ce0af632faa366b71c4.cloudfront.net:11180 (CloudFront),\r\n     1.0 03b371403ea88af54def5cba2800dc5f.cloudfront.net:11180 (CloudFront)
\r\n待續。", + "title": "Amazon CloudFront (Amazon CDN)" + }, + { + "id": "1856", + "body": "還好即時發現,差點撐不過今天晚上 -_-\r\n\r\n\"\"\r\n\r\n簡單先找出最吃 CPU resource 的 SQL query,針對他的 WHERE 條件加上適當的 Index 後:\r\n\r\n\"\"\r\n\r\n這樣就爭取到調整的時間了...", + "title": "Index 很重要..." + }, + { + "id": "1863", + "body": "MySQL 5.1.30 將會是第一個 GA (General Availibility) 版本,相當於一般所說的「正式版」,預定在 12/6 釋出。\r\n\r\n消息是在 OpenSQLCamp 2008 上放出來的:\r\n\r\n\"\"", + "title": "MySQL 5.1.30 (第一個 General Availibility 版本)" + }, + { + "id": "1865", + "body": "MySQL ABSun 買走後,MySQL 官方宣佈了一些事情,到目前看起來,最大的改變是把 MySQL 的版本控制軟體從 BitKeeper (close source) 轉移到 Bazaar。\r\n\r\n版本控制軟體變成 open source 使得 source code 的取得以及追蹤變容易了,於是有許多人就自己建立 branch 發展,相當熱鬧。(因為有版本控制,容易與官方的 branch cross-merge,有些人會在 community 版互相 merge)\r\n\r\n主要幾個有名的 patch vendor 包括:\r\n\r\n遇到奇怪的 bug,或是多 CPU 效能瓶頸時,試看看這些 community version 會是不錯的方向。", + "title": "MySQL Community 版本" + }, + { + "id": "1870", + "body": "建議觀望兩個版本 XD\r\n\r\nMySQL 5.1 正式釋出了,比預訂的 12/6 早了一個多禮拜。目前 dev.mysql.com 處於被 DDoS 的狀態,不太容易連上,需要的人應該儘量到最近的 mirror site 找。\r\n\r\n這個版本不建議大家先上的原因是,我們 (PIXNET) 自己測試 5.1.29-rc 時發現在大量的 request 時,有時候會 connect fail,而這個 bug 在 5.1.30 的 changelog 裡沒看到相關的訊息。一種解法是在 application 層 retry,不過這種方法實在是不太舒服,還是等一陣子再說... XD", + "title": "MySQL 5.1.30 (5.1 的第一個 GA version)" + }, + { + "id": "1872", + "body": "抱怨一下,這次感冒 (?) 的後遺症超嚴重,今天睡醒起來居然沒聲音了,似乎該去找醫生看一看...\r\n\r\nUpdate:果然是發炎了,不過還加上出血 =_=", + "title": "講話沒聲音了..." + }, + { + "id": "1873", + "body": "網路上大多數的方法都是教你加入 public key,然後用 apt-get install w32codecs 安裝,我不太喜歡這個方法。(這樣等於是多了一組 key 可以亂搞你的系統)\r\n\r\n後來是在 clsung 的「Ubuntu 看 rmvb」看到,直接抓 w32codecs 的 deb 檔即可:http://www.debian-multimedia.org/pool/main/w/w32codecs/。抓完後用 dpkg -i ooxx.deb 裝到系統裡,接下來 mplayer 就可以看 rmvb 了...", + "title": "Ubuntu 下看 rmvb..." + }, + { + "id": "1875", + "body": "Amazon Web Services 最近動作好多 XD\r\n\r\nAmazon SimpleDB 是一個類似 Google BigTable 的資料庫服務。從 2008/12/1 開始,Amazon 決定降價!Data Storage 的部份除了從 USD$1.50/GB 降到 USD$0.25/GB (原來的 1/6!),還另外提供六個月免費「試玩」的 quota:\r\n
We've made the business decision to go with SimpleDB even simpler than it was before. You can now get started for free. For at least the next six months, you can consume up to 500 MB of storage, and you can use up to 25 machine hours each month. You can transfer 1 GB of data in, and another 1 GB out. You can move as much data to and from Amazon EC2 as you would like, for free.
\r\n試玩的 quota 如上所寫,500MB、25 machine hours/month、1GB/month 流入流量、1GB/month 流出流量。\r\n\r\n站如果不大,幾乎不會花到錢 :p", + "title": "Amazon SimpleDB 降價" + }, + { + "id": "1876", + "body": "官方公告:Adblock Plus 1.0 released。\r\n\r\nAdblock PlusFirefox 上相當熱門的 addon (目前在下載排行榜第三名),是一套擋廣告的附加軟體。你可以自己寫條件式擋廣告,或是直接訂閱別人寫好的條件式 (會自動更新!)\r\n\r\n在「Known Adblock Plus subscriptions」這邊有列出一些常見的阻擋名單,我個人推薦 EasyList,在看國外的網站會少很多廣告。如果有在看大陸網站,可以試試 ChinaList,擋的也還不錯。", + "title": "Firefox 擋廣告的 Adblock Plus 釋出 1.0 版" + }, + { + "id": "1877", + "body": "現在要遇到因為 Firefox 而導致「基本功能」不能用的網站其實還真的不多,除了學校與銀行的網站經常是 IE-only (噗),商業性網站通常還是會考慮 Firefox,畢竟網路重度使用者比較不會被網路交易的技術門檻擋到。\r\n\r\n博客來從以前就很不 Firefox-friendly。剛剛想要訂「銀河鐵道之夜」,如果你用 Firefox,「加入會員」頁按「同意」是過不去的。\r\n\r\n改去金石堂訂就沒這個問題 (然後發現單本就可以免運費到超商拿貨),那... 博客來 byebye... XD\r\n\r\nUpdate:這兩天忙著其他東西所以沒找出原因,我測試的結果是,Firefox 3.1alpha、Firefox 3.0.6pre 點了「同意」都會失效,如果是 Windows 上的標準版本就沒問題。當時用了五分鐘看了 Javascript code 也看不出來 (不是直接判斷 \"Firefox\" 這個字),等有時間的時候我再找原因看看...", + "title": "博客來的網站的註冊頁面..." + }, + { + "id": "1879", + "body": "PHP 5.2.8 是 security update,用 5.2.6 的人應該儘速更新。(Debian sid php5 怎麼還在 5.2.6.dfsg.1-0.1... =_=)\r\n\r\n因為 php5-pcre 直接被納入 php5 內 (也就是不需要額外再安裝,這個 port 已經消失),而直接用 portupgrade 升級 php5 會造成 php5-pcre 不會被移除,所以需要一些強硬的手段:\r\n
# cd /var/db/pkg\r\n# pkg_delete -f php5-pcre-*\r\n# portupgrade -f php5*\r\n# portupgrade -f pecl*
\r\n然後再跑 pkgdb -F 把 dependency 清理一下。", + "title": "FreeBSD 上升級到 PHP 5.2.8 的一些小細節..." + }, + { + "id": "1880", + "body": "我說的是 flot -Attractive Javascript plotting for jQuery 這個 library,利用 jQuery 畫圖。\r\n\r\n對 IE6/Firefox2/Safari3/Opera9.5 以上的瀏覽器都可以用。(不過,IE 是透過 Canvas 模擬器支援,理論上速度會比較慢。實際用 IE7 測試,簡單的圖速度還蠻快的)\r\n\r\n重點程式碼是:\r\n
var d1 = [[0, 1], [1, 1], [2, 2], [3, 2], [4.5, 2.5], [5, 2], [6, 3]];
\r\n$.plot($('#placeholder'), [{label: 'test', data: d1, lines: {show: true}}]);
\r\n出來的圖是:(那個 test page 只是一個 <h1>test page</h1>,與上面的程式碼無關)\r\n\"\"\r\n預設的效果就蠻漂亮了 (線條有陰影效果)。\r\n\r\n在官方網站上的範例頁有更多的範例可以看。", + "title": "flot - 用 jQuery 畫圖的 library" + }, + { + "id": "1882", + "body": "昨天在翻這張圖的時候「感覺」到速度特別快,原本以為是 Zooomr 的圖片伺服器上了 CDN,後來發現他只是把伺服器 (static.zooomr.com) 搬到日本:\r\n\r\n\"\"\r\n\r\n不過他的 UI 變得好亂,如果有要求外連速度的人可以考慮看看... XD", + "title": "Zooomr 的圖片伺服器放到日本..." + }, + { + "id": "1883", + "body": "有機會跟 Sun 借測 Sun Storage 7110,目前測了半個小時,可以理解為什麼 ZFS 會被 NetApp 告了... XD\r\n\r\n因為我已經取得 sales 的同意寫「開箱文」,所以這幾個禮拜 (不知道測多久) 會陸陸續續寫一些出來。\r\n\r\n這是 7110 的狀態頁,這頁不是 Flash/Java,看起來可能是用 Comet 做一些效果:\r\n\r\n\"\"\r\n\r\n美金定價在官方網站有,目前是 USD$10,995,以這種功能來看,光是定價就殺翻了... XD", + "title": "Sun Storage 7110" + }, + { + "id": "1884", + "body": "目前 Facebook 用了 800 台,共 28TB 的 memcached server:「Scaling memcached at Facebook」。計算上應該是有很多 64GB RAM 這個等級的 server 在撐。(2007 年五月的時候是 200 台 16GB 的機器:Re: Largest production memcached install?)\r\n\r\nFacebook 使用的量夠大,所以花了不少時間找出 memcached 本身的問題。他們把修正後的版本放到 Github 上,這陣子應該會慢慢 back-port 回官方版本:「Facebooks modifications to memcached for I/O, CPU and memcory scaling」。\r\n\r\n首先是 memcached 用 TCP,但前端的 Web Server (Apache) 有很多連線,這對 memcached 本身不是問題 (因為使用 libevent),但每個連線都會消耗一些記憶體 (像是 buffer),所以 Facebook 改寫 buffer 的部份,以 buffer pool 的方式共用資源。(\"we implemented a per-thread shared connection buffer pool for TCP and UDP sockets\")\r\n\r\n另外是開發 UDP memcached Protocol,用這個方式提高 TCP Protocol 本身的效率問題。但實際在使用時發現 Linux kernel 對於 UDP socket 的 locking mechanism 並不好。治本的方法是修正 Linux kernel 的 UDP socket locking mechanism,不過他們認為工程太浩大,所以改為使用多個 UDP socket 解決這個問題。\r\n\r\n在 appliction level 則是儘量使用 multi-get,盡可能減少封包數量以及延遲時間 (latency)。\r\n\r\n再來是因為封包數量太多,Linux kernel 對於網路處理預設的方式會有過多的 interrupt,所以這部份要調整成 polling-based algorithm (並且配合 interrupt 避免過高的 latency),以此提高 Network I/O 效率。\r\n\r\n接著發現 memcached 的統計分析是一個 global lock,在 8-core 上會有 20%~30% 的 CPU resource 卡在 lock 上,所以這部份被改寫成 per-thread stat,並且在真正需要產生資料時再加總,避免了 lock 的問題。最後則是發現 Linux kernel 處理 UDP transmit 的 queue 本身也有 lock 問題,這部份的改善則是透過 batch processing 減少 locking 問題,降低 locking 的需求。\r\n\r\n在這些修正後,單台 server 可以從原先的 20k UDP requests/sec 拉到 50k UDP requests/sec。", + "title": "Facebook 的 memcached" + }, + { + "id": "1886", + "body": "標題不知道怎麼下,先訂這樣...\r\n\r\n我會訂很多 feed 的一個原因是,有時候總是會看到一些有趣的東西。像是 Amazon Web Services Blog 的文章大多都沒什麼看頭,主要是廣告性質。但有時候總是有一些有趣的東西可以吸收,像是「Architecting for the Cloud」這篇文章裡所提到的「EC2 Infrastructure」這篇。\r\n\r\n對我而言,MySQL Configuration 這段提到的觀念讓你知道 XFS 上的 MySQL 要如何備份。雖然他是以 Amazon EBS 備份,但同樣的觀念也可以用在 NetApp 或是 Sun Storage 7000 Unified Storage Systems 上。(snapshot 的觀念)\r\n\r\n然後是 Postfix configuration 這段所提到的觀念。如果你發信常常會被擋住,有一些公司有提供 SMTP 服務幫你處理。他所提到的 AuthSMTP 變成一個 entry point,我可以用這個站台去其他的論壇找資料比較,看看哪些服務的穩定性比較好,而且價位相對起來比較便宜。", + "title": "從 EC2 Infrastructure 這篇文章看一些觀念..." + }, + { + "id": "1887", + "body": "Percona 宣佈新的 Storage Engine,從 InnoDB 修改出的 XtraDB:Announcing Percona XtraDB Storage Engine: a Drop-in Replacement for Standard InnoDB。\r\n\r\n據他們所宣稱,這個版本會 100% 相容於 MySQL 內建的 InnoDB,所以他們推薦大家直接換過去用。而 OurDelta 的 5.1 版本會直接內建 XtraDB 作為 InnoDB 的取代品。\r\n\r\n這狠狠的打了 Sun/MySQL AB (以及 Oracle) 一巴掌。\r\n\r\n有些有趣的想法可以從 Jeremy Zawodny (High Performance MySQL 第一版第二版的作者之一) 的 The New MySQL Landscape 這篇文章裡看到。配合 SlashdotIs MySQL's Community Eating the Company? 這篇看就更有感覺了... (尤其是 comments)\r\n\r\nUpdate 2008/12/19:有興趣的人可以看「XtraDB benchmarks - 1.5X gain in IO-bound load」這篇文章,裡面有一份 benchmarking。(不是很嚴謹的方式)", + "title": "XtraDB:InnoDB 的取代品" + }, + { + "id": "1888", + "body": "Mercurial 並沒有內建 local branch 的功能,需要安裝 3rd-party extension 模擬 local branch。在官方網站的 wiki 上上有說明這項功能的下載地點與使用方法:Local Branch Extension。\r\n\r\n下載了之後,在自己 ~/.hgrc 裡加上:\r\n
localbranch = /full/path/localbranch.py
\r\n有個試了好幾次才發現問題的地方:FreeBSD 上 1.0.2 版的 Mercurial 與最新版的 localbranch extension 會有問題,要配上 2007 年九月的版本才會動。\r\n\r\n不過畢竟是「模擬」出來的,比起 Git 還是差不少。", + "title": "Mercurial 的 LocalbranchExtension" + }, + { + "id": "1889", + "body": "在 Twitter 上看到 John Resig 的訊息,說 jQuery 不再使用 browser detecting 的技巧,完全改用 Object detecting:「They said it couldn't be done: jQuery no longer uses any browser/useragent sniffing! http://bit.ly/eXrP」\r\n\r\nBrowser detecting 在 ppk 的「Browser detect」這篇文章裡有提到,經常被用於 (且誤用於) 功能的判斷。比較好的方法是 Object detecting。\r\n\r\n譬如說,目前 Firefox 3 支援 getElementsByClassName(),但 Firefox 2 並不支援。如果你要使用這個功能,應該利用 object detecting 這樣寫:\r\n
if (document.getElementsByClassName) {\r\n    // do something with getElementsByClassName\r\n} else {\r\n    // use getElementsByTagName to emulate it\r\n}
\r\n而非用 browser detecting:\r\n
if (firefox3) {\r\n    // do something with getElementsByClassName\r\n} else {\r\n    // ...\r\n}
\r\n除了程式碼比較合理 (乾淨) 外,這樣寫出來的 code 也比較 future proofing。這點可以參考 John Resig 的「Future-Proofing JavaScript Libraries」。", + "title": "jQuery 不再使用 browser-detecting 的技巧" + }, + { + "id": "1890", + "body": "Perl 5 將拋棄 Perforce,跳到 Git 管理:「Perl 5 now uses Git for version control」。\r\n\r\n岔個題,最近寫 PHP 寫的比 Perl 多不少,似乎有點生疏了...", + "title": "Perl 5 將從 Perforce 換到 Git" + }, + { + "id": "1891", + "body": "John Resig 丟出 jQuery 1.3 Beta 1 讓大家測試:「Help Test jQuery 1.3 Beta 1」,文章裡面提到新的 Selector Engine,也就是 Sizzle,速度會再往上提昇。\r\n\r\nSelector Engine 的速度繼續往上提昇當然是好事,不過主要是對於不良習慣的 programmer 會有更大的好處:\r\n
var queryString; // 某個很複雜的 css3 selector\r\n$(queryString).html('some string');\r\n$(queryString).css('opacity', '0.5');\r\n$(queryString).show();
\r\n這種 code 看了就很想要巴人腦袋... =_=\r\n\r\n另外有很多地方改寫後速度快更多了 (像是 DOM 的寫入操作),參考「jQuery 1.3 beta: Sizzling and feature testing」這篇。", + "title": "jQuery 1.3 Beta 1" + }, + { + "id": "1893", + "body": "到公司跟 ManicjQuery 1.3 的時候才發現少提了一個很重要新功能:Live Event Delegration。\r\n\r\n假設你對 #foo 裡的圖掛上一些 event:\r\n
$('#foo img').hover(f);
\r\n接下來你重新讀取 #foo:\r\n
$('#foo').load('/url/foo.php?page=' + num);
\r\n在 1.3 之前,本來的事件必須重新再掛一次:\r\n
$('#foo img').hover(f);
\r\n在 1.3 後,你可以一開始用 Live Event Delegration 掛上去,他會自己在裡面內容更新後重掛:\r\n
$('#foo img').live('hover', f);
\r\n這個功能可以少寫不少 code...\r\n\r\n另外一點是速度問題。有人在 mailing list (Google Groups) 上回報掛上 Sizzle 後,FirefoxOpera 的速度反而比較慢:「Sizzle maybe slowing down DOM manipulations」,這個問題在 John Resig 確認後發現是 Sizzle 的 cache 問題後修正了:「Removing the caching code for Firefox and Opera - caused a severe negative performance impact for those browsers.」,所以在 1.3 Beta 2 的時候應該會感覺到更快。", + "title": "jQuery 1.3 的 Live Event Delegration,以及速度問題" + }, + { + "id": "1894", + "body": "Slashdot 的消息「Software-Generated Paper Accepted At IEEE Conference」,又是一篇拿 SCIgen - An Automatic CS Paper Generator 亂玩的例子 XD\r\n\r\nPS:我印象中應該有寫過,不過一時間找不到...", + "title": "機器產生的論文投上 IEEE CSSE 2008" + }, + { + "id": "1897", + "body": "年末了,除了一些年末總是會有的事情外 (像是帳務問題),最近一直找問題、解決問題、再找問題、再解決問題...\r\n\r\n一個是 SmokePing 啟動速度很慢的問題,我在「Smokeping 啟動速度很慢的問題」有提到問題點與 dirty hack 的方法。\r\n\r\n最近想辦法改善 am-utils (amd) 在 FreeBSD 上的穩定度,jnlin 看起來頗無奈 XD\r\n\r\nMySQL Percona 版本跑起來相當不錯,不過還是踩中地雷 (5.1 也有的地雷,某些情況下會用到比較奇怪的 index,不僅效率較差,結果居然是錯的...),得生一組可重製問題的 public dataset 讓 MySQL 官方修正。\r\n\r\n然後秋番也差不多結束了,冬番也快要開始了,這個元旦大概會狂衝進度,把一些覺得還可以的作品看完吧 XD", + "title": "忙碌..." + }, + { + "id": "1898", + "body": "如果要建立 FreeBSD 的 image (給 PXELinux 用),通常會參考「FreeBSD disk image creation」這篇的方法建立。\r\n\r\n不過這個方法很繁雜,所以早就有人寫成 script 了:Log of /src/nrelease/install-iso2img.sh,不過這個檔案有點問題,要自己把 =3D 換成 =,另外以 = 結尾的要自己接起來。", + "title": "PXELinux 的 Image" + }, + { + "id": "1899", + "body": "UpdateMozillaMicorosft 都發出 security report 了,參考 MD5 Weaknesses Could Lead to Certificate Forgery (Mozilla) 與 Microsoft Security Advisory (961509) Research proves feasibility of collision attacks against MD5。\r\n\r\n標題的 NOW 有兩個意思,一個是強調「已經」,另外一個是「現在」。\r\n\r\n在 2004 與 2005 年的時候,密碼學界相當轟動的事情:王小雲的 MD5 collision。這件事情很有名,但實際上更具破壞性的是 Arjen Lenstra、王小雲、Benne de Weger 三位所發表的「Colliding X.509 Certificates」,示範如何使用 MD5 collision 湊出一個合法的 X.509 certificate。\r\n\r\n2005 年 Arjen Lenstra 所示範的重點在於「MD5 collision 已經有能力去配合 protocol 變化」,同時說明攻擊其他 protocol 的可行性。\r\n\r\n不過,Arjen Lenstra 的論文似乎沒被重視,還是有 Chain SSL Certificate 是用 RSA-MD5 簽,於是在 2008 年年底,事情就爆發了,有團體拿了兩百台 PS3 硬是產生出一組合法的 Chain CA:「MD5 considered harmful today」。\r\n\r\n換句話說,有了這組 Chain CA private key 的人,他可以自己建立任何一個站台的 SSL key (像是 www.paypal.com) 再自己簽。簽出來的 Certificate 可以被所有主流瀏覽器認為合法的 SSL Certificate。就像下面這張圖他們簽了 127.0.0.1:\r\n\r\n\"\"\r\n\r\n大爆走了... IE 可能過陣子就會上 security update 把 RSA-MD5 擋下來,不過這樣就會有一堆站台爛掉。而這陣子這幾家還在用 MD5 的公司可能會忙著重簽?\r\n\r\n暫時性的 RSA-SHA1 不是一個好方法 (雖然 SHA1 collision 還不到可接受的時間範圍),而 RSA-SHA2 還在 draft (目前是 05),看起來大家要頭痛一陣子了...", + "title": "SSL broken *NOW*" + }, + { + "id": "1901", + "body": "如標題所說的 Microsoft Zunes 大規模當機 (SlashdotMicrosoft Zunes Committing Mass Suicide),原因是 2006 年版本的 Zunes 無法正確處理 2008/12/31 的「閏秒」而當掉。\r\n\r\n微軟官方的回應「30gb zune issues -- official update」也很妙,直接說 2009/1/1 就會正常了,至於更新軔體的問題:\r\n
Q: Will you update the firmware before the next leap year (2012)?\r\nYes.
\r\n擺明就是不打算更新... XD (2012 年的時候也不需要更新了?)", + "title": "Microsoft Zunes 大規模當機" + }, + { + "id": "1902", + "body": "一直以為 mod_fastcgiDebian 從 repository 裡拿掉,後來才發現是在 non-free 裡面,只是因為新灌的 Debian 沒有把 non-free 加上去所以找不到。\r\n\r\n用了一陣子的 mod_fcgid,現在換回 mod_fastcgi 看看有沒有比較穩定囉。", + "title": "從 mod_fcgid 換回 mod_fastcgi" + }, + { + "id": "1903", + "body": "參考下面的影片 XDDDD\r\n\r\n\r\n\r\n來自 Slashdot 的「Why Not To Shout At Your Disk Array」。", + "title": "別對磁碟陣列大喊..." + }, + { + "id": "1904", + "body": "在「Update Vulnerable Programs from Your Computer」這篇看到 Secunia 有一個工具,可以幫你掃系統內已知軟體的安全性,叫做「Secunia Personal Security Inspector」。\r\n\r\n像是我的電腦裡的 IE7 還是用有問題的 Adobe Flash Player 9,就被抓出來要求更新:\r\n\r\n\"\"\r\n\r\n這套軟體可以丟在右下角的 icon,讓他定時檢查系統內的軟體是否有問題,算是相當好用。", + "title": "自動掃描系統內有安全漏洞的軟體 Secunia Personal Security Inspector" + }, + { + "id": "1905", + "body": "最近國外的論壇傳言,如果用 IE6 登入 Gmail,會出現希望使用者升級到 Firefox 或是 Chrome 的訊息。\r\n\r\n這個消息出來好幾天了,但我用 IE6 登入 Gmail 卻試不出來...\r\n\r\n想看訊息的人可以參考「Upgrading from Internet Explorer 6」這篇文章裡所抓下來的圖。有人有看到類似的畫面嗎?", + "title": "Gmail 希望 IE6 使用者升級" + }, + { + "id": "1907", + "body": "TechCrunch 的大頭目 Michael Arrington 提出 iPhoneMySpaceFacebook 在 2009 年的目標會是「小額付款」:「iPhone, MySpace, Facebook Race To Micropayments In 2009」。\r\n\r\nApple 在這塊看起來比起其他兩家領先不少,iPhone 上面的付費機制已經有個形了。\r\n\r\nFacebook 與 MySpace 分別在去年都宣佈要做這項服務,但如同 Michael Arrington 所說的,到現在還沒出來應該是遇到金流的老問題:詐騙、退款、安全問題。Apple 在 iTunes 學到不少經驗使得他們進度超越 Facebook/MySpace 不少。\r\n\r\n回過頭來比較台灣的環境,iPhone/MySpace/Facebook 是先養平台 (先有內容),然後再自己建立金流環境,並在上面獲利。國內則是有業者想要自己做金流,然後希望平台去使用他們的金流系統,這些業者的成敗就可想而知了。", + "title": "2009 年,iPhone、MySpace、Facebook 的目標?" + }, + { + "id": "1909", + "body": "這套軟體是在「Power Twitter: Inline Media, Integrated Search And A Lot More」上面看到的。\r\n\r\nPower Twitter 是一個 Firefox Extension,改善 Twitter 本身就有提供但是動線不佳的功能,用起來感覺還不錯。我自己在 Firefox 3.1 上也可以跑。\r\n\r\n主要的幾個功能是將 search.twitter.com 的功能整合進來,像是旁邊的搜尋列,以及滑鼠移動到頭像上所展開的視窗。裝完後其實跟原來的樣子差不多,但用起來方便多了:\r\n\r\n\"\"", + "title": "Power Twitter" + }, + { + "id": "1910", + "body": "會想要用 WebDAV 存取 Git 是因為目前在用的 SubversionMercurial 都可以掛在 Apache 下,透過 LDAP 認證。\r\n\r\n用 Google 找資料通常會找到 kernel.org 的「Setting up a git repository which can be pushed into and pulled from over HTTP(S).」這篇,實際上也只需要看這篇,因為這篇沒提到的東西都做不到... (炸)\r\n\r\n照著 kernel.org 那篇的作法應該都沒問題,最大的麻煩在於必須把密碼寫到 ~/.netrc 裡,不寫的話不會像 Mercurial 會給提示要求輸入密碼,反而當作是沒有密碼送出去,於是 server 端就會看到不允許空密碼的錯誤訊息。\r\n\r\n我實在不喜歡把密碼寫到檔案裡,看來還是得試看看以 ssh 認證...", + "title": "使用 WebDAV 存取 Git" + }, + { + "id": "1911", + "body": "在 Slashdot 看到 Zune 當機的原始程式碼被釋出的消息:「The Exact Cause of the Zune Meltdown」。\r\n\r\n程式碼在 #349916 這裡,會當機主要是因為沒有考慮到閏秒。(最少在 ConvertSeconds、SetTime 以及 CheckRealTime 這三個函式有這個問題)\r\n\r\nUpdate:會當機的原因請參考 comment 裡 kcwu 寫的說明。", + "title": "Zune 當機的程式碼被釋出..." + }, + { + "id": "1912", + "body": "在 Apple 官方網站 Steve Jobs 解釋為什麼他不會參與這次 Macworld:「Letter from Apple CEO Steve Jobs」。\r\n\r\n主要的原因如同大家之前所傳言的健康問題。由於荷爾蒙失調造成體重降低,他的醫生希望他花多一點時間靜養。", + "title": "Steve Jobs 公開說明健康狀況" + }, + { + "id": "1913", + "body": "睡不著,爬起來換個 Theme,也許過幾天心情好又會換回來...\r\n\r\n這次換 Theme 順便改了 CSS 的部份 (原來這個 Theme 是專門設計給 1024x768),螢幕寬度夠的人在看程式碼之類的內容會比較舒服。不過文字的部份應該會蠻怪的,因為每個段落都不長...", + "title": "換 Theme" + }, + { + "id": "1915", + "body": "大清早起來就看到 John ResigTwitter 上說他弄了一套 Settlers of Catan:「My copy of the Catan Card Game arrived today. It looks like a ton of fun (and based upon the review s, it should be).」\r\n\r\n翻資料的時候在 Wikipedia 上看到超大顆的 Catan... XDDD\r\n\r\n\"\"", + "title": "卡坦島..." + }, + { + "id": "1916", + "body": "照著「在 Linux 上架設 Screenshot Service」這篇講的方法在 Debian 上灌。xdite 是在 Ubuntu 上灌,結果像 Flash Player 這類 Debian policy 原因而超麻煩 (加上平台是 amd64),吃了不少苦頭,不過也測出一些東西,可以確保安裝出來的玩具比較正常。\r\n\r\n透過 Xming,有很多地方可以 tune:\r\n\r\n這是 Xming 的畫面:\r\n\r\n\"\"\r\n\r\n還有蠻多地方要努力的,不過目前看起來還蠻不錯...", + "title": "網頁截圖" + }, + { + "id": "1917", + "body": "最近 Twitter 有一堆帳號被盜用是因為有人用字典攻擊法 (喂喂,這是 web 耶) 破了 staff 的密碼,並且進入 Twitter 的管理介面。Wired 雜誌向該位 cracker 取得了影片,裡面示範時直接列出是哪個 staff 的帳號被破:「Weak Password Brings 'Happiness' to Twitter Hacker」。\r\n\r\n\r\n\r\n(如果不清楚的話,可以點「H.264 版」看)\r\n\r\n沒有限制 IP、沒有將站方管理介面藏到內部網路,Twitter 你們幹得真好!", + "title": "最近 Twitter 被亂摸的事情..." + }, + { + "id": "1918", + "body": "因為看不慣 WordPress 本身的 Recent Comments... :o", + "title": "換回 K2 Theme..." + }, + { + "id": "1920", + "body": "看到「Panasonic Working On 2-Terabyte SD Cards」這則新聞的時候看到 exFAT (FAT64) 這種東西 XDDD\r\n\r\n在 Windows Embedded CE 6.0 上首次亮相,支援的 OS 也不多 (Vista SP1、Server 2008,以及 7),而且目前的 license 還不明朗?主要是用在無法接受 NTFS overhead 的環境。", + "title": "exFAT (FAT64)" + }, + { + "id": "1921", + "body": "Google 宣佈服務將會延伸到 IPv6 network 上:「Access Google services over IPv6」。\r\n\r\n目前 www.google.com 的 AAAA record 必須透過 IPv6 的 DNS query 才能拿到。一般人還是得透過 tunnel 或其他軟體才有機會使用。", + "title": "Google 宣佈服務將會延伸到 IPv6" + }, + { + "id": "1922", + "body": "從「Manage Amazon EC2 With New Web-Based AWS Management Console」看到 Amazon 公告,EC2 推出網頁管理介面,終於可以把 Elasticfox Firefox Extension for Amazon EC2 移除掉:\r\n\r\n\"\"\r\n\r\n目前看不到 EU EC2 (也無法管理這部份),不過這不影響我的使用。如果接下來可以把 Amazon S3 也整合進來,那麼就可以再拿掉一個 Amazon S3 Firefox Organizer(S3Fox)...", + "title": "Amazon EC2 推出網頁管理介面" + }, + { + "id": "1924", + "body": "GearmanBrad Fitzpatrick 的一個作品,用 Perl 寫的 job server,在 client library 本身就支援一定程度的高可靠度。\r\n\r\n雖然 Gearman 用 Danga::Socket (這東西用 IO::KQueue),但不像 Brad Fitzpatrick 其他作品,Gearman 的擴展性並不佳,這點在 Gearman 的 mailing list 上已經有被討論過。\r\n\r\n不過 Gearman 在 sync job server 這個軟體領域裡有不少優點,有蠻多人還蠻喜歡用的。於是有人著手用 C 改寫 Gearman (New Gearman Server & Library in C, MySQL UDFs),並且改善了效率問題 (Faster Gearman)。\r\n\r\n軟體目前還是 0.1 版,不過頗值得期待的。", + "title": "用 C 改寫後的 Gearman" + }, + { + "id": "1925", + "body": "IE8 雖然還在 beta,但 User-Agent 的說明表已經先放出來了:「The Internet Explorer 8 User-Agent String (Updated Edition)」。\r\n\r\n包括 IE8 (on Vista)、IE8 在 IE7 相容模式 (on Vista)、Windows 7 下的情況、Windows x64 版本環境的字串。", + "title": "微軟官方給的 IE8 User-Agent 說明" + }, + { + "id": "1926", + "body": "在 Slashdot 上看到印度 (孟買) 當地警察會掃描不安全的無線網路,並下令他們改善:「Mumbai Police To Enforce Wi-Fi Security」。\r\n\r\n警方宣稱,恐怖份子在攻擊前利用不安全的無線網路寄送信件。為了防止再度發生類似問題,警方會取締不安全的無線網路並強制改善。", + "title": "印度警察取締不安全的無線網路" + }, + { + "id": "1927", + "body": "昨天在家裡的 Firefox 3.1 beta 上玩的很高興,到公司卻發現 Firefox 3.0 還沒支援,不過,可以安裝 Text Shadow 支援之個屬性。(雖然副作用還蠻多的)\r\n\r\n據說 Safari 很早就支援,但同樣使用 WebKitChrome 卻不支援...\r\n\r\n可以在 CSS - text-shadow 看瀏覽器是否有支援這個屬性。\r\n\r\n補充,這是 Firefox 3.1 下看到的樣子:\r\n\r\n\"\"", + "title": "CSS2 中的 text-shadow 屬性" + }, + { + "id": "1929", + "body": "在 37signals 上的「The bullshit of outage language」這篇提到當機時 (outage) 這三個詞彙毫無誠意:\r\n\r\n然後第一個 comment 的地方,有人找到之前 37signals 因為 Rackspace 爛掉造成服務中斷時的道歉公告「Downtime notice」:\r\n
We deeply apologize for any inconveniences this may have caused and will work hard to make sure we reduce the likelihood of this happening again.
\r\n(狂噴淚)", + "title": "當機時的道歉?" + }, + { + "id": "1930", + "body": "jQuery 1.3 正式版照著預定,在 1/14 放出來了:「jQuery 1.3 and the jQuery Foundation」。1.3 的 release note 可以在「Release:jQuery 1.3」這邊找到。\r\n\r\n速度改善很多,主要是 \"HTML Injection Rewrite\" 的部份改寫後的效果最好。(Selector 的部份還好,本來就很快)\r\n\r\nGoogle AJAX Libraries API 上也有了:http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js,要使用的人可以自己設定,不過文件還沒更新。\r\n\r\nUpdateJohn ResigTwitter 上提到 1.3 有些 bug,所以下個禮拜可能會出 1.3.1。", + "title": "jQuery 1.3" + }, + { + "id": "1933", + "body": "FreeBSD 上跑 Apache 2.2 worker 的方法在「apache22 (worker) + mod_fastcgi + php5-fcgi」這篇寫過了,同樣的架構在 Debian 上跑卻發現比 prefork 還吃記憶體,花了一些時間找,發現是預設的 Stack 太大造成的,所以:\r\n
<IfModule mpm_worker_module>\r\n    ThreadStackSize   65536\r\n    ThreadLimit         256\r\n    StartServers          1\r\n    MaxClients          256\r\n    MinSpareThreads       1\r\n    MaxSpareThreads     256\r\n    ThreadsPerChild     256\r\n    MaxRequestsPerChild   0\r\n</IfModule>
\r\n加了 ThreadStackSize 這個設定後,每個 thread 的 stack 就會比較小了 (預設超過 1MB,不記得多少了),這個方式跑了一個月後還蠻正常的。", + "title": "Debian 上跑 apache22-mpm-worker" + }, + { + "id": "1934", + "body": "John Resig 寫了篇 jQuery 1.3.1 的細節 (順便公告 jQuery 1.3.1 出版了):「jQuery 1.3.1 Released」。\r\n\r\n主要包括:\r\n\r\n1.3.1 修掉的 bug 在「{30} jQuery 1.3.1 Closed Bugs」這裡可以看到。(裡面有一個 enhancement,不太重要?)", + "title": "jQuery 1.3.1" + }, + { + "id": "1935", + "body": "這篇說的方法在 Debian 可能也一樣,不過暫時沒有打算在有 Debian 的機器上測試。\r\n\r\n關於 Ubuntu 的修改,你可以參考「Java - Community Ubuntu Documentation」這篇,我在下面提到的方式會透過 update-alternatives 修改。\r\n\r\n裝完 SunJava 後發現還是跑 GNU 的版本,看了 link 結構後猜大概會跟「Ubuntu / Debian 快速修改預設編輯器(nano -> vim)」這篇的方法一樣:\r\n
lrwxrwxrwx 1 root root 22 2008-10-27 01:38 java -> /etc/alternatives/java*
\r\n所以修改方式是用 root 跑:\r\n
# update-alternatives --config java
\r\n同理,如果要把 compiler (javac) 也換成 Sun 的版本,用:\r\n
# update-alternatives --config javac
\r\n就可以了。用 -version 可以驗證:\r\n
$ java -version\r\njava version \"1.6.0_10\"\r\nJava(TM) SE Runtime Environment (build 1.6.0_10-b33)\r\nJava HotSpot(TM) Server VM (build 11.0-b15, mixed mode)\r\n$ javac -version\r\njavac 1.6.0_10
", + "title": "將 Ubuntu 裡的 Java 更換成 Sun 的版本" + }, + { + "id": "1937", + "body": "星期五晚上去天瓏一趟,把 ppk 寫的《ppk on JavaScript》中文版抱回家看,可以趁著年假沒有網路時翻閱。\r\n\r\n英文版是在 2006 年出版的,書評可以參考 othree 寫的「ppk on javascript 書評」,中文版在 2008/8 出版,由 Taobao UED 翻譯。\r\n\r\n在講 JavaScript 的歷史時 ppk 提到:\r\n
在我寫這本書的時候,Ajax 的熱潮仍然席捲全球。但是我相信他最終會像 DHTML 那樣結束:人們會完全對它失去興趣,而它將會原形畢露,只是少量 JavaScript 和大量的空話,雖然我不知道這會在何時發生。\r\n\r\nJavaScript 將回歸瘦時代,那時它的用途將再次被重定義,大型的解決方案將被精巧簡單的腳本所取代。
\r\n前面的趨勢似乎不會來臨,Ajax 被大幅證明對於操作介面的幫助,甚至還推動瀏覽器的升級。後面提到的事情,jQuery 這類 JavaScript Library 似乎符合 ppk 的想法。(jQuery UI 是另外一回事了...)\r\n\r\n2009 年看 2006 年的人對於未來 (當時的未來) 的猜測還蠻有趣的。", + "title": "ppk 的 ppk on JavaScript" + }, + { + "id": "1939", + "body": "CAPTCHA 廣泛的被用在阻擋機器人,一般是給你一張圖片,要求你輸入圖片的字。為了避免用 OCR 破解,CAPTCHA 通常會有各種變化,讓程式難以破解。\r\n\r\n但 Megaupload 的 CAPTCHA 的變化很簡單,像這樣:\r\n\r\n\"\"\r\n\r\n於是就有人用 Firefox + Greasemonkey,在純 JavaScript 的環境下以類神經網路破 Megaupload 的 CAPTCHA:「Megaupload auto-fill captcha」。\r\n\r\nJohn Resig 甚至寫了一篇文章分析這隻 Greasemonkey script 的程式碼:「OCR and Neural Nets in JavaScript」,從利用 getImageData 取得圖片內容、轉灰階、切字、去雜訊,到最後計算 Megaupload 的 CAPTCHA...\r\n\r\n剛好在 Slashdot 上看到「Building a Better CAPTCHA」也在討論用 CAPTCHA 是否能解決問題。(comment 才是重點)", + "title": "在 Greasemonkey 裡破 Megaupload 的 CAPTCHA" + }, + { + "id": "1941", + "body": "很久之前就在關注的服務,與 Amazon Web ServicesS3 + CloudFront 是直接競爭關係。\r\n\r\n在很早前就註冊,但一直因為帳號問題而沒測試,當時以為是系統忙碌,懶得寫信去問。這幾天想趁著過年的時候測,發現帳戶還是有問題,所以昨天請他們處理,今天帳號就正常了...\r\n\r\nMosso CloudFiles 的背後是 Rackspace,是一個與 Amazon S3 性質相同的檔案存儲服務,不過與 Amazon S3 不同的是,他的 HTTP 下載部份一定要透過 CDN,不像 Amazon S3 可以到 original server 抓取。\r\n\r\nMosso CloudFiles 使用的 CDN 是 Limelight Networks,這是全世界第二大 CDN,也是 YouTube 在使用 Google 的網路前使用的 CDN。他目前的價錢從 USD$0.22/GB 開始計算,與 Amazon CloudFront 的 Japan Edge 同一個等級,但 Limelight Networks 在 CDN 這塊的功夫比起 Amazon 真的強很多,像是 HiNet 的使用者會導到到美西的伺服器,而非香港的伺服器 (因為 HiNet 到香港的伺服器會走到北美)。\r\n\r\nMosso CloudFiles 的價錢頁面在「Pricing / Scaling」。Amazon CloudFront 的價錢則是在「Pricing」這頁。\r\n\r\n比較重要的是 CloudFiles CDN 的 GET request 本身是不算錢的,拿來放 CSS 與 JavaScript 之類的小檔案似乎相當不錯?\r\n\r\n除了官方提供了一些 API 外 (以及一些官方提供的 dev library,包括 JavaPHPPythonC#),Perl 的社群也寫了 CPAN module:Net-Mosso-CloudFiles,所以拿來跑 routine job (備份之類的) 應該沒有大問題。\r\n\r\n價位與 AWS 都差不多,以儲存空間及頻寬計費,目前 Inbound bandwidth (從外面流入 CloudFiles) 有優惠,可以看一下。\r\n\r\nUpdate:發現兩個大缺點,使得 CloudFiles 沒那麼吸引人了:\r\n\r\nUpdate:okay,直接問還是比較有效率的。第一個問題的答案頗糟糕:\r\n
@gslin There is a built in TTL - it can be changed vie the API.
\r\n是可以設短一點,但實在不太舒服...", + "title": "Mosso CloudFiles" + }, + { + "id": "1943", + "body": "環境是單顆 E5405 的機器,上面的作業系統是 FreeBSD 7.1,應用程式的部份是 apache 2.2 (worker) + mod_fastcgi 2.4.6 + PHP 5.2.8 + APC 3.0.19。\r\n\r\n由於前陣子發現 PHP 在 MP 架構下效能不太好,偶而會有一堆 php-cgi 卡住,用 top 會發現卡在 \"lockf\" 這個狀態,這時候前端的 L4 switch 會看到 500 Internal Server Error 而把這台機器暫時離線。等到 php-cgi 慢慢消化完,前端的 L4 switch 又會抓到 200。\r\n\r\n在 php-cgi 卡住的狀況下試著用 gdb 找原因,當時 backtrace 發現是卡在 APC 裡的 lockf,所以就有一些想法,等有空閒的時候測試。\r\n\r\n第一個想法是把 APC 的 lockf (fcntl) 改用 IPC semaphore,這個在 ports 可以調整。重新編完後發現 php-cgi 跑不起來,後來試出來,需要同時打開 mmap support 與 IPC semaphore。\r\n\r\n第一張是 webfront-7,跑 mmap + semaphore。第二張是 webfront-8,保持原來的 shm + fcntl (lockf):\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n效能有「好一點」,但很難觀察出來,實際再加上 webfront-{9,10} 比較後 (都是完全同型的伺服器),看起來 webfront-7 的效能是最好的,所以得觀察當爆量時是否會卡 lockf。", + "title": "FreeBSD 上 PHP5 的 pecl-APC 效能" + }, + { + "id": "1944", + "body": "前陣子提到了「用 C 改寫後的 Gearman」,在當時還是 0.1 版,現在已經 0.2 版了。花了一些時間把他 submit 到 ports tree 裡面,現在可以在 ports 裡的 devel/gearmand 裝起來,然後在 /etc/rc.conf 裡設定:\r\n
gearmand_enable=\"YES\"
\r\n裝好後預設是聽 port 4730 (IANA 配的位置),並打開 verbose 選項,也就是:\r\n
gearmand_flags=\"-p 4730 -v\"
\r\n如果要用舊的 port (7003),而且也不想要開 verbose:\r\n
gearmand_flags=\"-p 7003\"
\r\n這樣就可以了。", + "title": "FreeBSD 上的 Gearmand" + }, + { + "id": "1946", + "body": "在 Google Blogoscoped 看到的「Load Time of Google Analytics Script」這篇文章,介紹了 Pingdom 的「Google Analytics script loads 97% slower at peak hours – in Europe」這份報告。\r\n\r\n文章裡 Pingdom 量測 Google Analytics 的 javascript (urchin.js 這個檔案),發現在各地區尖峰時間都會變慢,尤其是歐洲會慢將近一倍的時間。在 Pingdom 的分析裡發現歐洲部份的讀取時間與 AMS-IX 提供的流量圖接近。\r\n\r\n這個檔案因為有設定一定時間的 expire time (604800 secs,七天),加上有接近 1/4 的頁面有使用 Google Analytics 的服務 (參考「MAMA: Scripting syntax」這篇文章裡提到的「External script file names」),我覺得讀取速度不會有太大影響,Google 算是盡人事了。", + "title": "Google Analytics 讀取的速度" + }, + { + "id": "1947", + "body": "懶的自己管機器了,所以把 blog.gslin.org 換到 Media TempleGrid-Service,機器反應速度還蠻快的。", + "title": "換到 Media Temple" + }, + { + "id": "1948", + "body": "前陣子 jQuery 1.3 出來,但問題還不少,除了在 jQuery 官方的 bug tracker 上可以看到外,在 PIXNET 內部測試時有發現一些問題,所以就暫時維持 1.2.6... (IE6 變快不少,所以以,其他的 browser 速度都不錯)\r\n\r\njQuery UI 這陣子在 RC 階段,結果決定要同時維持與 jQuery 1.2.6 與 1.3 的相容性:「jQuery UI 1.7 is the new 1.6」。\r\n\r\njQuery UI 1.6rc6 + 修正會是 jQuery UI 1.7,這個 branch 需要使用 jQuery 1.3 或更新的版本。而 jQuery UI 1.6rc2 + 修正會是 jQuery UI 1.6,讓決定使用 jQuery 1.2.6 的人可以享受到 jQuery UI 的新功能,但這個版本在完成後就沒有打算維護,純粹只是階段性產品,讓大家有更充裕的時間測試 jQuery 1.3+...", + "title": "jQuery UI 會同時保持與 jQuery 1.2.6、1.3 的相容性" + }, + { + "id": "1949", + "body": "T-Mobile G1 整合了許多 Google 的服務,像是 GmailGoogle Calendar 以及 YouTube。(在 G1 上面三個我最常用的服務)\r\n\r\n年前跟老大聚餐時聊到 iPhone 就聊到很多有趣的想法。現在想想,在 G1 上面也可以用...\r\n\r\n現在除了不能用打中文外 (KerKerInput 操作上還是不方便),其他的倒是都還不錯...", + "title": "T-Mobile G1" + }, + { + "id": "1950", + "body": "不知道是從哪邊傳出 CNAME 不能設到 CNAME 的觀念,剛剛特地找資料,發現可能被「誤解」的地方。\r\n\r\n在 RFC 1034 裡因為效率問題「建議」不要 CNAME to CNAME,但也強調這不應該視為錯誤:(5.2.2. Aliases)\r\n
Multiple levels of aliases should be avoided due to their lack of efficiency, but should not be signalled as an error.
\r\n參考:「Cname of Cname」。", + "title": "CNAME to CNAME" + }, + { + "id": "1951", + "body": "portmaster 是管理 FreeBSD 套件升級的程式,比起 portupgrade 的主要優點在速度 (這是重點),配合 portconf 幾乎可以替代 portupgrade。(參考兩年前的「portupgrade、portmaster、portconf」這篇文章)\r\n\r\n雖然兩年前就想要拿掉 portupgrade,但當年的 portmaster + portconf 用起來不習慣,直到這幾天為了升級強迫自己學習 portmaster,才試著把每個功能找出來。(速度考量。因為最近忙,實際用 portupgrade 發現完全不能接受)\r\n\r\n常用的指令包括:\r\n
對 portname 以及他所用到的 port 升級,不要一直詢問「是否要砍掉備份的 package」:\r\n# portmaster -u [portname]
\r\nportmaster 會把舊版軟體包成 package 放在 /usr/ports/packages/portmaster-backup,如果不需要可以砍掉。\r\n
將 pecl-hash-1.5 用 security/php5-hash 取代:(搬位置)\r\n# portmaster -u -o security/php5-hash pecl-hash-1.5
\r\n-o 這個指令與 portupgrade 相同,沒有什麼大問題。\r\n\r\n順手後,效率又上升了不少...", + "title": "portmaster" + }, + { + "id": "1952", + "body": "如果想在 Amazon EC2 上跑 XFS,在某些情況會遇到 kernel panic,而這個問題在 lenny (以及之後的版本) 上有比較簡單的解法了:「Debian Lenny and XFS causes kernel panic: Suggested Workaround」,解法是在 mkfs.xfs 時多增加 -l version=1 即可。\r\n\r\n另外官方也在下面 reply 了另外一個解法,針對 FC8 kernel 的修正。\r\n\r\n然後 Eric Hammond (EC2 上最有名的 Debian AMI 製作者) 說 Ubuntu 也開始在測試 EC2 platform (www.ubuntu.com/ec2),將會是第三個解法...\r\n\r\n如果有在 EC2 上用 EBS 跑 MySQL 的,可以考慮換成 XFS... MySQL 在 XFS 上比起 ext3 好不少。", + "title": "在 Amazon EC2 上跑 XFS" + }, + { + "id": "1955", + "body": "看起來 FreeBSD 決定走向 llvm 的路子,而非 NetBSD/OpenBSD 所選的 PCC...\r\n\r\n這是從 rafan 的個人板轉自 -current mailing list 的消息,clang/llvm 已經能夠編 FreeBSD GENERIC kernel,並且正常使用:「[ANNOUNCE]: clang/llvm can compile booting FreeBSD kernel on i386/amd64」,目前 make world 的部份也正努力改善中:「Building FreeBSD with clang/llvm」。\r\n\r\n目前 FreeBSD 還是跑 GCC 4.2.1 (最後一個 GPLv2 版本,目前 4.2 的分支已經出到 4.2.3 了),在 GENERIC kernel 可以 compile 的消息放出來後,應該會有更多的人加入測試或是跳進來改善。\r\n\r\n好久沒看到 FreeBSD 的大動作了...", + "title": "clang/llvm 能夠編 FreeBSD GENERIC kernel..." + }, + { + "id": "1956", + "body": "mydumper 是取代 mysqldump 的工具,主要的差異在於 mydumper 會同時對多個 table 備份,效率比 mysqldump 好。\r\n\r\n作者的說明文章在這裡:「mydumper」,我也順便做成 ports 了。\r\n\r\n可以用 --help 看用法,另外我提供常用的範例指令:\r\n
mydumper -h [hostname] -u [username] -p [password] -x '^tracdb\\.'
\r\n備份檔會放在同一個目錄裡 (export-*),看過範例以及 --help 的說明後,應該不太需要講解。", + "title": "mydumper (取代 mysqldump 的工具)" + }, + { + "id": "1957", + "body": "maatkit 是一組 MySQL 的工具程式,裡面包括了很多好用的工具。(之前最常用的應該是 mk-table-sync,同步兩台不同機器上的 MySQL 內容)\r\n\r\n在「mydumper (取代 mysqldump 的工具)」裡我比較的對象是 mysqldump,但在 mydumper 出來之前,maatkit 就有提供同時 dump 的工具,也就是 mk-parallel-dump。\r\n\r\n範例除了在上面的頁面裡就有之外,也可以參考:\r\n
mk-parallel-dump -h [hostname] -u [username] --gzip --locktables --numthread=8 --databases='[database]' -p [password]
\r\n這樣會把 dump 的結果抓到 default 這個目錄下。", + "title": "mk-parallel-dump (也是取代 mysqldump 的工具)" + }, + { + "id": "1958", + "body": "Plurk 前陣子放出 LightCloud,試著解決 Amazon 所提出的 Dynamo 用某些複雜方法解決問題。\r\n\r\n比起 Dynamo 的優點是:\r\n\r\n這個架構如果可行 (要看他解決 routing problem 的解法是否可以達到 scalability 特性),那麼就有很多有趣的應用可以在這個架構上跑。(直接當 filesystem 來放資料)", + "title": "Plurk 的 LightCloud" + }, + { + "id": "1959", + "body": "前陣子把公司裡所有的 repository 全部換成 Git 了...\r\n\r\n由於 Git 與 Subversion/Mercurial 運作的方法不一樣,換完後也跟著換 Workflow。\r\n\r\n原先 Subversion (1.5+) 對 branch 的 Workflow:\r\n\r\n用 Subversion 用一陣子,受不了他的速度後,有陣子在評估 Mercurial 與 Git。當時一直搞不定 Git 的 hook,所以就選了 Mercurial,所以有些 repository 用 Mercurial 開發了一陣子...\r\n\r\n在 Mercurial 上,local branch 的功能一直沒搞定,所以會轉成 Mercurial 的 repository 都是不需要 local branch 的功能。當時從 Subversion 換 Mercurial 速度快了許多。\r\n\r\n最後全部換成 Git 的主要原因是需要 local branch (anonymous branch),branch 的 Workflow 變成:\r\n\r\n速度比 Mercurial 又快了不少,local branch 也成熟,gitweb 畫面還蠻好看也是主因 (也許會試看看 cgit,畫面看起來也不錯),這次換完後大家都還蠻開心的?\r\n\r\nSubversion 轉換成 Git 的工具是 git-svn,把 branch 抓下來後去掉 Subversion 的資訊,直接將 master branch 推上 server。\r\n\r\nMercurial 轉 Git 用的是 fast-export,轉的速度相當快。轉完後要更改 branch 名稱,再將 master branch 推上 server。", + "title": "從 Subversion 與 Mercurial 換成 Git" + }, + { + "id": "1961", + "body": "剛剛才發現 OSDC.TW 2009 有 50mins 的時間,先把一些資料整理出來,做投影片會比較方便。(大概會做 25mins 的投影片吧)\r\n\r\nCDN (Content delivery network) 被稱為「內容傳遞網路」是一種內容快取機制,能提供高效能 (包括使用者以及內容提供者)、高可靠度、低成本的內容傳遞架構。不過,這幾個優點並不一定同時會發生。\r\n\r\n以對使用者高效能這點,通常指的是「就近取得檔案」,內容提供者事先將檔案推到全球的 CDN 節點,在台灣的下載者儘量從台灣取得檔案,在日本或香港的下載者也儘量從當地的伺服器取得檔案。\r\n\r\n由於在全球有多個節點,所以當某個節點不通時,可以導到次近的節點以達到高可靠度。 \r\n\r\n對內容提供者高效能的部份,是因為內容提供者不需要在一個 data center 上建立非常粗的水管。舉例來說,如果傳遞需要 100Gbps 的流量,利用 CDN 架構,每個 data center 也許只需要 5Gbps 的流量。由於十個 10Gbps 網路與 100Gbps 網路的成熟度不同,成本也會不相同。\r\n\r\n這是 CDN 的一些粗略的概念。", + "title": "CDN - 什麼是 CDN" + }, + { + "id": "1962", + "body": "用 CDN 最常見的兩個理由:\r\n\r\n另外還有其他的理由:\r\n", + "title": "CDN - 為什麼要用 CDN" + }, + { + "id": "1964", + "body": "要決定使用者應該要到哪組 server 通常有這些方法:\r\n\r\n這幾種不衝突,常見的是前兩者搭配著用。將 DNS server IP anycast,當下載者要抓某個 domain 時,近的 server 就會知道大致的區域。再配合 GeoDNS 判斷使用者的 IP address 適合到哪個 node。\r\n\r\n不過這些問題對 HiNet 就很麻煩。(留到現場講)\r\n\r\n再來就是 reverse proxy cache 所產生的問題,這個部份再想看看要怎麼寫。", + "title": "CDN - 技術面" + }, + { + "id": "1965", + "body": "前三大 CDN 服務提供者:\r\n\r\n其中 PIXNET 用的 Panther Express 前陣子被 CDNetworks 收購。\r\n\r\n另外,很熱門的:\r\n\r\nAmazon CloudFront 有公開的價錢,Akamai 與 Limelight 也有可以參考的價錢:(只是參考用)\r\n\r\n其中 Akamai 國內有代理商 (併力科技)。\r\n\r\n另外還有一些可以參考 Wikipedia 上的表。", + "title": "CDN - 服務提供者" + }, + { + "id": "1967", + "body": "要挑什麼 CDN 是依照需求而決定,我會談的是台灣的情況。\r\n\r\n在台灣有「用戶」的 ISP 中,HiNetTANet 的出國線路狀態是最差的,其他 ISP 的情況會好很多,所以測試的重點要放在這兩個 ISP。\r\n\r\n以影音來說,由於傳輸時間普遍會大於一秒,重點在於 bandwidth 而非 latency。所以到台灣抓與香港、日本,甚至到美國抓其實都 okay,只要 thoughtput 夠高就可以。以 1M 高畫質的影片換算,有穩定 150KB/sec 的速度其實就很順,如果是 600K 或是更低,有穩定的 100KB/sec 以上就 okay。\r\n\r\n如果是 css/javascript,因為檔案很小,latency 就變得很重要。可以從台灣本地提供檔案通常是最好的 (<10ms),或是從日本、香港 (~20ms 到 30ms) 提供,如果 CDN 業者可以幫忙 gzip 會更好 (因為他們會處理 IE6 的一卡車問題)。\r\n\r\n如果檔案是屬於下載性質,速度其實不是重點,重點在於成本的話,有些 CDN 業者有提供「經濟型網路」,通常是用北美較便宜的點提供下載。有一定的 commit 時會比 Amazon S3 的 USD$0.17/GB 便宜。\r\n\r\n除此之外,會因為不同的性質,要考慮的還很多...", + "title": "CDN - 要怎麼挑業者" + }, + { + "id": "1968", + "body": "這實在太令人震驚了,FFmpeg 居然釋出 0.5 版 XDDDD\r\n\r\n雖然很久沒有 release 新版,但其實 mailing list 上相當活躍,而且更新的速度也都蠻快的。我以為 developer 都已經很習慣叫大家用 Subversion/Git 拉回來編了... XD\r\n\r\n在 FFmpeg 的首頁上有放一份簡短的 feature list,這邊就不列了。", + "title": "FFmpeg 0.5!" + }, + { + "id": "1969", + "body": "「5 Minute DBA – Database Server Hardware Selection」講了一些幫資料庫選擇硬體的方式,其實是偏向 MySQL...\r\n\r\n簡單的說,CPU 超過 8 CPU 其實意義不大,不需要買 4*4core 或是 4*6core,因為 MySQL 目前無法利用到。\r\n\r\n記憶體愈大愈好,記憶體現在便宜許多,如果有 I/O bound 的問題,除了改寫程式外,直接把記憶體加到 32GB 或是 64GB 通常是最划算的方法。\r\n\r\n硬碟愈快愈好,有 Hardware RAID10 (要有電池) 會比軟體的 RAID10 好,不過這主要看需求,如果是 CPU bound 的應用,說不定 SATA 硬碟就夠用?\r\n\r\n網卡請務必用 GigabitEthernet,最好是 bounding/trunking,除了增加 thoughput 外,也可以當作 redundant link。然後作業系統一定要選 64bits,不然會受限於記憶體可定址空間。", + "title": "選擇 MySQL 用的硬體" + }, + { + "id": "1971", + "body": "MySQL 有幾種不同的方法實做 High Availability 架構:\r\n\r\n這三種方法各有不同的缺點,舉例來說:\r\n\r\n由於資料的正確性會比其他的因素重要,現在我還是偏好用 DRBD + Heartbeat。因 query 的特性而不會有 query dependency 問題的系統才會用 Master-Master。", + "title": "MySQL HA" + }, + { + "id": "1972", + "body": "上面一篇「MySQL HA」其實是要提 Mark Callaghan 所寫的「Global transaction IDs are hot」這篇文章。\r\n\r\n在三種架構下,DRBD + Heartbeat 的系統要加掛 slave 是最容易的,因為 master server 雖然跳動,但 replication 位置不會變。\r\n\r\n在 Master-Master 架構下,由於兩台 master 都有自己的 binlog,會使得 master 跳動時 slave 產生問題,也就是在 Mark Callaghan 文章裡所寫的三種解法 \"switch and hope\"、\"check and lose\"、\"check and fix\"。\r\n\r\n這三種解法都並沒有很完滿的解決問題 (第三種解法雖然看起來有 \"fix\",但是透過工人智慧手動解決)。\r\n\r\n一種方法是引入 Global transactions IDs,這是由 Google 提出的 patch:「MySQL Hierarchical Replication & Global Group IDs」,對 binlog 每筆 transaction 都加上一組 64bits 且遞增的數字,這樣 slave 就不會受到 master 切換而產生 replication err。\r\n\r\n先記錄下來,之後很有可能會透過 Google 又找到自己寫的文章...\r\n\r\nUpdate:看到「High Availability for MySQL: Considering the Options」這篇文章,要如何做 HA。", + "title": "MySQL HA 與 Slave 的關係" + }, + { + "id": "1974", + "body": "Amazon EC2 推出「Reserved Instances」費率,以最小的 instance 為例,你先付了 USD$325,他把 USD$0.1/hour 的機器費用降到 USD$0.03/hour (三折)。\r\n\r\n基本上與手機的「月租不可抵」型意思是一樣的,只是他是年約。\r\n\r\n假設以 365 天都租用最小的 instance 計算,本來是 USD$876,現在只要 USD$587.8,大約是 33% 的 discount。原來的計價方式與 Reserved Instances 的交錯點在 193.45 天,換句話說,要超過半年多才會比較划算,對一般人應該是沒有什麼影響。", + "title": "Amazon EC2 推出「年租不可抵」制度" + }, + { + "id": "1978", + "body": "在「Progress with clang」這篇看到,由於最近有人將 FreeBSD source 視為一個超大的 test case,依照 FreeBSD compile 出來的結果不斷修正 clang 的 bug,並且補上缺少的功能,使得由 FreeBSD 衍生出來的 DragonFly BSD 也受益...\r\n\r\n現在可以用 clang 編 GENERIC kernel 以及 buildworld 了 (只需要一個 patch)。這陣子 clang 的聲勢愈來愈大了...", + "title": "clang/llvm 也能編 DragonFlyBSD 整個系統了..." + }, + { + "id": "1980", + "body": "依照 http://update.freebsd.org/,7.1-PRERELEASE 並不在升級範圍內,所以會出現像這樣的訊息:\r\n
$ sudo freebsd-update fetch\r\nLooking up update.FreeBSD.org mirrors... 2 mirrors found.\r\nFetching public key from update2.FreeBSD.org... failed.\r\nFetching public key from update1.FreeBSD.org... failed.\r\nNo mirrors remaining, giving up.
\r\n由於 freebsd-update 是 shell script (有很多 undocument variable 可以調整),依照「\"freebsd-update fetch\", fetching public key failed.」這篇的點子,有個邪惡的方法可以拐 freebsd-update,讓他認為系統是 7.1-BETA:\r\n
env UNAME_r=7.1-BETA freebsd-update upgrade -r 7.1
\r\n這個方法可以用看看... 當然,這個方法一定會有一堆問題,如果對 FreeBSD 不熟的人應該會吃鱉 XDDD", + "title": "用 freebsd-update 將 FreeBSD 7.1-PRERELEASE 升級到 7.1-RELEASE" + }, + { + "id": "1982", + "body": "因為連上 BBS 還是透過 BIG5 比較方便,所以現在會在同一台機器上掛 BIG5 的 screen 與 UTF-8 的 screen。\r\n\r\n首先是修改主機的 /etc/ssh/sshd_config,增加 AcceptEnv LANG,表示 server 會接受 client 所送出的 LANG 環境變數,然後在 PuTTY 的設定裡將 LANG 設為 zh_TW.Big5 或是 en_US.UTF-8 (或是 zh_TW.UTF-8):\r\n\r\n\"\"\r\n\r\n登入後 LANG 變數就會被帶進系統內。\r\n\r\n然後,vim 會判斷 locale 而決定 encoding 及 termencoding,所以本來寫死的部份都要拿掉。\r\n\r\n這樣在 BIG5 環境下可以連上 BBS,用 vim 編輯一些資料...", + "title": "在同一台機器上同時有 BIG5 與 UTF-8 Terminal" + }, + { + "id": "1983", + "body": "FreeBSD 前陣子才將 Perl 5.10 放入 FreeBSD Ports System 內 (Perl 5.10 在 2007/12/18 發行,到 2009 年三月才進 ports...)\r\n\r\n不管怎麼樣,總是進 ports 了... 得測試看看要怎麼從 5.8.9 升級到 5.10.0。在 /usr/ports/UPDATING 提供了 portupgradeportmaster 的升級方式:\r\n
20080328:\r\n  AFFECTS: users of lang/perl*\r\n  AUTHOR: skv@FreeBSD.org\r\n\r\n  lang/perl5.10 is out. If you want to switch to it from, for example\r\n  lang/perl5.8, that is:\r\n\r\n  Portupgrade users:\r\n    0) Fix pkgdb.db (for safety):\r\n        pkgdb -Ff\r\n\r\n    1) Reinstall perl with new 5.10:\r\n        portupgrade -o lang/perl5.10 -f perl-5.8.\\*\r\n\r\n    2) Reinstall everything that depends on Perl:\r\n        portupgrade -fr perl\r\n\r\n  Portmaster users:\r\n        portmaster -o lang/perl5.10 lang/perl5.8\r\n        portmaster -r perl\\*
\r\n原則上照著 UPDATING 做就可以,不過 portmaster 的部份似乎是錯的 (看起來是軟體 bug),用 -r 並不會將相依 perl-5.10.0 的 ports 強制更新。\r\n\r\n後來還是先 portmaster -BDuw p5\\*,然後再看還有哪些東西在 /usr/local/lib/perl5/site_perl/5.8.9 下面,手動跑 portmaster 重新安裝。", + "title": "Perl 5.8 升級至 Perl 5.10" + }, + { + "id": "1984", + "body": "從「Some Fun Facts About The Google Phone」這篇看到 T-Mobile 的 CEO 在 CTIA 透漏 Google G1 使用情況。\r\n\r\n由於是 T-Mobile 的 CEO 直接公開的,所以這些數字很寶貴 (不是估計值):\r\n\r\n另外一個隱憂是隱私問題,那又是另外一回事了...", + "title": "GPhone 使用的情況" + }, + { + "id": "1985", + "body": "相較於國內推動三振條款 (「ISP使用者侵權 訂「三振」條款」),法國已經否決三振條款了:「French Assembly Rejects Three Strikes Bill」。\r\n\r\n細節等有空再來補。", + "title": "侵權「三振」條款" + }, + { + "id": "1986", + "body": "投影片還沒做完,但這件事情太大條...\r\n\r\nThe Pirate Bay 的四位被告被判有罪:「The Pirate Bay Trial: The Official Verdict - Guilty」。\r\n\r\n四個人都判刑一年,以及總額約一億兩千萬 (新台幣) 的賠償。這四位會提起上訴,然後自嘲「好萊塢教我們,好人一開始總是處於弱勢」。", + "title": "The Pirate Bay 四位被告被判有罪" + }, + { + "id": "1987", + "body": "
Using CDN to improve performance
View more presentations from Gea-suan Lin.
", + "title": "OSDC.TW 2009 的投影片" + }, + { + "id": "1988", + "body": "MySQL 的 replication 一直都是 single thread。即使 slave 有能力同時跑多個 SQL query 也必須是 single thread,這是為了資料的正確性而考量,但產生了一些缺點:\r\n\r\n現在在 MySQL 5.1 上有放出 patch 讓大家測試 multi-thread replication 了:「Feature Preview: Multi-threaded Slave」,雖然有不少限制,但是總是個開始。\r\n\r\n依照文件,主要的限制包括:\r\n\r\n另外,目前主要的限制還包括:(未來有機會移除)\r\n\r\n有興趣的人可以測測效能,看起來還要花一段時間開發。", + "title": "MySQL multi-thread replication" + }, + { + "id": "1989", + "body": "有公開的:\r\n", + "title": "幾個 CDN Reseller 的價錢" + }, + { + "id": "1990", + "body": "MySQL replication 不是同步進行,也就是說,在 master 寫入或刪除了某筆資料後,在 slave 上可能會讀到舊的資訊。解法主要是依照程度而決定要怎麼做。\r\n\r\n如果 replication lag 不太影響整體的觀感,那麼不管這個問題是一個還蠻直接的解法。\r\n\r\n如果在一個 application 裡會需要一致性,那麼都到 master 讀寫也是一個還可以的解法。而一般只讀取的 application 只到 slave 取得資料。\r\n\r\n如果要求很嚴謹,可以考慮用 SemiSyncReplication,強迫 master 寫入時等到 slave 回應 okay 後才會完成。這種主要是用在寫入不多,但一致性很重要的場合。", + "title": "MySQL replication lag 的解法" + }, + { + "id": "1991", + "body": "一回到家就看到 breaking news... Oracle 買下 Sun MicrosystemsOracle Buys Sun。\r\n\r\n雙方的網站都已經公告了,Sun 的公告是:\r\n
Sun and Oracle today announced a definitive agreement for Oracle to acquire Sun for $9.50 per share in cash. The Sun Board of Directors has unanimously approved the transaction. It is anticipated to close this summer.
\r\n而 Oracle 的網站連不太上 XDDD\r\n\r\nMySQL Conference & Expo 2009 剛好是 4/20 - 4/23,看起來這三天會很熱鬧...", + "title": "Oracle 買 Sun" + }, + { + "id": "1992", + "body": "上面的資料還蠻有趣的,可惜沒有 diff log 之類的紀錄?查起來頗麻煩...\r\n\r\n中華電信 HiNet對美國的頻寬從 57G 一口氣拉到 77G,對日本與香港也都有繼續增加...\r\n\r\n台固對日本 (7.1G 降到 2G) 及香港 (5G 降到 4G) 縮減了不少,增加的部份包括美國頻寬 (2.4G 升到 4G) 以及中國頻寬 (1.1G 升到 3.4G),整體的量看起來下降不少。\r\n\r\n速博SEEDNet 整合,以遠傳的品牌重新出發,在 TWNIC 的圖上面則是以 ncic (速博) 的名字出現,稍微算了一下,頻寬的部份似乎沒有太大的變動...\r\n\r\n加上最近 HiNet-TFN 的事情,hmmm...", + "title": "四月 TWNIC 連線頻寬登錄查詢系統" + }, + { + "id": "1994", + "body": "Google Labs 新推出的服務:Google News Timeline。\r\n\r\n\"\"\r\n\r\n列出每天的重大新聞,可以左右拉動或是上下捲動...", + "title": "Google News Timeline" + }, + { + "id": "1995", + "body": "MySQL Conference & Expo 2009 上除了 OracleSun 以外的另外一個大新聞:MySQL 5.4。\r\n\r\n這個版本的狀態是 beta,把 Google MySQL Tools 裡相當多 patch 併入 MySQL。(尤其是對 InnoDB 的部份)\r\n\r\nMySQL Planet 上面已經有不少 Sun 自己的測試報告。不過 MySQL Planet 上資料有點雜,要花點時間消化。想要看個大概的人可以從 A Quick Look at MySQL 5.4 開始看,這邊用圖表解釋效能的改善。", + "title": "MySQL 5.4" + }, + { + "id": "1996", + "body": "因為今年 OSDC.TW 講的 CDN 主題是偏向怎麼選與怎麼用,就沒有提到 Cacheboy CDN。\r\n\r\nCacheboy 本來是一套改自 Squid 2 的 Web proxy cache software,後來軟體改名叫 Lusca,而 Cacheboy 原本的 domain 就拿來開 CDN 服務。\r\n\r\nCacheboy CDN 這個計畫是希望募集機器與頻寬,解決 Open Source 軟體在發行時爆量而造成當機不順的問題,也順便找出 Lusca 有什麼地方還不夠好。像是「Lusca and Cacheboy improvements in the pipeline..」這篇就是在 tune CDN 的時候找到問題。\r\n\r\n在 WhatIsBeingMirrored 這頁可以看到目前使用 Cacheboy CDN 的服務,目前比較大 (也比較有名) 的是 http://mozilla.cdn.cacheboy.net/ 這個,據說 Mozilla Firefox 3.0.9 更新就是靠他,然後流量就大爆發了...\r\n\r\n這個 CDN 計畫還蠻有趣的...", + "title": "Cacheboy CDN" + }, + { + "id": "1998", + "body": "YouTube 能夠以聲音自動判斷影片內容是否在資料庫內,如果在資料庫內他就會將聲音拔除 (不是移除影片)。這個辨識系統是個黑盒子,於是就有人挑戰 YouTube 的聲音辨識系統,找出底線在哪裡:「Fun with YouTube's Audio Content ID System」。\r\n\r\n方法很簡單 (trial-and-error,試誤法),但結論很機車,像是居然抱怨 YouTube 沒有機制停權 XDDD:「我用了同一個帳號傳了 82 個影片,收到 35 封 Content ID email,但帳號沒事...」", + "title": "挑戰 YouTube 的聲音辨識系統" + }, + { + "id": "1999", + "body": "在「Why 5.4?」這篇裡面有提到。\r\n\r\n這是在 MySQL Conference & Expo 2009 最常被問到的問題之一,為什麼這次 MySQL 釋出新版使用 \"5.4\" 這個奇怪的號碼。Ryan Thiessen 剛好遇到參與決定這個版號的人,向他詢問的結果。\r\n\r\n原因是,功能比 6.0 少,但不想要用 5.5,因為暗示「進行到一半」,但又想要表示相較於 5.1 有巨大的進展,於是就訂為 \"5.4\"...\r\n\r\n嘴砲 XDDD", + "title": "這次 MySQL 版號訂「5.4」的原因" + }, + { + "id": "2001", + "body": "XtraBackupPercona 開發的工具,可以線上備份 InnoDB 的資料,而且不太會影響效能,速度比起 mysqldump 快很多。\r\n\r\n以往想要線上備份 InnoDB database,會用 InnoDB 所提供的 InnoDB Hot Backup,但這套軟體不是 open source software,除此之外要收費。\r\n\r\nPercona 前陣子開始發展 open source 的版本,軟體叫做 XtraBackup,目前寫這篇文章時的最新版是 0.5-beta。\r\n\r\n剛剛試著從一台 production database (比較小台,3GB) 的備份,看起來相當順暢:\r\n
sudo xtrabackup --defaults-file=/srv/mysql/var/my.cnf --backup --target-dir=/tmp/backup --datadir=/srv/mysql/var
\r\n要注意的是參數的順序是有差異的,--defaults-file 一定要在最前面。另外 my.cnf 要記得指定,不然就是把 my.cnf 裡面所有設定值寫在命令列。\r\n\r\n--backup 不需要解釋,--target-dir--datadir 也應該很好懂。\r\n\r\n直接輸入 xtrabackup 還有不少參數可以調整,像是 --throttle 這種參數可以限制 I/O 速度 (沒有實際用過),有了這個參數,在比較忙碌的 database 上不用擔心過載...", + "title": "XtraBackup:線上備份 InnoDB 的好東西" + }, + { + "id": "2002", + "body": "WordPress 的 exporter 做的實在是很沒誠意...\r\n\r\nWordPress 的 exporter 是 XML 格式,說更實際一點是 RSS 2.0 + 自訂的 namespace。不過 WordPress 實際上是自己把欄位內容 echo 出來,於是就有一卡車欄位沒有 escape...\r\n\r\n首先是踩到「Exporter does not escape url」這個地雷,沒有對 <wp:comment_author_url></wp:comment_author_url> 這個欄位 escape,於是當 url 帶有 & 時就... *boom*\r\n\r\n幫 WordPress patch 後又遇到另外一個問題:「wp:meta_value does not escape correctly」,這次換成 <wp:meta_value></wp:meta_value> 沒有 escape...\r\n\r\n到底是怎樣啊... 我猜還會再中某些欄位地雷 \\_/", + "title": "WordPress 的 exporter" + }, + { + "id": "2003", + "body": "「我們的 DNS 是用 Oracle 的 server!!!」\r\n\r\n這句話聽起來就很威...\r\n\r\n參考:「Oracle 買 Sun」這篇。", + "title": "我們的 DNS 是用 Oracle 的 server!!!" + }, + { + "id": "2004", + "body": "MySQL Conference & Expo 2009 已經結束了,有蠻多講者已經把投影片交給大會,由大會公佈在網頁上,有興趣的人可以在裡面翻有趣的題材:「Speaker Presentation Files: MySQL Conference & Expo 2009」。\r\n\r\n由於是 Sun 辦的會議,有些檔案會是 ODP 格式 (需要用 OpenOffice Impress 開)。\r\n\r\n有些主題還蠻有趣的,這個週末應該會翻翻...\r\n\r\n下面是我推薦的清單,有機會就會增加:\r\n", + "title": "MySQL Conference & Expo 2009" + }, + { + "id": "2006", + "body": "Percona 在 4/22、4/23 也辦了一場「PERFORMANCE IS EVERYTHING」,地點與 MySQL Conference & Expo 2009 一樣,而且還強調不需要報名費用 XD\r\n\r\nPercona 對 Sun/MySQL 不滿其實也不是一天兩天的事情了,選相同的日期與地點 (同一棟大樓) 還蠻感覺得出來敵意...\r\n\r\n拿兩邊的題目來看,其實 Percona 場的題目比起 Sun/MySQL 辦的好多了。很多人對底層並沒有興趣,而是對「實用方法」有興趣。而且 Percona 的場子也看得出來各大 high-traffic site 的大頭都蠻捧場的 (有些人大概是不想得罪,兩邊都有講),題目也廣多了。\r\n\r\n等講者把 Percona 場的投影片放出來後再來看看內容...", + "title": "Percona 的 PERFORMANCE IS EVERYTHING" + }, + { + "id": "2007", + "body": "順著第一次推出 3.5beta 時抓下來玩,穩定性似乎還可以 (目前還沒遇過 crash),要再多跑一陣子才會比較準。\r\n\r\n大概是我的 extensions 裝太多了,感覺速度與 3.0 沒有差異。不過在 heavy loading 時 (故意同時開很多新的網頁) 比 3.0 順暢不少。\r\n\r\n另外記事升級後發現我自己的 blog 有使用 css3 的陰影效果 (text-shadow),應該是很久前自己改的...", + "title": "換上 Firefox 3.5beta4" + }, + { + "id": "2008", + "body": "SmugmugMySQL Conference & Expo 2009 大約 40mins 的 presentation:\r\n\r\n\r\n\r\nSmugmug 與無名的量在同個等級 (比無名小一些,my guess),但全部都是付費使用者,可以在投影片上看到很多很實際也很有趣的想法。", + "title": "Smugmug 在 MySQL Conf 09 上的錄影" + }, + { + "id": "2010", + "body": "昨天弄了一整個下午,差點被搞死...\r\n\r\nFreeBSD 下想要依照 source ip 而決定 next hop 可以用 ipfw 或是 pf 達成。\r\n\r\nipfw 的設定會像這樣:\r\n
ipfw fwd 192.168.1.1 ip from 192.168.1.0/24 to not 192.168.1.0/24
\r\n而 pf 的設定會像這樣:\r\n
pass out quick route-to (em0 192.168.1.1) from 192.168.1.0/24 to ! 192.168.1.0/24 no state
\r\n最後面的 no state 很重要,找了一下午就是這個關鍵字而已 XD\r\n\r\n會使用 pf 是因為現在都跑 FreeBSD amd64,用 FreeBSD 官方的 binary 都已經包含 SSE2 instructions,所以系統都用 freebsd-update 在管理。官方的 binary 並沒有把 ipfw 的 IPFIREWALL_FORWARD 編進去,所以不能用 ipfw fwd,花了一個下午才搞懂 pf 要怎麼設定...\r\n\r\n記起來,以後應該會 google 到自己的文章...", + "title": "FreeBSD 下的 policy routing" + }, + { + "id": "2011", + "body": "看到 lwhsuPlurk 上提到最近 *BSD 都在出新版,發現不只是 NetBSDOpenBSD,連 DragonFlyBSD 最近也出新版,而下禮拜 FreeBSD 7.2 也要 release... (不知道會 delay 多久)\r\n\r\nUpdate:FreeBSD 7.2-RELEASE 釋出了。\r\n\r\n可能要玩 NetBSD,如果他的 lock mechanism 改的比 FreeBSD 好的話...", + "title": "*BSD 出新版..." + }, + { + "id": "2012", + "body": "FreeBSDZFS 可以用,最早的時是自己寫 script 產生 snapshot,並且自動 rotate,現在則是用 sysutils/zfs-snapshot-mgmt 做到...\r\n\r\n設定檔是 YAML 格式,裡面的數字大多都是以分鐘為單位 (不是秒,曾經搞錯,過了一個禮拜才發現...),由於有 sample config 可以看,這邊就不提了。\r\n\r\n除此以外要注意的是,在產生 snapshot 時是以 GMT 時間為準,但命名 snapshot name 時卻是以是以當地時間為準,所以可能會看到八個小時的差異 (如果系統有設定 timezone),基本上不用太在意。如果真的在意,可以用 offset 這個參數調整。", + "title": "FreeBSD ZFS 自動產生 Snapshot 工具" + }, + { + "id": "2013", + "body": "用 Spam Karma 很久了,不過最近容易漏 spam 進來,然後發現 Spam Karma GPL 以後就沒有太多進展 (最新一次 commit 是二月),決定換成 Akismet 看看效果如何。\r\n\r\n如果誤判太嚴重,或是漏掉的比 Spam Karma 多就會換回來... 要測一陣子才知道。", + "title": "換成 Akismet" + }, + { + "id": "2014", + "body": "FreeBSD 7.2-RELEASE 在前幾天順利放出來了,正式的公告在「FreeBSD 7.2-RELEASE Announcement」這裡可以看到,與 FreeBSD 7.1 主要的差異在「FreeBSD 7.2-RELEASE Release Notes」可以查到。\r\n\r\n對我最主要的差異應該是 amd64 平台上 kernel virtual address space 拉高到 6GB,用 FreeBSD ZFS 不需要再調整 vm 參數了,預設的大小就夠用。\r\n\r\n不過,大概是太準時的關係,libc 有個蠻嚴重的 bug 沒有在 release 前被找到:(參考「FreeBSD 7.2-RELEASE Errata」)\r\n
[20090504] A lock handling error has been found in interaction between malloc(3) implementation and threading library. When a multi-threaded process calls the fork(2) system call in a thread and the malloc(3) function in another thread, it can cause a deadlock in the child process. An Errata Notice to fix this problem is planned after the release.
\r\n當一個 thread 在 fork(),另一個在 malloc(),產生出來的 child process 會 deadlock...\r\n\r\n不曉得會不會如同 delphij & lwhsu 講的,出 7.2.1-RELEASE 修正這個 bug...", + "title": "FreeBSD 7.2-RELEASE" + }, + { + "id": "2015", + "body": "歐盟議會以 138:46 的票數否決三振條款:「Amendment 138/46 adopted again. Internet is a fundamental right in Europe.」。\r\n\r\n文內提到「使用 Internet」被認定為基本權利之一...", + "title": "歐盟議會否決三振條款" + }, + { + "id": "2016", + "body": "之前在「WordPress 的 exporter」這篇提到 WordPress 的匯出程式很糟。最後我是直接把用不到的欄位用 preg_replace() 幹掉,避免 XML library 因為語法錯誤而無法匯入。\r\n\r\n雖然暫時解決了,不過還是看看目前的進度,發現有計劃要以 XML library 改寫,但是沒人跳下去寫:「make export/import output valid xml and parse xml using simplexml」,這個計畫大概是遙遙無期... XD", + "title": "WordPress exporter" + }, + { + "id": "2017", + "body": "Percona 的 Vadim 示範如何用 XtraBackup 產生一份 slave 需要的資料:「Btw xtrabackup is not only backup..」。\r\n\r\n方法是用 xtrabackup 將資料以 tar 格式輸出到 stdout,透過 pipe + ssh 直接寫入預定要當 slave 的 server,所以這個方法不用擔心原本的 master server 空間不足的問題。", + "title": "用 XtraBackup 產生 slave" + }, + { + "id": "2018", + "body": "MySQL 5.0 有分 community branch (奇數號,像是 5.0.77) 與 enterprise branch (偶數號,像是 5.0.78),現在兩者合併了:「The quiet end of the community-enterprise split」,bzr log 在這:「Merge community up to enterprise, thus ending the community-server\r\nadventure.」。\r\n\r\n之後 MySQL 5.0 就不會分成 Community 版本與 Enterprise 版本,修 bug 的時候也只要注意一個版本就可以了。", + "title": "MySQL 5.0 整合" + }, + { + "id": "2019", + "body": "去年六月的時候搞了一個 FFmpeg ports (參考「FFmpeg 的 FreeBSD ports」),但是因為 x264 改 function call,所以那個 SVN 版本不能用了...\r\n\r\n大概一個月前試著 checkout ffmpeg 新版下來更新,發現有錯誤訊息,因為當時忙就沒有試著找 bug,剛好這兩天有空,就花了一些時間 trace 問題,發現是沒有定義 __BSD_VISIBLE 的問題造成的,暫時先用 #define __BSD_VISIBLE 1 的方式解掉...\r\n\r\n這次的版本是 r18864,把 libavdevice/bktr.clibavdevice/oss_audio.clibavformat/udp.c 三個檔案最前面加上上面說的 define 就會過了。\r\n\r\n晚點有時間再把 port 整理出來,更新 http://wiki.gslin.org/ffmpeg 這邊...", + "title": "在 FreeBSD 上裝 FFmpeg" + }, + { + "id": "2020", + "body": "portmaster 是一套 FreeBSD 下的套件升級工具,已經用了一陣子... (參考二月時「portmaster」這篇文章)\r\n\r\n這次從 portmaster -BDuw 換成 portmaster -BDtuw 了。\r\n\r\n隨便舉個例子,以 cs-metaPort 為例,假設這個 port 有三個 dependency packages,分別為 cs-basicSoftware、cs-wwwSoftware、cs-securitySoftware,而這三個 dependency packages 下面又有一卡車的 dependency packages...\r\n\r\n使用 portmaster -BDuw cs-metaPort 會先檢查 cs-{basicSoftware,wwwSoftware,securitySoftware} 是否有新版,如果只有 cs-basicSofteare 有新版,才會繼續遞迴下去...\r\n\r\n但如果用 portmaster -BDtuw cs-metaPort,則是一開始會用 all-depends-list 列出所有的 packages 檢查。\r\n\r\n可以依照不同的情況使用...", + "title": "portmaster" + }, + { + "id": "2022", + "body": "目前看到兩個,一個是 EdgeCast,主要是 static files,像是 s.wordpress.com 與 s2.wordpress.com,效果還可以。\r\n\r\n另外一個是 Internap CDN,用在 video 的部份,像是 cdn.videos.wordpress.com。從台灣連過去效果非常差,會選 Internap 應該是因為成本的考量...", + "title": "WordPress.com 的 CDN" + }, + { + "id": "2023", + "body": "用 Google 翻資料,結果三月初的時候有人試著 benchmark,結果還蠻讓人意外:「Performance comparison of Thrift, JSON and Protocol Buffers」。\r\n\r\n結論是 JSON 在速度上不會輸給 Protocol BuffersThrift。討論出來的原因是因為 Protocol Buffers 與 Thrift 的功能比 JSON 多出太多。\r\n\r\n不過我應該會用 JSON 寫東西吧,畢竟是個 open standard...", + "title": "JSON、Protocol Buffers、Thrift 的效率比較" + }, + { + "id": "2024", + "body": "Amazon Web ServicesEC2 上推出新的服務:「New Features for Amazon EC2: Elastic Load Balancing, Auto Scaling, and Amazon CloudWatch」。\r\n\r\n這次推出了三個新服務,第一個是 Elastic Load Balancing,支援 HTTP 與 HTTPS。以前是自己開一台 instance 架設 (像是 HAProxy),現在由 Amazon 直接提供,簡化 Load balancer 的管理問題。(因為大多數的 open source load balancer 並沒有專門接 Amazon EC2 的 instance api,所以會需要自己寫一些程式接,但自己寫的 code quality 不一定穩定...)\r\n\r\n第二個服務是 CloudWatch,用以監控 instance 資訊,這個部份有不少 open source solution 可以用,而且產生的資料都還不錯 (也就是「堪用」),所以好處沒有像上面的 load balancing 那麼明顯。\r\n\r\n第三個服務是 Auto Scaling,利用 CloudWatch 所取得的資訊,當系統負載達到設定的條件時就加機器,或是在負載降低時減少機器 (像是 web server)。這個功能在很早前就有人做了,像是去年四月 TechCrunch 就有報導過的 open source solution:「Scalr: The Auto-Scaling Open-Source Amazon EC2 Effort」,或是專門靠此賺錢的 RightScale (這項服務對於 RightScale 很傷,由於 Amazon 提供 API,會更容易開發 open source solution...)\r\n\r\n補上這些東西後,現在 Amazon Web Services 比較缺的是 cache 的機制... (open source solution 有 memcached,不過跑 memcached 時 cpu resource 實在用不到這麼多,開 15GB RAM instance 還附帶 \"8 EC2 Compute Units\"...)", + "title": "Amazon Web Services 又推出新服務..." + }, + { + "id": "2026", + "body": "只貼 code... (還蠻常用到的技巧)\r\n
(function($){\r\n    // you can use $ even if jQuery.noConflict()...\r\n})(jQuery);
", + "title": "jQuery 與 $" + }, + { + "id": "2027", + "body": "FreeBSD ZFSv13 終於進入 RELENG_7 了:「svn commit: r192498」。\r\n\r\n幾個重要的改變:\r\n\r\n另外 commit log 有個讓人還蠻在意的地方:\r\n
Supported by: Barrett Lyon, BitGravity
\r\nBitGravity (一家 CDN company) 的 CTO 贊助 XDDDDD", + "title": "FreeBSD ZFSv13 進 RELENG_7" + }, + { + "id": "2028", + "body": "這是 Stanford 的課程:「CS193H: High Performance Web Sites」。\r\n\r\n很密集的課程,幾乎都有投影片,每次 50mins 的課程。有不斷在看目前 Web 發展趨勢的人應該都對這些資訊稍微瞭解,不過對於想入門的人倒是相當好的導引。", + "title": "High Performance Web Sites" + }, + { + "id": "2029", + "body": "去年年底在「博客來的網站的註冊頁面...」這篇提到無法在 books 註冊的原因終於找到了,因為博客來註冊頁 (也就是 https://db.books.com.tw/newmember.php 這頁) 的「同意」擋 Referer。\r\n\r\n當你有裝防毒軟體,並打開隱私權設定 (有一些防毒軟體在安裝完後就是這樣) 就會造成問題。\r\n\r\n好久沒看到這種網站了...", + "title": "無法註冊在博客來的原因" + }, + { + "id": "2030", + "body": "《瑪莉亞的凝望》第三本看到一半,到 Twitter 上看到 Jeremy Zawodny (O'Reilly 出的 High Performance MySQL 第一版與第二版的作者之一) 在喊 MySQL ALTER TABLE 跑了八天了:\r\n
I have an ALTER TABLE running for nearly 8 days now... yikes.
\r\n結果 Aaron Brazell 居然很機車的這樣問他 XDDD\r\n
@jzawodn Removing South Carolina from all Craigslist tables?
\r\n如果不清楚 Craigslist 與南卡的新聞,可以參考紐約時報「Under Pressure, Craigslist to Remove ‘Erotic’ Ads」這篇的說明。\r\n\r\nAnyway,Jeremy Zawodny 有說明這次的目的是要把舊的 InnoDB 轉成 XtraDB compression 格式:\r\n
the big ALTER TABLE is to enable InnoDB/XtraDB compression on ~650M records (old CL postings)
\r\n簡單提一下 MySQL 搭配一些 open source solution 的運作方式。\r\n\r\n首先是要打開 replication,有 master 與 slave server(s)。寫入都到 master,讀取到 slave。(這邊為了說明方便,暫時不考慮 replication delay)\r\n\r\n除了 master/slave 讓前端的 application servers 或 web servers 存取外,另外建立一套 slave server,上面有 snapshot filesystem (像是 Linux 的 LVM,或是效能較好的 Solaris/OpenSolarisZFS),用 cron 定時將 MySQL 暫停並寫入磁碟,產生 snapshot。\r\n\r\n在這樣的架構下,當需要 ALTER TABLE 而且已經知道會卡很久時,我們可以從 snapshot 上先複製一份完整的資料,建立一台 MySQL server 並且在上面 ALTER,等到完成後再接回 master server,將 replication delay 的部份補上。如果想確認資料正確性,可以跑 mk-table-checksum 確認。當 replication delay 跟上後,停機時間不用太長就可以將 master 換成這份新的格式。\r\n\r\n雖然 Jeremy Zawodny 沒有詳細說明,不過應該是類似的方法。\r\n\r\nUpdate:Jeremy Zawodny 在「The Big ALTER TABLE Test」這篇有提到結果。", + "title": "MySQL ALTER TABLE" + }, + { + "id": "2032", + "body": "mod_wsgiapachePEP-333 的實做軟體,使用 Python 開發 web application 的人不用知道怎麼介接。\r\n\r\n既然是 .htaccess,apache 的部份就不講了。\r\n\r\nUpdate:修正 mod_rewrite 的部份。\r\n\r\n先從最簡單的「所有 request 都丟給 index.py」開始:\r\n
SetHandler wsgi-script\r\nRewriteEngine on\r\nRewriteBase /~gslin/py/\r\nRewriteRule ^index.py$ - [L]\r\nRewriteRule ^(.*)$ index.py/$1 [L]
\r\n如果不希望連靜態檔案都透過 index.py 處理 (像是 robots.txt),要做兩件事情。第一件是限制 wsgi-script 的範圍:\r\n
<Files *.py>\r\nSetHandler wsgi-script\r\n</Files>
\r\n然後修改 mod_rewrite 的條件,只有檔案不存在的 request 才丟給 index.py:\r\n
RewriteEngine on\r\nRewriteBase /~gslin/py/\r\nRewriteRule ^index.py$ - [L]\r\nRewriteCond %{REQUEST_FILENAME} !-f\r\nRewriteRule ^(.*)$ index.py/$1 [L]
\r\n不會很難,不過還是寫下來,以後應該會找到自己的文章...", + "title": "mod_wsgi 與 .htaccess" + }, + { + "id": "2034", + "body": "依照「mod_wsgi 與 .htaccess」的設定設好後,在 index.py 內參考「Integration With CherryPy」這篇文章的範例就會動了,可以用 ab 或是 httperf 測試看看效能如何。\r\n\r\n另外 Robert E Brewer 在 PyCon 2009 - Chicago 上講的「Introduction to CherryPy (#90)」(包含影片) 也蠻適合剛碰 CherryPy 的人看。", + "title": "CherryPy 與 mod_wsgi (apache 2.2)" + }, + { + "id": "2035", + "body": "用 Akismet 一陣子了,其他的語言目前沒有遇到問題,但還蠻常漏 Russian spam 進來,找了一下發現有不少人有這個問題:「Block Russian Comment Spam In Wordpress」。\r\n\r\n解法是把 .ru 設為黑名單 (我是設成 moderated),再用人工看...", + "title": "Akismet 心得" + }, + { + "id": "2036", + "body": "在 Twitter 上遇到 Spam Follower,可以用 direct message 通報給 spam 這個帳號 (不過,你要先 follow 對方,而且對方反過來 follow 你),但手動回報的機制還是太麻煩。\r\n\r\n於是有人就在 Greasemonkey 上寫了回報機制:「Twitter Spam Report for Greasemonkey」,裝好後,在每個 Twitter 頁面下面都有 \"Report Spam\" 的連結...\r\n\r\nUpdate:需要改 code,把:\r\n
var twitterspam_user = $(\"h2\").text().replace(/ /g,'');
\r\n改成:\r\n
var twitterspam_user = $(\"h2\").eq(0).text().replace(/ /g,'');
", + "title": "Twitter Spam Report" + }, + { + "id": "2038", + "body": "在「Video CDN Pricing Drops Slightly In Q1, Other Contract Trends Noticed」這篇可以看到趨勢。\r\n\r\n我不曉得他怎麼拿到數字的,不過看數字總是一件有趣的事情... XD", + "title": "CDN 的價錢" + }, + { + "id": "2039", + "body": "在「Google’s Page Speed Optimization Add-on」看到的,Google 推出一套分析程式,分析網頁可以改進的地方。也是 Firebug 的 plugin... XD\r\n\r\n看起來就是被 YSlow 搶風頭,不甘寂寞而做的...\r\n\r\n在 Firefox 3.5pre 上面跑發現 YSlow 與 Page Speed 會打架,不確定是什麼問題。", + "title": "Google Page Speed" + }, + { + "id": "2040", + "body": "\"\"", + "title": "晚餐" + }, + { + "id": "2041", + "body": "Reverse Proxy 的部份,Perlbal 可以用 X-Reproxy-URL。\r\n\r\nApachemod_xsendfile 實做 X-SendfilelighttpdX-LIGHTTPD-send-file (1.4 版) 或是 X-Sendfile (1.5)。nginxX-Accel-Redirect。\r\n\r\n都是避免用動態語言傳輸大檔的方式。\r\n\r\n不知道 F5 有沒有提供類似的功能,如果沒有的話就得自己放兩台...", + "title": "幾個不同的 Web Server (或是 Reverse Proxy) 實做內部重導的方式" + }, + { + "id": "2042", + "body": "啊啊啊~(大叫)\r\n\r\n我們家 PIXNET 要找人,包括:\r\n\r\n可以透過 gslin at pixnet.tw 找我,告訴我您有興趣的部份,另外麻煩留下你的手機號碼與適合接電話的時間,我會在適當的時間打給你 :o", + "title": "缺人找人" + }, + { + "id": "2044", + "body": "Jeremy Zawodny 月初在 Linux Magazine 上所寫的「The State of MySQL」描述了最近 MySQL 的狀況。這篇文章與技術面的想法沒關係,討論了比較多 SunOracle 與其他 3rd-party 的努力。\r\n\r\n前陣子 Sun 與 MySQL 的整合其實讓 MySQL 很受傷,包括許多 MySQL developer 的離開 (創辦人 Monty 也走了),使得 MySQL 的發展停滯了一段時間。另外,去年底推出的 MySQL 5.1.30 (第一個 5.1 GA) 被許多人批評品質不足以列為 GA。而實際在使用 MySQL 的單位也可以看到還是繼續用 MySQL 5.0,因為找不到升級到 MySQL 5.1 的理由。\r\n\r\n另外一方面,MySQL 仍然是 open source relational database 領域的主要選擇,在官方的支援不夠的情況下,很多公司提供了自己發展的 MySQL patch,像是 Google 或是 Percona。而 MySQL 上最常被使用的 transaction engine,InnoDB 也推出新版,以 MySQL 5.1 plugin 形式釋出,這個版本包括了新的檔案格式、壓縮 (對於 I/O bound 環境幫助不小),並針對朝多 CPU 發展的環境修正的許多 multi-threading 效能的問題。(主要是 lock 的改善)\r\n\r\nMonty 在離開 Sun 之後也成立了一家公司,發展由 MySQL 分支出來的 MariaDB,希望成為一個 storage engine,取代現有的 MyISAM。\r\n\r\n其他的公司也都有各自的想法,透過 MySQL 的 plugin 架構發展自己的軟體,有許多是 open source (像是 PBXT),也有不少是 proprietary software,給了 MySQL 使用者許多不同的方向。", + "title": "MySQL 的現況" + }, + { + "id": "2047", + "body": "之前用的 GDI++ 是參考 Jackbin 的「gdi++ FreeType 新細明體修改版:(1) 簡介與安裝」所說明的方式而裝的版本,但這個週末藍色死亡螢幕的情況太誇張了 (桌上的電腦與 Notebook 都死了兩三次,還有跟人家 MSN 上打完招呼就 crash 的 =_=),決定找 Helium 版本來改...\r\n\r\n網路上有幾篇文章有提到 Helium 版本,像是「GDI++ Helium 版」,不過提到的版本都有點舊了,去找新版的裝好後另外找其他人的設定檔來換,看起來舒服多了。\r\n\r\n我把設定檔放在 Wikidot 上:http://wiki.gslin.org/gdi,新細明體要記得自己找個字型換掉 (參考 Jackbin 的文章)。", + "title": "GDI++ Helium 版" + }, + { + "id": "2048", + "body": "這幾天看到 Google 在中國被罰,看了老半天還是不知道「不雅訊息」在哪裡,本來還猜測是其他的政治力介入造成的 (因為 CCTV 造假,看起來有點像...),剛剛看到 Slashdot 的「Google Suggest Disabled In China Due To Porn」突然笑了出來 XDDD\r\n\r\n因為太忠實呈現網路行為而被處罰 XDDD\r\n\r\nPS:這不代表沒有政治力量在後面處理,通常只是找個理由...", + "title": "Google 在中國被罰是因為 Google Suggest 出現「不雅建議」?XDDD" + }, + { + "id": "2049", + "body": "《咲 -Saki-》,常翻譯成《超能力百合麻將少女》,內容就不提了 (XDDD),從第一次看到這個聲優表就不知道要怎麼吐槽...:\r\n\r\n其實我比較想看特典 BD/DVD... 希望特典有三片滿滿的錄音現場與植田雀莊遊記 XDDD\r\n\r\nPS:第四條那個出處來自「J-1グランプリ」這篇。", + "title": "咲 -Saki- 的聲優表" + }, + { + "id": "2053", + "body": "兩個不小的軟體都出新版...\r\n\r\nMozilla Firefox 3.5 正式版昨天放出來了,JavaScript 的速度再次提昇,另外有不少新功能,以台灣的普及率,大約等兩年後看普及狀況再決定能不能用。\r\n\r\n另外一個是 PHP 5.3 第一個的正式版 5.3.0 也是出了,可以在 PHP 5 ChangeLog 看到比較詳細的說明。照之前國外測試的結果,除了使用過舊的 deprecated function 外,應該不會造成目前的程式不能動,不過還是要測過才會知道...\r\n\r\n比較新的功能是 namespace,雖然用 backslash (就是「\\」這個符號) 大家看了都很囧,不過畢竟是有 namespace 了,PHP library & framework 總算可以用 namespace 解決命名的問題。", + "title": "Firefox 3.5 與 PHP 5.3" + }, + { + "id": "2054", + "body": "innobackupex 是 Percona 因為 XtraBackup 需要,改自 InnoDB 的 script,可以不停機備份 InnoDB 或 XtraDB。對於沒有一開始就設定 DRBD 或是類似架構的人來說,這個方法算是蠻不錯的。(當然,如果允許停機的話更簡單)\r\n\r\n這個方法是以 InnoDB 為主體的 database 為主,MyISAM 也可以透過這個方式備份,不過這就不在我測試的範圍內了... (我測的兩個 cluster 只有系統資料庫是使用 MyISAM,其他都是 InnoDB)\r\n\r\n這邊寫的版本是使用 XtraBackup 0.7 版 (前幾天測試的,當時 0.8 版還沒有正式放出來,就先拿 0.7 版測試),在 Debian 上先安裝 package:\r\n
# dpkg -i xtrabackup_0.7-1_amd64.deb
\r\n裝完後就可以試著使用 innobackupex 備份,並要求 innobackupex 紀錄 slave 資訊:\r\n
# innobackupex-1.5.1 --slave-info [dest_path]
\r\n在「Btw xtrabackup is not only backup..」有推薦用 --stream=tar 將備份資料輸出成 tar 格式,不過實際上會因為 ibdata1 被改變而使得 tar 認為無法備份而失敗,所以目前比較偏好的作法是直接輸出到某個目錄下 (就不會用到 tar),目錄可以是 nfs 或是 local disk。\r\n\r\n另外,預設是透過 socket 連 MySQL,但也可以故意用 --port=3306 強制他走 TCP,或是用其他指令指定帳號及密碼,這些都可以直接執行 innobackupex 看到。\r\n\r\ninnobackupex 會試著使用 mysql 並下一些指令,但使用時並不會指定完整路徑,所以會依照 PATH 內所設定的路徑而執行。不過,因為上面的指令通常需要 root 權限,如果使用 sudo 有可能會將 PATH 重設而造成 mysql 無法執行而失敗 (像是 Percona 的版本是裝在 /usr/local/mysql-blah-blah 下,所以配合 sudo 時的用法會是:\r\n
# sudo env PATH=/usr/local/mysql/sbin:/usr/local/mysql/bin:[original_path] innobackupex-1.5.1 --slave-info [dest_path]
\r\n這樣就解決了。\r\n\r\n備份完成後再用 --apply-log 把還在 log 的 entry 寫回 pool:\r\n
# sudo innobackupex-1.5.1 --apply-log [dest_path]
\r\n這樣一來,一份可以當作 slave server 的資料就完成了。\r\n\r\n丟到其他機器後,用 chown 先把檔案權限改對:\r\n
# chown -R mysql:mysql [data_dir]
\r\n然後跑起 mysql 後,看裡面的 slave 資訊設定 master:\r\n
CHANGE MASTER TO master_host = 'master_host', master_user = 'master_user', master_password = 'master_password', master_log_file = 'blahblah.012345', master_log_pos = 123456;
\r\n這樣就可以讓 slave 動起來了。(記得要自己 START SLAVE;)", + "title": "innobackupex" + }, + { + "id": "2056", + "body": "「Google Apps is out of beta (yes, really)」與「Openfind-解決方案-中小企業郵件解決方案-輕鬆郵」。\r\n\r\n中間有一些小插曲,像是 Google Apps (Standard) 的連結不見,造成大家猜測是不是要趁著轉入正式版拿掉,最後又把連結放回去 (不過只有英文版的放回去,繁體中文版的還是拿掉了):「Google Apps Standard Edition: still free」。\r\n\r\n另外一邊是 Openfind 推出「輕鬆郵」,提供 closed-source 版本的 server 軟體,有 100 accounts 限制,主要是給對於郵件系統放到 3rd-party 有疑慮的公司,但自己建制不敷成本的單位使用。網站上不能直接下載,需要填表...\r\n\r\n另外一個重點是 GPL violation,這套免費版的防毒軟體使用 ClamAV (參考「常見問題」內的 Q4),不過 Openfind 已經明確表示他不會提供 source code 了 (看介接方式才會知道感染多大塊),這點就看誰拿到 binary 後去跟他們要...", + "title": "Google Apps 畢業,Openfind 推出郵件解決方案" + }, + { + "id": "2057", + "body": "在「Improving InnoDB recovery time」這篇看到的。\r\n\r\n這個 bug 在 2007 年時 Heikki Tuuri 開了 #29847:「Large CPU usage of InnoDB crash recovery with a big buf pool」,在 bug report 中間有提到 workaround,在 recovery 時把 O_DIRECT 關掉並且降低 innodb buffer pool size,把問題推到 Filesystem cache,速度比較快。\r\n\r\n但這表示在 crash 後必須手動介入,或是要寫 script 在啟動 MySQL 時判斷,並不是一個自動的解法。\r\n\r\n不過今年五月的時候有人丟出 patch 了,目前測過的人用起來都沒問題,順利的話下一個版本就會收進去,對於 MySQL HA (像是 failover 時需要跑 InnoDB recovery 的系統) 幫助很大...", + "title": "InnoDB Fast Recovery Patch" + }, + { + "id": "2058", + "body": "在 Digg 的 Blog 上看到「Much Ado About IE6」這篇文章,提到目前瀏覽器佔有率的事情 (尤其是 IE6)。\r\n\r\nDigg 的使用者者中,IE6 佔了 10% visitor 以及 5% PV,所以他們已經在規劃何時要放棄 IE6 support。\r\n\r\n我翻了六月 PIXNET 全站的情況 (用 Google Analytics),以 visitor 來看,IE 佔了 83.09%,IE6 佔了 IE 的 48.66%,所以大約佔全部的 40.43%。以 PV 來看,IE 佔了 83.91%,IE6 佔了 IE 的 46.98%,大約佔全部的 39.42%。\r\n\r\n這個數字離不支援還早得很...\r\n\r\nUpdate:六月 PIXNET 全站的瀏覽器分佈,overall >1% 的部份。(by Visitor)\r\n\r\nInternet Explorer - 83.09% (6.0 - 48.66%,7.0 - 48.58%,8.0 - 2.74%)\r\nFirefox - 13.47% (3.0.11 - 46.78%,3.0.10 - 38.50%)\r\nChrome - 1.63%\r\nSafari - 1.27%", + "title": "瀏覽器的佔有率" + }, + { + "id": "2060", + "body": "FreeBSD 8.0-BETA1 出了,也已經可以用 freebsd-update 更新。(不過就 freebsd-update maintainer 的說法,因為他不是 Release Engineer (re@),對 8.0 並不比一般人更熟悉,想要利用 freebsd-update 升級到 BETA1 可能會有問題)\r\n\r\n在「What's cooking for FreeBSD 8?」列出了 FreeBSD 8.0 會有的新功能或是改善。\r\n\r\n對一般使用者比較重要的有「Xen dom-U support」,表示終於有可能在 Amazon EC2 上跑 FreeBSD。\r\n\r\n另外一個是 amd64 平台的 Kernel memory limit 比之前大 (這個修正已經 merge 回 7-STABLE),以及 ZFS 更新到 v13,這使得 ZFS 的效能以及可用性大幅提昇。\r\n\r\nNFS 的改寫也是重點,包括 NFS locking 與 NFSv4。FreeBSD 之前的 NFS client 在高負載時的效能與穩定性都不好,這次改寫後打算灌台機器來測試看看 8.0-BETA1 的效果如何。", + "title": "FreeBSD 8.0-BETA1" + }, + { + "id": "2061", + "body": "雖然在裝之前就已經知道,但還是得再提一次,FreeBSD 8.0-BETA1 不是給 production 用的 XD\r\n\r\n首先是安裝的部份,裝起來不太順,今天早上國內的伺服器速度不太快,而且偶而會遇到 error,之後還是跑去日本的 ftp.jp.freebsd.org 抓才正常多了。\r\n\r\n列出我自己遇到的已知問題:\r\n\r\n另外一些小問題:(BETA 特有的,RC 與正式版的時候應該都會解掉)\r\n\r\nInstaller 改了不少東西,裝的時候其實發現很不順手 (像是 boot loader 的地方,Standard 與 BootMgr 對調,結果一直選錯)。另外 doc 的部份是以 package 裝入系統,不屬於 base system,不小心誤裝後可以用 pkg_delete 移除。\r\n\r\n依照 schedule,應該是今明兩天就會出 8.0-BETA2 吧?再來看看情況。", + "title": "FreeBSD 8.0-BETA1 初步使用感想" + }, + { + "id": "2065", + "body": "這篇是因為在 PIXNET 內講了 n 次,決定寫成文字,至少之後新人進來可以說「就看這篇」,避免整套系統都需要重新講一次。\r\n\r\n對了,補充一下,PIXNET 還是有缺人,參考「缺人找人」這篇的內容,如果有想問的細節,可以寫信問我。\r\n\r\n

資料庫

\r\n\r\n在 RDBMS 提供了很多而且很豐富的操作方式,但當資料量愈來愈大時,會遇到單台機器的網路頻寬有限以及空間有限。這時候一定得走向多台的架構。\r\n\r\n

Replication

\r\n\r\n最容易解決的情況是「讀取的 query 比寫入的 query 多」,可以用 database replication 解決,這也是 Web 1.0 網站常見的解法之一 (另外一種常見的解法是使用靜態檔案,或是 reverse proxy cache),同步將資料複製到多台。\r\n\r\n

Memcached

\r\n\r\n接下來會發現當 slave 過多時會造成每台記憶體內重複 cache 相同的元素,也就是說,有二十台 slave,每台都有 SELECT * FROM `user` WHERE `name` = 'gslin' 的結果其實很浪費資源。不過這個問題可以用 memcached 或是 hash selection 解決。\r\n\r\n

Sharding

\r\n\r\n在 Web 2.0 的環境裡,User generated content 成為主流,當寫入的 query 超過單台可以負荷的量時,replication 的架構就不是很適合了,因為每個寫入的 query 在其他台 slave 上也會被執行。在商用資料庫的領域通常是使用 cluster 架構,在 open source 領域的 MySQL cluster 也是 cluster-based solution,不過用的單位還不是很多,而且 overhead 還蠻重的。\r\n\r\n比較常見的解法是 sharding:依照 id,把資料拆散到各台。像是 Flickr 就是這樣使用。\r\n\r\n但 sharding 就會少了很多 RDBMS 可以用的特性 (JOIN 與 transaction),在寫 application server 或是 library 的時候得花功夫多下幾次 query,並且注意資料的正確性。\r\n\r\n上面這些方法在 2005 年 Brad Fitzpatrick (LiveJournal founder、memcached 作者) 的投影片「LiveJournal's Backend: A history of scaling」都有提到。\r\n\r\nSharding 是一個解法,但有不少缺點:\r\n\r\n\r\n

Key-Value Database

\r\n\r\n後來就有不少人注意到,Web 2.0 網站很多時候不需要 transaction,而 JOIN 也會儘量避免。透過多次 SELECT 拉資料,或是 denormalize 以提高效能的方式還蠻常見。(JOIN 保證 atomic,而且會因為 query analyzer enginer 在沒有正確分析的情況下會有大量的 random access,比多次 SELECT 耗資源)\r\n\r\n另外一個是財務層面上的問題,一開始寫的時候通常也都只有一組 database server,不太可能一次就買兩組 database server。當成長到需要 sharding 時通常寫 code 的人已經不只一個人,一定有人偷懶使用 JOIN 或是其他無法 sharding 的程式。這時候會發現需要「重寫」而非「改寫」。\r\n\r\n於是就有人開始思考,如果我放棄 RDBMS 的 JOIN 與 transaction,放棄到只剩下 key-value 的架構,是不是有辦法可以發展一套 distributed database system 可以取得 \"incremental scalibility\" 的特性 (白話的說就是「加機器就可以增加承載量」),再想辦法看看在這個系統上還可以加什麼功能。\r\n\r\n也就是說,這樣的系統一開始可能只有兩台小台的機器 (為了 HA),同時跑 Web 與 Database,當網站愈來愈大的時候我把這些小機器拉到前端跑 Web,或是轉為開發機使用,本來的 Database 買 15KRPM SAS (為了 cache miss 的 seek time 與 latency) 與 64GB RAM (還是為了 cache hit 降低 latency)。\r\n\r\n所以在 distributed key-value database 先有基本的功能:\r\n\r\n有了這三個功能,至少你可以把本來在 RDBMS 裡很大一部份放到 Key-Value Database 裡。以 Blog 來說,可以把所有的標題及內文部份放到 Key-Value Database 內,大幅減少 RDBMS 的 cache 負擔。\r\n\r\n或者,key 是 path + filename,value 是檔案內容,當作一個 filesystem 在用。(也就是 Amazon S3)\r\n\r\n這樣對於前端寫程式的人就會簡單許多。整個 Key-Value Database 是一朵可以無限擴充的雲,前端程式不需要設計或是修改程式碼就可以一直發展。如果當作 Filesystem 就不用擔心 disk 滿了之後加機器需要停機。\r\n\r\n在這個想法下,就有許多單位投入資源往 distributed key-value system 發展。經過這些年的發展,分散式資料庫主要有三個問題要解決,而且也被證明這三個問題無法同時解決 (被稱為 CAP theorem,參考 Brewer's Conjecture and the Feasibility of Consistent Available Partition-Tolerant Web Services, 2002 這篇原始論文,或是參考比較簡單易懂的說明「Brewer's CAP Theorem」):\r\n\r\n所以分散式資料庫得在這三個條件內取捨。目前比較熱門的 Distributed Key-Value Database 主要都是把 Consistent 放寬到 \"Eventally Consistent\",只保證資料「遲早會一致」,這些 Database 包括了 HBase (Yahoo!)、Cassandra (Facebook) 這兩套 Java-based 分散式資料庫。\r\n\r\n要瞭解這兩套系統的架構,一般建議從「Amazon's Dynamo」這篇開始看,看完後再看這兩套系統的系統架構介紹,以及 mailing list 的討論。\r\n\r\n這兩套除了基本的 Key-Value 外,還多了 Column 的觀念,彈性會比 Key-Value 好一些。Yahoo! 與 Facebook 都拿這個系統當 Search Engine 使用。\r\n\r\n另外有一些比較單純的分散式系統,只有 Key-Value 而沒有 Column 的,在「My Thoughts on NoSQL」這篇文章裡對 CouchDBRedis 自稱 distributed 的嘴炮批評了不少。另外「Anti-RDBMS: A list of distributed key-value stores」介紹了很多。\r\n\r\n大致上是這樣。", + "title": "Distributed Key-Value Database" + }, + { + "id": "2069", + "body": "Wikimedia 的 Blog 上提到了可以用 Flash 顯示 SVG:「SVG for all… with Flash?」。\r\n\r\n就目前瀏覽器的情況,只有 Opera、Gekco Engine 系列 (以 Mozilla 的產品為主)、WebKit Engine 系列 (以 AppleGoogle 的瀏覽器為主) 有內建,Microsoft 的 IE6/7/8 則必須靠 Plugin 外掛支援。\r\n\r\n不過 svgweb 這個 Open Source 的專案 (Apache License 2.0) 雖然還在 alpha 階段,但總算是有機會利用 Flash 顯示 SVG 圖片了,就短期看來,這樣推廣 SVG 會比較順。\r\n\r\n另外在原文裡有提到過於複雜的 SVG 檔案會使得 svgweb 過慢/吃資源的問題可以用 Scour 這個軟體清理 SVG 檔。", + "title": "SVG" + }, + { + "id": "2070", + "body": "在 Domas Mituzas 的 Blog 上看到如何不停機修改 MySQL 唯讀參數的方式:「Evil replication management」。\r\n\r\nDomas Mituzas 在 Sun Microsystem 做事,同時也是 Wikimedia 的系統與軟體發展人員,我猜這個方法應該是用在 Wikimedia 的 MySQL server 上。Wikimedia 的 MySQL server 資料量不小,如果 shutdown 後改 my.cnf 再重新啟動,會因為 innodb_flush_method = O_DIRECT 用掉不少時間在熱機上面。(這是 InnoDB 常用的參數,可以避免 filesystem 與 InnoDB 重複 cache 同樣的資料,但也使得 mysqld 重新啟動時沒有 cache,會需要先熱機才能上線,不然會卡 query)\r\n\r\n於是這篇文章就教你「非正規」的方式修改 (也就是說,要自己承擔風險),使得 cache 不會被清掉,進而降低 down time。", + "title": "修改 MySQL 唯讀參數的方式" + }, + { + "id": "2072", + "body": "從 Slashdot 的「FCC Probing Apple, AT&T Rejection of Google Voice」這篇文章看到的,原報導在 ComputerWorld 的「FCC probes Apple's rejection of Google Voice for iPhone」。\r\n\r\n關於 Apple 拒絕 Google Voice 應用程式登錄到 iPhone 上的事情,可以在「Google應用程式 吃蘋果閉門羹」、「蘋果拿喬 Google二度碰壁」這兩篇看到。\r\n\r\n果然 FCC 就介入調查了 (不愧是萬惡的 Google),分別給 Apple 與 AT&T 各一封公文表示「關切」(在這裡可以下載 FCC 的 PDF 公文)。\r\n\r\n又是大公司之間利用政府機關鬥法了 XD\r\n\r\nUpdate:結果 Google 的 CEO Eric Schmidt 離開 Apple 董事會了:「Dr. Eric Schmidt Resigns from Apple’s Board of Directors」,這算是前戲嗎?", + "title": "FCC 調查 Apple 拒絕 Google Voice 登錄到 iPhone 上的事件" + }, + { + "id": "2074", + "body": "對 HiNet Peering 調降的新聞都只稍微提到 $1480/Mbps 以及用愈多價錢愈低,沒有列出完整的資料。到 NCC 的網站上查:「NCC核定第一類電信事業市場主導者網際網路互連頻寬(Peering)批發費率案」。\r\n\r\n總算是走了第一步。", + "title": "HiNet Peering 降價的新聞" + }, + { + "id": "2075", + "body": "MySQL Master-Master 架構常被用在 SQL query 相依性低的情況,像是 counter 常使用的 INSERT INTO ... ON DUPLICATE KEY UPDATE a = a + 1 不會因為 out-of-order 而造成問題。而 MySQL MMM 算是其中一套寫得比較好的 MySQL Master-Master 架構管理工具。\r\n\r\n不過,用 GoogleMySQL MMM 會找到幾個網頁:\r\n\r\n就目前看起來,MMM1 新版會在 Google Code 上更新,而 MMM2 新版可以在獨立網址站上找到。在 MMM 的 Google Group 上也有人提出類似的問題,所以遲早會解決 (吧)...", + "title": "MySQL MMM 的情況" + }, + { + "id": "2077", + "body": "在 Bruce Schneier 的 blog 看到「Flash Cookies」這篇才想到要紀錄 Firefox 要裝哪些套件才能維持一定的隱私。\r\n\r\n首先是 Firefox 3.5 內建的 Privacy 設定,先選擇 \"Use custom settings for history\" (這樣才能自訂),把 \"Accept cookies from sites\" 的 \"Keep until\" 改成 \"I close Shiretoko\" (我用的版本叫做 \"Shiretoko\",你在自己的電腦應該會看到 \"Firefox\")。接著設定 Exceptions,把常去而且會需要以 cookie 登入的站台設到白名單。\r\n\r\n然後是安裝 RefControl,預設設定成 Block 或是 Forge 都可以,避免 Referer 透漏資訊。有很多站台 (尤其是中國大陸的) 因為 Referer 檢查過嚴格而無法使用時可以另外手動加上網域設為 Normal。\r\n\r\n接著裝 BetterPrivacy,在關閉 Firefox 時清掉 Flash 內的 Local Shared Object (類似 cookie 的功能)。", + "title": "網路隱私權問題" + }, + { + "id": "2078", + "body": "jQuery 的官方 Blog 公告了 jQuery 之前所提供的 code.jquery.com 將重導至 Google's AJAX Libraries API 所提供 jQuery:「code.jquery.com Redirected to Google Ajax APIs」。\r\n\r\n我記得之前是放在 Amazon CloudFront 上面,不支援 gzip (這點對於 JavaScript framework/library 很傷),而且在亞洲非 PoP 國家 (HK 與 JP) 的連線品質其實並沒有很好,另外一個重點應該是因為太燒錢。\r\n\r\n另外要提到的一點是 HiNet 與 Google 台灣機房直接連線了,不確定是不是海纜斷線的權宜之計 (把本來導去其他地區的 Google 流量導回國內,減少國際頻寬的壓力),或是之後就會連著... 肯定的是這次直連的數據會在 HiNet 內部被評估。\r\n\r\n如果 HiNet 與 Google 台灣機房的 peering 是永久性的,另外一個可能的衝擊是台灣機房設 YouTube 的 cache server,這樣一來台灣其他 video hosting 就差不多不用玩了 XD", + "title": "jQuery 提供的 code.jquery.com 重導至 Google's AJAX Libraries API" + }, + { + "id": "2079", + "body": "Amazon EC2 的 Reserved Instances 降價了:「Lower Pricing for Amazon EC2 Reserved Instances」,關於 Reserved Instances 的意義可以參考『Amazon EC2 推出「年租不可抵」制度』這篇文章。\r\n\r\n以最小台的為例,本來是 USD$325/year,現在變成 USD$227.5/year,另外加上 USD$0.03/hour 的費用。本來是六個半月 (~6.45) 以上才打平,現在變成四個半月 (~4.51) 就打平了。\r\n\r\n我是希望 FreeBSD 趕快在上面出現...", + "title": "Amazon EC2 的 Reserved Instances 降價" + }, + { + "id": "2080", + "body": "Amazon Web Services 推出 Amazon Virtual Private Cloud:「Introducing Amazon Virtual Private Cloud (VPC)」。\r\n\r\n於是現有的企業或是網站,可以利用 IPSec 將內部網路串接到 Amazon Web Services 內部,而不用像以前每台機器都要用 OpenVPN 打洞。\r\n\r\n最直覺的想法是,企業可以直接把內部網站搬到 Amazon Web Services 上面,節省不少管理與設備的成本。\r\n\r\n對一般小網站的 MySQL 資料庫備份,變得更容易全自動化處理:在 EC2 上建立 EBS 跑 MySQL slave server,並且定時以 FLUSH + snapshot 另外再留存。\r\n\r\n對於中國大陸的公司來說,透過 IPSec 的幫助,可以變成公司穿越 GFWVPN 啊 XDDD (不過仔細想了以後發現有點貴,自己租 dedicated hosting 跑 IPSec 會比較便宜)", + "title": "Amazon Virtual Private Cloud (VPC)" + }, + { + "id": "2083", + "body": "宮川達彦 (Miyagawa) 在他的 blog 上提到 Perl 的 PSGI 計畫,拿來參考的對象是 PythonWSGI (PEP 333):「PSGI - Perl WSGI」。\r\n\r\n這是一個好計畫,Perl 的確需要一個盡可能輕量化的介面,不論是透過 FastCGI 轉成 PSGI,還是之後會有 mod_psgi,有了 PSGI 後讓上層的 framework 盡可能的簡化。\r\n\r\n不過,Perl 的 threading 支援度不良一直是個頭痛的問題。真的要使用,可能還是會用 FastCGI,而非與 Apache 綁在一起。", + "title": "Perl - PSGI" + }, + { + "id": "2084", + "body": "似乎是篇未來文章 (日期是寫 9/7 17:41,不過程式似乎沒控制好,造成某些因素... XD):「Xuite 即將停止對 IE6 的支援」,依照公告,從 9/9 開始,用 IE6 連到 Xuite 的頁面將會出現警告訊息。\r\n\r\n不過這些理由看了還蠻... XD\r\n\r\n另外文章裡提到的 YahooGoogle,這兩家都還沒停止支援吧?連時間點都還沒訂出來 XD\r\n\r\n在台灣還有過半佔有率的 IE6,在 HiNet Xuite 強力推動下會不會因此掉更快...\r\n\r\n\"\"", + "title": "Xuite 將停止支援 IE6" + }, + { + "id": "2086", + "body": "大約是六七月的時候在 F5DevCentral 上面看到 Election Hash 這個分配方法:「Hash Load Balancing and Persistence on BIG-IP LTM」。\r\n\r\n演算法的部份在 F5 的文章裡寫得很清楚了,這邊就不重複再說明。\r\n\r\nConsistent Hashing 需要一個 shared storage 放 ring 資料,但這個方法不需要,另外一方面,這個方法寫起來比較簡單,而且 query 會打散的很平均,不像 Consistent Hashing 需要用 virtual node 從機率上平均。\r\n\r\n會用 Election Hash 一個主要的原因是 iRuleTcl 語法,簡單的演算法寫起來就已經很長了,如果再複雜下去... XD\r\n\r\n比較明顯的缺點在計算的量:每次 query 進來都要跟所有的 node 計算 hash value,在 node 多的時候應該會感覺到速度下降。不過目前也只有用在 cache server 的 VIP 上以提高 hit rate,後面的機器數量都不多,所以看起來還 okay...", + "title": "Election Hash" + }, + { + "id": "2088", + "body": "把一些關於 MySQL 的資料整理一下。\r\n\r\n初期的 MySQL 隨便跑沒關係,備份的部份記得要把 binlog 也一起備份起來,用 gzip 壓過後 (不使用 bzip2 或是高壓縮率參數,是因為考量解壓縮速度;另外推薦用 Parallel gzip 壓縮,速度比較快) 再用 openssl 加密丟到 Amazon S3 上。\r\n\r\n成長後,買獨立伺服器要一次買兩台跑 HA,每台分別是:\r\n\r\n軟體的部份:\r\n\r\nmy.cnf 設定的部份要花不少功夫,除了一般常見的設定外 (這部份網路上很多文件),有些在站台比較大時會發生的問題要注意:\r\n", + "title": "MySQL 的調校 (軟硬體、版本、設定)" + }, + { + "id": "2090", + "body": "灌新電腦後要裝的字體。(留給自己之後可以查)\r\n\r\n中文:\r\n\r\n英文:\r\n", + "title": "中文與英文字型" + }, + { + "id": "2092", + "body": "微軟放出了 Microsoft Ajax CDN,將 jQuery 1.3.2 與微軟自己發展的 JavaScript library 放上 CDN:「Microsoft Ajax CDN」。\r\n\r\n並沒有像 Google 那樣自己在全球建立 CDN,而是採用 Akamai 的服務,所以速度上相當快。不過缺點是不支援 HTTPS,不像 Google 的 https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js 有合法的 SSL Certification。\r\n\r\nToS 也是相當長,而且是 docx 格式... 大致上都還蠻普通的。", + "title": "Microsoft Ajax CDN" + }, + { + "id": "2093", + "body": "在「RAID's Days May Be Numbered」這篇文章裡面提到使用 RAID6 的好處。\r\n\r\n不過,比較有趣的地方是在 2009 年現在的「Hard Error Rate in Bits」數據,說明消費性 SATA 硬碟、企業級 SATA 硬碟、SAS/FC 硬碟的差異。這個數字也是在規劃 RAID 時的重要依據。\r\n\r\n由於用料與製作過程的差異造成 error rate 不同,在重視資料的場合裡,大檔案會用企業級 SATA 硬碟跑 RAID6,而資料庫會用 SAS/FC 硬碟跑 RAID1+0,而且都不會串太多顆。", + "title": "磁碟出錯機率與 RAID" + }, + { + "id": "2095", + "body": "在 Slashdot 上看到兩位 MIT 的學生發展一套程式 (這個計畫被稱為「Gaydar Project」),試著用 Facebook 上公開的資料來研判「是否為同性戀」:「MIT Project \"Gaydar\" Shakes Privacy Assumpitons」,除此之外,參與的團體、喜愛的音樂也都能夠拿來分析各種性向。\r\n\r\n這個計畫應該會使得網路上的隱私問題又被拿出來批判一番... 一定會有鄉愿的人跳出來批評「不應該做這類研究」。\r\n\r\n這類問題在於,資料是公開的,方法也是人發展出來的,就算在全美禁止,也會有學者在其他國家發展出來。真正想要解決問題還是得從根本解決,也就是「個人資料有沒有辦法保護的更好」,現有的保護程度 (更精確的說,至少 Facebook 現有的保護程度) 可以讓研究人員取得足夠資料,表示不夠用。\r\n\r\n可以預見之後政府單位 (尤其是教育單位) 會宣導「不要在網路上留下個人資料」試著卸責,但卻沒有成效。", + "title": "用 Facebook 上的公開資料猜測性向" + }, + { + "id": "2096", + "body": "在 TechCrunch 看到 Google 推出「Google Chrome Frame」,將 Chrome 嵌到 IE 裡面:「Google Has A Solution For Internet Explorer: Turn It Into Chrome」,這個軟體的作法有種 IETab 的感覺...\r\n\r\n使用者裝了 Google Chrome Frame 後,並不會使得所有的頁面都用 Webkit Engine 呈現,而是網頁製作人必須要指定「我的頁面可以用 Google Chrome Frame 顯示」才會執行:(如果是 XHTML 的話要記得加上 slash)\r\n
<meta http-equiv=\"X-UA-Compatible\" content=\"chrome=1\">
\r\n另外還可以利用 Google 提供的 API,可以偵測使用者是不是 IE 而且沒有裝 Google Chrome Frame,如果沒有的話,可以提示使用者安裝...\r\n\r\n裝好後,可以在 IE 裡面用 cf:http://... 強制使用 Google Chrome Frame 測試,最明顯的改善就是字體與 input 框 (當 focus 上去時邊框會改變顏色),可以測試看看。\r\n\r\n除此之外,裝了以後發現 Google Gears 也被裝進去了...\r\n\r\n最後留個在 IE7 + Google Chrome Frame 的 Acid3 畫面吧 XD\r\n\r\n\"\"", + "title": "Google Chrome Frame - 在 IE 裡面使用 Chrome" + }, + { + "id": "2098", + "body": "在「FreeBSD 8.0-RC1 available」這邊提到 8.0-RC1 出來了,看起來是第一個 kernel 沒有一堆 debug info 的版本,要測效能這時候跳下去測會比 8.0-BETA4 準確,順便把之前一直在測試的 8.0-BETA4 升級到 8.0-RC1... (測 NFS 的穩定度)\r\n\r\n用台灣的前兩個 mirror site 安裝,發現慢到爆炸 (ftp.tw.freebsd.org 與 ftp2.tw.freebsd.org,分別是交大國高),實在沒時間找原因,暫時先跑去 ftp.jp.freebsd.org 抓...\r\n\r\n事後看了 traceroute 與一些紀錄,交大的部份大概沒救,應該是奇怪的 filter 或是 routing 亂跑之類問題造成。國高因為只能看單邊 (TFN 端),看不出原因。\r\n\r\n再來就是文章的這段,看了讓人笑得蠻開心的:\r\n
How many RC's we have will depend on how well 8.0-RC1 does. At the moment only one more RC is on the schedule but odds are fairly high we will wind up inserting at least one more RC. Between BETA4 and RC1 a lot of work has gone into IPv6 issues as well as many other issues that have been brought up from the public testing. And a patch set was committed by the people who handle porting ZFS to FreeBSD that they felt makes ZFS production-ready.
\r\n我的解讀是:\r\n
這之後到底還會出多少 RC,要看這次 release 的 8.0-RC1 表現的如何。照表操課最少還有一次 RC,不過因為從 8.0-BETA4 到 8.0-RC1 我們又翻動太多東西 (IPv6 與 ZFS),沒有意外的話應該會有東西爛掉,所以應該還會再多一個 RC。
\r\n至於 8.0 的 ZFSv13 是否 stable,我還是很懷疑... 備份時跑大量的 rsync 時,有一些 rsync process 會卡死 (process 砍不掉)。另外有 kernel level memory leak,不過這點可以用每天重開機來解決... (順便解決前面的卡死問題)", + "title": "FreeBSD 8.0-RC1 釋出" + }, + { + "id": "2100", + "body": "TI 工程機算機的 OS firmware 需要 sign 過才能用,但其中使用的 RSA key 的有效長度只有 512bits,所以被暴力法搞定:「Texas Instruments Signing Keys Broken」。\r\n\r\n查了 Wikipedia 上的「RSA Factoring Challenge」,早在 1994 與 1996 年左右,RSA-129 (426bits) 與 RSA-130 (430bits) 就已經被分解成功了,當時比較安全的 RSA 保護會是 1024bits (現在一般都建議 2048bits 了)。\r\n\r\n在「Comparison of Texas Instruments graphing calculators」可以看到很多被破解出來的型號是在這之後 (甚至在 21 世紀推出的型號) 所推出的版本,於是在 2009 的電腦,透過 BOINC,一個禮拜內就把這些 private key 算出來:「All TI Signing Keys Factored」。\r\n\r\nTI 用 DMCA 要求下架,不過在很多美國境外的網站上都找得到這些 private key 了,我猜這幾台會熱賣起來... (因為可以自己刷 OS 韌體)", + "title": "TI 工程計算機的 RSA private key 被破解" + }, + { + "id": "2101", + "body": "在「Google Docs OCR」這邊看到 Google Docs 也開始試著提供 OCR 服務了:「Import Scans or Go Multilingual」,不過剛開始還不穩定,傳了兩次都是 error,應該是因為服務很吃資源,而想要測試的人又多。\r\n\r\n以文章作者自己上傳文件測試的結果來看 (英文的文件,他拿 RFC 2616 印出來後掃描的圖檔),有些地方有錯字,不過整體的效果還不錯... 等穩定後再來測試中文文件,有沒有支援中文對我們很重要...\r\n\r\n如同作者講的,網路上提供免費 OCR 的服務並不多,如果 Google 決定把這項服務併入 Google Docs 裡的話,一定會打亂現在 OCR 付費的生態...", + "title": "Google Docs OCR" + }, + { + "id": "2102", + "body": "在 Slashdot 上看到目前市占率最高的 SSH client/server 實做,OpenSSH,十週年了:「OpenSSH Going Strong After 10 Years With Release of v5.3」。\r\n\r\n因為這次釋出的 5.3 版帶有紀念性質,所以只包含了少量的 bugfix,沒有增加任何新功能或是重大改變:「openssh.com/txt/release-5.3」。\r\n\r\n四年前寫的「OpenSSH 與 SSH Communications 的 SSH」這篇文章現在再回頭看其實很有趣 (當初 SSH Communications 講的超酸),不曉得現在市占率變成多少了...", + "title": "OpenSSH 10 週年" + }, + { + "id": "2103", + "body": "這次的攻擊在於 Flickr 本身定義 Protocol 時偷懶,而且在 MD5 被擺平後沒有更新 Protocol,造成可以利用目前在 MD5 上發展出來的攻擊,產生相同的簽名,但內容卻可以放入自己想放的資訊:「Flickr's API Signature Forgery Vulnerability」。\r\n\r\n簡單來說,「以 shared secret 使雙方可以確認訊息是否正確」這件事情,有 HMAC 可以用,但 Flickr 並沒有使用 HMAC,而是自己定義了 MD5(secret + msg),相較之下弱很多,加上 MD5 本身的攻擊技術已經相當成熟,所以就...\r\n\r\n另外一個是 Flickr 一直沒有 review API,當 MD5 有問題而且攻擊技術愈來愈豐富,API 推出 SHA256 版本並公告 MD5 版本會在某個時間後無法使用,會是個合理的作法。\r\n\r\n這份 paper 是就九月底發出來的,接下來應該會訂新的 Protocol,通知所有使用 Flickr API 的應用程式作者,花時間改版。", + "title": "Flickr API 的 MD5 簽名偽造攻擊" + }, + { + "id": "2104", + "body": "剛剛看影片時眼尖發現 r11.tpe1.c.youtube.com 這個網域名稱,應該就是台灣的 cache server 了,就底層來說,從國內幾個 ISP 看起來都是 direct peering,只是不確定是否所有台灣的 ISP 都會被導過去。\r\n\r\n從「jQuery 提供的 code.jquery.com 重導至 Google’s AJAX Libraries API」這篇提到互連的事情,差不多過了一個半月...", + "title": "YouTube 在台灣建立 Cache Server" + }, + { + "id": "2106", + "body": "於是 Firefox 全螢幕時的可視範圍變成:\r\n\r\n\"\"\r\n\r\n新鮮感沒問題,實用性就不知道了...", + "title": "螢幕打直..." + }, + { + "id": "2107", + "body": "ronny 去了在北京辦的「2009系统架构师大会」寫的文章:「MySQL 的 DRBD 與 MMM (1)」。\r\n\r\n裡面有些地方可以補充一下,在不完全能接受 replication delay 的情況下,可以用 Google 提供的 SemiSyncReplicationDesign patch,所有在 master 的新增、更新、刪除動作時 (也就是有寫入的動作時) 都會等到 master 傳給 slave,並且 slave 說 OK 才結束。", + "title": "DRBD 與 MMM 的比較" + }, + { + "id": "2108", + "body": "沒想到會在國外的 blog 上看到前 Yahoo! 員工用力砲轟這件事情:「This shouldn’t be the image of Hack Day」,另外在 Y Combinator 上面也燒起來了:「\tThis shouldn’t be the image of Hack Day」。\r\n\r\n細節就不講了,圖片要講的事情其實很清楚,下面的 comment 主要是「對 Yahoo! 失望」之類的話,有些人覺得 Y! 的 hack days 已經是國際化的活動 (蠻多國外的人會看看得獎作品),應該以國際標準來辦,不應該物化女性之類的...\r\n\r\nPS:Simon Willison 近期比較有名的是 Django Framework 的 committer,會訂他的 blog 主要是因為有不少 Python 的資訊。印象中他現在應該是在英國的衛報做事?\r\n\r\nUpdateYahoo Developer Network 的頭 Chris Yeh 出來道歉:「Sorry」。\r\n\r\nUpdate:上 Slashdot 了:「Yahoo Offered Lap Dances At Hack Event」。", + "title": "前幾天辦的 Yahoo! Taiwan Hack Day" + }, + { + "id": "2110", + "body": "因為要做的事情又變多了,PIXNET 徵有 PHP 經驗的 coder (帶有其他技能當然更好),預定要四名,徵到年底。\r\n\r\n有興趣的人請提供簡歷,可以寄到 gslin at pixnet.tw。\r\n\r\n常見的問題:上班的地點在台北市中山區,人事制度依照城邦媒體控股集團的規定,上班時間是 10AM~7PM,薪資的部份都是面議,可以上班的日期是 11/1。", + "title": "又要徵人了..." + }, + { + "id": "2112", + "body": "前幾天在 Slashdot 上看到的,AT&T 的頭發信給全公司的員工,「建議」他們到美國政府網站 OpenInternet.gov 發表對於「網路中立」的意見。當然,是對 AT&T 有利的意見...:「AT&T Suggests To 300K Employees To Lobby the FCC」,而媒體也向 AT&T 證實了這件事情。\r\n\r\n其實就是個商業團體操作的手法,不是第一次也不會是最後一次。會上新聞主要是因為 AT&T 有將近 30 萬員工,而且想操作的話題是「網路中立」這個熱門話題。\r\n\r\n類似的行為在台灣也很常見,像是「不樂之捐? 5千端節獎金拿去賑災 鴻海員工忿忿不平」之類的。\r\n\r\nSlashdot 上的 comment 其實寫的很現實:\r\n
Unions are a democracy.\r\nBusiness are a dictatorship.\r\n\r\nWhen a union tells its members, \"You should do X,\" you can work on changing the direction of the Union by voting in new leadership, or run for a position yourself.\r\n\r\nWhen a business tells its employees, \"You should do X,\" you can quit.
", + "title": "AT&T 要他們的員工操控政府決策" + }, + { + "id": "2113", + "body": "在 Slashdot 上看到 IBM 也開始在美國本土販賣內含 Ubuntu 的桌機了:「IBM's Answer To Windows 7 Is Ubuntu Linux」。\r\n\r\n大約幾個禮拜前,IBM 與 Canonical 發表了合作計畫,預定往非洲推銷 Ubuntu,有人問 IBM 是否有計劃在美國本土販賣類似的產品,現在的回應就是答案。\r\n\r\n除了 IBM 以外,Dell 在更早的時候就提供 Ubuntu 桌機與筆電:「Dell PCs Featuring Ubuntu」。", + "title": "IBM 開始在美國賣內含 Ubuntu 的桌機" + }, + { + "id": "2115", + "body": "在 OSNews 上看到 AppleMac OS XZFS Project 關閉了:「Apple Shuts Down Mac OS X ZFS Project」。\r\n\r\n原因沒有正式的說明,不過一般推測,應該是 Apple 內部認為 license issue 會有問題,尤其是 SunNetApp 之間的官司。", + "title": "Mac OS X 的 ZFS Project 將收起來" + }, + { + "id": "2116", + "body": "在 Twitter 上看到這篇關於 Amazon CloudFrontRackspace Cloud Files CDN 的比較文章:「Amazon CloudFront vs. Rackspace Cloud Files CDN Performance」。\r\n\r\n先講作者的結論,因為 Rackspace Cloud Files CDN 不是自己建立 CDN 平台,而是使用 Limelight Networks,所以品質比 Amazon CloudFront 好太多。\r\n\r\n測試出來的數據與預期的差不多,Limelight Networks 在這塊也做很久了。如果有一些檔案 (像是 javascript) 想要上 CDN 的話,透過 Rackspace Cloud Files CDN 倒是不錯的方式。\r\n\r\n比較有問題的地方在於 CNAME,查了一些資料似乎還是沒支援?另外一個問題在於 HiNet 會被導到北美的 PoP,而非亞洲地區的 PoP。", + "title": "Amazon CloudFront 與 Rackspace Cloud Files CDN 的比較" + }, + { + "id": "2117", + "body": "lighttpd 1.4.24 釋出了,最重要的新增功能是增加 TLS SNI 支援:「1.4.24 - now with TLS SNI and money back guarantee」,也就是 TLS 的 virtual hosting 支援。另外也改了不少當 FastCGI backend server 出問題時處理的 code。\r\n\r\n不過 TLS/SNI 還是卡在 IE6 不支援,這兩年大概還沒辦法被廣泛使用...", + "title": "lighttp 1.4.24 - TLS/SNI 的支援" + }, + { + "id": "2119", + "body": "不管是國內還是美國,總統上台好像都會把整個網站翻掉:「White House Website Switches To Open Source」。\r\n\r\n這次翻修 whitehouse.gov 時選的是 Drupal 這套 open source 的 CMS,我印象中也蠻常在 exploit list 上看到這套軟體...\r\n\r\nAnwyay,對於不熟悉 Open Source 的業主來說算是一個很有力的材料... (for sales)", + "title": "白宮網站換成 Drupal" + }, + { + "id": "2120", + "body": "After the Deadline 是一個拼字檢查服務,在上個月初被 Automattic (WordPress.com) 買下後先被整合到 WordPress.com 內,然後最近決定以 GPLv2 open source client library,讓個人免費使用:「After the Deadline now Open Source」。\r\n\r\n看起來跟 TinyMCE 整合在一起,也就是 WordPress 在用的編輯器,不過目前只支援英語...", + "title": "After the Deadline (拼字檢查服務) 的 client library 以 GPLv2 釋出原始碼" + }, + { + "id": "2121", + "body": "Amazon Web Services 推出了 Amazon Relational Database Service:「Amazon Launch Hosted MySQL Database Service」。\r\n\r\n照網頁上的說法,現有 MySQL 程式可以直接套上去用,與 MySQL protocol 相容,應該就是改自 MySQL,依照「Introducing Amazon RDS - The Amazon Relational Database Service」的說明,是 MySQL 5.1。\r\n\r\n本來要自己用 EC2 + EBS 自己堆整套 HA 架構的系統,現在 Amazon 直接支援,看了一下價錢,機器的部份只比 EC2 的單機貴 10%,其他 I/O 及使用空間的部份與 EBS 價錢一樣。然後你可以設定時間直接打 snapshot 備份,幫你處理了一卡車資料安全性的問題...\r\n\r\n不過目前還不能從 AWS Management Console 管理,要透過 API 管,不過這已經是一大步了...", + "title": "Amazon Web Services 推出 MySQL Relational Database..." + }, + { + "id": "2123", + "body": "在「Amazon EC2 - Now an Even Better Value」與「New EC2 High-Memory Instances」這兩篇文章裡,Amazon Web Services 宣佈 EC2 將本來的五種 instance 調降租金,最多 15%,自 2009/11/1 生效。另外還推出兩種高記憶體用量的 instance。\r\n\r\n高記憶體用量的 instance 看起來是配合 MySQL Relational Database 而推出的。\r\n\r\nRelational Database 補齊後是個 詐騙集團 startup 的好出發點,加上 Amazon Web Service 現在也有 Premium Service Support,其他 Cloud Service (像是 MT) 的 Cloud Service 的定價與其他策略應該要調整了...", + "title": "Amazon EC2 推出新的 instance 種類並降價" + }, + { + "id": "2124", + "body": "在 MySQL Performance Blog 看到「State of the art: Galera – synchronous replication for InnoDB」這篇文章,介紹 codership 的 Galera,一套在 MySQL InnoDB 上面實做 Multi-master 且 synchronous replication 的系統。\r\n\r\n因為是 synchronous replication,所以可以看出著重在資料正確性,以架構看起來沒辦法 scale 到很大的系統,但對於量不會太大的資料 (像是購買交易資料) 不是問題。\r\n\r\n目前看這套的賣點是在把 synchronous replication patch 放入 MySQL,這是其他的 MySQL distribution 目前沒有直接包進去的功能。至於 Multi-master 與 auto-inc 的管理,目前 open source community 已經有不少解決方案了。", + "title": "Galera" + }, + { + "id": "2126", + "body": "指的是 Three strikes (policy) 這類型的法案。\r\n\r\n不過,英國執法單位反對的原因是怕這個法案通過後,使用者會大量使用加密技術以避免被蒐證,並且開始習慣用加密技術保護自己 (像是 encrypted disk),會造成執法單位在舉證變得困難 (不是舉證非法下載,而是國安犯罪的舉證):「UK Law Enforcement Is Against \"3-Strikes\"」。\r\n\r\n蠻鳥蛋的理由... XD", + "title": "英國執法單位反對三振法案" + }, + { + "id": "2128", + "body": "在 Simon Willison 的文章看到一個新的 JS library:「Underscore.js」,與 jQuery 有類似的想法:jQuery 是以 $ 為核心,Underscore.js 是以 _ 為核心。\r\n\r\n除了對各種資料結構的操作外,還有一些與 event 有關的 function。如果可以自己處理各瀏覽器的 bug/workaround,用 Underscore.js 還不錯... (不過,自己手刻其實也還好...)\r\n\r\n檔案大小的部份,Underscore.js 0.3.0 版的原始檔案 (含 comment) 是 15773 bytes,透過 yuicompress 處理過後是 5711 bytes,如果再加上 gzip 壓縮是 1937 bytes。\r\n\r\njQuery 1.3.2 的原始檔案 (含 comment) 是 120763 bytes,透過 yuicomopress 處理過後是 57254 bytes,gzip 後是 19711 bytes,差距大約都是十倍 (yuicompress 與 yuicompress + gzip 都是十倍左右,comment 的版本比較起來沒意義,因為實際上線時不會拿這個版本跑),但是功能多了很多,看使用的情況可以自己取捨。jQuery 另外一個好處是 Google 有提供 CDN,所以不需要自己 host...\r\n\r\nUnderscore.js 有提供一個頁面測試:「Underscore Test Suite」,而且這個頁面最下方的「Underscore Speed Suite」有直接產生測試圖的資料,數據直接以 Google Chart API 顯示,還附上 TinyURL 的短網址... XD\r\n\r\n像我測試的結果就是:\r\n\r\n\"\"", + "title": "Underscore.js,新的 JS Library" + }, + { + "id": "2131", + "body": "Slashdot 上看到 WPA 的攻擊又被翻新了:「New Improvements On the Attacks On WPA/TKIP」。\r\n\r\nTKIP 是當初為了比較舊的設備 (一開始只支援 WEP 的設備) 而設計的協定,主要是希望原先使用 WEP 的設備可以藉由韌體升級繼續提供服務,所以在設計上還是儘量使用類似的 crypto algorithm,像是 RC4。\r\n\r\n目前一般家用環境常用的 WPA Personal 是使用 AES,因為是翻新重新設計的協定,不受這幾次攻擊的影響。", + "title": "無線網路 WPA/TKIP 攻擊翻新" + }, + { + "id": "2132", + "body": "昨天在 lordmi 的 blog 看到ニコニコ動画的外嵌 player 了:「女朋友理想的咪咪size,C和D支持者共85.9%」。\r\n\r\n查了官方的 blog 最新的那篇「プレーヤー更新情報 不具合修正履歴 その4」沒提到,在最近官方的「【ニコニコ動画(9)】とりあえずマイリスト・ニコレポなど【新機能】」也沒提到 (需要登入才能看),不過在「ニコニコ動画(9) 新サービス&新機能を紹介」這邊總算是找到了:\r\n
外部プレーヤー\r\n外部プレイヤーをつかって、皆さんのブログやウェブサイトでもニコニコ動画の再生が可能になります!
\r\n在播放完後的 menu 選擇「ブログに貼付」就會出現可以選擇的外嵌語法了,像是這樣:\r\n\r\n", + "title": "「ニコニコ動画」支援外嵌了..." + }, + { + "id": "2133", + "body": "Traffic Server 是 Inktomi 的產品之一,是一套高效率的 HTTP cache server,據說在很早前就支援 multi processor (Squid 到現在還是不行),就目前的版本有機會在夠好的機器上跑出 35k reqs/sec。不過,這家公司在 dot-com 泡沫時被 Yahoo! 買下。\r\n\r\nSimon Willison 在七月的時候提到 Yahoo! 打算把 Traffic Server 的 source code 公開出來並放到 Apache Software Foundation 上面,不過當時只有計畫。\r\n\r\n三個月後,在「Traffic Server」這篇看到 Yahoo! 已經把 code 整理好,可以透過 Subversion 取得原始程式碼了:「Traffic Server」。\r\n\r\n這套軟體的簡寫是 YTS,在無名也用的很多。Flickr 則是用自己改的 Squid。(就目前在外面的謠言,至少 header 看起來不是 YTS)\r\n\r\n\"\"\r\n\r\n算是 open source 的另外一種選擇...", + "title": "Yahoo! 把 Traffic Server 的 source code 放出來了" + }, + { + "id": "2134", + "body": "剛剛吃飯的時候有人說這兩天「ニコニコ動画」感覺變快了,吃完飯回來 trace 後發現是因為上了 CDN,用的是 Limelight Networks:(下面是 mtr --report smile-cll46.nicovideo.jp 的結果)\r\n
3. 60-199-255-113.static.tfn.ne  0.0%    10    0.8   0.8   0.6   1.0   0.1\r\n4. 60-199-6-125.static.tfn.net.  0.0%    10    0.8   0.8   0.8   1.0   0.1\r\n5. 60-199-6-2.static.tfn.net.tw 20.0%    10    0.8   0.8   0.8   1.1   0.1\r\n6. 60-199-6-26.static.tfn.net.t  0.0%    10    2.7   1.2   1.0   2.7   0.5\r\n7. 60-199-17-42.static.tfn.net.  0.0%    10   23.1  23.0  22.8  23.3   0.2\r\n8. limelight-10G.hkix.net        0.0%    10   27.8  23.6  22.3  27.8   1.9\r\n9. cds37.hkg.llnw.net            0.0%    10   22.5  22.5  22.3  23.1   0.2
\r\nHiNet 過去是到美西,速度應該還可以。(回家用 ADSL 測看看才知道)", + "title": "「ニコニコ動画」的外連..." + }, + { + "id": "2135", + "body": "MariaDBMySQL AB 的創辦人之一,Michael Widenius (也就是 Monty),在離開 Sun Microsystem 之後,以 MySQL 為基礎所發展的一套資料庫。\r\n\r\n剛剛看到 MariaDB 5.1 Beta 版包出來了:「MariaDB 5.1 Beta Released」,與 MySQL 5.1 的差異可以參考「MariaDB versus MySQL」這個網頁的說明。\r\n\r\n主要的差異在於內建了 MariaPBXT 兩個 engine,其他的都是細節部份,大家都會 porting 來 porting 去。在「How does Maria 1.5 Compare to MyISAM?」介紹了 Maria storage engine 1.5 (目前 MariaDB 5.1 Beta 包的版本) 與 MyISAM 的差異,最主要的重點應該還是 Data 與 Index 都變成 crash-safe,所以比較容易配合 SAN 或是 DRBD 了...\r\n\r\n要找時間測試看看,尤其是讀取速度的效能。\r\n\r\nUpdateOurDelta 放出 binary 了,可以將 DebianUbuntu 的 repository 指過去安裝:「MariaDB 5.1 packages for Debian and Ubuntu」。", + "title": "MariaDB 5.1 Beta 版釋出" + }, + { + "id": "2137", + "body": "這兩天在好幾個地方都看到同樣的報導了,Sunlight Labs 對美國政府呼籲,不要再使用 AdobePDFFlash:「Adobe is Bad for Open Government」,因為這兩項技術對於歐巴馬政府想推動的 Open Government 有極大的障礙。\r\n\r\n文章的論點其實很簡單,Sunlight Labs 的人認為 Open Government 使用的技術不僅必須是「公開標準」,而且必須是「容易實做」的標準。PDF 的技術是公開標準 (ISO/IEC 32000-1:2008),但不是容易實做的標準,在不少 comment 裡面很多人都提到,擷取文字的最快方式是轉成圖檔後用 OCR 技術拉出來。這點 OpenDocument (ISO/IEC 26300:2006) 也有相同的問題。\r\n\r\n不過,當國外已經更上層樓在爭論要走向「容易實做」的公開標準時,國內還是繼續 doc 與 docx...", + "title": "Sunlight Labs 對美國政府呼籲:「不要再用 Adobe 的技術了」" + }, + { + "id": "2139", + "body": "把家裡的 Firefox 換成 3.6b2pre 了,照慣例一樣是砍掉重來。\r\n\r\n把東西裝回去時發現 RefControl 爛掉了,不如網站所宣稱的可以用。這部份反而意外找到 Mason 可以用,而且對 host 靈活多了 (用 regular expression),之後應該會丟掉 RefControl 吧。\r\n\r\n速度與 UI 沒什麼太大變化。有些動作有感覺變慢了一些,但有些動作有感覺變快... 看了細部設定的部份,發現 about:config 內的 javascript.options.jit.chrome 預設打開了。另外開新的 tab 時,新的 tab 會貼到 tab 的旁邊,而非最後面 (最右側)。\r\n\r\n穩定性的話,目前逛網頁還沒遇到 crash 或是卡住,算是堪用的版本吧,是可以找時間把手上的機器都換上去測試了...", + "title": "Firefox 3.6 系列" + }, + { + "id": "2141", + "body": "在瑞典法院下令 ISP 封鎖 The Pirate Bay (TPB) 之後,這陣子 ISP 開始動起來了,使得 TPB 的連線斷斷續續的。不過,McAfee 發現,可以取得版權物的站台反而因此增加了 300%:「Pirate Bay Closure Sparked P2P Explosion」。\r\n\r\n本來大家都往 TPB 找資料,現在因為 TPB 被擋 (或是不順),就有人利用之前從 TPB 上面搜刮下來的資料 hosting...\r\n\r\n不知道這次會花多久時間恢復...", + "title": "The Pirate Bay 被封鎖後的效應" + }, + { + "id": "2143", + "body": "在 Slashdot 上看到 ZFS 也在發展 block-level dedupe 的工具:「ZFS Gets Built-In Deduplication」。這東西應該已經有一票軟體專利在前面阻撓,尤其是 SAN 廠商手上應該都有不少這類型的專利...\r\n\r\nBlock-level Data Deduplication 指的是重複的 block 區塊可以用 reference 紀錄,而非複製完整的 block。等到有修改時再複製修改,也就是 Copy-on-write。\r\n\r\n在維基百科的頁面記載了:\r\n
ExaGrid's patented byte-level deduplication (content aware), NEC's HydraStor (Content Aware Deduplication Technology) , IBM's ProtecTier, Quantum, EMC/Data Domain, Symantec NetBackup PureDisk, EMC Avamar, Sepaton, FalconStor VTL, SIR, FDS (Virtual Tape Library, Single Instance Repository, and File Deduplication System) are some notable names.
\r\n應該會有人跳出來告吧?還是 SunOracle 手上跟這些廠商有神秘的 agreement?", + "title": "ZFS 的 dedupe 工具" + }, + { + "id": "2144", + "body": "在 Slashdot 上有報導說 Skype 將會提供 Open Source 的用戶端軟體:「Skype For Linux To Be Open-Sourced \"In the Nearest Future」,而 Skype 官方的 blog 上面也證實了目前正在發展 Linux 上的版本 (而且是 open source):「Skype open source」。\r\n\r\n事情是這樣發展的:有人向 Skype 詢問是否有 Mandriva RPM package 可以下載,而 Skype 的人回覆「近期內會放出 open source 的 Linux client」,這樣一來應該就會有不少軟體 porting 進去,或是 cleanroom 重寫 (如果有人認為 license 不夠友善)。\r\n\r\n另外也終於可以驗證 Skype 的加密到底安不安全。\r\n\r\nUpdate:參考 comment 的說明,只有 UI 的部份會 open。", + "title": "Skype 將會提供 Open Source 的用戶端" + }, + { + "id": "2146", + "body": "在「大表删除数据的思路」這篇提到 MySQL 刪除的技巧。\r\n\r\nMySQL 的刪除不建議直接刪,也就是像這種 query 應該要避免:\r\n
DELETE FROM `table` WHERE `lastupdated_at` < 1234567890
\r\n因為在巨大的 table 裡面,這類的 query 可能會跑幾分鐘。\r\n\r\n一般建議多幾筆 query 刪除:\r\n
DELETE FROM `table` WHERE `lastupdated_at` < 1234567890 ORDER BY `id` LIMIT 0, 10000
\r\n跑到適當地條件成立時為止。\r\n\r\n會需要這樣設計,其中一個主要的原因是因為 MySQL 的 replication 架構:在 master 上面的寫入時是 multi-threading,但在 slave 上面的更新卻只有一個 thread。所以,如果有單一 query 跑太久,會造成有一段時間 master/slave 資料不一致。\r\n\r\n另外一個可能的原因是 table 使用 MyISAM。因為 MyISAM 寫入時會鎖住 table,如果花太久時間會使得 SELECT 要等待 query 結束,這點在有 web 的服務要避免 (因為前端的 user 會卡住)。分成多次寫入可以讓 query 在兩次寫入中間取得資料。\r\n\r\n原文的建議是將每個要刪除的 entry 都展開成一筆 DELETE,這個方法有不少壞處,應該要避免。\r\n\r\n折衷的辦法是使用 LIMIT 限制數量,不過這樣還不夠,因為 MySQL 會認定這個 query 在 master 與 slave 上可能會有不同的結果 (即使兩邊資料一樣,底層的 data structure 可能不同,而造成 LIMIT 後出來的 Result Set 不一樣),為了資料安全而決定切到 ROW mode。\r\n\r\n所以另外加上 ORDER BY `id` 確保 master 與 slave 所取得的 entry 是相同的。", + "title": "MySQL 上大量刪除的技巧" + }, + { + "id": "2148", + "body": "上個月的瀏覽器市場佔有率調查出爐了,在敵消我漲的情況下,Firefox 總算是超越了 IE6 的佔有率:「October 2009 browser stats: Firefox finally passes IE6」,在 StatCounter Global Stats 也可以看到類似的數據。", + "title": "Firefox 佔有率超過 IE6 了..." + }, + { + "id": "2149", + "body": "在 Slashdot 上看到美國國會通過議案 (以 41 比 28),要求 ISP 必須配合阻擋某些「不法性質」的網站,在新聞稿上面寫的包括色情網站與侵權網站,另外還包括金融犯罪的網站:「Congress may require ISPs to block fraud sites」。\r\n\r\n也就是說,這項議案授權美國政府,要求 ISP 阻擋某些美國政府管不到的網站。由於全球網路的交換中心在美國,如果在美國的網路系統可以被政府用命令要求阻擋某些網站,會有很嚴重的影響。\r\n\r\n因為這個比數看起來不是參議院或是眾議院的全額,看新聞稿是「The House Financial Services Committee」通過的,不確定是不是政府內的草案,接下來看 EFF 會有怎麼樣的回應,以及其他的後續報導...", + "title": "美國政府將有權力要求 ISP 阻擋網站" + }, + { + "id": "2151", + "body": "在 Mark Callaghan 的 blog 上看到的好消息,新版的 InnoDB 將不會因為 table scan 而導致整個 buffer pool 被清空了:「InnoDB plugin gets better again」。\r\n\r\n依照「InnoDB buffer pool can be severely affected by table scans」,增加了 innodb_old_blocks_pctinnodb_old_blocks_time,利用一些設定避免 buffer pool 被大量清空。這個方法不是很完美,但應該是堪用的,在 5.1.41 的 InnoDB Plugin 應該就會看到。", + "title": "InnoDB 將修正 Table Scan 導致的效率低落問題" + }, + { + "id": "2152", + "body": "我發現到某一組機器的 apache 2.2 (worker MPM) 偶而會 coredump,大約七月的時候決定跳下去找原因,在編了有 debuig symbol 的 httpd 後 (跑起來後用 gdb 放著跑,coredump 時會被 gdb 攔下來,如果 stack 沒被弄爛的話,有機會看到爛在哪裡),發現是 mod_fastcgi 沒有正確處理 non-threadsafe function 造成的問題,在「修正 mod_fastcgi 在 threading 環境下會 coredump 的 bug 」這篇我有提過。\r\n\r\n我在「getgrgid() and getpwent() not thread-safe causes segfault in worker MPM」(原 mailing list 沒有開放 archive,所以必須到 gmane 查) 把 patch 丟上去,不過看起來 mod_fastcgi 不太會出新版了。\r\n\r\n所以在 FreeBSD 上面就需要自立救濟... 在安裝 portsconf 後,就可以在 /usr/local/etc/ports.conf 內對 www/mod_fastcgi 指定 patch 的參數:\r\n
www/mod_fastcgi: NO_CHECKSUM=yes | PATCH_SITES=http://site/path/ | PATCHFILES=mod_fastcgi-2.4.6-threadsafepatch.patch.gz
\r\n然後把 patch 丟上 http://site/path/mod_fastcgi-2.4.6-threadsafepatch.patch.gz 裡面。NO_CHECKSUM 是因為我們的 patch 不在 distfiles 內,所以得這樣搞...", + "title": "Apache 2.2 worker MPM 與 mod_fastcgi 的問題" + }, + { + "id": "2153", + "body": "lighttpd 的 dev team 好像抓到重點了,與其發展 1.5,不如先從改善 1.4 開始吸引更多人使用 lighttpd,而且要儘量「release early, release often」,以其拉近與 nginx 的差距,並且吸引更多人參與,累積能量:「PRE-RELEASE: lighttpd 1.4.25rc1-r2692」。\r\n\r\n這次的重點還是 bugfix,外加兩個小功能。", + "title": "lighttpd 1.4.25rc1" + }, + { + "id": "2154", + "body": "Jeremy Zawodny 寫了一篇「Fixing Poor MySQL Default Configuration Values」提到 MySQL 有不少非常有問題的預設值,在安裝後無論如何都應該修改。他在文章裡拉出了四個惱人的設定值...\r\n\r\n首先是 max_connect_errors,當某一個 host 送了過多的錯誤 query 時就會擋掉這個 host 的權限。這個設定無論是在共用或是獨立的環境裡,這個值的用途都非常奇怪:在共用的環境下,我可以利用這個功能惡搞其他人,把與自己同一台 web 的站台搞爛。在獨立的環境下,擋掉自己做什麼?\r\n\r\n第三個的 skip-name-resolve 也是一個很詭異的選項,每個連線進來就跑一次 DNS 反解?MySQL 又不是 Internet 服務...\r\n\r\n既然 Jeremy Zawodny 提了,這陣子應該有機會改...", + "title": "無論如何都應該修改的 MySQL 預設值" + }, + { + "id": "2155", + "body": "RefControl 是一套在 Firefox 上控制 Referer 的工具,在 Google Reader 裡面看無名或是其他家的圖片很好用。\r\n\r\n前陣子換 Firefox 3.6 後發現上面不能跑 RefControl,寫個信給原作者問看看,他就把問題找出來並修正了。在原始網站上已經有 0.8.13 了,等個幾天 Firefox 的頁面上面應該就會一起更新。(等 review 中)\r\n\r\n本來是用 Mason,雖然 Mason 可以用 Regular Expression,但缺少簡單的機制加入白名單的功能反而造成不少困擾。最大的問題在於在設定所有站台都送出 Host-only Referer 後,無法很簡單的設定白名單,必須考驗自己的 regular expression 編寫能力,在 exclude list 裡面一條一條設... 反倒是 RefControl 可以直接設某些 domain 為 \"Normal\",所以就換回來囉...\r\n\r\n主要是最近才發現在博客來買新書 (輕小說漫畫) 大多數都有 79 折,加上書套費用比書局便宜,沒有必要特地去書局拿... 但博客來的系統不知道是誰設計的,Referer 擋的超嚴格,登入頁與結帳頁光送 http://www.books.com.tw/ 是不會過的...", + "title": "RefControl (對 Referer/Referrer 動手腳的套件) 在 3.6 可以正常運作了..." + }, + { + "id": "2156", + "body": "在 TechCrunch 上看到 myFontbook 這個字型瀏覽網站:「The Font Kingdom: Search, Explore, Create, and Download Fonts for Free」,測了一下發現還蠻好用的,連中文字型都可以測...\r\n\r\n在 IE7 與 Firefox 3.6b3pre 上面看都相當頓,看起來只能在 Google Chrome 上跑...\r\n\r\n文章裡提到的其他幾個站測起來的感覺還好而且,不過有一些站整理了很多字型檔可以用,倒是可以利用...", + "title": "字型瀏覽網站 myFontbook" + }, + { + "id": "2157", + "body": "我有利用 Twitter Search 的 feed 訂閱一些關鍵字,其中幾個就是跟 CDN (Content Delivery Network) 有關的關鍵字,包括了幾個比較大的 CDN 公司名稱,以及我們在用的 CDN 公司名稱 (我們用的是 Panther Express,二月的時候被 CDNetworks 收購)。\r\n\r\n剛剛爬起來看到 feed 裡面一堆 CDNetworks 的資訊,但又看不懂到底是什麼鬼,看了官方網頁也看不出來發生什麼事情 (被 Google 併購?但也不太對,才剛看到 Admob 被買,同時就要再併購韓國的上市公司?),結果翻其他的 feed 的時候在 TechCrunch 上面看到發生什麼事情了:「Here’s Some PR For You, CDNetworks」。\r\n\r\n內容如同標題,我看完笑得超開心的 XDDD\r\n\r\n我猜這應該是韓國總公司的 PR team 幹的事情?美國搞 PR 的單位應該很清楚 FTC 在十月的時候要求任何的利益交換都必須被揭露,不論是公司還是個人:「FTC Publishes Final Guides Governing Endorsements, Testimonials」。\r\n\r\n另外 TechCrunch 自己就有用 cotendo (在頁面裡可以看到 cache0.techcrunch.com,CNAME 指到 cotendo 的 CDN 上),也曾經贊助過 TechCrunch,不得不說很厲害... XD", + "title": "CDNetworks 的負面 PR" + }, + { + "id": "2158", + "body": "在 Rasmus 的 Twitter 上面提到了:\r\n
Feels a bit odd to be unemployed. Probably crazy to leave the best job I have ever had, but after 7+ years it was time for something new. #
\r\n依據 Wikipedia 上的紀錄,Rasmus Lerdorf 是上個禮拜 (11 月 6 日) 離開 Yahoo! 的。", + "title": "Rasmus Lerdorf 離開 Yahoo!" + }, + { + "id": "2159", + "body": "這嚴格上來說是 service provider 的問題,而非 Flash 本體的問題,但影響層面太大,發表這個漏洞的作者希望 Adobe 可以想辦法處理...\r\n\r\n在「Flash Origin Policy Issues」這篇文章裡提到了攻擊的方式。舉個實際例子,上傳檔名為圖檔類型 (gif/jpg) 的 Flash 檔,如果 service provider 沒有過濾,就可以將任意的 Flash 放到網域裡面,藉由 crossdomain.xml 所允許的網段攻擊。\r\n\r\n除了過濾外,另外比較好的作法是把使用者上傳的東西放到獨立 domain,而非只是 hostname,這樣可以避免 *.domain.tld 時包進去。", + "title": "Flash 安全性問題" + }, + { + "id": "2160", + "body": "因為都有擋 Referer,所以必須把 RefControl 設定好:\r\n", + "title": "國內影音網站配合 RefControl 的設定" + }, + { + "id": "2161", + "body": "Go 才出來沒多久,就在 Simon Willison 的 blog 上看到 Dustin Sallings (memcached 的 maintainer) 用 Go 寫了一個 memcached:「Hello World in Go – A Memcached Server」。\r\n\r\n雖然 memcache protocol 是不難,這種等級的 \"Hello, world\" 會不會太刺激了點 XD\r\n\r\n翻了一下 GitHubgomemcached 的 code 裡面看起來還沒寫完,應該只有基本的功能?", + "title": "用 Go 寫的 Memcached" + }, + { + "id": "2163", + "body": "為了刪除 spam,在 Blogger 的後台找了老半天找不到 (動線不太順暢),用 Google 查到的說明,看起來可以在前台看到「垃圾桶的 icon」,但也看不到,最後只好自己想辦法...\r\n\r\n我知道是 Blogger 前後台有很多東西透過 Cross-domain CSS 做,所以我就拉 Firebug 看,發現問題是出在 http://www.blogger.com/dyn-css/ 這個目錄下的回應沒有傳正確的 CSS,看了 header 有一些想法,測試幾次後,發現果然是 Referer 的問題...\r\n\r\n解法是在 RefControl 裡面把 www.blogger.com 設成 Normal,用 Block 或是其他的設定都不會動...", + "title": "Blogger 看不到刪除 comment 按鈕的問題" + }, + { + "id": "2165", + "body": "剛剛升級 Firefox 的時候發現升到 Firefox 3.6b4pre,這代表 3.6 beta3 這幾天應該就會發行了。\r\n\r\n不過這次升級又爛了一些東西... 像是 Nightly Tester Tools 的 Override all compatibility 按鈕居然失效,在升級後 GreasemonkeyScreengrabWeb Developer 得重裝 (安裝時的 Force Install 沒有失效)。", + "title": "Firefox 3.6b4pre" + }, + { + "id": "2166", + "body": "在前幾天的「AWS News Summary...」裡提到了一些東西其實還蠻重要的...\r\n\r\n通過 SAS70 Type II:「AWS Completes SAS70 Type II Audit」,從 Wikipedia 的「Statement on Auditing Standards No. 70: Service Organizations」可以看到解釋,不過我對 SAS70 不熟...\r\n\r\n預定在 2010 年建立亞洲區 data center,上半年會先在新加坡建立,下半年會在亞洲其他地方建立,目前還沒有說明是哪些地點:「AWS Announces Expansion into Asia」。除了可以在亞洲建立 EC2 instance 或是 S3 bucket 外,這對於亞洲區 CloudFront 的密集度會再提昇...\r\n\r\n另外就是 AWS 用的 OTP token 開始接受美國國外的訂單了:「AWS Multi-Factor Authentication compatible devices now available worldwide」。", + "title": "Amazon Web Services 的近況與未來計畫" + }, + { + "id": "2167", + "body": "The Pirate Bay 總算把 tracker 關閉了:「The Pirate Bay Tracker Shuts Down for Good」。\r\n\r\nTPB 的 tracker 應該是關閉之前最「好用」的 tracker,不需要註冊,直接指過去就可以用,而且又夠力... 可以看到許多 torrent 檔裡面都加上 TPB 的 tracker。雖然有其他 open tracker,不過這次關閉應該會對整個 Bittorrent 分散式架構有很重要的影響,因為現有的檔案 (尤其是只設 TPB tracker 的檔案) 會大量依靠 DHT + PEX。\r\n\r\n不過,tracker 就算關閉,對目前的 Bittorrent client 應該都沒什麼大問題,因為都支援 DHT 與 PEX 了,交叉組合對於熱門檔案應該是可以保持網路的完整性,至於非熱門檔案就不曉得了...", + "title": "The Pirate Bay 的 Tracker 關閉,走向分散式架構" + }, + { + "id": "2168", + "body": "用 procmail 分出來的檔案仍然會受到 Postfix 的信箱大小限制,預設是 51200000 bytes (約 50MB),而這個月的 daily report 多了點,就滿出來到 /var/mail 下面了...\r\n\r\n先把 mailbox_size_limit 改成 102400000 bytes (約 100MB),再來看看夠不夠用...", + "title": "Postfix 的信箱大小限制" + }, + { + "id": "2169", + "body": "在「JSON Performance in Python」這篇看到比較圖,在 Python 2.6 上面測試 json (stdlib)simplejsonjsonlib2cjson 這四個不同的 JSON library 的速度。\r\n\r\n可以看到系統內建的 json 很慢,主要的原因除了是純 Python 外,另外在原文留言的地方也有提到 json 在被引入 Python 2.6 的時間太接近 release 日期,當時沒有辦法再大幅度改寫,所以速度很慢。\r\n\r\n其他的部份可以看出來 cjson decode 的速度相當快,但 encode 的速度就不是很好,但是 cjson 的 API 與其他三組 library 不太一樣,直接用 cjson.decode()cjson.encode(),其他的 library 都提供比較彈性的介面 (換句話說就是比較複雜) 操作。", + "title": "Python 的 JSON library 速度比較" + }, + { + "id": "2170", + "body": "YouTube 在這個月公告支援 full HD (1080p):「1080p HD Is Coming to YouTube」。\r\n\r\n依照之前 720p 的慣例,又有一堆人開始丟 full HD 影片上去測 (用 &fmt=37 直接看),像是不可能會少的 AIR OP... XD\r\n\r\n不過因為目前主流的 Adobe Flash Player 10.0 的 H.264 是用軟體解,bitrate 比較高的 H.264 影片會讓一堆人的電腦炸的亂七八糟,這個禮拜在公司看的時候大家都叫翻了... XD\r\n\r\n如果顯示卡有支援 H.264 硬體解壓縮,可以抓 Adobe Flash Player 10.1 版測試 (目前還是 prerelease 階段),要測試的人可以到 Adobe Flash Player 10.1 這邊翻,要注意的是必須先移除現有的 10.0 版,不然裝不進去。我裝上去之後是變順了,不過還是會單顆 CPU 100%,這就不知道原因了...\r\n\r\n目前在 Adobe Flash Player 10.1 還沒有正式 release 前,比較完整的資訊可以在「Introducing Adobe Flash Player 10.1 public prerelease」這篇查到更詳細的資料。", + "title": "Adobe Flash Player 10.1 的 H.264 硬體解壓縮功能..." + }, + { + "id": "2172", + "body": "在 Slashdot 上看到因為感恩節 (參考 Wikipedia 的「黑色星期五 (購物)」) 而使得 PayPal 黑色星期五的交易筆數又破紀錄,比 2008 年多了 20%:「Record-Breaking Black Friday For eBay's PayPal」。在 PayPal 官方 blog 上也有提到這件事情:「Black Friday Data is Here: Online Shopping Activity Increases」。\r\n\r\n大家愈來愈習慣網路上的交易了... 連家裡的老人家都會自己到書店買書,到超商拿貨 XD", + "title": "PayPal 黑色星期五交易數量創紀錄" + }, + { + "id": "2173", + "body": "Eivind Uggedal 寫了一篇文章比較 Amazon EC2LinodePrgmrRackspaceSlicehost 的 VPS。比較廣義的說,應該是指利用虛擬化技術的 hosting:「VPS Performance Comparison」。\r\n\r\n結論是 Linode 在效能上大獲全勝,而且有提供 32bit 與 64bit 環境可以選擇,可用頻寬 quota 也是最多的。Pgrmr 記憶體雖然大,但也就是只有記憶體大而已,效能並沒有很好。", + "title": "VPS 的性能比較" + }, + { + "id": "2174", + "body": "在「How Google is wasting your bandwidth」看到有人發現 Google 所提供的 Google AJAX Libraries 有一些地方處理的非常極端,沒有注意的話反而會使得使用者多花不少頻寬在上面。\r\n\r\n以 jQuery 為例,如果直接指定版本,使用 1.3.2:http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js,那麼 Expires 會設定一年左右的時間:\r\n
Last-Modified: Mon, 23 Nov 2009 18:54:21 GMT\r\nDate: Mon, 30 Nov 2009 22:03:29 GMT\r\nExpires: Tue, 30 Nov 2010 22:02:37 GMT\r\nCache-Control: public, must-revalidate, proxy-revalidate, max-age=31536000\r\nX-Content-Type-Options: nosniff
\r\n但如果後面有 ?...,像是加上了 ?ver=1.3.2 就會完全不一樣,完全不會 cache:\r\n
Last-Modified: Mon, 23 Nov 2009 18:54:21 GMT\r\nDate: Mon, 30 Nov 2009 22:04:43 GMT\r\nPragma: no-cache\r\nExpires: Fri, 01 Jan 1990 00:00:00 GMT\r\nCache-Control: no-cache, must-revalidate
\r\n另外一個比較小的問題是 http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js 會指到 1.3 系列最新版本,是不會 fully-cache 的,每次都會 revalidate (最好的情況是 304 Not modified,傳輸量小於 1KB,比較差的情況是整個檔案重抓一次) 以確保 Google 更新時使用者就會馬上看到最新的檔案:\r\n
Last-Modified: Mon, 23 Nov 2009 18:54:21 GMT\r\nDate: Mon, 30 Nov 2009 22:05:52 GMT\r\nExpires: Mon, 30 Nov 2009 23:05:52 GMT\r\nCache-Control: public, must-revalidate, proxy-revalidate, max-age=3600
\r\n1.2.6 與 1.2 也是一樣的情況,要使用 Google 提供的 AJAX Libraries 要注意。\r\n\r\n以目前 Google 所提供的平台,應該要使用指定完整版本 (像是 1.2.6 或是 1.3.2),且不帶任何 query string 的 request。", + "title": "使用 Google 提供的 AJAX Libraries 需要注意的細節..." + }, + { + "id": "2175", + "body": "在 Slashdot 上看到一個丹麥人很認真的玩起「矛與盾」:「Danish DRM Breaker Turns Himself In To Test Backup Law」。\r\n\r\n丹麥的著作權法令允許備份,但不允許破解 DRM。於是他拿到 DVD 後就破解 DRM 備份,然後跑去找反盜版組織「自首」XDDD\r\n\r\n結果反盜版組織只說「okay 我們知道了,之後會聯絡你」就沒下文了,這傢伙就跑去找警察自首 XDDD", + "title": "備份與 DRM" + }, + { + "id": "2176", + "body": "在 TC 看到 Google 公開了 Public DNS Resolver 服務:「Google Gets Into The DNS Business. Here’s What That Means」。\r\n\r\n與 OpenDNS 不同,他不會把無法 resolve 的 request 導到廣告頁,另外又因為密度比 OpenDNS 高 (因為 Google 在很多地方有機房),IP address 又好寄 (分別是 8.8.8.88.8.4.4),就基本的 resolver 功能來說,OpenDNS 沒有優勢。\r\n\r\n不過我發現如果是查詢 Akamai CDN,反而會被導到美東 (,EdgeCast 則是美西。不過 Limelight NetworksCDNetworks (Panther Express 部份) 都還蠻正常的,都是正確送到亞洲區的 PoP。以目前大多數的網站都是用 Akamai,用 Google 提供的 Public DNS Resolver 反而會變慢而非變快。\r\n\r\n有興趣的人可以用看看感覺一下?", + "title": "Google 提供 Public DNS Resolver" + }, + { + "id": "2178", + "body": "在 jQuery 的 blog 上看到 jQuery 1.4a1 的消息:「jQuery 1.4 Alpha 1 Released」,離上次 jQuery 1.3.2 在 2/20 放出來已經過了九個月了...\r\n\r\n就時間上來看,最主要的差異是 IE8 (3/19) 與 Firefox 3.5 (6/30) 的釋出,使得 jQuery 在這兩個平台上面的問題比起 IE7 與 Firefox 3.0 稍微多了一些...\r\n\r\n目前看起來 1.4 系列除了支援 IE8 以及 Firefox 3.5 外,最主要是把 .live() 功能大幅加強,延伸到 submit 以及其他事件,另外再透過之前 profiling 的結果,把效率再往上拉...", + "title": "jQuery 1.4a1 - 終於要出新版了..." + }, + { + "id": "2179", + "body": "這個消息已經有陣子了,不過還是整理一下。Amazon 在前幾天宣佈在美西 (實際上是北加州) 建立了新的 data center:「Expanding the AWS Footprint」,包括 S3EC2 都提供美西的節點。\r\n\r\n以 S3 的資料來看,美西的節點頻寬費用與之前美國節點相同,但儲存費用大約貴了 10%,request 的費用也一樣貴了 10%。EC2 的部份也是類似的情況。在查過美國電價後,看起來就是差在電力成本上:「Average Retail Price of Electricity to Ultimate Customers by End-Use Sector, by State」。以工業用電來算,維吉尼亞的一度電是 6.84 cent,而加州要 11.75 cent,貴了許多。\r\n\r\nEC2 的 instance (server) 放在美西會離亞洲近一些,可以降低一些 latency。S3 放美西的話不如用 CDN 加速比較實際,不過考慮到跨區存取也要錢的話,放在一起可能是個比較好的方法...", + "title": "Amazon Web Services 建立美西中心" + }, + { + "id": "2180", + "body": "在「Google's Site Performance Tool」這邊看到的,Google Webmaster Tools 現在提供網站速度的歷史資料了,像是這樣:\r\n\r\n\"\"\r\n\r\n不是很即時,但應該還是有參考價值...", + "title": "Google Webmaster Tools 提供 Site Performance 圖表" + }, + { + "id": "2181", + "body": "太誇張了... 參考「AWS Price Reductions and Free Inbound Data Transfer」這篇的說明。\r\n\r\n回朔到今年的 12/1,歐洲區的 S3 storage 費用全面降價 15% 以上,在最高層級的部份甚至到 20%,看起來是電費的合約搞定了?\r\n\r\n另外到明年七月 (應該是簽到了奇怪的不對稱合約),所有服務的 inbound 頻寬不收錢,這樣 S3 拿來備份就幾乎只收 storage 費用...\r\n\r\n另外一個一般人用不到的,針對 S3 超大客戶 (使用超過 1PB) storage 的部份再優惠...", + "title": "Amazon Web Services 又要降價了..." + }, + { + "id": "2182", + "body": "AWS Import/Export 的服務擴展到全球,本來只有 S3-US 的人可以用,而且限制 shipping address 要在美國境內,但現在 S3-US 開放到全球的 shipping address。另外,S3-EU 的部份開放歐盟國家使用 (本來不支援),可能會在之後也像 S3-US 一樣全面開放。參考「AWS Import/Export Goes Global」這篇的說明。\r\n\r\n不過最近 Amazon Web Services 的 inbound bandwidth 不用錢,對於有足夠上傳頻寬的單位可以估算一下時間成本與頻寬成本。\r\n\r\n最近 AWS 的動作不少,Rackspace Cloud 要加油啊...", + "title": "AWS Import/Export 開放到全球" + }, + { + "id": "2183", + "body": "XtraBackup 釋出 1.0 版,第一個支援 Win32 平台的版本:「xtrabackup-1.0」。\r\n\r\n不過想了一下,實際用的機會不多,因為現在跑的備份機制是在沒有 xtrabackup 就已經弄起來的方法:利用 slave 與 snapshot 保留資料,需要的機器數量比較多,不過是個還算成熟的方法...\r\n\r\n之前寫過「XtraBackup:線上備份 InnoDB 的好東西」與「用 XtraBackup 產生 slave」兩篇文章,需要的人可以看看,當資料量比較小 (startup 初期) 的弄法。", + "title": "xtrabackup 1.0 釋出" + }, + { + "id": "2184", + "body": "Amazon 把目前大量且未用到的 EC2 資源拿出來,用競價的方式租給需要計算資源的人用:「Announcing Amazon EC2 Spot Instances」,這個服務叫做 Amazon EC2 Spot Instances。\r\n\r\n在 EC2 Spot Instances 出來之前,需要大量運算資源的人通常會跟 Amazon 申請過後開數十或數百台機器跑。由於是算租用時間,開十台慢慢跑十天與開一百台跑一天其實是一樣的價錢。但後者對於 Amazon 的成本會高一些,因為他需要準備足夠的機器才能服務。\r\n\r\n不過,有些人雖然需要大量運算資源,但實際上並不急。EC2 Spot Instances 就是為了這樣的應用而設計的,他願意給比較低的價錢,用「競價」由市場決定價錢。\r\n\r\n以目前美西的 EC2 最小台 Small 的價錢來看,是 USD$0.085/hour,利用 Console 看歷史紀錄,EC2 Spot Instances 這幾個小時內曾經低到 USD$0.026/hour (2009-12-14 12:00 GMT+0800),大約是原價的 30%,而平常大約都在 USD$0.03/hour 左右。\r\n\r\nAmazon 在 Cloud Computing 的基礎建設這塊真的做的很不錯...\r\n\r\nUpdate:在 http://www.cloudexchange.org/ 這邊可以直接看歷史紀錄...", + "title": "Amazon EC2 Spot Instances" + }, + { + "id": "2185", + "body": "John ResigjQuery 的 blog 上發佈了 jQuery 1.4 的第二個 alpha 版:「jQuery 1.4 Alpha 2 Released」,為了能保持與 1.3.2 的相容性,他鼓勵大家開始儘量測 jQuery 1.4a2,對於不相容或是有問題的地方儘快回報回去,提高 1.4 的品質。目前規劃的時間是明年一月 14 日會推出 jQuery 1.4。\r\n\r\n另外 John Resig 特地在自己的 blog 寫了一篇文章,說明 jQuery 1.4 將 event delegation 用 .closest(Array) 改寫後可以減少計算量,最直接影響的就是 .live() 的效率會提昇不少:「.closest(Array) in jQuery 1.4」。", + "title": "jQuery 1.4 的第二個 alpha 版" + }, + { + "id": "2186", + "body": "Cloudelay 可以檢測從自己到雲端各節點的 latency。\r\n\r\n目前網站上只有支援 AWS CloudFront 以及 AWS S3,另外正在規劃 Azure CDNCloud FilesSimpleCDN。\r\n\r\n以目前有公開 AWS CloudFront 與 S3,我猜卡在拿不到其他 CDN 的 PoP 資訊,因為夠大的 CDN (像是 Rackspace Cloud 用的 Limelight Networks) 不會對外提供這些資訊。比較有機會的是 SimpleCDN 要曝光度,會把這些資訊提供給他。", + "title": "Cloudelay - 檢測各個雲端節點的效率" + }, + { + "id": "2187", + "body": "FreeBSD 上主要是靠 Soft updates 維持當 Filesystem 不正常 umount 時的資料安全,在 Linux 上比較常見的方式則是 Journaling file system,兩個方式有不同的走向。\r\n\r\nFreeBSD 最近也有 ZFS 了。ZFS 用的技巧類似 Journaling,不過也利用類似 Soft updates 的想法避免硬碟內的資料不一致。不過穩定性與效能沒辦法跟 UFS2 相比。\r\n\r\n最近 Jeff Roberson 又活躍起來了 (之前弄 FreeBSD 7 的 SCHED_ULE 2 以及 FreeBSD 8 的 SCHED_SMP),在接受廠商的贊助後試著改善 UFS2 的 Soft updates,把 Journaling 的技巧引進 UFS2,希望再減少 fsck 的需求:「Journaling softupdates, SU+J」以及「What's in a journal anyway?」。以目前所規劃的時程,看起來會在這兩個禮拜內看到 commit 進 HEAD (9.0-CURRENT)。沒意外的話跑一陣子後應該就會 MFC 回 8-STABLE,然後在 8.1-RELEASE 出現。", + "title": "FreeBSD UFS2 的 SU+J" + }, + { + "id": "2189", + "body": "othree 在 irc 上提到的... 依照「Commit 3fd62eae9df3159fc238a515bb748140a942313d to jquery's jquery」這個 commit 的說明,jQuery 將使用 Google Closure Compiler,取代 YUICompressor 壓縮 jQuery:\r\n
Switched from using YUI Compressor to Google Compiler. Minified and Gzipped filesize reduced to 22,839 bytes from 26,169 bytes (13% decrease in filesize). Sizzle copyright was merged into the main header (since it's removed automatically). Still passes all unit tests.
\r\n下個版本就可以看到了。", + "title": "jQuery 改用 Google Closure Compiler" + }, + { + "id": "2190", + "body": "從 MediaTemple 搬出來了,搬到 SharkSpace。\r\n\r\n今年年初的時候 (翻了信件,1/31) 開始用 MediaTemple 的 Grid Service,費用是 USD$20/month,在 hosting 這塊算是高的。當時會用 MediaTemple 想的是「花錢解決事情」就好,不過這一年來感覺不太值得,以 USD$20/month 的品質來說,database 掛掉的機率高了些,加上這陣子 MediaTemple 爆發 security issue (參考「Media Temple Security Issues」、「Media Temple Hacked」),花些時間到 Web Hosting Talk 上研究有什麼 shared hosting 價錢比較低 (有活動在跑的),如果掛掉的話還不會那麼心痛 XD\r\n\r\n在 Web Hosting Talk 上翻了一下,看到 SharkSpace 有 50% off 的 coupon 特價 (50offlife),以我的用量需要 Hammerhead 的方案,折扣後大約是 USD$4.5/month (年繳),而且還蠻受好評的。我需要的 SSH access 也沒問題 (要另外申請,需要傳真或是掃描身份文件,我是掃描護照後 submit ticket 夾檔給對方),而且有美西主機可以用,從台灣過去大約 135ms 左右。後台則是 cPanel。\r\n\r\n接下來就是把網站搬進去,大概就這樣...", + "title": "從 MediaTemple 搬家" + }, + { + "id": "2191", + "body": "Slashdot 上看到硬碟已經開始往 4K sector size 走了:「HDD Manufacturers Moving To 4096-byte Sectors」。\r\n\r\n會開始討論主要是因為 WD 開始販售 4K sector size 的硬碟,許多維護 Filesystem code 的開發人員也因此比較注意到這個問題。\r\n\r\n前幾天在 FreeBSD 的 mailing list 上也看到類似的討論「File system blocks alignment」,以目前可以調整的參數觀察,如果 block size 沒有切齊,會使得效率降低不少 (猜測是因為 read-modify-write),其他作業系統的 Filesystem 也有類似的情況。\r\n\r\n2010Q1 應該會看到更多使用 4K sector size 的硬碟。", + "title": "4K sector size" + }, + { + "id": "2192", + "body": "先前看到 Google Chrome 上有人寫了 Adblock 的新聞,結果仔細看發現他把阻擋規則寫在程式裡面,而不是像 Firefox 上的 Adblock Plus 那樣,接受外部的檔案定時更新,感覺就... 非常不好 XD\r\n\r\n這兩天無意間又去逛到 Google Chrome Extensions,看到有另外一個 AdThwart,直接支援現有 Adblock Plus 的列表,馬上就把系統的 Google Chrome 換成 beta 版,裝上 AdThwart...\r\n\r\n接下來得花一段時間適應了... 速度快好多不太習慣 XD", + "title": "把預設瀏覽器換成 Google Chrome (beta)" + }, + { + "id": "2193", + "body": "HiNet 的 transparent proxy 主要是放在接國際線路的點上面,這兩個禮拜發現很不穩定,連帶會導致用 HiNet ADSL 的人會偶而連不上國外的網站...\r\n\r\n第一個是國外網站,拿 AlexaTop Sites in Taiwan 的前 30 名來說,FacebookLive (Bing 反而上了 Akamai,這個後面談)、6waves (農場的公司)、Wikipedia (維基百科)、BaiduBadongoPlurk土豆Plus28 的伺服器因為沒有放台灣內,所以網站本體會不太順。\r\n\r\n另外再來是 CDN 的問題。除了台灣有節點的 CDN 以外,其他都會受到影響,也就是說,除了 Akamai 以及 CDNetworks 以外都會受到影響。這也使得我們家得把 HiNet 使用者改指到 Akamai 與台固。比較明顯的是樂多Twitter 與 Plurk 的圖片使用 CloudFront。\r\n\r\n第三個問題是使用者自己調整設定後造成的,最近比較常見的設定是 Google 提供的 DNS 服務,分別是 8.8.8.88.8.4.4。理論上這兩組 server 都是用 Google 台灣機房的服務,但是 Akamai 沒有辦法判斷使用者的 ISP (他只能判斷出是台灣 Google 來的 query),所以不能導到台灣任何一個 PoP (因為台灣的量比較少,要降低成本的一個方向是改談 local service),所以用 Google DNS 的人,會被導到香港的 PoP,於是就會經過 HiNet transparent proxy。\r\n\r\n這是用 8.8.8.8 查 Facebook CDN 的結果,拿 IP trace 可以發現在香港:\r\n
;; ANSWER SECTION:\r\nstatic.ak.fbcdn.net.    7196    IN      CNAME   static.ak.facebook.com.edgesuite.net.\r\nstatic.ak.facebook.com.edgesuite.net. 21596 IN CNAME a749.g.akamai.net.\r\na749.g.akamai.net.      16      IN      A       63.150.131.187\r\na749.g.akamai.net.      16      IN      A       63.150.131.171
\r\nzonble 提到的「If you found that you cannot see any images on Facebook」的問題應該屬於這類。", + "title": "最近 HiNet 的 transparent proxy 異常..." + }, + { + "id": "2194", + "body": "IPv4 不夠用是沒有話題時就會談的問題... 像是年底這陣子放假沒有話題,Slashdot 就在「At Current Rates, Only a Few More Years' Worth of IPv4 Addresses」這篇文章談到了這個問題,裡面是引用自 Ars Technica 的文章「A decade's worth of IPv4 addresses」,這篇文章宣稱 2010 會是 IPv4 的最後一年...\r\n\r\n在 rms.twnic.net.tw 上面可以查到目前台灣拿到的 IP 資訊,像是以核發日期排序:「查詢功能-IPv4核發分配情形」。不過只看日期不太準,像是 139.175.0.0/16 這段歷史很久了,卻在 2009 年 5 月掛到新世紀資通,應該是遠傳內部在整合的關係。大宗的還是 HINET-NET (中華電信數據通信分公司)。", + "title": "IPv4 位置近況" + }, + { + "id": "2197", + "body": "正式的公告在 Dyn Inc. 的網站上:「Dyn Inc. Further Cements Position as Global Managed DNS Leader Through Acquisition of EveryDNS」。\r\n\r\n在這個領域主要的競爭對手是 DynDNS。這次買 EveryDNS 算是擴展版圖,讓 Dyn Inc. 的的產品線更完整。", + "title": "EveryDNS 被 Dyn Inc. 買下" + }, + { + "id": "2198", + "body": "這陣子居然來好幾發...\r\n\r\n首先是 GSM 網路 (俗稱的 2G) 用的 A5/1 實際被示範破解 (而非純粹就加密演算法本身攻擊):「Cellphone Encryption Code Is Divulged」,不過 A5/1 畢竟已經用了 20 年,在這些年來所找到可以加速破解的方式,使得所需的複雜度下降,再加上 FPGA 的幫助,以現在的能力要破 64bits key 比 A5/1 剛出現時相對容易許多。\r\n\r\n有人破了 A5/1 後,目前 3G 在用的 A5/3 也出事了... 今天在 Slashdot 上看到 3G 網路所使用的 A5/3 找到 Related-key attack:「Second 3G GSM Cipher Cracked」,雖然不是 3G 網路的世界末日,不過開了第一比較大的洞 (以現有資源可以實做的洞) 就很痛啊... 接下來應該會想辦法轉到新的 cipher 上。\r\n\r\n查了一下這次的洞是誰搞出來的:Orr Dunkelman (之前捅 AES-256 一刀後跑來捅這個)、Nathan Keller (在 2006 時捅過 A5/1),Adi Shamir (這個人還真是有活力)。", + "title": "行動電話網路又出包了..." + }, + { + "id": "2200", + "body": "三個小時前 (美西時間是 1/12 15:00PM) Google 在官方 blog 上宣佈了「A new approach to China」,內容包括了:\r\n\r\n這份新聞稿所提到的政策手腕很漂亮,如果以這樣的方式退出中國市場反而不會受到美國責難。", + "title": "Google 對中國政策的重大宣佈" + }, + { + "id": "2201", + "body": "jQuery 1.4 釋出了:「jQuery 1.4 Released」,同時 MediaTemple 贊助了 14 Days of jQuery 的活動,以 14 天徵文推廣 jQuery。\r\n\r\njQuery 1.4 除了增加大量的 API 以外 (參考「Version 1.4 – jQuery API」這個網頁的列表),又再次大幅改善效能 (這是重點,可以看到整篇介紹文章有一大半都是講效能的改進)。這些效能改進的方式有些在 John Resig 的 blog 有專門寫文章解釋過,像是「JavaScript Function Call Profiling」。\r\n\r\n另外,jQuery.param() 支援 serialization 了... 可以把 js object 轉成像 foo[]=bar&foo[]=baz 這樣的字串,讓 web 端處理起來比較方便,不用特地丟 JSON object 進去再用 JSON decoder 解開。而 jQuery.JSONP 也終於可以指定 callback name 了...\r\n\r\n這次也是火力展示...", + "title": "jQuery 1.4" + }, + { + "id": "2202", + "body": "在「Avast Added to Google Pack」這篇看到 Google Pack 取得 Avast 授權,雖然現在要取得免費的家用防毒軟體愈來愈容易,不過總是多了一個管道...\r\n\r\n查了一下,之前 Google 也有跟 Norton 合作 (有段日子了,是 2006 年年初的時候):「Google Pack」。\r\n\r\nAvast 也有發新聞稿可以參考:「Free avast! 5 Chosen for Google Pack」。", + "title": "Google Pack 取得 Avast 授權..." + }, + { + "id": "2203", + "body": "在 TechCrunch 看到歐盟批准 OracleSun 的併購案了:「EU Approves $7.4 Billion Deal Between Oracle And Sun」。\r\n\r\n對於 MySQL,歐盟同意 Oracle 所辯稱的「Oracle 與 MySQL 的主要客群不重疊」這個說法。不過幾乎所有人都悲觀面對這個事實... 現在就要看誰要帶頭 fork 出來開公司了。AskMonty 所發展的 MariaDB 可能是一組人馬,不過 Percona 所發展的 XtraDB 也有可能是另外一組人馬。\r\n\r\n應該會混亂一陣子,同時看 Oracle/Sun 在合併案定案後的反應。\r\n\r\n歐盟的正式公告可以在網站上查到:「Mergers: Commission clears Oracle's proposed acquisition of Sun Microsystems」。", + "title": "歐盟批准 Oracle-Sun 併購案" + }, + { + "id": "2204", + "body": "這兩天 Firefox 3.6 正式釋出,於是我把本來的 3.6pre 移除掉,改到 ftp.mozilla.org 上抓 3.7a1pre 裝進去...\r\n\r\n目前已知的問題包括了 Gmail 很容易造成目前的 Minefield 版本 crash;另外 Greasemonkey 目前還不支援 3.7a1pre,硬裝進去也沒用,其他的倒是還好。\r\n\r\n速度上很明顯感覺到又變快了。", + "title": "Firefox 3.6 釋出" + }, + { + "id": "2205", + "body": "在 Slashdot 上看到 1.0.0.0/8 這段 IP address 被分配給 APNIC 了:「IPv4 Free Pool Drops Below 10%, 1.0.0.0/8 Allocated」。\r\n\r\n這段 IP address 本來是保留起來,讓許多範例可以用 (像是 1.1.1.1 與 1.2.3.4,就跟 example.{com,net,org} 被保留的道理是一樣的),不過在 IPv4 位置愈來愈少的情況下,還是先被拿出來用了。(因為其他的 /8 等級的 IP address 都被企業擁有,要放出來要協調,甚至要法院...)\r\n\r\n儘管這段 IP address 被放出來,在實際使用之前還是有不少問題要處理,像是「Issues with allocating from 1.0.0.0/8」這篇所提到的,目前有很多人佔用這段 IP address 並且亂放 routing,不過這是比較容易解決的。真正困難的是目前在上面的應用...\r\n\r\n關於目前 IP address 的分配資料,可以看「IANA IPv4 Address Space Registry」這份文字檔看到個大概。以目前的網路環境來看,Multicast 也有可能被抓出來鞭屍拋棄...", + "title": "1.0.0.0/8 被分配給 APNIC 了..." + }, + { + "id": "2206", + "body": "以「銀魂 續.PTA苦情殺到!!」這篇的影音外嵌:\r\n\r\n對應的 video 頁是:\r\n
http://nico.pixnet.net/album/video/128033416
\r\n語法是:\r\n
\r\n<script src=\"http://ext.pixnet.tv/user/nico/embed/movie/128033416.js\" type=\"text/javascript\"></script>\r\n
", + "title": "測試?XD" + }, + { + "id": "2208", + "body": "GoogleOfficial Google Enterprise Blog 上宣佈,從今年三月開始,將不會在 Google Docs 以及 Google Sites 上繼續維護 IE6 的可用性,到時候如果繼續使用 IE6,有可能會有運作異常的情況發生:Modern browsers for modern applications。\r\n\r\n這陣子用 Firefox 3.7a1 (Minefield 版) 中了太多地雷,等下還是下載 3.6 好了...", + "title": "Google Docs 三月開始將不繼續支援 IE6" + }, + { + "id": "2209", + "body": "Firefox 3.6 在今年的 1/21 發表,到現在快兩個禮拜了。看到「Firefox 3.6 for Developers」這篇文章以網頁發展者的角度看 Firefox 3.6 的新功能,不過這篇文章講得有點少,官方網站上的介紹比較詳細:「Mozilla Firefox 3.6 Release Notes」。\r\n\r\n對使用者最大的改善就是 Personas,這使得換面板樣式不需要再重新啟動 Firefox。安全方面,則是會檢查 plugin 是否有需要更新,主要是針對 Flash PlayerJava 的安全更新。\r\n\r\n對開發者而言,主要是增加了不少 HTML5 的新功能,像是 script 標籤的 async 屬性。\r\n\r\n七月應該有機會看到 gs.statcounter.com 所統計的 IE 市占率 (Worldwide) 掉到 50% 以下了,一月是 55.25%。", + "title": "Firefox 3.6 的特性" + }, + { + "id": "2210", + "body": "Amazon Web Services 除了是這個領域 (Cloud Computing雲端計算) 的主要發起者之一以外,同時也是領先者。不僅一直開發新功能,同時對已經完善的部份想辦法盡力打壓競爭對手:降價。\r\n\r\n今天看到 AWS 的頻寬費用又降價了,從二月開始的頻寬費用以新價錢計算:「AWS Outbound Data Transfer Prices Reduced By $0.02/GB」,outbound 頻寬費用再降 USD$0.02/GB,這次降價包括 CloudFront 也都在內。依照地區不同,降幅大約是 10% 上下。\r\n\r\n即使服務放在外面 (租用 dedicated hosting),用 S3 比起自己建一台有 RAID1 的機器跑 nginx,大家還是偏好用 S3。如果需要的話還可以上 CloudFront?(像是 TwitterPlurk)", + "title": "AWS 頻寬再降價" + }, + { + "id": "2211", + "body": "Facebook 的開發者在「HipHop for PHP: Move Fast」這篇的說明,也就是 HPHPi 計畫。\r\n\r\n這個計畫 Facebook 的團隊花了兩年的時間公開,到現在有 90% 的 PHP server 跑在上面,平均起來比起 well-tuned PHP 還快了 50%。但目前還沒看到 code,而且以文章的說明並不清楚到底採用什麼方式,只有看到這樣解釋:\r\n
When using HPHPi you don't need to compile your PHP source code before running it. It's helped us catch bugs in HipHop itself and provides engineers a way to use HipHop without changing how they write PHP.
\r\nUpdate:在 developers.facebook.com 上列出 HipHop for PHP,不過 github 連結還沒生效。在 USTREAM 這邊有份大約 40 分鐘的錄影:「Facebook Technology Tasting - HipHop for PHP 」。", + "title": "Facebook 的 PHP 加速計畫" + }, + { + "id": "2213", + "body": "由 HipHop for PHP project 的幾位帶領者所說明的會議中解釋了不少東西 (在 USTREAM 有錄影可以觀看:Facebook Technology Tasting - HipHop for PHP)。\r\n\r\n前半部份等於是把「HipHop for PHP: Move Fast」重講一次,並且說明他們在不少 case 下可以分析出 variable type,所以不需要用 zval (一般性的變數)。\r\n\r\n比較重要的是後半段的 Q&A 部份。\r\n\r\n就會場所提到的,他們目前跑在 Apache 1.3 + prefork 上面。有計劃要支援 multithreading,好處是 shared resource 可以共用,像是 database connection,但解法是苦工 (修正所有 thread-safe 的問題)。而既有的 extension (包括他們自己寫的) 則是維持相容,這應該是指維持 PHP extension 介面相容性。\r\n\r\n看起來是整個重寫,但少數功能不支援 (而非想辦法相容),所以現有的 PHP site 要換上去得先確認是否有用到不支援的功能,以及支援的功能是否正常。", + "title": "HipHop for PHP 計畫" + }, + { + "id": "2214", + "body": "在 Slashdot 上看到 Apache 1.3 釋出最後一個版本 1.3.42:「The Final Release of Apache HTTP Server 1.3」,之後只會有 critical security patch。\r\n\r\n雖然 1.3 仍然被許多站台所使用 (像是 Facebook 才剛提到他們仍在使用 1.3 版),不過看起來 Apache 沒興趣同時維護 1.3、2.0、2.2。\r\n\r\n另外一方面,lighttpd 也放出了 1.4.26rc2710 的消息,利用 security issue (CVE-2010-0295) 準備發佈 1.4.26,而非只有 patch,讓 community 感覺到有在動:「PRE-RELEASE: lighttpd 1.4.26rc1-r2710」。", + "title": "Apache HTTP Server 1.3 最後一個版本釋出" + }, + { + "id": "2215", + "body": "過年前以及過年期間頗懶散,超過一個禮拜沒更新 blog 了,一發文章居然是講 boardgame...\r\n\r\n要介紹的 Dominion (皇輿爭霸) 這款遊戲,可以參考「[遊戲介紹]皇輿爭霸Dominion」這篇文章的介紹以及圖片,裡面有照片可以看到原來盒子的樣子。\r\n\r\n這款遊戲是今年的台北國際書展時,表弟在書展會場買了一整組回來,除了原本的以外,還包括了兩組擴充版,總共三個大盒子,在過年期間嫌帶著三個盒子麻煩,就花了五個小時做手工藝...\r\n\r\n首先,這是外觀,顯卡的盒子 XD\r\n\r\n\"\"\r\n\r\n打開後裡面是長這樣:\r\n\r\n\"\"\r\n\r\n依照每份卡片再做紙套並貼上標籤:\r\n\r\n\"\"\r\n\r\n太墮落了... XD", + "title": "手工藝 (Dominion,皇輿爭霸)" + }, + { + "id": "2216", + "body": "年前 Amazon Web Services 發布了一個重要的功能:「Announcing Consolidated Billing for AWS Accounts」,這項功能提供了單一付款帳戶付多個帳號的費用,可以累計因為頻寬使用量而產生的 discount。\r\n\r\n由於每個帳戶的 Access Key ID + Secret Access Key 就可以存取這個帳戶所有的 S3 檔案,在不同的 project 時分開不同的帳戶會比較理想。但這樣在計費時得分開算,同時帳單也變多。\r\n\r\n也許在付費窗口單一化後會規劃非信用卡付款,對於用量非常大的企業應該會有幫助。", + "title": "Amazon Web Services 合併記帳" + }, + { + "id": "2217", + "body": "在 trace 某些網站的時候看到 Apache 送出這樣的 HTTP header 覺得奇怪:\r\n
X-Pad: avoid browser bug
\r\n用 Google 找了一些資料後發現是為了 workaround Netscape Navigator 2.x 到 4.0b2 的 bug 而做的:「Why is Apache sending a \"X-Pad\" header?」。\r\n\r\n在 Revision 77941 可以看到這個 commit log,1997 年 4 月的事情...", + "title": "HTTP Header 出現 X-Pad" + }, + { + "id": "2218", + "body": "在 OSNews 上看到的,Amazon微軟簽訂專利交叉授權協議:「Microsoft, Amazon Sign Patent Cross-Licensing Agreement」。微軟的公關稿在「Microsoft and Amazon.com Sign Patent Agreement」。\r\n\r\n這次並非對等的交換,雙方除了交叉授權外,Amazon 還付了一筆錢給微軟。\r\n\r\n不同於之前 Novell 的情況,有不少人猜測 Amazon 會跟微軟簽授權是因為 Amazon 發現他們所使用的某些技術踩到微軟的專利,而且發現難以避免。由於 Amazon 用了許多 open source 軟體與技術,更使得許多人對這個消息感到不愉快...", + "title": "Amazon 與 Microsoft 簽定專利交叉授權" + }, + { + "id": "2219", + "body": "Comcast 在官方的 blog 上宣佈,開始提供有 DNSSEC 驗證功能的 DNS resolver:「DNSSEC」,如果要測試的人可以手動改到 75.75.75.75 & 75.75.76.76。\r\n\r\n非 Comcast 用戶沒有辦法參與,丟 query 過去會收到:\r\n
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 54496\r\n;; flags: qr rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
", + "title": "Comcast 實驗 DNSSEC" + }, + { + "id": "2220", + "body": "Linux kernel 2.6.33 是在 DRBD 進入 Kernel Git tree 之後 (去年 12 月左右,參考「We’re in!」這篇文章) 的下一個正式的 release:「Linux 2.6.33 released, first kernel with DRBD included」。\r\n\r\nDRBD 是一套以 block-level replication 為基礎提昇可靠度的軟體,有時候為了方便解釋,也被稱為 Network RAID1,常搭配 Heartbeat 或是其後繼的 Pacemaker 偵測節點是否還活著,並在必要時自動切換。\r\n\r\n由於 DRBD 已經出來很久了,而且又是以 GPLv2 釋出,早期有不少文件介紹如何使用 DRBD 達到 HA,算是一種已經被摸熟的方案。\r\n\r\n另外是 FreeBSDHAST Project 到一個階段,被 commit 到 -HEAD 了:「Please welcome HAST - Highly Avalable Storage.」,再加上 block-level replication 會需要 Filesystem 快速恢復的 SUJ (SU+J) 也在一月底放 source code 先讓自願者測試,一口氣補了 HA 領域兩塊重要的缺陷。\r\n\r\n不過依照慣例,新東西都不太穩定... 玩玩還可以,如果是要跑 HA 的話等一兩個版本會比較好。", + "title": "DRBD 進入 Linux 2.6.33 Kernel,以及 FreeBSD 的 HAST Project" + }, + { + "id": "2221", + "body": "在 Amazon CTO Werner Vogels 的 blog 上提到了 AWS SimpleDB 支援不同程度的 consistency:「Choosing Consistency」,在 James Hamilton 也對這件事情發表正面的意見:「I love eventual consistency but...」。正式的技術文件在「Amazon SimpleDB Consistency Enhancements」這邊可以查到。\r\n\r\nEventual consistencyCAP theorem 中的 Consistency 妥協,試著解決 scale 問題,但缺點是 stale read (可能會讀到舊資料),對要求比較嚴謹的子系統 (像是遊戲內的各種點數,身上帶的金幣之類的) 會很麻煩,而對於要求更嚴謹的系統 (像是商品搶購時的「剩餘數量」) 幾乎無法直接使用。\r\n\r\n像是 Colin Percival 曾經解釋他得在 S3 與 SimpleDB 上做不少 workaround:「How Tarsnap uses Amazon Web Services」以確保資料正確性。\r\n\r\nAWS SimpleDB 這次提供了新的功能,要求寫入時一定要等到 consistent 才 return,將 consistent 的權限放給上層 application 決定,開發者可以自己拿捏。", + "title": "Amazon SimpleDB 支援不同程度的 Consistency" + }, + { + "id": "2222", + "body": "在 Simon Willison 那邊看到 Eric Lawrence 在 MSDN Blog 上的解釋:「Internet Explorer Cookie Internals (FAQ)」。Simon Willison 的文章在「Internet Explorer Cookie Internals (FAQ)」這篇內。\r\n\r\n他們討論到 IE 到目前所有版本的 cookie 都不支援 max-age 參數,所以有個避免 MySQL master/slave replication lag 的技巧在 IE 上沒辦法用的很好:當寫入資料時 (例:使用者發表文章),server 會設定一組 30secs 的 cookie,當 web server 收到這個 cookie 時會用 MySQL master server。\r\n\r\nworkaround 不難做,本來是只有設定 cookie,現在把把 server timestamp 與 signature (用 HMAC) 都放到 cookie 後就可以了,當 web server 收到後可以驗證並且決定是否要用 master server。\r\n\r\n其他的限制可以看一看留個印象,之後遇到時會比較有機會猜到...", + "title": "IE 的 Cookie 限制" + }, + { + "id": "2223", + "body": "HTML5 支援 <video> 標籤,由瀏覽器直接播放影片,不需要透過 Flash Player。但因為 H.264 有一堆軟體專利是無法 royalty-free 使用的。\r\n\r\n有人曾經建議 Mozilla 直接使用系統的 codec 避開這個問題,但 Mozilla 認為這種作法跟 ActiveX 一樣,直接把系統不安全的部份暴露在 Internet 上,當 codec 有漏洞時就會受到影響。(我覺得專利問題還是比較嚴重)\r\n\r\n因為這些原因,Mozilla 選擇內建 Theora 而非使用 H.264。最早支援 video tag 的 Opera 也是選擇 Theora。\r\n\r\nGoogleApple 手上都有與 H.264 相關的專利可以丟進專利池而取得免費使用權,所以 Google Chrome 以及 Safari 都是支援 H.264。\r\n\r\nUpdate:如同 Azel 在 comment 所講的,Google 沒有專利丟到專利池內,而是購買授權。(參考 AVC/H.264 LicensorsAVC/H.264 Licensees 資訊)\r\n\r\n除了專利問題外,有些人研究 H.264 與 Theora 在技術上到底哪個比較好,如果兩個差不多的話,沒有必要用 H.264 讓別人綁死。\r\n\r\n在 OSNews 的「Comparing Theora to H264」裡講到有三篇測試文章。\r\n\r\n最早的是「YouTube / Ogg/Theora comparison」這篇,這篇不是講 H.264,而是 YouTube 使用的 H.263。這篇文章之前有上過 Slashdot,但當時看過以後有個印象而已,因為他用的方法是肉眼,而非科學方法。雖然如此,還是很明顯可以看出來在 500Kbps 以下時 Theora 比 YouTube 的 H.263 好不少。\r\n\r\n最近的兩篇分別是「Ogg vs H264 - Round One」以及「Video encoder comparison」,後面這篇是我第一次看到有人用科學方法 SSIM 計算壓縮前後的相似性。不管哪一篇,都可以主觀或客觀的看出來品質上 H.264 大勝 Theora,而壓與解的速度則是反過來。\r\n\r\n不過下面的 comment 提到 Theora 目前真正在開發的不在 trunk 內,而是在其他 branch 下,另外 Theora 如果設定 bitrate,會是 CBR mode,品質會比 VBR mode 差。實際要比較每個 codec 最好的情況應該要跑 2-pass。\r\n\r\n過幾天應該會有新的 report 出來,到時候再來看差異...", + "title": "Theora 與 H.264 的畫質差異" + }, + { + "id": "2225", + "body": "花了一些時間翻 nginx 的文件,有一些地方可以 tune...\r\n\r\n在 FreeBSD 上可以利用 httpready 把一些事情丟到 kernel module 處理:\r\n
listen 80 default accept_filter=httpready;
\r\nhttpready 參數必須設定在有 defaultlisten 之上,而且必須在 default 之後,不然會回報設定錯誤。\r\n\r\nserver_tokens 也應該關掉,除了 security 理由外,另外一個很簡單的理由是,可以少送 7bytes...:\r\n
server_tokens off;
", + "title": "nginx 的調整" + }, + { + "id": "2226", + "body": "這幾天在 VirtualBox 內弄了一台 Debian lenny (x86) 起來玩,想要多熟悉 Debianbash 的風格...\r\n\r\n不過 lenny (5.0.0) 從去年二月到現在也已經過了一年,雖然一直有在更新 (現在是 5.0.4),但為了穩定性,並不是所有的軟體都有更新。印象中有個計畫是專門解決這個問題的,可以讓你在 stable 使用新版,但不是整個系統都換到 testingunstable。\r\n\r\n在印象中跟 \"backport\" 這個關鍵字有關,翻了以後找到 Debian Backports,看起來就是我要的...\r\n\r\n依照「instructions [Debian Backports]」操作,直接把 entry 加到 /etc/apt/sources.list 內,用 apt-get update 更新一次,這時候會出現不認得 public key,不管他直接 apt-get install debian-backports-keyring 就收工了。測過沒問題後,就在「Backports.org worldwide mirror sites」這邊找亞洲區的 mirror site,看起來只有日本有做,改過去再測一次 update,沒問題收工...\r\n\r\n由於預設仍然會使用 lenny 內的套件,如果要裝 backport 內的東西,需要用 -t lenny-backports 讓 apt-get 或是 aptitude 知道。\r\n\r\n另外,在「Diffs between lenny-backports and squeeze」這邊可以看到 lenny-backportssqueeze (目前的 testing) 的差距。", + "title": "Debian 的 Backports" + }, + { + "id": "2227", + "body": "要從紐約的主機上面拉檔案回台灣,發現 SFTP 速度只有 20KB/sec,這是因為目前 SSH 實做的方式對 latency 很敏感,在「High Performance SSH/SCP - HPN-SSH」這篇有提到相關的問題以及針對 OpenSSH 的 patch。不過,我想要用 freebsd-update 維護系統的 security update,所以我不想動到系統內的 OpenSSH。\r\n\r\n另外一個想法是透過 FTPS 抓檔案,有不少 server software 都有支援 FTPS。在找 bsdftpd-ssl 的資料時找到以前寫的「在 FreeBSD 上支援 SSL 的 ftpd」這篇,結果發現這篇文章是因為當初 bsdftpd-ssl 在 FreeBSD 上無法編譯而改用 ftpd-tls 所寫的。現在這個問題已經解決了,但找不到之前用 bsdftpd-ssl 所設的設定可以抄,只好再 man ftpd-ssl 看一次參數。\r\n\r\n除了先到 portsftp/bsdftpd-ssl 目錄下安裝外,還需要產生 self-signed certification。產生的步驟可以參考「OpenSSL Command-Line HOWTO」這篇的「How do I generate a self-signed certificate?」這個部份。把 certification 輸出到 /etc/ssl/certs/ftpd.pem (如果目錄不存在則建立一個),並把檔案權限改成 600 或是 400。\r\n\r\n再來是設定 /etc/rc.conf.local (bsdftpd-ssl 不屬於 system 內建軟體,所以放到 local),增加兩行:\r\n
bsdftpd_ssl_enable=\"YES\"\r\nbsdftpd_ssl_flags=\"-D -h -l -p /var/run/ftpd.pid -z secure\"
\r\n然後用 /usr/local/etc/rc.d/bsdftpd-ssl start 跑起來就可以了。測試時要注意 active 與 passive 以及防火牆的設定,在 debug 時除了錯誤訊息外,可以用 sockstat | grep ftpd 以及 tcpdump 觀察。\r\n\r\n實際抓一個 500MB 的檔案,到最後面可以跑到 295KB/sec,比起 SFTP 快上不少。", + "title": "bsdftpd-ssl 的設定" + }, + { + "id": "2228", + "body": "這次主要是把之前用 jQuery 1.2.6 的需求改寫,改用 getElementsByClassName()getElementsByTagName() 以及 getElementById() 取得元素,然後用 .innerHTML 直接換掉內容。\r\n\r\n由於這次改寫避免使用 unsafeWindow 以及複雜的 GM_* 函式,在 Google Chrome 除了遇到一個小問題之外 (可以寫一段 code workaround),目前跑起來還蠻正常的。\r\n\r\n參考:「Wretch Album Expander」以及 GitHub 上的「gslin's albumexpander」。", + "title": "改寫 wretch-albumexpander.js (無名小站相簿展開程式)" + }, + { + "id": "2230", + "body": "Steve Souders 開了一個「Performance of 3rd Party Content」,分析 3rd party script 的效能。目前已經分析了四個 js。\r\n\r\n看完四個 js 的分析後,可以看出來一些 pattern:\r\n\r\n這個計畫應該還會再繼續分析,有興趣的人可以訂 RSS 看。", + "title": "P3PC (Performance of 3rd Party Content)" + }, + { + "id": "2231", + "body": "剛剛跑 WebPagetest 才發現 WordPress 把內建的 gzip 的功能拿掉了 (差不多拿掉兩年了),所以第一個 request 不會被壓縮:「Web page performance test results for http://blog.gslin.org/ Test completed - 03/19/10 22:24:51 from Dulles, VA - 1.5Mbps ADSL」。\r\n\r\n\"\"\r\n\r\n可以在 WordPress Codex 上看到說明以及建議的解法:「Output Compression」,不過在 SharkSpace 的主機上用 .htaccess 的方式完全沒效果,還不曉得是什麼問題...\r\n\r\n由於首頁的 request 不壓縮與壓縮會有 40KB 以上的差距 (從 63KB 到 18KB),能夠解決 PHP 輸出的部份其實就解的差不多了,在找了 WordPress 的 Plugin 後,目前是裝 GZIP Output,目前看起來沒什麼問題...", + "title": "WordPress 的 gzip 支援" + }, + { + "id": "2233", + "body": "Debian 用一陣子後,發現 Python 2.6 在 lennybackports 也沒有,一定得到 squeeze (目前的 testing) 找出來用,但如此一來就會有很多問題 (像是 testing 的 python library 使用 stable 的 C library),所以一直在覺得很煩...\r\n\r\n另外,自己架設 APT 的熟練程度一直卡在沒有自動化工具,所以一直想要試試 Linux 上其他的 package system,但又不想要用 RPM,所以就挑上 ArchLinux 了...\r\n\r\n不過在 VirtualBox 內裝 ArchLinux 遇到一些怪問題,總算是弄的差不多,紀錄起來讓其他人有機會少踩一些雷...\r\n\r\n首先是抓 ISO image,最新的版本可以在 http://ftp.tku.edu.tw/Linux/ArchLinux/iso/latest/ (這是淡江大學的 mirror) 這邊抓到,我在寫這篇時是抓 archlinux-2009.08-netinstall-i686.iso,抓完之後先用工具確認檔案的 md5 與 sha1 有沒有問題,避免檔案壞掉造成安裝過程或結果異常。\r\n\r\n由於我是用 netinstall,所以得選擇 mirror site。在選擇時,記得得選擇 FTP 而非 HTTP 的 mirror site。我前幾次試著用 HTTP 試了好幾個站台都失敗,但後來選 FTP 都成功。這個問題還不知道哪裡出錯。另外要注意的是,由於我是有拿到 Public IP,所以不確定 FTP 預設是不是 passive,如果在 NAT 後面安裝的人可能要抓 core 版而非 netinstall 版避開這個問題 (因為 HTTP 不能用),或是想辦法讓 installer 告訴抓檔程式用 passive mode。\r\n\r\n再來是檔案系統的選擇,由於我只是要玩 ArchLinux,所以決定切 / 與 swap 就好,不另外切 /boot。在 Debian 上我可以用 ReiserFS 當作根目錄,而 GRUB 可以開機,但在 ArchLinux 上我用 ReiserFS 當作根目錄會失敗,改用 ext3 才開的起來。\r\n\r\n對於 ArchLinux 的 package system,pacman 用起來還蠻有趣的,官方 Wiki 上對於基本操作寫得很清楚 (「pacman」這篇),另外在 /etc/pacman.conf/etc/pacman.d/ 以及 /var/lib/pacman/ 下也是可以摸索的地方,要再花時間玩...\r\n\r\n裝玩 openssh 並且跑起來後,卻發現連不上 SSH server,翻系統紀錄才發現被 TCP wrapper 擋下來了,要在 /etc/hosts.allow 裡加上 sshd 以及開放的網段。\r\n\r\n接下來是建制基本環境,大致上就是把 Debian 上的 bash 設定複製一份過來就可以了。", + "title": "在 VirtualBox 內安裝 ArchLinux 的紀錄" + }, + { + "id": "2235", + "body": "玩了幾天 Pacman,整理一些資料...\r\n\r\n安裝完成後,預設可以使用的 package repository 可以在 /etc/pacman.conf 內看到,包括 core (目前約 340 個)、extra (~4500),以及 community (~3400)。\r\n\r\n另外有幾兩個測試性質的,預設是關閉的。一個是 testing,另外一個是 community-testing,裡面的量都不多。\r\n\r\n除了這些以外,使用者自己也可以提供新的套件,官方有提供 AUR (也就是 unsupported),任何人都可以註冊並且上傳,也因此所以有可能會包括有安全問題的 code。所以有 TU (Trusted Users) 的制度,當一個 package 使用的人夠多 (在「AUR Trusted User Guidelines」有說明),而且 TU 確認沒問題後就會 update 到 community 內。\r\n\r\n要安裝 unsupported 的軟體必須必須自己下載 AUR 的 source tarball (裡面有 PKGBUILD 以及其他設定),並且確認沒有 malicious code 後再用 makepkg 安裝。\r\n\r\n另外 Gmane 有收 ArchLinuxmailing list,習慣用 BBS 讀的人可以抓下來看。", + "title": "Pacman 的規劃" + }, + { + "id": "2237", + "body": "從 2010 的四月開始 (三月底就先公佈了),在同一個 billing account 下不同服務的頻寬將合併 (並不是所有的服務,請參考官方公告所列的),然後依照各區 (region) 計算:「Announcing Combined AWS Data Transfer Pricing」,除此以外每個月 Outbound 的第一個 GB 是免費的。\r\n\r\n這對於使用量夠大的人才有差異:假設 S3EC2 的 US-East 區 Outbound 都是 10TB,舊的算法會算成兩次 10TB (前 10TB 是 USD$0.15/GB,也就是 USD$3000),而新的算法則是算成一次 20TB (第一個 GB 免費,前 10TB 是 USD$0.15/GB,再來的 40TB 部份是 USD$0.11/GB,也就是 USD$2599.85)。\r\n\r\n10TB/month 大約是平均 33Mbps,用 Amazon EC2 跑 Facebook 外掛遊戲的應該都做的到?不過應該不會 EC2 + S3 混用,而是 EC2 + CloudFront 混用?這樣好像就虛掉了...", + "title": "Amazon Web Services 頻寬合併計算" + }, + { + "id": "2240", + "body": "Amazon Web Services 今天推出 Amazon Simple Notification Service (Amazon SNS),看起來比較像是 Simple Queue Service (Amazon SQS) 的變形:「Announcing Amazon Simple Notification Service」。\r\n\r\nAmazon SQS 的架構是 poll-based,而 Amazon SNS 是 event-based,而且允許多個訂閱,可以用 HTTP/HTTPS,以及 Email/Email-JSON (這兩個東西...),另外也可以丟到 SQS。\r\n\r\n價錢的部份,除了需要流量費用以外 (要注意的是只要 in/out SNS 就要收錢,而非跨出 Region 才收),另外也有 notification 的費用。如果自己改裝成 Sync Job Server (雖然走 HTTP 時 overhead 有點重),就目前費用看起來還蠻超值的,以 Notification 來算 (所以每次 publish 可能會有很多筆 notification),每十萬次才 USD$0.06,比起自己租用 EC2 最小台的機器做算是很方便的服務...\r\n\r\nEmail 的部份 (每十萬封要 USD$0.2) 還沒細看,不確定能實際拿來作什麼,不知道能不能當作 mailing list?\r\n\r\n再來想看看還有什麼有趣的用途...", + "title": "Amazon Simple Notification Service" + }, + { + "id": "2241", + "body": "Amazon Web Services 大約十天前對 ELB 加上了新功能:「New Elastic Load Balancing Feature: Sticky Sessions」,這個功能想要做到同一個 session 所發出的 request 都導到同一台 server 上。以「Elastic Load Balancing with Sticky Sessions」這篇的說明來看,看起來是 Cookie-based。這在商業 load balancer 上是很常看到的功能,後端的 web server 幾乎不用修改就可以維持同一個 session 都導到同一台 server 上。\r\n\r\n另外常見的作法是把 session 資料放到 NFS 或是 memcached 上,這樣跨機器也沒問題。", + "title": "Amazon 的 ELB 支援 Sticky Sessions" + }, + { + "id": "2242", + "body": "GCC 4.5.0 前幾天公告釋出:「GCC 4.5.0 Released」,而另外一邊以 clang 取代 FreeBSD 系統內 GCC 的計畫 ClangBSD 也開始徵求測試者了:「[CFT]: ClangBSD is selfhosting, we need testers now」。\r\n\r\n目前 ClangBSD 可以在 i386 以及 amd64 上編譯 bootable-kernel 以及 world (目前的 -CURRENT 版本),平常在用 -CURRENT 的人除了上面那篇 mailing list 上的說明外,在「Building FreeBSD with clang/llvm」也有介紹更多關於要怎麼把整個系統切換過去的細節。\r\n\r\nFreeBSD 要換掉系統內 GCC 的計畫又往前跨了一步...", + "title": "GCC 4.5.0 以及 ClangBSD" + }, + { + "id": "2243", + "body": "終於從沒網路的地方出來了... 兩個禮拜多沒更新 Firefox (3.7,Minefield 版),這次一更新就發現 GDI++ 失效了,看了一下,似乎是因為 Adblock Plus 把問題修掉並且推出新版的關係?\r\n\r\n考慮到美觀與速度之間的妥協,還是把 DirectWrite 關掉...", + "title": "Firefox 的 DirectWrite" + }, + { + "id": "2244", + "body": "四月底的時候 Amazon 宣佈 Amazon Web Services 在亞洲區選擇新加坡為其第一個進入的點:「Announcing the AWS Asia Pacific (Singapore) Region」。\r\n\r\n以 latency 看,速度比美西的點好很多,主要還是貴在頻寬的費用上,不過有些 ISP 還是會繞去美國再回來,速度就變差了...", + "title": "Amazon Web Services 亞洲區設點新加坡" + }, + { + "id": "2245", + "body": "Amazon Web Services 上星期公佈了 S3 不同等級的服務:「Announcing Amazon S3 Reduced Redundancy Storage」。\r\n\r\n先前 S3 的系統是設計成一年內有 99.999999999% (1-10-11) Durability,這是靠比較高的 replication 數量,以及將資料放在不同機房。而 RRS (Reduced Redundancy Storage) 則是放在單一機房內,replication 數量也比標準的 S3 少,所以成本會比較低,但資料的可靠度也會比較低,只有 99.99% (1-10-4)。\r\n\r\n這個新的設計對於比較不重要的資料 (尤其是可以從原始資料再運算得到的,像是縮圖) 可以考慮丟到 RRS。在前 50TB 的部份是標準儲存 2/3 的價錢。\r\n\r\n另外 RDS 的部份則是支援跨區 replication 了,可以藉由這種方式提昇一部分的服務可靠度:「Announcing Multi-AZ Deployments for Amazon RDS」。", + "title": "Amazon S3 的分級儲存以及 RDS 跨區 Replication" + }, + { + "id": "2246", + "body": "經過這半個月的發展,看起來 WebM 以及 VP8 會是下一代影音的新標準。\r\n\r\n去年 Mozilla (Firefox) 及 Opera 因為 H.264 的軟體專利問題而不願意支援 H.264,所以大家都很注目比較可能沒有專利問題的 Theora。這是基於 On2 Technologies 在 2001 年所 open source 的 VP3 而發展出來的。也因此大家對於是否可以用 Theora 取代 H.264 一直很有疑問 (參考二月時寫的「Theora 與 H.264 的畫質差異」)。\r\n\r\n首先是 Google 在 2009 年八月的時候買下 On2 Technologies (在 2010 年 2 月的時候完成收購),有不少人希望 Google 可以授權 On2 在 2008 年所發表的 VP8 給大家使用,FSF 甚至利用 YouTube 的影響力,並且主動提供 VP8 格式的影片,大力推廣 VP8:「Open letter to Google: free VP8, and use it on YouTube」。\r\n\r\n上個月 Google I/O 2010 的時候,Google 公開 WebM Project,其中包括了 VP8 的使用權,並且提供免費的專利使用權。雖然有些人對於 VP8 還是覺得不夠好 (像是「The first in-depth technical analysis of VP8」這篇分析),但由於 Mozilla、Opera、Google 在當天都已經宣佈會支援 WebM,微軟也宣佈會在 IE9 內支援 WebM 檔案格式 (至於 VP8 codec 則是在系統內安裝),所以 WebM 很快就變成大家注目的焦點,而在 ffmpeg 的 mailing list 上也很快就有人把將 libvpx 整合到 ffmpeg 內。\r\n\r\n接下來看看能不能更直接將 WebM 直接納入 HTML5 的 spec 內...", + "title": "WebM 以及 VP8 將成為下一代影音標準" + }, + { + "id": "2247", + "body": "Amazon CloudFront 宣佈支援 HTTPS,北美增加紐約 PoP,並降低單一 request 的費用:Amazon CloudFront: HTTPS Access, Another Edge Location, Price Reduction。\r\n\r\nHTTPS 的部份,因為 SSL Certification 是 *.cloudfront.net,所以不能使用自己的名稱 (CNAME 過去的那個名稱),否則在瀏覽器裡會出現警告視窗。像是 https://test.gslin.org/jquery-1.4.2.min.js 會出現警告視窗,但 https://d709c28ax59vf.cloudfront.net/jquery-1.4.2.min.js 則不會。\r\n\r\n除此之外,可以設定只能透過 HTTPS 傳輸,如果透過 HTTP 則擋下來不讓他用。價錢部份,HTTP 的單一 reuqest 價錢則是降了 25%,而 HTTPS 的價錢剛好是原來 HTTP 的價錢。\r\n\r\n另外一個比較意外的消息是,CloudFront 之前在紐約沒有 PoP,這次建好上線使用... 先前應該是透過 Newark, NJ 的 PoP 服務東岸北部?", + "title": "Amazon CloudFront 支援 HTTPS 並且降價" + }, + { + "id": "2248", + "body": "大約是兩個禮拜前的消息了。\r\n\r\n不過因為用到 Flash,所以使用 Flashblock 的人要把 console.aws.amazon.com 這個 site 加到白名單內 (頁面上沒出現 Flashblock 提供的 active button)。另外因為 flash policy 用到 port 843,所以連外 port 843 必須是通的。官方的公告可以參考「AWS Management Console adds support for Amazon S3」這篇。\r\n\r\n不過這東西問題還不少,跑一跑就讓我的 Firefox 當掉... 無論如何,畢竟是多了一種選擇,如果要透過網頁管理 S3 內的資料,不用再透過第三方的網站處理,而是改由本來就存取的到的 Amazon 來提供,會比較放心一點。", + "title": "Amazon Web Services (AWS) S3 可以透過 AWS Management Console 管理了..." + }, + { + "id": "2251", + "body": "以 Referer 決定是否可以存取的功能等了好久:「Amazon S3 Bucket Policies - Another Way to Protect Your Content」。\r\n\r\nBucket Policy 必須以 Amazon 自訂的語法設定條件,可以看某些 header 設定是否允許存取 S3 的物件,像是 User-agentReferer。\r\n\r\n不過看了文件,沒有 regular expression 可以用?只有 shell expression (支援 *? 而已),應該是夠用但感覺還是怪怪的...", + "title": "AWS S3 的 Bucket Policy" + }, + { + "id": "2252", + "body": "前幾天 Python 2.7 正式釋出 (2010/07/03),預定是 Python 2 最後一個 major release,於是又有人再討論要怎麼寫出 Python 2 與 Python 3 都能夠跑的程式碼,以維持單一 codebase。\r\n\r\n在「The real problem with Python 3 - no business case for conversion (was \"I strongly dislike Python 3\")」這篇提到了一些語法及模組技巧 (基本上就是用 Python 2 與 Python 3 都可以跑的方式寫),以及當無法避免寫兩次時要怎麼做。\r\n\r\nPython 3.0 釋出到現在也一年半了 (2008/12/03),Python 3.1 也一年了 (2009/06/27),而 Python 3.2 alpha1 預定在 8/7 發布... 該準備把現有的 code 丟進 Python 3 測試看看了。", + "title": "Python 2 與 Python 3 的相容性" + }, + { + "id": "2253", + "body": "前陣子發現 Xuite Blog 有時候會被導到登入頁?後來發現只要在 emome 登入過就會造成 Xuite Blog 上不去。\r\n\r\n先就症狀猜了老半天,然後用 Firebug 看了半天,但因為 Firebug 在 redirect 後會重新紀錄,所以猜不出原因...\r\n\r\n直到後來被 jnlin 提醒用 HttpFox 抓,才看出來中華是怎麼玩的...\r\n\r\n中華電信的單一登入系統在 cht.com.tw 網域下,而為了要讓其他網站可以取得資訊,利用多次 redirect 帶入授權資訊讓 emome.nethinet.netxuite.net 設定 cookie 登入。(也就是 http://member.*/HiReg/setcookie?... 這些 redirect request)\r\n\r\n這讓我想到 OpenID 好像有支援 AJAX style 的登入方式,缺點是會用到 javascript?該看一下了...", + "title": "中華電信的單一登入系統..." + }, + { + "id": "2255", + "body": "在 TechCrunch 上看到 YouTube 將提供 4096x3072 的影片格式讓合作夥伴上傳:「YouTube Announces Partner Grants Program, Support For 4K Video Resolution」。YouTube 的公告則是在「What's bigger than 1080p? 4K video comes to YouTube」這篇。\r\n\r\nYouTube 先把自己能做的部份做完,接下來只要有 source 就能上去。\r\n\r\n接下來的困難在於,能拍攝 4096x3072 格式的設備不便宜,而且就算有 source,使用者也必須有超大的頻寬才看得動。但如果超高解析度會是潮流,YouTube 會先把位置卡死,不讓其他業者進入...", + "title": "YouTube 將提供 4096x3072 的影片格式給合作夥伴..." + }, + { + "id": "2258", + "body": "Google Font Directory 讓使用者可以在網站上看到字型,前幾天推出的 Preview 功能可以讓你丟一段文字進去看效果,目前只有英文字型。\r\n\r\n測了一下 Preview 的部份,在 IE8 與 Firefox 3.6 都可以運作,不過 IE8 的 HTML code 部份好像有點問題...\r\n\r\n如果懶得點進去玩,可以參考「Google Font Previewer」這篇文章給的網站截圖。", + "title": "Google 的字型預覽服務" + }, + { + "id": "2260", + "body": "Rackspace Cloud 提出了 The OpenStack Project,以 Apache License 2.0 公開了兩個專案:OpenStack Compute (Nova) 以及 OpenStack Object Storage (Swift) (目前 Swift 需要登入)。\r\n\r\n兩者的文件可以在「Welcome to nova’s documentation!」與「Welcome to Swift’s documentation!」這兩邊看到,都是以 Python 開發出來的架構。對應到 AWS 的架構分別是 EC2S3。由於剛被丟出來,還沒有什麼測試資料與數據可以看,不過文件還蠻完整的,應該很快就有人將測試結果與感想丟出來。\r\n\r\n除了底層的基礎建設外,在 Launchpad 上可以看到其他的專案在發展,像是 OpenStack Web Control Panel。", + "title": "Rackspace 的 OpenStack" + }, + { + "id": "2261", + "body": "在 Slashdot 上看到 Dell 所售出的伺服器中,主機板上內建的管理軟體有木馬:「Dell Ships Infected Motherboards」。\r\n\r\n原文是在 Dell 的支援論壇上面,苦主提到他的 PowerEdge R410 被 Dell 通知要更換主機板,因為裡面的管理軟體包含木馬:「PowerEdge R410 replacement motherboard contains malware?!」。\r\n\r\n這個厲害,繼續看會發生什麼事...", + "title": "Dell 伺服器內管理軟體內含木馬..." + }, + { + "id": "2262", + "body": "Twitter 剛剛發的公告:「Room to grow: a Twitter data center」。\r\n\r\n目前 Twitter 是購買 NTT America 的 transit,預定在今年秋天時在 Salt Lake City (鹽湖城) 建立自己的 data center。\r\n\r\n就文章所說得部份看不出來打算做到什麼程度,但我猜以 Twitter 目前的規劃,應該是租用既有的機房空間,而非從建築物開始蓋。在建立自己的網路架構後,混合 transit 與各 ISP peering。這種方法比較接近 Google龍潭所成立的機房。\r\n\r\n不知道之後會不會在 conference 上介紹怎麼弄機房...", + "title": "Twitter 要建立自己的 Data Center" + }, + { + "id": "2265", + "body": "之前在 debug 時為了 HTTP Redirect Response 的 cache 問題測過一些,發現結果很亂,後來找到一些 workaround 避開 redirect response 後就沒有再研究太多。今天在「Redirect caching deep dive」這篇看到在討論 HTTP Redirect Response 時的 cache 問題,作者把幾個常見的瀏覽器都測過一次作成表格...\r\n\r\n可以看出來情況還蠻複雜的,雖然 RFC 有定義 cache 的時機,但沒有一家完全照 \"SHOULD\" 的規矩來 XD\r\n\r\n不過既然有人提出來而且整理成表格了,之後應該會修正...", + "title": "HTTP Redirect Response Cache" + }, + { + "id": "2266", + "body": "WordPress 宣佈從 3.1 版開始將不再支援 PHP 4 與 MySQL 4:「PHP 4 and MySQL 4 End of Life Announcement」。\r\n\r\nPHP 4 與 MySQL 4 官方都已經停止支援很久了,WordPress 總算是想起來了?\r\n\r\n另外,在 WordPress 3.2 版後 (預定在 2011 年的上半年發行),對 PHP 的最低需求會再提高到 5.2 版,這是因為目前使用非 5.2 以上的數量只有 ~11%,所以他們希望半年後可以再把需求更新...", + "title": "WordPress 3.1 將不考慮 PHP 4 與 MySQL 4" + }, + { + "id": "2267", + "body": "順便可以拿來取消版本檢查...\r\n\r\n我桌機的 Firefox 雖然是跑 3.6 系列,但筆電上還是跑 Minefield。之前一直都是靠 Nightly Tester Tools 強制套件不要檢查版本,但在 4.0 beta 後一直沒更新,於是 Nightly Tester Tools 就失效了... XD\r\n\r\n後來在 comment 的地方看到有人說 Mozilla 官方自己跳出來弄了一個「Add-on Compatibility Reporter」,一樣可以做到這件事情,除此之外還可以回報套件在新版上是否正常...\r\n\r\n於是 Minefield 的套件就都跑起來了,測了一下,果然一堆套件在 4.0b3 上爛掉... XD", + "title": "Mozilla 官方的 Firefox 套件相容性回報程式" + }, + { + "id": "2268", + "body": "在 2008 年的時候 xdite 寫過一篇「在 Linux 上架設 Screenshot Service」,不過現在是 2010 年了,不少當初有問題的地方都已經改善了,現在要架比之前方便不少...\r\n\r\n測試的平台同樣是在 Linode (referral code 是 fdbacc96dbddafce9ba444dd678357416d0323d5) 上跑 Debian lenny (也就是 5.0 版),為了避免 Adobe Flash PlayerLinux amd64 上會出問題,我在 Linode 上用 32bits 版。\r\n\r\nLinode 把預設的 Debian 裝完後,先把整個系統升級到 Debian squeeze 並且重開,然後先裝「locales」這個套件,再用 dpkg-reconfigure locales 把 en_US.UTF-8 以及你自己會用到的 locale 勾起來。\r\n\r\n接著開始裝必要的套件:\r\n\r\nIceweasel 其實就是 Firefox,因為商標問題而在 Debian 上有不同的名字。在英文版維基百科的「Mozilla Corporation software rebranded by the Debian project」這篇文章裡把前因後果講得很清楚,這邊就不提了...\r\n\r\n除了必要的套件外,接下來裝 TightVNC server,準備透過 VNC 設定 Iceweasel。設完後可以移除掉或是留下來,我自己是留下來 (反正檔案不大),有時候可能要進去 about:config 調整參數...\r\n\r\nTightVNC server 用 tightvncserver :0 跑起來,然後遠端連進去把 Iceweasel 跑起來測試看看有沒有問題 (可以透過 PuTTY 的 tunnel 將傳輸過程加密),沒有問題的話就裝「torisugari: Command Line Print」這個套件,裝好後再把 Xvfb 跑起來,用這個指令抓圖:\r\n
DISPLAY=:2.0 iceweasel -print http://zh.wikipedia.org/ -printmode png -printfile ~/zh.wikipedia.org.png -printdelay 10
\r\n抓出來的 screenshot 就會像這樣:(點這裡看原大小圖片)\r\n\"\"\r\nFlash 也沒問題:(點這裡看原大小圖片)\r\n\"\"\r\n比起之前的方法,現在的方案有兩個好處:首先是 plugin 是照正規方法裝進去,而不是直接丟 xpi,可以避免遇到奇怪的靈異現象時懷疑是不是安裝時硬塞造成的。再來是 Iceweasel 會在抓完就 shutdown,所以在網路速度夠快的時候可以提前結束,而網路不夠快時也不用擔心抓到未完成圖...\r\n\r\n當然剩下有很多細節要處理啦,不過那是另外一回事了...", + "title": "在 Linux 上架設 Screenshot Service (2010 年了?)" + }, + { + "id": "2271", + "body": "xkcd 上的「University Website」:\r\n\r\n\"\"", + "title": "大學網站" + }, + { + "id": "2272", + "body": "前陣子 jnlin台固到香港變差,結果剛剛才發現 Akamai 從 7/26 後會把台固的使用者導到香港,而不是導到原本在台固內的 cluster:\r\n\r\n\"\"\r\n\r\n在遠傳 (Seednet) 的就沒這個問題:\r\n\r\n\"\"\r\n\r\n這麼一來,台固出國變差也不是什麼奇怪的事情?", + "title": "台固的 Akamai cluster 似乎撤掉了..." + }, + { + "id": "2275", + "body": "在「FreeBSD 上使用 wkhtmltopdf 做網頁擷取」看到有人在 FreeBSD 上用 Linux emulator 跑 wkhtmltopdf 成功,那麼 Linux 上當然更沒問題啦...\r\n\r\n同一個計畫裡有 wkhtmltoimage,可以直接輸出成 PNG 格式,不過輸出的 PNG 沒有壓縮過 (應該吧,下面這張測試的原始輸出是 ~10MB,處理後是 ~500KB),要用 pngcrush 處理後才會比較小。\r\n\r\n不過 PIXNET 的網頁都會 segmentation fault 是怎樣 XD\r\n\r\nUpdate:在「Segmentation fault while generating http://www.pixnet.net/」這邊回報後,trunk 版修正了。\r\n\r\nwkhtmltoimage 輸出結果在這,點下去會出現原圖:\r\n\r\n\"\"\r\n\r\n之前透過 Firefox 的方法的輸出結果,點下去會出現原圖:\r\n\r\n\"\"\r\n\r\n可以看出來字體的部份有差... 不過處理的速度與方便度比 Firefox 好太多了。", + "title": "測試 wkhtmltoimage 的效果" + }, + { + "id": "2277", + "body": "本來都是裝 www/p5-WebService-NoPaste,不過這個年頭比較流行 Gist,翻了一下果然有人做 ports 了:www/gist。\r\n\r\n使用方法跟之前的差不多,或是打 gist -h 也可以看到說明,不過 ports 裡的版本好像有點舊,等下來送 send-pr 更新...", + "title": "改裝 www/gist" + }, + { + "id": "2279", + "body": "jQuery Mobile 前幾天在 jQuery 的官方網誌上公告出來了:「The jQuery Project is Proud to Announce the jQuery Mobile Project」。\r\n\r\n不過照「Mobile Graded Browser Support」的表來看,這... 前途一片荊棘啊... XD", + "title": "jQuery Mobile" + }, + { + "id": "2281", + "body": "這應該有很標準的程序,不過好像還是有很多站沒這樣做...\r\n\r\n必要的步驟包括:\r\n\r\n要注意的是要透過「確認信」的步驟再改密碼,而不能在要求重設密碼時就馬上把密碼改掉,不然就可以惡搞使用者。", + "title": "關於重設密碼的步驟" + }, + { + "id": "2283", + "body": "先記錄下來,還要再想想:\r\n\r\n然後 Smilevideo 馬上宣佈改用 H.264 儲存低畫質影片的消息 (本來是用 FLV):「低画質モード動画のフォーマット変更について」。", + "title": "H.264 的近況" + }, + { + "id": "2286", + "body": "因為 mailing list 之類的東西我還是習慣在 mutt 裡讀 (操作起來比較快),而有時候會把 -announce 與 -users 都丟到同一個檔案裡,所以偶而會在一個檔案裡面有同時寄到多個 mailing list 而重複的信件...\r\n\r\n之前是看到的時候就手動砍掉,不過用 Google 找了一下,發現早就有方法可以做了:「Tip: Remove Duplicate Emails with Mutt」。\r\n\r\n變化一下就是用 D 然後輸入 ~=,當離開這個信件檔時就會刪除這些重複的信件。等下再來研究要怎麼樣在切換信件檔時自動執行這個命令...", + "title": "在 mutt 裡刪除重複的信件" + }, + { + "id": "2288", + "body": "用 git-archive。\r\n\r\n預設是輸出成 tar 格式到 stdout,所以可以用下面的指令取出一份 archive:\r\n
mkdir ../working\r\ngit archive master | tar -x -C ../working
", + "title": "Git 內類似 svn export 的功能" + }, + { + "id": "2289", + "body": "TechCrunch 放出消息說 Cisco 打算要買 Skype:「Cisco May Be Making A Run For Skype」。\r\n\r\nSkype 在月初的時候向 US SEC 丟出 IPO 申請 (參考「Skype Files For IPO, Only 6 Percent Of Users Pay」),然後 Cisco 打算買下來...?\r\n\r\n這家公司的操作從 eBay 時代到現在一直都很謎...", + "title": "有消息說 Cisco 要買 Skype?" + }, + { + "id": "2291", + "body": "自九月開始,微軟的 Windows Azure CDN 增加了兩個 PoP:「20 Nodes Available Globally for the Windows Azure CDN」,參考文章最後的「UPDATE - 9/1/10」部份。\r\n\r\n這樣又多了一個 CDN 在台灣有 PoP... 其他幾家是 AkamaiCDNetworks。\r\n\r\n在台灣放的點是是方電訊,以微軟自家的 hp.msn.com 測試 (目前是 CNAME 指到 msnimstore.vo.msecnd.net),從 HiNetSEEDNet台灣學術網路 (透過 SEEDNet 轉過去) 都會被導到台灣的點,而台灣固網則是被導到美西,看起來是因為台固與是方是走 TWIX...\r\n\r\n是該跳下去玩看看的時候了...", + "title": "Windows Azure CDN 的台灣 PoP..." + }, + { + "id": "2293", + "body": "HTC Desire 入手,拿到後先更新到 Android 2.2,然後到 Market 上面抓一堆應用程式回來玩...\r\n\r\n等到比較熟了以後再來看看有什麼想法...", + "title": "HTC Desire 入手..." + }, + { + "id": "2294", + "body": "Yahoo! 奇摩在網頁上增加手寫輸入法的功能,居然是在國外 ReadWriteWeb 上看到... 大概是因為時差的關係:「Yahoo Adds Handwritten Search for Chinese Characters」。\r\n\r\nYahoo! 官方的公告在這:「Hand-Write Your Searches in Yahoo! Taiwan and Hong Kong」。\r\n\r\n用 Flash 做的,不過這個功能有什麼用途嗎?", + "title": "Yahoo! 奇摩在網頁上增加手寫輸入法..." + }, + { + "id": "2295", + "body": "AWS EC2 剛剛公佈新的 instance 叫做「Micro On-Demand Instances」,公告在這:「New Amazon EC2 Micro Instances - New, Low Cost Option for Low Throughput Applications」、「Announcing Micro Instances for Amazon EC2」。\r\n\r\n新的 micro instance 有幾個特性:\r\n\r\n在公告內有提到,除了拿來測試以外, 跑 DNS server 或是 Load Balancer (而不使用 AWS 自己的 ELB) 會比以前的 instance 適合。另外也可以跑 monitor service...\r\n\r\n這種型態的 instance 也可以 spot 競價倒是沒什麼特別的,不知道 CPU resource 可以 burst 到什麼程度...\r\n\r\n公告出來第一個感想就是很多 Cloud VPS 要倒楣了,因為這個價錢並不差,如果再加上在 AWS 同一個 zone 裡面內的頻寬不用錢,以及諸多服務 (尤其是 MySQL 資料庫服務 RDS) 及延伸性 (更不用提 Amazon 的「名牌」了),對於許多在家 startup 的吸引力就更大了...", + "title": "AWS EC2 最新的 Micro On-Demand Instances" + }, + { + "id": "2296", + "body": "twitterfeed 一直是 RSS feed 轉到 Twitter 上的首選,但最近似乎怪怪的,blog.gslin.org 不管怎麼重設都沒辦法轉上去,找了一下資料發現也有人有類似的情況:「dlvr.it - Twitterfeed 的另一選擇」。\r\n\r\n所以,照著上面那篇文章,我也換去 dlvr.it 了,接下來就觀察看看吧...", + "title": "從 twitterfeed 換用 dlvr.it..." + }, + { + "id": "2297", + "body": "紀錄 192.88.99.1 這組 6to4 anycast 的情況,看起來好像還是不太好 XD\r\n", + "title": "192.88.99.1 6to4 Anycast 的情況" + }, + { + "id": "2299", + "body": "CloudInit (cloud-init) 是 Ubuntu 針對 EC2 所發展出來的套件,以 EC2 instance 傳入的 userdata 解決每一台 instance 差異化的問題...\r\n\r\n對於 userdata 最大只能吃 16kbytes 的問題,也可以用 gzip 或是 #include 的方式解決。其他的範例可以在 ~cloud-init-dev/cloud-init/trunk 這邊找到。\r\n\r\n等下再開一台 instance 測試看看...", + "title": "Ubuntu 針對 EC2 發展出的 CloudInit" + }, + { + "id": "2300", + "body": "是這張:\r\n\"\"\r\nTechCrunch 的報導在這:「Flickr Hits Its 5 Billionth Photo, And Here It Is」。", + "title": "Flickr 五十億張圖片" + }, + { + "id": "2301", + "body": "Amazon Web Services 推出了 Amazon Linux AMI (Beta),讓想要用新版 Linux kernel 的人可以在 EC2 上測試:「Announcing the Amazon Linux AMI」。\r\n\r\n包括了 32bits/64bits 以及 S3/EBS boot 的版本 (所以總共四種版本),基本的系統都是 Fedora。其中 EBS 版本可以直接用 t1.micro 跑起來,以目前跑起來的版本 uname -a 可以看到:\r\n
Linux domU-12-31-38-02-55-4B 2.6.34.6-54.21.amzn1.i686 #1 SMP Sun Sep 12 06:48:07 UTC 2010 i686 athlon i386 GNU/Linux
\r\n依照 kernel.org 的資料可以看到 2.6.34.6 是 2010/8/26 釋出,算是蠻新的版本了...\r\n\r\n接下來就是要找方法把 EC2 上 Fedora 系統換成 Debian,這個倒是有不少文件,像是:「Building EC2 Images from Scratch with ec2ubuntu-build-ami」...\r\n\r\nUpdate:依照 Eric Hammond 的說法,不建議使用 ec2ubuntu-build-ami 這個 script 產生 AMI,參考他在 9/18 的回覆。目前建議的方式是「Building EBS Boot and S3 Based AMIs for EC2 with Ubuntu vmbuilder」以及「Building EBS Boot AMIs Using Canonical's Downloadable EC2 Images」這兩篇。", + "title": "AWS EC2 推出 Amazon Linux AMI (Beta)" + }, + { + "id": "2303", + "body": "今天 AWS EC2 一口氣丟出一堆小功能:\r\n\r\n其實這些功能都沒什麼大不了的,Idempotent Instance Creation 可以避免重複產生 instance,而 Resource Tagging 暫時想不到用途,Filtering 則是 describe 的功能加強...\r\n\r\n對現在最有幫助的是第四個,ssh 時可以不用指定 -i .ssh/ooxx.pem 算是有直接影響的吧?目前還不能透過 Web Console 匯入,必須用 ec2-import-keypair 指令匯入。", + "title": "AWS EC2 可以匯入自己的 SSH public key 了..." + }, + { + "id": "2304", + "body": "在 Firefox 裡把不好看的字體換掉的 extension:「Font Replacer」。\r\n\r\n主要是換掉 Courier,因為 anti-alias 不起作用:\r\n\"\"\r\n其中的 Bitstream Vera Sans Mono 是「Bitstream Vera Fonts」這邊下載的...\r\n\r\n這是使用前:\r\n\"\"\r\n這是使用後:\r\n\"\"\r\n當然不一定要換成 Bitstream Vera Sans Mono,也可以換成其他的,像是系統內應該會有的 Courier New...", + "title": "把不好看的字體換掉:Font Replacer" + }, + { + "id": "2305", + "body": "evercookie 是一套想辦法在瀏覽器上留下可供紀錄的痕跡的 javscript library,支援非常多方法,想盡辦法產生類似 HTTP cookie 的效果...\r\n\r\n從標準的 HTTP cookie、Flash 的 Local Shared Object,以及 HTML5 規格中的各類 Storage 外,另外還想實做 Web History 與 ETags!這真的不知道該說什麼了... XD\r\n\r\nHTTP cookie 可以用內建設定保護,而 FlashblockBetterPrivacy 可以擋 Flash 的 LSO 部份,至於其他的還要再找看看有沒有解...", + "title": "evercookie - 想辦法在瀏覽器留下紀錄..." + }, + { + "id": "2306", + "body": "AOL 這幾天一口氣買下 TechCrunch (Tim Armstrong: We Got TechCrunch!)、Thing Labs 以及 Brizzly (AOL Acquires Thing Labs and Brizzly)。\r\n\r\n是最近手上現金太多嗎... 啊,.com 泡沫差不多也十年了?", + "title": "AOL 大動作... 買下 TechCrunch、Thing Labs 以及 Brizzly" + }, + { + "id": "2307", + "body": "在 Slashdot 上看到有人將 HDCP encryption/decryption 的程式寫出來了:「HDCP Encryption/Decryption Code Released」。\r\n\r\n程式碼網站在「HDCP Encryption/Decryption Code」這裡,以 BSD license 釋出。為了加速加解密,也用上了 SSE2...\r\n\r\n640x480 加密的部份,使用單核心在 Intel Xeon 5140 上可以跑到 181 frames/sec,而在 Core2 Duo P9600 上 (也是只使用單核心) 則可以跑到 76 frames/sec,看起來是 L2 cache 的大勝利... 解密的部份只有 1/7 的速度,但可以使用多核心平行化處理,所以在高階的 CPU 上 1080p 應該有機會跑到 30 frames/sec。", + "title": "BSD license 的 HDCP 加密、解密程式碼" + }, + { + "id": "2308", + "body": "Update:下面連結已經失效,請參考「不安裝 Adobe DLM 的前提下安裝 Adobe Flash Player 11.x」。\r\n\r\n現在 Adobe Flash Player 會要你裝 DLM 後再利用這個 P2P-based 的下載軟體安裝 Adobe Flash Player,再加上 Flash 三不五十就有安全漏洞要更新 (但以現在的環境來說,不能不用他),在 HTML5 能取代他之前先暫時想辦法...\r\n\r\n如標題所說,直接下載對應的安裝檔而不要裝 DLM,在國外的 blog 有不少人寫過,像是:「Download the Latest Adobe Flash for Firefox and IE Without Any Extras」。\r\n\r\n簡單來說,對於 ActiveX-based 版本的 (也就是 IE 系列),下載 fpdownload.adobe.com/get/flashplayer/current/install_flash_player_ax.exe 這個即可。\r\n\r\n而對於 plugin-based 版本的 (除了 IE 以外的都是),則是下載 fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe 這個即可。\r\n\r\n所以每次出安全性更新時都要抓兩份安裝。", + "title": "直接安裝 Adobe Flash Player 而不安裝 DLM" + }, + { + "id": "2309", + "body": "Google 剛剛發表了 WebP,一個從 VP8 擷取出來的圖片壓縮格式:「WebP, a new image format for the Web」。\r\n\r\n以 Google 的說法,從網路上隨機抽一百萬張圖片測試,原先使用 JPEG、PNG、GIF 壓縮的圖片,改用 WebP 後可以節省 39% 的空間。但這邊沒有提到測試的細節,像是壓縮後的品質,以及這一百萬張圖片是如何取樣...\r\n\r\n雖然在官方網站上有「Sample image files in JPEG and WebP」可以看,但比較奇怪的是,Lenna 居然沒有列出來,這幾乎是圖片壓縮的必測項目?\r\n\r\n目前的 WebP 只是先從 VP8 抽出來而已,還沒有加到 Google Chrome 裡,不過就網頁上的說明,已經在計畫了。", + "title": "Google 發佈 WebP,號稱比 JPEG 更好的圖片壓縮格式..." + }, + { + "id": "2311", + "body": "剛剛看到 Google 買下了 BlindType:「Google Acquires BlindType to Improve Android's Virtual Keyboard」。\r\n\r\n這是 BlindType 的 demo:\r\n\r\nHoly...", + "title": "Google 買下 BlindType" + }, + { + "id": "2313", + "body": "AWS RDS 支援 read replication 了:「Amazon RDS: Announcing Read Replicas」。\r\n\r\n不過常見到的問題還是會有,像是 replication lag 以及所產生的 read-after-write 問題。但對於許多 read 需求遠大於 write 需求的應用來說,RDS 新推出的功能可以再簡化 MySQL 的設置...", + "title": "AWS RDS 支援 Read Replication" + }, + { + "id": "2314", + "body": "jQuery 在出了 2010/2/19 出了 1.4.2 之後,過了半年總算有 1.4.3 的消息了。預定在 10/16 要放出 1.4.3 正式版,這幾天正在做最後的測試:10/10 的「jQuery 1.4.3 Release Candidate 1 Released」,以及 10/12 的「jQuery 1.4.3 Release Candidate 2 Released」。\r\n\r\n這半年最主要的變化應該是 HTML5 的興起,所以可以看到很多針對 HTML5 而做的修改。\r\n\r\n另外九月的時候 Jeff Roberson (不是 FreeBSD committer 那位) 對 jQuery 所使用的 regular expression 重新檢視過,再次把 jQuery 的效能再往上拉:「jQuery Regular Expressions Review」,相關的 commit fix 可以在 9dc6e0c572b9c809a3a4c123071d96d48a01dd1c 看到。", + "title": "jQuery 1.4.3-RC* 開跑" + }, + { + "id": "2316", + "body": "UPS 反而是機房斷線最常見的肇因:「Survey: UPS Issues Are Top Cause of Outages」。\r\n\r\n這是美國機房的調查,取樣則是從「歸咎於機房的問題」中的 453 件分析,原因包括了:\r\n\r\n應該是多選吧?不然超過 100% 了?", + "title": "機房斷線最常見的肇因:UPS" + }, + { + "id": "2317", + "body": "Facebook 在美國開始支援 OTP over SMS:「More Ways to Stay Secure」。\r\n\r\n在美國的手機號碼,先認證手機號碼並開啟 OTP over SMS 的功能,接下來在每次要登入時以簡訊送 \"otp\" 到 32665,就會收到一組 20 分鐘內有效的 token 讓你登入到 Facebook。\r\n\r\n簡訊便宜的國家才有機會開發這種功能... :o", + "title": "Facebook 支援 OTP over SMS" + }, + { + "id": "2320", + "body": "標題所提到的問題在 lenny 以及更早的版本沒有標準解,一般 Google 到的解法是在 /etc/network/if-up.d/ 裡面放一個 script,當介面起來的時候會跑 iptables-restoreiptables 的規則倒回去,這是「會動」的方法,但我不喜歡這種 hacking...\r\n\r\n剛剛找到 iptables-persistent,在 squeeze 以及 sid 都可以裝,雖然沒有文件,但看了一下程式很快就可以理解他的用法。\r\n\r\n在 apt-get install iptables-persistent 安裝完畢之後,理論上就會把 script 裝好,並且把目錄建好,接下來只要跑 iptables-save > /etc/iptables/rules 就可以把目前的 iptables 設定倒進去。\r\n\r\n這個方式看起來會是比較好的作法...", + "title": "Debian 重開機後維持 iptables 設定值的作法" + }, + { + "id": "2321", + "body": "IndexTank 是在 xdite 的個人板上看到的網站,號稱真正 Scalable 的 Search Engine,看了他的架構設計後看起來應該是真的 Scalable。\r\n\r\n由於是屬於 SaaS 服務,對於 startup 不想自己做 search engine 的可以直接套上去。而對於技術人員真正有價值的是他的 API 設計文件中的 function definition syntax:「function definition syntax」,雖然故意寫個 coming soon,但實際上可以在 client library 裡看到範例:「Python client」。\r\n\r\n先內建一些基本的數學函數,像是四則運算、power、log,並且內建一些很常用到的變數。接下來定義出來的函數可以再重複使用,不斷累積上去,最後在 query 的時候就可以 ORDER BY 某個 score...\r\n\r\nIndexTank 告訴你「利用 API 讓前端程式設定 function 以降低 denormalization 的複雜度」時要怎麼設計 API,當你自己建立 search engine 時,新增的 function 還可以在後端用 MapReduce 把資料補上去...。\r\n\r\n另外可以再參考「How Hacker News ranking algorithm works」這篇文章。(這篇文章的 comment 裡面有其他的 ranking code 可以看)", + "title": "IndexTank 的設計" + }, + { + "id": "2322", + "body": "如前幾天在「jQuery 1.4.3-RC* 開跑」所說的,jQuery 1.4.3 如期正式釋出:「jQuery 1.4.3 Released」,除了可以自己下載以外,在 Google Libraries API 上也已經更新了:ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js。\r\n\r\n對於 dev quality 的要求,這個版本導入 JSLint,要求所有 jQuery code 都要 pass JSLint 的檢查。\r\n\r\n另外把一些模組的相依性處理的更好,儘量都拆開不要相依,這樣可以使用 LABjsRequireJS 這類工具動態讀入。\r\n\r\n在效能改善的部份,這次把 .css() 重新寫過,大約快 20%,對於 .animate() 會有幫助,不過 Chrome 以及 IE8 似乎沒差... 最重要,改善幅度也最多的的應該是 .closest().filter() 的改善,以及連帶大量使用這兩個 function 的 .is().find()。", + "title": "jQuery 1.4.3 正式釋出" + }, + { + "id": "2323", + "body": "\"\"\r\n\r\n從今年的 11/1 開始,新註冊 AWS 的使用者可以取得一年份免費的 quota:「AWS Free Usage Tier」,這些免費的 quota 包括了持續使用 micro instance 的能力,以及一些免費的頻寬及儲存空間。\r\n\r\n另外還有一些免費的 quota 是包括現有的使用者,主要是推不太起來的服務... 像是 SimpleDBSimple Queue Service 以及 Simple Notification Service,這些看起來就不太好用的服務...\r\n\r\n對於一些嘗試性的服務會相當方便...", + "title": "Amazon Web Services 推出免費試用方案" + }, + { + "id": "2326", + "body": "\"\"\r\n\r\nFiresheep,一個 Firefox extension,利用截聽封包的方式取得 session 資訊,進而使用該 session 做壞事。原理其實很簡單,只是這次被包成 Firefox extension 後讓一般人都很容易可以「確認」這不是什麼困難的事情... 而在 Wifi 環境下封包的截聽就更容易了。\r\n\r\n除此之外,這次公開 Firesheep 時有說明「登入已經是 HTTPS 所以就很安全了」這個錯誤的觀念。因為在 HTTPS 模式下登入所拿到的 session (通常是 cookie) 在 HTTP 模式下預設還是會以明文傳輸,所以截聽 HTTP 封包取得 session 後就可以處理很多事情了。\r\n\r\n目前 client 端的解法都是建議全程 HTTPS 加密並加裝套件確保不會有 HTTP request。在 Firefox 目前看到的套件中有兩個,一個是 Force-TLS,這個套件可以設定某些 site 一定要使用 HTTPS。安裝這個套件而不做設定不會有效果。另外一個套件是 EFF 出的 HTTPS Everywhere,預設就會設定一堆常見的站台加密,對於一般人來說比較方便。\r\n\r\n回過頭來提到 HTTPS 協定。SSL 的 AES encryption/decryption 其實很快 (以目前 Web 的傳輸量來看),但啟始的 overhead 太大。再加上 HTTP 又是 stateless 協定,常常會需要重新連線。以目前 HTML5 WebSocket 支援加密的架構來看,以後有可能會用 WebSocket 加上 Javascript 解決效能的問題...", + "title": "最近很紅的 Firesheep..." + }, + { + "id": "2327", + "body": "在「MD5 for distinfo has been deprecated」這邊看到 FreeBSD Ports System 拿掉 MD5 檢查了 (會被忽略而不檢查)。\r\n\r\nPR (Problem Report) 可以在「ports/149657: [bsd.port.mk] deprecate MD5 checksums in distinfo」查到。\r\n\r\n翻了 cvs log,SHA256 是五年前 (2005) 加到 bsd.ports.mk 的:「Diff for /ports/Mk/bsd.port.mk between versions 1.517 and 1.518」,總算在今天把 MD5 取代了:「Diff for /ports/Mk/bsd.port.mk between versions 1.651 and 1.652」。", + "title": "FreeBSD Ports System 拿掉 MD5 檢查了..." + }, + { + "id": "2328", + "body": "去年「Perl - PSGI」這篇文章裡面提到 Perl 的 threading 一直是頭痛的問題之一,唐鳳在留言上推薦用 Coro 而非原來的 thread。\r\n\r\n實際測試後發現並非 OS level 的 threading,而是利用抽換的方式將系統內許多 blocking function 換掉,並且支援常用到的 module (像是 libwww-perl 系列),使得現有的程式要 porting 到 Coro 上會簡單很多,寫起來也的確比較像 threading 程式。(雖然實做比較接近 event-based)\r\n\r\n附上之前寫來測試的程式,用的是 PIXNETAPI:\r\n", + "title": "Perl 的 Threading 實做:Coro" + }, + { + "id": "2329", + "body": "\"\"\r\n\r\n因為不能跑 IE6:「IE6 Addiction Inhibits Windows 7 Migrations」(Slashdot)、「IE6 addiction throws monkey wrench into Windows 7 migration」(Computerworld)\r\n\r\n主要是因為有很多企業內部網站已經年久失修,只能跑 IE6...\r\n\r\n依據 StatCounter 的統計,台灣地區還是有 21% 的使用者用 IE6:「Top 12 Browser Versions in Taiwan from Oct 09 to Sep 10」。", + "title": "企業不肯換到 Windows 7 的原因是..." + }, + { + "id": "2331", + "body": "之前 BBS 備份都是用 gzip 加上 openssl 加密後丟上 Amazon S3,檔案大約 1GB 左右,曾經用過 bzip2,大約是 900MB,但多出來的壓縮時間與換到的空間讓人沒辦法接受...\r\n\r\n前陣子在測 7z 格式時才發現 xz 的壓縮率高的嚇人... 當然,壓縮的時間會更久,但可以壓到少於 500MB,這對於丟上 S3 的成本就少了很多...\r\n\r\n這是壓縮的結果:\r\n\r\nxz -1xz -2 的速度都非常快,跟 gzip -9 以及 bzip2 -9 差不多。沒意外的話 (像是軟體專利),應該是未來的趨勢了...", + "title": "xz (LZMA) 的壓縮率" + }, + { + "id": "2332", + "body": "EdgeCast 最近開始測試 Cloud Storage 服務,這個服務可以用信用卡付款,沒有 setup fee 之類的費用,看了功能以及價錢似乎是可以玩看看的東西...\r\n\r\n先說缺點:\r\n\r\n優點:\r\n\r\n要注意的有兩點:\r\n\r\n試用的情況大概就這樣吧...", + "title": "EdgeCast Cloud Storage 試用" + }, + { + "id": "2333", + "body": "AWS S3 自 11/1 開始降價:「What Can I Say? Another Amazon S3 Price Reduction!」。\r\n\r\n包括 Standard storage 與 Reduced Redundancy storage 都一併降價,其中 Reduced Redundancy storage 是依照 Standard storage 的 2/3 價錢計算。不知道是不是跟 EdgeCast 最近在測試 Cloud Storage 有關?", + "title": "AWS S3 儲存空間降價" + }, + { + "id": "2334", + "body": "印象中 Android 字型是 Open Source License,查了一下發現也是以 Apache License, Version 2.0 放出來的:「Droid Fonts from Ascender Corporation」。\r\n\r\nbcse 寫的「How to get the latest Droid font family」這篇有比較快的取得方式 (從 repository 裡直接包 snapshot 抓),抓下來丟進 Windows 的字型目錄裡就可以了。", + "title": "Android 的字型" + }, + { + "id": "2335", + "body": "AWS CloudFront 支援非 S3 的 Origin Server 了:「Amazon CloudFront Support for Custom Origins」。\r\n\r\n這樣等於直接與現有 CDN 市場競爭,使用者可以用 EdgeCastCloud Storage 或是自己的 Origin Server,甚至是用 GitHub 直接當 Origin Server,晚點再來玩...\r\n\r\n另外也從 Beta 畢業成為正式的服務,並正式提供 99.9% 的 SLA:「Amazon CloudFront - Production Status and an SLA」。", + "title": "AWS CloudFront 支援 Non-S3 Origin 了!" + }, + { + "id": "2336", + "body": "在 OSnews 上看到 clang 2.8 與其他幾個 compiler 的比較:「Compiler Benchmarks of GCC, LLVM-GCC, DragonEgg, Clang」。\r\n\r\n以測試結果來說,如果改用 Clang,有些會變得比較快,但也有些變得比較差。不過以 license 以及後勁來看,還蠻看好發展的。六月的時候在 FreeBSD 的 -HEAD 裡面變成 default compiler,預定 9.0-RELEASE 會是 FreeBSD 上第一個用 clang 的版本... (感謝 lwhsu 戳中)", + "title": "clang 的進展..." + }, + { + "id": "2340", + "body": "突然發現忘記寫了...\r\n\r\n九月的時候 PIXNET 公告了「快捷功能BAR」的功能:「[公告] 快捷功能BAR陪你遨遊痞客邦!」。類似的功能在 DiggFacebook 都失敗過,還是會有人想要去嘗試...\r\n\r\n如果有在 Firefox 上安裝 Adblock Plus 的人,在裡面加上「###toolbar-box」即可,表示擋掉頁面上 id=\"toolbar-box\" 的元素。其他的瀏覽器 (像是 Google Chrome) 我很少用,有知道的人麻煩留個言吧...", + "title": "擋掉全 PIXNET 的 Toolbar" + }, + { + "id": "2341", + "body": "露天拍賣的圖片是等到有用到時才會讀進來,這其實對於用 tab 用習慣的我不太方便,因為我會在搜尋頁一次開完,然後一個一個看。這樣的好處是不需要等讀片讀入的時間...\r\n\r\n我只在 Firefox + Greasemonkey 上測試過,不過因為程式很簡單 (只有一行),理論上在 Google Chrome 上應該也可以用。\r\n\r\n程式在「Ruten Images Autoloader」,請測試給意見囉...", + "title": "露天拍賣的圖片自動展開程式 (Firefox、Google Chrome、Greasemonkey)" + }, + { + "id": "2342", + "body": "這幾天 CDN 市場裡比較大的新聞之一,從這篇開始:「Akamai To Lose Netflix As A Customer, Level 3 and Limelight Pick Up The Business」。\r\n\r\n另外的後續報導是:\r\n\r\nNetflix 以前以 DVD 租用服務為主,在推出 Video Streaming 後其實可以節省很多成本 (如果以郵寄的成本與 bandwidth 的成本比較起來),而且會是未來的趨勢,所以在 CDN 這塊不僅靠著量大成為重量級客戶,還是很重要的「指標性客戶」。這次傳言因為效能因素從 Akamai 換成 Level 3 絕對是震撼彈,對於所有 CDN 的品牌迷思會是很重要的革新。\r\n\r\n我相信 Level 3 最近不斷公告增加美加地區的 PoP 承載能力應該跟這筆合約有關,而且我也相信 Level 3 應該有能力吃下 Netflix 的量...。", + "title": "Netflix 拋棄 Akamai CDN,改以 Level 3 CDN 為主力" + }, + { + "id": "2343", + "body": "在「gzip support for Amazon Web Services CloudFront」這篇提到了要如何用 CloudFront 的 Custom Origin 實做標準 deflate/gzip。\r\n\r\n之前 CloudFront 就有支援 Vary header,雖然只支援 Accept-Encoding,但這就是我們要的:(Appendix: Custom Origins)\r\n
The only acceptable value for the Vary header is Accept-Encoding.
\r\n本來 S3 沒有能力依據 Accept-Encoding 送出不同的結果,這次有了 Custom Origin 出來以後掛個有能力 gzip-on-the-fly 的 Web Server 就可以做到了,檔案也不一定要放到 S3 上 (可以放 EBS)。\r\n\r\n基本上這個功能可以用現有的外部機器做 (因為 CloudFront 連到 Origin 的量應該不大),或是 EC2 的 micro instance 應該也夠用了...", + "title": "利用 AWS CloudFront 的 Custom Origin 實做標準 deflate/gzip 壓縮" + }, + { + "id": "2344", + "body": "John ResigTwitter 上提到 UglifyJS 還可以對 .min.js 版本再壓 700bytes:\r\n
It seems like the UglifyJS minifier shaves about 700B off the gzipped size of jQuery. Will explore more, already impressed.
\r\n號稱比 YUI Compressor 更強大,比 Google Closure Compiler 更穩定...\r\n\r\n用 node.js 寫的,以 JS 壓縮 JS 的程式...", + "title": "UglifyJS - 更強大的 JS Compressor" + }, + { + "id": "2346", + "body": "Coro 用起來不太順,於是跑到 freenode 的 #perl.tw 上問 Coro 是不是能用的東西,結果 clkao 建議了 AnyEvent,用了感覺反而比 Coro 順手,大概是因為平常對 event-based 的東西還算習慣吧...\r\n\r\n與「Perl 的 Threading 實做:Coro」這篇同樣的東西,改用 AnyEvent + EV 寫:\r\n", + "title": "Perl 的 AnyEvent + EV" + }, + { + "id": "2347", + "body": "在 TechCrunch 看到一個全新的嘗試,用程式 (機器人) 自動寫運動新聞:「Automated News Comes To Sports Coverage Via StatSheet」,網站是「StatSheet Network: Team-centric news, stats, analysis for college basketball」。\r\n\r\n其實可讀性還不算差耶?如果要保持中立性,這類型的新聞就是調出之前的資料合併成一篇?", + "title": "用程式 (機器人) 自動寫運動新聞" + }, + { + "id": "2348", + "body": "在 Slashdot 上看到的,「耳紋」比「指紋」精確?:「Ears Might Be Better Than Fingerprints For ID」。\r\n\r\n不知道檢查的多深入,如果只是表面的話,本來砍手指的變成砍耳朵?XD", + "title": "本來砍手指,以後改砍耳朵了?" + }, + { + "id": "2349", + "body": "使用 HTML::Tree 時因為有 circular reference,會要求你要使用 ->delete() 告知 object 打斷 reference 以避免 memory leak。於是就得很小心寫,要注意每個步驟以免某些狀況下忘記 ->delete() 而造成 leak:\r\n
my $html = HTML::TreeBuilder->new_from_content($body);\r\nforeach my $element ($html->look_down('a', qr{某個 RE 條件})) {\r\n    if (符合某個條件) {\r\n        # 做某些事情...\r\n\r\n        $element->delete;\r\n        $html->delete;\r\n        return;\r\n    }\r\n\r\n    # 做某些事情...\r\n    $element->delete;\r\n}\r\n$html->delete;
\r\n後來找到了 Object::Destroyer,利用另外一個 object 的存活幫忙回收,於是就可以簡化成:\r\n
my $html = HTML::TreeBuilder->new_from_content($body);\r\nmy $htmlD = Object::Destroyer->new($html, 'delete');\r\nforeach my $element ($html->look_down('a', qr{某個 RE 條件})) {\r\n    my $elementD = Object::Destroyer->new($element, 'delete');\r\n    if (符合某個條件) {\r\n        return;\r\n    }\r\n    # 做某些事情...\r\n}
\r\n這樣就不會 leak 了...", + "title": "Perl 的 Object::Destroyer" + }, + { + "id": "2351", + "body": "其中一個是 AWS EC2HPC (High Performance Computing) 平台上了 2010 年 11 月 Top 500 的 #231:「AWS Compute Cluster #231 on Top 500」,每個 node 只要 $1.60/hour 與 $2.10/hour (GPU 版本)。\r\n\r\n另外一個是 AWS 通過 ISO 27001:2005 - Information technology -- Security techniques -- Information security management systems -- Requirements:「AWS Receives ISO 27001 Certification」。\r\n\r\n兩件事情都不小,前者會對 Super Computer 帶來一定程度的改變,後者則是給一般人對於 Cloud Computing 的安全印象有所改變 (雖然我覺得 ISO 27001 解決的方向並不太一樣...)。", + "title": "AWS 的幾個進展:EC2 HPC 與 ISO 27001" + }, + { + "id": "2352", + "body": "在 T 客邦的「只要複製貼上,Torrific 免費幫你把 BT 抓到好」這篇文章提到了 Torrific 這個 BitTorrent 代抓服務,我是從還是叫做 btaccel 的時代就看到這個網站,用過幾次以後也沒什麼在用了... (畢竟 rtorrent 用習慣了)\r\n\r\n先說明文章裡提到的「找 torrent 檔的免費空間」的問題要怎麼解決。一般的空間可能會需要帳號密碼,或是無法給一個連結直接下載,這點可以用 Torrage 以及 ZoinkIT 這類專門存放 torrent 檔的站台來放。\r\n\r\n再來談 Torrific 這個站台。這個站目前放在 Slicehost,但更早之前是放在 Hurricane Electric 的機房內,而且以前的 domain 註冊資訊也是 HE (現在是隱藏起來)。如果故意丟一個很少人抓的檔案,然後觀察會有什麼 peer 連上來,也可以看得出來是 HE 機房的 server 連上來代抓...\r\n\r\n這讓我想起以前和信 (現在被遠傳合併了) 跟 HiNet 在吵 peering 以及「帥哥團隊」灌流量的事情了... XD", + "title": "Torrific" + }, + { + "id": "2353", + "body": "英文版維基百科條目:「Bayesian spam filtering」。\r\n\r\n要判斷一個詞 spam 的機率是依照貝式定理:\r\n
\"\"
\r\n這之中每個項目都可以先被計算起來,再來是機率的合併:\r\n
\"\"
\r\n接下來是罕見字以及其他改善精確度的處理。\r\n\r\n其實基本的觀念並不難,當初不知道為什麼一直沒看懂...", + "title": "Bayesian spam filtering" + }, + { + "id": "2355", + "body": "很久以前只知道用 h2xs 產生 Perl 的模組架構,後來被推薦可以用 Module::Starter 產生... (忘記是誰推薦的,找 irc 紀錄沒翻到)\r\n\r\n這幾天要用,在 SlideShare 上面找到「Packaging Perl Modules」這份投影片,雖然是 2007 年的投影片,但還是相當實際...\r\n\r\n在裝好 Module::Starter 後,先建立 ~/.module-starter 目錄並設定 ~/.module-starter/config:\r\n
author: Gea-Suan Lin\r\nemail: gslin@gslin.org\r\nbuilder: Module::Build
\r\n然後就收工了... 要產生模組時用:\r\n
module-starter --module Foo::Bar
\r\n生出來的東西會比 h2xs 簡單不少...\r\n\r\nUpdate:結果是 c9s 提醒了:「@gslin module::setup & ShipIt. would help.」。", + "title": "產生 Perl Module 的工具:Module::Starter" + }, + { + "id": "2357", + "body": "三年多沒寫 Perl module,很多東西雖然有印象,但實際上都是重新學習...\r\n\r\nBrad Fitzpatrick 寫的 ShipIt 配合 Module::Build 超好用的,還可以配合 Git 自動在產生 tarball 時打上 tag...\r\n\r\ncpan-upload 則是可以在 CLI 介面直接上傳到 CPANPAUSE,然後過不久後就可以在 CPAN 上面看到新模組了...\r\n\r\n不過還是不夠熟練,繼續研究吧...", + "title": "ShipIt 與 cpan-upload" + }, + { + "id": "2358", + "body": "這個 extension 真的會讓人噴飯 XDDD\r\n\r\nTechCrunch 介紹了「Jimmy Wales」這個 Google Chrome Extension:「Chrome Extension Lets You Just Add Jimmy Wales」。\r\n\r\nWikipedia 一直拒絕放廣告取得收入 (參考:「An appeal from Wikipedia founder Jimmy Wales」),但相當諷刺的是,每年大概這個時候都會有超煩人的橫幅廣告,請你捐錢給 Wikimedia...\r\n\r\n我有寫一個 Greasemonkey Script 處理這個:「Wikipedia AD remover」。\r\n\r\n這個 Extension 相當機車啊 XDDD (以下是裝上去以後的效果,取自 TechCrunch XDDD)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "處處有廣告!" + }, + { + "id": "2359", + "body": "在「The State of Web Performance Optimization – 2010」這篇文章裡提到了 2010 年的 Web 最佳化統計資料,由於這是 WebPagetest 的統計資訊,裡面有很多有趣的統計資料...\r\n\r\n看起來網頁愈來愈糟糕 XD 像是 Page Size 愈來愈大,Number of Requests 數量變多,Image Compression 的比例反而變少,以及 Combine JS/CSS 的分數愈來愈低,而整體的 Page Load Time 也變高了...\r\n\r\n不過也有不少項目是變好了,主要都是對開發沒有增加難度的... 像是 Keep-Alive 設定、Text Compression (GZip) 以及 Cache Static Content 都可以在 server side 設定一次就解決。人果然是懶惰的,會影響到開發的東西果然都沒什麼進展 XD", + "title": "2010 年的 Web 最佳化統計" + }, + { + "id": "2361", + "body": "Slashdot 上的報導,Comcast 開始限制 (過濾) Level3 對 Comcast 的流量:「Level 3 Shaken Down By Comcast Over Video Streaming」。\r\n\r\n另外 Level3 的新聞稿:「Level 3 Communications Issues Statement Concerning Comcast's Actions」以及 Comcast 的回應稿:「10 Facts About Peering, Comcast and Level 3」。\r\n\r\n很擺明 Comcast 就是衝著 Level3 拿下 Netflix 的合約而來的 (參考「Netflix 拋棄 Akamai CDN,改以 Level 3 CDN 為主力」),在評論「Comcast Says Their Dispute With Level 3 Is \"Not About Online Video\" - Yeah Right」也是對 Comcast 的說法不以為然。\r\n\r\n剛好在 12/21 FCC 才要對網路中立性投票:「FCC To Vote On Net Neutrality On December 21」,這則新聞看起來真是...", + "title": "Comcast 開始限制 Level3 的流量..." + }, + { + "id": "2363", + "body": "用過後才知道這兩個東西搭起來超方便 XD\r\n\r\n首先是 App::cpanminus (一般會稱呼他可執行檔的檔名「cpanm」),可以很方便的將軟體裝在自己的目錄下,而不用動到 root 權限。預設的目錄是裝到 ~/perl5/ 下。\r\n\r\n再來是 local::lib,預設的 use local::lib; 就會讓系統使用自己目錄 ~/perl5/ 的 module... (感謝 clkao 的推薦)\r\n\r\n相當好用啊...", + "title": "Perl 中 local::lib 與 App::cpanminus 的搭配..." + }, + { + "id": "2365", + "body": "看起來好像發了很多公告,但實際上都是與監控有關的部份,以及延伸產品:\r\n\r\n總結則是這篇:「New Features for Amazon CloudWatch」。\r\n\r\n比較有用的應該是 Basic Monitoring (5mins 間隔) 免費吧,可以拿來加減看一看...", + "title": "AWS 的監控功能..." + }, + { + "id": "2366", + "body": "參考 Slashdot 的「Wikipedia Pages Now On Amazon — With Product Links」這篇文章。\r\n\r\nAmazon 所產生的 Wikipedia 對應頁面在這:「Main Page - Shopping-enabled Wikipedia Page on Amazon」。\r\n\r\n依照 Wikipedia 的文章授權,是可以這樣做沒錯 (沒有禁止商業使用)。不過 Google 禁止複製別人的重複內容:「Duplicate content」。\r\n\r\n以目前 www.amazon.com/robots.txt 的內容看起來是沒對 /wiki 設限,接下來就來看 Google 會不會認定 Amazon 試著在惡搞 SEO 而列入處罰清單...", + "title": "Amazon「導入」Wikipedia 並加上廣告連結" + }, + { + "id": "2367", + "body": "\"\"\r\n\r\nPubSubHubbub 對於內容提供者 (包括 Blog Platform 或是 Micro Blogging Platform) 已經是很簡單的協定了,不僅可以增加更新速度,還可以降低伺服器 loading,不過國內幾個平台還是沒人支援啊...\r\n\r\n首先是標準規格書:「PubSubHubbub Core 0.3 -- Working Draft」,不過這文件對於要支援 PubSubHubbub 的 content provider 不是很重要,只要把裡面的觀念看懂就好。\r\n\r\nPubSubHubbub 中有三種不同身份,可以用不同的伺服器跑。一個是內容提供者 (Publisher),一個是訂閱者 (Subscriber),另外一個是 Hub。內容提供者在這邊的例子就是 (Micro/) Blog Platform,而訂閱者可以是 Google Reader,Hub 則是中繼角色,目前有 Google 提供的服務可以用,也有 open source 軟體可以自己架。\r\n\r\n第一步,內容提供者在先在 feed 中加入一個或多個 hub 位置,像是這樣:\r\n
<link rel=\"hub\" href=\"http://pubsubhubbub.appspot.com\" />\r\n<link rel=\"hub\" href=\"http://superfeedr.com/hubbub\" />
\r\n第二步,當該 feed 有更新時送出 ping 給 hub,這部份假設用 PerlNet-PubSubHubbub-Publisher 做的話則是:\r\n
my $pub = Net::PubSubHubbub::Publisher->new(hub => 'http://pubsubhubbub.appspot.com');\r\n$pub->publish_update('http://admin.pixnet.net/blog/feed');
\r\n就是這樣子而已!", + "title": "請支援 PubSubHubbub..." + }, + { + "id": "2369", + "body": "這篇不是給完全沒碰過維基百科的初學者入門用的,而是給偶而有在編輯中文版維基百科,但對於社群常用的東西不是很熟的人。\r\n\r\n首先是對人物的部份,常用到 bd 模板,用法可以參考「成吉思汗」條目,範例如下:\r\n
{{bd|1162年||1227年|8月25日}}
\r\n好處是會加上「Category:1162年出生」與「Category:1227年逝世」的分類。如果沒有指定死亡日期則會自動再加上「Category:在世人物」,如果沒有指定生日年份的話則會加上「Category:出生不詳」,算是很基本很好用的模板。\r\n\r\n很多人物都有 Twitter 連結,可以用 Template:Twitter 模板,範例:\r\n
{{Twitter|gslin|Gea-Suan Lin}}
\r\n\r\n再來是中文因為有不同地區造成有不同的名詞,所以有語言轉換模板 Template:NoteTA,這邊要介紹的是「Template:CGroup/list」(需要按下旁邊的「顯示」才會展開),用法如下:\r\n
{{noteTA|G1=IT|G2=Length}}\r\n(表示對「電腦和資訊科技」與「長度單位」名詞轉換)
", + "title": "中文版維基百科 (Wikipedia) 常用模板 (Template)" + }, + { + "id": "2370", + "body": "這篇還是講 mod_fastcgi,而非目前歸到 Apache 下管的 mod_fcgid。\r\n\r\nPHP 5.3 已經內建 php-fpm,不過 ports 預設是不會裝上去的,所以首先先把 lang/php5 加上 php-fpm 支援。方法是 make config 後選擇 FPM。如果有裝 portconf 的人可以直接在 /usr/local/etc/ports.conf 裡加上:\r\n
lang/php5*: WITH_FPM=yes
\r\n這樣就會強制蓋過系統設定,強制把 php-fpm 裝進去。\r\n\r\n接下來是設定的部份,首先是 php-fpm 的設定,這篇的文章只教預設值,會跑在 127.0.0.1:9000。所以只要在 /etc/rc.conf.local 內設定 php_fpm_enable=\"YES\",然後跑 /usr/local/etc/rc.d/php-fpm start 就把 php-fpm 跑起來了。\r\n\r\n然後是 apache 的設定,有好幾條要設:\r\n
LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so\r\nFastCgiConfig -maxClassProcesses 1\r\nAddHandler php-fastcgi .php\r\nAction php-fastcgi /php-fpm-handler.fcgi\r\nFastCGIExternalServer /php-fpm-handler -host 127.0.0.1:9000\r\nScriptAlias /php-fpm-handler.fcgi /php-fpm-handler
\r\n我是跑 apache22-worker,上面的設定就可以了...", + "title": "FreeBSD 使用 FastCGI + PHP 5.3 提供的 php-fpm" + }, + { + "id": "2371", + "body": "\"\"\r\n\r\n當有多個 Data Center 的時候就應該要做的事情!Amazon 總算是出手了...\r\n\r\nAmazon 官方的新聞稿在這:「Amazon Route 53 - The AWS Domain Name Service」,CTO Werner Vogels 的介紹在這:「Expanding the Cloud with DNS - Introducing Amazon Route 53」,產品的介紹頁在這:「Amazon Route 53」。\r\n\r\nRoute 53 是利用 Amazon 目前已經有的 Data Center (依照 CloudFront 的名單,看起來是同一組機房),加上 IPv4 Anycast 而提供的 DNS query 服務。以文件裡的範例可以看到使用了四個不同的 domain,分別是 com、net、org 以及 co.uk:\r\n
<NameServer>ns-1638.awsdns-12.co.uk</NameServer>\r\n<NameServer>ns-144.awsdns-18.com</NameServer>\r\n<NameServer>ns-781.awsdns-33.net</NameServer>\r\n<NameServer>ns-1478.awsdns-56.org</NameServer>
\r\n到幾個不同的點 mtr 可以看出來有用 Anycast,只是還需要調整... 另外,依照文件看起來,暫時不提供 slave server,而必須透過提供的 API 直接改,這點是比較麻煩的地方,不知道 Console 什麼時候要提供介面...\r\n\r\n最後來談價錢好了,每個 zone 的基本費用是 USD$1.5/month (包括 1M query/month 的量),一年也才 USD$18/year...\r\n\r\nRoute 53 之所以特別,是因為一般人就算有錢也沒辦法架出像樣的 Anycast-based DNS (這要有錢而且有量才做得到),而之前七月的時候 Cotendo 給的 quote 讓我連回信都懶得回 (雙方認知差距太大),我記得價錢好像多了好多 0...\r\n\r\n這項服務會給自認 Anycast-based DNS 是「加值服務」而撈錢的公司一記重擊... 尤其大家都知道 Amazon Web Services 的東西出來後還是會花時間 tune,服務水準會不斷改善,比起其他公司來的穩定多了...", + "title": "Amazon Web Services 新服務:Route 53" + }, + { + "id": "2374", + "body": "Amazon Web ServicesS3 將單檔大小從 5GB 拉高至 5TB:「Amazon S3 - Object Size Limit Now 5 TB」,這是因為先前提供了 Multipart Upload 的功能 (也就是將大檔拆成小部份後分批上傳) 才有辦法提昇限制...\r\n\r\n\"\"\r\n\r\n雖然 split 本來就是很成熟的技術,不過把檔案單一大小拉高後總是方便不少...", + "title": "Amazon Web Services 的 S3 將單檔限制大小從 5GB 拉高至 5TB..." + }, + { + "id": "2375", + "body": "Automattic 就是 WordPress.com 背後營運的公司,訪談的部份內容在這邊:「Automattic Hits 300 Million Unique Visitors, Roughly $10 Million In Revenue」。\r\n\r\n目前 Automattic 有 74 個人,而 TechCrunch 從「可靠的來源」知道每個月收入大約是 USD$1M,大多數都是從付費服務而來,目前已經 break-even。\r\n\r\n文章的最後一個問題還蠻好玩的 XD\r\n
What’s the exit potential for Automattic?\r\nOur goal’s not to be acquired.
", + "title": "Automattic (WordPress.com) 的訪談" + }, + { + "id": "2377", + "body": "目前 Route 53 還沒有 AWS Console 可以用,必須自己寫 API 呼叫,或是透過比較信任的 3rd-party website 更新。\r\n\r\n比較早出現的是 DNS 30,背後其實就是 Bucket ExplorerSDB Explorer 的公司,介面簡單而且容易懂。由於宣稱不會將 secret key 存起來,所以每次登入後都要輸入 access key 與 secret key...\r\n\r\n另外一個是 Ylastic,這家公司前幾天也宣佈支援 Route 53 了:「AWS Route 53 DNS Management」,他們所提供的 Screenshot 看起來也還蠻簡單易懂的:\r\n\r\n\"\"\r\n\r\n不過我不確定 Ylastic 提供的 Route 53 服務是否免費,有興趣的可以去試看看...", + "title": "Route 53 的幾個網頁操作介面" + }, + { + "id": "2378", + "body": "從 ihower 的 Twitter 上看到的,看起來相當好用的東西:「Head JS :: The only script in your HEAD」,官方網站的程式碼就相當容易懂了,這邊就不再列出範例了...\r\n\r\n由於以往要作到類似效果並不太容易 (okay,我知道某 library 可以做,但... *消音*),Head JS 的出現以及好用的程度 (容易上手),可以使得網站大幅提昇頁面讀取速度。\r\n\r\n手上舊的 project 可能就放著吧,但新的 project 應該會用...", + "title": "Head JS:非同步讀取 script 並且依照相依性執行" + }, + { + "id": "2379", + "body": "感謝 #perl.tw 上的幫助,總算是找到方法將 Tatsumaki 跑起來,而且把該拆開的地方拆開...\r\n\r\n這是 app.psgi:\r\n
use Controller::Main;\r\nuse Tatsumaki::Application;\r\nuse strict;\r\nuse warnings;\r\n\r\nTatsumaki::Application->new([\r\n    '/' => 'Controller::Main',\r\n]);
\r\n這是 Controller/Main.pm:\r\n
package Controller::Main;\r\n\r\nuse parent qw/Tatsumaki::Handler/;\r\nuse strict;\r\nuse warnings;\r\n\r\nsub get {\r\n    my $self = shift;\r\n    $self->write('It is Main Controller.');\r\n}
\r\n然後直接用 twiggy 不加參數就可以跑起來..", + "title": "Tatsumaki 與 Twiggy 的搭配..." + }, + { + "id": "2382", + "body": "因為對 FreeBSD 還算熟悉,所以在 FreeBSD 上遇到 Ports 內沒有的 CPAN module,我會做一個新的 port 出來 send-pr,但對於 Debian 的熟悉度沒有 FreeBSD 高,想了老半天想不到什麼好方法,在 #perl.tw 上問了這個問題,不過還是沒有滿意的答案...\r\n\r\n然後想到,在 Stack Overflow 上面說不定有人問過,丟一些關鍵字後有兩筆相關討論可以參考:(至少是可行的解法)\r\n\r\n有人是建議自己 compile 一個 Perl 出來裝到 /usr/local 下 (於是就可以惡搞到底),有的人則是建議用 dh-make-perl 做 .deb 出來用,但還是會有很多問題...\r\n\r\n再想看看好了,真麻煩...", + "title": "在 Debian 上使用 CPAN 時要如何與系統的 lib*-perl 合作..." + }, + { + "id": "2384", + "body": "不需要其他的說明:\r\n\r\n\"\"\r\n\r\n從「No, It’s Not A Facebook Profile. It’s Picasso (well, almost).」看到的。", + "title": "Facebook Profile?" + }, + { + "id": "2385", + "body": "也是篇不需要說明的圖片:\r\n\r\n\"\"\r\n\r\n從 TechCrunch 的「Connecting Facebook’s Dots」看到的。", + "title": "Facebook 登入畫面..." + }, + { + "id": "2386", + "body": "Percona 前天推出的 Percona Server 5.1.52-12.3 宣佈支援 HandlerSocket,在 InnoDB 的基礎上面提供 memcached 等級的效能... (不過還不曉得在碰到 I/O 時會掉多少)\r\n\r\nHandlerSocket 拿 InnoDB 當作 Key-Value store 的底層,需要的時候還可以透過上層的 SQL 存取,然後 Percona 也跳下去,因為現有的資料庫就可以拿來用,可以預期會有很多人跳下去玩...", + "title": "Percona Server 支援 HandlerSocket" + }, + { + "id": "2388", + "body": "Oracle 的公告:「MySQL 5.5 is GA!」,以及 Oracle 的新聞稿:「MySQL 5.5 Now Generally Available」。\r\n\r\nMySQL 5.5 比起之前的版本,除了 InnoDB 的改善以外,最重要的是 Semi-Replication 成為內建功能,這個功能使得需要 Read-after-write consistency 的 query 可以不用強制綁在 master 上做...\r\n\r\n對於開發者,MySQL 5.5 把本來用的 autotools 換成 CMake 了:「MySQL 5.5: CMake replaces autoconf/automake on all platforms, support for autotools has now been removed」。\r\n\r\n接下來就等 Percona 出對應的版本了...", + "title": "MySQL 5.5 GA (General Availibility)!" + }, + { + "id": "2389", + "body": "又是一個邪惡的功能,直接把 VMwareVMDK 檔丟上 AWS EC2 上跑:「VM Import - Bring Your VMware Images to The Cloud」。\r\n\r\n這個服務不另外收費,僅就 S3EBS 與 data transfer 的費用收費而已,不過公告裡提到目前只支援 Windows Server 2008 SP2:\r\n
You can start importing 32 and 64 bit Windows Server 2008 SP2 images right now (we support the Standard, Enterprise, and Datacenter editions).
", + "title": "VM Import:把 VMware Image 直接丟到 AWS EC2 上面跑..." + }, + { + "id": "2390", + "body": "Amazon Web Services 的官方網誌上提到了 Colin PercivalFreeBSD 9-CURRENT 放到 AWS EC2 上跑:「FreeBSD on Amazon EC2」。他的網誌也提到這件事情了:「Announcing FreeBSD on EC2」,計畫的頁面在:「FreeBSD on EC2 status」。\r\n\r\n花了幾個小時玩,發現用 t1.micro 跑 9-CURRENT 的速度真是太慢了。就算考慮到 9-CURRENT 裡面有很多 debugging code,不過這個速度實在沒辦法測什麼東西... 在乾淨的系統裡編 mtr (WITHOUT_X11=yes) 編一個小時編不完啊 XD\r\n\r\n等 backport 回 8-STABLE 後再來玩一次看看吧...", + "title": "在 AWS EC2 上跑 FreeBSD" + }, + { + "id": "2391", + "body": "如圖 XD\r\n\r\n\"\"\r\n\r\n在 Ptt2 pangfeng 板上看到的 (其實 pangfeng 板上那篇也是一路轉過去的),關於他手上拿的那張紙,參考「莫比烏斯帶」的說明 XD", + "title": "只能帶一面大抄的時候..." + }, + { + "id": "2392", + "body": "睡醒就看到讓人頭痛的新聞... 幾個連結:\r\n\r\nUpdate:補個當時沒抓到的圖:(from Yahoo Killing Or Merging Del.icio.us, Yahoo Buzz, People Search And More)\r\n\r\n\"\"\r\n\r\nEvernote 貼出了一篇如何從 Delicious 轉移到 Evernote 的公告:「Making the transition from Delicious to Evernote」,不過這是以目前現有的 Import 功能做的,有些人在 comment 有反應能不能特地為 Delicious 做一個特別版的 import...\r\n\r\n這幾天應該會有更多 export/import 程式出來,要換平台的人倒是可以等一下...\r\n\r\nWTF...", + "title": "Yahoo! 要關閉 Delicious" + }, + { + "id": "2394", + "body": "Stack Exchangedata.stackexchange.com 公開了所有旗下站台的統計資訊:\r\n\r\n\"\"\r\n\r\n最大的三個果然是 stackoverflowsuperuserserverfault...\r\n\r\n另外在「Stack Overflow 2010 Analytics」則是公佈了訪客的統計資料... (這類型站台的 Firefox 果然遠超過 IE...)", + "title": "Stack Exchange 旗下站台的統計" + }, + { + "id": "2396", + "body": "在反垃圾郵件法案中提到的 Opt-out 是指「預設寄送,使用者可以選擇退出」,而 Opt-in 則是「預設不可以寄送,必須由使用者選擇加入」。這兩者最大的差異在於,Opt-out 後發信人就會知道這個信箱有人在看信,於是就把名單轉到境外發...\r\n\r\n所以加拿大的法律從 Opt-out 改為 Opt-in 是很重要的進展:「Canada has An Opt-in Régime and a new Anti-spam Law」。\r\n\r\n隔壁的美國到底要不要改呢...", + "title": "加拿大的反垃圾郵件法案由 Opt-out 改成 Opt-in" + }, + { + "id": "2397", + "body": "「Does PNG work everywhere?」這篇文章把 PNG 的現況整理成表格,並且附上不少圖片範例可以看。表格包括在處理圖片常用的 Photoshop 軟體,以及常見的問題瀏覽器 IE 各版本。\r\n\r\n如果不牽扯到 Gamma correctionICC profileMozilla FirefoxSafari (包括行動版本) 以及 Opera 對於不同格式的 PNG 都沒有什麼問題... 就這部份的結論是,IE6 只能用最基本的 PNG 格式,但如果同意讓 IE6 看到比較差的效果 (不是看不到),不少格式可以用。\r\n\r\n另外作者也不斷地再推廣使用 PNG 最佳化程式處理 PNG 檔,以節省空間。文章後面的 Troubleshooting 以及 Summary 章節很值得仔細看過一次,在腦袋裡面留下印象...", + "title": "PNG 現況整理..." + }, + { + "id": "2398", + "body": "\"\"\r\n\r\nUptime 的圖片資料出自「Performance Charts and Statistics for www.bestbuy.com」,文章可以參考「BestBuy.com hits problems in run up to Christmas」。\r\n\r\n這是怎樣... 居然可以從 21 號就開始爛,我記得 21 號還沒開始放假吧?", + "title": "被擊沉的 BestBuy..." + }, + { + "id": "2400", + "body": "一年居然過去了 XD\r\n\r\n之前在 SharkSpace 是用 50offlife 的優惠碼註冊 Hammerhead 方案的,所以價錢是固定的。這一年用起來感覺還算 okay,看了一下 invoice 是 USD$53.7/year,還算 okay 就續租下去了,養兩個 blog 放著...", + "title": "續租 SharkSpace..." + }, + { + "id": "2401", + "body": "Adblock Plus 一直都是 AMO (即 Mozilla Add-Ons,取其網址 addons.mozilla.org 的三個開頭字母) 下載排行榜第一名,除了可以自己設定以外,他好用在可以訂閱別人整理好的清單...\r\n\r\n在 Adblock Plus 官方網站有提供一份列表「Known Adblock Plus subscriptions」,裡面有很多清單列表...\r\n\r\n我個人建議訂閱三個:\r\n", + "title": "推薦 Adblock Plus 的訂閱清單" + }, + { + "id": "2402", + "body": "\"\"\r\n\r\n想在 Twitter 上面丟一些東西,結果發現噴掉了 XD\r\n\r\n參考「Site availability issues」這篇的更新狀況,看起來是正在處理中...", + "title": "Twitter 突破天際了..." + }, + { + "id": "2403", + "body": "Colin Percival 前陣子公佈了 EC2 上跑 FreeBSD 9.0-CURRENT 的 ami,當時測試覺得太慢了:「在 AWS EC2 上跑 FreeBSD」,昨天他在 Twitter 上提到把 FreeBSD 8.2-RC1 也 porting 上去了:\r\n
FreeBSD 8.2-RC1 is now available on EC2 as ami-d29b6abb. http://www.daemonology.net/freebsd-on-ec2/ #merrychristmas
\r\n實際測試以後發現 8.2-RC1 還是很慢,跑 portsnap fetch 要等半個小時,跑 portsnap extract 也要再等半個小時,看起來是因為 EBS 的速度太慢?如果是這樣的話就得等非 t1.micro 的版本了 (因為 t1.micro 只能用 EBS 跑)。\r\n\r\n以目前進度來看,8.2-RELEASE 會是第一個支援 EC2 的 production 版本?", + "title": "EC2 上的 FreeBSD 8.2-RC1..." + }, + { + "id": "2404", + "body": "喝下去第一口就有「哇靠,香料是放了多少啊」的感覺... 蓋起來丟回冰箱,哪天有心情喝這種東西的時候再說...\r\n\r\n找不到圖,網路上大多數的圖都是 2000ml 的,而且旁邊有「無香料」的標語 (我喝的 600ml 在「成份」欄有「天然香料」),看起來不是同一批:\r\n\r\n\"\"\r\n\r\n圖片來自「★超值特惠★悅氏黃金烏龍茶(無糖) 2L」這裡。", + "title": "悅氏 黃金烏龍茶 (無糖) 600ml 寶特瓶包裝" + }, + { + "id": "2405", + "body": "如標題,有時候總是有些奇怪的需求,想要用 CGI mode 跑一些東西,然後希望很簡單,最好不要動到系統設定,可以在不需要後完全不吃系統資源...\r\n\r\nPlack 剛好提供了 Plack::App::CGIBin,可以接受 HTTP request 並丟給下面的程式...\r\n\r\n跑起來的方式超簡單:\r\n
env -i /usr/local/bin/plackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => \"/path\")->to_app'
\r\n這樣會把 /path 下的東西當作 CGI script 跑...\r\n\r\n不過 PHP 跑 CGI mode 超麻煩,並不是直接加上 #!/usr/bin/php-cgi 就能夠解決的,還沒找到要怎麼處理... (天曉得哪個環境變數又出問題了)", + "title": "用 Plack 跑 CGI" + }, + { + "id": "2407", + "body": "在「用 Plack 跑 CGI」提到用 Plack 跑 CGI,目的是把 PHP 寫的 Adminer (一個取代 phpMyAdmin 的工具) 跑起來。\r\n\r\n文章裡提到 PHP 沒辦法以 CGI mode 執行,主要有兩個原因。一個是 PHP 本身有安全機制,php-cgi 必須在有 REDIRECT_STATUS 這個環境變數下才能執行,另外一個是 php-cgi 需要用到 SCRIPT_FILENAME 這個非 CGI/1.1 標準 (RFC 3875 - The Common Gateway Interface (CGI) Version 1.1) 的環境變數。\r\n\r\n由於我只打算跑 Adminer,而 Adminer 的程式都放在同一個檔案裡,所以可以把這兩個環境變數設死惡搞:\r\n
env -i REDIRECT_STATUS= SCRIPT_FILENAME=/path/adminer.php /usr/local/bin/plackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => \"/path\")->to_app'
\r\n這樣就跑起來了...", + "title": "用 Plack 提供的 CGI 跑 Adminer..." + }, + { + "id": "2408", + "body": "在 12/27 就有網站先公佈了 2010 年的 BitTorrent Zeitgeist:「BitTorrent Zeitgeist: What People Searched For in 2010」。\r\n\r\n「2010」名列前茅並不意外,倒是「inception」(全面啟動) 與「iron man 2」(鋼鐵人2) 這兩部作品居然這麼紅,可以直接幹掉「2010」 XD\r\n\r\n另外那個「xxx」是怎樣 XDDD", + "title": "2010 年的 BitTorrent Zeitgeist" + }, + { + "id": "2409", + "body": "台灣的 Perl Planet 又再次啟動了:「Planet Perl.TW」。\r\n\r\n有在寫 Perl 相關文章的可以找 c9s 加入你的 feed...", + "title": "台灣 Perl Planet" + }, + { + "id": "2410", + "body": "中國早在 2006 年年底就提出來的主意 (手機充電器與傳輸線的標準化),歐盟在 2011 年正式實施了 (不過要到 2012 年才有強制禁賣):「Micro-USB Cellphone Charger Becomes EU Standard」。\r\n\r\n即使美國一直不跟進,手機廠商也應該會使用單一介面,畢竟 Micro USB 不算奇怪的介面,而且歐盟國家的市場也算夠大...", + "title": "歐盟強制使用 Micro USB 做為手機充電介面" + }, + { + "id": "2412", + "body": "如標題,StatCounter 統計資料顯示 Firefox 在歐洲的市占率首次超越 IE:「Firefox overtakes Internet Explorer in Europe in browser wars」。\r\n\r\n不過由圖可以看出來,並不是 Firefox 這一年有顯著成長而超越 IE,而是 Google Chrome 在這一年吃掉 IE 下滑的部份。\r\n\r\n同樣以 StatCounter 的資料來看,台灣的 IE 佔有率在 77% 左右,Google Chrome 的市占率應該會在這半年內超越 Firefox。好事是 IE6 的佔有率愈來愈低了,目前是 17% 左右,而且有機會在這半年內降到 10% 附近... 2012 年設計網頁應該可以忽略這個古董了...", + "title": "Firefox 在歐洲的市占率首次超越 IE" + }, + { + "id": "2413", + "body": "在 Quora 上有人提問 Amazon 為什麼會作雲端計算,也就是「Amazon Web Services」這項服務:「How and why did Amazon get into the cloud computing business?」。\r\n\r\n然後大魚就上鉤了,Amazon 的技術長 Werner Vogels 親自回答這個問題... 後面那段提到了本來沒有預期會有這麼大的量,而 AWS 所使用的量在公開兩個月後就超過 Amazon.com 本身,於是雲端神話就此開始...", + "title": "Amazon Web Services 成長的一些故事..." + }, + { + "id": "2414", + "body": "看到 Local maxima 這個詞還真懷念:「Local maxima and the perils of data-driven design」。\r\n\r\n\"\"\r\n\r\n這篇文章在講改善網頁時的態度。你可以用科學方法 (像是 A/B testing) 測試不同的小細節以達到 local maxima,但如果要有更重大的突破則必須靠結構性的改變。然後拿了 Facebook 在 2007 與 2008 年的網頁當作失敗案例...\r\n\r\n雖然概念很久前就有,但用「Local Maxima」這個詞彙來表示是以前沒想過的,現在看到倒是覺得相當適合 XD", + "title": "改善網頁的態度問題" + }, + { + "id": "2415", + "body": "利用 BitTorrent 的 tracker 設計攻擊網站:「BotTorrent? Using BitTorrent as a DDoS Tool」。\r\n\r\n文章裡提到 torrent 檔裡面有一個欄位是放 tracker 資訊,當這個 torrent 檔下載的人很多的時候,使用者嘗試連 tracker 的行為就會變成 DDoS 攻擊。同理,由於 Magnet URI 可以帶 tracker 資訊,也可以作同樣的事情...\r\n\r\n不過這個方法感覺不太有效率... XD", + "title": "利用 BitTorrent 的設計攻擊網站..." + }, + { + "id": "2416", + "body": "在 HN (Hacker News) 上看到的分析資料 (文章是 ReadWriteWeb 的):「The Services Used By Y Combinator Startups [Infographic]」,文章裡面分析了 Y Combinator「旗下」的 startup 所使用的服務。\r\n\r\n統計資料在「Y Combinator」這邊,另外有「Quantcast Top 100」的資料也可以看看,這邊就不提 Quantcast Top 100 的情況了。\r\n\r\n網站主機的部份,可以看到是 Amazon Web ServicesRackspace Cloud 兩家雲端服務最大,如果把同屬於 Rackspace 下的 Slicehost 一起併進去算的話就幾乎相同了。不過自己 hosting 的部份也不少...\r\n\r\nE-mail 服務的部份以 Google Apps 過半,接下來就是自己 hosting。畢竟 Gmail 真的太好用...\r\n\r\nDNS hosting 的部份最大一塊是自己 hosting,而 GoDaddy 有一定的比率倒是沒什麼意外... 而 DNS registrar 的部份當然是 GoDaddy 過半 XD\r\n\r\n接近一半的 startup 沒有 SSL,如果有的大多數也都是跟 GoDaddy 買。然後有不少人是買 Wildcard SSL Certificate...\r\n\r\n不過還是要講,重點在於挑自己熟悉而且穩定的技術,並不是用了雲端就什麼都不用學。", + "title": "分析 Y Combinator 的 Startup 所使用的服務..." + }, + { + "id": "2417", + "body": "透過台灣微軟的幫忙,一個月前拿到了一組 Windows Azure Platform 的帳號測試,來寫一下感想好了。\r\n\r\n在管理介面時會被提醒需要安裝 Sliverlight。沒有 Silverlight 的只能使用基本介面,同時也在登入時說明 2011 年初會把舊介面關閉:\r\n\r\n\"\"\r\n\r\n抱歉,即使活動辦得很精彩,我還是沒興趣裝 Silverlight... 所以下面的測試都還是以基本版的測試為主。\r\n\r\n能看的文件不多,而且要在登入後才能看 Help and Resources (這是 non-Silverlight 版本)\r\n\r\n抓了 VSCloudServiceHelp.chm 後,打開來發現只有標題能看,每個章節都看不到內容:\r\n\r\n\"\"\r\n\r\n實在是測不下去,收工...", + "title": "Windows Azure Platform 平台,其中 CDN 的部份的測試..." + }, + { + "id": "2418", + "body": "用 Net::OpenID::ConsumerGoogleOpenID 登入時一直讀不到,trace 後找到問題出在 args:\r\n
my $csr = Net::OpenID::Consumer->new(\r\n    ua => LWPx::ParanoidAgent->new,\r\n    args => sub { $self->request->query_parameters->{shift} },\r\n    consumer_secret => 'some random string',\r\n    required_root => 'http://example.com/'\r\n);
\r\n在 vim 裡面突然看到 shift 顏色不太對,才突然想到,是不是 Perl 把「shift」當作是一個字串?\r\n\r\n果然改成 shift() 就都正常了...\r\n\r\nPS:用 Tatsumaki 拆 Controller 的部份還不錯...", + "title": "Perl Hash..." + }, + { + "id": "2420", + "body": "GoogleOpenID 服務有提供 OpenID Attribute Exchange 1.0 (參考「Federated Login for Google Account Users」這個網頁), 測了一陣子才知道要怎麼透過 PerlNet::OpenID::Consumer 取得資料:\r\n
my $csr = Net::OpenID::Consumer->new(\r\n    ua => LWPx::ParanoidAgent->new,\r\n    args => {},\r\n    consumer_secret => 'secret',\r\n    required_root => 'http://.../',\r\n    minimum_version => 2\r\n);\r\n\r\nmy $claimed_identity = $csr->claimed_identity('https://www.google.com/accounts/o8/id');\r\n\r\n$claimed_identity->set_extension_args(\r\n    'http://openid.net/srv/ax/1.0',\r\n    {\r\n        mode => 'fetch_request',\r\n        required => 'email',\r\n        'type.email' => 'http://axschema.org/contact/email',\r\n    }\r\n);\r\n\r\nmy $check_url = $claimed_identity->check_url(\r\n    delayed_return => 1,\r\n    return_to => 'http://.../...',\r\n    trust_root => 'http://.../'\r\n);\r\n\r\nsay $check_url;
\r\n之前會試不出來,主要是卡在 type.email 忘記加,加上去的時候又打成 email...", + "title": "用 Net::OpenID::Consumer 取得 Google 的帳戶資料" + }, + { + "id": "2422", + "body": "oEmbed 是個從 2008 年就被提出來的格式了,給一個 url (像是 http://www.flickr.com/photos/bees/2341623661/),他會產生像這樣的輸出內容:\r\n\r\n如果是 YouTube,則會產生像這樣的內容:\r\n\r\n東西看起來並不難,不過支援的人還是不夠多?(不過 YouTube 與 Flickr 這兩個大的倒是都支援了...)", + "title": "oEmbed" + }, + { + "id": "2423", + "body": "\"\"\r\n\r\nAMBER Alert (中文:安珀警戒) 把發佈的媒體擴展到網際網路上,與 Facebook 合作:「AMBER Alert Partners With Facebook」。\r\n\r\n不過 Twitter 應該會比較適合,Facebook 先談到也不差就是了...", + "title": "AMBER Alert 與 Facebook 合作..." + }, + { + "id": "2424", + "body": "在「PHP Fog Raises $1.8 Million To Be The Heroku Of PHP」裡面提到兩家:PHP FogcloudControl。\r\n\r\n兩者都是以 PHP 為底層語言基礎的平台。其中 PHP Fog 還沒開張,而 cloudControl 已經開張了,以歐洲的 EC2 為底層。\r\n\r\n不過 cloudControl 選用 Bazaar 為版本管理系統,這點不知道是什麼考量... (PHP 是用 Subversion)", + "title": "PHP 的 Heroku" + }, + { + "id": "2426", + "body": "Google 改變了 Google Apps 對 Uptime 的計算方式:「Google Apps Removes Scheduled Downtime Clause From SLA; Gmail Had 99% Uptime in 2010」(TC)、「Destination: Dial Tone -- Getting Google Apps to 99.99%」(Google 官方新聞稿)。\r\n\r\n之前的條款內允許 Google 將「排定的維護停機」排除在 downtime 計算外,現在 Google 決定拿掉這條例外條款。然後在文章下面故意提到 Microsoft 的服務:\r\n
Comparable data for Microsoft BPOS® is unavailable, though their service notifications show 113 incidents in 2010: 74 unplanned outages, and 33 days with planned downtime.
\r\n有興趣看新版 SLA 的人可以連結到英文版的頁面上:「Google Apps Service Level Agreement」。", + "title": "Google Apps 的 Uptime 計算方式調整 (對使用者有利的方向)" + }, + { + "id": "2428", + "body": "TwitterjQuery 1.4.2 換到 1.4.4 以後,發現在捲頁時的效能變得很差:「About that slowness on Twitter…」。\r\n\r\n這件事情讓 John Resig 在他的 blog 上發表了一篇文章,發現原因在「$something.find(\".class\")」這種用法,成為壓死駱駝的最後一根稻草:「Learning from Twitter」。主要的原因是 querySelectorAll(\".class\") 比起 getElementsByClassName() 慢了一些,而 Twitter 的寫法會使得這個 function 的效能明顯放大到影響整體效能的程度...\r\n\r\n文章以及 comment 有給一些建議 (cache selector 與針對 scroll event 的處理),記起來以後應該會有幫助...", + "title": "jQuery 對效能的調整..." + }, + { + "id": "2429", + "body": "這相當於 Amazon 跳下來自己做 Java 版的 Heroku:「AWS Elastic Beanstalk: A Quick and Simple Way into the Cloud」(CTO Werner Vogels 的文章)、「Introducing AWS Elastic Beanstalk」。將整套 Amazon Web Services 的技術整合起來,變成 PaaS:「AWS Elastic Beanstalk」。\r\n\r\n由於是 Java,所以用 Java 實做的 PHP5 又被拿出來玩了:「PHP on AWS Elastic Beanstalk」:\r\n\r\n\"\"\r\n\r\n在 Google Search 上面可以看到一些站台了:\r\n\r\n\"\"", + "title": "AWS 的 Elastic Beanstalk..." + }, + { + "id": "2431", + "body": "今年 6/8 將會有超大的 IPv6 測試:「World IPv6 Day has Facebook, Google & Yahoo Support」。\r\n\r\n包括 FacebookGoogleYahoo 都會上線測試,另外最大的兩個 CDN 業者 AkamaiLimelight Networks 也都會上線測試。\r\n\r\n雖然沒有說明細節,但猜測這次的 IPv6 測試應該是將 Facebokk 的 www.facebook.com、Google 的 www.google.com,以及 Yahoo 的 www.yahoo.com 直接增加 AAAA record (也一樣保留 A record),然後看看結果如何。而 Akamai 與 Limelight Networks 應該是配合有意願的客戶上線測試。\r\n\r\n以目前看起來,6/8 的測試會是一個「開始」,這次的測試不會有結束的時候,藉機順便轉換到 IPv6 上。剛好借測試的名義打破雞蛋問題。Google 的測試不知道會不會將 YouTube 部份影片丟上來測,這對 IPv6 的轉移會影響很大:如果 IPv6 bandwidth 夠大,就會有更多 ISP 會建立 IPv6 的環境。\r\n\r\n大多數人沒有 native IPv6 環境,多是透過 tunnel 之類的環境使用 IPv6 (尤其是 192.88.99.1 這組 Anycast-based 的 6to4 tunnel)。可以預期到時候會讓使用量衝上去許多...", + "title": "六月的 IPv6 測試..." + }, + { + "id": "2434", + "body": "\"\"\r\n\r\nCipherFox 是無意間亂翻關鍵字找到的 Firefox 套件,主要有兩個用途:\r\n", + "title": "CipherFox" + }, + { + "id": "2435", + "body": "先不論效能之類的問題,mod_fcgidPHP 的設定比 mod_fastcgi 簡單許多。(參考之前寫的「apache22 (worker) + mod_fastcgi + php5-fcgi」這篇文章)\r\n\r\n首先是把 module load 進來:\r\n
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
\r\n再來是把副檔名加上去,以及告知什麼副檔名要用什麼程式包:\r\n
AddHandler fcgid-script .php\r\nFcgidWrapper /usr/local/bin/php-cgi .php
\r\n就這樣而已... 預設會跑一隻 php-cgi,需要的時候會再多拉幾隻。以他的方式看起來 code segment 不會共用,這種設定方式給小站台用還可以...\r\n\r\n接下來看看有沒有辦法在 .htaccess 內直接吃本地的 FastCGI process...", + "title": "mod_fcgid 與 PHP" + }, + { + "id": "2436", + "body": "\"\"\r\n\r\n去 Userscripts.org 翻一些工具,發現有些 script 看起來還蠻有趣的。像是「CPAN Search Dependents」會在搜尋頁列出模組的 dependency 數量。\r\n\r\n不過,用過以後發現他的優點是可以先在搜尋頁看出來有哪些 module,至於 script 本來做的事情 (計算 dependency 的數量) 反而不是重點...\r\n\r\n等下來寫個可以把 Syntax Highlight 加進去的工具,看了一下 CPAN 的頁面,操作這些 DOM element 應該不難...", + "title": "CPAN 的 Greasemonkey 工具..." + }, + { + "id": "2437", + "body": "在「CPAN 的 Greasemonkey 工具…」這邊提到打算寫一個 Greasemonkey script,將 CPAN 上面的 source code 部份加上 syntax highlight,因為有不少現成的 Highlighter 是 javascript-based,所以程式只要套一套就可以了...\r\n\r\nGreasemonkey 的程式在這:「CPAN Syntax Highlight」。\r\n\r\n使用前:\r\n\r\n\"\"\r\n\r\n使用後:\r\n\r\n\"\"", + "title": "將 search.cpan.org 的 source 部份加上 SyntaxHighlighter" + }, + { + "id": "2441", + "body": "Amazon Web Services 有提供很多服務,有的早在「雲端風潮」前就有,有的是最近才推出的。把 AWS Documentation library 每個服務的 API 認證方式看完一遍後,只能苦笑對使用 AWS API 的人致敬...\r\n\r\n有幾個心得與感想:\r\n\r\n這也是為什麼沒有一套 library 可以一直吃遍 AWS 服務的關係,API 的設計讓人感覺頗疲倦... XD", + "title": "AWS API 的認證方式" + }, + { + "id": "2443", + "body": "在 Netflix 官方的網誌上公佈:「Netflix Performance on Top ISP Networks」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n目前 Netflix 有 AkamaiLevel3 兩家 CDN 提供服務 (不確定還有沒有其他的),在最後一段還說要每個月更新這些資料,是打算反過來對 ISP 施壓嗎?:\r\n
We'll update these charts monthly, and we welcome questions, comments and suggestions to help improve our understanding of Netflix performance on top ISP networks.
", + "title": "Netflix 公佈北美 ISP 對 Netflix 的速度..." + }, + { + "id": "2444", + "body": "GitHub 是美國公司,所以會受到 DMCA 的影響,前幾天他們公佈了收到 DMCA Takedown 時的政策與作法:「DMCA Takedown」(話說回來,help.github.com 居然沒有上 HTTPS)。\r\n\r\n然後很有 GitHub 風格的開了一個 repository 來管這些 Takedown Notice (噴茶):「https://github.com/github/dmca」,目前已經看到兩封了,以後應該可以看到很多「範本」。其中一封是 Sony 針對 PS3 破解工具發 Takedown notice:「2011-01-27-sony.markdown」(Slashdot 的報導在「Sony Sends DMCA Takedown Notice To GitHub」)\r\n\r\n另外一個有公開 Takedown notice 的是 The Pirate Bay,參考「Legal threats against The Pirate Bay」,這邊也有很多範本 XD (應該是只刊出大公司的 XD)", + "title": "GitHub 的 DMCA 政策" + }, + { + "id": "2447", + "body": "SNI 是「Server Name Indication」的縮寫,是 SSL Virtual Hosting 中很重要的一塊。\r\n\r\n到目前為止,最主要是卡在 Windows XP 平台的 SSL/TLS 沒有支援,導致使用系統 SSL/TLS Library 的 IE6/7/8 都不支援 SNI。以 gs.statcounter.com 的數據「Top 5 Operating System from Jan 10 to Jan 11」來看,Windows XP 還有 48% 的市占率...\r\n\r\n要等到 Windows XP 的市占率夠低後才有機會看到 SNI CDN...", + "title": "單一 IP/Port 多個 SSL Certificate:SNI" + }, + { + "id": "2450", + "body": "Kaspersky Internet Security 程式碼流出 (可能是某個 beta 期間的):「Kaspersky Source Code In the Wild」,目前的版本是 2011。\r\n\r\n程式碼是 2008 年由某個離職員工 copy 出去,在黑市尋找買家而流出的。雖然是 2008 年的版本,但對於寫惡意程式及病毒的人來說仍然是個重要的資料...", + "title": "Kaspersky Internet Security 程式碼流出" + }, + { + "id": "2451", + "body": "前陣子 IPv4 倒數第六個 /8 被分給 APNIC 後,觸發了 IPv4 最後五個 /8 的分發機制,自動將剩下的五個 /8 分給每個 RIR:「Two /8s allocated to APNIC from IANA」。\r\n\r\nIPv4 全部分配出去後,一般的使用者還感覺不到 IPv4 耗盡的問題,接下來的一至兩個月都還有機會從 RIR 手上申請到 IPv4 address。\r\n\r\n在「IPv6 transition mechanisms」這邊列有各種 IPv4 轉移到 IPv6 時的過渡方案,有一些方案已經有硬體支援。(像是 Juniper 的 NAT64:「Configuring Stateful NAT64 for Handling IPv4 Address Depletion」)", + "title": "IPv4 分配完畢,進入下一階段..." + }, + { + "id": "2452", + "body": "在 Slashdot 上看到「Piracy Boosts Anime Sales, Says Japanese Government Study」,引用自 TorrentFreak 的「Internet Piracy Boosts Anime Sales, Study Concludes」。\r\n\r\n原始的報告可以在「Do Illegal Copies of Movies Reduce the Revenue of Legal Products? The case of TV animation in Japan」(Abstract 是英文,報告本身是日文 PDF)。\r\n\r\n作者分析 YouTubeWinny 這兩個「平台」的數據,試著找出對 DVD 銷售與 DVD 租用的關聯性。而結論是「YouTube 點閱率高的,不會影響 DVD 租用,而且會幫助 DVD 銷售」,而「Winny 會負面影響 DVD 租用,但不會影響 DVD 銷售」。\r\n\r\n但看完報告後,這是標準「數字會說話」與「數字會騙人」的案例。把「DVD 賣得好」的功勞推給「YouTube 的點閱次數高」並不合理,報告的數據只表示了這兩個數字相關。另一個合理的假設是「作品品質夠好,所以 DVD 與 YouTube 點閱次數都提昇」。\r\n\r\n我的感想是,這份報告沒有意義。", + "title": "YouTube/Winny 有助於日本動畫的銷售?" + }, + { + "id": "2453", + "body": "Adobe Reader X (也就是 10) 相較於之前的版本,引入了 Sandbox 的架構。安全性比起之前的版本好很多。\r\n\r\n在 Slashdot 就有提到 Adobe Reader X 釋出以後,對最近的一些惡意 PDF 的抗性高出不少:「Adobe's Reader X Spoils New PDF Attack」。\r\n\r\n另外對於安裝 Adobe Reader X 時需要安裝 DLM 的問題,一般常見的解法是到 Adobe 的 FTP 下載:「ftp://ftp.adobe.com/」。在防火牆內可能會有問題,這時候可以先用 Web FTP 的服務先看到檔名,再用該檔名去 Google 上尋找 ardownload.adobe.com 的官方連結下載。", + "title": "Adobe Reader X 的 Sandbox..." + }, + { + "id": "2454", + "body": "最近很兇的問題...\r\n\r\nRojadirecta (他們的 Twitter 帳號) 是一個西班牙網站,提供運動賽事的 stream 資訊。曾經在西班牙被告侵犯著作權,但站方勝訴。\r\n\r\n美國司法部在未經告知及審判的情況下直接將 rojadirecta.org、rojadirecta.com 劫持:「U.S. Resume Controversial File-Sharing Domain Seizures (Updated)」,除了 Rojadirecta 以外,還有許多與運動相關的網站也被劫持 (在 TorrentFreak 的文章底部有一直更新)。\r\n\r\n現在有參議員對司法部質疑其行為,發信要求司法部解釋他所提出來的問題:「Senator Wyden Asks WTF Is Up With Homeland Security Domain Seizures」。\r\n\r\n繼續看接下來的攻防...", + "title": "美國政府強制介入外國網站合法性問題" + }, + { + "id": "2457", + "body": "整理一下重灌後會裝的字體,以及一些註解。主要是提非 CJKV 的 Monospace 字體部份...\r\n\r\n\"\"
From http://en.wikipedia.org/wiki/File:BitstreamVera.svg\r\n\r\nBitstream Vera FontsGitHub 有用到 Bitstream Vera Sans Mono,找不到時會使用 Courier,在 Windows 上會因為沒有 antialias 而產生鋸齒。\r\n\r\n\"\"
From http://www.levien.com/type/myfonts/inconsolata.html\r\n\r\nInconsolata:我把許多軟體的 Monospace Font 設定都換成這個。目前是 Firefox & VimMonospace 字體。", + "title": "免費的字體..." + }, + { + "id": "2458", + "body": "Firefox 上回收記憶體的套件,目前只有 Windows 平台有支援:「AFOM - Memory Recovery & Retention For Firefox Only」,用了幾個禮拜後發現效果還蠻不錯,也還算穩定... 桌機只有 2GB RAM,還沒打算要升級,先頂著用...\r\n\r\n效果的部份可以參考「AFOM 有效解決 Firefox 記憶體咬住不放的擴充套件」這篇裡的資料。", + "title": "Firefox 省記憶體的套件:AFOM" + }, + { + "id": "2459", + "body": "comScore Data Mine 給的數據:「Share of Display Ad Impressions by Top Publisher Category in 2010」。\r\n\r\n\"%\r\n\r\n跟一般想像的差不多,Social Networking 所佔的比率在增加,入口網站則微幅在減少,其他的變動不大。數據可以參考看看。", + "title": "廣告在各種不同網路媒體所佔的比率..." + }, + { + "id": "2461", + "body": "之前有在其他網站上看到 failover 的技巧,但剛剛才發現 jQuery 官方網站上也用上了類似的技巧,將 Google (ajax.googleapis.com) 與 EdgeCast (code.jquery.com) 的 CDN:\r\n
<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\"></script>\r\n<script>!window.jQuery && document.write('<script src=\"http://code.jquery.com/jquery-1.4.2.min.js\"><\\/script>');</script>
\r\n雖然 jQuery 網站上是放在開頭,但放在 HTML 最後面也有一樣的效果...", + "title": "jQuery CDN failover 的方式..." + }, + { + "id": "2462", + "body": "在 Ubuntu 上系統內建的 Perl 是 5.10.1,而且系統內建的 Perl module 有時會與自己裝的衝到,於是就找了一下要怎麼產生獨立環境的方法... 結果發現 gugod 早就把細節都包好 XD\r\n\r\n首先是用系統的 cpan 安裝 App::perlbrew:\r\n
cpan App::perlbrew
\r\n因為我不打算繼續用之前透過 App::cpanminus (cpanm) 裝的 module,所以我把 ~/perl5 全砍了再跑下一步,也就是初始化 perlbrew 環境:(如果是 csh/tcsh 使用者,記得先下 rehash 清 cache)\r\n
perlbrew init
\r\n然後安裝 Perl 5.12.3:\r\n
perlbrew install perl-5.12.3
\r\n如果安裝失敗的話,可以看 build log。我在 FreeBSD 上遇過 test fail 的情形,可以直接強制安裝,大家就自己看著辦 XD\r\n\r\n接下來是切換過去:\r\n
perlbrew switch perl-5.12.3
\r\n然後把 .cshrc 或是 .bashrc 加上對應的設定:\r\n
source ${HOME}/perl5/perlbrew/etc/cshrc
\r\n或是:\r\n
source ${HOME}/perl5/perlbrew/etc/bashrc
\r\n然後重新登入 (或是執行 source 那串,讓設定檔生效),接下來就可以用 cpan 指令裝 App::cpanminus 了。\r\n\r\n另外,可以參考這些文章:\r\n", + "title": "用 App::perlbrew + App::cpanminus 安裝自己的 Perl 環境" + }, + { + "id": "2463", + "body": "有很多地方都有報導,引官方 Adobe Flash Player Team Blog 的新聞稿好了:「Flash Player 10.2 is Here: Available Now for Windows, Mac, and Linux」。\r\n\r\n新版的 Flash Player 主打「Stage Video」(參考「Getting started with stage video」這篇文章),將 video rendering 的部份丟給顯卡加速。(雖然還是有很多限制)\r\n\r\n不透過 DLM 安裝的方式可以參考「直接安裝 Adobe Flash Player 而不安裝 DLM」這篇。另外要透過 AD 派送的可以到「Download Adobe® Flash® Player」這邊下載 msi 檔。\r\n\r\n以目前的發展來看,Flash 只剩下 Video 這塊功用了...", + "title": "Adobe Flash Player 10.2" + }, + { + "id": "2465", + "body": "從 jQuery 1.5.0 出來以後 (2011/1/31) 沒幾天又準備要出 1.5.1 了,剛剛在官方的公告「jQuery 1.5.1 RC 1 Released」上公佈了 1.5.1 RC 1 的連結 (讓人測試),以及大量的 bugfix 資訊...\r\n\r\n昨天看了幾個報社的網站,發現不少網站都用 jQuery:(看首頁的部份)\r\n\r\n而「自由時報電子報」首頁沒有看到 jQuery...", + "title": "jQuery 1.5.1 RC 1" + }, + { + "id": "2466", + "body": "Mobile Perf bookmarkletJacky 的 Twitter看到的工具,是由 Steve Souders 整理出來的,包括了七個 bookmarklet 工具,執行後就會像這樣:\r\n\r\n\"\"\r\n\r\n拿來分析 performance issue 還不錯...", + "title": "Mobile Perf bookmarklet" + }, + { + "id": "2467", + "body": "跟 Zeroplex 遇到類似的問題 (參考「NCHC for Ubuntu sources.list」這篇),放在台大的 tw.archive.ubuntu.com 常常連不上,所以就換掉 mirror site 了。UbuntuDebian 相同,都是用 APT,所以就是換掉 /etc/apt/ 下面的設定。\r\n\r\nZeroplex 使用的是 http://free.nchc.org.tw/,我則是用 http://ftp.twaren.net/。換完後再 apt-get update 一次就可以了。", + "title": "換 Ubuntu 的 mirror site..." + }, + { + "id": "2468", + "body": "之前寫過一篇「產生 Perl Module 的工具:Module::Starter」是用 Module::Starter 管理,另外再配合其他工具上傳到 CPAN 上。前陣子在 GitHub 上亂逛的時候看到有人 Perl module 裡面只有一個 dist.iniChanges,另外就是 lib/t/,就感覺到應該是我要的東西 XD 花了一些時間測試後發現功能不多,但對於初期應該足夠了,等到熟悉後再跳到功能比較完整的管理軟體...\r\n\r\n首先先用 dzil setup 設定環境,如果有 PAUSE 帳號的話也能夠整合進去。設定完後記得將 ~/.dzil/ 設為 700,裡面的檔案設為 600。\r\n\r\n接下來就是建立模組,像是 dzil new Plack::Middleware::HTMLMinify 這樣的指令。建好後就把 module 寫完,然後設定 dist.ini。(文件上的說明應該夠用)\r\n\r\n接下來可以用 dzil build 編,或是用 dzil test 測試。沒問題之後用 dzil release 上傳到 PAUSE。\r\n\r\n基本的功能大概就這樣...\r\n\r\nUpdatedist.ini 的範例可以在 plack-middleware-htmlminify-perl 的 repository 裡看到。", + "title": "用 Dist::Zilla 管理 Perl Module..." + }, + { + "id": "2469", + "body": "剛剛用手機看自己的 blog 發現版面亂掉,看起來是 CSS 有問題...\r\n\r\n測了一些東西後發現,如果 W3 Total Cache 使用 CloudFront CDN,會使得 WPTouch 失效,拿掉 CDN 的部份就會恢復正常...\r\n\r\n那只好先拿掉了,現在用手機看 blog 的人應該就正常了...", + "title": "Blog 關掉 CloudFront CDN..." + }, + { + "id": "2472", + "body": "Markaplgugod 寫的 Perl module,這是在 miyagawa (宮川達彦) 的 Sunaba 模組上看到的... 以 Perl 的語法建立 HTML。\r\n\r\n目前 CPAN 上面 Markapl 的不是最新版 (0.11),在 GitHub 上的 Markapl 比較新... (據說是作者忘記在 release 0.11 後有 commit 了,在寫這篇文章的時候已經 release 新版,等下應該就會看到了...)\r\n\r\n至於範例... 直接參考 Sunaba 的 View.pm 會比較快。(我故意連到特定版本,避免之後改動架構這個檔案被搬走。目前版本的 View.pm 請點這個連結)\r\n\r\n用 Markapl 除了可以用 Perl 語法外,另外一個「好處」是強迫自己將 css 與 javascript 搬到 template 外面,因為 template 內實在是不好寫... (用「q/.../」?用「<<CSS;」然後「CSS」結尾?gosh XD)\r\n\r\n另外補充一點,範例上都沒有 DOCTYPE,請用「outs_raw('<doctype html>');」加在 html 前即可。", + "title": "Markapl:Markup as Perl" + }, + { + "id": "2474", + "body": "雖然知道 //host.domain/path 這種 Relative Protocol 用法 (而且也用很久了),不過最近在 irc.perl.org 上的 #plack 剛好有人提到,再加上最近剛好有人在探討安全性問題:「Bypassing \"RequestPolicy\" Using Protocol Relative URLs」,剛好可以拿出來再說一次。\r\n\r\n簡單來說就是「以 / 開頭的 URI 並非一定是 same origin,不可以以此當作 same origin 的判斷」。因為「//ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js」這種用法是正確的用法,表示保留 Protocol。\r\n\r\n另外講些題外話,這個用法也還是有缺點,用在 IE 的 css 時會造成重複抓取 (到 IE9 都還是):「CSS files downloaded twice in Internet Explorer with protocol relative URLs」,script 或是 relative path 都不會,只有 css 會...\r\n\r\n反過來說,因為 js 的部份大家都沒問題,所以當使用 Google 提供的 jQuery 時,「永遠」都應該使用「//ajax.googleapis.com/...」,因為 Google Libraries API 是同時支援 HTTP 與 HTTPS 的。", + "title": "Protocol Preserve URI 的過濾" + }, + { + "id": "2475", + "body": "jQuery 的官方 blog 宣佈 1.5.1 正式出版:「jQuery 1.5.1 Released」,除了 bugfix 外,也宣佈要開 1.6 Roadmap Meeting 討論下一個版本要做的事情,預定在 irc.freenode.net 的 #jquery-meeting 上開,時間是 3/7 (時區是 EST)。\r\n\r\n這次 Google CDN 上已經有 1.5.1 版,需要的人可以改過去了...", + "title": "jQuery 1.5.1 釋出" + }, + { + "id": "2479", + "body": "除了一堆人在抱怨以外,其他類似的服務使用量也增加了,像是 Imgur 提供的數據:\r\n\r\n\"\"\r\n\r\n新增圖片的部份,差不多 40% 左右的成長幅度吧?", + "title": "ImageShack 改變外連政策" + }, + { + "id": "2480", + "body": "IE 的 Conditional comments 可以拿來建立對應的 class,可以減少 css 使用 IE hack 的情況 (有些 IE hack 會使得 css 的語法不正確,用工具壓縮後可能會出問題),以 IE6 為例,下面的例子可以把 IE6 與 IE7 分別標上 class=\"ie6\" 或是 class=\"ie7\":\r\n
<!--[if IE 6]><body class=\"ie6\"><![endif]-->\r\n<!--[if IE 7]><body class=\"ie7\"><![endif]-->\r\n<!--[if gt IE 7]><!--><body><!--<![endif]-->
\r\n這個方式不需要 javascript,而且是合法的 HTML (只有 IE 會看懂 comment 內的說明)...", + "title": "用 IE 的 conditional comments 建立 class" + }, + { + "id": "2481", + "body": "{placekitten} 這個站提供 API 產生圖片,讓你在規劃版面的時候會比較方便:\r\n
Like this: http://placekitten.com/200/300\r\nor: http://placekitten.com/g/200/300
\r\n像是這樣:\r\n\"\"\r\n\r\n\"\"\r\n測了幾次,那個 g 應該是指灰階?記得之前有個站是產生純數字的 block image,有誰記得嗎?", + "title": "產生任意大小的貓圖片..." + }, + { + "id": "2485", + "body": "\"AWS\r\n\r\nAWS 公告了對日本的 Support:「Announcing AWS Support in Japanese」,並公告了新增東京的 Region:「Announcing the AWS Asia Pacific (Tokyo) Region」。另外「Amazon Web Services (日本語)」的網頁也同步啟用。\r\n\r\n相較於之前的新加坡 Region,主要是對南亞與印度地區的幫助比較明顯,日本與韓國到新加坡與美西比起來並沒有太大差異。但這次在日本設點後,AWS 在亞洲的強度就好很多...\r\n\r\n品質的部份就要繼續觀察了。另外,不論是頻寬還是租用 EC2 的價位上都比新加坡再貴了一些,不過都還是可以接受的程度,可以觀察日韓兩國的 VPS 被衝擊的狀況...", + "title": "Amazon Web Services 東京!" + }, + { + "id": "2488", + "body": "微軟推出了 IE6 Countdown 網站,希望可以把 IE6 的佔有率壓到 1% 以下。以目前網站上更新的數字,台灣是 10.7%...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n不過上面的數字是以 2011/2/28 的數據產生出來的,這天雖然是星期一,但台灣剛好是國定假日,使用公司電腦的人少很多,這使得使用 IE 的人也少很多 (可以參考 StatCounter 的數據)。如果抓平常日的數字,大約在 14% 上下,超過印度的 12.3%。\r\n\r\nIE6 是 2001 年 8 月 27 日出版,快要滿十年了,不知道有沒有機會在十週年生日前 (七月的報表) 看到他 5% 以下...\r\n\r\n如果可以不用管 IE6 的話,有什麼好處呢?先不論 bug 的問題,光是網頁設計時的 css selector 就多出許多可以用:(圖片來自「CSS selectors and pseudo selectors browser compatibility」)\r\n\r\n\"\"\r\n\"\"\r\n\"\"", + "title": "微軟推出 IE6 Countdown 網站" + }, + { + "id": "2490", + "body": "有人在 Linode 的 forum 上提到 Linode 去申請了 IPv6 位置:「NET6-2600-3C00-1」,一個超大的 /30 耶...\r\n\r\n不過 Linode 的 staff 也出來說,目前還沒有 ETA,請大家再等等... 再等幾個月看看吧?有 native IPv6 總是比較痛快...", + "title": "Linode 總算是去申請 IPv6 位置了..." + }, + { + "id": "2491", + "body": "hashchange 是 HTML5 event,紀錄一下目前支援的情況:\r\n\r\n目前 IE6/IE7 常見的模擬方式是透過 hidden iframe 做類似的效果...\r\n\r\n另外在偵測瀏覽器是否有支援 hashchange 可以利用「Detecting event support without browser sniffing」這篇說明的方式偵測是否有支援特定的 event,可以避免使用 browser sniffing。", + "title": "window 的 hashchange (onhashchange) 事件" + }, + { + "id": "2493", + "body": "Update:這篇內容有問題,請參考「非 root 環境下的 App::perlbrew 與 App::cpanminus」這篇新的說明。\r\n\r\n照 App::perlbrew 的說明,在系統已經有 Perl 的情況下,不需要先用 CPAN 裝 App::perlbrew,可以直接抓 App::perlbrew 的執行檔:\r\n
wget --no-check-certificate http://xrl.us/perlbrew 或是\r\ncurl http://xrl.us/perlbrew > perlbrew
\r\n其中 wget 要加上 --no-check-certificate 是因為檔案實際是放在 GitHub 上,而 GitHub 目前是強制 HTTPS。\r\n\r\n接下來直接執行 perlbrew 相關的指令,通常就是:\r\n
chmod 755 perlbrew\r\n./perlbrew init\r\n./perlbrew install perl-5.12.3\r\n./perlbrew switch perl-5.12.3
\r\n後面的就跟之前提到的一樣了。這樣要建立自己的 Perl 環境就更簡單了...", + "title": "App::perlbrew 另外的裝法" + }, + { + "id": "2494", + "body": "之前是用 Force Content-Type 強制把 application/json 轉成 text/plain 然後直接看原始輸出的 JSON document。但如果遇到 JSON 很長一串的時候 (把空白及換行抽掉),看起來就很麻煩...\r\n\r\nFirefox 上的 JSONView 可以同時處理 application/json 會跳出下載頁,以及排版的問題。以「emma.pixnet.cc/album/elements?set_id=15345490&user=nico」這個 JSON 輸出來說,這樣就好讀很多:\r\n\r\n\"\"\r\n\r\n不過會把 url 轉成可點選連結的功能好像關不掉...", + "title": "用 JSONView 看 JSON 資料..." + }, + { + "id": "2496", + "body": "跟 gugod 討論後發現我之前所寫的方式有問題,所以重寫一篇...\r\n\r\n首先是安裝 App::perlbrew 的方式:\r\n
wget --no-check-certificate http://xrl.us/perlbrew\r\nchmod a+x perlbrew\r\n./perlbrew install\r\n./perlbrew init
\r\n這樣在自己的目錄下就會有 perlbrew 了,接下來是設定環境變數:\r\n
source ~/perl5/perlbrew/etc/cshrc # (for csh/tcsh)\r\nsource ~/perl5/perlbrew/etc/bashrc # (for bash)
\r\n並將自己的 ~/.cshrc 或是 ~/.bashrc 裡加入上面的 source 指令。\r\n\r\n原來下載的 perlbrew 就可以砍掉了,然後把 Perl 5.12.3 的環境建好:\r\n
rm perlbrew\r\nperlbrew install perl-5.12.3\r\nperlbrew switch perl-5.12.3
\r\n接著是用 App::cpanminus (standalone) 安裝 App::cpanminus (套件):\r\n
wget --no-check-certificate -O cpanm http://cpanmin.us/\r\nchmod a+x cpanm\r\n./cpanm -n App::cpanminus
\r\n然後一樣把下載下來的 cpanm 砍掉:\r\n
rm cpanm
\r\n這樣可以在不碰到「CPAN」這個大模組的情況下,把基本的系統裝好...", + "title": "非 root 環境下的 App::perlbrew 與 App::cpanminus" + }, + { + "id": "2498", + "body": "雖然現在跑到台東玩,不過還是趁著在民宿休息的時候來寫一些東西好了...\r\n\r\n剛剛看到 Pinboard 寫了一篇關於去年 12 月時 Yahoo! 內部簡報被流出時 (參考去年寫的「Yahoo! 要關閉 Delicious」) 所帶來的流量,以及對他們的影響:「Anatomy of a Crushing」。\r\n\r\n裡面包括了架構,兩台 DigitalOne 的 server 當作主力,以及一台 ServerBeach 的 server 當作 slave (看起來是順便當作異地備份以及一些雜物服務):\r\n\r\n\"\"\r\n\r\n另外也提到了 MySQL 的 varchar index 的老問題...", + "title": "Pinboard (書籤網站) 被 Yahoo! Sunset 影響的情況..." + }, + { + "id": "2500", + "body": "這是實際用過一堆手機程式後的感想 XD\r\n\r\n不覺得直接在捷運台北車站放一個 SSID 與某些公開讓大家免費使用的 Wifi,就可以收集到很多東西嗎...?\r\n\r\n另外要注意的是很多便宜的 SSL Certificate 是沒有辦法過 AndroidiPhone 內建瀏覽器的認證的,要買之前先試著找 Demo Site 測試看看會比較保險。據說大多數的 wildcard ssl 都可以過認證,不過這也只是路邊聽來的,測過才是王道...\r\n\r\n奇怪,我記得之前有看到有一張表格是列出手機上瀏覽器支援的情況,一時間要找卻找不到了...", + "title": "所有的手機應用程式都應該要上 SSL (另一個說法,HTTPS)" + }, + { + "id": "2501", + "body": "Simon Willison 轉了一篇文章,提到某個網站用 meta tag 關掉 DNS Prefetch 後,每個月省下 USD$1600:「DNS Prefetching Implications」。\r\n\r\n會這麼貴的主要原因在於 DNS Prefetch 是利用「浪費資源」加速,設計上本來就不需要很快的反應時間,所以不應該讓他上昂貴的 Anycast-based DNS service。更何況 Anycast-based DNS service 應該是在整個系統都 tune 到極致後,壓榨最後一丁點效能的武器...\r\n\r\n自己架設 DNS server,或是透過 Domain Registar and/or Hosting 公司代管,效果其實都不差。如果想要測試 Anycast-based DNS service,除了 Route53 可以玩看看以外,EasyDNS 也有提供平價的服務 (而且可以是 slave server),要測試的人可以測看看...", + "title": "DNS Prefetch 的利弊" + }, + { + "id": "2504", + "body": "把桌機換成 Ubuntu 10.10 Desktop amd64 版,比以以前有一堆東西要自己設定,裝好到現在還沒遇到問題,本來預期的問題也都隨著時間而解決了:\r\n\r\n繼續研究...", + "title": "Ubuntu 10.10 amd64 版" + }, + { + "id": "2505", + "body": "已經好幾次遇到「根本不知道有哪些優惠」的情況了,去找 feed 沒幾家有做,只好自己做一個來生 Atom feed:「Useful Feeds」。\r\n\r\n網站的程式碼放在 GitHub 上,要改的人可以開 ticket 或是直接 fork + pull-request,目前還有很多地方需要修正 (像是 Atom feed validator 問題)。\r\n\r\n出了信用卡的以外,之後如果有遇到需要加的功能會再加上去...", + "title": "銀行 (信用卡) 的最新優惠消息..." + }, + { + "id": "2506", + "body": "PerconaBaron SchwartzAWS RDS 能提供最大台的 database (68GB memory + 26 ECUs) 上測試 insert 的效能:「MySQL on Amazon RDS part 1: insert performance」\r\n\r\n\"\"\r\n\r\n數字是 Per Minute,換算成常用的 Per Second 要記得除以 60。大約是 4k~5k 40k~50k queries/sec 的數量。這個效能不知道能不能算「好」...", + "title": "AWS RDS 的 INSERT 效能..." + }, + { + "id": "2508", + "body": "Twitter 剛剛公告,使用者現在可以選擇強制使用 HTTPS:「Making Twitter more secure: HTTPS」。\r\n\r\n\"\"\r\n\r\n之前是透過 Force-TLS 強制設定 twitter.comapi.twitter.com 強制使用 HTTPS。現在官方提供這個功能等於多了一層保護...\r\n\r\n目前還不包括 3rd-party 應用程式,只有網站版本與 iPhoneiPad 的官方 client。", + "title": "Twitter 提供使用者「強制使用 HTTPS」的選項" + }, + { + "id": "2512", + "body": "雖然看到別人提很多次了,但一直都沒有試著去看看...\r\n\r\n剛剛把 App::cpanoutdated 裝起來,剛好跟 App::cpanminus 配合一起升級:\r\n
cpan-outdated -p | cpanm -n
\r\n這樣完全不需要用到 cpan (跑 upgrade /.*/)。", + "title": "更新 CPAN module 的方式..." + }, + { + "id": "2513", + "body": "Perlbrew 0.18 其中一項很重要的功能,是在 install perl 時可以使用 -j 的參數,像是這樣:\r\n
perlbrew --force install -j 4 perl-5.12.3
\r\n-j 這個參數會傳給 make,同時跑的 job 數量。(make 會處理 dependency 問題,理論上不會有問題)\r\n\r\n在 Linode 512 上面 (Debian 64bits) 只用了 7 分鐘就把 Perl 5.12.3 裝完了 (之前是 21 分鐘),時間就是金錢啊... 細節可以參考 0.18 的 Changes 的說明。", + "title": "加速 Perlbrew 安裝 Perl 的速度" + }, + { + "id": "2516", + "body": "純粹實際驗證用:\r\n\r\n\r\n\r\n因為 Carp 預設會將一些函式 export 到現有的 namespace 下,如果不使用 namespace::clean 或是 namespace::autoclean 這類工具幫你清除,會造成 namespace 與 object 內帶有這些函式。\r\n\r\n結果是:\r\n\r\n\r\n\r\n可以看到沒有 B 沒有 clean 導致外面 (package main) 可以看到 carp。\r\n\r\n其實這篇是要測 pastie 是不是比 Gist 好用... :o", + "title": "多使用 namespace::clean 與 namespace::autoclean" + }, + { + "id": "2517", + "body": "在 Slashdot 上看到 Richard Stallman 在 2003 年 1 月對於 GPLv2 header file (當時只有 GPLv2,沒有 GPLv3) 對於作品是否有「感染力」的看法:「RMS On Header Files and Derivative Works」,也就是「如果我用了 GPLv2 的 header file,是否我的 code 因此就要使用 GPLv2」的問題。\r\n\r\nRichard Stallman 在找了律師談過之後,引用 header file 不足以成為 GPLv2 裡面定義的「衍生作品」(Derivative work):\r\n
Our view is that just using structure definitions, typedefs, enumeration constants, macros with simple bodies, etc., is NOT enough to make a derivative work.
\r\n這篇剛好回應最近有人質疑 Android 因為使用 GPLv2 header file 而軟體本身使用非 GPLv2 授權的問題:「Android Faces Serious Linux Copyright / Copyleft Issues with GPL」:\r\n
Google used Linux headers, but did not release Android under the same GPL2 license, which is the most basic precept of GPL. (Android is released under the Apache Commercial License.)
", + "title": "header file 與 GPL(v2) 的「衍生作品」..." + }, + { + "id": "2519", + "body": "Ubuntu 10.10 系統內的 VirtualBox 是 OSE 版本 (Open Source Edition),先到 VirtualBox 官方網站下載對應的 deb 檔:「Download VirtualBox for Linux Hosts」,像我的電腦是跑 10.10 amd64 版本。\r\n\r\n接下來是把系統內的 VirtualBox 移除:\r\n
apt-get purge virtualbox
\r\n移除完畢以後將剛剛下載的 deb 檔安裝進系統:(後面的檔名自己變更)\r\n
dpkg -i virtualbox-4.0_4.0.4-70112~Ubuntu~maverick_amd64.deb
\r\n然後把自己加到 vboxusers 這個 group 內 (我是直接改 /etc/group),改完後重新登入,然後:\r\n\r\n接下來就可以用 IE 到網路銀行安裝 ActiveX,然後測試讀卡機是否正常運作...", + "title": "Ubuntu 上跑 VirtualBox 連接 USB 裝置..." + }, + { + "id": "2520", + "body": "Google 推出了 VP8 編碼與解碼的硬體設計,代號「Anthill」:「Introducing \"Anthill,\" the First VP8 Hardware Encoder IP Release」。\r\n\r\n透過 Anthill,對於 GPU 的 loading 及電源消耗會大幅降低:(這是在 ARM 平台上的估算)\r\n\r\n\"\"\r\n\r\n不過比較奇怪的是只有寫 H1 encoder RTL 不收錢?重點在 decoder 吧?\r\n
Google does not require payment of any license fee or royalty in connection with use of the H1 encoder RTL.
\r\n另外 source code 不直接公開,必須填表格索取...", + "title": "Google 推出 VP8 的硬體設計" + }, + { + "id": "2522", + "body": "在 Twitter 上又看到有人在講 HTTPS 的資料無法 persistent cache (寫入硬碟保存),所以當瀏覽器重開後就消失,如果能避免使用就應該避免...\r\n\r\n但實際上並不是這樣,HTTPS 的資料是「可以」被 persistent cache 的,只是預設不會這樣作。\r\n\r\n只要在 response header 裡告訴瀏覽器 Cache-Control: public,瀏覽器就會 persistent cache。因為你已經跟瀏覽器說這個檔案是公開資料,就算是透過 HTTPS 傳輸也可以寫到硬碟裡保存。在「HTTPS Performance Tuning」這篇文章裡有提到 IE 與 Firefox 都沒有問題...\r\n\r\n有用 HTTPS 的可以檢查看看是不是能夠加速...", + "title": "HTTPS 的 Persistent Cache..." + }, + { + "id": "2523", + "body": "Firefox 4 正式版快要放出來了,這陣子開始強迫自己用 Firefox 4,結果覺得奇怪「怎麼這些網站不提供 RSS 啊」,後來才想到很久前有報導提到 Firefox 4 把 RSS icon 拔掉:「Where is the RSS Feed Icon in Firefox 4?」。\r\n\r\n這代表一定有人會寫 extension 把 RSS icon 補回去,測過以後看起來「RSS Icon」是個還不錯的選擇,跟之前沒什麼差異...", + "title": "補回 Firefox 4 取消的 RSS Icon" + }, + { + "id": "2524", + "body": "很久前就把 HTC Desire Root 了,只是一直沒刷 ROM,昨天去 XDA 找個比較大而且有支援中文的 ROM 刷下去,順便找一些軟體...\r\n\r\n其中一個需求是 Screenshot,不少軟體都必須是 Root 過後的手機才能抓取,在網路上看了看,ShootMe 這套似乎是還不錯的選擇,搖晃手機就會自動抓取畫面存起來:「ShootMe (Screen Grabber)」。\r\n\r\n這張是在 Flickr 上:\r\n\r\n\"\"\r\n\r\n另外這張是在 Imgur 上:\r\n\r\n\"\"\r\n\r\n存起來之後用「相機」的功能丟到網路上即可...", + "title": "用 ShootMe 拍 Android 手機上的 Screenshot" + }, + { + "id": "2525", + "body": "在 Twitter Engineer Blog 上的「The Great Migration, the Winter of 2011」這篇文章裡提到了 Twitter 預定搬機房的行程,裡面有些數據...\r\n\r\n目前維護的人數:\r\n
Today, the feed and care of Twitter requires more than 200 engineers to keep the site growing and running smoothly.
\r\n機器數量超過 1000 台:(用 thousands 這個詞)\r\n
Simultaneously, our operations engineers divided into new teams and built new processes and software to allow us to qualify, burn-in, deploy, tear-down and monitor the thousands of servers, routers, and switches that are required to build out and operate Twitter.
\r\nTweet 的資料量:\r\n
Once we proved our replication strategy worked, we built out the full Twitter stack, and copied all 20TB of Tweets, from @jack’s first to @honeybadger’s latest Tweet to the second data center.
", + "title": "Twitter 新機房,以及數據..." + }, + { + "id": "2526", + "body": "在 Hacker News 上看到這個 url:「http://graph.facebook.com/http://news.ycombinator.com」,看起來就是 Facebook Like 的 JSON output:\r\n
{\r\n   \"id\": \"http://news.ycombinator.com\",\r\n   \"shares\": 930\r\n}
\r\n測了一下,發現可以吃 JSONP:「http://graph.facebook.com/http://news.ycombinator.com?callback=test」:\r\n
test({\r\n   \"id\": \"http://news.ycombinator.com\",\r\n   \"shares\": 930\r\n});
\r\n暫時還想不到能拿來做什麼... 不過看起來蠻方便的 :o", + "title": "Facebook Like 的 JSON/JSONP 數據..." + }, + { + "id": "2527", + "body": "昨天提到的「header file 與 GPL(v2) 的「衍生作品」...」,Linus Torvalds 也跑出來講話了:「Android: Sued by Microsoft, not by Linux」\r\n
It seems totally bogus. We've always made it very clear that the kernel system call interfaces do not in any way result in a derived work as per the GPL, and the kernel details are exported through the kernel headers to all the normal glibc interfaces too.
\r\n他也不認為 header file (也就是提到的「kernel system call interfaces」) 會造成 GPLv2 內所提到的 derived work。", + "title": "關於 Android 授權 (License) 的爭論:Linus Torvalds 的說法" + }, + { + "id": "2528", + "body": "在 TechCrunch 上看到的文章:「Googlers Buy More Junk Food Than Microsofties (And Why Rapleaf Is Creepy)」,文章裡面提到 RapLeaf 這家公司從 Internet 上挖資料分析了 Google微軟這兩家公司的員工的飲食習慣,發現 Google 的員工比微軟的員工喜歡吃垃圾食物...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n雖然是做噱頭的 startup,但這還是說明 Social Network 上可以分析的資料其實種類相當多,如果 Facebook 自己丟人力下去做的話應該會更驚人...", + "title": "Google 與微軟的員工的比較:食物..." + }, + { + "id": "2529", + "body": "剛剛測了一下不同畫質設定時的畫面,把他改成最低了,這是最低畫質 (with JPEG) 的畫面,50KB 左右:\r\n\r\n\"\"\r\n\r\n這樣看起來是夠用了...", + "title": "拍照軟體 ShootMe 的畫質..." + }, + { + "id": "2531", + "body": "Slashdot 上看到英國有大學嘗試使用直流電供應電腦電源:「University Switches To DC Workstations」。\r\n\r\n在機房內有些設備是可以吃 48V DC,也有 UPS 是設計給 48V DC 用的 (APC AV Black S Type Extended Battery Pack 48Vdc),當初聽別人說是「因為轉換效率比較高所以省電」,但究竟可以省多少?我記得現在的 110V/220V 的 AC ATX PSU 轉換效率超過 80%?機房端轉成 110V/220V AC 與 48V DC 又差多少?\r\n\r\n試著找 48V DC ATX PSU,有找到「48 V DC Input PC ATX-12 Style Power Supplies」這個,另外也有其他電壓的 PSU...\r\n\r\n感覺一般電腦用 DC Input 是一種新的嘗試,也是 PR 稿...", + "title": "直流電電源供應 PC..." + }, + { + "id": "2532", + "body": "老舊的 Notebook 是跑 32bits 版本 (因為 CPU 根本就不支援 64bits),把 Java 開起來 (我平常是關掉的),連上 SSLVPN 後就會自動安裝了 (安裝的過程中會跳視窗出來要 sudo permission),但在 x86_64 下面卻一直跑不起來,就沒辦法連回公司內部網路...\r\n\r\n網路上找了找發現這篇:「Manual Installation only for Ubuntu Linux 10.10 64-bit」,居然要裝 32bits Firefox XDDD\r\n\r\n自己亂翻以後發現 vpnc - client for cisco vpn concentrator 可以用,而且有被整合進 Network Manager,測了以後發現沒問題,這樣我的 Notebook 也換成 vpnc 好了...\r\n\r\nUpdate:剛剛在 Notebook 上重設,發現不是 vpnc 連上去 (這是 IPSec VPN),而是 OpenConnect...\r\n\r\n接下來要找 Juniper SSLVPN 的 solution 了...", + "title": "在 Ubuntu 10.10 x86_64 下連 Cisco AnyConnect" + }, + { + "id": "2535", + "body": "剛剛看到 CPAN 網站上直接由官方支援 Syntax Highlighter:Syntax highlighting for search.cpan.org,雖然目前的 UI 做的並不太好 (選擇 theme 的選擇條應該是上下都要有,目前只有最下方),但仍然是進步不少...\r\n\r\n之前的 Greasemonkey script 在 Firefox 4.0 上爛掉 (因為 async loading 的關係),本來還在想要怎麼處理,現在看起來就用官方提供的就好了...", + "title": "CPAN 官方支援 Syntax Highlighter..." + }, + { + "id": "2537", + "body": "這兩件事情加起來會不會太巧合...\r\n\r\n首先是有攻擊者成功利用 Comodo CA 產生 www.google.comlogin.yahoo.comlogin.skype.comaddons.mozilla.orglogin.live.com 的 SSL certificate:「Report of incident on 15-MAR-2011」,雖然被 revoke (撤銷),但是我們知道 revoke 機制極度脆弱:「Revocation doesn't work」。\r\n\r\n過沒幾天,有人發現 AT&TFacebook 的流量會流經中國 ISP 的網路設備:「Facebook traffic mysteriously passes through Chinese ISP」。\r\n\r\n關於這幾件事情,我們能做的並不多,只能僅可能的做:\r\n\r\n接下來就是祈禱了...", + "title": "網路愈來愈不安全,能自救的方式並不多..." + }, + { + "id": "2538", + "body": "GitHub 剛剛發信給地址裡有「Taipei」的人,通知大家晚上在台北有聚會... 但是看到信件的時候已經是下午兩點 XD\r\n\r\n這是 blog 上的公告:「Taipei Drinkup Tonight!」。(不,天氣太冷了,我要在棉被裡面找周公)\r\n\r\n直接借地圖來用:(在「Juliana食尚餐飲運動酒吧」)\r\n\r\n\"\"\r\n\r\n有興趣的人可以去聊聊...", + "title": "GitHub 今天晚上在台北有聚會!" + }, + { + "id": "2539", + "body": "國內各網站都不太提這個東西,大概是因為他們都得靠廣告維生,所以完全不提... XD\r\n\r\n2007 年的時候 pesty 寫過一篇文章,關於網路廣告平台要如何判斷你的「特徵」(以文章內的例子,可以判斷出你的性別):「網路廣告商怎麼知道你是誰? 從 ClickStream 來判斷用戶資料」,這樣可以藉由更精準的投放,提高廣告的成效。\r\n\r\n以 pesty 舉出的例子來說,假設你逛過 26 個網站,其中五個有 DoubleClick 廣告,那麼 DoubleClick 就可以依據這些資料,以及統計方法,分析你的特徵:(圖有點大張,請點小圖看大圖)\r\n\r\n\"\"\r\n\r\n不少廣告商都有提供 opt-out (退出) 的功能讓你不被分析,但網路廣告商這麼多,你不太可能一個一個去各網站設定退出。所以有些人寫了 Firefox 套件「自力救濟」,你只要裝了這些套件就可以自動退出上百個廣告商的分析:「Beef Taco (Targeted Advertising Cookie Opt-Out)」、「Targeted Advertising Cookie Opt-Out (TACO)」。\r\n\r\n另外則是有群人開始提議,是不是可以直接在瀏覽器裡面設定,當每次開網站的時候都固定送出某個資訊,告訴這些網站 (以及廣告商) 你不願意讓他們分析使用者行為。這個提議也就是標題所提到的「Do Not Track」。這個提議也送到 IETF (網際網路工程任務組) 及 FTC (美國聯邦貿易委員會,這是個美國政府單位),希望能夠變成 IETF 標準,並且可以透過法律強制執行:「Do Not Track FTC Comment: What It Means, How to Enforce It, and More」。\r\n\r\n最近 IE9 與 Firefox4 都內建了 Do Not Track 機制,預設是關閉的。以 Firefox 4 的設定來說,滑鼠游標在的那個選項就是 Do Not Track:\r\n\r\n\"\"\r\n\r\n如果你還在用 Firefox 3.6 也沒關係,Adblock Plus 新版 (1.3.5) 也要支援 Do Not Track 了:「Do Not Track support in Adblock Plus」。\r\n\r\n設上去以後連任何站台都會送 DNT header,滑鼠游標在的那個地方就是 DNT header:(圖有點大張,請點小圖看大圖)\r\n\r\n\"\"\r\n\r\nIE9 的部份因為沒有在用,所以暫時沒有截圖可以看... XD", + "title": "網路隱私權的改善:Do Not Track" + }, + { + "id": "2543", + "body": "開張不到一個月的 AWS Japan 今天宣佈啟用第二個 Availability Zone:「Adding a Second AWS Availability Zone in Tokyo」,第一個 AZ 是在 2011/03/02 宣佈啟用:「Amazon Web Services 東京!」。\r\n\r\n好快的速度... 是因為全世界對亞洲的需求嗎?", + "title": "AWS 東京第二個 AZ (Availability Zone) 今天啟用..." + }, + { + "id": "2545", + "body": "前幾天 jnlinOSDC.TW 2011 上面講了「HandlerSocket – A NoSQL Plugin for MySQL」,剛好 Percona 的 Ryan Lowe 也提到了「What’s up with HandlerSocket?」,試著分析 (並猜測) HandlerSocket 為什麼沒有被廣泛使用。\r\n\r\n除了技術的問題外,最主要在於運作:Open Source 不是把程式丟出來就覺得沒事了,要僅可能讓使用者容易使用。\r\n\r\n比較好運作方式是在重大的 bug 修掉之後就推出 minor version release,一方面讓一些願意整合的單位有「基準」可以整合 (像是 Percona 這樣的公司),另外一方面可以讓 community 感覺是個有在動的 project...\r\n\r\n像是文章裡提到的兩個 bug,一個在今年年初已經修正 (write invalidate),另外一個大約兩個禮拜前修正了 (insert auto-increment),只是很多人不太清楚而已。\r\n\r\n目前這個專案的感覺跟 Facebook 丟出來的 memcached 還蠻像的:「facebook / memcached」,Facebook memcached 的情況是很明顯「老闆說要 open source,我就丟出來吧」的感覺,原來的 community 也懶的理他,看一看有沒有可以用的 code 可以整合,然後繼續發展自己的...", + "title": "MySQL HandlerSocket 的情況..." + }, + { + "id": "2547", + "body": "之前被人破台,利用 Comodo CA 生出 addons.mozilla.org SSL certification 的 private key 被放出來了:「Comodo Hacker releases Mozilla certificate」。借 Netcraft 的圖:\r\n\r\n\"\"\r\n\r\nFirefox 的 revoke 機制不怎麼完善,對於用 Firefox 的人,直到 Mozilla 有新的方法解決之前都必須很小心了 :/", + "title": "addons.mozilla.org 的 Comodo SSL Certificate 被放出 Private Key" + }, + { + "id": "2548", + "body": "Steve Souders 分析了手機瀏覽 BingGoogle 的手機平台時,這兩個平台如何處理 cache issue:「Storager case study: Bing, Google」。\r\n\r\n這兩個平台不約而同都用上 HTML5 的 localStorage,其中 Bing 用了 ~170KB (未壓縮大小) 的 localStorage,內容包括 CSS/JS/JSON,而 Google 也用了 154KB 存放這些資料。\r\n\r\n這應該是因為手機平台的 browser cache 共用一塊不大的空間,很容易被 purge:(我的 Desire 跑 Android 2.2,剛剛看設定,預設值是最大值 6MB)\r\n\r\n\"\"\r\n\r\n而 localStorage 則是每個 domain 自己一份空間,相對於共用的空間反而更適合當 cache...", + "title": "Bing 與 Google 都使用 HTML5 的 localStorage 加速手機瀏覽速度..." + }, + { + "id": "2549", + "body": "Matt CuttsTwitter 上面提到 Google 公司內的網路速度:\r\n\r\n\r\n\r\n首先是 Speedtest.net 的測試速度:(Holy... 那個上載速度超過 100Mbps 啊)\r\n\r\n\"\"\r\n\r\n然後是遊戲 (RIFT) 下載的速度:(剩下 7.xGB 的檔案只要三分鐘多就可以傳完)\r\n\r\n\"\"\r\n\r\n這真是太炫耀了 =_=", + "title": "Google 公司內網路速度的炫耀文..." + }, + { + "id": "2550", + "body": "libwww-perl 裡的 LWP::UserAgent 可以處理 HTTPS,並利用 CA 驗證 public key 是否簽過。在 FreeBSD 下安裝 ca_root_nss 後可以在 /usr/local/share/certs/ 下看到檔案,於是可以這樣用:\r\n
#!/usr/bin/env perl\r\nuse strict;\r\nuse warnings;\r\nuse LWP::UserAgent;\r\n\r\nINIT {\r\n    my $ua = LWP::UserAgent->new;\r\n    $ua->ssl_opts(SSL_ca_file =>\r\n        '/usr/local/share/certs/ca-root-nss.crt');\r\n\r\n    my $res = $ua->get('https://mail.google.com/mail/');\r\n    print $res->content;\r\n}
\r\n在 Debian 或是 Ubuntu 下則是透過 ca-certificates 裝到 /etc/ssl/certs/ 下,並且分成很多檔案,這時候本來的 ssl_opts 就要改成 SSL_ca_path => '/etc/ssl/certs/';。\r\n\r\nPS:FreeBSD 上因為是單檔,依照 SSL_CTX_load_verify_locations(3) 這邊的說明,沒辦法用 CApath...", + "title": "在 Perl 裡用 LWP::UserAgent (以及繼承它的模組) 時使用 HTTPS 連線處理 CA 認證..." + }, + { + "id": "2551", + "body": "Steve Souders 公開新網站 HTTP Archive。類似於 Internet Archive 紀錄網站的每個時間點的樣子,HTTP Archive 紀錄網站每個時間點的 HTTP 效能:「Announcing the HTTP Archive」。\r\n\r\n目前蒐集了 ~17000 個網站,每個網站約每兩個禮拜分析一次,選擇的網站來自 Alexa TopsitesFortune 500 (2010)、Quantcast。翻了自家的站台,看起來是從 2010 年 11 月就開始跑...\r\n\r\n也因為紀錄了很多網站,所以也有些有趣的數據可以在「Interesting stats」這邊看到 (有日期可以選)。", + "title": "HTTP Archive:網站速度的歷史紀錄" + }, + { + "id": "2554", + "body": "\r\n\r\n「攻殻機動隊 S.A.C.」シリーズ 電脳空間システム from BMCL on Vimeo.\r\n\r\n用 Kbox Kinect 模擬《攻殼機動隊 Stand Alone Complex》內的電腦空間,1989 年的漫畫作品、2003 年的電視動畫... 在 2011 年的現在有機會用「平價」的設備在現實生活中模擬一些經典場景了... XD", + "title": "用 Xbox Kinect 模擬攻殼機動隊 Stand Alone Complex 內的電腦空間" + }, + { + "id": "2556", + "body": "程式在這裡,用 Perl 寫的,讀 Twitter 的 RSS feed 然後丟上 Plurk:\r\n\r\n\r\n\r\n另外裡面用到的 SQLite schema 是:\r\n
CREATE TABLE entry (id INTEGER PRIMARY KEY AUTOINCREMENT, guid VARCHAR, updated BOOLEAN);
\r\n其中 updated 欄位是沒用到的,但我暫時懶的改了...\r\n\r\nbtw,寫這個程式讓我對 Plurk 的資安感覺到絕望 XD", + "title": "Twitter 轉 Plurk 的程式..." + }, + { + "id": "2559", + "body": "\"http://www.webhosting.info/registrars/top-registrars/global/\"\r\nFrom:「Largest ICANN Registrars」。\r\n\r\nGoDaddy 是目前最大的 DNS 註冊商,遙遙領先其他單位,結果前陣子 GoDaddy CEO Bob Parsons 去辛巴威 (非洲) 渡假時,拍攝了一段殺象的影片並傳到 Video.ME 上 (GoDaddy 自己的影音平台),被傳開以後馬上被鄉民圍剿:「Hunting Problem Elephant」,在 Twitter Trend 也可以看到相關的字眼...\r\n\r\n\r\n\r\n競爭對手 Namecheap 也沒打算放過這機會,直接開放「BYEBYEGD」coupon 讓大家將 domain 以 USD$4.99 的費用轉到 Namecheap,其中的 USD$1 則會捐給 Save the Elephants。", + "title": "GoDaddy CEO (Bob Parsons) 的殺象影片造成 GoDaddy 中槍..." + }, + { + "id": "2561", + "body": "WWW::Mechanize 是繼承 libwww-perl 中 LWP::UserAgent 的工具,所以這個方式通用於兩者...\r\n\r\n首先是在取得資料時加上 Accept-Encoding: gzip 的 header,這可以在產生物件時指定,之後就都會送出:\r\n
my $ua = LWP::UserAgent->new;\r\n$ua->default_header('Accept-Encoding' => 'gzip');
\r\n取回後直接透過 HTTP::Response 的 decoded_content 幫你處理:\r\n
my $res = $ua->get($uri);\r\nmy $msg = $res->decoded_content;
\r\n取回的 $msg 會是 Perl internal encoding,要變成 UTF-8 還需要透過 Encodeencode('utf8', $msg)。\r\n\r\n這樣只要 server-side 有支援 gzip 就會自動壓縮並且在本地端解開,沒壓縮也沒關係,HTTP::Response 會依照 Content-Type 處理。\r\n\r\nUpdateclkao 指出 WWW::Mechanize 預設值就會包括 gzip 設定,剛剛拿 code.jquery.com 測試沒錯。", + "title": "幾個使用 LWP (WWW::Mechanize) 的好習慣..." + }, + { + "id": "2563", + "body": "Google 在愚人節在 Google Online Security Blog 上發表的方法:「Improving SSL certificate security」,試著提供一些資源幫助解決 SSL certification 目前遇到的問題...\r\n\r\n前陣子 Comodo 的下游被破台後 (還不只一家),有不少人又開始在探討現有 SSL certification 所用的 PKI 架構 (公開金鑰基礎建設),也就是 CA (數位證書認證中心) 的問題。\r\n\r\nGoogle 給的方法是拿 SSL certification 的 SHA1 hex string,加上 .certs.googlednstest.com 組合成一個 domain 名稱,接著拿這個 domain 去查 TXT record,Google 會傳回三個數字讓你判斷這個 SSL certification 的可靠度。\r\n\r\n這三個數字分別是:\r\n\r\n雖然文章裡面沒提,不過以數字推算,這邊的「天數」應該是指 1970 年 1 月 1 日到現在的天數...\r\n\r\n使用 DNS 查詢的好處在於 DNS 有 cache (Google 把 TTL 設為 86400),而資料的正確性可以靠正在推廣的 DNSSEC 建立。\r\n\r\n接下來應該會有人實做 extension 測試了,過一陣子再回頭來看看發展。", + "title": "SSL Certification 驗證問題中 Google 提供的改善方法..." + }, + { + "id": "2565", + "body": "計中寫信來問 Group.NCTU.edu.tw 那台機器有點舊了,要不要換機器...\r\n\r\n連進去看一下,這系統好舊啊... XD\r\n
CPU: Intel Celeron (601.37-MHz 686-class CPU)\r\n Origin = \"GenuineIntel\" Id = 0x68a Stepping = 10\r\n Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>\r\nreal memory = 520081408 (495 MB)\r\navail memory = 495312896 (472 MB)
\r\n換機器的時候順便來重寫吧,有些 plan 想做... 其中最想做的就是抽走 twbbs.org。\r\n\r\n當初會用 twbbs.org 當其中一道 backend 的時候是因為當時 twbbs.org 是由 Ptt 的人代為管理,結果現在亂七八糟的,早點抽掉會比較好...", + "title": "話說 Group.NCTU.edu.tw 最近被提說要換機器..." + }, + { + "id": "2570", + "body": "\"\"\r\n\r\n在 Slashdot 看到的新聞「Arizona Governor Proposes Flab Tax」,原文轉自 WSJ 的「Arizona Proposes Medicaid Fat Fee」。\r\n\r\n文章裡提到:\r\n
Arizona's governor on Thursday proposed levying a $50 fee on some enrollees in the state's cash-starved Medicaid program, including obese people who don't follow a doctor-supervised slimming regimen and smokers.
\r\n那個「including」的意思表示不只跟這些人收,不然會用「only」而非「including」,以避免被政敵咬住利用,所以還不知道影響範圍有多大...", + "title": "亞利桑那州將針對肥胖治療的人收錢..." + }, + { + "id": "2572", + "body": "前幾天把 dnscan (我有放在 GitHub 上,在 gslin/tools) 重新用 AnyEvent 改寫才發現的:\r\n
;; ANSWER SECTION:\r\n1.172.112.140.in-addr.arpa. 86400 IN CNAME 1.0-31.172.112.140.in-addr.arpa.
\r\n看起來應該是放到獨立網段裡面,再把反解 delegate 下去...", + "title": "原來 Ptt 在獨立網段一陣子了..." + }, + { + "id": "2573", + "body": "這些 CA 是怎麼管理下面的單位的啊...\r\n\r\nSlashdot 報導了 EFF 的 Chris Palmer 發現有大量 Unqualified Name 被 sign 過:「Thousands of SSL Certs Issued To Unqualified Names」、「Unqualified Names in the SSL Observatory」。\r\n\r\n依照原文中「You can also use the Observatory in an Amazon EC2 instance we created.」這句話,應該是直接掃整個 IPv4 network 了吧,反正以現在的各種技術來說,IPv4 address space 不大?\r\n\r\n結果相當豐碩,包括了 2201 個 \"localhost\"、806 個 \"exchange\"、2383 個 /^\\w*exchange\\d+$/、5657 個 /^\\w*exch\\d*$/。光是可以在 Internet 上被觀察到的 Unqualified Name 就有 37244 個。\r\n\r\n甚至連 EV Certificate 都有 Unqualified Name 被 sign:「www.prism.gatech.edu/~gmacon3/ssl-observatory/unqualified_local_rfc1918_ev.txt」。(那個 VeriSign 你太誇張了,\"CN=Bownedev\" & \"CN=qa-sescib-web1\" & \"CN=tc-teweb01-s\" 你也能過?EV 的文件檢查根本沒再看的喔?)\r\n\r\n在「www.prism.gatech.edu/~gmacon3/ssl-observatory/unqualified_local_rfc1918_all.txt」這邊有張表列出出包單位的數量可以看...\r\n\r\n雖然一月就做完這份資料,但不得不說 EFF 補刀的時間真棒... 趁這陣子 CA 架構問題正熱的時候寫一篇來補一刀 XD", + "title": "這下可包大了,居然有一堆 \"localhost\" 這類的 SSL Certificate 被發出來..." + }, + { + "id": "2576", + "body": "這只能掙扎,但還是要掙扎啊!\r\n\r\nCertificate Patrol 是一個 Firefox 延伸套件,你可以設定在新看到 SSL Certificate 的時候跳出一個視窗來告訴你這個 SSL Certificate 的資訊:\r\n\r\n\"\"\r\n\r\n如果你平常有在用 https://mail.google.com,結果突然發現有天跳出視窗,你就應該要有所警覺了...", + "title": "安裝 Certificate Patrol 增加對最近 SSL Certificate 問題的抵抗性..." + }, + { + "id": "2578", + "body": "Oracle 認為 Google 侵犯 Oracle 在 Java 使用的專利,而 Google 認為 Oracle 的專利不成立,所以兩邊現在在打官司...\r\n\r\n但這牽扯太多專業問題,要了解專利本身的內容才有辦法判斷,所以兩邊的律師決定讓法官先知道 Java 是什麼東西,開兩個禮拜的課程讓 William Alsup 法官了解 Java 的背景與細節:「Judge In Oracle-Google Case Given Crash Course in Java」、「Judge in Oracle-Google case gets a lesson in Java」,引用其中一段:\r\n
Judge William Alsup of the U.S. District Court in San Francisco was given an overview of Java and why it was invented, and an explanation of terms such as bytecode, compiler, class library and machine-readable code.
\r\n成人速成班 XDDD", + "title": "Oracle 與 Google 的 Java 專利官司:先教法官 Java 是什麼..." + }, + { + "id": "2582", + "body": "最大的問題在於 codec,所以講重點就好:裝 libavcodec-extra-52。不同 Ubuntu 版本後面的號碼可能不一樣,用 apt-cache search libavcodec 應該可以看到。\r\n\r\n預設用 rv40 解,打開兩秒就停住,換上去以後就正常了...", + "title": "在 Ubuntu 10.10 上看 RV10 影片的方式..." + }, + { + "id": "2583", + "body": "在「What Google autocomplete has to say about the Internet」看到一連串 Google Autocomplete 的圖片,這些建議是表示 Internet 要毀滅了嗎 XDDD\r\n\r\n不過這個我喜歡:\r\n\r\n\"ie6\r\n\r\n文章最後提到的這個 XDDD\r\n\r\n\"google", + "title": "Google 自動完成... Internet 要毀滅了嗎..." + }, + { + "id": "2585", + "body": "Joel Spolsky 大概不太滿意這些詐騙集團 XD\r\n\r\n他在「Stack Exchange Traffic Still Growing」這篇裡面直接拿最正確的 source 產生出來的 Google Analytics 數據 (畢竟是自己掛到自己站上的),讓人知道 StackOverflow 還在成長...\r\n\r\n\"\"\r\n\r\n然後直接婊 Compete 給的數據:(這張圖原始檔名叫做 compete-is-rubbish.png)\r\n\r\n\"\"", + "title": "StackOverflow 成長數字 (Google Analytics) 與某些分析數據的比較..." + }, + { + "id": "2586", + "body": "\"\"\r\n\r\nFirefox 也打算要加快開發的速度,打算每 18 個星期出一個大版本,同時推出新的 Aurora channel 讓人下載測試:「New Channels for Firefox Rapid Releases」。\r\n\r\n以前如果不用 Beta 就得等 Nightly (每天更新),現在中間多了一個 Aurora 讓人選擇。這類似於 Google Chrome 的 Dev-Beta-Stable 模式...\r\n\r\n這樣應該可以改善 Firefox 的套件相容性,不用等到 Beta 才開始修... (有時候會在 Nightly 修好後又被揍了一拳 XD)", + "title": "Firefox Channel..." + }, + { + "id": "2588", + "body": "亞太區 APNIC 手上的 IPv4 位置也分完了:「Asia Runs Out of IPv4 Addresses」。\r\n\r\n也就是說,要跟 APNIC 拿 IPv4 address 沒得拿了,要 IPv4 address 得跟現有的這些人買,不然就得想辦法跨區要。\r\n\r\n這個消息對今年兩個月後的 IPv6 測試有更高的期望了...", + "title": "APNIC 手上的 IPv4 address 用完了..." + }, + { + "id": "2589", + "body": "在 Ubuntu 的 mailing list 上有人將 Ubuntu 11.04 系統拿給 11 個使用者測試 (並且觀察),並將結果 post 上來:「Default Desktop Experience for 11.04 - User testing results」。\r\n\r\n如果你仔細讀,會看到很多很驚人的 User Experience 問題,是 geek 沒辦法想到的 (因為反射動作就會避開這些問題),像是下面的敘述描述了 slash 與 filename 衝突的問題:\r\n
9/9 easily saved their LibreOffice Writer document. (P1 recovered amazingly well after trying to save \"Letter to Mr Smith 08/04/11\", and getting the vile response \"Error stating file '/home/ubuntu/Documents/Letter to Mr Smith 08/04': No such file or directory\").
\r\n這個方法應該要試著套進現在的模式...", + "title": "Ubuntu 11.04 使用者測試結果" + }, + { + "id": "2590", + "body": "\"\"\r\n\r\nmember.cht.com.tw 換憑證,看起來是 30 days trial certificate,剛上線 :o", + "title": "Certificate Partol 看到有趣的東西:member.cht.com.tw" + }, + { + "id": "2592", + "body": "Ralf S. Engelschall (rse@FreeBSD.org) 將各主版本升級的過程整理成文件 (連 3.x 到 4.x 的 local upgrade,以及 4.x 到 5.x 的 remote upgrade 都有):「FreeBSD Upgrade Procedures」。\r\n\r\n手上有 4.11 或是 4-STABLE 的機器的人可以考慮一下 XD", + "title": "FreeBSD 遠端主版本升級..." + }, + { + "id": "2593", + "body": "Arbor Networks 的 Blog 上分析了目前 IPv6 的進展:「Six Months, Six Providers and IPv6」。\r\n\r\n以去年八月到今年二月的數字來看,其實現在 P2P 還是佔絕對性的數量:\r\n\r\n\"\"\r\n\r\n另外一張圖是北美 IPv4 的頻寬分析,這點可以看出之前 Netflix 另外採購 Level3 的 CDN 對 Akamai 的影響:\r\n\r\n\"\"\r\n\r\n這數字真驚人...", + "title": "IPv6 的進展,以及北美 IPv4 流量分析..." + }, + { + "id": "2594", + "body": "\"\"\r\n\r\n本來圖片過寬會造成頁面有點亂,針對文章內的圖片補一下 max-width,不過這個屬性 IE6 就 sorry 了 XD\r\n\r\n上一篇「IPv6 的進展,以及北美 IPv4 流量分析…」用到的圖都有超過,現在看起來應該好一些了...", + "title": "更新 blog css,加上 max-width..." + }, + { + "id": "2596", + "body": "Slashdot 上有人提到 Google 最近調整的情況,繼續調降 low-quality site (這次是 eHow) 在搜尋的排名:「Google Tweaks Algorithm; EHow Traffic Plummets」。\r\n\r\n最近用中文版的 search 發現愈來愈找不到想要的東西了,把語系切到英文版試一陣子看看...", + "title": "Google 調整參數處罰 Content Farm 的進度" + }, + { + "id": "2598", + "body": "YouTube 發了一篇公告,將站上約 30% 的影片另外壓一份 WebM 格式,而這 30% 佔全站 99% pageview:「Mmm mmm good - YouTube videos now served in WebM」。\r\n\r\n目前在 Firefox 4+、Opera 10.6+、Google Chrome 支援 WebM 格式,手機平台則是 Android 2.3 (Gingerbread) 支援。\r\n\r\n希望有一天可以完全取代 H.264...", + "title": "YouTube 將 99% PV 影片加上 WebM 支援" + }, + { + "id": "2599", + "body": "在 AWS 的「Service Health Dashboard」上可以看到美東機房從 PDT 1:41 AM (台灣時間是 4:41 PM) 開始介入,到現在五個多小時了...\r\n\r\n下午本來要跑一堆東西,看起來得晚上做了,明天來凹一下老闆,下午再進公司好了... :o\r\n\r\nUpdate:在 Service Health Dashboard 上面總算有初步的原因了:\r\n
8:54 AM PDT We'd like to provide additional color on what were working on right now (please note that we always know more and understand issues better after we fully recover and dive deep into the post mortem). A networking event early this morning triggered a large amount of re-mirroring of EBS volumes in US-EAST-1. This re-mirroring created a shortage of capacity in one of the US-EAST-1 Availability Zones, which impacted new EBS volume creation as well as the pace with which we could re-mirror and recover affected EBS volumes. Additionally, one of our internal control planes for EBS has become inundated such that it's difficult to create new EBS volumes and EBS backed instances. We are working as quickly as possible to add capacity to that one Availability Zone to speed up the re-mirroring, and working to restore the control plane issue. We're starting to see progress on these efforts, but are not there yet. We will continue to provide updates when we have them.
\r\n看起來還要再等等...", + "title": "目前 AWS EC2 (美東機房) 出問題..." + }, + { + "id": "2601", + "body": "兩張圖,都是看滑鼠的那個選項:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Firefox 設定「當無法驗證 SSL 憑證是否失效時,視為失效」" + }, + { + "id": "2602", + "body": "這次的 AWS EC2/EBS 問題讓很多站台掛掉 (可以看「Who is affected by EC2?」這個站台,在發文的現在 US-East 還是沒完全恢復),但這次並不是每個使用 US-East 的站台都掛掉,像是 Netflix 因為一開始規劃就是「Cloud 也是會爛整片的」,所以服務並沒有中斷。在 Hacker News 上就有被提出來討論。\r\n\r\n討論裡面也有投影片說明 Netflix 選 AWS 的原因是因為「來不及建立 Data Center」,但在建立時也同時注意到「Cloud 有可能會大規模爛掉」的情況而設計了很多機制防範:「Netflix in the cloud 2011」。\r\n\r\n利用 AWS 在多個不同地點都有機房把架構在 AWS 上所能提供的 HA 機制發揮到極致,不過這是建立在「Cheaper than cost of being down」的想法上 (因為 Netflix 已經算是某類型的電子商務公司了)。\r\n\r\n話說回來,繼續等美東機房恢復...", + "title": "這次的 AWS EC2/EBS 問題..." + }, + { + "id": "2604", + "body": "AWS EC2/EBS 從星期四 21 日下午四點開始 (+8 時區),到剛剛在「Service Health Dashboard」上看到宣佈恢復 (亮綠燈),總共花了超過三天半的時間。有些人受到影響時間比較長,有些人比較短,我是在 24 號的凌晨恢復的,受到影響時間約兩天多。這幾天應該會有比較正式的說明...\r\n\r\n\"\"\r\n\r\n手上本來沒打算這麼早設計 failover 機制的,現在都要拉到前面做了...", + "title": "AWS EC2/EBS 用了三天半時間恢復..." + }, + { + "id": "2605", + "body": "AWS 亞太區的窗口要來台灣,本來是計畫找城邦集團內的人一起聊聊,後來跟 jnlin 提議,直接拉到社群層面辦,讓更多人跳下去用... (而且「前幾天的事情」大家應該會想要找人聊聊?XD)\r\n\r\n飲料的部份由敝公司 PIXNET 準備,歡迎來交流。註冊的資訊在:「Amazon Web Service 台北開發者聚會」。", + "title": "AWS 台北的聚會..." + }, + { + "id": "2609", + "body": "用 multi-threaded 版本可以將解碼的程式丟到多顆 CPU core 上跑,善用多 CPU 的資源,這樣看 1080p 才不會痛... (家裡的 AMD X2 4000+ 得這樣設,不然原來的版本解不動)\r\n\r\n主要有兩個步驟要做,首先是加 ppa 並且安裝 mplayer-mt:\r\n
sudo apt-add-repository ppa:longinus00/mplayer-mt\r\nsudo apt-get update\r\nsudo apt-get upgrade # 已經有 mplayer 的 case\r\nsudo apt-get install mplayer # 沒有裝 mplayer 的 case
\r\n然後是設定 smplayer 要他在用 mplayer 時加上參數:\r\n\"\"\r\n參數是「-lavdopts threads=4」。\r\n\r\n不過寫完才發現我這張 video card 有硬解可以用... XD", + "title": "裝 mplayer-mt 改善解碼效率" + }, + { + "id": "2611", + "body": "好像有陣子沒寫餵食紀錄了...\r\n\r\n餵食前:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n餵食後:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "餵食..." + }, + { + "id": "2612", + "body": "今天晚上到銀記餵食完 slzzp 後,順便就在光華商場買了一張 Class 10 的 MicroSD,準備給 Desire 刷 A2SD ROM 用,不然裝沒幾個軟體就在叫沒空間... 回家等車的地方剛好看到 HTC 在光華的店面:\r\n\r\n\"\"\r\n\r\n回家後到 XDA 上找個順眼的 image 刷,挑的是「[ROM]LeeDrOiD V3.0.3 GB 22nd April | Android 2.3.3 | A2SD+ | OpenVPN | FAST | STABLE」這個。\r\n\r\n除了一般刷機要做的事情外,在 Linux 下面要自己找指令處理 MicroSD card。依照一般教學的說明,目的是要在 MicroSD 卡上產生一塊 FAT32 及一塊 ext3 的空間,在 Linux 下用 fdisk + mkfs.vfat + mkfs.ext3 就可以處理好,不需要裝軟體。\r\n\r\n接下來先用舊的 MicroSD card 抓 V3.0.3 然後刷上去,然後換新的 MicroSD 卡,開機進入 recovery 模式把 user data 都砍乾淨,接下來就沒什麼問題了,把之前有用過得軟體都裝進去...\r\n\r\n最後附上今天晚上的餵食照片:\r\n\r\n\"\"", + "title": "第二次刷 Desire..." + }, + { + "id": "2613", + "body": "昨天「第二次刷 Desire…」在處理 MicroSD 記憶卡的時候,fdisk 的部份弄錯了參數 (要輸入 +1G 輸入成 1G,結果切出來不到 1MB),造成 FAT32 的 partition 太小,於是在 Android 的系統中只有 300KB 的 SD 卡空間可以用,然後一堆程式就會爆炸... 重切以後就都 okay 了。\r\n\r\n另外 LeeDrOiD V3.0.3 GBAndroid Market 逛的時候超容易當機,文章 Changelog 的地方有個 patch 可以下載更新,刷上去以後就正常多了...\r\n\r\n因為這樣晚上牛肉麵的餵食照片沒拍起來... (不是銀記,是另外一家)", + "title": "重做記憶卡,刷 patch..." + }, + { + "id": "2614", + "body": "目前還是 Yahoo!DeliciousYouTube 兩位創辦人 Chad Hurley & Steve Chen 買下,金額未公開,但 Delicious 的正式公告已經放出來了:「YouTube Founders Acquire Delicious」。\r\n\r\n目前官方的規劃是在七月轉換完成,接下來 Delicious 會詢問是否要轉換到 AVOS,也就是這兩個人的新公司。詳細的細節可以參考這次轉換的 FAQ。\r\n\r\n這家新公司有可能過沒多久又被 Google 買進去?總覺得這是必然的趨勢...", + "title": "Yahoo! 的 delicious 被 YouTube 創辦人買下" + }, + { + "id": "2615", + "body": "吃完午餐回來總算是拿到 Amazon Kindle 了:(都是蔡依林害的... XD)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n電子紙的感覺跟 iPad 不太一樣,看起來很舒服,等下先把一些想看的 PDF 文件丟進去測試看看...\r\n\r\n附上今天的「餵食日記」:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Kindle 總算到了..." + }, + { + "id": "2617", + "body": "同事 rellik 找到的:「DNSSEC Validator」。\r\n\r\n沒有 DNSSEC 的效果就像這樣:\r\n\r\n\"\"\r\n\r\n錯誤的 DNSSEC 效果則是:\r\n\r\n\"\"\r\n\r\n而有 DNSSEC 的效果:\r\n\r\n\"\"\r\n\r\n不過這要 DNS resolver 支援 DNSSEC 才行,目前 ISP 提供的 DNS resolver 大多都還沒 support...", + "title": "Firefox 檢查 DNSSEC 的 extension" + }, + { + "id": "2618", + "body": "Amazon 在網頁上說明了在 4/21 美東地區 EBS/RDS 故障的原因:「Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region」。\r\n\r\n整篇文章相當長,但整個連鎖反應是起於操作時的人為疏失。而 RDS 因為是基於 EBS 上,所以也跟著大爆炸...\r\n\r\n另外文章最後面也提到賠償的方式:\r\n
For customers with an attached EBS volume or a running RDS database instance in the affected Availability Zone in the US East Region at the time of the disruption, regardless of whether their resources and application were impacted or not, we are going to provide a 10 day credit equal to 100% of their usage of EBS Volumes, EC2 Instances and RDS database instances that were running in the affected Availability Zone.
\r\n另外,AWS 的 SLA 中有要求當未滿 SLA 條件時,必須由使用者提出退款要求,但這次則是例外,符合條件的會主動在下次的帳單上,或是系統的頁面上看到:\r\n
These customers will not have to do anything in order to receive this credit, as it will be automatically applied to their next AWS bill. Customers can see whether they qualify for the service credit by logging into their AWS Account Activity page.
", + "title": "Amazon 詳細說明 AWS EBS/RDS 故障的原因..." + }, + { + "id": "2621", + "body": "DotCloud 在官方的 blog 上宣佈提供 Perl PaaS:「DotCloud introduces Camel-as-a-Service with its new Perl stack」,這應該是第一個 Perl Paas,也應該跟 miyagawa (PSGI 協定的建立者與維護者) 加入 DotCloud 有些關係。\r\n\r\n協定是 PSGI,系統目前是用 nginx 加上 uWSGI。目前只有 web 端的部份可以用 Perl,Worker 還不行。\r\n\r\n等帳號下來後再來玩看看...", + "title": "DotCloud 提供 Perl (PSGI) PaaS 服務..." + }, + { + "id": "2623", + "body": "之前在 AWS Console 上一直沒辦法設定 AWS CloudFront 的 Custom Origin,必須透過 3rd-party 軟體設定,而現在總算是把這個功能補上去了:「Improved CloudFront Support in the AWS Management Console」。\r\n\r\n直接拿 Demo 的圖,最重要的 Custom Origin 功能的畫面:\r\n\r\n\"AWS\r\n\r\n不過好像還是沒看到 Purge...", + "title": "Amazon Web Services Console 加強 CloudFront 設定..." + }, + { + "id": "2626", + "body": "沒有把 eval 的 manual 弄清楚,結果中了不少槍... 以這段 code 來說:\r\n
#!/usr/bin/env perl\r\n\r\nuse strict;\r\nuse warnings;\r\nuse Data::Dumper;\r\n\r\nsub a {\r\n    eval {\r\n        return 'Inside eval';\r\n    };\r\n\r\n    return undef;\r\n}\r\n\r\nprint Dumper a();\r\n\r\n__END__
\r\n輸出結果會是 undef,而非 Inside eval,因為:\r\n
the value returned is the value of the last expression evaluated inside the mini-program; a return statement may be also used, just as with subroutines.
\r\n沒專心看 manual 的結果 XD\r\n\r\n不過這還是沒解決我遇到在 eval 裡面仍然會因為 croak 而結束的情況... 再加油吧 :o", + "title": "Perl 的 eval" + }, + { + "id": "2630", + "body": "新電腦是 AMD X4-905e,記憶體插 4GB*2。\r\n\r\n本來的電腦只有 2GB RAM (兩條 DDR2 1GB),之前跑 Windows XP 32bits 還不覺得慢,換到 Ubuntu 上因為需要跑 VirtualBox 就變得很有感覺... 再加上公司的電腦是新配的 (Core i3-540 加上 8GB RAM),回家都在哀怨電腦速度 XD\r\n\r\n本來是考慮只換 8GB RAM (兩條 DDR2 4GB),在家翻了原價屋名人巴德,發現 DDR2 4GB 不怎麼好找 (也不怎麼划算),於是就打算把整台換掉...\r\n\r\n因為有買一顆新的硬碟當作系統碟,換完後就順便再灌一次 Ubuntu 11.04,目前用起來還不錯... 測了一下 smplayer 發現看 rmvb 可以用八倍速看,不錯不錯...\r\n\r\n補上去光華買電腦時,順便到旁邊的漢堡王買特製華堡的餵食日記:\r\n\r\n\"\"", + "title": "換新電腦..." + }, + { + "id": "2633", + "body": "Lexmark X5495,這是安裝過程的畫面... 連續的兩張:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n你到底讓不讓我選啊...", + "title": "Lexmark 的驅動程式..." + }, + { + "id": "2634", + "body": "之前都是自己設定 iptables,這次灌完家裡的系統後用 UFW 設定,對於基本的 firewall 功能來說相當簡單,但也夠用了:\r\n
sudo ufw default deny incoming\r\nsudo ufw default allow outgoing\r\nsudo ufw enable
\r\n如果有需要開某些 port 也可以設定,比起之前自己設 INPUT policy 方便...", + "title": "用 UFW 控制 iptables" + }, + { + "id": "2635", + "body": "這是之前在 Slashdot 上看到的消息,主要是因為 Linux 上的 Firefox 6 (還很久...) 將能夠使用 GCC -O3 編譯:「Firefox On Linux Gets Faster Builds — To Be Fast As Windows」。\r\n\r\n在 VirtualBox 裡面裝好 Windows 後用 Firefox 4 (把 extensions 都裝上去),居然比 Linux 下 native Firefox 還快,就有種淡淡地哀愁...\r\n\r\n繼續等吧...", + "title": "Linux 上的 Firefox 將會跑得更快..." + }, + { + "id": "2637", + "body": "這個 bug 只有在某些站才會出現,像是 SlideShare 的投影片一定會閃,InfoQ 也有同樣情況。是 allowTransparency 產生的問題嗎?不清楚...\r\n\r\nUbuntu 目前系統內是使用 10.2 版,換成 10.3 (目前是 beta) 就會正常了,同樣是透過 PPA 就可以安裝:\r\n
sudo apt-add-repository ppa:sevenmachines/flash\r\nsudo apt-get update\r\nsudo apt-get install flashplugin64-installer
\r\n不過 10.3 對 BBO 有點感冒啊...", + "title": "Ubuntu x86_64 上 Flash 畫面會閃爍的問題..." + }, + { + "id": "2638", + "body": "\"\"\r\n\r\n圖片取自『「デジタルサイネージで電力使用状況表示して「節電にご協力ください」って何か変じゃね?」 』。不知道近況如何...", + "title": "快兩個月了,仍然是很驚人..." + }, + { + "id": "2639", + "body": "感謝 gugod 提供的新版把 Ubuntu 11.04 (Natty) 下無法 compile 的問題搞定了:「Ubuntu 11.04 and perlbrew installation problems」。主要的原因在於 library 放置的路徑改變,造成 PerlConfigure 抓不到。\r\n\r\n順便紀錄一下,有時 CPAN mirror 更新不夠快,cpanm 安裝可能會失敗,這個問題加上 cpan.cpantesters.org mirror 就可以解決:(放到 .bashrc 裡)\r\n
export PERL_CPANM_OPT=\"--mirror http://cpan.nctu.edu.tw/ --mirror http://cpan.cpantesters.org/\"
", + "title": "Ubuntu 11.04 下使用 App::perlbrew 安裝 Perl 5.12.3" + }, + { + "id": "2642", + "body": "參考 blog.gslin.com 的「PIXNET 徵人:System Administrator 一名」,這邊就不列出來了...", + "title": "PIXNET 徵人:System Administrator 一名" + }, + { + "id": "2643", + "body": "很多地方看到這則新聞,隨便引用個 (OSNews):「Facebook Hired PR Firm To Secretly Smear Google」。\r\n\r\n本來只有傳出「公關公司受到某公司的要求要抹黑 Google」,大家狂猜是哪些公司,是 Apple 還是 Microsoft,結果最後是 Facebook 在被爆破後承認了:「Facebook Busted in Clumsy Smear on Google」。\r\n\r\n另外一個可以看的說明是 FUD (中文版:FUD),解釋這類行為。", + "title": "Facebook 僱用公關公司,試著攻擊 (抹黑) Google..." + }, + { + "id": "2645", + "body": "第一次看到這個訊息...\r\n\r\n\"\"", + "title": "Blogger..." + }, + { + "id": "2647", + "body": "我以為這個 project 作者沒打算要更新了... 不過 wiki 上 Changelog 過了三天還是沒更新,mailing list 好像也怪怪的,沒看到更新的公告信件。拿 Gmane 收到的公告當來源吧:「LibTorrent 0.12.8 and rTorrent 0.8.8 released」。\r\n\r\n這次還是 unstable release,修了一些東西...", + "title": "rTorrent 出新版了..." + }, + { + "id": "2648", + "body": "W3 Total Cache 最近的版本更新把一堆站台弄壞 (很像是 css naked day?XD),可以在 Plugin 網頁的回報資訊看出來:\r\n\r\n\"\"\r\n\r\n後來在 forum 上看到有人提:「[Plugin: W3 Total Cache] Minify just won't work」,於是先手動把 minify 功能關閉測試,發現這樣就正常許多,發現看起來應該是跟 minify 有關的問題...\r\n\r\n有遇到的人不需要把 W3 Total Cache 全關,還是可以用其他功能加速並降低負載...", + "title": "W3 Total Cache 0.9.2 與 0.9.2.1 的問題..." + }, + { + "id": "2652", + "body": "在 The Perl Foundation News 上有 Perl 5.14.0 釋出的公告:「Perl 5.14」。講了一堆新功能,比較重要的其實是:\r\n
It is important to note that this version marks the official end of support for Perl 5.10.
\r\n換句話說,目前使用 Perl 5.10 的系統都... (狂抓頭)\r\n\r\n這包括 Debian 全系列 (squeeze/perl 以及之前的 lenny/perl),以及 Ubuntu 目前所有 release 版本 (包括前陣子才出的 Natty)。\r\n\r\n這要怎麼玩啦,並不是 perlbrew + cpanminus 就可以這樣搞啊... 預定明年四月出 5.16.0,這代表現在在跑的 5.12.3 準備再活一年?每個版號只活兩年是怎樣...", + "title": "Perl 5.14.0..." + }, + { + "id": "2654", + "body": "QEMU 的作者 Fabrice Bellard 寫了一個 javascript-based 的 x86 emulator:「Javascript PC Emulator」,技術細節在「Javascript PC Emulator - Technical Notes」。\r\n\r\n其中實做了 486-based CPU,沒有浮點運算能力,另外因為這是 for fun project,所以很多細節沒做 (Linux 開機沒用到的功能都沒做)。以「x86 instruction listings」這邊列出來的指令集,要做到 486 等級,大約 150 條上下?\r\n\r\n真是感謝現在的瀏覽器把 javascript 做的這麼快...", + "title": "在瀏覽器裡面的「Linux 模擬器」" + }, + { + "id": "2655", + "body": "「Plurk API 2.0 beta」總算是提供 OAuth Core 1.0a 介面讓人使用了,想把之前「Twitter 轉 Plurk 的程式...」的程式改寫,不過新的 API 不管怎麼註冊都不會過...\r\n\r\n\"\"\r\n\r\n有人有註冊成功的嗎?\r\n\r\nPS:另外「* 如果這不是一個網頁應用程式,請留空白即可」好像也怪怪的,我記得應該反過來?", + "title": "Plurk API:OAuth Core 1.0a" + }, + { + "id": "2657", + "body": "之前都是一般的自訂頁面,這次居然噴出 Apache 的...\r\n\r\n\"\"\r\n\r\n看起來是 HTTPS only,我用其他瀏覽器看 HTTP 版本是正常的... (至少在沒登入的情況下)", + "title": "很久沒看到 Twitter 噴出 Apache 錯誤訊息..." + }, + { + "id": "2659", + "body": "code 放在「Plurk 新版 OAuth Core 1.0a 的 twitter to plurk」,其中裡面用到的 SQLite 的表格結構請參考「Twitter 轉 Plurk 的程式...」這篇文章的說明。把本來是 plaintext password 的程式換過去後看起來舒服多了,不過中間寫起來讓人頗 orz...\r\n\r\n先是一直沒辦法透過 OAuth::Lite 送出 UTF8 內容,於是決定換成 Net::OAuth,結果因為文件內的範例都沒講到重點而倒地不起...\r\n\r\n然後遇到 Plurk API 2.0 beta 的文件沒有列出是 GET 或是 POST,於是又試了老半天...\r\n\r\n文件真的很重要...", + "title": "支援新版 Plurk API (OAuth Core 1.0a) 的 Twitter To Plurk Script" + }, + { + "id": "2663", + "body": "昨天入手了一台 HTC Flyer,有一些比較簡單的感想,首先是硬體的部份:\r\n\r\n再來是軟體的部份:\r\n\r\n接下來就是看 XDA 上面的後續了...", + "title": "HTC Flyer" + }, + { + "id": "2664", + "body": "Linode 在「NodeBalancers - Managed Load Balancers」這邊公開了 NodeBalancer (lbass) 服務,目前在 beta 中,想要測試的人可以開 ticket 詢問。另外,API 文件也已經先公開,可以在「NodeBalancer API」這邊看到。\r\n\r\n以 API 提供的功能看起來還算 okay,這樣就不需要自己用 Linode 提供的 IP Failover 並且在上面架 HAProxy server...\r\n\r\n不過有些細節還是得等測試後才知道。像是 trusted IP 問題,我在「ELB 的 IP 信任問題...」有提過 EC2 的同樣問題 (前幾天用 ELB security group 解掉了)。", + "title": "Linode 也推出 Load balancer 服務... (剛開始 beta)" + }, + { + "id": "2665", + "body": "前情提要請參考上一篇「Linode 也推出 Load balancer 服務... (剛開始 beta)」。\r\n\r\nLinode 處理的速度很快,開了 ticket 後只用了 12mins 就回應了...\r\n\r\n首先是 data center,目前只有 Newark, NJ 這個機房有提供,而 concurrent connection 是 100 個:\r\n\r\n\"\"\r\n\r\n先開起來然後看一下介面:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n接下來就卡關了,因為目前在 NJ 沒有 node,等下再開兩台玩看看吧...", + "title": "Linode 的 NodeBalancers 第一次嘗試..." + }, + { + "id": "2667", + "body": "這哪招 :o\r\n\r\n\"\"\r\n\r\nUpdate:看起來是被 Adblock Plus 擋掉某些 request 造成的,強制 ABP 更新列表之後就好了。", + "title": "Twitter..." + }, + { + "id": "2668", + "body": "離 expire 時間還很久,但是從 wildcard SSL certificate 換成普通的 SSL certificate:\r\n\r\n\"\"\r\n\r\n不過 gist 沒換,用的仍然是 wildcard 這組:\r\n\r\n\"\"", + "title": "GitHub 換 SSL certificate" + }, + { + "id": "2670", + "body": "在 Ruby Tuesday #19RGBA_ 上都帶過 HTC Flyer 讓一些朋友摸摸看...\r\n\r\n買了這台最方便的就是開會與外面聊天的時候查資料... 尤其是 600x1024 的關係,很多沒有對 mobile 特製的網頁也是可以轉 90 度後用 1024x600 看。也因為如此,我看維基百科是切到正常版看。\r\n\r\n不過買了 Flyer 從來沒在上面看過電子書... Amazon Kindle 比較適合讀文字,在上面看了不少東西。\r\n\r\n會特地寫「HTC Flyer 的問題」是因為有個問題一直解不了,不確定是什麼問題,只好用 Desire 拍下 Flyer 的錯誤畫面:\r\n\r\n\r\n\r\n如果有解法的話麻煩留個 comment 吧 :o", + "title": "HTC Flyer 的問題..." + }, + { + "id": "2672", + "body": "\"\"\r\n\r\n預定在 6/8 舉辦的 World IPv6 Day 快要到了,因為是以 UTC 時間來算,所以換算成台灣的時間,是早上八點開始。在「Participating websites」有列出參與的站台以及會使用的 domain (也就是直接加上 AAAA record)。\r\n\r\n可以看到 Google 是拿 www.google.com 以及 www.youtube.com 出來參戰,Facebook 也會將 www.facebook.com 參與。\r\n\r\n這樣已經很大沒錯,但另外一個重點是 YouTube 的 video data 本身有沒有打算要上這一波的測試。\r\n\r\n另外剛剛發現 HiNet 已經建立了自己的 192.88.99.1 anycast address 負責 6to4 (nopa.tw/45),而 TWGate 則是透過香港的 Hurricane Electric 轉。\r\n\r\n另外兩家大的 ISP 就不提了,都是 Hurricane Electric 在美西的點...", + "title": "World IPv6 Day" + }, + { + "id": "2673", + "body": "好像每次有密碼被流出來就會有人做類似的事情:「A Brief Sony Password Analysis」。\r\n\r\n這次分析的內容中有個不一樣的部份,大概是因為有不少「資料」可以「參考」,所以就拿來交叉比對了:\r\n
67% of accounts on both Sony and Gawker use the same password.
\r\noops... :(", + "title": "Sony 密碼分析..." + }, + { + "id": "2674", + "body": "在「Google +1 Button Performance Review」這篇中,Aaron Peters 對 Google +1 按鈕所提供的方法感到疑惑,因為官方所提供的方法效率其實並不好。\r\n\r\n首先先拿出官方的 sample:\r\n
<!-- Place this tag in your head or just before your close body tag -->\r\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\r\n\r\n<!-- Place this tag where you want the +1 button to render -->\r\n<g:plusone></g:plusone>
\r\n即使 Google 給了建議「Place this tag in your head or just before your close body tag」,但這仍然會延遲 onload 的時間。\r\n\r\n另外一個更糟的是,目前 Google 的伺服器會把使用者從 http://apis.google.com/js/plusone.js 導到 https://apis.google.com/js/plusone.js,多一個重導又使得 onload 時間又更久了。接下來是噴飯的「Cache-Control: private, max-age=360」,這使得 proxy server 無法 cache,而且因為 cache 的時間過短而經常要向 server 要資料。\r\n\r\n再來是這個 js 沒有 minified,造成 gzip 後仍有 628bytes 的差距。然後在這個 script 裡面還可以看到特地為 Blogger「減速」使用 sync loading (喔喔)。\r\n\r\n從以上的情況,可以看出來 Google +1 這個產品符合了不少產品成功的要件... XD\r\n\r\nAnyway,真正的重點在文章最後面,他有引用一段 async loading 的程式碼讓大家用,雖然不能解決所有問題,但至少可以讓 onload 事件儘快觸發... (這是其中一個很大的問題)", + "title": "Google +1 按鈕的效率問題" + }, + { + "id": "2675", + "body": "回家發現螢幕過電沒畫面,看了一下購買日期,過三年保固期在討錢了... 只好先把電腦電源關掉,明天下班的時候去光華商場買一顆回來。在新的螢幕到之前只好先用 laptop 撐著。(剛好前陣子買新的 laptop...)\r\n\r\n查了一下資料,有支援 2560x1440 WQHD 解析度的只有 AppleDellEIZO 這三家有出,拿來寫 code 偶而看看動畫,應該會買 Dell 的吧...\r\n\r\n這個月看起來又得花不少錢了...", + "title": "家裡的螢幕爛了..." + }, + { + "id": "2677", + "body": "在中華電信的網站上可以看到公告:「中華電信HiNet ADSL及光世代感恩回饋」。\r\n\r\n\"\"\r\n\r\n中華電信這次與行政院一搭一唱演得還不賴,繼續打趴其他不長進的固網業者 (參考行政院的「數位匯流發展方案(2010-2015年)」,在 P.26)。\r\n\r\n雖然口號是類似於「提昇普及率,所以大幅調降高速率光纖的費率」,但這次調整最大的實質改變其實是光世代上行速率的提昇 (10M/2M 變成 12M/3M、20M/2M 變成 20M/4M、50M/3M 變成 50M/5M、100M/5M 變成 100M/10M),這使得許多 P2P 應用會更有機會 (對,壹電視的 IPTV box 使用 P2P 會是其中之一)。\r\n\r\n等家裡的 cable 合約到期再來看看要怎麼處理好了...", + "title": "中華又降價了..." + }, + { + "id": "2678", + "body": "World IPv6 Day 結束了,結束後第一個看到公告的是 Facebook 在「Exciting Results from World IPv6 Day」提到的:\r\n
Based on the encouraging results, we’ve decided to leave our Developer site dual-stacked, supporting both IPv4 and IPv6. And we will continue to adapt our entire code base and tools to support IPv6.
\r\n也就是 developers.facebook.com 仍然會保留 IPv6 & IPv4 位置:\r\n
developers.facebook.com\r\ndevelopers.facebook.com. 30 IN AAAA 2620:0:1c00:0:face:b00c:0:7
\r\n不過這次 World IPv6 Day 以 Facebook 的量也才看到 1 million users 啊...\r\n\r\n另外觀察到 www.limelightnetworks.com 還繼續有 IPv6 服務:\r\n
www.limelightnetworks.com. 128 IN CNAME llnw.vo.llnwd.net.\r\nllnw.vo.llnwd.net. 257 IN AAAA 2402:6800:720:11:230:48ff:fed9:f114\r\nllnw.vo.llnwd.net. 257 IN AAAA 2402:6800:720:11:230:48ff:fe8d:aa74
\r\n另外這個比較特別,不確定是還沒拔掉還是決定要繼續跑:\r\n
www.hinet.net. 300 IN AAAA 2001:b000:180:3::7
", + "title": "Facebook 將繼續提供 IPv6 的服務..." + }, + { + "id": "2680", + "body": "剛剛把 gslin.{com,info,net} 的 DNS hosting 從 EveryDNS 上面搬出來,改丟到 Linode 上面代管。(看起來目前付 USD$20/month 的主要用途只有這個?:o)\r\n\r\n理論上是無痛轉換,但如果連線上有遇到問題的話可以寫信給我 (上面的 About & Contact 有聯絡方式),另外在 Twitter 上也可以找到我...", + "title": "從 EveryDNS 搬出來..." + }, + { + "id": "2681", + "body": "在 Firefox 裡,我們可以藉由「預設所有的 cookie 都只能是 session only」加上「例外名單」,做出「關閉瀏覽器就把白名單以外的 cookie 清掉」的功能,但在 Google Chrome 裡面,用內建的功能做不到這件事情。(他只能做到關閉時全部清除,沒辦法把白名單清除在外)\r\n\r\n剛剛找到一個 extension 實做了這個功能:「Vanilla Cookie Manager」,在每次打開 Google Chrome 時會清除所有白名單以外的 cookie,也算是做到這個功能了... (雖然我比較喜歡在關掉的時候處理)\r\n\r\n繼續找 Google Chrome 上對應的套件...\r\n\r\n", + "title": "Google Chrome 的 Cookie 隱私功能..." + }, + { + "id": "2682", + "body": "ICANN 將允許真正的 top level domain,也就是像 .google 這種 domain:「ICANN To Allow .brandname Top-Level Domains」。\r\n\r\n雖然要價 USD$185000,不過這個金額對大公司來說是小 case,應該還是會有蠻多公司去買...", + "title": "真正的「Top level domain」..." + }, + { + "id": "2685", + "body": "UbuntuUnity 在 11.04 很不穩,常常跑一跑就自己變得很慢,或是當掉... 在公司裡蠻多用 Ubuntu 的人是不用 Unity,不過我還是堅持用,反正也用習慣了...\r\n\r\n剛剛又變得很慢,於是就把 browser 關一關重開機,結果重開機後進入登入畫面就當住了,滑鼠與鍵盤都沒反應... XD\r\n\r\n多重開幾次後發現只要碰到 keyboard 就會當,滑鼠的部份沒問題。先懷疑是 keyboard 硬體有問題,換成 ACK-230 後還是一樣,跑 memtest86+ 半輪也沒問題 (8GB RAM 跑起來還真久,跑到 43% 沒問題就不想測了),於是就試著 recovery mode 看看,發現鍵盤是正常的...\r\n\r\n然後就試著死馬當活馬醫,先 dpkg -l | grep usb 把所有 usb 相關的套件全部用 apt-get install --reinstall 重裝,然後再把 gdm 也重裝進去,順便跑 fsck 清一下,重開後居然活過來了...\r\n\r\n也不知道問題到底是出在哪裡... :o", + "title": "差點重灌 Ubuntu..." + }, + { + "id": "2687", + "body": "去寧夏夜市吃宵夜的時候看到蓬萊國小掛上「雲端未來學校」的招牌:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看到 Microsoft 的 logo,所以回家後找了一下微軟的新聞稿:「蓬萊國小善用科技落實一對一的個別化特色學習」,主要是引入 Windows 7 平板電腦。\r\n\r\n還... 蠻有趣的?", + "title": "微軟「雲端未來學校」" + }, + { + "id": "2690", + "body": "Flickr 宣佈支援 OAuth Core 1.0a 了:「Flickr now Supports OAuth 1.0a」,同時也宣佈舊的 API 將在 2012 年的上半年停用。文件在「User Authentication」這邊可以看到。\r\n\r\n另外,除了推出新的 API 以外,Flickr 也提供用舊的 token 直接取得 OAuth Core 1.0a 的 access token 的 API call:\r\n
Transition from the old Authentication API\r\n\r\nYou can exchange an old auth token from the old Authentication API, to an OAuth access token token. The process simply requires that you make an authenticated request to the flickr.auth.oauth.getAccessToken API, which will exchange the old token used to make the request, with a new OAuth access token.\r\n\r\nPlease note, that the old auth token will be deleted 24 hours after calling this API method.
\r\n這個方法讓現有的應用可以直接轉換到新的 OAuth Core 1.0a API 上,不需要再認證一次。", + "title": "Flickr 也支援 OAuth Core 1.0a 了..." + }, + { + "id": "2691", + "body": "在 TechCrunch 上看到 WordPress.org 強制所有 WordPress.org 的使用者更新密碼 (不是 WordPress.com):「WordPress.org Forces Password Resets Due To Compromised Plugins」。\r\n\r\n起因是 AddThisWPtouch 以及 W3 Total Cache 這三個 plugin 有異常 commit 塞入 backdoor code。(瞬間就中兩槍)\r\n\r\n這幾天有更新 plugin 的人最好趕快看一下... 慘啊 :/", + "title": "WordPress plugins 安全性問題" + }, + { + "id": "2692", + "body": "剛剛收到來自 John Doe 的信件 (依要求移除,另外出外景取材):\r\n\r\n\"\"\r\n\r\n\"\"\r\n", + "title": "來份 John Doe 的廣編稿吧..." + }, + { + "id": "2695", + "body": "\"node.js\r\n\r\nnode.js 的 blog 上提到了微軟正在協助 Joyent,將 node.js 移植到 Windows 平台上:「Porting Node to Windows With Microsoft's Help」。\r\n\r\n預定將會釋出官方版本的 node.exe 供大家下載讓大家在 Windows Server 上跑 (依照 blog 的講法是打算向下支援到 2003),並且同時讓 node.js 變成 Windows Azure 其中一項服務。", + "title": "node.js 將在微軟的協助下移植到 Windows 上..." + }, + { + "id": "2696", + "body": "Evan Williams (BloggerTwitter 的創辦人) 認為 domain 的重要性愈來愈低,給出了五個原因:「Five Reasons Domains Are Getting Less Important」。\r\n\r\n五個原因分別是「Google 提供的搜尋」、「輸入網址的自動完成功能」、「行動裝置無法顯示完整網址」、「Apps」、「事實證明很多網站不需要 .com 也能成功」XD\r\n\r\n不過他自己在文章的一開頭也有講:\r\n
While I'm still a sucker for a clean .com, it does seem less important, and it will continue to become less important, ...
\r\n所以有機會搶到 .com 的話還是乖乖的去搶吧... XD", + "title": "Evan Williams 對 domain 重要性的看法..." + }, + { + "id": "2699", + "body": "Google 把最上方的工具列換成黑色了,我是很喜歡這個配色 (更清楚),但有些人大概不怎麼喜歡:\r\n\r\n\"\"\r\n\r\n但如果是 SSL 版本,好像怪怪的,上方的工具列出不來 (關掉 Adblock Plus 也是一樣),應該會有人去反應吧?\r\n\r\n\"\"", + "title": "Google 最上方的工具列換成黑色..." + }, + { + "id": "2700", + "body": "剛剛才開個小會,出來就被 jnlin 提醒,AWS 宣佈降價:「AWS Announces New Data Transfer Pricing」。\r\n\r\n自 7/1 開始,從 Internet 流入 AWS 的費用全免,另外美國與歐洲區的頻寬費再降。美國本來是 10TB 以下 USD$0.15/GB,到 50TB 以下的是 USD$0.11/GB,現在改成 10TB 以下都是 USD$0.12/GB,50TB 以下則是 USD$0.09/GB。除了普通的 data transfer 以外,CloudFront 也有對應的調整。\r\n\r\n對於自己的機器混搭 AWS 的公司來說,光是 inbound bandwidth 不算錢就可以省下一筆可觀的金額...", + "title": "AWS 又降價..." + }, + { + "id": "2703", + "body": "把系統作成 template 後,會希望可以複製多份設定不同的細節。除了要 copy vdi 檔以外,還需要用 VBoxManage 指令修改硬碟映像檔的 UUID 值,不然會因為 UUID 值相同而無法匯入到 VirtualBox 內:\r\n
cp /path1/MyHardDiskTemplate.vdi /path2/ooxx.vdi\r\nVBoxManage internalcommands sethduuid /path2/ooxx.vdi
\r\n另外在有支援 COW 的檔案系統上 (像是 Btrfs?),cp 指令可以試著加上 --reflink,讓檔案系統知道這是同樣的檔案,可以更省空間...", + "title": "VirtualBox 複製硬碟資料的方式" + }, + { + "id": "2706", + "body": "申請 mCool 方案後第一次收到生效月的帳單,厚厚的一包:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n基本月租費率 383 加上 mCool 最高值 299 就是 682,看起來這個方法沒什麼問題。已經幾個月過去了,把想的到的注意事項寫起來:\r\n\r\n一時間想到的就這樣...\r\n\r\n參考資料:\r\n", + "title": "mCool 方案的帳單..." + }, + { + "id": "2707", + "body": "剛剛在 Twitter 上看到 Colin Percival 的 tweet,提到他用「抽換」把 Windows 開機換成 FreeBSD 開機,所以現在可以在 AWS East 上看到 FreeBSD 64bits EBS image 了:「FreeBSD on EC2 via defenestration」。\r\n\r\n缺點是因為這是利用 Windows image 換掉,所以計費會以 Windows 的費用計算。(也就是 Windows tax)\r\n\r\n\"\"\r\n\r\n不愧是 Depenguniator 的作者,總是會想到這種奇怪的方式 XDDD", + "title": "FreeBSD 64bits 在 AWS 上的情況" + }, + { + "id": "2709", + "body": "昨天看到 PuTTY 出 0.61 了:「PuTTY version 0.61 is released」,相隔四年多的另外一個新版。\r\n\r\n看 New features 裡面,我看到一點還蠻有趣的:\r\n
On Windows: the Appearance panel now includes a checkbox to allow the selection of non-fixed-width fonts, which PuTTY will coerce into a fixed-width grid in its terminal emulation. In particular, this allows you to use GNU Unifont and Fixedsys Excelsior. (Thanks to Randall Munroe for a serious suggestion that inspired this.)
\r\n這代表可以用各種奇怪的字體嗎?主力系統換成 Ubuntu 後就沒用 PuTTY 了...", + "title": "PuTTY 0.61" + }, + { + "id": "2711", + "body": "在 Hacker News 上看到的長期計畫,要廢除 ext/mysql:「deprecating ext/mysql」。\r\n\r\n主要的原因是 security 習慣問題。因為 ext/mysql 不支援 prepare 與 execute 這類不需要自己處理 escape 的函式,所以使用 ext/mysql 的人必須自己處理 escape 的問題,也就是透過 mysql_escape_string 或是 mysql_real_escape_string。而很多書籍為了讓初學者容易了解,會給出很糟的範例,像是:\r\n\r\n
mysql_query(\"SELECT * FROM `user` WHERE `username` = '$username';\");
\r\n\r\n而 $username 沒有先檢查過。\r\n \r\n依照提議,目前只會在文件上建議改用 PDO 或是 mysqli,不會對目前版本有任何改變。接下來是 5.5 與 6.0 時會看情況決定要不要加上 E_DEPRECATED。\r\n\r\n目前的提議還沒有提到何時要拔掉 ext/mysql,不過看起來 6.0 之前應該是不會做...", + "title": "PHP 長期計畫:廢除 ext/mysql,改用 pdo_mysql 或 mysqli" + }, + { + "id": "2713", + "body": "在 nginx 網站上有這則訊息,Igor Sysoev 將會成立公司,全力投入 nginx 的發展及維護。nginx 仍然會維持 2-clause BSD license,並免費提供使用。\r\n\r\n在「Nginx Creator Plans Company to Better Serve Millions of Sites Using Its Web Servers」這邊有些說明,另外在說明後面有訪問的內容。\r\n\r\n不知道會提供怎麼樣的服務...", + "title": "nginx 作者 Igor Sysoev 成立公司" + }, + { + "id": "2714", + "body": "Update:更新資訊於「因 techbang.com.tw 與 techbang.tw 事件向 tenz 致歉」。\r\n\r\n剛剛發現連不上,試著找原因,發現是 domain 過期了:\r\n
\r\nDomain Name: techbang.com.tw\r\nRegistrant:\r\n城邦文化事業股份有限公司\r\nCite Publishers\r\n7F., No.141, Sec. 2, Minsheng E. Rd., Jhongshan Dist.\r\n\r\n   Contact:\r\n      Eric Li   tenz1225@gmail.com\r\n      TEL:  886 0225181133\r\n      FAX:  886 0225001905\r\n\r\n   Record expires on 2011-07-22 (YYYY-MM-DD)\r\n   Record created on 2009-07-22 (YYYY-MM-DD)\r\n\r\n   Domain servers in listed order:\r\n      ns-184.awsdns-23.com          205.251.192.184\r\n      ns-573.awsdns-07.net          205.251.194.61\r\n      ns-1813.awsdns-34.co.uk       205.251.199.21\r\n      ns-1511.awsdns-60.org         205.251.197.231\r\n\r\nRegistration Service Provider: PCHOME\r\n
\r\n另外看了一下沒在用的 domain,也是同樣的問題:\r\n
\r\nDomain Name: techbang.tw\r\nRegistrant:\r\n城邦文化事業股份有限公司\r\nCite Publishers\r\n7F., No.141, Sec. 2, Minsheng E. Rd., Jhongshan Dist.\r\n\r\n   Contact:\r\n      Eric Li   tenz1225@gmail.com\r\n      TEL:  886 0225181133\r\n\r\n   Record expires on 2011-07-22 (YYYY-MM-DD)\r\n   Record created on 2009-07-22 (YYYY-MM-DD)\r\n\r\n   Domain servers in listed order:\r\n      ns1.afraid.org       67.19.72.206\r\n      ns2.afraid.org       174.37.196.55\r\n      ns3.afraid.org       72.20.15.62\r\n      ns4.afraid.org       208.43.71.243\r\n\r\nRegistration Service Provider: PCHOME\r\n
\r\n剛好是星期六,不知道什麼時候才會恢復... (tenz 是 Y! 的 staff,再加上過期後必須先 renew 才能 transfer 的 policy,有機會拉椅子出來嗎?)\r\n\r\nUpdate:剛剛看到已經 renew 了,DNS 測起來也 okay 了。沒有 renew 應該是因為沒收到 e-mail notification:「@gslin 帳密都交出去了,他們沒改我有什麼辦法。」。\r\n\r\nUpdate:補上面 Update 的時候忘了把標題一起改掉。", + "title": "看起來有人忘記繳錢了..." + }, + { + "id": "2718", + "body": "因上篇「看起來有人忘記繳錢了…」單獨以 contact mail 仍為 tenz 的郵件位置而認定未交接完成,造成當事人 tenz 極大困擾向 tenz 致歉。\r\n\r\n主要的說明可以參考 Twitter 上 xdite 這兩則 tweet:\r\n
@gslin domain 註冊商後台( PCHOME )有 bug。1. 帳號就是 email,要轉走只能 transfer,不能改 mail …。2. 帳號雖然不能換,但 contact mail 當初有換,但是沒有被更新到 whois 上。\r\n\r\n@gslin 雖然我們設了通知 email,但我們也完全沒收到任何過期通知警告信。所以就活生生炸了。這件事從頭到尾跟 @tenz 一點關係都沒有。 我看到你特別點名他有點錯愕。因為這是 call 我就可以處理的事...
\r\n其他的事情經過可以參考上篇文章內 tenz 於 comment 的說明,在文章內解釋的很清楚。", + "title": "因 techbang.com.tw 與 techbang.tw 事件向 tenz 致歉" + }, + { + "id": "2719", + "body": "在「Java 7 Ships With Severe Bug」這邊提到最近出新版的 Java 7 有 bug,在 Solr 的警告文案裡面有提到這三個 bug:\r\n\r\n由於有幾個 bug 是在 Java 7 正式釋出的最後階段被找出來,再加上制式流程的關係,即使會爛掉 (產生 SIGSEGV),Oracle 還是無法承諾下個 Update (也就是 u1) 會更新,只能保證在 u2 會更新:「sigsegv on porter stemmer (Lucene, but also otherwise)」。\r\n\r\n在「Don’t Use Java 7, For Anything」這篇就更直接了,直接說 Java 7 目前是個不能用的 GA Product:\r\n
Don’t use Java 7 for anything (unless maybe you know you don’t have any loops in your java code)
\r\n先繼續觀望,目前跑 Cassandra 的機器還是先不要亂動...", + "title": "最近出新版的 Java 7 的 bug..." + }, + { + "id": "2720", + "body": "在 Hacker News 上看到的,如果你用 Google Search 搜尋「search」,在搜尋結果的第一頁看不到 Google 的服務:\r\n\r\n\"\"\r\n\r\n純粹是其他技術原因,或者是產品定位的問題?", + "title": "用 Google Search 找「search」" + }, + { + "id": "2721", + "body": "以 Google 在全球的機房數量當然是一個賣點,不過除了 Geo-based 外,Google 還做了很多很多調整,至於這些調整會不會讓效能變好,就不曉得了...\r\n\r\nGoogle 的說明頁面上以 www.ramkikrishnan.com 這個網站當作範例,目前這個網站是指回 original site,如果你要看輸出效果的話可以設 proxy 到 ghs.google.com 硬抓 www.ramkikrishnan.com 的 html 下來看,我把 diff 結果貼到這邊。\r\n\r\n可以看出 Google 做了一些事情:\r\n\r\n目前還看不出來比較複雜的 case,等帳號下來後再實際測試看看會比較準...", + "title": "Google 推出的 Page Speed Service" + }, + { + "id": "2723", + "body": "在 Slashdot 上看到 Samba 出 3.6.0,實做 SMB 2.0 協定:「Samba 3.6 Released With SMB2 Support」。\r\n\r\nSMB 2.0 對於一般人來說,與之前版本最大的差異在速度 (參考微軟人 blog 上「What's new in SMB in Windows Vista」這篇的解釋)。\r\n\r\n不過現在 Samba 是 GPLv3 了,hmmm...", + "title": "Samba 3.6.0 - 支援 SMB 2.0" + }, + { + "id": "2725", + "body": "Slashdot 上看到的消息:「Samsung Hires Steve 'Cyanogen' Kondik」。\r\n\r\n\"CyanogenMod\r\n\r\nCyanogenMod 在非官方 Android 世界裡面是很大一個「派系」,Samsung 把這個派系的老大找進去,應該是有些計畫要讓他做。不管怎樣,目前 Samsung 是 Google/Android 主力 partner,這件事情對 community 應該是好事?", + "title": "Samsung 把 CyanogenMod 作者找進去..." + }, + { + "id": "2726", + "body": "因為 Gmail 沒辦法很方便的切換帳號,所以得想辦法讓 cookie 分開存。\r\n\r\n試著找套件來做到這件事情,但都不太好處理... 於是決定跑兩個不同 profile 的 Chrome (這樣 cookie 就會分開存了)。\r\n\r\nscript 長這樣:\r\n
#!/bin/sh\r\ncd $HOME\r\nexec chromium-browser --user-data-dir=.config/chromium-2/ &
\r\n留個紀錄起來...", + "title": "跑兩個不同 Profile 的 Chrome" + }, + { + "id": "2729", + "body": "因為 Face recognition (人臉識別) 功能,再加上像 Facebook 這種社群網站的功能,將會使得臥底警察非常難以隱藏身份:「Social Media a Threat To Undercover Cops」。\r\n\r\nSlashdot 上的 comment 覺得這樣反到是相當棒,本來就不應該有臥底...", + "title": "Facebook 對於臥底警察的威脅" + }, + { + "id": "2730", + "body": "今年三月的時候,RSA Security 被攻破,攻擊者順利取得 SecurID 的資料,這些資料很有可能降低 SecurID 的安全性。也因此有了 Lockheed Martin 被攻擊的事情。\r\n\r\n在官方的說明「Anatomy of an Attack」中,有提到「2011 Recruitment plan.xls」是使用 Excel 檔案,加上 Adobe Flash vulnerability (CVE-2011-0609) 攻入,而這是個 0-day attack (在當時)。\r\n\r\n防毒軟體專家一直試著找出該份 Excel 檔。經過五個月,終於被找出來三月時寄到 RSA Security 的檔案,由某個可能是 EMC 的人在 3/19 上傳到 VirusTotal 試著掃描:「How we found the file that was used to Hack RSA」。\r\n\r\n開啟這個檔案後會被植入木馬,並且連上 server,接下來的故事在之前 RSA Security 公佈的說明裡面就有不少輪廓了。", + "title": "RSA Security 被攻破的途徑" + }, + { + "id": "2733", + "body": "為了螢幕的問題弄得相當疲倦 XD\r\n\r\n這幾天可以在一般的店家通路買到新的 Mac Mini,但沒事先做好功課,配上 Dell U2711 讓人碰了不少壁...\r\n\r\n買完 Mac Mini 後第一個想法是用 DVI & USB KVM 同時接 PC 與 Mac Mini,於是順便買 ATEN CS682,裝上去後發現只能支援到 1920×1080... 想想算了,其他地方也還用的到。\r\n\r\n第二天再去光華商場找一條 DVI 線 (U2711 有兩個 DVI 接頭),要接上去後發現是 HDMI 轉出來的線而發現不妙,因為 Mac Mini 的技術規格看起來沒有支援 HDMI 1.3 (可以到 2560×1600),實際接上去後發現轉出來的 DVI 也只支援 1920×1080。\r\n\r\n然後查了一下發現可以用 Thunderbolt 當作 Mini DisplayPort 接到 DisplayPort 上面。(蘋果的網站有說明必須是最後一個 device:「顯示器:Mini DisplayPort 顯示器必須是 Thunderbolt 鏈結中的最後一個裝置」)\r\n\r\n星期五再去戰一次,大概有幾個選擇:\r\n\r\n至於 KVM 的話暫時就先不考慮了...", + "title": "新的 Mac Mini" + }, + { + "id": "2736", + "body": "AWS 會把 EC2 的 Public IP range 更新在 Community Forum 的公告區:「AWS Developer Forums: Amazon Elastic Compute Cloud」,目前是在「Announcement: Amazon EC2 Public IP Ranges」這頁 (每次更新可能會再開新的文章)。\r\n\r\n因為這頁還算簡單,要抓出來使用的話可以用:\r\n
lynx -dump https://forums.aws.amazon.com/ann.jspa?annID=1182 | grep -Eo '[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/[0-9]+'
", + "title": "EC2 的 Public IP Range" + }, + { + "id": "2738", + "body": "前幾天 Twitter 推出了中文版 (包括繁體與簡體):「Five new languages」。\r\n\r\n對岸的市場可能還是進不去,但在台灣會加速 Plurk 的死亡... 從 Google+ 的出現以後就愈來愈明顯了,現在 Microblogging 的大魔頭再加入戰局,應該會更快...\r\n\r\n\"\"", + "title": "Twitter 中文版" + }, + { + "id": "2742", + "body": "睡一睡爬起來看文章,發現 Linode 在東京設了機房提供 VPS 服務:「Linode Cloud Asia-Pacific!」,更重要的是價錢 (包括頻寬) 與之前相同:\r\n
There is no premium for placing Linode instances in our Asia Pacific location. Pricing for this location is the same as our other facilities.
\r\n幾個 ISP 的 latency 情況:\r\n\r\n至少沒有繞到地球上奇怪的地區再到日本...\r\n\r\n以「Datacenter Availability」這頁的資料看起來,東京目前有相當多小台的機器可以用... (超過 2GB RAM 以上的就沒幾台了)\r\n\r\n接下來如果能把 Isolated Private Network 做出來,那就...", + "title": "Linode 在東京 (日本) 設機房提供 VPS 服務" + }, + { + "id": "2743", + "body": "手上抓了幾個 .bz2 的檔案要 bzcat 出來 pipe 丟給 Perl script 跑,用系統預設的 bzip2 發現速度卡在解壓縮,而不是 Perl script...\r\n\r\n用 parallel 與 bzip2 當關鍵字到 apt-cache 裡面找,有找到兩個套件:Lbzip2Pbzip2,都裝起來後測解壓縮的功能,發現 Pbzip2 解壓縮時沒有辦法利用到多核心的優勢,而 Lbzip2 則是很順利的超過 100%,輸出結果讓 Perl script 也吃滿 CPU resource...\r\n\r\n如果是壓縮時需要壓縮率,還是用 xz 就好...", + "title": "用 Lbzip2 解壓縮" + }, + { + "id": "2745", + "body": "前幾天 Delicious 正式從 Yahoo! 換手給 AVOS Systems 營運,並進入 beta 階段:「A New Flavor…Still Delicious」。\r\n\r\n這次轉入 beta 用的是 AWS US-West (而不是最大的 US-East):\r\nwww.delicious.com. 300 IN CNAME web-prd-1829768734.us-west-1.elb.amazonaws.com.\r\nweb-prd-1829768734.us-west-1.elb.amazonaws.com. 60 IN A 50.18.62.3\r\nServer 用 nginx (可以參考 Site report for www.delicious.com 這邊的資料),頁面改用 HTML5,目前看起來沒有用 CDN。\r\n\r\n比較意外的是沒有用 Google Analytics,而是用 Chartbeat。\r\n\r\n超大型網站 re-startup?好像很有趣...", + "title": "Delicious 正式換手營運..." + }, + { + "id": "2746", + "body": "公告在這裡:「Amazon Route 53 - Now an Even Better Value」、「Amazon CloudFront & Route 53 - New Edge Location: Brazil」。\r\n\r\nRoute53 的部份,對於少量使用的人來說,每個 domain 每年的代管價錢從 USD$12 降到 USD$6,而對於大量使用的人來說,更有可能降到 USD$1.2。對於有大量 domain 希望上 Anycast DNS 的人來說是個好消息。\r\n\r\n另外一個消息是 AWS 新增巴西的 PoP,是南美的第一個點。包括 CloudFront 以及 Route53 都將受益。不過頻寬費用與 request 費用比之前最貴的東京 20% 以上。如果費用層級再多,AWS 應該要提供可以客製化不同等級的 CDN service (設定只要某些 PoP),不然花不太下手啊...", + "title": "AWS Route53 降價、新增巴西 PoP..." + }, + { + "id": "2747", + "body": "維基百科在官方的 Blog 上宣佈,所有的服務都支援 HTTPS (SSL):「Native HTTPS support enabled for all Wikimedia Foundation wikis」,也就是說,像是「https://zh.wikipedia.org/wiki/Wikipedia:首页」這樣的網址都支援了。\r\n\r\n除了 *.wikipedia.org 以外,*.wikimedia.org 也支援了,於是包括像是 upload.wikimedia.org 也都可以使用 HTTPS:(圖片取自 File:Minori-Chihara-Animelo-Summer-Live-2011-08-27-21-41.jpg)\r\n\r\n\"\"\r\n\r\n當然,還是有一些 script 寫死用 http,接下來應該都會被修正...", + "title": "維基百科全面支援 HTTPS (SSL)" + }, + { + "id": "2748", + "body": "簡單來說,不要在 Ubuntu 下使用 Google Chrome + 文泉驛看韓文。\r\n\r\n開始用 Ubuntu 11.04 當桌機的主力就一直這樣,看韓文版維基百科會出現這樣:\r\n\r\n\"\"\r\n\r\n這幾天放假把筆電的 Ubuntu 升級到 11.10 最新版,發現問題還是一樣,重灌 11.10 beta2 後也還是一樣。因為新灌的機器所以就亂搞一通,意外發現切到英文語系後就正常,於是試著找原因,發現是 /etc/fonts/conf.d 下的 69-language-selector-zh-tw.conf 設定造成的。於是對裡面設定值 trial-and-error 後發現是 sans-serif 用了文泉驛,於是韓文就爆炸了...\r\n\r\n這是拿掉後正常的樣子:\r\n\r\n\"\"\r\n\r\n花了點時間總算能看懂一些 fontconfig 的設定...", + "title": "Ubuntu 下 Google Chrome 看韓文的問題" + }, + { + "id": "2749", + "body": "上個禮拜把 Group.NCTU.edu.tw 遠端升級到 7.4-RELEASE (從 6.4-STABLE),但有人寫信反應,從 Ptt 透過信件貼到板上會失敗,找不到之前 patch 的重點,只好從頭開始一個一個解,總算是解決了:\r\n\r\n現在這樣應該是正常了...", + "title": "INN 裡 mailpost 需要修正的部份..." + }, + { + "id": "2750", + "body": "既然 latency 都差不多 (兩個 site 從台灣過去都要 200ms),git push 速度感覺起來也差不多,找不到理由要付錢給 GitHub,加上 private repository 裡面也沒什麼特別的東西,剛剛就都改丟到 BitBucket 上面,然後把 GitHub 的付費機制 cancel 掉...\r\n\r\n步驟很簡單,在 BitBucket 上開好 private repository,然後把 .git/config 裡面的 origin 換掉後重新 git push -v origin master 就好了。\r\n\r\n參考:\r\n", + "title": "把 GitHub 上的 private repository 搬到 BitBucket 上..." + }, + { + "id": "2753", + "body": "Heroku 不愧是 PaaS 中的領先品牌,deploy 的操作及穩定性都相當好,加上 Heroku 每個 project 都有 1 free dyno 可以使用,對於 prototyping 其實相當棒...\r\n\r\n關於要怎麼在 Heroku 上跑 PHP,可以參考 xdite 寫的「Create PHP application on Heroku without Facebook account」這篇文章。\r\n\r\n有幾個要抱怨的:\r\n\r\n這些問題其實還蠻大的,不過,應該有機會改善... 應該... 應該...", + "title": "Heroku 上跑 PHP 的心得與感想..." + }, + { + "id": "2756", + "body": "在看到 PHPConf Taiwan 2011 的議程介紹後,看到有人在推薦 Slim Framework,一連上去就看到包含 anonymous function 的 sample code:\r\n
<?php\r\nrequire 'Slim/Slim.php';\r\n$app = new Slim();\r\n$app->get('/hello/:name', function ($name) {\r\n    echo \"Hello, $name!\";\r\n});\r\n$app->run();\r\n?>
\r\n然後回頭去翻 PHP 的說明:「Anonymous functions」,發現是從 PHP 5.3 開始支援。\r\n\r\n於是在 JavaScript 上常用到的技巧就也可以在 PHP 上用了:(不影響到全域變數與函數空間的方式)\r\n
// JavaScript\r\n(function(){\r\n    // ...\r\n})();\r\n\r\n// PHP\r\ncall_user_func(function(){\r\n    // ...\r\n});
\r\n接下來是繼續測試 Slim Framework 了,看起來算是一個不錯的小東西... 之後拿來配合 Heroku 這類的 PasS 快速開發應該會很好用 :o", + "title": "PHP 5.3 的 anonymous function" + }, + { + "id": "2757", + "body": "在 Mixpanel Engineering 上提到 MixpanelAWS 搬到 SoftLayer:「Why We Moved Off The Cloud」。\r\n\r\n去年差不多的時間,Mixpanel 從 Rackspace Cloud 搬到 AWS:「We’re moving. Goodbye Rackspace.」。\r\n\r\n每次換的原因都很簡單,就是成長時會遇到問題,然後本來至這家必須用 hack 去堆解法,總是會有一天堆到沒辦法解,或是堆到有人受不了。然後就換到更彈性的方案。\r\n\r\n因為 Mixpanel 去年遇到 Rackspace Cloud 的儲存空間限制 (620GB 限制),以及需要更彈性的機器種類 (有些服務需要記憶體,像是 cache server,而有些則是偏向 CPU,像是 web server,有些則是兩者都需要,像是 database server),所以從 Rackspace 搬到 AWS。\r\n\r\n用了一年的 AWS,接下來今年遇到 performance 問題 (尤其是 I/O performance),所以決定從 AWS 搬出來換成 SoftLayer 的 dedicated hosting service。因為可以客製磁碟的種類與數量。\r\n\r\n至於這兩次搬遷所提到的其他原因看起來只是附帶順便提出來,應該不是主要的問題。\r\n\r\n接下來。如果 Mixpanel 變得更大的話應該是 colocation 吧。dedicated hosting 可以提供機器以及基本的網路服務,如果要比較特殊的設備 (Load Balancer、VPN、Firewall、NAS、SAN、whatever...),遇到沒有提供加值服務的就得改轉成 colocation 自己採購 server 了...", + "title": "Mixpanel 從 AWS 搬到 Softlayer" + }, + { + "id": "2760", + "body": "當大家都在期待 Diablo III 的時候,Diablo 2 居然出 1.13d 新版 patch 了:「Patch 1.13d Now Live」...\r\n\r\n然後天梯 (Ladder) 也重置 (reset) 了,喂喂這哪招,Diablo III 出來前大家好好努力?XDDD", + "title": "Diablo 2 居然出新版了..." + }, + { + "id": "2762", + "body": "把 blog 搬回自己的主機上跑,好像沒有快多少...", + "title": "把 blog 搬回自己主機..." + }, + { + "id": "2763", + "body": "為了跑 heroku 才剛裝完 1.9.2,就看到 TwitterGoogle Plus 有人說 1.9.3-p0 出了:「[ANN] Ruby 1.9.3-p0 is out」。\r\n\r\n首先先用 rvm get head 更新,然後用 rvm list known 應該就可以看到 1.9.3-p0 了,接下來用 rvm use --default 1.9.3 將預設值換成 1.9.3,然後 gem install heroku 把 gem 裝起來...", + "title": "用 RVM 安裝 Ruby 1.9.3" + }, + { + "id": "2764", + "body": "Google Reader 這次一改版後,在網路上可以看到一堆人抱怨到翻...\r\n\r\n用「google reader site:userscripts.org」,然後設限 24 小時內更新的網頁,果然找到不少人試著用 Greasemonkey 寫了對應的 CSS 修改。目前看起來有兩個還不錯:\r\n\r\n這兩個 script 在 Google Chrome 上沒問題 (沒測過 Firefox,所以不確定 Firefox 是否正常),安裝後 reload 看起來好不少...\r\n\r\n工具類的網站還是要把空間留給資訊用,留白反而讓人不方便...", + "title": "Google Reader 改版,以及「自力救濟」的方法..." + }, + { + "id": "2765", + "body": "拿到 iPhone 4S 後到中華電信辦了 Micro-SIM,但 iPhone 沒辦法直接吃 mCool 方案上網 (APN 為 emome,APN Proxy 10.1.1.1:8080),得另外想辦法設定。\r\n\r\n原來在 iPhone 4 的方法也可以在 4S (iOS5) 上面用,也就是「mCool專用iPhone設定檔 (不需JB)」這篇所提到的方法,裡面有一個 .zip 檔,解開後讓 iPhone 的 Safari 開裡面的檔案就可以了。我把檔案放在:「mCool.mobileconfig」。\r\n\r\n記得要打電話請中華電信把 APN 為 internet 的連線權限關掉,這樣才不會收到奇怪的帳單。", + "title": "在 iOS5 上面使用 mCool..." + }, + { + "id": "2768", + "body": "Google Reader 這次改版另外一個為人詬病的問題是「變卡」,主要原因是 Google Plus。\r\n\r\n第一個想到的解決是利用 Adblock Plus,將 http://www.google.com/reader/* 以及 https://www.google.com/reader/* 連到 https://plusone.google.com/* 的連線需求都都擋下來。但看了 Adblock Plus 的文件,不知道要怎麼設定...\r\n\r\n後來想到的解法是自己寫 Google Chrome Extension,主要是很久沒寫都忘光了,剛好找個實際會用到的功能來寫... 主要是用到 chrome.tabschrome.experimental.webRequest 兩組 API 組合。其中後面這組 API 必須用 about:flags 打開權限才能使用。\r\n\r\n成品在這:「google-reader-faster」,由於用到 Google Chrome 的 Experimental API 所以無法上傳到 Web Store,所以暫時先用 dev mode 把 extension 讀進來用。之後要來再研究看看 Adblock Plus 是怎麼做到的...\r\n\r\n把 Google Plus 擋掉後用鍵盤快速鍵操作順很多 XD", + "title": "擋掉 Google Plus,加快 Google Reader 速度..." + }, + { + "id": "2771", + "body": "在 Twitter被丟了訊息,這類訊息通常就是看看而已... 但是連上去看了以後發現價錢相當便宜:「Nexmo - Pricing」,台灣的簡訊是每則 EUR$0.011,相當於 NTD$0.45...\r\n\r\n用 Perl 寫了程式測,測了兩次都很快收到,大約五秒鐘內吧。不過發現中文還是有問題:(這是「中文測試」四個字)\r\n\r\n\"\"\r\n\r\n丟回去給丟我 Twitter 的人了,不知道會不會解...\r\n\r\nUpdate:是我程式的問題 (少了指定 type=unicode),不是對方的 API 有問題:\r\n\r\n\"\"\r\n\r\n來把一些東西丟上去玩看看...", + "title": "用 Nexmo 送簡訊" + }, + { + "id": "2773", + "body": "jQuery 1.7 前幾天丟出來了,可以看到很多對 event 操作的改善,包括效能與功能 (新增了 .on().off()):「jQuery 1.7 Released」。\r\n\r\n另外今天又看到瘦身計畫:「Building a Slimmer jQuery」,希望把一些「應該要拿掉」或是「應該要被修正」的問題處理掉... 所以在 jQuery 1.7 標為 Deprecation,預定在下個主版本就會處理掉這些問題。\r\n\r\n目前 (對我家) 最主要的影響應該是 .live() 會被拔掉,以及之前有使用 .attr('value') 取 current value (要 current value 應該用 .val() 取得)。\r\n\r\n看起來是往好的方面進行...", + "title": "jQuery 1.7 版,並計畫瘦身 jQuery..." + }, + { + "id": "2774", + "body": "AWS 在美西開了新的 region,地點在奧勒岡:「Announcing the new US West (Oregon) Region」、「Now Open - US West (Oregon) Region」。\r\n\r\n\"Announcing\r\n\r\nregion 的代號是 us-west-2,機器、頻寬、request 價格都與美東維吉尼亞 us-east-1 相同,也就是比加州 us-west-1 便宜一些。不過目前的 routing 還需要調整,台灣有些 ISP 過去會需要 170ms...\r\n\r\n要測試新東西應該會在這邊測試吧 (latency 會低一些),不過要等 Ubuntu 官方到上面建立 AMI...", + "title": "AWS 美西 Oregon 機房" + }, + { + "id": "2775", + "body": "昨天聽 othree 提到 jquery-ujs (Unobtrusive scripting adapter for jQuery),裡面有不少 convention 可以直接套用。othree 在三月有寫一篇文章介紹:「jQuery-ujs」。\r\n\r\n雖然 repository 看起來是給 RoR 使用,但直接把 rails.js 抓下來用「<script src=\"rails.js\"></script>」掛上來,還是可以用在非 RoR 環境裡。\r\n\r\n直接看 code 也很好懂,舉幾個例子來說:\r\n
<?php $sToken = hash('sha256', session_id()); ?>\r\n<meta name=\"csrf-token\" content=\"<?php echo $sToken; ?>\">\r\n<meta name=\"csrf-param\" content=\"sToken\">
\r\n表示 CSRF token 名稱為 sToken,值為 hash('sha256', sesssion_id())。\r\n\r\n對於想要先跳出 confirm dialog,再決定要不要繼續執行的連結,可以加上 data-confirm 表示:\r\n
<a href=\"/delete/1\" data-confirm=\"是否要刪除?\">
\r\n如果要用 POST (上面的 delete operation 不應該用 GET,因為資料被變更),可以加上 data-method:\r\n
<a href=\"/delete/1\" data-confirm=\"是否要刪除?\" data-method=\"post\">
\r\n或是直接用 DELETE,在 server side 可以讀 _method 這個值:\r\n
<a href=\"/delete/1\" data-confirm=\"是否要刪除?\" data-method=\"delete\">
\r\n最後,建議大家去看 jquery-ujs 的 wiki,上面有針對用法有比較完整的說明,配著 source code 一起看會比較容易上手。", + "title": "改用 jquery-ujs..." + }, + { + "id": "2777", + "body": "實在是睡不著,來整理一些資料...\r\n\r\n不知道「User Scripts - The Chromium Projects」這份是否 outdated 了,但至少發現在 Google Chrome 裡面推薦用 @match 設定 url,不過原先的 @include 還是可以用:\r\n
Support for Greasemonkey-style @include patterns is also implemented for compatibility, but @match is preferred.
\r\n在 Greasemonkey 的「Metadata Block - GreaseSpot」說明中則是用 @include 設定,直到 0.9.8 (2011/08/01 release) 以及之後的版本才同時支援 @include@match。\r\n\r\n之後改寫 script 的時候再更新好了...", + "title": "Google Chrome 的 user script 與 Greasemonkey 的不同..." + }, + { + "id": "2778", + "body": "要編輯維基百科的時候發現字寬好像不太熟悉,多看了幾個站台,發現 Google Chrome 在 Mac 下面對 textarea 預設的字型不是等寬字... 而且預設的套件沒辦法修改 :o\r\n\r\n知道問題後,就是要找解法了... 目前的解法是裝 Stylish,對所有站台的 textarea 加上 font-family: monospace;,這樣就可以避免當網站沒有對 textarea 指定 font-family 時看起來很突兀...", + "title": "Mac 下 Google Chrome 的 textarea 預設字型..." + }, + { + "id": "2780", + "body": "來函照登:(如果看不清楚,點圖片可以看原始圖片)\r\n\r\n\"「全球創新大賽CODE_n\r\n\r\n呃... tag 不知道要下什麼...", + "title": "全球創新大賽CODE_n 12" + }, + { + "id": "2781", + "body": "Pretty Beautiful Javascript,這是安裝前看 jQuery 1.7.0 程式碼的效果:\r\n\r\n\"\"\r\n\r\n這是安裝後的效果:\r\n\r\n\"\"\r\n\r\n不過 javascript 檔案大一點跑起來就會很慢 XD", + "title": "安裝 Pretty Beautiful Javascript..." + }, + { + "id": "2782", + "body": "起因是想要關掉 Google ChromeMac OS X 上的平滑捲動,找了半天都沒看到,後來被人提醒,Mac 系統有選項提供平滑捲動,Google Chrome 有平滑捲動可能是由作業系統提供,而非 Google Chrome 自己實作:\r\n\r\n\"\"\r\n\r\n關掉後問題就解決了...", + "title": "關掉 Mac OS X 上的平滑捲動..." + }, + { + "id": "2789", + "body": "家裡的 Mac MiniMagic Mouse 中間透過藍牙連接,但有時候會斷掉...\r\n\r\n剛開始是接隻 Apple Mouse 重開藍牙,後來覺得太麻煩了,還是要找可以用鍵盤搞定的方法:「blueutil » Command-Line Control of Bluetooth on the Mac」,裝好後用 blueutil off; blueutil on 就可以重新打開藍牙...", + "title": "重新啟動 Mac 的藍牙..." + }, + { + "id": "2791", + "body": "Firefox 預定在 11 (現在是 8) 支援 SPDY Protocol:「(SPDY) Implement SPDY protocol」,除了 Google Chrome 自家瀏覽器支援外,總算有個大的也要支援了...\r\n\r\n所以現在除了 Chrome、Kindle Fire 以外,又多了 Firefox 支援...\r\n\r\n不過 ApacheF5 什麼時候會支援呢... mod-spdy 看起來... 呃...", + "title": "Firefox 11 將會支援 SPDY Protocol" + }, + { + "id": "2793", + "body": "GitHubOrdered List,兩邊都有新聞稿:\r\n\r\nOrdered List 的產品質感一直都很不錯,最近比較有名的產品就是 Speaker Deck,像是 othree 講 Base2 這篇,embed 起來的效果:\r\n\r\n", + "title": "GitHub 買下 Ordered List..." + }, + { + "id": "2795", + "body": "參考「Revert Alt-tab behavior changed in 11.10」這篇提到的方法改。\r\n\r\nUbuntu 11.10 的 Alt-Tab 切換視窗的行為與 11.04 不同,會遇到切換兩次是不會切回原來視窗的情況。\r\n\r\n我遇到的情況是 Google Chrome 除了 browser 本身以外,還開了一個 Tasky for Google Tasks,於是在系統裡面就會有兩個視窗。當我現在 focus 在 browser window,用 Alt-Tab 切到 terminal 後,再用 Alt-Tab 切回來,focus 變成在 Tasky 上面... 這讓人相當困擾 :o\r\n\r\n依照上面那篇文章所提到的方法改系統設定就回到原來 11.04 比較不那麼擾人的切換方式...", + "title": "把 Ubuntu 11.10 的 Alt-Tab 行為改掉..." + }, + { + "id": "2797", + "body": "前陣子看到 fcamel 丟出來的舊文章:「Debugging make」,花了一些時間看裡面關於 BSD make 與 GNU make 的相同處,之後寫 Makefile 的時候應該會相當有幫助。\r\n\r\n目前的目標是 FreeBSDUbuntu,文章裡面有提到三個變數在兩個平台是通用的,分別是 $< (The source from which the target is to be made)、$* (The base name of the target (no extensions or directory))、$@ (The full name of the target)。\r\n\r\n另外文章後面也有提到不相容的地方... 如果能避免就儘量避免?", + "title": "BSD make 與 GNU make 的 Makefile..." + }, + { + "id": "2798", + "body": "因為打算給 portsnap 用,所以得用 Squid 3.1 架 forward proxy,可以避免大量對外抓同樣的資料...\r\n\r\n由於是內部的機器,不需要擋 acl,設定起來超簡單... ports 裝完 www/squid31 後,把 squid.conf 寫成:\r\n
#\r\nhttp_access allow all\r\n#\r\naccess_log /home/squid/logs/access.log squid\r\ncache_dir aufs /home/squid/cache1 1024 16 16\r\ncache_effective_group squid\r\ncache_effective_user squid\r\ncache_log /home/squid/logs/cache.log\r\ncache_mem 256 MB\r\nhttp_port 3128
\r\n這樣就「會動」了... (先不管效率) 照 squid 的慣例,第一次必須先跑 /usr/local/sbin/squid -z 讓目錄建立出來,後面就是標準的 /usr/local/etc/rc.d/squid start。", + "title": "Squid 3.1 的 forward proxy 設定..." + }, + { + "id": "2800", + "body": "今天花了不少時間找到的問題...\r\n\r\n問題是使用 mod_fastcgi 以及 mod_deflate 時,Content-Encoding 會是 gzip,但 Content-Length 會是未壓縮的長度。\r\n\r\n也就是說,伺服器端在 header 提供的 Content-Length 可能寫 8KB,但實際上只丟出 2KB (壓縮後的大小),於是瀏覽器讀完這 2KB 後會停下來一直等,等到 Keep-Alive timeout 斷線 (在我機器上預設是 5 秒)。\r\n\r\n在 timeout 斷線後 browser 會就抓到的資料直接解開執行 (因為這 2KB 都有抓到,於是都正確執行)。如果用瀏覽器這邊的 debugger 觀察,就會發現從 first byte 後 5.00 秒才 document ready。\r\n\r\n解法有人在 2008 年給過:「Content-Length header should be set using\tap_set_content_length」,不過因為 mod_fastcgi 一直沒出新的正式版,所以大家都還是拿到舊的版本。\r\n\r\n所以,與之前修正 multi-threading 的問題一樣,往 ports 本身丟 patch:「Update www/mod_fastcgi to fix mod_deflate issue.」,修正後再測試就正常了。", + "title": "同時用 mod_deflate 與 mod_fastcgi 所產生的問題..." + }, + { + "id": "2802", + "body": "依照環球唱片 (Universal Music Group,UMG) 提供給法院的文件中,YouTube (也就是 Google) 允許 UMG 透過 YouTube 的 CMS (Content Management System) 移除「不屬於 UMG 的影片」:「Google Deal Allegedly Lets UMG Wipe YouTube Videos It Doesn't Own」,文件 (PDF) 在:「gov.uscourts.cand.248875.14.0.pdf」這邊可以下載取得。\r\n\r\n重點在於這份文件中第四頁的這段:\r\n
The UMG-YouTube agreement grants UMG rights to effect the removal of user-posted videos through YouTube’s Content Management System (“CMS”), based on a number of contractually specified criteria that are not limited to the infringements of copyrights owned or controlled by UMG. Klaus Decl., Ex. 4 (Klaus to Kavanaugh letter, Dec. 14, 2011). Dotcom speculates in his declaration that Universal must have sent a so-called “DMCA notification form,” such as the one he printed and attached at Ex. E to his declaration, to YouTube. Doctcom Decl. ¶ 11. But UMG (which interacts with YouTube) does not use that form when requesting the removal of material pursuant to UMG’s contract with YouTube. UMG uses YouTube’s automated CMS system.
\r\n繼續來看後續吧...", + "title": "YouTube (Google) 允許環球唱片 (Universal Music Group,UMG) 直接移除非 UMG 所擁有版權的影片" + }, + { + "id": "2803", + "body": "從「How big are PHP arrays (and values) really? (Hint: BIG!)」這篇看到的。文章本身值得花些時間看過了解,不過對我來說重點在最後面的 SplFixedArray。\r\n\r\nPHPDatastructures 說明目前 PHP SPL 所支援的 data structure,在記憶體用量以及效率上面都會比自己實作來的小且快。\r\n\r\n可以看到很多都支援 Countable、Iterator,以及 ArrayAccess,代表可以用 foreach() 或是對應的方式存取... 如果自己寫 library 的時候應該要善用這些 SPL。", + "title": "PHP 提供的資料結構..." + }, + { + "id": "2804", + "body": "整理下來:\r\n\r\n有玩過 HMAC 的人,讀這些文件應該不難...\r\n\r\nTOTP 在預設的情況下,其實就是 HMAC-SHA-1 後取後面 32bits,然後轉成數字取 100000 的餘數,而 TOTP 文件是架構在 HOTP 的定義上,把時間切齊 (預設 30secs) 變成整數丟進去攪和,然後特地交代要處理 2038 年超過 Int32 的 case XDDD\r\n\r\n最後 Google 那份文件是要輸出 QR code 讓手機可以讀的方式,建議不要用網路服務產生 QR code (因為有 secret key 啊),寧可自己抓 library 建一個用...\r\n\r\n另外 Google Authenticator 一堆東西都只能用預設值 (Currently, the XXX is ignored by the Google Authenticator implementations.),所以也沒什麼好選的,就拿預設值吧... :o\r\n\r\nServer side 的話,至少我在 CPAN 上面看到 Authen-OATH 可以用了,用起來也很簡單 :o", + "title": "如果要自己寫 TOTP 的幾個要看的東西..." + }, + { + "id": "2805", + "body": "弄了整個週末的 gitolite,總算是把 hook 搞定。\r\n\r\n簡單的說,修改完 ~/.gitolite/hooks/common/ 裡的 hook script 後,需要下 gl-setup 指令,這個指令會把現在所有的 git repository 內的 hook script 再 symbolic link 一次。\r\n\r\n另外,gitolite 的環境變數可能會影響 git 本身執行 (我是在 git pull -v 更新某個目錄下的 git repository 時失敗),這時可以用 /usr/bin/env -i /usr/local/bin/git 確保 git 執行時不會被環境變數影響...\r\n\r\ngitolite 看起來是個好東西,不過光是靠官方的文件要搞定頗累... (週末都在 Stack Overflow 上度過)", + "title": "gitolite 的 hook..." + }, + { + "id": "2808", + "body": "那個紅色的數字 icon 還蠻妨礙工作的,到 userscripts.org 上翻一翻,果然有人有寫過了 (雖然是沒幾天前):「Go Away! Google Plus」。\r\n\r\nPS:隨便丟字進去測試的時候,發現 \"test\" 第五名是 tw.yahoo.com,這是怎麼了...?", + "title": "把 Google Plus 的數字 icon 藏起來..." + }, + { + "id": "2810", + "body": "Akaiami 的新聞稿先出來了:「December 22, 2011 - Akamai to Acquire Cotendo」,Cotendo 的只有在 Twitter 上看到官方帳號提到 Akamai 的新聞稿。\r\n\r\n併購的金額在:\r\n
Under terms of the agreement, Akamai will acquire all of the outstanding equity of Cotendo in exchange for a net cash payment of approximately $268 million
\r\n上個月月底的時候就有消息了:「Akamai Reportedly Buying Rival Cotendo For Up To $350 Million」,不過一直都是謠傳而已...\r\n\r\nCotendo 的產品在 Akamai 裡面都有對應的產品,這次併購看起來比較像是減少競爭對手,或是買專利...", + "title": "Akamai 買下 Cotendo..." + }, + { + "id": "2811", + "body": "HP 發了安全通告「HPSBPI02728 SSRT100692 rev.2 - Certain HP Printers and HP Digital Senders, Remote Firmware Update Enabled by Default」,在安全通告內列出的印表機都有安全問題,「允許遠端安裝未經授權的印表機韌體」,攻擊者可以遠端直接安裝有木馬的韌體:\r\n
A potential security vulnerability has been identified with certain HP printers and HP digital senders. The vulnerability could be exploited remotely to install unauthorized printer firmware.
\r\n另外可以參考 CVE-2011-4161 的說明:\r\n
The default configuration of the HP CM8060 Color MFP with Edgeline; Color LaserJet 3xxx, 4xxx, 5550, 9500, CMxxxx, CPxxxx, and Enterprise CPxxxx; Digital Sender 9200c and 9250c; LaserJet 4xxx, 5200, 90xx, Mxxxx, and Pxxxx; and LaserJet Enterprise 500 color M551, 600, M4555 MFP, and P3015 enables the Remote Firmware Update (RFU) setting, which allows remote attackers to execute arbitrary code by using a session on TCP port 9100 to upload a crafted firmware update.
\r\n能更新的就想辦法更新吧,無法更新的看看有沒有辦法處理 port 9100...", + "title": "請更新 HP 印表機的韌體..." + }, + { + "id": "2813", + "body": "Ubuntu 提供的 rTorrent 比較舊,11.04 上面只有 0.8.6 可以用,11.10 則是 0.8.7。目前最新的 stable 是 0.8.9,有支援 magnet uri... 找了 launchpad 上面有沒有人做,看起來是沒有 :/\r\n\r\n因為不想影響到系統舊版的 libTorrent 與 rTorrent,所以裝在自己的 home directory 下。\r\n\r\n先安裝 libTorrent,用 ./configure --prefix=/home/gslin/foo 之後用 make 編完後 make install 就可以了,有缺軟體的部份會跳訊息出來,用 apt-get 補上 -dev 版本後再繼續安裝。\r\n\r\n再來是 rTorrent,首先要注意的是要裝 libncursesw5-dev,也就是有 wide character support 的版本,不然顯示 UTF-8 會有問題 (實際在磁碟上的檔名不會有問題,但顯示會有問題),接著用 libtorrent_CFLAGS=\"-I/home/gslin/foo/include\" libtorrent_LIBS=\"-L/home/gslin/foo/lib -ltorrent\" ./configure --prefix=/home/gslin/foo 指定 libtrorrent 所在位置,然後用 make 編完後 make install。\r\n\r\n接下來用 ~/foo/rtorrent 執行,應該就會是新版的 rTorrent 了...", + "title": "自己編 rTorrent 與 libTorrent..." + }, + { + "id": "2814", + "body": "主要是參考「Cryptographic Right Answers」這篇給的建議:\r\n
Password handling: As soon as you receive a password, hash it using scrypt or PBKDF2 and erase the plaintext password from memory. \r\nDo NOT store users' passwords. Do NOT hash them with MD5. Use a real key derivation algorithm. PBKDF2 is the most official standard; but scrypt is stronger. \r\nPlease keep in mind that even if YOUR application isn't particularly sensitive, your users are probably re-using passwords which they have used on other, more sensitive, websites -- so if you screw up how you store your users' passwords, you might end up doing them a lot of harm.
\r\n其中 scrypt 是作者自己發展的演算法,這邊看看就好。\r\n\r\n你可以用 PBKDF2 (RFC 2898)。這邊假設的前提是,你不需要常常重複計算使用者的密碼是否正確。在這個前提下,我們可以把演算法弄得很複雜,而且很耗時,要複雜到用硬體加速也無法產生實質上有效的攻擊。\r\n\r\n如果你對密碼學這個領域並不熟,Colin Percival 這篇文章可以拿來當做起點,文章裡面告訴你,某些類型的問題會用某些工具解決。", + "title": "儲存密碼的方式" + }, + { + "id": "2815", + "body": "The Pirate Bay 將把 torrent 檔下載方式換成磁力連結:「The Pirate Bay Will Stop Serving Torrents」。\r\n\r\nMagnet URI 下載 BitTorrent 檔案其實只是多了一個抓 torrent 檔的步驟:首先先從 Magnet URI 內取得 SHA1 值,然後透過 DHT 抓到 torrent 檔的 metadata,然後後面就可以照舊進行... 至於 DHT 的初次建立,除了可以透過中央式的 router.utorrent.com 取得外,也可以透過其他 torrent 檔案下載所提供的 tracker 找到節點。在取得一批節點後,透過 PEX 交換出更多的節點。\r\n\r\nDHT + PEX 的技術逐漸成熟 (愈來愈多程式支援),然後是最大的 torrent site 採用。之後的 public torrent site 應該都會改朝這個方向走...", + "title": "The Pirate Bay (海盜灣) 從 Torrent 檔下載換成 Magnet URI (磁力連結)" + }, + { + "id": "2819", + "body": "桌機還在用 Ubuntu 11.04,剛剛 apt-get 升級後沒聲音了 (有注意到 kernel 有更新),後來是用「Ubuntu 11.04 - No sound at all」這篇的方法解決:\r\n
rm -r ~/.pulse ~/.asound* ~/.pulse-cookie \r\nsudo rm /etc/asound.conf
\r\n重開機後就有聲音了...", + "title": "Ubuntu 11.04 最近一次 kernel 升級後沒聲音..." + }, + { + "id": "2821", + "body": "之前寫了一個處理 Referer header 的 extension,使用 chrome.experimental.webRequest.onBeforeSendHeaders.addListener 攔截所有的 url 然後處理 Referer header。\r\n\r\n之前只需要在 manifest.json 裡面加上 experimental 就可以使用,但是前陣子發現失效。剛剛在「onBeforeSendHeaders listeners aren't triggering」這個 issue 裡面找到解法:現在需要多加上 <all_urls> 這組權限。", + "title": "Google Chrome Extension 內攔截所有的 url request..." + }, + { + "id": "2824", + "body": "用 Google Chrome 用一陣子了,回頭來看看 Firefox 發展的如何... 在 Location bar 輸入網址還是鈍鈍的問題還是沒解,不過很明顯感覺速度跟 Chrome 差不多了...\r\n\r\n裝了一卡車套件,用一陣子看看吧 :o", + "title": "換回 Firefox..." + }, + { + "id": "2825", + "body": "劉老師交大退休後,以前與 CCCA 有淵源的人差不多都會在每年年底的時候約老師出來聚餐 (被稱為「期末總檢討」)。不過去年年底沒約,趁著過完年後另外找時間跟老師聚聚聊天,於是蔡依林去餐廳訂了這個星期天中午的位置,大家坐著聊一聊...\r\n\r\n中間聊天的過程就略過了,一群老人在懷舊嘴砲 :o\r\n\r\n跟以往差異最大的,大概是老師開刀後身體比較需要休養,之後不方便跟他拼白酒了... XD", + "title": "跟老師吃飯..." + }, + { + "id": "2826", + "body": "有點舊的消息,之前看到有人提但當時沒有寫 blog,最近又看到這張圖...\r\n\r\n\"\"\r\n\r\n這是 John Carmack (id Software 創辦人) 在 1995 年所拍攝的 1920×1080 CRT 螢幕,吃電能力高達 180W:「John Carmack coded Quake on a 28-inch 16:9 1080p monitor in 1995」...\r\n\r\n以時間點來算,這應該是開發 Quake 系列所用的螢幕...", + "title": "John Carmack 在 1995 年的 28\" 1920×1080 螢幕..." + }, + { + "id": "2829", + "body": "我家裡有兩台桌機在用,一台是跑 Ubuntu 11.10,另外一台是 Mac Mini (上面是 10.7),雖然 Mac 的字比較好看,但平常主要開發都還是在 Ubuntu 上,因為搞不定 iTerm2 過 GNU Screen 後只剩下標準 16 color 的問題...\r\n\r\n中間找問題的過程就跳過去 (也忘的差不多了),最後是在「Report Terminal Type」這邊找到解法,本來是「xterm-256color」,改成「xterm」後 screen 內的 256 色就出現了:\r\n\r\n\"\"", + "title": "iTerm2 + screen (FreeBSD 上) 的 256 色" + }, + { + "id": "2830", + "body": "如果要知道 Apache 2.4 有哪些與 2.2 不同的地方,看官方提供的「Overview of new features in Apache HTTP Server 2.4」會比起看新聞網站清楚。\r\n\r\n對每個 SA 來說,重視的地方都會不太一樣。我認為有幾個比較重要的:\r\n\r\n會選擇 Apache 其實最重要的原因是 .htaccess,他的效率只要好到使用的資源可以被 PHP 忽略就行了...", + "title": "Apache 2.4..." + }, + { + "id": "2832", + "body": "在 Slashdot 看到 iPhone 使用者使用 AT&T 所提供的 Unlimited data plan,但卻因為使用量過大而被限速,於是控告 AT&T 勝訴的案例:「User Successfully Sues AT&T For Throttling iPhone Data」,不過這件案子還可以上訴。\r\n\r\n雖然有線與無線的架構差很多,但這讓我想到「NCC通過20M光纖費率 但不准中華電信限速」這則 2009 年的報導,以及「3G上網太慢 中華電信擬提回饋方案」、「重度行動上網用戶調高收費案 中華電信暫時喊卡」這兩則去年的新聞...", + "title": "AT&T 因限制使用者 iPhone 使用量被告,判罰 $850 美金" + }, + { + "id": "2833", + "body": "Slashdot 的「Hard Drive Shortage Relief Coming In Q1 2012」這篇提到 2012Q1 (就是現在這季) 的硬碟產量回穩,算算時間也的確差不多了...\r\n\r\n不過讓我想紀錄的是一開始的這段:\r\n
\"According to new reports [note: source article at DigiTimes],
\r\nSlashdot 上對 DIGITIMES 有種「...」的感覺,每次看他們引用 DIGITIMES 都很好笑 XD", + "title": "硬碟產量..." + }, + { + "id": "2835", + "body": "在變成標準前又改了一次...\r\n\r\n從 Google Chrome 17 後,「Web Requests」從 Experimental API 變成正式的 API,有不少地方在這次轉成正式 API 後需要修改:\r\n\r\n在 Chrome Web Store 上面已經可以看到一些跟控制 Referrer 有關的延伸套件了...", + "title": "Chrome 的 webRequest..." + }, + { + "id": "2837", + "body": "The Pirate Bay 宣佈將所有的 .torrent 拿掉,改用 Magnet URI:「No more torrents=no changes anyhow」,另外可以參考「The Pirate Bay, Now Without Torrents」這篇。\r\n\r\n\"\"\r\n\r\n不過也不是全部拿掉。只有當 .torrent 檔被十個人下載後,The Pirate Bay 才會將 .torrent 下載轉成 Magnet URI 的形式提供後續服務,以確保有足夠的使用者擁有 torrent 檔。這樣使得 The Pirate Bay 的頻寬用量降低,並且拉高阻擋的難度。\r\n\r\nPS:imgur 剛好掛掉了,等恢復後再把上面的圖換成 imgur...\r\n\r\nUpdate:imgur 恢復了...", + "title": "The Pirate Bay 將全面 Magnet 化..." + }, + { + "id": "2838", + "body": "\"\"\r\n\r\nBL EACH?合宿?(腦袋轉不過來)", + "title": "有時候斷字實在太巧妙..." + }, + { + "id": "2839", + "body": "在 Slashdot 上看到「Stealthy Pen Test Unit Plugs Directly Into 110 VAC Socket (Video)」這東西...\r\n\r\n\"\"\r\n\r\n看圖片與規格資料,應該是接一個 110 伏特的電,然後插入一張 3G SIM 卡,就可以透過 3G 的頻寬管理這顆盒子。理論上可以完全被動收無線網路訊號,把收到的資料透過 3G 丟出來... 超棒的滲透工具?XD\r\n\r\n無線網路強制上 VPN 應該是常見的解法了...", + "title": "滲透測試..." + }, + { + "id": "2840", + "body": "PHP 5.4 前幾天正式釋出了:「PHP 5.4.0 released!」,新增與改變了很多東西。\r\n\r\n有些蠻值得注意的地方:\r\n\r\n另外記憶體使用量以及效能都有巨大的改善,尤其是對物件的 method 效能改善很多,這對 framework 是好消息。\r\n\r\n不過應該還是等 5.4.1 之後再用吧,剛出來的這幾個版本應該有不少人會踩到地雷需要修正...", + "title": "PHP 5.4" + }, + { + "id": "2842", + "body": "AWS 宣佈 EC2 以及使用 EC2 的服務 (包括 RDS 與 ElastiCache) 降價:「New, lower pricing for Amazon EC2, RDS, and ElastiCache」,降價幅度在 Reserved Instances 比較大,但 On Demand Instances 的部份也有降一些。\r\n\r\nAmazon.com 的 CTO Werner Vogels 也寫了一篇「Driving Compute Cost Down for AWS Customers」可以看看。\r\n\r\n另外在「Amazon S3 Performance Tips & Tricks + Seattle S3 Hiring Event」這邊有 Doug Grismore (Director of Storage Operations for AWS) 寫了一篇客座文章,說明當量很大的時候要怎麼提昇對 AWS S3 存取的效能。這篇文章裡面有提到一些內部實做的結構,藉著了解這些內部結構,規劃檔案名稱,藉此提昇效能。", + "title": "AWS EC2 (以及使用 EC2 的加值服務) 降價,以及提昇存取 AWS S3 的效能..." + }, + { + "id": "2844", + "body": "正式的聲明在這:「ANNOUNCING THE JQUERY FOUNDATION」,算是在 John Resig 淡出後,組織架構上比較大的改變...\r\n\r\n基金會正式的網站在 jquery.org。", + "title": "jQuery 成立基金會" + }, + { + "id": "2845", + "body": "在 GitHub 被攻擊成功後 (參考 GitHub 官方所說的「Public Key Security Vulnerability and Mitigation」這篇),官方除了把漏洞修補完以外,接下來做了更積極的措施:暫停所有的 SSH key 存取權限,一律等到用戶 audit 確認過後才開放:「SSH Key Audit」。\r\n\r\n這次 GitHub 除了修正問題、audit key 以外,另外還提出了新的機制讓用戶更容易發現異常存取行為,包括了:\r\n\r\n算是很積極補救的作法。\r\n\r\n另外說明,要如何 audit key,也就是要如何取得你的 public key fingerprint:\r\n
ssh-keygen -lf .ssh/id_rsa.pub (如果你是用 RSA)\r\n或是\r\nssh-keygen -lf .ssh/id_dsa.pub (如果你是用 DSA)
\r\n出現的訊息就是你要比對的值。記住!既然是 audit,請一個一個比對確認 fingerprint 全部都正確。\r\n\r\n附上原始信件:(好像還沒在 blog 上說明)\r\n
\r\nA security vulnerability was recently discovered that made it possible for an attacker to add new SSH keys to arbitrary GitHub user accounts. This would have provided an attacker with clone/pull access to repositories with read permissions, and clone/pull/push access to repositories with write permissions. As of 5:53 PM UTC on Sunday, March 4th the vulnerability no longer exists.\r\n\r\nWhile no known malicious activity has been reported, we are taking additional precautions by forcing an audit of all existing SSH keys.\r\n\r\n# Required Action\r\n\r\nSince you have one or more SSH keys associated with your GitHub account you must visit https://github.com/settings/ssh/audit to approve each valid SSH key.\r\n\r\nUntil you have approved your SSH keys, you will be unable to clone/pull/push your repositories over SSH.\r\n\r\n# Status\r\n\r\nWe take security seriously and recognize this never should have happened. In addition to a full code audit, we have taken the following measures to enhance the security of your account:\r\n\r\n- We are forcing an audit of all existing SSH keys\r\n- Adding a new SSH key will now prompt for your password\r\n- We will now email you any time a new SSH key is added to your account\r\n- You now have access to a log of account changes in your Account Settings page\r\nSincerely, The GitHub Team\r\n\r\n--- https://github.com support@github.com\r\n
", + "title": "GitHub 要求全面檢查 SSH Key" + }, + { + "id": "2846", + "body": "之前用 AWS EC2 的人常遇到的狀況是,t1.micro 記憶體太小會常常 out of memory (用 EBS 硬撐當 swap 效能不好),但 m1.small 只能跑 32bits,為他做完整的 32bits image 維護成本實在不划算,因為等到之後變大後又得改做一份 64bits 的 image,如果從 t1.micro 改用 m1.large 又嫌太大台...\r\n\r\n現在這個問題總算是解決了:「Announcing three new Amazon EC2 features」,EC2 這次提供新功能包括:\r\n\r\n於是本來的問題可以用不同方向解決:\r\n\r\n另外這次提供 Java SSH client,可以讓你直接在 Web Console 上面一貫作業,這個就比較用不到了...", + "title": "AWS EC2 全面支援 64bits,並補上產品線..." + }, + { + "id": "2847", + "body": "去年年底時 Matthew DillonDragonFly BSD mailing list 上的說明:「Buildworld loop seg-fault update -- I believe it is hardware」,以及今年三月從 AMD 確認問題「AMD cpu bug update -- AMD confirms! (additional info)」。\r\n\r\n可以從 mailing list 上看到他想辦法重製問題的方法 (從兩天才能重製,到小於 60 秒就能重製),讓他覺得最棘手的原因是無法引入工具:\r\n
Debugging the issue in userland (and kernelland) is extremely difficult because most debugging mechanisms caused the problem to stop occuring.
\r\n當故事看還蠻... 有趣?(當事人大概不這麼覺得)", + "title": "AMD CPU bug 問題..." + }, + { + "id": "2848", + "body": "在 OSNews 上面看到:「Why vim uses the hjkl keys as arrow keys」,引用了「Here is why vim uses the hjkl keys as arrow keys」這篇文章,提到為什麼 vi 使用 hjkl 表示左下右上四個方向,以及用 ~ 表示 home directory 的原因。\r\n\r\n首先是 Bill Joy 發明 vi 時所使用的 ADM-3A terminal 鍵盤的樣子:\r\n\r\n\"\"\r\n\r\n再來是 ~ 這個鍵上面寫著 HOME:\r\n\r\n\"\"\r\n\r\n既然有人定義好,那就直接拿來用 :p", + "title": "用 hjkl 表示左下右上,以及 ~ 表示 home 的原因..." + }, + { + "id": "2851", + "body": "我家裡與公司的 Mozilla FirefoxGoogle Chrome 都是在 Ubuntu 上面跑,至於家裡的 Mac Mini 就沒換了,還是跑 Chrome。來講一下我對這兩個瀏覽器的的感覺。\r\n\r\n從安裝開始,在 Ubuntu 下面我是透過 ppa 裝 release 前一個 channel (兩個都叫做 beta)。安裝的方式很簡單,設好 ppa 後 apt-get update; apt-get dist-upgrade 就會把系統的 Firefox 與 Chrome 升級到新版。\r\n\r\n對於套件的相容性,Firefox 有很明顯的改善,現在從 Release 升級到 Beta 的時候不會直接把所有的套件標成不相容,會有一些機制處理,這方面算是跟 Chrome 有得玩。\r\n\r\n另外一方面 Chrome 也支援更多 API 讓套件使用,現在套件可以做很多網路層的操作,接下只要 Chrome 把 UI API 設計完整一點就可以了... (Chrome 上面套件的設定畫面相較於 Firefox 是有需要再改善的,瀏覽器對 UI API 支援太陽春算是原因之一...)\r\n\r\n同步的問題因為 Chrome 可以綁定 Google 帳號,就算是 Two-Factor 時也可以用 application password,而 Firefox 的同步功能我試了三次都沒成功過...\r\n\r\n效能方面,可以發現兩個瀏覽器的效能都很好了,Twitter 算是 script 很多,可以感覺到比較頓的網站 (參考「bandwidth」這篇),兩個瀏覽器用起來都不會有明顯的不順暢。\r\n\r\n操作方面是還是可以感覺到 Firefox 在某些地方卡住:\r\n\r\n最後要談的是穩定性,兩者的穩定性都已經可以接受,只是很明顯 Firefox 遇到複雜的 script 還是不太穩,無論是 Facebook 還是 Twitter,偶而會出問題,這時候把 browser 關掉再開就好了...\r\n\r\nFirefox 大概還會再用一陣子吧... 算是測試不同的 browser。", + "title": "Mozilla Firefox 與 Google Chrome..." + }, + { + "id": "2852", + "body": "最近看到電子投票的事情,想起之前研究所時所學的密碼學... 是否有辦法找出一個合理的密碼系統,可以在密碼學這層解決電子投票要處理的問題:\r\n\r\n有很多人試著去建立這樣的系統 (在「Cryptography - Electronic Voting」這篇可以看到),但目前沒有完美的系統可以做到...\r\n\r\n其中 Blind Signature 在這樣的系統內常常被拿出來當工具... 之前沒仔細看懂,週末花了一些時間發現 Blind Signature 還蠻有趣的。\r\n\r\nBlind Signature 想要與一般的 signature 一樣,讓對方簽 message m,取回 signature s。但多了一個要求:要在對方不知道 m 的內容情況下達到相同的效果。\r\n\r\n在 Wikipedia 上有說明用 RSA 的作法,看懂以後覺得還蠻有趣的...", + "title": "Blind Signature..." + }, + { + "id": "2853", + "body": "Fabric Engine 號稱可以把 JavaScript 與 Python 跑到接近 C++ 速度的實力,而且強調支援 Threading... 投影片裡可以看到底層的技術包括 LLVM。\r\n\r\n在 Python 的範例程式可以看到 import 後用專屬的 Handler 包起來:https://github.com/fabric-engine/PublicStable/blob/master/Examples/Python/Tutorial/trivialHTTPServer.py。而 NodeJS 的範例也是類似的架構:https://github.com/fabric-engine/PublicStable/blob/master/Examples/Node/Tutorial/trivialHTTPServer.js。看起來比較像是把常用的 module 寫成 C++ code 而已?這並不是什麼神奇的技術...\r\n\r\n另外 license 是 AGPL 3 or later 這個麻煩的 license,再加上使用 GitHub 的方式超怪 (把 stable 版本與 dev 版本 source 放到不同 reposiotry:Download。\r\n\r\n先把這軟體丟到一邊吧,等之後有人提起來的時候再看看...", + "title": "Fabric Engine" + }, + { + "id": "2854", + "body": "參考「Xcode, GCC, and Homebrew」這篇文章整理的...\r\n\r\n先前是裝上面那篇文章作者所整理的 OSX GCC Installer,但在新的 MBA 上面發現 homebrew 會抱怨 Xcode 版本太舊?\r\n\r\n後來還是改裝 Apple 提供的 Command Line Tools for Xcode (需要 Apple ID) 就沒問題了。\r\n\r\nUpdate:在 Twitterbcse 提醒標題不對,因為實際上 gcc 指令被 alias 到 llvm-gcc-4.2,這並不是 GCC (只是相容介面,骨子裡還是 llvm),這篇只是講 Mac OSX 上面要怎麼裝 compiler 讓 homebrew 可以用...", + "title": "在 Mac OSX 上安裝 GCC" + }, + { + "id": "2855", + "body": "一樣用 gcc 就可以練習了,首先要先裝 lang/gnustep-base:\r\n
cd /usr/ports/lang/gnustep-base; sudo make install clean
\r\n裝好後 compile 的兩個階段要對 gcc 加上不同的參數:\r\n
-I/usr/local/GNUstep/System/Library/Headers
\r\n以及:\r\n
-L/usr/local/GNUstep/System/Library/Libraries -lgnustep-base -lobjc
\r\n把這些參數整合到 Makefile 裡面就可以練習了。", + "title": "在 FreeBSD 上練習 Objective C..." + }, + { + "id": "2858", + "body": "前幾天讓人吃驚的新聞,Galera Cluster 離第一次 Percona alpha 測試 (Percona Server 5.1 with Galera replication) 才九個月就進入 GA 了 (相當於九個月內就過完 Beta + RC 階段):「Announcement of Percona XtraDB Cluster 5.5.20 GA release」。\r\n\r\n大家最大的問題還是「這能用嗎」... 不過既然進入 GA 狀態,加上是 Percona,好像可以期待?", + "title": "Percona 把 Galera Cluster 標為 General Availability 了..." + }, + { + "id": "2859", + "body": "花了一些時間設定 mutt,本來在 terminal 上面沒打算看 html 信件,不過後來還是決定設起來,至少可以看到 html 的文字部分再決定要不要轉到 gmail 上面看...\r\n\r\n在 ~/.muttrc 裡面加上:\r\n
auto_view text/html
\r\n另外在 ~/.mailcap 裡面指定用 w3m:\r\n
text/html;/usr/local/bin/w3m -I %{charset} -T text/html -dump %s; copiousoutput
", + "title": "在 Mutt 上看 html 信件..." + }, + { + "id": "2860", + "body": "「Client-Side Error Logging With Google Analytics」這篇提到可以用 Google Analytics 紀錄 JavaScript 錯誤...\r\n\r\n不過這不是即時的紀錄,倒是作者有提到可以交叉比對,當發生 JavaScript 錯誤對於其他參數的影響:\r\n
Track the impact of client-side errors on other business metrics. With the reporting in Google Analytics you can see how these errors are affecting bounce rate, conversion and sales.
", + "title": "用 Google Analytics 紀錄 JavaScript 錯誤..." + }, + { + "id": "2861", + "body": "從 Colin PercivalTwitter 上看到的:\r\n
Looks like Amazon Web Services is giving away $50 credits which can be used for running FreeBSD on EC2: http://aws.amazon.com/solutions/global-solution-providers/microsoft/aprilcredit/
\r\n活動的網址在「$50 AWS Service Credit for Microsoft Windows Server Instances Running on Amazon EC2」這裡。照說明是用在 AWS EC2 的 Microsoft Windows Server 上,不過把 code 輸入進去後寫了一堆 product:\r\n\r\n\"\"\r\n\r\n有打算用 FreeBSD 的人應該是不會有問題 (參考「FreeBSD on EC2」這個頁面的說明),其他的服務不知道會不會也能用到,下個月就知道了 XD", + "title": "AWS USD$50 的優惠..." + }, + { + "id": "2862", + "body": "在 Hacker News 的摘要上看到的,對於政府提供數位服務,英國政府嘗試訂出設計原則 (雖然目前這份文件還是 alpha 版本):「Government Digital Service Design Principles」。\r\n\r\n這份原則是延伸自原來的七大守則:\r\n\r\n\"\"\r\n\r\n其中有幾點相當棒:\r\n\r\n即使是一般商業產品的設計也是通用的原則...", + "title": "英國政府所建議的「數位服務設計原則」" + }, + { + "id": "2865", + "body": "2009 年在 Ptt 寫的文章有提到不少 hosting plan,2012 年現在有不少變化...\r\n\r\n\"\"\r\n\r\nVPS 的部份,Linode 的 CPU 一向是 C/P 值超漂亮的方案。最小的方案從 384MB RAM 變成 512MB RAM (價錢沒變,仍然約 USD$20/month),在有 swap 的情況下,即使跑 ApacheMySQL 也應該還算堪用。\r\n\r\nLinode 另外一個改變是多了東京機房。東京機房與台灣各 ISP 之間的 latency 都相當好。當以台灣使用者為主要族群而挑選 VPS 時,在東京的 Linode 主機通常是個好選擇。如果在 Linode 上面有 High Availability 需求,也有 NodeBalancer 可以用 (2011 年,Introducing NodeBalancer)。\r\n\r\n\"\"\r\n\r\nLinode 已經算是不錯的方案,但如果你對 latency 非常重視 (日本與台灣之間大約有 30ms 的 latency) 而一定要使用台灣內部的 VPS (像是遊戲的伺服器),那麼中華的 HiCloud 會是一個可以考慮的方案。\r\n\r\n\"\"\r\n\r\nPaaS 的部份,目前比較有名的是 Heroku,支援的語言多,而且有 free quota,對於一些小站台或是測試應用應該是沒什麼問題,不過目前只有美東 us-east-1 機房 (Heroku 用 AWS 為底層)。另外 AWS Elastic Beanstalk 的方案也可以看看,目前支援 JavaPHP 兩種語言,區域比較多。\r\n\r\n\"\"\r\n\r\n如果是 IaaS 的部份,AWS 能提供的功能比較多,AWS 東京機房對台灣的速度也不差。另外 AWS S3 在雲端靜態儲存這個領域還是領先者,就算用 VPS 或是 Dedicated Hosting 也還是可以考慮把一些東西放到 S3 上。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\nDedicated Hosting 的部份,目前還會選的是美西的 Energy Group Networks (EGIHosting) 以及 Limestone Networks。需要大頻寬的時候可以到 Dedicated Servers 這頁翻翻,或是寫信跟 EGIHosting 要 quote,當你 commit 1Gbps 含機器的價錢大約是 USD$1/Mbps (台幣 NTD$30/Mbps),連台灣的頻寬應該是透過 HE 或是 nLayer 連進來。\r\n\r\n至於 CDN 服務,我的建議是,如果你不知道哪個比較好,就不要用吧... 等到你開始 profiling & analyze 後再回頭決定。", + "title": "Hosting Plan" + }, + { + "id": "2867", + "body": "環境是內部有兩台互相做 HA 的 server (用 Heartbeat 或是用 CARP),然後給一個內部用的 domain 指到兩個 IP address,於是發現不太平均:「Unbound 回傳 RR Set 的順序問題」。\r\n\r\n2010 年的時候就有人提過要這個功能,然後被打槍:「[Unbound-users] Round Robin DNS」,最主要的理由是「這應該是 client 要做的事情」。\r\n\r\n2012 年三月有人決定自己來:「[Unbound-users] patch implementing round robin rrsets」,patch 本身蠻簡單的 (不過看起來不能保證 thread-safe),另外也有一些 RFC 隱性希望 DNS resolver 可以處理 round robin 的事情。\r\n\r\n四月的時候有人把 patch 修過,解決了 thread-safe 問題:「[Unbound-users] patch: rrset-roundrobin/minimal-responses」。\r\n\r\n看起來之後的版本有機會內建了...", + "title": "用 Unbound 跑處理 DNS Round Robin 服務的問題..." + }, + { + "id": "2869", + "body": "把主機的 MySQL 從 5.1 升級到 5.5 後,想把主機上的 MyISAM table 都換成 InnoDB。\r\n\r\n基本上是參考「Quick tip: how to convert tables to InnoDB」這篇提到的工具以及說明。\r\n\r\n文章裡所提到的 mk-find 是 2008 年的時候的名稱,當時這隻工具是在 Maatkit 裡面,而 2012 年則已經併入 Percona Toolkit,所以文章裡本來是 mk-find 的地方要改成 pt-find。\r\n\r\n另外我不想嘗試把 mysql.* 改成 InnoDB (我不知道會不會爆炸),所以我的做法是只用 --print,然後丟到 vim 裡面加上 ALTER TABLE 以及 ENGINE=InnoDB ROW_FORMAT=COMPRESSED;。\r\n\r\npt-find 這個指令看起來可以用在很多地方,之後應該會有不少用到的機會...", + "title": "把大量的 MyISAM table 換成 InnoDB" + }, + { + "id": "2870", + "body": "引用 CTO Werner Vogels 寫的「Dynamic Content Support in Amazon CloudFront」這篇好了,雖然沒有講完整,但把重點都提到了,而且比官方網誌「Amazon CloudFront - Support for Dynamic Content」這篇清楚...\r\n\r\n這次 AWS CloudFront 上的功能都可以在 AWS Management Console 上設定,不需要另外安裝 3rd party 軟體或是自己寫程式呼叫 API。\r\n\r\n這次最主要的更新在支援 query string。在之前的版本,這兩個 url 會被 CloudFront 當作是同樣的 url 而被 cache 成同一份:\r\n\r\n而這次可以設定是否要將 query string 納入計算。\r\n\r\n另外一個重要的設計是支援 Cache-ControlExpires,當 Cache-Control 給出 no-cache 的時候,新版的 CloudFront 可以依照 Cache-Control 的要求處理。\r\n\r\n有了這兩個改善後,本來需要在 server workaround 的事情就可以交還給 CloudFront 處理。之後應該是試著支援像 AkamaiDynamic Site Accelerator 的功能?另外一方面也有可能讓消費者自己選擇 PoP?\r\n\r\n功能愈來愈完整了...", + "title": "AWS CloudFront 增加的功能" + }, + { + "id": "2873", + "body": "先給連結,PHP 5.4 可以編的版本在這裡:github.com/gslin/php-test-helpers,clone 下來後的安裝方法是:\r\n
\r\nphpize\r\n./configure\r\nmake\r\nmake install\r\n
\r\n另外自己增加 extensions.ini:\r\n
\r\nextension=test_helpers.so\r\n
\r\n主要是 PHP 內部的資料結構有變動,本來存取的方式要改掉。發了 pull request 但不知道作者會不會收,如果有需要的人可以自己先裝。\r\n\r\n會用到 php-test-helpers 是因為寫 test case 的時候要換掉整個 HttpRequest,而 RunKit 不能換系統的 HttpRequest,所以找了不少 extension 發現 php-test-helpers 可以用。\r\n\r\n換法是這樣:\r\n
\r\nset_new_overload(function($name){\r\n    if ('HttpRequest' == $name) {\r\n        return 'My_HttpRequest';\r\n    }   \r\n    return $name;\r\n}); \r\n
\r\n拿掉可以直接呼叫 unset_new_overload(); 整個拔乾淨...", + "title": "PHP 5.4 與 php-test-helpers" + }, + { + "id": "2874", + "body": "雖然工作上都還是用 MySQL,但還是來看看其他的 database... 印象中對 PostgreSQL 最主要的差異 (與 MySQL 相比較) 是在於 index 的彈性...\r\n\r\nPostgreSQL 也是個超大的 open source project,所以除了可以到 PostgreSQL 的官方網站找資料外,英文版維基百科上的資料也是對於熟悉 PostgreSQL 的入口:「PostgreSQL - Wikipedia, the free encyclopedia」。\r\n\r\n現在 PostgreSQL 最新的 stable 版本是 9.1。依照 Versioning policy 文件,從第一個 major 版本釋出後,提供五年的軟體支援。現在支援的版本包括 8.3、8.4、9.0 與 9.1。另外最近剛出 9.2 beta1,在「PostgreSQL 9.2 Beta 1 Available for Testing」有些說明可以看。\r\n\r\n功能面上,除了本來就很強的功能外,內建 Replication 是從 9.0 開始,其中 9.0 與 9.1 分別支援 async replication 與 sync replication,9.2 則是多了 Cascading replication (應該是指串接)。\r\n\r\n商業支援則是常常可以看到 EnterpriseDB。有名的用戶包括了 InstagramHeroku。\r\n\r\n接下來就是實際玩看看...", + "title": "花時間看看 PostgreSQL..." + }, + { + "id": "2875", + "body": "六個人從十點開始吃,先是肥睡睡跟食材合照,另外冰箱有 1.5kg 的魚肉與 2.2kg 的豬肉:\r\n\r\n\"\"\r\n\r\n已經把 1.5kg 的魚肉吃完了,決定把 2.2kg 的豬肉「切一半」的經典切法:\r\n\r\n\"\"\r\n\r\n接下來幾張是十年前在新竹吃唰唰鍋的經典場景重現:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n結束後喝飲料,直接把飲料倒進冰塊包裝內:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n叔叔有練過,小朋友不要學喔~", + "title": "有陣子沒吃的這麼兇暴了..." + }, + { + "id": "2876", + "body": "遊戲一向都是硬體升級的主要動力... :/\r\n\r\nBlizzard 的遊戲都會發展 Windows 與 Mac 兩個平台,Diablo III 這次也是一樣。CPU 與記憶體一向都是小問題,顯卡才是真正的大問題...\r\n\r\n手上的 MBAMac Mini 都是 Intel HD Graphics 3000,有支援但是效果開不起來,而桌機則是 8600 GT,也是差不多的狀況,加上 NTFS resize 一直失敗,決定去光華商場弄一顆硬碟與一張顯卡來跑,在網路上翻了一下資料,看起來 GTX 550 拿來玩 Diablo III 應該是夠用...\r\n\r\n買完回到家後查資料才發現 GTX 550 全力跑的時候是個吃電大怪物,桌機上面加上新硬碟後就有四顆硬碟,目前靠 350W 的 Power 推,這樣大概不夠用,懶得出門只好上 24h 去弄顆新的 Power,應該是有機會在光華開門前就到家... :o\r\n\r\n所以又回頭到 Mac Mini 上面安裝起來玩,果然頓頓的,升了一級後還是先去睡覺,等早上來裝新的 Power...", + "title": "Diablo III" + }, + { + "id": "2877", + "body": "Ubuntu 12.04 換完顯示卡,重開機就沒畫面了,原因是系統的顯卡驅動程式不夠新。\r\n\r\n解法是:\r\n\r\n重開機後就正常了...", + "title": "Ubuntu 12.04 與 Nvidia GTX 550 Ti" + }, + { + "id": "2878", + "body": "主要是參考「WineHQ - Diablo III 1.0.*」這個網頁,另外找資料的時候有找到「[心得] Diablo III on Ubuntu 12.04 x86 - 看板 DIABLO - 批踢踢實業坊」這篇。\r\n\r\n我是使用沒有 non-patch wine 1.5.4 跑的 (透過「Latest official WineHQ releases : “Ubuntu Wine Team” team」這邊提供的 ppa),所以必須先用 Windows 裝完 Diablo III 後再 copy 到 Ubuntu 裡面。\r\n\r\n登入問題用 echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope 解,但這個方法需要在每次重開機後再設定一次,在 /etc/sysctl.conf 內設定 kernel.yama.ptrace_scope=0 可以使得系統在每次重開機自動設定。\r\n\r\n特效全開還是跑得不錯...", + "title": "在 Ubuntu (12.04) 上用 Wine 1.5.4 跑 Diablo III" + }, + { + "id": "2880", + "body": "這幾天用 WineDiablo III,有時聲音會狂 lag,關掉 Diablo III 後重跑還是一樣,要重開機才會恢復...\r\n\r\n仔細看 Wine 丟出來的訊息,發現訊息內有給這個網頁:「winepulse in ubuntu wine ppa」,其中提到 1.5.3 以後的 ppa 版本 (寫這篇文章的時候是 1.5.4) 可以在啟動 Wine 時加上環境變數 WINENOPULSE=1 解決聲音的問題。\r\n\r\n目前測起來是正常了,不知道還會不會有其他問題要解...", + "title": "Wine 玩 Diablo III 音樂會頓的問題..." + }, + { + "id": "2883", + "body": "2012-06-01 Update:請參考「MiCloud,繼續測試...」這篇。\r\n\r\n昨天因為工作關係跟神通的人聊到 MiCloud,台灣少數幾個 IaaS 項目...\r\n\r\n與國內其他 IaaS (或是說「VPS」) 比較不同的地方在於 MiCloud 與 Joyent 合作,不過我不想跑 SmartOS,所以這點沒有太大差異。另外是線上就可以直接申請信用卡付費,以小時計算,不需要傳真開機器... (這點 HiCloud 實在是...)\r\n\r\n先把結論列出來:\r\n\r\n網站的部份:\r\n\r\n再來開機器的時候遇到的幾個問題:\r\n\r\n開完機器後遇到的問題:\r\n\r\n然後是網路:\r\n\r\n另外附上 openssl speed 的測試數據,這是升級到 12.04 LTS 後的數據:https://gist.github.com/2832383,跟東京相比,單顆速度快一些,但東京的機器都有 4-core 可以用,所以...", + "title": "MiCloud 測試..." + }, + { + "id": "2885", + "body": "長野雅廣的「MySQL Beginners Talk で LT してきました」這篇 slide 對不熟悉 MySQL 的人講了兩個幾乎不會錯的觀念:\r\n\r\n先討論後面這點,算是任何 database 都通用的法則:當你遇到效能問題時,監控機制可以提供毛線球的線頭,讓你知道慢在哪裡:什麼時間滿載 (於是可以猜測是 cron job 造成,或是對應 MRTG 圖時知道是一般使用者造成的流量造成),另外可以知道瓶頸是在 CPU (是單顆 CPU 滿載,還是整台機器都被吃滿),I/O (是讀取滿載,還是寫入造成滿載),或是網路。\r\n\r\n前面這點解釋成「如果你不知道你在做什麼,就用 InnoDB Plugin 吧」,對於初學者 (slide 的標題),就簡化成「既然你是初學者,你就用 InnoDB Plugin 吧」。原因是:\r\n\r\nslide 不長,但這兩個重點還蠻重要的...", + "title": "長野雅廣 (Masahiro Nagano) 的 MySQL Beginners Talk" + }, + { + "id": "2887", + "body": "續「MiCloud 測試...」這篇,早上再測試一次發現 MiCloud 已經修正了一些問題...\r\n\r\n首先是開機器時 hostname 的問題已經解決了 (至少我不填,或是輸入 dash 都可以正確產生機器了,其他字元沒測試),另外同樣是 Ubuntu 10.04 LTS,這次進去沒看到 xorg 與 firefox 了。這兩個問題算是比較簡單的 (前面應該是改 input validator,後面應該是換 image)。\r\n\r\n另外補上 ping 168.95.1.1 的數字:\r\n
--- 168.95.1.1 ping statistics ---\r\n1000 packets transmitted, 1000 received, 0% packet loss, time 100312ms\r\nrtt min/avg/max/mdev = 1.055/1.173/4.107/0.211 ms
\r\n以及 ping 168.95.192.1 的數字:\r\n
--- 168.95.192.1 ping statistics ---\r\n1000 packets transmitted, 1000 received, 0% packet loss, time 100457ms\r\nrtt min/avg/max/mdev = 1.180/6.190/115.787/18.101 ms, pipe 2
\r\n以及 www.hinet.net (202.39.224.7) 的數字:\r\n
--- 202.39.224.7 ping statistics ---\r\n1000 packets transmitted, 1000 received, 0% packet loss, time 100893ms\r\nrtt min/avg/max/mdev = 1.523/15.194/1609.699/119.968 ms, pipe 15
\r\n以及 www.cht.com.tw (202.39.225.136) 的數字:\r\n
--- 202.39.225.136 ping statistics ---\r\n1000 packets transmitted, 1000 received, 0% packet loss, time 100773ms\r\nrtt min/avg/max/mdev = 1.527/2.153/49.760/2.499 ms
\r\n很明顯有對 168.95.1.1 做處理...\r\n\r\n另外有一點,最小台的機器提供 15GB 空間,不過系統的部份是 MiCloud 另外給 5GB 的空間放:\r\n
Filesystem            Size  Used Avail Use% Mounted on\r\n/dev/vda1             5.0G  803M  3.9G  17% /\r\nnone                  496M  176K  496M   1% /dev\r\nnone                  500M     0  500M   0% /dev/shm\r\nnone                  500M   40K  500M   1% /var/run\r\nnone                  500M     0  500M   0% /var/lock\r\nnone                  500M     0  500M   0% /lib/init/rw\r\n/dev/vdb1              15G  166M   14G   2% /data
\r\n其中 / 是 ext3,/data 是 ext4。\r\n\r\nDNS 則是用 Google 提供的服務:\r\n
nameserver 8.8.8.8\r\nnameserver 8.8.4.4
\r\n對外抓檔案的速度大約在 2.3MB/sec,包括 ubuntu.cs.nctu.edu.tw 與 ftp.speed.hinet.net。", + "title": "MiCloud,繼續測試..." + }, + { + "id": "2888", + "body": "由於 PDF Viewer 不是 free software (參考「Why doesn't Chromium have \"Chrome PDF Viewer\" plugin?」),所以 Ubuntu 下的 Chromium 並沒有包進去,需要自己手動安裝。\r\n\r\n方法可以參考「Chrome PDF Plugin in Ubuntu – How To Enable」這篇:\r\n\r\n\"\"", + "title": "在 Ubuntu 的 Chrome (Chromium) 看 PDF 的方式" + }, + { + "id": "2890", + "body": "這個週末把之前在 Ubuntu 下不順的地方搞定... (之前是透過 VirtualBox 開 Windows 管理)\r\n\r\n首先遇到的問題是 Ubuntu 下 Chromium 沒辦法開 jnlp 檔案 (永遠都是 Save as 視窗),所以用 Firefox 開流程會比較順。\r\n\r\n再來是 Ubuntu 提供的 OpenJDK 無法讀取 MegaRAC 給的 jnlp 檔案,需要裝 Oracle 的版本,這部份可以透過「Oracle Java (JDK) 7 Installer」處理。\r\n\r\n\"http://imgur.com/Wf8Ql\"", + "title": "Ubuntu 下用 MegaRAC 界面管理機器..." + }, + { + "id": "2891", + "body": "NetDNA 跳下去做 Bootstrap 2 的 CDN Hosting 了:「Bootstrap CDN - Twitter's Bootstrap hosted on NetDNA's Tier-1 Content Delivery Network」。\r\n\r\n這項服務不包含亞洲區的 CDN PoP,從台灣 (HiNet) 或是日本 (Linode) 過去都是美西的點,不過至少有 CDN Hotlink 可以用了...", + "title": "Bootstrap 2 的 CDN Hotlink" + }, + { + "id": "2893", + "body": "今天看到 t1.micro 也可以開 MySQL RDS 了:「Amazon RDS MySQL Now Starting at Just $19 a Month」。\r\n\r\n拿來堆資料應該還不賴?只要 24 小時可以塞完一天的份,而且不會影響到 t1.micro 的 EBS I/O 就可以用?:p", + "title": "AWS 可以開超小台 (t1.micro) 的 MySQL RDS 了..." + }, + { + "id": "2895", + "body": "Pingdom 這篇「The Web loves jQuery, and here are the numbers to prove it」提到了 jQuery 的使用率,其中這張圖不知道是發生什麼事情 XD\r\n\r\n\"\"\r\n\r\n左邊與中間的 10k 與 1k 我是不知道怎樣,但右邊 Top 100 站台是 24.7% 是怎麼算的...?XD", + "title": "大站台 jQuery 的使用率..." + }, + { + "id": "2897", + "body": "在「Scientists crack RSA SecurID 800 tokens, steal cryptographic keys」這篇報導裡提到了已經有辦法從 RSA SecurID 800 內取出 secret key,方法將會在 CRYPTO 2012 上發表...\r\n\r\n\"RSA\r\n\r\n(取自「RSA SecurID SID800 Authenticator Token」)\r\n\r\n如果攻擊者可以碰觸到實體 token 並取出 secret key,他就可以準備一顆新的 token (HSM,Hardware security module) 把取出來的 secret key 灌進去,而原來的使用者不太容易會發現...\r\n\r\n所以硬體式的 OTP 系統除了提供一次性密碼外,另外需要有能力阻擋從硬體取出 secret key 的能力。這次有能力在 13 分鐘就取出來,表示有不少辛苦事情要善後了...", + "title": "RSA SecurID 800 被破..." + }, + { + "id": "2898", + "body": "早上又回頭跑去寫 UVa Online Judge 的題目,這應該是參加高中生與大學生在寫的?好久沒寫了...\r\n\r\n這東西除了訓練資料結構與演算法外,另外還可以訓練「鑽牛角尖讀 spec」的能力:在題目裡沒保證的,就一定會炸給你看...\r\n\r\n舉例來說,第一題的「100 - The 3n + 1 problem」上面只說要找 i 與 j 之間的範圍的最大值。於是很多人就寫了:\r\n
for (t = i; t <= j; t++) { ... }
\r\n文件上有提到保證 i <= j 嗎?沒有。\r\n\r\n多練習這些題目後,除了資料結構與演算法外,對於實際工作的文件就會很自然而然避免過度解讀。", + "title": "寫 Online Judge 的題目..." + }, + { + "id": "2899", + "body": "前幾天用 freebsd-update 把系統升到 9.0,結果 libutil.so.8 不見了... 由於 sudo 用到 libutil.so.8,加上我又忘記 root 密碼,結果就只好找時間約人進機房處理了...\r\n\r\n除了改密碼外,先裝 compat8x 把服務跑起來...", + "title": "機器總算回來了..." + }, + { + "id": "2901", + "body": "fPrivacy 的說明「Makes Facebook permissions optional.」把功能說明的很清楚,就是在授權 Facebook 權限的時候,把應用程式可用權限調低。\r\n\r\n以 Plurk 為例,當 Plurk 需要 Facebook 權限時,提出需要這些權限:\r\n\r\n\"\"\r\n\r\n你可以發現上方多了一條東西。這時候你可以把 publish_actions 勾勾拿掉 (看這個意思應該是「以我的名義貼文」的權限),按下 Update 按鈕後:\r\n\r\n\"\"\r\n\r\n按下 Update 按鈕後,就把需求變少了。甚至你可以再拔掉 email 這組,再按 Update 按鈕:\r\n\r\n\"\"\r\n\r\n就什麼權限都不給他了,這拿來對付過度要求權限的應用程式還蠻好用的...", + "title": "fPrivacy:在 Google Chrome 下調整 Facebook 應用程式可用權限" + }, + { + "id": "2902", + "body": "MySQL 5.5 之前的版本只支援 Unicode 3.0 (1999 年 9 月發表),但自從 MySQL 5.5 版開始支援 Unicode 5.0 (2006 年 7 月發表),對於常用的 utf8 encoding 就有一些變化要注意...\r\n\r\n參考維基百科上對 Unicode 版本的說明:「Unicode#Versions」,以及 MySQL 5.5 的文件:「MySQL :: MySQL 5.5 Reference Manual :: 10.1.10 Unicode Support」。\r\n\r\n\"\"\r\n\r\n在 MySQL 5.5 之前,UTF-8 的設計最多吃 3bytes,因為 1byte 有 128 種組合 (7bits),2bytes 有 2048 種組合 (11bits),3bytes 有 65536 種組合 (16bits),共 67712 個空間可以用,但 Unicode 3.0 只用掉 49259 個。\r\n\r\n而從 MySQL 5.5 開始支援的 Unicode 5.0 需要 99089 個空間,所以需要用到 4bytes 的版本,也就是增加 4bytes 的 2097152 種組合 (21bits),共 2164864 個空間。\r\n\r\n但為了相容性,MySQL 5.5 的 utf8 encoding 還是使用 Unicode 3.0 版本。只有當特別指定 utf8mb4 encoding 時才會用到 Unicode 5.0 版本。使用 utf8mb4 encoding 時,要注意 client 端也要支援,不然會讀不到東西...", + "title": "MySQL 的 Unicode 支援程度" + }, + { + "id": "2903", + "body": "有陣子的新聞了:「[FreeBSD-Ports-Announce] [HEADS UP] Ports tree migration to Subversion」。\r\n\r\n預定是 7/14 要轉換,轉換完成後仍然會有程式把 Subversion repository 的變更同步到 CVS 上,所以本來用 csupcvsup 的人仍然可以取得更新。\r\n\r\n當初選 Subversion 的原因是什麼啊?又是 GPL license issue 嗎?", + "title": "FreeBSD ports 將從 CVS 轉移到 Subversion 上..." + }, + { + "id": "2904", + "body": "剛剛看到『文化部宣布「數位出版工作坊」正式啟動 將協助強化國內數位出版』這篇報導,發現文建會在 5/20 升格成「文化部」了...\r\n\r\n\"\"\r\n\r\n不知道為什麼,直覺反應是《一九八四》裡面的「真理部」...", + "title": "「文化部」讓我想到「真理部」..." + }, + { + "id": "2906", + "body": "剛剛翻了一下,有裝 WordPress.com 提供的 Jetpack 的人好像都可以用?\r\n\r\n
$latex x^n + y^n = z^n, \\forall n > 2$
\r\n\r\n對應:\r\n\r\n
$latex x^n + y^n = z^n, \\forall n > 2$
", + "title": "在 WordPress 使用 LaTeX 語法..." + }, + { + "id": "2907", + "body": "這是 StatCounter 的統計數字,IE8 有 13.28%,IE7 有 1.33%,約 14.61%:\r\n\r\n\"\"\r\n\r\n現在是 2012 年年中,在 IE7 + IE8 還有 14+% 的數字的情況下決定要在 2013 年年初推出不支援 IE{6,7,8} 的 jQuery 2.0,這在 John Resig 還「當政」的時代大概是不可思議的事情:「JQUERY CORE: VERSION 1.9 AND BEYOND」、「JQUERY 1.9 AND 2.0 — TL;DR EDITION」。\r\n\r\n如果照著這個步調走,要不是 jQuery fork 崛起,不然就是其他的 Framework 幹掉 jQuery...", + "title": "jQuery 2.0 將放棄 IE{6,7,8} 的事情..." + }, + { + "id": "2908", + "body": "從 Hacker News 上看到了「Intel Core2Duo cpu cache controller bug PoC」,透過 JavaScript 遠端攻擊 Intel Core2Duo,直接突破所有 application & OS 保護機制... exploit 說明裡提到測過 Intel Core 2 Duo T5750Intel Atom N270 這兩顆 CPU。\r\n\r\n另外,從 exploit 給的資料中,可以找到 Kris KasperskyHITB 2008 給出來的 PDF:「Remote Code Execution through Intel CPU Bugs」。\r\n\r\n居然用 JavaScript 戳...\r\n\r\nUpdate:很像是假的:「http://news.ycombinator.com/item?id=4246338」。", + "title": "用 JavaScript 遠端攻陷 Intel Core2Duo..." + }, + { + "id": "2910", + "body": "前陣子看到的「PHP The Right Way.」網站。網站的開頭就先提到這並不是說明 PHP 怎麼寫才是對的,而是告訴你許多前人經驗所得到的建議:(血淚史 XD)\r\n

Disclaimer

\r\n\r\nThere is no canonical way to use PHP. However, this website is a humble display of best practices, available options, and good information. It aims to introduce new PHP developers and to rethink seasoned pros with fresh ideas.
\r\n這個網站是導讀性質,告訴你現在 PHP 大約有哪些新東西需要看。\r\n\r\n最近比較常提出來的幾個是:\r\n", + "title": "PHP 康莊大道" + }, + { + "id": "2911", + "body": "在 MySQL 中,如果你有 VARCHAR(255) 這種欄位,不要對直接對這個欄位下 INDEX。因為 key 會以最大長度 255 chars 為固定大小,而非動態決定 (latin1 的時候 1 char 是 1 byte,utf8 是 3 bytes,utf8mb4 是 4 bytes),當資料有 1M row data 就直接吃掉 1MB/3MB/4MB 的空間。\r\n\r\n解決方法是利用「index 可以指定只取前面 n chars」這個功能來做,至於 n 要取多少就是要估算了... 在「Optimal index size for variable text in MySQL」這篇把要怎麼做的過程寫得還蠻完整的。\r\n\r\n同樣的道理也可以用在固定寬度的 BINARY(16) 系列上。", + "title": "對 MySQL 的 VARCHAR 欄位使用 INDEX 時可以增加效率的方法..." + }, + { + "id": "2913", + "body": "2009 年在 Schneier on Security 上看到的文章,這幾天跟同事剛好有提到:「Reproducing Keys from Photographs」,相關的技術更早前就有,只是沒有這麼遠。\r\n\r\n在論文裡是在 195 feets 外 (約 60 公尺) 架設儀器拍攝鑰匙,利用這些資訊重製鑰匙資訊:\r\n\r\n\"\"\r\n\r\n拍攝的設備是:\r\n
Figure 7: Telephoto setup consisting of C5 spotting scope, Televue PowerMate 4X Tele-extender, and Cannon 40D Digital SLR. Entire system folds up into two small cases and weighs 16 pounds.
", + "title": "60 公尺外,拍照攝影就可以重製鑰匙..." + }, + { + "id": "2914", + "body": "有時在 Ubuntu 下會發現主機板內建網卡 r8169 eth0 link 不見:\r\n
[275860.691179] ADDRCONF(NETDEV_UP): eth0: link is not ready
\r\n之前都是整台重開處理,後來發現還有一些方法可以用:\r\n
ifconfig eth0 down\r\nifconfig eth0 up\r\n/etc/init.d/networking restart\r\n/etc/init.d/network-manager restart
\r\n另外在「Solution: r8169 \"link down\" bug」這邊也有可以治標治的比較徹底的方法,之後遇到的時候也許可以試看看...", + "title": "Ubuntu 下處理 r8169 有時會 interface down 的問題..." + }, + { + "id": "2915", + "body": "DKIM 全名 DomainKeys Identified Mail,是透過數位簽名技術確保 E-mail 的寄件人不是被偽造的,對於防止透過電子郵件網路釣魚是個還蠻有效的技術。\r\n\r\n本來透過 AWS SES 寄信,要自己處理 DKIM 簽名的部份,不過今天 AWS 宣佈這項功能內建進 AWS SES:「Simple Email Service - Easy DomainKeys Identified Mail (DKIM) Support」。\r\n\r\n於是,現在用 AWS SES 的人要 DKIM 只要把 SES 提供的 DNS record 設上去就可以了,比起之前自己得在 Sendmail 或是 Postfix 上弄一堆東西方便不少。", + "title": "AWS SES 支援 DKIM" + }, + { + "id": "2917", + "body": "前幾天中文維基百科條目數量超過 50 萬 (台灣時間 7/15 的凌晨),算是一個里程碑 (吧),不過每次遇到條目數量里程碑的時候就會有這種現象:「今天條目數增加好快啊!」。\r\n\r\n不過中文維基百科的社群氣氛還是跟以前差不多...\r\n\r\n話說回來,原來書生罷免案已經第七次了啊...", + "title": "中文維基百科破 50 萬條目..." + }, + { + "id": "2920", + "body": "早上就看到 AWS EC2 推出 hi1.4xlarge 的消息:「New High I/O EC2 Instance Type - hi1.4xlarge - 2 TB of SSD-Backed Storage」(官方 blog)、「Expanding The Cloud – High Performance I/O Instances for Amazon EC2」(CTO Werner Vogels 的 blog)。\r\n\r\n幾個比較重要的特性:\r\n\r\n前面兩個不會太意外,因為需要高速 I/O 的服務通常也都很需要用大量記憶體當作 cache 降低 I/O,也需要大量頻寬提供服務。用 SSD 也在預期的範圍內,不過提供的 SSD 空間居然這麼大...\r\n\r\n當然,價位也不便宜,美東就要 USD$3.10/hour,冰島愛爾蘭則是 USD$3.41/hour (目前只有這兩區有提供)。如果以美東一個月 720hours 計算是 USD$2232,約台幣六萬六千多?", + "title": "AWS 推出高速 I/O 的 EC2 instance" + }, + { + "id": "2922", + "body": "剛剛註冊了 HP Cloud 測試 Compute 的部分 (相對於 AWS 就是 EC2)。\r\n\r\n先就公開的資訊來看,其實還不錯?最小的 instance 是 Extra Small,規格是 1GB RAM + 30GB Disk,收費 USD$0.04/hour,如果是 Small 則是 2GB RAM + 60GB Disk,另外在 Public Beta 期間是 50% off (半價)。\r\n\r\n頻寬部分與 AWS 美國區的價錢相同,Inbound 不收費,Outbound 與 AWS 階梯式相同。\r\n\r\n有提供網頁介面操作外,也有提供 CLI 可以用:「Unix Command Line Interface」,看起來是 Ruby... (沒裝起來測)\r\n\r\n實際註冊完成後可以由從 zone 的名稱「az-1.region-a.geo-1」推敲出實際的機房位置在亞利桑那州 (實際開起來後也是如預期),HiNet 過去大約 140ms。\r\n\r\n就 Public Beta 服務來看,要開 instance 時可以選擇的 OS image 也還算豐富:\r\n\r\n\"\"\r\n\r\nCPU 部分,openssl speed 的數據是:「HP Cloud, openssl speed」,速度比起 EC2 的 m1.small 算是相當好的。\r\n\r\n硬碟部分,iozone -a 的數據:「HP Cloud, iozone -a (over XFS)」,我是在跑 iozone 的時候用 dstat -at 觀察,寫入極限大約有 90MB/sec 到 100MB/sec,不過實際用 dd 測試就會發現應該是 host 有 cache,因為檔案很大的時候只有 20MB/sec 的寫入速度 XD\r\n\r\n晚點再來測 Object Storage 與 CDN 的部分...", + "title": "試用 HP Cloud (Compute 部分)" + }, + { + "id": "2924", + "body": "GistGitHub 提供的 Pastebin 類型服務,拿來貼一些雜七雜八的東西還蠻方便的...\r\n\r\ngist.io 則是利用 Gist,抓出內容排版後把內容丟出來。舉例來說,這是原始的文章「OAuth and API Providers: Come on guys.」:\r\n\r\n\"\"\r\n\r\n這是排版後的文章「OAuth and API Providers: Come on guys.」:\r\n\r\n\"\"", + "title": "輕鬆發表文章的 gist.io 服務..." + }, + { + "id": "2925", + "body": "在 Hacker News 上看到的玩具:\r\n\r\nJavaScript 寫的,可以在 browser 上直接跑。原始程式碼在「https://github.com/phl/pareidoloop」,可以用瀏覽器玩的網站在「pareidoloop」。\r\n\r\n用基因演算符合 Face detection library 偵測的特徵,還蠻有趣的玩具... 這是跑了大約半個小時跑出來的臉 (還蠻小張的):\r\n\r\n\"\"\r\n\r\n有些臉的感覺,不過因為只有黑白圖片,而且又小小張的,感覺有點像是靈異照片 XDDD 像是「八大真實靈異照片!」這邊的例子...", + "title": "隨機產生「臉」的 pareidoloop" + }, + { + "id": "2926", + "body": "剛剛要抓圖發現不能抓,第一個想到的是:\r\n\r\n不過看了一下設定檔已經是 xv 了... 後來在「[ubuntu] smplayer screenshot function not working...」這邊找到解法,原因是:\r\n\r\n非常... 不直覺... 的錯誤處理方式...", + "title": "Ubuntu 下 smplayer 無法截圖的問題" + }, + { + "id": "2928", + "body": "一個組織裡要導入 coding standatd & coding style 時是功夫最少的時候,除非有特殊理由,不然我一向都是建議:\r\n
不要自己發明 coding standard 與 coding style,如果社群的規範合理,就照著社群的規範走。
\r\n社群中比較完整的包括:\r\n\r\n兩份大多數的規範是相同的 (因為 community 已經有習慣了),不過現在感覺起來 PHP-FIG 比較熱鬧一點 (參與的人來自不同的專案),如果讓我推薦的話我會建議用 PSR-{0,1,2}。\r\n\r\nReply to「寫出好維護的 PHP 程式碼」。", + "title": "關於可維護的 PHP 專案:PHP-FIG 的 PSR-0、PSR-1、PSR-2" + }, + { + "id": "2931", + "body": "應 Passion Bean 的 Sting 與 ihower 邀請,到內湖用了兩個小時分享對於 Startup 公司在系統操作上的一些想法:\r\n\r\n\r\n\r\n\r\n\r\n另外可以在 Facebook 上的活動頁 找到錄影。\r\n\r\n一些關鍵字:\r\n", + "title": "在 Passion Bean 分享:System Operations for Startup" + }, + { + "id": "2934", + "body": "把一些思路整理成投影片,之後如果要教育訓練也比較方便...\r\n\r\n把「為什麼平常就要記錄系統狀態」的原因寫成投影片:\r\n\r\n\r\n\r\nSpeaker Deck 還蠻好用的啊,之後應該都不會用 SlideShare 了...", + "title": "關於系統分析的想法..." + }, + { + "id": "2936", + "body": "還... 蠻少見的?\r\n\r\n\"\"", + "title": "第一次看到 Twitter 這樣死的..." + }, + { + "id": "2937", + "body": "有去現場的人可以問問會不會出綠色乖乖桶嗎?(認真)\r\n\r\n\"\"", + "title": "這一定要工商服務一下..." + }, + { + "id": "2938", + "body": "到 24h 上買完東西後會有個提示頁面,最下面會列出常見詐騙手法:(常常買但都沒看 XD 這次停下來看一下...)\r\n\r\n\"\"\r\n\r\n其中正看到這條:\r\n
來電顯示開頭為「+」者,是國際電話,有可能就是詐騙電話!
\r\n然後就收到簡訊就送來:\r\n\r\n\"\"\r\n\r\n...............................", + "title": "「詐騙電話」..." + }, + { + "id": "2939", + "body": "InnoDB 設計上允許同時讀寫,在大多數的情況下不會產生 table lock,不過還是有機會。(或是刻意產生)\r\n\r\n在「Innodb Table Locks」這篇文章提到 InnoDB 的各種 lock (都是帶過而已,不過當關鍵字去 Google 找應該是夠用了),在文章最後面整理出結論,第一個是:\r\n
MySQL Table level locks and Innodb Table Level locks are two separate beings.
\r\n而就算是 InnoDB,你也還是可以用 LOCK TABLES,效果的確會如同你想的,只是這並不是由 InnoDB engine 實作。而最後是這樣建議:\r\n
It is a good practice not to use LOCK TABLES when you're using Innodb Tables.
\r\n另外註解也有提到 auto inc primary key 偶而也會造成問題,都可以當關鍵字去找出細節 :p\r\n\r\nReply to「長野雅廣 (Masahiro Nagano) 的 MySQL Beginners Talk」的 comment :p", + "title": "InnoDB 的 Table Lock" + }, + { + "id": "2940", + "body": "AWS EBSAmazon Web Services 平台上的永久性儲存空間 (一般開起來的空間在 crash 後會消失),不過 EBS 的效能 (速度與 IOPS) 一直讓大家很頭痛,要硬撐 IOPS 的方式是透過四個 EBS volume,上面用 mdadm 跑 RAID0...\r\n\r\n這幾個禮拜 AWS 丟出了兩個方案出來,提供不同的選擇...\r\n\r\n首先是帶大容量 SSD 空間的 instance,參考「AWS 推出高速 I/O 的 EC2 instance」,這對於 cache 類的應用相當適合...\r\n\r\n而昨天則是介紹了 Provisioned IOPS 與 EBS-Optimized instances:「Fast Forward - Provisioned IOPS for EBS Volumes」。\r\n\r\nProvisioned IOPS 是保障 IOPS 的機制,每個 volume 最高可以到 1000 IOPS。除了每 GB 的價錢比較高以外,另外每個保障的 IOPS 要再收 USD$0.1/month。(本來 EBS 的 I/O 費用還是要計算)\r\n\r\n標準的 EBS 約提供 100 IOPS,這個 Provisioned IOPS 架構讓使用者要在上面衝 IOPS 變得更容易...\r\n\r\n\"\"\r\n\r\nEBS-Optimized instances 是把 EBS 使用的頻寬獨立出來,目前只支援 m1.large、m1.xlarge 以及 m2.4xlarge 這三種,其中 m1.large 跑到 500Mbps (理論值 62.5MB/sec),後面兩種可以上 1Gbps (125MB/sec),使得服務與 I/O 的頻寬不會互相干擾到...", + "title": "AWS EBS 的改善..." + }, + { + "id": "2942", + "body": "看到 evenwu 在講 Safari 6+ 把 Backspace 回到上一頁的功能拔掉的補救方式後,我突然想到 Chrome 應該也有類似的功能...\r\n\r\n\"\"\r\n\r\n找到的套件是「Backspace As Back/Forward for Linux」,雖然套件上寫 Linux,但在 Mac 上也可以用... (倒是 Ubuntu 上還沒測 XD)\r\n\r\n不過... 這個套件好像只能用在 html 頁面...", + "title": "Google Chrome (以及 Chromium) 內用 Backspace 回到上一頁" + }, + { + "id": "2943", + "body": "Chaos MonkeyNetflix 丟出來的工具,這個工具的目的是希望建立超高可靠度的系統。方法則是沒事就亂關 AWS 上的 instance:「Chaos Monkey released into the wild」。\r\n\r\n基本的想法是這樣:\r\n\r\n照 Netflix 的說法,他們不僅在開發環境測試,也在正式環境測試。利用 Chaos Monkey 看看 failure 的結果是否如預期。\r\n\r\nNetflix 甚至建議可以排成每個上班日都隨機跑一跑:\r\n
The service has a configurable schedule that, by default, runs on non-holiday weekdays between 9am and 3pm.
\r\n只有在爆炸機率超高的系統上,設計師才會在意 failure 的問題...", + "title": "Netflix 的 Chaos Monkey" + }, + { + "id": "2944", + "body": "塞車塞到爆炸 (坐客運還遇到前一台發車的車子拋錨,乘客在高速公路上換到我坐的這台車...),然後就遲到快一個小時了... +_+ (圖片就是抛錨的三重客運 XD)\r\n\r\n\"抛錨的三重客運\"\r\n\r\n星期五先去天瓏TCP/IP Illustrated, Volume 1,結果到現場發現沒精裝本,只有 Volume 2 有精裝本...\r\n\r\n書本身的故事就不講了 (當天兩位新人解釋了老半天 XD),下面是請 Blake 學長頒獎的照片:\r\n\r\n\"\"\r\n\r\n婚宴後先跑去交大門口的土地公廟拜拜,然後發現二餐改建中,就整群人跑到資工系系計中... (發現都不太認識了 XD)\r\n\r\n系計中新機房整理的真不錯啊,而且機房冷氣超冷,跟以前比起來舒服多了...", + "title": "回新竹參加婚宴..." + }, + { + "id": "2947", + "body": "兩年前寫的「直接安裝 Adobe Flash Player 而不安裝 DLM」這篇已經過時了,新的網址是:\r\n\r\n抓下 exe 檔後直接執行就可以了。", + "title": "不安裝 Adobe DLM 的前提下安裝 Adobe Flash Player 11.x" + }, + { + "id": "2948", + "body": "在 Akamai 的新聞稿上看到的:「August 06, 2012 – Akamai Expands Presence In Asia Pacific」。\r\n\r\n查了一下地址,在敦化南路的遠企:\r\n
\r\nAkamai Technologies Limited Taiwan Office\r\nFar Eastern Plaza\r\nLevel 16, No. 207, Section 2\r\nDun Hua South Road \r\nTaipei, 106\r\n
\r\n沒別的意思,看到紀錄一下 :p", + "title": "Akamai 在台北開辦公室..." + }, + { + "id": "2949", + "body": "Mac 上面的中文版維基百科字體「很不友善」,沒有花太多時間看,但大概是用 font-face 改 sans-serif 造成的...\r\n\r\n因為平常都有登入,懶得跟他囉唆,設個 css 進 User:Gslin/common.css,直接避開 sans-serif 被 font-face 惡搞掉的情況:\r\n
body {\r\n    font-family: Helvetica;\r\n}
\r\n這樣出來的字就好多了...", + "title": "修改中文維基百科的字體..." + }, + { + "id": "2951", + "body": "昨天 (過十二點了) 跟兔子吃飯提到 ISO/IEC 27001,果然有些數字當場都記錯了...\r\n\r\n在 www.iso27001certificates.com/Register%20Search.htm 這邊有資料可以看每個國家通過的張數,另外在 www.iso27001certificates.com/certification_directory.htm 則可以查到有哪些單位負責認證與稽核。\r\n\r\n2012 年八月的現在,台灣通過 461 張 (這幾年竄起的),中國 393 張,美國與加拿大加起來 115 張 (之前看的時候還是兩位數?)...\r\n\r\n至於這些數字要怎麼解讀,就是個人的想法了 :p", + "title": "關於 ISO/IEC 27001..." + }, + { + "id": "2953", + "body": "前天回到家發現電腦是關的,本來以為是停電,但同樣接在 UPS 上的 Mac Mini 卻好好的,打開電腦一進 Ubuntu 就發現 Psensor 在警告過熱,看了一下說明,是 CPU 過熱... 以為是假警報,結果過沒多久就自己關機了 XD\r\n\r\n\"\"\r\n(圖複製自 Psensor 官網)\r\n\r\n拆開電腦發現 CPU 風扇卡榫掛了,CPU 風扇無法貼住... 第一個想法是自己買來換,查了一下看起來是不貴,但想到要好幾天才能用就懶...\r\n\r\n後來想了一下,先查一下官網資料。華碩M4A87TD/USB3 主機板保固三年,我是 2010 年買的,所以還在保固內... 而光華的維修中心星期六白天有開,應該是,就星期六睡飽過去...。\r\n\r\n\"\"\r\n(圖複製自 ASUS 官網)\r\n\r\n我自己看損壞的狀況,應該是四個螺絲拆下來,換個底座再鎖上去就好了,所以應該是拿給他之後去吃個飯,然後回來收個工本費就可以收工... 不過在現場交件的時候直接請我等兩分鐘馬上拿 (不收工本費),害我愣了一下...\r\n\r\n拿回家接上後把散熱膏弄一弄就繼續快樂的服役了... XD", + "title": "修主機板..." + }, + { + "id": "2954", + "body": "官方公佈 jQuery 1.8.0 了:「JQUERY 1.8 RELEASED」。\r\n\r\n這個時間點 Google Libraries API 已經放上 1.8.0 了:HTTP 版的 http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js 與 HTTPS 版的 https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js。\r\n\r\n靠著 Sizzle 翻修、拔掉一些 alias 與功能,以及 code cleanup,使得 jQuery 1.8.0 在 gzip 後比 1.7.2 小了一些。", + "title": "jQuery 1.8.0" + }, + { + "id": "2956", + "body": "因為大約只有 25mins 的時間,如果用傳統的方式先用 20mins 講,再用 5mins 開放 Q&A 看起來沒講到東西又沒回答到問題。\r\n\r\n所以這次打算用不一樣的方式,先放出投影片,準備 25mins 都是 Q&A 的時間。(而且時間是 12:30 結束,提前結束還可以先吃飯?)\r\n\r\n\r\n\r\n請享用...", + "title": "COSCUP 2012 的投影片:MySQL System Stability" + }, + { + "id": "2958", + "body": "COSCUP 2012 - MySQL System Stability:\r\n\r\n", + "title": "COSCUP 2012 今天的投影片 (工商服務部分)" + }, + { + "id": "2959", + "body": "本來以為 Zend Framework 1 只會出到 1.11 (以前有說過嗎?),結果剛剛發現 1.12.0rc3,這真是太驚人了 XDDD\r\n\r\n這樣看起來 Zend Framework 1.11 與 PHP 5.4 之間的問題就有解了...", + "title": "Zend Framework 1.12 系列..." + }, + { + "id": "2960", + "body": "發現連到 AWS 首頁出現破圖,結果發現 CloudFront 的 DNS 爆炸,不管是從 HiNet 或是從 Linode 東京查都查不到:\r\n\r\n\"\"\r\n\r\n在 AWS Developer Forums 上面也開始有人問了:\r\n\r\n晚點應該會有說明吧...", + "title": "AWS CloudFront 爆炸..." + }, + { + "id": "2962", + "body": "Amazon Simple Storage Service (Amazon S3)AWS 第一代儲存服務。後來 S3 又提供了 Reduced Redundancy Storage,降低可靠度 (一年 99.99%) 換取價錢上的優勢,用在 cache file 之類的還蠻不錯。目前兩者在美東的價錢是 USD$0.125/GB 與 USD$0.093/GB。這兩種都是隨時可以存取的服務。\r\n\r\n\"\"\r\n\r\n而 Amazon Glacier 則是提供超低的價錢與超高的可靠度:USD$0.01/GB 與一年 99.999999999%,而這是靠取回檔案的時間換來的。取回檔案需要排 3.5 到 4.5 小時的時間 (後面傳輸的時間另外計算):\r\n
Retrieving archives from Amazon Glacier requires the initiation of a job. Jobs typically complete in 3.5 to 4.5 hours.
\r\n是靠著機械手臂與軌道在處理嗎?\r\n\r\n但這樣就多了很多用途啊... Data warehouse 是個很明顯的方向。目前可以透過 AWS Import/Export 匯入大量資料:\r\n
You can also use AWS Import/Export to accelerate moving large amounts of data into Amazon Glacier using portable storage devices for transport.
\r\n之後則是會提供從 S3 搬出去與搬進去的功能:\r\n
In the coming months, Amazon Simple Storage Service (Amazon S3) plans to introduce an option that will allow you to seamlessly move data between Amazon S3 and Amazon Glacier using data lifecycle policies.
\r\n等工具完整後再來研究 :p", + "title": "Amazon Web Services 新的儲存方案:Amazon Glacier" + }, + { + "id": "2963", + "body": "HEAD 找來 Novak DjokovicMaria Sharapova 兩位到處亂 XDDD\r\n\r\n\r\n\r\n\r\n\r\nSharapova 這球會不會太準了一點 XDDD", + "title": "Novak Djokovic 與 Maria Sharapova 來亂..." + }, + { + "id": "2964", + "body": "分別是 identity.cloudfront.netresolver-identity.cloudfront.net 的 TXT record,像是這樣:\r\n
\r\n;; QUESTION SECTION:\r\n;identity.cloudfront.net.       IN      TXT\r\n\r\n;; ANSWER SECTION:\r\nidentity.cloudfront.net. 60     IN      TXT     \"ns-nrt52-02.cloudfront.net.nrt52\"\r\n
\r\n以及:\r\n
\r\n;; QUESTION SECTION:\r\n;resolver-identity.cloudfront.net. IN   TXT\r\n\r\n;; ANSWER SECTION:\r\nresolver-identity.cloudfront.net. 10 IN TXT     \"210.242.135.97\"\r\n
\r\n看起來是 AWS 在 forum 上回答時的 SOP 之一...", + "title": "找 CloudFront 問題的方法..." + }, + { + "id": "2965", + "body": "NIST (National Institute of Standards and Technology) 是美國的政府機關 (國家標準技術研究所),訂定了非常多的標準。像是 DES 的制定 (NIST 前身,NBS - National Bureau of Standards) 與 AES 的選拔都是 NIST 的成果。\r\n\r\n在 Slashdot 上看到 NIST 對於伺服器 BIOS 的保護機制提出建議:「NIST Publishes Draft Guidelines For Server BIOS Protection」,NIST 原始公告則是在「Security First: New NIST Guidelines on Securing BIOS for Servers」。都有原始 PDF 連結可以直接點。\r\n\r\n\"BIOS\r\n\r\n標題是「BIOS Protection Guidelines for Servers」,目前還是在 draft 階段,頁數也還不太多...", + "title": "伺服器的 BIOS 保護機制" + }, + { + "id": "2967", + "body": "一直都知道 HipHop 是拿 compile time 換原始的 PHP 效能,但一直都沒有去找資料,不知道成本有多高,直到剛剛在「Alternative PHP Runtimes」這邊看到...\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n大概有個概念... :o", + "title": "Facebook HipHop 的效率" + }, + { + "id": "2968", + "body": "沒看過前面兩集的可以看「Novak Djokovic 與 Maria Sharapova 來亂...」這篇 XDDD\r\n\r\n", + "title": "Novak Djokovic 與 Maria Sharapova 繼續來亂..." + }, + { + "id": "2970", + "body": "在台灣看 Blogger 時會被導到 blogspot.tw 網域,目的是為了要能夠支援 content filter,也就是「Why does my blog redirect to a country-specific URL? (ccTLD)」裡的這段:\r\n
Q: Why is this happening?\r\nA: We are doing this to provide more support for managing content locally. If we receive a removal request that violates local law, that content may no longer be available to readers on local domains where those laws apply. This update is in line with our approach to free expression and controversial content, which hasn’t changed.
\r\n後來在 Chrome Web Store 上翻到可以透過 NCR 固定在 blogspot.com domain 上的方法了:「NoCountryRedirect (NCR)」,透過 /ncr 重導設定 NCR cookie...", + "title": "拿掉 Blogger 的 Country Redirect" + }, + { + "id": "2974", + "body": "在 CDN 報價時,會把歐美與非歐美區 (通常是指亞洲與澳洲) 的報價分開,主要是因為頻寬的成本不同。\r\n\r\n不過亞洲客戶通常不會遇到這個問題,因為對方看你是亞洲客戶,第一份報價會直接使用亞洲區的報價,當你跟業務一直橋價錢,業務就有可能會跟跟你解釋這是因為亞洲區成本比較高 blah blah blah... 這時候業務就會拿出 US & EU only PoP 的報價單出來,如果你測過覺得 okay,那麼就搞定...\r\n\r\n所以每次遇到 AWS 的業務被問到「你覺得 AWS 有什麼可以改善的?」幾乎都會提分級的事情,而從三年前 (應該吧) 就一直提的東西終於做出來了:「Amazon CloudFront - Cookie Support and More」。 \r\n\r\n現在 CloudFront 支援三種等級,Price Class All (預設等級,包含所有的 PoP),Price Class 200 (歐美、日本、香港、新加坡),以及 Price Class 100 (歐美),可以透過 Web Console 直接設定,接下來可以來觀察看看有哪些網站換掉 :p", + "title": "AWS CloudFront 的等級" + }, + { + "id": "2975", + "body": "書的資料:\r\n
An Introduction to Programming in Go.\r\nCopyright © 2012 by Caleb Doxsey\r\nISBN: 978-1478355823
\r\n以及網站:「An Introduction to Programming in Go」。有平裝實體書版本,也有電子 Kindle 版,網站上有 PDF 可以下載,或是直接 HTML 觀看。我是看完 HTML 版後買了一本 Kindle 版來翻...\r\n\r\n\"\"\r\n\r\n這是一本講程式語言 Go 的入門書。看完後,我覺得這不是寫給第一次接觸程式語言而需要自己學習的人。這本書的編排,以及 Go 程式語言的特性,是寫給想要用 C++ 解決 C 問題卻弄的滿頭包的人另外一個方案。語言的特性很明顯可以感覺到 Go 想要找出更自然 (以及「優雅」) 的方式解決問題。\r\n\r\n第三章講資料型態提到內建了 uint8uint16uint32uint64int8int16int32 以及 int64,以及 byte == uint8rune == int32。以前需要透過 autotools 的類的程式處理,現在是程式語言直接定義好。\r\n\r\n然後支援 float32float64,以及 complex64complex128 直接避免 sqrt(-1) 的問題!內建 boolean (truefalse),把以前的壞習慣 (直接拿數字型態判斷) 處理掉...\r\n\r\n第六章講內建 Arrays、Slices、Maps,這時候就可以發現 fmt.Println 可以直接輸出 (以前 C 就沒辦法用 printf 大絕直接對 array 輸出!) !然後很嚴格的不讓你在整數與小數之間亂轉...\r\n\r\n而內建 Maps 這件事情超重要,已經是現在程式語言的基本資料型態 XD\r\n\r\n第七章描述 Functions,把以前只能傳單變數的問題解決,並且介紹 Closure,然後介紹 Defer!是 Defer 啊!(該死的 fd leak...)\r\n\r\n第十章 Concurrency 把以前用 POSIX threading library 的痛給解掉,多個 thread 要怎麼有效的互相傳資料一直都是痛 (超痛),引入 channel 的觀念內建進 Go...\r\n\r\n很推薦購買的一本書,天瓏如果有進的話應該會再去拿一本實體...", + "title": "推薦《An Introduction to Programming in Go》這本書..." + }, + { + "id": "2976", + "body": "PostgreSQL 9.2 放出來了:「PostgreSQL 9.2 released」。\r\n\r\n其中一個重要的功能是直接支援 JSON 資料型態。之前看到「Building a MongoDB Clone in Postgres: Part 1」與「Building a MongoDB Clone in Postgres: Part 2」這兩篇,用 PostgreSQL 9.2 (當時還在 beta) 去堆 MongoDB 提供的功能。\r\n\r\n另外一個對於效能會有幫助的新特性是 covering index,可以避免額外的 disk access。", + "title": "PostgreSQL 9.2 出版..." + }, + { + "id": "2977", + "body": "/*\nWelcome to Custom CSS!\n\nTo learn how this works, see http://wp.me/PEmnE-Bt\n*/\ncode {\n\tbackground: #eee;\n\tpadding-left: .25em;\n\tpadding-right: .25em;\n}\n\nimg {\n\tmax-width: 100%;\n}\n\npre {\n\twhite-space: pre-wrap;\n\tword-break: break-all;\n\tword-wrap: break-word;\n}\n\n#content code, #content pre {\n\tfont-size: 1em;\n}\n\n#content blockquote {\n\tborder-left: 3px solid #eee;\n\tcolor: #555;\n\tfont-size: 90%;\n\tfont-style: normal;\n\tmargin-left: 1em;\n\tpadding-left: 1em;\n}", + "title": "safecss" + }, + { + "id": "2978", + "body": "Galera ClusterCodership 所提供的 MySQL master-master 方案,與其他 master-master 方案比起來,最大的好處就在於比較不需要擔心資料同步的問題...\r\n\r\n剛剛看到,除了 Percona 外,又有一家 MySQL distribution 支援 Galera Cluster:「MariaDB Galera cluster released」。這次是 MariaDB 宣布支援 Galera Cluster。\r\n\r\nMariaDB 是由 MySQL 創辦人 Michael Widenius 發展的版本,算是一個蠻有名的分支... 這樣一來 Galera Cluster 應該會有更多人關注使用...", + "title": "又有一家大的 MySQL distribution 支援 Galera Cluster..." + }, + { + "id": "2980", + "body": "Percona 將在台灣時間 9/20 清晨 (當地 9/19 10:00AM) 舉辦 Percona XtraDB Cluster (Galera Cluster) 的教學:「Upcoming Percona XtraDB Cluster – Installation and Setup webinar」。\r\n\r\n這是偏向營運方面的 Web conference:除了安裝與設定以外,還準備試爆與修復,另外使用 HAProxy 達到 HA 目的... (我是偏好 Heartbeat + 自製的小 script 達到 HA)\r\n\r\n有興趣的人可以報名,如果時間上不能配合的人,照慣例事後應該也有 video 與投影片可以看... (不是很確定)", + "title": "Percona XtraDB Cluster (Galera Cluster) 的教學" + }, + { + "id": "2981", + "body": "前幾天 jQuery 改變授權,從 MIT + GPLv2 雙重授權變成 MIT only:「jQuery Licensing Changes」。\r\n\r\n實際的改變在八月初的時候就發生了:「Finish the license changes, including Sizzle.」。\r\n\r\n應該算是件好事?", + "title": "jQuery 授權從 MIT+GPL 改成 MIT only" + }, + { + "id": "2982", + "body": "AWS Tokyo 第三個 region 啟用:「AWS Growth - Adding a Third Availability Zone in Tokyo」。\r\n\r\n查了之前的 blog,第一個 region 是 2011 的三月初 (「Amazon Web Services 東京!」),第二個 region 是 2011 的三月底 (「AWS 東京第二個 AZ (Availability Zone) 今天啟用...」),過個一年半加第三個 region,現在看起來當初加第二個應該是為了 HA 的需求...\r\n\r\n不過相較於新加坡,日本的量還是成長的比較大...", + "title": "AWS Tokyo 第三個 Region 啟用..." + }, + { + "id": "2983", + "body": "FreeBSD 預定在今年十一月將 amd64 與 i386 版本的 C 與 C++ 預設編譯器從 GCC 4.2.1 換成 clang,也就是下一個 major release (10.0) 就會是預設編譯器:「Clang as default compiler November 4th」。\r\n\r\n自從 GCC 決定要換成 GPLv3 後整個計畫才活起來,到現在走了三年,看起來明年應該有機會看到預設是使用 clang 的 FreeBSD?\r\n\r\n接下來的工作是解決 Ports 裡面一堆用 clang 編不過的軟體,以目前「Ports and Clang」這邊列出來的數量,看起來把幾個大的傢伙解決掉就差不多了?(不過應該是不怎麼好解,不然這種大目標物應該早就解決了...)", + "title": "FreeBSD 將在 10.0 時將預設編譯器從 GCC 換成 clang" + }, + { + "id": "2986", + "body": "Ubuntu 12.04 上的 Chromium 一直都是 18.0 版,而 \"Chromium Builds\" team 也沒在更新了...\r\n\r\n過一陣子想起來就會去找一下,結果剛剛發現有人在 Launchpad 上面丟出來了:「New Chromium Stable And Development PPAs For Ubuntu 12.04」,有兩個版本,一個是 stable (目前是 21.0),一個是 dev (目前是 23.0)。\r\n\r\n而舊的 repository 可以用 apt-add-repository -r 移除,然後再跑 apt-get update 更新。", + "title": "Ubuntu 上的 Chromium Stable Channel 與 Dev Channel" + }, + { + "id": "2988", + "body": "看到 lwhsu 提到的:「看影片就不該要認真, 但... 我實在忍不住想要吐嘈阿」。\r\n\r\n\"\"\r\n\r\nXDDD", + "title": "不知道要怎麼吐槽..." + }, + { + "id": "2989", + "body": "取自 xkcd... XDDD\r\n\r\n\"Refrigerator\"", + "title": "好冰箱不用嗎..." + }, + { + "id": "2990", + "body": "在 Zite 上看到 Mac 上虛擬化技術方案的效能比較:「Benchmarking Parallels, Fusion, and VirtualBox Against Boot Camp」。\r\n\r\n報告裡是用 iMac 加上外接一堆暴力設備測試 Parallels Desktop 7 & 8、Fusion 4 & 5、VirtualBox 以及 Boot Camp (相當於原生系統,當作比較用)。\r\n\r\n可以看到在 Futuremark 系列的數字中付費的方案都是遠遠超越免費的 VirtualBox... 不過其他的測試中倒是差不多,甚至有 VirtualBox 超越商用方案。\r\n\r\n不過現在在 Mac 上的 VirtualBox 好像只拿來開 IE 轉帳,以及跑 VMware vSphere Client,效能不要差到受不了就可以了...", + "title": "在 Mac 上虛擬化技術的方案..." + }, + { + "id": "2992", + "body": "因為目前 Ubuntu 12.04 的 chromium-browser 還是 18.0,所以在「Ubuntu 上的 Chromium Stable Channel 與 Dev Channel」這篇試著裝新版的 chromium,結果發現問題不少...\r\n\r\nstable 版本容易 core dump 掛掉,dev 版本感覺是 connection leak... 可用的 connection 變少後,網站速度卡在 parallel connection 不夠。\r\n\r\n結果晚上被 gasolwu 說可以裝 Google 官方的版本,才發現從 Google 下載下來雖然是 deb,但安裝時會自動增加 apt key (好邪惡啊) 並且設定 apt 機制更新...\r\n\r\n總算能用 21.0 了...", + "title": "結果回頭用 Google 提供的 Chrome 就好了..." + }, + { + "id": "2993", + "body": "這桌面真不錯...\r\n\r\n\"\"\r\n\r\n原始出處只找到「My new game: Hide the cursor when going to sleep, try to find it when you wake up.」這篇...", + "title": "好棒的桌面!" + }, + { + "id": "2994", + "body": "在 Schneier on Security 上看到 SHA-3 的消息:「SHA-3 to Be Announced」。\r\n\r\n1997 年,NIST 要找尋 Data Encryption Standard (DES) 的下一代標準,發起了有名的 AES 遴選計畫,也就是 Advanced Encryption Standard process。\r\n\r\n公開遴選 AES 的成果就是在 2001 年 NIST 選出 Rijndael,由 Vincent RijmenJoan Daemen 兩位比利時密碼學家所發展出的對稱式加密系統。這個成果以現在來看是相當受到好評的:從 1998 年 Rijndael 問世到現在已經將近 15 年,成為官方標準後也超過 10 年,在這麼長時間接受全世界密碼學家檢驗後,有效的攻擊 (full cycle,可以破解實際流量的演算法) 是 2009 年一系列針對 192bits 與 256bits 的攻擊 (Related-key attack),以及 2011 年針對所有 128bits/192bits/256bits 的攻擊 (Key-recovery attack),仍然都還不到「實用」的程度 (用合理的硬體與資源破解)。\r\n\r\n因此,當 MD5SHA-1 被攻的亂七八糟時 (2004 年王小雲教授往 ePrint 上丟出有名的「Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD」論文,給出兩個 vector 直接給出證明已經找到 collision),NIST 也想要透過同樣的遴選過程建立標準。於是,在 2007 年 NIST 宣佈了遴選計畫,這套標準就叫做 SHA-3,遴選過程則可以在 NIST hash function competition 這邊查到。\r\n\r\n歷經五年的競爭,SHA-3 終於要宣佈結果了... (也有可能宣佈「沒有得主」?)", + "title": "SHA-3 最後審查..." + }, + { + "id": "2995", + "body": "查資料的時候發現有人已經翻譯好 PSR-{0,1,2}:\r\n\r\n想要快速了解 PSR 在定義什麼,可以直接看中文版,如果有覺得不懂的地方再去翻英文版的原文敘述。", + "title": "PHP 的 PSR-{0,1,2} 中文版翻譯..." + }, + { + "id": "2997", + "body": "在「What are readers looking for? Wikipedia search data now available」這邊看到維基百科打算公開 search data,這不是前人幹過的蠢事嗎...\r\n\r\n這讓我想起 2006 年「AOL search data leak」事件。AOL 希望對學術界有貢獻,於是把三個月份的 search data 匿名化後丟出來,結果被發現不管怎麼匿名化,search data 還是有辦法找出本人。AOL 也因此被告並且判決只要包含在內的每個人都可以拿到 USD$5000 的賠償。不過也因為 AOL 幹了蠢事,這也是少數被公開的 search real data。\r\n\r\n看起來 Wikimedia 也要再來幹一次?", + "title": "Wikimedia 要幹蠢事了..." + }, + { + "id": "2998", + "body": "把 Jetpack 升級到 1.8 後發生統計數字抓不到的問題,會出現「We were unable to get your stats just now. Please try again.」的錯誤訊息:「[resolved] Stats problem in V. 1.8 (28 posts)」。\r\n\r\n目前的解決方式是降到 1.7... =_=\r\n\r\n還沒升級的人就先等等吧...\r\n\r\nUpdate:1.8.1 出了,看起來是解決了...", + "title": "WordPress Jetpack 1.8 出問題了..." + }, + { + "id": "2999", + "body": "以 www/apache22 為例子,本來 /usr/local/etc/ports.conf 內是這樣:\r\n
www/apache22: WITH_MPM=worker
\r\n引入 OptionsNG 後增加了不少檢查。其中因為 WITH_MPM=worker 的關係,需要把 CGID 打開,並且關掉 CGI。以前的寫法是 WITH_CGID=yes + WITHOUT_CGI=yes 就好,現在要改成:\r\n
www/apache22: OPTIONS_SET=CGID | OPTIONS_UNSET=CGI | WITH_MPM=worker
\r\n這樣就可以繼續用 ports.conf 管了... 不過還是有些地方要解決 (像是 WITHOUT_X11=yes 這種設定要怎麼轉到 OptionsNG 架構),看起來得想辦法讓 portconf 可以吃更多形式?", + "title": "FreeBSD 引入 OptionsNG 後 ports.conf (portconf) 的轉換" + }, + { + "id": "3000", + "body": "在 Ubuntu 下不小心拉到視窗大小 (拉動的時候不會顯示長寬),所以想要土法煉鋼找指令列出視窗寬度:\r\n
tput cols
\r\n出自 StackOverflow 的「How do I find the width & height of a terminal window?」。", + "title": "在 shell 下找出 Terminal 視窗的寬度..." + }, + { + "id": "3002", + "body": "NIST 公告選出了 SHA-3 演算法:「NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition」。\r\n\r\n演算法是 Keccak (唸作 catch-ack),這個演算法其中一個優勢是硬體速度:\r\n
Keccak has higher performance in hardware implementations than SHA-2 or any of the other finalists.
\r\n由於選上的演算法會是 royalty-free license,接下來應該會看到許多 spec 開始納入 SHA-3... (參考 Announcing Request for Candidate Algorithm Nominations for a New Cryptographic Hash Algorithm (SHA-3) Family 這份文件)", + "title": "NIST 公告選出 SHA-3 的演算法..." + }, + { + "id": "3003", + "body": "在「Hyper-photos: Jean-François Rauzier attempts to create the most detailed images in the world.」看到 Hyper-photos,像是這樣的照片:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\nHyper-photos:\r\n
Hyperphotos are to panoramic photos what Google Earth is to a globe.
", + "title": "漂亮的 Hyper-photos" + }, + { + "id": "3004", + "body": "Mosh 是一個取代 SSH (OpenSSH) 的工具,官方網站上是這樣介紹:\r\n
Mosh is a replacement for SSH. It's more robust and responsive, especially over Wi-Fi, cellular, and long-distance links.
\r\nMosh 最大的特性是透過 UDP 加密傳輸 (AES-128 OCB mode),而且不綁定 IP address 後設計出這些特性:\r\n\r\n另外 Mosh 模擬了 local echo 機制,就算在 latency 偏高的網路下也還是可以感覺到不錯的反應速度。\r\n\r\n不過是到了 1.2 之後支援 --ssh 這個參數才變得好用,在 client 端只要這樣跑 (假設 ssh port 在 1234):\r\n
mosh --ssh=\"ssh -p 1234 -v\" gslin@server.example.com --server=\"env LANG=en_US.UTF-8 mosh-server\"
\r\nMosh 就會用 ssh 登入後自動執行 mosh-server 取得 shared key 給 mosh-client 用。如果本來就有使用 public key 機制的話就跟原來沒差了 :p\r\n\r\n預設吃 port 60000-61000 其中的一個 UDP port,所以記得開 firewall...", + "title": "把 SSH 換成 Mosh" + }, + { + "id": "3006", + "body": "找了找資料,發現用 apt-get install retext 直接裝 ReText 就可以了,開起來以後選 Live preview 的功能就可以即時看結果了:\r\n\r\n\"\"\r\n\r\n官方的 screenshot:\r\n\r\n\"\"\r\n\r\n除了支援 Markdown 以外,還支援 reStructuredText。\r\n\r\nPS:Markdown 語法可以參考中文版文件:「Markdown 語法說明」。", + "title": "在 Ubuntu 下即時編輯 Markdown 語法:ReText" + }, + { + "id": "3008", + "body": "bash 的 auto completion 預設只吃 .ssh/known_hosts 的內容,而我想讓他加上 yp 的 hosts,查了一下發現這篇 2008 年的文章:「Auto-complete hostnames with using bash」。\r\n\r\n因為我的 yp 已經進了 Git,所以我就這樣設就好:\r\n
export HOSTFILE=\"$HOME/git/kkyp/hosts\"
", + "title": "bash auto completion 下增加 hostname..." + }, + { + "id": "3009", + "body": "最早用 Firefox 的時候 cookie 都是設成 Keep until I close Firefox,然後再把需要 login cookie 的網站設為白名單。\r\n\r\n比較早的 Google Chrome 沒有內建這個功能,必須透過 Vanilla Cookie Manager 設定每次啟動時清掉...\r\n\r\n前陣子發現 Google Chrome 內建這個功能了,很開心的把 Vanilla Cookie Manager 移除掉,改用內建的功能做,結果發現 Google 系列的服務 (像是 Google ReaderGmail) 常常被登出,而維基百科左側的展開偏好也會被 reset,其他的網站到是還算正常...\r\n\r\n花了些時間看,找不到原因,只好換回 Vanilla Cookie Manager...", + "title": "Google Chrome 上的 Cookie 隱私機制..." + }, + { + "id": "3011", + "body": "之前在 AWS VPC (Virtual Private Cloud) 能開的最小台機器是 m1.small,而 AWS 總算是宣佈可以在 VPC 裡開更小台的 t1.micro 了:「Amazon VPC now Supports Micro Instances」、「Launch EC2 Micro Instances in a Virtual Private Cloud」。\r\n\r\n剛好可以拿來當 VPC 的 NAT server 來用...", + "title": "可以在 AWS VPC 內開 Micro Instance 了..." + }, + { + "id": "3013", + "body": "好像隔一陣子就會有人成功 XD\r\n\r\nSCIgen 可以生出 CS 領域的論文,而這次則是 Mathgen 產生數學領域的論文 XD:「Randomly Generated Math Article Accepted By 'Open-Access' Journal」。\r\n\r\n論文的 PDF 則是在這:「Independent, Negative, Canonically Turing Arrows of Equations and Problems in Applied Formal PDE」。", + "title": "用程式產生論文,這次是數學領域..." + }, + { + "id": "3014", + "body": "pkgngFreeBSD 下一代的 package 管理系統,試著改善十幾年的 package 系統。\r\n\r\n對於 package 本身:\r\n\r\n對於 pkgng 的管理來說:\r\n\r\n目前還有不少工具在發展,不過常用的 portmaster 已經可以在 compile 時勾選測試了,就拿來測看看。\r\n\r\n要注意的是,pkg 1.x 之間不保證穩定性 (相容性):\r\n
Any package metadata changes are allowed, so long as it is always possible to upgrade from pkg-1.x to pkg-1.x+1. Best efforts should be made to ensure compatibility is maintained as far as possible.
\r\n看起來還不適合上 production,不過以目前 1.x 可以先測試了...", + "title": "FreeBSD 上試用 pkgng (下一代的 package 管理系統)..." + }, + { + "id": "3015", + "body": "UbuntuJuniper SRX 後面透過 NAT 連 Plurk 會很慢,因為會 TCP three-way handshake 建不起來 (timeout),找了半天居然是 RFC1323 的問題...\r\n\r\n方法是在 /etc/sysctl.conf 內關掉 TCP Timestamps:(桌機就隨便關了 ~_~)\r\n
net.ipv4.tcp_timestamps=0
\r\n然後 sysctl -p 生效。\r\n\r\n參考:「解決XP下50M頻寬使用rfc1323.reg造成的網頁(噗浪)延遲」。", + "title": "Ubuntu 躲在 Juniper SRX 後面 NAT 連 Plurk 很慢的問題..." + }, + { + "id": "3016", + "body": "目前 Ptt 上使用者用的編碼不是單純的 BIG5,而是 BIG5 加上 Unicode 補完計畫的版本 (拿了 BIG5 的造字區去對應某些常用的缺字)。\r\n\r\n如果用 BIG5 去看假名就會變這樣:\r\n\r\n\"\"\r\n\r\n所以在 Ubuntu (系統內建的 Terminal) 或是 Mac OS X (用 iTerm2) 上 Ptt (以及 Ptt2) 時都是用 BIG5-HKSCS 編碼,可以顯示日文假名:\r\n\r\n\"\"\r\n\r\n不過還是可以看出來漢字不太行,所以還是去找了 UAO 的方案...\r\n\r\n第一個想法是直接換掉系統的 BIG5,反正只剩下 BBS 用途要用了,就一次換掉。不過找了半天沒看到現成的工具,雖然在「Mozilla 系列與 Big5 中文字碼」有表可以轉,但還是懶的改...\r\n\r\n另外一個是 GNU Screen patch,依照「Screen + Unicode-At-On」這篇的方式,可以生出一個 UTF-8 terminal + converter (GNU Screen),效果就是這樣:\r\n\r\n\"\"\r\n\r\n可以看到漢字也出現了... 來找看看要怎麼把 patch 包進 FreeBSD ports 好了...", + "title": "把 screen 的 BIG5 換成 UAO (Unicode-At-On,Unicode 補完計畫) 版本..." + }, + { + "id": "3018", + "body": "今天 MOPCON 的投影片,題目「API Design Optimized for Mobile Platform」:\r\n\r\n", + "title": "MOPCON 投影片:API Design Optimized for Mobile Platform" + }, + { + "id": "3021", + "body": "週日一時興起,想起已經很久沒去爬山健行,就在 Ptt 南港板上翻翻資料,後來在台北市政府網站上翻到「更寮古道親山步道」這條看起來不算長的親山步道,早上八點多把東西收一收就跑去爬了。走過一次後發現還有不少支線沒走到,有機會再去補進度...\r\n\r\n一開始是從南港展覽館坐車坐到舊庄派出所 (舊庄站),下車後可以看到親山步道的指示牌,基本上沿著指示牌走不會走錯地方。\r\n\r\n比較有趣的是,依照市政府網站上的介紹,入山口是在舊庄街二段 122 巷 (如圖),我在門牌前面狐疑了老半天,這看起來就是往民宅啊,走進去還有狗對我叫 XDDD\r\n\r\n\"\"\r\n\r\n硬著頭皮進去後看到有石階可以往上走,地面上可以看到起點標示:(確定沒走錯 XDDD)\r\n\r\n\"\"\r\n\r\n因為沒有走到頂,而且樹林還蠻密的,沒看到什麼有趣的風景... 加上幹了不少蠢事,其實還蠻累的 XD\r\n\r\n下次不帶平常用的包包去了 (裡面放著一台 MBA + iPad 以及變壓器),之後要爬的話弄個空包包,裡面放水就好... 然後山上 3G 收訊不好,Instagram 傳不上去救回家傳吧。\r\n\r\n真的是太久沒運動了,肌肉開始抗議... :/", + "title": "更寮古道健行..." + }, + { + "id": "3023", + "body": "FreeBSD 預設的 compiler (/usr/bin/cc/usr/bin/c++/usr/bin/cpp) 從 GCC 4.2.1 換成 clang 了:「Revision 242624」。\r\n\r\n目前只有 CURRENT 裡的 amd64 與 i386 版本換過去,如此一來,FreeBSD 10.0 會是第一個使用 clang 作為預設編輯器的正式版本 (看起來不像會 back port 回 FreeBSD 9)。接下來是 Ports 大混戰了,應該會有一卡車的 ports 用 USE_GCC=yes 來解?\r\n\r\n從 2009 年的努力到現在三年多了 (參考「[ANNOUNCE]: clang/llvm can compile booting FreeBSD kernel on i386/amd64」這封公告信),離拔掉 GCC 4.2.1 又進了一大步...", + "title": "FreeBSD 預設的 compiler 從 GCC 換成 clang" + }, + { + "id": "3024", + "body": "在「Google Implements Do Not Track in Chrome 23」這邊被提醒 Google Chrome 23 支援 DNT,到設定頁裡把「顯示進階設定...」展開,然後把『將「不追蹤」要求與瀏覽流量一併送出』勾起來就可以了:\r\n\r\n\"\"\r\n\r\n開發工具可以看到送出要求時會帶 DNT: 1:\r\n\r\n\"\"", + "title": "Google Chrome 23 內建 DNT 設定了..." + }, + { + "id": "3025", + "body": "AWS 在澳洲雪梨開台:「New Asia Pacific (Sydney) Region in Australia - EC2, DynamoDB, S3, and Much More」,成為目前 AWS 南半球第二個服務區域 (第一個是巴西聖保羅)。\r\n\r\n幾乎所有主要服務都開台了... 連 AWS Direct Connect 都開 :p\r\n\r\n其中兩個主要服務,EC2 的費用與新加坡相同,網路流量部分是亞洲區裡面偏貴的。而 S3 空間費用跟加州一樣貴... 不過講這麼多,用的到的人應該還是會用,畢竟光的速度還是有極限的,建在本地總是有優勢...\r\n\r\n接下來會開在俄羅斯嗎?XD", + "title": "AWS 澳洲開台!" + }, + { + "id": "3028", + "body": "昨天 WordPress.com 宣布支援使用 Bitcoin 購買服務。印象中這應該是第一個大型商業網站支援 Bitcoin 付款:「Pay Another Way: Bitcoin」。\r\n\r\nWordPress.com 是跟 BitPay 合作,實際上會依照匯率收到美金,不太需要承擔 Bitcoin 匯率不穩的問題。即使如此,這也是很大的進展... 第一步是有兌換商願意出來收 Bitcoin 付美金,以及有商業公司願意使用這些服務。", + "title": "WordPress.com 支援 Bitcoin..." + }, + { + "id": "3029", + "body": "捷運上被 Zite 推薦才發現 JavaScript 出新版了 XDDD:「jQuery Blog » jQuery 1.8.3 Released」,已經可以在 Google Hosted Libraries 上抓到了:ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js。\r\n\r\n看 Changelog 主要是修 bug,其他沒什麼改變...", + "title": "原來 jQuery 1.8.3 出了..." + }, + { + "id": "3030", + "body": "在「InnoDB now works with read-only media」這邊看到 MySQL 從 5.6.7 開始,可以在唯讀狀態掛起 InnoDB 資料:「14.2.6.1. Support for Read-Only Media」。\r\n\r\n這對 recovery 相當方便,尤其是人為失誤 (人為下錯指令 TRUNCATE 或是 DROP TABLE) 時可以馬上從 read-only snapshot 掛一份起來複製資料。", + "title": "MySQL 5.6 可以唯讀狀態掛起 InnoDB 資料了..." + }, + { + "id": "3031", + "body": "前陣子在其他地方看到,不過剛剛在「Stealing VM Keys from the Hardware Cache」看到利用 Side-channel attack 的攻擊:「Cross-VM Side Channels and Their Use to Extract Private Keys」。\r\n\r\n實際攻擊的項目是 libgcrypt 實做的 ElGamal 演算法,長度是 4096bits。環境是 Xen,限制是在同一台實體機器上。\r\n\r\n對抗 side-channel attack 的幾個方法:實體隔離 (效果最好) 或是改善演算法 (通常是犧牲一些演算法效率,換取難以被外部預測的保護)。前者也就是 AWS 為了符合美國政府要求所建立 AWS GovCloud (US) 的原因之一。", + "title": "虛擬機內的 Side-channel attack..." + }, + { + "id": "3034", + "body": "標題所提到的兩個 engine 是在 MySQL 中最常用到的兩個 engine。其中 MyISAM 是在 MySQL 5.1 之前的 default engine,InnoDB 則是 MySQL 5.5 之後的 default engine。\r\n\r\n這篇主要是講 MySQL 5.1 + InnoDB Plugin,或是 MySQL 5.5 後的情況。\r\n\r\nMyISAM 是 Table-level lock,當有寫入時其他人無法讀取 (有少數例外,像是 bulk insert)。而 InnoDB 設計成 Row-level lock,在寫入時有很大機會還是可以讀取。\r\n\r\n另外,InnoDB 支援 ACID transaction,對於學過資料庫理論的人 (像是科班出身) 會覺得比較「親切」,比起 MyISAM 有很多東西可以用。\r\n\r\n大多數不換 InnoDB 有幾個原因:\r\n\r\n

InnoDB 佔用的空間比較大

\r\n\r\n最常見的原因是認為 InnoDB 相對 MyISAM 所佔用的空間會大不少 (看過三倍大的):但在 InnoDB 自從推出壓縮功能後就接近很多 (看過只大 20% 的,甚至有可能比 MyISAM 小)。而資料量的問題可以參考 Mobile01 的 55GB (2012 年 10 月 uid=1 的蔣大在 Mobile01 上揭露的數字)。\r\n\r\n當網站夠大時,記憶體與用 15KRPM SAS 硬碟加上 RAID1+0 的一次性成本其實不高。\r\n\r\n

InnoDB 不好備份

\r\n\r\n第二個常見的原因是認為 MyISAM 備份比較容易,直接 copy 就可以備份:這種備份方式其實有很高的風險造成 inconsistent backup (「備份的資料損毀」)。以交易的例子來說,有 auction 與 user 兩個表格,按照字母順序先複製了 auction 表格,再複製 user 表格,中間使用者用點數購買了某個物品 (扣 user 表格裡的點數,在 auction 裡建立一筆資料)。這份備份裡就會備份到「user 內的點數扣掉,但 auction 沒有資料」的情況。\r\n\r\n比較好的方式是用 InnoDB 提供的 transaction 建立 consistent backup,備份時長時間讀取不會像 MyISAM 無法寫入。另外一種方式是建立 backup 專用的 slave,要備份時可以整台 slave 停掉備份 (還有像是 filesystem snapshot 之類的方式,這邊跳過)。\r\n\r\n

書上寫 MyISAM 效能比較好...

\r\n\r\n是的,不過這個前提是「如果你只有讀取」。\r\n\r\nMyISAM 讀取效能比較好並不是指 MyISAM query 一次 <1ms 時 InnoDB query 一次就要 100ms 這種程度。兩個都還是在 <1ms,只是當你用到「效率不好的 query」時,MyISAM 在 Table scan 的效能會比 InnoDB 好。\r\n\r\n但當網站變大遇到 MyISAM + table scan 時就完蛋了:一個 query 卡 1 秒就代表網站上寫入時遇到這個 query 時最少要卡一秒,InnoDB 反而能救你。(雖然這不是好的方向。好的方向應該是想辦法解決 Table scan 的問題,可能是改 query,也有可能是增加 index 或修改 index)\r\n\r\n也因為以上的特性,當使用 InnoDB 時,可以這樣設計:\r\n\r\n

只對時間敏感 Query 加上 Index

\r\n\r\n以前用 MyISAM 時為了避免跑報表會造成其他線上服務的 query 卡住,如果用 InnoDB 因為不會卡,報表的 query 沒有 index 而 table scan 也是可以接受的。\r\n\r\n

有嚴格資料正確性需求的 Query 使用 Transaction

\r\n\r\n像是金流相關系統,一筆購買紀錄可能要修改好幾個表格。用 MyISAM 時必須對好幾個表格使用 TABLE LOCK (仍然有 atomic 問題),現在可以用 transaction 解決。\r\n\r\n

資料庫正規化

\r\n\r\n有可能會因為 MyISAM 卡 query 的問題而設計出非正規化的 schema。用 InnoDB 可能可以正規化,用適當的設備成本 (像是適當使用 JOIN) 降低人力維護成本。", + "title": "MySQL 中,MyISAM 與 InnoDB 帶來的差異..." + }, + { + "id": "3035", + "body": "雪梨也是同樣降幅,而且最高的 >5000TB 沒降,應該是因為 AWS re:Invent 辦這麼大,總是要有些東西看起來很炫?\r\n\r\n降價範圍除了 Standard Storage 以外也包括 Reduced Redundancy Storage,降幅很大,從 24% 到 28% (約 1/4):「Amazon S3 Storage Price Reduction (24 to 28%)」。\r\n\r\n其他幾個對手壓力很大啊 XD", + "title": "AWS 的儲存空間降價 (S3 與 EBS)" + }, + { + "id": "3037", + "body": "在「apt.postgresql.org」這篇文章裡看到 PostgreSQL 宣佈官方 apt repository 的正式公告:「PGDG apt repository for Debian/Ubuntu」。\r\n\r\n目前支援的 OS 包括了:\r\n\r\n其中 Ubuntu 10.04 (lucid) 還正在進行。而 PostgreSQL 的版本從 8.3 到 9.2 (包括了 8.{3,4} 以及 9.{0,1,2} 這五個版本) 都支援。\r\n\r\n比較特別的是居然支援 unstable,大概是因為自己要用?\r\n\r\n來測試看看好了...", + "title": "PostgreSQL 提供 apt 可以用了..." + }, + { + "id": "3038", + "body": "在「Official Debian Images on Amazon Web Services EC2」看到 Debian 官方放出了 AWS EC2 的 AMI:「Cloud/AmazonEC2Image - Debian Wiki」。\r\n\r\n之前幾乎都是靠 alestic 製作的版本,現在則是官方直接支援了... 在頁面上除了有連結指到 Debian 官方的版本外 (在 AWS Marketplace 上),另外還列出了其他個人與團體製作的版本。\r\n\r\n之後如果要用 Debian 可以選這些 AMI 來用...", + "title": "Debian 官方維護的 AWS EC2 Image..." + }, + { + "id": "3040", + "body": "前陣子升了 FreeBSD 上的 bash-completion 之後發現就失效了,翻了紀錄才發現是檔案從 /usr/local/etc/bash_completion 換到 /usr/local/share/bash-completion/bash-completion,所以引用的路徑要改...\r\n\r\n過了一個月沒有 hostname auto completion 的日子...", + "title": "更新 bash-completion 的位置..." + }, + { + "id": "3041", + "body": "在「160 Mac Minis, One Rack」這邊看到的,看照片應該不是 42U 機櫃,而是 47U 的?仍然是很誇張的數字 XD\r\n\r\n\"\"\r\n\r\n電源線是客製化一轉四,另外前面放了四個大風扇散熱... 這樣看起來很專業啊 XDDD", + "title": "一個機櫃塞 160 台 Mac Mini..." + }, + { + "id": "3042", + "body": "在 Slashdot 上看到 Darling 計畫,想要在 Linux 上跑 Mac OS X 的程式,類似 Wine 在 Linux 上跑 Windows 程式:「Darling: Run Apple OS X Binaries On Linux」。\r\n\r\n看起來還在早期階段,貢獻者也不多?\r\n\r\n不過,有什麼程式是在 Mac 上 (而且沒有 Windows 版) 但想在 Linux 上跑的...?", + "title": "在 Linux 上跑 Mac 應用程式..." + }, + { + "id": "3043", + "body": "不多說,參考「TEDx — A letter to the TEDx community on TEDx and bad science」這篇的說明。\r\n\r\n起因是 Reddit 的「The TED name is being dragged through the mud in Valencia, Spain, where a TEDx-approved event is promoting pseudoscientific stuff like (and I quote): crystal therapy, Egyptian psychoaromatherapy, healing through the Earth, homeopathy and even \"basic mind control\".」。\r\n\r\n另外可以參考李怡志整理翻譯的「邪教檢查表」。", + "title": "TEDx 出包..." + }, + { + "id": "3044", + "body": "如標題的問題,因為 token 可以將 secret key 實體隔離開。\r\n\r\n可以讀看看最近這篇報導:「Zitmo Trojan Variant Eurograbber Beats Two-Factor Authentication to Steal Millions」,其中這段:\r\n
To date, the researchers said, Eurograbber has infected more than 30,000 users and stolen an estimated 36 million Euros.
\r\n對於開發木馬的人,銀行服務算是「經濟效益」最高的「投資」...\r\n\r\n\"\"\r\n\r\n用簡訊也有類似的問題,實體的 OTP 算是目前最能抵抗這類攻擊的方式了...", + "title": "為什麼有了 Google Authenticator 還要使用實體的 Two-Factor Token?" + }, + { + "id": "3047", + "body": "敘利亞反政府組織的自製坦克使用 PlayStation 控制器操作砲管:「Playstation Controller Runs Syrian Rebel Tank」,原始新聞連結以及圖片來源是「Sham II: New fighting machine of Syria rebels」。\r\n\r\n\"\"\r\n\r\n看這畫面好像不... 差...?(超土砲 XD)", + "title": "敘利亞反政府組織的自製坦克使用 PlayStation 控制器操作砲管..." + }, + { + "id": "3048", + "body": "MD5SHA-1 或是前陣子通過的 SHA-3,都不是設計用來單向儲存密碼用的。bcrypt 或是 PBKDF2 比較接近這個需求。\r\n\r\n針對使用 Cryptographic hash function 儲存密碼的行為,除了可以用 Rainbow table 攻擊外,最近流行使用 GPU 加速暴力運算...\r\n\r\n前幾天看到的 cluster 相當威猛,可以在 5.5 小時內計算出「所有 8 個字元的組合」(NTLM):「25-GPU cluster cracks every standard Windows password in <6 hours」。\r\n\r\n\"\"\r\n\r\n這個 cluster 用了 25 張 AMD Radeon 卡,如果是針對 SHA-1 計算,每秒可以計算 630 億次,如果是 MD5 的話則可以到每秒 1800 億次,NTLM 則是每秒 3500 億次。\r\n\r\n不過算一算也是吃電大怪物... XD", + "title": "暴力法破解密碼..." + }, + { + "id": "3050", + "body": "看到這則新聞,買一台 iPad 但卻送來五台,而商家說「你就收下吧,耶誕快樂」:「Order one iPad from Best Buy, receive four extras free of charge?」。\r\n\r\n\"\"\r\n\r\n事實上是,美國法令極度保護消費者,商家如果要尋合法的管道取回會非常麻煩,這是出自 1970 年的法條「Mailing of unordered merchandise」(United States Code, 2006 Edition, Supplement 3, Title 39 - POSTAL SERVICE):\r\n
(a) Except for (1) free samples clearly and conspicuously marked as such, and (2) merchandise mailed by a charitable organization soliciting contributions, the mailing of unordered merchandise or of communications prohibited by subsection (c) of this section constitutes an unfair method of competition and an unfair trade practice in violation of section 45(a)(1) of title 15.
\r\n只要是商家寄出未經消費者所請求的物品 (如果清楚標示上面兩項特例的話屬於例外),就屬於違法行為。當違法行為發生後:\r\n\r\n這些條款使得消費者不用怕廠商故意寄東西給你,過一陣子再寄請款單要求付款,不然就要求很麻煩的手續要你歸還。也因為這個條款,美國的商家對於這類行為常常是「啊~就送你吧~」,因為舉證則人都在商家身上,一不小心就會使得商家被罰...\r\n\r\n台灣有這樣的條款嗎...?", + "title": "當你只買一台 iPad,但卻送來五台..." + }, + { + "id": "3051", + "body": "剛剛在「Apache HTTP ServerをRFC6585の\"429 Too Many Requests\"に(とりあえず)対応させるパッチ」看到的... 429 Too Many Requests 是在四月才被提出來的 (RFC 6585),雖然還不是 Standard (目前是 Proposed Standard),但看起來不錯啊...\r\n\r\n\"\"\r\n\r\n一定要放一張經典畫面...", + "title": "429 Too Many Requests" + }, + { + "id": "3053", + "body": "在「Deep C: Understanding the Design of C Integer Types」這篇文章裡面以 C99 為參考文件,說明 C 語言的資料型態 (尤其是數字的部份)。\r\n\r\n裡面引用了規個書的文件,說明「為什麼」數字資料型態會長這樣:\r\n
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.
\r\n以 target machine 為主要考量的特性與 C 語言被認為是 portable assembly language 的想法還蠻同調的... (What is a portable assembly language?)\r\n\r\n所以寫 Portable C code 的人會比較辛苦,需要查規格書的資料,確保各平台都能夠正確被編譯... 而到最後演變成沒什麼人在管 \"portable\" 這件事情,反正 Autotools 開下去針對不能跑的平台用不同的 code XD", + "title": "了解 C 語言的數字資料型態..." + }, + { + "id": "3055", + "body": "在 TC 上看到 Imgur 提供商業方案:「Imgur Expands Its Revenue Streams With Latest API Update, Now Ready For Commercial Use」,同時 Imgur 也更新了 API 說明頁面:「The Imgur API - General Information」。\r\n\r\n以圖片張數與 API request 數量限制,USD$25/month 每個月可以傳 12.5k 張以及 375k API requests。換算成每天的量,大約是 4k 0.4k 張圖與 12k 次 API call。(hmmm,Komica 不知道會不會去租用...)\r\n\r\n看起來 Imgur 裡面的情況很糟啊,居然設計出這樣的方案。如果讓我來猜國外的觀點,Imgur 應該是被定位為「圖床」而非「相本服務」?這是要賺 eBay 賣家的錢嗎?\r\n\r\nImgur 圖片並不是什麼便宜的 bandwidth,而是 EdgeCast 含亞洲 PoP 的 CDN,這樣發展對嗎...", + "title": "Imgur 的商業使用方案..." + }, + { + "id": "3056", + "body": "在「Google60 makes your web search slower, noisier, and exponentially more amazing」看到 Google60 這玩具 XDDD\r\n\r\n假設 Google 是出現在 1960 年代,那麼操作起來會是什麼樣子 XD\r\n\r\n\"\"\r\n\r\n因為有接 API,所以實際上是可以搜尋的,只是這些特效讓人笑到不行 XDDD", + "title": "Google60..." + }, + { + "id": "3057", + "body": "把本來在 gslin.org 的 blog 搬到 old.gslin.org,然後丟個 301 讓本來的連結慢慢轉換過去... (雖然那邊應該是沒剩下什麼資料了)\r\n\r\n放一陣子後就可以把 gslin.org 拿來回做其他用途了...", + "title": "把舊的 Blog 搬到另外一個網段..." + }, + { + "id": "3059", + "body": "之前曾經提過 BootstrapCDN,不過我不是很喜歡用。主要的原因包括 netdna.bootstrapcdn.com 所使用的 CDN 在是不包含亞洲範圍 (會需要到美西抓),加上之前因為換 url 結構結果本來的 url broken...\r\n\r\ncdnjs 是之前就知道的服務,剛剛看了一下發現東西愈來愈完整了... 雖然名稱裡是放 js,但實際上上面放的 Bootstrap 是完整的:\r\n
//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings.png\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/img/glyphicons-halflings-white.png\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.min.css\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.css\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.css\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js\r\n//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.js
\r\n剛剛在 CloudFlare 官方的 blog 上看到介紹 cdnjs 有點意外:「CDNJS: The Fastest Javascript Repo on the Web」。\r\n\r\n翻了翻 cdnjs.cloudflare.com,看起來是包含亞洲的點,在 HiNetTWGate 上測試是導到香港的點,應該會用用看吧。至於其他 Google Hosted Libraries 有提供的應該是會用 Google 的服務,畢竟是直接從台灣的機房供應的...", + "title": "cdnjs (其實我要說的是 Bootstrap...)" + }, + { + "id": "3061", + "body": "在「Do we need box-shadow or border-radius prefixes anymore?」這篇文章開頭就先給懶人包:\r\n\r\n在這兩種情況下,你仍然需要加上 vendor prefix...\r\n\r\n而比較長的說明,可以參考原文後半段,把這兩個效果分開說明。\r\n\r\n如果是 Sass (SCSS) 使用者,就直接加吧,反正程式都幫你做好了... 雖然 validator 會叫 CSS 不合法,但也沒印象看過哪家瀏覽器會因為 css vendor prefix 就罷工... (真的有嗎?XD)", + "title": "對於現在的瀏覽器,CSS 是否還需要加上 vendor prefix..." + }, + { + "id": "3062", + "body": "出自「DMCA Copyright Takedowns To Google Increased 10x In Just The Past Six Months」與 Google 公開的資料「資訊公開報告 - 移除要求 - 版權」。\r\n\r\n六個月前是每週 250k 份,現在是 2500k 份。不知道是不是人工三班 (或是四班) 處理,如果每份算一分鐘,代表現在是千人以上的團隊處理 DMCA 問題。\r\n\r\nDMCA 最大的問題慢慢浮現出來了:濫用 Takedown Notice 的人極少會受到處罰,所以就濫發。\r\n\r\n前陣子 NASA 在 YouTube 上放好奇號登陸成功並傳回第一張照片的影片也被電視台 Takedown 過,最後仍然不了了之:「NASA's Own Video of Curiosity Landing Crashes Into a DMCA Takedown」。\r\n\r\n也許要等數量再多十倍時 Google 會爆氣想辦法修法?", + "title": "Google 收到的 DMCA Takedown 在六個月內爆增為原來的十倍..." + }, + { + "id": "3063", + "body": "codership (Galera Cluster 背後的公司) 剛剛發了一篇文章,說明將 MySQL 轉換到 Galera Cluster 有哪些事情要先處理:「5 Tips for migrating your MySQL server to a Galera Cluster」。\r\n\r\n純粹技術上的事情大致上是這樣:\r\n\r\n另外幾點不是技術上的問題,而是 policy 應該規劃的事情... 把事情列出來,多隻眼睛檢查後再一步一步照表操課。\r\n\r\nPS:對於 Galera Cluster 不熟的人可以先去看官方網站以及 Percona 的說明,看不懂就不要用,這樣會比較安全...", + "title": "從 MySQL (單機) 轉到 Galera Cluster 的前置作業..." + }, + { + "id": "3064", + "body": "mctop 其實是個看得懂 L7 packet 的 sniffer XDDD\r\n\r\n軟體是由 Etsy 所開發,出自:「mctop - a tool for analyzing memcache get traffic」。跑起來像這樣 (官方的範例圖):\r\n\r\n\"\"\r\n\r\n在 GitHub 頁面上官方有提到因為是透過 ruby-pcap,目前沒有辦法完全承載大流量 (會有 packet loss),不過看起來是 profiling 必備工具 :p", + "title": "mctop:memcache top" + }, + { + "id": "3065", + "body": "GitHub 上總是有人會送一些奇怪的 pull request 出來,把整個 code repository 砍掉換成惡搞的東西... 這次是 CoderDojo / CoderDojo-Kata 這個專案被人發 pull request 要惡搞,結果一堆人利用 comment 的功能開始嫌東嫌西:「pull 1」。\r\n\r\n看完一次後覺得實在是太... 有趣 XDDD 乾脆列出來:\r\n\r\n(倒地不起)", + "title": "惡搞的 pull request 被人嫌到不行..." + }, + { + "id": "3066", + "body": "在 Slashdot 上看到「Denial-of-Service Attack Found In Btrfs File-System」覺得很有趣,結果一看,又是 hash collision... XD\r\n\r\n一年前的「n.runs-SA-2011.004 - web programming languages and platforms - DoS through hash table (PDF)」打爆所有主流語言,沒想到在 filesystem 上也發生了 XDDD\r\n\r\n不知道要怎麼修正... (已經存在的資料要怎麼 migrate?incompatible change?)", + "title": "Btrfs 的 Hash Collision..." + }, + { + "id": "3067", + "body": "很久前 FreeBSD 有提供 weekly build (還是 daily build?) 讓人安裝,以前還蠻喜歡抓這個版本下來裝,因為解開 ports 的東西不會太舊。現在網路夠快,用 Portsnap 拉一下就抓完了...\r\n\r\n不過對於希望能用 -STABLE 的人絕對是一個相當棒的服務 (通常發生在 -STABLE 從 -CURRENT 合併新功能進來時... 這時可以直接裝一台機器測試,而不用先裝 -RELEASE 再 re-compile kernel & world 升級):「FreeBSD Development Snapshot Availability」。\r\n\r\n目前針對 10-CURRENT 放出 amd64、i386、powerpc、powerpc64 四個平台,9-STABLE 則是 amd64 與 i386,所以總共是六個支線,檔案在官方的 FTP 站上可以取得:「ftp.freebsd.org/pub/FreeBSD/snapshots/」。", + "title": "FreeBSD snapshot 版本復出..." + }, + { + "id": "3068", + "body": "看到 Booking.comYUICompressor 移植到 Perl 上:「Efficient CSS Compression in Perl」。模組在 CSS::Compressor 這裡,看日期其實放出來蠻久的了?\r\n\r\n開發的起因是因為 Java 啟動速度太慢,所以用 Perl 改寫... 雖然只能處理 CSS 的部份,但因為現在 JS 的主力應該是 UglifyJS2 或是 UglifyJS,理論上是可以把 Java 版本的 YUICompressor 了放到旁邊了?\r\n\r\n據開發者自己的說法,因為 Java 啟動的 overhead 實在太重,就算是處理很大的 CSS 檔案,也可以省 40% 的時間,如果是小一點的檔案甚至可以省一半...", + "title": "Perl 版本的 YUICompressor (CSS 的部份)" + }, + { + "id": "3069", + "body": "話說 Zite 給的文章愈來愈歡樂了,大概是安全性的文章點多了就自動丟這類的出來。\r\n\r\n像是這篇「[ROOT][SECURITY] Root exploit on Exynos」講安全漏洞的,作者猜測這些手機都有問題:\r\n\r\n後門是 /dev/exynos-mem,這功能與 /dev/mem 一樣,只是... 所有人都可以讀寫 XD (於是任何程式都可以讀寫整台機器裡任何一個記憶體區塊內的資料)\r\n\r\n然後文章後面提供一包 PoC source,可以生出 root shell... XDDD", + "title": "歡樂的 Samsung Security Hole..." + }, + { + "id": "3070", + "body": "sitespeed.io 是一個 open source 軟體,讓開發者可以測試網站的效能,然後輸出 html 報表:「Do you sitespeed?」。\r\n\r\n執行需要 Java 1.7+ 以及 PhantomJS,我是在 FreeBSD 上跑 (Java 的部份是用 java/openjdk7),另外根據文章裡第三個 comment,在 Windows 上用 Cygwin 也可以跑。\r\n\r\n\"\"\r\n\r\n以 ./sitespeed.io -u http://ptt.cc/ -d 1 -o img 跑出來後會有一整個目錄的報告,包括了 summary 以及所有頁面的清單 (後面這兩個連結是跑完後用 s3cmd sync 丟上 S3 的):「ptt.cc - Summary of the sitespeed.io result」、「ptt.cc - All pages information」。\r\n\r\n每一頁都有細項說明,像是首頁 /index.html:「Page data, collected by sitespeed.io for page - http://www.ptt.cc/index.html」。\r\n\r\n不過我更感興趣的是 PhantomJS,不知道可以做多少事情...", + "title": "sitespeed.io 網站測速" + }, + { + "id": "3071", + "body": "從「RIM and Netflix dropped from NASDAQ-100 financial index as Facebook gains a seat」這邊看到的,標題寫的很清楚了...\r\n\r\n自 2013 年開始,RIMEA 以及 Netflix 從 NASDAQ-100 除名,而 Facebook 則是很理所當然的納入 NASDAQ-100...\r\n\r\n有點意外 Netflix 居然摔出來...", + "title": "RIM、EA 以及 Netflix 從 NASDAQ-100 除名..." + }, + { + "id": "3072", + "body": "網頁版 WYSIWYG 的 LaTeX 編輯器:「writeLaTeX」。\r\n\r\n\"\"\r\n\r\n左邊是編輯區,右邊是 preview 視窗。沒有很即時,不過應該還是很操系統資源。(可以看出來一修改後,後端就在 recompile 輸出...)\r\n\r\n左邊編輯區的 solarized 配色看起來好舒服啊,vim 要不要換呢...", + "title": "網頁版 WYSIWYG 的 LaTeX 編輯器..." + }, + { + "id": "3075", + "body": "因為 PHP 5.5.0 Alpha1 在十一月放出來,國外論壇上也陸陸續續都開始在討論 PHP 5.5 的文章,像是這篇列出了 PHP 5.5 的新功能:「What to Expect From PHP 5.5」。\r\n\r\n目前看起來,PHP 5.5 導入 Generators 與 yield,可以讓 iterator 的行為寫得更自然,以前要自己得用 class 包起來模擬...\r\n\r\n不過,可以直接寫 \"Hello World\"[1] 得到 \"e\" 究竟會讓 PHP community 產生出來的 code 變成什麼樣子呢...", + "title": "PHP 5.5 的改善..." + }, + { + "id": "3076", + "body": "DARPA (國防高等研究計劃署,不過英文應該比較容易懂,就跟「NASA」的狀況一樣) 打算投入資源,研發在超過 200km 的距離下建立 100Gbps+ 無線網路的技術,仍然要維持現在這個等級的大小與電耗:「DARPA begins work on 100Gbps wireless tech with 120-mile range」,DARPA 的新聞稿在「DEPLOYABLE RADIO FREQUENCY DATA BACKBONE TO MATCH FIBER OPTIC CAPACITY」。\r\n\r\n\"\"\r\n\r\nDARPA 會在明年年初舉辦 conference:「PROPOSERS’ DAY CONFERENCE FOR 100 Gb/s RF BACKBONE (100G) PROGRAM」。之後才會評估計畫內容與時程。\r\n\r\n同樣的技術拿來商用其實也有價值?200km 可以從宜蘭打到西表島了,也可以從淡水打到馬祖了... 如果速度與距離可以妥協的話,屏東與東沙的 400km 不知道能不能跑上 10Gbps...", + "title": "美國 DARPA 打算在超過 200km 的距離下建立 100Gbps 的無線網路..." + }, + { + "id": "3077", + "body": "維基百科的 mailing list 上丟出的消息,英文版 Wikipedia 資料庫的 slave server 目前已經在 MariaDB 5.5 上了:「mariadb 5.5 in production for english wikipedia」。\r\n\r\n之前跑的版本是 MySQL 5.1 + Facebook patchset 版本,整體大約快了 8%:\r\n
Taking the times of 100% of all queries over regular sample windows, the average query time across all enwiki slave queries is about 8% faster with MariaDB vs. our production build of 5.1-fb. Some queries types are 10-15% faster, some are 3% slower, and nothing looks aberrant beyond those bounds. Overall throughput as measured by qps has generally been improved by 2-10%. I wouldn't draw any conclusions from this data yet, more is needed to filter out noise, but it's positive.
\r\n然後計畫在接下來一兩個月觀察,沒問題就全換:\r\n
MariaDB has some nice performance improvements that our workload doesn't really hit (better query optimization and index usage during joins, much better sub query support) but there are also some things, such as full utilization of the primary key embedded on the right of every secondary index that we can take advantage of (and improve our schema around) once prod is fully upgraded, hopefully over the next 1-2 months.
\r\n效能不是最主要考量,而是政治面的原因,官方說法是支持 open source 社群:(沒有講的就是「我們對 Oracle 不怎麼信任...」)\r\n
The main goal of migrating to MariaDB is not performance driven. More so, I think it's in WMF's and the open source communities interest to coalesce around the MariaDB Foundation as the best route to ensuring a truly open and well supported future for mysql derived database technology. Performance gains along the way are icing on the cake.
\r\n另外參考:「on wikipedia and mariadb」。", + "title": "Wikipedia 把英文版資料庫的其中一個 slave 從 MySQL 5.1 換到 MariaDB 5.5..." + }, + { + "id": "3078", + "body": "看「Fantastic front-end performance Part 1 – Concatenate, Compress & Cache – A Node.JS Holiday Season, part 4」的時候發現 node.js 版的 YUICompressor 比起 Perl 版本更早之前就 porting 完成了:「UglifyCSS」,甚至是官方版本的「yuicompressor / ports / js / cssmin.js」也都遠早於 Perl 版本...\r\n\r\n用 npm 裝 uglifycss 就可以用了...", + "title": "node.js 版的 YUICompressor..." + }, + { + "id": "3079", + "body": "Ubuntu One 是個類似 Dropbox 的軟體,有 5GB 免費空間可以用。\r\n\r\n看到「Ubuntu One Mac Client Out of Beta, Now Stable」之後跑去裝 Mac 版,發現 Mac 版上的安裝介面跟 Mac 的風格完全不一樣... (很突兀,有種看到沒有 CSS 的 HTML 的感覺...)\r\n\r\n裝完後開起來在這個畫面跑很久:\r\n\r\n\"\"\r\n\r\n完成後的畫面:\r\n\r\n\"\"\r\n\r\n另外在安裝完以後 Finder 不會出現 Ubuntu One 的側邊欄,對於第一次用的人應該會覺得有點茫然...\r\n\r\n設定畫面長這樣:\r\n\r\n\"\"\r\n\r\n那個配色與圓角框感覺起來好糟糕 XDDD\r\n\r\n反正都裝起來了,就測試看看吧,晚點在 Ubuntu 上也跑起來看看是不是配色會比較搭?", + "title": "裝 Ubuntu One..." + }, + { + "id": "3081", + "body": "Amazon Web ServicesEC2 在世界末日時發表 120GB RAM、16 virtual core、48TB disk (24 disks) 的「EC2 虛擬機」:「The New EC2 High Storage Instance Family」。\r\n\r\n看起來像是 12 顆 7.2KRPM 的 2TB SATA,每顆如果可以跑到 200MB 就是 2.4GBytes/sec?如果是這種規格,給大量 sequence read/write 的運算超適合,官方 blog 的說明裡的解釋也是接近這個方向:\r\n
This instance family is designed for data-intensive applications that require high storage density and high sequential I/O -- data warehousing, log processing, and seismic analysis (to name a few). We know that these applications can generate or consume tremendous amounts of data and that you want to be able to run them on EC2.
\r\n目前只在 US-East (Northern Virginia) 有,USD$4.60/hour,硬算 720 小時,大約是每個月台幣十萬...\r\n\r\nAWS 最近在補的硬體可以看出來是 Hybrid Hosting 的路線:這些機器應該是一台只跑一個 instance,跟 Dedicated Hosting 差不多。上面跑虛擬化只是為了算錢 (accounting) 以及一些安全機制 (像是防止 IP spoof,以及配合 EC2 提供的 firewall)。\r\n\r\n實質上不太能說 AWS 不是 Hybrid Hosting 了...", + "title": "AWS EC2 新機種:超大台的 hs1.8xlarge..." + }, + { + "id": "3082", + "body": "Jordi BoggianoPHP-FIG 上提案整合 log interface,參考「One logger to rule them all」這篇,提案本身可以參考「Logger Interface」這裡。\r\n\r\n如果通過的話,這很有可能是 PSR-3... 所以 PHP-FIG 接下來的想法是建立 interface 嗎?hmmm...", + "title": "可能是未來的 PSR-3:LoggerInterface" + }, + { + "id": "3083", + "body": "Percona 在前幾天辦了 Webniar 解釋 Percona Toolkit 要怎麼用 (並且宣傳有多好用 XD):「10 Percona Toolkit Tools Every MySQL DBA Should Know About」。\r\n\r\n依照慣例,Percona 在結束後會把投影片與錄影整理後放出來 (也就是上面的連結),如果沒時間的話可以看投影片留個印象,有時間的話可以實際操作看看到底有多好用。\r\n\r\n另外在 MySQL Performance Blog 上主講者也整理了 Q&A 的部份也很值得看一看:「Percona Toolkit Webinar followup Q&A」。", + "title": "使用 Percona Toolkit 管理 MySQL..." + }, + { + "id": "3085", + "body": "我很喜歡在 iPad 上用 Zite 讀文章,除了看文章以外,有些常出現的新站台我會丟到 Google Reader 訂閱...\r\n\r\n不過最近一次改版後,操作上變得很難用...\r\n\r\n\"\"\r\n\r\nnext 的設計是希望我一直看一下去,不過我用了一陣子以後發現:\r\n\r\n所以後來就完全放棄 next 按鈕,我寧可點左上角的 close 按鈕... (要用左手按,很不方便)\r\n\r\n有人要推薦其他的軟體嗎?", + "title": "變難用的 Zite..." + }, + { + "id": "3087", + "body": "在「W3 Total Cache Implementation Vulnerability」這篇說明了 WordPress 知名外掛 W3 Total Cache 的安全性問題,原來的在通報在 Full Disclosure Mailing List 上:「Wordpress Remote Exploit - W3 Total Cache」。\r\n\r\n當沒有 opcode cache (像是 APC) 而使用 disk DB cache 時,會有安全性問題。\r\n\r\n\"\"\r\n\r\n除了關掉 DB cache 以外,目前的 workaround 建議是針對 /wp-content/w3tc/dbcache 擋掉,像是用 .htaccess 擋:\r\n
#\r\ndeny from all
", + "title": "W3 Total Cache 安全性問題..." + }, + { + "id": "3089", + "body": "換工作後就在公司旁邊找房子住 (南港),剛好是 1/1 入住,12/31 到期。常常在南港家裡餵食肥睡睡...\r\n\r\n\"\"\r\n\r\n不過南港公司旁邊的生活機能還是讓人覺得很不方便,深夜如果要走到便利商店要花十分鐘,再加上身體的因素,最後還是決定先搬回家裡住。", + "title": "搬回家..." + }, + { + "id": "3090", + "body": "在「Auditing login attempts in MySQL」這篇文章裡討論 MySQL 登入的 audit log,其中第一個方法是 full log (包含 SELECT 這類指令),看起來可以活用...\r\n\r\n打開 General Query Log 後,幾乎所有的行為都會被記錄下來,照這個設計應該可以寫到 FIFO 裡丟到 log server 上?不知道會增加 log server 多少負荷...", + "title": "MySQL 的 audit log" + }, + { + "id": "3091", + "body": "兩個禮拜前在 Slashdot 上看到的「When Writing, How Anonymous Can You Be, Really?」,提到了 PAN Workshop and Competition。\r\n\r\nPAN 2013 將在明年九月辦,除了一般有的演講以及投稿以外,還包括了三個競賽:\r\n\r\n三個題目都相當實用... 先紀錄起來,等明年九月再回頭來看?", + "title": "NLP 的應用:PAN 2013" + }, + { + "id": "3092", + "body": "在 Slashdot 上看到「Ask Slashdot: Linux-Friendly Motherboard Manufacturers?」這篇,第一個 comment 通常是最犀利的 comment... XDDD\r\n
I heard the Raspberry Pi is very Linux compatible, in fact it doesn't even run Windows.
\r\n\r\n\"\"\r\n\r\n然後下面滿滿都在討論 Raspberry Pi... XDDD", + "title": "對 Linux「友善」的主機板廠商... XD" + }, + { + "id": "3093", + "body": "等了那麼久,以為會在放完假後才看到,沒想到還是在今年結束前正式公告了:「FreeBSD 9.1-RELEASE Announcement」。\r\n\r\n依照慣例就是修掉一些問題,然後更新 driver & library...", + "title": "FreeBSD 9.1-RELEASE..." + }, + { + "id": "3095", + "body": "讓 Raspberry Pi 模擬成為 AirPlay 裝置,再外接喇叭:「Hacking a Raspberry Pi into a wireless airplay speaker」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\r\n\r\n用到 ShairPort (模擬 AirPort Express 的軟體),而 ShairPort 目前只支援聲音的部份,所以現在只能接喇叭... 有人實做影像的時候應該就會有人把 HDMI 接上去了 :p", + "title": "把 Raspberry Pi 當作 AirPlay 裝置放音樂..." + }, + { + "id": "3097", + "body": "寫到從 Mozilla 換到 Khan 了... XD\r\n\r\nJohn ResigjQuery 的建立者,並長期擔任 jQuery 的大頭 (不過目前已經將位置讓給其他人了,不太深入參與 jQuery 的發展了),所以在 John Resig 還在帶領 jQuery 發展時預定所要出版的書「Secrets of the JavaScript Ninja」備受期待。\r\n\r\n\"The\r\n\r\n然後這一期待就是三年... 從 2009 年開始寫 (參考「50% Off Secrets of the JavaScript Ninja」這篇),終於在 2012 年結束之前寫完上架了:\r\n\r\n

Looks like my new book \"Secrets of the JavaScript Ninja\" is finally out! amazon.com/dp/193398869X/ Happy New Year!

— John Resig (@jeresig) December 31, 2012
\r\n\r\n\r\n嗯,HUNTER×HUNTER 什麼時候會出下一章呢...", + "title": "John Resig 寫超過三年的 Secrets of the JavaScript Ninja 終於出版了..." + }, + { + "id": "3098", + "body": "「How multi-disk failures happen」這篇畫了不少圖解釋在 RAID5 上面偶而會遇到的 Multi-disk failure 問題 (RAID6 也會,風險比較低而已)。\r\n\r\n\"RAID\r\n\r\n平常壞軌時,RAID 系統不一定會發現,直到 RAID rebuild 時讀過所有的磁區,系統才發現其他壞軌,造成第二顆被標為損壞... (推論到 RAID6 的情況就是再發生一次)\r\n\r\n這在 I/O 比較頻繁的 RAID 比較不容易發生 (因為在量小的時候就容易偵測到)。\r\n\r\n對於比較閒的系統,應該放個 cron 跑 dd if=/dev/XXX of=/dev/null 嗎?:p", + "title": "RAID5 會遇到的 Multi-disk failure 問題" + }, + { + "id": "3099", + "body": "有時候除了可以看介紹新技術的文章學東西外,報告類的文章也可以看得出來目前的趨勢。\r\n\r\n像是 Mozilla Database Team 的年終報告描述近況與最後這季做了哪些事情「December News from the Mozilla Database Team」:\r\n\r\n另外還有一些 PostgreSQL 的說明,看起來還沒穩下來...\r\n\r\n目前已經看到維基百科與 Mozilla 都在嘗試 MariaDB,看了看 MariaDB versus MySQL - Features 發現有趣的東西還不少,除了 Aria 以外,Virtual ColumnsDynamic columns 似乎都是有趣的東西...", + "title": "看 Mozilla Database Team 的年終報告..." + }, + { + "id": "3100", + "body": "在 RSA 中,單獨靠 Private Key 是無法算出 Public Key 的,不過在 PEM 檔裡因為都有紀錄,所以可以取出:\r\n
openssl rsa -in aws.pem -pubout
\r\n不過取出的格式需要再轉一次讓 OpenSSH 可以吃:(參考「Convert pem key to ssh-rsa format」這篇的方法)\r\n
ssh-keygen -f aws.pub -i -m PKCS8
\r\n雖然 ssh-keygen 不接受 - 當 stdin,但可以利用 /dev/stdin 直接串起來:\r\n
openssl rsa -in aws.pem -pubout | ssh-keygen -f /dev/stdin -i -m PKCS8
", + "title": "把 PEM Private Key 檔轉成 SSH Public Key 格式..." + }, + { + "id": "3101", + "body": "Monty Program ABMySQL 的發起人 Monty 在離開 Sun 之後所創辦的公司 (他同時也是 MySQL AB 的創辦人),這家公司目前以 MariaDB 為發展主力。\r\n\r\n先說對 MariaDB 目前的看法:暫時還是會用 Percona 所提供的版本,以及 XtraDB (基於 InnoDB 的產品)。\r\n\r\nMariaDB 發展的重點在於 Aria storage Engine,但目前的 1.5 版只支援 crash-safe,要到 2.0 才會支援 InnoDB 主要功能,而到了 2.5 才會針對效能調整,看起來要到「能用」必須要到 2.5 之後... (參考「Aria FAQ」的說明)\r\n\r\nInnoDB 控制權在 Oracle 手上,XtraDB 控制權在 Percona 手上,而 MyISAM 拿不上檯面。所以 Monty 想要一個控制權在他自己手上的 storage engine...\r\n\r\n對於社群來說,因為 XtraDB 還是基於 InnoDB 的分支,所以當 Oracle 從 InnoDB 抽手後大家會擔心 Percona 能夠自己發展到什麼程度。這使得對於 Aria 有所期待,也趁著現在 Oracle 被歐盟盯著不致於做的太明顯趕快發展。\r\n\r\n這也可能是 WikimediaMozilla 選 MariaDB 當 slave 測試的原因?當然也有可能只是「看名字比較順眼」之類的原因而選... XD", + "title": "測試 MariaDB 後的一些感想..." + }, + { + "id": "3102", + "body": "Delicious 愈來愈不順手,花了一次性的 USD$9.97 買 Pinboard 服務,把問題解決掉... 畫面長這樣,很像古早的 (最好用的那段期間) Delicious:\r\n\r\n\"\"\r\n\r\n把 bookmarklet 也換掉,沒意外的話,之後應該不會用 Delicious 了 :o", + "title": "從 Delicious 換到 Pinboard..." + }, + { + "id": "3103", + "body": "iPad 上的版本在看完文章後要按左上角的叉叉才能離開:\r\n\r\n\"\"\r\n\r\n不過在 iPhone 上的版本在看完文章要回到總覽頁時,可以用右手「由左到右劃過」離開:\r\n\r\n\"\"\r\n\r\n而且剛剛在 iPad 版上又遇到空白頁了:\r\n\r\n\"\"\r\n\r\n其他幾套推薦的軟體也同時在測試中...", + "title": "先暫時改用手機版的 Zite... (操作與 bug 比 iPad 好不少)" + }, + { + "id": "3105", + "body": "在「Don’t Have a False Sense of Security: 5 Insecure Ways to Secure Your Wi-Fi」這篇文章裡面提到了五個「不安全的安全措施」:\r\n\r\n無線網路不太好搞啊... 有些公司是直接限制無線網路只能連到 VPN server,利用 IPSec VPN 或是 SSLVPN 保護。", + "title": "增加無線網路的安全性" + }, + { + "id": "3106", + "body": "「Common use cases for the MySQL Join statement」這篇給的範例與把 MySQL 上常用到的幾種 JOIN 提出來分析,包括 index 與 explain。另外在「Managing hierarchical data with MySQL」也提到了要怎麼處理階層式資料。\r\n\r\n對於 JOIN 大概分幾個階段:\r\n\r\n後面的階段則是 data sharding 與 NoSQL。不過每個階段的界線不是那麼明顯,有時候會重疊在一起...\r\n\r\n說到逆正規化,MariaDBVirtual Columns + PERSIST 好像是逆正規化的好工具,再來測仔細一點...", + "title": "MySQL 內 JOIN 的應用..." + }, + { + "id": "3108", + "body": "Twitter 上看到 jnlin 提到:\r\n\r\n

28.993 ... murmur.tw/jnlin/5078149

— Jui-Nan Lin (@jnlin) January 3, 2013
\r\n\r\n\r\n這數字看起來跟匯率有關,跑去查 1USD 果然是講這個數字:\r\n\r\n\"1USD\"\r\n\r\n突破 29 了啊...", + "title": "1USD..." + }, + { + "id": "3109", + "body": "下午遇到布丁大長輩的時候他還很開心說「我用 2.3 沒問題的啊~」XDDD\r\n\r\n今天 Ruby on Rails 官方對 Active Record 發出安全性通報以及更新 (類別為 SQL Injection):「[ANN] Rails 3.2.10, 3.1.9, and 3.0.18 have been released!」。\r\n\r\n請不要只看標題,這次的安全性問題包括所有版本,而非 3.x 而已。這次的安全性問題太過歡樂,所以除了在支援的版本以外 (3.1 與 3.2),這次的安全性問題還是提供了 2.3 與 3.0 的 patch 讓人下載,並提供當無法使用 patch 時的 workaround:「SQL Injection Vulnerability in Ruby on Rails (CVE-2012-5664)」。", + "title": "請僅快確認這次 RoR 所提供的安全性公告" + }, + { + "id": "3110", + "body": "在「How blind people use Instagram」看到的一段影片:\r\n\r\n\r\n\r\nTommy EdisonInstgram 帳號在這:「blindfilmcritic」。", + "title": "視障人士用 Instgram 的方式..." + }, + { + "id": "3112", + "body": "出自「French ISP blocks online ads by default – just a beta feature glitch?」與「France’s second-largest ISP deploys ad blocking via firmware update」。\r\n\r\n\"Freebox\"\r\n\r\n法國第二大的 ISP「Free」在最近一次的韌體更新裡,增加了「過濾廣告 (adblock)」的功能,並標為 beta:「Mise à jour Freebox Server 1.1.9」,不過,有很多人發現這個 beta 功能預設是開啟的... 然後就看到所有以網路廣告為生的科技新聞網站一面負評... XDDD\r\n\r\n前幾天 Free 才爆出擋 YouTube 的新聞「YouTube sucks on French ISP Free, and French regulators want to know why」,ARCEP (法國的電信監管組織) 喊說要查網路中立性問題,結果馬上就來個下馬威 xDDD\r\n\r\n話說回來,中華電信色情守門員的名單改一改,應該也可以推出類似的服務?XDDD", + "title": "法國 ISP「Free」主動更新上機盒韌體,主動擋掉廣告..." + }, + { + "id": "3113", + "body": "CloudFlare 是一種 CDN 服務,相較於其他 CDN 會被歸類到 AkamaiDynamic Site AcceleratorLimelight NetworksDynamic Site Platform,或是 EdgeCastApplication Delivery Network。\r\n\r\n這類型的 CDN 加速服務,如果用在完全沒有考慮最佳化的網站上,效果應該會很明顯。但如果拿到 WordPress 或是其他 open source 軟體上,反而會因為軟體已經做了不少處理,上了 CloudFlare 反而因為多了一層而變慢。\r\n\r\n不過會變慢多少呢?有人跳下去測試寫報告了:「Cloudflare Showdown」,如果懶得看中間的數據,可以看最後的結論「Conclusion」。\r\n\r\n如果用在已經最佳化過的網站上,用 CloudFlare 會慢不少,如果是 WordPress 及其他 open source 軟體,最好的情況是快一點點,但最差的情況會慢個幾倍... 作者下的結論是「不要用」。\r\n\r\n跟預期差不多,動態資料的加速基本上是個商業包裝而已,真正需要加速還是得自己把可以 cache 的部份切割出來。", + "title": "CloudFlare 的速度..." + }, + { + "id": "3114", + "body": "這次 TURKTRUST 誤發 *.google.com 憑證被 Google 當初佈下的網子抓到:「Enhancing digital certificate security」。\r\n\r\n首先是每次 CA 出問題後都會對目前的 PKI 提出質疑的文章 (像是「TURKTRUST Incident Raises Renewed Questions About CA System」),在沒有有效的方法可以取代目前的 PKI 前,都是吵一吵之後就沒有結論,所以先不管這個題目。\r\n\r\n想要提出來的是 Google 這次抓到的機制:「Public Key Pinning Extension for HTTP」,目前狀態仍是 draft。不過 Google 在 Google Chrome 13 就已經實作一部分了,並且把一堆 domain 寫死進去:「View of /trunk/src/net/base/transport_security_state_static.json」,可以看到 Google 的 domain 只允許這些 CA 簽:\r\n
      \"name\": \"google\",\r\n      \"static_spki_hashes\": [\r\n        \"VeriSignClass3\",\r\n        \"VeriSignClass3_G3\",\r\n        \"Google1024\",\r\n        \"Google2048\",\r\n        \"EquifaxSecureCA\",\r\n        \"GeoTrustGlobal\"\r\n      ],
\r\n任何想要在太歲爺上動土的都會被抓包 XD\r\n\r\n另外 Google Chrome 還是沒有 Certificate 相關的 API,目前只有 API Proposal 掛著:「webRequest SSL Hooks」,相較於 Firefox 有不少 extension 可以用,這方面 Google Chrome 就差了不少...", + "title": "這次 TURKTRUST 誤發 *.google.com SSL 憑證..." + }, + { + "id": "3115", + "body": "在 cryptography mailing list 上有人問了這個問題,結果 Entrust 的 CTO,Jon Callas 跑出來回答:「How much does it cost to start a root CA ?」。\r\n\r\n答案是,第一次的費用大約 25 萬美金,其中人事費用佔很大一塊。另外每年還有固定的維護費用 (設備與稽核):所有的行為都必須被稽核,而且所有的的控管都必須是雙重認證,以確保一個人無法破壞 CA 的安全性。\r\n\r\n還蠻有趣的回覆...", + "title": "建一個 Root CA 的開銷..." + }, + { + "id": "3117", + "body": "「MySQL Replication – Multi-Threaded Slaves (Parallel Event Execution)」這篇在講 MySQL 5.6 的 multi-threaded replication。\r\n\r\n在文章裡提到,在 5.6.3 之前的版本,MySQL replication 都是 single-threaded,所以當 master 可以充分發揮多 CPU 能力時,slave 仍然要一個更新跑完才會跑下一個更新。\r\n\r\n舉例來說,假設 master server 上有兩個 thread 在跑:\r\n\r\n假設 thread 1 先執行完,這時候 slave 就會在跑完的時候收到 SQL 1,然後把資料同步進去。等到 100 秒過去後,再跑 SQL 2,再花 100 秒。這導致了最少 100 秒的 replication lag (master 與 slave 不同步的時間)。\r\n\r\n在 master server 執行時會是這樣:\r\n\r\n\"\"\r\n\r\n兩個 SQL query 可以同時跑。\r\n\r\n到了 slave 時,在 MySQL 5.6.3 之前的 replication 會變成這樣:\r\n\r\n\"\"\r\n\r\n可以看到還是得先執行 SQL 1 再執行 SQL 2,所以最長會有 200 秒的 replication lag。\r\n\r\n而 5.6.3 之後支援 multi-threaded replication,可以用 slave_parallel_workers 指定平行執行 SQL query 的數量,這讓 master server 與 slave server 之間的 replication lag 降低不少:\r\n\r\n\"\"\r\n\r\n在收到同步的 SQL 指令後就可以同時跑,這讓 replication lag 降到 100 秒。\r\n\r\n不過還是要提,如果希望把資料同步問題降到最低,那麼 Galera Cluster 可以解的更徹底,不論是寫入的那台 master server,或是其他的 master server (在 Galera Cluster 架構裡都是為 master),一律都是同步執行:\r\n\r\n\"\"\r\n\r\n不會有 master server 與 slave server 不同步的問題,可以減少很多 application 層的麻煩...", + "title": "MySQL 平行執行的 Replication..." + }, + { + "id": "3119", + "body": "看到「tokuhirom's blog.」這個人的 blog 副標題是「'; DROP DATABASE database();」,特別紀錄一下 XDDD\r\n\r\n\"\"\r\n\r\n感覺輸了... XD", + "title": "副標「'; DROP DATABASE database();」" + }, + { + "id": "3120", + "body": "Netflix 在半年前就開始推廣 Open Connect Content Delivery Network,類似於 Google 的 Google Global Cache (GGC)。\r\n\r\nNetflix 的 Open Connect 計畫提供兩種方式讓 ISP 參與,第一種方式是在各地機房 peering (地點在「Open Connect Peering Locations」這份資料裡有條列出來),需要用 10Gbps 以上的線路介接,實際流量以 95% 計算後必須在 2Gbps 以上。\r\n\r\n另一種更進接的方式是讓各 ISP 在自己的網路放 Netflix 所設計的快取伺服器,Netflix 會把該 ISP 的流量導到這組伺服器上面 (4U 的伺服器,有兩個 10Gbps SR/LR,36 顆 3TB SATA,加上 2 顆 512GB SSD),這對於 ISP 與內容業者都可以節省頻寬成本。\r\n\r\n這佈局佈一陣子了 (大約半年),Netflix 前幾天宣佈有 Open Connect 計畫合作的 ISP 將可以看 Super HD 與 3D 電影:「Netflix Announces Major ISPs Deploying Their CDN Caches; New 3D Streaming」,這些電影將會用掉 7Mbps~12Mbps 的頻寬。\r\n\r\nNetflix 在北美流量比 YouTube 還大,除了之前的 Multi CDN vendor 策略以外,很自然會想要建自己的 CDN,畢竟有量之後很多事情自己做會比較節省成本...", + "title": "Netflix 的 Open Connect,以及 Super HD 與 3D 電影..." + }, + { + "id": "3121", + "body": "昨天的 Twitter Engineering Blog 上說明了 Twitter 這陣子改善搜尋演算法背後的故事:「Improving Twitter search with real-time human computation」。\r\n\r\n因為搜尋的量夠大,所以可以拿搜尋的 keyword 計算。\r\n\r\n而系統會一直分析搜尋的關鍵字,當發現有詞彙在某個時間內超過設定的水位時,就發 API 到 AmazonMechanical Turk 讓真人分析 (分類),分析完成後就可以再回到自動化的流程進行後續的步驟...\r\n\r\nMechanical Turk 就是 crowdsourcing 類型的服務,這個服務因為法令限制,到現在還是只能讓美國的公司或是個人使用,是少數還沒玩過的服務,應該來找看看有沒有其他 crowdsourcing 服務可以玩...", + "title": "Twitter 的熱門搜尋演算法 (以及背後的機制)" + }, + { + "id": "3122", + "body": "在「Play safely in sandboxed IFrames」這篇文章提到 HTML5 有對 iframe 制定 sandbox 屬性,這可以讓開發者比較容易處理安全性問題。\r\n\r\n比較讓我驚訝是開頭的 browser support 清單是主流全部支援,但又沒寫版號:\r\n\r\n\"\"\r\n\r\n不過實際到「Can I use sandbox attribute for iframes?」查,發現沒那麼美好 XD\r\n\r\n\"\"\r\n\r\n主要的瀏覽器中,IE 要到 10 才有支援,另外 Firefox 剛支援沒多久 (17 以及之後的版本,目前是 18),看起來要等 Windows 7 的 IE8 被淘汰?", + "title": "iframe 的 sandbox 功能..." + }, + { + "id": "3123", + "body": "看到「$17,000 Linux-powered rifle brings \"auto-aim\" to the real world」這個的時候還在想 rifle 有什麼其他意思...\r\n\r\n\"\"\r\n\r\n畫面是這樣 XDDD\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這樣會被歸類到自動武器嗎?\r\n\r\n然後,既然都用 Linux 了,一定要問的是,有沒有 open source & 可以自己刷韌體嗎 XDDD", + "title": "CES 上展出 Linux-based 來福槍..." + }, + { + "id": "3124", + "body": "Percona Toolkit 是一大包管理 MySQL 的工具套件,裡面有非常多的 script 可以用。雖然有其他家的工具,但目前 Percona Toolkit 的功能算是相當完整,幾乎是必裝套件。\r\n\r\n如標題所說的,雖然還是 beta 階段,但最新版的 Percona Toolkit 總算把 Percona XtraDB Cluster (PXC) 與 MySQL 5.6 納入支援:「Percona Toolkit 2.1.8 released today with beta support for MySQL 5.6」。", + "title": "Percona Toolkit 2.1.8 開始支援 Percona XtraDB Cluster (PXC) 與 MySQL 5.6..." + }, + { + "id": "3125", + "body": "Google 在很久前就發現可以利用「搜尋的關鍵字」推測流感疫情,而在 2008 年建立了 Google Flu Trends,利用關鍵字來推測可能的疫情:「Explore flu trends around the world」。\r\n\r\n而今年 Google 發出警告,依照關鍵字觀察,美國的流感疫情比起歷年來都高出不少:「Google - Yes, Google - Warns Of \"Intense\" U.S. Flu Activity」。\r\n\r\n\"\"\r\n\r\n這除了是 Google 的火力展示之外,也是在說明資料被適當應用時的威力。", + "title": "Google 警告美國流感疫情提升..." + }, + { + "id": "3126", + "body": "Nokia 被抓到 Xpress Browser 會監控使用者連線,不論是 HTTP 或是 HTTPS:「Nokia Running A Man In The Middle Attack To Decrypt All Your Encrypted Traffic, But Promises Not To Peek」。\r\n\r\n兩篇原始發現人的文章,第一篇「Nokia phone forcing traffic through proxy」是講 HTTP 的部份,第二篇「Nokia’s MITM on HTTPS traffic from their phone」是 HTTPS 的部份。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n實際運作是類似於 HTTPS proxy 的作法。在「Nokia: Yes, we decrypt your HTTPS data, but don’t worry about it」有詢問 Nokia 後的官方回覆:\r\n
\"Importantly, the proxy servers do not store the content of web pages visited by our users or any information they enter into them,\" the company said. \"When temporary decryption of HTTPS connections is required on our proxy servers, to transform and deliver users’ content, it is done in a secure manner.\r\n\r\n\"Nokia has implemented appropriate organizational and technical measures to prevent access to private information. Claims that we would access complete unencrypted information are inaccurate.\"
\r\nGIGAOM 的翻譯簡單多了:\r\n
we decrypt your data, but trust us, we don’t peek. (對,我們的確這樣作,不過相信我們,我們沒有監聽。)
\r\n你真的相信這鬼話嗎 XDDDDDDDDD\r\n\r\n以這張圖結尾:\r\n\r\n\"\"", + "title": "Nokia 監控使用者連線..." + }, + { + "id": "3127", + "body": "Percona 的 Stewart Smith 解釋為什麼花這麼多時間才修正這個安全漏洞:「CVE-2012-4414 strikes back in MySQL 5.5.29 (and what we’re doing in Percona Server 5.5.29)」\r\n\r\nMariaDB 的人在得知問題後先建立了 MDEV-382 這個 issue,然後建立了 rpl_mdev382.test 這份測試資料,讓其他參與者可以測試手上的 MySQL 是否有問題。\r\n\r\nOracle 在修正問題時並沒有使用 MariaDB 這份測試資料測過 (或是測過但因為種種因素...) 就推出 MySQL 5.5.29,但 MySQL 5.5.29 用 rpl_mdev382.test 測試會失敗,而實際確認發現 Oracle 並沒有把問題解乾淨。所以本來 Percona 預定要使用官方 MySQL 5.5.29 版本為基礎推出 Percona Server 5.5.29 (可以降低 Percona 維護成本),變成將會改用 MariaDB 的 patch。\r\n\r\n讓 Percona 的人特地寫一篇出來,看起來對 Oracle 不太爽... XD", + "title": "Percona 說明關於為什麼花這麼多時間修正 MySQL 5.5.28 安全問題..." + }, + { + "id": "3128", + "body": "起於去年十一月時,有人在白宮We the People 網站上發起建立死星的請求 XDDD\r\n\r\n\"\"\r\n\r\n該份請願書在「Secure resources and funding, and begin construction of a Death Star by 2016.」。依照規定,請願超過兩萬五千人後,白宮必須給予正式的回覆。\r\n\r\n於是... 白宮就正式回覆了 XDDD 回覆是由 Paul Shawcross (Chief of the Science and Space Branch at the White House Office of Management and Budget) 掛名。BBC 中文網給了很短的說明 (不過把重點都提到了):「美國未批准修建星球大戰式太空站」。\r\n\r\n在回覆內容中,標題的「This Isn't the Petition Response You're Looking For」是有梗的... 可以參考 IMDBStar Wars 的名言錄:「These aren't the droids you're looking for.」。\r\n\r\n條列式列出三個政府反對的原因,第一條還很正經解釋預算問題。第二條就很正經的歪掉:\r\n
The Administration does not support blowing up planets.
\r\n而第三條直接說「啊這東西沒用啦~」:\r\n
Why would we spend countless taxpayer dollars on a Death Star with a fundamental flaw that can be exploited by a one-man starship?
\r\n解釋完後,後面就在推廣 ISS 與最近的成就... XD", + "title": "美國政府正式拒絕死星建造計畫..." + }, + { + "id": "3130", + "body": "這樣有比較有效率嗎 XDDD (而且怎麼吵起架來了 XDDD)\r\n\r\n\"\"\r\n\r\n出自「How to Communicate your Displeasure with Neighbours using Wi-Fi」。", + "title": "惡搞無線網路名稱 (SSID)" + }, + { + "id": "3133", + "body": "Munin 是套資源監視軟體。跟其他資源監視軟體不一樣的地方?畫面漂亮啊 XDDD 拿台堆各種雜物的 database 來看:\r\n\r\n\"Munin\r\n\r\n\r\n等到 Munin 監視超過二十台時就會很明顯感覺到很吃資源,再多的時候就會開始罵三字經,罵完後拆一台獨立的機器跑,以免跑個 vim 都要卡三秒... XD\r\n\r\n這時候就是該調整了:\r\n\r\n另外有些討厭的地方,strategy 設定不能放到 includedir 裡,一定得放 munin.conf 本體,這對於自建 ports 的人有點麻煩... (得用 pkg-install 與 @unexec 去堆設定,可以參考 ports-mgmt/portconf/etc/make.conf 的作法)", + "title": "Munin 的設定..." + }, + { + "id": "3134", + "body": "在公司搞定一個速度最佳化的問題,想到之前在 Stack Overflow 上有看到 CPU branch prediction 的問題 (跟我解的問題應該沒關係,只是剛好想到),把文章找出來...\r\n\r\n出自 Stack Overflow 上有人詢問某段 C++ 程式為什麼加上 sort 後快多了:「Why is processing a sorted array faster than an unsorted array?」。\r\n\r\n發文者的範例程式已經簡化到很容易理解:先產生一個 32Kytes 的 array,然後裡面塞亂數。\r\n\r\n接下來把每個 byte 當作 unsigned char,要找出這個 array 裡面所有值大於等於 128 的元素,把這些元素的值加起來。\r\n\r\n原發文者發現,如果先把這個 array 排過再計算,十萬次只要 1.93 秒,但如果不排就直接計算需要 11.54 秒,時間差不多是原來的六倍。\r\n\r\n回答的人答的相當詳細,還給了一個 branchless 的 hack 來解這個問題 (於是就不需要先 sort),很值得一看。", + "title": "CPU Branch Prediction 的成本..." + }, + { + "id": "3135", + "body": "「分散式系統」(Distributed System) 是個老詞彙,但跟最近當紅詞彙「雲」、「NoSQL」常常相關。也因此「雲」與「NoSQL」常常遇到的都是分散式系統遇到 (並且討論過) 的問題...\r\n\r\n而「Notes on Distributed Systems for Young Bloods」這篇寫的好血淚 XDDD 除了講理論面的東西以外,也把實務面會遇到的問題拿出來講...\r\n\r\n首先要先知道「Fallacies of Distributed Computing」,在分散式系統裡,能假設的事情實在太少,要處理的事情太多。而「CAP theorem」也是個必讀的主題,從 Amazon 丟出「Dynamo: Amazon's Highly Available Key-value Store」這篇經典的 paper 後讓更多人知道這個理論。\r\n\r\n熟悉上面兩個主題後,接下來就是血淚史... XD\r\n
garbage collection pauses make masters “disappear”
\r\n啊,GC 讓 master 不見... (NameNode... XDDD)\r\n
Writing robust distributed systems costs more than writing robust single-machine systems.
\r\n
Robust, open source distributed systems are much less common than robust, single-machine systems.
\r\n這兩條... XD\r\n
Oh, and Paxos really is very hard to implement
\r\nPaxos... XD\r\n
If you can fit your problem in memory, it’s probably trivial.
\r\n(噴飯)\r\n
“It’s slow” is the hardest problem you’ll ever debug.
\r\n連問題都找不到嗎... XD\r\n\r\n撇開這些碎碎念的部份,就算對 distributed system 沒那麼熟,這篇文章也提到了很多「解決的方向」以及「關鍵字」讓你找資料,對於實際操作時會有很大的幫助。", + "title": "分散式系統的建言..." + }, + { + "id": "3136", + "body": "看到布長輩提到:\r\n\r\n\"\"\r\n\r\n剛開始用 104 的系統找履歷時,都用一些很爛的關鍵字搜尋:\r\n\r\n最近找起來比較有心得了,用這些關鍵字:\r\n\r\n還有一些相關領域的關鍵字拿來找也還蠻不錯的...\r\n\r\n\"\"\r\n\r\n另外最後宣傳一下,敝公司找人,包括 client 開發與 server 開發都有缺。(我主要是 server 的部份,client 的部份我會轉給我同事)\r\n\r\n有興趣可以用 gslin at kkbox.com 聯絡... (不過話說回來,我下星期去日本,cc 一份給 hr at kkbox.com 會比較好)", + "title": "最近找人... (然後,KKBOX 正在徵才)" + }, + { + "id": "3137", + "body": "白宮宣佈提昇 We the People 的強制答覆連署上限,將原本 25k 人提昇至 100k 人:「Why We're Raising the Signature Threshold for We the People」。\r\n\r\n因為最近參與的人變多太多:\r\n\r\n\"\"\r\n\r\n另外白宮給了一份 Infograph,更詳細的說明參與的狀況:\r\n\r\n\"Overview\"\r\n\r\n英國有個 data.gov.uk,美國有個 We the People,再加上昨天看到的 alpha.data.gov (A collection of open data from the government, private sector, and non-profits that are fueling a new economy.),感覺台灣跟世界上的已開發國家愈差愈遠了...\r\n\r\n\"data.gov.uk\"\r\n\r\n\"alpha.data.gov\"", + "title": "白宮 We the People 提高答覆連署人數" + }, + { + "id": "3138", + "body": "在 Twitter 上看到 John Merriman 寫的「I talked to Adobe yesterday」:\r\n\r\n

I talked to Adobe yesterday: twitter.com/jmerriman/stat…

— John Merriman (@jmerriman) January 16, 2013
\r\n\r\n\r\n這回答看起來就像機器人 XDDD\r\n\r\n這時候就要拿出經典的「On the Internet, nobody knows you're a dog」出來:\r\n\r\n\"On", + "title": "Adobe 的客服機器人..." + }, + { + "id": "3140", + "body": "在 Slashdot 上看到 PlusNet 決定測試用 CGNAT (Carrier-grade NAT) 解決 IPv4 不夠的問題:「UK ISP PlusNet Testing Carrier-Grade NAT Instead of IPv6」。\r\n\r\n用超大型 NAT 並不是特別的新聞 (某些 mobile network 上就是這樣做),但 ISP 如果用在一般網路上則很有可能會跟客戶的 NAT device (可能是公司,也可能是家庭) 發生 Private Network 相同而導致問題。\r\n\r\n2012 年 4 月的 RFC 6598 (IANA-Reserved IPv4 Prefix for Shared Address Space) 將 100.64.0.0/10 (Shared Address Space) 這個網段保留,拿來給營運 CGNAT 的 ISP 使用:\r\n
NetRange:       100.64.0.0 - 100.127.255.255\r\nCIDR:           100.64.0.0/10\r\nOriginAS:\r\nNetName:        SHARED-ADDRESS-SPACE-RFCTBD-IANA-RESERVED\r\nNetHandle:      NET-100-64-0-0-1\r\nParent:         NET-100-0-0-0-0\r\nNetType:        IANA Special Use
\r\n在 RFC 裡規定 100.64.0.0/10 只能拿來內部使用不得交換;如果要交換必須要有能力將不同介面的 100.64.0.0/10 當作不同網段 NAT (也就是 CGNAT 會做的事情):\r\n
In particular, Shared Address Space can only be used in Service Provider networks or on routing equipment that is able to do address translation across router interfaces when the addresses are identical on two different interfaces.
\r\n另外文件裡還定義了使用 100.64.0.0/10 時對 DNS 的過濾。\r\n\r\n如果 CGNAT 上不能打洞,那麼很多應用就很苦了 (得靠 UDP hole punching 打洞,這還得在沒有 randomized NAT port 的情況下才打的通),不過非 P2P 的應用應該不會有問題...\r\n\r\n會不會做一做之後就維持這個方式?IPv6 遙遙無期... XD", + "title": "ISP 架設 NAT 解決 IPv4 不夠的問題..." + }, + { + "id": "3141", + "body": "Mozilla 最近在升級 MySQL 採「先建後拆」的步驟,發現用 pt-table-checksum 檢查時不一致:「MySQL 5.1 vs. MySQL 5.5: Floats, Doubles, and Scientific Notation」。\r\n\r\n後來發現,在 MySQL 5.1 (5.1.65-rel14.0-log Percona Server (GPL), 14.0, Revision 475) 的查詢結果是:(Mozilla 的範例)\r\n
mysql> select float_field from db.tbl where id=218964;\r\n+-------------+\r\n| float_field |\r\n+-------------+\r\n| 9.58084e-05 |\r\n+-------------+\r\n1 row in set (0.04 sec)
\r\n而在 MySQL 5.5 (5.5.28a-MariaDB-log MariaDB Server) 的查詢結果是:\r\n
MariaDB [(none)]> select float_field from db.tbl where id=218964;\r\n+--------------+\r\n| float_field |\r\n+--------------+\r\n| 0.0000958084 |\r\n+--------------+\r\n1 row in set (0.24 sec)
\r\n最後是讓 pt-table-checksum 把 float/double 欄位忽略掉。在 comment 有人提出來是在 MySQL 5.5.3 的時候改變的,不過作者蠻意外沒什麼人提到...", + "title": "資料庫裡的浮點數:MySQL 5.1 到 MySQL 5.5 的差異..." + }, + { + "id": "3142", + "body": "MySQL replication 通常是資料庫擴充的第一步,因為架設很簡單。但一般 MySQL replication 的讀寫必須分開 (寫入只能在 master)。\r\n\r\n在「Webinar on Read/Write Splitting with PHP」看到 Percona 下星期會辦 Webinar,說明在 MySQL replication 架構下要如何處理讀寫分離。\r\n\r\n看起來包括對 replication lag 時的處理 (slave 因為各種原因,導致跟不上 master),有興趣的人可以去報名聽聽看... 雖然是講 PHP,但這個問題在其他的語言也會遇到,聽觀念也應該有幫助。", + "title": "Percona 將辦 Webinar 說明資料庫讀寫分離時的處理..." + }, + { + "id": "3143", + "body": "在 pfSense 的 blog 上看到的:「OpenVPN client now available on Apple iOS!」,應用程式是這個:「OpenVPN Connect」。\r\n\r\n剛裝好跑起來是這樣:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n看起來要先生出 .ovpn 檔案才能用,晚點再來測看看...", + "title": "iOS 上可以跑 OpenVPN 了..." + }, + { + "id": "3144", + "body": "先不管 Instagram 最近的負成長以及反駁,剛剛在 Instagram Engineering 上看到對 PostgreSQL 的稱讚:「Handling Growth with Postgres: 5 Tips From Instagram」\r\n\r\nFacebookMySQL 的領域裡的實力以及貢獻度可是數一數二,但 Instagram 在被 Facebook 買下後仍然繼續使用 PostgreSQL,總是有些原因存在... 雖然真正的原因不一定是技術,但這篇試著用技術解釋的內容還是可以看一看,了解 PostgreSQL 有哪些特點...\r\n\r\n第一個是講 partial indexes,這與 MySQL community 常講的 partial index 是不同的東西。\r\n\r\nMySQL 的 partial index 是指只 index 某個欄位的一部分,像是 VARCHAR(255) 裡面只 index 前面的 10 chars;而 PostgreSQL 的 partial indexes 則是指符合某個條件的 row 才 index。\r\n\r\n第二個是 functional indexes,可以針對欄位計算後再 index。MySQL 的 partial index 在 PostgreSQL 裡可以用 functional indexes + substr() 達到相同的效果,而且還有其他 function 可以用,花樣更多。\r\n\r\n兩個都是 MySQL 做不到 (或是做不好),但 PostgreSQL 做的不錯的。一般在 MySQL 要達到 PostgreSQL 的這兩個功能需要另外開一個欄位,在裡面儲存去正規化後的值,再對這個欄位 index。\r\n\r\n第三個是講 defrag 的事情,這部份 MySQL 也可以用第三方的工具 Percona Toolkit 搞定。第四個講 PostgreSQL 的 Write-Ahead Log,有點像是 MySQL 的 binlog。最後一個講 Python 上的 psycopg2。\r\n\r\n看來看去就是 index 那塊最明顯。可以直接減少去正規化的欄位...", + "title": "Instagram 說明用 PostgreSQL 的五個優點..." + }, + { + "id": "3146", + "body": "在 Wikimedia 的官方網誌上看到 Wikimedia 的主機房將從 Tampa, Florida 搬遷到 Ashburn, Virginia (當然,這包括 Wikipedia):「Wikimedia sites to move to primary data center in Ashburn, Virginia」。\r\n\r\n當初機房在 Florida 的原因是... Jimmy Wales 住附近 XDDD\r\n
A major reason for choosing Tampa, Florida as the location of the primary data center in 2004 was its proximity to founder Jimmy Wales' home, at a time when he was much more involved in the technical operations of the site.
\r\n搬遷到 Virginia 除了有比較穩定的網路以外,還包括了天氣因素 (颶風比較少)。\r\n\r\n2011 年 11 月時,bits.wikimedia.org (主要是放 CSS 與 JavaScript) 已經改用新機房服務,2012 年 2 月時成功將 read-only page 拆到 cache server 上,同年 4 月時 upload.wikimedia.org (多媒體資料,包括使用者上傳的部份) 也導到新機房。\r\n\r\n這幾個改變讓無法 cache 而丟到後端 ApacheMySQL 的量只剩下 10%,這次打算把這 10% 的量從 Florida 搬到 Virginia。\r\n\r\n文末也說明了目前機器數量與 PV:\r\n
The Wikimedia Foundation currently operates a total of about 885 servers, and serves about 20 billion page views a month, on a non-profit budget that relies almost entirely on donations from readers.
\r\n全世界第六大的網站,每天約六億次 PV,現在只用了 885 台 server :p", + "title": "維基百科機房搬遷 (從佛羅里達州搬到維吉尼亞州)" + }, + { + "id": "3147", + "body": "在 Google Research 上看到 Google 針對字串處理最佳化問題所發的論文:「Automated Locality Optimization Based on the Reuse Distance of String Operations (PDF)」。\r\n\r\n大原則是想辦法善用 L2/L3 cache,這沒什麼特別的,比較有趣的地方是解決方案,除了自動化的方式外,另外還有工具「提醒」撰寫程式的人,另外還有一些數據以及 code name 可以看...", + "title": "Google 對字串處理的最佳化" + }, + { + "id": "3148", + "body": "NASA 用雷射光將灰階「蒙娜麗莎」傳送到月球軌道上的 LOLA (Lunar Orbiter Laser Altimeter,看起來是台描繪地表用的儀器?):「NASA Beams Mona Lisa to Lunar Reconnaissance Orbiter at the Moon」。\r\n\r\n\"Lunar\r\n\r\n傳輸速度是 300bits/sec (這數字讓人真感動 XD),傳送 152x200 的 4096 灰階圖片。這次測試其中一個目的是了解地球大氣層對光訊號的影響,可以看到左邊的 raw data 與右邊靠 2/3 RS code 修正的結果:\r\n\r\n\"To\r\n\r\n不過好像沒提到用多大台的雷射打到月球上... (雷射砲?)", + "title": "NASA 用雷射光傳送「蒙娜麗莎」圖片到月球上..." + }, + { + "id": "3150", + "body": "在 Raspberry Pi 的官方網站上提到可以在 Raspberry Pi 上跑 FreeBSD 的消息:「FreeBSD is here!」。\r\n\r\n不過這是 community (unofficial) 版本,而且是 10-CURRENT,維護者自己也說這還不是 production-ready,主要是給大家嘗鮮用...\r\n\r\n目前如果要拿來做一些正事,還是以 Linux 為主吧,畢竟是主力平台。", + "title": "在 Raspberry Pi 上跑 FreeBSD..." + }, + { + "id": "3151", + "body": "看到 AWS 推出新的 EC2 instance:「EC2 for In-Memory Computing - The High Memory Cluster Eight Extra Large Instance」,看完這個 instance 的規格笑了出來 XDDD\r\n\r\n120GB SSD 兩顆 (所以是 240GB),加上 244GB RAM,結果記憶體比 SSD 空間大,應用程式一定得分層利用... XDDD\r\n\r\nColin Percival 開了台 FreeBSD 9.1 起來測試,可以順便看到一些硬體資訊。\r\n\r\n目前還沒有 Reserved Instances 可以買,所以依照目前的價錢 USD$3.50/hour,一年大約是 90 萬新台幣,而這金額差不多可以直接買一台了... 所以這個 instance 的定位是在非長期的大量運算?不過依照 AWS 的慣例,過陣子應該還是會出 Reserved Instances 讓需要的人買...\r\n\r\n不過這也是目前記憶體最多的機器,如果下次看到有文章寫「因為資料超過 244GB,所以資料庫效能炸掉」的訊息,就知道發生什麼事情了 XDDD", + "title": "AWS 歷史上第一台 RAM 比儲存空間多的 instance..." + }, + { + "id": "3153", + "body": "testling-ci 是個測試服務,只要在 package.json 裡把要測的環境要求寫好,然後 GitHub 上的 web hook 設好,剩下就是驗收了...\r\n\r\n網站的維護者在「How to write Testling-CI tests」這篇給了一個很簡單的範例,拿一個 IE9+ 才支援的語法實際測試所有的瀏覽器,然後有個 badge 讓你掛:\r\n\r\n\"\"\r\n\r\n對於 open source 軟體應該是很方便,是 Travis CI 的另外一個選擇 :p", + "title": "用 testling-ci 測試各種瀏覽器的結果..." + }, + { + "id": "3154", + "body": "在 OSnews 上看到 NaCl 要支援 ARM 了,在這之前的版本都只能跑在 x86 family 上面:「Native client now supports ARM」。\r\n\r\n另外在 The Chromium Blog 上也提到這件事情:「Native Client support on ARM」。\r\n\r\n下一個預定要完成的計畫是 Portable Native Client (PNaCl),希望用 LLVM 一統江湖... XD", + "title": "NaCl (Native Client) 總算要支援 ARM 了..." + }, + { + "id": "3155", + "body": "這一樣是在 OSnews 上看到的,RoboVM 釋出第一版 0.0.1:「RoboVM 0.0.1 released」,官方的新聞稿在:「RoboVM 0.0.1 released — iOS && Java == true」。\r\n\r\nRoboVM 能夠將 Java bytecode 轉成 x86 或 ARM 的 native code,目前以 Android runtime class 為主。這葫蘆裡想要賣什麼藥應該很清楚...\r\n\r\n我覺得這是個「有趣」的專案... 但不覺得會發展起來,畢竟兩個平台不是只有 code 的差異而已 :o", + "title": "RoboVM:用 Java 開發 iOS 程式..." + }, + { + "id": "3157", + "body": "現在的 browser 支援一堆 HTTP Header 規格,用來防堵各種安全性問題。在「SecureHeaders」看到一包 Ruby Gems,可以針對這堆規格一次搞定,包括了:\r\n\r\n就算不是用 Ruby 的人也可以拿文件說明的部份當入口,評估看看系統有哪些地方可以加強。", + "title": "送出 ooxx HTTP Header 提升安全性..." + }, + { + "id": "3158", + "body": "Slashdot 上看到 Cisco 將 Home Networking Business Unit 部門賣給 Belkin,其中包括 Linksys 這個品牌:「Cisco Exits the Consumer Market, Sells Linksys To Belkin」。\r\n\r\nBelkin 的新聞稿在「BELKIN ANNOUNCES INTENT TO ACQUIRE CISCO’S HOME NETWORKING BUSINESS UNIT」,Cisco 的新聞稿在「Belkin Announces Intent to Acquire Linksys」。\r\n\r\nLinksys 最有名的產品應該是大家都愛買的 WRT54G 系列,被大家拿來刷韌體刷的很有名啊... XD", + "title": "Cisco 將 Linksys 賣給 Belkin..." + }, + { + "id": "3159", + "body": "最後一天還在日本,先來整理一下這九天幹了哪些事情... XD\r\n\r\n已經排進行程的是 1/19 與 1/20 去水樹奈奈的 NANA MIZUKI LIVE GRACE 2013 -OPUS Ⅱ- (報導可以參考『20130120 – 水樹奈々「LIVE GRACE 2013 -OPUS 2-」完美落幕!新一年夏巡「七夕」於故鄉愛媛武道館展開!』這篇),1/23 去 Kalafina 5th Anniversary LIVE SELECTION 2009-2012 (報導可以參考『20130124– 一夜限定演唱會及Live Tour舉行決定!Kalafina第四張專輯「Consolation」將於三月二十日發售』這篇)。\r\n\r\n到日本後又看到コミネリサ 1/24 要在真昼の月 夜の太陽表演 (參考「真昼の月夜の太陽」這篇),就再插了一檔進去...\r\n\r\n中間還遇到同事出差,另外遇到色兔子跑來東京玩,然後吃一些奇怪的東西... XD\r\n\r\n說到吃的,來日本不知道有哪些可以吃的,倒是宵夜一直去吃一蘭,次數多到讓同事抱怨了... XD\r\n\r\n差不多就先寫到這邊,回台灣看看有哪些細節覺得可以寫的再寫吧 :o", + "title": "日本行:1/19~1/27 (人還在日本... XD)" + }, + { + "id": "3160", + "body": "在「Disasters」這邊列了不少對稱式加密系統 (secret-key cryptography) 爆炸的歷史,其中提到了很多 Encrypt 與 MAC 結合時的問題 (Authenticated encryption)。另外 Colin Percival 在 2009 年的時候有寫了一篇為什麼要用 Encrypt-then-MAC 的文章:「Encrypt-then-MAC」,當時 Colin Percival 寫的時候大家還是不能理解,但現在回頭看上面的爆炸歷史應該就清楚很多了 XDDD\r\n\r\nSSH 協定是使用 Encrypt-and-MAC (傳輸「密文」與「明文的 MAC 值」)。在 2008 年時 SSH 使用 CBC 模式時會有安全問題:對 128bits CBC mode system (像是 aes128-cbc),任意位置的 32bits 有 2-18 的機會可以解出原文。(CVE-2008-5161,論文是「Plaintext Recovery Attacks Against SSH」)\r\n\r\nTLS 1.0 (SSLv3) 使用 MAC-then-Encrypt (傳輸「明文與明文的 MAC 值」加密後的結果)。1999 年就知道這個方法不可靠,不過到了 2011 年時才被拿出來示範,也就是 BEAST attack。(CVE-2011-3389,在 ekoparty Security Conference 上的「表演」:「BEAST: Surprising crypto attack against HTTPS」,連結1連結2)\r\n\r\nOpenSSLGnuTLS 所實作的 DTLS 在 2011 年也被炸到,其中 OpenSSL 是 100% plaintext recovery,GnuTLS 是 4%。(CVE-2012-0390,論文是「Plaintext-Recovery Attacks Against Datagram TLS」)\r\n\r\n而 Encrypt-then-MAC (傳輸「密文」與「密文的 MAC」) 是三者裡面最不容易出包的作法,而且被證明 Provable security:Encrypt 與 MAC 所用的 crypto system 的安全強度不會因為 Encrypt-then-MAC 而減少。而這也是 IPSec 的作法。\r\n\r\n附帶一提,其中 Provable security 這個詞,並非表示「可被證明是安全的」,在「In defense of Provable Security」這篇文章裡有比較完整的說明。通常是指安全強度不會因為這個系統而降低:以 Encrypt-then-MAC 的例子來說,如果 Encrypt 的部份用 DES,或是 MAC 用 CRC32,那麼 Encrypt-then-MAC 並不會提供更強的安全性...\r\n\r\n總而言之,MAC-then-Encrypt 與 Encrypt-and-MAC 的方式要小心才能避免各種攻擊 (像是不能用 CBC mode),而 Encrypt-then-MAC 可以讓設計協定的人放鬆到「只要 Encrypt 與 MAC 都夠強」系統就沒問題。在 Authenticated encryption 裡提到的 ISO/IEC 19772:2009 支援六個模式,有些有專利問題,有些演算法看起來就很複雜 (於是就容易出包),其中 Encrypt-then-MAC 看起來是個還不錯的方案...", + "title": "對稱式加密系統的爆炸歷史 (Authenticated encryption 的問題)" + }, + { + "id": "3161", + "body": "看到 Ash Wu 貼的「5 easy tips to accelerate SSL」:\r\n\r\n

unhandledexpression.com/2013/01/25/5-e…

— Ash Wu (@hSATAC) January 28, 2013
\r\n\r\n\r\n先列出原作者在文章裡給的結論:\r\n
ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:RC4+RSA:+HIGH:+MEDIUM
\r\n不過,現在考慮 SSL 效能以行動平台為主 (因為桌機用軟體計算也超快),而行動平台中 iOS 可以對 AES 與 SHA1 硬體加速 (iOS 4.3+),Android 一般的情況下看起來沒得用,所以就自己取捨啦...", + "title": "加快 SSL 加解密速度..." + }, + { + "id": "3162", + "body": "在「Feature preview: Compact backups in Percona XtraBackup」看到的,2.1 版會導入 compact backup 節省備份出來的空間 (目前是 2.0):\r\n
As you may know InnoDB PK (Primary Key) contains all data, and all secondary indexes are only subset of columns of Primary Key. So in theory we can store only PK, and re-build secondary indexes as we need. Well, now it is possible not only in theory.
\r\nsecondary index 可以事後再建,所以有兩種表格會省下很多資源:\r\n\r\n等出了再來研究看看對 Percona XtraDB Cluster (PXC) 重新同步可以加快多少...", + "title": "用 Percona XtraBackup 備份時用 compact 模式節省空間..." + }, + { + "id": "3163", + "body": "標題是「102 simple steps for installing and configuring a new Windows 8 machine」的文章,本來以為是笑話,結果右邊寫著:\r\n
Software architect and Microsoft MVP, you'll usually find me writing about security concepts and process improvement in software delivery.
\r\n所以...?(認真的?)\r\n\r\n看起來不只裝了 Windows 8 啊,還有一堆軟體...", + "title": "「102 步」簡單安裝完 Windows 8... XDDD" + }, + { + "id": "3164", + "body": "在「Nobel Prize Gets Official API」看到諾貝爾獎的網站提供 API,讓人存取歷年諾貝爾獎得主的資訊了 XDDD\r\n\r\n官方的新聞稿在「Open Data about the Nobel Prize now Available」這邊,API 資訊則在「Developer Zone」這邊。\r\n\r\n舉例來說,http://api.nobelprize.org/v1/prize.json?year=1901 可以抓出 1901 年諾貝爾獎得主的資料 (JSON 格式)。\r\n\r\n而除了 JSON API 外,另外還在 data.nobelprize.org 提供 Linked Data 格式的資源。\r\n\r\n資料不多,但蠻有趣的...", + "title": "諾貝爾獎的網站有 API 了..." + }, + { + "id": "3165", + "body": "剛剛看到 Percona XtraDB Cluster 5.5.29-23.7.1 的公告了:「Announcing Percona XtraDB Cluster 5.5.29-23.7.1」。\r\n\r\n除了修正 bug 外,有很多是讓設定變得簡單的調整 (變得比較不容易中地雷,或是錯誤訊息比較清楚,而非靠 Google 找到答案),像是:\r\n
Variable wsrep_node_name was initialized before the glob_hostname, which lead to empty value for wsrep_node_name if it wasn’t set explicitly. Bug fixed #1081389 (Alex Yurchenko).
\r\n
Percona XtraDB Cluster would crash when binlog_format was set to STATEMENT. This was fixed by introducing the warning message. Bug fixed #1088400 (Seppo Jaakola).
\r\n
Percona XtraDB Cluster would crash if the node’s own address would be specified in the wsrep_cluster_address variable. Bug fixed #1099413 (Alexey Yurchenko).
\r\n該來安排測試了...", + "title": "Percona XtraDB Cluster (PXC) 總算出 5.5.29 版本了..." + }, + { + "id": "3166", + "body": "在「Oracle Will Stop Providing Security Updates for Java 6 Next Month」這邊看到的,Java SE 6 預定在 2013/02/19 對外發佈最後一次安全性更新,之後只有付費購買服務的單位才能透過 My Oracle Support 取得更新。\r\n\r\n另外更新程式提供了 Java SE 6 升級到 Java SE 7 的功能,不過當然不保證你跑的程式在 Java SE 7 上會動,還是要花時間去測試才知道會不會爆炸 :p\r\n\r\n照「Java version history」上的紀錄,Java SE 6 是 2006/12/11 發行的,所以也六年多了... 而 Java SE 7 是在 2011/07/28 發行的,是目前最新的版本。", + "title": "Java SE 6 下個月將停止提供安全更新..." + }, + { + "id": "3167", + "body": "在「EC2's M3 Instances Go Global; Reduced EC2 Charges and Lower Bandwidth Prices」看到 AWS 又調降價錢了,這次調降是圍繞在 EC2 上面。\r\n\r\n首先是第二代高記憶體用量的機器 (代號 M3) 從本來只有 us-east-1 可以用,現在在全世界都可以用了。然後高 CPU 用量與高記憶體用量的機器的費用也降價了,不過主要是將在非亞洲區。\r\n\r\n另外一個蠻特別的降價是 AWS 自家機房內的傳輸頻寬,這包括跨區域以及 CloudFront!\r\n\r\n舉例來說,本來 us-east-1 傳資料到 us-west-1 是依照 us-east-1 Internet outbound traffic 算錢 (USD$0.12/GB for us-east-1),現在 AWS 則是將這種流量視為另外一種內部使用,而給予不同的收費標準 (USD$0.02/GB for us-east-1)。同理,CloudFront 到 EC2 或 S3 上抓資料也是類似的算法。\r\n\r\n這對於 AWS-based 提供服務的公司來說應該是很不錯的消息?因為應該有些用戶是從 us-west-{1,2} (美西) 或是 eu-west-1 (歐洲) 連到大本營 us-east-1;而對 CloudFront 的節省應該有限,因為 cache 後就不會往後面再要資料了?", + "title": "AWS 又調降價錢了..." + }, + { + "id": "3169", + "body": "在「The PNG image file format is now more popular than GIF」這邊看到,針對 Top 1000 網站統計發現 PNG 的使用率 62.4% 比 GIF 的 62.3% 高了:\r\n\r\n\"\"\r\n\r\n查了一些資料發現,雖然 GIF 的專利都已經過期很久了 (Unisys and LZW patent enforcement),但 PNG 還是有很多功能與支援度的問題,最主要的兩個:(Web browser support for PNG)\r\n\r\n第一點實在很傷啊,大家都愛動態 GIF... XDDD\r\n\r\n\"\"", + "title": "網站上 PNG 的使用率超越 GIF..." + }, + { + "id": "3174", + "body": "這篇與「對稱式加密系統的爆炸歷史 (Authenticated encryption 的問題)」這篇相關,建議可以一起看一看。\r\n\r\nTLS (Transport Layer Security),前身是 SSL (Secure Sockets Layer),是目前 HTTPS 所使用的加密協議。發展的順序上是 SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2。\r\n\r\n然後有兩篇文章可以看:\r\n\r\n第一篇文章講 Padding oracle attack,第二篇文章是酸 SSL/TLS 的修正愈修愈歪... XD\r\n\r\n像 AES 這類的 block cipher 在加密或解密時會要求切齊 block size,以 AES 的要求就是 128bits (16 bytes)。\r\n\r\n而對於不齊的資料要怎麼加密呢?其中一個方法是 PKCS#7:(圖片取自第二篇文章)\r\n\r\n\"Padding\"\r\n\r\n要想辦法補齊 128bits (16bytes),如果像上圖需要補 7bytes 進去,就都補上 x07 (剛好就是補上長度),另外在最後面會補上 padding 的長度,而問題出就出在這個設計先天就有缺陷:在 SSL/TLS 所使用的 MAC-then-Encrypt 中,MAC 只計算原文的值,沒有保護到 padding 的部份,於是就可以針對 padding 的部份想辦法找到洞鑽。\r\n\r\npseudo code 可能是這樣:\r\n
// Decrypt to plaintext + mac + padding\r\n$plaintext_mac_padding = decrypt($ciphertext);\r\nif (NULL != $plaintext_mac_padding) {\r\n\r\n    // Now decode padding part\r\n    $plaintext_mac = decode_padding($plaintext_mac_padding, $padding_length);\r\n    if (NULL != $plaintext_mac) {\r\n\r\n        // Now check MAC part\r\n        $plaintext = check_mac(plaintext_mac);\r\n        if (NULL != $plaintext) {\r\n\r\n            // Now it's okay\r\n        }\r\n    }\r\n}
\r\n攻擊者亂改 $ciphertext 會導致解出來的 padding 也亂掉,但早期的 SSL 會回傳「padding error」這種對攻擊者有利的資訊,而導致攻擊者可以利用這個資訊想辦法得知更多內容。\r\n\r\n而 TLS 並沒有從根本改善,而是試著加上機制補西牆:當遇到錯誤時就跳過,不要傳回錯誤資訊。\r\n\r\n但因為攻擊者亂改封包造成 decode_padding() 會失敗,而沒有呼叫到 check_mac()。這導致了大量的計算時間差與能量差,而使得攻擊者可以藉由這些資訊而得知是否成功。而官方在 TLSv1.2 的建議是再補上機制來補洞:\r\n
In general, the best way to do this is to compute the MAC even if the padding is incorrect, and only then reject the packet. For instance, if the pad appears to be incorrect, the implementation might assume a zero-length pad and then compute the MAC.
\r\n而官方認為雖然這樣還是有 timing channel,但已經小到會被雜訊覆蓋,所以「應該」可以解決問題:\r\n
This leaves a small timing channel, since MAC performance depends to some extent on the size of the data fragment, but it is not believed to be large enough to be exploitable, due to the large block size of existing MACs and the small size of the timing signal.
\r\n於是,只要覺得「應該安全吧」,就會「應該會被破」:「Lucky Thirteen: Breaking the TLS and DTLS Record Protocols」:\r\n
The attacks apply to all TLS and DTLS implementations that are compliant with TLS 1.1 or 1.2, or with DTLS 1.0 or 1.2. They also apply to implementations of SSL 3.0 and TLS 1.0 that incorporate countermeasures to previous padding oracle attacks. Variant attacks may also apply to non-compliant implementations.
\r\n這 SSL/TLS 的設計讓人補到快起笑了... XD\r\n\r\n資安的東西通常是愈複雜就愈容易被抓問題出來,在 SSL/TLS 的歷史包袱下,不知道什麼時候才想換 Encrypt-then-MAC 來改善底層問題...", + "title": "SSL/TLS 的問題..." + }, + { + "id": "3176", + "body": "微軟前幾天公開了 IE{7,8,9,10} 測試服務:「Testing made easier in Internet Explorer」。\r\n\r\n測試服務包括:\r\n\r\n不過這些檔案會不會太大了點... 我是抓 VirtualBox 版本,IE10_Win8.zip 居然有 2.7GB,為了真實模擬,所以把整個 Win8 包進去嗎 XDDD", + "title": "微軟提供的 IE{7,8,9,10} 測試環境..." + }, + { + "id": "3177", + "body": "W3 Total Cache 出了新版,升級上去後 WordPress 就爛掉了,最後是先 downgrade 到 0.9.2.5,然後再進系統把 W3 Total Cache 完全 deactive...\r\n\r\n有看到升級資訊的人可以先等一下,這次的 0.9.2.5 到 0.9.2.6 不是 minor version upgrade:\r\n
-rw-r--r--   1 gslin  staff   854455 Feb  6 04:12 w3-total-cache.0.9.2.3.zip\r\n-rw-r--r--   1 gslin  staff   915186 Feb  6 04:11 w3-total-cache.0.9.2.4.zip\r\n-rw-r--r--   1 gslin  staff   915384 Feb  6 04:02 w3-total-cache.0.9.2.5.zip\r\n-rw-r--r--   1 gslin  staff  1292961 Feb  6 04:11 w3-total-cache.0.9.2.6.zip
\r\n看起來這個作者沒什麼版本號的觀念,之後升級他的東西小心一點... XD", + "title": "W3 Total Cache 0.9.2.6 的災情慘重..." + }, + { + "id": "3178", + "body": "Oracle 正式將 MySQL 5.6 推上線 (GA,General Availability):「Oracle Announces General Availability of MySQL 5.6」。\r\n\r\n在官方的「What's New in MySQL 5.6」有列出 MySQL 5.6 的進展。另外在 Percona 的創辦人 Peter Zaitsev 所整理的文章「MySQL 5.6: Improvements in the Nutshell」裡面也整理了一份資料。\r\n\r\n在 Oracle 的工程師的 blog 上可以看到不少說明 InnoDB 在多 CPU 環境下的顯著進步,不過我是覺得看看就好... 進步是一定有,但實際用起來通常不會有官方說的那麼多 :p\r\n\r\n可以預期不久後 Percona 應該會丟出對應的版本 (至少之前已經有風聲了),到時候就用 Percona 的版本吧。\r\n\r\n另外一方面,openSUSEFedora 都已經決定將系統內的 MySQL 改用 MariaDB 代替:\r\n\r\n原因的話就不詳細寫了,上面有一些無關痛癢的官方說法。在「Oracle who? Fedora & openSUSE will replace MySQL with MariaDB」報導裡寫的比較直接。\r\n\r\n大家對 Oracle 沒什麼好感 (於是 Solaris 的事情又被拿出來婊),可以看到在 mailing list 上對 Oracle 的人酸溜溜的 XD", + "title": "MySQL 5.6 上線,以及 openSUSE 與 Fedora 對 MySQL 的反擊..." + }, + { + "id": "3180", + "body": "Stripe 是家電子付款的新創公司,相較於既有的電子付款機制 (像是 PayPal),Stripe 所提供的工具與介面對開發者與使用者非常友善。\r\n\r\n昨天 Stripe 推出了即時將 MongoDB 的資料倒到 PostgreSQL 的工具 MoSQL:「Announcing MoSQL」。\r\n\r\n據官方說法,要撈資料的時候用 SQL 比較方便,而且每個人都懂 SQL,所以他們開發了 MoSQL:\r\n
The thing is, we also love SQL. We love the ease of doing ad-hoc data analysis over small-to-mid-size datasets in SQL. We love doing JOINs to pull together reports summarizing properties across multiple datasets. We love the fact that virtually every employee we hire already knows SQL and is comfortable using it to ask and answer questions about data.
\r\n由於 PostgreSQL 9.2 支援 JSON 資料結構,感覺很像是要逃離 MongoDB 的工具啊... 雖然官方都不承認 XD", + "title": "Stripe 發表了將 MongoDB 資料倒到 PostgreSQL 的工具:MoSQL" + }, + { + "id": "3181", + "body": "W3 Total Cache 0.9.2.6 爛掉,於是出來 0.9.2.7,然後...:\r\n\r\n\"\"\r\n\r\n我猜要到 0.9.2.9 (如果不照這個版號跳的話,就是再跳兩個版本) 才會正常 XD", + "title": "W3 Total Cache 持續爛掉中..." + }, + { + "id": "3182", + "body": "在「Analyzing PostgreSQL Email Archives with PostgreSQL」這篇文章看到的,用 PostgreSQL 所提供的功能找出一些資訊... (像是 full text search 的功能)\r\n\r\n於是就產生出這樣的圖:(應該不用解釋?)\r\n\r\n\"\"\r\n\r\n還有「Probability that a new thread gets a response」或是與 Competitors 相關的統計 XD", + "title": "在 PostgreSQL 裡分析 PostgreSQL mailing list 行為..." + }, + { + "id": "3183", + "body": "redports.org 是一項提供給 FreeBSD ports maintainer 的服務,可以把 ports 丟上去讓大家在 submit/commit 之前測試看看有沒有問題。\r\n\r\n服務在前陣子的 security intruson 而暫時離線後就開始重建 (參考 FreeBSD 官方在「FreeBSD.org intrusion announced November 17th 2012」的說明),直到今天才恢復部份功能。\r\n\r\n目前只有開放讓之前有註冊的人可以 reset password,另外目前只有 9.1-RELEASE/amd64 與 9.1-RELEASE/i386 可以用,不過至少恢復部份功能讓大家測試。", + "title": "redports.org 恢復部份功能..." + }, + { + "id": "3186", + "body": "看到 jnlin 寫的「利用 Percona Playback warm-up MySQL 資料庫...」,把之前用到的「用 pt-find 加熱 (暖機) InnoDB table」改良讓他可以平行跑,儘可能吃完 I/O capacity:\r\n
pt-find --charset=utf8 --print -h $1 -u USER -p PASSWORD | xargs -t -P8 -I% -n1 sh -c \"echo 'SELECT COUNT(*) FROM %;' | mysql -h $1 > /dev/null\"
", + "title": "熱 MySQL 的方法..." + }, + { + "id": "3189", + "body": "Zite 在「Zite 2.1 Released」這邊公告了 2.1 版的改變,不看那些自吹自擂的文字,純粹就公開的數字,以及沒有公開的數字來看,可以看出 Zite 2.0 是一場災難...\r\n\r\n以這個例子來說:\r\n
Before Zite 2.0, usage was split 71% on iPad, 29% on iPhone; after Zite 2.0, we’ve seen usage of 60% iPad, 40% iPhone
\r\n提到 iPhone 版使用率變高,但卻沒有提到整體使用率上升。這樣就可以解讀為 iPad 版在 2.0 變難用,而導致 iPad 用戶逃光了,所以 iPhone 比率上升...\r\n\r\n有個 2.1 版的功能對 iPad 用戶超重要:\r\n
Swipe to close an article on the iPad – instead of having to click on the “X,” just swipe to the right to close an article on your iPad.
\r\n在 reader mode 時,往右滑就可以關閉文章了。而不用去左上角按 X 按鈕...\r\n\r\n另外穩定性與效率的改善是在預期之中,之前的 2.0 版慢的有點... 呃...", + "title": "Zite 改版:2.1" + }, + { + "id": "3190", + "body": "太久沒用 Subversion 了,為了用 redports.org 才又接觸...\r\n\r\n在 Git 下改錯內容後可以用 git checkout -f filename 恢復,在 Subversion 下則是用 revert 恢復:\r\n
svn revert filename
\r\n在 svn help revert 可以看到完整的說明,包括恢復整個目錄的方式。", + "title": "Subversion 還原檔案的方式..." + }, + { + "id": "3192", + "body": "MariaDB 發表 MariaDB 10.0.1 了:「What does MariaDB 10.0.1 include – available now」。\r\n\r\n公告的文章把一些資訊整理出來讓大家與 MySQL 5.6 比較... XD\r\n\r\n然後沒有列出 MySQL 5.6 有,但是 MariaDB 沒有的功能... XD\r\n\r\n先不管這些東西,10.0.1 多了 Cassandra storage engine 看起來就很有趣啊,可以透過 MySQL server 當 Cassandra client 跑去 Cassandra Cluster 讀寫資料:\r\n\r\n\"\"\r\n\r\n看說明是透過 CQL 要資料,所以仍然是受限於 CQL 的能力。", + "title": "MariaDB 10.0.1..." + }, + { + "id": "3193", + "body": "目前的電腦與網路已經有能力一次掃完整個 IPv4:「The result of pinging all the Internet IP addresses」。\r\n\r\n用 ping 不一定準確,因為目前 Windows 作業系統預設會開啟防火牆,不會接受 ping。不過仍然是個有趣的方法 :p\r\n\r\n首先是整個 IPv4 address space 只有 7% 的 IP address 會回應 ICMP ping:\r\n\r\n\"\"\r\n\r\n另外有各 /8 的回應數量:\r\n\r\n\"\"\r\n\r\n可以看到很多是空的... XD", + "title": "Ping 整個 IPv4 的結果..." + }, + { + "id": "3194", + "body": "W3 Total Cache 0.9.2.8 出來幾個小時候蒐集到足夠的資料了:\r\n\r\n\"\"\r\n\r\n下一個版本究竟會不會好呢... XD", + "title": "W3 Total Cache 0.9.2.8..." + }, + { + "id": "3197", + "body": "在 MySQL replication 發生錯誤後,需要一邊 skip replication error,一邊跑 pt-table-sync 強制資料庫同步:\r\n
while true; do ( echo 'SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;' | mysql -h $1 ) || sleep 1; done
\r\n那個 sleep 1 的設計是用在「如果 replication 正常,停一下再跑一次」的前提下而設計的;如果不需要的話拿掉也是 okay 的。\r\n\r\n要注意,能這樣跑的前提是 max_connect_errors 要開超大,我是設成 max_connect_errors = 4294967295。", + "title": "跳過 MySQL replication 失敗的方法..." + }, + { + "id": "3198", + "body": "看到 Percona 的人在討論 MySQL 5.6 的 GTID (Global Transaction ID) 功能,剛剛就實際到 AWS 上開了兩台 m1.large 測試:「How to create/restore a slave using GTID replication in MySQL 5.6」。\r\n\r\n要測試 GTID,因為剛出來沒多久,沒有多少文件可以看。MySQL 官方的「Replication with Global Transaction Identifiers」是必讀的文件。查 MySQL 官方文件時可以發現 5.6.9 (RC) 到 5.6.10 (GA) 其實還是改了不少變數名稱,如果在網路上找舊文章照抄是不會動的...\r\n\r\n先提結論,Galera Cluster 畢竟出來很久了,成熟度比 GTID 高,建議現在先觀望一陣子,至少等 best practice 出來後再進場測試...\r\n\r\n之前的 MySQL replication 有很多方法可以在不停機,或是停的時間很短的情況下把第一份 slave 資料與 replication 資訊生出來,舉例來說:\r\n\r\n但目前 MySQL 官方對 GTID 給的方式是 read only + mysqldump,這就算用 xtrabackup 也應該快不到哪吧... 這幾個月應該會一直有文章出現,裡面應該會有偷吃步的方法,看到再來測試看看 :o", + "title": "MySQL 5.6 的 GTID..." + }, + { + "id": "3200", + "body": "看到「AVG finds 11 year-old creating malware to steal game passwords」這篇裡面的說明:\r\n
The company said it had recently reverse-engineered one piece of malware that turned out to be the handiwork of an 11 year-old Canadian boy intent on stealing passwords used to access games such as Team Fortress.
\r\nAVG 的報告是出自「Q4 2012 AVG Community Powered Threat Report」(PDF) 的第 17 頁。", + "title": "十一歲就寫木馬的小朋友真是太有前途了..." + }, + { + "id": "3202", + "body": "首先是澳洲國會正式發文要求 AdobeApple 以及 Microsoft 解釋為什麼東西賣得比較貴:「Australian Govt Forces Apple, Adobe, Microsoft To Explain Price Hikes」、「Please explain prices: Parliament subpoenas Apple, Microsoft, Adobe」。\r\n\r\n消息出來僅僅一天,Adobe 最先決定調降價錢:「Adobe Bows To Pressure and Cuts Australian Prices」、「Adobe cuts Australian prices after inquiry summons」。\r\n\r\n調降的部份只包括月費服務的部份 (調到與美國一樣的價錢),而軟體買斷的部份仍然不變... 接下來等國會的後續了。", + "title": "Adobe 在澳洲降價:因為國會發正式公文要 Adobe 解釋為什麼賣的比其他地區貴..." + }, + { + "id": "3203", + "body": "DigitalOcean 因為「Linode vs DigitalOcean, performance benchmarks」這篇上了 Hacker News 熱門文章列表,把本來試用帳號的名額都用完了,現在要測試要自己花錢... XD\r\n\r\n原文是測效能 (I/O 速度與 CPU 速度),我是看其他的部分:\r\n\r\nTwitter 上已經看到 tkalu 已經把一些東西搬過去了:\r\n

digitalocean.com/price-comparis… 看了這比較就決定把 g0v 的玩具移到 digitalocean, 自己實測 $20 的方案 digitalocean 的 cpu 也比 linode 快上不少

— tka.lu (@tkalu) February 13, 2013
\r\n", + "title": "DigitalOcean 與 Linode 的比較..." + }, + { + "id": "3205", + "body": "Opera 決定放棄自己維護 render engine 了,將改用 WebKit:「Opera gears up at 300 million users」。\r\n\r\n不確定是什麼樣的考量,我猜是為了省成本順便做的決定。翻了 gs.statcounter.com 的資料,Opera 的全球佔有率愈來愈低,看起來還蠻有可能的?\r\n\r\n不過大多數的公司還是不管他吧:\r\n\r\n\"YUI\r\n\r\n以及:\r\n\r\n\"\"", + "title": "Opera 換 WebKit..." + }, + { + "id": "3206", + "body": "續上篇「DigitalOcean 與 Linode 的比較...」,先補上上次沒抓的圖,這是 DigitalOcean 可以用的 Linux Distribution:\r\n\r\n\"\"\r\n\r\n這次仔細檢查發現 DigitalOcean 本身沒有提供 DNS resolver,是指到 Google Public DNS:\r\n
nameserver 8.8.8.8\r\nnameserver 8.8.4.4
\r\n從阿姆斯特丹的機器過去是透過 Cogent 到法國的 Google Public DNS,需要 10ms,這數字有點差。到是 OpenDNS208.67.222.222 是走 Tinet,就在當地處理掉,只需要 0.6ms 左右,但 OpenDNS 會把不存在的 hostname 指到他們自家...\r\n\r\n如果要用阿姆斯特丹機房的機器,在裝完機器後要記得 DNS 的部份可能要自己架,測試的時候是用 Unbound 架一個給自己用...\r\n\r\n網路的部份:\r\n", + "title": "測試 DigitalOcean 荷蘭阿姆斯特丹的機器..." + }, + { + "id": "3207", + "body": "在「The InnoDB Quick Reference Guide is now available」這邊看到有人把 MySQLInnoDB 資訊整理成書,電子書版本大約是 NTD$230 (用美金計算是寫這篇文章換算出來最便宜的價錢)。購買後有 PDF、Mobi 以及 ePub 版可以下載。\r\n\r\n\"\"\r\n\r\n這本書適合打算要換 InnoDB、剛換 InnoDB,或是換了 InnoDB 但還沒遇過瓶頸的人閱讀。開頭的章節先解釋 InnoDB 有什麼特性,後面的章節會說明有哪些設定可以設,以及測試的工具。而最後面會說明要如何維護,以及要如何處理爛掉的狀況。", + "title": "InnoDB Quick Reference Guide:對於剛接觸 InnoDB 的入門與參考書" + }, + { + "id": "3208", + "body": "我一向不太喜歡 Galera Cluster + HAProxy 的設計。有四個理由:\r\n\r\n我把跑了超過半年的 Galera Cluster + Heartbeat 的經驗貼到 Codership 的 Group 上,裡面包括了設定與 script,希望能有些迴響:「HA solution - Galera Cluster with Heartbeat」。", + "title": "Galera Cluster + Heartbeat" + }, + { + "id": "3211", + "body": "John Resig (現在在 Khan Academy) 在月初的時候發表了「Keeping Passwords in Source Control」討論要怎麼儲存 credential。\r\n\r\n這不只是開發者的問題而已,這跟 code deploy 機制也很有關。目前沒有完美的方案,不同的解法都是在不同的環境與限制下而誕生出的產物。", + "title": "各種 credential 儲存的方式 (像是連到資料庫的密碼)" + }, + { + "id": "3212", + "body": "維基百科的「Content delivery network」條目裡面有份列表 (「Notable content delivery service providers」這個段落),不過剛剛在「HTTP Archive: new stats」這篇文章裡面又看到一些沒看過的名字 (在「Sites hosting HTML on CDN」這個段落),實際看了看發現還不少沒看過名字的 CDN...\r\n\r\n一個是 cubeCDN,一家公司在土耳其的 CDN,但官網上一堆連結都失效 XD\r\n\r\n另外一個是 Azion,一家以巴西為主的 CDN,除了巴西以外,還有美東、英國、荷蘭、新加坡、日本。缺了美西是哪招...", + "title": "看到許多其他的 CDN..." + }, + { + "id": "3213", + "body": "在公司內被問過好幾次了,用口頭講都比較概略性的講一講。這篇文章算是欠稿欠很久了...\r\n\r\n對於剛開始用 Google Reader,或是很少用的人,我給的建議「不要一次想要訂太多東西」,一步一步去試,每個人讀文章的習慣都不一樣,用 Google Reader 整理的「最佳方式」當然也會不一樣。\r\n\r\n可以嘗試的幾個方向:\r\n\r\n

開 Official 的分類來放官方 blog/feed

\r\n\r\n官方的 blog (或是 feed) 通常文章數量都不多,而因為官方的 blog 都官腔官腔,看的時候也需要抱著「這是官方的 blog」的心態看。拆一個獨立的分類放,集中一起看會是不錯的方式。\r\n\r\n你可能一時間想不到有哪些官方的 blog 可以訂。再拆細一點,你可以先從有付費的服務表列,這些是我有付錢的服務,如果有可以訂閱的 feed 我都一定會訂起來看:\r\n\r\n然後可以把現在沒付錢的常用服務也訂起來:\r\n\r\n然後常用的硬體、軟體都可以訂:\r\n\r\n\r\n

訂可以放空腦袋的圖片 blog/feed

\r\n\r\n等到你的 Google Reader 放了不少資訊類的 feed 之後 (而且是只有資訊類的 feed),你開 Google Reader 的次數就會愈來愈低... XD 為了解決這個問題,你要放「大量」可以放空腦袋的 feed,第一類推薦的就是圖片 (開個獨立的分類來放吧),這可以去 Tumblr 上找,像是:\r\n\r\n如果你喜歡吃東西,就找美食 blog 訂。如果你喜歡旅遊,就找遊記 blog 訂。\r\n\r\n附帶提醒,如果你發現裡面很多置入性行銷的文章,就再另外分一個類別吧 :p\r\n\r\n

最後的提醒...

\r\n\r\n中文 (母語) 與其他語言的 blog 要分到不同分類,如果你對簡體中文不熟悉的話,把簡體中文的 blog 也拆開。因為看母語與看其他語言的速度是不一樣的,如果看很多 feed 的時候,步調不一樣會很累。\r\n\r\n希望對一直不知道要怎麼使用 Google Reader 的人有幫助... XD", + "title": "給新手看的入門:要怎麼用 Google Reader 接收資訊" + }, + { + "id": "3214", + "body": "用 C Macro 實作的紅黑樹 (Red-black tree) 很經典,不過每次都忘記怎麼用... XD\r\n\r\n紅黑樹是平衡二元搜尋樹的一種,除了二元搜尋樹有的結構外,節點的資訊多了顏色。然後利用顏色達到平衡的特性。\r\n\r\n先定義單一節點的資料結構:\r\n
struct element {\r\n    char *key;\r\n\r\n    int value1;\r\n    char *value2;\r\n\r\n    RB_ENTRY(element) meta;\r\n};
\r\n紅黑樹的每個節點都需要紀錄母、左、右節點的指標,以及顏色,其中 RB_ENTRY() 所代表的資料結構會負責紀錄這些值。\r\n\r\n再來是定義母節點的資料結構,這樣之後就可以使用 struct tree tree1;struct tree tree2;struct tree tree3; 產生許多 tree 了:\r\n
RB_HEAD(tree, element);
\r\n這樣就會產生 struct tree 這個資料結構。如果只用一次可以偷懶寫成:\r\n
RB_HEAD(tree, element) tree1;
\r\n定義完資料結構後,接著比較函數 (要如何在兩個元素之間挑出大的那個):\r\n
int element_cmp(struct element *a, struct element *b)\r\n{\r\n    return strcmp(a->key, b->key);\r\n}
\r\n接著就可以產生 C 語言的 function prototype,以及實際的 function:\r\n
RB_PROTOTYPE(tree, element, meta, element_cmp);\r\nRB_GENERATE(tree, element, meta, element_cmp);
\r\n然後程式裡面就可以這樣初始化:\r\n
struct tree tree1;\r\nRB_INIT(&tree1);
\r\n其中 tree1 就變成之後所有操作的基礎。\r\n\r\n增加元素:\r\n
struct element *el;\r\nel = malloc(sizeof(struct element));\r\nel->key = strdup(\"key1\");\r\nel->value1 = 1;\r\nel->value2 = strdup(\"value2\");\r\nRB_INSERT(tree, &tree1, el);
\r\n如果要尋找的話可以用 RB_FIND():\r\n
el->key = \"key2\";\r\npointer = RB_FIND(tree, &tree1, el);
\r\n其他的就翻 tree.h 檔裡面類推...", + "title": "用 C Macro 實作的紅黑樹..." + }, + { + "id": "3216", + "body": "沒錯,是 Blizzard 的那個 Diablo (暗黑破壞神):「Isometric minimal-code style game at html5 canvas and javascript」,遊戲可以在「http://mitallast.github.com/diablo-js/」這頁玩...\r\n\r\n\"\"\r\n\r\n直接用 Blizzard 的圖資搞當然是很精彩 (而且很震撼),但這樣搞不會被 DMCA takedown 嗎 XDDD", + "title": "在瀏覽器玩 HTML5 + JS + Canvas 寫的 Diablo..." + }, + { + "id": "3217", + "body": "在 Oracle 放出 MySQL 5.6 後,Percona 將 MySQL 5.5 與 5.6 設定值的差異整理列出來:「MySQL 5.5 and 5.6 default variable values differences」。\r\n\r\n因為這是直接 dump 系統設定值比較,理論上所有「可以設定的值」都可以透過這個方法找出差異,不是靠設定值的改變就沒辦法了...\r\n\r\n文章後面有對作者覺得比較需要講的部份提出來。其中 innodb_file_per_table 終於變成預設值了 XD\r\n\r\n先繼續觀望...", + "title": "MySQL 5.5 與 5.6 的預設值差異..." + }, + { + "id": "3220", + "body": "用 FastCGITrac,遇到 Trac 常常出現 MySQL server has gone away 的問題,官方看起來非常的 open source style:我沒遇到,不太想要處理這個問題... XD\r\n\r\nAnyway,這個問題可以透過「#3645 (MySQL connections don't reconnect after idle timeout) – The Trac Project」的 comment:8 給 workaround 掉,但我不希望在升級後問題又跑出來,所以就用「Apache 2.2 worker MPM 與 mod_fastcgi 的問題」這邊的解法來解了:\r\n
www/trac: NO_CHECKSUM=yes | PATCH_SITES=http://freebsd-patches.s3.amazonaws.com/trac/ | PATCHFILES=patch-trac__db__mysql_backend.py
\r\n不過 NO_CHECKSUM=yes 有點討厭,來找看看有沒有辦法「增加 checksum」而非「忽略 checksum」...", + "title": "在 FreeBSD ports 裡用 local patch 修正問題..." + }, + { + "id": "3221", + "body": "標題的原因可以參考「是方電訊機房失火,全台網路異常」這篇。\r\n\r\n這是從 HiNet 機房對 ajax.googleapis.com 做的 SmokePing:\r\n\r\n\"\"\r\n\r\n這要怎麼說呢...", + "title": "HiNet 到 Google 改走國際線路,packet loss rate 反而降下來..." + }, + { + "id": "3222", + "body": "據說是改接線路跳過 UPS 後直接上市電供應,然後逐層恢復:(出自公開社團「225 內湖機房斷線八卦區」)\r\n\r\n\"\"\r\n\r\n然後中華也恢復對 ajax.googleapis.com 該有的 packet loss 了:(參考上篇「HiNet 到 Google 改走國際線路,packet loss rate 反而降下來...」)\r\n\r\n\"\"\r\n\r\n現在連的到 www.chief.com.tw 了,也看得到官方公告「是方電訊IDC大樓復電 客戶服務陸續恢復正常」了...\r\n\r\n\"\"", + "title": "網路陸陸續續恢復了..." + }, + { + "id": "3223", + "body": "原文是「Medium Data: things to try before abandoning SQL」,放棄 SQL 前應該要嘗試的事情,原文一開始就用粗體說明帶有強烈的偏見 XD\r\n
First, my thesis: a lot of less-experienced developers are using big data and NoSQL technologies because they are new and cool, and because SQL is old and hard. A lot of these people would save themselves time and effort by learning more about SQL and tuning their databases and hardware just a little bit.
\r\n文章寫的相當概念性,主要是說明幾件事情:\r\n", + "title": "換 NoSQL 前的建議..." + }, + { + "id": "3224", + "body": "開了一堆頁面,卻找不到放音樂的 tab 是哪個?在新版的 Google Chrome 裡會將正在放音樂的 tab 用動畫標示在 tab 上的 icon:「Chrome Shows Which Tab Is Making a Noise」,像是這樣的提示:\r\n\r\n\"\"\r\n\r\n目前在 Canary channel 裡才有,等個幾個月就會在正式版本出現了... (canary -> dev -> beta -> stable)", + "title": "新版的 Google Chrome 將會在 Tab 上 Icon 標示發出聲音..." + }, + { + "id": "3227", + "body": "在「How to stop TWC ISPs sucking at Youtube」這篇看到作者 (在美國) 抱怨時代華納 (Time Warner Cable,TWC) 連 YouTube 看影片的速度很慢,然後發現擋掉某個網段就快很多了...\r\n\r\n看了 Hacker News 上的討論以及以前得知的架構,這些 IP 有可能是:\r\n\r\n如果要猜的話,我會猜前者...\r\n\r\n然後同樣問題也在 HiNet 發生,實際測試後就找到 210.71.222.x 這個網段。\r\n\r\n在 Linux 下是使用 iptables 擋,其他作業系統可以在原文裡找到說明:(我自己的 Linux 是放到 /etc/rc.local 裡)\r\n
/sbin/iptables -A OUTPUT -d 210.71.222.0/24 -j REJECT
\r\n補充 Windows 的方法:\r\n\r\n在「開始」選「執行」,輸入 cmd,然後跳出黑色視窗後輸入:\r\n
netsh advfirewall firewall add rule name=\"BLOCKSLOWYOUTUBE\" dir=in action=block remoteip=210.71.222.0/24 enable=yes
\r\n設定完後可以回到瀏覽器找影片測試 YouTube 的速度。\r\n\r\n擋掉後會把流量導到國外 (測了幾個都是美國的機房),而連到國外機房可以跑到 8Mbps (速度會飄動,不過都超過 4Mbps),反而比國內 HiNet 機房內的速度快太多...\r\n\r\n看起來是 YouTube 的 flash player 會先偵測位於 ISP 的伺服器,有問題時會使用備用方案 (在這邊是美國機房),只是使用備用方案比 ISP 的伺服器快多了。", + "title": "HiNet 讓 YouTube 變快的方法:擋掉 210.71.222.0/24" + }, + { + "id": "3228", + "body": "GoogleApache License, Version 2.0 發表了與 zlib/deflate 相容的壓縮程式:「Compress Data More Densely with Zopfli」。\r\n\r\n與 zlib/deflate 相容代表現有的 browser 都不需要變動,而在 project 頁面上是這樣寫:\r\n
Zopfli Compression Algorithm is a new zlib (gzip, deflate) compatible compressor. This compressor takes more time (~100x slower), but compresses around 5% better than zlib and better than any other zlib-compatible compressor we have found.
\r\n比起現有的 zlib-compatible compressor 大約慢 100 倍 (XDDD),但對於靜態內容的幫助會很大,因為壓一次後就可以用很多次。", + "title": "Google 發表與 zlib/deflate 相容的壓縮程式,再小 5%..." + }, + { + "id": "3230", + "body": "轉自 xkcd 的「Virus Venn Diagram」:\r\n\r\n\"\"", + "title": "電腦病毒... XD" + }, + { + "id": "3232", + "body": "Linode 一直是 Hacker News 的寵兒,其中有幾項與其他的 VPS 比起來相當突出:\r\n\r\n另外價錢合理以及全球各地區都有機房也是很重要的特色。\r\n\r\n不過國外有人寫了一篇關於 DigitalOcean 與 Linode 的比較文章後,Linode 就被打入冷宮了 XDDD\r\n\r\n雖然 DigitalOcean 只有兩個點 (一個在美東,另外一個在歐洲),而且管理界面還有點陽春,但提供的品質與價錢遠遠超越 Linode... (請參考「DigitalOcean 與 Linode 的比較...」以及「測試 DigitalOcean 荷蘭阿姆斯特丹的機器...」這兩篇文章)\r\n\r\n過了兩個禮拜後 Linode 總算反擊了:「Create a free account and Trial Linodes」,不過力道看起來很差啊,依照原文的說明是讓你試用 Linode 512 這個規格的機器幾個小時... XD\r\n
Once confirmed you will be taken to a welcome page (the Account tab), where you will be given the option to spin up a Linode 512 cloud server to play around with for a couple of hours.
\r\n對於台灣的使用者來說,Linode 有東京機房的服務還是相當有用的,有興趣的人可以跳進去測試看看 :p\r\n", + "title": "Linode 推出免費試用方案..." + }, + { + "id": "3233", + "body": "Xiph 是個網路多媒體相關的 open source 組織,前陣子放了教學影片,介紹多媒體的理論:「Xiph.org: Video」,目前每一集都大約半小時,可以下載下來或是直接在網站上看。\r\n\r\n第一課「Episode 1: A Digital Media Primer for Geeks」從數位訊號開始講,包括影像與聲音。第二課「Episode 2: Digital Show & Tell」則是介紹聲音的部份 (包括數位與類比)。\r\n\r\n有興趣可以去看看 :p", + "title": "Xiph 講數位訊號..." + }, + { + "id": "3235", + "body": "AWS SESAWS 服務裡面設計問題超多的一個服務,在推出兩年後 (2011 年一月) 總算是提供把 Blacklist 拿掉的功能...\r\n\r\n原始的設計是,只要對方位置不存在,這個 e-mail 就會進黑名單 14 天,無法刪除。而一次寄給多人的信件,只要有一個人是黑名單就會全部擋掉 XDDD\r\n\r\n再來是這個 14 天限制,並不是「第一次被擋掉後 14 天」,而是「最後一次失敗後 14 天」,而「最後一次失敗」包括 retry... =_=\r\n\r\n弄到最後反而是自己架 mail server 比較快,針對問題很多的 @yahoo.com 系列與 @*.hinet.net 透過 AWS SES 寄就好...", + "title": "AWS SES 總算可以「手動」把 Blacklist 拿掉..." + }, + { + "id": "3236", + "body": "Update:請參考 comment 裡 scw 貼的連結,這是用 BGP 惡搞出來的假象。\r\n\r\n在看到海盜灣最新的公告文章「PRESS RELEASE, NEW PROVIDER FOR TPB」這篇,其中這段:\r\n
Today we can reveal that we have been invited by the leader of the republic of Korea, to fight our battles from their network.
\r\n唔啊... 這哪招啊... @_@\r\n\r\n現在查 thepiratebay.se175.45.177.217:\r\n
;; ANSWER SECTION:\r\nthepiratebay.se.        52276   IN      A       194.71.107.15
\r\n這個 IP 註冊在平壤的柳京洞 (Ryugyong-dong):\r\n
inetnum:        175.45.176.0 - 175.45.179.255\r\nnetname:        STAR-KP\r\ndescr:          Ryugyong-dong\r\ndescr:          Potong-gang District\r\ncountry:        KP\r\nadmin-c:        SJVC1-AP\r\ntech-c:         SJVC1-AP\r\nstatus:         ALLOCATED PORTABLE\r\nmnt-by:         APNIC-HM\r\nmnt-lower:      MAINT-STAR-KP\r\nmnt-routes:     MAINT-STAR-KP\r\nremarks:        -+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+\r\nremarks:        This object can only be updated by APNIC hostmasters.\r\nremarks:        To update this object, please contact APNIC\r\nremarks:        hostmasters and include your organisation's account\r\nremarks:        name in the subject line.\r\nremarks:        -+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+\r\nchanged:        hm-changed@apnic.net 20091221\r\nsource:         APNIC
\r\n來真的啊~", + "title": "海盜灣進駐北韓..." + }, + { + "id": "3238", + "body": "FreeBSD 7.4 只支援到 2013/02/28,過了一個禮拜後看起來也沒換日期 (FreeBSD Security Information),而 ports 宣佈不需要再支援 7.4 的公告也出來了:「[FreeBSD-Ports-Announce] [HEADS UP] FreeBSD Ports tree has been tagged with RELEASE_7_EOL」,所以 FreeBSD 7 系列算是退休了,現在 STABLE 只包括 8 與 9...\r\n\r\n\"\"\r\n\r\n不過 8.3 與 9.0 都還是不穩 (userland 下跑個大一點的 phpunit 就會 kernel panic 是哪招 XD),所以這些跑 7.4 的機器得想辦法升級到 9.1...", + "title": "FreeBSD 停止支援 7.4..." + }, + { + "id": "3240", + "body": "在「Facebook Adds SPDY Support!」看到 Facebook 將全面支援 SPDY 的消息。\r\n\r\nFacebook 的 *.fbcdn.net 在二月先上 SPDY 了:\r\n
I managed to find this image uploaded by Varun Kumar on February 1 2013, showing that Facebook’s CDN hostname *.fbcdn.net was serving static resources like images and JavaScript via SPDY.
\r\n而 m.facebook.com (行動版) 也上 SPDY 了,不過要 Android 3+ 才支援。\r\n\r\n目前 SPDY 主要支援的平台是 Firefox 13+ (11+ 支援,但預設沒開),Google Chrome 與 Android 3+,市占率大約 50%... 好像也不少?(參考:Can I use SPDY networking protocol?)", + "title": "Facebook 將全面支援 SPDY..." + }, + { + "id": "3242", + "body": "Linode 剛剛發表了「Linode Nextgen: The Network」,對外說明他們砸了大筆銀子在骨幹網路上,於是把本來的傳輸限制提昇為原來的十倍。也就是本來限制 200GB 的 Linode 512 就變成 2000GB。\r\n\r\n六個機房都包括在內:(於是東京機房也是其中之一)\r\n
We’re upgrading our entire network, in all six datacenters.
\r\n然後所有架構都是以 Cisco Nexus 為主:\r\n\r\n\"\"\r\n\r\n看起來 Cisco 給了很漂亮的價錢讓 Linode 廣告... XD\r\n\r\n這麼多頻寬好像可以拿來幹些事情... (來想看看)", + "title": "Linode 骨幹升級,傳輸量限制提昇為原來的十倍!" + }, + { + "id": "3243", + "body": "Slashdot 上看到 VP8 可以使用 MPEG LA「重要的」專利:「Google and MPEG LA Reach VP8 Patent Agreement」,這次授權不僅限於 Google,還包括讓 Google 可以免費授權其他人使用。\r\n\r\n官方公告包括了 WebM 網站上「VP8 and MPEG LA」,MPEG LA 的「Google and MPEG LA Announce Agreement Covering VP8 Video Format」... (話說 MPEG LA 的聯絡窗口叫做 Tom O'Reilly,跟那位有關嗎?:p)\r\n\r\nTechCrunch 也給了一篇分析「Google And MPEG LA Sign Licensing Agreement Covering Google’s VP8 Video Codec, Clearing The Way For Wider Adoption」。", + "title": "VP8 將可以無償使用 MPEG LA 重要的專利..." + }, + { + "id": "3244", + "body": "以往在使用 Googlesite: 只知道能放 suffix,譬如 site:edu.tw。\r\n\r\n而剛剛在「Advanced Uses for Google's Site: Operator」則是看到了 site:blog.* 這種用法,或是 site:blog.*.com 這種用法,不過原作者目前測試發現有漏,我自己測試是沒什麼問題 :p\r\n\r\n另外這個技巧在圖片搜尋也可以使用 :p", + "title": "Google 的 site: 限制更少了..." + }, + { + "id": "3245", + "body": "前幾天 Google 推出 Zopfli:「Google 發表與 zlib/deflate 相容的壓縮程式,再小 5%...」,是個壓縮率比目前實做的 deflate/zlib 還高的新演算法。\r\n\r\n而 Zopflinator 則是提供比較的網站,你可以把網址丟進去後看到未壓縮的大小、用 deflate 預設值壓縮後的大小,gzip -9 的大小,以及 zopfli 後的大小。\r\n\r\n原文出自 Steve Souders 的「Zopflinator」...", + "title": "Zopflinator:計算 Zopfli 效果比 gzip -9 好多少的網站..." + }, + { + "id": "3247", + "body": "Slashdot 上看到這個新聞:「Man Has 75% of Skull Replaced By 3D-Printed Materials」,Oxford Performance Materials 的官方新聞稿在「3D-Printed Skull Implant Ready for Operation」。\r\n\r\nFDA (美國食品藥品監督管理局) 在上個月 (2013/02/18) 批准 OPM 將 3D 列印技術用在這次的頭骨植入手術。接受移植者先接受掃描讓 OPM 帶資料回去建,而上星期手術完成了... 對於頭骨受傷的人 (像是因戰爭受傷) 又多了一個方法 @_@\r\n\r\n不過報導裡沒提到材質?到底是用什麼材質啊...", + "title": "用 3D-Printed 技術的頭骨..." + }, + { + "id": "3249", + "body": "在「Petition the White House to eliminate daylight saving time」看到有人直接到白宮請願網站上請願中止每年需要調整兩次時間的「日光節約時間」:「Eliminate the bi-annual time change caused by Daylight Savings Time」。\r\n\r\n請願者認為,以現在的觀點來看,這實在太擾民了... 而發起還不到一個禮拜,就有兩萬人請願了,來看看接下來的進度... XD", + "title": "中止日光節約時間 (Daylight Savings Time) 的請願..." + }, + { + "id": "3250", + "body": "AWS 放出兩個新功能,一個是 iPhone 版本的管理 app:「AWS Management Console for iPhone」,另外一個是 EC2 可以跨區域複製機器了:「Cross Region EC2 AMI Copy」。\r\n\r\n直接抓官方提供的畫面:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這兩個功能都算是欠很久了...", + "title": "AWS 支援 iPhone 管理,以及跨區域複製機器功能..." + }, + { + "id": "3251", + "body": "在「Twitter OAuth API Keys Leaked」看到有人把 Twitter 官方應用程式的 API key 給解出來了,包括所有平台 XD\r\n\r\n這件事情在技術上沒辦法避免,就跟 DRM 技術一樣... 不過也不用擔心,這些 key 與 secret 沒有安全問題,在 OAuth 設計上只是拿來識別 client 用,而用這些 key 的好處是 Twitter 不會限制這些 client 的 API 呼叫次數... XD\r\n\r\n這完全怒了啊 XDDD", + "title": "有人把 Twitter 官方 App 的 OAuth API Key 解出來了..." + }, + { + "id": "3252", + "body": "在「Switching from MySQL/MyISAM to Galera Cluster」這邊看到一個 script 可以檢查 MySQL MyISAM 換到 InnoDB,而且預定要換成 Galera Cluster 時的問題。\r\n\r\n常見的問題都有檢查到,還蠻有用的:\r\n\r\nGalera Cluster 無法處理沒有 Primary Key 表格的刪除動作:(可以參考「MariaDB Galera Cluster - Known Limitations」這邊的說明)\r\n
DELETE operation is unsupported on tables without primary key. Also rows in tables without primary key may appear in different order on different nodes. Don't use tables without primary key.
\r\n不過每個表格都要有 Primary Key 並不難,因為如果有正規化時通常都會達到目標。就算不去用他也還是可以設計一個 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT 放著。(過大的時候再換成 BIGINT UNSIGNED)", + "title": "把 MySQL MyISAM 換到 Galera Cluster 的 InnoDB 上..." + }, + { + "id": "3253", + "body": "如標題 :p 只拿 cpanm 分析一定會有偏差,所以數字參考看看就好:「Perl versions usage stats (with cpanm)」。\r\n\r\n\"\"\r\n\r\nPerl 其中一個討厭的問題是版本太多了... 不是官方說 EoL 就可以 EoL 啊 :/", + "title": "利用 cpanm 的資料計算 Perl 版本分佈狀況..." + }, + { + "id": "3255", + "body": "雖然之前就有小道消息說要關,但實際公告出來瞬間就在自家 Google Reader 上看到暴動... XD\r\n\r\n官方公告在:「A second spring of cleaning」,其中只有一小段 XDDD\r\n
We launched Google Reader in 2005 in an effort to make it easy for people to discover and keep tabs on their favorite websites. While the product has a loyal following, over the years usage has declined. So, on July 1, 2013, we will retire Google Reader. Users and developers interested in RSS alternatives can export their data, including their subscriptions, with Google Takeout over the course of the next four months.
\r\n\r\n另外登入 Google Reader 時也會看到:\r\n\r\n\"\"\r\n\r\n接下來就先觀望吧,剩下三個多月... 之前覺得 Feedly 用起來太沒效率... (反正現在網站也被打趴沒得測)", + "title": "Google Reader 要關了... -_-" + }, + { + "id": "3256", + "body": "在「ARM Based Server Cluster Benchmarked」看到有人對 ARMIntel 的 x86 (x86_64) 架構比較。原文在「Calxeda's ARM server tested」,ARM 的部份是以 Calxedas 的 server 測試。\r\n\r\n重點其實在第 13 頁:\r\n
So on the one hand, no, the current Calxeda servers are no Intel Xeon killers (yet). However, we feel that the Calxeda's ECX-1000 server node is revolutionary technology. When we ran 16 VMs (instead of 24), the dual low power Xeon was capable of achieving the same performance per VM as the Calxeda server nodes. That this 24 node system could offer 50% more throughput at 10% lower power than one of the best Xeon machines available was honestly surprising to us.
\r\n雖然知道 ARM 的單位能量所產生的效能比較好,但比我想像中少... 我以為同樣電力會到兩倍。如果只有 50%+ 的話,也難怪各家都還在評估,而非大力換掉 :o", + "title": "ARM Server 與 Intel Server 的比較..." + }, + { + "id": "3258", + "body": "剛剛看到 Percona 放出第三個基於 MySQL 5.6 的版本了,仍然是 alpha 等級 (還在測試階段):「Announcing Percona Server for MySQL 5.6.10-60.2」。\r\n\r\n這也是 MySQL 5.6 進入 GA 後 Percona 推出的第一個版本,而且剛剛看 Percona 的文件網站也發現建出來了:「Percona Server 5.6 - Documentation」。\r\n\r\nPercona XtraDB Cluster 目前還是基於 5.5 的版本,不知道 Codership (Galera Cluster 的開發公司) 有沒有打算換新...", + "title": "Percona 的 MySQL 5.6..." + }, + { + "id": "3260", + "body": "在 Slashdot 上看到的文章:「UK Government Mandates 'Preference' For Open Source」,引用的新聞是「Government mandates 'preference' for open source」,英國政府的說明原文則是在「Open source — Government Service Design Manual」。\r\n\r\n第一段就馬上說明無論是作業系統、網路軟體、網站伺服器、資料庫,甚至是程式語言,都應該優先考慮 open source 方案,再考慮 closed source 替代方案:\r\n
Use open source software in preference to proprietary or closed source alternatives, in particular for operating systems, networking software, Web servers, databases and programming languages.
\r\n只有在少數狀況下才應該使用 SaaS 或是安裝非 open source 軟體替代:\r\n
Problems which are rare, or specific to a domain may be best answered by using software as a service, or by installing proprietary software.
\r\n不過這份 manual 還未定案,還可以看看會有什麼更新...", + "title": "英國政府將優先考慮 Open Source 應用" + }, + { + "id": "3261", + "body": "有人就在 StackExchange 上問 StackExchange 本身的流量,而官方就直接把數字提供出來:「How much bandwidth does SE eat up?」。\r\n\r\n這是全部 StackExchange 家族的數字。除了頻寬數據以外,還包括了 CDN 的數據 (使用量與 Hit rate)。所有的數據都是提供三十天內的統計結果。\r\n\r\n這是以文字為主,而且偏技術類的網站,這樣的流量數字其實相當驚人了。", + "title": "StackExchange 的頻寬使用量..." + }, + { + "id": "3262", + "body": "Steve Souders 分析這幾年來 jQuery 的使用方式:「HTTP Archive: jQuery」。\r\n\r\nHosting 的部份,Google Hosted Libraries 仍然熱門,在取出 30k url 比較中,可以看到超過 19% 的站使用 Google Hosted Libraries 提供的 jQuery。\r\n\r\n另外就是使用的版本極度分散,而且更新速度非常緩慢。1.9 系列完全排不上前十,第一名是 1.4.2... 等下,這是什麼版本 XD", + "title": "對 jQuery 使用方式的分析..." + }, + { + "id": "3263", + "body": "Google Public DNS 開始支援 DNSSEC 驗證,讓 DNS 查詢更安全:「Google Public DNS Now Supports DNSSEC Validation」。\r\n\r\n一般的查詢還是可以查到:\r\n
; <<>> DiG 9.8.1-P1 <<>> bogussig.dnssec.tjeb.nl @8.8.8.8\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40844\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0\r\n\r\n;; QUESTION SECTION:\r\n;bogussig.dnssec.tjeb.nl.       IN      A\r\n\r\n;; ANSWER SECTION:\r\nbogussig.dnssec.tjeb.nl. 422    IN      A       178.18.82.80
\r\n加上 DNSSEC 選項後就可以把有問題的抓出來:\r\n
; <<>> DiG 9.8.1-P1 <<>> bogussig.dnssec.tjeb.nl @8.8.8.8 +dnssec\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 61704\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1\r\n\r\n;; OPT PSEUDOSECTION:\r\n; EDNS: version: 0, flags: do; udp: 512\r\n;; QUESTION SECTION:\r\n;bogussig.dnssec.tjeb.nl.       IN      A
", + "title": "Google Public DNS 支援 DNSSEC 驗證..." + }, + { + "id": "3264", + "body": "在這邊探討了 FQDN 形式 (hostname 最後面有 dot 結尾的形式) 對於瀏覽器的影響:「The danger of the trailing dot in the domain name」。\r\n\r\n影響包括了 HTTPS 的 SSL Certificate 會失效:\r\n\r\n\"\"\r\n\r\n另外,cookie domain 會不一樣,所以在有 dot 的頁面上登入後,重導到沒有 dot 的網址上會讀不到 cookie 而造成登入失敗。\r\n\r\n瀏覽器應該對 dot 處理嗎?一時間想不到有什麼問題,不過好像又不應該處理...", + "title": "Hostname 最後面的點 (dot) 會造成的影響..." + }, + { + "id": "3265", + "body": "繼上次的「Linode 骨幹升級,傳輸量限制提昇為原來的十倍!」之後,這次把可用 CPU 數量也升級上去了:「Linode NextGen: The Hardware」。\r\n\r\n現有的機器只要重開機就可以抓到了。不過真正最常卡住的應該是記憶體... 畢竟記憶體夠大,什麼事情都好辦 :p", + "title": "Linode 再升級:CPU 數量變成原來兩倍..." + }, + { + "id": "3267", + "body": "在「ICANN Reveals Regional Winners of New gTLDs」這邊看到 ICANN 通過 27 個 top level domain 的消息。\r\n\r\n這 27 個 domain 可以透過「New gTLD Current Application Status」這頁查詢,在 Search By 的地方選擇 IE Result = Pass 就可以找出來了。可以看出來這一波都是非英文的網域名稱。\r\n\r\n有種被 ICANN 玩到快完蛋的感覺...", + "title": "ICANN 通過 27 個 top level domain..." + }, + { + "id": "3268", + "body": "在「Pew Research Finds Opinion Dominates MSNBC More Than Fox News」這篇看到的,Pew Research Center 對三大新聞頻道 2012 年的年度分析,發現 MSNBC 的談話性節目所佔的時間遠超過一般新聞播報:\r\n\r\n\"\"\r\n\r\n在「The Changing TV News Landscape」裡還分析了 2007 年與 2012 年的差異... 趨勢是往綜藝節目走向:用比較低的成本達到收視率,灑狗血比實際跑新聞便宜而且輕鬆。\r\n\r\n不過 85% 是怎麼樣... XDDD", + "title": "CNN、Fox News、MSNBC (美國三大新聞頻道) 節目的比重..." + }, + { + "id": "3269", + "body": "在「Apple Adds Two-Factor Authentication to iTunes Accounts」看到蘋果支援 Two-Factor Authentication。蘋果官方的 KB 在「Apple ID: Frequently asked questions about two-step verification for Apple ID」這邊。\r\n\r\n看說明是透過簡訊進行認證,類似於 Facebook 的方式。不過拿了自己的帳號測試發現還看不到這個選項,應該是全球逐步開放?", + "title": "蘋果的 Two-Factor Authentication..." + }, + { + "id": "3273", + "body": "AWS 推出 CloudHSM 服務:「AWS CloudHSM - Secure Key Storage and Cryptographic Operations」。\r\n\r\n不便宜,看起來是為了需要 NIST FIPS 140-2 需求而設的吧?跑的是 Luna SA - Ethernet-Attached HSM,可以達到 Level 3 的安全性...\r\n\r\n然後遇到安全性時的老問題,要怎麼 audit:\r\n

Amazon claims that they have no access to keys stored on #AWS #CloudHSM, but how do we know it's really an HSM? #professionallyparanoid

— Colin Percival (@cperciva) March 26, 2013
\r\n\r\n感覺上是個口水戰,來拉板凳... XD", + "title": "AWS 的 CloudHSM..." + }, + { + "id": "3274", + "body": "在「The NSA's Cryptolog」這邊提到 NSA 將 1974 年到 1997 年的 CRYPTOLOG (NSA 內部以密碼學為主題的月刊) 解密放出...\r\n\r\n所有檔案可以在官方網站「Cryptologs」這邊下載,另外避免突然消失,有人直接包成一個超大的 PDF:「www.governmentattic.org/7docs/NSA-Cryptolog_1997-1974.pdf」。\r\n\r\n沒什麼意外的... 裡面滿滿的馬賽克 XDDD", + "title": "NSA 的 CRYPTOLOG..." + }, + { + "id": "3275", + "body": "Mozilla 官方的 Blog 上說明了 Firefox Nightly 引入了新的 Cookie 機制,預設將不允許以追蹤為目的的 cookie:「Firefox getting smarter about third-party cookies」。\r\n\r\n最粗淺的想法是,如果 cookie 是沒有逛過的網站所發出來的就擋掉。所以:(出自 bug 818340 的 comment)\r\n
1) if an origin is first-party, it has ordinary cookie permissions\r\n2) if an origin is third-party\r\n\ta) if the origin already has cookies, it has ordinary cookie permissions\r\n\tb) otherwise, the origin gets no cookie permissions
\r\n也就是在 Mozilla Bugzilla 裡的紀錄「Block cookies from sites I haven't visited」,開 bug 的作者是看到 Safari 處理 cookie 的方式而決定要在 Firefox 上也幹類似的事情 :p\r\n\r\n所以 google-analytics.com doubleclick.net 的 cookie 永遠不會成立 (因為沒去過這個網站),但 facebook.com 的外掛還是會動... 其他的廣告商就類推... XD\r\n\r\n這對於目前的廣告商會很傷 :p 透過 cookie 實作個人化廣告的功能會被廢掉一半的武功,得用其他方法惡搞 :o 可以預期在 Google Chrome 後面的 Google 一定超級不想實作這功能... XD\r\n\r\n不過 Google Chrome 好像可以自己阻擋第三方 cookie,然後設定白名單,晚點來研究看看... (反正會保持登入的 social network 沒幾家)", + "title": "Firefox 加強對 Cookie 的管制..." + }, + { + "id": "3277", + "body": "昨天看 Hacker News 的文摘看到的:「Checkout github pull requests locally」。\r\n\r\n方法是對 remote \"origin\" 加上 fetch = +refs/pull/*/head:refs/remotes/origin/pr/*,這樣就會把 pull request 拉下來...\r\n\r\n下面的 comment 也有不少討論可以看...", + "title": "把 GitHub 上的 pull request 對應到 Git branch..." + }, + { + "id": "3278", + "body": "快四年前寫過「XtraBackup:線上備份 InnoDB 的好東西」這篇,但裡面的方法已經不能用了,所以再寫一篇給 Google,之後查資料比較方便...\r\n\r\n現在可以參考 Percona 的官方文件「How to setup a slave for replication in 6 simple steps with Xtrabackup」。\r\n\r\n先跑一次 full backup:\r\n
innobackupex --user=yourDBuser --password=MaGiCiGaM --slave-info /path/to/backupdir
\r\n再跑 apply log:(其中的變數自己換掉)\r\n
innobackupex --apply-log --use-memory=2G /path/to/backupdir/$TIMESTAMP/
\r\n然後整個目錄丟到 slave server 上,用 CHANGE MASTER TO 指令把 master 資訊設好即可 :p", + "title": "用 Percona Xtrabackup 產生 Slave Server 的方式..." + }, + { + "id": "3279", + "body": "在 Hacker News 文摘上看到,PostgreSQL 決定對這次的 security update 採取最極端的作法:「Extra security measures for next week's releases」。\r\n\r\n包括全面管制 Git repository 公開資訊:官方的 Git repository 將會在正式釋出修正前限制只有 committer 可以存取,並且暫停 GitHub 以及其他 git mirror 權限。\r\n\r\n另外 mailing list 也受到管制,包括了 src commit log 以及 document commit log。\r\n\r\n信件開頭就提到這次安全性漏洞足以說服 PostgreSQL 的人採取最極端的作法,避免在有修正方案前造成漏洞洩漏出來被使用:\r\n
The core committee has decided that one of the security issues due to be fixed next week is sufficiently bad that we need to take extra measures to prevent it from becoming public before packages containing the fix are available. (This is a scenario we've discussed before, but never had to actually implement.)
\r\n不過這反而讓人更關注,甚至上了 Hacker News 熱門榜...", + "title": "PostgreSQL 對 security update 的極端作法..." + }, + { + "id": "3280", + "body": "二月的時候 PostgreSQL 的人在 FOSDEM PGDay 2013 上發表了對 NoSQL 的看法 (PDF 投影片):「PostgreSQL as a Schemaless Database.」。\r\n\r\n先說明,這投影片相當酸 XD\r\n\r\n不過這份投影片說明了大多數人的問題:\r\n\r\n另外我建議可以看看維基百科上的 Entity-attribute-value model,大多數你想用 NoSQL 的情況在這個 case 下就可以解決,而且效能相當好。", + "title": "PostgreSQL 對 NoSQL 的看法..." + }, + { + "id": "3281", + "body": "Amazon S3 的 request 費用大幅調降:「Announcing New Lower Request Pricing for Amazon S3」。\r\n\r\nPUT/LIST/COPY/POST 的部份調降 50%,本來每千個是 USD$0.01 調降到 USD$0.005。而 GET 調降 60%,本來 USD$0.01 調降到 USD$0.004。\r\n\r\n本來 CloudFront 可以降低 request 費用 (美國區每千個 GET 是 USD$0.0075),現在相比反而變貴... 還是過陣子 CloudFront 有機會再調降 request 費用?", + "title": "Amazon S3 調降 request 本身的收費..." + }, + { + "id": "3282", + "body": "PostgreSQL 在官網最明顯的位置上放出更新公告:\r\n\r\n\"\"\r\n\r\n說明在「PostgreSQL 9.2.4, 9.1.9, 9.0.13 and 8.4.17 released」這頁,更新的版本分別是 9.2.4 (9.2)、9.1.9 (9.1)、9.0.13 (9.0) 與 8.4.17 (8.4)。除了公告外,在 Security Information 的資料也可以交叉看。\r\n\r\n這次最嚴重的問題是 CVE-2013-1899,等級分類在最嚴重的 A 級,官方對這個問題的描述是:\r\n
A connection request containing a database name that begins with \"-\" may be crafted to damage or destroy files within a server's data directory
\r\nhmmm...", + "title": "PostgreSQL 安全性更新..." + }, + { + "id": "3283", + "body": "剛剛看到 GitHub 公告,將使用者網站 (http://username.github.com/ 這種) 改到 http://username.github.io/ 下:「New GitHub Pages domain: github.io」。\r\n\r\nGitHub 總算把把使用者頁面放到 subdomain 下這種對安全性問題吃力不討好的事情給搞定了...\r\n\r\nPS:我還是對 HiNethinet.net 用在使用者 IP 上這件事情感覺到... XD", + "title": "GitHub 總算把使用者頁面放到新的 domain 上:github.io" + }, + { + "id": "3284", + "body": "WordPress.com 前幾天宣佈支援 One Time Password (OTP,動態密碼):「Greater Security with Two Step Authentication」。\r\n\r\n因為是使用 HOTPTOTP,所以可以使用 Google Authenticator (Android) 或是 Google Authenticator (iOS) 當做 OTP software。\r\n\r\n不過用手機跑 OTP software 的安全性還是沒有傳統實體 token 的高 (可以藉由 OS exploit 取得 key),像 AWS 就同時有提供實體 OTP 與 HOTP+TOTP 的版本...\r\n\r\n不過 AWS 的實體 OTP 低成本應該是靠 AWS 量而壓出來 (靠 IAM 一個帳號設很多子帳號,每個子帳號都可以設定要不要用 OTP),這部份 WordPress.com 沒有這個需求。另外 WordPress.com 的資料似乎沒有 AWS 吸引人,所以...\r\n\r\n大概還是不會設 OTP 吧...", + "title": "WordPress.com 也支援 OTP 了..." + }, + { + "id": "3286", + "body": "被 Zite 推薦快兩年前的文章... 在「Poor man’s nth-child selector for IE 7 and 8」看到用 + 來硬幹 nth-child()...\r\n\r\n一般是這樣寫:\r\n
/* standard nth */\r\nul.menu li:nth-child(3)\r\n{\r\n    /* styles for the 3rd LI */\r\n}
\r\n遇到 IE{7,8} 時可以這樣幹:\r\n
/* IE nth */\r\nul.menu>li + li + li \r\n{\r\n    /* styles for the 3rd LI */\r\n}
\r\n或是:\r\n
/* alternate, more specific IE nth */\r\nul.menu>li:first-child + li + li \r\n{\r\n    /* styles for the 3rd LI */\r\n}
\r\n印象中很久前有看到一堆這類硬幹的技巧,不過都忘光了... 寫一篇記錄下來 XD", + "title": "IE7 與 IE8 上的 :nth-child..." + }, + { + "id": "3287", + "body": "Linode 最後的大絕招放出來了,將 RAM 加倍:「Linode NextGen: RAM Upgrade」。\r\n\r\n這次不是直接升級,而是用「我們想要把收費的金額變為整數」當理由避免直接升級 (最小台的 USD$19.95/month 變成 USD$20/month)。流量與價錢保持比例最大台的機器就變成 Linode 8G,提供 192GB disk 以及 16TB/month 的流量,比起 4GB 又可以多做不少事情...\r\n\r\n升級過程會更換主機,而非原地升級,實際轉移時需要把 disk image 從現在跑的機器複製到另外一台,還蠻花時間的... (最小台就用了我 12 分鐘)\r\n\r\n不在意 USD$0.05/month 的人可以登入後台去看看,照內文所說明的,目前除了加州機房以外都已經 ready 了 :p", + "title": "Linode 再升級:每個月多 USD$0.05,記憶體加倍..." + }, + { + "id": "3288", + "body": "微軟自己做的 The Internet Explorer 6 Countdown 網站又在 Hacker News 上被提起來... XD\r\n\r\n還高於 1% 的地區全部都在亞洲,包括了:\r\n\r\n那個超高的 25.8% 要怎麼降啊... XD", + "title": "IE6 的消滅進度..." + }, + { + "id": "3289", + "body": "很久沒用 Windows 了,不過之前還在用的時候總是覺得 Adobe 的 Download Manager 很煩人,然後剛剛看到 xkcd 酸 XDDD:\r\n\r\n\"\"\r\n\r\n噗 XDDD", + "title": "Adobe 的 Download Manager 被 xkcd 酸..." + }, + { + "id": "3290", + "body": "Percona 在前幾天推出基於 MySQL 5.5.30 的 Percona Server 5.5.30-30.2:「Percona Server for MySQL 5.5.30-30.2 now available」。\r\n\r\n5.5.30-30.2 這個版本引入了 jemalloc:\r\n
Percona Server for MySQL will now be shipped with the libjemalloc library. Benchmark showing the impact of memory allocators on MySQL performance can be found in this blogpost. (Ignacio Nin)
\r\n在去年 (2012 年) 七月 Percona 就有分析過 glibc 與 jemalloc 對效能的差異:「Impact of memory allocators on MySQL performance」,可以看到在 concurrent active connection 數量愈高,jemalloc 的優勢愈明顯。\r\n\r\n\"\"\r\n\r\n預設總算把 jemalloc 包進去了,等好久了...\r\n\r\n另外一個是「trx descriptors: MySQL performance improvements in Percona Server 5.5.30-30.2」,針對 transaction lock 問題的改善。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這邊比較時都用 jemalloc,是因為 Percona Server 5.5.30-30.2 是用 jemalloc,比較時必須盡可能維持一樣的條件。\r\n\r\n圖表可以看到 Percona 把 5.6 的改善方式再改善,然後 backport 回 5.5,使得沒有被飆為 read only transaction 的 query 也能受益。", + "title": "Percona Server 5.5.30-30.2 (based on MySQL 5.5.30) 的改善" + }, + { + "id": "3292", + "body": "Netcraft 從 2012 年 11 月開始偵測 OCSP 的 availability,然後發現各家 OCSP 的穩定性都不太好:「Certificate revocation and the performance of OCSP」。\r\n\r\nOCSP 是 Online Certificate Status Protocol 的縮寫,當 HTTPS 連線建立中,client 可以透過 OCSP 詢問這份 certificate 是否有效。這是 PKI 架構下的事後補救機制,因為已經發出去的簽名是無法被收回的,只好靠連線時再查詢。\r\n\r\n另外一個機制比較舊,叫 CRL (Certificate Revocation List),則是屬於清單類的機制,更新速度比 OCSP 慢。\r\n\r\n目前是以 OCSP 為主,而舊的平台 (就是 XP 上的 IE) 則只支援 CRL。\r\n\r\n\"\"\r\n\r\n可以看到 OCSP 檢查打開後對於速度的影響,有的影響很明顯,有的還好。而原文下面很多張 uptime 圖表也可以看出來各家 OCSP 的穩定性其實不怎樣,有些是直接上 Akamai 解決,有些是上 CloudFlare 解決 (然後遇到幾次 CloudFlare 爆炸就跟著炸 XD)\r\n\r\n目前瀏覽器大多都是 soft-fail,也就是查不到就當作 pass。照目前的穩定性要推動 hard-fail (查不到就 break) 應該是頗有難度...\r\n\r\n對於 HTTPS 速度很在意的人可以看一下內文的說明,可以挑 OCSP 速度比較快的幾家簽,對速度會有幫助...", + "title": "OCSP 是如何影響 HTTPS 的效率..." + }, + { + "id": "3293", + "body": "在 NSDI '13Facebook 的工程師有講到 Facebook 內的 Memcache 的架構:「Scaling Memcache at Facebook」,有影片可以看,也有 PDF 投影片可以下載。\r\n\r\n其實 2013 年這次的 conference 提到的架構以前就有提過了... 雖然一時間找不到之前提到架構的投影片,但還是可以配合著以前提到各種架構的文章與投影片看出 Facebook 怎麼利用 Memcache 架構 cache layer:\r\n\r\nFacebook 會這樣設計 Memcache 架構,跟 Facebook 用 PHP 的方式有關,是在 PHP 的限制下想辦法爭取效率的作法。\r\n\r\n不過這些投影片裡的資料畢竟是有年代了,現在的 memcached 改善了很多,跟當年的情況不太一樣,看之前的投影片最好知道當時 memcached 有哪些問題會比較能理解 Facebook 的工程師們想要解決什麼問題。", + "title": "Facebook 的 Memcache 架構..." + }, + { + "id": "3294", + "body": "IRC 上看到肥睡睡提到聯想想要買下 IBM 的低階伺服器部門:「Lenovo Said to Be in Talks to Buy IBM Server Business」。\r\n\r\n是多低階啊... 照新聞裡面提到的,看起來是整個 X 系列?hmmm...", + "title": "聯想希望買下 IBM 的低階伺服器部門..." + }, + { + "id": "3296", + "body": "Slashdot 上看到 Debian 7.0 預定在五月第一個週末出版:「Debian 7.0 ('Wheezy') Release Planned For 1st Weekend in May」,在「NewInWheezy」可以看到有哪些變動。\r\n\r\next4 變成 default filesystem,然後透過 FUSE 支援 exFAT。\r\n\r\n上次的 Debian 6.0 是 2011 年 2 月 6 日,兩年多了... 還是維持一貫的更新速度... XD", + "title": "Debian 7.0 預定在五月初出版..." + }, + { + "id": "3298", + "body": "jQuery 2.0 的消息:「jQuery 2.0 Released」。2.0 版與 1.9 的功能相同,只差在支援度:停止對 IE{6,7,8} 的維護及 workaround。\r\n\r\n如同半年前在「jQuery 2.0 將放棄 IE{6,7,8} 的事情...」講的,如果在 John Resig 還在的時候應該不會放棄 IE8...\r\n\r\n這是 2012 年七月的數字:\r\n\r\n\"\"\r\n\r\n這是 2013 年三月現在的數字:\r\n\r\n\"\"\r\n\r\n仍然是超過 10% 而且不太往下掉的數字...", + "title": "不支援 IE{6,7,8} 的 jQuery 2.0..." + }, + { + "id": "3299", + "body": "維基百科官方宣佈兩個條目最多的資料庫 (英文與德文) 已經從 MySQL (有 FB patch 的版本) 轉移到 MariaDB 5.5 了:「Wikipedia Adopts MariaDB」。\r\n\r\n維基百科的資料庫從 MySQL 4.0 升級到 MySQL 5.1 時花了不少功夫轉換 (可以想像出來,這兩個版本的差距...),然後這次再到這次的 MariaDB 5.5 就輕鬆不少。\r\n\r\n在文章內有提到因為維基百科是 read-heavy site,大多數前端的負荷都在 squid 層擋下來,實際到後端的量則是再透過 Redismemcached 打散負荷。不過即使做了這麼多層 cache,英文版資料庫在尖峰時間還是有 50k qps 的量在跑。\r\n\r\n尖峰時間這 50k qps 的量有 80% (也就是 40k qps) 是打散到兩台不同地點的 slave 上,平均的 query response time 是 0.2ms,95% 則是 50ms (好高),其他的 20% 是寫入 master 需求,或是因寫入 master 時需要一致性 (也就是要避免 replication lag 造成的問題)。\r\n\r\n這次升級到 MariaDB 5.5.30 是先準備一台新機器,然後在 load balancer 上換掉其中一台 slave (先建後拆),如果 MariaDB 真的有問題也可以馬上 rollback 回來。另外用 pt-query-digest 取樣分析 query 的狀況。\r\n\r\n這是成果:\r\n
For our most common query type, 95th percentile times over an 8-hour period dropped from 56ms to 43ms and the average from 15.4ms to 12.7ms. 50th percentile times remained a bit better with the 5.1-facebook build over the sample period, 0.185ms vs. 0.194ms. Many query types were 4-15% faster with MariaDB 5.5.30 under production load, a few were 5% slower, and nothing appeared aberrant beyond those bounds.
\r\n第一台觀察一陣子沒問題後,接下來一台一台換掉。然後發公告慶祝 :p", + "title": "維基百科英文版與德文版的資料庫 (條目最多的兩個語言) 從 MySQL 轉移到 MariaDB 了..." + }, + { + "id": "3302", + "body": "Netcraft 開始放 OCSP 的效能資訊了。由於有個排名在上面跑,這對於 SSL 供應商應該會有一定的壓力去改善服務品質:「OCSP Server Performance in March 2013」。\r\n\r\n前面十名幾乎都是 VerisignAkamai,而 Verisign 都是用 Citrix Netscaler。繼續觀察看看好了...", + "title": "Netcraft 放出 OCSP 伺服器效能資訊..." + }, + { + "id": "3303", + "body": "Oracle 的「MySQL :: MySQL 5.7 Reference Manual :: 1.4 What Is New in MySQL 5.7」列出 MySQL 5.7 預定會有的功能。由於還在發展階段,這頁還會繼續變動。\r\n\r\n針對 ALTER TABLE 有不少改善,以下的條件下 ALTER TABLE 將不會產生 temporily table (不會卡住):\r\n\r\n幾個常見的操作變得更簡單了,pt-online-schema-change 的功能會慢慢被整合回 MySQL。\r\n\r\n然後 InnoDB 要支援 spatial data types 了,不過 index 還沒支援... 不知道有沒有機會看到 :o", + "title": "MySQL 5.7..." + }, + { + "id": "3304", + "body": "TechCrunch 上看到這兩家合併的消息:「SkySQL Merges With MariaDB Creator Monty Program To Solidify Its Open Source Database Position」。\r\n\r\n原 SkySQL 頭接任 CEO,原 Monty Program Ab 頭接任 CTO。對 SkySQL 沒什麼好印象,這合併是要幹什麼...", + "title": "SkySQL 與 Monty Program Ab 合併..." + }, + { + "id": "3305", + "body": "昨天看到日本警察廳希望 ISP 阻擋 Tor 的新聞:「Japanese police ask ISPs to start blocking Tor」、「Japanese police target users of Tor anonymous network」。\r\n\r\n原始的報導是「警察庁有識者会議:サイト管理者が通信遮断を 匿名悪用で」,英文版是「NPA to urge ISP industry to help site administrators block users of hijacking software」。\r\n\r\n是日本... 這有點讓人出乎意料 XDDD", + "title": "日本警察廳希望 ISP 阻擋 Tor..." + }, + { + "id": "3306", + "body": "LGLP097QX1-SPA1 有被蘋果拿去當 iPad Retina 的顯示面板,但也有零賣... 於是就有人在 eBay 上面買了一張改裝:「Connecting an iPad retina LCD to a PC」。\r\n\r\n\"\"\r\n\r\n在 eBay 買 USD$55,再把其他零件成本一起算進來,全部也才 USD$70... 是個 2048x1536 的高解析度螢幕 XDDD\r\n\r\n下面這兩張的效果真不錯 XD\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "外接 iPad Retina 面板當螢幕用..." + }, + { + "id": "3307", + "body": "Open Query 的人給了一個很簡單的方式,只要下一個 SQL query 去查就可以知道有哪些 table 不符合 Galera Cluster 的條件:「Galera pre-deployment check」。\r\n\r\n就目前看到的說明以及 SQL query 算是 pre-check:回報 okay 不代表上了就沒問題,但如果有回報有問題,表示上了 Galera Cluster 後會遇到問題。\r\n\r\n這個檢查適用於 MySQL 以及目前常見的 MySQL fork (像是 MariaDBPercona Server)。", + "title": "判斷資料庫是否可以轉移到 Galera Cluster 上的方式..." + }, + { + "id": "3308", + "body": "在「mctop:memcache top」介紹過由 Etsy 所開發的 memcache top 工具 mctop。\r\n\r\n這套軟體用 Ruby 寫,其實就是個 sniffer + packet analyzer,但這套軟體有效能問題。在流量很高的時候無法處理所有封包,而變成 sampling 類型的監控。\r\n\r\nTumblr 用 C++ 新寫了一個版本,叫做 memkeys。依照軟體的說明,在 1Gbps 滿載時 mctop 約 50% 到 75% 的 packet drop (sampling rate 約 25% 到 50%),而 memkeys 只有 3% packet drop (sampling rate 約 97%):「Open Source - Memcache Top」。\r\n
This was originally inspired by mctop from etsy. I found that under load mctop would drop between 50 and 75 percent of packets. Under the same load memkeys will typically drop less than 3 percent of packets. This is on a machine saturating a 1Gb network link.
\r\n效能好不少 :p", + "title": "memkeys:用 C++ 寫的 mctop (memcache top)" + }, + { + "id": "3310", + "body": "看到 PGStorm 這個 PostgreSQL 上的惡搞套件,可以把本來 CPU 要做的事情丟到 GPU 上加速...\r\n\r\n\"\"\r\n\r\n不過例子很怪啊,不是用 R-tree index 解決的事情嗎?PostgreSQL 明明就有支援 R-tree index 啊?為什麼會要這樣設計,然後用 table scan?我再回去想想好了...", + "title": "在 PostgreSQL 上用 GPU 加速計算..." + }, + { + "id": "3311", + "body": "IOTA PLAYING CARDS BY JOE DOUCET:\r\n\r\n\"\"", + "title": "墨水很貴..." + }, + { + "id": "3312", + "body": "Heroku 今天宣佈公開測試 AWS 歐洲區服務:「Introducing the Europe Region, Now Available in Public Beta」。\r\n\r\nHeroku 是很老牌的 PaaS 服務了,不過一直只有美東第一區 (us-east-1),不知道是政策的問題,還是 infrastructure 真的綁的太死,反正就是不支援非美東區的服務...\r\n\r\n有歐洲區之後,其他地區應該就快了?", + "title": "Heroku 公開測試 AWS 歐洲區服務..." + }, + { + "id": "3315", + "body": "白宮在 Tumblr 上建立了官方帳號「The Official White House Tumblr」:「Launching the White House Tumblr」。\r\n\r\n最新的一張圖很有 Tumblr 的調調:\r\n\r\n\"\"\r\n\r\n等... 等下,這是官方帳號啊啊啊...", + "title": "白宮官方 Tumblr 帳號..." + }, + { + "id": "3317", + "body": "剛剛整理 mail alias 時翻到「MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS」,雖然是十五年前的文件 (1997 年訂的 RFC),但仍然是很有用的文件。\r\n\r\ninfo、marketing、sales、support 到現在還是很常被使用。abuse、noc、security 也是業界慣例,倒是表列的其他服務用的不多,或是服務逐漸消失 (ftp、news、usenet、uucp)。\r\n\r\n整理出來考古...", + "title": "常用郵件 alias..." + }, + { + "id": "3318", + "body": "在「How 10 Popular Websites Are Displayed in IE 5」這篇文章裡拉了十個熱門網站測試 IE5... XD\r\n\r\nAmazon 還不差:\r\n\r\n\"www.amazon.com\r\n\r\nBBCCNN 的網站勉強堪用:\r\n\r\n\"www.bbc.co.uk\r\n\r\n\"www.cnn.com\r\n\r\neBay 似乎還有最基本的樣子:\r\n\r\n\"www.ebay.com\r\n\r\nFacebook 抓登入頁這頁沒意義啊... XD\r\n\r\n\"www.facebook.com\r\n\r\nGoogle 的首頁當然也很正常...\r\n\r\n\"www.google.com\r\n\r\nStackOverflow 沒什麼問題:\r\n\r\n\"stackoverflow.com\r\n\r\nWikipedia 的排版幾乎沒亂掉,變得比較樸素一點而已:\r\n\r\n\"en.wikipedia.org\r\n\r\n接下來是比較慘的,WordPress.org 直接爛掉:\r\n\r\n\"wordpress.org\r\n\r\n而 Microsoft 自家 XDDDDDDDDDDD\r\n\r\n\"www.microsoft.com", + "title": "2013年,IE5 在熱門網站的效果..." + }, + { + "id": "3319", + "body": "文章的標題「Follow these basics when migrating to Percona XtraDB Cluster for MySQL」寫的是 Percona XtraDB Cluster,不過基本上就是在講 Galera Cluster。\r\n\r\n除了已知的 MyISAM 問題與 Primary Key 前提外,還有提到在從 MySQL server 轉移到 Galera Cluster 過程要怎麼做。\r\n\r\n在這種情況下,會另外準備 server 跑 Galera Cluster (採先建後拆的策略)。新的 cluster 裡其中有一台會以 slave 身份向原來的 MySQL server (master) 取得 binlog 更新。\r\n\r\nlog_slave_updates 就是用在這裡。設定後才能讓 Galera Cluster 內的 server 收到 binlog 後記錄下來,之後會複製到其他台。\r\n\r\n當初轉移的時候也有用到,後來因為都是新建就淡忘了,看到 Percona 寫的文件才突然想起來有這回事 XD", + "title": "Percona 提供的「Galera Cluster 前置作業」文件..." + }, + { + "id": "3320", + "body": "Update:一次只能選一個字體,找不到全選的地方,然後有一千多個... 還是去網路上找人家包好整包抓比較快。\r\n\r\n在 Google Developers Blog 上看到官方對於下載 Google Fonts 的建議方案:「Download Google fonts to your desktop」。\r\n\r\nMonotype 所推出的工具「SkyFonts」,支援 Windows 與 Mac 版。當 Google Fonts 有新的字型時,SkyFonts 會自動更新。不過當 Google Fonts 刪除時會發生什麼事情就不知道了...\r\n\r\n會需要 Microsoft .NET Framework 4.0 與 WindowsInstaller 4.5 (x86):\r\n\r\n\"\"\r\n\r\n這樣感覺有點肥... XD", + "title": "Google 官方提供 Google Fonts 下載的建議方案..." + }, + { + "id": "3322", + "body": "Amazon CloudFrontAmazon Route53 增加韓國的 PoP,公告在「Amazon CloudFront / Route 53 - New Edge Location in Seoul, Korea」這邊。\r\n\r\nCDN 這邊的價錢與 Hong Kong 以及 Singapore 相同,算 Price Class 200 等級。\r\n\r\n剛剛測過,目前的 routing 還算正常:台灣沒有 ISP 導到韓國 PoP,都還是丟到日本與香港的 PoP。\r\n\r\nCloudFront 用的機房代碼是 icn50,可以用 AWS 自家的 d36cz9buwru1tt.cloudfront.netd36cz9buwru1tt.icn50.cloudfront.net 測試品質。", + "title": "Amazon CloudFront 與 Route53 增加韓國的 PoP..." + }, + { + "id": "3323", + "body": "剛剛發現 htpasswd (Apache.htpasswd 檔案產生程式) 提供的 SHA-1 不會使用 salt,不過 MD5 格式會...\r\n\r\n以密碼「test」測試:\r\n
gslin@colo-p [~] [17:44/W7] touch test.txt\r\ngslin@colo-p [~] [17:44/W7] htpasswd -b -m test.txt test1 test\r\nAdding password for user test1\r\ngslin@colo-p [~] [17:44/W7] htpasswd -b -m test.txt test2 test\r\nAdding password for user test2\r\ngslin@colo-p [~] [17:44/W7] htpasswd -b -s test.txt test3 test\r\nAdding password for user test3\r\ngslin@colo-p [~] [17:44/W7] htpasswd -b -s test.txt test4 test\r\nAdding password for user test4
\r\n結果是:\r\n
test1:$apr1$GU6SyO0y$I.Ng9o4H8Tcje.M2A6ECb0\r\ntest2:$apr1$uqoX9b/x$7zGMAKqRjvoi6HHSKtaRO.\r\ntest3:{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=\r\ntest4:{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
\r\n依照說明,htpasswd 使用的 SHA 是移植自 Netscape server 的 LDAP Directory Interchange Format (ldif):\r\n
Use SHA encryption for passwords. Facilitates migration from/to Netscape servers using the LDAP Directory Interchange Format (ldif).
\r\n在安全疑慮 (Security Considerations) 上也有註明 htpasswd 使用的 SHA 是不帶 salt:\r\n
The SHA encryption format does not use salting: for a given password, there is only one encrypted representation.
\r\n現在密碼儲存應該是朝 bcryptPBKDF2 發展,參考依林姊姊的「請愛用 bcrypt 和 PBKDF2」,後者 PBKDF2 被用在 WPA2 上。", + "title": "htpasswd 的 SHA 不會帶 salt (seed)..." + }, + { + "id": "3324", + "body": "\"\"\r\n\r\n之前住在南港,所以新莊家裡只辦了 12M/4M 與 MOD,後來搬回新莊後想要升速到 50M/10M,但中華電信的客服告知升速後 MOD 的百元優惠無法沿用 (建議我跑一趟中華門市辦理),只好丟著先不管... 反正查資料、連回公司管事情也還夠用,唯一的缺點就是有時候要抓大檔案時慢了點 :o\r\n\r\n升速後重開數據機,然後測了速度發現的確是有到 20M 後,用了幾個小時還是沒啥感覺,大概要等抓大檔的時候才會有感覺吧?這樣約滿後要不要考慮降到 12M/3M 甚至 6M/2M 啊...", + "title": "HiNet 升速..." + }, + { + "id": "3325", + "body": "英國的 ISP BT Retail 開始測試 CGNAT (Carrier-grade NAT) 了:「BT Begins Customer Tests of Carrier Grade NAT」。\r\n\r\n空前但未必是絕後的大型 NAT 計畫,如果 CGNAT 可行,IPv6 會再往後延個好幾年吧...\r\n\r\nUpdate:被 comment 提醒跑去測試,發現中華的 3G 早就是了:(CGNAT 會用 100.64.0.0/10,範圍到 100.127.255.255)\r\n\r\n\"\"", + "title": "BT Retail 開始實際測試 CGNAT..." + }, + { + "id": "3326", + "body": "FacebookMySQL 老大 Mark Callaghan 把 MySQL 古董版本 4.0 拿出來跟現在的 5.6 比較:「MySQL 5.6 versus 4.0 for a read-only workload」。\r\n\r\n可以看到 MySQL 在 Read-Only 情況的效率進步 (Read-Only 的 lock issue 比較容易被克服,拿來比較會比較好看),這效能根本不能比 XDDD\r\n\r\n(要注意圖片的 y 軸不是 0 為起點)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "MySQL 4.0 與 MySQL 5.6 的比較..." + }, + { + "id": "3327", + "body": "其實就是 Anycast DNS service...\r\n\r\nCloudHarmony 在前鎮子發表了 DNS Hosting 的市場佔有率:「DNS Marketshare - Alexa 10,000 + Fortune 500 - May 2013」。\r\n\r\n比較有趣的是「Top 20 Alexa Site Changes - Apr 8 to May 6 2013」這段,可以看到很多公司跳去 Cotendo Advanced DNS... 不過我沒看懂從 Akamai 跳到 Cotendo Advanced DNS 是哪招,Contendo 不是被 Akamai 買掉了嗎 XD", + "title": "DNS Hosting 的市佔率..." + }, + { + "id": "3329", + "body": "Bram Moolenaar 發表了 Vim 7.4 的計畫:「Plans for Vim 7.4」,不過理由居然是因為 patch level 要到 999 了...:\r\n
We are now at patch level 7.3.931. In a few weeks we would reach 999. I don't want to find out what happens if we go over that, so it's time for Vim 7.4!
\r\n目前 patch level 是 931 (參考 ftp://ftp.vim.org/pub/vim/patches/7.3/),如果是這種理由的話,這幾個禮拜 Vim 7.4 就會發行了...\r\n\r\n剛剛才發現原來 Vim 用 Mercurial...", + "title": "Vim 7.4 準備中..." + }, + { + "id": "3330", + "body": "由白宮所下達的行政命令,命令全美政府機關在公開資訊時,必須提供電子格式,且可容易被程式讀取:「Executive Order -- Making Open and Machine Readable the New Default for Government Information」。\r\n\r\n重點是:資料不只要「公開」,還要「可被機器讀取」與「可被重複利用的授權」,並且要求政府單位強制提供。", + "title": "白宮下令政府機關 Open Data" + }, + { + "id": "3333", + "body": "Percona 宣佈 Percona XtraBackup 2.1.1 (第一個 2.1 GA 的版本):「Announcing Percona XtraBackup 2.1.1 GA」。\r\n\r\n這次的版本提供了 compact backup,備份的時候不要備份 secondary index (因為這可以再建出來),在很多 index 的表格會省下大量的空間 (以及備份的時間),不過還原的時候就得 rebuild,而非直接拿來用,算是讓操作者自己取捨...", + "title": "Percona XtraBackup 2.1.1" + }, + { + "id": "3334", + "body": "在 Slashdot 上看到「Brain Zapping Improves Math Ability」,裡面提到基礎數學能力不好的人可以透過電擊腦袋改善... XD\r\n\r\n原報導在「Trouble With Math? Maybe You Should Get Your Brain Zapped」這篇,論文資料在「Long-Term Enhancement of Brain Function and Cognition Using Cognitive Training and Brain Stimulation」(有 PDF 可以看)。\r\n\r\n同樣的研究在兩年半前就被提出來:「Brain Zaps Improve Math」,不過兩年半前的研究並沒有找出在現實生活中的改善幅度:\r\n
However, it wasn't clear how those basic numerical skills would translate to real-world math ability.
\r\n不過這也不是永久有效... 每半年被電一次嗎 XD\r\n
Now, a new study suggests that a gentle, painless electrical current applied to the brain can boost math performance for up to 6 months.
", + "title": "電擊腦袋加強數學能力..." + }, + { + "id": "3336", + "body": "Update:Tumblr 還沒有接受,目前是 Yahoo! 董事會已經同意這個金額,一切都還在談...\r\n\r\n新聞報導在這:「Yahoo! Board Said to Weigh Billion-Dollar Tumblr Deal」,Yahoo! 以十一億美元現金買下 Tumblr。\r\n\r\n能期待 Flickr 與 Tumblr 的結合嗎?\r\n\r\n不過如果按照 Yahoo! 的慣例,又會整合 Yahoo! 的帳號系統,好像就不怎麼好用了...", + "title": "Yahoo! 買下 Tumblr..." + }, + { + "id": "3338", + "body": "Netcraft 分析 Amazon Web Services 的規模,以及使用 AWS 的 Heroku:「Amazon Web Services' growth unrelenting」。\r\n\r\n分析雖然只看了 HTTP 與 HTTPS 的部份,但以 AWS 的特性,應該是不差太多,所以相對性的數字應該是有參考價值的...\r\n\r\n有這些資料後再來看:\r\n\r\n\"\"\r\n\r\n雖然寫 4 month,但實際上應該是三個月的成長量 (二月到五月)。\r\n\r\nus-east-1 仍然很強大 (還是沒看到 us-east-2 的消息),而 us-west-2 上個月突然有大戶進駐?跟東京與新加坡同個等級了...\r\n\r\n另外 CloudFrontRoute 53 的成長數量也很耀眼,都是網站上設定好就可以馬上用,不需要找業務...", + "title": "AWS 的規模..." + }, + { + "id": "3339", + "body": "前情提要:「Vim 7.4 準備中...」,本來以為會在 1000 出現前出 Vim 7.4。\r\n\r\n結果剛剛在 Twitter 上看到「http://ftp.vim.org/pub/vim/patches/7.3/7.3.1000」出現,這是哪招... XD\r\n\r\nBram Moolenaar 該不會自暴自棄決定等 9999 的時候再出 Vim 7.4 吧... XD", + "title": "結果 Vim 7.3 出 patch level 1000 了..." + }, + { + "id": "3341", + "body": "在 Hacker News 熱門文章看到的連結。\r\n\r\n方法是通用的,並不限於 PHPMySQL (不過 PHP 的條件相對容易搜 XDDD),連結是到第三頁:「Search · extension:php mysql_query $_GET」。\r\n\r\n可以看到很多 $_GET 的參數直接被傳入 mysql_query() 內...", + "title": "利用搜尋引擎找出 GitHub 上可以被 SQL injection 的程式..." + }, + { + "id": "3342", + "body": "在「IBM Acquiring SoftLayer to Boost its SmartCloud」這邊看到 IBM 已經跟 SoftLayer 達成協議了,依照法令公開的消息可以在 IBM 的官方網站上翻到:「IBM to Acquire SoftLayer to Accelerate Adoption of Cloud Computing in the Enterprise」。\r\n\r\nSoftLayer 除了 Hosting 業務以外,也還包括 CDN 業務... 接下來會怎麼玩啊?", + "title": "IBM 買 SoftLayer..." + }, + { + "id": "3343", + "body": "Percona 把常見的 MySQL High Availability 選擇整理後發表成 Webinar,投影片在這裡可以看到 (以及下載):「Choosing a MySQL High Availability Solution」。\r\n\r\n沒有太多新的東西,主要還是再次描述 MySQL HA 這塊目前沒有萬靈丹,常見的這幾個方案各有自己的優缺點,會依照環境與需求而產生不同的選擇。裡面連 manual failover + 24x7 NOC 都出現了... XD\r\n\r\n對於不清楚有哪些 HA 架構的人,可以透過這份投影片先抓出關鍵字。對於聽過一堆 HA 架構的人,想要複習各種方式的優缺點,也可以花時間看看。至於想要找萬靈丹的人就不用花時間了,目前沒這東西 :p", + "title": "MySQL HA 的選擇..." + }, + { + "id": "3346", + "body": "MyISAM 在讀取時不會有其他人可以寫入,所以 COUNT(*) 很容易被處理。而 InnoDB 的 COUNT(*) 在不同的 transaction 裡可能會不一樣,如果硬要處理的話會變得複雜,所以目前 InnoDB 的作法是 scan 一次 (出自「Limits on InnoDB Tables」):\r\n
InnoDB does not keep an internal count of rows in a table because concurrent transactions might \"see\" different numbers of rows at the same time. To process a SELECT COUNT(*) FROM t statement, InnoDB scans an index of the table, which takes some time if the index is not entirely in the buffer pool. If your table does not change often, using the MySQL query cache is a good solution. To get a fast count, you have to use a counter table you create yourself and let your application update it according to the inserts and deletes it does. If an approximate row count is sufficient, SHOW TABLE STATUS can be used. See Section 14.3.14.1, \"InnoDB Performance Tuning Tips\".
\r\n在「Easy SELECT COUNT(*) with split()」這篇提到 InnoDB 下 COUNT(*) 這件事情,當你不需要絕對精確的值時,可以利用 INFORMATION_SCHEMA.TABLES 或是 SHOW TABLE STATUS 的資訊來判斷。", + "title": "在 InnoDB 下的 COUNT(*)..." + }, + { + "id": "3348", + "body": "以往 CloudFront 只能用 *.cloudfront.net 當作 SSL domain,但在今天公告的「Custom SSL Domain Names and Root Domain Hosting for Amazon CloudFront」這篇說明內,宣佈可以上傳自己的 SSL certificate 使用了。\r\n\r\n目前的價錢是 USD$600/month,不過是以小時計算。即使拋開錢的問題,在 CloudFront 已經支援 SSL 的前提下 (而且因為是 *.cloudfront.net,理論上是 cookie-free domain),技術面上暫時想不到什麼好處... 在 DNS 端自己混合多家 CDN 是個可能的方向?", + "title": "AWS CloudFront 可以用自己的 SSL Certificate 了..." + }, + { + "id": "3349", + "body": "在「The Best Alternatives to Google Alerts」看到的技巧,主要是看到 Bing 可以輸出 RSS,目前看到的格式是 RSS 2.0。\r\n\r\n格式是:http://www.bing.com/search?q=keyword&format=rss,把 keyword 換掉就可以了。", + "title": "Google Alerts 的替代品:Bing 的 RSS 輸出" + }, + { + "id": "3350", + "body": "在 Slashdot 上看到 OWASP 給出 2013 年的網站安全威脅 Top 10 名單:「OWASP Top 10 2013 Released」。\r\n\r\n一如往常,Slashdot 的第一個 comment 還是很經典 XDDD\r\n
The offered list of vulnerabilities is in a pdf.
\r\n這... XD\r\n\r\n在 Wiki 上有一份非 PDF 的版本可以看:「Category:OWASP Top Ten Project」,可以跟「Rails' Insecure Defaults」(副標題「13 Security Gotchas You Should Know About」) 一起看 (不是看 Rails 的問題,是看有哪些攻擊技巧)。", + "title": "OWASP's Top 10,2013 版" + }, + { + "id": "3351", + "body": "一樣是在 Slashdot 看到的消息:「Arnold Schwarzenegger Will Be Back As the Terminator」。\r\n\r\n當完八年州長後跑回來拍戲... XD (身材應該要重養?)", + "title": "阿諾·史瓦辛格將再次擔任《魔鬼終結者》系列的主角..." + }, + { + "id": "3355", + "body": "PHP 5.5.0 釋出:「PHP 5.5.0 released.」,第一個 PHP 5.5 的版本。\r\n\r\n多了 generator function 可以用 (透過 yield 實做):「Generators overview」。try-catch 多了 finally 可以用:「Exceptions」。\r\n\r\n然後是 OPcache,不過這東西還是過兩三個版本再開始測試,沒時間在前幾個版本當白老鼠...", + "title": "PHP 5.5.0" + }, + { + "id": "3357", + "body": "在使用 Galera Cluster 時還是可以架設一般的 slave server (Percona XtraDB Cluster 則是 Percona 對 Galera Cluster 的封裝),像是這樣的架構:\r\n\r\n\"\"\r\n\r\n其中 node{1,2} 為 cluster,node3 則是傳統的 async replication,來源的 master 為 node1。\r\n\r\n\"\"\r\n\r\n當 node1 掛掉時,我們沒辦法自動將 node3 的 master 從 node1 改指到 node2,因為 binlog 的位置不一定正確。\r\n\r\n在「Changing an async slave of a PXC cluster to a new Master」則是提供如何人工用最簡單的方式介入。\r\n\r\n主要是靠 Galera Cluster 會在 binlog 內寫入 Xid 這個值,這個值可以在 global status 內的 wsrep_last_committed 看到。因為這個值在全 cluster 都是同步的,就可以拿來人工尋找 binlog 位置後手動下 CHANGE MASTER TO,而不用 pt-table-sync 同步修老半天...\r\n\r\n而且邏輯被整理出來以後,就有機會寫成程式自動化... 這算是一個不錯的開頭 :p", + "title": "在 Percona XtraDB Cluster 裡使用 async replication 時人工 failover 的方式..." + }, + { + "id": "3359", + "body": "在「2 new features added to Percona XtraDB Cluster (PXC) since 5.5.31」看到 Percona Xtrabackup 引入新功能後,在 Percona XtraDB Cluster 就能使用這些新功能加快初始化的速度。\r\n\r\n首先是 bootstrap-pxc 這個參數:\r\n
# use this...\r\n/etc/init.d/mysql bootstrap-pxc\r\n# or...\r\nservice mysql bootstrap-pxc
\r\n當第一次啟動時需要對 my.cnf 的 hack (啟動完成後就可以改回來) 現在可以在參數直接處理。\r\n\r\n另外是對 xbstream 的支援,這聽一陣子了,這邊就不講怎麼用了,原文講得很清楚。不過目前測出來的效果不怎樣啊:\r\n\r\n\"\"\r\n\r\n文章作者是說對於小資料沒差,晚點再來看看有沒有對大資料的 benchmark...", + "title": "配合 Percona Xtrabackup 的新功能以及對 Percona XtraDB Cluster 初始化的速度..." + }, + { + "id": "3360", + "body": "\r\n寫這篇順便測試 MathJax 的效果...\r\n\r\n因為 NSA 的惡搞,這陣子 PFS (Perfect Forward Secrecy) 突然被拿出來討論:\r\n\r\n在講 PFS 前,得先講 Diffie-Hellman key exchange (D-H)。\r\n\r\nD-H 是利用這個等式:\r\n
$$(g^a)^b \\equiv (g^b)^a \\mod p$$
\r\n其中 \\(p\\) 是大質數,而 \\(g\\) 是 \\(p\\) 的 primitive root (即不存在任何 \\(n < p\\) 可以使得 \\(g^n \\equiv 1 \\mod p\\))。\r\n\r\n而因為當 \\(p\\) 夠大時,要從 \\(g^a \\mod p\\) 計算 \\(a\\) 就是離散對數問題,而離散對數問題是已知沒有有效率計算的問題,所以我們會假定當 \\(p\\) 夠大時,傳輸 \\(g^a \\mod p\\) 是無法用合理資源計算得知 \\(a\\)。\r\n\r\n因此,Alice 與 Bob 就可以產生自己的 private secret \\(a\\) (Alice) 與 \\(b\\) (Bob),計算出 \\(g^a\\) 與 \\(g^b\\) 後公開傳輸給對方,當 Bob 收到 Alice 提供的 \\(g^a\\) 時就計算 \\((g^a)^b \\equiv g^{ab} \\mod n\\),而 Alice 收到 Bob 提供的 \\(g^b\\) 後可以計算 \\((g^b)^a \\equiv g^{ba} \\equiv g^{ab} \\mod n\\)。\r\n\r\n而攻擊者只拿到公開的 \\(g^a\\) 與 \\(g^b\\) 以及 \\(g\\),無法計算出 \\(g^{ab}\\),於是就雙方就建立一組 shared secret 了。\r\n\r\n回到 SSL/TLS 的問題上,由於 RSA 加解密的速度並不快,所以 SSL/TLS 是在 RSA 的保護下交換 RC4 或是 AES 所需要的金鑰 (key)。\r\n\r\n交換 key 這件事情除了可以直接交換以外,還可以利用 D-H 交換。\r\n\r\nD-H 交換可以確保當 RSA key 被破解時還要再破每個 session 的 D-H 所產生出來的 key,而直接交換的話,只要破一把 RSA key 就可以解出所有 traffic 了。\r\n\r\n而 PFS 會被提出來,是因為目前消息指出 NSA 其實有在錄下 SSL/TLS 流量,等哪天有機會取得 RSA key 的時候 (無論是硬解,或是其他方式),就有機會能夠一次破一卡車資料... (因為目前大部分的 SSL/TLS 流量都沒有上 PFS)\r\n\r\n雖然 PFS 會慢一些,不過已經確認 NSA 打算來搞了,所以還是乖乖加上去吧... @_@", + "title": "SSL/TLS 的 Perfect Forward Secrecy..." + }, + { + "id": "3363", + "body": "Google Reader 剩下最後兩天,還是要面對現實...\r\n\r\n看了一下 Google Reader,裡面有 1100 個 item,剛好趁著這次 shutdown,又到了該砍掉重練的階段了...\r\n\r\n免費的服務中,Feedly 會把非 focus 的文章縮起來,而 Digg Reader 找不到 Unread 的地方。go read 找不到地方下 Tag 分類,而 AOL Reader 則是登不進去。\r\n\r\n付費的服務中,Feedbin (USD$2/month 或 USD$20/year) 的 preload 做的不好,所以人讀文章的速度沒有 Google Reader 快,NewsBlur (USD$24/year) 則是把功能做的極為花俏,第一眼看下去還不知道要怎麼加 feed...\r\n\r\n反正這陣子就四處逃竄吧... 這陣子應該會有很多新的服務跑出來 :o", + "title": "找 Google Reader 替代品..." + }, + { + "id": "3364", + "body": "剛剛電視上看到 HBO 播出電影《全民公敵》(Enemy of the State),這時間點播出這部在 1999 年發行的片子,擺明是衝著這陣子在美國鬧得很兇的 PRISM (稜鏡計畫) 而來...\r\n\r\n電影全民公敵中與現實中的 PRISM 同樣都是 NSA 主導,不過因為硬體與演算法的進步,當年難以達成的技術,現在都已經做的到了...", + "title": "剛好在 HBO 上看到《全民公敵》(Enemy of the State)..." + }, + { + "id": "3365", + "body": "以往升級 Perl 後要跑 perl-after-upgrade -f,把本來在 /usr/local/lib/perl/5.12.4 的東西搬到 /usr/local/lib/perl/5.12.5 下,然後還是要到目錄下確認有沒有東西遺漏,漏掉的還是得用 portmaster 跑一次...\r\n\r\n現在則是改成 /usr/local/lib/perl/5.12 這樣的路徑,把最後的 minor version 拿掉,至少同個主版本升級時 (5.12.x 之間) 比較不會痛了...\r\n\r\n不過順便趁這次換成 5.16 好了,5.12 應該也快過保了...", + "title": "FreeBSD 上 Perl 升級的問題..." + }, + { + "id": "3366", + "body": "目前多測了 Feedly,發現不容易知道現在 focus 是在哪個 entry 上,所以就翻了翻 CSS,決定用 Stylish 加上樣式 (Chrome 或是 Firefox 都有套件可以用):\r\n
#timeline .u100Frame.selectedEntry\r\n{\r\n    border: 2px solid black;\r\n}
\r\n用黑粗框表示,這樣好一些...\r\n\r\n另外當你看很多 feed 的時候,你希望知道這篇是誰寫的,我把 metadata 的部份變成粗體,另外 blog 的名稱變成暗藍色:\r\n
.entryHeader .metadata\r\n{\r\n    font-weight: bold;\r\n}\r\n\r\n.metadata a.sourceTitle\r\n{\r\n    color: darkblue;\r\n}
\r\n用一陣子,看看這樣有沒有比較好吧...\r\n\r\nUpdate:睡醒發現 selectedEntry 又改結構,只好補刀 -_-", + "title": "Feedly 的 CSS..." + }, + { + "id": "3367", + "body": "前陣子看到「下厨房6月26日数据丢失事故总结」這篇文章,本來也就看看就算了... 結果剛剛在 Facebook 上看到有人說有神回覆... 趕快回去看 XDDD\r\n\r\n\"\"\r\n\r\n這回覆... 太神啦 XDDD\r\n\r\n這資料到底能不能用呢... XDDD", + "title": "大陸網站「下廚房」對資料庫事故文章的神回覆..." + }, + { + "id": "3368", + "body": "GitHub 前幾天推出 Releases 功能,把發佈功能做出來了:「Release Your Software」。\r\n\r\nReleases 整合 Git 的 tag (可以選既有的,也可以建立新的):\r\n\r\n\"\"\r\n\r\n看起來是之前 download 功能的變化,不過 download 功能有被惡搞的機會,Releases 比較不會發生...", + "title": "GitHub 推出 Releases 功能..." + }, + { + "id": "3370", + "body": "翻文章時翻到的:「Dashboards」。\r\n\r\n在 Dashboards 裡的數據是出自 14 天內有連到 Google Play Store 上面的數據:\r\n
Beginning in April, 2013, these charts are now built using data collected from each device when the user visits the Google Play Store.
\r\n這個數據比實際出貨的版本有意義,因為這代表了會用 Store 的人的比率。而使用者不會連到 Store 的話,開發者也比較不用管支援度的問題...\r\n\r\n\"\"\r\n\r\n2.3.3 (API 10) 之後累積起來是 95.1%,然後幾乎所有機器都支援 OpenGL ES 2...", + "title": "Google 提供的 Android Dashboards..." + }, + { + "id": "3372", + "body": "在 Slashdot 上看到 Oracle 決定將 BerkeleyDB 的授權由 Sleepycat License (接近於 BSD license) 換成 AGPL:「Oracle Quietly Switches BerkeleyDB To AGPL」。\r\n\r\nOracle 這招好厲害啊,用 GNU 的大旗廢掉 BerkeleyDB...", + "title": "BerkeleyDB 將換成 AGPL..." + }, + { + "id": "3375", + "body": "還是換回 Google Search 了...\r\n\r\n因為最近 NSA 事件愈來愈精彩的關係,有不少人號召跳去 DuckDuckGo 就跑去跟風了,主要是看看 search quality 夠不夠用... 用了一個禮拜後發現有兩個主要的問題:\r\n\r\n所以還是換回 Google 了...\r\n\r\n可以看出 DuckDuckGo 成長的速度愈來愈快了:(出自「DuckDuckGo Direct queries per day (28d avg)」)\r\n\r\n\"\"", + "title": "DuckDuckGo 用一個禮拜後..." + }, + { + "id": "3377", + "body": "官方文件參考 MySQL 5.5 的「Restrictions on Subqueries」這篇。\r\n\r\n直接拿官方的範例:\r\n
SELECT * FROM t1 WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1);
\r\n這會出現 subquery 不支援 LIMIT 的錯誤訊息:\r\n
ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
\r\n如果試著用 Google 找解法,會找到用 temporary table 解決的方法:\r\n
SELECT * FROM t1 WHERE s1 IN (SELECT * FROM (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1) AS t);
\r\n這個方法是可以用啦,但還是讓人很囧啊 XD\r\n\r\n另外一個 subquery 對效能的影響是 SQL-92 定義 WHERE 裡 subquery 的行為:(參考 sql1992.txt)\r\n
2) Each <subquery> in the <search condition> is effectively executed for each row of T and the results used in the application of the <search condition> to the given row of T. If any executed <subquery> contains an outer reference to a column of T, then the reference is to the value of that column in the given row of T.
\r\n因為如此,並不是想像中「先算完 subquery 再拿結果算前面」...\r\n\r\n在「MySQL Limitations Part 3: Subqueries」也有一些討論可以看 (在 comment 裡),雖然文章有點舊了... 把這部份 subquery 的結果自己拉出來組 SQL query 可能會比較快。", + "title": "MySQL subquery 的限制..." + }, + { + "id": "3378", + "body": "pathogen.vimgit submodule 用到有點煩了... 改用 Vundle 避開 pathogen.vim 使用 git submodule 帶來的維護問題...\r\n\r\nVundle 的安裝方法很簡單 (網路上其實也有不少說明了),先 clone 或是 submodule add 下來:\r\n
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle\r\n$ git submodule add https://github.com/gmarik/vundle.git .vim/bundle/vundle
\r\n然後在 .vimrc 內加入:\r\n
filetype off\r\nset rtp+=~/.vim/bundle/vundle/\r\ncall vundle#rc()\r\nBundle 'gmarik/vundle'\r\nBundle '其他的 github 位置...'\r\nfiletype plugin indent on
\r\n接下來開 vim,跑 :BundleInstall 他就會自己安裝其他的套件了。要增加套件就加到 .vimrc 內再跑一次 :BundleInstall 就可以了。", + "title": "從 pathogen.vim 換成 Vundle..." + }, + { + "id": "3380", + "body": "其實就是在 Ubuntu 下塞兩個檔案進系統而已,一個是字型檔 PowerlineSymbols.otf,另外一個是設定檔 10-powerline-symbols.conf。\r\n\r\n主要還是練習打包 .deb 並且使用 Launchpad 放自己包的 package,十多年前也差不多是這樣開始玩 FreeBSDsend-pr 累積經驗...", + "title": "把 Powerline 用到的字型包成 ppa..." + }, + { + "id": "3383", + "body": "之前是在高見龍的文章「爽爽快快學Vim(3) - Vim Plugins」裡看到這個 plugin,高見龍的文章所附上的連結就已經是 ap 版了,不過前幾天把 vim 的套件管理系統換成 Vundle 後 (參考「從 pathogen.vim 換成 Vundle...」這篇),我是用 Google 把之前裝過的套件一個一個找回來,就裝到 skammer 的版本了。\r\n\r\nskammer 的版本問題在「Very slow.」可以看到,懶的看原因的人可以直接看 comment 裡 ap 給的 fork。\r\n\r\n用 Vundle 的人先改掉 .vimrc 的內容,然後重新啟動 vim 後跑 :BundleClean:BundleInstall 就會裝新版了。", + "title": "用 ap 版本的 vim-css-color" + }, + { + "id": "3385", + "body": "看到「MySQL Webinar: Advanced Query Tuning」這個 Webinar,要講的主題看起來不賴:\r\n
1. GROUP BY and ORDER BY optimization\r\n2. MySQL temporary tables and filesort\r\n3. Using covered indexes to optimize your queries\r\n4. Loose and tight index scans in MySQL
\r\n事後花時間來看投影片應該就夠了 :p", + "title": "Percona 要講進階的 MySQL Query Tuning..." + }, + { + "id": "3386", + "body": "很久前 (突然找到我在 2006 的文章) 就說 Alexa 只是個參考用的工具... (參考「Search Results for: alexa」)\r\n\r\n如果要看結論的人請直接跳到文章尾部,中間是說明發現的過程。\r\n\r\n昨天 (星期五) 的時候跑去找肥睡睡餵食「摩斯吃到飽」,然後 xdite 也一起亂入,剛好聊到兩件事情。\r\n\r\n第一件事情是要幫友站 Logdown 測試流量,講了一堆嘴砲方式... (惡搞的方式先拿掉了)\r\n\r\n第二件事情是前天 (星期四) 的時候我發現前公司 pixnet.net 的 Alexa 從六月開始排名突然爆增,大約從全球 600 名跳到 120 名,台灣排名的部份居然超越了 YouTube (目前 PIXNET 在第五名,YouTube 在第六名),但到達率、PV、停留時間都沒有大的變化,就問問 xdite 與肥睡睡有沒有什麼想法,是不是最近有上什麼功能是我沒注意到的 XD\r\n\r\n不過餵食席間沒有討論出結果來,吃飽後閃人了... (我不確定肥睡睡有沒有吃飽啦,不過我是不怎麼餓...)\r\n\r\n\"\"\r\n\r\n回到家後想說來研究 Logdown 使用的服務,asset 什麼的就先不管好了,到是有一段 code 我之前沒遇過:\r\n\r\nUpdate:結果回到家後研究 Logdown 的服務,就看到 xdite 把 Alexa 的 js 丟上去在玩了:(剛好 xdite 也想到就同時在測了...)\r\n\r\n<!-- Start Alexa Certify Javascript -->\r\n<script type=\"text/javascript\">\r\n_atrk_opts = { atrk_acct:\"KOI0g1aYS500G0\", domain:\"logdown.com\",dynamic: true};\r\n(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = \"https://d31qbv1cthcecs.cloudfront.net/atrk.js\"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();\r\n</script>\r\n<noscript><img src=\"https://d5nxst8fruw4z.cloudfront.net/atrk.gif?account=KOI0g1aYS500G0\" style=\"display:none\" height=\"1\" width=\"1\" alt=\"\" /></noscript>\r\n<!-- End Alexa Certify Javascript -->\r\n\r\n一開始眼殘沒看到 Alexa Certify Javascript 這段文字,第一個想法是「xdite 你沒事自己寫個 analytics service 幹嘛啊,嫌時間太多嗎」,後來轉念一想「啊啊這會不會是什麼服務?」。\r\n\r\n拿 atrk.js 當關鍵字一查就發現是 Alexa 的服務,再回頭來看就發現自己眼殘了... XD\r\n\r\n嘲笑自己三秒後就突然想到「咦,餵食時提到的 Alexa 排名會不會跟這個有關?」\r\n\r\n接下來就是查證的時間了,這時候 Internet Archive Wayback Machine 拿來考察變得超好用:「http://web.archive.org/web/*/http://www.pixnet.net/」,6/9 的 snapshot 時首頁還沒有 atrk.js,6/20 就有了:\r\n\r\ngslin@GSLIN-DESKTOP [~] [12:02/W3] curl -s http://web.archive.org/web/20130609121320/http://www.pixnet.net/ | g atrk.js\r\ngslin@GSLIN-DESKTOP [~] [12:02/W3] curl -s http://web.archive.org/web/20130620181016/http://www.pixnet.net/ | g atrk.js\r\n(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = \"https://d31qbv1cthcecs.cloudfront.net/atrk.js\"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();\r\n\r\n另外兩個也有類似現象的網站,分別是 mobile01.com:\r\n\r\n\"\"\r\n\r\n以「http://web.archive.org/web/*/http://www.mobile01.com/」的資料來看,2012/12/27 的 snapshot 還沒加入 atrk.js,2013/1/15 的則加入了:\r\n\r\ngslin@GSLIN-DESKTOP [~] [12:06/W3] curl -s http://web.archive.org/web/20121227040802/http://www.mobile01.com/ | g atrk.js\r\ngslin@GSLIN-DESKTOP [~] [12:06/W3] curl -s http://web.archive.org/web/20130115110655/http://www.mobile01.com/ | g atrk.js\r\n<script type=\"text/javascript\" src=\"/web/20130115110655js_/https://d31qbv1cthcecs.cloudfront.net/atrk.js\"></script>\r\n\r\n以及 ck101.com:\r\n\r\n\"\"\r\n\r\n以「http://web.archive.org/web/*/http://ck101.com/」的資料來看,4/24 還沒有 atrk.js,4/30 的加入了:\r\n\r\ngslin@GSLIN-DESKTOP [~] [12:07/W3] curl -s http://web.archive.org/web/20130423092213/http://ck101.com/forum.php | g atrk.js\r\ngslin@GSLIN-DESKTOP [~] [12:08/W3] curl -s http://web.archive.org/web/20130504162245/http://www.ck101.com/forum.php | g atrk.js\r\n(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = \"/web/20130504162245/https://d31qbv1cthcecs.cloudfront.net/atrk.js\"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();\r\n\r\n所以結論就很簡單啦,如果 Alexa 排名對你是很重要的 KPI,Alexa Internet - Get Certified Site Metrics 趕快付錢加入試看看吧!XDDD\r\n\r\n可以看到有三個不同的版本,如果要測試的話 USD$9.99/month 的第一個月還免費,可以先測試看看?(不知道是不是要 USD$149/month 的才有效...)\r\n\r\n\"\"\r\n\r\nPS:以後看 Alexa 排名還得參考他有沒有掛這東西,好累...", + "title": "快速衝高 Alexa 排名的方法" + }, + { + "id": "3389", + "body": "Percona 的 blog 上跑出一篇「What kind of queries are bad for MySQL?」,分析哪些 SQL query 對 MySQL 的效能不好...\r\n\r\n內容相當偏激,然後在 comment 引起討論... (文章作者反而就跑去休息了)\r\n\r\n舉例來說,他認為只要有 JOIN 就算是 bad query。作者舉了這樣的 SQL query 為例:\r\n\r\nSELECT t2.value FROM t2 JOIN t1 ON (t1.id=t2.tid) WHERE t1.orderdate=NOW()\r\n\r\n應該要被展開成:\r\n\r\nSELECT t2.value FROM t2 WHERE t2.orderdate=NOW()\r\n\r\n看得出來有重度 denormalize 與 cache 症狀... XD", + "title": "MySQL 的 SQL Query..." + }, + { + "id": "3392", + "body": "前幾天 Percona 寫了篇文章說明自家專有的 Crash-resistant replication (用在 Percona Server 5.1 與 5.5):「Crash-resistant replication: How to avoid MySQL replication errors」。\r\n\r\n這是 async replication 用在 slave server crash 時的保護機制。\r\n\r\n當 slave 更新資料後,會更新 relay log 寫下「目前 apply 到哪個位置」(預設值是 relay-log.info),也就可以依照這個資訊計算出 replication lag 的時間。在 mytop 裡看到的 Delay 欄位就是由此算出來的。\r\n\r\n但當 MySQL 寫入後,但 relay-log.info 還沒更新時當掉,會造成下次啟動時重複 apply 同一筆資料。\r\n\r\n而 Crash-resistant replication 就是把這個資訊寫到 transaction 內,避免這個問題。\r\n\r\n也因此這個功能只有 InnoDB 類的 Engine 才有用,MyISAM 仍然是不受 Crash-resistant replication 保護的。\r\n\r\n要打開這個功能也很簡單,只要 my.cnf 設起來就好了,設定說明可以參考原文。", + "title": "Percona 的 Crash-resistant replication" + }, + { + "id": "3393", + "body": "CSS Zen Garden 是相當經典的站:「CSS Zen Garden: The Beauty in CSS Design」,在 Hacker News Daily 上看到復活了 :p\r\n\r\n可以用手機開看看,另外也可以試著把瀏覽器大小切到 1024x768 看看 :p", + "title": "CSS Zen Garden 復活..." + }, + { + "id": "3394", + "body": "PHP 5.5 計畫把 OPcache 變成內建功能,其他版本可以透過 PECLZendOpcache 裝進去用。\r\n\r\n先把 blog 換掉,用預設值跑看看效果如何好了... 如果沒什麼問題的話再來調整效能 :o", + "title": "把 APC 換成 Zend 的 OPcache 測試..." + }, + { + "id": "3395", + "body": "Linode 決定調大空間:「Storage Space Doubled!」。\r\n\r\n所以現在 USD$20/month 就可以在東京有 1GB RAM、48GB storage 以及 2TB 的 outbound bandwidth 了。如同往常 (之前從 20GB 變成 24GB),關機後直接 resize,重開後就生效了 :p", + "title": "Linode 調大儲存空間..." + }, + { + "id": "3396", + "body": "在 Debian 上只有 mod_fcgid 可以用,沒有 mod_fastcgi,兩者設定方式不一樣,花了一些時間測試...\r\n\r\n最後是參考「Debian, apache2, virtualhosts, FastCGI and PHP5」這篇文章的說明,先弄到「會動」的情況。\r\n\r\n首先是把該裝的裝起來 (apache2-mpm-workerlibapache2-mod-fcgidphp5-cgi),接下來在 /etc/apache2/sites-available/default 裡面修改兩個部份。\r\n\r\n首先是針對 /var/wwwOptions 加上 ExecCGI。另外找個地方加上:\r\n\r\nAddHandler fcgid-script .php\r\nFCGIWrapper /usr/lib/cgi-bin/php5 .php\r\n\r\n然後重跑 apache 就會動了,放個 phpinfo(); 的程式到 /var/www 下測試就可以確認了。", + "title": "Debian 上 Apache 2.2 設定 FastCGI 模式 PHP 的方式..." + }, + { + "id": "3399", + "body": "先前在「Percona 要講進階的 MySQL Query Tuning...」提到 Percona 所辦的 Webniar「Advanced MySQL Query Tuning」的投影片放出來了:「Advanced MySQL Query Tuning」。\r\n\r\n這份內容需要 B+Tree 操作的背景知識才能了解。裡面講了很多 GROUP BYORDER BY 混用時的 index 技巧,以及各種奇怪的 hack 方式。\r\n\r\n內容很有用,能吸收多少就看個人造化 :p", + "title": "Percona 的「Advanced MySQL Query Tuning」..." + }, + { + "id": "3401", + "body": "Bootstrap 3 RC1 放出來了。\r\n\r\n官方在文件裡推薦使用 NetDNA 提供的 CDN Hosting,不過 NetDNA 給的點沒有很好,台灣與日本都會到美西。如果很要求速度的話 (尤其是第一次沒有 cache 時瀏覽的速度),還是放一份到自家的 server 或是自家的 CDN Hosting 上吧?\r\n\r\n最大的改變在於扁平化,等一下就來測試看看感覺如何...", + "title": "Bootstrap 3 RC1" + }, + { + "id": "3402", + "body": "純粹是筆記...\r\n\r\n對於架設 server 的文件可以參考 Ubuntu 這份「PostgreSQL - Community Ubuntu Documentation」,雖然 Debian 官方也有一份「PostgreSql - Debian Wiki」,不過沒講到遠端這塊...\r\n\r\n設定的部份:\r\n\r\n然後把 firewall 打開,接下來就可以從其他台連進去了。", + "title": "PostgreSQL 筆記..." + }, + { + "id": "3403", + "body": "官方的公告在「Amazon CloudFront & Route 53 Expand to India」這篇,一次增加兩個點,孟買 (Mumbai) 與清奈 (Chennai)。\r\n\r\nCDN 頻寬的部份比香港、新加坡、南韓還低... 被放在 Price Class All 與 Price Class 200。所以量很大?還是因為其他原因?澳洲也才放一個雪梨...\r\n\r\n咦,俄羅斯好像一直被遺忘...", + "title": "AWS CloudFront 與 Route53 增加印度機房..." + }, + { + "id": "3404", + "body": "之前不知道從哪邊學到錯的東西... 實驗後發現搞錯了。對 MySQL 的 VARCHAR 欄位下 index 所實際佔用的空間仍是實際大小,而非最大長度。\r\n\r\n測試方法是建立表格,schema 是 CREATE TABLE test (id INT UNSIGNED PRIMARY AUTO_INCREMENT, data VARCHAR(255)) ENGINE=InnoDB;,在 inndo_per_file 打開的情況下測試。\r\n\r\n這是 1M rows,其中 data 都是 \"a\",這是 OPTIMIZE TABLE 後的結果:(以下每個都有 OPTIMIZE TABLE)\r\n\r\n
-rw-rw---- 1 mysql mysql     8586 Jul 30 22:42 test.frm\r\n-rw-rw---- 1 mysql mysql 37748736 Jul 30 22:42 test.ibd
\r\n\r\n這是 ADD INDEX (data) 後的結果:\r\n\r\n
-rw-rw---- 1 mysql mysql     8586 Jul 30 22:46 test.frm\r\n-rw-rw---- 1 mysql mysql 50331648 Jul 30 22:46 test.ibd
\r\n\r\n一樣是 1M rows,但 data 都是 \"a\" * 100 (一百個 a) 的結果:\r\n\r\n
-rw-rw---- 1 mysql mysql      8586 Jul 30 23:14 test.frm\r\n-rw-rw---- 1 mysql mysql 146800640 Jul 30 23:15 test.ibd
\r\n\r\n這是 ADD INDEX (data) 後的結果:\r\n\r\n
-rw-rw---- 1 mysql mysql      8586 Jul 30 23:21 test.frm\r\n-rw-rw---- 1 mysql mysql 260046848 Jul 30 23:23 test.ibd
\r\n\r\n實驗可以看出來 MySQL 的確是依照內容的實際長度索引,而非用欄位的最大長度做。", + "title": "MySQL 對 VARCHAR 的 Index 空間佔用的問題..." + }, + { + "id": "3407", + "body": "兩年前就用過 Zerigo (在「用 Zerigo 的 GeoDNS 服務」這篇有提到),最近剛好有需求要用,又拿出來複習了。\r\n\r\n在「Support - Zerigo DNS」頁面上可以看出支援哪些功能,以及設定的方法。GeoDNS 的部份可以支援幾個不同層級:\r\n\r\nGeoDNS 需要 DNS Pro 的版本才能用,DNS Pro 4 的版本是 USD$20/month,包含了 4m DNS query,平均每天可以接受約 13 萬次的查詢。超額費用是 USD$4.9 (每 1m DNS query),如果你仔細算,如果只是為了 DNS query 而升級,更高階的方案反而比較貴 XDDD 所以,如果用不到那麼多 domain 以及 hosts 時,就乖乖用 DNS Pro 4,DNS query 超額部份再付費買...\r\n\r\n這樣就可以混 domain 使用,像是把 AkamaiCDNetworks 以及 CloudFront 以及自家的 cache server 混在一起用。\r\n\r\n因為在台灣有 server,所以台灣的使用者就導到自家 cache server 上,然後美西在 EGIHosting 有租 server 當 cache,所以就把美西導到 EGIHosting 的 server 上,然後非洲與南美上 Akamai,其他地區上 CDNetworks。", + "title": "用 Zerigo 的 GeoDNS 混合不同家的 CDN 服務..." + }, + { + "id": "3412", + "body": "MySQL InnoDB 指的 Partial Index 是:\r\n
An index that represents only part of a column value, typically the first N characters (the prefix) of a long VARCHAR value.
\r\n而 PostgreSQL 指的 Partial Indexes 是:\r\n
A partial index is an index built over a subset of a table; the subset is defined by a conditional expression (called the predicate of the partial index). The index contains entries only for those table rows that satisfy the predicate. Partial indexes are a specialized feature, but there are several situations in which they are useful.
\r\n先講結論,PostgreSQL 可以做掉 MySQL InnoDB 的 Partial Index 想做的事情,而且還更多。\r\n\r\nMySQL InnoDB 的 Partial Index 是設定對 prefix index (對字串前面的 n bytes),可能的情況是 CHAR(32) 只對前面 16 bytes 索引。\r\n\r\nPostgreSQL 的 Partial Indexes 受益於許多方面而更強大。因為有 Indexes on Expressions,所以除了可以像 MySQL 對 prefix 索引外,也可以索引 suffix,甚至是索引透過 string function 得出來的值。\r\n\r\n像是 PostgreSQL 可以設定「我只要索引一月一日出生的人的 username」:\r\n\r\nCREATE INDEX test_index ON test_table (username) WHERE birth_month = 1 AND birth_day = 1;\r\n\r\n在 MySQL 裡需要反正規化後下 index,或是拆出另外一個表格再下 index 的問題,在善用 PostgreSQL 這些功能就可以省下不少功夫...", + "title": "MySQL InnoDB 與 PostgreSQL 的 Partial Index(es) 是不一樣的東西..." + }, + { + "id": "3423", + "body": "1.5 版的 portsconf 只能處理等號形式:\r\n\r\nlang/php5*: WITH_FPM=yes\r\n\r\n前幾天發現這對於某些設定很難處理,所以就在 ports/181119 送出 patch,讓 portconf 可以處理 += 的用法,讓設定更彈性。\r\n\r\n結果發現作者就順便把去年十月的 ports/172355 債也還掉... 去年十月這個 pr 早就處理 += 需求,還修正變數名稱需要支援 -+ 的問題。", + "title": "FreeBSD 的 portconf 新功能..." + }, + { + "id": "3426", + "body": "Vim 終於出 7.4 版了 XDDD\r\n\r\nVim 7.3 最後出到 1314 版,第一次破千啊... (Vim 7.5 或是 Vim 8.0 不知道會等到什麼時候...)", + "title": "Vim 7.4" + }, + { + "id": "3428", + "body": "上個禮拜的新聞,John Carmack 加入 Oculus:「John Carmack Joins Oculus as CTO」。\r\n\r\n\"\"\r\n\r\n身為 id Software 創辦人 (以及電玩遊戲領域超重量級人物),另外也是 Open Source 的推廣者,近年來把心力放在 VR 技術上 (不論是軟體還是硬體),加入 Oculus VR 明顯是繼續往目前的理想邁進... (順便賺賺麵包錢),而這位大師能夠帶給 VR 領域什麼樣的刺激,接下來這幾年就很值得看看了...\r\n\r\n喔對,每次提到 John Carmack,當然就要提 1995 年 28 吋 1920x1080 的螢幕:\r\n\r\n\"\"", + "title": "John Carmack 加入 Oculus" + }, + { + "id": "3434", + "body": "也是一個禮拜前的消息,在 Slashdot 上看到對 HTTPS 的新攻擊,目前沒有好解法,NSA 應該開心到爆炸:「BREACH Compression Attack Steals SSL Secrets」。\r\n\r\n說明可以參考「Vulnerability Note VU#987798 BREACH vulnerability in compressed HTTPS」這篇。\r\n\r\n假設你的 ISP 想要抓出你的 Facebook (HTTPS) session id 或是 CSRF token (只要是有能力在中間攔截封包並修改資料的團體都可以,這邊以 ISP 為例),作法是針對 HTTP 頁面值入 script,讓你的瀏覽器對 https://www.facebook.com/ 發出大量 request,藉由觀察這些 HTTPS 的長度就有機會取得 session id (或 CSRF token)...\r\n\r\nCERT 的 security advisory 上是寫:\r\n
With a token of length 32 and a character space of size 16 (e.g. hex), the attacker needs an average of approximately 1,000 request if no recovery mechanisms are needed. In practice, we have been able to recover CSRF tokens with fewer than 4,000 requests. A browser like Google Chrome or Internet Explorer is able to issue this number of requests in under 30 seconds, including callbacks to the attacker command & control center.
\r\n四千次就搞定了... 太!歡!樂!了!", + "title": "新的 HTTPS 攻擊:BREACH Compression Attack" + }, + { + "id": "3444", + "body": "推薦系統已經是顯學了,如果不要太暴力的演算法 (太學術而導致相依性太高) 也都有現成的 Map-Reduce 類演算法可以處理大量資料。但如果要知從頭學起的話,資料反而不太好找?\r\n\r\n然後... 也是上個禮拜看到的,現在在 Coursera 上有這樣一門課程:「Introduction to Recommender Systems」,在今年 (2013 年) 九月開課。有興趣慢慢學的當然可以去報名,不過我想說的是,這門課程的 Course Syllabus 列出了很多關鍵字,如果不想等九月開課的人,拿這些關鍵字搜尋資料也可以馬上學到不少東西。\r\n\r\n另外一個入口是 Wikipedia:「Recommender system」,也算是導讀性質。", + "title": "推薦系統的課程..." + }, + { + "id": "3451", + "body": "研究員在取得 Twitter 的同意後 (Twitter 的 ToS 禁止帳號販賣轉移),十個月內透過 27 個不同的買家,花了 USD$5000 購買了 12 萬個帳號:「Researchers Buy Twitter Bots To Fight Twitter Spam」、「Buying Battles in the War on Twitter Spam」。\r\n\r\n整份研究發在 USENIX Security '13 上:「Trafficking Fraudulent Accounts: The Role of the Underground Market in Twitter Spam and Abuse」,有 PDF 可以下載。\r\n\r\n可以看到 Hotmail 是裡面比率最高的:\r\n\r\n\"\"\r\n\r\n論文後面提到要如何利用這些買來的帳號,透過演算法計算後,判斷還有哪些帳號是可疑的帳號。然後透過 Twitter 的合作交叉比對,給予這些地下盤商致命性的打擊...", + "title": "Twitter 與研究員合作打擊 Twitter Spammer" + }, + { + "id": "3453", + "body": "groupcacheBrad Fitzpatrick 最新的作品 (之前最有名的兩個作品是 memcachedOpenID 1),目標在於取代一部分 memcached 的功能。\r\n\r\n以官方的說明是:\r\n
groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
\r\n另外一篇介紹文是「Playing With Groupcache」。\r\n\r\n跟 memcached 差異最大的地方在於「沒有更改與刪除的功能」,一旦寫進去後就不會變動。在放棄 update/delete 的特性後,換來的是:\r\n\r\n以往在 memcached server 之間是沒有交集的,在 groupcache 則是 cluster 起來。另外以前在 memcached 會因為同時存取同一個 key 而造成 single CPU overloading 的問題,在 groupcache 則透過 auto-mirror 機制解決。\r\n\r\n不過還是得想一下要怎麼用,畢竟沒有 update/delete 功能...", + "title": "用 Go 發展的 groupcache..." + }, + { + "id": "3455", + "body": "在整理舊文章的時候看到有人對 GSM 網路以及 3G/LTE 網路的安全性進行分析:「On cellular encryption」。\r\n\r\n2G 網路 (GSM 網路) 已經是不安全的架構,主因是 30 年前可用的技術受限,加上當時的美國法令嚴格管制加密技術出口,所以整個通訊協定放了一堆後門...\r\n\r\n3G 網路建立時 AES 也還沒出來 (1998 年 NTT DoCoMo 建立第一個非商用性質的 3G 網路),當時選用的 KASUMI cipher 後來被打趴好幾次...\r\n\r\n4G/LTE 用的技術就更新了,當然是另外的故事,不過還是把手機網路當作不安全的媒介會比較好...", + "title": "手機網路的不安全性..." + }, + { + "id": "3457", + "body": "在「推薦系統的課程...」這篇推薦了 2013 秋天的課程,不過整理舊文章的時候發現有另外一門講 Machine Learning 的課程已經結束 (不僅僅是 Recommendation System)。\r\n\r\nCMU 的課程:「Introduction to Machine Learning」,課程都有 PDF slide 與錄影可以看。\r\n\r\n相較於推薦系統,機器學習的課程比較篇理論,而且也比較廣泛,而推薦系統比較偏應用。", + "title": "Machine Learning 的課程 (2013 年一月開課,已經完結)" + }, + { + "id": "3459", + "body": "HipChat 算是個很有趣的服務,不過實際使用後可以發現效率沒有 command line 的 irssi 好,畢竟 irc 就是以溝通為主的工具。\r\n\r\n但 HipChat 可以保留紀錄並且透過 iOS 及 Android device 存取的特性彌補了這個缺點,甚至掩蓋掉原來的缺點。所以接下來就是想辦法用 irssi 連上 HipChat,如果可以的話就可以兼顧了...\r\n\r\n網路上其實有不少資料,irssi 可以透過 HipChat 的 XMPP 界面連上,也就是 irssi-xmpp 這個套件。\r\n\r\n不過這個套件在 FreeBSD ports 裡是 0.51 版,會 core dump... 雖然送了 0.52 版的 patch 進去 (ports/177466: [patch] Update of irc/irssi-xmpp to 0.52),不過不知道什麼時候才會進去...\r\n\r\n幾個步驟要做,首先是 .irssi/startup 內要載入 xmpp,然後設定 alternative_nick:\r\n
/load xmpp\r\n/set alternative_nick Gea-Suan Lin
\r\n然後在 .irssi/config 內設定:(本來應該就有 servers & chatnets 了,自己補上就好)\r\n
servers = (\r\n  {\r\n    address = \"conf.hipchat.com\";\r\n    chatnet = \"hipchat\";\r\n    password = \"hipchat_password\";\r\n    port = \"5223\";\r\n    use_ssl = \"Yes\";\r\n    autoconnect = \"Yes\"\r\n  }\r\n)\r\n\r\nchatnets = {\r\n  hipchat = {\r\n    type = \"XMPP\";\r\n    nick = \"two_hipchat_number@chat.hipchat.com\";\r\n  };\r\n};
\r\n然後在 channels 裡就可以指定 channel 了:\r\n
channels = (\r\n  {\r\n    name = \"two_room_identifier@conf.hipchat.com\";\r\n    chatnet = \"hipchat\";\r\n    autojoin = \"Yes\";\r\n  }\r\n)
\r\n主要是參考「Config for Irssi to connect to various XMPP chat servers. Replace the passwords, usernames an ids by your own. Remember, the irssi-xmpp (http://cybione.org/~irssi-xmpp/) plugin is requried.」這份設定測出來的。", + "title": "用 irssi + xmpp 連上 HipChat..." + }, + { + "id": "3466", + "body": "PNG 是無失真影像壓縮格式,但我們仍然可以修改 pixel (失真) 讓 PNG 壓縮率更好。今天在「PNG can be a lossy format」看到的 Mac OS X 應用程式就是這個用途。\r\n\r\n雖然是應用程式,但作者還是有說明 algorithm 是哪些,分別是從哪裡來。其中兩個是:\r\n\r\n文章最後,作者對 GIF 很感冒... XD\r\n
GIF has antiquated compression and it's a complete waste of bandwidth. Even lossy GIF is worse than lossless optimized PNG.
\r\n另外,JPEG/WebP 還是比較小,不過 JPEG 有很多格式,瀏覽器與作業系統的支援度還是很大的阻礙:\r\n
Whether lossy PNG gives better results than JPEG depends on the image. JPEG often gives smaller files, except when image has sharp edges (e.g. text) or any transparency (which JPEG does not support at all).\r\n\r\nOptimized lossy PNG is still a bit larger than lossy JPEG-XR/WebP/JPEG-2K, but unlike these formats it's supported by all browsers and operating systems without any fuss or hacks.
\r\n最後發現 lossypng 是 Go 寫的,程式碼也不長,看起來頗好玩的... (也許包成 ports?)", + "title": "使用 PNG 對圖片失真壓縮..." + }, + { + "id": "3469", + "body": "Twitter 公告了 Bootstrap 3.0 的發行:「Bootstrap 3.0」。\r\n\r\n

This is how we dooo it! Bootstrap 3 ya'll. http://t.co/i5KlLDtP0F

— Bootstrap (@twbootstrap) August 19, 2013
\r\n\r\n\r\n可以試著把 2.3.2 的移植過去看看...", + "title": "Bootstrap 3.0" + }, + { + "id": "3471", + "body": "剛剛才發現 PSR-3 已經正式定案了:「PSR-3 - Logger Interface」。\r\n\r\n統一 log 界面,架構的基礎是建在 RFC 5424 (The Syslog Protocol) 對 log level 的定義上,使用 Psr namespace 定義實做的介面 (interface)。\r\n\r\n目前看起來就到 PSR-3...", + "title": "PHP 的 PSR-3:Logger Interface" + }, + { + "id": "3473", + "body": "Zend Framework 1 的 Zend_View 實踐了 Rasmus Lerdorf (PHP 發明人) 的想法「PHP 本身就是 template language,不應該在 PHP 裡面再發明一套 template language」。\r\n\r\nZend_View 是可以獨立拿出來用的,使用方式很簡單:\r\n\r\n
$view = new Zend_View();\r\n$view->setBasePath(realpath(__DIR__ . '/../application/view'));\r\necho $view->render('index/index.phtml');
\r\n\r\n這樣對應的 template 檔案是 application/view/scripts/index/index.phtml。\r\n\r\nZend Framework 2 除了改用 namespace 外 (所以名稱從原來的 \"_\" 改成 \"\\\"),還把 Zend\\View 深度整合到 Zend\\Mvc 裡,這使得要獨立拿出來用的手續就變得... 超... 麻... 煩...\r\n\r\n透過 Composer 安裝的人除了在 composer.json 裡面要設定 zendframework/zend-view 外,還要設定 zendframework/zend-filter 才會動 (不知道為什麼沒被放進 dependency),像是這樣:\r\n\r\n
    \"require\": {\r\n        \"zendframework/zend-filter\": \"2.2.*\",\r\n        \"zendframework/zend-view\": \"2.2.*\"\r\n    }
\r\n\r\n另外 ZF 2 的 Zend\\View 則是透過 resolver 物件設定要讀哪個目錄,而非之前用 setBasePath 打發:\r\n\r\n
$resolver = new \\Zend\\View\\Resolver\\TemplatePathStack(\r\n    array(\r\n        'script_paths' => array(\r\n            realpath(__DIR__ . '/../webdata/view/')\r\n        )\r\n    )\r\n);\r\n\r\n$renderer = new \\Zend\\View\\Renderer\\PhpRenderer();\r\n$renderer->setResolver($resolver);\r\n\r\necho $renderer->render('index/index.phtml');
\r\n\r\n這樣對應的 template 檔案是 webdata/view/index/index.phtml,跟 ZF1 相比少了一個 scripts。\r\n\r\nZF 的文件一如往常的難讀,還是要去翻 source code 才知道要這樣用,所以也跟往常一樣,寫下來避免之後又忘記...", + "title": "Zend Framework 1 的 Zend_View 與 Zend Framework 2 的 Zend\\View 的差異..." + }, + { + "id": "3482", + "body": "裝了 Blur Facebook (for Google Chrome),在 Facebook 頁面要抓 screenshot 前先用右鍵選擇要處理,處理後效果這樣:\r\n\r\n\"\"\r\n\r\n作者有把原始程式碼丟上 GitHub,在 sowbug/blur-facebook。", + "title": "裝了 Blur Facebook..." + }, + { + "id": "3484", + "body": "oclHashcat-plus 提供了透過 GPU 破解的 benchmark 數據:\r\n\r\n\"\"\r\n\r\n可以看到 PBKDF2、sha512crypt $6$ 以及 bcrypt $2a$ 的速度慢得很漂亮 XD 不過 SHA512 的速度比 SHA256 慢不少倒是頗意外...\r\n\r\nPBKDF2 的使用率很高 (因為無線網路 WPA/WPA2 的規格),所以各語言的普及率也高不少,如果要找個標準來用的話,PBKDF2 相當不錯...", + "title": "各種密碼破解速度..." + }, + { + "id": "3487", + "body": "在 Twitter 上看到 John Resig 提到一串 reddit 上超歡樂的安全性議題:\r\n\r\n

This thread on /r/PHP is just too good/scary to be true: http://t.co/KwLK37kk0l

— John Resig (@jeresig) August 28, 2013
\r\n\r\n\r\n討論串在「Creating a user from the web problem.」這邊。不僅是 escape 的問題,還有給予 web server 過大的權限...\r\n\r\n貼圖也很好笑啊 XD\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n(噗)", + "title": "網路安全歡樂記..." + }, + { + "id": "3490", + "body": "Twitter 宣佈兩個帳號,@64Flavors 以及 @Overflow64,這兩個帳號的 user ID 都超過 32bits 可以存放的範圍,而且每十分鐘就會發一則 tweet:「Test accounts with user IDs greater than 32 bits」。\r\n\r\n目前 Twitter 的 user ID 還在 32bits 可以儲存的範圍內,但官方預估在今年就會超過。\r\n\r\n而現在是八月底,官方丟出兩個帳號讓大家實際測試 XD", + "title": "Twitter 提供兩個 userid 超過 32bits 的使用者 (機器人),讓程式測試是不是有問題..." + }, + { + "id": "3492", + "body": "紐西蘭以強烈的票數差距 117-4 廢除軟體專利:「In historic vote, New Zealand bans software patents」。\r\n\r\n這一步超大,這一廢止使得紐西蘭在軟體創新比歐美先進一大步,制止專利蟑螂對新創事業的騷擾,另外促使更多國家對軟體專利動手 (不一定是廢止,也有可能是設限讓蟑螂更難生存)。", + "title": "紐西蘭廢除軟體專利..." + }, + { + "id": "3496", + "body": "以往要在 Amazon RDS 產生 Read Replica Replication 需要複雜的 snapshot 處理,但現在 AWS 直接提供這個功能了,而且可以同時生很多台:「New Read Replica Capabilities for Amazon RDS」。\r\n\r\n這有多重要呢?以前因應流量瞬間爆增時的方式是增加 web server,並且利用 cache (可能是 memcached) 降低對後端的 query 數量。但因為引入 cache,平常就得處理 cache invalidate 的問題。\r\n\r\n而這個方式平常只要處理讀寫分離就可以了。當量爆增時除了 web server 增加,直接增加後端的 RDS server (Read Replica Replication),甚至可以分層:\r\n\r\n\"\"\r\n\r\n以目前的步調來看,之後有可能會推出 Master-Master 的 HA 架構?\r\n\r\nUpdate:照 comment 提到的,Multi-AZ 本身就是 HA 架構了...", + "title": "Amazon RDS 可以直接產生 Read Replica Replication 了..." + }, + { + "id": "3504", + "body": "剛剛發現 Jetpack 就內建 Mobile Theme 了,把 WPtheme Mobile Plugin 拿掉後用手機看了看,效果不算差...\r\n\r\n先放著跑看看吧,過陣子再來決定要留哪個 @_@", + "title": "改用 Jetpack 的 Mobile Theme (本來是 WPtouch Mobile Plugin)" + }, + { + "id": "3506", + "body": "看了 hSATAC 寫的「我的 Golang Vim 配置」後,研究了一下裡面的 plugin,發現幾個還不錯的 plugin 可以用...\r\n\r\n其中一個是 tagbar,安裝後依照官方 Quickstart 的建議,把 F8 變成展開:\r\n\r\n
nmap <F8> :TagbarToggle<CR>
\r\n\r\n其他的設定可以參考 tagbar.txt。", + "title": "裝了 tagbar..." + }, + { + "id": "3508", + "body": "紐約公共圖書館 (NYPL) 丟出個有趣的東西:「Map polygon and feature extractor」,敘述的地方就有這樣的說明:\r\n
Like OCR for maps
\r\n可以把這樣的地圖圖檔:\r\n\r\n\"\"\r\n\r\n轉成:\r\n\r\n\"\"\r\n\r\n這樣子... 也可以 GeoJSON 輸出 :p\r\n\r\n這屬於 Open Data 的工作,紐約公共圖書館本身就是全世界第三大圖書館,美國第二大的圖書館 (僅次於第一的國會圖書館與第二的大英圖書館),做完後可以把館內的地圖館藏整個數據化讓人重複使用 (而非僅僅將紙本掃描成圖片資料的「電子化」),這包括了以前的手繪地圖啊...\r\n\r\n程式主要是用 Python 寫,另外在 repository 有看到 RScheme 的存在... (GitHub 的統計)", + "title": "紐約公共圖書館提供的 Library:將地圖 OCR 成向量資料..." + }, + { + "id": "3511", + "body": "在 Google Chrome 裝上 Remove Facebook Redirections 可以避免 Facebook 重導,加減提高些隱私性...\r\n\r\n不過最近發現當 Facebook 捲頁捲很長時會變得爆慢,但網路上好像沒有人提到這個問題?看起來應該是我的某個 extension 造成的,測了老半天發現是這個 extension 的問題 :o 然後身為工程師的直覺,這八成是每次增加元素後直接對整個 document 全掃一次造成的...\r\n\r\n翻 source code 後 (直接到 Default/Extensions/onhdomkbnapoacbialllfpbcckckidck/1.2_0/ 裡的 RemoveFacebookRedirections.js 翻) 可以發現 huntForLinks() 果然就是這樣做...\r\n\r\n先移除掉再說 @_@", + "title": "移除 Remove Facebook Redirections..." + }, + { + "id": "3513", + "body": "中文稱為「平方根倒數速演算法」,英文則是「Fast Inverse Square Root」。\r\n\r\n好像是在 Twitter 還是 Facebook 上看到的 (還是是在其他管道?),仔細看中文版維基百科條目,發現中文版的資料相當完整了 (看了一下歷史記錄,是去年 2012 年 6 月的時候從英文版翻出來的)。\r\n\r\n當時很有名的 magic hack,比查表法快:\r\n
在1990年代初(也即該演算法發明的大概時間),軟體開發時通用的平方根計算方法多是從尋找表中取得近似值,而這段代碼取近似值耗時比之更短,達到精確度要求的速度也比通常使用的浮點除法計演算法快四倍,
\r\n然後還比 CPU 指令集快 XD\r\n
由於演算法所生成的用於輸入牛頓法的首次近似值已經相當精確,此演算法所得近似值的精度已可接受,而若使用與《雷神之鎚III競技場》同為1999年發行的Pentium III中的SSE指令rsqrtss計算,則計算平方根倒數的收斂速度更慢,精度也更低。
\r\nUpdate:請參考 comment,看起來中文版有誤譯...\r\n\r\n我本來以為我之前寫過,找了找沒翻到... 補記錄下來 :p", + "title": "Fast Inverse Square Root 演算法..." + }, + { + "id": "3515", + "body": "這幾天在找桌機 CPU 資料的時候發現的,AMD 在今年 (2013) 七月的時候發行了兩顆 CPU:FX-9370 與 FX-9590 (參考「AMD FX Model Number Comparison」)。\r\n\r\n耗電量也破紀錄了啊,我第一次在 x86 上看到量產最大功耗 220W 的 CPU 啊...\r\n\r\n剛剛查了「List of Intel Xeon microprocessors」,最高也才 165W,Intel 輸了啊... (噴飯)\r\n\r\n以這個速率來看,價錢意外的低啊,FX-9590 居然只要 USD$900...", + "title": "最大消耗 220W 的 CPU..." + }, + { + "id": "3522", + "body": "下去高雄辦公室出差看到的,看到順便拍起來:\r\n\r\n\"\"\r\n\r\n不知道裡面是什麼樣子...", + "title": "高雄軟體園區對面,鴻海的「雲端貨櫃數據中心」..." + }, + { + "id": "3524", + "body": "在 Bruce Schneier 的 blog 上看到 SHA-3 的由來:「SHA-3 Status」,而投影片在「Keccak and the SHA-3 Standardization」這裡,裡面有不少資料可以用...\r\n\r\n像是 crypto hash function 速度的比較:\r\n\r\n\"\"\r\n\r\n後半段看到蠻多有趣的東西,等有空回頭來看...", + "title": "SHA-3 的歷史由來..." + }, + { + "id": "3529", + "body": "剛剛看到 EdgeCast 放出來的新聞稿,EdgeCast 跟 HiNet 合作:「EdgeCast Partners with HiNet on Taiwan Market」。\r\n\r\n以 AdobeEdge Web Fonts 服務來看 (使用 use.edgefonts.net 這個名稱,指到 use.wac.0F88.edgecastcdn.net),如果在 HiNet 下面 (然後以 168.95.192.1) 仍然是指到香港的 PoP (s6.gp1.wac.edgecastcdn.net,目前是 117.18.237.110)。\r\n\r\n官網 www.edgecast.com 也是香港的 PoP。\r\n\r\n回頭來看新聞稿,看起來是 HiNet 用 EdgeCast 的技術建立 CDN,變成 Taiwanese CDN:\r\n
HiNet will use EdgeCast technology to build a high-performance CDN within Taiwan and provide caching, streaming, acceleration and security services to Taiwanese media and content providers. The Taiwanese CDN will be directly connected to EdgeCast’s global network and to users within HiNet’s regions, dramatically improving global performance for HiNet customers and Taiwan performance for EdgeCast customers.
\r\n相當於中華購買技術補齊產品線,另外 EdgeCast 也可以使用... (不過目前還沒建立好?)\r\n\r\n如果都建好,那麼在台灣有 PoP 的 CDN 就有 AkamaiCDNetworks、Windows Azure CDN 以及 EdgeCast 這四家。", + "title": "EdgeCast 與 HiNet 合作..." + }, + { + "id": "3533", + "body": "幾天前 Amazon 官方推出 Python 版本的 AWS CLI 工具:「New AWS Command Line Interface (CLI)」,官方網站則是在「AWS Command Line Interface」,程式碼則是公開在 GitHub 上:「aws/aws-cli」\r\n\r\nFreeBSD ports 裡面有,在 devel/awscli 這裡。\r\n\r\n記得一開始作者 Mitch Garnaat 先發展 boto,然後被 Amazon 挖走,沈寂了好幾年,開發出這東西...\r\n\r\n常用的服務都可以透過這隻程式操作...", + "title": "Amazon 官方推出 Python 版本的 AWS CLI 工具..." + }, + { + "id": "3535", + "body": "看到「Majority of Tor crypto keys could be broken by NSA, researcher says」,說明 NSA 曾經跟 IBM 訂作特殊晶片:\r\n\r\n
\"Everyone seems to agree that if anything, the NSA can break 1024 RSA/DH keys,\" Graham wrote in a blog post published Friday. \"Assuming no 'breakthroughs,' the NSA can spend $1 billion on custom chips that can break such a key in a few hours. We know the NSA builds custom chips, they've got fairly public deals with IBM foundries to build chips.\"
\r\n\r\n而目前大多數的 Tor 節點都是用 2.3.x 的版本 (使用 1024bits DHE),官方網站目前也是提供 2.3.x 下載,只有少數使用 2.4.x (使用 ECDHE),不過一時間找不到 ECDHE 用多長的 EC key,所以也不清楚抵抗能力到底到麼程度...", + "title": "1024bits 的 RSA 與 DH..." + }, + { + "id": "3537", + "body": "Zite 上面看到 Linode 開始測試 SSD 了:「Linode SSD (beta)」。\r\n\r\n依照公告,目前只有 Newark 機房有提供測試,同時也說明在 beta 階段不保證資料安全性。\r\n\r\n在討論區除了官方有提供數據外,也有人有貼出測試結果。看起來有改善,但好像沒想像中多... XD", + "title": "Linode 的 SSD 計畫..." + }, + { + "id": "3541", + "body": "Laravel 是個 PHP framework,是目前還蠻常看到討論的 PHP framework。不過實際在研究後發現用起來有點苦啊...\r\n\r\nLaravel 官方覺得 PSR-2 是個鳥蛋 (參考 GitHub 上的 issue:「PSR-2 Conflicts」),而我也知道 PSR-2 不怎樣,但這好歹是個標準可以靠啊...\r\n\r\n另外一個是 overhead,在 AWS 上用 m1.large 跑 Ubuntu 64bits 測試純 PHP 的 echo \"Hello, world.\"; 可以到 8000 reqs/sec (這是開了 APC 的情況測試,比較接近 production),但同樣是要顯示 Hello, world.,用了 Laravel 後剩下 174 reqs/sec (debug mode 已經關閉),如果再套上 Laravel 的 View 就剩下 152 reqs/sec...\r\n\r\n也就是說這個數字是起點 (往下的起點),這樣看起來有點慘烈啊...", + "title": "用起來有點苦的 Laravel..." + }, + { + "id": "3544", + "body": "Twitter 上看到 yllan 提到 SSL certificate 的問題:\r\n\r\n

原來現在早就支援同 IP 可以放好多個 vhost + SSL cert 了。

— yllan (藍永倫) (@yllan) September 10, 2013
\r\n\r\n\r\n這是看 client 對 Server Name Indication 的支援程度而決定的。\r\n\r\n在維基百科說明中「Browsers with support for TLS server name indication」這段裡面列出來的瀏覽器,可以看出來其實最大的問題就是 Windows XP 上的 IE{6,7,8} 不支援。(但 Windows Vista 以及 Windows 7 的 IE{7,8} 支援 SNI)\r\n\r\n手上一時間找不到 Windows XP + IE{6,7,8} 的數量,但 gs.statcounter.com 上有幾個數字可以參考。\r\n\r\n首先是台灣 IE8 的用戶數量:\r\n\r\n\"\"\r\n\r\n再來是 Windows XP 數量:\r\n\r\n\"\"\r\n\r\n以這兩個圖的資料來看,還是不太能用啊... :o", + "title": "SNI 支援 (單一 IP 多個 SSL Certificate)" + }, + { + "id": "3547", + "body": "其實我不知道 Outlook.com 一直都沒支援 IMAP...\r\n\r\n剛剛 Zite 上看到微軟公佈 Outlook.com 的 IMAP 功能:「Outlook.com now has IMAP」。這篇文章有點長,後面還有「Developers interested in connecting to IMAP should refer to the below technical information.」然後列出支援的 IMAP 指令,這些指令對於搬家應該是夠用了...\r\n\r\n雖然搬來搬去都還是美國公司...\r\n\r\n另外是 IMAP 與 OAuth2 的結合,看起來是透過 HTTPS 網站拿到 token 後,透過 IMAP 存取資料...", + "title": "Outlook.com 支援 IMAP..." + }, + { + "id": "3549", + "body": "平常都是掃 Port 80/443,然後就有人跑去掃 Port 22:「We scanned the Internet for port 22」。依照原文說的,這次給的數據只是 60% 的 Internet,其他 40% 的資料有問題,他要再想辦法修...\r\n\r\n這是 Top 20 的 unique banner 數據:\r\n\r\n
 1730887 SSH-2.0-OpenSSH_4.3\r\n 1562709 SSH-2.0-OpenSSH_5.3\r\n 1067097 SSH-2.0-dropbear_0.46\r\n  824377 SSH-2.0-dropbear_0.51\r\n  483318 SSH-2.0-dropbear_0.52\r\n  348878 SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1\r\n  327841 SSH-1.99-Cisco-1.25\r\n  320539 SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze3\r\n  318279 SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1\r\n  307028 SSH-2.0-ROSSSH\r\n  271614 SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze2\r\n  233842 SSH-2.0-OpenSSH_5.1p1 Debian-5\r\n  225095 SSH-2.0-OpenSSH_5.1\r\n  224991 SSH-2.0-OpenSSH_5.1p1 FreeBSD-20080901\r\n  213201 SSH-2.0-OpenSSH_4.7\r\n  209023 SSH-2.0-OpenSSH_6.0p1 Debian-4\r\n  195977 SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7\r\n  140809 SSH-2.0-dropbear_0.50\r\n  135821 SSH-2.0-OpenSSH\r\n  132351 SSH-2.0-Cisco-1.25
\r\n\r\n可以看到 OpenSSH 是最大宗,而 dropbear 應該是各種 box 的量撐起來的...\r\n\r\n參考維基百科上 OpenSSH 的條目,OpenSSH 的各版本的發行日期分別是:\r\n\r\n後面的作業系統是就手上有的機器來看,不過 4.3 是最多的是怎麼一回事呢... 作者這樣解釋:\r\n
Note that these counts are a bit off. Some networks have a router that forwards all connections of a certain port to a single machine. Maybe \"OpenSSH_4.3\" is most popular banner, or maybe the national ISP of Elbonia just reroutes all port 22 requests.
\r\n所以有可能只是個假象?XD", + "title": "掃整個 Internet 的 Port 22..." + }, + { + "id": "3552", + "body": "GoogleJeremy ColeXLDB 2013 (Extremely Large Databases) 上的演講投影片:「The MySQL Ecosystem at Scale」(PDF)。\r\n\r\n投影片內對於 MySQL 的歷史以及現況的說明的很清楚,另外就是 sharding 那塊的方式很值得看一看,量大之後大家解決的方法都差不多,算是已經被證實可行的方法了。", + "title": "Jeremy Cole 在 XLDB 2013 上的演講:「The MySQL Ecosystem at Scale」" + }, + { + "id": "3556", + "body": "前幾天 PostgreSQL 宣佈 9.3 發佈:「PostgreSQL 9.3 released!」。\r\n\r\n如同預測的,9.3 對 JSON 的處理能力變強了,加上可以自訂 index (寫 function 自訂 index 的內容),這使得 PostgreSQL 可以做 JSON-based document database,可以參考 9.3 的「PostgreSQL: Documentation: 9.3: JSON Functions and Operators」以及前一版 9.2 的「PostgreSQL: Documentation: 9.2: JSON Functions」。\r\n\r\nMongoDB 就別來亂了... XD", + "title": "PostgreSQL 9.3..." + }, + { + "id": "3558", + "body": "Reverse Proxy 的 Cache Infrastructure 在遇到 cache invalidate 都是很討厭的問題,不是不能做,而是效能不太好... 常見的作法是設計成不用 purge 的形式,只要是需要更新,就產生不同的 url,而舊的 url 在沒人 access 後會透過各種 Cache algorithms 自動回收掉,像是 LRU (Least Recently Used) 之類的演算法。\r\n\r\n發展久了之後也因此衍伸出很多不同的架構,像是 groupcache 就是假設在同一個 address 的內容永遠不會變的前提。\r\n\r\n而 Varnish Cache 這次發表的東西則是打算從根本問題解決,也就是想辦法讓 purge (cache invalidate) 的成本降低:「Simple scales better and faster in the real world」、「VAC 2.0.3 with high performance cache invalidation API (aka the Super Fast Purger)」。\r\n\r\n官方的說法,在大台機器上可以到 60k reqs/sec:\r\n
Kristian nonchalantly mentioned that the Super Fast Purger did 60,000 requests per second, on a 6 core Xeon with 36GB memory, traffic over a gigabit network to a single Varnish Cache server, with httperf as test client. But we believe the Super Fast Purger can do a lot more with a little love and tuning.
\r\nSquid 效能不好,ATS 的文件很傷,是該找時間來測試看看...", + "title": "Varnish 的 Super Fast Purger..." + }, + { + "id": "3561", + "body": "英文版的公告內容:「Diablo® III Auction House Update」,以及中文版的公告內容:「《暗黑破壞神®III》拍賣場最新消息」。\r\n\r\n重點文字有兩段,第一段是說明未來的遊戲金幣交易以及現金交易將被移除:\r\n\r\n
With that in mind, we want to let everyone know that we've decided to remove the gold and real-money auction house system from Diablo III.
\r\n\r\n
因此,我們想讓大家知道,我們已決定移除《暗黑破壞神III》的金幣拍賣場和現金拍賣場系統。
\r\n\r\n第二段的重點是中止的時間點:\r\n\r\n
Please note that the shutdown will occur on March 18, 2014. We will keep everyone informed as we work through this process.
\r\n\r\n
請注意,拍賣場系統將會在2014年3月18日關閉。一旦有最新消息,我們將會另行通知大家。
", + "title": "Diablo III 將移除拍賣場 (包含了現金交易市場以及遊戲金幣交易市場)..." + }, + { + "id": "3563", + "body": "剛好看到「By My Estimates, Apple’s iOS7 Download Business Is Worth About $10-$12M To Akamai」這篇,講到這次蘋果 iOS 7 的下載讓 Akamai 有一筆不小的收入...\r\n\r\n正想要下載 VirtualBox,沒遇過 HiNet 機房的 Akamai 這麼慢... XD\r\n\r\n
gslin@GSLIN-DESKTOP [~/tmp] [13:31/W3] wget http://download.virtualbox.org/virtualbox/4.2.18/virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb\r\n--2013-09-19 13:32:17--  http://download.virtualbox.org/virtualbox/4.2.18/virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb\r\n正在查找主機 download.virtualbox.org (download.virtualbox.org)... 137.254.120.26\r\n正在連接 download.virtualbox.org (download.virtualbox.org)|137.254.120.26|:80... 連上了。\r\n已送出 HTTP 要求,正在等候回應... 302 Moved Temporarily\r\n位置:http://dlc.sun.com.edgesuite.net/virtualbox/4.2.18/virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb [跟隨連結]\r\n--2013-09-19 13:32:18--  http://dlc.sun.com.edgesuite.net/virtualbox/4.2.18/virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb\r\n正在查找主機 dlc.sun.com.edgesuite.net (dlc.sun.com.edgesuite.net)... 203.69.141.82, 203.69.141.10\r\n正在連接 dlc.sun.com.edgesuite.net (dlc.sun.com.edgesuite.net)|203.69.141.82|:80... 連上了。\r\n已送出 HTTP 要求,正在等候回應... 200 OK\r\n長度: 64206462 (61M) [application/x-debian-package]\r\nSaving to: `virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb'\r\n\r\n2013-09-19 13:35:47 (301 KB/s) - `virtualbox-4.2_4.2.18-88780~Ubuntu~precise_amd64.deb' saved [64206462/64206462]
\r\n\r\n試了幾次,有些還會導到美國機房分流... 量真的太大了 :o", + "title": "iOS 7 的下載與 Akamai..." + }, + { + "id": "3565", + "body": "Amazon CloudFront 在 CNAME 的地方可以填 *.example.com 表示這個 distribution 要吃所有 domain:「CNAME Wildcard Support for Amazon CloudFront」。\r\n\r\n\"\"\r\n\r\n這用在 asset 類的服務很好用,可以設定 *.asset.example.com,然後就可以用 {1,2,3,4}.asset.example.com 打散掉。以往則是要手動設多個 domain,沒辦法隨便調整...", + "title": "Amazon CloudFront 支援 Wildcard 了..." + }, + { + "id": "3567", + "body": "Percona XtraDB Cluster (Galera Cluster) 出新版:「Percona XtraDB Cluster 5.5.33-23.7.6 is now available」。\r\n\r\n看到了幾個比較特別的功能:\r\n
Desync functionality has now been exposed to the client. This can be done either via /*! WSREP_DESYNC */ comment on the query or by setting the global wsrep_desync variable to 1.
\r\n這個功能感覺上是打算為了在 Percona Toolkit 裡面配合 pt-table-sync 而準備的?\r\n\r\n另外一個重要的功能是限速,這可以避免在伺服器最忙碌的時候加重負擔造成伺服器撐不住:\r\n
Percona XtraDB Cluster has implemented new rate limiting, rlimit, option for XtraBackup SST that can be used to avoid saturating the donor node.
\r\n以往我是自己 patch 一個 shell script 出來用,現在則變成是原生支援,那麼本來的 patch 方式就要轉換到原生支援上...\r\n\r\n然後文末有建議 Debian 使用者在升級前要先安裝 socat,避免升級發生問題 :o", + "title": "Percona XtraDB Cluster 5.5.33-23-7.6..." + }, + { + "id": "3571", + "body": "Amazon S3 可以在上傳時設定為 non-public,這種檔案如果要讓使用者讀取,就必須透過 URL 簽名的方式...\r\n\r\n官方的文件是「Authenticating REST Requests」這篇,不過官方文件把所有細節都寫上去,如果第一次接觸的人反而不知道要怎麼辦...\r\n\r\nThomas Riboulet 給了一個 Quickstart 的範例:「Signing Amazon S3 URLs」,裡面雖然是 Ruby code,不過 code 的邏輯很簡單...\r\n\r\n以 test.gslin.org 為例,想要產生出從現在開始 3600 秒內有效的 url 可以這樣寫,用過一次後再回去看官方文件,就會發現其實就是官方文件的「REST Authentication Example 3: Query String Authentication Example」這段,如果以 PHP 寫會長這樣:\r\n\r\n
<?php\r\n\r\n$access_key = \"\";\r\n$secret_key = \"\";\r\n\r\n$timestamp = time() + 3600;\r\n$data = \"GET\\n\\n\\n${timestamp}\\n/test.gslin.org/test.txt\";\r\n\r\n$sign = urlencode(\r\n    base64_encode(\r\n        hash_hmac('sha1', $data, $secret_key, true)\r\n    )\r\n);\r\n\r\necho \"http://test.gslin.org.s3.amazonaws.com/test.txt?\" .\r\n    \"AWSAccessKeyId=${access_key}&\" .\r\n    \"Expires=${timestamp}&\" .\r\n    \"Signature=${sign}\\n\";
\r\n\r\n接下來來研究 CloudFront 的部份...", + "title": "Amazon S3 上 Protected Content 的 URL Sign..." + }, + { + "id": "3577", + "body": "好幾個新聞來源都有看到 OpenZFS 成立:「OpenZFS Project Launches, Uniting ZFS Developers」(Slashdot)、「OpenZFS launch announcement」。\r\n\r\nOpenZFS 的正式公告在「Announcement」這邊,雖然沒有明講是要脫離 Oracle 的控制,但宣示對社群更公開這點其實就很清楚了 (To encourage open communication about ongoing efforts to improve open source OpenZFS, ...)。\r\n\r\n隔壁棚 Oracle 前員工 (現在在 Fusion-io) 弄出來的 Btrfs 的進展也不差,兩邊都在進步...", + "title": "OpenZFS 成立..." + }, + { + "id": "3580", + "body": "剛剛翻資料發現 json_encode 奇怪的老問題總算有解...\r\n\r\n這樣的程式碼:\r\n\r\n
<?php\r\necho json_encode(\"http://www.google.com/\"), \"\\n\";
\r\n\r\n會輸出這樣的結果:\r\n\r\n
\"http:\\/\\/www.google.com\\/\"
\r\n\r\n這是合法的 JSON 沒錯 (JSON 規格允許 string 裡面使用 \\/),但看起來就很不爽啊,明明 / 就是可以合法輸出的字元... 然後剛剛看到 PHP 5.4.0 加上這些東西:\r\n\r\n
JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, and JSON_UNESCAPED_UNICODE options were added.
\r\n\r\n測了 JSON_UNESCAPED_SLASHES,看起來舒服多了:\r\n\r\n
<?php\r\necho json_encode(\"http://www.google.com/\", JSON_UNESCAPED_SLASHES), \"\\n\";
\r\n\r\n輸出結果是:\r\n\r\n
\"http://www.google.com/\"
", + "title": "PHP 5.4 的 json_encode 增加 JSON_UNESCAPED_SLASHES..." + }, + { + "id": "3582", + "body": "Amazon CloudFront 也可以設定要簽名才能抓檔案,只是 URL Sign 設計的觀念跟 Amazon S3 完全不一樣,這不一致的調調很... 詭異...\r\n\r\n大致上有這些差異:\r\n\r\n官方的 CloudFront Signed URLs in PHP 這篇的範例程式碼其實很清楚了,要直接拿去用其實也沒麼問題。我自己整理後是這樣:\r\n
<?php\r\n\r\n$key_pair_id = 'APKA...';\r\n$pem_file = '';\r\n$resource = 'http://test2-cdn.gslin.org/test.txt';\r\n\r\n$expires = time() + 3600;\r\n\r\n$json_str = json_encode(\r\n    array(\r\n        'Statement' => array(\r\n            array(\r\n                'Resource' => $resource,\r\n                'Condition' => array(\r\n                    'DateLessThan' => array(\r\n                        'AWS:EpochTime' => $expires\r\n                    )\r\n                )\r\n            )\r\n        )\r\n    ),\r\n    JSON_UNESCAPED_SLASHES\r\n);\r\n\r\n$buf = file_get_contents($pem_file);\r\n$key = openssl_get_privatekey($buf);\r\n\r\nopenssl_sign($json_str, $signed_policy, $key, OPENSSL_ALGO_SHA1);\r\n\r\nopenssl_free_key($key);\r\n\r\n$signature = str_replace(\r\n    array('+', '=', '/'),\r\n    array('-', '_', '~'),\r\n    base64_encode($signed_policy)\r\n);\r\n\r\necho \"${resource}?\",\r\n    \"Expires=${expires}&\",\r\n    \"Signature=${signature}&\",\r\n    \"Key-Pair-Id=${key_pair_id}\\n\";
\r\n\r\n反正你搞不太懂 Amazon 為什麼要這樣設計的... =_=", + "title": "Amazon CloudFront 上 Protected Content 的 URL Sign..." + }, + { + "id": "3590", + "body": "2007 年的「Innodb Performance Optimization Basics」這篇是以當時的環境寫的 (MySQL 5.0)。過了六年,出了 MySQL 5.1、5.5,目前新版是 5.6。\r\n\r\n於是就冒出這篇 2013 年版:「InnoDB performance optimization basics (updated)」。\r\n\r\n主要是新的科技與技術讓 InnoDB 有更多選擇可以用。SSD 的發明讓 i/o 效率更好,而檔案系統的改善使得 ext4 開始被大家接受。\r\n\r\n另外 InnoDB 自己的改善也能夠充分發揮現代硬體的能力,尤其是對多核心的延展能力。\r\n\r\n這篇該講的都有講到,文末雖然打自家廣告推薦 Percona Server with XtraDB,不過這的確是個好東西。", + "title": "Percona 對 InnoDB 效能的建議..." + }, + { + "id": "3593", + "body": "在 Zite 上看到 iOS 7 支援 MPTCP 的消息:「iOS 7 becomes first commercial software to support multipath TCP, allowing simultaneous Wi-Fi and cell network connections」,這東西很新啊,今年一月才丟出 Experimental standard...\r\n\r\nMPTCP 在行動平台上可以讓 3G/4G 與 Wi-Fi 網路混在一起用,如果有支援的話,對開發應用程式的人又更方便了一些... iOS 7 上的 Siri 則是第一波使用 MPTCP 的程式...\r\n\r\n不過 LinuxFreeBSD 都還沒支援,只有 open source implementation (也就是要自己 patch)。", + "title": "iOS 7 支援 MPTCP (Multipath TCP)" + }, + { + "id": "3595", + "body": "特地寫是因為 jQuery 1.11 將會是第一個完整切換到 AMD (Asynchronous Module Definition) 架構的版本:「jQuery 1.11 and 2.1 Beta 1 Released」。\r\n\r\n雖然對 AMD 並不是全正面的看法,不過畢竟是一個通用的標準...", + "title": "jQuery 1.11 Beta 1 與 2.1 Beta 1..." + }, + { + "id": "3597", + "body": "在 Zite 上看到 FreeBSD 10 的改變:「FreeBSD 10's New Technologies and Features」。\r\n\r\n最耀眼的當然是對 GCC 的宣戰達到高潮,第一個將預設編譯器換掉的 major release。同樣的,也把 GNU 的 libstdc++ 換成 MIT license 實作的 libc++。\r\n\r\n再來是 ISCBIND 被換掉,改用 Unbound 以及 LDNS。\r\n\r\n然後 UFS 檔案系統可以透過 growfs(8) 線上長大... XDDD\r\n\r\n其他的改善包括了 iSCSI stack 重寫,PF 防火牆可以善用 SMP 資源,以及 ZFS 的更新。等正式出版後應該還是會等到 10.1 再上 production 吧?感覺 compiler 一換不知道會有多少雷啊 XD", + "title": "FreeBSD 10 的改變..." + }, + { + "id": "3601", + "body": "在「Apple CEO Tim Cook Joins Twitter」這篇報導裡面看到的消息,這是 Tim Cook 的第一則 tweet:\r\n\r\n

Visited Retail Stores in Palo Alto today. Seeing so many happy customers reminds us of why we do what we do.

— Tim Cook (@tim_cook) September 20, 2013
\r\n", + "title": "Tim Cook 開 Twitter..." + }, + { + "id": "3605", + "body": "Twitter 上看到 b123400 的 retweet,專程貼出來有種好無奈的感覺... XD\r\n\r\n

probably the saddest graph ever shown in a CS conference. #Linux #tshirtsize pic.twitter.com/RWBnTSJ2ip

— AlexandrosKapravelos (@kapravel) September 5, 2013
\r\n", + "title": "1999 年與 2008 年 Conference T-shirt size 的差別..." + }, + { + "id": "3607", + "body": "2003 年寫的 Group.NCTU.edu.tw,在歷經 10 年後終於歸西:\r\n\r\n\"\"\r\n\r\n2003 年時要跨 BBS 站轉信,除了直接 innbbsd 對接外,另外一種方式是架設 News Server,讓各站透過 News Server 轉信。前者用在轉信站比較少的情境下 (因為是 O(n^2) 的設定成本),後者則是用在轉信站比較多的時候 (是 O(n) 的設定成本)。\r\n\r\n當時幾個大站都有自己的 News Server 可以提供這項服務,包括 Ptt 的 Wrap,KKCity 的 news.kkcity.com.tw,以及無名小站 BBS 的 News Server。但即使如此,這些站台都是人工設定,每設定一次轉信要花不少時間。\r\n\r\n當時剛好舊的 ccreader.nctu.edu.tw 退役 (印象中是一台 Pentium III 450 與 512MB RAM 的機器,掛著 10 顆各 4.3GB 的 SCSI 硬碟),就跟 cschen 要了一個 IP 與 domain,把原來的 ccreader 重新整理後,用 PHP 寫網頁的部份,Perl 拿來處理後端對 INN 的操作。而使用條款則是自己胡亂寫一通後就上線了...\r\n\r\n\"\"\r\n\r\n上線後除了我自己的站丟上去用以外,我就開始找人用。因為當時 Ptt 的 Wrap 常常掛掉,就跑去找 in2 講,馬上就搬過來了:\r\n\r\n\"\"\r\n原來在 SYSOP 板的那篇找不到了,只找到這篇...\r\n\r\n過沒多久我就跑去找簡志宇問他要不要把無名的轉信 policy 也換過來。然後隔年我去 KKCity 打工的時候也說服當時站方把 news.kkcity.com.tw 凍結。\r\n\r\n到這邊之後,就很少看到台灣還有在自己架 News Server 了... (掩面)\r\n\r\n之後 Group.NCTU.edu.tw 再加上 RSS 的功能 (後來爛掉了),以及加上 e-mail to usenet 功能 (這功能我自己一直在用,所以沒讓他爛掉),開發完這兩個功能後也就丟著沒開發了。最多就是想到的時候上去更新 OS & ports。\r\n\r\n後來出社會工作,再加上 twbbs.org 商業化其實我不是很開心。整個系統放著 10 顆 SCSI 硬碟跑 RAID0,雖然有備份,但其實已經沒打算要在上面弄東西了,只是沒想到最後居然是掛在 SCSI 卡上面... 這批硬碟除了這十年外,還得加上先前 ccreader 的使用,差不多十五年還沒壞,早期的硬碟真的很神猛...\r\n\r\n\"\"\r\n\r\n掛掉後有人問我為什麼不把備份資料弄一弄再開站,除了上面講的原因外,現在交大的環境也不適合再弄這樣的服務了... 如果要繼續服務的話我希望在外面重新寫一份,而不是拿原來的資料與架構繼續做。\r\n\r\n最後,還是得感謝當年交大計中願意提供資源讓架設這個服務。當年我從上面學到很多東西,不僅僅是程式而已,還包括第一線客服並且了解使用者想要什麼。", + "title": "Group.NCTU.edu.tw (2003~2013)" + }, + { + "id": "3615", + "body": "dockerdotCloud 發展出來的 LinuX Container 管理程式。\r\n\r\n由於建議在 Linux Kernel 3.8 以上的版本跑,所以在 Ubuntu 12.04 LTS 上會需要 backport kernel,參考「ubuntu 12.04 kernel upgrade to 3.10」這篇的方法就可以了。\r\n\r\n
sudo apt-get install linux-image-generic-lts-raring\r\nsudo apt-get install linux-headers-generic-lts-raring
\r\n\r\n裝完重開機後應該就可以看到新版 kernel:\r\n\r\n
$ uname -a\r\nLinux GSLIN-DESKTOP 3.8.0-30-generic #44~precise1-Ubuntu SMP Fri Aug 23 18:32:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
\r\n\r\n接下來依照「使用 Docker/LXC 迅速启动一个桌面系统」這篇的方法,透過 ppa 安裝 docker。\r\n\r\n
sudo add-apt-repository ppa:dotcloud/lxc-docker\r\nsudo apt-get update\r\nsudo apt-get install software-properties-common lxc-docker
\r\n\r\n然後用標準的 ubuntu 系統,第一次跑需要抓檔案,但第二次跑就快很多了:\r\n\r\n
sudo docker run -i -t ubuntu /bin/bash
\r\n\r\n每次都是乾淨的環境,我第一次進去的時候 touch 一個檔案,第二次進去後就沒了:\r\n\r\n
gslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash\r\nWARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]\r\nroot@679a4301aecc:/# ls -al /tmp\r\ntotal 8\r\ndrwxrwxrwt  2 root root 4096 Apr 11 21:11 .\r\ndrwxr-xr-x 24 root root 4096 Sep 22 20:52 ..\r\nroot@679a4301aecc:/# touch /tmp/foo.txt\r\nroot@679a4301aecc:/# ls -al /tmp\r\ntotal 8\r\ndrwxrwxrwt  2 root root 4096 Sep 22 20:52 .\r\ndrwxr-xr-x 25 root root 4096 Sep 22 20:52 ..\r\n-rw-r--r--  1 root root    0 Sep 22 20:52 foo.txt\r\nroot@679a4301aecc:/# exit\r\ngslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash\r\nWARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]\r\nroot@7ced1a7c82bb:/# ls -al /tmp\r\ntotal 8\r\ndrwxrwxrwt  2 root root 4096 Apr 11 21:11 .\r\ndrwxr-xr-x 24 root root 4096 Sep 22 20:52 ..\r\nroot@7ced1a7c82bb:/# exit
\r\n\r\n另外可以參考「Docker: Git for deployment」這篇。\r\n\r\n看起來是拿來測試的好工具... 準備拿來測 Puppet。", + "title": "在 Ubuntu 12.04 LTS 上跑 Docker..." + }, + { + "id": "3625", + "body": "前幾天 Gmail 可以正常運作,但一直收不到信的問題由官方發公告出來解釋了:「More On Gmail’s Delivery Delays」。\r\n\r\n官方宣稱,這次的問題出自於兩個獨立的網路同時掛掉,造成 Gmail 的收信處理能力大幅下降:\r\n\r\n
The message delivery delays were triggered by a dual network failure. This is a very rare event in which two separate, redundant network paths both stop working at the same time. The two network failures were unrelated, but in combination they reduced Gmail’s capacity to deliver messages to users, and beginning at 5:54 a.m. PST messages started piling up.
\r\n\r\n最後是十個多小時後完全恢復。", + "title": "前幾天 Gmail 收信延遲的問題..." + }, + { + "id": "3627", + "body": "剛剛才看到 Nexmo 的公告,Nexmo 的 Voice API 以往只能吃文字,然後程式會發音,但現在則可以吃 WAV 或 MP3 格式的檔案直接播放了:「Nexmo’s Voice API Now Supports .wav and .mp3 Format」。\r\n\r\n連 API 的範例都直接給出來,好像很好玩的樣子... XD\r\n\r\n然後仔細看文件才發現 Speech 的部份是支援中文的!代碼 zh-cn 的男/女聲發音!", + "title": "Nexmo 的 Voice API 可以吃 WAV 與 MP3 格式了..." + }, + { + "id": "3629", + "body": "Imgur 宣佈支援 HTTPS:「100 million uniques, higher upload limits, and HTTPS support」。\r\n\r\n以這張 https://i.gslin.com/imgur/X3L4U.jpg 範例:\r\n\r\n\"\"\r\n\r\n同樣的 https://i.gslin.com/imgur/X3L4U.jpg 也會動,所以之後就可以使用 //i.imgur.com/X3L4U.jpg。\r\n\r\n看了 DNS 記錄,目前 i.imgur.com 是透過 CloudFlare 的 CDN 加速。", + "title": "Imgur 支援 HTTPS..." + }, + { + "id": "3633", + "body": "iThome 上看到「財政部財政資訊中心將釋出40億張電子發票的消費分析」,裡面提到:\r\n\r\n
為期3年的電子發票試辦期,終於要在2013年底告一段落,並於2014年正式上路。光是2012年,臺灣就開出了24.6億張的電子發票,財政部財政資訊中心(以下簡稱資訊中心)電子發票科科長劉醇錕更表示,以成長速度推估,2013年將開出40億張電子發票,占發票總開立數的一半。劉醇錕表示,這些電子發票將在未來以政府公開資料方式釋出,供企業、研究機構等使用。
\r\n\r\n資料的處理:\r\n\r\n
但在公開電子發票資訊之前,劉醇錕表示,資訊中心會進行「去識別化」,最終公開的資料,會以一個街區、或一個小行政區為單位,來模糊原始資料夾帶的資訊,而非以哪家店、哪個使用者為單位直接釋出原始資料(Raw Data),藉此來避免讓有心人士交叉分析出企業、消費者的個人資訊。
\r\n\r\n我馬上想到 AOL 當初 2006 年也是自信滿滿的匿名化後放出:\r\n\r\n這讓人超期待的...", + "title": "電子發票的數據..." + }, + { + "id": "3639", + "body": "MySQL 的開發者是用 Bazaar (bzr) 為版本控制系統,放在 Launchpad 上,不過 open source 領域目前總是有人會想要轉到 Git 上... XD\r\n\r\nPercona 提供 Oracle MySQL 的 Git mirror,目前是實驗性質:「Experimental Git mirror of Oracle MySQL trees」。\r\n\r\n如果只是要拉 MySQL source tree 下來看 (而且手上只有 Git,沒有裝 Bazaar 的人),可以透過這份拉出來... 還不確定更新的頻率 :o", + "title": "Percona 提供的 MySQL Git Mirror..." + }, + { + "id": "3641", + "body": "Netcraft 這篇「Wildcard EV certificates supported by major browsers」提到幾個重點...\r\n\r\n首先是 EV 規範內禁止使用 Wildcard certificate (出自「Guidelines ForThe IssuanceAnd Management Of ExtendedValidationCertificates」):\r\n\r\n
Wildcard certificates are not allowed for EV Certificates.
\r\n\r\n然後還是有人發 *.cclearning.accenture.com,而且主流瀏覽器會正常照 EV 模式顯示出來:(這邊拿 Google Chrome 的範例,原文有所有截圖)\r\n\r\n\"\"\r\n\r\n只有 Safari 的手機版本當作普通 certificate 處理的:(下面兩張圖,上圖是桌機版,下圖是手機版)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n被抓出來鞭後應該會修正... 吧?\r\n\r\nUpdate:感謝 comment 的糾正,Safari 的地方寫錯了...", + "title": "Wildcard EV Certificate..." + }, + { + "id": "3647", + "body": "在 Slashdot 上看到一段歷史:「The Chip That Changed the World: AMD's 64-bit FX-51, Ten Years Later」,以及引用的報導「The chip that changed the world: AMD’s 64-bit FX-51, ten years later」。\r\n\r\n當年 Intel 決定以 Itanium 架構為主,不相容於原來的 x86 架構,而 AMD 則是針對 x86 相容開發出 AMD64,而 AMD 的第一顆 AMD64 CPU 就是 FX-51。\r\n\r\n這個決策改變了整個產業的發展,也讓 AMD 在當時的市占率追近 Intel 不少,逼的 Intel 後來推出與 AMD64 相容的 EM64T。十年過去,現在看不到 Itanium 了...\r\n\r\n一段歷史...", + "title": "AMD 的 AMD64 (以及後來 Intel 的 EM64T)..." + }, + { + "id": "3649", + "body": "鑑於 NSA 監聽的關係 (國內最近也很流行這套?),最近國外介紹 StartSSL 的文章又熱門起來了:「Switch to HTTPS Now, For Free」。\r\n\r\n不過因為 StartSSL 多了憑證驗證的問題,使得一般人申請變得相當麻煩,所以就有很多文章介紹 :o\r\n\r\n\"\"\r\n這邊的 Generate Private Key 並不是你打算申請的 HTTPS 要用的,而是個人憑證...\r\n\r\n這次這篇介紹文用了大量的圖片截圖,並且把產生 private key 以及 csr 的指令都列出來,後面還教你怎麼設定 nginx,相較於其他文件,應該是很清楚了...", + "title": "用 StartSSL 申請免費 SSL 憑證的說明..." + }, + { + "id": "3655", + "body": "前幾天提到 Percona 把 Oracle MySQL tree 放一份到 GitHub 上:「Percona 提供的 MySQL Git Mirror...」。\r\n\r\n現在 Percona 自家產品的程式碼也放上去了:「Experimental GIT Mirrors of Percona XtraBackup, Percona Server plus Oracle MySQL trees」。\r\n\r\n包含了:\r\n\r\n目前開發都還是在 Launchpad 上,這邊只是 mirror...", + "title": "Percona 將自家產品程式碼也放一份到 GitHub 上..." + }, + { + "id": "3657", + "body": "pfSense 是一套很不錯的 firewall 以及 NAT 服務,上面還可以跑一切服務 (像是 OpenVPN 或是 Squid),不過後來都是用商用的硬體方案來處理...\r\n\r\n看到「Build your own pro-grade firewall」這篇突然想到要查 pfSense 是否可以 High Availability,如果做的夠好的話,其實可以用兩台機器來跑,成本相對低很多。\r\n\r\n結果查到這篇官方文件「Configuring pfSense Hardware Redundancy (CARP)」,裡面有幾個關鍵字,像是 XMLRPC Sync 似乎暗示了設定也可以同步?\r\n\r\n\"\"\r\n官方文件裡的配置圖。\r\n\r\n該測試看看了,兩台 server 也才十萬,但兩台能跑到 500Mbps+ 的硬體防火牆的價錢就貴多了... (不過比較省電?)", + "title": "用 pfSense 架設 Firewall (以及 NAT)" + }, + { + "id": "3659", + "body": "面試的時候曾經有面試者說手上沒有 big data 可以研究,所以對 big data 的理解僅限於理論,不過我對這種講法就...\r\n\r\n網路上有很多資料是很有用的:\r\n\r\n能玩的東西明明就很多... 另外還可以掃各種公開資料。", + "title": "對於學術研究用的 Big Data..." + }, + { + "id": "3663", + "body": "Finger 是個 1977 年發展的協定 (RFC 742 - NAME/FINGER,以及 1991 年的 RFC 1288 - The Finger User Information Protocol),現在幾乎廢棄不用了...\r\n\r\n2013 年,基於 OpenID 協定的 WebFinger 出現了!而且是進入 Standards Track 狀態了:「WebFinger is now RFC 7033!」。\r\n\r\n用了 OpenID 基礎以及 JSON 格式... 看起來 blog 可以先支援?至於其他的東西就還要再想想...", + "title": "WebFinger 協定" + }, + { + "id": "3665", + "body": "一路翻資料翻到 Skip-gram:「A CloserLook at Skip-gram Modelling (PDF)」,不確定是 2005 年 (出自「CiteSeerX — Citation Query A Closer look at Skip-gram modeling」) 還是 2006 年 (出自「CiteSeerX — A Closer Look at Skip-gram Modelling」) 的論文,不過 Google Scholar 是標 2006 年...\r\n\r\nSkip-gram 實際上的定義很簡單,就是允許跳幾個字的意思... 依照原論文裡的定義,這個句子:\r\n\r\n
Insurgents killed in ongoing fighting.
\r\n\r\n在 bi-grams 的時候是拆成:{insurgents killed, killed in, in ongoing, ongoing fighting}。\r\n\r\n在 2-skip-bi-grams 的時候拆成:{insurgents killed, insurgents in, insurgents ongoing, killed in, killed ongoing, killed fighting, in ongoing, in fighting, ongoing fighting}。\r\n\r\n在 tri-grams 的時候是:{insurgents killed in, killed in ongoing, in ongoing fighting}。\r\n\r\n在 2-skip-tri-grams 的時候是:{insurgents killed in, insurgents killed ongoing, insurgents killed fighting, insurgentsin ongoing, insurgents in fighting, insurgents ongoing fighting, killed in ongoing, killed in fighting, killed ongoing fighting, in ongoing fighting}。\r\n\r\n這樣就有辦法在整篇文章都是用「台灣大學」的情況下以「台大」找到文章,解決一些「同義詞」想要解決的問題。\r\n\r\n在論文裡有分析 coverage,不過這邊 coverage 是指什麼客觀評估方式就不知道了,等下來找找看到底是什麼...\r\n\r\n\"\"", + "title": "Skip-gram" + }, + { + "id": "3668", + "body": "Slashdot 上看到的:「Students Hack School-Issued iPads Within One Week」。\r\n\r\n\"\"\r\n\r\n就不解釋了 XDDD", + "title": "幹壞事永遠都是進步最大的原動力..." + }, + { + "id": "3670", + "body": "在 Hacker News 文摘上看到「UTF-8 – “The most elegant hack”」這篇。除了維基百科上的資料以外,Rob Pike 與其他人在 2003 年寫的 mail 也是相當重要的資料。\r\n\r\nKen Thompson 與 Rob Pike 兩位發展出來的 UTF-8 被譽為最優雅的 hack 真的一點都不為過。Unicode 1.0 在 1991 年 10 月公佈。之後就陸陸續續有表示的格式出來...\r\n\r\n相容於 ASCII 0-127 的 UTF-1 在 1992 年被提出來,但 parsing performance 並不好。\r\n\r\n1992 年 7 月,Dave Prosser 提出 FSS-UTF,很類似後來的 UTF-8 但缺乏 self-synchronizing 特性 (這個特性指的是,從字串中間可以很容易找到切割點)。\r\n\r\n1992 年 8 月,Ken Thompson 改善了 FSS-UTF,讓 bit 使用效率低一點,但因此擁有 self-synchronizing 特性。之後在 1992 年 9 月,Rob Pike 與 Ken Thompson 將 UTF-8 實做到 Plan 9 上。而 UTF-8 正式公開發表則是在 1993 年 1 月的 USENIX 上。\r\n\r\n\"\"\r\n\r\nUTF-8 的設計看起來很 hack,但卻有這些優美的特性:\r\n\r\n

與既有系統的相容性

\r\n\r\n只包含 ASCII 0-127 的字串是合法的 UTF-8 字串。\r\n\r\n重點是 0 被保留下來,也就是本來的 NULL-terminated 字串處理全部都可以沿用,這使得從 C 語言的 strcpy(),到一堆網路上已經跑很久的通訊協定,都可以繼續沿用。\r\n\r\n

極高的辨識性

\r\n\r\nUTF-8 很容易被判斷出來,引用維基百科的數字:\r\n\r\n
The probability of a random string of bytes which is not pure ASCII being valid UTF-8 is 3.9% for a two-byte sequence, and decreases exponentially for longer sequences.
\r\n\r\n非 ASCII 字串只要稍微有長度 (四個中文字,12 bytes?),判斷字串是否為 UTF-8 的正確性應該跟各種服務的 SLA 有得拼...\r\n\r\n

與 Unicode 的順序對應相容

\r\n\r\nUnicode 的編號順序與 UTF-8 相容,也就是說連傳統的 strcmp() 都可以直接拿來用:\r\n\r\n
Sorting a set of UTF-8 encoded strings as strings of unsigned bytes yields the same order as sorting the corresponding Unicode strings lexicographically by codepoint.
\r\n\r\n

避開 UTF-16 的 BOM

\r\n\r\nBOM 的 0xFE 與 0xFF 在合法 UTF-8 文件裡是看不到的,所以如果開頭有看到 BOM 時一定不是 UTF-8:\r\n\r\n
The bytes 0xFE and 0xFF do not appear, so a valid UTF-8 stream never matches the UTF-16 byte order mark and thus cannot be confused with it.
\r\n\r\n

self-synchronizing 特性

\r\n\r\n由於 encoding 的特性,UTF-8 字串要找下一個斷點是很容易的:\r\n\r\n\"\"\r\n\r\n找到符合這六種開頭的 string pattern 就是斷點。也因為如此,容錯率相當高。\r\n\r\n

可以容納所有 Unicode 字元

\r\n\r\n也因為 encoding 特性,UTF-8 理論值可以容納百萬個字元 (依照 RFC3629 的額外限制,是 1112064 個)。在還沒有找到很多外星文明之前,應該都還夠用。(2012 年發佈的 Unicode 6.2 也才十一萬個字元,110182 個字元)\r\n\r\n

Unicode 與 UTF-8 之間的轉換很方便

\r\n\r\n再次因為 encoding 特性,轉換幾乎是 bit 運算就可以操作完畢。(注意 Last code point 的值都切齊)\r\n\r\n

因為太多好處,變成超級標準了...

\r\n\r\n這是一個幾乎找不到缺點的 standard,所以早期很多 programmer 選擇的原因是「看了就喜歡」,於是就有大量的 library。接下來有大量的 standard (這還包括 XML standard) 直接挑明講 UTF-8 的處理能力是必要條件。\r\n\r\n

總結...

\r\n\r\nUTF-8 encoding 怎麼看都很 hack (看起來很隨意的把不同 Unicode 區段切割到不定寬度字集內,感覺不到特別的處理),但卻很完美的解決了「如果可以處理 8bits 時,要與現有系統相容」的問題。也因為這個 encoding 把問題解決得很乾淨 (UTF-8 解決不了的,其他人都解不乾淨),於是就變成超級主流 encodoing...\r\n\r\nGoogle 在 2012 年 2 月時就寫過一篇「Unicode over 60 percent of the web」,這還是扣掉 ASCII 的 20%!\r\n\r\n\"\"\r\n\r\n現在是 2013 年快年尾了,可以預期之後是 UTF-8 萬萬歲了...\r\n\r\n如果想要了解更細,可以參考維基百科的「Comparison of Unicode encodings」,裡面有與其他 Unicode 格式的比較。", + "title": "非常經典的 UTF-8..." + }, + { + "id": "3688", + "body": "在 Slashdot 上看到有人因為最近 NIST 被抖出來的事蹟 (SHA-3 的問題),而決定換掉 AES:「Silent Circle Moving Away From NIST Cipher Suites After NSA Revelations」。原報導在「Non-NIST Cipher Suite」。\r\n\r\n換掉 AES 不確定這是不是好主意...\r\n\r\nRijndael 從 1998 年公開後,2001 年被選為 AES,之後被廣泛應用在所有資安協定上,也因為被廣泛應用,全世界打了這十多年下來,都還是屬於可用的狀態。換成其他 cipher 會比較安全嗎?", + "title": "因為 NIST 而換掉 AES?" + }, + { + "id": "3692", + "body": "Zite 上看到 EdgeCast 也要進入 DNS 服務這個市場了:「CDN Provider EdgeCast Gets Into The DNS Market With Launch Of EdgeCast Route」。\r\n\r\n\"\"\r\n\r\n服務的頁面已經公開,並且公開價錢:「Managed DNS Provider | Outsourced DNS Service | Route | EdgeCast」,服務分成三種:\r\n\r\n

Standard Routing

\r\n\r\n利用 EdgeCast 的 IP Anycast Network 服務。每百萬個 query 是 USD$0.4 (超過十億個 query 的部份降到半價 USD$0.2)。\r\n\r\n

Adaptive Availability

\r\n\r\n除了 IP Anycast Network 外,還可以設定 health check 與 ratio (以達到 load sharing 的功能)。每百萬個 query 是 USD$0.6 (超過十億個 query 的部份降到半價 USD$0.3)。\r\n\r\n

Advanced Policy Routing

\r\n\r\n可以依照這些條件分析:GeoIP、GeoCountry、GeoCity、ASN、IP Group、Network Groups、Anycast PoPs 或是 IP Type。每百萬個 query 是 USD$1.5 (超過十億個 query 的部份降到 USD$1)。\r\n\r\n另外價錢還有 zone 的部份。前面 50 個 zone 是 USD$50/month (算是低消吧?),後面每 50 個 zone 是 USD$35/month。而 health check 的部份是每個 USD$0.5/month。\r\n\r\n可以設這麼細,而且又取這個名字,算是跟 Amazon Route 53 打對台?不過那個 Geo 系列以及 ASN 的部份看起來不賴啊,以前是自己寫 DNS resolver 處理這部份,把國外流量指到 CDN 上,然後台灣流量放在台灣的機房 (因為 CDN 不一定有台灣機房的 PoP)。\r\n\r\n找機會來看看效果如何...", + "title": "EdgeCast 提供的 DNS 服務:EdgeCast Route" + }, + { + "id": "3694", + "body": "標題不知道怎麼下比較好...\r\n\r\n一樣是在 Zite 上看到的消息,Firefox 將引入內建的 Flash Player,是以 JavaScript 實做的:「HTML5 Flash Player (Shumway ) landed」。\r\n\r\n專案在 GitHubmozilla/shumwayMozilla 的 Bugzilla 則是在「Bug 904346 - (shumway) [meta] add built-in SWF support to Firefox with Shumway」這裡。\r\n\r\n純 JavaScript 的實做版本,有機會 porting 到 Chrome 上嗎?感覺安全性問題會少很多?(或是被發現安全性問題的時間?)", + "title": "Firefox 以 JavaScript 支援 Flash" + }, + { + "id": "3696", + "body": "國內外資安研討會上都愛玩的主題:封包測錄分析。\r\n\r\n這次是 BruCON 2013 的記錄,有兩篇:「BruCON 0×05 Wrap Up」、「What Do Attendees During a Security Conference?」。\r\n\r\n第一篇首先是依照 OS 數量的分析:\r\n\r\n\"\"\r\n\r\n另外還有整體的數量分析:\r\n\r\n\"\"\r\n\r\n另外發現有大量的 OpenVPN 以及 IPsec 封包,這也的確是資安研討會應該要出現的東西... XD\r\n\r\n第二篇的分析也很有趣,像是對 DNS 的分析:\r\n\r\n\"\"\r\n\r\n大紅點是官方提供的 DNS (10.4.0.1),兩個小紅點是 Google 提供的 DNS 服務 (8.8.8.8 與 8.8.4.4),而黃點則是 mDNS。\r\n\r\n然後官方有提供兩包 50GB 的檔案... 要分析的人也可以拿去玩 XD\r\n\r\n然後提到 The Bro Network Security Monitor,找機會玩看看好了...", + "title": "資安研討會上的封包測錄..." + }, + { + "id": "3698", + "body": "Puppet 寫了一份新的入門文件:「Check Out Our New Beginner's Guide to Writing Modules」,實際的文件在「Beginner's Guide to Modules」這裡。\r\n\r\n文件不是給完全新碰 Puppet 的人讀的,你還是必須先知道基本的結構,這部份可以看「Learning Puppet」這份,尤其是名詞定義的部份。\r\n\r\n看過一次後覺得是從不同面向解釋 Puppet,跟原來的那份文件互補。最近剛好會用到...", + "title": "Puppet 新給的入門文件" + }, + { + "id": "3701", + "body": "一樣是在 Zite 上看到在分享要如何設計 API 的文章與影片:「Parse Developer Day Video Series: How to Design Great APIs」。\r\n\r\n\r\n\r\n算是觀念性的分享,很多觀念很有趣... 而不可避免的,講到 naming 的時候,PHP 又被拿出來婊... (沒辦法,這個程式語言的 naming 實在太經典 XD)", + "title": "如何設計好的 API" + }, + { + "id": "3703", + "body": "前幾天解密的文件證實了先前的傳言:美國法院可以以協助犯罪搜查的名義,強制商業公司交出 SSL Private Key 給 FBI,並且可以用「偵查犯罪中」的理由要求公司不得公開這件事情。\r\n\r\n報導在這:「Edward Snowden’s E-Mail Provider Defied FBI Demands to Turn Over Crypto Keys, Documents Show」,解密的文件 (整個系列的文件) 則在「Redacted Pleadings Exhibits 1 23」這邊可以讀到。\r\n\r\nEdward Snowden 的 E-mail 服務提供商 Lavabit 在七月時被法院要求配合調查,其中被要求交出 SSL Private Key:\r\n\r\n
A week later, prosecutors upped the ante and obtained the search warrant demanding “all information necessary to decrypt communications sent to or from the Lavabit e-mail account [redacted] including encryption keys and SSL keys.”
\r\n\r\n而且「交出 SSL key 這件事情」不得公開:\r\n\r\n
The judge also rejected Lavabit’s motion to unseal the record. “This is an ongoing criminal investigation, and there’s no leeway to disclose any information about it.”
\r\n\r\n而 Lavabit 最後決定以紙本形式提供:\r\n\r\n
In an interesting work-around, Levison complied the next day by turning over the private SSL keys as an 11 page printout in 4-point type. The government, not unreasonably, called the printout “illegible.”
\r\n\r\n在法院要求提供電子格式後,Levison (Lavabit 的頭) 決定讓 Lavabit 停止服務,同時因為受限封口令,網站上只能寫得很隱晦,表達對美國的不信任:\r\n\r\n\"\"\r\n\r\n這件事情預定要到第四巡迴庭去打:「Let's rally for Lavabit to fight for the privacy rights of the American people. | Rally.org」。", + "title": "美國法院可以強制公司交出 SSL Private Key..." + }, + { + "id": "3708", + "body": "剛剛在 Zite 上看到微軟希望 HTC 能夠將 Windows 移植到 Android 手機上:「Microsoft Said to Ask HTC for Windows on Android Phones」。\r\n\r\n這個想法... 很有趣啊?不過效果就不知道會怎麼樣...\r\n\r\n而 2013-Q2 智慧型手機的出貨市佔數據可以在 Gartner 這邊翻到參考資訊:「Gartner Says Smartphone Sales Grew 46.5 Percent in Second Quarter of 2013 and Exceeded Feature Phone Sales for First Time」。\r\n\r\n\"\"\r\n\r\nAndroid 是 79%,iOS 是 14.2%,Microsoft 系統是 3.3%,Blackberry 是 2.7%。", + "title": "微軟跟 HTC 討論在 Android 上跑 Windows 的可行性..." + }, + { + "id": "3713", + "body": "居然沒跟到這個消息...\r\n\r\n「香港開源年會 2013」(第一屆!) 將於 10 月 19 日在香港城市大學邵逸夫創意媒體中心舉辦,現在訂機票有點晚,不過還是可以過去交流...\r\n\r\n其實有些議程還蠻有興趣去交流的,不過剛好卡到員工旅遊啊... @_@\r\n\r\n\"\"\r\n\r\n該來找日本的 conference 了?@_@", + "title": "香港開源年會 2013" + }, + { + "id": "3715", + "body": "衛報網站上公開了 NSA (美方) 以及 GCHQ (英方) 如何對抗 Tor 的方式,包含了內部的投影片:「'Tor Stinks' presentation – read the full document」。\r\n\r\n投影片上可以看到,居然還有 workshop 可以參加...\r\n\r\n\"\"\r\n\r\n下面列出這份投影片的內容,要注意這是 2012 年的資訊了。\r\n\r\n

事實的介紹

\r\n\r\n\"\"\r\n\r\n先說明了不可能辨識出所有 Tor 使用者,只能透過人工找出少數的使用者。\r\n\r\n\"\"\r\n\r\n接下來說明了目前的概況。目前只能掌握少數的 Tor 節點,其中 entry node 與 exit node 會是辨識出 Tor 使用者的重點,如果能夠增加這些節點的數量,會對於辨識有很大的幫助。\r\n\r\n

要如何分析這些資訊

\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n透過 cookie 的交叉比對,有機會將 Tor 使用者與真實世界的流量連接起來,像是透過 DoubleclickID 這個值。\r\n\r\n\"\"\r\n\r\n接下來是想辦法建立資料庫,將 IP 與時間點的對應建立起來。利用這些資訊才有辦法知道這個 IP 的情況。\r\n\r\n

技術分析

\r\n\r\n接下來可以看到各種技術分析。包括對 Hidden Service 的攻擊 (2012 年當時沒有進度),另外試著用 Timing Attack 攻擊 (2012 年當時也沒有進度,不過有在研究了)。\r\n\r\n另外在 AWS 上建立節點也是 2012 年當時就進行的項目。\r\n\r\n

攻擊 Tor

\r\n\r\n各種攻擊手段,包含了如果有 ISP 可以配合攔截封包時的作法。以及攻擊不屬於自己的節點的方式。再來就是有沒有辦法癱瘓 Tor 節點...\r\n\r\n

總結

\r\n\r\n情報單位其實花了非常多力氣研究 Tor,但沒有很好的成果。Tor 算是直接再技術上 (數學上) 抵抗的相當頑強。這部內部文件流出後可以預期會有不少「應用」(只要是英美政府不喜歡的「應用」) 會往上發展。\r\n\r\n多增加 Tor 的節點看起來會是目前最直接的抵抗方式,而且這個抵抗方式對於一般人相對容易,達到了擴散容易的效果。", + "title": "NSA 與 GCHQ 對抗 Tor 的方式" + }, + { + "id": "3719", + "body": "在 Hacker News 文摘上看到「PostgreSQL Studio」這個軟體,看官網與畫面大概知道能做什麼事情:\r\n\r\n\"\"\r\n官網的 screenshot...\r\n\r\n看起來要做掉不少 phpPgAdmin 的事情,但畫面漂亮不少:\r\n\r\n\"\"\r\nphpPgAdmin 官網的 screenshot...\r\n\r\n不過 PostgreSQL Studio 是用 Java 寫的,要用 Apache Tomcat (或是其他 servlet 實做) 執行,先丟著好了...", + "title": "PostgreSQL Studio (phpPgAdmin 替代品?)" + }, + { + "id": "3722", + "body": "前幾天看到 Google 開源的 lmctfy (這名字還頗惡趣味,是「Let Me Contain That For You」的縮寫),是這樣介紹的:\r\n\r\n
lmctfy is the open source version of Google’s container stack, which provides Linux application containers.
\r\n\r\n看了一下說明,看起來跟 Docker 有點像啊?再查了查網路上的資料,發現有人更早之前寫過了:「lmctfy:Google的开源Linux容器」。\r\n\r\n如果是在 Ubuntu 12.04 上,需要 3.3 或 3.8 的 Linux kernel。不過目前 Docker 還夠用,應該不會花時間去研究這個...", + "title": "Google 開源的 lmctfy..." + }, + { + "id": "3724", + "body": "今天的 Hacker News 文摘上看到關於 Reflow 的問題:「Preventing 'layout thrashing'」。\r\n\r\nReflow 指的是改變 DOM 後造成的畫面重新計算以及 render。\r\n\r\nGoogle 有給過一些資訊:「Minimizing browser reflow」,Mozilla 也有給「Notes on HTML Reflow」,不過這兩篇都是概念性的文章...\r\n\r\n文章的作者寫了 FastDom,把 read 與 write 包起來一起處理 (read 一包,write 一包),不過這樣寫的時候就要小心當下真正的 DOM 的值了...\r\n\r\n不過如果只是處理 ordering 的問題,叫 FastDom 好像怪怪的...", + "title": "避免文件大量 Reflow..." + }, + { + "id": "3726", + "body": "UpdatePercona 自己也寫了一篇「A closer look at Percona Server 5.6」可以參考看看。\r\n\r\nPercona 推出 Percona Server 5.6.13-61.0,是 5.6 的第一個 GA 版本:「Percona Server 5.6.13-61.0 first GA release is now available」。\r\n\r\n這等好久了,MySQL 官方有給出「What's New in MySQL 5.6」,對我來說其中有幾個亮點需要測試:\r\n\r\n

效能

\r\n\r\n至少不能比現在的效能差。\r\n\r\n

對 memcache protocol 的支援

\r\n\r\n這是 5.6 的新功能,可以透過 memcache protocol 存取 InnoDB 的資料。如果可行,可以用在 HA memcache protocol 架構。\r\n\r\n

Time-Delayed Replication

\r\n\r\n看起來應該很有用,但一時間想不到可以用在哪裡... 應該是 vm 裡面多架幾台 slave 丟著?\r\n\r\n

Percona 版的修正

\r\n\r\nTwitter branch 的 Statement Timeout 看起來是個頗有趣的項目?可以想看看用在哪裡...\r\n\r\n

Overall...

\r\n\r\n總結來說,測試機測過後,先用在 DBRD + Heartbeat 的系統上 (只換一台,如果發現 5.6 版不好用,可以 downgrade),如果沒問題就再測試 memcache protocol,然後接下來就是等 Percona XtraDB Cluster 也出 5.6 版?", + "title": "Percona Server 第一個 5.6 上 GA 版本..." + }, + { + "id": "3731", + "body": "在「美國法院可以強制公司交出 SSL Private Key...」這篇提到法院文件顯示 Lavabit 的 SSL Certificate 已經被 FBI 拿走。\r\n\r\n消息公開後幾天,GoDaddy 終於記得要依照程序,主動把 Lavabit 的 SSL Certificate 撤銷:「GoDaddy Pulls Lavabit's Security Creds Because The FBI Got Ahold Of Its Encryption Keys」。\r\n\r\n巡迴庭的消息好像還沒出來...", + "title": "GoDaddy 將 Lavabit 的 SSL Certificate 撤銷了..." + }, + { + "id": "3733", + "body": "在 Twitter 上看到 tka 的 retweet,介紹了 Linux 下 Disk I/O 的調整:「PostgreSQL: Linux kernel I/O tuning」。\r\n\r\n文章裡介紹了三種 scheduler,NOOP、CFQ、Deadline,其中 CFQ 是系統預設值。\r\n\r\n其實 MySQL 的結論也差不多,Percona 在 2009 年的時候做過 benchmark,就直接看圖講故事吧:「Linux schedulers in tpcc like benchmark」。\r\n\r\n\"\"\r\n數字愈大愈好。\r\n\r\nnoop 與 deadline 相當接近,對於 i/o bound 的人都應該要調整 :p", + "title": "關於 Linux 的 Disk I/O 調整..." + }, + { + "id": "3735", + "body": "如標題:「Poll: What are your liked and disliked programming languages?」。\r\n\r\n直接看這張圖比較明顯:\r\n\r\n\"\"\r\n\r\n居然是 VB... XDDD\r\n\r\n不過 PHPJava 也沒好到哪裡去就是了...", + "title": "Hacker News 上對程式語言的投票..." + }, + { + "id": "3737", + "body": "Facebook 的 Database Engineering team 實作了 patch,讓 InnoDB 在 table scan 的速度大幅提昇:「Making full table scan 10x faster in InnoDB」。\r\n\r\n第一個 patch 叫做 Logical Readahead。第二個 patch 是針對 async i/o 的改善 (Submitting multiple async I/O requests at once)。\r\n\r\n引用文章內的幾段話就知道這幾個 patch 的功力了:\r\n\r\n
Logical backup size is much smaller. 3x-10x size difference is not uncommon.
\r\n\r\n備份出來的資料會變小,而且宣稱 1/3 到 1/10 不是罕見情況... -_-\r\n\r\n
With logical readahead, our full table scan speed improved 9~10 times than before under usual production workloads. Under heavy production workloads, full table scan speed became 15~20 times faster.
\r\n\r\n然後 table scan 的速度會快非常多... 10 倍?如果是平常就很操的 database 會更明顯?\r\n\r\n如果這幾個 patch 如果沒有什麼問題,可以預期會被 merge 到 PerconaMariaDB,至於 Oracle 官方的 source tree... 有的話當然很好,沒有的話也很正常?", + "title": "Facebook 的 InnoDB patch 讓 table scan 速度變快..." + }, + { + "id": "3739", + "body": "AWS 宣佈 EC2 的 Reserved Instance 可以換來換去升降級:「New - Modify Instance Type of EC2 Reserved Instance」。\r\n\r\n首先先把 Reserved Instance 的種類換成 unit:\r\n\r\n\"\"\r\n\r\n於是一台 m1.large 就是 4,可以換成四台 m1.small;反過來四台 m1.small 也可以換成一台 m1.large。\r\n\r\n要注意的是,這不表示一定會換成功...", + "title": "Amazon EC2 的 Reserved Instance 可以升降級..." + }, + { + "id": "3741", + "body": "T-Mobile 將要推出國際漫遊單一費率的資費方案:「T-Mobile to offer free unlimited international data, texts」。\r\n\r\n引用裡面的文字:\r\n\r\n
T-Mobile's latest shake-up puts international roaming rates in its sights, with the carrier eliminating fees for data and text messages entirely in more than 100 countries. It will also simplify the calling rates, charging a fixed rate of 20 cents per minute.
\r\n\r\n語音的部份,每分鐘新台幣 6 元?\r\n\r\n不過 unlimited international data 是有速度限制的:\r\n\r\n
Chief Marketing Officer Mike Sievert said the average speed customers would get would be around 128 kilobits a second.
\r\n\r\n如果要速度,多付錢可以解決問題:\r\n\r\n
T-Mobile hopes to make some of its money back with \"speed packs\" that customers can purchase on the fly to boost their connection speed temporarily. For $15, a customer gets a single day's worth of high-speed data up to 100 megabytes, while $20 gets one week at 200 megabytes and $50 gets two weeks and 500 megabytes. The speeds are more accustomed to T-Mobile's HSPA+ networks, since international roaming with LTE isn't broadly available.
\r\n\r\n在官方網站的「Simple Choice International Plans | Unlimited Data & Text | T-Mobile」上面寫的更清楚:\r\n\r\n
Only T-Mobile’s network can give you unlimited everything for everyone. Other carriers may even make you share minutes, messages, and data between you and your family. With the Simple Choice Plan, each line comes with unlimited talk, text, and data while on our home network—and starting October 20, unlimited data and text in over 100 countries at no extra charge. That means no overages just about anywhere you go. Plus, there's no annual service contract and it's easy to add additional lines.
\r\n\r\n現有用戶在漫遊時直接受益...\r\n\r\n不知道外國人辦這個划不划算,尤其是常常跑去國外的...", + "title": "T-Mobile 提供國際漫遊單一費率..." + }, + { + "id": "3744", + "body": "還沒投票前就有選舉結果了:「Oops: Azerbaijan released election results before voting had even started」。\r\n\r\n麻煩來台灣考察一下好嗎...\r\n\r\n\"\"", + "title": "亞塞拜然的總統選舉出包了..." + }, + { + "id": "3746", + "body": "在 Slashdot 上看到 Google 將發現安全問題的獎勵從自家產品延伸到 Open Source 專案上:「Google Offers Cash For Security Fixes To Linux and Other FOSS Projects」。\r\n\r\n官方的公告在「Going beyond vulnerability rewards」,規則則是在「Patch Rewards – Application Security – Google」。\r\n\r\n初期限制在這些專案上:(直接複製過來)\r\n\r\n獎勵金額從 USD$500 到 USD$3133.7,這邊的 31337 應該是出自「Leet」吧...\r\n\r\n這算是一種回饋社群的方式...", + "title": "Google 將發現安全問題的獎勵延伸到 Open Source 專案上..." + }, + { + "id": "3749", + "body": "Google 將在今年 11 月 11 日更新服務條款:「《服務條款》更新」,其中最重要的是:\r\n\r\n
釐清您的個人資料名稱和相片如何顯示在 Google 產品上 (包括評論、廣告和其他商業內容)。
\r\n\r\n可以到「分享推薦」裡關掉:\r\n\r\n\"\"", + "title": "Google 的服務條款更新了..." + }, + { + "id": "3752", + "body": "Percona 的人寫了一篇「Using keepalived for HA on top of Percona XtraDB Cluster」,是用 Keepalived 實作高可靠度架構。\r\n\r\n目前常見的文章是透過 HAProxy 達成,但 HAProxy 本身就會成為 SPOF,所以一般人的想法就是在 HAProxy 上跑 Keepalived,保持可靠度。但這個問題我之前就抱怨過,既然要跑 Keepalived (我的例子裡是 Heartbeat),為什麼不在 Percona XtraDB Cluster 上跑就好,load balance 的任務則可以透過 DNS round robin 達成:\r\n\r\n
We would standardly use keepalived to HA HAproxy, and keepalived supports track_scripts that can monitor whatever we want, so why not just monitor PXC directly?
\r\n\r\n不過我還是偏愛 Heartbeat,因為 Heartbeat 的功能多了一些,不過架構還是很簡單,實際用起來也發現不容易出問題。\r\n\r\n另外 Heartbeat 不論是在 Linux 還是 FreeBSD 上都跑得很好,我連內部機器用的 DNS resolver (跑 Unboound) 都上 Heartbeat。\r\n\r\n另外也因為 Keepalived 目前不支援 FreeBSD (參考「About \"ipvs\" and \"keepalived\"」這篇文章),所以也沒打算花時間測試了... :o", + "title": "Percona XtraDB Cluster 上用 keepalived 實作高可靠度架構" + }, + { + "id": "3754", + "body": "試著找出處,看起來是 Twitter:\r\n\r\n

【黒板の落書きがヤバイ⑥】最後の晩餐 pic.twitter.com/p1lycWZMWi

— 学生伝説記 ∞ (@warolintyo) May 21, 2013
\r\n\r\n\r\n經典的「最後的晚餐」,原圖是:\r\n\r\n\"\"\r\n\r\n呼~", + "title": "黑板塗鴉..." + }, + { + "id": "3756", + "body": "名聲不怎麼好的 GoDaddy 買下 Media Temple:「Momentous news: GoDaddy & (mt) Media Temple」。\r\n\r\n文章下面的 comment 滿滿的憤怒啊... 反正對 mt 的 co-founder 而言,也是脫手了?", + "title": "GoDaddy 買下 Media Temple..." + }, + { + "id": "3758", + "body": "Bruce Schneier 的 blog 上寫了一篇「Insecurities in the Linux /dev/random」,針對 /dev/random 的亂度找出弱點攻擊,雖然目前的攻擊看起來影響不大...\r\n\r\n論文被傳到 Cryptology ePrint Archive 上,名稱是「Security Analysis of Pseudo-Random Number Generators with Input: /dev/random is not Robust」。\r\n\r\nNSA 向世人展示了任何實做上的問題都可以成為漏洞的能力,這些純理論的研究也愈來愈被重視...", + "title": "對 /dev/random 的攻擊..." + }, + { + "id": "3761", + "body": "Update:Hikaru 在 Kalafina 的官方網誌上寫了一篇「『学生さんパワー!!』」,裡面有很多學園祭 Live 的事情。\r\n\r\n先前聽過三場 Kalafina,分別是 2010 年在台灣辦的兩場 Live (分別在 Y17 與華山),以及今年 (2013) 年初在 Shibuya O-EAST 辦的「Kalafina 5th Anniversary LIVE “oblivious”」(這場還在 Kalafina Live 散場後遇到一起來聽水樹 LIVE GRACE OPUS II 的台灣人,不過這是題外話了...),所以每次當 Kalafina 有 Event 或是 Live 時就會看看有沒有機會衝。\r\n\r\n剛好看到 Kalafina 受邀參加高千穂大学的學園祭,辦的日期是在員工旅遊的時間內,就請當時在日本出差的同事去 セブン-イレブン (7-11) 弄了兩張票:(運氣算不錯,有訂 blog 看到「Christmas Live、学園祭Live決定!!」這篇)\r\n\r\n\"\"\r\n\r\n由於這次跟同事一起去,到現場不像年初的時候找地圖迷路找很久 (Shibuya O-EAST 在山坡上,上去的時候還懷疑自己是不是走錯...),從飯店坐地鐵再轉 JR 京王線就可以到最近的車站,然後從車站出來後,路上有插高千穗祭的旗幟,所以就沿著旗幟與人群走,還蠻好找的。\r\n\r\n\"\"\r\n\r\n也因為 Live 的時間是學員祭其他活動都結束的時間,進門後直接往人群處走就會到體育館了...\r\n\r\n這是外面海報的樣子,拍的時候是 Live 結束的時候 (大約晚上七點多),因為沒控制好,所以看起來像白天...:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這張看起來就會比較像是在晚上拍的:\r\n\r\n\"\"\r\n\r\nLive 的歌單在 Twitter 上有人有發表了:\r\n\r\n

高千穂大学 kalafinaセトリ 満天 to the beginning 胸の行方 Door moonfesta~ムーンフェスタ~ ひかりふる consolation signal 音楽 アレルヤ sprinter (Encore) 夢の大地

— まっつん (@ma_kun_law) October 19, 2013
\r\n\r\n\r\n整場 Live 只有 80 分鐘,場地大約是一千人到一千五百人的規模。雖然在體育館內,而且偶而還是會有 echo,但這是第一次看 Kalafina 唱學園祭,沒看過唱的這麼 high 的 Keiko 啊,有種先喝了兩杯再上的感覺... XD\r\n\r\n現場很明顯有很多是常跑 Kalafina Live 的 fans,前奏一出來就知道要打什麼 call 的,不過大多數人還是不清楚,就在旁邊看著他們打 :p\r\n\r\n比較特別的是《アレルヤ》,這是《空の境界 未来福音》的主題曲,剛好前一天跟同事跑去看了電影,所以所有的歌曲都還算熟悉...\r\n\r\n結束後除了上面貼的那幾張以外,還拍了一些學園祭相關的... 這是出去的時候拍的入口:\r\n\r\n\"\"\r\n\r\n這次學園祭的 Live 是個很特別的經驗,有機會應該會再衝 :p", + "title": "Kalafina 在高千穗大學辦的學園祭上的 Live..." + }, + { + "id": "3767", + "body": "Percona 的人寫了一篇「utf8 data on latin1 tables: converting to utf8 without downtime or double encoding」,告訴你怎麼將 latin1 的 TEXT 欄位轉成 UTF-8,文章內有提到利用 BLOB 轉。\r\n\r\n不確定同樣方式能不能做在 VARCHAR 上面 (用 BINARY 轉?),但不知道會不會有 UNIQUE + prefix support 的問題?有遇到再來測試看看...", + "title": "將 latin1 的表格轉換成 UTF-8 表格..." + }, + { + "id": "3769", + "body": "Percona 的「InnoDB scalability issues due to tables without primary keys」這篇文章在討論 InnoDB 在沒有 PRIMARY KEY 時的效能問題。\r\n\r\n在討論效能問題前,應該先讀過 MySQL 官方文件裡提到 InnoDB index 架構的文章,其中就有提到 PRIMARY KEY 以及其他的 INDEX KEY 的底層架構:「InnoDB Table and Index Structures」。\r\n\r\nInnoDB 是 clustered index 架構 (關於 clustered index 的完整說明,可以參考維基百科的「Database index」條目),也就是說,資料本身 (row data) 存放時會按照某個順序存放,這邊的順序是按照這樣的方式定義的:\r\n\r\n另外,InnoDB 的 secondary index 會指到 PRIMARY KEY (B+Tree 的 value 部分是放 PRIMARY KEY)。\r\n\r\n所以,一般在規劃資料庫時建議的作法是:\r\n\r\n對於有大量 secondary index 的表格更應該這樣做 (因為可以省下大量空間)。而對於現代的 ORM 來說,也都幾乎要求要有 PRIMARY KEY,甚至有些 ORM 要求 PRIMARY KEY 必須是 single column。\r\n\r\n如果你都能了解後,再去看 Percona 討論沒有 PRIMARY KEY 的情況時,才能了解他們想要討論什麼事情... 裡面還包含了 InnoDB 格式的差異。", + "title": "用 InnoDB 時關於 PRIMARY KEY 的建議" + }, + { + "id": "3771", + "body": "看起來是飛出國那天發表的,Amazon CloudFront 支援 POST 了:「Amazon CloudFront - Content Uploads Via POST, PUT, other HTTP Methods」。\r\n\r\n標題上寫了不少東西,不過看起來都是一樣的... 這次的功能是把 POST 類的 HTTP method 往後送,所以整個網站都可以丟上 CloudFront,並且只用單一 domain 就可以同時處理靜態加速與動態修改。\r\n\r\n愈來愈接近其他商業 CDN 先驅能提供的功能了...", + "title": "Amazon CloudFront 支援 POST 了..." + }, + { + "id": "3776", + "body": "Dan Rayburn 的文章:「Level 3 To Surpass Limelight As #2 CDN In The Market, Based On Revenue」。\r\n\r\n這幾家還是很大... AkamaiLimelight NetworksEdgeCastAmazon。\r\n\r\nCDNetworks 已經被忽略了... 不過也對啦,這幾年完全沒有像樣的新功能 :o", + "title": "Level 3 的 CDN 業務..." + }, + { + "id": "3780", + "body": "看到「MeteoTester collects and tests the accuracy weather APIs」這篇文章介紹 MeteoTester 這個站,拿來統計氣象誤差值...\r\n\r\n在 about 頁面上有說明是統計 forecast.ioopenweathermap.orgwunderground.com 以及 worldweatheronline.com 這四個站的資料。\r\n\r\n拉出來的圖像是這樣:\r\n\r\n\"\"\r\n\r\n紅色是最高溫度,藍色是最低溫度,另外長條部份是降雨機率,然後三個值每個都有 range...\r\n\r\n不過不知道這個資料可以做什麼... @_@", + "title": "氣象統計:MeteoTester" + }, + { + "id": "3784", + "body": "在「AWS Direct Connect - More Connection Speeds, New Console, Multiple Accounts」這篇文章裡面提到了 AWS Direct Connect 可以接受 50Mbps~500Mbps 的頻寬了,而先前只接受 1Gbps 與 10Gbps...\r\n\r\n不過 500Mbps 的頻寬與 1Gbps 頻寬的 port 價錢是相同的,都是 USD$0.3/hour,其他較低的速度就依照 500Mbps 的比率計算。\r\n\r\n比較特別的是 50Mbps,是用 QoS 限制頻寬嗎?這樣的速度還蠻特別的...", + "title": "AWS Direct Connect 向下提供 50Mbps 的連線頻寬..." + }, + { + "id": "3786", + "body": "Percona 發了一篇「High-availability options for MySQL, October 2013 update」,比較目前 MySQL 上常見的 High Availability 機制。\r\n\r\n包括了五個系統:\r\n\r\n這些都是把 High Availability 做在 MySQL 上,讓前端的程式不需要操心的方式。都是有個固定的 IP address 保證可以讀寫。\r\n\r\n這五個方案都不完美,看環境需求而選擇使用。\r\n\r\n我一般給的建議還是 Heartbeat + DRBD + InnoDB,這個方法是極為成熟的方法,會遇到的問題網路上都已經討論過了。如果找 Percona 的人支援也是完全沒問題。", + "title": "Percona 的 MySQL High Availability 機制比較文" + }, + { + "id": "3788", + "body": "昨天一整天 php.net 網域下的網站都被擋掉:\r\n\r\n\"\"\r\n\r\n在 Twitter 上也有看到 Rasmus Lerdorf 在抱怨:\r\n\r\n

It appears Google has found a false positive and marked all of http://t.co/yKzgbWewmH as suspicious. pic.twitter.com/YDlHcUnCK6

— Rasmus Lerdorf (@rasmus) October 24, 2013
\r\n\r\n\r\nRasmus 說是 false positive (誤判),不過我是不太直接相信他講的話...\r\n\r\n剛剛看到 Netcraft 整理了一些資料出來「PHP.net blocked by Google: False positive or not?」,裡面有不少東西可以看...\r\n\r\n其中最後這段:\r\n\r\n
However, a short moment ago, a Hacker News user posted some obfuscated JavaScript that was found appended to a possibly cached version of the userprefs.js script, suggesting that the PHP.net website may have been compromised recently.
\r\n\r\n
The obfuscated JavaScript inserts an iframe into the webpage, which loads content from an external site known for distributing malware. Google Chrome blocks the inclusion of any content from known malware domains, although the injected content in this case no longer appears to be accessible.
\r\n\r\n這段有問題的 javascript code 的解讀可以在這裡看到說明。\r\n\r\n如果的確是 compromise,那這事就沒完了,接下來還要找是從哪個洞進來的... 不過以 php.net 的情況,(消音)...", + "title": "php.net 被擋的後續分析..." + }, + { + "id": "3791", + "body": "在 Zite 上看到這篇介紹 MySQL 效能調教的方式:「Ten ways to improve the performance of large tables in MySQL」。\r\n\r\n這邊就順著作者的建議一路寫下去。\r\n\r\n作者也是大力推薦用 InnoDB 解決問題。\r\n\r\nInnoDB 有個特別的功能 (相較於 MyISAM 而言。這個功能在 MySQL 5.5 預設就是開啟的) 是 change buffering,會延遲寫入 non-unique secondary index,讓多筆 secondary index 合併起來一起寫,這會改善寫入的效能。\r\n\r\nPartition 對於 index 的大小也會有幫助。InnoDB 的壓縮功能也是必備項目 (除非你的 Use case 很極端),減少資料量就直接減少 i/o 並且拉高 hitrate。\r\n\r\n再大量寫入資料時依照順序寫入會讓 InnoDB 寫入的順序僅可能連續。由於 InnoDB 的特性 (clustered index),這樣可以讓寫入速度變快很多。\r\n\r\n避免使用 UNIQUE key,因為 UNIQUE 的特性會犧牲很多效能...\r\n\r\n因為 secondary index 是指到 PRIMARY KEY 的值,所以 PRIMARY KEY 的值僅可能單純,以 INT 或是 BIGINT 為佳。\r\n\r\n第一次大量倒資料進系統時,可以先倒 data 以及 PRIMARY KEY 就好 (如上所說的,要依照 PRIMARY KEY 的順序倒進去),等倒完後再建立 secondary index,這樣速度會快很多。\r\n\r\n最後兩項就是,記憶體愈大愈好,硬碟愈快愈好,如果用 SSD 是可行的方案就用 :p", + "title": "十個改善 MySQL 效能的方式" + }, + { + "id": "3795", + "body": "在「Offline automatically displays online/offline indicators to your users」看到 Offline 這個軟體,可以偵測網路狀態,做出像 Gmail 在離線時重連的特效...\r\n\r\n在偵測到斷線時:\r\n\r\n\"\"\r\n\r\n然後是重連的效果:\r\n\r\n\"\"\r\n\r\n偵測到回復時的效果:\r\n\r\n\"\"\r\n\r\n支援 IE8+ 與其他瀏覽器...", + "title": "在瀏覽器內偵測連線是否正常..." + }, + { + "id": "3798", + "body": "最近幾天揭露的文件顯示 NSA 在監聽 GoogleYahoo! 在內部機房內的通訊:「NSA infiltrates links to Yahoo, Google data centers worldwide, Snowden documents say」。\r\n\r\n不是 Google 與 Yahoo! 之間的通訊,而是 Google 自家資料中心之間交換的資料 (以及 Yahoo! 自家資料中心交換的資料),像是這樣:\r\n\r\n\"\"\r\n\r\n重點在右半塊的內部通訊內容未必會被加密...\r\n\r\nSwitch 與 Router 要內建 Wirespeed IPsec 的時代要來臨了嗎... 40Gbps (甚至 100Gbps) 的 IPsec 能力!XDDD", + "title": "NSA 聽 Google 與 Yahoo! 跨機房的 LAN..." + }, + { + "id": "3800", + "body": "前幾天看到的大新聞,Cisco 實做了 BSD license 的 H.264 並且付了專利費用:「Open-Sourced H.264 Removes Barriers to WebRTC」。\r\n\r\n依照 Cisco 的說法,是為了推動 WebRTC 而決定這樣做的:\r\n\r\n
Many, including Cisco, have been backing H.264, the industry standard which today powers much of the video on the Internet. We strongly believe that interoperability is an essential goal of standards activities and that usage of H.264 by WebRTC means it will be able to interconnect, without transcoding, to a large set of existing clients from a multitude of vendors.
\r\n\r\n而 Mozilla 也打算用這份授權支援 H.264:「Video Interoperability on the Web Gets a Boost From Cisco’s H.264 Codec」。\r\n\r\n不過,source code 好像還沒放出來啊?在 OpenH264 這邊寫著「Source Code Coming Soon」...", + "title": "Cisco 將會付 H.264 的授權費用..." + }, + { + "id": "3803", + "body": "Google Apps 宣佈停止支援 IE9:「End of support for Internet Explorer 9」。\r\n\r\nIE9 是個很特別的版本,他並不是任何一個 Microsoft Windows 的內建瀏覽器,只支援 Windows Vista 以及之後的版本,所以 Windows XP 能用到最新的 IE 瀏覽器是 IE8。\r\n\r\n基於這樣的理由,會使用 IE9 的人都是另外再安裝的,算是比較進階的使用者。對於這些使用者,要他們升級到 IE10+ 或是其他瀏覽器應該不是太大的問題,所以 Google Apps 這麼快就不支援 IE9 也是愈其中的事情了 :p", + "title": "Google Apps 停止支援 IE9" + }, + { + "id": "3806", + "body": "前幾個禮拜在 Slashdot 上看到政府單位花了 54 萬美金建立藍牙監控網路,利用這些資訊可以分析出車流狀況:「Connecting To Unsecured Bluetooth Car Systems To Monitor Traffic Flow」,引用的報導在:「Bluetooth can help local traffic flow」。\r\n\r\n有 3% 到 5% 的車流會有 Discoverable 模式的藍牙裝置,偵測這些 MAC address,就能夠判斷出車子行經的時間點與路線。\r\n\r\n不過監控完後能幹什麼啊?我又想到 NSA 了...", + "title": "用 Discoverable 藍牙裝置的資訊分析車流狀況..." + }, + { + "id": "3809", + "body": "在 Bruce Schneier 的 blog 上看到這篇推薦文章,介紹橢圓曲線密碼學的基礎:「Elliptic Curve Crypto Primer」。被推薦的文章是「A (relatively easy to understand) primer on elliptic curve cryptography」這篇。\r\n\r\n\"\"\r\n\r\n當初在學校的時候學這個是靠著數學系代數的背景硬吃,看了一下這篇介紹,講得超級淺啊...\r\n\r\n建議要再研究的人還是看看 1985 年的「Elliptic curve cryptosystems」,只有七頁,這篇就是 ECC 的起源。", + "title": "橢圓曲線密碼學..." + }, + { + "id": "3812", + "body": "Mozilla 推出定位服務:「Introducing the Mozilla Location Service」,也就是 Mozilla Location Service。\r\n\r\n行動裝置利用收到的 WiFi 以及基地台訊號資訊定位的服務。這也是 GPS 定位以外最常被用到的方法 (尤其是室內與地下)。\r\n\r\n維基百科的「Cell ID」這個條目可以看到很多類似的服務,可以看到兩個比較大的:\r\n\r\n不過 Mozilla 的名號使得 Mozilla 推出的這個服務成長的相當迅速:\r\n\r\n\"\"\r\n\r\n可以看出來 Mozilla 一宣佈後才一個多禮拜就直接 double,不知道要到什麼程度才會趨緩...\r\n\r\n目前雖然比起其他的服務還差了一大截,不過有希望在半年一年內成為權威的 Location Service...", + "title": "Mozilla 推出的定位服務..." + }, + { + "id": "3814", + "body": "微軟對 Windows XP 的支援到 2014 年 4 月 8 日:\r\n\r\n\"\"\r\n出自「Support is ending for Windows XP - Microsoft Windows\r\n\r\n而 Google Chrome 也宣佈只支援到 2015 年 4 月 (晚一年):「Extending Chrome support for XP users until April 2015」。\r\n\r\n目前 Mozilla 還沒說什麼,不過應該也不會比 Google Chrome 長太久吧,畢竟 Windows 7 的市占率一直在提昇...", + "title": "Windows XP 上的瀏覽器..." + }, + { + "id": "3816", + "body": "Slashdot 上看到的舊聞,Dell 變成私人公司了:「Dell Is Now a Private Company Again」。\r\n\r\nDell 官方的新聞稿在這:「Dell Completes Go-Private Transaction」。\r\n\r\n下市後不知道會怎麼發展...", + "title": "Dell 完成下市轉為私人公司..." + }, + { + "id": "3818", + "body": "AWS Storage Gateway 推出新的「磁帶」模式:「Create a Virtual Tape Library Using the AWS Storage Gateway」。\r\n\r\n原先的 AWS Storage Gateway 只支援兩種模式:\r\n\r\n上面兩種方式對於 client 都還是 block storage (random access),可以用 iSCSI 掛上來用。\r\n\r\n新的 Gateway-Virtual Tape Library (Gateway-VTL) 則是模擬磁帶架構,除了可以丟到 Amazon S3 上以外,也可以丟到 Amazon Glacier 上!XD\r\n\r\n很有趣的架構啊... XD", + "title": "AWS Storage Gateway 推出新的模式..." + }, + { + "id": "3820", + "body": "Linode 剛剛宣佈 NodeBalancer 支援 SSL 了:「NodeBalancer SSL」。\r\n\r\n\"\"\r\n\r\n也就是 SSL offload,在前端解開 SSL 後往後端用的是 HTTP,也就可以帶入 X-Forwarded-For 了...", + "title": "Linode 的 NodeBalancer 支援 SSL 了..." + }, + { + "id": "3822", + "body": "在 Hacker News Daily 上看到的英文打字遊戲:「Z-Type」。\r\n\r\n\"\"\r\n\r\n遊戲的內容讓我想到 TTOTD 啊...\r\n\r\n\"\"", + "title": "打字遊戲..." + }, + { + "id": "3824", + "body": "Twitter 上看到 Gasol 轉推的 OpenSSH 安全性問題:「OpenSSH Security Advisory: gcmrekey.adv」。\r\n\r\n開頭就直接寫:\r\n
If exploited, this vulnerability might permit code execution with the privileges of the authenticated user and may therefore allow bypassing restricted shell/command configurations.
\r\n這噴飯了... OpenSSH 的安全性相當強,這次出這種包... XDDD\r\n\r\n影響的範圍是 OpenSSH 6.2 與 6.3,並且 OpenSSL 有編 AES-GCM:\r\n
OpenSSH 6.2 and OpenSSH 6.3 when built against an OpenSSL that supports AES-GCM.
\r\n\r\n如果不允許升級到 OpenSSH 6.4,那麼暫時性的解法是不允許 AES-GCM,在 /etc/ssh/sshd_config 內可以設:\r\n
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc
\r\n\r\n結果 FreeBSD 9.2 看起來在範圍內中槍,先上 workaround 再來等 freebsd-update 提供的修正吧...", + "title": "OpenSSH 安全性問題..." + }, + { + "id": "3827", + "body": "衛報 (The Guardian) 對 Snowden 爆料的事情開了一個特刊:「NSA files decoded: Edward Snowden's surveillance revelations explained」。\r\n\r\n\"\"\r\n\r\n首先,Snowden 爆料 NSA 這件事情的熱潮一直在延續 (一直都很精彩),而且衛報本來就是在這整件事情裡面佔有很重要的角色,由衛報做這個特刊並不意外。\r\n\r\n但衛報這個頁面利用 HTML5 video 與大量 CSS3 效果,向全世界展示了「網站上的特刊可以這樣做!」,強烈建議有在關注這個主題的企劃,以及視覺設計的人花時間去看看整體的呈現。\r\n\r\n以往類似的東西要嘛就是主題不夠精彩,要嘛就是呈現不夠精彩。這次因為 Snowden 的爆料已經持續幾個月了,衛報自然願意花大量的資源專訪 (於是可以看到不少 video 短片) 以及整理。在手上素材夠多,以及一流的呈現方式,造就了這個精彩的特刊。", + "title": "英國衛報對 Snowden 爆料 NSA 的特刊..." + }, + { + "id": "3830", + "body": "有陣子沒看到 Wikipedia 出現 Squid 發生錯誤的畫面了,記錄一下:\r\n\r\n\"\"", + "title": "有陣子沒看到 Wikipedia 出問題了..." + }, + { + "id": "3832", + "body": "「Don't Pipe to your Shell」這篇文章給了一些有趣的例子。\r\n\r\n很多工具都提供 pipe to shell 的方式安裝,像是這樣的形式:\r\n\r\n
wget -O - http://example.com/install.sh | sudo sh
\r\n\r\n先不管「應該用 HTTPS 以確保內容不會被改」的問題,如果 wget 傳到一半斷掉會發生什麼事情呢?像是作者給的例子:\r\n\r\n
TMP=/tmp\r\nTMP_DIR=`mktemp`\r\nrm -rf $TMP_DIR
\r\n\r\n如果傳到最後一行的 rm -rf $TMP 就斷掉 (後面的 _DIR 斷掉) 會發生什麼事情呢?XDDD\r\n\r\n如果 shell 是這樣寫呢:\r\n\r\n
rm -rf /tmp/$TMP_DIR
\r\n\r\n然後傳到 rm -rf / 就斷線... XD\r\n\r\n所以還是先抓下來再執行吧,可以避免意外發生 :p", + "title": "避免直接 pipe 進 shell..." + }, + { + "id": "3835", + "body": "出自 Lawrence Lessig 的 blog:「Wow, or from the When-Apple-Became-the-Borg Department」。\r\n\r\nLawrence Lessig「這位 iPhone 用戶」在升級到 iOS 7.0.3 之後發生了 WiFi 問題,然後跑到蘋果的論壇上翻,發現很多人也愈到了同樣的問題...\r\n\r\n然後 Lawrence Lessig 跑到自己的 blog 上發表... 就演變成 PR 事件了 XDDD (不過蘋果好像沒在怕的...)\r\n\r\n維基百科的連結:「勞倫斯·雷席格」、「Lawrence Lessig」,現任哈佛法學院教授,另外也是 Creative Commons 創辦人。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n拿使用條款砍他文章,hmmm...", + "title": "蘋果砍了 Lawrence Lessig 的貼文..." + }, + { + "id": "3837", + "body": "Percona 寫了一篇文章,說明在 MySQL core dump 後,要如何從 core file 撈出當時有哪些 query 在跑:「How to Extract All Running Queries (Including the Last Executed Statement) from a Core File?」。\r\n\r\n一年前 Percona 的人也有寫一篇「How to obtain the “LES” (Last Executed Statement) from an Optimized Core Dump?」,今年這篇則是改良版,可以看到操作的方式便簡單了...\r\n\r\n雖然大家都不喜歡 MySQL crash,但知道爆炸當時有哪些 query 對於後續的分析有很大的幫助,先紀錄起來,如果真的不幸用到,會比較快找到資料...", + "title": "從爆炸的遺跡尋找蛛絲馬跡:在 MySQL crash 後,從 core file 找出當時有哪些 query 在執行" + }, + { + "id": "3839", + "body": "在 Slashdot 上看到 Feedly 強迫使用者使用 Google+ 帳號登入:「Feedly Forces Its Users To Create Google+ Profiles」,官方的公告在「Google+ Authentication」這裡。\r\n\r\n然後就瞬間被幹爆... 現在官方公告的標題是「Google+ Authentication [Rolled back!]」,已經先 rollback 回來了。接二連三的幹蠢事,過陣子應該還是會再發生蠢事吧...", + "title": "Feedly 強迫使用者改用 Google+ 帳號登入..." + }, + { + "id": "3841", + "body": "在「Internet Archive's San Francisco Home Badly Damaged By Fire」看到 Internet Archive 發生火災,官方也有公告出來了:「Fire Update: Lost Many Cameras, 20 Boxes, and No People」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n沒有人受傷,服務也都正常。發生火災的地點並不是辦公室,而是掃描中心 (scanning center),依照敘述,應該是將類比資料 (紙本、相簿之類的) 掃成電子格式的場所。", + "title": "Internet Archive 建築物發生火災..." + }, + { + "id": "3844", + "body": "在 Hacker News 上看到的舊文章,在「IN CSS, “PX” IS NOT AN ANGULAR MEASUREMENT AND IT IS NOT NON-LINEAR」這篇文章裡面,標題就直接提到「pixel 並非生而平等」...\r\n\r\n文章裡的 pixel 的定義是:\r\n
a pixel is defined as the smallest object that can be displayed on a device
\r\n\r\n但我找不到這句話的出處...\r\n\r\n到是 CSS 2.1 的 PDF 裡可以看到 px 的定義是:\r\n
px: pixel units — 1px is equal to 0.75pt.
\r\n以及 pt 的定義:\r\n
pt: points — the points used by CSS are equal to 1/72nd of 1in.
\r\n而連 in 都有定義:\r\n
in: inches — 1in is equal to 2.54cm.
\r\n然後 cm 這個縮寫定義到公制:\r\n
cm: centimeters
\r\n\r\n看起來不像是有問題啊?另外是還有對 reference pixel 的定義,看起來也很明確啊:\r\n
The reference pixel is the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm’s length. For a nominal arm’s length of 28 inches, the visual angle is therefore about 0.0213 degrees. For reading at arm’s length, 1px thus corresponds to about 0.26 mm (1/96 inch).
\r\n\r\n暫時不考慮這個問題... 有機會再回頭來看好了 @_@", + "title": "CSS 裡,px 的定義並沒有保證線性...?" + }, + { + "id": "3847", + "body": "先講結論,不要用,甚至連 copper 這家公司的產品都應該避開。\r\n\r\n看到「Stackdock: Blazing Fast Docker-as-a-Service with SSDs – for $5」這篇文章,提到用 Docker 建立的服務。\r\n\r\n首先是註冊流程就很有問題,註冊完後他要你收信登入 (這邊沒什麼問題),結果收信後發現他的連結是:\r\n
https://stackdock.com/login?email=my_account@gmail.com
\r\n\r\n意思就是根本不用認證... (暈倒)\r\n\r\n當你想看使用條款,回到官網 https://stackdock.com/ 上發現沒有使用條款?另外在母站 http://copper.io/ 也沒有?\r\n\r\n再來收費方式也不清楚,只說了 USD$5/month,但如果以 Docker 的性質,開一次就收 USD$5,那麼就太鳥蛋了。但也沒有講是按照「小時」收費,還是按照「日」收費...\r\n\r\n登入後 UI 動線上卡卡的 (速度也不太快,不過應該跟放在德國有關),如果你建立 Deck 時 (像是樣板) 沒有開 Instance,你是沒辦法用儲存好的 Deck 開 Instance 的... (會 failed,然後只有一個「read timeout reached」的錯誤訊息...)\r\n\r\n你只有在建立時選擇「Save & Distill Drop」才有機會建立起來 (不過還是有可能會失敗)。\r\n\r\n如果想要改密碼而點選上方的 Profile 時,發現被導到 sso.copper.io,而 sso.copper.io 是沒有 HTTPS 的,而且修改密碼時不需要輸入原密碼?(那你本站用 HTTPS 幹嘛啊?更該保護的不保護是怎樣?)\r\n\r\n然後在 sso.copper.io 按下 logout 要二十秒... 然後出現白頁... -_-\r\n\r\n最後,在測完後,我找不到地方 cancel 信用卡...\r\n\r\n這家公司有滿滿的問題...", + "title": "提供 Docker 服務的 Stackdock... (不要用!)" + }, + { + "id": "3849", + "body": "在「Use a Google Spreadsheet as your JSON backend」這篇看到的,整篇的重點是這個 url:\r\n
https://spreadsheets.google.com/feeds/list/PUT-KEY-HERE/od6/public/values?alt=json
\r\n中間的 PUT-KEY-HERE 是文件的 key。當然,文件本身要公開發佈出去才能夠過 JSON 取得資料。\r\n\r\n另外原文章裡面也有提供 JSONP 的方式可以使用,還蠻有趣的方式...", + "title": "拿 Google Spreadsheet 當作 JSON backend..." + }, + { + "id": "3852", + "body": "剛剛看到 AWS 宣佈 AWS IAM 支援 SAML 2.0:「AWS Identity and Access Management Using SAML」。\r\n\r\nSAML 是 Single Sign-On 協定的一種,2001 年就推出來了,不過其中用到的架構頗為複雜,由於是 XML 交換技術,再加上要在 XML 上面簽名 (XML Signature),其實我不是很喜歡這東西... @_@\r\n\r\n當初會硬要接觸是因為 Google Apps 的 SSO 是使用 SAML,真是懷念啊...\r\n\r\n\"\"\r\n\r\n由於是個公開標準,有不少企業 SSO 方案都有支援 SAML。而 AWS IAM 支援 SAML 就相當於讓控管的部份整合起來了... 我好像也應該來弄弄了?", + "title": "AWS IAM 支援 SAML 2.0" + }, + { + "id": "3854", + "body": "AWS 的官方公告出來了:「Amazon RDS for PostgreSQL - Now Available」。\r\n\r\n\"\"\r\n\r\n而且 AWS 上 MySQL 有的 feature,PostgreSQL 都有:\r\n\r\n而且是 PostgreSQL 9.3 (雖然是 9.3.0),如果本來自己用 EC2 搞 PostgreSQL 的都可以切過去了 :p", + "title": "Amazon RDS 支援 PostgreSQL 了..." + }, + { + "id": "3856", + "body": "微軟公告將在 2016 年拒絕只有 SHA-1 的 SSL Certificate:「Security Advisory 2880823: Recommendation to discontinue use of SHA-1」。微軟的力量主要是對 IE 瀏覽器的控制。\r\n\r\n可以看到文章裡把 MD5 的歷史也拿出來比較,然後對照到 SHA-1,所以宣佈 2016 年後就不吃只有 SHA-1 的 SSL Certificate\r\n\r\n比較新的簽章都包含了比較強的 cryptographic hash algorithm,像是 SHA-256 的:\r\n\r\n\"\"\r\n\r\n現在差不多 2013 年年底,所以大約還有兩年的時間...", + "title": "微軟將在 2016 年會拒絕 SHA-1 的 SSL 安全憑證..." + }, + { + "id": "3858", + "body": "Google Online Security Blog 上對四種 cipher 的分析:「A roster of TLS cipher suites weaknesses」。\r\n\r\n分別是 RC4、AES-CBC、AES-GCM、ChaCha20-Poly1305 四個 cipher。其中 RC4 與 AES-CBC 的問題都很多,而 AES-GCM 與 ChaCha20-Poly1305 是目前還沒有有效攻擊的 cipher。\r\n\r\n前面三個都算熟悉,第四個是到是頗意外會出現... 不過 ChaCha20-Poly1305 不只一家打算跳下去實做了:\r\n\r\nChaCha20 與 Poly1305 都是 D. J. Bernstein (djb) 的作品,不知道 OpenSSL 會不會納進去...\r\n\r\n在「ChaCha20 and Poly1305 for TLS」這邊有些為什麼有了 AES-GCM 後還要用 ChaCha20-Poly1305 的原因,主要是速度考量。兩者的速度差非常多...", + "title": "Google 對四個 Cipher 的分析... (以及 ChaCha20-Poly1305)" + }, + { + "id": "3862", + "body": "Facebook 利用 Google 所發展的 LevelDB 開發了 RocksDB,跟 LevelDB 相同,仍然是 persistent key-value store,重點在於能夠使用多個 CPU 增加效能的能力:\r\n\r\n
RocksDB builds on LevelDB to be scalable to run on servers with many CPU cores, to efficiently use fast storage, to support IO-bound, in-memory and write-once workloads, and to be flexible to allow for innovation.
\r\n\r\n在 Performance Benchmarks 這邊可以看到效能的數據,主要都是跟 LevelDB 比較。比較的時候不只是寫了快了多少,而是包含原理都有寫出來。\r\n\r\nsource code 在 GitHub 上可以翻到:facebook/rocksdb,除了 source code 外,還發現裡面有 PATENTS 這個檔案,裡面針對專利的部份給予豁免... 好像很少看到?", + "title": "Facebook 發展的 RocksDB..." + }, + { + "id": "3868", + "body": "因為最近幾天是 re:Invent,所以 AWS 在這個期間會丟出很多新玩意。\r\n\r\n這次推出的是 AWS CloudTrail,會將 API call 記錄起來存到 Amazon S3 或是透過 Amazon SNS 發出,於是你就可以利用這些資料分析出各種想要撈出的資訊:「AWS CloudTrail - Capture AWS API Activity」。\r\n\r\n\"\"\r\n\r\n目前只支援北美的 US East (Northern Virginia) 以及 US West (Oregon),也就是 us-east-1 與 us-west-1。", + "title": "Amazon 推出 AWS CloudTrail,可以稽核 API 使用量..." + }, + { + "id": "3871", + "body": "不知道是只有數分 (數據通訊分公司) 有問題,還是其他的也有問題:\r\n\r\n這是對 Berkeley 的 128.32.136.3 的 SmokePing 資料:\r\n\r\n\"\"\r\n\r\n這是對 code.jquery.com 的 SmokePing 資料:\r\n\r\n\"\"\r\n\r\n可以看出來有些狀況,不過目前看起來正常了 (應該是陸陸續續在調整),但在「HiNet網站公告」還沒看到原因...", + "title": "中華電信的美國線路出問題..." + }, + { + "id": "3874", + "body": "讓我意外的是,只有 FreeBSD 10.0-BETA (還沒出 RELEASE 的版本) 有問題,9.2-RELEASE 並不在內:「OpenSSH AES-GCM memory corruption vulnerability」。\r\n\r\n本來 9.2 的機器有上 workaround 把 AES-GCM 強制拔掉,看起來可以 revert 回來了...", + "title": "FreeBSD 對 OpenSSH 的安全性更新..." + }, + { + "id": "3876", + "body": "之前寫過一篇「熱 MySQL 的方法...」,主要是利用 InnoDB 在 SELECT COUNT(*) 時會掃過一次 primary key 來熱:\r\n\r\npt-find --charset=utf8 --print -h $1 -u USER -p PASSWORD | xargs -t -P8 -I% -n1 sh -c \"echo 'SELECT COUNT(*) FROM %;' | mysql -h $1 > /dev/null\"\r\n\r\n但想要熱整個表格時 (data 部份),這個方法就不夠力了,今天才想到可以這樣做:\r\n\r\nSELECT COUNT(*) FROM (SELECT * FROM table_name) t;\r\n\r\n這方法會把整個表格資料拉出來,但又不會造成大量的網路 i/o (以及洗畫面)。實際測過後發現效果還不錯... (對於 table scan 使用量很大的表格,靠這個把整個表個塞進 InnoDB buffer)", + "title": "熱 MySQL InnoDB 的方式..." + }, + { + "id": "3878", + "body": "維基百科對於針對維基百科條目「美化」的公關公司反擊了:「Wikimedia Foundation sends cease and desist letter to WikiPR」,PDF 可以在「2013-11-19_C&D_letter_to_WikiPR_from_Cooley.pdf」取得。\r\n\r\n主要是以使用者條款作為依據,要求對方禁止對維基百科上的文章「美化」(像是移除負面的事實),不過看起來這種事情只會轉入地下,不會消失... :p", + "title": "維基百科開始對公關公司反擊了..." + }, + { + "id": "3881", + "body": "在同事的 Facebook 上看到 niconico 動畫 將連到 NTT Com 的線路從多條 10Gbps 升級到 100Gbps 了:「niconico のドワンゴに NTT Com が 100Gbps イーサネットサービスを開始」。\r\n\r\n\"\"\r\n\r\n影音網站的頻寬用量跟其他網站不太能比 :p", + "title": "niconico 動畫對 NTT Com 的 100Gbps..." + }, + { + "id": "3885", + "body": "在 Percona 的 blog 上看到 Percona XtraDB Cluster 出 5.6 版 (測試版) 了:「Percona XtraDB Cluster 5.6.14-25.1 Beta is now available」。\r\n\r\n也就是 Galera ClusterMySQL 5.6 上的版本...\r\n\r\n在 5.6 上有的功能都會有,也就是說,InnoDB 的 memcache interface,以及 FULLTEXT 功能都可以用?\r\n\r\n另外在 comment 也有討論到要如何從 PXC 5.5 升級到 5.6 (不產生 downtime),看起來也是噓要花時間 PoC 過後才能確認... 就算正式釋出,應該還是會觀望看看。", + "title": "Percona XtraDB Cluster (PXC) 開始測試 5.6 版了..." + }, + { + "id": "3888", + "body": "維基百科宣佈提供 OAuth 服務:「OAuth now available on Wikimedia wikis」。\r\n\r\n不過看起來是用 OAuth 1.0a (依照「Extension:OAuth」的說明),而非現在流行的 OAuth 2.0... 算是起個頭?", + "title": "維基百科的 OAuth..." + }, + { + "id": "3890", + "body": "Twitter 宣佈他們的 HTTPS 連線要上 PFS (Perfect Forward Secrecy) 了:「Forward Secrecy at Twitter」。\r\n\r\n回頭查了 F5 要到哪個版本才支援 PFS,看起來要 11.2.1 之後的版本有支援... (出自「BIG-IP LTM and TMOS 11.3.0」這份文)\r\n\r\n目前有一組已經是 11.2.1 之後的版本,這樣看起來好像也可以開看看?", + "title": "Twitter 也要上 PFS 了..." + }, + { + "id": "3892", + "body": "Update:2016 年的架構可以在「Stack Overflow 公開 2016 的架構」這邊看到。\r\n\r\nStack OverflowNick Craver 貼出目前 Stack Overflow 的現況:「What it takes to run Stack Overflow」。\r\n\r\n公開出來的資料不包括 CDN 的部份,可以看出整個架構很精簡啊... 然後還貼出機房照片:\r\n\r\n\"\"\r\n\r\n可以看出很多機器都很大台,尤其是 RAM 的部份。而資料庫主機則是 384GB RAM + 1.8TB SSD...\r\n\r\n資料庫的讀寫比是 40% read + 60% write,應該是 cache 擋下非常大的讀取量?\r\n\r\n然後有一句粗體字:\r\n
The cost of inefficient code can be higher than you think.
\r\n這句話... XD", + "title": "Stack Overflow 的現況..." + }, + { + "id": "3894", + "body": "Percona XtraDB Cluster 5.6 用的是 Galera Cluster 3.x 的 patch,所以 Percona 的人寫了一篇介紹 3.x 有哪些設定:「New wsrep_provider_options in Galera 3.x and Percona XtraDB Cluster 5.6」。\r\n\r\n看起來來比較有影響的是 gmcast.segment=0,用在跨機房之間的判斷。\r\n\r\n看起來應該是同一個機房要設一樣的 gmcast.segment。這個值會用在兩個地方:第一個是跨 segment 的 replication 流量會試著盡可能小。第二個是同步時的 Donor 會優先選擇同機房的節點。\r\n\r\n其他的用預設值應該就 okay...", + "title": "Galera Cluster 3.x 的設定..." + }, + { + "id": "3897", + "body": "出自 jacejuFacebook 上貼的「差點以為走錯」:\r\n\r\n\"\"\r\n\r\n超靠腰 XDDD\r\n\r\n不愧是 JSConf.Asia 2013... XDDD", + "title": "不愧是技術性的 Conference..." + }, + { + "id": "3899", + "body": "Amazon RDS 將提供跨區的 MySQL read replication。看起來是針對 5.6+ 的版本提供這個功能...\r\n\r\n有兩篇官方文章,一篇是 CTO 發了一篇「Expanding the Cloud: Enabling Globally Distributed Applications and Diaster Recovery」,另外一篇是官方網誌上的「Cross-Region Read Replicas for Amazon RDS for MySQL」。\r\n\r\n用圖表示比較容易懂:\r\n\r\n\"\"\r\n\r\n在 US-East 建立 MySQL master,另外在 EU 與 Tokyo 建立 slave replication。不知道中間的 traffic 有沒有過 IPSec 或是 SSL?", + "title": "AWS 提供跨區的 MySQL Read Replica..." + }, + { + "id": "3901", + "body": "在 Zite 上看到 HTML5 的 meter 元素:「The HTML5 meter Element」,這個元素的 spec 在「4.10.17 The meter element」。\r\n\r\n用來表示比率的元素,像是 progress bar,或是使用率...\r\n\r\n這是直接用你的瀏覽器 render <meter min=\"0\" max=\"100\" value=\"50\"></meter> 的結果:\r\n\r\n\r\n\r\n這是示意圖 (有點大 XD):\r\n\r\n\"\"\r\n\r\n依照 caniuse.com 上的說明,比較新的桌面瀏覽器都支援了:「Progress & Meter」。\r\n\r\n以往應該都是自己用 div 處理,現在看起來可以用這個元素,再用 JavaScript 對 IE 處理了?", + "title": "HTML5 的 meter 元素..." + }, + { + "id": "3904", + "body": "在 Zite 上看到「The average web page has grown 151% in just three years」,對網頁大小提出三點分析...\r\n\r\n\"\"\r\n\r\n直接列出這三點:\r\n\r\n\r\n前面兩點其實不意外,網頁大小不斷成長、圖片是流量的大宗。但第三點比較有趣,使用自訂字型的網頁急速成長...\r\n\r\n\"\"\r\n\r\n快超越 Flash 的使用率了?", + "title": "網頁大小的分析..." + }, + { + "id": "3906", + "body": "一樣是在 Zite 上看到的,有人提到對 NTP server 的放大攻擊:「Re: Public ntp-server and reflection-attacks」。\r\n\r\n攻擊者送一個封包,就會產生約 100 個封包的回應... (於是就被放大了)\r\n\r\n
This means, the attacker sends _one_ packet and gets _100_ packets to his target.
\r\n\r\n像是這樣的指令就會傳回很多資訊:(剛好也學到 ntpdc 這個指令...)\r\n\r\n
gslin@colo-p [~] [04:18/W4] ntpdc -c monlist\r\nremote address          port local address      count m ver code avgint  lstint\r\n===============================================================================\r\nlocalhost              36284 ::1               443425 7 2      0     27       0\r\nsun.stu.edu.tw           123 112.121.80.241      7891 4 4      0   1027     197\r\nclock.stdtime.gov.tw     123 112.121.80.241      7821 4 4      0   1024     838\r\n59-124-196-84.HINET-IP   123 112.121.80.241      7856 4 4      0   1024     920
\r\n\r\n在信件裡,建議的修正方式是:\r\n\r\n
restrict default noquery nomodify notrap nopeer\r\nrestrict -6 default noquery nomodify notrap nopeer
", + "title": "NTP server 放大攻擊的防治..." + }, + { + "id": "3908", + "body": "還是在 Zite 上看到的,對最大的一百萬個網站分析與安全有關的 HTTP Header:「Security Headers on the Top 1,000,000 Websites: November 2013 Report」。\r\n\r\n數字大致上都有增加,不過對我來說的重點在於有列出所有與安全有關的 HTTP Header...\r\n\r\n\"\"\r\n\r\n可以看到有這幾個:\r\n\r\n剛好可以拿來 review 設定...", + "title": "HTTP Header 裡與安全相關的 Header 的分析..." + }, + { + "id": "3910", + "body": "在 Theoretical Computer Science Stack Exchange 上,有人問到有沒有哪些軟硬體的 source code 是可以跟學生說明某些經典演算法的重要性:「Core algorithms deployed」。\r\n\r\n下面就有人列了 Linux kernel 內的演算法,以及對應的程式碼。相當長的一份列表...\r\n\r\n除了 Linux kernel 外,也還有其他大型 open source 專案用到的資料結構與演算法...\r\n\r\n不過看到 Bubble sort 是怎樣呢... XD", + "title": "Linux kernel 內的資料結構與演算法..." + }, + { + "id": "3912", + "body": "在舊金山參加 Spark Summit 2013,結論:\r\n\r\n所以只拿 Spark 當 MR-framework 也是很夠值得用的,如果要用 Streaming (Real-time processing) 的話,效能提升會更明顯。\r\n\r\n然後,不要想用其他程式語言,乖乖的用 Scala 吧...\r\n\r\n另外 Hadoop Streaming 跟 Spark Streaming 講的是不一樣的東西,在會場上講 Streaming 一般都講 Real-time processing,這點在會場的時候差點轉不過來 :o", + "title": "Spark Summit 2013 第一天心得..." + }, + { + "id": "3918", + "body": "從美國回來後開始整理還蠻空看的文章...\r\n\r\n在 Percona 的「innodb_stats_on_metadata and slow queries on INFORMATION_SCHEMA」這篇看到 innodb_stats_on_metadata 這個值對 InnoDB 效能影響的討論。\r\n\r\n
When the option is set to ON, InnoDB index statistics are updated when running SHOW TABLE STATUS, SHOW INDEX or when querying INFORMATION_SCHEMA.TABLES or INFORMATION_SCHEMA.STATISTICS.
\r\n\r\n值得提出來的是,這個值在 MySQL 5.6 內的 InnoDB 預設是關閉的,在 5.1 與 5.5 則是開啟的。這應該代表了官方的一些想法?不過看起來對一般的表格沒有影響...\r\n\r\n還是關掉好了?", + "title": "innodb_stats_on_metadata 對效能的影響..." + }, + { + "id": "3921", + "body": "Percona 十一月在倫敦辦的 Percona Live London 2013 在「Download insightful MySQL presentations from Percona Live London 2013」這邊可以看到各個 talk 的下載連結。\r\n\r\n裡面包括基礎與進階的都有,另外當然就夾雜著一些廣告性質的 talk :p\r\n\r\n剛剛先翻了一下,量好像有點多...", + "title": "Percona 十一月在倫敦辦的 Percona Live London 2013 放出投影片了..." + }, + { + "id": "3923", + "body": "Verizon 已經放出消息要買下 EdgeCast:「Verizon Plans to Acquire EdgeCast Networks」。\r\n\r\nVerizon 現在提供的 Akamai 服務應該會被拿出來重新評估 (「Content Delivery Network」這頁),很有可能會在約滿後就不續約了?\r\n\r\n另外一方面,EdgeCast 被併入大公司後能夠發展到什麼程度呢...", + "title": "Verizon 打算買下 EdgeCast..." + }, + { + "id": "3925", + "body": "xkcd 上看到「File Extensions」:\r\n\r\n\"\"\r\n\r\n.tex 是怎樣 XDDDDDDD\r\n\r\n另外 .jpeg.gif... XDDDDDDDD", + "title": "依照經驗,副檔名所代表的可信度..." + }, + { + "id": "3928", + "body": "在 Gene 寫的「如何在你不知情被自動加入粉絲團的秘技, 以 \"粉你的\" 作示範」這篇裡面用到的技巧叫做 Clickjacking (點擊劫持)。\r\n\r\nFacebook 有給出「What is clickjacking?」的說明,不過相當白話 (而且沒有幫助 Orz)。\r\n\r\n技術上的解釋是,其中一種實作是在要點擊的對象上加上一層「透明的」DOM 物件,當 click 時就會點到該物件。目前最常見的是 Facebook 的 Like 按鈕。(i.e. Gene 寫的那篇)\r\n\r\n在 Google Chrome 上可以用「Clickjacking Reveal」這個套件:\r\n\r\n
This extension tries to warn you if it found clickjacking technique on the page you are viewing.\r\n\r\nTired because of webpage tricks you into clicking social network buttons? This extension will try to detect those hidden bad buys and force them to show themselves.
\r\n\r\n效果是這樣:(範例出自「胖妞變身大美女 甩肉40斤練出腹肌」這篇)\r\n\r\n\"\"", + "title": "Google Chrome 上預防 Clickjacking 的套件..." + }, + { + "id": "3930", + "body": "Percona 的人針對 Linux 平台跑 MySQL 的建議:「Linux performance tuning tips for MySQL」。\r\n\r\n檔案系統方面建議用 ext4 或是 xfs,記得要用 noatime。(我建議再加上 nodiratime)\r\n\r\n然後 i/o schedular 建議用 deadline 或是 noop,這點可以參考之前寫的「關於 Linux 的 Disk I/O 調整...」。\r\n\r\n記憶體的部份要處理 swap 與 NUMA 的控制,然後 CPU 的部份要把自動調整速度的功能關掉 (可以省電,不過對忙碌的資料庫應該用不到)。\r\n\r\n看起來是比較一般性的方向,不過應該是蠻好用的建議 :p", + "title": "Percona 提供 Linux 平台上 MySQL server 調整的參數..." + }, + { + "id": "3932", + "body": "Auto Scaling 這功能總算可以透過 AWS 網頁管理界面設定管理了:「AWS Management Console - Auto Scaling Support」。\r\n\r\n\"\"\r\n\r\n這等幾年了啊... XD", + "title": "AWS 網頁管理界面提供 Auto Scaling 了..." + }, + { + "id": "3934", + "body": "Creative Commons 翻新了:「What’s New in 4.0」,在「新一代的授權方式-創用CC授權 4.0 與大家見面!」這篇文章有把原文的重點翻譯出來。\r\n\r\n\"\"\r\n出自「Examples of Creative Commons License Use」。\r\n\r\n「About The Licenses」可以看到所有的 CC license (不包含 Public Domain 的部份),從最寬鬆的 CC BY 到最嚴格的 CC BY-NC-ND。\r\n\r\n另外「RDFa」這邊則提供了以機械表示的方式,不過範例是 3.0 的版本,依樣畫葫蘆就可以搞定 4.0 了 :p", + "title": "Creative Commons 4.0" + }, + { + "id": "3936", + "body": "GoogleGoogle Chrome 裡面有放一段 SSL 白名單 (transport_security_state_static.json),針對某些特定 domain 只允許特定的 CA 所發出來的 SSL 憑證,另外當發現異常時也會回報。\r\n\r\n這個機制可以保證在白名單內的網域比較不容易被 CA 搞到。\r\n\r\n前幾天 Google 偵測到法國政府 ANSSI 的一個中介憑證發行單位 (Intermediate certificate authorities) 發出 Google 所擁有網域的 SSL 憑證:「Further improving digital certificate security」。\r\n\r\n這也是繼一年前 TURKTRUST 發出的 *.google.com 以來再次被這個機制抓到的案例:「這次 TURKTRUST 誤發 *.google.com SSL 憑證...」。\r\n\r\n同時,這也是首次政府機關相關的 CA 搞 MITMA (Man-in-the-middle attack)。\r\n\r\nANSSI 官方的說法是「誤發」:「Revocation of an IGC/A branch」,不過可信度... XD\r\n\r\nGoogle 後來在 12/12 再次更新公告文章,決定把 ANSSI 的 CA 信任範圍限縮到法國相關的網域,共 13 個。(*.fr*.gp*.gf、...)\r\n\r\n另外可以參考 Mozilla 在收到 Google 通知後的公告:「Revoking Trust in one ANSSI Certificate」。", + "title": "法國政府 ANSSI 偽造 Google 的 SSL 憑證被抓到..." + }, + { + "id": "3938", + "body": "前幾天看到的「Gmail.js - JavaScript API for Gmail」,這並不是 Google 官方的 JavaScript API,而是給開發瀏覽器套件的人用的 JavaScript API。\r\n\r\n甚至有給範例,讓你可以透過 Chrome Console 嘗鮮:\r\n\r\n\"\"\r\n\r\n看文件發現比較特別的是提供了 Observe 的功能,可以抓到 Gmail 的事件 :p", + "title": "Gmail.js" + }, + { + "id": "3940", + "body": "Chris Poole (4chan 的創辦人) 寫了一篇「Small things add up」,說明針對前端頁面的調整帶來的效能改善...\r\n\r\n在 YSlowPageSpeed 都反應靜態內容 (像是圖片) 是從帶有 cookie 的 domain (4chan.org) 提供服務。\r\n\r\n所以 Chris Poole 打算把靜態內容換到一個新的網域下。\r\n\r\n首先是選擇新的 cookie-free domain 名稱,由於不需要好記 (因為是程式在用),所以在選擇時愈短愈好,這可以讓 html 內的大小會少一些 (即使是 gzip 後還是有差),所以 Chris Poole 選擇了 4cdn.org。\r\n\r\n而更大的改善其實是在 cookie 這塊。4chan 平均的 cookie 大小大約是 1KB,這表示每一個到 4chan.org 的 request 都要送出 1KB 的 cookie 資訊。對於行動用戶來說,上傳的頻寬就這樣被浪費掉了,在搬移到新的 4cdn.org 後可以省下大量的上傳頻寬:\r\n\r\n
By migrating to the new domain, end users now save roughly 100 KB upstream per page load, which at 500 million pageviews per month adds up to 46 terabytes per month in savings for our users. I find this unreal.
", + "title": "4chan 前端頁面的調校... (cookie-free domain 的重要性)" + }, + { + "id": "3942", + "body": "GmailGoogle Calendar 的資料可以透過 Google Takeout 下載了:「Download a copy of your Gmail and Google Calendar data」。\r\n\r\n下載的格式是 mboxiCalendar。\r\n\r\n\"\"\r\n\r\n所以是一個 10GB+ 的 mbox 嗎... XD", + "title": "下載 Gmail 與 Google Calendar 的資料... (mbox 與 iCalendar 格式)" + }, + { + "id": "3944", + "body": "在 HHVM 官方的 blog 上看到 2.3.0 的消息:「HHVM 2.3.0 and Travis CI」。\r\n\r\n在 GitHub 上的「FastCGI」這頁就有提到要怎麼透過 FastCGI 界面跟 Apache 配合,熟悉 nginx 的人也應該可以輕鬆對應過去。\r\n\r\n另外一個重要的事情是 Travis CI 支援 HHVM 了,可以看到大量的專案加上 HHVM 測試:YiiSlimphpBBJoomlaDoctrineCodeIgniterIdiormPHPUnitParis。\r\n\r\n既然支援 FastCGI 了,來找機會測試看看...", + "title": "HHVM 2.3.0 支援 FastCGI..." + }, + { + "id": "3946", + "body": "雖然也不怎麼意外了,不過看到還是想要碎碎唸一下...\r\n\r\nNSA 每天從「全世界的」基地台蒐集五十億筆資料:「NSA Tracking Cellphone Locations Worldwide」。\r\n\r\n\"\"\r\n\r\n全世界啊... 感覺 Hadoop 之類的 big data 技術論壇找 NSA 很有看頭啊 @_@\r\n\r\nUpdate:有人給了模擬案例了「Meet Jack. Or, What The Government Could Do With All That Location Data」:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "NSA 每天從全世界的基地台蒐集行動電話資料,所以全民公敵裡演的都是真的嘛..." + }, + { + "id": "3948", + "body": "在「Create Your Own Bullet Time Camera Rig With Raspberry Pi」看到的,用了 48 組 Type B 的 Raspberry Pi 與相機,然後用 Python 寫控制程式:\r\n\r\n\r\n\r\n\"\"", + "title": "用 Raspberry Pi 的相機拍攝「子彈時間」效果..." + }, + { + "id": "3950", + "body": "在 Slashdot 上看到 ChaCha20-Poly1305 將被移植到 OpenSSH 上:「OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein」。\r\n\r\n上個月 Google Chrome 決定在 32 版 (現在 31 版了) 要支援 ChaCha20-Poly1305 (參考「Google 對四個 Cipher 的分析... (以及 ChaCha20-Poly1305)」),這個月 OpenSSH 就打算要跟進了...\r\n\r\n提案人 Damien Miller 在 blog 上提到為什麼他想將 ChaCha20-Poly1305 移植到 OpenSSH 上的原因 (「ChaCha20 and Poly1305 in OpenSSH」),主要是因為 AES-GCM 與 Encrypt-then-MAC 都必須傳輸 plaintext 的長度,這點讓人很不舒服。另外一個是 AES-GCM 的效能一直都是個議題。\r\n\r\nChaCha20-Poly1305 以 stream cipher 企圖同時解決這兩個問題,接下來就是看時間考驗了...", + "title": "ChaCha20-Poly1305 將被移植到 OpenSSH 上..." + }, + { + "id": "3954", + "body": "在「Linear algebra tutorial in four pages」這邊看到,先是回想之前大學學過的線性代數,好像不太可能用四頁搞定啊...\r\n\r\n看了 PDF 後發現只講了最簡單以及一些實際應用,比較複雜的部份就沒有講了... 不過對於已經忘光的人拿來復健應該還是很有用... XD\r\n\r\n不過如果以這種寫法,十頁說不定有機會把更複雜的部份寫完?像是比較長的 cheatsheet...", + "title": "四頁 PDF 介紹線性代數..." + }, + { + "id": "3956", + "body": "Netcraft 這篇「DigitalOcean now growing faster than Amazon」說 Digital Ocean 的成長速度超越 AWS,不過因為 Netcraft 主要是看 web 的部份,我是覺得講得有點誇大...\r\n\r\n\"\"\r\n\r\n不過比較可以確定的是,Digital Ocean 的確成長很快。氣勢上已經掩蓋掉 Linode...", + "title": "Digital Ocean 的成長速度跟 Amazon Web Services 有拼..." + }, + { + "id": "3958", + "body": "這是從中華機房內對 Adobe 字體服務 use.edgefonts.netSmokePing 資料 (Adobe 用 EdgeCast 的 CDN 服務),可以發現十一月底的時候 latency 從 20ms+ 降到 10ms 以下 (大約是 8ms,應該是南部的機房):\r\n\r\n\"\"\r\n\r\n對於北部使用者,8ms 還是比 Akamai 高一些,不過比起以前香港機房的 20ms+ 好多了...", + "title": "EdgeCast 在台灣有 PoP 了..." + }, + { + "id": "3960", + "body": "JetBlue 將會透過衛星轉接,提供機上乘客 WiFi 服務:「JetBlue Launches Satellite-Based Inflight Wi-Fi」。\r\n\r\n原始報導「JetBlue launches high-speed wi-fi during flights」內有提到價位是 USD$9/hr:\r\n\r\n
The airline will also offer a live video streaming high-bandwidth plan called Fly-Fi Plus for applications like streaming movies. It costs $9 per hour.
\r\n\r\nhmmm...", + "title": "捷藍 (JetBlue) 將透過衛星提供 WiFi 給機上乘客..." + }, + { + "id": "3962", + "body": "Cisco 在十月宣佈的 Open source H.264 codec 已經在 GitHub 上放出來了:「Open Source H.264 Codec」,這個實作包括了 encoder 與 decoder。\r\n\r\n用的是 BSD 2-Clause License:「LICENSE」。\r\n\r\n目前的支援度:(直接複製 OS Support 這段)\r\n\r\n看起來目前只支援桌機上的 32bits...\r\n\r\n然後已知的問題:(複製 Known Issues 這段)\r\n\r\n反正就繼續看著辦?", + "title": "Cisco 的 H.264 實作放出來了..." + }, + { + "id": "3965", + "body": "Opus 是個 royalty-free 的 audio codec,據官方說法是個多用途的 codec (而且表現都很好):\r\n\r\n\"\"\r\n\r\n前幾天 Opus 終於釋出 1.1 版 (1.0 版已經是一年前的事情):「Opus 1.1 Released」。\r\n\r\n這個版本在 ARM 上的效能大幅提昇 (包括了壓縮與解壓縮),很明顯是針對行動裝置的改善:「[opus] Opus 1.1 released」。\r\n\r\n不過好像都沒看到 bitrate 夠高時的比較...", + "title": "Opus 1.1 釋出..." + }, + { + "id": "3967", + "body": "引用加州理工學院的「Caltech Announces Open Access Policy」開頭:\r\n\r\n
On January 1, 2014, a new open-access policy for faculty's scholarly writings will take effect at the California Institute of Technology (Caltech). According to this policy, approved by the faculty at their June 10 meeting, all faculty members will automatically grant nonexclusive rights to the Institute to disseminate their scholarly papers, making wider distribution of their work possible and eliminating confusion about copyright when posting research results on Caltech's websites.
\r\n\r\n正式決議並公告,讓研究員 (包含教授與學生) 可以很自由的在自己的頁面上放自己的研究 (論文或是文章)。\r\n\r\n愈來愈多學術單位往這類公開政策邁進...", + "title": "加州理工學院對於學術研究的公開公告" + }, + { + "id": "3970", + "body": "在 24h 上買了這顆「DG-100 GPS 數據紀錄器」,然後在 VirtualBox 裡吃鱉了好幾次,所以還是整理一下,讓之後的人比較好辦事 XD\r\n\r\n用過的兩顆 GPS logger 都是用 Prolific 的 PL2303 系列晶片,透過 Serial port 的架構溝通,所以 Ubuntu 下會抓到 /dev/ttyUSB0 這種界面。\r\n\r\n由於我的目的比較簡單,只要可以抓 gpx 資訊給我就好,後來在 OpenStreetMap 的 wiki 上找到「Globalsat」的資訊,發現了 GPSBabel 這個軟體可以直接在 Mac OS XLinux 下抓 DG-100 的資料:\r\n\r\ngpsbabel -i dg-100,erase=0 -f /dev/ttyUSB0 -o gpx -F \"track.gpx\"\r\n\r\n(話說 GPSBabel 的網站感覺回到十年前...)\r\n\r\n看指令,如果指定 erase=1 的話就會清掉記錄?另外在 Mac OS X 下則是指定 /dev/cu.PL2303 開頭的 device。\r\n\r\n抓下來以後丟到 Dropbox,然後到世界迷霧裡更新,發現就算是已經跑到爛掉的路線,GPS logger 仍然可以記錄到 iPhone 記錄不到的...", + "title": "GPS logger:環天的 DG-100..." + }, + { + "id": "3973", + "body": "剛剛發現 PChome 24h 的送貨條件多了六小時的部份:\r\n\r\n\"\"\r\n\r\n\r\n\r\nASAP 的壓力?", + "title": "PChome 24h 的送貨時間條件也開始玩六小時了..." + }, + { + "id": "3975", + "body": "AWS 機房多了三個 PoP,分別是菲律賓的馬尼拉、法國的馬賽、波蘭的華沙:「Three More CloudFront / Route 53 Locations - Manila, Marseille, and Warsaw」,所以 Amazon CloudFrontAmazon Route53 也多了這三個機房。\r\n\r\n馬尼拉的頻寬費用以及 request 費用與香港相同,實際用 pinger.unimas.my 測發現好像不是連到菲律賓的機房:\r\n\r\n
Executing exec(ping, -c 5 -s 56, 54.230.158.85)\r\nPING 54.230.158.85 (54.230.158.85) 56(84) bytes of data.\r\n64 bytes from 54.230.158.85: icmp_req=1 ttl=53 time=44.3 ms\r\n64 bytes from 54.230.158.85: icmp_req=2 ttl=53 time=60.5 ms\r\n64 bytes from 54.230.158.85: icmp_req=3 ttl=53 time=60.6 ms\r\n64 bytes from 54.230.158.85: icmp_req=4 ttl=53 time=54.2 ms\r\n64 bytes from 54.230.158.85: icmp_req=5 ttl=53 time=57.2 ms\r\n\r\n--- 54.230.158.85 ping statistics ---\r\n5 packets transmitted, 5 received, 0% packet loss, time 4005ms\r\nrtt min/avg/max/mdev = 44.345/55.416/60.666/6.026 ms
\r\n\r\n然後:\r\n\r\n
\r\n;; ANSWER SECTION:\r\n85.158.230.54.in-addr.arpa. 86413 IN    PTR     server-54-230-158-85.sin3.r.cloudfront.net.\r\n
\r\n\r\n看起來好像剛上線而已,還有一些 routing 沒調整好?從 pinger.unimas.my 過去是到新加坡的 server...\r\n\r\n用機車方法硬找 code name 結果只找到 maa3 (*.maa3.cloudfront.net) 是印度孟買機房,看起來還是要用其他方式找找看 :o", + "title": "Amazon CloudFront 與 Route53 又多了三個 PoP..." + }, + { + "id": "3980", + "body": "早上的時候就有看到消息了,而剛剛在 AWS 老大 Werner VogelsTwitter 上看到他宣佈 AWS 北京區的成立:\r\n\r\n

Coming soon to #AWS - New China (Beijing) Region - http://t.co/L3lJBXFLr9

— Werner Vogels (@Werner) December 18, 2013
\r\n\r\n\r\n官方公告在「Coming Soon - New China (Beijing) Region」這邊。中國大陸的官方網站在「亚马逊 AWS | Cloud Computing in China on Amazon Web Services (Simplified Chinese)」這邊。\r\n\r\n一如往常的,有中國政府規範的但書:\r\n\r\n
This Region will allow China-based and multinational companies to make use of a broad collection of AWS services while remaining in compliance with China's legal and regulatory requirements.
\r\n\r\n要注意的是,目前列出來的服務並沒有 CloudFrontRoute53,只有看到這樣的說明:\r\n\r\n
We have been working with a number of local data center, bandwidth, and content delivery partners to bring this Region to life. Companies such as China Net Center and SINNET will provide the infrastructure, network services, and CDN services that are required to support the launch and operation of AWS technology services in China.
\r\n\r\n繼續觀望看看接下來如何...", + "title": "AWS 進入北京!" + }, + { + "id": "3982", + "body": "原來之前搞錯了... LSI 之前是把 Engenio 產品線賣給 NetApp,不是整家公司 (出自維基百科的「LSI Corporation」條目):\r\n\r\n
In March 9, 2011 LSI announced its sale of its Engenio external storage systems business to NetApp for $480 million in cash.
\r\n\r\n這次才是整家公司賣給 Avago Technologies,不知道是什麼原因而買的,看 Avago 的產品頁好像是拓展新的事業?", + "title": "LSI 賣給 Avago Technologies" + }, + { + "id": "3985", + "body": "Daniel GenkinAdi ShamirEran Tromer 發表的論文:「RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis」。\r\n\r\n在維基百科上有「Acoustic cryptanalysis」的條目,不過好像還沒補上這次的事情...\r\n\r\n2004 年的 Eurocrypt 時,後面兩位就已經發表過「Acoustic cryptanalysis - On nosy people and noisy machines」,可以針對機器的噪音取得「部份資訊」:\r\n\r\n\"\"\r\n\r\n這次攻擊者利用「麥克風」可以對機器的聲音攻擊 (side-channel attack),進而「得到完整的 private key」:\r\n\r\n\"\"\r\n\r\n左邊那台機器... 好像是隻手機啊... @_@\r\n\r\n收音的設備愈好,效果愈好:\r\n\r\n\"\"\r\n\r\n這次直接把 GnuPG 打趴真是太過分了... (被 assign 了 CVE-2013-4576)\r\n\r\nAdi Shamir 老人家還是很活躍啊...", + "title": "利用機器噪音的 Side-channel attack,解 GnuPG 的 RSA key..." + }, + { + "id": "3987", + "body": "Amazon CloudFront 宣佈支援地區限制:「Geographic Restriction with Amazon CloudFront」:\r\n\r\n\"\"\r\n\r\n可以看到可以選擇使用「白名單」或「黑名單」的選項。", + "title": "Amazon CloudFront 支援地區限制了..." + }, + { + "id": "3989", + "body": "Percona XtraDB Cluster 5.6 的第一個 RC 版本公告出來了:「Percona XtraDB Cluster 5.6.15-25.2 first Release Candidate is now available」。\r\n\r\n其他的說明沒什麼,但意外看到這點:\r\n\r\n
Percona XtraDB Cluster now supports stream compression/decompression with new xtrabackup-sst compressor/decompressor options.
\r\n\r\n在「option compressor/decompressor」這邊可以看到這個設定,功能是在傳輸 SST 的過程壓縮。\r\n\r\n看了範例設定,似乎也可以使用 gzip 以外的方式?bzip2 或是 xz 應該是可行的方案?\r\n\r\n對跨機房之間的 full resync 應該是有幫助的... 像是 IPsec 的處理能力沒那麼高的時候 :p", + "title": "Percona XtraDB Cluster 5.6 的第一個 RC 版本..." + }, + { + "id": "3992", + "body": "直接看示範頁面就可以理解了:「jquery.adaptive-backgrounds.js • A jQuery plugin for extracting dominant colors from images and applying it to its parent」。\r\n\r\nGitHub 的頁面在「briangonzalez/jquery.adaptive-backgrounds.js」。\r\n\r\n\"\"\r\n\r\n如果圖片不在同一個 domain 下,會需要設定 CORS 權限 (Cross Origin Resource Sharing),或是在 img tag 下指定 crossorigin 屬性讓程式可以讀取。", + "title": "隨著圖片而更改背景顏色的 jQuery Plugin..." + }, + { + "id": "3994", + "body": "上個禮拜超熱鬧的消息,Gmail 將會自動讀入圖片顯示:「Images Now Showing」。\r\n\r\n在 Support 的「Choose whether to show images」說明裡有提到這個機制是透過 Gmail 的 server 去讀取圖片,所以可以達到這些事情:\r\n\r\n但圖片一直都是發開信率計算很重要的指標,而 Gmail 這一次的行為讓這些發廣告信的廠商暈了...\r\n\r\n然後正反兩方的意見當然都有,像是「Gmail blows up e-mail marketing by caching all images on Google servers」這篇的語氣就頗袒護廣告商,最後還以陰謀論的角度來解釋這次行為:\r\n\r\n
No doubt Google hopes this move pushes marketers to spend less on e-mail and more on Adsense.
", + "title": "Gmail 將會自動讀入圖片顯示..." + }, + { + "id": "3996", + "body": "由於外面的傳言傳的亂七八糟 (像是「Security guru Bruce Schneier to leave employer BT」),當事人出來說明了 (證實了):「Yes, I'm Leaving BT」。\r\n\r\n資安相關領域的大名人...", + "title": "Bruce Schneier 離開 BT..." + }, + { + "id": "3998", + "body": "維基百科正在測試「草稿」功能:「New draft feature provides a gentler start for Wikipedia articles」。\r\n\r\n\"\"\r\n\r\n在「Why we need drafts on Wikipedia」有提到,在比較小的維基百科社群裡,偏向讓使用者編輯完成後,盡快發表出來讓大家修改。但比較大的維基百科社群因為有要求比較高的質量,有可能在發表出來的幾分鐘內就被掛上模板要求改善。維基百科分析英語、西班牙語、法語、俄羅斯語四個維基百科的資料,發現新使用者建立的條目有 80% 最後會被刪除 (Research:Wikipedia article creation),而這對新血來說並不是友善的象徵...\r\n\r\n來看看這個功能對於維基百科有多少幫助?", + "title": "維基百科測試「草稿」功能..." + }, + { + "id": "4000", + "body": "在 Slashdot 上看到「Standardized Laptop Charger Approved By IEC」這篇。\r\n\r\n2011 年年初的「歐盟強制使用 Micro USB 做為手機充電介面」後,IEC 這次宣佈要標準化筆電的充電器:「Major milestone: single charger for notebook computers will significantly reduce e-waste」。\r\n\r\n目前的進度在最後一段可以看到:\r\n\r\n
IEC Technical Specification 62700: DC Power supply for notebook computer, will be available in early 2014.
\r\n\r\n不過... 筆電充電器這塊如果要做的好用,不會卡到蘋果的專利嗎?", + "title": "筆記型電腦的充電器單一化..." + }, + { + "id": "4002", + "body": "Firefox 將在 29 版支援 CSS 變數 (現在是 26 版):「CSS Variables in Firefox Nightly」。標準是出自 W3C 的「CSS Custom Properties for Cascading Variables Module Level 1」(在寫這篇文章時還是 draft)。\r\n\r\n程式碼會長這樣:(直接引用比較複雜的程式碼)\r\n\r\n
:root {\r\n  var-companyblue: #369;\r\n  var-lighterblue: powderblue;\r\n  var-largemargin: 20px;  \r\n  var-smallmargin: calc(var(largemargin) / 2);\r\n  var-borderstyle: 5px solid #000;\r\n  var-headersize: 24px;\r\n}\r\n.partnerbadge {\r\n  var-companyblue: #036;\r\n  var-lighterblue: #369;\r\n  var-headersize: calc(var(headersize)/2);\r\n  transition: 0.5s;\r\n}\r\n \r\n@media (max-width: 400px) {\r\n  .partnerbadge {\r\n     var-borderstyle: none;  \r\n     background: #eee;\r\n  }\r\n}\r\n \r\n/* Applying the variables */\r\nbody {font-family: 'open sans', sans-serif;}\r\n \r\nh1 {\r\n  color: var(companyblue);\r\n  margin: var(largemargin) 0;\r\n  font-size: var(headersize);\r\n}\r\nh2 {\r\n  color: var(lighterblue);\r\n  margin: var(smallmargin) 0;\r\n  font-size: calc(var(headersize) - 5px);\r\n}\r\n \r\n.partnerbadge {\r\n  padding: var(smallmargin) 10px;\r\n  border: var(borderstyle);\r\n}
\r\n\r\n本來用 Sass/SCSS 做的事情就可以把計算這部份推到 browser 上處理...", + "title": "Firefox 將可以在 CSS 內使用變數..." + }, + { + "id": "4004", + "body": "是全世界第一家電信業者接受 Bitcoin 付款:「Belgian Telecom Becomes First To Accept Bitcoin」,新聞稿在「Mobile Vikings can pay with bitcoins, a world first!」。\r\n\r\n實際上是透過 BitPay:\r\n\r\n
Mobile Vikings works with the Bitpay platform, which is like the bitcoin variant of PayPal.
\r\n\r\n仍然是很讓人振奮的事情 :p", + "title": "比利時電信業者 Mobile Vikings 宣佈接受 Bitcoin 付款..." + }, + { + "id": "4007", + "body": "由於手機的行竊與搶劫案件已經是美國目前遇到的重大問題,所以有幾位法界人士提案,要立法強制對手機業者實作行動電話的防竊機制:「Proposed California Law Would Mandate Smartphone Kill Switch」,報導在「Proposed California law would mandate smartphone kill switch」。\r\n\r\n希望藉由這套防竊機制,讓銷贓變得困難,希望藉此降低手機行竊與搶劫的案件數量...\r\n\r\nKill Switch 的機制並沒有詳細說明,不過應該就是類似目前 Apple 的方式?可以遠端強制對手機下鎖上甚至銷毀的命令...", + "title": "加州的手機防竊提案..." + }, + { + "id": "4009", + "body": "Edward Snowden 再次丟出 NSA 內部文件,表示 NSA 付錢給 RSA 在演算法裡面放後門:「Exclusive: Secret contract tied NSA and security industry pioneer」。\r\n\r\nRSA 的回應則是完全不想提到這筆錢是做什麼用的:「RSA Response to Media Claims Regarding NSA Relationship」。\r\n\r\n現在一般在猜測,這個後門應該就是 RSA BSAFE 的預設偽隨機數產生器 Dual_EC_DRBG。\r\n\r\n對於 Dual_EC_DRBG 的攻擊,2006 年的「Cryptanalysis of the Dual Elliptic Curve Pseudorandom Generator」就這樣寫:\r\n\r\n
Our experimental results and also empirical argument show that the DEC PRG is insecure. The attack does not imply solving the ECDLP for the corresponding elliptic curve. The attack is very efficient.
\r\n\r\n在 2007 年,Bruce Schneier 寫了一篇「Did NSA Put a Secret Backdoor in New Encryption Standard?」,提到這個弱點並沒有大到使得這個演算法不堪用,但看了總是不爽:\r\n\r\n
Problems with Dual_EC_DRBG were first described in early 2006. The math is complicated, but the general point is that the random numbers it produces have a small bias. The problem isn't large enough to make the algorithm unusable -- and Appendix E of the NIST standard describes an optional work-around to avoid the issue -- but it's cause for concern. Cryptographers are a conservative bunch: We don't like to use algorithms that have even a whiff of a problem.
\r\n\r\n並且建議不要用 Dual_EC_DRBG:\r\n\r\n
My recommendation, if you're in need of a random-number generator, is not to use Dual_EC_DRBG under any circumstances. If you have to use something in SP 800-90, use CTR_DRBG or Hash_DRBG.
\r\n\r\n現在回頭看這件事情... hmmm...", + "title": "NSA 付錢給 RSA 放後門的事件..." + }, + { + "id": "4012", + "body": "維基百科上有一篇「Secure input and output handling」說明要怎麼處理 input 與 output (對資安方面的說明)。標題的 Filter Input 與 Escape Output 是 Gasol 之前提到後才知道的名詞,以前只知道要 validate & escape,沒想過一個比較好記的念法...\r\n\r\n這邊都以 PHP 為主,其他程式語言也應該會有對應的方式...\r\n\r\nInput 有很多管道,有可能是使用者或是 3rd party 廠商透過 Form 傳進來的資料 (在 PHP 裡可能是 $_GET 或是 $_POST),也有可能是 cookie 的資料 (因為使用者可以修改,所以視為不安全的資料)。從檔案讀資料進來 (可能是普通的文字檔,或是 XML,也可能是圖片) 也算是 input。\r\n\r\nOutput 也有很多管道,像是 HTML、JSON,或是組 SQL statement 時使用變數。\r\n\r\n

Filter Input

\r\n\r\n在處理 input data 時,一般常常忘記的是「先強制轉成 Non-null UTF-8 string」(現在一般都是用 UTF-8,所以這邊就只講 UTF-8)。\r\n\r\n這是因為很多 PHP function 對非 Non-null UTF-8 string 有非定義行為 (undefined behavior,不保證效果與輸出結果的正確性),加上一般常見的產品需求可以用 Non-null UTF-8 string 滿足,所以在 PHP 內拿到資料時可以先 filter 過。\r\n\r\nUpdate:下面說的步驟錯了,請參考「關於 Non-null string 的處理...」這篇的說明。\r\n\r\n有兩個步驟要做,第一個是確保他是 Non-null,直接把 \\0 以及以後的東西幹掉:\r\n\r\n
$str_out = preg_replace('/\\0.*/g', '', $str_in);\r\n$str = preg_replace('/\\0.*/g', '', $str); // 直接取代原來字串
\r\n\r\n第二個是確保他是 UTF-8 string。這點可以直接用 iconv() 轉,而不用自己寫 regex 處理了:\r\n\r\n
$str_out = iconv('UTF-8', 'UTF-8', $str_in);\r\n$str = iconv('UTF-8', 'UTF-8', $str);
\r\n\r\n用 iconv() 從 UTF-8 轉到 UTF-8 是一個特別的用法,我是在 Cal Henderson 的「Building Scalable Web Sites: Building, Scaling, and Optimizing the Next Generation of Web Applications」上看到的 (有中譯版)。\r\n\r\n如果傳進來的值本來就假設是整數,那麼就用 intval() 轉一次。如果假設是非負整數 (包含 0),那麼就用 abs()intval()。如果是文字類的 (像是 e-mail),可以再用其他的 regex 檢查。\r\n\r\n一般來說,白名單會比黑名單好。不過這也是一般性,很多時候還是很囧的...\r\n\r\n

Escape Output

\r\n\r\nEscape 指的是 Escape character (轉義字元)。不同的情況下會有不同的 escape character,所以保護的方式也不一樣。\r\n\r\n以 HTML 來說,想要顯示小於符號 <,實際上要用 &lt; 表示。而在 PHP 裡面常用的 htmlspecialchars() 定義了「只 escape 五個符號」,剛好可以拿來用:\r\n\r\n
<div><?= htmlspecialchars($str) ?></div>
\r\n\r\n也有人推薦 htmlentities(),不過因為轉的比較多 (所以要考慮的行為比較多),我比較不喜歡...\r\n\r\n對於 XML,在 XML 的規範裡規定一定要把 <& 換成 &lt;&amp; (Character Data and Markup),但 > 則可以 (非必要) 換成 &gt;。也允許把雙引號 " 換成 &quot;,以及單引號 ' 換成 &apos;。\r\n\r\n所以 XML 剛好可以直接用 htmlspecialchars() (確認完全符合 spec 要求),反過來 htmlentities() 就不保證了。\r\n\r\n再來是 MySQL 的 escape 與 charset 有關,所以要用 mysql_real_escape_string() 或是 PDO::quote(),但更好的方法應該是使用 prepare & execute (binding variables)...\r\n\r\n而 shell 的 escape 則應該用 escapeshellarg() 再帶入 string 裡。\r\n\r\n每一種 output 所需要的 escape function 不同,都不能直接拿 addslashes() 來用... (這個 function 的設計就很 PHP...)\r\n\r\n純粹 JSON 的話,用 json_encode() 就可以幫你處理好。問題是在 HTML + JSON 時會讓你處理到抱頭痛哭... 這就是另外的故事了 +_+\r\n\r\n

結論?

\r\n\r\nFilter Input + Escape Output 只是最基本的一步,不過在大多數的狀況下,這個方法就可以擋下不少問題了,算是很實用的 policy...", + "title": "Filter Input & Escape Output..." + }, + { + "id": "4020", + "body": "上一篇「Filter Input & Escape Output...」有提到 Non-null UTF-8 string 的 filter,結果剛剛洗澡的時候想了想,好像寫錯了?\r\n\r\n問題在於「到底是先 de-null 再 iconv(),還是先 iconv() 再 de-null」的問題。\r\n\r\n這個問題其實跟 iconv() 成 UTF-8 時遇到不合法字元時怎麼實做有關,也就是 undefined behavior... 由於 \\0 是合法的 UTF-8 character,所以我們假設某一種實做是當 iconv() 遇到不合法字元時會用 \\0 帶進去:\r\n\r\n

先 de-null 再 iconv()

\r\n\r\n這是上一篇文章提到的方法。但在上面提到的 iconv() 實做下卻是有問題的方法。原因很簡單,de-null 後沒有 \\0 的字串,卻會因為 iconv() 而產生 \\0。\r\n\r\n

先 iconv() 再 de-null

\r\n\r\n這邊要考慮的是最後 de-null 後會不會變成 invalid UTF-8 string。答案是不可能,因為 iconv() 轉出來後保證是 UTF-8 string (不論如何處理非 UTF-8 character 的部份),而 UTF-8 string 內的 \\0 一定可以當 separator,所以切下去一定還是 UTF-8 string。(可以參考下圖關於 UTF-8 character 的規則)\r\n\r\n\"\"\r\n\r\n

所以?

\r\n\r\n可能以現在的 iconv() 實做來說,兩者都不會有問題,但寫程式的時候總是要避免 side-effect,所以後者的方法會比前者好。", + "title": "關於 Non-null string 的處理..." + }, + { + "id": "4023", + "body": "在 OrangeFacebook 上看到的,翻了一下國外的新聞,好像還沒被廣泛報導:「Openssl.org 被改首頁,只維持了幾分鐘XDDD」。\r\n\r\n這超精彩的... OpenSSL 耶 XDDD\r\n\r\n這陣子國外在放假,反應時間應該會比較慢,過幾天應該陸陸續續可以看到「解說」...", + "title": "OpenSSL 官網被黑..." + }, + { + "id": "4025", + "body": "Baron Schwartz (Percona 的 Chief Performance Architect) 寫了一篇「Immutability, MVCC, and garbage collection」狂酸 DatomicRethinkDB (喔,還稍微提到 CouchDB)。\r\n\r\n裡面提到了 append-only B-tree 這的資料結構,優點以及會遇到的問題。(而這些問題都是致命的...)\r\n\r\n下面的 comment 就看到 Datomic 的人跑出來反擊了,不過我懶的看了... XD\r\n\r\nRDBMS 這麼多人發展這麼久了,不太有機會有萬靈丹突然出現解決一切問題... (這表示之前的人都是笨蛋?)\r\n\r\n新出來一個 RDBMS 系統,官網做的很漂亮,是由一個商業公司拿錢發展出來,號稱可以解決很多問題,大概都可以先跳過去... XD", + "title": "Datomic 以及 RethinkDB..." + }, + { + "id": "4027", + "body": "xkcd 這篇「xkcd: Infinite Scrolling」:\r\n\r\n\"\"\r\n\r\n用 Facebook 時常常遇到啊...", + "title": "Infinite Scrolling 的問題..." + }, + { + "id": "4029", + "body": "Twitter 上看到 gugod 的 retweet:「Identifiable Images of Bystanders Extracted from Corneal Reflections」。\r\n\r\n

#PLOSONE: Identifiable Images of Bystanders Extracted from Corneal Reflections http://t.co/CJOiQ1klAS pic.twitter.com/ZT45t1SUqN

— SebMln (@SebMln) December 29, 2013
\r\n\r\n\r\n因為硬體的進步,所以總算有辦法硬拉出來?\r\n\r\n\"\"\r\n\r\n嗯,這張照片是可辨識的 XDDD\r\n\r\n突然想到 CSI 的無限放大,還有攻殼機動隊電視版裡的 Interceptor...", + "title": "用眼角膜上的影像找出拍照者 (以及其他人)..." + }, + { + "id": "4033", + "body": "在 Slashdot 上消化新聞的時候看到的:「U.S. Mobile Internet Traffic Nearly Doubled This Year」。引用的報導是「U.S. Mobile Internet Traffic Nearly Doubled This Year」,原始的報導在「2013 – The year in mobile」。\r\n\r\n全球的平均值從 2012 年的 140MB/month 變成 240MB/month。而美國從 690MB/month (2012) 成長為 1.2GB/month,瑞典的用量則是到 7GB/month。LTE 成為趨勢,電信商也不斷地在升級...\r\n\r\n智慧型手機方面,AppleSamsung 獨佔市場,其他的牌子愈來愈小。\r\n\r\n看起來台灣離全球的差距愈來愈大了...", + "title": "美國 2013 年行動數據使用量增加了近一倍..." + }, + { + "id": "4035", + "body": "看到「Data looks better naked」這篇,把這樣的圖表:\r\n\r\n\"\"\r\n\r\n變成這樣的圖表:\r\n\r\n\"\"\r\n\r\n作者有做動態 GIF,可以直接看怎麼變化:\r\n\r\n\"\"\r\n\r\n也可以看 Speaker Deck 上的投影片,一步一步停下來了解:\r\n\r\n", + "title": "圖表表達的能力..." + }, + { + "id": "4037", + "body": "在 kernel.org 上看到 Linux Kernel 將不提更 bzip2 格式的原始程式包了:「Happy new year and good-bye bzip2」。\r\n\r\n之後只會提供 .tar.gz (為了廣泛的可用性) 與 .tar.xz (為了大小,降低傳輸量)。xz 壓出來小不少,也愈來愈多的單位在用了...\r\n\r\nbzip2 也一陣子沒更新了,上次更新是 1.0.6,是為了安全性更新 CVE-2010-0405,而 1.0.5 也是安全性更新,真正有新版本是 1.0.4 (2006 年 12 月)。\r\n\r\n算是功成身退了?", + "title": "Linux Kernel 將不提供 bzip2 格式了..." + }, + { + "id": "4041", + "body": "本來在找 tmux 的設定,結果看到 PragmataPro 這個字型,看起來還蠻順眼的...\r\n\r\n\"\"\r\n(官方的 sample)\r\n\r\n幾個 coding 用字型的重點都有處理好,像是 0 (Zero) 與 O (Uppercase O) 與 o (Lowercase O) 的差異,1 (One) 與 l (Lowercase L) 與 I (Uppercase I) 的差異...\r\n\r\n\"\"\r\n(官方的 sample)\r\n\r\n字大一點的時候有復古的感覺...", + "title": "買了 PragmataPro..." + }, + { + "id": "4044", + "body": "拿「F6F — 井口裕香 @ たまゆらじお~もあぐれっしぶ~特別編 (2013-12-21) ↙:かわいい...」這篇的第一張圖來當範例。\r\n\r\n這是原始的 GIF 版本:\r\n\r\n\"\"\r\n\r\n這是 gfycat 的版本:\r\n\r\n\r\n\r\nGIF 的原始大小是 1487KB (1522894 bytes),而 WebM 的大小是 151KB (154735 bytes),MP4 的大小是 147KB (151274 bytes),大約是十倍的差距?\r\n\r\n在 about 頁有說明想法,可以看到檔案大小的差距。不過 GIF 已經是上個世紀發明的東西了,而且當初也不是預期現在這種用法 :p", + "title": "用 HTML5 video 取代動態 GIF 的 Hosting 服務..." + }, + { + "id": "4046", + "body": "在「Year 2013 in retrospect」這邊看 Adblock Plus 官方回顧 2013 年時才發現原來有 IE 版了:「Adblock Plus - Surf the web without annoying ads!」。\r\n\r\n繁體中文版的預設值跟其他平台相同,都是 ChinaList+EasyList (完整的列表可以參考「已知的 Adblock Plus 過濾條件集」):\r\n\r\n\"\"\r\n\r\n這是安裝後「Yahoo奇摩」首頁的樣子:\r\n\r\n\"\"\r\n\r\n晚點來幫老人家電腦裝...", + "title": "原來 Adblock Plus 有 IE 版了..." + }, + { + "id": "4049", + "body": "Zerigo 年底發了兩篇公告:\r\n\r\nZerigo 是好用在 GeoDNS 的服務上 (不用自己寫程式 & 更新 GeoDNS database,更不用自己做 HA 機制),一般的 DNS 服務到是還好... 漲了也只能接受啊,就當作換上 Akamai 後的成本調漲好了?(看了看,檯面上 GeoDNS 沒幾家好用的服務啊...)\r\n\r\n繼續觀察看看吧...", + "title": "Zerigo DNS 換到 Akamai,然後漲價..." + }, + { + "id": "4051", + "body": "GitHub 在 2013 年底的公告:「Introducing Forward Secrecy and Authenticated Encryption Ciphers」。\r\n\r\n愈來愈多服務升級 & 調整 SSL (HTTPS) 的設定,支援 PFS (Perfect Forward Secrecy) 與 AE (Authenticated Encryption)。\r\n\r\nPFS 要預防的事情我可以理解,但對 AE 的必要性不熟啊... 再去看看整個理論基礎與目的好了...", + "title": "GitHub 的 SSL (HTTPS) 也支援 PFS 與 AE 了..." + }, + { + "id": "4055", + "body": "ESR (Eric S. Raymond) 寫了一篇 C Compiler 對 struct 實際如何佔用記憶體空間的說明:「The Lost Art of C Structure Packing」,全文在「The Lost Art of C Structure Packing」。\r\n\r\n以前都學過也都還記得,但沒用就不容易想起來...\r\n\r\n以文章裡的例子用這個 struct 說明:\r\n
struct {\r\n    char *p;\r\n    char c;\r\n    int x;\r\n};
\r\n(下面就不列出 struct 的部份了)\r\n\r\n實際上在記憶體裡面會因為 alignment requirement 的關係,多了一個 padding (pad):\r\n
char *p;      /* 4 or 8 bytes */\r\nchar c;       /* 1 byte */\r\nchar pad[3];  /* 3 bytes */\r\nint x;        /* 4 bytes */
\r\n\r\n而如果 x 是 8 bytes 的 long 時:\r\n
char *p;\r\nchar c;\r\nlong x;
\r\npadding 會變成:\r\n
char *p;     /* 8 bytes */\r\nchar c;      /* 1 byte\r\nchar pad[7]; /* 7 bytes */\r\nlong x;      /* 8 bytes */
\r\n這是因為硬體架構的關係。有些是因為硬體只支援切齊 alignment 的存取指令,有些是因為效率的差異而預設會增加 padding。\r\n\r\n在處理 protocol 這類必須依照原始的 struct 設計時,需要指定
#pragma pack
強迫 compiler 關掉,不然 compiler 還是會補上 padding。\r\n\r\n而在一般的情況下,調整 struct 裡元素的位置就能夠在不影像存取效能的前提下節省空間,如果是大量的 struct 時效果就會變得很明顯...", + "title": "ESR 解釋 C 的 Compiler 對 Structure Packing 的處理..." + }, + { + "id": "4058", + "body": "Slashdot 上看到「Coca-Cola Reserves a Massive Range of MAC Addresses」:\r\n\r\n
  FC-D4-F2   (hex)\t\tThe Coca Cola Company\r\n  FCD4F2     (base 16)\t\tThe Coca Cola Company\r\n\t\t\t\tOne Coca Cola Plaza\r\n\t\t\t\tAtlanta GA 30313\r\n\t\t\t\tUNITED STATES
\r\n\r\n可以從「IEEE-SA - Registration Authority MA-L Public Listing」這邊查到...\r\n\r\n所以可口可樂公司想要做什麼... @_@", + "title": "可口可樂公司取得 Mac Address..." + }, + { + "id": "4060", + "body": "每次都忘記,寫一篇之後查比較方便... 重點在對 xxd 的變化應用,而 xxd 被包在 Vim 裡,所以應該都會裝... 吧...\r\n\r\nxxd 預設是把 binary 轉成 hex,但你可以用 -r 參數變成反向,也就是 hex 轉 binary。\r\n\r\n所以剩下的就很簡單了,先把 hex 轉成 binary 再轉成 base64:\r\n
echo 0123456789ABCDEF | xxd -r -p | base64
\r\n這邊有裝 Base64 所以可以直接用,如果沒有的話,可以用 OpenSSL 替代:\r\n
echo 0123456789ABCDEF | xxd -r -p | openssl enc -base64
", + "title": "Command Line 下把 Hex 轉成 Base64..." + }, + { + "id": "4062", + "body": "剛剛看到「Composer now supports PSR-4」才發現有 PSR-4,而且出了好幾個禮拜了...\r\n\r\nPSR-4:\r\n\r\n
This PSR describes a specification for autoloading classes from file paths. It is fully interoperable, and can be used in addition to any other autoloading specification, including PSR-0. This PSR also describes where to place files that will be autoloaded according to the specification.
\r\n\r\n在已經有 PSR-0 的情況下,設計 PSR-4 讓人感覺有點怪,因為功能跟 PSR-0 是衝突的。\r\n\r\n不過仔細看看以後發現 PSR-4 規則比較「乾淨」,有種想要汰換 PSR-0 的想法... 而且 Composercomposer.json 的設計也允許針對不同的 prefix 使用不同的邏輯,看起來是把 PSR-0 當作過渡期的設計,希望大家換到 PSR-4?\r\n\r\nPSR-0 與 PSR-4 最明顯的差異是對底線 (underscore) 解讀不同,在 PSR-4 中的底線沒有任何意義:\r\n\r\n
Underscores have no special meaning in any portion of the fully qualified class name.
\r\n\r\n在 PSR-0 裡則是說 class name 的底線必須換成 DIRECTORY_SEPARATOR:\r\n\r\n
Each _ character in the CLASS NAME is converted to a DIRECTORY_SEPARATOR. The _ character has no special meaning in the namespace.
\r\n\r\n來想看看要怎麼轉換現有的系統...", + "title": "PSR-4" + }, + { + "id": "4069", + "body": "Linode 宣佈可以在 Linode 的虛擬機內跑 Docker:「Docker on Linode」。\r\n\r\n目前提到 Docker 的實際用途... 都是以測試為目的?無論是手動測試,還是自動化測試...", + "title": "Linode 也支援 Docker 了..." + }, + { + "id": "4071", + "body": "有時候我們會因為效能問題,在 HTML 內嵌入 JSON object,而不是再多一個 HTTP request 取得。\r\n\r\n但「嵌入」的行為如果沒有處理好,就產生非常多 XSS attack vector 可以玩。\r\n\r\n首先最常犯的錯誤是使用錯誤的 escape function:\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\nvar a = \"<?= addslashes($str) ?>\";\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n這樣可以用 </script><script>alert(1);// 攻擊 $str。因為 addslashes() 並不會過濾到這個字串,而產生這樣的 HTML:\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\nvar a = \"</script><script>alert(1);//\";\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n而這個字串會造成 DOM parser 解讀上產生不是我們預期的行為:\r\n\r\n\"\"\r\n\r\n可以看到在字串裡面的 </script> 被拆開了。\r\n\r\n這是因為瀏覽器會先拆解產生 DOM tree,再把 <script></script> 內的程式碼交給 JavaScript engine 處理。所以在一開始產生 DOM tree 的時候,是看不懂 JavaScript 程式邏輯的...\r\n\r\n正確的方法是用 json_encode() 處理,因為 PHPjson_encode() 預設會把 / (slash) 變成 \\/ (這是 JSON spec 裡合法的轉換):\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\nvar a = <?= json_encode($str) ?>;\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n這會產生出:\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\nvar a = \"<\\/script><script>alert(1);//\";\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n但上面這段 HTML 與 PHP code 仍然有問題,如果 $str<!--<script 時,你會發現 DOM 又爛掉了:\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\nvar a = \"<!--<script>\";\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n\"\"\r\n\r\n而 escape.alf.nu 的 Level 15 就是利用這個問題,再加上其他的漏洞而完成 XSS 攻擊。\r\n\r\n為了這個問題去 StackOverflow 上問:「Why does <!--<script> cause a DOM tree break on the browser?」,才又發現上面這段 code 並不是合法的 HTML5 (先不管 head & title 的部份,補上後仍然不是合法的 HTML5)。\r\n\r\n原因在於 DOM parser 對 <script></script> 的特殊處理:「4.3.1.2 Restrictions for contents of script elements」。(話說這段 ABNF 差點讓我翻桌...)\r\n\r\n解法是在 <script></script> 的開頭與結尾加上 HTML 註解:(這剛好是 HTML 4.01 建議的方法)\r\n\r\n
<!DOCTYPE HTML>\r\n<html>\r\n<body>\r\n<script>\r\n<!--\r\nvar a = \"<!--<script>\";\r\n-->\r\n</script>\r\n</body>\r\n</html>
\r\n\r\n\"\"\r\n\r\n那段 ABNF 的目的是希望可以盡可能往後找到 --></script> 結尾的地方。\r\n\r\n當然你也可以用 json_encode()JSON_HEX_TAG<> 硬轉成 \\u003c\\u003e 避開這個問題,但這使得呼叫 json_encode() 時要多一個參數 (而非預設參數),用起來比較卡...\r\n\r\n這個問題會變得這麼討厭,是因為 DOM parser 與 JavaScript 語法之間有各自的處理方式,然後又有些 pattern 是之前的 spec 遺留下來的包袱 (像是 HTML 4.01 在「18.3.2 Hiding script data from user agents」裡有提到用 <!----> 包裝 <script></script>),變成在設計 HTML5 時都要考慮進去相容...\r\n\r\n之前會習慣用 <!--//--> 包裝 <script></script> 倒不是這個原因,而是因為不這樣做的話,jQuery 在 IE 使用 html() 時遇到有 <script></script> 的字串會爛掉,所以後來寫的時候變成習慣了...\r\n\r\n反而因為這個習慣而避開了這個問題...\r\n\r\n超難搞啊...", + "title": "在 HTML 內嵌 JSON object 時要注意的事情..." + }, + { + "id": "4088", + "body": "這是從 HiNet 機房連到 AWS 官方 d36cz9buwru1tt.cloudfront.net 的 SmokePing 資料:\r\n\r\n\"\"\r\n\r\n從中華 HiNet 機房到 test.gslin.org:\r\n\r\n
  3.|-- 211.22.229.2               0.0%    10    0.2   0.2   0.2   0.6   0.0\r\n  4.|-- 220.128.5.226              0.0%    10    0.4   2.6   0.4  11.9   4.4\r\n  5.|-- 220.128.2.174              0.0%    10    2.7   5.4   2.6  12.5   3.3\r\n  6.|-- 220.128.4.177              0.0%    10    0.4   2.0   0.4  16.2   5.0\r\n  7.|-- 203.75.228.29              0.0%    10    1.3   1.3   1.1   1.6   0.0\r\n  8.|-- 223.26.66.19               0.0%    10    1.7   1.4   1.3   1.7   0.0\r\n  9.|-- 202.133.255.122            0.0%    10    1.1   6.8   1.0  38.8  12.2\r\n 10.|-- 54.230.215.52              0.0%    10    1.2   1.2   1.1   1.3   0.0
\r\n\r\n從台灣固網 TFN 機房到 test.gslin.org:\r\n\r\n
  3.|-- 60.199.236.110             0.0%    10    0.3   0.3   0.3   0.5   0.0\r\n  4.|-- 60.199.255.3               0.0%    10    0.3   0.3   0.3   0.3   0.0\r\n  5.|-- 60.199.20.149              0.0%    10    0.2   0.2   0.2   0.2   0.0\r\n  6.|-- 60.199.3.161               0.0%    10   37.9   4.1   0.2  37.9  11.9\r\n  7.|-- 60.199.17.194              0.0%    10    0.7   3.0   0.5  14.1   4.7\r\n  8.|-- 210.62.255.28              0.0%    10   11.0  18.1   1.9 139.9  42.9\r\n  9.|-- 223.26.66.19               0.0%    10    1.5   1.6   1.4   1.8   0.0\r\n 10.|-- 202.133.255.122            0.0%    10    1.9   1.8   1.6   2.4   0.0\r\n 11.|-- 54.230.215.131             0.0%    10    3.8   3.5   1.2   5.4   1.4
\r\n\r\n雖然官方還沒公佈,但已經上線了,代碼是 tpe50。\r\n\r\n就路徑與反解資訊看起來是在是方的網路裡,不過不是很確定... 另外 Route53 看起來還沒有導過去,所以是還在 setup?\r\n\r\nAnyway,在台灣有 PoP 的 CDN 又多了一家:\r\n\r\n所以什麼時候會正式公佈呢...", + "title": "CloudFront 有台灣機房了..." + }, + { + "id": "4098", + "body": "Wikimedia 打算把搜尋系統換到 Elasticsearch 上:「Wikimedia moving to Elasticsearch」。\r\n\r\n之前的搜尋系統是他們自己刻的 lucene-search-2,現在則要換成 Elasticsearch。\r\n\r\n可以注意到最近 Elasticsearch 的聲音愈來愈大,而 Solr 沒什麼長大的感覺...", + "title": "Wikimedia 將搜尋系統換到 Elasticsearch..." + }, + { + "id": "4100", + "body": "Bruce Schneier 的說明:「I've Joined Co3 Systems」,以及 Co3 Systems 的公告:「Bruce Schneier Joins Co3 Systems as CTO」。\r\n\r\n所以跑去 Co3 Systems 當 CTO 了... 把放假的時間算進去,速度真迅速 :p", + "title": "Bruce Schneier 加入 Co3 Systems..." + }, + { + "id": "4102", + "body": "如同前幾天提到的正式公告了:「New Edge Locations Added in Taipei and Rio de Janeiro for Amazon CloudFront and Amazon Route 53」。\r\n\r\n價錢跟預期的一樣,與亞洲區其他點相同。\r\n\r\n不過實際上測試,Route53 好像沒看到會導到台灣機房?", + "title": "Amazon CloudFront 與 Route53 正式公告增加台灣機房..." + }, + { + "id": "4104", + "body": "我本來以為這張是搞笑:\r\n\r\n\"\"\r\n出自 2010 年的「SQL Injection License Plate Hopes to Foil Euro Traffic Cameras\r\n\r\n不過我開始覺得在台灣是真的有機會...", + "title": "話說最近某電子收費廠商的安全性問題..." + }, + { + "id": "4106", + "body": "剛剛看到「Not Cool: MPAA Joins The W3C」:\r\n\r\n

Motion Picture Association of America, Inc. joined W3C

— W3C Team (@w3c) January 7, 2014
\r\n\r\n\r\n接下來應該是會很用力推動 DRM?hmmm...", + "title": "MPAA 加入 W3C..." + }, + { + "id": "4108", + "body": "GitHub Pages 上 CDN 了:「Faster, More Awesome GitHub Pages」。\r\n\r\n不過 Apex domain (也就是 domain 本身的 hostname) 無法設定 CNAME record,必須透過 A record,就沒辦法用到 CDN 的地區特性了...\r\n\r\nCDN 用的是 Fastly,也丟進 SmokePing 監測好了...", + "title": "GitHub 的網站功能上 CDN 了..." + }, + { + "id": "4110", + "body": "在 RSA Security 收了 NSA 的錢,並且使用 NSA 所偏好的亂數演算法的事情被爆料出來後 (而且這個演算法已經被認為是 NSA 埋後門的演算法),一直有要求 RSA Security 解釋的聲音。但 RSA Security 卻完全沒有解釋。\r\n\r\n想當然的,陸陸續續開始有人退出今年的 RSA Conference。一開始是 F-Secure 的 CRO (Chief Research Officer) 宣布退出:「An Open Letter to the Chiefs of EMC and RSA」,後來也有不少資安領域的專家退出 (可以參考 iThome 的文章):「資安專家群起抵制RSA安全會議」。\r\n\r\n最新的消息是 OWASP 官方決定取消與 RSA Conference 的合作關係:「OWASP terminates marketing agreement with RSA Conference. Board member cancels class out of protest.」,不過 OWASP 正式的公告還沒出來。\r\n\r\nOWASP 在 Web 安全性這個領域可是赫赫有名... 這下今年二月底的 RSA Conference 還會有多少人「跟進」呢... 會不會停辦?", + "title": "OWASP 取消與 RSA Conference 的合作..." + }, + { + "id": "4112", + "body": "Docker 被 porting 到 Debian 上了:「Docker in Debian」,目前已經在 sid (unstable) 裡了:「Debian -- Package Search Results -- docker.io」。\r\n\r\n不過 Debian 的 sid 要到 stable... 似乎... 要再... 等上... 不少... 日子...", + "title": "Docker 也被 porting 到 Debian 上了..." + }, + { + "id": "4114", + "body": "Bitcoin 的安全性是利用「當整個社群夠大時,不會有單一團體擁有超過 50% 的計算能力」的假設上發展演算法及防護機制:(參考「Weaknesses - Bitcoin」)\r\n\r\n
An attacker that controls more than 50% of the network's computing power can, for the time that he is in control, exclude and modify the ordering of transactions. This allows him to:\r\n
\r\n\r\n不過讓人噴飯的消息出來了,即使在 Bitcoin 這麼火熱的情況下,仍然有單一團體計算能力已經超過 50%:「Largest Bitcoin Mining Pool Pledges Not To Execute '51% Attack'」。\r\n\r\n這應該是當設計時始料未及的... XD", + "title": "Bitcoin 有單一團體超過 50% 計算能力了..." + }, + { + "id": "4119", + "body": "在「My new test lab」這篇看到有人買了一台 2U (4 node) 的伺服器來跑測試環境:\r\n\r\n\"\"\r\n\r\n用文章內提到的「1 Dell PowerEdge Server XS23-SB 4 Node 8x L5420 Quad Core 96GB RAM 4x HD Caddy」去查,發現非全新機的價錢超便宜:「Dell PowerEdge XS23-SB 8x Xeon Quad Core 2.5Ghz 64GB 4 in1 Cloud Server」。\r\n\r\n每個 node 有兩顆 L5420 與 24GB RAM,主機內建兩張 Intel Gigabit 網卡。\r\n\r\n\"\"\r\n\r\nhmmm...", + "title": "好便宜的 server..." + }, + { + "id": "4121", + "body": "記得前陣子在 Twitter 上看到有人想要用 Twitter 認證使用者的消息,結果前幾天就看到 Facebook 提供官方版本:「Get Facebook Wi-Fi for Your Business」。\r\n\r\n\"\"\r\n\r\n在「Set Up Facebook Wi-Fi for Your Business」有提到目前有這些產品可以支援:\r\n\r\n不過,感覺好像有很多洞可以鑽... Facebook 用了大量的 Akamai 加速,除非在這些頁面特殊處理過 (把檔案都放到固定 IP 上),不然應該是不太容易做到?", + "title": "Facebook 官方提供 WiFi 登入綁 Facebook 的服務..." + }, + { + "id": "4124", + "body": "有人對 VMware 以及 VirtualBox 測試效能:「Comparing Filesystem Performance in Virtual Machines」,有四張圖:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n不過數字怪怪的,NFS 那邊是怎樣 XDDD\r\n\r\n看看就好,如果有用到再自己測試看看吧?", + "title": "虛擬環境下檔案系統的讀寫速度..." + }, + { + "id": "4126", + "body": "眾所皆知的,Netflix 幾乎將所有服務都放在 AWS 上,這當然也包括了 Amazon S3。\r\n\r\n在 Amazon S3 上會有 Eventually Consistency 的問題:寫入後可能會讀到舊的資料,於是就算錯資料了...\r\n\r\nNetflix 的人討論了幾種方案,後來開發 s3mper 用來解決 Amazon S3 的 Eventually Consistency 問題:「S3mper: Consistency in the Cloud」。\r\n\r\ns3mper 透過 AWS DynamoDB 儲存檔案的 metadata,藉以得知是否 consistency。而 Amazon DynamoDB 本身雖然也是 Eventually Consistency,但多了 API 可以得知是否 Consistency。\r\n\r\n在 Supported Operations in DynamoDB 可以看到 Data Read and Consistency Considerations 這段提供了兩種 read mode:\r\n\r\n在 Strongly Consistent Reads 中,可以確認讀到的是不是最新的資料。只有當 DynamoDB 與 S3 的資料都正確時才繼續往下跑...\r\n\r\n這個解法相當於在 Amazon S3 上面架了一層防護網,算是 workaround 吧 :p 如果 Amazon S3 可以提供 consistency 資訊的話,也就不用這樣搞了...", + "title": "Netflix 對 S3 的 Eventually Consistency 的補強..." + }, + { + "id": "4128", + "body": "去年十月的老文章了,剛剛在翻 link 的時候發現還蠻有趣的:「In Almost Every European Country, Bikes Are Outselling New Cars」。\r\n\r\n有兩張圖表:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n2012 年的資料。應該也是因為腳踏車的單價與汽車不在同一個等級的關係吧?", + "title": "歐洲的腳踏車銷量遠遠超越汽車..." + }, + { + "id": "4130", + "body": "很久前有註冊 Rackspace 帳號,剛剛無意間登入進去發現其實還蠻有競爭力?\r\n\r\n\"\"\r\n\r\n有香港伺服器,開了一台起來測試發現從台灣過去的速度都不錯... 而且反應速度比 AWSWeb Console 好太多。\r\n\r\n一開起來有 IPv4 與 IPv6 對外,可以另外自己建立 private network (類似 AWS 的 VPC),一樣有 block stoage (類似 AWS 的 EBS)。\r\n\r\n不過透過 Web Console 開機器是給隨機的 root password,而不是 ssh key 登入,這就有點不太一樣了。\r\n\r\n雖然是第二大,但整個順暢度很好啊... 還是頗值得玩看看到底如何 :o", + "title": "Rackspace 的雲端服務..." + }, + { + "id": "4133", + "body": "看到「HHVM, Nginx and Laravel」這篇文章,加上 Rackspace 香港的機器用起來很愉快,就開一台起來測試...\r\n\r\n文章內的方法都 okay,只是在裝 HHVM 前少了一步把 key 加到 apt 內的指令:\r\n\r\napt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5A16E7281BE7A449\r\n\r\n補上去以後 apt-get update 才會動 :p\r\n\r\n速度上當然是沒話說,而且使用的習慣很接近 drop-in replacement 了... (更新檔案後不需要自己另外 purge cache,HHVM 會自己偵測到)\r\n\r\n晚點來測試看看 ApacheFastCGI 接 HHVM,如果可行的話就更好了?(.htaccess 啊...)", + "title": "用 nginx + FastCGI 接 HHVM..." + }, + { + "id": "4136", + "body": "直接看 xip.io 的說明就可以了:「xip.io: wildcard DNS for everyone」。\r\n\r\n重點:\r\n
          10.0.0.1.xip.io   resolves to   10.0.0.1\r\n      www.10.0.0.1.xip.io   resolves to   10.0.0.1\r\n   mysite.10.0.0.1.xip.io   resolves to   10.0.0.1\r\n  foo.bar.10.0.0.1.xip.io   resolves to   10.0.0.1
\r\n\r\n可以拿來測試...", + "title": "用 *.xip.io 測試..." + }, + { + "id": "4138", + "body": "三個 P 開頭的語言...\r\n\r\nPHP:\r\n
#!/usr/bin/env php\r\n<?php\r\n \r\necho \"\\\\\\\"\\'\", \"\\n\";\r\necho '\\\\\\\"\\'', \"\\n\";
\r\n\r\nPerl:\r\n
#!/usr/bin/env perl\r\n \r\nuse 5.010;\r\nuse strict;\r\nuse warnings;\r\n \r\nINIT {\r\n    $a = \"\\\\\\\"\\'\";\r\n    $b = '\\\\\\\"\\'';\r\n \r\n    say $a;\r\n    say $b;\r\n}\r\n \r\n__END__
\r\n\r\nPython:\r\n
#!/usr/bin/env python\r\n \r\nprint \"\\\\\\\"\\'\"\r\nprint '\\\\\\\"\\''
\r\n\r\n結果是:\r\n
$ ./quote.php\r\n\\\"\\'\r\n\\\\\"'\r\n\r\n$ ./quote.pl\r\n\\\"'\r\n\\\\\"'\r\n\r\n$ ./quote.py\r\n\\\"'\r\n\\\"'
\r\n\r\n這...", + "title": "幾個程式語言對引號以及 backslash 解讀..." + }, + { + "id": "4140", + "body": "前陣子在看資料庫寫入會卡住時找到的問題,主要是 SELECT SQL query 跑太久造成 InnoDB lock issue。\r\n\r\n這個問題可以朝幾個不同方向解決,其中一個方向是升級到 MySQL 5.6,對 read-only transaction 與 index merge 的判斷與效能都有改善。\r\n\r\n另外一個方向是改善 SQL query 本身效能,讓他不要跑太久就不會有 InnoDB lock issue。這篇要討論的就是這個方法...\r\n\r\nMySQL 在 5.0 開始就支援 Index Merge Optimization,也就是利用多個 index 的結果運算:「Index Merge Optimization」。\r\n\r\n有三種 index merge optimization,可以在 EXPLAIN 時看到:\r\n\r\n\r\n\r\n其中 intersection (交集) 的部份,Percona 在兩年前有寫一篇關於 Index Merge Intersection 反而會使得效能變差的文章:「The Optimization That (Often) Isn't: Index Merge Intersection」。\r\n\r\n以歌曲的例子來說,假設有一個表格叫做 song,裡面有千萬首歌曲的資料:\r\n\r\n
+------------+------------+------+-----+---------+----------------+\r\n| Field      | Type       | Null | Key | Default | Extra          |\r\n+------------+------------+------+-----+---------+----------------+\r\n| song_id    | int(10)    | NO   | PRI | NULL    | auto_increment |\r\n| album_id   | int(10)    | NO   | MUL | 0       |                |\r\n| artist_id  | int(10)    | NO   | MUL | 0       |                |\r\n| song_valid | tinyint(1) | NO   | MUL | 0       |                |\r\n+------------+------------+------+-----+---------+----------------+
\r\n\r\n其中 album_id 自己一個 index,artist_id 自己也一個 index,song_valid 自己也一個 index。當下這樣的 query 時就有可能會出現 index merge:\r\n\r\nSELECT * FROM song WHERE artist_id = 10000 AND song_valid = 1;\r\n\r\n其中 song_valid = 1 可能會佔 song 表格裡 90% 的資料,也就是 900 萬筆...\r\n\r\n如果發生 index merge,MySQL 會先抓出 artist_id = 10000 的 song_id,以及 song_valid = 1 的 song_id 取交集,會造成大量的 seq i/o read。即使這些資料都在記憶體 cache 內,還是需要 CPU 大量運算。用 force index 的方式強迫 MySQL 直接用 artist_id 的 index 抓出來掃會快很多。\r\n\r\n不過仔細去想,會發現有幾個解法:\r\n\r\n我是選擇後面這條,這是 index 愈多反而變得愈慢的 case 之一。", + "title": "Index 下的不好會對 MySQL 的 Index Merge 產生負面效果..." + }, + { + "id": "4151", + "body": "Hacker News Daily 上看到的:「[TAS] Super Mario World \"Executes Arbitrary Code\" in 02:25.19 by Masterjun」。\r\n\r\n沒想到這兩個名詞會同時出現... ~_~\r\n\r\n", + "title": "超級馬力歐世界的 Executes Arbitrary Code..." + }, + { + "id": "4155", + "body": "也不能算是 Cheatsheet... 但功能很接近了:「Go by Example」。\r\n\r\n因為不常寫 Go,每次要寫小東西的時候都要重新複習,這個網站提供了範例重點讓看過 Go 文件的人可以快速查詢,包含了常用的 library 的呼叫方式。\r\n\r\n先 bookmark 起來...", + "title": "Go 的 cheatsheet?" + }, + { + "id": "4159", + "body": "在 Slashdot 上看到 OpenBSD 要支援 signed package 的消息:「OpenBSD Moving Towards Signed Packages — Based On D. J. Bernstein Crypto」。\r\n\r\n使用的演算法是 djbEd25519,是基於橢圓曲線密碼系統的演算法。演算法名稱取自 2255-19 這個參數。\r\n\r\n
[ed25519] 23pp. (PDF) Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin Yang. High-speed high-security signatures. Journal of Cryptographic Engineering 2 (2012), 77–89. Document ID: a1a62a2f76d23f65d622484ddd09caf8. URL: http://cr.yp.to/papers.html#ed25519. Date: 2011.09.26.
\r\n\r\n意外發現魯教授的名字出現在列表上...", + "title": "OpenBSD 要支援 signed package 了..." + }, + { + "id": "4161", + "body": "自從 IBMThinkPad 被聯想買下後,就愈來愈糟糕了,尤其是對鍵盤的品味為人詬病已久...\r\n\r\n這次有寫手受不了了,寫了一篇對鍵盤「改進」很不滿的文章:「Stop Trying To 'Innovate' Keyboards, You're Just Making Them Worse」。\r\n\r\n\"\"\r\n\r\n上面這張鍵盤的圖出自原文,副標題是「Oh my god.」... XDDD\r\n\r\n沒有直接的 F1~F12 按鍵,另外「`~」的位置居然在下方,Home 與 End 則在左方?這應該要花很多時間努力才能熟悉這個鍵盤 XDDD", + "title": "有人受不了聯想的鍵盤了..." + }, + { + "id": "4163", + "body": "Slashdot 上看到電冰箱被攻陷當成跳板,被拿來發廣告信:「The Spamming Refrigerator」。BBC 的報導在「Fridge sends spam emails as attack hits smart gadgets」。\r\n\r\n原始報導是「Proofpoint Uncovers Internet of Things (IoT) Cyberattack」這篇。\r\n\r\n就報導的文章裡看不出來是什麼智慧型電冰箱...", + "title": "電冰箱也是會「中毒」的..." + }, + { + "id": "4168", + "body": "關於 RSA 幹了什麼事情,可以參考「OWASP 取消與 RSA Conference 的合作...」這篇的說明...\r\n\r\n剛剛在 Slashdot 上看到這些反對者決定另外成立一個 conference,叫做 TrustyCon:「RSA Boycot Group Sets Up Rival Conference」:\r\n\r\n\"\"\r\n\r\n日期在 2/27,很理所當然的,與 RSA Conference 2014 的 2/24~2/28 衝到。\r\n\r\n而且已經找到贊助商了,分別是 MicrosoftCloudFlare。", + "title": "反 RSA Conference 的人要另外開一個 TrustyCon..." + }, + { + "id": "4171", + "body": "AWS 官方公告這一波改善:「AWS Update - New M3 Sizes & Features + Reduced EBS Prices + Reduced S3 Prices」。\r\n\r\n首先是 EC2 多了 m3.medium 與 m3.large,與 m1.medium 與 m1.large 相比很有競爭力?\r\n\r\n以 {m1,m3}.medium 比較來看,m3 的 ECU 值比 m1 高 50% (3 vs 2),而且有 SSD 硬碟 (雖然只有 4GB),價錢又比較便宜... 拿來跑 CPU bound 的 server 看起來就很好用啊?\r\n\r\n另外一個超大的降價是 EBS,空間費用與 i/o 的費用都直接降 50%...\r\n\r\n該來找人討論 KKTIX 要不要 migrate 過去了...", + "title": "AWS EC2 更新以及降價,以及 EBS 降價..." + }, + { + "id": "4173", + "body": "HTTP Response Header 的 Location (俗稱「轉址」) 被用在不少地方,剛好今天被 ccn 戳到相關的問題...\r\n\r\n在維基百科的「HTTP location」條目裡面有說明 HTTP/1.1 的規範裡要求必須是 absolute URI:\r\n\r\n
Location       = \"Location\" \":\" absoluteURI
\r\n\r\n但實務上,目前市場上常見的瀏覽器都支援相對路徑。而且在 HTTP/1.1 修正版 (目前還在 draft) 裡被修正成:\r\n\r\n
Location = URI-reference
\r\n\r\n並且說明 relative 時的判定方式:\r\n\r\n
The field value consists of a single URI-reference. When it has theform of a relative reference ([RFC3986], Section 4.2), the final value is computed by resolving it against the effective request URI ([RFC3986], Section 5).
\r\n\r\n所以就大膽用吧...", + "title": "HTTP Header 裡的 Location 使用相對路徑..." + }, + { + "id": "4181", + "body": "Percona 的人寫了一篇「Percona Server: Improve Scalability with Percona Thread Pool」,提到關於 MySQL 在連線數很多時的效能。\r\n\r\n傳統的作法是一個連線使用一個 thread,這種方法實做起來很簡單,但當連線數超過一定程度時就會因為共用資源的限制而變慢。\r\n\r\n其中一種解決方法是引入 Thread Pool 架構,也就是 M 個 thread 處理 N 個連線。\r\n\r\nOracle 有提供商用版本叫做 Thread Pool Plugin,就如同名字,是以 plugin 形式存在。這個功能在 5.55.6 都有。\r\n\r\nMariaDB 也有 open source 實做的 Thread pool。\r\n\r\n而 Percona 則是使用 MariaDB 的版本。(原文是說有改善,不過 benchmark 並沒有列出來,我「猜」其實沒什麼改善...)\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看到在多連線數時的效果相當好。在 MariaDB 的文件裡有提到會有改善的時機:\r\n\r\n
Threadpools are most efficient in situations where queries are relatively short and the load is CPU bound (OLTP workloads). If the workload is not CPU bound, you might still want to limit the number of threads to save memory for the database memory buffers.
\r\n\r\nquery 相對短,而且是 CPU bound。\r\n\r\n回頭看的時候發現 Percona Server 5.5 就有支援 Thread Pool 了,應該來測試看看效果如何...", + "title": "MySQL 上的 Thread Pool..." + }, + { + "id": "4183", + "body": "最近幾天備份服務 Backblaze 以他們自家使用大量的硬碟統計數字 (快三萬顆硬碟),對硬碟耐用程度發了一篇「What Hard Drive Should I Buy?」的文章。\r\n\r\n其實最重要的事情在第一張圖的年故障率就講的差不多了...\r\n\r\n\"\"\r\n\r\n另外還有一張三年故障率存活率:\r\n\r\n\"\"\r\n\r\n這數字在國外引起不小的風暴啊...", + "title": "各家硬碟的耐用程度..." + }, + { + "id": "4185", + "body": "在「Is Your ISP Messing With BitTorrent Traffic? Find Out」這篇文章裡提到了 Measurement Lab 公開所蒐集到的資訊,列出全世界各 ISP 過濾限流的比率:「How neutral is the net?」。\r\n\r\n台灣的部份抓出來如下:\r\n\r\n\"\"\r\n\r\n由於不知道到底是怎麼計算,所以只有 ranking 的部份有意義,而且只能挑大的看 (其他樣本太少的無法判斷準確性)。\r\n\r\n最大的當然還是 HiNet,比率是 13.2%,比起其他 ISP 低很多。這跟外面一般講「如果要跑 P2P 還是用 HiNet」的感覺接近。", + "title": "台灣 ISP 過濾限流的比率..." + }, + { + "id": "4188", + "body": "香港開源年會 2014:\r\n\r\n\"\"\r\n\r\n2014/03/29 (星期六) 在香港舉辦,確切地點還沒定案。", + "title": "香港開源年會 2014" + }, + { + "id": "4190", + "body": "Ingram Chen 寫的「Obvious Choice」這篇舉的例子剛好是在討論資料庫裡 Primary Key 的設計。\r\n\r\n這個問題之前在 interview 的時候曾經拿出來問。問到資料庫相關的題目時,有些人在設計 schema 會多放一個 id 欄位,有些人則不會放。\r\n\r\n有放 id 欄位的我就會問「為什麼要放」,沒有 id 欄位的我就會問「為什麼不這樣設計」。重點不在於哪個才是正確的,而是在於要能夠說明為何這樣選擇。\r\n\r\n不過大多數人都是「看別都這樣做,所以我就這樣做」,可惜...", + "title": "資料庫裡 Primary Key 的選擇..." + }, + { + "id": "4192", + "body": "Linode 剛剛公佈了 Linode CLI 工具:「Linode CLI」。\r\n\r\n工具是用 Perl 寫的,Facebook 上有張 screenshot:\r\n\r\n\"\"\r\n\r\n基於現有的 Linode API 開發的工具...", + "title": "Linode CLI..." + }, + { + "id": "4194", + "body": "昨天在 Twitter 上看到的,剛剛在「Regular expression crossword puzzle」又看到:\r\n\r\n\"\"\r\n\r\n印出來過年來填...", + "title": "Regular Expression 字謎遊戲..." + }, + { + "id": "4196", + "body": "AWS SES 多開了幾個點:「Two New Locations for Amazon Simple Email Service」。\r\n\r\n看起來是針對這兩個 region 的 AWS 而設計的,不然以 e-mail 的性質是不太需要另外再開...", + "title": "AWS SES 支援歐洲與美西二區 Endpoint..." + }, + { + "id": "4198", + "body": "烏克蘭的革命是目前全世界的焦點 (Google News 的「Ukraine」),但國內幾乎沒看到什麼新聞報導...\r\n\r\n其中 DoctrineEnumBundle 的 pull request 也因為事主的回應爆紅:「support SQLite for functional testing purposes」:\r\n\r\n
I will take a look later. Much much later. Because I'm Ukrainian and we have revolution right now. Sorry
\r\n\r\n在「Revolution in Kiev, Ukraine」可以看到更多照片與資訊:\r\n\r\n投擲武器:\r\n\r\n\"\"\r\n\r\n汽油彈:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n沒人在跟你客氣的...", + "title": "在烏克蘭的革命..." + }, + { + "id": "4200", + "body": "29 億美金的交易:「Lenovo to buy Google's Motorola in China's largest tech deal」。\r\n\r\n紐約時報的「Did Google Really Lose on Its Original Motorola Deal?」這篇給了一種分析的想法,實際上 Google 並沒有損失太多?\r\n\r\n另外一方面,聯想最近動作很多啊...", + "title": "聯想買下 Motorola..." + }, + { + "id": "4202", + "body": "剛剛在弄 Linode 上的 Ubuntu 時要裝 PPA,發現沒有 apt-add-repository 可以用,找了一下資料發現這不是系統一定會安裝的軟體,所以要自己手動安裝:\r\n\r\n
apt-get install python-software-properties
\r\n\r\n裝完後就可以繼續裝 PPA 了。", + "title": "Ubuntu 上找不到 apt-add-repository 的解法" + }, + { + "id": "4207", + "body": "放長假的時候總是可以感覺到世界上其他地方是沒放假的...\r\n\r\nPercona 宣佈 Percona XtraDB Cluster 5.6 進入 GA (General Availability):「Percona XtraDB Cluster 5.6 GA release now available」。\r\n\r\nPercona XtraDB Cluster 5.6 是基於 MySQL 5.6 以及 Galera Cluster 3 的版本。\r\n\r\n其實最主要的效能改善是 Oracle 在 MySQL 5.6 上面下的功夫,比起 5.5 好不少。\r\n\r\nPercona 官方有提到,現有的 PXC 5.5 可以在不停機的情況下升級到 5.6 (兩台輪流升級),這是件好事 (表示有問題回報時會被處理),但需要實際測試過才知道要怎麼做。所以就先在虛擬機裡面測試看看,沒問題就來規劃...\r\n\r\n不過 PXC 上應該還是不能用 memcache interface 吧?之前有提到有問題,而且也沒看到有解決,所以應該還是不能用?", + "title": "Percona XtraDB Cluster 5.6 GA" + }, + { + "id": "4209", + "body": "這應該是 MySQL 的 best practice 之一,不知道為什麼 Baron Schwartz 又拿出來講:「A simple rule for sane timestamps in MySQL」。\r\n\r\nMySQL 內可以儲存「日期與時間」的資料型態是 DATETIME 與 TIMESTAMP 兩種,不過 DATETIME 沒有時區觀念,而 TIMESTAMP 只能是 UTC (GMT+0)。\r\n\r\n相較於隔壁棚 PostgreSQLDate/Time Types 就一種 TIMESTAMP,但支援 with timezone 與 without timezone 直接解決問題。\r\n\r\n這使得 MySQL 上在儲存「日期與時間」以及處理的時候一直有種 WTF 的感覺...\r\n\r\n就如同 Baron Schwartz 的建議,如果使用 MySQL,目前比較好的方法是用 INT UNSIGNED NOT NULL 儲存,把 timezone 的處理都放到應用程式端來處理,這樣產生的問題會比較少...\r\n\r\n真的需要在 INSERT 或是 UPDATE 時更新欄位,可以用 trigger 處理,彈性反而比內建功能大不少。", + "title": "MySQL 裡儲存時間的方式..." + }, + { + "id": "4212", + "body": "Open Redirect 的問題可以參考:\r\n\r\n這兩個連結。主要是要避免 phishing 的問題上。\r\n\r\n一開始是以「只允許 / 開頭」為條件過濾,但 protocol-relative 的 //www.example.com 可以繞開。\r\n\r\n如果變成「只允許 / 開頭,但不允許 // 開頭」,是不是就沒事了呢?\r\n\r\n在「Evolution of Open Redirect Vulnerability.」這邊又看到新招:「/\\www.example.com」。\r\n\r\n想要用 parse_url() 檢查?沒問題:\r\n
$ php -a\r\nInteractive mode enabled\r\n\r\nphp > var_dump(parse_url(\"/\\\\www.example.com\"));\r\narray(1) {\r\n  'path' =>\r\n  string(17) \"/\\www.example.com\"\r\n}
\r\n\r\n但實際測試會發現 IE8 與 Google Chrome 都會跳到 www.example.com (沃槽),其他瀏覽器就先不測了 ~_~\r\n\r\n不過原文說的 ///www.example.comPHP 上測試應該是不會過的?\r\n
$ php -a\r\nInteractive mode enabled\r\n\r\nphp > var_dump(parse_url(\"///www.example.com\"));\r\nbool(false)
\r\n\r\n反正又冒出一堆問題要處理了 ~_~", + "title": "擋 Open Redirect 的問題..." + }, + { + "id": "4221", + "body": "前幾天才把 DigitalOcean 的 Droplet 都清掉,然後收到 DigitalOcean 給的 USD$5 後,本來的主機就失聯了,剛好又跑回來用...\r\n\r\n而之前買的 WordPress 備份服務 VaultPress 也派上用場,直接去上面拉資料下來,照著步驟做就解決了... O_O\r\n\r\n不過應該還是有很多東西需要調整吧... 之前在 Ubuntu 上跑 PHP 的量也都不大,我自己的 blog 反而是最大的?而且是跑在 512MB 的機器上 (雖然設了 1GB 的 swap),不過應該還是很多需要調整的吧 :o\r\n\r\n不過 DNS 的部份還要再等等,等到都 timeout 後才算正常 :o", + "title": "把 blog 搬到 DigitalOcean 上..." + }, + { + "id": "4225", + "body": "在 EdgeCast 官網上丟出來的「The Positive Performance Impact of a Dual CDN Strategy」這篇 PR 稿引用了 Optimizely 的「The Most Misleading Measure of Response Time: Average」。\r\n\r\nEdgeCast 官網上的 PR 稿當然不會提到 Akamai 的名字,但在 Optimizely 上有說明:\r\n\r\n
At Optimizely, we had already been using Akamai, one of the world’s fastest and most reliable CDNs, so we decided to try adding another. We tested a balanced CDN architecture, combining Akamai with EdgeCast, another leader in the CDN space.
\r\n\r\n可以看到 99 percentile response time 大幅改善:\r\n\r\n\"\"\r\n\r\n其中改善最高的是北美:\r\n\r\n\"\"\r\n\r\n不過看不出來是怎麼測試 CDN Balancing 這個方法啊?依照白皮書的說明:\r\n\r\n
Prior to introducing CDN Balancing, Optimizely’s experiment code was stored in a JavaScript file that sits on Akamai’s CDN, one of the fastest and most reliable CDNs in the world. The code in this file is important because it’s responsible for making client-side changes to a page and serving them to visitors according to the targeting and A/B testing criteria set up by the Optimizely customer who created the experiment.
\r\n\r\n看起來是對 js code 測試,應該是 cdn.optimizely.com 這個 hostname,而 optimizely.com 的 DNS 放在 Dyn 上。\r\n\r\n猜測應該是對 EdgeCast 有服務的地區丟到 EdgeCast 上 (美國的部份應該可以切割到「州」),其他的則丟到 Akamai 上?不過現在怎麼查都是 EdgeCast 啊,從馬來西亞查也是丟到 EdgeCast 的 CDN 上 (然後被導到新加坡)。\r\n\r\n不過,在北美 EdgeCast 會比 Akamai 快這麼多應該是因為 EdgeCast 有兩個平台,一個是 for large files,一個是 for small files,兩個平台最佳化時調整的參數應該不同,針對大檔案的部份會計較 thoughtput,針對小檔案的部份會計較反應時間。Akamai 可能就是輸在這邊...\r\n\r\n也有可能是因為 EdgeCast 的反應時間比較好,然後 Akamai 合約到期就整個切過去了?(噗)\r\n\r\n冒出很多疑問啊...", + "title": "Akamai 與 EdgeCast 混用的效果..." + }, + { + "id": "4228", + "body": "因為 HiNet 在自家放了 192.88.99.1 的 6to4 gateway,設起來玩看看?\r\n\r\n網路上找了不少方法都不會動 (包括 Ubuntu 在官方 wiki「IPv6」上給的連結「IPv6: Linux as 6to4 host」),最後是用「IPv6 6to4 config generator for Debian」這邊的方法。我是用 Ubuntu 12.04。\r\n\r\n在 /etc/network/interface 裡加上:\r\n\r\n
auto tun6to4\r\niface tun6to4 inet6 v4tunnel\r\n\taddress 2002:0102:0304::1 \r\n        netmask 16              \r\n\tgateway ::192.88.99.1\r\n\tendpoint any\r\n\tlocal 1.2.3.4
\r\n\r\n其中 1.2.3.4 是 public IP,而 0102:0304 則是 hex 表示法。設完後跑 ifup tun6to4 就會帶起來了。\r\n\r\n可以用 telnet -6 www.google.com 80 看看有沒有通,或是連到 The KAME project 看看有沒有會動的烏龜 :p", + "title": "Debian/Ubuntu 上跑 6to4 的方法..." + }, + { + "id": "4231", + "body": "Storing ASCII art in the DNS:\r\n\r\n\"\"\r\n\r\n用 NAPTR record 做的 XDDD", + "title": "把 ASCII art 放到 DNS 裡..." + }, + { + "id": "4237", + "body": "MySQL 表格欄位是 CHAR 或 VARCHAR 時,寫搜尋條件要記得使用 string 格式,而非數字。意思是,要避免這種 SQL query:\r\n\r\nSELECT * FROM foo WHERE `column_string` = 123456;\r\n\r\n原因是即使 column_string 加上了 B-tree index,也無法利用這個 index 加速查詢。\r\n\r\n原因是,除了最明確的 '123456' 會符合外,還有很多種 case 符合:\r\n\r\n
mysql> SELECT 123456 = '0123456';\r\n+--------------------+\r\n| 123456 = '0123456' |\r\n+--------------------+\r\n|                  1 |\r\n+--------------------+\r\n1 row in set (0.00 sec)\r\n\r\nmysql> SELECT 123456 = ' 123456';\r\n+--------------------+\r\n| 123456 = ' 123456' |\r\n+--------------------+\r\n|                  1 |\r\n+--------------------+\r\n1 row in set (0.00 sec)
\r\n\r\n這使得 index 無用武之地。\r\n\r\n但如果欄位本身是數字 (INT/BIGINT),搜尋時用字串反而沒關係:MySQL 會先把字串轉型為數字再比較,所以會用到 index。\r\n\r\n總而言之:\r\n\r\n今天上場當救援投手時解掉的問題...", + "title": "MySQL 裡搜尋 CHAR/VARCHAR (String) 欄位時要注意的事情" + }, + { + "id": "4240", + "body": "AWS Elastic Load Balancing (ELB) 是 AWS 在雲端上推出的 Load balancer。\r\n\r\n在非雲端的架構上會使用 Layer 4 Switch (像是 F5Alteon),或是使用 open source 的 HAProxy。\r\n\r\n從實驗猜測 ELB 是這樣做的:\r\n\r\n所以 ELB 的文件上會警告「每一個 AZ 的運算能力要盡可能接近」:\r\n\r\n
By default, the load balancer node routes traffic to back-end instances within the same Availability Zone.\r\n\r\nTo ensure that your back-end instances are able to handle the request load in each Availability Zone, it is important to have approximately equivalent numbers of instances in each zone.
\r\n\r\n這是因為不同 AZ 的平衡是靠 DNS round robin 處理,所以下面的例子就有建議儘量打平:\r\n\r\n
For example, if you have ten instances in Availability Zone us-east-1a and two instances in us-east-1b, the traffic will still be equally distributed between the two Availability Zones.\r\n\r\nAs a result, the two instances in us-east-1b will have to serve the same amount of traffic as the ten instances in us-east-1a.\r\n\r\nAs a best practice, we recommend that you keep an equivalent or nearly equivalent number of instances in each of your Availability Zones.\r\n\r\nSo in the example, rather than having ten instances in us-east-1a and two in us-east-1b, you could distribute your instances so that you have six instances in each Availability Zone.
\r\n\r\n而量大到一個 ELB instance 撐不住的時候,AWS 就會自動開出第二台:(目前都只放在同一個 zone 上)\r\n\r\n
;; ANSWER SECTION:\r\nlb-guesschocolate-1791292202.ap-northeast-1.elb.amazonaws.com. 60 IN A 54.249.68.121\r\nlb-guesschocolate-1791292202.ap-northeast-1.elb.amazonaws.com. 60 IN A 54.238.240.61
\r\n\r\n以這樣的架構,當量夠大的時候,AWS 應該要有能力生出足夠多的 ELB instance 打散?之後再來觀察看看好了... 還有很多煩惱要處理 ~_~", + "title": "猜測 AWS ELB 內的架構..." + }, + { + "id": "4244", + "body": "把十年多的 BBS source code porting 到 Ubuntu 上,被迫要用 GCC 4.6 而一路找出來的...\r\n\r\n在 BBS 內有這樣的資料結構要處理:\r\n\r\n
typedef struct p {\r\n    struct p *pointer;\r\n} P;\r\n\r\nstatic P p1 = { &p2 };\r\nstatic P p2 = { &p1 };
\r\n\r\n兩個要互指,但在指定 p1 時 p2 還沒有被定義,所以要用 extern 先宣告:\r\n\r\n
typedef struct p {\r\n    struct p *pointer;\r\n} P;\r\n\r\nextern P p2;\r\n\r\nstatic P p1 = { &p2 };\r\nstatic P p2 = { &p1 };
\r\n\r\n這個語法在舊版的 GCC 沒問題 (3.4),但在新版的 GCC 4.6 上不接受這個寫法,會抱怨後面的 p2 實際在宣告是 static,與前面的 extern non-static 不符。\r\n\r\n後來在 Stack Overflow 上找到「static extern vs extern static」這篇說明,要先定義 static 再定義 extern:\r\n\r\n
static P p2;\r\nextern P p2;
\r\n\r\n這樣寫的原因在原文的下方有說明,所以是 C99 定義的關係?", + "title": "C 語言的 extern 與 static..." + }, + { + "id": "4250", + "body": "今天 DigitalOcean 宣佈新加坡資料中心營運 (SGP1):「We're Excited To Announce Our Singapore Datacenter (SGP1)」。\r\n\r\n要測試 latency 或是要看 routing 的人可以用 DigitalOcean 提供的 speedtest-sgp1.digitalocean.com 測。\r\n\r\n中華電信 HiNet 光世代動態 IP、PPPoE 固定 IP,以及三重的重新機房到 speedtest-sgp1.digitalocean.com 都是 90ms~100ms 左右。\r\n\r\n台灣固網內湖機房約 75ms 左右。\r\n\r\n而目前看到數字最好的是遠傳的機房的 60ms 左右,ISP 直接進香港 NTT 後就轉入新加坡 NTT,最後進 DigitalOcean。\r\n\r\n在 comment 裡也有提到目前的 peering 還不完整,最近會一直調整:\r\n\r\n
In regards to the latency that people may be experiencing in Singapore: We are sorry to hear that you are having latency issues at this time. Some of our peering is delayed and we will be improving generally connectivity around Asia in the coming weeks.
\r\n\r\n以後要測試就拿這個點了!XD", + "title": "DigitalOcean 建立新加坡機房..." + }, + { + "id": "4254", + "body": "最近幾天 NTP 放大攻擊還蠻嚴重的,像是 CloudFlare 這兩天就被 400Gbps 貓:「NTP-based DDoS attacks a concern, says Cloudflare」。\r\n\r\nCloudFlare 有寫過一篇 NTP 放大攻擊的說明:「Understanding and mitigating NTP-based DDoS attacks」。\r\n\r\n另外在 irc 上看到系上學弟說可以查詢有哪些 NTP server 是會被當作 NTP 放大攻擊的工具:「OpenNTPProject.org - NTP Scanning Project」,把 IP range 丟進去就可以看到 (一次可以查到 /22),可以當作一份外部資訊來幫助內部優先處理。", + "title": "最近的 NTP attack 的檢測..." + }, + { + "id": "4259", + "body": "在「Please. Don't Patch Like An Idiot.」這篇文章裡看到「JavaScript Object Notation (JSON) Pointer」(RFC 6901)。\r\n\r\n類似 XML 的 XPath,JSON Pointer 可以查詢 JSON object。\r\n\r\n比較特別是拿 ~ 這個符號當特殊字元,原本的 ~ 變成 ~0,而 / 變成 ~1,所以這個 JSON object:(取自 RFC 內的範例)\r\n\r\n
{\r\n      \"foo\": [\"bar\", \"baz\"],\r\n      \"\": 0,\r\n      \"a/b\": 1,\r\n      \"c%d\": 2,\r\n      \"e^f\": 3,\r\n      \"g|h\": 4,\r\n      \"i\\\\j\": 5,\r\n      \"k\\\"l\": 6,\r\n      \" \": 7,\r\n      \"m~n\": 8\r\n   }
\r\n\r\n使用這些 JSON pointer 會得到後面這些結果:\r\n\r\n
    \"\"           // the whole document\r\n    \"/foo\"       [\"bar\", \"baz\"]\r\n    \"/foo/0\"     \"bar\"\r\n    \"/\"          0\r\n    \"/a~1b\"      1\r\n    \"/c%d\"       2\r\n    \"/e^f\"       3\r\n    \"/g|h\"       4\r\n    \"/i\\\\j\"      5\r\n    \"/k\\\"l\"      6\r\n    \"/ \"         7\r\n    \"/m~0n\"      8
\r\n\r\n規格還蠻簡單的...", + "title": "在 JSON 裡的 XPath..." + }, + { + "id": "4261", + "body": "與上篇一樣,都是在「Please. Don't Patch Like An Idiot.」這篇裡看到的:「JavaScript Object Notation (JSON) Patch」(RFC 6902)。\r\n\r\n配合 JSON Pointer (RFC 6901) 的語法,下面的操作很清楚表示了想要做什麼:\r\n\r\n
[\r\n    { \"op\": \"test\", \"path\": \"/a/b/c\", \"value\": \"foo\" },\r\n    { \"op\": \"remove\", \"path\": \"/a/b/c\" },\r\n    { \"op\": \"add\", \"path\": \"/a/b/c\", \"value\": [ \"foo\", \"bar\" ] },\r\n    { \"op\": \"replace\", \"path\": \"/a/b/c\", \"value\": 42 },\r\n    { \"op\": \"move\", \"from\": \"/a/b/c\", \"path\": \"/a/b/d\" },\r\n    { \"op\": \"copy\", \"from\": \"/a/b/d\", \"path\": \"/a/b/e\" }\r\n]
\r\n\r\n再加上 HTTP header 裡的 If-Match 可以用來處理起始版本,test 也可以阻擋某些異常狀況,基本的都有了?接下來應該找 Canonical JSON 的方案,這樣可以直接拿 hash 的值當版本?", + "title": "JSON Patch..." + }, + { + "id": "4264", + "body": "本來是用 AMDX4 905e,拿來跑 Ubuntu 當跳板機,偶而看看影片還算夠用,不過 Google Chrome 的速度已經影響到工作了,星期六晚上家庭聚餐結束後就去八德路上原價屋拿了一顆新的 CPU 與主機板...\r\n\r\n換上 IntelXeon E3-1230 v3 後 Ubuntu 也不需要重裝,Google Chrome 的速度也快多了...\r\n\r\n\"\"\r\n取自「PassMark - AMD Phenom II X4 905e - Price performance comparison\r\n\r\n\"\"\r\n取自「PassMark - Intel Xeon E3-1230 v3 @ 3.30GHz - Price performance comparison\r\n\r\n沒想到是因為瀏覽器而換 CPU...", + "title": "因為 Google Chrome 太慢而換 CPU (以及主機板)" + }, + { + "id": "4266", + "body": "發現以前沒有提到過...?\r\n\r\nWordPress.com Developer Resources 寫的這篇「An efficient alternative to paging with SQL OFFSETs」提到了用 OFFSET 實做 Pager 的效率問題。\r\n\r\n因為 RDBMS 是人寫的,所以人想不到的方法,程式也做不到,像是這樣的 SQL query 效率不會好:\r\n\r\n
SELECT * FROM my_table ORDER BY pk LIMIT 8000000, 100;
\r\n\r\n如果這是一般以 B+tree 儲存的 RDBMS (或是類似的資料結構),會先把 pk 拿出來,從最小的開始計算,掃過八百萬次後再去抓一百筆 pk 的值,最後再回到 my_table 內把所有資料拉出來。\r\n\r\n這個方法當 offset 小的時候不會有感覺,但大了以後就會爆炸。就算 primary key 都在記憶體內,仍然是狂操 CPU L2/L3 以及記憶體的存取速度。\r\n\r\n目前常見的分頁作法是在 url 上妥協,只提供「下一頁」或「下 n 頁」的功能。如此一來,url 變成:\r\n\r\n
https://www.example.com/blog?page=10&started_at=12345678\r\nhttps://www.example.com/blog?page=11&started_at=12345690\r\nhttps://www.example.com/blog?page=12&started_at=12345710
\r\n\r\nstarted_at 變成 unix timestamp,而資料庫對時間欄位 index。如此一來,資料庫在查詢的時候就可以先 B+tree 找到 started_at 的節點 (或是小於他最近的節點),然後連續抽出一百筆。\r\n\r\n另外一種則是在產品面上「妥協」,也就是方法保持不變,但限制「一個 thread 最多只能回 1000 篇」,這在 2ch 或是論壇上很常看到。", + "title": "避免用 SQL 的 OFFSET 實做 Pager" + }, + { + "id": "4269", + "body": "維基百科對 UPSERT 的說明:(取自「Merge (SQL)」條目)\r\n\r\n
A relational database management system uses SQL MERGE (also called upsert) statements to INSERT new records or UPDATE existing records depending on whether or not a condition matches.
\r\n\r\n在 MySQL 裡的兩種語法其實就是在實做這個需求:\r\n\r\n而前者其實是後者的一個特例 (當 INSERT 發現有 dupe key 時把現有的 record 改成與 INSERT 時相同的條件)。\r\n\r\n而計數器是後者常見的 case 之一:當 record 不存在的時候塞一筆進去,並且將 counter 設為 1;當 record 存在的時候對 counter 加一更新。像是這樣的 SQL query:\r\n\r\nINSERT INTO my_table SET id = ?, num = 1 ON DUPLICATE KEY UPDATE num = num + 1;\r\n\r\n由於這是常見的需求,使得這個語法是目前少數 MySQL 比 PostgreSQL 好用的地方。\r\n\r\n在「A Case for Upserts」這篇就看到抱怨 PostgreSQL 不實做這個功能...\r\n\r\n不過我覺得作者寫得有點誇張,INSERT INTO ... ON DUPLICATE KEY UPDATE ... 應該是可以模擬出來的功能:當 INSERT 失敗後再跑 UPDATE。而 REPLACE INTO ... 是特例,也就當然可以模擬出來。", + "title": "UPSERT" + }, + { + "id": "4273", + "body": "過年後在家裡弄了一台技嘉的準系統跑 Ubuntu 12.04,結果手上突然沒機器可以跑 porttools 測試,而這台機器平常也沒接鍵盤,就想直接跑 command line 的 KVMFreeBSD。其實知道方式後就很簡單,只是一開始沒弄懂花了不少時間...\r\n\r\n首先是安裝 KVM,這部份用 apt-get install kvm 就可以拉下來裝好了。\r\n\r\n真正要做的第一部是先用 qemu-img 建立 40GB 的 disk image (qcow2):\r\n\r\nqemu-img create -f qcow2 ~/vm/image.qcow2 40G\r\n\r\n然後直接用 iso image 安裝 (抓 iso image 的事情也跳過去請各位自己來),設為 4 CPU (-smp 4)、1024MB RAM (-m 1024),並且透過 serial console 安裝 (-nographic -curses),開機先從 cdrom 上開 (-boot d):\r\n\r\nkvm -smp 4 -drive file=/abs/path/vm/image.qcow2,if=virtio -cdrom /abs/path/vm/FreeBSD-10.0-RELEASE-amd64-bootonly.iso -m 1024 -nographic -curses -net nic,model=e1000 -net tap -boot d\r\n\r\n其中網路的部份卡了最久,後來發現預設值的 -net nic -net user 意思是:\r\n\r\n由於 userland mode NAT 很受限 (只有 TCP 與 UDP 會通),所以我用 -net nic -net tap 表示直接 bridge 到 virbr0 上再 NAT 出去。而我希望對 Guest OS 使用 e1000,所以最後就變成 -net nic,e1000 -net tap。\r\n\r\n接下來安裝 FreeBSD 時就可以用 DHCP mode 抓到 IP 了,由於我希望可以從 Host 直接連進去,所以我是設成 static IP。\r\n\r\n裝完後就不需要掛 cdrom 與優先從 cdrom 開始開:\r\n\r\nkvm -smp 4 -drive file=/abs/path/vm/image.qcow2,if=virtio -m 1024 -nographic -curses -net nic,model=e1000 -net tap\r\n\r\n先前用 -hda /abs/path/vm/image.qcow2 掛上去,結果 i/o 很慢,被 delphij 提醒後改跑 virtio,速度就正常多了。不過這是因為 FreeBSD 10 就內建支援 virtio 了,如果是使用 FreeBSD 9 的需要另外再透過 ports 裝進去。\r\n\r\n記錄下來給需要的人玩看看,下次也許應該玩玩看 VNC display?", + "title": "Ubuntu 12.04 上用 KVM (CLI) 裝 FreeBSD" + }, + { + "id": "4277", + "body": "靠的是「Apple’s HTTP Live Streaming (HLS) in Flash !」這篇「2014/02/12 的 comment」解的 (不是原文內的方法)。\r\n\r\n專案在 GitHub 上:「HLSProvider is a Flash/AS3 plugin that plays back HLS streams」。\r\n\r\n使用方式與範例可以在「HLSprovider/test/flowplayer at master · mangui/HLSprovider」這邊翻到,直接看 index.html,並且把 swf 檔弄出來就可以動了。\r\n\r\n不過實際測試發現 buffer 的部份好像處理的不是很好... 但至少有東西可以用了 :o", + "title": "在 Flash 上播 HLS..." + }, + { + "id": "4279", + "body": "AWS ELB 加強對 SSL 安全性的功能:「Elastic Load Balancing – Perfect Forward Secrecy and Other Security Enhancements」。\r\n\r\n\"\"\r\n\r\n第一個是支援 PFS (Perfect Forward Secrecy),愈大多數的實做相同,是使用 ECDH。\r\n\r\n第二個是 Server Order Preference,由 server 這邊決定最終的 cipher。\r\n\r\n最重要的是第三個,也就是「懶人包」。推出新的 security policy ELBSecurityPolicy-2014-01,把上面兩個都設進去了。\r\n\r\n這次的升級是對安全性的提昇...", + "title": "AWS ELB 加強安全性..." + }, + { + "id": "4281", + "body": "BrowserSync 是用 node.js 寫的工具,可以同時測試一堆 device,修改後不用按 reload,印象中已經有套件可以做類似的事情?\r\n\r\n一般用 npm 裝就可以了:\r\n\r\n
npm install browser-sync
\r\n\r\n最簡單的方法是直接執行 browser-sync,執行後會出現像這樣的訊息:\r\n\r\n
<script src='//192.168.1.1:3000/socket.io/socket.io.js'></script>\r\n<script>var ___socket___ = io.connect('http://192.168.1.1:3000');</script>\r\n<script src='//192.168.1.1:3001/client/browser-sync-client.0.6.0.js'></script>
\r\n\r\n把這段程式碼貼到 body 的最後面就可以了,當 BrowerSync 偵測到檔案有更新時會透過 server push 機制重刷頁面。\r\n\r\n另外,也可以產生 bs-config.js 修改設定:\r\n\r\n
browser-sync --init
\r\n\r\n更完整的說明可以從「Options」這頁找到。", + "title": "用 BrowserSync 測試多個平台..." + }, + { + "id": "4283", + "body": "Domain Sharding 是針對以往瀏覽器常見的「加速技巧」(workaround),目的是突破瀏覽器對單一 domain 的最大連線速限制。像是 IE{6,7} 在 HTTP/1.1 上的限制是 2。\r\n\r\nSteve Souders 在 2008 年整理的「Roundup on Parallel Connections」就有列出當時各瀏覽器的限制。而在 BrowserscopeNetwork 可以看到更多新的數字。\r\n\r\n而隨著環境一直在改變,桌機限制的連線數也逐漸調高,以及 SPDY 的發展,再加上行動平台的比重愈來愈高,本來的 Domain Sharding 技巧需要重新審視。\r\n\r\n在 Etsy 的「Reducing Domain Sharding」這篇文章中提到他們決定減少 Domain Sharding 的數量 (由四個變成兩個),而改善了反應時間:\r\n\r\n這兩個改善使得每次造訪的點閱率多了 0.27 page。\r\n\r\n尤其是行動平台上對 Domain Sharding 的敏感程度,讓現在設計網站的人要考慮的更多了...", + "title": "Domain Sharding 的調整..." + }, + { + "id": "4285", + "body": "browserify 可以將用到的程式碼都包成一包,拿到瀏覽器上使用。\r\n\r\n舉個例子離說,先寫了一個 a.js:\r\n\r\n
(function(){\r\n    var el = document.getElementById('output');\r\n\r\n    var j2x = require('json2xml');\r\n    el.innerText = j2x({a: 1});\r\n})();
\r\n\r\n其中可以看到直接拿 require()json2xml 抓進來。但在瀏覽器裡要自己處理有哪些 dependency 很麻煩,就用 browserify 拉出來:\r\n\r\n
browserify a.js -o a.bundle.src.js
\r\n\r\n生出來的 a.bundle.src.js 就可以拿到瀏覽器裡使用了!如果需要的話,還可以用 JS Compressor 再壓起來再拿到瀏覽器裡使用。\r\n\r\n最後補充一下,browserify 的安裝方式很簡單:\r\n\r\n
npm install browserify
\r\n\r\n就是這樣而已。", + "title": "用 browserify 將 npm 的函式庫包到瀏覽器上用..." + }, + { + "id": "4289", + "body": "ComposerPHP 上新一代的套件管理軟體。\r\n\r\nComposer 與之前各種方案不同的地方在於,後面掛了 Packagist 這個 PHP package archivist,讓使用者很方便的取得套件 (以及更新)。\r\n\r\n其中有一個功能是 replace,表示我所開發的這個套件「宣稱」可以取代其他套件 (通常是 API compatible)。\r\n\r\n看到這個功能的時候,以為是要讓 Packagist 能夠串起連結。畢竟偶而會發生「這個套件最新版是 2008 年了,到底有沒有後續維護啊」的情況。如果 Packagist 官方網站可以串起連結,可以節省開發者時間,而且也可以利用 Packagist 上的熱門度來決定要用哪一個後繼者。\r\n\r\n但實際上與預期的不同,Composer 的預設值是會「自動」尋找更新並且真的使用,也就是前幾天被丟出來的議題:「Composer is wide open with a massive security vulnerability」。\r\n\r\n攻擊者只要在 Packagist 上面上傳一堆含有惡意程式碼的套件 (並且利用 replace 宣稱可以取代 ZF2 或是 Laravel),受害者在 composer update 的時候就有機會抓到這些有惡意程式碼的套件。\r\n\r\n而最糟糕的是,主要開發者認為這不是問題,還寫了一大篇文章顧左右而言他之後說「錯覺啦~」:「Composer: Replace, Conflict & Forks Explained」:\r\n\r\n
Replace is not a bug. Don’t run composer update in automated systems. Forks are allowed on Packagist. Don’t be an idiot when publishing a fork. Got an unexpected fork on update? Your dependencies conflict with the original package. Use conflict (syntax like require) in your composer.json to blacklist the fork and see an explanation of the dependency issue.
\r\n\r\n於是發現問題的人就爆炸了。\r\n\r\n依照往例,vendor 不覺得是問題的安全漏洞,只能把事情弄大爆出來逼 vendor 修。\r\n\r\n修正在「Limit Replace / Provides to packages required by name in root package or any dep」這裡。最新版的 Composer 裡已經納入這個修正了。", + "title": "PHP Composer 的安全性問題" + }, + { + "id": "4297", + "body": "在「Buffalo Launches Three Open Source DD-WRT Wireless Routers」這邊看到 Buffalo 推出三台以 dd-wrt 為號召的機器。\r\n\r\nBuffalo 官方的新聞稿在「Buffalo Introduces Open Source DD-WRT Wireless Networking Solutions」這邊。\r\n\r\n在美國機器是三年保,另外加上免費 24/7 基本技術支援的電話:\r\n\r\n這價錢看起來普普通通,等出來了再看評價吧 XD", + "title": "Buffalo 推出三台以 dd-wrt 為號召的機器..." + }, + { + "id": "4300", + "body": "WordPress.com 上的商務帳號 (WordPress.com Business) 可以架設各種電子商務平台了:「WordPress.com Business Users: eCommerce Has Arrived!」。\r\n\r\n\"\"\r\n\r\n由 WordPress.com 出手感覺就差很多,以前要自己找人兜半天,這樣就省下一大堆功夫了...", + "title": "WordPress.com 上的電子商務平台" + }, + { + "id": "4304", + "body": "在「Overkilling the 8-queens Problem」這邊有吃飽太閒^H^H^H^H強者用 x86-64 組語解八皇后問題,而目前的極限速度是 11.2µs...\r\n\r\n\"\"\r\n\r\n整篇在介紹用到的 x86-64 組語 XDDD", + "title": "八皇后問題的速度極限..." + }, + { + "id": "4306", + "body": "為了避免美國的監聽,歐盟與巴西決定自己拉海底光纜:「Brazil, Europe plan undersea cable to skirt U.S. spying」。\r\n\r\n目前計畫從葡萄牙的里斯本 (Lisbon) 拉到巴西的福塔雷薩 (Fortaleza),而且巴西總統 Dilma Rousseff 挑明了就是對美國的監控有意見:\r\n\r\n
We have to respect privacy, human rights and the sovereignty of nations. We don't want businesses to be spied upon,
\r\n\r\n能做到什麼程度還是個問題,但這對於解決網路過度中心化 (以美國為中心) 應該有幫助?", + "title": "巴西與歐盟決定自己拉海底光纜..." + }, + { + "id": "4308", + "body": "前天看到的「Only 90s Web Developers Remember This」文章裡面在懷舊 (?):\r\n\r\n然後在 Facebook 上看到 zonble 貼的:「DHTMLConf」,太讚了 XDDD\r\n\r\n讓人懷念的東西... XDDD", + "title": "90 年代的網站..." + }, + { + "id": "4310", + "body": "出自「Creating a Base Box - Vagrant Documentation」這頁:\r\n\r\n\"\"\r\n\r\n你知道下面的「VirtualBox Base Boxes」是可以按的嗎?是可以按的嗎?是可以按的嗎?", + "title": "Vagrant 的文件..." + }, + { + "id": "4312", + "body": "印象中要在 Amazon S3 上面存大量資料時需要注意 key 的命名,用 Google 找了找發現官方的「Request Rate and Performance Considerations」這篇。\r\n\r\n文章中有提到這是對有大量存取需求時才需要注意的事項:\r\n\r\n
The guidelines in this section apply if you are routinely processing 100 or more requests per second. If your typical workload involves only occasional bursts of 100 requests per second or more, you don't need to follow the guidelines in this section.
\r\n\r\n不過平常即使沒有需要大量存取,還是可以照著做,因為應該不會有負面影響。如果能照著上面的方式先做,之後也許會受益...\r\n\r\n由於 Amazon S3 是使用 key-prefix 當作 partition 的依據,所以 prefix 的值對於效能很重要。官方推薦的幾種方法都是對 key-prefix 下手:\r\n", + "title": "在 S3 上儲存大量資料時要注意的事情" + }, + { + "id": "4314", + "body": "依照「Cordova: Getting Started with iOS and Android Applications (Tech Tip #14)」這篇的方法,再加上一些以前練出來的經驗,把系統給弄起來了。\r\n\r\n首先是先到 Android 官網下載 Android SDK,目前版本是 adt-bundle-linux-x86_64-20131030,找個合適的地方解開後 (我是放到 $HOME/android 下),把 PATH 加進去:\r\n\r\n
export PATH=\"${HOME}/android/sdk/platform-tools:${HOME}/android/sdk/tools:${PATH}\"
\r\n\r\n接下來是透過 nvm 安裝 node.js,先安裝 nvm:\r\n\r\n
wget https://raw.github.com/creationix/nvm/master/install.sh\r\nsh install.sh
\r\n\r\n然後重新啟動 shell 讓 nvm 與 PATH 生效後,安裝 0.10.26 (目前的最新版),並且預設用這個版本:\r\n\r\n
nvm install 0.10.26\r\nnvm alias default 0.10.26
\r\n\r\n接下來一樣是重新啟動 shell,就可以裝 Cordova 了:\r\n\r\n
npm install cordova
\r\n\r\n後面就可以照抄原始範例:\r\n\r\n
cordova create hello org.samples.wildfly.cordova.hello HelloWorld\r\ncd hello\r\ncordova platform add android\r\nandroid create avd --name myCordova --target 1\r\ncordova emulate android
\r\n\r\n然後 AVD 是有名的慢,請耐心等候... XD\r\n\r\n跑出來長這樣:\r\n\r\n\"\"", + "title": "Ubuntu 下建立 Cordova 的 Android 環境..." + }, + { + "id": "4319", + "body": "Linux 上玩 Diablo III 常見的解法是使用 Wine 執行,但在這次更新後就掛了,狀況是在輸入完帳號密碼後就 crash:「Battle.net launcher update on Wine/Linux - Forums - Diablo III」。\r\n\r\n不過有人居然找出 workaround 了 (這 workaround 怎麼找出來的啊):\r\n\r\n
But, there's a workaround to have a launcher : disable dbghelp library (wine configuration, libraries, type dbghelp, add, -> disable).
\r\n\r\n據說是將 dbghelp 設定停用後就可以跑了。另外也有人提供直接執行的方法:(當然,路徑要改成自己安裝 Diablo III 的目錄)\r\n\r\n
/mnt/lvm/Playonlinux/DiabloIII/drive_c/Program\\ Files/Diablo\\ III/Diablo\\ III.exe -launch -uid diablo3_frfr
\r\n\r\n不過我為了找問題,把整個 Wine 以及 Diablo III 都砍掉了,所以是回到安裝新軟體的階段... 但發現安裝時也會遇到同樣的 crash 問題,而使用第一個方式關掉 dbghelp 後就可以安裝了,不知道可以前進到哪一步...\r\n\r\n過陣子 Wine 應該會放出新版,畢竟 Blizzard 家的遊戲可是重要項目...", + "title": "新版 Battle.net launcher 更新造成 Wine 不能跑..." + }, + { + "id": "4324", + "body": "在「a brief history of one line fixes」列出了許多經典的問題...\r\n\r\n裡面最有印象的還是 2008 年 Debian OpenSSL 問題,也因為這個問題影響太嚴重,後來預設會安裝 openssl-blacklist 這個套件,在連線時檢查是不是有問題的 key...\r\n\r\n然後 Android memset() 那個很精彩啊 XDDDDDDDDDDD", + "title": "歷史上的爆炸記錄?" + }, + { + "id": "4326", + "body": "Percona 這幾個月對 TokuDB 的評價一直都很不錯,再加上在 Percona Server 5.6.16-64.0 裡加入對 TokuDB 的支援 (目前還是掛在 ALPHA 階段),看起來是打算再納入這個產品線?:「Percona Server 5.6.16-64.0 with TokuDB engine now available」。\r\n\r\n與兩年前的 Percona XtraDB Cluster 情境有點像,看起來會是新的主打產品?\r\n\r\n先花了一些查,發現「How TokuDB Fractal TreeTM Indexes Work」這份投影片整理的還不錯,說明了簡化版 fractal tree 的結構,以及為什麼可以取代 B-treeB+tree。也說明了 fractal tree 最重要的精神是拿 CPU 計算能力與 memory bandwidth 換取資料結構的特性,善用磁碟在 sequence i/o 遠比 random i/o 快的事實。\r\n\r\n維基百科裡的「TokuDB」也寫了一些東西可以看,像是說明 fractal tree 是 cache-oblivious algorithm,這點讓 cache tuning 的複雜性降低。\r\n\r\n這樣應該順便玩看看 Docker 或是 Vagrant 才對?", + "title": "Percona 的 TokuDB" + }, + { + "id": "4328", + "body": "剛剛看到 Amazon CloudFront 支援 SNI,而且不像 Dedicated IP Custom SSL 需要每個月 USD$600 的費用:「New Features for Amazon CloudFront: Server Name Indication (SNI) and HTTP Redirection」。\r\n\r\n目前最大的問題只剩下 Windows XP + IE8 不支援 SNI,台灣還有 19.86% 的人使用 IE8 (不知道 Windows XP + IE8 實際佔多少):\r\n\r\n\"\"\r\n(出自 http://gs.statcounter.com/#browser_version-TW-monthly-201302-201402)\r\n\r\n但至少行動裝置上的主力平台都支援了,如果大多數用戶是行動裝置,這個方式可以兼顧 custom SSL domain 與花費...", + "title": "CloudFront 支援 SNI,不需額外每個月 USD$600 的費用..." + }, + { + "id": "4331", + "body": "AWSElastic Load Balancing 總算想起來這個欠了許久的功能,access log:「Access Logs for Elastic Load Balancers」。\r\n\r\n原文裡有提到用 Hive 分析的部份,挑出最前面的欄位名稱就可以看出提供什麼資訊:\r\n\r\n
CREATE EXTERNAL TABLE elb_raw_access_logs (\r\n     Timestamp STRING,\r\n     ELBName STRING,\r\n     RequestIP STRING,\r\n     RequestPort INT,\r\n     BackendIP STRING,\r\n     BackendPort INT,\r\n     RequestProcessingTime DOUBLE,\r\n     BackendProcessingTime DOUBLE,\r\n     ClientResponseTime DOUBLE,\r\n     ELBResponseCode STRING,\r\n     BackendResponseCode STRING,\r\n     ReceivedBytes BIGINT,\r\n     SentBytes BIGINT,\r\n     RequestVerb STRING,\r\n     URL STRING,\r\n     Protocol STRING\r\n)
\r\n\r\n裡面還有些資訊沒包含在上面,像是 availability zone。因為這個資訊是包含在檔名內:\r\n\r\n
In addition to the bucket name and the prefix that you specified when you configured and enabled access logs, the log file name will also include the IP address of the load balancer, your AWS account number, the load balancer's name and region, the date (year, month, and day), the timestamp of the end of the logging interval, and a random number (to handle multiple log files for the same time interval).
\r\n\r\n接下來應該要把現有的 ELB 都開起來 XD", + "title": "Elastic Load Balancing 總算實做 access log..." + }, + { + "id": "4336", + "body": "The Register 的「Even HTTPS can leak your PRIVATE browsing」這篇引用了「I Know Why You Went to the Clinic: Risks and Realization of HTTPS Traffic Analysis」這篇論文。\r\n\r\n這篇論文說明,當 ISP 有能力分析所有流量,即使你全部都使用 HTTPS 時,論文裡的方式可以對某些極為敏感的資訊達到 89% 的辨識率:\r\n\r\n
Our attack identifies individual pages in the same website with 89% accuracy, exposing personal details including medical conditions, financial and legal affairs and sexual orientation.
\r\n\r\n這是因為 HTTPS 設計上是保護密碼、session key 這類技術上的「機密資訊」。而這個特點只能增加對隱私的保護,無法 100% 保護。\r\n\r\n就算不看論文用了哪些資訊與方法,這個領域有很多可以分析的:很直覺就可以想到 ISP 可以看到 Destination IP 資訊,藉以「猜測」是哪個 domain,而 DNS query 資訊也是有幫助的。再來是 HTTP request 的 pattern (像是順序、大小) 再加上對網站結構的了解,也可以分析出不少東西。\r\n\r\n如果可以再分析主流瀏覽器、作業系統以及 NAT box 的實做,還可以透過 TCP 的封包再推敲的更細緻。\r\n\r\n整套系統利用統計模型架構好後,在 ISP 端大量分析,看起來就是 NSA 擅長的業務?", + "title": "HTTPS 頁面上的隱私問題" + }, + { + "id": "4338", + "body": "在 Hacker News Daily 上看到「DEC64: Decimal Floating Point」:\r\n\r\n\"\"\r\n\r\n公式是:\r\n\r\n
value = coefficient * 10exponent
\r\n\r\n是以 10 為底。\r\n\r\n0 與 NaN 是特別處理:\r\n\r\n
There are 255 possible representations of zero. They are all considered to be equal.
\r\n\r\n
There is a special value called nan that has a coefficient of 0 and an exponent of -128. The result of division by zero is nan. nan is also the result of operations that produce results that are too large to be represented. nan is equal to itself.
\r\n\r\n網域也註冊一段時間了,不知道為什麼被突然提起...:\r\n\r\n
   Domain Name: DEC64.COM\r\n   Registrar: 1 & 1 INTERNET AG\r\n   Whois Server: whois.schlund.info\r\n   Referral URL: http://1and1.com\r\n   Name Server: NS57.1AND1.COM\r\n   Name Server: NS58.1AND1.COM\r\n   Status: ok\r\n   Updated Date: 03-jun-2013\r\n   Creation Date: 02-jun-2009\r\n   Expiration Date: 02-jun-2014
", + "title": "DEC64 浮點數" + }, + { + "id": "4347", + "body": "由於從網路上下載軟體回自己電腦跑是種「引狼入室」的行為,如何用合理的方式驗證下載回來的軟體,會是對資安敏感的人的重要課題。\r\n\r\n然後就看到一篇純粹抱怨文,以 PuTTY 為例,要肯定確定抓到的軟體是沒被「加料」過的卻是困難重重:「Downloading Software Safely Is Nearly Impossible」。\r\n\r\nPuTTY 算是資訊安全類的軟體,但卻發現難以找到合理的方式確認 XDDD\r\n\r\n首先是要先判斷「哪個站台是正確的官方站台」時,卻發現 putty.org 這個網域不是原作者 Simon Tatham 擁有,而即使是公認的官方網站 www.chiark.greenend.org.uk 的 greenend.org.uk 這個網域,也不是原作者擁有。\r\n\r\n然後 www.chiark.greenend.org.uk 沒有提供 HTTPS,所以下載下來後還要想辦法確認沒被動手繳過。而作者的 RSA public key 放在 earth.li 網域上,同樣的這也不是作者擁有的網域,而且也遇到同樣問題:public key 的下載也不支援 HTTPS。\r\n\r\n然後去 MIT 上的 PGP key server 翻也沒翻到,然後文章作者就崩潰自暴自棄直接執行下去了 XDDD\r\n\r\nPuTTY 的這一串過程好像從以前就沒改善... XD", + "title": "如何安全下載軟體..." + }, + { + "id": "4349", + "body": "Intel 推出的字型 Clear Sans,版號 1.00 了 (噗),拿維基百科的文章測試 (出自「Transmission Control Protocol」這個條目):\r\n\r\n\"\"\r\n\r\n抓下來解開後可以看到字型是 Apache License,不過該填的欄位都沒填 XDDD\r\n\r\n每次換字型都是因為看膩了想換換口味... 不知道可以撐多久 :o", + "title": "Clear Sans" + }, + { + "id": "4351", + "body": "這邊講的「無障礙」與一般 accessibility 講的主題比較無關。而是希望在每台電腦上都能顯示出「字」。\r\n\r\n當瀏覽器裡發現無法顯示的字型時,可能會出現框框。而利用 Webfonts 技術,可以在瀏覽器裡讀取字型檔將這些框框「字」呈現出來:「Webfonts: Making Wikimedia projects readable for everyone」。\r\n\r\n仍然有不少技術問題要克服,像是東亞地區的字型比西方複雜,另外效能也是問題。但放話後總是會有進展 :p", + "title": "維基的無障礙閱讀計畫" + }, + { + "id": "4355", + "body": "在 2014/03/08 的 Hacker News Daily 上看到「Cunningham's Law」:\r\n\r\n
Cunningham's Law states \"the best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.\"
\r\n\r\n還蠻常見到的 XDDD", + "title": "Cunningham's Law" + }, + { + "id": "4357", + "body": "除了在「doc/install/installation.md」有手動安裝的方式外,在「GitLab CE Downloads」有提供 Ubuntu 12.04 LTS 64bits 的 deb 檔可以安裝。\r\n\r\n官方在「GitLab Omnibus project」提供的安裝方式是:\r\n\r\n
apt-get install openssh-server postfix\r\ndpkg -i ooxx.deb\r\ngitlab-ctl reconfigure
\r\n\r\n不過在 Docker 裡面會卡在設定 redis 的部份而無法成功,卡在:\r\n\r\n
Recipe: gitlab::redis\r\n  * user[gitlab-redis] action create (up to date)\r\n  * directory[/var/log/gitlab/redis] action create (up to date)\r\n  * directory[/var/opt/gitlab/redis] action create (up to date)\r\n  * template[/var/opt/gitlab/redis/redis.conf] action create (up to date)\r\n  * directory[/opt/gitlab/sv/redis] action create (up to date)\r\n  * directory[/opt/gitlab/sv/redis/log] action create (up to date)\r\n  * directory[/opt/gitlab/sv/redis/log/main] action create (up to date)\r\n  * template[/opt/gitlab/sv/redis/run] action create (up to date)\r\n  * template[/opt/gitlab/sv/redis/log/run] action create (up to date)\r\n  * file[/opt/gitlab/sv/redis/down] action delete (up to date)\r\n  * link[/opt/gitlab/init/redis] action create (up to date)\r\n  * link[/opt/gitlab/service/redis] action create (up to date)\r\n  * ruby_block[supervise_redis_sleep] action run
\r\n\r\n後來是用 Vagrant (跑 VirtualBox) 才測試成功。就可以看到 PostgreSQLRedis 整包都被放到 /opt 下了...\r\n\r\n提供給要玩 GitLab 的人參考看看...", + "title": "測試 GitLab 的方式..." + }, + { + "id": "4362", + "body": "Lyst 的「Image Background Removal」這篇在講圖片去背的方法。\r\n\r\nLyst 是把這個演算法用在上架自動分類的一環:圖片先去背,然後再用 classifier 綜合其他的 metadata 判斷要分到那一類。\r\n\r\n這邊去背的演算法很簡單:\r\n\r\n\"\"\r\n\r\n其實 Lyst 這篇是在說「要怎麼打組合拳」:利用現有最簡單的技術去堆積木,想辦法找出一套合理的解。而不是像學術上的那樣要求做到極致。所以也有像這樣不是處理的很好的:\r\n\r\n\"\"\r\n\r\n這種組合拳反倒還蠻適合在學校裡教?", + "title": "圖片的去背..." + }, + { + "id": "4364", + "body": "MAKE 的這篇「Raspberry Pirate Radio」的惡搞意味濃厚啊...\r\n\r\n\"\"\r\n\r\n現有的設備,加上一根銅線就可以做到了。\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "將 Raspberry Pi 變成 FM 廣播站" + }, + { + "id": "4366", + "body": "Vagrant 1.5 出了:「Vagrant 1.5 and Vagrant Cloud」。\r\n\r\n最大的亮點是前陣子就有寫「Feature Preview: Vagrant Share」的 Vagrant Share,可以讓其他人很方便的連到自己的 Vagrant 機器上。\r\n\r\nVagrant Cloud 則是產品面上的整合,算是社群功能?\r\n\r\n最近拿 Vagrant 與 Docker 測試的次數愈來愈頻繁了,之前拿 Amazon EC2,但開機速度太慢,而 DigitalOcean 開機速度雖然快很多,但不是很容易透過 cli 操作...\r\n\r\n而這兩套各有優缺點。Docker 速度快,但環境相容性沒有 Vagrant 好,另外 Vagrant 畢竟是包著 VirtualBox 這種全虛擬化環境,除了 Linux 以外也可以測其他的作業系統。\r\n\r\n反正都是熱門的軟體,之後看社群發展出什麼功能再看要怎麼用 :p", + "title": "Vagrant 1.5" + }, + { + "id": "4368", + "body": "Ptt 有年齡限制的看板總算是開放 Web 存取了,但有個確認畫面要點總是頗麻煩 XD\r\n\r\n前幾天寫了一個 Google Chrome 套件「Ptt Over18」可以自動幫你點確認按鈕:\r\n\r\n\"\"\r\n\r\n暫時沒想到要用什麼 icon & 抓什麼畫面,回台灣再說,在日本只想睡覺吃東西... XD", + "title": "Google Chrome 上自動驗證 Ptt 十八歲年齡的工具" + }, + { + "id": "4370", + "body": "官方這篇「Announcing Amazon CloudFront Usage Charts for Web Distributions - Track Trends in Requests & Data Transfer」公告說明 Amazon CloudFront 可以透過 Web Console 看到統計數據了:\r\n\r\n\"\"\r\n\r\n最近好像補了不少 log 與統計的功能,CloudFront 也趕上這波了 XD", + "title": "Amazon CloudFront 可以從 Web Console 上看到統計資料了" + }, + { + "id": "4372", + "body": "無奈:\r\n\r\n

鶯谷園が改築で4月上旬まで休業って事は、それまでは美味い焼肉をエサに女をおびき出せないじゃないか!

— いっちー (@kingsofmetal666) January 18, 2014
\r\n\r\n\r\n\"\"", + "title": "鶯谷園整修..." + }, + { + "id": "4374", + "body": "出自「PHP的strcmp函数引发的安全问题」。\r\n\r\n拿 PHP 5.5 來測,這兩個都沒什麼問題:\r\n\r\n
php > var_dump(strcmp('a', 'a'));\r\nint(0)\r\nphp > var_dump(strcmp('a', 'b'));\r\nint(-1)
\r\n\r\n接下來測這個:\r\n\r\n
php > var_dump(strcmp('a', array()));\r\nPHP Warning:  strcmp() expects parameter 2 to be string, array given in php shell code on line 1\r\nNULL
\r\n\r\n沃槽...\r\n\r\n這代表這個寫法是有問題的:\r\n\r\n
if (!strcmp($v, $v_input)) {\r\n    // If same...\r\n}
\r\n\r\n如果先不管 warning,還是要用 strcmp 的話,可能得寫成:\r\n\r\n
if (0 === strcmp($v, $v_input)) {\r\n    // If same...\r\n}
\r\n\r\n不過用原生的操作元應該是比較好的解法?\r\n\r\n
if ($v === $v_input) {\r\n    // If same...\r\n}
\r\n\r\n這真是太迷人了... -_-", + "title": "PHP 的 strcmp()..." + }, + { + "id": "4376", + "body": "在「ZooKeeper Resilience at Pinterest」這篇文章裡面,Pinterest 的人說明內部是怎麼使用 ZooKeeper,其中對我來說最重要的是這張圖:\r\n\r\n\"\"\r\n\r\n程式不直接接觸 ZooKeeper 取得資料,而是透過 daemon 寫到 local disk 的資料取得。這樣當 ZooKeeper 失敗時仍然可以保持一定的服務 (因為 local disk cache),而避免服務中斷。\r\n\r\n當然,這跟資料的性質有關,不是所有的資料型態都可以接受 cache。這種解法常常是在穩定性不是可以自己控制 (這個例子裡是 ZooKeeper),而且遇到問題時不希望整個服務就爆炸...\r\n\r\n但這個思路每次看過每次都會忘記,寫下來不知道會不會比較容易想起來 :o", + "title": "Pinterest 對 ZooKeeper 的用法" + }, + { + "id": "4390", + "body": "前幾天的大消息:「Save more with Google Drive」。\r\n\r\n\"\"\r\n\r\n本來是 USD$0.05/GB,這次 100GB 這邊降到 USD$0.02/GB,而 1TB 以上的方案變成是 USD$0.01/GB。\r\n\r\nUSD$0.01/GB 是 Amazon Glacier 等級的價錢,但不像 Amazon Glacier 是離線資料,取用時需要等三個小時...", + "title": "Google Drive 的降價..." + }, + { + "id": "4392", + "body": "Leslie Lamport - A.M. Turing Award Winner:\r\n\r\n
For fundamental contributions to the theory and practice of distributed and concurrent systems, notably the invention of concepts such as causality and logical clocks, safety and liveness, replicated state machines, and sequential consistency.
\r\n\r\n分散式系統領域的老大與 LaTeX 的發明人...", + "title": "Leslie Lamport 拿下 2013 年圖靈獎 (Turing Award)" + }, + { + "id": "4394", + "body": "Firefox 28 釋出:「Firefox Notes - Desktop」。其中第一條就是 Google 主力推的 VP9:\r\n\r\n
VP9 video decoding implemented
\r\n\r\n依然視為繞在專利問題上,VP9 主力的競爭對象是 HEVC (H.265),而 YouTube 的 4K2K 影片也是用 VP9 壓縮。\r\n\r\n這樣 VP9 的陣勢看起來大了一點?", + "title": "Firefox 28 與 VP9" + }, + { + "id": "4396", + "body": "Full Disclosure 是資安領域裡很有名的資訊平台,沒想到居然關閉了:「Administrivia: The End」。\r\n\r\n不過現在發表的平台也比以前多太多,再加上資訊傳遞的速度也快太多,影響已經沒那麼大了... 算是歷史的眼淚?", + "title": "Full Disclosure 關閉" + }, + { + "id": "4399", + "body": "Mozilla 在「jsDelivr – The advanced open source public CDN」這篇文章裡面推薦 jsDelivr 這個服務:\r\n\r\n
Similar to Google Hosted Libraries, jsDelivr is an open source CDN that allows developers to host their own projects and anyone to link to our hosted files in their websites.
\r\n\r\n用 GitHub 當作 origin server,前端目前利用 CloudFlareMaxCDN,配合 Cedexis 的 openmix 服務,綜合這兩家 CDN 提供服務。\r\n\r\n既有的 cdnjs.com 是由 CloudFlare 贊助的服務,那 jsDelivr 呢?\r\n\r\n看了老半天得到這些訊息:jsDelivr 是由 @jimaek 所發起的服務,而 @jimaek 受雇於 MaxCDN。再加上 Mozilla 上的文章也是 @jimaek 發表,而且只發表過這一篇 (參考 Articles by Dmitriy Akulov),這邊的目的也太明顯...\r\n\r\n應該可以每幾天就看一下下面的 comment,不知道什麼時候會引爆利益衝突的問題...", + "title": "Mozilla 推薦的 jsDelivr?" + }, + { + "id": "4401", + "body": "以前 Amazon SES 每個 domain 都要認證一次,也就是說,就算我認證了 gslin.org,如果我要從 gslin@my.gslin.org 寄信,會因為 my.gslin.orggslin.org 不同而被擋下來。\r\n\r\n在官方的 blog 上宣佈認得 subdomain 了:「Subdomain Support is Now Available!」。\r\n\r\n這樣就更省事了...", + "title": "Amazon SES 的認證延伸到 subdomain" + }, + { + "id": "4403", + "body": "AWS Elastic Load Balancing 支援 Connection Draining 功能了:「ELB Connection Draining - Remove Instances From Service With Care」。\r\n\r\n由於 Connection Draining 是自創名詞,所以 AWS 的人解釋了一大堆。其實對比較熟悉的人用「graceful shutdown」就應該能了解 Connection Draining 想要做什麼事情。\r\n\r\n\"\"\r\n\r\n技術上的細節是,當 instance 從 ELB 內被移除 (無論是暫時性的還是永久性的),新的 request 將不會被送到該 instance 裡,而既有的連線將不會斷掉,直到 client 完成或是超時 (timeout)。\r\n\r\n這個功能在一般商用的 load balancing solution 都會提供,而且是對於服務品質其實還蠻重要的功能。\r\n\r\n話說回來,這陣子 ELB 動了不少東西?不查資料可以直接想到的就包括了:\r\n\r\n\r\n再加上今天的 graceful shutdown。每次都改善一些東西,累積起來就是驚人的財產...", + "title": "AWS Elastic Load Balancing 服務支援 Connection Draining" + }, + { + "id": "4407", + "body": "在「Switching default blocking lists for Chinese users」這邊看到 Adblock Plus 的官方公告,新安裝的預設值將會從 ChinaList 改變成 Easylist China。\r\n\r\n依照官方的說法:\r\n\r\n
To make these improvements, we employed three people as part-time authors.
\r\n\r\n天下沒有白吃的午餐,加上這幾年 Adblock Plus 的「妥協」太多,接下來應該沒事去看一下 ChinaList 的討論,到底兩個 blocklist 的差異在哪裡。", + "title": "Adblock Plus 將會把預設的 ChinaList 改為 EasyList China" + }, + { + "id": "4409", + "body": "Twitter 拿掉 RSS 支援後原來「支援新版 Plurk API (OAuth Core 1.0a) 的 Twitter To Plurk Script」這篇提到的程式就不會動了,剛好現在在東京慢慢蹭,就花點時間改寫了。\r\n\r\n程式一樣在 Gistgslin/982195 上。\r\n\r\n由於不想要接 Twitter API,再加上自己的帳號是公開的,所以這邊就用 Web::Query 去爬 HTML 然後生出對應的 body 貼到 Plurk 上。\r\n\r\n不過還是有不完美的地方,像是目前讀取的順序是顛倒的,大多數的情況下應該還好,不過有關連性的 tweet 就會看起來怪怪的 :o", + "title": "Twitter 自動轉貼 Plurk 的程式" + }, + { + "id": "4412", + "body": "Oculus VR 前陣子最有名的新聞應該是 John Carmack (id Software) 成為 CTO (查了查,也半年多前的新聞了)。\r\n\r\n昨天則是宣佈加入 Facebook:「Oculus Joins Facebook」。\r\n\r\n究竟是發生什麼事情呢...", + "title": "Facebook 買 Oculus VR..." + }, + { + "id": "4414", + "body": "在「Adblock Plus 將會把預設的 ChinaList 改為 EasyList China」提到 Adblock Plus 將預設的 ChinaList 改為 Easylist China,過幾天後看到 ChinaList 決定停止維護:\r\n\r\n
在这里很遗憾地通知所有 ChinaList 项目的用户,从 2014/03/26 起,本项目不再维护,为了抗议 Adblock Plus 在没有 ChinaList 授权重定向我们的列表且多次抗议无效下做的决定。
\r\n\r\n其實就是 Adblock Plus 想賺錢,但被 ChinaList 擋住:\r\n\r\n
要想推白名单,列表肯定要抓在自己手中才行,反正我多次说过只要我还负责 ChinaList,就不会允许的。
", + "title": "ChinaList 停止維護" + }, + { + "id": "4416", + "body": "在「AWS Price Reduction #42 - EC2, S3, RDS, ElastiCache, and Elastic MapReduce」這邊看到 AWS 降價的消息,明顯是被 Google 壓著推出來 :p\r\n\r\n降價的範圍包括 EC2 instance、EC2 的 reserved instance、S3,以及對應的 RDSElastiCacheElastic MapReduce。\r\n\r\n前幾天買了兩台 us-west-2 c1.xlarge 的三年 RI,結果從 USD$2804 降到 USD$2524,現虧 USD$280 (XDDD),而每小時單價從 USD$0.124 降到 USD$0.112,也就 9.7% 左右。\r\n\r\n另外 S3 的部份則是直接從 USD$0.085/GB 一次殺到 USD$0.03/GB 了,隨著使用量的增加的 discount 差不多都消失了。\r\n\r\n等下再來研究好了,計畫永遠趕不上變化...", + "title": "AWS 大降價" + }, + { + "id": "4418", + "body": "在 whatismybrowser.com 上看到 local IP address 時愣了一下,查了查資料後發現是 WebRTC 的功能:「Local IP discovery with HTML5 WebRTC: Security and privacy risk?」。\r\n\r\n如果知道內網的 IP 後,再加上一堆問題設備,hmmm... 能做的事情好多啊 @_@\r\n\r\n在「Can I use WebRTC Peer-to-peer connections?」可以看到 Google ChromeFirefox 都支援了...\r\n\r\n看了看 chrome://flags 似乎沒解... 來想看看有沒有什麼其他反制的辦法 @_@\r\n\r\nFirefox 可以參考「Where can I disable WebRTC and PeerConnection?」這邊提供的方法試看看,不過我沒測過,不知道到底有沒有效...", + "title": "瀏覽器裡取得 Local IP 位置的方式" + }, + { + "id": "4423", + "body": "NTIA (National Telecommunications and Information Administration) 決定將 root domain 管理權責移交出來:「NTIA Announces Intent to Transition Key Internet Domain Name Functions」,關於移交的 Q&A 則可以在「IANA Functions and Related Root Zone Management Transition Questions and Answers」這篇讀到。\r\n\r\n目前是 NTIA 放出意願,請 ICANN 提出轉移計畫:\r\n\r\n
As the first step, NTIA is asking the Internet Corporation for Assigned Names and Numbers (ICANN) to convene global stakeholders to develop a proposal to transition the current role played by NTIA in the coordination of the Internet’s domain name system (DNS).
\r\n\r\n不知道要花多久時間,可能是用幾年的時間轉移。雖然是找 stakeholders,但看起來應該是會由 ICANN 掌握...", + "title": "NTIA 決定將 Root Domain 的管理權責轉移到 ICANN" + }, + { + "id": "4426", + "body": "PHP Coding Standards Fixer 是在不破壞相容性的情況下,將 PHP 的程式碼往 PSR-2 的方向修正。\r\n\r\n安裝的方式很簡單,直接抓下來:\r\n\r\n
wget http://cs.sensiolabs.org/get/php-cs-fixer.phar -O php-cs-fixer\r\nchmod a+x php-cs-fixer
\r\n\r\n看是要丟到 /usr/local/bin 下,還是丟到自己的目錄裡都可以。\r\n\r\n裝完後就玩:\r\n\r\n
php-cs-fixer fix foo.php
\r\n\r\n如果 PHP 程式碼有進版本控制系統,在執行後就可以用 diff 看看改了什麼。\r\n\r\n也可以對整個目錄修正:\r\n\r\n
php-cs-fixer fix foo/
\r\n\r\n預設是 PSR-2 以及一些作者自訂的規則,如果要強制只用 PSR-2 的話可以用 --level=psr2:\r\n\r\n
By default, all PSR-2 fixers and some additional ones are run.
\r\n\r\n有一些要注意的地方是,php-cs-fixer 因為是在不破壞相容性的前提下修正的,所以有些 method naming 的規則就無法修。不過比起手動修正 legacy code,可以省下不少時間...", + "title": "用 php-cs-fixer 自動將程式碼以 PSR-2 規則修正" + }, + { + "id": "4428", + "body": "會想要寫這篇是因為前陣子警察施暴影片YouTube 上一直被下架。\r\n\r\nTor 最常用到的是「隱藏使用者」的功能:使用者從 Internet 連到 Tor network 的進入節點 (entry node) 後,透過全世界的 Tor 節點加密傳輸,最後在出口節點 (exit node) 再連回 Internet 上的服務,藉此隱匿行蹤。\r\n\r\n\"\"\r\n\r\n另外一個比較少被提到的用途是「架站」,也就是 Hidden Service。\r\n\r\n在傳統的 Internet 架構上,知道 IP address 就容易發現機器所在地,要抄台或是在 ISP 端直接 ban IP address 也就相對容易。而 Hidden Service 就是想把服務藏到 Tor network 裡,讓外部不知道是哪一台伺服器,達成無法審查內容的目標。\r\n\r\n官方的文件是「Configuring Hidden Services for Tor」這份。而這邊以 Ubuntu 12.04 的環境為例。\r\n\r\n首先是先架設 web server,可以是 apache 或是 nginx,這不是本篇文章的重點 :p\r\n\r\n然後在 /etc/tor/torrc 裡面加上:\r\n\r\n
HiddenServiceDir /var/lib/tor/hidden_service/\r\nHiddenServicePort 80 127.0.0.1:80
\r\n\r\n表示 hidden service 的相關資料會放在 /var/lib/tor/hidden_service/ 下,並且提供 port 80 的服務 (轉到本機 127.0.0.1 的 port 80)。\r\n\r\n接下來重跑 tor:\r\n\r\n
service tor restart
\r\n\r\n然後看 hostname 是什麼:\r\n\r\n
cat /var/lib/tor/hidden_service/hostname
\r\n\r\n會看到一個 *.onion 格式的 hostname,像我架設的機器就會看到:\r\n\r\n
btyz5lgqirxipopo.onion
\r\n\r\n*.onion 的網址必須透過 Tor 的機制連,對一般人會比較麻煩。所以這邊要教的是透過 proxy 提供服務:\r\n\r\n\r\n\r\n這樣就變得有很多用途...", + "title": "架設 Tor 的 Hidden Service" + }, + { + "id": "4430", + "body": "因為 redports.org 一直連不上,寫信給網站管理者後才發現是 Trac 沒處理好 non-en 語系的部份,所以得先在 client workaround。(管理者說他有空的時候會去看看...)\r\n\r\n在 Google Chrome 上可以用 Spoofs Lang 更改瀏覽器送出的 Accept-Language 欄位,進而達到修改網站偵測的預設語系...\r\n\r\n\"\"\r\n\r\n除了 redports.org 以外,也順便把 php.net 系列的網站都改成英文語系了。", + "title": "用 Spoofs Lang 更改網站偵測的預設語系..." + }, + { + "id": "4432", + "body": "在「Gmail, Back to 2004」這篇看到 Gmail 在 2004 年剛 launch 的樣子:\r\n\r\n\"\"\r\n\r\n算一算真的也十年了 (大驚)。\r\n\r\n2004 年的四月一日以愚人節新聞發表,宣稱是 invite only,四月二日還是沒拿下來,然後陸陸續續有傳出「是真的」的消息...", + "title": "Gmail 10 歲" + }, + { + "id": "4434", + "body": "在「The MySQL 5.7.4 Milestone Release is available」這篇可以看到 MySQL 5.7.4 的消息。除了 InnoDB 的改善外,可以看到對 AES 加密的功能 (AES Encryption Modes)。\r\n\r\n不過...\r\n\r\n
Historically, and still used as defaults in 5.6 and 5.7, we are using a relatively small key size (128 bits, corresponding to “SECRET” according to NSA) and block mode (ECB, encrypting equal blocks with equal code blocks) to calculate the cipher.
\r\n\r\n\"\"\r\n\r\n居然是支援 ECB,這會不會驚爆我的眼球啊,我以為最少是 CTR...\r\n\r\n\"\"\r\n\r\nECB 代表相同內容的 block 就會被加密成相同的密文,這樣就有很多可以攻擊的方式了。而 CTR 至少可以抵抗這一點...\r\n\r\n另外一個賣點是「InnoDB Spatial Indexes in 5.7.4 LAB release」,目前只支援二維資料:\r\n\r\n
Currently, InnoDB spatial index supports only two dimension data, but we do have plan to extend to multi-dimension. In addition, we are doing more performance tuning to make it more efficient.
\r\n\r\n用 R-tree 實做的,畢竟是個開始...", + "title": "MySQL 5.7.4" + }, + { + "id": "4440", + "body": "Amazon CloudFront 今天的新聞:「Improved CloudFront Performance with EDNS-Client-Subnet Support」。\r\n\r\n目前 CDN 大多都還是靠 GeoDNS 技術達到分流技術,但另外一方面,Google 的 Public DNSOpenDNS 服務不一定在每個 ISP 都有設機房,這使得 CDN 服務無法靠 DNS server 的 IP address 正確導到離使用者 ISP 最近的 CDN (也就是原文指的 sub-optimal performance)。\r\n\r\nEDNS-Client-Subnet 是一個 draft,讓 DNS resolver 可以把 client 的網段資訊帶給 CDN 的 DNS server,進而改善定位。\r\n\r\n剛剛測試發現 Akamai 也支援了,在「OpenDNS: Why doesn't Akamai support the edns client subnet extension? This would allow OpenDNS and Google DNS to more effectively provide the geo location of the CDN and allow Akamai to send content to clients at higher speed.」這篇也有提到。\r\n\r\n以前會鼓勵使用自己家的 DNS resolver 的理由又要消失一個了 :p", + "title": "Amazon CloudFront 支援 EDNS-Client-Subnet" + }, + { + "id": "4442", + "body": "Amazon Elastic MapReduce 一直都只能跑舊的機器,總算把新機器加上去了:「New Instance Types for Amazon Elastic MapReduce」。\r\n\r\n接下來應該都會用 c3 系列來跑吧?", + "title": "Amazon EMR 總算支援更多種類的機器了..." + }, + { + "id": "4444", + "body": "PHP_CodeSniffer 是套檢查 PHP 程式碼是否符合規範的工具。\r\n\r\n\"\"\r\nWordPress 3.8.1 的 index.php 跑 PSR-2 測試。\r\n\r\n想要測試的人可以用 Vagrant 安裝測試,我用 Docker 弄了老半天弄不起來,就跑去用 Vagrant 測試了...\r\n\r\n(話說回來,Vagrant 與 Docker 真的是測試的神器,反正要弄一個 Ubuntu 平台上測試就是拿這兩個東西出來測...)\r\n\r\n由於系統內的 PHP_CodeSniffer 不一定夠新,舉例來說,Ubuntu 12.04 的 php-codesniffer 只有 1.1.0,而掃 PSR-1 的程式出現在 1.3.5,PSR-2 出現在 1.4.0。\r\n\r\n安裝 c9s 所維護的 phpbrew 通常是還蠻常見的選擇。裝完後再用 pear install PHP_CodeSniffer 裝進去就有 phpcs 可以用了。\r\n\r\nphpcs 預設是用 PEAR standard,可以指定 --standard=PSR2 強迫他使用 PSR-2 規則:\r\n\r\n
phpcs --standard=PSR2 foo.php
\r\n\r\n\"\"\r\n\r\n也可以直接強迫換成 PSR-2,然後再看設定有沒有改成功:\r\n\r\n
phpcs --config-set default_standard PSR2\r\nphpcs --config-show
\r\n\r\n除了可以檢查單一檔案外,也可以丟路徑進去整個檢查:\r\n\r\n
phpcs foo/
", + "title": "檢查程式碼是否符合 PSR-2 的工具:PHP_CodeSniffer (phpcs)" + }, + { + "id": "4452", + "body": "前幾天看到快速切換到上一個 Git branch 的方法:「Quick Switch Between Git Branches」。\r\n\r\n\"\"\r\n我把 co alias 成 checkout...\r\n\r\n用這個指令切到上一個 branch:\r\n\r\n
git checkout -
\r\n\r\n跟 cd - 的道理是一樣的。", + "title": "快速切換到上一個 Git branch" + }, + { + "id": "4459", + "body": "在 jQuery 的「Browser Support in jQuery 1.12 and Beyond」這篇提到新的計畫,其中 What's Changing? 裡提到:\r\n\r\n
There are no firm dates, but we plan on releasing jQuery core versions 1.12 and 2.2 this year. jQuery 1.13/2.3 will be released some time in 2015.
\r\n\r\n重點在於對 IE 的支援度。其中 1.12 會繼續支援 IE6+,而 1.13 則放棄 IE{6,7},只支援 IE8+:\r\n\r\n
jQuery 1.12: This will be the last release to support Internet Explorer 6 and 7. As of today, no feature requests or bug fixes will be landed for them. Only serious regressions for these browsers will be fixed in patch releases (e.g., 1.12.1). jQuery 1.13 will support IE8 as its minimum browser.
\r\n\r\n這件事情總算是發生了,也就是多出一個「支援 IE8+」的版本。這也就是兩年前我在「jQuery 2.0 將放棄 IE{6,7,8} 的事情...」抱怨過的事情,我無法想像在 John Resig 當政的年代會直接規劃出不支援 IE{6,7,8} 的產品。\r\n\r\n現在的 jQuery 有種 AWK 的感覺。\r\n\r\n剛好也是提到 jQuery,前陣子「The reason Angular JS will fail」這篇也是讓我笑得很開心,也許有機會再寫...", + "title": "jQuery 多出 1.12 與 1.13 的計畫" + }, + { + "id": "4461", + "body": "前幾天歐洲議會通過了網路中立條款:「European Parliament passes strong net neutrality law, along with major roaming reforms」,條文內容的 PDF 可以在這裡看到。\r\n\r\nPDF 的左側是 Text proposed by the Commission,右側是 Amendment,可以看到「網路中立」被清楚定義:\r\n\r\n
The principle of \"net neutrality\" means that traffic should be treated equally, without discrimination, restriction or interference, independent of the sender, receiver, type, content, device, service or application
\r\n\r\n然後下面圍繞著網路中立的主題規範了許多電信服務提供商的行為,並且保障公民的上網權利。另外還要求各國的電信主管機關制定檢舉程序,讓公民可以很容易檢舉。", + "title": "歐洲議會通過網路中立條款" + }, + { + "id": "4464", + "body": "Update:感謝正妹 wens 幫忙,現在已經先上 workaround 了,狀況暫時解除...\r\n\r\n最近發現 168.95.1.1 有時會找不到 ptt.cc 這個 domain (參考 gist:9995821),原因是 ptt.cc 在 whois 上登記的是:\r\n\r\n
Name Server: NS0.PTT.CC\r\nName Server: NS1.PTT.CC\r\nName Server: NSOUT1.PTT.CC
\r\n\r\n用 dig 對 cc 的 NS server 查詢也可以確認:\r\n\r\n
;; AUTHORITY SECTION:\r\nptt.cc.                 172800  IN      NS      ns0.ptt.cc.\r\nptt.cc.                 172800  IN      NS      ns1.ptt.cc.\r\nptt.cc.                 172800  IN      NS      nsout1.ptt.cc.\r\n\r\n;; ADDITIONAL SECTION:\r\nns1.ptt.cc.             172800  IN      A       140.112.172.10\r\nns0.ptt.cc.             172800  IN      A       140.112.172.16\r\nnsout1.ptt.cc.          172800  IN      A       112.121.80.227
\r\n\r\n但 ptt.cc 的三台 NS server 上都找不到 nsout1.ptt.cc:\r\n\r\n
; <<>> DiG 9.8.1-P1 <<>> nsout1.ptt.cc @140.112.172.10\r\n\r\n;; AUTHORITY SECTION:\r\nptt.cc.                 300     IN      SOA     ns0.ptt.cc. contact.ptt.cc. 2013102501 3600 900 2419200 3600
\r\n\r\n
; <<>> DiG 9.8.1-P1 <<>> nsout1.ptt.cc @140.112.172.16\r\n\r\n;; AUTHORITY SECTION:\r\nptt.cc.                 300     IN      SOA     ns0.ptt.cc. contact.ptt.cc. 2013102501 3600 900 2419200 3600
\r\n\r\n
; <<>> DiG 9.8.1-P1 <<>> nsout1.ptt.cc @112.121.80.227\r\n\r\n;; AUTHORITY SECTION:\r\nptt.cc.                 300     IN      SOA     ns0.ptt.cc. contact.ptt.cc. 2013102501 3600 900 2419200 3600
\r\n\r\n於是就錯亂了...\r\n\r\n可以先解決的方法是先把 nsout1.ptt.cc 加上去,然後再規劃要怎麼修改兩邊的 record (Ptt 這側的 A/NS record,與 cc 的 A/NS record)。\r\n\r\n補充一下,ptt2.cc 也有同樣問題。", + "title": "ptt.cc 偶而會解不出 IP 的問題" + }, + { + "id": "4469", + "body": "CVE-2014-0160,又稱 Heartbleed Bug,是 OpenSSL 在 TLS 與 DTLS 協定裡的 Heartbeat Extension (RFC 6520) 的錯誤實作。\r\n\r\nOpenSSL 官方的 security advisory 在這:「OpenSSL Security Advisory [07 Apr 2014]」,影響的範圍是:\r\n\r\n
Only 1.0.1 and 1.0.2-beta releases of OpenSSL are affected including 1.0.1f and 1.0.2-beta1.
\r\n\r\n實務上爆炸的程度則是:\r\n\r\n
A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64k of memory to a connected client or server.
\r\n\r\n比較有描述性的說明可以參考「The Heartbleed Bug」這個站的敘述:\r\n\r\n
We have tested some of our own services from attacker's perspective. We attacked ourselves from outside, without leaving a trace. Without using any privileged information or credentials we were able steal from ourselves the secret keys used for our X.509 certificates, user names and passwords, instant messages, emails and business critical documents and communication.\r\n
\r\n\r\n由於 untraceable,這代表我們必須假設所有受影響機器上的 SSL private key 都已經被洩漏出去了,所有的 key 都必須 revoke 並且重新產生 (& 重新簽)。這兩天讓所有 SA 爆炸的超大新聞...", + "title": "OpenSSL 安全漏洞 (CVE-2014-0160)" + }, + { + "id": "4471", + "body": "在「The 10 HTML Codes You Need to Know for Writing on the Web」提到英文裡的標點符號在 HTML 裡對應的標法:\r\n\r\n\"\"\r\n\r\n意外發現最後面的 &prime; (′) 與 &Prime; (″) 居然不一樣...", + "title": "英文裡各種標點符號..." + }, + { + "id": "4473", + "body": "2014/01/12 的演講,在 g0v.asia 的頁面上有投影片可以看:「g0v @ MaD 2014」,另外也有錄影:\r\n\r\n", + "title": "g0v.tw 高村長在香港 MaD 2014 上的演講:Open Source, Open Data, and Open Government" + }, + { + "id": "4477", + "body": "Linode 宣佈支援 hourly billing:「Introducing Hourly Billing」。看起來是被 DigitalOcean 逼的?\r\n\r\n目前最小台的 1GB 是 USD$0.03/hour,以無閏年的二月來算是 USD$20.16,所以最高收到 USD$20 是沒有瑕疵的。\r\n\r\n而有 hourly billing 之後,就更容易拿來測試東西了,而使用 Linode 的人也有機會在上面建立自己的 auto scaling...", + "title": "Linode 的 Hourly Billing" + }, + { + "id": "4479", + "body": "在「Docker 0.10: quality and ops tooling」這篇官方公佈了 Docker 0.10。\r\n\r\n可以看到有不少 bugfix 與 feature 是對檔案系統的改善,讓程式的相容性提高。\r\n\r\n另外也宣示了 1.0 版的目標是要整合管理工具。純粹不會當掉並不足夠,還是要提供並且整合系統管理工具才算是好用的軟體。", + "title": "Docker 0.10" + }, + { + "id": "4482", + "body": "在「ONS2014 Keynote: Amin Vahdat, Google」這邊看到的: \r\n\r\n\"\"\r\n\r\n相當密集的 CDN 節點數量,連關島都有?不過東俄羅斯的部份好像不多...", + "title": "Google Global CDN" + }, + { + "id": "4484", + "body": "依據 Bloomberg 的報導,NSA 兩年前就知道 OpenSSLHeartbleed bug 了:「NSA Said to Exploit Heartbleed Bug for Intelligence for Years」。\r\n\r\n翻了 GitHub 上的 mirror 記錄,可以發現是在 2012/01/01 commit 進去的:「commit 4817504d069b4c5082161b02a22116ad75f822b1」,幾乎是一開始就知道了?\r\n\r\n苦啊...\r\n", + "title": "NSA 從兩年前就知道 OpenSSL 的 Heartbleed bug..." + }, + { + "id": "4486", + "body": "Heartbleed 是惡意的 client 可以利用 OpenSSLHeartbeat Extension 漏洞取得 server 的機敏資訊。\r\n\r\n而在「Testing for \"reverse\" Heartbleed」這篇說明 (並且 PoC) 這組漏洞也適用於反向的操作,也就是惡意的 server 可以取得 client 的資訊。\r\n\r\nexploit 相較起來比正向的難一些,但還是可行並且成功做出來了。文章裡有描述怎麼實做的...\r\n\r\n換句話說,反正手上的 OpenSSL 都趕快升級...", + "title": "OpenSSL 的 Heartbleed 漏洞不限於 Server,也包含 Client..." + }, + { + "id": "4488", + "body": "前幾天有人成功利用 XML External Entity 安全問題,取得 Google 伺服器內的資料:「How we got read access on Google’s production servers」。\r\n\r\n\"\"\r\n\r\n可以看到上圖是 /etc/passwd 的內容...\r\n\r\nXML Parser 預設有太多功能是根本不會想要用到的,沒有注意到而忘記關掉就會中獎...", + "title": "用 XML External Entity 取得 Google 伺服器內的資料" + }, + { + "id": "4492", + "body": "在「Get Work Done: 5 Genres of Music for Unstoppable Productivity」這篇文章裡推薦了五種工作用音樂:\r\n\r\n而文章的後半段都在推薦入門款的耳機與 DAC... XDDD", + "title": "工作用音樂" + }, + { + "id": "4496", + "body": "在 ijliao 長輩的 blog 上看到「weechat」這篇才想起來 Freenode 有提供 SSL 連線。\r\n\r\n可以在「About freenode: IRC Servers」這頁看到 SSL port 的連線資訊:\r\n\r\n
All freenode servers listen on ports 6665, 6666, 6667, 6697 (SSL only), 7000 (SSL only), 7070 (SSL only), 8000, 8001 and 8002.
\r\n\r\n其中 port 6698/7000/7070 是 SSL only,所以就拿這幾個用。由於我是在 Ubuntu 上跑 ppa 版的 WeeChat,所以基本上只加上這三行就可以了:\r\n\r\n
/set irc.server.freenode.address chat.freenode.net/6697\r\n/set irc.server.freenode.ssl on\r\n/set irc.server.freenode.ssl_dhkey_size 1024
\r\n\r\n連上後應該會看到類似的訊息:\r\n\r\n
gnutls: connected using 1024-bit Diffie-Hellman shared secret exchange\r\ngnutls: receiving 2 certificates\r\n - certificate[1] info:\r\n   - subject `OU=Domain Control Validated,OU=Gandi Standard Wildcard SSL,CN=*.freenode.net', issuer `C=FR,O=GANDI SAS,CN=Gandi Standard SSL CA', RSA key 2048 bits, signed using RSA-SHA1, activated `2014-01-13 00:00:00 UTC', expires `2015-01-14 23:59:59 UTC', SHA-1 fingerprint `2df8bb8922e69f781ef5abcd234fffde0490be21'\r\n - certificate[2] info:\r\n   - subject `C=FR,O=GANDI SAS,CN=Gandi Standard SSL CA', issuer `C=US,ST=UT,L=Salt Lake City,O=The USERTRUST Network,OU=http://www.usertrust.com,CN=UTN-USERFirst-Hardware', RSA key 2048 bits, signed using RSA-SHA1, activated `2008-10-23 00:00:00 UTC', expires `2020-05-30 10:48:38 UTC', SHA-1 fingerprint `a9f79883a075ce82d20d274d1368e876140d33b3'\r\ngnutls: peer's certificate is trusted
\r\n\r\n然後在 status line 裡,server[freenode] 的部份變成綠色的。", + "title": "使用 SSL 連上 Freenode IRC server" + }, + { + "id": "4503", + "body": "code name 為 Trusty Tahr 的 Ubuntu 14.04 在最終要釋出的準備了:「Final Freeze for Ubuntu 14.04 LTS (trusty) at 2100UTC today」。\r\n\r\nUbuntu 的 LTS 規劃也找到一個大家都可以接受的平衡點了:整個社群與商業團體都會把 LTS 版本列為重點支援,固定兩年 release 一次的時間表讓這些人 (社群與商業團體) 也都很清楚知道什麼時間點要更新。\r\n\r\n而 LTS 也不是完全凍結而只更新安全部份:(下面出自「List of Ubuntu releases」)\r\n\r\n
Like other LTS releases, 12.04 will include point releases that bundle updates to shorten downloads for users installing the release later in its lifecycle. The point releases and dates are: 12.04.1 (23 August 2012), 12.04.2 (14 February 2013), 12.04.3 (scheduled for release on 22 August 2013, but actually released on 23 August 2013) and 12.04.4 (6 February 2014).
\r\n\r\n對於 Point release 沒有更新的軟體,用 PPA 的方式讓社群去維護 LTS 平台上的支援。", + "title": "Ubuntu 14.04 LTS Trusty 最後階段開跑" + }, + { + "id": "4505", + "body": "在「Ubuntu 14.04 LTS: the cloud platform of choice」這篇:\r\n\r\n
Canonical today announces Ubuntu 14.04 LTS will be released on 17th April 2014, bringing a new level of reliability, performance and interoperability to cloud and scale out environments with support and maintenance for five years.
\r\n\r\n恭喜了,第三個 LTS 版本!", + "title": "Canonical 宣佈 2014 年四月 17 日發布 Ubuntu 14.04 LTS" + }, + { + "id": "4507", + "body": "在「Split a commit in two with Git」這邊看到有趣的方法:\r\n\r\n
git rebase -i <oldsha1>\r\n# mark the expected commit as `edit` (replace pick in front of the line), save a close\r\ngit reset HEAD^\r\ngit add ...\r\ngit commit -m \"First part\"\r\ngit add ...\r\ngit commit -m \"Second part\"\r\ngit rebase --continue
\r\n\r\nsquash 是把多個 commit 合起來,這個方法是拆開。還沒有 push 出去,需要整理時應該會用到...", + "title": "把 Git commit 切開" + }, + { + "id": "4509", + "body": "公司用 Trac 當作 issue tracking system,預設的 <pre> 是不會斷行的,但好像也不是所有人都能夠接受換行,所以在自己的 browser 裡面處理掉。\r\n\r\n在裝了 Stylish 後,針對內部網域建立以下 CSS 效果:\r\n\r\n
#content pre {\r\n  word-wrap: break-word;\r\n}
\r\n\r\n用 word-wrap 強制斷行,在大多數的情況下會看得比較清楚,也不會影響到 copy/paste 時的行為。", + "title": "Trac 裡 <pre> 元素的換行..." + }, + { + "id": "4512", + "body": "被搞混了幾十秒鐘後才發現列錯了:\r\n\r\n\"\"\r\n\r\n出自 Amazon EC2 Pricing 這頁。", + "title": "難得看到 AWS 標錯..." + }, + { + "id": "4514", + "body": "愚人節不只是四月一日要擔心被騙 (還要記得算時區),更要擔心四月二日沒有撤掉...\r\n\r\n\"\"\r\n出自「映画『るろうに剣心』 - 剣心Ver.くまモンに続き、なんと志々雄Ver.くまモンが登場!これは本当だモン!劇場前売り特典決定!...\r\n\r\n要出特典了是怎樣啊啊啊~\r\n\r\n出自四月一日的 Twitter:\r\n\r\n

また、映画館ではポスターの張替え作業が急ピッチで行われております。(一部劇場を除く)#るろうに剣心 pic.twitter.com/1zWFPv06aP

— 映画『るろうに剣心』公式アカウント (@ruroken_movie) March 31, 2014
\r\n", + "title": "愚人節要擔心的事情..." + }, + { + "id": "4517", + "body": "在「WebM support on 4chan」這篇公告裡 4chan 宣佈支援 WebM 格式。\r\n\r\n由於目標是提供 GIF 的替代方案,所以目前開放的 WebM 內容有限制:\r\n\r\n
we only accept WebM files with one video stream and no audio streams, that are shorter than 120 seconds long, no larger than 2048x2048 pixels, and less than 3 MB in size.
\r\n\r\n讓我另外注意到的是:\r\n\r\n
however 86% of 4chan’s visits come from browsers that include full or partial support for WebM
\r\n\r\n依照「Can I use the WebM/VP8 video format」,這代表大多數 4chan 的使用者都是用 FirefoxChrome?", + "title": "4chan 支援 WebM..." + }, + { + "id": "4519", + "body": "意外在 Facebook 上看到「如何阻擋網站被 7headlines 等類似的網站用 iframe 嵌入?」這篇,才發現在 WordPress 裡的 Frame Buster 不會動了...\r\n\r\n不知道 Frame Buster 是升級到 WordPress 3.9 後才不會動,還是不會動很久了 (剛好是在今天升級到 WordPress 3.9),只好去找替代品...\r\n\r\n測了一下確認「WP No Frame」是會動的,不過看了 HTTP response header,好像是純 javascript 的方案,沒有包括 X-Frame-Options,有點可惜,但先這樣放著跑吧...", + "title": "避免 WordPress 被嵌入的 Plugin..." + }, + { + "id": "4521", + "body": "Linode 宣佈了規格提昇 (記憶體與流量) 以及 SSD 方案:「The New Linode Cloud: SSDs, Double RAM & much more」。\r\n\r\n\"\"\r\n\r\n那個 Linode 2G 的方案流量不是 2TB 而是 3TB,明顯是針對 DigitalOcean 的同等級方案而設計的...\r\n\r\n不過既有的客戶並不是馬上就有得用,要再等一陣子:\r\n\r\n\"\"\r\n\r\nCPU 與網路頻寬的提昇也是本次有提到的項目。CPU 將會是 Ivy Bridge E5-2680.v2,而每台 Linode host server 變成用 40Gbps 接到骨幹了。\r\n\r\n這幾波動作累積下來,似乎趕上 DigitalOcean 不少?", + "title": "Linode 提昇規格,並提供 SSD 方案..." + }, + { + "id": "4523", + "body": "前幾天 AWS 公佈了「Evaluate Security Products With no Software Charges by Using AWS Marketplace」,在 5/15 前有六個資安產品可以試用 120 小時。\r\n\r\n有 WAF、Firewall,也有 UTM,另外還有 data encryption 的方案。找機會來測試看看好了,不知道是擋在哪一層...", + "title": "AWS 上資安產品試用..." + }, + { + "id": "4530", + "body": "在「One week of OpenSSL cleanup」這篇提到了 OpenBSD 的 committer 最近花了不少時間在清理 OpenSSL (OpenBSD 內的 OpenSSL)。\r\n\r\n
All combined, there've been over 250 commits cleaning up OpenSSL. In one week.
\r\n\r\n清理的過程主要是針對 OpenBSD 所支援的平台,所以其他平台的支援都被拔乾淨了。即使如此,清過後的版本重新 porting 到各 Unux-like 平台應該是還蠻有希望的。\r\n\r\n在 BSD Commit Log Search 這邊則可以搜尋到 OpenSSL 被清的情況:「http://freshbsd.org/search?project=openbsd&q=libssl」。\r\n\r\n花些時間翻一翻,會可以看到 OpenSSL 很多習慣並不好 (尤其是在資安領域)。\r\n\r\n像是 OpenSSL 預設居然沒有把所有的 code 都上 -Wall,這點讓人有點... 呃... 要怎麼說呢...:「58c7f6cb678b7e31b80d290b5823b16d70760801」。\r\n\r\n然後看到大量的 potential double free fix,呃...\r\n\r\n繼續看下去吧,看起來 OpenBSD 這一波 cleanup 應該會再爆出一些安全問題 (多冒出幾個 CVE 出來)。", + "title": "OpenBSD 的 OpenSSL 清理工作" + }, + { + "id": "4533", + "body": "「Buggy Security Guidance from Apple」這篇再次說明了 C 語言因為 undefined behavior 而讓 coding 需要注意的事情變多...\r\n\r\n這段 code:\r\n\r\n
size_t bytes = n * m;\r\nif (n > 0 && m > 0 && SIZE_MAX/n >= m) {\r\n    ... /* allocate \"bytes\" space */\r\n}
\r\n\r\n問題在於 C 語言裡對 overflow 並沒有定義行為 (undefined behavior),所以 size_t bytes = n * m; 這段 code 並不保證當 overflow 後 bytes 的值會是多少,於是就很容易造成各種意外。\r\n\r\n原文有提到更多資訊,以及提出的解法,這邊就不提了...", + "title": "檢查大小時要注意的問題" + }, + { + "id": "4535", + "body": "Ubuntu 的正式公告:「Ubuntu 14.04 LTS (Trusty Tahr) released」。\r\n\r\n新裝的機器當然沒有問題,而 13.10 要升級到 14.04 已經提供升級指引了:「Upgrade from Ubuntu 13.10 to 14.04 LTS」。\r\n\r\n不過 12.04 LTS 要升級到 14.04 LTS 的人要等到七月:\r\n\r\n
Users of 12.04 LTS will be offered the automatic upgrade when 14.04.1 LTS is released, which is scheduled for July 24th. For further information about upgrading
\r\n\r\n來重灌好了 (把 Windows 的習慣拿過來用...)。", + "title": "Ubuntu 14.04 LTS 出版" + }, + { + "id": "4537", + "body": "Python 2.7 將支援到 2020 年:「Extend Python 2.7 life till 2020.」。\r\n\r\n
The End Of Life date (EOL, sunset date) for Python 2.7 has been moved five years into the future, to 2020. This decision was made to clarify the status of Python 2.7 and relieve worries for those users who cannot yet migrate to Python 3. See also PEP 466.\r\n\r\nThis declaration does not guarantee that bugfix releases will be made on a regular basis, but it should enable volunteers who want to contribute bugfixes for Python 2.7 and it should satisfy vendors who still have to support Python 2 for years to come.
\r\n\r\n有種淡淡的哀傷...", + "title": "Python 2.7 再活五年..." + }, + { + "id": "4541", + "body": "ISCBIND 的主導權轉移到社群上,並且改名為 bundy:「ISC releases BIND 10 1.2, renames it, and turns it over to community」。\r\n\r\n開發也將轉移到 GitHub 上,不過看起來 bundy 的名字已經被用掉了,不知道會用哪個 organization name...", + "title": "ISC 將 BIND 之後的開發主導權轉移給社群" + }, + { + "id": "4551", + "body": "符合 blog 副標題的一篇文章。\r\n\r\n之前是拿 BBS 看板來存動畫的記錄,不過自從跑在 FreeBSD 32bits 上的 BBS code 一直沒辦法轉移到 Ubuntu 64bits,就放棄用 BBS 看板管動畫記錄了...\r\n\r\n現在是拿 Git 來存動畫記錄,後來發現內建的 git log 搜尋起來比 BBS 方便太多,就回不去了...\r\n\r\n以「魔法戰爭」來說:\r\n\r\n
$ git log -S '魔法戰爭' --pretty=%h | xargs -n1 git show\r\ncommit 9a6af4ec77561777b854a7ea44da29e197a9dcc2\r\nAuthor: Gea-Suan Lin <gslin@gslin.org>\r\nDate:   Mon Apr 7 00:55:49 2014 +0800\r\n\r\n    Update.\r\n\r\ndiff --git a/Anime.txt b/Anime.txt\r\nindex 080f94a..cd21e14 100644\r\n--- a/Anime.txt\r\n+++ b/Anime.txt\r\n@@ -42,4 +42,3 @@ Z/X IGNITION                            e01\r\n 銀之匙 Silver Spoon 第二季              e04\r\n 鬼燈的冷徹                              e05\r\n 魔女的使命                              e04\r\n-魔法戰爭                                e11\r\ncommit 856a27ab4071fb19ca58de3725cdedf53815894b\r\nAuthor: Gea-Suan Lin <darkkiller@gmail.com>\r\nDate:   Mon Feb 10 04:46:57 2014 +0800\r\n\r\n    Update.\r\n\r\ndiff --git a/Anime.txt b/Anime.txt\r\nindex ddb11ea..e5995eb 100644\r\n--- a/Anime.txt\r\n+++ b/Anime.txt\r\n@@ -22,3 +22,4 @@ WIZARD BARRISTERS~弁魔士賽希爾         e01\r\n 偽戀                                    e02\r\n 天才麻將少女 全國篇                     e05\r\n 鬼燈的冷徹                              e05\r\n+魔法戰爭                                e04
\r\n\r\n-S 只會列出「出現」與「消失」的時候,而且 -S 後面接的是 string 而非 regex。\r\n\r\n如果要找所有與「魔法戰爭」相關的變更,則改用 git log -G,要注意的是後面接的是 regex:\r\n\r\n
 $ git log -G '魔法戰爭' --pretty=%h | xargs -n1 git show
\r\n\r\nGit 超好用的... XD", + "title": "用 git log 的 -S 與 -G 找變更記錄" + }, + { + "id": "4559", + "body": "查 PHP 上 CRC32 的資料時,查到讓人噴飯的 comment:\r\n\r\n
For those who are wondering, there appears to be no fundamental difference between hash_file('md5')/hash_file('sha1') and md5_file()/sha1_file(). They produce identical output and have comparable performance.\r\n\r\nThere is, however, a difference between hash_file('crc32') and something silly like crc32(file_get_contents()).\r\n\r\ncrc32(file_get_contents())'s results are most similar to those of hash_file('crc32b'), just with the octets reversed:\r\n\r\n<?php\r\n$fname = \"something.png\";\r\n\r\n$hash = hash_file( 'crc32', $fname );\r\necho \"crc32  = $hash\\n\";\r\n\r\n$hash = hash_file( 'crc32b', $fname );\r\necho \"crc32b = $hash\\n\";\r\n\r\n$hash = sprintf(\"%x\",crc32(file_get_contents($fname)));\r\necho \"manual = $hash\\n\";\r\n?>\r\n\r\ncrc32  = f41d7f4e\r\ncrc32b = 7dafbba4\r\nmanual = a4bbaf7d
\r\n\r\n不只是 hash_file() 抓出來不一樣,連 algorithm 都來亂...", + "title": "PHP 的 crc32、crc32b 以及 hash_file" + }, + { + "id": "4565", + "body": "把圖片上的文字辨識直接做成 Google Chrome 的延伸套件,預設就辨識好後讓你可以直接選取:「Project Naptha」。\r\n\r\n這是官方提供的範例:\r\n\r\n\"\"\r\n\r\n一張含有文字的圖片可以直接 OCR 出來變成文字選擇。\r\n\r\n官方網站上有說,這是 client-side javascript:\r\n\r\n
One of the more impressive things about this project is the fact that it's almost entirely written in client side javascript. That means that it's pretty much totally functional without access to a remote server.
\r\n\r\n不過預設會傳回去,但可以關掉:\r\n\r\n
By default, when you begin selecting text, it sends a secure HTTPS request which lacks any kind of identifiable information to the Project Naptha cached remote OCR and Translation service. This allows you to recognize text from an image with much more accuracy than otherwise possible. However, this can be disabled simply by checking the \"Disable Lookup\" item under the Options menu.
\r\n\r\n也就是這個選項:\r\n\r\n\"\"\r\n\r\n這功能好讚...", + "title": "圖片上的文字辨識:Project Naptha" + }, + { + "id": "4567", + "body": "當 ARIN 只剩下最後一個 /8 的 IPv4 位置時,將會啟動第四階段的發放機制,而昨天進入這個機制了:「ARIN Enters Phase Four of the IPv4 Countdown Plan」。\r\n\r\n\"\"\r\n出自「ARIN IPv4 Countdown Plan」這頁。\r\n\r\n目前的進度是:\r\n\r\n不過 IPv6 的進展還是苦哈哈啊...", + "title": "ARIN 進入 IPv4 Countdown Plan 的第四階段" + }, + { + "id": "4570", + "body": "Google 主推的 ChaCha20-Poly1305Android 上的 Chrome 可以看出顯著的效能差異:「Speeding up and strengthening HTTPS connections for Chrome on Android」。\r\n\r\n在加密速度上與 AES-GCM 的差異:\r\n\r\n\"\"\r\n\r\nAES-GCM 畢竟是標靶,被打爆本來就是預期中的事情,在 Google 大力推動下,應該是還蠻有機會成為主流...\r\n\r\n不過隔壁棚好像還是沒什麼進展,不知道要等到何時:「Bug 917571 - Support ChaCha20+Poly1305 cipher suites」。", + "title": "ChaCha20-Poly1305 在 Android 上帶來的效能" + }, + { + "id": "4572", + "body": "兩則新聞,第一則是 Vic Gundotra (Google+ 的頭) 離開 Google:「Vic Gundotra, the head of Google+, leaves Google」。\r\n\r\n第二則則是本來集中在 Google+ 的團隊將會放到其他團隊:「Report: Google to end forced G+ integration, drastically cut division resources」。\r\n\r\nTwitter 上馬上就有人想到 Google Reader 這個犧牲品... (而且大家都對 Feedly 做的很爛但沒什麼可用的替代品感到無奈)\r\n\r\n

@newsycombinator: A totally simple way Google could have avoided f***ing up Google+ http://t.co/Q78HgwOwCj” 糙 還我 Google Reader

— Ash Wu (@hSATAC) April 25, 2014
\r\n\r\n\r\n嗯哼...", + "title": "Google 以 Google+ 為中心的思想" + }, + { + "id": "4574", + "body": "Go 的 self-boot 計畫,也就是用 Go compiler 編 Go compiler:「Russ Cox – porting the Go compiler from C to Go」。\r\n\r\n其中提到:\r\n\r\n
The goal is to convert *their* C code (not all C code). They want generated code to be human-readable and maintainable. They want automatic conversion to handle 99+% of code.
\r\n\r\n第一波想要用機器轉換過去,而且要轉出可維護的程式碼。可以馬上想到的事情是,如果這件事情成功,代表現有軟體的 C code 也有機會轉移?\r\n\r\n接下來了幾個版本會開始發展整套機制,有得瞧了 :p", + "title": "Go 的 self-boot 計畫" + }, + { + "id": "4576", + "body": "在一月時,Facebook 官方的 Engineering Blog 上提到 Facebook 使用 Mercurial 遇到的問題,以及所作的努力「Scaling Mercurial at Facebook」:\r\n\r\n
Facebook's main source repository is enormous--many times larger than even the Linux kernel, which checked in at 17 million lines of code and 44,000 files in 2013.\r\n\r\n...\r\n\r\nInstead, we chose to improve Mercurial. Mercurial is a distributed source control system similar to Git, with many equivalent features.
\r\n\r\n當時的解讀是 Facebook 把 main source repository 放到 Mercurial 上。\r\n\r\n以 Facebook 的規模以及遇到的問題,是有能力直接改變世界的,用 Mercurial 或是 Git 都算是合理的選擇。\r\n\r\n不過這幾天在 Twitter 上看到:\r\n\r\n

Facebook's git repo is 54 GB. pic.twitter.com/zLNSzDlFYF

— Feross (@feross) April 24, 2014
\r\n\r\n\r\n這讓人錯亂了啊 XDDD", + "title": "Facebook 的主程式碼放在 Git?" + }, + { + "id": "4578", + "body": "很... 酸... XDDD\r\n\r\n\"\"\r\n取自「xkcd: Google Announcement」。\r\n\r\n大概是因為發言人講的話跟沒講一樣,當然也有可能是大家對 Google+ 積怨已久 XDDD", + "title": "xkcd 對 Google+ 主管離職後的對外說明..." + }, + { + "id": "4580", + "body": "實際的世界都是由 workaround 疊 workaround 解決問題的...\r\n\r\nMySQL 資料庫一般都用 RAID 10,利用 RAID 1 的特性保護資料,並且利用 RAID 0 的特性提昇 IOPS 能力。\r\n\r\n而這些 RAID 卡通常都會提供 cache,預設應該都會開 read cache,可以大幅增加 random read 的速度。而另外也可以打開 write cache (也就是 write-back),寫入時先寫到 cache 裡,RAID 卡馬上就會跟作業系統回報完成,藉以加速 random write 的速度。\r\n\r\n但這樣就會有風險,當資料還沒寫入硬碟就斷電時就會遺失資料。所以在設定 write-back 的 RAID 卡上安裝電池就變成解法之一。\r\n\r\n而電池會有壽命問題,所以配電池的 RAID 卡會每隔一陣子就放電測試電池可以撐多久,但在放電測試時,如果斷電就有可能造成資料遺失,於是又冒出很多方法解決。\r\n\r\n也就是在「Learning to Deal With Learning」這篇提到 RAID 卡電池維護的事情。\r\n\r\n每一層都是 workaround 想辦法解決問題,然後再用 workaround 解決前面造成的問題...\r\n\r\nAnyway,有幾種解法,其中仍然對上層作業系統與應用程式透明的解法是:\r\n\r\n\r\n\r\n另外,對上層作業系統與應用程式有影響的方式:\r\n\r\n\r\n\r\n看了下來雙電池架構還不錯,增加的成本還算可以接受,而且因為效能不受到影響,也確保資料安全性,整體維護起來比較簡單。而之後在規模更大的時候,應該就會直接考慮跳到自己放電測試的方式來處理電池問題...", + "title": "RAID 卡的電池維護" + }, + { + "id": "4585", + "body": "Vagrant 1.6 將會支援 Docker:「Feature Preview: Docker-Based Development Environments」。\r\n\r\n對於 Linux 原生環境沒有問題,而對於非 Linux 環境,Vagrant 會建立一台跑 Linux 的虛擬機,然後在裡面跑 Docker,很有趣的作法 :p (反正想辦法支援)\r\n\r\nDocker 與虛擬機的速度當然是沒辦法比較 (Docker 快太多),如果 1.6 穩定的話,應該要花不少時間來研究整合了 :p", + "title": "Vagrant 1.6 將會支援 Docker" + }, + { + "id": "4587", + "body": "在「Using Facebook Notes to DDoS any website」這篇文章裡提到了利用 Facebook Notes 允許使用者嵌入 <img> 標籤時的特性,利用 Facebook 的 server 進行 DDoS...\r\n\r\n在 Notes 一般的 <img> 會被 Facebook 的伺服器 cache 起來,但如果是帶有 query string 的 <img> 就不會 cache (因為不同的 query string 表示不同的 url 是合理的),於是就可以利用這個特性打出超高的流量:\r\n\r\n\"\"\r\n\r\n這個問題被 Facebook 認為不是問題,不會也不打算修正...\r\n\r\n文章後提到的指令還蠻有趣的,要抓出某個 AS number 有哪些 IP address,可以用這樣的指令抓出來:\r\n\r\nwhois -h whois.radb.net — '-i origin AS32934' | grep ^route\r\n\r\n試著抓了 AS9916 與 AS18185,的確是蠻有趣的東西 XD", + "title": "利用 Facebook Notes 對圖片 cache 的特性發動 DDoS 攻擊" + }, + { + "id": "4593", + "body": "把 PHPMemcached 整理一下,未必適合其他人用。\r\n\r\n設定上:\r\n\r\n\r\n\r\n使用上:\r\n\r\n\r\n\r\n先整理到這...", + "title": "PHP 的 Memcached 的眉眉角角..." + }, + { + "id": "4599", + "body": "其實就是商業公司之間的勾心鬥角,在包裝後搬到檯面上 :p\r\n\r\nNetflix 在美國固網裡吃的流量比 YouTube 還多,可想而知當然就變成各 ISP 找麻煩的對象...\r\n\r\n\"\"\r\n出自 Sandvine 的「Global Internet Phenomena Report 2H 2013」。\r\n\r\nNetflix 有多種方式將影片傳遞給使用者。除了早期自建機房外,後來跟不少 CDN 有業務往來 (包括了 AkamaiLimelightLevel3),另外也有 Netflix Open Connect Content Delivery Network 計畫,直接在 ISP 內部機房放設備提供服務。\r\n\r\n使用 CDN 的作法成本太高,而 ISP 又不一定會接受 Open Connect 方案 (因為不一定收的到錢),在這種情況下,如果走 transit 線路的速度通常都不會太好。而 Netflix 與 Comcast 之間的狀況就是如此:\r\n\r\n\"\"\r\n\r\n在付給 Comcast 錢後速度都都解決了...\r\n\r\n除了付錢解決外,上個禮拜 Netflix 就丟出一篇說明的文章發難了:「The Case Against ISP Tolls」,這篇文章除了提到上面的事情外,另外還極力反對 Comcast 與 Time Warner Cable 的併購案 XDDD\r\n\r\n然後最近又炒熱的網路中立問題,看起來也這件案子應該會很熱鬧 XDDD", + "title": "Netflix 與 Comcast 的恩怨" + }, + { + "id": "4602", + "body": "在「Git Workflows That Work」這篇提到了不少 Git 的 Workflow,從中可以看到各家的開發模式,以及想要解決的問題:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n主要還是要看環境而決定,並不是哪一種 flow 就一定好...", + "title": "Git 的 Workflow" + }, + { + "id": "4604", + "body": "即使 Windows XP 在上個月就已經停止安全性更新,但這次的 CVE-2014-1776 影響層面還是太廣,微軟還是提供 Windows XP 用戶相關的 patch (透過 Windows Update 發送):\r\n\r\n
Use-after-free vulnerability in VGX.DLL in Microsoft Internet Explorer 6 through 11 allows remote attackers to execute arbitrary code or cause a denial of service (memory corruption) via unspecified vectors, as exploited in the wild in April 2014.
\r\n\r\n在「Security Update Released to Address Recent Internet Explorer Vulnerability」也可以看到說明。\r\n\r\n看到 use-after-free 這個詞就想到 OpenSSL 前陣子也來一發 CVE-2010-5298 (居然是 2010 年的 CVE),讓人... XD", + "title": "微軟的 IE6+ 安全性更新" + }, + { + "id": "4606", + "body": "Mailgun 這篇提供用戶端更換 API key 的作法還蠻有趣的:「Swap out your API keys with no downtime」。\r\n\r\n\"\"\r\n\r\n舊的 API key 不會馬上失效。不過,比較常見的情況應該是服務提供商提供多組 API key 的能力就可以了?像是 AWS 就可以做到。用戶端換完後把舊的 API key 拿掉即可。", + "title": "服務供應商更換用戶端 API key 的作法" + }, + { + "id": "4608", + "body": "先說 Microsoft OneDrive for Business,這個產品的定位是:\r\n\r\n
OneDrive for Business is cloud storage for business.\r\n(取自 OneDrive for Business 網站 html 內的 description。)
\r\n\r\n但前幾天看到「Microsoft OneDrive for Business modifies files as it syncs」這篇新聞,提到 OneDrive for Business 會修改檔案內容:\r\n\r\n\"\"\r\n透過 MD5 確認發現 MD5 值不相符的 screenshot。\r\n\r\n\"\"\r\n實際檢查後發現被插入的部份。\r\n\r\n不像是 cloud storage 應該有的行為...", + "title": "Microsoft OneDrive for Business 會主動修改檔案內容..." + }, + { + "id": "4621", + "body": "這陣子 OpenSSH 的人努力降低對 OpenSSL 的相依性,目前 (2014-04-29 18:01:49 GMT) 已經拔到把 OpenSSL 拔掉後仍然有數個演算法可用 (離可用還是有一段距離):\r\n\r\n
make compiling against OpenSSL optional (make OPENSSL=no);\r\nreduces algorithms to curve25519, aes-ctr, chacha, ed25519;\r\nallows us to explore further options; with and ok djm
\r\n\r\nCurve25519 用在 ECDH,而 AES-CTR 與 ChaCha20+Poly1305 用在對稱加密,Ed25519 用在非對稱加密,其中三個剛好是一整套 djb 大全集 XD\r\n\r\n不過缺了 RSA 還是有點痛啊,看看會不會實做出來吧?", + "title": "OpenSSH 降低對 OpenSSL 的相依性" + }, + { + "id": "4626", + "body": "前幾天提到的 Vagrant 1.6 正式發行了:「Vagrant 1.6」,然後下載的地方已經迅速跳版號出 1.6.1 了...\r\n\r\n用 Ubuntu 的人可以直接抓 deb 檔後用 dpkg -i 安裝...\r\n\r\n官方列出三個大進展:\r\n\r\n

Global Status and Control

\r\n\r\n以往是分散管理,現在可以統一管理。對於有開很多 Vagrant 環境的人會變得方便,不然以往都要自己開 VirtualBox 確認。\r\n\r\n

Windows Guests

\r\n\r\n標題說明一切 XDDD\r\n\r\n

Docker-Based Development Environments

\r\n\r\n開一個 Docker container 的速度比開一個 VirtualBox 快很多。當然,開出來是 Linux 環境。但這對於跑測試之類的應用非常好用,速度會是重要的因素之一...\r\n\r\n完整的 Changelog 可以看 GitHub 上 1.6.0 版的「CHANGELOG.md」。", + "title": "Vagrant 1.6" + }, + { + "id": "4632", + "body": "今年一月的時候 CloudFlare 宣佈針對使用 TLS 1.1+ 的使用者停用 RC4:「Killing RC4 (softly)」。\r\n\r\n而現在 (五月) 則直接從 cipher priority 上拔掉 RC4:「Killing RC4: The Long Goodbye」。\r\n\r\n切換後的資料其實非常有趣:\r\n\r\n\"\"\r\n\r\n可以看到本來用 RC4 的有兩塊,一塊是 ECDHE-RC4,一塊是 RSA-RC4。在 RC4 被拿掉後,就流竄到 ECDHE-AES-CBC 與 RSA-AES-CBC... (這兩個本來就可以預期)\r\n\r\n但冒出 RSA-3DES 是怎樣 XDDD\r\n\r\nAnyway,CloudFlare 在目前市場上算是很大的 provider,由他們出面率先拔掉 RC4 會對整個市場有正面的影響。接下來看看還有誰會動手?", + "title": "CloudFlare 停用 RC4 後的現象,以及後續..." + }, + { + "id": "4635", + "body": "

We're Hiring! Major Account Executive Job (Taiwan, CN) http://t.co/1n1k7YsesR

— Akamai Technologies (@Akamai) May 8, 2014
\r\n\r\n\r\n抓圖:\r\n\r\n\"\"\r\n\r\nUpdate:頁面上的地點已經修改成 Taipei, TW 了。", + "title": "什麼鬼..." + }, + { + "id": "4637", + "body": "剛剛 AWS 宣佈 Amazon CloudFront 也加入 Free Tier 產品線:「Amazon CloudFront Joins the AWS Free Usage Tier」。\r\n\r\n一個月 50GB 以及兩百萬次的 request,所有地區統一計算。\r\n\r\n競爭愈來愈激烈了...", + "title": "Amazon CloudFront 也加入 Free Tier 了..." + }, + { + "id": "4642", + "body": "本來以為寫過了,後來找了找沒找到...\r\n\r\n星期五的時候跟 Gasol 聊了一下,後來查資料後整理出來。(主要是 include 的文件說明)\r\n\r\nrequireinclude 的差異在於找不到檔案時,include 會產生 warning,而 require 會產生 fatal error:\r\n\r\n
The include construct will emit a warning if it cannot find a file; this is different behavior from require, which will emit a fatal error.
\r\n\r\n而對 include_path 的處理則是「遇到有指定 path 時就忽略 include_path」,而對 require './foo.php' 的解讀是「relative to the current directory」:\r\n\r\n
If a path is defined — whether absolute (starting with a drive letter or \\ on Windows, or / on Unix/Linux systems) or relative to the current directory (starting with . or ..) — the include_path will be ignored altogether. For example, if a filename begins with ../, the parser will look in the parent directory to find the requested file.
\r\n\r\n由於不是「檔案所在的路徑」而是「current directory」,會受到 chdir() 的影響。一般在程式碼內的基準應該是「這個 script 所在的路徑」,而非「current directory」,所以寫法應該是:\r\n\r\n<?php\r\nrequire __DIR__ . PATH_SEPARATOR . 'foo.php';\r\n\r\n<?php\r\n# 直接假設在 Mac OS X & Linux & FreeBSD 上跑...\r\nrequire __DIR__ . '/foo.php'; \r\n\r\n而這種寫法就得依靠 include_path 內有 .,而且還要祈禱不會在其他的目錄裡出現同樣檔名:\r\n\r\n<?php\r\nrequire 'foo.php';", + "title": "關於 PHP 的 require 與 include (以及 *_once)" + }, + { + "id": "4649", + "body": "EFF 推出新的延伸套件 (有 Firefox 與 Google Chrome 版),透過演算法阻擋嘗試追蹤你的單位:「Privacy Badger」。\r\n\r\n在官網上有比較技術面的說明:\r\n\r\n
At a more technical level, Privacy Badger keeps note of the \"third party\" domains that embed images, scripts and advertising in the pages you visit. If a third party server appears to be tracking you without permission, by using uniquely identifying cookies to collect a record of the pages you visit across multiple sites, Privacy Badger will automatically disallow content from that third party tracker. In some cases a third-party domain provides some important aspect of a page's functionality, such as embedded maps, images, or fonts. In those cases Privacy Badger will allow connections to the third party but will screen out its tracking cookies.
\r\n\r\n技術上的作法是分析 third party domain 的行為,用演算法阻擋可能的追蹤。與 Ghostery 這類工具使用人力建立清單的方法不太一樣。\r\n\r\n裝起來跑看看,感覺還蠻有趣的...", + "title": "EFF 的 Privacy Badger" + }, + { + "id": "4652", + "body": "\"\"\r\n\r\n有時候會被問到為什麼這麼喜歡把東京當後院在跑,當然是有很多理由啦... 其中一個理由是在享受細節。\r\n\r\n上面這張圖是在東京站 (東京地下鐵丸之內線) 拍的指示牌,不只是這個指示牌,東京內的 JR 或是地鐵都可以感覺到裡面的魔鬼。\r\n\r\n如果去忠孝新生走走就會知道差異了。", + "title": "東京" + }, + { + "id": "4656", + "body": "用 Docker 最大的好處就是啟動速度,比 VirtualBox 快非常多,但 Vagrant 官方對於 Docker provider 的範例還是太少,踹了老半天才踹出來:\r\n\r\n
ENV[\"VAGRANT_DEFAULT_PROVIDER\"] = \"docker\"\r\n\r\nVAGRANTFILE_API_VERSION = \"2\"\r\n\r\nVagrant.configure(VAGRANTFILE_API_VERSION) do |config|\r\n    config.vm.provider \"docker\" do |docker, override|\r\n        docker.image = \"fgrehm/vagrant-ubuntu:precise\"\r\n        docker.has_ssh = true\r\n\r\n        override.ssh.port = 22\r\n    end\r\nend
\r\n\r\n然後用 vagrant up 跑起來,接下來就可以用 vagrant ssh 連進去。\r\n\r\n其中 override 是目前的 workaround,可以參考 GitHub 上的「Docker provider: cannot 'vagrant ssh' when not using a Docker host VM · Issue #3799 · mitchellh/vagrant」。\r\n\r\nDocker 的 image 不透過 Vagrant 管理,而是 Docker 自己處理。可以用 docker images (列出) 與 docker rmi [repository] (刪除) 操作。", + "title": "總算是搞定 Vagrant + Docker..." + }, + { + "id": "4662", + "body": "維基百科對 APT (Advanced Persistent Threat) 的定義是:\r\n\r\n
Advanced Persistent Threat (APT) APT is a set of stealthy and continuous computer hacking processes, often orchestrated by human(s) targeting a specific entity.
\r\n\r\n針對特定個人或團體進行攻擊,這邊的 entity 通常是指有權限存取系統,或是手上握有機敏資料的人,這些人的帳號密碼,或是系統權限是有價值的。\r\n\r\n這幾年因為行動裝置普及,再加上行動裝置上驗證起來會比較麻煩,成為 APT 攻擊的首選。\r\n\r\n下面就原文照登:\r\n\r\n\"\"", + "title": "APT (Advanced Persistent Threat)" + }, + { + "id": "4666", + "body": "最近幾天在密碼學領域還蠻紅的話題 (雖然預印本在去年就發了),EUROCRYPT 2014 上發表對 DLP (Discrete Log Problem) 的重大進展。\r\n\r\n論文在 arXiv 上可以取得:「A quasi-polynomial algorithm for discrete logarithm in finite fields of small characteristic」。\r\n\r\n針對使用小特徵值的有限域 (finite field) 的 DLP 問題 (也就是 Zqk 上) 直接從 sub-exponential 降到 nO(logn) (quasi-polynomial)。最常見到的應該是 Z2n。\r\n\r\n雖然現有被廣泛使用的密碼系統在使用 DLP 建構時都是用 Zp,但這次的成果絕對寫下了 DLP cryptoanalysis 上的里程碑...", + "title": "Small Characteristic DLP (Discrete Log Problem) 被解決" + }, + { + "id": "4668", + "body": "\"\"\r\n\r\n在虛擬機裡面跑虛擬機 (為了熟悉 VMware ESXi?):「Notes on getting VMware ESXi to run under KVM」。\r\n\r\n\"\"\r\n\r\n也許應該來玩看看 XDDD", + "title": "在 KVM 裡面跑 VMware ESXi" + }, + { + "id": "4670", + "body": "在「Facebook Takes Tougher Stand Against BREACH Attack」這篇提到 Facebook 在 2012 年對抗 BREACH attack 的方法:\r\n\r\n在文章最後面有提到當時一般建議的 migrate 方式 (關閉 TLS 的壓縮) 不適用於 Facebook:\r\n\r\n
Turning off compression is not an option for large dynamic sites such as Facebook because it would hinder performance dramatically.
\r\n\r\n而且就算關掉 TLS 的 compression,也還是有疑慮:\r\n\r\n
Even if TLS-level compression is disabled, it is very common to use gzip at the HTTP level. Furthermore, it is very common that secrets (such as CSRF tokens) and user input are included in the same HTTP response, and therefore (very likely) in the same compression context,
\r\n\r\n節錄幾段 migrate 的重點:\r\n\r\n
Facebook disclosed how it’s mitigating BREACH attacks by changing the frequency in which it rotates CSRF tokens from daily to each time a Facebook session is started.
\r\n\r\n本來 CSRF token 變更的頻率是好幾天一次,把頻率拉高...\r\n\r\n
After a new token is issued, the previous tokens still remain valid for a couple days, resulting in multiple tokens being permissible simultaneously.
\r\n\r\n然後舊的 token 還是會保持一段時間有效。\r\n\r\n因為現實因素而沒辦法在 TLS 層關閉,後面在 application level 的 workaround 相當費功... (而且要多花不少資源?)", + "title": "Facebook 在對抗 BREACH Attack 的方法" + }, + { + "id": "4672", + "body": "WebScaleSQLFacebookGoogleLinkedIn 以及 Twitter 四家公司對 MySQL 5.6 的 fork。\r\n\r\n而 Percona 的人也針對 WebScaleSQL 與 Percona Server 5.6 的比較,寫了一篇技術分析的文章:「A technical WebScaleSQL review and comparison with Percona Server」。\r\n\r\nPercona 那篇分析文章提到不少改善屬於比較激進類型,對於 Percona Server 以及 MySQL 官方版本的定位並不適合。\r\n\r\n而在開發上,語法也換到 C99C++11,也就是打算拋棄很舊的系統 (沒有 C99/C++11 compiler)。不過就這點來說,使得這上面的 patch 要 backport 回 MySQL 又增加了一些狀況...\r\n\r\nWebScaleSQL 的出現代表 MySQL fork 又多一家,而且因為背後是這四家公司搞出來的,看起來聲勢會很浩大。進入「合久必分」的階段...", + "title": "WebScaleSQL" + }, + { + "id": "4674", + "body": "在「Explanation of 44.1 kHz CD sampling rate」這邊看到 44.1kHz 的解釋...\r\n\r\n這個數字反而是跟 video 有關而設計出來的:\r\n\r\n
In 60 Hz video, there are 35 blanked lines, leaving 490 lines per frame or 245 lines per field, so the sampling rate is given by :\r\n\r\n60 X 245 X 3 = 44.1 KHz\r\n\r\nIn 50 Hz video, there are 37 lines of blanking, leaving 588 active lines per frame, or 294 per field, so the same sampling rate is given by\r\n\r\n50 X 294 X3 = 44.1 Khz.
\r\n\r\n而後來 44.1kHz 被拿去 CD 規格裡使用而被廣泛應用...", + "title": "44.1kHz 的由來..." + }, + { + "id": "4676", + "body": "GoogleOfficial Google Webmaster Central Blog 上正式向全世界公告他們的 Searchbot 將會解讀 JavaScript:「Understanding web pages better」。\r\n\r\n也就是說,再這次改版後,就算你的頁面全部用 JavaScript 產生,Google 也有能力解讀出來。這顛覆了以前學到的觀念...\r\n\r\n其他家 (DuckDuckGo?) 會支援嗎?不知道會不會跳下去做...", + "title": "Google Searchbot 將開始有能力解讀 JavaScript..." + }, + { + "id": "4678", + "body": "由於 Elasticsearch 的想法與實做比起 Solr 吸引人,可以看到愈來愈多團體換過去...\r\n\r\n而前幾天 Elasticsearch 的官方放出 1.2.0 與 1.1.2 的消息:「elasticsearch 1.2.0 and 1.1.2 released」。\r\n\r\n1.2.0 最大的改變是強制使用 Java 7 了,也就是不能在 Ubuntu 12.04 下安裝 default-jre 了,變成要裝 openjdk-7-jre。(要注意,官方建議的是 Oracle 官方的 JDK,而非 OpenJDK)\r\n\r\n如果是 Ubuntu 14.04 就沒這個問題。(因為 default-jre 會裝 Java 7)\r\n\r\n另外一個大改變是,之前產生安全問題的 dynamic scripting 預設關掉了,也就是 CVE-2014-3120。\r\n\r\n目前我的進度只到看完 mapping,但還沒實際開始塞資料進去玩...", + "title": "Elasticsearch 1.2.0" + }, + { + "id": "4680", + "body": "在 Hacker News Daily 上看到的服務:「9m URL Shortener」。\r\n\r\n居然用 Unicode 短網址當作編碼的部份... 是很有趣啦,不過因為難以輸入,只適合用在 internet 上的傳遞?而不是讓人輸入的...\r\n\r\n\"\"\r\n\r\n有些字在我的電腦上還出不來 XDDD", + "title": "用 Unicode 字元當作短網址編碼的服務..." + }, + { + "id": "4683", + "body": "PDFium 是 open source PDF rendering engine,功能上像是 Mozilla 所研發的 PDF.js,不過是以 C++ 寫的原生套件。\r\n\r\n看起來目標是要進 ChromeChromium,以取代現有 Google Chrome 裡所含的非 open source 版本。\r\n\r\n不過 Chromium 目前應該已經有 PDF Viewer 可以用?(利用 PDF.js 開發出的套件)", + "title": "Chromium 的 PDFium" + }, + { + "id": "4685", + "body": "Percona 的「How to improve InnoDB performance by 55% for write-bound loads」這篇在討論 Journal filesystem 以及 InnoDB 的 Double write buffer。\r\n\r\n先講文章內的結論。\r\n\r\n在 ext4 上開啟 Journal filesystem 功能後並且關掉 InnoDB 的 Double write buffer 後,資料的安全性不受影響,但效能上升非常多。而與目前常用的 XFS 比較起來也是領先不少。\r\n\r\n\"\"\r\n\r\n要注意的是,這邊的數據是資料大小小於記憶體大小時 tpcc-mysql 的執行數據。\r\n\r\n原文還有探討其他的狀況,像是 InnoDB 與 MyISAM 混用的問題,有用到的人應該自己去看看原文。\r\n\r\n而目前在公司用 XFS 已經用習慣而且相當穩定,但該來花時間投資在 ext4 了,常常可以看到 ext4 很不錯之類的消息。", + "title": "利用 Journal filesystem 與 Double write buffer 改善 InnoDB 寫入效能" + }, + { + "id": "4688", + "body": "看到 CloudFlare 的「BPF - the forgotten bytecode」在文章裡提到 BPF (Berkeley Packet Filter),發現從大學畢業後就沒再看過... (然後也沒什麼印象了)\r\n\r\ntcpdump 可以把 expression 轉成 BPF bytecode,再丟進 kernel 執行,拿 CloudFlare 文章裡的例子在自己電腦上跑:\r\n\r\n
gslin@GSLIN-DESKTOP [~] [07:27/W4] sudo tcpdump -p -ni eth1 -d \"ip and udp\"\r\n(000) ldh      [12]\r\n(001) jeq      #0x800           jt 2    jf 5\r\n(002) ldb      [23]\r\n(003) jeq      #0x11            jt 4    jf 5\r\n(004) ret      #65535\r\n(005) ret      #0
\r\n\r\n而對於複雜的過濾邏輯而需要拼效能時,可能會需要手動寫 bytecode (像是優先先判斷某些比較容易過濾的欄位,藉以降低判斷的量),可以透過 SOCK_RAWSO_ATTACH_FILTER 直接寫 bytecode 給 kernel 執行。\r\n\r\n雖然文章內沒有明講,不過看起來 CloudFlare 有這樣做,尤其後面又有提到:\r\n\r\n
These kind of rules are very useful, they allow us to pinpoint the malicious traffic and drop it early. Just in the last couple of weeks we dropped 870,213,889,941 packets with few BPF rules. Recently during a flood we saw 41 billion packets dropped throughout a night due to a single well placed rule.
\r\n\r\n記起來以後說不定用的到...", + "title": "BPF (Berkeley Packet Filter)" + }, + { + "id": "4690", + "body": "xkcd 上看到的,取自「xkcd: Screenshot」:\r\n\r\n\"\"", + "title": "電池..." + }, + { + "id": "4694", + "body": "IBM 中止與 NetApp 的 OEM 關係,要賣自己的硬體了:「IBM Stops Selling NetApp Units in Favor of Own Storage Devices」。\r\n\r\n幾個重點:\r\n\r\n
The move is poised to be a setback for NetApp, which gets about 2 percent of its revenue from IBM, according to data compiled by Bloomberg.
\r\n\r\n
“IBM is focused on strengthening its Software Defined Storage portfolio to provide greater scalability to clients,” Sean Tetpon, a spokesman for IBM, said in an e-mail.
\r\n\r\n有很多種解讀...", + "title": "IBM 中止與 NetApp 的 OEM 關係" + }, + { + "id": "4696", + "body": "我喜歡 Zend_View 來處理 view 的部份,但並不是每個人都習慣在所有 output 的部份加上對應的 escape function,所以還是得找其他有 auto escape 功能的 framework 來用看看,而 Twig 是其中一個還不錯的選擇。\r\n\r\n用 Composer 裝完 Twig 後:\r\n\r\n
<?php\r\n\r\nrequire __DIR__ . '/vendor/autoload.php';\r\n\r\n$loader = new Twig_Loader_Filesystem(__DIR__ . '/view');\r\n$twig = new Twig_Environment($loader, array('strict_variables' => true));\r\n\r\n$array_data = array(\r\n    'foo' => 'bar',\r\n);\r\n\r\necho $twig->render('index/index.html.twig', $array_data);
\r\n\r\n比較特別是為了支援 PHP 5.2 而沒有使用 namespace。\r\n\r\n而拿 ab 打可以測出來速度很快,一般會遇到的瓶頸應該會是 database 而非 Twig...", + "title": "Twig 的用法" + }, + { + "id": "4705", + "body": "TrueCrypt 是相當有名的磁碟加密軟體,而官網上突然宣佈這些事情讓大家相當驚愕,今天打開 Zite 時發現所有人都是在講這件事情,已經震驚了整個資安領域...\r\n\r\n\"\"\r\n\r\nBruce Schneier 寫了一篇「TrueCrypt WTF」,猜測的可能性包括了:\r\n\r\n
Speculations include a massive hack of the TrueCrypt developers, some Lavabit-like forced shutdown, and an internal power struggle within TrueCrypt. I suppose we'll have to wait and see what develops.
\r\n\r\n不知道實際上發生了什麼事情,接下來應該會有更多消息出來,要盯著看了...", + "title": "TrueCrypt 官方以「不安全」的原因要求大家停用 TrueCrypt..." + }, + { + "id": "4709", + "body": "AWS 推出信用卡式的 MFA:「A Convenient New Hardware MFA Form Factor」。\r\n\r\n\"\"\r\n\r\n一樣是跟 Gemalto 合作。相較於之前掛在鑰匙圈上變得更容易收納 (可以放到皮夾內):\r\n\r\n\"\"\r\n\r\n實體的 OTP 還是比 app 形式的安全強度好,變成信用卡形式後應該再弄一片來玩玩...", + "title": "AWS 推出信用卡式的 MFA" + }, + { + "id": "4711", + "body": "Windows XP 的支援到 2014 年 4 月 8 日結束,而這表示在這之後 Windows XP 將不會有安全性更新 (除了特殊的情況)。\r\n\r\n不過,Windows Embedded POSReady 是 Windows XP 的一個分支版本,則支援到 2019 年。而網路上應該有不少媒體都報過了 (像是「Windows XP rises from the grave: Simple hack gives you five more years of updates」),可以利用改 registry 的方式讓 Windows XP 收這些更新:\r\n\r\n到 HKEY_LOCAL_MACHINE\\SYSTEM\\WPA\\PosReady\\ 下增加一筆 Installed (DWORD,值為 1)。\r\n\r\n這是目前使用 Windows XP 最好的方式了。\r\n\r\nUpdate:本來的 key 有錯誤。", + "title": "讓 Windows XP 活更久的方法..." + }, + { + "id": "4714", + "body": "2012 年的老文章了,不確定是 Zite 上看到,還是 Hacker News Daily 上看到的:「Defensive BASH Programming」。\r\n\r\n不是給初學者看的文件,而是寫給對 shell script 有一定基礎的人。針對要怎麼樣才能寫出容易維護,而且問題又少的 code 所提出來的準則,但也未必適用於每一個人 (或是團體)。\r\n\r\n這篇文章的好處是有說明為什麼這樣規範,重點在吸收這些想法。", + "title": "Defensive BASH Programming" + }, + { + "id": "4716", + "body": "Apache Spark 以記憶體操作為賣點的想法,有人提出來直接讓 HDFS 支援 Memory Storage 了:「Discardable Distributed Memory: Supporting Memory Storage in HDFS」,文章的副標題「HDFS's storage subsystem gets a boost with discardable distributed memory」也說明了特性。\r\n\r\n整個計畫在「[HDFS-5851] Support memory as a storage medium - ASF JIRA」這邊可以看到。\r\n\r\n不過 Spark 帶來的想法現在才有進度... 這發展的速度也太快了 XD", + "title": "HDFS 上的 Memory Storage" + }, + { + "id": "4718", + "body": "Vagrant 官方沒公告,但在 GitHub 上可以看到 Changelog:「1.6.3 (May 29, 2014)」。\r\n\r\n本來在 Docker provider 上有兩個 workaround 要設定 (docker.has_ssh 以及 override.ssh.port),現在都不需要了,預設值就有幫你自動偵測:\r\n\r\n\r\n\r\n這樣處理起來又方便一些...", + "title": "Vagrant 1.6.3" + }, + { + "id": "4720", + "body": "Changes to the Video Archive System:\r\n\r\n
we have concluded to remove all archiving after June 8, 2014.
\r\n\r\n變成專注只做 real-time streaming 這塊。雖然被買的是 twitch,但感覺上跟 Google 總是有點關係...", + "title": "Justin.tv 將消滅錄影功能" + }, + { + "id": "4722", + "body": "在 Twitter 上看到居然用這張圖:\r\n\r\n

Package : chkrootkit CVE ID : CVE-2014-0476 pic.twitter.com/AZatsybfGQ

— Pipes (@pipes) June 4, 2014
\r\n\r\n\r\nCVE-2014-0476 比較完整的說明可以看 Red Hat 的 Bugzilla 上給的說明:「Bug 1104455 – CVE-2014-0476 chkrootkit: local privilege escalation」。\r\n\r\n阿彌陀佛...", + "title": "CVE-2014-0476:掃 Rootkit 的程式變成 Rootkit?" + }, + { + "id": "4725", + "body": "熱騰騰的「OpenSSL Security Advisory [05 Jun 2014]」:\r\n\r\n這太熱鬧了,第一個 security issue 可以在 MITM 的情況下,強迫選用比較差的 cipher:\r\n\r\n
An attacker using a carefully crafted handshake can force the use of weak keying material in OpenSSL SSL/TLS clients and servers.
\r\n\r\n第三個則有可能直接爆破執行程式碼:\r\n\r\n
A buffer overrun attack can be triggered by sending invalid DTLS fragments to an OpenSSL DTLS client or server. This is potentially exploitable to run arbitrary code on a vulnerable client or server.
\r\n\r\n接下來幾天對 SA 來說又是無止盡的升級地獄...", + "title": "OpenSSL 安全通報連發..." + }, + { + "id": "4727", + "body": "JavaScript 在正式提供服務時一般都會使用「YUI Compressor」、「UglifyJS」或是「Closure Compiler」壓縮後再拿到正式環境上使用,最主要的目的是為了降低網路傳輸量。\r\n\r\n這些工具其中一個特點是,local function 與 local variable 會被較短的名字取代掉,這可以讓想要反組譯的人比較麻煩。\r\n\r\n不過今天看到的這個工具可以解決「困擾」:「JSNice」。(在 Slashdot 上的「Machine Learning Used For JavaScript Code De-obfuscation」這篇看到的)\r\n\r\n用統計方法去「猜測」這些 local function 與 local variable 應該叫什麼名字,讓人比較好理解。官方對準確度的說法是超過 60%:\r\n\r\n
In our experiments, we found JSNice to be effective for deobfuscating minified code. On average, more than 60% of the identifiers are recovered to the same name as before the minification process.
\r\n\r\n接下來會想辦法提供 UI 讓使用者可以選擇另外的名字:\r\n\r\n
Further, as JSNice computes multiple ranked suggestions, we provide a UI to navigate through these suggestions and select alternative identifier names.
\r\n\r\n先記錄起來,這網站很有趣,之後要 trace 別人的程式碼應該常常會用到 XDDD", + "title": "用統計方法反推 JavaScript 壓縮程式的變數名稱" + }, + { + "id": "4729", + "body": "在「Running OS X Mavericks under QEMU with KVM」這篇看到的。\r\n\r\n開頭就提到了目前的情況:\r\n\r\n
Virtualizing OS X is a thing that can today be done very easily, with VMware and VirtualBox fully supporting it under OS X hosts. But what about virtualizing it using a bare metal hypervisor and QEMU? Under Linux? Finally I've got Mavericks fully working under QEMU (with no extra kexts(!)) and it wasn't easy.
\r\n\r\nOS X Mavericks 是 10.9,過不久後文章應該會再度更新吧...", + "title": "在 QEMU/KVM 上跑 Mac OS X..." + }, + { + "id": "4731", + "body": "Google 前天發表了 Chrome 裡面的 PGP 實做套件:「Making end-to-end encryption easier to use」。\r\n\r\n目前只放出了 source code,並沒有在 Chrome Web Store 上架,這點在網站上就直接說明了,他們目前認為目前沒有被足夠的人檢查過,所以請不要傳到 Chrome Web Store 上:\r\n\r\n
Since this is source, I could just build this and submit it to the Chrome Web Store\r\n\r\nPlease don’t do this.\r\n\r\nThe End-To-End team takes its responsibility to provide solid crypto very seriously, and we don’t want at-risk groups that may not be technically sophisticated — journalists, human-rights workers, et al — to rely on End-To-End until we feel it’s ready. Prematurely making End-To-End available could have very serious real world ramifications.\r\n\r\nOne of the reasons we are doing this source code release is precisely so that the community as a whole can help us make sure that we haven’t overlooked anything in our implementation of End-To-End.\r\n\r\nOnce we feel that End-To-End is ready, we will release it via the Chrome Web Store ourselves.
\r\n\r\n而為了鼓勵大家去找問題,雖然這是很新的軟體,但已經將 End-to-End 直接納入 Vulnerability Reward Program 裡:\r\n\r\n
And we mean it: our Vulnerability Reward Program offers financial awards for finding security bugs in Google code, including End-to-End.
\r\n\r\n不過傳統的方法還是會更可靠一些,畢竟 JavaScript 沒辦法很仔細控制記憶體內容,在放掉的記憶體空間內可能會包含某些未加密的資訊,甚至是 private key 的資訊。", + "title": "Google 在 Chrome 內的 PGP:End-to-End" + }, + { + "id": "4736", + "body": "HTTP/1.1 源自十五年前 (1999 年 6 月) 所發佈的 RFC 2616,而十五年後被翻新了。\r\n\r\n可以在 RFC 2616 的狀態資訊上看到「Obsoleted by: 7230, 7231, 7232, 7233, 7234, 7235」,把本來的 RFC 2616 拆開成幾份文件:\r\n\r\n\r\n\r\n在「HTTP/1.1 just got a major update.」這篇文章裡面整理了一些改變,大多數都是相容於現在的使用習慣,另外把一些過時的預設行為拿掉。(像是預設 charset 為 ISO-8859-1)\r\n\r\n找機會來重頭翻一下,以後就不是翻 RFC 2616 了...", + "title": "HTTP/1.1 的更新" + }, + { + "id": "4741", + "body": "先前在看一些 open source 的 PaaS 文件時看到 Adam Wiggins (Heroku 的創辦人) 寫的「The Twelve-Factor App」。\r\n\r\n裡面其實就是 Heroku 對上面跑的 app 的要求,以及 Heroku 在設計產品時的想法,所以跟 Heroku 業務沒有關係的部份也大多都沒寫到 :p\r\n\r\n拿來參考與理解想法是 okay 的,但如果要完全照著上面的方法做就未必了。", + "title": "Heroku 創辦人 Adam Wiggins 寫的 The Twelve-Factor App" + }, + { + "id": "4743", + "body": "HippyVM 是透過 PyPy 的技術實做出來的 PHP 相容方案:\r\n\r\n
HippyVM is a reimplementation of the PHP language using PyPy technology.
\r\n\r\n而且宣稱電翻市場上所有對手:\r\n\r\n
Right now, HippyVM is 7.3x faster than stock PHP and 2x faster than HHVM, using a geometric mean.
\r\n\r\nGitHub 上的 hippyvm/hippyvm 可以看到目前的進展:\r\n\r\n
HippyVM right now works only on 64bit linux on x86 platform (this limitation is temporary though, the RPython toolchain supports 32 and 64 bit x86, ARMv6 and ARMv7 on windows, os x and linux).
\r\n\r\n目前還是 pre-release 版本,但這個逆襲的感覺好殺...", + "title": "殺意甚濃的 PHP 相容方案:HippyVM" + }, + { + "id": "4745", + "body": "GlobalSign 提供 Open Source 專案免費的 SSL Certificate:「Free SSL Certificate for Open Source Projects」。\r\n\r\n不過看了看需求還蠻龜毛的,不如自己花個 USD$10/year 還比較方便。如果不在意時間成本的話就申請吧,我猜實際上也不會有多少專案申請...", + "title": "GlobalSign 提供 Open Source 專案免費的 SSL Certificate" + }, + { + "id": "4747", + "body": "Docker 出 1.0 版了:「It’s Here: Docker 1.0」。\r\n\r\n現在都是配合 Vagrant 使用,而非直接使用 Docker,出了新版反而沒什麼特別的感覺...", + "title": "Docker 1.0" + }, + { + "id": "4750", + "body": "AWS 自家的 AMI 看起來是 CentOS 之類改出來的,主力是 yum。\r\n\r\n但官方的 yum 缺了不少東西,所以就要靠 RepoForge 擴充了。\r\n\r\n在 RepoForce 的 Using RepoForge 頁面上有說明要先裝他們家的套件,舉例來說,假設是 EL 6 (x86_64) 的話,就複製對應的 url 連結,然後叫 yum 裝:\r\n\r\n
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
\r\n\r\n接下來就可以用 yum 裝官方沒有支援的軟體了...", + "title": "用 RepoForge 擴充 AWS 自家的 AMI" + }, + { + "id": "4755", + "body": "這幾年推廣 HTTPS 的力量愈來愈大,然後有人做成海報推廣 XDDD\r\n\r\n在「Printable SSL Posters」這篇文章裡面有不少作品,像是這張:\r\n\r\n\"\"", + "title": "推廣 SSL 的海報" + }, + { + "id": "4757", + "body": "「SIMD in JavaScript」是 IntelMozilla 以及 Google 的計畫,希望在 EMCAScript 裡面增加規格,讓 EMCAScript 可以利用 CPU 的 SIMD 能力加速計算。\r\n\r\n另外讓我想到的是 asm.js 也是用類似的技術想法 (做不同的方向),而且已經被 Firefox 22+ 以及 Google Chrome 28+ 支援了,效果相當好...\r\n\r\n之後大家想要在 browser 上面做什麼事情,應該都會用類似的技術來做吧 (先檢測系統有沒有原生支援,沒有原生支援時用 plain javascript 模擬)。", + "title": "SIMD in JavaScript" + }, + { + "id": "4762", + "body": "貼圖爆破:\r\n\r\n\"\"", + "title": "幹壞事是進步最大的原動力" + }, + { + "id": "4765", + "body": "在維基百科昨天的使用條款修訂公告中,提到了「揭露利益衝突」的問題:「Making a change to our Terms of Use: Requirements for disclosure」,這份文件的最後方有簡體中文版的說明,對於看英文比較不通順的人可以先看中文版的說明。\r\n\r\n在新版的「Terms of Use」裡面,有一個專門的章節「Paid contributions without disclosure」:\r\n\r\n
These Terms of Use prohibit engaging in deceptive activities, including misrepresentation of affiliation, impersonation, and fraud. As part of these obligations, you must disclose your employer, client, and affiliation with respect to any contribution for which you receive, or expect to receive, compensation. You must make that disclosure in at least one of the following ways:\r\n
\r\n\r\n這段修正可以從「Difference between revisions of \"Terms of Use\" - Wikimedia Foundation」這邊看到完整的 diff。\r\n\r\n這是對於「付費編輯」的反制:國外甚至有專門收費找人編輯維基百科的公司在運作 (可以參考 2013 年 10 月的「Wikimedia Foundation Executive Director Sue Gardner’s response to paid advocacy editing and sockpuppetry」這篇文章),這次在使用條款內直接增訂這一部份,將本來只是社群規範的項目變成直接上法院反制。\r\n\r\n早該這麼做了,這件事情意義重大...", + "title": "維基百科的使用條款更新,強制揭露利益衝突問題" + }, + { + "id": "4767", + "body": "Linode 推出了比 Linode 2G 更低階的方案 Linode 1G:「11th Linode Birthday / $10 Linode plan」。\r\n\r\n先前的 2G 太大台了,大多數人根本用不到 (我的 blog 也才租 DigitalOcean 的 512MB,然後開 swap file)。現在總算出了 1G 的版本,也許會有一些使用者回流吧,不過我覺得 Linode 的動作太慢了...\r\n\r\n該來把東京的機器 downgrade 了...", + "title": "Linode 推出 USD$10/month 方案" + }, + { + "id": "4769", + "body": "EBSAWS 上的 block-level storage,除了空間本身要收費以外,I/O 本身也要收費。到今天為止,EBS 只提供 Magnetic volume,也就是與傳統硬碟性質接近的 EBS。\r\n\r\n而今天 AWS 推出了 SSD 的 EBS:「New SSD-Backed Elastic Block Storage」,價錢上當然就比傳統硬碟建立的 EBS 貴,但看起來是個可以接受的數字?\r\n\r\n另外傳統硬碟的 Provisioned IOPS volume 也降價了,約 35% off:\r\n\r\n
We are also announcing that we are reducing the price of IOPS for Provisioned IOPS volumes by 35%.
\r\n\r\n需要效能的應用又多了一項武器...", + "title": "AWS 推出 SSD EBS" + }, + { + "id": "4771", + "body": "DigitalOcean 宣佈新加坡機房 SGP1 支援 IPv6:「Announcing IPv6 Support in Singapore」。\r\n\r\n新加坡機房是第一個 DigitalOcean 機房可以上 IPv6 的原因是因為跑新版的架構 XDDD\r\n\r\n
SGP1 is the first datacenter to have IPv6 support because it is running v1.5 of our backend code base. The new version was completely rewritten from the ground up and provides many benefits over the current v1.0 code.
\r\n\r\n不過沒看到 IPv6 range,沒辦法測試... (我的 blog 是放在加州,目前還沒有 IPv6 可以玩...)", + "title": "DigitalOcean 新加坡機房支援 IPv6..." + }, + { + "id": "4776", + "body": "在 Slashdot 看到對 SSD 硬碟壽命的分析:「Endurance Experiment Writes One Petabyte To Six Consumer SSDs」。原文出自「The SSD Endurance Experiment: Casualties on the way to a petabyte」。\r\n\r\n測試的對象包括了:\r\n\r\n\r\n\r\n寫入 1PB 的資料後,看硬碟的壽命... 然後這三顆還活著:\r\n\r\n
That's an astounding total for consumer-grade drives, and the Corsair Neutron GTX, Samsung 840 Pro, and compressible Kingston HyperX 3K are still going!
\r\n\r\n很有趣的測試,不知道這是不是代表現在的 SSD 硬碟比較神猛了?\r\n\r\n這些測試都是消費級的 SSD,不知道伺服器用的又是如何 :o (想到之前拿去跑 MySQL 的好慘啊...)", + "title": "SSD 的壽命" + }, + { + "id": "4778", + "body": "在 AWS Web Console 上可以看到 EC2 的限制了:「Amazon EC2 Service Limits Report Now Available」。\r\n\r\n像是這樣:\r\n\r\n\"\"\r\n\r\n為什麼會看到一堆 0 的啊,另外一個公司的帳號反而看不到 c3.8xlarge...", + "title": "AWS Web Console 上可以看到 EC2 的限制了" + }, + { + "id": "4780", + "body": "Amazon Elastic Transcoder 支援將字幕壓進影片了:「Process Captions with Amazon Elastic Transcoder」。\r\n\r\n列出好多不同的字幕格式:\r\n\r\n\r\n\r\n只看過 SRT 格式...", + "title": "Amazon Elastic Transcoder 支援字幕" + }, + { + "id": "4782", + "body": "Percona 前幾天發表的新服務,Percona Backup Service:「MySQL Backup Service from Percona」。\r\n\r\n只提供人力服務,而非雲端服務:\r\n\r\n
You provide the backup servers – on premise, in the cloud, or any combination. We implement the tools and processes to run your backups.
\r\n\r\n你還是要自己準備備份的設備,所以資料都還是可以控制在自己的手上。這個服務是借重 Percona 的人對 MySQL 的專長所發展的服務。\r\n\r\n不過目前官網上沒有列出價錢,要寫信去問。\r\n\r\n另外文章裡有提到「MySQL Backup and Recovery Best Practices」這份投影片,可以看一看 Percona 對備份的規劃,主要是從技術的方面討論 (尤其是備份時產生的 LOCK 問題)。", + "title": "Percona 的 MySQL 備份服務" + }, + { + "id": "4784", + "body": "微軟透過媒體公司 (或是公關公司) 試著找 Blogger 寫 IE 相關的文章,不過這次找錯人而爆炸了:「Microsoft Paying Bloggers To Write About Internet Explorer」。\r\n\r\nMichael ArringtonTechCrunch 的共同創辦人,在公司被 AOL 併購後另外開了自己的 blog 來寫他自己對於科技業的種種看法。\r\n\r\n而他的 blog「Uncrunched」的最上方就是:\r\n\r\n\"\"\r\n\r\n馬上中大獎...", + "title": "微軟試著找 Blogger 寫 IE 相關的文章" + }, + { + "id": "4786", + "body": "OCSP (Online Certificate Status Protocol) 是用來檢查 SSL certificate 是否被撤銷的方法。OCSP server 接受 HTTP POST 後,回答 client 這個 SSL certificate 是否仍然有效。\r\n\r\n對於 client 來說,這主要有兩個問題:\r\n\r\n\r\n\r\n而對於 OCSP server 來說,這個方法的 scalability 很差,熱門的站台會產生大量的流量打進 OCSP server。\r\n\r\nOCSP stapling 則是解決這個問題的方法。藉由 server 向 OCSP server 要一次 OCSP response 後,直接傳回 OCSP response 給 client (通常是 browser) 避開了上面的問題。這個方法也逐漸在普及了:(取自英文版維基百科文章內的說明)\r\n\r\n
OCSP stapling has not seen broad deployment to date, however this is changing. The OpenSSL project included support in their 0.9.8g release with the assistance of a grant from the Mozilla Foundation.\r\n\r\nApache HTTP Server supports OCSP stapling since version 2.3.3, the nginx web server since version 1.3.7, and LiteSpeed Web Server since version 4.2.4. and Microsoft's IIS since Windows Server 2008\r\n\r\nOn the browser side, OCSP stapling was implemented in Firefox 26 and in Internet Explorer since Windows Vista.
\r\n\r\n所以已經有不少 client 與 server 都支援了...", + "title": "OCSP stapling" + }, + { + "id": "4789", + "body": "前幾天 AWS 推出 EBS-SSD (參考「AWS 推出 SSD EBS」),然後今天看到「EBS-SSD Boot AMIs For Ubuntu On Amazon EC2」。\r\n\r\nCanonical 正式的說明在「[ubuntu-cloud] Amazon SSD backed EBS volumes」這邊可以看到,而「Amazon EC2 AMI Locator」上也新增了 EBS-SSD 的部份。", + "title": "用 EBS-SSD 開機的 Ubuntu" + }, + { + "id": "4791", + "body": "在 2014/06/20 的 Hacker News Daily 上看到尺規作圖的遊戲:「Euclid: The Game」。\r\n\r\n很腦力激盪... XD", + "title": "尺規作圖的遊戲..." + }, + { + "id": "4793", + "body": "Google 也跳下去 fork 一個 OpenSSL 出來了,這次的主力是放在 Android 以及 Chrome 上:「BoringSSL」。\r\n\r\nBoringSSL 是暫時性的名稱,不過在「boringssl - Git at Google」這邊已經用這個名稱了...\r\n\r\n另外一個重要的說明是 license 的部份:\r\n\r\n
We have already relicensed some of our prior contributions to OpenSSL under an ISC license at their request and completely new code that we write will also be so licensed.
\r\n\r\n將會改用 ISC license。", + "title": "Google 也 fork 一個 OpenSSL 出來了... (BoringSSL?)" + }, + { + "id": "4795", + "body": "欠了很久的雜記。既然是雜記,只是把一些事情記錄下來,許多句子的主題會跳來跳去,請多見諒。\r\n\r\n先解釋標題的三個詞彙。這邊要講的是三種存取資料的方式:\r\n\r\n\r\n\r\n彈性最高、效能也最好的是直接的資料存取,但寫起來也最複雜;而 ORM 大致上就是反過來。\r\n\r\n現代的 RDBMS 大多都有實做 ACID,在自己操作資料結構時考慮這塊會比較辛苦。兩個層級之間有一些 library 試著解決這個問題 (像是 BerkeleyDB 或是 LevelDB),不過這篇文章暫時跳過。\r\n\r\nMySQL 與其他的 RDBMS 比較起來欠了許多東西,但 High Availability 的成熟度以及效能而成為 open source 的第一選項。而也因為許多人使用,大家都知道 MySQL 的先天限制,也有許多 workaround 出現,所以大多數的狀況下這不是問題。\r\n\r\nMySQL 的 InnoDB 其實寫的相當不錯,但 MySQL 的 SQL parser 一直都是 MySQL 的痛處,所以許多人使用 MySQL 時會儘量使用 simple query,而 ORM 的特性剛好可以搭上風。\r\n\r\n使用 ORM 時最常見要避免的是 N+1 的問題,其他常見到的問題大多都不是 ORM 專有的。\r\n\r\n先整理到這邊。", + "title": "資料結構、RDBMS、ORM" + }, + { + "id": "4797", + "body": "在「Realtime map of lightning strikes」這邊提到了「Blitzortung.org – lightning map USA, Canada – thunderstorms and lightning strikes」這個即時的雷擊統計計畫。\r\n\r\n\"\"\r\n\r\n目前只有北美、歐洲以及澳洲有偵測器,亞洲是沒有偵測資料的... 看起來這個計畫已經好幾年了。", + "title": "即時雷擊資訊" + }, + { + "id": "4799", + "body": "第一次看到,記錄起來...\r\n\r\n\"\"", + "title": "StackOverflow 的 Offline 畫面" + }, + { + "id": "4801", + "body": "Percona 的「Getting to know TokuDB for MySQL」這篇文章雖然標題是想要宣傳 TokuDB,但其實把 MySQL 的歷史也講了一遍...\r\n\r\n前面講到 InnoDB 的崛起時,就有提到就算你不使用 InnoDB 提供的 transaction,他的 crash-safe 性質也仍然是許多人選用 InnoDB 的重要因素之一:\r\n\r\n
Even those that don’t really need transactions rejoice in the crash resistance strength of InnoDB.
\r\n\r\n後面提到 TokuDB 時當然都會提到 Fractal Tree Indexes 這個資料結構對於現代硬體設備的優點。而英文版維基百科在今年三月時總算建立了 Fractal tree index 這個條目,整理的還算完整,之前是去看投影片了解這個資料結構的特性...\r\n\r\nPercona 目前對 TokuDB 的等級是放在 beta 版,等 GA 後再來完整的測過一次,另外也想要測能不能在同一個 transaction 內使用 InnoDB table & TokuDB table,這對 zero-downtime migration 還蠻重要的,如果不可行的話工程就比較大了...", + "title": "Percona 講 TokuDB" + }, + { + "id": "4803", + "body": "任天堂自己出了「Mario Maker for Wii U - Nintendo @ E3」這個東西,這跟本就是要大家做孔明的陷阱?\r\n\r\n請參考「孔明の罠(こうめいのわな)/Komei's Trap」這個條目,以及這條目下的「Nico之連結(需註冊)」這邊的影片連結。在 YouTube 上找「孔明的陷阱」也有不少影片,像是:\r\n\r\n\r\n\r\n官方自己生了一個編輯器後可以想像 XD", + "title": "孔明的陷阱,官方版?" + }, + { + "id": "4806", + "body": "GoogleDavid Crawshaw 提出了「Go support for Android」的計畫。\r\n\r\n提案中是希望 Go 1.4 可以開始支援:\r\n\r\n
During the Go 1.4 cycle, GOOS=android will be introduced to the Go repository, along with cgo support on Android (contributed by Elias Naur). Dalvik/ART-loadable .so files will be produced using the external linker provided in the Android NDK.
\r\n\r\n不確定 Go 目前的運作方式是怎麼樣 (i.e. Google 的影響力到底有多少),前幾天才出 1.3:「Go 1.3 is released」,1.4 應該還有一段時間才有機會看到。", + "title": "Go 對 Android 的支援" + }, + { + "id": "4813", + "body": "在「WebIDE Lands in Nightly」這邊看到 Firefox 將 WebIDE 整合進 Nightly 版本,代表之後的幾個版本後就會變成正式版...\r\n\r\n從開頭這段:\r\n\r\n
Editor’s note: if you want to help test it on a recent nightly you can toggle the devtools.webide.enabled preference in about:config. The WebIDE is available today under Tools>Web Developer>App Manager and will be renamed in tomorrow’s Nightly into WebIDE.
\r\n\r\n以及一些截圖資訊:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n都可以看出來是跟 html5 app 的開發有關。\r\n\r\n找資料的時候發現國內有人報導過了:「Firefox變身HTML5全功能IDE 光用瀏覽器就能開發各平臺App」,這邊就不再介紹太多。\r\n\r\n比較想要知道的還是決策的部份是怎麼想的:綁到 Firefox 預設環境裡面,而非用 extension 方式安裝...?", + "title": "Firefox 的 WebIDE" + }, + { + "id": "4817", + "body": "這幾天 blog 常常出現 504,連到機器上發現 MySQL 很忙,才發現是舊站 spam 的量太大的問題造成的,把舊站的 comment 關掉後就好不少,現在看機器的 CPU loading 應該是正常多了。\r\n\r\n新站已經是用 DISQUS 所以比較沒有 comment spam 的問題。舊站那邊除了關掉 comment 外,另外直接進 MySQL 把 2006 年之後的 comment 都丟到 pending 裡面去。(因為 2005 年 8 月後就沒更新舊站了)\r\n\r\n來研究看看要怎麼把舊的 comment 丟進 Akismet...\r\n\r\nUpdate:發現只要按下 Check for Spam 的按鈕就會把目前 Pending comments 都丟去 Akismet 掃,先丟著 :p", + "title": "把舊站的 comment 關掉..." + }, + { + "id": "4819", + "body": "Amazon CloudFront 新增了 Whitelist Header 的功能:「Deliver Custom Content With CloudFront」。\r\n\r\n如同在 post 裡說明的:\r\n\r\n
If you choose the Whitelist option, each header that you add to the list becomes part of the cache key for the URLs associated with the distribution.
\r\n\r\n有點像是 HTTP 協定裡 Vary 想要解決的問題,只是做在 CDN 這端。這個功能蠻多 CDN 都有,AWS 總算補上了...\r\n\r\n這次除了可以針對 custom HTTP header 處理外,CloudFront 還做了不少事情:\r\n\r\n\r\n\r\n前兩項還蠻有意義的,這代表會有人幫你更新資料。而 CloudFront 總算是支援 CORS 了...", + "title": "Amazon CloudFront 的新增功能" + }, + { + "id": "4825", + "body": "在「Cloud guru Adrian Cockcroft on Netflix, Amazon, Google, and DigitalOcean」這篇裡面提到 Netflix 現在不僅使用 AWS,還使用了 GCE:\r\n\r\n
The company’s services are now all hosted in the public cloud, but not just in AWS. Netflix is also using Google Compute Engine.
\r\n\r\n不算是很意外... 畢竟有那個 scale 與實力。", + "title": "Netflix 不僅使用 AWS,還使用了 GCE..." + }, + { + "id": "4827", + "body": "\"\"\r\n\r\n原始程式碼在「Wolf128.asm」這邊,依照說明,是跑在 Windows XP SP3 + DOSBox。在「Dissecting the 128-byte raycaster」這邊的「Assembly code analysis」這段有程式碼的解說。\r\n\r\n\r\n\r\n如同引用的文章一開始說的,這結合了滑鼠控制、材質貼圖、Ray casting 以及動畫效果的程式,而只有 128bytes!\r\n\r\n我上面這一段文字用 UTF-8 表示都已經超過 128bytes 了... ~_~", + "title": "128bytes 組合語言的 3D 綜合展示..." + }, + { + "id": "4830", + "body": "看到「MondoHub: 28 USB Ports & One Hub To Rule Them All」:\r\n\r\n\"\"\r\n\r\n瞬間有種「沃槽這什麼鬼東西」...\r\n\r\n28 Port 是 24 個 USB 2.0 以及 4 個 USB 3.0:\r\n\r\n
The 28-Port MondoHub features 24 USB 2.0 ports and 4 USB 3.0 ports to give you ample space to charge your devices.
\r\n\r\n這實在太有趣了 XD", + "title": "28 Port 的 USB Hub..." + }, + { + "id": "4833", + "body": "在「Amazon Elastic Transcoder: Review」這邊比較了 Amazon Elastic TranscoderZencoder 兩個服務。\r\n\r\n結論在一開頭就先提出來了:\r\n\r\n
For broadcasters and high-volume producers, Amazon's Elastic Transcoder has too many limitations. For everyone else, it's an appealing, if flawed, solution.
\r\n\r\n就轉出來的品質來說,作者認為沒什麼差異:\r\n\r\n\"\"\r\n\r\n但就速度來說,Amazon Elastic Transcoder 的速度偏慢:\r\n\r\n\"\"\r\n\r\n另外作者在文末也給了不少負面評價... 記錄起來以後應該用的到 :o", + "title": "Amazon Elastic Transcoder 與 Zencoder 的比較" + }, + { + "id": "4835", + "body": "\"\"\r\n\r\nMike Bostock (D3.js 的創始人之一) 在 Eyeo 2014 上展現了要如何將演算法視覺化表現出來:「Visualizing Algorithms」。\r\n\r\n既然是對演算法的展示,當然也都伴隨著對資料的處理。每一個圖形表示都有 D3.js 的 sample code 告訴你怎麼產生的。\r\n\r\n與其他看到的 D3.js 範例不同,他給出來的範例可以感覺到「樸實無華」的壓迫感。文章開頭用梵谷「隆河上的星夜」也很配合整篇文章的風格。\r\n\r\n有玩 D3.js 或是對資料視覺化的人有興趣或是有研究的人都應該去看他怎麼表現「動作」(演算法) 的部份。", + "title": "Mike Bostock 的 Visualizing Algorithms" + }, + { + "id": "4837", + "body": "在「The problem behind mobile TOR browsers' ip disclosure」測了四個行動平台的 Tor 瀏覽器,其中三個是 Android 上的,一個是 iOS 的。\r\n\r\n四個瀏覽器測試的結果中,只有 iOS 上的 Onion Browser (要 USD$0.99) 可以在修改設定後達到最低限度「隱藏 real ip」的標準:\r\n\r\n\"\"\r\n\r\n作者的建議是不要在行動平台上有太多期望,隱藏 real ip 只是其中一個環節...", + "title": "行動平台上的 Tor browser" + }, + { + "id": "4839", + "body": "InstagramInstagram Engineering Blog 上宣佈的消息:「Migrating From AWS to FB」。\r\n\r\n整個 migration 的過程是採取不停機轉移,所以 effort 比直接停機轉移高很多:\r\n\r\n
The main blocker to this easy migration was that Facebook’s private IP space conflicts with that of EC2. We had but one route: migrate to Amazon’s Virtual Private Cloud (VPC) first, followed by a subsequent migration to Facebook using Amazon Direct Connect. Amazon’s VPC offered the addressing flexibility necessary to avoid conflicts with Facebook’s private network.
\r\n\r\n先把整個系統轉移到 Amazon VPC 裡,然後再拉 AWS Direct Connect 串起來,接下來才是慢慢把 instance 轉移到 Facebook 的機房內。\r\n\r\n中間也有一些工作:\r\n\r\n
To provide portability for our provisioning tools, all of the Instagram-specific software now runs inside of a Linux Container (LXC) on the servers in Facebook’s data centers.
\r\n\r\n所以已經導入 LXC 了...", + "title": "Instagram 從 AWS 搬到 Facebook 機房" + }, + { + "id": "4841", + "body": "在「Optimizing NGINX TLS Time To First Byte (TTTFB)」這篇文章裡在討論要如何讓 nginx 的 TLS Time to First Byte (TTTFB) 盡可能短。\r\n\r\n可以看到文章裡面用到兩個方法,一個是修改 nginx 的程式碼縮小 TLS record size。我對是覺得頗危險,尤其是作者的改法不知道有什麼 side-effect... (要注意 nginx 裡面直接拿 NGX_SSL_BUFSIZEBIO_set_write_buffer_size 使用,這代表有可能還有其他的地方也是這樣搞?)\r\n\r\n第二個方法是開啟 TLS False Start,目前主流的瀏覽器都陸陸續續支援了。\r\n\r\n這是文章作者的測試:\r\n\r\n\"\"\r\n\r\n可以看到時間減少的相當多。\r\n\r\n現在是期望作者這篇文章的測試可以讓 patch 合併回 mainstream 後再用,這樣有比較多人 audit...", + "title": "最佳化 nginx 的 TLS Time to First Byte (TTTFB)" + }, + { + "id": "4845", + "body": "Amazon EC2 增加了新的 T2 instance:「New Low Cost EC2 Instances with Burstable Performance」。\r\n\r\n\"\"\r\n\r\nT2 系列出了三個等級:t2.micro (1GB)、t2.small (2GB)、t2.medium (4GB)。以 us-east-1 的 t2.micro 價錢來看,只貴 t1.micro 一點點 (USD$0.012/hour 與 USD$0.013/hour),但記憶體大了不少 (640MB 與 1GB)。\r\n\r\n另外推出了 CPU Credits 這種計算方式,可以累計 24 小時的 CPU Credits。我在想,AWS 能夠推出這個機制,是已經做到像是 VMware 的 vMotion 之類的不停機遷移嗎?對於在 10Gbps 的 1GB RAM 上的確是不用一秒鐘就可以傳完 RAM 的內容...\r\n\r\nCPU Credits 這個機制跟 auto scaling 解決問題的方向有點不太一樣,但也是還不錯的方法... 拿來打組合拳應該還不錯 :p\r\n\r\n另外一個比較特別的是在文末有提到對 m1.small 與 m1.medium 的想法。t2.{small,medium} 被認為是 m1.{small,medium} 的接班人 (之一?):\r\n\r\n
\r\n\r\n其中 m3.medium 之前是被認為是 m1.medium 的接班人,看起來雖然都是 General Purpose,但打算多分幾種不同的應用來滿足需求。", + "title": "Amazon EC2 增加 T2 instance" + }, + { + "id": "4847", + "body": "剛剛看到 Percona 發佈的消息:「Percona Server 5.6.19-67.0 with TokuDB (GA) now available」。\r\n\r\n好快...\r\n\r\n可以來測試 DRBD + Heartbeat 配上 TokuDB 的穩定性如何了,另外也要與 InnoDB 比較優缺點...\r\n\r\n然後要查一個 transaction 內是否可以 InnoDB 與 TokuDB 混用。", + "title": "Percona Server 的 TokuDB 居然 GA 了..." + }, + { + "id": "4851", + "body": "jQuery 官方希望大家不要再使用 jquery-latest.js 了:「Don’t Use jquery-latest.js」。\r\n\r\n由於他們發現有大量的網站使用 jquery-latest.js,如果直接照著字面上的意思升級到 2.0,會造成這些網站在 IE{6,7,8} 上爛掉:\r\n\r\n
To mitigate the risk of “breaking the web”, the jQuery team decided back in 2013 that jquery-latest.js could not be upgraded to the 2.0 branch even though that is technically the latest version. There would just be too many sites that would mysteriously stop working with older versions of Internet Explorer, and many of those sites may not be maintained today.
\r\n\r\n所以官方已經決定將這個檔案鎖定在 1.11.1 版:\r\n\r\n
As jQuery adoption has continued to grow, even that safeguard seems insufficient to protect against careless use of http://code.jquery.com/jquery-latest.js. So we have decided to stop updating this file, as well as the minified copy, keeping both files at version 1.11.1 forever. The latest released version is always available through either the jQuery core download page or the CDN home page. Developers can download the latest version from one of those pages or reference it in a script tag directly from the jQuery CDN by version number.
\r\n\r\n同時,這個決策得到 Google CDN team 的支持,所以 Google CDN 上的 http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js 也將鎖在 1.11.1:\r\n\r\n
The Google CDN team has joined us in this effort to prevent inadvertent web breakage and no longer updates the file at http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js. That file will stay locked at version 1.11.1 as well. However, note that this file currently has a very short cache time, which means you’re losing the performance benefit of of a long cache time that the CDN provides when you request a full version like 1.11.1 instead.
\r\n\r\n同時官方也再三宣導,請不要用 jquery-latest.js 了,應該在使用時指定版本號碼。\r\n\r\n這個決策算是一種 workaround,避免全世界一堆網站爛掉...", + "title": "關於 jquery-latest.js..." + }, + { + "id": "4854", + "body": "昨天 AWS 推出的新功能,讓 IAM 帳號可以使用 AWS Billing Console:「Additional IAM Support in the AWS Billing Console」。\r\n\r\n這樣每個月報帳的時候就可以用 IAM 帳號登入進去看,而非用母帳號...\r\n\r\n多了六個權限設定:{View,Modify}{Billing,Account,PaymentMethods},這六個權限都跟帳戶與帳務有關。", + "title": "IAM 帳號總算可以管理帳務了..." + }, + { + "id": "4856", + "body": "Google 昨天發出的公告,發現 NIC of India 發出了幾張 Google 網域的 SSL 憑證:「Maintaining digital certificate security」。\r\n\r\nNIC of India 所取得的憑證權限是 India CCA 所發出的 Intermediate CA 權限。而目前 India CCA 只在 Microsoft Root Store 上面有使用,所以會受到影響的範圍是 Windows 上的 IE 以及應用程式,而因為 Google Chrome 有白名單保護,至少在 Google 的網域裡面是不受到直接傷害...\r\n\r\n事情還在調查 (還在戳湯圓?),歷史總是不斷地重演...", + "title": "NIC of India 簽發 Google 的 certificate" + }, + { + "id": "4859", + "body": "GoogleAdam Langley 在他的 blog 上提出了一個很特別的想法,是不是把現在這些新增加的 TLD 都預先在瀏覽器裡納入 HSTS:「HSTS for new TLDs」。\r\n\r\n
Here's an idea: why not ask me to set HSTS for the entire TLD? That way, every single site runs over HTTPS, always. It strikes me that could be useful if you're trying to build trust with users unfamiliar with the zoo of new domains.
\r\n\r\n只要任何一個比較大的 browser 這樣做,其實就相當於強制要求?看文章內的語氣,Firefox + Google Chrome 看起來會是可能會參與的單位?", + "title": "如果新的 TLD 都強制要求使用 HTTPS (HSTS)?" + }, + { + "id": "4861", + "body": "Route 53CloudFront 在澳洲啟用第二個機房,墨爾本:「New Location for CloudFront and Route 53 - Melbourne, Australia」。\r\n\r\n用 Google Maps 拉發現墨爾本與雪梨之間的直線距離大約七百公里,的確是應該多拉個點...", + "title": "CloudFront 與 Route53 在澳洲多了墨爾本機房" + }, + { + "id": "4863", + "body": "GitHub 宣佈接受 PayPal 付款,不過不是直接接 PayPal 的 API,而是透過 Braintree 提供的 API:「Pay for GitHub with PayPal」。\r\n\r\n\"\"\r\nGitHub 官方提供的 screenshot\r\n\r\n雖然 PayPal 的風評大家都知道,但如果要支援 PayPal 最直接的方式還是接 PayPal API... 不直接使用 PayPal API 而要透過其他 API 的原因...?", + "title": "GitHub 也接受 PayPal 付款了,不過不是直接接 PayPal..." + }, + { + "id": "4865", + "body": "在清 n 天前的 Hacker News Daily 時看到的:「Cost of Living」。\r\n\r\n以舊金山與台北來比較:「Cost of living comparison between San Francisco, United States and Taipei, Taiwan」。\r\n\r\n還... 蠻有趣的網站?", + "title": "計算不同城市的生活開銷" + }, + { + "id": "4867", + "body": "這邊的 BLOB field 指的包括 VARCHAR、VARBINARY、BLOB、TEXT 這些常常被拿來放大物件的類型:「Externally Stored Fields in InnoDB」。\r\n\r\n\"\"\r\n\r\n這跟 InnoDB 存放的格式 (ROW_FORMAT) 也有關,對於不同的格式都需要分開討論。\r\n\r\n看之前需要帶一些背景知識,像是 Database index 裡面講到 index 種類時所提到的 Clustered。\r\n\r\n看完後對 MySQL InnoDB 的運作方式會更了解一些,對於規劃 schema 也加減有些幫助。", + "title": "InnoDB 的 BLOB field 存放的方式" + }, + { + "id": "4869", + "body": "AdobeGoogle 合作推出了 CJK 字型:「隆重介紹 思源黑體:開放原始碼 Pan-CJK 字型」、「Noto: A CJK Font That is Complete, Beautiful and Right for Your Language and Region」。\r\n\r\n這些字體在 Adobe 與 Google 會叫做不同的名稱:\r\n\r\n
Google will release it as Noto Sans CJK as part of Google's Noto font family. Adobe will release it as Source Han Sans as a part of Adobe's Source family.
\r\n\r\n字體是由 Adobe 的西塚涼子所開發,而 Adobe 也擁有字型的著作權,並以 Apache License 2.0 放出來。\r\n\r\n而 Google 也有說明這些字型參與的過程:\r\n\r\n
Google contributed significant input into project direction, helped to define requirements, provided in-country testing resources and expertise, and provided funding that made this project possible.
\r\n\r\n而 Adobe 的部份:\r\n\r\n
Adobe brought strong design and technical prowess to the table, along with proven in-country type design experience, massive coordination, and automation.
\r\n\r\n另外還有幾家公司一起參與:\r\n\r\n
In addition, three leading East Asian type foundries were also brought in to design and draw a bulk of the glyphs—Changzhou SinoType Technology, Iwata Corporation, and Sandoll Communication—due to the sheer size of the project and their local expertise.
\r\n\r\n字體可以在 Google Noto Fonts 裡直接下載取得。\r\n\r\n切過去用以後還是有點不太習慣,不過目前第一印象還算不錯...", + "title": "Adobe 與 Google 共同推出 CJK 字型" + }, + { + "id": "4871", + "body": "DigitalOcean 宣佈了倫敦機房 (代號 LON1):「Introducing Our London Region (LON1)」。\r\n\r\n這是歐洲的第二個地區,第一個是荷蘭 Amsterdam。\r\n\r\n雖然官方沒有說,但 routing 的部份可以用 speedtest-lon1.digitalocean.com 測試。看起來初期的 routing 都還沒有 tune 好 XD\r\n\r\n從加州的 DigitalOcean 機房測試,發現會走 NTT 的線路,先走到 NTT 在 Amsterdam 的點再到英國 (喂喂)。", + "title": "DigitalOcean 倫敦機房" + }, + { + "id": "4878", + "body": "在「When Security Generates Insecurity」這篇文章裡,介紹了如何利用 Content-Security-Policy 攻擊網站。\r\n\r\n首先,我想要知道是不是有登入 Facebook 或是 Google:\r\n\r\n
Interest piqued by the report-uri feature, I looked into abusing it to glean information about user state, my idea was this: when a user is not logged into Google Calendar, accessing calendar.google.com redirects them to accounts.google.com via a Location header. If I whitelisted calendar.google.com but not accounts.google.com, accessing that resource within my web page would break CSP, subsequently sending me a message telling me whether they were logged into Google.
\r\n\r\n也就是說,利用 CSP 的 report-uri 以及重導的特性,可以分辨出使用者是否有登入。以 Facebook 以及 Google 的例子:\r\n\r\n
The implementation was like this: I had a single image on the page <img src=\"http://calendar.google.com\"/>, and I sent the Content-Security-Policy header Content-Security-Policy: image-src calendar.google.com. The test was a success, I was able to detect login on Google. The same extended to Facebook; apps.facebook.com would redirect to www.facebook.com only if the user was logged in.
\r\n\r\n另外,由於實務上可以偵測 path,所以可以去「猜測」使用者是不是某個特定的人,在文章裡假設的是美國總統 Barack Obama:\r\n\r\n
By using CSP to whitelist facebook.com/me and facebook.com/barackobama and embedding http://facebook.com/me as an image, I can conditionally create a CSP report only if the current user on Facebook is not Barack Obama.
\r\n\r\n很有趣的安全性問題...", + "title": "用 Content-Security-Policy 攻擊" + }, + { + "id": "4881", + "body": "現在新的 malware 或是 botnet 為了避免被 IDS/IPS 之類的設備抓包,大多都使用 SSL 連線傳遞資料在技術上躲避偵測。\r\n\r\n而為了因應新型態的 malware 與 botnet,就有人想到去建立 SSL certificate SHA-1 的資料庫來偵測:「SSL Black List Aims to Publicize Certificates Associated With Malware」,也就是「SSL Blacklist」這個服務。\r\n\r\n不過這應該會再演變成透過 malware 與 botnet 改用 PKI 架構而變成要偵測 CA 簽名的部份?還可以想出一些變形...", + "title": "SSL Blacklist" + }, + { + "id": "4883", + "body": "\"\"\r\nNoto 的逗點問題。\r\n\r\nPlurk 上查到的 http://www.plurk.com/p/k7pya8 (pingooo),在 GitHub 上已經修正,也就是下一個版本就會更新:「The `U+FF0C FULLWIDTH COMMA` (,) is visually unaligned in Source Han Sans TWHK」。", + "title": "Noto 的逗點問題" + }, + { + "id": "4885", + "body": "在 OSNew 上看到為什麼 Outlook 裡 Ctrl-F 不是 find 的原因:「Why does Outlook map Ctrl+F to forward instead of find?」。\r\n\r\n先引用這句話:\r\n\r\n
Before clicking the link to go to the full story, try to guess the answer. I'm pretty sure you're going to be wrong.
\r\n\r\n原文在「Why does Outlook map Ctrl+F to Forward instead of Find, like all right-thinking programs?」這邊,1995 年發生的事情。", + "title": "Outlook 裡 Ctrl-F 的設計" + }, + { + "id": "4887", + "body": "然後從裡面拉出四萬張照片:「Tens of thousands of Americans sell themselves online every day」。\r\n\r\n
We purchased 20 used Android phones off eBay and used simple and easily available recovery software to restore deleted files.
\r\n\r\n雖然文章是在推銷 avastAndroid 清除軟體,但還是顯示出一般人對資安上的熟悉度不足。", + "title": "avast 的人從網路上買了二十台智慧型手機..." + }, + { + "id": "4889", + "body": "\"\"\r\n\r\n基地台的密度比氣象站以及雷達的密度高很多,於是就有人想用基地台的訊號衰減資料來監控氣象:「New Technology Uses Cellular Towers For Super-Accurate Weather Measurements」。原文在「Cellular towers in the service of meteorology」這邊。\r\n\r\n很好玩的方法,一個城市裡面有上百上千隻基地台,用這些資料來分析 XD", + "title": "用基地台的訊號監控天氣" + }, + { + "id": "4891", + "body": "othree 前天已經寫過:「mozjpeg 2.0」,不過因為這類性的研究其實對全世界幫助頗大,所以就再提一次...\r\n\r\n原文在「Mozilla Advances JPEG Encoding with mozjpeg 2.0」這邊,主要的成果:\r\n\r\n
With today’s release, mozjpeg 2.0 can reduce file sizes for both baseline and progressive JPEGs by 5% on average compared to those produced by libjpeg-turbo, the standard JPEG library upon which mozjpeg is based [1]. Many images will see further reductions.
\r\n\r\n文章內也出現了一些關鍵字:\r\n\r\n
We’ve added options to specifically tune for PSNR, PSNR-HVS-M, SSIM, and MS-SSIM metrics.
\r\n\r\nPSNR 是最常聽到的,其他幾個 keyword 剛好可以拿來當 entry point。在「Video quality」這邊的 See also 部份也有不少 keyword 可以查...", + "title": "Mozilla 推出 mozjpeg 2.0" + }, + { + "id": "4893", + "body": "看到「Tools of The Trade, from Hacker News.」這個,把各種只要跟 Hacker News 有關的工具都列出來了。\r\n\r\n已經用了某個工具,要找同質性的替代方案也可以在這邊找... 太過基礎的就只列出來而不會解釋了,像是「Google Analytics」XD", + "title": "Hacker News 上所推薦的各種工具" + }, + { + "id": "4898", + "body": "Elastic Load Balancing 之前的 timeout 時間是預設值 60 秒,現在可以自訂時間了:「Elastic Load Balancing Connection Timeout Management」。\r\n\r\n\"\"\r\n\r\n文章裡有提到好處:\r\n\r\n
Some applications can benefit from a longer timeout because they create a connection and leave it open for polling or extended sessions. Other applications tend to have short, non- recurring requests to AWS and the open connection will hardly ever end up being reused.
\r\n\r\n目前可以設定 1 秒到 3600 秒,預設值是 60 秒。", + "title": "AWS 的 ELB 可以自訂 HTTP/HTTPS Timeout 時間了" + }, + { + "id": "4900", + "body": "沒記錯的話,Mobile01 應該是去年暑假左右從 MyISAM 換成 InnoDB 的?一切的起頭應該是蔣大「現在SSD硬碟可以拿來跑資料庫嗎?」這篇。\r\n\r\n\r\n\r\n另外同場加映,使用 Percona 的工具讓管理上更方便:\r\n\r\n\r\n\r\nMyISAM 是 MySQL 5.0 與 5.1 預設的 storage engine (到 5.5+ 預設的 storage engine 改成 InnoDB),讀取的效能相當好,但總是有些問題。\r\n\r\n當時剛好有機會跟蔣大與 Ryan 聊到當時 Mobile01 遇到的問題,問了一些細節後感覺上是 MyISAM 的問題,就提了 MyISAM 與 InnoDB 的優缺點比較,以及幾個 InnoDB 的 High Availability 的解決方案 (晚上就算設備出問題也不用擔心要爬起來救機器):\r\n\r\n\r\n\r\n這兩點是當時 Mobile01 遇到最痛的問題:用 iostat 看起來 I/O 明明就沒有滿,但就是會卡 SQL query,而當機後修資料庫的時間又很長。\r\n\r\n一個是已經在業界驗證很久的解決方案 XFS + DRBD + Heartbeat,當機器發生問題時的 downtime 從 30secs 到五分鐘 (依照資料性質與大小而有差異,在切換上線後有資料庫的熱機問題)。\r\n\r\n另外一個是當時還很新的 Percona XtraDB Cluster,可以避免資料庫的熱機問題,不過技術很新。\r\n\r\n後來 Mobile01 用 RAID 10 的硬體,軟體的部份用 Debian + XFS + DRBD + Heartbeat 跑 Percona Server 的 XtraDB (InnoDB 的加強版),先用 VM 做了 PoC (直接砍掉 mysqld,或是直接關掉 VM 之類的,測試整個機制夠不夠自動化),然後就上線了 :p\r\n\r\n記得上線那幾天跟 Ryan 聊,好像效果還不錯吧...", + "title": "Mobile01 的 Ryan 換 InnoDB 的筆記與心得" + }, + { + "id": "4906", + "body": "在「Send PSR-0 to the Standards Farm in the Sky」這篇文章裡作者大聲呼籲用 PSR-4 取代 PSR-0。\r\n\r\n不過 PSR-0 在 Packagist 上被廣泛使用:\r\n\r\n
As of some time a few months ago (...), of the 20,097 packages hosted on Composer, 15,668 of them use PSR-0.
\r\n\r\nPSR-0 的設計是考慮到 PHP 5.2 沒有 namespace 時所留下來的特性 (以底線為主的切割方式),在 PHP 5.5 都已經出版,而且 PHP 5.2 已經 EoL 的時候顯得有點多餘。\r\n\r\n作者提議在 PSR-0 的文件開頭加上:\r\n\r\n
Deprecated - As of 2014-12-30 PSR-0 has been marked as deprecated. PSR-4 is now recommended as an alternative.
\r\n\r\n不過 PSR-0 的專案應該還是會跑很久?", + "title": "PSR-0 轉換到 PSR-4" + }, + { + "id": "4908", + "body": "在 Nomad PHP EU 上的議程:「Composer: Stability and Semantic Versioning Demystified」,講 Semantic VersioningComposer 上的應用。\r\n\r\n\r\n\r\n投影片還講到了 Composer 處理版本需求互相重疊時的情況,可能會有 conflict 的問題...", + "title": "Semantic Versioning 與 Composer 的應用" + }, + { + "id": "4910", + "body": "去年年底參加 Spark Summit 時有用 Caltrain 當作交通工具回飯店,好像是搭到末班車... (或者說是接近末班車?有點忘了...)\r\n\r\nFleet 的服務則是填補 Caltrain 減班或是休息的時候,用小型車在 Caltrain 的幾個大站提供服務:\r\n\r\n
Ride with friends, or meet other cool people on the way; we drive in a car, van, or shuttle seating 5 to 15 people.
\r\n\r\n
Our shuttles run between 8 PM and 5 AM everyday, with 5 southbound departures, and 5 northbound departures.
\r\n\r\n另外主打比 Uber 便宜許多:\r\n\r\n
We are also ~2-4X cheaper than Uber and other ridesharing alternatives.
\r\n\r\n還蠻有趣的嘗試,不知道成效如何...", + "title": "填補 Caltrain 營運空缺的 Fleet" + }, + { + "id": "4912", + "body": "在「GitHub's CSS」這篇裡面講了很多 GitHub 設計的工具,以及評估的方式。\r\n\r\n原文有提到 IE9 以及之前的版本中,單檔有 4095 selector 的限制,這點讓人稍微怔了一下:\r\n\r\n
The split was added years ago to solve the problem of Internet Explorer’s 4,095 selectors per file limit.
\r\n\r\n超過的要切割讀入...\r\n\r\n另外在文中有提到 2012 年的投影片「GitHub's CSS Performance」吸引我的目光:\r\n\r\n\r\n\r\n針對 diff 頁面大量元素時的 CSS 效能分析,除了各種 browser 裡 index id & class & tag 的方式外,另外還有不少為了加速而直接修改 HTML 的建議 XDDD", + "title": "GitHub 的 CSS 設計" + }, + { + "id": "4914", + "body": "Oracle 的梶山隆輔在 COSCUP 2014 的投影片:「MySQL Performance Tuning at COSCUP 2014」:\r\n\r\n\r\n\r\n推薦的主力在 MySQL 5.6,這點 Percona 的人也已經宣傳過很多次了:\r\n\r\n\"\"\r\n\r\nMySQL 5.6 的改善很大,尤其是針對 InnoDB 相關的改善。在 MySQL 5.5 上還會有 CPU 吃不滿的情況,在 MySQL 5.6 好很多。", + "title": "Oracle 在 COSCUP 2014 上對 MySQL 效能調整的投影片" + }, + { + "id": "4917", + "body": "HHVM 的人決定起草將 PHP 這個程式語言的規格定義出來:「Announcing a specification for PHP」。\r\n\r\n文件可以在「Specification for PHP」這邊看到,不知道後續會有什麼進展?", + "title": "PHP 語言的定義" + }, + { + "id": "4919", + "body": "Amazon Route 53 的大改版:「Route 53 Update - Domain Name Registration, Geo Routing, and a Price Reduction」。\r\n\r\n首先是可以註冊 domain,除了 web console 外,還可以透過 API 註冊:「Actions on Domain Registrations」。\r\n\r\n看起來 privacy protection 的部份是跟 Gandi 合作:\r\n\r\n
Turns privacy protection on or off for the domain, determining whether WHOIS queries return contact information specified in the registrar record. If privacy protection is enabled, the query returns contact information for our registrar partner, Gandi, instead of the contact information that is specified in the registrar record.
\r\n\r\n沒看到可以註冊的 tld 的 API,但是網站 web console 連進去可以看到其實相當多... (不過目前沒看到 .tw)\r\n\r\n另外一個大功能是 Geo Routing,可以選擇洲別,或是地區別。不過「美國本土」(海外的部份有另外分區) 與「中國」這兩個網路大國都各只有一區,而不是把再依照各州或各省細分... (有不少 CDN 所提供的 DNS 服務是把美國依照各州列出設定...)\r\n\r\n但至少補上了這一塊,這樣可以用 Route53 配合 multi-CDN 的機制,而不需要自己刻了...\r\n\r\n然後最後是 query 的價錢降價 20%:\r\n\r\n
Last, but certainly not least, I am happy to tell you that we have reduced the prices for Standard and LBR (Location-Based Routing) queries by 20%.
\r\n\r\n是該看看要不要撤掉 Zerigo,因為目前這塊最大的成本其實是報帳以及帳號控管,而非單純租用成本 :o", + "title": "Route 53 的大改版" + }, + { + "id": "4922", + "body": "Apple 自家建立了 CDN 並且開始服務:「Apple’s CDN Now Live: Has Paid Deals With ISPs, Massive Capacity In Place」。\r\n\r\n找了好久才找到 swcdn.apple.com 這個名稱,sw 不知道是不是指 switch 的意思?\r\n\r\n從 blog 這台主機 (DigitalOcean 在 San Jose 的機房) 可以看到被指到 SFO 的 Apple CDN:\r\n\r\n
swcdn.apple.com.        3600    IN      CNAME   swcdn.apple.com.akadns.net.\r\nswcdn.apple.com.akadns.net. 300 IN      CNAME   ussjc1.cdn-apple.com.akadns.net.
\r\n\r\n而如果從台灣查,則會導去 Akamai:\r\n\r\n
swcdn.apple.com.        3282    IN      CNAME   swcdn.apple.com.akadns.net.\r\nswcdn.apple.com.akadns.net. 300 IN      CNAME   swcdn.apple.com.edgesuite.net.
\r\n\r\n看起來還是用 Akamai 提供的 DNS 服務。而從導的情況看起來,符合原文作者 Dan Rayburn 的說明,目前只有歐美地區是走自家的 CDN:\r\n\r\n
Recently, Apple’s CDN has gone live in the U.S. and Europe and the company is now delivering some of their own content, directly to consumers.
\r\n\r\n量夠大就會這樣玩,應該是逐步繼續做?", + "title": "蘋果自家的 CDN" + }, + { + "id": "4925", + "body": "在 PHP 的 wiki 上大戰了快一個月後決定叫 PHP 7:「PHP RFC: Name of Next Release of PHP」。\r\n\r\n票數是 58 對 24 票。\r\n\r\n仔細看一下討論的整理,有一些原因其實還蠻... XD (雖然感覺上只是讓大家放鬆一下?)\r\n\r\n
As a special non serious bonus, 7 is perceived as a lucky number in both the Western world and Chinese culture. A little bit of luck never hurt anybody. http://en.wikipedia.org/wiki/Numbers_in_Chinese_culture (no, we're not truly seeing it as a real advantage - the case for 7 is very strong without it).
", + "title": "PHP 下一個主版本更新會是 PHP 7" + }, + { + "id": "4927", + "body": "Canvas Fingerprint 已經很久了,在「The Web never forgets: Persistent tracking mechanisms in the wild」說明了 Canvas Fingerprint 的歷史:\r\n\r\n
Canvas fingerprinting is a type of browser or device fingerprinting technique that was first presented by Mowery and Shacham in 2012.
\r\n\r\n原始論文可以在「Pixel Perfect: Fingerprinting Canvas in HTML5」這邊看到。原理是利用不同機器對字型 render 不一樣的原理再對產生出來的圖片 hash 後當作 cookie 替代品。\r\n\r\n兩個禮拜前突然紅起來是因為被發現廣泛使用在很多服務以及網站上,像是 AddThis (於是一堆網站中獎),以及 WhiteHouse.gov (喔喔!),然後還有 YouPorn.com (XDDD):「White House Website Includes Unique Non-Cookie Tracker, Conflicts With Privacy Policy」、「Meet the online tracking device that is virtually impossible to block」。\r\n\r\n拿 canvas fingerprint 去各瀏覽器的 extension 上找,目前 Google Chrome 上可以安裝「CanvasFingerprintBlock」來擋,Firefox 的沒找到?", + "title": "用 Canvas Fingerprint 取代部份 Cookie" + }, + { + "id": "4929", + "body": "在「Mobile Internet Explorer's New User Agent」這邊看到 Nokia Lumia 520 會送出:\r\n\r\n\"\"\r\n\r\n開始惡搞了...", + "title": "最新的 Windows Phone 8.1 更新會送出 Android 的 User-Agent..." + }, + { + "id": "4931", + "body": "在「LeaseWeb Adds Resell Functionality to Its Global CDN Built for High-Bandwidth Capacity」這邊看到 Leaseweb 的 CDN,拿來測試測試...\r\n\r\n官網可以在「Next-Generation CDN - LeaseWeb」這邊看到,以 pay-as-you-go 的價位來看,還算便宜?\r\n\r\n從 Demo site 可以看到 vod.leasewebcdn.com 這個 domain 掛上去,從台灣 traceroute 過去是到新加坡,有點差:\r\n\r\n
  4.|-- TPDT-3011.hinet.net        0.0%    10   15.6  17.9   7.8  35.4   8.5\r\n  5.|-- r4104-s2.tp.hinet.net      0.0%    10    6.7  17.9   6.7  32.6  10.3\r\n  6.|-- r4004-s2.tp.hinet.net      0.0%    10    6.9  14.6   6.6  41.4  13.2\r\n  7.|-- if-1-1.core3.HK2-Hong-Kon  0.0%    10  173.4 178.5 173.0 192.2   8.1\r\n  8.|-- if-0-1-3-39.tcore1.HK2-Ho  0.0%    10  195.8 205.1 195.5 222.3  11.7\r\n  9.|-- if-1-2.tcore2.SVW-Singapo 20.0%    10  205.0 214.2 204.5 241.2  14.3\r\n 10.|-- if-20-2.tcore1.SVQ-Singap  0.0%    10  212.8 202.5 193.5 230.4  13.9\r\n 11.|-- 180.87.96.34               0.0%    10  111.5 110.5  90.7 144.6  19.6\r\n 12.|-- 103.254.152.207            0.0%    10   92.5  97.7  92.5 108.2   6.0\r\n 13.|-- 103.254.152.133            0.0%    10  113.0  96.6  89.2 113.0  10.8\r\n 14.|-- 103.254.152.5             10.0%    10   92.7 100.4  92.7 113.5   9.3
\r\n\r\n從日本 Linode 過去也是新加坡:\r\n\r\n
  3.|-- otejbb205.int-gw.kddi.ne.  0.0%    10    1.5   1.6   1.5   1.7   0.0\r\n  4.|-- ix-ote212.int-gw.kddi.ne.  0.0%    10    1.7   5.6   1.7  13.0   4.1\r\n  5.|-- Vlan527.ihar1.OVC-Tokyo.a  0.0%    10    2.1   8.2   2.1  14.0   5.1\r\n  6.|-- if-8-2.tcore2.TV2-Tokyo.a  0.0%    10    1.9   3.5   1.9  15.0   4.1\r\n  7.|-- if-6-2.tcore1.SVW-Singapo  0.0%    10   76.2  77.7  76.2  83.6   2.2\r\n  8.|-- if-2-2.tcore2.SVW-Singapo  0.0%    10   76.1  76.4  76.1  78.4   0.7\r\n  9.|-- if-20-2.tcore1.SVQ-Singap  0.0%    10   76.1  76.1  76.0  76.3   0.0\r\n 10.|-- 180.87.96.34               0.0%    10   75.0  75.0  75.0  75.1   0.0\r\n 11.|-- 103.254.152.193            0.0%    10   75.6  76.0  75.6  77.8   0.6\r\n 12.|-- 103.254.152.135            0.0%    10   75.1  75.1  75.0  75.6   0.0\r\n 13.|-- 103.254.152.5              0.0%    10   76.1  76.5  75.9  78.6   0.7
\r\n\r\n從 DigitalOcean 加州的點測試:\r\n\r\n
  3.|-- sjo-bb1-link.telia.net     0.0%    10    1.9   2.5   1.8   8.2   2.0\r\n  4.|-- ash-bb3-link.telia.net     0.0%    10   76.1  76.1  76.0  76.1   0.0\r\n  5.|-- ash-b2-link.telia.net      0.0%    10   76.2  76.2  76.1  76.5   0.1\r\n  6.|-- leaseweb-ic-150715-ash-b2  0.0%    10   77.3  77.3  77.1  77.9   0.2\r\n  7.|-- po1.cs1.wdc1.leaseweb.net  0.0%    10   76.8  76.9  76.8  77.0   0.1\r\n  8.|-- 185.28.70.36               0.0%    10   76.9  77.1  76.8  78.1   0.4
\r\n\r\n這樣感覺不太行啊,根本沒抓到重點啊...", + "title": "Leaseweb 的 CDN" + }, + { + "id": "4935", + "body": "在 CloudFlare 的官方 blog 上的公告:「CloudFlare Now Supports WebSockets」。\r\n\r\n於是 CloudFlare 自豪的 DDoS 防護服務也涵蓋到 WebSockets 了:\r\n\r\n
The ability to protect and accelerate WebSockets has been one of our most requested features.
\r\n\r\n裡面其實還提到一些 CDN + WebSockets 的技術問題 (像是 port 的數量),有興趣的可以再仔細看 :o", + "title": "CloudFlare 支援 WebSockets" + }, + { + "id": "4937", + "body": "員工旅遊時看到「NotepadConf」這個讓人笑噴啊,當你點下 Register Now! 的按鈕時出現:\r\n\r\n\"\"\r\n\r\n所以到底會不會辦呢 XDDD", + "title": "十一月在明尼蘇達州辦的 NotepadConf" + }, + { + "id": "4939", + "body": "在「Facebook’s New Cluster Management Software Cuts Power Consumption」這篇看到 FacebookQiang Wu 說明了他們發展的 Autoscale 技術對於電力消耗的差異:\r\n\r\n
One type of a web server Facebook uses, for example, draws 60 watts when idle, 130 watts at low-level CPU utilization and 150 watts at medium-level utilization.
\r\n\r\n利用這種差異,與傳統的 load balancing 技術比較起來,就有節省的空間了:\r\n\r\n\"\"\r\n\r\n這是 web cluster 節省的情況,約省了 27% 的電力,這個數字以 Facebook 的規模來計算省下的電力資源超級可觀...", + "title": "Facebook 的 Autoscale 對於電力消耗的差異" + }, + { + "id": "4941", + "body": "AWS 跨區域搬資料有一堆方式,而官方今天在 blog 上推薦了用 Tsunami UDP 搬移的方式:「Moving Big Data into the Cloud with Tsunami UDP」。\r\n\r\n\"\"\r\n\r\n看文章上的說明,看起來是從 Tokyo 搬到 Virginia (還是反過來?),有很穩定的 651Mbps 在傳輸 XD\r\n\r\n看起來之後用的到,這個方法留起來參考...", + "title": "AWS 跨區域搬大量資料的方式" + }, + { + "id": "4945", + "body": "在 Slashdot 上看到的,Firefox 33 將當初 Cisco 所提供的 OpenH264 binary 給納進來了:「Firefox 33 Integrates Cisco's OpenH264」。\r\n\r\n這樣一來,主流的瀏覽器都 (將會) 支援 H.264,可以參考「Can I use the MPEG-4/H.264 video format?」這邊的資料。", + "title": "Firefox 33 的 OpenH264" + }, + { + "id": "4947", + "body": "之前就看到這個網站,堆在瀏覽器頁上一陣子了:「CoolGithubProjects」。\r\n\r\n看起來是依照 reddit 的數據分析出來的,有每天、每週、每月的熱門專案。另外有 csv 檔可以下載數據,晚點來找有沒有人已經把 RSS feed 弄出來?每天看一下有哪些熱門專案...", + "title": "GitHub 上的熱門專案" + }, + { + "id": "4950", + "body": "兩個多禮拜前的文章:「Which is better, Adblock or Adblock Plus?」,比較了 Google Chrome 上兩個擋廣告的套件:「AdBlock」以及「Adblock Plus」。\r\n\r\n這邊直接先講結論,AdBlock 有嚴重的隱私問題,在「What are they hiding?」這段列出了 AdBlock 2.6.11 (2013-10-25) 版本之後的各種追蹤方式 (而且愈來愈誇張),即使到最新版仍然有隱私的 issue:\r\n\r\n
Two new AdBlock versions came out since that blog post was published. AdBlock 2.7.9 fixed the bug I mentioned above, now only getadblock.com can track AdBlock users and no other websites.
", + "title": "AdBlock 與 Adblock Plus 的差異" + }, + { + "id": "4952", + "body": "正式公告出來了,PHP 5.3.29 是 PHP 5.3 的最後一個版本:「PHP 5.3.29 is available, PHP 5.3 reaching end of life」。\r\n\r\nPHP 5.3 到 5.4 參考「Migrating from PHP 5.3.x to PHP 5.4.x」這篇,而 PHP 5.4 到 5.5 則是參考「Migrating from PHP 5.4.x to PHP 5.5.x」這篇,最主要的是 Backward Incompatible Changes 這頁 (兩個 migrate 文件都有),說明有哪些變更是不相容的。\r\n\r\n如果可以的話,直接將 PHP 5.3 升級到 PHP 5.5 會是比較適合的選擇。(因為 5.4 升級到 5.5 幾乎沒有問題,可以參考 Backward Incompatible Changes 頁面,根本就沒幾項 XD)", + "title": "PHP 5.3 的最後一版,PHP 5.3.29" + }, + { + "id": "4955", + "body": "在「Must-watch videos about javascript」這邊列出了不少 JavaScript 相關的影片。不是給初學者看的,而是給已經研究過一陣子的人看的進階影片。\r\n\r\n影片從 2009 年的「Nicholas Zakas: Scalable JavaScript Application Architecture」整理到 2014 年...\r\n\r\n不過 2035 年那份「Gary Bernhardt: The Birth & Death of Javascript」是怎樣 XDDD", + "title": "介紹 JavaScript 的影片" + }, + { + "id": "4958", + "body": "在 Twitter 上看到有人講:「Vim console application running using NativeClient」,實際跑起來長這樣:\r\n\r\n\"\"\r\n\r\n只是跑起來測試,因為平常用的平台 (UbuntuMac OS X) 都有原生的 Vim 可以用...\r\n\r\n這算是 Native Client 的火力展示嗎?", + "title": "Google Chrome 上使用 Native Client (NaCl) 執行 Vim..." + }, + { + "id": "4960", + "body": "在 Super User 上出現這個問題:「Why does Windows think that my wireless keyboard is a toaster?」,無線鍵盤變成麵包機 XDDDDDDD\r\n\r\n\"\"\r\n\r\n原因是出自 Microsoft 提供程式碼範例的預設值 (Sample DeviceInfo XML Data),如果廠商寫 driver 時沒改,就會變成這樣 XDDDDDDDDD", + "title": "Windows 7 的無線鍵盤 icon 出現麵包機 icon 的原因..." + }, + { + "id": "4963", + "body": "應該是某天 Hacker News Daily 的連結,堆在瀏覽器上面:「NomadList」:\r\n\r\n
The best cities to live and work remotely, based on cost of living, weather, internet speed and other metrics. By @levelsio
\r\n\r\n比較的標準包含了生活消費、氣溫與網路速度... 如果不設條件搜尋,前三名是清邁、台北、曼谷?hmmm...", + "title": "NomadList 的「最佳遠端上班城市排名」" + }, + { + "id": "4966", + "body": "為什麼這種方法讓我想到某組台北市長候選人的團隊呢...\r\n\r\n從「Hotel fines $500 for every bad review posted online」這篇看到的消息,要再 Yelp 上維持好評價的方式:\r\n\r\n
The Union Street Guest House, near Catskills estates built by the Vanderbilts and Rockefellers, charges couples who book weddings at the venue $500 for every bad review posted online by their guests.
\r\n\r\n
If you take down the nasty review, you’ll get your money back.
\r\n\r\n這方法好讚啊 XDDD\r\n\r\n自從報導出來後,Yelp 上的頁面「Union Street Guest House - Hudson, NY | Yelp」就透露出這家飯店的真實了... 一戰成名啊 XDDD ", + "title": "飯店取得好評價的方法?" + }, + { + "id": "4968", + "body": "也忘記在哪邊看到的,反正是留在 browser 上的連結。\r\n\r\n從 puppet 跳槽,因為 SaltStack (Salt) 與 Ansible 都是使用 Python 而被選擇,然後完整比較後記錄下來:「Moving away from Puppet: SaltStack or Ansible?」。\r\n\r\n先說結論,最後看起來是選擇了 Salt:\r\n\r\n
At this point both Salt and Ansible are viable and excellent options for replacing Puppet. As you may have guessed by now, I’m more in favor of Salt.
\r\n\r\n作者花了相當多的時間比較得到結論,包括從 puppet porting 一個完整的部份 (不是全部,不過還是為數可觀的部份),以及 porting 中間發現問題後開 ticket 詢問。除了技術面上的評估外,還包括了 community 的態度... (其實是狂婊 Ansible... XDDD)", + "title": "SaltStack 與 Ansible 的比較" + }, + { + "id": "4970", + "body": "在「A List of Free Public CDNs for Web Developers」這篇文章裡面列出了網路上免費的 CDN 資源。\r\n\r\n可以看到 MaxCDN (jsDelivrOSSCDNjQuery CDN) 與 CloudFlare (cdnjs) 都投資了不少在其中。不過 MaxCDN 的部份都沒有拿出亞洲 PoP 來用,速度還是慢了不少...\r\n\r\n對於有使用各種套件的人,可以在這邊的列表上找一找,除了可以節省自己機器的頻寬負擔外,另外用 CDN 也有機會與其他人共用 cache 而加速...", + "title": "免費的 CDN 資源" + }, + { + "id": "4972", + "body": "貼圖就好,看得懂的人應該會笑出來 XDDD\r\n\r\n\"xkcd:", + "title": "xkcd 的「Query」" + }, + { + "id": "4975", + "body": "這篇「Distributed systems theory for the distributed systems engineer」列出了分散式系統的許多理論,以及後來開發的經典應用。\r\n\r\n

I need to improve my proficiency in distributed systems theory. Where do I start? Any recommended books?

— Gwen (Chen) Shapira (@gwenshap) August 7, 2014
\r\n\r\n\r\n這篇文章是回答 Cloudera 的某位全職員工而寫的,所以避開了太學術性質的論文,而是夾雜比較容易讀的解釋文章,以及維基百科的資料。\r\n\r\n文章裡出現很多有聽過但是沒有深入了解過的詞彙。這篇介紹文章可以當作入口點...", + "title": "分散式系統的基礎理論" + }, + { + "id": "4977", + "body": "7/26 就買了,算一算到現在也快四個禮拜,剛剛總算是讀完了,所以可以跟大家推薦《Build APIs You Won't Hate》這本書。\r\n\r\n\"\"\r\n\r\n作者 Phil SturgeonPHP 的資深開發者,同時也是 PHP-FIG 的投票成員。\r\n\r\n這本書講了很多 API 設計時會遇到的問題。作者不是直接講「用什麼方法是對的」,而是提出每一種方法的缺點,然後再下結論。\r\n\r\n尤其是缺點的部份,呼應主題的「You won't hate」,如果你因為總總原因而無法設計出完美的 API,你至少要避免設計出你自己看了就討厭的 API。\r\n\r\n裡面也給了很多程式範例 (大多都是 PHP),甚至告訴你寫 API 文件的重點。\r\n\r\n推薦這本書給所有需要設計或實做 API 的人。", + "title": "推薦《Build APIs You Won't Hate》這本書" + }, + { + "id": "4986", + "body": "在「The Global Internet Is Being Attacked by Sharks, Google Confirms」這篇文章裡提到 Google 證實了海纜常常被鯊魚咬:\r\n\r\n\"\"\r\n\r\n不過貼到 Facebook 上後被同事與朋友直接講「是因為太像脆笛酥」XDDD\r\n\r\n\"\"\r\n取自「合購美食∼黑師傅捲心酥\r\n\r\n是真的很像啊 XDDD", + "title": "因為海纜太像脆笛酥,所以一直被咬?" + }, + { + "id": "4988", + "body": "Lyft 是一家網路叫車服務,概觀來說就是 Uber 的競爭對手。\r\n\r\n上個禮拜,八月十一日 (8/11) 時,CNNMoney 報導了 Uber 的職員在去年十月時,惡性叫車又取消超過五千次,造成 Lyft 的司機花費大量白工:「Uber's dirty tricks quantified: Rival counts 5,560 canceled rides」。\r\n\r\n這些資料是 CNNMoney 的記者在今年八月四日 (8/4) 報導 Uber 報導「Uber threatens drivers: Do not work for Lyft」時由 Lyft 提供而取得:\r\n\r\n\"\"\r\n\r\n
The text cited regulations by the New York Taxi and Limousine Commission. The TLC said the messages were not accurate.
\r\n\r\n而更早之前,CNNMoney 在今年一月二十四日 (1/24) 就報導過 Uber 用同樣手法對付紐約的 Gett:「Uber rival accuses car service of dirty tactics」。\r\n\r\n這些故事相當精彩啊...", + "title": "Lyft 對 Uber 惡性競爭的指控" + }, + { + "id": "4990", + "body": "Mailgun 公開了一份電子郵件範本,讓你可以在各種平台上面都正確顯示:「Transactional HTML Email Templates」。\r\n\r\n公開的範本在 GitHub 上可以取得:「mailgun/transactional-email-templates」。\r\n\r\n不過另外看到 Litmus 這個服務可以提供 Email previews,像是 Mailgun 這次放出來的測試可以在「TRANSACTIONAL EMAIL TEST」這邊看到,這個服務簡化了測試的過程...", + "title": "Mailgun 提供的電子郵件範本" + }, + { + "id": "4993", + "body": "AdDetector 是個 ChromeFirefox 的套件,可以在頁面上顯示這篇文章是不是付費文章:\r\n\r\n
AdDetector reveals articles with corporate sponsors.
\r\n\r\n會在最上面出現紅底的警告說明:\r\n\r\n\"\"\r\n\r\n這個套件之所以未被發展出來,主要是因為付費內容即使被標注,也都是很不明顯的標注。這個套件的目的就是希望讓標注更清楚。", + "title": "判斷是否為付費文章的瀏覽器套件" + }, + { + "id": "4995", + "body": "在「What 22 Billion Newsletters Tell Us About Designing For Mobile Email」這篇討論現在電子報設計的環境。\r\n\r\n首先是討論 table layout 而引用了 2013 年的數據:\r\n\r\n\"\"\r\n\r\n可以看到行動平台的比率已經是主流了。在這種情況下是否還適合用 table layout 就變成問題了...\r\n\r\n在文章後面有很多其他的數據以及討論,重點在於推導的過程,而非直接看文章的結論。要有能力透過數據分析。", + "title": "現代的電子報設計環境" + }, + { + "id": "4997", + "body": "Python Practice Book 這份資料對於學過 Python 又不常用而導致常常忘記的人還蠻好用的,算是復健用的書?\r\n\r\n裡面的範例都是以 Python 2 為主 (因為我拿 Python 3 測試,發現 print 用法不一樣了),不過還是不錯啦... 大量的範例程式碼可以看。", + "title": "Python Practice Book" + }, + { + "id": "4999", + "body": "PA-DSS (Payment Application Data Security Standard) 是 PCI SSC 訂出來提供給軟體開發商在支援交易時的標準:\r\n\r\n
PA-DSS was implemented in an effort to provide the definitive data standard for software vendors that develop payment applications.
\r\n\r\n這個標準也有很多版本,最新的 3.0 版是 2013 年 11 月公告的。剛剛在「Passwordscon 2014 - Password Security In The Pci Dss - Jarred White」這邊意外看到有提到密碼儲存的要求,出自 PDF 的 Page 34。\r\n\r\n分成幾個部份,PA-DSS Requirements 的部份是寫:\r\n\r\n
3.3.2 Use a strong, one-way cryptographic algorithm, based on approved standards to render all payment application passwords unreadable during storage. Each password must have a unique input variable that is concatenated with the password before the cryptographic algorithm is applied.
\r\n\r\n標準規定必須使用 one-way cryptographic algorithm,並且必須要有 salt 的設計。\r\n\r\n另外在 Guidance 則是直接建議使用 PBKDF2Bcrypt:\r\n\r\n
Concatenating a unique input variable to each password before the hashing algorithm is applied reduces the effectiveness of brute force attacks. Examples of strong one-way cryptographic algorithms suitable for hashing passwords include PBKDF2 and Bcrypt.
\r\n\r\n之前在密碼儲存這塊最痛的事情就是沒有夠先進的標準可以遵循,現在總算是有一份金融標準可以拿出來用了...\r\n\r\n參考 2012 年 ijliao 就有寫到的「請愛用 bcrypt 和 PBKDF2」。", + "title": "PA-DSS 3.0 對密碼儲存方式的說明" + }, + { + "id": "5003", + "body": "看到「WRTnode Opened for $25」這個網站的時候,就想起來家裡還在用中華電信數據及提供的無線網路,訊號有點差... 算了一下 USD$25 就算不算運費也要 NTD$750 左右,還是到 PChome 24h 上找一台可以刷 DD-WRT 的機器來用...\r\n\r\n後來是找到「D-Link Wireless N 實用版無線寬頻路由器 DIR-615」這台 NTD$399 的福利品:\r\n\r\n\"\"\r\n\r\n會選這台是因為這台出一陣子了,雖然 802.11n 是 draft,但我在家裡用無線網路時不在意... 另外在 DD-WRT 的資料庫內是全部都支援,花白工的機會比較低:\r\n\r\n\"\"\r\n\r\n拿到的時候背面可以看到是 E4 的硬體,對應到 DD-WRT 資料庫:\r\n\r\n\"\"\r\n\r\n後面就照著官方的 Installation 文件做,把該設定的值設一設就收工了...", + "title": "把家裡的無線網路換成 DD-WRT" + }, + { + "id": "5005", + "body": "在「A new Side channel attack-how to steal encryption keys by touching PCs」這邊看到一種很特別的 side-channel attack:(直接先看圖)\r\n\r\n\"\"\r\n\r\n引用說明:\r\n\r\n
The signal can also be measured at the remote end of Ethernet, VGA or USB cables.
\r\n\r\n方法愈來愈特別了 XDDD", + "title": "很特別的 Side-channel attack 方法以取得 RSA 與 ElGamel 的 private key" + }, + { + "id": "5007", + "body": "參考「Configure a Bucket for Website Hosting」這邊的說明就可以了,拿 test-redirect.abpe.org 當範例,先是 CNAMES3 的 website endpoint 上:(這個 bucket 我是放在 us-west-2 上,所以會指到 us-west-2 的 website endpoint)\r\n\r\n
;; ANSWER SECTION:\r\ntest-redirect.abpe.org. 7200    IN      CNAME   test-redirect.abpe.org.s3-website-us-west-2.amazonaws.com.
\r\n\r\n然後 S3 上指定 redirect rule:\r\n\r\n
  <RoutingRules>\r\n    <RoutingRule>\r\n    <Condition>\r\n      <KeyPrefixEquals>img/</KeyPrefixEquals>\r\n    </Condition>\r\n    <Redirect>\r\n      <HostName>www.example.com</HostName>\r\n      <ReplaceKeyPrefixWith>img/</ReplaceKeyPrefixWith>\r\n    </Redirect>\r\n    </RoutingRule>\r\n  </RoutingRules>
\r\n\r\n也就是像是這樣:\r\n\r\n\"\"\r\n\r\n也就是說,如果是 simple redirect 的話,可以善用 S3 的這個功能而不用自己架設 web server (自己架設需要另外考慮 High Availability),還算蠻方便的?", + "title": "用 Amazon S3 送 301 重導" + }, + { + "id": "5015", + "body": "RawGit 可以讓你直接連 GitHub 的檔案,並且帶入適當的 Content-Type:\r\n\r\n
RawGit serves raw files directly from GitHub with proper Content-Type headers.
\r\n\r\nproduction url 用的是 NetDNA (MaxCDN):\r\n\r\n
cdn.rawgit.com.         3600    IN      CNAME   rawgit.rawgh.netdna-cdn.com.
\r\n\r\n不過一般情況下可以直接用 raw.github.com,這個是 GitHub 提供的網址,目前使用 Fastly:\r\n\r\n
raw.github.com.         30      IN      CNAME   github.map.fastly.net.
", + "title": "用 RawGit 服務供應檔案" + }, + { + "id": "5017", + "body": "在「Mozilla to Support Key Pinning in Firefox 32」看到的新聞,目前的標準還是 draft:「Public Key Pinning Extension for HTTP」。\r\n\r\n被簡稱 PKP 與 HPKP:(一般比較常用前者)\r\n\r\n
We call this \"public key pinning\" (PKP); in particular, this document describes HTTP-based public key pinning (HPKP).
\r\n\r\n可以看到 Google Chrome 程式碼裡面是怎麼使用 PKP 技術預載的:「/trunk/src/net/http/transport_security_state_static.json」。\r\n\r\n目前 Google Chrome 使用的方式是限制 Google 的網域只能由某些特定的 CA 才能簽,這樣可以降低其他 CA 簽出高經濟價值的 SSL certificate 的效益。\r\n\r\n在 Mozilla 的 wiki 上面可以看到對應的條目:「SecurityEngineering/Public Key Pinning」,目前 Firefox 的版本是 31,也就是從下一個版本就支援了。\r\n\r\n第一波的 32 版會支援 Mozilla 自己的某些站台,以及一些 Twitter 的網域。\r\n\r\n第二波的 33 版會把 Twitter 的部份擴充到 *.twitter.com,另外還會支援 Google 所擁有的網域。\r\n\r\n第三波的 34 版會支援 Firefox account (*.accounts.firefox.com)、Tor 以及 Dropbox。", + "title": "Firefox 也要支援 Public Key Pinning Extension for HTTP" + }, + { + "id": "5019", + "body": "在 VMware 裡面跑 Ubuntu 通常會安裝 VMware Tools,像是「VMware Tools for Linux Guests」這篇介紹的方法。\r\n\r\n但官方介紹的方法比較麻煩一點,所以想要從現有的套件裡找看看有沒有現成的可以用,然後就找到「open-vm-tools」,而且看起來已經存在一段時間了,12.04 (甚至 10.04) 都有支援。\r\n\r\n裝好後就可以馬上看到更新:\r\n\r\n\"\"\r\n\r\n應該是沒問題吧...", + "title": "Ubuntu 下 VMware Tools 的替代品 Open Virtual Machine Tools" + }, + { + "id": "5024", + "body": "Linux 上可以跑 ZFS 的消息已經一陣子了,但在「71 TiB DIY NAS Based on ZFS on Linux」這篇看到有人跳下去玩還是覺得很特別... (大多還是看到 FreeBSD 或是 Oracle 的系統)\r\n\r\n\"\"\r\n\r\n用的是 Debian Wheezy,文章裡沒提到是不是跑 OpenZFS,不過我猜應該是...\r\n\r\n跑出來的效能相當好:\r\n\r\n
With a storage capacity four times higher than the original and an incredible read (2.5 GB/s)/write (1.9 GB/s) performance, it's a worthy successor.
\r\n\r\n約 6012 歐元,大約 23.5 萬台幣。", + "title": "Linux 上跑 ZFS" + }, + { + "id": "5026", + "body": "相較於 Ubuntu 的五年 LTS (Long Term Support),HHVM 的 LTS 只有 48 周:「HHVM Long Term Support」。\r\n\r\n不過考慮到 PHP 的開發週期,這個時間長度不算太意外:\r\n\r\n\"\"\r\n\r\n每 24 周會有一次 LTS release,而每個 LTS 支援 48 周。\r\n\r\n今年 2014/09/11 要出的 HHVM 3.3 將會支援到明年 2015/08/13,這樣對於會需要使用 HHVM 的單位應該還算可以接受?\r\n\r\n等穩定下來後 (不知道多久後) 也許會再拉長 LTS 的支援時間?", + "title": "HHVM 的 LTS" + }, + { + "id": "5032", + "body": "CloudFlare 上個月底的時候發了一篇關於頻寬成本的文章:「The Relative Cost of Bandwidth Around the World」。\r\n\r\n\"\"\r\n\r\n歐洲是最低的,北美還高出歐洲一些。亞洲與南美是同個等級,大約是歐洲的六倍多,而澳洲是最貴的。\r\n\r\n成本跟 transit 以及 peering 的量有關,這是 CloudFlare 提供的數字,只能拿來參考用...", + "title": "CloudFlare 的頻寬成本" + }, + { + "id": "5035", + "body": "Instagram 上星期推出了 Hyperlapse:「The Technology behind Hyperlapse from Instagram」。\r\n\r\n如果講得很簡略,就是「防手振的錄影 app」,可以直接看 Instagram 提供的範例影片:\r\n\r\n\r\n\r\n文章裡面還解釋了很多原理,有興趣的人可以看看 :p", + "title": "Instagram 的 Hyperlapse" + }, + { + "id": "5040", + "body": "現在 Google Chrome 是 37 版,接下來的幾個版本會開始針對只有 SHA-1 fingerprint 的 SSL certificate 降低安全評價:「Gradually sunsetting SHA-1」。\r\n\r\n這是 39 版預定的情況,會出現警告:\r\n\r\n\"\"\r\n\r\n這是 40 版預定的情況,安全 icon 會消失:\r\n\r\n\"\"\r\n\r\n而這是 41 版直接廢止的情況,當作不合法的 SSL certificate 處理:\r\n\r\n\"\"\r\n\r\n另外,預先安裝的 root certificate 不受影響,因為並不是看 SHA-1 hash:\r\n\r\n
Note: SHA-1-based signatures for trusted root certificates are not a problem because TLS clients trust them by their identity, rather than by the signature of their hash.
\r\n\r\n整個過程大約會在 2015Q1 告一個階段。", + "title": "Google Chrome 對只有 SHA-1 fingerprint 的淘汰過程" + }, + { + "id": "5043", + "body": "最近在試 SaltStack,先從 Masterless 模式開始玩,可以拿來練習寫 SaltStack 專門的 sls 檔。相關的文件可以參考「Standalone Minion」這篇。\r\n\r\n我是裝 Ubuntu 14.04.1 LTS,然後用 ppa 裝 SaltStack 最新版,避免與與官方的文件差異太大:\r\n\r\n
# apt-add-repository ppa:saltstack/salt\r\n# apt-get update\r\n# apt-get install salt-minion
\r\n\r\n然後建立 /srv/salt 後就可以在這個目錄下面開始做事。這個目錄是 SaltStack 的預設值 (可以參考 /etc/salt 下面的檔案),所以不需要另外再設定:\r\n\r\n
# mkdir /srv/salt\r\n# cd /srv/salt
\r\n\r\nSaltStack 讀取的起點預設是 top.sls,這個檔案預設的格式是 YAML:\r\n\r\n
base:\r\n    '*':\r\n        - default
\r\n\r\n然後就可以寫 default.sls:\r\n\r\n
most:\r\n  pkg:\r\n    - installed\r\n\r\nlocale:\r\n  cmd.run:\r\n    - name: locale-gen zh_TW.UTF-8
\r\n\r\n然後在機器上呼叫 salt-call 執行:\r\n\r\n
# salt-call --local state.highstate
\r\n\r\n或是開 debug 訊息:\r\n\r\n
# salt-call --local -l debug state.highstate
\r\n\r\n這樣就可以看到各種輸出結果了。這樣應該就會看到 most 被裝起來,另外 zh_TW.UTF-8 的 locale 應該也會生出來。", + "title": "SaltStack 的 Masterless 模式" + }, + { + "id": "5045", + "body": "在「Pure C implementation of Go channels.」這邊看到有人在 C 語言裡面實做 Go 的 Channel,包括了 Unbuffered 與 Buffered 版本。\r\n\r\n看起來是支援 multithreading 的:「Add missing pthread_cond_destroy in chan init cleanup」、「Add -lpthread to CFLAGS」。", + "title": "C 對 Go Channel 的實做" + }, + { + "id": "5047", + "body": "在「Wi-Fi Router Attack Only Requires a Single PIN Guess」這邊看到利用 WPS 實做上的弱點攻擊而取得 WPA 的密碼。\r\n\r\n投影片取自「Offline bruteforce attack on WiFi Protected Setup」這邊:\r\n\r\n\r\n\r\n利用各種方法攻擊,像是不夠安全的 PRNG (Pseudo Random Number Generator)。\r\n\r\n作者的建議是,關掉 WPS 會比較安全 XD", + "title": "利用 WPS 實做上的問題攻擊,而取得 WPA 密碼" + }, + { + "id": "5049", + "body": "出自「High-performance PHP on apache httpd 2.4.x using mod_proxy_fcgi and php-fpm.」這邊的方法:\r\n\r\n
ProxyPassMatch ^/(.*\\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://127.0.0.1:9000/var/www/www.example.com/public/
\r\n\r\n後面那個 127.0.0.1:9000 看起來變成裝飾用,有點奇怪... 不過至少會動?", + "title": "Apache 2.4 的 ProxyPass 對 Unix Domain Socket 的 FastCGI 界面設定" + }, + { + "id": "5051", + "body": "在「Visualizing Garbage Collection Algorithms」這篇文章裡介紹了大量的 Garbage Collection 視覺化後的樣子 (GIF 動畫),拿來複習 GC algorithm...\r\n\r\n像是這是沒有 GC 的情況 (Cleanup At The End: aka No GC):\r\n\r\n\"\"\r\n\r\n很有趣的動畫效果...", + "title": "各種 Garbage Collection 的視覺化圖片" + }, + { + "id": "5053", + "body": "世界迷霧的消息,在某個 Facebook 討論串裡看到的,抓重要的部份就好。\r\n\r\n第一張:\r\n\r\n\"\"\r\n\r\n第二張:\r\n\r\n\"\"\r\n\r\n來期待一下好了 XD", + "title": "世界迷霧 Android 版本的消息" + }, + { + "id": "5055", + "body": "Bitcoin 的特性使得各家金流業者被逼著要支援,不然就等著在市場上被淘汰。\r\n\r\n既 Stripe 的測試「Stripe: Bitcoin」表態後,龍頭 PayPal 也出手了:「Braintree Brings One Touch Payments to the People and Will Offer Bitcoin to Developers Soon」。\r\n\r\n目前是跟 Coinbase 合作:\r\n\r\n
In addition we announced that Braintree has partnered with Coinbase to offer a trusted and secure way for people to pay with bitcoin across their favorite apps in the coming months.
", + "title": "PayPal 旗下的 Braintree 將支援 Bitcoin 貨幣" + }, + { + "id": "5057", + "body": "在「Git pretty」給了一張流程圖告訴你要怎麼辦,裡面包括了各類密技,像是 hard reset + force commit 這類合作時幾乎是禁用的指令 XD:\r\n\r\n\"\"", + "title": "Git commit 不好看的問題" + }, + { + "id": "5059", + "body": "Slashdot 這篇「Facebook's Auto-Play Videos Chew Up Expensive Data Plans」提到了 Facebook 自動播放功能對行動網路的影響。\r\n\r\n有種當年「微軟推出新的作業系統,推動硬體升級」的氣氛?\r\n\r\n原文裡有提供關掉 autoplay 的方法,在行動裝置上 (尤其是沒有吃到飽的網路上) 建議花個時間設定 :p", + "title": "Facebook 的影片自動播放功能對行動網路的影響" + }, + { + "id": "5061", + "body": "剛剛才意外發現的,是 Route53 + S3 + CloudFront 的組合:\r\n\r\n
;; ANSWER SECTION:\r\nwww.mizukinana.jp.      60      IN      A       54.239.176.113\r\nwww.mizukinana.jp.      60      IN      A       54.239.176.150\r\nwww.mizukinana.jp.      60      IN      A       54.230.214.85\r\nwww.mizukinana.jp.      60      IN      A       54.230.214.89\r\nwww.mizukinana.jp.      60      IN      A       54.230.215.52\r\nwww.mizukinana.jp.      60      IN      A       54.230.215.91\r\nwww.mizukinana.jp.      60      IN      A       54.230.215.156\r\nwww.mizukinana.jp.      60      IN      A       54.239.176.88
\r\n\r\n這些 IP 是台灣的 CloudFront 節點。從 whois 可以看到至少是三月就這樣了?\r\n\r\n
Domain Information:\r\n[Domain Name]                   MIZUKINANA.JP\r\n\r\n[Registrant]                    Most Company Co., Ltd.\r\n\r\n[Name Server]                   ns-290.awsdns-36.com\r\n[Name Server]                   ns-1966.awsdns-53.co.uk\r\n[Name Server]                   ns-1265.awsdns-30.org\r\n[Name Server]                   ns-579.awsdns-08.net\r\n[Signing Key]                   \r\n\r\n[Created on]                    2005/09/13\r\n[Expires on]                    2014/09/30\r\n[Status]                        Active\r\n[Last Updated]                  2014/03/28 12:36:18 (JST)
\r\n\r\nNetcraft 上沒有記錄到什麼時候換的:「Site report for www.mizukinana.jp」。\r\n\r\n不過 archive.org 上可以看到改版的記錄,應該是 migration 的時候順變換過去的?看 2014/02/10 版本以及 2014/05/18 版本的差異,連結從 mizukinana.jp 變成了 www.mizukinana.jp。\r\n\r\n所以應該是三月改的?\r\n\r\n意外的先進... XD", + "title": "水樹奈奈的官方網站放到 Route53 + S3 + CloudFront 上..." + }, + { + "id": "5063", + "body": "在 Twitter 上看到 Dan Kaminsky 的 retweet:\r\n\r\n

Awesome deck on practical aspects of CSP from @ndm https://t.co/fKS4a6RrIr

— hillbrad⚡ (@hillbrad) September 12, 2014
\r\n\r\n\r\n開頭的幾篇就列出不少 CSP 常見的情況,並且說明 CSP 應該要在軟體開發時就引入:\r\n\r\n\"\"\r\n\r\n另外提到的 CSP Level 2 也是個很有趣的觀念,像是 nonce:\r\n\r\n\"\"\r\n\r\n以及 hash:\r\n\r\n\"\"\r\n\r\n不過 Level 2 目前還在 working draft:「Content Security Policy Level 2」,這個功能應該還要等...", + "title": "CSP (Content Security Policy)" + }, + { + "id": "5067", + "body": "來介紹 Tails 這個以隱私為重點而設計出來的環境。\r\n\r\nTails 是一個獨立的作業環境,以 Debian 打造,並且使用 Tor 保護隱私,另外透過調整過的 Firefox (在 Debian 裡叫做 Iceweasel) 確保連線的安全。\r\n\r\n設計上,整個系統利用 iptables 保護,只允許 Tor 的流量連出去,而其他的程式都是透過環境變數與 proxy 設定連外,所以用 curl (透過環境變數設定 proxy) 可以通,但用 nc 直接連卻不會通:\r\n\r\n\"\"\r\n\r\n要注意的是,由於這是使用 Tor 作為隱私保護,所以非 HTTPS 的連線都應該被視為會被竊聽或是加料的環境,請避免使用 Tails 連上 HTTP 網站。\r\n\r\nTails 可以在網站上可以下載 ISO image 安裝,下載完後請務必確認 SHA256 是否正確 (網站上有 SHA256 的值,加上 HTTPS 的網址,直接看網站上的這個 SHA256 值應該還算安全)。\r\n\r\n拿到 ISO image 後可以選擇燒成光碟後開機執行,這是官方比較推薦的方法。如果是使用虛擬機執行時,需要確認母虛擬機的主體 (Host) 是安全的。\r\n\r\n這邊以 VirtualBox 為例子,選擇 Debian 32bits 然後直接把 ISO image 掛上去:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n使用虛擬機時,記憶體開個 1GB 應該是夠用 (我是開 2GB,因為沒有掛硬碟當 crypto swap,記憶體大理論上會順一點),看個人環境而自己選擇。開機後會出現:\r\n\r\n\"\"\r\n\r\n放著開進去或是選 Live 進去都可以,接下來會出現登入畫面:\r\n\r\n\"\"\r\n\r\n第一次玩可以直接用預設值選 Login 就好。登入進去後可以看到這個畫面:\r\n\r\n\"\"\r\n\r\n然後過一陣子後右上角會出現黃色的洋蔥 icon,表示已經連上 Tor:\r\n\r\n\"\"\r\n\r\n再等一陣子後右上角的洋蔥就會變成綠色,表示已經順利連上:\r\n\r\n\"\"\r\n\r\n瀏覽器開起來預設會連到 Tails 的官方網站:\r\n\r\n\"\"\r\n\r\n接下來就可以開始做事了:(這是不良示範,你不應該在匿名 channel 裡面查詢與自己有關的資訊)\r\n\r\n\"\"\r\n\r\n到這邊應該有個獨立的環境可以玩了...", + "title": "介紹 Tails:Privacy for anyone anywhere" + }, + { + "id": "5076", + "body": "直接練出一份 PoC 讓大家看:「a JPEG that becomes a PNG after AES encryption and a PDF after 3DES decryption」,這是原始檔:(這邊直接引用 Google Code 上的 image)\r\n\r\n\"\"\r\n\r\n透過 AES-CBC 加密後會是這樣的圖片:\r\n\r\n\"\"\r\n\r\n透過 3DES-CBC 解密後則是這樣的 PDF:\r\n\r\n\"\"", + "title": "JPEG 用 AES-CBC 加密後變成 PNG,用 3DES-CBC 解密後變成 PDF..." + }, + { + "id": "5078", + "body": "有 server 被摸進去了,參考「Server issues」:\r\n\r\n
Earlier today the freenode infra team noticed an anomaly on a single IRC server. We have since identified that this was indicative of the server being compromised by an unknown third party.
\r\n\r\n因此建議大家更換 channel key 與密碼:\r\n\r\n
Since traffic may have been sniffed, you may also wish to consider any channel keys or similar secret information exchanged over the network.
", + "title": "freenode 要求使用者更換密碼" + }, + { + "id": "5080", + "body": "在芝加哥 IMTS 2014,參考「Local Motors’ 3D Printed ‘Strati’ Car Has Just Taken Its First Test Drive」這篇報導,以及影片:\r\n\r\n\r\n\r\n警車在前面開道?XD", + "title": "3D 列印車的第一次試行" + }, + { + "id": "5083", + "body": "Twitter 上看到的:\r\n\r\n

go home linkedin, you're drunk pic.twitter.com/lsEOdpjmhD

— Adam Dymitruk (@adymitruk) September 14, 2014
\r\n\r\n\r\n雖然是 machine learning 算出來的結果,但看到還是很好笑啊 XDDD", + "title": "Linkedin 幹的好!XDDD" + }, + { + "id": "5085", + "body": "\"\"\r\nMinecraft,出自「File:Beta.png」。\r\n\r\n如同前幾天的傳言,Microsoft 將會以 25 億美金買下 Mojang:「Yes, we’re being bought by Microsoft」。\r\n\r\n
Microsoft acquired Mojang for a smooth 2.5 BILLION dollars.
\r\n\r\n不過更重要的是創辦人 Markus Persson (@notch) 選擇離開的公開信,裡面敘述了選擇賣掉並且離開的原因:「I’m leaving Mojang」。\r\n\r\n主要的原因還是想要尋找更多有趣的事情,做更多嘗試,但 Mojang 變成沉重的負擔,所以決定讓出去...", + "title": "Microsoft 以 25 億美金買下 Mojang" + }, + { + "id": "5087", + "body": "因為碰 SaltStack,而官方建議用的格式是 YAML (雖然也支援 JSON,但文件幾乎都是 YAML),所以被迫要學一堆奇怪的 YAML hack,在官方文件上甚至寫了一篇「YAML Idiosyncrasies」讓大家參考,用 Idiosyncrasies 這個詞彙比較中性,但需要專文來寫就可以想像 YAML 有多 !@#$%^...\r\n\r\n然後文章裡面也發現 SaltStack 在亂搞,於是就快起笑了...\r\n\r\n首先是建議 indent 為 2 spaces,另外禁用 tab,這些到是沒什麼好抱怨的。但 dict 的設計就讓人崩潰,像是這樣的結構:\r\n\r\n
foo:\r\n  - bar:\r\n    baz1: abc\r\n    baz2: def
\r\n\r\n你以為對應的 JSON 是:\r\n\r\n
{\r\n  \"foo\": {\r\n    \"bar\": {\r\n      \"baz1\": \"abc\",\r\n      \"baz2\": \"def\"\r\n    }\r\n  }\r\n}
\r\n\r\n但實際對應的 JSON 中,bar、baz1、baz2 視同一層:\r\n\r\n
{\r\n  \"foo\": {\r\n    \"bar\": null,\r\n    \"baz1\": \"abc\",\r\n    \"baz2\": \"def\"\r\n  }\r\n}
\r\n\r\n因為其實對應的 YAML 是:\r\n\r\n
foo:\r\n  - bar:\r\n  - baz1: abc\r\n  - baz2: def
\r\n\r\n你就不能把最上面的 YAML 定義成 syntax error 嗎... =_=\r\n\r\n接下是 SaltStack 的惡搞時間,因為 YAML parser 會把 644 當作數字傳進去,所以這樣的設定:\r\n\r\n
/etc/vimrc:\r\n  file:\r\n    - managed\r\n    - source: salt://edit/vimrc\r\n    - mode: 644
\r\n\r\nSaltStack 會收到 644 (十進位),而如果你寫成 0644 時,就會被讀成八進位,也就是 420 (十進位):\r\n\r\n
/etc/vimrc:\r\n  file:\r\n    - managed\r\n    - source: salt://edit/vimrc\r\n    - mode: 0644
\r\n\r\n我覺得後面這個是比較正確的寫法,所以應該要會動,但 SaltStack 對這部份 workaround,會變成 chmod 420 /etc/vimrc,然後就噴飯了...\r\n\r\n另外 2013_01_12 這種字串會被解讀成 20130102 (十進位),這會不會太歡樂...\r\n\r\n反正用下去後應該會再踩更多地雷,繼續看下去吧...", + "title": "YAML 的地雷" + }, + { + "id": "5089", + "body": "今年一月的時候,Netflix 曾經寫過一篇關於對 S3 的 Eventually Consistency 的問題:「Netflix 對 S3 的 Eventually Consistency 的補強...」,當時 Netflix 的作法是實做 s3mper 以確保一致性。\r\n\r\n過了半年,AWS 的人在 EMR 上實做了類似的功能:「Consistent View for Elastic MapReduce's File System」。\r\n\r\n\"\"\r\n\r\n看文章的說明,應該是用到 DynamoDB 負責 S3 上資料的狀態,而 DynamoDB 的資料並不會砍掉,所以在使用時要注意這點 :o", + "title": "EMR 對 S3 Consistency 的補強" + }, + { + "id": "5091", + "body": "昨天才找人做完 CloudFlareSmokePing 資料,今天看到資料的時候覺得還蠻特別,跟一般預想的情況不太一樣...\r\n\r\n\"\"\r\n\r\nCloudFlare 在台灣使用的人應該是 Plurkimages.plurk.com (透過 CNAME 指過去,應該是企業付費用戶) 以及一堆 Content Farm。\r\n\r\n上面的圖是我們家在 HiNet 三重重新機房端 (203.69.67.x) 對 www.cloudflare.com.cdn.cloudflare.net 做出來的資料,這種 pattern 很上班時間用的網站的感覺?\r\n\r\n多觀察幾天看看好了...", + "title": "HiNet (Colocation) 對 CloudFlare 的速度" + }, + { + "id": "5093", + "body": "在「Syncing MySQL slave table with pt-online-schema-change」這篇看到 master 與 slave 的資料不同步時,強制性同步的方法:\r\n\r\npt-online-schema-change --alter 'ENGINE=INNODB' D=dbname,t=tblname\r\n\r\n由於 pt-online-schema-change 的作法是建一個新的表格,然後把舊表格的資料寫過去,而這些行為會被 replicate 到新機器上,於是就同步了...\r\n\r\n這招有趣 XDDD", + "title": "利用 pt-online-schema-change 同步 master 與 slave 的資料" + }, + { + "id": "5097", + "body": "CloudFlare 有兩篇公告出來:「Announcing Keyless SSL™: All the Benefits of CloudFlare Without Having to Turn Over Your Private SSL Keys」、「Keyless SSL: The Nitty Gritty Technical Details」。前面的一篇偏向公告文 (以及公關稿),而後面的一篇提到了實際運作的方式。\r\n\r\n用兩張 Keyless SSL 的 flow 就可以知道差異了,一張是 RSA-based,一張是 DH-based:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n把與 private key 相關的運算拆出來,由後方計算完成後再計算出 session key 與 client 溝通。如此一來,雖然速度比較慢,但 private key 管理在客戶自己手上...", + "title": "CloudFlare 的 Keyless SSL 服務" + }, + { + "id": "5099", + "body": "在 Zite 上看到的:「Noto Fonts Update」。\r\n\r\n\"\"\r\n\r\n如同預期的,逗點的問題解決掉了。然後剛剛另外測試 LibreOffice + Noto 時的中文字,本來會變成方塊字的問題也解了...\r\n\r\nUpdate 2014/10/01:我搞錯了... 我的設定還是用到原來的字型檔,LibreOffice 開起來還是爛的...", + "title": "Google Noto 字型出新版了" + }, + { + "id": "5101", + "body": "GitHub 從 2.3.github 特製版升級到 Rails 3:「Upgrading GitHub to Rails 3 with Zero Downtime」,其中切換的原因之一是維護成本:\r\n\r\n
This choice has bitten us in the form of gem incompatibility, having to manually backport security patches, missing out on core framework performance and feature improvements, and being unable to easily contribute back to the open source rails project.
\r\n\r\n升級的過程工程浩大,用了四個人的全職時間去做到完美切換:\r\n\r\n
Over the last six months, we’ve had a team of 4 engineers working full time on upgrading to Rails 3.
\r\n\r\n\"\"\r\n\r\n接下來不知道是不是繼續切換到 Rails 4...", + "title": "GitHub 升級到 Rails 3 了..." + }, + { + "id": "5104", + "body": "先前 PayPal 的分家 Braintree 宣佈支援 Bitcoin,而現在本家也宣佈要支援:「PayPal and Virtual Currency」,不過目前只是放話順便在北美試辦,速度還是慢了不少...\r\n\r\nBitcoin 交易不可逆的性質讓很多事情都改變了,接下來應該會愈來愈精彩...", + "title": "PayPal 本家也要支援 Bitcoin" + }, + { + "id": "5106", + "body": "出自「This killer trick will charge your iPhone 6 in half the time」,他們發現拿 iPad 的 12W 充電器充會快很多:\r\n\r\n
You can use a 12-watt iPad charger to juice up the iPhone 6 and iPhone 6 Plus in half the time when compared to the 5-watt iPhone charger your device ships with by default.
\r\n\r\n", + "title": "加速 iPhone 6 與 iPhone 6+ 的充電速度" + }, + { + "id": "5109", + "body": "這讓人無言了,Bash 的遠端執行安全漏洞,CVE-2014-6271:\r\n\r\n
GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which allows remote attackers to execute arbitrary code via a crafted environment, as demonstrated by vectors involving the ForceCommand feature in OpenSSH sshd, the mod_cgi and mod_cgid modules in the Apache HTTP Server, scripts executed by unspecified DHCP clients, and other situations in which setting the environment occurs across a privilege boundary from Bash execution.
\r\n\r\n可以在 oss-sec 上面看到說明「Re: CVE-2014-6271: remote code execution through bash」:\r\n\r\n
Debian and other GNU/Linux vendors plan to disclose a critical, remotely exploitable security vulnerability in bash this week, related to the processing of environment variables. Stephane Chazelas discovered it, and CVE-2014-6271 has been assigned to it.
\r\n\r\n透過環境變數打進去... Redhat 的「Bash specially-crafted environment variables code injection attack」這篇也給了不少例子。\r\n\r\nLinux 下通常最常用的 shell 應該還是 Bash 吧?(雖然也看到不少人用 Zsh...)\r\n\r\n然後 Twitter 上看到非常邪惡的 Google Hack:\r\n\r\n

google filetype:sh inurl:cgi-bin;

— dragosr (@dragosr) September 25, 2014
\r\n\r\n\r\n大家可以自己加上 site: 去掃...", + "title": "Bash 遠端執行安全漏洞" + }, + { + "id": "5113", + "body": "起因在「jQuery.com Malware Attack Puts Privileged Enterprise IT Accounts at Risk」這篇,RiskIQ 的人偵測到 jQuery 官方網站異常,帶有惡意軟體。檢查後發現在官網的 html 裡面出現了 jquery-cdn.com 這個非官方的 domain:\r\n\r\n\"\"\r\n\r\n這個 domain 可以看到是全新建立的:\r\n\r\n
   Domain Name: JQUERY-CDN.COM\r\n   Registrar: NAMESILO, LLC\r\n   Whois Server: whois.namesilo.com\r\n   Referral URL: http://www.namesilo.com\r\n   Name Server: NS1.DNSOWL.COM\r\n   Name Server: NS2.DNSOWL.COM\r\n   Name Server: NS3.DNSOWL.COM\r\n   Status: clientDeleteProhibited\r\n   Status: clientRenewProhibited\r\n   Status: clientTransferProhibited\r\n   Status: clientUpdateProhibited\r\n   Updated Date: 18-sep-2014\r\n   Creation Date: 18-sep-2014\r\n   Expiration Date: 18-sep-2015
\r\n\r\n透過這個 domain 一路穿出去將惡意程式導進來。\r\n\r\njQuery 官方收到 RiskIQ 的人通之後也開始調查發生什麼事情:「Was jquery.com Compromised?」、「Update on jQuery.com Compromises」。\r\n\r\n就官方的調查看起來,還有好幾波不同的攻擊,故事還沒完結?", + "title": "jQuery 官網疑似被攻陷..." + }, + { + "id": "5117", + "body": "在「python 乌云账号暴力猜解工具」這邊看到 Tesseract OCR 這個 command line 工具,比想像中的簡單很多...\r\n\r\nTesseract OCR 最新版是 2012 年出的,所以也不需要另外用 ppa 安裝,在 Ubuntu 下可以直接用 apt-get 安裝到 3.02 版:\r\n\r\n
# apt-get install tesseract-ocr
\r\n\r\n隨便抓張 CAPTCHA 後直接跑就可以了,像是這張:\r\n\r\n\"\"\r\n\r\n跑出來的結果:\r\n\r\n
$ tesseract a.gif a\r\nTesseract Open Source OCR Engine v3.02 with Leptonica\r\n$ cat a.txt\r\n8308
\r\n\r\n預設的輸出檔名會加上 .txt 是比較討厭的地方,不然就可以用 /dev/stdout 當作輸出檔名處理掉...", + "title": "用 Tesseract OCR 解 CAPTCHA" + }, + { + "id": "5119", + "body": "今年年初 (一月) 的時候發表過一次「各家硬碟的耐用程度...」引起爭議厚的最新力做,九月再發表一次:「Hard Drive Reliability Update – Sep 2014」。\r\n\r\n\"\"\r\n\r\n灰色部份是一月的數據,其他顏色是九月的數據。文中有考慮是否要換成企業級的硬碟 (enterprise drives),但兩個評估的答案是否定的。\r\n\r\n第一個評估是成本考量,就算一般硬碟以三年保固期有 15% 的 failure rate,相較於企業級 0% failure rate 計算 (於是直接算成 10 年),成本是不划算的:\r\n\r\n
Today on Amazon, a Seagate 3 TB “enterprise” drive costs $235 versus a Seagate 3 TB “desktop” drive costs $102. Most of the drives we get have a 3-year warranty, making failures a non-issue from a cost perspective for that period. However, even if there were no warranty, a 15% annual failure rate on the consumer “desktop” drive and a 0% failure rate on the “enterprise” drive, the breakeven would be 10 years, which is longer than we expect to even run the drives for.
\r\n\r\n更何況企業級硬碟的情況根本沒什麼差:\r\n\r\n
The assumption that “enterprise” drives would work better than “consumer” drives has not been true in our tests. I analyzed both of these types of drives in our system and found that their failure rates in our environment were very similar — with the “consumer” drives actually being slightly more reliable.
", + "title": "Backblaze 再次發表各家硬碟耐用程度..." + }, + { + "id": "5121", + "body": "在 AWS 上租一卡車機器的人最近應該都有收到重開機的通知,目前雖然沒有明講編號,但看起來是 10/01 會公開的 XSA-108:「EC2 Maintenance Update」。\r\n\r\n不過 Slashdot 上的「Amazon Forced To Reboot EC2 To Patch Bug In Xen」這篇的第一個 comment 很精彩:\r\n\r\n
It's funny for me to read that Amazon is notifying its users of an impending reboot.\r\n\r\nI've been suffering with Azure for over a year now, and the only thing that's constant is rebooting....\r\n\r\nMy personal favorite Azure feature, is that SQL Azure randomly drops database connections by design.\r\n\r\nLet that sink in for a while. You are actually required to program your application to expect failed database calls.\r\n\r\nI've never seen such a horrible platform, or a less reliable database server...
\r\n\r\n這要怎麼說呢... 就使用雲端服務的人,設計上的確要這樣沒錯,但就提供雲端服務的供應商,應該還是要保持 VM 的穩定性吧... XDDD", + "title": "Amazon 的 Xen 安全性更新" + }, + { + "id": "5125", + "body": "在 CloudFlare 的「One More Thing: Keyless SSL and CloudFlare's Growing Network」這篇文章裡提到了 CloudFlare 的擴張計畫,其中藍色是已經有的點,而橘色是計畫的點:\r\n\r\n\"\"\r\n\r\n雖然是說打算在 12 個月內搞定上面的計畫:\r\n\r\n
The map above shows all the locations where CloudFlare is actively working to turn up data centers over the next 12 months.
\r\n\r\n但不知道多久才會把這些點都設完,尤其這是有規劃進入中國大陸的情況?\r\n\r\n另外看起來台灣也會有點,不知道會放到哪裡... (以及 routing 會怎麼繞)", + "title": "CloudFlare 的擴張計畫" + }, + { + "id": "5131", + "body": "這大概也只有在 n 年後被解密才會知道是不是真的 XDDD\r\n\r\n

A Microsoft developer explains in a Reddit thread why Windows 10 is called Windows 10. pic.twitter.com/qJFi8yJEJg

— Mikko Hypponen (@mikko) October 1, 2014
\r\n\r\n\r\nUpdate:Open Source 專案裡已經發現一堆這種寫法了:「Windows 10 都市傳說的佐證...」。", + "title": "Windows 10 的都市傳說..." + }, + { + "id": "5133", + "body": "在「WPScan Vulnerability Database WordPress Security Resource」這邊看到「WPScan Vulnerability Database」這個站台,直接列出了 WordPress 相關的安全性漏洞。\r\n\r\n列出的漏洞包括了 WordPress 本身以及 Plugin、Theme 的部份。不過 WordPress 在有更新時自己應該會提醒才對?\r\n\r\n這樣看起來主要是確認一直沒更新的安全性漏洞?", + "title": "WordPress 的安全性資訊" + }, + { + "id": "5135", + "body": "因為 Bash 太多人用,找到安全漏洞的成本效益太高,看起來最近會有大量的人力跳進去 code review,接下來應該是 CVE 滿天飛,跟當初 OpenSSL 的情況類似。\r\n\r\n目前建議是直接看維基百科的說明:「Shellshock (software bug)」,裡面直接列出了目前發現的 CVE 以及 attack vector。\r\n\r\n會讓管理者想要抱頭痛哭,無止盡的 patch...", + "title": "關於 Shellshock (Bash) 問題" + }, + { + "id": "5137", + "body": "續上篇「Windows 10 的都市傳說...」,先不管微軟內部的 code 如何,以及跳過 Windows 9 的真正原因,但 open source 專案的確有不少人這樣判斷 Windows 95 與 Windows 98:\r\n\r\n

Windows 10 不能叫 Windows 9 都市傳說的實證 https://t.co/4rS72GkByM

— Bill Zhong (@zmx) October 2, 2014
\r\n\r\n\r\n還有各種變形的:\r\n\r\n
\t\t} else if (osName.startsWith(\"Windows\")) {\r\n \t\t\tif (osName.indexOf(\"9\") != -1) {\r\n \t\t\t\tjvm = WINDOWS_9x;
\r\n\r\n這該怎麼說呢...", + "title": "Windows 10 都市傳說的佐證..." + }, + { + "id": "5140", + "body": "愈來愈噴飯了啦,有人發現 Windows 10 有類似的問題:\r\n\r\n

Windows 10 is also vulnerable to the bash bug! #shellshock pic.twitter.com/uypsMgxbKC

— Ferdinand Hagethorn (@hagnf) October 2, 2014
\r\n\r\n然後有人拿去 Windows 7 與 Windows 8.1 上面測試,發現也中獎:\r\n\r\n

@hagnf Windows 7 and 8.1 also behave the same. I suspect most Windows will.

— Matool (@Matool13) October 2, 2014
\r\n\r\n這個世界到底怎麼了...\r\n\r\nUpdate:我去...\r\n\r\n

@gslin 而且歷史悠久 XD https://t.co/tz5yYMZpO2

— Roy Tam (@roytam1) October 3, 2014
\r\n\r\n\r\n這張太讚,弄一張過來:\r\n\r\n\"\"", + "title": "Shellshock,Windows 版" + }, + { + "id": "5142", + "body": "在 Google Chrome 裡面意外看到中文,才跑去查:\r\n\r\n\"\"\r\n\r\n找到去年年初的「天朝颁发的证书一览表」這篇,把該拔的拔一拔... 目前先關掉 CNNIC 與 WoSign 這兩家,共四把:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "中國大陸的 CA Root" + }, + { + "id": "5147", + "body": "Swordfish90/cool-retro-term 這個專案好讚:\r\n\r\n\"\"\r\n\r\n模擬古董 Terminal 的畫面啊 XDDD", + "title": "模擬古董 Terminal..." + }, + { + "id": "5149", + "body": "翻資料的時候發現 Sift Science 這家公司,直接看官網提供的範例程式碼會比較清楚,PHP code 長這樣:(在 single quote 裡面放變數,看起來不會動 XDDD)\r\n\r\n
require 'sift-php/lib/Services_JSON-1.0.3/JSON.php';\r\nrequire 'sift-php/lib/SiftRequest.php';\r\nrequire 'sift-php/lib/SiftResponse.php';\r\nrequire 'sift-php/lib/SiftClient.php';\r\n\r\n$sift = new SiftClient('my_api_key');\r\n$response = $sift->track('$transaction', array(\r\n  '$user_id' => '$billy_jones_301',\r\n  '$user_email' => '$bill@gmail.com',\r\n  '$transaction_type' => '$sale',\r\n  '$transaction_status' => '$success',\r\n  '$amount' => '100000000',\r\n  '$currency_code' => 'USD',\r\n  '$billing_address' => array(\r\n    '$name'         => 'Bill Jones',\r\n    '$phone'        => '1-415-555-6041',\r\n    '$address_1'    => '2100 Main Street',\r\n    '$address_2'    => 'Apt 3B',\r\n    '$city'         => 'New London',\r\n    '$region'       => 'New Hampshire',\r\n    '$country'      => 'US',\r\n    '$zipcode'      => '03257'\r\n  ),\r\n  '$payment_method' => array(\r\n    '$payment_type'    => '$credit_card',\r\n    '$payment_gateway' => '$braintree',\r\n    '$card_bin'        => '542486',\r\n    '$card_last4'      => '4444'\r\n  )\r\n));
\r\n\r\n查 https://packagist.org/search/?q=Sift 這邊也有看到一些東西,應該也可以用 Composer 掛起來用...\r\n\r\n費用的部份,量夠大的時候,平均下來就是一筆 USD$0.01 (前一萬筆不用錢,接下來一萬筆 USD$0.02,然後都是 USD$0.01),約 NTD$0.3:\r\n\r\n
First 10,000 transactions per month Free!\r\nNext 10,000 transactions 2¢ each\r\nEvery transaction above that 1¢ each
", + "title": "偵測信用卡交易是否為盜刷的服務" + }, + { + "id": "5151", + "body": "jQuery.com 在九月時被攻陷的事情的報告出爐了:「jQuery.com September 2014 Security Retrospective」。\r\n\r\n除了 ShellShock 的問題外,還包括了不少既有的漏洞沒修,所以最後也不太輕處到底是從哪個洞進來的,不過看起來最像的是 ShellShock?不過報告上沒有發現 CDN 的部份有被攻陷 (code.jquery.com 的部份),所以看起來只有主站受到影響?\r\n\r\n而因為受到 DDoS 攻擊,所以把非 CDN 部份的服務丟上 CloudFlare 了,由 CloudFlare 的人贊助 Enterprise 版的服務給 jQuery.com 使用,讓 CloudFlare 幫忙擋掉攻擊的部份...", + "title": "jQuery.com 九月的安全事件報告" + }, + { + "id": "5154", + "body": "前幾天看到「Hjson, the Human JSON」這東西,想要在 JSON 上面提出拓展,讓人更好維護。\r\n\r\n有幾個設計是大家已經想很久了。\r\n\r\n首先是允許註解:\r\n\r\n
{\r\n  # specify rate in requests/second\r\n  \"rate\": 1000\r\n}
\r\n\r\n再來是允許 ending trailing comma,這點在新的 JavaScript Engine 裡面是允許的,但在 JSON 規格裡是不允許的,對於 copy-paste 時就得很小心有沒有中獎:\r\n\r\n
{\r\n  one: 1,\r\n  two: 2,\r\n}
\r\n\r\n另外幾個特點就還好。\r\n\r\nobject 的 key 沒有特殊情況時可以省略 double quote:\r\n\r\n
{\r\n  key: \"value\"\r\n}
\r\n\r\n甚至 value 是 single line 時也可以省略:\r\n\r\n
{\r\n  text: look ma, no quotes!\r\n}
\r\n\r\n而且當沒有 double quote 時不需要處理 escape 問題:\r\n\r\n
{\r\n  path: c:\\windows\r\n  inject: <div class=\"important\"></div>\r\n\r\n  # escapes work inside quotes\r\n  escape: \"c:\\\\windows\"\r\n}
\r\n\r\n然後逗點可以省略,給的範例也突顯出對腦袋不直覺的問題 (ambiguous),這邊的 1 是 integer 還是 string?\r\n\r\n
{\r\n  one: 1\r\n  two: 2\r\n}
\r\n\r\n多行,用 ''' 應該是借用了 Python 的想法?\r\n\r\n
{\r\n  haiku:\r\n    '''\r\n    JSON I love you.\r\n    But strangled is my data.\r\n    This, so much better.\r\n    '''\r\n}
\r\n\r\n規格後面有提到 syntax,可以看到定義。\r\n\r\nHjson 算是一個開始吧,YAML 的設計需要極長的 training 時間才能正確使用,不知道 SaltStack 會不會有人馬上寫 adapter 出來接?(因為 SaltStack 已經可以接 JSON 與 YAML,只要有人把該接的接上去就可以了)", + "title": "Hjson:the Human JSON" + }, + { + "id": "5157", + "body": "Composer 是目前 PHP 世界裡比較紅的套件管理工具,內建了一些 autoload 模組,以及 Packagist 這個巨大的 ecosystem。\r\n\r\n在「Installing Composer Packages」這篇文章裡提到要如何在 Composer 裡指定套件的版本。在這之前,你需要先知道什麼是 Semantic Versioning,然後再來看作者的論述。\r\n\r\n直接講結論,文章裡推薦用 ~ 的方式指定版本,這通常會是你要的結果:用 ~1.2 表示 >=1.2.0,<2.0.0;而用 ~1.2.3 則可以表示 >=1.2.3, <1.3。\r\n\r\n在對付 compatibility 問題時還蠻常見的情況。", + "title": "Composer 的版本選擇方式" + }, + { + "id": "5159", + "body": "在 Zite 上看到「Tiny Anonabox to offer online anonymity through Tor」這篇文章。\r\n\r\n\"\"\r\n\r\n在 Kickstarter 上可以看到更完整的資料:「anonabox : a Tor hardware router」。\r\n\r\n可以想像出來大概是什麼技術組合起來。分別處理 DNS query 以及實際連線的部份應該就可以搞定很多應用了。\r\n\r\n不知道隱私的部份可以做到什麼程度,畢竟在 Tor 上面仍然有監聽的風險,如果讓 HTTP traffic 在上面跑的話等於是裸奔...", + "title": "自動將流量轉到 Tor 上面的硬體" + }, + { + "id": "5161", + "body": "Hacker News 一向是個重要的資訊來源,以往大家要分析 Hacker News 上的文章都是自己硬幹:爬網站的結構後再做後續處理。而現在總算是不用全部硬幹了,官方提供 API 讓大家存取:「Hacker News API」。\r\n\r\n透過與 Firebase 的合作 (YC S11,Y Combinator Summer 2011),Hacker News 的資料可以透過 Firebase 提供的 API endpoint 取得了。\r\n\r\n接下來應該可以看到更多資料被丟出來玩?", + "title": "Hacker News 的 API" + }, + { + "id": "5164", + "body": "這次的慘案是由 Google 的人找到 SSL 3.0 的問題:「This POODLE bites: exploiting the SSL 3.0 fallback」。\r\n\r\nGoogle 提供的解法有兩種。一種是關掉 SSL 3.0,另外一種是關掉 SSL 3.0 的 CBC-mode cipher,但兩種解法都還是會痛:\r\n\r\n
Disabling SSL 3.0 support, or CBC-mode ciphers with SSL 3.0, is sufficient to mitigate this issue, but presents significant compatibility problems, even today.
\r\n\r\n提到相容性問題的原因是 Windows XP + IE6 的組合,在預設安裝下是不支援 TLS 1.0 的 (需要另外打開選項啟用),而看到那個 11.1%:\r\n\r\n\"\"\r\n出自「Internet Explorer - IE 6 Countdown | Modern.IE\r\n\r\n另外是 SSL 3.0 如果不支援 CBC-mode cipher 的話,也只剩下 RC4,而這早就千窗百孔了:\r\n\r\n\"\"\r\n出自「Transport Layer Security\r\n\r\n也因此,在 CBC-mode cipher 與 RC4 都不能用的情況下,CloudFlare 決定直接關閉 SSL 3.0:「SSLv3 Support Disabled By Default Due to POODLE Vulnerability」。\r\n\r\n而其他廠商提供的方案也都差不多,像是 AWS 的「CVE-2014-3566 Advisory」裡建議的解法也是關閉 SSL 3.0:\r\n\r\n
This includes disabling SSLv3 on both server and client implementations.
\r\n\r\n新推出的 security policy (ELBSecurityPolicy-2014-10) 裡也直接關掉 SSL 3.0,讓真的有需要的人再手動加上去,或是選擇一月的版本。\r\n\r\nSSL 3.0 推出 18 年後總算要被殲滅了...", + "title": "SSL 3.0 爆炸,CVE-2014-3566,POODLE" + }, + { + "id": "5166", + "body": "在「How do I patch/workaround SSLv3 POODLE vulnerability (CVE­-2014­-3566)?」這篇文章裡提到了強制 Google Chrome 使用 TLS 1.0+ 的方法。\r\n\r\n打開 /usr/share/applications/google-chrome.desktop,把這行:\r\n\r\n
Exec=/usr/bin/google-chrome-stable %U
\r\n\r\n改成:\r\n\r\n
Exec=/usr/bin/google-chrome-stable --ssl-version-min=tls1 %U
\r\n\r\n然後重新啟動 Google Chrome 就可以了...", + "title": "Ubuntu 下強制 Google Chrome 使用 TLS 1.0+" + }, + { + "id": "5168", + "body": "Imgur 宣佈 GIFV 計畫:「Introducing GIFV」。\r\n\r\n\r\n\r\n上面這個影片是 Imgur 的範例影片,將 50MB 的 GIF 轉成 3.4MB 的 MP4。\r\n\r\n之前在今年年初的「用 HTML5 video 取代動態 GIF 的 Hosting 服務...」這篇寫過類似的服務,Imgur 也跳進來玩了...\r\n\r\n可以省很多頻寬 :p", + "title": "Imgur 的 GIFV (GIF 轉 MP4)" + }, + { + "id": "5170", + "body": "前幾天推出的 Firefox 33 把 Cisco 弄出來的 OpenH264 給包進去了,使用者不需要再透過 flash 就可以觀看 H.264 的影片:「Firefox — Notes (33.0) — Mozilla」。\r\n\r\nImgur 的計畫 (「Imgur 的 GIFV (GIF 轉 MP4)」這篇提到的東西) 看起來跟這個有關...\r\n\r\n不過算一算日期,這個版本一定有 SSL 3.0 的問題 (POODLE),使用者還是得自己設定 TLS 的最小版本號碼,這點就比較可惜了...", + "title": "Firefox 33,總算支援 H.264 了..." + }, + { + "id": "5172", + "body": "在 Hacker News Daily 上看到「Monodraw for Mac — Helftone」這東西:\r\n\r\n\"\"\r\n\r\n多弄幾張圖:\r\n\r\n\"\"\r\n\r\n嗯啊...", + "title": "Mac 上 ASCII Art 編輯器..." + }, + { + "id": "5175", + "body": "前幾天提到的「自動將流量轉到 Tor 上面的硬體」,在 10/17 的時候被 Kickstarter 停權中止募資了,在「Kickstarter Suspends Anonabox Security Appliance Project」有些說明:\r\n\r\n
The policy allows for suspension if the project's creator is presenting someone else's work as their own.
\r\n\r\n現在看起來的情況是,Anonabox 像是直接拿別人的東西就來用,沒有實質上的改進。\r\n\r\n文章裡有提到一些既有的方案可以用,如果有需求的人可以直接參考 :o", + "title": "Anonabox 被停權中止募資" + }, + { + "id": "5177", + "body": "從「MasterCard's New Credit Card Will Come With a Fingerprint Scanner」這邊看到的:\r\n\r\n\"\"\r\n\r\n金融產業一向是被逼了以後才會做的 (因為本來就賺的好好的,而且帶有壟斷性質):\r\n\r\n
But MasterCard is now teaming up with biometric tech company Zwipe to prevent people from paying for items this way with stolen credit cards.
", + "title": "MasterCard 推出需要指紋辨識後才能使用的信用卡" + }, + { + "id": "5179", + "body": "Mac OS X Yosemite 已經出來了 (10.10),很多人用的 Homebrew 也隨之爆炸了...\r\n\r\n在「Yosemite & Homebrew」這篇文章裡面說明了這次 Yosemite 與 Homebrew 搭配上的問題,描述了這些問題的起因。如果不急著升級的人可以先放著 Mavericks (10.9) 一陣子再說...\r\n\r\n或者是資料備份出來重灌... (這方法就是對付 Windows 升級的方法... XDDD)", + "title": "Yosemite 與 Homebrew" + }, + { + "id": "5181", + "body": "DigitalOcean 在「Easily Automate The Provisioning Of Your DigitalOcean Droplets!」這篇裡面提到了 metadata server:「An Introduction to Droplet Metadata」。\r\n\r\n完整的資料可以看「Droplet Metadata Overview」這邊,不過直接看 code 就知道大概是什麼樣子的服務了:\r\n\r\n
export HOSTNAME=$(curl -s http://169.254.169.254/metadata/v1/hostname)
\r\n\r\n這對於自動化時要取得資訊 (或是傳入參數) 會很有幫助,有這個東西會省不少功夫... (以往要自己架一組 cluster,以 public ip 對 API 交叉查詢後傳回)", + "title": "DigitalOcean 也提供 metadata service 了" + }, + { + "id": "5183", + "body": "在寫 shell script 時,[[[ 到底用起來有什麼不一樣?查出來記錄起來:「What is the difference between double and single square brackets in bash?」。\r\n\r\n第一高分的答案 (由 Kyle Brandt 回答) 與第二高分的答案 (由 abhiomkar 回答) 都值得看,尤其是 abhiomkar 寫的範例很清楚:\r\n\r\n
  $ [ a < b ]\r\n -bash: b: No such file or directory\r\n  $ [[ a < b ]]
\r\n\r\n對判斷式子裡面的解讀是不一樣的。", + "title": "[ 與 [[ 的差異 (Left square bracket)" + }, + { + "id": "5185", + "body": "Cedexis 的「Real time data for real time decisions」蒐集了各家 CDN 在各地的連線資訊,包括了 response time、throughput 這些資訊,能夠解讀的話對於事前分析會很有幫助。\r\n\r\n舉個例子來說,泰國地區 2014/10/20 的數字如下圖。\r\n\r\n先從 latency 的部份開始看,可以看到 AkamaiCDNetworks 的速度分別是 52ms 與 63ms,可以合理猜測都是在泰國當地有 PoP 直接服務。而 LimelightCloudFront 要 98ms 與 111ms,看起來最少是新加坡或是香港?\r\n\r\n而 availability 的部份也可以看出來國內線路的優勢,只要一跨國就不好維持。\r\n\r\n這樣就可以針對需求而決定要找哪幾家 CDN 業者來談。在找 CDN 業者實際測試前,先看看這邊的資料會是很不錯的資訊,可以省下不少白工。\r\n\r\n\"\"", + "title": "查看各家 CDN 在各地的狀態" + }, + { + "id": "5188", + "body": "半年多前 CloudFront 在 web console 上實做了統計資訊:「Amazon CloudFront 可以從 Web Console 上看到統計資料了」,而今天可以看到更多東西了:「CloudFront Update - Trends, Metrics, Charts, More Timely Logs」。\r\n\r\n首先是確保收到 log 的時間差,目前可以確保一個小時內會收到 log:\r\n\r\n
With these changes, the newest log files in your bucket will reflect events that have happened as recently as an hour ago.
\r\n\r\n再來是多了 cache 分析:\r\n\r\n\"\"\r\n\r\n以及熱門物件統計資訊:\r\n\r\n\"\"\r\n\r\n也是其他 CDN 業者都已經有的功能,算是在補 :p", + "title": "CloudFront 統計資料繼續改善..." + }, + { + "id": "5192", + "body": "上次開 us-west-1 (Ireland) 是 2008 年 12 月了,離這次 eu-central-1 (Frankfurt) 開在德國差了快八年:「Now Open - AWS Germany (Frankfurt) Region - EC2, DynamoDB, S3, and Much More」。\r\n\r\n六月的時候有人發現 eu-central-1 這個代碼:「Amazon AWS builds a data center in Germany: Nice idea!」。\r\n\r\n比較有趣的是,公告雖然出來了,但有些地方好像還沒完全搞定:\r\n\r\n\"\"\r\n\r\n價錢的部份比 eu-west-1 貴一點點而已,對於要符合歐盟法令將資料留在歐盟地區,並且希望有遠距離異地建設的服務來說,解決了相當多的問題 :p\r\n\r\n剛剛踹了 ec2.eu-central-1.amazonaws.com 這個 domain,看起來目前亞洲地區都還是從美國西岸再一路過去,不知道之後會不會再最佳化這塊,走俄羅斯或是有辦法走東歐過去...", + "title": "AWS 在歐洲開第二個資料中心了:德國" + }, + { + "id": "5194", + "body": "CloudFront 的進一步更新出來了,剛剛看到信件通知。分成兩種 case,一種是使用 dedicated IP 服務的人,一種是使用 *.cloudfront.net 的人。\r\n\r\n使用 dedicated IP 的人仍然可以打開 SSLv3,不過 CloudFront 建議在 use case 允許下不要開:\r\n\r\n
If you are using the Dedicated IP Custom SSL Certificates to serve SSL traffic, you may configure whether your distribution accepts SSLv3 connections. We have added an option to select this in both the console and the API. For existing distributions that use Dedicated IP Custom SSL, the default value for this new setting will be to allow SSLv3, so you will need to update your distributions if you want to disallow SSLv3. We do recommend that customers disable SSLv3 if their use case allows it.
\r\n\r\n使用 *.cloudfront.net 預定在 2014/11/03 之後就會關閉 SSLv3:\r\n\r\n
Additionally, starting on November 3rd, 2014, we will begin disabling SSLv3 for ALL customers who use SSL with the default CloudFront domain name (*.cloudfront.net). If you believe that this policy will negatively affect your website or application, please contact us as soon as possible so that we can discuss your options: https://aws.amazon.com/forms/poodle_sslv3
\r\n\r\n而使用 SNI 的人不需要管這件事情,因為這代表你已經是用 TLS 了:\r\n\r\n
If you're using Custom SSL Certificates and Server Name Indication (SNI), you don’t need to take any action because, as SNI-Only Custom SSL distributions already did not allow SSLv3 connections.
", + "title": "CloudFront 對 POODLE 的安全性更新" + }, + { + "id": "5197", + "body": "在「Optimizing Your psql」這篇介紹了 PostgreSQL 的 command line 工具 psql 要怎麼調整讓他變好用。\r\n\r\n這篇文章是入門的調整,藉由 $HOME/.psqlrc 裡的幾行設定,就可以讓系統變得好用很多,可以看到最後面給的 .psqlrc 也才八行...", + "title": "PostgreSQL 的 command line 工具調整" + }, + { + "id": "5199", + "body": "這也不知道積了多久,九月 Facebook 的文章,最近被同事提起來才又仔細看:「Introducing mcrouter: A memcached protocol router for scaling memcached deployments」。\r\n\r\nmemcached 應該當作普通的 cache layer 來用,拿來放掉了也沒關係的資料。如果掉了會很痛的資料應該丟到 Redis 或是 MySQL 這類 persistent storage。\r\n\r\n但有些資料介於兩者之間,掉了會讓使用者用起來不太爽,但也不會死人... 於是總是想要在這上面做些改善。\r\n\r\nFacebook 開發的 mcrouter 就可以拿來解這類問題。其中一個 scenario 是「寫的不多,但讀德很多」,寫的時候寫到所有機器上,但讀取時只挑一台:\r\n\r\n\"\"\r\n\r\n而這個架構其實可以配合用在 memcached 的 HA 機制上。當有機器爛掉重開機變成空的 cache server 回來時可以暖機:\r\n\r\n\"\"\r\n\r\n不過程式看起來並不好編,要先搞定 Facebook 的兩個 C++ 的套件後才能編...", + "title": "Facebook 的 mcrouter" + }, + { + "id": "5202", + "body": "因為從以前到現在的歷史記錄都被累積起來,Bitcoin 電子錢包初始化所需要的時間變得很長,所以就有不少方法想要改善。\r\n\r\n在「Bitcoin Blockchain Initial Sync Time Dramatically Reduced By Headers-First Sync」這篇文章裡面提到了一些事情。\r\n\r\n目前的歷史記錄大約是 22GB,文章裡說平均是兩天可以跑完 (我自己是跑了五天...),但另外一個方法則是可以透過「[ANN] Bitcoin blockchain data torrent」這邊提供的 BitTorrent 方式下載記錄 import 進去,這樣就有機會縮短到 4 小時。\r\n\r\n另外被提出來的方案是減少傳輸量先確認。而且這個方法已經被 merge 進官方的 client 了:「Headers-first synchronization」,過陣子來測看看速度如何...", + "title": "Bitcoin 電子錢包的初始化加速" + }, + { + "id": "5204", + "body": "在「Facebook Yahoo Require-Recipient-Valid-Since SMTP Extension」這篇看到 Require-Recipient-Valid-Since (RRVS) 變成 Proposed Standard 了:「The Require-Recipient-Valid-Since Header Field and SMTP Service Extension」(RFC 7293)。\r\n\r\n起因是從 2013 年的「yourname@yahoo.com Can Be Yours!」這篇開始的:Yahoo! 宣佈會釋出太久沒有使用的 @yahoo.com 帳號讓其他人可以註冊。\r\n\r\n而這導致了帳號綁定問題:如果使用者先前在 Facebook 上 (或是其他服務) 有綁定 Yahoo! 帳號,而他的 Yahoo! 帳號被釋出被其他人拿走後,其他人就可以利用重設密碼的功能取得 Facebook 帳號權限。\r\n\r\nYahoo! 對這個問題的解法是透過 Require-Recipient-Valid-Since 處理,服務方 (像是 Facebook) 在發出重要信件時帶入 Require-Recipient-Valid-Since,要求這封信必須在某個時間點後有效,才能讓收信者看到這封信的內容。\r\n\r\nFacebook 的人在「Protecting Facebook Accounts With New Email Standard」也提到了這個新標準。", + "title": "用 Require-Recipient-Valid-Since (RRVS) 解決帳號失效的問題" + }, + { + "id": "5206", + "body": "在「How to block Canvas Fingerprinting in Firefox」這篇終於看到擋 Canvas Fingerprint 的延伸套件了:「CanvasBlocker」。\r\n\r\n關於 Canvas Fingerprint,可以參考之前「用 Canvas Fingerprint 取代部份 Cookie」這篇文章。\r\n\r\n截圖看起來有點陽春 (設定的方式很 geek),不過算是個開始,之後應該會愈改愈好:\r\n\r\n\"\"", + "title": "Firefox 擋 Canvas Fingerprint 的套件" + }, + { + "id": "5208", + "body": "nginx 的創辦人在接受 InfoWorld 訪問時提到了打算使用 JavaScript 做為設定檔的計畫:「The company plans to let you use JavaScript as an application language in its eponymous Web server」。\r\n\r\n
We're planning JavaScript configurations, using JavaScript in [an] Nginx configuration. We plan to be more efficient on these [configurations], and we plan to develop a flexible application platform. You can use JavaScript snippets inside configurations to allow more flexible handling of requests, to filter responses, to modify responses. Also, eventually, JavaScript can be used as [an] application language for Nginx. Currently we have only Perl and Lua [supported in Nginx]. Perl is our own model, and Lua is a third-party model.
\r\n\r\n目前的設定檔算是 DSL?還蠻有趣的想法...", + "title": "nginx 打算使用 JavaScript 的方法..." + }, + { + "id": "5210", + "body": "在「Adding an (SHA256 signed) SSL certificate」這篇文章裡提到要如何簽出帶 SHA256 的 SSL certificate,重點在於要先生出有 SHA256 的 CSR,然後拿著這份給 CA 簽。\r\n\r\n先照抄過來,看起來是有 encrypted 過的版本:\r\n\r\n
openssl genrsa -aes256 -out example-encrypted.key 2048\r\nopenssl rsa -in example-encrypted.key -out example-decrypted.key\r\nopenssl req -new -sha256 -key example-decrypted.key -out example.csr
\r\n\r\n如果不加密的話應該是:\r\n\r\n
openssl genrsa -out example.key 2048\r\nopenssl req -new -sha256 -key example.key -out example.csr
\r\n\r\n然後照著文章裡的說明輸入對應的資訊,然後拿著這份 CSR 檔給 CA 簽。", + "title": "產生 SHA256 的 SSL Certificate" + }, + { + "id": "5212", + "body": "在「Dropcap.js: Easily add drop caps to your web typography」這邊看到 Adobe 用 JavaScript 實做了段落頭字的放大效果。本來以為這個效果有 CSS 支援,翻了一下沒找到...\r\n\r\n\"\"\r\n\r\n官網在「dropcap.js」這邊,GitHub 的頁面在「Beautiful CSS drop caps made easy」這邊。", + "title": "dropcap.js:頭字放大效果" + }, + { + "id": "5214", + "body": "在 Slashdot 上看到 LinkedIn 對美國的大專院校排名:「Be True To Your CS School: LinkedIn Ranks US Schools For Job-Seeking Programmers」。\r\n\r\n軟體工程師的部份在這邊:「LinkedIn 大學排名 — 軟體開發人員」。Slashdot 上的 comment 瞬間就戰起來,然後還有人跑出來問怎麼沒有美國外的資料 XDDD\r\n\r\nCMU 第一名不算奇怪,但 Stanford 意外的後面?", + "title": "LinkedIn 依照他們的資料對美國的大專院校排名" + }, + { + "id": "5221", + "body": "Hacker New Daily 上看到的:「Fix Mac OS X Yosemite」。原因是 Spotlight 的部份 AppleBing 合作:\r\n\r\n
If you've upgraded to Mac OS X Yosemite (10.10) and you're using the default settings, each time you start typing in Spotlight (to open an application or search for a file on your computer), your local search terms and location are sent to Apple and third parties (including Microsoft).
\r\n\r\n有兩個地方要關閉。一個是系統設定,一個是 Safari 設定,細節在原文裡面有,這邊就不抄過來了。", + "title": "修正 Mac OS X Yosemite (10.10) 的設定以確保隱私" + }, + { + "id": "5224", + "body": "忘記是在哪邊看到的,留在 browser tab 上好幾天了:「Vectorized executor to speed up PostgreSQL」。\r\n\r\n目前是針對比較簡單的條件加速:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n不知道會不會被 merge 回去...", + "title": "Vectorized executor 加速 PostgreSQL 查詢速度" + }, + { + "id": "5226", + "body": "在 Percona 的「How to deal with MySQL deadlocks」這篇文章裡面提到了 MySQL InnoDB Deadlock 的判讀與處理。\r\n\r\n在支援 transaction 的 engine 裡 deadlock 是不可避免的常態。\r\n\r\n在 MySQL 5.5 以及之前的版本,可以透過 Percona 的 pt-deadlock-logger 這隻 script,每固定幾秒鐘就跑一次 SHOW ENGINE INNODB STATUS 記錄下來。在 MySQL 5.6 之後,可以直接使用 innodb_print_all_deadlocks 這個參數,遇到 deadlock 時就寫到 error log 裡。\r\n\r\n有了 log 後,接下來就可以判讀 deadlock 的情況,得知是什麼樣的情況造成 deadlock。\r\n\r\n文章最後面則是對減少 deadlock 的方法給了一些建議,都是比較一般性。一般還是要靠 bussiness logic 的分析來切割降低 deadlock 的情況。\r\n\r\n不過這篇文章需要一些背景知識,像是 InnoDB Lock Modes 與維基百科上的「Multiple granularity locking」,對解讀會有更多幫助。", + "title": "MySQL InnoDB 遇到 Deadlock 時的判讀" + }, + { + "id": "5228", + "body": "Daniel J. Bernstein (djb) 在巴西 H2HC 11 的的演講投影片:「Making sure crypto stays insecure」(PDF)。\r\n\r\n對政府單位來說,並不樂見有安全的密碼系統。因為安全的密碼系統對於政府監控人民是個麻煩。\r\n\r\n如果十年前拿出來講,可能大多數人會覺得投影片裡面的內容太過於「被害妄想」,但經過 Edward Snowden 的努力後,被證實政府完全站在人民的反面。\r\n\r\n在演算法裡面藏後門 (經典的 Dual_EC_DRBG);干擾標準的制定,讓實做變得複雜,於是就會變得難以正確實做;在標準裡面故意低估安全威脅 (尤其是 timing attack 類);放出過時消息宣稱加密的成本很高 (指時間成本)。\r\n\r\n這種種事情的透漏,甚至讓小說作者 cancel 掉小說的續集 (第三集),因為他發現他要寫的故事內容 NSA 都已經做過了:「Sci-fi Author Charles Stross Cancels Trilogy: the NSA Is Already Doing It」。\r\n\r\n很精彩的投影片,對資安有興趣的人都應該看一看。", + "title": "djb 的密碼學陰謀論" + }, + { + "id": "5230", + "body": "也是積了很久的文章,Redis 的其中一位老大 Salvatore Sanfilippo 在第一個公開 Redis Cluster 功能的 3.0.0-rc1 版寫下了 Redis Cluster 的發展過程:「Redis cluster, no longer vaporware.」。\r\n\r\nMySQL InnoDB 可以保證極強的 ACID 特性,配合 DRBD 這類的 HA 架構,可以保證 server 回了成功後一定不會掉資料。\r\n\r\nmemcached 則是 Shared nothing architecture,當初設計就是拿來當 cache,資料隨便掉沒關係。\r\n\r\n兩者中間還是有很大的空間,而 Redis Cluster 的出現有機會入場看看情況了,不知道能不能在 InnoDB 與 memcached 中間找到適合的點立足。", + "title": "真正的 Redis Cluster" + }, + { + "id": "5233", + "body": "Facebook 宣佈了 https://facebookcorewwwi.onion/ 這個 Tor hidden service:「Making Connections to Facebook more Secure」,讓人可以直接在 Tor 的網路裡連上 Facebook。\r\n\r\nFacebook 的人用的方法與其他人一樣,是透過 brute force 算出這個 hidden service。\r\n\r\n但這也直接證明了 Tor Hidden Service 不安全:(參考這個註解的說明)\r\n\r\n
If Facebook has the resources to brute force their own full key, then you better believe the NSA and GCHQ do too. Which means that you will no longer know if the hidden service you're connecting to is the real one or the NSA/GCHQ version. Tor hidden services are now dead.
\r\n\r\n這次未免太精彩了 XDDD", + "title": "Facebook 證明 Tor 的 Hidden Service 不安全" + }, + { + "id": "5235", + "body": "長久以來 AWS Support Center 都是在另外一個界面裡,而現在可以在 AWS Management Console 裡使用了:「AWS Support Center Moves to AWS Management Console」。\r\n\r\n\"\"", + "title": "AWS Support Center 搬到 AWS Management Console 裡..." + }, + { + "id": "5237", + "body": "Crypto 101 是一本近代密碼學的入門書,目前還在寫,原始的 TeX source 可以在 GitHub 的「crypto101/book」這邊看到。\r\n\r\n其實內容不淺,講了很多新東西 (看到 Salsa20 出現的時候...),而且也講了很多攻擊方式。高階的東西 (SSL/TLS、PGP 系列) 也拉出來講。\r\n\r\n等到完成的時候應該是很不錯的資料 :p", + "title": "Crypto 101" + }, + { + "id": "5240", + "body": "在 DigitalOcean 上的教學文章看到另外一種 MySQL 效能測試的方法:「How To Measure MySQL Query Performance with mysqlslap」。\r\n\r\n一般會拿 Perconatpcc-mysql 測,用 mysqlslap 好像比較少看到,雖然也是蠻有名的工具...\r\n\r\n不過還是可以拿來玩玩看,互相比較的時候是一個指標...", + "title": "測試 MySQL 效能的方法" + }, + { + "id": "5243", + "body": "從「1939 from Gandhi to Hitler」這邊看到的,第二次世界大戰前一個月,甘地寫信給希特勒:\r\n\r\n\"\"", + "title": "二戰前甘地寫給希特勒的信" + }, + { + "id": "5245", + "body": "在「How much bigger is Amazon’s cloud vs. Microsoft and Google?」這篇文章裡用營收來估算...\r\n\r\n
But, a new report from New Hampshire-based firm Technology Business Research estimates Amazon’s cloud revenue at more than $4.7 billion this year. TBR pegs Microsoft’s public cloud IaaS revenue at $156 million and Google’s at $66 million. If those estimates are correct than Amazon’s cloud revenue is 30 times bigger than Microsoft’s.
\r\n\r\n如果用估算的營收來比較,與第二大的 Microsoft 相差 30 倍,超級大的差距...", + "title": "估計 Amazon、Microsoft、Google 雲端服務平台的相對大小" + }, + { + "id": "5247", + "body": "因為要賣廣告了:「Disqus Launches Global Programmatic Native Advertising」。\r\n\r\nMatt Mullenweg 寫得更直接 (WordPress 的 co-founder,同時也有競爭性產品 IntenseDebate):「Disqus Spam + Ads」。\r\n\r\n所以就改回 WordPress + Akismet 吧...", + "title": "移除 DISQUS..." + }, + { + "id": "5249", + "body": "從「OpenSSL CSR with Alternative Names one-line」這篇看到的方法,一行解決,可以寫到 Makefile 之類的地方處理?\r\n\r\n給了兩個範例:\r\n\r\nopenssl req -new -key endpoint.com.key -sha256 -nodes -subj '/C=US/ST=New York/L=New York/O=End Point/OU=Hosting Team/CN=www.endpoint.com/emailAddress=administrative-not-existent-address@our-awesome-domain.com/subjectAltName=DNS.1=endpoint.com' > www.endpoint.com.csr\r\n\r\n以及:\r\n\r\nopenssl req -new -key endpoint.com.key -sha256 -nodes -subj '/C=US/ST=New York/L=New York/O=End Point/OU=Hosting Team/CN=www.endpoint.com/emailAddress=administrative-not-existent-address@our-awesome-domain.com/subjectAltName=DNS.1=endpoint.com,DNS.2=usually-not-convered-domain.endpoint.com,DNS.3=multiple-domains-crt.endpoint.com' > www.endpoint.com.csr\r\n\r\n記錄起來,以後應該還用的到 :p", + "title": "由 RSA Key 產生 CSR 的方法 (OpenSSL)" + }, + { + "id": "5251", + "body": "zonble 丟出來的,技術上沒什麼,但就是有人會去刻界面 XDDD\r\n\r\n\"\"\r\n\r\n出自「A reimplementation of Winamp 2.9 in HTML5 and Javascript」這個計畫。一如往常:\r\n\r\n
Works in modern versions of Firefox, Safari and Chrome. Untested in IE.
\r\n\r\n(噴)", + "title": "瀏覽器版本的 Winamp..." + }, + { + "id": "5253", + "body": "也是不知道在哪邊看到的,反正容易安裝就裝起來玩玩看:「XSScrapy: fast, thorough XSS vulnerability spider」。XSScrapy 是一套自動化攻擊軟體,是目前這類測試軟體裡用起來最簡單的版本。\r\n\r\n直接 clone 下來就可以執行了,如果有遇到 dependency 的問題,可以透過 pip 安裝:\r\n\r\npip install -r requirements.txt\r\n\r\n執行的方法就這樣:\r\n\r\n./xsscrapy.py -u http://example.com\r\n\r\n上面這個方法是在訪客模式下慢慢跑,你也可以給他一組帳號密碼讓他填 form,他會試著登入後不斷打下去:\r\n\r\n./xsscrapy.py -u http://example.com/login_page -l loginname -p pa$$word\r\n\r\n也可以用 HTTP Basic Authentication:\r\n\r\n./xsscrapy.py -u http://example.com/login_page -l loginname -p pa$$word --basic\r\n\r\n然後發現的問題會寫到 XSS-vulnerable.txt 裡面:\r\n\r\n
XSS vulnerabilities are reported in XSS-vulnerable.txt
\r\n\r\n用法就這樣而已... XD", + "title": "XSScrapy:自動化 XSS 攻擊" + }, + { + "id": "5256", + "body": "不知道為什麼網路上一堆文章寫的超複雜 XD\r\n\r\n目前必須使用 CLI 才能上傳 key 與 SSL certificate,所以乖乖的裝上 aws-cli 吧 :p\r\n\r\n而通常在買 Wildcard SSL 時會 *.example.com 的時候會簽成 example.com + *.example.com,這時候用 example.com 當名字掛進去:\r\n\r\naws iam upload-server-certificate --server-certificate-name example.com --certificate-body file://server.crt --private-key file://server.key --certificate-chain file://intermediate.crt --path /cloudfront/\r\n\r\n一樣可以確認:\r\n\r\naws iam get-server-certificate --server-certificate-name example.com\r\n\r\n會改到的幾個部份用粗體標出來了。\r\n\r\n上傳完成後就可以到 Web Console 上的 CloudFront 部份設定了。\r\n\r\n主要是參考「Building a CDN over SSL with CloudFront and SNI」這篇文章的說明,再加上一些亂試後去翻文件確認的結果 :o", + "title": "設定 CloudFront 的 Wildcard SSL (SNI)" + }, + { + "id": "5259", + "body": "出自「Resizing the InnoDB Buffer Pool Online」這邊,在 manual 上「Resizing the InnoDB Buffer Pool Online」也可以看到說明。\r\n\r\ninnodb_buffer_pool_size 變得可以動態調整,表示在抓 InnoDB 在記憶體裡的大小時更容易微調,不用花很長的時間去觀察調整... 小功能但應該會很好用?", + "title": "MySQL 5.7 的 InnoDB Buffer Pool Size 可以動態調整" + }, + { + "id": "5261", + "body": "維基百科打算改善手上檔案的 metadata:「Cleaning up file metadata, for humans and robots」。\r\n\r\n查了一下,看起來是「Commons:Machine-readable data」這邊的規範,利用 <td> 裡的 id attribute?那這樣一份文件不是只能有一個嗎?有些狀況應該是不能只有一個...\r\n\r\n還有點看不太懂細節,不過這件事情會大大的影響整個 internet,因為 Wikipedia 是目前品質與量都很高的資料來源,常常是各種服務的加值資料來源 (像是 Facebook 的粉絲頁,以及 Google 搜尋的結果)", + "title": "改善維基百科的 Metadata" + }, + { + "id": "5265", + "body": "Docker 愈來愈紅,而 image 也愈來愈多,於是就有人討論要如何做出好的 Docker image。\r\n\r\n在「Building good docker images」這篇文章裡提到了不少現象以及改善的技巧。\r\n\r\n首先是 base image 的選用。除非有特別的理由,不然作者建議是基於 debian:wheezy (85MB) 而非 ubuntu:14.04 (195MB)。甚至在某些極端的情況下,你可以選擇 busybox (2MB)。\r\n\r\n再來是沒事不要塞 build tools 進去,除非那是之後執行必要的東西。\r\n\r\n然後是避免暫存檔的產生,作者舉的例子還蠻容易懂的。這樣是 109MB:\r\n\r\n
FROM debian:wheezy\r\nRUN apt-get update && apt-get install -y wget\r\nRUN wget http://cachefly.cachefly.net/10mb.test\r\nRUN rm 10mb.test
\r\n\r\n而這樣只有 99MB,原因是每一個 RUN 都會疊一層上去:\r\n\r\n
FROM debian:wheezy\r\nRUN apt-get update && apt-get install -y wget\r\nRUN wget http://cachefly.cachefly.net/10mb.test && rm 10mb.test
\r\n\r\n所以,同樣的道理,要避免暫存檔時,可以考慮這種寫法:\r\n\r\n
wget -O - http://nodejs.org/dist/v0.10.32/node-v0.10.32-linux-x64.tar.gz | tar zxf -
\r\n\r\n以及裝完後馬上 clean:\r\n\r\n
FROM debian:wheezy\r\nRUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
\r\n\r\n後面還有一些技巧,不過前面講的空間問題比較重要。", + "title": "如何做出好的 Docker Image" + }, + { + "id": "5271", + "body": "xkcdEfficiency:\r\n\r\n\"\"\r\n\r\n看了頗有感觸...", + "title": "效率" + }, + { + "id": "5276", + "body": "BBC 跑去 NASA 在俄亥俄州的 Space Power Facility 做實驗:「The Hammer-Feather Drop in the world’s biggest vacuum chamber」。\r\n\r\n\r\n\r\n超大的真空環境!XD", + "title": "真空環境下,羽毛與保齡球的自由落體" + }, + { + "id": "5278", + "body": "100% 的 uptime 有點誇張啦,不過看到這篇文章有些啟發:「Multi-Home the Data Center for 100% uptime」。\r\n\r\n\"\"\r\n\r\n這張圖裡面,如果 DC1 的 DB master 掛掉,那麼 DC2 也只能進入唯讀狀態?甚至有些應用連唯讀狀態都不能進...\r\n\r\n不過想到 Percona XtraDB Cluster 放三個機房的方法,不過如果只放三台的話會有其他的風險就是了,本粗一點變成六台 (每個機房都兩台) 也是個方法 :o", + "title": "多資料中心的備援機制" + }, + { + "id": "5280", + "body": "前陣子 Facebook 提供 Tor 的 hidden service 時還提供了 SSL certificate,是由 DigiCert 簽的:「Supporting the Anonymous Use of Facebook via Tor」。\r\n\r\n而 DigiCert 打算開放給一般人申請 .onion 的 SSL certificate:「DigiCert Considering Certs for Hidden Services」。\r\n\r\n這件事情除了在技術的角度很特別外,在政治面的角度也值得被拿出來討論,也就是 DigiCert 承認 .onionTLD。\r\n\r\n各家搜尋引擎 (像是 GoogleDuckDuckGo) 開始爬 .onion 的資料也應該是遲早的事情?", + "title": "DigiCert 考慮開放 .onion 的 SSL certificate 簽章" + }, + { + "id": "5284", + "body": "到 Namecheap 上買了 SSL certificate 後裝一裝設一設,再加上 301 RedirectHSTS,總算是搞定了:\r\n\r\n\"\"\r\n\r\n不過 IE6 就確定陣亡了:\r\n\r\n\"\"\r\n\r\n之後再來把 nginx 升級跑新版,才能設 SPDY。", + "title": "把 blog.gslin.org 上 HTTPS" + }, + { + "id": "5287", + "body": "Gow 的說明:\r\n\r\n
Gow (Gnu On Windows) is the lightweight alternative to Cygwin. It uses a convenient Windows installer that installs about 130 extremely useful open source UNIX applications compiled as native win32 binaries. It is designed to be as small as possible, about 10 MB, as opposed to Cygwin which can run well over 100 MB depending upon options.
\r\n\r\n在「executables_list」這頁列出會安裝哪些軟體。\r\n\r\n很久之前還在用 Windows 時是裝「GNU utilities for Win32」這個,看起來沒在維護了。", + "title": "Gow:Cygwin 的替代方案" + }, + { + "id": "5289", + "body": "這份投影片「Performance Tuning EC2 Instances」講了不少 NetflixEC2 上各種調校的經驗。\r\n\r\n\r\n\r\n有些比較一般性,可以用在實體機器上,另外還有一些是在 vm 裡的調校。", + "title": "Netflix 在 EC2 上調校的心得" + }, + { + "id": "5291", + "body": "從「Website Peeps Into 73,000 Unsecured Security Cameras Via Default Passwords」看到的,有人掃過一輪後,把大約七萬多個攝影機的資料做成網站:「Online IP netsurveillance cameras of the world」。\r\n\r\n隨便找一個台灣的:「73454」,網站速度不快,但看起來超歡樂的...", + "title": "網路上使用預設密碼的攝影機..." + }, + { + "id": "5293", + "body": "PHP-CS-Fixer 正式釋出 1.0 版:「PHP CS Fixer finally reaches version 1.0」。\r\n\r\n原作者提到了之前的版本以 regular expression 為底,而這三個月有了大改變,現在的版本是以 token 來判斷:\r\n\r\n
The current stable version of PHP-CS-Fixer was released in August 2014 and it is still based on regular expressions, two years after the first public release. But in the last three months, things got crazy mainly because of Dariusz Ruminski. He did a great job at rewriting everything on top of a parser based on the PHP tokens, helped by 21 other contributors.
\r\n\r\n這邊寫一下用法:\r\n\r\nphp-cs-fixer fix /path --level=psr2\r\n\r\n這樣會把目錄下的所有 .php 檔都清過一次。目錄的部份也可以用檔名,表示只處理一個檔案。", + "title": "PHP-CS-Fixer 1.0 出版!" + }, + { + "id": "5295", + "body": "這幾天 Amazon 因為 re:Invent 的關係,放出了不少資料出來,其中看到有 AWS 機房的架構:「Amazon details how it does networking in its data centers」。\r\n\r\n有些資料還蠻有趣的,像是這張:\r\n\r\n\"\"\r\n\r\n每個 AZ (Availability Zone) 可能會有很多 DC (Data Center),而這些 DC 必須在 0.25ms 內。\r\n\r\n\"\"\r\n\r\nAZ 之間是 complete graph 連接,另外對多個不同的 Transit center 出去,以確保其中一個 Transit center 掛掉時仍然有備援。\r\n\r\nAZ 之間的 latency 會在 2ms 之間 (如果算來回的話是 300 公里),通常會在 1ms (算來回的話是 150 公里)。\r\n\r\n使用者的 AWS Direct Connect 則是接到 Transit center 上。\r\n\r\n\"\"\r\n\r\n每個 DC 的機器數量在 50k 到 80k 台左右。\r\n\r\n雖然應該用不到,但看這些資料還是蠻有趣的 :p", + "title": "AWS 的機房架構" + }, + { + "id": "5297", + "body": "Backblaze 的「Hard Drive SMART Stats」這篇文章裡面提到了用 S.M.A.R.T. 的資料交叉分析硬碟存活的比率。\r\n\r\n比較有趣的是對 Power_Cycle_Count 這個數據的解讀:\r\n\r\n
We’re not sure whether this is because cycling the power is bad for the drive, or because working on the pods is bad for the drives, or because “new” drives have flaws that are exposed during the first few dozen power cycles and then things settle down.
\r\n\r\n再對照其他幾張與 Power_Cycle_Count 相關的圖,通電次數看不出跟存活率有絕對關係 :p", + "title": "Backblaze 用 SMART 的資料推算硬碟故障可能性" + }, + { + "id": "5299", + "body": "Amazon RDS for Aurora 是這次 re:Invent 發表的資料庫:「Amazon Aurora - New Cost-Effective MySQL-Compatible Database Engine for Amazon RDS」。\r\n\r\n以往的資料庫都是先選定好 storage 大小、storage 種類 (以及 IOPS),然後再選擇機器大小,而要更改的時候會有 downtime。\r\n\r\n這次推出的 Amazon Aurora 則是拿掉前面兩個限制,由系統自動幫你處理:空間與 storage 種類 (包括 IOPS)。你只要選擇 instance 的種類就就可以了。\r\n\r\n重點是相容於 MySQL 啊,現有使用 MySQL 的程式大多都可以直接接上去,從 10GB 長大到 64TB 都可以無痛一直升級...\r\n\r\n由於 IOPS 的部份不需要事先 booking,機器的價錢看起來還算合理,找機會來測試看看可以惡搞到什麼程度?", + "title": "Amazon Aurora" + }, + { + "id": "5301", + "body": "這次 re:Invent 的另外一個重大發表:「New AWS Tools for Code Management and Deployment」。\r\n\r\n講的簡略一點,AWS CodeDeploy 是處理程式的 deployment,CodeCommit 是 Git hosting,CodePipeline 是 hook。\r\n\r\n不過目前只有 CodeDeploy 可以用,其他兩個還沒好:\r\n\r\n
CodeDeploy is launching today and you can start using it now. Please stay tuned for more information on CodeCommit and CodePipeline!
\r\n\r\n以往是自己兜這些方案出來,現在是 AWS 直接包好提供...", + "title": "AWS 的 CodeDeploy、CodeCommit、CodePipeline" + }, + { + "id": "5303", + "body": "AWS 預先公告新的 C4 instance:「New Compute-Optimized EC2 Instances」。\r\n\r\n
The new C4 instances are based on the Intel Xeon E5-2666 v3 (code name Haswell) processor. This custom processor, designed specifically for EC2, runs at a base speed of 2.9 GHz, and can achieve clock speeds as high as 3.5 GHz with Turbo boost. These instances are designed to deliver the highest level of processor performance on EC2.
\r\n\r\n雖然還沒正式推出,不過可以預期效能會比 C3 高出不少... (拿來跑各種運算)", + "title": "什麼都可以解決的 C4..." + }, + { + "id": "5305", + "body": "Qualys SSL Labs 在「User Agent Capabilities」有提供不少好用的資料,其中每個 client 點進去以後就可以知道支援哪些 cipher,像是「User Agent Capabilities: Android 2.3.7」這頁裡面可以看到只支援 SSLv3 以及 TLSv1,而支援的 cipher 大多都比較弱一點 (3DES 的 112bits 以及 RC4/AES 128bits 為主):\r\n\r\n\"\"\r\n\r\n就用這些資訊去湊,設上去後再實際測試 :o", + "title": "選擇 OpenSSL Cipher 時的參考資料" + }, + { + "id": "5307", + "body": "Mozilla 的 blog 上提到了 Firefox 十週年:「Celebrating 10 Years of Firefox」。\r\n\r\n2002 年,Mozilla 推出了 Firebird,後來因為商標名稱的衝突,在 2004 年 11 月 9 日改名叫 Firefox,並推出 Firefox 1.0:「Mozilla Foundation releases the highly anticipated Mozilla Firefox 1.0 web browser」。\r\n\r\nFirebird/Firefox 的出現改變了整個 web,讓人有所選擇,並且推動了 web 的發展。如果當年沒有 Firebird/Firefox,HTML5 這些新技術不知道要晚幾年才會出現。\r\n\r\nFirefox 最新的版本增加了 Forget 功能,可以「遺忘」這五分鐘的資料,或是兩小時、24 小時:\r\n\r\n\"\"\r\n\r\n這功能頗有趣的 XD", + "title": "Firefox 十週年" + }, + { + "id": "5309", + "body": "在 FOIA 下取得聯邦政府與 Aaron Swartz 相關的檔案,在 Aaron Swartz 28 歲冥誕被整理出來:「Federal law enforcement documents about Aaron Swartz, released under the Freedom of Information Act」。\r\n\r\n整理了大量被司法迫害的資料,包含了十一份影片 (收押訊問過程)、大量的照片與文件。", + "title": "在 FOIA 下所取得聯邦政府關於 Aaron Swartz 的檔案" + }, + { + "id": "5311", + "body": "在「New Event Notifications for Amazon S3」這邊提到的重點:\r\n\r\n
The bucket owner (or others, as permitted by an IAM policy) can now arrange for notifications to be issued to Amazon Simple Queue Service (SQS) or Amazon Simple Notification Service (SNS) when a new object is added to the bucket or an existing object is overwritten.
\r\n\r\n也就是說,S3 上有變動時會透過 SQS 觸發後續行為。由於這是 AWS 自己提供的功能,解決了以往「上傳檔案後自己觸發 SQS」不能保證 atomic 的問題。\r\n\r\n好像馬上就想到某個專案可以用到...", + "title": "Amazon S3 的 Event Notification" + }, + { + "id": "5313", + "body": "A Full Stack WYSIWYG Editor for Network Packets:\r\n\r\n\r\n\r\n可以改 pcap 格式的封包擷取檔,暫時沒有想到什麼用途,不過界面很直覺 :o", + "title": "WireEdit:用最直覺的方式改封包內容的軟體" + }, + { + "id": "5316", + "body": "升級完 nginx 後就變成白頁了,觀察發現靜態檔案不受影響,所以看起來是與 PHP 溝通有問題,所以應該是 FastCGI 類的問題,用一些關鍵字找了一下,很快就解決了。\r\n\r\n解法出自這邊:「Nginx 1.6 + php5-fpm socket communication fail」。\r\n\r\n總結原文的解法,本來是 include fastcgi_params; 的請改成 include fastcgi.conf;。(我裝的 ppa 版本已經有 fastcgi.conf,不需要像原文提到自己修改)", + "title": "把 nginx 換到 1.6 後 PHP 遇到的問題" + }, + { + "id": "5318", + "body": "剛剛把 nginx 換到 ppa 的版本 (目前是 1.6),然後打開 OCSP staplingSPDY,速度明顯有感覺提昇...\r\n\r\nOCSP stapling:\r\n\r\n\"\"\r\n\r\nSPDY:\r\n\r\n\"\"\r\n\r\n目前有想到而且能處理的都做的差不多了 :p", + "title": "換到 nginx 1.6 後把 OCSP stapling 與 SPDY 打開..." + }, + { + "id": "5320", + "body": "官方的說明:「AWS Lambda - Run Code in the Cloud」,以及 Werner Vogels 的說明:「The Easiest Way to Compute in the Cloud – AWS Lambda」。\r\n\r\n偏向 PaaS 類的服務,處理 worker 這塊的事情。技術面是以 JavaScript (node.js) 為基礎。\r\n\r\n依照最近推出的產品以及描述,應該是配合 Container 技術做的。首先是依照記憶體用量而決定對應的 CPU、網路以及 I/O 的能力:\r\n\r\n
The context information for a function specifies the amount of memory needed to run it. You can set this to any desired value between 128 MB and 1 GB. The memory setting also determines the amount of CPU power, network bandwidth, and I/O bandwidth that are made available to the function.
\r\n\r\nprocess、thread、file descriptor 以及 local storage 的數量也是有管制的:\r\n\r\n
Each invocation of a function can make use of up to 256 processes or threads. It can consume up to 512 MB of local storage and up to 1,024 file descriptors. It can also create up to 10 simultaneous outbound network connections.
\r\n\r\n計價的方式:\r\n\r\n
You pay for compute time in units of 100 milliseconds and you pay for each request.
\r\n\r\n處理簡單的事情用的?在「AWS Lambda Walkthrough Command Line Companion」這邊已經有人寫出一些心得了,可以看看怎麼用 :o", + "title": "AWS Lambda:AWS 推出的 PaaS" + }, + { + "id": "5324", + "body": "Slashdot 上看到「Facebook Testing Lithium-Ion Batteries For Backup Power」,原報導出自「Facebook gives its server racks a Tesla touch」。\r\n\r\n這讓我想到之前 Google 也做過類似的架構,不過是用蓄電池:「Google Finally Declassifies Some Key Server Design Secrets」。\r\n\r\n\"\"\r\n\r\n上圖右上邊的那個區塊就是蓄電池。\r\n\r\nFacebook 會考慮鋰電池是因為 Telsa 的需求使得價錢往下掉,進而考慮將本來的 UPS 換成鋰電池。", + "title": "Facebook 研究用鋰電池當作 UPS 替代方案" + }, + { + "id": "5326", + "body": "最近在玩的新遊戲「0h h1」:\r\n\r\n\"\"\r\n\r\n應該過陣子會有行動版本?", + "title": "0h h1" + }, + { + "id": "5329", + "body": "在 Slashdot 上看到「81% of Tor Users Can Be De-anonymized By Analysing Router Information」,原報導在「81% of Tor users can be de-anonymised by analysing router information, research indicates」。\r\n\r\nPDF 論文在「On the Effectiveness of Traffic Analysis Against Anonymity Networks Using Flow Records」這邊。\r\n\r\n\"\"\r\n\r\n當 Entry node 與 Exit node 都能夠被 Netflow 涵蓋觀察時,就可以利用流量資訊分析得到原始 Tor 使用者的原始 IP address,這意味著 ISP 與政府是有能力反匿名的。\r\n\r\n但 Tor 其中一個目標是 low latency,繞太多節點以避開監控的速度會掉太多... 這不知道要怎麼取捨 :o", + "title": "利用觀察流量的技巧可以抓出 81% 的 Tor 使用者" + }, + { + "id": "5334", + "body": "計算機科學領域裡的最高獎項,Turing Award,在 Google 的資助下,獎金從本來的 25 萬美金提升到百萬美金,ACM 的公告在這邊:「Google to Provide All Funding for Most Prestigious Award in Computing」。\r\n\r\n諾貝爾獎的獎金是八百萬瑞典客朗,剛好大約是百萬美金 (約 USD$1.08M)。\r\n\r\n這則新聞剛好跟「The Man Who Made the UK Say “I’m Sorry For What We Did To Turing.”」這篇報導一起看。", + "title": "Google 資助圖靈獎 (Turing Award) 獎金至百萬美金" + }, + { + "id": "5337", + "body": "NetflixBrendan Gregg 在「Linux Performance Analysis: New Tools and Old Secrets」這份投影片裡面給了很多有用的工具。\r\n\r\n\r\n\r\n「先找出問題」一向是解決問題的大前提,在投影片裡提到了很多工具,像是這兩個看起來就很有用:\r\n\r\n", + "title": "Netflix 在 USENIX/LISA2014 上講「Linux 效能調校」" + }, + { + "id": "5339", + "body": "愈用愈有感覺 SaltStack 是一堆 workaround 的集合,一開始在設計整個系統時沒有規劃好,然後一直堆上去。\r\n\r\n標題的這個問題是出自於 Ubuntu 預設會將 CPU 調節成 ondemand,方式是透過 /etc/rc*.d/ 下的 symbolic link 在開機時自動執行。\r\n\r\n拔掉的方法是 updated-rc.d ondemand disable (而非直接砍掉 /etc/rc*.d/ 裡面的檔案),想要透過 SaltStack 提供的 file.exists 或 file.missing 都發現不可行。\r\n\r\n最後是 cmd.run + onlyif + test 搞定:\r\n\r\n
ondemand-disable:\r\n  cmd.run:\r\n    - name: update-rc.d ondemand disable\r\n    - onlyif: test -e /etc/rc2.d/S99ondemand
\r\n\r\nSaltStack 對於 dependency 的設計看起來問題重重,如果想要用 SaltStack 的人可以好好考慮一下。\r\n\r\n現在的作法是直接 trial and error 跟他拼,PuppetChefSaltStack 都直接用時間跟他換。原因是這東西實在太底層了,架構不好就是上面的管理員與 DevOps 一直 workaround。\r\n\r\n現在有種互相在比爛的感覺...", + "title": "Salt 要做到「當某個檔案存在時,執行某個指令」的方法..." + }, + { + "id": "5341", + "body": "看到廉價航空機票在特價跑去刷,結果刷了兩次都死在聯合信用卡處理中心的 acs.nccc.com.tw 畫面出不來。突然想到我把 RC4 關掉了,該不會是這種原因吧...\r\n\r\n跑去「SSL Report: acs.nccc.com.tw (210.61.215.16)」這邊一看,果然是不支援 AES:\r\n\r\n\"\"\r\n\r\n抱頭痛哭啊... 只好 rollback 回來 @_@", + "title": "NCCC (聯合信用卡處理中心) 的網站不支援 AES 加密..." + }, + { + "id": "5343", + "body": "首先先看「SSL Cipher Suite Details of Your Browser」這個網站,會列出你目前瀏覽器支援的 cipher suite,會需要知道要拔掉哪些號碼。\r\n\r\n接下來的資料是參考「Remove RC4 from SSL/TLS ciphers in Chromium」這篇的方法。\r\n\r\nUbuntu 的使用者可以到 /usr/share/applications/google-chrome.desktop 這邊修改,本來是:\r\n\r\n
Exec=/usr/bin/google-chrome-stable
\r\n\r\n改成:\r\n\r\n
Exec=/usr/bin/google-chrome-stable --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
\r\n\r\n其中的十六進位數字就是出自最前面提到的網站:\r\n\r\n\r\n這樣就可以將 RC4 禁用掉。", + "title": "Ubuntu 上把 Chrome 拔掉 RC4 連線的方法" + }, + { + "id": "5347", + "body": "看到 Google Chrome 39 釋出,拔除對 SSLv3 的支援:「Google Removes SSLv3 Fallback Support From Chrome」,官方的 post 反而沒有特別著墨這點:「Stable Channel Update」。\r\n\r\n可以利用「POODLE Attack and SSLv3 Support Measurement」測試瀏覽器是否支援 SSLv3。", + "title": "Google Chrome 39 釋出,拔除對 SSLv3 的支援" + }, + { + "id": "5349", + "body": "Eric Hammond 在「Exploring The AWS Lambda Runtime Environment」觀察了目前 AWS Lambda 的系統環境。\r\n\r\n不過這只是好奇性質而已,Amazon 本來就不保證不會改變:\r\n\r\n
For the curious, here are some results. Please note that this is running on a preview and is in no way a guaranteed part of the environment of a Lambda function. Amazon could change any of it at any time, so don’t build production code using this information.
\r\n\r\n因為可以執行 shell command,所以什麼都可以做 XD\r\n\r\n工具的說明在另外一篇:「lambdash: AWS Lambda Shell Hack」。", + "title": "AWS Lambda 的系統環境" + }, + { + "id": "5353", + "body": "因為 Google Chrome 39 出來的關係,一些以前簽出來只包含 SHA-1 的 SSL certificate 因此導致了綠色 icon 變成黃色 icon,所以都要重簽一次產生 SHA-2 資訊。\r\n\r\n有人說可以只要在簽名產生 crt 的部份做就好,不過這邊還是都提出來,並且給驗證的方式。\r\n\r\n如果本來就已經有寫好 script,那麼只要在產生 csr 與簽名產生 crt 的步驟都加上 -sha256 就可以解決了。\r\n\r\n這是產生 csr 的:(${HOST} 以及 subj 的內容自己代換)\r\n\r\n
openssl req -new -key ${HOST}.key -subj \"/C=TW/ST=Taiwan/L=Taipei/O=MyOrganization/OU=MyUnit/CN=${HOST}\" -sha256 -out ${HOST}.csr
\r\n\r\n而 csr 檢查的方式是:\r\n\r\n
openssl req -in ${HOST}.csr -text
\r\n\r\n看 Signature Algorithm 是不是 sha256WithRSAEncryption。\r\n\r\n簽名產生 crt 也要加上 -sha256:\r\n\r\n
openssl x509 -req -days 365 -in ${HOST}.csr -CA ca/ca.crt -CAkey ca/ca.key -sha256 -out ${HOST}.crt
\r\n\r\n而 crt 檢查的方式是:\r\n\r\n
openssl x509 -in ${HOST}.crt -text
\r\n\r\n一樣是看 Signature Algorithm 這邊是不是 sha256WithRSAEncryption。", + "title": "OpenSSL 產生並簽出 SHA2 (SHA256) 的憑證" + }, + { + "id": "5355", + "body": "最近一直在看這方面的資料,所以就一直看一直寫...\r\n\r\nMozilla 有一份 wiki document 把 server side 的設定給整理出來,可以當作起點來看,不過裡面還是講得很省略,如果沒有背景知識的話,應該會理解得很辛苦:「Security/Server Side TLS」。\r\n\r\n裡面給了一些速食套餐 (算是 cheatsheet),像是 cipher 的部份可以參考相容性說明後直接拿來用。", + "title": "Mozilla 提供的 SSL/TLS Server Side 設定" + }, + { + "id": "5357", + "body": "在「SSL/TLS for the Pragmatic」這篇裡面提到了 CipherScan 這個工具,用起來很簡單而且輸出很清楚。\r\n\r\n直接 git clone 下來後執行就可以了,另外因為檢測 ChaCha20+Poly1305 需要新版 OpenSSL (1.0.2 才有,目前還是開發版),所以 clone 下來的時候裡面包括了一個 Linux 版的 openssl,砍掉的話他會用系統的 openssl。\r\n\r\n像是我的 blog 就可以掃出這樣的結果:\r\n\r\n
gslin@home [~/git/cipherscan] [17:57/W4] (master) ./cipherscan blog.gslin.org:443\r\n........................\r\nTarget: blog.gslin.org:443\r\n\r\nprio  ciphersuite                  protocols              pfs_keysize\r\n1     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,2048bits\r\n2     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-256,256bits\r\n3     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-256,256bits\r\n4     ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits\r\n5     DHE-RSA-AES256-SHA256        TLSv1.2                DH,2048bits\r\n6     DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,2048bits\r\n7     DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,2048bits\r\n8     AES256-GCM-SHA384            TLSv1.2\r\n9     AES256-SHA256                TLSv1.2\r\n10    AES256-SHA                   TLSv1,TLSv1.1,TLSv1.2\r\n11    CAMELLIA256-SHA              TLSv1,TLSv1.1,TLSv1.2\r\n12    ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-256,256bits\r\n13    ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-256,256bits\r\n14    ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits\r\n15    DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,2048bits\r\n16    DHE-RSA-AES128-SHA256        TLSv1.2                DH,2048bits\r\n17    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,2048bits\r\n18    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,2048bits\r\n19    AES128-GCM-SHA256            TLSv1.2\r\n20    AES128-SHA256                TLSv1.2\r\n21    AES128-SHA                   TLSv1,TLSv1.1,TLSv1.2\r\n22    CAMELLIA128-SHA              TLSv1,TLSv1.1,TLSv1.2\r\n23    DES-CBC3-SHA                 TLSv1,TLSv1.1,TLSv1.2\r\n\r\nCertificate: trusted, 2048 bit, sha256WithRSAEncryption signature\r\nTLS ticket lifetime hint: 600\r\nOCSP stapling: supported\r\nServer side cipher ordering
", + "title": "用 CipherScan 在 command line 下檢查系統" + }, + { + "id": "5361", + "body": "以往 AWS 都是在 forum 上發表,現在居然提供 JSON 了:「AWS Public IP Address Ranges Now Available in JSON Form」,在 https://ip-ranges.amazonaws.com/ip-ranges.json 這邊,對應的說明在「AWS IP Address Ranges」這邊。\r\n\r\n除了 EC2 以外,裡面包含了 CDN (CloudFront) 的範圍:\r\n\r\n
Valid values for the service key include \"AMAZON\", \"EC2\", \"ROUTE53\", \"ROUTE53_HEALTHCHECKS\", and \"CLOUDFRONT.\" If you need to know all of the ranges and don't care about the service, use the \"AMAZON\" entries. The other entries are subsets of this one. Also, some of the services, such as S3, are represented in \"AMAZON\" and do not have an entry that is specific to the service. We plan to add additional values over time; code accordingly!
\r\n\r\n目前大約是一千萬個可用 IP。", + "title": "AWS 官方提供 Public IP 清單 (JSON 格式)" + }, + { + "id": "5363", + "body": "Have I been pwned? 是個檢查個人資料是不是被外部網站洩漏的資料庫。拿 username 或是 email 搜尋,他會告訴你在哪次洩漏清單裡有找到。\r\n\r\n現在有 RSS feed 可以訂,有更新的時候可以上去確認:「“Have I been pwned?” – now with RSS!。\r\n\r\n丟到 Feedly 放著...", + "title": "HIBP (Have I been pwned?) 有 RSS feed 可以訂了" + }, + { + "id": "5365", + "body": "CloudHarmony 發表了他們對 CDN、DNS、Cloud Computing 市占率的統計數據:\r\n\r\n\r\n\r\nCDN 的部份可以看出來 Akamai 仍然是稱霸整個市場,不過 CloudFlare 也不是小數字就是了...\r\n\r\nDNS 的部份比較沒有那麼明顯,由於 CloudFlare 免費方案必須把 DNS hosting 指到他們家,所以 CDN 連帶影響到 DNS 的部份,看起來頗亂,比較明顯的是 Route53 一直在成長。\r\n\r\nCloud Computing 的部份不知道是怎麼估算的,跟另外從營收數字估算的是另外一種面貌。雖然 EC2 還是很大,不過你要說 Rackspace 有 EC2 的 1/3 大?hmmm...", + "title": "CloudHarmony 的市占率統計 (CDN、DNS、Cloud Computing)" + }, + { + "id": "5368", + "body": "一個小時的內訓課程,以 Fluentd 為主題:\r\n\r\n", + "title": "今天在資策會講的 Fluentd 與 AWS" + }, + { + "id": "5370", + "body": "一年一度的 AWS re:Invent 的投影片、影片、錄音檔放出來了:「Now Online - Audio, Video, and Presentations from re:Invent 2014」。\r\n\r\n看影片與錄音會比較花時間,從投影片看會是不錯的方法。在 SlideShare 的「reinvent2014」這邊有官方放出的投影片。\r\n\r\n量相當多,之後再來挑有興趣的題目來翻。", + "title": "2014 年 re:Invent 的投影片、影片、錄音" + }, + { + "id": "5372", + "body": "維基基金會選擇了 Phabricator 當作協作平台:「Welcome to Phabricator, Wikimedia’s new collaboration platform」。\r\n\r\n維基維基基金會已經使用 Bugzilla 管理很多事情,這次的導入也在文章裡說明了不少好處以及已知的問題。\r\n\r\n看起來後面幾個月會把一些既有的工具轉移上去。\r\n\r\n另外也因為是開放的系統,要研究 Phabricator 怎麼運作的人也可以上去看看?", + "title": "維基基金會選用 Phabricator 當作工作的協作平台" + }, + { + "id": "5376", + "body": "公司有買 VMware license,但一直沒研究要如何做一份 VM template 出來,所以花了點時間研究到底怎麼做才會比較好。\r\n\r\n這邊提供的方法是為了之後的通用性 (像是之後有可能用 KVM 堆虛擬機),所以不使用 VMware 獨規的設計,因此有些設定需要手動調整。\r\n\r\n首先是先生出一台 Ubuntu 14.04.1 的 VM,在裝完基本系統後有些要先處理的:\r\n\r\n\r\n做好 VM 後轉成 Template,之後每次在 deploy 完、開起來後,還要做這些事情:\r\n\r\n\r\n有些參考資料:\r\n\r\n\r\n過程其實還蠻簡單的,只是有一些眉眉角角的東西要注意...", + "title": "做 Ubuntu 14.04.1 的 VMware Template" + }, + { + "id": "5380", + "body": "維基基金會釋出八月月報 (好像晚了三個月?):「Wikimedia Foundation Report, August 2014」,在「Wikimedia Highlights, August 2014」有比較精簡的版本。\r\n\r\n維基基金會在報告裡有提供一些 PV 相關的數據,包括 comScore 的數字與自己 server log 所統計出來的數據。另外也包含了財務狀況。\r\n\r\n其中技術相關的是取自「Wikimedia Engineering/Report/2014/August」這頁。另外因為這是八月的資料,我順便偷看了九月與十月的「Wikimedia Engineering/Report/2014/September」與「Wikimedia Engineering/Report/2014/October」。\r\n\r\n可以看到在測試 HHVM 的計畫,而且目前看起來還不錯:「[Wikitech-l] [Engineering] Migrating test.wikipedia.org to HHVM」,拿了 test.wikipedia.org 測試,其中 speed test 的部份有大幅改善:\r\n\r\n
1) Speed test: measure the time taken to request the page 1000 times over just 10 concurrent connections:\r\n\r\n                        HHVM    Zend    diff\r\nMean time (ms):         233     441     -47%\r\n99th percentile (ms):   370     869     -57%\r\nRequest/s:              43      22.6    +90%
\r\n\r\n而負載測試的成果更好:\r\n\r\n
2) Load test: measure how much thoughput we obtain when hogging the appserver with 50 concurrent requests for a grand total of 10000 requests. What I wanted to test in this case was the performance degradation and the systems resource consumption\r\n\r\n                        HHVM    Zend    diff\r\nMean time (ms):         355     906     -61%\r\n99th percentile (ms):   791     1453    -45%\r\nRequest/s:              141     55.1    +156%\r\nNetwork (Mbytes/s)      17      7       +142%\r\nRAM used (GBs):         5(1)    11(4)\r\nCPU usage (%):          90(75)  100(90)
\r\n\r\n維基百科之所以沒有遇到太多問題,主要是因為所使用的軟體是 open source 而且夠大的關係,直接成為 HHVM 測試的一環:「Compatibility Update」。\r\n\r\n不過目前看起來應該還是跑 PHP,沒有看到整個都轉換過去的計畫。\r\n\r\n另外一方面,搜尋引擎的更換就沒有這麼順利,雖然換到 Elasticsearch 後改善不少,不過可以看到八月的報告這樣寫:\r\n\r\n
tarted deploying Cirrus as the primary search back-end to more of the remaining wikis and we found what looks like our biggest open performance bottleneck. Next month's goal is to fix it and deploy to more wikis (probably not all). We're also working on getting more hardware.
\r\n\r\n而九月時就講到沒有銀彈,要加硬體去拼:\r\n\r\n
In September we worked to mitigate the performance bottleneck that we found in August. We found there to be no silver bullet but used the information we learned to pick and order appropriate hardware to handle the remaining wikis. We also implemented out significantly improved wikitext Regular Expression search. In October we've begun rolling out the wikitext Regular Expression search and received some of the hardware we need to finish cutting over the remaining wikis. We believe we'll get it all installed in October and cut the remaining wikis over in November.
\r\n\r\n十月的時候弄到機器了:\r\n\r\n
In October we prepared for November in which we deployed Cirrus to all the remaining wikis by installing new servers installing new versions of Elasticsearch and our plugins. We also fixed up regex search which had caused a search outage.
\r\n\r\n這些報告的連結裡面其實有些不會在對外新聞稿上面的評語... XD", + "title": "維基基金會的 2014 年八月月報" + }, + { + "id": "5383", + "body": "可以直接看 GitHub 上的 commit log:「Disable GC when computing deps, refs #3482」。\r\n\r\n
      */\r\n     public function run()\r\n     {\r\n+        gc_disable();\r\n+\r\n         if ($this->dryRun) {\r\n             $this->verbose = true;\r\n             $this->runScripts = false;
\r\n\r\n下面變成祭典了 XDDD\r\n\r\n然後依照「Avoid generating duplicate conflict rules by naderman · Pull Request #3482 · composer/composer」這邊的測試 (要看下面的討論),設 zend.enable_gc=0 會省的更多,效率用倍數在跳的...\r\n\r\n因為 Composer 的效率為人詬病很久了,這次有人暴發出來,會讓一群人投入資源找更多 optimization... XD\r\n", + "title": "增加一行程式碼讓 PHP Composer 效率爆增" + }, + { + "id": "5389", + "body": "在「“Invalid Username or Password”: a useless security measure」這篇文章裡談到了使用者登入錯誤時的提示訊息。\r\n\r\n通常為了安全考量,「沒有這個帳號」與「密碼錯誤」,我們會給出一樣的錯誤訊息,避免攻擊者可以猜測。像是 Amazon 的畫面:\r\n\r\n\"\"\r\n\r\n這樣設計的前提是讓攻擊者不知道這個帳號是不是存在 (如果不存在的話就換其他帳號繼續攻擊)。但這個假設通常是錯的,因為大多數的系統一個 e-mail 綁定一個帳號,所以註冊時就可以分辨:\r\n\r\n\"\"\r\n\r\n因此應該提供正確的訊息,而非將資訊隱蔽起來。", + "title": "使用者登入時的錯誤訊息" + }, + { + "id": "5391", + "body": "在 Adblock Plus 的「How to keep people from knowing you’ve read their Facebook message」這邊提到 Facebook 的「已讀」:\r\n\r\n\"\"\r\n\r\nFacebook 在你看過後會送出通知,方法是增加這條規則:\r\n\r\n
||facebook.com/ajax/mercury/change_read_status.php$xmlhttprequest
\r\n\r\n這樣就不會送出「已讀」的訊息。", + "title": "用 Adblock Plus 擋下 Facebook 的「已讀」" + }, + { + "id": "5394", + "body": "在「Using Shodan from the Command-Line」這邊看到跟資安有關的工具,然後跑回去研究 Shodan 這個工具。\r\n\r\n這是預先掃好的資料庫啊啊啊~\r\n\r\n而且還包括了目前已經有的 exploit 可以攻擊的對象?喂喂... (超開心?)\r\n\r\n然後 port:22 的結果 (需要登入才能查詢),左邊列出全世界的數量排名,台灣居然是第三名?\r\n\r\n一堆 Dropbear 看起來是一堆 WAN interface 對 internet 公開的分享器?我看到這些資料後才能理解,為什麼台灣在全世界跳板比率這麼高 XDDD\r\n\r\n然後一如預期的,EC2 一堆機器開放全世界存取 ssh XDDDD", + "title": "用 Shodan 掃台..." + }, + { + "id": "5402", + "body": "兩邊開始喊話了。\r\n\r\nCoreOS 的人首先先發表了 Docker 的替代品 Rocket:「CoreOS is building a container runtime, Rocket」。\r\n\r\n而 Docker 的人則發文反擊:「Initial thoughts on the Rocket announcement」。\r\n\r\n目前資訊不足,不知道起因是什麼,不過已知 Docker 後面是 dotCloud,而 dotCloud 的記錄不太好。\r\n\r\n繼續觀察看看吧。", + "title": "Docker 與 Rocket" + }, + { + "id": "5404", + "body": "在讀「The No CAPTCHA problem」這篇的時候看到的:「Referrer Policy」。\r\n\r\n
<meta name=\"referrer\" content=\"never\">
\r\n\r\n目前正式版本的瀏覽器中,只有 Google Chrome 有支援,而其他瀏覽器正在開發,像是 Firefox 上個月才進 trunk:「Bug 704320 - Implement <meta name=\"referrer\">」,預定在 36 版才會納入 (目前是 34)。\r\n\r\n還蠻新的 HTML5 標準 (還在制定),可以來定期追進度...", + "title": "要瀏覽器不要送出 Referrer 的 Referrer Policy" + }, + { + "id": "5406", + "body": "GitHub 以往要每個 repository 都設一次 webhook,現在總算有 organization webhooks 可以以 organization 為單位設定:「Introducing organization webhooks」。\r\n\r\n\"\"\r\n\r\n對應的 API 文件在「Webhooks」這邊已經更新,可以看到有些是 organization only 的。", + "title": "GitHub 的 Organization Webhooks" + }, + { + "id": "5408", + "body": "AWS 在「AWS Data Transfer Price Reduction」這邊宣佈降價,回朔至 2014 年 12 月 1 日開始計算。\r\n\r\n分成一般 Outbound 與 CloudFront Outbound 部份。\r\n\r\n一般 Outbound 的部份,US/EU 主要降價的部份是一開始的流量 (10TB 以下的部份),亞洲區的部份主要是新加坡降價特別多,大概是把量養出來了?\r\n\r\nCloudFront Outbound 的部份主要也是在 10TB 以下的部份。\r\n\r\n另外一個比較特別的地方 (但也許沒有太大差異),是 CloudFront 往 origin 抓資料時,如果 origin 在 AWS network 內就不計算費用 (包括了 S3EC2)。\r\n\r\n如果暫時先不考慮 per request 費用,會注意到 US/EU 一般 Outbound 的費用是 USD$0.90/GB,而 CloudFront 是 USD$0.85/GB,量更大的時候會更明顯?\r\n\r\n馬上想到 Netflix 這種單一 request 會有巨大流量的用法會隨著這次計費方式改變而有變化?", + "title": "AWS 對外頻寬與 CloudFront 頻寬降價" + }, + { + "id": "5410", + "body": "前幾天 AWS 宣佈 EC2Reserved Instance 改變販賣方式:「Simplifying the EC2 Reserved Instance Model」。\r\n\r\n本來的賣法是收兩種錢,一個是一次性的費用,另外一個是每個小時的費用。在舊的架構下,有不同種類的一次性費用,對上不同的小時單價。\r\n\r\n新的架構變成收三種錢,一個是一次性的費用,一個是每個月的基本費 (電信資費中,類似於「基本費不可抵通話費」的觀念),最後是每個小時的費用。\r\n\r\n看 AWS 文章的說明有點難懂,直接去 EC2 的價目表上面看就知道了。\r\n\r\n至於這樣有沒有簡化,我覺得是見仁見智啦... 這次的 RI model 的改變最主要是降低對現金流的要求,付出一點利息就可以把一次性費用打散到十二個月 (或是三十六個月)。\r\n\r\n對於 startup 應該還蠻有吸引力的改變。", + "title": "新版 EC2 的 Reserved Instance" + }, + { + "id": "5417", + "body": "在「Make Your Program Slower With Threads」這邊看到的工具:「Linux kernel profiling with perf」。\r\n\r\nUbuntu 上的安裝方式是安裝 linux-tools,不過我的機器上是安裝 linux-tools-lts-raring。\r\n\r\n先從比較簡單的 stat,基本的用法很簡單,後面接指令就可以了:\r\n\r\n
perf stat ls -al
\r\n\r\n這樣會出現基本的執行狀況,像是這樣:\r\n\r\n
 Performance counter stats for 'ls -al':\r\n\r\n         11.236723 task-clock                #    0.703 CPUs utilized          \r\n               341 context-switches          #    0.030 M/sec                  \r\n                 0 cpu-migrations            #    0.000 K/sec                  \r\n               453 page-faults               #    0.040 M/sec                  \r\n         8,186,524 cycles                    #    0.729 GHz                    \r\n    stalled-cycles-frontend \r\n    stalled-cycles-backend  \r\n        10,366,309 instructions              #    1.27  insns per cycle        \r\n         2,122,560 branches                  #  188.895 M/sec                  \r\n            36,979 branch-misses             #    1.74% of all branches        \r\n\r\n       0.015977493 seconds time elapsed
\r\n\r\n更複雜的用法在 Tutorial 那篇文章裡面有說明。", + "title": "用 perf 追蹤系統狀態" + }, + { + "id": "5421", + "body": "lag 了一陣子的消息,Slashdot 上看到 Windows 10 將會支援 MKVFLAC 格式:「Windows 10 To Feature Native Support For MKV and FLAC」。\r\n\r\n出自這則 Tweet:\r\n\r\n

Keen eyed #WindowsInsiders will notice something cool about this pic. Something to look forward to in the new year! pic.twitter.com/4uQe5LlLmI

— Gabriel Aul (@GabeAul) November 25, 2014
\r\n\r\n\r\n最先支援的還是 FLAC,隔壁的 TTAWavPack 就比較苦命了...", + "title": "Windows 10 將會支援 MKV 與 FLAC 格式" + }, + { + "id": "5423", + "body": "利用 WolframInpainting 來延伸畫作:「Extending Van Gogh’s Starry Night with Inpainting」。\r\n\r\n《星夜》原作:\r\n\r\n\"\"\r\n\r\n延伸後:\r\n\r\n\"\"\r\n\r\n不同的演算法:\r\n\r\n\"\"\r\n\r\n另外有人丟了一堆名畫進去,把原始圖與延伸出來的圖放到 Imgur 上:「Mathematica Inpaint Test」,都還蠻有趣的...", + "title": "用 Wolfram 的 Inpainting 延伸畫作" + }, + { + "id": "5425", + "body": "這篇文章的標題就說明了作者對 Valgrind 只被拿來抓 leak 很不滿:「Valgrind is *NOT* a leak checker」。\r\n\r\n依照文章裡的說法:\r\n\r\n
Valgrind is an undefined behavior checking tool first, a function and memory profiler second, a data-race detection tool third, and a leak checking tool last.
\r\n\r\n文章裡從最簡單的用法 (什麼參數都不加) 開始解釋,到後面的 leak 檢查以及 profiling,算是還蠻清楚的 XDDD", + "title": "Valgrind 的其他用途" + }, + { + "id": "5429", + "body": "Slack 推出了即時性更新的 API,讓你寫機器人 (bot) 更方便:「A new Slack API: The inevitable rise of the bots」。\r\n\r\nGitHub 上的 slackhq/python-rtmbot 裡面有範例,另外也有 Hubot 版本的 slackhq/hubot-slack。\r\n\r\n這樣寫起 bot 應該會更簡單,以往是模擬 client 接上去,現在是有 library 可以用,照著接掛著就 okay 了...", + "title": "Slack 推出 Real Time Messaging (RTM) API" + }, + { + "id": "5431", + "body": "AWS OpsWorks 算是 Chef hosting 加上設計好的管理機制?之前只能用在 AWS 上,現在則可以使用在非 EC2 instance 上了:「AWS OpsWorks Update - Support for Existing EC2 Instances and On-Premises Servers」。\r\n\r\n\"\"\r\n\r\n在 EC2 上不用額外收費,在 EC2 外要收 USD$0.02/hour:\r\n\r\n
OpsWorks costs $0.02 per hour for each on-premises server on which you install the agent, and is available at no additional charge for EC2 instances.
\r\n\r\n看不太懂為什麼要支援非 EC2 的服務,扶植 Chef 嗎?", + "title": "AWS OpsWorks 支援非 EC2 instance 的管理" + }, + { + "id": "5434", + "body": "Facebook 的 engineer 寫了一篇文章,說明他們花了超過兩年的時間找到一個 bug:「Solving the Mystery of Link Imbalance: A Metastable Failure State at Scale」。\r\n\r\n整個故事是個通靈的故事...\r\n\r\nFacebook 在底層的架構使用了 Link Aggregation 的規劃,多條線路 channel bonding 在一起連到骨幹上。但發現有時候會卡在某一條線路壅塞而導致 system failure。\r\n\r\n於是就一路追下去,從 switch 本身開始懷疑,最後去組織跨部門的研究小組跳下去分析 (通靈)。後來才觀察到是因為 connection pool 的機制本身用的演算法在 Facebook 這個複雜的系統架構下造成的慘案...\r\n\r\n當 query burst 發生時,Facebook 的系統會同時到 50~100 組資料庫撈資料出來寫入 cache,而 connection pool 的機制用的是 MRU (Most Recently Used),從 congestion link 回來的 connection 會在 pool 裡面的最上方,於是就愈來愈塞...\r\n\r\n知道問題後,解決的方法就簡單多了。只是把 connection 選擇演算法從 MRU 換成 LRU 後就解決了,但中間用了超過兩年的時間,以及至少 30 個人的努力才把問題找出來並且解決。\r\n\r\n可以看到最後銘謝的對象一卡車:\r\n\r\n
Thanks to all of the engineers who helped us manage and then fix this bug, including James Paussa, Ernesto Ovcharenko, Mark Drayton, Peter Hoose, Ankur Agrawal, Alexey Andreyev, Billy Choe, Brendan Cleary, JJ Crawford, Rodrigo Curado, Tim Eberhard, Kevin Federation, Hans Fugal, Mayuresh Gaitonde, CJ Infantino, Mark Marchukov, Chinmay Mehta, Murat Mugan, Austin Myzk, Gaya Nagarajan, Dmitri Petrov, Marco Rizzi, Rafael Rodriguez, Steve Shaw, Adam Simpkins, David Swafford, Wendy Tobagus, Thomas Tobin, TJ Trask, Diego Veca, Kaushik Veeraraghavan, Callahan Warlick, Jason Wilbanks, Jimmy Williams, and Keith Wright.
\r\n\r\n最後附上 Facebook 解釋的圖:\r\n\r\n\"\"", + "title": "Facebook 因為 Connection Pool 選擇機制,加上系統的複雜性而導致的慘案..." + }, + { + "id": "5439", + "body": "Percona 寫了一篇「Recover MySQL root password without restarting MySQL (no downtime!)」,利用 MyISAM 的特性直接惡搞重設 root password。\r\n\r\n幾個重點:\r\n", + "title": "不停機重設 MySQL 的 root 密碼" + }, + { + "id": "5441", + "body": "路透社丟出來的新聞:「Google to close engineering office in Russia: WSJ」。\r\n\r\n新通過的法案要求俄羅斯人的資料必須存放在俄羅斯境內,這個法案被懷疑是 Google 打算直接關閉俄羅斯的 Engineering Office 的原因:\r\n\r\n
In July, Russia's parliament passed a law to force Internet sites that store the personal data of Russian citizens to do so inside the country, a move the Kremlin says is for data protection but which critics see as an attack on social networks.
\r\n\r\n來看看後續發展...", + "title": "Google 計畫關閉在俄羅斯的 Engineering Office" + }, + { + "id": "5445", + "body": "VentureBeat 的這篇「How Minecraft may make bitcoin the ‘official currency of virtual worlds’」讓人想了一下遊戲的虛擬貨幣與 Bitcoin 的結合...\r\n\r\n與以往的不一樣的情況:\r\n\r\n\r\n再來是 Bitcoin 的中立性,跨遊戲之間的交易也許是另外一個可能的強大之處?\r\n\r\n不過 Bitcoin 的 n=6 確認應該會讓人感覺到愈來愈痛,不知道後面會怎麼解決...", + "title": "Minecraft 與 Bitcoin 的結合?" + }, + { + "id": "5447", + "body": "在「vCenter is Still a Single Point of Failure」這篇文章裡面討論了 VMware vCenter 的 HA (High Availability) 問題。可以包括 comment 一起看,看到文章裡火氣還蠻大的...\r\n\r\n文章後面有提到 VMware vCenter 並沒有辦法提供很高等級的 HA 機制,雖然官方提出來的 downtime 是五分鐘內,不過作者顯然對這點很不同意:\r\n\r\n
I can guarantee you that will take a hell of a lot longer than 5 minutes.
\r\n\r\n而下面 comment 有人提到至少是 20mins:\r\n\r\n
After reboot the first 20min CPU is high and vCenter Services is unable to start. 1000 VMs, 60 hosts. VM has 4 vCPU en 21GB RAM.
\r\n\r\n不過這設定看起來像是 60 台 host,每一台 384GB RAM,裡面每個 VM 都有 21GB RAM?這種環境真不錯... 不過如果量這麼大,我大概會自己弄 KVM 起來建環境?\r\n\r\nAnyway,有用過 vCenter 的人看完這篇文章大概都有種「...」不知道要怎麼說的感覺 XD", + "title": "vCenter 的 HA 機制" + }, + { + "id": "5449", + "body": "看到「一个能并列高亮显示文件比较结果的小工具 icdiff」這篇的介紹,順便複習一下 PPA 要怎麼包。\r\n\r\n不過包歸包,我應該還是不會去用...\r\n\r\n平常在用 diff 都會加上參數啊,像是我習慣用 -ruN,如果再加上顏色的話其實並不會比較難讀?而且現在最常用 diff 的地方是在 git 環境下用,會因為 color.ui 的設定自動支援色彩...\r\n\r\n這是 icdiff 官方提供的 screenshot:\r\n\r\n\"\"\r\n\r\n就給大家參考看看了 :o", + "title": "把 icdiff 包成 PPA..." + }, + { + "id": "5451", + "body": "離上次改版也半年了,Vagrant 1.7 引入了 Push 機制:「Vagrant Push: One Command to Deploy Any Application」。\r\n\r\n功能很簡單,就是「把整個目錄傳到指定的位置上」,可以看做是 code deploy 機制。目前支援的通訊協定 Atlas、FTP/SFTP、Heroku 以及自訂 script。\r\n\r\nVagrant 的這個功能有著 Unix philosophy 的想法。功能很簡單,但似乎是以後新功能的墊腳石。code deploy 這個功能現在已經有一堆 open source 產品可以用,如果之後不以此延伸,看起來沒有太大意義。\r\n\r\n當然也是順便幫自家產品 Atlas 打廣告...\r\n\r\n另外是 Vagrant 這個字的念法,也可以在這篇文章裡的影片看到示範:\r\n\r\n", + "title": "Vagrant 1.7 引入的 Push 機制" + }, + { + "id": "5454", + "body": "參考「https://wiki.gslin.org/wiki/Live」。", + "title": "Live 記錄" + }, + { + "id": "5460", + "body": "這篇「How to Use npm as a Build Tool」教你如何用 package.jsonscripts 取代 gulp 或是 grunt 這類 Build Tools。\r\n\r\n文章裡面可以看到各種奇技淫巧都出現了,dependency 的部份用 recursive 解決 (npm 內部自己再呼叫 npm 執行),stream 的部份用 pipe 解決 (這個到是很自然),然後用外部程式掛進來處理 watch 與 livereload,甚至還出現可以自己寫 js 檔案呼叫的方法... XDDD\r\n\r\n無所不用其極!反正我就是不要用 gulp 與 grunt... XD\r\n\r\n可以欣賞一下怎麼做的...", + "title": "用 npm 取代 Build Tools (像是 gulp 或 grunt)" + }, + { + "id": "5464", + "body": "在 Twitter 上看到這樣的說明:\r\n\r\n

$ cat p.php <?php var_dump(md5('240610708') == md5('QNKCDZO')); ?> $ php p.php bool(true) Please start using "===", thx. @tkh16

— Joshua Wright (@joswr1ght) December 15, 2014
\r\n\r\n\r\n原因出自:\r\n\r\n
php > var_dump(md5('240610708'));\r\nstring(32) \"0e462097431906509019562988736854\"\r\nphp > var_dump(md5('QNKCDZO'));\r\nstring(32) \"0e830400451993494058024219903391\"
\r\n\r\n施主,這 hex 與科學表示法好雷啊...", + "title": "PHP == 的災難..." + }, + { + "id": "5466", + "body": "總算有大頭把這個不安全的「安全問題」移除掉了:「Google Drops Support for Security Questions」。\r\n\r\n\"\"\r\n\r\n引用自原文說明:\r\n\r\n
Security questions weren't a great way to protect an account since many answers could be guessed or found using a Google search.
\r\n\r\n目前提供的機制是手機號碼,以及透過其他的 e-mail address 認證。", + "title": "Google 移除「安全問題」..." + }, + { + "id": "5468", + "body": "在「Google Proposes Marking ‘HTTP’ as Insecure in 2015」這邊看到 Google 提議將 Chrome 對 HTTP 連線標示成「不安全」:「Marking HTTP As Non-Secure」。\r\n\r\n其中一個提案是設定三個時間 (T1、T2、T3),逐步改變對 HTTP 的標示:\r\n\r\n
T0 (now): Non-secure origins unmarked\r\nT1: Non-secure origins marked as Dubious\r\nT2: Non-secure origins marked as Non-secure\r\nT3: Secure origins unmarked
\r\n\r\n不過這是好提案嗎?CA 機制並不完美,這樣硬推是對的方向嗎?", + "title": "Google 提議將 Chrome 對 HTTP 的連線標示成「不安全」icon" + }, + { + "id": "5471", + "body": "在 OSNews 上看到「Announcing Ubuntu Core, with snappy transactional updates」,原文出自 Ubuntu 老大 Mark Shuttleworth 的文章「Announcing Ubuntu Core, with snappy transactional updates!」。\r\n\r\n依照官方說明:\r\n\r\n
Ubuntu Core is a minimal server image with the same libraries as today’s Ubuntu, but applications are provided through a simpler mechanism.
\r\n\r\n希望提供比較穩定的套件環境,並且讓 app 之間不受干擾執行。系統裡分成 release、framework、app 三種角色,release 就是 Ubuntu Core,而 framework 可以是 Docker,最後的 app 就是自己的應用程式,而 snappy 就是管理這三個的軟體。\r\n\r\nSnappy Ubuntu Core 是個 readonly image (裡面大多數的地方都不能寫,只有部份目錄以及用 tmpfs 掛起來的部份可以寫入)。\r\n\r\n除了可以在雲端平台上面測試外,還可以用 QEMU 掛起來跑,不過實際測試的時候發現 precise (12.04) 的 QEMU 因為是 1.0 版所以不能跑,要 trusty (14.04) 附的版本才夠新 (2.0 版,需要 1.1+)。\r\n\r\n找到 trusty 的機器跑的時候因為是遠端的機器,要多加上 -nographic -curses 的參數:\r\n\r\n
sudo kvm -m 512 -nographic -curses -redir :8090::80 -redir :8022::22 ubuntu-core-alpha-01.img
\r\n\r\n然後就可以依照官方文件裡提到的方法連進去了:\r\n\r\n
ssh -p 8022 ubuntu@localhost
\r\n\r\n然後就可以照著官方的文件操作一次,我自己沒遇到什麼問題。\r\n\r\n看起來是 Ubuntu 自己在推動的一套標準,不知道市場接受度如何 :p", + "title": "Ubuntu Core 與 Snappy Transactional Updates" + }, + { + "id": "5474", + "body": "Pinboard 改變計費方式,從原本的一次性費用改成年費:「New Pricing Policy」。\r\n\r\n舊的機制是這樣,有一次性的付費模式,也有年費模式的帳號 (archiving account):\r\n\r\n
Right now, users pay a one-time signup fee that grows by a fraction of a penny with each new signup. At the moment, this fee is $10.55. Pinboard also offers archiving accounts, which cost $25/year. Users who upgrade after joining Pinboard can deduct the signup fee from the first year of archiving.
\r\n\r\n新的機制將全部變成年費:\r\n\r\n
Under the new scheme, basic Pinboard accounts will cost $11/year, while archiving will continue to cost $25/year.
\r\n\r\n作者的原因是「懶的解釋」,有很多人從一次性的帳號升級到 archiving account 時以為仍然是一次性的,等過了一年後被收費就跑去問...\r\n\r\n現有的一次性用戶,以及到年底前付費的用戶不受影響:\r\n\r\n
If you already have a Pinboard account, or sign up for one before January 1, 2015, this change will not affect you.
", + "title": "Pinboard 改變計費方式" + }, + { + "id": "5476", + "body": "Google News 大頭 Richard Gingras 的宣佈,由於西班牙通過的新法令要求引用的單位要付費,所以 Google News 決定直接關閉西班牙服務:「An update on Google News in Spain」。\r\n\r\n
This new legislation requires every Spanish publication to charge services like Google News for showing even the smallest snippet from their publications, whether they want to or not.
\r\n\r\n咦,隔壁棚不是才剛上演過類似的事情嗎:「German publisher caves to Google News after massive traffic drop」。", + "title": "西班牙的 Google News 將全面停止服務" + }, + { + "id": "5478", + "body": "Twitter 上看到 zmx 提到 µBlock:\r\n\r\n

https://t.co/S1n2aME0Be µBlock,HTTP Switchboard 作者新的 Blocker 作品,與 µMatrix 都是 HTTPSB 的後代。 速度比 ABP 快,記憶體比 ABP 省。

— Bill Zhong (@zmx) December 17, 2014
\r\n\r\n\r\n依照「µBlock vs. ABP: efficiency compared」這邊的說明,可以看到效能以及記憶體用量都比 AdBlock Plus 好上不少。\r\n\r\n先換上去測用看看...", + "title": "試用 µBlock 取代 AdBlock Plus" + }, + { + "id": "5481", + "body": "剛剛看到的,Amazon CloudFront 允許 Origin Name 帶有 path 了:「Amazon CloudFront Now Allows Directory Path as Origin Name」。\r\n\r\n
For example, if you're using an Amazon S3 bucket as your origin, you can specify bucket-name.s3.amazonaws.com/production instead of just bucket-name.s3.amazonaws.com. Alternatively, if you have a custom web server with different content in different directories on the server, you can use the same physical server to serve multiple types of content via multiple CloudFront cache behaviors or distributions.
\r\n\r\n變得更方便,以往是直接開兩個不同的 bucket 放。", + "title": "Amazon CloudFront 允許帶有路徑的 Origin Name 了" + }, + { + "id": "5483", + "body": "意外在 Ash Wu 牆上看到的「入侵 gandi 台北辦公室」:\r\n\r\n\"\"\r\n\r\n另外在 comment 也提到了「Gandi Asia Co. Ltd」這頁。不知道什麼時候可以提供三聯式發票報帳...", + "title": "Gandi.net 台灣辦公室" + }, + { + "id": "5485", + "body": "看到 jQuery 官方放出一個特別更新,專門為了 iOS 8 + Safari 7.1/8 的修正:「jQuery 1.11.2 and 2.1.3 Released – Safari Fail-Safe Edition」。\r\n\r\n依據「Test failure on iOS 8: child and adjacent -> p#firstp + p」的說明,死在 document.querySelectorAll(\"p#firstp + p\") 這邊,另外以下的 selector 也都掛掉:\r\n\r\n
p#a + p\r\np#a ~ p\r\n.b#a ~ [id]\r\n[style]#a ~ p
\r\n\r\n由於這個用法太基本,讓 jQuery 官方決定在 library 放 workaround 修正這個問題...", + "title": "jQuery 1.11.2 與 2.1.3 修正 iOS 8 上 Safari 7.1/8 的嚴重 bug" + }, + { + "id": "5487", + "body": "在 OSNews 上看到 GNU GPLv2 在美國的判例:「The GNU GPL to be tested in court」。\r\n\r\n引用的報導在「GPLv2 goes to court: More decisions from the Versata tarpit」這篇,裡面有幾個角色:\r\n\r\n\r\n\r\n起因在於 Versata 不爽 Infosys 拿他們的軟體開發同性質的軟體,結果告下去後這件事情牽扯到 GPLv2 的授權問題。\r\n\r\n然後 Ximpleware 也跳出來告了所有人,還因為專利關係,告了 Versata 的其他客戶。\r\n\r\n問題分成兩塊討論,一塊是 copyright,另外一塊是 patent。看了一下文章的說明,案子似乎還沒結束,但已經有些結論出來了。\r\n\r\n在 copyright 的部份,法院要求明年二月底前必須上 patch 修正問題。也就是 GPLv2 的感染力是有效的,如果你不打算服從就要賠錢,然後把 GPLv2 程式碼拔乾淨。\r\n\r\n而 patent 的部份有點複雜啊... Ximpleware 的控訴都不成立,不過理由沒有看懂 @_@\r\n\r\n等有更多時間再來看其他的說明研究...", + "title": "GNU GPLv2 的判例" + }, + { + "id": "5490", + "body": "GitHub 發了一篇公告說明這件事情:「Vulnerability announced: update your Git clients」,而 Git 官方的公告在這邊:「[ANNOUNCE] Git v2.2.1 (and updates to older maintenance tracks)」。\r\n\r\n這次的問題起因很好理解,就是有人可以在 repository 裡面放 .GIT 這樣的目錄名稱,配合將大小寫視為一樣的檔案系統 (Windows 系列用的 FATNTFSMac 用的 HFS+),裡面就可以放各種設定值,有機會在 checkout 下來時就執行,或是透過其他的 git 指令執行。\r\n\r\nGitHub 在 server 端擋下來了,不過還是建議 client 端趕快更新到最新版,這些版本會從 client 端擋下這些路徑。\r\n\r\n這次 CVE 編號是 CVE-2014-9390,不過 NIST 的資料庫裡面沒有列出來?", + "title": "Git 安全性更新" + }, + { + "id": "5492", + "body": "雖然是有點久的消息了,但還是拿出來講:「BPG Image format」。\r\n\r\n在「BPG Image Comparison」這頁可以直接看到一些比較,在「BPG/JPEG comparison on the Lena picture」可以看到經典的萊娜圖比較。\r\n\r\n很明顯 BPG 比 JPEG 好很多,而又比 WebP 更上一層樓。但是看到這個部份就皺眉了:\r\n\r\n
Based on a subset of the HEVC open video compression standard.
\r\n\r\n最後面也有提到 HEVC (High Efficiency Video Coding) 的專利問題:\r\n\r\n
Some of the HEVC algorithms may be protected by patents in some countries (read the FFmpeg Patent Mini-FAQ for more information). Most devices already include or will include hardware HEVC support, so we suggest to use it if patents are an issue.
\r\n\r\n繼續觀望下去 :o", + "title": "想要取代 JPEG 的 BPG (Better Portable Graphics)" + }, + { + "id": "5494", + "body": "Slashdot 的「The Case For Flipping Your Monitor From Landscape to Portrait」這篇引用了「You've been using your monitor wrong this whole time」這篇文章。\r\n\r\n文章裡提到了不少範例,像是 CNN 網站的樣子:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n以及 Google 的搜尋結果:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看到打直後的顯示效率高很多。\r\n\r\n如同 Slashdot 網站上 comment 提到的,我也是一個螢幕打橫一個打直,這樣不同用途用起來比較方便。(看影片時會需要正常的螢幕)\r\n\r\n不過我之前有提過,有些網站設計時把寬度最小值設成 1280px,剛好對上 1920x1200 的螢幕打橫後就中獎,這就比較痛苦了:\r\n\r\n
\r\n
\r\n\r\n這篇剛好測試一下 Facebook 的 embed 用在 WordPress 裡面會怎樣 :o", + "title": "把螢幕打直 (Landscape to Portrait)" + }, + { + "id": "5497", + "body": "DEF CON 22 在八月結束後,投影片與影片都放出來了,可以在「Index of /DEF CON 22」這邊取得。\r\n\r\n影片的部份居然還附上 srt 檔,而 presentation 裡面還有一堆 PDF,到底能不能開啊... XD", + "title": "DEF CON 22 的投影片以及影片釋出" + }, + { + "id": "5499", + "body": "翻資料的時候翻到「Scalability Techniques for Practical Synchronization Primitives」這篇文章,裡面剛好提到 HP 的高階伺服器:\r\n\r\n\"\"\r\n\r\nHP 的 CS900 (HP ConvergedSystem) 看起來是搭著 SAP HANA 而出的硬體...\r\n\r\n\"\"\r\n出自「http://ascii.jp/elem/000/000/946/946459/img.html\r\n\r\n記錄起來,如果有需要用到的時候可以去問問 HP...", + "title": "單台 12TB RAM 的 server" + }, + { + "id": "5503", + "body": "Slashdot 的「New Compilation of Banned Chinese Search-Terms Reveals Curiosities」這篇引用了「Some curious search terms denied to the Chinese」這篇文章,在 GitHub 上面有個 repository 試著蒐集這些關鍵字:「jasonqng/chinese-keywords。\r\n\r\n不過看到報導第一件事情注意到的事情是他用的圖片:\r\n\r\n\"\"\r\n\r\n還是說其實台灣已經高度審查了?hmmm...", + "title": "中國的關鍵字審查" + }, + { + "id": "5505", + "body": "Tor 官方預測將會被攻擊:「Possible upcoming attempts to disable the Tor network」。\r\n\r\n透過扣押機器的方式降低 Tor 對 client bootstrap 的承載能力:\r\n\r\n
The Tor Project has learned that there may be an attempt to incapacitate our network in the next few days through the seizure of specialized servers in the network called directory authorities.
\r\n\r\n挑弱點打...", + "title": "Tor 官方預測將會被攻擊" + }, + { + "id": "5507", + "body": "在「\"Lax\" Crossdomain Policy Puts Yahoo Mail At Risk」這篇裡面看到不安全的 Flash 造成的問題:「Seizing Control of Yahoo! Mail Cross-Origin... Again」。\r\n\r\n找有問題的 swf 檔案 (hosting 在 crossdomain.xml 允許的網段下),然後利用 injection 或是根本就沒檢查權限來打趴... 把 swf 當跳板用就是了 :p\r\n\r\n文章後面那個 Disclosure Timeline 看起來頗心酸 :o", + "title": "Flash 的 crossdomain.xml 架構問題" + }, + { + "id": "5509", + "body": "先前幾天 Tor 官方才猜測會被攻擊 (Tor 官方預測將會被攻擊),在今天的 Hacker News Daily 就看到有機器被扣:「[tor-talk] Warning: Do NOT use my mirrors/services until I have reviewed the situation」。\r\n\r\n
Tonight there has been some unusual activity taking place and I have now lost control of all servers under the ISP and my account has been suspended. Having reviewed the last available information of the sensors, the chassis of the servers was opened and an unknown USB device was plugged in only 30-60 seconds before the connection was broken. From experience I know this trend of activity is similar to the protocol of sophisticated law enforcement who carry out a search and seizure of running servers.
\r\n\r\n偵測到機器被打開,並且插入 USB device,接下來失去對機器的控制權。", + "title": "對 Tor 的攻擊開始了..." + }, + { + "id": "5511", + "body": "Apple 第一次的自動強制更新就給了這次的 ntpd 安全性問題 CVE-2014-9295:「Apple pushes first ever automated security update to Mac users」。\r\n\r\n
A remote unauthenticated attacker may craft special packets that trigger buffer overflows in the ntpd functions crypto_recv() (when using autokey authentication), ctl_putdata(), and configure(). The resulting buffer overflows may be exploited to allow arbitrary malicious code to be executed with the privilege of the ntpd process.
\r\n\r\n這次的問題比較刺激...", + "title": "Apple 首次自動強制更新:NTP 安全問題" + }, + { + "id": "5512", + "body": "GitHub 在「Improving GitHub's SSL setup」這邊開頭就提到要拔掉 RC4:\r\n\r\n
To keep GitHub as secure as possible for every user, we will remove RC4 support in our SSL configuration on github.com and in the GitHub API on January 5th 2015.
\r\n\r\n看了一下日曆,算一算其實意思就是「放完假的星期一我們就來拔 RC4」XDDD\r\n\r\n雖然 GitHub 的人說了 Windows XP + IE8 會沒辦法用,不過翻了「Qualys SSL Labs - Projects / User Agent Capabilities: IE 8 / XP」這頁,手動打開 TLS 1.0 後應該還有 TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x13) 這兩個用 3DES 的 cipher 可以掙扎才對?\r\n\r\n不過看 GitHub 目前的 HTTPS 設定,看起來沒打算支援這兩個:「Qualys SSL Labs - Projects / SSL Server Test / github.com」以及「Qualys SSL Labs - Projects / SSL Server Test / github.com」。\r\n\r\n不過順便把 3DES 踢出清單也是比較安全啦...", + "title": "GitHub 預定再兩個星期後廢止 HTTPS 連線的 RC4" + }, + { + "id": "5513", + "body": "Ruby 2.2.0 在假期前釋出:「Ruby 2.2.0 Released」。\r\n\r\n在「Notable Changes since 2.1」的部份有提到新的 GC algorithm (Incremental GC) 以及讓 Symbol 可以被 GC (Symbol GC),而且提到了 Rails 5.0 會受益於此:\r\n\r\n
Recent developments mentioned on the Rails blog suggest that Rails 5.0 will take advantage of Incremental GC as well as Symbol GC.
\r\n\r\n在 Rails 這邊的說明:\r\n\r\n
Rails 5.0 will target Ruby 2.2+ exclusively. There are a bunch of optimizations coming in Ruby 2.2 that are going to be very nice, but most importantly for Rails, symbols are going to be garbage collected.
", + "title": "Ruby 2.2.0:放假前的新版本" + }, + { + "id": "5515", + "body": "這陣子 image format 又被拿出來討論,無論是拿 HEVC 出來用的 BPG,還是 Daala,剛剛又在「MozJPEG 3.0」這邊看到了 MozJPEG 3.0 預計有的改善。\r\n\r\n其中第一個是對白底時的高反差的 workaround,這是一般 libjpeg 壓出來的結果:\r\n\r\n\"\"\r\n\r\n而這是 MozJPEG 壓出來的結果:\r\n\r\n\"\"\r\n\r\n可以看到邊界的部份改善非常多。\r\n\r\n另外是漸層的改善,一樣是 libjpeg 版本與 MozJPEG:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這兩個改善看起來頗不錯啊?", + "title": "MozJPEG 3.0 的改善..." + }, + { + "id": "5517", + "body": "看到「12 Days of HaXmas: Improvements to jsobfu」這篇文章裡提到 JSObfu 這個工具...\r\n\r\n文章裡的範例:\r\n\r\n
$ echo \"console.log('Hello World')\" | jsobfu\r\n\r\nwindow[(function () { var E=\"ole\",d=\"ons\",f=\"c\"; return f+d+E })()][(String.fromChar\r\nCode(108,111,0147))](String.fromCharCode(0x48,0x65,0154,0154,111,32,0127,0x6f,114,01\r\n54,0x64));
\r\n\r\n如果要他滾三次,就變成:\r\n\r\n
$ echo \"console.log('Hello World')\" | jsobfu 3\r\n\r\nwindow[(function(){var T=String[(String.fromCharCode(102,114,0x6f,109,0x43,104,97,0x\r\n72,0x43,0157,0x64,0145))](('j'.length*0x39+54),('h'.length*(3*('X'.length*024+8)+9)+\r\n15),(1*('Q'.length*(1*0x40+14)+19)+4)),Z=(function(){var c=String.fromCharCode(0x6e,\r\n0163),I=String.fromCharCode(99,0x6f);return I+c;})();return Z+T;})()][(String[(Strin\r\ng[((function () { var r=\"de\",t=\"mCharCo\",M=\"f\",_=\"ro\"; return M+_+t+r })())]((0x6*0x\r\nf+12),(01*('J'.length*('z'.length*(4*0x9+4)+27)+1)+46),(0x37*'Bw'.length+1),('K'.len\r\ngth*(0x3*0x1a+17)+14),(02*(1*(1*(05*'RIZ'.length+2)+6)+3)+15),('X'.length*('zzJA'.le\r\nngth*021+15)+21),(0x1*0111+24),('FK'.length*0x2b+28),('z'.length*0x43+0),(03*33+12),\r\n('AZa'.length*('NKY'.length*(02*4+3)+0)+1),(1*0x5c+9)))](('u'.length*(01*('KR'.lengt\r\nh*('av'.length*0x7+3)+5)+19)+(01*('j'.length*056+0)+4)),('z'.length*(String.fromChar\r\nCode(0x67,85,0155,0156,75,84,0114,0x4c)[((function () { var f=\"ngth\",F=\"e\",x=\"l\"; re\r\nturn x+F+f })())]*((function () { var n='m',a='Q'; return a+n })()[(String.fromCharC\r\node(0154,101,110,0x67,0x74,104))]*(function () { var w='d',A='tMf'; return A+w })()[\r\n((function () { var yG=\"ngth\",q5=\"e\",J=\"l\"; return J+q5+yG })())]+'SX'.length)+'crFi\r\nKaq'.length)+(1*026+2)),('p'.length*(06*15+10)+'nnU'.length)))]((function(){var En=S\r\ntring[(String.fromCharCode(0146,0x72,0x6f,0x6d,0103,104,97,0x72,67,0x6f,0144,101))](\r\n(3*041+9),('eHUOhZL'.length*(0x1*(01*9+1)+3)+9)),Y=(function(){var z=(function () {\r\nvar Sf='r'; return Sf })(),Z=(function () { var N='o'; return N })(),C=String.fromCh\r\narCode(0x57);return C+Z+z;})(),k=String[((function () { var b=\"e\",s=\"od\",p=\"fromCha\"\r\n,H=\"rC\"; return p+H+s+b })())](('C'.length*('H'.length*('Ia'.length*0xf+3)+12)+27),(\r\n'G'.length*(01*('Wv'.length*25+10)+27)+14),('Q'.length*077+45),('MXq'.length*30+18),\r\n(1*('B'.length*(0x1*29+20)+24)+38),(0x2*020+0));return k+Y+En;})());
\r\n\r\n嘖嘖... (趕快裝起來玩)", + "title": "JavaScript 混淆工具" + }, + { + "id": "5519", + "body": "前幾天 Twitter 伺服器的時間大爆炸,跳到 2015 年:\r\n\r\n

I MITMed Twitter for Android's login to see why it was failing. The Twitter servers think it's 2015. Amazing. pic.twitter.com/iEu4rEUub9

— Ninji the [REDACTED] (@_Ninji) December 29, 2014
\r\n\r\n\r\n剛剛在 Hacker News Daily 上看到原因:「If you're using YYYY in your JVM service or %G in anything, fix it now」,原因是這樣:\r\n\r\n
The single character G instead of Y took down Twitter's API today.\r\nIf you're using YYYY in your JVM service or %G in anything, fix it now. You're very likely using the wrong year format.\r\n\r\ndate\r\nMon Dec 29 00:44:45 EST 2014\r\ndate -u \"+%G\"\r\n2015\r\n\r\nISO 8601 week numbering has 2015 start this week.
\r\n\r\n在自己電腦上也可以重製出來:\r\n\r\n
gslin@home [~] [01:22/W4] date \r\nWed Dec 31 01:27:00 CST 2014\r\ngslin@home [~] [01:27/W4] date +%Y\r\n2014\r\ngslin@home [~] [01:27/W4] date +%G\r\n2015
\r\n\r\n依照說明,%G 的用途是:\r\n\r\n
year of ISO week number (see %V); normally useful only with %V
\r\n\r\n用錯好慘啊...", + "title": "前幾天 Twitter 伺服器時間大爆炸的原因..." + }, + { + "id": "5520", + "body": "維基百科基金會的人發表了將 PHP 換成 HHVM 後的成果:「How we made editing Wikipedia twice as fast」。\r\n\r\n可以看到編輯存檔時間大幅改善:\r\n\r\n\"\"\r\n\r\n另外是已登入使用者 (通常是經常參與編輯的使用者) 的頁面產生時間也大幅改善:\r\n\r\n\"\"\r\n\r\n另外帶來的好處是 CPU 使用率的下降:\r\n\r\n\"\"\r\n\r\n再來就是看 PHP 7 能追上多少了...", + "title": "Wikipedia 換成 HHVM 的成果" + }, + { + "id": "5521", + "body": "Open plan 的兩種型態,取自維基百科條目:\r\n\r\n\"\" \"\"\r\n\r\n不過在 IT 產業實做後效果一直是個疑問。而 2014 年年初時,有人寫文章拿出來討論,並且給出負面的結論:「The Open-Office Trap」。\r\n\r\n主要是因為開放空間帶來無形的壓力,同時也容易被干擾:\r\n\r\n
In 2011, the organizational psychologist Matthew Davis reviewed more than a hundred studies about office environments. He found that, though open offices often fostered a symbolic sense of organizational mission, making employees feel like part of a more laid-back, innovative enterprise, they were damaging to the workers’ attention spans, productivity, creative thinking, and satisfaction. Compared with standard offices, employees experienced more uncontrolled interactions, higher levels of stress, and lower levels of concentration and motivation. When David Craig surveyed some thirty-eight thousand workers, he found that interruptions by colleagues were detrimental to productivity, and that the more senior the employee, the worse she fared.
\r\n\r\n另外對於健康方面,開放空間互相感染的問題:\r\n\r\n
An open environment may even have a negative impact on our health. In a recent study of more than twenty-four hundred employees in Denmark, Jan Pejtersen and his colleagues found that as the number of people working in a single room went up, the number of employees who took sick leave increased apace. Workers in two-person offices took an average of fifty per cent more sick leave than those in single offices, while those who worked in fully open offices were out an average of sixty-two per cent more.
\r\n\r\n而最近 (2014 年年底) 又被提出來,基本上是引用 2014 年年初那篇文章的負面分析:「Google got it wrong. The open-office trend is destroying the workplace.」。\r\n\r\n文章裡提出幾個 workaround (因為辦公室改建的成本...),包括建立 private area:\r\n\r\n
For one, they should create more private areas — ones without fishbowl windows.
\r\n\r\n另外也可以從個人習慣改善。如果被打斷了,就先做一些其他的事情:\r\n\r\n
For instance, when a colleague has on headphones, it’s a sign that you should come back another time or just send an e-mail.
\r\n\r\n以及利用一些政策避開問題,像是在家工作降低被打擾的機會:\r\n\r\n
On the other hand, companies could simply join another trend — allowing employees to work from home. That model has proven to boost productivity, with employees working more hours and taking fewer breaks. On top of that, there are fewer interruptions when employees work remotely.
​\r\n\r\n不過這些方法偏向 workaround,如果辦公室可以在規劃時就避開的話會更好,像是這樣:\r\n\r\n\"\"\r\nPuffin Browser - CloudMosa - 辦公室座位區 @ wens的相簿 :: 痞客邦 PIXNET ::", + "title": "開放式辦公室 (Open Plan Office) 的問題" + }, + { + "id": "5523", + "body": "Slashdot 的「Ringing In 2015 With 40 Linux-Friendly Hacker SBCs」報導了「Ringing in 2015 with 40 Linux-friendly hacker SBCs」這篇文章,裡面介紹了不少可以跑 Linux 的小板子。\r\n\r\n還蠻多有趣的板子,大多都是 ARM,不過還是有一些 x86 的板子可以玩,另外還有一張 MIPS 的板子...\r\n\r\n\"\"\r\n\r\n另外翻了翻還看到 SAMA5D3 Xplained 這張有兩個網卡的板子 (不過是 GE + FE),好像可以拿來做些有趣的東西?\r\n\r\n\"\"\r\n\r\n不過上次從 zonble 那邊弄來的 Raspberry Pi 好像都還沒動...", + "title": "各種有趣的小板子..." + }, + { + "id": "5524", + "body": "在 OpenStreetMap 的文章「Four New Tile Servers」看到國網中心提供的 CDN node:\r\n\r\n
Tile server longma, Located in Hsinchu Taiwan, kindly hosted by NCHC.
\r\n\r\n\"\"\r\n\r\n可以看到亞洲區 (扣除掉中國大陸) 都導到國網中心了,另外在 HTTP header 裡可以看到是跑 squid/2.7.STABLE9,要說是個很經典的版本嗎...", + "title": "國網中心贊助了 OpenStreetMap 頻寬" + }, + { + "id": "5525", + "body": "拖了好久,總算利用連假的時間 (而且在台灣!) 把桌機的 Ubuntu 12.04 (Precise) 升級到 14.04 (Trusty)。整個升級的過程果然充滿了地雷... XD\r\n\r\n這邊當作雜記記錄下來,希望對之後的人升級有幫助。其中比較重要的前提是,我是用 Unity,所以升級的流程大致照著官方的指示做就可以了,對於使用 GNOME 的人,需要再多研究看看?\r\n\r\n\"\"\r\n\r\n升級前的注意事項:\r\n\r\n\r\n升級完成後的注意事項:\r\n\r\n\r\n升完後還沒解決的問題:\r\n\r\n\r\n對於沒有技術背景的人來說,升級的工程太浩大 (有大量的錯誤訊息要查,然後一個一個解決),還是建議當 Windows 的方法處理會比較好... (重灌未必比較慢,真的...)\r\n\r\n在還沒摸熟前,公司的電腦應該還是維持在 12.04 吧,不然就是等下次連假的時候弄...", + "title": "桌機的 Ubuntu 12.04 升級到 14.04" + }, + { + "id": "5526", + "body": "AWS 改善了 EC2 Spot Instance 的關機通知,在決定 terminate 前兩分鐘 instance 可以得知消息,讓 instance 可以處理「後事」,像是將計算的資料寫回 EBS 或是 S3:「New – EC2 Spot Instance Termination Notices」。\r\n\r\n
Today we are improving the reclamation process with the addition of a two-minute warning, formally known as a Spot Instance Termination Notice.
\r\n\r\n不過目前不是 trigger,而是透過 polling 的方式提供:\r\n\r\n
The Termination Notice is accessible to code running on the instance via the instance’s metadata at http://169.254.169.254/latest/meta-data/spot/termination-time. This field will become available when the instance has been marked for termination (step 3, above), and will contain the time when a shutdown signal will be sent to the instance’s operating system.
\r\n\r\n建議的 polling 時間是五秒鐘一次:\r\n\r\n
We recommend that interested applications poll for the termination notice at five-second intervals.
\r\n\r\n至少有方法得知了...", + "title": "Amazon EC2 Spot Instance 的關機通知" + }, + { + "id": "5527", + "body": "在 Twitter 上看到「Secure Secure Shell」這篇文章,介紹要如何加強 OpenSSH。\r\n\r\n文章裡分成四個部份討論,從 Key exchange 開始,Authentication、Symmetric ciphers 以及 Message authentication codes。\r\n\r\n先把已知有問題的技術都先拿掉 (像是 MD5RC4DES),然後有被 NSA 影響到的技術,而且有不錯的替代方案的也拿掉。\r\n\r\n另外還介紹了 Tor hidden service 下的保護。\r\n\r\n感覺有點偏激的文件,可以拿來參考...", + "title": "安全的 SSH (Secure Secure Shell)" + }, + { + "id": "5529", + "body": "照著「Deploy a Mesos Cluster with 7 Commands Using Docker」上面的方法做,遇到一些小狀況,解決後總算是搞定了。\r\n\r\n文章作者的目的是利用 Docker 在不弄髒環境下讓人很容易上手測試,不需要處理一堆 Java 以及設定檔的問題。讓沒有用過的人可以感受一下 MesosMarathon 的界面與操作。\r\n\r\n總共會跑起四個 docker instance,分別是 ZooKeeper、Mesos Master、Marathon、Mesos Slave Container。\r\n\r\n我遇到的問題是我在 Ubuntu 上面的 UFW 設為 default deny,造成這四隻程式之間溝通不良,最後是針對 docker0 這個 interface 放行:\r\n\r\n
# ufw allow in on docker0
\r\n\r\n有些感覺之後就可以看官網看更進階的功能操作。", + "title": "用 Docker 測試 Mesos" + }, + { + "id": "5530", + "body": "這時候就要拿出經典台詞:\r\n\r\n\"\"\r\n\r\nAnyway,Amazon EC2 推出 C4 Instance 了:「Now Available – New C4 Instances」。\r\n\r\n\"\"\r\n\r\n來看看 c4.8xlarge,最近說不定用的上,不過要注意的是,C4 Instance 只支援 EBS only。\r\n\r\nc4.8xlarge 的 ECU 是 132 (USD$1.856/hour) 而 c3.8xlarge 是 108 (USD$1.68/hour),跟 C3 相比,看起來更實惠一些。", + "title": "Amazon EC2 的 C4 Instance" + }, + { + "id": "5531", + "body": "這邊的 Amazon Redshift 都是跑在 Oregon (us-west-2),前者的價錢是 USD$9.6/hour,後者是 USD$8/hour,大約貴一些。這是同一個 query 跑過多次後穩定的數字,用 PostgreSQL\\timing 出來的數字計算。\r\n\r\n先從比較簡單的 query 開始,這個表格大約六億筆資料,如果以記憶體大小算的話,是 memory-fit。\r\n\r\n前者是:\r\n\r\n
dev=# SELECT COUNT(DISTINCT x) FROM t;\r\n count  \r\n--------\r\n 925612\r\n(1 row)\r\n\r\nTime: 3345.946 ms
\r\n\r\n後者是:\r\n\r\n
dev=# SELECT COUNT(DISTINCT x) FROM t;\r\n count  \r\n--------\r\n 925612\r\n(1 row)\r\n\r\nTime: 2145.132 ms
\r\n\r\n再來條件多一點,一樣前者是:\r\n\r\n
dev=# SELECT x, COUNT(*) AS cnt FROM t GROUP BY x ORDER BY cnt DESC LIMIT 20;\r\n...\r\n(20 rows)\r\n\r\nTime: 2121.002 ms
\r\n\r\n後者是:\r\n\r\n
dev=# SELECT x, COUNT(*) AS cnt FROM t GROUP BY x ORDER BY cnt DESC LIMIT 20;\r\n...\r\n(20 rows)\r\n\r\nTime: 1388.102 ms
\r\n\r\n發現比較貴的 cluster 的反而比較慢 (大台 dw2.8xlarge 組成的),用多台小台的去堆反而比較快。晚點找時間測沒辦法 memory-fit 的速度。\r\n\r\n意外的跟直覺不太一樣,要測過才知道...", + "title": "Redshift 的 2*dw2.8xlarge 與 32*dw2.large 的比較" + }, + { + "id": "5532", + "body": "在 Google Chrome 上裝了「Navigation Shortcuts」:\r\n\r\n快速鍵包含這些:\r\n\r\n\r\n\r\n其實讀的就是 HTML header 裡面的 rel tag。拿來讀 AWS 的文件還蠻方便的...", + "title": "用鍵盤翻頁 (Navigation Shortcuts)" + }, + { + "id": "5534", + "body": "Amazon DynamoDB 頁面上的介紹:\r\n\r\n
Amazon DynamoDB is a fast and flexible NoSQL database service for all applications that need consistent, single-digit millisecond latency at any scale.
\r\n\r\n資料型態的部份就跳過去了,這篇筆記的重點在於 index 的部份 (了解他如何 scale),尤其是對 RDBMS 有了解的人要如何從他所設計的架構理解 DynamoDB 的 index。\r\n\r\n理論基礎是 Amazon 在 2007 年丟出的論文「Dynamo: Amazon’s Highly Available Key-value Store」,這篇論文影響了很多 open source project。\r\n\r\nDynamoDB 的 index 有 Primary Key、Local Secondary Index Key (LSI) 以及 Global Index Key (GSI),在「DynamoDB Data Model」這篇有介紹。\r\n\r\n這邊會拿 Blogger.com 這種多人的 Blog Hosting 當例子:\r\n\r\n\r\n\r\n接下來就從 Primary Key 開始講。\r\n\r\n

Primary Key

\r\n\r\nPrimary Key 保證唯一,這也是 DynamoDB 裡面可以達到 RDBMS 的 UNIQUE KEY 效果的最佳方式。\r\n\r\n有兩種 Primary Key 的型態,一種叫做 Hash,另外一種叫做 Hash-Range。\r\n\r\n兩種都需要指定某一個欄位是 Hash-based column,當作切割 (partition) 的依據。\r\n\r\n

第一種:Hash

\r\n\r\n以 table user 來說,可以拿 user_id 來當作 Hash-based column,裡面有 blog_id 的 list。\r\n\r\n以 table blog 來說,可以拿 blog_id 來當作 Hash-based column,裡面有 post_id 的 list。\r\n\r\n要注意的是,如果表格 PK 是 Hash,那麼就不能使用 LSI 與 GSI 了。只有另外一種型態 (Hash-Range) 才可以用 LSI 與 GSI。\r\n\r\n相對的,Hash-based 的表格因為功能有限,效率通常很好 XDDD\r\n\r\n

第二種:Hash-Range

\r\n\r\n其實 Hash-Range 是一種別的 LSI,兩者最大的差異就是唯一性了。\r\n\r\n另外一種 Primary Key 是 Hash-Range,他需要指定兩個欄位,其中其中 Hash 的欄位就如同上面的解釋,當作資料切割的依據。這邊的唯一性是指 (Hash column, Range column) 唯一,而非只有 Hash 唯一或是 Range 唯一。\r\n\r\n剛剛說到需要指定的另外一個欄位,被稱為「Range」的原因是因為他可以有效率的以 hash + range query 查詢資料。\r\n\r\n以 table post 來說,可以拿 blog_id 當作 Hash-based column,再拿 post_id 當作 Range-based column,等下我們介紹 LSI 時再拿發表時間欄位排序。\r\n\r\n同理,table comment 可以拿 (post_id, commend_id) 當 PK。\r\n\r\n

Query

\r\n\r\nPK 是 Hash 的當然就是指定 Hash-based column 直接查,條件只能是等號。\r\n\r\nPK 是 Hash-Range 的除了可以用 Hash-based column 直接查 (還是只能用等號),另外可以用 Hash-based column + Range-based column 查。\r\n\r\n以 SQL 的想法就像是 WHERE hash_col = 123 AND range_col BETWEEN (123, 456) 的感覺。反正 Hash-based column 一定要等號。\r\n\r\n講到這邊,其實讀過上面提到的 Amazon 那篇論文應該就大概有感覺架構是怎麼搞的了:(這是推敲出來的,未必是實際架構)\r\n\r\n\r\n\r\n當然,考慮到需要實做 rebalance 機制以逐步擴充,這邊 consistent hash ring 的部份的作法可以更細膩,不過就不是這篇要談的重點了。\r\n\r\n接下來要講重頭戲 LSI 與 GSI 了。\r\n\r\n

Local Secondary Index (LSI) 與 Global Secondary Index (GSI)

\r\n\r\n前面有提到 LSI 與 GSI 必須 PK 是 Hash-Range 的情況下能用,兩者都不強制唯一性。\r\n\r\nLSI 與 GSI 都是 (Hash-column based, Range-column based) 的形式,差別在 LSI 的 Hash-column based column 必須跟 PK 的相同,GSI 的可以不用一樣。\r\n\r\n所以對於 table post 可以加一個 LSI (blog_id, post_datetime),就可以用 WHERE blog_id = 123 ORDER BY post_datetime DESC 拉出對應的文章了。\r\n\r\n同理,table comment 是 (post_id, comment_datetime)。", + "title": "Amazon DynamoDB 筆記" + }, + { + "id": "5535", + "body": "DigitalOcean 宣佈支援 FreeBSD:「Presenting FreeBSD! How We Made It Happen.」。\r\n\r\n不過不是全部的 region 都支援,由於 NYC1、NYC2 與 AMS1 這三個地區的架構比較舊,除了這三個以外的地區都支援 FreeBSD。\r\n\r\n文章裡有說明技術上的架構,除了 infrastructure 的支援以外,另外也受益於 bsd-cloudinit。\r\n\r\n不過自從 FreeBSD 換到 Bugzilla 後,我就把 ports maintainership 都轉移出去,再加上桌機與跳板機都改用 Ubuntu,用 FreeBSD 的情況愈來愈少了...", + "title": "DigitalOcean 支援 FreeBSD" + }, + { + "id": "5536", + "body": "Percona 老大 Peter Zaitsev 寫了一篇關於 InnoDB 的 isolation mode 與效能的關係:「MySQL performance implications of InnoDB isolation modes」。\r\n\r\n關於 isolation level 的介紹,也可以參考維基百科上的說明:「Isolation (database systems)」。\r\n\r\n其中有個我也認同的的建議:\r\n\r\n
In general I think good practice is to use READ COMITTED isolation mode as default and change to REPEATABLE READ for those applications or transactions which require it.
\r\n\r\n需要 REPEATABLE READ 需求的 transaction 可以在 session 裡面開,不需要平常就開著。\r\n\r\n而剛從 MyISAM 轉過去的因為本來就沒有 transaction,換到 InnoDB 時強烈建議就直接設上去 (剛好在註解也有提到):\r\n\r\n
I think READ-COMMITTED is better default yet it can break some applications. Though so changing to default storage engine from MyISAM to Innodb did.
", + "title": "InnoDB 的 isolation mode" + }, + { + "id": "5537", + "body": "在 Twitter 上看到的圖直接說明了一切:\r\n\r\n

Never get lost again. Try the new Google Translate app, for Android and iOS → http://t.co/CehXQGAoiC pic.twitter.com/3qDr7Voa8p

— Google (@google) January 14, 2015
\r\n\r\n\r\n這功能...", + "title": "Google Translate 的重大功能發表" + }, + { + "id": "5538", + "body": "因為 Twitter 上這兩個帳號都有跟,所以就看到這兩個帳號的公開喊話記錄:\r\n\r\n

@digitalocean We have big release coming up and want to do a joint promotion (discount codes for CI runners). Who should we email?

— GitLab (@gitlab) January 14, 2015
\r\n\r\n

@gitlab Intriguing... Drop the marketing team a line at marketing@ =)

— DigitalOcean (@digitalocean) January 14, 2015
\r\n\r\n\r\n還蠻有趣的 XD", + "title": "GitLab 與 DigitalOcean 的合作案?" + }, + { + "id": "5539", + "body": "在 Amazon VPC 的架構裡最讓人碎碎唸的一個架構:NAT instance。\r\n\r\nAmazon VPC 分成 Public Network 與 Private Network。\r\n\r\n前者的 Public Network,裡面的機器除了會有 Private IP 外,需要申請 Public IP (可以是隨機分配,也可以是 Elastic IP) 透過 Intenet Gateway (沒有 NAT 功能) 連外,這邊問題比較小,因為 Routing Table 設一下就好了,High Availability 以及 Scalablility 的問題 AWS 會自己解決掉。\r\n\r\n後者 Private Network 因為需要自己架設 NAT instance,所以要自己處理 High Availability 以及 Scalability 問題,由於把機器丟在後面,前面用 ELB 是蠻常見的架構,AWS 一直沒推出 NAT service 讓人感覺很疑惑...\r\n\r\n目前一般在處理 Private Network 的 HA NAT 架構是參考「High Availability for Amazon VPC NAT Instances: An Example」這篇文章,但這篇文章的作法有點複雜。\r\n\r\n我可以接受有一些 downtime 時間以及一些小狀況,相對的,我想要換取極低的管理成本。\r\n\r\n研究了一陣子,最後決定的作法是受到「An Alternative Approach to “HA” NAT on AWS」這篇的啟發,這篇也只講了很簡單的概念,實際上還是要自己研究。\r\n\r\n目前是做在 us-west-2 (Oregon) 的 1b 與 1c 兩個 AZ 上。下面討論時就不說明這點了。\r\n\r\n規劃的想法是 1b 與 1c 兩個 AZ 各建立一個 auto scaling group,透過 auto scaling 各跑一台 NAT instance 處理自己 AZ 的 NAT traffic (所以不是手動跑)。然後我不想要自己建 image 寫太多 hard code 進去,最好是現成的用一用就好 XD\r\n\r\n所以有幾個重點:\r\n\r\n\r\n\r\n機器開起來以後希望做幾件事情:\r\n\r\n\r\n\r\n所以就有兩個重點,一個是 userdata,其中粗體是要修改的 route table id:\r\n\r\n
#!/bin/bash\r\nROUTE_TABLE_ID=rtb-1a2b3c4d\r\nINSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)\r\naws ec2 modify-instance-attribute \\\r\n    --region us-west-2 \\\r\n    --instance-id \"${INSTANCE_ID}\" \\\r\n    --no-source-dest-check\r\naws ec2 replace-route \\\r\n    --region us-west-2 \\\r\n    --route-table-id \"${ROUTE_TABLE_ID}\" \\\r\n    --destination-cidr-block 0.0.0.0/0 \\\r\n    --instance-id \"${INSTANCE_ID}\" || \\\r\naws ec2 create-route \\\r\n    --region us-west-2 \\\r\n    --route-table-id \"${ROUTE_TABLE_ID}\" \\\r\n    --destination-cidr-block 0.0.0.0/0 \\\r\n    --instance-id \"${INSTANCE_ID}\"
\r\n\r\n最前面事先抓 instance_id,然後修改 Source/Destination 檢查,最後面的指令是先試著 ReplaceRoute,如果失敗就 CreateRoute (注意到 shell 的 || 操作)。\r\n\r\n另外的重點是 IAM Role,這台機器對應的 IAM Role 權限要開三個:\r\n\r\n
{\r\n  \"Statement\": [\r\n    {\r\n      \"Action\": [\r\n        \"ec2:CreateRoute\",\r\n        \"ec2:ReplaceRoute\",\r\n        \"ec2:ModifyInstanceAttribute\"\r\n      ],\r\n      \"Effect\": \"Allow\",\r\n      \"Resource\": \"*\"\r\n    }\r\n  ]\r\n}
\r\n\r\n拿 t2.medium 測試,burst 可以到 200Mbps 左右,應該還算夠用?反正不夠用就自己挑其他機器開吧 XD\r\n\r\n最後討論一下 Availability 的情況。這樣的架構可能會有七八分鐘的 downtime,也就是當 instance 掛了,被 auto scaling 重新拉一台新的起來。這邊不做 cross-zone NAT 是因為這樣比較簡單,這邊的 downtime 我還可以接受。\r\n\r\n至於某個 zone 掛掉,應該 cross-zone NAT 趕快導到另外一區的問題... 整個 zone 都滅了就沒有這個問題啊 XDDD", + "title": "建立 Amazon VPC 的 High Availability NAT 架構" + }, + { + "id": "5541", + "body": "Linode 計畫在 2015 年再加開三個機房:「Linode Datacenter Expansion」。\r\n\r\n分別是新加坡、德國法蘭克福、日本東京 (第二機房),新加坡是對於東南亞地區的擴展,法蘭克福則是補上了歐洲地區一直都只有倫敦的問題,最後一個東京第二機房則必須說不意外,之前是亞洲區唯一的點,賣的相當好...\r\n\r\n不過看起來還不是很順,從 comment 可以看到 resolver1.singapore.linode.com 這個 domain,HiNet 過去的 latency 跟美西一樣,不過反正還沒開張,還可以 tune...", + "title": "Linode 的 2015 計畫" + }, + { + "id": "5542", + "body": "2015/01/12 先前在「Amazon EC2 Auto Recovery now available in the US East (N. Virginia) Region」這邊發表了,不過剛剛在「New – Auto Recovery for Amazon EC2」這邊看到消息。\r\n\r\n重點在於偵測到問題時會重開機,並且保持原來的 instance id、IP address、Elastic IP address、EBS 以及其他外部設定:\r\n\r\n
The instance will be rebooted (on new hardware if necessary) but will retain its Instance Id, IP Address, Elastic IP Addresses, EBS Volume attachments, and other configuration details.
\r\n\r\n而被限制在比較新的硬體上,並且目前只有 us-east-1 有:\r\n\r\n
This feature is currently available for the C3, C4, M3, R3, and T2 instance types running in the US East (Northern Virginia) region; we plan to make it available in other regions as quickly as possible.
\r\n\r\n當時看到就覺得很實用了,後來在建立一些底層的 infrastructure 時,覺得其他區沒這功能頗難處理。有在 us-east-1 放機器的人可以測試看看。", + "title": "Amazon EC2 的 Auto Recovery" + }, + { + "id": "5543", + "body": "剛剛 Twitter 上看到 Jeff Barr 的發文:\r\n\r\n

The AWS Website is now available in Traditional Chinese at https://t.co/qUJs8ySOXM pic.twitter.com/D49iM8XFNW

— Jeff Barr (@jeffbarr) January 16, 2015
\r\n\r\n\r\n不過不是所有的頁面都有 :p", + "title": "AWS 官網繁體中文版" + }, + { + "id": "5544", + "body": "hSATAC 推薦的用法是:\r\n\r\n\"\"\r\n\r\n不過我還是不喜歡啊... 關法是到「chrome://flags/#enable-new-profile-management」這邊關掉,需要重新打開 Google Chrome。", + "title": "把 Google Chrome 右上角的帳號管理功能拿掉 (Profile Management)" + }, + { + "id": "5546", + "body": "解法是透過 proxy.hinet.net:80 的 Proxy 服務避開,利用 Proxy 的 IP 出國優先權比較高至少能通。下面說明一下原因。\r\n\r\n這可以解決不少網站不順的問題,像是 Stack Overflow 有用到 CloudFlare 的服務。\r\n\r\n可以看一般家用的 IP 去 ping (2015/01/22 00:31):\r\n\r\n
--- www.cloudflare.com.cdn.cloudflare.net ping statistics ---\r\n101 packets transmitted, 63 received, 37% packet loss, time 104589ms\r\nrtt min/avg/max/mdev = 88.208/131.391/227.889/45.322 ms
\r\n\r\n即使是這個時間,CloudFlare 的品質仍然是爛到爆炸。\r\n\r\n另外看這兩張圖,這是在 HiNet 機房端對 www.cloudflare.com.cdn.cloudflare.net 這個網域的 ICMP ping 的 latency 與 packet loss 記錄:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n這是機房端的 IP 監控的資料,可以看到 latency 會飄高,但至少將 packet loss 維持在一定程度以下。這也是為什麼 proxy.hinet.net:80 可以避開這個問題。\r\n\r\n另外我利用 HiNet 所配發的 PPPoE static IP 測試,也可以避開這個問題,所以 IP 分享器撥號時使用 PPPoE static IP 的方式也可以避開。", + "title": "對付最近 HiNet 到 CloudFlare 不穩定的情況" + }, + { + "id": "5548", + "body": "Backblaze 又丟出了極具爭議性的硬碟故障率資料,直到去年年底為止的數據:「What is the Best Hard Drive?」。\r\n\r\n\"\"\r\n\r\n這張圖超黑的 XDDD\r\n\r\n不過 Seagate Barracuda 7200.14 (ST3000DM001) 這顆好慘啊,1163 顆的死亡率是 43.1%...", + "title": "Backblaze 公佈硬碟故障率" + }, + { + "id": "5551", + "body": "在「Stable Channel Update」這邊看到 Google Chrome 釋出 40 版,除了修正了一卡車的安全性問題外,其實我是因為發現對於使用 SHA-1 certificate 的 SSL icon 又不一樣才發現的...\r\n\r\n借 Plurk 的 domain 看一下:\r\n\r\n\"\"\r\n以及 Imgur 的 domain:\r\n\r\n\"\"\r\n\r\n參考 Gradually Sunsetting SHA-1 這篇文章的說明。\r\n\r\n使用 SHA-1 SSL certificate,有效期間在 2016 年的會顯示黃色三角形 icon:\r\n\r\n
Sites with end-entity certificates that expire between 1 June 2016 to 31 December 2016 (inclusive), and which include a SHA-1-based signature as part of the certificate chain, will be treated as “secure, but with minor errors”.
\r\n\r\n而有效期超過 2016 年的 SHA-1 SSL certificate 會顯示沒有安全的標記:\r\n\r\n
Sites with end-entity certificates that expire on or after 1 January 2017, and which include a SHA-1-based signature as part of the certificate chain, will be treated as “neutral, lacking security”.
\r\n\r\n不過剛剛測了一下,EV SSL 好像不在此限?", + "title": "Google Chrome 釋出 40 版" + }, + { + "id": "5552", + "body": "pfSense 出新版了:「pfSense 2.2-RELEASE Now Available!」。\r\n\r\n之前一直用 RC 版本,看起來可以換過去了。從維基百科更新的資料「pfSense」也可以看到許多改變。\r\n\r\n主要是從 FreeBSD 8.3 換到 10.1,於是支援 PV on HVM。\r\n\r\n而 VPN 類的升級也是讓人心動的一點,換成 strongSwan了。所以該找時間測試效能了,不知道能不能超越 OpenVPN 的 200Mbps...", + "title": "pfSense 2.2" + }, + { + "id": "5553", + "body": "主題「KKBOX Innovation Chat #5 - 利用AWS開發及實作新創公司的基礎資訊建設」的投影片:(Startup IT infrastructure: Developing and Working with AWS)\r\n\r\n\r\n\r\n在準備之前有問了 ericpi (主辦),主要是以 engineer 為主,然後次多的是學生。所以主題上偏技術一點。\r\n\r\n而因為主題是 for startup,所以注重的方向與一般公司不太一樣。在舉例上面,主要是以 KKTIX 以及猜猜巧克力為主,對於 KKBOX 的著墨比較少。\r\n\r\n現場 Q&A 很踴躍,用了不少時間在 Q&A 上,結果講完跟 ericpi 去吃飯時差點睡在餐桌上,回到家確認沒有緊急的事情就倒下去睡死了。\r\n\r\n另外對不起現場聽眾的... 記得講到後面有點累,會發現講到一半「咦,這句中文怪怪的」,就重新再說一次,但好像還是怪怪的... (這代表應該有漏掉沒發現的部份)", + "title": "昨天 (2015/01/27) 在高雄 K Square 的投影片" + }, + { + "id": "5555", + "body": "剛剛看到 DynamoDB 的新功能以及購買 Reserved Capacity 的計費模式:「Amazon DynamoDB Update – Online Indexing & Reserved Capacity Improvements」。\r\n\r\n可以動態增加 Global Secondary Indexes 有點像是「總算可以 ALTER TABLE 了!!!」的感覺 XDDD\r\n\r\n\"\"\r\n\r\n而 Reserved Capacity 好像是第一次把 Capacity 類的費用 commit 化?我記得 EBS 沒有這種計費...\r\n\r\n\"\"", + "title": "DynamoDB 的 Online Indexing 與 Reserved Capacity" + }, + { + "id": "5556", + "body": "看到「Is TLS Fast Yet?」這個站台,開宗明義就講了,這不是問題:\r\n\r\n
TLS has exactly one performance problem: it is not used widely enough.\r\n\r\nEverything else can be optimized.
\r\n\r\n下面的表格分析把對於效能影響的分析寫得很清楚,除了軟體外,還包括了各家 CDN 支援的分析,可以參考一下這邊的分析。", + "title": "TLS 的效能分析" + }, + { + "id": "5557", + "body": "在「YouTube's HTML5 Player, Now Default」這邊看到的。\r\n\r\n\"\"\r\n\r\n這樣做又往拋棄 Flash 邁進一大步... XD", + "title": "YouTube 預設改用 HTML5 Player" + }, + { + "id": "5558", + "body": "跑 openssl speed ecdh 的時候發現很特別的現象:\r\n\r\n
Doing 160 bit  ecdh's for 10s: 40865 160-bit ECDH ops in 9.99s\r\nDoing 192 bit  ecdh's for 10s: 34169 192-bit ECDH ops in 9.99s\r\nDoing 224 bit  ecdh's for 10s: 60980 224-bit ECDH ops in 9.99s\r\nDoing 256 bit  ecdh's for 10s: 34298 256-bit ECDH ops in 10.00s\r\nDoing 384 bit  ecdh's for 10s: 9602 384-bit ECDH ops in 10.00s\r\nDoing 521 bit  ecdh's for 10s: 9127 521-bit ECDH ops in 9.99s
\r\n\r\n原因是 Google 這篇論文的貢獻:「Fast Elliptic Curve Cryptography in OpenSSL」,開頭就提到:\r\n\r\n
We present a 64-bit optimized implementation of the NIST and SECG-standardized elliptic curve P-224.
\r\n\r\n而實際成果:\r\n\r\n
full TLS handshakes using a 1024-bit RSA certificate and ephemeral Elliptic Curve Diffie-Hellman key exchange over P-224 now run at twice the speed of standard OpenSSL, while atomic elliptic curve operations are up to 4 times faster.
\r\n\r\n在 OpenSSLCHANGES 也可以看到對應的修改,不只是 NIST-P224 有被改善,其他的 NIST-P256 與 NIST-P521 也都有被改善:\r\n\r\n
Add optional 64-bit optimized implementations of elliptic curves NIST-P224, NIST-P256, NIST-P521, with constant-time single point multiplication on typical inputs.
\r\n\r\n頗特別的...", + "title": "OpenSSL 的 ECDH 中,224 bits 速度比 160/192 bits 快的原因" + }, + { + "id": "5559", + "body": "CVE-2015-0235:glibc gethostbyname buffer overflow 的問題是:\r\n\r\n
Heap-based buffer overflow in the __nss_hostname_digits_dots function in glibc 2.2, and other 2.x versions before 2.18, allows context-dependent attackers to execute arbitrary code via vectors related to the (1) gethostbyname or (2) gethostbyname2 function, aka \"GHOST.\"
\r\n\r\n這個洞讓只要有接受外部 hostname 查詢的部份就會中獎 (因為所有程式語言大概都是用這組 function 查詢,除了少部份是使用 DNS 查),再加上幾乎每支程式都會用到 glibc,在更新完後得重開機,於是有一堆機器得重開機更新了...\r\n\r\nUbuntu 12.04 中獎,不過 14.04 混過去了...", + "title": "CVE-2015-0235:讓人爆炸的「glibc gethostbyname buffer overflow」" + }, + { + "id": "5560", + "body": "大清早就看到「Amazon WorkMail – Managed Email and Calendaring in the AWS Cloud」這個消息。\r\n\r\nAmazon WorkMail 的價位是 USD$4/user (50GB 空間),包括了 mail 與 calendar 的功能:\r\n\r\n\"\"\r\n\r\n或是加上 Amazon WorkDocs,需要 USD$6/user。\r\n\r\n翻了一下 Google Apps for Work,是 USD$6/user (30GB 空間) 以及 USD$10/user (進階功能,加上無限空間)。\r\n\r\n不過目前只支援 us-east-1 與 eu-west-1 兩個區域,而且是 Preview 狀態 (表示需要填單申請)。也許先測看看,好用的話就來等 ap-northeast-1?", + "title": "Amazon 跨足 Email 市場" + }, + { + "id": "5561", + "body": "看到 ScreenheroSlack 買下來的消息:「Screenhero joins Slack!」。目前只支援付費方案,不過在公司有在推動並且購買付費版 (Standard),而且使用人數還算多,所以可以拿出來用。\r\n\r\n整合是在新聞稿丟出來之前就做完了,單鍵就可以同步帳號。\r\n\r\n在 Ubuntu 桌機上的 Windows XP (在 VirtualBox 裡) 上想裝起來測試發現:\r\n\r\n\"\"\r\n\r\n看起來得把 Mac 開起來弄一弄。\r\n\r\n不過就同事丟出來的分享心得,看起來解決了之前有些同事反應的問題:\r\n\r\n
螢幕分享還可以遠端操控\r\nteamviewer可以丟了
\r\n\r\n不過 TeamViewer 一般還是用在跟外部廠商客戶端的測試吧?倒是可以測試看看 Guest account 可不可以參與 Screenhero,如果可以的話也是不錯的選擇...", + "title": "Slack 與 Screenhero" + }, + { + "id": "5562", + "body": "粗看到還以為四月一號到了 XDDD:「Introducing Video to GIF」。\r\n\r\n拿文章裡說的範例測試 (YouTube 的影片):\r\n\r\n\"\"\r\n\r\n完全是走回頭路 XDDD", + "title": "Imgur 推出 Video 轉 GIF 服務..." + }, + { + "id": "5563", + "body": "Mozilla 宣佈了他們提供硬體與網路,提昇 Tor 的隱私性:「Deploying tor relays」。可以在「Results for mozilla」這邊看到這一波有十二台上線了。\r\n\r\n架構上完全獨立於目前的 production 環境 (所有的硬體與網路設備),這是 Mozilla 提供的網路架構說明:\r\n\r\n\"\"\r\n\r\n另外關於安全以及隱私性的部份,他們也提供了不少意見與說明。\r\n\r\n像是單一組織不應該提供太多 bandwidth,這可以當做是避嫌:\r\n\r\n
A single organization shouldn’t be running more than 10Gbps of traffic for a middle relay (and 5Gbps for an exit node).
\r\n\r\n一個 Tor 節點需要兩個月的時候逐漸讓整個網路使用:\r\n\r\n
A new Tor instance (identified by its private/public key pair) will take time (up to 2 months) to use all its available bandwidth.
\r\n\r\n目前 Tor 的程式效能限制:\r\n\r\n
A Tor process (instance) can only push about 400Mbps.
\r\n\r\n這是 Tor 的安全限制:\r\n\r\n
A single public IP can only be shared by 2 Tor instances
\r\n\r\n這是避開防火牆的限制:\r\n\r\n
Listen on well known ports like 80 or 443
", + "title": "Mozilla 加入 Tor Relay 的行列" + }, + { + "id": "5566", + "body": "在「NoSQL 大腸花」這份投影片裡面的 Page 12 有提到關於 RDBMS 的 Schema Migration:\r\n\r\n\"\"\r\n\r\n以目前 open source 的兩個專案,MySQLPostgreSQL 來看,裡面提到的 lock 應該都不是問題...\r\n\r\n首先是 MySQL 的部份,真的量大的網站都應該是往 InnoDB 投靠,而 pt-online-schema-change 在這個領域則是處理的很好。\r\n\r\nFacebook 的 Mark Callaghan 曾經在 2010 年寫過一篇關於 InnoDB 的 online schema change 的原理:「Online Schema Change for MySQL」,主要是利用 Trigger 的機制,用七個步驟架構出沒有 downtime 的 online scheme change。\r\n\r\n就算不考慮 pt-online-schema-change 這種工具,在 MySQL 5.6 開始,就有愈來愈多 ALTER TABLE 的行為是不會影響到 read/write 了:「Avoiding MySQL ALTER table downtime」。\r\n\r\n而 PostgreSQL 的情況也差不多,常見的 ALTER TABLE (新增與刪除 column 與 index) 也都不會影響 read/write。\r\n\r\n這些在 Stack Overflow 上有不少討論:「ALTER TABLE without locking the table?」。\r\n\r\nMySQL 在 RDBMS 領域裡比起來的確是不怎樣,不過沒有這麼糟糕啊...", + "title": "關於 RDBMS 的 Schema Migration..." + }, + { + "id": "5567", + "body": "剛剛登入發現需要同意新版條款 (2.0),但有條文有問題啊...\r\n\r\n1-2 的部份:\r\n\r\n
任何資料一經您上載、傳送、輸入或提供至本站時,除私人信件外,視為您已同意本站為非營利之無償使用、修改、重製、公開播送、散布、發行、公開發表該等資料,並得將前述權利在保留原作者資訊前提下,轉授權為非營利之使用(轉授權部分本站將列舉轉授權之網站並公告於本站 Announce 板,非本站或本站轉授權之網站未經同意使用您之資料,仍為侵權)。您並應保證本站使用、修改、重製、公開播送、散布、發行、公開發表、轉授權該等資料,不致侵害任何第三人之權利,否則應對本站負損害賠償責任(包括但不限於訴訟費用及律師費用等)。
\r\n\r\n以下資料在本次條文修正時表示站方可以將以下資料公開散佈:\r\n\r\n\r\n後者由於受到「個人資料保護法」的法律保護,這項條文在碰觸這塊時會有很多可以防禦的方法。但前者明顯是漏洞...\r\n\r\n然後我以為官方站名中的「BBS」這個詞彙應該大寫?不知道會不會出 2.0.1...", + "title": "Ptt 新版使用者條款的問題..." + }, + { + "id": "5568", + "body": "Facebook 在「Faster Photos in Facebook for iOS」這篇提到使用 PJPEG 降低流量並且提昇大圖的速度。\r\n\r\n實際上我覺得有點詭異,依照說明,降低流量的部份是因為原來有縮圖與大圖:\r\n\r\n\"\"\r\n\r\n而現在只要抓一張,所以綜合起來降低了:\r\n\r\n\"\"\r\n\r\n但不是每一張都這樣吧?另外是降低了到一定品質所需 image loading 的時間,但這樣看起來用小縮圖應該會更好?雖然 Facebook 的人是以 A/B testing 驗證,但以目前 Facebook 提供的數據並不通,看不太懂他的邏輯...\r\n\r\n先丟著吧...", + "title": "Facebook 用 PJPEG 的技巧" + }, + { + "id": "5569", + "body": "TorrentFreak 上看到的:「Huge Security Flaw Leaks VPN Users' Real IP-Addresses」。\r\n\r\n可以在「https://diafygi.github.io/webrtc-ips/」這邊測試,就算你在 NAT 以及 VPN 後面也可以取得真實的 Public IP 資訊。\r\n\r\nGoogle Chrome 的使用者可以裝「WebRTC Block」阻擋 WebRTC,而 Firefox 則可以透過 about:config 的設定關閉 media.peerconnection.enabled 這個值:\r\n\r\n\"\"\r\n\r\n目前還不太會用到 WebRTC,先擋起來之後再說...", + "title": "利用 WebRTC 取得瀏覽器端的 IP address" + }, + { + "id": "5571", + "body": "在「Create your own MD5 collisions」這篇教你用 Amazon EC2 的 GPU instance 計算 MD5 collision。\r\n\r\n由於不是什麼正式的服務,文章裡介紹你用 Spot instance 開機器,會便宜不少。可以看到最後的結果:\r\n\r\n\"\"\r\n\r\n在文後也把兩張圖都附上來讓大家確認,抓下來後也可以確認:\r\n\r\n
gslin@GSLIN-DESKTOP [~/tmp] [13:16/W3] md5sum *.jpg\r\n253dd04e87492e4fc3471de5e776bc3d  plane.jpg\r\n253dd04e87492e4fc3471de5e776bc3d  ship.jpg
\r\n\r\n屬於 chosen prefix collision 的攻擊。", + "title": "用 Amazon EC2 的 GPU instance 計算 MD5 collision" + }, + { + "id": "5572", + "body": "GitHub 的公告:「Keeping GitHub OAuth Tokens Safe」。\r\n\r\n當你不小心把 GitHub 的 OAuth Access Token 推到 GitHub 的 public repository 時,站方會自動 revoke 掉:\r\n\r\n
Starting today you can commit more confidently, knowing that we will email you if you push one of your OAuth Access Tokens to any public repository with a git push command. As an extra bonus, we'll also revoke your token so it can't be used to perform any unauthorized actions on your behalf.
\r\n\r\n保護使用者在使用 GitHub 自家的產品。", + "title": "GitHub 保護自家的 OAuth Access Token 不會進入 GitHub 上公開的 Repository" + }, + { + "id": "5574", + "body": "在 Cedexis 上看到的 CDN 業者:「KeyCDN」,查了查資料才發現 2012 就已經成立了,維基百科上也有個條目:「KeyCDN」。\r\n\r\n與其他 CDN 相比節點不算多,不過重要的地點也都有 PoP 了。\r\n\r\n主要是價錢很便宜,另外在亞洲區的資料上,Cedexis 上跑出來的結果還不錯?以亞洲只有三個大的點來說好像還不錯... (新加坡、香港、日本)\r\n\r\n註冊後給 30 days 的試用期與 25GB 流量測試。後台的反應速度很不錯 (即使伺服器是放在德國),而且操作也很簡單。找個機會丟些東西上去測看看...", + "title": "測試 KeyCDN" + }, + { + "id": "5575", + "body": "翻資料才知道一月中的時候 µBlock 就支援 Firefox 了:「µBlock - An efficient blocker for Chromium, Firefox, and Safari. Fast and lean.」。\r\n\r\n可以看到不遺餘力的酸 Adblock Plus,裝了 ABP 記憶體使用量反而變大,而且變慢很多:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n目前只提供 xpi 檔下載安裝,暫時沒有在 addons.mozilla.org 上出現。", + "title": "Firefox 版的 µBlock" + }, + { + "id": "5576", + "body": "Imgur 是有名的 Image Hosting,因為速度還算穩定,所以很多人用。\r\n\r\n剛剛看到的新消息,本來要收費 USD$23.95/year 的 Imgur Pro 變成免費了:「Imgur Pro for Everyone」。\r\n\r\n從頁庫存檔抓個截圖下來,把本來 Imgur Pro 的介紹頁記錄下來:(點擊後是大圖)\r\n\r\n\"\"\r\n\r\n不知道接下來會有什麼新的招數...", + "title": "Imgur Pro 變免費..." + }, + { + "id": "5577", + "body": "AWS Config 是個稽核類的產品,把所有的操作行為記錄下來,供事後查詢,一開始只有最早的 us-east-1 有,而剛剛公佈了多支援 us-west-2、eu-west-1、ap-southeast-2 這三區:\r\n\r\n
Today we are adding support for the US West (Oregon), Europe (Ireland), and Asia Pacific (Sydney) regions, with support for others also on the drawing board.
\r\n\r\n不知道為什麼是這三區先上...", + "title": "AWS Config 多支援三區..." + }, + { + "id": "5578", + "body": "Google Chrome 將會在接下來幾個星期的 40 版支援 HTTP/2 (現在已經是 40 版了,所以照這個說法應該是 41 一定會有?),並且在 2016 年拿掉對 SPDY 的支援:「Hello HTTP/2, Goodbye SPDY」。\r\n\r\n接下來又是大量的 migrate 了:\r\n\r\n
We plan to remove support for SPDY in early 2016, and to also remove support for the TLS extension named NPN in favor of ALPN in Chrome at the same time. Server developers are strongly encouraged to move to HTTP/2 and ALPN.
\r\n\r\n在「Implementations」這邊可以看到 HTTP/2 支援的程度,包括了 client 與 server 的部份。", + "title": "Google Chrome 將會用 HTTP/2 取代 SPDY" + }, + { + "id": "5579", + "body": "前幾天資安界的新聞,Mark Burnett 放出了一千萬筆 username + password 的資料,並且給了一份 FAQ 說明:「Today I Am Releasing Ten Million Passwords」、「Ten Million Passwords FAQ」。\r\n\r\n這些資料是整理自網路上已經公開的資訊,讓人研究各種行為。檔案可以透過 BitTorrent 下載取得...", + "title": "公開的密碼檔" + }, + { + "id": "5580", + "body": "在「jQuery Foundation 2014 Annual Report」這篇裡面有提到了 jQuery 在 2014 年的情況,其中 code.jquery.com 使用的頻寬這段還蠻有趣的:\r\n\r\n
If you need evidence that jQuery Foundation projects are used everywhere, look no further than our Content Delivery Network (CDN) powered by MaxCDN. The 290 billion requests in 2014 transferred nearly 11 petabytes of data. That, of course, does not include the requests for locally hosted copies of jQuery and to other CDNs such as Google, Microsoft, or CDNJS. No doubt the overall number of requests is in the trillions.
\r\n\r\n光是 code.jquery.com 每天的量平均就是 30TB,也就是平均流量 3Gbps?如果考慮到 Google 提供的平台更普及...", + "title": "jQuery 官方在 2014 年的概況" + }, + { + "id": "5581", + "body": "「Multithreaded Replication to the Rescue」這篇提到了 Replication 的 Parallel Worker 機制。\r\n\r\n作者給了平行的數量對 replication lag 的影響:\r\n\r\n\"\"\r\n\r\n可以看得出來 Parallel Worker 機制對 Replication Lag 改善頗大,不過作者在 comment 提到中雷了:「MTS breaks in after restart」。\r\n\r\n對於還在使用 traditional master-slave 架構的人可以參考看看。", + "title": "MySQL 的 Parallel Replication" + }, + { + "id": "5582", + "body": "關於 .onion 的 SSL Certificate,在 CAB Forum 這邊提出來表決了:「Ballot 144 – Validation rules for .onion names」。\r\n\r\n有些時間限制與一般的 SSL Certificate 不太一樣:\r\n\r\n
CAs MUST NOT issue a Certificate that includes a Domain Name where .onion is in the right-most label of the Domain Name with a validity period longer than 15 months. Despite Section 9.2.1 of the Baseline Requirements deprecating the use of Internal Names, a CA MAY issue a Certificate containing an .onion name with an expiration date later than 1 November 2015 after (and only if) .onion is officially recognized by the IESG as a reserved TLD.
\r\n\r\n然後:\r\n\r\n
On or before May 1, 2015, each CA MUST revoke all Certificates issued with the Subject Alternative Name extension or Common Name field that includes a Domain Name where .onion is in the right-most label of the Domain Name unless the Certificate was issued in compliance with this Appendix F.
\r\n\r\n等投票結束後再來看...", + "title": "關於 .onion SSL Certificate 的表決 (Tor Network)" + }, + { + "id": "5583", + "body": "在 Twitter 上看到 Jeff Barr 轉貼自論壇的公告:「Announcement: Elastic Load Balancing releases security update to disable RC4」。\r\n\r\n

ELB Security Update - Disable RC4 - http://t.co/vQiGko8IR3 (follow directions to update existing ELBs). #aws pic.twitter.com/jHMOg9cbg0

— Jeff Barr (@jeffbarr) February 12, 2015
\r\n\r\n\r\n既有的 ELB 不受影響,不過官方還是建議把現有的 RC4 關閉。新開的 ELB 如果需要 RC4 也還是可以手洞開回來:\r\n\r\n
If you require RC4 ciphers you can re-enable them by selecting the 2014-10 SSL Security Policy or by manually configuring the SSL ciphers used by the load balancer.
", + "title": "ELB 預設關閉 RC4 Cipher" + }, + { + "id": "5584", + "body": "以往要看 TLS traffic,需要用 mitmproxy 之類的軟體擋在中間,這需要在 client 端安裝對應的 CA root certificate。\r\n\r\n而剛剛在「Decrypting TLS Browser Traffic With Wireshark – The Easy Way!」這篇文章裡面提到了如何讓 FirefoxChrome 記錄下 TLS 的 Session Key,然後倒給 Wireshark 使用。(文章裡有提到需要 dev 版本,不確定是因為新版支援的關係,還是這個功能限制在 dev 版才能用)\r\n\r\n方法是在執行時設定 SSLKEYLOGFILE 這個環境變數,指定寫到某個檔案裡。不論是在 Windows & MacOSX & Linux 都一樣。\r\n\r\n之後就可以把 Session Key 丟給 Wireshark 處理了,就像是這樣:(原文的範例)\r\n\r\n\"\"", + "title": "記錄 Firefox/Chrome 在 TLS 的 Session Key 供 Wireshark 使用" + }, + { + "id": "5585", + "body": "在不靠外力的情況下 (不透過 USB 開機或是 CD/DVD 開機),利用內建的工具拿到 Windows 7 的管理權限:「A tutorial on how to get into an admin account on ANY computer.」。\r\n\r\n最後會變成這樣:\r\n\r\n\"\"\r\n\r\n這方法真是糟糕 XDDD", + "title": "利用記事本與五下 Shift 拿到 Windows 7 的管理權限..." + }, + { + "id": "5586", + "body": "之前推出「0h h1」的 Martin Kool 又推出了新的遊戲「0h n0」:\r\n\r\n\"\"\r\n\r\n又是個殺時間的小遊戲... XD\r\n\r\n看這些圈圈玩久了,回頭看 Terminal 會有種特別方正的感覺 XD", + "title": "0h n0:Q42 推出的新遊戲..." + }, + { + "id": "5587", + "body": "在之前受到批評後,GoogleProject Zero 修正了對應的 Policy:「Feedback and data-driven updates to Google’s disclosure policy」。\r\n\r\n原先的 Policy 是 90 天強制公開,修正的 Policy 有幾個改善:\r\n", + "title": "Google 的 Project Zero 修正 Policy" + }, + { + "id": "5589", + "body": "在「YouTube Launches Multi-Angle Video Experiment」這邊看到的,YouTube 找來了翻唱歌手 Madilyn Bailey 來示範。\r\n\r\n影片可以到 Madilyn Bailey 的「Choose Your View」這邊看。\r\n\r\n切換時不是很順,看起來還在實驗... XD", + "title": "YouTube 的多視角影片" + }, + { + "id": "5591", + "body": "清舊文章看到的:「Why Is The Dollar Sign A Letter S?」。不少國家的貨幣符號是使用 $,這篇文章說明原因是因為來自 peso:\r\n\r\n\"\"", + "title": "為什麼金錢符號 $ 是英文字母 S 加上一豎?" + }, + { + "id": "5592", + "body": "在 Hacker News Daily 上看到的:「Noisli」。\r\n\r\n當需要專心時會找白噪音粉紅噪音這類背景聲音來放,而這個網站則是提供的自然背景的聲音讓你選 (並且 mix)...\r\n\r\n另外有 iOS app 可以裝:「Noisli」。", + "title": "需要專心時的聲音" + }, + { + "id": "5593", + "body": "MegaUpload 的程式設計師 Andrus Nõmm 從荷蘭被引渡至美國受審:「Megaupload Programmer Arrested in The U.S.」、「Megaupload programmer pleads guilty, sentenced to a year in prison」。\r\n\r\n\"\"\r\n\r\n

The US Justice system: An innocent coder pleads guilty after 3 years of DOJ abuse, with no end in sight, in order to move on with his life.

— Kim Dotcom (@KimDotcom) February 13, 2015
\r\n\r\n\r\n趕盡殺絕...", + "title": "MegaUpload 的程式設計師被引渡至美國受審" + }, + { + "id": "5594", + "body": "在 Hacker News Daily 上看到的「GitHut - Programming Languages and GitHub」:\r\n\r\n
GitHut is an attempt to visualize and explore the complexity of the universe of programming languages used across the repositories hosted on GitHub.
\r\n\r\n\"\"\r\n\r\n主要是資訊呈現的方式很不錯,所以特別記錄下來...", + "title": "GitHut:GitHub 上程式語言的分析" + }, + { + "id": "5595", + "body": "一般的 Linux Kernel 更新需要重開機,其中有個商用方案 kSplice 可以做到這點,不過這需要付錢給 Oracle。\r\n\r\n在 Slashdot 上看到 Live Patching 功能的 Open Source 方案前進了一大步:「Live Patching Now Available For Linux」,對應的 Git 記錄在「Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching」這邊。\r\n\r\nRedHatSUSE 都各自實做了對應的版本,而這次 Linus 是在 Kernel 內引入對應的 API,讓 Userland 的程式可以實現對應的功能:\r\n\r\n
It provides a basic infrastructure for function \"live patching\" (i.e. code redirection), including API for kernel modules containing the actual patches, and API/ABI for userspace to be able to operate on the patches (look up what patches are applied, enable/disable them, etc).
\r\n\r\n可以馬上想到的是,之後更新 MySQL 就不用重熱 InnoDB 的 data 了,來繼續關注進展...", + "title": "Open Source 版本的「不重開機更新 Linux Kernel」,kSplice 的替代方案" + }, + { + "id": "5598", + "body": "MozillaShumway 專案是用 JavaScript 實作的 Flash Player,算是把 Flash Plugin 淘汰掉的方案:\r\n\r\n
Shumway is an HTML5 technology experiment that explores building a faithful and efficient renderer for the SWF file format without native code assistance.
\r\n\r\n由於是跑在 JavaScript 內,安全性受到 SpiderMonkey 的 Sandbox 保護,相較於 Adobe 常常出 security update 讓人有點頭痛...\r\n\r\n最近 Shumway 的大進展是在 Firefox Nightly Channel 啟用了部份網站,可以測試 Amazon.com 上的影片:「Firefox Nightly now plays Amazon.com Flash videos using Shumway」。\r\n\r\n不知道有沒有機會 porting 到 Google Chrome 上面...", + "title": "Mozilla 的 Shumway 登陸 Firefox Nightly Channel" + }, + { + "id": "5599", + "body": "m0n0wall 算是元老級的 firewall 套件,看到「End of the m0n0wall project」這個消息還是有點感慨啊...\r\n\r\n\"\"\r\n\r\n有很多類似的 project 興起取代掉了 m0n0wall 的位置 (像是 pfSense),這讓我想到前陣子 esr 在「Defending GCC considered futile」提到 GCC 的沒落時講的話:\r\n\r\n
Obsolescence happens; this is nobody's fault. It will happen to clang/LLVM someday, too, but today is not that day.
", + "title": "m0n0wall 的終結" + }, + { + "id": "5600", + "body": "在 Zite 上看到的「Implementing a Tor relay from scratch」,用 Go 寫的 Tor Relay Server。\r\n\r\n會跳下去用 Go 寫是因為效能上的考量:\r\n\r\n
[...], but the lack of AES-NI instructions on the CPUs cause a significant slowdown.
\r\n\r\n但因為一個 IP 只能跑兩個 instance,這就有點痛了:\r\n\r\n
To maximize the amount of relayed data, it is normal to simply run multiple instances of the program, up to two per IP address.
\r\n\r\n而作者的目標是超過現有的極限:\r\n\r\n
My final goal was to beat the Tor speed record, which was at roughly 200 megabytes per second.
\r\n\r\n成果就是直接吃滿 2Gbps (250MBytes/sec),而且 CPU 只用了 60%:\r\n\r\n
[...] He set up a server with my relay and within a few days we had broken the Tor speed record with a nice 250 megabytes per second, effectively maxing out the network link. CPU usage was at a nice 60% across 12 cores. But his relay also suffered from the memory issues and had to be restarted every few days.
\r\n\r\n\"\"\r\n\r\n作者的程式碼放在 GitHub 上,之後應該會有人跳進去改寫:「A fast implementation of the Tor OR code, in Go」。", + "title": "用 Go 寫的 Tor Relay Server" + }, + { + "id": "5601", + "body": "剛剛看到 AWS 宣佈接受不同幣別的付款:「New – Set Preferred Payment Currency for your AWS Account」。\r\n\r\n當你使用 Visa 或是 MasterCard 時,除了美金外,目前支援這些幣別:\r\n\r\n\r\n\r\n來找業務問一下是不是可以從這些地區出帳,透過租稅協定來降低稅額...", + "title": "AWS 接受不同的幣別付款" + }, + { + "id": "5604", + "body": "OpenStreetMap 宣佈支援路線規劃:「Routing on OpenStreetMap.org」。\r\n\r\n\"\"\r\n\r\n不過我拿台灣的地圖測試,好像不太行 XD", + "title": "OpenStreetMap 支援路線規劃" + }, + { + "id": "5605", + "body": "在「Find How Many Visitors Are Not Seeing Ads on your Website」這篇介紹了如何用 Google Analytics_trackEvent 偵測網站上有多少使用者使用 Adblock 類的軟體。\r\n\r\n不過這完全會低估啊,會在意廣告而裝 Adblock 類的人之中,不少人還會順便擋掉 Google Analytics 啊 XD\r\n\r\n不過這篇有提到一份報告,說 2014 整個 internet 使用 Adblock 的比率大約是 5%,而科技類網站會高出更多:(不過我抓不動這份 PDF...)\r\n\r\n
It is estimated that ~5% of website visitors are blocking ads (PDF report) and the situation could be far worse for websites that have a more tech-savvy audience.
", + "title": "用 Google Analytics 偵測有多少使用者使用 Adblock" + }, + { + "id": "5607", + "body": "Twitter 上看到的:「Bringing asm.js to the Chakra JavaScript engine in Windows 10」。\r\n\r\n這樣只剩下 Safari 還沒支援,其他幾個主流瀏覽器都支援了:(出自維基百科「asm.js」條目)\r\n\r\n
Mozilla Firefox was the first web browser to implement asm.js-specific optimizations, starting with Firefox 22. The optimizations of Google Chrome's V8 JavaScript engine in Chrome 28 made asm.js benchmarks more than twice as fast as prior versions of Chrome.
", + "title": "Windows 10 的 IE 將會有 asm.js 支援" + }, + { + "id": "5608", + "body": "在 Zite 上看到的,Google 把之前買下的 Skybox 所開發的工具 MapReduce for C (MR4C) 放出來:「Google open sources a MapReduce framework for C/C++」。\r\n\r\nMR4C 的程式碼放在 GitHub 上,以 Apache License Version 2.0 授權放出來:「google/mr4c」。", + "title": "Google 將之前買下 Skybox 公司的工具放出來 (MapReduce for C)" + }, + { + "id": "5609", + "body": "Update:參考「聯想與 Superfish 的法律訴訟,以及後續的發展...」。\r\n\r\nUpdate:後續參考「聯想對 Superfish 的新聞稿、反安裝說明,以及影響的機器列表」。\r\n\r\n今天的大條新聞,不少傳統媒體也都有報導:\r\n\r\n\r\n\r\n另外「Lenovo installs adware on customer laptops and compromises ALL SSL.」這篇講得還蠻完整的。\r\n\r\n\"\"\r\n\r\n這次的 adware 還被更歸類到 malware 就是因為他會在本機上安裝自己的 CA root,解開所有的 HTTPS traffic 並且插入廣告。而這包括了銀行網站、醫療網站、各種極度隱私的加密服務。\r\n\r\n
Is Superfish malware?\r\n\r\nLenovo won’t want anyone to call it that, but Superfish has been described as a piece of malware, or an adware pusher, that the Chinese firm pre-installs on consumer laptops.
\r\n\r\n在「Extracting the SuperFish certificate」這邊有告訴你方法,教你取得 SuperFish 的 protected private key & key password。不過不確定每一台機器是不是都一樣,作者把取出來的 pem 檔放在「test.pem」這邊。", + "title": "聯想在筆電上安裝 Adware" + }, + { + "id": "5611", + "body": "Oracle 的 Andrew Morgan 前幾天辦了場 Webinar,投影片以及一些說明有放出來讓大家事後可以參考:「Choosing the right MySQL High Availability Solution – webinar replay」。\r\n\r\n\r\n\r\n\"\"\r\n\r\n其中第七頁的開頭「Don’t assume 99.999% HA needed for all apps」這句帶出了一個重點:99.999% 的每一個九都是成本,而且不是可以簡單帶過去的成本。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n第八頁與第九頁給出了不同 HA 層級中的每個方案 (要注意到這是以 Oracle 的觀點來看),至於最後面將近五十頁的產品介紹看看就好... XD", + "title": "Oracle 對 MySQL HA 方案的介紹" + }, + { + "id": "5613", + "body": "Update:參考「聯想與 Superfish 的法律訴訟,以及後續的發展...」。\r\n\r\n上一篇「聯想在筆電上安裝 Adware」由於被證實每一台機器都是一樣的 CA key,所以這把 key 將可以拿來攻擊這些電腦。\r\n\r\n各家的 Spyware/Adware/Malware 清除軟體都把 Superfish 納入了:\r\n\r\n

Looks like Redmond invoked the nuclear option on Superfish > RT @FiloSottile: GO MICROSOFT pic.twitter.com/5fpSDS9VLq

— Kenn White (@kennwhite) February 20, 2015
\r\n\r\n\r\n聯想官方的新聞稿中裡面有受到影響的機器列表:「LENOVO STATEMENT ON SUPERFISH」。\r\n\r\n\r\n\r\n另外聯想提供了反安裝說明,除了可以用自動化程式處理外,也可以用手動刪除,第一步是先反安裝 Superfish,移除完成後要清除所有 CA root 資料,包括 Windows 系統內 (IE、Chrome、... 使用系統的 CA 資料) 以及 Firefox 的:「Superfish Uninstall Instructions」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n用自動化移除的人,建議做完以後還是手動檢查。", + "title": "聯想對 Superfish 的新聞稿、反安裝說明,以及影響的機器列表" + }, + { + "id": "5615", + "body": "Percona 的 Fernando Laudares 在「How to setup a PXC cluster with GTIDs (and have async slaves replicating from it!)」這篇裡提到了 Percona XtraDB Cluster 5.6 與 GTIDs 的配合方式。\r\n\r\n傳統的 replication 的 binlog 的表示方式是 filename + position,這個是大家已經很熟悉的方式。\r\n\r\n\"\"\r\n\r\n
digraph {\r\n    M1 [label=\"Master 1\"];\r\n    M2 [label=\"Master 2\"];\r\n\r\n    S1 [label=\"Slave 1\"];\r\n    S2 [label=\"Slave 2\"];\r\n    S3 [label=\"Slave 3\"];\r\n    S4 [label=\"Slave 4\"];\r\n\r\n    { rank=same; M1; M2; };\r\n\r\n    { rank=same; S1; S2; S3; S4; };\r\n    S1 -> S2 -> S3-> S4 [style=invis];\r\n\r\n    M1 -> M2;\r\n    M2 -> M1;\r\n\r\n    M1 -> {S1, S2, S3, S4};\r\n    M2 -> {S1, S2, S3, S4} [color=gray];\r\n}
\r\n\r\n優點是很簡單 (很好理解,也很容易設定管理),但缺點是 Slave 的 Master 跳動時 (從 Master 1 跳到 Master 2),Slave 可能會漏資料。\r\n\r\n原因是出自於 MMM 之類的工具無法知道 Master 1 最後一筆寫入的資料對應到 Master 2 的哪個 binlog 位置。\r\n\r\n在 MySQL 5.6 之後多了新的模式,叫做 GTIDs (Global Transaction IDs),把本來 binlog 的 filename + position 改良一下,變成 source_id + transaction_id 的形式。\r\n\r\nsource_id 是每台機器固定的值,目前是用 UUID 代表,而 transaction_id 則是遞增的流水號。所以也很好理解:「source_id 這台機器的第 n 個 transaction」。\r\n\r\n這樣就可以多出很多偵測機制,降低問題發生的機率。\r\n\r\n而 PXC 5.6 在這個領域則是因為已經有了自己的 cluster 機制,所以整個 cluster 會共用一組 UUID。這樣就可以避免混用機制而產生複雜的問題。\r\n\r\n所以就變成三台 Master 互相切換 (通常 PXC 都是三台以上的奇數機器):\r\n\r\n\"\"\r\n\r\n或是其中兩台互相切換 (第三台只跑 garbd 而沒有實際資料時):\r\n\r\n\"\"\r\n\r\n我們家只剩下一組 cluster 是 PXC 5.5 (最大的一組),其他都是 PXC 5.6 了。應該要找人 deploy 這個機制降低 Master 跳機時的人力操作成本了...", + "title": "Percona XtraDB Cluster 5.6 與 GTIDs 的結合" + }, + { + "id": "5620", + "body": "CloudFlare 同時宣佈了停用 RC4 與支援 ChaCha20+Poly1305 的計畫:「End of the road for RC4」、「Do the ChaCha: better mobile performance with cryptography」。\r\n\r\n2014 年年初的時候,CloudFlare 先把 RC4 從 TLS 1.1+ 的連線拿掉,而 2014 年五月時,再把 RC4 搬到 cipherlist 裡優先權最低的,成功的讓 99.9991% 的 request 改用 AES3DES (大約五個 9 ):\r\n\r\n\"\"\r\n\r\n而九個月後的現在,CloudFlare 上 RC4 使用的比率則是降到了 0.000002%,反過來說也就是 99.999998% 的等級 (七個 9),也讓 CloudFlare 決定直接停用掉 RC4。\r\n\r\n另外一個重大的新進展則是 ChaCha20+Poly1305,兩個都是 Daniel J. Bernstein 的作品。其中 ChaCha20 是 stream cipher,Poly1305 是 MAC。\r\n\r\n由於 RC4 已經不夠安全,在行動平台上要夠安全必須使用 AES,但 AES 在 ARM 上面還沒有普及:在 Nexus 6 用的 ARMv7 不支援,是透過 Qualcomm Snapdragon 805 的加掛模組做的,而在低階手機支援度就更不用說了。\r\n\r\nGoogle 大力推動 ChaCha20+Poly1305 的目的,是為了在行動平台上找到一個與 RC4 可以匹敵的速度,而且有著可以超越 AES-GCM 安全性的 cipher+MAC。\r\n\r\n在 CloudFlare 採用 ChaCha20+Poly1305 前,Google 是唯一一個在 HTTPS 上大幅採用的單位,而瀏覽器的部份也只有 Google Chrome 有支援。雖然 Firefox 一直有喊著要支援,但這是個雞生蛋蛋生雞的問題,可以看到進度不怎麼快 (Bug 917571 - Support ChaCha20+Poly1305 cipher suites)。\r\n\r\nCloudFlare 支援之後,使用 ChaCha20+Poly1305 的 pool 瞬間大了不少。可以看到一上線的使用率不算低,瞬間就有 10% 了:\r\n\r\n\"\"\r\n\r\n希望可以推動 Firefox 快一點支援... (這是養大 pool 的下一步)", + "title": "CloudFlare 宣佈停用 RC4,並且支援 ChaCha20+Poly1305" + }, + { + "id": "5622", + "body": "在「Download.com and Others Bundle Superfish-Style HTTPS Breaking Adware」這邊看到的 tweet,講的相當經典,把他找出來:\r\n\r\n

Adware is malware with a legal team.

— InfoSec Taylor Swift (@SwiftOnSecurity) January 14, 2015
\r\n\r\n\r\n文章裡面提到,Superfish 這種插入 CA root certificate 的軟體攔截 HTTPS 內容,不僅僅是 Superfish,這根本是目前免費軟體的「趨勢」,包括了十大裡面的前兩名:\r\n\r\n
Two of the top ten downloads on CNET (KMPlayer and YTD) are bundling two different types of HTTPS-hijacking adware, and in our research we found that most other freeware sites are doing the same thing.
\r\n\r\n在 Facebook 的「Windows SSL Interception Gone Wild」提到了 Facebook 自己觀察到的情況:(SSL traffic 被 Superfish 換掉的百分比,中國地區因為廣為人知的原因,是沒有偵測到的...)\r\n\r\n\"\"\r\n\r\n另外「Beyond Superfish: Turns out SSL-trashing spyware is widespread」也提到問題的嚴重性。\r\n\r\n甚至有些也偽裝成遊戲:「'Superfish'-style vulnerability found in games and parental control software」:\r\n\r\n
Rogers cites products including parental control software and IP-cloaking technology as containing the weakness, while Richard says Facebook discovered the certificates being issued by a number of adware vendors disguised as games or search assistants.
\r\n\r\n實際用 Google Chrome 下載 CNET 上的 KMPlayer,發現直接擋了下來:\r\n\r\n\"\"\r\n\r\n在之後的新版則會更明顯的顯示出來:「More Protection from Unwanted Software」。\r\n\r\n\"\"\r\n\r\n然後是訴訟的問題,在美國已經有消費者決定對聯想與 Superfish 打集體訴訟了,後續的判賠與和解可以繼續追蹤:「Lenovo hit with lawsuit over Superfish snafu」。", + "title": "聯想與 Superfish 的法律訴訟,以及後續的發展..." + }, + { + "id": "5623", + "body": "前幾天 Snowden 發佈出來的消息,全世界最大的 SIM 卡製造商 GemaltoNSAGCHQ 滲透進去,取得所有的 SIM key:「NSA/GCHQ Hacks SIM Card Database and Steals Billions of Keys」、「Gemalto Hack May Have Far-Reaching Effects」。\r\n\r\n
The attack, reported by The Intercept, is breathtaking in its scope and audacity. Attackers allegedly associated with the NSA and GCHQ, the British spy agency, were able to compromise a number of machines on the network of Gemalto, a global manufacturer of mobile SIM cards.
\r\n\r\n不過,只要牽扯上 NSA 與 GCHQ 這對搭檔,事情直接往最糟糕的方面去想就好了。可以假設他們家所有的產品線都失守,包括 AWS 所使用的硬體 2FA:「Multi-Factor Authentication」。\r\n\r\n這讓我頭好痛...", + "title": "Gemalto 被 NSA 與 GCHQ 滲透的問題..." + }, + { + "id": "5624", + "body": "最近因為 Superfish 的關係,對 root certificate 的檢視就愈來愈仔細,在「The Mac Facilitates Spying Too」這篇文章裡,作者發現 Mac OS X 裡面有不少可疑的憑證,像是 DoD (美國政府):\r\n\r\n\"\"\r\n\r\n文章裡面提到包括了 US、JP、CN、TW。\r\n\r\n有人在 GitHub 上放了 script,可以簡單的清除掉這些 root CA:「Delete Known Government-Linked Certificate Authorities in OS X」,這隻程式也不難改,對於有疑慮的 CA 也可以放進去一併處理。", + "title": "刪除 Mac OS X 裡面與政府相關的 SSL certificate" + }, + { + "id": "5627", + "body": "從 Hacker News Daily 上看到,Addy OsmaniGoogle Plus 上提到的:\r\n\r\n\"\"\r\n\r\n總算要改成比較有意義的文字了...", + "title": "錯誤訊息「undefined is not a function」總算要改善了..." + }, + { + "id": "5628", + "body": "感覺接下來的整個月會拿有無窮無盡的 Superfish-like 新聞,下次如果出現 NSA 或是 GCHQ 已經在用這些漏洞的話也不太意外就是了:「Adware Privdog worse than Superfish」。\r\n\r\nPrivDogComodo 發行的 adware,比起 Superfish 更厲害,直接把 CA Certificate 的檢查關掉:\r\n\r\n
It will turn your Browser into one that just accepts every HTTPS certificate out there, whether it's been signed by a certificate authority or not.
\r\n\r\n而 Comodo 是發行 SSL certificate 的公司,很多便宜的 SSL certificate 都是由他們家發出來的... (包括我的 blog)", + "title": "Comodo 的 PrivDog 更厲害:直接關掉 CA Certificate 檢查" + }, + { + "id": "5629", + "body": "雖然平常應該不會常常用到 CREATE TABLEDROP TABLE,不過還是很有趣的 benchmark:「Is MySQL’s innodb_file_per_table slowing you down?」。\r\n\r\n重點在這段:\r\n\r\n\r\n\r\n不過作者測試時沒有用 ENGINE=COMPRESSED (必須在 innodb_file_per_table 打開時才支援,而且這也是選擇打開 innodb_file_per_table 的重要因素),不知道壓縮開起來以後會差多少...\r\n\r\n不過就算再怎麼慢,相較於 CREATE TABLEDROP TABLE 的效能,還是比較計較壓縮換來的 I/O 效能。(尤其是資料量超過記憶體大小時)", + "title": "innodb_file_per_table 對於 CREATE TABLE 與 DROP TABLE 的速度" + }, + { + "id": "5630", + "body": "IRCCloud 宣佈的新功能:「File Uploads」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n用 CloudFront 擋在前面,而且不是 Price Class 100 (因為 mtr 時至少有看到亞洲區的 PoP),不過看起來後面不是 S3...\r\n\r\n在公告的文章裡有提到 Imgur,現在 Imgur 的 CDN 品質好像不是很好?台灣連過去用的是 Fastly 美國的點,但選點好像不太行啊?不過算是堪用...", + "title": "IRCCloud 的檔案上傳功能..." + }, + { + "id": "5631", + "body": "jq 用一陣子了 (因為配合著 AWS 官方的 AWS Command Line Interface 一起用),剛好看到有人介紹:「jq is sed for JSON」。\r\n\r\n現在 Ubuntu 的 package repository 內都有 jq 了 (Ubuntu – Package Search Results -- jq),雖然版本舊了一點,不過基本功能都穩定了,除非有特別的需求,不然應該夠用。\r\n\r\n照原文章的範例,假設 1.json 是這樣:\r\n\r\n
[\r\n  {\r\n    \"type\": \"message\",\r\n    \"user\": \"U024HFHU5\",\r\n    \"text\": \"hey there\",\r\n    \"ts\": \"1385407681.000003\"\r\n  },\r\n  {\r\n    \"type\": \"message\",\r\n    \"user\": \"U024HGJ4E\",\r\n    \"text\": \"right back at you\",\r\n    \"ts\": \"1385407706.000006\"\r\n  }\r\n]
\r\n\r\n而你下這樣的 command 就可以抽出來:\r\n\r\n
$ jq \"[.[] | { the_user: .user, the_text: .text }]\" 1.json\r\n[\r\n  {\r\n    \"the_user\": \"U024HFHU5\",\r\n    \"the_text\": \"hey there\"\r\n  },\r\n  {\r\n    \"the_user\": \"U024HGJ4E\",\r\n    \"the_text\": \"right back at you\"\r\n  }\r\n]
\r\n\r\n很好用的工具 :o", + "title": "用 jq 操作 JSON 文件" + }, + { + "id": "5632", + "body": "CloudFlare 這幾天的動作頗多:「Universal SSL: Encryption all the way to the origin, for free」。\r\n\r\n\"\"\r\n\r\nUniversal SSL 要保護的是右邊 CloudFlare 到 Origin Server 這段:現在可以讓 CloudFlare 簽 SSL certificate,而不用到外面買了。\r\n\r\n這邊的 SSL certificate 只有 CloudFlare 認得,一般的瀏覽器預設值不會認:\r\n\r\n
The CloudFlare Origin CA is currently not trusted by browsers, so these certificates should not be used on sites that are not behind CloudFlare.
", + "title": "CloudFlare 的 Universal SSL" + }, + { + "id": "5633", + "body": "在 Firefox 36 的 Release Notes 內宣佈預設啟用 HTTP/2:\r\n\r\n
Support for the full HTTP/2 protocol. HTTP/2 enables a faster, more scalable, and more responsive web.
\r\n\r\n另外 Firefox 36 也拔除 RC4:\r\n\r\n
No longer accept insecure RC4 ciphers whenever possible
\r\n\r\n接下來應該是 Google Chrome 預設啟用,以及 nginx 的 server implementation...", + "title": "Firefox 成為第一個預設啟用 HTTP/2 的主流瀏覽器" + }, + { + "id": "5635", + "body": "Amazon Redshift 在 Web Console 上推出的新功能:「Custom ODBC/JDBC Drivers and Query Visualization for Amazon Redshift」:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n會把 query 的步驟拆成多個步驟,針對比較吃資源的步驟標出來,讓設計的人可以思考要怎麼改。", + "title": "Amazon Redshift 的 Query 效能調教" + }, + { + "id": "5636", + "body": "CloudFlareHTTPS 支援 HSTS:「Enforce Web Policy with HTTP Strict Transport Security (HSTS)」。\r\n\r\n目前可以設 max-ageincludeSubDomains。至於 preload 還在規劃。不算複雜的功能 (加上 HTTP header),不過對於安全性的幫助很大。\r\n\r\n不過 origin 好像也可以送,不知道 CloudFlare 會不會濾掉...", + "title": "CloudFlare 的 HTTPS 支援 HSTS 設定" + }, + { + "id": "5637", + "body": "CVE-2015-0204 的說明:\r\n\r\n
The ssl3_get_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8zd, 1.0.0 before 1.0.0p, and 1.0.1 before 1.0.1k allows remote SSL servers to conduct RSA-to-EXPORT_RSA downgrade attacks and facilitate brute-force decryption by offering a weak ephemeral RSA key in a noncompliant role.
\r\n\r\n本來是被 OpenSSL 標成低危險性 (出自 secadv_20150108.txt):\r\n\r\n
RSA silently downgrades to EXPORT_RSA [Client] (CVE-2015-0204)\r\nSeverity: Low
\r\n\r\n不過新的攻擊利用這個弱點放大,叫做「FREAK Attack」,可以強制使用 RSA_EXPORT suite 所列的 cipher,而這些 cipher 通常長度都不夠,於是就可以解:\r\n\r\n
A connection is vulnerable if the server accepts RSA_EXPORT cipher suites and the client either offers an RSA_EXPORT suite or is using a version of OpenSSL that is vulnerable to CVE-2015-0204. Vulnerable clients include many Google and Apple devices (which use unpatched OpenSSL), a large number of embedded systems, and many other software products that use TLS behind the scenes without disabling the vulnerable cryptographic suites.
\r\n\r\n影響的範圍主要是支援 RSA_EXPORT suite 的 server:\r\n\r\n
Websites that support RSA export cipher suites (e.g., TLS_RSA_EXPORT_WITH_DES40_CBC_SHA) are at risk to having HTTPS connections intercepted.
\r\n\r\n應該是把 !EXPORT 設上去就可以解掉,不過還是花點時間 review,把可以關掉的舊技術都拔掉會比較好。", + "title": "CVE-2015-0204:OpenSSL 的弱點攻擊 (Android 與 iOS)" + }, + { + "id": "5638", + "body": "在「Oracle has just given you another reason not to install Java on your Mac」這篇看到 Mac 版的 Java 居然會試著安裝 Ask Toolbar:\r\n\r\n\"\"\r\n\r\nOh my god,這太厲害啦~\r\n\r\n

Adware is malware with a legal team.

— InfoSec Taylor Swift (@SwiftOnSecurity) January 14, 2015
\r\n\r\n\r\n還是想貼一下這則 tweet...", + "title": "Mac 版的 Java 安裝 Ask Toolbar..." + }, + { + "id": "5641", + "body": "二月底的老新聞了,VLC 首次全平台釋出 (包括了桌機與行動平台):「VLC Gets First Major Cross-Platform Release」,引用的新聞是:「VLC gets first major release across Windows, Mac, Linux, Android, iOS, Windows Phone, Windows RT, and Android TV」。\r\n\r\n經典的播放軟體,雖然平常在 Linux 上還是用 SMPlayer 比較習慣...", + "title": "VLC 的跨平台支援..." + }, + { + "id": "5642", + "body": "一樣是二月的老新聞:「Microsoft Finally Allows Customers To Legally Download Windows 7 ISOs」。\r\n\r\n微軟推出「Microsoft Software Recovery」這個服務,輸入序號後可以下載 ISO image。\r\n\r\n不過據報導的人說,不是每一個序號都會動... 不知道這個系統是怎麼設計運作的 :o", + "title": "微軟提供合法的 Windows 7 使用者下載光碟映像檔 (ISO image)" + }, + { + "id": "5643", + "body": "在「Intel Announces Atom x3, x5 and x7, First SOCs With Integrated 3G and LTE Modems」這邊看到 Intel 推出包括 3G 或 LTE 的 SoC。Slashdot 的文章引用自「Intel Announces Atom x3, x5 and x7, First SOCs With Integrated 3G And LTE Modems」這篇。\r\n\r\nIntel 的新聞稿可以看「Intel Launches New Mobile SoCs, LTE Solution」這篇。\r\n\r\n\"\"\r\n\r\n相較於其他 ARM 上的繁榮光景,Intel 自己總算往市場丟出些東西了...", + "title": "Intel 推出包含 3G/LTE 的 SoC" + }, + { + "id": "5644", + "body": "Mozilla 申請 Google Summer of Code 2015 被拒絕:「Mozilla not accepted for Google Summer of Code 2015」。\r\n\r\n不過以 Mozilla 的能量來看感覺還好?反倒是 Tor (EFF) 也被拒絕就讓人很訝異了...\r\n\r\nDon't be evil 啊...", + "title": "Mozilla 與 Tor (EFF) 申請 Google Summer of Code 2015 被拒" + }, + { + "id": "5645", + "body": "Slashdot 上看到 Google 發表了計算網頁真實性的演算法,Knowledge-Based Trust (KBT):「Google Wants To Rank Websites Based On Facts Not Links」,原始的論文 PDF 檔案可以在「Knowledge-Based Trust: Estimating the Trustworthiness of Web Sources」這邊取得。\r\n\r\n論文本身的原理不難懂 (其實方法相當有趣),主要是給出了三個貢獻。\r\n\r\n首先是能夠區分是取出資訊的方法有問題 (extract 的演算法不夠好),或是網站本身就給出錯誤的資訊:\r\n\r\n
Our main contribution is a more sophisticated probabilistic model, which can distinguish between two main sources of error: incorrect facts on a page, and incorrect extractions made by an extraction system.
\r\n\r\n第二個則是在效能上的改善:\r\n\r\n
Our second contribution is a new method to adaptively decide the granularity of sources to work with: if a specific webpage yields too few triples, we may aggregate it with other webpages from the same website. Conversely, if a website has too many triples, we may split it into smaller ones, to avoid computational bottlenecks (Section 4).
\r\n\r\n第三個則是提出好的分散式演算法,可以螞蟻雄兵計算出來:\r\n\r\n
The third contribution of this paper is a detailed, large-scale evaluation of the performance of our model.
\r\n\r\nKBT 並不是要取代 PageRank,而是跟 PageRank 互相配合,可以有效打擊內容農場 (Content farm) 這類網站,畢竟 PageRank 的假設在一般的狀況下是有邏輯的。\r\n\r\n在「High PageRank but low KBT (top-left corner)」這段講到了這件事情:\r\n\r\n
We consider the 15 gossip websites listed in [16]. Among them, 14 have a PageRank among top 15% of the websites, since such websites are often popular. However, for all of them the KBT are in the bottom 50%; in other words, they are considered less trustworthy than half of the websites. Another kind of websites that often get low KBT are forum websites.
\r\n\r\n再找時間細讀其他類似的演算法...", + "title": "Google 發表計算網頁真實性的演算法 (Knowledge-Based Trust)" + }, + { + "id": "5647", + "body": "Google Cloud 推出了 Nearline Storage:「Introducing Google Cloud Storage Nearline: (near)online data at an offline price」。\r\n\r\n\"\"\r\n\r\n同樣都是 USD$0.01/GB,相較於隔壁棚 AWSAmazon Glacier 需要 3~5 小時的重新上線時間,Nearline Storage 是 3 秒鐘。\r\n\r\n不知道這次 AWS 會多快反擊...", + "title": "Google Cloud 推出 Nearline Storage" + }, + { + "id": "5649", + "body": "在 Twitter 上看到公告:「Announcement: EC2 instance Auto Recovery now available in 8 more AWS Regions」。\r\n\r\n也就是 C3、C4、M3、R3、T2 這五種 instance 都可以開 Auto Recovery,而且必須在 VPC 內的 EBS-only instance。\r\n\r\n在某種程度上的 High Availability 機制可以直接用這個功能解決掉。", + "title": "EC2 instance Auto Recovery 功能全區開放" + }, + { + "id": "5650", + "body": "Google 公告後馬上傳遍:「Bidding farewell to Google Code」。\r\n\r\n幾個時間點:\r\n\r\n\r\nGoogle 有提供「Export to GitHub」這個服務轉換到 GitHub 上,或是透過手動轉換:Git 的部份比較簡單,直接推上新的 hosting 即可,而其他的需要工具轉換。", + "title": "Google 宣佈關閉 Google Code" + }, + { + "id": "5653", + "body": "GoogleProject Zero 實做 Rowhammer Bug:「Exploiting the DRAM rowhammer bug to gain kernel privileges」。\r\n\r\n開頭就很科幻:\r\n\r\n
“Rowhammer” is a problem with some recent DRAM devices in which repeatedly accessing a row of memory can cause bit flips in adjacent rows.
\r\n\r\n然後就提到實做了:\r\n\r\n
We tested a selection of laptops and found that a subset of them exhibited the problem. We built two working privilege escalation exploits that use this effect.
\r\n\r\n給出了 NaCl sandbox escape 與 Kernel privilege escalation 兩種方式。\r\n\r\n這頭快炸了...", + "title": "Rowhammer Bug:攻擊記憶體的值..." + }, + { + "id": "5655", + "body": "在 Slashdot 上的「Endurance Experiment Kills Six SSDs Over 18 Months, 2.4 Petabytes」看到的,針對萬元以下的 SSD 硬碟大量寫入測試 (算是家用級別?),在經過 18 個月後總算都掛光了...\r\n\r\n報導出自「The SSD Endurance Experiment: They're all dead」:\r\n\r\n\"\"\r\n\r\n最快死透的是 Intel 的,不過也到了 800TB 的寫入量才掛,如果以每天寫 1TB 的量來算也超過兩年了,看了一下我們家比較忙的 database server 也沒這個量啊,這幾年改善好多...", + "title": "SSD 硬碟的「寫到掛」測試" + }, + { + "id": "5657", + "body": "在「RC4 must die」這個網站寫的真直接,正式標題是「Attacks Only Get Better: Password Recovery Attacks Against RC4 in TLS」。\r\n\r\n可以在 226 次嘗試取得 TLS 裡傳輸的 password,相較於之前的 234 低了非常多。另外論文裡也說明了他們成功實作 PoC,取得 IMAP (TLS) 與 HTTP Basic Auth (TLS) 的密碼部份。\r\n\r\n不過 RC4 的使用率比想像中高好多 (出自 ICSI Certificate Notary project 的「Connection Cipher Details」數據):\r\n\r\n
Despite 2013's high-profile attacks on the RC4 algorithm in TLS, its usage is today (March 2015) still running at about 30% of all TLS traffic.
\r\n\r\n現在的超級低標應該是 TLS 1.0 的 3DES (給 Windows XP + IE8 的情況下用),不過也已經不夠安全,能拔掉的就先拔...", + "title": "再度改善對 RC4 的攻擊效率..." + }, + { + "id": "5658", + "body": "在同一天的 Hacker News Daily 上看到這兩篇,這是怎樣 XDDD:\r\n\r\n\r\n\r\nRMS 對 Facebook 的意見就不提了,來討論後面這個專案:\r\n\r\n
The idea of this project is to tunnel Internet traffic through Facebook chat (packets are sent as base64), the main component is tuntap and also the Google's Gumbo parser which does the interaction with Facebook (login, send/receive messages, etc.).
\r\n\r\n用 C++ 寫的... 不過 Facebook 可以通的環境通常可以有其他的 VPN 選擇吧 @_@", + "title": "用 Facebook Chat 當作 VPN tunnel..." + }, + { + "id": "5659", + "body": "是個把餅做大的概念?還是是因為公司已經被買走了所以就隨便了... XD\r\n\r\nAnyway,貼 tweet:\r\n\r\n

@HipChat Thank you so much for the cake! Unexpected, gracious, and so lovely. pic.twitter.com/TO7zaOcYib

— Slack (@SlackHQ) February 12, 2015
\r\n", + "title": "把餅做大的概念?" + }, + { + "id": "5662", + "body": "在「InnoDB Full-Text : N-gram Parser」這邊看到對 MySQL 5.7 InnoDB 的全文搜尋功能介紹。開頭就有很重要的說明:\r\n\r\n
I’m now very happy to say that in MySQL 5.7.6 we’ve made use of the new pluggable full-text parser support in order to provide you with an n-gram parser that can be used with CJK!
\r\n\r\n這對資料量在中等或是更少的公司相當方便,你可以架 replication server 專門跑 search,而不需要利用 reliable queue 確保更新後推進 SolrElastic (改名了,之前叫 ElasticSearch)。\r\n\r\n不過,如果資料量很大的話應該還是得用 Solr 或 Elastic 的方案...", + "title": "MySQL 5.7 的 InnoDB 的全文搜尋" + }, + { + "id": "5663", + "body": "本來是不太寫 Amazon Elastic Transcoder 的,但是看到這個實在是...:「Amazon Elastic Transcoder Update – New Formats & Conversion Controls」。\r\n\r\n\"\"\r\n\r\n最新支援:影片轉成動態 GIF!\r\n\r\n\"\"\r\n\r\nAmazon 你控制一下好嗎 XDDD", + "title": "Amazon Elastic Transcoder 更新:支援 GIF..." + }, + { + "id": "5667", + "body": "mermaid 這個專案畫出來的圖還蠻順眼,雖然與 DOT graph 的語法不太一樣,不過還是很簡單,看一下介紹就會用了。\r\n\r\n在 cdnjs 上有 hosting,把 code 放到 div 裡面,設定 class=\"mermaid\",然後直接 script 掛進來就可以了。不過最近 CloudFlare 的速度一直很不順,在意的人可以考慮自己 hosting 一份。\r\n\r\n簡單的像是這樣:\r\n\r\n\"\"\r\n\r\n比較複雜點的:\r\n\r\n\"\"", + "title": "用 mermaid 畫流程圖..." + }, + { + "id": "5668", + "body": "無意間測試時發現的...\r\n\r\n用 Ubuntu 14.04 的 PPPoE 撥上 HiNet 後,會拿到 IPv6 address (我記得申請完後之前一直拿不到),然後一次拿好幾個 (不知道什麼原因,應該要去翻翻看 IPv6 是不是有什麼特性):\r\n\r\n
ppp0      Link encap:Point-to-Point Protocol  \r\n          inet addr:1.163.x.x  P-t-P:168.95.x.x  Mask:255.255.255.255\r\n          inet6 addr: 2001:b011:3008:282:xxxx:xxxx:xxxx:xxxx/64 Scope:Global\r\n          inet6 addr: 2001:b011:3008:282:xxxx:xxxx:xxxx:xxxx/64 Scope:Global\r\n          inet6 addr: 2001:b011:3008:282:xxxx:xxxx:xxxx:xxxx/64 Scope:Global\r\n          inet6 addr: 2001:b011:3008:282:xxxx:xxxx:xxxx:xxxx/64 Scope:Global\r\n          inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/10 Scope:Link\r\n          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1\r\n          RX packets:24632377 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:16553423 errors:0 dropped:0 overruns:0 carrier:0\r\n          collisions:0 txqueuelen:3 \r\n          RX bytes:30408127665 (30.4 GB)  TX bytes:2344774062 (2.3 GB)
\r\n\r\n然後到處亂測發現 Facebook 在台灣有機房:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [00:32/W3] mtr --report www.facebook.com\r\nStart: Thu Mar 19 00:32:25 2015\r\nHOST: GSLIN-HOME1404              Loss%   Snt   Last   Avg  Best  Wrst StDev\r\n  1.|-- ipv6.dynamic.hinet.net     0.0%    10    6.2   6.5   6.2   7.3   0.0\r\n  2.|-- 2001:b000:82:5:22:2201:1:  0.0%    10    6.1   9.0   6.1  26.4   6.3\r\n  3.|-- 2001:b000:82:4:3201:3302:  0.0%    10    6.7   6.6   6.3   6.8   0.0\r\n  4.|-- 2001:b000:80:3:80:82:3:2   0.0%    10   11.6  10.7   6.9  16.6   2.8\r\n  5.|-- 2001:b000:80:4:3011:3311:  0.0%    10    6.9   7.3   6.4  10.0   1.1\r\n  6.|-- 2001:b000:80:7:0:3:2934:1  0.0%    10   16.8   8.3   6.9  16.8   3.0\r\n  7.|-- po126.msw01.01.tpe1.tfbnw  0.0%    10    7.9   8.0   7.5   8.9   0.0\r\n  8.|-- edge-star6-shv-01-tpe1.fa  0.0%    10    7.3   7.2   6.8   7.6   0.0
\r\n\r\n再回頭測了 IPv4:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [00:32/W3] mtr --report -4 www.facebook.com\r\nStart: Thu Mar 19 00:33:18 2015\r\nHOST: GSLIN-HOME1404              Loss%   Snt   Last   Avg  Best  Wrst StDev\r\n  1.|-- h254.s98.ts.hinet.net      0.0%    10    6.9   6.4   5.8   6.9   0.0\r\n  2.|-- SNUH-3301.hinet.net        0.0%    10    6.3  12.2   6.2  60.9  17.1\r\n  3.|-- SNUH-3201.hinet.net        0.0%    10    6.2   6.6   6.2   6.8   0.0\r\n  4.|-- TPDT-3011.hinet.net        0.0%    10    7.8   8.8   7.6  10.5   0.7\r\n  5.|-- tpdb-3311.hinet.net        0.0%    10    6.4   6.7   6.3   7.8   0.3\r\n  6.|-- 203-75-228-33.HINET-IP.hi  0.0%    10    7.4   7.3   7.0   7.6   0.0\r\n  7.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n  8.|-- edge-star-shv-02-tpe1.fac  0.0%    10    7.3   7.3   6.8   7.7   0.0
\r\n\r\n而且 Facebook 上的圖片會導到 scontent-tpe.xx.fbcdn.net,這樣產生的量應該不小?而用 Googlescontent-tpe.xx.fbcdn.net,可以看到大約是在 2015/02/14 上線的。\r\n\r\n透過幾個不同的 ISP 看了一下 routing,應該是跟國內幾個 ISP 有 peering,沒有的就走 TPIX 交換。\r\n\r\n不過學術網路 (TANet) 得繞到香港 HKIX 再回來,這就有點虧了,不曉得 Facebook 對學網是不是吐其他的 endpoint 出去。(有租用國際線路 transit 的學校應該會走租用的國際線路,通常是 TWGate 就交換到 TPIX,不會這樣繞...)", + "title": "幾個新發現:IPv6 與 Facebook 台灣機房..." + }, + { + "id": "5669", + "body": "在 Ubuntu Insights 上看到「UK Government issues Ubuntu 14.04 LTS Security Guidance」,英國政府發布了 Ubuntu 14.04 LTS 的資安規範:「End User Devices Security Guidance: Ubuntu 14.04 LTS」,在裡面甚至還包括了 script 幫你處理。\r\n\r\n可以在「End User Devices Security and Configuration Guidance」的「Per-platform Guidance」看到其他作業系統的資安管理規範。\r\n\r\n在企業規劃內部的資安規範時也可以拿來參考看看?", + "title": "英國政府對電腦的資安管理機制:Ubuntu 14.04 LTS 的部份" + }, + { + "id": "5670", + "body": "在「New JavaScript techniques for rapid page loads」這篇提到了 Google Chrome 41 對網頁速度的改善,尤其是 JavaScript 很多的情況下:\r\n\r\n\"\"\r\n\r\n另外 Google Chrome 42 則會再透過 cache 加速 (目前的穩定版是 41):\r\n\r\n
Chrome 42 introduces an advanced technique of storing a local copy of the compiled code, so that when the user returns to the page the downloading, parsing, and compiling steps can all be skipped. Across all page loads, this allows Chrome to avoid about 40% of compile time and saves precious battery on mobile devices.
\r\n\r\njQuery 這類經常被重複載入的程式碼將會被 compile + cache,大幅加快頁面呈現的速度。\r\n\r\n從另外一方面觀察,已經進展到使用 cache 機制加速,看起來其他的都做的差不多了?", + "title": "Google Chrome 41 的加速改善" + }, + { + "id": "5674", + "body": "前幾天 OpenSSL 就已經先發出通知,將會有安全性更新:「Forthcoming OpenSSL releases」。\r\n\r\n剛剛看到更新了,總共 14 個 (但官網上寫「Security Advisory: twelve security fixes」,這是怎樣...):「OpenSSL Security Advisory [19 Mar 2015]」,其中有兩個 Severity: High 的更新,有一個是之前就已經公開了。\r\n\r\n不過一堆 segmentation fault、memory corruption 的安全性更新...", + "title": "OpenSSL 的安全性更新 (2015/03/19)" + }, + { + "id": "5675", + "body": "剛剛看到的消息,教育部國語辭典公眾授權網採用 CC BY-ND 3.0 TW 授權,將《重編國語辭典修訂本》、《國語辭典簡編本》、《國語小字典》三本字辭典公開授權,並且提供結構化的資料下載:\r\n\r\n
\r\n\r\nND 有點可惜啊,不過是一大步了...", + "title": "教育部三本字辭典改用 CC BY-ND 3.0 TW 授權" + }, + { + "id": "5676", + "body": "從「Amazon Launches One-Hour Delivery Service In Baltimore and Miami」這邊看到的,引用的報導是「Amazon launches one-hour delivery service in Baltimore」。\r\n\r\n有付 Amazon Prime 費用的人在這兩個地區將提供兩小時到貨 (free),或是一小時到貨 (多收 USD$7.99):\r\n\r\n
The service will be available in select zip codes to Amazon Prime subscribers, who pay $99 a year for unlimited free two-day delivery on more than 20 million items. The one-hour service, available through the Prime Now mobile app, costs $7.99, while two-hour delivery will be free.
\r\n\r\n去年在曼哈頓的實驗算是成功吧... 只是 FAA 同意無人小型貨運機的實驗授權一下來就這樣公佈啊... (Amazon Gets Experimental Airworthiness Certificate)", + "title": "Amazon 在巴爾的摩與邁阿密推出「一個小時到貨」服務..." + }, + { + "id": "5679", + "body": "在「Microsoft Blacklists Fake Finnish Certificate」這邊看到出包,引用的報導來自「Microsoft Blacklists Fake Certificate」,微軟的安全性通知則是在「Microsoft Security Advisory 3046310 (Improperly Issued Digital Certificates Could Allow Spoofing)」這邊。\r\n\r\n原因是因為 hostmaster 這個使用者名稱沒有擋下來不讓使用者註冊:\r\n\r\n
In fact, he reports that he was able to register the alias \"Hostmaster@live.fi\", which he then used to obtain a legitimate HTTPS certificate for Live.fi via Comodo, which is the world's largest digital certificate authority.
\r\n\r\n這件事情拉出了對於「認證」一直沒有標準可以遵循的問題,大致上只有「RFC 2142 - Mailbox Names for Common Services, Roles and Functions」有列出一些常用的 username,其他的就沒印象了。CA/Browser Forum 不知道有沒有對應的標準...", + "title": "Comodo 發出微軟 live.fi 的 SSL Certificate..." + }, + { + "id": "5680", + "body": "Microsoft 的 Windows 10 更進一步限制了 Secure Boot 的選擇:「Linux’s worst-case scenario: Windows 10 makes Secure Boot mandatory, locks out other operating systems」。\r\n\r\n之前是關閉,現在則是必須要 optional (包裝用語啦,意思是預設值打開,使用者可以進 UEFI console 關閉):\r\n\r\n
OEMs are still required to ship Secure Boot, but the previously mandatory disable switch is now optional
\r\n\r\n\"\"\r\n\r\n是個「溫水煮青蛙」的概念,如果這次沒擋下來,下一次 Microsoft 就會規定 OEM 出版只能在安裝在強制打開 Secure Boot 的機器上使用 (不能關閉)。", + "title": "溫水煮青蛙:Windows 10 與 Secure Boot" + }, + { + "id": "5681", + "body": "直接貼 tweet:\r\n\r\n

キンブレⅩⅢぱねぇwwwww RGBW調整できてカラーリング無限大wwwww pic.twitter.com/quSDK0Q8JD

— めしあ@AJN→AJ両日 (@mesia_) March 21, 2015
\r\n\r\n\r\n日本人戰力無限啊,如果配合 public key 機制,說不定還可以做到可重複使用讓主辦單位 remote control 的版本?", + "title": "KING BLADE 第十三代:沃槽..." + }, + { + "id": "5682", + "body": "最近很熱門的新聞:「FTC: Google Altered Search Results For Profit」,國內也有媒體已經報導 (報導:FTC機密文件指控Google不當商業行為壟斷搜尋市場),不過沒受到太多注意?\r\n\r\n起因自 The Wall Street Journal (WSJ) 透過 FOIA (資訊自由法) 要資料的時候,意外拿到 2012 年 FTCGoogle 壟斷而做出評估的文件,整個案件於 2013 年年初達成和解。\r\n\r\nWSJ 的報導可以參考「Inside the U.S. Antitrust Probe of Google」這篇。(有 Paywall,可以透過 Google 搜尋這個標題後再點進去 XDDD)\r\n\r\n\"\"\r\n\r\n另外 Google 內部知道他們的市占率比外部估出來的高出不少 (外部估算 65%,但內部自己評估 69% 到 84%),但也因此感到欣慰 (避免了反壟斷的壓力):\r\n\r\n
Data included in the report suggest Google was more dominant in the U.S. Internet search market than was widely believed. The company estimated its market share at between 69% and 84% during a period when research firm comScore put it at 65%. “From an antitrust perspective, I’m happy to see [comScore] underestimate our share,” the report quoted Google Chief Economist Hal Varian as saying, without specifying the context.
\r\n\r\n接下來看看美國政府會怎麼出招,另外歐盟也應該會交叉參考?", + "title": "Google 利用搜索的壟斷優勢打擊競爭對手" + }, + { + "id": "5683", + "body": "在「To Avoid NSA Interception, Cisco Will Ship To Decoy Addresses」這篇看到的報導,出自「Cisco posts kit to empty houses to dodge NSA chop shops」這篇。\r\n\r\n去年 Snowden 揭露的資料顯示 NSA 會攔截 Cisco 的硬體,並且在上面安裝後門再打包寄出:「Greenwald alleges NSA tampers with routers to plant backdoors」:\r\n\r\n
\"The NSA routinely receives – or intercepts – routers, servers and other computer network devices being exported from the US before they are delivered to the international customers.\"\r\n\r\nThe agency then implants backdoor surveillance tools, repackages the devices with a factory seal and sends them on. The NSA thus gains access to entire networks and all their users.
\r\n\r\n不過 Cisco 的反應好慢,去年五月就有的消息,現在才提出改善方案。\r\n\r\n改善的方法是寄送到集散地,再請人去拿。讓 NSA 之類的單位想要攔截的成本提高。", + "title": "Cisco 會將硬體寄送到貨運商,以提高 NSA 攔截安裝後門的難度" + }, + { + "id": "5684", + "body": "Slashdot 上看到「Arkansas Is Now the First State To Require That High Schools Teach Coding」,報導自「Arkansas is Now the First State to Require That High Schools Teach Coding」。\r\n\r\n2015~2016 這個年度將會開始招募大量教師,在高中內教 coding,大約花費一億五千萬台幣。\r\n\r\n
Training programs for teacher preparation will be available, but with the majority of the infrastructure already primed, the execution of this new law should hopefully be painless and seamless.
\r\n\r\n推行到高中啊...", + "title": "阿肯色州成為第一個要求高中教 coding 的州" + }, + { + "id": "5687", + "body": "Facebook 推出 Augmented Traffic Control,模擬網路環境:「Augmented Traffic Control: A tool to simulate network conditions」。\r\n\r\n\"\"\r\n\r\n可以測這五種變數:\r\n\r\n\r\n\r\nFacebook 的成果是 Python + Django 寫的前端管理界面,實際運作還是透過 Linuxiptables。\r\n\r\n也有提供 Vagrant 的操作方式讓人「試用」,主要是讓人在本機上就可以用吧?", + "title": "Facebook 的「Augmented Traffic Control」模擬網路環境" + }, + { + "id": "5688", + "body": "Google Online Security Blog 來的消息,CNNIC 授權 MCS Holdings 的 Intermediate certificate 被拿來發 www.gmail.com 的憑證:「Maintaining digital certificate security」。\r\n\r\nMozilla 也發出警告:「Revoking Trust in one CNNIC Intermediate Certificate」。\r\n\r\n\"\"\r\n取自「谷歌称CNNIC发布中间人攻击证书\r\n\r\n當初有習慣把 CNNIC 的 root certificate 拔掉的人這次不受影響。", + "title": "CNNIC 所發出的 MCS Holdings 發出 Gmail 的 SSL 憑證,攻擊 Gmail 使用者" + }, + { + "id": "5689", + "body": "AWS 宣佈的新功能,自動 replicate 到其他區域的 Amazon S3 上:「New – Cross-Region Replication for Amazon S3」。\r\n\r\n需要打開 Versioning 的功能,然後就可以設定了:\r\n\r\n\"\"\r\n\r\n新上傳的 object 才會被 replicate,原先的 object 是不會有改變的。", + "title": "Amazon S3 的 Cross-Region Replication" + }, + { + "id": "5691", + "body": "Slack 由於發現密碼外洩,剛剛發佈了資安通報:「March 2015 Security Incident and the Launch of Two Factor Authentication」。\r\n\r\n這次也因此推出了兩個功能:\r\n\r\n\r\n\r\n另外也透漏使用 bcrypt 為密碼演算法,只要密碼強度夠強,即使透漏出去應該也是不會有問題 (當然換掉還是比較好)。", + "title": "Slack 密碼外洩" + }, + { + "id": "5692", + "body": "Amazon WorkMail 在今年一月底時推出 Preview (參考「Amazon 跨足 Email 市場」),需要填單申請。\r\n\r\n昨天發現申請到了,由於 Amazon WorkMail 只有 us-west-1 與 eu-west-1 有服務,所以在 us-east-1 開了一個 domain 測試。\r\n\r\n帳號與 IAM 分開,另外吃 AWS Directory Service,我是透過 Simple AD 管理帳號。\r\n\r\n由於目前不支援 POP3 與 IMAP,所以也不用在這折騰了:(Amazon WorkMail FAQs)\r\n\r\n
Q: Can I use Amazon WorkMail with my existing POP3 or IMAP clients?\r\nNo, Amazon WorkMail currently does not offer support for POP3 or IMAP clients.
\r\n\r\n所以這次先只看 webmail 的部份。\r\n\r\n以一個用 Gmail 用習慣的人 (而且用快速鍵已經很順手了),邊翻文件邊用,過十分鐘後就覺得「好陽春啊」...\r\n\r\n快速鍵能做的事情相當少,大多都還是要用鍵盤操作。另外看得出來沒有 preload,翻下一封信的時候還是要等待一下。\r\n\r\n另外沒有 Send as 的功能 (舉例來說,我雖然是 ooxx@gmail.com,但我可以透過認證後以 ooxx@kkbox.com 的 From 寄出信件),對外很不方便。\r\n\r\n還有一些是 bug,修掉應該只是時間的問題。像是我把 preview 位置改成 bottom 後,再把 preview 視窗拉大,切到 setting 再切回來又變回原來的視窗大小了。\r\n\r\n離「可以用」的等級還有點遠 (現在是屬於「不能用」的等級),先這樣放著吧...", + "title": "Amazon WorkMail 使用感想..." + }, + { + "id": "5693", + "body": "今年的 Turing Award 頒給了在資料庫領域上有重要貢獻的 Michael Stonebraker:\r\n\r\n
For fundamental contributions to the concepts and practices underlying modern database systems.
\r\n\r\nACM 的頁面上列了不少成就,比較熟的是 PostgreSQL,他是 PostgreSQL 發展重要的關鍵人物:(出自維基百科「PostgreSQL」條目)\r\n\r\n
PostgreSQL evolved from the Ingres project at the University of California, Berkeley. In 1982 the leader of the Ingres team, Michael Stonebraker, left Berkeley to make a proprietary version of Ingres. He returned to Berkeley in 1985 and started a post-Ingres project to address the problems with contemporary database systems that had become increasingly clear during the early 1980s. The new project, POSTGRES, aimed to add the fewest features needed to completely support types. These features included the ability to define types and to fully describe relationships – something used widely before but maintained entirely by the user.
", + "title": "2014 年 Turing Award 得主:Michael Stonebraker" + }, + { + "id": "5694", + "body": "在 Zite 上看到「Treasure Data and AWS - Developers.io 2015」這篇,可以看看 Treasure Data 遇到的問題以及他們的解法。\r\n\r\n這種文章除了看「怎麼做」以外,如果有提到「不怎麼做」也很值得看,也就是解釋避開了哪些東西。\r\n\r\n像是他們拿 PostgreSQL 放 metadata 這件事情就很奇怪:\r\n\r\n\"\"\r\n\r\n而他們解釋 Amazon S3 的 LIST 的品質有問題:\r\n\r\n\"\"\r\n\r\n另外也說明了因為 GiST 的需求,所以不使用 MySQL,而且這也自動說明了 Amazon DynamoDB 不符合需求:\r\n\r\n\"\"\r\n\r\n另外也遇到與 Netflix 同樣的問題,寫進去後因為 S3 的 Eventually Consistent 性質,不保證馬上讀的到:\r\n\r\n\"\"\r\n\r\n如果沒有用到 GiST,用 DynamoDB 放 metadata 好像可以解決問題...", + "title": "Treasure Data 用 AWS 的方法" + }, + { + "id": "5695", + "body": "在「Traffic filtration using NIC capabilities on wire speed (10GE, 14Mpps)」這邊看到的技巧。\r\n\r\n作者建議另外安裝 driver,因為 Linux kernel 內的 driver 功能有限:「Intel Ethernet Drivers and Utilities」。\r\n\r\n重點在 ethtool 這個工具,可以看到條件設定:\r\n\r\n
ethtool --help:\r\n        ethtool -N|-U|--config-nfc|--config-ntuple DEVNAME    Configure Rx network flow classification options or rules\r\n        rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r... |\r\n        flow-type ether|ip4|tcp4|udp4|sctp4|ah4|esp4\r\n            [ src %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]\r\n            [ dst %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]\r\n            [ proto %d [m %x] ]\r\n            [ src-ip %d.%d.%d.%d [m %d.%d.%d.%d] ]\r\n            [ dst-ip %d.%d.%d.%d [m %d.%d.%d.%d] ]\r\n            [ tos %d [m %x] ]\r\n            [ l4proto %d [m %x] ]\r\n            [ src-port %d [m %x] ]\r\n            [ dst-port %d [m %x] ]\r\n            [ spi %d [m %x] ]\r\n            [ vlan-etype %x [m %x] ]\r\n            [ vlan %x [m %x] ]\r\n            [ user-def %x [m %x] ]\r\n            [ action %d ]\r\n            [ loc %d]] |\r\n        delete %d
\r\n\r\n看起來 stateless 的過濾可以在上面做...", + "title": "用 Intel 網卡上的 Flow Director 過濾封包" + }, + { + "id": "5696", + "body": "前幾天的消息:「RSA Conference Bans \"Booth Babes\"」。報導出自於「RSA Conference bans ‘booth babes’」。\r\n\r\n規範的文字:\r\n\r\n
All Expo staff are expected to dress in business and/or business casual attire. Exhibitors should ensure that the attire of al staff they deploy at their booth (whether the exhibitor’s direct employees or their contractors) be considered appropriate in a professional environment. Attire of an overly revealing or suggestive nature is not permitted. Examples of such attire may include but are not restricted to:\r\n\r\n\r\n\r\nThese guidelines are applicable to all booth staff, regardless of gender, and will be strictly enforced. We reserve the right to request that individual booth staff change their attire or leave the premises immediately if we feel their appearance might be offensive to other exhibitors or attendees.
\r\n\r\n讓我想起 2009 年 Yahoo! 辦的 Taiwan Open Hack Day:「Yahoo Sorry About Lap Dancers at Hack Day in Taiwan–So What's the Excuse for Last Year's Go-Go Girls?」。", + "title": "RSA Conference 2015 禁止 Show Girl" + }, + { + "id": "5699", + "body": "在「The Next Generation of Dense-storage Instances for EC2」這邊公佈了 Amazon EC2 新的 D2 instance:\r\n\r\n\"\"\r\n\r\n最大台有 48TB 硬碟與 244GB 記憶體,這規格好熟悉...\r\n\r\n然後這次是全地區一起上,不過看起來不包括美國政府用的 AWS GovCloud (US):\r\n\r\n
You can launch d2 instances today in the US East (Northern Virginia), US West (Oregon), Europe (Ireland), Europe (Frankfurt), Asia Pacific (Tokyo), Asia Pacific (Singapore), and Asia Pacific (Sydney) regions as On-Demand, Reserved Instances, or Spot Instances.
", + "title": "Amazon EC2 推出 D2 instance (超大硬碟空間)" + }, + { + "id": "5701", + "body": "在「Maintaining digital certificate security」這篇文章裡的更新:\r\n\r\n
Update - April 1: As a result of a joint investigation of the events surrounding this incident by Google and CNNIC, we have decided that the CNNIC Root and EV CAs will no longer be recognized in Google products. This will take effect in a future Chrome update. To assist customers affected by this decision, for a limited time we will allow CNNIC’s existing certificates to continue to be marked as trusted in Chrome, through the use of a publicly disclosed whitelist. While neither we nor CNNIC believe any further unauthorized digital certificates have been issued, nor do we believe the misissued certificates were used outside the limited scope of MCS Holdings’ test network, CNNIC will be working to prevent any future incidents. CNNIC will implement Certificate Transparency for all of their certificates prior to any request for reinclusion. We applaud CNNIC on their proactive steps, and welcome them to reapply once suitable technical and procedural controls are in place.
\r\n\r\nGoogle 的作法是將現有使用 CNNIC 發出的 SSL certificate 會以白名單形式放入,然後移除現有的 CNNIC 憑證。", + "title": "CNNIC 的根憑證 (包括 EV) 從 Google 全系列產品移除" + }, + { + "id": "5702", + "body": "繼「CNNIC 的根憑證 (包括 EV) 從 Google 全系列產品移除」之後,Mozilla 也宣佈了移除 CNNIC 的根憑證:「Distrusting New CNNIC Certificates」。\r\n\r\n類似的模式,現有 CNNIC 所發出的 SSL certificate 還是可以繼續使用,但新的將被移除:\r\n\r\n
[...], we have decided to update our code so that Mozilla products will no longer trust any certificate issued by CNNIC’s roots with a notBefore date on or after 1st April 2015.
\r\n\r\n這包括了 Mozilla 的產品以及 NSS,後者被用在很多 open source 產品。\r\n\r\n我的感覺是 Google 先做了,所以 Mozilla 才放膽去做,如果 Google 沒做 Mozilla 大概不會有進一步動作。\r\n\r\nAnyway,把 CNNIC 移除總是好事...", + "title": "Mozilla 也宣佈移除 CNNIC 根憑證" + }, + { + "id": "5704", + "body": "不只一兩次被問到閱讀的來源有哪些:\r\n\r\n\r\n\r\n從以前 Google Reader 時代就在使用 RSS feed 追蹤各個 blog。同時,在後兩者 (Social Network 與文章推薦機制) 看到不錯的 blog 時也會訂起來。\r\n\r\n而 Facebook 是因為周邊有很多相關產業的朋友,總是可以看到一些分享。Twitter 是拿來訂一些名人的碎碎唸,有時候這些人只是發表一些看法,不一定會寫成一篇文章。(Blogging 與 Microblogging 的差異)\r\n\r\n最後 Zite 則是補看不到的部份,透過演算法提供給你相關的內容。Hacker News Daily 也算是這類,每天從 Hacker News 上整理十個重大的連結發表成一篇文章,然後可以透過 RSS reader 訂閱。\r\n\r\n對於要培養而不知道怎麼下手的人,有幾個可以先考慮:\r\n\r\n", + "title": "我的資訊來源" + }, + { + "id": "5705", + "body": "前幾天 Ant 在「淺入淺出 MySQL & PostgreSQL」剛好有提到,結果 Percona 這兩天也丟出了這個題目,不過這邊討論的是空間的問題:「Illustrating Primary Key models in InnoDB and their impact on disk usage」。\r\n\r\n一樣的作法,Primary Key 的選擇有三種:\r\n\r\n\r\n用的是 Jeremy Colespace-lsn-age-illustrate 畫出 LSN 的值 (InnoDB 的 Log Sequence Number,由於嚴格遞增,可以藉由這個值知道每個 page 最新被修改的時間):\r\n\r\n
I then used the powerful tool innodb_space’s function space-lsn-age-illustrate (from Jeremy Cole’s innodb_ruby project) to plot the LSN (InnoDB’s Log Sequence Number, an always-incrementing value) pages from each table that uses the different Primary Keys via ASCII colour (so hot, right? Thanks Jeremy!!).
\r\n\r\n測試是 INSERT-only 的 case,雖然不太能理解為什麼要用 CHAR(36) 存 UUID,而非與 BINARY(16),但可以看出一些 pattern。\r\n\r\n有順序的 INT + AUTO_INCREMENT 與 BINARY(16) (Ordered UUID) 都可以看出層次 (一直往後寫),而且也看得出來 BINARY(16) 比 INT 大了不少:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n而 CHAR(36) 當然是最大的,而且寫入的 i/o 也最隨機:\r\n\r\n\"\"", + "title": "InnoDB 對 Primary Key 的選擇" + }, + { + "id": "5708", + "body": "在「DIY Smartphone」這邊看到用 Raspberry Pi 做出一台手機:\r\n\r\n
DIY Smartphone using Raspberry Pi A+ Pi, Camera, PiTFT, and Adafruit FONA with custom mobile OS.
\r\n\r\n然後 FAQ 的部份 XDDD\r\n\r\n
The thing is a inch thick! Why would you build something so useless when you can buy a cheap phone for less that can do much much more?\r\n\r\nNo reason.
\r\n\r\n可以看到超大隻超陽春:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "用 Raspberry Pi 自幹一台 3G 手機..." + }, + { + "id": "5709", + "body": "Twilio 提供的服務:「Phone Validator API to Check Numbers & Look Up Carriers - Twilio」。\r\n\r\n原本是透過 57016 (需付費) 或是電信業者的官網查「是否為網內」,現在可以直接查出來是哪家電信業者。像是我的手機門號是 0963 (中華電信的 prefix),但 NP 到台灣大哥大:\r\n\r\n\"\"\r\n\r\n這樣就方便多了...", + "title": "查詢門號所在的電信商 (台灣與國外的都可以查)" + }, + { + "id": "5710", + "body": "在 FSF 那邊看到「Thousands of Spaniards leave Twitter for GNU social」這邊看到 GNU social 的計畫,才想起來很久前 GNU 的確有發展這個東西... 這東西當初的定位像是「分散式的 Twitter」。\r\n\r\n
GNU social is the largest decentralized social network on the web.
\r\n\r\n隨便選了個 node 註冊,我是跑到 Quitter.is 上註冊,然後搜了一下,沒幾個可以看的帳號...\r\n\r\n如果不打算自己架 server,可以在「Join the federated social web」這邊可以隨便找一個 node 註冊。", + "title": "測 GNU social" + }, + { + "id": "5711", + "body": "在「Amazon Elastic File System – Shared File Storage for Amazon EC2」提到了 Amazon Elastic File System 這個新玩具:\r\n\r\n
Amazon EFS supports the Network File System version 4 (NFSv4) protocol, so the applications and tools that you use today work seamlessly with Amazon EFS.
\r\n\r\n居然冒出這功能,又多了個可以惡搞的工具...\r\n\r\n目前的價錢是 USD$0.30/month/GB,需要 Preview 申請。這價錢不算便宜,但比起 Amazon S3 的反應時間應該快不少?", + "title": "Amazon Elastic File System:NFSv4 as a service" + }, + { + "id": "5714", + "body": "前陣子 ant 將在 5xRuby 演講的投影片放出來:「技術演講:淺入淺出 MySQL & PostgreSQL」,另外在 kaif.io 上也有討論:「淺入淺出 MySQL & PostgreSQL // Speaker Deck」。\r\n\r\n而國外剛好也有好幾篇文章都在討論 MySQL (InnoDB),其中「how innodb lost its advantage」這篇講到對 InnoDB 的壓縮感到悲觀...\r\n\r\n另外 Pinterest 的「Learn to stop using shiny new things and love MySQL」這篇的時間點感覺上就是在回應上面某些想法。\r\n\r\n下面是我的整理 (以及想法)。\r\n\r\nMySQLPostgreSQL 都是很成熟的 RDBMS。\r\n\r\n如果你對其中一種有經驗,那麼就用你熟悉的 RDBMS。如果你對兩者都有經驗,那麼你就憑自己的判斷選擇。\r\n\r\n如果都沒有經驗呢?看你身邊的人用什麼就選什麼。\r\n\r\n我在 5xRuby 時回答的比較輕鬆,但這是很實際的回答:你既然都不會用這些進階功能,那麼兩套其實對你都差不多。選一個可以問的到答案的就好。\r\n\r\n反正真的夠大的時候,拿錢出來總是有方案可以解決問題。初期把力氣花在怎麼搞定產品吧,如果你不熟悉,這通常都不是你在這個時間應該花時間去研究的問題。", + "title": "關於要不要使用 MySQL 這件事情..." + }, + { + "id": "5715", + "body": "對於現在變成 Web JS 代名詞 jQuery 的誕生。\r\n\r\nJohn Resig (jQuery 的發明人) 的懷舊文:「Annotated Version of the Original jQuery Release」。\r\n\r\n重點在「Annotated jQuery Release」裡他寫了不少註解 (以 2015 年現在的觀點來寫),有很多感嘆啊 XDDD", + "title": "2006 年的 jQuery 程式碼..." + }, + { + "id": "5716", + "body": "出自「41 Years of Music Industry Change, In 41 Seconds…」這篇,我這邊抓了 1984、1989、1994、1999、2004、2009、2014 七張圖出來:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看出來 CD 的興衰與多元化的發展。", + "title": "美國音樂產業的發展..." + }, + { + "id": "5718", + "body": "在「CloudFlare is now a Google Cloud Platform Technology Partner」這邊提到了 CloudFlareGoogle Cloud Platform 的合作,應該只有這段比較重要 (有實質意義):\r\n\r\n
Also, CloudFlare peers with Google in strategic locations globally, improving response times for Google Cloud Platform services.
\r\n\r\n也就是會多拉一些 peering 讓 CloudFlare 與 Google Cloud Platform 之間變順?不過更重要的部份,也就是 CloudFlare 對 client (到使用者這端) 之間的品質一直都不太好,大多數人都只是當作免費頻寬在用...", + "title": "CloudFlare 與 Google Cloud Platform 的合作" + }, + { + "id": "5719", + "body": "剛剛看到的,應該是在 Percona 的 conference 上宣佈的:「Tokutek now part of the Percona family」、「Team Tokutek is proud to join Team Percona!」。\r\n\r\n這代表之後 Percona 會大力推動 TokuDB 了...", + "title": "Percona 買下 Tokutek (TokuDB 的公司)" + }, + { + "id": "5720", + "body": "看到 AWS 官方的公告:「Announcing AWS Direct Connect for the China (Beijing) Region」。\r\n\r\n這代表可以拉線路進 AWS 在北京的機房直連,另外可以參考「APN Partners Supporting AWS Direct Connect」的表格,可以知道要找哪些人,目前北京區看起來只有 Sinnet。", + "title": "AWS 北京也支援 Direct Connect 了..." + }, + { + "id": "5721", + "body": "維基百科描述了當初沒有規劃多語系與多系統的帳號管理,而產生出來的 migrate 計畫:「Single-User Login provides access to all wikis」。\r\n\r\n整個計畫到實作完成長達十年 (大約從 2004 年開始有想法),接下來進入最後階段:\r\n\r\n
This week, we will begin the process of renaming the remaining 1.46 million accounts – those which have not responded to all attempts at outreach. That process is expected to take approximately one to two weeks.
\r\n\r\n從第一次編輯到現在也好久了啊...", + "title": "維基百科的 Global Account 轉移計畫" + }, + { + "id": "5725", + "body": "索引:\r\n\r\n
\r\n\r\n下面提到的所有職缺都有在找人,有些下面說明的職缺在人力銀行上不一定會開 (招募效果不好的會暫時先關掉,再研究要怎麼改),有興趣的可以寄信到 recruit at kkbox.com 這邊,如果只是想要問些問題的可以寄給我 gslin at kkbox.com。\r\n\r\n一般在介紹我所屬的部門時會這樣介紹:KKBOX 是 Client & Server 架構,所以這兩塊分成兩個 team。\r\n\r\nR&D 的部份,Client Team 有五個團隊,前面是正式名稱,後面「」包起來的是我習慣的分類:\r\n\r\n\r\n\r\n我所屬的 Server Team 有三個 R&D 團隊:\r\n\r\n\r\n\r\n然後因為我在 Server Team 打雜,所以下面全部都是針對 Server Team 的職缺在說明... (當然,Client Team 的職缺也是可以寄信到上面講的信箱)\r\n\r\n

Overall

\r\n\r\nR&D 有兩個地點,一個在台北南港軟體園區,另外一個在高雄軟體科技園區。台北南港軟體園區是總部,目前有 250+ 人,高雄目前應該是 30+ 人。\r\n\r\n內部大多使用 PHP 5.4+ 的環境 (大多都 PHP 5.5 了),有幾台機器用更舊的版本,目前正在 migrate 到 5.5。\r\n\r\nPHP Framework 的部份,新的專案用 Laravel 4.2,目前計畫要換到 5.0。舊一點的專案用 Zend Framework 1.12,再舊一點的就是傳統的 PHP 了。\r\n\r\n除了 PHP 外,還有用 Java (Search Engine 這塊) 與 Node.js (Server Push 機制),不過以 PHP 佔大多數。\r\n\r\n資料庫的部份,MySQL 都已經是 5.6 (Percona 的版本,有單機版與 PXC 版本)。\r\n\r\n版本控制的部份都用 Git,最早期的專案放在 GitHub 上,後來的專案有些放在 Gitolite,最近則是在轉移到 GitLab 上,配合 Merge Request 用。\r\n\r\n

冨樫...

\r\n\r\n要詳細說明公司福利以及這三個部門的職缺,但沒什麼力氣了,先讓我冨樫一下吧,晚點再開新的文章來寫... O_O", + "title": "KKBOX 徵人" + }, + { + "id": "5726", + "body": "《第四公民》(Citizenfour) 這部電影描述了 Edward Snowden 在 2013 年披露稜鏡計畫的過程以及後續的效應,雖然是紀錄片,但整件事情還在進行發展中。\r\n\r\n以最佳紀錄片的身份橫掃 2014 與 2015 的獎項,包括了奧斯卡金像獎與英國電影學院獎:\r\n\r\n\"\"\r\n\r\n去年在美國上映時就查過資料,但當時沒找到在台灣上映的計畫。\r\n\r\n前幾天發現沒跟上四月 11 日的 2015 金馬奇幻影展 (應該是台灣區的首映),昨天就跑去華山看:「《第四公民》首週上映時刻表」。\r\n\r\n\"\"\r\n\r\n紀錄片裡描述了雙方第一次會面的珍貴影像畫面,以及當時雙方溝通的細節。\r\n\r\n整部片子裡穿插了 GnuPGTails 這些工具,用來保護通訊的隱私與安全。以及當你可能被 APT 時要保護自己的一些手段。\r\n\r\n在這個行業的人都應該去看一看這個歷史事件的紀錄片。", + "title": "《第四公民》(Citizenfour)" + }, + { + "id": "5727", + "body": "PCI DSS 3.1 出了:「PCI COUNCIL PUBLISHES REVISION TO PCI DATA SECURITY STANDARD — PCI DSS 3.1 and supporting guidance helps organizations address vulnerabilities within SSL protocol that put payment data at risk; PA-DSS revision to follow —」(PDF)。\r\n\r\n與 3.0 相比,修正了 SSL 與 TLS 的安全性問題。分成兩大塊討論,對於新的系統:\r\n\r\n\r\n\r\n而對於舊的系統:\r\n\r\n", + "title": "PCI DSS 的更新:PCI DSS 3.1" + }, + { + "id": "5728", + "body": "原先的 µBlock 改名成 uBlock₀,並且把 uBlock 的名字交出去給了 Colorado SpringsuBlock。\r\n\r\n原因可以在「Please clarify uBlock₀ vs. uBlock」這邊看到,由於這不是 full time job (他也不想要成為 full time job),所以他決定 freeze 目前的功能,僅維持 bugfix (因為對他來說夠用了,他自己平常也在用)。\r\n\r\n依照這個原因,我的感覺是 uBlock 會成圍下一個肥大的 ABP,就乖乖留守 uBlock Origin (uBlock₀) 吧。", + "title": "uBlock 的改版:交接後再 fork 成 uBlock Origin (uBlock₀)" + }, + { + "id": "5729", + "body": "QUIC (Quick UDP Internet Connections) 是 Google 發明的協定,主要是希望改善 TCP + TLS 的反應速度,目前是用來加速 Google Chrome 與 Google server 之間的連線。\r\n\r\n與 SPDY 或 HTTP/2 不同的地方在於使用了 UDP,這降低了 TCP packet loss 造成的壅塞現象,以及 TCP 3-way handshake 的成本,而這兩點在行動平台上都特別明顯。\r\n\r\n\"\"\r\n\r\n依照最新的說法,目前 Google Chrome 連到 Google server 大約有一半的連線會走 QUIC:「A QUIC update on Google’s experimental transport」。\r\n\r\n
Today, roughly half of all requests from Chrome to Google servers are served over QUIC and we’re continuing to ramp up QUIC traffic, eventually making it the default transport from Google clients — both Chrome and mobile apps — to Google servers.
\r\n\r\n而在 YouTube 的改善也很大:\r\n\r\n
These benefits are even more apparent for video services like YouTube. Users report 30% fewer rebuffers when watching videos over QUIC. This means less time spent staring at the spinner and more time watching videos.
\r\n\r\n由於效果不錯,他們打算要換更多...", + "title": "Google 的 QUIC 擴大實驗" + }, + { + "id": "5730", + "body": "DigitalOcean 在德國建立機房,這是在歐洲的第三個地區建立機房 (另外兩個分別是英國與荷蘭):「Introducing Our New European Region: Frankfurt! (FRA1)」。\r\n\r\n可以透過 speedtest-fra1.digitalocean.com 這個 domain 測試,有 IPv4 與 IPv6 的位置可以測,而 HiNet 過去目前是透過美國一路轉過去,這點到是沒什麼意外。\r\n\r\n比隔壁的 Linode 快進入德國...", + "title": "DigitalOcean 建立德國機房" + }, + { + "id": "5732", + "body": "就如同標題所寫的,比以前的大了四倍:「New G2 Instance Type with 4x More GPU Power」。\r\n\r\nJeff Barr 把 2013 年的公告也拿出來讓大家看一下:「Build 3D Streaming Applications with EC2’s New G2 Instance Type」。\r\n\r\n速度上當然是大幅改善,價錢當然也是照比例計算 XD\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "AWS 提供更大台的 GPU instance:g2.8xlarge" + }, + { + "id": "5733", + "body": "Backblaze 針對 3TB 硬碟繼續黑 Seagate... XDDD:「CSI: Backblaze – Dissecting 3TB Drive Failure」。\r\n\r\n前面的數量比較不好懂,用百分比比較容易了解:\r\n\r\n\"\"\r\n\r\n文章裡還討論了外接或內接的情況,最後猜測的結論是,Seagate 的這個 3TB 型號的品質特別差,因為 4TB 就正常許多:\r\n\r\n
While this particular 3TB model had a painfully high rate of failure, subsequent Seagate models such as their 4TB drive, model: ST4000DM000, are performing well with an annualized 2014 failure rate of just 2.6% as of December 31, 2014. These drives come with 3-year warranties and show no signs of hitting the wall.
", + "title": "Backblaze 的 3TB 硬碟故障分析" + }, + { + "id": "5734", + "body": "Google 在愚人節時拿出養很久不知道做什麼的 domain 出來用:「https://com.google/」,但也因此造成了安全性問題:「Google’s April Fool’s prank inadvertently broke their security」。\r\n\r\n\"\"\r\n\r\n問題在於正常的 Google 頁面有這個 HTTP header 可以避免 iframe (以及 clickjacking):\r\n\r\n
X-Frame-Options: SAMEORIGIN
\r\n\r\n但在加上 igu=2 的參數後不會有這個 HTTP header。雖然現在已經失效了,但當天也被 Netcraft 通報 XD", + "title": "Google 在愚人節玩笑中造成的安全問題..." + }, + { + "id": "5735", + "body": "把搜尋引擎換成 DuckDuckGo 應該差不多一個月了吧?算是脫離 Google 的第一步?(連 iPhone 上的都換掉)\r\n\r\n剛開始切換過去的時候會感覺「好像搜不太到東西」,試著把關鍵字丟進 Google 找,就發現也搜不太到東西... 多幾次以後反而發現 DuckDuckGo 上面的 spam 比較少?反而找起來比較順。\r\n\r\n比較不方便的是匯率換算,以前用 Google 的時候常常打 1jpy、1usd、1eur 去看匯率啊,現在就沒辦法了。再來就是速度稍微慢一點,不過還可以接受。\r\n\r\n來看看有沒有機會換掉 Gmail,雖然我覺得難度有點高... 就邊找邊繼續用吧 :o", + "title": "用 DuckDuckGo 一個月後的感想..." + }, + { + "id": "5736", + "body": "兩個禮拜前 CA/Browser Forum 的會議記錄,討論了網域認證以及 CNNIC 的事情:「Minutes of CA-Browser Forum Meeting – 2 April 2015」。\r\n\r\n由於 US-CERT 的關切,看起來「認證」這件事情 CA/Browser Forum 暫時不會有改善了:\r\n\r\n
The consensus was that US-CERT was incorrect in saying the email method of domain confirmation presents a vulnerability, that no changes were required, and that the Forum did not need to make any formal response to the US-CERT advisory.
\r\n\r\n另外是 CNNIC 的事情,也表達「甘我屁事」:\r\n\r\n
CNNIC sub-CA issue: The members discussed the recent CNNIC sub-CA issue, and noted that Google had recently published its response. Gerv stated that Mozilla was about to publish its response, which would be similar to the Google response. There was consensus that the Forum did not need to take any action.
\r\n\r\n很官僚的會議結論...", + "title": "CA/Browser Forum 討論網域認證與 CNNIC 的事情" + }, + { + "id": "5737", + "body": "pid.codes 的說明就很清楚了:「Welcome to pid.codes」。\r\n\r\n由於 USB-IF 對每個 vendor 收 USD$5000,而且不可以跟其他單位共用:\r\n\r\n
If you’re a maker, hobbyist, or startup company producing your own USB device, you’ve probably discovered that you need a USB Vendor ID and Product ID to uniquely identify your device to computers. The USB-IF’s position is that the only way to do this is for each organisation to pay $5000 for a unique Vendor ID, which they may not share with other individuals or organisations.
\r\n\r\n所以就造成很多人惡搞 Vendor ID 與 Product ID:\r\n\r\n
For many makers and small companies, this is a prohibitive amount of money, and forces them to resort to workarounds, such as using other organisations' VIDs without permission, or simply making up a VID and PID. These solutions make things worse for everyone, by damaging the assumption that a VID/PID combination is unique to a given device.
\r\n\r\n而他們尋求解決方案,取得了一份在 USB-IF 禁止共用前的 Vendor ID,從而解決這個問題:\r\n\r\n
pid.codes seeks to solve this issue for anyone producing open-source hardware. We have been gifted a Vendor ID by a company that was issued one by USB-IF and has since ceased trading; they obtained the Vendor ID before the USB-IF changed their licensing terms to prohibit transfers or subassignments.
", + "title": "為 Open Source Hardware 發放 USB Product ID 的 pid.codes" + }, + { + "id": "5738", + "body": "在清 Hacker News Daily 時看到的,飛到俄羅斯去採訪:「Last Week Tonight with John Oliver: Government Surveillance (HBO)」。(大約在 14:00 的地方開始)\r\n\r\n", + "title": "Last Week Tonight 採訪 Edward Snowden" + }, + { + "id": "5739", + "body": "MozillaMozilla SSL Configuration Generator 提供了各種 server side 的設定:\r\n\r\n\r\n\r\n以及不同等級的設定 (Modern、Intermediate、Old),另外還有 HSTS 的選項可以選擇。\r\n\r\n對於 security 的東西我不是很喜歡用 generator (因為我覺得既然是資安相關的東西,要盡可能知道每個細節),但算是一種推廣吧,看了一下設定也都還算合理...", + "title": "Mozilla 提供了 SSL/TLS 設定懶人包" + }, + { + "id": "5740", + "body": "前幾天的 Standards Track:「Public Key Pinning Extension for HTTP」。\r\n\r\nHPKP (HTTP Public Key Pinning) 機制是讓 server 端在第一次連線時告訴 client (像是瀏覽器) Public Key 資訊,也就是建構在 TOFU (Trust-on-first-use):\r\n\r\n
Key pinning is a trust-on-first-use (TOFU) mechanism. The first time a UA connects to a host, it lacks the information necessary to perform Pin Validation; UAs can only apply their normal cryptographic identity validation. (In this document, it is assumed that UAs apply X.509 certificate chain validation in accord with [RFC5280].)
\r\n\r\n機制上很像 HSTS (HTTP Strict Transport Security,RFC6797)。依據 Mozilla 的「Public Key Pinning」資料,目前新版的 Google ChromeFirefox 都有支援了。", + "title": "RFC7469:Public Key Pinning Extension for HTTP" + }, + { + "id": "5742", + "body": "在 Zite 上看到「FBI can’t cut Internet and pose as cable guy to search property, judge says」這篇文章,講 FBI 的「創意」被法院給否決。\r\n\r\n搜索的手段是這樣發生的。FBI 的人先把網路給剪斷,然後偽裝成修復工人進去搜索:\r\n\r\n
The Las Vegas court frowned on the FBI's ruse of disconnecting Internet access to $25,000-per-night villas at Caesar's Palace Hotel and Casino. FBI agents posed as the cable guy and secretly searched the premises.
\r\n\r\n然後就宣稱因為這是被邀請入內,所以搜索是合法的:\r\n\r\n
The government claimed the search was legal because the suspects invited the agents into the room to fix the Internet.
\r\n\r\n不過法官顯然不買帳,引用法官的話:\r\n\r\n
Permitting the government to create the need for the occupant to invite a third party into his or her home would effectively allow the government to conduct warrantless searches of the vast majority of residents and hotel rooms in America,
\r\n\r\n也就是說,除非當事人明確知道搜索並且同意,不然這種惡搞「同意」的行為並不合法。", + "title": "FBI 的搜索「創意」被美國法院否決" + }, + { + "id": "5743", + "body": "在 OSNews 上看到可以在桌機上用 Google ChromeAndroid 應用程式:「Run Android apps on a PC with Google Chrome」,引用的報導是「You can now run Android apps on a Mac or PC with Google Chrome」這篇。\r\n\r\n參考「Getting Started with ARC」這篇文章,裝「ARC Welder」這個...\r\n\r\n\"\"\r\n\r\n看起來 Linux 也能跑,有空來測試看看... O_O", + "title": "在 PC 的 Google Chrome 裡跑 Android 應用程式" + }, + { + "id": "5744", + "body": "在「Hidden backdoor API to root privileges in Apple OS X」這邊揭露了這個漏洞 (接近於後門的設計)。\r\n\r\n10.10.3 修正了這個問題,但沒打算修 10.7.x 到 10.9.x 的版本:\r\n\r\n
Apple has now released OS X 10.10.3 where the issue is resolved. OS X 10.9.x and older remain vulnerable, since Apple decided not to patch these versions. We recommend that all users upgrade to 10.10.3.
\r\n\r\n從 2014 年十月發現回報,2015 年一月蘋果建立 CVE-2015-1130,到 2015 年四月才正式修復 10.10.x 的部份:「About the security content of OS X Yosemite v10.10.3 and Security Update 2015-004」。\r\n\r\n靠靠,我不想升到 10.10 啊...", + "title": "Mac OS X 的安全性漏洞:蘋果沒打算修 10.9 以下的版本..." + }, + { + "id": "5745", + "body": "查了 MDN 的說明,原來 attr() 在 IE8 就可以用了...\r\n\r\n在這篇文章看到純 CSS 的 Responsive Table 技巧:「Responsive Tables in Pure CSS」,目標是把這樣的表格:\r\n\r\n\"\"\r\n\r\n在寬度較小時自動變成這樣的形式:\r\n\r\n\"\"\r\n\r\n用了 data attribute 與 attr(),再加上 before pseudo element。", + "title": "利用 data attribute 與 attr() 的 Pure CSS Responsive Table" + }, + { + "id": "5746", + "body": "在「Nokia to acquire Alcatel-Lucent」這邊看到的報導,Nokia 以 166 億美金買下 Alcatel-Lucent。\r\n\r\nNokia 的新聞稿在「NOKIA AND ALCATEL-LUCENT TO COMBINE TO CREATE AN INNOVATION LEADER IN NEXT GENERATION TECHNOLOGY AND SERVICES FOR AN IP CONNECTED WORLD」這邊。\r\n\r\n其中 OSNews 被拿出來講的... 由於 Nokia 將手機部門賣給了微軟,所以 Nokia 其實是不能發展手機的 (應該有時間限制),但是 Alcatel-Lucent 現在手上有:\r\n\r\n
Nokia is not allowed to make smartphones for a while, but Alcatel-Lucent does make smartphones.
\r\n\r\n而這是從 HP 買來的 Palm... (所以 Nokia 又要玩什麼花招了 @_@)", + "title": "Nokia 以 166 億美金買下 Alcatel-Lucent" + }, + { + "id": "5747", + "body": "一樣是在 OSNews 上看到的,Facebook 提供了一套 Library,可以將 Android 裝置依照年份分類:「Facebook's simple trick for serving many different Android devices」,原始報導是「Facebook's simple trick for serving so many different Android devices」。\r\n\r\n可以在 GitHub 上的「Device Year Class」看到如何使用的範例程式碼:\r\n\r\n
int year = YearClass.get(getApplicationContext());\r\nif (year >= 2013) {\r\n    // Do advanced animation\r\n} else if (year > 2010) {\r\n    // Do simple animation\r\n} else {\r\n    // Phone too slow, don't do any animations\r\n}
\r\n\r\n寫起來感覺沒什麼節操,但很實用 XDDD", + "title": "Facebook 提供 Android 效能分級的函式庫" + }, + { + "id": "5748", + "body": "歐盟開始調查 Google 的壟斷:「Europe to accuse Google of illegally abusing its dominance」,原始報導出自「Europe to accuse Google of illegally abusing its dominance」。\r\n\r\n不知道是不是跟先前在「Google 利用搜索的壟斷優勢打擊競爭對手」提到的文件有關:\r\n\r\n\"\"", + "title": "歐盟開始調查 Google 的壟斷" + }, + { + "id": "5749", + "body": "Facebook 的 Open Source 專案一般都採用 BSD licenses 放出,而由於 BSD licenses 並沒有專利授權,所以 Facebook 自己附帶專利授權條款讓使用者不用擔心在使用時侵犯到 Facebook 的專利。\r\n\r\n而前陣子這個條款更新了:「Updating Our Open Source Patent Grant」,範例可以參考 osquery 裡的檔案:舊版的可以參考「PATENTS」這裡,而新版的可以參考「PATENTS」這裡,差異可以看「Update patent grant」這個 commit。\r\n\r\n不過看起來還是不怎麼友善...", + "title": "Facebook 更新在 Open Source 軟體裡的專利授權條款" + }, + { + "id": "5750", + "body": "easyDNS 這篇「Why We Will Not Be Registering easyDNS.SUCKS」把議題拋出來了。\r\n\r\n.SUCKS 的 domain 申請的目的就是要發橫財,而這也從 Sunrise Claim 的價錢看出來:USD$2499。而當初抗議成立時也沒被接受,現在看起來不像會有進一步的進展。\r\n\r\n除非如同 comment 所提到的被 Google 抵制,不過實在不像...", + "title": ".SUCKS 的 Domain..." + }, + { + "id": "5751", + "body": "在「Huthos VPS Provider: Totally legit, 1000% not a criminal organization.」這篇文章裡,作者因為平常就有弄密罐 (Honeypot),意外發現這種「業務」:\r\n\r\n\"\"\r\n\r\n作者發現有人打進他的 Honeypot 並且留下紀錄,一路追蹤後發現...", + "title": "破別人的機器然後拿來賣 Proxy 的「雲端服務」" + }, + { + "id": "5753", + "body": "索引:\r\n\r\n
\r\n\r\n續上篇的「KKBOX 徵人」,順便跟 Client Team 的同事徵文,等他寫完後也會貼出來讓大家知道 Client Team 目前找什麼人。\r\n\r\nServer Team 這邊徵人的部份順著每個部門說明,這次先講平台營運處 (API Team)。\r\n\r\n

曲庫開發部

\r\n\r\n曲庫開發部,負責接唱片公司所提供的 API 以及 DDEX 資料,將這些資料半自動或是自動化整合到 KKBOX 的系統內。\r\n\r\n另外這個部門在某些情況下,會需要寫程式特殊處理曲庫資料。舉例來說,前陣子金牌大風被華納音樂集團併購,這時候就有授權單位轉移的工作要做。\r\n\r\n人工上架的系統也是這個部門開發,由公司另外的部門作業。\r\n\r\n

API 開發部

\r\n\r\nAPI 開發部,負責開發與維護 KKBOX 應用程式的 API。\r\n\r\n

平台開發部

\r\n\r\n平台開發部,負責系統建制。我用條列的方式試著列一些出來:(應該是列不完)\r\n\r\n\r\n\r\n

影音服務開發部

\r\n\r\n影音相關的研發,也是偏 Server Side 的部份。\r\n\r\n

找什麼樣的人?

\r\n\r\n不限於這些,可以是聯集也可以有其他技能:\r\n\r\n\r\n\r\n

待續...

\r\n\r\n冨樫中...", + "title": "KKBOX 徵人:平台營運處 (API Team)" + }, + { + "id": "5755", + "body": "索引:\r\n\r\n
\r\n\r\n在寫自家的介紹時,特地跑去跟軟體開發中心的主管要 Client Team 的介紹,人家交稿的速度快多了... Q_Q\r\n\r\nAnyway,這篇是由 Client Team 的主管所寫的介紹,一樣是所有的部門都有職缺 (人力銀行上未必有開),有興趣的可以提供 resume 到 recruit at kkbox.com 這個信箱。\r\n\r\n
\r\n\r\n

軟體開發中心 (Application Develop)

\r\n\r\n在 KKBOX 裡頭,我們還蠻習慣以老派的 Client/Server Side 來稱呼不同技術背景的開發人員,Client Side 說穿了就是開發 App 的那群人,只要你喊得出來的主要平台,大概就是我們負責的。\r\n\r\n軟體開發隨著功能的演進,程式碼就會變得又肥又大,自然免不了些壞味道,面臨設計架構的難題,我們希望內部開發者能夠清楚三件事情: Design Pattern,Unit Test,和 Refactoring。上述觀念應當不用多說什麼,幾乎都變成顯學了。我們期盼透過一些原則和流程來讓開發工作變得不會那麼難以維護。\r\n\r\nClient Side 目前共有四個 App 開發部門和 SQA 部門:\r\n\r\n
    \r\n\t
  1. Windows 開發部: KKBOX 在早期開發時,當時主流的作業系統還是 Windows XP,所採用的開發框架是 MFC,儘管技術很老,但那是個什麼事情都可以自己打造的年代,我們也樂此不疲。會用到 C++/COM 與微軟早年推出的視窗各類技術 MFC/ATL/DirectShow 。說個秘密,我們也還最低限度的維護著 KKman 呢。
  2. \r\n\t
  3. .NET 開發部: 主要負責的是 Windows Store App 和 Windows Phone 的開發,採用的是微軟在下個世代主推的 Universal App 開發框架來打造 KKBOX 在三個 Windows 平台的體驗。這部門需要熟悉的程式語言是 C#,部門有兩位微軟 MVP 相當熟悉微軟的平台技術,很活躍於微軟舉辦的聚會。
  4. \r\n\t
  5. Android 開發部: 很明顯地,就是在 Android 手機作業系統上開發 App 的部門,除了手機之外,我們也在 Tablet / STB / Smart TV 各式裝載 Android 系統的裝置上開發。需要熟悉 Java 程式語言和 Google Android SDK。這部門的開發人員很常在 Android Taipei 上出沒,分享開發心得。
  6. \r\n\t
  7. iOS 開發部: 聽名字應該也不用多解釋,主要就是在 Mac/iPhone/iPad 上開發 App,為了掌握最新技術每年我們都會派人前往舊金山參加 WWDC。需要會的程式語言是 Objective-C,當然蘋果力推的 Swift 也開始加入開發行列,每個月也都在 CocoaHeads 聚會中跟其他開發者閒聊。
  8. \r\n\t
  9. 測試開發部: 俗稱 SQA 部門,著重依據測試的原理和方法來設計測試案例,因此像是黑箱測試方法的 BVA 和 ECP,以及 MBT … 等等都是在設計測試案例時,會用到的測試原理。內部有個小組專門負責研究與建置自動化測試框架,讓各個專案可以各自依照需求建立自己的測試系統。需要熟悉 Python 程式語言,同時我們也將日常得到的心得放在「科科和測試 Testing with KK」上,提供給同樣想把軟體測試工作做好的每個人。
  10. \r\n
\r\n\r\n順道一提,除了 KKBOX 以外,還有 KKTIX,Hami Music 和日本服務 Utapass,也都是上述開發部門負責的。所以你要真的那麼愛寫 App 的話,那這裡應該蠻適合你的。", + "title": "KKBOX 徵人:軟體開發中心 (i.e. Client Team)" + }, + { + "id": "5757", + "body": "美國政府宣佈資助「反動組織」非法後 (感謝對岸發展出來這個用語,用在這邊還頗適合的),也就代表資助 Edward Snowden 非法。\r\n\r\n而這反而引起類似「史翠珊效應」的情況發生,反而造成大量的 Bitcoin 贊助 Edward Snowden:「After Anti-Donation Executive Order, Bitcoin Donations For Snowden Jump」,原始報導出自「After Obama's cybersecurity order threatens Snowden fund, bitcoin donations spike」。\r\n\r\nBitcoin 的「無中央控管」以及「交易不可回退」的特性在這個事件中展現相當大的優點。", + "title": "在美國政府宣佈贊助非法後,Snowden 取得大量 Bitcoin 贊助" + }, + { + "id": "5758", + "body": "GoogleJSON 延伸發展出來的描述性語言,Jsonnet:「Jsonnet: a more elegant language for composing JSON」。\r\n\r\n
// Jsonnet Example\r\n{\r\n    person1: {\r\n        name: \"Alice\",\r\n        welcome: \"Hello \" + self.name + \"!\",\r\n    },\r\n    person2: self.person1 { name: \"Bob\" },\r\n}
\r\n\r\n所對應的 JSON 會是:\r\n\r\n
{\r\n   \"person1\": {\r\n      \"name\": \"Alice\",\r\n      \"welcome\": \"Hello Alice!\"\r\n   },\r\n   \"person2\": {\r\n      \"name\": \"Bob\",\r\n      \"welcome\": \"Hello Bob!\"\r\n   }\r\n}
\r\n\r\n可以透過 self 與運算做不少事情。不知道拿來當設定檔如何...\r\n\r\n看日期推出一陣子了,去年八月就放出來了...", + "title": "Google 的 Jsonnet" + }, + { + "id": "5762", + "body": "應該是在 Hacker News Daily 上看到的,1024 色的 CGA 畫面:「1K colours on CGA: How it's done」。比較容易懂的是「CGA in 1024 Colors - a New Mode: the Illustrated Guide」這篇文章。\r\n\r\n用到的技巧其實在先前就已經知道了 (維基百科的「Special effects on composite color monitors」這段提到的技巧),不過原文算是把研究做完。\r\n\r\n用的方法是 CGA 的 80x100 文字模式 + AV 端子 (Composite video) NTSC 的效果做到的。\r\n\r\n故事從頭講起,最前面帶出最基本的 80x25x16 (每個字是 8x8),以及可以修改 register 變成 80x100x16 (每個字變成只有 8x2,只會顯示最上面兩排 pixel):\r\n\r\n
Basically, you adjust CRTC registers to get 100 rows of text instead of the usual 25; this gives you a character box of 8x2 pixels, a quarter of the normal 8x8.
\r\n\r\n\"\"\r\n\r\n然後文章作者解釋這也就是 Macrocom 所發展出來的技巧:\r\n\r\n\"\"\r\n\r\n然後再來就是利用 80x100x16 再配合 AV 端子的特殊效果:\r\n\r\n\"\"\r\n\r\n這在維基百科上也有提到:\r\n\r\n\"\"\r\n\r\n於是就可以利用 0x55 (U 這個字) 湊出 256 色:\r\n\r\n\"\"\r\n\r\n然後再加上 0x13 (雙驚嘆號) 就可以湊出 512 色:\r\n\r\n\"\"\r\n\r\n最後達到 1024 色的方法是透過暴力更新做到的:\r\n\r\n
The lowdown on how this is done is all in reenigne's writeup, which is linked to at the top of this post. But this is the basic idea: by starting a new CRTC frame every other scanline and twiddling with the start address, it's possible to lay down our character rows so that the first scanline of each gets duplicated twice!
\r\n\r\n\"\"\r\n\r\n這個方法對於 8088 的 4.77Mhz 其實不太容易,所以這部份只有實作靜態圖片:\r\n\r\n
Naturally, there are downsides: having to mess with the CRTC every couple of scanlines is quite taxing for the poor 4.77MHz 8088, so there's not much you can do with this other than static pictures. The 512-color variant, using only ASCII 0x55 and 0x13, doesn't suffer from this – it's basically \"set and forget\", requiring no more CPU intervention than any 80-column text mode (the familiar overhead of avoiding snow).
\r\n\r\n然後這是最後的成果,上面是 AV 端子產生出來的結果,下面是 RGBI 的結果:\r\n\r\n\"\"\r\n\r\n1981 年的 CGA,在 34 年後居然搞成這樣... XD", + "title": "1024 色的 CGA 畫面" + }, + { + "id": "5763", + "body": "在「China’s Great Cannon」這篇文章裡面把最近 GitHub 被攻擊的事件所使用的武器稱為 China’s Great Cannon。文章裡分析了攻擊的方式、造成的影響。\r\n\r\n不過... 我只是對取名的人讚嘆而已,可以參考偽基百科的「先行者」條目 XDDD", + "title": "China's Great Cannon:中華大加農" + }, + { + "id": "5765", + "body": "在 Twitter 上看到別人 retweet 的新聞:\r\n\r\n

#iOS8 Vulnerability Lets Hackers Crash Any #iPhone and iPad Within Wi-Fi Range http://t.co/FssgRWikFu pic.twitter.com/xl6q99JJQx

— The Hacker News (@TheHackersNews) April 22, 2015
\r\n\r\n\r\n在 RSA Conference 發表的 0-day exploit:「iOS 8 Vulnerability Lets Hackers Crash Any iPhone and iPad Within Wi-Fi Range」。\r\n\r\n
Adi Sharabani and Yair Amit of Mobile security firm Skycure presented their latest research, titled \"No iOS Zone\", at the RSA security conference in San Francisco on Tuesday.
\r\n\r\n示範影片:\r\n\r\n\r\n\r\n起因自 iOS 對惡意 SSL certificate 的處理會造成重開機:\r\n\r\n
All an attacker need to do is create a malicious wireless network that uses the Wi-Fi connection in order to manipulate SSL certificates sent to iOS handsets.
\r\n\r\n目前最好的解法是關閉無線網路:\r\n\r\n
Another best measure is to simply avoid the free wireless networks you find in the street providing public Internet access.
", + "title": "iOS 8 的 DoS 攻擊:強制無限重開機" + }, + { + "id": "5766", + "body": "Twitter 上看到的 Google Chrome Extension 專案,針對轉載自 Ptt 的網站自動轉回 Ptt 原文:\r\n\r\n

不喜歡一些網站直接轉載 #ptt 並且加上廣告嗎?我寫了一個 chrome extension 讓你點到這些網站的連結時直接轉回 ptt,目前只支援 disp.cc https://t.co/HEZm1lDzyN

— Yuren Ju (@yurenju) April 22, 2015
\r\n\r\n\r\n程式在「ptt redirect」這邊,而原始程式碼在 GitHub 的「yurenju/ptt-redirect」這邊。\r\n\r\n目前只支援 disp.cc,應該還有好幾個站可以支援...", + "title": "Yuren Ju 的 ptt redirect:從轉載網站自動轉回 Ptt 原文" + }, + { + "id": "5767", + "body": "用 JavaScript 就可以攻擊 L3 cache,進而取得資料:「JavaScript CPU cache snooper tells crooks EVERYTHING you do online」。\r\n\r\n論文出自「The Spy in the Sandbox – Practical Cache Attacks in Javascript」(PDF) 這篇。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n不需要任何外掛或 exploit,就純粹是利用 cache 反應時間的 side-channel attack。另外由於 AMD 的 cache 架構不同,這次的攻擊實作僅對 Intel 有效:\r\n\r\n
The Intel cache micro-architecture isinclusive– all elements in the L1 cache must also exist in the L2 and L3 caches. Conversely, if a memory element is evicted fromthe L3 cache, it is also immediately evicted from the L2 and L1 cache. It should be noted that the AMD cachemicro-architecture is exclusive, and thus the attacks described in this report are not immediately applicable tothat platform.
\r\n\r\n這次的攻擊方法真變態...", + "title": "在瀏覽器上面用 JavaScript 進行 Side-channel attack" + }, + { + "id": "5768", + "body": "在「The International Space Station (Finally) Gets an Espresso Machine」這篇看到的,原始的報導出自「The International Space Station (finally!) gets an espresso machine」。\r\n\r\n幾個重點 XDDD\r\n\r\n
The ISSpresso requires 120V DC power which is obtained at the Utility Outlet Panel (UOP) on the ISS.
\r\n\r\n很特別的電力,是 120V DC 而非 120V AC...", + "title": "國際太空站要裝咖啡機了..." + }, + { + "id": "5770", + "body": "SSL Labs 的「SSL Server Test」是個經常被拿來檢測 SSL/TLS 相關設定的服務。\r\n\r\n這兩天公佈了對 RC4 的退役計畫:「SSL Labs RC4 Deprecation Plan」。\r\n\r\n分成兩個階段進行。\r\n\r\n第一個階段會在五月啟用,對於因為需要支援舊的 client 而針對 SSLv3/TLSv1 + RC4 組合的,會給予 B 評價。而全面支援 RC4 的 (包括 TLSv1.1+) 則會給予 C 評價。\r\n\r\n到了第二階段 (暫定九月),全面支援 RC4 的將會給予最低的 F 評價。", + "title": "SSL Labs 對 RC4 的退役計畫" + }, + { + "id": "5772", + "body": "Google Online Security 分析了前陣子 GitHub 被 DDoS 攻擊的行為:「A Javascript-based DDoS Attack as seen by Safe Browsing」。\r\n\r\n透過 GoogleSafe Browsing,針對 baidu.com 這個網域的 injection 情況分析:\r\n\r\n\"\"\r\n\r\n可以看得出來分成多個不同階段攻擊。其中 AWSCloudFront 承受了不小的壓力,不過畢竟是商用水準的 CDN,沒那麼容易垮掉。後來則是攻擊 GitHub 造成影響而上了新聞。\r\n\r\n最終還是繼續推廣 TLS,可以避免中間被 injection 攻擊:\r\n\r\n
Had the entire web already moved to encrypted traffic via TLS, such an injection attack would not have been possible.
", + "title": "Google 對 GitHub 先前遭受 GFW 的 DDoS 攻擊的分析" + }, + { + "id": "5773", + "body": "在「Amazon Finally Discloses Cloud Services Sales, Showing 49% Jump」這篇提到 Amazon 首次在財報上公開 AWS 的營收資訊:\r\n\r\n
The first-ever disclosure of results from the Amazon Web Services division showed revenue increased 49 percent from a year earlier. AWS cranked out operating income of $265 million for Amazon, helping offset losses in other businesses. Net losses for the enlarged company came in at $57 million.
\r\n\r\nAmazon 的公開資訊可以參考「Amazon.com Announces First Quarter Sales up 15% to $22.72 Billion」這篇。可以看得出來到處在燒錢,但 AWS 本身是賺錢的...", + "title": "Amazon 首次公佈 Amazon Web Services (AWS) 的財報資訊" + }, + { + "id": "5775", + "body": "Percona 的「Indexing 101: Optimizing MySQL queries on a single table」這篇講了最基本的 index 設計技巧,雖然文章裡沒提到,但最好是需要 B-treeB+ tree 的背景知識。\r\n\r\nMySQL 的 query 大致分成幾個階段。先決定要使用哪些 index (或是完全不用),然後透過 index 抓出符合條件資料 (或是 table scan),最後再細部過濾。\r\n\r\n以文章裡提到的「Multiple inequalities」範例裡這樣的 SQL query 來討論:\r\n\r\n
SELECT * FROM t WHERE c > 100 and b < 10 and d = 'xyz'
\r\n\r\n如果 index 是 (d, c),需要在透過這組 index 抓出資料後再過濾 b < 10 的條件。而如果 index 是 (d, b),需要在取出資料後再過濾 c > 100 的條件。也就是 B+ tree 做不到的事情,就要另外 post-processing。\r\n\r\n另外也有提到 covering index 對效能提昇的原理,不過這就有點屬於怪招了...", + "title": "MySQL 的 Index 設計技巧" + }, + { + "id": "5776", + "body": "Slashdot 上看到不需額外吃電的數位相機:「Researchers Design a Self-Powered Digital Camera」,原始的報導出自「This Digital Camera Doesn't Need a Battery Because It Powers Itself」這篇,另外有 PDF 論文可以看:「Towards Self-Powered Cameras」。\r\n\r\n\"\"\r\n\r\n\r\n\r\n目前是原型機,只有 30x40 的解析度 (看影片應該是有一定程度的灰階能力?)。依照文章所說的,如果技術再成熟一點就會對 IoT 影響蠻大的?", + "title": "不需額外吃電的數位相機" + }, + { + "id": "5777", + "body": "Linode 宣佈新加坡機房開放:「Singapore Linodes are now available!」。\r\n\r\n國內過去大約都在 60ms 上下,不過 HiNet 過去的 routing 還有些狀況,算是東京賣光的備案吧?", + "title": "Linode 成立新加坡機房..." + }, + { + "id": "5778", + "body": "因為稽核過期失效,Mozilla 決定移除 e-Guven 的 Root CA:「Removing e-Guven CA Certificate」,對應的 Bugzilla 連結出自「Remove E-Guven root certificate from NSS」:\r\n\r\n
Issuer Field:\r\nCN = e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi\r\nO = Elektronik Bilgi Guvenligi A.S.\r\nC = TR\r\n\r\nSHA-1 Fingerprint: DD:E1:D2:A9:01:80:2E:1D:87:5E:84:B3:80:7E:4B:B1:FD:99:41:34
\r\n\r\nGoogle Chrome 裡面也有引入這個 root CA,過幾天應該會被提出來處理:\r\n\r\n\"\"", + "title": "Mozilla 移除 e-Guven CA Certificate" + }, + { + "id": "5780", + "body": "Mozilla Security Blog 上 Richard Barnes (Firefox Security Lead) 宣佈對非 HTTPS 站台的抵制政策。規劃在之後的 Firefox 新功能限定在 HTTPS 網站上:「Deprecating Non-Secure HTTP」。\r\n\r\n詳細的日期還沒有確定,但預定分成兩個階段:\r\n\r\n
    \r\n\t
  1. Setting a date after which all new features will be available only to secure websites
  2. \r\n\t
  3. Gradually phasing out access to browser features for non-secure websites, especially features that pose risks to users’ security and privacy.
  4. \r\n
\r\n\r\n在「Deprecating Non-Secure HTTP (PDF)」這邊有 FAQ 可以參考。", + "title": "Mozilla 對非 HTTPS 站台的抵制" + }, + { + "id": "5781", + "body": "Netcraft 的統計說 DigitalOcean 變成全世界第二大 hosting:「DigitalOcean becomes the second largest hosting company in the world」。以 web-facing 為統計方式。\r\n\r\n\"\"\r\n\r\n第一大還是 Amazon Web Services,這點到是沒什麼意外...", + "title": "DigitalOcean 變成第二大 Hosting..." + }, + { + "id": "5782", + "body": "看到「Go-style concurrency in C」這個專案,在 C 上實作 Go-style 的 concurrency,包括了 channel 的設計。原始程式碼可以在 GitHub 上的「sustrik/mill」看到。\r\n\r\n在「mill.c」可以看到實作細節,另外也可以看到 yield() 的設計。\r\n\r\n不過目前還很早期,請小心服用:\r\n\r\n
This is a proof of concept project that seems to work with x86-64, gcc and Linux. I have no idea about different environments. Also, the project is in very early stage of development and not suitable for actual usage.
", + "title": "MILL:在 C 裡面實作 Go-style 的 concurrency" + }, + { + "id": "5783", + "body": "CloudFlare 發佈了自己版本的 Go,修改了其中的 crypto subsystem:「Go crypto: bridging the performance gap」。\r\n\r\n文章花了不少篇幅介紹 AEAD (Authenticated Encryption with Associated Data),而目前 CloudFlare 支援的是 AES-GCM 與 ChaCha20-Poly1305,也是兩大主流,分別佔了 60% 與 10% 的 HTTPS 流量:\r\n\r\n
As such today more than 60% of our client facing traffic is encrypted with AES-GCM, and about 10% is encrypted with ChaCha20-Poly1305.
\r\n\r\nCloudFlare 提供的改進使得速度快很多,並且有考慮到 side-channel attack 的問題:\r\n\r\n
Both implementations are constant-time and side-channel protected.
\r\n\r\n
                         CloudFlare          Go 1.4.2        Speedup\r\nAES-128-GCM           2,138.4 MB/sec          91.4 MB/sec     23.4X\r\n\r\nP256 operations:\r\nBase Multiply           26,249 ns/op        737,363 ns/op     28.1X\r\nMultiply/ECDH comp     110,003 ns/op      1,995,365 ns/op     18.1X\r\nGenerate Key/ECDH gen   31,824 ns/op        753,174 ns/op     23.7X\r\nECDSA Sign              48,741 ns/op      1,015,006 ns/op     20.8X\r\nECDSA Verify           146,991 ns/op      3,086,282 ns/op     21.0X\r\n\r\nRSA2048:\r\nSign                 3,733,747 ns/op      7,979,705 ns/op      2.1X\r\nSign 3-prime         1,973,009 ns/op      5,035,561 ns/op      2.6X
\r\n\r\nAES-GCM 與 EC 的改善主要是利用 CPU 指令集加速:\r\n\r\n
[T]herefore we created assembly implementations of Elliptic Curves and AES-GCM for Go on the amd64 architecture, supporting the AES and CLMUL NI to bring performance up to par with the OpenSSL implementation we use for Universal SSL.
\r\n\r\n不過 RSA 的部份雖然幅度也不小 (比起 AES 與 EC 的部份是不大,不過純就數字來看,快了一倍多也不少),不過沒提到怎麼改善,只稍微帶過:\r\n\r\n
In addition the fork includes small improvements to Go's RSA implementation.
", + "title": "CloudFlare 對 Go 上面加解密系統的改善" + }, + { + "id": "5785", + "body": "在 OSNews 上看到「Racking Mac Pros」這個報導,imgix 的人把 Mac Pro 給裝到機櫃裡:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n看起來設計成 4U 可以放四台,這樣頗不賴的耶...", + "title": "Mac Pro 的機櫃化..." + }, + { + "id": "5786", + "body": "Mozilla Developer Network (MDN) 寫了一篇關於 JavaScript 的介紹文章,算是以現在的角度來教 JavaScript:「A re-introduction to JavaScript (JS tutorial)」。\r\n\r\n不是給完全不懂的人入門看的,而是對程式語言有了解的人看的。\r\n\r\n文章裡面不單純只是教學,還引用了許多重要的文獻,尤其是 ECMAScript 規格書。有想要考據確認規格書怎麼定義會很方便。\r\n\r\n而最後面還提到了 browser 上 DOM 實作時的 memory leak 問題以及解法,這對於現在 single page application 的應用也愈來愈重要了。", + "title": "Mozilla Developer Network (MDN) 上的 JavaScript 教學" + }, + { + "id": "5789", + "body": "在今天之前,Amazon VPC 裡 Private Subnet 的機器需要透過 NAT 才能連到 Amazon S3 的 Endpoint API 上操作:(NAT instance 會放在 Public Subnet 裡)\r\n\r\n\"\"\r\n出自「NAT Instances」的說明。\r\n\r\n但在這個架構中,如果 NAT instance 不夠大台,甚至是流量需求超過 10Gbps 時就會有效能瓶頸了。而目前沒有比較簡單的方法可以解決。(一種解法是拆多個 subnet 跑,透過多個不同的 NAT instance 連出去,但這樣架構又變複雜了)\r\n\r\n今天則是公佈了讓內部可以直接存取 Amazon S3 的方式:「New – VPC Endpoint for Amazon S3」。第一波是美國 (扣除美國政府用的區域)、歐洲、亞洲、澳洲。所以是巴西與美國政府兩個區域還沒上:\r\n\r\n
Amazon VPC Endpoints for Amazon S3 are available now in the US East (Northern Virginia) (for access to the US Standard region), US West (Oregon), US West (Northern California), Europe (Ireland), Europe (Frankfurt), Asia Pacific (Tokyo), Asia Pacific (Singapore), and Asia Pacific (Sydney) regions.
\r\n\r\n這樣是解了不少問題,不過如果可以直接解決 NAT infrastructure 的問題應該會更痛快?", + "title": "Amazon VPC 的 Private Subnet 不需要透過 NAT 去 Amazon S3 抓資料了" + }, + { + "id": "5790", + "body": "文章的標題「Scroll Back: The Theory and Practice of Cameras in Side-Scrollers」,裡面圖又大又多,20Mbps 的光世代全速下載要跑滿一分鐘才能抓完。\r\n\r\n\r\n順便測一下 Imgur 的 mp4,以及 HTML5 的 video tag。\r\n\r\n裡面考了不少古啊,把捲頁的方式分成許多類別...", + "title": "遊戲捲頁的理論與實作" + }, + { + "id": "5791", + "body": "在「Upsert Lands in PostgreSQL 9.5 – a First Look」這邊提到了 PostgreSQL 9.5 支援的 UPSERT 操作。\r\n\r\nUPSERT 的定義是:\r\n\r\n
(computing, database) An operation that inserts rows into a database table if they do not already exist, or updates them if they do.
\r\n\r\n如果不存在就 INSERT,如果存在就 UPDATE,然後取一部分的字變成 UPSERT。由於要偵測「存在」,只能用在有 primary key 或是有 unique 條件時的表格上。\r\n\r\n作者給的範例講解了 PostgreSQL 9.5 上的語法:\r\n\r\n
INSERT INTO products (\r\n    upc,\r\n    title,\r\n    description,\r\n    link)\r\nVALUES (\r\n    123456789,\r\n    ‘Figment #1 of 5’,\r\n    ‘THE NEXT DISNEY ADVENTURE IS HERE - STARRING ONE OF DISNEY'S MOST POPULAR CHARACTERS! ’,\r\n    ‘http://www.amazon.com/dp/B00KGJVRNE?tag=mypred-20'\r\n    )\r\nON CONFLICT DO UPDATE SET description=excluded.description;
\r\n\r\n這邊用的是 ON CONLIFCT DO UPDATE SET,在 MySQL 則是用 ON DUPLICATE UPDATE。", + "title": "PostgreSQL 9.5 的 UPSERT" + }, + { + "id": "5793", + "body": "在 Zite 上看到的「Postgres finally has CUBE / ROLLUP / GROUPING SETS !」。\r\n\r\n直接看 PostgreSQL 的文件「7.2.4. GROUPING SETS, CUBE, and ROLLUP」就可以知道用法:\r\n\r\n
=> SELECT * FROM items_sold;\r\n brand | size | sales\r\n-------+------+-------\r\n Foo   | L    |  10\r\n Foo   | M    |  20\r\n Bar   | M    |  15\r\n Bar   | L    |  5\r\n(4 rows)\r\n\r\n=> SELECT brand, size, sum(sales) FROM items_sold GROUP BY GROUPING SETS ((brand), (size), ());\r\n brand | size | sum\r\n-------+------+-----\r\n Foo   |      |  30\r\n Bar   |      |  20\r\n       | L    |  15\r\n       | M    |  35\r\n       |      |  50\r\n(5 rows)
\r\n\r\n結果就是分次 GROUP BY 的聯集。而 CUBEROLLUP 則是提供列舉的方式。\r\n\r\nROLLUP 的部份:\r\n\r\n
ROLLUP ( e1, e2, e3, ... )
\r\n\r\n表示階層式的列舉:\r\n\r\n
GROUPING SETS (\r\n    ( e1, e2, e3, ... ),\r\n    ...\r\n    ( e1, e2 )\r\n    ( e1 )\r\n    ( )\r\n)
\r\n\r\n而 CUBE:\r\n\r\n
CUBE ( a, b, c )
\r\n\r\n則是表示 power set (所有的組合):\r\n\r\n
GROUPING SETS (\r\n    ( a, b, c ),\r\n    ( a, b    ),\r\n    ( a,    c ),\r\n    ( a       ),\r\n    (    b, c ),\r\n    (    b    ),\r\n    (       c ),\r\n    (         ),\r\n)
\r\n\r\n也有更複雜的 CUBE ( (a,b), (c,d) )GROUP BY a, CUBE(b,c), GROUPING SETS ((d), (e)) 可以用,參考文件裡的範例即可 :p", + "title": "PostgreSQL 9.5 的 GROUPING SETS 以及 CUBE 與 ROLLUP" + }, + { + "id": "5795", + "body": "Google Cloud Platform 推出了類似於 Amazon EC2 的 Spot Instance 的產品,叫做 Preemptible VM:「Introducing Preemptible VMs, a new class of compute available at 70% off standard pricing」。\r\n\r\n不同的是,沒有引入競價系統,而是固定的 discount。另外有一些限制,像是最多持續 24 小時:\r\n\r\n
The tradeoff is that Preemptible VMs are limited to a 24 hour runtime, and will sometimes be preempted (shut down) earlier than that.
\r\n\r\n而停機通知時間比 Spot Instance 短,只有 30 秒 (相較於 Spot Instance 有兩分鐘):\r\n\r\n
When Preemptible VMs are terminated, they'll receive a 30 second notice allowing you to shutdown cleanly (including saving work, if applicable).
", + "title": "Google Cloud Platform 也推出了類似 Spot Instance 的產品" + }, + { + "id": "5796", + "body": "2015/06/30 到 2015/07/01 會有 Leap Second (閏秒),而這次 AWS 處理的方法也公告出來了:「Look Before You Leap – The Coming Leap Second and AWS」。\r\n\r\nEC2 由於每個 instance 有自己的 clock,所以需要自己實作:如果對閏秒不會有問題的系統就放著,而對閏秒敏感的系統可以自己跑 ntpd 之類的程式校正。\r\n\r\n而其他 AWS 的系統會用 24 個小時攤平多出來的閏秒,從 2015/06/30 的中午 12:00:00 開始,到 2015/07/01 的中午 12:00:00 結束 (都是 UTC):\r\n\r\n\"\"\r\n\r\n也就是說不會出現 23:59:60 這種時間,而在這 24 小時調整區間內的誤差最多 0.5 秒。", + "title": "AWS 處理這次的 Leap Second..." + }, + { + "id": "5797", + "body": "在「Amazon CloudFront Makes it Easier to Invalidate Multiple Objects」這邊看到的消息,Amazon CloudFront 總算是支援 Wildcard Invalidation 了。價錢與 Single Object Invalidation 相同,都是每次 USD$0.005。\r\n\r\n依照 Invalidating Objects (Web Distributions Only) 這邊的說明,Wildcard 的部份只能用在結尾:\r\n\r\n
To invalidate objects, you can specify either the path for individual objects or a path that ends with the * wildcard, which might apply to one object or to many, as shown in the following examples:\r\n\r\n
\r\n\r\n不過還是有些限制,包括了 Single Object Invalidation 的同時最多 3000 條的限制:\r\n\r\n
If you're invalidating objects individually, you can have invalidation requests for up to 3,000 objects per distribution in progress at one time. This can be one invalidation request for up to 3,000 objects, up to 3,000 requests for one object each, or any other combination that doesn't exceed 3,000 objects. For example, you can submit 30 invalidation requests that invalidate 100 objects each. As long as all 30 invalidation requests are still in progress, you can't submit any more invalidation requests. If you exceed the limit, CloudFront returns an error message.
\r\n\r\n以及 Wildcard Invalidation 的同時 15 條限制:\r\n\r\n
If you're using the * wildcard, you can have requests for up to 15 invalidation paths in progress at one time.
\r\n\r\n而且每次 invalidate 可能都要 10~15 分鐘:\r\n\r\n
It usually takes 10 to 15 minutes for CloudFront to complete your invalidation request, depending on the number of invalidation paths that you included in the request.
\r\n\r\n所以也不是付錢就可以解決所有事情... :o", + "title": "CloudFront 支援 Wildcard Invalidation" + }, + { + "id": "5798", + "body": "Jeff Barr 被問到有沒有 Amazon EC2 每種 instance 的發表時間,結果連他手上都沒有完整的資料... 這是他目前整理出來的資訊:「EC2 Instance History」。\r\n\r\nUpdate:畢竟還是 AWS 的高層,應該是從內部抓出資料後再去找什麼時候公佈的,目前的表格補齊了。\r\n\r\n其中 m1.small 在的 2006 年八月是歷史性的一刻,Amazon EC2 的發表,雲端服務的里程碑:「Amazon EC2 Beta」。", + "title": "EC2 Instance 的發展紀錄" + }, + { + "id": "5800", + "body": "官方的公告在這邊:「更新:AWS中国北京区域推出第二个EC2可用区」。\r\n\r\n我以為每個地區都是直接開兩個以上的 AZ?(就之前其他地區看到的經驗) 沒想到北京現在才開第二個 AZ...\r\n\r\n目前還是在 Limited Preview,要申請的人要自己找管道去要...", + "title": "AWS 北京開了第二個 AZ" + }, + { + "id": "5802", + "body": "在 OSNews 上看到 Mac OS X 10.10.4 的 beta 版把 discoveryd 幹掉了:「Apple drops discoveryd in latest OS X beta」。報導引用自「Apple drops discoveryd in latest OS X beta following months of network issues」。\r\n\r\n移除 discoveryd 幾乎是拿到 Mac OS X 後必須要做的事情,不然無線網路會一直斷線... 從今年年初到現在,總算是暫時解決了這個問題 :o\r\n\r\n接下來等正式 release...", + "title": "Mac OS X 10.10.4 beta 把會讓網路一直斷的 discoveryd 幹掉了..." + }, + { + "id": "5803", + "body": "Andrew Gerrand 在「The State of Go - Where we are in May 2015」這份投影片裡面提到了不少 1.5 的改變與改善,預定在今年八月釋出。\r\n\r\n首先是全部都改用 Go 寫,不再需要 C 語言的協助了:\r\n\r\n
The gc tool chain has been converted from C to Go.
\r\n\r\n而效能上的改善最大的是 GC 的部份:\r\n\r\n\"\"\r\n\r\n另外是對行動平台的發展:\r\n\r\n
Go 1.5 provides support for Android and experimental support for iOS.
\r\n\r\n這樣變得頗有趣的,自家的 Android 有打算換掉 Java 嗎?", + "title": "Go 1.5 的進展" + }, + { + "id": "5804", + "body": "PHP-FIG 前幾天公告了 PSR-7 (commit d40b64cc4e64e5a5b2fe998bb0a07d0b56e12505),也就是 HTTP message interfaces。\r\n\r\n由於 PSR 的編號只是提案順序,通過不一定會照順序。只是之前剛剛好都照著順序來 (PSR-0PSR-4),這次跳到 PSR-7 是跳過了 PSR-5 (PHPDoc Standard) 與 PSR-6 (Caching PSR)。\r\n\r\n有了對 HTTP request 與 HTTP response 的標準後,可以馬上想到的是 routing library 與 controller library 可以接上去用,測試會變的簡單一些... 之後應該會有其他的想法可以做?", + "title": "PSR-7:HTTP message interfaces" + }, + { + "id": "5805", + "body": "Facebook 宣佈支援 PGP 機制:「Securing Email Communications from Facebook」。\r\n\r\n有兩個功能,首先是可以讓別人查詢。\r\n\r\n\"\"\r\n\r\n另外一個是可以要求 Facebook 寄給你的信件都用這把 Key 加密。\r\n\r\n\"\"\r\n\r\n如果有 API 可以拉出資料的話就更好了...", + "title": "Facebook 支援 PGP 機制" + }, + { + "id": "5806", + "body": "Velocity 2015 上的「HTTP/2 is here, let's optimize!」提到了很多關於 HTTP/1.1 時代所採用的 Best Practice (或者說,workaround) 變成了 HTTP/2 的問題。\r\n\r\n這張表整理了各種技巧在 HTTP/1.1 與 HTTP/2 的差異:\r\n\r\n\"\"\r\n\r\n在 HTTP/2 因為有了 multiplexing 機制,用了 Apply domain sharding 後反而增加 DNS query 以及開新的連線所需要的 handshake 時間。\r\n\r\n而 Concatenate resources 也算是 workaround 的一種,不同等級的合併會有不同的 trade-off。全站合併 assets 可以讓常逛的使用者下載的量降到最低,但會讓第一次讀取的使用者花比較多時間下載。如果是單頁合併 assets,則剛好反過來:第一次讀取的使用者較快,但常逛的使用者會下載重複的內容。\r\n\r\n最後的 Inline resources,作者則是提出利用 HTTP/2 提供的 server push 機制來改善,不過沒看懂...\r\n\r\n有些 workaround 總算可以拋開了...", + "title": "HTTP/1.1 時代的 Best Practice 變成 HTTP/2 的問題" + }, + { + "id": "5807", + "body": "在 Hacker News Daily 上看到有人針對 GitHub 上的 Public Key 分析:「Auditing GitHub users’ SSH key quality」。\r\n\r\n這個分析主要用的是 GitHub 的 .keys 功能取得:\r\n\r\n
A little known feature of GitHub is the ability to look at the public SSH keys that other users have set to be authorised on their account (for example https://github.com/torvalds.keys)
\r\n\r\n作者從去年 2014 年 12 月 27 日跑到今年 2015 年 1 月 9 日,共取得了 1376262 把 public key,然後就針對這些 key 分析。\r\n\r\n「The Debian bug bites again」這一段講的是 CVE-2008-0166 (可以參考「該換 ssh keys 了」這篇的說明),發現即使是七年後的現在,也還是有問題。\r\n\r\n另外還有 256 bits 與 512 bits 的 RSA key,作者自己建立了一把測試,用 i5-2400 只要 25 分鐘就可以解出 256 bits 的 private key:\r\n\r\n
This risk isn’t only real if someone had gathered together top of the line mathematicians or supercomputers worth of power, the 256 bit key I factored was factored on a i5-2400 in 25 mins.
\r\n\r\nNSA 應該都摸透了...\r\n\r\n作者提供的時間線:\r\n\r\n
[27th December 2014] Key Crawl Started\r\n[28th Feb 2015] Disclosed low bits issue to a peer at GitHub\r\n[1st March 2015] Discovered the weak Debian Keys (and disclosed)\r\n[5th May 2015] Debian keys revoked, emails sent out\r\n[1st June 2015] Weak and low quality keys revoked
", + "title": "對 GitHub 的 Public Key 分析" + }, + { + "id": "5808", + "body": "Percona 的「Optimizing Percona XtraDB Cluster for write hotspots」這篇說明了在 Galera Cluster 上發生多個 transaction 衝突時的處理方式。\r\n\r\n不過解法是早就已經知道的方法,也就是把寫入都丟到同一台上處理:\r\n\r\n
So what are your options with PXC when the workload has write hotspots? The most obvious one is to write on a single node: then you will have the same locking model as with a standalone InnoDB server. Performance will not be as good as with a standalone server as you will have to pay for synchronous replication, but you will avoid the very expensive write conflicts.
\r\n\r\n講解的文章,對之後 troubleshooting 與 performance tuning 有幫助...", + "title": "Galera Cluster (Percona XtraDB Cluster) 對寫入熱點的處理方式" + }, + { + "id": "5810", + "body": "GitHub 宣佈成立日本辦公室:「Announcing GitHub Japan」,日本的官網在「GitHub Japan」這邊。比較意外的是日本官網是不支援 HTTPS 的。\r\n\r\n辦公室在東京都港區 (PMO 芝大門 7F、東京都港区芝大門 1-10-18),也許下次去的時候去樓下看看...", + "title": "GitHub 成立日本辦公室" + }, + { + "id": "5811", + "body": "Yahoo Pipes 宣佈 8/30 進入唯讀模式,9/30 關閉:「Pipes End-of-life Announcement」。\r\n\r\n替代方案只想的到 IFTTT,不知道有沒有其他的...", + "title": "Yahoo Pipes 宣佈停業..." + }, + { + "id": "5812", + "body": "Let's Encrypt 的 Root Certificate 與 Intermediate Certificate 建出來了:「Let's Encrypt Root and Intermediate Certificates」。\r\n\r\nIntermediate Certificate 除了會讓自己的 Root Certificate 簽名外,也會讓 IdenTrust 的 DST Root CA X3 簽 (目前各大瀏覽器與 SSL library 都有支援)。\r\n\r\n\"\"\r\n\r\n目前是 RSA key,之後會生出 ECDSA key:\r\n\r\n
All ISRG keys are currently RSA keys. We are planning to generate ECDSA keys later this year.
", + "title": "Let's Encrypt 建立 Root Certificate 與 Intermediate Certificate" + }, + { + "id": "5813", + "body": "Facebook 推出 Facebook Lite (Android):「Announcing Facebook Lite」。\r\n\r\n\"\"\r\n\r\n與完整版的差異在於對網路的使用量會更低,以及使用的資源會更少:\r\n\r\n
Today we’re introducing Facebook Lite, a new version of Facebook for Android that uses less data and works well across all network conditions.
\r\n\r\n
Facebook Lite is less than 1MB so it is fast to install and quick to load. It includes Facebook’s core experiences like News Feed, status updates, photos, notifications and more.
\r\n\r\n之前就先有先推出了,不過現在開放給更多地區使用:\r\n\r\n
Starting today, we are rolling out Facebook Lite in countries across Asia, and over the coming weeks Facebook Lite will be available in parts of Latin America, Africa and Europe.
", + "title": "Facebook 推出 Facebook Lite" + }, + { + "id": "5815", + "body": "今天的 Facebook 慢到爆炸,看起來像是台灣機房的問題,這邊先提供 workaround:\r\n\r\n
把 DNS 改用 8.8.8.8,看起來 DNS 會解去洛杉磯的機房,速度就會正常多了。
\r\n\r\n接下來列出看到的結果,靜態的頁面 (拿 /robots.txt 測試) 沒問題:\r\n\r\n
Server Software:        \r\nServer Hostname:        www.facebook.com\r\nServer Port:            443\r\nSSL/TLS Protocol:       TLSv1.2,ECDHE-ECDSA-AES128-GCM-SHA256,256,128\r\n\r\nDocument Path:          /robots.txt\r\nDocument Length:        4159 bytes\r\n\r\nConcurrency Level:      1\r\nTime taken for tests:   0.792 seconds\r\nComplete requests:      20\r\nFailed requests:        0\r\nTotal transferred:      99000 bytes\r\nHTML transferred:       83180 bytes\r\nRequests per second:    25.24 [#/sec] (mean)\r\nTime per request:       39.612 [ms] (mean)\r\nTime per request:       39.612 [ms] (mean, across all concurrent requests)\r\nTransfer rate:          122.03 [Kbytes/sec] received\r\n\r\nConnection Times (ms)\r\n              min  mean[+/-sd] median   max\r\nConnect:       28   30   0.6     30      31\r\nProcessing:     9   10   0.3     10      10\r\nWaiting:        9    9   0.2      9      10\r\nTotal:         38   39   0.7     39      41\r\n\r\nPercentage of the requests served within a certain time (ms)\r\n  50%     39\r\n  66%     40\r\n  75%     40\r\n  80%     40\r\n  90%     40\r\n  95%     41\r\n  98%     41\r\n  99%     41\r\n 100%     41 (longest request)
\r\n\r\n但動態的頁面就慢到炸:\r\n\r\n
Server Software:        \r\nServer Hostname:        www.facebook.com\r\nServer Port:            443\r\nSSL/TLS Protocol:       TLSv1.2,ECDHE-ECDSA-AES128-GCM-SHA256,256,128\r\n\r\nDocument Path:          /\r\nDocument Length:        0 bytes\r\n\r\nConcurrency Level:      1\r\nTime taken for tests:   20.294 seconds\r\nComplete requests:      20\r\nFailed requests:        0\r\nNon-2xx responses:      20\r\nTotal transferred:      6700 bytes\r\nHTML transferred:       0 bytes\r\nRequests per second:    0.99 [#/sec] (mean)\r\nTime per request:       1014.690 [ms] (mean)\r\nTime per request:       1014.690 [ms] (mean, across all concurrent requests)\r\nTransfer rate:          0.32 [Kbytes/sec] received\r\n\r\nConnection Times (ms)\r\n              min  mean[+/-sd] median   max\r\nConnect:       28   30   0.9     29      32\r\nProcessing:   151  985 1144.5    567    4939\r\nWaiting:      151  985 1144.5    567    4938\r\nTotal:        180 1014 1145.1    597    4971\r\nWARNING: The median and mean for the initial connection time are not within a normal deviation\r\n        These results are probably not that reliable.\r\n\r\nPercentage of the requests served within a certain time (ms)\r\n  50%    597\r\n  66%   1226\r\n  75%   1279\r\n  80%   1667\r\n  90%   2267\r\n  95%   4971\r\n  98%   4971\r\n  99%   4971\r\n 100%   4971 (longest request)
", + "title": "超慢的 Facebook..." + }, + { + "id": "5816", + "body": "EtsyLaurie Denness 對於 Etsy 使用各種品牌 SSD 的情況給出了他的經歷:「SSDs: A gift and a curse」。\r\n\r\n重點在於開頭說的:\r\n\r\n
SSD firmware is buggy
\r\n\r\n可以看到當 SSD 配上 RAID controller 的時候,常常會需要找問題... (而且很難找)\r\n\r\nIntel 的評價很不錯:\r\n\r\n
Okay, bad start, we’ve actually had no issues with Intel. This seems to be common across other companies we’ve spoken to.
\r\n\r\nOCZ 倒了,被 Toshiba 收購,而且 S.M.A.R.T. 資訊很差,很難預測什麼時候會掛掉 (有助於提前替換):\r\n\r\n
However, they had poor SMART info (none) so predicting failures was hard.
\r\n\r\nHP 是個大黑盒:\r\n\r\n
Unfortunately, HP have proprietary RAID controllers, and they don’t support SMART. Or rather, they refuse to talk to non-HP drives using off the shelf technology, they have their own methods.
\r\n\r\nSamsung 的評價不錯,C/P 值很高,而且有 S.M.A.R.T.:\r\n\r\n
Samsung saved the day and picked up from OCZ with a ludicrously cheap 960GB offering, the 840 EVO. A consumer drive, so very limited warranty, but for the price (~$400-500) you got great IOPS and they were reliable. They had better SMART info, and seemed to play nicely with our hardware.
\r\n\r\n不過 BB6Q 版的韌體搞爆了效能,雖然最後修好了:「Samsung Releases Firmware Update to Fix the SSD 840 EVO Read Performance Bug」。\r\n\r\n而 LiteOn 則是掛在 GC 上 (RAID 裡同時掛掉兩顆以上):\r\n\r\n
The SSDs were having extended garbage collection periods, exacerbated by a smaller amount of SSDs with higher IO, in RAID6. This caused the controller to kick the drive out of the array… and unfortunately due to the write levelling across the drives, at least two of them were garbage collecting at the same time, destroying the array integrity.
\r\n\r\n不過後來 Dell 與 LiteOn 分別就 RAID controller 與 SSD 本身都跳下去修正,最後還是解決了:\r\n\r\n
Dell and LiteOn together identified and fixed weaknesses in their RAID controller, the backplane and the SSD firmware.
\r\n\r\n算是經驗分享,在 SSD 硬碟成熟的過程中間必經的道路 XD", + "title": "Etsy 用 SSD 的故事" + }, + { + "id": "5819", + "body": "Amazon VPC 發表新功能,可以紀錄流量流經 VPC 的 metadata:「VPC Flow Logs – Log and View Network Traffic Flows」。\r\n\r\n依照官方的圖片,可以看到資料很陽春 (看起來是 unix timestamp 的欄位,然後出現 6/17,應該是 TCP/UDP?),不過至少有紀錄可以看了:\r\n\r\n\"\"\r\n\r\n算是 IPFIX 的一種?", + "title": "Amazon VPC 的流量紀錄 (Flow Logs)" + }, + { + "id": "5820", + "body": "Amazon Redshift 是以 SQL 介面操作的方式分析 data warehouse 的資料,可以利用多台機器平行計算加速。\r\n\r\n這次 Amazon Redshift 提供了新的硬體規格出來 (ds2.* 系列):「Amazon Redshift – Now Faster and More Cost-Effective than Ever」。\r\n\r\nds2.* 與原來 ds1.* 的價錢都一樣,但是 vCPU 與記憶體都加倍,網路與 I/O 速度都升級了。如果沒有買 Reversed Instance (RI) 的人可以換過去,有買的人就再想辦法吧... \r\n\r\n然後 Amazon Redshift 的 RI 模式也與 EC2 的 RI 架構相同了,有三種選擇。", + "title": "Amazon Redshift 的新硬體規格" + }, + { + "id": "5821", + "body": "Facebook 推出了靜態分析工具 Facebook Infer,可以事先找出 AndroidiOS 上的 bug:Open-sourcing Facebook Infer: Identify bugs before you ship。\r\n\r\n\"\"\r\n\r\n從官方給的操作動畫中就可以看出來怎麼跑了。目前看起來支援三種程式語言,C、Objective-C、Java:\r\n\r\n
Facebook Infer is a static analysis tool - if you give Infer some Objective-C, Java, or C code, it produces a list of potential bugs.
\r\n\r\n在 Android 上 (Java) 會找出的類型:\r\n\r\n
Infer reports null pointer exceptions and resource leaks in Android and Java code.
\r\n\r\niOS 上則只找 memory leak:\r\n\r\n
In addition to this, it reports memory leak problems in iOS and C code.
\r\n\r\n比較特別的是,這個工具是用 OCaml 寫:\r\n\r\n
Infer is a static analysis tool for Java, Objective-C and C, written in OCaml.
", + "title": "Facebook 推出靜態分析工具:Facebook Infer" + }, + { + "id": "5822", + "body": "Amazon EC2 推出新的一般性機種 m4.* 了:「The New M4 Instance Type (Bonus: Price Reduction on M3 & C4)」。\r\n\r\n亮眼在 m4.10xlarge 這組可以控制 C-state 與 P-state,可以利用這兩個對 latency 與整體 performance 調整。\r\n\r\n拿 m4.large 與 m3.large 比較,m4 便宜一些,而且 m4 記憶體比 m3 大一點,但是 m3 有內掛 SSD,m4 需要 EBS。如果 I/O 比較重的應用還是用 m3 還是比較好。\r\n\r\n另外一個發表的是 m3.* 在某些地區有些微的降價 (約 5%),就當作撿到的...?", + "title": "Amazon EC2 推出新機種:m4.*" + }, + { + "id": "5825", + "body": "GitHub 的「How to undo (almost) anything with Git」這篇文章介紹了 Git 上各種 undo 的方式。\r\n\r\n主要先分成「已經 push 出去」與「還沒 push 出去」兩種,然後針對 branch 再說一次。\r\n\r\n這份沒有 cover 到所有的方式,但常用的都在裡面提到了,可以先 bookmark 下來,需要用的時候練個幾次就會背起來了。", + "title": "Git 上各種 Undo 的技巧" + }, + { + "id": "5826", + "body": "Wikimeda 宣佈所有旗下的網站都會啟用 HTTPS 與 HSTS:「Securing access to Wikimedia sites with HTTPS」。\r\n\r\n在這之前,使用者可以用 EFFHTTPS Everywhere 強制使用 HTTPS (在 FirefoxGoogle Chrome 都有上架),而這次則是全面強制使用了。\r\n\r\n愈來愈多人使用 HTTPS 來保護隱私後 (而不僅僅是保護機密資料),接下來的問題就是要想辦法在 DNS 上保護了。也就是可以利用 DNS query pattern 知道你在看哪種 (或是哪一個) 頁面。", + "title": "Wikimedia (包括維基百科) 推出 HSTS (強制使用 HTTPS)" + }, + { + "id": "5827", + "body": "本來只有 Windows 10 的 IE11 有支援 HSTS,而前幾天的更新則是讓 Windows 7 與 Windows 8.1 的 IE11 也支援了:「HTTP Strict Transport Security comes to Internet Explorer 11 on Windows 8.1 and Windows 7」。\r\n\r\n
With today’s monthly security updates (KB 3058515), we’re bringing the protections offered by HSTS to Internet Explorer 11 on Windows 8.1 and Windows 7. HSTS is also available in both Internet Explorer 11 and Microsoft Edge on Windows 10.
\r\n\r\n這次的更新讓所有主流瀏覽器都支援 HSTS 了,再加上前一篇「Wikimedia (包括維基百科) 推出 HSTS (強制使用 HTTPS)」提到的,愈來愈多人用啦...\r\n\r\n然後據 zonble 說,iOS 9 有些東西會 HTTPS only (預設值),該回頭去催自己人支援了 :o", + "title": "微軟讓 Windows 7 與 Windows 8.1 上的 IE11 支援 HSTS" + }, + { + "id": "5828", + "body": "Adobe Typekit 宣佈支援 CJK 字型:「Announcing East Asian web font support and new font browsing tools for Japanese customers」。中文的公告在「正式公開東亞網頁字體支援以及日文客戶適用的全新字體瀏覽工具」這邊。\r\n\r\n這也包括了網頁版的部份。對於 CJK 單一字型檔案過大的問題,與大家的解法也都一樣,取出對應的字組出來給使用者作為 workaround (稱為 Dynamic Subsetting):\r\n\r\n\"\"\r\n\r\n會稱為這是 workaround 是因為當網路速度愈來愈之後,就會又變成最單純的直接整包下載...\r\n\r\nAnyway,Adobe 這個新功能是一個大邁進,不過他用的 HTTPS (EdgeCast) 還沒支援 SPDY 或是 HTTP/2 啊... :/", + "title": "Adobe Typekit 支援 CJK 字型" + }, + { + "id": "5832", + "body": "Percona 的「Speed up GROUP BY queries with subselects in MySQL」這篇講了 MySQL 在處理 GROUP BY 的效率問題。\r\n\r\n舉原文的例子,也就是這樣的 SQL query:(我把 command 都改成大寫,其他部份都改成小寫)\r\n\r\n
SELECT a.name, SUM(a.count) a_sum, AVG(a.position) a_avg, b.col1, c.col2, d.col3\r\nFROM\r\na JOIN\r\nb ON (a.bid = b.id) JOIN\r\nc ON (a.cid = c.id) JOIN\r\nd ON (a.did = d.id) GROUP BY a.name, b.id, c.id, d.id
\r\n\r\n其中 TABLE a 有 1.3M rows,而 b、c、d 都只有 5 rows。\r\n\r\n由於會需要計算每組 (a.name, b.id, c.id, d.id)SUM(a.count)AVG(a.position),不可避免的是需要對 TABLE a 完整的掃一次。所以效能的改善會在於可以減少 temporily table 的大小。\r\n\r\n上面這組 SQL query 會先 JOIN 完後再 GROUP BY,也就是會全部先展開後再 GROUP BY。\r\n\r\n由於 GROUP BY 所使用到的條件都可以在 TABLE a 裡面找到,所以這邊可以先 GROUP BY 後再 JOIN,降低 temporily table 的大小:\r\n\r\n
SELECT a.name, a_sum, a_avg, b.col1, c.col2, d.col3\r\nFROM\r\n(SELECT name, SUM(count) a_sum, AVG(position) a_avg, bid, cid, did\r\n FROM a\r\n GROUP BY name, bid, cid, did) a JOIN\r\n b ON (a.bid = b.id) JOIN\r\n c ON (a.cid = c.id) JOIN\r\n d ON (a.did = d.id)
\r\n\r\n原文測試出來的結果是從 2.3 秒降到 1.8 秒:\r\n\r\n
The first query took 2.3 sec avg and the optimized query took 1.8 sec average, half a second faster.
\r\n\r\n另外一個改善是再加上 covering index:\r\n\r\n
ALTER TABLE a ADD INDEX (name, bid, cid, did, count, position);
\r\n\r\n加上去之後,原來的 query 變成 1.9 秒,而改善後的變成 0.7 秒,速度快很多。不過這是 trade-off,多了這個 index 在寫入時的成本也會增加。", + "title": "MySQL 在處理 GROUP BY 時選擇 index 的效率問題" + }, + { + "id": "5833", + "body": "EC2 推出了新的 t2.large instance:「New T2.Large Instances」。\r\n\r\n價錢剛好是 t2.medium 的兩倍,記憶體也是兩倍 (4GB 對 8GB),但 CPU 的部份只多了 50%,就如同 Colin Percival 講的,這看起來很奇怪:\r\n\r\n

@jeffbarr Double the price of t2.medium, double the RAM of t2.medium... but only 50% more CPU? Is that correct? Seems strange.

— Colin Percival (@cperciva) June 17, 2015
\r\n\r\n\r\n不過 t2.* 是真的很好用,反正就當作多一個方案吧...", + "title": "奇怪的 t2.large instance" + }, + { + "id": "5834", + "body": "Linode 前幾天宣佈開始提供 KVM-based hosting:「Linode turns 12! Here’s some KVM!」。\r\n\r\n使用 KVM 最大的進展是可以跑 Windows 了:(這對產品面來說很重要)\r\n\r\n
However, we also now support fully virtualized guests – which means you can run alternative operating systems like FreeBSD, BSD, Plan 9, or even Windows – using emulated hardware (PIIX IDE and e1000).
\r\n\r\n同時圖形化界面的 console 也會釋出:\r\n\r\n
We’re also working on a graphical console (GISH?) which should be out in the next few weeks.
\r\n\r\n而現有 Xen 換到 KVM 也包裝得很簡單:\r\n\r\n
On a Xen Linode’s dashboard, you will see an “Upgrade to KVM” link on the right sidebar. It’s a one-click migration to upgrade your Linode to KVM from there. Essentially, our KVM upgrade means you get a much faster Linode just by clicking a button.
\r\n\r\n而且打算逐步淘汰掉 Xen:\r\n\r\n
New customers and new Linodes will, by default, still get Xen. Xen will cease being the default in the next few weeks. Eventually we will transition all Xen Linodes over to KVM, however this is likely to take quite a while. Don’t sweat it.
\r\n\r\n不過 Linode 還是沒支援更好的網路環境 (i.e. Private LAN),對於要架大型服務的人來說還是有技術障礙 :o", + "title": "Linode 提供 KVM-based hosting 服務" + }, + { + "id": "5836", + "body": "GitHub 在 2009 年就開發了一套監控各種 exception 的系統,叫做 Haystack:「Exception Monitoring and Response」。\r\n\r\n\"\"\r\n\r\n有些人是用 Airbrake,不過我們家 (KKBOX) 是用 Rollbar,目前是拿來收集各種前端的 javascript error,之後應該會把 PHP 也接上去吧。\r\n\r\n以前都要自己刻這些服務,現在也不用自己架,付錢掛上去用就好...\r\n\r\n順道一提的是,Rollbar 在台灣有代理商可以處理發票的事情,對於稅務處理上面方便一些。", + "title": "網站發生錯誤例外的監控" + }, + { + "id": "5837", + "body": "友人在 GitHub 上整理了各家 Engineering Blog:「Software Engineering Blogs」。\r\n\r\n除了官方的以外,也有列出很多個人的 Blog... 可以從裡面挑著訂 (拿 Feedly 訂),找時間來清一次...", + "title": "各家的 Engineering Blog" + }, + { + "id": "5838", + "body": "Let's Encrypt 是個 CA (Certificate Authority),打算免費提供 SSL certificate,致力於普及網路加密技術。\r\n\r\n由於 CA 是架構在稽核程序確保安全性,所以整個設置作業會非常長,最近總算快告一段落了。前幾天放出正式開放的時程:「Let's Encrypt Launch Schedule」。\r\n\r\n也就是 2015/07/27 會開放,但這個時間點暫時不會有任何 client 支援 (需要手動安裝他們的 root CA),而到了 2015/09/14 後,IdenTrust 會交叉簽名,屆時大多數的 client 都可以認得。", + "title": "Let's Encrypt 的進度" + }, + { + "id": "5839", + "body": "CloudFlare 宣佈在大阪建 PoP,將京阪神 (& 西側),以及名古屋地區納入服務範圍:「Osaka, Japan: CloudFlare's 35th data center」。\r\n\r\n人剛好就在大阪,實際測試發現還是有些狀況。手機的部份還是會導到東京交換,住的地方也還是到東京交換。看起來還有不少 DNS resolver 的 IP 資訊要調整。\r\n\r\n另外這也使得日本地區有完全異地備援的機制,如果東京機房出問題時可以透過大阪撐著,不需要跑到國外 (應該是香港 PoP)。", + "title": "CloudFlare 的大阪 PoP" + }, + { + "id": "5840", + "body": "AWS 對於帳號建議的管理方式是把 Root Account 封印,改開 AWS IAM,而這篇就是在介紹要如何偵測 Root Account 的 access key 被使用的情況 (一般來說應該連 access key 都不會生,這邊是放了一道警告機制防萬一):「How to Receive Notifications When Your AWS Account's Root Access Keys Are Used」。\r\n\r\n\"\"\r\n\r\nCloudTrail + CloudWatch 的組合技。", + "title": "當 AWS Root Account 的 Access Key 被使用時發信通知" + }, + { + "id": "5841", + "body": "在「wrk」這邊看到 wrk 這個工具:「Modern HTTP benchmarking tool」。\r\n\r\n利用 multi-threading 與 epoll/kqueue 撐出效能:\r\n\r\n
wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue.
", + "title": "支援多 CPU 的 ab:wrk" + }, + { + "id": "5844", + "body": "2011 年的時候寫了一篇「關掉 Mac OS X 上的平滑捲動...」,而昨天發現用了四年的 MBA 壞了,今天買了新的 MBPR 後發現原來的方法已經找不到對應的地方設定了...\r\n\r\n查到「Disable Smooth Scrolling in Mountain Lion」這篇的說明,用這個指令就可以關閉:\r\n\r\n
defaults write -g NSScrollAnimationEnabled -bool false
\r\n\r\n恢復的方法把 false 改成 true 即可。", + "title": "關閉 OS X Yosemite (10.10) 的平滑捲動" + }, + { + "id": "5845", + "body": "Flickr 說明了用 GPU 產生縮圖的技術:「Real-time Resizing of Flickr Images Using GPUs」。\r\n\r\n這邊可以看到是透過 apache module 再轉到 resize worker:\r\n\r\n\"\"\r\n\r\n成果就是讓縮圖的產生時間縮短很多,以 2048px 轉到 1600px 為例,速度快了 15 倍,即使是與 Yahoo 自己最佳化過的版本相比,也快了 10 倍:\r\n\r\n\"\"\r\n\r\n而 GPU-based 的架構每台 server 可以支撐 300 resizes/sec:\r\n\r\n
Equally noteworthy, at peak load, each resize server can perform over 300 resizes per second.
", + "title": "Flickr 用 GPU 產生縮圖" + }, + { + "id": "5846", + "body": "在「An hour with Safari Content Blocker in iOS 9」這邊提到了「An hour with Safari Content Blocker in iOS 9」這篇文章。\r\n\r\n文章裡提到:\r\n\r\n
They have super tiny 'close' buttons that are near impossible to hit, they follow you as you scroll and there is a slow loading full page interstitial that loads on every page refresh. Urgh! Anyway...
\r\n\r\n在這兩張圖 (Before & After) 說明了很多效果:\r\n\r\n\"\" \"\"\r\n\r\n而網頁讀取速度從 11 秒變成 2 秒...\r\n\r\n蘋果在 WWDC 2015 上的說明則可以在「Safari Extensibility: Content Blocking and Shared Links」這邊看影片。", + "title": "關於 iOS 9 的 Content Blocker" + }, + { + "id": "5847", + "body": "在 Hacker News Daily 上看到的服務:「CuttlePhish」。\r\n\r\nCuttlePhish 是個社交工程演練網站,提供演練測試 (Phishing as a Service),付費的方式也很有趣:\r\n\r\n
Twenty bucks, for up to 100 users. We charge per-batch of emails, (not per-email or per-click). You only pay if somebody clicks one of the links in our emails.
\r\n\r\n只有在有人點的時候收 USD$20... XD", + "title": "社交工程演練網站 CuttlePhish" + }, + { + "id": "5848", + "body": "Symfony 宣佈相容於 HHVM 了:「Symfony 2.3 achieves 100% HHVM compatibility」。\r\n\r\n\"\"\r\n\r\nHHVM 與 PHP 7 的競爭讓整個 PHP 社群受益不少...", + "title": "Symfony 的 100% HHVM compatibility" + }, + { + "id": "5849", + "body": "Cisco 買下 OpenDNS:「Cisco acquires cloud security company OpenDNS for $635M」。\r\n\r\n最主要的 DNS 業務被 Google 進來競爭後就沒有太多新的發展,算是善終?至少有個富爸爸可以像 SpamCop 那樣無虞...?", + "title": "Cisco 買下 OpenDNS" + }, + { + "id": "5850", + "body": "Facebook Messenger 在美國可以直接轉帳了 (銀行帳戶對銀行帳戶):「Facebook Messenger payments are now available to everyone in the US」。\r\n\r\n\"\"\r\n\r\n應該會有 SDK 放出來讓大家接起來用?", + "title": "Facebook Messenger 在美國開放轉帳功能" + }, + { + "id": "5851", + "body": "把本來的 20M/5M 升級到 100M/40M 了,測試可以看到速度算是有達到標準:\r\n\r\n\"\"\r\n\r\n透過兩條電話線供裝,可以透過 SmokePing 看出來 latency 高了一點:\r\n\r\n\"\"\r\n\r\n抓檔案快多了...", + "title": "總算是把光世代升級到 100M/40M 了..." + }, + { + "id": "5852", + "body": "在 Twitter 上遇到比較大張的圖片要自己展開,之前在 Google Chrome 上面是用 Previeweet 解決,但這個套件已經年久失修...\r\n\r\n研究了 Twitter 的 CSS 結構,看起來可以用 Stylish 處理掉,就寫了一個 style 上傳上去:「Twitter Expand Preview Image」。\r\n\r\n這樣看圖片方便多了...", + "title": "預設展開 Twitter 圖片的 Userstyle" + }, + { + "id": "5854", + "body": "在「Auto Scaling Update – New Scaling Policies for More Responsive Scaling」這邊提到了 Auto Scaling 的改善,其中我覺得最重要的就是這張圖了:\r\n\r\n\"\"\r\n\r\n可以以不同程度的情況來決定加機器的速度...", + "title": "更有彈性的 Auto Scaling" + }, + { + "id": "5856", + "body": "CloudFlare 大幅改善 zlib,使得速度相較原來的版本快了許多:「Fighting Cancer: The Unexpected Benefit Of Open Sourcing Our Code」。\r\n\r\n改變的部份主要是 CPU 指令集的特性,以及 longest-match function 的改善。可以看出不同的測試樣本 (corpus) 在壓縮率沒有變差的情況下,大幅改善了速度。\r\n\r\nCalgary corpus:\r\n\r\n\"\"\r\n\r\nCanterbury corpus:\r\n\r\n\"\"\r\n\r\nLarge corpus:\r\n\r\n\"\"\r\n\r\nSilesia corpus:\r\n\r\n\"\"\r\n\r\n速度快非常多,跟 Google 以壓縮率為導向而放出來的 zopfli 剛好是兩個極端:「Google 發表與 zlib/deflate 相容的壓縮程式,再小 5%...」。", + "title": "CloudFlare 加速 zlib library" + }, + { + "id": "5857", + "body": "AWS 推出了「Amazon API Gateway – Build and Run Scalable Application Backends」,使得 Scalable API 又前進了一步。\r\n\r\nAPI Gateway 可以直接將 HTTP Endpoint 接上 AWS Lambda 提供服務,並且也會自動接上 CloudFront,不過 CloudFront 不可選等級,目前看起來是最低的 Class 100,所以老問題還是沒解,如果不是用 168.95.1.1168.95.192.1,我們家的 IP 會被解去 ARN (Stockholm Arlanda Airport) XD\r\n\r\n
  4.|-- snuh-3201.hinet.net        0.0%    10    0.3   0.3   0.3   0.3   0.0\r\n  5.|-- tpdt-3011.hinet.net        0.0%    10    6.7   9.0   4.8  12.5   2.8\r\n  6.|-- r4101-s2.tp.hinet.net      0.0%    10    0.5   0.9   0.5   1.5   0.0\r\n  7.|-- r4001-s2.tp.hinet.net      0.0%    10    3.8   1.1   0.5   3.8   1.2\r\n  8.|-- r11-pa.us.hinet.net        0.0%    10  199.8 151.6 143.1 199.8  19.0\r\n  9.|-- las-bb1-link.telia.net     0.0%    10  140.6 142.6 140.5 159.7   6.0\r\n 10.|-- sjo-b21-link.telia.net     0.0%    10  141.6 142.1 141.5 146.1   1.2\r\n 11.|-- nyk-bb2-link.telia.net     0.0%    10  217.0 218.9 217.0 224.0   2.6\r\n 12.|-- kbn-bb4-link.telia.net     0.0%    10  305.7 305.8 305.7 306.2   0.0\r\n 13.|-- s-bb4-link.telia.net       0.0%    10  316.4 316.4 316.4 316.6   0.0\r\n 14.|-- s-b9-link.telia.net       10.0%    10  316.4 316.5 316.4 317.5   0.0\r\n 15.|-- amazon-ic-300293-s-b9.c.t 10.0%    10  311.5 311.5 311.4 311.5   0.0\r\n 16.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 17.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 18.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 19.|-- server-54-230-96-67.arn1. 10.0%    10  311.5 311.8 311.5 313.2   0.4
\r\n\r\n除了使用提供的 url 以外 (HTTPS Endpoint),也可以接上自己的 domain (以及對應的 SSL certificate):\r\n\r\n\"\"\r\n\r\n另外功能是產生 SDK,支援 iOSAndroid 以及 JavaScript 三種版本:\r\n\r\n\"\"\r\n\r\n這樣又簡化了不少東西...", + "title": "AWS 推出 Amazon API Gateway" + }, + { + "id": "5858", + "body": "OpenSSL 發佈了「Alternative chains certificate forgery (CVE-2015-1793)」安全性通報:\r\n\r\n
An error in the implementation of this logic can mean that an attacker could cause certain checks on untrusted certificates to be bypassed, such as the CA flag, enabling them to use a valid leaf certificate to act as a CA and \"issue\" an invalid certificate.
\r\n\r\n拿一個合法的 leaf certificate 當 CA root... 這下又有一票東西要更新了 @_@\r\n\r\n這次從 1.0.1n 到 1.0.2b 的版本會受到影響。\r\n\r\n
starting from version 1.0.1n and 1.0.2b
", + "title": "OpenSSL 的重大 bug:拿 Certificate 當 CA..." + }, + { + "id": "5859", + "body": "蘋果打算在 iOS 9 與 OS X El Capitan 引入 2FA 登入機制:「Apple Adds Two Factor Authentication to OS X and iOS」。\r\n\r\n在蘋果的「Two-Factor Authentication in iOS 9 and OS X El Capitan」有詳細說明。\r\n\r\n等實際推出的時候再來看看用起來如何...", + "title": "蘋果規劃在 iOS 9 與 OS X El Capitan 引入 2FA 登入機制" + }, + { + "id": "5860", + "body": "AWS 最近動作很多,預定在 2015/07/13 推出 AWS Device Farm,可以讓使用者直接租機器測試,價錢則是 USD$0.17/minute,或是租用一整個月 USD$250/month (一個裝置):\r\n\r\n
Pricing is based on device minutes, which are determined by the number of devices you use and the duration of your tests. AWS Device Farm comes with a free tier of 250 device minutes. After that you are charged $0.17 per device minute. As your testing needs grow, you can opt for our unmetered testing plan, which allows unlimited testing for a flat monthly fee of $250 per device.
\r\n\r\n等推出了之後再來研究看看,另外問問看公司內的同事來安排測試好了?", + "title": "AWS 推出 Device Farm (行動裝置測試平台)" + }, + { + "id": "5861", + "body": "這幾天資安領域最熱鬧的消息莫過於 Hacking Team 被黑之後洩漏出來的 400GB+ 的資料:「Hacking Team hacked, attackers claim 400GB in dumped data」、「Hacking Team hacked, attackers claim 400GB in dumped data」。\r\n\r\n洩漏的資料可以在 GitHub 上的「hackedteam」取得,或是透過 BitTorrent 取得 (i.e. 51603bff88e0a1b3bad3962614978929c9d26955)。\r\n\r\n烏雲上的「人手一份核武器 - Hacking Team 泄露(开源)资料导览手册」這篇寫得很完整了,現在的系統已經整合到這樣,於是要對這個人做任何事情都很容易:\r\n\r\n\"\"\r\n\r\n也因為這次的 leak 而使得不少軟體在修正 0day exploit...\r\n\r\n

This is the correct way to patch Flash pic.twitter.com/ZKgbu1Qkf0

— Jonathan Zdziarski (@JZdziarski) July 8, 2015
\r\n\r\n\r\n好精緻的核武...", + "title": "Hacking Team 被黑而洩漏出來的資料" + }, + { + "id": "5862", + "body": "前情提要:「Hacking Team 被黑而洩漏出來的資料」。\r\n\r\n在「How a Russian hacker made $45,000 selling a 0-day Flash exploit to Hacking Team」這邊提到了 Hacking Team 被黑而洩漏出來的信件,透漏了俄羅斯的人賣 Flash Exploit 給 Hacking Team 的過程。\r\n\r\n從內容就可以看出不同的賣法,包括「首次」與「獨家」都是可以談的條件:\r\n\r\n
1) The price is US$45,000.00 for the non-exclusive sale of any special discount for the \"first\" deal together will be greatly appreciated :)
\r\n\r\n然後有些東西是另外加密通信的:\r\n\r\n
The two men then exchanged PGP keys, which they used to exchange a number of encrypted messages, presumably one including how Toporov would like to be paid.
\r\n\r\n然後還有 invoice:\r\n\r\n\"\"\r\n\r\n而買了幾個建立關係後,後面還會有 discount:\r\n\r\n
Now your discount on the next buy is -5k and -10k is for a third bug.
\r\n\r\n最近應該會有不少人跳下去解讀洩漏出來的資料...", + "title": "Hacking Team 購買 Flash Exploit 的信件" + }, + { + "id": "5863", + "body": "在「預設展開 Twitter 圖片的 Userstyle」這邊利用 CSS 效果展開圖片,這次更新把多張圖片的縮圖也展開了:「Twitter Expand Preview Image」。\r\n\r\n連帶的,本來有裝「Photo Zoom for Twitter」就順便移除了...\r\n\r\n這次學到 unset 這個屬性:「unset - CSS | MDN」,現在 Google Chrome 也才 43,也就是在 Google Chrome 上是兩個版本前的 41 才支援的...", + "title": "更新 Twitter Expand Preview Image 樣式..." + }, + { + "id": "5865", + "body": "AWS Device Farm 正式啟用了,可以測 AndroidAmazonFire OS 手機:「AWS Device Farm – Test Mobile Apps on Real Devices」。\r\n\r\n有支援各種測試框架:\r\n\r\n\"\"\r\n\r\n也可以設定手機的狀態:\r\n\r\n\"\"\r\n\r\n然後各種 screenshot:\r\n\r\n\"\"\r\n\r\n以及測試時的資源使用狀態:\r\n\r\n\"\"\r\n\r\n價錢就如同之前提到的,USD$0.17/min 或是單隻包月 USD$250 (大約是測一整天的價錢):\r\n\r\n
Pricing is in units of device minutes, basically the duration of a single test run on a particular device. You get 250 minutes at no charge as part of a Free Trial; after that you pay $0.17 per device minute. You can also opt in to our unmetered testing plan; you can perform unlimited testing on any supported Android or FireOS device for a flat monthly fee of $250.
", + "title": "AWS 推出的 Device Farm" + }, + { + "id": "5866", + "body": "Hacking Team 的事情告訴我們,只能是能做的,都有人會包成 Total Solution 賣。\r\n\r\n洩漏出來的資料說明了 Hacking Team 在 2013 年幹的 BGP Routing Hijack:「How Hacking Team Helped Italian Special Operations Group with BGP Routing Hijack」。\r\n\r\n
The Wikileaks document described how the Italian ROS reached out to Hacking Team to work together on recovering the VPS server that ran on 46.166.163.175. In ROS terminology, the server was called “Anonymizer”. The emails also revealed that this server relays updates to another back end server called “Collector” from which ROS presumably recovers the targets’ data.
\r\n\r\n然後:\r\n\r\n
When we look at historical BGP data we can confirm that AS31034 (Aruba S.p.A) indeed started to announce the prefix 46.166.163.0/24 starting on Friday, 16 Aug at 2013 07:32 UTC. The Wikileaks emails outline how ROS complained to Hacking Team that the IP was reachable only via Fastweb but not yet through Telecom Italia, concluding not all RCS clients were able to connect back to the server immediately, since the prefix was not seen globally. BGP data further confirms this per the visualization below.
\r\n\r\n\"\"\r\n\r\n這些主要的 ISP 分別是:\r\n\r\n
AS12874 Fastweb\r\nAS6939 Hurricane Electric, Inc.\r\nAS49605 Reteivo.IT\r\nAS4589 Easynet\r\nAS5396 MC-link Spa
\r\n\r\n時間線:\r\n\r\n\"\"\r\n\r\n這也證明了「鎖 IP」的方法其實還是很危險的。", + "title": "Hacking Team 的 BGP Routing Hijack" + }, + { + "id": "5867", + "body": "在 Twitter 上看到「Cloud Kata | 台北 | 8月4日」這個消息:\r\n\r\n

Don't miss out our AWS Cloud Kata in Taipei on Aug 4 - register today! http://t.co/GQgzqrj07T pic.twitter.com/A5Aj7lTXOa

— Amazon Web Services (@awscloud) July 15, 2015
\r\n\r\n\r\n算是入門課程 (我的觀察),有興趣的人可以去報名...", + "title": "AWS 在台灣辦的課程 Cloud Kata" + }, + { + "id": "5868", + "body": "在 Twitter 上看到對 RC4 的新攻擊,可以直接攻擊 TLS 與 WPA-TKIP,沒有 workaround:「All Your Biases Belong To Us: Breaking RC4 in WPA-TKIP and TLS」。\r\n\r\n對 TKIP 可以在一個小時內打下來:\r\n\r\n
In practice the attack can be executed within an hour.
\r\n\r\n對於 TLS 則是 75 個小時有 94% 成功率,實際測試時只用了 52 個小時就順利攻下來:\r\n\r\n
We also attack TLS as used by HTTPS, where we show how to decrypt a secure cookie with a success rate of 94% using 9·227 ciphertexts. This is done by injecting known data around the cookie, abusing this using Mantin's ABSAB bias, and brute-forcing the cookie by traversing the plain-text candidates. Using our traffic generation technique, we are able to execute the attack in merely 75 hours.
\r\n\r\n
When we tested the attack against real devices, it took merely 52 hours to successfully perform the attack.
\r\n\r\n看起來唯一的解法是停用...", + "title": "新的 RC4 攻擊:實戰化" + }, + { + "id": "5869", + "body": "去年 (2014) 十一月時 AWS 推出了 DynamoDB Streams,像是 RDBMS 裡 trigger 的東西,不過當時還沒這麼方便,而且也是 preview 階段:「Sneak Preview – DynamoDB Streams」。\r\n\r\n
Once you enable it for a DynamoDB table, all changes (puts, updates, and deletes) made to the table are tracked on a rolling 24-hour basis.
\r\n\r\n而這個功能現在總算是開放讓一般人使用了,這次可以配合 AWS Lambda 一起使用,官方用了「DynamoDB Streams + Lambda = Database Triggers」的說明來解釋:「DynamoDB Update – Triggers (Streams + Lambda) + Cross-Region Replication App」。\r\n\r\n另外這次也推出了 Cross-Region DynamoDB Replication,其實就是透過組合拳串起來:\r\n\r\n
This app runs on AWS Elastic Beanstalk and makes use of the EC2 Container Service, all launched via a AWS CloudFormation template.
", + "title": "DynamoDB Streams..." + }, + { + "id": "5871", + "body": "在「Black-market archives」這篇給出了一份很寶貴的資料,是來自於 Tor hidden service 上的 Dark Net Markets (DNM)。\r\n\r\n這份資料涵蓋了 2013 到 2015 年的各種紀錄:\r\n\r\n
From 2013-2015, I scraped/mirrored on a weekly or daily basis all existing English-language DNMs as part of my research into their usage, lifetimes/characteristics, & legal riskiness; these scrapes covered vendor pages, feedback, images, etc.
\r\n\r\n大約壓縮後 50GB 的資料:\r\n\r\n
This uniquely comprehensive collection is now publicly released as a 50GB (~1.6TB) collection covering 89 DNMs & 37+ related forums, representing <4,438 mirrors, and is available for any research.
\r\n\r\nTor 的 hidden service 應該只會愈來愈流行,初期的這些資料會讓後人有很多題材可以分析...", + "title": "網路黑市的歷史資料" + }, + { + "id": "5872", + "body": "美國的 IPv4 位置配完了:「US exhausts IPv4 addresses」,其他的地區也差不多了。\r\n\r\n然後愈來愈多網站推 IPv6 了,尤其是 CloudFlare 以吃到飽為號召 (固定金額不限流量),所以有很多服務都掛在上面。另外流量大的應該是 YouTube 吧。\r\n\r\n不過 routing 好像還有得調,尤其是亞洲地區...", + "title": "美國的 IPv4 位置配完了" + }, + { + "id": "5873", + "body": "在「Improved Server Defaults in 5.7」這篇文章裡面講了 MySQL 5.7 預設值有那些是朝好的方向演進,雖然我覺得有些有風險在...\r\n\r\n其中這個還蠻特別的:\r\n\r\n
innodb_strict_mode — This brings InnoDB in line with our overall goal of making MySQL behavior more strict by default, thus helping you ensure the integrity, validity, and durability of your data. This also falls in line with a parallel goal of making MySQL more SQL standard compliant by default.
\r\n\r\n可以參考「Making strict sql_mode the default」這篇文章的說明,當你把 -1 塞到 UNSIGNED INT 欄位時會直接發生錯誤,而非 fallback 到 0。\r\n\r\n然後是 InnoDB 熱機機制的改善,以及檔案格式預設值的改變。", + "title": "MySQL 5.7 預設值的改善" + }, + { + "id": "5874", + "body": "Bocker 這個專案的標語是「Docker implemented in 100 lines of bash」。\r\n\r\n有研究過 Docker 實作的人會了解到,最基本版的 Docker 其實最難的是那層可疊的 Filesystem,其他的主要是拿現成的東西出來包裝。\r\n\r\n而 Bocker 就是把 btrfs 拿出來用,解決 Layered Filesystem 的問題。而週邊目前有些東西要自己設定而已,其實完成度不低?\r\n\r\n相當打臉 XDDD", + "title": "Bocker:用 bash 與 btrfs 疊出來的 Docker" + }, + { + "id": "5875", + "body": "剛剛看到 Amazon CloudWatch 的新功能:「New Amazon CloudWatch Action – Reboot EC2 Instance」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n簡而言之就是讓 CloudWatch 偵測到問題時重開 instance:「有問題?重開治百病!」XDDD", + "title": "Amazon CloudWatch 推出「重開治百病」服務..." + }, + { + "id": "5879", + "body": "在 Google Chrome 上之前是透過 WebRTC Block 之類的軟體阻擋網站透過 WebRTC 取得 Local IP address 的功能,現在則內建在 uBlock₀ 內了。\r\n\r\n\"\"\r\n\r\n在「You can block WebRTC from leaking your IP now in uBlock Origin」這邊看起來是這個月月初 (2015 年 7 月) 開發出來的功能。\r\n\r\n用 WebRTC Leaktest 交叉測試可以發現 Public IP address 的部份,目前測過的套件都擋不下來,但 Private IP address 的部份都有順利擋下來。\r\n\r\n又可以少裝一個套件了...", + "title": "uBlock₀ 提供阻擋 WebRTC 取得 Local IP address 的功能" + }, + { + "id": "5880", + "body": "最早的時候是用 Dropbox 同步檔案,但 Dropbox 的空間有限,加上有不少隱私疑慮,後來只拿他放一些簡單的東西... (像是「世界迷霧」的匯入功能)\r\n\r\n然後前陣子則是用 BitTorrent Sync,不過 Sync 2.0 版強制要 trial:「Disable Pro Trial In Sync 2.0?」,後來就決定找替代品了。\r\n\r\n這次找的替代品是用 Go 寫的 Open Source 的方案:Syncthing,常用的幾個平台都有支援,包括 Windows、Mac 以及我自己平常用的桌機環境 Linux。\r\n\r\n先講概念性的部份,Syncthing 的架構與其他同步軟體不太一樣,最大的差異在於兩邊都需要輸入 Device ID 才能建立連線。另外目前 GUI 的部份只有支援 WebUI,像這樣:\r\n\r\n\"\"\r\n\r\n在安全性的部份,Syncthing 則是使用 3072 bits 的 RSATLS 1.2 建立連線,Device ID 則是用 Public Key 產生出 SHA-256 的值再用 Base32 表示 (所以看起來很長)。(參考「Understanding Device IDs」以及「Block Exchange Protocol v1」)\r\n\r\n也因為使用 TLS 1.2,所以傳輸時必須有一邊是可以接受連線的,而 Syncthing 目前有支援 UPnP,所以大多數家用的 NAT 環境應該是沒問題。\r\n\r\n安裝的部份,Ubuntu 可以透過 APT 安裝並且跟著更新,Windows 目前看起來是把 zip 抓下來丟著比較麻煩一點,不過還可以接受。\r\n\r\n另外常見到的功能是希望開機時自動啟動。可以參考官方寫的「Starting Syncthing Automatically」這篇,令外 Windows 上可以參考「SyncthingTray」這個工具。\r\n\r\n\"\"\r\n\r\n大約用了一個禮拜,目前用起來還不錯...", + "title": "用 Syncthing 同步檔案 (取代 Dropbox 與 BitTorrent Sync)" + }, + { + "id": "5882", + "body": "在 Plurk 上的 embed thumb 功能 (我不知道怎麼稱呼比較好) 讓我沒辦法用 Ctrl 加上滑鼠左鍵一路把圖片點開,所以就想寫個 Greasemonkey script 搞定他...\r\n\r\n

所以重點是 jQuery('body').off('click', '.pictureservices, .videoservices, .ogvideo, .iframeembed, .plink'); 關掉...

— Gea-Suan Lin (@gslin) July 26, 2015
\r\n\r\n\r\n最一開始的想法是把事件幹掉 (也就是 .pictureservices, .videoservices, .ogvideo, .iframeembed, .plink 這串),所以第一版的時候是直接用 unsafeWindow.jQuery 把事件 off() 掉,但後來想一想這樣有幾個問題:\r\n\r\n\r\n\r\n所以就改成現在這個版本,直接在 body 上攔截,擋下對這五個 class 的 click event:「Disable Plurk multimedia thumb functuion」。\r\n\r\n也許改寫 thumb function 本身會更好,不過先這樣吧 XD", + "title": "關閉 Plurk 的 embed thumb 功能" + }, + { + "id": "5883", + "body": "今天在 Facebook 上才看到 chihchun 貼的資料,在 Ubuntu 14.04 之後都有 Noto Sans CJK 可以用:\r\n\r\n

sudo apt-get install fonts-noto-cjk #

Posted by 蔡志展 on Sunday, July 26, 2015
\r\n\r\n這邊提到的是 fonts-noto-cjk,不過我實際測試發現裝 fonts-noto 會比較好:前者預設值很細 (Light),後者包括了各種粗細 (我自己是用 DemiLight)。\r\n\r\n這樣又少了一個要自己管理的東西了...", + "title": "Ubuntu 內建的 Noto Sans CJK..." + }, + { + "id": "5884", + "body": "面對面的會議記錄,在第一天的會議記錄「2015-06-24 Face-to-Face Meeting 35 Minutes」的一開頭就看到 CNNIC 申請成為 CA/Browser Forum 的成員。\r\n\r\n目前有兩個疑慮,第一個是執照的問題:\r\n\r\n
1. They don’t appear to be licensed in China (BRs requires that a CA be licensed in the country they do business if a licensing scheme is in place) and
\r\n\r\n第二個則是同時具有 CA 以及 ccTLD 註冊者的身份:\r\n\r\n
2. they appear to be a registrar for a TLD as well as a CA.
\r\n\r\n再來是第二天開頭就看到在討論 EV Wildcard 的問題 (目前是不被允許的),以及 Domain Validation 的問題。結尾則可以看到中華電信將會主辦 2017 的部份?不是很確定...\r\n\r\n
Host 2017\r\n\r\nChunghwa Telecom February or October (Taiwan)
", + "title": "CNNIC 申請成為 CA/Browser Forum 成員" + }, + { + "id": "5885", + "body": "AWS 宣佈正式開放所有客戶使用 Amazon Aurora:「Now Available – Amazon Aurora」。不過也只是原來支援的三個地區而已:\r\n\r\n
Today I am happy to announce that Amazon Aurora is now available for use by all AWS customers, in three AWS regions.
\r\n\r\n
We are launching in the US East (Northern Virginia), US West (Oregon), and Europe (Ireland) regions, and will expand to others over time.
\r\n\r\n比較特別的是效能上的宣稱:\r\n\r\n
When we first announced Amazon Aurora we expected to deliver a service that offered at least 4 times the price-performance of existing solutions. Now that we are ready to ship, I am happy to report that we’ve exceeded this goal, and that Amazon Aurora can deliver 5x the price-performance of a traditional relational database when run on the same class of hardware.\r\n\r\nIn general, this does not mean that individual queries will run 5x as fast as before (although Amazon Aurora’s fast, SSD-based storage certainly speeds things up). Instead, it means that Amazon Aurora is able to handle far more concurrent queries (both read and write) than other products. Amazon Aurora’s unique, highly parallelized access to storage reduces contention for stored data and allows it to process queries in a highly efficient fashion.
\r\n\r\n也許之後有機會測試的專案可以測看看...", + "title": "Amazon Aurora 宣佈正式開放" + }, + { + "id": "5886", + "body": "看到 Amazon EC2 可以跨區取最低價的 Spot Instance 了:「Spot fleet launches Spot instances in the lowest priced Availability Zone」。\r\n\r\n先前必須指定 AZ (Availability Zone),現在則可以讓系統更動態選擇了...\r\n\r\n以後有沒有機會讓系統透過 AWS Lambda 來決定定價策略?", + "title": "跨區決定最低價的 Spot Instance" + }, + { + "id": "5887", + "body": "Backblaze 這次丟出了 2015 年上半年的數據,標題雖然是寫 2015Q2,但文章裡有半年的統計資料:「Hard Drive Reliability Stats for Q2 2015」。\r\n\r\n\"\"\r\n\r\n雖然都知道某公司的產品故障率偏高,但這樣是有仇嗎 XDDD\r\n\r\n這是統計資料:\r\n\r\n\"\"\r\n\r\n另外是 4TB 的歷史紀錄,右邊兩家的數字有點少啊,不過 45 顆硬碟壞一顆不就 2.x% 了嗎,這數字到底是怎麼出來的啊:\r\n\r\n\"\"", + "title": "Backblaze 2015 年上半年的硬碟穩定度報告出爐了... (又黑了某公司一把)" + }, + { + "id": "5888", + "body": "在「Microsoft's Windows 10 launch is going to strain CDNs, already passed 10 Tbps」這邊看到 Microsoft 推出 Windows 10 已經吃掉 10Tbps 的 capacity 了。\r\n\r\n預定還會吃到 40Tbps,就當作八卦消息看一看好了:\r\n\r\n
Streaming Media is citing internal sources and is saying that Microsoft has reserved up to 40 Tbps with all of the key CDNs which is a massive amount of bandwidth. As of July 28th at 1PM ET, Microsoft is said to already be consuming over 10 Tbps and seeing that all regions are not yet online for deployment, it's only going to go higher.
\r\n\r\n是個熱鬧的祭典 XD", + "title": "Microsoft Windows 10 對 CDN 的影響" + }, + { + "id": "5889", + "body": "在「Amazon redshift optimizing performance 20150721」這篇給了不少效能調校的細節,這邊的效能調校都是針對多機器時的設計規劃 (multi nodes)。\r\n\r\n本文圖多並且穿插大量文字,但應該是可以輕鬆讀。我從中選了重點投影片出來,在讀完這篇導讀後建議再點進去從頭讀一次,會對 Amazon Redshift 有更多了解。\r\n\r\n第一個主題是資料的放置方式,有這幾種:\r\n\r\n\"\"\r\n\r\n中間還有好幾張投影片是說明測試資料的類型,測試出來的結果可以看到效能還是差很多:\r\n\r\n\"\"\r\n\r\n再來是講資料不平均當然會造成沒辦法充分運用機器效能:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n然後給了一些建議:\r\n\r\n\"\"\r\n\r\n接下來是講 sort keys 有三種,其中 interleaved 很特別,有興趣的可以研究看看,不然 compound keys 應該是已經很好用了:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n接下來是每個欄位都可以設定壓縮格式,可以看到壓縮的部份如果設計的好,效能也會上升不少:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n然後原始資料可以儘量拆成多個檔案再匯入 Amazon Redshift,這樣可以加速進行:\r\n\r\n\"\"\r\n\r\n最後則是 VACUUM 的操作介紹,如果可以允許完整 deep copy 的話會更好,因為這算是最乾淨的作法:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n是份很有用的投影片 :p", + "title": "Amazon Redshift 的效能調校" + }, + { + "id": "5890", + "body": "剛剛在 Twitter 上先看到了:「Coming Soon – AWS Device Farm Support for iOS Apps」。\r\n\r\n
We plan to launch support for iOS on August 4, 2015 with support for the following test automation frameworks:
\r\n\r\n應該是有跟蘋果合作吧,感覺會是成千上萬隻的量在跑... XD", + "title": "AWS Device Farm 將支援 iOS 裝置" + }, + { + "id": "5891", + "body": "在 AWS 放出的「Amazon redshift migration and load data 20150722」這份投影片則是解釋了 data ingestion 時的建議行為。\r\n\r\n\"\"\r\n\r\n其實這張就道盡目前 Amazon Redshift 架構上的最佳作法,也就是每次都 TRUNCATE 掉重新 import。後面的所有方法其實都是 workaround,效能不會太好... XD\r\n\r\n另外後面是介紹倒資料進 Amazon Redshift 的方式,官方是還蠻推 AWS Data Pipeline,但你用過就會知道有多麻煩與痛苦...", + "title": "Amazon Redshift 的 Data Ingestion" + }, + { + "id": "5892", + "body": "GitHubGit 2.5 寫的介紹:「Git 2.5, including multiple worktrees and triangular workflows」。\r\n\r\n
Please note that the worktree feature is experimental. It may have some bugs, and its interface may change based on user feedback. It's not recommended to use git worktree with a repository that contains submodules.
\r\n\r\n另外效能上也有改善:\r\n\r\n
Git 2.5 includes performance improvements aimed at large working trees and working trees stored on networked filesystems (e.g., NFS):
", + "title": "Git 2.5 的 worktree" + }, + { + "id": "5894", + "body": "在「Get help editing Wikipedia with the new “Co-op” mentorship program」這邊看到英文版維基百科引入了導師的制度。\r\n\r\n以往比較資深的編輯都是直接修正,或是到新手的 Talk 頁上提出建議,現在則是引入了導師的制度,從而得到了不錯的成果。\r\n\r\n首先是編輯次數的成長:\r\n\r\n
Mentored editors were more productive than compared to editors who were not mentored. During the pilot, mentored editors made 7 times as many edits (35 vs. 4.5 in median edits). They also edited more articles during the pilot (10 vs. 3 on average).
\r\n\r\n以及參與度的提昇:\r\n\r\n
68% of mentored editors remained active in April 2015, the month after the end of pilot, whereas only 22% of non-mentored editors remained active.
\r\n\r\n更快速的參與:\r\n\r\n
Editors using the Co-op waited far less time for mentorship to begin (12 hours) compared to the only other mentorship space on en.wiki, Adopt-a-user (4 days).
\r\n\r\n以及長遠的品質提昇:\r\n\r\n
Despite being geared toward newer editors, the Co-op was utilized by more experienced editors who reported having positive and constructive experiences through mentorship.
\r\n\r\n不知道中文版什麼時候可以導入 :p", + "title": "Wikipedia 引入 Mentor 制度" + }, + { + "id": "5895", + "body": "OpenSSL 宣佈了要更換 License 的計畫:「License Agreements and Changes Are Coming」。\r\n\r\n
Our plan is to update the license to the Apache License version 2.0.
\r\n\r\n不過這次的是以 CLA 的形式來做,不知道有多少人會簽...", + "title": "OpenSSL 打算要換成 Apache License" + }, + { + "id": "5896", + "body": "兩個禮拜前 GitHub 公佈的消息,透過 OpenStreetMap 的圖資,來強化 GitHub 上 GeoJSON 的呈現:「Improving map data on GitHub」。\r\n\r\n官方給了個 GIF 動畫展示說明:\r\n\r\n\"\"", + "title": "GitHub 上的 GeoJSON 資料將會使用 OpenStreetMap 的資料呈現" + }, + { + "id": "5897", + "body": "也是兩個禮拜前的新聞,在「OpenDNS BGP Stream Twitter Feed」這邊提到了 BGPmon 將會推出 BGP Stream 服務,將偵測到的 BGP 異常變化發到 Twitter 上。\r\n\r\n其中 BGPmon 在幾個月前被 OpenDNS 併購 (2015 年 3 月),而 Cisco 則在上上個月底併購了 OpenDNS (2015 年 6 月)。而在過幾天的 DefCon 23 上將會透露更多細節。\r\n\r\n前陣子 Hacking Team 洩漏的資料中就用到了 BGP hijack 來取回控制權:\r\n\r\n
That nugget that emerged from the 400 Gb of stolen Hacking Team data posted online where Italian law enforcement used Hacking Team’s Remote Control System monitoring software to regain control over a number IP addresses it was watching that were already infected with Hacking Team software by hijacking BGP routes in order to redirect traffic and regain control over a target’s machines.
\r\n\r\n除了示警外,另外一方面 BGP 上的簽名技術也愈來愈重要了,只是不知道最終會怎麼做...", + "title": "BGPmon 推出 BGP Stream 警告異常的 BGP 流量劫持" + }, + { + "id": "5898", + "body": "有在追蹤 LinodeTwitter @linode 就會知道前陣子 Linode 一直在測試德國機房,而最近正式公開啟用了:「Introducing Linodes in Frankfurt!」。\r\n\r\n拿 HiNetspeedtest.frankfurt.linode.com 測試有兩種不同的結果。\r\n\r\n一種是 IPv4 的,會走 Sprint 交換,在美國轉入 TeliaSonera 後,一路到德國 Linode 機房。扣掉本地端的 latency 大約是 320ms。\r\n\r\n另外一種是 IPv6,HiNet 會跟 Hurricane Electric 交換後一路跑 Hurricane Electric 骨幹,在德國進入 Linode 機房,一樣扣掉本地端的 latency 大約是 285ms,意外的快了不少?\r\n\r\n然後是 Linode 的廣告詞:\r\n\r\n
Frankfurt is an important financial and Internet hub for Europe, with a third of Europe’s Internet traffic going through it. Frankfurt is home to DE-CIX, the largest Internet exchange in the world in terms of traffic. DE-CIX will no doubt provide abundant peering access opportunities for us, over time.
\r\n\r\n不知道有沒有機會再加開其他亞洲的機房... (東京滿了...)", + "title": "Linode 德國機房啟用" + }, + { + "id": "5899", + "body": "Percona 的「InnoDB checkpoint strikes back」這篇提到了 InnoDB 的 checkpoint 問題一直困擾著 MySQL 使用者,但其中讓我注意到的是,文中提到了 RocksDB 沒有這個困擾:\r\n\r\n
Interestingly enough, RocksDB, because it has a different architecture (I may write on it in future, but for now I will point to RocksDB Wiki), does not have this problem with checkpoints (it however has its own background activity, like level compactions and tombstone maintenance, but it is a different topic).
\r\n\r\n我記得 Facebook 的人有用 RocksDB 掛到 MySQL 上:「RocksDB Storage Engine for MySQL」,會整合到 WebScaleSQL 裡嗎?還是單純拋出來看看?:o", + "title": "InnoDB 的 checkpoint 問題,以及 RocksDB..." + }, + { + "id": "5901", + "body": "在「CloudWatch Logs Subscription Consumer + Elasticsearch + Kibana Dashboards」這篇文章裡,AWS 官方給了很棒的 screenshot,用一堆服務包起來後可以得到這樣的效果,提供給有興趣的人:\r\n\r\n\"\"", + "title": "把 AWS 的紀錄串起來倒進 Elasticsearch,用 Kibana 呈現" + }, + { + "id": "5902", + "body": "在「Amazon S3 Introduces New Usability Enhancements」這邊提到了 Amazon S3 的兩個改善。\r\n\r\n第一個是業務面的改善,以前應該是開 support ticket 請人調整 S3 bucket 數量上限,現在則是可以直接透過界面申請?(沒有遇過瓶頸,不知道以前是不是在界面上看不到...)\r\n\r\n第二個才是重頭戲:Read-after-write Consistency。\r\n\r\n
With this enhancement, Amazon S3 now supports read-after-write consistency in all regions for new objects added to Amazon S3.
\r\n\r\n也就是說,Amazon S3 現在保證「新增的 object」「可以在建立後馬上被讀取」。之前還沒修正前,這個問題有多嚴重呢?可以看 2014 年時「Netflix 對 S3 的 Eventually Consistency 的補強...」這邊 Netflix 在跑 PigHive 遇到的問題。\r\n\r\n\"\"\r\n\r\nNetflix 這邊舉的例子是兩個 Pig cluster 在跑,其中 Pig-2 需要 Pig-1 跑出來的資料,在這次公告前,如果 Pig-1 的資料寫回 Amazon S3 時不會馬上出現,那麼 Pig-2 就會拿不完整的資料執行:\r\n\r\n
Pig-2 is activated based on the completion of Pig-1 and immediately lists the output directories of the previous task. If the S3 listing is incomplete when the second job starts, it will proceed with incomplete data.
\r\n\r\n而現在總算是保證新的 object 可以馬上被讀取,所以 Netflix 可以利用一個檔案列出所有的 filename,確保知道所有的檔案名稱... (LIST 指令還是 eventually consistent,所以這部份還是要自己處理)", + "title": "Amazon S3 的改善" + }, + { + "id": "5903", + "body": "AWS 前幾天宣佈將在 8/4 發表 AWS Device Farm 支援 iOS 的消息,剛剛看到了:「AWS Device Farm adds support for iOS – Test your iOS, Android and Fire OS apps against real devices in the AWS Cloud」。\r\n\r\n在「Device List」這邊可以看到所有支援的機種,iOS 的部份包括了 iPadiPhoneiPod Touch,看起來只有比較新的機種有支援...", + "title": "AWS Device Farm 支援 iOS Device 了" + }, + { + "id": "5904", + "body": "nginx 宣佈了 Early Alpha 的 HTTP/2 支援:「Announcing an Early Alpha Patch for HTTP/2」。\r\n\r\n除了警告這是早期版本不應該用在 production 上,另外也說明了目前的 patch 會讓 SPDY 失效:\r\n\r\n
Applying this patch removes the SPDY module from the NGINX codebase and replaces it with the HTTP/2 module. After applying this patch, you can no longer configure NGINX to use SPDY.
\r\n\r\n而在這之後也不會讓 HTTP/2 與 SPDY 同時並存:\r\n\r\n
This will also be the case for the production-ready release of the HTTP/2 implementation in both NGINX and NGINX Plus. SPDY is being deprecated by Google in early 2016, so there is no need to support both.
\r\n\r\n但從 HTTP/2 的支援度SPDY 的支援度來看,行動裝置都還不支援 HTTP/2,但 iOS 8.4 以及 Android 3+ 都已經支援 SPDY 了,這樣看起來非常的傷啊...\r\n\r\n不知道到年底會有什麼其他解決方案出現...", + "title": "nginx 宣佈了 Early Alpha 版本的 HTTP/2 支援" + }, + { + "id": "5905", + "body": "Amazon Simple Workflow 先前會需要開一台機器起來做事,現在則可以透過 AWS Lambda 來處理了:「Trigger AWS Lambda Functions Using Amazon Simple Workflow」。\r\n\r\n這樣有兩個好處,一個是 AWS Lambda 啟動速度快太多,最慢應該是在數秒內,相較於透過 Amazon EC2 的啟動快太多。\r\n\r\n另外一個當然是成本考量,開一台機器的成本還是要算成一個小時,而 AWS Lambda 是以 100ms 計費。如果做的事情很少,用 AWS Lambda 的成本低太多。\r\n\r\n對於輕量級的處理來說算是個很棒的改善... 當然本來就是要轉檔之類吃大量 CPU 的,還是要開機器比較好。", + "title": "Amazon SWF 可以透過 AWS Lambda 做事了..." + }, + { + "id": "5906", + "body": "Percona 的人以現在的觀點來看 mysql_query_cache:「The MySQL query cache: Worst enemy or best friend?」。\r\n\r\n起因主要也是懷疑 query cache 是 global mutex 在現在的硬體架構 (主要是 CPU 數量成長) 應該是個負面的影響,但不確定影響多少:\r\n\r\n
The query cache is well known for its contentions: a global mutex has to be acquired for any read or write operation, which means that any access is serialized. This was not an issue 15 years ago, but with today’s multi-core servers, such serialization is the best way to kill performance.
\r\n\r\n這邊就有點怪了,PK search 應該是個位數 ms 等級才對 (一般 EC 網站的資料量都應該可以 memory fit),不知道他是怎麼測的:\r\n\r\n
However from a performance point of view, any query cache hit is served in a few tens of microseconds while the fastest access with InnoDB (primary lookup) still requires several hundreds of microseconds. Yes, the query cache is at least an order of magnitude faster than any query that goes to InnoDB.
\r\n\r\nanyway,他實際測試兩個不同的 configuration,首先是打開 query cache 的:\r\n\r\n\"\"\r\n\r\n再來是關閉 query cache 的:\r\n\r\n\"\"\r\n\r\n測試的方式在原文有提到,這邊就不抄過來了。測試的結果可以看到關閉 query cache 得到比較好的 thoughput:\r\n\r\n
Throughput scales well up to somewhere between 10 and 20 threads (for the record the server I was using had 16 cores). But more importantly, even at the higher concurrencies, the overall throughput continued to increase: at 20 concurrent threads, MySQL was able to serve nearly 3x more queries without the query cache.
\r\n\r\n跟預期的差不多,硬體的改變使得演算法也必須跟著改,不然就會遇到問題...", + "title": "Percona 對 mysql_query_cache 的測試 (以 Magento 為例)" + }, + { + "id": "5907", + "body": "在 Baron Schwartz 的 blog 上看到「An Outline for a Book on InnoDB」這篇文章,作者因為被 InnoDB 所驚嘆而想要寫一本書探討 InnoDB 的設計:(因為雖然複雜,但試著將這些複雜的東西隱藏起來,不讓使用的人暈頭轉向)\r\n\r\n
Years ago I pursued my interest in InnoDB’s architecture and design, and became impressed with its sophistication. Another way to say it is that InnoDB is complicated, as are all MVCC databases. However, InnoDB manages to hide the bulk of its complexity entirely from most users.
\r\n\r\n
I decided to at least outline a book on InnoDB. After researching it for a while, it became clear that it would need to be a series of books in multiple volumes, with somewhere between 1000 and 2000 pages total.
\r\n\r\n作者還沒開始寫,不過 outline 已經先列出來了:\r\n\r\n
I did not begin writing. Although it is incomplete, outdated, and in some cases wrong, I share the outline here in case anyone is interested. It might be of particular interest to someone who thinks it’s an easy task to write a new database.
\r\n\r\n這篇文章的重點在這些 outline,即使沒有寫成書,這些 outline 也讓你知道要可以朝什麼方向研究...\r\n\r\n因颱風延期的「COSCUP 2015 Hands-on【妙生活】MySQL 入門」剛好可以 review 這邊的 outline 來修正一些主題。", + "title": "InnoDB 的各種枚枚角角" + }, + { + "id": "5909", + "body": "前幾天在其他地方看到,剛剛在 Zite 上又翻到:「Use this handy command line tool to check if your code works across browsers」。\r\n\r\n\"\"\r\n\r\n官方網站在「sgentle/caniuse-cmd」這邊,可以透過 npm install caniuse-cmd 安裝,或是加上 -g (npm install -g caniuse-cmd) 裝到系統裡。", + "title": "Command Line 界面的 caniuse" + }, + { + "id": "5910", + "body": "Tony Hunt 在「We’re struggling to get traction with SSL because it’s still a “premium service”」這篇文章裡抱怨了目前 web 要朝向 HTTPS only 還很遠,甚至還酸了一下 Let's Encrypt 冨樫問題:\r\n\r\n\"\"\r\n\r\n可是東尼... 你的站也沒上 HTTPS 啊 :/\r\n\r\n順便整理一下目前 HTTPS 技術發展出來的優點:\r\n\r\n\r\n\r\n現在網站的 best practice 是 HTTPS + HTTP/2,對 SEO 好、速度又快 (這兩個對營收有影響),而另外也可以增加安全性 (對聲譽有幫助)。", + "title": "HTTPS 的進展" + }, + { + "id": "5911", + "body": "CloudFlare 宣佈在中東啟用四個機房:「Now serving the Middle East: 4 new data centers, partnerships」。\r\n\r\n\"\"\r\n\r\n據 comment 提到的,有些人本來是連到新加坡機房,現在在中東直接交換,速度上快了不少。\r\n\r\n\"\"\r\n\r\n所以現在看起來是亞洲與非洲的彈幕不夠...?", + "title": "CloudFlare 在中東弄了四個機房..." + }, + { + "id": "5912", + "body": "在「Save memory by switching to generators」這邊提到了 PHP 5.5 開始提供的 Generators...\r\n\r\n由於其他的程式語言有 Generators 的觀念,其實不會太難了解...\r\n\r\n不過比較大的問題是,資料庫的查詢操作用 Generators 會把效能壓力壓回資料庫:因為資料庫需要把結果 buffering 在資料庫端,如果不趕快吐出去就是要找記憶體放... 也因此,比較常見到的解法是不要用 Generators。(因為 web 與 application 端相較於資料庫端,比較容易 scale)\r\n\r\n後來用 Generators 比較多的印象中還是 filter 類的應用吧,Python 這邊的東西有陣子沒看了 :o", + "title": "PHP 5.5 的 Generators" + }, + { + "id": "5913", + "body": "從 2005 年的「從零開始」這篇到現在也寫了十年,記了三千多篇雜事:\r\n\r\n\"\"\r\n\r\n如果從「開場:為什麼用 WORDPRESS」這邊開始的話就十一年了... (更早當初用 MovableType 寫的,隨著社團消失從無考古起了 XD)", + "title": "寫了十年..." + }, + { + "id": "5914", + "body": "Ubuntu 的人分享了 Netflix 如何在 Amazon EC2 上調整 Ubuntu 14.04:「How Nelix tunes Ubuntu on EC2」。\r\n\r\n影片出自「AWS re:Invent 2014 | (PFC306) Performance Tuning Amazon EC2 Instances」。\r\n\r\n可以看到各種參數偏向降低跨出 VM 時的行為 (CPU context switch、調整 Memory + Swap、降低 I/O 次數),我猜對於其他的虛擬機應該也應該有效...", + "title": "Netflix 在 Amazon EC2 上跑 Ubuntu 14.04 的參數" + }, + { + "id": "5915", + "body": "Adobe Typekit 的官方 blog 放出說明了:「Well, that was just awful: Details on yesterday’s font serving outage」。\r\n\r\n可以參考 Hacker News 上「AWS S3 Outage」的討論,由於 us-east-1 算是 AWS 服務的起源,再加上地理位置的關係 (以歐美服務為主同時考量會放到 us-east-1),所以有一堆網路服務在這區跑,情況還蠻慘烈的...\r\n\r\n我記得 Typekit 是使用 EdgeCast 的服務 (i.e. use.typekit.net 這個網址),雖然很久沒用 EdgeCast 了,不過我記得應該是有 origin failover 的功能 (可以設多個 origin server),看起來是沒這樣設計...", + "title": "Amazon S3 (美東區) 前幾天的狀況導致 Adobe Typekit 服務故障的說明" + }, + { + "id": "5916", + "body": "這應該是昨天很熱鬧的新聞,也不難看出 Oracle 對資安的心態。\r\n\r\n參考「Oracle to 'sinner' customers: Reverse engineering is a sin and we know best」這篇報導,Oracle CSO Mary Ann Davidson 發表的原文已經被刪除,但這是 internet 時代,當然有完整的備份下來:「No, You Really Can’t (Mary Ann Davidson Blog)」。\r\n\r\n提供給 ZDNet 報導的補充是:\r\n\r\n
The security of our products and services has always been critically important to Oracle. Oracle has a robust program of product security assurance and works with third party researchers and customers to jointly ensure that applications built with Oracle technology are secure. We removed the post as it does not reflect our beliefs or our relationship with our customers.
\r\n\r\nOracle 的公關能力一如往常的優秀!", + "title": "Oracle 的 CSO (Chief Security Officer) 對資安的想法" + }, + { + "id": "5917", + "body": "Twitter 宣佈可以搜尋所有公開的 tweet 了:「Instant and complete access to every historical public Tweet」。\r\n\r\n
This new product builds off of our existing 30-Day search solution and extends the available window of instant and complete Twitter access to a span of more than nine years… and counting.
\r\n\r\n提供給 Gnip 的客戶搜尋:(這家公司去年被 Twitter 買下,參考「Twitter buys social data provider Gnip, stock soars」)\r\n\r\n
The Full-Archive Search API will now allow Gnip customers to immediately search for any historical public Tweet — ever.
\r\n\r\n看起來是個半獨家生意:\r\n\r\n
For more technical information about the Full Archive Search API, you can read our support documentation, and contact the Twitter Data Sales team at data-sales@twitter.com to learn how your business can start using this new historical API today.
", + "title": "Twitter 的歷史資料企業方案" + }, + { + "id": "5919", + "body": "這家公司與這類事情,好像不怎麼意外:「Lenovo used a hidden Windows feature to ensure its software could not be deleted」。\r\n\r\n每次開機時 BIOS 會檢查是不是 Windows 7 或 Windows 8,如果是,而 C:\\Windows\\system32\\autochk.exe 不是 Lenovo 所簽名的版本,那麼就會蓋掉變成自己版本:\r\n\r\n
If Windows 7 or 8 is installed, the BIOS of the laptop checks ‘C:\\Windows\\system32\\autochk.exe’ to see if it’s a Microsoft file or a Lenovo-signed one, then overwrites the file with its own.
\r\n\r\n接著這個 autochk.exe 在開機被執行時就會建立 LenovoUpdate.exe 以及 LenovoCheck.exe,然後透過網路下載程式回來跑:\r\n\r\n
Then, when the modified autochk file is executed on boot, another two files LenovoUpdate.exe and LenovoCheck.exe are created, which set up a service and download files when connected to the internet.
\r\n\r\n影響的範圍包括了:\r\n\r\n
A wide range of Lenovo laptops are affected by the issue: Flex 2 Pro-15/Edge 15 (Broadwell/Haswell models), Flex 3-1470/1570/1120, G40-80/G50-80/G50-80 Touch/V3000, S21e, S41-70/U40-70, S435/M40-35, Yoga 3 14, Yoga 3 11, Y40-80, Z41-70/Z51-70 and Z70-80 / G70-80.
\r\n\r\n如果已經買了這批電腦,請依照官方提供的新 BIOS 更新:「Lenovo Service Engine (LSE) BIOS for Notebook」。\r\n\r\n如果還沒買的話,以後也請不要買,像是「My dream machine: Lenovo may build a new “classic” ThinkPad」這種消息看看就好...", + "title": "聯想的 BIOS 會自動安裝軟體,即使你整台重灌..." + }, + { + "id": "5920", + "body": "Cisco 開發新的 Video Codec 與 HEVC (H.265) 競爭,專案名稱叫做 Thor:「World, Meet Thor – a Project to Hammer Out a Royalty Free Video Codec」。\r\n\r\n沒什麼意外,專利問題是主要的原因:\r\n\r\n
Unfortunately, the patent licensing situation for H.265 has recently taken a turn for the worse. Two distinct patent licensing pools have formed so far, and many license holders are not represented in either. There is just one license pool for H.264. The total costs to license H.265 from these two pools is up to sixteen times more expensive than H.264, per unit. H.264 had an upper bound on yearly licensing costs, whereas H.265 has no such upper limit.
\r\n\r\n不過一開頭寫到 VP9 是 proprietary 的描述讓人很不解:\r\n\r\n
There are two of note – Google’s proprietary VP9 codec, and the industry standard H.265 (HEVC) codec, which is the successor to H.264 (AVC).
\r\n\r\n往下拉 comment 看果然就有人提出來:\r\n\r\n
How exactly is VP9 more \"proprietary\" than Thor? Both are open sourced under BSD license, both are royalty free, both are intended to be unencumbered by patents. Are you defining \"proprietary\" as \"not controlled by Cisco\"?
\r\n\r\n不知道在搞什麼鬼...", + "title": "Cisco 開發新的 Video Codec:Thor" + }, + { + "id": "5921", + "body": "AWS 提供 Free Tier 使用者可以直接看所有 Free Tier 資源的地方了:「New – Monitor Your AWS Free Tier Usage」。\r\n\r\n\"\"\r\n\r\n包括了現在的使用量,以及按照比率預測出來的數字。對於在試用 AWS 的人方便不少...", + "title": "AWS 提供 Free Tier 監控總表" + }, + { + "id": "5922", + "body": "Twitter 上看到的工具:「Run AWS Lambda Functions on your local computers, for testing purposes」。可以在本地端測試 AWS Lambda 的程式碼:\r\n\r\n

Node.js plugin to run AWS Lambda Functions on your local environment https://t.co/Ki9s0GJlAP #lambdafunction #aws cc: @awscloud @mcholste

— Daniel Aranda (@javierdaniel) August 12, 2015
\r\n", + "title": "AWS Lambda 的本地端測試工具" + }, + { + "id": "5924", + "body": "KeyCDN 發表了對 HLS streaming 的最佳化:「New feature: Optimized HLS streaming」。\r\n\r\n其中這段看起來就很奇怪:\r\n\r\n
The index file (.m3u8) will not be cached at all. The .ts files will only be cached for 5 minutes. If the origin server sends other Cache Control headers, it will be ignored by the CDN.
\r\n\r\n也就是這個畫面:\r\n\r\n\"\"\r\n\r\n如果你把對 .m3u8 的壓力全部打到後端,那麼就註定不 scale 啊?之前在 EC2 c3.8xlarge 上面用 Wowza 測試,就發現單台最多只能承受 4000 reqs/sec。\r\n\r\n比較好的作法應該是 cache 很短的時間 (也許三到五秒),讓 CDN 幫你擋下來,而不是前面打多少 reqs/sec 後面就吃多少...", + "title": "關於 KeyCDN 的 HLS streaming 最佳化..." + }, + { + "id": "5926", + "body": "在「Usability: Don't Make Me Think and a Bookmarklet」這篇文章裡作者在讀了「Don’t Make Me Think, Revisited」之後有所啟發,寫了一小段 javascript code,可以將網頁上所有文字都變成同樣長度的亂碼,藉以測試許多 usability 特性。\r\n\r\n我把程式碼丟進 yui-compressor 後變成這樣,比較容易貼到 bookmarklet 上使用:\r\n\r\n
javascript:(function(){var a=\" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";$(\"*:not(iframe)\").contents().filter(function(){return this.nodeType==Node.TEXT_NODE&&this.nodeValue.trim()!=\"\"}).each(function(){var c=\"\";for(var b=0;b<this.nodeValue.trim().length;b++){c+=a.charAt(Math.floor(Math.random()*a.length))}this.nodeValue=c})})();
\r\n\r\n不過這段程式碼假定頁面上有 $ 這個 object (i.e. jQuery),所以我把程式碼改成吃 jQuery 這個 object,這樣確保 jQuery.noConflict() 後的網站還是可以動:\r\n\r\n
javascript:(function(){var a=\" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";jQuery(\"*:not(iframe)\").contents().filter(function(){return this.nodeType==Node.TEXT_NODE&&this.nodeValue.trim()!=\"\"}).each(function(){var c=\"\";for(var b=0;b<this.nodeValue.trim().length;b++){c+=a.charAt(Math.floor(Math.random()*a.length))}this.nodeValue=c})})();
\r\n\r\n效果如下,還蠻有趣的:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "Usability 測試的 bookmarklet" + }, + { + "id": "5927", + "body": "Slack 的新功能,可以寄信到 Slack 的 Channel 裡:「Email, meet Slack. Slack, email.」。\r\n\r\n這個新功能限制在付費使用者才能使用:\r\n\r\n
Today we’re launching a new feature: all teams on the Standard or Plus plans can have email directed into Slack channels.
\r\n\r\n包括圖片也是可以顯示出來的:\r\n\r\n\"\"\r\n\r\n這樣接起來更方便了...", + "title": "寄信到 Slack 裡的 Channel" + }, + { + "id": "5930", + "body": "最早的時候是用 Android 系統,HTC Desire 還在 2.1 的年代 (2010 年)。\r\n\r\n後來切到蘋果的環境裡,第一隻 iPhone 4S 在 2011 年出的時候買 (英國機),後來台灣上了 iPhone 5S 就用到現在 (中華電信機)。\r\n\r\n前陣子台哥大的 3G data 合約到期了,就順手升級到 4G 吃到飽再續了 iPhone 6 Plus,想起幾個月前老爹在問有沒有機會換 iPhone,想了想就把這隻超大螢幕的 iPhone 拿給老人家用。\r\n\r\n於是他本來的 LG G2 就到我手上了:\r\n\r\n\"\"\r\n\r\n拿到除了 reset 以外,把 4.2 一路先升級到 4.4.2。順便查了一下維基百科上的資料,了解一下這隻手機的背景。(雖然當初也是我幫老人家辦的,不過當時是 Ptt 上面找找資料看起來這隻不會是地雷就選下去了...)\r\n\r\n之前幫 iPad 2 拿來上網辦了張台哥大的 SIM 卡 (幾乎不出門的),99 元綁一年的維繫方案,包含 500MB 的 data 就順手拿來用了,這幾天用了用覺得 Anrdoid 也很有趣啊,換過來有點不太順手還在習慣就是了...\r\n\r\n這篇算是在嘗試 Android 過程的記錄,明顯是帶著 iPhone 使用習慣的人在寫的,所以沒打算討論什麼「不是這樣設計」了,因為就只是記錄而已。\r\n\r\n先講大的感覺,在家走 WiFi 用 LG G2 的速度還蠻快的,大多數的應用程式也都很順,就 5.2\" 1080p 的感覺也很好。而在外面用 HSPA/3G 的速度也不錯。\r\n\r\n操作上最不習慣的幾個點,一個是「點上方的 status bar 回到最上面」的功能是 iOS 專有的功能 (應該是專利?),可以注意到常用的 App 在這塊都是設計成「再點一次 icon 回到最上面」 (包括 TwitterFacebookInstagram),而這個設計幾乎目前 App 慣例了,剛好保持平台之間的一致性,所以這點慢慢適應了...\r\n\r\n另外是滑動時的捲動速度相較於 iPhone 快很多,翻了一下設定沒找到哪邊可以調,所以不是很確定能不能調整... 不過這點也慢慢適應了 :o\r\n\r\n而到現在比較不習慣的是 LG 自己的注音輸入法,還是沒有搞懂是怎麼選字的,大寫的驚嘆號「!」還是打不出來,也許再多摸幾天會有感覺吧 XDDD\r\n\r\n而有些 App 則是完全不同的設計。像是 Zite 的用法完全不同。\r\n\r\nAndroid 上的 Zite 看不到文章的 tag,分享時也不會紀錄上一次使用的分享方式 (iPhone 會把上一次分享的方式放到前面,通常我是用 Twitter 發表分享)。而版面上,Android 的 Zite 沒有 Popular 的部份。這些在 Zite 被 Flipboard 買走後應該是沒機會改了...\r\n\r\n另外老人家把電池保養的蠻好的,一整天帶出去才用掉 20% 的電 (我 iPhone 5S 的電池已經被我用的好慘啊),當初歐盟統一充電規範這件事情也方便不少,家裡本來就有一堆設備是吃 Micro USB 了 (參考之前寫的「歐盟強制使用 Micro USB 做為手機充電介面」這篇)。\r\n\r\n以上是用了三天的感想,之後有新的未必會更新 XD", + "title": "回到 Android 世界熟悉..." + }, + { + "id": "5932", + "body": "GitHub 給了從 2008 年到 2015 年現在,放在 GitHub 上專案所使用程式語言的排名:「Language Trends on GitHub」。\r\n\r\n這同時包括了公開與私人 repository:\r\n\r\n
The rank represents languages used in public & private repositories, excluding forks, as detected by Linguist.
\r\n\r\n\"\"\r\n\r\n可以看到 Java 專案的排名逐步上升,應該是愈來愈多 Java 專案放到 GitHub 上 (應該是跟 Android 有關)。而 Perl 是掉出去很久了,PHP 則是萬年不動... XD", + "title": "GitHub 上程式語言的趨勢" + }, + { + "id": "5933", + "body": "CloudFlare 推出這個功能很棒啊,不過這後面的資料結構必須設計的夠好才能這樣玩:「Introducing a Powerful Way to Purge Cache on CloudFlare: Purge by Cache-Tag」。\r\n\r\ncache purge 一直都是 CDN 的痛處,用過的每一家 CDN 都在比慢的,大概都是 10 mins 起跳,但 CloudFlare 在這塊花了不少功夫:\r\n\r\n\"\"\r\n\r\n可以想像到的方式是放入 user_gslin (在使用者停用時可以馬上更新) 或是 pic_id_1234567890 (可以針對各種縮圖一次刷新) 這樣的 tag 去歸類,然後就可以大規模刷...", + "title": "CloudFlare 推出 tag-based purge 功能" + }, + { + "id": "5934", + "body": "在「Notes on the Ashley-Madison dump」這邊給了這次婚外情約會網站 Ashley Madison 資料外洩的註解,甚至還包括 BitTorrentmagnet:// 下載連結...\r\n\r\n將近四千萬筆資料的資料外洩 (實際約三千六百萬),男性為大宗,約 28 million 是男性,5 million 女性 (依據 gender 欄位),有 2 million 無法確認。不過如果交叉比對信用卡資料,會發現只有男性付費:\r\n\r\n
It's heavily men. I count 28-million men to 5 million woman, according to the \"gender\" field in the database (with 2-million undetermined). However, glancing through the credit-card transactions, I find only male names.
\r\n\r\n另外是密碼儲存方式是 bcrypt:\r\n\r\n
Passwords hashed with bcrypt. Almost all the records appear to be protected with bcrypt. This is a refreshing change. Most of the time when we see big sites hacked, the passwords are protected either poorly (with MD5) or not at all (in \"clear text\", so that they can be immediately used to hack people). Hackers will be able to \"crack\" many of these passwords when users chose weak ones, but users who strong passwords are safe.
\r\n\r\n整包是 9.7GB 的壓縮資料... FreeBuf.COM 也整理了一篇:「七夕将至,婚外情网站数据终于裸奔了」。", + "title": "這次的 Ashley-Madison 資料外洩" + }, + { + "id": "5936", + "body": "在使用 CDN 前,先考慮上 SPDYHTTP/2 (i.e. 全站 HTTPS),改善的效果跟 CDN latency 帶來的效益有得拼。尤其是 server 放在美國機房的情況,SPDY 與 HTTP/2 帶來的效能提昇是相當明顯的。\r\n\r\n會寫這篇是因為這兩個禮拜意外被問到好幾次,所以來整理幾家如果讓我來選,我會選擇的 CDN。至少再被問到的時候可以直接從這邊開始說明。\r\n\r\n下面的圖是從我家裡 HiNet 光世代測試的結果 (最後是走兩條電話線),所以會有個 10ms 的 latency 基底,如果要計算 latency 的效能影響請考慮進去。\r\n\r\n

Akamai

\r\n\r\n先講 Akamai。\r\n\r\n\"\"\r\n\r\nAkamai 的歷史很久了,再加上併購了不少公司,所以產品成熟度很夠,你要什麼產品都有提供,只要拿的出錢就可以。\r\n\r\nKKBOX (敝公司) 用過 PMD、DSDDSA 三個產品,其中 PMD 與 DSD 只有保障服務可靠度 (availability),DSA 還有保障效能提昇 (performance)。早期是用 PMD + DSD,現在改用 PMD + DSA。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n在功能面上,雖然 Akamai 是大公司,但各種新功能跟的蠻快的。主要就是為了 SPDY 以及之後預期會有的 HTTP/2 而選了 DSA,另外也剛好有效能提昇 SLA 需求而一併升級。\r\n\r\n品質上來說,Akamai 在全球的點 (PoP) 夠密集 (差不多是有 ISP 機房就會放),當初會選擇 Akamai 是為了敝公司在泰國與馬來西亞兩個地區的用戶,而 PMD 在這兩個地區的品質都還不錯。\r\n\r\n在台灣也有好幾個點,但除非你買的產品線等級夠高 (i.e. 合約有保證 performance,像是 DSA),不然平常不會分到台灣的點,以最近的情況來說是深夜才有機會指回台灣。\r\n\r\n這是 Akamai DSD 的圖:\r\n\r\n\"\"\r\n\r\n而這是 DSA 的圖:\r\n\r\n\"\"\r\n\r\n可以看得出來 latency 的差異。\r\n\r\n在 SLA 的部份,是目前少數有提供保證 100% availability SLA 的 CDN。\r\n\r\n成本考量上,價錢是最硬的,但由於 CDN 這個領域競爭得很激烈,只要超過某一個 commit level 後有機會壓到跟 CloudFront 拼的價錢,也就是說,有經濟規模就有機會在台灣變成重點客戶而坐下來談價錢 (不確定多少,但 CloudFront 的第一個級距 10TB/month 應該是基本吧)。\r\n\r\n另一方面,因為透過業務談價錢,會需要開會討論,所以對使用方的人力成本偏高。不過因為如此,台灣有 Akamai 辦公室與經銷商,稅務會比較好處理。(參考:「零壹科技正式代理Akamai 推展雲端優化服務解決方案」)\r\n\r\n總結來說,適合已經有量,而且台灣是重要客群的公司。\r\n\r\n

EdgeCast

\r\n\r\n再來講 EdgeCast。\r\n\r\n\"\"\r\n\r\nEdgeCast 的功能比 Akamai 少很多,自從被 Verizon 買進去後就沒推出什麼比較有趣的產品了 (參考「Verizon 打算買下 EdgeCast...」),感覺上是電信公司買來補產品線的啦,所以也不用太期待之後會有什麼新產品推出來...\r\n\r\n比較特別的是 EdgeCast 跟 HiNet 有合作 (參考「EdgeCast 與 HiNet 合作...」),所以也是少數在台灣有機房的 CDN 業者。在台灣的 PoP 據說是在高雄 HiNet 機房內:\r\n\r\n\"\"\r\n\r\n另外 EdgeCast 有 Network Map 可以看在全球有哪些 PoP。\r\n\r\n\"\"\r\n\r\n價錢上聽朋友說比 Akamai 低了不少,不過自己沒經手過無法確認。同樣是透過業務談,所以也有類似的人力與稅務優缺點。不過據說也可以直接 bypass 國內的業務,直接跟國外談,不過這樣搞境外稅務的問題就要自己解決了。\r\n\r\n綜合來說,也是適合已經有量,由於沒有 SPDY 與 HTTP/2,就看 PoP 的點決定合不合用。\r\n\r\n

CloudFront

\r\n\r\nAmazon CloudFront 算是很多 startup 的第一嘗試,no commit 以及帳單在同一張可以省下不少功夫。\r\n\r\n在 CloudFront 上分成三個不同等級的產品,通常下載用可以拿 Price Class 100 (只有北美與歐洲的 PoP),而真正要加速用的再拿 Price Class All 用。\r\n\r\n而功能面上,CloudFront 的功能說不定還比 EdgeCast 多,不過還是沒支援 SPDY 或 HTTP/2,所以基本上是靠台灣的 PoP 在撐 latency 的。而台灣的 PoP 據說在內湖:\r\n\r\n\"\"\r\n\r\n價錢在官網上就擺出來給大家看了,比較大的缺點是不同區域是分開算錢的,不過是可以找台灣的經銷商談 commit level 包價錢啦,不過價錢還是很難談。\r\n\r\n綜合來說,適合 startup 用。\r\n\r\n

CloudFlare

\r\n\r\nCloudFlare 也是很多人問的一個選擇,不看流量價錢固定是賣點之一。\r\n\r\n\"\"\r\n\r\n功能非常多,SSL certificate 涵蓋在所有產品內,另外也是目前少數支援 SPDY 的 CDN。技術上是走 Anycast 而非 GeoDNS dispatch。\r\n\r\nHiNet 過去的品質爛到爆炸 (重點在於會 packet loss),也常常是被 DDoS 的目標。台灣其他的 ISP 過去大多都是到日本機房,但 HiNet 會到香港機房,而 HiNet 的這條線路相當壅塞:\r\n\r\n\"\"\r\n\r\n主要還是靠 SPDY 的能耐硬是把效能撐到「堪用」的程度,而 CloudFlare 遇到 DDoS 時就慘了。\r\n\r\n價錢也是公開的,但以商用水準的品質來說,已經低到及格線以下了...\r\n\r\n綜合來說,自己玩玩的東西還可以啦,任何商業性質的網站都不應該單獨用 (與其他 CDN 服務動態偵測服務搭配著用還加減可以用用)。所以目前看到用最多的服務就是內容農場 (Content Farm) 在用,為了節省頻寬與伺服器的負荷,不太在意品質。\r\n\r\n

補充

\r\n\r\n最後補充在台灣有機房的 CDN 業者:(按照字母排,可能有漏)\r\n\r\n", + "title": "關於各家 CDN 的選擇..." + }, + { + "id": "5938", + "body": "在「How does a relational database work」這篇文章用了很長的篇幅講「資料庫如何把 SQL query 轉換為實際的操作」:\r\n\r\n
I’ll focus on what I think is essential: the way a database handles an SQL query.
\r\n\r\n資料庫也是人寫出來的,資料結構與演算法也是人設計出來的。你現在手上有資料,要怎麼把 SQL query 變成有效率的查詢操作行為,就是這篇文章在描述的。\r\n\r\n看起來連 JOIN 的機制也講了不少...", + "title": "Relational Database System (RDBMS) 運作的方式" + }, + { + "id": "5939", + "body": "Percona 的「State Snapshot Transfer (SST) at a glance」這篇給了 Galera Cluster (也就是 Percona XtraDB Cluster) 在同步速度的改善方案,整篇文章一步一步改善,從 51 分鐘降到 18 分鐘。\r\n\r\n劃幾個重點。\r\n\r\n首先是同步時的設定可以放到系統 my.cnf[sst] 內,像是這樣:\r\n\r\n
[sst]\r\ninno-apply-opts=\"--use-memory=20G\"
\r\n\r\n其中改善最大的也就是 --use-memory,依照作者測試的數據,光這步就從 51 分鐘降到 30 分鐘。不過這邊要小心本來就有跑的 mysqld,如果 OOM 就慘了...\r\n\r\n再來講的是 wsrep_slave_threads,不同於上面的 sst only 設定,這是在一般性的 tuning (平常在跑的參數,放在 [mysqld] 內),改完後速度 30 分鐘再提升到 25:32。\r\n\r\n然後是壓縮的方式改用支援多 CPU 的 pigz:\r\n\r\n
[sst]\r\ninno-apply-opts=\"--use-memory=20G\"\r\ncompressor=\"pigz\"\r\ndecompressor=\"pigz -d\"
\r\n\r\n很明顯是個 shell command 類的設定,所以如果真的想要測的話,可以再從 -1 測到 -9,作者在這邊沒測,不過效果也很明顯了,從 25:32 降到 21 分鐘。\r\n\r\n最後一個大的改變是建議有專門同步的節點 (Donor node),這個節點上不會有 SQL query 來影響效能,這樣可以讓 pigz 的效率更高:\r\n\r\n
Since node2 is not getting application traffic, moving into the Donor state and doing an expensive SST with pigz compression should be relatively safe for the rest of the cluster (in this case, node1).
\r\n\r\n時間最後降到 18:33。", + "title": "Galera Cluster (Percona XtraDB Cluster) 同步速度的改善" + }, + { + "id": "5941", + "body": "剛剛看到跑步王COSCUP 2015 的「COSCUP 2015 - 使用 PostgreSQL, NoSQL 和 GIS 一次滿足 - Ronny Wang」這份錄影資料:\r\n\r\n\r\n\r\n前半段講 JSON、JSONB (JSON Types) 以及 PostgreSQLIndexes on Expressions 以及 Partial Indexes。\r\n\r\n後半段講 GIS 的部份也很讚,不過就偏地圖應用了 :p", + "title": "跑步王在 COSCUP 2015 的 PostgreSQL、JSON、GIS" + }, + { + "id": "5942", + "body": "記得剛買來的時候是有聲音的,後來突然有一天沒聲音... 試了一堆方法都沒用 (換 kernel 版本、禁用 xHCI、換 USB 線、...),最後是在「Benchmark DAC2 HGC impressions (and Linux setup notes)」這邊看到方法。\r\n\r\n這邊有幾個重點:\r\n\r\n
DAC2's USB 1.0 mode doesn't work with Linux kernel 3.8.x, but USB 2.0 does. So switch it to USB 2.0 and forget about it. Next, I figured that the audio was simply being muted in some instances. The solution is to open a terminal window, run AlsaMixer, hit F6 to configure the DAC 2. Even though their levels cannot be altered (they're fixed at 00), the first two items must be unmuted in order to get any sound:
\r\n\r\n如同文章裡說的,USB 1.0 模式 (會抓到「Benchmark DAC2 USB Audio 1.0」) 是不會動的,而 USB 2.0 可以 (會抓到「Benchmark DAC2 USB Audio 2.0」),但播放時沒有聲音。\r\n\r\n解法則是使用 alsamixer,進入後按 F6 選 Benchmark DAC2,將前面兩個用 \tm 給 unmute 掉就好了:\r\n\r\n\"\"\r\n\r\n為此學到一堆底層看 USB 的工具...", + "title": "Benchmark DAC2 HGC 在 Ubuntu 14.04 LTS 下使用 USB 沒有聲音的問題" + }, + { + "id": "5945", + "body": "TVBS 網站整個使用 CloudFlare,但針對台灣地區 HiNet 的部份仍然保持使用 anycast,但該段 routing 沒有透過香港機房放進 HiNet,而是很特別的走到了 San Jose 的機房:\r\n\r\n
  3.|-- SNUH-3202.hinet.net        0.0%    10   10.4  10.5   8.8  16.8   2.2\r\n  4.|-- TPDT-3012.hinet.net        0.0%    10   14.5  14.6  10.6  20.6   3.4\r\n  5.|-- r4102-s2.tp.hinet.net      0.0%    10    9.8  10.0   8.7  10.8   0.5\r\n  6.|-- r4002-s2.tp.hinet.net      0.0%    10   10.8  19.0   8.7  82.1  23.0\r\n  7.|-- r12-pa.us.hinet.net        0.0%    10  137.7 138.4 136.9 139.2   0.3\r\n  8.|-- sjo-b21-link.telia.net     0.0%    10  157.0 156.4 155.7 157.7   0.3\r\n  9.|-- cloudflare-ic-309920-sjo-  0.0%    10  146.9 148.6 145.8 167.4   6.6\r\n 10.|-- 198.41.187.120            10.0%    10  145.7 146.7 137.9 156.9   7.6
\r\n\r\n國內其他 ISP 則是如同一般的情況,走到了日本機房:\r\n\r\n
  3.|-- 60-199-236-110.static.tfn  0.0%    10    0.3   0.3   0.3   0.3   0.0\r\n  4.|-- 60-199-255-3.static.tfn.n  0.0%    10    0.3   0.3   0.2   0.3   0.0\r\n  5.|-- 60-199-20-153.static.tfn.  0.0%    10    0.2   2.6   0.2  24.2   7.5\r\n  6.|-- 60-199-3-137.static.tfn.n  0.0%    10    0.3   2.2   0.2  20.1   6.3\r\n  7.|-- 60-199-18-90.static.tfn.n  0.0%    10    0.3   0.3   0.3   0.4   0.0\r\n  8.|-- 60-199-3-222.static.tfn.n  0.0%    10    0.4   0.4   0.4   0.5   0.0\r\n  9.|-- xe-1-0-0.r01.taiptw01.tw.  0.0%    10    0.8   3.1   0.7  23.6   7.2\r\n 10.|-- ae-1.r00.taiptw01.tw.bb.g  0.0%    10    5.6   5.5   0.9  39.1  11.9\r\n 11.|-- as-2.r22.tokyjp01.jp.bb.g  0.0%    10   53.2  52.3  49.3  53.8   1.4\r\n 12.|-- ae-8.r25.tokyjp05.jp.bb.g  0.0%    10   52.5  53.0  50.4  56.4   1.7\r\n 13.|-- ae-2.r01.tokyjp03.jp.bb.g  0.0%    10   54.5  53.1  50.1  55.3   1.8\r\n 14.|-- xe-0-0-0-29.r01.tokyjp03.  0.0%    10   79.5  77.2  73.6  79.5   1.6\r\n 15.|-- 198.41.190.120             0.0%    10   54.8  58.8  49.9  78.7  10.5
\r\n\r\n
  3.|-- h61-192-72-154.seed.net.t  0.0%    10    0.4   0.5   0.4   0.6   0.0\r\n  4.|-- R58-145.seed.net.tw       10.0%    10   13.2   8.4   0.5  42.4  13.6\r\n  5.|-- R59-194.seed.net.tw        0.0%    10   52.5  10.8   0.6  52.5  19.7\r\n  6.|-- xe-4-0-0.r01.taiptw01.tw.  0.0%    10    0.6   0.7   0.6   0.8   0.0\r\n  7.|-- ae-1.r00.taiptw01.tw.bb.g  0.0%    10    0.9   0.9   0.8   1.1   0.0\r\n  8.|-- as-2.r22.tokyjp01.jp.bb.g  0.0%    10   70.8  66.5  49.2 102.1  19.4\r\n  9.|-- ae-8.r24.tokyjp05.jp.bb.g  0.0%    10   54.3  58.2  53.2  76.3   6.8\r\n 10.|-- ae-1.r01.tokyjp03.jp.bb.g  0.0%    10   55.6  54.1  48.9  55.7   2.1\r\n 11.|-- xe-0-0-0-29.r01.tokyjp03.  0.0%    10   55.0  56.8  53.0  59.3   1.9\r\n 12.|-- 198.41.186.120             0.0%    10   55.1  54.8  50.7  58.1   2.0
\r\n\r\n依照 Netcraft 上的資料 (Site report for www.tvbs.com.tw) 應該是六月的時候換去的:\r\n\r\n\"\"\r\n\r\n應該是國內比較有量的網站裡面少數用 CloudFlare 的?其他新聞網站大多都用 Akamai...", + "title": "TVBS 的 CloudFlare 客製化..." + }, + { + "id": "5946", + "body": "把 Ashley Madison 洩漏出來的資料拿來分析發現網站上根本沒有女性在使用:「Almost None of the Women in the Ashley Madison Database Ever Used the Site」。\r\n\r\n作者分析以後發現 550 萬的女性使用者幾乎都是假的:\r\n\r\n
It isn’t even a sadscape of 31 million men competing to attract those 5.5 million women in the database. Instead, it’s like a science fictional future where every woman on Earth is dead, and some Dilbert-like engineer has replaced them with badly-designed robots.
\r\n\r\n純粹就性別欄位來看:\r\n\r\n\"\"\r\n\r\n但如果把活躍度以及使用聊天功能的人數放進去,就呼應了作者的講法:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n最後的說明:\r\n\r\n
Overall, the picture is grim indeed. Out of 5.5 million female accounts, roughly zero percent had ever shown any kind of activity at all, after the day they were created.
\r\n\r\n不過中間還有一段很重要,幾年前加拿大的前員工控訴 Ashley Madison 的工作環境很惡劣時提出來「偽造女性帳號」的事情:\r\n\r\n
A few years ago, a former employee of Ashley Madison sued the company in Canada over her terrible work conditions. She claimed that she’d gotten repetitive stress injuries in her hands after the company hired her to create 1,000 fake profiles of women in three months, written in Portuguese, to attract a Brazilian audience. The case was settled out of court, and Ashley Madison claimed that the woman never made any fake profiles.
\r\n\r\n接下來不知道還會有多少分析...", + "title": "Ashley Madison 資料分析..." + }, + { + "id": "5947", + "body": "在「10 Ad Blocking Extensions Tested for Best Performance」這篇看到各個 Ad Blocker 軟體的比較。\r\n\r\n對各網站測試了載入速度、記憶體使用量、CPU 使用率,重點應該是最後的圖:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n其中最知名的 AdBlock Plus (ABP) 會最慢的原因也很簡單,因為他預設值會放行廣告,這導致了效能掉很多:\r\n\r\n
If you’re wondering why the popular AdBlock Plus got low scores in some Chrome tests, the answer is simple and it’s purely down to the acceptable ads check box. Disable “Allow some non-intrusive advertising” and AdBlock Plus will performance wise, sit in the middle of the pack.
\r\n\r\n在 ABP 把 acceptable ads 擋掉後速度就比較接近了。不過,如果你願意接受 acceptable ads,也不應該選擇 ABP,因為其他也有支援 acceptable ads 的軟體效能比較好:\r\n\r\n
Whatever your opinion on acceptable ads, using the option in ABP is not recommended and if you wish to support showing specific ads while browsing, use something else. AdBlock, Adguard, AdRemover and SuperBlock all have an acceptable ads option of some sort, but none suffer a performance drop like ABP.
\r\n\r\n最後的結論,不論是 Google Chrome 或是 Firefox,贏家都是 uBlock Origin:\r\n\r\n
The overall winner in Firefox is simply the quickest, and that was µBlock origin. µ AdBlock is a fair choice if you want an easy to use but fast blocker, the rest are almost identical so it’s down to personal preference and the options available as to which one you use.
\r\n\r\n
The winner in Chrome is a closer call when you consider the results from all three tests. But as it got a couple of firsts and a second, we would say µBlock Origin is the definite winner, it truly is fast and efficient as the author claims. Both Ghostery and Adguard are still excellent choices and are viable alternatives to µBlock Origin providing good performance in all 3 categories.
\r\n\r\nGhostery 雖然也會因為少讀很多東西進來而加快速度,不過拿來一起比好像怪怪的...\r\n\r\n網路廣告愈來愈誇張,阻擋的功能變成趨勢了,在桌機上支援的軟體愈來愈完善,而在行動裝置上,iOS 9 也開始支援了:「Content blocking in iOS 9 is going to screw up way more than just ads」。", + "title": "Google Chrome 與 Firefox 上擋廣告軟體的效能比較" + }, + { + "id": "5948", + "body": "前幾天在「TVBS 的 CloudFlare 客製化...」這邊提到這件事情,當天就先隨手測了一些東西。\r\n\r\n首先是 CloudFlare 的服務 IP 是互通的,也就是說,我就算拿其他人的 CNAME mapping 來用,只要有送出對應的 Host: 或是 SNI (for HTTPS) 就會通,而 TVBS 當時的 IP address (以及網段) 對於台灣 HiNet 使用者剛好會導到美國機房,還算可以用。\r\n\r\n另外 CloudFlare 有提供列表 (文字格式,一行一個網段),分別是 IPv4 的 https://www.cloudflare.com/ips-v4 以及 IPv6 的 https://www.cloudflare.com/ips-v6。\r\n\r\n所以就有幾種組合了,一種是寫 Google Chrome 的 extension 直接改 IP address,不過看了看 JavaScript APIs - Google Chrome 想不出來怎麼寫。\r\n\r\n另外一個是先用 iptables 把這些網段的流量導去美國的 CloudFlare 機房。結果這時候發現 HiNet 到 TVBS 已經改回到香港機房了 orz\r\n\r\n實際抓了一下發現 188.114.97.100 在巴西機房 (GRU 是 IATA 代碼),就變成只是測試看看這有沒有用了:\r\n\r\n
$ curl -x http://188.114.97.100:80/ http://s.plurk.com/cdn-cgi/trace\r\nfl=42f16\r\nh=s.plurk.com\r\nip=114.32.152.63\r\nts=1441004146.723\r\nvisit_scheme=http\r\nuag=curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\ncolo=GRU\r\nspdy=off
\r\n\r\n由於是自己機器出去的封包,不能用 PREROUTING 做,要用 OUTPUT 做:\r\n\r\n
iptables -t nat -A OUTPUT -d 190.93.240.0/20 -j DNAT --to-destination 188.114.97.100
\r\n\r\n然後再直接連到 s.plurk.com 就可以看到:\r\n\r\n
$ curl http://s.plurk.com/cdn-cgi/trace\r\nfl=42f16\r\nh=s.plurk.com\r\nip=114.32.152.63\r\nts=1441004011.195\r\nvisit_scheme=http\r\nuag=curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\ncolo=GRU\r\nspdy=off
\r\n\r\n不過巴西也太遠了點,而且不知道哪天這段 IP 又會被 anycast 進去... orz", + "title": "為了解決 HiNet 到 CloudFlare 機房品質不好而做的掙扎..." + }, + { + "id": "5949", + "body": "在「Subscribe to AWS Public IP Address Changes via Amazon SNS」這邊提供利用現有的 Amazon SNS 所提供的新功能。\r\n\r\n依照說明,訂 arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged 就可以了:\r\n\r\n\"\"\r\n\r\n會收到類似於這樣的東西:\r\n\r\n
{\r\n  \"create-time\":\"yyyy-mm-ddThh:mm:ss+00:00\",\r\n  \"synctoken\":\"0123456789\",\r\n  \"md5\":\"6a45316e8bc9463c9e926d5d37836d33\",\r\n  \"url\":\"https://ip-ranges.amazonaws.com/ip-ranges.json\"\r\n}
\r\n\r\n不過之前就可以 polling 了,這個功能好像還好...", + "title": "AWS Public IP 的變動可以透過 Amazon SNS 訂閱" + }, + { + "id": "5950", + "body": "在滿滿都是 NoSQL 的世代中,意外在「Berkeley DB: Architecture」這邊看到 Berkeley DB 的介紹...\r\n\r\n2006 年 Berkeley DB 的公司 SleepycatOracle 收購。在收購後 Oracle 改變了 open source 授權部份,從之前的 Sleepycat License 改成了 AGPLv3。\r\n\r\nBerkeley DB 算是早期功能很完整的 database library,由於 page level locking、crash-safe 加上有 transaction,也曾經被 MySQL 拿去當作 engine,不過在 MySQL 5.1 被拔掉:「14.5 The BDB (BerkeleyDB) Storage Engine」。\r\n\r\n文章裡講了很多底層設計上的想法 (而非單純只說明「做了什麼」),以四個面向來討論。Buffer、Lock、Log 以及 Transaction,並且圍繞著 ACID 需求討論。\r\n\r\n算是懷念的考古文?Google 弄出來的 LevelDBFacebook 接著改善的 RocksDB 的走向也不太一樣了,現在大家對 ACID 需求因為 NoSQL 盛行的關係又重新在檢視...", + "title": "Berkeley DB 的介紹" + }, + { + "id": "5951", + "body": "CloudFlare 宣佈開始測試 HTTP/2 了:「Test all the things: IPv6, HTTP/2, SHA-2」。\r\n\r\n網站是 https://http2.cloudflare.com/,如果有裝 HTTP/2 and SPDY indicator 的人應該會看到藍色的閃電:\r\n\r\n\"\"\r\n\r\n原來的站則是綠色的 SPDY/3.1:\r\n\r\n\"\"\r\n\r\n接下來就是花時間等待了。", + "title": "CloudFlare 開始測試 HTTP/2" + }, + { + "id": "5953", + "body": "GitHub 宣布支援 Protected Branches 了:「Protected branches and required status checks」,其他的競爭對手都有的功能:\r\n\r\n
Over the next few weeks we’ll be rolling out a new feature called Protected Branches which gives repository administrators the ability to disable force pushes to specific branches.
\r\n\r\n\"\"\r\n\r\n另外一起引入的是強制性的檢查:\r\n\r\n\"\"\r\n\r\n算是補功能... 組織變大的時候必須透過系統強制介入的功能。", + "title": "GitHub 支援 Protected Branches 了..." + }, + { + "id": "5955", + "body": "雖然人還在大阪員旅,不過看到這篇很精彩的測試還是先寫下來:「Call me Maybe: MariaDB Galera Cluster」,作者在 Stripe 花了很多時間在測試各種資料庫的資料正確性。\r\n\r\n由於 PerconaPercona XtraDB Cluster (PXC) 是基於 Galera Cluster 改出來的,再加上敝公司裡面大量使用 PXC,決定還是趕緊花時間看完整篇文章確認到底講了什麼。\r\n\r\n先講目前看到的結論:\r\n\r\n\r\n\r\n另外從其他討論串看起來,當所有人寫入都到同一台就沒有這些狀況,可以達到 1SR 的要求,這也是目前還蠻常見的系統設計,所以這次的問題看起來沒有這麼大。\r\n\r\n後面也提到裝 MySQL Cluster 裝了好幾個禮拜還是裝不起來的事情:\r\n\r\n
Galera is easy to install–I spent weeks trying to set up MySQL Cluster to no avail, and got Galera Cluster running in a matter of hours.
\r\n\r\n有種,不是很意外的感覺...\r\n\r\nAnyway,原文下面的 comment 可以看到 Baron Schwartz 也跑出來討論,另外在 GitHub 上有開始有討論了:「Snapshot Isolation may not be as isolated as one would like」,看起來直接戳破 Galera Cluster 支援 SI 的宣傳詞了,接下來拉板凳繼續看戲吧... XD", + "title": "測試 MariaDB 上 Galera Cluster 的 Isolation" + }, + { + "id": "5956", + "body": "AdobeTypekit 宣佈之後的 embed code 預設就會是 HTTPS only:「Font loading update: All HTTPS, all the time」。\r\n\r\n\"\"\r\n\r\n主要的原因是出自於最近發現的安全問題,攻擊者可以藉由字型處理的 security issue 攻擊,而導入 HTTPS 後可以降低這部分的風險:\r\n\r\n
We’ve made this change as a response to the recent vulnerabilities and exploits in the OpenType and TrueType font formats. A malicious attacker could use these vulnerabilities to modify a Typekit font while it is being transmitted from our servers to your browser. Serving fonts (and other resources) over HTTPS ensures that the communication channel between your browser and our servers is not compromised and fonts are delivered in a secure way.
\r\n\r\n就目前看起來,use.typekit.net 還是使用 EdgeCast 的 CDN 服務,在 HTTPS 上還是沒有 SPDY 或是 HTTP/2,對效能的影響還是要測試過才知道...", + "title": "Adobe 的 Typekit 推廣 HTTPS only" + }, + { + "id": "5957", + "body": "在「Introducing mysqlpump」這邊提到了 MySQL 5.7 將會有 mysqlpump 這個新工具,主要是避免影響 mysqldump,但又可以產生容易平行處理的 dump data:\r\n\r\n
The goal of mysqlpump is to have a modern utility that is extendable and has native support for parallelization.
\r\n\r\n看了一下範例還蠻簡單的 (目標也很明確),應該是之後的參考工具...", + "title": "MySQL 5.7 將會有新的備份工具 mysqlpump" + }, + { + "id": "5958", + "body": "前幾天 AWS 的「New – Resource-Oriented Bidding for EC2 Spot Instances」這篇文章提到 EC2 Spot Instance 可以用 capaciy 競標了,也就是以「資源的總量」來飆,而非指定某種型態的 instance。\r\n\r\n以文章裡的例子來說,假設要標 488 個單位的 capacity,那麼有可能出現:\r\n\r\n\r\n\r\n也有可能出現混搭的版本:\r\n\r\n\r\n\r\n對於某種 spot instance 價錢突然提高時,可以改用其他 instance 繼續執行,變得更有彈性...", + "title": "EC2 Spot Instance 可以用 Capacity 競標了" + }, + { + "id": "5959", + "body": "英文版維基百科針對付費帳號的反擊:「Hundreds of “black hat” English Wikipedia accounts blocked following investigation」。\r\n\r\n這邊講的「付費帳號」被定義為 undisclosed paid advocacy,也就是存在利益衝突但故意不揭露的情況。維基百科的人還產生了一張圖來說明這次 381 個帳號被停權檢查的情況:(黃色是 IP address,綠色是 username,可以看出很多重疊的情況)\r\n\r\n\"\"\r\n\r\n感覺應該可以把某些部分自動化掉...", + "title": "英文版維基百科對於付費帳號的反擊" + }, + { + "id": "5960", + "body": "在 Hacker News Daily 上看到的,是給 Power User 參考用的建議:「drduh/OS-X-Yosemite-Security-and-Privacy-Guide」。\r\n\r\n文章很長,所以我的建議是看過一次後把會用到的部分整理成 bash script,以後重新安裝時可以直接拿來用。", + "title": "關於 Mac OS X 10.10 的安全建議" + }, + { + "id": "5961", + "body": "一樣是在 Hacker News Daily 上看到的,在「World Airports Voronoi」這邊看到以全世界 2980 個機場為胞點所畫出來的 Voronoi Diagram (沃羅諾伊圖)。\r\n\r\n其中這張標出地球上離機場最遠的點,在南極洲上:\r\n\r\n\"\"\r\n\r\n另外還有離機場最遠的機場,復活節島上的 Mataveri International Airport (馬塔維里國際機場),距離最近的機場是 2602km。", + "title": "全世界離機場最遠的點" + }, + { + "id": "5962", + "body": "Scaleway 好像知道市場的殘酷了,這次宣佈大降價:「We are slashing the C1 price by 70 percent」。\r\n\r\n四核 ARMv7 + 2GB RAM + 50GB SSD 從本來的 €9.99/month 降到 €2.99/month,大約是 70% 的降幅。不過要記得這是未稅價,另外加上稅會變成 €3.59/month (20%),大約就是 USD$4/month 了。\r\n\r\n這價錢可以當玩具玩玩看...", + "title": "Scaleway 的降價 (ARMv7 VPS)" + }, + { + "id": "5963", + "body": "新版的 Google Chrome 使得 YouTube 可以繞過 Adblock 類軟體的阻擋限制 (像是 uBlock Origin),導致這些使用者會需要「看完完整的廣告影片 (無法 skip)」才能看本篇:「Google Chrome reportedly bypassing Adblock, forces users to watch full-length video ads」。\r\n\r\n目前確認這是在修正 CVE-2015-1297 時產生的 bug:\r\n\r\n
Update: We have been contacted by Rob Wu, a developer on the Chromium project - the open-source foundation for the Chrome browser - who has informed us that this change was not intentional but, rather, an unintended result of fixing a previous security issue (CVE-2015-1297). He confirmed that the issue will only be seen if the YouTube app is installed and that, at the moment, apart from disabling AdBlock or whitelisting YouTube, the only solution, as described above, is to uninstall the app. The problem is expected to be patched in the upcoming weeks or, at least, when Chrome 46 is released.
\r\n\r\n目前的暫時解法是移除掉 YouTube 這隻 app,或是將 YouTube 放到白名單網站。", + "title": "Google Chrome 會 bypass Adblock 的問題" + }, + { + "id": "5965", + "body": "Node.js 在 4.0 開始啟動 LTS (Long Term Support) 計畫:「Node v4.0.0 (Stable)」。\r\n\r\n可以參考「Node.js Long-term Support Working Group」這邊的說明。最主要的重點是生命週期,首先是每六個月就會放一次新版,跟 Ubuntu 相同,也都是四月與十月:\r\n\r\n
In parallel, we will be branching a new Stable line of releases every 6 months, one in October and one in April each year.
\r\n\r\n每個 LTS 版本將會有 18 + 12 = 30 個月的支援期:\r\n\r\n
This means that there will be overlapping LTS branches being maintained throughout the year, each receiving attention for a total of 30 months (LTS plus Maintenance).
\r\n\r\n這張圖說明了 LTS 與維護的時間線:\r\n\r\n\"\"\r\n\r\n有個 LTS 的指標可以挑了...", + "title": "Node.js 的 LTS 計畫" + }, + { + "id": "5966", + "body": "在「Prevent Blogger from Redirecting your Blogspot Blog to Country-Specific URLs」這篇文章裡提到了 Blog 的擁有人要怎麼避免 Google 把網址導到 country-based 的網域下。\r\n\r\n目前 Google Chrome 的使用者端可以安裝「NoCountryRedirect (NCR)」這個套件來避開這個問題,但你總不能要求每個人都裝套件...\r\n\r\n而這篇文章則說明了如何在 Blogger 裡插入一段 javascript 避免使用 country-based domain:\r\n\r\n
<script type=\"text/javascript\">\r\n \r\n  // Written by Amit Agarwal\r\n  \r\n  /* Get the full URL of the current blogger page */\r\n  var blog = document.location.href.toLowerCase();\r\n \r\n  /* Do not redirect if the domain is .com already */\r\n  if (!blog.match(/\\.blogspot\\.com/)) {\r\n \r\n    /* Replace the country TLD with .com and ncr switch */\r\n    blog = blog.replace(/\\.blogspot\\..*?\\//, \".blogspot.com/ncr/\");\r\n \r\n    /* Redirect to the new .com URL in the current tab */\r\n    window.location.replace(blog);\r\n  }\r\n \r\n  // Source: http://labnol.org/?p=21031\r\n  \r\n</script>
\r\n\r\n這樣做的好處主要是來自於 url 統一,對於統計、廣告以及分享的問題會減少很多。", + "title": "強迫 Blogger (Blogspot) 使用 blogspot.com 的網域 (而非 .tw)" + }, + { + "id": "5967", + "body": "LinkedIn 的工程師測試了 TCP Anycast 技術的穩定性以及效能:「TCP over IP Anycast - Pipe dream or Reality?」。\r\n\r\n由於 stateless 再加上一個封包就傳的完的情況下,Anycast 技術被用在 DNS 上已經很長一段時間了,目前大多數 CDN 業者也都有用 Anycast 技術加快 CDN 的回應速度。\r\n\r\n但 TCP 因為 stateful,如果 router 上採用的方式有問題,那麼就會導致封包可能會送到不同節點,這會是個嚴重的問題。不過很早之前,幾乎所有的骨幹 router 都已經支援 flow-based load balancing policy:\r\n\r\n
Most routers now do a per-flow load balancing, meaning packets on a TCP connection are always sent over the same path, but even a small percentage of routers with per-packet load balancing can cause the website to be unreachable for users behind that router.
\r\n\r\n所以 LinkedIn 的人試著測試 TCP Anycast 技術的穩定性:\r\n\r\n
So, to validate the assumption that TCP over anycast in the modern internet is no longer a problem, we ran a few synthetic tests.
\r\n\r\n測試的方式是設定 web server,讓下載速度不快,然後設了好幾個點並且放出對應的 routing,用 Catchpoint 服務監控,如果不穩定的話,應該就會收到 RST 中斷連線:\r\n\r\n
We configured our U.S. PoPs to announce an anycast IP address and then configured multiple agents in Catchpoint, a synthetic monitoring service, to download an object from that IP address. Our web servers were configured to deliberately send the response back slowly, taking over a minute for the complete data transfer. If the internet was unstable for TCP over anycast, we would observe continuous or intermittent failures when downloading the object. We would also observe TCP RSTs at the PoPs.
\r\n\r\n而好消息是,測試起來相當穩定:\r\n\r\n
But even after running these tests for a week, we did not notice any substantial instability problems! This gave us confidence to proceed further.
\r\n\r\n所以也因此可以看到 CacheFlyCloudFlare 兩家採用 TCP Anycast 技術:\r\n\r\n
[S]ome popular CDNs have also started using anycast for HTTP traffic.
\r\n\r\n由於穩定性的部份沒問題,所以接下來就是討論效率。\r\n\r\nAnycast 是基於 routing 而決定要怎麼走,目標是希望可以透過 routing 取得 latency 最低的點。但實務上會把成本考慮進去,有可能會走到比較遠的點。在測試中可以發現北美的部份 Anycast 表現的比 GeoIP 好,但離開北美就掉很多:\r\n\r\n\"\"\r\n\r\n所以 LinkedIn 決定用「Regional Anycast」,先用 GeoIP 決定要丟到哪個洲,而每個洲共用一個 Anycast 位置,這個方法讓效能提昇不少,全球在分配時 sub-optimal 的比率從 31% 降到 10% (i.e. 沒有分配到最好的點的比率):\r\n\r\n\"\"\r\n\r\n上面主要是讀 LinkedIn 文章的心得,後面就是感想了。\r\n\r\nTCP Anycast 用 CDN 上其實是相當吃虧的技術,由於 routing 的掌控權不再自己手上,有很多重要的手段是沒辦法做到的。\r\n\r\n首先是當對外流量已經滿載時,不能切換到其他機房的機器,這邊講的「對外流量」不是 CDN 本身而已,而是中途任何的線路滿載都算,像是 HiNet 對 CloudFlare 香港機房的情況就很明顯。\r\n\r\n另外在被 DDoS 時,由於沒辦法導流,在被攻擊時幾乎只剩下 clean pipe 類的解法,而同時間其他用戶會因為流量大量流入機房而一起被波及到。GeoIP 的方式彈性就大很多。\r\n\r\n當然,還是有可以列出來的好處。主要是對於需要有固定 IP 應用來說 (像是 firewall 設定需求),TCP Anycast 滿足了這點。\r\n\r\n只能說不同市場有不同的產品線在供應啦,不同的情境下有不同的需求...", + "title": "LinkedIn 的工程師分析 TCP Anycast 技術的穩定性與效能" + }, + { + "id": "5968", + "body": "看到「WordPress and PHP7」這篇,先講題外話,居然是 make.wordpress.org 這個網址... XD\r\n\r\n回到主題,WordPress 正在測試 PHP 7 的相容性,並且呼籲 theme 與 plguin 作者也應該加入測試。\r\n\r\n之所以會這麼重視 PHP 7,主要還是因為對效能的提昇感到興奮:\r\n\r\n
One of the most notably is substantial performance improvements.Benchmarks of WordPress using PHP7 are showing a 2-3x speed improvement compared to PHP5.6.
\r\n\r\n目前 blog 跑的是 5.6,等 7.0 正式出的時候來測一次吧,到時候要升級前先打一輪 5.6,升級後再打一輪 7.0,看看效能差異如何。", + "title": "WordPress 緊鑼密鼓的測試 PHP7..." + }, + { + "id": "5969", + "body": "Amazon Redshift 剛剛公佈可以使用 Python 寫 UDF:「Introduction to Python UDFs in Amazon Redshift」。\r\n\r\nRedshift 是先編成 byte code 後再跑,所以不會有 C 或是 C++ 那麼快:\r\n\r\n
The Python execution in Amazon Redshift is also run as compiled byte code. Although this still won’t be as fast as the native C++ that runs your SQL, it will still be much faster than running through a Python interpreter.
\r\n\r\n不過因為彈性增加,以前必須用多個 SQL 甚至透過 temporily table 多次運算才能組出來的計算,現在用 UDF 應該會快很多。\r\n\r\n而 Periscope 的人則馬上放出來一份他門所撰寫的版本:「Redshift User Defined Functions in Python」,程式可以在 GitHub 上的「Redshift UDF Harness」這邊取得。\r\n\r\n可以用 UDF 變得方便很多啊,權重計算之類的好做不少...", + "title": "Amazon Redshift 支援用 Python 寫 UDF" + }, + { + "id": "5970", + "body": ".onion 被用在 Torhidden service,而現在從不同的面向要保護這個 root domain 不被註冊,在 IETF 的 blog 上看到「.onion」這篇文章就是其中一個方向。\r\n\r\n這邊的計畫是把 .onion 域名當作像是 .local.localhost.example 這樣的特殊域名保護 (參考 RFC 6761「Special-Use Domain Names」) 而提了一個新的 RFC (目前是 draft):「The .onion Special-Use Domain Name」。\r\n\r\n如果通過的話,就有一個標準可以遵循,不然現在對 .onion 一直都是 De-facto standard...", + "title": ".onion 的域名保護" + }, + { + "id": "5971", + "body": "很久前是用 tpcc-mysql 測試 MySQL 效能:「用 tpcc-mysql 測試 LSI 的 Nytro MegaRAID NMR 8100-4i」,最近剛好又有測試需求,想說拿來學個新玩具測試,就想到 sysbench 的 oltp 測試。\r\n\r\n先用 Google 找了找測試的方式,appleboy 之前寫的「Sysbench 測試 Percona XtraDB Server 效能」算是還不錯的文件,就拿來當起點了。\r\n\r\n我是拿 AWS 測試,主要是因為幾乎所有的效能都是固定的,這樣測出來才有意義。\r\n\r\nAmazon EC2 用 c4.8xlarge,用 10Gbps 網路測試會比較準確一點。硬碟的部份是掛上 100GB 的 SSD 硬碟,如果是測 I/O bound 的人就選擇有固定 IOPS 的 Provisioned 版本,但我這次測的都是 CPU bound,就只選用 General 版本了。\r\n\r\n跑起 Ubuntu 14.04 後直接用 apt-get install sysbench 就可以裝起來了。\r\n\r\nPercona 的 apt repository 設定可以參考官方的「Installing Percona Server on Debian and Ubuntu」這篇文章。設好後要裝什麼版本測試就是自己的選擇了。\r\n\r\n都裝好後,測試的方式是先用 prepare 塞資料,再用 run 測試。\r\n\r\n這是 prepare 部份的指令:(粗體字的 x 需要帶入自己對應的參數)\r\n\r\n
sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=x --mysql-user=x --mysql-password=x --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=10000000 prepare
\r\n\r\n這是 run 部份的指令,我這邊用了 --oltp-read-only=on 只測 read transaction 的速度:\r\n\r\n
sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=x --mysql-user=x --mysql-password=x --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=10000000 --oltp-read-only=on --num-threads=256 --report-interval=5 --max-time=60 --max-requests=0 run
\r\n\r\n大致上就是這樣測,然後用 gnuplot 畫圖。", + "title": "用 sysbench 測試 MySQL 效能" + }, + { + "id": "5973", + "body": "在「Modular visual interface for GDB in Python」這邊看到的 gdb 畫面:\r\n\r\n\"\"\r\n\r\n用 Python 寫的...", + "title": "更絢麗的 .gdbinit 檔" + }, + { + "id": "5974", + "body": "昨天的大新聞,CloudFlare 宣佈跟百度合作進入中國市場:「How We Extended CloudFlare's Performance and Security Into Mainland China」。\r\n\r\n\"\"\r\n\r\n在「China network」這邊可以看到各種限制,首先是需要有牌 (ICP) 才能用:\r\n\r\n
CloudFlare customers that wish to serve traffic for their domains across the China network must possess a valid Internet Content Provider (ICP) license. An ICP license is a Chinese government issued license required to host or cache Internet content within mainland China. Learn more about how you can obtain an ICP license here.
\r\n\r\n另外是不支援 HTTPS:\r\n\r\n
For the moment the China network does not support HTTPS traffic (HTTP only). Support for SSL/TLS will be made available in the coming months.
\r\n\r\n目前只開放給 Enterprise 用戶:\r\n\r\n
Initially, the China network will be limited to Enterprise customers. Over time, as we are better able to operationalize the onboarding of customers, we hope to extend the benefits to all plan levels.
\r\n\r\n由於要 ICP 的關係,對於境外網站沒有太多幫助。另外也不確定是不是還是用 Anycast 技術,如果是的話就要煩惱某些網站的流量有機會被導到中國了。", + "title": "CloudFlare 跟百度合作進入中國市場" + }, + { + "id": "5976", + "body": "Let's Encrypt 宣佈有新的進度了,已經可以從 Root Certificate 簽其他的 SSL Certificate 了:「Our First Certificate Is Now Live」。\r\n\r\n測試的網站在 https://helloworld.letsencrypt.org/ 這邊,目前應該還是屬於不信任狀態。一旦 cross sign 或是被加到瀏覽器內,這個網站應該就會馬上生效了。\r\n\r\n接下來會同時做幾件事情:\r\n\r\n\r\n\r\n總算又聽到新的進度了...", + "title": "Let's Encrypt 的新進展" + }, + { + "id": "5977", + "body": "超越國界,同一種故事總是會在不同地方看到:\r\n\r\n\"\"", + "title": "人總是有很多感嘆的..." + }, + { + "id": "5978", + "body": "FireEye 發表了一篇在 Cisco Router 上發現被植入的後門:「SYNful Knock - A Cisco router implant - Part I」。\r\n\r\n發現這些被植入的 router 被散佈在四個地區:\r\n\r\n
Mandiant can confirm the existence of at least 14 such router implants spread across four different countries: Ukraine, Philippines, Mexico, and India.
\r\n\r\n包括了這幾個型號:\r\n\r\n\r\n\r\n後門的特性是使用特殊的封包啟動:\r\n\r\n
SYNful Knock is a stealthy modification of the router's firmware image that can be used to maintain persistence within a victim's network. It is customizable and modular in nature and thus can be updated once implanted. Even the presence of the backdoor can be difficult to detect as it uses non-standard packets as a form of pseudo-authentication.
\r\n\r\n最主要的重點是把記憶體保護機制關閉 (都變成 RW):\r\n\r\n
The malware forces all TLB Read and Write attributes to be Read-Write (RW). We believe this change is made to support the hooking of IOS functions by loaded modules.
\r\n\r\n文後也有提到 Cisco 的文章,如何 dump image 分析:「Offline Analysis of IOS Image Integrity」。", + "title": "在 Cisco Router 上被植入的後門" + }, + { + "id": "5979", + "body": "蘋果的 iOS 9 在今天放出來了,更新完以後可以用 Content Blocking 擋廣告,剛剛測過可以擋下全頁式的廣告。\r\n\r\n這篇要介紹了的是「Crystal」這個目前限時免費的 app,你可以在「Crystal - Block Ads, Browse Faster.」這邊下載安裝。\r\n\r\niOS 9 的 Content Blocking 功能必須要應用程式支援,而目前只有 Safari 有支援,所以以下的測試是用 Safari 打開行動版的 Facebook (https://m.facebook.com/) 測試的,就拿這篇先來測試:(這張圖片是後來抓的,所以時間是 06:20)\r\n\r\n\"\"\r\n\r\n直接打開會先出現全版廣告 (第一張圖),關掉後還會有大量的廣告 (第二張圖):\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n接著我們打開 Crystal,可以看到什麼都沒得設,因為這套軟體已經做完了:(這張圖片是剛裝完就裝的,所以是 06:00)\r\n\r\n\"\"\r\n\r\n接著到「設定」裡面打開 Safari 的阻擋功能:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n改完後就會是乾淨而且沒有廣告的版本了:\r\n\r\n\"\"", + "title": "在 iOS 9 裡安裝 Crystal 擋掉全版廣告" + }, + { + "id": "5980", + "body": "在「Announcing NGINX Plus R7」這邊 nginx 透漏了目前 HTTP/2 的進度。\r\n\r\nNGINX Plus 是商業版本,這次將釋出 HTTP/2 功能:\r\n\r\n
NGINX Plus now provides a fully supported implementation of the new HTTP/2 web standard. NGINX Plus can be deployed as a front-end HTTP/2 gateway and accelerator for both new and existing web services.
\r\n\r\n而 open source 版本也將會在 NGINX Plus R7 版釋出後放出:\r\n\r\n
Based on user testing from the alpha-level patch, and with the early support from corporate co-sponsors Automattic and Dropbox, the final open source version of HTTP/2 will become available following the release of R7.
\r\n\r\n如同之前提到的,nginx 的實作上會將 HTTP/2 與 SPDY 分開,所以 package 是分開的:\r\n\r\n
HTTP/2 support is available in the optional nginx‑plus‑http2 package only. The nginx‑plus and nginx‑plus‑extras packages provide SPDY support and are currently recommended for production sites because of wider browser support and code maturity.
\r\n\r\n至於 open source 版本會怎麼規劃就等看看了...", + "title": "nginx 的 HTTP/2" + }, + { + "id": "5981", + "body": "在「MapLatency.com」這邊看到「MapLatency.com - Check latency, ping, dns , page load from multiple locations」這個網站。\r\n\r\n像是 8.8.8.8 這種 anycast 的點的結果還蠻有趣的:\r\n\r\n\"\"", + "title": "從全世界各地偵測 latency 的網站" + }, + { + "id": "5982", + "body": "Amazon S3 推出了新的種類:「AWS Storage Update – New Lower Cost S3 Storage Option & Glacier Price Reduction」。\r\n\r\n原先只有「Standard」、「Reduced Redundancy Storage」以及「Glacier Storage」三種,現在多了一種「Standard - Infrequent Access Storage」。\r\n\r\n首先是計價模式,儲存的單價變便宜很多,但存取是要另外收錢的:\r\n\r\n
$0.0125 / gigabyte / month (one and one-quarter US pennies), with a 30 day minimum storage duration for billing, and a $0.01 / gigabyte charge for retrieval (in addition to the usual data transfer and request charges).
\r\n\r\n拉資料的費用相當的貴啊一個月拉兩次就超過 Standard Storage 的價錢了,所以這個「Infrequent」的要求其實頗嚴苛的...\r\n\r\n另外空間的部份以 128KB 為最小單位在計價的:\r\n\r\n
Further, for billing purposes, objects that are smaller than 128 kilobytes are charged for 128 kilobytes of storage.
\r\n\r\n所以綜合起來看,Infrequent Access Storage 的設計上是拿來堆資料備份,但希望拉資料時很快就可以拉出來。其實就是 Google Cloud StorageNearline 的想法,一樣有存取另外收費的項目。不過 Nearline 有說平均的 latency 是三秒:\r\n\r\n\"\"\r\n\r\n但 IA 好像是跟 Standard 相同等級?至少文章裡沒有提到...", + "title": "Amazon S3 推出新的種類:Standard - Infrequent Access Storage" + }, + { + "id": "5983", + "body": "在「Find Out How Much Traffic a Website Gets」這邊講到了五個分析網站流量的工具,分別是 AlexaCompeteSimilar WebSEM Rush 以及 Quantcast。\r\n\r\n由於你不可能知道其他網站的實際流量,這些都是估算值,就只是拿來參考用的,幫助你稍微有個概念而已 :p", + "title": "分析網站流量的工具" + }, + { + "id": "5985", + "body": "出自 EFF 的「Takedown Senders Must Consider Fair Use, Ninth Circuit Rules」這篇,案件可以參考「Lenz v. Universal Music Corp.」這篇,或是 EFF 整理的「Lenz v. Universal」這篇,由 EFF 發起訴訟控告環球侵犯合理使用權:\r\n\r\n
The Electronic Frontier Foundation (EFF) filed suit against Universal Music Publishing Group (UMPG) asking a federal court to protect the fair use and free speech rights of a mother who posted a short video of her toddler son dancing to a Prince song on the Internet.
\r\n\r\n起因在於 Stephanie Lenz 上傳了一段 29 秒的影片,背景有 Let's Go Crazy 這首歌的音樂,而被環球發 DMCA takedown notification 下架:\r\n\r\n
Stephanie Lenz's 29-second recording shows her son bouncing along to the Prince song \"Let's Go Crazy \" which is heard playing in the background. Lenz uploaded the home video to YouTube in February to share it with her family and friends.
\r\n\r\n\r\n\r\n後來 Stephanie Lenz 發出 counter notification 並且控告環球濫用 DMCA notification:\r\n\r\n
In late June 2007, Lenz sent YouTube a counter-notification, claiming fair use and requesting the video be reposted. Six weeks later, YouTube reposted the video. In July 2007, Lenz sued Universal for misrepresentation under the DMCA and sought a declaration from the court that her use of the copyrighted song was non-infringing. According to the DMCA 17 U.S.C. § 512(c)(3)(A)(v), the copyright holder must consider whether use of the material was allowed by the copyright owner or the law.
\r\n\r\n而環球直接挑明不在意 fair use:\r\n\r\n
In September 2007, Prince released statements that he intended to \"reclaim his art on the internet.\" In October 2007, Universal released a statement amounting to the fact that Prince and Universal intended to remove all user-generated content involving Prince from the internet as a matter of principle.
\r\n\r\n於是雙方就從 2007 年開始一路打官司,首先的判決是地方法院認為 DMCA takedown 必須確認侵權事實才能發,這包括了要確認 fair use:\r\n\r\n
The district court held that copyright owners must consider fair use before issuing DMCA takedown notices. Thus, the district court denied Universal's motion to dismiss Lenz's claims, and declined to dismiss Lenz's misrepresentation claim as a matter of law.
\r\n\r\n同時認為環球濫用 DMCA takedown notification:\r\n\r\n
The district court believed that Universal's concerns over the burden of considering fair use were overstated, as mere good faith consideration of fair use, not necessarily an in-depth investigation, is sufficient defense against misrepresentation. The court also explained that liability for misrepresentation is crucial in an important part of the balance in the DMCA.
\r\n\r\n然後就是一路往上打,打到前幾天第九巡迴上訴法院宣佈維持原來判決定案。這是官方放出的 PDF:「UNITED STATES COURT OF APPEALSFOR THE NINTH CIRCUIT (PDF)」。Summary 的部份提到這次判決的結論:\r\n\r\n
The panel held that the DMCA requires copyright holders to consider fair use before sending a takedown notification, and that failure to do so raises a triable issue as to whether the copyright holder formed a subjective good faith belief that the use was not authorized by law.
\r\n\r\n這個判決使得目前使用機器自動無條件送 takedown notification 的程式也會受到規範,後續看 EFF 怎麼出招了...", + "title": "第九巡迴上訴法院:DMCA takedown notification 必須先確認是否為合理使用 (Fair Use)" + }, + { + "id": "5988", + "body": "iOS 9 的一個重要功能是未知來電的顯示:「iOS 9 tells you who that unknown caller is」。\r\n\r\n\"\"\r\n\r\n等於是讓 Whoscall 在 iOS 上退場了。", + "title": "iOS 9 的未知來電顯示功能" + }, + { + "id": "5989", + "body": "在「測試 MariaDB 上 Galera Cluster 的 Isolation」這篇提到了 StripeKyle Kingsbury 寫了「Call me Maybe: MariaDB Galera Cluster」這篇文章,在討論 Galera Cluster 的 Isolation 問題。\r\n\r\nPercona 的 CTO Vadim Tkachenko 寫了回應的文章:「Clarification on “Call me Maybe: MariaDB Galera Cluster”」。\r\n\r\n看完後再跑去翻了一些資料,首先是 SQL 92 對 Isolation 的原始定義,尤其是對 REPEATABLE-READ 的定義。\r\n\r\nREPEATABLE-READ 是透過 P2 (\"Non-repeatable read\") 來定義的,只要保證不會發生 P2 就是 REPEATABLE-READ 了:\r\n\r\n
P2 (\"Non-repeatable read\"): SQL-transaction T1 reads a row. SQL-transaction T2 then modifies or deletes that row and performs a COMMIT. If T1 then attempts to reread the row, it may receive the modified value or discover that the row has been deleted.
\r\n\r\n也就是說,T1 讀過的 row 只要在 T1 transaction 的期間內都保持一樣就可以。由於沒有多餘其他保證,所以有機會產生 P3 (\"Phantom\") 問題:\r\n\r\n
P3 (\"Phantom\"): SQL-transaction T1 reads the set of rows N that satisfy some . SQL-transaction T2 then executes SQL-statements that generate one or more rows that satisfy the used by SQL-transaction T1. If SQL-transaction T1 then repeats the initial read with the same <search condition>, it obtains a different collection of rows.
\r\n\r\n但 SERIALIZABLEREPEATABLE-READ 的定義方式不同,並不是避免 P3 就可以叫做 SERIALIZABLE。SQL 92 定義說明必須與序列執行的結果一樣才能叫做 SERIALIZABLE:\r\n\r\n
The execution of concurrent SQL-transactions at isolation level SERIALIZABLE is guaranteed to be serializable. A serializable execution is defined to be an execution of the operations of concurrently executing SQL-transactions that produces the same effect as some serial execution of those same SQL-transactions. A serial execution is one in which each SQL-transaction executes to completion before the next SQL-transaction begins.
\r\n\r\n所以依照定義,SERIALIZABLE 一定可以避免 P3 發生,但避免了 P3 不代表做到 SERIALIZABLE。\r\n\r\n另外一份資料是「MySQL :: MySQL 5.6 Reference Manual :: 13.3.6 SET TRANSACTION Syntax」對於 MySQL 5.6 中 InnoDB 實作 REPEATABLE-READ 的細節:\r\n\r\n
This is the default isolation level for InnoDB. For consistent reads, there is an important difference from the READ COMMITTED isolation level: All consistent reads within the same transaction read the snapshot established by the first read. This convention means that if you issue several plain (nonlocking) SELECT statements within the same transaction, these SELECT statements are consistent also with respect to each other. See Section 14.2.2.2, “Consistent Nonlocking Reads”.
\r\n\r\nInnoDB 的 REPEATABLE-READ 會在第一次讀取時建立一份 snapshot,所以 MySQL 的 REPEATABLE-READ 有達到不產生 P2 的要求,但也因為 snapshot 的關係而不會產生 P3,不過也就僅此而已,寫入的部份還是沒有達到 SERIALIZABLE 的要求。\r\n\r\n回到原來的文章所整理出來的測試資料 (我稍微排版過),在這兩個不同的 transaction 同時發生時:(不同人都轉帳給 id = 8)\r\n\r\n
BEGIN; -- T1\r\nSELECT balance FROM accounts WHERE account_id = 5;\r\nSELECT balance FROM accounts WHERE account_id = 8;\r\nUPDATE account SET balance = 75 WHERE account_id = 5;\r\nUPDATE account SET balance = 125 WHERE account_id = 8;\r\nCOMMIT;
\r\n\r\n
BEGIN; -- T2\r\nSELECT balance FROM accounts WHERE account_id = 6;\r\nSELECT balance FROM accounts WHERE account_id = 8;\r\nUPDATE account SET balance = 80 WHERE account_id = 6;\r\nUPDATE account SET balance = 120 WHERE account_id = 8;\r\nCOMMIT;
\r\n\r\nSERIALIZABLE 保證執行結果會與某種循序的結果相符 (可能是 T1 -> T2,也可能是 T2 -> T1)。但 REPEATABLE-READ 只保證在 transaction 裡面看到的 row 不會變化。\r\n\r\n在 MySQL 裡,如果你想要跟 MySQL 告知「變更的結果會收到某些欄位的值的影響」,你至少要用 LOCK IN SHARE MODE 來做 (或是用 FOR UPDATE 會更清楚表示出意思),也就是:\r\n\r\n
BEGIN; -- T1\r\nSELECT balance FROM accounts WHERE account_id = 5 LOCK IN SHARE MODE;\r\nSELECT balance FROM accounts WHERE account_id = 8 LOCK IN SHARE MODE;\r\nUPDATE account SET balance = 75 WHERE account_id = 5;\r\nUPDATE account SET balance = 125 WHERE account_id = 8;\r\nCOMMIT;
\r\n\r\n
BEGIN; -- T2\r\nSELECT balance FROM accounts WHERE account_id = 6 LOCK IN SHARE MODE;\r\nSELECT balance FROM accounts WHERE account_id = 8 LOCK IN SHARE MODE;\r\nUPDATE account SET balance = 80 WHERE account_id = 6;\r\nUPDATE account SET balance = 120 WHERE account_id = 8;\r\nCOMMIT;
\r\n\r\n這樣至少會有一個 transaction 會出現 deadlock 訊息,於是就會確保是正確的結果:\r\n\r\n
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
\r\n\r\n值得一提的是,Percona 文章提到的第二種解法是有問題的:\r\n\r\n
BEGIN;\r\nSELECT balance FROM accounts WHERE account_id = 5;\r\nSELECT balance FROM accounts WHERE account_id = 8;\r\nUPDATE account SET balance = balance - 25 WHERE account_id = 5;\r\nUPDATE account SET balance = balance + 25 WHERE account_id = 8;\r\nCOMMIT;
\r\n\r\n這樣「總和」會因為保證原子性 (atomicity) 所以不會產生問題,但 balance 可能會產生出負數。\r\n\r\n所以結論是 Kyle Kingsbury 那篇文章測試的方法本來就有問題,在 SELECT 時少了 LOCK IN SHARE MODE 或是 FOR UPDATE 的要求。", + "title": "從頭學一次 Isolation level 的 REPEATABLE-READ 與 SERIALIZABLE" + }, + { + "id": "5991", + "body": "Google Online Security Blog 上公佈了一篇他們最近的發現,並且發佈 Google Chrome 的安全性更新:「Improved Digital Certificate Security」。\r\n\r\n原因出自於 Thawte (Symantec) 發出 www.google.com 的 EV SSL certificate:\r\n\r\n
On September 14, around 19:20 GMT, Symantec’s Thawte-branded CA issued an Extended Validation (EV) pre-certificate for the domains google.com and www.google.com. This pre-certificate was neither requested nor authorized by Google.
\r\n\r\nGoogleCertificate Transparency 上發現:\r\n\r\n
We discovered this issuance via Certificate Transparency logs, which Chrome has required for EV certificates starting January 1st of this year. The issuance of this pre-certificate was recorded in both Google-operated and DigiCert-operated logs.
\r\n\r\n對應的 certificate 紀錄可以在「crt.sh | 9314698」這邊看到,包括了 public key 資訊。\r\n\r\n然後 Google 跟 Symantec 確認後認定是內部測試造成的 (...):\r\n\r\n
During our ongoing discussions with Symantec we determined that the issuance occurred during a Symantec-internal testing process.
\r\n\r\n並且發出安全性更新把這把 key 放到 Google Chrome 的 revocation metadata 裡:\r\n\r\n
We have updated Chrome’s revocation metadata to include the public key of the misissued certificate. Additionally, the issued pre-certificate was valid only for one day.
\r\n\r\n一天的內部測試嗎?我怎麼覺得更像是 APT 攻擊?\r\n\r\n最後補充一下,在 Google Chrome 裡面 *.google.com 的網段的 SSL certificate 是被特別保護的,可以參考「transport_security_state_static.json」這邊的 JSON 資料,裡面可以看到這幾段:\r\n\r\n
    {\r\n      \"name\": \"google\",\r\n      \"static_spki_hashes\": [\r\n        \"GoogleBackup2048\",\r\n        \"GoogleG2\",\r\n        \"GeoTrustGlobal\"\r\n      ],\r\n      \"report_uri\": \"http://clients3.google.com/cert_upload_json\"\r\n    },
\r\n\r\n以及:\r\n\r\n
    // (*.)google.com, iff using SSL, must use an acceptable certificate.\r\n    { \"name\": \"google.com\", \"include_subdomains\": true, \"pins\": \"google\" },
\r\n\r\n也就是只有 Google 自己的 CA 與 GeoTrust 的 CA 是被允許發出 www.google.com 的 SSL certificate (至少在 Google Chrome 裡面會被保護到)。而 GeoTrust 也是 Symantec 的牌子。\r\n\r\n如果讓我以陰謀論的角度來猜,這更像是在測試有會有哪些管道通報會讓 Google 發現。", + "title": "Thawte (Symantec) 發出 www.google.com 的 EV SSL certificate" + }, + { + "id": "5992", + "body": "D-LinkDCS-5020L 的 open source package (因 GPL 要求) 裡放了簽名用的 private key:「D-Link spilled its private key onto the web – letting malware dress up as Windows apps」。\r\n\r\n而這把 key 由 Verisign 所簽,因此被 Windows 所信任,所以這把 key 可以用來簽 malware:\r\n\r\n\"\"\r\n\r\n而不幸的是,這把 key 已經洩漏出來超過半年了:\r\n\r\n
The D-Link key was leaked in late February, and expired on September 3, it appears.
\r\n\r\n又是一連串的 revoke 過程... orz", + "title": "D-Link 的 open source package 內包含了拿來簽名用的 Private Key" + }, + { + "id": "5993", + "body": "GitHub Engineering 的「Subresource Integrity」這篇提到了新的 W3C 提案「Subresource Integrity」。\r\n\r\n其實就是要做這件事情:\r\n\r\n
<script src=\"https://example.com/example-framework.js\"\r\n        integrity=\"sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=\"\r\n        crossorigin=\"anonymous\"></script>
\r\n\r\n可以確保 CDN 被攻陷時還有一定程度的抵抗力。在 MDN 上的「Subresource Integrity」也可以參考。\r\n\r\n目前 Google Chrome 45+ (stable 版) 與 Firefox 43 (目前是 Nightly 版) 有支援。", + "title": "Subresource Integrity" + }, + { + "id": "5995", + "body": "網站的 SSL certificate 弄過很多次了,想說來測看看 MX host 的部份。弄好後就會像這樣,這是 Varnish 的 mailing list:\r\n\r\n
Received: from project.varnish-software.com (project.varnish-software.com [194.31.39.164])\r\n        (using TLSv1 with cipher AES256-SHA (256/256 bits))\r\n        (No client certificate requested)\r\n        by home.gslin.org (Postfix) with ESMTPS id 9C2F568009A\r\n        for ; Mon, 21 Sep 2015 08:46:30 +0800 (CST)
\r\n\r\n這是 nginx 的 mailing list 寄過來的信:\r\n\r\n
Received: from mail.nginx.com (mail.nginx.com [206.251.255.65])\r\n        (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\r\n        (No client certificate requested)\r\n        by home.gslin.org (Postfix) with ESMTPS id 4A4F26801E0\r\n        for ; Mon, 21 Sep 2015 08:25:37 +0800 (CST)
\r\n\r\n還有些 cipher 的細節晚點再看看有沒有辦法再調整好了... 因為 MX 這樣設定,這次也順便試著用 StartSSL 申請了好幾個 SSL certificate:\r\n\r\n
;; ANSWER SECTION:\r\ngslin.org.              3600    IN      MX      20 mx20.gslin.org.\r\ngslin.org.              3600    IN      MX      0 mx0.gslin.org.
\r\n\r\n因為有兩個 MX,所以申請了 mx0.gslin.orgmx20.gslin.org 的 SSL certificate。\r\n\r\n接下來的設定主要是參考「Postfix TLS Support」裡面的文件,以及 Google 後找到的很多資料...\r\n\r\n在申請到了 SSL certificate 之後要先把 intermediate certificate 合併,然後在 Postfixmain.cf 裡這樣設定:\r\n\r\n
#\r\nsmtpd_tls_cert_file = /etc/ssl/certs/mx0.gslin.org-intermediate.crt\r\nsmtpd_tls_key_file = /etc/ssl/private/mx0.gslin.org.key\r\nsmtpd_tls_received_header = yes\r\nsmtpd_tls_security_level = may
\r\n\r\n設好後就可以用「TLS Receiver Test」這個工具測試,輸入 admin@gslin.org 可以看到兩台都過了。\r\n\r\n然後是對外送信的部份,發現 msa.hinet.net 也有支援 STARTTLS,所以 smart relay 也可以用,這部份可以透過 tcpdump -n -vvvv -A -i ppp0 host 168.95.4.211 確認。寄出來的結果會是這樣:\r\n\r\n
Received: from home.gslin.org (114-32-152-63.HINET-IP.hinet.net [114.32.152.63])\r\n\tby msr9.hinet.net (8.14.9/8.14.9) with ESMTP id t8L2l1gU006249\r\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO)\r\n\tfor ; Mon, 21 Sep 2015 10:47:01 +0800 (CST)
\r\n\r\n而 Postfix 的設定是這樣設的:\r\n\r\n
smtp_tls_note_starttls_offer = yes\r\nsmtp_tls_security_level = encrypt\r\nsmtp_use_tls = yes
", + "title": "把 SMTP 的 SSL certfiticate 弄起來..." + }, + { + "id": "5996", + "body": "在「AVG can sell your browsing and search history to advertisers」這邊整理的比較清楚:\r\n\r\n
The updated policy explained that AVG was allowed to collect \"non-personal data\", which could then be sold to third parties.
\r\n\r\n或是抓原文:\r\n\r\n
Do you share my data?\r\n\r\nYes, though when and how we share it depends on whether it is personal data or non-personal data. AVG may share non-personal data with third parties and may publicly display aggregate or anonymous information.
\r\n\r\n新的條款會在今年 (2015) 的十月十五日生效。", + "title": "AVG 更新隱私條款,以便能夠蒐集使用者的搜尋紀錄並且賣給其他人" + }, + { + "id": "5999", + "body": "Percona 正式推出與 MongoDB 相容的產品 Percona Server for MongoDB:「Percona Delivers Free, Open Source Percona Server for MongoDB」。\r\n\r\n挑重點講,其實最重要的是 data engine 多了 Percona 自家的 PerconaFT 以及 FacebookRocksDB:\r\n\r\n
Percona Server for MongoDB offers all the features of MongoDB 3.0 Community Edition, along with two additional storage engine options – PerconaFT and Facebook’s RocksDB
\r\n\r\nPerconaFT 是基於被併購的 Tokutek 所研發的 TokuDB (Fractal tree index) 而誕生的產品,在效能上有相當的優勢...\r\n\r\n如果有機會的話來研究看看吧 :o", + "title": "Percona 正式推出相容於 MongoDB 的產品「Percona Server for MongoDB」" + }, + { + "id": "6000", + "body": "最近在 Facebook 上常看到有同事在抱怨破圖,其實是 168.95.1.1 的問題... 在 zsh 下跑一百次查詢可以偵測到對應的問題,不只是 Facebook 的網站,包括 HiNet 自家網站都查不到:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [01:12/W5] repeat 100 host www.hinet.net 168.95.1.1 | grep REFUSED\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)\r\nHost www.hinet.net not found: 5(REFUSED)
\r\n\r\n隔壁的 168.95.192.1Google 家的 8.8.8.8 就沒這個問題:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [01:13/W5] repeat 100 host www.hinet.net 168.95.192.1 | grep REFUSED\r\ngslin@GSLIN-HOME1404 [~] [01:13/W5] repeat 100 host www.hinet.net 8.8.8.8 | grep REFUSED     \r\ngslin@GSLIN-HOME1404 [~] [01:14/W5]
\r\n\r\n所以 workaround 就呼之欲出了:把 DNS resolver 換成 8.8.8.8。", + "title": "最近 Facebook 破圖的問題 (168.95.1.1 出問題)" + }, + { + "id": "6002", + "body": "Google 推出了 Brotli 這個無損壓縮法:「Introducing Brotli: a new compression algorithm for the internet」。\r\n\r\nGoogle 推出的 Zopfli 相容於 DEFLATE 的超慢壓縮演算法,但可以多壓榨出 3%~8% 的壓縮率。而 Brotli 則是重新設計,壓縮與解壓縮速度跟 DEFLATE 差不多,但壓縮率比 Zopfli 多了 20%~26%。\r\n\r\n
This new format allows us to get 20–26% higher compression ratios over Zopfli. In our study ‘Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms’ we show that Brotli is roughly as fast as zlib’s Deflate implementation.
\r\n\r\n由於目標是希望讓瀏覽器支援新的壓縮法,Google 把 Brotli 往 RFC 提案,試著變成公開標準:「Brotli Compressed Data Format」。\r\n\r\n看了看 commit log,看起來已經開發一陣子了...", + "title": "Google 推出 Brotli 無損壓縮法" + }, + { + "id": "6003", + "body": "照目前公開的報導說,幹這件事情的人被幹掉了:「Symantec employees fired over fake security certificates」,也進一步透漏,發現有三個 certificate 被發出來:\r\n\r\n
Symantec's senior director of engineering Quentin Liu said it discovered three unauthorised certificates last week during product testing.
\r\n\r\n
He explained that 'a few' employees who, it said, had passed the company's on-boarding and security training, failed to follow its policies and were therefore fired after a \"thoughful review process.\"
\r\n\r\n還是沒看到第三方單位介入稽核的消息。", + "title": "Symantec 的 Thawte 發出 Google 的 SSL certificate 的後續" + }, + { + "id": "6004", + "body": "在「Using testssl.sh」這邊看到「testssl.sh」這個工具。\r\n\r\n需要新版的 OpenSSL 會掃的比較完整,不過看起來 Ubuntu 14.04 內建的就可以掃不少東西了 (當然還是少了 ChaCha20+Poly1305)。\r\n\r\nQualys 的「SSL Server Test」只能掃有開放給公開使用的站台,而這個工具就可以拿來掃內部網站了。\r\n\r\n拿官方給的 screenshot 來看結果:\r\n\r\n\"\"", + "title": "測試 HTTPS 設定的 shell script" + }, + { + "id": "6005", + "body": "DigitalOcean 啟用了加拿大機房:「Introducing Our New Canadian Datacenter: TOR1」,機房代碼 TOR1 (被用在 API)。\r\n\r\n話說回來,LinodeAWS 好像都很久沒看到開新的機房了...", + "title": "DigitalOcean 開放加拿大機房" + }, + { + "id": "6006", + "body": "前幾天 nginx 釋出 1.9.5 版,支援 HTTP/2 (ngx_http_v2_module):「NGINX Open Source 1.9.5 Released with HTTP/2 Support」。\r\n\r\n不過預設是沒有編進去的,需要用 --with-http_v2_module 開起來:\r\n\r\n
This module is not built by default, it should be enabled with the --with-http_v2_module configuration parameter.
\r\n\r\n要注意的是,由於是透過 ALPN 實作,需要 OpenSSL 1.0.2 之後的版本:\r\n\r\n
Note that accepting HTTP/2 connections over TLS requires the “Application-Layer Protocol Negotiation” (ALPN) TLS extension support, which is available only since OpenSSL version 1.0.2. Using the “Next Protocol Negotiation” (NPN) TLS extension for this purpose (available since OpenSSL version 1.0.1) is not guaranteed.
\r\n\r\n不過 PPANGINX Mainline 這邊還沒更新到 1.9.5,反正 SPDY 現在的佔有率還是比 HTTP/2 高,再等等吧...", + "title": "nginx 1.9.5:支援 HTTP/2!" + }, + { + "id": "6007", + "body": "在「測試 MariaDB 上 Galera Cluster 的 Isolation」這邊與「從頭學一次 Isolation level 的 REPEATABLE-READ 與 SERIALIZABLE」對應了 Stripe 的「Call me Maybe: MariaDB Galera Cluster」以及 Percona 的「Clarification on “Call me Maybe: MariaDB Galera Cluster”」這兩篇文章,兩邊在空中交火...\r\n\r\n而「Call me Maybe: Percona XtraDB Cluster」這篇是目前最新的一篇 (文章日期有點怪怪的,不應該是 2015/09/04)。\r\n\r\n畢竟 Galera Cluster 是目前現在在用的產品,雖然跑起來也沒什麼大問題,但預先多了解一點總是比較保險。而要參與這場 Isolation 戰爭,又花了不少時間看幾份資料。(包括重頭讀的)\r\n\r\n第一個當然是 1992 年發表的 SQL-92:「ISO/IEC 9075:1992, Database Language SQL」,在 SQL-92 定義了四個 Isolation 的層級,分別是 SERIALIZABLEREPEATABLE READREAD COMMITTEDREAD UNCOMMITTED。\r\n\r\n另外一篇常被拿出來討論的是 1995 年由微軟帶頭發表的「A Critique of ANSI SQL Isolation Levels」,主要是提出 Snapshot Isolation 的定義。\r\n\r\n後來讀到覺得真的很怪的時候到 Stack Exchange 上的 Database Administrators 問:「Does SQL92's REPEATABLE-READ preclude Write Skew (A5B)?」,確認了我的想法。\r\n\r\n這篇算是讀書心得吧,留給自己用的 :p\r\n\r\n首先是 REPEATABLE READ 的定義是透過「現象」定義,只要符合這些條件就可以被稱作 REPEATABLE READ,這包括了保證不會出現 P1 (\"Dirty read\"):\r\n\r\n
1) P1 (\"Dirty read\"): SQL-transaction T1 modifies a row. SQL-transaction T2 then reads that row before T1 performs a COMMIT. If T1 then performs a ROLLBACK, T2 will have read a row that was never committed and that may thus be considered to have never existed.
\r\n\r\n以及保證不會出現 P2 (\"Non-repeatable read\"):\r\n\r\n
2) P2 (\"Non-repeatable read\"): SQL-transaction T1 reads a row. SQL-transaction T2 then modifies or deletes that row and performs a COMMIT. If T1 then attempts to reread the row, it may receive the modified value or discover that the row has been deleted.
\r\n\r\n並且保證 Atomicity 以及 no updates will be lost:\r\n\r\n
The four isolation levels guarantee that each SQL-transaction will be executed completely or not at all, and that no updates will be lost.
\r\n\r\n只要做到這些條件,就可以說符合 SQL-92 的 REPEATABLE READ 要求。\r\n\r\n
\r\n\r\n另外一方面,在「A Critique of ANSI SQL Isolation Levels」定義的 SQL-92 認為 REPEATABLE READ 是透過 locking 機制實作的 (整篇的寫法的確是朝這個方向走),並且基於 locking mechanism 來推論後續的行為,所以這篇 paper 裡面很多說明是帶著這個大前提的。\r\n\r\n而當時已經有資料庫是使用 MVCC 架構在實作,可以透過 read snapshot 的方式找出另外一條路。\r\n\r\n舉例來說,InnoDB 對 REPEATABLE READ 實作的方式是透過 snapshot 實作:(出自「MySQL :: MySQL 5.6 Reference Manual :: 13.3.6 SET TRANSACTION Syntax」)\r\n\r\n
For consistent reads, there is an important difference from the READ COMMITTED isolation level: All consistent reads within the same transaction read the snapshot established by the first read. This convention means that if you issue several plain (nonlocking) SELECT statements within the same transaction, these SELECT statements are consistent also with respect to each other.
\r\n\r\n這樣避開了 P1、P2 (甚至多做避開到了 P3,不過這邊不重要),並且 Atomicity。而 Update Lost 問題則再透過 lock 機制避免。所以 InnoDB 的 REPEATABLE READ 其實比 SQL-92 的要求多做到了很多事情...\r\n\r\n
\r\n\r\n到這邊再回頭看原來的討論文章,才會發現 Isolation 裡有滿滿的地雷可以採 XD", + "title": "繼續學 Isolation..." + }, + { + "id": "6008", + "body": "前幾天在「在 Cisco Router 上被植入的後門」這邊提到了 Cisco 的 router 被植入後門,剛剛在 Zite 上看到 Cisco 放出檢查程式:「Cisco released a tool to scan for SYNful_Knock implants」。\r\n\r\n程式是用 Python 寫的,可以在「Talos Intel - Synful Knock Scanner」這邊取得,但這個網站沒有用 HTTPS 保護,網站上提供的 Hash 簽名也沒有 PGP 簽名的資訊,從無信任起...\r\n\r\n找了一下 Cisco 官方的資訊,在「SYNful Knock Scanner」這邊也有提供 Hash,請用這邊的值確認吧,這是目前能做到最好的確認了。", + "title": "Cisco 釋出偵測是否有被植入後門的程式" + }, + { + "id": "6009", + "body": "看到「North America is out of IPv4 addresses—for really real this time」這邊提到了北美 IPv4 位置的問題,檢查了一下發現我的 blog 還沒上 IPv6,先把 /etc/network/interfaces 設好,再把 DNS 與 nginx 改了一下就 okay 了。\r\n\r\n這是 Google 所觀察到的 IPv6 使用率,可以在「IPv6 – Google」這邊看到:\r\n\r\n\"\"\r\n\r\n如果時間軸拉的小一點,可以看出來週末會高一點,周間會低一點 XD", + "title": "把 blog.gslin.org 加上 IPv6 位置" + }, + { + "id": "6012", + "body": "在 Low End Box 上逛到的主機商 Openvirtuals,在 LEB 上看到的優惠已經沒了,但點進去後看到 Buffalo 的主機年繳有 50% off,加上硬碟空間又大,就決定弄一台玩玩...\r\n\r\nSSD-CACHED 的 Mini 是 256MB RAM + 512MB vSwap 以及 90GB 空間,要 USD$16/year,而 Standard 的都是兩倍,但只要 USD$20/year,就決定買 Standard 了...\r\n\r\n後台的功能比想像中完整,這是系統資訊與狀態的畫面,功能其實不比 DigitalOcean 差 (不過畫面就普普通通了):\r\n\r\n\"\"\r\n\r\n裝了 Ubuntu 14.04 64bits 跑,不過 Linux kernel 偏舊了點,是 2.6.32,查了一下維基百科上的資料,應該是 2009 年底的版本,是目前唯一一個 2.6 上有繼續維護的版本:\r\n\r\n
Linux two 2.6.32-042stab108.2 #1 SMP Tue May 12 18:07:50 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux
\r\n\r\n網路的部份,實際測試時發現不是很穩定,HiNet 過去有時候會有不低的 packet loss,可能是中間有線路因為 DDoS 造成不穩定。\r\n\r\n反正只是要跑 Synthing 也還好,就先這樣丟著... 上面順便跑個 rtorrent 幫忙 Ubuntu 分擔 ISO Image。", + "title": "拿 Openvirtuals 的主機跑 Syncthing..." + }, + { + "id": "6014", + "body": "之前 Amazon SES 只能拿來發信,現在可以收信了:「New – Receive and Process Incoming Email with Amazon SES」。\r\n\r\n收信下來後可以放到 S3,也可以用 SNS 接,或是用 Lambda 處理。除此之外還有 Spam & Virus 檢查的功能...\r\n\r\n一時間想不到用途 :o", + "title": "Amazon SES 可以收信了..." + }, + { + "id": "6015", + "body": "前幾天 Reddit 宣佈放出完整的全站投稿資料:「Full Reddit Submission Corpus now available (2006 thru August 2015)」,有些技術問題使得這次沒放出 2006 與 2007 的資料,之後會想辦法補上:\r\n\r\n
Data is complete from January 01, 2008 thru August 31, 2015. Partial data is available for years 2006 and 2007. The reason for this is that the id's used when Reddit was just a baby were scattered a bit -- but I am making an attempt to grab all data from 2006 and 2007 and will make a supplementary upload for that data once I'm satisfied that I've found all data that is available.
\r\n\r\n約 42GB 的資料,幾乎是公開的資料都包含進去了:\r\n\r\n
This dataset represents approximately 200 million submission objects with score data, author, title, self_text, media tags and all other attributes available via the Reddit API.
\r\n\r\n檔案放在 Amazon S3 上,不過有人貼出對應的 BitTorrent 連結了,最重要的 btih 值是 9941b4485203c7838c3e688189dc069b7af59f2e。\r\n\r\n可以拿來做各種研究...", + "title": "Reddit 放出完整的全站投稿資料" + }, + { + "id": "6016", + "body": "Alex KingWordPress 非常早期的知名開發者,十多年前因為 MovableType 更改授權而跳到 WordPress 時就對這個名字非常有印象了,以前還用過他寫的 theme...\r\n\r\n結果剛剛看到跟癌症纏鬥了兩年半之後過世的消息,讓人感傷不已:「Remembering Alex King」(Alex Tow)、「Remembering Alex King」(Matt Mullenweg)。", + "title": "Alex King 過世..." + }, + { + "id": "6017", + "body": "在 OSNews.com 上看到 Google 的 Customer Match 讓你可以針對某個特定帳號 (用 e-mail 辨別) 下廣告:「Google lets companies target ads using your email adress」。Google 的文章在「Google brings you closer to your customers in the moments that matter」這邊。\r\n\r\nCustomer Match 允許你直接針對某個人下廣告:\r\n\r\n
Customer Match allows you to upload a list of email addresses, which can be matched to signed-in users on Google in a secure and privacy-safe way.
\r\n\r\n侵犯隱私並且提供 APT 攻擊 (Advanced persistent threat) 一個避開偵測的管道。\r\n\r\n這也是為什麼應該裝「uBlock Origin」(Google Chrome) 的原因之一:在網路上你要學會用各種工具保護自己。", + "title": "Google 的 Customer Match 讓你可以針對特定帳號 (by e-mail) 下廣告" + }, + { + "id": "6019", + "body": "在「nginx 1.9.5:支援 HTTP/2!」這邊提到 nginx 支援 HTTP/2,不過過了一個禮拜,比較知名的 PPA「NGINX Mainline」一直沒更新,維持在 1.9.4 版 (只支援 SPDY)。\r\n\r\n這幾天一直找資料,在 chris lea 的 PPA「nginx-devel」這邊看到 1.9.5 的版本,就先暫時改裝了。\r\n\r\n裝完後把設定檔裡的 spdy 字串改成 http2 就可以用了,比預期中簡單不少,然後重新啟動後連上去就可以看到藍色 icon 了:\r\n\r\n\"\"\r\n\r\n收工解決... (樂)", + "title": "把 blog.gslin.org 換上 HTTP/2" + }, + { + "id": "6020", + "body": "Adblock Plus 推出在 iOS 9 上的 Content Blocking 功能了:「Adblock Plus for iOS is finally here! Pssst, it's free!」。\r\n\r\n\"\"\r\n\r\n與桌機版本一樣可以關掉 Acceptable Ads。", + "title": "Adblock Plus 推出在 iOS 9 上的 Content Blocking 功能" + }, + { + "id": "6021", + "body": "AWS 推出了 Amazon Elasticsearch Service,也就是把 Elasticsearch (現在叫做 Elastic) 包裝起來的服務:「New – Amazon Elasticsearch Service」。\r\n\r\n並不是所有 EC2 的 instance 種類都支援 (像是 m4.* 系列就不支援),不過也算夠多了,然後安裝時也包括了 Kibana:\r\n\r\n\"\"\r\n\r\n另外一個比較重要的整合是可以把 CloudWatch 的資料倒進去,於是舊可以在 Kibana 裡面看這些數據了:\r\n\r\n\"\"\r\n\r\n旁邊的 Amazon CloudSearch 哭哭了...", + "title": "AWS 推出 Amazon Elasticsearch Service" + }, + { + "id": "6022", + "body": "Google 宣佈 Blogspot (Blogger) 將會支援 HTTPS:「HTTPS support coming to Blogspot」。\r\n\r\n\"\"\r\n\r\n配合 2014 年 Google 就已經公佈的「HTTPS as a ranking signal」,算是整個 Google 的趨勢...", + "title": "Google 的 Blogspot (Blogger) 將支援 HTTPS" + }, + { + "id": "6023", + "body": "在「Trainspotting: Firefox 41」這邊的介紹可以看到範例:\r\n\r\n\"\"\r\n\r\n抓下來變成這樣:\r\n\r\n\"\"\r\n\r\n這功能真不錯...", + "title": "Firefox 41 可以抓單個 DOM 元素的擷圖了" + }, + { + "id": "6024", + "body": "在新版 Mac OS X El Capitan (10.11) 上因為引入了「System Integrity Protection (SIP)」而導致 /usr/System 以及 /bin 被保護無法寫入 (即使你使用 root 權限)。\r\n\r\n這會使得 Homebrew 無法安裝軟體,所以在 Homebrew 的說明文件裡給對應的解決方式 (關閉 SIP 的方式):「El Capitan & Homebrew」。\r\n\r\n不知道之後會不會移到其他目錄下...", + "title": "Mac OS X El Capitan (也就是 10.11 版) 上跑 Homebrew 的問題" + }, + { + "id": "6025", + "body": "這大概是這幾天最刺激的事情... Amazon 決定在自家購物往站上停售 Google ChromecastApple TV:「Amazon to Ban Sale of Apple, Google Video-Streaming Devices」。\r\n\r\n引用新聞的報導說明,因為 Chromecast 與 Apple TV 不相容於 Amazon 自家的 Prime Video,所以下令所有的店家停售:\r\n\r\n
The Seattle-based Web retailer sent an e-mail to its marketplace sellers that it will stop selling the Apple TV and Google’s Chromecast since those devices don’t \"interact well\" with Prime Video. No new listings for the products will be allowed and posting of existing inventory will be removed Oct. 29, Amazon said. Prime Video doesn’t run easily on its rival’s hardware.
\r\n\r\n至於會不會引起反壟斷調查呢?站在看好戲的立場當然是很希望,但這兩個產品就算不在 Amazon 上買,也有一卡車的競爭對手有賣... 不曉得後面會怎麼發展。", + "title": "Amazon 決定在自家的購物網站上停售 Google Chromecast 與 Apple TV" + }, + { + "id": "6026", + "body": "Adblock 的公司賣掉了:「Adblock got sold, and nobody knows who the mystery buyer is」、「Adblock extension with 40 million users sells to mystery buyer, refuses to name new owner」、「Unknown buyer scoops up popular AdBlock extension」。\r\n\r\n官方不願意透漏買家是誰...\r\n\r\nUpdate:如同 comment 寫的,我弄錯公司了...", + "title": "Adblock 的公司賣給不知名的公司..." + }, + { + "id": "6027", + "body": "老文章但上了 Hacker News:「Image diffing using CSS」。\r\n\r\n於是本來這樣的兩張圖:\r\n\r\n\"\"\"\"\r\n\r\n在經過 -webkit-filter: invert(100%) opacity(50%); 的疊合下變成:(這邊就直接抓圖了)\r\n\r\n\"\"", + "title": "用 CSS 比較兩張圖片的差異..." + }, + { + "id": "6029", + "body": "前幾天有提到 Reddit 官方放出全站的投稿以及 comment 資訊:「Reddit 放出完整的全站投稿資料」,馬上就有人拿工具來分析了:「How to Analyze Every Reddit Submission and Comment, in Seconds, for Free」。\r\n\r\n這篇的作者是用 GoogleBigQuery 分析,而 BigQuery 跟 SQL 操作方法類似,所以我猜用 Amazon Redshift 或是 Apache Spark 應該都可以做到類似的事情吧,就看對工具的熟悉度。圖片則是透過 BigQuery 產生 csv 擋,再透過 Rggplot2 產生出來。\r\n\r\n作者給的每張圖都有提供對應的 SQL-like 查詢語法,每張圖的意義也都直接把說明寫上去了,結果還蠻有趣的:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "用 Google BigQuery 分析 Reddit 釋出的資料" + }, + { + "id": "6030", + "body": "前幾天看到的服務,如同標題說的,這是一個「地址」與「座標」可以互相查詢的服務:「Mapzen Search: The World Is Yours」。\r\n\r\n不過 Demo 按下去沒反應,除了文章下方有 curl 的測試方法 (但要先註冊 API key 並帶入參數),好像找不到網站可以測...\r\n\r\n\"\"\r\n\r\n官方的範例看起來還 okay,不知道對非英語的支援度如何...", + "title": "Mapzen Search:「地址換座標」以及「座標換地址」的 API 服務" + }, + { + "id": "6032", + "body": "Amazon 推出了 AWS WAF,也就是 Web Application Firewall:「New – AWS WAF」。\r\n\r\n\"\"\r\n\r\n架構在 CloudFront 上的安全服務,可以想像到會依照 request 數量收費外,rule 本身也要收費,不太便宜的感覺:\r\n\r\n
AWS WAF is available today anywhere CloudFront is available. Pricing is $5 per web ACL, $1 per rule, and $0.60 per million HTTP requests.
\r\n\r\n這個收費標準看起來不像是會把 ModSecurity 預設的 rule 丟進去養... 不過 WAF 主要是用在對軟體主體沒有修改能力時的替代方案 (沒有 source code,或是線上服務緊急需要防堵),以這個角度來看的話好像還好?\r\n\r\n另外一點也許可以找人問問看,WAF 不是設計在 ELB 上,算是策略考量嗎?", + "title": "AWS WAF (Web Application Firewall)" + }, + { + "id": "6033", + "body": "Amazon EC2 愈定要推出新的購買方案:「Coming Soon – EC2 Dedicated Hosts」。\r\n\r\nDedicated Hosts 的租用是以整台主機為單位,以確保整台實體機器不會有其他人使用,對安全性的要求會比較好。這邊拿 c3.xlarge 來舉例,一次就是八台的費用:(這邊「八台」的數字是未定的,真正的數字要等正式公告上線後才知道)\r\n\r\n
Each host has room for a predefined number of instances of a particular type. For example, a specific host could have room for eight c3.xlarge instances (this is a number that I made up for this post). After you allocate the host, you can then launch up to eight c3.xlarge instances on it.
\r\n\r\n會有這樣的需求主要還是因為有些軟體還沒有適當的 cloud-based licensing (授權方式),當 BYOL 時 (Bring Your Own License),會需要能夠對實體機器有更多控制權:\r\n\r\n
We want to make sure that you can continue to derive value from these licenses after you migrate to AWS. In general, we call this model Bring Your Own License, or BYOL. In order to do this while adhering to the terms of the license, you are going to need to control the mapping of the EC2 instances to the underlying, physical servers.
\r\n\r\n另外這對於安全性理由也多了個解決方案,像是需要實體分離避開各種 side-channel attack。不過 AWS 之前就有提供其他的方法。\r\n\r\n對於軟體有支援 CloudHSM 的,可以考慮直接使用這個解決方案,private key 直接放在 HSM 上,而且 AWS 有符合常見的安全標準。\r\n\r\n而另外對於有跟美國政府簽約的數據需求,可以用 AWS GovCloud (US),讓一般人根本接觸不到。\r\n\r\n對於一般單位的需求,也可以用 Dedicated Instances 來確保實體機器上只有單一客戶,而這也能買 Reserved Instances 確保使用權,以及對應的折扣。\r\n\r\n所以這次 Dedicated Hosts 比較像是商業授權上的需求而產生出來的解決方案,而不是安全性需求...", + "title": "Amazon EC2 預定要推出的 Dedicated Hosts" + }, + { + "id": "6034", + "body": "這次 AWS re:Invent 2015 宣佈的新服務,Amazon RDS 支援 MariaDB:「Amazon RDS Update – MariaDB is Now Available」。\r\n\r\n這表示可以使用 Aria Storage Engine。不過目前支援的 instance 有限:\r\n\r\n
You can launch RDS database instances running MariaDB today in all AWS regions. Supported database instance types include M3 (standard), R3 (memory optimized), and T2 (standard).
", + "title": "Amazon RDS 支援 MariaDB" + }, + { + "id": "6035", + "body": "AWS Import/Export 服務推出硬體:「AWS Import/Export Snowball – Transfer 1 Petabyte Per Week Using Amazon-Owned Storage Appliances」。\r\n\r\n原先 AWS Import/Export 需要自己買硬碟寄到 AWS 指定的地方,對於一次性的用途來說不太合理 (硬碟只用一次?),而現在 AWS Import/Export 推出整台 appliance 來解決這個問題,長這樣:\r\n\r\n\"\"\r\n\r\n本身就是可郵寄的包裝,包括了 E-ink 電子墨水面板 (很明顯是從 Kindle 那邊弄來的技術),所以連寄回的地址都不用填寫。而本身就有防水防震設計保護寄送過程稍微摔到或是淋到水也不會有事情,另外透過 AES 256bits 安全加密確保資料不會被盜用,NIST Special Publication 800-88 確認加密的資料沒有被盜取。\r\n\r\n整個規劃看起來很有種軍規的設計感...\r\n\r\n而每個 appliance 可以傳輸 50TB 的資料:\r\n\r\n
From there you simply copy up to 50 terabytes of data to the Snowball and disconnect it (a shipping label will automatically appear on the E Ink display), and ship it back to us for ingestion.
\r\n\r\n目前支援美東 (us-east-1) 與美西二區 (us-west-2):\r\n\r\n
You can import data to the US Standard and US West (Oregon) regions, with more on the way.
\r\n\r\n怎麼說呢,很科幻感的東西?", + "title": "AWS 推出備份用的硬體設備:Snowball" + }, + { + "id": "6036", + "body": "EC2 設計 Spot Instances 提供某些應用程式可以用比較低廉的價錢租用機器,但缺點是隨時可能會中斷,所以程式必須定時記錄進度。\r\n\r\n但不是每種應用程式都有辦法這樣做,所以一般遇到不能中斷的還是會用 On-Demand Instances 來處理。而現在 EC2 則提供了 Spot Blocks 來解決這個問題:「New – EC2 Spot Blocks for Defined-Duration Workloads」。\r\n\r\n你可以設定 1 到 6 個小時的執行時間,時間到就會自動結束:\r\n\r\n
In order to make EC2 an even better fit for this type of defined-duration workload, you can now launch Spot instances that will run continuously for a finite duration (1 to 6 hours).
\r\n\r\nSpot Instances 與 Spot Blocks 是分開競價,大約比 On-Demand 便宜 30%~45%,同時在非尖峰時間另外會有 5% 的優惠:\r\n\r\n
Pricing is based on the requested duration and the available capacity, and is typically 30% to 45% less than On-Demand, with an additional 5% off during non-peak hours for the region. Spot blocks and Spot instances are priced separately; you can view the current Spot pricing to learn more.
", + "title": "EC2 Spot Blocks:固定時間的 Spot Instances" + }, + { + "id": "6038", + "body": "發現 WordPress 內建就有置頂功能 (Sticky),剛好開一篇來放目前我要找的職缺,先放幾個職缺,接下來會持續更新。試看看效果如何吧?\r\n\r\n有興趣的可以把 resume 寄到 gslin at kkbox.com,或是純粹想問問題的也可以寄過來問。\r\n\r\n最新更新時間:2015/10/09。\r\n\r\n
\r\n\r\n

系統分析師

\r\n\r\nKKBOX Server 團隊有三個需要這樣的角色,負責各類 API 的、負責網站 (這包括 WebView 的後端)、負責金流系統的團隊。主要的工作內容是與產品團隊的討論與溝通。\r\n\r\n需要的技術背景:\r\n\r\n\r\n\r\n
\r\n\r\n

資料庫維運工程師

\r\n\r\nKKBOX 目前使用的資料庫主要是 MySQL 為主 (Percona 版本),另外還包括了 Redis Cluster。\r\n\r\n在 AWS 上使用 RDS,有 MySQL 以及 PostgreSQL。\r\n\r\n主要的工作內容包括了資料庫的監控機制 (負荷監控)、效能調校以及備份策略。另外也提供團隊成員諮詢 schema 的設計。\r\n\r\n需要的技術背景:\r\n\r\n\r\n\r\n
\r\n\r\n

PHP 工程師

\r\n\r\n一樣是上面提到的三個團隊都有缺,目前 KKBOX 內的系統包括了 legacy code 與 MVC-based code (Laravel 4.2,正在 migrate 到 5.1)。\r\n\r\n需要的技術背景:\r\n\r\n", + "title": "KKBOX 徵才文" + }, + { + "id": "6039", + "body": "都還沒上線,先公告而已:「EC2 Instance Update – X1 (SAP HANA) & T2.Nano (Websites)」。\r\n\r\nAmazon EC2 將會推出了超大的 X1 系列,Intel Xeon E7 系列與 2TB RAM (比很多人硬碟大小還大 XDDD),拿來跑各種暴力應用的:\r\n\r\n
The X1 instances will be powered by up to four Intel® Xeon® E7 processors. The processors have high memory bandwidth and large L3 caches, both designed to support high-performance, memory-bound applications. With over 100 vCPUs, these instances will be able to handle highly concurrent workloads with ease.
\r\n\r\nX1 系列預定 2016 年上半年會開放使用:\r\n\r\n
We expect to have the X1 available in the first half of 2016. I’ll share pricing and other details at launch time.
\r\n\r\n另外是 T2.Nano,只有 512MB RAM,預定是今年會開放使用:\r\n\r\n
Later this year we will introduce the t2.nano instance. You’ll get 1 vCPU and 512 MB of memory, and the ability run at full core performance for over an hour on a full credit balance. Each newly launched t2.nano starts out with sufficient CPU Credits to allow you to get started as quickly as possible.
", + "title": "EC2 推出超大的 X1 系列與超小的 T2.Nano" + }, + { + "id": "6040", + "body": "AWS Lambda 丟出了一卡車超級基本的功能 (所以超級實用):「AWS Lambda Update – Python, VPC, Increased Function Duration, Scheduling, and More」。\r\n\r\n首先是 AWS Lambda 可以跑在 VPC 裡了,這使得 Lambda 可以呼叫內部的 HTTP API 而不需要對 internet 打洞再用其他方式保護。\r\n\r\n再來是 AWS Lambda 支援 Python 2.7 了,什麼?你問為什麼不是支援 Python 3?(頭轉過去)\r\n\r\n\"\"\r\n\r\n然後可以跑 Cron 了!可以跑 Cron 了!可以跑 Cron 了!(很重要所以要說三次)\r\n\r\n\"\"", + "title": "AWS Lambda 大躍進" + }, + { + "id": "6042", + "body": "在 Bruce Schneier 這邊看到對 SHA-1 的攻擊又有新的進展了:「SHA-1 Freestart Collision」。\r\n\r\n這次的論文不是真的找出 collision,而是對 internal compression function 攻擊,不過即使如此,這是首次攻擊完整的 80 rounds:\r\n\r\n
We present in this article a freestart collision example for SHA-1, i.e., a collision for its internal compression function. This is the first practical break of the full SHA-1, reaching all 80 out of 80 steps, while only 10 days of computation on a 64 GPU cluster were necessary to perform the attack.
\r\n\r\n論文資訊可以在「The SHAppening: freestart collisions for SHA-1」這邊看到。", + "title": "對 SHA-1 的攻擊進展" + }, + { + "id": "6043", + "body": "目前流傳著 Dell 想買 EMC 的消息:「Dell In Talks to Acquire EMC」、「Dell Is in Talks With EMC Over Possible Merger」、「Dell in talks to buy data storage company EMC: source」。\r\n\r\n而 EMC 下面有 VMware 這個超紅的子公司啊...", + "title": "傳言 Dell 要買 EMC..." + }, + { + "id": "6044", + "body": "算是 AWS re:Invent 2015 上比較小的消息。Amazon API Gateway 在東京啟用:「Amazon API Gateway now available in the Asia Pacific (Tokyo) AWS Region」。\r\n\r\n由於 API Gateway 可以接 Lambda,而這次 re:Invent 又發表了許多對 Lambda 的新功能 (參考先前的「AWS Lambda 大躍進」),這使得 API Gateway 的用途多出不少...\r\n\r\n由於可以存取 VPC 內部資源,這表示 Lambda 可以去 RDS 或是 memcached 上抓資料,或是存取內部的 Elastic (Elasticsearch)...\r\n\r\n多開了東京的點代表很多現有的服務也可以改接 Lambda + API Gateway...", + "title": "Amazon API Gateway 在東京也可以用了..." + }, + { + "id": "6045", + "body": "Creative Commons 在經過幾個月的分析後,認為 CC BY-SA 4.0 相容於 GPLv3 的要求:「CC BY-SA 4.0 now one-way compatible with GPLv3」。\r\n\r\n
In January we officially opened a public consultation (blog post) on CC BY-SA 4.0 unilateral compatibility with GPLv3, in accordance with our ShareAlike compatibility process and criteria. Following additional months of detailed analysis, discussion and deliberation with the Free Software Foundation and other stakeholders, we are very pleased to announce that we have added a declaration of one-way compatibility from CC BY-SA 4.0 to GPLv3 to our compatible licenses page!
\r\n\r\n也就是說,CC BY-SA 4.0 的素材可以放到 GPLv3 的作品裡使用並且散佈。不過要注意的是,這是 CC 的分析,而不是法院判決的結果...", + "title": "CC BY-SA 4.0 的素材可用於 GPLv3 的作品裡" + }, + { + "id": "6046", + "body": "CloudWatch Dashboards 也是這次 AWS re:Invent 2015 發表的新功能:「CloudWatch Dashboards – Create & Use Customized Metrics Views」。\r\n\r\n可以自己建立 Dashboard,我記得有不少服務就是做這件事情的,看起來又苦了...\r\n\r\n然後是支援 GitHub Flavored Markdown 的:\r\n\r\n\"\"\r\n\r\n拼起來會長這樣:\r\n\r\n\"\"", + "title": "CloudWatch Dashboards 自訂 Dashboard 內容" + }, + { + "id": "6047", + "body": "在「Porting Chrome Extensions to Firefox with WebExtensions」這邊提到了 WebExtensions 計畫:\r\n\r\n
The technology is designed for cross-browser compatibility: to a large extent the API is compatible with the extension API supported by Google Chrome and Opera. Extensions written for these browsers will in most cases run in Firefox with just a few changes. The API is also fully compatible with multiprocess Firefox.
\r\n\r\n提供另外一種方式開發,吸引 Google Chrome 現有的 extension 開發者,也就是利用現有的 ecosystem 來幫助自己,把本來需要整個重寫的工作降低...", + "title": "把 Google Chrome 的套件移植到 Firefox 上" + }, + { + "id": "6048", + "body": "在「Why is length > complexity? Because math...」這篇以組合數的角度提出了密碼的長度比起其他的各種限制來的有效。\r\n\r\n\"\"\r\n(出自「xkcd: Password Strength」)\r\n\r\n這是在考慮到 threat model 與使用者習慣的平衡性,要求使用者要有大小寫數字特殊字元,不如簡單要求長度就好,對於密碼資料庫外洩時對抗暴力法比起要求複雜度來得有抵抗性,而且使用者反而不用記一堆特殊字元。\r\n\r\n不過如果能用 KeePass 或是 KeePassX 這類密碼管理工具的話會更好,都是直接開到可以接受的最大上限,而且每個站都不一樣的密碼會更有防禦力,而針對密碼資料庫的 password 就可以硬背超長字串... (因為只要記一個)", + "title": "增加密碼的長度比其他各種限制有效" + }, + { + "id": "6050", + "body": "前幾天提到的「傳言 Dell 要買 EMC...」發生了,歷史上最大的科技產業併購案,Dell 買下 EMC:「IT'S OFFICIAL: Dell just bought EMC in the biggest tech merger ever」。\r\n\r\n估算約 670 億美金的併購案:\r\n\r\n
Assuming, for illustrative purposes, a valuation for each share of tracking stock of $81.78, the intraday volume-weighted average price for VMware on Wednesday, October 7, 2015, EMC shareholders would receive a total combined consideration of $33.15 per EMC share and the total transaction would be valued at approximately $67 billion.
", + "title": "Dell 買下 EMC" + }, + { + "id": "6051", + "body": "在「More Concurrency: Improved Locking In PostgreSQL」這邊提到 PostgreSQL 的 Row Locking 的改善,也就是 SELECT ... FOR UPDATESELECT ... FOR SHARE。\r\n\r\n查了一下 SELECT 的文件,在 7.2 開始提供 FOR UPDATE (PostgreSQL: Documentation: 7.2: SELECT),在 8.1 開始提供 FOR SHARE (PostgreSQL: Documentation: 8.1: SELECT),以維基百科上的紀錄來看,7.2 是 2002 年二月,8.1 是 2005 年十一月,都是已經提很久的功能了。\r\n\r\n用 FOR UPDATEFOR SHARE 可以降低對 transaction 的依賴程度,PostgreSQL 的預設值是 READ COMMITTED,配合 Row Locking 就已經可以做到不少效果了,不需要用到 SERIALIZABLE 等級。\r\n\r\n而在最新的 PostgreSQL 9.5 (目前還是開發版),則又多提供了 FOR UPDATE SKIP LOCKED 功能,以官方提供的範例來說,就可以直接避開選位造成的 lock 問題了:\r\n\r\n
This makes sense because 100 users checking for a free seat concurrently will get 100 different rows. The consequence is that you are not stuck with 1 CPU but you can nicely scale out to all CPUs in the system. As conflicts cannot happen anymore, nobody has to wait on somebody else.
\r\n\r\n對 locking 控制的更細微。", + "title": "PostgreSQL 9.5 預定提供的 Row Locking 改善" + }, + { + "id": "6052", + "body": "在「Perceived Web Performance – What Is Blocking the DOM?」這邊看到 Google PageSpeed Insights,突然發現我的 nginx 設定還是有打開 gzip,而目前因為 BREACH 攻擊的關係,有 cookie 的 SSL/TLS 下不應該開 gzip:\r\n\r\n
gzip off;
\r\n\r\n目前好像沒有比較好的解法可以對抗 BREACH...", + "title": "完全關閉 HTTPS 的 gzip" + }, + { + "id": "6053", + "body": "剛剛出的 Google Chrome 46 除了安全性更新外,還修改了在 Mixed Content 時的 HTTPS icon:「Simplifying the Page Security Icon in Chrome」。\r\n\r\n官方的這張圖就給了不錯的解釋:\r\n\r\n\"\"\r\n\r\n本來是用黃色三角形表示,現在直接變成跟 HTTP 一樣沒有 Secure Icon,這樣減少了使用者要了解的情況:\r\n\r\n
This change will reduce the number of page security states in Chrome from four to three.
\r\n\r\n而接下來還打算再減少:\r\n\r\n
In the long term, we hope that most sites on the internet will become secure, and we plan to reduce the icon to just two states: secure and not secure. The change announced in this post is a small step in that direction.
", + "title": "Google Chrome 46 修改 Mixed Content 的 HTTPS Icon" + }, + { + "id": "6054", + "body": "Percona 寫的「MySQL query digest with Performance Schema」這篇提到了 MySQL 5.6 的 Performance Schema 裡的 events_statements_summary_by_digest 相當好用,實際在系統上翻了翻發現算是非常實用的資料。\r\n\r\n首先先看這個表格實際的內容,由於文字塞不動,就改用圖片了:\r\n\r\n\"\"\r\n\r\n可以試著用 SELECT * FROM performance_schema.events_statements_summary_by_digest LIMIT 1 G 之類的指令看到裡面的值,像是這樣:(裡面有些欄位名稱我換掉了,換掉的部份用刪節號標示)\r\n\r\n
                SCHEMA_NAME: kkbox\r\n                     DIGEST: 490a2e363ba7840843733e219175e2a7\r\n                DIGEST_TEXT: SELECT * FROM `table1` WHERE TYPE = ? AND `column1` IN (?) AND STATUS IN (...) ORDER BY STATUS DESC , `created_at` DESC , `id` DESC \r\n                 COUNT_STAR: 299179761\r\n             SUM_TIMER_WAIT: 215069693134746000\r\n             MIN_TIMER_WAIT: 130241000\r\n             AVG_TIMER_WAIT: 718864000\r\n             MAX_TIMER_WAIT: 54442047235000\r\n              SUM_LOCK_TIME: 21915487179000000\r\n                 SUM_ERRORS: 0\r\n               SUM_WARNINGS: 0\r\n          SUM_ROWS_AFFECTED: 0\r\n              SUM_ROWS_SENT: 1240784631\r\n          SUM_ROWS_EXAMINED: 2499118409\r\nSUM_CREATED_TMP_DISK_TABLES: 0\r\n     SUM_CREATED_TMP_TABLES: 0\r\n       SUM_SELECT_FULL_JOIN: 0\r\n SUM_SELECT_FULL_RANGE_JOIN: 0\r\n           SUM_SELECT_RANGE: 0\r\n     SUM_SELECT_RANGE_CHECK: 0\r\n            SUM_SELECT_SCAN: 0\r\n      SUM_SORT_MERGE_PASSES: 2630\r\n             SUM_SORT_RANGE: 299196698\r\n              SUM_SORT_ROWS: 1240808755\r\n              SUM_SORT_SCAN: 0\r\n          SUM_NO_INDEX_USED: 0\r\n     SUM_NO_GOOD_INDEX_USED: 0\r\n                 FIRST_SEEN: 2015-09-17 20:41:15\r\n                  LAST_SEEN: 2015-10-15 01:06:10
\r\n\r\n其中 DIGEST_TEXT 是 SQL query,可以看到 IN 裡面的東西會被整合起來,而 COUNT_STAR 是次數,後面的 AVG_TIMER_WAIT 單位是 10-12 秒,除以 109 後才會變成 ms。\r\n\r\n裡面的資訊對於 DBA 在 tune 效能時應該是很有用...", + "title": "用 MySQL 5.6 的 Performance Schema 觀察系統效能" + }, + { + "id": "6055", + "body": "依照往例,Backblaze 每一季結束後不久會放出上一季的硬碟故障率報告:「What Can 49,056 Hard Drives Tell Us? Hard Drive Reliability Stats for Q3 2015」。\r\n\r\n\"\"\r\n\r\n如果仔細看的話,小硬碟中 Seagate 的死亡率還是很高 (尤其是 ST1500DL003 與 ST3000DM001 這兩顆驚人的數字),而大硬碟 (i.e. 4TB 以上) 都還算合理範圍。\r\n\r\n值得提的是,其中 HGST 的硬碟死亡率比起其他家低了不少?", + "title": "Backblaze 的 2015 Q3 硬碟故障率報告" + }, + { + "id": "6056", + "body": "由於 TCP timestamps 會使得封包多 12 bytes,關掉後可以在 LAN 裡面擠出頻寬,是個小孩子不要亂學的方法:「Save Some Bandwidth By Turning Off TCP Timestamps」。\r\n\r\n文章裡是在 10Gbps 網路上測試,看測出來的圖片也只是一點點 (不到 1%),但仍然是有提昇:\r\n\r\n
Results show that it's reasonable to turn off timestamps on 10GE interfaces, but keep in mind that it should be performed only in low latency networks.
\r\n\r\n沒必要就不要亂動 :o", + "title": "在 LAN 裡把 TCP timestamps 關閉擠出頻寬" + }, + { + "id": "6057", + "body": "HAProxy 1.6.0 出版的公告文章:「[ANNOUNCE] HAProxy 1.6.0 released」。\r\n\r\n兩個大功能,第一個是「It’s 2015, let’s use QUOTE in configuration file」,可以用引號了... 另外一個是「Lua Scripting」,需要 Lua 5.3+。\r\n\r\n還有提到一些改進,像是支援 SNI,以及對 HTTP/2 的計畫。", + "title": "HAProxy 1.6 的兩個大功能:Quote 以及 Lua" + }, + { + "id": "6058", + "body": "在「The Background Data and Battery Usage of Facebook’s iOS App」這邊提到 Facebook AppiOS 上使用了非常吃電的技巧來強制背景更新。\r\n\r\n作者猜測,如果你把 Facebook App 設定成不允許背景更新,那麼 Facebook App 會利用 iOS 在「播放音樂」可以在背景執行來進行更新:(所以只是打開播放的 channel,但是沒有聲音)\r\n\r\n
My guess is that Facebook is hijacking audio sessions on iOS by keeping silent audio in the background whenever a video plays in the app. And because, by default, videos on Facebook auto-play on both Wi-Fi and Cellular and few people ever bother to turn it off, that means there's a high chance the Facebook app will always find a way to play a video, keep audio in the background, and consume energy to perform background tasks.
\r\n\r\n而且有些人也發現了類似的現象:\r\n\r\n
I'm not alone in noticing the mysterious \"Facebook audio\" background consumption, and video auto-play seems to me the most likely explanation at this point. I don't know if turning off auto-play may fix the problem, but I'd recommend doing that anyway to save data.
\r\n\r\n印象中我們家的 zonble 也有提過類似的事情,當時他好像還有抱怨不知道 Facebook App 在搞什麼鬼... Anyway,這就可以理解作者提到為什麼這麼吃電:\r\n\r\n
On my girlfriend's iPhone, for instance, iOS 9 reports 5 hours of on-screen usage for the last 7 days, and another 11 hours of background audio usage with Background App Refresh turned off.
\r\n\r\n我的想法是,如果不用的時候就按兩下 home 鍵把 Facebook App 整個踢出去,或者就如同作者建議用 Safari 開行動版本:\r\n\r\n
I wonder if Apple should consider additional battery controls to take action against shady practices like invisible background audio. What Facebook is doing shows a deep lack of respect for iOS users. I continue to recommend using Safari instead.
", + "title": "在 iOS 上不使用 Facebook App 時要完全砍掉 process" + }, + { + "id": "6059", + "body": "Redis 官方說明 Secondary Indexing 的文件:「Secondary indexing with Redis」。\r\n\r\nSecondary Indexing 算是 RDBMS 最底層基礎功能,如果有了這個功能已經可以做非常多事情... 查了文章裡提到的 Z* 系列指令是在 3.0.2 支援的 (目前是 3.0.4),看起來這個功能很新,不知道實際上跑起來跟 PostgreSQL 拼的效能如何... (因為 PostgreSQL 也可以自訂 Index 的內容)", + "title": "Redis 的 Secondary Indexing" + }, + { + "id": "6060", + "body": "Scylla 是出自希臘神話,維基百科對應的連結:「斯庫拉」、「Scylla」。而在 ScyllaDB 官網副標題寫著:\r\n\r\n
Fully compatible with Apache Cassandra at 10x the throughput and jaw dropping low latency
\r\n\r\nJVM 的 GC 老問題在 Cassandra 中帶來的 latency 不穩定本來就是個痛苦的問題,要花很多力氣去調整,而用 C++ 改寫等於是自己處理這一塊。\r\n\r\n這帶來的效能提昇可以從各種測試結果看出來,像是單機的測試:「Scylla vs. Cassandra benchmark」,以及多機的測試:「Scylla vs. Cassandra benchmark (cluster)」(可以參考下圖)。\r\n\r\n\"\"\r\n\r\n而 Latency 的改善也是極為明顯:「Latency benchmark」。\r\n\r\n\"\"\r\n\r\n其中另外一個重要的技術是 IntelDPDK,可以大幅降低現有 Linux Kernel 在網路架構上的損耗:「Dedicated fast network stack for modern hardware」。\r\n\r\n很有趣的專案,好久沒碰 Cassandra 了...", + "title": "ScyllaDB:用 C++ 改寫相容於 Cassandra 的系統" + }, + { + "id": "6061", + "body": "在 Zite 上突然看到 mod_h2 的文章,想說不是早就放出來很久了嗎... 仔細看才發現是 Apache HTTP Server 2.4.17 發行了:「how to h2 in apache」。\r\n\r\n
Support for HTTP/2 is finally being released with Apache httpd 2.4.17! This pages gives advice on how to build/deploy/configure it. The plan is to update this as people find out new things (read: bugs) or give recommendations on what works best for them.
\r\n\r\n另外在「Apache HTTP Server 2.4.17 Released」這邊可以看到公告,不過官方每次改版都直接改掉這個檔案 (沒有存檔),如果要看歷史紀錄的話到 Internet Archive: Wayback Machine 的頁面上看吧:「https://web.archive.org/web/*/https://www.apache.org/dist/httpd/Announcement2.4.html」。\r\n\r\n這樣兩個主流 web server 都支援 HTTP/2 了,接下來最主要的問題是 Android 對 HTTP/2 的支援度:「HTTP/2 protocol」,要等舊版逐漸淘汰掉...", + "title": "Apache 2.4.17:內建支援 HTTP/2" + }, + { + "id": "6062", + "body": "Cryptology ePrint Archive 上面剛好是 2015 年編號 1000 號的論文:「Factoring as a Service」。透過 Amazon EC2 服務以及 CADO-NFS 的幫助,四小時內就可以解出 512bits RSA,而如同作者說的,雖然已經很不安全了,但在許多地方仍然被使用著:\r\n\r\n
The difficulty of integer factorization is fundamental to modern cryptographic security using RSA encryption and signatures. Although a 512-bit RSA modulus was first factored in 1999, 512-bit RSA remains surprisingly common in practice across many cryptographic protocols. Popular understanding of the difficulty of 512-bit factorization does not seem to have kept pace with developments in computing power. In this paper, we optimize the CADO-NFS and Msieve implementations of the number field sieve for use on the Amazon Elastic Compute Cloud platform, allowing a non-expert to factor 512-bit RSA public keys in under four hours for $75. We go on to survey the RSA key sizes used in popular protocols, finding hundreds or thousands of deployed 512-bit RSA keys in DNSSEC, HTTPS, IMAP, POP3, SMTP, DKIM, SSH, and PGP.
\r\n\r\n另外也有專案網站:「Factoring as a Service」,程式碼也有放上 GitHub:「Factoring as a Service」。", + "title": "USD$75 解 RSA 512bits" + }, + { + "id": "6063", + "body": "在「How is NSA breaking so much crypto?」這邊提到了 2012 年有文章說明 NSA 有能力解開部份的加密通訊,而後來 Snowden 所提供的資料也證實了這點:\r\n\r\n
In 2012, James Bamford published an article quoting anonymous former NSA officials stating that the agency had achieved a “computing breakthrough” that gave them “the ability to crack current public encryption.” The Snowden documents also hint at some extraordinary capabilities: they show that NSA has built extensive infrastructure to intercept and decrypt VPN traffic and suggest that the agency can decrypt at least some HTTPS and SSH connections on demand.
\r\n\r\n但在這之前一直都不清楚是怎麼解出來的,直到最近才猜測應該是 Diffie-Hellman 的強度以及實作問題:「Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice」。\r\n\r\n而成果其實非常驚人,由於強度不夠以及實作問題,有相當可觀的數量是可被攻擊的:\r\n\r\n
We go on to consider Diffie-Hellman with 768- and 1024-bit groups. We estimate that even in the 1024-bit case, the computations are plausible given nation-state resources. A small number of fixed or standardized groups are used by millions of servers; performing precomputation for a single 1024-bit group would allow passive eavesdropping on 18% of popular HTTPS sites, and a second group would allow decryption of traffic to 66% of IPsec VPNs and 26% of SSH servers. A close reading of published NSA leaks shows that the agency’s attacks on VPNs are consistent with having achieved such a break. We conclude that moving to stronger key exchange methods should be a priority for the Internet community.
\r\n\r\n作者群給的建議有三個方向,一個是把長度加長到 2048 bits,另外一個是改用 ECDH,而最差的情況 (如果還是需要使用 1024 bits DH) 則是避免使用固定的 prime number。", + "title": "在攻擊時總是挑最弱的一環:NSA 對 DH 的攻擊" + }, + { + "id": "6064", + "body": "在 Imgur 上看到「Paris is reusing some abandoned subways as swimming pools.」:\r\n\r\n\"\"\r\n\r\n但下面第一個 comment 的連結:\r\n\r\n
We did the same thing in New York http://imgur.com/qGd3QLw
\r\n\r\n點進去:\r\n\r\n\"\"\r\n\r\n笑噴 XDDD\r\n\r\nPS:可以參考「巴黎廢棄地鐵站 “Ghost Stations” 再利用計劃,月台變身餐廳、劇院、游泳池」這篇文章。", + "title": "巴黎廢棄的地鐵站的游泳池計畫..." + }, + { + "id": "6065", + "body": "Square 丟出 IPO 申請:「Square Files Registration Statement for Proposed Initial Public Offering」,其中參與的單位包括:\r\n\r\n
Goldman, Sachs & Co., Morgan Stanley, and J.P. Morgan are acting as lead joint book-running managers for the proposed offering. Barclays, Deutsche Bank Securities, Jefferies, RBC Capital Markets, and Stifel are acting as additional book-running managers for the proposed offering, and LOYAL3 Securities, Inc. is acting as a co-manager.
\r\n\r\n維基百科上的「Square, Inc.」有整理過的歷史資料。2009 年創立,2010 年五月上線的公司,從 Series A 跑到 Series E。", + "title": "Square 申請 IPO" + }, + { + "id": "6066", + "body": "在「#NodeJS : A quick optimization advice」這邊看到這樣的效能改善方法... 兩段程式碼,只差在註解:\r\n\r\n\"\"\r\n\r\n效能差了 50%:\r\n\r\n\"\"\r\n\r\n只是因為註解的長度有差,只要用 --max-inlined-source-size 調整就可以避開了:\r\n\r\n\"\"\r\n\r\n超苦超無奈:\r\n\r\n
So when you have a function or callback that’ll be called repeatedly, try to make it under 600 characters (or your tweaked value), you’ll have a quick win !
", + "title": "減少「註解長度」增加 Node.js 效率..." + }, + { + "id": "6067", + "body": "在「How to Download a List of All Registered Domain Names」這邊介紹了 .com、.net 以及 .name 的 zone file 怎麼申請與下載 (由 Verisign 維護的三個 tld)。\r\n\r\n另外也介紹了 Centralized Zone Data Service,包括所有的 tld,以及 ICANN 提供的 API。\r\n\r\n這樣應該有很多資料可以分析?", + "title": "取得某些 tld 所有的 Domain Name" + }, + { + "id": "6068", + "body": "Google 的書本掃描服務被認定為合理使用:「Google's Book-Scanning Project Ruled to Be Legal `Fair Use'」。\r\n\r\n
“Google’s unauthorized digitizing of copyright-protected works, creation of a search functionality and display of snippets from those works are non-infringing fair uses,” U.S. Circuit Judge Pierre Leval wrote on behalf of the court. “The purpose of the copying is highly transformative, the public display of text is limited and the revelations do not provide a significant market substitute for the protected aspects of the originals.”
\r\n\r\n看起來是一路打到第二巡迴上訴法院了?(負責紐約地區)", + "title": "Google 的書本掃描服務被認定為「合理使用」" + }, + { + "id": "6069", + "body": "有人把 OS X El Capitan 的軟體授權文件翻譯成白話的 22 條英文說明:「OS X El Capitan License: in Plain English」,也就是這份文件:\r\n\r\n\"\"\r\n\r\n其實有不少有趣 (?) 的設計...", + "title": "OS X El Capitan (10.11) 軟體授權文件的白話翻譯" + }, + { + "id": "6070", + "body": "在「Open source Slack-alternative reaches 1.0: Self-host ready, Slack-compatible, MIT licensed」這邊看到 Mattermost 這套 Slack clone,而 Mattermost 的標語是:\r\n\r\n
Mattermost is an open source, on-prem Slack-alternative
\r\n\r\n後面也是弄了一個團隊 (Team),有種 GitLab 的感覺...", + "title": "又一個 Open Source 版本的 Slack Clone:Mattermost" + }, + { + "id": "6071", + "body": "依照 Netcraft 的說明,還有超過 20% 的網站使用 SHA-1 certificate:「One million SSL certificates still using “insecure” SHA-1 algorithm」。\r\n\r\n雖然轉換速度算是很快了,不過本來依照進度,2015 年底瀏覽器就應該要把 SHA-1 certificate 認為不安全 (於是失效):\r\n\r\n\"\"\r\n\r\n照目前速度,今年年底應該只能掉到 10% 左右吧...", + "title": "還有超過 20% 的網站使用 SHA-1 憑證" + }, + { + "id": "6072", + "body": "在「Kudos - A Peer-to-Peer Discussion System Based on Social Voting」這邊看到分散式的論壇系統,帶有投票分數機制以及相關議題機制:\r\n\r\n
Decentralized Reddit using a DHT to store content and a blockchain to rank such content. Whitepaper with more details here: http://lucaa.org/docs/kudos.pdf
\r\n\r\n論文裡面可以看出來設計的觀念受到 Bitcoin 的啟發,演算法也是... 換句話說,Bitcoin 帶來的影響遠遠超過金融市場,Bitcoin 所使用的理論也給其他領域很多想法。\r\n\r\n如果這樣的系統可行的話 (還沒仔細研究 @_@),真正分散式的論壇系統就會出現了...", + "title": "分散式的論壇系統" + }, + { + "id": "6073", + "body": "Let's Encrypt 是個新的 CA (Certificate Authority),由許多單位提供資源希望藉由免費的 SSL/TLS certificate 讓 Internet 更安全。\r\n\r\n九月的進度是已經成功建立 CA 機制 (包括第三方稽核),並且向各瀏覽器申請加入,同時也找 IdenTrust 申請 cross sign:「Let's Encrypt 的新進展」。\r\n\r\n所以兩條路都可行,就是看哪邊比較快。如果瀏覽器先放行了,那麼就是透過 Root CA 直接可以認證。如果是 IdenTrust 先 cross sign,那麼就是透過 IdenTrust 的 Root CA 認證下來。\r\n\r\n沒什麼意外的,IdenTrust 的先簽下來了:「Let's Encrypt is Trusted」。\r\n\r\n利用 Qualys SSL LabsSSL Server Test 可以看到在「https://helloworld.letsencrypt.org/」這邊的 Demo Site 是從 DST Root CA X3 簽給 Let's Encrypt Authority X1 再簽給 helloworld.letsencrypt.org 的記錄:\r\n\r\n\"\"\r\n\r\n接下來就是等最後開放給一般人申請了...", + "title": "Let's Encrypt 正式出發" + }, + { + "id": "6074", + "body": "CloudFlare 宣佈 DNSSEC 開放 Open Beta:「DNSSEC is Open for Beta」。\r\n\r\n常見的 gTLD 以及幾個 ccTLD 好像都有支援 DNSSEC (List of Internet top-level domains),來搬一些上去測試看看 :o", + "title": "CloudFlare 支援 DNSSEC (Open Beta)" + }, + { + "id": "6075", + "body": "KeyCDN 是目前幾個有支援 HTTP/2 的 CDN 其中一個,所以有這個數字可以看:「HTTP/2 Statistics: KeyCDN Report on HTTP/2 Distribution」。可以看到 HTTPS 流量中,HTTP/2 的流量已經超過 HTTP/1.1:\r\n\r\n\"\"\r\n\r\n另外有個有趣的數據,是 Google Chrome 上 HTTPS 的比率比 HTTP 高出不少:\r\n\r\n

over the past year the number of HTTPS navigations in Chrome has grown by ~5% (up to ~63%): https://t.co/9fksNNOLdD pic.twitter.com/NVrZCjrMD2

— Ilya Grigorik (@igrigorik) October 13, 2015
\r\n\r\n\r\n其中 2013 年的突起據作者猜測是 Facebook 轉 HTTPS 化:「Secure browsing by default」,不過時間軸好像對不起來,也許要再找看看有什麼大型網站在那個時間點做了什麼事情...", + "title": "HTTP/2 的流量已經超過 HTTP/1.1 (HTTPS 流量)" + }, + { + "id": "6076", + "body": "剛剛發現奇怪的現象,晚點來問問看好了... 手上的 test-priceclass100.gslin.org 設定為 Only Use US and Europe:\r\n\r\n\"\"\r\n\r\n但在 SmokePing 上卻看到極低的 latency 而覺得納悶:\r\n\r\n\"\"\r\n\r\n動手查了一些資料發現是被導到台灣的點... 可以看到先問 168.95.192.1 (HiNet 光世代預設的 DNS) 後得到了這些 IP:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [02:43/W4] dig test-priceclass100.gslin.org @168.95.192.1\r\n\r\n; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> test-priceclass100.gslin.org @168.95.192.1\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48453\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 1\r\n\r\n;; OPT PSEUDOSECTION:\r\n; EDNS: version: 0, flags:; udp: 3072\r\n;; QUESTION SECTION:\r\n;test-priceclass100.gslin.org.  IN      A\r\n\r\n;; ANSWER SECTION:\r\ntest-priceclass100.gslin.org. 300 IN    CNAME   d265g70k07is7o.cloudfront.net.\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.192.215.203\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.192.215.98\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.96\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.192.214.40\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.216\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.192.212.118\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.223\r\nd265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.56\r\n\r\n;; Query time: 178 msec\r\n;; SERVER: 168.95.192.1#53(168.95.192.1)\r\n;; WHEN: Thu Oct 22 02:43:24 CST 2015\r\n;; MSG SIZE  rcvd: 228
\r\n\r\n接下來跑 mtr 看,發現是台灣的節點:\r\n\r\n
gslin@GSLIN-HOME1404 [~] [02:43/W4] mtr --report -n 54.239.176.56\r\nStart: Thu Oct 22 02:43:37 2015\r\nHOST: GSLIN-HOME1404              Loss%   Snt   Last   Avg  Best  Wrst StDev\r\n  1.|-- 168.95.98.254              0.0%    10    8.6   9.1   8.4   9.9   0.3\r\n  2.|-- 168.95.25.50               0.0%    10    8.1   9.0   8.0   9.9   0.3\r\n  3.|-- 220.128.11.226             0.0%    10    9.3  11.8   8.1  31.7   7.1\r\n  4.|-- 220.128.5.94               0.0%    10   12.9  13.9   9.6  17.9   2.9\r\n  5.|-- 220.128.4.177              0.0%    10    8.7  13.1   8.7  35.3   8.0\r\n  6.|-- 203.75.228.29              0.0%    10    9.9  10.1   9.3  10.9   0.3\r\n  7.|-- 223.26.65.19               0.0%    10    9.4  10.3   9.4  11.4   0.3\r\n  8.|-- 202.133.255.122            0.0%    10   11.0  10.8   9.5  13.5   1.0\r\n  9.|-- 54.239.176.56              0.0%    10   10.7   9.4   8.4  10.7   0.7
\r\n\r\n這是哪招呢...", + "title": "CloudFront Price Class 100 奇怪的現象" + }, + { + "id": "6077", + "body": "在「Chrome Devtools Tips & Tricks」這邊看到介紹 Google Chrome 的 DevTools 用法說明,但讓我注意到文章最下面提到的兩個工具,其中提到了 JavaScript Errors Notifier 這個工具:\r\n\r\n
JS Error Notifier (non-“spyware” version) creates a popup each time a Javascript error is printed to the console. Unfortunately, the main version of this extension submits private “usage data” to a third-party service (see discussion in issue #28). But at any rate, this extension has helped me notice and fix several bugs.
\r\n\r\n找資料時可以發現 Hacker News 上面也有些討論:「Malware alert: JavaScript Errors Notification extension for Chrome (86k users)」。\r\n\r\n馬上換掉...", + "title": "改用沒有 FairShare 版本的 JavaScript Errors Notifier" + }, + { + "id": "6078", + "body": "在「Wikimedia Performance Metrics」這邊看到維基媒體 (Wikimedia) 的效能資訊網頁:「Metrics — Wikimedia Performance」,這邊是以前端效能為主。在「Grafana」這邊則包括了更多的資訊。\r\n\r\n\"\"\r\n\r\n在「Performance」這邊有關於效能頁面的說明,看起來還在開發...", + "title": "維基媒體的效能資訊" + }, + { + "id": "6079", + "body": "DigitalOcean 推出的新功能,可以註冊 IP 並且動態掛到某個 droplet 上:「Floating IPs: Start Architecting Your Applications for High Availability」。\r\n\r\n\"\"\r\n\r\n如果沒有掛到 droplet 上會收取 USD$0.006/hour 的費用,以一個月 720 小時來計算,大約是 USD$4.32/month。另外也限制在同一個 data center 內才能換來換去。\r\n\r\n類似的功能在 Linode 很久前就有了 (2007 年底),雖然不是完全一樣:「Support for High Availability / IP Failover」,但 Amazon EC2 的 Elastic IP 功能幾乎就相同了,在 2008 年初開放:「New EC2 Features: Static IP Addresses, Availability Zones, and User Selectable Kernels」,所以只能算是補產品線,把大家都有的功能實作出來...\r\n\r\n以往只能用 DNS 做 High Availability 的,現在可以用這種方法做,使得 downtime 可以更低。另外這樣做也可以架設 proxy server,使得對外的 IP 不變,讓 firewall 設定變得單純。", + "title": "DigitalOcean 提供 Floating IP 功能" + }, + { + "id": "6080", + "body": "在「The Ubuntu 16.04 LTS Codename Has Been Announced」這邊看到 Ubuntu 16.04 LTS 的 codename 確認了,依照慣例以字母順序輪流使用,所以會是 x 開頭...\r\n\r\nMark Shuttleworth 在 blog 上說明了 Ubuntu 16.04 LTS 想要推動的東西:「X marks the spot」。\r\n\r\n還有半年... 話說回來,我前幾個月才換 14.04,這樣 16.04 要什麼時候跳過去 :o", + "title": "Ubuntu 16.04 LTS 的 Codename 被命名為 Xenial Xerus" + }, + { + "id": "6081", + "body": "HP 宣佈關閉 Helion Public Cloud:「Hewlett-Packard throws in the towel on public cloud」,官方新聞稿在「A new model to deliver public cloud」:\r\n\r\n
Therefore, we will sunset our HP Helion Public Cloud offering on January 31, 2016.
\r\n\r\n做不起來啊...", + "title": "HP 宣佈關閉 Helion Public Cloud" + }, + { + "id": "6082", + "body": "之前有提過這件事情,由於 Firefox 已經支援 Brotli 了 (Google 推出 Brotli 無損壓縮法),所以 CloudFlare 的人整理了目前的效能比較:「Results of experimenting with Brotli for dynamic web content」。\r\n\r\n主要還是 Brotli 拿了不少資源來換壓縮率,對於 static content 由於可以事先算好而大勝不少 (大約可以再榨出 15% 的壓縮率,從 zlib 9 的 27.7% 降到 brotli 10 的 23.3%):\r\n\r\n
The current state of Brotli gives us some mixed impressions. There is no yes/no answer to the question \"Is Brotli better than gzip?\". It definitely looks like a big win for static content compression, but on the web where the content is dynamic we also need to consider on-the-fly compression.
\r\n\r\n另外對於大檔案、網路速度不快的連線來說也頗有幫助,但對於 on-the-fly 的壓縮反而會比較慢。", + "title": "CloudFlare 對 Brotli 的測試" + }, + { + "id": "6083", + "body": "在「Migrating To PHP 7」這邊看到十一月 PHP 就要發行 7.0.0 了...\r\n\r\n最主要的還是不相容性的問題,從「Backward incompatible changes」這邊可以看到官方列出來的說明。\r\n\r\n在「Changes to the handling of indirect variables, properties, and methods」這邊看起來好刺激啊,整個解讀的方法完全不一樣了... 不過我記得這是最近的 PHP 才有的功能?而且這樣寫真的很不容易讀懂...\r\n\r\n然後「list() no longer assigns variables in reverse order」這種寫法的 code 就臭臭的,是在示範各種 side effect 嗎 XDDD\r\n\r\n而「Hexadecimal strings are no longer considered numeric」則是往好的方向改?原來 is_numeric('0x1234') 在 PHP 5.6 是 true 啊...\r\n\r\n大概又要檢查再確認才能升級了 :o", + "title": "PHP 7 與 PHP 5.6 的不相容改變" + }, + { + "id": "6084", + "body": "IPFS (InterPlanetary File System),或是被稱作 The Permanent Web。\r\n\r\n起因在於目前 HTTP (Web) 在設計時是 1990 年代的想法,許多威脅在當時並不明顯。而到了現在,來自攻擊者的威脅與政府監控的威脅使得必須在 HTTP (Web) 上架構許多 workaround。\r\n\r\n最知名的 workaround 就是 HTTPS 以及對應的 CA 架構了,前者因為 HTTPS 協定本身高度複雜,實作的單位經常出錯而產生安全漏洞。而後者靠著大量的稽核檢查來避免出問題,不過畢竟還是 workaround,常常會有一堆「誤發」的狀況發生。\r\n\r\n另外 HTTP 發展到現在其實是去中心化「Decenteralized」的架構,政府單位可以抓著其中幾個結點就可以大量監控,而 IPFS 想要做到真正的分散式「Distributed」:\r\n\r\n\"\"\r\n\r\n前陣子 IPFS 在 GitHub 上放出了 prototype 讓大家玩:「ipfs implementation in go.」,而最近有人把這個點子實作成 image hosting:「ipfs.pics」(一樣是放在 GitHub 上),並且提供對應的網頁上傳介面:「Decentralized picture hosting in ipfs」。\r\n\r\n我試著丟一張圖片上 ipfs.pics 後,得到的 hash 值是 QmRpNqK33gDDKdu8y6Wx5DQsuiJbsnwojNzH5nUwCpwoS9,也可以在 IPFS 看到這張圖:\r\n\r\n\"\"\r\n\r\n來玩看看好了 :o", + "title": "IPFS 分散式 Web 服務,以及 ipfspics 圖片儲存" + }, + { + "id": "6085", + "body": "在 Hacker News Daily 上看到「Freeze - the ultimate Amazon Glacier file transfer client for Mac」這個軟體,需要 Mac OS X 10.10 以上的版本才能用...\r\n\r\n\"\"\r\n\r\n拿來丟東西應該還不錯 (方便的 client),建一個對應權限 IAM 帳號,然後把 key 丟給他用吧...", + "title": "在 Mac 上把資料備份到 Amazon Glacier 的軟體" + }, + { + "id": "6086", + "body": "感覺就是個做研究的人會很愛的東西:「PDFx - Extract metadata and URLs from PDFs, and download all referenced PDFs」。\r\n\r\n程式會試著抓出 PDF 裡的 reference,並且試著找出網路上的 PDF 連結並下載。對於該開始進入做研究時,背景知識可能不足以閱讀這篇論文,會需要從研究被引用的論文開始看,這個程式就派上用場了...\r\n\r\n以前是手動抓,雖然不需要花太多時間,但這樣還是方便多了 :p", + "title": "一次下載論文所有的 Reference PDF" + }, + { + "id": "6087", + "body": "EC2 的新功能,可以在 Web Console 或是透過 API 直接在 EC2 instance 上面執行命令:「New EC2 Run Command – Remote Instance Management at Scale」。\r\n\r\n\"\"\r\n\r\n另外這需要在 EC2 instance 先安裝軟體,目前只支援這三個地區:\r\n\r\n
You can use Run Command today in the US East (Northern Virginia), US West (Oregon), and Europe (Ireland) regions.
\r\n\r\n比較意外的是不額外收費:\r\n\r\n
There is no charge for this this feature; you pay only for the AWS resources that you consume.
", + "title": "透過 API 在 EC2 instance 上下命令" + }, + { + "id": "6088", + "body": "Update:這應該是在講 Zeus C&C 系統,不是 Zeus Web Server... ~_~\r\n\r\n在「Timing attack vulnerability in most Zeus server-sides」這邊看到難得的 HTTP-based timing attack,藉由程式的漏洞而產生出能夠偵測出來的 timing attack:\r\n\r\n\"\"\r\n\r\n雖然 Zeus Web Server 已經收攤了,不過這還是示範了很好玩的攻擊手法...", + "title": "對 Zeus Web Server 的 Timing Attack" + }, + { + "id": "6091", + "body": "在 nginx 的官網上可以直接看到連結,點進 CHANGES 後可以看到兩項關於 HTTP/2 的修正:\r\n\r\n
    *) Bugfix: a segmentation fault might occur in a worker process when\r\n       using HTTP/2.\r\n       Thanks to Piotr Sikora and Denis Andzakovic.\r\n\r\n    *) Bugfix: the $server_protocol variable was empty when using HTTP/2.\r\n\r\n    *) Bugfix: backend SSL connections in the stream module might be timed\r\n       out unexpectedly.\r\n\r\n    *) Bugfix: a segmentation fault might occur in a worker process if\r\n       different ssl_session_cache settings were used in different virtual\r\n       servers.\r\n\r\n    *) Bugfix: nginx/Windows could not be built with MinGW gcc; the bug had\r\n       appeared in 1.9.4.\r\n       Thanks to Kouhei Sutou.\r\n\r\n    *) Bugfix: time was not updated when the timer_resolution directive was\r\n       used on Windows.\r\n\r\n    *) Miscellaneous minor fixes and improvements.\r\n       Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
\r\n\r\n關於 HTTP/2 的錯誤修正意外的少 (畢竟 1.9.5 是第一個正式版),看起來 codebase 已經穩下來了?話說 NGINX Mainline 這邊是不打算更新了嗎...", + "title": "nginx 1.9.6 釋出" + }, + { + "id": "6092", + "body": "看到 Tor Project 很高興的宣佈 .onion 這個 TLD 在 RFC 7686 成為 Standards Track:「Landmark for Hidden Services: .onion names reserved by the IETF」。\r\n\r\n而且也因為成為 IETF 的標準,在 CA/Browser Forum 上更有依據討論在上面的 CA 架構:\r\n\r\n
With this registration, it is should also be possible to buy Extended Validation (EV) SSL/TLS certificates for .onion services thanks to a recent decision by the Certification Authority Browser Forum.
", + "title": "RFC7686:保留 .onion 給 Tor 的 Hidden Services 使用" + }, + { + "id": "6093", + "body": "Slack 宣佈支援多人討論群組了:「Group Messages Come to Slack」。之前要找一群人討論事情必須要開一個 Private Channel,但每次開 channel 都要想一個名字出來很討厭,後來都用 #test_201510290916 這種沒有意義的名字,而現在可以直接拉人進來了:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n另外一個是跟著的改變:「Private Groups become Private Channels」。\r\n\r\n
With the introduction of group DMs, which will cover many of the use cases that previously required private groups, we’ve transformed private groups into the brand new “private channels”. Private channels will be shown mixed in with your existing open channels alphabetically, with small lock icons next to the private ones. When the time comes to create a new channel, you’ll find a new public/private toggle on the configuration screen.
\r\n\r\n原先的 Private Channel 就跟 Public Channel 混在一起了...", + "title": "Slack 支援多人討論群組" + }, + { + "id": "6094", + "body": "在「Oracle finally launches Elastic Compute Cloud, 9 years after Amazon debuted EC2」這邊看到 Oracle 也要推動自己的 Amazon EC2 了。Oracle 官方的新聞稿在「Oracle Updates Oracle Cloud Infrastructure Services」這邊可以看到。\r\n\r\n官方網站在「Oracle Cloud Infrastructure as a Service (IaaS)」這邊,價錢理論上可以在「Compute Cloud Pricing」這邊可以看到,不過沒看到 Price 欄位啊...\r\n\r\n不知道什麼人會去用... 綁專案?", + "title": "Oracle 也要推動自己的 EC2 了..." + }, + { + "id": "6095", + "body": "歐盟廢止了在歐盟境內漫遊的費用:「Europe finally abolishes mobile phone roaming charges」:\r\n\r\n
Members of the European parliament have voted through new rules that will scrap mobile roaming charges and stop holidaymakers returning home to the nightmare of a massive phone bill racked up on their travels.
\r\n\r\n不過接下來還有要戰:\r\n\r\n
The abolishment of roaming charges was not met with universal approval. In the days before the vote Roger Helmer MEP tabled an amendment to reject the agreement on behalf of Ukip.
\r\n\r\n搭板凳看吧...", + "title": "歐盟廢止境內漫遊的費用" + }, + { + "id": "6096", + "body": "Amazon VPC 的 VPN 推出新功能了:「EC2 VPC VPN Update – NAT Traversal, Additional Encryption Options, and More」。\r\n\r\n其中「Reusable CGW IP Addresses」這個功能讓大家等超久的:(CGW 是 Customer Gateway,通常是放在自己的機房裡跟 Amazon VPC 設 site-to-site VPN 對接)\r\n\r\n
You no longer need to specify a unique IP address for each customer gateway connection that you create. Instead, you can now reuse an existing IP address. Many VPC users have been asking for this feature and I expect it to be well-used.
\r\n\r\n之前得弄一堆 IP address 來接來接去,現在總算是改善了...", + "title": "VPC VPN 的新功能" + }, + { + "id": "6098", + "body": "記得之前有提到最多人裝的那幾個 extension 都有嵌入各種 malware 或 spyware,所以試著找有哪個是正常的... 後來想到用 GoogleGitHub 上的 open source 專案,找到這個:「One-click full page screen captures in Google Chrome」,官方說明頁面在「Full Page Screen Capture Chrome Extension」:\r\n\r\n
It’s open source (on github) and malware free.
\r\n\r\n看起來這個應該是可以用的... 看起來很久沒更新了,不過實際測試還是會動的 :p", + "title": "Google Chrome 上面的畫面截圖套件" + }, + { + "id": "6099", + "body": "Let's Encrypt 在拿到 IdenTrust 提供的 cross sign (參考「Let's Encrypt 正式出發」) 後所啟動的計畫:「Beta Program Announcements」。\r\n\r\n\"\"\r\n\r\n要先透過 Google Forms 填單等待,等通過後要指定 production server 才會發出來。\r\n\r\n要注意的是,Let's Encrypt 發出來的 SSL certificate 會比較短,只有 90 天有效,設計上是依靠自動機制在更新,所以理論上不會有問題:\r\n\r\n
Certificates from Let's Encrypt are valid for 90 days. We recommend renewing them every 60 days to provide a nice margin of error. As a beta participant, you should be prepared to manually renew your certificates at that time. As we get closer to General Availability, we hope to have automatic renewal tested and working on more platforms, but for now, please play it safe and keep track.
\r\n\r\n再來是有註冊限制,分成 Registrations/IP address 與 Certificates/Domain 兩個限制:\r\n\r\n
There are two rate limits in play: Registrations/IP address, and Certificates/Domain.
\r\n\r\n前者的限制是每天 10 次:\r\n\r\n
Registrations/IP address limits the number of registrations you can make in a given day; currently 10. This means you should avoid deleting the /etc/letsencrypt/accounts folder, or you may not be able to re-register.
\r\n\r\n後者的限制是每個 domain 只給 4 個 certificate:\r\n\r\n
Certificates/Domain you could run into through repeated re-issuance. This limit measures certificates issued for a given combination of Top Level Domain + Domain. This means if you issue certificates for the following domains, at the end you would have what we consider 4 certificates for the domain example.com.
\r\n\r\n拿來測試應該是夠用。", + "title": "Let's Encrypt 的 Limited Beta" + }, + { + "id": "6100", + "body": "tl;dr:目前的外部稽核還沒有完成,有可能會有更慘烈的情況。如果你最近要買 SSL certificate,不要碰 Symantec 旗下的產品,包括了 VerisignThawteGeoTrust、Equifax (GeoTrust 下)、RapidSSL\r\n\r\n在「Symantec 的 Thawte 發出 Google 的 SSL certificate 的後續」這邊有提到先前 Google 抓到 Symantec 發出 Google 憑證的問題,後續稽核時發現更多問題...\r\n\r\nGoogle 在「Sustaining Digital Certificate Security」這篇提到了幾件事情。首先是基於 Symantec 第一版的稽核報告,發現有 23 個 SSL certificate 在 domain owner 沒有被通知的情況下被簽名,這包括了 Google 與 Opera 的五個單位:\r\n\r\n
Following our notification, Symantec published a report in response to our inquiries and disclosed that 23 test certificates had been issued without the domain owner’s knowledge covering five organizations, including Google and Opera.
\r\n\r\n但 Google 光是透過 Certificate Transparency 認為問題不僅於此 (於是認為 Symantec 的稽核不確實),通報了其他主要的 Root Certificate 管理單位:\r\n\r\n
However, we were still able to find several more questionable certificates using only the Certificate Transparency logs and a few minutes of work. We shared these results with other root store operators on October 6th, to allow them to independently assess and verify our research.
\r\n\r\n而 Symantec 再次稽核,這次就大爆炸,光是他們查出來的就有 164 個 SSL certificate 橫跨 76 個網域被簽出,並且有 2458 的不存在的 domain 被簽出:\r\n\r\n
Symantec performed another audit and, on October 12th, announced that they had found an additional 164 certificates over 76 domains and 2,458 certificates issued for domains that were never registered.
\r\n\r\nSymantec 這次提供的報告包括了比較完整的資料,爆發的品牌包括了 Symantec 所有的產品:Verisign、Thawte、GeoTrust、Equifax (GeoTrust 下) 以及 RapidSSL。\r\n\r\n要不是 Symantec 的市占率高到爆炸,Google 大概就像 CNNIC 那樣直接拔掉了。(參考「CNNIC 的根憑證 (包括 EV) 從 Google 全系列產品移除」,市占率的部份可以參考「Usage of SSL certificate authorities for websites」這邊的資料,目前看到是 29.9% 第二高,僅次於 Comodo 的 39.1%)\r\n\r\n由於沒辦法砍,所以 Google 直接下了幾個通牒,第一個是從 2016 六月開始所有簽出的 SSL certificate 都必須發紀錄到 Certificate Transparency (目前規範中只有 EV SSL certificate 有要求),否則之後的簽出的 SSL certificate 不保證會動:\r\n\r\n
It’s obviously concerning that a CA would have such a long-running issue and that they would be unable to assess its scope after being alerted to it and conducting an audit. Therefore we are firstly going to require that as of June 1st, 2016, all certificates issued by Symantec itself will be required to support Certificate Transparency. In this case, logging of non-EV certificates would have provided significantly greater insight into the problem and may have allowed the problem to be detected sooner.
\r\n\r\n
After this date, certificates newly issued by Symantec that do not conform to the Chromium Certificate Transparency policy may result in interstitials or other problems when used in Google products.
\r\n\r\n再來是對報告要求補上為什麼稽核機制沒有偵測到,以及「每一次」為什麼沒有按照 Baseline Requirements (一般 SSL certificate 的規範) 以及 EV Guidelines (EV SSL Certificate 的規範) 的詳細資訊:\r\n\r\n
More immediately, we are requesting of Symantec that they further update their public incident report with:\r\n
\r\n\r\n同時要求第三方稽核確認這次事件,而僅非 Symantec 自己稽核:\r\n\r\n
Following the implementation of these corrective steps, we expect Symantec to undergo a Point-in-time Readiness Assessment and a third-party security audit.
\r\n\r\n而且也清楚要求第三方稽核確認包括:簽的 public key 沒有任何時間點可以被 Symantec 員工取得 private key、Symantec 員工無法使用該項測試工具簽自己擁有 private key 的 SSL certificate、再次確認 Symantec 的稽核紀錄是無法被更改與刪除的。\r\n\r\n
The third-party security audit must assess:\r\n
\r\n\r\n最後還特地放話說,有新的消息時會再考慮更進一步的反擊:\r\n\r\n
We may take further action as additional information becomes available to us.
\r\n\r\n可以發現語氣非常硬,要不是 Symantec 的市占率這麼高,Google 大概也不會這麼費工...\r\n\r\nSymantec 提供的報告可以在「Test Certificates Incident Final Report」、「Incident Report 1」、「Incident Report 2」取得。", + "title": "Symantec 的 SSL Certificate 醜聞繼續爆發..." + }, + { + "id": "6101", + "body": "在「Don’t count on STARTTLS to automatically encrypt your sensitive e-mails」這邊提到了 STARTTLS 的問題,引用「Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security」這篇論文的說明。\r\n\r\nSMTP 裡 STARTTLS 的設計雖然可以加密,但仲所皆知,可以阻擋 EHLO 回應結果避免建立 STARTTLS 連線,而讓發送端改用傳統未加密的 SMTP 傳輸。而研究發現其實目前就有大規模的這種監控行為:\r\n\r\n\"\"\r\n\r\n可以看到突尼西亞的監控情況遠超過想像...\r\n\r\n目前的想法是發展一套類似 HSTS 的 Trust on first use 設計,也許在這份報告出來後可以加速催生...", + "title": "STARTTLS 的不完整性以及大規模監控電子郵件" + }, + { + "id": "6102", + "body": "在「jQuery Audit lets you analyze jQuery from Chrome Developer Tools」這邊看到 jQuery Audit 這個 Google Chrome 的套件。這個套件讓你在 Developer Tools 裡看到 jQuery 的資料:\r\n\r\n\"\"\r\n\r\n在大家都用 jQuery 操作的情境下,這個套件超好用...", + "title": "用 jQuery Audit 在 Google Chrome 的 Developer Tools 看到 jQuery 的資料" + }, + { + "id": "6103", + "body": "Slack 最近除了推出了 Group Messages 以外 (參考「Slack 支援多人討論群組」),也推出了 User Groups 的功能給付費用戶使用:「Introducing User Groups」:\r\n\r\n
User Groups are enabled for all Slack teams on paid plans (both Standard and Plus). New groups can be created in the Team Directory panel in your desktop app. You can give each a descriptive name and add a note on purpose to help others understand what each group is for. The team directory will then list your team’s existing user groups and show the details of each, along with the the group’s members.
\r\n\r\n使用者可以被分類成 Group,然後可以針對某一個 Group 傳訊息。而 Plus Plan 的用戶可以透過 SSO 機制將群組資訊帶進來用:\r\n\r\n
For teams using Single Sign On (SSO) on the Plus plan, you can even use groups to control provisioning accounts from your SSO tools. Users of Active Directory in OneLogin, PingOne, PingFederate, or Okta can take advantage of this built-in user provisioning support to add employees automatically into Slack User Groups matching each employee’s existing group rights, roles and permissions in your internal directory.
\r\n\r\n另外也有提供 API 讓你用,所以 Standard Plan 用戶也可以自己寫,然後塞進去。", + "title": "Slack 的 User Groups 功能" + }, + { + "id": "6105", + "body": "CloudFlare 宣佈通過 PCI DSS 3.1 Level 1:「CloudFlare is now PCI 3.1 certified」。\r\n\r\n早在去年的時候 CloudFlare 就已經通過 PCI DSS 2.0 Level 1:「CloudFlare is PCI Certified」,這次過 PCI DSS 3.1 主要還是因為 2.0 即將失效,不升級就不能處理信用卡資料了...", + "title": "CloudFlare 通過 PCI DSS 3.1 Level 1" + }, + { + "id": "6107", + "body": "依照「Beta Program Announcements」這邊的指示去填單申請 Let's Encrypt 的 SSL certificate (先幫 home.gslin.org 申請),等了好幾天,在剛剛收到信就弄了弄,還蠻順利就設好了。\r\n\r\n可以看到 Let's Encrypt Authority X1DST Root CA X3 簽名的情況,而後者已經被大多數瀏覽器所確認了:\r\n\r\n\"\"\r\n\r\n首先是先把 letsencrypt client 拉下來:\r\n\r\n
$ git clone https://github.com/letsencrypt/letsencrypt
\r\n\r\n接著執行認證:\r\n\r\n
$ cd letsencrypt\r\n$ ./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory certonly
\r\n\r\n執行時會先建立環境 (由於需要寫到 /etc/letsencrypt 裡面,會需要 root 或 sudo 權限)。\r\n\r\n接下來會跳出一些畫面讓你設定,包括 hostname 以及聯絡資訊,再來就是認證的方式 (我是跳出使用 apache 或是 standalone web server),由於我的 port 443 已經被 apache 吃掉,所以需要用 apache。\r\n\r\n最後認證成功會出現:\r\n\r\n
IMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at\r\n   /etc/letsencrypt/live/home.gslin.org/fullchain.pem. Your cert will\r\n   expire on 2016-02-02. To obtain a new version of the certificate in\r\n   the future, simply run Let's Encrypt again.
\r\n\r\n有效期限 90 days,雖然裡面是講 fullchain.pem,但其實每個檔案都有拆開放,看一下 /etc/letsencrypt/live/home.gslin.org/ 路徑裡的檔案,設定對應的 cert/chain/key 應該還是比較習慣的作法。\r\n\r\n官方目前的建議是 60 days 重新 renew 一次,也許可以設成 cron,每兩個月自動更新一次 (並且 reload apache)。", + "title": "把家裡的機器換上 Let's Encrypt 的 SSL certificate" + }, + { + "id": "6108", + "body": "在「SHA-1 Deprecation Update」這篇文章中宣佈本來在「Windows Enforcement of Authenticode Code Signing and Timestamping」這邊宣佈 2017 年停用 SHA-1 SSL certificate 的進度將提前到 2016 年七月 (到 2016 六月前仍然可以使用)。\r\n\r\n在微軟的文章裡也有提到,如同 Mozilla 在前幾個禮拜宣佈的「Continuing to Phase Out SHA-1 Certificates」計畫,也是預定把 2017 年的淘汰計畫提前到 2016 年七月。\r\n\r\n主要是因為「對 SHA-1 的攻擊進展」這邊提到對 SHA-1 的新攻擊,所以決定提前半年...", + "title": "微軟也宣佈 SHA-1 的 SSL certificate 將於 2016 年七月停用" + }, + { + "id": "6109", + "body": "AWS 宣佈了將會在 2016 年年初建立南韓機房:「In the Works – AWS Region in South Korea!」,考慮到地理位置的話,南韓機房的 latency 有機會比日本機房還低,不過台灣對韓國的國際頻寬可能不太夠,應該還是得用日本當主力...\r\n\r\n這樣 2016 年預定會加開印度、俄亥俄州以及韓國三個區域了。不知道還有沒有能量開其他地區...", + "title": "AWS 將在 2016 年成立南韓機房" + }, + { + "id": "6110", + "body": "在「How to check if your Android device is vulnerable to attack」這邊看到有新的 open source 工具可以偵測 Android 裝置的安全性問題,在 Google Play 上可以下載:「VTS for Android」。\r\n\r\n\"\"\r\n\r\n官方的擷圖可以看到偵測的項目,以及對應的 CVE 編號。拿手上的 LG G2 測試 (官方的最新韌體),看起來是該刷 3rd-party 韌體了...", + "title": "檢查 Android 裝置的安全性問題" + }, + { + "id": "6111", + "body": "才講完要成立南韓機房的計畫「AWS 將在 2016 年成立南韓機房」,直接由老大 Werner Vogels 加碼宣佈了倫敦機房 (英國機房) 的計畫:「London Calling! An AWS Region is coming to the UK!」。\r\n\r\n預定在 2016 年年底或是 2017 年年初對外運作,這將會成為歐洲的第三個機房,而前兩個是冰島愛爾蘭與德國。可以看出來 2016 年大舉擴張的態勢...", + "title": "AWS 老大宣佈 2016 年年底會開倫敦機房" + }, + { + "id": "6112", + "body": "在「A Google engineer is reviewing USB-C cables on Amazon, and it’s awesome」這邊看到的:\r\n\r\n\"\"\r\n\r\n直接拿規格書說這東西沒照規矩來,打臉打輕一點啊啊啊 XDDD", + "title": "Google 工程師在 Amazon 上留下對 USB-C 線的精彩評價..." + }, + { + "id": "6113", + "body": "雖然很久沒用 PuTTY 了 (因為用 Ubuntu 很久了),不過很難得看到 PuTTY 有安全性問題。\r\n\r\nPuTTY 官方發佈了安全性通報 CVE-2015-5309:「PuTTY vulnerability vuln-ech-overflow」:\r\n\r\n
Versions of PuTTY and pterm between 0.54 and 0.65 inclusive have a potentially memory-corrupting integer overflow in the handling of the ECH (erase characters) control sequence in the terminal emulator.
\r\n\r\n不過老問題還是沒解啊,透過 HTTPS (i.e. Certificate authority 架構) 雖然有很多問題,但至少還是個靠稽核制度而建立的安全信任機制,在沒有任何可信任環境下可以當作起點下仍然是最好的方案:「如何安全下載軟體...」。", + "title": "PuTTY 安全性問題 (CVE-2015-5309)" + }, + { + "id": "6114", + "body": "在「UK govt to make 10 Mbps broadband a legal right」這邊看到英國政府打算更新法案,逐步將 10Mbps 上網速度訂為法定權利。\r\n\r\n目前法定權利是 28.8Kbps 的撥接速度:\r\n\r\n
Currently, the minimum USO for data access in Britain is just 28.8 Kbps, or dial-up speeds.
\r\n\r\n打算在今年年底拉高為 2Mbps,並且在 2020 年拉高為 10Mbps:\r\n\r\n
Under the proposal, the minimum speed specified by the USO will be raised to 2 Mbps by the end of the year, before further increasing to 10 Mbps by 2020.
\r\n\r\n英國首相 David Cameron 公開說明,internet 應該被認定為基本權利:\r\n\r\n
\"Access to the internet shouldn’t be a luxury; it should be a right – absolutely fundamental to life in 21st century Britain,\" Cameron said.
", + "title": "英國將 10Mbps 上網訂為法定權利" + }, + { + "id": "6115", + "body": "在 Twitter 上看到的文章,對三套有 High Avaiilability 能力的 MySQL 系統比較:「AWS Aurora Benchmarking - Blast or Splash?」。\r\n\r\n測試的項目包括了 MySQL + MHAGalera Cluster 以及 Amazon RDS for Aurora 三種,包括了 failover 的各種速度以及資料庫效能的比較。\r\n\r\n\"\"\r\n\r\n測試的結果可以看到 Galera Cluster 有不少優勢,不過我必須說 Galera Cluster 並不好搞,初期要使用的話乾脆用 Aurora 就好,failover 的確是比較慢,而且效能也沒有 Galera Cluster 好,但管理上輕鬆很多啊...", + "title": "AWS 上 MySQL + MHA、Galera Cluster、Amazon RDS for Aurora 的比較" + }, + { + "id": "6116", + "body": "在「申請信用報告的方式」這邊可以看到:\r\n\r\n
網路查閱\r\n\r\n自民國104年11月1日起本中心提供「個人線上查閱信用報告服務」(https://apply.jcic.org.tw),民眾在本中心網頁以自然人憑證即可快速查閱「個人信用報告」電子檔。推廣期間六個月,不論查閱次數皆不予收費,請民眾多多利用。
\r\n\r\n不過看起來得跑 VirtualBox 之類的東西了:\r\n\r\n
註1:目前網站僅支援IE8,IE9,IE10,IE11的32位元版本IE瀏覽器,其餘種類瀏覽器無法支援。
\r\n\r\n原因在下面馬上有:\r\n\r\n
註2:請以系統管理員的權限安裝ActiveX元件,使用其他權限有可能無法安裝完成。
\r\n\r\n另外在這邊看到:\r\n\r\n\"\"\r\n\r\n嗯...", + "title": "在網路上直接查詢信用報告" + }, + { + "id": "6117", + "body": "剛剛把 blog.gslin.org 也換成 Let's Encrypt 的 SSL certificate 了:\r\n\r\n\"\"\r\n\r\n由於使用了 nginx + redirect,目前 letsencrypt-auto 沒辦法支援這樣的 case,所以認證的過程是把 nginx 關掉,讓 letsencrypt-auto 使用 standalone web server 認證,接下來再用\r\n\r\n看起來沒什麼問題,是 90 days 有效,接下來要研究怎麼 auto renew...", + "title": "blog.gslin.org 的 SSL certificate 也換成 Let's Encrypt" + }, + { + "id": "6119", + "body": "好久沒看到 Limelight Networks 的新聞:「Apple’s Multi-CDN Strategy Adds Limelight Networks To The Mix」。\r\n\r\nDan Rayburn 發現 Apple 把 Limelight Networks 加入 Apple 的下載網路裡。之前用的是 Akamai,另外就是自己建的 CDN,現在加入 Limelight Networks 應該是成本考量:(因為在 Limelight Networks 的財報上有提出來,雖然不是直接講明 Apple)\r\n\r\n
On Limelight’s earnings call this week, the company mentioned they signed up some customers that they had to give a low price point to, which would impact margins in the short-term, before they expected the economics of scale to kick in.
\r\n\r\n不過 Limelight Networks 對 HiNet 的品質一直都不是很好,主要還是會導去香港機房,但看起來線路頗壅塞,就再看看吧...", + "title": "Apple 使用 Limelight Networks..." + }, + { + "id": "6120", + "body": "剛剛看「NGINX Mainline」這邊的 PPA,發現六天前 nginx 總算升級到 1.9.6 了...\r\n\r\n之前用其他 PPA 的人可以換回來了... 因為之前一直都是維持在 1.9.4,只有 SPDY 可以用,現在這樣可以用 HTTP/2 了。", + "title": "nginx 半官方的 PPA 總算升級到 1.9.6" + }, + { + "id": "6122", + "body": "CloudFlare 宣佈全面支援 DNSSEC 了:「Announcing Universal DNSSEC: Secure DNS for Every Domain」。\r\n\r\n另外也因為現在需要把 public key 手動 copy & paste 到 DNS 註冊商會很麻煩 (而且有可能會貼錯),所以 CloudFlare 的人試著往 IETF 標準化這件事情:\r\n\r\n
At CloudFlare, we care about advancing what’s possible on the Internet, so we have published an Internet Draft proposing a protocol for DNS providers such as CloudFlare to communicate directly to registries and registrars. We are pushing it to become an accepted Internet Standard RFC.
", + "title": "CloudFlare 全面支援 DNSSEC" + }, + { + "id": "6123", + "body": "在「在 iOS 上不使用 Facebook App 時要完全砍掉 process」這邊提到了 Facebook 在 iOS 版的應用程式會在背景播放無聲音樂,導致吃電特別兇的問題,Facebook 的 Ari Grant 出來澄清是 bug 造成的,而非故意行為。\r\n\r\n修正了兩個 bug,第一個是 network code 的部分:\r\n\r\n
The first issue we found was a “CPU spin” in our network code. A CPU spin is like a child in a car asking, “Are we there yet? Are we there yet? Are we there yet?”with the question not resulting in any progress to reaching the destination. This repeated processing causes our app to use more battery than intended. The version released today has some improvements that should start making this better.
\r\n\r\n第二個則是之前提到無聲 audio 的問題:\r\n\r\n
The second issue is with how we manage audio sessions. If you leave the Facebook app after watching a video, the audio session sometimes stays open as if the app was playing audio silently. This is similar to when you close a music app and want to keep listening to the music while you do other things, except in this case it was unintentional and nothing kept playing. The app isn't actually doing anything while awake in the background, but it does use more battery simply by being awake. Our fixes will solve this audio issue and remove background audio completely.
\r\n\r\n同時澄清並沒有要在背景更新取得地理位置資訊:\r\n\r\n
The issues we have found are not caused by the optional Location History feature in the Facebook app or anything related to location. If you haven't opted into this feature by setting Location Access to Always and enabling Location History inside the app, then we aren't accessing your device's location in the background. The issues described above don't change this at all.
\r\n\r\n理論上新版應該會省一點電了?", + "title": "Facebook 更新 iOS 應用程式,修正吃電問題" + }, + { + "id": "6124", + "body": "WordPressMatt Mullenweg 在他的 blog 上提到了 WordPress 的內容建構了 Web 上的 25% 內容:「Seventy-Five to Go」,出自 W3Techs 的「 Historical yearly trends in the usage of content management systems for websites 」這邊的資料。\r\n\r\n\"\"\r\n\r\nWordPress 從 2004 年 MovableType 的 license 爭議事件後崛起 (Commitment to a Free Version, while getting our pricing right),後來就愈站愈穩了,而 MovableType 在 2007 年又宣布 open source (Movable Type Open Source),但也已經無法挽回了...\r\n\r\n而且 WordPress 的比率目前還在緩緩攀升...", + "title": "使用 WordPress 的內容佔有全 Web 的 25% 比率" + }, + { + "id": "6125", + "body": "剛剛看到 2017 年將會有最新一季的 Star Trek:「New Star Trek Series Premieres January 2017」。\r\n\r\nStar Trek 在科技史上是部很重要的影集與一系列的電影,在 NASA 裡甚至有很多人是被 Star Trek 所影響才加入 NASA 的。\r\n\r\n明年 2016 年將會有五十週年活動:\r\n\r\n
Star Trek, which will celebrate its 50th anniversary in 2016, is one of the most successful entertainment franchises of all time.
\r\n\r\n來等看看好了,之前有些 series 有點雷,新的不知道怎樣 XDDD", + "title": "2017 年將有新一季的 Star Trek..." + }, + { + "id": "6126", + "body": "EC2ELB 將會有更長的 Resource ID:「Heads-Up – Longer EC2 & EBS Resource IDs Coming in 2016」。\r\n\r\n重點在這段:\r\n\r\n
The new IDs will be the same format as existing IDs, but longer. The current ID format is a resource identifier followed by an 8-character string, and the new format will be the same resource identifier followed by a 17-character string.
\r\n\r\n本來是 8 chars,之後會變成 17 chars。而用 SDK 的人只要更新到新版就可以了:\r\n\r\n
The SDKs are already compatible with longer IDs and don’t require any updates.
\r\n\r\n預定在 2016 年發生:\r\n\r\n
My colleague Angela Chapman wrote the guest post below to make you aware of longer instance, reservation, volume, and snapshot IDs that we will be rolling out in 2016.
", + "title": "EC2 與 ELB 將會有更長的 Resource ID" + }, + { + "id": "6127", + "body": "在「Enable CORS in Amazon API Gateway」這邊看到 Amazon API Gateway 支援 CORS (Cross-origin resource sharing) 了,這樣前端頁面就可以直接 call 進去使用了...\r\n\r\n文件可以在「Enable CORS for a Method in API Gateway」這邊看到,主要就是這個頁面的設定:\r\n\r\n\"\"\r\n\r\n看起來是個小功能,但卻影響很大... 這代表又有一大塊開發者會進去研究。", + "title": "Amazon API Gateway 支援 CORS 了" + }, + { + "id": "6128", + "body": "Let's Encrypt 宣佈 2015/12/03 進入 Public Beta,也就是不需要額外填寫表格申請就可以使用:「Public Beta: December 3, 2015」。\r\n\r\n從 2015/09/19 開始到現在已經發出 11K 個 SSL certificate 了:\r\n\r\n
Our Limited Beta started on September 12, 2015. We’ve issued over 11,000 certificates since then, and this operational experience has given us confidence that our systems are ready for an open Public Beta.
\r\n\r\n我猜應該還是在 cross sign 取得主流瀏覽器支援後才大量增加的...", + "title": "Let's Encrypt 預定於 2015 年 12 月 3 日進入 Public Beta" + }, + { + "id": "6129", + "body": "在 AWS Web Console 上可以用 access key 查詢是哪個 IAM 使用者了:「Introducing IAM Console Search」。\r\n\r\n\"\"\r\n\r\n這樣就可以再查出這個 IAM key 有哪些權限...", + "title": "Web Console 總算可以拿 Access Key 查詢是哪個 IAM 使用者了" + }, + { + "id": "6130", + "body": "在「Preconnect」這邊看到 Preconnect 這個功能,目前在 Mozilla FirefoxGoogle Chrome 以及 Opera 都有支援,用法也很簡單:\r\n\r\n
<link rel=\"preconnect\" href=\"//example.com\">\r\n<link rel=\"preconnect\" href=\"//cdn.example.com\" crossorigin>
\r\n\r\n感覺如果要用的話,可以先送出 head 的部分,打 flush 讓瀏覽器先收到後再送出其他部分?不過對 MVC 架構來說好像變複雜了,不知道有什麼設計比較好...\r\n\r\n另外一個是 Prerender,目前是 IE11+、Google Chrome 以及 Opera 有支援,看起來也頗有趣的...", + "title": "HTML 的 preconnect" + }, + { + "id": "6131", + "body": "看到「sniffly」這個工具,可以利用 HSTS 資訊檢測逛過哪些網站,程式碼在「diracdeltas/sniffly」這邊可以找到:\r\n\r\n
Sniffly is an attack that abuses HTTP Strict Transport Security and Content Security Policy to allow arbitrary websites to sniff a user's browsing history. It has been tested in Firefox and Chrome.
\r\n\r\n測試網站則可以在這邊看到,作者拿 Alexa 上的資料網站來掃,所以熱門網站應該都會被放進去...\r\n\r\n主要是利用 HSTS + CSP policy 的 timing attack (有逛過網站而瀏覽器裡有 HSTS 時的 redirect 會比較快,沒有逛過的時候會因為有網路連線而比較慢):\r\n\r\n
Sniffly sets a CSP policy that restricts images to HTTP, so image sources are blocked before they are redirected to HTTPS. This is crucial! If the browser completes a request to the HTTPS site, then it will receive the HSTS pin, and the attack will no longer work when the user visits Sniffly.\r\n\r\nWhen an image gets blocked by CSP, its onerror handler is called. In this case, the onerror handler does some fancy tricks to time how long it took for the image to be redirected from HTTP to HTTPS. If this time is on the order of a millisecond, it was an HSTS redirect (no network request was made), which means the user has visited the image's domain before. If it's on the order of 100 milliseconds, then a network request probably occurred, meaning that the user hasn't visited the image's domain.
\r\n\r\n由於這個技巧,HTTPS Everywhere 必須關閉才會比較準確。", + "title": "利用 HSTS 資訊得知網站紀錄的 sniffly" + }, + { + "id": "6132", + "body": "在「Creating An Amazon API Gateway With aws-cli For Domain Redirect」這邊看到用 Amazon API Gateway 重導整個網域的方法。一般的做法是用 Amazon S3 (用 web hosting 重導) + Amazon CloudFront (for HTTPS) 堆出來,事實上這個方法成本也比較低,這篇文章只是示範怎麼用而已:\r\n\r\n
I’m not saying the API Gateway method is better than using S3 plus CloudFront for simple hostname redirection. In fact, it costs more (though still cheap), takes more commands to set up, and isn’t quite as flexible in what URL paths get redirected from the source domain. It does, however, work and may be useful as an API Gateway aws-cli example.
\r\n\r\n可以從中間學到一些東西,尤其是可以看到如何使用 aws-cli 操作 Amazon API Gateway 的部分...", + "title": "用 Amazon API Gateway 重導網域" + }, + { + "id": "6134", + "body": "xkcd: Isolation:\r\n\r\n\"\"\r\n\r\n我記得之前也有一個講著作權的也有類似的漫畫...\r\n\r\nUpdate:在 Facebook 上看到強者我同事 (還沒被警察抓走的 CQD) 翻譯丟出來:\r\n\r\n\"\"", + "title": "xkcd 的 Isolation" + }, + { + "id": "6136", + "body": "libpng 的安全性問題,CVE-2015-8126:\r\n\r\n
Multiple buffer overflows in the (1) png_set_PLTE and (2) png_get_PLTE functions in libpng before 1.0.64, 1.1.x and 1.2.x before 1.2.54, 1.3.x and 1.4.x before 1.4.17, 1.5.x before 1.5.24, and 1.6.x before 1.6.19 allow remote attackers to cause a denial of service (application crash) or possibly have unspecified other impact via a small bit-depth value in an IHDR (aka image header) chunk in a PNG image.
\r\n\r\n一堆軟體要更新啊...", + "title": "libpng 漏洞..." + }, + { + "id": "6137", + "body": "TPP (The Trans-Pacific Partnership跨太平洋戰略經濟夥伴關係協議) 的黑箱作業在 Wikileaks 揭露後 (TPP Treaty: Intellectual Property Rights Chapter - 5 October 2015) 才被大量解讀,而與預期的一樣,既然會黑箱當然就是見不得人,違反公眾利益的事情。\r\n\r\nEFF 有導讀專欄分析,有興趣的可以從這邊下手:「Trans-Pacific Partnership Agreement」。\r\n\r\n這邊要講的是 TPP 裡對 GPL 的影響:「TPP has provision banning requirements to transfer of or access to source code of software」。\r\n\r\n其中這組條款對原始程式碼 (source code) 的約束直接衝擊 GPL 類強制要求 open source 的約束:\r\n\r\n
Article 14.17: Source Code\r\n
    \r\n
\r\n\t
  • No Party shall require the transfer of, or access to, source code of software owned by a person of another Party, as a condition for the import, distribution, sale or use of such software, or of products containing such software, in its territory.\r\n
  • \r\n\t
  • For the purposes of this Article, software subject to paragraph 1 is limited to mass-market software or products containing such software and does not include software used for critical infrastructure.
  • \r\n\t
  • Nothing in this Article shall preclude:\r\n(a) the inclusion or implementation of terms and conditions related to the provision of source code in commercially negotiated contracts; or\r\n(b) a Party from requiring the modification of source code of software necessary for that software to comply with laws or regulations which are not inconsistent with this Agreement.
  • \r\n\t
  • This Article shall not be construed to affect requirements that relate to patent applications or granted patents, including any orders made by a judicial authority in relation to patent disputes, subject to safeguards against unauthorised disclosure under the law or practice of a Party.
  • \r\n
    ", + "title": "TPP (The Trans-Pacific Partnership) 對 GPL 的影響" + }, + { + "id": "6138", + "body": "先前提到「Google 工程師在 Amazon 上留下對 USB-C 線的精彩評價...」,後來這位工程師 Benson Leung 寫了更多的評價出來,在「Amazon.com: Profile for Benson Leung」這邊可以看到。\r\n\r\n可以看到大量的線被打了兩顆星,不過還是少數有幾條線測過了:\r\n\r\n\r\n35 條只過了 6 條,看起來狀況不太好啊 XDDD", + "title": "Google 工程師在 Amazon 上對 Type C USB 線的評論" + }, + { + "id": "6139", + "body": "Comcast 的 300GB/month 限制在 Comcast 的內部文件表示對於解決網路壅塞問題無關,只是商業考量 (或者說「找個理由想收更多的錢」):「Leaked Comcast docs prove 300GB data cap has nothing to do with network congestion」。\r\n\r\n\"\"\r\n\r\n最下方的:\r\n\r\n
    Don’t Say: “The program is about congestion management.” (It is not.)
    \r\n\r\n這讓我想到 2000 年的時候,計中對交大宿舍網路做的每日流量限制,反而造成整體流量不斷上升,因為大家都覺得沒用完浪費掉了,雖然把本來 bandwidth distribution 的右半段砍掉,但左半段全部爬上來,結果積分起來整體流量增加超多 XDDD\r\n\r\n從那時候第一次在實戰驗證,在某些情境下,假性的公平上反而會造成整體成本的提昇... 相關的討論還是可以用 Google Groups 在 nctu.talk 或是 tw.bbs.campus.nctu 上找到。\r\n\r\n突然想到好久沒找老師出來吃飯了?也許十二月該來約一約了...", + "title": "Comcast 的 300GB/month 限制" + }, + { + "id": "6140", + "body": "看到「http://0.30000000000000004.com/」這個網站對經典的 0.1 + 0.2 問題整理了各語言的結果。這個網址名稱也很機車啊 XD\r\n\r\n開頭的說明講述 IEEE 754 二進制表示法的問題:\r\n\r\n
    Your language isn't broken, it's doing floating point math. Computers can only natively store integers, so they need some way of representing decimal numbers. This representation comes with some degree of inaccuracy. That's why, more often than not, .1 + .2 != .3.\r\n\r\nIt's actually pretty simple. When you have a base 10 system (like ours), it can only express fractions that use a prime factor of the base. The prime factors of 10 are 2 and 5. So 1/2, 1/4, 1/5, 1/8, and 1/10 can all be expressed cleanly because the denominators all use prime factors of 10. In contrast, 1/3, 1/6, and 1/7 are all repeating decimals because their denominators use a prime factor of 3 or 7. In binary (or base 2), the only prime factor is 2. So you can only express fractions cleanly which only contain 2 as a prime factor. In binary, 1/2, 1/4, 1/8 would all be expressed cleanly as decimals. While, 1/5 or 1/10 would be repeating decimals. So 0.1 and 0.2 (1/10 and 1/5) while clean decimals in a base 10 system, are repeating decimals in the base 2 system the computer is operating in. When you do math on these repeating decimals, you end up with leftovers which carry over when you convert the computer's base 2 (binary) number into a more human readable base 10 number.
    \r\n\r\n這邊主要是討論 IEEE 754-1985 這個標準,後來在 IEEE 754-2008 提出了新的表示方法,支援十進位的表示法來解這個問題 (雖然還沒普及)。", + "title": "0.1 + 0.2 = 0.30000000000000004" + }, + { + "id": "6141", + "body": "在「Parallel Sequential Scan is Committed!」這邊看到 PostgreSQL 9.5 (還沒出) 將會有 Parallel Sequential Scan 的功能。\r\n\r\n文章的作者直接拿了一個大家超常用的惡搞來示範,也就是經典的 LIKE '%word%':\r\n\r\n
    rhaas=# \\timing\r\nTiming is on.\r\nrhaas=# select * from pgbench_accounts where filler like '%a%';\r\n aid | bid | abalance | filler\r\n-----+-----+----------+--------\r\n(0 rows)\r\n\r\nTime: 743.061 ms\r\nrhaas=# set max_parallel_degree = 4;\r\nSET\r\nTime: 0.270 ms\r\nrhaas=# select * from pgbench_accounts where filler like '%a%';\r\n aid | bid | abalance | filler\r\n-----+-----+----------+--------\r\n(0 rows)\r\n\r\nTime: 213.412 ms
    \r\n\r\n這功能真不錯 XD", + "title": "PostgreSQL 9.5 將會有 Parallel Sequential Scan" + }, + { + "id": "6142", + "body": "前陣子在「STARTTLS 的不完整性以及大規模監控電子郵件」提到現有的標準無法確保 ESMTP 一定會啟用 STARTTLS。所以 Google 正在跟 M3AAWG 研究標準來保護這類攻擊:\r\n\r\n
    First, we found regions of the Internet actively preventing message encryption by tampering with requests to initiate SSL connections. To mitigate this attack, we are working closely with partners through the industry association M3AAWG to strengthen “opportunistic TLS” using technologies that we pioneered with Chrome to protect websites against interception.
    \r\n\r\n另外一方面,Google 之後也會將未透過 STARTTLS 傳輸的信件標示出來:\r\n\r\n
    To notify our users of potential dangers, we are developing in-product warnings for Gmail users that will display when they receive a message through a non-encrypted connection. These warnings will begin to roll-out in the coming months.
    \r\n\r\nGoogle 的文章可以在「New Research: Encouraging trends and emerging threats in email security」這邊看到。\r\n\r\n我的想像是 DNSSEC + TXT record 標示,不知道會不會走這條...", + "title": "Gmail 將會針對沒有加密傳輸收到的信件標示警告" + }, + { + "id": "6143", + "body": "在「Twitter Sees 6% Increase In “Like” Activity After First Week Of Hearts」這邊看到 Twitter 把 Favorite 變成 Like 後的成長:\r\n\r\n
    The reason? According to Weil, “It’s easier to understand.” Makes sense. How many favorites could you really have at the end of the day? The increase is 6% for existing users and 9% for new users.
    \r\n\r\n不過,更多的 Like 會有更多的互動嗎?", + "title": "Twitter 把收藏變成心狀後的使用成長" + }, + { + "id": "6144", + "body": "在這篇看到現在已經有跨裝置的追蹤機制:「Beware of ads that use inaudible sound to link your phone, TV, tablet, and PC」。\r\n\r\n電視廣告利用超高頻 (人類聽不到) 與手機或平板裝置上的應用程式配對,進而組合使用者的行為:\r\n\r\n
    The ultrasonic pitches are embedded into TV commercials or are played when a user encounters an ad displayed in a computer browser. While the sound can't be heard by the human ear, nearby tablets and smartphones can detect it. When they do, browser cookies can now pair a single user to multiple devices and keep track of what TV commercials the person sees, how long the person watches the ads, and whether the person acts on the ads by doing a Web search or buying a product.
    \r\n\r\n難以被關閉的追蹤機制,看起來就是 NSAFBICIA 之類超愛的技術。", + "title": "利用極高頻的音波跨裝置侵犯使用者隱私" + }, + { + "id": "6145", + "body": "Google Maps 宣佈支援離線操作:「Navigate and search the real world … online or off」。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n
    Now you can download an area of the world to your phone, and the next time you find there’s no connectivity—whether it’s a country road or an underground parking garage—Google Maps will continue to work seamlessly.
    \r\n\r\n這功能在國外旅遊 (漫遊的時候) 還蠻好用的,可以先在飯店把地圖抓下來,再往外面跑...", + "title": "Google Maps App 支援離線作業" + }, + { + "id": "6146", + "body": "Percona 的人對 Amazon Aurora 分析了不少東西:「Amazon Aurora – Looking Deeper」。\r\n\r\n前面的 FUD 類攻擊就先跳過去,重點在架構。Percona 的人猜測架構上是透過 shared storage (以 AWS 來說,最有可能的應該是 EBS-based) 散佈 InnoDB 的 redo log,藉以達到分散的效果:\r\n\r\n\"\"\r\n\r\n另外就是只支援 REPEATABLE-READ,在一般用 READ-COMMITTED 就夠用的情境下,效能上會有一些折扣。", + "title": "Percona 的人對 Amazon Aurora 的分析" + }, + { + "id": "6147", + "body": "看到微軟推出的 CodePush,針對 CordovaReact Native 類透過 WebView 跑的程式提出的方案。原因是 Apple 的 App Store 審核都要很久,透過 CodePush 可以直接更新程式:\r\n\r\n
    CodePush is a cloud service that enables Cordova and React Native developers to deploy mobile app updates directly to their users’ devices. It works by acting as a central repository that developers can publish certain updates to (e.g. JS, HTML, CSS and image changes), and that apps can query for updates from (using our provided client SDKs). This allows you to have a more deterministic and direct engagement model with your end-users, while addressing bugs and/or adding small features that don’t require you to re-build a binary and/or re-distribute it through any public app stores.
    \r\n\r\nFAQ 文件裡提到了這點:(Frequently Asked Questions · CodePush)\r\n\r\n
    Does the Apple App Store allow developers to perform these types of updates?\r\n\r\nAccording to section 3.3.2 of Apple’s developer agreement, as long as you are using the CodePush service to release bug fixes and improvements/features that maintain the app’s original/presented purpose (i.e. don’t CodePush a calculator into a first-person shooter), then you will be fine, and your users will be happy. In order to provide a tangible example, our team published a (pretty cheesy!) CodePush-ified game to the Google Play Store and Apple App Store, and had no problems getting it through the review process.\r\n\r\nBecause Cordova apps are executed within a WebView, and React Native apps are executed within JavaScriptCore, from a technology perspective, these runtimes are unique in their ability to leverage dynamic code downloads according to the aforementioned Apple developer agreement.
    \r\n\r\n同樣的想法如果真的可行,應該會有其他更開放的 open source 方案可以用 (而非綁定性的服務,而是可以掛到自己的 CDN 上下載更新),先觀察一陣子...", + "title": "微軟的 CodePush" + }, + { + "id": "6148", + "body": "在 TechCrunch 上看到的「Gmail, We Need To Talk」這篇裡提到 Gmail 的問題,尤其是 CSS 這塊:\r\n\r\n
    Each Gmail client renders email differently. You may not be aware of this, but each Gmail client has its own set of frustrating quirks. Having to deal with each version of Gmail makes creating email a nail-biting chore:\r\n\r\n
    \r\n\r\n這也就可以理解為什麼有時候手機上看起來怪怪的了 XD", + "title": "在 Gmail 上做 CSS 效果的問題" + }, + { + "id": "6149", + "body": "Square 放出 git-fastclone:「Introducing git fastclone」,會生出這個軟體的原因是 git clone 的速度太慢,對於 CI 的速度影響頗大:\r\n\r\n
    Square uses git-fastclone as part of our iOS and hardware CI systems. Being able to quickly clone into an empty directory, saves us time and ensures we always know the starting state for our builds — no matter what has happened in previous builds. This in turn increases the reliability of the system overall and benefits our engineers.
    \r\n\r\n用 Ruby 寫的,可以用 gem install git-fastclone 直接安裝起來。", + "title": "Square 放出的 git-fastclone" + }, + { + "id": "6150", + "body": "HiNetPPPoE 大約三四天會斷一次,但就算設定要自動重撥好像也不太會動,所以需要自己偵測 ppp0 界面是否存在,不是的話就要撥號...\r\n\r\n測試 ppp0 界面是否存在可以用 ifconfig 的 exit status 判斷,而重撥則可以用 nmcli 來做,用 cron 去判斷變成:\r\n\r\n
    */1 * * * * root /sbin/ifconfig ppp0 > /dev/null 2>&1 || /usr/bin/nmcli connection up id \"HiNet PPPoE\" > /dev/null 2>&1
    \r\n\r\n我是用 \"HiNet PPPoE\" 這個名稱,如果要用到你自己的機器上的話,把上面的 \"HiNet PPPoE\" 換成你在 NetworkManager 裡設定的名稱。", + "title": "Ubuntu 在 Command Line 下自動重撥 PPPoE" + }, + { + "id": "6151", + "body": "AWS Device Farm 支援在 iOSAndroid 上測試 Web Application 了:「AWS Device Farm Update – Test Web Apps on Mobile Devices」。\r\n\r\n\"\"\r\n\r\n支援愈來愈多東西了...", + "title": "AWS Device Farm 支援手機上的 Web Application 測試" + }, + { + "id": "6153", + "body": "現在是十一月對吧,地球上有哪個地方現在是四月一號嗎...\r\n\r\nAmazon Storywriter 是個自動排版工具,支援 Google Chrome extension,不過從 screenshot 好像看到特別的東西:「Free Amazon scriptwriting app lets scribes pitch directly to Amazon Studios」。\r\n\r\n\"\"\r\n\r\n這字型有種... 不知道要說什麼的感覺啊 XDDD\r\n\r\n反而會想要用看看,到底對寫作提昇多少幫助 XDDD", + "title": "Amazon Storywriter" + }, + { + "id": "6154", + "body": "Amazon EC2 在十月預告了 Dedicated Hosts (參考「Amazon EC2 預定要推出的 Dedicated Hosts」),在今天正式推出來讓大家用:「Now Available – EC2 Dedicated Hosts」。\r\n\r\n價錢在「Amazon EC2 Dedicated Host Pricing」這邊,租用就是整台一起租用,所以價錢都是以 Instance Family 在計算,在一台 Dedicated Host 上面可以跑的虛擬機數量與 Instance Type 有關,舉例來說:c4 只能跑一個 8xlarge,也可以跑兩個 4xlarge。\r\n\r\n一台 Dedicated Host 當然可以跑很多 Instance,不過只能跑一樣的大小的 Instance Type:\r\n\r\n
    I choose the instance type (Dedicated hosts for M3, M4, C3, C4, G2, R3, D2, and I2 instances are available), the Availability Zone, and the quantity (each Dedicated Host can accommodate one or more instances of a particular type, all of which must be the same size).
    \r\n\r\n另外 Dedicated Hosts 一定要放到 VPC 內 (理論上新帳號都有強迫這樣了),不過可以跨 VPC 就是了:\r\n\r\n
    Instances launched on a Dedicated Host must always reside within a VPC. A single Dedicated Host can accommodate instances that run in more than one VPC.
    \r\n\r\n目前能開的數量有限制,有需要更多的人可以開 support ticket 去要:\r\n\r\n
    You can allocate up to 2 Dedicated Hosts per instance family (M4, C4, and so forth) per region; if you need more, just ask.
    ", + "title": "Amazon EC2 的 Dedicated Hosts 正式推出" + }, + { + "id": "6155", + "body": "Dell 在出廠的電腦上裝了 Root Certificate (eDellRoot),並且附上 Private Key:「Dell apologizes for HTTPS certificate fiasco, provides removal tool」。\r\n\r\n出自 Redditrotorcowboy 的爆破:「Dell ships laptops with rogue root CA, exactly like what happened with Lenovo and Superfish」。\r\n\r\n\"\"\r\n\r\nDell 官方的正式回應:「Response to Concerns Regarding eDellroot Certificate」。\r\n\r\n由於有 Private Key,有人架了一個檢測網站,在「Are you affected by the eDellRoot-Certificate issue?」這邊可以確認電腦是否中獎。\r\n\r\n大家都超愛搞這套的 XDDD", + "title": "Dell 在出廠的電腦上裝自己的 Root Certificate,順便把 Private Key 也裝進去了..." + }, + { + "id": "6156", + "body": "從 PHP 網站上的「Supported Versions」與「Unsupported Branches」可以看到今年九月初 PHP 5.4 就已經停止維護了 (包括安全性更新也停了)。\r\n\r\n在「PHP Versions Stats - 2015 Edition」這邊利用 Packagist 的資料分析,還是可以看到很多人用 PHP 5.3 與 PHP 5.4:\r\n\r\n\"\"\r\n\r\n唔,很符合 PHP 社群以及各家 hosting 萬年不更新的使用習慣...?", + "title": "PHP 的生命週期" + }, + { + "id": "6157", + "body": "Amazon 之前放 s2n 出來當作 TLS protocol 的方案,於是就有人摸出東西來:「Lucky Microseconds: A Timing Attack on Amazon's s2n Implementation of TLS」。\r\n\r\n即使是經過外部資安檢證,仍然還是有找到問題。這次找到的問題是 timing attack 類在 CBC-mode 下的 plaintext recovery:\r\n\r\n
    At the time of its release, Amazon announced that s2n had undergone three external security evaluations and penetration tests. We show that, despite this, s2n - as initially released - was vulnerable to a timing attack in the case of CBC-mode ciphersuites, which could be extended to complete plaintext recovery in some settings.
    \r\n\r\n攻擊分成兩個階段:\r\n\r\n
    Our attack has two components. The first part is a novel variant of the Lucky 13 attack that works even though protections against Lucky 13 were implemented in s2n. The second part deals with the randomised delays that were put in place in s2n as an additional countermeasure to Lucky 13. Our work highlights the challenges of protecting implementations against sophisticated timing attacks.
    \r\n\r\n最後還是酸了一下 Amazon:\r\n\r\n
    It also illustrates that standard code audits are insufficient to uncover all cryptographic attack vectors.
    \r\n\r\nAmazon 的官方說明則在「s2n and Lucky 13」這邊可以看到。", + "title": "Amazon 之前放出的 s2n 的安全性問題" + }, + { + "id": "6158", + "body": "Firefox 宣佈支援 OCSP Must-Staple:「Improving Revocation: OCSP Must-Staple and Short-lived Certificates」。\r\n\r\n先前的 SSL certificate 的 revoke 技術目前是透過 CRLOCSP 兩個技術在支撐,前者是列出所有被 revoke 的清單,後者則是瀏覽器主動去指定的 server 確認這個 SSL certificate 是否有效。但這兩個方法都有嚴重的問題。\r\n\r\nCRL 的問題是 revoke 清單會愈來愈多。這完全沒辦法 scale。\r\n\r\nOCSP 的問題有幾個,一個是熱門網站的 SSL certificate 會讓 OCSP server 的負擔非常重 (不過還是有些辦法打散)。第二個問題是 OCSP server 會知道哪些 IP 造訪了哪些網站,使得隱私權受到嚴重侵害。第三個問題則是 client 需要再連線確認花掉很多時間,而且失敗機率超高:\r\n\r\n
    However, these checks can be slow and unreliable. They time out about 15% of the time, and take about 350ms even when they succeed.
    \r\n\r\n也因為極度不穩定,對於一般的 SSL certificate 在連不到 OCSP server 時,沒有瀏覽器敢直接 hard-fail (EV SSL certificate 是強制要求 OCSP 要過),於是反而給了攻擊者一個很簡單的方法:取得 private key 攻擊時順便擋掉對 OCSP server 的連線。\r\n\r\n後來 OCSP 技術改善而推出 OCSP stapling,由 server 定時去 OCSP server 取得「這個 SSL certificate 未被 revoke」的簽名認證後,一起在 TLS connection 裡傳輸給 client 端,這樣有許多好處:\r\n\r\n\r\n\r\n而這次 Firefox 更進一步支援讓 SSL certificate 上標注 OCSP Must-Staple,表示這個 certificate 必須有 OCSP stapling 才行,這使得這類 SSL certificate 在 revoke 後無法被利用,真正的完全失效。\r\n\r\n不知道其他家會不會跟進...", + "title": "Firefox 支援 OCSP Must-Staple" + }, + { + "id": "6159", + "body": "在「TIFU by using Math.random()」這篇看到作者踩到地雷,於是在討論 V8 EngineMath.random() 的亂度不足。\r\n\r\n其實這個問提早在 2012 年就有人在 StackOverflow 上詢問:「Why is Google Chrome's Math.random number generator not *that* random?」,而且也回答得很清楚。\r\n\r\n而 Mozilla 這邊在 2006 年也被提出了類似的問題:「Bug 322529 - Upgrade Math.random() to a better algorithm, such as Mersenne Twister」。\r\n\r\n文章中間花了許多篇幅講 PRNG 的介紹,以及 cycle length 的說明,重點其實在結論的部份。\r\n\r\n主要是因為 V8 Engine 的 Math.random() 實作的是 MWC1616 演算法 (Fast random number generation using 128 bit multimedia extension registers on Pentium class machines),而這個演算法用起來也綁手綁腳:\r\n\r\n
    If you’re only using the most significant 16 bits it has a very short effective cycle length (less than 2³⁰).
    \r\n\r\n有兩個方向可以改善 (不衝突的方向),一個是使用 CSPRNG (保證有極長的 cycle length),另外一個請求 V8 Engine 把 Math.random() 的演算法換掉,像是 MT19937 這類 cycle length 超級長的演算法。\r\n\r\n不知道後續有沒有機會改善...", + "title": "V8 的 Math.random() 亂度不足的問題" + }, + { + "id": "6160", + "body": "在「Chrome Extensions – AKA Total Absence of Privacy」這邊討論了 Google Chrome 官方的 Web Store 上有很多應用程式為了賺錢在追蹤個人行為:\r\n\r\n
    We’ve seen some indications on Chrome Extension-forums that it’s around $0.04 per user/month.
    \r\n\r\n而且因為是 extension,可以直接穿越 Ghostery 之類的防護網,於是就變得無法 opt-out。你可以利用「In order to continuously improve and maintain this software we work with」這樣的字串去找,會以發現有不少 extension 用了 Fairshare 的方案來賺錢。\r\n\r\n文章作者呼籲 Google 要提出方案來制止這類行為,不過我覺得 Google 應該是不會做...", + "title": "Google Chrome 上有大量 Extension 在追蹤個人行為" + }, + { + "id": "6161", + "body": "Debug 模式會比一般的模式來的慢,但可以看到更多資訊。以往的問題是 5xx 難以重製,而 NGINX 的「Capturing 5xx Errors with a Debug Server」這篇文章介紹了如何用 nginx 實作標題的功能。\r\n\r\n\"\"\r\n\r\n如果是隨機造成的問題就沒辦法重製,但如果是 client 的狀態造成的問題,就很有可能可以抓出來... 不是解決所有問題,但可以幫助解掉以前不太好解的狀況。", + "title": "讓 nginx 看到 5xx 回應時,去另外一台有開 debug-mode 的 server 上再跑一次" + }, + { + "id": "6162", + "body": "在「域名小知识:Public Suffix List」這邊看到由 Mozilla 維護的 Public Suffix List,記錄了哪些 suffix 屬於 top-level:\r\n\r\n\r\n\r\n所以 supercookie 阻擋機制是從這邊來的...", + "title": "Mozilla 維護的 Public Suffix List" + }, + { + "id": "6163", + "body": "Raspberry Pi 出了新的系列,只要 USD$5 的 Raspberry Pi Zero:「Raspberry Pi Zero: the $5 computer - Raspberry Pi」。\r\n\r\n機器更小了,不過要注意的是沒有網路介面。看起來比較像是接機器人之類的?先用 USB 裝一裝,裝好後就都不需要了...\r\n\r\n", + "title": "Raspberry Pi Zero" + }, + { + "id": "6164", + "body": "在「Hostnames and usernames to reserve」這邊提到公開服務時的保留名稱問題。\r\n\r\n首先是提到 hostname 的部分,被各協定使用到的都散落在各標準裡,另外就是利用前幾天提到的「Mozilla 維護的 Public Suffix List」加減擋 cookie...\r\n\r\n比較感興趣的是 email 的部分的標準,這邊主要在討論 SSL certificate 的註冊。在「Baseline_Requirements_V1_3_1」的 3.2.2.4. Authorization by Domain Name Registrant 的第四項提到:\r\n\r\n
    Communicating with the Domain’s administrator using an email address created by pre‐pending ‘admin’, ‘administrator’, ‘webmaster’, ‘hostmaster’, or ‘postmaster’ in the local part, followed by the at‐sign (“@”), followed by the Domain Name, which may be formed by pruning zero or more components from the requested FQDN;
    \r\n\r\n也就是指出只能用上面提到的這幾個 mail address 來認證。不過為了安全起見,RFC 2412 定義的也應該擋下來。這兩組標準列出來的 username 都算是合理,沒什麼問題。\r\n\r\n最後則是討論 path part,這點倒是有不少地雷可以看看,尤其是最新的 ACME 產生的問題 XDDD", + "title": "Hostname 與 Username 的保留名稱問題" + }, + { + "id": "6165", + "body": "在「Enabling TCP Fast Open for NGINX on CentOS 7」這邊看到 nginxTCP Fast Open (TFO,RFC 7413) 的支援早在 1.5.8 就有了,而 Linux Kernel 也是 3.7 之後就全面支援了。\r\n\r\nTCP Fast Open 利用第一次連線後產生的 TCP cookie,在第二次連線時可以在 3-way handshake 的過程就開始傳輸,藉此大幅降低 latency。\r\n\r\n設定方法不難,先在 kernel 設定 net.ipv4.tcp_fastopen=3,再加上 fastopen=number 就可以了,像是這樣:\r\n\r\n
    listen 80 fastopen=256
    \r\n\r\n不過目前 NGINX Mainline 上的版本好像沒有編進去,暫時沒辦法測...", + "title": "nginx 的 TCP Fast Open" + }, + { + "id": "6166", + "body": "在「Listening to satellites for 30 dollars」這篇文章介紹了如何接受氣象衛星的訊號,並且轉成圖片...\r\n\r\n關鍵的兩個軟體,一個是作者是先用 GQRX 收下來,然後用 WXtoImg 轉成圖片,這是作者抓下來的成果:(NOAA-15 的資訊)\r\n\r\n\"\"\r\n\r\n如果在刻一些程式儘量全自動化,用 Raspberry Pi 丟到陽台收訊號轉換,好像是個不錯的方法?不知道衛星每天丟出來的量有多少...", + "title": "接收氣象衛星訊號" + }, + { + "id": "6168", + "body": "在「Google ends 32-bit Linux support for Chrome」這邊看到新聞,引用自「Updates to Google Chrome Linux support」這邊的消息:\r\n\r\n
    To provide the best experience for the most-used Linux versions, we will end support for Google Chrome on 32-bit Linux, Ubuntu Precise (12.04), and Debian 7 (wheezy) in early March, 2016. Chrome will continue to function on these platforms but will no longer receive updates and security fixes.\r\n\r\nWe intend to continue supporting the 32-bit build configurations on Linux to support building Chromium. If you are using Precise, we’d recommend that you to upgrade to Trusty.
    \r\n\r\n既然還是會支援 32bits 的情況 (透過 Chromium),到時候應該會有 PPA 出來頂著讓大家用?", + "title": "Google Chrome 將在明年三月停止 32bits Linux 版本支援" + }, + { + "id": "6169", + "body": "有人發現他的 Gmail 進入了 Debug Mode:「Someone left my Gmail in debug mode」。\r\n\r\n\"\"\r\n\r\n原文可以看到很多截圖,看起來像是 debug console 給內部找問題用的東西?", + "title": "Gmail 的除錯模式" + }, + { + "id": "6170", + "body": "WhatsApp (2014 年被 Facebook 買下) 過濾 Telegram 連結的消息在國外引發討論了:「As of today, WhatsApp is blocking Telegram links」。這讓維基百科裡「WhatsApp」這段說明看起來特別的奇特:\r\n\r\n
    WhatsApp宗旨是給予人們一個不被竊聽的溝通橋樑,並從不存取用戶個人資料,像是姓名、性別、年齡或者聊天紀錄,這和烏克蘭裔的創辦人庫姆在有秘密警察的共產國家成長有關,他孩童時期的經歷讓他懂得通訊沒有被監聽的珍貴。
    \r\n\r\n作者在 app 上測了幾個連結:\r\n\r\n\"Whatsapp-blocks-Telegram-copy-yes\"\r\n\r\n這張圖可以看出來 telegram.org 的連結無法點擊。弄了老半天後,發現程式直接針對 Telegram 相關的網域擋掉了:\r\n\r\n\"nexus2cee_Screen-Shot-2015-12-01-at-10.11.09-2\"\r\n\r\n拉張板凳來看看後續會變成什麼樣子...", + "title": "WhatsApp 過濾關於出現「Telegram」的連結" + }, + { + "id": "6173", + "body": "CloudFlare 推出了 HTTP/2 服務,與其他 CDN 業者不一樣的地方在於,他可以同時接受 HTTP/2 與 SPDY:「HTTP/2 is here! Goodbye SPDY? Not quite yet」。\r\n\r\nCloudFlare 拿自家的 www.cloudflare.com 官網測試,顯示 HTTP/2 的效能比 SPDY 又好了不少:\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\t\r\n
    Access via HTTP Protocol VersionAverage Page Load time
    HTTP 1.x9.07 sec.
    SPDY/3.17.06 sec.
    HTTP/24.27 sec.
    \r\n\r\n在正式上 HTTP/2 前,有 80.38% 對 www.cloudflare.com 的 SSL/TLS 連線是 SPDY:\r\n\r\n
    During the week before our HTTP/2 launch, 80.38% of all SSL/TLS connections to our own website at www.cloudflare.com were made over SPDY/3.1.
    \r\n\r\n上線後其實沒有想像中的高:\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\t\r\n
    Protocol VersionPercentage of Hits
    HTTP 1.x19.36%
    SPDY/3.157.02%
    HTTP/223.62%
    \r\n\r\n這也說明了為什麼 CloudFlare 要推出 SPDY + HTTP/2 的服務:\r\n\r\n
    Why choose, if you can have both? Today CloudFlare is introducing HTTP/2 support for all customers using SSL/TLS connections, while still supporting SPDY. There is no need to make a decision between SPDY or HTTP/2. Both are automatically there for you and your customers.
    \r\n\r\n剛剛連到後台確認,由於本來已經打開 SPDY 的使用者會自動開啟 HTTP/2,這表示全球 HTTP/2 的使用率會馬上拉高很多,有太多資源掛在 CloudFlare 上:(像是 cdnjs.com,剛剛確認也已經是 HTTP/2 了)\r\n\r\n
    If you are a customer on the Free or Pro plan, there is no need to do anything at all. Both SPDY and HTTP/2 are already enabled for you.
    \r\n\r\n
    Customers on Business and Enterprise plans can enable HTTP/2 within the \"Network\" application of the CloudFlare Dashboard.
    \r\n", + "title": "CloudFlare 正式推出 HTTP/2,可以與 SPDY 同時混搭" + }, + { + "id": "6175", + "body": "Let's Encrypt 進入 Public Beta,這代表不再需要提出申請才能用了:「Entering Public Beta」。\r\n\r\n
    We’re happy to announce that Let’s Encrypt has entered Public Beta. Invitations are no longer needed in order to get free certificates from Let’s Encrypt.
    \r\n\r\n話說翻資料的時候翻到 Namecheap 對 Let's Encrypt 作出反擊,只能說吃樣很難看:「SSL from Namecheap - What's the difference: Encryption, Validation & Trust」。\r\n\r\n人們選擇 Namecheap 的 SSL certificate 不是因為他好,而是因為他便宜,加上這家公司不像 GoDaddy 那樣邪惡。\r\n\r\n現在有免費的 SSL certificate 出來競爭 (於是根本打不贏) 就放 FUD 攻擊,吃相極為難看。有人針對 Namecheap 的文章駁斥了裡面大量錯誤的論點:「Comment on Namecheap's SSL」。\r\n\r\n接下來應該可以弄不少來玩,來整理文章把申請與自動 renew 的步驟做出來...", + "title": "Let's Encrypt 進入 Public Beta 開放給大眾使用" + }, + { + "id": "6176", + "body": "Jerry Qu 寫的「关于启用 HTTPS 的一些经验分享」這篇文章講了要怎麼將 HTTP 站台逐步換成 HTTPS 站台的方式 (以及工具)。\r\n\r\n一開始會遇到 Mixed Content,瀏覽器預設值不會直接全部擋掉,而是會放行圖片類資源 (但是出現對應的警告)。然後可以用 upgrade-insecure-requests 來幫助邊換,讓 url 裡指定 http 的自動連到 https。\r\n\r\n當全站把 url 都修完後,接著就可以考慮用 HSTS 強制全上 HTTPS。\r\n\r\n做到這邊的安全性已經到一定程度了,接下來要不要進 HSTS Preload List 就看大家自己的想法了。", + "title": "把 HTTP 站台逐步換向 HTTPS 站台的步驟" + }, + { + "id": "6177", + "body": "從 Richard Bagshaw 這邊看到的介紹文章:\r\n\r\n\r\n\r\n每一篇都不長,前兩篇在講型別相關的事情,後面講新的 operator...", + "title": "PHP 7 的新特性介紹" + }, + { + "id": "6178", + "body": "除了在上一篇的「PHP 7 的新特性介紹」這邊提到了不少 PHP 7 的新特性外,在「PHP 7 is now available: new features & improvements」與「Five Lesser-Known Features of PHP 7」這兩篇也介紹了不少其他的特性。(這陣子應該會有不少文章出來)\r\n\r\n挑個比較有趣的幾個來講,亮是看到 Anonymous classes 的出現,可以這樣用:\r\n\r\n
    $foo = new class {\r\n    public function foo() {\r\n        return \"bar\";\r\n    }\r\n};
    \r\n\r\n有種 Interface 的存在感會愈來愈低的感覺...", + "title": "更多關於 PHP 7 新功能的介紹..." + }, + { + "id": "6179", + "body": "LogicMonitor 的人比較了 PCIe SSD 與 SATA SSD,他們在意的重點是 read/write latency 非單純的 throughput:「Device Utilization of PCIe and SATA SSDs」。\r\n\r\n文章裡講得很長,把他們找原因的過程寫出來,從 latency 的影響改變到 queue service 的變化:\r\n\r\n\"\"\r\n\r\n後來換成 PCIe SSD 後 write latency 從 1.8ms 掉到 0.02ms 左右,大約是兩個零的差距。\r\n\r\n另外文章裡也提到了 fio 這個測試工具,找時間來測試看看,熟悉一下...", + "title": "PCIe 的 SSD 與 SATA 的比較" + }, + { + "id": "6180", + "body": "Google 推出分析圖片的服務 Google Cloud Vision API:「Google Cloud Vision API changes the way applications understand images」。\r\n\r\n\"Cloud\r\n\r\n分析圖片後給 tag 以及對應的分數,馬上就想到好多應用可以玩...\r\n\r\n目前測試期不收費,之後會公佈:\r\n\r\n
    There is no cost for usage of the service during the Limited Preview phase. We will introduce pricing in future phases.
    ", + "title": "Google Cloud Vision API" + }, + { + "id": "6182", + "body": "CloudFlare 整理了一篇「Tools for debugging, testing and using HTTP/2」,說明有哪些測試工具可以用...\r\n\r\n\"Screen-Shot-2015-12-04-at-10-46-21\"\r\n\r\n從最簡單的「HTTP/2 and SPDY indicator」(Google Chrome) 或是「HTTP/2 and SPDY indicator」(Firefox),到後面各式各樣的工具都有列出來。甚至還包括 command line 與 packet snooping 類的工具都有...", + "title": "HTTP/2 測試工具" + }, + { + "id": "6184", + "body": "可以看 Reddit 上的「--disable-new-avatar-menu no longer working for chrome 47?:chrome」這個: \r\n\r\n
    I had to reinstall chrome today and it just happens that they pushed out v47 today. I can't seem to get the workaround to work anymore
    \r\n\r\n對應的 bug report 是「Add an option to hide the new avatar menu in settings」,七月的時候直接被標成 wontfix,但當時還有 --disable-new-avatar-menu 的選項讓人可以硬拔掉。\r\n\r\n十月的時候在「Remove references to IsNewAvatarMenu since the flag was removed.」這邊全部拔掉,直接強姦放上去... 被列到的 BUG=517582 則被標成 secret 無法觀看。", + "title": "Google Chrome 右上角超醜的 Profile Button 關不掉了..." + }, + { + "id": "6185", + "body": "WeeChat 上的 buffers.pl 是個很好用的套件,可以在側邊列出 channel,像是這樣:\r\n\r\n\"weechat_bar_buffers_2008-09-02\"\r\n\r\n其中一個特點是,左側的 channel list 會自動伸展到目前最長的 channel name。由於我用 WeeChat 連 Slack 提供的 IRC Gateway,加上最近提供多人交談的功能,就產生出這樣的 channel name:\r\n\r\n
    #mpdm-gslin--persona--personb--personc--persond--persone----1
    \r\n\r\n解法是限制側邊的寬度,用 /set buffers.look.name_size_max 32 後再 /save 存起來就可以了。是在「[buffers.pl] name_size_max adding crop suffix too soon in certain cases」這邊找到的關鍵字。", + "title": "限制 WeeChat 中 buffers.pl 的寬度" + }, + { + "id": "6187", + "body": "MozillaiOS 上也出了自己的 Content Blocker,叫做 Focus by Firefox:「Announcing Focus by Firefox, a Content Blocker for iOS」:\r\n\r\n
    Today we’re pleased to announce the launch of Focus by Firefox, a free content blocker for Safari users on iOS 9 that gives users greater control of their mobile Web experience.
    \r\n\r\n沒搞懂 Mozilla 跑出來弄這個的目的...", + "title": "Mozilla 在 iOS 上也出了自己的 Content Blocker" + }, + { + "id": "6188", + "body": "AWS 把價錢資訊也 API 化了:「New – AWS Price List API」。\r\n\r\n除了可以透過 API 取得資訊外,還可以透過 Amazon SNS,在價錢有變動時得到通知:\r\n\r\n
    You can also elect to receive notification via Amazon Simple Notification Service (SNS) each time we make a price change.
    \r\n\r\n讓 billing 的各種計算變方便。", + "title": "AWS Price List API" + }, + { + "id": "6189", + "body": "前幾天 AWS 放出來的新功能,可以針對 Auto Scaling 裡的機器設定保護 (避免關機):「New – Instance Protection for Auto Scaling」。\r\n\r\n看提供的 pseudocode 可以了解想法,ProcessWorkUnit(Work) 是個需要跑比較長時間的 process,中斷掉的話會浪費掉 resource:\r\n\r\n
    while (true)\r\n{\r\n  SetInstanceProtection(False);\r\n  Work = GetNextWorkUnit();\r\n  SetInstanceProtection(True);\r\n  ProcessWorkUnit(Work);\r\n  SetInstanceProtection(False);\r\n}
    \r\n\r\n也就是這些機器還是會被 Auto Scaling 計算在內,但關機不會動這些機器。這段範例有種以前上課學 mutexcritical section 的感覺...", + "title": "Auto Scaling 的 Instance Protection,有點像是 mutex..." + }, + { + "id": "6191", + "body": "AWS 每個產品最近都丟出好多東西 (因為年底要到了嗎?),這次是 Amazon Route53 透過拖拉界面簡化 DNS 的設定:「New – Route 53 Traffic Flow」。\r\n\r\n可以從這幾張畫面看出來 Traffic Flow 的用法:\r\n\r\n\"r53_create_endpoint_1\"\r\n\r\n\"r53_weighted_rule_1\"\r\n\r\n\"r53_failover_rule_1\"\r\n\r\n看畫面的資訊,功能都是本來在 Route53 上就有的,這次是設計界面讓使用者在 AWS Management Console (也就是 Web Console) 上更容易設定進階的分流。", + "title": "更簡單設定 Route53 的方式:Route53 Traffic Flow" + }, + { + "id": "6195", + "body": "Amazon Redshift 也推出了好幾個新功能,不過有個有點奇怪的壓縮格式 bzip2 出現了:「Amazon Redshift announces tag-based permissions, default access privileges, and BZIP2 compression format」。\r\n\r\n
    BZIP2 data format: The COPY command now accepts data in BZIP2 compression format, in addition to GZIP and LZOP formats, when loading data into Amazon Redshift. Refer to Data Format Parameters for more details.
    \r\n\r\n既然出了 bzip2,為什麼不一起出個效率與壓縮率都更好的 xz?但不管怎樣,總是多了一個壓縮率再更高一點的選擇... @_@", + "title": "Amazon Redshift 的新功能 (BZIP2)" + }, + { + "id": "6197", + "body": "在試了一陣子後才發現的問題,crontab 裡的百分比符號 % 是特殊字元:「escaping double quotes and percent signs (%) in cron」。\r\n\r\n取自 Debian 上的 crontab(5):\r\n\r\n
    Percent-signs (%) in the command, unless escaped with backslash (\\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
    \r\n\r\n有點奇怪就是了,因為有 echo 可以用才對?", + "title": "cron 裡面的百分比符號 % 有特殊意義..." + }, + { + "id": "6198", + "body": "先前提到 JavaScript Errors Notifier 裡有 FairShare 的問題:「改用沒有 FairShare 版本的 JavaScript Errors Notifier」。\r\n\r\n剛剛在 Urgent: Make javascript-errors-notifiers less invasive 這邊看到作者已經從 Google Web Store 上面的版本拿掉 FairShare 了:\r\n\r\n
    And yes, it was completely removed.
    \r\n\r\n另外也得到一些數字:\r\n\r\n
    This decision is about -$5000 of my yearly income, but, anyway, it makes me feel better :)
    ", + "title": "JavaScript Errors Notifier 移除 FairShare 了" + }, + { + "id": "6199", + "body": "CloudFront 總算是宣佈支援 gzip 壓縮了:「New – Gzip Compression Support for Amazon CloudFront」。\r\n\r\n\"cloudfront_console_compress_option_1\"\r\n\r\n不過在「Serving Compressed Files」文件裡提到,CloudFront 有可能不壓縮 (居然還有這種的...):\r\n\r\n
    CloudFront is busy\r\n\r\nIn rare cases, when a CloudFront edge location is unusually busy, some files might not be compressed.
    \r\n\r\n另外看起來也沒辦法指定壓縮哪些 Content-Type,只能用選好的值。", + "title": "CloudFront 總算支援 gzip 壓縮了..." + }, + { + "id": "6201", + "body": "每次遇到 AWS 業務就會抱怨的功能總算推出來了,VPC NAT Gateways:「New – Managed NAT (Network Address Translation) Gateway for AWS」。\r\n\r\n與自己用 EC2 架設的不同點在於處理的流量也要計費,但好處是以前得自己處理 HA,現在 AWS 幫你做掉這塊,不過 scalability 還是限制在 10Gbps:\r\n\r\n
    The gateway has built-in redundancy for high availability. Each gateway that you create can handle up to 10 Gbps of bursty TCP, UDP, and ICMP traffic, and is managed by Amazon. You control the public IP address by assigning an Elastic IP Address when you create the gateway.
    \r\n\r\n要注意的是流量計費這塊收費很貴 (非常貴),有大量連外需求的機器,還是用 public ip 直接連外會比較省,或是用老方法自己架設 NAT instances 處理。", + "title": "AWS 推出 NAT Gateways" + }, + { + "id": "6202", + "body": "先前在「V8 的 Math.random() 亂度不足的問題」提到 Math.random() 因為使用 MWC1616 (Fast random number generation using 128 bit multimedia extension registers on Pentium class machines) 而不夠亂的問題。\r\n\r\n這個問題在新版 V8 Engine 提出改善了:「There's Math.random(), and then there's Math.random()」。\r\n\r\n\"Untitled\r\n\r\n新實作的方法是 xorshift128+,擁有極長的 period length:\r\n\r\n
    This has been pointed out to us, and having understood the problem and after some research, we decided to reimplement Math.random based on an algorithm called xorshift128+. It uses 128 bits of internal state, has a period length of 2128 - 1, and passes all tests from the TestU01 suite.
    \r\n\r\n將會在 Google Chrome 49 (目前是 47) 引入:\r\n\r\n
    The new implementation landed in V8 4.9.41.0 within a few days of us becoming aware of the issue. It will become available with Chrome 49. Both Firefox and Safari switched to xorshift128+ as well.
    \r\n\r\n同時還是再次提醒,這不是 CSPRNG,要用在密碼學相關應用還是要用專門的 library 來產生 pseudo random number:\r\n\r\n
    Make no mistake however: even though xorshift128+ is a huge improvement over MWC1616, it still is not cryptographically secure.
    ", + "title": "V8 Engine 的 Math.random() 在新版被重寫了..." + }, + { + "id": "6204", + "body": "AWS 推出了 t2.nano:「EC2 Update – T2.Nano Instances Now Available」。\r\n\r\n只有 512MB 記憶體,拿來跑超小的東西還可以:\r\n\r\n
    Each t2.nano instance has 512 MiB of memory and 1 vCPU, and can run 32 or 64 bit operating systems and applications. They support EBS encryption and up to two Elastic Network Interfaces per instance.
    \r\n\r\n在存滿錢後 (t2 的特性) 可以全速跑 72 分鐘,不過一開始就有 30 credits 可以用,跟其他 t2 的機器不太一樣,算是賣點之一:\r\n\r\n
    The t2.nano offers the full performance of a high frequency Intel CPU core if your workload utilizes less than 5% of the core on average over 24 hours. You get full access to the CPU core when needed, as long as you maintain a positive CPU credit balance. Each newly launched t2.nano starts out with a CPU credit balance of 30 credits, and earns 3 more credits per hour, up to a maximum of 72. This means that each instance can burst to full-core performance for up to 72 minutes at a stretch.
    \r\n\r\n找機會來測試看看跟 t2.micro 的差異好了...", + "title": "AWS 推出 t2.nano" + }, + { + "id": "6205", + "body": "Google 在「Indexing HTTPS pages by default」這邊宣佈了對 HTTPS 更進一步的支援。\r\n\r\n只要是 HTTPS 與 HTTP 內容相同,而且沒有被阻擋 (透過 /robots.txt 之類的),就會優先索引 HTTPS 版本的頁面。\r\n\r\n另外也發現 blogspot.com 支援 HTTPS 了...", + "title": "Google 宣佈再更進一步加強對 HTTPS 頁面的支援" + }, + { + "id": "6206", + "body": "這次 Amazon RDS 發表了更細的監控機制,包括了 MySQL 5.6、MariaDBAurora 這幾個產品線:「New – Enhanced Monitoring for Amazon RDS (MySQL 5.6, MariaDB, and Aurora)」。\r\n\r\n\"rds_full_metrics_list_2\"\r\n\r\n差不多是 SmokePing 可以提供的範圍,算是補的更齊全,讓找問題時的資料更多。不過顆粒細度可以到一秒鐘:\r\n\r\n\"rds_enable_enhanced_monitoring_2\"\r\n\r\n不過要注意的是,t1.micro 與 m1.small 不支援:\r\n\r\n
    It works for MySQL 5.6, MariaDB, and Amazon Aurora, on all instance types except t1.micro and m1.small.
    ", + "title": "Amazon RDS 提更完整的監控機制" + }, + { + "id": "6209", + "body": "也是 AWS 在年假前丟出來的功能:「EC2 Run Command Update – Now Available for Linux Instances」。\r\n\r\n原先只能用在 Windows Instance 上,現在則支援 Linux Instance 了:\r\n\r\n
    When we launched EC2 Run Command seven weeks ago (see my post, New EC2 Run Command – Remote Instance Management at Scale to learn more), I promised similar functionality for instances that run Linux. I am happy to be able to report that this functionality is available now and that you can start using it today.
    \r\n\r\n跟一般 SSH 登入不一樣的地方在於這個功能可以被 AWS IAM 的系統稽核,所有透過這個功能下的指令都會被 AWS 記錄起來。\r\n\r\n\"run_command_linux_run_params_1\"\r\n\r\n\"run_command_linux_output_1\"", + "title": "AWS 的 EC2 Run Command 功能支援 Linux Instance" + }, + { + "id": "6212", + "body": "AWS 推出的工具,可以阻擋 AWS 的 Key 被傳到 Git 上:「awslabs/git-secrets」。可以看到說明:\r\n\r\n
    git-secrets scans commits, commit messages, and --no-ff merges to prevent adding secrets into your git repositories. If a commit, commit message, or any commit in a --no-ff merge history matches one of your configured prohibited regular expression patterns, then the commit is rejected.
    \r\n\r\n算是小工具...", + "title": "AWS 推出 Git Hook,阻擋 AWS 的 Key 被傳到 Git 上..." + }, + { + "id": "6213", + "body": "之前 AirBnB 的屋主在屋內安裝攝影機而打官司的事情繼續被討論:「Beware, houseguests: Cheap home surveillance cameras are everywhere now」。有人提出自救方法,作者使用 DropCam 與 Withings 的 MAC Address Prefix 抓出網路攝影機:「Detect and disconnect WiFi cameras in that AirBnB you’re staying in」。\r\n\r\n由於 MAC address 不需要知道 WPA passphase,所以可以直接掃出來。作者提供的程式需要使用 airmon-ng 來掃無線網路。\r\n\r\n另外作者有點出這個方法可以打掛透過無線網路的裝置 (像是 WiFi jammer),用在安全機制上 (也就是這些產品本來的設計) 未必有效,還是建議用有線網路接:\r\n\r\n
    For the record, I’m well aware DropCam and Withings are also sold as baby monitors and home security products. The very fact this code exists should challenge you to reconsider the non-sane choice to rely on anything wireless for home security. More so, WiFi jammers - while illegal - are cheap. If you care, use cable.
    \r\n\r\n另外要注意的是,在美國地區使用這樣的技術可能是違法的,使用時請自己負責:\r\n\r\n
    It may be illegal to use this script in the US. Due to changes in FCC regulation in 2015, it appears intentionally de-authing WiFi clients, even in your own home, is now classed as ‘jamming’. Up until recently, jamming was defined as the indiscriminate addition of noise to signal - still the global technical definition. It’s worth noting here that all wireless routers necessarily ship with the ability to de-auth, as part of the 802.11 specification.
    ", + "title": "利用 MAC address 抓出網路攝影機 (AirBnB 事件後續的反制)" + }, + { + "id": "6214", + "body": "之前用的 Byobu 會吃 $HOME/.screenrc,但前陣子發現失效了 (我習慣把 screen 的 escape 換成 Ctrl-a + Ctrl-a,而非預設的 Ctal-a + a),研究後發現得用 .byobu/.screenrc 這邊,所以就用 symbolic link 連出來:\r\n\r\n
    $ cd ~/.byobu; ln -s ../.screenrc
    \r\n\r\n不知道是什麼時候的改變...", + "title": "新版 byobu 的 .screenrc" + }, + { + "id": "6215", + "body": "AWS 推出的 aws-shell 透過大量的 auto completion 幫助你管理 AWS 的各種資源,可以從官方說明看出是 AWS Command Line Interface (aws-cli) 的延伸:\r\n\r\n
    An integrated shell for working with the AWS CLI.
    \r\n\r\n程式是用 Python 寫的,可以透過 pip 直接安裝到自己的目錄下,官方說明支援 2.6.5+、2.7+、3.3+、3.4+,所以應該是不會有太多問題:\r\n\r\n
    $ pip install aws-shell
    \r\n\r\n第一次執行的時候放著讓他背景建立 index 會比較順。\r\n\r\n\"e95d85da-a328-11e5-8b8d-67566eccf9e3\"\r\n\r\n\"3648b4fc-a32c-11e5-8e18-92f028eb1cee\"\r\n\r\n可以看到功能相當強,甚至可以連到 AWS 上取得資料。\r\n\r\n建議 GitHub 上的首頁說明部份都先看完,然後裝起來先測試玩看看,對於真的要用的時候會方便很多。\r\n\r\n另外他執行時真的丟到 shell 去跑,所以你可以 pipe 出去處理,像是這樣:\r\n\r\n
    ec2 describe-instances | jq .
    ", + "title": "AWS 推出的 aws-shell" + }, + { + "id": "6219", + "body": "前陣子送出的 HTTP Status Code 451 要通過成為標準了:「Why 451?」。\r\n\r\n
    Today, the IESG approved publication of \"An HTTP Status Code to Report Legal Obstacles\". It'll be an RFC after some work by the RFC Editor and a few more process bits, but effectively you can start using it now.
    \r\n\r\n取自「華氏451度」這部講出版物言論自由的作品 (紙的燃點是華氏 451 度),在 Internet 時代,451 剛好在 HTTP Status Code 4xx 的範圍,被拿來用做「因法令限制而服法提供內容的 Status Code」。\r\n\r\n在文件開頭說明了這個代碼的用途:\r\n\r\n
    This document specifies a Hypertext Transfer Protocol (HTTP) status code for use when resource access is denied as a consequence of legal demands.
    ", + "title": "HTTP Status Code 451" + }, + { + "id": "6220", + "body": "以前 Amazon EMR 都只能接著 Public IP 跑 (AWS 端會認這個 IP),現在可以丟進 Private Subnet 裡面跑:「New – Launch Amazon EMR Clusters in Private Subnets」。\r\n\r\n看起來主要是半年前的功能的延伸。\r\n\r\n在今年五月時 Amazon VPC 內有直通 Amazon S3 的介面,不需要再通過 Internet 處理:「Amazon VPC 的 Private Subnet 不需要透過 NAT 去 Amazon S3 抓資料了」。\r\n\r\n不過這個架構上還是需要 NAT 連外 (連到 AWS 的系統溝通),不論是傳統的 NAT Instances 或是 NAT Gateways (參考先前的文章「AWS 推出 NAT Gateways」)。\r\n\r\n\"emr_vpc_private_subnet_nat_2\"\r\n\r\n總算是搬進內部網路了...", + "title": "Amazon EMR 可以在 Private Subnet 裡面執行了..." + }, + { + "id": "6222", + "body": "在 Hacker News Daily 上看到 Android NDK 宣佈向 Clang 靠過去的消息:「Changelog for NDK Build 2490520」。\r\n\r\nAndroid NDK 做為效能的加速手段而使用到 C 或是 C++,所以會使用對應的 compiler suite:\r\n\r\n
    The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. Typically, good use cases for the NDK are CPU-intensive applications such as game engines, signal processing, and physics simulation.
    \r\n\r\n而粗體的兩段則說明了遷移:\r\n\r\n
    PSA: Everyone should be switching to Clang.
    \r\n\r\n以及:\r\n\r\n
    GCC in the NDK is now deprecated.
    ", + "title": "Android NDK 宣佈向 Clang 靠攏..." + }, + { + "id": "6223", + "body": "在 Hacker News Daily 上看到「Super small Docker image based on Alpine Linux」這個專案,看了一下是 BusyBox 類的專案,不過套件支援度比起其他 BusyBox 專案多不少。\r\n\r\n基於 Alpine Linux 的系統:\r\n\r\n
    Alpine Linux is an independent, non-commercial, general purpose Linux distribution designed for power users who appreciate security, simplicity and resource efficiency.
    \r\n\r\nmusl libc 與 BusyBox:\r\n\r\n
    Alpine Linux is built around musl libc and busybox. This makes it smaller and more resource efficient than traditional GNU/Linux distributions. A container requires no more than 8 MB and a minimal installation to disk requires around 130 MB of storage. Not only do you get a fully-fledged Linux environment but a large selection of packages from the repository.
    \r\n\r\n可以拿來玩看看,不過一般狀態下應該還是會拿 UbuntuDebian 的系統來用吧,環境標準多了。(不需要自己花時間找問題)", + "title": "超小的 Docker Image" + }, + { + "id": "6224", + "body": "在 Hacker News Daily 上看到有人在 Gist 上把 Springer 提供的數學類 PDF 書籍整理出來 (Direct links to free Springer maths books (pdf versions)),查了一下好像是「Springer launches full book download feature」的一環?:\r\n\r\n
    Springer have made a bunch of maths books available for free, here are the direct links
    \r\n\r\n其中重複的書名連結表示有多個版本供下載。裡面有很多經典的書籍啊,以前上課的時候都翻過?", + "title": "Springer 免費提供的數學書 (PDF)" + }, + { + "id": "6226", + "body": "Python 宣佈將會搬到 GitHub 上:「[core-workflow] We will be moving to GitHub」,而目前應該是在 Mercurial 架的「Python.org Mercurial repositories index」上。\r\n\r\n看討論有很多反對意見啊...", + "title": "Python 的 Repository 將搬到 GitHub 上" + }, + { + "id": "6228", + "body": "應該是各項成本的降低的順勢降價,幅度約 5%:「Happy New Year – EC2 Price Reduction (C4, M4, and R3 Instances)」。\r\n\r\nC4 與 R3 是針對 CPU 與記憶體,M4 則是一般性的 instance,都是最新的系列。看起來是累積到過年後發一篇用的?價錢馬上生效,同時 On-Demand 的部份回朔到月初:\r\n\r\n
    Changes to the On-Demand and Dedicated host pricing are retroactive to the beginning of the month (January 1, 2016); the new Reserved instance pricing is in effect today. During the month, your billing estimates may not reflect the reduced prices. They will be reflected in the statement at the end of the month.
    \r\n\r\n接下來應該是陸陸續續恢復正常上班...", + "title": "Amazon EC2 的 C4、M4、R3 降價 (約 5%)" + }, + { + "id": "6229", + "body": "在一堆政府想要立法放後門進系統的情況下,荷蘭政府則反對這樣的想法,並且決定捐贈五十萬歐元 (目前約五十四萬美金) 給 OpenSSL:「Dutch govt says no to backdoors, slides $540k into OpenSSL without breaking eye contact」:\r\n\r\n
    The Dutch government has formally opposed the introduction of backdoors in encryption products.\r\n\r\nA government position paper, published by the Ministry of Security and Justice on Monday and signed by the security and business ministers, concludes that \"the government believes that it is currently not appropriate to adopt restrictive legal measures against the development, availability and use of encryption within the Netherlands.\"
    \r\n\r\n以及:\r\n\r\n
    The formal position comes just months after the Dutch government approved a €500,000 ($540,000) grant to OpenSSL, the project developing the widely used open-source encryption software library.
    ", + "title": "荷蘭政府捐贈五十萬歐元給 OpenSSL" + }, + { + "id": "6230", + "body": "在 Hacker News Daily 上面看到的工具,可以寫 script 在 Mac OS X 的 Menu Bar 上面顯示資訊:「Put the output from any script in your Mac OS X Menu Bar」。\r\n\r\n軟體可以用 brew 裝:\r\n\r\n
    brew cask install bitbar
    \r\n\r\n可以自己寫 (參考 Write your own 這段),也有現成的 Plugins 可以參考 (所以你也可以看現成的 code 來釐清用法)。\r\n\r\n\"68747470733a2f2f7261772e6769746875622e636f6d2f6d6174727965722f6269746261722f6d61737465722f446f63732f4269744261722d4578616d706c652d426974636f696e732e706e67\"\r\n\r\n作者提供的截圖是 Bitcoin 的賣價,這價錢多久前了... XD", + "title": "用 Script (Shell、Perl、Python、...) 在 Mac OS X 的 Menu Bar 上面顯示資訊" + }, + { + "id": "6233", + "body": "如同之前在「AWS 將在 2016 年成立南韓機房」提到的,AWS 正式宣佈啟用南韓機房:「Now Open – AWS Asia Pacific (Seoul) Region」。\r\n\r\n機房代碼 ap-northeast-2,同時在官方文件上 Regions and Endpoints 也已經更新了。\r\n\r\n整體價錢比東京低,但跟新加坡比起來有些比較高有些比較低。\r\n\r\n試著拿 Amazon S3 endpoint (也就是 s3-ap-northeast-2.amazonaws.com) 測 latency。當初預測 latency 有機會比較低,但目前看起來線路都還沒最佳化過,都是走日本關西的點再過去,之後不知道有沒有機會直接過去...\r\n\r\nHiNet 是走 NTT 進 AWS 在日本關西的機房換進去:\r\n\r\n
      3.|-- snuh-3301.hinet.net        0.0%    10    0.2   0.2   0.2   0.3   0.0\r\n  4.|-- SNUH-3202.hinet.net        0.0%    10    0.3   0.3   0.3   0.3   0.0\r\n  5.|-- TPDT-3012.hinet.net        0.0%    10    2.3   5.5   1.4  22.0   6.3\r\n  6.|-- r4103-s2.tp.hinet.net      0.0%    10    0.5   0.5   0.4   0.5   0.0\r\n  7.|-- r4003-s2.tp.hinet.net      0.0%    10    0.5   9.1   0.5  44.1  18.1\r\n  8.|-- 211-72-233-41.HINET-IP.hi  0.0%    10   41.6  41.8  41.4  44.7   0.9\r\n  9.|-- ae-4.r23.osakjp02.jp.bb.g  0.0%    10   49.7  48.6  41.6  71.8  10.1\r\n 10.|-- ae-1.r01.osakjp02.jp.bb.g  0.0%    10   41.9  44.3  41.9  46.4   1.3\r\n 11.|-- ae-1.amazon.osakjp02.jp.b  0.0%    10   41.9  42.7  41.9  47.8   1.7\r\n 12.|-- 54.239.52.142              0.0%    10   45.2  44.7  42.7  51.8   2.8\r\n 13.|-- 54.239.52.149              0.0%    10   75.3  75.7  75.2  76.1   0.0\r\n 14.|-- 54.239.42.55               0.0%    10   75.4  75.6  75.4  76.1   0.0\r\n 15.|-- 54.239.122.236             0.0%    10   78.3  82.3  76.1  99.0   7.3\r\n 16.|-- 54.239.123.121             0.0%    10   75.9  77.5  75.8  81.1   2.1\r\n 17.|-- 54.239.122.44              0.0%    10   77.3  77.2  76.9  77.4   0.0\r\n 18.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 19.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 20.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 21.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 22.|-- s3.ap-northeast-2.amazona 10.0%    10   77.3  77.1  76.9  77.3   0.0
    \r\n\r\n台灣固網也差不多:\r\n\r\n
      3.|-- 60-199-236-110.static.tfn  0.0%    10    0.3   0.3   0.2   0.4   0.0\r\n  4.|-- 60-199-255-3.static.tfn.n  0.0%    10    0.2   0.3   0.2   0.3   0.0\r\n  5.|-- 60-199-21-69.static.tfn.n  0.0%    10    0.2   0.4   0.2   1.1   0.0\r\n  6.|-- 60-199-20-222.static.tfn.  0.0%    10    0.3   1.9   0.2  16.2   5.0\r\n  7.|-- 60-199-18-90.static.tfn.n  0.0%    10    1.9   0.7   0.4   1.9   0.5\r\n  8.|-- 60-199-3-222.static.tfn.n  0.0%    10    0.4   0.5   0.4   0.9   0.0\r\n  9.|-- xe-0-1-0-14.r02.taiptw01.  0.0%    10    1.5   1.5   1.4   1.5   0.0\r\n 10.|-- ae-1.r20.taiptw01.tw.bb.g  0.0%    10    1.3   1.4   1.3   1.4   0.0\r\n 11.|-- ae-24.r31.tokyjp05.jp.bb.  0.0%    10   31.3  32.9  31.2  36.6   2.0\r\n 12.|-- ae-18.r00.tokyjp03.jp.bb.  0.0%    10   35.6  36.7  35.3  39.1   1.5\r\n 13.|-- ae-0.amazon.tokyjp03.jp.b  0.0%    10   31.7  31.9  31.4  34.9   0.9\r\n 14.|-- 27.0.0.228                 0.0%    10   32.1  32.1  31.5  35.1   0.9\r\n 15.|-- 54.239.42.57               0.0%    10   63.2  60.5  59.6  63.3   1.3\r\n 16.|-- 54.239.123.48              0.0%    10   76.4  70.0  65.4  76.4   3.7\r\n 17.|-- 54.239.123.53              0.0%    10   68.9  69.7  68.8  72.3   1.2\r\n 18.|-- 54.239.122.22              0.0%    10   69.7  70.1  69.4  72.9   1.0\r\n 19.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 20.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 21.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 22.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 23.|-- s3.ap-northeast-2.amazona  0.0%    10   55.9  56.5  55.9  59.7   1.0
    \r\n\r\n遠傳的也差不多:\r\n\r\n
      3. h129-192-72-107.seed.net.tw   0.0%    10    0.3   0.5   0.3   2.2   0.6\r\n  4. R56-141.seed.net.tw           0.0%    10   10.1   3.1   0.4  10.1   4.1\r\n  5. h118-192-72-155.seed.net.tw   0.0%    10    0.4  11.2   0.4 102.7  32.2\r\n  6. xe-0-1-0-15.r02.taiptw01.tw.  0.0%    10    0.8   1.6   0.8   4.6   1.2\r\n  7. ae-1.r20.taiptw01.tw.bb.gin.  0.0%    10    0.8   6.0   0.6  27.4  11.0\r\n  8. ae-24.r31.tokyjp05.jp.bb.gin  0.0%    10   30.8  31.5  30.6  34.4   1.5\r\n  9. ae-18.r00.tokyjp03.jp.bb.gin  0.0%    10   31.7  32.1  31.4  35.0   1.1\r\n 10. ae-0.amazon.tokyjp03.jp.bb.g  0.0%    10   31.2  33.8  30.9  43.8   3.9\r\n 11. 27.0.0.228                    0.0%    10   31.2  32.8  31.2  38.6   2.4\r\n 12. ???                          100.0    10    0.0   0.0   0.0   0.0   0.0  \r\n 13. 54.239.122.238                0.0%    10   57.7  64.4  55.6  98.0  12.3  \r\n 14. 54.239.122.243                0.0%    10   55.2  55.5  55.0  58.6   1.1  \r\n 15. 54.239.122.22                 0.0%    10   69.3  69.8  69.0  74.8   1.8 \r\n 16. ???                          100.0    10    0.0   0.0   0.0   0.0   0.0 \r\n 17. ???                          100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 18. ???                          100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 19. ???                          100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 20. s3.ap-northeast-2.amazonaws.  0.0%    10   59.2  60.2  59.0  62.6   1.6
    \r\n\r\n畢竟亞洲的主要交換中心是在日本、香港與新加坡,這個結果不是太意外就是了...", + "title": "AWS 南韓區啟用" + }, + { + "id": "6235", + "body": "在 Akamai 網誌上的 PR 文章「The move to an Encrypted Web」提到使用 HTTPS 的好處,其中的「Improve data integrity」這點不僅僅是對使用者有好處,另外站在這兩年把 KKBOX 轉向 HTTPS 化時,使得被 ISP 干擾的問題消失。\r\n\r\n早期 KKBOX 的服務都是走 HTTP (包括網站與 API),三不五十就會遇到使用者抱怨登入會失敗,或是某些功能有問題。實際透過 TeamViewer 追蹤會發現 HTTP traffic 被 ISP 改掉了。\r\n\r\n\"javascreener\"\r\n取自「Comcast Wi-Fi serving self-promotional ads via JavaScript injection\r\n\r\n從 2013 年買 CDN 服務時要求包含 HTTPS (圖片與 assets),然後升級 load balancer 並且先設定 HTTP 與 HTTPS 都可以用,然後到 2015 年一路改寫 (包括 server 的支援與 client 的改寫),到 2016 總算把大部份的服務 (API 與網站) 都搞定了。\r\n\r\n這其實也歸功於目前其他大多數服務都已經上 HTTPS (包含了網站與 IM),所以 port 80 + port 443 已經變成現代防火牆一定要打開的部份,不然很多服務會沒辦法使用。比起十年前有些單位會擋 port 443 已經好很多。\r\n\r\n對 RD 來說,是個換過去就不會想要換回來的情況...", + "title": "HTTPS 的好處" + }, + { + "id": "6237", + "body": "紐約公共圖書館這次放出了十八萬張數位資料,包括歷史照片、地圖以及信件:「The New York Public Library Lets You Download 180,000 Images in High Resolution: Historic Photographs, Maps, Letters & More」,圖書館官方的公告在「Free for All: NYPL Enhances Public Domain Collections For Sharing and Reuse」這邊:\r\n\r\n
    The release of more than 180,000 digitized items represents both a simplification and an enhancement of digital access to a trove of unique and rare materials: a removal of administration fees and processes from public domain content, and also improvements to interfaces — popular and technical — to the digital assets themselves.
    \r\n\r\n除了可以在「NYPL Digital Collections」這邊搜尋下載外,還有 API 可以用:「The New York Public Library Digital Collections API」,在 GitHub 上也有工具可以使用:「Digital Collections Public Domain Item Data and Tools」。\r\n\r\n而且這 18 萬張資料是完全的開放,不需要事先取得館方授權:\r\n\r\n
    No permission required, no hoops to jump through: just go forth and reuse!
    \r\n\r\n將 public domain 的文物數位化,傳遞與保存變的更便利... (也讓做研究的人更容易取得資料)", + "title": "紐約公共圖書館放出十八萬張數位高畫質的數位資料" + }, + { + "id": "6239", + "body": "舊金山最大的計程車行 Yellow Cab 打算申請破產:「Yellow Cab to file for bankruptcy」:\r\n\r\n
    Martinez wrote that the co-op plans to file for bankruptcy in one month. The letter was dated Dec. 10, 2015. The Examiner learned of it after rumors about the bankruptcy began to spread in the taxi driver community.
    \r\n\r\n出自 Yellow Cab 給司機的文件:「Yellow-Cab-Bankruptcy-Letter」。UberLyft 這類服務的出現,利用科技改善了計程車常見的缺陷,接下來跟不上改變的傳統車行 (不論是美國還是台灣) 只會逐步被淘汰掉。\r\n\r\n「行走路線透過 GPS 記錄,而可事後被檢視」是很大的改善,而「搭完後不評價就沒辦法再叫車」(至少 Uber 是強制性的) 也使得 Uber 累積了大量的回饋資訊,加速淘汰有問題的司機。這兩個是對消費者搭乘品質有最直接影響的項目。\r\n\r\n再加上「沒有沒關係,但有也很好」的「線上信用卡付款」,可以猜測傳統計程車行業會一直被壓縮空間,像是非市區營運,或是定點排班,讓搭乘車不用叫就有車的優勢 (像是南港軟體園區二期外面)。", + "title": "舊金山最大的計程車行 Yellow Cab 打算申請破產" + }, + { + "id": "6240", + "body": "PostgreSQL 9.5 正式發行,這次新增了大家期待已久的 UPSERT 功能:「PostgreSQL 9.5: UPSERT, Row Level Security, and Big Data」。\r\n\r\nSQL:2003 正式定義出 UPSERT,被稱為 Merge,不過看網路上一般還是比較習慣 UPSERT 這個用法:\r\n\r\n
    A relational database management system uses SQL MERGE (also called upsert) statements to INSERT new records or UPDATE existing records depending on whether condition matches.
    \r\n\r\n也就是當沒資料的時候就 INSERT,有資料的時候就 UPDATE 的語法。常見的使用情境是拿來當 counter 用 (雖然這很傷資料庫的效能)。\r\n\r\n沒有 UPSERT 的時候只能用 transaction 或是 store procedure 搭出來,效能上會比在 database engine 裡實作來的差,所以 UPSERT 還是被實作出來了。", + "title": "PostgreSQL 9.5 釋出,UPSERT!" + }, + { + "id": "6241", + "body": "Netflix 除了在台灣上以外,也在全球各地上線:「Netflix Is Now Available Around the World」。\r\n\r\n\"helloWorld\"\r\n\r\n紅色區域是 Netflix 有服務的點,可以看到除了中國、敘利亞、克里米亞半島 (唔?) 以及南極洲 (不在圖上,所以我猜應該是沒有),其他都有服務。\r\n\r\n不過就目前網路上的評價看起來,版權還是最難搞的一塊。不知道台灣區影片數量成長的速度可以多快,應該是配合全球授權在簽?\r\n\r\n來想看看要找哪個 device 接大電視看比較方便...", + "title": "Netflix 把戰場開到全球" + }, + { + "id": "6243", + "body": "在 Hacker News Daily 上看到「Automatic Colorization」這個有趣的專案,透過演算法將黑白灰階照片自動上色。\r\n\r\n而 training data 也很容易取得,把彩色圖片轉成黑白灰階就可以了:\r\n\r\n
    Have you seen Reddit's /r/colorization sub? People use photoshop to add color to old black and white photos. This is a good problem to automate because perfect training data is easy to get: any color image can be desaturated and used as an example.
    \r\n\r\n透過 Convolutional neural network (CNN) 這個演算法做的,雖然應該還是沒空去看這個...\r\n\r\n像這張的效果不錯:\r\n\r\n\"6\"\r\n\r\n其中左邊是黑白灰階影像,右邊是原始圖片,而中間是算出來的結果 (training data 不包括這張圖片)。另外一張就比較明顯了:\r\n\r\n\"2\"\r\n\r\n這張花的顏色就差不少,但也還好。\r\n\r\n在原始文章裡面也有分析與 Reddit 上人工上色的比較,很明顯人工上色的還是比較鮮豔,不過電腦上色還是很有趣啊...", + "title": "黑白灰階照片自動上色" + }, + { + "id": "6246", + "body": "jQuery 放出 2.2 與 1.12,預定是 3.0 前的最後一個 major release,之後不會加 feature 了:「jQuery 2.2 and 1.12 Released」。\r\n\r\n主要的效能改善來自一年前對 Sizzle 的 patch:「Check existing selector cache and skip matchesSelector when possible · Issue #315 · jquery/sizzle」,針對 :visible:hidden 的效能改善,速度大約是原來的 17 倍:\r\n\r\n
    Performance of the selector engine has improved thanks to a shortcut path that immediately uses precompiled Sizzle selectors when the selector cannot be processed by the native querySelectorAll or matchesSelector methods. This results in a significant speedup in some real-world cases.
    \r\n\r\n距離上次出版 2.1.4 與 1.11.3 好久了 (2015 年 4 月的事情):「jQuery 1.11.3 and 2.1.4 Released – iOS Fail-Safe Edition」。", + "title": "jQuery 2.2 與 1.12 釋出" + }, + { + "id": "6249", + "body": "CloudFront 宣佈支援對 Origin 使用 TLS v1.1 與 v1.2 了:「CloudFront Update – HTTPS & TLS v1.1/v1.2 to the Origin, Add/Modify Headers」。\r\n\r\n另外一個重要的功能是,強制使用 HTTPS 往 Origin 存取,即使使用者對 CloudFront 使用 HTTP,往後也還是會用 HTTPS,確保資料不會被中間的 ISP 改掉。\r\n\r\n再來比較期待的功能是有沒有類似 Akamai 的 TD (Tiered Distribution) 或是 EdgeCast 的 Super PoP,也就是全球的 Edge 都透過這組 Server 再跟 Origin 要資料。這樣可以大幅度提高 hitrate,並且降低對 Origin 的負載。", + "title": "CloudFront 對 Origin 支援 TLS v1.1 與 v1.2" + }, + { + "id": "6250", + "body": "CVE-2016-0777 與 CVE-2016-0778 安全性漏洞是關於 OpenSSH client 的部分:(USN-2869-1: OpenSSH vulnerabilities)\r\n\r\n
    It was discovered that the OpenSSH client experimental support for resuming connections contained multiple security issues. A malicious server could use this issue to leak client memory to the server, including private client user keys.
    \r\n\r\n這下除了要更新以外,要重新生 ssh key 然後更新一堆機器了...", + "title": "OpenSSH client 的重大安全性更新" + }, + { + "id": "6251", + "body": "Amazon EC2 提供的新玩法,Scheduled Reserved Instances (Scheduled RI):「New – Scheduled Reserved Instances」。\r\n\r\nScheduled RI 可以指定買「某個特定時段」一年,像是每天的凌晨零點到八點之類的,拿來跑 report 這類需求。不過不同於 Standard RI 是不需要另外設定就會自動生效,Scheduled RI 需要開機器時指定才會使用。\r\n\r\n不過只會省一些,而不像 Standard RI 可以省的量:\r\n\r\n
    The new Scheduled Reserved Instance model allows you to reserve instances for predefined blocks of time on a recurring basis for a one-year term, with prices that are generally 5 to 10% lower than the equivalent On-Demand rates.
    \r\n\r\n另外只有某些地區的新機種有這個選項:\r\n\r\n
    This feature is available today in the US East (Northern Virginia), US West (Oregon), and Europe (Ireland) regions, with support for the C3, C4, M4, and R3 instance types.
    \r\n\r\n就成本來看,應該是屬於最後 optimize 的項目,而不是一開始的最佳化...", + "title": "AWS 推出 Scheduled Reserved Instances" + }, + { + "id": "6253", + "body": "想說應該會有 extension 可以看連線是 IPv4 或是 IPv6,找了一下果然有:「IPvFoo」。\r\n\r\n\"\"\r\n\r\n右上角會出現目前連線的屬性。透過 Google Chrome 提供的 webRequest 取得資訊後更新上去的。\r\n\r\n目前比較常見的站台應該是 Facebook (包括 Instagram)、GoogleYahoo,也剛剛好都是 HTTPS Policy 的先驅... 不過可以看出來不是所有的資源都走 IPv6,還是有不少走 IPv4 的 domain。\r\n\r\nTwitter 的主網站沒有 IPv6,但幾個自己的子網域有?看起來還在逐步測試開通...\r\n\r\nHiNet 的 IPv6 服務已經可以透過網路櫃台直接線上申請 (需要幾個工作天開通),我用 Ubuntu 可以 PPPoE 取得...", + "title": "Google Chrome 上看連線是使用 IPv4 或是 IPv6" + }, + { + "id": "6254", + "body": "nginx 在 1.9.5 後移除了對 SPDY 的支援,只支援 HTTP/2,剛剛找其他資料的時候在「HTTP/2 is here! Goodbye SPDY? Not quite yet」這邊發現 CloudFlare 的人有打算放 patch,讓 nginx 可以同時支援 HTTP/2 與 SPDY:\r\n\r\n\"\"\r\n\r\n同時也可以看到有人抱怨 caniuse 上面的資料與實際使用的情況有蠻大的差距,拿 caniuse 來說服人不太準確。\r\n\r\n另外也發現我自己的 blog 有時候 HTTP/2 不會啟用 (透過「HTTP/2 and SPDY indicator」觀察),不知道是什麼原因,也許 nginx 的時候還是有 bug?", + "title": "CloudFlare 有計劃要放出對 nginx 的 HTTP/2 + SPDY patch" + }, + { + "id": "6255", + "body": "看到「netboot.xyz」這個工具:\r\n\r\n\"\"\r\n\r\nDHCP server 上設定好就可以直接開機安裝機器了,看起來常見的 OS 都支援了。", + "title": "萬用的安裝工具:netboot.xyz" + }, + { + "id": "6256", + "body": "在找 Let's Encrypt 安裝方法時找到的專案:「letsencrypt/acme client implemented as a shell-script」。\r\n\r\n整個專案用 bash 寫,用到的 dependency 都非常基本,「比較特別的」只有 curlopenssl,這兩個套件應該不是什麼問題... XD\r\n\r\n沒有安裝問題 (因為只有一個 shell script 檔案),用起來也很簡單,執行速度也比官方快多了 (畢竟官方的考慮比較多),之後應該就會用這個吧... 另外自動化的部份也應該會用這個解決 :o", + "title": "用 Shell Script 寫的 Let's Encrypt Client" + }, + { + "id": "6258", + "body": "AWS 推出免費的 SSL Certificate 服務 AWS Certificate Manager:「New – AWS Certificate Manager – Deploy SSL/TLS-Based Apps on AWS」。\r\n\r\n目前宣佈只有在 us-east-1 可以用,不過實際測試會發現包括 CloudFront。\r\n\r\n
    AWS Certificate Manager (ACM) is available now in the US East (Northern Virginia) region, with additional regions in the works. You can provision, deploy, and renew certificates at no charge.
    \r\n\r\n\"\"\r\n\r\n可以看到是 Amazon 是找 Starfield 搞定的:\r\n\r\n
    $ openssl s_client -servername i.kfs.io -connect d2c884gdd5bajy.cloudfront.net:443\r\nCONNECTED(00000003)\r\ndepth=4 C = US, O = \"Starfield Technologies, Inc.\", OU = Starfield Class 2 Certification Authority\r\nverify return:1\r\ndepth=3 C = US, ST = Arizona, L = Scottsdale, O = \"Starfield Technologies, Inc.\", CN = Starfield Services Root Certificate Authority - G2\r\nverify return:1\r\ndepth=2 C = US, O = Amazon, CN = Amazon Root CA 1\r\nverify return:1\r\ndepth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon\r\nverify return:1\r\ndepth=0 CN = *.kfs.io\r\nverify return:1
    \r\n\r\n使用的是傳統的 e-mail 認證:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n連買憑證的成本都可以省下來了,而且比起以前要自己用 aws-cli 在 command line 裡上傳 key & certificate 來的簡單多了。", + "title": "AWS 也推出免費的 SSL Certificate 給 ELB 與 CloudFront 用了" + }, + { + "id": "6259", + "body": "在住的地方拉了北都數位的 cable 與網路來用,首先是速度,30M 有跑滿,不知道用的人多了之後會如何:\r\n\r\n\"\"\r\n\r\n線路 IP 反解看起來是走遠傳 SEEDNet,而實際 traceroute 也都是走遠傳的骨幹。\r\n\r\n首先是 DHCP 的 DNS 設定頗糟糕,居然配出 HiNet 的 168.95.1.1:\r\n\r\n\"螢幕快照\r\n\r\n然後測了老半天,遠傳看起來完全沒有 Akamai Edge?查了一堆站台,不是走香港、日本,不然就是 HiNet 的 Akamai Edge (即使我把 DNS 硬設為 SEEDNet 自己的 DNS resolver),這樣吃國際頻寬不會吃很兇嗎?\r\n\r\n之後找時間來看看遠傳的行動網路如何好了,固網這塊感覺好慘...", + "title": "北都數位 (TaipeiNet) 的網路" + }, + { + "id": "6261", + "body": "Adobe Typekit 是個收費的網頁字型服務,為了讓變更可以儘快生效,用了比較短的 cache time:\r\n\r\n
    We use a short cache time for the kit JavaScript so that you can update your kit (for example, adding fonts, or changing the list of allowed domains) and have your changes live in a reasonable amount of time.
    \r\n\r\n但這也造成了不少人抱怨 Google PageSpeed Tools 會扣分,而實際上也的確降低效率 (因為你不需要天天改設定):\r\n\r\n\"\"\r\n\r\nAdobe 給了妥協的方案,你可以選擇使用更長的 cache time,從本來的 10 mins 變成 1 week:「Improved caching for kits: Opt for longer cache timeout」。\r\n\r\n這個選項使得 Google PageSpeed Tools 不會扣分,也讓效能再更好一些。", + "title": "Adobe Typekit 對 PageSpeed 的妥協" + }, + { + "id": "6262", + "body": "之前也有遇到,結果 Lorna Jane Mitchell 寫了一篇「Handling Composer \"lock file out of date\" Warning」給了不少解法。\r\n\r\n第一種是 composer upgrade,直接全部升級。\r\n\r\n第二種是先用 composer update --dry-run 看看是不是有人加到 composer.json 後忘記更新,如果是的話再用 composer update [package] 處理。\r\n\r\n第三種是用 composer update nothing 閉上眼睛更新 hash 值,當作什麼都沒看到 XDDD\r\n\r\n
    Sometimes this is the right answer so it's a handy trick to know!. I seem to see these kinds of issues in people's projects quite often (I'm a consultant, I see a lot of projects) so I thought I'd share my usual tactics for getting things sorted - if you have any tricks of your own to share, I'd love to hear them :)
    \r\n\r\n該說很「實用」嗎 XDDD", + "title": "Composer 出現 lock file out of date 的解法" + }, + { + "id": "6263", + "body": "在「YouTube Loop」這邊看到 YouTube 支援 Loop 了,在影片上按右鍵:\r\n\r\n\"\"\r\n\r\n而且作者也有提到,在外嵌的影片也支援:\r\n\r\n
    It also works for embedded videos.
    \r\n\r\n以前要找外掛或是某些網站幫你,官方支援後省不少事 XD", + "title": "YouTube 支援 Loop 功能 (重複播放)" + }, + { + "id": "6264", + "body": "從 Hacker News Daily 上看到的,在 Sun-2 的 bootloader 裡可以看到「Love your country, but never trust its government」這樣的字串:「Why the Sun 2 has the message \"Love your country, but never trust its government\"」。\r\n\r\n\"\"\r\n\r\n這段字串是由 John Gilmore 當時在 Sun 開發時所放入的,John Gilmore 同時也是後來 EFF 創辦人之一,不過當初放入這段字串的目的是為了抓到盜版:\r\n\r\n
    Yes. Vinod Khosla, first President of Sun, came to me at one point and said to put something hidden, triggered in an unexpected way, into the ROM Monitor, so that if somebody cloned the Sun Workstation (violating our software’s copyright), we could do that unexpected thing to the competitor’s demo workstation at a trade show and thereby prove that they had cloned it.
    \r\n\r\n過了三十年後 John Gilmore 被挖出來問的回應也是蠻有趣的... (可以參考原文附上的信件)\r\n\r\n而這句話現在回頭看也很經典,尤其是最近各國政府想要在 crypto system 裡面放後門的各種反應。", + "title": "Love your country, but never trust its government" + }, + { + "id": "6267", + "body": "昨天先看到 Mark Zuckerberg 丟出來的資訊,比較完整的資料可以在「Better Computer Go Player with Neural Network and Long-term Prediction」這邊看到。\r\n\r\nFacebook 這邊的成就在於用 DCNN-based model 改善效率,可以用一台電腦 (包括 GPU) 維持在 KGS 5d (業餘五段),跟 Zen19 差不多的棋力,跟目前最好的電腦圍棋軟體棋力差不多:\r\n\r\n
    darkfmcts3now holds a stable KGS 5d level, on par with the top Go AIs, has beaten Zen19 onceand hold 1win/1lose against a Korean 6p professional player with 4 handicaps.
    \r\n\r\n
    The distributed version, named darkfmcts3in KGS Go Server, use darkfores2 as the underlying DCNN model, runs 75,000 rollouts on 2048 threads and produces a move every 13 seconds with one Intel Xeon E5-2680 v2 at 2.80GHz and 44 NVidia K40m GPUs.
    \r\n\r\n
    In this paper, we have substantially improved the performance of DCNN-based Go AI, extensively evaluated it against both open source engines and strong amateur human players, and shown its potentials if combined with Monte-Carlo Tree Search (MCTS).
    \r\n\r\n而隔壁棚的 Google 也丟出對應的研究成果「AlphaGo: Mastering the ancient game of Go with Machine Learning」,直接往 Nature 上丟:「Mastering the game of Go with deep neural networks and tree search」。\r\n\r\nGoogle 不是跑在單機上,而是跑在 Google Cloud Platform 上,分散式的版本大約是職業五段的水準:\r\n\r\n
    Of course, all of this requires a huge amount of compute power, so we made extensive use of Google Cloud Platform, which enables researchers working on AI and Machine Learning to access elastic compute, storage and networking capacity on demand.
    \r\n\r\n\"\"\r\n\r\n實際對樊麾 (職業二段) 的成績也是五比零的大獲全勝:\r\n\r\n
    So we invited the reigning 3-time European Go champion Fan Hui — an elite professional player who has devoted his life to Go since the age of 12 — to our London office for a challenge match. The match was played behind closed doors between October 5-9 last year. AlphaGo won by 5 games to 0 -- the first time a computer program has ever beaten a professional Go player.
    \r\n\r\n而今年預定要去打大魔王,目前韓國圍棋第一人李世乭:\r\n\r\n
    AlphaGo’s next challenge will be to play the top Go player in the world over the last decade, Lee Sedol. The match will take place this March in Seoul, South Korea. Lee Sedol is excited to take on the challenge saying, \"I am privileged to be the one to play, but I am confident that I can win.\" It should prove to be a fascinating contest!
    \r\n\r\n到時候中國那邊的圍棋節目應該會有網路直播可以看吧,再來盯...", + "title": "最近電腦圍棋的兩個突破..." + }, + { + "id": "6268", + "body": "在 Twitter 上看到如標題所說的,從 Google Chrome 50 開始 (現在正式版本是 48),HTTP 網頁將禁用 Geolocation API:\r\n\r\n

    Starting in Chrome 50, geolocation will not be available in insecure contexts (i.e. only HTTPS embedded in HTTPS): https://t.co/2L6hlzkXnw

    — Joel Weinberger (@metromoxie) January 21, 2016
    \r\n\r\n\r\n對隱私保護的加強。", + "title": "從 Chrome 50 開始,HTTP 網頁內將禁用 Geolocation 功能" + }, + { + "id": "6270", + "body": "Mark Callaghan 在「MyRocks vs InnoDB with Linkbench over 7 days」這邊分析了 MySQL 上的兩個 engine 的差異,總結是大獲全勝:\r\n\r\n\r\n\r\n但 InnoDB 的 engine 是 2000 年的設計 (16 年前),MyRocks 的 engine (RocksDB) 則是 2013 年的設計,不屬於同一個世代。\r\n\r\n相較於與 InnoDB 對打,我更想看到的是與 TokuDB (2012 年的設計) 對打的結果。\r\n\r\n兩個新的 engine 都有針對 SSD 的特性發展,可以看出資料結構與寫入的方式就很不一樣,而且一開始就是在多 CPU 多核環境下開發,相較於 InnoDB 是一路改的包袱來的輕鬆許多。", + "title": "MySQL 上 InnoDB 與 RocksDB 的差異" + }, + { + "id": "6271", + "body": "Firefox 46 的開發版本將會對非 HTTPS 頁面加上警示:「Login Forms over HTTPS, Please」。\r\n\r\n\"\"\r\n\r\n技術上來說,是當偵測到頁面上有 input type=\"password\" 的元素時會加上不安全的 icon:\r\n\r\n
    When a page with a password field is not delivered securely, Firefox displays a lock with a red strikethrough in the address bar[.]
    \r\n\r\n不過看起來是在試水溫,沒有打算在正式版本開起來:\r\n\r\n
    There are no current plans to show these warnings to users of Beta and general release Firefox.
    \r\n\r\n這樣就有點可惜了...", + "title": "Firefox 46 Dev 版本將會再加上對非 HTTPS 頁面的警示" + }, + { + "id": "6272", + "body": "Linode 這陣子一直被 DDoS 攻擊,前幾天放出報告:「The Twelve Days of Crisis – A Retrospective on Linode’s Holiday DDoS Attacks」。\r\n\r\n其中這段提到了一些數字,Linode 有個小機房有 40Gbps 的能力,但以現在的 DDoS 規模會馬上爆掉:\r\n\r\n
    Linode’s capacity management strategy for IP transit has been simple: when our peak daily utilization starts approaching 50% of our overall capacity, then it’s time to get more links.\r\n\r\nThis strategy is standard for carrier networks, but we now understand that it is inadequate for content networks like ours. To put some real numbers on this, our smaller datacenter networks have a total IP transit capacity of 40Gbps. This may seem like a lot of capacity to many of you, but in the context of an 80Gbps DDoS that can’t be blackholed, having only 20Gbps worth of headroom leaves us with crippling packet loss for the duration of the attack.
    \r\n\r\n另外把 DNS 整個放上 CloudFlare 讓他們來擋:\r\n\r\n
    Our nameservers are now protected by Cloudflare, and our websites are now protected by powerful commercial traffic scrubbing appliances.
    \r\n\r\n後續的改善應該還要幾個月?完成後應該會再看到 blog post...", + "title": "Linode 的被攻擊報告" + }, + { + "id": "6273", + "body": "好幾個禮拜前的東西,這幾天才上 Hacker News:「Introducing the CSS coding style guide」。\r\n\r\n18F 是美國政府的官方單位,取名自辦公室所在的地址:(取自 Wikipedia 的「18F」說明)\r\n\r\n
    Its name refers to its office location in northwest Washington, D.C., on 18th and F Streets.
    \r\n\r\n不只是定義了 CSS Coding Style Guide,還給了 SCSS Lint 工具使用:\r\n\r\n
    The styleguide provides a method of linting Sass (SCSS) code to ensure it conforms to the rules in the styleguide.
    ", + "title": "18F 丟出 CSS 的代碼風格指南" + }, + { + "id": "6274", + "body": "酷航有些飛機是 787 了,這台飛機有提供 Internet 上網功能 (WiFi HotSpot),一個小時是 USD$11.95,三個小時是 USD$16.95,二十四小時是 USD$24.95。\r\n\r\n扣掉起降的時間,成田飛桃園差不多可以買三個小時的方案來用,服務是由 T-Mobile 提供:\r\n\r\n\"\"\r\n\r\n看起來應該是走衛星線路,從德國落地後再連出來,快的時候可以到 1Mbps,慢的時候大約在 128Kbps,latency 大約是 1000ms,而 packet loss rate 其實不高,線路還蠻穩定的。\r\n\r\n這次來回都有買,算是嘗鮮玩玩看,之後應該還是會在飛機上睡覺吧 XDDD", + "title": "在 Boeing 787 上上網..." + }, + { + "id": "6276", + "body": "在去年十二月七日 Zite 被幹掉後,本來是流竄到 Prismatic 上,結果十二月二十日也關掉了... 之後就找不到能用的推薦引擎了。\r\n\r\n用推薦引擎的目的是希望看到更多不同種類的內容:用 Feedly 看 RSS feed,而用 Twitter 追蹤短則的想法,或是用 Facebook 看同溫層的想法。但這些都是「已知」的來源所提供的資訊,沒有辦法發覺其他的文章。\r\n\r\n其中一個變通的方法是找像 Hacker News Daily 這樣的 RSS feed 來讀,作者用程式每天算出 Hacker News 上的十大熱門文摘出來,對一般人應該也夠用,但我還是想要找到更多資訊。\r\n\r\nZite 與 Prismatic 是以 Recommendation System 來計算並且推薦,是個還不錯的方法。不過這兩個 app 都已經不在了...\r\n\r\n而 Nuzzel 走了另外一個方向,你可以用 Twitter 與 Facebook 帳號連結,然後提供「朋友」以及「朋友的朋友」發表了什麼連結,依照時間或是數量排序出來:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n相較於推薦系統,這樣的演算法雖然簡單很多,但解決了想要看更多資訊的問題。\r\n\r\n不過還是覺得有些 app 上的操作怪怪的,但也沒辦法 (?),先用用看吧...", + "title": "Zite 消失後的方案:Nuzzel" + }, + { + "id": "6278", + "body": "Twitter 官方的「Tweet #HappyChineseNewYear 2016 around the world」這篇在最後面轉貼了 CCTV 春晚的消息:\r\n\r\n\"\"\r\n\r\n好像不只一點可以吐嘈的啊... 剛剛試著在帳號上找這則但沒找到,應該是被刪掉了?", + "title": "Twitter 官方轉貼 CCTV 的「春晚」... XD" + }, + { + "id": "6282", + "body": "前幾天因為流感而睡太多,來消化一些文章。\r\n\r\n上個星期 Google 放出一套用 Go 寫的 Load balancer,叫 Seesaw:「Seesaw: scalable and robust load balancing」。\r\n\r\n比較有趣的是 BGP 與 anycast VIP 的能力:\r\n\r\n
    Seesaw v2 provides full support for anycast VIPs - that is, it will advertise an anycast VIP when it becomes available and will withdraw the anycast VIP if it becomes unavailable.
    \r\n\r\nGoogle 這個規模玩的是不同 scale 的花樣...", + "title": "Google 的 Load balancer:Seesaw" + }, + { + "id": "6283", + "body": "Benson Leung 花了不少時間在測試 USB 線 (「Google 工程師在 Amazon 上留下對 USB-C 線的精彩評價...」與「Google 工程師在 Amazon 上對 Type C USB 線的評論」),而前陣子他測到一條超棒的 USB 線,把他三個測試設備都燒壞了:(出自這邊)\r\n\r\n
    Surjtech's A-to-C cable seriously damaged a Pixel 2 laptop and two USB PD analyzers.
    \r\n\r\n他在 Amazon 上留下的說明可以看到他發現廠商直接把 GND 與 Vbus 的線接錯了 (這個有厲害...):\r\n\r\n
    I directly analyzed the Surjtech cable using a Type-C breakout board and a multimeter, and it appears that they completely miswired the cable. The GND pin on the Type-A plug is tied to the Vbus pins on the Type-C plug. The Vbus pin on the Type-A plug is tied to GND on the Type-C plug.
    \r\n\r\n另外在回覆裡也有更完整的說明:\r\n\r\n
    I've had the cable taken apart, and we've discovered some interesting details. I'll post a post with pictures soon.\r\n\r\n1) Vbus and Gnd are switched. Red wire goes to G on the Type-C's PCB, Black wire goes to V.\r\n2) 10 kΩ resistor instead of 56 kΩ resistor used.\r\n3) resistor hooked up as a Pull-down instead of a pull-up\r\n4) Wire is COMPLETELY missing SuperSpeed wires. It is NOT actually a USB 3.1 cable, even though it has a blue connector on the A side and SuperSpeed logos.\r\n\r\nBad. So bad.
    \r\n\r\n照片可以在這邊看到。看起來 Benson Leung 得再去 Google 內要新的機器來測試了...", + "title": "因為一條 USB 線燒了三個設備..." + }, + { + "id": "6286", + "body": "Google 推出了 nginx 上的 Page Speed 模組:「ngx_pagespeed」,想做的事情與 apache 上的 mod_pagespeed 相同,利用各種技術加速網頁的速度:\r\n\r\n
    Nginx module created by Google to help Make the Web Faster by rewriting web pages to reduce latency and bandwidth. It started as a port of mod_pagespeed to Nginx, and for now the documentation links below still all point to mod_pagespeed's documentation.
    \r\n\r\n看之後會不會變成 PPA 裡的一包吧...", + "title": "Google 推出 nginx 上的 PageSpeed 模組" + }, + { + "id": "6287", + "body": "在「Docker Official Images are Moving to Alpine Linux」這邊看到的消息,消息引用自 Hacker News 上的討論串:「CoreOS Overview, Part One (deis.com)」,其中 shykes 這樣說:\r\n\r\n
    Disclaimer: I work at Docker.
    \r\n\r\n
    Incidentay, we have hired Natanael Copa, the awesome creator of Alpine Linux and are in the process of switching the Docker official image library from ubuntu to Alpine. You can help us with pull requests to https://github.com/docker-library if you want :)
    \r\n\r\n所以已經雇用 Alpine 的創辦人,並且開始把 Docker 所使用的 Ubuntu-based image 換成 Alpine-based image,後續應該會有更多消息 (& 更正式的消息) 被放出來...", + "title": "Docker 預定將 Official Image 從 Ubuntu 換到 Alpine Linux" + }, + { + "id": "6289", + "body": "Google 宣布 Safe Browsing 將會把各種誘導式頁面列入清單阻擋:「No More Deceptive Download Buttons」。\r\n\r\nGoogle 給了幾個例子,像是這樣的廣告頁面:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n或是這樣的圖片按鈕,試著誤導使用者:\r\n\r\n\"\"\r\n\r\n都會被認為是偽裝成官方訊息,意圖讓使用者下載惡意程式而被阻擋。", + "title": "Google 的 Safe Browsing 將開始阻擋誘導式的頁面" + }, + { + "id": "6291", + "body": "先前看到的,一個 Firefox 的 Extension,在本地端存了一份常用的 library,當瀏覽器想要去 CDN 取得的時候改從本地端的資料提供:「Decentraleyes」。\r\n\r\n
    Protects you against tracking through \"free\", centralized, content delivery. It prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking. Complements regular content blockers.
    \r\n\r\n另外一個說明是:\r\n\r\n
    A Firefox add-on that emulates Content Delivery Networks locally by intercepting requests, finding the required resource and injecting it into the environment. This all happens instantaneously, automatically, and no prior configuration is required.
    \r\n\r\n原始程式碼在 GitHub 上:「Decentraleyes - Local emulation of Content Delivery Networks.」。", + "title": "Decentraleyes:避免從 Public CDN 取得檔案" + }, + { + "id": "6292", + "body": "在「Google will stop running Flash display ads on January 2, 2017」這邊看到的,引用自 Google Plus 上的說明:「Google display ads go 100% HTML5」,主要有兩個時程:\r\n\r\n
    - Starting June 30th, 2016, display ads built in Flash can no longer be uploaded into AdWords and DoubleClick Digital Marketing.\r\n- Starting January 2nd, 2017, display ads in the Flash format can no longer run on the Google Display Network or through DoubleClick.
    \r\n\r\n今年六月底之後將無法上傳新的 Flash 廣告,並且在明年停止使用。", + "title": "Google 宣佈 2017 年完全停止 Flash 廣告" + }, + { + "id": "6293", + "body": "nginx 在 1.9.11 版引入了 Dynamic Module,能夠更方便的決定要掛哪些模組使用了:「Introducing Dynamic Modules in NGINX 1.9.11」。\r\n\r\n從以往的:\r\n\r\n\"\"\r\n\r\n多了一種選擇:\r\n\r\n\"\"\r\n\r\n也因此多了 load_module 功能可以用:\r\n\r\n
    To load a module at runtime, include the new load_module directive in the main context, specifying the path to the shared object file for the module, enclosed in quotation marks. When you reload the configuration or restart NGINX, the module is loaded in. You can specify a path relative to the source directory, as in these examples, or a full path.\r\n\r\nload_module \"modules/ngx_http_geoip_module.so\";\r\nload_module \"modules/ngx_stream_module.so\";
    ", + "title": "nginx 引入 Dynamic Module 架構" + }, + { + "id": "6294", + "body": "公司用 Slack 還蠻常見的,但在「My family uses Slack. It's pretty interesting.」這邊看到家人之間使用 Slack 的分享。\r\n\r\n利用 integration 叫 bot 回答小朋友現在的地點,並且與 Google Calendar 整合通知事項。然後學校提供的 RSS feed 也可以拉進來。\r\n\r\n再來是採買食物的 bot,是有這麼宅嗎 XDDD\r\n\r\n\"\"\r\n\r\n感覺很資訊化的家庭啊 XDDD", + "title": "在家族裡使用 Slack..." + }, + { + "id": "6295", + "body": "Gmail 界面將會提示不支援 STARTTLS 的信箱:「Making email safer for you」。\r\n\r\n\"\"\r\n\r\n先確認 msa.hinet.net 的 MX record:\r\n\r\n
    ;; ANSWER SECTION:\r\nmsa.hinet.net.          86174   IN      MX      0 msa-smtp-mx1.hinet.net.\r\nmsa.hinet.net.          86174   IN      MX      0 msa-smtp-mx2.hinet.net.
    \r\n\r\n以及不支援 STARTTLS (在 EHLO 後不會出現 STARTTLS 選項):\r\n\r\n
    $ t msa-smtp-mx1.hinet.net 25\r\nTrying 168.95.6.53...\r\nConnected to msa-smtp-mx1.hinet.net.\r\nEscape character is '^]'.\r\n220 msa.hinet.net ESMTP Sendmail 8.14.2/8.14.2; Thu, 11 Feb 2016 04:52:16 +0800 (CST)\r\nEHLO localhost\r\n250-msa.hinet.net Hello 114-32-152-63.HINET-IP.hinet.net [114.32.152.63], pleased to meet you\r\n250-ENHANCEDSTATUSCODES\r\n250-PIPELINING\r\n250-8BITMIME\r\n250-SIZE\r\n250-DSN\r\n250-ETRN\r\n250-DELIVERBY\r\n250 HELP\r\nQUIT\r\n221 2.0.0 msa.hinet.net closing connection\r\nConnection closed by foreign host.
    \r\n\r\n打開 Gmail 在收件人的地方輸入 test@msa.hinet.net 後,就會跳出紅色鎖頭表示不支援 STARTTLS。", + "title": "Gmail 將會提示沒有支援 STARTTLS 的信箱" + }, + { + "id": "6296", + "body": "PHP 7.0 出兩個月了,應該是時候測試看看跑得如何... 所以剛剛把整個系統換成 PHP 7.0 了。\r\n\r\n本來用的是「PPA for PHP 7.0 (deprecated use ppa:ondrej/php)」這個版本,經過標題的指示後改用「PPA for co-installable PHP 5.6 + 7.0」這個版本,看起來是沒什麼大問題。\r\n\r\n跑一陣子看看吧。", + "title": "把系統換成 PHP 7..." + }, + { + "id": "6297", + "body": "在 Hacker News Daily 上看到的工具:「diff-so-fancy」。\r\n\r\n\"\"\r\n\r\n光是從 screenshot 仔細看,會發現漏掉了一些 minus 與 plus 的資訊 (中間有一段應該要顯示 -document 與 +this.element, false 的部份,只顯示了 plus 的部份),有可能是 bug 也有可能是 feature。\r\n\r\n另外對於已經讀習慣 diff 輸出結果的人,反而要另外學習,至於這個 learning curve 值不值得就見仁見智了...", + "title": "diff-so-fancy 工具" + }, + { + "id": "6298", + "body": "AWS Lambda 可以存取 VPC 內的資源了:「New – Access Resources in a VPC from Your Lambda Functions」。\r\n\r\n\"\"\r\n\r\n這包括了 RDSElastiCache 這類放資料或是狀態的資源。以往有些要自己處理 High Availability 但又不怎麼大的功能,可以改寫成 AWS Lambda 往上丟了...", + "title": "AWS Lambda 可以在 VPC 裡面執行了" + }, + { + "id": "6299", + "body": "追蹤開信的能力是廣告信經常會用到的能力,為了要看「成效」而要追蹤開信率之類的數字。\r\n\r\n在「Email Privacy Tester」這邊看到有趣的工具,介紹了「Email Privacy Tester」這個網站可以拿來測試各種 mail client 上可被追蹤的功能。\r\n\r\n依照作者測試,Gmail 完美的擋下目前所有追蹤技巧:\r\n\r\n\"\"\r\n\r\n而 Apple Mail 還很慘,有一堆方式可以被追蹤開信:\r\n\r\n\"\"\r\n\r\n不知道其他家 (像是 Yahoo) 的情況...", + "title": "追蹤開信的能力" + }, + { + "id": "6300", + "body": "在「Why We’re Still Seeing PHP 5.3 In The Wild (Or: PHP Versions, A History)」這邊看到一些有趣的統計資料,雖然是 2015 的舊文章,但因為統計資料是公開的,可以透過同樣方式抓到現在的情況。\r\n\r\n作者在 2015 年七月 (大約是月底) 的數字是:\r\n\r\n
    $ curl http://api.wordpress.org/stats/php/1.0/ | jq '.'\r\n{\r\n  \"5.2\": 13.603,\r\n  \"5.3\": 32.849,\r\n  \"5.4\": 40.1,\r\n  \"5.5\": 9.909,\r\n  \"5.6\": 3.538\r\n}
    \r\n\r\n剛剛跑的數字是:\r\n\r\n
    $ curl -s https://api.wordpress.org/stats/php/1.0/ | jq .\r\n{\r\n  \"7.0\": 0.423,\r\n  \"5.6\": 12.429,\r\n  \"5.5\": 17.188,\r\n  \"5.4\": 35.824,\r\n  \"5.3\": 24.754,\r\n  \"5.2\": 9.382\r\n}
    \r\n\r\n可以看到即使是 2016 年的現在,PHP 5.3 與 PHP 5.4 還是超級大宗,但都已經沒有安全性更新了。\r\n\r\n作者猜測 shared hosting 在 WordPress 佔的比重還是很大,而大多數的 shared hosting 商不太管這個,架完後就放著跑沒打算升級了...\r\n\r\nWordPress 應該強硬一點啊,在「Requirements」這邊這樣寫怎麼會有 hosting 商想升級:\r\n\r\n
    Note: If you are in a legacy environment where you only have older PHP or MySQL versions, WordPress also works with PHP 5.2.4+ and MySQL 5.0+, but these versions have reached official End Of Life and as such may expose your site to security vulnerabilities.
    \r\n\r\n就「會動」啊...", + "title": "跑 WordPress 的 PHP 版本統計" + }, + { + "id": "6301", + "body": "Netflix 宣佈關閉最後一個非雲端的資料中心:「Completing the Netflix Cloud Migration」。\r\n\r\n
    We are happy to report that in early January, 2016, after seven years of diligent effort, we have finally completed our cloud migration and shut down the last remaining data center bits used by our streaming service!
    \r\n\r\n其實就只是選擇走全雲端的路子而已...", + "title": "Netflix 的全雲端化" + }, + { + "id": "6302", + "body": "Mashable 的報導說下個版本的 Instagram 將會提供影片播放次數資訊了:「Instagram videos will get cool new updates to let you see how popular you are」。\r\n\r\n
    The number of times a video is viewed on Instagram will soon no longer be a mystery.\r\n\r\nInstagram is adding a new feature that will tally view counts much like parent company Facebook already does, eliminating a major blindspot for marketers attempting to tap into the app's 400-million strong audience organically.
    \r\n\r\n愈來愈多 social network 往 video 這塊著力...", + "title": "新版 Instagram 將可以看到影片播放次數了" + }, + { + "id": "6303", + "body": "英國計畫從 2018 年開始,超過 250 人的公司必須公佈男女的平均薪資及 Bonus:「Companies will be forced to reveal their gender pay gap」:\r\n\r\n
    The new rules, revealed on Friday, will apply to all companies with more than 250 employees.
    \r\n\r\n除了平均薪資以及 bonus 外,還必須公開每個區間的人數:\r\n\r\n
    In addition to publishing their average gender pay and bonus gap, around 8,000 employers across the country will also have to publish the number of men and women in each pay range.
    \r\n\r\n目標是希望讓資訊更透明讓人力市場更健康:\r\n\r\n
    The government is hoping that naming and shaming firms that pay women a lot less than men in the same jobs will push them to stop the practice, because it will make it harder for them to attract top talent.
    \r\n\r\n可以看到目前估算出來的差異:\r\n\r\n\"\"\r\n\r\n另外美國也在規劃類似的法案,不僅僅是性別,還包括了種族等其他資訊:\r\n\r\n
    In the U.S., similar plans are also under discussions. President Obama announced a proposal earlier this month that would require companies with more than 100 employees to report how much they are paying their employees by race, ethnicity and gender.
    ", + "title": "英國計畫在 2018 年開始強制企業公佈男女的平均薪資及 Bonus" + }, + { + "id": "6304", + "body": "Twitter 家的工程師努力通靈找靈異現象,最後發現是 kernel bug 造成 veth 沒檢查 TCP checksum 造成的慘案:「Linux kernel bug delivers corrupt TCP/IP data to Mesos, Kubernetes, Docker containers」。\r\n\r\n而隔壁棚 PagerDuty 在 2015 年五月也有遇到類似的問題,不過當時看起來沒找出 root cause,只有提出 workaround 解法暫時避開:「The Discovery of Apache ZooKeeper’s Poison Packet」。\r\n\r\n這個 bug 已經被 patch 掉了,之後應該會再 backport 回到舊版 kernel:\r\n\r\n
    I’m really impressed with the linux netdev group and kernel maintainers in general; code reviews were quite prompt and our patch was merged in within a few weeks, and was back-ported to older (3.14+) -stable queues on various kernel distributions (Canonical, Suse) within a month.
    \r\n\r\n文章中間有寫找 bug 的過程,可以看到都是在通靈...", + "title": "沒有檢查 TCP checksum 的 bug 造成的慘案" + }, + { + "id": "6305", + "body": "美國與古巴的航權競標將在星期二開始:「U.S. to restore commercial flights to Cuba」。\r\n\r\n
    In just a matter of days, U.S. airlines will begin a fierce bidding war to win routes and airport slots to a destination that's been off-limits to them for more than 50 years: Cuba.
    \r\n\r\n不過這次還是沒有開放古巴的飛機:\r\n\r\n
    CNN is told there are no plans in the near future for Cuban-owned planes to land in the U.S. under this agreement.
    ", + "title": "美國與古巴的復航" + }, + { + "id": "6306", + "body": "衛報報導了從 GitHub 上分析 pull request 的性別分析研究:「Women considered better coders – but only if they hide their gender」,原始論文出自「Gender bias in open source: Pull request acceptance of women versus men」。\r\n\r\n研究的結果說明女性的 pull request 接受機率比男性高,但如果貢獻者可被確認是女性的話則會反過來,也就是說男女歧視問題是可被觀察到的:\r\n\r\n
    Surprisingly, our results show that women's contributions tend to be accepted more often than men's. However, when a woman's gender is identifiable, they are rejected more often. Our results suggest that although women on GitHub may be more competent overall, bias against them exists nonetheless.
    \r\n\r\n由於性別資訊不是必填項目,論文裡面也有提到透過 social network 的資料比對,以及其他方式去推測。這個研究成果看起來應該會產生不少討論...", + "title": "GitHub 上 Pull Request 的男女歧視問題" + }, + { + "id": "6307", + "body": "LXDCanonical (Ubuntu 的那家公司) 推的 container 系統,在「Super Fast Local Workloads With LXD, ZFS, and Juju」這篇文章裡雖然是提 ZFS + Juju 這兩個東西,但 LXD 的部份還是給了些可以直接拿來用的資訊。\r\n\r\n首先先安裝 LXD,我是裝 ppa:ubuntu-lxc/stable 這個版本,裝完 lxd 後就照著先執行:\r\n\r\n
    $ newgrp lxd\r\n$ lxd init
    \r\n\r\n由於沒有裝 zfs,就用 dir 模式跑就好了。網路的部份就先選 no 混過去,反正 NAT 會通... 接著就拉 image 回來:\r\n\r\n
    $ lxd-images import ubuntu trusty amd64 --sync --alias ubuntu-trusty
    \r\n\r\n拉完後就可以跑起來了:\r\n\r\n
    $ lxc launch ubuntu-trust test\r\n$ lxc exec test /bin/bash
    \r\n\r\n直接打 lxc 也可以看到一些說明,用過 Docker 的人應該是沒什麼問題,還蠻簡單的。", + "title": "試玩 LXD" + }, + { + "id": "6309", + "body": "在「Amalgamated hosts file」這邊看到超大包的 hosts,拿來擋廣告:\r\n\r\n
    This repo consolidates several reputable hosts files and merges them into a single amalgamated hosts file with duplicates removed.\r\n\r\nCurrently this amalgamated hosts file contains 27,148 unique entries.
    \r\n\r\n一包 hosts 有兩萬七千筆資料會不會太多了點...\r\n\r\n話說不知道能不能 import 進 BIND 或是 Unbound 裡面直接讓整個組織用?", + "title": "用 hosts 搞出來的 Adblock..." + }, + { + "id": "6310", + "body": "Google Chrome 將在今年 (2016) 的五月 15 日讓 SPDYHTTP/2 NPN 退役:「Transitioning from SPDY to HTTP/2」。\r\n\r\n主要是依據 Google Chrome 的流量數據,HTTP/2 大約佔了 25% 的流量 (目前檯面上大網站的 HTTPS 都支援了),而 SPDY 只剩下 5% 的量:\r\n\r\n
    Over 25% of resources in Chrome are currently served over HTTP/2, compared to less than 5% over SPDY.
    \r\n\r\n另外一個是對 HTTP/2 NPN 的支援將同一個時間關閉,只支援 ALPN:\r\n\r\n
    At the same time, Chrome will stop supporting the TLS protocol extension NPN, which allows servers to negotiate SPDY and HTTP/2 connections with clients. NPN has been superseded by the TLS extension ALPN, published by the IETF in 2014. ALPN is already used 99% of the time to negotiate HTTP/2 with Chrome, and the remaining servers can gain ALPN support by upgrading their SSL library.
    \r\n\r\n所以還有四個月的時間...", + "title": "Chrome 宣佈 SPDY 的退役,只支援 HTTP/2 (ALPN)" + }, + { + "id": "6311", + "body": "在「France says Facebook must face French law in nudity censorship case」這邊提到法院認為 Facebook 的使用條款中要求必須在加州法院解決的條件,使得法國的使用者難以提出訴訟,違反法國的消費者保護法令而無效:\r\n\r\n
    The Terms of Service add, \"The laws of the State of California will govern this Statement, as well as any claim that might arise between you and us, without regard to conflict of law provisions.”
    \r\n\r\n
    The appeals court agreed that Facebook’s Terms of Service were “abusive” and \"violated French consumer law by making it difficult for people in France to sue,” according to the BBC.
    \r\n\r\n引用的 BBC 報導可以在「Paris court rules against Facebook in French nudity case」這邊看到:\r\n\r\n
    The Paris high court decided that the company's argument was \"abusive\" and violated French consumer law, by making it difficult for people in France to sue.
    ", + "title": "法國法院認為 Facebook 條款違反消費者保護法令" + }, + { + "id": "6313", + "body": "在「How Airbnb's Data hid the Facts in New York City」這篇文章裡提到了 Airbnb 在去年 (2015 年) 十一月時操作站上資料,美化數據的證據。\r\n\r\nAirbnb 在 2015 年 12 月時發表了一篇「Data on the Airbnb Community in NYC」,說明 Airbnb 對紐約地區的貢獻的種種之類的 PR 文章。\r\n\r\nAirbnb 的文章裡面提到了資料是取自 2015 年 11 月 17 日的資料:\r\n\r\n
    As of November 17, 2015 there were 35,966 active Airbnb listings in New York.
    \r\n\r\n而作者則發現了 2015 年 11 月 17 日當天,Airbnb 站上的資料被「清理」過:\r\n\r\n\"\"\r\n\r\n
    A major part of Airbnb's recent data release was a snapshot of New York City listings as of November 17, 2015. This report shows that the snapshot was photoshopped: in the days leading up to November 17, Airbnb ensured a flattering picture by carrying out a one-time targeted purge of more than 1,000 listings. The company then presented November 17 as a typical day in the company’s operations and mis-represented the one-time purge as a historical trend.
    \r\n\r\n而且只針對紐約地區清理:\r\n\r\n
    No similar event took place in other cities in North America or elsewhere.
    \r\n\r\n完整的分析在「how_airbnbs_data_hid_the_facts_in_new_york_city.pdf」可以取得 PDF 檔,可以看到裡面同時有兩個不同資料來源的分析並確認 (Murray Cox 與 Tom Slee 所蒐集的資料)。", + "title": "Airbnb 被抓到操作站上資料以美化數據" + }, + { + "id": "6314", + "body": "出自「Tribunal rules computer hacking by GCHQ is not illegal」這篇報導。在 Edward Snowden 爆料美國與英國政府都在幹黑的後,Privacy International 就提出訴訟控告 GCHQ,但前幾天法院認定這樣是合法的:\r\n\r\n
    Campaigners Privacy International have lost a legal challenge claiming the spying post's hacking operations are too intrusive and break European law.
    \r\n\r\n
    The case was launched after revelations by US whistleblower Edward Snowden about the extent of US and UK spying.
    \r\n\r\n接下來的戰場會變成在 Investigatory Powers Bill 上面?還是會繼續有上訴?", + "title": "英國法院認為 GCHQ 偷黑別人機器是合法的" + }, + { + "id": "6315", + "body": "在七年半前 (2008 年八月) 寫的「利用 CSS 產生的隱私問題」文章,最近好像是因為 Rplus ChenFacebook 上的這邊提到而又有不少點擊進來,不過這個問題在 2010 年左右已經被解決了。\r\n\r\n可以參考 MDN 上「:visited - CSS」的說明,以及當時 Mozilla 所發佈的文章:「privacy-related changes coming to CSS :visited」。\r\n\r\n由於隱私問題,Mozilla 的作法是限制 :visited 可以改變的項目,只剩下少數與呈現方式有關的屬性可以用:\r\n\r\n
    For privacy reasons, browsers strictly limit the styles you can apply using an element selected by this pseudo-class: only color, background-color, border-color, border-bottom-color, border-left-color, border-right-color, border-top-color, outline-color, column-rule-color, fill and stroke.
    \r\n\r\n另外各種想要取得 :visited 的 CSS 資訊的方法,也會以沒有瀏覽過該網站重新計算,並且傳回假資料以確保還是不會洩漏:\r\n\r\n
    The first change is that Gecko will lie to web applications under certain circumstances. In particular, getComputedStyle() and similar functions such as element.querySelector() always return values indicating that a user has never visited any of the links on a page.
    ", + "title": "關於 CSS 中 :visited 的隱私問題" + }, + { + "id": "6316", + "body": "Webkit 推出了 B3 加快 optimization 的速度,取代原來 LLVM 的工作:「Introducing the B3 JIT Compiler」。\r\n\r\n在文章後方 Performance Results 的部份可以看到最主要的差異在啟動時間:\r\n\r\n\"\"\r\n\r\n另外也可以看到其他各種 performance benchmark 也幾乎都是小勝 LLVM。\r\n\r\n接下來會有 ARM64 與其他平台的計畫:\r\n\r\n
    B3 is not yet complete. We still need to finish porting B3 to ARM64. B3 passes all tests, but we haven’t finished optimizing performance on ARM. Once all platforms that used the FTL switch to B3, we plan to remove LLVM support from the FTL JIT.
    ", + "title": "Webkit 推出 B3 JIT Compiler (Bare Bones Backend)" + }, + { + "id": "6317", + "body": "Google 寫了一篇關於 CVE-2015-7547 的安全性問題:「CVE-2015-7547: glibc getaddrinfo stack-based buffer overflow」。\r\n\r\nGoogle 的工程師在找 OpenSSH 連到某台特定主機就會 segfault 的通靈過程中,發現問題不在 OpenSSH,而是在更底層的 glibc 導致 segfault:\r\n\r\n
    Recently a Google engineer noticed that their SSH client segfaulted every time they tried to connect to a specific host. That engineer filed a ticket to investigate the behavior and after an intense investigation we discovered the issue lay in glibc and not in SSH as we were expecting.
    \r\n\r\n由於等級到了 glibc 這種每台 Linux 都有裝的情況,在不經意的情況下發生 segfault,表示在刻意攻擊的情況下可能會很糟糕,所以 Google 投入了人力研究,想知道這個漏洞到底可以做到什麼程度:\r\n\r\n
    Thanks to this engineer’s keen observation, we were able determine that the issue could result in remote code execution. We immediately began an in-depth analysis of the issue to determine whether it could be exploited, and possible fixes. We saw this as a challenge, and after some intense hacking sessions, we were able to craft a full working exploit!
    \r\n\r\n在研究過程中 Google 發現 Red Hat 的人也在研究同樣的問題:「(CVE-2015-7547) - In send_dg, the recvfrom function is NOT always using the buffer size of a newly created buffer (CVE-2015-7547)」:\r\n\r\n
    In the course of our investigation, and to our surprise, we learned that the glibc maintainers had previously been alerted of the issue via their bug tracker in July, 2015. (bug). We couldn't immediately tell whether the bug fix was underway, so we worked hard to make sure we understood the issue and then reached out to the glibc maintainers. To our delight, Florian Weimer and Carlos O’Donell of Red Hat had also been studying the bug’s impact, albeit completely independently! Due to the sensitive nature of the issue, the investigation, patch creation, and regression tests performed primarily by Florian and Carlos had continued “off-bug.”
    \r\n\r\n攻擊本身需要繞過反制機制 (像是 ASLR),但仍然是可行的,Google 的人已經成功寫出 exploit code:\r\n\r\n
    Remote code execution is possible, but not straightforward. It requires bypassing the security mitigations present on the system, such as ASLR. We will not release our exploit code, but a non-weaponized Proof of Concept has been made available simultaneously with this blog post.
    \r\n\r\n技術細節在 Google 的文章裡也有提到,buffer 大小固定為 2048 bytes,但取得時有可能超過 2048 bytes,於是造成 buffer overflow:\r\n\r\n
    glibc reserves 2048 bytes in the stack through alloca() for the DNS answer at _nss_dns_gethostbyname4_r() for hosting responses to a DNS query.\r\n\r\nLater on, at send_dg() and send_vc(), if the response is larger than 2048 bytes, a new buffer is allocated from the heap and all the information (buffer pointer, new buffer size and response size) is updated.
    \r\n\r\n另外 glibc 官方的 mailing list 上也有說明:「[PATCH] CVE-2015-7547 --- glibc getaddrinfo() stack-based buffer overflow」。", + "title": "CVE-2015-7547:getaddrinfo() 的 RCE (Remote Code Execution) 慘案" + }, + { + "id": "6318", + "body": "Stack Overflow 公開了 2016 年現在的系統架構:「Stack Overflow: The Architecture - 2016 Edition」。\r\n\r\nStack Overflow 的重要性可以從前陣子 Twitter 上流傳的一張讓大家笑的很開心的圖看出來:\r\n\r\n

    The one true #JavaScript exception handler. ;) pic.twitter.com/Zwoi3VlluD

    — Jordan Hall (@DivineOmega) February 5, 2016
    \r\n\r\n\r\n身為目前「程序猿」(!) 最重要的 debug (!!) 資料來源,而且是目前少數用 ASP.NETMicrosoft SQL Server 作為網站與資料庫的架構,並且是放在傳統 IDC 機房而非 Cloud Service 的知名網站,大家也很好奇他們是怎麼堆出來的。\r\n\r\n上次公開 Stack Overflow 的系統架構是 2013 年年底了 (參考當時寫的「Stack Overflow 的現況...」這篇),這份更新距離上次兩年多了,也有很多可以交叉比較的事情。\r\n\r\n比較有趣的是效能的提昇的說明,本來以為會是說因為我們改善程式碼的效率或是其他類似的理由,結果居然直接說是因為買新機器了 XDDD:\r\n\r\n
    You may be wondering about the drastic ASP.Net reduction in processing time compared to 2013 (which was 757 hours) despite 61 million more requests a day. That’s due to both a hardware upgrade in early 2015 as well as a lot of performance tuning inside the applications themselves.
    \r\n\r\n另外覺得比較有趣的是 CiscoASR-1001ASR-1001-x,不知道是什麼理由選擇這個系列,改天找 Cisco 的朋友問問看好了...\r\n\r\n另外他們的 Websockets 也拿來做有趣的事情:\r\n\r\n
    We use websockets to push real-time updates to users such as notifications in the top bar, vote counts, new nav counts, new answers and comments, and a few other bits.
    \r\n\r\n另外他們也發現有些瀏覽器連線已經連 18 個月了 (喂喂),也許應該去看一下人是不是還活著:\r\n\r\n
    Fun fact: some of those browsers have been open for over 18 months. We’re not sure why. Someone should go check if those developers are still alive.
    \r\n\r\n我猜是 production server 上開瀏覽器查資料後沒關掉,就一直連著...", + "title": "Stack Overflow 公開 2016 的架構" + }, + { + "id": "6319", + "body": "Google Compute Engine 推出了可以自己設定 CPU 與 RAM 的機器種類:「Custom Machine Types - Compute Engine — Google Cloud Platform」。\r\n\r\n可以從 1 個 vCPU 到 32 個 vCPU,而記憶體最多是 6.5GB * vCPU 數,所以理論上最高是 208GB?\r\n\r\n
    Create a machine type with as little as 1 vCPU and up to 32 vCPUs, or any even number of vCPUs in between. Memory can be configured up to 6.5 GB of RAM per vCPU.
    \r\n\r\n計價方式就是 vCPU 算一份,記憶體算一份。記得以前有比較小的 Cloud Service 有提供過類似的計價方式,後來都收掉了...", + "title": "Google Compute Engine 推出 Custom Machine Type" + }, + { + "id": "6321", + "body": "Bloomberg 的「Where Your iPhone Goes to Die (and Be Reborn)」這篇稍微描述了 Apple 裝置回收後的報廢過程。\r\n\r\n報導是寫香港的報廢工廠,但受限於與蘋果的合約就不能具名說是誰:\r\n\r\n
    While global brands including HP, Huawei, Amazon and Microsoft also have detailed protocols for recycling their products, Apple’s are the most rigid and exacting, according to people involved in the processes, who declined to be identified because they’re not authorized to speak about clients.
    \r\n\r\n不過 Bloomberg 的人有跟蘋果官方取得一些訪問資料:\r\n\r\n
    \"I think people expect it of us, I think our customers hold us to a high standard,\" Lisa Jackson, Apple’s head of environmental affairs, said by phone from the company’s Cupertino headquarters. \"It’s difficult, because these are incredibly complex pieces of product.\"
    \r\n\r\n另外也有提到取得時的成本:\r\n\r\n
    After a quick test, the recycler will either buy the phone or offer to scrap it for free. In the U.S., payouts for working phones range from $100 for the smallest-capacity iPhone 4, to $350 for the largest iPhone 6 Plus. More stringent testing then shows whether the handset can be resold or must be scrapped.
    \r\n\r\n以及 Bloomberg 做的一些圖表,可以看到各種處理的原則以及回收的大概流程:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "蘋果裝置的報廢過程:香港" + }, + { + "id": "6322", + "body": "話說最近用 Nuzzel 用的還算開心,可以抓到不少文章,但意外的是這篇在 Nuzzel 上沒看到,是在 Allen OwnFacebook 時間軸上看到的 (這則)。\r\n\r\n原文出自「Why I stopped using StartSSL (Hint: it involves a Chinese company)」。\r\n\r\n最主要的安全問題在於 auth.startssl.com 放在中國公司奇虎 360 的機房內,而這是身份認證用的伺服器。基於中國是個人治而非法治的國家 (i.e. 無法確保 CA 的稽核機制是有效的),我決定把 StartSSL 的 root certificate 從 trusted chain 裡面拔掉,以免中獎...\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "StartSSL 將 auth.startssl.com 放在奇虎 360 的機房內" + }, + { + "id": "6323", + "body": "大約一個多月前 (2016 年一月 15 日),一群用 GitHub 發展 Open Source 軟體的人對 GitHub 提出請願,要求重視 Open Source Community 在 GitHub 平台上遇到的問題:「An open letter to GitHub from the maintainers of open source projects」。\r\n\r\n這個請願在卡了將近一個月後,陸陸續續有相當多要搬出 GitHub 的討論,像是 eslint 就直接在 GitHub 開了 issue,討論搬出 GitHub 會遇到的問題以及可能的解決方法:「Investigate switching away from GitHub」。\r\n\r\n在二月 13 日的時候,GitHub 透過 pull request 發出回應說「我們在處理了」,但也沒講正在處理什麼,看起來就是個很 PR 的回應:「Dear Open Source Maintainers」。\r\n\r\n直到昨天,三個主要的請願中關於 issue 範本的問題 (也就是下面這段) 總算有進展了:\r\n\r\n
    Issues are often filed missing crucial information like reproduction steps or version tested. We’d like issues to gain custom fields, along with a mechanism (such as a mandatory issue template, perhaps powered by a newissue.md in root as a likely-simple solution) for ensuring they are filled out in every issue.
    \r\n\r\n為了解決使用者在開 issue 時有時會忘記給出完整的環境資訊 (以及其他有用的資料),GitHub 推出了新的功能,在開 issue 或 pull request 時利用 template 讓使用者有個範本可以照著填寫,同時 template 也支援 Markdown,讓填寫的方式會更豐富一些:「Issue and Pull Request templates」。\r\n\r\n\"\"\r\n\r\n這總算開始有進展了。但也開始感覺到 GitHub 的動作已經開始慢下來了...", + "title": "GitHub 對 Open Source Community 請願的回應" + }, + { + "id": "6324", + "body": "兩個月前 Google 放出來的 Google Cloud Vision API (參考「Google Cloud Vision API」) 開放讓一般人使用了,當初沒決定的價錢也公告出來了。\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n可以看到分成「Optical Character Recognition (OCR)」、「Image Attributes, Landmark, Facial, Logo, or Explicit Content Detection」與「Label Detection」三種,每個月的前 1000 個單位都是免費的,後面每千張是 $2.5/$2.5/$5.0,到百萬張以上時每千張變成 $2.0/$2.0/$4.0,超過五百萬時變成 $0.6/$0.6/$2.0。\r\n\r\n另外目前有數量限制,每個月超過兩千萬張需要另外申請:\r\n\r\n
    Limits: The Google Cloud Vision API supports up to 20 Million units per month per customer project. To request additional quota, please use Cloud Vision API Quota Request.
    ", + "title": "Google Cloud Vision API 開放讓大眾使用" + }, + { + "id": "6325", + "body": "在「Bash Handbook」這篇看到了有人在 GitHub 上整理了「For those who wanna learn Bash」。\r\n\r\n說是 Handbook,更像長篇的 Cheatsheet,帶了基本的說明讓有背景的人可以馬上了解要怎麼用...\r\n\r\n另外因為 Bash 是很多 shell 分支的起源,其實有不少東西對應到 Zsh (以及其他 shell) 也是會通的,拿來複習也是不錯 :o", + "title": "Bash Handbook (更像長篇的 Cheatsheet?)" + }, + { + "id": "6327", + "body": "Twitter 透過 RiffsyGiphy 的引擎支援 GIF 搜尋:「Twitter rolls out native GIF search powered by Giphy and Riffsy」,然後 Giphy 的 Series C funding 搞了五千五百萬美金:「Giphy Closes $55 Million Series C At A $300 Million Post-Money Valuation」。\r\n\r\n在「GIFs: You need to stop. Now.」這則漫畫裡面把這些呼籲者的心情畫的超... XD\r\n\r\n\"\"", + "title": "大家都在喊停止支援 GIF,但反而支援度愈來愈高..." + }, + { + "id": "6328", + "body": "TED 官方貼出了 LinusTED2016 上接受 Chris Anderson 訪問的一些記錄:「The quotable Linus Torvalds, live onstage at TED」。\r\n\r\n\"\"\r\nChris Anderson interviews Linus Torvalds onstage at TED2016. Photo: Bret Hartman / TED\r\n\r\n不知道多久後會放出完整的影片... @_@", + "title": "Linus 在 TED2016 上的一些記錄" + }, + { + "id": "6329", + "body": "在 Go 的官方公告「Go 1.6 is released」提到了把 net/http 的 HTTP/2 預設啟用了:\r\n\r\n
    In Go 1.6, support for HTTP/2 is enabled by default for both servers and clients when using HTTPS, bringing the benefits of the new protocol to a wide range of Go projects, such as the popular Caddy web server.
    \r\n\r\n另外值得一提的是 sort 演算法的效能改善:\r\n\r\n
    The algorithm inside sort.Sort was improved to run about 10% faster, but the change may break programs that expect a specific ordering of equal but distinguishable elements.
    \r\n\r\n這應該算還蠻基本常用到的東西,會改善很多程式效能...", + "title": "Go 1.6 把 HTTP/2 變成預設支援的功能" + }, + { + "id": "6330", + "body": "中國因為一年只讓國民帶五萬美金出國,於是中國的富豪就想到各種方法搬移財產,其中 Boing Boing 介紹的這個方法真的頗棒的 XDDD:「Chinese millionaire sues himself through an offshore shell company to beat currency export controls」。\r\n\r\n先成立一家空殼公司,然後再用空殼公司告自己的公司,藉由法院的賠償程序,避開了個人財產的轉移限制:\r\n\r\n
    But there's a better way: for a small sum, you can just set up an offshore shell company, direct it to sue a Chinese company you own, throw the lawsuit, and then, oh well, I guess there's nothing for it but to send a bunch of cash to your shell company, exempted from export controls, in the form of court-ordered damages.
    \r\n\r\n這方法 XDDD", + "title": "中國富豪搬移財產的方法" + }, + { + "id": "6331", + "body": "RightScale 介紹了 TrackJS 這個服務:「Why do we use TrackJS」。\r\n\r\n可以看發生錯誤的 stack:\r\n\r\n\"\"\r\n\r\n有錯誤的綜合分析:\r\n\r\n\"\"\r\n\r\n然後可以將 minified 的 JS 試著展開,讀起來會比較容易,不過沒看到對 source map 的支援?\r\n\r\n\"\"\r\n\r\n價位上比 Rollbar 低不少 ($249 在 TrackJS 可以記 10M,但在 Rollbar 只能記 1.5M),不過 Rollbar 支援的平台比較多 (台灣也有代理商可以開發票處理帳務),也許找機會用看看 TrackJS 再決定吧。", + "title": "RightScale 介紹的 TrackJS" + }, + { + "id": "6332", + "body": "eBay 放出了一套為了測試環境用 ScalaNetty 開發的 load balancer,Neutrino:「Announcing Neutrino for Load Balancing and L7 Switching」。\r\n\r\n可以看到設計上加入了 log 機制,像是:\r\n\r\n
    Ability to send the traffic logs to API endpoints
    \r\n\r\n以及:\r\n\r\n
    Traffic metrics and configuration are exposed as APIs.
    \r\n\r\n
    Metrics can be easily published to Graphite. Neutrino is also extensible to push metrics to other metrics systems.
    \r\n\r\n效能不是最主要的重點,不過在 2-core VM 裡面可以有每秒 300+ requests,對測試環境應該是夠用:\r\n\r\n
    We have measured upwards of 300+ requests per second on a 2-core VM.
    \r\n\r\n還有不少特殊的功能 (大量模組化的設計),對於測試環境應該頗好用?", + "title": "eBay 在測試環境下的 Load Balancer:Neutrino" + }, + { + "id": "6333", + "body": "Linode 寫了相當長的一篇報告說明 2015 發生的兩件安全事件,以及 2016 年年初重設密碼的行為:「Security Investigation Retrospective」。\r\n\r\n結論是 Linode 沒有找出證據被攻破,但還是打算改善不少東西以確保安全性。\r\n\r\n2015 年七月曾經有一個 Linode 的客戶報案,並且向 Linode 回報帳號被入侵的問題,而後來發現是客戶帶有 2FA 資訊的手機遺失。\r\n\r\n2015 年十二月有個資安專家在分析時發現有人取得了許多服務的帳號密碼,其中有可能有 Linode 的使用者使用相同的密碼,所以通報 Linode 並且提供一些 IP 資訊,Linode 調查後發現提供的 IP 資訊有登入到 Linode 上的帳號,而這些帳號也的確都沒有啟用 2FA,而且詢問這些帳號的主人也確認了被盜用的情況。\r\n\r\n接下來 Linode 還是決定投入資源繼續研究問題,尋找外部的資安團隊來確認情況,最後得到上面提到的結論:沒有找出證據被入侵:\r\n\r\n
    The findings of our security partner’s investigation concluded there was no evidence of abuse or misuse of Linode’s infrastructure that would have resulted in the disclosure of customer credentials. Furthermore, the security partner’s assessment of our infrastructure and applications did not yield a vector that would have provided this level of access.
    \r\n\r\n在 Lish 上有發現問題,但沒有找出被使用的證據:\r\n\r\n
    Linode’s security team did discover a vulnerability in Lish’s SSH gateway that potentially could have been used to obtain information discovered on December 17, although we have no evidence to support this supposition. We immediately fixed the vulnerability.
    \r\n\r\n不過 Linode 還是決定把一些架構改掉,可以在原文看到。\r\n\r\n可以看到打算規劃類似 HSM 架構的設計,,避免密碼直接被存取。把密碼從 Salt + SHA256 (以及千次運算) 轉移到 bcrypt。然後把 ColdFusion 寫的系統改用 Python 寫。並且計畫把後台 open source 出來,讓更多人可以檢視確保安全性。", + "title": "Linode 針對 2015 年的安全問題,以及 2016 年年初密碼重設行為的說明" + }, + { + "id": "6334", + "body": "在翻「Stuff The Internet Says On Scalability For February 19th, 2016」這邊的資料時看到這篇文章講到 Zing JVM 大幅降低了他們在 C10M 時遇到的 latency 問題:「Fast C10M: MigratoryData running on Zing JVM achieves near 1 Gbps messaging to 10 million concurrent users with 15 millisecond consistent latency」。\r\n\r\n包括了平均值、99% 值、最大值都大幅下降:\r\n\r\n
    In this post, we show that by simply replacing the JVM with Zing JVM out-of-the-box (without any tuning), and preserving the same C10M benchmark scenario and setup, we can reduce the average latency from 61 milliseconds to under 15 milliseconds. Moreover, and more importantly, the latency spikes can be significantly reduced from 585 milliseconds to 25 milliseconds for the 99th percentile latency and from 1700 milliseconds to 126 milliseconds for the maximum latency. Therefore, every single message can be delivered, even in the worst case, with almost no delay.
    \r\n\r\n而且他們發現最高的 126ms 也不是 GC 造成的,而是 benchmark 這邊造成的:\r\n\r\n
    And so, the relatively high latency spikes we saw in the previous C10M benchmark were due to JVM’s Garbage Collection (GC). In the new benchmark, not only Zing JVM didn’t introduce high latency spikes, but based on analyzing the logs, it appears that GC effects no longer dominate latency behavior. The dramatically improved 126 ms max latency is not caused by GC but by other condition of the benchmark setup. Anyway, this max latency was so small for a web architecture that we did not spend time to determine at which level exactly it occurred.
    \r\n\r\nZing 的價錢是一台 USD$8000/year,另外也有虛擬機版本 (另外報價),如果遇到 JVM GC 問題,看起來會是個可以花錢解決問題的方案:\r\n\r\n
    Zing® is priced on a subscription basis per server. With per-server pricing, you don’t need to worry about core counts, memory size, or number of instances deployed per server. The annualized subscription price for Zing per physical server ranges from $8000 (for a single license) to under $2000 (for orders above 1000 servers). Higher volumes and longer subscription terms will reduce the per-server price for Zing. Pricing for virtual servers is also available upon request.
    ", + "title": "商業版本的 Zing JVM 對 GC 的改善" + }, + { + "id": "6335", + "body": "照慣例,Backblaze 每隔一段時間就會公佈最近的硬碟死亡率,在「Hard Drive Reliability Review for 2015」的這張圖好像說明了不少事情:\r\n\r\n\"\"\r\n\r\n不過分開各個容量來看,又有一些不同的地方...", + "title": "Backblaze 分析了 2015 年的硬碟故障比率" + }, + { + "id": "6336", + "body": "Google Analytics 推出了 Autotrack 工具,讓開發者更容易整合:「Introducing Autotrack for analytics.js」。\r\n\r\n可以看到有些地方是將 Unobtrusive JavaScript 的概念拿出來用,像是 Declarative event tracking 這邊用 data attribute:\r\n\r\n
    <button data-event-category=\"Video\" data-event-action=\"play\">Play</button>
    \r\n\r\n對於還沒有針對 Google Analytics 客製化整合的人都會有幫助:\r\n\r\n
    While anyone could use and benefit from autotrack, the library is primarily geared toward sites that do not customize their current analytics implementation and would like to take advantage of the features described in this article.
    \r\n\r\nGitHub 上的說明可以看到預設了非常多常用的功能,像是 socialTracker 預設就有提供 FacebookTwitter (咦,你們自己家的 Google Plus 呢?)\r\n\r\n不過這個軟體有免責條款,不屬於 GA 的正式產品:\r\n\r\n
    The autotrack library is not an official Google Analytics product and is not covered by Google Analytics Premium support. Developers that choose to use this library are responsible for ensuring that their implementation meets the requirements of the Google Analytics Terms of Service and the legal obligations of their respective country.
    \r\n\r\n看起來先進很多,之後自己開發東西拿出來用用...", + "title": "Google Analytics 推出 Autotrack 工具幫助整合" + }, + { + "id": "6337", + "body": "在「Benchmarking Message Queue Latency」這篇看到作者測了一輪 Message Queue 軟體:\r\n\r\n
    RabbitMQ (3.6.0), Kafka (0.8.2.2 and 0.9.0.0), Redis (2.8.4) pub/sub, and NATS (0.7.3)
    \r\n\r\n測試包括了從一個 9 到六個 9 的 latency (i.e. 90%、99%、99.9%、99.99%、99.999%、99.9999%),另外也測了 message 大小帶來的效能差異。\r\n\r\n99.9% 表示 1/1000,而 99.99% 表示 1/10000,如果差距跟 90% 很大,表示系統反應時間會很不一致。另外有些 Message Queue 軟體有 disk persistence 的功能,也因為寫入資料,會看到更大的差距。\r\n\r\n\"\"\r\n\r\n善用或是避開這些特性去規劃才能減少問題,像是關掉 disk persistence 之類的方法。", + "title": "對各類 Message Queue 的效能測試" + }, + { + "id": "6338", + "body": "Linux Mint 官方放出警告,通知使用者網站被黑以及 ISO 被加料的資安事件:「Beware of hacked ISOs if you downloaded Linux Mint on February 20th!」,開頭的說明:\r\n\r\n
    Hackers made a modified Linux Mint ISO, with a backdoor in it, and managed to hack our website to point to it.
    \r\n\r\n不幸中獎的人建議的步驟是先離線,然後備份資料,再用確認安全的 ISO image 重新安裝,並且修改各網站的密碼 (尤其是 mail,可以被拿來重設各種服務):\r\n\r\n
    Put the computer offline.\r\nBackup your personal data, if any.\r\nReinstall the OS or format the partition.\r\nChange your passwords for sensitive websites (for your email in particular).
    ", + "title": "Linux Mint 網站被黑,ISO 被加料" + }, + { + "id": "6339", + "body": "2006 年時因為 Mozilla 的人認為 Debian 改了太多東西 (以及其他原因),不應該使用 Mozilla Firefox 這個帶有商標的名稱,要求 Debian 改名 (事情的經過可以參考維基百科上的「Mozilla software rebranded by Debian」條目)。\r\n\r\n而在九年後,最近 Mozilla 的人在 Debian 上開了一個 bug report,討論是否還需要維持 Iceweasel 這個名字:「#815006 - Renaming Iceweasel to Firefox」。\r\n\r\nDebian 這邊的人也提出了很多不一樣的意見 (尤其是對 Mozilla 的商標使用規範),目前還在爭論...", + "title": "Mozilla 的人提出討論,把 Debian 上的 Iceweasel 改名回 Firefox" + }, + { + "id": "6340", + "body": "GitHub 推出了拖拉上傳的功能:「Upload files to your repositories」。\r\n\r\n\"\"\r\n\r\n這功能讓 programmer 以外的人更容易參與了...", + "title": "GitHub 支援拖拉上傳並且 commit" + }, + { + "id": "6341", + "body": "Canonical 的人 (Ubuntu 背後的公司) 跟律師研究後決定採用 .ko 的方式 (就像 nvidia.ko 的方式) 納入 ZFS,讓 Ubuntu 的人可以更方便使用,而不是像現在要另外手動做不少步驟:「ZFS Licensing and Linux」。\r\n\r\n依照 Canonical 的研究,CDDL (ZFS) 與 GPLv2 (Linux) 的授權方式不同,所以可以找到方法交叉避開衝突:\r\n\r\n
    While the CDDL and GPLv2 are both \"copyleft\" licenses, they have different scope. The CDDL applies to all files under the CDDL, while the GPLv2 applies to derivative works.\r\n\r\nThe CDDL cannot apply to the Linux kernel because zfs.ko is a self-contained file system module -- the kernel itself is quite obviously not a derivative work of this new file system.\r\n\r\nAnd zfs.ko, as a self-contained file system module, is clearly not a derivative work of the Linux kernel but rather quite obviously a derivative work of OpenZFS and OpenSolaris. Equivalent exceptions have existed for many years, for various other stand alone, self-contained, non-GPL kernel modules.
    \r\n\r\n至於這種說法是不是成立,至少在還沒上法院認證前也還不知道... 不過看起來 Canonical 是頗有自信,打算將 ZFS 弄進 Ubuntu,上面有不少好用的東西...", + "title": "Ubuntu 搞定 ZFS 授權問題,將直接納入系統中使用" + }, + { + "id": "6342", + "body": "在 Nuzzel 上看到老文章在討論 HTTPS 環境下因為安全性考量,而不能帶出 Referrer 的問題:「Where did all the HTTP referrers go?」。\r\n\r\n原文中「Fixing Referrers in HTTPS: The Meta Referrer」這邊就有提到 HTML5 meta referrer,也就是 W3C 的「Referrer Policy」,問題是到現在還是 Draft 啊...\r\n\r\n也因為過了三年,其實 draft 裡面多了不少參數可以用:\r\n\r\n\r\n\r\n其中刪節號表示 W3C 不建議再使用,應該用後者比較新的。\r\n\r\n不過因為在 Can I use 上面可以看到 Microsoft Edge 只支援舊的關鍵字 (也就是刪節號的那些),所以還是可以考慮先用舊的關鍵字,讓 Microsoft Edge 也可以被保護到:「Referrer Policy」。", + "title": "HTTPS 因為安全性而不能使用 Referrer 的問題" + }, + { + "id": "6343", + "body": "Let's Encrypt 的人試著從多個資料來源分析 Let's Encrypt 對整個網路上安全性的影響力:「Early Impacts of Let's Encrypt」。\r\n\r\n資料來源包括 Certificate Transparency (CT) 記錄與 censys (這個網站用 StartSSL,被我屏蔽掉了 XD)。\r\n\r\n
    But I do have access to Certificate Transparency logs, as well as other data sources like Censys.io.
    \r\n\r\n前者 CT 的部份會有嚴重的偏差,因為 CA/Browser Forum 只規定 EV certificate 要送 CT log,一般的 SSL certificate 可以不送 (幾乎都沒送),而 Let's Encrypt 發的是一般的 SSL certificate,還是有送 CT log。\r\n\r\n把資料送上 CT 是好事,但這使得 CT log 內的資料會有嚴重偏差,拿這個判斷影響力是很有問題的。\r\n\r\n\"\"\r\n\r\n所以這份資料就是看看就好...", + "title": "Let's Encrypt 對整個 SSL Certificate 的影響" + }, + { + "id": "6344", + "body": "Facebook 打算對影音廣告加上字幕:「Capture attention with updated features for video ads」。\r\n\r\nFacebook 引用了 A&W Canada 的說法,重點在:\r\n\r\n
    Adding captions increased watch time by 25%.
    \r\n\r\n可以想像到目前在 timeline 上的預設值不會自動放出聲音,而加上字幕後的確會讓觀看的意願提昇一些。", + "title": "Facebook 將會自動在影音廣告加上字幕" + }, + { + "id": "6345", + "body": "在 TorrentFreak 上看到「YouTube Copyright Complaint Kills Harvard Professor's Copyright Lecture (Update)」這篇文章提到了 YouTube 下架了「William Fisher, CopyrightX: Lecture 3.3, The Subject Matter of Copyright: Music」這部影片。\r\n\r\n有兩件事情吸引我,第一件是,這是哈佛法學院的教授 William Fisher 的課程在說明音樂產業的著作權以及授權架構的線上影片,被 SME (i.e. Sony) 透過 YouTube 的 ContentID 以侵犯版權給下架了... XDDD (瞬間把板凳給拉出來坐著等)\r\n\r\n\"\"\r\n\r\n第二件事情是在這個影片恢復後跑去看而發現的,發現描述音樂產業的授權模式講的相當清楚 (以美國的觀點),尤其當你身在這個產業裡 (yeah yeah),要因為這些授權架構不斷的改變,去修改現有的資料庫設計以配合授權架構,就會更有感覺了。\r\n\r\n這個影片另外一個值得讀的地方在於他有手工翻譯的英文字幕可以看,有興趣看這個產業裡的各種複雜的授權架構的人,絕對值得觀看這 24 分鐘的影片:\r\n\r\n", + "title": "音樂著作的授權架構" + }, + { + "id": "6346", + "body": "看到「RFC 6920: Naming Things with Hashes」這個,看日期是 April 2013,就在想是不是四月一號發的... 但內容看起來還頗有用的,有種 distributed web 的味道?文件裡給的範例長這樣:\r\n\r\n
    <html>\r\n <head>\r\n   <title>ni: relative URI test</title>\r\n   <base href=\"ni://example.com\">\r\n </head>\r\n <body>\r\n   <p>Please check <a href=\"sha-256;f4OxZX...\">this document</a>.\r\n     and <a href=\"sha-256;UyaQV...\">this other document</a>.\r\n     and <a href=\"sha-256-128;...\">this third document</a>.\r\n   </p>\r\n </body>\r\n</html>
    \r\n\r\n目前是 Propsed Standard,所以是怎樣呢...", + "title": "奇怪的 RFC:Naming Things with Hashes" + }, + { + "id": "6347", + "body": "日本市場是 Airbnb 成長最快的市場 (參考「Airbnb to Boost Japan Listings, Its Fastest-Growing Market」),也使得日本的旅館業者想透過立法手段打擊 Airbnb 這類服務:「Airbnb Faces Major Threat in Japan, Its Fastest-Growing Market」。\r\n\r\n
    Under pressure from the hotel industry and a populace concerned with the surge of foreigners in their neighborhoods, Prime Minister Shinzo Abe’s government has released guidelines for home sharing -- called minpaku in Japanese -- that could make most Airbnb rentals in the country illegal.
    \r\n\r\n不過 Airbnb 的手腕感覺上比 Uber 來的軟一點 (雖然比起其他企業還是很硬),應該會試著以遊說的方式阻擋?", + "title": "安倍政權打算規範民宿,使得 Airbnb 變成非法" + }, + { + "id": "6348", + "body": "看起來是用 template 加上一些問題組合成的:「A 19-year-old made a free robot lawyer that has appealed $3 million in parking tickets」、「A teenager has saved motorists over £2 million by creating a website to appeal parking fines」。\r\n\r\n會問一些問題,然後產生一份文件讓你上訴:\r\n\r\n
    Once you sign in, a chat screen pops up. To learn about your case, the bot asks questions like \"Were you the one driving?\" and \"Was it hard to understand the parking signs?\" It then spits out an appeal letter, which you mail to the court. If the robot is completely confused, it tells you how to contact Browder directly.
    \r\n\r\n網站名稱叫做 www.donotpay.co.uk 也很清楚目的 XDDD", + "title": "19 歲的英國寫了個機器人程式產生上訴文件,半年成功消滅了一億的罰單" + }, + { + "id": "6350", + "body": "有了 3D Printer 後,就有人用 3D Printer 設計槍枝,而 Defense Distributed 則是當中頗有名的藍圖,而作者把這份藍圖給丟出來讓大家用。\r\n\r\n\"\"\r\n\r\n美國憲法第二修正案保障人民持有並攜帶武器的權利不得被侵犯,但「散佈製造槍枝的方法」是否也是被第二修正案保護,則還在打官司決定:「Does it violate federal export law if a website publishes CAD files of firearms?」。\r\n\r\n目前看起來要打到巡迴庭...", + "title": "在美國「製造槍枝的方法」是否受到管制?" + }, + { + "id": "6352", + "body": "我寫了一份 Let's Encrypt 的說明 (以 letsencrypt.sh 為主),包括下載、安裝、server 設定、設定與 auto-renew。另外我也把為什麼這樣設計的想法寫在文章的後半部,這主要是在摸索自動化設定時想出來的,也許可以幫到一些人。\r\n\r\n先前註冊了 letsencrypt.tw,也就拿來用了。\r\n\r\n整個網站以 CC0 授權放出,希望能藉此推廣台灣使用 HTTPS。\r\n\r\n也因此希望大家多分享到其他社群網站,讓更多人可以知道這個好用的 CA 與工具。\r\n\r\n如果有任何建議,也歡迎在這篇文章下面留言。", + "title": "把 Let's Encrypt 的說明放到 letsencrypt.tw 了" + }, + { + "id": "6354", + "body": "Route53 的 Health Check 總算支援 SNI 了:「Amazon Route 53 Adds SNI Support for HTTPS Health Checks」。\r\n\r\n
    With SNI and HTTPS support, you can now create health checks for secure websites that rely on SNI to serve the correct website and certificate to requests for a particular domain name.
    \r\n\r\n這功能早該出現啦,等好久了...", + "title": "Route53 的 Health Check 支援 HTTPS SNI 了..." + }, + { + "id": "6356", + "body": "IPv6 address 表示法的確有不少問題,說「包袱」是因為應該是很難改了。\r\n\r\n在「The IPv6 Numeric IP Format is a Serious Usability Problem」這篇文章裡作者討論 IPv6 address 表示法的問題,像是因為用 colon 切割造會跟 url 裡的 port 混淆,於是引入了 bracket 的 workaround:\r\n\r\n
    An IPv4 URL of the form http://127.0.0.1:1234/ indicates that HTTP should be used to access a service at 127.0.0.1 port 1234. But what does http://dead:beef::1:1234/ mean? To fix the ambiguity, brackets were introduced. Now you have to type http://[dead:beef::1]:1234/.
    \r\n\r\nAddress Shortening Obfuscation 這邊講的就有點過火了,不過的確是不好讀,一眼看過去不是很容易切開一個 colon 與兩個 colon 的部份。\r\n\r\n作者有提出一些建議方法,不過看起來只是 murmuring... XD", + "title": "IPv6 表示法的包袱" + }, + { + "id": "6357", + "body": "在「Uber has a panic button in India. But don’t expect it to come to the U.S.」這邊看到印度的 Uber 將會有 Panic Button 給乘客使用,馬上想到這種按鈕 XDDD\r\n\r\n\"\"\r\n\r\n不過實際讀了文章以及官方的說明「Uber Upgrades In-App Safety Features in India」後,發現是 app 裡面的緊急通報:\r\n\r\n\"\"\r\n\r\n這應該是因應先前印度發生好幾起 Uber 司機犯罪事件所做的改變 (參考「India Uber driver guilty of rape」)。", + "title": "印度的 Uber 將會有「Panic Button」提供給乘客" + }, + { + "id": "6358", + "body": "在「Lithium-ion batteries banned as cargo on passenger planes」這篇文章裡面提到美國打算在今年四月開始禁止托運含有鋰電池的設備:\r\n\r\n
    Due to the risk of fire, lithium-ion batteries cannot be shipped as cargo on passenger planes.\r\n\r\nThat's according to a new ban enacted by the U.N.'s International Civil Aviation Organization, which takes effect in April.
    \r\n\r\n如同文章尾提到的兩次貨機載運鋰電池產生的事故,我以為美國早已經全面禁止客機托運了 @_@ (因為台灣與日本早就禁止了?)\r\n\r\n
    Lithium-ion batteries can still be shipped on cargo aircraft. At least two deadly cargo jet crashes have been blamed on fires caused by these batteries. A Boeing 747 crashed in Dubai killing two crew members in 2010. In 2011, an Asiana Airlines 747 crashed off South Korea, also killing two crew members.
    \r\n\r\n這邊提到的兩次貨機的空難分別是「UPS航空6號班機空難」(2010 年) 與「韓亞航空991號班機空難」(2011 年),都是沒有人生還。", + "title": "美國客機要禁止托運鋰電池" + }, + { + "id": "6359", + "body": "美國猶他州的星巴客取得賣酒的執照,將開始提供酒精飲料:「Starbucks gets approval to sell alcohol in five Utah stores」:\r\n\r\n
    Starbucks' liquor license was approved on Tuesday by the Utah Department of Alcoholic Beverage Control.
    \r\n\r\n不過有限制,不能超過 30%:\r\n\r\n
    As part of the Utah license requirement, 70% of Starbucks' sales must come from something other than alcohol.
    \r\n\r\n這個有趣 XD", + "title": "美國猶他州的星巴客將開始賣酒" + }, + { + "id": "6360", + "body": "在 Hacker News Daily 上看到可以在 command line 跟 Stack Overflow 互動的工具:「stackoverflow from the terminal」。\r\n\r\n\"\"\r\n\r\n可以用 npm 安裝。\r\n\r\n作者引用了 xkcd 的笑話來說明為什麼要開發這個程式:\r\n\r\n\"\"\r\n出自「tar", + "title": "在 Command Line 跟 Stack Overflow 互動" + }, + { + "id": "6361", + "body": "在「What to do with optimizer hints after an upgrade?」這邊介紹了 MySQL 5.7 引入的 Rewrite Query Plugin,看起來有很多可以拿來變化的?\r\n\r\n作者提到的用法是當 minor version 升級後 (譬如 5.6 升到 5.7),由於 optimizer 愈來愈聰明,hint 應該都要重新確認是否還需要指定 (像是 USING INDEX),避免效能反而變差。\r\n\r\n但這個前提是你能夠改到程式碼,如果你改不到程式碼就只能祈禱效能不會變差。\r\n\r\n而 MySQL 5.7 提供的 Rewrite Query Plugin 則可以改寫 SQL query,像是 Oracle 官方文件裡給的範例:\r\n\r\n
    mysql> SELECT * FROM query_rewrite.rewrite_rules\\G\r\n*************************** 1. row ***************************\r\n                id: 1\r\n           pattern: SELECT ?\r\n  pattern_database: NULL\r\n       replacement: SELECT ? + 1\r\n           enabled: YES\r\n           message: NULL\r\n    pattern_digest: 46b876e64cd5c41009d91c754921f1d4\r\nnormalized_pattern: select ?
    \r\n\r\n就會把 SELECT 1 變成 SELECT 1 + 1。實際測試會發現檢查的很嚴格,用 PI() 不會變:\r\n\r\n
    mysql> SELECT PI();\r\n+----------+\r\n| PI()     |\r\n+----------+\r\n| 3.141593 |\r\n+----------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql> SELECT 10;\r\n+--------+\r\n| 10 + 1 |\r\n+--------+\r\n|     11 |\r\n+--------+\r\n1 row in set, 1 warning (0.00 sec)
    \r\n\r\n目前好像只想的到 hint 可以這樣做,反正還一堆都跑 5.6 (這兩天 Percona 才出 5.7 的 GA),可以邊規劃升級,邊想看看有什麼情境可以用的...", + "title": "MySQL 5.7 的 Rewrite Query Plugin" + }, + { + "id": "6362", + "body": "看到「Decentralized feeds using BitTorrent's DHT. Idea from Arvid and The_8472 \"DHT RSS feeds\" http://libtorrent.org/dht_rss.html」這個東西,基於 BitTorrentDHT 所開發出來,完全分散架構的 Twitter-like 系統。\r\n\r\n目前的 client 界面長這樣:\r\n\r\n\"\"\r\n\r\n也可以顯示外部圖片:\r\n\r\n\"\"\r\n\r\n如同作者說的,BitTorrent 的 DHT 的抵抗力很好。的確是因為種種原因,有不少單位常常攻擊他,希望他掛掉或是不穩,而這麼多年下來,由於一開始的設計上就有考慮到這樣的攻擊,實戰也存活得很好:\r\n\r\n
    BitTorrent's DHT is probably one of the most resilient and censorship-resistant networks on the internet. PeerTweet uses this network to allow users to broadcast tweets to anyone who is listening.
    \r\n\r\n程式是用 Node.js 寫的,不過用到的東西比較多,安裝起來會比較麻煩一點,照著說明。", + "title": "用 BitTorrent DHT 分散架構的 Twitter" + }, + { + "id": "6363", + "body": "Uber 在泰國曼谷推出 UberMOTO:「Uber launches its first motorcycle service」,官方的英文新聞稿:「Bangkok, UberMOTO is arriving now!」。\r\n\r\n可以用現金或是信用卡付款:\r\n\r\n
    At the end of your trip, you can pay with either cash or credit, depending on what you chose before requesting the ride. You’ll also receive an electronic receipt.
    \r\n\r\n各種新嘗試 XD", + "title": "Uber 在泰國曼谷提供 UberMOTO 服務:機車載客" + }, + { + "id": "6365", + "body": "先前 Tor Project 有提到外面報導 FBI 在 2014 年時僱用 CMU 的人研究 Tor 的弱點並且加以攻擊:「Did the FBI Pay a University to Attack Tor Users?」。\r\n\r\n這的確是錯的,因為不是 FBI,而是 DoD (美國國防部) 僱用的 (瞬間噴出茶來):「Judge confirms what many suspected: Feds hired CMU to break Tor」。Tor Project 的反應在「Statement from the Tor Project re: the Court's February 23 Order in U.S. v. Farrell」這邊。\r\n\r\n
    A federal judge in Washington has now confirmed what has been strongly suspected: that Carnegie Mellon University (CMU) researchers at its Software Engineering Institute were hired by the federal government to do research into breaking Tor in 2014.
    \r\n\r\n所以也不是空穴來風...", + "title": "聯邦政府僱用 CMU 的人研究攻擊 Tor" + }, + { + "id": "6367", + "body": "Zynga 因為從全盛時期的 3500 人降到現在的 2300 人,決定賣掉在舊金山的辦公室:「Zynga puts its San Francisco headquarters up for sale」。\r\n\r\n\"\"\r\n\r\n而且預定會賺一大筆:\r\n\r\n
    Zynga acquired the space, which was once the U.S. headquarters of Sega, for $228 million. Now it maybe worth much more, given the boom in San Francisco real estate.
    \r\n\r\n果然房地產才是王道 (酸) XDDD", + "title": "Zynga 在舊金山的辦公室出售" + }, + { + "id": "6368", + "body": "芝加哥的高中將 Computer Science 列入畢業要求:「Computer science could become graduation requirement for CPS students」。\r\n\r\n看起來沒有標準,有的學校以基本的 HTML 編寫為主:\r\n\r\n
    Claypool announced the proposed requirement outside a technology classroom at Curie, where he'd earlier spent some time talking to introductory computer science students about the day's lesson on basic HTML coding.
    ", + "title": "芝加哥的高中將 Computer Science 列入畢業要求" + }, + { + "id": "6369", + "body": "在「Ubuntu 搞定 ZFS 授權問題,將直接納入系統中使用」這邊提到了 Canonical 的律師們認為搞定 ZFS 的授權問題。\r\n\r\n而 Software Freedom Conservancy 則是提出反對意見:「GPL Violations Related to Combining ZFS and Linux」。\r\n\r\n主要是討論 GPLv2CDDLv1 的感染性相容問題。\r\n\r\n我是覺得 Ubuntu 的說法比較合理,但這種事情沒上法院前誰都不知道... (而且第一仗的結果會特別重要)", + "title": "Software Freedom Conservancy 對 Ubuntu 認定 ZFS 相容性的反對意見" + }, + { + "id": "6370", + "body": "MariaDBMaxScale 軟體提供 MySQL 相容的 proxy interface,可以將後端一群 MySQL server 架構隱藏起來,讓應用程式不需要處理這部份。\r\n\r\n而 Percona 的人則介紹 MaxScale 作為讀寫分離的工具:「High availability with asynchronous replication… and transparent R/W split」。\r\n\r\n如果你是用有支援讀寫分離的 ORM (像是 Laravel 中的 Illuminate::Database),由於 ORM library 幫你處理好了,你可以省掉這個工作。\r\n\r\n但在其他的情況,像是應用程式沒有原始程式碼,或是只能設一組 server,你就必須透過像 MaxScale 這種軟體來幫你打散負荷量。\r\n\r\nPercona 給的範例提供了很多設定檔,應該是改一改就可以動 (當然效能調校是另外要花功夫的事情了),對於有興趣的人應該可以丟人研究?", + "title": "MariaDB 讀寫分離的工具:MaxScale" + }, + { + "id": "6371", + "body": "現在大家都在流行復古... 關閉十五年的 Gopher 服務重新開起來了:「Direct your gopher client to gopher://gopher.metafilter.com」。\r\n\r\n現在的瀏覽器好像都拔掉了,懷舊的人可以用 Lynx 連上去,可以看到長這樣:\r\n\r\n\"\"\r\n\r\n用上下鍵選,然後左右鍵是上下層...", + "title": "MetaFilter 的 Gopher 服務 (!!!) 在十五年後復出" + }, + { + "id": "6372", + "body": "在「Thousands of apps running Baidu code collect, leak personal data - research」這篇裡,加拿大的研究團隊 Citizen Lab 發現百度的 Android SDK 使用非加密傳輸這些個資:\r\n\r\n
    The unencrypted information that has been collected includes a user's location, search terms and website visits, JeffreyKnockel, chief researcher at Citizen Lab, told Reuters ahead of publication of the research on Wednesday.
    \r\n\r\n百度說他們會修正加密問題,但還是要蒐集:\r\n\r\n
    [,] and Baidu told Reuters it would be fixing the encryption holes in its kits, but would still collect data for commercial use, some of which it said it shares with third parties.
    \r\n\r\n霸氣!不愧是百度!即使被抓到後還是要蒐集 XDDD", + "title": "百度被抓到蒐集個資後還是要蒐集..." + }, + { + "id": "6373", + "body": "印度對軟體專利加以限制:「No patent if invention lies only in computer program, says Indian Patent Office」,新的規定規範了如果是程式內所跑出來的創新 (invention),那麼就不可以被專利化:\r\n\r\n
    The new guideline says that if the contribution of the invention lies only in computer program, the examiner should deny the patent claim.
    \r\n\r\n基於程式本身不可專利,那麼完全由程式所產生出來的創新也不應該有專利權:\r\n\r\n
    \"The computer program in itself is never patentable. If the contribution lies solely in the computer program, deny the claim. If the contribution lies in both the computer program as well as hardware, proceed to other steps of patentability,\" it added.
    ", + "title": "印度對軟體專利的限制" + }, + { + "id": "6374", + "body": "Google Express 延伸業務到生鮮食品上:「Google Launches Fresh-Grocery Deliveries」,與生鮮業者合作。\r\n\r\n
    Google said it would begin delivering produce, meat, eggs and other perishable goods on Wednesday in parts of San Francisco and Los Angeles. The service is part of Google Express, which partners with retailers in some U.S. cities to deliver goods to consumers within hours of an order.
    \r\n\r\n而且是當日配送:\r\n\r\n
    Alphabet Inc.'s Google is expanding its same-day delivery service to fresh groceries, the latest example of the tech titan’s increasing push into consumers’ daily lives.
    \r\n\r\n我以為會掛在 Alphabet 下做,而不是在 Google 下做...", + "title": "Google 在舊金山與洛杉磯開始宅配生鮮食品..." + }, + { + "id": "6375", + "body": "架好 reverse proxy 後要測試可以用 curl--resolve 的功能來確認。\r\n\r\n
    curl -v --resolve i.kfs.io:443:68.232.45.191 https://i.kfs.io/article5/global/364,324,6v1/original.png > /dev/null
    \r\n\r\n其中 --resolve 的第三個參數一定要用 IP address,你可以看到他的運作原理:\r\n\r\n
    * Added i.kfs.io:443:68.232.45.191 to DNS cache
    ", + "title": "用 curl 測試 Reserve Proxy 是否正確運作" + }, + { + "id": "6376", + "body": "堆了很久的文章...\r\n\r\n用 Markdown 同時寫 API 測試文件,並且可以實際測試的工具:「Introducing Silk: Markdown driven API tests」,專案在「Markdown based document-driven RESTful API testing.」這邊可以抓到,用 Go 寫的。\r\n\r\n\"\"\r\n\r\nSilk 規範了在 Markdown 裡要測試的文字,然後用這樣測:\r\n\r\n
    silk -silkurl=http://127.0.0.1:3000 example-test.md.silk
    \r\n\r\n其中 -silkurl= 帶的參數最後面不能有斜線 (slash)。\r\n\r\n這個工具比較像是確保 API 文件與目前的 API 相同,而不是要取代現有的測試架構。畢竟用程式語言的彈性還是高很多,Silk 只是初步的確認。", + "title": "用 Markdown 寫測試的 Silk" + }, + { + "id": "6377", + "body": "DigitalOcean 的下一個資料中心會建在印度:「Announcing the Home of our Next Datacenter: Bangalore, India」。\r\n\r\n這幾年可以看到很多投入印度市場的消息,像是 Amazon CloudFront 在 2013 就增加了印度機房的 PoP,而且是一次增加兩個:「AWS CloudFront 與 Route53 增加印度機房...」,而去年 2015 年時又喊話要直接開印度區:「In the Works – AWS Region in India」。", + "title": "DigitalOcean 下一個資料中心建在印度" + }, + { + "id": "6378", + "body": "紐約時報報導 National Society of High School Scholars 問了一萬八千名美國年輕人 (15~29 歲) 理想的職業,也不少出乎意料的結果跑出來:「The New Dream Jobs」。\r\n\r\n常見的網路公司在上面,但讓紐約時報感到意外的,FBICIANSA 也在上面:\r\n\r\n\"\"\r\n\r\n
    When the National Society of High School Scholars asked 18,000 Americans, ages 15 to 29, to rank their ideal future employers, the results were curious. To nobody’s surprise, Google, Apple and Facebook appeared high on the list, but so did the Central Intelligence Agency, the Federal Bureau of Investigation and the National Security Agency.
    \r\n\r\n不過應該是不意外?在教育體系被灌輸愛國主義不就很容易就有這樣的結果?", + "title": "美國年輕人的理想職業" + }, + { + "id": "6379", + "body": "索馬利亞的行動支付愈來愈發達:「More phones, few banks and years of instability are transforming Somalia to a cashless society」。\r\n\r\n\"\"\r\n\r\n
    Now, it is one of at least three companies offering mobile money transfers in Somalia, where 51 out of every 100 people has a mobile subscription (compared to 22, only three years ago), and around 40% of adults use mobile money accounts, according to 2014 data from the World Bank (\">pdf).
    \r\n\r\n行動支付的流行,原因包括了缺乏零售銀行 (也就是服務據點),加上戰爭因素:\r\n\r\n
    [,] the lack of retail banking in Somalia and fears of continued unrest—Al-Shabaab continues to occasionally stage attacks throughout the country—have made the service vital to Somalia’s reconstruction. Hormuud holds the cash, acting in essence like a bank.
    \r\n\r\n時代創造英雄的感覺...", + "title": "索馬利亞愈來愈發達的行動支付" + }, + { + "id": "6380", + "body": "看到「Fast subdomains enumeration tool for penetration testers」這個專案,可以透過多家搜索引擎找 hostname 出來做滲透測試。\r\n\r\n\"\"\r\n\r\n支援五個大的搜尋引擎,以及 NetcraftDNSdumpster:\r\n\r\n
    Sublist3r currently supports the following search engines: Google, Yahoo, Bing, Baidu, and Ask. More search engines may be added in the future. Sublist3r also gathers subdomains using Netcraft and DNSdumpster.
    \r\n\r\n不過沒有把 Yandex 放進去...", + "title": "透過搜尋引擎找 Hostname" + }, + { + "id": "6381", + "body": "前幾天 OpenSSL 宣佈將在三月一日更新版本,包括了幾項層級被標示為 High 的問題:「[openssl-announce] Forthcoming OpenSSL releases」。\r\n\r\n今天看到這個問題了,被稱為「The DROWN Attack」,全名為 Decrypting RSA with Obsolete and Weakened eNcryption,整個 internet 上大約 33% 的伺服器受到影響:\r\n\r\n
    Our measurements indicate 33% of all HTTPS servers are vulnerable to the attack.
    \r\n\r\n包括兩類,第一類是支援 SSLv2 的伺服器,約 17%:\r\n\r\n
    It allows SSLv2 connections. This is surprisingly common, due to misconfiguration and inappropriate default settings. Our measurements show that 17% of HTTPS servers still allow SSLv2 connections.
    \r\n\r\n第二類是指那些,雖然 server 不支援 SSLv2,但與第一類共用同一把 key,於是可以拿來攻擊,約 16%:\r\n\r\n
    Its private key is used on any other server that allows SSLv2 connections, even for another protocol. Many companies reuse the same certificate and key on their web and email servers, for instance. In this case, if the email server supports SSLv2 and the web server does not, an attacker can take advantage of the email server to break TLS connections to the web server. When taking key reuse into account, an additional 16% of HTTPS servers are vulnerable, putting 33% of HTTPS servers at risk.
    \r\n\r\n\"\"\r\n\r\n要注意的是這不只包括了 HTTPS,也包括了 POP3S 與 IMAPS,以及其他有用 SSLv2 的 server 都有受到影響。尤其是第二類會發生在小型伺服器上,mail server 與 web server 共用同一份 SSL certificate/key 的時候。\r\n\r\n如果手上有使用 SSLv2 的 server,解法是關閉 SSLv2 (目前新的 SSL library 預設應該都是關閉),撤銷並重新申請 SSL certificate。", + "title": "最新的 SSL connection 攻擊:DROWN attack" + }, + { + "id": "6382", + "body": "從紐約時報看到今年的 Turing AwardWhitfield DiffieMartin E. Hellman 獲得:「Cryptography Pioneers Win Turing Award」。在 Turing Award 官網上也可以看到對應的說明。\r\n\r\nDiffie–Hellman key exchange 是全世界第一個 (1976 年) 在公開頻道上建立 shared secret 的演算法,直到現在都還廣泛的被使用,可以防禦被動式的監聽攻擊:\r\n\r\n
    The Diffie–Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel.
    \r\n\r\n現在這個演算法用在 PFS (Perfect forward secrecy),或稱為 FS (Forward secrecy),確保 public key 被破解前的連線記錄不會輕易被破解,於是更確保了資料的安全性:\r\n\r\n
    a secure communication protocol is said to have forward secrecy if compromise of long-term keys does not compromise past session keys.
    \r\n\r\n後來這個演算法也被延用到 Elliptic curve 上,也就是 ECDH,因為不使用 [latex]Z_{2^p}[/latex] 或 [latex]Z_p[/latex] (field) 而是使用 Elliptic curve (group),而大幅降低了可被拿來攻擊的特性,而使得 key 的長度可以比 RSA 小很多。\r\n\r\n上一個因密碼學拿到 Turing Award 的是 2012 年得獎的 Silvio MicaliShafi Goldwasser,他們所音發展出來的用以對密碼系統驗證的數學方法而得獎。\r\n\r\n而更有名的應該是 2002 年 Ronald L. RivestAdi ShamirLeonard M. Adleman 因為 RSA 演算法而得獎的事情。\r\n\r\n在愈來愈多新聞揭露安全與隱私問題後 (尤其是政府對人民的監控),密碼學愈來愈被重視。之前在密碼學領域做出重大貢獻的人也陸陸續續得獎...", + "title": "2015 年的 Turing Award 由 Whitfield Diffie 與 Martin E. Hellman 獲得" + }, + { + "id": "6384", + "body": "在這次 Google Chrome 的「Stable Channel Update」裡引入了平滑捲動,在 comment 的地方有人提出解法,可以在 chrome://flags 裡找 disable-smooth-scrolling 關掉後重開 Google Chrome:\r\n\r\n
    You can disable it here: chrome://flags/#disable-smooth-scrolling
    \r\n\r\n另外一個 bug 是跑出一堆 extension icon 要重新蔵:\r\n\r\n
    Hiding extensions needs to be made available again.
    \r\n\r\n另外這次的安全更新有很多是透過「AddressSanitizer, ThreadSanitizer, MemorySanitizer」與「Control Flow Integrity」這兩個專案所找出來的。", + "title": "關閉 Google Chrome 49 的平滑捲動" + }, + { + "id": "6385", + "body": "在「Pictures combined using Neural networks」這邊看到一堆奇怪的東西,都還蠻有趣的 XDDD\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "用類神經網路合成圖片產生一堆奇怪的東西... XD" + }, + { + "id": "6386", + "body": "GitHub 上的 fulldecent/system-bus-radio 這個專案可以打破實體隔離限制傳遞資訊:\r\n\r\n
    Some computers are intentionally disconnected from the rest of the world. This includes having their internet, wireless, bluetooth, USB, external file storage and audio capabilities removed. This is called \"air gapping\". Even in such a situation, this program can transmit radio.
    \r\n\r\n有些電腦因為種種因素而實體隔離 (像是因為安全因素,或是保密因素),於是就有人研究各種方法傳遞資訊。這隻程式利用 system bus 在 Macbook Air 上產生 AM radio 訊號:\r\n\r\n
    And run it on an Apple MacBook Air (13-inch, Early 2015):\r\n\r\n
    ./main
    \r\n\r\nThen use a Sony STR-K670P radio receiver with the included antenna and tune it to 1580 kHz on AM.
    \r\n\r\n這方法好硬... 但也證明了可以藉由這種方法傳遞訊息。\r\n\r\nUpdate:強者我同事 ccnTwitter 上找到一位日本人的 demo 影片:\r\n\r\n

    System Bus Radio @ MacBook Pro 2.8GHz i7 15-inch Mid 2014, about 1300kHz AM Radio Mary? pic.twitter.com/66BDOOsZC4

    — 魚田雅彦 (@muota_here) March 2, 2016
    \r\n", + "title": "打破實體隔離限制傳遞資訊" + }, + { + "id": "6389", + "body": "TC 丟出來的消息,宣稱微軟曾經規劃以 80 億美金購買 Slack:「Source: Microsoft mulled an $8 billion bid for Slack, will focus on Skype instead」。\r\n\r\n不過這個計畫被微軟 CEO Satya Nadella 與前 CEO Bill Gates 給擋了下來,認為不如把這筆錢放到 Skype 的研發上:\r\n\r\n
    Microsoft co-founder Bill Gates and CEO Satya Nadella were among those unconvinced by the idea, with Gates pushing instead to add more features into Skype to make it more competitive with Slack in the business market, our source says.
    \r\n\r\n我也覺得微軟高層的角度比較合理 (以手上有的資料來規劃),雖然這幾年下來 Skype 愈改愈爛...", + "title": "微軟曾經規劃以 80 億美金購買 Slack" + }, + { + "id": "6390", + "body": "Oculus 的創辦人 Palmer Luckey 說明為什麼在 Mac 上沒有 Rift 可以用:「Oculus Founder: Rift will come to Mac if Apple “ever releases a good computer”」。\r\n\r\n回應其實頗委婉:\r\n\r\n
    [,] according to Oculus co-founder Palmer Luckey, it \"is up to Apple\" to change that state of affairs. Specifically, \"if they ever release a good computer, we will do it,\" he told Shacknews recently.
    \r\n\r\n但實際上就是在抱怨 Mac 太慢了 XDDD\r\n\r\n
    \"It just boils down to the fact that Apple doesn’t prioritize high-end GPUs,\" he said. \"You can buy a $6,000 Mac Pro with the top-of-the-line AMD FirePro D700, and it still doesn’t match our recommended specs.\"
    \r\n\r\n看起來 VR 會再促進硬體進步...", + "title": "Oculus 的創辦人根本就是在抱怨 Mac 太慢了 XDDD" + }, + { + "id": "6391", + "body": "Email 發明人 Ray Tomlinson 過世:「Inventor of email and savior of the @ sign, Ray Tomlinson, is dead at 74」。\r\n\r\n第一封 Email 出自 1971 年 (45 年前),在「RIP: Largest Social Media Network Founder」這邊提到,把 Email 描述成全世界最大的 social media network 也不為過:\r\n\r\n
    The world’s largest social media network is Email with;\r\n
    ", + "title": "Email 發明人過世" + }, + { + "id": "6392", + "body": "Slack 開始測語音通話功能了:「Making voice calls in Slack」,目前是 beta:\r\n\r\n
    Keep in mind: Calls (beta) is currently voice only and desktop only. Video, screen sharing, and mobile support will come in the future.
    \r\n\r\n包括了 one-to-one (開放給所有的 plan),以及 group (開放給付費 plan)。\r\n\r\n在 troubleshooting 的說明裡有提到技術問題,也可以看出一些東西:\r\n\r\n
    If Slack is having trouble establishing a call connection, check the following settings, or ask your IT admin to do so:\r\n
    \r\n\r\n功能愈來愈齊了...", + "title": "Slack 開始測試語音通話功能" + }, + { + "id": "6393", + "body": "在 FBIApple 的戰爭開打後,愈來愈多安全與隱私問題被重新拿出來檢驗,而 Amazon 也決定將 2015 年拔掉的加密功能搬回 Fire OS 裡:「Amazon Reverses Course, Encryption Returning for Fire Devices」:\r\n\r\n
    Amazon.com Inc. will restore encryption as a security option on its tablets and other devices that use the Fire operating system, following a customer backlash driven by increased sensitivity about data protection as Apple Inc. grapples with the FBI over access to a terrorist’s iPhone.
    \r\n\r\n預定是今年春天加回來:\r\n\r\n
    Amazon reversed course late Friday night, saying in an e-mail that it would restore encryption as an option on Fire devices with a software update “this spring,“ without being more specific.
    \r\n\r\n愈來愈多公司與產品都認定加密是「基本功能」,無論你有沒有接觸到敏感資料。", + "title": "Amazon Fire 會把加密系統弄回來" + }, + { + "id": "6394", + "body": "愈來愈多捕捉無人機的方式被發展出來,像這個是透過網子與降落傘拉下來:「SkyWall gun stops drones dead, then gives a parachute landing」:\r\n\r\n
    The most important feature of SkyWall is that it not only stops the flight of a drone but, once it captures a drone, it deploys a mini-parachute, bringing the drone back to earth with no damage, allowing authorities to keep it intact for subsequent investigation.
    \r\n\r\n這個 GIF 展示了捕捉的方法與過程:\r\n\r\n\"\"", + "title": "愈來愈多無人機捕捉方式被發展出來" + }, + { + "id": "6395", + "body": "在「Quiz: Can we guess your age and income, based solely on the apps on your phone?」這篇給了一個測驗,透過回答 32 題 Yes/No 的答案來猜測你的性別、婚姻狀態與收入範圍,大約是 61% 到 82% 的準確率:(為什麼會是一個範圍?)\r\n\r\n
    Based on those models, they then found that they could predict a user’s gender, age, marital status and income with between 61- and 82-percent accuracy.
    \r\n\r\n會猜測四個答案,所以是 16 種組合:\r\n\r\n
    There are 16 possible results, based on your gender (male/female), your age (over/under 32), your marital status (married/single) and your income (over/under $52,000).
    \r\n\r\n做完後很不準 XDDD\r\n\r\n我猜測用的方式與很久前 pest 講的「網路廣告商怎麼知道你是誰? 從 ClickStream 來判斷用戶資料」的方法類似,用已知的資料去 train 出一個模型,再丟進去判斷...", + "title": "透過你用的 App 猜測你的性別、婚姻狀態與收入範圍" + }, + { + "id": "6396", + "body": "GitHub 提供了新的 API 讓 client 可以更省網路資源,同時 GitHub 本身也可以省下 query。雖然是 Preview 期間,但已經有專案開始用了:「Commit Reference SHA-1 Preview Period」。\r\n\r\n本來是這樣抓:\r\n\r\n
    curl \"https://api.github.com/repos/Homebrew/homebrew/commits/master\" \\\r\n  -H \"Accept: application/vnd.github.chitauri-preview+sha\"
    \r\n\r\n現在則可以加上 If-None-Match:\r\n\r\n
    curl \"https://api.github.com/repos/Homebrew/homebrew/commits/master\" \\\r\n  -H \"Accept: application/vnd.github.chitauri-preview+sha\" \\\r\n  -H \"If-None-Match: \\\"814412cfbd631109df337e16c807207e78c0d24e\\\"\"
    \r\n\r\n當本地與遠端的 SHA-1 值一樣時會收到 304,而且不會吃 rate limit quota:\r\n\r\n
    If the remote and your local branch point to the same SHA-1 then this call will return a 304 Unmodified status code (and not use your rate limit).
    \r\n\r\n尤其是當 commit reference 指到的 commit 特別大包時,可以省下很多資源...", + "title": "GitHub 提供更輕量的 Commit Reference SHA-1 API" + }, + { + "id": "6397", + "body": "最近有有聲音在討論足球比賽使用錄影重播判決了:「Video referees in football 'no later' than 2017-18 - IFAB」,預定在 201718 賽季使用:\r\n\r\n
    A trial of the use of video assistant referees for \"game-changing decisions\" in football will begin no later than the 2017-18 season.
    \r\n\r\n目前的規劃中只有在某些特定判決時使用:\r\n\r\n
    Technology would only be applied to key incidents concerning goals, red cards, mistaken identities and penalties.
    \r\n\r\n相較於網球已經都在用鷹眼系統 (Hawk-Eye) 改判,足球比賽還是維持很傳統的方式在維持比賽...", + "title": "足球的錄影重播判決" + }, + { + "id": "6399", + "body": "分析信用卡四位數密碼的分佈:「PIN number analysis」。\r\n\r\n透過已經外洩的資料分析:\r\n\r\n
    Obviously, I don’t have access to a credit card PIN number database. Instead I’m going to use a proxy. I’m going to use data condensed from released/exposed/discovered password tables and security breaches.
    \r\n\r\n19xx 那邊特別高,拉出來看可以看到分佈:(很像是出生年 XDDD)\r\n\r\n\"\"\r\n\r\n相同的 abab (前兩碼與後兩碼相同) 也可以看出特別高,而 aaaa (四碼都一樣) 的特別亮:\r\n\r\n\"\"\r\n\r\n當不只四碼時,也有一些數據:\r\n\r\n\"\"\r\n\r\n另外是特別高的 1004 的原因:\r\n\r\n
    Many people also asked the significance of 1004 in the four character PIN table. This comes from Korean speakers. When spoken, \"1004\" is cheonsa (cheon = 1000, sa=4).\r\n\r\n\"Cheonsa\" also happens to be the Korean word for Angel.
    ", + "title": "四位數密碼的分佈" + }, + { + "id": "6400", + "body": "在「Play: A P2P Distributed Torrent Site That's Impossible to Shut Down」這邊看到 ZeroNet,標語是使用 P2P 分散式站台:\r\n\r\n
    Real-time updated, P2P websites using Bitcoin cryptography and the BitTorrent network
    \r\n\r\n想說丟進 Docker 裡玩看看,測了一下沒什麼問題,只要 port forwarding 打幾個洞就好了。\r\n\r\n先開 port 15441 (對外溝通) 與 port 43110 (UI 用),這兩個是預設值:\r\n\r\n
    $ docker run -p 15441:15441 -p 0.0.0.0:43110:43110 -t -i ubuntu:14.04 /bin/bash
    \r\n\r\n這邊的 0.0.0.0 是開放給任何連的到這台主機的人用,也許你應該用 127.0.0.1 或是 192.168.x.x 之類的 IP 會比較保險。\r\n\r\n然後進 Docker container 後裝個 Wget 並且把檔案抓下來解開:\r\n\r\n
    # apt-get install wget\r\n# cd /tmp\r\n# wget https://github.com/HelloZeroNet/ZeroBundle/releases/download/0.1.1/ZeroBundle-linux64-v0.1.1.tar.gz
    \r\n\r\n這邊建議去官網上看一下最新的 Linux 版本是什麼再抓下來跑。接著解開後直接執行兩次 (因為第一次會失敗 XDDD):\r\n\r\n
    # tar zxvf ZeroBundle-linux64-v0.1.1.tar.gz\r\n# cd ZeroBundle\r\n# ./ZeroNet.sh --ui_ip 0.0.0.0\r\n# ./ZeroNet.sh --ui_ip 0.0.0.0
    \r\n\r\n然後你應該就可以在瀏覽器裡開 http://127.0.0.1:43110/ 看到東西了,在 TF 的站上也有提供一些好東西的網址,這邊就不提了...\r\n\r\n看起來也可以包成 image 來用,網路上應該有人包...", + "title": "在 Docker 裡跑 ZeroNet" + }, + { + "id": "6401", + "body": "O'Reilly 放出了一大包的資料:「O'Reilly Media - Free Data Report Archive」。\r\n\r\n看起來是報告形式,2015 的資料比較多,2014/2013/2012 的比較少... 看起來有不少圖表,之後要做投影片時也許可以拿來用 (還沒看 license)。", + "title": "O'Reilly 放出一大包的 Free Data Report Archive" + }, + { + "id": "6402", + "body": "應該是前陣子被 Nuzzel 推薦 2015 八月的老新聞,這個研究在 Nature 上發表:「Over half of psychology studies fail reproducibility test」。\r\n\r\n這個研究重複了 98 篇原創研究來重新實驗:\r\n\r\n
    In the biggest project of its kind, Brian Nosek, a social psychologist and head of the Center for Open Science in Charlottesville, Virginia, and 269 co-authors repeated work reported in 98 original papers from three psychology journals, to see if they independently came up with the same results.
    \r\n\r\n結果在 100 次的實驗 (其中有 2 個是重複的) 發現只有 39 個實驗結果被重製出來:\r\n\r\n
    According to the replicators' qualitative assessments, as previously reported by Nature, only 39 of the 100 replication attempts were successful. (There were 100 completed replication attempts on the 98 papers, as in two cases replication efforts were duplicated by separate teams.)
    \r\n\r\n\"\"\r\n\r\n這成功率其實頗低,如果實驗無法被重製,就不能算科學研究...", + "title": "超過一半的心理研究都無法重製結果" + }, + { + "id": "6403", + "body": "微軟的 Microsoft SQL Server 將會推出 Linux 版:「Announcing SQL Server on Linux」。\r\n\r\n\"\"\r\n\r\n看到 Ubuntu 這個關鍵字:\r\n\r\n
    “We are delighted to be working with Microsoft as it brings SQL Server to Linux,” said Mark Shuttleworth, founder of Canonical. “Customers are already taking advantage of Azure Data Lake services on Ubuntu, and now developers will be able to build modern applications that utilize SQL Server’s enterprise capabilities.”
    \r\n\r\n目前是 private preview,申請後測試:\r\n\r\n
    The private preview of SQL Server on Linux is available starting today and we look forward to working with the community, our customers and our partners to bring it to market.
    ", + "title": "Microsoft SQL Server 出 Linux 版..." + }, + { + "id": "6404", + "body": "GoogleDeepMind 所研發出來的 AlphaGo李世乭的「谷李五番棋」將在今天開打。\r\n\r\n中國規則、兩個小時、一分鐘讀秒:\r\n\r\n
    The matches will be played under Chinese rules with a komi of 7.5 (the compensation points the player who goes second receives at the end of the match). Each player will receive two hours per match with three lots of 60-second byoyomi (countdown periods after they have finished their allotted time).
    \r\n\r\n將在韓國時間下午一點開賽,對我們也就是十二點開賽:\r\n\r\n
    The matches will be held at the Four Seasons Hotel, Seoul, South Korea, starting at 1pm local time (4am GMT; day before 11pm ET, 8pm PT) on March 9th, 10th, 12th, 13th and 15th.
    \r\n\r\n將會有大量的媒體講解直播,毫無疑問的,YouTubeDeepMind 這個頻道會有直播,目前看起來是早上的十一點半就會開始了。\r\n\r\n其他的頻道,台灣已知的有:\r\n\r\n\r\n\r\n不過我應該會到處看吧,中國的圍棋網站「围棋TV」也會在十一點半開始直播。\r\n\r\n很多人都有猜測勝負,但自從去年十月贏了樊麾後,不知道成長了多少。其實都是在資訊不足的情況下猜測,在這種情況下,人類大獲全勝或是電腦大獲全勝都不意外...\r\n\r\n也因此,五番棋的第一盤應該是最轟動的,因為可以看出 AlphaGo 長到什麼程度... 不過聽說第一盤 Google 只會拿單機版出來應戰?所以如果輸的很慘的話就會拿雲端版來戰?\r\n\r\n啊啊啊我好想看啊...", + "title": "谷李五番棋今天開打" + }, + { + "id": "6406", + "body": "Percona 提到了 MySQL 5.7 的 JSON 與 virtual column,再加上 index 後的效能提昇:「JSON document fast lookup with MySQL 5.7」。\r\n\r\n每一家都把這些功能給做出來了,在 MySQL 5.7 提供了 JSON 格式:\r\n\r\n
    CREATE TABLE `test_features` (\r\n  `id` int(11) NOT NULL AUTO_INCREMENT,\r\n  `feature` json NOT NULL,\r\n  PRIMARY KEY (`id`)\r\n) ENGINE=InnoDB;
    \r\n\r\n而你可以對 JSON 欄位運算,拉出資料後產生出 virtual column:\r\n\r\n
    ALTER TABLE test_features ADD COLUMN street VARCHAR(30) GENERATED ALWAYS AS (json_unquote(json_extract(`feature`,'$.properties.STREET'))) VIRTUAL;
    \r\n\r\n然後就可以對 virtual column 下 index:\r\n\r\n
    ALTER TABLE test_features ADD KEY `street` (`street`);
    \r\n\r\n接著對 virtual column 查詢的速度就會超快:\r\n\r\n
    SELECT count(*) FROM test_features WHERE street = 'BEACH';
    \r\n\r\n其實不一定要 JSON,光是 virtual column 與 index 就可以解決老問題:\r\n\r\n
    已經有使用者所在的國家,想要快速查詢使用者是住在哪個洲 (亞洲、歐洲、美洲、...)。
    \r\n\r\n以前是另外拆出一個欄位來做,用 trigger 更新確保資料正確性後,再對拆出來的欄位下 index。現在可以用 virtual column 建立出來下 index。", + "title": "MySQL 5.7 的 JSON、Virtual Column 以及 Index" + }, + { + "id": "6407", + "body": "看到 Samsung 弄出單顆 15TB 的 SSD 來嚇大家:「Samsung ships the world's highest capacity SSD, with 15TB of storage」,Samsung 的官方新聞稿在這:「Samsung Introduces World’s Largest Capacity (15.36TB) SSD for Enterprise Storage Systems」。\r\n\r\n\"\"\r\n\r\n2.5 吋的 SAS 界面,表示在不考慮預算的情況下,差不多比現在最大的傳統硬碟大了一倍:\r\n\r\n
    The 2.5-in SSD is based on a 12Gbps Serial Attached SCSI (SAS) interface for use in enterprise storage systems.
    \r\n\r\n所以用 2U 伺服器塞 24 顆的情況如何?感覺好讚啊 XDDD", + "title": "單顆最大容量的 SSD:15TB" + }, + { + "id": "6408", + "body": "在「Chrome Network Panel Filter: Domain」這篇看到有趣的用法:\r\n\r\n\"\"\r\n\r\n輸入完 domain: 後會列出許多選擇讓你選,還包括了 wildcard... 這功能真不錯 @_@", + "title": "Google Chrome Developer Tools 裡的 Network Filter" + }, + { + "id": "6409", + "body": "剛剛收到 Plastc 通知信說他們更新消息,有 prototype 的示範影片可以看了:「Plastc Prototype in Action」。\r\n\r\n先看他們之前的宣傳影片:\r\n\r\n\r\n\r\n而這是工程版的 prototype 示範影片:\r\n\r\n\r\n\r\n比起以前嘴砲來的可信度高多了,雖然還是很有可能沒出貨...\r\n\r\nPre-order (預購) 是 USD$155,而寄到台灣要多加 USD$10 的費用,所以是 USD$165。我就當跟當初買挖礦機的風險一樣好了,沒預期會拿到東西。\r\n\r\n如果你有興趣,而且也願意承擔最後有可能沒出貨的風險,可以用我的連結購買:https://share.plastc.com/x/NO0S0J,我跟你都會拿到 USD$20 的好處:\r\n\r\n
    They’ll receive a $20 discount when they pre-order Plastc, and you’ll receive a $20 Amazon gift card with your Plastc Card.
    \r\n\r\nUpdate:補充其他人對這個產品的反面看法。\r\n\r\n

    @gslin 磁條不安全所以已經慢慢沒在用了,晶片的部分網頁也有註記還沒啟用。其他同類型的產品也都卡在 emv 的功能。疑惑的是如果晶片能複製不是很奇怪,如果要跟 apple pay 一樣那又必須要各家銀行談合作。覺得現在買這種卡之後不能用的風險很高。

    — Yung S. (@kaxing) March 11, 2016
    \r\n", + "title": "超強的萬用信用卡 Plastc 的原型工程版出來了..." + }, + { + "id": "6410", + "body": "Let's Encrypt 的官方 Client 決定改名,不過目前還沒有公佈新的名字:「New Name, New Home for the Let's Encrypt Client」。\r\n\r\n主要是兩個原因,第一個是避免商標問題:\r\n\r\n
    [...] we want the client to be distributable and customisable without having to create a complex process for deciding whether customized variants are appropriate for use with Let’s Encrypt trademarks.
    \r\n\r\n另外一個是希望之後有其他的 CA 也可以用:\r\n\r\n
    Another reason is that we want it to be clear that the client can work with any ACME-enabled CA in the future, not just Let’s Encrypt.
    ", + "title": "Let's Encrypt 的官方版本 Client 將會改名" + }, + { + "id": "6411", + "body": "Google 將不再對外公開 PageRank 資訊:「Google has confirmed it is removing Toolbar PageRank」與「RIP Google PageRank score: A retrospective on how it ruined the web」。\r\n\r\nPageRank 資訊是透過 Google Toolbar 再反向被挖出來的,而 Toolbar 上的資訊將會拿掉,也預期對應的 API 應該也會關閉:\r\n\r\n
    Google has confirmed with Search Engine Land that it is removing Toolbar PageRank. That means that if you are using a tool or a browser that shows you PageRank data from Google, within the next couple weeks it will begin not to show any data at all.
    \r\n\r\nGoogle 內部還是會用,只是不會公開了...", + "title": "Google PageRank 資料將不再公開" + }, + { + "id": "6412", + "body": "這一槍開的好早,MaxCDN 宣佈因為安全性問題,決定從下個禮拜就中止對 TLS 1.0 的支援:「We're Disabling TLS 1.0 Support on March 18, 2016」。\r\n\r\n而且新聞稿也寫的超怪:\r\n\r\n
    After sunsetting TLS 1.0 at MaxCDN, we will continue to support TLS 1.1 and TLS 1.2, though we highly recommend TLS 2.0 for your toolset. It’s currently the fastest and most secure cryptographic protocol available, though TLS 3.0 is in the works.
    \r\n\r\n其中提到了 TLS 2.0,害我去查了查發生什麼事情。而 TLS 3.0 的連結實際上是連到 TLS 1.3 draft。而實際確認數字會發現,有不少行動裝置還是只支援 TLS 1.0,用 MaxCDN 的人就準備掛光:\r\n\r\n\r\n\r\n這家 CDN 果然怪怪的... 在 TLS 1.0 仔細設定可以保持安全性的情況下,加上還有這麼多 client 要支援,做生意的突然來被這招陰是要怎麼玩 :o", + "title": "MaxCDN 將中止 TLS 1.0 的支援" + }, + { + "id": "6413", + "body": "雖然還沒到十週年,但 Amazon 的 CTO 還是寫下他對 AWS 十週年的想法了,也是這十年來學到的經驗:「10 Lessons from 10 Years of Amazon Web Services」。\r\n\r\n
    The epoch of AWS is the launch of Amazon S3 on March 14, 2006, now almost 10 years ago.
    \r\n\r\n他所列出的十個主題分別是:\r\n\r\n\r\n\r\n原來 AWS 也十年了...", + "title": "Amazon 的 CTO 對 AWS 十週年的想法" + }, + { + "id": "6414", + "body": "加州在規劃廢除日光節約時間:「California could drop Daylight Saving Time」。\r\n\r\n
    A California lawmaker has introduced a bill to unshackle the Golden State from the horological chains of Daylight Saving Time.
    \r\n\r\n主要是沒有實質效益,甚至是與當初預期的反效果:\r\n\r\n
    Daylight saving time is observed in about 70 countries worldwide, but its benefits are the subject of much debate. While studies in the 1970s argued that it reduced energy usage, it’s no longer clear that’s the case. A 2011 study in Indiana found that electricity use rose in the state as a result of daylight saving.
    ", + "title": "加州在規劃廢除日光節約時間" + }, + { + "id": "6415", + "body": "日本的研究團隊發現吃寶特瓶的細菌:「Newly discovered bacteria can eat plastic bottles」。\r\n\r\n
    A team of Japanese scientists has found a species of bacteria that eats the type of plastic found in most disposable water bottles.
    \r\n\r\n發表在 Science 上:\r\n\r\n
    The discovery, published Thursday in the journal Science, could lead to new methods to manage the more than 50 million tons of this particular type of plastic produced globally each year.
    \r\n\r\n論文在「Feeding on plastic」這邊,吃的是 PET 寶特瓶。", + "title": "日本的研究團隊發現吃寶特瓶的細菌" + }, + { + "id": "6416", + "body": "在「Want Safer Passwords? Don't Change Them So Often」這邊在討論改目前 password policy 會有要求一定時間要改密碼造成的問題。原報導出自 美國聯邦貿易委員會 blog 上的「Time to rethink mandatory password changes」。\r\n\r\n當你強制要求改密碼時,由於因為是被逼的,他們不會放太多心力:\r\n\r\n
    Lorrie Cranor recently outlined, the weight of recent research agrees that when people are forced to change their passwords on the regular, they don’t put a whole lot of mental muscle behind it.
    \r\n\r\n而在沒有準備的情況下產生出來的密碼將會是比較容易預測的:\r\n\r\n
    Instead, Cranor notes, according to one UNC study, people “tended to create passwords that followed predictable patterns, called ‘transformations,’ such as incrementing a number, changing a letter to similar-looking symbol (for example changing an S to a $), adding or deleting a special character (for example, going from three exclamation points at the end of a password to two), or switching the order of digits or special characters (for example moving the numbers to the beginning instead of the end).”
    \r\n\r\n另外你應該鼓勵使用者用 password manager 管理密碼,雖然不是完美的,但至少是目前比較合理的方案:\r\n\r\n
    If for whatever reason you still can’t let go of making people change passwords as often as they turn the pages of their wall calendars, Cranor suggests that you at least encourage them to use a password manager, like LastPass or DashLane. They’re not perfect, but they can be a “very reasonable strategy” for coping, mostly because they don’t require people to balance unpredictable passwords with ones they can actually remember.
    ", + "title": "強迫要求使用者改密碼反而會不安全?" + }, + { + "id": "6417", + "body": "在「碼天狗週刊 #33」上看到的「prestissimo」這個軟體,可以平行下載 Composer 所需要的軟體而讓速度變快。作者測試 Laravel 的安裝:\r\n\r\n
    $ composer create-project laravel/laravel laravel1 --no-progress --profile --prefer-dist
    \r\n\r\n從 288 秒變成 26 秒:(這種 benchmark 跟地點應該有關係,看作者似乎是日本人?不知道是不是在日本測的...)\r\n\r\n\"\"\r\n\r\n感覺應該要變成 Composer 的內建功能才對?", + "title": "用 prestissimo 加速 PHP Composer 的下載速度" + }, + { + "id": "6418", + "body": "這是回應之前社群對 GitHub 的請願 (or 抱怨?) 而生的新功能,(參考先前的文章「GitHub 對 Open Source Community 請願的回應」):「Add Reactions to Pull Requests, Issues, and Comments」。\r\n\r\n\"\"\r\n\r\n這避免了在討論時大量的 +1 與導致混亂的情況。", + "title": "GitHub 加上 +1 與 -1 功能 (順便加上表情符號)" + }, + { + "id": "6420", + "body": "新的 AWS 帳號將會自動啟用長版的 Resource ID:「New accounts default to long EC2 resource IDs on March 7」。\r\n\r\n還是可以 opt-out 改回來,不過官方還是建議儘量用長的 ID 測試,因為今年年底將全面強迫使用:\r\n\r\n
    We recommend testing longer IDs before transitioning; however, if you have not yet tested your systems for compatibility with the longer format, you still have the option to opt out and receive shorter IDs until early December 2016.
    ", + "title": "新的 AWS 帳號將會自動啟用 Long EC2 Resource ID" + }, + { + "id": "6422", + "body": "看到「Neural Doodle」這個專案,可以把塗鴉轉成帶有油畫筆觸的圖:\r\n\r\n\"\"\r\n\r\n看起來是實作新的演算法:\r\n\r\n
    Use a deep neural network to borrow the skills of real artists and turn your two-bit doodles into masterpieces! This project is an implementation of Semantic Style Transfer (Champandard, 2016), based on the Neural Patches algorithm (Li, 2016).
    \r\n\r\n另外一組範例:\r\n\r\n\"\"\r\n\r\n程式可以用純 CPU 跑,也可以用 GPU 跑,不管哪種都很吃記憶體 XDDD", + "title": "把塗鴉透過深度類神經網路轉成油畫..." + }, + { + "id": "6423", + "body": "Google 發表了三個 Hash 演算法的實作:「New algorithms may lower the cost of secure computing」。\r\n\r\n第一個是 SipHash 的加速實作,透過 AVX-2 指令集加速,看維基百科的資料,2011 後的 Intel/AMD CPU 似乎都有提供這組指令集:\r\n\r\n
    Our first hash function produces the same output as SipHash, but 1.5 times as quickly thanks to AVX-2 instructions.
    \r\n\r\n第二個是 SipHash 的改良版,但輸出不同 (所以不是 SipHash),但速度比 SipHash 更快:\r\n\r\n
    The second improvement uses j-lanes tree hashing to process multiple inputs in parallel, which is 3 times as fast. This technique is known to be secure, but produces different output than the original SipHash and is slightly slower for short inputs.
    \r\n\r\n第三個則是新的 Hash,速度比前兩者又更快了,但還需要有更多人分析才能確認安全性:\r\n\r\n
    HighwayHash is based on a new way of mixing inputs with just a few AVX-2 multiply and permute instructions. We are hopeful that the result is a cryptographically strong pseudorandom function, but new cryptanalysis methods might be needed for analyzing this promising family of hash functions. HighwayHash is significantly faster than SipHash for all measured input sizes, with about 7 times higher throughput at 1 KiB.
    \r\n\r\n三者的程式碼都可以在 GitHub 上的「google/highwayhash」找到,看 LICENSE 檔案是 Apache License 2.0。", + "title": "Google 發表了三個 Hash 演算法的實作" + }, + { + "id": "6424", + "body": "先前 MediaWiki 所提供的「變更通知」都只有在信件裡「通知」,而沒有在信件裡列出「改變的內容」,這使得讀信的人要再點進去看... (於是就懶的點了)\r\n\r\n而前陣子看到有人寫了 extension 來輸出 diff,解決了這個問題:「MediaWiki extension EmailDiff: notification emails improved」。\r\n\r\n信裡變成有這樣的內容:\r\n\r\n
    Version differences:\r\n@@ -846,5 +887,3 @@\r\n In cattle, temperament can affect production traits such as carcass and meat \r\n quality or milk yield as well as affecting the animal's overall health and \r\n-reproduction. Cattle temperament is defined as \"the consistent behavioral and physiological \r\n-difference observed between individuals in response to a stressor or environmental \r\n+reproduction. If you succeed in tipping a cow only partway, such that only one \r\n+of its feet is still on the ground, you have created lean beef. Such a feat is \r\n+well done. Naturally, being outside, the cow is unstable. When it falls over, \r\n+it becomes ground beef. Cattle temperament is defined as \"the consistent behavioral \r\n+and physiological difference observed between individuals in response to a stressor or environmental \r\n challenge and is used to describe the relatively stable difference in the behavioral \r\n predisposition of an animal, which can be related to psychobiological mechanisms.
    \r\n\r\n這樣可讀性高非常多,來找人裝看看好了...", + "title": "MediaWiki 的 EmailDiff 套件" + }, + { + "id": "6425", + "body": "大家都花很多力氣在讓行動裝置上的體驗更好...\r\n\r\n去年十月 WordPress 支援 Google 所發展出來的標準 AMP (Accelerated Mobile Pages):「Accelerating the Mobile Web」。\r\n\r\n而前陣子則支援了 Facebook 自家平台的標準 Facebook Instant Articles:「New: WordPress Plugin for Facebook Instant Articles」。\r\n\r\n用 WordPress 的人可以直接使用...", + "title": "WordPress 陸續推出了 AMP 與 Facebook Instant Article 的套件" + }, + { + "id": "6426", + "body": "V8 JavaScript 引擎宣佈支援 WebAssembly:「Experimental support for WebAssembly in V8」。\r\n\r\n依照說明,看起來在 Google Chrome 51 之後的版本 (目前是在 Chrome Canary) 可以打開 chrome://flags#enable-webassembly 啟用 WebAssembly 測試。\r\n\r\n目前還是只有想到電玩遊戲之類的用途...", + "title": "V8 JavaScript 引擎將支援 WebAssembly" + }, + { + "id": "6427", + "body": "Linode 宣佈從五月開始全面使用 KVM,新的機器將無法選擇 Xen:「KVM Update」。\r\n\r\n原有的 Xen 機器還是會繼續跑,但將會集中起來:\r\n\r\n
    Existing Xen-based Linodes will be fine. However, in the near future we will begin to consolidate Xen Linodes onto fewer physical servers, which will mean scheduled migrations with periods of downtime. Don’t worry – if you will be affected, we’ll provide plenty of advance notice when those migrations are planned.
    \r\n\r\nLinode 的 KVM 的確快不少,我猜也跟硬體升級有關吧,畢竟就其他單位看到的數據應該是沒有這麼高的幅度。", + "title": "Linode 將全面使用 KVM" + }, + { + "id": "6428", + "body": "Google 在「Securing the web, together」這邊展現了對 HTTPS 化的努力。這是 Google 所有服務的 HTTPS 比率:\r\n\r\n\"\"\r\n\r\n我以為 YouTube 上 HTTPS 後會有壓倒性的比率... 所以這應該不是 bytes 比率?", + "title": "Google 對 HTTPS 化的努力" + }, + { + "id": "6429", + "body": "在「Remote Code Execution in all git versions (client + server) < 2.7.1: CVE-2016-2324, CVE-2016‑2315」這邊看到歡樂的 CVE-2016-2315CVE-2016-2324,屬於 RCE 類漏洞。\r\n\r\nGit 2.7.1 之前的所有版本都有問題,看起來由於問題過於大條,在 2016/02/06 發表的「Git v2.7.1 Release Notes」沒有標出這兩個 CVE,讓所有 vendor 有時間升級。\r\n\r\n不過看起來 GitLab 不在被通知的 vendor 裡面,很無奈的在 CVE 公開後馬上推出新版,需要升級到最新版本:「GitLab 8.5.7 Released」。", + "title": "Git 的安全性問題" + }, + { + "id": "6430", + "body": "花了七年時間研究後,1993 年第一次發表,到 1994 年完整的證明了費馬最後定理,終於讓他拿到這個獎項了:「Professor wins $700k for solving 300-year-old math equation」,Abel Prize 的官方公告在「Sir Andrew J. Wiles receives the Abel Prize」這裡。\r\n\r\n\"\"\r\n\r\nField Medal 與 Abel Prize 是數學領域的兩個最高獎項。\r\n\r\n由於 Fields Medal 有 40 歲的限制,而 Andrew Wiles 在成功證明最後定理是 1994。由於他出生於 1953,也就是說當他成功證明時已經超過 40 歲,無緣獲頒 Fields Medal,在 Abel Prize 成立後就有不少人覺得遲早會讓他拿到... 而 2016 年總算讓他拿到了。", + "title": "Andrew Wiles 以費馬最後定理獲得 2016 Abel Prize" + }, + { + "id": "6431", + "body": "Google 決定加倍對 Chromebook 訪客模式下攻陷系統的獎金:「After 0 successful submissions, Google doubles top reward for hacking a Chromebook to $100,000」。\r\n\r\n原先是五萬美金:\r\n\r\n
    Last year, Google introduced a $50,000 reward for the persistent compromise of a Chromebook in guest mode. The company’s security team says it hasn’t received a single successful submission.
    \r\n\r\n提升到十萬美金:\r\n\r\n
    As such, Google has doubled the bounty, which was already the top Chrome reward, to $100,000. The company really wants someone to hack Chrome OS to pieces. “That said, great research deserves great awards, so we’re putting up a standing six-figure sum, available all year round with no quotas and no maximum reward pool,” Google declared.
    ", + "title": "Google 加倍對 Chromebook 訪客模式的攻擊獎金" + }, + { + "id": "6432", + "body": "雖然才 Beta 1,但 OpenSSL 先放出 1.1.0 的 Release Notes 了:「OpenSSL 1.1.0 Series Release Notes」。\r\n\r\n有幾個新的功能以及重大的改變,包括了對 ChaCha20Poly1305 的支援,並且把 SSLv2、RC4、所有 40bits 與 56bits 的 cipher 拔掉,然後支援 Certificate Transparency。\r\n\r\n讓人頗期待... 不知道來不來得及跟上 Ubuntu 16.04?", + "title": "OpenSSL 1.1.0 的 Release Notes 先放出來了 (現在是 Beta 1)" + }, + { + "id": "6434", + "body": "AWS 正式向所有使用者開放「AWS Database Migration Service」了:「AWS Database Migration Service」。\r\n\r\nAWS 把前置作業 (setup & initial backup) 與 replication 的部份都包好,讓使用者可以很輕鬆的轉移。\r\n\r\n\"\"\r\n\r\n支援的來源資料庫種類包括了這五種:\r\n\r\n
    Supported database sources include: (1) Oracle, (2) SQL Server, (3) MySQL, (4) Amazon Aurora and (5) PostgreSQL. All sources are supported on-premises, in EC2, and RDS except Amazon Aurora which is available only in RDS.
    \r\n\r\n支援的目的資料庫種類也包括了這五種:\r\n\r\n
    Supported database targets include: (1) Amazon Aurora, (2) Oracle, (3) SQL Server, (4) MySQL, and (5) PostgreSQL. All Oracle, SQL Server, MySQL and Postgres targets are supported on-premises, in EC2 and RDS.
    \r\n\r\n所以不只可以搬進 AWS,也透過在 EC2 instance 上架 Proxy 的方式搬出 AWS。比較特別的是可以不同 database 互轉?這好像可以玩玩看...\r\n\r\n轉移的機器包括 t2.* 與 c4.* 兩種,一般來說 t2 系列的機器應該夠用,但如果要拼轉移速度的話可以拿 c4 出來撐場面。", + "title": "AWS Database Migration Service" + }, + { + "id": "6435", + "body": "GitHub 宣佈支援 HTTP Code 451 了:「The 451 status code is now supported」。也就是 RFC 7725 的「An HTTP Status Code to Report Legal Obstacles」。\r\n\r\n目前會把因為 DMCA takedown notice 下架的內容以 HTTP Code 451 標出:\r\n\r\n
    The GitHub API will now respond with a 451 status code for resources it has been asked to take down due to a DMCA notice.
    \r\n\r\nHTTP Code 451 的點子出自「華氏 451 度」這本書,表示紙的燃點。", + "title": "GitHub 支援 HTTP Code 451 了..." + }, + { + "id": "6436", + "body": "在「No More Full-Table Vacuums」這邊提到了 PostgreSQL 在 vacuum 時效能的大幅改善,尤其是大型資料庫在 vacuum 時需要對整個表格從頭到尾掃一次以確保 transaction id 的正確性:\r\n\r\n
    Current releases of PostgreSQL need to read every page in the database at least once every 2 billion write transactions (less, with default settings) to verify that there are no old transaction IDs on that page which require \"freezing\".
    \r\n\r\n這動作在資料量大的機器上就會吃大量資源導致各種討厭的現象:\r\n\r\n
    All of a sudden, when the number of transaction IDs that have been consumed crosses some threshold, autovacuum begins processing one or more tables, reading every page. This consumes much more I/O bandwidth, and exerts much more cache pressure on the system, than a standard vacuum, which reads only recently-modified page.
    \r\n\r\n而作者送了 patch 改成只會讀還沒搞定的部份:\r\n\r\n
    Instead of whole-table vacuums, we now have aggressive vacuums, which will read every page in the table that isn't already known to be entirely frozen.
    \r\n\r\n要注意的是,agreesive vacuum 相較於 vacuum 會多吃很多資源,但可以打散掉 (有點像一次大 GC 導致 lag 與多次 minor GC 讓程式反應時間變得比較順暢的比較):\r\n\r\n
    An aggressive vacuum still figures to read more data than a regular vacuum, possibly a lot more. But at least it won't read the data that hasn't been touched since the last aggressive vacuum, and that's a big improvement.
    \r\n\r\n這個功能預定在 PostgreSQL 9.6 出現,不知道會不會變 default...", + "title": "PostgreSQL 對 Vacuum 效能的改善" + }, + { + "id": "6437", + "body": "Stack Overflow 對開發者發問卷後把結果整理出來了:「Stack Overflow Developer Survey 2016 Results」,約 56k 個樣本數:\r\n\r\n
    This year, 56,033 coders in 173 countries answered the call.
    \r\n\r\n整個問卷分成五塊區域:Overview、Developer Profile、Technology、Work、Community,其中 Overview 的部份是給時間不多的人看的,整理了一些比較特別或是有趣的重點:\r\n\r\n
    Most developers prefer dogs to cats. (But not developers in Germany.)
    \r\n\r\n(唔?)\r\n\r\n要注意的是,問卷只有英文版本,所以這份問卷明顯對於英文非母語的開發者會有比較低的填寫意願,會造成統計偏差問題,所以在讀之前要注意到:\r\n\r\n
    Surveys aren’t perfect. While our large sample size helps offset some biases, it’s still biased against devs who don't speak English, or who don't like taking English-language surveys.
    \r\n\r\n另外是有女性對這份問卷表示不滿:「Stack Overflow’s developer survey analysis hurts women」,尤其是 Stack Overflow 標示了只有 5.8% 的女性,這會導致女性樣本數在答案細分族群時的統計偏差的問題會很嚴重。\r\n\r\n另外這篇文章的作者也對 Stack Overflow 裡的結論很不滿意。\r\n\r\n回到原來文章,有些東西還蠻有趣的:\r\n\r\n\r\n\r\n其中 Salary 這段應該是很多人都有動力去讀一讀了解的,裡面還包括了各地區與麥當勞的大麥克指數的相對數值分析,讓你有個參考值可以感覺。", + "title": "Stack Overflow 做的 Developer Survey 2016" + }, + { + "id": "6438", + "body": "在經過最近 FBIApple 的戰鬥中 (FBI–Apple encryption dispute),Apple 正規劃把 iCloud 加密所使用的 key 放到用戶端裝置上,而非放在伺服器端:「Apple to Hand iCloud Encryption Key Management to Account Holders」:\r\n\r\n
    In effect, Apple is following the lead of secure cloud services such as SpiderOak which has been offering what it calls “Zero Knowledge” cloud storage. By that, SpiderOak retains no information about whatever is stored in its cloud service, nor the means of gaining access to it.
    \r\n\r\n也就是加解密都放在 client 端處理,server 端只是 storage。\r\n\r\n這類型最大的問題是 server 端沒辦法運用資料,但 iCloud 的確可以放掉這些功能 (搜尋之類的),純粹當 storage 使用,藉以讓使用者自己裝置保護。\r\n\r\n而蘋果在使用者的裝置上把類似於 HSM 的系統做的頗強大... 不知道 Android 有沒有機會也跟進。(雖然我自己是用 Apple 家的東西...)", + "title": "Apple 打算把 iCloud 加密用的 Key 放到用戶端" + }, + { + "id": "6439", + "body": "看到 Google 推出 BinDiff 時以為是某種對 binary 檔案產生類似 diff 結果的軟體 (像是 bsdiff 這樣的東西),仔細看才發現是跟資安有關的東西:「BinDiff now available for free」。\r\n\r\n可以用在只有 binary 的情況下,快速找出有哪些 assembly code 有差異,進而讓人可以更快的分析。資安分析可以透過這個工具加速。相同的,也可以透過這個工具看出 vendor patch 實際上修了什麼東西:\r\n\r\n
    BinDiff is a comparison tool for binary files that helps to quickly find differences and similarities in disassembled code. It is used by security researchers and engineers across the globe to identify and isolate fixes for vulnerabilities in vendor-supplied patches and to analyze multiple versions of the same binary.
    \r\n\r\n而另外一個用途則是快速分類,把相同的 malware 集合起來,降低重複分析的時間:\r\n\r\n
    Another common use case is to transfer analysis results from one binary to another, helping to prevent duplicate analyses of, for example, malware binaries.
    \r\n\r\n目前支援的 assembly 指令集包括了這些:\r\n\r\n
    Compare binary files for x86, MIPS, ARM/AArch64, PowerPC, and other architectures.
    \r\n\r\n從原始文章可以看到還有 flowchart 分析:\r\n\r\n\"\"\r\n\r\n不過這是配合其他 Hex-Rays IDA 的 Professional 版本產生的結果分析,官網報價一套是 USD$1129。\r\n\r\n
    To use it, you also need the commercial Hex-Rays IDA Pro disassembler, 6.8 or later.
    ", + "title": "Google 推出 BinDiff 分析惡意軟體" + }, + { + "id": "6440", + "body": "在「造福同人,吉卜力使用的动画制作软件宣布开源化」這邊看到的,搜了一下相關的新聞,可以在「Open-Source Animation Production Software OpenToonz Available March 26」看到說明。\r\n\r\n而「アニメーション制作ツールの オープンソースプロジェクト」這邊也有相關的消息,預定在 3/26 舉辦的 AnimeJapan 2016 有進一步的發表,到時候再來追進度...", + "title": "吉卜力將放出作畫所使用的軟體原始碼" + }, + { + "id": "6442", + "body": "NASAJPL 回答了他們所使用的圓周率:「How Many Decimals of Pi Do We Really Need?」。\r\n\r\n答案是小數下十五位:\r\n\r\n
    For JPL's highest accuracy calculations, which are for interplanetary navigation, we use 3.141592653589793.
    \r\n\r\n先拿目前離地球最遠的人造物 Voyager 1 來舉例,約 201 億公里 (125 億英里) 的距離,使用這個小數下 15 位的圓周率,與實際的圓周率算出來的誤差只有 3.81 公分 (1.5 英寸):\r\n\r\n
    The most distant spacecraft from Earth is Voyager 1. It is about 12.5 billion miles away.
    \r\n\r\n
    It turns out that our calculated circumference of the 25 billion mile diameter circle would be wrong by 1.5 inches. Think about that. We have a circle more than 78 billion miles around, and our calculation of that distance would be off by perhaps less than the length of your little finger.
    \r\n\r\n另外還舉了地球與整個宇宙的數字來計算,需要的精確度沒有想像中那麼大 XD", + "title": "NASA 的 JPL 回答「你們用的圓周率是 3.14 嗎?」的問題" + }, + { + "id": "6443", + "body": "從 Bruce Schneier 這邊看到的:「Companies Handing Source Code Over to Governments」。\r\n\r\n直接對員工下法院命令,並且不得告知任何其他人有這個命令 (包括 CEO):\r\n\r\n
    These orders are so highly classified that simply acknowledging an order's existence is illegal, even a company's chief executive or members of the board may not be told. Only those who are necessary to execute the order would know, and would be subject to the same secrecy provisions.
    \r\n\r\n跟中國企業的情況類似。", + "title": "美國政府應該已經取得大量原始程式碼,而且 CEO 不知情" + }, + { + "id": "6444", + "body": "Google 對於國際電話號碼格式常見誤解的說明:「Falsehoods Programmers Believe About Phone Numbers」。\r\n\r\n先看最後一個:\r\n\r\n
    15. Phone numbers are always written in ASCII\r\nIn Egypt, it is common for phone numbers to be written in native digits.
    \r\n\r\n電話號碼不是 ASCII 可以搞定的喔!!!然後你就可以理解沒什麼是不可能的 XDDD\r\n\r\n這個系統是靠各種 backward compatible workaround 堆出來的,你覺得的假設通通會被推範 XDDD", + "title": "Google 對國際電話號碼格式常見誤解的說明" + }, + { + "id": "6445", + "body": "看到「Diablo - Game Concept by Condor, Inc.」這份 PDF 文件,講 1996 年年底 (12/31) 發表的 Diablo,超級經典的遊戲。\r\n\r\n文件上可以看到這是 1994 年的紙本文件 (居然已經 22 年前了),最後面還有時程表,所以感覺起來應該是內部的紙本文件?這個經典到不行的遊戲只用了一年開發...\r\n\r\n剛剛看英文版維基百科,最後面的連結已經加上這份資料了...", + "title": "暗黑破壞神 Diablo 的 Game Concept 文件" + }, + { + "id": "6446", + "body": "Google 宣佈他們開始收 Untrusted CA 的 Certificate Transparency 記錄:「Certificate Transparency for Untrusted CAs」,主要是這兩種 CA:\r\n\r\n\r\n\r\n也就是被幹掉的,以及申請中的... 這樣可以後續追蹤很多東西。", + "title": "Certificate Transparency 開始紀錄 Untrusted CA" + }, + { + "id": "6447", + "body": "這幾天還蠻歡樂的新聞,StartSSL 的認證過程出包,可以用任何 email 收認證信:「StartSSL Domain validation (Vulnerability discovered).」。直接看這張圖就好:\r\n\r\n\"\"\r\n\r\n這樣傳不是問題 (因為你還是可以在 server 端再確認一次),而是改了會動 (樂):\r\n\r\n\"\"\r\n\r\n這家公司最近傳出好多負面新聞... (啊,我把他們家的 root certificate 標成 untrusted 一陣子了 XD)", + "title": "StartSSL 的認證出包" + }, + { + "id": "6448", + "body": "PostgreSQL 9.6 將會支援 Parallel Aggreation,在多 CPU core 下 aggreation operation 單一 query 的平行化效能改善 (改善非常多):「pgsql: Support parallel aggregation.」:\r\n\r\n
    Parallel workers can now partially aggregate the data and pass the transition values back to the leader, which can combine the partial results to produce the final answer.
    \r\n\r\n在「Parallel Aggregate – Getting the most out of your CPUs」這邊有測試 worker 數量與執行的速度差異:\r\n\r\n
    We performed some tests on a 4 CPU 64 core server with 256GB of RAM using TPC-H @ 100 GB scale on query 1. This query performs some complex aggregation on just over 600 million records and produces 4 output rows.
    \r\n\r\n由於是 64 cores,所以作者測 1 到 64 workers 的效能,這是測試出來的結果:\r\n\r\n\"\"\r\n\r\n要注意 Y 軸是對數比例,紅色是理論值,藍色是實際值,可以看出來平行化的效能頗不錯,雖然開到 64 workers 時效率已經不到一半了。\r\n\r\n這對離鋒時間的報表運算超好用啊...", + "title": "PostgreSQL 的 Parallel Aggreation" + }, + { + "id": "6449", + "body": "Markdown 的 RFC:「The text/markdown Media Type」。\r\n\r\n
    This document registers the text/markdown media type for use with Markdown, a family of plain-text formatting syntaxes that optionally can be converted to formal markup languages such as HTML.
    \r\n\r\n雖然是 Category: Informational,但有個標準後是不是有機會在瀏覽器裡面原生支援?", + "title": "RFC 7763:text/markdown" + }, + { + "id": "6451", + "body": "Google 推出了 Speech API:「Speech API - Speech Recognition」。\r\n\r\n檔案與 Streaming 都可以辨識,另外有處理噪音與雜音的部份。現在是 Limited Preview 期間不收費,但要申請。之後成為正式服務才會放價錢出來...", + "title": "Google 推出語音辨識的 API" + }, + { + "id": "6452", + "body": "就是車商的那個 Audi 打算在 New York International Auto Show 上惡搞無線網路,推銷自家的 A4:「Audi is trolling the competition with its Wi-Fi at the New York Auto Show」。\r\n\r\n\"\"\r\n\r\n據說再過幾天就會知道實際情況了...", + "title": "Audi 準備在 New York International Auto Show 上惡搞無線網路" + }, + { + "id": "6453", + "body": "前幾天發佈了 Windows 與 Samba 共同有的安全性問題,叫做 Badlock:「Hype Around the Mysterious ‘Badlock’ Bug Raises Criticism (WIRED)」。但這個 bug 在 4/12 前不會公佈:\r\n\r\n
    On April 12th, 2016, a crucial security bug in Windows and Samba will be disclosed. We call it: Badlock.
    \r\n\r\n長達三個禮拜的時間可以讓其他人找出問題是很罕見的,主要是因為這已經提供足夠多資訊去挖掘。名稱叫做 Badlock,看起來是某種 lock + race condition 造成的,而 Windows 與 Samba 同時都有問題,應該是 Microsoft 與 Samba 合作後的程式碼,或是某種 protocol workflow 的問題造成的。\r\n\r\n
    It's especially interesting in this case since we have a name \"Badlock\" so we know it probably involves locking. We know it affects Samba and Windows. And we know who it was found by so we can look at which bits of Samba they've been working on lately. That's a lot of information for a clever person.
    \r\n\r\n我預期這三個禮拜內應該就會有人公佈,目前的資訊真的太多了。更糟糕的有可能不是發 0-day exploit,而是這個漏洞進入黑市被利用。\r\n\r\n先發表有漏洞,再給三個禮拜讓 vendor patch 的行為,看起來就是研究團隊為了出名造勢,而搞砸真正的資安問題。", + "title": "Badlock 安全性問題同時影響 Windows 與 Samba" + }, + { + "id": "6454", + "body": "ScyllaDBCassandra 的 C++ 相容版本,效能比起 Java 版本的好不少 (尤其是與 CPU 與記憶體有關的部份)。\r\n\r\nScyllaDB 的人上個月給了一份指南,主要是在講在 Amazon EC2 上怎麼選 instance type 跑 NoSQL (主要還是針對 ScyllaDB 的情境下分析)。不過道理是通的:「Choosing EC2 instances for NoSQL」。\r\n\r\n\"\"\r\n\r\n不同於 Cassandra 比較容易吃到 CPU bound,ScyllaDB 比較容易吃到 i/o bound,所以 i/o 的效能對於選擇 instance type 重要許多。\r\n\r\n後面也有提到 instance size 的問題 (八台 xlarge 還是一台 8xlarge),不過感覺沒有給很清楚的方向。一般來說,分散式資料庫之間溝通還是有不少成本在,另外文章裡也提到同一台實體機器的鄰居造成 i/o noise 的問題,看起來在經濟規模夠大的情況下,開到最大台才是王道啊?", + "title": "資料庫在 EC2 上選擇 Instance Type 的方向" + }, + { + "id": "6455", + "body": "DockerMac OS XWindows 上開始支援其他的 VM Host 了:「Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop」。\r\n\r\n之前在 Mac OS X 與 Windows 上必須使用 VirtualBox 跑一個 Linux Host 起來,而現在可以用 xhyveHyper-V,另外剛剛發現 Linux 的部份也換到 Alpine Linux 上了 (不知道是不是這次才換的):\r\n\r\n
    Faster and more reliable: no more VirtualBox! The Docker engine is running in an Alpine Linux distribution on top of an xhyve Virtual Machine on Mac OS X or on a Hyper-V VM on Windows, and that VM is managed by the Docker application. You don’t need docker-machine to run Docker for Mac and Windows.
    ", + "title": "Docker 在 Mac 與 Windows 上使用 xhyve 與 Hyper-V" + }, + { + "id": "6457", + "body": "CloudWatch 可以監視 EC2 instance 的封包數量了:「Announcing New CloudWatch Metrics for EC2 Instances」:\r\n\r\n
    The new metrics are NetworkPacketsIn and NetworkPacketsOut. These new metrics provide insight into the number of network packets flowing to and from an EC2 instance.
    \r\n\r\n這樣對照流量時就可以知道平均封包大小了...", + "title": "CloudWatch 可以看 EC2 Instance 的封包進出數量了" + }, + { + "id": "6458", + "body": "用很簡單的設備透過 Side Channel 攻擊取得 ECDSA private key:「ECDSA Key Extraction from Mobile Devices via Nonintrusive Physical Side Channels」。這次 Side Channel 只需要簡單的線圈,透著一塊玻璃也 okay:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n文章裡面提到是 Tracker Pre,查了一下二手價是 USD$80:\r\n\r\n\"\"\r\n\r\n這邊抓出了 ADD 產生出的訊號:\r\n\r\n\"\"\r\n\r\n然後就可以利用這些訊號重建出 private key:\r\n\r\n
    After observing the elliptic-curve DOUBLE and ADD operations during a few thousand signatures, the secret signing key can be completely reconstructed.
    \r\n\r\n下面中獎的 library 有點多,可以看到主要是以 constant-time implementation 或是 side-channel mitigation technique 來解這個問題。", + "title": "對 ECDSA 實體非破壞性的 Side Channel 攻擊" + }, + { + "id": "6459", + "body": "這篇文章講到最近密碼系統的現象:「On the Impending Crypto Monoculture」。\r\n\r\n目前常在用的密碼系統包括了 RSA、DH、ECDH、ECDSA、SHA-2、AES 這些演算法,而最近這幾年大家在推廣使用的演算法都出自於同一個人手裡,Dan Bernstein,也就是 djb:\r\n\r\n
    A major feature of these changes includes the dropping of traditional encryption algorithms and mechanisms like RSA, DH, ECDH/ECDSA, SHA-2, and AES, for a completely different set of mechanisms, including Curve25519 (designed by Dan Bernstein et al), EdDSA (Bernstein and colleagues), Poly1305 (Bernstein again) and ChaCha20 (by, you guessed it, Bernstein).
    \r\n\r\n這些演算法或是定義,包括了 Curve25519、EdDSA、Poly1305、ChaCha20。而這篇文章試著說明造成這樣情況的背景以及原因,以及這樣會導致什麼問題。\r\n\r\n當實際分析時會發現,檯面上沒幾個能用的演算法,而看起來能用的那幾個又有專利 (像是 OCB),不然就是看起來被 NSA 放了一些說明不了的參數 (像是 P-256 Curve)。\r\n\r\n然後 djb 弄出來的演算法不只看起來乾淨許多,也直接用數學模型證明安全性。而且他的實作也很理論派,像是還蠻堅持要做到 constant time implementation 以避開各種 side channel attack。\r\n\r\n就... 理論很強,又很實戰派的一個人啊,檯面上真的沒幾隻可以打的贏啊 XD", + "title": "密碼系統的 Monoculture" + }, + { + "id": "6460", + "body": "Mark Litwintschik 最近在連載 A Billion Taxi Rides 的資料分析系列作品:\r\n\r\n\r\n\r\n同樣的資料 (而且這個資料量夠大,拿來 benchmark 比較有參考價值),用不同的工具分析,對於要挑工具的人可以看一看,另外也因為裡面給了很多 command sample,要自己動手測試也是個很棒的資料...", + "title": "A Billion Taxi Rides 資料分析系列" + }, + { + "id": "6461", + "body": "在「These unlucky people have names that break computers」這邊看到了這個故事,Jennifer Null 因為 \"Null\" 而導致在很多電腦系統上出錯,這讓我想到這個經典的 xkcd 笑話:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n滿滿的 SQL injection 的味道 XDDD", + "title": "Jennifer Null 的故事..." + }, + { + "id": "6462", + "body": "讓人頗意想不到的新聞,NTT Data 買下 Dell 的 IT 服務產品線:「Dell to sell Perot Systems unit to NTT Data at loss of $800 million」。\r\n\r\n大家的解讀都是跟 EMC 併購案有關:\r\n\r\n
    Dell, which went private in 2013, is trying to raise money as it prepares to complete a $67 billion acquisition of EMC.
    \r\n\r\nNTT Data 會去買則是為了擴展海外業務,NTT Data 官方的新聞稿在這:「NTT DATA to Acquire Dell Services, Accelerating the Company's Position as a Leading Global IT Services Partner」。", + "title": "Dell 把 IT 服務產品線賣給 NTT Data" + }, + { + "id": "6463", + "body": "在「Malware scam appears to use GPS data to catch speeding Pennsylvania drivers」這邊看到新的詐騙方式。\r\n\r\n手機的 malware app (藏有惡意程式的 app) 會要求 GPS 資料 (現在智慧型手機上 app 的常態),而當 malware app 偵測到你超速時,詐騙集團就會發出假的超速罰單,像是這樣:\r\n\r\n
    From: Speeding Citation\r\nTo: (Accurate Email Removed)\r\nDate: 03/11/2016 03:08 PM\r\nSubject: [External] Notification of excess speed\r\nFirst Name: (Accurate Name removed)\r\nLast Name: (Accurate Name removed)\r\nNotification of excess speed\r\nRoute: (Accurate Local Township Road –removed)\r\nDate: 8 March 2016\r\nTime: 7:55 am\r\nSpeed Limit: 40\r\nDetected Speed: 52\r\nThe Infraction Statement contains an image of your license plate and the citation which must be paid in 5 working days.
    \r\n\r\n文章提用的標語「ACCURATE SPEEDING DATA, FAKE EMAIL」好讚... XD", + "title": "結合 Malware 與 Social Engineering 的詐騙" + }, + { + "id": "6464", + "body": "前陣子看到的這篇報導,在討論大規模的監控帶來的影響:「Mass surveillance silences minority opinions, according to study」。而 Bruce Schneier 這幾天也提到了這個問題:「Mass Surveillance Silences Minority Opinions」。\r\n\r\n原始的論文出自「Under Surveillance: Examining Facebook's Spiral of Silence Effects in the Wake of NSA Internet Monitoring」這邊。\r\n\r\n論文作者從 Facebook 上的行為來分析,說明大規模的監控會使得少數意見不敢發聲,對於社會多元性的負面影響。", + "title": "大規模監控會無形壓抑少數意見" + }, + { + "id": "6465", + "body": "Amazon Redshift 的這個功能等了好久啊,之前都要自己指定 key 與 secret,不只讓程式寫起來變麻煩,安全性也一直是個問題:「Amazon Redshift now supports using IAM roles with COPY and UNLOAD commands」。\r\n\r\n之前的指令是:\r\n\r\n
    COPY ... FROM ... WITH CREDENTIALS 'aws_access_key_id=access-key-id;aws_secret_access_key=secret-access-key' ...
    \r\n\r\n現在都可以透過 IAM Role 省下這些功夫...", + "title": "Amazon Redshift 可以透過 IAM Role 直接 COPY 與 UNLOAD 了" + }, + { + "id": "6466", + "body": "Git 推出新版的時候,幾家 Git Hosting 都會撰文寫一些重要的進展,像是 GitHub 這次的內容:「Git 2.8 has been released」。\r\n\r\nGitHub 這次說明平行下載的範例直接清楚表示出來功能:\r\n\r\n
    git fetch --recurse-submodules --jobs=4
    \r\n\r\n用 Google 找了一個 .gitmodules 裡面有很多筆的 repository 測了一下,的確是快了不少...", + "title": "Git 2.8 的平行下載 submodule 加速" + }, + { + "id": "6468", + "body": "目前普遍的認知是 Facebook 的佔有率與使用率在年輕族群愈來愈低,不過 2015 年十二月的資料給了相反的方向:「Are Young People Leaving Facebook? Not Even Close. (Chart)」。\r\n\r\ncomScore 最近提出的報告書「2016 U.S. Cross-Platform Future in Focus」裡面:\r\n\r\n\"\"\r\n\r\n可以會發現,Facebook 的 Reach Rate 與 MAU 都遠遠超越其他對手,甚至連 MAU 除以 Reach Rate 的值也是最高的一個等級 (表示每個人平均每個月使用的次數,可以看做是活躍率),跟 Snapchattumblr 差不多?", + "title": "Facebook 在 18-34 的佔有率與使用率" + }, + { + "id": "6469", + "body": "首先 CloudFlare 先發了一篇「The Trouble with Tor」批判 Tor 的問題,然後是 Tor 這邊發了一篇「The Trouble with CloudFlare」反擊。\r\n\r\n首先先提到兩邊數字的落差,也就是 Tor 這邊提到的:\r\n\r\n
    2) External research has found that CloudFlare blocks at least 80% of Tor IP addresses, and this number has been steadily increasing over time.
    \r\n\r\n落差很明顯在於 CloudFlare 拿到的數字是「自己實際的數字」,而第三方研究是用各種方法推估出來的數字。就像很多單位都在推估 Facebook 或是 Twitter 的數字,然後你拿第三方研究的報告去反戳 Facebook 說你們數字不準的感覺...\r\n\r\n另外一方面,CloudFlare 其實也沒什麼想要解決 Tor 的問題,只是想要拋出來轉移焦點,這點在 Tor 這篇也有提到:\r\n\r\n
    1) CloudFlare uses an IP reputation system to assign scores to IP addresses that generate malicious traffic.
    \r\n\r\nCloudFlare 其實覺得 IP-based 的評價系統就很好用,並沒有想要解決 Tor 的問題。丟出來的幾個方案都是現成的,另外也反過來要求 Tor 加強 hidden service 的安全性。\r\n\r\nHidden service 以現在的角度來看的確已經不太安全 (因為 SHA-1 160bits,然後又切一半當 hostname 的關係),但跟你 IP-based 評價系統有什麼關係啊...\r\n\r\n兩邊還有得吵...", + "title": "CloudFlare 與 Tor 之間的戰爭..." + }, + { + "id": "6471", + "body": "KeyCDN 的「Resource Hints – What is Preload, Prefetch, and Preconnect?」這篇文章介紹了 Preload、Prefetch 與 Preconnect 這三者的差異。\r\n\r\nPreconnect 從字面上看就很好理解,而 Preload 與 Prefetch 最大的差異:\r\n\r\n
    Preload is different from prefetch in that it focuses on current navigation and fetches resources with high-priority.
    \r\n\r\n主要在 priority 的差異。", + "title": "Preload、Prefetch 與 Preconnect 的差異" + }, + { + "id": "6472", + "body": "跟 AWS 的「AWS Public Data Sets」一樣,Google Cloud Platform 也提供了類似的服務給使用 Google BigQuery 的人使用:「Google BigQuery Public Datasets」。\r\n\r\n目前資料看起來比較少 (因為最近才建立),包括了這六個項目:\r\n\r\n\r\n\r\n在「Other Public Datasets」的地方就是不寫 AWS 的... XD", + "title": "Google BigQuery 提供的 Public Datasets" + }, + { + "id": "6473", + "body": "在「BMW *are* complying with the GPL」看到的,BMW 的車上軟體有用到 LGPL v2.1 的軟體,於是在車上的電腦可以翻到版權宣告:\r\n\r\n\"\"\r\n\r\n於是作者就去要 source code,並且在 Twitter 上記錄:\r\n\r\n

    As a follow up to last week's blog post.
    BMW are going to ship me a copy of the source code.https://t.co/ThTtj53u53 pic.twitter.com/KWA0wFCGcR

    — Terence Eden ⏻ (@edent) March 14, 2016
    \r\n\r\n\r\n兩個禮拜後,他拿到一封信與一張 DVD:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n然後他把這份光碟的內容放上 GitHub:「All the Open Source Software provided by BMW for their i3」。", + "title": "BMW 遵守 LGPL v2.1 的方法" + }, + { + "id": "6474", + "body": "如標題所說的,現在 Apple 的團隊決定提供測試版本的 binary 了:「Introducing Safari Technology Preview」。可以在「Safari Technology Preview」下載到,版號從 1 開始跳 XD\r\n\r\n類似於 Google ChromeFirefox 的 channel 機制,開另外一條線讓大家玩新東西。", + "title": "Safari 也有測試版本了" + }, + { + "id": "6475", + "body": "Netcraft 因為有一套系統在觀察整個 internet 的架構,有時後會整理出一些有趣的東西,像是這次整理出來的 HPKP,就找出很多設定上的錯誤:「HTTP Public Key Pinning: You’re doing it wrong!」。\r\n\r\n抓了一下列出來哪些:\r\n\r\n", + "title": "HPKP (HTTP Public Key Pinning) 常見的錯誤" + }, + { + "id": "6476", + "body": "GitHub 推出一個超級重要的功能,確認 GPG sign 的正確性:「GPG signature verification」。\r\n\r\n\"\"\r\n\r\n之前被同事複製了一份 .gitconfig.gitconfig.local 後沒有修改裡面的內容,結果我在收到 diff mail 的時候看了半天想說「我什麼時候寫出這樣的 code」... -_-\r\n\r\n不知道什麼時候會有「擋沒有 GPG sign」的功能,有的話就更好了 :o", + "title": "GitHub 支援 GPG sign" + }, + { + "id": "6477", + "body": "目前 PHP 上最重量級的軟體,Composer,推出 1.0 版了:「Composer goes Gold」。\r\n\r\n然後作者女朋友想到奇怪的點子:\r\n\r\n
    My girlfriend had a brilliant idea, and a few days and a couple express deliveries later here we are. We made an actual Composer gold master copy of the 1.0 release, on a floppy!
    \r\n\r\n\"\"\r\n\r\n這張黃金磁片在 eBay 上競標中 XDDD", + "title": "PHP 的 Composer 推出 1.0 版" + }, + { + "id": "6480", + "body": "在「Frequently Asked Questions About Compliance in the AWS Cloud」這邊 AWS 的人列出一張表,提供了 AWS 目前所通過的認證以及證書資料。\r\n\r\n舉例來說,在「ISO 27001 Compliance」這邊就有提供證書的 PDF 版本:「https://d0.awsstatic.com/certifications/iso_27001_global_certification.pdf」。\r\n\r\n但也有一些證書是沒有給出來的,應該是要另外跟 AWS 要...", + "title": "AWS 通過的認證的證書資料連結" + }, + { + "id": "6481", + "body": "在 Hacker News Daily 上看到在 terminal 下的 email client,Mutt,推出 1.6 版了...\r\n\r\n上次出版是 June 9, 2007,八年多前因為 CVE-2007-2683CVE-2007-1558 而更新的。\r\n\r\n雖然 DebianUbuntu 的 apt repository 都是跟 1.5.x 版,但還是很值得紀念一下 XDDD", + "title": "Mutt 1.6 出版,距離上個穩定版本八年多了..." + }, + { + "id": "6482", + "body": "在 Hacker News Daily 上看到三年前的舊文章,講自適應演算法取代常見的 A/B testing:「20 lines of code that will beat A/B testing every time」。\r\n\r\n就拿原文裡面的例子來說明,我想要測試 \"Buy Now!\" 這個按鈕的顏色來得知哪個顏色的 click rate 最高,而我有 Orange、Green 以及 White 三種顏色為候選。\r\n\r\n一開始我初始值都設為「展示了 1 次,被點擊了 1 次」,所以每個點擊率都是 100%:\r\n\r\n\r\n\r\n\r\n
    OrangeGreenWhite
    1/1 = 100%1/1=100%1/1=100%
    \r\n\r\n然後你的網站上只要展示「點擊率最高的那個顏色」,並且記錄下來展示次數與點擊率就好,而整個過程會是自適應而被自動被淘汰掉,最後可能會變成這樣,就會固定是綠色的了:\r\n\r\n\r\n\r\n\r\n
    OrangeGreenWhite
    114/4071 = 2.8%205/6385=3.2%59/2264=2.6%
    \r\n\r\n而這樣做的好處是節省人力成本:你不需要 A/B Testing 完後再人工介入修改。\r\n\r\n對於更複雜的例子,雖然原文沒有提到,但你可以直接展開來做,舉例來說,你假設顏色與地區兩個變數所帶出來的 click rate 不是 i.i.d.,那麼你可以針對每個 Color + Region 都存數值去比較。\r\n\r\n當然還是有他的問題 (comment 有提到),不過可以架出一些全自動的 workaround 來解決,比起要兩階段人工介入省了不少人力。\r\n\r\n另外可以想像在大的產品上會遇到效能問題 (因為對同樣資料大量的 read + write),但這個數字不需要太即時,只要量大就會準確,所以技術上也可以解決...", + "title": "自適應演算法與 A/B Testing" + }, + { + "id": "6483", + "body": "AWS 宣佈 Lambda 支援 Node.js 4.3:「AWS Lambda Supports Node.js 4.3」:\r\n\r\n
    You can now develop your AWS Lambda functions using Node.js 4.3.2 in addition to Node.js 0.10.4.
    \r\n\r\n另外同步在「Node.js 4.3.2 Runtime Now Available on Lambda」這邊也有文章介紹。\r\n\r\n這樣總算可以拿出新的套件以及語法了...", + "title": "AWS Lambda 支援 Node.js 4.3" + }, + { + "id": "6484", + "body": "看到 Mac 上的「Cleartext」這個軟體:\r\n\r\n
    A text editor that only allows the 1,000 most common words in English
    \r\n\r\n\"\"\r\n\r\n限制你使用比較簡單的英文,這樣可以讓讀的人比較容易了解 (尤其是非母語的人)。\r\n\r\n有種跟 Simple English Wikipedia 的想法很像的感覺:\r\n\r\n
    The project uses around 2,000 common English words, and is based on Basic English, an 850-word auxiliary international language created by Charles Kay Ogden in the 1920s.
    \r\n\r\n另外還有提供 Trump mode XDDD:\r\n\r\n
    Trained with a few of Trump's best known speeches, the app is now ready to help you write like a billionaire.
    \r\n\r\n\"\"\r\n\r\n這好壞 XDDD", + "title": "Mac 上的 Cleartext" + }, + { + "id": "6485", + "body": "前陣子開始用 Netflix 看流言終結者,但以往看動畫已經習慣至少兩倍速了,舊址好找看看電腦上有沒有方案可以加速。\r\n\r\n還頗幸運的是,早就有人把方法找出來了:「Netflix streaming playback speed and hidden menus」。\r\n\r\nNetflix 在 Google Chrome 上面用 HTML5 player,而就有 extension 可以對 HTML5 player 加速:「Video Speed Controller」。\r\n\r\n這樣消化影片的速度就快多了 :p", + "title": "用瀏覽器看 Netflix 加速播放" + }, + { + "id": "6486", + "body": "WordPress.com 宣佈將全面提供 HTTPS 服務:「HTTPS Everywhere: Encryption for All WordPress.com Sites」。\r\n\r\n其中 wordpress.com 應該是買 wildcard SSL certificate 來做,而 custom domain 的部份將會透過 Let's Encrypt 來做:\r\n\r\n
    The Let’s Encrypt project gave us an efficient and automated way to provide SSL certificates for a large number of domains. We launched the first batch of certificates in January 2016 and immediately started working with Let’s Encrypt to make the process smoother for our massive and growing list of domains.
    \r\n\r\n這包括了對 SPDY + HTTP/2 的支援,使得 HTTPS 的速度不比 HTTP 差 (甚至更快)。", + "title": "WordPress.com 將全面提供 HTTPS 服務" + }, + { + "id": "6487", + "body": "剛剛發現 CloudFlare 的 latency 掉下來了...\r\n\r\n這是從中華電信機房內 smokeping-hinet-tpe-1.kkbox.com.tw 的資料:\r\n\r\n\"\"\r\n\r\n這是從遠傳機房 smokeping-fetnet-tpe-1.kkbox.com.tw 的資料:\r\n\r\n\"\"\r\n\r\n不過台灣固網的 smokeping-tfn-tpe-1.kkbox.com.tw 還沒看到:\r\n\r\n\"\"\r\n\r\n沒有意外的話,應該是過幾天就會公佈了?接下來要觀察效能了...", + "title": "CloudFlare 在台灣有機房了" + }, + { + "id": "6488", + "body": "在 T客邦 上面看到講 Google Chrome 上清 cookie 的機制,提到了「Vanilla Cookie Manager」這個套件:「【Chrome安全技巧】如何自動清除網站的 cookie 以保護個資?」。\r\n\r\n現在應該已經不需要用這個套件了,至少在 2012 年的時候 Google Chrome 就已經內建這個功能了:「Google Chrome 上的 Cookie 隱私機制...」,在 2012 年提到的問題已經消失了,現在用起來都很正常,而且可以透過 Google Chrome 內建的機制同步到不同電腦上。\r\n\r\n先到「設定」裡面,展開「顯示進階設定...」後可以看到這個:\r\n\r\n\"\"\r\n\r\n點「內容設定」後可以看到「Cookie」的部份,選擇「將本機資料保留到您關閉瀏覽器為止」,可以在關閉瀏覽器時自動把 cookie 都清掉,另外選擇「封鎖第三方 Cookie 和網站資料」可以防止不少廣告系統的個人化追蹤,造成隱私問題:\r\n\r\n\"\"\r\n\r\n但我不希望每次重開瀏覽器都要重新登入 FacebookTwitter 這類網站,那麼就點「管理例外狀況」後輸入白名單,這樣就可以避免了:\r\n\r\n\"\"", + "title": "Google Chrome 上面清 Cookie 的機制" + }, + { + "id": "6491", + "body": "這整個週末都在跟 Net::DNS 奮戰 edns-client-subnet,遇到模組內的一小段程式有 bug,先用 monkey patch 硬上,之後再看看要怎麼丟 patch 回 upstream。\r\n\r\nmonkey patch 的方法主要是參考「How can I monkey-patch an instance method in Perl?」這邊提供的方法而來的。\r\n\r\n由於實際的行為是 subroutine redefined (會產生警告訊息),所以要局部關掉 warnings,然後再把整個 subroutine 換掉:\r\n\r\n
    use BugPackage;\r\n\r\n{\r\n    no warnings;\r\n    local *BugPackage::bug_function = sub {\r\n        # new code\r\n    };\r\n}
    \r\n\r\n這樣可以在不修改原始模組程式碼的情況下抽換。", + "title": "Perl 上的 Monkey Patch" + }, + { + "id": "6493", + "body": "如同前幾天在「CloudFlare 在台灣有機房了」所提到的,CloudFlare 正式在 blog 上宣佈 Taipei PoP 了:「Taipei: CloudFlare’s 77th Data Center is Now Live」。\r\n\r\n一個有趣的花邊是 CloudFlare CEO Matthew Prince 在 Twitter 上提到的事情:\r\n\r\n

    @PeterDaveHello working with HiNet has been… challenging.

    — Matthew Prince (@eastdakota) April 8, 2016
    \r\n\r\n\r\n另外在 kaifIngramChen 也有提到因為 CloudFlare 開台後空出來的國際頻寬,讓 HiNet 到新加坡的機器變快 (CloudFlare 在台灣有機房了):\r\n\r\n
    CloudFlare 在台灣有機房,代表從台灣出去海外的頻寬瞬間 \"空\" 了一大塊。\r\n\r\n就算你的服務沒用到 CloudFlare,也會因為頻寬空出來,你放在海外的站在台灣用起來也會快了一點。
    ", + "title": "CloudFlare 正式公開 Taipei PoP 了" + }, + { + "id": "6495", + "body": "Let's Encrypt 宣佈脫離 beta,正式開放:「Leaving Beta, New Sponsors」。\r\n\r\n\"\"\r\n\r\n翻資料的時候發現在今年 3/26 的時候,限制已經放寬了:「Rate Limits for Let’s Encrypt」。\r\n\r\n首先一張證書只能包括 100 個 hostname,跟原來相同:\r\n\r\n
    Names/Certificate is the limit on how many domain names you can include in a single certificate. This is currently limited to 100 names, or websites, per certificate issued.
    \r\n\r\n再來是每個禮拜可以申請的數量從 5 個 hostname 變成 20 個,另外本來 renew 也算 quota,現在變成不會吃到 quota:\r\n\r\n
    Certificates/Domain limits how many certificates can be issued that contain a single registered domain*.\r\nThis is limited to 20 certificates per domain per week. Exception: When you request a certificate with the same exact set of FQDNs as previously-issued certificate, this rate limit does not apply, but the one below does.
    \r\n\r\n不知道會不會再放寬限制...", + "title": "Let's Encrypt 宣佈脫離 Beta" + }, + { + "id": "6496", + "body": "在「Zend Framework 1.12.18 Released!」這邊看到因為「ZF2016-11: Potential Insufficient Entropy Vulnerability in ZF1」而推出新版的消息...\r\n\r\n另外在「Changelog 1.12.18」這頁可以看到還是有一些 bugfix,所以其實都還是有在維護?(記憶中以為現在沒在管了...)", + "title": "原來 ZendFramework 1 還有在出新版..." + }, + { + "id": "6497", + "body": "在 social network 上掃了一堆照片後,路上隨便拍照讓程式自動人肉搜索找出可能的對象:「Russian photographer matches random people with social network photos」。\r\n\r\n這個計畫叫做「YOUR FACE IS BIG DATA」,作者的照片來源是來自俄羅斯最大的社交網站 VKontakte,而計畫的網站在「Конец анонимности: Идентификация случайных попутчиков」這邊,可以連進去看他自動找出來的圖。\r\n\r\n演算法本身並不難,有種老大哥計畫的感覺... 可以想像 FacebookInstagram 或是 VKontakte 如果自己做了之後拿給政府單位用的情況?", + "title": "拍照後讓程式自動人肉搜索 Social Network 上的照片..." + }, + { + "id": "6498", + "body": "前幾天 CloudFlare 接通遠傳時應該是去回不同路,所以還是有 20ms 左右的 latency:\r\n\r\n\"\"\r\n\r\n剛剛發現遠傳已經完全接通了:\r\n\r\n\"\"\r\n\r\n遠傳對 CloudFlare 的 latency 應該又會再好一些。", + "title": "CloudFlare 接通遠傳..." + }, + { + "id": "6500", + "body": "作者繼續以 A Billion Taxi Rides 的資料測試各種差異,這次測了 Amazon S3HDFS 的速度差異:「A Billion Taxi Rides: AWS S3 versus HDFS」。\r\n\r\n前半部都在說明測試的環境設定,重點在文章的最後面 (也就是「Benchmarking HDFS」這段),裡面有各種 query 的速度。HDFS 的速度大約是 Amazon S3 的 1.25 到 1.75 倍,作者給的結論是:\r\n\r\n
    Though the speed improvements using HDFS are considerable, S3 did perform pretty well. At worst there's a 1.75x overhead in exchange for virtually unlimited scalability, 11 9's of durability and no worrying about over/under-provisioning storage space.
    \r\n\r\n雖然 HDFS 比較快,但 Amazon S3 其實表現的不錯,另外資料安全性 (平均 99.999999999%,也就是 11 個 9 的 durability) 及不需要怕空間不夠的優點也是應該考慮進去的因素。", + "title": "Amazon S3 與 HDFS 的速度差異" + }, + { + "id": "6502", + "body": "在「MySQL 5.7.12 – Part 2: Improving the MySQL Protocol」這邊看到介紹 MySQL 的 Asynchronous API,藉由 pipeline 加速查詢。\r\n\r\n本來的:\r\n\r\n
    res_1 = conn.query(\"DO 1\");\r\nres_2 = conn.query(\"DO 2\");
    \r\n\r\n會產生這樣的 flow:\r\n\r\n\"\"\r\n\r\n而 Asynchronous API 可以這樣寫,先把兩個 SQL query 都丟出去,然後等結果:\r\n\r\n
    hndl_1 = conn.query_send(\"DO 1\");\r\nhndl_2 = conn.query_send(\"DO 2\");\r\n\r\n# wait for completion\r\nres_1 = conn.query_recv(hndl_1);\r\nres_2 = conn.query_recv(hndl_2);
    \r\n\r\n也就是產生這樣的 flow:\r\n\r\n\"\"\r\n\r\n感覺 PHP 上只要 PDO 改善這塊後,各家 ORM library 就可以支援受益...", + "title": "MySQL 5.7 的 Pipeline 查詢加速" + }, + { + "id": "6503", + "body": "在「更絢麗的 .gdbinit 檔」這篇裡面提過「GDB dashboard」這組設定,以及用 Python 寫的的加強工具。\r\n\r\n在「A hacky debugger UI for hackers」這邊則看到了另外一套也是 Python 寫的工具,叫做 Voltron:\r\n\r\n\"\"\r\n\r\n比較一下原來 GDB dashboard 的畫面:\r\n\r\n\"\"\r\n\r\n其實兩者看起來都還蠻棒的?用的習慣最重要...", + "title": "也是個加強 Debugger UI 的套件:Voltron" + }, + { + "id": "6504", + "body": "關於 SambaWindows 網芳的安全性問題,拖了三個禮拜的「Badlock Bug」的細節總算公佈了 (網頁還不支援 HTTPS)。\r\n\r\n果然是為了打名氣而事前公佈的... 都不是無條件的 RCE (Remote Code Execution),而是透過 MITM 後的 RCE。", + "title": "Badlock Bug 總算公佈了..." + }, + { + "id": "6505", + "body": "Namecheap 缺乏安全概念又被暴露出來了,這次是 VPS 帳號被打進去:「Namecheap live chat social engineering leads to loss of 2 VPS」。\r\n\r\n文章作者的 mail account 被攻陷,於是攻擊者就到處找他有註冊的帳號。作者在 Namecheap 的帳號雖然開了 2FA,但是 Namecheap 的 VPS console 不支援 2FA,於是就透過 Live Chat 給 social engineering 掉重設密碼進去了。\r\n\r\n作者馬上連進去關機,然後攻擊者又打開,來回許多次後,攻擊者決定選擇重新安裝系統直接毀掉 VPS。\r\n\r\n文章作者本來以為 Namecheap 會有備份資料 (可能會有掉一些資料),結~果~完~全~沒~有~備~份~\r\n\r\n整個就是糟透了...", + "title": "Namecheap 被 Social Engineering 進 VPS 帳號並且毀掉資料" + }, + { + "id": "6507", + "body": "在 Twitter 上看到 zmx 提到:\r\n\r\n

    VMWare 官方出的 rvc (ruby) 是 CLI,員工出的 pvc (python) 是 TUI,讓我以為 OS X 沒 CLI client 用好久。

    — Bill Zhong (@zmx) April 13, 2016
    \r\n\r\n\r\n其中 Ruby vSphere Console (rvc) 被標成 deprecated:\r\n\r\n
    Note: This Fling is deprecated, so the download is no longer available, and it will not be updated. Also, feedback is no longer monitored.
    \r\n\r\n而 Python vSphere Client with a dialog(1) interface (pvc) 看起來比較新:\r\n\r\n\"\"\r\n\r\n不過我自己測試後發現死在 SSL certificate 上,之後再來研究要怎麼閃開吧...", + "title": "Terminal 下操作 VMware 的 vSphere" + }, + { + "id": "6508", + "body": "Stripe 在宣佈要淘汰 TLS 1.0 與 TLS 1.1 的計畫公告中 (「Upgrading to SHA-2 and TLS 1.2」) 提到了:\r\n\r\n
    Why SHA-1, TLS 1.0 and 1.1 are insecure
    \r\n\r\n但在文章裡面還是沒有提到為什麼 TLS 1.1 不安全。\r\n\r\n在維基百科的「Transport Layer Security」條目中試著找內容,發現應該是 Data integrity 這段,TLS 1.1 不支援 HMAC-SHA256/384 與 AEAD,只支援比較弱的 HMAC-MD5 或是 HMAC-SHA1。", + "title": "Stripe 所提到的 TLS 1.1 不安全" + }, + { + "id": "6511", + "body": "Amazon S3 推出了新的加速功能,並且向更多地區提供 AWS Import/Export Snowball 服務:「AWS Storage Update – Amazon S3 Transfer Acceleration + Larger Snowballs in More Regions」。\r\n\r\n其中的 Amazon S3 Transfer Acceleration 只要把本來的 BUCKET_NAME.s3.amazonaws.com 或是帶有地區的 BUCKET_NAME.s3-region.amazonaws.com 變成 BUCKET_NAME.s3-accelerate.amazonaws.com 就可以了,他會透過 CloudFront 的節點做 proxy,並且透過 AWS 內部最佳化過的網路傳輸。\r\n\r\n由於這是定位為 Amazon S3 的服務,而實際測試後也確認不會有 cache:他的目的在於降低 latency 而加速,而不是 cache 加速,所以大量 GET 相同內容的部份應該還是用 CloudFront 會比較好。\r\n\r\n再來是費用的部份增加相當多,第一筆要收的是 CloudFront 的費用,再來才是計算 Transfer Acceleration 的費用:\r\n\r\n
    Transfer Acceleration pricing is in addition to Data Transfer pricing.
    \r\n\r\n從 Internet 進 CloudFront 再進 Amazon S3 的要收 USD$0.04/GB (透過在美國、歐洲或是日本的 CloudFront 節點) 或 USD$0.08/GB (透過其他 CloudFront 節點)。\r\n\r\n另外要收的是從 Amazon S3 一路傳到 Internet 的部份,USD$0.04/GB。如果是傳到其他 AWS region 的話,也是 USD$0.04/GB。\r\n\r\n不過他有效能保證條款 (雖然掌控全不在自己),AWS 會持續監控有沒有比較快,如果沒有的話系統會 bypass 回原來的 Amazon S3:\r\n\r\n
    Each time you use Transfer Acceleration to upload an object, we will check whether Transfer Acceleration is likely to be faster than a regular Amazon S3 transfer. If we determine that Transfer Acceleration is not likely to be faster than a regular Amazon S3 transfer of the same object to the same destination AWS region, we will not charge for that use of Transfer Acceleration for that transfer, and may bypass the Transfer Acceleration system for that upload.
    \r\n\r\n我本來以為會是在 DNS 層 bypass 回本來的 region,結果發現是 307 redirect 重導回 Amazon S3 上,效能上應該還是會差一些...\r\n\r\n可以看出這個架構的特性主要還是用在上傳的部份,而且用在網路不穩定的環境下很重要 (像是電信網路上的行動裝置),因為 latency 的減少會對於 packet loss 造成的 retry 有很大的幫助。\r\n\r\n下載的部份應該會比本來 Amazon S3 快 (因為 Amazon 本身會加速),但由於沒有 cache,除非有特殊需求,不然建議不要這樣規劃。\r\n\r\n另外一個是 AWS Import/Export Snowball 推出的新硬體,以及新區域。\r\n\r\n新硬體是 80TB 的版本,本來只有 50TB 的版本:\r\n\r\n
    The original Snowball appliances had a capacity of 50 terabytes. Today we are launching a newer appliance with 80 terabytes of capacity.
    \r\n\r\n而新區域包括了 AWS GovCloud (US)、US West (Northern California)、Europe (Ireland) 以及 Asia Pacific (Sydney) 這三區:\r\n\r\n
    Today we are making Snowball available in four new Regions: AWS GovCloud (US), US West (Northern California), Europe (Ireland), and Asia Pacific (Sydney). We expect to make Snowball available in the remaining AWS Regions in the coming year.
    \r\n\r\n其中 80TB 版本只在這三區生效,其他區可以選擇 50TB 或是 80TB 版本:\r\n\r\n
    If you are transferring data in or out of the US East (Northern Virginia), US West (Oregon), US West (Northern California), or AWS GovCloud (US) Regions using Snowball you can choose the desired capacity. If you are transferring data in or out of the Europe (Ireland) or Asia Pacific (Sydney) Regions, you will use the 80 terabyte appliance.
    \r\n\r\n日本還是沒進場...", + "title": "Amazon S3 推出加速功能" + }, + { + "id": "6512", + "body": "Amazon EBS 推出了新的磁碟種類,都是比現在更經濟 (白話文:更便宜) 的方案:「Amazon EBS Update – New Cold Storage and Throughput Options」。\r\n\r\n第一種是 Amazon EBS Throughput Optimized HDD,代號是 st1;第二種是 Amazon EBS Cold HDD,代號是 sc1,兩種都是傳統磁頭硬碟。\r\n\r\n第一種 st1 重視 sequential 的 throughput:\r\n\r\n
    Starts at 250 MB/s for a 1 terabyte volume, and grows by 250 MB/s for every additional provisioned terabyte until reaching a maximum burst throughput of 500 MB/s.
    \r\n\r\n第二種 sc1 則是重視堆資料的費用:\r\n\r\n
    Designed for workloads similar to those for Throughput Optimized HDD that are accessed less frequently; $0.025 / gigabyte / month.
    \r\n\r\n要注意的是,IOPS 是可以累計的,而未滿 1MB 的 access 會計算成 1MB,所以只適合大量 sequential access 的應用,像是 Hadoop 這類 big data 類的應用:\r\n\r\n
    For both of the new magnetic volume types, the burst credit bucket can grow until it reaches the size of the volume. In other words, when a volume’s bucket is full, you can scan the entire volume at the burst rate. Each I/O request of 1 megabyte or less counts as 1 megabyte’s worth of credit. Sequential I/O operations are merged into larger ones where possible; this can increase throughput and maximizes the value of the burst credit bucket (to learn more about how the bucket operates, visit the Performance Burst Details section of my New SSD-Backed Elastic Block Storage post).
    \r\n\r\n另外 sc1 也是目前每單位裡面最便宜的價錢,不知道拿來當 root 會底多慢 XDDD", + "title": "Amazon EBS 推出新磁碟種類" + }, + { + "id": "6513", + "body": "AWS 又推出新的功能,這次 AWS Device Farm 讓使用者可以遠端互動跟機器操作:「AWS Device Farm Update – Remote Access to Devices for Interactive Testing」。\r\n\r\n\"\"\r\n\r\n在「Test Devices List」這邊可以找到很多舊版本的機器可以互動操作 (尤其是 iOS 系列的機器),就可以拿來測各種舊版本的 bug report 了...", + "title": "AWS Device Farm 可以遠端操作" + }, + { + "id": "6514", + "body": "在 Bruce Schneier 這邊看到這則新聞:「Kuwaiti Government will DNA Test Everyone」,原始報導在「Kuwait set to enforce DNA testing law on all – Officials reassure tests won’t be used to determine genealogy」這邊,開頭的說明還蠻清楚的:\r\n\r\n
    The DNA testing law that will go into effect this year is aimed at creating an integrated security database and does not include genealogical implications or affects personal freedoms and privacy.
    \r\n\r\n以及:\r\n\r\n
    When the law (no. 78/2015) is applied, it will be binding on all citizens, expatriates and visitors too.
    \r\n\r\nBruce Schneier 擔心的是這種嚴重侵犯隱私的資訊沒有任何罰則可以阻止科威特政府將 DNA 資訊轉其他國家的政府:\r\n\r\n
    And there is nothing preventing the Kuwaiti government from sharing that information with any other government.
    \r\n\r\n這個國家完全不能進去...", + "title": "科威特通過法律強制取得每個人的 DNA:包括外籍人士與訪客" + }, + { + "id": "6515", + "body": "一樣是從 Bruce Schneier 那邊看到的:「Details about Juniper's Firewall Backdoor」,原始的研究連結在「Cryptology ePrint Archive: Report 2016/376」這邊。\r\n\r\nScreenOS 被放了兩個後門,一個是 SSH 的後門:\r\n\r\n
    Reverse engineering of ScreenOS binaries revealed that the first of these vulnerabilities was a conventional back door in the SSH password checker.
    \r\n\r\n另外一個是「Dual EC 的 Q 值」被放了後門,而「NIST 所制定的 Dual EC 的 Q 值」本身就是個後門,所以有人把這個後門又給換掉了:\r\n\r\n
    The second is far more intriguing: a change to the Q parameter used by the Dual EC pseudorandom number generator. It is widely known that Dual EC has the unfortunate property that an attacker with the ability to choose Q can, from a small sample of the generator's output, predict all future outputs. In a 2013 public statement, Juniper noted the use of Dual EC but claimed that ScreenOS included countermeasures that neutralized this form of attack.
    \r\n\r\n第二個後門更發現嚴重的問題,Juniper 所宣稱的反制措施根本沒被執行到:\r\n\r\n
    In this work, we report the results of a thorough independent analysis of the ScreenOS randomness subsystem, as well as its interaction with the IKE VPN key establishment protocol. Due to apparent flaws in the code, Juniper's countermeasures against a Dual EC attack are never executed.
    \r\n\r\n也因此團隊確認選定 Q 值的人可以輕易的成功攻擊 IPSec 流量:\r\n\r\n
    Moreover, by comparing sequential versions of ScreenOS, we identify a cluster of additional changes that were introduced concurrently with the inclusion of Dual EC in a single 2008 release. Taken as a whole, these changes render the ScreenOS system vulnerable to passive exploitation by an attacker who selects Q. We demonstrate this by installing our own parameters, and showing that it is possible to passively decrypt a single IKE handshake and its associated VPN traffic in isolation without observing any other network traffic.
    ", + "title": "關於 Juniper ScreenOS 防火牆被放後門的研究" + }, + { + "id": "6516", + "body": "MIT 弄出來的新玩意,靜態分析工具叫做 Space:「New MIT Scanner Finds Web App Flaws in a Minute」,MIT 官方的報導在「Patching up Web applications」這邊:\r\n\r\n
    In tests on 50 popular Web applications written using Ruby on Rails, the system found 23 previously undiagnosed security flaws, and it took no more than 64 seconds to analyze any given program.
    \r\n\r\n接下來就是什麼時候會放出來了...", + "title": "MIT 開發出靜態分析工具,找出 23 個 RoR 軟體未被發現的漏洞" + }, + { + "id": "6517", + "body": "在 CA/Browser Forum 三月底的會議記錄裡看到了關於 wildcard ssl certificate 的一些討論,還蠻有趣的:「2016-03-31 Minutes」。\r\n\r\n主要是第五條的記錄,在討論更廣泛的 wildcard 用法。首先是 Microsoftww*.example.com 這種 domain 的認定:\r\n\r\n
    Rick said there was a Microsoft tech note that allows ww*.example.com. Jody confirmed the platform supports it.
    \r\n\r\n但有爭論,而且目前看起來暫時沒有打算要實作:\r\n\r\n
    Rick suggested the BRs be updated to include that. Ryan said that is not a good thing as there are multiple specs that treat this differently and historical context which would make it hard for Google to support such a ballot. Kirk asked why Peter put this in the ballot. He responded that this was raised in the past where people found a discrepancy in relation to other docs. However, given there was not consensus, he would remove from the proposed ballot. Ryan said there is a need for clarification because CAs seem to be interpreting this differently. Peter said he would create a new definition called “wildcard domain name” with an exact definition to avoid confusion and add clarity. Rick said that ideally Microsoft should remove that functionality and update the tech notes. Jody said he would need to consult with his expert on this. Peter said the goal of this ballot was to make it a “consensus” ballot and would remove anything controversial.
    \r\n\r\n看起來還沒有完全定下來,之後的會議記錄可以再看看進展。這對安全性也頗有幫助,舉例來說,我就可以針對不同的服務發不同的 wildcard ssl certificate,像是 test-*.example.com 這樣,而不用另外再建立機制避免 private key 的外流。", + "title": "CA/Browser Forum 在三月底的會議記錄" + }, + { + "id": "6518", + "body": "最近 CDN 產業裡有不少蕭期,其中一個新聞是 Google CDN 進入 beta,Google 藉由在全球佈署的機房來服務。\r\n\r\n不過雖然進入了 Beta,但仍然有很嚴重的技術限制,只能透過 GCE 當 origin server,這使得實用性低很多:\r\n\r\n
    Origins\r\nDelivers HTTP/HTTPS content originating from Compute Engine VM instances. External origin servers are not supported.
    \r\n\r\n有些特點是跟一般 CDN 不同的,一個是 Google 對 HTTPS 的口號,所以 HTTP 與 HTTPS 的價錢相同。其實你就當做他把 HTTP 的費用收的跟 HTTPS 一樣就好:\r\n\r\n
    SSL Shouldn't Cost Extra\r\nThe web is moving to HTTPS, and your cacheable content should, too. With Cloud CDN, you can secure your content using SSL/TLS for no additional charge.
    \r\n\r\n另外一個特點是從技術上就宣稱完全使用 Anycast,而不是見到的 DNS + Anycast:\r\n\r\n
    Anycast\r\nServe all your content from a single IP address with low latency worldwide.
    \r\n\r\n另外,計價的方式與其他的 CDN 有不少地方不一樣,另外也有針對中國地區另外處理。\r\n\r\n首先是他把 Cache Egress (從 CDN 給使用者) 與 Cache Fill (從 CDN 到 Origin 取得資源) 分開收,一的般 CDN 都只收 Cache Egress 這塊。\r\n\r\n再來是中國大陸地區的價錢另外標示,有特地標明不是從中國大陸地區直接提供服務:\r\n\r\n
    Traffic destined for mainland China is served from Google locations outside of mainland China. Performance and reliability may be lower than for traffic served from in-country locations.
    \r\n\r\n言下之意就是另外買 optimized 的頻寬來服務,但還是不會像在中國大陸地區有機房的效果這麼好,不過好處是不需要 ICP 之類的證照。\r\n\r\n不過不得不說價錢其實還蠻便宜的,無論是歐美還是亞洲區。", + "title": "Google CDN 進入 Beta" + }, + { + "id": "6519", + "body": "Amazon CognitoAWS 在 Serverless 與 IoT 兩個大主題下所提供的帳號管理系統,你可以透過 AWS 直接幫你管使用者的帳號,並且透過他存一些 user data 在上面:\r\n\r\n
    Amazon Cognito lets you easily add user sign-up and sign-in to your mobile and web apps. With Amazon Cognito, you can also authenticate users through social identity providers such as Facebook, Twitter, or Amazon, or by using your own identity solution. In addition, Amazon Cognito enables you to save data locally on users devices, allowing your applications to work even when the devices are offline. You can then synchronize data across users devices so that their app experience remains consistent regardless of the device they use.
    \r\n\r\n之前的版本可以吃 3rd party 廠商的認證 (像是 FacebookTwitter 這些服務),而現在正是宣佈可以自己管理了:「Now Available: Add user sign-up and sign-in with Cognito Identity」。\r\n\r\n文件上「Amazon Cognito Identity: Creating and Managing User Pools (Beta)」可以看到目前這個功能還在 Beta 階段,另外在「User Pool Settings」可以看到內建有很多 attribute 可以選用,像是 address、birth_date 這些基本資訊。\r\n\r\n愈來愈 Serverless 了...", + "title": "Amazon Cognito 支援帳號代管了..." + }, + { + "id": "6520", + "body": "在 Twitter 上看到 AWS 的 scheduled events 可以設定為一分鐘一次了:\r\n\r\n

    Create scheduled events with 1-minute granularity on AWS Lambda using Cloudwatch Events. https://t.co/a0Rl3bgzGI pic.twitter.com/PUe7koIXfE

    — Amazon Web Services (@awscloud) April 20, 2016
    \r\n\r\n\r\n在 AWS 的相關文件上也發現相關的限制都拿掉了:「Using AWS Lambda with Scheduled Events」。\r\n\r\n實際測試也發現沒問題了,之前用 */1 會被擋下來,現在是 ok 的:\r\n\r\n
    aws events put-rule --schedule-expression 'cron(*/1 * * * ? *)' --name test
    ", + "title": "AWS 的 scheduled events 可以設定為一分鐘一次了" + }, + { + "id": "6522", + "body": "Facebook 提供了透過 Tor 連上 Facebook 的人數:「1 Million People use Facebook over Tor」:\r\n\r\n
    In June 2015, over a typical 30 day period, about 525,000 people would access Facebook over Tor e.g.: by using Tor Browser to access www.facebook.com or the Facebook Onion site, or by using Orbot on Android. This number has grown – roughly linearly – and this month, for the first time, we saw this “30 day” figure exceed 1 million people.
    \r\n\r\n去年六月的時候大約是 52 萬人,而現在則超過一百萬了。", + "title": "最近三十天透過 Tor 上 Facebook 的人超過一百萬" + }, + { + "id": "6524", + "body": "在看宵夜文「2016更新【2013台北宵夜美食小吃精選】松山區信義區大安區」的時候做其他事情,回來就看到 in-window popup 視窗,決定擋下來,所以就把 html 找出來:\r\n\r\n
    <div class=\"modal idle-pop\" tabindex=\"-1\" role=\"dialog\" aria-describedby=\"dialog\">\r\n    <div class=\"modal-content\">\r\n      <div class=\"modal-header\">本網頁已閒置超過 3 分鐘。請點 <kbd>關閉>/kbd> 或 <kbd>點擊</kbd>任一空白處,即可回到網頁</div>\r\n      <div class=\"modal-body\">
    \r\n\r\n我選擇的方法是透過 uBlock Origin 阻擋元素:\r\n\r\n
    pixnet.net##.idle-pop
    \r\n\r\n然後重新開 blog 頁面,等個幾分鐘後確認就可以了。", + "title": "阻擋 PIXNET 的三分鐘閒置視窗" + }, + { + "id": "6525", + "body": "舊金山通過在 2017 年之後的建築物必須有 15% 的屋頂面積必須是太陽能相關的設備:「San Francisco Is Requiring Solar Panels on All New Buildings」:\r\n\r\n
    The ordinance, passed unanimously by the city’s Board of Supervisors, extends an existing California law which requires 15 percent of roof space on new buildings to be “solar ready” — available and unshaded. That ordinance applies to residential or commercial buildings 10 stories or shorter.
    \r\n\r\n也就是說,可以是太陽能的發電,也可以是太陽能集熱的設備:\r\n\r\n
    Under the new ordinance, which will go into effect in 2017, new buildings need to have solar energy of some kind installed, either electricity-generating panels or solar heating units.
    \r\n\r\n希望在 2020 年達到 100% 再生能源的目標:\r\n\r\n
    San Francisco took a major step toward its own goal of meeting the city’s electricity demands with 100 percent renewable energy by 2020.
    \r\n\r\n這成為美國第一個主要城市通過這樣的規範:\r\n\r\n
    This week, San Francisco became the first major U.S. city to require all new buildings to have solar panels on their roofs, according to Scott Wiener, the city supervisor who introduced the bill.
    ", + "title": "舊金山要求新的建築物都必須有太陽能設備" + }, + { + "id": "6526", + "body": "前幾天 BGPmon 偵測到大規模的 routing-hijacking 事件:「Large hijack affects reachability of high traffic destinations」,範圍應該是最近最大的:\r\n\r\n
    Our initial investigation shows that the scope of this incident is widespread and affected 576 Autonomous systems and 3431 prefixes. Amongst the networks affected are high traffic prefixes including those of Google, Amazon, Twitter, Apple, Akamai, Time Warner Cable Internet and more.
    \r\n\r\n\"\"\r\n\r\n在「[outages] HTTP access to www.amazon.com is down for us」這邊也看得到當時有人發現問題。", + "title": "前幾天大規模的 Routing-Hijacking 事件" + }, + { + "id": "6528", + "body": "這邊探討了新聞網站引入 Adblock 反制與 Paywall 帶來的影響:「Sites that block adblockers seem to be suffering」。\r\n\r\n作者拿了 WIREDBild (Axel Springer)、ForbesCity AM 以及 Washington PostAlexa 數字來歸納,可以看出新聞網站的取代率太高 (甚至看不到就算了),可以看到 bounce rate 大幅增加 (很多人發現不能看就不會繼續看下去),而且 pageview 也大幅下降。\r\n\r\nWIRED:\r\n\r\n\"\"\r\n\r\nBild:\r\n\r\n\"\"\r\n\r\nForbes:\r\n\r\n\"\"\r\n\r\nCity AM:\r\n\r\n\"\"\r\n\r\nWashington Post:\r\n\r\n\"\"\r\n\r\n不過文章還是很粗糙,有太多變數沒有考慮進去...", + "title": "Adblock 與 Paywall 帶來的影響" + }, + { + "id": "6529", + "body": "在「Transition to del.icio.us」這邊看到 Delicious 打算把 domain 換回去:\r\n\r\n
    We have begun the scheduled migration of Delicious.com to del.icio.us. We are grateful for your patience, as we work day and night to make the transition as quickly as possible.
    \r\n\r\n所以是打算要拋掉 delicious.com 了嗎?", + "title": "Delicious 打算把網域名稱換回 del.icio.us" + }, + { + "id": "6530", + "body": "在 Hacker News Daily 上看到 Homebrew 會將安裝資訊送到 Google Analytics 上面:「Homebrew's Anonymous Aggregate User Behaviour Analytics」。\r\n\r\n\"\"\r\n\r\nopt-out 的方法有兩個,一個是環境變數,另外一個是透過 git 設定:\r\n\r\n
    If after everything you've read you still wish to opt-out of Homebrew's analytics you may set HOMEBREW_NO_ANALYTICS=1 in your environment or run git config --file=\"$(brew --repository)/.git/config\" --replace-all homebrew.analyticsdisabled true which will prevent analytics from ever being sent when either of them have been set.
    ", + "title": "Homebrew 會將安裝資訊送到 Google Analytics 上" + }, + { + "id": "6531", + "body": "CloudFlare 宣佈支援 HTTP/2 的 Server Push:「Announcing Support for HTTP/2 Server Push」。\r\n\r\n如同預期的 (最簡單的方式),是透過 HTTP header 標示,也就是透過 rel=preload 辨識:\r\n\r\n
    Link: </asset/to/push.js>; rel=preload;
    \r\n\r\n可以看到沒有 Server Push 與有 Server Push 的效能差異:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "CloudFlare 宣佈支援 HTTP/2 的 Server Push" + }, + { + "id": "6532", + "body": "CloudFlare 又增加一個亞洲的 PoP 了,整個東南亞愈來愈密了:「Bangkok, Thailand: CloudFlare’s 79th Data Center」。\r\n\r\n\"\"\r\n\r\n下一個亞洲的點會是越南嗎?另外美國的點一直都有點少 (相較於其他地區),不知道會不會加...", + "title": "CloudFlare 又增加一個亞洲的點:泰國曼谷" + }, + { + "id": "6534", + "body": "OpenSSL 的安全性漏洞公告:「OpenSSL Security Advisory [3rd May 2016]」。ImageMagick 的安全性漏洞說明頁:「ImageTragick」。\r\n\r\nCVE-2016-2107 是修 Lucky 13 問題時沒修好造成的:\r\n\r\n
    This issue was introduced as part of the fix for Lucky 13 padding attack (CVE-2013-0169). The padding check was rewritten to be in constant time by making sure that always the same bytes are read and compared against either the MAC or padding bytes. But it no longer checked that there was enough data to have both the MAC and padding bytes.
    \r\n\r\n而 CVE-2016-2108 是組合技,從兩個「看似無害」的安全性問題開始:\r\n\r\n
    This vulnerability is a combination of two bugs, neither of which individually has security impact.
    \r\n\r\nThe first bug (mishandling of negative zero integers) was reported to OpenSSL by Huzaifa Sidhpurwala (Red Hat) and independently by Hanno Böck in April 2015. The second issue (mishandling of large universal tags) was found using libFuzzer, and reported on the public issue tracker on March 1st 2016.\r\n\r\n然後 Google 的人找出來可以打穿:\r\n\r\n
    The fact that these two issues combined present a security vulnerability was reported by David Benjamin (Google) on March 31st 2016.
    \r\n\r\n另外隔壁棚的 ImageMagick 安全性問題是個慘劇,是個 RCE 等級的,而且 exploit 已經在外面跑了:\r\n\r\n
    One of the vulnerabilities can lead to remote code execution (RCE) if you process user submitted images. The exploit for this vulnerability is being used in the wild.
    ", + "title": "最近的兩個安全性漏洞:OpenSSL、ImageMagick" + }, + { + "id": "6535", + "body": "CloudFlare 推出的 Origin CA 用來保護從 CloudFlare 到 Origin Server 這段的過程:「Introducing CloudFlare Origin CA」,也就是右半部這段:\r\n\r\n\"\"\r\n\r\nCloudFlare 把這個新功能包裝得很神,但實際上只是弄個 CA 出來跑而已,僅此而已。\r\n\r\n當然,由於他不需要處理 Public CA 的問題,所以有很多在一般 TLS 連線需要做的檢查步驟可以被簡化,藉此達到效能改善,包括了省掉 intermediate certificates、OCSP 以及 SCTs:\r\n\r\n
    With Origin CA certificates, we’ve stripped everything that’s extraneous to communication between our servers and yours to produce the smallest possible certificate and handshake. For example, we have no need to bundle intermediate certificates to assist browsers in building paths to trusted roots; no need to include signed certificate timestamps (SCTs) for purposes of certificate transparency and EV treatment; no need to include links to Certification Practice Statements or other URLs; and no need to listen to Online Certificate Status Protocol (OCSP) responses from third-parties.
    \r\n\r\n進而省下大量的連線成本:\r\n\r\n
    Eliminating these unnecessary components typically found in certificates from public CAs has allowed us to reduce the size of the handshake by up to 70%, from over 4500 bytes in some cases to under 1300.
    ", + "title": "CloudFlare 的 Origin CA:保護 CloudFlare 到 Origin 這段的傳輸過程" + }, + { + "id": "6536", + "body": "在「State of WordPress.com Elasticsearch Systems 2016」這邊描述他們 Elasticsearch 的架構。\r\n\r\n有五個 cluster 打散,有跑 1.3.x 也有 1.7.x。把一般使用者與 VIP 分開,而全站的資料又是一組。另外在 2.3.x 的測試機上跑 en.support.wordpress.com 的資料 (看起來是短時間炸掉沒關係?XD)。\r\n\r\n由於是自己生機器出來,所以機器的選擇上用大量的記憶體與 SSD 硬碟來換各種效能:\r\n\r\n
    Typical data server config:\r\n* 96GB RAM with 31GB for ES heap. Remaining gets used for file system caching\r\n* 1-3 TB of SSD per server. In our testing SSDs are very worthwhile.
    \r\n\r\n另外上面還是有疊 cache:\r\n\r\n
    memcache timeouts vary from 30 seconds to 36 hours depending on use case
    ", + "title": "WordPress.com 的 Elasticsearch" + }, + { + "id": "6537", + "body": "Percona 的「Best Practices for Configuring Optimal MySQL Memory Usage」這篇給了個蠻不錯的建議:\r\n\r\n
    Don’t allow the mysqld process VSZ exceed 90% of the system memory
    \r\n\r\n用 ps ax -O vsz | grep mysqld 可以看到 mysqld 吃了多少 VSZ,然後自己除整台機器的記憶體大小,就可以算出來目前吃了多少,然後調整 innodb_buffer_pool_size 的數字。\r\n\r\n另外 performance schema 也會有不少影響:\r\n\r\n
    MySQL is workload related – if you have many connections active at the same time that run heavy selects using a lot of memory for sorting or temporary tables, you might need a lot of memory (especially if Performance Schema is enabled). In other cases this amount of memory is minimal. You’ll generally need somewhere between 1 and 10GB for this purpose.
    \r\n\r\n記憶體碎裂問題應該是在調整時就會考慮進去:\r\n\r\n
    Another thing you need to account for is memory fragmentation. Depending on the memory allocation library you’re using (glibc, TCMalloc, jemalloc, etc.), the operating system settings such as Transparent Huge Pages (THP) and workload may show memory usage to grow over time (until it reaches some steady state). Memory fragmentation can also account for 10% or more of additional memory usage.
    \r\n\r\n其實就是沒有一定的定論,在不同的系統上會有不同的反應...", + "title": "調整 MySQL 的記憶體用量" + }, + { + "id": "6538", + "body": "在 Percona 的「MySQL High Availability: The Road Ahead for Percona and XtraDB Cluster」這篇文章的前面講了很多東西,最主要就是要宣佈把 Galera Cluster 納入 Enterprise/Premium Support:\r\n\r\n
    Today we’re taking the next natural step – we will no longer require customers to purchase Percona XtraDB Cluster as a separate add-on. Percona will include support for XtraDB Cluster and other Galera-based replication technologies in our Enterprise and Premier support levels, as well as our Percona Care and Managed Services subscriptions.
    \r\n\r\n先前是分開賣的,現在包進去了。", + "title": "Percona 宣佈把 Galera Cluster 納入 Enterprise 與 Premium Support 內" + }, + { + "id": "6539", + "body": "現在 Twitter 的網頁版愈做愈慢,於是有不少人在桌機上是用提供給行動裝置的版本瀏覽 (也就是 mobile.twitter.com 這個站),但這個站的功能其實頗陽春。\r\n\r\n而 sindresorhus/refined-twitter 這個專案則在行動版本上面增加了許多快速鍵,在 Google Chrome 上可以透過 Store 安裝:「Refined Twitter」。\r\n\r\n之前沒用過行動版的網站,這速度快好多啊...", + "title": "在網頁行動版的 Twitter 上增加快速鍵" + }, + { + "id": "6540", + "body": "EFF 的「We Can't Keep Waiting: Pass the VENUE Act This Year」這篇寫的還蠻清楚的,VENUE Act (S. 2733) 是一個看起來頗有效的 workaround,先上這個 workaround 降低專利蟑螂的攻勢。\r\n\r\n專利蟑螂 (通常是原告) 可以選擇任意一個聯邦法庭提出控告:\r\n\r\n
    As the law stands now, patent owners have almost complete control over which federal district to file a case in. That’s a major problem.
    \r\n\r\n而專利蟑螂會挑選對原告最有利的地區來提出控告,也就是美國德克薩斯東區聯邦地區法院 (U.S. District Court for the Eastern District of Texas),這對被告方很不利:\r\n\r\n
    According to the Mercatus Center and George Mason University, nearly half of all patent cases are filed in the U.S. District Court for the Eastern District of Texas. That’s more than 70 times the average number of patent cases heard in other federal judicial districts.
    \r\n\r\n
    Respected academics have identified evidence that procedures in the Eastern District of Texas unnecessarily favor plaintiffs and impose significant, unnecessary costs on companies and individuals accused of infringement, however questionable the patents and demands may be.
    \r\n\r\n而 VENUE Act 則是拔掉這個武器,必須在與被告相關的主要地區提告。", + "title": "VENUE Act 對專利蟑螂的反擊" + }, + { + "id": "6541", + "body": "Google 主動啟用了 HTTPS 版本:「Bringing HTTPS to all blogspot domain blogs」,預設會將 HTTPS 開起來:\r\n\r\n
    As part of this launch, we're removing the HTTPS Availability setting. Even if you did not previously turn on this setting, your blogs will have an HTTPS version enabled.
    \r\n\r\n另外提供 HTTPS Redirect 的選項,可以將訪客自動轉到 HTTPS 上:\r\n\r\n\"\"\r\n\r\ncustom domain 的部份不知道會怎麼提供...", + "title": "Blogger (Blogspot) 全面提供 HTTPS 版本" + }, + { + "id": "6542", + "body": "在 AWS Lambda 可以跑 cron job 後應該就不怎麼意外出現了:「Autoscale DynamoDB provisioned capacity using Lambda」。\r\n\r\n不像 EC2Auto Scaling,或是 ELB 自己會成長或縮小,DynamoDB 跟其他 AWS 服務不同,雖然可以 scale,但需要自己手動設定 capacity 伸縮。\r\n\r\n於是就有人寫了程式 (也就是這個專案),判斷目前的 r/w 用量來決定策略... 有點像是我在處理自家 bandwidth 的搞法,達到某個警戒值就自動增加導去 CDN 的量,或是降低回來 :o", + "title": "用 Lambda 做 DynamoDB 的 Auto Scaling" + }, + { + "id": "6543", + "body": "PieMessage 是個讓 Android 的人可以傳 iMessage 的專案,不過目前看起來弄得好複雜,需要四個元件:\r\n\r\n\r\n\r\n看起來不是 hack protocol,而是一路堆出來的東西 (透過 Apple 的機器 relay),好複雜啊...", + "title": "在 Android 上傳蘋果的 iMessage" + }, + { + "id": "6544", + "body": "Apple 對 iOS 程式的新政策:「Supporting IPv6-only Networks」。\r\n\r\n也就是說,在 ISP 提供 NAT64 的環境下 client 想要連 210.61.183.31 時會連 IPv6 的位置 ::d23d:b71f,ISP 會幫忙 NAT 出去。而client 端的應用程式要能夠在這樣的網路環境下正常運作。\r\n\r\n這測試環境沒建過,不知道會遇到什麼問題... @_@", + "title": "Apple 要求六月開始的 iOS 程式都必須能在 IPv6-only network 運作" + }, + { + "id": "6545", + "body": "在「Go upgrade Xcode. Fix your git security hole.」這邊看到 Xcode 7.3.1 的消息,在「Xcode 7.3.1 Release Notes」這邊列出了 7.3.1 的改變,其中 Git 總算是更新了:\r\n\r\n
    Git has been updated to version 2.7.4 in order to improve security. (25181743)
    \r\n\r\n參考「Git 的安全性問題」這邊,拖了一個多月啊...", + "title": "Xcode 7.3.1 總算更新了 Git..." + }, + { + "id": "6546", + "body": "Percona 的「CPU governor performance」這篇研究在 Linux 下 CPU Governor 對 MySQL 效能的影響。\r\n\r\n由於是要測試 CPU 效能,所以作者將資料量控制在 memory fit,避免 i/o 造成的影響。\r\n\r\n探討了兩種 driver (acpi-cpufreq 與 intel_pstate) 與兩種 governor (ondemand 與 performance),交叉後總共四種不同的組合。給了兩張圖,不過我覺得後面這張比較清楚:\r\n\r\n\"\"\r\n\r\n黑色線是 intel_pstate + performance 的組合 (當基準),三個條狀圖就是另外三種。\r\n\r\n可以看到藍色的 acpi-cpufreq + performance 效能其實跟基準線的 intel_pstate + performance 差不多。而只要是 ondemand 效能就掉很多... 所以伺服器開 performance 就是了 :o", + "title": "CPU Governor 對 MySQL 效能的影響" + }, + { + "id": "6548", + "body": "在「Lawsuit challenging Facebook’s facial recognition system moves forward」這邊提到了 Facebook 的臉部辨認系統將被搬上法院確認是否違法。\r\n\r\nFacebook 首先提出 Terms of Service 內規定不受依利諾州法律管理,只受加州以及聯邦法律管理,而依利諾州推翻這項規範,認為原告有權在依利諾州提起訴訟:\r\n\r\n
    Today's decision focused on the question of whether the Illinois law is applicable to Facebook, one of the major legal hurdles facing the plaintiffs. Facebook's Terms of Service maintains that the the company is only bound by California and federal laws, and the company had moved to dismiss the case on those grounds. But today, the judge ruled that the terms-of-service clause isn't sufficient to nullify the Illinois law. As a result, the plaintiffs have a valid claim under the Illinois biometrics law and the case can proceed.
    \r\n\r\n來拉板凳了...", + "title": "Facebook 的臉部辨認系統將被搬上法院,確認是否違法" + }, + { + "id": "6549", + "body": "就如同標題寫得,把 Google Chrome 的 JavaScript 關閉,然後開白名單,這樣的好處有不少:\r\n\r\n\r\n\r\n另外就是透過 Google Chrome 本身的同步機制,其實可以設一次所有機器都生效,不算太麻煩。沒意外的話應該會一直用下去...", + "title": "把 Google Chrome 預設的 JavaScript 關閉,開白名單..." + }, + { + "id": "6551", + "body": "Update:這篇的切換會保留到下次 (重新啟動瀏覽器後還是有效),關於要清掉的請參考「改用 Simple JavaScript Toggle 切換 Google Chrome 的 JavaScript」這邊。\r\n\r\n在上一篇「把 Google Chrome 預設的 JavaScript 關閉,開白名單...」提到把在 Google Chrome 裡把 JavaScript 關掉改用白名單管理有很多好處,但還是有個問題比較討厭,就是臨時要打開 JavaScript 的步驟很麻煩,而且還要記得拔掉。\r\n\r\n而「JavaScript Switcher」就是解決這個問題的好工具:遇到需要 JavaScript 才會正常運作的網頁時,可以先按一下 icon 讓他開啟 JavaScript (然後他會自己 reload 頁面),這個設定一直都會生效,直到你重開瀏覽器時就會自己洗掉,不需要擔心會忘記拔掉。\r\n\r\n前人把這些工具都做好了,愉快... XD", + "title": "用 JavaScript Switcher 快速啟用 JavaScript..." + }, + { + "id": "6553", + "body": "Split DNS 指的是某個 DNS domain 使用另外一組 DNS servers,常用在 Partial Route 的 VPN 上,讓內部網域的 DNS domain 正確的被解出來。一般商業的 VPN Software 都會處理掉這塊,不過有時候還是希望可以自己設定...\r\n\r\nUbuntu 桌機上的 Split DNS 可以透過 Dnsmasq 做到,在我的機器上因為透過 ps awx | grep dnsmasq 可以看到 --conf-dir=/etc/NetworkManager/dnsmasq.d,表示設定的目錄在 /etc/NetworkManager/dnsmasq.d 下,所以我把檔案 mysplit 放到 /etc/NetworkManager/dnsmasq.d 下:\r\n\r\n
    #\r\nserver=/mysplit.com/10.1.2.3
    \r\n\r\n然後在 dnsmasq 的 manpage 裡面有提到,SIGUSR{1,2} 是拿來分析用的,而 SIGHUP 不是拿來給你重新讀設定檔用的 XDDD\r\n\r\n
    SIGHUP does NOT re-read the configuration file.
    \r\n\r\n所以就砍掉他,隨便對 NetworkManager 做個動作,就會重新把 dnsmasq 帶起來了,或者重開機也可以... 再跑 dig 查的時候就可以查到資訊了。", + "title": "Ubuntu 桌機的 Split DNS" + }, + { + "id": "6554", + "body": "在「GM, Lyft to Test Self-Driving Electric Taxis」這邊看到突破性的服務,Lyft通用汽車 (GM) 合作,將在今年推出無人駕駛計程車。\r\n\r\n通用汽車的新聞稿在這:「GM and Lyft to Shape the Future of Mobility」。\r\n\r\n這直接再度衝擊了整個行業... 這次行業裡面的「人」消失了。", + "title": "Lyft 與通用汽車合作,將在今年推出無人駕駛計程車" + }, + { + "id": "6555", + "body": "在前一篇「用 JavaScript Switcher 快速啟用 JavaScript...」被小光光 kcwu 指出來我測錯了,JavaScript Switcher 在重開瀏覽器後並不會將設定清掉 (會保留到下次)。\r\n\r\n我再找了 Web Store 上了好幾個不同的 extension 測了好幾次,這次在「Simple JavaScript Toggle」這個套件測了好幾次,確認有清掉。另外我也確認原始碼的部份有這段:\r\n\r\n
    // Clear previous contentSettings made by the extension\r\nfunction init() {\r\n    patternStates = {};\r\n    chrome.contentSettings['javascript'].clear({\r\n        'scope': 'regular'\r\n    });\r\n}
    \r\n\r\n這樣應該是 okay 了,再找機會請小光光吃飯 Q_Q", + "title": "改用 Simple JavaScript Toggle 切換 Google Chrome 的 JavaScript" + }, + { + "id": "6557", + "body": "CloudFlare 放出可以同時支援 HTTP/2SPDYnginx patch:「Open sourcing our NGINX HTTP/2 + SPDY code」。\r\n\r\n不過 patch 的版本有點舊:\r\n\r\n
    We've extracted our changes and they are available as a patch here. This patch should build cleanly against NGINX 1.9.7.
    \r\n\r\n如同原文下面 comment 提到的問題,nginx 1.9.7 太舊了 (2015/11/17 放出的版本),到現在有出了不少安全性更新,以及對 HTTP/2 的 bugfix。應該會需要再等官方把新版的 patch 拿出來改之後才能用。", + "title": "CloudFlare 放出可以同時支援 HTTP/2 與 SPDY 的 nginx patch" + }, + { + "id": "6558", + "body": "Google 推出了 iOS 上的搜尋輸入法 Gboard:「Meet Gboard: Search, GIFs, emojis & more. Right from your keyboard.」,可以在 App Store 上下載「Gboard — Search. GIFs. Emojis & more. Right from your keyboard.」,目前只有英文版可以用,其他語言還要等:\r\n\r\n
    Get it now in the App Store in English in the U.S., with more languages to come.
    \r\n\r\n可以參考 Google 做的 GIF 動畫,把搜尋的功能結合進去了:\r\n\r\n\"\"\r\n\r\nJohn Gruber 寫了一篇「Gboard」關於隱私問題的討論,看起來還頗正面的。除了搜尋結果當然會需要傳到 Google 的系統裡以外,只有 crash log 會匿名傳回去。", + "title": "Google 推出 iOS 上的搜尋輸入法 Gboard" + }, + { + "id": "6559", + "body": "從 Bloomberg 上看到的新聞,Uber 這類服務在北美的商務交通支出的佔有率已經超越一般租車了:「Uber Overtakes Rental Cars Among Business Travelers」。\r\n\r\n資料來源是來自 Certify,北美第二大的雲端管理服務。所以這份資料其實還是有 bias 存在,但還是可以看出大趨勢:\r\n\r\n\"\"\r\n\r\n所以不只有一般計程車行業受到影響,在商務客也受到衝擊。", + "title": "Uber 這類服務在北美的商務交通支出超越一般租車" + }, + { + "id": "6560", + "body": "先是在 Akamai 的網站上看到說明:「Microsoft Azure CDN from Akamai Enters General Availability」,另外裡面有提到 Microsoft 的公告:「Microsoft announces general availability of Azure CDN from Akamai」。\r\n\r\n所以 Microsoft Azure 現在提供三個不同的 CDN 方案:\r\n\r\n\r\n\r\n其中 Standard 方案的價錢都相同,而 Verizon 的 Premium 方案大約是兩倍價錢,沒猜錯的話應該是 Verizon ACCELERATE?以前 EdgeCast 的 ADN 產品線?", + "title": "Akamai 與 Microsoft Azure CDN 合作的方案進入 GA (General Availability)" + }, + { + "id": "6561", + "body": "如標題所說的,Reddit 在規劃這些阻擋 Adblock 的網站:「Mod Announcement: We're considering banning all domains that require users to disable ad blockers and we'd like your input」。\r\n\r\n這些網站要求使用者將網站列入 Adblock 白名單,然後這些網站就會「不小心」推送 malware 給使用者:\r\n\r\n
    It has come to our attention that many websites such as Forbes and Wired are now requiring users to disable ad blockers to view content. Because Forbes requires users to do this and has then served malware to them we see this as a security risk to you our community. There are also sites such as Wall Street Journal that have implemented pay-walls which we were are also considering banning.
    \r\n\r\n戰爭愈來愈激烈了...", + "title": "Reddit 在規劃要禁止「阻擋 Adblock 的網站」" + }, + { + "id": "6562", + "body": "在 LWN 上看到這個消息:「BitKeeper's open source release」,BitKeeper 網站上也已經看到 open source 的消息了。\r\n\r\n從 2005 年跟 Linux 分家後,走了十年走到這條路... 在「This is to answer this question and all the \"too late\" comments.」這邊看到是這樣做出來的決定,看起來沒救了:\r\n\r\n
    Git/Github has all the market share. Trying to compete with that just proved to be too hard. So rather than wait until we were about to turn out the lights, we decided to open source it while we still had money in the bank and see what happens. We've got about 2 years of money and we're trying to build up some additional stuff that we can charge for. We're also open to being doing work for pay to add whatever it is that some company wants to BK, that's more or less what we've been doing for the last 18 years.\r\n\r\nWill it work? No idea. We have a couple of years to find out. If nothing pans out, open sourcing it seemed like a better answer than selling it off.
    ", + "title": "BitKeeper 的 Open Source 行為" + }, + { + "id": "6563", + "body": "Panopticon 看起來頗不錯,可以直接解機械碼轉成 assembly,再把 flow 畫出來讓人理解:\r\n\r\n\"\"\r\n\r\n不過還不知道遇到 dynamic self-decoding 的程式會怎麼處理,另外我記得好像有些商用的 solution 已經有提供了,不知道相比起來如何。", + "title": "解譯機械碼的 Panopticon" + }, + { + "id": "6564", + "body": "GitHub 推出以 user 數量計費的方案:「Introducing unlimited private repositories」。舊的方案可以參考在「web.archive.org」這邊記錄下來的內容。\r\n\r\n這個方案下的個人帳號會大幅受益:原先最低消費的 USD$7/month 是 5 private repositories,現在變成 unlimited private repositories。\r\n\r\n而企業方案將會大幅調漲,雖然現有的 Plan 還是存在,但有種開始殺雞的味道了。\r\n\r\n以前 USD$200/month 可以買到 125 個 repository,現在只能給 22 個人用。同時因為 GitHub 對 deploy key 的限制,跨 repository 時無法重複使用同一把 key,就需要用到真正的 user account,這點就變成額外的成本了。\r\n\r\n看了一下內部的數字,不是多一倍兩倍的費用,而是多一個數量級...", + "title": "GitHub 大幅調漲企業方案" + }, + { + "id": "6565", + "body": "看了 GizmodoFacebook 的對話,就有種之前某長輩常說的「沒被抓到就不算犯罪喔~」的感覺:「Former Facebook Workers: We Routinely Suppressed Conservative News」。\r\n\r\nGizmodo 接到前員工的線報後,再加上透過關係問到其他的前員工,證實了標題的消息:\r\n\r\n
    Facebook workers routinely suppressed news stories of interest to conservative readers from the social network’s influential “trending” news section, according to a former journalist who worked on the project. This individual says that workers prevented stories about the right-wing CPAC gathering, Mitt Romney, Rand Paul, and other conservative topics from appearing in the highly-influential section, even though they were organically trending among the site’s users.
    \r\n\r\n
    Several former Facebook “news curators,” as they were known internally, also told Gizmodo that they were instructed to artificially “inject” selected stories into the trending news module, even if they weren’t popular enough to warrant inclusion—or in some cases weren’t trending at all. The former curators, all of whom worked as contractors, also said they were directed not to include news about Facebook itself in the trending module.
    \r\n\r\n當然 Facebook 對於這種沒辦法證實的事情是全盤否認,不過再重複一次某長輩的「沒被抓到就不算犯罪喔~」的經典台詞...", + "title": "Facebook 操弄 Trending 裡的新聞" + }, + { + "id": "6566", + "body": "nlp-compromise/nlp_compromise 是一個 JavaScript 寫的 NLP library,網頁上給的用法也很特別...\r\n\r\n過去式:\r\n\r\n
    nlp.text('She sells seashells').to_past()\r\n// She sold seashells
    \r\n\r\n複數形:\r\n
    nlp.noun(\"dinosaur\").pluralize();\r\n// \"dinosaurs\"
    \r\n\r\n還有這種用法:\r\n\r\n
    nlp.statement('She sells seashells').negate().text()\r\n// She doesn't sell seashells
    \r\n\r\n也有這種用法:\r\n\r\n
    nlp.sentence('I fed the dog').replace('the [Noun]', 'the cat').text()\r\n// I fed the cat
    \r\n\r\n抓人出來:\r\n\r\n
    nlp.text(\"Tony Hawk did a kickflip\").people();\r\n// [ Person { text: 'Tony Hawk' ..} ]
    \r\n\r\n不定冠詞:\r\n\r\n
    nlp.noun(\"vacuum\").article();\r\n// \"a\"
    \r\n\r\n還可以猜性別?\r\n\r\n
    nlp.person(\"Tony Hawk\").pronoun();\r\n// \"he\"
    \r\n\r\nstr2num:\r\n\r\n
    nlp.value(\"five hundred and sixty\").number;\r\n// 560
    \r\n\r\n好像是好玩的東西... XD", + "title": "用 JavaScript 寫的 NLP Library" + }, + { + "id": "6567", + "body": "Dropbox 將本來的 SPDY 切換到 HTTP/2 後整理了不少資料:「Enabling HTTP/2 for Dropbox web services: experiences and observations」。\r\n\r\n大多數都是效能的改善,但「Increased latency for POST requests.」這段頗有趣的,找出了 nginx 的 bug:\r\n\r\n\"\"\r\n\r\nPOST 的 latency 大約增加了 50%,而實際追蹤問題發現是 nginx 中 SETTINGS_INITIAL_WINDOW_SIZE 預設值的問題,然後提出 patch 改善:「[nginx] HTTP/2: rewritten handling of request body.」:\r\n\r\n
    There is a small issue with setting `SETTINGS_INITIAL_WINDOW_SIZE` to 0: now when client tries to POST data it needs to wait for an additional RTT(between `send HEADERS` and `recv WINDOW_UPDATE`) to start sending data.
    ", + "title": "Dropbox 從 SPDY 切換到 HTTP/2 發現的現象" + }, + { + "id": "6568", + "body": "Amazon CloudFront 在南韓首爾建立第三個點:「Announcing Third Edge Location in Seoul, Korea for Amazon CloudFront」。\r\n\r\n經濟規模大到可以放第三個點了... 日本因為地理位置的關係,則是東京兩個點與大阪一個點。", + "title": "CloudFront 在南韓首爾建立第三個點" + }, + { + "id": "6569", + "body": "剛剛發現公司的 Slack 網域 kkbox.slack.com 已經上了 CloudFront,測了一些其他的 domain,應該是全部都上了:\r\n\r\n
    gslin@home [~] [15:55/W4] mtr --report kkbox.slack.com\r\nStart: Tue May 17 15:56:06 2016\r\nHOST: home.gslin.org              Loss%   Snt   Last   Avg  Best  Wrst StDev\r\n  1.|-- h254.s98.ts.hinet.net      0.0%    10   16.3  11.7   9.3  18.8   3.1\r\n  2.|-- SNUH-3302.hinet.net        0.0%    10   44.5  13.4   9.0  44.5  10.9\r\n  3.|-- SNUH-3202.hinet.net        0.0%    10    8.8  12.7   8.8  26.8   5.9\r\n  4.|-- TPDT-3012.hinet.net        0.0%    10   12.0  14.3  10.4  19.2   3.1\r\n  5.|-- r4210-s2.hinet.net         0.0%    10    9.8  10.4   9.0  11.4   0.5\r\n  6.|-- 203-75-228-29.HINET-IP.hi  0.0%    10   10.3  10.6   9.2  13.7   1.2\r\n  7.|-- R1011-ASR.tpix.net.tw      0.0%    10   12.1  11.6  10.5  13.2   0.5\r\n  8.|-- 202-133-255-122-static.un  0.0%    10   11.3  10.6   9.8  11.8   0.5\r\n  9.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 10.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 11.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0\r\n 12.|-- server-54-230-215-138.tpe  0.0%    10   11.9  11.2  10.1  12.2   0.3
    \r\n\r\n這樣先前遇到從 HiNetLevel3 常常爛掉的問題應該是可以解決不少?", + "title": "Slack 把服務丟上 CloudFront..." + }, + { + "id": "6570", + "body": "在追 refined-twitter 程式碼的時候,在「refined-twitter/extension/content.js」這邊看到:\r\n\r\n
    const $ = document.querySelector.bind(document);
    \r\n\r\n這樣就可以拿 CSS Selector 掃出元件,程式變得比較好讀... 當然,這個方式不是 fluent interface,沒辦法再依樣串下去。\r\n\r\n用 Google 查了一些資料,看起來至少從 2013 年就有這個技巧了。", + "title": "簡易的 jQuery CSS Selector 替代品" + }, + { + "id": "6571", + "body": "對 8.8.8.8 的 ICMP 數據可以發現今天早上 Google 台灣機房的 DNS Service 做了改變,整個 latency 大幅降低。(因為 mtr 發現後面 traceroute 不到以為爆炸了,跑去看 Smokeping 發現其實是 Google 改善了架構)\r\n\r\n中華電信北區的機房:\r\n\r\n\"\"\r\n\r\n中華電信南區的機房:\r\n\r\n\"\"\r\n\r\n台固機房:(內湖)\r\n\r\n\"\"\r\n\r\n遠傳機房:(忘記是內湖的哪個機房了...)\r\n\r\n\"\"\r\n\r\n遊戲橘子機房:(台北區)\r\n\r\n\"\"", + "title": "Google DNS 在台灣的 Latency 大幅降低" + }, + { + "id": "6572", + "body": "Amazon EC2 推出了 x1.32xlarge:「X1 Instances for EC2 – Ready for Your Memory-Intensive Workloads」。\r\n\r\n看這精美的規格:\r\n\r\n
    Processor: 4 x Intel™ Xeon E7 8880 v3 (Haswell) running at 2.3 GHz – 64 cores / 128 vCPUs.\r\nMemory: 1,952 GiB with Single Device Data Correction (SDDC+1).\r\nInstance Storage: 2 x 1,920 GB SSD.
    \r\n\r\n不過需要申請才能用,目前也只有其中幾區有提供:\r\n\r\n
    If you are ready to start using the X1 instances in the US East (Northern Virginia), US West (Oregon), Europe (Ireland), Europe (Frankfurt), Asia Pacific (Tokyo), Asia Pacific (Singapore), or Asia Pacific (Sydney) Regions, please request access and we’ll get you going as soon as possible.
    \r\n\r\n這樣以後就不能說「用 C4 就對了」...\r\n\r\n\"\"", + "title": "AWS 最新的 x1.32xlarge..." + }, + { + "id": "6574", + "body": "在 Wall Street Journal 上看到 Google 地圖在南韓的法規限制上有許多被改弱的地方,所以試著改變法律規範:「Google Challenges South Korea Over Mapping Restrictions」。\r\n\r\n舉幾張 WSJ 整理出來的圖就很明顯:\r\n\r\n\"\"\r\n\r\n甚至比中國版的還差:(不過怎麼測的 XDDD)\r\n\r\n\"\"", + "title": "Google 地圖在南韓的法規限制" + }, + { + "id": "6575", + "body": "Amazon 打算推出自有品牌產品:「Amazon to Expand Private-Label Offerings—From Food to Diapers」,所以之後會看到 Amazon 牌子的飲料、食物等等的東西:\r\n\r\n
    Amazon.com Inc. in the coming weeks is set to roll out new lines of private-label brands that will include its first broad push into perishable foods, according to people familiar with the matter.\r\n\r\nThe new brands with names like Happy Belly, Wickedly Prime and Mama Bear will include nuts, spices, tea, coffee, baby food and vitamins, as well as household items such as diapers and laundry detergents, these people said.
    \r\n\r\n接下來應該會是大量出現在競爭對手的產品頁面上?完全可以從台灣的超商想像到後續會怎麼做...", + "title": "Amazon 推出自有品牌產品..." + }, + { + "id": "6576", + "body": "Google 今天公佈的資料中說明了 AlphaGo 不是用一般常見的 GPU 加速運算:「Google supercharges machine learning tasks with TPU custom chip」。\r\n\r\n這是特別為 TensorFlow 製作的 ASIC:\r\n\r\n
    The result is called a Tensor Processing Unit (TPU), a custom ASIC we built specifically for machine learning — and tailored for TensorFlow.
    \r\n\r\n\"\"\r\n\r\n而 AlphaGo 用的版本是 TPU 版:\r\n\r\n
    AlphaGo was powered by TPUs in the matches against Go world champion, Lee Sedol, enabling it to \"think\" much faster and look farther ahead between moves.
    \r\n\r\n放 AlphaGo 的機櫃長這樣:\r\n\r\n\"\"\r\n\r\n通常 ASIC 特製的版本會比 FPGA 或是 GPU 快上許多,這代表目前這些沒有大公司撐腰的圍棋軟體要跟 AlphaGo 拼,除非演算法上有重大的突破,不然就得用更大量的設備跟他換...", + "title": "AlphaGo 不是使用 GPU 加速..." + }, + { + "id": "6577", + "body": "VMware 宣佈 Windows 上用 C# 寫的 vSphere Client 退役,發表 HTML5 版本:「Goodbye vSphere Client for Windows (C#) – Hello HTML5」,畫面長這樣:\r\n\r\n\"\"\r\n\r\n總算是推出計畫換用 HTML5 了,之前 Web 版用 Flash 慢到炸...", + "title": "VMware 宣佈 Windows 上的 vSphere Client 退役" + }, + { + "id": "6578", + "body": "在「Google patent: Glue would stick pedestrian to self-driving car after collision」這邊看到因為自動駕駛車的發明才有可能做到的專利。\r\n\r\n一般的情況下,在汽車撞到行人後,駕駛會急忙停下來,而可能會導致後方車輛的追撞,而且可能會導致行人直接飛出去造成更多的傷害。這個專利規劃在車輛前端使用特殊的黏性膠,再透過減速讓行人黏在上面停下來:\r\n\r\n
    The front region of the vehicle may be coated with a specialized adhesive that adheres to a pedestrian, and thus holds the pedestrian on the vehicle in the unfortunate event that the front of the vehicle comes into contact with the pedestrian,
    \r\n\r\n
    The adhesion of the pedestrian to the vehicle may prevent the pedestrian from bouncing off.
    \r\n\r\n專利的示意圖:\r\n\r\n\"\"", + "title": "Google 自動駕駛車保護行人而申請的專利" + }, + { + "id": "6579", + "body": "在「Another Day, Another Hack: 117 Million LinkedIn Emails And Passwords」這邊看到 LinkedIn 在 2012 年的帳號密碼外洩情況比想像中嚴重許多,當時大家認為只有 650 萬筆資料洩漏,但實際上在 2016 年的現在被確認有 1.17 億筆。\r\n\r\n官方也確認 2016 的這份洩漏是正確的,兩份公告在:\r\n\r\n\r\n\r\n很多人都收到 password reset 信件了...", + "title": "LinkedIn 在 2012 年的密碼外洩比想像中嚴重,超過一億筆帳號密碼洩漏" + }, + { + "id": "6582", + "body": "在 Bloomberg 上看到「China Fakes 488 Million Social Media Posts a Year: Study」這篇在討論中國五毛黨在網路上洗言論的數字。原始論文在「How the Chinese Government Fabricates Social Media Posts for Strategic Distraction, not Engaged Argument」這邊。\r\n\r\n這篇論文估算大約有 200 萬人產生了 4.88 億的評論:\r\n\r\n
    The Chinese government has long been suspected of hiring as many as 2,000,000 people to surreptitiously insert huge numbers of pseudonymous and other deceptivewritings into the stream of real social media posts,
    \r\n\r\n
    We estimate that the government fabricates and posts about 488 million social media comments a year.
    \r\n\r\n這個估算頗有趣的... XD", + "title": "估算五毛黨所發表的評論數量" + }, + { + "id": "6583", + "body": "The Verge 的「Google and Facebook still dominate tracking on the web」這篇文章題到了「Online tracking: A 1-million-site measurement and analysis」這個分析報告。\r\n\r\n現在有很多會 track 使用者行為的 javascript,或是 free cdn 服務,而報告的作者想要知道「哪個公司收集到最多最完整的資料」。\r\n\r\n不過 The Verge 給的標題很奇怪,因為 Google 能追蹤的量遠遠超越 Facebook:\r\n\r\n\"\"\r\n\r\nGoogle Analytics 第一名不怎麼意外,DoubleClick 是網路上最大的廣告服務也不意外... 前五名都是 Google 的服務,後面還有一堆也都還是 Google 的服務。", + "title": "Google 對於行為分析具有壓倒性的資料" + }, + { + "id": "6584", + "body": "在「Google Works Better With Chrome」這邊看到 Google 開始用更激烈的方式推銷自家的 Google Chrome,使用非 Google Chrome 的人在 Google 搜尋的首頁會有機率出現這樣的推銷文案:\r\n\r\n\"\"\r\n\r\n這則 Twitter 上的發言講的頗不錯的:\r\n\r\n

    “Google works better with Chrome.”

    Microsoft was sued for less than that.

    (I’m too old for this shit.) pic.twitter.com/IL7JLQiK7o

    — F. Nonnenmacher (@ubiquitic) May 7, 2016
    \r\n", + "title": "Google 開始利用市場優勢推銷自家的瀏覽器" + }, + { + "id": "6585", + "body": "Gmail 的 SMTP 決定在近期內拔掉 SSLv3 與 RC4 了:「Disabling support for SSLv3 and RC4 for Gmail SMTP in 30 days」。\r\n\r\nGmail 的 SMTP 應該是 Google 少數還支援 SSLv3 與 RC4 的服務?總算是要拔了...", + "title": "Gmail 的 SMTP 將拔掉對 SSLv3 與 RC4 的支援" + }, + { + "id": "6586", + "body": "以往 GitHub 在個人頁面上的 contribution 只會計算 public repository,現在則可以設定將 private repository 也統計進去:「More contributions on your profile」。\r\n\r\n\"\"\r\n\r\nprivate repository 的部份只會顯示數量,不會公開任何細節,像是我用 incognito mode (無痕模式) 可以看到在沒有登入時的資訊:\r\n\r\n\"\"\r\n\r\n但如果是登入後就會有詳細資料:\r\n\r\n\"\"", + "title": "GitHub 提供新的 contribution (小綠點) 計算方式" + }, + { + "id": "6587", + "body": "由於 app 排序受到評價影響,現在幾乎都把這塊當作是重點。\r\n\r\nBasecamp 的人寫了一篇他們怎麼做的方法:「Getting from ⭐️⭐️ to ⭐️⭐️⭐️⭐️⭐️」。\r\n\r\n傳統的作法類似這樣,使用者沒有太多動力,而且看到時頗煩人:(因為每個 app 幾乎都這樣做)\r\n\r\n\"\"\r\n\r\n而 Basecamp 決定告訴使用者新版本有哪些新功能,然後邀請他評價:\r\n\r\n\"\"\r\n\r\n這成功拉高了評價分數,並且也推廣新功能。", + "title": "Basecamp 對「請使用者評價五顆星」的作法" + }, + { + "id": "6588", + "body": "最近最歡樂的 DMCA Takedown 消息,FoxFamily Guy (蓋酷家庭) 的劇情裡引用了一段從 YouTube 上的遊戲影片 (Double Dribble - NES - Automatic Shot),然後節目播出後 Fox 發 DMCA Takedown 下架掉這個影片:「Fox 'Stole' a Game Clip, Used it in Family Guy & DMCA'd the Original」。\r\n\r\n\"\"\r\n\r\nFamily Guy 那段片段在「Family Guy Double Dribble」這邊可以看到。\r\n\r\n只要在沒有嚴格的懲罰機制 (懲罰「偽造版權擁有人」的行為),這種大公司侵犯小市民權利的現象只會愈來愈嚴重...", + "title": "最近最歡樂 (?) 的 DMCA Takedown..." + }, + { + "id": "6589", + "body": "很久之前被 ccn 介紹 Pushover,可以很簡單的透過 API 送推播,這樣就可以用來代替簡訊發給自己。\r\n\r\n第一次申請有七天的試用期可以用,試用期滿後每個 device 的費用是一次性的 USD$4.99,在 iOS 裝置上可以透過 IAP (Apple) 購買,Android 裝置則是透過 IAB 購買。\r\n\r\n官網上可以看到 API 設計很簡單,user token + application token 用 POST 帶進去就可以發出去了。\r\n\r\n就算不透過 API 寫,也可以透過 IFTTT 串接起來,像是我設定中文維基百科上的條目「Kalafina」,有修改就通知我:\r\n\r\n\"\"", + "title": "用 Pushover 當簡訊..." + }, + { + "id": "6590", + "body": "兩篇文章與一則 tweet 剛好可以一起看。\r\n\r\n兩篇文章分別是「Don't Use Allo」講 Google Allo 預設沒有加密的問題,與「How Technology Hijacks People’s Minds — from a Magician and Google’s Design Ethicist」講如何設計產品來改變人的行為。\r\n\r\n在市場上的領先者 Whatsapp 已經啟用預設 end-to-end encryption 後,Google Allo 之所以不是預設加密的原因,是基於這樣的設計方法,因為 Google 並不想要加密:\r\n\r\n
    Businesses naturally want to make the choices they want you to make easier, and the choices they don’t want you to make harder. Magicians do the same thing. You make it easier for a spectator to pick the thing you want them to pick, and harder to pick the thing you don’t.
    \r\n\r\n而這則 tweet 剛好解釋了這個方法背後幾個可能的利害關係,大公司受到政府單位的施壓而妥協:\r\n\r\n

    The FBI stopped asking for backdoors a while back. Now they are just asking firms to not encrypt by default. The FBI will like Google Allo.

    — Christopher Soghoian (@csoghoian) May 18, 2016
    \r\n\r\n\r\n剛剛好都是最近的文章,整起來剛剛好...", + "title": "Google 刻意讓 Allo 不安全的方法" + }, + { + "id": "6591", + "body": "在「Achieving a Perfect SSL Labs Score with Go」這邊提到要如何在 Go 上面達到 SSL LabsSSL Server Test 的 Perfect Score (完全滿分的 A+),但其實裡面大多數的東西都應該適用於其他地方。\r\n\r\n其中 Cipher Strength 這邊讓人非常意外的是,只有在關閉 HTTP/2 的情況下才有可能達到 100%,因為 HTTP/2 規定強制要支援 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,而這是 128bits cipher,會導致無法達到 100%:\r\n\r\n
    No HTTP/2 for you! - HTTP/2 was enabled by default in go 1.6, however HTTP/2 mandates the support of the cipher suite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. As this is a 128bit cipher, it needs to be removed. The only way to achieve a perfect score now is to disable HTTP/2.
    \r\n\r\n這被點出來後不知道會有什麼改變... (無論是 HTTP/2 或是 SSL Labs)", + "title": "在 SSL Labs 上拿到 Perfect Score (完全滿分的 A+)" + }, + { + "id": "6592", + "body": "剛剛在辦公室裡跟 Gaod & Rianol 抱怨 AWS Certificate Manager (AWS ACM) 只有 us-east-1 與 CloudFront 可以用,結果 Gaod 說已經開放全區了... (然後我跟 Rianol 一臉茫然)\r\n\r\n在 AWS Certificate Manager FAQs 這邊這樣寫:\r\n\r\n
    Q: In what Regions is ACM available?\r\n\r\nPlease visit the AWS Global Infrastructure pages to see the current Region availability for AWS services. Certificates provisioned in the US East (Northern Virginia) Region, and associated with an Amazon CloudFront distribution, are distributed to the geographic locations configured for your distribution.
    \r\n\r\n在官方的 FAQ 上面寫只有 us-east-1 以及 CloudFront。但在 User Guide「Supported Regions - AWS Certificate Manager」這邊則是寫上個禮拜的 2016/05/16 開放:\r\n\r\n\"\"\r\n\r\n大概是負責的人跑去休假了,所以 User Guide 改完後還沒把 FAQ 改好請 Jeff Barr 發文章公告宣佈吧,感覺是個資安上可以宣傳的事情?\r\n\r\n這樣之後在 AWS 上就不用自己搞 SSL certificate 再 import 進去了,ELB 可以直接吃 ACM 產生的 SSL certificate。\r\n\r\nUpdate:其實官方有發稿,在「AWS Certificate Manager now available in more regions」這邊,不過 FAQ 還是舊的 XD", + "title": "AWS Certificate Manager (ACM) 開放全區" + }, + { + "id": "6594", + "body": "好像跟當初外面傳言的不太一樣... Anyway,Twitter 宣佈放寬 140 字限制:「Coming soon: express even more in 140 characters」。\r\n\r\n這個限制的解除一直都有傳言,不過最後出來的結果跟預期的好像不太一樣,主要是三種用法將不計算在 140 字內。分別是 reply 時的 @username、貼圖貼影片時的 url、引用 tweet 時被引用的文字。\r\n\r\n所以並不是完全放寬 140 字限制,只是把某些計算方式放寬...", + "title": "Twitter 宣佈要放寬 140 字限制..." + }, + { + "id": "6595", + "body": "Google Cloud Platform 宣佈加開美西與日本:「Google Cloud Platform adds two new regions, 10 more to come」。\r\n\r\n所以 Google 在這塊的經濟規模夠撐了?還是先投資?純粹猜測還蠻有可能是後者,因為新宣佈的這兩個機房的位置都比以前機房好:美西對於矽谷的幫助看起來會不少 (之前離矽谷最近的機房在美國中部),而日本則對於整個亞洲區還是極重要,因為一般 ISP 都是在日本、香港與新加坡交換,台灣一般來說需要調 routing 才能配合。\r\n\r\n這看起來比較有得跟 AWS 打了?\r\n\r\nGoogle 也放話到 2017 年會加更多機房:\r\n\r\n
    These are the first two of more than 10 additional GCP regions we'll be adding to our network through 2017.
    ", + "title": "Google Cloud Platform 宣佈加開美西與日本" + }, + { + "id": "6596", + "body": "在「HTTP Status Codes」這邊看到精美的 HTTP Reponse Code Cheatsheet。\r\n\r\n\"\"\r\n\r\n設計 API 以及每次都忘記 301/302 的差異很好用... o_o", + "title": "漂亮的 HTTP Response Code Cheatsheet" + }, + { + "id": "6597", + "body": "Google Chrome 剛剛出了 51 版:「Stable Channel Update」。\r\n\r\n除了界面的改變外,對效能最主要的改變就是 SPDY 被拔掉,HTTP/2 的 NPN 支援也被拔掉:「Transitioning from SPDY to HTTP/2」:\r\n\r\n
    To better align with Chrome's release cycle, SPDY and NPN support will be removed with the release of Chrome 51.
    \r\n\r\n又有一波 migrate 功夫要做了...", + "title": "Google Chrome 51 出版,SPDY 被拔掉,HTTP/2 只支援 ALPN" + }, + { + "id": "6598", + "body": "在「Wekby APT Gang Using DNS Tunneling for Command and Control」這邊看到用 DNS 做為控制的後門系統,原報導是「New Wekby Attacks Use DNS Requests As Command and Control Mechanism」。\r\n\r\n用 DNS 控制的穿透性比 HTTPS 高不少,被拿來做為 APT 類的攻擊威脅高不少...", + "title": "用 DNS 控制的後門" + }, + { + "id": "6600", + "body": "各類的車機裝置 (像是嵌入式的 tablet) 在 2016Q1 時成為美國行動電信新客戶的來源,佔了 1/3 的量:「A third of new cellular customers last quarter were cars」。\r\n\r\n\"\"\r\n\r\n會有愈來愈多裝置連網...", + "title": "車機成為行動電信新客戶的來源" + }, + { + "id": "6601", + "body": "GoogleAOSP 裡加入對 Raspberry Pi 3 的支援:「Google to bring official Android support to the Raspberry Pi 3」,repository 可以在「device/pifoundation/rpi3/」這邊看到,目前是空的,不過這讓大家就有很多想像了:\r\n\r\n
    For now, the Pi 3 device tree is empty with only the comment \"initial empty repository\" accompanying it. The repository should soon start to fill with code, though.
    \r\n\r\n感覺對 Raspberry Pi 注入了不少活力... (以及估值 XDDD)", + "title": "Google 將 Raspberry Pi 3 加到 AOSP 裡" + }, + { + "id": "6602", + "body": "在「You Don't Need JavaScript for That!」這邊看到好多讓人懷念的技巧,用純 css 做到很多動態效果 (現在 browser 對 css 的支援比以前好很多,這些技巧應該都沒問題了):\r\n\r\n\r\n\r\n以前前端的人會講 accessibility,不過現在好像沒 javascript 就沒人權了...", + "title": "在這個純 CSS 技巧被遺忘的年代,許多可以用 CSS 就做到的效果..." + }, + { + "id": "6603", + "body": "DigitalOcean 開了印度機房:「Introducing Our Bangalore Region: BLR1」。\r\n\r\n在 Bangalore (邦加羅爾) 建立機房... 愈來愈多公司在印度提供服務 :o", + "title": "DigitalOcean 開印度機房..." + }, + { + "id": "6604", + "body": "傳統的作法 (自己擁有機房時) 就是在兩個機房中間建立 site-to-site VPN (通常是 IPsec),然後再用 MySQL 的 replication 接起來,而現在 Amazon Aurora 直接在界面上支援這件事情,可以在網頁上點一點開起來:「New – Cross-Region Read Replicas for Amazon Aurora」。\r\n\r\n不過好像沒講到跨區的 VPC 對接設定問題?所以是透過他們自己的 network 接起來?這樣的話流量費用要怎麼算?", + "title": "Amazon Aurora 支援跨區域 Read Replica" + }, + { + "id": "6605", + "body": "在 Twitter 上看到「Efficient High-Speed WPA2 Brute Force Attacks using Scalable Low-Cost FPGA Clustering」這篇論文,講比較便宜的 FPGA 破 WPA2 的最佳化。主要的成果可以從表格看到,這是 FPGA 的:\r\n\r\n\"\"\r\n\r\nZtex 1.15y 應該是「USB-FPGA Module 1.15y: Quad-Spartan 6 LX150 FPGA Board with USB 2.0 Microcontroller」這組,而 Ztex 2.16 應該是「USB-FPGA Module 2.16: Artix 7 XC7A200T FPGA Board with USB 2.0」,價位 (美金) 也都標在上面了。\r\n\r\n而這是 GPU 的效能:\r\n\r\n\"\"\r\n\r\n可以看出來 FPGA 的速度還蠻快的,但用電相當省。不過不得不說 WPA2 用的 PBKDF2 的確讓破解的難度高了很多,讓我想到這個:\r\n\r\n\"\"", + "title": "用 FPGA 破 WPA2" + }, + { + "id": "6606", + "body": "Amazon 透過各種技術整合的比較好 (像是先前發表無人機空運的技術 Amazon Prime Air),而 Wal-Mart 則是跟 Uber/Lyft 這樣的公司配合:「Wal-Mart Plans to Test Grocery Delivery Through Uber, Lyft」。\r\n\r\n不過可以看到運費不算低,如果買的東西不多的話:\r\n\r\n
    The move steps up competition with Amazon’s burgeoning grocery-delivery service and provides a potential new avenue of growth for Uber and Lyft. The idea is to let Wal-Mart customers pick out groceries online and then have employees fill the order and give it to one of the ride-hailing companies’ drivers. Shoppers will pay a $7-to-$10 delivery charge to Wal-Mart to have the groceries brought to their door.
    ", + "title": "Wal-Mart 與 Uber/Lyft 合作迎戰 Amazon" + }, + { + "id": "6608", + "body": "由 MPAA 資助的報告顯示 DVD 的發行時間差異導致盜版:「DVD Release Delays Boost Piracy and Hurt Sales, Study Shows」,報告在「Windows of Opportunity: The Impact of Piracy and Delayed International Availability on DVD Sales」這邊可以看到。\r\n\r\n用真實資料計算得到:\r\n\r\n
    \"When we run our regressions on Spain and Italy alone, we observe a 10% drop in sales for every 10-day delay in legal availability, as compared to a 2% drop in sales for every 10-day delay in the entire sample,\" the paper reads.
    \r\n\r\n
    \"Our results suggest that an additional 10-day delay between the availability of digital piracy and the legitimate DVD release date in a particular country is correlated with a 2-3% reduction in DVD sales in that country,\" the researchers write.
    \r\n\r\n時效的重要...", + "title": "DVD 的發行時間差異導致盜版" + }, + { + "id": "6610", + "body": "看到「libdill: Structured Concurrency for C」這個東西,在 C 裡實作了兩個不同種類的 concurrency,一個是 proc (process-based) 一個是 go (corouting-based)。\r\n\r\n支援的 function 算是蠻清晰的,範例也很清楚:\r\n\r\n
    #include <libdill.h>\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n\r\ncoroutine int worker(const char *text) {\r\n    while(1) {\r\n        printf(\"%s\\n\", text);\r\n        msleep(now() + random() % 500);\r\n    }\r\n    return 0;\r\n}\r\n\r\nint main() {\r\n    go(worker(\"Hello!\"));\r\n    go(worker(\"World!\"));\r\n    msleep(now() + 5000);\r\n    return 0;\r\n}
    \r\n\r\n也有 channel 的觀念可以用,之後需要寫玩具的話應該是個好東西...", + "title": "在 C 裡 Concurrency 的 Library" + }, + { + "id": "6611", + "body": "在「An Analysis of the JavaScript Package Ecosystem npm」這篇看到作者把 npm 的 dependency 當作資料來源,計算出 npm 的 PageRank:\r\n\r\n\"\"\r\n\r\n可以看到 Underscore.js 的 PageRank 一直都維持在第一位... 這個方法頗有趣的,不知道有沒有其他語言的 :o", + "title": "把 npm 的 dependency 當作 PageRank 的資料來源,分析 npm 目前的生態..." + }, + { + "id": "6614", + "body": "看到 Chromium 將會推出 Headless 模式:\r\n\r\n

    Headless Chrome is coming so soon ?!!! Say goodbye to the myriad of hacks to run Chrome and phantom on CI. ?https://t.co/ucDBbgpBO0

    — Sam Saccone (@samccone) June 4, 2016
    \r\n\r\n\r\n可以在「Implement a headless mode for Chrome」看到從去年開始一直實作,雖然還沒做完,但看起來還算活躍,之後可以更接近實際環境測試了...", + "title": "Headless Chrome" + }, + { + "id": "6615", + "body": "上次主力用 Android 應該是 HTC Desire 時代了,那個時候跑得是 2.2。\r\n\r\n總算把 LG G2 (D802) 刷完機器了 (刷了半年,每次都卡關 XDDD),這次刷了 CyanogenModOpen GApps,儘量都用 command line 來刷。\r\n\r\n
    adb devices # 看裝置順便打 RSA public key 進去\r\nadb shell # 進去後可以 ls/su 看一看\r\nadb push filename.zip /sdcard/\r\nadb reboot recovery
    \r\n\r\nAndroid Marshmallow (6.0) 另外多了對權限的管理,這也是想刷到 6.0 的原因之一,使用者可以隨時 revoke 掉某些權限 (沒有處理好的會 crash XD):\r\n\r\n
    Android Marshmallow introduces a redesigned application permission model: there are now only eight permission categories, and applications are no longer automatically granted all of their specified permissions at installation time. An opt-in system is now used, in which users are prompted to grant or deny individual permissions (such as the ability to access the camera or microphone) to an application when they are needed for the first time. Applications remember the grants, which can be revoked by the user at any time.
    \r\n\r\n其他安裝的流程主要都是苦工了,尤其是 2FA 是少數為了安全性只能一個一個換的東西 (不提供 export,都是用手機提供的 HSM 避免被盜走),剛好趁機會把自己與公司用到的 2FA 帳號分開。\r\n\r\nAndroid 上的 Google Authenticator 不怎麼好用 (不能調整位置,另外不希望隨時都給密碼),測了測 Red Hat 出的 FreeOTP Authenticator 算是比較好用的,就把 FreeOTP Authenticator 拿來給個人用,Google Authenticator 拿來給公司的帳號用。\r\n\r\n繼續熟悉現在的 Android 環境,應該會有一陣子不習慣...", + "title": "把主力手機從 iPhone 換到 Android" + }, + { + "id": "6617", + "body": "自動化機制中,要確保可以拿到最新的 Git Repository 最保險的方法是 rm -rf 掉再重新 clone 一份,但對於稍微大一點的 repository 速度就太慢了,所以得想辦法保留 repository 加快速度。\r\n\r\n目標是想要處理 submodule 的變更,並且仍然可以處理 force push 時的災難,避免需要人工介入... 這在建各種自動化機制時常常會用到,像是用 Fortify SCA 白箱掃描,或是 CI & CD 機制上。\r\n\r\n
    \r\nBRANCH=master\r\ngit fetch --force\r\ngit reset --hard origin/\"${BRANCH}\"\r\ngit submodule sync --recursive\r\ngit submodule update --init --force\r\ngit clean --force --force -d -x\r\ngit checkout \"${BRANCH}\" --force
    \r\n\r\n用了很多 --force 主要是要處理 force push 後的收拾 :o\r\n\r\n其實如果想要處理的更好的話,可以在發生錯誤時改走 mv (保留屍體) + 重新 clone 的機制,並且發警報出來讓管理者事後研究,這樣發生問題當下還是可以先提供服務。\r\n\r\n不過這個想法還只在腦袋裡還沒寫... XD", + "title": "清出一個乾淨的 Git Repository" + }, + { + "id": "6618", + "body": "Netflix 在發了一篇很長的文章,說明怎麼評估 video quality:「Toward A Practical Perceptual Video Quality Metric」,文章雖然有點長,但其實還蠻好懂的...\r\n\r\n講的白話一點,Netflix 想要做各種壓縮方式的改善,但在超大的量的情況下 (scale) 缺乏自動化打分數的機制:\r\n\r\n
    All of the challenging work described above hinges on one fundamental premise: that we can accurately and efficiently measure the perceptual quality of a video stream at scale.
    \r\n\r\n如果先不考慮 scale 問題,影片的評估方式有人工處理以及常見的計算方法 (像是 MSEPSNRSSIM):\r\n\r\n
    Traditionally, in video codec development and research, two methods have been extensively used to evaluate video quality: 1) Visual subjective testing and 2) Calculation of simple metrics such as PSNR, or more recently, SSIM.
    \r\n\r\n前者因為牽涉到人工,所以不 scale,而後者跟「人的觀感」還是不夠正相關:\r\n\r\n
    Without doubt, manual visual inspection is operationally and economically infeasible for the throughput of our production, A/B test monitoring and encoding research experiments.
    \r\n\r\n
    Although researchers and engineers in the field are well-aware that PSNR does not consistently reflect human perception, it remains the de facto standard for codec comparisons and codec standardization work.
    \r\n\r\nNetflix 的作法其實很簡單:(但是每一步都很仔細)\r\n\r\n\r\n\r\n沒什麼特別發明出來的演算法,只是苦工 XDDD", + "title": "Netflix 評估影片品質的方法" + }, + { + "id": "6619", + "body": "在「APP STORE 2.0」這邊提到了正式的訪談:\r\n\r\n
    In a rare pre-WWDC sit-down interview with The Verge, Phil Schiller, Apple’s senior vice president of worldwide marketing, said that Apple would soon alter its revenue-sharing model for apps.
    \r\n\r\n70/30 的拆分方式有改變,並且擴大開放的範圍:\r\n\r\n
    While the well-known 70 / 30 split will remain, developers who are able to maintain a subscription with a customer longer than a year will see Apple’s cut drop down to 15 percent. The option to sell subscriptions will also be available to all developers instead of just a few kinds of apps. \"Now we’re going to open up to all categories,\" Schiller says, \"and that includes games, which is a huge category.\"
    \r\n\r\n這張圖清楚的道出了這次的改變:\r\n\r\n\"\"\r\n\r\n另外在 John Gruber 跟 Phil Schiller 的電話訪談「The New App Store: Subscription Pricing, Faster Approvals, and Search Ads」提到了更多項目。", + "title": "蘋果 App Store 收費模式的改變" + }, + { + "id": "6620", + "body": "現在是 Firefox 47,也就是下個版本就會引入 Multi-process 模式了:「Firefox 48 finally enables Electrolysis for multi-process goodness」。\r\n\r\nMulti-process 模式也就是 Electrolysis,這對權限的分離 (sandbox) 以及效能的提昇有著顯著的幫助:\r\n\r\n
    Electrolysis functionality hosts, renders, or executes web related content in background child processes which communicate with the \"parent\" Firefox browser via various ipdl protocols. The two major advantages of this model are security and performance. Security improvements are accomplished through security sandboxing, performance improvements are born out of the fact that multiple processes better leverage available client computing power.
    \r\n\r\n這算是個開頭,地基打出來以後,之後就可以拆更多東西到其他的 child process。", + "title": "Firefox 48 將引入 Multi-process 模式" + }, + { + "id": "6621", + "body": "在 Python 領域裡常用 pip 安裝軟體:\r\n\r\n
    $ pip install reqeusts
    \r\n\r\n或是:\r\n\r\n
    $ sudo pip install reqeusts
    \r\n\r\n其他的平台也大致類似於這樣的動作。而在「Typosquatting programming language package managers」這篇文章裡,作者用 typo 之類的方式列出可能的名稱,像是這樣的名稱:\r\n\r\n
    $ sudo pip install reqeusts
    \r\n\r\n然後在這三個平台上發動攻擊,上傳了數百個套件並且觀察:\r\n\r\n
    All in all, I created over 200 such packages and equipped them with a small program and uploaded them over the course of several months. The idea is to add some code to the packages that is executed whenever the package is downloaded with the installing user rights.
    \r\n\r\n而這是「成果」:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "在 Python 的 pip、Nodejs 的 npm、Ruby 的 RubyGems 上面放木馬研究?" + }, + { + "id": "6622", + "body": "GitHub 正式宣佈支援 HTTPS:「HTTPS for GitHub Pages」。\r\n\r\n其實對使用者來說,前面的 CDN 伺服器已經支援 HTTPS 很久了,但因為之前從 CDN 到 GitHub 這端沒加密,所以一直都不算是正式支援:\r\n\r\n
    You have been able to request Pages sites over HTTPS for some time, but we refrained from officially supporting it because the traffic from our CDN to our servers wasn't encrypted until now.
    \r\n\r\n另外,新建立的 GitHub Pages 都強制上 HTTPS:\r\n\r\n
    Starting next Wednesday (June 15, 2016, 12pm PDT), HTTPS enforcement will be required for all new GitHub Pages sites.
    ", + "title": "GitHub Pages 正式支援 HTTPS" + }, + { + "id": "6623", + "body": "jQuery 3.0 出版了,不過也沒什麼關注度了:「jQuery 3.0 Final Released!」。\r\n\r\n就功能而言已經進入 maintenance mode 了...", + "title": "JavaScript^WjQuery 3.0!" + }, + { + "id": "6624", + "body": "Microsoft Azure 宣佈支援 FreeBSD:「Microsoft has created its own FreeBSD image. Repeat. Microsoft has created its own FreeBSD image」,Microsoft 的正式公告在這:「FreeBSD now available in Azure Marketplace」。\r\n\r\nMicrosoft 所作的 patch 都有進 10.3-RELEASE 裡,主要是對於 Hyper-V 虛擬化後的效能補強:\r\n\r\n
    The majority of the investments we make at the kernel level to enable network and storage performance were up-streamed into the FreeBSD 10.3 release, so anyone who downloads a FreeBSD 10.3 image from the FreeBSD Foundation will get those investments from Microsoft built in to the OS.
    \r\n\r\n像是 10Gbps 網路這部份就有明顯的改善:\r\n\r\n
    For example, our measured networking throughput on a 10Gb network on FreeBSD 10.1 was 2Gbps. With 10.3, we’ve been able to achieve over 9Gbps in testing
    \r\n\r\n不過我覺得宣傳意義比實質意義重一些...", + "title": "Microsoft Azure 宣佈正式支援 FreeBSD" + }, + { + "id": "6627", + "body": "一個月前我決定把瀏覽器的 JavaScript 預設關掉:「把 Google Chrome 預設的 JavaScript 關閉,開白名單...」,包括後來「改用 Simple JavaScript Toggle 切換 Google Chrome 的 JavaScript」試著找出快速暫時性切換的方案。\r\n\r\n跑了這一個月下來,就好處來說,在一個月前的文章就有提到了,到是遇到不少問題 (然後找到各種方法解掉)。\r\n\r\n主要的問題是電子商務網站幾乎都不會動 (包括信用卡刷卡網站),尤其是刷卡階段常用 HTTP POST,沒辦法靠 Simple JavaScript Toggle 在失敗時切過去 (會被刷卡系統偵測到重複送出而擋下),必須設白名單避免問題。\r\n\r\n另外是愈來愈多內容性質的網站再沒有 JavaScript 下就不會動,不過這種性質的網站在 Google Chrome 上可以靠 Readability 來解決,還順便把版面給搞定了,不算是什麼大問題。\r\n\r\n應該會繼續用下去...", + "title": "把 JavaScript 關閉一個月後的其他感想" + }, + { + "id": "6628", + "body": "tl;dr:Facebook 認為這個功能是 feature,不是 bug。\r\n\r\n在「Why you shouldn’t share links on Facebook」這邊作者發現在 Facebook 上貼的「任何一個連結」都會產生 object id,而任何一個 object id 都可以直接取得 url,無論權限設定,像是這樣:\r\n\r\n\"\"\r\n\r\n而 Facebook 認定這是 feature 而非 bug:\r\n\r\n\"\"\r\n\r\n可以想像 NSA 之類的單位與地下組織開始狂掃...", + "title": "Facebook 上貼的所有的連結都是公開的" + }, + { + "id": "6629", + "body": "在 HiDPI 4K 螢幕下挑字型的基準跟以往普通 DPI 螢幕完全不同。以往會受到當畫素不夠時的限制,在 HiDPI 下就不需要考慮這點了...\r\n\r\n我三不五十就會換個字型用 (換心情),所以之後有可能會再換掉... 這次挑選的基準有三個:\r\n\r\n\r\n\r\n我把 fontconfig 設定放在 99-local.conf 這邊,有興趣的可以直接拉回去丟到 /etc/fonts/conf.d/ 裡用...\r\n\r\nAndada 是拿來定義 sans 的,長這樣:(出自「Andada Font Free by Huerta Tipográfica」)\r\n\r\n\"\"\r\n\r\nPT Sans Captain 是拿來定義 serif 的,長這樣:(出自「PT Sans Font Free by Paratype」)\r\n\r\n\"\"\r\n\r\nHack 是拿來定義 monospace 的,長這樣:(出自「Hack Font Free by Chris Simpkins」)\r\n\r\n\"\"", + "title": "換 Ubuntu 的字型... (Andada、PT Sans Captian、Hack)" + }, + { + "id": "6632", + "body": "CloudFlare 一直加海外的點,在東南亞加到平均 latency 比美國低... 這有點不太像話 XD 總算是記得要加強美國的 latency 了:「Hello, Colorado! CloudFlare's 82nd Data Center is Live in Denver」。\r\n\r\n這次加在丹佛剛好是目前美國的點裡面最弱的一環:先前離 CloudFlare 最近的機房應該是 Phoenix 或是 Dallas,都大約在 600km 左右,latency,而網路也不會直線連接,所以這次加上去後的改善很明顯:\r\n\r\n\"\"\r\n\r\n而也宣佈了美國的大幅擴建計畫:\r\n\r\n
    Denver joins CloudFlare's existing United States data centers in Ashburn, Chicago, Dallas, Los Angeles, Miami, Minneapolis, Phoenix, San Jose, and Seattle. In the continued pursuit of faster performance, we have data centers at another ten North American cities in the works.
    \r\n\r\n另外這個禮拜還預定要再宣佈一個新的點:\r\n\r\n
    Our week of expansion isn't done. Tomorrow, we head to one of the world's largest cities.
    ", + "title": "CloudFlare 總算記得要加美國的點了..." + }, + { + "id": "6633", + "body": "在「Make Sure DSA Signing Exponentiations Really are Constant-Time」這篇文章裡面,直接透過 end-to-end 的 timing attack 打爆 (也就是透過 internet 觀察攻擊),而不需要在同一台機器上對 cache 之類的區域攻擊:\r\n\r\n
    A unique feature of our work is that we target common cryptographic protocols. Previous works that demonstrate cache-timing key-recovery attack only target the cryptographic primitives, ignoring potential cache noise from the protocol implementation. In contrast, we present end-to-end attacks on two common cryptographic protocols: SSH and TLS. We are, therefore, the first to demonstrate that cache-timing attacks are a threat not only when executing the cryptographic primitives but also in the presence of the cache activity of the whole protocol suite.
    \r\n\r\n而且次數相當的少,就可以 key recovery:\r\n\r\n
    260 SSH-2 handshakes to extract a 1024/160-bit DSA host key from an OpenSSH server, and 580 TLS 1.2 handshakes to extract a 2048/256-bit DSA key from an stunnel server.
    \r\n\r\nCVE 編號為 CVE-2016-2178OpenSSL 全系列 (包括 fork 出去的版本) 與 OpenSSH 只要是 DSA 的實作都中獎...", + "title": "OpenSSL 的 DSA 被 Side-channel attack 打爆" + }, + { + "id": "6634", + "body": "Linode 的 13 歲禮物:「Linode’s 13th Birthday – Gifts for All!」。包括了記憶體的升級計畫:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
    Old PlanNew PlanPrice
    Linode 1 GBLinode 2 GB$10/mo ($0.015/hr)
    Linode 2 GBLinode 4 GB$20/mo ($0.03/hr)
    Linode 4 GBLinode 8 GB$40/mo ($0.06/hr)
    Linode 8 GBLinode 12 GB$80/mo ($0.12/hr)
    Linode 16 GBLinode 24 GB$160/mo ($0.24/hr)
    Linode 32 GBLinode 48 GB$320/mo ($0.48/hr)
    Linode 48 GBLinode 64 GB$480/mo ($0.72/hr)
    Linode 64 GBLinode 80 GB$640/mo ($0.96/hr)
    Linode 96 GBLinode 120 GB$960/mo ($1.44/hr)
    \r\n\r\n比較小的機器都是 double RAM,比較大的機器就沒那麼明顯了... 但這樣就超越 DigitalOcean 的規格,而且還領先其他 VPS 不少。\r\n\r\n不過由於東京機房已經滿了,這次升級不包括在內,但也透漏了東京的新機房將會在今年年底前啟用:\r\n\r\n
    Unfortunately, since Tokyo is sold out, the upgrade is not available there. We hope to have our second Tokyo facility online before the end of the year.
    \r\n\r\n是個好消息 XD", + "title": "Linode 記憶體升級,以及新的日本機房計畫" + }, + { + "id": "6636", + "body": "如同之前 CloudFlare 預告的,在莫斯科機房啟用了:「Moscow, Russia: CloudFlare’s 83rd data center」。\r\n\r\n先前大多都是透過瑞典或是德國的機房服務,現在變成在當地直接交換:\r\n\r\n
    Previously, delivery of nearly four million Internet applications on CloudFlare to over 100 million Internet users in Russia occurred mostly from our Stockholm and Frankfurt data centers. By now localizing that delivery, we are helping shave latency down by over 20ms for a majority of Russian users.
    \r\n\r\n這樣整個歐洲的據點算完整了... 接下來應該是非洲與看對北美機房了。", + "title": "CloudFlare 的莫斯科機房啟用" + }, + { + "id": "6637", + "body": "Amazon CloudFront 在印度成立第三個機房,在首都新德里 (New Delhi),前兩個是孟買 (Mumbai) 與清奈 (Chennai):「New Edge Location in New Delhi, India for Amazon CloudFront and Amazon Route 53」。\r\n\r\n不過 CloudFront 在台灣的情況還是沒有很好,常常被導去國外 (不分 ISP),相較於其他 CDN 還是覺得不太行... :/", + "title": "CloudFront 在印度的第三個機房" + }, + { + "id": "6638", + "body": "作者提到了現在的影音廣告愈來愈誇張:「A few months ago, I brought to light the insane state of today's advertising...」。\r\n\r\n作者放了一個空白頁面,裡面只放了一個影音廣告,然後打開後發現,光是一個影音廣告就會產生 5559 個連線 (喂喂) 與 53MB 的流量,而且還會無止盡的成長 (不會停,會一直讀取新的廣告):\r\n\r\n
    To showcase just how evil they still are, I took a single AdX ad tag and put it on an otherwise empty page. A static image ad loads, but it's secretly a VPAID one. It then randomly switches to a video, then back to a static image, then back again - it's like a never-ending self-reloading cascade of garbage.
    \r\n\r\n
    Right now after several minutes of just leaving this one single ad open, I'm at 53MB downloaded and 5559 requests. By the time I finished typing this, I was at 6140 requests. A single ad did this. Without reloading the page, just leaving it open.
    \r\n\r\n\"\"\r\n\r\n作者把過程錄了下來,好慘啊...:\r\n\r\n", + "title": "愈來愈吃資源的影音廣告 (VPAID)" + }, + { + "id": "6642", + "body": "常看到這種圖,但卻不知道這種圖是用什麼做出來的,或是他的名字:\r\n\r\n\"\"\r\n\r\n剛剛在「Igniting Node.js Flames」這邊看到這叫做 Flame Graph,出自「brendangregg/FlameGraph」這邊。\r\n\r\n在 Linux 上可以用 perf 產生資料檔案,在 FreeBSD 或是 Solaris 上可以用 DTrace 產生... 是個來理解效能瓶頸的好工具 :o", + "title": "Flame Graph" + }, + { + "id": "6644", + "body": "Shazam 的新功能可以直接在背景辨識 (叫做 Auto Shazam),這比 Siri 還具有侵略性:「Shazam’s new feature on Android has convinced me to ditch SoundHound for identifying songs」。\r\n\r\n\"\"\r\n\r\n看作者超開心的是怎樣... 來看看 Android 上要怎麼鎖 :o", + "title": "Shazam 新功能對隱私的攻擊性" + }, + { + "id": "6645", + "body": "如同標題講的,CIA 老大 John Brennan 告訴參議員,因為實務上不存在「Non-US encryption」,所以強制任何要進入美國的企業使用美版帶有後門的加密系統是可行的:「Non-US encryption is 'theoretical,' claims CIA chief in backdoor debate」。\r\n\r\n
    CIA director John Brennan told US senators they shouldn't worry about mandatory encryption backdoors hurting American businesses.\r\n\r\nAnd that's because, according to Brennan, there's no one else for people to turn to: if they don't want to use US-based technology because it's been forced to use weakened cryptography, they'll be out of luck because non-American solutions are simply \"theoretical.\"
    \r\n\r\n這位腦袋已經壞掉了啊,你知道有個叫做 China,拼做 C-h-i-n-a 的經濟體系嗎... 然後中美共用同一套有後門的加密系統瞬間就會被一堆人打槍,如果真的發生,還有個歐盟... 而且這些事情只是促進以色列的安全系統加速脫離美國掌控啊?以色列才是目前資安的超級強國啊...\r\n\r\n這世界上有太多已經不是掌握在美國的東西了啊...", + "title": "CIA 老大告訴參議員,在加密系統裡放後門是可行的,因為沒有公司可以逃離美國魔掌" + }, + { + "id": "6646", + "body": "兩個禮拜前提到的「Headless Chrome」,在剛剛已經看到有人提到 source tree 裡面有「Headless Chromium」了:\r\n\r\n
    Headless Chromium is a library for running Chromium in a headless/server environment. Expected use cases include loading web pages, extracting metadata (e.g., the DOM) and generating bitmaps from page contents -- using all the modern web platform features provided by Chromium and Blink.
    ", + "title": "Headless Chromium 已經可以用了..." + }, + { + "id": "6648", + "body": "在「Migrate to Ubuntu 16.04」這邊看到換 16.04 的理由:\r\n\r\n
    支援 http2 是升級到 Ubuntu 16.04 很大的動機。原因是前一版 14.04 裡 openssl 太舊,不支援 ALPN 協定,Chrome 瀏覽器又放棄了 NPN 的舊協定,詳細。你要嘛自己編譯 nginx ,要嘛就是升級到 16.04 才能解決。選哪個方法就看各公司的政策,升了 OS 問題就直接解決了。
    \r\n\r\n不過 Ondřej Surý 包了一個有新版 openssl 的套件出來,所以在 12.04 或是 14.04 都可以使用 ALPN 版本的 nginx:「PPA for NGINX with HTTP/2 on Ubuntu 12.04 LTS and higher」。\r\n\r\n目前 16.04 上的 Puppet 爛了不少東西,還是得靠 14.04 吃飯... orz", + "title": "在 Ubuntu 14.04 上執行支援 ALPN 的 nginx" + }, + { + "id": "6649", + "body": "前幾天下班前同事說小鐵 jaceju 介紹了 Codeception/AspectMock 這個把 PHP function 抽換掉的套件,不需要靠 PECL 另外裝,不過缺點是只能抽換 namespace 裡面的 function... 不過這樣對於補 code coverage 也很夠了 :o\r\n\r\n測了一下,寫了個小程式:\r\n\r\n
    <?php\r\n\r\nnamespace myscript;\r\n\r\nrequire __DIR__ . '/vendor/autoload.php';\r\n\r\n\\AspectMock\\Kernel::getInstance()->init();\r\n\r\nuse AspectMock\\Test;\r\n\r\necho time(), \"\\n\";\r\n\r\nTest::func(__NAMESPACE__, 'time', 'now');\r\n\r\necho time(), \"\\n\";
    \r\n\r\n然後跑出來變成:\r\n\r\n
    1466612797\r\nnow
    \r\n\r\n而字串 'now' 也可以換成 anonymous function,這樣已經可以做不少事情了...", + "title": "用 AspectMock 來替換 PHP function..." + }, + { + "id": "6650", + "body": "Composer 包太多 module 進去跑會變慢不少 (像是把 xdebug 包進去時),所以自己寫了個小 script 只包必要的東西進去:\r\n\r\n
    #!/bin/sh\r\nexec php \\\r\n    -n \\\r\n    -d 'extension=curl.so' \\\r\n    -d 'extension=filter.so' \\\r\n    -d 'extension=hash.so' \\\r\n    -d 'extension=iconv.so' \\\r\n    -d 'extension=json.so' \\\r\n    -d 'extension=openssl.so' \\\r\n    -d 'extension=phar.so' \\\r\n    -d 'extension=posix.so' \\\r\n    -d 'zend_extension=opcache.so' \\\r\n    \"$(dirname $0)/composer.phar\" $*
    \r\n\r\n用 -n 忽略掉 php.ini 裡面的東西 (這包括了 extension 設定) 後再開始自己加 extension 設定。\r\n\r\n其中 opcache.so 是加速用的,posix.so 是因為想要有輸出的色彩,這兩個 so 檔不加進去還是可以動,而其他的都是必要的 extension。", + "title": "用乾淨的環境跑 Composer" + }, + { + "id": "6651", + "body": "前幾天 gjtaiwan 的這則 tweet,看到的時候本來只是笑一笑而已:\r\n\r\n

    消息人士透露,Twitter已經向來自柏林的音樂服務SoundCloud投資7000萬美元。Twitter確認了這筆投資,CEOJack Dorsey表示這為了支持創作者的一些舉措;「以後他們可以發表140秒的音頻」。

    — 台灣幹得好新聞社|GJ!!Taiwan (@gjtaiwan) June 15, 2016
    \r\n\r\n\r\n結果剛剛看到「Twitter and Vine now support videos up to 140-seconds long」,雖然不是 SoundCloud,但還真的 140 秒啊... @_@", + "title": "Twitter 還真的玩 140 秒的規格啊..." + }, + { + "id": "6660", + "body": "SPDY 對行動裝置還是很重要,尤其是 Android 裝置在 5.0 之後才有支援 HTTP/2,但在 3.0 之後就有支援 SPDY,也就是超過一半的 Android 用戶只有 SPDY 但沒有 HTTP/2 能力:\r\n\r\n\"\"\r\n\r\n查資料的時候發現當初 CloudFlare 提供的 SPDY + HTTP/2 patch 本來只能對 nginx 1.9.7 更新 (參考之前寫的「CloudFlare 放出可以同時支援 HTTP/2 與 SPDY 的 nginx patch」),後來有人再更新到 1.9.15,而在留言的地方也可以看到有人回報在 1.11.0 上面可以跑:「Update NGINX SPDY patch for 1.9.15」:\r\n\r\n
    Works fine against nginx 1.11.0 and OpenSSL 1.0.2h (with ChaCha20 patch). I am building nginx as an Ubuntu 16.04 package.
    \r\n\r\n而最新版 1.11.1 只有一個安全性更新,應該也可以跑... 來找看看會不會有人包 ppa 出來。", + "title": "CloudFlare 提供的 SPDY + HTTP/2 patch 可以在 nginx 1.11 上面跑了..." + }, + { + "id": "6661", + "body": "在 PHP 網站上的「Supported Versions」可以看到 PHP 5.5 將要停止支援了:\r\n\r\n\"\"\r\n\r\nPHP 5.6 因為是 PHP 5 的最後一個版本,有特殊待遇,時間會拉的比較長 (功能性更新多四個月,安全性更新多一年):\r\n\r\n
    As it is the final PHP 5 release, support for PHP 5.6 has been extended: active support will run for an additional four months, and the security fix period has been doubled from one to two years. Other releases are unaffected.
    \r\n\r\n話說 PHP 7.1 也在 alpha 階段了...", + "title": "離 PHP 5.5 官方中止支援不到兩個禮拜了..." + }, + { + "id": "6662", + "body": "直接跑去問 ondrej 有沒有意願把 CloudFlare 提供的 patch 放進去,結果也很順利的就更新了:「nginx 1.11.1 (security release) and CloudFlare SPDY + HTTP2 patch」(先前標題還打錯... XDDD)。\r\n\r\n所以現在在 nginx PPA 裡的版本同時支援 SPDYHTTP/2 了,可以參考「SSL Server Test: blog.gslin.org (Powered by Qualys SSL Labs)」。\r\n\r\n可以看到舊的行動平台都透過 SPDY 連上來了,速度應該會比之前順不少...", + "title": "ondrej 的 nginx PPA 支援 SPDY + HTTP/2 了..." + }, + { + "id": "6664", + "body": "AWS 先前宣佈要在印度開放的消息總算是實現了:「Now Open – AWS Asia Pacific (Mumbai) Region」,另外他們家老大 Werner Vogels 也放了新聞稿:「Expanding the Cloud: Introducing the AWS Asia Pacific (Mumbai) Region」。\r\n\r\n在「AWS Regions and Endpoints」也更新了,也可以看出區域代碼是 ap-south-1。價錢上看起來跟日本與新加坡差不多在同一個等級...\r\n\r\n不知道之後連到歐洲的效能會是怎麼樣 :o (現在看不準,應該還沒 optimize)", + "title": "AWS 印度區開放" + }, + { + "id": "6665", + "body": "在「Ludicrously cheap HDMI capture for Linux」這邊看到 hacker 精神 XDDD\r\n\r\n作者想要找一個 HDMI 錄影裝置,但發現在 Linux 下很難找,就算有也很貴:\r\n\r\n
    Lately I have had the need to do real time video capture from HDMI devices as of late for a project, and while looking around the internet found that all of the capture cards that are aimed at gamers (windows / OSX support only) or full blown production capture (Very expensive, more inputs than I need). The other downside is that all of these options either have no Linux drivers at all, or if they do, they have a Linux driver that is behind an NDA, and those cards are in the $800+ range.
    \r\n\r\n但他在網路上找到「Reverse engineering Lenkeng HDMI over IP extender」這篇文章,裡面提到有 HDMI 轉 IP 的設備可以用,並且成功寫了一些 Python script 解出裡面的 packet... 而這樣的設備便宜非常多。\r\n\r\n\"\"\r\n\r\n查了一下型號,看起來是「Digital Family LKV373 HDMI Network Extender over Cat5 Cable - Unlimited Extension」這顆,變貴了?不過相較於前面提到的 $800+ 還是便宜不少就是了... XD\r\n\r\n\"\"", + "title": "廉價的 HDMI 擷取卡方案" + }, + { + "id": "6666", + "body": "在 Bruce Schneier 這邊看到「Facebook Using Physical Location to Suggest Friends」這則文章,引用自「Facebook is using your phone’s location to suggest new friends—which could be a privacy disaster」這篇報導,報導開頭寫著更新的資訊:\r\n\r\n
    Update (June 28): After twice confirming it used location to suggest new friends, Facebook now says it doesn’t currently use “location data, such as device location and location information you add to your profile, to suggest people you may know.” The company says it ran a brief test using location last year. New story here.
    \r\n\r\n跟 Facebook 第二次確認後發現是標準的「啊!靠腰!是 PR 災難」的處理方式。在第一次跟 Facebook 確認時,Facebook 發言人的正式回覆說明了手機的位置是計算的條件之一:\r\n\r\n
    “People You May Know are people on Facebook that you might know,” a Facebook spokesperson said. “We show you people based on mutual friends, work and education information, networks you’re part of, contacts you’ve imported and many other factors.”\r\n\r\nOne of those factors is smartphone location. A Facebook spokesperson said though that shared location alone would not result in a friend suggestion, saying that the two parents must have had something else in common, such as overlapping networks.\r\n\r\n“Location information by itself doesn’t indicate that two people might be friends,” said the Facebook spokesperson. “That’s why location is only one of the factors we use to suggest people you may know.”
    \r\n\r\n靠背...", + "title": "Facebook 大量蒐集 GPS 定位資訊後用機械學習「猜測」你可能認識的人" + }, + { + "id": "6667", + "body": "B2 Cloud StorageBackblaze 推出的 Cloud Storage,價錢相當低...\r\n\r\n\"\"\r\n\r\n先前還在 beta,現在是正式推出了... 有 99.9% 的 uptime SLA 與 99.999999% 的 durability (但沒講時間?),另外推出實體的 Export 服務,來看看有哪些 cli 工具可以用,該玩看看了 :o", + "title": "Backblaze 的 B2 Cloud Storage 正式推出" + }, + { + "id": "6668", + "body": "Amazon EFS 其實就當作是 NFS/CIFS as a service,之前一直在測試期,現在正式宣佈進入 Production 了:「Amazon Elastic File System – Production-Ready in Three Regions」。\r\n\r\n開放三個區域使用:\r\n\r\n
    I am happy to announce that EFS is now available for production use in the US East (Northern Virginia), US West (Oregon), and Europe (Ireland) Regions.
    \r\n\r\n不知道穩定性如何 XDDD (因為 Amazon EBS 之前的穩定性太有名...)\r\n\r\n之前在測試的時候發現只支援 NFSv4,不支援 NFSv3,這樣有點可惜... 另外價錢也頗高的 :o", + "title": "Amazon EFS 脫離測試期" + }, + { + "id": "6669", + "body": "hashcat 是個用暴力法拿來計算各種 reverse hash 的的工具,也就是對於 HASH(key) = value 時,給 value 的值,要求得出 key 的值 (被稱為 Preimage attack)。\r\n\r\n雖然是暴力法,但還是花了很多力氣加速,尤其在這個 GPU 已經很常見的年代,這套軟體也支援透過 GPU 加速運算。\r\n\r\n先前的版本是 CPU 與 GPU 分開兩個版本可以用 (CPU 版本的叫 hashcat,GPU 版本的叫做 oclHashcat),而 GPU 的版本只支援 nVidiaAMD 兩家大廠的顯卡。\r\n\r\n而在 v3.00 版,透過 OpenCL 的界面將這些全部都合而為一了:「hashcat v3.00」,所以不只是支援 CPU 與 nVidia + AMD 的 GPU,還包括了:\r\n\r\n\r\n\r\n也特別提到,Intel CPU 上內建的 GPU 部份也可以拿來用了:\r\n\r\n
    For example, Intel CPUs will now instantly pop up as an available OpenCL device after you've installed the Intel OpenCL runtime.
    \r\n\r\n也因為透過 OpenCL,如果有多種不同類型的加速方式,新版 hashcat 也可以同時使用。\r\n\r\n另外這次效能評估 (與舊版比較) 也做出來了:「hashcat 2.01 / 3.00 performance comparison」,可以看到比較新一點的卡整體都有進步,而舊的卡有可能是對 OpenCL 的最佳化或是 overhead 比較敏感,慢了不少...", + "title": "hashcat v3.00" + }, + { + "id": "6670", + "body": "Amazon SNS 的新進展,簡訊可以發到全世界了 (之前應該是只能發到美國?):「New – Worldwide Delivery of Amazon SNS Messages via SMS」。\r\n\r\n\"\"\r\n\r\n拉台灣的數字出來可以看到即使是最便宜的台灣大哥大 (Taiwan Mobile) 每通也要 NTD$1.35 左右,其他家就貴翻了... (所以應該是跟台哥大合作對接?)\r\n\r\n不過對於本來就有用 AWS 服務的人來說,帳單是在同一張,報起來比較省事...", + "title": "Amazon SNS 可以發簡訊到全世界了..." + }, + { + "id": "6674", + "body": "前幾天跟同事聊到 Android 刷機的事情,而最近剛好看到介紹這台無線分享器裡的名機,LinksysWRT54GL:「\r\nThe WRT54GL: A 54Mbps router from 2005 still makes millions for Linksys」,第一款被廣泛應用在各種客製化硬體的機器。\r\n\r\n\"\"\r\n取自維基百科的「File:Linksys WRT54G.jpg\r\n\r\n從 2005 年開始賣,到現在 2016 年還是繼續在賣,而且這東西支援的無線規格很舊,還比其他的無線分享器貴不少:\r\n\r\n
    Witness the Linksys WRT54GL, the famous wireless router that came out in 2005 and is still for sale. At first glance, there seems to be little reason to buy the WRT54GL in the year 2016. It uses the 802.11g Wi-Fi standard, which has been surpassed by 802.11n and 802.11ac. It delivers data over the crowded 2.4GHz frequency band and is limited to speeds of 54Mbps. You can buy a new router—for less money—and get the benefit of modern standards, expansion into the 5GHz band, and data rates more than 20 times higher.
    \r\n\r\n但不只能賣,還賣的很好:\r\n\r\n
    Despite all that, people still buy the WRT54GL in large enough numbers that Linksys continues to earn millions of dollars per year selling an 11-year-old product without ever changing its specs or design.
    \r\n\r\n量大到 Broadcom 還是繼續支援,然後產品 PM 就抱怨他搞不懂:\r\n\r\n
    \"To be honest, it somewhat baffles my mind,\" Linksys Global Product Manager Vince La Duca told Ars. But production won't stop any time soon as long as Linksys' suppliers, including chipmaker Broadcom, keep selling the parts needed to build the WRT54GL. \"We'll keep building it because people keep buying it,\" La Duca said.
    \r\n\r\n只能說,施主您多保重...", + "title": "Linksys 的 WRT54GL" + }, + { + "id": "6675", + "body": "Quantum Computer 對現有密碼學的衝擊很大,像是 RSA 演算法是基於「質因數分解」的難題而架構出來的系統,在 Quantum Computer 上存在有效率的演算法,也就是 Shor's algorithm。\r\n\r\n雖然 Quantum Computer 在技術上還沒辦法對現有演算法造成有效的攻擊,但已經有人提出新的演算法來對抗,而 Google 打算在 Google Chrome 裡面引入測試:「Experimenting with Post-Quantum Cryptography」。\r\n\r\n\"\"\r\n\r\nGoogle 也特別說明了,他們不希望這個實驗最後變成 de-facto standard (借測轉出貨的概念),而是希望當作一個開頭,希望之後可以用更好的標準換掉:\r\n\r\n
    We explicitly do not wish to make our selected post-quantum algorithm a de-facto standard. To this end we plan to discontinue this experiment within two years, hopefully by replacing it with something better.
    ", + "title": "Google Chrome 引入 CECPQ1,開始測試 Post-Quantum Cryptography" + }, + { + "id": "6676", + "body": "AvastAVG,這兩家都不小:「Avast acquires rival AVG for $1.3 billion to create a security software giant」。\r\n\r\n文章開頭提到的交易的形式與金額:\r\n\r\n
    Security software giant Avast Software has acquired rival AVG Technologies. Avast will pay $25 cash for each of AVG’s outstanding ordinary shares in a deal amounting to around $1.3 billion.
    \r\n\r\n兩家也都放了新聞稿:\r\n\r\n", + "title": "Avast 買 AVG" + }, + { + "id": "6677", + "body": "DigitalOcean 也提供類似 Amazon EBS 的服務了:「Block Storage: More Space to Scale」。\r\n\r\n只提供 SSD 型態的 Block Storage,價位跟 Amazon EBS 類似,USD$0.1/GB/month。有幾個限制,一個是服務的地區目前只有 NYC1 與 SFO2,下一個會是 FRA1:\r\n\r\n
    You can create Block Storage volumes right now in NYC1 and our new SFO2 region. FRA1 is next in line and will be available in the coming weeks. We’re working quickly to expand to other regions. More updates to come.
    \r\n\r\n另外一個是最大 16TB,也是跟 Amazon EBS 一樣:\r\n\r\n
    You can easily scale up and resize your Storage volumes from 1GB to 16TB and move them between Droplets via the control panel or API.
    \r\n\r\n多了個選擇可以用...", + "title": "DigitalOcean 也推出類似於 Amazon EBS 的東西了:Block Storage" + }, + { + "id": "6680", + "body": "GitHub 提出了自己對抗 TCP SYN Floord 的方式:「SYN Flood Mitigation with synsanity」。\r\n\r\nsynsanity 是一個 netfilter (iptables) 用的 target,利用現有的理論阻擋 TCP SYN Flood 這種 DDoS:\r\n\r\n
    synsanity is a netfilter (iptables) target for high performance lockless SYN cookies for SYN flood mitigation, as used in production at GitHub.
    \r\n\r\n前人的作法 (SYNPROXY) 以 module 形式運作,需要過濾每一個封包,而這在 GitHub 這種規模上會導致效能不足並且 kernel panic:\r\n\r\n\"\"\r\n\r\n
    This is quite an intrusive way of solving the problem since it touches every packet during the entire connection, but it does successfully mitigate SYN floods. Unfortunately we found that in practise under our load and with the amount of malformed packets we receive, it quickly broke down and caused a kernel panic.
    \r\n\r\nGitHub 所開發的 synsanity 則是透過 netfilter (iptables) 的 target,只處理 initial packets,在撰寫的時候考慮多 CPU 的 lock 問題:\r\n\r\n\"\"", + "title": "GitHub 對抗 TCP SYN Flood 的方式:synsanity" + }, + { + "id": "6681", + "body": "Dropbox 針對 JPEG 圖片再次無損壓縮所發展出來的 Lepton:「Lepton image compression: saving 22% losslessly from images at 15MB/s」。\r\n\r\n直接用傳統壓縮方式對 JPEG 檔壓縮是沒有用的,他們針對 JPEG 裡的內容分析後再次無損壓縮,並且可以還原成原來的 JPEG:\r\n\r\n
    Lepton achieves a 22% savings reduction for existing JPEG images, by predicting coefficients in JPEG blocks and feeding those predictions as context into an arithmetic coder. Lepton preserves the original file bit-for-bit perfectly.
    \r\n\r\n當檔案夠大時的壓縮率大約就是 22%:\r\n\r\n\"\"\r\n\r\n很可觀的數字... 另外 Dropbox 也透漏了至少有 160 億張 JPEG 圖片:\r\n\r\n
    We have used Lepton to encode 16 billion images saved to Dropbox, and are rapidly recoding our older images.
    ", + "title": "Dropbox 針對 JPEG 圖片再次「無損壓縮」的 Lepton" + }, + { + "id": "6682", + "body": "看到「CppCon 2015: Greg Law 'Give me 15 minutes & I'll change your view of GDB'」這篇去年 CppCon 上介紹 GDB 的影片:\r\n\r\n\r\n\r\n不是給初學者看的,而是給碰壁很多次的人看的... 裡面提到的 Ctrl-X 與內嵌 python 的部份讓人很驚豔,另外也實戰了 Reverse Execution 救 call stack 的技巧,拿來找破壞掉 stack 後不知道問題在哪裡的 case。\r\n\r\n很值得看的 15 分鐘 (實際上大概花了半個小時,邊看邊實際操作練習)。", + "title": "對 GDB 十五分鐘的介紹" + }, + { + "id": "6683", + "body": "依照慣例,security issue 都會取個名字,這次叫做 httpoxy:「A CGI application vulnerability for PHP, Go, Python and others」。\r\n\r\n事情發生在兩個命名變數上的衝突:\r\n\r\n\r\n\r\n這件事情 2001 年在 libwww-perl 就有發生過 (並且修正),curl 也發生過 (然後修正),2012 年在 Ruby 的 Net::HTTP 也發生過 (也修正了)。\r\n\r\n然後在 2016 年還是被發現有很多應用程式會中獎... 這頭好痛啊 :o", + "title": "舊 bug 新名字:httpoxy" + }, + { + "id": "6684", + "body": "在 Cryptome 這邊看到可能可以被拿來用的技巧:「Cloudflare reCAPTCHA De-anonymizes Tor Users」。\r\n\r\n當 Tor 使用者連到 CloudFlare 上時,常常會出現 reCAPTCHA 的提示,要求你驗證,而這個驗證過程的 traffic pattern 太龐大而且很明顯,當情治單位同時可以監控 CloudFlare 的上游 (像是「Airtel is sniffing and censoring CloudFlare’s traffic in India and CloudFlare doesn’t even know it.」這篇提到的問題) 或是監控 Tor 的 exit node 的上游,再加上同時監測使用者可能的 ISP,就可以對照湊出使用者:\r\n\r\n
    Each click on one of the images in the puzzle generates a total of about 50 packets between Tor user's computer and the Cloudflare's server (about half are requests and half are real-time responses from the server.) All this happens in less than a second, so eventual jitter introduced in onion mixing is immaterial. The packet group has predictable sizes and patterns, so all the adversary has to do is note the easily detectable signature of the \"image click\" event, and correlate it with the same on the Cloudflare side. Again, no decryption required.
    \r\n\r\n短短的一秒鐘內會產生 50 個封包,而且 pattern 很清楚...", + "title": "利用 CloudFlare 的 reCAPTCHA 反向找出真正的 Tor 使用者" + }, + { + "id": "6685", + "body": "在 Nuzzel 上看到的東西...\r\n\r\n維基百科不掛 Google Analytics 之類的第三方服務,而是透過 Piwik 蒐集後自己分析:「Dashboards and Data Downloads for Wikimedia Projects」。\r\n\r\n主要有兩個資料可以看,一個是「Browser Statistics」,另外一個是「Readers: Pageviews and Unique Devices」。\r\n\r\n不過翻了一下,Piwik 好像還是沒有寫到 NoSQL 之類的方案,出自「How do I use another database like Postgresql, SQLite, Oracle? Will you support Nosql databases like Hadoop, Mongodb?」:\r\n\r\n
    Piwik only works on Mysql, where all the development and testing is done. Supporting multiple databases is a long term objective for Piwik, but not our current focus.
    \r\n\r\n不知道維基百科是怎麼 scale 的...", + "title": "維基百科的 User Agent 公開資料" + }, + { + "id": "6686", + "body": "Humble Bundle 說明他們如何對抗信用卡盜刷的方法,主要是不斷的降低風險,然後讓人介入的機會降低 (因為人事成本很高):「How Humble Bundle stops online fraud」。\r\n\r\n其中第一點是特別想提的:\r\n\r\n
    Our first line of defense is a machine-learning-based anti-abuse startup called Sift Science, which we’ve been training for years across 55,000,000 transactions. Given how many orders we process, Sift Science has a really good idea when someone is up to no good. The model adapts daily as we get more data.
    \r\n\r\nSift Science 在 2014 的時候提過:「偵測信用卡交易是否為盜刷的服務」。做的事情很簡單,你把大量的資料傳給 Sift Science,包括了各種使用者身份資訊,以及信用卡資料,Sift Science 可以透過 Machine Learning 的方法告訴你這筆交易的風險,讓你進一步的判斷。\r\n\r\n其實不少家都有做類似的服務,像是 MaxMindminFraud (就是做 GeoIP database 很有名的那家公司的另外一個產品)。當交易量很大的時候是個很有趣的應用,降低處理盜刷後續處理的成本。", + "title": "Humble Bundle 對抗信用卡盜刷的方法" + }, + { + "id": "6688", + "body": "堆了一陣子的文章...\r\n\r\n當有 n 台 cache server 給你使用,最傳統的作法是 hash(key) % n 決定挑哪一台 cache server,但這個方法在增加或減少機器時就會讓 cache 大規模失效。Consistent Hashing 就是希望在這種情況下 (增加或是移除 cache server 時) 可以避免大規模 cache 失效的問題。\r\n\r\n比較基本的 Consistent Hash 作法是將 hash(key) 的值對應到 ring 上 (假設是 hash value 的範圍是 32bits,也就是 0 到 0xFFFFFFFF,那麼 ring 繞一圈平均分佈),像是一開始只有三台,所以就是三個 bucket:\r\n\r\n\"\"\r\n取自「Consistent hashing」這裡。\r\n\r\n等加了機器後就分擔掉本來的 hash value 區段:\r\n\r\n\"\"\r\n取自「Consistent hashing」這裡。\r\n\r\n這樣的作法通常會需要 O(log N) 的時間複雜度 (query & add/remove server) 與 O(n) 的空間複雜度。\r\n\r\n另外會有平均性的問題需要解決,通常的 workaround 是讓一個 server 有很多 virtual bucket 在 ring 上面解,像是這樣:\r\n\r\n\"\"\r\n取自「The Simple Magic of Consistent Hashing」。\r\n\r\n而 Google 在 2014 年發表出來的 Jump Consistent Hash 則給了更好的方案,O(1) 的空間使用率以及 O(logN) 的時間複雜度 (query only),而且非常平均的打散:「A Fast, Minimal Memory, Consistent Hash Algorithm」。\r\n\r\n論文裡面給了 C++ 的實作:\r\n\r\n
    int32_t JumpConsistentHash(uint64_t key, int32_t num_buckets) {\r\n  int64_t b = ­-1, j = 0;\r\n  while (j < num_buckets) {\r\n    b = j;\r\n    key = key * 2862933555777941757ULL + 1;\r\n    j = (b + 1) * (double(1LL << 31) / double((key >> 33) + 1));\r\n  }\r\n  return b;\r\n}
    \r\n\r\n神秘數字 (還出現 double) 與神秘的迴圈... 在 Performance Analysis 這段解釋了時間複雜度明顯跟迴圈有關,分析後可以得到 O(log N):\r\n\r\n
    The time complexity of the algorithm is determined by the number of iterations of the while loop. [...] So the expected number of iterations is less than ln(n) + 1.
    \r\n\r\n再來是 Consistent Hash 會討論「平均性」這個問題,可以看到跟以前的方法不是同一個級別:\r\n\r\n\"\"\r\n\r\n執行的效率也非常好,要注意的是 X 軸是對數座標:\r\n\r\n\"\"\r\n\r\n在 Note 的部份也說明了這個演算法 Google 沒有計畫要弄專利 (也公開出來了):\r\n\r\n
    Google has not applied for patent protection for this algorithm, and, as of this writing, has no plans to. Rather, it wishes to contribute this algorithm to the community.
    ", + "title": "Google 提出的 Jump Consistent Hash" + }, + { + "id": "6690", + "body": "Linode 宣佈支援 PayPal 了:「PayPal Payments」,只是:\r\n\r\n
    While any customer can use PayPal to fund their account, new customers will still need to sign up using a credit card. You can use PayPal from then on.
    \r\n\r\n而原因是:\r\n\r\n
    This is in part because we don’t yet have the ability to automatically transfer funds from PayPal. If you intend on paying only via PayPal, you will need to ensure that you have enough credit on your Linode account to cover your next invoice. Otherwise, our system will attempt to collect any remaining balance from the credit card you have on file.
    \r\n\r\n這理由爛爆了 XDDD", + "title": "Linode 收 PayPal 了,只是..." + }, + { + "id": "6692", + "body": "Let's Encrypt 的公告出來了:「Full Support for IPv6」。\r\n\r\n之前在看 http-01 challenge 時都是走 IPv4 認證,現在宣佈可以走 IPv6 了:\r\n\r\n
    Let’s Encrypt is happy to announce full support for IPv6.
    ", + "title": "Let's Encrypt 支援 IPv6 了" + }, + { + "id": "6693", + "body": "AWS Support 中的 Developer Support Plan 漲價了:「AWS Support announces update to Developer Support plan」。\r\n\r\n本來是固定 $49/month,現在變成 $29/month 或是 3% (取高的,也就是超過 USD$966.66/month 後要以 3% 計算):\r\n\r\n
    A new pricing model for our Developer Support plan has been launched, reducing the entry cost from $49 per month to $29 per month, while providing the same level of customer service and support. As of July 26th, 2016 all new AWS accounts subscribing to Developer Support will receive the new pricing, set at the greater of $29 or 3% of monthly AWS spend.
    \r\n\r\n大概是因為很多 production 用戶都只申請這個吧 (只是為了開 ticket 而已),不過這邊只提到「all new AWS accounts subscribing to Developer Support」,沒提到舊的用戶會怎麼處理...", + "title": "AWS 的 Developer Support Plan 漲價" + }, + { + "id": "6695", + "body": "HP 的 open source 專案「Go AST Scanner」,分析 Go 的原始程式碼拉出 AST 進行分析 (Static program analysis),再找出可能的安全性問題。\r\n\r\n雖然是 alpha 階段,但看起來是個好東西啊... 至少寫的太誇張的 SQL injection 可以掃出來。", + "title": "Go 上面的白箱安全性檢查" + }, + { + "id": "6696", + "body": "因為把 JavaScript 開回來了,所以有這個困擾... :(\r\n\r\nGoogle Chrome 的平滑捲動可以透過 chrome://flags 裡面的設定關閉 (OS X 上則是透過系統設定關閉),但就是有不少網站會很雞婆,用 JavaScript 模擬平滑捲動,所以就花了時間把 extension 寫出來:「Stop Smooth Scrolling」。\r\n\r\n由於大多數平滑捲動的作法都是透過對 document 或是 window 上掛上與平滑捲動相關事件做到的,所以我是透過 addEventListener()useCapture flags,然後再用 preventDefault() 擋下後續的處理。\r\n\r\n這樣做會有一些問題,其中比較明顯的是地圖類功能的滾輪會失效,這個部分我先放進預設的白名單了,如果有其他的問題,除了可以自己加以外,也可以開 ticket 讓我加進預設清單 :o\r\n\r\n實際運作起來大概是這樣:\r\n\r\n\r\n\r\nAnyway,寫這個還蠻有趣的,玩了不少新東西:\r\n\r\n", + "title": "Google Chrome 停用平滑捲動" + }, + { + "id": "6697", + "body": "先把兩份連結丟出來,一份是 PyPgDay 2013 時由 Uber 的 Evan Klitzke 給的「Migrating Uber from MySQL to PostgreSQL」,原 PDF 連結已經失效 (看起來已經被刪除),但這個網路年代什麼都可以找到備份... 可以在「Migrating Uber from MySQL to PostgreSQL」取得,但這個網站怪怪的,我另外丟了一份到 Google Docs 上。\r\n\r\n另外一份則是同一個人 Evan Klitzke 在 2016 年發表於公司的官方網站上:「Why Uber Engineering Switched from Postgres to MySQL」。\r\n\r\n2013 年描述了從 MySQL 換到 PostgreSQL,2016 年同一個人出來則描述了從 PostgreSQL 換到 MySQL 的理由,有種臉腫腫的感覺。\r\n\r\n先抓 2013 年的重點,當時分享的目標是要用 PostGIS:\r\n\r\n\"\"\r\n\r\n在 2016 年的文章絕口不提 PostGIS,而是提到各種效能問題:花了很長的篇幅講 Non-clustered Index 與 Clustered Index 的設計,以及 Replication 時的頻寬效能差異。\r\n\r\n先不管 PostGIS,如果真的是 UPDATE 造成效能問題,那麼不是要朝 sharding 解決嗎,怎麼是換成 MySQL?換到 MySQL 後還是會遇到效能問題啊,你還是要在 application 層上面找出方案啊。\r\n\r\n這篇文章看起來更像是內部技術與政治問題掛勾在一起談,因為政治原因而換 MySQL,然後找出技術原因說明換的理由 XDDD", + "title": "最近討論 Uber 的 MySQL 換 PostgreSQL 後又換回 MySQL 的文章..." + }, + { + "id": "6698", + "body": "不只是維基百科,還包括所以維基基金會的專案都可以查到,精確度可以到每日。\r\n\r\nMediaWiki 系統提供的 API 在維基基金會上的專案都關掉了。主要是因為維基基金會的專案量太大,前方有大量的 cache 擋住,後端能提供的資料其實沒有意義。取而代之的是另外規劃出來的 API。\r\n\r\nAPI 的介紹說明在「Analytics/PageviewAPI」這邊可以看到,官方所提供的完整 API 說明文件則可以在「Wikimedia REST API」這邊查到。\r\n\r\n實際測試發現資料從 2015/07/01 開始,每日更新的速度還不錯,像是 UTC 還是 2016/07/31 的現在可以取到 2016/07/30 的資料了。舉例來說,想要拉中文版 Kalafina 在 2016 七月由人閱覽的資料:\r\n\r\n
    https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/zh.wikipedia/all-access/user/Kalafina/daily/20160701/20160731
    \r\n\r\n如果是想拉日文版的就換成 ja.wikipedia:\r\n\r\n
    https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/ja.wikipedia/all-access/user/Kalafina/daily/20160701/20160731
    ", + "title": "維基百科每天的 PageView 數據 (2015/07/01 開始)" + }, + { + "id": "6700", + "body": "在「Google’s QUIC protocol: moving the web from TCP to UDP」這篇前半部在介紹 QUIC (走 UDP 的 TLS),後半部則提到了幾個重點。\r\n\r\n\"\"\r\n\r\n首先是 Google Chrome 從 52 開始 (也就是現在的 stable 版) 預設會開啟 QUIC (以前是只有 Google 自家的 domain),這讓採用的價值變高:\r\n\r\n
    Since no one has QUIC support enabled by default in the client, you're probably still safe to run it and enable QUIC in your own browser(s). (Update: since Chrome 52, everyone has QUIC enabled by default, even to non-whitelisted domains)
    \r\n\r\n再來是 QUIC 走 UDP/443:\r\n\r\n
    Well, if we want to allow the QUIC protocol, we will need to allow 443/UDP too.
    \r\n\r\n同時因為走的 Protocol 跟以前不同,所以我可以跑另外一隻 Server 服務使用者,目前只有 Caddy 有支援,雖然是實驗性質:\r\n\r\n
    Right now, the only webserver that can get you QUIC is Caddy since version 0.9.\r\n\r\nBoth client-side and server-side support is considered experimental, so it's up to you to run it.
    \r\n\r\n至少可以先把 firewall 打開了...", + "title": "Google Chrome 52 預設開啟了更快的 QUIC (被戲稱為 TCP/2)" + }, + { + "id": "6701", + "body": "YouTube 公佈了 Google 產品使用 HTTPS 的情況,這次包括了 YouTube 在內:「YouTube's road to HTTPS」。\r\n\r\n\"\"\r\n\r\nNetflix 與 YouTube 在北美是兩個最大的 internet 流量 (Netflix, YouTube video streaming dominate internet traffic in North America),要注意的是 Netflix 也是全上 HTTPS (It wasn’t easy, but Netflix will soon use HTTPS to secure video streams):\r\n\r\n
    Netflix makes up a huge part of internet downloads, the company said, with the streaming service accounting for 37.1 per cent of all downstream traffic in North America during September and October.\r\n\r\nYouTube accounted for the second-largest share of download traffic, at 17.9 per cent, followed by regular internet browsing at 6.1 per cent.
    \r\n\r\n海外的部份 YouTube 就更高了,所以 YouTube 的 HTTPS rate 其實對整個 internet 很重要。而 YouTube 宣佈目前已經有 97% 的量上 HTTPS 了,應該是 Google 資料中心最大的流量:\r\n\r\n
    We're proud to announce that in the last two years, we steadily rolled out encryption using HTTPS to 97 percent of YouTube's traffic.
    ", + "title": "Google 產品 (包括 YouTube) 使用 HTTPS 的情況" + }, + { + "id": "6702", + "body": "DebianTor Project 都宣佈了這個消息,兩邊的稿子都一樣:「Debian and Tor Services available as Onion Services」、「Debian and Tor Services available as Onion Services」。\r\n\r\n站台列表在 https://onion.debian.org/ 這邊可以看到,當你有安裝 apt-transport-tor 時,可以透過 Tor 更新:\r\n\r\n
    deb tor+http://vwakviie2ienjx6t.onion/debian jessie main\r\ndeb tor+http://vwakviie2ienjx6t.onion/debian jessie-updates main\r\ndeb tor+http://sgvtcaew4bxjd7ln.onion/debian-security jessie/updates main
    \r\n\r\nTor Hidden Service 本身就有一定的安全強度,而透過 APT 抓 Debian 套件的安全性還有 GnuPG 驗證把關,這樣看起來頗不賴...\r\n\r\n讓 Tor 的流量變大也是讓 Tor 的隱私性變得更好的一種方法 (因為目前看到新的攻擊都是靠分析 traffic pattern,所以流量變大有機會讓雜訊變多一些)。\r\n\r\n不知道 Ubuntu 有沒有機會也上一份...", + "title": "Debian 提供 Tor Hidden Service 更新 Apt" + }, + { + "id": "6703", + "body": "這次要提的是「Netflix Billing Migration to AWS」、「Netflix Billing Migration to AWS - Part II」與「Netflix Billing Migration to AWS - Part III」這三篇。\r\n\r\nNetflix 先前的金流相關系統跑的是 Oracle 的資料庫:\r\n\r\n\"\"\r\n\r\n然後換成 MySQL:\r\n\r\n\"\"\r\n\r\n系統上是採用 DRBD,然後底層是 5 個 4TB 的 EBS 組成的 RAID 0,跑 LVM:\r\n\r\n\"\"\r\n\r\n
    High performance with respect to reads and writes was achieved by using RAID0 with EBS provisioned IOPS volumes. To get more throughput per volume, 5 volumes of 4TB each were used, instead of 1 big volume. This was to facilitate faster snapshots and restores.
    \r\n\r\n
    LVM to manage two Logical Volume’s (DB and DRBD Metadata) within single Volume Group.
    \r\n\r\n可以看到裡面用的都是很經過時間考驗的技術,像是 DRBD、標準的 Replication 架構...", + "title": "Netflix 把金流相關的系統轉移到 AWS 上跑 MySQL 的故事..." + }, + { + "id": "6705", + "body": "在「Would You Use This ATM?」這邊看到的提款機:\r\n\r\n\"\"\r\n\r\n而這是背面:\r\n\r\n\"\"\r\n\r\n不知道可以聽到多少東西 XD", + "title": "歡樂提款機" + }, + { + "id": "6710", + "body": "Google 宣佈 www.google.com 要上 HSTS 了:「Bringing HSTS to www.google.com」。\r\n\r\n雖然都已經使用 EFFHTTPS Everywhere 在跑確保 HTTPS,但這個進展還是很重要,可以讓一般使用者受到保護...\r\n\r\nGoogle 的切換計畫是會逐步增加 HSTS 的 max-age,確保中間出問題時造成的衝擊。一開始只會設一天,然後會逐步增加,最後增加到一年:\r\n\r\n
    In the immediate term, we’re focused on increasing the duration that the header is active (‘max-age’). We've initially set the header’s max-age to one day; the short duration helps mitigate the risk of any potential problems with this roll-out. By increasing the max-age, however, we reduce the likelihood that an initial request to www.google.com happens over HTTP. Over the next few months, we will ramp up the max-age of the header to at least one year.
    ", + "title": "Google 的 www.google.com 要上 HSTS 了" + }, + { + "id": "6711", + "body": "在 Twitter 上看到 zmx 提了一個連結,講 Uber 年初時貼的「How We Built Uber Engineering’s Highest Query per Second Service Using Go」這篇文章的問題:\r\n\r\n

    TLDR;
    Uber:傳統方式太複雜了根據我們資料特性自創一套高效能的空間索引服務。
    前 Bing 員工:買了 Bing 怎麼不問專家啊?Quadtree 降兩個數量級啊,不然你們自創的做了這個小修改也是降兩個數量級啊!https://t.co/nHw1DgmYtU

    — Bill Zhong (@zmx) August 2, 2016
    \r\n\r\n\r\n對照最近的事情還蠻有趣的,尤其是這篇文章後面提到的,酸~爆~了~XDDD:\r\n\r\n
    It is clear to me that the team at Uber under-engineered this problem. Thoughtfully designing this service could trim down the number of nodes by an order of magnitude and save hundreds of thousands of dollars each year. That may sound like pittance to a company valued at more than the GDP of Delaware, but in my eyes that’s the salaries of a few engineers and a few good engineers can go a long way. Maybe even further than the few extra Mercedes-Benz S-Classes they could add to their fleet from the money they could be saving...
    \r\n\r\n先不提政治問題,上面提到的 Quadtree 算是簡單易懂的結構,好久沒看到這個資料結構了:\r\n\r\n\"\"", + "title": "看到 zmx 貼了之前的連結,更確信 Uber 的問題不是技術問題了..." + }, + { + "id": "6713", + "body": "Firefox 的 Multi-process,也就是 Electrolysis,正式進入 Release 版了:「What’s Next for Multi-process Firefox」。\r\n\r\n依照說明,會分成這幾個不同種類的 process:\r\n\r\n
    Electrolysis child processes are currently in use for the following tasks within Firefox:\r\n\r\n
      \r\n\t
    • Legacy NPAPI plugin hosting
    • \r\n\t
    • Media playback
    • \r\n\t
    • Web content ('content processes')
    • \r\n
    \r\n\r\nMozilla 給的這張圖則是 UI 與 Web Content 分離:\r\n\r\n\"\"\r\n\r\n目前是設計成只有 1% 使用者會啟動,而如果你想要測試的話可以用 about:config 修改 browser.tabs.remote.autostart。不過只要有 extension 掛著,就不會啟動,像是這樣:\r\n\r\n\"\"\r\n\r\n當我把 extension 全部關閉後:\r\n\r\n\"\"\r\n\r\n所以短時間內應該也沒辦法測...", + "title": "Firefox 48 的 Electrolysis (e10s),多程序視窗" + }, + { + "id": "6714", + "body": "Let's Encrypt 的 Root CA 進 Mozilla 的 CA 清單了:「Let's Encrypt Root to be Trusted by Mozilla」,Mozilla 增加的 ticket 則可以在「Add ISRG Root X1 root certificate to NSS」這邊看到。\r\n\r\n目前的信任路徑是透過 IdenTrust 簽出來的,也就是下面那條。而現在 Mozilla 的產品線多了一條信任的路徑 (綠色粗線):\r\n\r\n\"\"\r\n\r\n其他的單位 (以及瀏覽器) 也有提出申請,還在稽核驗證:\r\n\r\n
    We have also applied to the Microsoft, Apple, Google, Oracle and Blackberry root programs. We look forward to acceptance into these programs as well.
    \r\n\r\n除了 Oracle 應該是指 Java 用到的那包,其他的應該都是包含自家的系統。", + "title": "Let's Encrypt 的 Root CA 進入 Mozilla 的信任清單了" + }, + { + "id": "6715", + "body": "Hacker News 上的「Ask HN: How do you get notified about newest research papers in your field?」在問有什麼方法可以找到新的論文,前面的回答就有不少好東西...\r\n\r\n一個是 Arxiv Sanity Preserver,另外一個是 GitXiv,兩個都是從 arXiv 上挖寶,先記錄起來,之後拿來翻東西應該會用到...", + "title": "從 arXiv 上挖寶的網站" + }, + { + "id": "6716", + "body": "GitHub 解釋了他們在 MySQL 上 ALTER TABLE 的方式:「gh-ost: GitHub's online schema migration tool for MySQL」。\r\n\r\nGitHub 的舊方式是使用 pt-online-schema-change,會遇到的問題有幾個,其中看起來只有 Non pausability 這個是真正的痛點:\r\n\r\n
    Non pausability: when load on the master turns high, you wish to throttle or suspend your pending migration. However a trigger-based solution cannot truly do so. While it may suspend the row-copy operation, it cannot suspend the triggers. Removal of the triggers results in data loss. Thus, the triggers must keep working throughout the migration. On busy servers, we have seen that even as the online operation throttles, the master is brought down by the load of the triggers.
    \r\n\r\n當開始後,多出來的 trigger 是沒有辦法停下來的 (停下來就代表要全部重來),而且會影響線上服務。\r\n\r\n新的方式則是用 replication 做,多一台機器出來跑,等結束後再切換,而中間有任何過程也都很好處理:\r\n\r\n\"\"\r\n\r\n這方法手筆比較大,不過對於系統已經有規模的組織來說不是問題... 看起來以後可以朝這個方向研究 XD", + "title": "GitHub 發展出來的 ALTER TABLE 方式" + }, + { + "id": "6717", + "body": "Google Cloud 在七月的時候開放了美西機房:「Introducing Cloud Natural Language API, Speech API open beta and our West Coast region expansion」,而且東京機房也快開了:\r\n\r\n
    And as we announced in March, Tokyo will be coming online later this year and we will announce more than 10 additional regions in 2017.
    \r\n\r\n看到「Why we moved from Amazon Web Services to Google Cloud Platform?」的時候去找資料才發現的。這篇讓我重新算了一次成本,如果不計算 Bandwidth Cost 的話,GCE 整體的 f1-micro 記憶體 + 20GB 比 DigitalOcean 多 (不過 DO 給的是 SSD 就是了),而且還比較便宜啊...\r\n\r\n不過如果把頻寬成本算進去,Internet Egress (i.e. Outbound bandwidth) 一定要走 Google Network,這點就比較傷了... 有美西機房後,看起來可以開始考慮用看看就是了 :o", + "title": "Google Cloud Platform 美西機房" + }, + { + "id": "6718", + "body": "在「Cuckoo Filter implementation in Go, better than Bloom Filters」這邊看到這個資料結構,有興趣的人也可以看「Cuckoo Filter:设计与实现」這篇介紹,下面是我抓重點整理。\r\n\r\nBloom Filter 支援的操作:\r\n\r\n\r\n\r\n1970 年提出來的資料結構。優點是空間複雜度是 O(1),Query(element) 會有可接受的 false positive,缺點是不支援 Delete(element)、以及數量變多時誤判率的增加。\r\n\r\nCuckoo Filter 多了一組操作:\r\n\r\n\r\n\r\n2014 年提出來的資料結構。空間複雜度一樣是 O(1),但相同的空間用量下 false positive 變低,然後支援 Delete(element) 了。也因此論文直接寫「Cuckoo Filter: Practically Better Than Bloom」,表示可以直接替代。", + "title": "Cuckoo Filter:比 Bloom Filter 多了 Delete" + }, + { + "id": "6719", + "body": "Amazon CloudFront 增加了加拿大的點:「Amazon CloudFront Expands to Canada」,一次開了兩個機房:\r\n\r\n
    I am happy to announce that we are adding CloudFront edge locations in Toronto and Montreal in order to better serve our users in the region, bringing the global count up to 59 (full list).
    \r\n\r\n價錢跟美國一樣,但是流量是分開計算累計值的:\r\n\r\n\"\"\r\n\r\n總算記得加拿大這個國家了 XDDD\r\n\r\n另外一個是昨天發現 CloudFlare台灣固網 (以及台灣大哥大用戶) 已經直連了,看起來是六月底的時候就通了,只是一直沒注意到:\r\n\r\n\"\"\r\n\r\n這樣台灣主要的 ISP 對 CloudFlare 都有直連了...", + "title": "Amazon CloudFront 加拿大機房 (然後順便提一下 CloudFlare...)" + }, + { + "id": "6720", + "body": "Netflix 對於寫了一篇關於隱私保護的技術細節:「Protecting Netflix Viewing Privacy at Scale」。\r\n\r\n其中講到 2012 年的 Netflix Open Connect 中的 Open Connect Appliance (OCA,放伺服器到 ISP 機房的計畫) 只有單台伺服器 8Gbps,到現在 2016 可以達到 90Gbps:\r\n\r\n
    As we mentioned in a recent company blog post, since the beginning of the Open Connect program we have significantly increased the efficiency of our OCAs - from delivering 8 Gbps of throughput from a single server in 2012 to over 90 Gbps from a single server in 2016.
    \r\n\r\n早期的 Netflix 走 sendfile() 將影片丟出去,這在 kernel space 處理,所以很有效率:\r\n\r\n\"\"\r\n\r\n當影片本身改走 HTTPS (TLS) 時,其中一個遇到的效能問題是導致 sendfile() 無法使用,而必須在 userland space 加密後改走回傳統的 write() 架構,這對於效能影響很大:\r\n\r\n\"\"\r\n\r\n所以他們就讓 kernel 支援 AES 系列加密 (包括 AES-GCM 與 AES-CBC),效能的提昇大約是 30%:\r\n\r\n\"\"\r\n\r\n
    Our changes in both the BoringSSL and ISA-L test situations significantly increased both CPU utilization and bandwidth over baseline - increasing performance by up to 30%, depending on the OCA hardware version.
    \r\n\r\n文章開頭也有提到選 AES-GCM 與 AES-CBC 的一些來龍去脈,主要是 AES-GCM 的安全強度比較好,另外考慮到舊的 client 不支援 AES-GCM 時會使用 AES-CBC:\r\n\r\n
    We evaluated available and applicable ciphers and decided to primarily use the Advanced Encryption Standard (AES) cipher in Galois/Counter Mode (GCM), available starting in TLS 1.2. We chose AES-CGM over the Cipher Block Chaining (CBC) method, which comes at a higher computational cost. The AES-GCM cipher algorithm encrypts and authenticates the message simultaneously - as opposed to AES-CBC, which requires an additional pass over the data to generate keyed-hash message authentication code (HMAC). CBC can still be used as a fallback for clients that cannot support the preferred method.
    \r\n\r\n另外 OCA 機器本身也都夠新,支援 AES-NI 指令集,效能上不是太大的問題:\r\n\r\n
    All revisions of Open Connect Appliances also have Intel CPUs that support AES-NI, the extension to the x86 instruction set designed to improve encryption and decryption performance. We needed to determine the best implementation of AES-GCM with the AES-NI instruction set, so we investigated alternatives to OpenSSL, including BoringSSL and the Intel Intelligent Storage Acceleration Library (ISA-L).
    \r\n\r\n不過在「Netflix Open Connect Appliance Deployment Guide」(26 July 2016 版) 這份文件裡看起來還是用多條 10Gbps 透過 LACP 接上去:\r\n\r\n
    You must be able to provision 2-4 x 10 Gbps ethernet ports in a LACP LAG per OCA. The exact quantity depends on the OCA type.
    \r\n\r\n可能是下一版準備要上 40Gbps 或 100Gbps 的準備...?", + "title": "Netflix 對 sendfile() 在 TLS 情況下的加速" + }, + { + "id": "6721", + "body": "Google Chrome 53 將會再度限縮 Flash 的使用情境:「Flash and Chrome」。\r\n\r\n
    Today, more than 90% of Flash on the web loads behind the scenes to support things like page analytics. This kind of Flash slows you down, and starting this September, Chrome 53 will begin to block it.
    \r\n\r\n而到了 55 的時候會再縮,只有 Chrome 裡面白名單的網站才支援 Flash:\r\n\r\n
    In December, Chrome 55 will make HTML5 the default experience, except for sites which only support Flash.
    ", + "title": "Google Chrome 53 要再限縮 Flash 的使用" + }, + { + "id": "6723", + "body": "前幾天跟 AWS 的人開會的時候得知 ALB 的 beta program,今天就看到正式公開的消息了:「New – AWS Application Load Balancer」。\r\n\r\n\"\"\r\n\r\n最主要的是對 WebSockets 與 HTTP/2 的支援,這個需求都喊很久了:\r\n\r\n
    WebSocket allows you to set up long-standing TCP connections between your client and your server. This is a more efficient alternative to the old-school method which involved HTTP connections that were held open with a “heartbeat” for very long periods of time. WebSocket is great for mobile devices and can be used to deliver stock quotes, sports scores, and other dynamic data while minimizing power consumption. ALB provides native support for WebSocket via the ws:// and wss:// protocols.
    \r\n\r\n
    HTTP/2 is a significant enhancement of the original HTTP 1.1 protocol. The newer protocol feature supports multiplexed requests across a single connection. This reduces network traffic, as does the binary nature of the protocol.
    \r\n\r\n另外是 url routing,不過目前看起來只能設 10 條,我猜可以問問能不能加吧:\r\n\r\n
    An Application Load Balancer has access to HTTP headers and allows you to route requests to different backend services accordingly. For example, you might want to send requests that include /api in the URL path to one group of servers (we call these target groups) and requests that include /mobile to another. Routing requests in this fashion allows you to build applications that are composed of multiple microservices that can run and be scaled independently.\r\n\r\nAs you will see in a moment, each Application Load Balancer allows you to define up to 10 URL-based rules to route requests to target groups. Over time, we plan to give you access to other routing methods.
    \r\n\r\n再來是改善了之前抱怨很多的 health check:\r\n\r\n
    Application Load Balancers can perform and report on health checks on a per-port basis. The health checks can specify a range of acceptable HTTP responses, and are accompanied by detailed error codes.
    \r\n\r\n改進了不少東西...", + "title": "AWS 的 ALB (Application Load Balancer)" + }, + { + "id": "6724", + "body": "開放 IPv6 存取 Amazon S3 了:「Now Available – IPv6 Support for Amazon S3」。\r\n\r\n對應的 Endpoint 是 http://BUCKET.s3.dualstack.REGION.amazonaws.comhttp://s3.dualstack.REGION.amazonaws.com/BUCKET。\r\n\r\n值得注意的是所有功能都開放 IPv6 了,包括 BitTorrent (還記得嗎 XDDD 如果忘記的,可以參考「Using BitTorrent with Amazon S3 這篇的說明」):\r\n\r\n
    S3 Feature Support – IPv6 support is available for all S3 features with the exception of Website Hosting, S3 Transfer Acceleration, and access via BitTorrent.
    \r\n\r\nUpdate:寫太快發現早上匆匆忙忙出門寫錯了,是「不支援」,感謝 Twitter 上被提醒了:\r\n\r\n

    @gslin “with the exception of” 應該是說 S3 不支援在BitTorrent 上使用 IPv6。

    — cheungpat (@cheungpat) August 12, 2016
    \r\n\r\n\r\n接下來是等 Amazon EC2Amazon CloudFront 的支援...", + "title": "Amazon S3 開放 IPv6 存取" + }, + { + "id": "6726", + "body": "在 Percona 的「Small innodb_page_size as a performance boost for SSD」這篇文章裡提到了 MySQL 5.7 的 innodb_page_size 在 SSD 上對效能的差異,主要是這張圖的解釋:\r\n\r\n\"\"\r\n\r\n先講一下標示的部份,有三個產品線 (都是 Samsung 的 SSD),中間的 sam850 是消費級的 SSD 硬碟 (所以不是本次重點),而 sam863 是企業級 SATA SSD,pm1725 則是企業級 PCI-e SSD。下方的 BP 指的是 Buffer Pool 大小,單位是 GB。左邊是速度,數字愈大愈好。\r\n\r\nInnoDB 預設 16KB 的 page size,配合 SSD 大多都是 4KB 的 block size 後,效能的提昇非常巨大 (70% 的提昇),雖然既有的 InnoDB 要換過去會花不少功夫,但作者還是很建議評估:\r\n\r\n
    I think a 70% performance gain is too significant to ignore, even if manipulating innodb_page_size requires extra work. I think it is worthwhile to evaluate if using different innodb_page_size settings help a fast SSD under your workload.
    \r\n\r\n不過 comment 有不少額外重要的資訊。\r\n\r\n有提到 Galera Cluster 目前有 bug,無法使用 4KB page size,可以在「Restarting a cluster with innodb_page_size=4096 segfaults」這邊看到 bug report。\r\n\r\n另外有提到,使用 InnoDB Compression 的前提下,4KB 也許不是個好主意,用 8KB 也許是個方向:\r\n\r\n
    You’re right – if you’re using Innodb Compression 4K base page is unlikely to be the good choice. Though we do not see Innodb compression (any of them) being used too frequently.\r\n\r\nIf using compression 8K base page size with 4K compressed page size might be good idea if 2x compression is routinely reached
    \r\n\r\n不過我覺得應該還是有幫助才對 (可能提昇不高,但想了一下應該不會有負面的影響),之後有機會再測試看看吧 :o", + "title": "MySQL 5.7 中 InnoDB 的 innodb_page_size 在 SSD 硬碟上對效能的巨大影響" + }, + { + "id": "6731", + "body": "在 Hacker News 上的「Ask HN: Is it possible to run your own mail server for personal use?」這篇道出了現在自建 mail system 的難度。作者遇到信件常常被各大 mail 服務歸類成 spam:\r\n\r\n
    The problem is making sure my mail is not marked as spam by the major MTAs out there, gmail and hotmail both mark my mails as spam.
    \r\n\r\n整理一下現在自己建 mail system 要做到哪些事情:\r\n\r\n\r\n\r\n如同「Exercising Software Freedom in the Global Email System」這邊講的,現在要自己搞 mail system 超累...", + "title": "自建 Mail System 的難度" + }, + { + "id": "6733", + "body": "在「Generating fantasy maps」這邊看到在講產生隨機地圖的方法,就像這樣細緻的地圖:\r\n\r\n\"\"\r\n\r\n作者是依照「Polygonal Map Generation for Games」這篇的方法改善的,我之前看過但好像沒寫文章記錄下來...\r\n\r\n\"\"\r\n\r\n兩篇文章裡面都寫得很詳細,一步一步提供用到的演算法以及範例說明。", + "title": "產生隨機地圖" + }, + { + "id": "6734", + "body": "又是一個對 HTTPS 的攻擊:「HEIST attack on SSL/TLS can grab personal info, Black Hat」、「New attack steals SSNs, e-mail addresses, and more from HTTPS pages」。\r\n\r\n一樣是 Compression 產生的 side-channel attack,只是這次是結合 TCP window size 的攻擊。投影片可以在「HTTP Encrypted Information can be Stolen through TCP-windows (PDF)」這邊看到。\r\n\r\n這次的攻擊只需要在瀏覽器上插入 HTTP 產生 HTTPS 的流量,然後從旁邊看 HTTPS 連線的 TCP packet 就可以了,而且對 HTTP/2 也很有效:\r\n\r\n\"\"\r\n\r\n而且很不幸的,目前沒有太好的解法,因為所有的攻擊手法都是照著使用者無法發現的路徑進行的 @_@\r\n\r\n對於使用者,大量使用 HTTPS (像是 HTTPS Everywhere 這樣的套件),能夠降低政府單位與 ISP 將 javascript 插入 HTTP 連線,產生 HTTPS 的行為。\r\n\r\n而對於網站端來說,全站都隨機產生不同長度的 HTTP header 可能是個增加破解難度的方式 (而且不會太難做,可以透過 apache module 或是 nginx module 做到),但還是可以被統計方法再推算出來。\r\n\r\n不知道有沒有辦法只對 HTTPS 開 javascript,雖然攻擊者還是可以用 <img> 攻擊...\r\n\r\n也許以後 HTTP/3 之類的協定會有一區是不壓縮只加密的,避開這類 compression-based attack @_@", + "title": "前陣子在 Black Hat 上發表的 HEIST 攻擊 (對 HTTPS 的攻擊)" + }, + { + "id": "6735", + "body": "在 Hacker News Daily 上看到的方法,作者利用機器學習的方法試著找出那些因素導致他變胖,然後再規劃減肥計畫:「Discovering ketosis: how to effectively lose weight」,文章有點長,講重點。\r\n\r\n首先作者把每天的體重與行為記錄起來,像是這樣:\r\n\r\n
    #\r\n# -- Comment lines (ignored)\r\n#\r\nDate,MorningWeight,YesterdayFactors\r\n2012-06-10,185.0,\r\n2012-06-11,182.6,salad sleep bacon cheese tea halfnhalf icecream\r\n2012-06-12,181.0,sleep egg\r\n2012-06-13,183.6,mottsfruitsnack:2 pizza:0.5 bread:0.5 date:3 dietsnapple splenda milk nosleep\r\n2012-06-14,183.6,coffeecandy:2 egg mayo cheese:2 rice meat bread:0.5 peanut:0.4\r\n2012-06-15,183.4,meat sugarlesscandy salad cherry:4 bread:0 dietsnapple:0.5 egg mayo oliveoil\r\n2012-06-16,183.6,caprise bread grape:0.2 pasadena sugaryogurt dietsnapple:0.5 peanut:0.4 hotdog\r\n2012-06-17,182.6,grape meat pistachio:5 peanut:5 cheese sorbet:5 orangejuice:2\r\n# and so on ...
    \r\n\r\n當時只是記錄,並沒有刻意減肥:\r\n\r\n
    I was not dieting at that time. Just collecting data.
    \r\n\r\n剩下的就跑分析直接拉出哪些行為的幫助最大,於是就有這張圖了:\r\n\r\n\"\"", + "title": "機器學習減肥法" + }, + { + "id": "6736", + "body": "Dropbox 發表了他們所研究的 Document Detecting 技術:「Fast and Accurate Document Detection for Scanning」。\r\n\r\n他們希望抓出這張圖裡面「文件」的「邊緣」:\r\n\r\n\"\"\r\n\r\n用 Canny edge detector 會跑出這樣,很明顯多了很多不太正確的邊線,對於後續判斷上會困難不少:\r\n\r\n\"\"\r\n\r\n剛好也是最近看到的另外一篇文章「Image Kernels Explained Visually」在講 Image Kernel,有些地方有點類似的東西,交叉看頗有感覺的...\r\n\r\nAnyway,Dropbox 最後的成果很不錯啊,可以看示範:\r\n\r\n\"\"", + "title": "Dropbox 的 Document Detecting" + }, + { + "id": "6737", + "body": "微軟也推出類似於 Google CloudVision API 的服務了:「Microsoft Cognitive Services - Computer Vision API」。\r\n\r\n微軟這次推出了三個功能,Analyze an image (類似於 Google Cloud 這邊的 Label Detection)、Generate a thumbnail (Google Cloud 沒有對應的功能) 與 OCR (對應到 Google Cloud 的 OCR)。\r\n\r\n微軟的每千次都是 USD$1.5,而 Google 的 Label Detection 則貴多了 (最開始是 USD$5,到最大的量是 USD$2),不知道兩邊辨識的品質如何...\r\n\r\n而 OCR 的部份 Google 開始是 $2.5,到最大的量是 $0.6,兩邊的定價策略也蠻有趣的。", + "title": "微軟也推出圖片辨識的 API 了" + }, + { + "id": "6738", + "body": "昨天跟朋友吃飯的時候談到這個問題,回家幫他找一下解法。主要的限制是各 ISP 對單一 mac address 限制分配一個 IP,所以問題只在於要怎麼在 Linux 下的單一網卡建立多個不同的 mac address,後續的就好做了。\r\n\r\n主要是參考 Macvlan and IPvlan basics 這篇文章的指令測試。\r\n\r\n首先是建立 fakevlan1 (卡號系統會隨機產生),然後啟用他,最後呼叫 dhclient 請 ISP 提供 IP:\r\n\r\n
    # ip link add fakevlan1 link eth1 type macvlan mode bridge\r\n# ifconfig fakevlan1 up\r\n# dhclient fakevlan1
    \r\n\r\n這邊細部沒有處理 routing 的問題 (dhclient 會收到 ISP 提供的各種 routing 與 dns 資訊),看起來可以透過「Can I prevent a default route being added when bringing up an interface?」這邊的方法處理掉。\r\n\r\nPPPoE 的方法我相信也類似啦... (手邊沒有 HiNet 線路可以測試 XD)", + "title": "一張網卡上面從 ISP 取得多個 DHCP IP 或是取得多個 PPPoE IP" + }, + { + "id": "6740", + "body": "WiGLE 是個蒐集無線網路資訊的服務 (i.e. SSID、mac address 以及定位位置),依照維基百科上的資料,WiGLE 計畫從 2001 年開始,到現在快十五年了:\r\n\r\n
    The first recorded hotspot on WiGLE was uploaded in September 2001.
    \r\n\r\n趁著最近 Pokémon Go 會跑來跑去,就順便幫忙蒐集資料了...\r\n\r\n目前我蒐集資料的方式是透過 WiGLE 的 Android 應用程式 (Wigle Wifi Wardriving) 開著讓他背景跑,然後回到家以後上傳,過一陣子讓系統更新後就可以看到了。", + "title": "WiGLE (Wireless Geographic Logging Engine)" + }, + { + "id": "6741", + "body": "在 Twitter 上看到整理出來的:\r\n\r\n

    Awesome. "Linux Performance Tools" by @brendangregg via @FreeBSDHelp Large version https://t.co/ByoYeLpjWW #sysadmin pic.twitter.com/sLckhiJiPB

    — nixCraft (@nixcraft) August 11, 2016
    \r\n\r\n\r\n大圖:\r\n\r\n\"\"\r\n\r\n找時間操練一次才會記得... 不過話說回來,出現 @FreeBSDHelp 也是頗有趣的 XD", + "title": "Linux 下各種效能觀察工具" + }, + { + "id": "6742", + "body": "GitHub 的新功能,在 pull request 後修改 target branch,這樣可以做後續討論或是調整,然後再 merge 回 dev 或是 master branch 上:「Change the base branch of a Pull Request」。\r\n\r\n\"\"", + "title": "在 Pull Request 後修改 target branch" + }, + { + "id": "6743", + "body": "雖然利用談判技巧是可以避開 (在你有本錢談判的情況下),麻州直接立法禁止了,這對於求職者來說相當重要:「Illegal in Massachusetts: Asking Your Salary in a Job Interview」。\r\n\r\n
    The new law will require hiring managers to state a compensation figure upfront — based on what an applicant’s worth is to the company, rather than on what he or she made in a previous position.
    \r\n\r\n法案是「Bill S.2119」,可以看到「An Act to establish pay equity」的說明,應該是指目標之類的。\r\n\r\n裡面的幾個重點,首先是生效日期:\r\n\r\n
    SECTION 7. This act shall take effect on January 1, 2018.
    \r\n\r\n然後是求職期間的禁止行為:\r\n\r\n
    (3) seek the salary history of any prospective employee from any current or former employer; provided, however, that a prospective employee may provide written authorization to a prospective employer to confirm prior wages, including benefits or other compensation or salary history only after any offer of employment with compensation has been made to the prospective employee;
    \r\n\r\n接下來應該會有更多州制定類似的條款...", + "title": "麻州立法禁止詢問前一份工作的薪資" + }, + { + "id": "6744", + "body": "在 Twitter 上看到「NoSQL Databases: a Survey and Decision Guidance」這邊有夠長的,對於還不熟悉目前 NoSQL 常用到的理論技術的人,剛好可以拿來看一看...\r\n\r\n對於熟悉的人來說,這些圖表整理的頗不錯:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n不過 NoSQL 裡面頗多地雷,大家保持健康的心態用就是了 XDDD", + "title": "對 NoSQL 分析的大量說明與圖表" + }, + { + "id": "6745", + "body": "AWS 正式發表了在 Ruby 上使用 DynamoDB 的 library:「Announcing General Availability of aws-record」。\r\n\r\nGitHub 連結在「aws/aws-sdk-ruby-record」,而 Ruby Gems 的連結在「aws-record」。\r\n\r\n這樣用起來更簡單了...", + "title": "Ruby 上使用 DynamoDB 的函式庫:aws-record" + }, + { + "id": "6746", + "body": "Apache Kafka 是個 pub-sub 系統:\r\n\r\n
    Apache Kafka is publish-subscribe messaging rethought as a distributed commit log.
    \r\n\r\n而 Yelp 的人想要將 MySQL 的更新資訊送一份到 Kafka 就可以做很多應用。文章前面介紹了很多原理以及理論,像是講 MySQL 的 replication:\r\n\r\n\"\"\r\n\r\n但讀這篇文章發現重點在於他介紹了 GitHub 上的「noplay/python-mysql-replication」這個專案:\r\n\r\n
    Our stream reader is an abstraction over the BinLogStreamReader from the python-mysql-replication package.
    \r\n\r\n這個專案可以解析 MySQL 的 replication protocol:\r\n\r\n
    Pure Python Implementation of MySQL replication protocol build on top of PyMYSQL. This allow you to receive event like insert, update, delete with their datas and raw SQL queries.
    \r\n\r\n馬上就感覺到可以透過這個 library 做不少事情,像是直接接到 worker,再更新 Elasticsearch 上的資料,這樣就是 100% 確保不會漏更新...", + "title": "Yelp 對 MySQL 更新的資料送到 Kafka 的作法" + }, + { + "id": "6747", + "body": "CloudFlare 特地寫了一篇討拍文在分析對六個 ISP 的超高成本:「Bandwidth Costs Around the World」。\r\n\r\n其他的就不講了,先看對價錢的定義:\r\n\r\n
    As a benchmark, let's assume the cost of transit in Europe and North America is 10 units (per Mbps).
    \r\n\r\n然後來看亞洲區以及 HiNet 的部份寫了什麼:\r\n\r\n\"\"\r\n\r\n
    Two Asian locations stand out as being especially expensive: Seoul and Taipei. In these markets, with powerful incumbents (Korea Telecom and HiNet), transit costs 15x as much as in Europe or North America, or 150 units.
    \r\n\r\n成本大約是 15 倍。另外說明這六個 ISP 佔了他們 50% 的頻寬成本 (以及 6% 的流量):\r\n\r\n
    Today, however, there are six expensive networks (HiNet, Korea Telecom, Optus, Telecom Argentina, Telefonica, Telstra) that are more than an order of magnitude more expensive than other bandwidth providers around the globe and refuse to discuss local peering relationships. To give you a sense, these six networks represent less than 6% of the traffic but nearly 50% of our bandwidth costs.
    \r\n\r\n為什麼有種濃濃的既視感 XDDD", + "title": "CloudFlare 對 HiNet 成本的抱怨 (還有其他 ISP...)" + }, + { + "id": "6748", + "body": "PGP 短 ID 的安全問題出來了,不見棺材不掉淚啊:「Fake Linus Torvalds' Key Found in the Wild, No More Short-IDs.」。\r\n\r\n重點在這段,已經有人發出攻擊了:\r\n\r\n
    Search Result of 0x00411886: https://pgp.mit.edu/pks/lookup?search=0x00411886&op=index\r\nFake Linus Torvalds: 0F6A 1465 32D8 69AE E438  F74B 6211 AA3B [0041 1886]\r\nReal Linus Torvalds: ABAF 11C6 5A29 70B1 30AB  E3C4 79BE 3E43 [0041 1886]\r\n\r\nSearch Result of 0x6092693E: https://pgp.mit.edu/pks/lookup?search=0x6092693E&op=index\r\nFake Greg Kroah-Hartman: 497C 48CE 16B9 26E9 3F49  6301 2736 5DEA [6092 693E]\r\nReal Greg Kroah-Hartman: 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 [6092 693E]
    \r\n\r\n另外作者給了還蠻重要的觀念:\r\n\r\n
    DO NOT TRUST ANYTHING SHORTER THAN THE FINGERPRINTS.
    ", + "title": "PGP 短 ID 的安全問題" + }, + { + "id": "6749", + "body": "算是講 Dropbox 的「Dropbox 的 Document Detecting」這篇的續集,在抓出文件位置後講顏色的校準:「Fast Document Rectification and Enhancement」。\r\n\r\n要怎麼把左邊的原始圖轉換成右邊的圖,包括了座標轉換以及顏色校準:\r\n\r\n\"\"\r\n\r\n顏色校準的部份講到了這張很有名的圖。在圖片上,A 與 B 的區塊顏色是相同的,但你校準出來的時候必須跟人腦的感覺相同:\r\n\r\n
    Here’s a great illustration of this “illusion,” in which the two tiles marked A and B have the same pixel values, but appear to be very different:
    \r\n\r\n\"\"\r\n\r\n這是最後的成果,左邊是原始圖,中間是將背景改成白色,其他顏色保留,而右邊則是試著修正顏色:\r\n\r\n
    Left: the original image. Middle: an enhanced image, with the background becoming white and the foreground preserved in exact R, G, B values. Note that the colors appear faded. Right: an enhanced image that tries to correct for the perceptual discrepancy.
    \r\n\r\n\"\"\r\n\r\n應該是在 Dropbox 裡面的專案,是個有不少數學可以玩的專案...", + "title": "Dropbox 的文件掃描功能" + }, + { + "id": "6750", + "body": "在「Colorized man pages: Understood and customized」這篇看到介紹設定 less 的顏色,像是這樣:\r\n\r\n\"\"\r\n\r\n另外作者為黑底先改了一個版本:\r\n\r\n\"\"\r\n\r\n然後又改了一個:\r\n\r\n\"\"\r\n\r\n是都不錯啦,不過為什麼不考慮用 most 啊,我覺得還不錯啊,雖然要額外裝起來啦 XDDD", + "title": "less 的顏色" + }, + { + "id": "6751", + "body": "在「A Conflict-Free Replicated JSON Datatype」這邊看到有趣的東西。(arXiv 說 2016/08/18 會有一個小時的 downtime,台灣時間剛好是 2016/08/18 的 20:20 開始:「Maintenance scheduled for Aug 18 8:20 a.m. EDT」)\r\n\r\n作者們設計這個架構是想要在 JSON 結構上找出一個演算法,在 P2P 架構上 (而不需要靠 server) 可以同步並且產生一致的結果,另外要求當 conflict 時不要掉資料:\r\n\r\n
    In this paper we present an algorithm and formal semantics for a JSON data structure that automatically resolves concurrent modifications such that no updates are lost, and such that all replicas converge towards the same state.
    \r\n\r\n作者提出來的想法不是很複雜,而且 merge 保留姿的方法也頗... 特別,但總是給大家一個想法,各何況很多情況下都是有 server 架構,就簡單多了...", + "title": "設計資料同步問題時一定會遇到的 Conflict 解決方案" + }, + { + "id": "6752", + "body": "看到有人用 Markdown 寫電子書:「How I wrote and published my novel using only open source tools」。\r\n\r\n電子書的部份主要是透過 Pandoc 轉換,然後用 Dublin Core Metadata Element Set 提供 metadata。\r\n\r\n\"\"\r\n\r\n實體書的部份也還是用 Pandoc 轉換成 ODT,而後面還是拿出 LibreOffice 對 page format 調整:\r\n\r\n
    LibreOffice has many page formatting options that are non-obvious but incredibly important. For example, I wanted the first page of each chapter to be a right page, and to exclude the page header. I defined my chapter heading style to have a “page break before” and set a page style of “first page” (which is a right page without a header), which is followed by “right page”, which is followed by “left page”, which goes back to “right page”.
    \r\n\r\n\"\"\r\n\r\n主要還是 Pandoc 這個工具,找機會來轉些東西看看效果...", + "title": "Markdown 轉電子書 (以及實體書) 的工具" + }, + { + "id": "6753", + "body": "Bitcoin.org 發出了有點摸不著頭緒的警告:「0.13.0 Binary Safety Warning」。\r\n\r\n
    Bitcoin.org has reason to suspect that the binaries for the upcoming Bitcoin Core release will likely be targeted by state sponsored attackers. As a website, Bitcoin.org does not have the necessary technical resources to guarantee that we can defend ourselves from attackers of this calibre.
    \r\n\r\n而且直接是點名可能是針對中國區的用戶:\r\n\r\n
    We ask the Bitcoin community, and in particular the Chinese Bitcoin community to be extra vigilant when downloading binaries from our website.
    \r\n\r\n由於 Bitcoin.org 全站走 HTTPS,這是在暗示會出現「不小心發出 Bitcoin.org 的 SSL certificate」的事情?另外官方也建議使用 PGP public key 驗證:\r\n\r\n
    We strongly recommend that you download that key, which should have a fingerprint of 01EA5486DE18A882D4C2684590C8019E36C2E964. You should securely verify the signature and hashes before running any Bitcoin Core binaries. This is the safest and most secure way of being confident that the binaries you’re running are the same ones created by the Core Developers.
    \r\n\r\n來拿板凳蹲著看,順便拉一張目前 certificate 看到的資訊,目前是從 RapidSSL SHA256 CA - G3 簽出來:\r\n\r\n\"\"", + "title": "Bitcoin.org 對於接下來的 release 發出警告" + }, + { + "id": "6754", + "body": "Golang 1.7 主打更小的 binary size:「Smaller Go 1.7 binaries」:\r\n\r\n
    Typical programs, ranging from tiny toys to large production programs, are about 30% smaller when built with Go 1.7.
    \r\n\r\n還附了一張經典的「Hello, world」程式的分析:\r\n\r\n\"\"\r\n\r\n由於現代 CPU 的速度與 L1/L2/... cache 有緊密關係,當 binary size 變小時,常常會伴隨著 memory access 變快 (因為 hitrate 提昇),所以 binary size 也是效能指數蠻重要的一環。", + "title": "Golang 1.7" + }, + { + "id": "6755", + "body": "原來這個叫做 Delayed Queue,難怪之前用其他關鍵字都找不到什麼資料... (就不講其他關鍵字了 XD)\r\n\r\nNetflix 發表了他們自己所開發的 Delayed Queue:「Distributed delay queues based on Dynomite」。\r\n\r\n本來的架構是用 Cassandra + Zookeeper 來做:\r\n\r\n
    Traditionally, we have been using a Cassandra based queue recipe along with Zookeeper for distributed locks, since Cassandra is the de facto storage engine at Netflix.
    \r\n\r\n但可以馬上想到不少問題,就如同 Netflix 提到的:\r\n\r\n
    Using Cassandra for queue like data structure is a known anti-pattern, also using a global lock on queue while polling, limits the amount of concurrency on the consumer side as the lock ensures only one consumer can poll from the queue at a time.
    \r\n\r\n所以就改放到 Netflix 另外開發的 Dynamite 上:\r\n\r\n
    Dynomite, inspired by Dynamo whitepaper, is a thin, distributed dynamo layer for different storage engines and protocols. Currently these include Redis and Memcached. Dynomite supports multi-datacenter replication and is designed for high availability.
    \r\n\r\n後端是 RedisMemcached 的系統,可以對抗整個機房從 internet 上消失的狀態。\r\n\r\n在設計上則是「保證會跑一次」,也就是有可能會有多次的情況,用 Dyno Queues 系統的人必需要考慮進去:\r\n\r\n
    4. At-least-once delivery semantics
    \r\n\r\n雖然整篇講的頗輕鬆,但實際看起來還是很厚重... 暫時還是不會用吧 :o", + "title": "Netflix 開發的 Delayed Queue" + }, + { + "id": "6756", + "body": "在「Security fixes for Libgcrypt and GnuPG 1.4 [CVE-2016-6316]」這邊看到這個歷史悠久的 bug:\r\n\r\n
    Felix Dörre and Vladimir Klebanov from the Karlsruhe Institute of Technology found a bug in the mixing functions of Libgcrypt's random number generator: An attacker who obtains 4640 bits from the RNG can trivially predict the next 160 bits of output. This bug exists since 1998 in all GnuPG and Libgcrypt versions.
    \r\n\r\n就這樣的行為,對於自己用的機器應該是還好... 不過得到 4640 bits 後就可以預測接下來的 160 bits,這個 RNG 有點囧 @_@\r\n\r\n官方目前是認為應該還好:\r\n\r\n
    A first analysis on the impact of this bug in GnuPG shows that existing RSA keys are not weakened. For DSA and Elgamal keys it is also unlikely that the private key can be predicted from other public information. This needs more research and I would suggest _not to_ overhasty revoke keys.
    \r\n\r\n不過如果你有絕對的安全需求的話還是可以考慮 revoke 再重新生一把...", + "title": "Libgcrypt 與 GnuPG 的安全性問題" + }, + { + "id": "6757", + "body": "之前的 GitHub Pages 都只能吃 gh-pages 這個 branch,而 GitHub 改善了這個部份:「Simpler GitHub Pages publishing」。\r\n\r\n可以直接選擇 master branch,這樣對大多數的情況下簡單多了:\r\n\r\n\"\"\r\n\r\n另外也可以選擇 /docs 下,與其他目錄的資料隔開。", + "title": "GitHub Pages 可以吃其他 branch 了" + }, + { + "id": "6758", + "body": "華盛頓郵報整理出來了 Facebook 的廣告所使用的 98 個個人資訊:「98 personal data points that Facebook uses to target ads to you」。\r\n\r\n基本的個人資訊 (甚至是朋友的),以及使用什麼瀏覽器都可以預期;而 Like 或是參加的 Group 都會被計算也是意料中的事情,不過連信用卡的種類也都在內就頗特別的...\r\n\r\n來檢視一下自己的防禦機制有哪些... 瀏覽器預設擋下第三方 cookie:\r\n\r\n\"\"\r\n\r\n用 Ghostery 預設把所有外部元件擋下來,再用白名單開想要看的部份。用 uBlock Origin 擋下所有廣告。\r\n\r\n另外用「Force Facebook Most Recent」強制 Facebook 轉到 Most Recent 的 Timeline 上。\r\n\r\n不知道這樣夠不夠用...\r\n\r\n最後來列出這 98 個條件:\r\n\r\n
      \r\n
    1. Location
    2. \r\n
    3. Age
    4. \r\n
    5. Generation
    6. \r\n
    7. Gender
    8. \r\n
    9. Language
    10. \r\n
    11. Education level
    12. \r\n
    13. Field of study
    14. \r\n
    15. School
    16. \r\n
    17. Ethnic affinity
    18. \r\n
    19. Income and net worth
    20. \r\n
    21. Home ownership and type
    22. \r\n
    23. Home value
    24. \r\n
    25. Property size
    26. \r\n
    27. Square footage of home
    28. \r\n
    29. Year home was built
    30. \r\n
    31. Household composition
    32. \r\n
    33. Users who have an anniversary within 30 days
    34. \r\n
    35. Users who are away from family or hometown
    36. \r\n
    37. Users who are friends with someone who has an anniversary, is newly married or engaged, recently moved, or has an upcoming birthday
    38. \r\n
    39. Users in long-distance relationships
    40. \r\n
    41. Users in new relationships
    42. \r\n
    43. Users who have new jobs
    44. \r\n
    45. Users who are newly engaged
    46. \r\n
    47. Users who are newly married
    48. \r\n
    49. Users who have recently moved
    50. \r\n
    51. Users who have birthdays soon
    52. \r\n
    53. Parents
    54. \r\n
    55. Expectant parents
    56. \r\n
    57. Mothers, divided by “type” (soccer, trendy, etc.)
    58. \r\n
    59. Users who are likely to engage in politics
    60. \r\n
    61. Conservatives and liberals
    62. \r\n
    63. Relationship status
    64. \r\n
    65. Employer
    66. \r\n
    67. Industry
    68. \r\n
    69. Job title
    70. \r\n
    71. Office type
    72. \r\n
    73. Interests
    74. \r\n
    75. Users who own motorcycles
    76. \r\n
    77. Users who plan to buy a car (and what kind/brand of car, and how soon)
    78. \r\n
    79. Users who bought auto parts or accessories recently
    80. \r\n
    81. Users who are likely to need auto parts or services
    82. \r\n
    83. Style and brand of car you drive
    84. \r\n
    85. Year car was bought
    86. \r\n
    87. Age of car
    88. \r\n
    89. How much money user is likely to spend on next car
    90. \r\n
    91. Where user is likely to buy next car
    92. \r\n
    93. How many employees your company has
    94. \r\n
    95. Users who own small businesses
    96. \r\n
    97. Users who work in management or are executives
    98. \r\n
    99. Users who have donated to charity (divided by type)
    100. \r\n
    101. Operating system
    102. \r\n
    103. Users who play canvas games
    104. \r\n
    105. Users who own a gaming console
    106. \r\n
    107. Users who have created a Facebook event
    108. \r\n
    109. Users who have used Facebook Payments
    110. \r\n
    111. Users who have spent more than average on Facebook Payments
    112. \r\n
    113. Users who administer a Facebook page
    114. \r\n
    115. Users who have recently uploaded photos to Facebook
    116. \r\n
    117. Internet browser
    118. \r\n
    119. Email service
    120. \r\n
    121. Early/late adopters of technology
    122. \r\n
    123. Expats (divided by what country they are from originally)
    124. \r\n
    125. Users who belong to a credit union, national bank or regional bank
    126. \r\n
    127. Users who investor (divided by investment type)
    128. \r\n
    129. Number of credit lines
    130. \r\n
    131. Users who are active credit card users
    132. \r\n
    133. Credit card type
    134. \r\n
    135. Users who have a debit card
    136. \r\n
    137. Users who carry a balance on their credit card
    138. \r\n
    139. Users who listen to the radio
    140. \r\n
    141. Preference in TV shows
    142. \r\n
    143. Users who use a mobile device (divided by what brand they use)
    144. \r\n
    145. Internet connection type
    146. \r\n
    147. Users who recently acquired a smartphone or tablet
    148. \r\n
    149. Users who access the Internet through a smartphone or tablet
    150. \r\n
    151. Users who use coupons
    152. \r\n
    153. Types of clothing user’s household buys
    154. \r\n
    155. Time of year user’s household shops most
    156. \r\n
    157. Users who are “heavy” buyers of beer, wine or spirits
    158. \r\n
    159. Users who buy groceries (and what kinds)
    160. \r\n
    161. Users who buy beauty products
    162. \r\n
    163. Users who buy allergy medications, cough/cold medications, pain relief products, and over-the-counter meds
    164. \r\n
    165. Users who spend money on household products
    166. \r\n
    167. Users who spend money on products for kids or pets, and what kinds of pets
    168. \r\n
    169. Users whose household makes more purchases than is average
    170. \r\n
    171. Users who tend to shop online (or off)
    172. \r\n
    173. Types of restaurants user eats at
    174. \r\n
    175. Kinds of stores user shops at
    176. \r\n
    177. Users who are “receptive” to offers from companies offering online auto insurance, higher education or mortgages, and prepaid debit cards/satellite TV
    178. \r\n
    179. Length of time user has lived in house
    180. \r\n
    181. Users who are likely to move soon
    182. \r\n
    183. Users who are interested in the Olympics, fall football, cricket or Ramadan
    184. \r\n
    185. Users who travel frequently, for work or pleasure
    186. \r\n
    187. Users who commute to work
    188. \r\n
    189. Types of vacations user tends to go on
    190. \r\n
    191. Users who recently returned from a trip
    192. \r\n
    193. Users who recently used a travel app
    194. \r\n
    195. Users who participate in a timeshare
    196. \r\n
    ", + "title": "Facebook 用哪些資訊來決定投放給你的廣告" + }, + { + "id": "6759", + "body": "NSA 使用這些漏洞來大量監聽企業的流量:「Leaked Exploits are Legit and Belong to NSA: Cisco, Fortinet and Snowden Docs Confirm」。\r\n\r\nCisco 已經確認這個安全性漏洞了,全系列包括已經停產的 Cisco PIX、上個世代的 Cisco ASA 5500 (但還有些型號還在賣),以及目前主力的 Cisco ASA 5500-X,另外還包括了安全模組系列也中獎:「Cisco Adaptive Security Appliance SNMP Remote Code Execution Vulnerability」。\r\n\r\n\r\n\r\n標星號的是目前已經沒有在維護的產品,這次只確認受到影響,但不會更新:\r\n\r\n
    Cisco Firewall Service Modules and Cisco PIX Firewalls have passed the last day of software support milestone as stated in the published End of Life (EoL) documents. Further investigations into these devices will not be performed, and fixed software will not be made available.
    \r\n\r\n這次 Cisco 的安全性問題是 SNMP 的洞造成的:\r\n\r\n
    Administrators are advised to allow only trusted users to have SNMP access and to monitor affected systems using the snmp-server host command.
    \r\n\r\n這個洞被 NSA 用來寫 exploit 植入系統:\r\n\r\n
    This flaw was included inside two NSA exploits, dubbed EPICBANANA as well as JETPLOW, which is an enhanced version of EPICBANANA, but with better persistence capabilities, Cisco's Omar Santos said in a blog post.
    \r\n\r\n在 NSA 洩漏出來的文件裡可以看到 ace02468bdf13579 這個特殊辨識字串,而在受感染的樣本上也找到了這個痕跡:\r\n\r\n\"\"\r\n\r\n而且不只是 Cisco,其他幾家也中獎了,可以參考「The NSA Leak Is Real, Snowden Documents Confirm」這邊更多的資訊 @_@", + "title": "Cisco 與 Fortinet 防火牆的 RCE 漏洞" + }, + { + "id": "6760", + "body": "Mutt 最近更新的好快啊 XDDD (相較於富奸的速度):「mutt 1.7.0 released」。看一下官網上這一波的更新記錄:\r\n\r\n\r\n\r\n2016 開始更新的速度快好多... XD", + "title": "Mutt 1.7.0!" + }, + { + "id": "6761", + "body": "在「Page dewarping」這篇看到講文件掃描的技術,以及 open source 的程式,對比之前提到的「Dropbox 的文件掃描功能」與「Dropbox 的 Document Detecting」的時間點,有種淡淡的惡意 XD\r\n\r\n這篇作者是為了未婚妻的需求而寫出來的,本來是作者收到學生的作業時手動在跑,後來未婚妻也拿去用,但量愈來愈大,決定自動化處理:\r\n\r\n
    A while back, I wrote a script to create PDFs from photos of hand-written text. It was nothing special – just adaptive thresholding and combining multiple images into a PDF – but it came in handy whenever a student emailed me their homework as a pile of JPEGs. After I demoed the program to my fiancée, she ended up asking me to run it from time to time on photos of archival documents for her linguistics research. This summer, she came back from the library with a number of images where the text was significantly warped due to curled pages.\r\n\r\nSo I decided to write a program that automatically turns pictures like the one on the left below to the one on the right:\r\n\r\n\"\"
    \r\n\r\n程式都可以在 GitHub 上翻到:「Text page dewarping using a \"cubic sheet\" model」。跟 Dropbox 互別苗頭的感覺 XDDD", + "title": "另外一篇講文件掃描的..." + }, + { + "id": "6762", + "body": "準確度維持在同一個水準上,但是速度卻快了 n 個數量級的 text classification 工具:「FAIR open-sources fastText」。\r\n\r\n可以看到 fastText 的執行速度跟其他方法的差距:\r\n\r\n
    Our experiments show that fastText is often on par with deep learning classifiers in terms of accuracy, and many orders of magnitude faster for training and evaluation.
    \r\n\r\n\"\"\r\n\r\n除了 open source 外,也發表了論文:「Enriching Word Vectors with Subword Information」,看 abstract 的時候發現提到了 Skip-gram:\r\n\r\n
    In this paper, we propose a new approach based on the skip-gram model, where each word is represented as a bag of character n-grams.
    \r\n\r\n結果找資料發現自己以前寫過「Skip-gram」這篇 XDDD", + "title": "Facebook 開源的 fastText" + }, + { + "id": "6763", + "body": "收到 DigitalOcean 的信件通知,snapshot 會開始收費:\r\n\r\n
    Starting October 1, 2016, we will begin charging for snapshot storage at $0.05 per gigabyte per month. This will first be reflected in the invoice posted to your account on November 1, 2016. Like other features, snapshot storage uses hourly pricing, and size is calculated from a compressed version of the snapshot—not the total disk space allocated to the Droplet.
    \r\n\r\n來規劃看看要怎麼處理好了...", + "title": "DigitalOcean 開始加收 Snapshot 費用" + }, + { + "id": "6765", + "body": "OpenStreetMap 也開始嘗試街景圖了:「Introducing OpenStreetView」。\r\n\r\n\"\"\r\n\r\n資料愈來愈豐富了...", + "title": "OpenStreetMap 推出 OpenStreetView" + }, + { + "id": "6766", + "body": "Libreboot 是一個 open source 版本的 BIOS/UEFI 替代品:\r\n\r\n
    Libreboot is a free BIOS or UEFI replacement (free as in freedom); libre boot firmware that initializes the hardware and starts a bootloader for your operating system.
    \r\n\r\n而最近的版本則是順利的在沒有修改作業系統來配合 Libreboot 的情況下將 FreeBSDOpenBSD (不過是 kOpenBSD) 開起來了:「Re: [Libreboot] GNU Libreboot, version 20160818 released」。", + "title": "Libreboot 成功的讓 FreeBSD/OpenBSD 開機" + }, + { + "id": "6769", + "body": "由 NIST 所提出來的規範 (Special Publication 800-63-3: Digital Authentication Guidelines),雖然還在 Draft 階段,但可以看出目前密碼規範的趨勢跟以前的不同:「NIST’s new password rules – what you need to know」。\r\n\r\n整份規範可以在 GitHub 上讀到,不過 markdown 好像沒處理好,直接在 GitHub 上看到的有點亂,不過還算看得懂就是了...\r\n\r\n在 NIST 網站上有 html 版本「Digital Authentication Guideline: Public Preview」可以讀,應該會好一些。\r\n\r\n整份 guideline 很長,密碼的部份主要是在「DRAFT NIST Special Publication 800-63B Digital Authentication Guideline」這份裡面關於「Memorized Secrets」的部份。\r\n\r\n先講對一般業者最不能理解的事情:\r\n\r\n\r\n\r\n下面開始 copy & paste 然後給簡單的註釋...\r\n\r\n首先是對最低長度的定義,至少要八碼。而對最大長度的限制是「至少你要讓使用者可以輸入 64 碼」:\r\n\r\n
    Verifiers SHALL require subscriber-chosen memorized secrets to be at least 8 characters in length. Verifiers SHALL permit user-chosen memorized secrets to be at least 64 characters in length.
    \r\n\r\n密碼不應該限制特殊字元,只要可以印出來的 ASCII 與空白都應該被允許,而 Unicode 也應該要被允許:\r\n\r\n
    All printing ASCII [RFC 20] characters as well as the space character SHALL be acceptable in memorized secrets; Unicode [ISO/ISC 10646:2014] characters SHOULD be accepted as well.
    \r\n\r\n空白可以被濾掉來判斷,但其他的字元都應該被當作強密碼的一部分來判斷:\r\n\r\n
    Verifiers MAY remove space characters prior to verification; all other characters SHALL be considered significant.
    \r\n\r\n要注意的是,為了強度,每一個 Unicode 應該只算一個有效字元:\r\n\r\n
    For purposes of the above length requirements, each Unicode code point SHALL be counted as a single character.
    \r\n\r\n當密碼是隨機被系統設定時,可以是六個字元的強隨機數字:\r\n\r\n
    Memorized secrets that are randomly chosen by the CSP (e.g., at enrollment) or by the verifier (e.g., when a user requests a new PIN) SHALL be at least 6 characters in length and SHALL be generated using an approved random number generator.
    \r\n\r\n另外很重要的是,不應該有提示存取的功能,也就是「安全問題」不安全,所以要被禁止:\r\n\r\n
    Memorized secret verifiers SHALL NOT permit the subscriber to store a “hint” that is accessible to an unauthenticated claimant. Verifiers also SHALL NOT prompt subscribers to use specific types of information (e.g., “What was the name of your first pet?”) when choosing memorized secrets.
    \r\n\r\n然後針對已知的弱密碼 (像是字典單字,以及之前被洩漏出來的密碼) 都應該擋下來:\r\n\r\n
    When processing requests to establish and change memorized secrets, verifiers SHOULD compare the prospective secrets against a dictionary of known commonly-used and/or compromised values. This list SHOULD include passwords from previous breach corpuses, as well as dictionary words and specific words (such as the name of the service itself) that users are likely to choose. If the chosen secret is found in the dictionary, the subscriber SHOULD be required to choose a different value. The subscriber SHOULD be advised that they need to select a different secret because their previous choice was commonly used.
    \r\n\r\n另外不應該要求使用者要特殊字元或是大小寫這種限制,而且也不應該要求使用者定期換密碼 (除非確認被破了):\r\n\r\n
    Verifiers SHOULD NOT impose other composition rules (mixtures of different character types, for example) on memorized secrets. Verifiers SHOULD NOT require memorized secrets to be changed arbitrarily (e.g., periodically) unless there is evidence of compromise of the authenticator or a subscriber requests a change.
    \r\n\r\n另外禁止用明碼存密碼,必須用 PBKDF2 這類可以防禦快速離線計算的演算法:\r\n\r\n
    Verifiers SHALL store memorized secrets in a form that is resistant to offline attacks. Secrets SHALL be hashed with a salt value using an approved hash function such as PBKDF2 as described in [SP800-132]. The salt value SHALL be a 32 bit (or longer) random value generated by an approved random number generator and is stored along with the hash result. At least 10,000 iterations of the hash function SHOULD be performed. A keyed hash function (e.g., HMAC), with the key stored separately from the hashed authenticators (e.g., in a hardware security module) SHOULD be used to further resist dictionary attacks against the stored hashed authenticators.
    ", + "title": "NIST 新的密碼規範" + }, + { + "id": "6771", + "body": "這邊如果把 atomatically 翻成原子性好像怪怪的,就照意思來翻好了。\r\n\r\n這是一篇 2005 年的文章,講如何更換 symbolic link 內容,而且確保 symbolic link 不會短時間不見:「How to change symlinks atomically」。\r\n\r\n作者拿了 strace 解釋 ln -snf 的例子,來說明這個方法沒辦法做到無縫:\r\n\r\n
    $ strace ln -snf new current 2>&1 | grep link\r\nunlink(\"current\")         = 0\r\nsymlink(\"new\", \"current\") = 0
    \r\n\r\n在 unlink()symlink() 中間的 race condition 如果有人存取這個 symbolic link 就會失敗。作者提了這樣的方法來解決:\r\n\r\n
    $ ln -s new current_tmp && mv -Tf current_tmp current
    \r\n\r\n在「How does one atomically change a symlink to a directory in busybox?」這邊雖然提問的是 BusyBox,但道理相同,提到了怎麼做以及為什麼 (不要看綠色勾勾那個,看分數比較高的那個):\r\n\r\n
    This can indeed be done atomically with rename(2), by first creating the new symlink under a temporary name and then cleanly overwriting the old symlink in one go.
    \r\n\r\n當 DocumentRoot 是 symbolic link 時,這點變得很重要。這個方法才能避免切換目錄的過程中間不會有空檔,導致使用者收到 404...\r\n\r\n另外通常會配合 mod_realdoc 一起用,避免程式用到 DocumentRoot 的路徑而導致前面指到的東西跟後面指到的東西不同。", + "title": "無縫更換 symbolic link 所指的目錄或檔案" + }, + { + "id": "6772", + "body": "Nuclear Fallout Shelter 照字面翻是核放射塵碉堡,意思上算是可以對抗輻射塵的防空洞,用 Google Translate 翻出來是「核輻射避難所」,感覺也頗貼切的啦...\r\n\r\n而 C14 project 則是 Online.net 在巴黎的核輻射避難所建立 data center 的玩意:「C14 story - Part 1 Meet Our Nuclear Fallout Shelter」\r\n\r\n在地下 26 公尺,如果一層樓三米的話,大約是已經是地下八樓到九樓的位置了:\r\n\r\n
    Starting in October 2016, you will be able to store all your critical C14 data in our fallout shelter, located 26 meters underground in Paris, France.
    \r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n整個計畫在 2012 年從法國政府買下來,然後開始重建:\r\n\r\n
    In 2011, the French state, owner of the building, decided to move the Ponts et Chaussées' central laboratory in the Parisian suburb and started to dismantle the building.\r\n\r\nThe Ponts et Chaussées' central laboratory buildings were revamped and divided in multiple bundles to be sold and transformed in multi-unit housing. The main building and the shelter were sold separately via a public invitation to tender. Online landed the deal in September 2012 with the project to build a Datacenter. The project’s codename is DC4.
    \r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n接近完工的照片看起來好棒啊:\r\n\r\n\"\"\r\n\r\n看起來這是一系列的故事,到時候應該會有不少照片可以看...", + "title": "在核輻射避難所建的資料中心" + }, + { + "id": "6773", + "body": "最新的攻擊算是實戰類的攻擊,理論基礎以前都已經知道了,只是沒有人實際「完成」。算是近期少數直接對演算法的攻擊,而這些演算法剛好還是被用在 TLSOpenVPN 上,所以嚴重性比較高:「SWEET32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN」。\r\n\r\n攻擊的條件是 block cipher 的 block size,而非 key length,所以就算是 256 bits 的 Blowfish 也一樣也受到影響。\r\n\r\n這次順利打下 Blowfish3DES。這兩個 cipher 的 block size 都是 64 bits,所以對於 birthday attack 來說只要 232 就可以搞定:\r\n\r\n
    This problem is well-known by cryptographers, who always require keys to be changed well before 2n/2 blocks. However it is often minimized by practitioners because the attacks require known plaintext, and reveal only little information. Indeed, standard bodies only recommend to change the key just before 2n/2 blocks, and many implementations don't enforce any limit on the use of a key.
    \r\n\r\n在 OpenVPN 打 Blowfish 的部份 (Blowfish 是 OpenVPN 預設的 cipher):\r\n\r\n
    In our demo, it took 18.6 hours and 705 GB, and we successfully recovered the 16-byte authentication token.
    \r\n\r\n以及 HTTPS 打 3DES 的部份 (為了相容性問題):\r\n\r\n
    Experimentally, we have recovered a two-block cookie from an HTTPS trace of only 610 GB, captured in 30.5 hours.
    \r\n\r\n都是有可能的等級。也該來拔掉對 IE8 的支援了... orz", + "title": "SWEET32:攻 Blowfish 與 3DES" + }, + { + "id": "6774", + "body": "在 Hacker News 上看到的文章,講如何用 JavaScript 砍站:「I Don’t Need No Stinking API – Web Scraping in 2016 and Beyond」。\r\n\r\n引起注意的是「Beating CAPTCHA」這邊,直接拿 Antigate 的服務 (付費服務) 來打穿 CAPTCHA,看了一下價錢:\r\n\r\n
    Cheapest price on the market - starting from 0.7USD per 1000 images, depending on the daily volume
    \r\n\r\n唔,這服務這好像頗不賴... 記錄起來用 :o", + "title": "砍站的技巧?" + }, + { + "id": "6775", + "body": "美國郵局決定要發行 Star Trek 五十週年郵票:「Star Trek Postage Stamps Coming Soon: Celebrating 50 Years of Exploring the Final Frontier」。\r\n\r\n\"\"\r\n\r\n也快五十年了啊:\r\n\r\n
    The original Star Trek TV series took to the airwaves nearly 5o years ago–on September 8, 1966.
    ", + "title": "Star Trek 五十週年郵票" + }, + { + "id": "6776", + "body": "letsencrypt.sh 是個用 shell script 實作出來的 letsencrypt/acme client,可以對 Let's Encrypt 申請出 SSL certificate。相較於官方後來交接給 EFFCertbot,我還蠻推薦使用純粹只需要 shell script 的 letsencrypt.sh...\r\n\r\n由於作者沒有發出新的 release tarball,加上目前最新的 release 的程式也已經無法使用,所以昨天花了點時間更新了 letsencrypt.sh 的 PPA,就弄了一個 0.2.0.20160822 (版本號碼大於目前的 release 版本的 0.2.0):「PPA for letsencrypt.sh」。\r\n\r\n與 0.2.0 版相比有個 BC-break 的地方:新版的 config 改檔名了 (從 config.sh 變成 config),如果之前有設定的話要記得改:\r\n\r\n
    $ cd /etc/letsencrypt.sh/\r\n$ sudo mv config.sh config
    \r\n\r\n也趁機把之前建立 source package 的 build.sh 改成可以吃 git hash 或是 tag name 的版本,這樣需要針對特定版本產生 source package 也簡單多了。", + "title": "更新 letsencrypt.sh 的 PPA" + }, + { + "id": "6778", + "body": "前幾天看到「Someone emailed me asking for tips or sites for learning JavaScript, and this is my final answer.」這篇也是頗有趣的...\r\n\r\n
    Read the ECMAScript specification.
    \r\n\r\n下面還花了些篇幅解釋要怎麼讀 XDDD\r\n\r\n
    Don’t feel like you have to understand every word. Give yourself permission to just force the words into your brain, and move on to the next section. If you’re diligent about it, it only takes a few hours. Repeat this process every few years.
    \r\n\r\n超硬派的 XDDD", + "title": "硬派學 JavaScript..." + }, + { + "id": "6779", + "body": "看到 Scylla 正式公告 1.3 版的消息了:「Scylla release: version 1.3」。\r\n\r\nScylla 是用 C++ 重寫 Java 版本的 Cassandra 所有東西 (包括資料結構與 Protocol),目標是做到可以完全相容替換現有 Cassandra Cluster。(號稱可以一台一台移除 Cassandra 的程式,裝上 Scylla 後就可以無痛換過去)\r\n\r\n而 Scylla 另外一個重點是效能的提昇,官方宣稱在完整最佳化的情況下是 10x 以上的效能提昇,之前拿 AWS 實測 (沒有完整最佳化) 也可以看到 2x 到 4x 的數字,對於目前的 Cassandra 應用來說極為重要。\r\n\r\n1.3 版最重要的功能就是對 Thrift 的支援:\r\n\r\n
    Thrift support. Many Cassandra users are still using Thrift, and they can now continue doing so while benefiting from Scylla’s performance. Built on top of Scylla CQL internal implementation, Scylla Thrift provides similar throughput and latency to Scylla CQL. Users of projects like KairosDB and Titan can now migrate to Scylla while maintaining full protocol compatibility .
    \r\n\r\n本來在 roadmap 上的計畫是用兩個版本支援 Thrift:(從 Google Cache 拉出來的,CSS 看起來有些問題,不過意思有到就好)\r\n\r\n\"\"\r\n\r\n剛剛發現 1.4 的 roadmap 已經沒有列 Thrift 了:\r\n\r\n\"\"\r\n\r\n這應該是暗示已經實作完了?透過 Thrift 界面跟 Cassandra 溝通的應用程式都可以使用 Scylla 了...\r\n\r\n先前在「Facebook Presto · Issue #1139 · scylladb/scylla」這邊跟 ScyllaDB 的人花了不少時間,總算是給出一份 data set 可以讓他們重製 bug,也算是有代價了 XD", + "title": "Scylla 1.3" + }, + { + "id": "6780", + "body": "看到「OpenSSL 1.1.0 released」這篇得知大家期待已久的 OpenSSL 1.1.0 出了,在 1.1.0 的重要新功能中,對 ChaCha20 + Poly1305 的支援算是大家等很久的:\r\n\r\n
    • Support for ChaCha20 and Poly1305 added to libcrypto and libssl
    \r\n\r\n由於 RC4 已經被證明不安全,OpenSSL 內變成沒有堪用的 stream cipher,這邊總算要補上來了...\r\n\r\n另外兩個也頗有趣的:\r\n\r\n
    • Support for scrypt algorithm
    • \r\n
    • Support for X25519
    \r\n\r\n多了些東西...", + "title": "OpenSSL 1.1.0" + }, + { + "id": "6781", + "body": "雖然平常早就把 WoSign 移除信任,但在「Mozilla考虑对沃通CA采取行动」這邊看到有趣的消息,翻了一下 Gervase Markham 發表的原文還蠻精彩的:「Incidents involving the CA WoSign」。\r\n\r\n第一次事件 (Incident 0) 是在 2015/04/23,攻擊者只要能夠證明他能控制某個 TCP port,就會發出 certificate:\r\n\r\n
    On or around April 23rd, 2015, WoSign's certificate issuance system for their free certificates allowed the applicant to choose any port for validation. Once validation had been completed, WoSign would issue certificates for that domain. A researcher was able to obtain a certificate for a university by opening a high-numbered port (>50,000) and getting WoSign to use that port for validation of control.
    \r\n\r\n設計不良造成的資安事件總是會發生。重點在於 Google 知道,但 Mozilla 完全不知道:(我講得很保守是因為這個句子在 thread 後面被澄清解釋的更慘,參考後文)\r\n\r\n
    This problem was reported to Google, and thence to WoSign and resolved. Mozilla only became aware of it recently.
    \r\n\r\n更嚴重的是,這次的事件在 WoSign 的稽核上沒有出現:\r\n\r\n
    * This misissuance incident did not turn up on WoSign's subsequent BR audit[1].
    \r\n\r\n第二次事件 (Incident 1) 是在 2015 年六月,也是資安設計的問題,當你可以拿到 WoSign 所指定的 subdomain 控制權後,你就可以拿到 parent domain 的 certificate,而這次甚至被拿到 GitHub 全系列的 certificate:\r\n\r\n
    The reporter proved the problem in two ways. They accidentally discovered it when trying to get a certificate for med.ucf.edu and mistakenly also applied for www.ucf.edu, which was approved. They then confirmed the problem by using their control of theiraccount.github.com/theiraccount.github.io to get a cert for github.com, github.io, and www.github.io.
    \r\n\r\n嗯,也沒通報:\r\n\r\n
    * This misissuance incident was not reported to Mozilla by WoSign as it should have been (see above).
    \r\n\r\n嗯,稽核也沒出來:\r\n\r\n
    * This misissuance incident did not turn up on WoSign's subsequent BR audit[1].
    \r\n\r\n嗯,被拿到的 domain (ucf.edu) 也沒 revoke:(可以從「crt.sh | 29647048」這邊看到)\r\n\r\n
    They reported this to WoSign, giving only the Github certificate as an example. That cert was revoked and the vulnerability was fixed. However recently, they got in touch with Google to note that the ucf.edu cert still had not been revoked almost a year later.
    \r\n\r\n第三次事件 (Incident 2) 則是在 2016 年七月,由於現在大多數的瀏覽器都會對 2016 後簽出的 SHA-1 憑證直接標示為不安全,而 WoSign 的 API 提供造假,讓簽名日期 (notBefore) 簽在 2015/12/20:\r\n\r\n
    Using the value \"1\" led to a certificate which had a notBefore date (usage start date) of 20th December 2015, and which was signed using the SHA-1 checksum algorithm.
    \r\n\r\n嗯,然後否認造假:\r\n\r\n
    * WoSign deny that their code backdated the certificates in order to avoid browser-based restrictions - they say \"this date is the day we stop to use this code\"[4]. If that is true, it is not clear to us how StartCom came to deploy WoSign code that WoSign itself had abandoned.
    \r\n\r\n嗯,然後還是沒有回報給 Mozilla:\r\n\r\n
    * This misissuance incident was not reported to Mozilla by WoSign as it should have been.
    \r\n\r\n稽核報告應該是因為這太新,還沒開始做?\r\n\r\n另外在 thread 討論時,Google 的 Ryan Sleevi 澄清的更慘:\r\n\r\n
    Clarification: In none of these incidents was Google notified proactively by WoSign. Instead, Google received communication from internal or external researchers regarding these issues, either prior to resolution or much later after the fact, and subsequently contacted WoSign regarding them.\r\n\r\nIt was only when Google found out recently that other programs were NOT notified, proactively, as had been expected, that Google shared the details it was aware of regarding various CA incidents, including those of WoSign, mentioned in this thread.
    \r\n\r\n也就是說,是 Google 主動發現這些問題,並且通報 WoSign。後來過了許久發現 WoSign 沒有照規定通報其他 CA Root 管理單位 (以這邊來說是 Mozilla),於是 Google 決定主動通報其他單位,然後大~爆~炸~\r\n\r\n在密碼學理論裡,CA 架構是靠著稽核建立信任的,這次的事情又再次證實這個問題 (但目前沒有其他好的機制可以做)。來猜測下場的話,我的預期是會像拔掉 CNNIC 的作法拔掉信任,但針對之前發出的 certificate 設為白名單 (直到過期):\r\n\r\n", + "title": "Mozilla 在考慮移除 WoSign 的 CA Root" + }, + { + "id": "6783", + "body": "Facebook 安全設計上的問題造成的重大漏洞:「Hacker reveals How He Could have Hacked Multiple Facebook Accounts」。\r\n\r\n攻擊者先用很多 proxy 去打出哪些 id 是有效的:\r\n\r\n
    Gurkirat first collected valid Facebook IDs by making queries to Facebook Graph API starting with 100,000,000,000,000, since Facebook IDs are generally 15-digit long and then visited www.facebook.com/[ID] with a valid ID number in place of [ID].
    \r\n\r\n這樣他就順利打出兩百萬個帳號:\r\n\r\n
    Once entered, the URL automatically redirected and changed the Facebook ID to the user's username. In this way, first, he was able to make a list of 2 Million valid Facebook usernames.
    \r\n\r\n接下對這些帳號發出重設密碼的需求,並且開始亂猜六碼數字 (也是透過大量的 proxy):\r\n\r\n
    Then using a script, hundreds of proxies and random user-agents, Gurkirat automatically initiated the password reset requests for those 2 million users, each assigned a 6-digit password reset code, thus consuming the complete 6-digit range.
    \r\n\r\n然後就打出一票來了:\r\n\r\n\"\"\r\n\r\n最大的問題在於六碼數字的強度不夠,但 Facebook 看起來沒打算改...", + "title": "大量破解 Facebook 帳號的方法" + }, + { + "id": "6784", + "body": "在「Facebook recommended that this psychiatrist’s patients friend each other」這邊報導了 Facebook 推薦好友機制的演算法意外的拉出了奇怪的東西:\r\n\r\n
    [...], such as this story from Lisa*, a psychiatrist who is an infrequent Facebook user, mostly signing in to RSVP for events. Last summer, she noticed that the social network had started recommending her patients as friends—and she had no idea why.\r\n\r\n“I haven’t shared my email or phone contacts with Facebook,” she told me over the phone.
    \r\n\r\n精神科醫師被 Facebook 推薦他的病人... 而更慘的是病人也收到的推薦包括了其他的病人:\r\n\r\n
    Another one of her female patients had a friend recommendation pop up for a fellow patient she recognized from the office’s elevator. Suddenly, she knew the other patient’s full name along with all their Facebook profile information.\r\n\r\n“It’s a massive privacy fail,” said Lisa. “I have patients with HIV, people that have attempted suicide and women in coercive and violent relationships.”
    \r\n\r\n而且因為職業的關係,他也對此很小心防範:\r\n\r\n
    Lisa lives in a relatively small town and was alarmed that Facebook was inadvertently outing people with health and psychiatric issues to her network. She’s a tech-savvy person, familiar with VPNs, Tor and computer security practices recommended by the Electronic Frontier Foundation–but she had no idea what was causing it.
    \r\n\r\n這聽起來不是什麼好演算法 :o", + "title": "Facebook 推薦好友機制的演算法讓更多的隱私問題浮現..." + }, + { + "id": "6786", + "body": "在 Twitter 上看到 Let's Encrypt 轉了這則講 SSL/TLS 與 PKI 的時間線:「SSL/TLS and PKI History」。\r\n\r\n

    A nice timeline of events in the history of SSL/TLS: https://t.co/mRXg2yX75Y

    — Let's Encrypt (@letsencrypt) August 30, 2016
    \r\n\r\n\r\n這幾年的資料比較完整,看著這些時間線剛好可以拿來複習一下。\r\n\r\n而 2013 年 Snowden 的事情也被放進去了,這使得這三年各種 SSL/TLS 化的進展急劇加速 (包括各種 HTTPS 的進展,甚至是郵件的 STARTTLS 加密等等),也因此推動了像是 Let's Encrypt 這樣更方便提供 SSL/TLS certificate 的組織成立。", + "title": "SSL/TLS 以及 PKI 的歷史 (加上各種風風雨雨)" + }, + { + "id": "6787", + "body": "在 Facebook 上看到這個消息:「交通大學 OAuth 平台上線!」,由於 D2 E-mail 系統上沒什麼資料,主要賣點還是 Single Sign On 的部份。\r\n\r\n當初想要做 OpenID 的 SSO (當年已經有 OpenID 1.0),跟 cschen 申請了 sso.nctu.edu.tw (還掛在 ccreader 上呢),但後來還是沒實做出來 (也忘了是什麼原因),過了快十年總算有人跟計中合作跳下來做了 XD\r\n\r\nSSO 很多人都能做 (像是透過 POP3S 或是 IMAPS 認證,甚至透過網頁登入確認),但只有帶著官方名義做才有意義 (也就是本來就碰的到密碼的人來管理),這次唯一可惜的是還沒有讓系統完全自動化... (i.e. 自由申請)", + "title": "交大的 Single Sign On 系統" + }, + { + "id": "6788", + "body": "在「Twitoor First Android Twitter-based Botnet」這邊看到的消息,原報導在「First Twitter-controlled Android botnet discovered」。\r\n\r\n相較於 IRC 控制來得難以被偵測。因為 IRC 的特性比較好抓 (無論是 Protocol 或是 IP address),而 Twitter 卻是一般人就常常會上的網站 (而且是 HTTPS),暫時沒想到太簡單的方法從網路層面偵測...\r\n\r\n其實同樣道理可以用其他大的平台做 (像是 GitHub 也是可能的平台),不知道網路層上要怎麼防比較有效...", + "title": "拿 Twitter 當作 Botnet 橋樑的惡意軟體" + }, + { + "id": "6789", + "body": "作者用 BigQuery 分析了 GitHub 上的 Tab 與 Space 的差異 (是個 flame war 開始的節奏 XDDD):「400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?」。\r\n\r\n\"\"\r\n\r\n可以看到除了 C 與 Go 以外,大多數的程式語言都是 Space > Tab。另外在文章下面也有使用的 BigQuery 指令可以參考。", + "title": "分析 GitHub 上的 Tab 與 Space" + }, + { + "id": "6790", + "body": "Facebook 發了一篇出來,講 Zstandard:「Smaller and faster data compression with Zstandard」,可以看到:\r\n\r\n\"\"\r\n\r\n如果與 Google 去年 open source 出來的 Brotli 相比,Zstandard 則是著重在速度,想要做出一個比 zlib 快很多但又比 zlib 壓的好的壓縮演算法。", + "title": "Facebook 推出的 Zstandard 壓縮" + }, + { + "id": "6792", + "body": "在「Indian ISPs Speed Up BitTorrent by ‘Peering’ With a Torrent Site」這篇講到印度的 ISP 跟 torrent 站台 TorBox 合作,加速下載的速度。\r\n\r\n\"\"\r\n\r\n裡面提到了蠻有趣的加速技巧:\r\n\r\n
    They help users to download content faster by linking them to local peers in their own network.
    \r\n\r\n不知道是不是指 Local Peer Discovery (BEP-14) 的技術,如果是的話大概可以猜出作法... 這樣可以降低不少 ISP 對外頻寬的流量與成本。", + "title": "印度 ISP 跟 Torrent 站台合作加速下載" + }, + { + "id": "6793", + "body": "在「JIT for PHP project」這邊看到 PHP 新的翻修計畫:\r\n\r\n
    I'm glad to say that we have started a new JIT for PHP project and hope to deliver some useful results for the next PHP version (probably 8.0).\r\n\r\nWe are very early in the process and for now there isn't any real performance improvement yet. So far we spent just 2 weeks mainly working on JIT infrastructure for x86/x86_64 Linux (machine code generation, disassembling, debugging, profiling, etc), and we especially made the JIT code-generator as minimal and simple as possible. The current state, is going to be used as a starting point for research of different JIT approaches and their usability for PHP.
    \r\n\r\n不知道會帶來多少效能提昇 :o", + "title": "PHP 的 JIT 翻修計畫" + }, + { + "id": "6794", + "body": "看到「This iPhone thong case will help you catch 'em all in 'Pokémon Go'」這個,光看圖就知道意思了:\r\n\r\n\"\"\r\n\r\n應該是用 3D Printer 做出來的:\r\n\r\n
    If this sounds familiar, it's basically the commercialized, rubberized version of the 3D-printed Poké Ball \"aimer\" case that one guy made.
    \r\n\r\n不過這不能丟 Curveball 啊 XDDD", + "title": "玩 Pokémon Go 抓怪用的 iPhone 手機殼..." + }, + { + "id": "6795", + "body": "在「Upcoming Changes to Root Certificates in Firefox on Windows」這邊看到 Firefox 49 將會有選項可以讓 Firefox 多吃系統的 Certificate Trust Store:\r\n\r\n
    This feature is available in Firefox 49 and up (currently in beta). To give it a try, set the preference security.enterprise_roots.enabled to true. After that, Firefox should connect successfully to sites using certificates issued by 3rd party root certificates that have been added to the Windows trust database.
    \r\n\r\n這對企業來說會比較方便管理。\r\n\r\n
    These features are still in the early stages, so if you encounter any unexpected behavior, please feel free to file a bug.
    \r\n\r\n然後正在測試階段,有問題的可以去戳...", + "title": "Firefox 49 將可以吃系統的 Certificate Trust Store" + }, + { + "id": "6796", + "body": "在 The Economist 這邊看到圖表,比較 2012 與 2016 年投票的變化:「Who voters supported in the last American election compared with this one」。2016 美國總統選舉將在 11 月初舉辦,這邊是目前的情況。\r\n\r\n\"\"\r\n\r\n這張圖表頗清楚的,雖然有些比例不太對... 可以看到兩大黨以外的票比 2012 增加了不少。", + "title": "2012 與 2016 美國總統選舉的變化" + }, + { + "id": "6797", + "body": "先前在「NIST 新的密碼規範」這邊提到了用字典檔避免使用者選擇弱密碼的問題:\r\n\r\n
    When processing requests to establish and change memorized secrets, verifiers SHOULD compare the prospective secrets against a dictionary of known commonly-used and/or compromised values. This list SHOULD include passwords from previous breach corpuses, as well as dictionary words and specific words (such as the name of the service itself) that users are likely to choose. If the chosen secret is found in the dictionary, the subscriber SHOULD be required to choose a different value. The subscriber SHOULD be advised that they need to select a different secret because their previous choice was commonly used.
    \r\n\r\n除了一般的字典檔以外,還要從之前被破的網站取得。這部份的資料可以從 danielmiessler/SecLists 這邊的 Passwords 目錄下取得,資料不算太多,但應該夠用。", + "title": "常見密碼表" + }, + { + "id": "6798", + "body": "看到 suhide 這個工具:「Chainfire's SuHide — Now You Can Hide Your Android Root Status On Per-App Basis」,原報導出自「Experimental suhide Mod for SuperSU Hides su Binary from Applications」。\r\n\r\n第一個應該是重點,針對特定應用程式隱藏:\r\n\r\n
    - Hides root on a per-app base, no need to globally disable root\r\n- Doesn't need Xposed\r\n- Even supports SuperSU's ancient app compatibility mode (BINDSYSTEMXBIN)\r\n- Passes SafetyNet attestation by default on stock ROMs (last officially tested on 2016.08.31)
    \r\n\r\n不過可以想像到的,接下來的 detection 也會偵測 suhide,再加上 Google 的 SafetyNet 機制,作者在 forum 上也寫了這是個貓抓老鼠的遊戲...", + "title": "對某些應用程式隱藏 Android Root 狀態的 suhide" + }, + { + "id": "6799", + "body": "在「Book Reading 2016」這邊看到一張圖表:\r\n\r\n\"\"\r\n\r\n閱讀人口並沒有太明顯的變化 (以 2012 之後來看)。所以解釋成習慣讀紙本的還是很喜歡紙本的感覺,但是電子書的接受度愈來愈高?\r\n\r\n另外一張圖表則把受訪者的 profile 拿出來細分,性別、種族、年齡、教育程度、年收入、所在地區:\r\n\r\n\"\"\r\n\r\n有不少有趣的數字,解讀看個人了 :o", + "title": "美國人的閱讀習慣 (以閱讀的媒介來分)" + }, + { + "id": "6800", + "body": "在「OpenOffice, after years of neglect, could shut down」這邊看到 OpenOffice 要退場的計畫,自於 mailing list 上的「[DISCUSS] What Would OpenOffice Retirement Involve? (long)」這篇。\r\n\r\n信裡面完全沒提到 LibreOffice,但就目前幾個大的 distribution 都是安裝 LibreOffice 的情況下,其實會有這個提案就不言而喻了。雖然很可惜,但對整個社群能量的集中應該是好事...\r\n\r\n話說回來,Apache Foundation 真的很像垃圾桶,一堆人都把不想維護的東西往那邊丟...", + "title": "OpenOffice 退場的計畫" + }, + { + "id": "6801", + "body": "找資料的時候發現原來在六月底的時候換掉了:「2016/06/30 起 遠傳大寬頻(Seednet) DNS主機異動公告說明」:\r\n\r\n
    感謝您對本遠傳大寬頻(Seednet)長期的支持與愛護,因DNS主機將進行異動,\r\nDNS IP將調整為139.175.1.1,原有的DNS IP(139.175.55.244、139.175.252.16),\r\n將於2016年06月30日不再提供對外連線服務。
    \r\n\r\n這樣的話三大 ISP 都放到最好記的網段下了 (另外兩個分別是台灣固網的 61.31.1.1 與中華的 168.95.1.1)。", + "title": "遠傳的 DNS 改成 139.175.1.1" + }, + { + "id": "6802", + "body": "Update:中文的部份是有問題的。之前以為是跑 Docker 版本時,實際上跑到很久前裝的 skype... 移除後發現 voice 沒問題,但沒有中文字型...\r\n\r\n因為 Skype 裡面不知道跑了什麼東西,所以想要用 Docker 包起來放在 container 裡面跑,但之前測起來不穩定,而且中文字型的問題一直沒解決,所以就先一直丟著。\r\n\r\n而剛剛測了一下 sameersbn/docker-skype 這邊的版本,發現之前遇到沒辦法看中文的問題也解決了。\r\n\r\n安裝的方法非常簡單,先拉下來,然後執行他:\r\n\r\n
    $ docker pull sameersbn/skype:latest\r\n$ docker run -it --rm --volume /usr/local/bin:/target sameersbn/skype:latest install
    \r\n\r\n這樣就會產生 /usr/local/bin/skype,直接跑他就好了,登入後再拿自家電話撥號,測了一下沒什麼問題。另外中文輸入法也是吃 host 的,所以也很順,弄得頗不錯的...", + "title": "用 Docker 跑 Skype 講電話" + }, + { + "id": "6803", + "body": "先前在「蘋果 App Store 收費模式的改變」這邊提到的改變,這幾天細節公開了:「Subscriptions - App Store - Apple Developer」。\r\n\r\n最主要的改變在於超過一年的費用從原來的 30% 降低到 15%:\r\n\r\n
    Within a subscriber’s first year of an auto-renewable subscription, you receive the traditional 70% of the subscription price at each billing cycle, minus applicable taxes. After a subscriber accumulates one year of paid service, your revenue increases to 85% of the subscription price, minus applicable taxes.
    \r\n\r\n不知道這對市場生態會帶來怎麼樣的影響...", + "title": "Apple 的 App Store 的訂閱制度更新" + }, + { + "id": "6804", + "body": "Amazon CloudFront 可以指定 query string 中的某個特定的 key/value 當做 cache key 的一部分了:「Announcing Query String Whitelisting for Amazon CloudFront」,對應的文件在「Configuring CloudFront to Cache Based on Query String Parameters」這邊可以查到。\r\n\r\n先前只能針對選擇忽略掉整個 query string,或是把整個 query string 當作 cache key 的一部分,現在可以細部調整了。\r\n\r\n最簡單的應用可以用在 css/js 的 asset 上,針對 v=\\d+ 當作 cache key 的一部分,而其他的參數可以忽略,不過這好像沒什麼特別的意義。\r\n\r\n目前想到比較有意義的應用是針對 dynamic content 多了一些籌碼可以用,像是 Slack 把整個網站放上 CloudFront 後,應該會有很多 API 是透過 query string 傳遞參數,而這次的改變讓 CloudFront 可以細部調整。", + "title": "CloudFront 支援將 Query String 內的特定 Key/Value 當作 Cache Key 的一部分" + }, + { + "id": "6807", + "body": "Update:auto scaling 在 2012 就支援 spot instance 了:「EC2 Spot Instance Updates – Auto Scaling and CloudFormation Integration, New Sample App」,我一直有 auto scaling 不支援的印象... 這次是支援 EC2 Spot Fleets (i.e. 以 capacity 為主的架構,將兩台 c4.4xlarge 與一台 c4.8xlarge 當作是有相同 capacity 來喊價)。\r\n\r\nAWSAuto Scaling 宣佈支援 Spot Instance 了:「New – Auto Scaling for EC2 Spot Fleets」。\r\n\r\n雖然文章主要都是以 worker 之類的應用來做,但可以看到還是有說 web service:\r\n\r\n
    Web Service – Scale web services based on measured response time and average requests per second.
    \r\n\r\n我猜官方還是不建議這樣用,所以整篇文章都還是以 worker 類為主。應該是因為 web service 直接對使用者,用 Auto Scaling 不一定開的起來,反而有可能會爆炸 XD", + "title": "Auto Scaling 可以拉 EC2 Spot Instance 進來用了" + }, + { + "id": "6809", + "body": "在美國,五大出版商在電子書拆分上對作者佔的比例不斷的下滑,這也代表話語權不斷的下降,而且愈來愈不需要這些「大」出版商了:「Independent authors are starting to outsell the Big Five」。\r\n\r\n這邊所提到的 Big Five 可以在「The Big Five Trade Book Publishers」這邊查到,分別是:\r\n\r\n\r\n\r\n另外也可以把 Amazon 當作是電子書產業的大公司。可以看到獨立發行的比率愈來愈高:\r\n\r\n\"\"\r\n\r\n
    AuthorEarnings.com has published a report on this very subject, so I jumped into the data. Their May 2016 report reports 1340 authors earn over $100,000 per year on Amazon.com. The striking fact here: “Half of them are indies and Amazon-imprint authors.”
    \r\n\r\n「出版社」的架構受到的挑戰愈來愈多了。", + "title": "電子書在美國的販售管道與作者的獲利" + }, + { + "id": "6813", + "body": "從「Balls to learning how to animate, let's film some parkour!」這篇看到讓人懷念的遊戲,1989 年的《波斯王子》:\r\n\r\n\"\"\r\n\r\nJordan Mechner (波斯王子的作者) 用 Rotoscoping 的方式將他弟弟做這些動作的畫面拍下來,然後確保在電腦上角色的動作是順暢的:\r\n\r\n\"\"\r\n\r\n\r\n\r\n
    Here's the source frames used to rotoscope the above animation. Don't let the ghostly pallor fool you! Jordan Mechner's brother is in fact quite healthy; he was altered with state-of-the-art Liquid Paper and Sharpie technology to fit the palette restrictions of the Apple II.
    \r\n\r\n而波斯王子的原始程式碼在 2012 的時候也從 3.5 吋磁片上順利拉出來,放到 GitHub 上:「jmechner/Prince-of-Persia-Apple-II」。\r\n\r\n
    Thanks to Jason Scott and Tony Diaz for successfully extracting the source code from a 22-year-old 3.5\" floppy disk archive, a task that took most of a long day and night, and would have taken much longer if not for Tony's incredible expertise, perseverence, and well-maintained collection of vintage Apple hardware.
    ", + "title": "在遊戲上模擬跑步的動作" + }, + { + "id": "6814", + "body": "看到 OpenBSD 直接把 ACME 協定的 client 放進系統內,而 ACME 也就是 Let's Encrypt 所使用的協定:「Let's Encrypt client imported into -current」:\r\n\r\n
    CVSROOT:\t/cvs\r\nModule name:\tsrc\r\nChanges by:\tflorian@cvs.openbsd.org\t2016/08/31 16:01:42\r\n\r\nAdded files:\r\n\tusr.sbin/acme-client: ChangeLog Makefile acctproc.c base64.c \r\n\t                      certproc.c chngproc.c dbg.c dnsproc.c \r\n\t                      extern.h fileproc.c http.c http.h jsmn.c \r\n\t                      jsmn.h json.c keyproc.c letskencrypt.1 \r\n\t                      main.c netproc.c revokeproc.c rsa.c rsa.h \r\n\t                      sandbox-pledge.c util-pledge.c util.c \r\n\r\nLog message:\r\nImport Kristaps' letskencrypt and call it acme-client in tree.\r\nOK to get it in deraadt@ (and probably beck@)\r\n\r\nAt least deraadt@, beck@ and otto@ are fine with the name and the\r\ndisagreements stopped.
    \r\n\r\n用的是 acme-client,先前叫做 letskencrypt,以 C 開發的 ACME client。", + "title": "OpenBSD 將 ACME Client (Let's Encrypt Client) 納入系統" + }, + { + "id": "6815", + "body": "在 Hacker News Daily 上看到 Firefox 要支援無損格式 FLAC 的消息:「Bug 1195723 - FLAC support / Create FLAC MediaDataDemuxer」。\r\n\r\n隔壁棚關於 Google Chrome 也有 FLAC 相關的「Support FLAC audio codec」,也是等很久都沒消息,不知道會不會因為 Firefox 有進度後...\r\n\r\n現在如果要無損的話只有 WAV 可以用 (話雖如此,IE 還是要到 Edge 才有支援),改用 FLAC 大約可以省下 40% 的大小 (平均值,依照音樂的類型會有不一樣的壓縮率),如果普及的話,不知道 YouTube 之類的服務在轉播音樂會時會不會試著拼看看?", + "title": "Firefox 51 (現在是 48) 將會支援 FLAC" + }, + { + "id": "6816", + "body": "前幾天講到用 DockerSkype 的「用 Docker 跑 Skype 講電話」,剛剛就看到「skypeopensource2」這個專案,不過目前功能非常有限:\r\n\r\n
    First in world self-made client to Skype Network based on reversing original Skype 5.5 client.\r\n\r\nFor now, only receiving and sending messages are supported.
    \r\n\r\n然後看了一下專案內容,應該是 Windows-only,這樣應該還是暫時會用 Docker 版本的 Skype 吧... 最主要還是拿來打電話 XD", + "title": "Open Source 版本的 Skype" + }, + { + "id": "6817", + "body": "在「研究人员绘制Netflix CDN服务器位置图」這邊看到在討論 NetflixOpen Connect 架構,也就是 Netflix 自己的 CDN 架構。引用的論文是「Open Connect Everywhere: A Glimpse at the Internet Ecosystem through the Lens of the Netflix CDN」這篇。\r\n\r\n翻了一下論文,看起來還是頗傳統的方法,從一堆伺服器去 query 找出來:\r\n\r\n
    Indeed, Netflix server domain names are too specific, i.e., including details on the physical location of the server. This makes it unlikely that redirection takes place based on these domain names. Additionally, we ran a distributed DNS lookup campaign from Planetlab nodes to verify our assumption that Netflix DNS names always resolve to a single IP address, independently of the client location.
    \r\n\r\n另外也有用窮舉法去查:\r\n\r\n
    We implemented a crawler, which generated DNS names following the pattern outlined above and attempted to resolve those generated domains names to IP addresses. The crawler was fed with lists of known countries, airport codes and ISPs. We curated these lists manually, consulting publicly available lists of countries and airport codes. For the ISPs, we conducted an extensive search on the Internet, including but not limited to the Netflix ISP Speed Index, Wikipedia, various ISP rankings or recommendation lists and discussions in web forums.
    \r\n\r\n所以總共列了 243 個國家地區,3468 個機場編號 (IATA) 與 1728 個 ISP 去搜尋:\r\n\r\n
    In total, our curated lists contained 243 countries, 3,468 airport codes and 1,728 ISP names. In total we tested 16 different network connection types.
    \r\n\r\n不過也有發現到錯字:\r\n\r\n
    The DNS names actually include a typo, the Carrasco International Airport in Uruguay is abbreviated MDV instead of MVD. We used the ISP names found to verify that what was really meant is the airport in Uruguay.
    \r\n\r\n然後找出了:\r\n\r\n\"\"\r\n\r\n不過事實上因為 Netflix 已經規劃全面走 HTTPS:「Netflix 對 sendfile() 在 TLS 情況下的加速」、「Protecting Netflix Viewing Privacy at Scale」,所以在 Certificate Transparency%.nflxvideo.net 會有完整的列表,看起來遠超過這篇論文所給的數字:\r\n\r\n
    gslin@home [~/tmp] [14:55/W5] grep isp.nflxvideo nflxvideo.html | sort | uniq | wc\r\n   1311    1311   65827\r\ngslin@home [~/tmp] [14:55/W5] grep ix.nflxvideo nflxvideo.html | sort | uniq | wc\r\n     77      77    3230
    \r\n\r\n來寫信給論文作者提看看好了...", + "title": "Netflix 的 Open Connect 架構" + }, + { + "id": "6818", + "body": "在「Beta News – Flash Player NPAPI for Linux」這邊看到 Adobe 要投入資源處理 LinuxNPAPI 版的 Flash Player...\r\n\r\n先前 Linux 下是 NPAPI 與 PPAPI 兩個版本都有 Flash Player,但是 NPAPI 維持在 11.2,只做安全性更新:\r\n\r\n
    Linux users have access to both NPAPI and PPAPI versions of Flash Player. However, for the last four years, the NPAPI version has been held at 11.2 and regularly updated with only security fixes while the PPAPI version (used in Chrome and Chromium based browsers), is in line with the standard Windows and Mac releases.
    \r\n\r\n然後決定加碼讓兩邊同步:\r\n\r\n
    Today we are updating the beta channel with Linux NPAPI Flash Player by moving it forward and in sync with the modern release branch (currently version 23). We have done this significant change to improve security and provide additional mitigation to the Linux community.
    \r\n\r\nFlash Player 你趕快退場啊啊啊...", + "title": "Adobe 居然決定加碼投入資源更新 Linux 上 NPAPI 版的 Flash (也就是舊版 API)" + }, + { + "id": "6819", + "body": "印度最富有的企業家決定提供免費的 4G 網路讓更多人可以上網:「India's richest man offers free 4G to one billion people」:\r\n\r\n
    India's richest man is rolling out a $20 billion mobile network that could bring lightning-fast Internet to hundreds of millions of people.
    \r\n\r\n到 2016 年底:\r\n\r\n
    Indians will be able to use Jio for free until the end of 2016, and pay as little as 149 rupees ($2.25) a month for data after that.
    \r\n\r\n唔,為什麼突然想到 Samuel L. Jackson 呢...\r\n\r\n\"\"", + "title": "印度的免費 4G..." + }, + { + "id": "6820", + "body": "Amazon CloudFront 總算是支援 HTTP/2 了:「New – HTTP/2 Support for Amazon CloudFront」。\r\n\r\n比較需要注意的是,CloudFront 所用到的 Certificate Manager 必須開在美西的 us-east-1 才能讓 CloudFront 吃到設定,剛剛誤開在 us-west-2 上,結果回到 CloudFront 頁面上沒找到...\r\n\r\n\"\"\r\n\r\n不過 CloudFront 的問題還是在於 latency 不穩定,HTTP/2 應該是可以降低 latency 不穩定帶來的影響,但畢竟還是有影響...", + "title": "Amazon CloudFront 的 HTTP/2" + }, + { + "id": "6823", + "body": "Google Chrome 宣佈從 56 版開始,將會對 HTTP 網站標示「Not secure」:「Moving towards a more secure web」,這是 Google 給的解釋圖片:\r\n\r\n\"\"\r\n\r\n另外還更進一步規劃之後的圖示,標成紅色警示:\r\n\r\n\"\"\r\n\r\n藉由這樣的表現來更大力推動 HTTPS 化。", + "title": "Google Chrome 56 將會對 HTTP 網站標示「Not secure」" + }, + { + "id": "6827", + "body": "早上花了點時間,把 blog 從 DigitalOcean 搬到 Vultr 上了...\r\n\r\n本來是打算要換到 Linode 上,但 Linode 最小台的機器太大台了 (2GB RAM),還是找了其他方案來用,看了看就挑 Vultr 了,用 768MB RAM 的方案,跟之前 DigitalOcean 相比多了一些 RAM 可以用...\r\n\r\n順便趁機把系統換成 Ubuntu 16.04 跟 MySQL 5.7,現在用了六個小時,感覺還不錯...?", + "title": "Blog 換 Hosting..." + }, + { + "id": "6830", + "body": "Percona 好像偶而就會整理一篇類似的文章出來...\r\n\r\n這次是對 MySQL 上線後,關於 Index 的設計研究:「Basic Housekeeping for MySQL Indexes」。\r\n\r\n包括了這幾個主題:\r\n\r\n\r\n\r\n這幾點都還蠻基本的,不過這些都做完了之後效能應該不會太差,算是上線後的觀測基本功...", + "title": "Percona 對 MySQL Index 效用的基本教學" + }, + { + "id": "6832", + "body": "包含 MySQL 本家與所有從 MySQL 改出去的分支都中了,引用 Percona 的通報:「Percona Server Critical Update CVE-2016-6662」。\r\n\r\n
    This is a CRITICAL update, and the fix mitigates the potential for remote root code execution.
    \r\n\r\n原始的 security advisory 在「CVE-2016-6662 - MySQL Remote Root Code Execution / Privilege Escalation ( 0day )」這邊,雖然是標 0day,但發現的人在七月時就有先通報給 vendor 們讓他們有時間修正:\r\n\r\n
    The vulnerability was reported to Oracle on 29th of July 2016 and triaged by the security team. It was also reported to the other affected vendors including PerconaDB and MariaDB.
    \r\n\r\nOracle 還沒修正,也就是 upstream 目前仍然是有問題的,目前得靠其他 vendor 修正:\r\n\r\n
    Official patches for the vulnerability are not available at this time for Oracle MySQL server.
    \r\n\r\n其中 Percona 與 MariaDB 都已經先推出修正版本了:\r\n\r\n
    The vulnerabilities were patched by PerconaDB and MariaDB vendors by the end of 30th of August.
    \r\n\r\n然後看了一下這個漏洞,從 SQL 指令可以做檔案操作一路打出來... 可以看到範例:\r\n\r\n
    mysql> set global general_log_file = '/etc/my.cnf';\r\nmysql> set global general_log = on;\r\nmysql> select '\r\n    '> \r\n    '> ; injected config entry\r\n    '> \r\n    '> [mysqld]\r\n    '> malloc_lib=/tmp/mysql_exploit_lib.so\r\n    '> \r\n    '> [separator]\r\n    '> \r\n    '> ';\r\n1 row in set (0.00 sec)\r\nmysql> set global general_log = off;
    \r\n\r\n這下苦了...", + "title": "MySQL 全系列的安全性漏洞" + }, + { + "id": "6833", + "body": "Vim 版號進到 8.0 了:「Vim 8.0 released!」,從 GitHub 上的記錄可以看到「updated for version 7.0」是 2006 年五月的事情了。\r\n\r\n新的 feature 包括了 packages...?所以 Vim 自己也要搞一套 package 系統了嗎... 還沒仔細看,不知道跟 Vundle 的關係不知道會變成什麼樣子 @_@\r\n\r\n
    Among the new features are:\r\n- Asynchronous I/O support, channels, JSON\r\n- Jobs\r\n- Timers\r\n- Partials, Lambdas and Closures\r\n- Packages\r\n- New style testing\r\n- Viminfo merged by timestamp\r\n- GTK+ 3 support\r\n- MS-Windows DirectX support
    ", + "title": "Vim 8.0..." + }, + { + "id": "6834", + "body": "Google 也參與的海纜 FASTER 陸陸續續放出消息了,這次是放出台灣日本之間的新聞:「Making Google a little bit FASTER across Asia」。\r\n\r\n2014 年時對外宣佈:「Google, Asian companies to build $300 mn super-high-speed Trans-Pacific underwater cable system」,不過當時提到是 60Tbps,維基百科上的資料也是如此:\r\n\r\n
    FASTER will have the design capacity of 60 Tbps (100Gb/s x 100 wavelengths x 6 fiber-pairs), which is about 10 million times faster than your cable modem, the companies said.
    \r\n\r\n在六月底 Google 發的另外一篇「Google Cloud customers run at the speed of light with new FASTER undersea pipe」這邊,提到 Google 會拿 10Tbps 出來串起日本與美國:\r\n\r\n
    Today, Google’s latest investment in long-haul undersea fibre optic cabling comes online: the FASTER Cable System gives Google access to up to 10Tbps (Terabits per second) of the cable’s total 60Tbps bandwidth between the US and Japan. We'll use this capacity to support our users, including Google Apps and Cloud Platform customers.
    \r\n\r\n而現在這邊提到了台灣與日本之間的 26Tbps:\r\n\r\n
    So, to extend the benefits of this Trans-Pacific link to the rest of Asia, we invested in a cable that links FASTER in Japan on to Taiwan, where our largest data center in Asia provides millions of people across Asia with quick access to our tools and services, at speeds of up to 26 terabits per second.
    \r\n\r\n實際狀況還是不太能理解...\r\n\r\n另外可以看到參與的公司,因為沒有台灣的 ISP,所以如果要期望台灣的連外速度變快的話,應該只有期望台灣的 ISP 找這些廠商買頻寬了:\r\n\r\n", + "title": "FASTER 海纜的消息" + }, + { + "id": "6835", + "body": "Amazon Aurora 支援 Reader Endpoint,讓讀的部份可以打散掉:「New Reader Endpoint for Amazon Aurora – Load Balancing & Higher Availability」。\r\n\r\n\"\"\r\n\r\n讀的部份比較容易 scale (常見的方式是透過 replication 做到),而現在很多 database framework (包括各類的 ORM framework) 都支援讀寫分離,這個支援對於系統的 scale 來說幫忙頗大。\r\n\r\n不過不知道會不會有 replication lag 的問題,我猜是會有...", + "title": "Amazon Aurora 支援 Reader Endpoint" + }, + { + "id": "6836", + "body": "在「Mastercard sued for $19 billion in Britain's biggest damages claim」這邊看到的幾個重點,第一個是歐盟對國際手續費 1% 的限制:(雖然 Brexit...)\r\n\r\n
    A lawyer working on the case said Mastercard charged shops fees in excess of 1 percent for card use on international transactions between 1992 and 2008.Although the EU's anti-trust regulator only ruled Mastercard's international fees were illegal, this impacted British consumers as it was the default fee used in Britain.
    \r\n\r\n另外一個是兩年前的新規定:\r\n\r\n
    Two years ago, the European Union capped the fees retailers pay at 0.2 percent for debit cards and 0.3 percent for credit cards.
    \r\n\r\n唔... (回頭看台灣的帳單)", + "title": "MasterCard 在英國被告收取過高的手續費" + }, + { + "id": "6837", + "body": "這篇是兩年前在 StackOverflow 上的問題:「Why is printing “B” dramatically slower than printing “#”?」。\r\n\r\n問問題的人這段程式跑了 8.52 秒:\r\n\r\n
    Random r = new Random();\r\nfor (int i = 0; i < 1000; i++) {\r\n    for (int j = 0; j < 1000; j++) {\r\n        if(r.nextInt(4) == 0) {\r\n            System.out.print(\"O\");\r\n        } else {\r\n            System.out.print(\"#\");\r\n        }\r\n    }\r\n\r\n   System.out.println(\"\");\r\n }
    \r\n\r\n而把上面的 # 換成 B 就變成 259.152 秒。\r\n\r\n答案是與 word-wrapping 有關:\r\n\r\n
    Pure speculation is that you're using a terminal that attempts to do word-wrapping rather than character-wrapping, and treats B as a word character but # as a non-word character. So when it reaches the end of a line and searches for a place to break the line, it sees a # almost immediately and happily breaks there; whereas with the B, it has to keep searching for longer, and may have more text to wrap (which may be expensive on some terminals, e.g., outputting backspaces, then outputting spaces to overwrite the letters being wrapped).\r\n\r\nBut that's pure speculation.
    \r\n\r\n這真是細節 XDDD", + "title": "印 \"#\" 比印 \"B\" 來的快的問題" + }, + { + "id": "6838", + "body": "Python 3 的 Dict 將會有重大的改變:「[Python-Dev] Python 3.6 dict becomes compact and gets a private version; and keywords become ordered」。\r\n\r\n在 3.5 時:\r\n\r\n
    Python 3.5.1 (default, Jun 20 2016, 14:48:22)\r\n>>> def func(**kw): print(kw.keys())\r\n...\r\n>>> func(a=1, b=2, c=3, d=4, e=5)\r\ndict_keys(['c', 'd', 'e', 'b', 'a'])   # random order
    \r\n\r\n對上目前還在開發的 3.6:\r\n\r\n
    Python 3.6.0a4+ (default:d43f819caea7, Sep  8 2016, 13:05:34)\r\n>>> def func(**kw): print(kw.keys())\r\n...\r\n>>> func(a=1, b=2, c=3, d=4, e=5)\r\ndict_keys(['a', 'b', 'c', 'd', 'e'])   # expected order
    \r\n\r\n在「Compact and ordered dict」這邊可以看到記憶體的使用量降低:\r\n\r\n
    It seems like the memory usage is between 20% and 25% smaller. Great job!\r\n\r\nMemory usage, Python 3.5 => Python 3.6 on Linux x86_64:\r\n\r\n./python -c 'import sys; print(sys.getsizeof({str(i):i for i in range(10)}))'\r\n\r\n* 10 items: 480 B => 384 B (-20%)\r\n* 100 items: 6240 B => 4720 B (-24%)\r\n* 1000 items: 49248 B => 36984 B (-25%)\r\n\r\nNote: the size is the the size of the container itself, not of keys nor values.
    \r\n\r\n不過效能上似乎慢了一些:\r\n\r\n
    3% slowdown in microbench is not surprising.\r\nCompact dict introduces one additional indirection.\r\n\r\nInstead, I've added freelist for most compact PyDictKeys.\r\nSo I think overall performance is almost same to before compact dict.
    \r\n\r\n不過也有人提到應該拿 3.5 + patch 測,而不是直接拿 3.6 測:\r\n\r\n
    There are a lot of other changes in interpreter core between 3.5 and 3.5 (such as new bytecode and optimized function calls). Could you compare the performance between the version just before adding new dict implementation and the version just after this?
    \r\n\r\n看起來後續還在進行中...", + "title": "Python 3.6 對 Dict 的改善" + }, + { + "id": "6839", + "body": "哈哈,果然開始不擇手段了:「Adblock Plus now sells ads」,Adblock Plus 官方的說明在「New Acceptable Ads Platform launches, will redefine RTB and help small websites」這邊。\r\n\r\n繼續用「uBlock Origin」,沒有虛偽的「Acceptable Ads」,只有速度更快,效果更好...\r\n\r\n", + "title": "Adblock Plus 的公司開始賣網路廣告了..." + }, + { + "id": "6840", + "body": "MIT Media Lab 弄出個好玩的東西,可以不打開書直接掃描書的內容:「Can computers read through a book page by page without opening it?」,主標題是「Terahertz time-gated spectral imaging for content extraction through layered structures」。\r\n\r\n用 100Ghz 到 3Thz 的電磁波掃描:\r\n\r\n
    In our new study we explore a range of frequencies from 100 Gigahertz to 3 Terahertz (THz) which can penetrate through paper and many other materials.
    \r\n\r\n先前也有類似的方法,用 X-ray 或是超音波,但效果都不好:\r\n\r\n
    Can’t X-ray or ultrasound do this? It may seem that X-ray or ultrasound can also image through a book; however, such techniques lack the contrast of our THz approach for submicron pen or pencil layers compared next to blank paper. These methods have additional drawbacks like cost and ionizing radiation. So while you might be able to hardly detect pages of a closed book if you use a CT scan, you will not be able to see the text. Ultrasound does not have the resolution to detect 20 micron gaps in between the pages of a closed book -distinguishing the ink layers from the blank paper is out of the question for ultrasound. Based on the paper absorption spectrum, we believe that far infrared time resolved systems and THz time domain systems might be the only suitable candidates for investigating paper stacks page by page.
    \r\n\r\n不知道可以進展做到什麼程度,目前只是「能看懂」的程度,品質看起來還是不太夠:\r\n\r\n\"\"\r\n\r\n\"\"", + "title": "不打開書直接掃描內容" + }, + { + "id": "6841", + "body": "Update (2018/03/15):字串改了,請參考「本來 Google Chrome 要繞過 HSTS 的 badidea 被換掉了...」。\r\n\r\n像是把 StartCom 停用掉後造成 www.kernel.org 無法連線的問題:\r\n\r\n\"\"\r\n\r\n前幾天在 Twitter 上看到解法:\r\n\r\n

    Chrome的神秘功能……遇到因为安全原因禁止进入的网站,在那个提示页面输入“badidea”(不含引号)就能进入了……

    — Xidorn Quan (@upsuper) September 11, 2016
    \r\n\r\n\r\n說道 StartCom,StartCom 與 WoSign 的故事才剛要開始,前陣子在「Mozilla 在考慮移除 WoSign 的 CA Root」這邊提到的問題,最近 mailing list 上越來愈刺激了。(發現更多沒有通報的問題)\r\n\r\n另外也發現 StartCom 被 WoSign (的 CEO) 買下來了,當初因為「Why I stopped using StartSSL (Hint: it involves a Chinese company)」而移除信任,看起來情況只會更糟糕...", + "title": "在 Google Chrome 連上因 HSTS 而無法連線的網站" + }, + { + "id": "6842", + "body": "關於 HPKP,可以參考「HTTP Public Key Pinning 介绍」這篇介紹,寫得很清楚。\r\n\r\nHPKP 是解決 CA 架構錯發憑證的方案 (無論是無意或是故意),像是最近吵的比較熱的 WoSign 發出 GitHub 的憑證的問題就可以用 HPKP 解。\r\n\r\n原理上來說,就是在 HTTP header 裡面指出這個站台所允許的 Root CA 有哪些。所以跟 HSTS 一樣是走 Trust On First Use 架構,當 client 第一次連上的時候會記下資訊,之後就可以使用這個資訊來驗證。\r\n\r\n但 HPKP 與 HSTS 不同的地方在於,HSTS 只是個 Yes/No 問題 (i.e. 是否強迫使用 HTTPS),而且通常 migrate 上去後就不會拔掉。\r\n\r\n但 HPKP 則是要指定 Root CA,這代表不能隨便換一家簽。當你用的那家 Root CA 出包時就苦了... (就像 WoSign 免費憑證的問題)\r\n\r\n這使得 HPKP 的實作成本過高,而且得到效益太低,另外也因為替代的方案有不少 (像是 Certificate Transparency),導致 HPKP 根本沒什麼人用:「Is HTTP Public Key Pinning Dead?」。\r\n\r\n在 comment 有人直接拉出來統計,使用的比率反而在下降:\r\n\r\n
    From my stats looking to the Alexa 1K top websites from 2015-07-26 to 2016-07-31 the number of websites NOT using HPKP increase from 99.47% to 99.58% which means almost nothing.
    \r\n\r\n不過我覺得算是平行發展吧,這些驗證的技術都不怎麼衝突... HPKP 解決問題的方法非常的技術面,而 Certificate Transparency 還是走稽核路線讓 Root CA 回報每一個發出的 Certificate...", + "title": "HPKP 遇到的阻礙" + }, + { + "id": "6843", + "body": "在某些新聞報導透漏出了受害者的某些背景身份,於是你手上有了這兩個資料:\r\n\r\n\r\n\r\n現在的問題是,要怎麼判斷出新聞照片裡是哪個人:「Defeating Image Obfuscation with Deep Learning」。\r\n\r\n類似這樣的實驗,從 40 個人中找出正確的人,有 50% 的正確率:\r\n\r\n\"\"\r\n\r\n也許 50% 不算到能用的程度,但這代表老大哥的技術已經在發展了...", + "title": "透過 Deep Learning 辨識人臉馬賽克的技術" + }, + { + "id": "6844", + "body": "在 Hacker News Daily 上看到 Yandex.MailOracle 搬到 PostgreSQL 的故事:「Yandex.Mail success story」。\r\n\r\n首先是在 Oracle-based 的系統上遇到的問題:\r\n\r\n\"\"\r\n\r\n\"\"\r\n\r\n除了技術類的問題外,這個「Not very responsive support」可以看到對 Oracle 的服務很不滿意。\r\n\r\n另外下一張投影片只講 shop.oracle.com 是主要原因... 我猜是 Oracle 在開始提供 cloud service 後把售價都拉高。在最後的 Summary 看起來也有點像:\r\n\r\n\"\"\r\n\r\n雖然沒有講明換 PostgreSQL 的理由,但注意到「3x more hardware」這點,這表示是原來的四倍。在這樣的情況下還是要換,可以猜測 Oracle 的授權費用在 web-scale 服務上的問題。\r\n\r\n另外如果仔細品投影片,可以發現其實 migration 成功的原因是 DBA team 的能力夠強大,以及充足的時間修正問題 (可以看到作者在 mailing list 上一直提問也一直修正問題)。如果當初評估後決定要換到 MySQL,我相信也是會順利完成...", + "title": "Yandex.Mail 從 Oracle 搬移到 PostgreSQL 上的故事" + }, + { + "id": "6845", + "body": "在「Infographics: Operation Costs in CPU Clock Cycles」這邊看到張有趣的圖片:\r\n\r\n\"\"\r\n\r\n文章大致說明了底層指令速度差異的由來,另外也提到了 C/C++ Function Calls、Indirect and Virtual Calls、Allocations、Kernel Calls、C++ Exceptions 以及 Thread Context Switches 這些高階面向的 CPU clock cycle 差異...\r\n\r\n不過重點還是在這張圖 XD", + "title": "CPU 指令的速度" + }, + { + "id": "6846", + "body": "如標題所提到的,GCHQ 打算以安全為由,實施大規模的 DNS filtering 機制:「GCHQ planning UK-wide DNS ‘firewall’」,GCHQ 的官方新聞稿在「A new approach for cyber security in the UK」這邊。\r\n\r\n很類似 GFW 的作法,但在英國這種國家這樣做太明顯,所以政府需要使用 FUD (Fear, Uncertainty, Doubt) 的方式恐嚇公民,藉由洗腦公民取得更多的權力。\r\n\r\n這次是對 DNS level 過濾,如果政策成功地壓過去實施,接下來就會有更多的機制來過濾對當政者不利的言論。", + "title": "英國 GCHQ 打算在英國實施全國大規模的 DNS filtering 過濾機制" + }, + { + "id": "6847", + "body": "MySQL 8.0 是 MySQL 5.7 的後續版本,中間的 6.0 與 7.0 都有一些故事,就被跳過去了,跟 PHP 的情況有點像。\r\n\r\n在 8.0 版將會把 performance_schamea 加上 index,讓查詢的速度變快:「MySQL 8.0: Performance Schema, now with indexes!」:\r\n\r\n
    In MySQL 8.0, performance_schema tables are now indexed to speed up data retrieval.
    \r\n\r\n
    A total of 115 indexes have been added in the performance schema in MySQL 8.0.0, to support better data access patterns in general.
    \r\n\r\n有用過 performance_schema 的人都會有種「這好慢啊」的感覺,總算要改善了... 而且這幾乎是沒什麼成本的改善:\r\n\r\n
    Question: How much overhead was just added by this new feature?\r\nAnswer: Absolutely zero
    \r\n\r\n並不是用 index 加快速度,而是加了一些資訊,修正 optimizer 的行為:\r\n\r\n
    It does — not — maintain a physical index internally, be it on file or memory.\r\nIt does, however, — pretend — to the optimizer that it has indexes, so that the optimizer is coerced into using the most efficient access pattern.
    \r\n\r\n在有些情況下可以看到會快非常的多:\r\n\r\n
    The performance improvements from indexes can be very easily seen in many of the sys schema queries. With 1000 idle threads, the query SELECT * FROM sys.session drops from 34.70 seconds down to 1.01 seconds (a 30x improvement!):
    \r\n\r\n不知道 Percona 會不會 backport 回來,這看起來對於爆炸中的 server 找問題會很有幫助,可以在短時間翻出是哪個部份爆炸...", + "title": "MySQL 8.0 的 performance_schema 加上 index 了..." + }, + { + "id": "6848", + "body": "Percona 整理了一份 MySQL 5.6 到 5.7 改變的預設值,對於評估與轉移的人都很有用:「MySQL Default Configuration Changes between 5.6 and 5.7」。\r\n\r\nsync_binlog 居然從 0 改成 1 了,這對效能的影響應該不少。\r\n\r\nperformance_schema_* 有不少改成自動調整了,可以省下不少功夫。\r\n\r\ninnodb_buffer_pool_dump_at_shutdowninnodb_buffer_pool_load_at_startup 都打開了,這避免了正常重啟時的 warm up 問題,不過在存在有效的手段可以手動 warm up 的時,應該還是會關掉吧。(參考 2013 的文章「熱 MySQL InnoDB 的方式...」)\r\n\r\n另外介紹了 InnoDB 預設格式的改變,這點到是因為使用 COMPRESSED,反而不太受到影響。", + "title": "MySQL 5.6 到 5.7 改變的預設值" + }, + { + "id": "6849", + "body": "Mark Callaghan 這篇倒是沒提到什麼技術的東西,主要是講最近 MySQL 的兩大 conference,一個是 OracleOracle Open World,另外一個是 PerconaPercona Live Amsterdam 2016,然後用了 benchmarketing 這個酸酸的詞 XDDD:「Peak benchmarketing season for MySQL」。\r\n\r\n裡面有些也很有趣的東西:\r\n\r\n
    My joke is that each of these makes a different group happy: performance -> marketing, usability -> developers, manageability -> operations, availability -> end users, efficiency -> management.
    \r\n\r\n另外提到了 RocksDB 建出來的 MyRocks 在 memory fit 時可能會比 InnoDB 還要好:\r\n\r\n
    One last disclaimer. If you care about read-mostly/in-memory workloads then InnoDB is probably an excellent choice. MyRocks can still be faster than InnoDB for in-memory workloads. That is more likely when the bottleneck for InnoDB is page write-back performance. So write-heavy/in-memory can still be a winner for MyRocks.
    \r\n\r\n這就有趣了,找個時間來測試看看...", + "title": "Mark Callaghan 講最近的 MySQL 的行銷活動..." + }, + { + "id": "6850", + "body": "GitHub 上個禮拜推出了不少功能出來:「A whole new GitHub Universe: announcing new tools, forums, and features」。\r\n\r\n功能多了不少,但比較亮眼的主要是 Project 的功能,界面上有點像 Trello:\r\n\r\n\"\"\r\n\r\n操作上也可以看到,一個 repository 可以開很多 project,然後在裡面移來移去:\r\n\r\n
    With Projects, you can manage work directly from your GitHub repositories. Create cards from Pull Requests, Issues or Notes and organize them into custom columns, whether it’s \"In-progress\", \"Done\", \"Never going to happen\" or any other framework your team uses. Drag and drop the cards inside a column to prioritize them or move them from one column to another as your work progresses.
    \r\n\r\n唔... 這樣好用不少 :o", + "title": "GitHub 又多了許多功能..." + }, + { + "id": "6852", + "body": "《薩利機長:哈德遜奇蹟》講的是「全美航空1549號班機事故」,有不少資料可以先看過再去看電影。(這部片要整個劇透透光後,去電影院刷個兩次會特別有感覺)\r\n\r\n特別推薦看 IMAX 版,螢幕大感覺就是不一樣... 另外結尾的彩蛋有兩則,請不要看完第一則就跑掉了。(話說回來,上上星期五去長春國賓看的時候居然沒看到第二則就被工作人員告知已經結束,不知道是怎麼一回事...)\r\n\r\n首先是維基百科的資料 (當作入口點):\r\n\r\n\r\n\r\n中文版會容易看一些,不過英文版的資料比較豐富。\r\n\r\n另外維基百科上面也有人從 FAA 所公開的資料中截出 New York TRACON 的錄音抓出對應的部份,並且將對話過程抄寫出來:「File:Flight 1549 FAA New York TRACON audio extract.ogg」,電影的確照實將這些對話演出來:\r\n\r\n