KKBOX 徵人:軟體開發中心 (i.e. Client Team)

索引:


在寫自家的介紹時,特地跑去跟軟體開發中心的主管要 Client Team 的介紹,人家交稿的速度快多了... Q_Q

Anyway,這篇是由 Client Team 的主管所寫的介紹,一樣是所有的部門都有職缺 (人力銀行上未必有開),有興趣的可以提供 resume 到 recruit at kkbox.com 這個信箱。


軟體開發中心 (Application Develop)

在 KKBOX 裡頭,我們還蠻習慣以老派的 Client/Server Side 來稱呼不同技術背景的開發人員,Client Side 說穿了就是開發 App 的那群人,只要你喊得出來的主要平台,大概就是我們負責的。

軟體開發隨著功能的演進,程式碼就會變得又肥又大,自然免不了些壞味道,面臨設計架構的難題,我們希望內部開發者能夠清楚三件事情: Design Pattern,Unit Test,和 Refactoring。上述觀念應當不用多說什麼,幾乎都變成顯學了。我們期盼透過一些原則和流程來讓開發工作變得不會那麼難以維護。

Client Side 目前共有四個 App 開發部門和 SQA 部門:

  1. Windows 開發部: KKBOX 在早期開發時,當時主流的作業系統還是 Windows XP,所採用的開發框架是 MFC,儘管技術很老,但那是個什麼事情都可以自己打造的年代,我們也樂此不疲。會用到 C++/COM 與微軟早年推出的視窗各類技術 MFC/ATL/DirectShow 。說個秘密,我們也還最低限度的維護著 KKman 呢。
  2. .NET 開發部: 主要負責的是 Windows Store App 和 Windows Phone 的開發,採用的是微軟在下個世代主推的 Universal App 開發框架來打造 KKBOX 在三個 Windows 平台的體驗。這部門需要熟悉的程式語言是 C#,部門有兩位微軟 MVP 相當熟悉微軟的平台技術,很活躍於微軟舉辦的聚會。
  3. Android 開發部: 很明顯地,就是在 Android 手機作業系統上開發 App 的部門,除了手機之外,我們也在 Tablet / STB / Smart TV 各式裝載 Android 系統的裝置上開發。需要熟悉 Java 程式語言和 Google Android SDK。這部門的開發人員很常在 Android Taipei 上出沒,分享開發心得。
  4. iOS 開發部: 聽名字應該也不用多解釋,主要就是在 Mac/iPhone/iPad 上開發 App,為了掌握最新技術每年我們都會派人前往舊金山參加 WWDC。需要會的程式語言是 Objective-C,當然蘋果力推的 Swift 也開始加入開發行列,每個月也都在 CocoaHeads 聚會中跟其他開發者閒聊。
  5. 測試開發部: 俗稱 SQA 部門,著重依據測試的原理和方法來設計測試案例,因此像是黑箱測試方法的 BVA 和 ECP,以及 MBT … 等等都是在設計測試案例時,會用到的測試原理。內部有個小組專門負責研究與建置自動化測試框架,讓各個專案可以各自依照需求建立自己的測試系統。需要熟悉 Python 程式語言,同時我們也將日常得到的心得放在「科科和測試 Testing with KK」上,提供給同樣想把軟體測試工作做好的每個人。

順道一提,除了 KKBOX 以外,還有 KKTIX,Hami Music 和日本服務 Utapass,也都是上述開發部門負責的。所以你要真的那麼愛寫 App 的話,那這裡應該蠻適合你的。

Netflix 與 Comcast 的恩怨

其實就是商業公司之間的勾心鬥角,在包裝後搬到檯面上 :p

Netflix 在美國固網裡吃的流量比 YouTube 還多,可想而知當然就變成各 ISP 找麻煩的對象...


出自 Sandvine 的「Global Internet Phenomena Report 2H 2013」。

Netflix 有多種方式將影片傳遞給使用者。除了早期自建機房外,後來跟不少 CDN 有業務往來 (包括了 AkamaiLimelightLevel3),另外也有 Netflix Open Connect Content Delivery Network 計畫,直接在 ISP 內部機房放設備提供服務。

使用 CDN 的作法成本太高,而 ISP 又不一定會接受 Open Connect 方案 (因為不一定收的到錢),在這種情況下,如果走 transit 線路的速度通常都不會太好。而 Netflix 與 Comcast 之間的狀況就是如此:

在付給 Comcast 錢後速度都都解決了...

除了付錢解決外,上個禮拜 Netflix 就丟出一篇說明的文章發難了:「The Case Against ISP Tolls」,這篇文章除了提到上面的事情外,另外還極力反對 Comcast 與 Time Warner Cable 的併購案 XDDD

然後最近又炒熱的網路中立問題,看起來也這件案子應該會很熱鬧 XDDD

歐洲議會通過網路中立條款

前幾天歐洲議會通過了網路中立條款:「European Parliament passes strong net neutrality law, along with major roaming reforms」,條文內容的 PDF 可以在這裡看到。

PDF 的左側是 Text proposed by the Commission,右側是 Amendment,可以看到「網路中立」被清楚定義:

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

然後下面圍繞著網路中立的主題規範了許多電信服務提供商的行為,並且保障公民的上網權利。另外還要求各國的電信主管機關制定檢舉程序,讓公民可以很容易檢舉。

新版 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 家的遊戲可是重要項目...

php.net 被擋的後續分析...

昨天一整天 php.net 網域下的網站都被擋掉:

Twitter 上也有看到 Rasmus Lerdorf 在抱怨:

Rasmus 說是 false positive (誤判),不過我是不太直接相信他講的話...

剛剛看到 Netcraft 整理了一些資料出來「PHP.net blocked by Google: False positive or not?」,裡面有不少東西可以看...

其中最後這段:

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.

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.

這段有問題的 javascript code 的解讀可以在這裡看到說明。

如果的確是 compromise,那這事就沒完了,接下來還要找是從哪個洞進來的... 不過以 php.net 的情況,(消音)...

Google 官方提供 Google Fonts 下載的建議方案...

Update:一次只能選一個字體,找不到全選的地方,然後有一千多個... 還是去網路上找人家包好整包抓比較快。

Google Developers Blog 上看到官方對於下載 Google Fonts 的建議方案:「Download Google fonts to your desktop」。

Monotype 所推出的工具「SkyFonts」,支援 Windows 與 Mac 版。當 Google Fonts 有新的字型時,SkyFonts 會自動更新。不過當 Google Fonts 刪除時會發生什麼事情就不知道了...

會需要 Microsoft .NET Framework 4.0 與 WindowsInstaller 4.5 (x86):

這樣感覺有點肥... XD

用 Net::OpenID::Consumer 取得 Google 的帳戶資料

GoogleOpenID 服務有提供 OpenID Attribute Exchange 1.0 (參考「Federated Login for Google Account Users」這個網頁), 測了一陣子才知道要怎麼透過 PerlNet::OpenID::Consumer 取得資料:

my $csr = Net::OpenID::Consumer->new(
    ua => LWPx::ParanoidAgent->new,
    args => {},
    consumer_secret => 'secret',
    required_root => 'http://.../',
    minimum_version => 2
);

my $claimed_identity = $csr->claimed_identity('https://www.google.com/accounts/o8/id');

$claimed_identity->set_extension_args(
    'http://openid.net/srv/ax/1.0',
    {
        mode => 'fetch_request',
        required => 'email',
        'type.email' => 'http://axschema.org/contact/email',
    }
);

my $check_url = $claimed_identity->check_url(
    delayed_return => 1,
    return_to => 'http://.../...',
    trust_root => 'http://.../'
);

say $check_url;

之前會試不出來,主要是卡在 type.email 忘記加,加上去的時候又打成 email...

Comcast 開始限制 Level3 的流量...

Slashdot 上的報導,Comcast 開始限制 (過濾) Level3 對 Comcast 的流量:「Level 3 Shaken Down By Comcast Over Video Streaming」。

另外 Level3 的新聞稿:「Level 3 Communications Issues Statement Concerning Comcast's Actions」以及 Comcast 的回應稿:「10 Facts About Peering, Comcast and Level 3」。

很擺明 Comcast 就是衝著 Level3 拿下 Netflix 的合約而來的 (參考「Netflix 拋棄 Akamai CDN,改以 Level 3 CDN 為主力」),在評論「Comcast Says Their Dispute With Level 3 Is "Not About Online Video" - Yeah Right」也是對 Comcast 的說法不以為然。

剛好在 12/21 FCC 才要對網路中立性投票:「FCC To Vote On Net Neutrality On December 21」,這則新聞看起來真是...