Hello World
CodeTengu Weekly 碼天狗週刊
CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一早上 10:00 出刊,每一期會從目前的 curator 名單中選出三位來負責當期的內容,每個 curator 各自負責不同的領域。如果你在這一期沒有看到自已感興趣的東西,說不定下一期就會有了。你也可以瀏覽一下前幾期的內容。
以下是目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷。最近在讀 The Player of Games
- @saiday - Imnotyourson - 希望在離開台北之前可以見證到捷運禁止飲食廢止
- @tzangms - Oceanic / 人生海海 - 衝動型購物
- @fukuball - ImFukuball - 婚後生活
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 我們在找 iOS 工程師與其它人才,歡迎來跟我當同事
- @hiroshiyui - 沒有人是一座孤島
- @uranusjr - Smaller Things - 不愛談技術的技術人,最近對做菜很有興趣
- @kkdai - 態度萬歲 - 喜歡 Golang 的略懂工程師
- @yhsiang
大家也可以關注我們的 Facebook、Twitter、GitHub 或微博,有很多 Weekly 看不到的內容。有任何建議或疑問也可以來 Gitter 聊聊,歡迎亂入。
致力於解決開發者之間的資訊不對稱
@mingderwang
Scanning Live Ethereum Contracts for the "Unchecked-Send" Bug
智能合約安全嗎?我也常被問到,怎麼寫智能合約才安全?其實是因為一般軟體處理的是 data (資料),智能合約處理的是 value (價值);因此,小小的錯誤,就有可能造成非常大的損失。因此正確的程式寫法或安全的設計模式 (Secure Design Patterns),在智能合約裡變得更加重要。不巧的是,剛開始 Solidity 的範例程式,也跟 C++ 的教科書一樣,為了方便讀者學習,拿掉許多檢查錯誤的程式碼。這樣的錯誤示範,更嚴重的影響到後來陸續開發出來的合約,theDAO 是最典型一個有程式漏洞的智能合約,它也是有史以來最大的眾籌募資 (1.5 億美金),但沒多久就被駭客偷走了 5,300 萬美元。
這篇文章,簡單的介紹什麼是有問題的程式寫法,當然也建議怎麼寫最好。目前這種問題的解決方法,就是利用工具來檢查這些錯誤的寫法,找出程式裡的安全漏洞,還有研究怎麼樣的設計模式,能避免類似的問題再次發生。
Debugging Node.js in Chrome DevTools
介紹大家一個簡單易用的 node.js 開發、除錯以及 profiling 工具,devtool。它功能之多,真的很難用言語形容。你們可以自己下載下來用用看,就知道它真的有多好用了。
Jenkins Pipelines: What I Wish I Knew Starting Out
初學 Jenkins 者可能會覺得門檻很高,尤其是新的 2.0,最好用的應該是 Jenkins Pipeline 功能,但又要學一個語言叫 Groovy 才能使用。
這篇文章介紹為何他們選擇 Jenkins pipelines 當他們連續部署 (continuous deployment) 的工具,在使用過程中,他們也踩了不少雷。因此藉由分享他們的使用經驗,希望能省下大家學習與嘗試錯誤的時間。如果大家想更近一步的學習,可以從 Pipeline Examples 找到更多範例與樂趣。
@kako0507
The Inner Workings Of Virtual DOM
Preact 是 lightweight 版本的 React library ,本篇文章會透過流程圖一步一步仔細探討 Preact 在 create 、 update 、 remove DOM 的流程,以及跟 React lifecycle 的關聯。
Learning Progressive Web Apps Step by Step
Progressive Web App 透過 App Shell 的概念讓使用者在任何環境都可以順暢瀏覽網頁,這裡提供一個懶人包,除了介紹外,也有幾個 boilerplates 與 generators 方便玩玩第一個 PWA 網頁。
HTML Interactive Form Validation
HTML5 的 form validation 終於被實作在 Webkit 上,將來的 Safari 瀏覽器終於也可以使用原生的 validation attributes 以及 JavaScript API ,文內提供幾個簡單的例子以及 DEMO 。
Writing Efficient JavaScript
本篇文章提出了一些 rule ,經由 JIT compiler 的角度探討,透過確保 compiler 正確執行一些 code optimization ,以及撰寫更有效率的指令,來提升程式的效能,概念都非常簡單,值得一讀。
@yhsiang
Functional Programming Patterns
非常值得一看的 Slide,重新把 functional programming 的基礎再重新走過一次。搭配一些簡單的範例,讓你更了解 functional programming 的優點。投影片以 typed language 作為主要範例,所以 clojure 或 javascript 的朋友如果沒有 haskell 或相關家族的語言經歷,可能會沒那麼容易體會。
How SAML Authentication Works
企業中常常使用 SAML 作為 Single Sign-On (SSO) 的協定。文中介紹了 SAML 的優點,並且簡單講解了 SAML 是如何運作。
其實只需要看前面說明的部分,就可以了解 SAML 的運作,後面的篇幅在介紹如何使用 Auh0 的 SAML 功能。 有在尋找 Single Sign-On 解法的朋友也可以參考 OpenID Connect,不是之前曾經熱門過一陣子的 openid 2.0,他們是不同的協定。openid connect 是基於 Oauth2 加上了 JWT (JSON Web Token),也可以達成 SSO 的功能。想了解更多的朋友,我會在 GTG19 (Golang Taiwan Gathering #19) 有更多的介紹。
Trying out Postgres Bloom indexes
Postgres 9.6 新增了一個功能叫 Bloom indexes,可以先閱讀過前一篇 So what are Bloom indexes for Postgres? 來了解其作用。
這篇主要真的實驗了 Bloom indexes 的效果。就這篇的測試資料來說,結果算是很不錯。但在 summary 裡面有提到一些問題,所以使用上還是有要注意的地方。
The Saga of Go Dependency Management
說明了 golang 套件管理的發展,以及目前成立了一個套件管理委員會。說明委員會的任務,還有他們第一次開會完的一些目標。
看起來 golang 的管理套件會採取和其他現代化的套件管理工具類似的做法。像是 SemVer、扁平的相依性、兩個檔案,一個作為套件版本號,另一個作為 lock 檔案。
這篇蠻適合剛接觸 golang 的新手了解目前 golang 發展的情況。
For User Engagement, Forget Flow. It’s All About Fiero
Flow 是使用者體驗裡面常提到的,通常包括四個元素。
- 明確的目標
- 回饋
- 挑戰與鍛鍊的平衡
- 低風險的失敗
但是作者說明前兩個很容易,但是一般對於非遊戲化的系統,要做到遊戲化根本上缺少了第三項。 所以在嘗試遊戲化的過程中,你很難達到 flow 的設計精神。
作者說,重要的其實是 Fiero (成就感),當你越過任何難過時候達成的感受,才是讓你不斷努力的原因。 下次在你的設計中,試著嘗試加入一些成就感的體驗吧。
Webpack Performance Budgets
This RSS feed is published on http://weekly.codetengu.com/. You can also subscribe via email.