转载

Issue 10 分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次 -...

Issue 10 分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次 -... @vinta

Mastering Django - The NEW Django Book

隨著 Python 在這幾年裡越來越熱門,作為 Python 生態系中最具代表性的 web framework 的 Django,用的人也越來越多啦。前陣子正好就發現有一位澳洲的程序員在 The Django Book 的基礎上專門為 Django 1.8 LTS(Long-Term Support 版本)寫了一本電子書。

我相信一定有不少 Django 的 developers 當年都是看那本 The Django Book 入門的,而這本 Mastering Django 基本上就是 The Django Book 的精神續作。什麼叫「精神續作」呢?大概就是類似「人中之龍」之於「莎木」或是 Torment: Tides of Numenera 之於 異域鎮魂曲 。

然後,雖然跟主題完全無關,但是我還是要說: Fallout 4 會在今年 11 月發售!而且聽說他媽的會有中文版?!

masteringdjango.com

Building a follower model from scratch

Pinterest 的 Infrastructure Engineer 非常詳細地說明了他們如何使用 Redis(沒錯,就是大家的好朋友 Redis)重新打造整個 following / follower 關係模型,主要是利用 Redis 的 SortedSetSet ;也花了不少篇幅講他們的 high availability 方案。

延伸閱讀:

  • Redis in Action << 免費電子書
  • Redis in Action 学习笔记

pinterest.com

Salt Best Practices

SaltStack 是一套以 Python 開發的 configuration management 工具,類似的還有 Puppet、Chef 和 Ansible,這個領域最多人用的基本上就是這四個了。Python 軟體基金會(PSF)、LinkedIn、NASA 和美國國防部都在使用 SaltStack。在 container 相關技術真的普及之前,這些自動化的 configuration management 工具還是很好用的。

這篇文章是官方公布的最佳實踐,有在用 SaltStack 的朋友可以看一下。

延伸閱讀:

  • SaltStack Overview - QuickStart Guide 史上最圖文並茂的入門教學
  • Salt Essentials

saltstack.com

bitmapist - a powerful analytics library using Redis bitmaps (Python)

bitmapist 是一個 Python library,利用 Redis(是的,又是大家的好朋友 Redis)的 bitmap 結構能夠很方便地做到許多統計用的功能,例如:

  • Has user 123 been online today? This week? This month?
  • Has user 123 performed action "X"?
  • How many users have been active have this month? This hour?
  • How many unique users have performed action "X" this week?
  • How many % of users that were active last week are still active?
  • How many % of users that were active last month are still active this month?
  • What users performed action "X"?

而且因為是 bitmap,還可以直接做聯集或交集的運算。

延伸閱讀:

  • Redis bitmaps - Fast, easy, realtime metrics
  • Kicking ass with Redis

github.com

揭開「說服力」的神秘面紗:權威的影響

文章中有提到一個有趣的「說服力訓練遊戲」:

每當我們聽到一段覺得有意思的話,不管是認同還是反感,試著想像,這段話若是出自形象迥異、各式各樣的族群身份之口,我們對此的認同度會否有微妙的差異?去感受這種差異,慢慢地,我們就可以去分辨,話語的力道哪些是來自於道理本身,哪些,則是權威的加持效果。

udn.com

Issue 10 分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次 -... @saiday

App Indexing

如果你的 app 是一個 website service 延伸出來的,或是你的 app 有一個延伸的 website,那麼這次 Google IO 提出來的 App Indexing 一定會讓你很感興趣。網頁上的揭露的訊息有點少,可以看這個影片 App Indexing API 。

簡單來說就是在手機用 Google Search 的時候就讓用戶透過搜尋頁面開啟 app 到對應的結果,超讚的啊。 在 Android 上可以除了可以讓你開啟 app 之外還可以提示未安裝 app 的用戶安裝。

google.com

A small leak will sink a great ship

Square 又一篇警世好文,在 Lollipop 版本之前的 alert dialogs 因為 Dalvik VM 的 bug 導致 memory leak,真的好可怕。裡面有提供修正的方式,我就不多說了。

這篇文很好的示範了可能會造成 memory leak 的 bad smells,如何以 LeakCanary 輔助找 leak、進一步縮小範圍測試的方式跟證明。

squareup.com

iOS 9 开发高级技巧

iOS 9 除了 ATS (App Transport Security) 之外還有我們應該知道的事情,Realm 請 12 位頂尖的 iOS 開發者分享 iOS 9 的心得跟技巧,篇幅都很小掃過一次就了然於心,在開發中適時的使用新的功能及工具對一個開發者是很重要的。

realm.io

How to Use updateConstraints

如何正確地使用 Auto Layout 一直是一個課題,看上去有太多種方法都可行,我們需要更多的知識來幫助我們做選擇。 比方說, viewDidLayoutSubviews() 是在 layout pass 結束的時候才會被啟用,而 updateConstraints() 是在 layout pass 之前。

文章提到,如果你有在 code 裡產生 NSLayoutConstraint 你不應該把初始設定的 layout codes 放在 updateConstraints() ,而只有在你後續動態調整 大量 constraints 時才有必要,因為在 updateConstraint() 裡面的 constraints install / uninstall 是批量完成的與效能相關。 UIViewupdateConstraints() ,可以在任何時候被 view. setNeedsUpdateConstraints() 啟用。

註:雖然沒有相關,但如果你也是自己在 code 中產生 NSLayoutConstraint 的流派,我最近試著用 IB_DESIGNABLE ,可以在 Interface Builder 預覽 code 寫出來的 layout,無論是在 debug 或是多人合作都很有幫助。

Creating a Custom View That Renders in Interface Builder

oleb.net

Git team workflows: merge or rebase?

在多人開發的時候,就不能開心的 這樣 commit 了,留下有意義的 commit log 給你的同事是很重要的。

要合併兩個 branch 你可以透過 rebase 或 merge,大家都知道 rebase 在某些時候可以增加 commit log 的閱讀性但又老是聽人家說很危險,這篇文章給了很不錯的輪廓。

我個人是 commits 還在 local 就用 rebase,已經 push 的除非遇到一個以上的 commit conflicts 或有人已經合併了我的 branch 否則也還是用 rebase,只有在已經開了 pull request 才會用 merge。心情好的時候也會在 push 之前用 rebase -i commit 整理一下,大家可以參考一下 ihower 的 還沒 push 前可以做的(壞)事 。

atlassian.com

Issue 10 分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次 -... @wancw

Git 2.6 重大更新 (GitHub)

每天用的吃飯工具 Git 出新版了,當然要關心一下改了什麼東西。

  1. 更有彈性的 git fsck

    因為 Git Object Model 的關係,fsck 修復後會造成 commit history 改寫。對於已經大量散佈的 repository 來說,這問題可能比 Git object 內容有問題更難處理。從 2.6 版開始,你可以讓 git fsck 略過某些狀況、只修復你希望它修復的部分。

  2. git statusgit rebase -i 過程中會顯示更詳細的資訊,像是這樣:

    $ git status interactive rebase in progress; onto 1e7a542 Last commands done (5 commands done):  pick da6bc48 commit four  edit 12ee9f3 commit five Next commands to do (5 remaining commands):  pick 8262b99 commit six  squash 0f9e8ec commit seven You are currently editing a commit while rebasing branch 'master' on '1e7a542'.  

更多細節在 Git 2.6.0 Release Notes

github.com

Professor Frisby's Mostly Adequate Guide to Functional Programming

函數式編程(Functional Programming)已經是無法阻擋的趨勢,各家語言都不斷引入支援。但 多數教材都以純函數式語言為例子,門檻較高。光是要搞懂 Monad 才能做 I/O 就足以嚇跑一大票人。

這本書挑了目前最熱門也最容易找到執行環境的語言 —— JavaScript 來編寫函數式語言教材就是希望降低入門門檻,讓讀者可以慢慢在實際應用中導入 FP 的觀念。

另外也有取得授權翻譯的簡體中文版 —— JS 函数式编程指南 。

gitbooks.io

以 RxJava 實例了解 Reactive Programming 的優點

多數 Reactive Programming 文章都是跟你說怎麼用,但是不太能直接感受改寫成 Reactive 的好處。這篇文章以例子說明 Reactive 除了潮之外,確實有些實務上的優點:

  • 有效解決重複的 loop 增進效能,維持同個 loop
  • 提前打斷迴圈的能力,避免不必要的過濾與轉換
  • 拉平巢狀 callback 增加易讀性

這篇文章出自 Open Android 的 RxJava 一章,整本書涵蓋了以開源角度開發 Android App 的各種面向,值得參考參考。

gitbooks.io

Good Tech Lead, Bad Tech Lead

這是 Foursquare 的技術團隊領導(Tech Lead)指南,從不同面向點出好壞 Tech Lead 的做法差異。簡單來說,好的 Tech Lead 應該要:

  1. 視自己為團隊一份子、幫忙排除障礙(如減少不必要的瑣事)讓成員可以專心發揮所長

  2. 掌握大局並做適當安排

    • 預見可能發生的問題
    • 了解每個團隊成員的能力與工作狀況
    • 掌握平衡,尤其是「準時完成」與「追求品質」
  3. 溝通、討論:先把時間花在溝通而非編寫程式

    • 參與產品規劃、不是一味接受需求
    • 鼓勵成員間的討論、參與時不帶定見

medium.com

Issue 10 分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次 -...

本週 IG 推薦:董嘉儀

延續 @tzangms 的 IG 主題。

這是我前陣子在 Instagram 上亂逛看到的,似乎是位香港的模特兒。覺得她挺可愛的,希望大家也會喜歡。

instagram.com

正文到此结束
Loading...