How not to get desperate with MVVM implementation

Let’s imagine you have a small project, where you used to deliver new features in just 2 days. Then your project grows bigger. The delivery date becomes uncontrollable, from 2 days to 1 week, then 2 weeks. It drives you crazy! You keep complaining: a good product shouldn’t…

Applying Unit Tests to MVVM with Swift

In my previous article, How not to get desperate with MVVM implementation, we learned the Model-View-ViewModel (MVVM) architecture and saw how to create a simple gallery app by using it. With the help of the MVVM, we separate the business logic and presentational logic from the view logic. The separation…

Nudge - 推出你的影響力

推出你的影響力:每個人都可以影響別人、改善決策,做人生的選擇設計師 這本書在行為經濟學中,佔有一席之地,主要的原因一之,大概是因為它是一本非常容易閱讀的書籍,作者的寫作風格非常輕鬆休閒,也不過份主觀,加上例子都是實際案例,讀起來特別有趣。 Nudge是輕推的意思,在這本書中主要指稱在人們做決策時,很容易受到一些外在因素的影響,而這些外在因素有時候很簡單,可能只是提供更簡化的選項、提供預設選項等等,光是這些簡單的變化,就足以影響人類做出不一樣的選擇。相較於像法律、制度、規範等等如果不跟著照作,就可能無法在這社會中生存,輕推的中心思想是,希望提供人們在選擇上最大的自由,但同時也引導人們選擇專家們認為對他們比較有利的選項,在這本書中,這樣的做法被稱為自由家長制(libertarian paternalism),相對的強制人們選擇的制度,被稱之為家長制(paternalistic)。 整本書大概可以分成兩個部份,第一個部份主要介紹社會大眾是多麼容易被影響,這邊的理論跟快思慢想一樣,人腦在做決策時,通常情感因素占了很大一部份,也就是快思慢想中的系統一總是能夠主導思考。而也是因為如此,在政府推行政策的時候,多少可以利用這個特點,讓政策能夠在不損害自由的情況下被順利推行。第二部份就開始利用許多真實案例,講述選擇設計師如何發揮輕推的力量,讓管理者能夠事半功倍。如果你是崇尚自由意志的人,可能會覺得這樣的作法有點爭議,但回歸到現實面上,…

槍砲、病菌與鋼鐵:人類社會的命運 - Guns, Germs, and Steel: The Fates of Human Societies

這是一本中文版總共有六千多頁的鉅作,由生物地理學家 Jared Diamond 撰寫而成。這本書光是閱讀就花了我三個月的時間(當然中間有交錯看了幾本其它的書換換心情XD),更不用說對於作者來說,要完成這本書需要多驚人的時間。原本對於這本書沒有太大的興趣,以為它就是另外一本後見之明的歷史著作,但是在看完 Harari 的「人類大歷史」之後,覺得雖然歷史很難正確地分析,但是這類旁徵博引、用大量的史料跟研究來支撐論點的著作卻是意外的非常有趣。尤其是「人類大歷史」雖然有趣,但是看完之後還是很想再繼續了解像是東西方差異、近代歷史的癥結點等等,所以又去找了這本書來看。 這本書一開始就先從人類的農業開始講起。人類的農業起源地分布在世界各地,其中以兩河流域的肥沃月彎為最早的農業起源、接著發生在古代中國、新幾內亞然後慢慢遍布到世界各地。但是你有沒有想過,世界各地的農業都是獨立發展,還是從肥沃月彎開始慢慢傳到世界各地?從農業再衍伸到近代,為甚麼有些國家在西元 1600 後成為帝國,而有些國家卻一直到近 20 年才開始脫離採集狩獵的原始生活?世界各地的交流絕對不是近代才開始的,但是即使在一萬年前人類就有跨越大陸傳播知識的先例,美洲大陸的傳播就是比歐亞大陸的傳播更為緩慢,這又是為甚麼? 這本書的每一個章節都讓人感到振聾發聵,之前讀歷史的時候,只覺得肥沃月彎跟中國都是因為土地肥沃、氣候條件佳,才有辦法發展出龐大的農業社會,但是顯然這兩項條件還不夠,…

Dive deep into Swift String

String type is a fundamental type of all programming languages. It’s also the very first language that you will learn when start programming. The String type is easy and straightforward. However, on the other hand, it is very complicated under the hood. The String type needs to handle the…

Advanced iOS tutorial on MVVM

How to use MVVM to tackle complicated TableViewUITableView is definitely one of the most frequently used UI components for every iOS developer. Due to the size limitation of the mobile phone, table view becomes a great way to present information while keeping the clearness of the UI design. In the…

歡迎來到真實世界 - Continuous Delivery:在你睡覺的時候,電腦們可是都在勤奮地工作喔

在iOS開發的世界,有個非常有趣,但也非常痛苦的地方,就是iOS的開發者,其實需要的基本知識非常地多,Cocoa framework 本身就涵蓋了前端的UI邏輯,與資料庫等等的後端邏輯,既要注意頁面跟頁面之間狀態的處理,也要小心記憶體的運用,有時候還要學貝茲曲線跟 3D 轉場。雖然每一樣都不可能像各領域的專家一樣精通,但也算是攻城獅裡面武器相當多的種族了。今天,不才小弟要來分享,身為 iOS 工程師,你可能還可以多學的技術:Continous Delivery!身為一個攻城獅,你一定或多或少聽說過 Continous Intgration 跟 Continous Delivery (CI/CD),但是實際生活中,除非是跟一個團隊一起開發,不然應該很少有機會會碰到 CI/CD 的概念。 所謂的 CI,就是在開發的過程中,我們需要隨時隨地都確保我們的 code 主幹都處在可以一個發佈的狀態。也就是說,不能因為正在開發一個新功能,我們的主幹程式就無法運作或是無法打包新版本。而 CD,…