Quantcast
Channel: CodeTengu Weekly 碼天狗週刊
Viewing all 109 articles
Browse latest View live

CodeTengu Weekly 碼天狗週刊 - Issue 118 如果非要在中國國家主席的任期加上一個期限,我希望是一萬年 - Mar 12th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

只要命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@saiday

系統設計入門

@kevingo 發起的 The System Design Primer 繁體中文翻譯計畫。

直接引用內容:

學習如何設計可擴展的系統會幫助你成為一個更好的工程師。
系統設計是一個廣泛的主題。在網路上,關於系統設計的資源也是不計其數。
本專案將許多資源進行分門別類,幫助你學習如何建構可擴展的系統。

內容豐富,分類精確,大推!

github.com

From AutoValue to Kotlin data class

這篇文章只講了從 Java + AutoValue 轉移到 Kotlin data class 的過程以及實務上用到 Parcelable 的解決方案。如果沒有很清楚 AutoValue,可以看一下 Jack Wharton 的 AutoValue Extensions 介紹。

很多人寫 Kotlin 就是從導入 data class 開始,而用了 data class 幾乎是免費得到了 Java 實作了 AutoValue 的成果,因此從 AutoValue 的角度回頭去看 data class 我覺得更好理解。

  • immutability
  • value types

註: 其實無論AutoValue或 data class 都不是真正的 value types,在目前的 JVM 只有 primitive types (int, float, boolean, ..),你無法定義自己的的 value types,似乎 Java 10 才會有直接的 value type,但這不知道要等多久。

proandroiddev.com

the tldr; on Kotlin’s let, apply, also, with and run functions

對一個正在用或學習 Kotlin 的人來說,了解 Kotlin standard library Standard.kt 提供的函式擴展方法,就能寫出 (看懂) 更 Kolin 風格的程式碼。如果你本來就對 Functional Programming 有概念,會覺得非常熟悉。

這篇少提了 takeIftakeUnless,也是很常用的 function extension。

proandroiddev.com

Swift Static Library support by DanToml

各位寫 Swift 並且用 CocoaPods 來管理依賴的朋友們有福了。
CocoaPods 準備支援 Swift Static Library 了,這也就意味你不需要再用 Dynamic Frameworks 了!

看到這裡還沒興奮起來的人可以參考我之前發在 105 期的 CocoaPods 的 use_framework! 是在 use 什麼 framework?

有人已經搶先測試,app launch time 從 2 秒減少到 0.5 秒、app bundle size 從 102 MB 減少到 90 MB。 (tweet)

github.com

@kkdai

TiDB: Performance-tuning a distributed NewSQL database

TiDB 一個透過 Golang 開發的 Distributed SQL Database .

你可以像使用 RDB 一樣使用 SQL 來查詢,卻有可以具有分散式資料庫 (Distributed DB) 的高可用性 ( HA: high availability) 與資料儲存的分割性.

這篇文章由淺入深的介紹了 TiDB 的架構與運作原理,有興趣的都可以看看

infoworld.com

A curated selection of blog posts on Go

一份很好的閱讀清單。不僅僅由淺入深,還有分門別類的清單。很推薦閱讀。

github.com

An argument for value receiver constructors - Tit Petric

在 Golang 裡面你都怎麼來建置你的 receiver constructors? 是透過 &YourStruct{} 還是 new(YourStruct)?

這篇文章分享了哪樣比較快,並且從記憶體裡面探討為何該這麼做,看完可以讓你的服務更快喔..

scene-si.org

Google Understanding Go Interfaces @GopherChina 2017

分享一下去年 GopherChina 的舊影片. "Understanding Go Interface"

這場由 Francesc 帶來的演講,講解了一個相當好用的概念. 透過 Interface 來將你的代碼更加的抽象化,這些概念能知道,但是最近在開發上就深刻感受到強大

分享給大家.

( 小爆點: 第一個發問的人真有趣... lol

youtube.com

Interfaces in Go - Tit Petric

Interfaces 的設計架構在 Golang 裡面是相當強大的設計理念. 透過越少的架構設計,越能夠將你的程式碼更加的抽象化.

如果你不是很了解該如何使用 Interfaces 的設計方式,可以看看這篇文章.

透過由大家熟悉的物件導向的設計方式,慢慢將設計理念與想法轉換到 interfaces . 你會發現寫出來的代碼具有更抽象的概念,並且有更多的應用場景.

scene-si.org

@drumrick

精美的 deeplearning.ai 課程筆記,獲得吳恩達親自轉貼!

一微軟的工程師 Tess Ferrandez,研讀了吳恩達以 deeplearning.ai 為名在 Coursera 開設的深度學習系列課程後,製作精美的筆記並分享在推特上,連吳恩達都親自在各個社交平台上轉貼。因為只有 28 頁,是真的畫得密密麻麻,要全螢幕才能看得清楚,如果你也剛上完課,拿出來複習用倒是不錯。

Machine Learning Flashcards 是另外一個跟機器學習相關的精美小抄,300 張售價 12 美元,中國網民們也相當勤勞地翻譯的簡體中文,而且還被原作在推特上分享了!

slideshare.net

18 種 GANs 的 Keras 實作,獲得 Keras 作者轉貼!

上面是做筆記被老師轉貼,現在這個是用套件寫實作,寫到被套件作者轉貼。

去年底開始因為工作的緣故,開始研究各種 GANs,自己也用 PyTorch 實作著各種變形。結果突然看到這麼一個 repo,用 Keras 實作了幾乎所有主要應用的 GANs,而且連 Keras 作者 François Chollet 都在自己的推特上轉貼。

另外 Keras 的簡中文件現在有了官方版本,雖然說一直都有民間版本,但這個官方的版本呢,感覺品質還是比較好的,而且這也是由 François Chollet 在推特上號招 Keras 的中文使用者們一同合作而產生的。

github.com

Google 發表 Neural Network 論文,連帶發佈 Lucid 視覺化套件。

自從 Neural Network 在多項研究上有重大突破後,關於它的『可解釋性』就一直受到質疑,Google 這位老大哥在這件事情的努力上當然也從來沒鬆懈過。這次發佈的 Lucid 是基於 2015 年的 DeepDream,那個當時看起來很噁心,現在看起來還是很噁心的外星圖片們,似乎多了點邏輯。

這次的發佈更讓我印象深刻的是整個配套,首先是基於 DeepDream,一個大家雖然看不懂但是很有記憶點的基礎,發展 Lucid 來做更進一步的解釋,而在 distill 上面發表,讓讀者直接跟範例資料互動,最後在 github 上公開的程式碼不只是範例而已,直接自帶最新的服務 Colab 的 ipython notebook,讓使用者完全不用處理任何硬軟體的相依性,直接開始操作。將好奇,瞭解,嘗試,執行各個動作之間的門檻降到最低!這絕對是任何套件或是論文發佈到目前為止,最流暢的使用者體驗。

googleblog.com

CVPR 2018 的影像辨識競賽資料集:iNaturalist

目前資料量最大、最常用的影像資料集應該就是 ImageNet 了
ImageNet 包含 200 個類別,超過 51 萬張影像

而 iNaturalist 2018 包含 8000 個類別,45 萬張影像。
比起去年 iNaturalist 2017的 5000 個類別,67.5 萬張影像,
長尾的現象肯定更加嚴重,兩個資料集是有重疊的,
但官方將不會提供對應表,也沒有說明數量上為何有如此的差異。

大家蓄勢待發了嗎?感覺 GPU 溫度又要居高不下了啊!

google.com

製作一個正確率大於 95% 的假新聞辨識模型的歷程

這不是一篇技術文,完全沒有提到模型怎麼建立,參數怎麼調,但是真實描述了做機器學習研究或產品過程中的各種折磨。「分辨新聞的真假」一句話很簡單,但是從定義題目的基本:「什麼是假新聞」就不是那麼絕對,開始觀察資料以後就發現,對問題的了解跟資料呈現的樣貌不盡相同,由於認知到應該找不到合適的資料做為實驗的資料集,決定自己標記資料,然後發現使用的技術方法不同,需要的標記方式也不同,於是重新標,第一次做完模型正確率只有 70%,猜測是訓練資料不夠,再繼續標,直到得到自己滿意的正確率為止。

這段過程其實是相當需要經驗的,常常也被其他職位的人忽略,但是如果這個階段做得不正確,往往後面做的努力都會白費。

雖然標題說正確率有 95%,但作者也開門見山的說,用在真實資料的準確率應該更低,畢竟這只是有限資料集的實踐結果而已。

towardsdatascience.com

工作機會

Senior System Developer at Vynca

薪資:

  • 月薪為台幣 120,000 以上, 依照能力敘薪
  • 薪資結構為 12 個月, 獎金依公司營運狀況發放
  • 新創公司的員工股票選擇權

基本條件:

  • 熟悉至少一種程式語言
  • 熟悉網際網路基本知識
  • 熟悉 HTTP 的運作以及 RESTFul API 設計
  • 熟悉撰寫測試如 Unit test, Integration test, End-to-End test
  • 熟悉系統效能調效如 Network tuning, SQL query tuning, Capacity planning

詳細說明

google.com

Senior Frontend Developer at Swag

薪資:年薪新台幣 100 ~ 200 萬元,強者上限可議。

基本條件:

  1. 精通 JavaScript、CSS 與 HTML
  2. 相容主流瀏覽器的前端整合開發經驗
  3. 前端 framework / library 的使用經驗
  4. 熟悉 React
  5. 模組化開發經驗

104.com.tw

Senior Backend Developer at Swag

薪資:年薪新台幣 100 ~ 200 萬元,強者上限可議。

基本條件:

  1. In-depth knowledge of Python or NodeJS
  2. Experience with Python web frameworks ie. Flask/Django/Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of Mongo and Redis
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

facebook.com

Random Cool Stuff

Buy Me A Coffee — Free, Fast and Friendly Way to Receive Donations

如果你看到很好的 GitHub repo 或是一篇很好的文章,你會如何贊助該貢獻者?

這個網站很有趣,提供了一個付費的管道給你喜歡的作者.

我是從 Go Perf-book 這個 GitHub repo 看到的, Damian Gryski 是一位 Golang 的演算法大神,他就有申請這個.

如果你是部落格的作家或是開源專案的貢獻者,不仿看看這個吧.

@Evan_Lin 提供.

buymeacoffee.com

Let's Learn About Waveforms

是一個互動式的網頁,用示波形來解釋聲音,從最簡單的傳遞到合成。這種形式的解說真的是不得了。

@saiday 提供。

pudding.cool


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.


CodeTengu Weekly 碼天狗週刊 - Issue 119 小明面試時自述他寫程式有高可預測性跟一致性,到職後果然沒有人看得懂,小明很誠實 - Mar 19th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

只要命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@uranusjr

So you want to write a package manager

最近講了一些關於套件管理的事情,這次就來個專題,整理一下相關的文章。

首先是 Go 的套件管理工具 dep 的主要貢獻者 Sam Boyer 寫的文章。從時間推算起來,這篇大致上是他為了 dep 做的一些研究整理,加上一些自己的想法。這篇文章十分完整,把套件管理從各種維度都切割、分別探討了一次,包含了你對一個套件管理所有應該知道的主題。如果你想進入套件管理這個領域,或者想知道你用套件管理工具時,系統到底做了什麼事情為什麼做這麼爛,這篇算是必讀。套件管理真的非常、非常難,寫不好才是正常的,不要怪開發者不然你來加入啊,賭你做不出來辣

medium.com

setup.py vs requirements.txt

前一篇文章提到(欸對我假設你有讀,否則話題持續不了),語言套件管理(language package manager,LPM)通常也會包含專案/應用依賴管理(project/application dependency manager,PDM)。這個想法十分合理,但也就代表管理工具需要同時考慮兩種使用狀況。在大多數情況下,這倒不是問題(也是為什麼它們會被做在一起),但有時候就會出現兩個看似衝突的規則。

以 Python 為例,這個衝突就來自 setup.py 與 requirements.txt。這兩個檔案格式都可以被 Python 的套件管理器 Pip 接受,用來安裝依賴。這就讓大家覺得它們的功能重複,也有很多人開發了工具,專門用來同步它們。但是它們的用途並並不一樣。根據 Python 套件管理生態(Pip、Setuptools、PyPI 等等)的主要開發者 Donald Stufft,setup.py 與 requirements.txt 分別應該被用來管理 abstract 與 concrete dependencies;前者是函式庫應該有的依賴策略(因為要與其他函式庫和諧共存),後者則是應用程式的策略(為了盡可能維持應用永遠能夠正確運作)。對應到 Boyer 的術語,把 Pip 當成 LPM 使用時,應該使用 setup.py 安裝 abstract 依賴;當成 PDM 使用時,則用 requirements.txt 安裝 concrete 依賴。

caremad.io

Clarifying the Roles of the .gemspec and Gemfile

跟上一篇差不多,不過是 Ruby + Bundler 版,作者是 Yehuda Katz,可能是這年頭最知名的套件管理專家,Bundler 和 Cargo 後面的設計都有他的身影。文章的概念和 Stufft 相同(其實這篇成文比較早,說到依賴管理 Python 還得叫 Ruby 一聲前輩),不過 Bundler 在 concrete 依賴管理上多了一個 locking 概念(又稱 version-pinning)。在這裡,Gemfile.lock 對應 requirements.txt,而 Gemfile 用來「指導 lock file 應該如何被產生」,與專職控制 abstract 依賴的 .gemspec 之間沒有明確界線——Bundler 也確實提供了防止重複的策略,亦即在 Gemfile 直接參照 .gemspec。這個思路在 Cargo 更加明顯;.gemspec 在 Rust 完全沒有等價存在,而只有控制 abstract 依賴的 Cargo.toml,以及指定 concrete 依賴的 Cargo.lock。

Bundler 與 Cargo 的策略在概念上很好,但是實行上還是有點問題。套件管理有超過一半是在處理人的問題。如果你用 Gemfile 提供依賴,就要記得不能一起提供 Gemfile.lock,否則你實質上會是在 library 中使用 concrete 依賴,與其他函式庫的相容性變差。Cargo 採用的做法略有不同;它只會參考最上層(使用者程式)的 lock file,更深的所有依賴都只考慮 Cargo.toml,所以即使函式庫開發者提供了 lock file 也沒關係(因為它根本不考慮)。但這也代表 Cargo 的規則檔案在不同情境下,會有不同的效果——仍然很容易造成使用者困惑。

yehudakatz.com

PEP 518 – Specifying Minimum Build System Requirements for Python Projects

Python 的套件管理在最近也有很多類似的發展。我之前介紹過用來取代 requirements.txt 的 Pipfile 格式(以及相關的專案管理工具 Pipenv)。在 LPM 方面,則是由 PEP 518 制定了取代 setup.py 的 pyproject.toml。這個格式會從 Pip 10 開始被支援,但是如果你現在就想採用,可以用 Flit 這個工具,自動根據 pyproject.toml 產生等價的 setup.py(有點類似 JavaScript 的 Babel,只是不是 transpile 程式,而是套件 metadata)。

所以一個 Python 套件在未來會有三個依賴相關設定檔:pyproject.toml、Pipfile、Pipfile.lock。為什麼?前面提到的「人的問題」歸根究底起來,我覺得還是出在 abstract 與 concrete 依賴設定之間沒有很明顯的分界,使得 concrete 設定在某些狀況下要直接參照 abstract 設定。在 Python 的狀況中, LPM 只需要考慮 pyproject.toml,就永遠只會讀到 abstract 依賴;PDM 只需要考慮 Pipfile.lock,讀到的就是 concrete。同步問題則可以借鑑 Bundler 的做法,在 Pipfile 表達「加入 pyproject.toml 裡的依賴」。這樣使用者更新 lock file 時,仍然是從 Pipfilefile 的修改開始;這通常是直接參照 pyproject.toml,所以可以同步,但是如果需要脫鉤,也可以很簡單辦到。而如果你用 Pipenv,這只要一行就能搞定

$ pipenv install -e .

Python packaging is good now. 誰反對?

python.org

@johnlinvc

Stackoverflow Servey 2018

大家的好碰友 Stackoverflow 一年一度的開發者調查結果出爐了。 每年他們都會對開發者們做對技術和工作方面想法的調查,今年有超過十萬人參加。 調查結果顯示最熱門也是最高薪的就是 DevOps 和 Machine learning, 所有相關的技術也都非常熱門。

stackoverflow.com

Power of Prolog

最近看到了一題邏輯題 ,讓我決定好好研究一下一直都很想學的 Prolog。 Prolog 是一個邏輯編程語言,和一般我們熟悉的程序式語言完全不同,非常有趣。 Power of Prolog 非常詳盡的介紹了現代 Prolog。有興趣的人可以用線上編輯器 寫寫看練習題

metalevel.at

Google colab

上週 @drumrick 有提到的 colab, Colaboratory, 是 Google 新推出的免費線上 AI 開發環境。 免費提供長達 12 小時的免費 Tesla K80,而且沒有次數限制。 可以從 google drive 匯入資料,從 Github 匯入程式碼,還可以使用 BigQuery,整合得相當好。 想玩 deep learning 但卻買不到顯卡的人可以照著下面這份教學免費玩看看。

google.com

Tensorslow

TensorFlow 搭配 GPU 跑起來就像魔法一樣。魔法的表面是和藹可親的 Python API,背後卻是複雜的 CUDA 與 C++。有人寫了一個純 Python 的 Tensorflow,讓大家比較容易理解背後的運作原理。不過人如其名,跑的超慢。

github.com

REXEGG

正規表達式 (Regex) 總是讓你摸不著頭緒嗎?這個網站解釋了許多進階技巧,還有不同語言中 Regex 的差異。工作無聊之餘可以研究一下 Regex 的博大精深。

rexegg.com

工商服務

33 場議程 + PyCall 工作坊 + 雙語言之父,您不可錯過的 Ruby + Elixir 語言年度盛會

自 2010 開始的 RubyConf Taiwan 是台灣最大且唯一的 Ruby 語言年會,今年和 Elixir 社群合併舉辦並更名為 RubyElixirConf Taiwan 2018,本屆大會的亮點如下:

  1. 兩個語言之父(Matz / Jose)同時作為 Keynote Speaker 登場
  2. 大會史上第一次的三軌共 33 場議程,講者中有多達六位的 CRuby Committer
  3. 加入了 Ruby Data Workshop,介紹如何使用 PyCall 這個 Rubygem 在 Ruby 程式中呼叫 Python 程式做機器學習(Machine Learning)

大會已開始售票,議程與講者陣容請參考:https://2018.rubyconf.tw

rubyconf.tw

工作機會

Senior Frontend Developer at Swag

薪資範圍:年薪新台幣 100 ~ 200 萬元。

能力需求:

  1. 精通 JavaScript、CSS 與 HTML
  2. 相容主流瀏覽器的前端整合開發經驗
  3. 前端 framework / library 的使用經驗
  4. 熟悉 React
  5. 模組化開發經驗

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 120 本公司不用打卡,所以上下班時間非常彈性。喔不過我們通常會在早上七點開 Daily Scrum Meeting - Mar 26th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@vinta

Remotely debug a Python app inside a Docker container in Visual Studio Code

之前因為開發環境都 containerized 了,但是偶爾又想要用一下 Visual Studio Code 的 Python debugger,所以就試了一下 Remote Debugging 功能,順便寫了一篇網誌記錄了跟 Flask 的 --reload 併用的奇技淫巧。忍不住抱怨一下,VS Code 的 Python debugger 雖然很炫炮,尤其是 "debug.inlineValues": true,但是啟動速度真的慢到靠北啊。

不過就像 @WanCW‏ 說的,與其一直花時間追求開發環境和正式環境的一致,整天搞那些 configs,還不如用那些時間多寫幾個 test cases 啊。

P.S. 這裡的 remote 主要指的是本機的某個 Docker container,當然也可以真的是遠端的某台機器。

vinta.ws

kennethreitz/setup.py: A Human's Ultimate Guide to setup.py

也是出自 @kennethreitz 大神之手,不過這次不是什麼改變 Python 生態系的新專案,而是一個 setup.py 的範例,有自己的 Python package 的人可以參考看看。看了之後才知道,原來有 cmdclass 這麼一個用法啊。

github.com

Kubernetes Deconstructed: Understanding Kubernetes by Breaking It Down

在你讀完八百多頁的 Kubernetes 文件之後,這個影片可能會是個很好的複習。

youtube.com

Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what?

看了半天的 Kubernetes 官方文件,結果反而是在讀了這篇文章之後才終於搞清楚 ServiceIngress 的使用場景,嘖。

medium.com

Getting started with Data Engineering

這篇文章概略地提到了作為一個 Data Engineer 可能會需要碰到的各項技術,一個人要完全掌握這些東西當然是不太可能啦,但是看了那個 Big Data Landscape 的圖還是覺得很血汗啊,大家感受一下。

不過讀完文章之後,最大的心得反而是所謂的 Data Engineer 做的事情跟 Web Backend Developer 其實很像啊,都是圍繞著 Data 本身打轉,在技術上也有相當大的重疊,最大的差別可能是在於人家用的那套 framework 叫做 Apache Spark,逼搞夏趴。

medium.com

How to Do Code Reviews Like a Human (Part One)

雖然 code review 已經是老生常談了,但是這篇文章寫得真的是好。無論你是那個覺得 code review 是件苦差事的 reviewer 或是老是被要求改 code 改到往心裡去的 reviewee,又或者你們團隊根本還沒開始做 code review,本文都非常值得一讀。

延伸閱讀:

mtlynch.io

YouGlish - Use YouTube to improve your English pronunciation

因為公司的 System Architect 是加拿大人,所以平常跟他在開會或閒聊都是全英文進行,對土台灣人如我多少還是有點不習慣,最近的困擾是關於某些單字的唸法,一般的英文單字也就算了,畢竟網路上隨便一個字典都有真人發音。但是那些我們平常在用的技術詞彙(例如 framework 或 library 的名字)就不一定在字典裡找得到了。正好前陣子 @SammyLinTw 推薦了 YouGlish 這個網站,它可以直接幫你列出 YouTube 上關於某個單字的發音片段,實用!

大家感受一下:

延伸閱讀:

youglish.com

@mingderwang

Git Rebase Interactive: A Practical Example

git 指令裡面,比較難懂的就是 rebase。這個實戰 YouTube 教你簡單方法如何更改 logs 的順序或註解。注意,只能在不 conflict 的情況下來使用。也只能 rebase 本地端尚未 commit 到遠端的 logs。

youtube.com

Erlang (and Elixir) distribution without epmd

最近台北將會有一場 Ruby 與 Elixir 的研討會,不妨大家來看看 Erlang 文章吧。Erlang 是一個非常容易寫分散式不停頓的軟體的程式語言,其中 default 用 epmd 來尋找分散在網路上不同的節點 (node)。這篇文章,用一個簡單的方式,教大家在 Erlang/OTP 19.0 以後的版本的程式可以跳過 epmd,讓節點更有彈性的加入同一個 network,且跟其他的節點互動。

erlang-solutions.com

Requiring modules in Node.js: Everything you need to know

如果你會寫 Node.js 程式,但還是不太了解 modules 是什麼,為何要用 module.exports,以及 require 到底是怎麼運作的,你可以先看這篇文章。作者 Samer Buna 把這些問題用幾個簡單的範例做了清楚的說明。

freecodecamp.org

Blockchain Sharding Issues

一群 Ethereum 開發愛好者,包括 Ethereum 團隊 (招募中),Parity 成員,以及美國 IC3 研究員,上週在台灣聚會,探討如何解決區塊鏈目前碰到的最大難題,也就是擴充性的問題。最後還在 3/21 Taipei Ethereum Meetup 主辦的 2018 以太坊全明星技術座談會 中與大家分享成果。

有興趣深入研究的人,可以先看看 sharding FAQ 再想辦法實作 sharding 的規格。當然,這也許只是其中一種想法或方法,而且都是在非常初期的研究階段,還有非常多的專案也在想要解決同樣的問題。我想這也是讓大家更有機會在先期就投入區塊鏈的研究,再創佳績。

CodeTengu Weekly

Otaku is the New Sexy

瑞克和莫蒂:我酗酒、我变态,但我是个好外公

(該文有大量劇透)

在 Twitter 上看到有人分享了 dannvix/NflxMultiSubs,幫 Netflix 加上「雙語字幕」功能的瀏覽器外掛。突然就想到前一陣子因為椎間盤突出在家裡休養的那段日子,除了物理治療和皮拉提斯之外,其他時間好像都是在看 Netflix 啊。說到這裡,忍不住要跟大家分享一下我印象最深的一部作品,Rick and Morty。不誇張,這部真的是我這輩子看過最屌的科幻動畫,有點像是把銀河便車指南裡的英式幽默用 Futurama 和辛普森家庭取代的感覺,第一次看就看傻了我。非常推薦!每一集的片尾都有一段彩蛋,千萬不要錯過了。

不過如果你真的不喜歡動畫,那也可以看 Dirk Gently's Holistic Detective Agency,原著小說的作者正是 Douglas Adams。

@vinta 分享。

zhihu.com

sindresorhus/awesome-scifi: Sci-Fi worth consuming

科幻迷大放送!

延伸閱讀:

@vinta 分享。

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 121 請問 TRUNCATE TABLE 是 DDL 還是 DML,請搶答! - Apr 2nd 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@tzangms

Share your Manager README

這一兩年來因為技術相關事務越來越少,也越來越忙,所以相對的,跟技術同事們也都比較少接觸,這其實真的不太好,不過也因此了解了,所謂的 Engagement 這詞的真正含義,像我這樣就是太不 Engagement 了! ( 什麼鬼 )

所以最近的 1 on 1 了解到這件事之後,我開始問每個人說:「是不是會因為覺得我很忙所以不敢找我?」 「拜託,以後有事想講看到我在就馬上抓住我,Slack 也行,或是直接看我的 Google 日曆,直接 Booking 時間」

不過其實最棒的還是直接攤開你身為主管的 README,身為技術人應該都會看 GitHub 上面發現新套件,使用之前應該都會看過他的 README。

其實主管們也該提供一下 README,讓大家知道怎麼使用你。 你期待的是什麼,你怎麼看事情,怎麼評估價值 ... 等等。

除了這一篇外還有另外兩篇可以參考一下,其實本來這週我也想附上我的 README,但是實在是沒有太多時間。 也許大家期待一下下週。

另外這篇文章還有一個很大的收穫就是 DRI: Directly Responsible Individuals

matthewnewkirk.com

Apple's corporate innovation? The 'directly responsible individual'

在上一篇看到的 DRI 其實還滿讓我好奇的,不過原來我早就知道這件事了,早期在研究如何進行更好的會議的時候就知道這件事。

除了開會前要有 Agenda 之外,開完會還需要有決定好要做什麽的 Action list, 而每則 Action list 都必須要有一個負責人跟結束時間。 不然會議的事情很常會落入,不知道誰要負責,不知道什麼時候結束的狀況。

而 DRI: Directly Responsible Individual 則是 Steve Jobs 在 Apple 開會都會用的方式,其實好像很簡單,但其實也沒有那麼簡單,因為我 run 過一段時間,有時候自己都會覺得困難而放棄。

例如: 有一件事你不確定是前端還是後端,或是都有,這時要交給誰負責? 甚至怎麼設定完成日期? 或是 ... 現在還不知道某個功能的瓶頸,負責人應該是 Dev 還是 Ops? (我知道 DevOps 就解決了嘛)

所以,我這邊先前有發生過同一個狀況好幾次,某個產品原本有兩個工程師,因為我們走 Free style,自己撿 issue,所以以前也就不會指定誰負責,但是其中有人離職之後,剩下一個工程師的產出還比兩個工程師還要好上很多。 因為只有他負責了 ... XD

DRI 看似簡單,但其實還是有一些「眉角」,除非你在一個非常小的團隊, 所以下面兩篇也可以參考一下:

blogspot.tw

@fukuball

Tom-Chang-Deep-Lyrics | 基於 LSTM 深度學習方法研發而成的張雨生歌詞產生模型,致敬張雨生

Machine Learning:中級

之前看到〈『致敬赵雷』基于TensorFlow让机器生成赵雷曲风的歌词〉這篇文章覺得非常有趣,因此一直都想自己動手試試看,中國有趙雷,那台灣要找什麼值得紀念的音樂人來作這個歌詞機器學習模型呢?我想張雨生應該會是台灣非常值得令人紀念的音樂人之一了。

程式的基礎我使用了之前在 GitHub 上有點小小貢獻的一個 Project 作為程式碼基礎,這個 Project 是 char-rnn-tf,可以用於生成一段中文文本(訓練與料是英文時也可以用於生成英文),訓練語料庫我收集了張雨生的百餘首歌詞,由於這樣的歌詞語料還是有些不足,因此也加入了林夕、其他著名歌詞、新詩作為輔助,整個語料庫大致包含 74856 個字、2612 個不重複字(其實語料庫還是不足)。

演算法基本上就是 LSTM,細節在此就不多加著墨,若有興趣可以在這篇文章了解一下,相關程式碼我放在這邊:Tom-Chang-Deep-Lyrics,如何安裝環境、如何訓練、如何生成歌詞,基本上都寫在 Readme 了,大家可以前往瞧瞧。

fukuball.com

GAN with Keras: Application to Image Deblurring

Machine Learning:中級

GAN 可能會是未來 Machine Learning 會有長足進展的最有影響力的演算法,不過複雜度實在是太高,我個人也沒有時間去自己實作好好理解這個算法。本篇文章用圖片去模糊這個例子去實踐了 GAN,有空應該要好好來跟著實作一遍啊!

sicara.com

【Ethereum 智能合約開發筆記】透過 MetaMask 使用 web3 和使用 EthJS 呼叫合約

Ethereum:初級

個人覺得 Ethereum Developer 除了懂 Smart Contract 怎麼寫之外,也應該要知道怎麼寫 Dapp,Smart Contract 就像是後端,而 Dapp 就是前端了,Ethereum Developer 不該只局限於其中一個領域,這篇算是一個非常簡易的前端入門,如何接上在前端接上 Smart Contract 與之互動,其實不難啊!

medium.com

Getting Started with Signed Routes in Laravel

Laravel:初級

Laravel 5.6 出了一個新的 feature - signed URLs,可以做到像是 S3 的 signed URLs 那樣,暫時給予使用者 access 特定資源的權限,其實要做這樣的功能並不難,但就跟登入登出一樣,做了幾次就會覺得煩、做到懷疑人生,web framework 本身就該提供這樣的功能啊!升級 Laravel 5.6 讓您馬上擁有!

laravel-news.com

@yhsiang

The world’s first code-free sparkline typeface

可以顯示迷你 Bar Chart, Line Chart 的字型。而且他是開源的!

aftertheflood.co

Learn to combine RxJs sequences with super intuitive interactive diagrams

利用互動的圖片教你認識 Rxjs 的一些用法,例如 merge, mergeAll, concat 等

包括使用可編輯的程式碼,適合想要入門學習 Rxjs 的朋友。

angularindepth.com

Speedier Server-Side Rendering in React 16 with Component Caching

Server Side Rendering 已經成為 React 的顯學之一,過去有許多公司導入這樣記述,並且提出各樣的方法解決 React 的 SSR 問題。

Sasha Aickin 在 2016 的時候就有提過 React Component Cache 的方式,而隨著 React 16 的推出。React 已經改進了 SSR 的效能,所以作者決定推出這個方便使用的 library。

主要有幾個特色:

  1. 兩種類型的 Caching
  2. 支援 Stream method
  3. 支援 Redis 或 Memcached

有在玩 SSR 的朋友們,不仿試看看!

medium.com

Working with the new CSS Typed Object Model

Chrome 66 將會支援 CSS typed OM。

隨著 Type system 在前端越來越受到重視,像是 typescript、flow、Elm、PureScript、ReasonML,而 CSS 的 Object Model 也可以導入 type。type 可以幫助我們減少 bug 跟更好的錯誤處理!

有興趣的朋友,可以多多了解!

google.com

工作機會

Senior Frontend Developer at Swag

薪資範圍:年薪新台幣 100 ~ 200 萬元。

能力需求:

  1. 精通 JavaScript、CSS 與 HTML
  2. 相容主流瀏覽器的前端整合開發經驗
  3. 前端 framework / library 的使用經驗
  4. 熟悉 React
  5. 模組化開發經驗

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 122 整天都在網路上看人家的文件,但還沒有自己寫過 - 文件就像是青春期的性愛幻想 - Apr 9th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@saiday

APIs as infrastructure: future-proofing Stripe with versioning

Stripe 分享設計 REST API 版本的經驗跟方法。

其中最有趣的部分是 Stripe 不再主要地採用 URL 夾帶 API 版本 (v1/endpoint) 而是採用日期 (2018-04-01) 的 API 版本化方式。其原因是大版本 API 升級是痛苦的,對 API developer 跟 client developer 來說都是。

他們透過一套自己的 DSL 來描述每一個 endpoint、撰寫 version change (包含與上一版的相容轉換方法)、紀錄 version changes list。
當一個舊版的 API request 進來會從最新版的實作開始,透過 version changes list 一步一步退版本直到符合這個 request 的 API 版本。
這樣的方法就像是 DB 的 migration,只是他是倒過來的、針對的是你的 API endpoint。

有兩個很明顯的好處,不用管舊版的實作可以快速滾動升級,跟做完之後就有免費的 changelog。

stripe.com

Who will steal Android from Google?

Steve Yegge 換工作了,對前公司正常能量釋放中。開頭就來了這句:

Android’s dev stack is the world’s biggest poo sandwich.

當然,他在 Google 並不是開發 Android 的,但他對 Android 生態的觀察還是滿犀利的。特別是 Flutter 的部分:

“Oh yeah? Well you can’t compete with us, because we’re going to compete with us!” and they launched Flutter, which is a 100% serious Android development stack that competes with native Android.

結論是想要在他的新公司嘗試用 Reactive Native,畢竟這種大公司大 app 總是為了 build time 所苦。然後他也鼓勵有後端經驗的開發者學習 mobile 開發,因為現在這種全端人才實在太少了,奇貨可居。

Steve Yegge 的文筆還是那麼流暢,如果懷念他的憤怒可以看這篇的上一篇 Why I left Google to join Grab

medium.com

Nullability annotations 之亂!

最近用 Kotlin 調用 Android SDK,明明看到它的 .java 有 @Nullable 的標註,但 Kotlin 的類型推導卻給了我 Platform Type,檢查發現在 bytecode @Nullable 就被抽掉了。原因是 Android SDK 用的是 android.annotation.Nullable,這個 annotation 並不是公開的 API (AOSP Nullable)

那問題就來了,如果我要重新做人在 Java code 裡標註 nullability,我應該用哪套 package 的 @Nullable?JetBrains 的 org.jetbrains.annotations.Nullable 、 JDK 的 javax.annotation.Nullable 還是 Android 的 android.support.annotation.Nullable

先講結論,寫 Android 用 android.support.annotation.Nullable 因為 Android Studio 的 Lint 只認這個。不是寫 Android 的話就看你的 nullness analysis 工具用哪一套。

Kotlin 開發過程也苦惱過同樣的問題,Kotlin 的 null-safety types 跟對 Java 的兼容性就是魚與熊掌。務實如 Kotlin 這個語言嘗試了很多做法,最後妥協在什麼 package 的 nullness annotation 都參考,如果沒有標註,就 infer Platform Type 給你,你自己管吧。 (More Null-safety for Java 是他們不斷嘗試解決的過程)

是說,為什麼會有這麼多套的 nullness annotations?
啊,沒有錯啦,因為大家都不相容嘛哈哈哈哈

Python,你到底是在__底線__什麼啦!

Python 在變數上有許多 underscore (_) 的語法跟命名習慣,這篇解釋了這四種形式:

  • foo_
  • _foo
  • __foo__
  • __foo

對我這個剛學習的人有很大幫助。

aji.tw

@chiahsien

Technical Note TN2387: In-App Purchase Best Practices

接下來有段時間可以重新整理某專案裡頭的 IAP 相關程式碼與流程,所以找了不少參考資料,最權威的當然就是蘋果自家的文件囉。除了這個之外,底下這些也很適合參考:

我也打算把 StoreKit 包起來,讓其他地方的程式碼可以更優雅地使用它,所以也參考了其他 library 的做法,看起來這幾個算是做得滿漂亮的。

apple.com

Release 1.0.0.alpha.1 - First fastlane.ci alpha

之前曾經提過的 fastlane.ci 已經按照進度推出 1.0.0 alpha 了,它跟 fastlane 完美的整合,打從一開始就是為了 iOS/Android 開發流程打造,並且 100% 採用 MIT 授權開放原始碼,你可以自架伺服器來運行它。雖然只是 alpha 版,但已經算是堪用了,有興趣的可以玩玩看。

github.com

iOS Developers Ship 29% Fewer Apps In 2017, The First Ever Decline – And More Trends To Watch

除了標題講的那樣之外,這篇文章也提供了一些其他數據,例如使用 non-native 開發的比重有多少,以及最多人選擇的 non-native 開發方式等等。蠻有趣的一篇觀察,有些數據或許可以做為你下一個 app 開發方向的參考依據。

appfigures.com

GitHub - shuaiwang007/RAC: RAC 的常用用法,提高开发效率

在我們公司的專案裡頭,ReactiveObjC 佔了蠻重要的一個角色,所以熟悉 RAC 的各種用法是很重要的(當然不會 RAC 也沒關係啦,我們會教你!)。前幾天在亂逛網路時,發現了這個 repo,裡頭把最常用的 RAC 功能都詳細解說了一遍,不管是當作速查表或是當作新手上工補充教材,都非常合適啊!

順便追加一個速查表,裡頭包含了 ReactiveObjC / ReactiveSwift / RxSwift。

github.com

Tips to become a better Swift (iOS) Developer

很多人推崇 Swift 的一個理由是它比較簡單,但我一直認為這是一個假象。我覺得 Swift 好上手,但它易學難精,一個不小心就會寫出不優雅或是效能不夠好的程式碼。這篇文章裡頭透過大量的程式碼片段說明如何成為更好的 Swift 工程師,值得初學者參考。

developerinsider.in

SwiftTips: A collection of Swift tips & tricks that I've shared on Twitter

看完之後或許你會懷疑這真的是你平常在寫的 Swift 嗎?恩..... 真的是易學難精 Orz

github.com

@allanlei

Mastering Chaos

Josh Evans (of Netflix at the time) gave a great talk of Netflix's road to where they are now. He talks through problems they've experienced creating large distributed systems, what microservices are and are not, and how embracing chaos can affect design decisions.

youtube.com

Storing Redis values with msgpack

It's like JSON. but fast and small.

When there is a need to store data structures in Redis, the go to way is to serialize in JSON. For those cases, why not use msgpack?

Critics of msgpack, including the author themself, says it is still not as good as JSON+Compression, but for the use case of redis, there wouldn't (normally) be compression.

Seems like a straight-forward method to save on resource with limited drawbacks.

msgpack.org

ZStandard for better Compression of REST APIs

A lossless compression algorithm by Yann Collet at Facebook (also the worked on lz4) that aims to offer faster compressions and at higher ratio compared to current libraries like zlib.

The special feature in ZStandard I think will be very beneficial is the use of a pre-train dictionary aimed for the use of small payloads where the data is normally too small to generate any valuable compression context. JSON payloads from REST APIs fit this use case pretty well having many small payloads <100KB.

Having run a very simple test against our own APIs, I was looking at 20% better compression compared to gzip using a pre-train dictionary. Don't take my word for it, try it out for yourself!

github.io

工作機會

Senior Frontend Developer at Swag

薪資範圍:年薪新台幣 100 萬元以上。

能力需求:

  1. 精通 JavaScript、CSS 與 HTML
  2. 相容主流瀏覽器的前端整合開發經驗
  3. 前端 framework / library 的使用經驗
  4. 熟悉 React
  5. 模組化開發經驗

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 123 簡單、粗暴、做得到 - Apr 16th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@uranusjr

PyCon Taiwan 2018 開始售票辣!

今年 PyCon Taiwan 會在 6/1–2 在老地方中研院舉辦,要來的記得買票。今年早鳥維持 2,500 減量不減價 先搶先贏,太晚的就只能買貴票了喔喔喔。我們今年同樣有財務補助活動,可以憑搭乘證明申請交通補助,外地參加者請多多利用,我們很期待看到更多台北以外的會眾 ><

另外今年同樣會有 tutorial,兩場在高雄兩場在台北,敬請關注相關情報。

pycon.org

A Brief Totally Accurate History Of Programming Languages

簡單(但是保證準確)的程式語言史。可以看看你最喜歡的語言是什麼時候出現在這個世上的。說不定有些部份還會讓你很驚訝呢。你知道 Java 比 JavaScript、Python、甚至 Ruby 都還年輕嗎? 你知道為什麼 Lua 的 index 是 1-based 嗎(大誤)

medium.com

History of the browser user-agent string

繼續歷史相關的主題,這篇文章帶你走過瀏覽器 user-agent 的歷史,試圖理解為什麼現在每家瀏覽器的 user-agent 完全莫名其妙,幾乎毫無用途,而且大家都假裝自己是別人。

專業秘訣:不要忘想用 user-agent 判斷使用者究竟是用什麼瀏覽器。如果你真的要根據瀏覽器支援的功能進行邏輯判斷,請使用 feature detection 判斷客戶端的特性,而不是瀏覽器種類本身。

webaim.org

Evolution of the English Alphabet

說到歷史就想到最近看到這個列出英文字母起源的表格。好像還是第一次有人這樣全部做出來,好想買一張回家掛!如果你有興趣知道「為什麼」會這樣演變,或者想多看一下古英語(Old English)使用,但是現在已被廢除的字母,也可以看看作者做的 YouTube 影片,實在是很不錯。

喔順帶一提,如果你對人類語言,或者英語的歷史有興趣,我最近又重新熟悉了一次大元音轉移(Greate Vowel Shift)。看完之後你就知道為什麼英語發音那麼沒道理了。然後可能也會對這個沒道理背後的道理有點概念。可能吧,畢竟真的沒道理。

我有提過我很愛研究語言嗎?有興趣的歡迎一起來討論啊​ ╭( ・ㅂ・)و

usefulcharts.com

CSS Sans

純 CSS 實作的字型。啥?

不過這可以用來觀察各 CSS 版本(其實是瀏覽器版本)對現代 CSS 功能的支援演變。十分有趣。

yusugomori.com

@kkdai

teh-cmc/go-internals: A book about the internals of the Go programming language.

關於 Golang 內部實現的電子書,目前進度到第二章.裡面談到使用 interface 與內部如何實現. 並且可以深入了解使用 interface 可能帶來效能上的犧牲以及內部實作的細節. 相當硬派的書啊....

github.com

Line of sight in code – Mat Ryer – Medium

一篇很好的建議,可以讓你的 go code 變得更漂亮,更容易閱讀。 裡面講解到很細,舉凡:

  • error 處理方式如何變得更漂亮
  • 要讓你的 if 判斷句能夠精簡
  • 讓 switch/select 直接變成 function

這些方式可以讓你的 code 變得更美,以後回來通靈 (?) 也會比較順暢..

medium.com

Running a Keras / TensorFlow Model in Golang - Tony Truong

在 Deep Learning 上面,透過 Python 跟 Keras 與 Tensorflow 來進行. 這篇文章相當有趣,我們可以透過 Golang 來跑 model inference . 有興趣想要透過 Golang 來進行 Deep Learning 的人可以看看

tonytruong.net

Go on very small hardware (Part 1) | Michał Derkacz

在非常小的裝置上面使用 Golang ? 透過 transpile C 的方式來將你原先 Go 的開發部署到相當小的裝置上

github.io

[Slides] Consistent Hashing: Algorithmic Tradoffs

這一篇投影片的整理是根據 Damian Gryski 在他 Medium 裡面文章 的整理.

裡面主要是透過整理來談 Consistent Hashing 主要要解決的問題,與先天設計上可能有的一些問題.之後 Google 發表了 Jump Hashing 來解決相關的限制.

並且還有在他們的 Load balance 有使用到的 Maglev Hashing ,這一篇投影片會講解原理跟優缺點比較.

有興趣相關演算法的人可以來看看....

evanlin.com

@drumrick

Kaggle 5-Day Challenge: Data Cleaning

根據 Google 搜尋結果顯示,Kaggle 從去年十月開始了這種 5-Day Challenge 系列教學,內容基礎而精簡,主題則相當多樣化,有講解公式的、有講解演算法的、有視覺化的,還有這次的 Data Cleaning。教學的形式其實就是以 Kaggle Kernel 的方式呈現,讓有心學習的人能一邊學習一邊操作,這次的教學可以從上面的連結開始,如果有興趣參考過去的 5-Day Challenge,可以在 Rachael 的 Kernel 中搜尋 "Challenge" 就可以找到。

不知道是不是教學迴響很好,或是 Data Cleaning 一直都是大家心中的痛,在上週,Rachael 還在 twitter 上跟大家募集『很髒』的資料集,搞不好這個 Challenge 還會有續集?

kaggle.com

Kaggle Q1 產品更新說明

Kaggle 2018 年動作頻繁,發佈了好幾個實用的功能,例如:

  • 可以建立 private dataset
  • Kernel 更新
  • 運算資源提高到 6 小時,而且可以 pip install 了
  • 協作分享

主要就是把一般的工作流程整起來,方便引誘你使用 Kaggle 的平台。

在其他更新中有兩點:

  • 正式發布了在 #114 提到的 Kaggle Learn,比起一月底多了 Pandas 和 SQL 這兩個主題。關於 Kaggle Learn 這邊有兩邊心得文可以看看:簡中 / 繁中
  • 目前有 14 個公開的資料集整合 BigQuery,在 Kaggle 中的實際用法可以參考 Kaggle Learn 的 SQL 課程。

kaggle.com

了解一下 Google Art & Culture 在幹嘛

一時興起了解一下 Google Art & Culture 都在幹嘛,文中會提及幾個 Google Art & Culture 最近的專案,都是將影像相關的機器學習技術與藝術作品結合的應用,未來有機會的話會持續關注這個領域。

medium.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 124 小明開了一間酒吧叫 Foo Bar - Apr 23rd 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@mingderwang

Storytelling in Dashboards

Susie Lu 介紹如何利用遊戲設計的思維與說故事的形式,來設計資料視覺化的儀表板。因此可以讓不同的使用者,從不同的角度去探索自己想要的答案,進而還能讓使用者輕鬆保存或分享當時的狀態與圖示,讓資料視覺化程式更創意,使用者體驗也會更好。

susielu.com

Titus, the Netflix Container Management Platform, Is Now Open Source

Netflix 在幾天前終於開放它容器管理平台 Titus 的原始碼。從 2015 年年底,一週約開啟上千個容器,到現在一週開啟上百萬個容器,Titus 在 Netflix 使用容器的演進過程中扮演了非常重要的角色。

medium.com

Gitcoin: Open Source Bounties with Kevin Owocki

Software Engineering Daily 這個 Podcast 訪問 Gitcoin 的發明人 Kevin Owocki。Gitcoin 是一個寫在以太坊 (Ethereum) 智能合約上的開放原始碼懸賞平台。雖然它也叫 coin,但它不是一個 ICO。

softwareengineeringdaily.com

vim tips and tricks

如題。

oberlin.edu

@kako0507

React v16.3.0: New lifecycles and context API

React 16.3 在近期發佈了,這個版本的更新主要有以下幾點。

  • 正式推出新的 Context API ,將不再被列為實驗性的功能,使用上也更加的直覺了,支援 static type checking 和 deep updates 。

  • 提供新的 createRef API ,更方便的管理 refs 功能,並且沒有 string ref API 的一些缺點

  • 利用 forwardRef API 來傳遞 ref ,使得 parent component 可以更方便操作 children 內的任何 DOM ,配合 Context API 使用會非常的方便。

  • 改變 Component Lifecycle , componentWillMount 、 componentWillReceiveProps 和 componentWillUpdate ,這些容易擾亂 React Lifecycle 的 function 將在之後的版本被剔除。

  • 提供 StrictMode Component 用以檢查

    • components 是否有 unsafe lifecycles
    • 是否有使用 legacy string ref API
    • 不預期的 side effects

reactjs.org

因為 Oracle 持有 JavaScript 商標, Apple 下架使用了 JavaScript 字眼的 App

JavaScript 商標為 Oracle 所擁有 (US Trademark Registration No. 2416017) ,最近有開發者在 reddit 上發文表示自己的 app 因為使用了 JavaScript 字眼而收到 Apple 寄的信,大致的內容是:「你不能使用 JavaScript,因為 Oracle 擁有這個商標」。

reddit.com

Awesome Checkbox and Radio-Button CSS Hacks

利用 checkbox 、 radio button 並透過 CSS 的 Pseudo-classesGeneral sibling combinator 的技巧,不需要 JavaScript 也可以做出一些互動的效果!

codeburst.io

Mario Kart: CSS

這篇文章也是利用上面的技巧,只利用 HTML 的 input 及 Pure CSS 來實作馬力歐賽車。

codeburst.io

@johnlinvc

Apple 開源了 FoundationDB

FoundationDB 是一個可以水平擴展而且支援 ACIDNoSQL DB。在 2015 年被 Apple 買走,並且停止開放下載。但就在 2018/4/19,Apple 將它變成了一個 Apache 2 授權的開源計畫。

它設計上的理念很有趣,核心部分是一個 key-value store,在這之上有各種不同的 layer 來提供不同的存取方式,像是 SQL 或是 message queue。這次開源的部分是核心的部分,大家可以自己寫 Layer來達成不同的目的。

foundationdb.org

GraalVM

GraalVM 是 Oracle 開發的開源 (GPLv2) 通用 VM,可以執行 JavaScript, Ruby, Python 和各種 JVM 和 LLVM 為基礎的程式語言,包含 Java, Scala, C++等等。裡面包含了幾個重要元件:

  • Truffle: 用來實作動態語言的 framework, TruffleRuby 就是用這個寫的。
  • Graal: 基於 JDK 的動態編譯器
  • Substrate VM : 可以對 Java 程式做 ahead-of-time (AOT) 編譯。並且讓 Java 程式脫離 JVM 直接執行。

graalvm.org

KLEE

KlEE 是一個基於 LLVM 的 Symbolic 執行引擎,可以用來尋找程式所有可能的執行路徑。也可以用來自動產生各種 test case。

github.io

Swift 4.1 新功能介紹

Swift 4.1 隨著 Xcode 9.3 一起發佈了。 包含了 conditional conformance , Synthesized Equatable 等等方便的新功能。 這個 playground 示範了各種實用的新功能。

github.com

csvkit

相當實用的 csv 處理工具。 可以轉換 excel, json 成 csv, 讀取特定欄位,還可以用 SQL 來對 csv 做查詢。

readthedocs.io

工作機會

Senior Backend Developer at Swag

薪資:年薪新台幣 100 萬元以上。

基本條件:

  1. In-depth knowledge of Python or NodeJS
  2. Experience with Python web frameworks ie. Flask/Django/Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of Mongo and Redis
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

104.com.tw


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 125 碼天狗新聞:工程師會議中默不作聲,PM 恐成最大贏家 - Apr 30th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@vinta

Apex and Terraform: The easiest way to manage AWS Lambda functions

因為一直都有訂閱 RSS 的習慣,但是常常工作一忙就積了一堆文章忘記看,可是又發現自己就算上班事情很多還是會三不五時刷一下 Twitter 順便抱怨幾句,所以就乾脆建了一個 @vinta_rss_bot,透過 Zapier 同步 Feedly 裡的文章到 Twitter,讓自己在刷推的時候很容易不小心就看到。實測了一個多禮拜,效果不錯,大家可以試試。

雖然這個 RSS bot 用了 Zapier 才花五分鐘就搞定了,連一行 code 都不用寫,但是因為不是每個人都是「空格之神」的信徒,一看到 @vinta_rss_bot 推了幾則沒有在標題的中英文之間加上空格的文章之後,開始覺得渾身不舒服。最後實在受不了,就用 AWS Lambda 寫了一個加空格的 web API - api.pangu.space,讓 Zapier 在輸出到 Twitter 之前先打一次。

(前情提要有點太長)

這篇文章就是紀錄我當初用 ApexTerraform 部署 AWS Lambda functions 的過程,主要的邏輯很簡單,是用 Go 寫的,比較麻煩的反而是在配置 Amazon API Gateway 和 custom domain 的 HTTPS 之類的。因為只是個 side project,所以就沒用太重量級的 Serverless 了。

延伸閱讀:

vinta.ws

cert-manager: Automatically provision TLS certificates in Kubernetes

目前公司的 Kubernetes cluster 是用 kube-lego 自動從 Let's Encrypt 取得 TLS/SSL 憑證,但是因為 kube-lego 之前宣佈只支援到 Kubernetes v1.8 為止,所以希望大家改用另外一套由同一群人開發的在做同一件事的工具:cert-manager。

這篇文章就是紀錄我當初部署 cert-manager 的過程,準備之後從 kube-lego 遷移過去。不過因為當時測試的時候發現 cert-manager 有些功能還不是很完善,例如 ingress-shim,再加上我們在 Kubernetes v1.9.6 用 kube-lego 其實也沒遇到什麼問題,所以後來的結論是暫時先不遷移。不過文章寫都寫了,還是跟大家分享一下,希望對其他人有幫助。

延伸閱讀:

vinta.ws

GCP products described in 4 words or less

之前都是用 AWS 比較多,但是現在公司是用 Google Cloud Platform,這篇文章可以讓你快速了解 GCP 上面有哪些東西可以用。

忍不住抱怨一下,Google Cloud Memorystore 到底什麼時候才要上線呢?

雖然 GCP 在各方面都還是差了 AWS 一截(Google Kubernetes Engine 除外),但是 Google Cloud 的 Stackdriver 系列真心好用,例如 Logging 可以直接全文搜尋所有 containers 的 stdout,什麼配置都不用(轉頭望向 ELK)。說到看 logs,kubetail 也是不錯,就是強化版的 kubectl logs -f;另外還有 Debugger 可以直接在 production code 上跑 debugger,實在炫炮。

延伸閱讀:

medium.com

One Giant Leap For SQL: MySQL 8.0 Released

MySQL 8.0 前陣子發佈了,這個版本對 SQL 標準的支援有了長足的進步,終於從 SQL-92 的魔障中走出來了。有望擺脫 Friends don't let friends use MySQL 的罵名(目前看來會繼承這個污名的應該是 MongoDB)。

是說因為以前一直都在用 MySQL,根本不知道 Window functions 是什麼,第一次用 OVER (PARTITION BY ... ORDER BY ...) 反而是在 Apache Spark 裡啊(SQL 俗)。

延伸閱讀:

modern-sql.com

Redis in Action

上禮拜花了一點時間研究 Redis 的 RDB/AOF persistence 和 Master/Slave replication 的原理,發現除了官方文件之外,Redis in Action 這本書寫得也非常詳細(雖然有些內容可能有點舊了),但是畢竟是經過 Redis 作者本人背書的,值得一讀。

忍不住分享一下,我上禮拜仔細看了 Redis 4.0 的 redis.conf 之後,才發現現在多了一個 aof-use-rdb-preamble 設定,實測啟用之後可以讓 appendonly.aof 的檔案大小減少 50%,大家有空可以試試。

延伸閱讀:

redislabs.com

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

看了這篇文章我才終於知道 Canary Releases, Blue-green Deployment, Rolling Update 是什麼意思(汗顏)。

qq.com

@fukuball

Muzeum 白皮書

Blockchain Application:初級

這幾個月開發的 Muzeum Protocol 終於要公開發表了(4/24 技術發佈會),我個人最欣賞這個 Protocol 的一點就是授權標準化、區塊鏈化,雖然我們是以音樂為例來架構一個授權應用在 Muzeum 上,但其實任何智慧資產、無形資產都可能可以透過相同的模式架構應用程式在 Muzeum 上。

音樂授權標準化、區塊鏈化有什麼好處?

我們先想像一個情境:當您的創作、電影、遊戲、音樂 Remix 需要其他音樂輔助的時候,要怎麼做呢?首先您需要找到授權人在哪裡,找到之後與授權人談條件,來來回回的合約簽章,最快您可能三個月後可以得到授權。

有些不肖人士可能就想跳過授權直接盜版了,這其實會影響到創作人的收益。

透過 Muzeum Protocol,您可以快速的找到授權位址、知道授權範圍、與授權人快速達成協議,並且直接將授權的收益直接回饋給音樂的授權人,最快可能在幾天甚至幾小時內得到授權並將授權憑證記錄在區塊鏈上,方便到讓人沒有理由說得到授權太慢、太麻煩了。如果說串流音樂的方便性改變了人們聽音樂的方式,Muzeum Protocol 授權標準化的方便性也可能帶給音樂授權生態一個巨大改變。

Muzeum Protocol 雖然由我們提出一個初步的版本,但一切都是希望公開讓大家可以加入修改制定,畢竟這個 Protocol 最終目的是幫助創作人,需要大家一起參與才能更加完善。

未來您有了新的創作,就可以發佈到 Muzuem Protocol,加入標準授權,將授權的憑證記錄在區塊鏈上,保障創作的授權使用得到收益,需要得到授權的人也能快速得到授權,延伸出更美好的創作甚至是商業應用,帶來雙贏的局面!

medium.com

Turning a MacBook into a Touchscreen with $1 of Hardware

Machine Learning:高級

怎麼讓 Macbook 的螢幕變成觸控螢幕呢?本篇文章作者示範了只花 1 美元就可以將 Macbook 升級成觸控螢幕!原理就是利用鏡子跟影像辨識!個人覺得很有趣啊!大家如果也想動手自己玩玩看的話,作者也有把程式碼開源在 GitHub 喔!

anishathalye.com

Hallucinogenic Deep Reinforcement Learning Using Python and Keras

Machine Learning:高級

今年三月 Google Brain 發表了 World Model 這個有關 Reinforcement Learning 方法的論文,我是有看沒有懂,大體的概念是 Machine Learning Model 可以在夢中自我學習嗎?有這樣的想法是來自於人類的思考方式,人類在學習一項技能的過程中也會有在腦中模擬真實環境藉以自我學習的方式,這個 World Model 就是要賦予 Machine 這種能力。

概念上模型可分為視覺模型、記憶模型及控制器模型,視覺模型訓練以最小化輸入圖像與輸出壓縮圖像的差距,即是讓 Machine 具有圖像識別能力。記憶模型則是以壓縮圖像以及所採取的行為作為輸入,訓練 Machine 對未來的判斷。控制器模型則用以訓練 Machine 對未來所採取的行動,是否會讓遊戲可以繼續或是 Game Over。

有了記憶模型及控制器模型,基本上 Machine 可以自己建立虛擬環境形成自己的 Play Ground,並讓自己在這個 Play Ground 中繼續學習,這也就是 World Model 中所謂的在「夢中」學習。說實話,這有點像漫畫醫龍裡面的朝田龍太郎在腦中模擬動手術那樣啊!蠻酷的!

本篇文章也有帶大家一步一步訓練、運行 World Model,大家有時間不仿自己跑看看喔!

medium.com

工商服務

PyCon Taiwan 2018 熱烈售票中!

PyCon Taiwan 為一年一度由愛好者舉辦、討論並提倡使用 Python 程式語言的會議,聚焦在 Python 技術與其多樣的可能應用的交流。我們歡迎所有對 Python 有興趣的朋友一同加入 PyCon Taiwan 來分享所學、交換想法、並且認識更多同好。

pycon.org

工作機會

Senior Backend Developer at Swag

薪資:年薪新台幣 100 萬元以上。

基本條件:

  1. In-depth knowledge of Python or Node.js
  2. Experience with Python web frameworks, ie. Flask/Django/Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of MongoDB, Redis, and Kubernetes
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

104.com.tw

Random Cool Stuff

HTTP codes as Valentine’s Day comics

這篇文章用漫畫的方式介紹了各種 HTTP status code,有點太可愛了。

@vinta 分享。

medium.com

Otaku is the New Sexy

Monty Python's Flying Circus on Netflix

各位觀眾,Netflix 上有 Monty Python's Flying Circus 了!不知道 Monty Python 是誰的,我們在 Issue 6 有介紹過!

@vinta 分享!

netflix.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.


CodeTengu Weekly 碼天狗週刊 - Issue 126 CodeTengu_Weekly_20180507_最終版_v3.zip - May 7th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

偶爾致力於解決開發者之間的資訊不對稱

@saiday

Embedding Kotlin Playground

有看過 Kotlin 文件 的人應該都被它那個可以直接編輯跟執行的 embedded playground 驚豔過。

現在你也可以嵌在自己的頁面了,除了手動加入 <script> 外,也有提供 WordPress plugin。JetBrains 也表示他們會提交 Kotlin Playground 到 Embedly,而因為 Medium 是用 Embedly 來整合嵌入內容,所以到時候 Medium 也就可以用了。

目前支援的語言有 JavaScript, Kotlin, Java

Kotlin Playground demo

jetbrains.com

Modular iOS: Strangling the Monolith

沒想到會在 iOS 開發看到 Monolith 這個詞。作者想要把一個 iOS app 根據功能拆成不同的 project 再用 workspace 整合起來,就像是隔壁棚的 Microservice 那樣,哇,這個夠創意!

這個系列實在很特別,用這個角度去看 project 的設計,會重新認識一些東西。

theappbusiness.com

Structure of a Flask Project

作者發現很多人學 Flask 會參考 DigitalOcean 的這篇 How To Structure Large Flask Applications。而這篇有個不好的示範,在 root __init__.py 就 import 了其他 package 會用到的 module 來建 instance,package 再從上層 import 來用,這樣發展下去就容易有 cyclic dependency 的可能。

這篇在談的主要概念其實跟 Flask 無關,只是 Flask 沒有預設的 project folder structure,會需要知道一些觀念跟 best practice。文章列舉了兩種 folder structure 的建議,以正視聽。

lepture.com

@kkdai

GopherConSG 2018 所有演講錄影

GopherConSG (Singapore) 2018 的全部錄影內容,前兩天才結束的 GopherConSG 2018 總算有錄影內容了.

幾個重點推薦:

youtube.com

Google 官方的 Kubernetes Podcast 上線啦....

如果你跟我一樣,喜歡在通勤時間聽聽科技 Podcast .

那麼你不能錯過這個在 KubeCon EU 2018 公布的官方 Kubernetes podcast.

為何會到現在才有官方的 Kubernetes Podcast? 因為其實一開始 Kubernetes 這個題材都是放在 Google Cloud Platform 的 Podcast 之中. 但是隨著市場越來越大 (AWS EKS, Azure AKS 的上線) ,其實還真的蠻需要有個專門討論 Kubernetes 的地方.

第一期找來的 Kubernetes Community Head - Paris Pittman 來討論,大約的議題如下:

  • 身為 Community Head 的責任.
  • Kubernetes 社群各種討論管道
  • 並且討論 Kubernetes 許多功能是如何在社群裡面決定

蠻多有趣的內容

kubernetespodcast.com

Prometheus 2.0

KubeCon/CNCF EU 2018 keynote : Prometheus 2.0 announcement

重點整理:

  • 更好的 TSDB 支援
  • 更低的 (接近 1/2 ) CPU/MEM 消耗
  • 監控的 process 如果死掉,會加上 termination marker

sched.com

Google 開源他們內部在使用的 container runtime 具有 user space sandbox kernel

五月的各大科技論壇開始了,遠在歐洲的 KubeCon EU 最大的新聞就是 Google 開源了他們的 user space sandbox kernel container runtime "gVisor"

針對了 container 安全性比較疲弱的缺點, Google 開源他們內部使用許久的 container runtime .

補充:

  1. 如果 gVisor PM 的講解還不是很清楚的話,可以看看 Ian Lewis 所講解的 gVisor 針對安全性提升的 demo

googleblog.com

Open Source at Google Cloud Platform with Sarah Novotny | Google Cloud Platform Podcast

最近聽的另外一個 Tech Podcast: GCP Podcast

採訪的人 Sarah Novotny 職稱相當有趣,叫做 "Head of Open Source Strategy for Google Cloud Platform"

這個職稱要負責管理 GCP 相關元件的開源策略,並且要幫忙經營相關的開源並且讓公司能夠透過開源來獲利.

這個人同時也是 Kubernetes 開源的推手與策略管理的頭,這邊採訪同時也討論到 CNCF 相關運作 (Sarah) 同時也參加 CNCF 相關會議與運作.

想知道 Google 內部如何透過開源來賺錢嗎? 這篇可以聽聽看

gcppodcast.com

@allanlei

Kubernetes on Digitial Ocean

Digital Ocean has taken notice of rise of Kubernetes and is now also planning to offer it as a service. This is great news for companys who are looking to cost save or developer just wanting to startup a basic cluster without breaking the bank. $5 for 1CPU,2 5GB disk, and 1TB bandwith is pretty hard to beat. Combine it with their other offerings like Load Balance, Spaces, Block Storage and its quite hard to beat.

Hopefully Digital Ocean gives the big cloud providers a run for their money.

PS: They are open for early access. Go sign up!

digitalocean.com

Integrated Geolocation on Google Load Balancers

Google introduced support for custom HTTP headers on their load balancers and provide some pre-defined variables, notibly geolocation related headers such as client_city_lat_long for latitude, longitude. With this, backend servers no long need to load a large (and probably licenced) database to resolve an IP address.

google.com

kubectl port-forward to non-pods

It's finally here! Port forwarding to something other than a pod. As of 1.10, you can forward to Pods, Deployments, Services, almost anything with a selector. All that is left is binding to something other than localhost.

kubernetes.io

工作機會

Senior Backend Developer at Swag

薪資:年薪新台幣 100 萬元以上。

基本條件:

  1. In-depth knowledge of Python or Node.js
  2. Experience with Python web frameworks, ie. Flask/Django/Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of MongoDB, Redis, and Kubernetes
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

104.com.tw

Random Cool Stuff

Stack Overflow for Teams

Stack Overflow 的新服務,應該是極少數在技術部門導入但不用訓練成本的工具了吧

@saiday 提供

stackoverflow.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 127 草東沒有權限 - May 14th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@chiahsien

The Laws of Core Data

Dave Delong 最近寫了一篇文章說明要怎麼「正確」使用 Core Data,可說是字字珠璣句句血淚,在他的 Twitter 上也有一連串的討論,有在用或是打算要用 Core Data 的人一定要看看。我覺得最重要的就是第一條:「Do not use Core Data as if it were a database, Core Data is an “object graph and persistence framework”」。

話說回來,很多時候你並不需要 Core Data,或者你需要的其實是資料庫,那你就有很多其他的選擇,例如 FMDB 或是 Realm

davedelong.com

Dealing with Dates

除了 Core Data 之外,另一個時常困擾 iOS 開發者的難題大概就是日期處理吧。這一篇文章很詳細的說明了什麼叫做「日期」,它有哪些重要的元素,以及要如何正確的顯示、計算、傳遞日期。

martiancraft.com

Wrestling with a Monstrous Xcode Project – GO-JEK Product + Tech

如果你不知道 GO-JEK 是什麼的話,我建議你先看過這篇詳細的介紹,然後你就會明白 GO-JEK 是怎樣的一個龐然大物。因為它的業務觸角太龐大,加上日積月累的程式碼,GO-JEK 的專案編譯一次要耗掉 30 分鐘。為了解決這個讓人難以接受的問題,它們對程式碼進行重構,最終的結果讓編譯時間降低到只有三分鐘,整個架構也變得更有彈性。

gojekengineering.com

Delegation in Swift — Swift by Sundell

Delegate 算是 iOS 開發最常見的設計模式之一,它定義了一個委託人與被委託人之間的一對一關係。Sundell 的這篇文章解釋了 delegate 跟 closure 各自的優缺點,最後還引進了 configuration pattern 來簡化程式碼。我推薦可以同時閱讀這篇 Swift Optional Protocol Methods,會對為什麼要引入 configuration pattern 有更深的理解。

swiftbysundell.com

Controlling chaos: Error Handling in Swift 4 with do, try, catch, defer, throw, throws, Error, and NSError – iOS Brain

一篇很長很長很長但很有參考價值的文章,說明在 Swift 4 該如何處理錯誤。我們寫程式時應該隨時考慮到錯誤處理,這會讓日後的維護少掉很多麻煩。

iosbrain.com

@uranusjr

Go: the Good, the Bad and the Ugly

本週的專題是抱怨 Go。不是說 Go 很差 —— 它的設計團隊裡有很多實力高超的人,設計上很漂亮,也有不少很棒的想法。它的問題是和 Google 過度耦合,使得一些根本的概念上就有偏差,並且資源過度集中在「Google 需要」的改良,而不是「讓這個語言更好」的方向。

這篇大致上就是列出了作者覺得 Go 好、不太好、很差的點。如果你對 Go,或者語言研究有興趣,文章裡的細節很值得一讀,不過我想另外講一個,就是如果你看文中列出的章節,就會覺得這些優缺點都有跡可詢。Google 想要讓員工能快速上手,學完就能做出貢獻,而且做出來的產品有一定水準,所以 Go 十分易學,強調執行速度,且有完整的標準庫,尤其對多工、檔案處理、網路處理的功能特別完整。另一方面,套件管理?不需要,因為 Google 內部是用 monolithic repository,所有函式庫都在你的 code base 裡。客制範型?不需要,因為我們有用到的都內建了,不會有其他需求。社群就是 Google,其他人? ¯\_(ツ)_/¯

Go 有許多很好的設計,但是如果你想做的事情和 Google 不完全一致,就註定要撞牆。比起例如 Rust 和 Swift 之類,雖然他們後面也是有 corporation backing,但是 Go 社群就有點孤兒感。

bluxte.net

Go 有 Generics,只是 Google 不想給你用

最常聽到 Go 開發者和擁護者對 Go 沒有 generics 的辯護就是這是個 design choice,雖然主流語言有這個東西,但我們覺得這其實不好,所以你應該用 OOXX 取代。喔是喔,那為什麼 Google 搞到最後還是自己實作了一樣概念的東西,只是因為沒有語言支援,然後用 preprocessor hack 進去 ¯\_(ツ)_/¯

(我沒研究,不過聽說 Kubernetes 裡面也有類似的 code generation tool。)

github.com

If you look closely, those aren't angle brackets

另一個(不是 Google)用 preprocessor hack「解決」generics 問題的人。他在 Reddit 上分享了怎麼平行化 Enjarify 的文章,被問了這個問題:

不好意思,可以為我解釋一下這個 Go 語法嗎?

type ImmutableTreeListᐸElementTᐳ struct {

我以為 Go 沒有 generics?

以下回答:

確實沒有。這是一個模板檔案,我用搜尋取代來產生三個單形 Go 檔案。

如果你仔細看,那其實不是三角括弧,而是來自加拿大原住民音節文字區塊的符號,Go 允許在 identifiers 使用。以 Go 的角度而言,這就是一個很長的 identifier。

如果你為人類制定過於嚴苛的規則,只會促使讓他們發明出更糟糕的方式達到目的 ¯\_(ツ)_/¯

reddit.com

Notes on structured concurrency, or: Go statement considered harmful

當然 Go 也是有優點,其中 go syntax 也是不少人會舉出來的例子。不過它似乎也不是那麼好。用一個關鍵字切換 synchronous/asynchronous 實作確實是個很好的語言特點。問題在於,Goroutine 並不只是 concurrent,而是 parallel —— 被 go 的函式會與接下來的程式平行執行,而非一般語言 async-await 的(單執行緒)異步。

在這篇文章中,Python 套件 Trio 的作者試圖解釋,為什麼它使用了一個叫做 nursery 的概念。用 Trio 的說法

[Y]ou can’t start a child task unless you’re prepared to be a responsible parent.

go 語法加上 channels 的管理模式(順便澄清,為 channels 提供語言層面整合是優點無誤),在本質上就和 callback-based concurrency 程式一樣,是類似 goto 的概念。這代表你的程式流程會在各區塊之間跳轉,而非線性。不論是 go 還是 async-await,都是為了解決邏輯不斷跳轉而產生;在單緒異步中,因為一次還是只能做一件事,問題就此解決,但是 go 由於隱含 parallelism,就變成解決了邏輯上的線性,卻犧牲執行上的線性。

vorpus.org

@drumrick

2018 Google I/O 發佈的 100 件事

本週 2018 Google I/O 強勢登場,如果你跟我一樣沒有熬夜看轉播沒有關係,Google 台灣官方推出懶人包,連標題都相當農場,看到有興趣的主題,再去播放清單找來看就好了。ProductHunt 的 Twitter 幽默地改了一張圖來總結這次 2018 Google I/O。

googleblog.com

Facebook 2018 開發者大會

除了 Google,月初 Facebook 也舉辦今年的開發者大會,在人工智慧方面也有諸多進展。

  • PyTorch 1.0 發佈:四月就傳出 Caffe2 併入 PyTorch,如今 PyTorch 1.0 挾著 Caffe2 以及 ONNX 登場,力求從 prototype 到 production deployment 能一條龍完成。在 production deployment 方面,一直都追不上 TensorFlow EcoSystem 也是 PyTorch 使用者一直以來心中的痛。
  • PyTorch 1.0 也包含了一些語法上的變更、更好的 Windows 支援、以及開源的 ResNet3D 模型和 NLP 套件 translate。
  • ELF OpenGo:ELF 是用 PyTorch 實作的強化學習遊戲框架, ELF OpenGo 實作了 DeepMind 的 AlphaGo Zero 以及 AlphaZero,在韓國舉辦測試對弈中取得 14-0 全勝的戰績。
  • 另外,Facebook 用超大量的 Instagram 的圖片以及 hashtag 訓練模型,在 ImageNet 資料集上取得了成績的新高。

除了人工智慧,當然其他主題也是內容豐富,請參考相關連結

facebook.ai

lobe:主打行動 App 的視覺化介面、自動化機器學習服務

在 MLaaS 百家爭鳴的時代,AutoML 已經是基本,從 A Neural Network Playground 開始到 Teachable Machine 已經看到視覺化編輯的可能,只是介面還是沒那麼人性化。這次看到 lobe 除了完全不用寫 Code 的介面外,還有就是主打可以輸出 TensorFlow / Keras / CoreML 的模型,直接在 App 裡做預測。目前專案在 Beta 封測的階段,可惜我申請了還沒收到邀請,後續有機會也會實測看看,先介紹給大家,有興趣的也可以申請嚐鮮。

lobe.ai

CatBoost vs. Light GBM vs. XGBoost

這是一篇由 fast.ai 創辦人 Jeremy Howard 所推廣的廣告文,雖然我們處在 Deep Learning 稱霸的時代,但有時候 boosting 還是很好用的,它不用 GPU,而且它快。作者用 CatBoost 參加 2018 Woman in Data Science Datathon 獲得前十名,不過因為比賽已經關了,所以文中的資料是用 Kaggle 上另一個飛機延誤時間的資料集。都說是廣告文了,結論當然是 CatBoost 效果好訓練時間短,可以納入未來做 Boosting 的新選擇。

towardsdatascience.com

IKEA 演算法說明書

一個有趣的小網站,用 IKEA 說明書的風格,解釋演算法的過程,目前只有八個演算法,希望未來會越來越多。

idea-instructions.com

工作機會

Senior Backend Developer at Swag

薪資:年薪新台幣 100 萬元以上。

基本條件:

  1. In-depth knowledge of Python
  2. Experience with Python web frameworks, ie. Flask, Django, or Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of MongoDB, Redis, and Kubernetes
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

104.com.tw

iOS Software Engineer at EscapeX

薪資 - 65000~100000 x 14,還可以談更高

福利 - 到職第一年即享有 7 天特休假 (依到職比例給假),到職滿一年即享 10 天特休假 - 團體保險、健康檢查、員工旅遊、公司聚餐

要求 - 熟悉 Objective-C 或 Swift - 熟悉 iOS 開發常用的 libraries 跟 tools - 三年以上工作經驗

加分 - 有想法並且能清楚表達想法 - 不用字幕可以看懂 WWDC 或其他 Conferences 的影片

mit.jobs


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 128 聽說桐島 rm -rf /* 了 - May 21st 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@mingderwang

React Binding Patterns: 5 Approaches for Handling `this`

寫 React 的人,除非你還在用 React.createClass,否則你必須自己把你的 function bind 到 this。或用 ES6 改寫 arrow function,不外乎本文中這 5 種寫法。

freecodecamp.org

Putting EU Citizens in Control of Their Data

再過幾天 May 25, 2018,歐盟在 2016 年底公吿的 GDPR (General Data Protection Regulation) 即將生效。即使你的網站沒有涉及到歐洲用戶,如何正確收集或處理網路上個資,是每ㄧ位開發者都應該正視的問題。

Aleksandar Todorović 指出,GDPR 施行目的是要 “focuses on ensuring that users know, understand, and consent to the data collected about them,” 讓使用者更清楚了解與同意被網站或手機軟體所收集的資料。表面上是對公司的規定,實質上是要喚醒每個人要回掌控自己資料的權益。也藉此讓公司重新思考,以最少資料為原則來收集客戶資料。想要了解更多 GDPR 相關資訊,可以參考 https://eureka.eu.com/gdpr/

medium.com

Someone in 2010 bought 2 pizzas with 10,000 bitcoins — which today would be worth $100 million

"Bitcoin Pizza Day" 快到了!!! (May 22)

對了,COSCUP 2018,Blockchain track,也正在 call for papers,5/25 截止喔。歡迎投稿,請註明「投給 "Taipei Ethereum Meetup" session」。

businessinsider.com

"Ethereum interests me because it can do things and because it's a platform."

Apple 的共同創辦人 Steve Wozniak 前幾天在維也納舉辦的 WeAreDevelopers 大會中,面對 5000 多名開發者,把 Ethereum 比喻成跟 Apple 一樣,它是一個 "平台",造就未來網路上互信的平台。大家因此可以在上面寫程式,直接做交易。有興趣看原文者,可以在此 YouTube 連結,從約 7:30 分處開始看起。

CodeTengu Weekly

@yhsiang

A Guide To The State Of Print Stylesheets In 2018

很實用的一篇文章,作者是 Rachel Andrew,各位都知道 CSS Grid 的話,應該有看過她的 Talk

前半段再讓你思考,為何你的頁面要加上適用列印的 style,後面則是一步一步提點會需要用到那些 CSS 屬性。

對於需要用網頁呈現發票樣式的您,可以好好閱讀這篇,相信會收穫滿滿。

smashingmagazine.com

Data-Forge

一套受到 Panda 跟 LINQ 啟發處理資料的 JS 套件,API 看起都蠻好懂的,也有 DataFrame。

有興趣的可以看一下 GuideKey concepts

data-forge-js.com

Moving Fast and Securing Things

介紹 Slack 怎麼做安全開發生命週期,並且開源了他們的工具 goSDL

一個 PHP 的網頁應用,需要回答一些問題,之後就幫你自動開好追蹤的票,不過只支援 JIRA 跟 Trello。

有用這兩套和 Slack 的朋友們,可以玩玩看這個開發工具。

slack.engineering

Reasonable Form Handling

用 ReasonML 為例子,講解 Form Component 中會需要做得事情,像是 Validation 跟 Form data management。

一步一步教你做出 Form Validation,還有 Form component。

當然其實已經有些 ReasonML 的套件你可以參考,ReFormFormality.

medium.com

The G-Unit Stack: Go, GraphQL, and gRPC

用 GraphQL 作為 API Gateway 透過 gRPC 跟後面的其他服務溝通。

直接看 code

iheanyi.com

@johnlinvc

Git 底層指令

大家常常用的 Git 命令有哪些呢?add, commit, log, (blame? XD) 這些我們常用的命令其實都是所謂的高階 (Porcelain) 命令,專門給人類使用的。有另外一組專門給 script 用的低階 (Plumbing) 命令,這組命令和 Git 的的運作原理息息相關。對 Git 原理有興趣的人可以看看。

git-scm.com

Git Protocol v2

現在 Git 的資料傳輸協定 (pull, fetch, clone 時候用的)有一些效能上的問題。當 fetch 的時候,server 會回應所有的 ref 資料,當 branch/tag 多的時候就會很慢 (Chromium 有 50 萬個)。新版的 v2 協定只會回應 fetch 相關的 ref 資料,讓速度變快了不少。

不過實作上遇到一個問題,當初沒想過會有一個不相容的新版,所以沒有辦法讓舊 server 相容新 protocol。 後來使用了一個 bug 來繞過這個問題。

這個故事值得讓所有寫公開 API 的人引以為鑑,多加一個無用的版本 prefix/field 可以讓未來的你感謝自己。

googleblog.com

Swift for TensorFlow

Swift 的發明人Chris Lattner 到 Google Brain 工作會發生什麼呢?

當然就是用 Swift 來寫 AI !

Google 開源了一版修改過的 Swift ,內建 TensorFlow。可以自動把 Eager Execution 的 code 變成 TF Graph 來加快運算速度。內建 Automatic differentiation。可以直接 import Python 的 Pandas 等函式庫直接使用。而且有一個 Sound 的 type system,再也沒有打錯字重 train 這回事。簡直就是超棒。

最終目標是 merge 回 upstream,讓普通的 Swift 也可以有這些功能。不過現在還沒有 stable,歡迎大家一起來踩雷。

tensorflow.org

工商服務

Finally, the CfP of COSCUP 2018 is here!

今年 COSCUP 我們很榮幸再度與 GNOME.Asia Summit 合作舉辦聯合研討會,除此之外加上 16 個由社群發起的議程軌及 COSCUP 籌辦的特別軌,讓今年的 COSCUP 平行議程軌數一舉達到 15 個之多,大家選行程又要大傷腦筋!感謝許許多多的社群夥伴協力促使這樣規模的 COSCUP 誕生。

一如往常,COSCUP 徵求各式各樣與自由 / 開源軟體相關的演講,歡迎各方俠女豪傑於 5 月 25 日前透過表單投稿,在經過社群審稿後我們預定於七月初公布完整的議程表。

現在就投稿吧!

coscup.org

工作機會

Senior Backend Developer at Swag

薪資:年薪新台幣 100 萬元以上。

基本條件:

  1. In-depth knowledge of Python
  2. Experience with Python web frameworks, ie. Flask, Django, or Tornado
  3. Utilized work queues for background processing
  4. In-depth knowledge of MongoDB, Redis, and Kubernetes
  5. Excellent understanding of HTTP
  6. Experience developing REST APIs

104.com.tw


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 129 老婆餅裡面沒有老婆,JavaScript 裡面也沒有 Java - May 28th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@fukuball

Hello TensorFlow

Machine Learning:初級

TensorFlow.js 最近終於正式 release 了,在這個到處都是 JavaScript 的時代真是個好消息,想像一下有 TensorFlow.js 的未來,要在前端視覺化 Machine Learning model 或是做一些教學文件就變得更方便了,如果掛上 React Native,也可以很容易地在使用者的 app 上訓練一個與 server 完全分離的 Machine Learning model,多了很多應用的可能性,大家有空真的可以玩玩看~

glitch.me

Fashion-MNIST with tf.Keras

Machine Learning:中級

大家接觸 Machine Learning 應該都會練習過 MNIST 這個經典的手寫數字分類問題,Fashion-MNIST 則是一個衣著類型的分類 dataset,本篇文章展示了如何使用 Fashion-MNIST 來訓練一個衣著類型的預測模型,好的 dataset 值得分享啊!

medium.com

To Build Truly Intelligent Machines, Teach Them Cause and Effect

Machine Learning:中級

本篇文章是關於圖靈獎得主 Judea Pearl 對於人工智慧的一些反思,如果懶得看英文也可以看看中文相關文章,其實目前的 Deep Learning 大爆發都是關於特徵之間的關聯性的曲線擬和,需要大量的資料來確認關聯性,但人類其實可以在很少量的資料下就能達到學習效果,這是目前的演算法還無法達到的,離我們想像中的 AI 非常遠,這也是為何我們會稱這些機器學習方法是「弱」人工智慧。

Judea Pearl 和大部分的人工智慧專家一樣醉心於科幻世界的「強」人工智慧,AI 能夠在環境中自我學習,他主張因果關係的相關方法才是正途,雖然我是不清楚啦,但大家可以看看想想,以目前的所有 Machine Learning 技術到底如何才有辦法在更接近我們想像中的強人工智慧。

quantamagazine.org

TF-rex: Playing Google's T-rex game with TensorFlow

使用強化學習方法(Reinforcement Learning)來讓機器學習玩 Google 的離線暴龍遊戲,是一個了解強化學習方法的很棒的例子,相關程式碼也有開源在 GitHub

github.io

@kako0507

BigInt: arbitrary-precision integers in JavaScript

V8 engine 6.7 版開始 support BigInt ,使用原生的 BigInt 操作將會比第三方的效能快上許多。

BigInt 不能用來表示整數,Number也不能用來表示 BigInt,所以兩者間直接運算會導致 TypeError ,不過 comparison operators ( === 、 > 或 >= 等等 ) 則不在此限。

google.com

isomorphic-git

isomorphic-git 是一個 Pure JavaScript 的實作,可以在 Node.js 及瀏覽器上面執行,不過要注意如果要在前端達成所有功能,還必須先解決 CORS 的支援。

github.com

GraphQL Full Course - Novice to Expert

這部影片會手把手的教學 GraphQL 操作,從 Node.js 以及 GraphQL server ,到 Database ( MongoDB ) 的串接。

youtube.com

@theJian

5 things you can hate about Go

在新晋的编程语言中,Go 可以算是非常特立独行的一位。本文分享了开发者会在 Go 中遇到的五个坑。

jaxenter.com

Web performance made easy (Google I/O '18)

用 Machine Learning 助力 web 性能优化。

youtu.be

MINT

一门与 elm 的定位一样,也是专注于 SPA 开发的语言。 熟悉 redux 的朋友应该会觉得似曾相识。

mint-lang.com

工商服務

Laravel Conf Taiwan 2018: from {{ $idea }} to {{ $production }}

為了讓更多開發者認識 Laravel 框架,並促進 PHP/Laravel 開發者之間的交流。LaravelConf Taiwan 於 2017 年正式成立,以一年一次的頻率為生態圈服務,致力成為台灣最專業的 Laravel 技術研討會。今 (2018) 年 7 月 8 號將擴大舉辦第二屆,大會主題為從想法到實踐,議程主題將以套件生態系為核心,囊括套件開發、測試、部署、效能、資安及上線維運等主題,議程採單日雙軌,搭配套件發表會進行。大會將開放 450 人入場,期能讓更多對 Laravel 有興趣的朋友一同參與。

還沒購票嗎?快到購票頁 https://laravel-dojo.kktix.cc/events/laravelconftw2018 搶票!🤘

laravelconf.tw

Random Cool Stuff

Imaginary Soundscape -β ver.-

相信關於 Deep Learning 的神奇應用大家已經看過很多了,這是最近看到的一個有趣應用,使用 Deep Learning 將 Google Map 上的街景搭配上街景的聲音,如果街景在海邊就會聽到海浪的聲音、如果街景在樹林就會聽到蟲鳴鳥叫,雖然聲音的載入數度有點慢,不過真的蠻酷的,大家玩玩看吧!

@fukuball 分享。

qosmo.jp

Weber's Law - Numberphile

为什么你总感觉小时候时间过得慢?

@theJian 分享。

youtu.be


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 130 中國自古以來就是生產瓷器的大國,近代更是以一種名為「敏感瓷」的瓷器聞名於世 - Jun 4th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@vinta

Write code that's easy to delete, and easy to debug too.

Write code that is easy to delete, not easy to extend. 的最新續篇,同樣非常值得一讀。而且就像作者說的,programming is terrible

延伸閱讀:

programmingisterrible.com

Dimagi's Code Review Policies

在 code review 的時候應該明確地區分出 Merge blockerI personally prefer A over B, but no strong opinion. 這兩種反饋。

在 code review 中發現的問題,如果是會顯著地影響程式碼品質、效能或是可讀性,那的確是需要被修正;但是如果 code review 到後來,雙方一來一往都只是在修改一些無關痛癢的小問題時,reviewer 應該問問自己是不是陷入完美主義的陷阱裡了。在大多數的情況下,其實完全可以先 merge 並部署上線,確認測試完畢之後,再請該作者另外開一個新的 pull request 進行那些優先權沒有那麼高(但是你實在看不順眼)的修改。畢竟曠日費時的 code review 對整個團隊的效率和士氣都不會有什麼正面幫助,尤其當你有同事處在不同的時區或是 remote 工作時。

不過我指的不是 coding style 這種層面的修改,不應該浪費寶貴的 code review 時間在那些程式就可以檢查出來的問題,編輯器 linter 或是 pre-commit-hooks 都是好東西,再不然在 CI 做 auto-format 也行。

其他 curator 也都分享過不少關於 Code Review 的文章,例如:

github.com

Why Scrum is the Wrong Way to Build Software

標題都說得這麼明白了,大家自己感受一下,有什麼想說的話不要憋在心裡。

medium.com

Specify arrayFilters for Array Update Operations in MongoDB

雖然之前一直在嫌棄 MongoDB,但是它的 aggregation 功能其實挺強大的(即便寫起來有點惱人)。除此之外,MongoDB 3.6 才引入的新特性 arrayFilters 也是把 MongoDB 對 array 的更新操作強化了不少,甚至還支援好幾層的 nested array。

mongodb.com

IPFS: The (Very Slow) Distributed Permanent Web

前陣子終於有機會玩了一下 IPFS (InterPlanetary File System),也順手把使用方式和在過程中遇到的問題都記錄下來了,跟大家分享一下。不過說起來,這個技術在好幾年前就開始發展了,但是最近實際試用了一陣子發現還是非常不成熟啊,至少跟他們當初描繪的那個願景相比有很大一段距離。

vinta.ws

@saiday

How to shuffle songs?

「我覺得你們的隨機不隨機。」

這是 Spotify 在 2014 年對隨機播放的研究跟改進,並分享了他們實作方法。

實際上,簡單精美的 Fisher Yates shuffle 隨機演算法就做到了很好的隨機。所以是用戶、產品經理錯了嗎?這些不懂隨機性的人太愚蠢了,以為自己帶著一顆炸彈上飛機就會減小遇到恐怖份子炸飛機的機率。

執著於隨機這個詞的實作與用戶想要的東西是不同的,畢竟,誰想要一個真正隨機的播放列表呢?他們想要的是歌曲被打亂分配。他們想要用不同的順序來聽音樂。

iPod 推出的時候,也遇過這個問題,Steve Jobs 也表示他們改變了隨機算法,讓它不真正隨機,回應了大家的質疑 (And now for something completely random)。

如果你覺得用戶提出這樣的問題是他們不理解隨機,或許是你不懂胖虎。

spotify.com

Sealed classes opened my mind

Kotlin 的 sealed class 是一個很有趣的設計,完全可以把它當成 Enum,那 Kotlin 的 Enum 又是幹嘛的?這又是 Kotlin 務實的地方,為了跟 Java 的互操作性,Kotlin 的 Enum 可以被當成 Java 的 Enum 用。總之,把 sealed class 當成更強大的 Enum 就對了,他跟 Swift 的 Enum 基本上可以當成一樣的東西。

接受了這種 sealed class 導向的概念之後,可能會對你設計的產生化學反應,比方說將有 state 的物件都用 sealed class 來包裝狀態跟對應行為。

最近有感而發覺得 Swift 跟 Kotlin 有了強大的 Enum 就可以取代部分 Visitor Pattern 的使用機會。指的是在一個有限集合下根據特定類別做不同的事情的情況。

codeascraft.com

Making illegal states unrepresentable

Ole Begemann 在討論用 Swift 設計 API 時透過類型資訊包裝狀態,因為你希望其他人在用你的 API 的時候從 method name, input 跟 output 就可以知道這是什麼,要怎麼用,會回傳給你什麼。

Swift 的類型相較 Objective-C 更靈活也更易用,它可以怎樣幫助我們的 API 設計。

文章中舉了 NSURLSession 的 API 為例,他的 completion handler 會帶 (Data?, URLResponse?, Error?) 參數,沒有狀態的包裝。更甚至,在特定情況下你會同時得到 response 跟 error。這樣的 API 設計可以怎樣變得更好?

oleb.net

Lightweight Generics in Objective-C

Apple 在 WWDC 2015 為 Objective-C 引入了 Lightweight Generics,命名帶了 Lightweight 因為這不是一個語言層面的升級而是透過 LLVM 的支持。

這是同事在 Objective-C 的專案引入 Swift 的時候一起引入的,就是為了 Objective-C 跟 Swift 的互操作性。除此之外,使用 Lightweight Generics 也可以讓 Objective-C 代碼更具可讀性和 compiler 的檢查。

我一直到現在才知道這件事,真的是太遜了。

imnotyourson.com

@kkdai

你了解 SRE 跟 DevOps 的差別嗎? 來聽聽 Google SRE 與 Google DevOps 來討論彼此工作的差異吧

你了解 SRE 跟 DevOps 的差別嗎? 來聽聽 Google SRE 與 Google DevOps 來討論彼此工作的差異吧.

這一集的 GCP Podcast 實在太有趣了.而且相當實用.

DevOps 在這十年間被大家廣泛的討論.讓開發與維運工程師再也不是各自工作.而Google 在 2016 出版的書籍 "Site Reliability Engineering: How Google Runs Production Systems" 之後,全球掀起了 SRE 的熱潮.

但是 SRE 跟 DevOps 之間的差異到底是什麼呢? 這段採訪分別請來了 Google 的 SRE 與 DevOps (是的,不像其他公司 SRE 跟 DevOps 只會澤一存在,他們共存在 Google) 來討論他們的工作內容.並且分享他們主要工作價值.

這裡簡單分享一下擷取出來的主要工作價值,也就能了解 SRE 與 DevOps 的差異:

  • DevOps: 讓工程師在工作上能夠高興為最高宗旨.
  • SRE: 讓客戶在使用服務上能夠滿意為最高宗旨.

gcppodcast.com

sindresorhus/awesome: Curated list of awesome lists

最近的 GitHub Trend 前幾名幾乎都是 curated list (俗稱 awesome list)

話說.. 怎麼最近那麼多 awesome 出來?

github.com

An Analysis of vgo

Sam Boyer 身為 另外一套「實驗性質的」套件管理程式 dep 主要開發者之一,對於 Russ Cox 提出的 vgo 一直提出令人深思的意見。

本篇文章(導論)將提出 MVS(minimal version selection) 可能有一些場景不適用。並且提出一個結合 gps (dep 使用的演算法) 修改而成的方向。

一連有六篇文章,令人期待。

sdboyer.io

Google 開源了 user-kernel sandbox: gVisor 讓你更安全地跑你的 Container

Kubernetes Google Podcast: gVisor, with Nicolas Lacasse and Yoshi Tamura.

Google 在 Kubecon 前開源了 user-space kernel "gVisor" ,主要就是要解決 docker container 下太多的 system kernel call 造成 host 相當程度的危險. 於是 Google 做了 gVisor 一個基於 OS 上面的 sandbox 並且全部使用 golang 實作了 2000+ 個 system call (全部 3000+ ).

這篇訪談也討論到,建議以下的人都可以使用:

  • 對於目前自己 Container app 不確定會不會影響到 host 安全
  • 想要將自己 App 從 VM 搬離,但是又怕直接到 container 影響系統安全
  • 想要研究 Kernel code 但是又不想要 K Linux source code XD

很推薦大家聽聽..

kubernetespodcast.com

Uber's Data Platform with Zhenxiao Luo

Uber 來介紹他們的資料處理平臺. 主要是要處理大量的 Nested Structure 方面的資料.

我們都以為 Uber 資料應該都是 Geolocation 的資料, Uber 除了自己的服務外.也將服務提供給其他公司與產品 (Uber Eats ... ) 再這樣運用下,除了一般的地圖資料下,還會加上一些額外的 Nested Structure 資料.

此外在此篇採訪中有提到一個很酷的服務 Presto ,一個可以透過 SQL 的方式來查詢 SQL (MySQL, PostgresSQL) 與 NoSQL (Hive, Hadoop, Cassandra ..) 甚至可以透過 join 的指令來合併查詢跨資料庫層級 (ex: MySQL 與 Hive) 的資料.感覺相當好用.

也有提到一個有趣的東西 Apache Parquet 一個基於 HDFS 之上的資料格式.可以很轉換成 ProtoBuf 或是其他資料格式化文字.

蠻值得一聽的.

softwareengineeringdaily.com

工作機會

Android Developer at StreetVoice

開發與維護 StreetVoice Android app,開發流程包含 Code Review、Unit Tests、CI/CD。經驗不限,希望你是喜歡在工作上做技術決定的人。

你會接觸到:

  • 音訊串流
  • Unit Tests
  • SQLite, Realm
  • DSP
  • Kotlin

聯絡方式: stan@streetvoice.com

104.com.tw

Otaku is the New Sexy

外行員的海賊王專題

最近睡覺前都在看 YouTuber 講海賊王,忍不住跟大家分享一下,這個男人真的是用生命在看海賊王的。他對漫畫細節的考據和腦補的能力,完全會讓你懷疑你們看的究竟是不是同一部漫畫。

@vinta 分享!

youtube.com

每步都有伏笔!说说《战神》中那些值得注意的剧情和细节

如果你也有玩戰神,一定要看看這篇文章!當然,內含大量劇透~

是說前陣子才玩完戰神,現在接著玩 Detroit: Become Human,反而覺得有點索然無味啊......

@vinta 分享!

vgtime.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 131 We’ve updated our Privacy Policy - Jun 11th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@uranusjr

Inside the Cheeseshop: How Python Packaging Works

PyCon 2018 已經把所有議程的錄影放出來了,裡面有很多好料,大家記得去淘啊。不知道 PyCon Taiwan 什麼時候也能有這種效率⋯⋯不過小本經營就麻煩大家擔當點了,總之盡快。或者你明年說服你公司多拿點錢出來我們就能快一點。

總之我想特別推薦這個 talk,由新 PyPI pypi.org 維護者 Dustin Ingram 簡述 Python 套件管理究竟是怎麼走到現在,以及之後要怎麼繼續。雖然我以前也有講過類似的主題,不過像 The Vaults of Parnassus 我還是第一次聽到⋯⋯我在 Python 界還是很菜,這種歷史有沒有親身經歷還是有差。

我覺得貫穿整個演講的 theme 很棒:Python 套件管理的每個部分,都是為了解決某個問題而被創造,但也各自帶來新的問題。常常會聽到「為什麼 Python 套件管理會⋯⋯」與「為什麼你們又要開發新東西」的疑問,但這兩個問題不僅互為因果,又由於 Python 的各種歷史因素互相嵌套而非常難講清楚。我以後大概很長時間會 reference 這個 talk 來解釋。它對於 pip vs Conda、Pipfile(.lock)、pyproject.toml 的解釋也是我聽過最清楚的。三個不同的問題彼此相關,卻又需要獨立的解決方案,所以有三個不同解法同時在進行。如果你有過「為什麼有了 Pipfile 又需要 pyproject.toml」之類的疑問,這應該能澄清一些疑惑。

另外,如同最後一部分所述,Python 套件管理生態系真的完全、完全是由志願者在支撐。我前幾天剛好有說到(因為 PSF 董事會剛好改選),PSF 不負責進行 Python 的任何開發,所有 Python 開發也是完全志願性質,或者拿其他商業公司薪水。如果你有能力,就請考慮發個 pull request,主動參與開發吧。因為真的你不貢獻就沒有人了。

youtube.com

Pipenv 到底解決了什麼問題?

很多人在討論 Pipenv 的時候也會落入一個誤區,就是並沒有很理解它的所有部份,就根據自己看到的表象進行評價。這可能也是它一開始設計的決定,雖然不是錯誤,但是揉合了太多還不是普遍知識的元件導致。剛好我前幾天也講到這個主題,就一起放上來。希望這樣有釐清一些 Pipenv 定位的問題。

因為這個回應已經太長,我並沒有直接在裡面解釋「為什麼 Pipenv 的 locking 步驟這麼慢」。這有兩個原因。其中一個我有暗示,是因為它做了 pip 沒有做的事情(理論解析依賴視圖),如果你先看了第一個影片,可能猜得到另外一個:PyPI 其實根本不知道套件的依賴關係,所以 Pipenv 在解析時,必須把整個套件抓下來解析一次。如果你依賴的套件本身就很大(例如 Numpy 之類的),編譯時間很長,就會把解析步驟拖得非常、非常久。這是 setup.py 帶來的原罪,在淘汰它之前無法根治(不過我在引文裡有提到,還有一些改善空間啦)。

另外發問人在後來補充了他對 Python 套件目錄與 node_modules 設計差異的感想。確實如他所說,Python 的套件目錄無法處理依賴版本衝突的問題,所以 npm 的設計雖然常常讓人詬病,還是有其優點——我沒有查證,不過或許它本來就是針對這個問題所設計。但是它造成的後果還是太可怕,不值得為了虛無縹緲的假設問題犧牲,所以還是很多人在試圖改良它,而既然 Python 還沒踏入這個棺材,或許也還有另闢蹊徑的機會。Russ Cox 最近為 Go 提出的作法也十分有趣。

v2ex.com

10 Things I Regret About Node.js

說到 npm——Ryan Dahl(Node 的初始作者)最近的講題整個很爆炸。Node 整個太爛所以我放棄了直接砍掉重練!當然 npm 也是他後悔的項目之一。不管它一開始想解決什麼問題,它的設計實在不夠好,尤其搭配 JavaScript 的「極簡風」標準函式庫,更讓問題顯得嚴重。

這個演講就純客觀角度而言,就是非常、非常中肯的批評,而這個批評的來源或許也能讓一些 Node fanboys 正視這個生態系的問題,好好自省一下。就我這個局外人而言,這也是個好好反省 Python 生態系有什麼需要轉換方向的部份;或許我們(還?)不需要把所有東西砍掉重練,不過至少需要不斷前進,甚至得思考怎麼改革一些很根深蒂固的問題(例如那個 G 開頭不能說的名詞),才能不被淘汰。

youtube.com

@drumrick

檢討 ImageNet 以及 CIFAR-10,或是?

最近,在影像分類界地位無可動搖的兩大測試資料集 ImageNet 和 CIFAR-10 紛紛遭到質疑。首先 Google 五月底發論文討論了使用 ImageNet 做 transfer learning 的能力,接著是六月初 Berkeley 跟 MIT 發論文討論了 CIFAR-10 各模型的泛化能力。

Google: Do Better ImageNet Models Transfer Better?
挑了 13 個模型,12 個資料集,分別做 ImageNet Pre-trained Feature、ImageNet Pre-trained Fine Tuned、Train From Scratch 三種情況。說結論,fine tuned 幾乎都能維持相對的水準,少數資料集 train from scratch 會有比較好的結果,但是 fine tuned 花的時間相對少得多。簡單來說,用 ImageNet 表現好的模型做 transfer learning 還是可行的。

Berkeley & MIT: Do CIFAR-10 Classifiers Generalize to CIFAR-10?
這篇的出發點就不是那麼友善,作者們仿造 CIFAR-10 製作資料的流程,自己做了一份小的「CIFAR-10 水貨」,接著拿各個模型來對這個「CIFAR-10 水貨」進行測試,結果,大家的準確率都掉了,有的還掉得離譜。幾位大神見獵心喜,紛紛發表看法,OpenAI 表示之前也在 MNIST 觀察到同樣的情況,Keras 的作者 Francios 更是一連發表了好幾則推特,表達對於目前整個研究界集體 overfitting 測試資料集的情況,應該有更好的改善。

到底是測試資料集真的不適用?或是 overfitting 的模型不應該?至少這兩篇的實驗結果,在各位下次挑選模型的時候,能多個參考。

CodeTengu Weekly

MIT 課程代碼 9.11,零基礎入門人類大腦。

很多深度學習的書,都會留一個短短的章節,簡短粗略地介紹一下人類的大腦是怎麼運作的。兩年前在讀的時候,基本上這段我都跳過,因為當時主流的模型們,都跟真正的腦沒有太大關聯。但目前發展了兩年,各種模型都到了一個瓶頸,未來真的很難說,起碼現在包涵 DeepMind、Hinton 等有一派大師是這樣相信的,最近幾個發表也有這樣的脈絡。所以我覺得在這個時間點,花點時間了解一下自己的腦,也是不錯的。

號稱零基礎的這堂課,因為沒有中文字幕,剛開始還是有些專有名詞要查一下字典,不過因為這些專有名詞頻繁重複出現,久了就記住了。我身為一個真實零基礎的試驗者,到目前來說,課程內容理解還是沒有問題的,一開始問號會比較多,往後看一點就會懂了,真還不懂,就查查資料,畢竟只是初階課程,師父領進門,修行在個人XD

mit.edu

Google 在 Coursera 上面新發表的系列課程

Machine Learning with TensorFlow on Google Cloud Platform Specialization

  • 從課表看來,整個課程大約要 10 週,充斥大大小小的測驗、作業與實作。
  • 課程看似企業訓練導向,注重實際資料與經驗。有些內容會在 Google 買下的另一家企業訓練的公司 Qwiklabs 上面操作。
  • 搭配其他 Google Cloud Platform 的服務,如:Datalab、Dataflow、Dataprep、BigQuery、Cloud Machine Learning Engine
  • 目前只有英文

Google 在自家網站上也開了另一個名為 Machine Learning Practica 不過暫時只有一堂阿貓阿狗的 CNN 小課程。

其他 Google 機器學習課程

coursera.org

在线人工智能学院,微软专业学位课程。

英文總站
內容看來相當全面啊! 課程內容:

  • AI 導論
  • Python
  • 數學概要
  • 數據分析的道德與法律
  • 數據科學概要
  • 機器學習法則
  • 深度學習
  • 強化學習
  • 自然語言處理
  • 語音辨識
  • 電腦視覺
  • 期末專題

azure.cn

數據增強演算法

影像處理方面,已經有好幾個套件寫好各式各樣的數據增強功能,但到底哪些才有效呢?有些數據集做垂直翻轉效果很好,有些顯然不行,例如 MNIST。現在 Google 用這個演算法,教你數據增強哪些該做,效果更好!

googleblog.com

@allanlei

Designing for Kubernetes

Kubernetes offers alot of power to the developer. While it can support a traditional LAMP-style stack, it can do so much more. Understanding the components and lifecycle of Kubernetes can allow the developer to include infrastructure in the design itself.

infoq.com

Full Cycle Developer

Ownership is important. In some companies, design, development, testing and support are different teams. One team passes on their work to the next and feedback is sometimes lost.

Netflix has applied what they call Full Cycle Developer where a developer takes part in all stages of development, from design to maintenance and support. As they have indicated in their write up, it might not suitable for all developers/teams and you must have the proper tools and training available for developers to succeed.

medium.com

What the heck, Python!?

A nice collection of quirks in python.

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 132 帕金森瑣碎定理:一群人會花費大量時間討論無關緊要的瑣事,但是對真正重大的事情至若罔聞 - Jun 25th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@mingderwang

The US startup is disappearing

美國已經不流行 startup 了嗎?從 1985 年新創公司佔所有美國公司的 13%,到 2014 年已經降至 8%。造成這現象的原因,未明 ...(但作者有其見解)

qz.com

工程師視角:什麼是區塊鏈的 Smart Contract?

作者,Yuren Ju,利用 JVM 的概念,說明了 Ethereum Smart Contract 底層的運作原理。他也提到,雖然區塊鏈和 Smart Contract 都還是非常早期的發展,但很期待去中心化的思維,可以回頭來思考我們已經做過的服務,有哪些可以再透過去中心化架構,提出新的解決方案。

medium.com

Beginner’s Guide to Smart Contracts Security (1)  —  Using online tools to do security audit

作者,李婷婷,以實作的方式帶大家如何利用線上工具,找出並解決智能合約資安漏洞的問題。另一個問題 Callstack Depth Attack Vulnerability,還沒公佈解法。如果想要進一步研究什麼是 call-stack attack 的人,可以先看看 Making Smart Contracts Smarter 這篇論文,再試著先解解看問題。

medium.com

Building the 2018 World Cup GraphQL API

最近想當一個快速的 fullstack 工程師,免不了要會這三樣東西。1. 部署用 zeit.now。2. 前端用 next.js 的 React。3. 後端用 prisma (舊名 Graphcool) 的 GraphQL。當然前端不用 Javascript 或 React 還有其他選擇。

以這篇如何製作 2018 世足賽 GraphQL API 為例,可以看到他也是用 now 部署,以及提供 GraphQL API,而非 RESTful API。

註:我所謂的快速 fullstack 工程師,就是不想等 back-end 幫你改 RESTful API,也不想等 DevOps 的 Ops 幫你部署,全部一手包辦。

medium.com

@chiahsien

iPlayground.io

身為一個 iOS/Mac 開發者,你也跟我一樣羨慕國外有那麼多的研討會、感嘆為什麼台灣都沒有嗎?有這種想法的不只是你跟我,還有很多開發者也是這樣想,所以有一群熱血的人就決定要舉辦一個面向 iOS/Mac 開發的技術研討會,現在正在強力徵求講者。

想要分享自身經驗的人,趕快去投稿吧!單純只想參加的人,也別忘了先把日期預留下來喔!

iplayground.io

老司机 x 知识小集 x SwiftGG WWDC 18 专题目录

WWDC 2018 前不久落幕了,不知道各位開發者對這次的感想如何呢?有開始看 session 了嗎?這裡有一份精美的筆記,先看過一遍再去看感興趣的 session 會更好吸收喔。

也有人整理了一份懶人包,內容也是非常齊全!

juejin.im

Changes after WWDC 2018 - App Store Review Guidelines History

每年 WWDC 之後,蘋果的 App Store Review Guidelines 都會更新,開發者們就得留意這次又更新了哪些條款,及早做出相對應的調整。這個網站很清楚地列出本次又更新哪些東西,我最喜歡的是底下這點:

  • Apps now must clearly describe new features and changes in the “What’s New” section of the App Store. Several of the large social network companies have been using a practice where they reuse a generic update text for every release and then enable new features remotely on a per-user basis. This appears to no longer be permitted.

另外,條款還新增了一個 Developer Code of Conduct,看完之後感覺很有趣,難道 reviewer 時常被罵嗎?(是說被罵也不意外啦,誰叫你們 reviewer 的素質這麼參差不齊)

appstorereviewguidelineshistory.com

React Native at Airbnb

Airbnb 算是少數幾個嘗試 React Native 的先驅之一,它們也分享過許多導入的經驗。經過了兩年的嘗試,它們決定要放棄 React Native,回到原生開發的方式。這一系列文章(總共五篇)說明了它們為何要導入、中間踩到什麼坑、為什麼成果不如預期、接下來的計劃等心得,非常值得正在使用或打算使用 React Native 的人參考。

當然,它們的心得也只是一個參考,每個團隊的組成跟運作方式不同,結果也會不同。例如 Artsy 就用得很開心,並且正在全面轉向 React Native 的懷抱。React Native 本身還是很不錯的,Facebook 也很積極的改善它,它們正計畫重構整個 React Native

medium.com

ReSwift in Practice

React + Redux 的架構對網站開發者來說一定不會陌生,但是對 mobile app 開發者來說就不是那麼熟悉了。雖然有 ReSwift 這個框架,網路上看到的討論還是偏少,除了官方的 sample project 之外也很難找到實際使用的心得(我猜一來是使用的人還不多,二來是真的要寫會寫很長一篇,所以大家懶得寫)。本文作者用了一個真實世界比較會遇到的情境作為案例,說明該如何一步步的使用 ReSwift 開發。

我在公司的專案上,也用 Objective-C 實作 Redux 架構,我自己的感想是「不要照本宣科」,有些概念對 mobile app 開發來說有點畫蛇添足。舉例來說我覺得 Middleware 沒任何好處,真的要處理非同步 action 就等非同步結果回傳之後再 dispatch action 就好。另一個相關的例子是不要把任何動作都定義成 action,只有會改動到 state 的才能當作 action。

還有很多心得可以講,不過這樣篇幅就太長了,有興趣研究架構的人歡迎來跟我當同事

medium.com

@theJian

Upcoming ESNext features - Part 1

盘点一些 ECMAScript 新特性的 proposal。除了 pipeline operator,另一个个人很期望的特性就是 pattern matching 了。

nec.is

JavaScript engine fundamentals: Shapes and Inline Caches

Mathias 和 Benedikt 在 JSConf EU 2018 演讲的主题。介绍了 JavaScript Engine 中的一些基础知识,包括 shapes (hidden classes) 和 inline caches。对于想要进一步优化代码的 JavaScript 开发者来说了解 JavaScript Engine 的内部原理是必由之路。

mathiasbynens.be

Using JavaScript modules on the web

ES modules 在主流的现代浏览器中都得到了支持。但这并不意味着你应该摆脱 bundlers 了,考虑到性能继续使用 bundlers 打包是更保险的做法。不过在 development 环境下,切换到 ES modules,简化 transpile 的流程也许能帮助你更好更快的开发。

google.com

Image Inconsistencies: How and When Browsers Download Images

background-image<img /> 两种写法会怎样影响图像文件的下载时机呢?乍一眼应该会觉得 background-image 应该至少要等待 CSSOM 构建完成才能开始下载,而 <img /> 需要的是 DOM。如果再考虑上 display: none 的影响呢?作者观察了不同浏览器各自的处理方式。

csswizardry.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.


CodeTengu Weekly 碼天狗週刊 - Issue 133 帕金森定律:完成工作所需要的時間會被自動延長至所規定的時間上限 - Jul 2nd 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@vinta

Cool New Features in Python 3.7

Python 3.7 在前陣子釋出了,多了不少新功能,大家感受一下。

Dataclass 都出現了,說不定過一陣子 Python 也會有 Pattern Matching 了。

延伸閱讀:

realpython.com

Bash Pitfalls

程式語言地獄的兩座高山,JavaScript 和 Bash!

讀完這份資料才知道原來我們每天都在用一個這麼危險的東西啊!

延伸閱讀:

wooledge.org

@yhsiang

10 Small Design Mistakes We Still Make

值得花時間一讀的文章,可以重新省思對產品的設計。

隨著功能跟死線越來越近,有時候一些簡單的原則反而忘記了,這篇文章的作者提醒了十個我們忘記了的地方。

對照一下,現在產品上那些設計值得改進呢?

uxplanet.org

AWS EKS: Pluggable Worker Node Groups by Terraform

推一篇敝司 smalltown 大大的文章,如果你也有在用 AWS 跟 terraform,可以參考一下這篇文章的做法。

想找 EKS Cluster 在 AWS 上的解決方案,參考 Vishwakarma 吧!

medium.com

Beyond counters  —  Using recompose and RXJS 6 to build a (semi) complex UI

利用 recompose 和 rxjs 做一個 UI 範例。

沒用過的朋友,剛好可以透過這個入門,更了解 recompose 的魅力,還有 rxjs 的實際應用。

在 React 專案中導入這兩個,能讓你的專案的某些部分,語意更精簡,架構也會比較好掌握。

medium.com

Why we moved our GraphQL server from Node.js to Golang

SafetyCulture 的 GraphQL server 從 Node.js 跳槽到 Golang 的心得。

看起來就是比較方便的 schema generator 跟 type safe,還有較少的 memory usage。

medium.com

Should we use React Native?

和 React Native 整合的 Expo 親自出來回應 Airbnb 不用 RN 的事情。

RN 有其優點,還是很適合某些開發情況。但是重要的是評估公司做 App 的目標跟手上的工程師資源。

筆者本身從 React 跳到 React Native,要上手的開發速度非常快。不過 Expo 的問題很多,希望之後能看到 Expo 更進步。

expo.io

@wancw

[paper] How not to structure your database-backed web applications: a study of performance bugs in the wild

這篇論文歸納了一些網站開發常見的效能 anti-pattern,如後所列。其中主要是誤用/濫用 ORM 而帶來的影響。如果你使用 Ruby on Rails 開發,可以直接看附圖檢查一下自己的 ORM 用法。

ORM API 使用問題

  • Inefficient computation (IC) - 雖然效果類似,但某些 ORM API 採用比較沒效率的 SQL
  • Unnecessary Computation (UC) - 不必要的計算(如:在迴圈裡 query)
  • Inefficient data accessing (ID) - 如:N+1 queries 或是一次撈太多資料
  • Unnecessary data retrieval (UD) - 撈根本沒用到的資料
  • Inefficient Rendering (IR) - 沒有效率的 view/template 寫法

資料庫設計問題

  • Missing Fields (MF) - 其實可以存下來、不必每次計算的欄位
  • Missing Database Indexes (MI) - 沒有 index

網站設計的取捨

  • Content Display Trade-offs (DT) - 內容顯示方式取捨,如:分頁與否
  • Application Functionality Trade-offs (FT) - 功能取捨,如:很耗計算效能的區塊不一定要每一頁都顯示

所以說,ORM /template engine 用起來很方便,還是得知道它到底做了啥才行啊。

acolyer.org

[書] 魔力 Haskell

Haskell 是我每隔一陣子就會嘗試學習的程式語言(然後總是卡在 category theory 而放棄……)。前陣子買了《魔力 Haskell》,發現讀起來順暢許多。它從實用角度切入、順便介紹相關理論,還有套件系統(Cabal)、常用套件的介紹。

如果你也跟我一樣學習 Haskell 老是遇到挫折,不妨試試看這本。

或者也可以試試看 @thecat 推薦的 Haskell without the theory 。看起來也是從實用角度切入,但我還沒讀過、暫時無法評價。

magic-haskell.com

#推開源

啊!要是我早點知道有這個就好了

應該有不少讀者有類似的經驗吧?

所以 @Ellaeon 在 Twitter 上發起了 #推開源 運動, 歡迎大家一起用這個 hashtag 分享更多有趣的專案吧~

順便幫忙調查:這個主題的實體聚會有人想參加嗎? XD

twitter.com

[IG] Suki Cat (@sukiicat)

照慣例還是要來推薦一個 Instagram 帳號。這次不是美女而是貓,畢竟網際網路就是用來看貓的啊。這貓真是漂亮到讓人驚艷。

是說,好像很少看到這樣一直在外面晃的寵物貓……

instagram.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 134 小明有被駭妄想症,小明是 System Admin,小明很棒 - Jul 9th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@saiday

The Best Career Advice from Dev Chats

分享一下文章裡面 Teach What You Know 的重點。

  • 資深工程師的其中工作內容是要產生更多資深工程師
  • 資深工程師不只是可以拿更高的薪水跟閃避那些枯燥的工作;透過傳遞經驗,團隊才可以成長得更快速

samjarman.co.nz

Getting to know Kotlin’s Extension functions: some caveats to keep in mind

最近寫了幾個 Kotlin 的 extension,覺得自己很 Kotlinic(有這個詞嗎?)。用在了以往會用 Utility static method 的情境跟透過 extension 支援 Nullable Receiver 的特性在那些不得不對 nullable type 檢查並處理的邏輯統一跟易讀。

Kotlin extension 比較值得留個印象的是它是 static dispatch 的,因為是 compile time 加入的語言特性,如果把它當成一般的 dynamic dispatch 可能某一天你會花很久的時間才搞懂你的 function 沒被呼叫是因為這個原因。

放這篇文章是因為他講的 Static vs dynamic dispatching 很易懂,如果上面那一段沒有很清楚的人可以看一下。

medium.com

Android KTX - Android development with Kotlin - Kotlin Expertise Blog

接續 Kotlin extension 的主題。

Android KTXAndroid Jetpack 的其中一部分,Google 這幾年在做 Android 的開發基礎組件這件事做得很認真,一直有在推出新的框架跟 best practice。

Android KTX 全名是 Android Kotlin extensions,實際上就是 Google 幫你寫了一堆針對 Android SDK API 的 Kotlin extension 在不改變原本 API 的情況下透過 KTX 讓你開發 Android 更快速。

Android KTX 簡介
Jake Wharton 在 Google I/O '18 的 Android KTX 主題

kotlinexpertise.com

Handling mutable models in Swift

處理可變動跟未完整的 data model 是開發 client 很常見跟經典的一個問題,透過 Swift 的語言特性我們可能有新的設計選擇。

當你在明確知道這不是 nil 卻為了要應付 compiler 而 guard 或 unwrap 時,表示你 model 的設計可以改進了。

作者提出了一種 Partial immutability + Observing mutations 的方式來設計 data model。

swiftbysundell.com

iOS-factor

致敬 The Twelve-Factor App 的 iOS 版本。The Twelve-Factor App 是針對 web service, SaaS 的開發跟部署的大方向參考手冊。

直接引用他的介紹:

It aims to provide a collection of best practices for building high-end iOS applications. Each topic is covered by a factor, which describes an ideal state of how a certain category of the iOS app development process could look like.

嘿對沒錯,這個計畫又是 @KrauseFx 發起的

ios-factor.com

@johnlinvc

bufferbloat

Bufferbloat 指的是 router 沒辦法好好同時處理大量資料上下載和即時的資料,造成即時的資料(像是線上遊戲)有比較大的 latency (lag)。

可以用 speedtest 測測看自己的 router 有沒有設定好。

這個網站提供了一些處理方法,像是改刷 DD-WRT 之類的。想吃更多雞🐔的朋友可以參考一下。

bufferbloat.net

Sobert : a Ruby Type checker

預計在東京奧運時發布的 Ruby 3 有三個目標

  • Ruby3x3: 在 optcarrot (NES 模擬器) 跑的速度是 Ruby 2.0 3 倍。
  • Concurrency: 加入一個好用的非同步機制。
  • Type Check: 讓不須編譯的 Ruby 能在程式執行前就找出錯誤。

Stripe 用 C++(才夠快XD)寫了一個 Ruby 的 Type Checker,有興趣的人可以玩玩看。 目前還在他們內部使用,等到夠穩定才會開源。

sorbet.run

Black: Python Code Formatter

在Python 這邊,繼 Google 的 YAPF 之後, Facebook 也出了一個 Python formatter,叫做 Black。名字的是來自福特汽車的福特當年說的一句話:

Any customer can have a car painted any color that he wants so long as it is black.

所以和 YAPF 不同, Black 幾乎沒有選項可以調整。讓大家又少了一些在開會時可以討論的話題。

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 135 數到三,我們一起說出這片土地真正的名字:「台灣」「中華民國」「中華台北」「台澎金馬個別關稅領域」「中国台湾省」 - Jul 23rd 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@vinta

The incomplete guide to Google Kubernetes Engine

根據前陣子搗鼓 Kubernetes 的心得寫了一篇文章,跟大家分享一下,希望有幫助。內容包含概念介紹、建立 cluster、新增 node pools、部署 ConfigMap、Deployment with LivenessProbe/ReadinessProbe、Horizontal Pod Autoscaler、Pod Disruption Budget、StatefulSet、DaemonSet,到說明 Service 和 Ingress 的關係,以及 Node Affinity 與 Pod Affinity 的應用等。

順帶一提,就算只是架來玩玩,建議大家可以直接在 Google Kubernetes Engine 開一個 preemptible(類似 AWS 的 Spot Instances)的 k8s cluster,價格超便宜,所以就不要再用 minikube 啦。不過現在連 Amazon 也有自己的 managed Kubernetes 了,雖然目前公司是用 GCP,但是還是比較懷念 AWS 啊~

vinta.ws

Fluent Python

雖然 Python 也是寫了一陣子了,但是每次讀這本書還是能夠學到不少。真心推薦。

當初學 Python 讀的是另一本 Learning Python,查了一下,哇都出到第五版了。

延伸閱讀:

safaribooksonline.com

A deep dive into the Pymongo MongoDB driver

Replica Set 通常是 MongoDB 的標準配置(再來就是 Sharding 了),這個 talk 詳細地說明了 Replica Set 是如何應對 service discovery 以及 PyMongo 和 Replica Set 之間是怎麼溝通的。

延伸閱讀:

youtube.com

Let's talk about usernames

就像我們之前提到過很多次的 Falsehoods 系列,這篇文章也是一直不厭其煩地告訴大家,幾乎每個系統、每個網站都會有的東西:username,其實沒有你以為的那麼簡單。大家感受一下。

作者也提到一個很重要的 The Tripartite Identity Pattern,把所謂的 ID 分成以下三種:

  1. System-level identifier, suitable for use as a target of foreign keys in our database
  2. Login identifier, suitable for use in performing a credential check
  3. Public identity, suitable for displaying to other users

而不要想用同一個 identifier 搞定所有用途。

b-list.org

Web Architecture 101

這篇文章淺顯易懂地解釋了一個現代的 web service 通常會具備的各項元件。不過說真的,如果你今天是一個初入門的後端工程師,你究竟得花多少時間和心力才能摸清楚這篇文章提到的東西?更別提那些更加底層的知識了,喔,這篇文章甚至也還沒提到 DevOps 的事情呢。就像之前讀到的 Will Kubernetes Collapse Under the Weight of Its Complexity?,總覺得整個態勢發展到現在,對新手(甚至是我們這種普通的 1x 工程師)似乎不是很友善啊。

延伸閱讀:

videoblocks.com

@kako0507

ESLint package 被植入惡意程式碼

ESLint 其中一名維護者的 npm 帳號被盜用,並且利用該帳號發佈了夾帶惡意代碼的版本,一但安裝該版本的 ESLint ,會自動從 pastebin.com 下載並且執行程式,竊取 .npmrc 內的資訊。

受影響的兩個 package 以及版本分別是 eslint-scope@3.7.2eslint-config-eslint@5.0.2

eslint.org

JavaScript engine fundamentals: Shapes and Inline Caches

本篇文章是 JSconf EU 2018 上其中一個議程- JavaScript Engines: The Good Parts™ ,會探討以下幾個部分:

  • The JavaScript engine pipeline - 簡單的帶入各個不同的 engine 運作流程
  • JavaScript’s object model - 介紹 object 的 Property Attributes
  • Optimizing property access - 介紹 engines 是如何透過 shapes 有效的存取 object
  • Storing arrays efficiently - 介紹 array element 存儲的方式,避免更動 element 的 property attributes

mathiasbynens.be

Does it mutate 😱

JavaScript 有些 function 會直接對原物件做修改,但 function 執行完也會 return 同樣的物件,在不熟悉的情況下很可能會造成 side effect 。

這個網站列出一些 array 相關的 function ,透過簡單的例子說明執行後是否會直接修改原來的物件。

doesitmutate.xyz

CSS Grid Layout Interface Builder

如果你不熟悉 CSS grid ,透過這個網站也可以簡單的拉出你想要的 grid layout ,並且輸出成 CSS 和 HTML 。

layoutit.com

ECMAScript 2018 (ES9) 正式發布

ES2018 正式定案,主要新增的 features 有:

ecma-international.org

@kkdai

FiloSottile/mkcert: A simple zero-config tool to make locally-trusted development certificates with any names you'd like.

自己要建置 HTTPS Web Server 的時候,最麻煩的就是就算是寫個測試網站也得弄個 CA signed (or self-signed) 就算透過 Let's Encrypt 的來弄也要設定一下. 這個套件強調是完全不需要設定也可以快速讓你建置一個 HTTPS 內部測試用的網站.

小八卦:

Filippo Valsorda 原本是 CloudFlare 專門在弄 cryptography 的大大,但是因為寫了太多相關 Golang 內部 cryptography 的部份而被 Google 找進去在今年加入了 Golang 團隊.

github.com

Learning Go’s Concurrency Through Illustrations

清楚地介紹 Go Concurrency 的部分.從 GoRoutine 到 Channel 的介紹,並且清楚解釋了 Buffered/UnBuffered channel 的差異.推薦大家好好研讀.

medium.com

Golang — vgo vs dep — Dependency Management Tools Explained

Russ Cox 在前幾個月提出的新的套件管理方式,就是將 Golang 引入版本控管的概念.並且開發出實驗性質的 CLI 編譯工具 vgo (等同 go 但是加入版本的概念).

不知道各位開始玩 vgo 了沒? 這篇文章的作者將自己使用的專案從 Dep 轉移到 vgo ,並且提到有遇到的一些問題.如果你還在觀望 vgo 可以看看這篇文章分享的經驗,一定能給你一些對於 vgo 與 dep 的差異點.

spiralscout.com

Go in 2018 - The State of Developer Ecosystem by JetBrains

JetBrains 2018 Developer Ecosystem Survey 與 Go 有關的幾個有趣數據:

  • 最多人用的套件管理: dep
  • 最多人用的 Web 框架: gin
  • 最多人使用的測試套件: 內建 testing

jetbrains.com

Let’s celebrate Hugo’s 5th birthday

Hugo: 使用 golang 建置的部落格文件管理系統。 他強調的就是編譯文件(將 markdown 轉成網頁)的速度超快。(跟另一套知名的系統 Jekyll 相比)

現在隨著系統開發來到第五年,版號也來到了 0.42 之後。作者團隊發布這篇文章,並且宣布 1.0 也在完成最後兩個主要功能(更快 render engine 與插件管理)後將要發行。真令人期待。

gohugo.io


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 136 溫馨提醒:程式是照你寫的跑,不是照你想的跑 - Jul 30th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@chiahsien

How To Prepare For A One-on-One Meeting As a Manager

你們公司有在定期做 one on one 面談嗎?就我所知並非每家公司都有這個制度,但我真心覺得定期有個 one on one 是件好事。可是 one on one 之後,另一個問題就來了:要談哪些東西才好?這一篇文章提出了一些建議,雖然標題說是寫給 manager 的,但我認為對參與面談的雙方都很有參考價值。

knowyourcompany.com

meituan/EasyReact: an easy-to-use reactive programming framework

越來越多人開始接受 functional reactive programming 的概念,在 iOS 的世界最常見的就是 ReactiveCocoa 跟 RxSwift 這兩套函式庫。美團算是在中國很積極導入 ReactiveCocoa 的公司,不過它們覺得 RAC 的概念還是太複雜,要 debug 的時候也不是太容易,所以在大量借鏡這些函式庫之後,它們造出了這套 EasyReact。

根據它們的測試,效能比 RAC 好,debug 也比較方便。我看了一下,最常用的幾個操作都有支援了,有興趣的人倒是可以嘗試看看!

github.com

Number42

Number42 的部落格,寫了一系列關於 Better iOS Project 的文章,每篇都值得看過一遍。可以參考別人的做法,看是否有值得借鏡的地方,讓自己的 iOS project 更好維護。

number42.de

RxCoordinator: Reactive navigation library for iOS based on the coordinator pattern

Coordinator 一直是我很喜歡的一個 pattern,在大一點的專案裡頭我都會用它。這一個 library 把 Coordinator 跟 Rx 結合在一起,無論你有沒有用到 Rx 都可以參考一下它的思路,蠻有趣的一個概念。

github.com

@uranusjr

Uvicorn: The lightning-fast ASGI server.

如果你還不知道 ASGI,這是 Python 社群活用 async-await 語法,使得 web 程式能夠使用這些異步功能的的新協定,計畫用來取代現有的 WSGI。Uvicorn 是由 Django REST Framework 作者 Tome Christie 開發的一個 ASGI 實作,如名稱暗示,與目前使用最廣泛的 ASGI 實作 Daphne 相比,使用了類似 Gunicorn 的介面,並且預設使用 uvloop,達到更好的效能。最近終於支援 Windows 了,對這個有興趣的人歡迎來玩玩。

另外說到 Python 上的 async web framework,同樣由 Tom Christie 開發的 API Star 很可能是領導下一波 API framework 革命的先鋒,之前有介紹過,應該持續關注啊。

uvicorn.org

YAML: probably not so great after all

應該大多數人都有寫過 YAML 設定檔吧,我自己也寫了不少,還為公司的產品寫了一個 YAML parser(遮臉)。這篇文章解釋了為什麼 YAML 不是個好主意,他們聲稱的好處(可讀性、可攜性、符合動態語言型別、有一致的工具介面、易實作易用)根本都沒達到,而又太 expressive 導致問題。

YAML 共同作者 Clark Evans 在 Hacker News 的回應也頗值得一讀。當然在現在看起來 YAML 整個 missed the point,但考量到它其實已經存在將近 20 年(雖然是近十年才因為 Rails 和 Ansible 的關係廣為人知),第一版比 JSON 年紀更長,原始目標是取代 XML 這些因素,它其實做對了很多很多事情。Ansible 的龐大設定雖然嚴重凸顯 YAML 的缺點,但這樣被誤用也不太能說是它的錯吧。

另一方面,如果你現在在想 JSON,原作者也有另一篇文章談到它的問題更大,拜託不要用它寫設定,即使是針對機器互換的設定,都有太多問題。如果你一定要選,YAML 仍然比較好一點,尤其如果你只使用它的 subset,搭配如 StrictYAML 這種比較安全的部分實作,還是有很多合適用途。如果你不介意嘗試新的格式,最近的流行 TOML 更適合人類讀寫,算是頗有潛力(雖然在實作上還有許多需要釐清的問題)。使用它最多的應該是 Rust 社群(因為 Cargo 用它設定 manifest),Python 社群最近也越來越有這個傾向,可以參考 PEP 518 的相關討論

arp242.net

Recreating Python’s Slice Syntax in JavaScript Using ES6 Proxies

Python 的 slice syntax 是個很酷的功能,如果你不熟 Python ,平常的主要語言也沒有這個語法,建議稍微研究一下,應該可以 blow your mind :p

作者想實作一個類似的語法,讓他可以對 JavaScript 寫類似這樣的東西

array[[5, 1, -1]]
array['5:-1']

達到類似效果。為了達到簡潔的實作,他提到了 proxy 和 reflect 等 JavaScript 的新功能,如果你對 JavaScript 黑魔法有興趣,這應該會是不錯的休閒讀物。

不過說實在話,這應該是最中肯的評論:

You shouldn't be allowed near computers.

intoli.com

VirtEnv: Create a virtual environment with venv or virtualenv

最近常常在不同 Python 版本之間跳,常常要重建虛擬環境(特殊理由),覺得要一直在 virtualenv 與 venv 指令之間切換實在很煩。通常我都會盡量用 venv,但是它要在 3.3 以上才存在、3.4 才真的能用(因為 ensurepip)、3.6 才能自訂 prompt,在某些環境還會壞掉,甚至明明應該是內建,但是有些人就是不想給你用,想到都累了。所以我就自己寫了一個 wrapper 來處理這些狗屁倒灶的問題,如果偵測到 venv 會壞掉的可能性,就跳回去用 virtualenv,不用自己記得,而且順便把 prompt 自訂也帶到 3.4 與 3.5。開心。

另外做這個工具有部份的原因也是想整合進 Pipenv。很多人問過為什麼 Pipenv 使用 virtualenv 建立虛擬環境,而不是「官方推薦」的 venv。上面提到的都是原因,而既然 virtualenv 在絕大多數狀況都會 work,現在的做法可以降低維護負擔。不過如果這個實驗成功,要整進 Pipenv 應該不是什麼難事,所以有興趣的話就幫忙測試一下吧,多一個人試用,距離整合成功就更進一步。用 pip 就可以安裝,之後把你原本用 python -m venvvirtualenv 的指令換成 virtenv 就好,很簡單的,爸脫爸脫。

另外如果你對這個 GitHub organisation 有疑問,這是 Pipenv 幾個維護者為 Pipenv 建立的,用來統一管理我們為 Pipenv 開發的低階功能與實驗性質專案。如果你在做某些事情時覺得 Pipenv 太綁手綁腳,可以試著用這個組織下面的專案拼裝,自訂性會比 Pipenv 高很多。

github.com

@theJian

Why Discord is Sticking with React Native

前一阵子 Airbnb 和 Udacity 弃用 React Native 的新闻大家应该还记忆犹新。作为最早一批拥抱 React Native 的团队,Discord 的技术团队分享了他们依然在使用 React Native 的原因。在不考虑 Android 平台的情况下,React Native 在帮助缩小 Web 团队与 iOS 团队间的技术鸿沟上发挥了不错效果。iOS 团队得以重用 Web 端已有的工具以及经验。对于建设像 Discord 这样精致(40 人)的技术团队来说效果显著。

discordapp.com

Operators in JavaScript and Haskell

JavaScript 中一些可以用作奇技淫巧的操作符在 Haskell 中的实现。

typeclasses.com

Essential Chrome Developer Tools: Beginner to Master

Chrome DevTools 的基础使用方法。概述了各个功能的作用和用法。

apsdehal.in

Why is Python so slow?

Benchmark 中显示,Python 的执行速度不仅比编译型语言慢,就连在同类型的解释型语言中都是靠后的。造成这个结果的原因不光和 CPython 本身的实现有关,也与 Python 本身极其灵活的动态类型特性相关。

hackernoon.com

Browsh: the modern text-based browser

字符渲染的浏览器。和 lynx 这类浏览器相比,有更好的显示效果。Terminal 重度用户应该会感兴趣。

github.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

CodeTengu Weekly 碼天狗週刊 - Issue 137 為什麼都要半夜工作,莫非越晚越有靈感?不,不是靈感,我靠的是白天無所事事的愧疚感 - Aug 6th 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容

目前的 curator 陣容:

你也可以關注我們的 FacebookTwitterGitHubOpen Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。

彷彿致力於解決開發者之間的資訊不對稱

@mingderwang

Blockchain Games: The BIGGEST TROJAN HORSE ‘experts’ won’t see coming — (and the startling implications you’d never guess)

本文介紹為何遊戲可以跟區塊鏈結合,區塊鏈遊戲會帶給遊戲玩家哪些跟現在完全不一樣的體驗和好處。另一方面遊戲開發商又能如何利用區塊鏈本身的經濟性,來獲取更合理的分潤。

medium.com

Data's day of reckoning

一個人臉識別的新創公司 Kairos 表示,他們不會與執法公司做生意。他們的首席執行長 Kairos 說到 “在任何形式的執法或政府監視系統中使用商業人臉識別都是錯誤的。” 這是本文提到的例子之一。Google 公司也重新聲明對人工智慧的處理原則 Artificial Intelligence at Google - Our Principles,看得出來未來人類終將要面對這數據的清算日。

因此,在開發或使用 AI 技術的過程中,道德和安全方面的問題更凸顯其重要。未來的生活會更好,還是會變成一場惡夢,都取決於我們自己。

oreilly.com

How to write upgradable smart contracts in solidity !

如何寫一個可以更新新版的智能合約?其實方法很多,而且如果你用 trufflei framework 開發以太坊智能合約,基本上不必自己考慮更新部署的問題,truffle migrate 會幫你搞定。

本文作者利用一個簡單的範例,教你如何實作一個可以更新部署的智能合約。雖然不敢保證它沒有瑕疵及安全上的顧慮,但還是把概念介紹得非常清楚,值得初學者一讀。

medium.com

@allanlei

OpenAI Five

Watching the 1v1 last year during the International 7 was amazing, making some of the Pros think "Is this for real?" This time around, it seems like they are getting ready for team play 5v5 for the Internation 8. It's great to see them target games as its something many people can relate to.

On a infrastructure note, OpenAI is moving from Azure to GCP with a whopping 128,000 CPU preemptive and 256 P100s in the cluster for the play.

openai.com

knative

knative provides the building blocks for serverless on Kubernetes. It is suppose to ease and abstract away the commonly executed tasks so that the end cluster is portable.

Most looking forward to the Eventing System. Instead of listening to something like Cloud PubSub for event changes, listen to a CRD instead, giving the benefit of the listener not needing the drivers for Pubsub.

github.com

toasted-marshmallow - A Faster Marshmallow

A JIT'ed implementation of Marshmallow with support for even pypy and cython. Marshmallow itself is great for handling the serialization/deserialization of data. It also has the added benefit of integration with Swagger based on the schemas defined for serde.

github.com

@theJian

Methodologies for measuring project health

衡量一个开源项目维护状态好坏的一些可能的方法。以 contributors 为指标,我们可以通过几个方面进行评估。从社区吸引用户和保留用户的能力,contributors 中长期贡献者和短期贡献者的人数关系,核心代码贡献者的数量。或者,跳出 contributors 的局限,转而从 pr 和 commits 入手分析。活跃频繁的 merge 也代表了项目的健康程度。

nadiaeghbal.com

10 Common Git Problems and How to Fix Them

10 个使用 git 时常遇到的问题。对于我这种记不住命令的人来说,我的办法是:统统写入 alias

citizen428.net

Call operator vs pipeline

一个对 JavaScript 中的 pipeline operator(|>) 和 call operator(::) 的 pros/cons 的讨论。对于熟悉 FP 的人来说,pipeline operator 应该是很自然易读的。

延伸阅读:

Functional-Light-JS

Class-based Tree Shaking - HTTP203

github.com

Random Cool Stuff

The hotel bathroom puzzle

对于一间拥有两扇分别通往两个卧室的浴室,设计一种方式确保当一方屋主在使用时,另一方无法进去,当无人使用时双方可自由进入。 个人有两个方案: 一种是使用三扇门,另一种是使用两扇滑门,在浴室内通过锁扣将两扇门扣在一起使之无法滑动,从而同时锁住两个入口。

wordpress.com


This RSS feed is published on https://weekly.codetengu.com/. You can also subscribe via email.

Viewing all 109 articles
Browse latest View live