weak self

weak self

By 一三、波肥、喬喬
集結弱弱的我,也可以組成強大的社群。三個在 iOS 開發圈打滾的台灣工程師,專為 Apple & iOS 開發者而製作的中文 Podcast。內容涵蓋 Apple 開發圈的新知討論、踩坑經驗、人物採訪、社群活動、職場生活。更多資訊請見官網 https://weakself.dev 或是 Twitter @weak_self
Where to listen
Apple Podcasts Logo
Breaker Logo
Google Podcasts Logo
Overcast Logo
Pocket Casts Logo
RadioPublic Logo
Spotify Logo
Stitcher Logo
Currently playing episode

27: 來做 Side Project 系列之不要剛見面就要個資啊

weak self

Go to next audioGo to next audio
Go to prev audioGo to prev audio
1x
47: 好,錄了!工程師與 PM 圍繞 WWDC20 開展的對話
一三找了 PM 同事、也是忠實聽眾的 @Chrisyeh612 來錄音。 這集長達 82 分鐘但聊得很輕鬆,可以慢慢聽。有把章節標記切好切滿。 這是我們第一次採用單麥克風雙人訪談的方式錄音,有敲到桌子的聲音,請見諒。 { 完整節目筆記 https://weakself.dev/episodes/47 } 本集內容 開場:居然在上班時間錄 podcast iOS PM 怎麼樣吸收 iOS 新知? 兩大傷害:送審與 IAP。常常要與太太交手 WWDC20 印象最深:隱私權政策 很多知識還是來自工程師 「聽 weak self 對我來說是很療癒的事情」 PM 怎麼把 iOS 新功能排進專案中—以 Widget 為例 Android Widget 被 Apple 牽著走而做新功能—從 Sign In with Apple 到 App Clips。一開始是被逼著上車,好不容易跟上車之後卻覺得舒服 從 app 為主到使用場景為主 重點不在 Apple Silicon 本身—使用者將會期待 iOS App 可以跑在 Mac 上 Universal Purchases SwiftUI 跟 Apple 的佈局 iPad vs Mac 推同事入坑 SwiftUI 對話 總結 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:22:03
August 2, 2020
46: 推你入坑 SwiftUI 不後悔
好,寫了! { 完整節目筆記 https://weakself.dev/episodes/46 } Last year, it felt like I was experimenting with SwiftUI. This year, it feels like I’m building a real app. - MengTo 13 不想錄音,想去寫 SwiftUI 今天來傳教的 之前曾說過寫 iOS 寫到膩,主要就是對 UIKit 感到厭煩 去年的 SwiftUI 坑太多,沒有實際用途 今年完成度很高,很好玩。很久沒有這麼「快樂」了(這不是反串) SwiftUI 是什麼? 所見即所得的 UI / app 開發 所有 Apple 平台都可以用 為什麼要學 SwiftUI? Xcode 12 快很多:code completion、preview update cycle 從 Preview 可以很容易變更外觀 直接跑在裝置上的 Preview,可以拔起來去拿給同事看。甚至可以把幾乎整個 app 跑起來 LazyV/HStack、OutlineGroup 等可以建出比較複雜但輕快的 UI 連 App 也可以是一個 struct。整個 app 的主要 UI 架構可以幾行 code 搞定(例如 TabView 包什麼東西) 甚至還有 DocumentApp 這種東西,直接幫你包好 程式碼少很多改很快,這真的是未來 怎麼導入現有專案 需要 iOS 13+,建議 iOS 14 需要 Xcode 12 跟設計師研究怎麼樣使用 Xcode SwiftUI Library 建立一些 design guidline 或 components 自己找 side project 亂試 試試看用 SwiftUI 重刻既有的 UI 寫 Widget 寫 App Clips,不要拿原有的 UI,寫個新的 寫 watch app 不一定要 Xcode,Swift Playground 也可以寫(偽 Mac 桌面) 找某些 UIKit 畫面嵌入 SwiftUI(UIHostingController),或是 SwiftUI 不夠用的時候嵌入 UIKit(UIViewRepresentable) 參考資料 SwiftUI Tutorials - Apple MovieSwiftUI SwiftUI Kit 100 Days of SwiftUI macOS Desktop with SwiftUI 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
48:30
July 26, 2020
45: iOS 14 主畫面帶來 App 存在感危機!
如果 App 不在主畫面,這個 App 還存在嗎? { 完整節目筆記 https://weakself.dev/episodes/45 } iOS 14 可以設定 app 一下載就放到 App Library,不留在主畫面 Widget 可以想成是內容會變的大型 app icon iPadOS 14 的主畫面不像 iOS 變得那麼多。沒有 App Library、Widget 不能與 app icon 混排,更像 macOS 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
24:36
July 19, 2020
44: 隱私流程改到你會怕
解讀 Apple 隱私哲學的五根四大柱子,兩位主持人一致認同 WWDC20 必看 session。 { 完整節目筆記 https://weakself.dev/episodes/44 } Privacy On-device processing, data minimization, serurity protections, transparency and control 強烈推薦去看 WWDC20: Build trust through better privacy iPlayground 2018 zonble: 那些年被蘋果 Ban 掉的 API、投影片 AppTrackingTransparency framework Apple 平台安全性 User Privacy and Data Use SKAdNetwork 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
41:57
July 12, 2020
43: MetricKit—App 怎麼死的不用通靈啦
MetricKit 是一個討論度不高,但相當實用的東西。開發者不用做任何事情,就可以在 Xcode 11 Organizer 看到整理好的電力與效能的數據。如果想要搜集個別裝置的資料,就可以運用 MetricKit。而且從 Xcode 12 開始這些資料又更多了。 另外,在節目中有一點來不及提到:App Store Connect 最近新增許多 MetricKit 相關的 API endpoints。詳情見官網。 { 完整節目筆記 https://weakself.dev/episodes/43 } MetricKit 25: 難道公司發大財了!?App Launch Time 加速面面觀 WWDC20: What’s new in MetricKit WWDC20: Explore logging in Swift WWDC18: Measuring Performance Using Logging WWDC20: Why is my app getting killed? MXBackgroundExitData WWDC20: Expanding automation with the App Store Connect API 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
29:11
July 8, 2020
42: App Clips—應用程式切片是迷你 App 嗎?
這集聊應用程式切片——App Clips。13 講話有點卡,所以我們盡量把資訊補充在下面。 { 完整節目筆記 https://weakself.dev/episodes/42 } App Clips are not a trojan horse for your app, they should have value on their own. App Clip 是一種依照需求立刻下載的小 app,整包有 10 MB 限制 在商店或實體地點掃描 QR code、App Clip code、NFC tag、或系統建議。會先顯示 App Clip 卡片,使用者再按打開按鈕來叫出真正的 App Clip 卡片又稱 App Clip experience。要在 App Store Connect 設定顯示的資訊、按鈕的類型(打開、播放等) 也可以在網站(Smart Banner)、訊息直接叫出 App Clip 上述所有的進入點都會用 URL(NSUserActivity)的形式傳入 App Clip,你才知道要導到哪個畫面或資訊 App Clip code 是同心圓圖案,可用相機掃描來開啟 App Clip 卡片。製作工具還未推出 下載主 app 的時候 App Clip 會自動被刪除。開發者上傳時主 app 與 App Clip 要一起打包送審,但在使用者裝置上兩者不會同時存在 API 跟一般 app 都一樣,只是部分使用者資料拿不到(例如 HealthKit)。沒有限定要用 SwiftUI 才能開發 只支援 iPhone 請求 Location 的權限有簡化版流程。如果在實體商店使用的話,可以用來加強判斷使用者有沒有在現場能取得服務 App Clip 不能被 deep linking 打開、不能包含其他 App Extension 如果一段時間沒用的話系統會自動把 App Clip 刪掉,包括 Keychain 資料 相機、麥克風、藍牙權限可以移轉到主 app 打算移到主 app 的資料可以放在 share container Apple 建議用 SIWA、Apple Pay 來加快使用者流程 推送通知可以直接用,在 Info.plist 可以設定 ephemeral,這樣就不需要問通知權限。可以在 8 小時內發送通知,最多可以要求延長到一週 StoreKit 有新的 SKOverlay API,適合轉換到安裝主 app。Apple 希望你讓使用者做完重要事情以後,再呈現這個轉換 App Clip 的設計方向:越快越好、在當下脈絡可完成的最重要事情、很多次要 UI 跟設定都不用、一定要登入的話用 SIWA、付款用 Apple Pay 白牌應用開發商可以幫商家開發 App Clip,體驗會稍有不同 相關資源 Human Interface Guidlines - App Clips WWDC20: Explore app clips WWDC20: Configure and link your app clips WWDC20: Streamline your app clip WWDC20: Design great app clips WWDC20: Create app clips for other businesses WWDC20: What’s new with in-app purchase SKOverlay 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
25:46
July 5, 2020
41: Widgets are not mini apps, widgets are not mini apps, widgets are not mini apps
全新的 Widget 跟你想像的不一樣!使用者要聽、iOS 工程師要聽,設計師跟 PM 更要聽! 留言 { 完整節目筆記 https://weakself.dev/episodes/41 } 更新的限制:更新原理跟 ClockKit 一樣,也就是 Apple Watch 錶面的複雜功能(Complications)。即使你設定為每次讀到最後一筆資料就啟動更新,或是狂發 push,系統還是會限制更新頻率 Is there any reload rate limitation exits in WidgetKit? Yes. For example, if you return one entry with timelineReloadPolicy.after, and you make the “after” date like 1 minute from now, 60 times in one hour, you will run out of reloads. ”You don’t wanna do anything crazy.” - @roczhang9673 畫面的限制:2x2、4x2、4x4 三種尺寸(相對於 app icons) 操作的限制:只能單點打開 app,不能滑動。2x2 還不能區分不同區塊要打開不同連結 效能上的優勢:利用 SwiftUI 的特性讓畫面可以在顯示的瞬間讀取並建構完成,而不像以前每個 widget 都要做大量即時運算 參考資料 Human Interface Guidlines - Widgets WWDC20: Design great widgets WWDC20: Design for intelligence: Apps, evolved WWDC20: Meet WidgetKit WWDC20: Build SwiftUI views for widgets WWDC20: Widgets Code-along, part 1: The adventure begins 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
20:46
July 1, 2020
40: Apple Silicon
WWDC20 最大重點 Mac 要遷移到自家晶片了。對於開發者的影響是什麼? { 完整節目筆記 https://weakself.dev/episodes/40 } WWDC20: Port your Mac app to Apple Silicon WWDC20: iPad and iPhone apps on Apple Silicon Macs WWDC20: Explore the new system architecture of Apple Silicon Macs The Talk Show Remote From WWDC 2020, With Craig Federighi and Greg Joswiak 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
22:56
June 28, 2020
39: 第三季弱勢回歸!先來聊聊 WWDC20 印象
weak self 第三季弱勢回歸!這季我們學習 WWDC 的影片形式,會用小片段的方式推出,打破每週最多一集的節奏。為了節省後製成本也把音樂省掉了哈。 首先來聊聊三位主持人對於 WWDC20 的整體印象。 { 完整節目筆記 https://weakself.dev/episodes/39 } 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
16:25
June 26, 2020
38: 一直砍扣一直爽
本集成分: #買了指數👉65 #傷害指數👉-8000 #雞湯指數👉60 { 完整節目筆記 https://weakself.dev/episodes/38 } 一直砍扣一直爽 Swift @available(*, deprecated/unavailable)(除了 type 跟 func 已外,enum 可以 case by case) 善用 Find Call Hierarchy。預設快速鍵是 Cmd + Ctrl + Shift + H(我太常用了所以把它改成 Cmd + H) 東看西看 《Working Effectively with Legacy Code : 管理、修改、重構遺留程式碼的藝術》 三次元螞蟻-宇宙兄弟 《走出軟體工場》 《我在底層的失控人生》 那些最常在 Stack Overflow 被提到的 30 本工程師必備書籍 雜談 WWDC 做做 side project 指數 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:06:01
May 31, 2020
37: 欸,這個壞掉了之 Log 的那些事、IAP 的傷害
本集由傷害擔當與雞湯擔當來討論技術擔當的工作。 { 完整節目筆記 https://weakself.dev/episodes/37 } 關於 Log 的那些事 CocoaLumberjack IAP 的傷害 Do not call the App Store server verifyReceipt endpoint from your app. You can’t build a trusted connection between a user’s device and the App Store directly, because you don’t control either end of that connection, which makes it susceptible to a man-in-the-middle attack. - Validating Receipts with the App Store IAP Subscriptions 欸,這個壞掉了 裝置、系統版本、App 版本缺一不可 可以回去聽 26: iOS 開發生平大坑之 DateFormatter 收不掉的結尾加料 一三傷害指數:4 喬喬雞湯指數:3 波肥買了指數:N/A iOS 開發者職業傷害大全 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:13:36
May 24, 2020
36: Strong Wife 跟 WWDC 回顧加預測
某人的老婆提議要錄工程師太太單元。WWDC。Facebook SDK 爆炸事件。 { 完整節目筆記 https://weakself.dev/episodes/36 } Strong Wife 不保證會出啦哈哈 WWDC20 Apple Developer App weak self 0: 如果你想要浪費一個人的暑假 回顧 WWDC19 發表的新東西:SwiftUI、Catalyst、UICollectionView Compositional Layout、Sign In with Apple、dyld3、Dark Mode、拔掉 3D Touch Peek & Pop 改 Context Menus dyld3 在 iOS13 早期版本的 crash No Overview Available. WWDC20 預測內容:SwiftUI 支援更多 UI 元件、Xcode on iPad、macOS on ARM Facebook SDK Crash 的經過 一三寫的 Facebook Auth 推文、Gist @lihenghsu 的版本 Facebook Platform Policy 8.2 FB SDK Best Practices for GDPR Compliance 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:15:44
May 17, 2020
35: 勞動節特輯之人生不一定有答案
三位主持人合體了!今天的遊戲規則是名詞都要翻成中文。 { 完整節目筆記 https://weakself.dev/episodes/35 } 這個也不會,那個也不會 工程師一定往管理職發展嗎 教育訓練之你會不會開會 太基本的東西也要教育訓練嗎 保密 寄信(副本給執行長的那位仁兄) 開會到底在幹嘛 一成不變的做事方式 vs 學習怎麼學習 談燃燒殆盡 怎麼保持能量 成為諮商師之前要先當案主 你的心理安全網建好了嗎 聊節目本身 收尾收不掉🤪 請多多回饋意見🙏 沒在管的剪輯✂️ Bonus: 壓力指標 HRV 與 Apple Watch 用 HRV 來衡量身心壓力 Apple Watch 買起來? HRV 科普小教室—心率變異與 Apple Watch 收尾:勞動節快樂 波肥已開戶(旗子在這裡) 關於燃燒怠盡與 HRV 下降有正相關的最新論文 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:08:32
May 3, 2020
34: 心動投資法之蘋果的股票可不可以買
身為果粉的你如何抑制蘋果新產品的購物衝動?把這筆錢拿來投資怎麼樣? { 完整節目筆記 https://weakself.dev/episodes/34 } 蘋果的股票可不可以買 iBook G4 iPod Shuffle 1 iPhon SE 體驗影片:MKBHD、钟文泽 你是怎麼成為果粉的 Xcode for iPad 最近竄紅的爆料者 John Prosser 說 Xcode、Final Cut Pro X、Logic Pro 等會登上 iPad,不確定是今年或明年 免責聲明 不推薦大家衝動購物、盲目投資。投資有賺有賠,投資前請詳閱公開說明書。 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
58:42
April 26, 2020
33: 喬喬沒賣藥電台:iPhone SE
「謝謝 iPhone 11 Pro 大哥,你的晶片果然厲害。」喬喬回來了!這集我們聊熱騰騰的 iPhone SE。 { 完整節目筆記 https://weakself.dev/episodes/33 } iPhone SE 謝謝 iPhone 11 Pro 大哥,你的晶片果然厲害。(台灣官網) iPhone 11 Pro called. It wants its chip back.(美國官網) 竟然用上同一晶片,iPhone 11 Pro 表示抗議。(香港官網) 咱们这颗芯,与 iPhone 11 Pro 大哥平起平坐。(中國官網) 什麼樣的語言水準才會寫在履歷上 如果是應徵 iOS 工程師的話,Objective-C 或 Swift 至少要會一項吧。 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
50:36
April 19, 2020
32: 本集節目要 @audreyt 唐鳳、Pair Programming、Apple 與 Google 合作
為什麼健保快易通 iOS App 的 Logo 扁掉了,怎麼修?AirPlay 不是只有鏡像模式,但大家都搞不清楚?13 分享 Pair Programming 經驗。Apple 與 Google 攜手合作。 { 完整節目筆記 https://weakself.dev/episodes/32 } 健保快易通 iOS App 的 Logo 扁掉了 @audreyt 全民健保行動快易通,App Store 截圖跟啟動畫面的圖扁掉了 一個推文示範實作方式 要用 Launch Screen。App Store 6/30 以後就不再允許 Launch Image UIImageView contentMode 常用的方式有 .aspectFit 與 .aspectFill AirPlay 不是只有鏡像模式 不要切到影像的話,要用 resizeAspect,如果跟螢幕比例不同的話,會有留邊 要填滿畫面的話,要用 resizeAspectFill,如果跟螢幕比例不同的話,會切掉部分 HIG: Video 有很好的範例 AirPlay Mirror(螢幕鏡像輸出) 不完全等於 AirPlay,但是 Apple 沒有講得很清楚,使用者很容易搞混 控制中心第一層可以打開 AirPlay Mirror 要使用非 Mirror 的 AirPlay,則是要按控制中心右上角的媒體控制,再選擇要投出的裝置 如果是播放串流影片的話,從 app 裡面放 MPVolumeView 的 route button,或是 iOS 11+ 的 AVRoutePickerView,讓使用者選擇要投出的裝置,就不會是鏡像模式 FairPlay DRM 會阻止鏡像模式,只會有一個畫面播放影片 Pair Programming 經驗談 我覺得重點是,團隊成員要先有一定的信任跟默契、討論能夠對事不對人。所以如果平時 code review 會翻臉那可能就不適合。(推文) iOS 有內建 Screen Sharing API。WWDC18: Live Screen Broadcast with ReplayKit,Google Meet、Zoom、Twitch、FB Messenger 等都支援 Apple 跟 Google 合作推出傳染接觸追蹤的系統框架 Privacy-Preserving Contact Tracing Framework,使用藍牙 新聞稿 技術文件 iOS 13 的 Find My 已有隱私保護下的協尋功能,可能採用類似機制 結尾又聊到遊戲去了 FF7 Remake 惡靈古堡三 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬
56:50
April 12, 2020
31: 真的不是聊動森的 Podcast
一三跟波肥來聊 iOS 開發圈的愚人節趣事。然後還是有聊到一些遊戲。 { 完整節目筆記 https://weakself.dev/episodes/31 } 真的不是聊動森 Podcast 搜尋引擎 Listen Notes,搜尋動森會找到 weak self 😂 惡靈古堡的起源故事 CAPCOM 惡靈古堡系列的起源故事、三上真司、神谷英樹(維基百科) 企業都是會垮的 The Omni Group Brent Simmons NetNewsWire Vesper iOS App Vesper Sync Diary Looking for Work & Overwhelmed in a Good Way 說到生產力工具嘛 Screen.so iOS 開發圈的愚人節趣事 [假] John Sundell 的 Introducing Objective-C UI Jordan Rose [真] 去年的 Source Is View,靈感來自 Baba Is You [真] 今年的 Swift on Mac OS 9 Paul Hudson 開發者在哪裡?Spot the Swifty 文章、全圖 Erica Sadun in dotSwift 2020 [真] Swift 的 Emoji 可以相加 Xcode Bugs Xcode 11.0~11.3.1: Crashes in compiler optimized code Xcode 11.4: UILabels 神秘的糾纏 收尾 呼叫雞哥,還是難哥? 也歡迎訂閱«13的開發者週報» 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev Twitter @weak_self
1:00:37
April 5, 2020
30: 開發圈近況與遊戲的隨性聊
這集由一三跟波肥完全沒準備、開麥就裸聊,效果意外地不錯! { 完整節目筆記 https://weakself.dev/episodes/30 } 開場閒聊:什麼都底累了 Nintendo Direct Mini 3.26.20 Star Wars Episode I Racer 移植到 Switch 與 PS4 Fabric shutdown extended to May 4, 2020 App Store Deadline for App Updates has Been Extended Google I/O 2020 取消 WWDC20 全線上化舉辦 try! Swift Tokyo 2020 取消 WFH 經驗談 也可以參考 S2E23: 在家工作!WFH 時怎麼樣才不會 WTF 波肥的儀式感(工作與生活狀態切換)的實用建議 動物森友會 一不小心就可以玩上百小時,所以從錢的角度來說不貴 一機多人一島、暫時沒有存檔備份跟轉移的方案 與真實生活步調的高度模擬 AR & LiDAR iPad Pro LiDAR 效果影片:一、二、三 官方 Mesaure App 說明: Use the LiDAR Scanner… @shu223:沒有 LiDAR 專屬 API(日文) iPad Pro A12Z NoteBookCheck.net: The Apple A12Z Bionic SoC is just a renamed A12X with an enabled GPU core Relax, Apple disabling a GPU core in A12X only to enable it in A12Z is quite common App 用掉多少 RAM? WWDC: iOS Memory Deep Dive 次世代主機的 SSD 特性 The Road to PS5 Inside Xbox Series X: the full specs 收尾:準備買遊戲 集合啦!動物森友會(你要在動森裡面錄什麼…?) Resident Evil 3 Remake (4/3,冷飯重炒永遠香) FF7 Remake (4/10 發售,不一樣的戰鬥系統可以體驗看看) TLoU2 (5/29 請假啦!) 對馬戰鬼(對馬幽魂,6/26)
1:01:29
March 29, 2020
29: 來做 Side Project 系列之好用的搜尋功能
搜尋是 app 常有的功能。本集來聊怎麼把搜尋的體驗做好一些呢?Bonus 則是探討如何讓 app 支援 iOS Spotlight Search,提高使用者回流的機會。 { 完整節目筆記 https://weakself.dev/episodes/29 } 開場閒聊做 UI 的另類方法 聊了 13 在嘗試用 userflow unit tests + SwiftUI preview 的 UI 另類開發方式。 搜尋外部資料 很多 app 有資料搜尋的功能,大致上可以分成搜尋外部資料、過濾內部資料兩種。先說第一種: 要打遠端 API 或從區網取得資料 限制 query 頻率,不能隨打即找 考慮不可控的回應時間 捨棄已經不符合目前搜尋條件的結果 API 可以提供搜尋建議 Debounce vs throttle 過濾內部資料 直接讀取裝置上的資料庫 效能可控,幾乎可以一邊打字一邊顯示結果 也是要測量 沒有 API,所以自己保留搜尋條件的歷史 保留搜尋條件變成資料入口,曾是 Evernote 的特色之一 要能夠清除搜尋歷史 更好的話是讓使用者能關掉這個功能,因為不是每個人都喜歡留下記錄 如果是靜態資料,可以 cache 搜尋結果 搜尋介面實作 通常搜尋結果會是列表,所以可能是 UITableView 放在 UINavigationController 裡面 用 UISearchController,是把搜尋框「藏」在 navigation bar,往下捲動時搜尋框會看不到。如果搜尋功能真的很少用到的話還算可以考慮。效果可以參考系統設定的搜尋功 如果搜尋是重要入口的話,還是傳統方法把 UISearchBar 放在 navigationItem.titleView 比較簡單實際,bug 也比較少… 支援 iOS 搜尋 除了 app 內的搜尋以外,也可以支援 iOS 的搜尋。有幾個方法: 用 NSUserActivity 把使用者操作過的動作,或是點開過的項目加到 index 這個有做沒有壞處,還可以順便支援 Handoff 跟 Siri Shortcuts 等等 用 Core Spotlight framework 批次操作 CS 的 index 是 private、on-device 甚至可以做成 app extension 甚至可以拿 CSSearchQuery 來做自己 app 的搜尋引擎。也就是 app 內與外都共用同一個 index 跟搜尋引擎(但我沒有這樣做過) 如果有內容相通的網站,可以寫 web markup 來支援 Applebot 爬蟲 適用於公開資料 支援 Twitter Cards 與 Facebook 的 App Links 標準 如果網站想要導流到 app 的話,可以搭配 Universal Links 和 Smart Banner 一起規劃 App Search API Validation Tool 詳情都可以查看 App Search Programming Guide。但是這份文件已經很久沒更新,放在 Archive。 講起來好像很複雜,但是加個 NSUserActivity 沒有幾行程式碼。 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
57:11
March 15, 2020
28: 來做 Side Project 系列之誰能比我鍵
這集「來做 Side Project」系列來講講鍵盤跟文字輸入的一些基本東西。Apple 真的有很多跟文字輸入還有鍵盤的 API 呢。 { 本週節目筆記較長,完整節目筆記 https://weakself.dev/episodes/28 } 歡迎收聽「我就弱!」 「我們弱」彩蛋請上我們的 Twitter 上週補充 iOS 軟體鍵盤要注意什麼? 表單設計 文字編輯指令 支援硬體鍵盤 結尾閒聊 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
48:39
March 8, 2020
27: 來做 Side Project 系列之不要剛見面就要個資啊
全新企劃!由 13 負責主持的「來做 Side Project」系列探討 iOS 工程師自己做 app 時可以注意的細節。 { 完整節目筆記 https://weakself.dev/episodes/27 } About Page 版本號 官網 SNS App Store 連結 回饋的表單或寄信機制 MFMailComposeViewController 開發者或工作室的聯絡資訊(看你怎麼經營) 開源專案的話,專案資訊與連結 有使用到的軟體套件的授權 隱私權政策 可以用 SwiftUI 或 Storyboard 簡單地做 可以用 iTunes API 把使用者評分人數抓下來 Privacy 隱私權頁面本來就要在上架 App Store 提供 隱私權政策產生器 TermsFeed 早期 Android 更沒在管 權限不要第一次啟動 app 就要,尤其是通知 iOS 12+ 可使用 .provisional 的通知 Apple 自己的服務都違反 guideline User Testing, Tracking, and Crash Logging 放 behavior log 之前先想清楚你要找什麼 小扯題 GDPR UGC(User-generated content) 提供 EULA 要有使用者回報與封鎖機制 Side project 還是不要做 UGC 好了 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
56:41
March 1, 2020
26: iOS 開發生平大坑之 DateFormatter
為了讓節目內容兼具技術與閒聊,我們討論著 iOS 開發時遇到的坑。這集就由 13 先講與 DateFormatter 的不解之緣。 { 完整節目筆記 https://weakself.dev/episodes/26 } 第一次:NSDateFormatter init 的坑 以前官方文件有寫說 [[NSDateFormatter alloc]init] 是 CPU expansive task,不過現在這句話找不到了。只有在 StackOverflow 上還有記錄。 論 iOS App Performance Optimization Q. 如何大幅提升 compile time 效率? A. 買最新的 Apple 電腦 Q. 如何大幅提升 runtime 效率? A. 等使用者買最新的 Apple 裝置 結論: 人們說「能靠花錢可以解決的都不是難事」,是不是沒有很難?🤪🤪🤪 @ethanhuang13 第二次:DateFormatter 的 Calendar 坑 If unspecified, the logical calendar for the current user is used. - DateFormatter.calendar 如果沒有指定的話, DateFormatter 就會使用 系統設定 > 一般 > 語言與地區 > 曆法 上的設定,除了西曆以外,還有日本曆、佛曆可以選。 Calendar 選 Gregorian 跟 ISO8061 時,yearForWeekOfYear 算法不一樣。 第三次:DateFormatter 真的炸掉了 String 轉 Date 是 nil,奇怪咧!? 首先排除可能性: App 刪掉重裝過 iOS 升級到最新版 系統的曆法設定是西曆,或是 DateFormatter 有指定 calendar 系統時間沒有亂調 DateFormatter 不知什麼原因炸掉了 最後處理方法:去找使用者借裝置 debug 喬喬 Bonus:寫 Android 也懷疑人生 喬喬經驗分享 找使用者 debug ISO8601DateFormatter 如果要使用 ISO8601 Date 的話,iOS 10+ 推薦使用 ISO8601DateFormatter。 波肥 Bonus: 也是 DateFormatter DateFormatter 的 threading issue How iOS alloc and free Thread-Safe 的時光總是特別短暫 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
49:01
February 23, 2020
25: 難道公司發大財了!?App Launch Time 加速面面觀
這集由波肥與喬喬聊聊: 為什麼要加速 App Launch Time? 什麼時候做? 以及怎麼做? 庫存已久的題目一次補完 { 完整節目筆記 https://weakself.dev/episodes/25 } 什麼時候做 App Launch Time 加速? 公司有在賺錢的時候 App Launch 的三個階段 Pre-main: Loading (MachO + dylib) / Rebase & Binding / ObjC Setup / Initializer Main: App 的入口 Post-main Pre-main 提到的笑話 Swift 專案裡的 main 去了哪? 由 @UIApplication 做完全部工作了 寫自己的 main.swift (程式碼) 各階段加速的不同策略 Pre-main Loading: 減少 App size;減少 dylib 數目 (merge pods); 或者變成 statically linked pods Rebase/Binding: iOS 13 幫你用 dyld3 做好 cache 了 Objc setup: 少點 ObjC code;少點 Category Initializer: 盡量用 +initialize 取代 +load Post-main: 少做事,多 lazy,盡量平行化處理 掃瞄沒用到 ObjC selector 的 script 測量,別猜! Xcode scheme 新增 env variable 可取得 pre-main 各時間: DYLD_PRINT_STATISTICS = 1 或 DYLD_PRINT_STATISTICS_DETAILS = 1 合併 Pods 的 plugin Pods 改 statically linked (Podfile example) MetricKit 的介紹文章 與 WWDC session 在用戶端測量 pre-main 所花時間的程式碼 奇技淫巧 抖音的重新排序 binary 方案 FB 的 binary layout optimize 關於此技術的其它相關評價 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:09:06
February 16, 2020
24: 你也是薪水小倫嗎?上班族如何利用上班時間精進程式功力
喬喬的雞湯賣藥電台再出發。 下班之後無心無力或沒時間加強技能,那可以在上班時間合理合法地學習嗎? 再問,怎樣搞定你的 PM,或說同事之間怎麼做人處事才好相處? { 完整節目筆記 https://weakself.dev/episodes/24 } 薪水小倫 Meme: 編譯太久滑一下推特,不小心就滑出去了 學習怎樣偷時間跟加速:縮短操作指令、IDE、打字時間、把重複的作業給自動化等等 Xcode 小技巧:Control + Opt + Cmd + F => Fix All。用來自動完成 Swift switch cases 很方便 把工作內容會用到的工具跟流程、看起來很眼熟的名詞,其背後的原理都弄熟 寫一些內部的工具、library 只會用 code 寫 UI 的人可以試試 Storyboard,反之亦然 練習讀程式碼的鑑賞力 利用既有知識來輔助學習新知識。幫自己搭梯子,降低學習曲線 透過寫作來學習組織知識架構 加強英文,讀官方文件算是很實用的路線 同事之間 怎樣搞定你的 PM?其實 PM 不好當。要懂 business domain、tech knowledge… 整理出「說人話」的文件給同事們參考 有問題及早回報。東西做不出來沒關係,不要最後一天才說 菜鳥工程師必修的 30 堂溝通課 - 工程師如何與 PM 溝通 Developing Strong Product Managers 從入門到卓越,產品經理技能檢核表與職涯發展路徑 好的產品經理,該有哪些核心能力 【PM夥伴攻略】如何跟工程師合作? PM與UX設計師間的互動血淚史!改變從不是一蹴可幾 《Code Craft》 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:07:19
February 9, 2020
23: 在家工作!WFH 時怎麼樣才不會 WTF
居家隔離?在家工作?聊聊遠端工作的利與弊。 { 完整節目筆記 https://weakself.dev/episodes/23 } 2020 iOS 工程師展望與規劃 其實跟往年差不多規律。 要學 Objective-C 的話: 可以從長輩的教材開始讀起 如果要學 Flutter 的話: 請回去聽 weak self S1E12 真的要學 SwiftUI 的話: 請回去聽 weak self S1E16 SwiftUI Learning Curve in 2019 WFH & 遠端工作 一些工具與流程可參考 InfuseAI Member Handbook 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
41:29
February 2, 2020
22: 喬喬賣藥電台:上班族業績與工程師技術債+如何跟強者同事相處+玻璃心同事
第二季開始啦!喬喬的賣藥電台,跟 13 聊了三個題目。 { 完整節目筆記 https://weakself.dev/episodes/22 } 工程師該不該放心大膽創造技術債? 你好,我是 weak self 的聽眾,也是工程師幹話的忠實讀者。想請問 weak self 對⟪工程師應該放心大膽地創造技術負債⟫這篇文章的看法? 弱弱的我如何跟強者同事相處的指南? 可以來一集,弱弱的我如何跟強者同事相處的指南嗎? 心理素質不夠強,連問問題都怕怕的 玻璃心同事? 跟同事的回饋或建議,彼此之間的不舒服? 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:05:31
January 19, 2020
21: @escaping vs @nonescaping
在某個假設的平行時空當中,這集 podcast 會是在討論肉身的 @escaping… { 完整節目筆記 https://weakself.dev/episodes/21 } 第一季統計 前五大熱門單集 12: 販售焦慮,Mobile 工程師能不學 Flutter 嗎? 14: 資深被資遣工程師 0: 如果你想要浪費一個人的暑假 1: Swift API 設計之 Value Type 與 Reference Type 5: 這裡沒有心靈雞湯配大餅 總播放次數 24,000+ 平均單集播放次數 1,100+ Twitter 追蹤者 930+ 聽眾捐款 $8,200+ 被垃圾車打斷次數 5+ 錄音檔損毀次數 6+ 第二季開始的節目走向 三人分頭製作節目,錄音人數可以兩人起跳,希望能夠擴大多元性跟庫存彈性、降低錄音壞掉的風險,穩定每週更新 13 的節目:偏開發圈時事、Apple 動向 波肥的節目:挑戰賽、技術導向 喬喬的節目:雞湯大師、賣藥電台(歡迎來信 weakself.dev@gmail.com)、接案經驗 會有名詞解釋專頁 1/27 春節休息一次 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
18:30
January 12, 2020
20: 幕後花絮之 1/11 回家投票
請回家投票!各位投票的結果會影響未來的節目內容。沒有錯,我們就是因為這樣來錄了幕後花絮。 { 完整節目筆記 https://weakself.dev/episodes/20 } 回家投票 本節目有提到的一些網站或資料。 個資風暴:劍橋分析事件 報導者風向戰爭與它的推手專題 打不死的內容農場──揭開「密訊」背後操盤手和中國因素 LINE群組的假訊息從哪來?跨國調查,追出內容農場「直銷」產業鏈 輸出台灣政壇勝選方程式,他到東南亞「賣策略」:我是測試民主的病毒 寫手帶風向不稀奇:AI產文、侵入私人LINE群,輿論軍火商已全面升級 專訪前「劍橋分析」業務總監:只要臉書的生意繼續,民主就有危機 台灣事實查核中心 島民衛星 補充資料:東部返鄉指南 除了難搶的鐵路外現在有三家客運加入,且皆在半價優惠中,沒搶到火車票的東部居民可多加利用,三家客運輪開 24 小時皆有車啊! 統聯客運 台北客運 首都客運 更多 weak self 聽眾信箱 weakself.dev@gmail.com 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
35:34
January 6, 2020
19: 年度最佳 bug
weak self 與小綠的年末大亂聊。你一定會在某些片段找到共鳴。 { 完整節目筆記 https://weakself.dev/episodes/19 } 段落一 MRC、LLVM @IBOutlet/@IBAction crash,可用 IBAnalyzer 解 frame -> Auto Layout Safe Area and iPhone X Review Team 的太太 Build Time 變長 桌機才叫生產力工具,筆電是開會工具 段落二 頂樓加蓋 vs 透天? 花蓮飯店草皮研討會 有波肥小裙子的感謝祭 太乾都會被自動剪掉 Watching a model train 魔幻冰箱 Mars 問 Swift dynamic keyword 小綠臨時的 #波肥挑戰賽 Swift class 的 instance func vs extension func 喔我們回來了 Sign In with Apple 的正確實作方式? 祝新年快樂 更多 weak self 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
54:41
December 29, 2019
18: 綠背影的聽力測驗之怎麼害人
在挑戰賽交鋒許久之後,終於把小綠 #greenback 請來 weak self 啦!我們想來聊當 team lead 的一些經驗,這集就先從招聘與面試談起吧。到底 team lead 在❌害✅hire 人的時候會考慮什麼呢? { 完整節目筆記 https://weakself.dev/episodes/18 } 最近怎麼這麼累 #greenback 在投影片第 37 頁 小綠 refactor 4000 多行的 class 歡迎贊助週五大半夜躲在倉庫錄音的 weak self 錄音錄到老婆奪門而出 其實我們草創的時候就 cue 過 Mars 了 怎麼 hire 人才不會害到自己 履歷怎麼來 小綠怎麼看待考演算法 會職稱對應的工作經驗 會看什麼來刷掉履歷 錯字會不會是個問題 自傳 亮點 面試與被面試 累積手感 人格特質:我會想要跟他一起工作嗎? 面試雙方都是賭注 做點基本功課 更多 weak self 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:06:56
December 22, 2019
17: 便宜行事的第二集—我就是那個奇葩同事
我們隨便聊,大家隨便聽~ { 完整節目筆記 https://weakself.dev/episodes/17 } 遇過的奇葩同事 遇過的奇葩同事🤣 - @GreasoWang Server-Side Swift Server side swift! @marslin_dev try! Swift 注意事項 是誰住在深海的大鳳梨裡 - @joe_trash_talk 講講 try swift 注意事項⚠️ - @GanNaSong try! Swift Tokyo 官網 波肥教你 build Swift source Maxed-out 16-inch MacBook Pro: is the upgrade worth it for developers? - @twostraws 這題我們沒辦法回答 找 @onevcat 上節目 我想知道是怎樣的時間管理,可以把工作 + 家庭 + 社群都做得很好 - @hokilaJ 這樣我想聽怎麼兼顧速度品質和價格 XD - @wenwen_1025 派遣工程師 我最近聽說派遣工程師很流行 有沒有iOS界的派遣女王(? - @myread02 派遣、約聘、外包、接案 個人接案: 「首先你是個業務,再來你是 PM,然後你是會計,最後你才是工程師。」 - 喬喬 更多 weak self 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
35:12
December 8, 2019
16: 資深工程師什麼時候才學 SwiftUI 跟 Design Patterns
標題不是一句話,是三個問題。越到冬天我們就來閒聊,輕鬆一下。也歡迎繼續丟雪片般的問題到 @weak_self 來~ { 完整節目筆記 https://weakself.dev/episodes/16 } 什麼樣才能稱為資深工程師 什麼樣才能稱為資深工程師 - @hanyu_chen_ios 什麼時候應該開始學習 SwiftUI 什麼時候應該開始學習SwiftUI - @stevezhou007 官方 SwiftUI Tutorials 100 days SwiftUI Challenge - Hacking with Swift by Paul Hudson Design+Code SwiftUI Course Design Patterns Design Patterns RxSwift 或 Combine - @ji3g4kami SOLID 原則 Swift 起手式不是寫一堆 protocols,回去複習第 2 集 RxSwift 一言以蔽之:非同步事件是以時間為 index 的 array,比如 event[第5秒] == .response(data) RxSwift 就是 Observer 的 Design Pattern 推薦閱讀官方文件 Design Patterns 文章列表 KKBOX iOS/Mac OS X 基礎開發教材 - 所謂的設計模式 搞笑談軟工 - Patterns Design Patterns 書單 輕鬆讀物 深入淺出設計模式 (Head First Design Patterns) 大話設計模式 聖經本 物件導向設計模式-可再利用物件導向軟體之要素 (精裝典藏版) (Design Patterns: Elements of Reusable Object-Oriented Software) 更多 weak self 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
33:11
December 1, 2019
15: Code Review 趴吐
上一集聊 Code Review 收到熱烈回響。波子欲罷不能,也來分享一下 TBD(Trunk Based Development),應該在台灣算比較不常見的開發流程與 Code Review 經驗。喬喬請假,涵宇代班。 { 完整節目筆記 https://weakself.dev/episodes/15 } 你們家 Branching Model Code Review 趴吐 TBD(Trunk Based Development) 直上 master Feature Flag 不 merge 只有一條線 phabricator 聽眾 wenwen_1025提問: 想了解 code review 到底要做到多細,如果要 review 到整個 story 的行為是否正確,那等於是團隊大家都要很了解每一個 story 要做的內容以及原本的行為,才有辦法 review 這樣寫對不對,但是這應該會降低不少團隊的產出 16 吋 MacBook Pro 到底有多香 MBP 2018 冰箱機 - Dave Lee New 16" MacBook Pro Review: A Developer’s Dream Come True - Kaya Thomas 的 MBP 實測 參考資料 讓 Google 教你 Code Review! 相關集數 14: 資深被資遣工程師 4: 或許我可以把 title 改成資深文件工程師 更多 weak self 官網 https://weakself.dev 主持人 一三、波肥、喬喬 Twitter @weak_self 提問箱 贊助 weak self
1:12:08
November 17, 2019
14: 資深被資遣工程師
休息兩週以後 weak self 強勢回歸,今天我們邀請到在 iOS 社群十分活躍、也是我們的第一位贊助夥伴涵宇。他要跟我們分享他被非自願離職的經驗,以及他在 Code Review 方面的心得。 這集的錄音過程還是不太順利。後半段會是 13 跟涵宇重錄對談,並插入一些波肥跟喬喬的錄音。 { 完整節目筆記 https://weakself.dev/episodes/14 } 歡迎乾爹涵宇 涵宇的履歷@CakeResume weak self 開放個人贊助啦 請見官網贊助說明 前菜:非自願離職的「好處」 被資遣的流程 失業的第一天到 公立就業服務機構 登記,基本上那邊會有完整的流程,總共可以領 6 個月。 失業後不要馬上就業,要至少失業約 14 天(以勞保紀錄為準),才能請領第一個月的失業補助金。 如果有領到第一個月的失業補助金,代表符合失業補助的資格,之後就業後在任意公司只要勞保投保日期滿 90 天,就可以再申請 提前就業獎勵 ,會用沒領完的失業補助金的一半來獎勵,假如你只請領了第一個月,那你的獎勵金就是 (6-1)/2 = 2.5 個月。 如果你順利在工作,可以領到工作的薪資,同時又拿到了 3.5 個月的失業補助,這對缺錢的人來說非常有幫助。 投保額度跟薪資有正相關,但上限約 45,800,每個月可以請領的失業補助金,是這個數字的 60%,一般的情況下你可以拿到 27,480/月。而有扶養的失業者,每個扶養人頭可以再加 10%,最多 20%。也就是說你若扶養 2 個人,你可以拿到 80%,為 36,640/月。 簡單計算: 一般人的 45,800 * 0.6 * 3.5(月) = 92,190 扶養一位 45,800 * 0.7 * 3.5(月) = 112,210 扶養二位 45,800 * 0.8 * 3.5(月) = 128,240(上限) (特別強調,3.5 裡的 2.5 要新工作(新投保)後90天才能申請哦) 以上數字只是印象,實際上要依真正請領到的數字為準。 其他還有連續失業等情況,就不註記在這裡了(更多失業給付的資料)。 主菜:跟著涵宇做 Code Review 初次遇到 Code Review 我透過 merge request 跟團隊 merge 了 說明在前前公司的時候的 code review 機制 前情提要:TDD、Nelson Code Review 怎麼改變我? 開始 Code review 之後我的改變 Code Review 需要哪些支援? GitLab CE(Community Edition) 少了2個我覺得關鍵的功能。(Approved 功能及 default template) .xcodeproj sort 的功能 Gitlab merge request template Chrome 套件 (GitLab - Tree view for code、Stylus) Code Review 與自我成長 每個人都會犯的錯誤!知識的詛咒!! 周哈理窗理論:我不知道我所不知道的,我知道的別人可能不知道。無限縮小我與別人之間的資訊不對稱,不管是對專案也好,對自己也好都是好的發展。 甜點:恥力很高的涵宇 常常被嗆? 順便回答 weak self 提問箱的問題 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱 贊助 weak self
1:03:58
November 10, 2019
13: 喬喬 Erasure
又是歡樂的一集!今天聊起 #weakself挑戰賽的 Type Erasure 與 Opaque Return Type。不過,怎麼某人的聲音到後半段就 erased 了!? { 完整節目筆記 https://weakself.dev/episodes/13 } 前言 上一集成為最熱門集數,所以跟新朋友打招呼、解釋一下我們的名稱 weak self 這個名稱,寫 Swift 或 iOS 工程師一看就知道。但我們其實沒有中文名稱,大家可以幫忙想 weak self, strong community 鐵人賽 iOS Developer Learning Android 系列 by @MarkFlyyyyy 30 天了解 Swift 的 Combine 最高觀看數 bug? 其他整理請見«13的開發者週報» xcode-install 我恨 PAT PAT 是什麼?看 code PAT 三不能: 不能做為變數型別用 不能做為 function 的 return 不能放在 Collection 裡 你是忘記還是害怕想起: Type Erasure 為何而生 PAT 難搞的地方有兩種: 有 Self 的 Protocol:Hashable 有 associatedtype 的 Protocol:IteratorProtocol 對應的做法: AnyHashable: 黑魔法 C++ AnyIterator: 用 generic struct 解決 範例請見這裡 對 AnyHashable 有興趣請右轉 Opaque Return Type weakself 的中文名稱是個 Opaque Type (Caller 決定 generic 是什麼) Opaque Return Type 則由 Callee 決定 generic 是什麼 避免 generiception: public typealias LazyCompactMapCollection  -> C where C.Element == ElementOfResult  = LazyMapSequence 也是對於 Type Erasure 的一種根本性解決手法 範例請見:https://gist.github.com/pofat/a411d785e593982868a54e140f48ad8f 那第三個問題,不能把 PAT 放入 collection 呢? 抱歉,還無法🤷‍♂️ 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
34:01
October 21, 2019
12: 販售焦慮,Mobile 工程師能不學 Flutter 嗎?
長輩有交代:「學好程式不用花很多時間啊,只要一輩子就夠了,一輩子很短的。」然後他又補充:「只需要一輩子,不用兩輩子。」 身為 iOS 工程師,這輩子只要懂 iOS 就好嗎?看似寫了一輩子 Mac/iOS 的 @zonble,最近卻拿了一張 Google Flutter GDE。來聽聽他對於 Flutter 這項趨勢的看法。 { 完整節目筆記 https://weakself.dev/episodes/12 } 長輩我喜歡你啊! 大家好我是 zonble 販售焦慮,iOS 工程師能不學 Flutter 嗎? Flutter 是什麼?打散重組的瀏覽器 瀏覽器是什麼? 為什麼 Flutter 比瀏覽器還快? 什麼樣的 apps 適合用 Flutter iOS 工程師如何理解 Flutter SwiftUI 與 Flutter 的同與異 先把 UIKit 給忘了 整個 Flutter 就是一顆樹(看這張圖就秒懂:Layouts in Flutter) 用 Web 的方式來思考會比較容易 喬喬的 Flutter 經驗 一定要用 Firebase 嗎? Garbage Collection 因為錄音時垃圾車一直來,weak self 考慮開個副牌叫 Garbage Collection 啦🤣 Google 推出 Flutter 的策略 Google 需要從頭到尾自己掌控的框架 一定要用 Firebase? 成為 GDE 的意義與原因 Flutter 有什麼難搞的地方嗎? 目前是 AndroidX 與 Gradle 組成 Flutter 開發團隊 iOS 與 Android 工程師容易忘記的點 歡樂的時光總是特別短暫 人活活得好好的幹嘛跳出舒適圈 人活活得好好的幹嘛去踩坑 應該不用擔心 Flutter 被 Google 收掉 為未來的節目插旗 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
1:17:10
October 13, 2019
11: 先 build 得起來再說—Project Catalyst 踩坑記錄
身為一個 code 寫得不好但是踩坑很擅長的工程師,13 當然也沒有錯過試玩 WWDC19 的新玩具之一 Project Catalyst。這集我們會聊一下這項技術對於 Apple 的戰略意義,對於開發者的影響,以及怎麼樣初步上手。既然是踩坑,還沒到寫好 app 上架發大財的程度,所以就是聊好玩的囉。 { 完整節目筆記 https://weakself.dev/episodes/11 } 補充前一集的內容 完整筆記請見官網 Project Catalyst 簡史 WWDC18 時發表一項計畫的預覽,內部代號是 Marzipan(一種我沒有吃過的食物)。是用來把 iOS app 移植回 Mac 的方式。他們先做出了 4 個 apps 讓人聞香。 Home Voice Memos Stock News Steve Troughton-Smith,就開始研究 Apple 到底把多少 iOS 上的 framework 搬到 Mac 上。他推出一個工具 Marzipanify。 13 的踩坑經驗 從入門到放棄的 Blahker Safari 13 把 Legacy Extension 給砍了,要支援就要改成用 Safari App Extension。 超好轉的 Ladybug 與 Knil Ladybug 是去接 rdar:// 這個 custom URL scheme 幫你開連結到 Open Radar。Knil 則是一個測試 Universal Links 的工具。 打勾勾的心理陷阱與解決套件相依 UIWebView 不能用喔 Static binary 要重新 build 喔 分成兩個 targets 會簡單得多 IAP 要重新搞 可以 build 起來了,下一步呢? Mac 特有的 UX CocoaPods 小技巧 怎樣的專案適合 Project Catalyst 催化劑的戰略意義 歡樂的時光怎麼少了喬喬 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
55:35
October 6, 2019
10: 喬喬 escaping
本集竟然有人 escape!那我們就順勢來回應與 @escaping 有關的 #weakself挑戰賽吧!為什麼 Swift closure 的 [weak self] 要加中括號呢?weak、unowned 你分得清楚差別嗎?一起來參與挑戰吧。 { 完整節目筆記 https://weakself.dev/episodes/10 } weak self 挑戰賽 小綠的挑戰推文 何謂 escaping、nonescaping closure 何時用 weak、unowned,或是不用 Closure 的行為 搭配服用的程式範例 closure 預設會 capture (strong reference) 外部變數 capture list 會生成一份 copy Escaping 和 Nonescaping function return 後還會發生的叫做 escaping 有機會造成 retain cycle Weak 和 Unowned 的運作原理 Swift 的 reference instance 是個 HeapObject HeapObject weak reference 會為 instance 建立 side table 用來計算數目 Swift Ownership Manifesto Objective-C 的 ARC 功能如果不是因為創立全新語言 Swift 時追求 memory safety,恐怕從來不會出現。有興趣的朋友可以去聽 The Swift Community Podcast Ep.1。 何時用 weak 或是 unowned? closure 生命週期與對象生命周期一致時,使用 unowned weak 有較多記憶體消耗 要了解程式碼裡大家的生命周期啊 挑戰賽小結 closure 會捕捉外部使用的變數,有可能造成 retain cycle weak 和 unowned 有不同的機制與生命週期 沒有 retain cycle 不用 weak / unowned weak 有額外的記憶體與性能消耗(可忽略) 工程師的 escape 最後生還者 Part II 13 最近在玩 Apple Arcade 13 的 Apple #ArcadeReview 連載中 iPad mini 超適合玩 Apple Arcade 的,又輕又快又平💸 歡樂的時光總是過得特別快 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
57:16
September 29, 2019
9: 帶你親臨 iPlayground 現場
這是 iPlayground 特別篇,也是 weak self 首次「出外景」。我們在活動現場,非常幸運地錄到了會眾與 zonble、Nelson、onevcat 三位資深工程師的對答。內容非常精彩,別的地方聽不到喔。 也很感謝在 iPlayground 與我們互動的聽眾朋友。謝謝你們的支持與鼓勵。 { 完整節目筆記 https://weakself.dev/episodes/9 } zonble 一言不合就開講 聊聊輸入法 zonble 勘誤:「有個地方該是 n-gram 我說成 unigram。跟前後文有關的叫做 n-gram」 XPC 補充資料: 那些年,被蘋果 ban 掉的 API by zonble(談隱私) Nelson 漫談 iOS 架構 題目:漫談 iOS 架構:MVC / MVVM / VIPER 與 Redux 共同筆記 投影片 談 MVVM-C 裡的 coordinator Redux 有哪些坑?(有一小段切錯錄音模式了,所以聲音跑錯邊) 補充資料: Notification Queue - KKBOX iOS/Mac OS X 基本開發教材 onevcat 喵神回答網路框架問題 題目:網路之難,難於上青天 共同筆記 投影片 Client 會是 singleton 嗎?Token 放在哪裡? 創建 Networking SDK 的動機是什麼? 對於 iOS 學習路線的建議? 談 Refactoring 與測試 其他 iOS 關注的技術面向 網路框架怎麼加上 retry Dependency 一次有多個 API 請求怎麼做比較好 Access token expiration 補充資料: LINE iOS SDK APIKit 与 JOSE 战斗的日子 - 写给 iOS 开发者的密码学入门手册 (基础) 13 的 Xcode 小提醒 不要直接從 Mac App Store 下載 Xcode,要從這裡 讓舊版 Xcode 能夠開發新版 iOS 裝置的方法 感謝涵宇贊助麥克風 竟然送給我們一支 Blue Yeti,比小雪球高級多啦。這次活動的現場收音就派上了用場。 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
1:15:34
September 26, 2019
8: 平行宇宙工程師
上禮拜明明就是 Apple 發表會,整個 podcast 錄完竟然一句話都沒提到。你們是活在平行宇宙嗎?沒錯,這集我們穿越時空回到「提問箱」的歷史去做節目了。再加上一個小時的錄音上限,就是一個輕鬆愉快的連假。 { 完整節目筆記 https://weakself.dev/episodes/8 } Q1 聲音品質不佳? 我們買了三個小雪球。 Q2 想聽關於架構的事? 資深文件工程師那集有稍微帶到 Q3 Opaque Return Type? 其實這段是在說,有些提問太 opaque 了 Q4 Code Review 時發生的爭執? 目前沒有好的回答 都是修行啊(誤 Q5 CI 實作? 聊了一下三人用過的 CI 服務: Team Foundation Server Jenkins GitLab CI CircleCI Travis CI GitHub Actions App Center Bitrise 其他有提到的東西 Swift source compatibility suite Fastlane Q6 各種打臉 HR 的故事或方法? 喬喬你是在煮心靈雞湯喔? Q7 期待有 Android 話題的 Podcast? 這個問題也是滿可愛的。我們有打算公開做 podcast 的 know-how。 Q8 為何 ViewModel 大多使用 class? 對應到第 1 集的內容 #波肥挑戰賽 結尾:weak self 挑戰賽 快點來我們的提問箱提問吧! 或是在 Twitter 推文時標注 #weakself挑戰賽 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
28:47
September 15, 2019
7: 這集叫罐頭🥫
  趕在 Apple 發表會之前,我們剪了一小段閒聊。 「除了 iOS 以外你們會不會想接觸其他平台?」 「為什麼要突然問這個?」 「這個我知道,這個我知道。因為現在 iPhone 各種不利的謠言,坊間一直流傳,加上 Cook 又在發表會之前賣股票,大家在想 iPhone 是不是快 G 了。那如果 iPhone 有危機呢,身為 iOS 工程師當然連帶有危機~」 請注意,因為時程壓力,本集的聲音比較生肉,也沒有音樂。 { 完整節目筆記 https://weakself.dev/episodes/7 } Hi 大家好我是罐頭 珍奶版 iPhone 藍波哥 Guilherme Rambo 的 Twitter 謠言集散地 https://9to5mac.com 玩膩 iOS 的你會想去做別的事嗎? Swift for Tensorflow 製造焦慮膩 Apple TV 這個詞到底是啥意思 Apple TV HD Apple TV 4K Apple TV app Apple TV+ 假設轉換跑道 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
29:39
September 10, 2019
6: 真・三人・weak self
本集聊了工程師怎樣用 Twitter、以前學習寫程式的經驗、遇過的強者,以及對於至今節目內容的檢討。 雖然我們辦了投票決定是由一三來獨講這一集的節目,錄音時卻發生了意料之外的事情…。 { 完整節目筆記 https://weakself.dev/episodes/6 } 開場獨白 因為聽眾反映我們的聲音不好辨認,我們試著三個人分開錄音。不過,本來說好的分開錄音其實是一人錄一段,結果卻變成… 不是說好我一個人講嗎? 抱歉囉,結果「一三摔到新買的 iPad mini」就不聊了🤪🤪🤪 來做貼紙囉 工程師怎樣用 Twitter 沒空刷推的就來訂閱«13的開發者週報» Tweetbot 支援依照時間順序排列、列表 13 做的擋蓋板廣告開源 app—Blahker 13 整理的台灣 iOS 開發者 Twitter 列表—iOS Developers TW 🇹🇼 沒什麼東西是全新的 第一次寫程式的經驗 真 weak 告白 + 被強者智商碾壓的經驗 泊學 - 一個全端工程師的自學網站 持續學習的工程師職涯 開放式結局 花絮:節目檢討 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
1:15:59
September 1, 2019
5: 這裡沒有心靈雞湯配大餅
受到推友 @GanNaSong 點菜的啟發,加上喬喬憋了很久沒講話,這次錄音一上來就問起 13 為什麼開始做 TDD,聊了軟體開發團隊的現象,就這樣講了 2 個小時😂 剪輯完有 1 小時 + 半小時的 bonus,開頭結尾也懶得錄了。歡迎測試高手來跟我們交流交流。 { 完整節目筆記 https://weakself.dev/episodes/5 } 也來聊 TDD 為什麼 13 開始搞 TDD TDD 跟 unit test 不是同一件事 喬喬入門 TDD 的挫折經驗 寫測試會遇到的幾個問題 團隊為什麼不寫測試 SwiftUI 能算是 UI 的 TDD 嗎? 驗證 UI 的 Snapshot Testing 團隊沒有萬靈丹 組織當中的問題都是溝通問題 追求完美無瑕的 code? 同事之間互相打擾要拉開時空 職業倦怠的解套方式 沒有在意就沒有傷害 Bonus: 給你滿滿的喬喬 本來已經要收尾了結果又繼續聊下去,後面 25 分鐘就當作 bonus 吧! 喬喬反省自己的職涯 Team lead 或團隊領導者的角色 導入敏捷為什麼沒效 享勞健保怎麼會是福利 參考資料 Lynda.com - iOS App Development: Test-Driven Development 工程師幹話 - 技術主管怎樣有效利用時間 TechLead YouTube Channel 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
1:30:06
August 25, 2019
4: 或許我可以把 title 改成資深文件工程師
啊哈,又是一集採訪節目。這次我們找了資深工程師 Nelson 來跟我們聊聊帶團隊的經驗。在開發團隊中,若有建立共用文件的習慣,會逐漸累積成事半功倍的效果,Nelson 他們是怎麼做到累積出 2、30 篇文件,後來又達成什麼效果呢?跟著 weak self 一探究竟吧。 { 完整節目筆記 https://weakself.dev/episodes/4 } 最近在忙什麼 聲音品質的調整 前一集有重新後製並上傳 這集喬喬人在外太空與我們錄音,所以聲音比較特別 波肥的 CocoaPods 研究心得 美團 zsource 開發談 cocoapods-binary,作者現身說法 為什麼叫資深文件工程師 這個 sprint 的工作是寫文件,看著新人手冊、產品架構、功能流程等文件越來越齊全,有種莫名的成就感 XDDD 或許我可以把 title 改成資深文件工程師 :D – @NelsonT 新人 onboarding 會交代哪些事情 KKBOX iOS/Mac OS X 基礎開發教材 Coding Style Objective-C formatter uncrustify App 架構的演進 用 Objective-C 實作 Redux 架構 喬喬沒跑完測試不能 commit? 硬體廠的軟體開發經驗 Pair Programming 你們都怎麼做 Code Review 波肥的 phabricator 經驗分享 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
59:21
August 18, 2019
3: 就是要豪華便當!詹里長 hokila 的技術研討會全攻略
這集邀請到特別來賓 iPlayground 總召—hokila,談談參加技術研討會的一些經驗與心得,以及 iPlayground 想帶給大家的社群氛圍。WWDC 跑 lab 跑到跟 Apple 工程師推坑買東西、日本的筋肉 Swift 是什麼東東,以及 iPlayground 的籌備祕辛,就是要聽 hokila。 ⚠️警告!本集不太適合搭捷運或上班聽,怕你憋笑會內傷。 { 完整節目筆記 https://weakself.dev/episodes/3 } 🤔為什麼叫做 hokila 🇹🇼台灣的 meetup CocoaHeads Taipei,都在 Cardinal Blue 舉辦 出國參加研討會的契機 🇯🇵日本研討會的神奇特色 iOSDC Japan 喜歡用國產 framework 筋肉.swift 在研討會乾杯🍻 🇺🇸WWDC 攻略 公司沒補助的話,自己存 10~15 萬 hokila 去 WWDC 的經驗談 WWDC 攻略(2016) WWDC 19 第一天心得 WWDC 19 第二三天心得 WWDC 19 第四五天心得 🇺🇸WWDC 周邊的研討會 AltConf try! Swift San Jose 研討會交朋友很厲害的道具🍍🍰 🇹🇼iPlayground 籌備祕辛 2018 為什麼叫 iPlayground? iPlayground 2018 影片大集合 Ask the Speaker 強制配對 掀起 Swift 的小裙子面紗 - Pofat:影片、投影片 找很多業界資深工程師來對談的 Panel 為什麼叫詹里長? 感動的事情 2019 更多的國際講者 講題的難度有提高 Chef Food Officer 🍱 便當不會讓大家失望 工商服務一下,搶票由此去 💪其他提升實力的方法 用 Twitter 追蹤知名的開發者 來聽 podcast 訂閱 «13的開發者週報» 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
1:23:36
August 11, 2019
2: Swift API 設計之原來我不會用 protocol
主題延續上一集的 Swift API 設計,進入了 protocol 與 generic 的領域。 { 完整節目筆記 https://weakself.dev/episodes/2 } 前情提要 CJ 同學提出了一個好問題:「Value type 在某些時刻,會存在 heap 中?」波肥寫了一篇 blog 文章來回答。 Protocol 是什麼? Protocol-Oriented Programming in Swift (WWDC 2015) Protocol 也有兩種 Protocol 的 Existentail Container 與其結構 Opaque Result Type POP 要解決什麼問題? Duck Typing 比起繼承,要多愛用 Protocol 組合 標準函式庫裡的 protocols Array 的 Protocol Hierarchy 視覺呈現 (Swift 4.2) Protocol 使用指南 先寫 concrete type 是否有已存在的 protocol 可以 extension 是否可由已存在的 protocol 組合完以成功能 優先考慮 Generic ,最後才是創造一個新的 protocol 一個簡單的用 generic struct 取代 protocol 的例子。 隨堂小測驗 兩者之間有什麼差異? 尾聲 小綠同學討論 forEach 與 for in 歡迎訂閱«13 的開發者週報» 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
37:41
August 4, 2019
1: Swift API 設計之 Value Type 與 Reference Type
波肥想跟我們談談使用 Swift 時,介面設計的想法、觀念與小技巧。因為太長講不完,所以這集先討論 Value Type 與 Reference Type。 { 完整節目筆記 https://weakself.dev/episodes/1 } Swift 這門語言的明確性原則 Modern Swift API Design (WWDC 2019) Swift Modules 官方文件 只 import 一個 class 或 func - NSHipster 大量使用 Value Type 的 Swift 值還是引用? Local Reasoning Stack vs Heap Understanding Swift Performance (WWDC 2016): Heap, Stack and Performance Swift 裡用來管理 heap memory 的資料結構是 doubly linked list 扯題:ABI 穩定 什麼場合要用 class 當你需要 retain count 以及 deinitialization 時 當你需要 shared 資料 (centrally held and shared, singleton) 扯題:struct 可以有 singleton 嗎? 當 identity 不等同於 equality Tagged Pointer 詳解(只適用於 iOS 12 之前的版本。iOS 12 有新的 Tagged Pointer 機制) 假使拿 struct 包 class 扯題:SwiftUI 用的 @propertyWrapper 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
43:12
July 28, 2019
0: 如果你想要浪費一個人的暑假
三個在 iOS 開發圈打滾的台灣工程師,專為 Apple/iOS 開發者而製作的 Podcast。 這一集我們聊了 WWDC 到正式版發表這個期間,要怎麼安排時間跟資源。是要先學新東西,還是先修 bug 咧? { 完整節目筆記 https://weakself.dev/episodes/0 } 先解決相容問題 從 Xcode 正式版連到 iOS beta 版裝置、gist 不要懷疑,就是官方的罷格 Xcode Release Notes iOS Release Notes Xcode 10.1 did not fix the iOS 9 asset catalogs crash problem - Developer Forums 全新的回報機制 Feedback Assistant 使用者裝了 Public Beta 如果能把 emoji 從 Public Beta 拿掉 - @chockenberry 檢查到是 iOS 13 beta 直接不給用 - @chockenberry 從六月開始就沒有睡好覺了 一三最近寫的 NSAttributedStringBuilder WWDC 影片怎麼看比較快 WWDC for macOS - wwdc.io 運用社群的力量 投稿至 iPlayground 2019 推薦幾個 WWDC19 Sessions Xcode 相關:401、412、413 Swift Packages 與 XCFrameworks:408、410、416 Sign In with Apple 相關:706、504 iPadOS 與 SceneDelegate:212 Great Developer Habits 239 更多 weak self 主講人 一三、波肥、喬喬 官網 https://weakself.dev Twitter @weak_self 提問箱
36:38
July 21, 2019
試聽集・節目簡介
weak self 是三個在 iOS 開發圈打滾的台灣工程師,專為 Apple & iOS 開發者而製作的 Podcast。主講人一三、波肥、喬喬。中文名稱是《我很弱,不要把我算進去》🤪 節目內容涵蓋了 iOS 與 Apple 開發圈的新知討論、踩坑經驗、人物採訪、社群活動、職場生活。
01:52
July 21, 2019