Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每個 curator 各自負責不同的領域。如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容。
以下是目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在讀 The Best of Isaac Asimov
- @saiday - Imnotyourson - 太熱了
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball - 最近好窮,有案子可以接嗎?
- @wancw - 因為工作看韓劇,同時開始追美漫
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 我們在找 iOS 工程師與其它人才,歡迎來跟我當同事。
- @hiroshiyui - 非典型司書
- @uranusjr - Smaller Things - 不愛談技術的技術人,最近對做菜很有興趣
- @kkdai - 態度萬歲 - 喜歡 Golang 的略懂工程師
- @yhsiang
大家也可以關注我們的 Facebook、Twitter、GitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊聊,歡迎亂入 👺
致力於解決開發者之間的資訊不對稱
@kako0507
The Marvellously Mysterious JavaScript Maybe Monad
如果對 Functional Programing 不熟,建議先看 Douglas Crockford 在 YUIConf 2012 的介紹影片,以及 Aditya Bhargava 的圖解教學。
因為 JavaScript 的 Promise 其實也是一種 monad ,所以文章一開始會先重述 Promise ,以便理解 monad 的概念。
再以凌亂的 if statement 當作例子,一步一步的套用 maybe monad ,改善 null/undefined checking 的流程。
A few HTML tips
這篇文章點出了一些 HTML 上的小建議:
- 段落
- 斷行使用 <p> ,避免使用 <br> ( <br> 適合用在詩或歌的斷句 )
- 標題
- 為了表示正確的語意,必須按照順序使用 <h1> ~ <h6> ,如果是需要調整字型大小,可以透過 CSS 更改
- 在次標題上避免使用較低層級的 heading ,改用一般的文字 markup 。
- 表單
- placeholder 建議放入正確格式的範例而非說明
- 使用正確的 type 在 mobile 顯示對應的鍵盤
- 使用 <svg> 取代 <img> , 使得向量圖也可以透過 CSS 來改變樣式
Introducing React Native Ubuntu
日前 Ubuntu 公布了 React Native for Ubuntu 的 source code ,現在可以利用 React Native 來實作 Ubuntu 的 Desktop App 了!
有興趣的朋友可以照著官方教學玩玩看。
How to Handle React Context in a Reliable Way.
當需要將 properties 傳遞到多個 level 底下時, React 提供了一種方式來解決參數需要層層傳遞的問題: Context ,已經被一些較熱門的 libraries 使用,如 React-Redux 與 React-Router。
不過使用上還是有一些缺點:
- 因為目前還在實驗階段,將來 API 很有可能會變動
- 假設 context value 更新了,使用到該 value 的 descendant component 與 provider component 間如有其他 component 進入 shouldComponentUpdate 並 return false ,則該 descendant component 並不會 re-render ,使用上容易出錯。
對此 Dan Abramov 在他的 twitter 上面給了一些意見
可以藉由 High-order component 的方式,將 context 寫在較外層的 component ,這樣 API 更新時,就只需要改一個地方。
@chiahsien
Managing Consistency of Immutable Models
資料不一致一直都是程式設計師的惡夢,也是 bug 最常發生的原因之一。LinkedIn 的工程師分享了他們對 Core Data 的評價,以及如何透過 immutable model 達到資料的一致性。說穿了就是「真相永遠只有一個(Single source of truth)」,建議可以配合最近很紅的 Redux 架構一起看,會有更多體會。
延伸閱讀:
- 用 Objective-C 實作 Redux 架構
- Redux
- ReSwift: Unidirectional Data Flow in Swift - Inspired by Redux
- Real World Flux Architecture on iOS
活久见的重构 - iOS 10 UserNotifications 框架解析
九月即將來臨,Apple 下一代產品也將要發表,這也代表著 iOS 10 正式版要上線了。在 iOS 10 裡頭對於 notification 相關的 framework 做了一個大更動,變得對開發者更加友好了,如果你還不知道改了什麼,是時候瞭解一下了!
The iOS bug chase
遇到 bug 總是一件令人喪氣的事,尤其是遇到很難重現或者是系統的 bug 更是如此。有位開發者就遇到一個這種 bug,它是 Apple MapView 的一個老問題,存在好幾年了。多虧這位開發者,這個 bug 已經在即將正式推出的 iOS 10 被修正,他把 debug 的過程詳細的紀錄了下來,讀起來非常有趣。
MVVM Is Quite Okay at What It Is Supposed to Do
MVVM 應該是這幾年 iOS 開發最熱門的關鍵字之一,網路上對它的褒貶不一,也有不少人以此為基礎提出了所謂的「加強版」。我個人是覺得它會背負這一些罵名,一部分是因為它的名字取的不好,另一部分是因為使用者沒有完全理解它就硬把它導入到專案裡頭。
MVVM 所描述的是關於部分 UI 的架構,更精確的說,是關於「如何回應使用者動作(View 呼叫 View Model)」以及「如何將資料顯示到畫面(View Model 通知 View)」。但因為沒有明確的說明該怎麼設計 View Model,結果很多人把原本在 View Controller 的一大坨程式碼搬到 View Model,這對程式碼完全沒有幫助啊!
正確的作法應該是:依照需要你可能會有 Network Manager、Data Parser、Data Center、有的沒的 Service,你的 View Model 呼叫這些元件做事,然後把回傳資料轉換成適當的格式,再通知 View 更新畫面。
Xcode 8 Extensions
Xcode 作為一個 IDE,它所提供的功能雖然一直都很不符合大多工程師的期待,但因為蘋果也沒有禁止我們幫 Xcode 開發 plugins,所以 plugins 生態圈也是蓬勃發展,大家也用的很開心。
想不到在今年的 WWDC 蘋果放出了一個震撼彈,正式支援讓人開發 Xcode 套件,但也禁止舊有 plugins 執行。只是三個月過去了,大概是蘋果開放可控制的東西太少,所以目前看到的套件還是寥寥可數啊 :(
延伸閱讀:
@kkdai
[研討會心得][COSCUP] COSCUP 2016 上台初體驗
曾經聽人提到這兩年參與大大小小研討會,越來越少看到參與者來寫心得了. 所以就算是身為講者,我也提出了我的心得 :p
裡面有附上兩場主要跟 Golang 有關場次的投影片,並且有把直播影片也附上,歡迎想看的人可以直接點取觀看.
[研討會] Modern Web 2016 - Day2 上台日
今年的 Modern Web 2016 一共有三位碼天狗的 Curator 上台,你們有沒有參加呢? 這是我參加第二天的心得整理 ( 內容有連接到第一天的心得 ) ,裡面也有我這次上台的投影片,希望對大家有些幫助...
Go Traps
列出了許多 Golang 的陷阱 (trap) ,舉例而言:
range
一個 slice 第一個回傳值不是 value 而是 key (最常犯 XD)map
忘記初始化- goroutine 如果沒有等待,直接結束 app 的話是不會執行的.
試著看看你能不能看出每一個陷阱的原因吧.
GopherCon 2016 - Playlist
今年最盛大的 Gopher 聚會, GopherCon 2016 在 07 月 10 ~ 11日已經結束了. 但是影片在這八月底終於釋出.
這裡有播放清單,快來看看:
推薦 Session :
- Rob Pike - The Design of the Go Assembler
- Francesc Campoy - Understanding nil
- Daniel Whitenack - Go for Data Science
Why I consider if/else idiomatic Go
這一篇講解了很基本的 IF / ELSE 的使用方式.特別是在 Golang 的 Error Handle 部分. 大家在判斷回傳值中的 Error ,是否有注意到他的變數生命週期? 有沒有想過如何寫會讓人更容易了解?
很推薦這一篇來好好學習一下
This RSS feed is published on http://weekly.codetengu.com/. You can also subscribe via email.