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

CodeTengu Weekly 碼天狗週刊 - Issue 143 Roses Are Red. Violets Are Blue. Unexpected '{' on Line 32. - Oct 1st 2018

$
0
0

Hello World

CodeTengu Weekly 碼天狗週刊

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

目前的 curator 陣容:

本週標題出處

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

@chiahsien

Private properties in protocols

Swift 的 Protocol 是個很好用的概念,但它還在不斷的完善中,也還有不少限制存在,例如不能在 Protocol 裡頭宣告 private property。

作者舉了一個蠻常見的場景說明為什麼這會是個問題,如果是我們自己專案裡頭遇到,或許我們可以跟團隊成員說好「這些 property 不能亂動」,但是一來這樣實在太不保險,而來如果我們是在開發一個 library 給其他人用的話,我們也無法保證其他人會怎麼用它。

所以要怎麼在 Protocol 宣告 private property 呢?作者提供了一個小技巧:用一個中間物件把它包起來。蠻取巧的一個作法,或許你正好需要!

github.io

NSFWDetector: A NSFW (aka porn) detector with CoreML

利用 CoreML 做機器學習,讓程式可以辨識出不雅的圖片。我想到可以用在一個場景:如果你的 app 允許使用者上傳圖片的話,可以用這個套件在上傳前先檢查,節省後續人工檢查每一則發文的成本。

如果你好奇它的訓練資料的話,這裡也有提供 XD

github.com

Access Control Management with Swift

當你的產品功能跟使用者權限有關的時候,你或許一開始會先用粗暴有用的做法,在 User model 裡頭加入一堆 boolean property,然後在業務邏輯的地方判斷 if (user.propertyA) { doSomething(); }

隨著產品逐步變大,你會發現 User model 裡頭的 boolean property 越加越多,業務邏輯要判斷的東西也越來越多,更有可能這一堆權限判斷會散落在各個不同檔案裡。

想想就覺得可怕,是吧?(或許你正在面對這一坨可怕的邏輯?😨)本文作者提供了一個處理使用者存取權限的思路,或許會對你現在或將來有幫助!

medium.com

Swift & Fika 2018

Swift & Fika 是一個在斯德哥爾摩舉辦的 Swift Conference,今年的場次剛結束不久,新鮮的影片就上 Youtube 了,只能說主辦單位真的很有心,不知道中午吃便當的時候要看什麼的話,就來看看 Swift 吧。

youtube.com

@wancw

Don't talk CRUD

CRUD 是資料操作、framework 的基本操作,但它們不應該直接被用在 API、URL 乃至於使用者介面上。

應該盡量採用客戶、使用者的慣用語,也就是所謂的 Domain-driven design。畢竟解決(客戶、使用者的)問題才是開發程式的重點。

codecoding.net

Redis 系列 -- Redis 4.0 深入持久化

網路上能找到的 Redis persistence 文件,多半只介紹 RDB 與 AOF 兩種形式和比較。這篇是少數仔細地介紹了 4.0 新增的 AOF 混合 RDB 形式的文章,而且對 3 種 persistence 形式的使用與運作都有清楚說明。

Redis 4.0 之 RDB-AOF 混合持久化 則進一步從 source code 分析了這種新的 persistence 形式。

cnblogs.com

Towards Natural Language Semantic Code Search

GitHub 已經能做到以文字語意搜尋程式碼了,以後除了 Stack Overflow 又多了一個地方可以找範例程式 來抄襲 了。

懶得看文章的,也可以直接在 這裡 試試看目前的效果。

githubengineering.com

保護專注力

進入專注狀態(或所謂 Flow)是很難的事情,參考一下 othree 如何確保自己的專注力吧。

裡面提到 AshWu 的 如何在 Context Switch 間維持自己的生產力 也是很有參考價值,特別是 管理精力 一段:

調整你的生活作息,讓自己有良好的睡眠品質;養成固定運動的習慣,增強體力;將精力最好的時段保留下來給自己,其他的時間給別人;藉由建立儀式性的行為,讓自己能快速進入高專注的狀態;找到能讓自己快速回復精力的活動;避免把自己燃燒殆盡、而是追求能快速的充電完畢,重返工作。

othree.net

微前端的那些事儿 | microfrontends

我離網頁前端開發的世界已遠,沒想到類似微服務的架構也在前端發生了。

果然 IT 人員就是在不同領域、用不同語言不斷地重複同樣的事情啊

microfrontend.cn

@lucienlee

Use React in Cycle.js and vice-versa

[Frontend]

Cycle.js 是個 functional 及 reactive 的前端框架。第一次聽到他的朋友,你可以暫且非常粗略地把它想像成是個有 view layer 的 RxJS。
Cycle.js 過去以學習門檻高、整合困難而導致少有應用在大型項目的案例。原因在於要開始使用前你必須先掌握 reactive 事件流的思維;而與現有專案整合上,因為他有自己的開發方式/范式,讓你一但使用 Cycle.js ,你就得接受 Reactive for everything 這件事,較難與 react 跟 vue 這樣 view layer 框架直接整合。

作者 André Staltz 16年曾經公開 diss 過 React ,但考量到工程成本與社群發展上,能相互借用對方的積累對整個開發生態是更好的,而如今由於 React 16.4 ContextforwardRef API 的成熟,Cycle.js 與 React 能更無痛地整合在一起,或許是個可以嘗試將 Cycle.js 試在 production 的好時機,因為遇到實在不行的狀況,你還是能借用龐大的 react 社群中各種輪子解決問題。

#工程化的成本包含忍受隔壁的同事說求不更新,學不動了

staltz.com

A comparison between Angular and React and their core languages

[Frontend]

雖然原文主旨談的是 Angular 與 React 的比較,但我其實覺得文中與討論串 JavaScript VS TypeScript 與 Statically and Dynamically-typed languages 的爭論才是全文的亮點。有趣的是,文中提到一篇靜態、動態型別對於開發速度影響的論文。裡頭提到,靜態型別反而有機會因為花時間在修復 type error 而導致開發速度比較慢,從論文中開發時間的分佈圖來看,可以猜想工程師的經驗會影響靜態型別是否拖慢開發速度。

從我個人使用 TypeScript 的經驗來看,的確去熟悉第三方套件內部的型別會需要花更多時間預讀、TypeScript 對多層泛型跟多層 HOC 中的 type error report 目前十分不好讀,容易花許多時間在 trace error 邵,另外在資料 pipe 處理中,如果有結構上的變化,很多時候得很囉嗦地宣告只差一點點的型別。但不得不說,透過靜態型別能提昇程式可讀性,因為型別為封裝的元件提供了接口聲明,能讓工程師整合起來比較方便,重構上也比較不容易寫出預期不一樣的錯誤。

題外話,上文中的 André Stalt 也是堅定的靜態型別派,他也有寫過文章討論過這件事,有興趣可以一起讀一讀

#戰型別語言絕對是百年戰爭, #但還是希望大家寫套件能行個方便補個 .d.ts

freecodecamp.org

Basic Primer: Blockchain Consensus Protocol

[Blockchain]

區塊鏈中最重要的概念在於--如何創造共識,不管是證明價值轉移、資料不被竄改或是合約被公正執行,其背後的概念都是我們如何用技術手段,創造一個取得共識的方法。也因此了解區塊鏈中各種共識方案,是入門的基礎之基礎,這篇文章快速介紹了幾個常見的共識算法,包含 POW, POS, DPOS, dBFT ,有興趣可以延伸了解一下其他沒提到的共識算法

blockgeeks.com

Finite and Infinite Games

[Life]

Finite and Infinite Games / 有限與無限的遊戲,是最近影響我最多的一本哲學書,裡邊提到了世界上只有兩種遊戲--「有限遊戲」與「無限遊戲」,進而引領大家思考世界上各種互動的本質是什麼。這裡擷取幾個片段,讓大家感受一下什麼是有限與無限遊戲:

世界上只有兩種類型的「遊戲」,「有限的遊戲」和「無限的遊戲」。 有限的遊戲,其目的在於贏得勝利;無限的遊戲,卻旨在讓遊戲永遠進行下去。 有限的遊戲在邊界內玩,無限的遊戲玩的就是邊界。 有限的遊戲具有一個確定的開始和結束,擁有特定的贏家,規則的存在就是為了保證遊戲會結束。 無限的遊戲既沒有確定的開始和結束,也沒有贏家,它的目的在於將更多的人帶入到遊戲本身中來,從而延續遊戲。


無限遊戲參與者放眼未來,並不著眼於勝利,而是著眼於繼續比賽,過去將需要被不斷地重新解讀。無限遊戲參與者並不對抗他人的行動,而是發起自己的行動,使得他人能夠發起自己的行動進行回應。


姑且說有限遊戲參與者為了權力(power)而參賽,無限遊戲參與者憑借力量(strength)參賽。

往大的說,這本書能讓你對社會上的競爭博奕有另一種思考;往小地說,你能以一個新的角度來看待隔壁小明遇到的職場鬥爭。而我自己則是從區塊鏈、新創競爭、組織管理上得到許多印鑑的想法,祝大家能認清自己正在玩什麼樣的遊戲,並成為自己想要的玩家。

連結附上的是 Wired 雜誌創辦人 Kevin Kelly 的推薦,有興趣的人可以在買實體書或是網路上找到神祕的 pdf 來看看。

#說起來割韭菜是個有限還是無限遊戲呢?😜

kk.org

工作機會

Senior Backend Engineer at Swag

To apply, please send your resume to vinta@swag.live.

Requirements

  • In-depth knowledge of Python or Node.js
  • Experience with Python web frameworks (i.e., Flask, Django, or Tornado)
  • Utilized work queues for background processing
  • In-depth knowledge of MongoDB and Redis
  • Excellent understanding of HTTP
  • Experience developing REST APIs
  • Designed for modular systems
  • Cloud environment experience
  • Excellent communication and organizational skills

Plus

  • Worked with Python asyncio
  • Experience developing in Go
  • Event-driven architecture
  • Experience working with cluster environments and containers (i.e., Kubernetes and Docker)
  • Development flow utilizing CI/CD 
  • Experience working with distributed systems 
  • Experience working with real-time APIs 

薪資範圍

  • 年薪 100 萬新台幣以上。

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>