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

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.


Viewing all articles
Browse latest Browse all 109

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>