Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每一位 curator 各自負責不同的領域,如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。
你也可以瀏覽一下前幾期的內容,有價值的東西是不會過時的。
以下是目前的 curator 陣容:
- @vinta - I failed the Turing Test - 無法通過圖靈測試的程序員
- @saiday - Imnotyourson - 捷運飲食推廣委員會
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball
- @wancw - 一直被問要不要寫 Android App 的後端工程師
- @adamp33 - 看棒球才是正職,副業是前端工程師
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - Nelson
- @mingderwang
大家也可以 follow 一下 CodeTengu 的 Facebook、Twitter 或 GitHub,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊一聊,歡迎亂入 👺
致力於解決開發者之間的資訊不對稱
@saiday
git add -p: The most powerful git feature you're not using yet
上個月才發現 git add -p
這個指令,git add patch mode 可以讓你選擇要 stage 哪些 hunk。
以前都會克制自己寫 code 的時候盡量只做一件事情,看到髒東西或怪東西的時候留一個 TODO 的註解就閃人下次再來改。但在知道 patch mode 之後現在就都順手把它改掉了。
同場加映 interactive mode (中文版),是包含 patch mode 的強化版,強大到自己帶了選單,對象是整個 repository,可以操作多個 file,一次搞定。
CoreData VS Realm
在 iOS 上要做本地儲存的選擇有不少。這篇文記錄了作者從 Core Data 轉移到 Realm 的心得。
Core Data 資源豐富但學習曲線陡峭是眾所皆知 (剛學 iOS 開發的時候在書店看到 Core Data 的書比 iOS SDK 的書還厚,我心都涼了),而且不透過第三方工具的輔助還真的不太好用。我跟這篇文的作者一樣有用 mogenerator 來建 Entity、MagicalRecord 來輔助操作,此外我的 API Client 是 RESTKit 透過 object mapping 直接塞到 DB 裡,很方便。
通常在做技術選擇的時候第一個問題都是「到底要不要用 Core Data」,而 Realm 是現在較熱門的其他選擇,但老實說如果不用 Core Data 的話我可能會直接採用 FMDB 就是了。
註:我個人非常喜歡 Core Data Framework 提供的這個 NSFetchedResultsController,呈現一個上癮狀態。
Hipster Swift: Demystifying the Mysterious
像我這種只用 Swift 來寫過小項目,還沒在每天工作項目上使用 Swift 的人來說,難免覺得 Swift 提供的語法糖(syntactic sugar)好像也太多了點,有時會看到一些覺得「你是誰啊?」的用法。
這篇文章整理了 Swift 新潮的語法特性,是居家防身兩相宜。
包含了 @noescape
, @autoclosure
, @lazy
, parameter with ...
, dynamic
, built-in identifiers (__FILE__
, __FUNCTION__
..), loop labels (break
, continue
)。
學習了。
Swift 是一個快速發展中的語言,也因為它提供了各式各樣實作的可能性,建議在團隊使用時得訂出並遵循一份 Coding Guidelines,可以參考 GitHub 或 RayWenderlich。
RxJava's Side Effect Methods
在不斷地導入 Functional Reactive Programming 進行開發的過程中發現,怎麼設計你的 stream 是最重要的,我自己的標準是這個 stream 到結束之前可以做完哪些事情。 透過 side effect method 的巧妙利用,讓很多原本以為沒有辦法在這個 stream 做的事情變得可能了。
這篇文主要是在介紹 RxJava 的 side effect methods,並以利用 doOnNext()
做 debugging, caching 及 doOnError()
做 error handling 來舉例。
Android Application Architecture (Android Dev Summit 2015) - YouTube
這大概是近期 Android 界最熱門的 talk 了,針對 Android 實際開發上會遇到的各種問題跟選擇給出建議,建議大家可以看一下,我是覺得含金量很高。
從前端架構、Best Practices 講到 API Design 然後忽然開始寫後端,他們的 backend solution 是 rails。
他的 Source code 在這 ,文件寫得超用心,而且 Android Client 跟 Server code 都放上來了!
@mingderwang
Linux Kernel Zero Day 漏洞 CVE-2016-0728 [ 19/Jan/2016 ] 你補了沒?
不管 32 或 64 位元 Kernel 版本 3.8+ 以上的 Linux 都有這 zero-day 漏洞 CVE-2016-0728, 不要再往下看了, 還沒修補的人, 請趕快先去修補您的 Linux OS。如果您電腦已經沒問題, 看看你 Android 手機 OS 版本, 只要是 Android KitKat 4.4 以上都中獎了, 如果你手機原廠不提供 OS 更新, 可以有藉口換一支新手機了。
一個跨平臺的聲音特效程式庫
如果你想在 Android 或 iOS 上使用聲音特效開發軟體, 不管是遊戲, 樂器, 音樂特效, 聲音互動軟體, superpowered 是一個不錯的選擇。它除了提供手機語音 IO 的處理方法以外, 還提供各種 DSP 功能, 例如 FFT 轉換, 讓你軟體的聲音變得非常生動有趣, 而且比其他家好的地方是 CPU 使用率低, 延遲少, 且跨平臺。
如何安裝 Topbeat, 幫你收集系統 metrics 到 ELK
好久沒介紹 Elasticsearch 了, 最近 Elastic 公司推出新產品 Topbeat 1.0.1, 可以收集系統的 metrics, 而且相當容易安裝。Elastic 公司也貼心的幫你把 Kibana 的 dashboard 都做好了, 只要照 這幾個步驟 就可以完成, 馬上就能看到結果。
@kako0507
從 source code 來看 Redux 更新 state 的運行機制
Facebook 提出 Flux 架構後, Redux 似乎是目前最夯的實作了!官方文件用一句話簡單描述 Redux : "Redux is a predictable state container for JavaScript apps" ,單一方向的資料流可以使得架構更清楚簡單,每個 unit 各司其職,容易預測跟測試組件的行為。
Redux 的資料遵從 single source of truth 的概念,資料只放在同一個地方,減少散落在各處的資料相互溝通所造成的複雜度。
文中會介紹 redux 裡會帶大家簡單理解 state, middleware, 以及 bindActionCreator 的運作方式。
React.js pure render performance anti-pattern
在撰寫 react component 時,為了減少不必要的 re-render ,有時會加入 PureRenderMixin 或者實作 shouldComponentUpdate 來檢查資料是否改變,是否需要 re-render 。
在做這些 optimize 時,必須要注意有沒有從 props 帶入新的 object , 避免在 data 沒改變的情況下重畫 child component :
- 避免帶入 {} 或 [] 產生新的 object
- 避免在帶入 function 時 使用 bind(this) 產生新的 function
Javascript is a prototypal language. What do I mean by this?
在 JavaScript 的世界裡,當宣告一個 function ,就會自動產生連結到 prototype , 而該 function 就是此 prototype 的 contructor , 成為一個互相循環的關係。 本文將探討 new 這個動作的實作 , 以及產生之 object 與 prototype 的關聯 , 讓大家更了解 prototype 的運作方式。
Danger of using async/await in ES7
使用 ES7 的 async function 時,如有多個 await 指令,則會互相等待依序執行,假設要同時執行兩個以上的 await 指令,還是必須要配合 ES6 的 Promise.all 使用,不過因為搭配 await , error 就不能直接透過 Promise.all 的 catch 來 trace 了。
文章內提供三種解法:
- try/catch - 適用於循序執行的 await 指令
- 在 call async function 時加入 .catch
- 使用 bluebird 做為 Promise
Offline installation of npm packages
在使用 npm 安裝 package 時,會保存兩份在 local 端,一份在 ~/.npm ,一份在 node_moudles 下,不過每次 npm install 時,都只會檢查 node_moudles 裡是否已有該版本的 package ,所以常常會重新抓同樣 package 耗費很多時間,為了解決這樣的問題,可以使用 --cache-min 參數,或者 local-npm 。
Otaku is the New Sexy

將中二進行到底的美好世界。
記得曾經在文章中讀到某大師說「如果所有的漫畫都像《晚安,布布》的話就太 @%#^& 了啊!!!」忘記原文了總之是負評 XD。那時候心裡讚了一聲好,這個評論完全切中核心,因為打從一開始浅野就沒有要創作讓大家自我感覺良好的作品嘛!
千萬不要天真的以為迎來布布的 13 卷完結之後 (X 販我們永遠等待你),我們就能從浅野迷霧中脫身,中二爆破的這部新作《デッドデッドデーモンズデデデデデストラクション》,就算硬是暴力破譯成中文也是 "死死魔鬼毀毀毀毀毀滅" 這麼中二,所以網路上都簡稱 "滅世"。
在這個粗眉毛當女主角的世界,像 EVA 一樣有莫名襲來的外星機體,於是所有的地球人卯起來進行了一場國際對空打怪競賽,飛來就打,日本想當然很厲害。我們的女主角是個講十句話只聽得懂三句、而這三句還都沒什麼連貫性的雙馬尾粗眉毛高三生,一貫的浅野風格,一貫的青臭。
最後用小学館編輯的推文精華、用現代詩一般的破碎感來綜合我所有的心得:「夢中的女子、崩壞的女子、戰爭遊戲、死黨的帥哥肥宅哥哥、泡泡一樣的初戀、永遠的 8 月 31 日、覆蓋天空的絕望。」有浅野陪伴的世界總是中二得令人很舒爽,對吧!但我實在不敢期待有人會代理中文版,嗯。
以上來自 @autisticcat 的分享!
CodeTengu Weekly
This RSS feed is published on http://weekly.codetengu.com/. You can also subscribe via email.