Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 Wool
- @saiday - Imnotyourson - 電量給我這種人用就是一種浪費
- @tzangms - Oceanic / 人生海海 - 靠, 買比特幣了啊!!!
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 徵有經驗的 iOS 工程師,快來 Twitter 私訊我
- @uranusjr - Smaller Things - 我要成為錯字王
- @kkdai - 態度萬歲 - Learning Deeply....
- @yhsiang
- @johnlinvc - 挑戰自動化家中電器
- @drumrick - 歡迎加入台灣 Kaggle 交流區
- @wancw
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。
致力於解決開發者之間的資訊不對稱
@saiday
I just got a developer job at Facebook. Here’s how I prepped for my interviews.
Interviewing is a skill
作者為了應徵矽谷的工程師辭掉工作準備面試,這是他的記錄跟心得。
他列舉了各種面試的階段跟目的,還提供了一些學習的資源。
無論你是要找工作還是要找人,這篇真的可以看一下,不是那種雞湯文。
話說,現在的面試流程要先寫一份 codility 的試題似乎已經是常態了。
Why Swift Enums with Associated Values Cannot Have a Raw Value
這是一個有趣的問題,為什麼 Swift 的 Enum
有了 Associated Value 後就沒有 rawValue
了?
原因就是 rawValue
是 RawRepresentable protocol 的值,RawRepresentable
簡單來說,符合的類別可以表示另一個類別,透過 rawValue
得到值。
回到問題,因為 Enum
有了 Associated Values 之後就沒有單純的 rawValue
也就無法轉回到原本的類別,所以在 Enum
中你只能在 Associated Values 跟 rawValue
二選一。
這個 RawRepresentable
前陣子剛好有用在 hard-coded string 的地方,沒辦法只用 Enum
來包裝,自己定義了一個符合 RawRepresentable
的 type 來處理。
RawRepresentable
另一個用法:SingleValueCodable
KotlinConf 2017 - A View State Machine for Network Calls on Android by Amanda Hill
這是今年在 KotlinConf 的 talk,我覺得滿實際的。
如果你的 Android project 也是使用 MVP 架構,又 Presenter 因為有處理到獲取遠端資源的部分,所以 View Interface 得有許多 method 的存在就只為了反應 Presenter 的網路狀態。
這個 talk 試著用 View State Machine 的概念來處理這個問題,特別之處在用了 Kotlin 的 Sealed Classes 來封裝那些狀態,這的確是很好的用法,學習了。
其實概念很簡單,可以先看一下 投影片 再決定要不要看影片。
@fukuball
slundberg/shap - Explain the output of any machine learning model using expectations and Shapley values
Machine Learning:中級
Machine Learning 模型訓練完之後,我們常常會想知道 Model 是怎麼做出預測的,有沒有哪個 feature 對預測最有影響力呢?這是研究者常常需要面對的問題,我們必須解釋給老闆或是一般民眾了解。
Shap 就是一個很方便容易使用來解釋 Model 的一個套件,github 上的說明寫得還蠻清楚的,大家可以在自己的 jupyter notebook 裝來跑看看,不過套件的 description 上寫可以「Explain the output of any machine learning model」,這個我自己是覺得不可能啦,畢竟各種 Machine Learning Model 還是有分成容易解釋跟不容易解釋的,像是 Tree 類型的 Machine Learning Model 就比較容易解釋,而 Deep Learning Model 就比較不容易解釋,所以大家使用時還是要了解一下可能還是有所限制。
How to unit test machine learning code
Machine Learning:中級
為了避免程式往非預期的方向運作,我們常常會寫測試來避免這個問題,但如果是一個 Machine Learning 的程式我們要怎麼寫測試呢?這篇文章舉了一些簡單的例子來說明如何在 Machine Learning 的程式上寫測試,大家可以參考一下。
Ethereum ERC20 Token Standard 以太坊代幣標準介紹
Ethereum:中級
大家一定知道最近很紅的 ICO(Initial Coin Offering),發起 ICO 的公司一定會發行自己的代幣(Token)來炒幣,如果你也想要 ICO 自己發代幣,那要怎麼做呢?首先就要了解代幣的其中一種標準 ERC20,若是一個 Token 符合 ERC20,即代表他是一種具有完整貨幣交易功能的代幣。
這篇文章淺顯地介紹了 ERC20 標準,大家如果看完了有想到任何有趣的應用要發起 ICO,記得通知一聲,pre-sale 一些便宜的代幣給可憐的碼農們吧~
@kako0507
JavaScript: Can (a==1 && a==2 && a==3) ever evaluate to true?
執行 (a==1 && a==2 && a==3) 的結果在 JavaScript 是有可能為 true 的。 這裏透過了兩個手法達成:
- double equals ( "==" )
- valueOf
JavaScript 的 Type Conversion 過程會經過 typeOf function 來回傳 Primitive Value ,這裏運用定義 a 的 valueOf function 以及 double equals 比對,得到一個特別的結果,文內有更清楚的流程拆解。
"display: contents" is coming
CSS display 的新 property - contents 已經在 blink 和 webkit 引擎上實作,意味著會在將來的 chrome 以及 safari 推出,而 firefox 已經在 version 37 加入這個功能。
設置 display: contents 會將該 element 在 box tree 中移除,並保留它的 contents (children elements),即 children elements 在 box tree 中的層級會取代該 element 。
文內利用一個 form 的例子表達,如果需要語意上而不是畫面上的結構,就可以利用 display: contents 。
Making WebAssembly even faster: Firefox’s new streaming and tiering compiler
Firefox 58 加入了 2-tiered compiler (baseline compiler 、 optimizing compiler) 和 streaming compilation 機制藉此加速 WebAssembly。
baseline compiler 會盡可能快速的 compile 程式, compilation 可以在 multiple threads 下完成,速度是 optimizing compiler 的 10 到 15 倍,當程式被 baseline compiled 後,可以立即在 main thread 下執行,而同時 optimizing compiler 也會在其他 threads 做最佳化,當最佳化完成後再換成新的版本。
streaming compilation 機制讓 compilation 儘早被執行,透過新的 WebAssembly’s streaming API ,當接到新的 chunk , 會直接送到 WebAssembly engine ,立即被 compiled ,同時間下一個 chunk 也會直接繼續被下載,另外, .wasm 的 code section 會在 data section 之前,確保程式能優先被下載編譯,當 data section 較大時,就可以達到很好的效能。
Demystifying CSS alignment
本篇文章介紹 CSS Box Alignment 在 Flexbox 、 Grid 及 Block 上面的用法,作者也提供了一個 cheatsheet 供大家參考。
Random Cool Stuff
Singing Voice Separator - 音樂訊號自動分軌
最近在楊奕軒博士的 facebook 看到這個新研究成果,他們實驗室博士生 Jenyu Liu 開發出了音樂訊號自動分軌程式,給定任何音檔,可以分離出人聲、鼓聲、bass、和其他樂器的背景音樂,實際使用 demo 的試聽成果,覺得分軌出來的音訊基本上算是效果蠻好的!
這種音訊分軌的問題真的很難,通常分軌出來的結果都會有很多雜訊,根本無法聆聽,但這個成果真的大大超越了我之前所知的一些研究,大家可以聽聽看 Demo 裡面的伍佰台灣製造這首歌,按右鍵可以選擇把某個樂器軌給「關掉」。例如把前三個都關掉,則只會留下人聲,各個分軌都聽聽看好好感受一下。也許之後他們會將研究成果發表成論文,到時來拜讀一下吧!
Blockchain Demo
Blockchain 是怎麼運作的?
以 Blockchain 為基礎的分布式帳本要怎麼防止竄改跟偽造?
由 @saiday 提供
This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.