付費限定

🤕開發者職業傷害──Dependency 的故事、事故與世故

13-avatar-img
發佈於🧠 軟體開發思維 個房間
更新 發佈閱讀 11 分鐘

今天來分享一個我個人 iOS 開發職涯早期遇到的重大傷害,以及它教會我的事情。

故事

大約在 2015 年初,也是我接觸 iOS 開發不到三年的時候,我正在幫自己的第一個獨立開發 iOS App,「快速筆記軟體 NoteBox」 ,升級雲端同步的功能。

NoteBox 本來就有雲端同步,只是我最開始偷懶使用 iCloud Key-Value Store

你可以把 iCloud KVS 當作一個沒有衝突解決機制的雲端版 UserDefaults。當然,它的容量限制也絕對不是很好的長期儲存方案。

當時 Apple 已經發表 CloudKit,有著不需要使用者額外登入的好處,自然是重要選項之一。

另一方面,NoteBox 本來就有整合 Dropbox SDK,以利使用者一鍵把筆記輸出成檔案放在 Dropbox。

當時 Dropbox 有個叫做 Datastore API 的服務,提供給 mobile app 開發者很方便能同步非檔案的資料,類似後來推出的 Firebase Realtime Database,而且使用起來非常簡便。

它內建自動同步、衝突處理、離線儲存等功能。

重點是,它的同步速度非常迅速。兩台手機開著 NoteBox 在前景,在一台手機新增筆記,不到半秒就可以在另一台看到。

Datastore API 簡便且高效能,並且在各種多裝置 + 離線操作的測試條件之下,它都能正確合併資料。讓我對它十分有信心。

而且它還沒有跟開發者收費呢(!)

不過因為不是每個使用者都會登入 Dropbox,所以我同時做了 CloudKit 與 Dropbox Datastore 兩套方案,打算讓使用者自行選擇。

CloudKit 同步要寫得好不容易,需要考慮很多錯誤處理(這個情況,直到 2023 年 Apple 推出 CKSyncEngine 才變得比較簡單)。所以,雖然 Datastore 三兩下就串接完畢,我還是得在 CloudKit 上面花費大量時間開發及除錯。

還有,在兩種雲端儲存方案之間切換的機制也要做到好,也花了我不少力氣。

事故

好不容易,就在我開發完畢兩套全新的同步機制、自行測試完畢,準備要把新版送審上線的時候,

創作者正在準備中
請加入 13+ 了解最新動態!
留言
avatar-img
13+
3.5K會員
161內容數
13 以 10+ 年 iOS 開發經驗為基礎撰寫,助你在 AI 時代成為更有自信的技術工作者。 ❤️ 支持 13 創作! 🤖 AI 工具實戰經驗與深度思考 🧠 軟體開發思維、職涯發展建議 💡 實用技巧與踩坑經驗分享 😔 開發者身心健康與職業傷害
13+的其他內容
2025/04/18
最近跟家人聊到 AI 的發展,產生一段有趣的對話,於是寫了這篇短文。
2025/04/18
最近跟家人聊到 AI 的發展,產生一段有趣的對話,於是寫了這篇短文。
2024/10/01
一個免費的小工具,改變了我看待問題與分配資源的方式。從清硬碟開始,延伸到程式效能、時間管理、甚至人生選擇。這篇文章分享我怎麼從 GrandPerspective 學到的事情,以及它為何值得成為長青工具的代表。
Thumbnail
2024/10/01
一個免費的小工具,改變了我看待問題與分配資源的方式。從清硬碟開始,延伸到程式效能、時間管理、甚至人生選擇。這篇文章分享我怎麼從 GrandPerspective 學到的事情,以及它為何值得成為長青工具的代表。
Thumbnail
2024/09/25
我常常覺得 iOS 開發者就像農耕文化,有著以年為單位的工作週期。不同的是,我們不看天氣吃飯,而是 Apple 的產品發布慣例。從 WWDC 到新版 iPhone、Xcode、iOS 發表,每年都有週期可掌握。這篇文章是我多年經驗歸納出的年度工作節奏,幫助你在對的時間做對的事。
2024/09/25
我常常覺得 iOS 開發者就像農耕文化,有著以年為單位的工作週期。不同的是,我們不看天氣吃飯,而是 Apple 的產品發布慣例。從 WWDC 到新版 iPhone、Xcode、iOS 發表,每年都有週期可掌握。這篇文章是我多年經驗歸納出的年度工作節奏,幫助你在對的時間做對的事。
看更多
你可能也想看
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
Thumbnail
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
Thumbnail
今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News