Skip to main content
weak self

weak self

By 一三、波肥、喬喬

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

12: 販售焦慮,Mobile 工程師能不學 Flutter 嗎?

weak selfOct 13, 2019

00:00
01:17:10
47: 好,錄了!工程師與 PM 圍繞 WWDC20 開展的對話

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
Aug 02, 202001:22:04
46: 推你入坑 SwiftUI 不後悔

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
參考資料 更多 weak self
Jul 26, 202048:30
45: iOS 14 主畫面帶來 App 存在感危機!

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
Jul 19, 202024:36
44: 隱私流程改到你會怕
Jul 12, 202041:58
43: MetricKit—App 怎麼死的不用通靈啦
Jul 08, 202029:12
42: App Clips—應用程式切片是迷你 App 嗎?

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,體驗會稍有不同
相關資源 更多 weak self
Jul 05, 202025:46
41: Widgets are not mini apps, widgets are not mini apps, widgets are not mini apps

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 都要做大量即時運算
參考資料 更多 weak self
Jul 01, 202020:46
40: Apple Silicon
Jun 28, 202022:57
39: 第三季弱勢回歸!先來聊聊 WWDC20 印象
Jun 26, 202016:26
38: 一直砍扣一直爽

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)
東看西看 雜談
  • WWDC
  • 做做 side project
  • 指數
更多 weak self
May 31, 202001:06:02
37: 欸,這個壞掉了之 Log 的那些事、IAP 的傷害

37: 欸,這個壞掉了之 Log 的那些事、IAP 的傷害

本集由傷害擔當與雞湯擔當來討論技術擔當的工作。

{ 完整節目筆記 https://weakself.dev/episodes/37 }

關於 Log 的那些事 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
欸,這個壞掉了 收不掉的結尾加料 更多 weak self
May 24, 202001:13:37
36: Strong Wife 跟 WWDC 回顧加預測

36: Strong Wife 跟 WWDC 回顧加預測

某人的老婆提議要錄工程師太太單元。WWDC。Facebook SDK 爆炸事件。

{ 完整節目筆記 https://weakself.dev/episodes/36 }

Strong Wife
  • 不保證會出啦哈哈
WWDC20 Facebook SDK 更多 weak self
May 17, 202001:15:45
35: 勞動節特輯之人生不一定有答案

35: 勞動節特輯之人生不一定有答案

三位主持人合體了!今天的遊戲規則是名詞都要翻成中文。

{ 完整節目筆記 https://weakself.dev/episodes/35 }

這個也不會,那個也不會
  • 工程師一定往管理職發展嗎
教育訓練之你會不會開會 一成不變的做事方式 vs 學習怎麼學習 談燃燒殆盡
  • 怎麼保持能量
  • 成為諮商師之前要先當案主
  • 你的心理安全網建好了嗎
聊節目本身
  • 收尾收不掉🤪
  • 請多多回饋意見🙏
  • 沒在管的剪輯✂️
Bonus: 壓力指標 HRV 與 Apple Watch 收尾:勞動節快樂 更多 weak self
May 03, 202001:08:33
34: 心動投資法之蘋果的股票可不可以買
Apr 26, 202058:42
33: 喬喬沒賣藥電台:iPhone SE

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
Apr 19, 202050:36
32: 本集節目要 @audreyt 唐鳳、Pair Programming、Apple 與 Google 合作

32: 本集節目要 @audreyt 唐鳳、Pair Programming、Apple 與 Google 合作

為什麼健保快易通 iOS App 的 Logo 扁掉了,怎麼修?AirPlay 不是只有鏡像模式,但大家都搞不清楚?13 分享 Pair Programming 經驗。Apple 與 Google 攜手合作。

{ 完整節目筆記 https://weakself.dev/episodes/32 }

健保快易通 iOS App 的 Logo 扁掉了 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
Apr 12, 202056:51
31: 真的不是聊動森的 Podcast

31: 真的不是聊動森的 Podcast

一三跟波肥來聊 iOS 開發圈的愚人節趣事。然後還是有聊到一些遊戲。

{ 完整節目筆記 https://weakself.dev/episodes/31 }

真的不是聊動森

Podcast 搜尋引擎 Listen Notes,搜尋動森會找到 weak self 😂

惡靈古堡的起源故事

CAPCOM 惡靈古堡系列的起源故事、三上真司神谷英樹(維基百科)

企業都是會垮的 說到生產力工具嘛 iOS 開發圈的愚人節趣事 Xcode Bugs 收尾 更多 weak self
Apr 05, 202001:00:38
30: 開發圈近況與遊戲的隨性聊

30: 開發圈近況與遊戲的隨性聊

這集由一三跟波肥完全沒準備、開麥就裸聊,效果意外地不錯!

{ 完整節目筆記 https://weakself.dev/episodes/30 }

開場閒聊:什麼都底累了 WFH 經驗談 動物森友會
  • 一不小心就可以玩上百小時,所以從錢的角度來說不貴
  • 一機多人一島、暫時沒有存檔備份跟轉移的方案
  • 與真實生活步調的高度模擬
AR & LiDAR iPad Pro A12Z App 用掉多少 RAM? 次世代主機的 SSD 特性 收尾:準備買遊戲
Mar 29, 202001:01:30
29: 來做 Side Project 系列之好用的搜尋功能

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 的搜尋。有幾個方法:

  1. NSUserActivity 把使用者操作過的動作,或是點開過的項目加到 index
    這個有做沒有壞處,還可以順便支援 HandoffSiri Shortcuts 等等
  2. Core Spotlight framework 批次操作
    CS 的 index 是 private、on-device
    甚至可以做成 app extension
    甚至可以拿 CSSearchQuery 來做自己 app 的搜尋引擎。也就是 app 內與外都共用同一個 index 跟搜尋引擎(但我沒有這樣做過)
  3. 如果有內容相通的網站,可以寫 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
Mar 15, 202057:11
28: 來做 Side Project 系列之誰能比我鍵
Mar 08, 202048:39
27: 來做 Side Project 系列之不要剛見面就要個資啊

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
Mar 01, 202056:42
26: iOS 開發生平大坑之 DateFormatter

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
Feb 23, 202049:02
25: 難道公司發大財了!?App Launch Time 加速面面觀

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 所花時間的程式碼
奇技淫巧 更多 weak self
Feb 16, 202001:09:06
24: 你也是薪水小倫嗎?上班族如何利用上班時間精進程式功力

24: 你也是薪水小倫嗎?上班族如何利用上班時間精進程式功力

喬喬的雞湯賣藥電台再出發。

下班之後無心無力或沒時間加強技能,那可以在上班時間合理合法地學習嗎?

再問,怎樣搞定你的 PM,或說同事之間怎麼做人處事才好相處?

{ 完整節目筆記 https://weakself.dev/episodes/24 }

薪水小倫
  • Meme: 編譯太久滑一下推特,不小心就滑出去
  • 學習怎樣偷時間跟加速:縮短操作指令、IDE、打字時間、把重複的作業給自動化等等
  • Xcode 小技巧:Control + Opt + Cmd + F => Fix All。用來自動完成 Swift switch cases 很方便
  • 把工作內容會用到的工具跟流程、看起來很眼熟的名詞,其背後的原理都弄熟
  • 寫一些內部的工具、library
  • 只會用 code 寫 UI 的人可以試試 Storyboard,反之亦然
  • 練習讀程式碼的鑑賞力
  • 利用既有知識來輔助學習新知識。幫自己搭梯子,降低學習曲線
  • 透過寫作來學習組織知識架構
  • 加強英文,讀官方文件算是很實用的路線
同事之間 更多 weak self
Feb 09, 202001:07:19
23: 在家工作!WFH 時怎麼樣才不會 WTF

23: 在家工作!WFH 時怎麼樣才不會 WTF

居家隔離?在家工作?聊聊遠端工作的利與弊。

{ 完整節目筆記 https://weakself.dev/episodes/23 }

2020 iOS 工程師展望與規劃

其實跟往年差不多規律。

要學 Objective-C 的話:

  • 可以從長輩的教材開始讀起

如果要學 Flutter 的話:

  • 請回去聽 weak self S1E12

真的要學 SwiftUI 的話:

WFH & 遠端工作 更多 weak self
Feb 02, 202041:30
22: 喬喬賣藥電台:上班族業績與工程師技術債+如何跟強者同事相處+玻璃心同事

22: 喬喬賣藥電台:上班族業績與工程師技術債+如何跟強者同事相處+玻璃心同事

第二季開始啦!喬喬的賣藥電台,跟 13 聊了三個題目。

{ 完整節目筆記 https://weakself.dev/episodes/22 }

工程師該不該放心大膽創造技術債? 你好,我是 weak self 的聽眾,也是工程師幹話的忠實讀者。想請問 weak self 對⟪工程師應該放心大膽地創造技術負債⟫這篇文章的看法? 弱弱的我如何跟強者同事相處的指南? 可以來一集,弱弱的我如何跟強者同事相處的指南嗎?
心理素質不夠強,連問問題都怕怕的 玻璃心同事? 跟同事的回饋或建議,彼此之間的不舒服? 更多 weak self
Jan 19, 202001:05:31
21: @escaping vs @nonescaping

21: @escaping vs @nonescaping

在某個假設的平行時空當中,這集 podcast 會是在討論肉身的 @escaping…

{ 完整節目筆記 https://weakself.dev/episodes/21 }

第一季統計 第二季開始的節目走向
  • 三人分頭製作節目,錄音人數可以兩人起跳,希望能夠擴大多元性跟庫存彈性、降低錄音壞掉的風險,穩定每週更新
  • 13 的節目:偏開發圈時事、Apple 動向
  • 波肥的節目:挑戰賽、技術導向
  • 喬喬的節目:雞湯大師、賣藥電台(歡迎來信 weakself.dev@gmail.com)、接案經驗
  • 會有名詞解釋專頁
  • 1/27 春節休息一次
更多 weak self
Jan 12, 202018:30
20: 幕後花絮之 1/11 回家投票
Jan 06, 202035:35
19: 年度最佳 bug

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 變長
  • 桌機才叫生產力工具,筆電是開會工具
段落二 更多 weak self
Dec 29, 201954:41
18: 綠背影的聽力測驗之怎麼害人

18: 綠背影的聽力測驗之怎麼害人

在挑戰賽交鋒許久之後,終於把小綠 #greenback 請來 weak self 啦!我們想來聊當 team lead 的一些經驗,這集就先從招聘與面試談起吧。到底 team lead 在❌害✅hire 人的時候會考慮什麼呢?

{ 完整節目筆記 https://weakself.dev/episodes/18 }

最近怎麼這麼累 怎麼 hire 人才不會害到自己
  • 履歷怎麼來
  • 小綠怎麼看待考演算法
  • 會職稱對應的工作經驗
會看什麼來刷掉履歷
  • 錯字會不會是個問題
  • 自傳
  • 亮點
面試與被面試
  • 累積手感
  • 人格特質:我會想要跟他一起工作嗎?
  • 面試雙方都是賭注
  • 做點基本功課
更多 weak self
Dec 22, 201901:06:56
17: 便宜行事的第二集—我就是那個奇葩同事

17: 便宜行事的第二集—我就是那個奇葩同事

我們隨便聊,大家隨便聽~

{ 完整節目筆記 https://weakself.dev/episodes/17 }

遇過的奇葩同事 遇過的奇葩同事🤣 - @GreasoWang Server-Side Swift Server side swift! @marslin_dev try! Swift 注意事項 是誰住在深海的大鳳梨裡 - @joe_trash_talk 講講 try swift 注意事項⚠️ - @GanNaSong 這題我們沒辦法回答 找 @onevcat 上節目
我想知道是怎樣的時間管理,可以把工作 + 家庭 + 社群都做得很好 - @hokilaJ 這樣我想聽怎麼兼顧速度品質和價格 XD - @wenwen_1025 派遣工程師 我最近聽說派遣工程師很流行
有沒有iOS界的派遣女王(? - @myread02
  • 派遣、約聘、外包、接案
  • 個人接案:
「首先你是個業務,再來你是 PM,然後你是會計,最後你才是工程師。」 - 喬喬 更多 weak self
Dec 08, 201935:12
16: 資深工程師什麼時候才學 SwiftUI 跟 Design Patterns

16: 資深工程師什麼時候才學 SwiftUI 跟 Design Patterns

標題不是一句話,是三個問題。越到冬天我們就來閒聊,輕鬆一下。也歡迎繼續丟雪片般的問題到 @weak_self 來~

{ 完整節目筆記 https://weakself.dev/episodes/16 }

什麼樣才能稱為資深工程師 什麼樣才能稱為資深工程師 - @hanyu_chen_ios
什麼時候應該開始學習 SwiftUI 什麼時候應該開始學習SwiftUI - @stevezhou007
Design Patterns Design Patterns
RxSwift 或 Combine - @ji3g4kami
更多 weak self
Dec 01, 201933:12
15: Code Review 趴吐

15: Code Review 趴吐

上一集聊 Code Review 收到熱烈回響。波子欲罷不能,也來分享一下 TBD(Trunk Based Development),應該在台灣算比較不常見的開發流程與 Code Review 經驗。喬喬請假,涵宇代班。

{ 完整節目筆記 https://weakself.dev/episodes/15 }

你們家 Branching Model Code Review 趴吐 TBD(Trunk Based Development)
  1. 直上 master
  2. Feature Flag
  3. 不 merge
  4. 只有一條線
  5. phabricator

聽眾 wenwen_1025提問

想了解 code review 到底要做到多細,如果要 review 到整個 story 的行為是否正確,那等於是團隊大家都要很了解每一個 story 要做的內容以及原本的行為,才有辦法 review 這樣寫對不對,但是這應該會降低不少團隊的產出 16 吋 MacBook Pro 到底有多香 參考資料 相關集數 更多 weak self
Nov 17, 201901:12:09
14: 資深被資遣工程師

14: 資深被資遣工程師

休息兩週以後 weak self 強勢回歸,今天我們邀請到在 iOS 社群十分活躍、也是我們的第一位贊助夥伴涵宇。他要跟我們分享他被非自願離職的經驗,以及他在 Code Review 方面的心得。

這集的錄音過程還是不太順利。後半段會是 13 跟涵宇重錄對談,並插入一些波肥跟喬喬的錄音。

{ 完整節目筆記 https://weakself.dev/episodes/14 }

歡迎乾爹涵宇 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 機制
  • 前情提要:TDDNelson
Code Review 怎麼改變我? Code Review 需要哪些支援? Code Review 與自我成長 周哈理窗理論:我不知道我所不知道的,我知道的別人可能不知道。無限縮小我與別人之間的資訊不對稱,不管是對專案也好,對自己也好都是好的發展。
甜點:恥力很高的涵宇
  • 常常被嗆?
  • 順便回答 weak self 提問箱的問題
更多 weak self
Nov 10, 201901:03:59
13: 喬喬 Erasure

13: 喬喬 Erasure

又是歡樂的一集!今天聊起 #weakself挑戰賽的 Type Erasure 與 Opaque Return Type。不過,怎麼某人的聲音到後半段就 erased 了!?

{ 完整節目筆記 https://weakself.dev/episodes/13 }

前言 我恨 PAT

PAT 是什麼?看 code

PAT 三不能:

  • 不能做為變數型別用
  • 不能做為 function 的 return
  • 不能放在 Collection 裡

你是忘記還是害怕想起:

Type Erasure 為何而生

PAT 難搞的地方有兩種:

  1. 有 Self 的 Protocol:Hashable
  2. 有 associatedtype 的 Protocol:IteratorProtocol

對應的做法:

  1. AnyHashable: 黑魔法 C++
  2. AnyIterator: 用 generic struct 解決
    範例請見這裡
  3. 對 AnyHashable 有興趣請右轉
Opaque Return Type
  • weakself 的中文名稱是個 Opaque Type (Caller 決定 generic 是什麼)
  • Opaque Return Type 則由 Callee 決定 generic 是什麼
  • 避免 generiception:
public typealias LazyCompactMapCollection
 -> C where C.Element == ElementOfResult
 = LazyMapSequence>, ElementOfResult> 那第三個問題,不能把 PAT 放入 collection 呢?

抱歉,還無法🤷‍♂️

更多 weak self
Oct 21, 201934:01
12: 販售焦慮,Mobile 工程師能不學 Flutter 嗎?

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
Oct 13, 201901:17:10
11: 先 build 得起來再說—Project Catalyst 踩坑記錄

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。

超好轉的 LadybugKnil

Ladybug 是去接 rdar:// 這個 custom URL scheme 幫你開連結到 Open Radar。Knil 則是一個測試 Universal Links 的工具。

打勾勾的心理陷阱與解決套件相依 IAP 要重新搞 可以 build 起來了,下一步呢?

Mac 特有的 UX

CocoaPods 小技巧 怎樣的專案適合 Project Catalyst 催化劑的戰略意義 歡樂的時光怎麼少了喬喬 更多 weak self
Oct 06, 201955:36
10: 喬喬 escaping

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 的運作原理 何時用 weak 或是 unowned?
  • closure 生命週期與對象生命周期一致時,使用 unowned
  • weak 有較多記憶體消耗
  • 要了解程式碼裡大家的生命周期啊
挑戰賽小結
  • closure 會捕捉外部使用的變數,有可能造成 retain cycle
  • weak 和 unowned 有不同的機制與生命週期
  • 沒有 retain cycle 不用 weak / unowned
  • weak 有額外的記憶體與性能消耗(可忽略)
工程師的 escape 13 最近在玩 Apple Arcade
  • 13 的 Apple #ArcadeReview 連載中
  • iPad mini 超適合玩 Apple Arcade 的,又輕又快又平💸
歡樂的時光總是過得特別快 更多 weak self
Sep 29, 201957:16
9: 帶你親臨 iPlayground 現場

9: 帶你親臨 iPlayground 現場

這是 iPlayground 特別篇,也是 weak self 首次「出外景」。我們在活動現場,非常幸運地錄到了會眾與 zonbleNelsononevcat 三位資深工程師的對答。內容非常精彩,別的地方聽不到喔。

也很感謝在 iPlayground 與我們互動的聽眾朋友。謝謝你們的支持與鼓勵。

{ 完整節目筆記 https://weakself.dev/episodes/9 }

zonble 一言不合就開講
  • 聊聊輸入法
    zonble 勘誤:「有個地方該是 n-gram 我說成 unigram。跟前後文有關的叫做 n-gram」
  • XPC

補充資料:

Nelson 漫談 iOS 架構
  • 題目:漫談 iOS 架構:MVC / MVVM / VIPER 與 Redux
  • 共同筆記
  • 投影片
  • 談 MVVM-C 裡的 coordinator
  • Redux 有哪些坑?(有一小段切錯錄音模式了,所以聲音跑錯邊)

補充資料:

onevcat 喵神回答網路框架問題
  • 題目:網路之難,難於上青天
  • 共同筆記
  • 投影片
  • Client 會是 singleton 嗎?Token 放在哪裡?
  • 創建 Networking SDK 的動機是什麼?
  • 對於 iOS 學習路線的建議?
  • 談 Refactoring 與測試
  • 其他 iOS 關注的技術面向
  • 網路框架怎麼加上 retry
  • Dependency
  • 一次有多個 API 請求怎麼做比較好
  • Access token expiration

補充資料:

13 的 Xcode 小提醒
  • 不要直接從 Mac App Store 下載 Xcode,要從這裡
  • 讓舊版 Xcode 能夠開發新版 iOS 裝置的方法
感謝涵宇贊助麥克風

竟然送給我們一支 Blue Yeti,比小雪球高級多啦。這次活動的現場收音就派上了用場。

更多 weak self
Sep 26, 201901:15:34
8: 平行宇宙工程師

8: 平行宇宙工程師

上禮拜明明就是 Apple 發表會,整個 podcast 錄完竟然一句話都沒提到。你們是活在平行宇宙嗎?沒錯,這集我們穿越時空回到「提問箱」的歷史去做節目了。再加上一個小時的錄音上限,就是一個輕鬆愉快的連假。

{ 完整節目筆記 https://weakself.dev/episodes/8 }

Q1 聲音品質不佳?

我們買了三個小雪球。

Q2 想聽關於架構的事? Q3 Opaque Return Type?

其實這段是在說,有些提問太 opaque 了

Q4 Code Review 時發生的爭執?

目前沒有好的回答
都是修行啊(誤

Q5 CI 實作?

聊了一下三人用過的 CI 服務:

其他有提到的東西

Q6 各種打臉 HR 的故事或方法?

喬喬你是在煮心靈雞湯喔?

Q7 期待有 Android 話題的 Podcast?

這個問題也是滿可愛的。我們有打算公開做 podcast 的 know-how。

Q8 為何 ViewModel 大多使用 class? 結尾:weak self 挑戰賽 更多 weak self
Sep 15, 201928:48
7: 這集叫罐頭🥫
Sep 10, 201929:40
6: 真・三人・weak self

6: 真・三人・weak self

本集聊了工程師怎樣用 Twitter、以前學習寫程式的經驗、遇過的強者,以及對於至今節目內容的檢討。

雖然我們辦了投票決定是由一三來獨講這一集的節目,錄音時卻發生了意料之外的事情…。

{ 完整節目筆記 https://weakself.dev/episodes/6 }

開場獨白

因為聽眾反映我們的聲音不好辨認,我們試著三個人分開錄音。不過,本來說好的分開錄音其實是一人錄一段,結果卻變成…

不是說好我一個人講嗎?

抱歉囉,結果「一三摔到新買的 iPad mini」就不聊了🤪🤪🤪

來做貼紙囉 工程師怎樣用 Twitter 沒什麼東西是全新的 第一次寫程式的經驗 真 weak 告白 + 被強者智商碾壓的經驗 持續學習的工程師職涯 開放式結局 花絮:節目檢討 更多 weak self
Sep 01, 201901:15:59
5: 這裡沒有心靈雞湯配大餅

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 或團隊領導者的角色
  • 導入敏捷為什麼沒效
  • 享勞健保怎麼會是福利
參考資料 更多 weak self
Aug 25, 201901:30:06
4: 或許我可以把 title 改成資深文件工程師

4: 或許我可以把 title 改成資深文件工程師

啊哈,又是一集採訪節目。這次我們找了資深工程師 Nelson 來跟我們聊聊帶團隊的經驗。在開發團隊中,若有建立共用文件的習慣,會逐漸累積成事半功倍的效果,Nelson 他們是怎麼做到累積出 2、30 篇文件,後來又達成什麼效果呢?跟著 weak self 一探究竟吧。

{ 完整節目筆記 https://weakself.dev/episodes/4 }

最近在忙什麼 為什麼叫資深文件工程師 這個 sprint 的工作是寫文件,看著新人手冊、產品架構、功能流程等文件越來越齊全,有種莫名的成就感 XDDD
或許我可以把 title 改成資深文件工程師 :D
@NelsonT 新人 onboarding 會交代哪些事情 Coding Style App 架構的演進 喬喬沒跑完測試不能 commit?
  • 硬體廠的軟體開發經驗
Pair Programming 你們都怎麼做 Code Review 更多 weak self
Aug 18, 201959:21
3: 就是要豪華便當!詹里長 hokila 的技術研討會全攻略

3: 就是要豪華便當!詹里長 hokila 的技術研討會全攻略

這集邀請到特別來賓 iPlayground 總召—hokila,談談參加技術研討會的一些經驗與心得,以及 iPlayground 想帶給大家的社群氛圍。WWDC 跑 lab 跑到跟 Apple 工程師推坑買東西、日本的筋肉 Swift 是什麼東東,以及 iPlayground 的籌備祕辛,就是要聽 hokila。

⚠️警告!本集不太適合搭捷運或上班聽,怕你憋笑會內傷。

{ 完整節目筆記 https://weakself.dev/episodes/3 }

🤔為什麼叫做 hokila 🇹🇼台灣的 meetup 出國參加研討會的契機 🇯🇵日本研討會的神奇特色 🇺🇸WWDC 攻略

公司沒補助的話,自己存 10~15 萬

hokila 去 WWDC 的經驗談

🇺🇸WWDC 周邊的研討會 🇹🇼iPlayground 籌備祕辛

2018

  • 為什麼叫 iPlayground?
  • iPlayground 2018 影片大集合
  • Ask the Speaker 強制配對
  • 掀起 Swift 的小裙子面紗 - Pofat:影片投影片
  • 找很多業界資深工程師來對談的 Panel
  • 為什麼叫詹里長?
  • 感動的事情

2019

  • 更多的國際講者
  • 講題的難度有提高
  • Chef Food Officer 🍱 便當不會讓大家失望
  • 工商服務一下,搶票由此去
💪其他提升實力的方法 更多 weak self
Aug 11, 201901:23:36
2: Swift API 設計之原來我不會用 protocol

2: Swift API 設計之原來我不會用 protocol

主題延續上一集的 Swift API 設計,進入了 protocol 與 generic 的領域。

{ 完整節目筆記 https://weakself.dev/episodes/2 }

前情提要

CJ 同學提出了一個好問題:「Value type 在某些時刻,會存在 heap 中?」波肥寫了一篇 blog 文章來回答。

Protocol 是什麼? Protocol 也有兩種 POP 要解決什麼問題? 比起繼承,要多愛用 Protocol 組合 Protocol 使用指南
  1. 先寫 concrete type
  2. 是否有已存在的 protocol 可以 extension
  3. 是否可由已存在的 protocol 組合完以成功能
  4. 優先考慮 Generic ,最後才是創造一個新的 protocol
隨堂小測驗 尾聲 更多 weak self
Aug 04, 201937:42
1: Swift API 設計之 Value Type 與 Reference Type

1: Swift API 設計之 Value Type 與 Reference Type

波肥想跟我們談談使用 Swift 時,介面設計的想法、觀念與小技巧。因為太長講不完,所以這集先討論 Value Type 與 Reference Type。

{ 完整節目筆記 https://weakself.dev/episodes/1 }

Swift 這門語言的明確性原則 大量使用 Value Type 的 Swift
  • 值還是引用?
  • Local Reasoning
Stack vs Heap 扯題:ABI 穩定 什麼場合要用 class
  1. 當你需要 retain count 以及 deinitialization 時
  2. 當你需要 shared 資料 (centrally held and shared, singleton)
扯題:struct 可以有 singleton 嗎?
  1. 當 identity 不等同於 equality

Tagged Pointer 詳解(只適用於 iOS 12 之前的版本。iOS 12 有新的 Tagged Pointer 機制)

假使拿 struct 包 class 扯題:SwiftUI 用的 @propertyWrapper 更多 weak self
Jul 28, 201943:13
0: 如果你想要浪費一個人的暑假

0: 如果你想要浪費一個人的暑假

三個在 iOS 開發圈打滾的台灣工程師,專為 Apple/iOS 開發者而製作的 Podcast。

這一集我們聊了 WWDC 到正式版發表這個期間,要怎麼安排時間跟資源。是要先學新東西,還是先修 bug 咧?

{ 完整節目筆記 https://weakself.dev/episodes/0 }

先解決相容問題 不要懷疑,就是官方的罷格 全新的回報機制 使用者裝了 Public Beta 從六月開始就沒有睡好覺了 WWDC 影片怎麼看比較快 運用社群的力量 推薦幾個 WWDC19 Sessions
  • Xcode 相關:401412413
  • Swift Packages 與 XCFrameworks:408410416
  • Sign In with Apple 相關:706504
  • iPadOS 與 SceneDelegate:212
  • Great Developer Habits 239
更多 weak self
Jul 21, 201936:38
試聽集・節目簡介

試聽集・節目簡介

weak self 是三個在 iOS 開發圈打滾的台灣工程師,專為 Apple & iOS 開發者而製作的 Podcast。主講人一三波肥喬喬。中文名稱是《我很弱,不要把我算進去》🤪 節目內容涵蓋了 iOS 與 Apple 開發圈的新知討論、踩坑經驗、人物採訪、社群活動、職場生活。

Jul 21, 201901:52