過去開發 iOS app 需要給2種尺寸的圖(1x, 2x),然而隨著更高的解析度螢幕的到來,恭喜各位要開始出三張圖了。 為什麼要給多張圖? 每一個圖要顯示在螢幕都會使用部分記憶體資源,圖越大佔越多。記憶體是手機上的稀缺資源,能不浪費就不浪費。這個問題在較舊的手機上更為嚴重,通常較舊的手機意味著較小的記憶體配置。 若能呈現的畫素遠比圖片檔案提供的更少,顯然就是一種浪費。 舉例來說,你拿著 iPho […]…
URL schemes 是操作 app 的指令 把 app 視為一個封裝的資源,URL schemes 是用來存取 app 資源的指令。 它就像是遙控器上的按鈕一樣,你只要知道哪一個按鈕會的到什麼結果,不需要知道背後如何執行。 對我來說它像是設計模式(Design Pattern)裡的命令模式一樣,把功能封裝成指令提供外部操作。 以 KKBOX 為例 kkbox://playctrl_pause […]…
先講結論, commit log 格式應該這樣: [ticket_number] type: subject git commit -m "[#3345678] refactor: for readability" // titcket_number: 票號,讓 SCM 依據票號回報開發進度回專案管理系統 (JIRA, Track 等系統)。 // type: 1. feat: 新功能 (feat […]…
你是否也曾因為一在發生的 UI 錯誤煩惱? 當 QA 又 回報某個頁面錯誤,[Bug] 精選頁面 Load more 未顯示 Loading indicator,為什麼要說又呢? 如果你也有這樣的症頭,請繼續看下去。 雖然我們依循 Model-View-Controller(MVC) 的架構開發,但對於複雜的 UI 狀態改變還是會出錯。為什麼? 回顧原先我們是如何管理複雜的狀態: Class KK […]…
這篇文章說明我們團隊(KKTOWN iOS team) 已經有 Jenkins CI 仍然導入了 Gitlab CI 的原因。 Jenkins 算是 CI 界裡的資深前輩,它不容易出錯又有許多外掛可以使用,可以做很多細部調整,無論是整合進 Slack 或是在專案管理軟體(JIRA, Track 等等) 上依據票號更新資料都難不倒它。 在我們理想的開發流程還是有 Jenkins 不足的地方。怎麼說呢 […]…