V8 的 Math.random() 亂度不足的問題

在「TIFU by using Math.random()」這篇看到作者踩到地雷,於是在討論 V8 EngineMath.random() 的亂度不足。

其實這個問提早在 2012 年就有人在 StackOverflow 上詢問:「Why is Google Chrome's Math.random number generator not *that* random?」,而且也回答得很清楚。

而 Mozilla 這邊在 2006 年也被提出了類似的問題:「Bug 322529 - Upgrade Math.random() to a better algorithm, such as Mersenne Twister」。

文章中間花了許多篇幅講 PRNG 的介紹,以及 cycle length 的說明,重點其實在結論的部份。

主要是因為 V8 Engine 的 Math.random() 實作的是 MWC1616 演算法 (Fast random number generation using 128 bit multimedia extension registers on Pentium class machines),而這個演算法用起來也綁手綁腳:

If you’re only using the most significant 16 bits it has a very short effective cycle length (less than 2³⁰).

有兩個方向可以改善 (不衝突的方向),一個是使用 CSPRNG (保證有極長的 cycle length),另外一個請求 V8 Engine 把 Math.random() 的演算法換掉,像是 MT19937 這類 cycle length 超級長的演算法。

不知道後續有沒有機會改善...

Amazon RDS 支援 MariaDB

這次 AWS re:Invent 2015 宣佈的新服務,Amazon RDS 支援 MariaDB:「Amazon RDS Update – MariaDB is Now Available」。

這表示可以使用 Aria Storage Engine。不過目前支援的 instance 有限:

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

Percona 正式推出相容於 MongoDB 的產品「Percona Server for MongoDB」

Percona 正式推出與 MongoDB 相容的產品 Percona Server for MongoDB:「Percona Delivers Free, Open Source Percona Server for MongoDB」。

挑重點講,其實最重要的是 data engine 多了 Percona 自家的 PerconaFT 以及 FacebookRocksDB

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

PerconaFT 是基於被併購的 Tokutek 所研發的 TokuDB (Fractal tree index) 而誕生的產品,在效能上有相當的優勢...

如果有機會的話來研究看看吧 :o

聯想的 BIOS 會自動安裝軟體,即使你整台重灌...

這家公司與這類事情,好像不怎麼意外:「Lenovo used a hidden Windows feature to ensure its software could not be deleted」。

每次開機時 BIOS 會檢查是不是 Windows 7 或 Windows 8,如果是,而 C:\Windows\system32\autochk.exe 不是 Lenovo 所簽名的版本,那麼就會蓋掉變成自己版本:

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.

接著這個 autochk.exe 在開機被執行時就會建立 LenovoUpdate.exe 以及 LenovoCheck.exe,然後透過網路下載程式回來跑:

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.

影響的範圍包括了:

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.

如果已經買了這批電腦,請依照官方提供的新 BIOS 更新:「Lenovo Service Engine (LSE) BIOS for Notebook」。

如果還沒買的話,以後也請不要買,像是「My dream machine: Lenovo may build a new “classic” ThinkPad」這種消息看看就好...

HTTPS 的進展

Tony Hunt 在「We’re struggling to get traction with SSL because it’s still a “premium service”」這篇文章裡抱怨了目前 web 要朝向 HTTPS only 還很遠,甚至還酸了一下 Let's Encrypt 冨樫問題:

可是東尼... 你的站也沒上 HTTPS 啊 :/

順便整理一下目前 HTTPS 技術發展出來的優點:

現在網站的 best practice 是 HTTPS + HTTP/2,對 SEO 好、速度又快 (這兩個對營收有影響),而另外也可以增加安全性 (對聲譽有幫助)。

KKBOX 徵人:平台營運處 (API Team)

索引:


續上篇的「KKBOX 徵人」,順便跟 Client Team 的同事徵文,等他寫完後也會貼出來讓大家知道 Client Team 目前找什麼人。

Server Team 這邊徵人的部份順著每個部門說明,這次先講平台營運處 (API Team)。

曲庫開發部

曲庫開發部,負責接唱片公司所提供的 API 以及 DDEX 資料,將這些資料半自動或是自動化整合到 KKBOX 的系統內。

另外這個部門在某些情況下,會需要寫程式特殊處理曲庫資料。舉例來說,前陣子金牌大風被華納音樂集團併購,這時候就有授權單位轉移的工作要做。

人工上架的系統也是這個部門開發,由公司另外的部門作業。

API 開發部

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

平台開發部

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

  • 搜尋引擎的設計與維運,目前現在是使用 Solr,正在研究翻新成 Elasticsearch
  • 與曲庫開發部合作,像是音檔轉檔與 DRM 機制。
  • 與 API 開發部合作,像是依照商業邏輯選擇使用我們自己租用的國際頻寬,或是使用 Akamai 供應音檔。
  • 各種通靈業務。

影音服務開發部

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

找什麼樣的人?

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

  • 系統分析、系統設計 (SA & SD),包括了以上業務的分析與設計,主管會調度分配對應的項目。
  • Java 工程師 (以及資深工程師),目前主要是針對平台開發部的搜尋引擎。
  • PHP 工程師 (以及資深工程師),這邊提到的四個部門都有在找。
  • Full Stack Engineer,平台開發部與影音服務開發部都有找。

待續...

冨樫中...

.SUCKS 的 Domain...

easyDNS 這篇「Why We Will Not Be Registering easyDNS.SUCKS」把議題拋出來了。

.SUCKS 的 domain 申請的目的就是要發橫財,而這也從 Sunrise Claim 的價錢看出來:USD$2499。而當初抗議成立時也沒被接受,現在看起來不像會有進一步的進展。

除非如同 comment 所提到的被 Google 抵制,不過實在不像...

歐盟開始調查 Google 的壟斷

歐盟開始調查 Google 的壟斷:「Europe to accuse Google of illegally abusing its dominance」,原始報導出自「Europe to accuse Google of illegally abusing its dominance」。

不知道是不是跟先前在「Google 利用搜索的壟斷優勢打擊競爭對手」提到的文件有關:

用 DuckDuckGo 一個月後的感想...

把搜尋引擎換成 DuckDuckGo 應該差不多一個月了吧?算是脫離 Google 的第一步?(連 iPhone 上的都換掉)

剛開始切換過去的時候會感覺「好像搜不太到東西」,試著把關鍵字丟進 Google 找,就發現也搜不太到東西... 多幾次以後反而發現 DuckDuckGo 上面的 spam 比較少?反而找起來比較順。

比較不方便的是匯率換算,以前用 Google 的時候常常打 1jpy、1usd、1eur 去看匯率啊,現在就沒辦法了。再來就是速度稍微慢一點,不過還可以接受。

來看看有沒有機會換掉 Gmail,雖然我覺得難度有點高... 就邊找邊繼續用吧 :o

Google 利用搜索的壟斷優勢打擊競爭對手

最近很熱門的新聞:「FTC: Google Altered Search Results For Profit」,國內也有媒體已經報導 (報導:FTC機密文件指控Google不當商業行為壟斷搜尋市場),不過沒受到太多注意?

起因自 The Wall Street Journal (WSJ) 透過 FOIA (資訊自由法) 要資料的時候,意外拿到 2012 年 FTCGoogle 壟斷而做出評估的文件,整個案件於 2013 年年初達成和解。

WSJ 的報導可以參考「Inside the U.S. Antitrust Probe of Google」這篇。(有 Paywall,可以透過 Google 搜尋這個標題後再點進去 XDDD)

另外 Google 內部知道他們的市占率比外部估出來的高出不少 (外部估算 65%,但內部自己評估 69% 到 84%),但也因此感到欣慰 (避免了反壟斷的壓力):

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.

接下來看看美國政府會怎麼出招,另外歐盟也應該會交叉參考?