DEC64 浮點數

Hacker News Daily 上看到「DEC64: Decimal Floating Point」:

公式是:

value = coefficient * 10exponent

是以 10 為底。

0 與 NaN 是特別處理:

There are 255 possible representations of zero. They are all considered to be equal.

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.

網域也註冊一段時間了,不知道為什麼被突然提起...:

   Domain Name: DEC64.COM
   Registrar: 1 & 1 INTERNET AG
   Whois Server: whois.schlund.info
   Referral URL: http://1and1.com
   Name Server: NS57.1AND1.COM
   Name Server: NS58.1AND1.COM
   Status: ok
   Updated Date: 03-jun-2013
   Creation Date: 02-jun-2009
   Expiration Date: 02-jun-2014

HTTPS 頁面上的隱私問題

The Register 的「Even HTTPS can leak your PRIVATE browsing」這篇引用了「I Know Why You Went to the Clinic: Risks and Realization of HTTPS Traffic Analysis」這篇論文。

這篇論文說明,當 ISP 有能力分析所有流量,即使你全部都使用 HTTPS 時,論文裡的方式可以對某些極為敏感的資訊達到 89% 的辨識率:

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.

這是因為 HTTPS 設計上是保護密碼、session key 這類技術上的「機密資訊」。而這個特點只能增加對隱私的保護,無法 100% 保護。

就算不看論文用了哪些資訊與方法,這個領域有很多可以分析的:很直覺就可以想到 ISP 可以看到 Destination IP 資訊,藉以「猜測」是哪個 domain,而 DNS query 資訊也是有幫助的。再來是 HTTP request 的 pattern (像是順序、大小) 再加上對網站結構的了解,也可以分析出不少東西。

如果可以再分析主流瀏覽器、作業系統以及 NAT box 的實做,還可以透過 TCP 的封包再推敲的更細緻。

整套系統利用統計模型架構好後,在 ISP 端大量分析,看起來就是 NSA 擅長的業務?

Elastic Load Balancing 總算實做 access log...

AWSElastic Load Balancing 總算想起來這個欠了許久的功能,access log:「Access Logs for Elastic Load Balancers」。

原文裡有提到用 Hive 分析的部份,挑出最前面的欄位名稱就可以看出提供什麼資訊:

CREATE EXTERNAL TABLE elb_raw_access_logs (
     Timestamp STRING,
     ELBName STRING,
     RequestIP STRING,
     RequestPort INT,
     BackendIP STRING,
     BackendPort INT,
     RequestProcessingTime DOUBLE,
     BackendProcessingTime DOUBLE,
     ClientResponseTime DOUBLE,
     ELBResponseCode STRING,
     BackendResponseCode STRING,
     ReceivedBytes BIGINT,
     SentBytes BIGINT,
     RequestVerb STRING,
     URL STRING,
     Protocol STRING
)

裡面還有些資訊沒包含在上面,像是 availability zone。因為這個資訊是包含在檔名內:

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).

接下來應該要把現有的 ELB 都開起來 XD

CloudFront 支援 SNI,不需額外每個月 USD$600 的費用...

剛剛看到 Amazon CloudFront 支援 SNI,而且不像 Dedicated IP Custom SSL 需要每個月 USD$600 的費用:「New Features for Amazon CloudFront: Server Name Indication (SNI) and HTTP Redirection」。

目前最大的問題只剩下 Windows XP + IE8 不支援 SNI,台灣還有 19.86% 的人使用 IE8 (不知道 Windows XP + IE8 實際佔多少):


(出自 http://gs.statcounter.com/#browser_version-TW-monthly-201302-201402)

但至少行動裝置上的主力平台都支援了,如果大多數用戶是行動裝置,這個方式可以兼顧 custom SSL domain 與花費...

Percona 的 TokuDB

Percona 這幾個月對 TokuDB 的評價一直都很不錯,再加上在 Percona Server 5.6.16-64.0 裡加入對 TokuDB 的支援 (目前還是掛在 ALPHA 階段),看起來是打算再納入這個產品線?:「Percona Server 5.6.16-64.0 with TokuDB engine now available」。

與兩年前的 Percona XtraDB Cluster 情境有點像,看起來會是新的主打產品?

先花了一些查,發現「How TokuDB Fractal TreeTM Indexes Work」這份投影片整理的還不錯,說明了簡化版 fractal tree 的結構,以及為什麼可以取代 B-treeB+tree。也說明了 fractal tree 最重要的精神是拿 CPU 計算能力與 memory bandwidth 換取資料結構的特性,善用磁碟在 sequence i/o 遠比 random i/o 快的事實。

維基百科裡的「TokuDB」也寫了一些東西可以看,像是說明 fractal tree 是 cache-oblivious algorithm,這點讓 cache tuning 的複雜性降低。

這樣應該順便玩看看 Docker 或是 Vagrant 才對?

歷史上的爆炸記錄?

在「a brief history of one line fixes」列出了許多經典的問題...

裡面最有印象的還是 2008 年 Debian OpenSSL 問題,也因為這個問題影響太嚴重,後來預設會安裝 openssl-blacklist 這個套件,在連線時檢查是不是有問題的 key...

然後 Android memset() 那個很精彩啊 XDDDDDDDDDDD

新版 Battle.net launcher 更新造成 Wine 不能跑...

Linux 上玩 Diablo III 常見的解法是使用 Wine 執行,但在這次更新後就掛了,狀況是在輸入完帳號密碼後就 crash:「Battle.net launcher update on Wine/Linux - Forums - Diablo III」。

不過有人居然找出 workaround 了 (這 workaround 怎麼找出來的啊):

But, there's a workaround to have a launcher : disable dbghelp library (wine configuration, libraries, type dbghelp, add, -> disable).

據說是將 dbghelp 設定停用後就可以跑了。另外也有人提供直接執行的方法:(當然,路徑要改成自己安裝 Diablo III 的目錄)

/mnt/lvm/Playonlinux/DiabloIII/drive_c/Program\ Files/Diablo\ III/Diablo\ III.exe -launch -uid diablo3_frfr

不過我為了找問題,把整個 Wine 以及 Diablo III 都砍掉了,所以是回到安裝新軟體的階段... 但發現安裝時也會遇到同樣的 crash 問題,而使用第一個方式關掉 dbghelp 後就可以安裝了,不知道可以前進到哪一步...

過陣子 Wine 應該會放出新版,畢竟 Blizzard 家的遊戲可是重要項目...

Ubuntu 下建立 Cordova 的 Android 環境...

依照「Cordova: Getting Started with iOS and Android Applications (Tech Tip #14)」這篇的方法,再加上一些以前練出來的經驗,把系統給弄起來了。

首先是先到 Android 官網下載 Android SDK,目前版本是 adt-bundle-linux-x86_64-20131030,找個合適的地方解開後 (我是放到 $HOME/android 下),把 PATH 加進去:

export PATH="${HOME}/android/sdk/platform-tools:${HOME}/android/sdk/tools:${PATH}"

接下來是透過 nvm 安裝 node.js,先安裝 nvm:

wget https://raw.github.com/creationix/nvm/master/install.sh
sh install.sh

然後重新啟動 shell 讓 nvm 與 PATH 生效後,安裝 0.10.26 (目前的最新版),並且預設用這個版本:

nvm install 0.10.26
nvm alias default 0.10.26

接下來一樣是重新啟動 shell,就可以裝 Cordova 了:

npm install cordova

後面就可以照抄原始範例:

cordova create hello org.samples.wildfly.cordova.hello HelloWorld
cd hello
cordova platform add android
android create avd --name myCordova --target 1
cordova emulate android

然後 AVD 是有名的慢,請耐心等候... XD

跑出來長這樣: