Ethan Huang

iPhone X 與 Siri 滿意度

「嘿 Siri,說個笑話。」

「我不好笑的。」

「嘿 Siri,說個笑話。」

「好。有一支 iPhone 叫做 X,很厲害。有 85% 的用戶非常滿意,總共 97% 感到滿意。這些用戶對 Siri 的滿意度高達 20%… 跟你說過不好笑了吧。」

「嘿 Siri,這真的很好笑。」

「我不太明白你說的意思。」

FoundationDB

蘋果今天將一套 noSQL 資料庫軟體 FoundationDB開源出來。這個名字很蘋果。釋出的版本是 5.1.5,看來有點歷史了,但之前沒聽過。出於好奇查了一下它的背景。

FoundationDB 本是一間 startup,以及同名開源資料庫軟體。蘋果在 2015 年把這間公司買下後把軟體閉源,作為內部使用。現在又重新開源起來。

(根據當年 Business Insider 的報導,蘋果收購與閉源 FoundationDB,造成不少公司的麻煩啊…)

至於 FoundationDB 軟體本身是幹嘛呢?資料庫我實在不是很懂,不過看了一些介紹,它擅長做大型分散式服務,不僅高效、有彈性,而且還具有硬體成本優勢。

據說蘋果是把它用在 iMessage 等大型服務的設施上(品質應該比什麼 UIKit、Swift、Xcode 之類的好得多吧 😂)。既然重新開源了,可以觀察一下。

幾個背景自動追蹤的 apps

App Store 編輯今天精選的 Moment 是挺不錯的 app,目的是幫你戒手機成癮,之前試過一陣子。它可以記錄每天用多久手機、解鎖幾次,甚至用一個巧妙的方式統計個別 app 使用時間。不過對我來說,重點是原來還可以從 iOS 抓出這些資訊啊。

背景智慧追蹤的 app,另外一個是 Sleep Cycle 他們家的 Life Cycle。主要統計你人在什麼地方的時間分佈。

還有一個就是自動追蹤睡眠、存入 HealthKit 的 AutoSleep

Some Error can be catch but not thrown in Swift

There are SKError/HKError in StoreKit/HealthKit. They have errorCode, errorUserInfo, and errorDomain, which means they could conform to CustomNSError. You can catch them, but to throw them as Swift Error, you need to “extension SKError/HKError: Error { }” youself.

Why? 🤔

Sample code is here.

git 不能保證專案在每台電腦上的狀態完全一樣

A quick reminder for iOS dev: git status clean != everything the same between 💻 machines 🖥:

  • Files in .gitignore: Non-shared Scheme/Workspace settings 🛠
  • Empty folders: Search Paths 👀
  • Case-insensitive FS: Change name case of files in .xcassets, crash on #imageLiteral 💥

git 不能保證專案在每台電腦上的狀態完全一樣。以我曾遇過的坑為例:

  • 列在 .gitignore 的檔案:scheme 或 workspace 的設定,如果不是 shared,每台電腦可以完全不一樣。天差地遠
  • 空的資料夾:同事換了 framework 的位置,但 Header Search Paths 設定沒拿掉舊的。他的電腦可以 build,我 pull 後卻不行,因為我的空資料夾還在
  • 檔名不區分大小寫的檔案系統(Mac 預設):把 xcassets 底下的檔案大小寫改掉。git 看不出來差異,build 得過,但是 runtime 時 #imageLiteral 這種 code 會 crash

不是要提出解法,只是講一下有這些坑

Modern iOS dev life

  • Xcode 9.2 for main project until its next release⌛️
  • Xcode 9.3 for iOS 11.3 dev and Swift 4.1 side projects. High Sierra required⛰️🧗‍♀️
  • Xcode 9.4 beta for iOS 11.4 beta⚠️

Also, never get Xcode via MAS🚫 Directly download from /download/more/

簡單說一下 fastlane.ci

昨天 4/7 在 @johnlinvc 的大力協助之下,fastlane 開發團隊成員 Felix(@KrauseFx) 與 Josh(@taquitos) 在 iCHEF 樓下的場地介紹了 fastlanefastlane.ci

fastlane 大家比較熟悉,就是把行動應用開發中,主要跟認證簽署及發佈相關的流程(當然還有更多)給自動化,並且統統加入版控。優勢是開發工具的環境設定都可以在 repo 裡面一起管理。

這樣一來,就算你今天換個地點、換了一台電腦,或是來了新夥伴,只要能夠 checkout 就可以無縫接軌。這精神在其中的套件 match 尤其徹底發揮。(這會讓人想把整個系統會用到的設定都給版控化,不過這是另一個題目了)

基於同樣的理念,fastlane.ci 是把連續整合的流程也版控化。如果有用過 Jenkins 或其他 CI 系統就會知道環境設定有多麻煩,還很難管理。用 fastlane.ci 的話,原則上架設一台新的 CI 只要 checkout 就可以掛好所有設定,然後工作流程就可以繼續囉。

fastlane.ci 前幾天才剛 alpha,昨天則是首次 live demo👏,Felix 跟 Josh 他們建議至少到 beta 再來用。當然你很勇敢也可以 alpha 就來玩,然後認真報 bug。fastlane.ci 是完全開源的,有興趣的話也可以 contribute。另外就是他們強調團隊會有 Google 的 designer,所以到時候一定會比某 CI 好看、好用😂

我個人是 fastlane 的長期愛用者,對 fastlane.ci 相當期待!