diff --git a/_posts/zmediumtomarkdown/2018-10-06-b7a3fb3d5531.md b/_posts/zmediumtomarkdown/2018-10-06-b7a3fb3d5531.md
index cad720b64..670256fc5 100644
--- a/_posts/zmediumtomarkdown/2018-10-06-b7a3fb3d5531.md
+++ b/_posts/zmediumtomarkdown/2018-10-06-b7a3fb3d5531.md
@@ -1,11 +1,11 @@
---
-title: Medium的第一篇
-author: ZhgChgLi
+title: "Medium的第一篇"
+author: "ZhgChgLi"
date: 2018-10-06T04:53:36.745+0000
-last_modified_at: 2022-06-21T08:44:35.707+0000
-categories: ZRealm Life.
-tags: [blog,blogger,developer,生活,medium]
-description: 前言:已經超過4年沒有在經營Blog,之前的廣告收益尾款US$88就這樣一直卡著,最近發現可以主動要求取消Adsense帳戶,只要達到最低給付額度Google就會把最後一筆收益給你;這也算是給了我一個動力再回來寫Blog.
+last_modified_at: 2023-08-05T17:29:21.770+0000
+categories: "ZRealm Life."
+tags: ["blog","blogger","developer","生活","medium"]
+description: "前言:已經超過4年沒有在經營Blog,之前的廣告收益尾款US$88就這樣一直卡著,最近發現可以主動要求取消Adsense帳戶,只要達到最低給付額度Google就會把最後一筆收益給你;這也算是給了我一個動力再回來寫Blog."
image:
path: /assets/b7a3fb3d5531/1*haJDXXSgWX--oHXqpRVhaQ.jpeg
render_with_liquid: false
@@ -13,6 +13,7 @@ render_with_liquid: false
### 萬事起頭難
+
已經超過4年沒有在經營Blog,之前的廣告收益尾款US$88就這樣一直卡著,最近發現可以主動要求取消Adsense帳戶,只要達到最低給付額度Google就會把最後一筆收益給你;這也算是給了我一個動力再回來寫Blog.
初來乍到,就用“萬事起頭難” 這個簡單的標題當作開端
@@ -44,7 +45,7 @@ render_with_liquid: false
後期自己申請網域跟買空間架了一個WordPress Blog,但什麼都要自己來、設定、調整功能…我無法專注在寫內容這件事上ㄧ樣是斷斷續續在寫,空間到期後就不續約網站直接下線直到現在。
-總結,一路走來從對Blog這個東西感到很新鮮\->到\->研究玩轉Blog的功能\->到\->開始專注Blog本質\-文章內容\->到\->分享技術型文章
+總結,一路走來從對Blog這個東西感到很新鮮\->到\->研究玩轉Blog的功能\->到\->開始專注Blog本質\-文章內容\->到\->分享技術型文章
懶了、少了紀錄過程及回頭檢視和分享出來、嘗過廣告收益的甜頭,漸漸地離初衷越來越遠,單純熱心想要與大家分享的那顆心
@@ -60,9 +61,6 @@ render_with_liquid: false
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
> _本文同步發表於個人 Blog: [**\[點我前往\]**](../b7a3fb3d5531/) 。_
diff --git a/_posts/zmediumtomarkdown/2018-10-13-e37d66ea1146.md b/_posts/zmediumtomarkdown/2018-10-13-e37d66ea1146.md
index 86e6d1edd..c13d5e416 100644
--- a/_posts/zmediumtomarkdown/2018-10-13-e37d66ea1146.md
+++ b/_posts/zmediumtomarkdown/2018-10-13-e37d66ea1146.md
@@ -1,11 +1,11 @@
---
-title: iOS UITextView 文繞圖編輯器 (Swift)
-author: ZhgChgLi
+title: "iOS UITextView 文繞圖編輯器 (Swift)"
+author: "ZhgChgLi"
date: 2018-10-13T18:07:49.431+0000
-last_modified_at: 2023-03-11T17:17:16.946+0000
-categories: ZRealm Dev.
-tags: [swift,ios,mobile-app-development,uitextview,ios-app-development]
-description: 文
+last_modified_at: 2023-08-05T17:28:19.061+0000
+categories: "ZRealm Dev."
+tags: ["swift","ios","mobile-app-development","uitextview","ios-app-development"]
+description: "文"
image:
path: /assets/e37d66ea1146/1*Sh0XaryqYnqVGV0wJ_dDHA.gif
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS UITextView 文繞圖編輯器 \(Swift\)
實戰路線
+
#### 目標功能:
APP上有一個讓使用者能發表文章的討論區功能,發表文章功能介面需要能輸入文字、插入多張圖片、支援文繞圖穿插.
@@ -188,7 +189,7 @@ p\.s 試過各種壓縮/其他儲存方式,結果依然
#### 第二章
發現記憶體這個「硬傷」後,繼續在網路上搜索解決方案,得到以下其他做法:
-- 用WebView嵌套HTML檔案\(
\)並用JS跟WebView做交互處理
+- 用WebView嵌套HTML檔案\( <div contentEditable=”true”></div>\)並用JS跟WebView做交互處理
- 用UITableView结合UITextView,能Reuse
- 基於TextKit自行擴充UITextView🏆
@@ -313,9 +314,6 @@ if let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensit
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-10-15-cb6eba52a342.md b/_posts/zmediumtomarkdown/2018-10-15-cb6eba52a342.md
index 463b1a1b0..a3f50c11f 100644
--- a/_posts/zmediumtomarkdown/2018-10-15-cb6eba52a342.md
+++ b/_posts/zmediumtomarkdown/2018-10-15-cb6eba52a342.md
@@ -1,11 +1,11 @@
---
-title: iOS ≥ 10 Notification Service Extension 應用 (Swift)
-author: ZhgChgLi
+title: "iOS ≥ 10 Notification Service Extension 應用 (Swift)"
+author: "ZhgChgLi"
date: 2018-10-15T15:44:01.193+0000
-last_modified_at: 2021-02-24T01:26:53.094+0000
-categories: ZRealm Dev.
-tags: [swift,push-notification,notificationservice,ios,ios-app-development]
-description: 圖片推播、推播顯示統計、推播顯示前處理
+last_modified_at: 2023-08-05T17:27:16.674+0000
+categories: "ZRealm Dev."
+tags: ["swift","push-notification","notificationservice","ios","ios-app-development"]
+description: "圖片推播、推播顯示統計、推播顯示前處理"
image:
path: /assets/cb6eba52a342/1*8juoKO7BZiT3PQjqufWcrA.jpeg
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
圖片推播、推播顯示統計、推播顯示前處理
+
關於基礎的推播建置、推播原理;網路資料很多,這邊就不再論述,本篇主要重點在如何讓APP支援圖片推播及運用新特性達成更精準的推播顯示統計.
@@ -37,7 +38,7 @@ iOS ≥ 10\.0
- \(目標2\) 統計推播有無顯示🏆
- 推播內容修改、重組內容
- 推播內容加解密\(解密\)顯示
-- _決定推播要不要顯示?_ =>> **答案:不行**
+- _決定推播要不要顯示?_ =>> **答案:不行**
#### 首先,後端推播程式的 Payload 部分
@@ -58,19 +59,19 @@ iOS ≥ 10\.0
#### And… 第一步,為專案新建一個Target
-![**Step 1\.** Xcode \-> File \-> New \-> Target](/assets/cb6eba52a342/1*ZjPVTxLR6ywAdk70Y7_J7A.png)
+![**Step 1\.** Xcode \-> File \-> New \-> Target](/assets/cb6eba52a342/1*ZjPVTxLR6ywAdk70Y7_J7A.png)
-**Step 1\.** Xcode \-> File \-> New \-> Target
+**Step 1\.** Xcode \-> File \-> New \-> Target
-![**Step 2\.** iOS \-> Notification Service Extension \-> Next](/assets/cb6eba52a342/1*2KRusR8MJUim7UH1CmS7pw.png)
+![**Step 2\.** iOS \-> Notification Service Extension \-> Next](/assets/cb6eba52a342/1*2KRusR8MJUim7UH1CmS7pw.png)
-**Step 2\.** iOS \-> Notification Service Extension \-> Next
+**Step 2\.** iOS \-> Notification Service Extension \-> Next
-![**Step 3\.** 輸入Product Name \-> Finish](/assets/cb6eba52a342/1*sAuzxJPpohTGp-KV13yupg.png)
+![**Step 3\.** 輸入Product Name \-> Finish](/assets/cb6eba52a342/1*sAuzxJPpohTGp-KV13yupg.png)
-**Step 3\.** 輸入Product Name \-> Finish
+**Step 3\.** 輸入Product Name \-> Finish
![**Step 4\.** 點選 Activate](/assets/cb6eba52a342/1*3DF_fMQLSrGxTbmLY6CJAg.png)
@@ -215,7 +216,7 @@ override func didReceive(_ request: UNNotificationRequest, withContentHandler co
可以看到當接受到有推播通知時,我們先Call Api告訴後端有收到並將顯示推播了,方便我們後台做推播統計;然後若有附加圖片再對圖片進行處理.
#### In\-App狀態時:
-ㄧ樣會觸發Notification Service Extension didReceive 再觸發AppDelegate的 **func** application\( **\_** application: UIApplication, didReceiveRemoteNotification userInfo: \[AnyHashable : **Any** \], fetchCompletionHandler completionHandler: **@escaping** \(UIBackgroundFetchResult\) \-> Void\) 方法
+ㄧ樣會觸發Notification Service Extension didReceive 再觸發AppDelegate的 **func** application\( **\_** application: UIApplication, didReceiveRemoteNotification userInfo: \[AnyHashable : **Any** \], fetchCompletionHandler completionHandler: **@escaping** \(UIBackgroundFetchResult\) \-> Void\) 方法
#### 附註:關於圖片推播的部分你還可以…\.
使用 Notification Content Extension 自訂推播按壓時要顯示的UIView\(可以自己刻\),還有按壓的動作
@@ -232,9 +233,6 @@ Notification Content Extension的部分,我只拉了一個能展示圖片推
[結婚吧APP](https://itunes.apple.com/tw/app/%E7%B5%90%E5%A9%9A%E5%90%A7-%E4%B8%8D%E6%89%BE%E6%9C%80%E8%B2%B4-%E5%8F%AA%E6%89%BE%E6%9C%80%E5%B0%8D/id1356057329?ls=1&mt=8){:target="_blank"}
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-10-16-9a9aa892f9a9.md b/_posts/zmediumtomarkdown/2018-10-16-9a9aa892f9a9.md
index ccf8ac429..94a38072f 100644
--- a/_posts/zmediumtomarkdown/2018-10-16-9a9aa892f9a9.md
+++ b/_posts/zmediumtomarkdown/2018-10-16-9a9aa892f9a9.md
@@ -1,11 +1,11 @@
---
-title: Vision 初探 — APP 頭像上傳 自動識別人臉裁圖 (Swift)
-author: ZhgChgLi
+title: "Vision 初探 — APP 頭像上傳 自動識別人臉裁圖 (Swift)"
+author: "ZhgChgLi"
date: 2018-10-16T16:01:24.511+0000
-last_modified_at: 2021-02-24T01:27:03.600+0000
-categories: ZRealm Dev.
-tags: [swift,machine-learning,facedetection,ios,ios-app-development]
-description: Vision 實戰應用
+last_modified_at: 2023-08-05T17:25:03.764+0000
+categories: "ZRealm Dev."
+tags: ["swift","machine-learning","facedetection","ios","ios-app-development"]
+description: "Vision 實戰應用"
image:
path: /assets/9a9aa892f9a9/1*c-ioRH_Z2nMYRxSbuBD71A.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### Vision 初探 — APP 頭像上傳 自動識別人臉裁圖 \(Swift\)
Vision 實戰應用
+
#### 一樣不多說,先上一張成品圖:
@@ -198,9 +199,6 @@ if let image = sourceImage,#available(iOS 11.0, *),let ciImage = CIImage(image:
程式碼已上傳至Github: [請點此](https://github.com/zhgchgli0718/VisionDemo){:target="_blank"}
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-10-17-793bf2cdda0f.md b/_posts/zmediumtomarkdown/2018-10-17-793bf2cdda0f.md
index c40abffab..560e71cd7 100644
--- a/_posts/zmediumtomarkdown/2018-10-17-793bf2cdda0f.md
+++ b/_posts/zmediumtomarkdown/2018-10-17-793bf2cdda0f.md
@@ -1,11 +1,11 @@
---
-title: 嚐鮮 iOS 12 CoreML — 使用機器學習自動預測文章分類,連模型也自己訓練!
-author: ZhgChgLi
+title: "嚐鮮 iOS 12 CoreML — 使用機器學習自動預測文章分類,連模型也自己訓練!"
+author: "ZhgChgLi"
date: 2018-10-17T15:20:35.448+0000
-last_modified_at: 2021-02-24T01:28:01.622+0000
-categories: ZRealm Dev.
-tags: [swift,ios,machine-learning,natural-language-process,ios-app-development]
-description: 探索CoreML 2.0,如何轉換或訓練模型及將其應用在實際產品上
+last_modified_at: 2023-08-05T17:23:37.166+0000
+categories: "ZRealm Dev."
+tags: ["swift","ios","machine-learning","natural-language-process","ios-app-development"]
+description: "探索CoreML 2.0,如何轉換或訓練模型及將其應用在實際產品上"
image:
path: /assets/793bf2cdda0f/1*pOYPHRwPNLVtikVKzfIqsw.png
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
探索CoreML 2\.0,如何轉換或訓練模型及將其應用在實際產品上
+
接續 [上一篇](../9a9aa892f9a9/) 針對在 iOS上使用機器學習的研究,本篇正式切入使用CoreML
首先簡述一下歷史,蘋果在2017年發布了CoreML\(包含上篇文章介紹的Vision\) 機器學習框架;2018緊接著推出CoreML 2\.0,除 [效能提升](https://www.appcoda.com.tw/core-ml-2/){:target="_blank"} 外還支援 **自訂客製化CoreML模型** 。
@@ -81,7 +82,7 @@ render_with_liquid: false
斷詞請參考 [在 iOS App 中進行自然語言處理:初探 NSLinguisticTagger](https://www.appcoda.com.tw/nslinguistictagger/){:target="_blank"}
### 今日主要重點 — 文字內容識別分類+ **自己訓練模型**
-講白話就是,我們給機器「文字內容」跟「分類」訓練電腦對未來的資料做分類.例如:「點擊查看最新優惠!」、「1000$購物金馬上領」=>「廣告」;「Alan發送一則訊息給您」、「您的帳戶即將到期」=>「重要事項」
+講白話就是,我們給機器「文字內容」跟「分類」訓練電腦對未來的資料做分類.例如:「點擊查看最新優惠!」、「1000$購物金馬上領」=>「廣告」;「Alan發送一則訊息給您」、「您的帳戶即將到期」=>「重要事項」
實際應用:垃圾信件判別、標籤產生、分類預測
@@ -128,9 +129,9 @@ SELECT `title` AS `text`,`type` AS `label` FROM `posts` WHERE `status` = '1'
下載好訓練工具後,點擊 TextClassifer\.playground 打開 Playground
-![點擊紅匡執行\->點擊綠匡切換View顯示](/assets/793bf2cdda0f/1*ct9AHpetBuEKHDGfRwvMlg.png)
+![點擊紅匡執行\->點擊綠匡切換View顯示](/assets/793bf2cdda0f/1*ct9AHpetBuEKHDGfRwvMlg.png)
-點擊紅匡執行\->點擊綠匡切換View顯示
+點擊紅匡執行\->點擊綠匡切換View顯示
![將JSON檔案拉入GUI工具](/assets/793bf2cdda0f/1*kV_Dh2pP94gUakcmYcI6bQ.png)
@@ -163,7 +164,7 @@ CoreML 模型檔
到此你的模型就已經訓練好囉!是不是很容易
**具體訓練方式:**
-1. 先將輸入的語句做斷詞\(我想知道婚禮需要準備什麼=>我想,知道,婚禮,需要,準備,什麼\),再看他的分類是什麼做一連串的機器學習計算。
+1. 先將輸入的語句做斷詞\(我想知道婚禮需要準備什麼=>我想,知道,婚禮,需要,準備,什麼\),再看他的分類是什麼做一連串的機器學習計算。
2. 將訓練資料分組,例如: 80% 是拿來訓練另外20%是拿來測試驗證
@@ -210,9 +211,6 @@ if #available(iOS 12.0, *),let prediction = try? textClassifier().prediction(tex
參考資料: [WWDC2018之Create ML\(二\)](https://www.jianshu.com/p/205ee896663f){:target="_blank"}
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-10-18-1ca246e27273.md b/_posts/zmediumtomarkdown/2018-10-18-1ca246e27273.md
index 846f6dbcc..329c471e1 100644
--- a/_posts/zmediumtomarkdown/2018-10-18-1ca246e27273.md
+++ b/_posts/zmediumtomarkdown/2018-10-18-1ca246e27273.md
@@ -1,11 +1,11 @@
---
-title: 提升使用者體驗,現在就為您的 iOS APP 加上 3D TOUCH 功能(Swift)
-author: ZhgChgLi
+title: "提升使用者體驗,現在就為您的 iOS APP 加上 3D TOUCH 功能(Swift)"
+author: "ZhgChgLi"
date: 2018-10-18T14:36:57.668+0000
-last_modified_at: 2021-02-24T01:28:03.754+0000
-categories: ZRealm Dev.
-tags: [ios,swift,3d-touch,iphone,ios-app-development]
-description: iOS 3D TOUCH 應用
+last_modified_at: 2023-08-05T17:23:48.025+0000
+categories: "ZRealm Dev."
+tags: ["ios","swift","3d-touch","iphone","ios-app-development"]
+description: "iOS 3D TOUCH 應用"
image:
path: /assets/1ca246e27273/1*AAFevro2x7s9J6yRshAGtg.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### \[TL;DR\]提升使用者體驗,現在就為您的 iOS APP 加上 3D TOUCH 功能\(Swift\)
iOS 3D TOUCH 應用
+
### \[TL;DR\] 2020/06/14
@@ -220,9 +221,6 @@ func application(_ application: UIApplication, performActionFor shortcutItem: UI
如果你測的夠細會發現以上效果,在CollectionView滑動中圖有部分已經滑出畫面這時按壓就會出現以上情況😅
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-10-25-a4bc3bce7513.md b/_posts/zmediumtomarkdown/2018-10-25-a4bc3bce7513.md
index fdb2fe4ca..aa7bded2c 100644
--- a/_posts/zmediumtomarkdown/2018-10-25-a4bc3bce7513.md
+++ b/_posts/zmediumtomarkdown/2018-10-25-a4bc3bce7513.md
@@ -1,11 +1,11 @@
---
-title: iOS UUID 的那些事 (Swift/iOS ≥ 6)
-author: ZhgChgLi
+title: "iOS UUID 的那些事 (Swift/iOS ≥ 6)"
+author: "ZhgChgLi"
date: 2018-10-25T14:26:20.002+0000
-last_modified_at: 2021-02-24T01:28:55.697+0000
-categories: ZRealm Dev.
-tags: [iplayground,swift,ios-app-development,uuid,idfv]
-description: iPlayground 2018 回來 & UUID那些事
+last_modified_at: 2023-08-05T17:21:30.074+0000
+categories: "ZRealm Dev."
+tags: ["iplayground","swift","ios-app-development","uuid","idfv"]
+description: "iPlayground 2018 回來 & UUID那些事"
image:
path: /assets/a4bc3bce7513/1*gEmmuDOD92d2b2fLp4AKsw.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS UUID 的那些事 \(Swift/iOS ≥ 6\)
iPlayground 2018 回來 & UUID那些事
+
### 前言:
上週六、日跑去參加 [iPlayground](https://iplayground.io/){:target="_blank"} Apple 軟體開發者研討會,這個活動訊息是同事PASS過來的,去之前我也不清楚這個活動。
@@ -141,9 +142,6 @@ let DEVICE_UUID:String = {
```
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-11-01-ade9e745a4bf.md b/_posts/zmediumtomarkdown/2018-11-01-ade9e745a4bf.md
index 82bf2f975..6bf1d2ad0 100644
--- a/_posts/zmediumtomarkdown/2018-11-01-ade9e745a4bf.md
+++ b/_posts/zmediumtomarkdown/2018-11-01-ade9e745a4bf.md
@@ -1,11 +1,11 @@
---
-title: 什麼?iOS 12 不需使用者授權就能收到推播通知(Swift)
-author: ZhgChgLi
+title: "什麼?iOS 12 不需使用者授權就能收到推播通知(Swift)"
+author: "ZhgChgLi"
date: 2018-11-01T15:35:02.255+0000
-last_modified_at: 2022-06-11T06:22:42.813+0000
-categories: ZRealm Dev.
-tags: [ios,swift,push-notification,ios-app-development,ios12]
-description: UserNotifications Provisional Authorization 臨時權限、iOS 12 靜音通知介紹
+last_modified_at: 2023-08-05T17:21:41.147+0000
+categories: "ZRealm Dev."
+tags: ["ios","swift","push-notification","ios-app-development","ios12"]
+description: "UserNotifications Provisional Authorization 臨時權限、iOS 12 靜音通知介紹"
image:
path: /assets/ade9e745a4bf/1*NX0r7q5ikfoJnxWq_eGRWQ.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 什麼?iOS 12 不需使用者授權就能傳送推播通知\(Swift\) — \(2019–02–06 更新\)
UserNotifications Provisional Authorization 臨時權限、iOS 12 靜音通知介紹
+
### MurMur……
前陣子在改善APP推播通知允許及點擊率過低問題,做了些優化調整;最初版的時候體驗非常差,APP 安裝完一啟動就直接跳「APP想要傳送通知」的詢問視窗;想當然而關閉率非常高,根據前一篇使用 [Notification Service Extension](../cb6eba52a342/) 統計通知實際顯示數,推測按允許推播的使用者只有大約10%.
@@ -175,9 +176,6 @@ iOS 12的這項通知貼心優化,讓使用者跟開發者之間對通知功
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-11-02-fd7f92d52baa.md b/_posts/zmediumtomarkdown/2018-11-02-fd7f92d52baa.md
index 2142f4859..435293515 100644
--- a/_posts/zmediumtomarkdown/2018-11-02-fd7f92d52baa.md
+++ b/_posts/zmediumtomarkdown/2018-11-02-fd7f92d52baa.md
@@ -1,11 +1,11 @@
---
-title: 從 iOS 9 到 iOS 12 推播通知權限狀態處理(Swift)
-author: ZhgChgLi
+title: "從 iOS 9 到 iOS 12 推播通知權限狀態處理(Swift)"
+author: "ZhgChgLi"
date: 2018-11-02T15:23:44.057+0000
-last_modified_at: 2021-02-24T01:29:00.923+0000
-categories: ZRealm Dev.
-tags: [ios,push-notification,observables,ios-app-development,swift]
-description: 適配 iOS 9 ~ iOS 12 處理通知權限狀態及要求權限的解決方案
+last_modified_at: 2023-08-05T17:20:12.528+0000
+categories: "ZRealm Dev."
+tags: ["ios","push-notification","observables","ios-app-development","swift"]
+description: "適配 iOS 9 ~ iOS 12 處理通知權限狀態及要求權限的解決方案"
image:
path: /assets/fd7f92d52baa/1*fm_hG0GuT-BhSNTEB3Ht1g.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 從 iOS 9 到 iOS 12 推播通知權限狀態處理\(Swift\)
適配 iOS 9 ~ iOS 12 處理通知權限狀態及要求權限的解決方案
+
### 做什麼?
接續前一篇「 [什麼?iOS 12 不需使用者授權就能傳送推播通知\(Swift\)](https://medium.com/@zhgchgli/%E4%BB%80%E9%BA%BC-ios-12-%E4%B8%8D%E9%9C%80%E4%BD%BF%E7%94%A8%E8%80%85%E6%8E%88%E6%AC%8A%E5%B0%B1%E8%83%BD%E6%94%B6%E5%88%B0%E6%8E%A8%E6%92%AD%E9%80%9A%E7%9F%A5-swift-ade9e745a4bf?fbclid=IwAR1AKi3io4Jt-rFFgrLWEFsmA0lKYVFUD7Dw9n9LpMa2zAzJCHeGGGgn9Vs){:target="_blank"} 」提到的推播權限取得流程優化,經過上一篇Murmur部分寫的優化之後又遇到了新的需求:
@@ -223,9 +224,6 @@ override func viewDidLoad() {
_\*由於我們的專案支援範圍是iOS 9 ~ iOS12,iOS 8未進行任何測試不確定支援程度_
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-11-03-8d863bcd1c55.md b/_posts/zmediumtomarkdown/2018-11-03-8d863bcd1c55.md
index 493f573ac..a18d039d2 100644
--- a/_posts/zmediumtomarkdown/2018-11-03-8d863bcd1c55.md
+++ b/_posts/zmediumtomarkdown/2018-11-03-8d863bcd1c55.md
@@ -1,11 +1,11 @@
---
-title: 永遠保持探索新事物的熱忱
-author: ZhgChgLi
+title: "永遠保持探索新事物的熱忱"
+author: "ZhgChgLi"
date: 2018-11-03T18:54:07.828+0000
-last_modified_at: 2021-02-24T01:29:03.539+0000
-categories: ZRealm Life.
-tags: [ios-app-development,back-end-development,life-lessons,生活,medium]
-description: 從踏入資訊領域到轉戰iOS APP開發的人生契機
+last_modified_at: 2023-08-05T17:19:26.461+0000
+categories: "ZRealm Life."
+tags: ["ios-app-development","back-end-development","life-lessons","生活","medium"]
+description: "從踏入資訊領域到轉戰iOS APP開發的人生契機"
image:
path: /assets/8d863bcd1c55/1*RNPTGz30TwfJqywKpySskA.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
從踏入資訊領域到轉戰iOS APP開發的人生契機
+
![Bangkok 2018 \- [Z Realm — 解決問題的道路上你並不孤單](https://medium.com/u/8854784154b8){:target="_blank"}](/assets/8d863bcd1c55/1*RNPTGz30TwfJqywKpySskA.jpeg)
Bangkok 2018 \- [Z Realm — 解決問題的道路上你並不孤單](https://medium.com/u/8854784154b8){:target="_blank"}
@@ -56,7 +57,7 @@ Bangkok 2018 \- [Z Realm — 解決問題的道路上你並不孤單](https://me
- **開發環境** :以往寫PHP我們用Sublime打一打,Ctrl\+S然後Ctrl\+Tab切換到瀏覽器Ctrl\+R就能快速看到結果;現在要使用Xcode,然後部署到模擬器或手機上才看得到結果;這部分正好能改善我急性子的個性XD.
- **語言部分** :Swift比較Morden、強型別、更有結構,一開始可能不太習慣,但用上手後就沒什麼問題了
- **Storyboard/Interface Builder** :這部分降低新手的入門門檻,如果一開始就要用code刻畫面學習起來會更辛苦;可以直接視覺化玩轉UI、學習排版、拉拉Outlet
-- **記憶體跟頁面排版結構** :這是比較需要注意的項目,也是我說用時間換經驗的部分;以往做網頁沒有什麼極限,要做什麼就做什麼;就以表格來說,網頁就打然後跑PHP迴圈把資料顯示出來,但在APP上就要使用UITableview元件來實作(想當初用UIView排出來然後很高興跟主管說我做好了!結果發現記憶體一個大爆炸)
+- **記憶體跟頁面排版結構** :這是比較需要注意的項目,也是我說用時間換經驗的部分;以往做網頁沒有什麼極限,要做什麼就做什麼;就以表格來說,網頁就打<table>然後跑PHP迴圈把資料顯示出來,但在APP上就要使用UITableview元件來實作(想當初用UIView排出來然後很高興跟主管說我做好了!結果發現記憶體一個大爆炸)
其他還有記憶體洩漏的部分也要多注意!
- **應用上線** :APP開發要更小心、測試要更細心;因為不像網頁能有錯就改,iOS APP上版本要經過審核、有BUG也不能降版,所以有BUG至少要花一天才能修復,對使用者影響很大!
- **使用者評論** :使用者可給你最直接的評論
@@ -79,9 +80,6 @@ Bangkok 2018 \- [Z Realm — 解決問題的道路上你並不孤單](https://me
目前還很菜會持續在iOS APP開發上打滾,朝著未來學習、成長尋找突破點、保持寫Medium的習慣,下一個契機是什麼?我也很期待!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-11-12-f644db1bb8bf.md b/_posts/zmediumtomarkdown/2018-11-12-f644db1bb8bf.md
index c64eca49c..18dc96ce4 100644
--- a/_posts/zmediumtomarkdown/2018-11-12-f644db1bb8bf.md
+++ b/_posts/zmediumtomarkdown/2018-11-12-f644db1bb8bf.md
@@ -1,11 +1,11 @@
---
-title: iOS ≥ 12 在使用者的「設定」中增加「APP通知設定頁」捷徑 (Swift)
-author: ZhgChgLi
+title: "iOS ≥ 12 在使用者的「設定」中增加「APP通知設定頁」捷徑 (Swift)"
+author: "ZhgChgLi"
date: 2018-11-12T14:38:42.897+0000
-last_modified_at: 2021-02-24T01:32:03.066+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,ios,swift,push-notification,ios-12]
-description: 除了從系統關閉通知,讓使用者還有其他選擇 .providesAppNotificationSettings/openSettingsFor
+last_modified_at: 2023-08-05T17:18:56.157+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","ios","swift","push-notification","ios-12"]
+description: "除了從系統關閉通知,讓使用者還有其他選擇 .providesAppNotificationSettings/openSettingsFor"
image:
path: /assets/f644db1bb8bf/1*DEOMdPwDxyHca-GnYr8HIQ.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS ≥ 12 在使用者的「設定」中增加「APP通知設定頁」捷徑 \(Swift\)
除了從系統關閉通知,讓使用者還有其他選擇
+
#### 緊接著前三篇文章:
- [iOS ≥ 10 Notification Service Extension 應用 \(Swift\)](../cb6eba52a342/)
- [什麼?iOS 12 不需使用者授權就能傳送推播通知\(Swift\)](../ade9e745a4bf/)
@@ -26,16 +27,16 @@ render_with_liquid: false
iOS ≥ 12 可以在使用者的「設定」中增加您的APP通知設定頁面捷徑,讓使用者想要調整通知時,能有其他選擇;可以跳轉到「APP內」而不是從「系統面」直接關閉,ㄧ樣不囉唆先上圖:
-![「設定」\->「APP」\->「通知」\->「在APP中設定」](/assets/f644db1bb8bf/1*BAdVMElIjgg34meOSdHhOw.gif)
+![「設定」\->「APP」\->「通知」\->「在APP中設定」](/assets/f644db1bb8bf/1*BAdVMElIjgg34meOSdHhOw.gif)
-「設定」\->「APP」\->「通知」\->「在APP中設定」
+「設定」\->「APP」\->「通知」\->「在APP中設定」
另外在使用者收到通知時,若欲使用3D Touch調整設定「關閉」通知,會多一個「在APP中設定」的選項供使用者選擇
-![「通知」\->「3D Touch」\->「…」\->「關閉…」\->「在APP中設定」](/assets/f644db1bb8bf/1*KMKbYQU3nPfF9XpMS5NbPQ.gif)
+![「通知」\->「3D Touch」\->「…」\->「關閉…」\->「在APP中設定」](/assets/f644db1bb8bf/1*KMKbYQU3nPfF9XpMS5NbPQ.gif)
-「通知」\->「3D Touch」\->「…」\->「關閉…」\->「在APP中設定」
+「通知」\->「3D Touch」\->「…」\->「關閉…」\->「在APP中設定」
### 怎麼實作?
這部分的實作非常簡單,第一步僅需在要求推播權限時多要求一個 **\.providesAppNotificationSettings** 權限即可
@@ -114,9 +115,6 @@ extension AppDelegate: UNUserNotificationCenterDelegate {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2018-11-26-a2920e33e73e.md b/_posts/zmediumtomarkdown/2018-11-26-a2920e33e73e.md
index 722dd6e85..c4c403133 100644
--- a/_posts/zmediumtomarkdown/2018-11-26-a2920e33e73e.md
+++ b/_posts/zmediumtomarkdown/2018-11-26-a2920e33e73e.md
@@ -1,11 +1,11 @@
---
-title: Apple Watch Series 4 從入手到上手全方位心得
-author: ZhgChgLi
+title: "Apple Watch Series 4 從入手到上手全方位心得"
+author: "ZhgChgLi"
date: 2018-11-26T14:18:41.111+0000
-last_modified_at: 2021-02-24T01:32:08.050+0000
-categories: ZRealm Life.
-tags: [apple-watch,watchos,apple-watch-apps,生活,開箱]
-description: 為什麼要買?好用嗎?哪裡好用?怎麼用?& WatchOS APP推薦
+last_modified_at: 2023-08-05T17:18:33.242+0000
+categories: "ZRealm Life."
+tags: ["apple-watch","watchos","apple-watch-apps","生活","開箱"]
+description: "為什麼要買?好用嗎?哪裡好用?怎麼用?& WatchOS APP推薦"
image:
path: /assets/a2920e33e73e/1*64PZhi7_5S8ytmM1s1Wblg.jpeg
render_with_liquid: false
@@ -14,7 +14,8 @@ render_with_liquid: false
### Apple Watch Series 4 開箱 從入手到上手全方位心得 \(2020–10–24更新\)
為什麼要買?好用嗎?哪裡好用?怎麼用?& WatchOS APP推薦
-#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
+
+#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
### 從入手開始…
#### 個人背景
@@ -127,7 +128,7 @@ p\.s Apple Music/KKBOX 支援離線播放沒這問題
**\*所以手機沒電關機…手錶也不能用,即使有辦行動網路**
-[**\[2020–10–24 更新\]** :Spotify 已支援獨立播放,在手錶 Spotify APP 中選擇播放裝置\->Apple Watch\->連線藍牙耳機\->即可播放!(依然還不支援離線下載播放,需再有網路環境下才可使用)。](../eab0e984043/)
+[**\[2020–10–24 更新\]** :Spotify 已支援獨立播放,在手錶 Spotify APP 中選擇播放裝置\->Apple Watch\->連線藍牙耳機\->即可播放!(依然還不支援離線下載播放,需再有網路環境下才可使用)。](../eab0e984043/)
![](/assets/a2920e33e73e/1*4OJsP_Nf56FV_U09zT429Q.jpeg)
@@ -164,16 +165,16 @@ p\.s Apple Music/KKBOX 支援離線播放沒這問題
**按鈕操作部分:**
1. 點一下數位錶冠在主畫面與錶面之間切換
2. 點兩下數位錶冠切換到最近開啟的APP
-3. 點一下側邊按鈕呼出Dock \(多工視窗\),可設定顯示最近開啟的APP或自訂喜好的APP \(打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->Dock\->Dock排列\)
+3. 點一下側邊按鈕呼出Dock \(多工視窗\),可設定顯示最近開啟的APP或自訂喜好的APP \(打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->Dock\->Dock排列\)
4. 點兩下側邊按鈕呼出Apple Pay,這時感應就會直接付款
-p\.s Apple Pay預設卡片修改請打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->錢包與Apple Pay\->交易預設值\->預設卡片\->選擇您要預設的卡片
+p\.s Apple Pay預設卡片修改請打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->錢包與Apple Pay\->交易預設值\->預設卡片\->選擇您要預設的卡片
\* 無法修改順序,只能指定某一張卡為預設放在第一
5. 長壓側邊按鈕呼出系統選單「關閉電源」或「開機」、顯示醫療卡、播打SOS緊急電話
#### Apple Watch 螢幕截圖功能
很重要,所以放第一個,怎麼截Apple Watch的螢幕圖:
-打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\-> 進入「一般」\-> 「啟用螢幕快照」打開
+打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\-> 進入「一般」\-> 「啟用螢幕快照」打開
![](/assets/a2920e33e73e/1*Za5IVCeJy_kEwoprlvgWkA.png)
@@ -196,19 +197,19 @@ p\.s Apple Pay預設卡片修改請打開「iPhone」上的「Watch」 APP \->
左邊表示連線中斷中,右邊表示連線正常中
#### iPhone APP的通知傳送到Apple Watch
-手錶預設會吃iPhone上APP的通知設定,也可特別關閉某些APP的通知不要傳送到手錶(打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->「通知」\->拉到最下方可針對各APP調整)
-- 若APP沒在此列表出現則表示該APP本來就沒在iPhone上開啟通知功能(請去「iPhone」上的「設定」\->「通知」\->打開該APP通知功能)
+手錶預設會吃iPhone上APP的通知設定,也可特別關閉某些APP的通知不要傳送到手錶(打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->「通知」\->拉到最下方可針對各APP調整)
+- 若APP沒在此列表出現則表示該APP本來就沒在iPhone上開啟通知功能(請去「iPhone」上的「設定」\->「通知」\->打開該APP通知功能)
- 為什麼有的通知會有提示音/震動有的不會?
這項設定是吃iPhone上APP的通知設定,APP「通知」有開啟「聲音」就會有提示音及震動
- 大部分的APP通知都只支援查看,部分可支援操作(如Line的通知可點擊在手錶上回覆)
- **手機未使用狀態\+手錶配戴中,手錶才會跳新通知提示/手機端不會響但依然會出現在通知中心;避免出現手機與手錶都同時響的情況**
#### APP有支援For Apple Watch時
-- 預設在安裝APP時該APP有支援For Apple Watch的APP時也會一併在Apple Watch上安裝該APP(可從「iPhone」上的「Watch」 APP \->「我的手錶」頁\->「一般」\->關閉「自動APP安裝」)
+- 預設在安裝APP時該APP有支援For Apple Watch的APP時也會一併在Apple Watch上安裝該APP(可從「iPhone」上的「Watch」 APP \->「我的手錶」頁\->「一般」\->關閉「自動APP安裝」)
- 能不能只安裝Apple Watch APP?
不行,目前無法獨立安裝Apple Watch APP;一定在iPhone都會有一個APP
- 不想安裝Apple Watch版的APP
-從「iPhone」上的「Watch」 APP \->「我的手錶」頁\->滾動到下方「已在APPLE WATCH上安裝」部分點進去\->關閉「顯示App於Apple Watch」
+從「iPhone」上的「Watch」 APP \->「我的手錶」頁\->滾動到下方「已在APPLE WATCH上安裝」部分點進去\->關閉「顯示App於Apple Watch」
- **APP寫支援「複雜功能」的意思就是支援錶盤小工具**
#### 錶面設計
@@ -254,7 +255,7 @@ p\.s Apple Pay預設卡片修改請打開「iPhone」上的「Watch」 APP \->
#### 用Apple Watch解鎖Mac電腦
1. 確認你的iPhone/Apple Watch/Mac電腦登入的是同個Apple帳號
2. 確認你的Apple帳號有開啟 [雙重認證](https://support.apple.com/zh-tw/HT205075){:target="_blank"}
-3. 系統在檢測到你的Apple帳號有Apple Watch裝置之後就會在「系統偏好設置」\->「安全與隱私權」\->「一般」\->新增一行「允許Apple Watch解鎖您的Mac」\->「打勾即可」
+3. 系統在檢測到你的Apple帳號有Apple Watch裝置之後就會在「系統偏好設置」\->「安全與隱私權」\->「一般」\->新增一行「允許Apple Watch解鎖您的Mac」\->「打勾即可」
若一直啟用失敗,請先確認你的Apple帳號有開啟雙重認證\(非 [雙步認證](https://support.apple.com/zh-tw/HT207198){:target="_blank"} \)或試試重啟電腦!
@@ -276,14 +277,14 @@ p\.s 我公司的Mac Mini就是一直無法啟用,重啟之後就正常了
每日達成紀錄會提示,另外可在Apple Watch上的「活動紀錄」APP重壓調整活動目標值(預設一天活動360大卡就達標了)
-體能訓練部分跑步我是使用Nike Run Club \+沒使用內建的,上週去騎腳踏車試用內建的體能訓練\->「室外單車」做紀錄,會記錄高度/距離/時間/路徑/心律 讚讚!
+體能訓練部分跑步我是使用Nike Run Club \+沒使用內建的,上週去騎腳踏車試用內建的體能訓練\->「室外單車」做紀錄,會記錄高度/距離/時間/路徑/心律 讚讚!
![](/assets/a2920e33e73e/1*WScZTP6ySKIdbpYZ17tY2A.jpeg)
#### 地圖功能?
-目前僅支援Apple Map,Google Map暫時不支援,打開「地圖」搜尋或選擇個人資訊設定的公司住家地址(來源:聯絡資訊\->我的名片)或聯絡資訊或自行輸入目標;開始導航後每個轉折點都是一張卡,依據行駛自動跳頁,可轉動查看,點擊可進入查看地圖內容,距離剩下40公尺的時候會震動提示你,重壓可結束導航.
+目前僅支援Apple Map,Google Map暫時不支援,打開「地圖」搜尋或選擇個人資訊設定的公司住家地址(來源:聯絡資訊\->我的名片)或聯絡資訊或自行輸入目標;開始導航後每個轉折點都是一張卡,依據行駛自動跳頁,可轉動查看,點擊可進入查看地圖內容,距離剩下40公尺的時候會震動提示你,重壓可結束導航.
![](/assets/a2920e33e73e/1*xc0BTmLpRFDkRQhUeMz-tQ.jpeg)
@@ -322,21 +323,21 @@ p\.s 反過來手機要找手錶則無此功能,若是遺失要找請從「尋
覺得這是Bug…
-![在訊息中重壓「麥克風」或「手寫」Icon 呼出選單>「選擇語言」\->「中文」](/assets/a2920e33e73e/1*KjBwFaHI3Aw894vw8RN3kw.jpeg)
+![在訊息中重壓「麥克風」或「手寫」Icon 呼出選單>「選擇語言」\->「中文」](/assets/a2920e33e73e/1*KjBwFaHI3Aw894vw8RN3kw.jpeg)
-在訊息中重壓「麥克風」或「手寫」Icon 呼出選單>「選擇語言」\->「中文」
+在訊息中重壓「麥克風」或「手寫」Icon 呼出選單>「選擇語言」\->「中文」
-另一方法是,打開「iPhone」\->「設定」\->「一般」\->「鍵盤」\->「聽寫」\->「聽寫語言」\->只勾「國語」
+另一方法是,打開「iPhone」\->「設定」\->「一般」\->「鍵盤」\->「聽寫」\->「聽寫語言」\->只勾「國語」
這樣你的語音輸入就只聽得懂國語了,手機部分一併受到影響
#### 關閉深呼吸提醒/關閉站立提醒
-打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->呼吸\->關閉呼吸提醒
+打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->呼吸\->關閉呼吸提醒
-打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->活動紀錄\->關閉站立提醒
+打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->活動紀錄\->關閉站立提醒
#### 手錶想設定更複雜的密碼
-打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->密碼\->簡易密碼\->關閉\->則可設定6位數密碼
+打開「iPhone」上的「Watch」 APP \->「我的手錶」頁\->密碼\->簡易密碼\->關閉\->則可設定6位數密碼
#### 電話進來手錶能顯示Whoscall資訊嗎?
不行。
@@ -394,10 +395,10 @@ Line,Spotify…\.e\.t\.c
其他項目就等大家自行體會囉
\-
-#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
+#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
### 手錶都買了,不考慮AirPods 2耳機嗎?
-請看下一篇>> [AirPods 2 開箱及上手體驗心得](../33afa0ae557d/)
+請看下一篇>> [AirPods 2 開箱及上手體驗心得](../33afa0ae557d/)
### 自己的Apple Watch App 自己開發:
請看 [動手做一支 Apple Watch App 吧!\(Swift\)](../e85d77b05061/)
@@ -417,9 +418,6 @@ Line,Spotify…\.e\.t\.c
nomad Apple Watch 錶帶
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-02-05-e85d77b05061.md b/_posts/zmediumtomarkdown/2019-02-05-e85d77b05061.md
index c703ed03f..b6e0f63af 100644
--- a/_posts/zmediumtomarkdown/2019-02-05-e85d77b05061.md
+++ b/_posts/zmediumtomarkdown/2019-02-05-e85d77b05061.md
@@ -1,11 +1,11 @@
---
-title: 動手做一支 Apple Watch App 吧!
-author: ZhgChgLi
+title: "動手做一支 Apple Watch App 吧!"
+author: "ZhgChgLi"
date: 2019-02-05T16:23:30.749+0000
-last_modified_at: 2021-02-24T01:32:21.467+0000
-categories: ZRealm Dev.
-tags: [ios,watchos,apple-watch-apps,watchkit,ios-app-development]
-description: watchOS 5 手把手開發Apple Watch App 從無到有
+last_modified_at: 2023-08-05T17:17:24.800+0000
+categories: "ZRealm Dev."
+tags: ["ios","watchos","apple-watch-apps","watchkit","ios-app-development"]
+description: "watchOS 5 手把手開發Apple Watch App 從無到有"
image:
path: /assets/e85d77b05061/1*aNqsa7aR3Vi3NIIvaUFZLA.png
render_with_liquid: false
@@ -14,7 +14,8 @@ render_with_liquid: false
### 動手做一支 Apple Watch App 吧!\(Swift\)
watchOS 5 手把手開發Apple Watch App 從無到有
-#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
+
+#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
### 前言:
暨上一篇 [Apple Watch 入手開箱文](../a2920e33e73e/) 後已經過了快三個月,最近終於找到機會研究開發Apple Watch App啦。
@@ -60,9 +61,9 @@ Apple Watch的定位 **「不是取代iPhone,而是輔助」** 不論是官方
#### 為iOS專案新建 watchOS Target:
-![File \-> New \-> Target \-> watchOS \-> WatchKit App](/assets/e85d77b05061/1*yxwki7mCbfJbEfsTDM683A.png)
+![File \-> New \-> Target \-> watchOS \-> WatchKit App](/assets/e85d77b05061/1*yxwki7mCbfJbEfsTDM683A.png)
-File \-> New \-> Target \-> watchOS \-> WatchKit App
+File \-> New \-> Target \-> watchOS \-> WatchKit App
_\*Apple Watch App無法獨立安裝,一定要依附在 iOS App 之下_
@@ -211,9 +212,9 @@ Layout設定Vertical,裡面子View要做上下兩個顯示
#### 為Row命名\(同UIKit UITableView為Cell設定identifier\):
-![選定Row\->Identifier\->輸入自訂名稱](/assets/e85d77b05061/1*VTCVIJRAG-sGdBLjC26TKg.png)
+![選定Row\->Identifier\->輸入自訂名稱](/assets/e85d77b05061/1*VTCVIJRAG-sGdBLjC26TKg.png)
-選定Row\->Identifier\->輸入自訂名稱
+選定Row\->Identifier\->輸入自訂名稱
#### Row的呈現樣式不只一種呢?
非常簡單,只要在拉一個Row放在Table裡\(實際要顯示哪個樣式的ROW由程式控制\)並輸入Identifier命名即可
@@ -375,7 +376,7 @@ override func awake(withContext context: Any?) {
p\.s\. 而且居然沒有getText的方法,只能extension變數或放在外部變數儲存
#### 與iPhone之間同步/資料傳遞
-如果有開發過iOS 相關 Extension 的話;下意識一定是用App Groups共享UserDefaults的方式,當初我也興沖沖的這樣做,然後卡了好久發現資料一直過不去,直到上網一查才發現,watchOS>2之後就不再支援此方法了…\.
+如果有開發過iOS 相關 Extension 的話;下意識一定是用App Groups共享UserDefaults的方式,當初我也興沖沖的這樣做,然後卡了好久發現資料一直過不去,直到上網一查才發現,watchOS>2之後就不再支援此方法了…\.
要使用新的WatchConnectivity方式讓手機跟手錶之間進行通訊\(類似socket概念\),iOS手機及手錶watchOS兩端都需要實做,我們寫成singleton模式如下:
@@ -663,7 +664,7 @@ class NotificationController: WKUserNotificationInterfaceController {
兩個做法都需watchOS ≥ 5 支援.
-使用self\.notificationActions增加按鈕則按鈕事件處理由ExtensionDelegate中的userNotificationCenter\( \_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: [@escaping](http://twitter.com/escaping){:target="_blank"} \( \) \-> Void\)處理,並以identifier識別動作
+使用self\.notificationActions增加按鈕則按鈕事件處理由ExtensionDelegate中的userNotificationCenter\( \_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: [@escaping](http://twitter.com/escaping){:target="_blank"} \( \) \-> Void\)處理,並以identifier識別動作
#### 選單功能?
@@ -732,9 +733,6 @@ class NotificationController: WKUserNotificationInterfaceController {
Apple Watch App Target 部署到手錶真的有夠慢 — [Narcos](https://www.netflix.com/tw/title/80025172){:target="_blank"}
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-02-06-6012b7b4f612.md b/_posts/zmediumtomarkdown/2019-02-06-6012b7b4f612.md
index be045c1a8..8beb98a1d 100644
--- a/_posts/zmediumtomarkdown/2019-02-06-6012b7b4f612.md
+++ b/_posts/zmediumtomarkdown/2019-02-06-6012b7b4f612.md
@@ -1,11 +1,11 @@
---
-title: iOS tintAdjustmentMode 屬性
-author: ZhgChgLi
+title: "iOS tintAdjustmentMode 屬性"
+author: "ZhgChgLi"
date: 2019-02-06T16:10:43.225+0000
-last_modified_at: 2021-02-24T01:32:28.471+0000
-categories: ZRealm Dev.
-tags: [uikit,swift,ios-app-development,autolayout,顧小事成大事]
-description: Present UIAlertController 時本頁上的 Image Assets (Render as template) .tintColor 設定失效問題
+last_modified_at: 2023-08-05T17:16:59.510+0000
+categories: "ZRealm Dev."
+tags: ["uikit","swift","ios-app-development","autolayout","顧小事成大事"]
+description: "Present UIAlertController 時本頁上的 Image Assets (Render as template) .tintColor 設定失效問題"
image:
path: /assets/6012b7b4f612/1*zwbk9bi9RKQ-MEuzlQHosA.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS tintAdjustmentMode 屬性
Present UIAlertController 時本頁上的 Image Assets \(Render as template\) \.tintColor 設定失效問題
+
### 顧小事成大事的第一篇:
@@ -65,9 +66,6 @@ extension UIButton {
查找了一陣子資料才發現跟這個屬性有關係,設定之後就解決我的小疑惑.
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-04-27-ac557047d206.md b/_posts/zmediumtomarkdown/2019-04-27-ac557047d206.md
index d0ff7970a..19babfbe5 100644
--- a/_posts/zmediumtomarkdown/2019-04-27-ac557047d206.md
+++ b/_posts/zmediumtomarkdown/2019-04-27-ac557047d206.md
@@ -1,11 +1,11 @@
---
-title: 自己的電話自己辨識(Swift)
-author: ZhgChgLi
+title: "自己的電話自己辨識(Swift)"
+author: "ZhgChgLi"
date: 2019-04-27T16:07:27.133+0000
-last_modified_at: 2021-02-24T01:32:40.250+0000
-categories: ZRealm Dev.
-tags: [ios,whoscall,swift,ios-app-development,ios-apps]
-description: iOS自幹 Whoscall 來電辨識、電話號碼標記 功能
+last_modified_at: 2023-08-05T17:16:35.202+0000
+categories: "ZRealm Dev."
+tags: ["ios","whoscall","swift","ios-app-development","ios-apps"]
+description: "iOS自幹 Whoscall 來電辨識、電話號碼標記 功能"
image:
path: /assets/ac557047d206/1*MYWY8n6v6YoGs0u5um0RdQ.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 自己的電話自己辨識\(Swift\)
iOS自幹 Whoscall 來電辨識、電話號碼標記 功能
+
#### 起源
一直以來都是Whoscall的忠實用戶,從原本用Android手機時就有使用,能夠非常即時的顯示陌生來電資訊,當下就能直接決定接通與否;後來轉跳蘋果陣營,第一隻蘋果手機是iPhone 6 \(iOS 9\),那時在使用Whoscall上非常彆扭,無法即時辨識電話,要複製電話號碼去APP查詢,後期Whoscall提供將陌生電話資料庫安裝在本地手機的服務,雖然能解決即時辨識的問題,但很容易就弄亂你的手機通訊錄!
@@ -29,16 +30,16 @@ iOS自幹 Whoscall 來電辨識、電話號碼標記 功能
#### 限制?
1. 使用者需手動進入「設定」「電話」「通話封鎖與識別」打開您的APP才能使用
-2. 僅能以離線資料庫方式辨識電話\(無法即時取得來電資訊然後Call API查詢,僅能預先寫入號碼<\->名稱對應在手機資料庫中\)
+2. 僅能以離線資料庫方式辨識電話\(無法即時取得來電資訊然後Call API查詢,僅能預先寫入號碼<\->名稱對應在手機資料庫中\)
_\*也因此Whoscall會定期推播請使用者開APP更新來電辨識資料庫_
3. 數量上限?目前沒查到資料,應該是依照使用者手機容量無特別上限;但是數量多得辨識清單、封鎖清單要分批處理寫入!
4. 軟體限制:iOS 版本需 ≥ 10
-![「設定」\->「電話」\->「通話封鎖與識別」](/assets/ac557047d206/1*MYWY8n6v6YoGs0u5um0RdQ.jpeg)
+![「設定」\->「電話」\->「通話封鎖與識別」](/assets/ac557047d206/1*MYWY8n6v6YoGs0u5um0RdQ.jpeg)
-「設定」\->「電話」\->「通話封鎖與識別」
+「設定」\->「電話」\->「通話封鎖與識別」
#### 應用場景?
1. 通訊軟體、辦公室通訊軟體;在APP內你可能有對方的聯絡人,但實際並未將手機號碼加入手機通訊錄中,這個功能就能避免同事甚至老闆來電時,被當陌生電話,結果漏接.
2. 敝站\( [結婚吧](https://www.marry.com.tw){:target="_blank"} \)或敝私的\( [591房屋交易](https://www.591.com.tw/){:target="_blank"} \),使用者與店家或房東聯繫時所撥打的電話都是我們的轉接號碼,經由轉接中心在轉撥到目標電話,大致流程如下:
@@ -70,9 +71,9 @@ _\*也因此Whoscall會定期推播請使用者開APP更新來電辨識資料庫
#### 1\.為 iOS 專案加入 Call Directory Extension
-![Xcode \-> File \-> New \-> Target](/assets/ac557047d206/1*k7RnXKeXW2uZPawkYQfIDg.png)
+![Xcode \-> File \-> New \-> Target](/assets/ac557047d206/1*k7RnXKeXW2uZPawkYQfIDg.png)
-Xcode \-> File \-> New \-> Target
+Xcode \-> File \-> New \-> Target
![選擇 Call Directory Extension](/assets/ac557047d206/1*w5sK8DfqYOTUTPDJVYFyLg.png)
@@ -162,9 +163,9 @@ if #available(iOS 10.0, *) {
就只是一般的本地檔案維護,要注意的就是目錄需要在Extesion也能讀取的地方。
#### 補充 — 電話號碼格式:
-1. 台灣地區市話、手機都需去掉0以886代替:如 0255667788 \-> 886255667788
+1. 台灣地區市話、手機都需去掉0以886代替:如 0255667788 \-> 886255667788
2. 電話格式是純數字組合的字串,勿夾雜「\-」、「,」、「\#」…等符號
-3. 市話電話如有包含要辨識到 **分機** ,直接接在後面即可不需帶任何符號:如 0255667788,0718 \-> 8862556677880718
+3. 市話電話如有包含要辨識到 **分機** ,直接接在後面即可不需帶任何符號:如 0255667788,0718 \-> 8862556677880718
4. 將一般iOS電話格式轉換成辨識資料庫可接受格式可參考以下兩個取代方法:
```swift
@@ -300,9 +301,6 @@ private func addOrRemoveIncrementalIdentificationPhoneNumbers(to context: CXCall
[Whoscall](https://whoscall.com/zh-TW/){:target="_blank"}
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-04-29-c5e7e580c341.md b/_posts/zmediumtomarkdown/2019-04-29-c5e7e580c341.md
index 3cb14caaf..acc7a6182 100644
--- a/_posts/zmediumtomarkdown/2019-04-29-c5e7e580c341.md
+++ b/_posts/zmediumtomarkdown/2019-04-29-c5e7e580c341.md
@@ -1,11 +1,11 @@
---
-title: iOS 完美實踐一次性優惠或試用的方法 (Swift)
-author: ZhgChgLi
+title: "iOS 完美實踐一次性優惠或試用的方法 (Swift)"
+author: "ZhgChgLi"
date: 2019-04-29T15:30:01.510+0000
-last_modified_at: 2021-02-24T01:33:22.142+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,ios-11,swift,mobile-app-development]
-description: iOS DeviceCheck 跟著你到天涯海角
+last_modified_at: 2023-08-05T17:16:11.558+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","ios-11","swift","mobile-app-development"]
+description: "iOS DeviceCheck 跟著你到天涯海角"
image:
path: /assets/c5e7e580c341/1*yXSqoDouuL4Jl2sM49iLHA.png
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
iOS DeviceCheck 跟著你到天涯海角
+
在寫上一篇 [Call Directory Extension](../ac557047d206/) 時無意間發現這個冷門的API,雖然已不是什麼新鮮事\(WWDC 2017時公布/iOS ≥11支援\)、實作方面也非常簡易;但還是小小的研究測試了一下並整理出文章當做個紀錄.
### DeviceCheck 能幹嘛?
@@ -92,9 +93,9 @@ DCDevice.current.generateToken { dataOrNil, errorOrNil in
#### 2\. 再點側欄的 [Certificates, IDs & Profiles](https://developer.apple.com/account/ios/certificate/){:target="_blank"} 前往憑證管理平台
-![選擇「Keys」\-> 「All」\-> 右上角「\+」新增](/assets/c5e7e580c341/1*zoRcWhT9HcwLXWlmui5wNw.png)
+![選擇「Keys」\-> 「All」\-> 右上角「\+」新增](/assets/c5e7e580c341/1*zoRcWhT9HcwLXWlmui5wNw.png)
-選擇「Keys」\-> 「All」\-> 右上角「\+」新增
+選擇「Keys」\-> 「All」\-> 右上角「\+」新增
![Step 1\.建立新Key,勾選「DeviceCheck」](/assets/c5e7e580c341/1*QgSEmllj-9AjM74tGucUag.png)
@@ -363,9 +364,6 @@ class ViewController: UIViewController {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-05-01-33afa0ae557d.md b/_posts/zmediumtomarkdown/2019-05-01-33afa0ae557d.md
index 80f335da3..c56e426ab 100644
--- a/_posts/zmediumtomarkdown/2019-05-01-33afa0ae557d.md
+++ b/_posts/zmediumtomarkdown/2019-05-01-33afa0ae557d.md
@@ -1,11 +1,11 @@
---
-title: AirPods 2 開箱及上手體驗心得
-author: ZhgChgLi
+title: "AirPods 2 開箱及上手體驗心得"
+author: "ZhgChgLi"
date: 2019-05-01T13:32:20.014+0000
-last_modified_at: 2021-02-24T01:33:33.761+0000
-categories: ZRealm Life.
-tags: [airpods,3c,開箱,airpods2,生活]
-description: 更加巧妙,無比驚歎。
+last_modified_at: 2023-08-05T17:15:47.565+0000
+categories: "ZRealm Life."
+tags: ["airpods","3c","開箱","airpods2","生活"]
+description: "更加巧妙,無比驚歎。"
image:
path: /assets/33afa0ae557d/1*-ILMv-qhWVqw2wJMjgDs3A.jpeg
render_with_liquid: false
@@ -13,7 +13,8 @@ render_with_liquid: false
### AirPods 2 開箱及上手體驗心得 \(雷射鐫刻版\)
#### 更加巧妙,無比驚歎。
-#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
+
+#### [\[最新\] Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
AirPods 這款產品剛出來時,我並沒有特別注意;第一眼看覺得就是個像蓮蓬頭的無線藍牙耳機,而且那時候無線藍牙耳機市場也是百家齊放的狀態,你能想到的款式、需求都能找到相符的產品再加上價格也不親民,有什麼特別的?
@@ -127,16 +128,16 @@ _p\.s 有刻字約需多等一週,不刻字可到101直接買或透過經銷
**手機版:**
-![打開「設定」\->「藍芽」\->「找到你的AirPods」\->「設定」](/assets/33afa0ae557d/1*Aktq6bFF9dDTfWXxrUSQTA.jpeg)
+![打開「設定」\->「藍芽」\->「找到你的AirPods」\->「設定」](/assets/33afa0ae557d/1*Aktq6bFF9dDTfWXxrUSQTA.jpeg)
-打開「設定」\->「藍芽」\->「找到你的AirPods」\->「設定」
+打開「設定」\->「藍芽」\->「找到你的AirPods」\->「設定」
**MacBook 版:**
-![左上角「」\->「系統偏好設定」\->「藍芽」\(若沒聲音請將聲音書出改選AirPods\)](/assets/33afa0ae557d/1*lkDI9yIkdo1X-FmqAftxpA.jpeg)
+![左上角「」\->「系統偏好設定」\->「藍芽」\(若沒聲音請將聲音書出改選AirPods\)](/assets/33afa0ae557d/1*lkDI9yIkdo1X-FmqAftxpA.jpeg)
-左上角「」\->「系統偏好設定」\->「藍芽」\(若沒聲音請將聲音書出改選AirPods\)
+左上角「」\->「系統偏好設定」\->「藍芽」\(若沒聲音請將聲音書出改選AirPods\)
可自行選擇左右耳的雙擊的動作.
@@ -151,18 +152,18 @@ _p\.s 有刻字約需多等一週,不刻字可到101直接買或透過經銷
**快速切換回iPhone上使用:**
-![上拉選單\->選擇音訊區塊\->選擇右上圖標\->切換選擇AirPods](/assets/33afa0ae557d/1*WAp5lJK3JPqsKEY6tX840g.jpeg)
+![上拉選單\->選擇音訊區塊\->選擇右上圖標\->切換選擇AirPods](/assets/33afa0ae557d/1*WAp5lJK3JPqsKEY6tX840g.jpeg)
-上拉選單\->選擇音訊區塊\->選擇右上圖標\->切換選擇AirPods
+上拉選單\->選擇音訊區塊\->選擇右上圖標\->切換選擇AirPods
也可由此查看AirPods電量。(顯示電量較低的那隻的電量)
**用小工具查看電量方法:**
-![左滑到控制中心\->下方「編輯」\->找到「電池」新增並排序](/assets/33afa0ae557d/1*CvQhTsxObgHlso2DfbQLTg.jpeg)
+![左滑到控制中心\->下方「編輯」\->找到「電池」新增並排序](/assets/33afa0ae557d/1*CvQhTsxObgHlso2DfbQLTg.jpeg)
-左滑到控制中心\->下方「編輯」\->找到「電池」新增並排序
+左滑到控制中心\->下方「編輯」\->找到「電池」新增並排序
以後就能直接左滑控制中心查看AirPods電量(顯示電量較低的那隻的電量)要看左右耳及盒子的電量,就需將其中一隻AirPods放回盒子並打開盒子(因為盒子本身沒有藍芽功能):
@@ -172,7 +173,7 @@ _p\.s 有刻字約需多等一週,不刻字可到101直接買或透過經銷
\*盒子內是我貼的防塵貼片
-> 這裡有一個BUG,如果你的電池小工具顯示電量一下之後就消失;請去「設定」\->「螢幕顯示與亮度」\->「文字大小」\-> 調回預設大小(第三格)即可!
+> 這裡有一個BUG,如果你的電池小工具顯示電量一下之後就消失;請去「設定」\->「螢幕顯示與亮度」\->「文字大小」\-> 調回預設大小(第三格)即可!
@@ -181,9 +182,9 @@ _p\.s 有刻字約需多等一週,不刻字可到101直接買或透過經銷
**Apple Watch 查看電量方法:**
-![上滑控制中心\->點擊電量](/assets/33afa0ae557d/1*A7ZVJoLehIN14J0LM5Y3qA.jpeg)
+![上滑控制中心\->點擊電量](/assets/33afa0ae557d/1*A7ZVJoLehIN14J0LM5Y3qA.jpeg)
-上滑控制中心\->點擊電量
+上滑控制中心\->點擊電量
Apple Watch 上電量顯示視窗下方會多顯示AirPods的電量
@@ -366,10 +367,7 @@ AHA AirPods 防塵貼
![](/assets/33afa0ae557d/1*NY3kXQ32tNEK3TpkKXp3zw.jpeg)
### 想知道Apple Watch Series 6 的上手體驗嗎?
-#### [Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
-
-
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
+#### [Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往](../eab0e984043/)
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-07-05-c3150cdc85dd.md b/_posts/zmediumtomarkdown/2019-07-05-c3150cdc85dd.md
index ecf09f89e..167a2956e 100644
--- a/_posts/zmediumtomarkdown/2019-07-05-c3150cdc85dd.md
+++ b/_posts/zmediumtomarkdown/2019-07-05-c3150cdc85dd.md
@@ -1,11 +1,11 @@
---
-title: 智慧家居初體驗 - Apple HomeKit & 小米米家
-author: ZhgChgLi
+title: "智慧家居初體驗 - Apple HomeKit & 小米米家"
+author: "ZhgChgLi"
date: 2019-07-05T17:13:47.487+0000
-last_modified_at: 2021-02-24T01:33:46.431+0000
-categories: ZRealm Life.
-tags: [生活,開箱,3c,米家,homekit]
-description: 米家智慧攝影機及米家智慧檯燈,米家、Homekit設定教學
+last_modified_at: 2023-08-05T17:15:18.388+0000
+categories: "ZRealm Life."
+tags: ["生活","開箱","3c","米家","homekit"]
+description: "米家智慧攝影機及米家智慧檯燈,米家、Homekit設定教學"
image:
path: /assets/c3150cdc85dd/1*Aa9zfAh7xclVOZS0IkcaMQ.jpeg
render_with_liquid: false
@@ -15,8 +15,9 @@ render_with_liquid: false
米家智慧攝影機及米家智慧檯燈、Homekit設定教學
+
**\[2020/04/20\]** [**進階篇已發**](../99db2a1fbfe5/) **:**
-**[有經驗的朋友請直接左轉前往>>](../99db2a1fbfe5/)** [**示範使用樹莓派當 HomeBridge 主機,將所有米家家電串上 HomeKit**](../99db2a1fbfe5/)
+**[有經驗的朋友請直接左轉前往>>](../99db2a1fbfe5/)** [**示範使用樹莓派當 HomeBridge 主機,將所有米家家電串上 HomeKit**](../99db2a1fbfe5/)
### 雜談:
最近剛搬完家;有別於原本住的地方,天花板是辦公室輕鋼架燈,亮到要拔掉幾根燈管眼睛才比較舒適;現在住的地方則是裝潢反射燈,使用電腦、看書亮度稍嫌不足,兩週下來眼睛覺得更容易乾澀不舒服;本想直接去IKEA採購,但考量到光色、護眼,最後比較一下CP值,於是還是選擇了小米檯燈\(加上之前已有買小米智慧攝影機,都是米家系列產品\)。
@@ -180,11 +181,11 @@ sudo npm install -g homebridge-mijia-camera
![](/assets/c3150cdc85dd/1*R4l6tRzDaqtiN7xutPKtQg.png)
-左側會顯示你所有安裝的APP,找到米家的APP「AppDomain\-com\.xiaomi\.mihome」\->「Documents」
+左側會顯示你所有安裝的APP,找到米家的APP「AppDomain\-com\.xiaomi\.mihome」\->「Documents」
在右側文件列表中找到並選擇 「 **數字\_mihome\.sqlite」** 這個檔案
-點擊右上角「Export」匯出 \->「Selected」
+點擊右上角「Export」匯出 \->「Selected」
將剛剛匯出的sqlite檔案丟到 [https://inloop\.github\.io/sqlite\-viewer/](https://inloop.github.io/sqlite-viewer/){:target="_blank"} 查看內容
@@ -218,7 +219,7 @@ sudo npm install -g homebridge-mijia-camera
![](/assets/c3150cdc85dd/1*Zh_BWLwMUg5pOxFEVipgiQ.png)
-使用「Finder」\->「前往」\->「前往檔案夾」\-> 輸入「~/\.homebridge」前往
+使用「Finder」\->「前往」\->「前往檔案夾」\-> 輸入「~/\.homebridge」前往
使用文字編輯器打開「config\.json」,若沒有此檔案請自行建立一個或 [點此下載](https://drive.google.com/file/d/1S67NZwXrVqOpps_Cl9l0494foDaHxuWF/view?usp=sharing){:target="_blank"} 直接放進去
```json
@@ -284,13 +285,13 @@ sudo homebridge restart
這點不得不吐槽一下這個糟糕的整合性,原生米家APP是無法做這項設定的;所以請到APP Store搜尋「 [Yeelight](https://apps.apple.com/tw/app/yeelight/id977125608){:target="_blank"} 」APP 下載&安裝
-開啟APP \-> 直接使用米家帳號登入 \-> 增加裝置 \-> 米家檯燈 \-> 照指示將檯燈改綁定到 Yeelight APP
+開啟APP \-> 直接使用米家帳號登入 \-> 增加裝置 \-> 米家檯燈 \-> 照指示將檯燈改綁定到 Yeelight APP
![](/assets/c3150cdc85dd/1*GTcap563FDdC0TsH09hZww.jpeg)
-裝置綁定完成後回到「裝置」頁 \-> 點「米家檯燈」進入 \-> 點右下角「△」Tab \-> 點「局域網控制」進入設定 \-> 打開按鈕允許局域網\(區域網路\)控制
+裝置綁定完成後回到「裝置」頁 \-> 點「米家檯燈」進入 \-> 點右下角「△」Tab \-> 點「局域網控制」進入設定 \-> 打開按鈕允許局域網\(區域網路\)控制
**檯燈的設置到這裡即可,你可以保留這個APP控制檯燈或再重新綁定回米家.**
@@ -367,7 +368,7 @@ sudo homebridge restart
依照步驟新增場景情境,這裡以回家為例:
-右上角點擊「\+」\-> 加入情境 \-> 自訂 \-> 配件名稱自行輸入\(EX:回家\) \-> 點下方「加入配件」\-> 選擇已串接好的HomeKit配件 \-> 設定這個場景時的配件狀態\(攝影機:關/臺燈:開\) \-> 可點「測試情境」進行測試 \-> 右上角「完成」!
+右上角點擊「\+」\-> 加入情境 \-> 自訂 \-> 配件名稱自行輸入\(EX:回家\) \-> 點下方「加入配件」\-> 選擇已串接好的HomeKit配件 \-> 設定這個場景時的配件狀態\(攝影機:關/臺燈:開\) \-> 可點「測試情境」進行測試 \-> 右上角「完成」!
這樣就設定好場囉~這時候在首頁點場景就換執行裡面所有配件的設定!
@@ -399,14 +400,14 @@ p\.s GPS會有約100公尺的誤差
這邊我使用的第三方串接APP是: [myHome Plus](https://apps.apple.com/us/app/myhome-plus-control-for-nest-wemo-and-homekit/id1050479330){:target="_blank"}
-下載&安裝後開啟APP \-> 允許存取「家庭資料」\-> 會看到「家庭」的資料配置 \-> 點選右上角「設定按鈕」\-> 點「我家」進入
-\->下拉到「Triggers」區域 \-> 點「Add Trigger」
+下載&安裝後開啟APP \-> 允許存取「家庭資料」\-> 會看到「家庭」的資料配置 \-> 點選右上角「設定按鈕」\-> 點「我家」進入
+\->下拉到「Triggers」區域 \-> 點「Add Trigger」
![](/assets/c3150cdc85dd/1*Kk6AMnhSYP4sM8JD_66Iow.jpeg)
-Trigger 類型選「Location」\-> Name 輸入名字\(EX:回家\) \-> 點「Set Location」設定位置區域 \-> 再來 REGION STATUS 可以設定是進入還是離開該區域 \-> 最後 SCENES 可以選擇對應要執行的「情景」\(上面建立的\)
+Trigger 類型選「Location」\-> Name 輸入名字\(EX:回家\) \-> 點「Set Location」設定位置區域 \-> 再來 REGION STATUS 可以設定是進入還是離開該區域 \-> 最後 SCENES 可以選擇對應要執行的「情景」\(上面建立的\)
按右上角「完成」儲存後,再回到「家庭」APP,可以看到「自動化」Tab 被打開可以用了!
@@ -455,7 +456,7 @@ HomeKit的設定介紹就到這邊了,再來講解米家原生智慧家庭的
![](/assets/c3150cdc85dd/1*leO3Z492pJPh3hEASYr-ww.jpeg)
-同「家庭設定方式」\-> 切換到「智慧」Tab \-> 選擇「手動執行」\-> 下方選擇裝置操作\(由於是原生所以可選更多功能\) \-> 繼續增加其他裝置\(檯燈\) \-> 「儲存」完成!
+同「家庭設定方式」\-> 切換到「智慧」Tab \-> 選擇「手動執行」\-> 下方選擇裝置操作\(由於是原生所以可選更多功能\) \-> 繼續增加其他裝置\(檯燈\) \-> 「儲存」完成!
> _一定會有人想問為什麼不直接選「離開或到達某地」?,因為這功能根本沒用,他APP沒針對台灣優化GPS是錯的,而且他的定位只能定在地標上,如果你的位置有那可以直接使用此功能, **文章後續也都可跳過!**_
@@ -474,7 +475,7 @@ HomeKit的設定介紹就到這邊了,再來講解米家原生智慧家庭的
![](/assets/c3150cdc85dd/1*ZjdH5A0QnLq2LNh9lWvCCw.jpeg)
-快捷開關部分,可以從「我的」\->「小元件」設定小工具元件!
+快捷開關部分,可以從「我的」\->「小元件」設定小工具元件!
這樣就能從通知中心快速執行場境、裝置囉!
@@ -491,12 +492,12 @@ _\*如果手錶APP一直出現空白請刪除重裝手錶或手機APP,這個AP
\* \* \* \* \*
#### \[2019/09/26\] 更新 iOS ≥ 13 只使用內建 捷徑 APP 達成自動化 :
-[iOS ≥ 13\.1 使用「捷徑」自動化功能搭配米家智慧家居,點擊前往查看>>](../21119db777dd/)
+[iOS ≥ 13\.1 使用「捷徑」自動化功能搭配米家智慧家居,點擊前往查看>>](../21119db777dd/)
\* \* \* \* \*
-> _iOS ≥ 12,iOS < 13 Only :_
+> _iOS ≥ 12,iOS < 13 Only :_
> **使用內建的捷徑APP搭配IFTTT**
@@ -509,7 +510,7 @@ _\*如果手錶APP一直出現空白請刪除重裝手錶或手機APP,這個AP
![](/assets/c3150cdc85dd/1*e9ld6Qn7D64CG-DZA1vAsA.jpeg)
-首先到「我的」\-> 「實驗室功能」\->「iOS 捷徑」\-> 「將米家場景加入捷勁」
+首先到「我的」\-> 「實驗室功能」\->「iOS 捷徑」\-> 「將米家場景加入捷勁」
打開系統內建的「 [捷徑](https://apps.apple.com/tw/app/%E6%8D%B7%E5%BE%91/id915249334){:target="_blank"} 」APP(若找不到請到App Stroe 搜尋下載回來)
@@ -517,16 +518,16 @@ _\*如果手錶APP一直出現空白請刪除重裝手錶或手機APP,這個AP
![](/assets/c3150cdc85dd/1*-rjtmZ6PHzSzOoBvjJ-FJQ.jpeg)
-點擊右上角「\+」建立捷徑 \-> 點右上完成下方的設定按鈕 \-> 名稱 \-> 輸入名稱(建議用英文,因為等等還要用到)
+點擊右上角「\+」建立捷徑 \-> 點右上完成下方的設定按鈕 \-> 名稱 \-> 輸入名稱(建議用英文,因為等等還要用到)
![](/assets/c3150cdc85dd/1*5aUsslYvZvlFiSQYJrGgRw.jpeg)
-回到新增捷徑頁面 \-> 在下方選單輸入搜尋「米家」\-> 加入對應的在米家設定的場景,關閉「執行時顯示」否則執行完會開啟米家APP。
+回到新增捷徑頁面 \-> 在下方選單輸入搜尋「米家」\-> 加入對應的在米家設定的場景,關閉「執行時顯示」否則執行完會開啟米家APP。
-> \*如果找不到米家請回到米家APP嘗試開關「我的」\-> 「實驗室功能」\->「iOS 捷徑」\-> 「將米家場景加入捷勁」、滑掉「捷徑」APP重開。
+> \*如果找不到米家請回到米家APP嘗試開關「我的」\-> 「實驗室功能」\->「iOS 捷徑」\-> 「將米家場景加入捷勁」、滑掉「捷徑」APP重開。
@@ -538,14 +539,14 @@ _\*如果手錶APP一直出現空白請刪除重裝手錶或手機APP,這個AP
![](/assets/c3150cdc85dd/1*5tXhFP4uT1ySSFAZnnDQGw.jpeg)
-打開IFTTT、登入帳號後,切換到「My Applets」Tab,點右上角「\+」新增\->
-點擊「\+this」\-> 搜尋「Location」\-> 選擇是進入還是離開
+打開IFTTT、登入帳號後,切換到「My Applets」Tab,點右上角「\+」新增\->
+點擊「\+this」\-> 搜尋「Location」\-> 選擇是進入還是離開
![](/assets/c3150cdc85dd/1*2vs32eIxtEmvqzxOsDLGEw.jpeg)
-設定位置 \-> 點擊「Create trigger」確定 \-> 換點下面「\+that」\-> 搜尋「notification」
+設定位置 \-> 點擊「Create trigger」確定 \-> 換點下面「\+that」\-> 搜尋「notification」
![](/assets/c3150cdc85dd/1*bVmWLH5tUcko5eeOmnR3kQ.jpeg)
@@ -559,9 +560,9 @@ Link URL 請輸入:shortcuts://run\-shortcut?name= **_捷徑名稱_**
所以才說捷徑名稱盡量設英文比較好
-\-> 點選「Create action」\-> 可點選「Edit title」設定名稱
+\-> 點選「Create action」\-> 可點選「Edit title」設定名稱
-\-> 「Finish」儲存完成!
+\-> 「Finish」儲存完成!
**當你下次離開/進入設定的區域範圍就會收到觸發的通知\(一樣有約100公尺的誤差範圍\),點選通知後就會自動執行米家場景囉!**
@@ -578,9 +579,9 @@ Link URL 請輸入:shortcuts://run\-shortcut?name= **_捷徑名稱_**
![](/assets/c3150cdc85dd/1*lyzEU2cKxafbnXkWnR7ltg.jpeg)
-在「智慧」Tab \-> 「加入Siri」\-> 選擇「目標場景」按「加入Siri」
+在「智慧」Tab \-> 「加入Siri」\-> 選擇「目標場景」按「加入Siri」
-\-> 點紅色錄製指令\(EX:關燈\) \-> 完成!
+\-> 點紅色錄製指令\(EX:關燈\) \-> 完成!
即可在Siri中直接呼叫控制執行場景!
### 總結
@@ -604,9 +605,6 @@ Link URL 請輸入:shortcuts://run\-shortcut?name= **_捷徑名稱_**
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-07-08-a66ce3dc8bb9.md b/_posts/zmediumtomarkdown/2019-07-08-a66ce3dc8bb9.md
index cef5a6aad..2787f1416 100644
--- a/_posts/zmediumtomarkdown/2019-07-08-a66ce3dc8bb9.md
+++ b/_posts/zmediumtomarkdown/2019-07-08-a66ce3dc8bb9.md
@@ -1,11 +1,11 @@
---
-title: Apple Watch 保護殼開箱體驗 (Catalyst & Muvit)
-author: ZhgChgLi
+title: "Apple Watch 保護殼開箱體驗 (Catalyst & Muvit)"
+author: "ZhgChgLi"
date: 2019-07-08T14:55:50.302+0000
-last_modified_at: 2021-02-24T01:33:57.974+0000
-categories: ZRealm Life.
-tags: [生活,開箱,3c,apple-watch,catalyst]
-description: Catalyst Apple Watch 超輕薄防水保護殼 & Muvit Apple Watch 保護套
+last_modified_at: 2023-08-05T17:14:46.538+0000
+categories: "ZRealm Life."
+tags: ["生活","開箱","3c","apple-watch","catalyst"]
+description: "Catalyst Apple Watch 超輕薄防水保護殼 & Muvit Apple Watch 保護套"
image:
path: /assets/a66ce3dc8bb9/1*IIgbhnQNb4H3UT3-5wQ0dw.jpeg
render_with_liquid: false
@@ -14,9 +14,10 @@ render_with_liquid: false
### Apple Watch 保護殼開箱體驗 \(Catalyst & Muvit\)
Catalyst Apple Watch 超輕薄防水保護殼 & Muvit Apple Watch 保護套
+
### \[最新更新\]
-- [**Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往**](../eab0e984043/)
-- [**Apple Watch 原廠不鏽鋼米蘭錶帶開箱>>點我前往**](../c0f99f987d9c/)
+- [**Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往**](../eab0e984043/)
+- [**Apple Watch 原廠不鏽鋼米蘭錶帶開箱>>點我前往**](../c0f99f987d9c/)
@@ -372,15 +373,12 @@ Digital Crown:
### 延伸閱讀
### \[最新更新\]
-- [**Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往**](../eab0e984043/)
-- [**Apple Watch 原廠不鏽鋼米蘭錶帶開箱>>點我前往**](../c0f99f987d9c/)
+- [**Apple Watch Series 6 開箱&使用兩年體驗心得 >>>點我前往**](../eab0e984043/)
+- [**Apple Watch 原廠不鏽鋼米蘭錶帶開箱>>點我前往**](../c0f99f987d9c/)
### 手錶都買了,不考慮AirPods 2耳機嗎?
-請看>> [AirPods 2 開箱及上手體驗心得](../33afa0ae557d/)
-
-
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
+請看>> [AirPods 2 開箱及上手體驗心得](../33afa0ae557d/)
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-07-24-729d7b6817a4.md b/_posts/zmediumtomarkdown/2019-07-24-729d7b6817a4.md
index 34514b158..911e02cb3 100644
--- a/_posts/zmediumtomarkdown/2019-07-24-729d7b6817a4.md
+++ b/_posts/zmediumtomarkdown/2019-07-24-729d7b6817a4.md
@@ -1,11 +1,11 @@
---
-title: 如何打造一場有趣的工程CTF競賽
-author: ZhgChgLi
+title: "如何打造一場有趣的工程CTF競賽"
+author: "ZhgChgLi"
date: 2019-07-24T14:32:34.350+0000
-last_modified_at: 2021-02-24T01:35:05.155+0000
-categories: ZRealm Dev.
-tags: [capture-the-flag,ios-app-development,php,computer-science,wargame]
-description: Capture The Flag 競賽建置與題目發想
+last_modified_at: 2023-08-05T17:14:21.673+0000
+categories: "ZRealm Dev."
+tags: ["capture-the-flag","ios-app-development","php","computer-science","wargame"]
+description: "Capture The Flag 競賽建置與題目發想"
image:
path: /assets/729d7b6817a4/1*w3Yf4Wuhv9LqFVPHMjHquQ.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 如何打造一場有趣的工程CTF競賽
Capture The Flag 競賽建置與題目發想
+
### 關於 CTF
Capture The Flag 奪旗簡稱 CTF;是一種源於西方的運動,在現代也常見於漆彈、第一人稱射擊遊戲中;原始概念是分組進行,各組需要保護自己的旗幟不被搶走另一方面也要想辦法得到別組的旗幟;應用在計算機領域就是「入侵攻防戰」首先找到自己的漏洞保護好不被入侵,另一方面製造零時差攻擊從其他隊伍搶奪分數。
@@ -234,7 +235,7 @@ Capture The Flag 奪旗簡稱 CTF;是一種源於西方的運動,在現代
![](/assets/729d7b6817a4/1*Qb9ABwqE53QzSBeiXQdFBw.png)
-將101 Encode Base64 => MTAx,偽造網址: `http://ctf.zhgchg.li/10/reset.php?requestid=MTAx` ,隨意輸入密碼後按下密碼重設即可通關!
+將101 Encode Base64 => MTAx,偽造網址: `http://ctf.zhgchg.li/10/reset.php?requestid=MTAx` ,隨意輸入密碼後按下密碼重設即可通關!
![](/assets/729d7b6817a4/1*n3aFQLWbzmUUtrBp1L1pEw.png)
@@ -456,9 +457,6 @@ Addcn 2019 CTF
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-09-20-46410aaada00.md b/_posts/zmediumtomarkdown/2019-09-20-46410aaada00.md
index 1e51652ff..f3f80bbe7 100644
--- a/_posts/zmediumtomarkdown/2019-09-20-46410aaada00.md
+++ b/_posts/zmediumtomarkdown/2019-09-20-46410aaada00.md
@@ -1,11 +1,11 @@
---
-title: APP有用HTTPS傳輸,但資料還是被偷了。
-author: ZhgChgLi
+title: "APP有用HTTPS傳輸,但資料還是被偷了。"
+author: "ZhgChgLi"
date: 2019-09-20T10:01:01.345+0000
-last_modified_at: 2021-08-07T12:34:43.834+0000
-categories: ZRealm Dev.
-tags: [mitmproxy,man-in-the-middle,ios,ios-app-development,hacking]
-description: iOS+MacOS 使用 mitmproxy 進行中間人攻擊(Man-in-the-middle attack) 嗅探API傳輸資料
+last_modified_at: 2023-08-05T17:13:11.010+0000
+categories: "ZRealm Dev."
+tags: ["mitmproxy","man-in-the-middle","ios","ios-app-development","hacking"]
+description: "iOS+MacOS 使用 mitmproxy 進行中間人攻擊(Man-in-the-middle attack) 嗅探API傳輸資料"
image:
path: /assets/46410aaada00/1*VTtl6EUMOTV4oRNUjRQHNg.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### APP有用HTTPS傳輸,但資料還是被偷了。
iOS\+MacOS 使用 mitmproxy 進行中間人攻擊\(Man\-in\-the\-middle attack\) 嗅探API傳輸資料教學及如何防範?
+
### 前言
前陣子剛在公司辦完一場內部的 [CTF競賽](../729d7b6817a4/) ,在發想題目時回想起大學時候還在做後端\(PHP\)時經手的專案,一個集點的APP,大概就是有個任務列表,然後觸發條件完成就Call API獲得點數;老闆認為Call API有經過HTTPS加密傳輸資料就很安全了 — 直到我向他展示中間人攻擊,直接嗅探傳輸資料,偽造API呼叫獲得點數…\.
@@ -65,22 +66,22 @@ mitmproxy
#### 讓手機跟Mac在同個區域網路內&取得Mac的IP位址
方法\(1\) Mac 連接 WiFi、手機也使用同個 WiFi
-**Mac的IP位址 =** 「系統偏好設定」\->「網路」\->「Wi\-Fi」\->「IP Address」
+**Mac的IP位址 =** 「系統偏好設定」\->「網路」\->「Wi\-Fi」\->「IP Address」
方法\(2\) Mac 使用有線網路,開啟網路分享;手機連上該熱點網路:
-![「系統偏好設定」\-> 「共享」\->選擇「乙太網路」\->「Wi\-Fi」打勾\-> 「Internet 共享」啟用](/assets/46410aaada00/1*R9fthpHlrWzTh4R3fEwO5Q.gif)
+![「系統偏好設定」\-> 「共享」\->選擇「乙太網路」\->「Wi\-Fi」打勾\-> 「Internet 共享」啟用](/assets/46410aaada00/1*R9fthpHlrWzTh4R3fEwO5Q.gif)
-「系統偏好設定」\-> 「共享」\->選擇「乙太網路」\->「Wi\-Fi」打勾\-> 「Internet 共享」啟用
+「系統偏好設定」\-> 「共享」\->選擇「乙太網路」\->「Wi\-Fi」打勾\-> 「Internet 共享」啟用
**Mac的IP位址 = 192\.168\.2\.1** (️️注意⚠️ 不是乙太網路網路的IP,是Mac用做網路分享基地台的IP\)
#### 手機網路設置WiFi — Proxy伺服器資訊
-![「設定」\-> 「WiFi」\-> 「HTTP 代理伺服器」\-> 「手動」\-> 「伺服器輸入 **Mac的IP位址** 」\-> 「連接埠輸入 **8080** 」\-> 「儲存」](/assets/46410aaada00/1*ziIFrGQaMr2kYrQHwLYNJg.jpeg)
+![「設定」\-> 「WiFi」\-> 「HTTP 代理伺服器」\-> 「手動」\-> 「伺服器輸入 **Mac的IP位址** 」\-> 「連接埠輸入 **8080** 」\-> 「儲存」](/assets/46410aaada00/1*ziIFrGQaMr2kYrQHwLYNJg.jpeg)
-「設定」\-> 「WiFi」\-> 「HTTP 代理伺服器」\-> 「手動」\-> 「伺服器輸入 **Mac的IP位址** 」\-> 「連接埠輸入 **8080** 」\-> 「儲存」
+「設定」\-> 「WiFi」\-> 「HTTP 代理伺服器」\-> 「手動」\-> 「伺服器輸入 **Mac的IP位址** 」\-> 「連接埠輸入 **8080** 」\-> 「儲存」
> _這時網頁打不開、出現憑證錯誤是正常的;我們繼續往下做…_
@@ -95,14 +96,14 @@ mitmproxy
**1\.用手機safari打開 [http://mitm\.it](http://mitm.it){:target="_blank"}**
-![出現左邊\->Proxy設定✅/ 出現右邊代表 Proxy設定有誤🚫](/assets/46410aaada00/1*BuvCYx9WRzG0ECO3H_BS0A.jpeg)
+![出現左邊\->Proxy設定✅/ 出現右邊代表 Proxy設定有誤🚫](/assets/46410aaada00/1*BuvCYx9WRzG0ECO3H_BS0A.jpeg)
-出現左邊\->Proxy設定✅/ 出現右邊代表 Proxy設定有誤🚫
+出現左邊\->Proxy設定✅/ 出現右邊代表 Proxy設定有誤🚫
-![「Apple」\->「安裝描述檔」\->「安裝」](/assets/46410aaada00/1*qKDHxi9HxUP41oDJahBfBA.jpeg)
+![「Apple」\->「安裝描述檔」\->「安裝」](/assets/46410aaada00/1*qKDHxi9HxUP41oDJahBfBA.jpeg)
-「Apple」\->「安裝描述檔」\->「安裝」
+「Apple」\->「安裝描述檔」\->「安裝」
> _⚠️到這裡還沒結束,我們還要去關於裡啟用描述檔_
@@ -112,9 +113,9 @@ mitmproxy
-![「一般」\->「關於」\->「憑證信任設定」\->「mitmproxy」啟用](/assets/46410aaada00/1*mOijblpQepazFPIwob4r8Q.jpeg)
+![「一般」\->「關於」\->「憑證信任設定」\->「mitmproxy」啟用](/assets/46410aaada00/1*mOijblpQepazFPIwob4r8Q.jpeg)
-「一般」\->「關於」\->「憑證信任設定」\->「mitmproxy」啟用
+「一般」\->「關於」\->「憑證信任設定」\->「mitmproxy」啟用
**完成!這時我們再回去瀏覽器就能正常瀏覽網頁了。**
#### 回到Mac 上操作 mitmproxy
@@ -345,9 +346,6 @@ mitmdump -s /redirect.py
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-09-22-4079036c85c2.md b/_posts/zmediumtomarkdown/2019-09-22-4079036c85c2.md
index 25e19db10..3e28b71ac 100644
--- a/_posts/zmediumtomarkdown/2019-09-22-4079036c85c2.md
+++ b/_posts/zmediumtomarkdown/2019-09-22-4079036c85c2.md
@@ -1,11 +1,11 @@
---
-title: iPlayground 2019 是怎麼樣的體驗?
-author: ZhgChgLi
+title: "iPlayground 2019 是怎麼樣的體驗?"
+author: "ZhgChgLi"
date: 2019-09-22T13:47:18.750+0000
-last_modified_at: 2021-02-24T01:35:08.800+0000
-categories: ZRealm Dev.
-tags: [iplayground,iplayground2019,ios-app-development,swift,taiwan-ios-conference]
-description: iPlayground 2019 火熱熱參加心得
+last_modified_at: 2023-08-05T17:10:08.946+0000
+categories: "ZRealm Dev."
+tags: ["iplayground","iplayground2019","ios-app-development","swift","taiwan-ios-conference"]
+description: "iPlayground 2019 火熱熱參加心得"
image:
path: /assets/4079036c85c2/1*IoPyeyKk_xgHqRzW19QUiQ.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iPlayground 2019 是怎麼樣的體驗?
iPlayground 2019 火熱熱參加心得
+
### 關於活動
去年辦在10月中,我也是去年10月初才開始經營 Medium 記錄生活;結合聽到的 UUID 議題跟參加心得也寫了篇 [文章](../a4bc3bce7513/) ;今年繼續來 **寫心得蹭熱度** !
@@ -53,7 +54,7 @@ iPlayground 2019 \(本次一樣是由 [公司](https://www.cakeresume.com/compan
-這部分要好好回去研究了,我會做好分類的<\( \_ \_ \)>
+這部分要好好回去研究了,我會做好分類的<\( \_ \_ \)>
_p\.s 沒搶到 KingFisher 貼紙 QQ_
#### 2\. **日本的大大 [kishikawa katsumi](https://twitter.com/k_katsumi){:target="_blank"}**
@@ -129,9 +130,6 @@ yes\!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-09-26-21119db777dd.md b/_posts/zmediumtomarkdown/2019-09-26-21119db777dd.md
index fe437b121..4a43e1a7c 100644
--- a/_posts/zmediumtomarkdown/2019-09-26-21119db777dd.md
+++ b/_posts/zmediumtomarkdown/2019-09-26-21119db777dd.md
@@ -1,11 +1,11 @@
---
-title: iOS ≥ 13.1 使用「捷徑」自動化功能搭配米家智慧家居
-author: ZhgChgLi
+title: "iOS ≥ 13.1 使用「捷徑」自動化功能搭配米家智慧家居"
+author: "ZhgChgLi"
date: 2019-09-26T14:23:36.828+0000
-last_modified_at: 2021-02-24T01:35:42.506+0000
-categories: ZRealm Life.
-tags: [米家,ios-13,siri,siri-shortcut,生活]
-description: 直接使用 iOS ≥ 13.1 內建的捷徑APP完成自動化操作
+last_modified_at: 2023-08-05T17:09:10.580+0000
+categories: "ZRealm Life."
+tags: ["米家","ios-13","siri","siri-shortcut","生活"]
+description: "直接使用 iOS ≥ 13.1 內建的捷徑APP完成自動化操作"
image:
path: /assets/21119db777dd/1*PxV5JPkSaWVLENgQwM1MqQ.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS ≥ 13\.1 使用「捷徑」自動化功能搭配米家智慧家居
直接使用 iOS ≥ 13\.1 內建的捷徑APP完成自動化操作
+
### 前言
今年 7 月初的時候買了米家檯燈 Pro、米家 LED 智慧檯燈兩個智能設備,差別在一個能支援HomeKit,一個僅支援米家;當時寫了篇「 [智慧家居初體驗 — Apple HomeKit & 小米米家](../c3150cdc85dd/) 」文章,裡面提到如何在沒有 HomePod/AppleTV/iPad 下完成離家、到家兩種模式的智慧功能,步驟有點麻煩。
@@ -37,9 +38,9 @@ render_with_liquid: false
#### 1\.先打開米家APP
-![切換到「我的」\->「智慧」](/assets/21119db777dd/1*Z0Papen1int2BNH-UO5GjQ.png)
+![切換到「我的」\->「智慧」](/assets/21119db777dd/1*Z0Papen1int2BNH-UO5GjQ.png)
-切換到「我的」\->「智慧」
+切換到「我的」\->「智慧」
> _這裡假設你已經把設備加入米家了。_
@@ -92,9 +93,9 @@ render_with_liquid: false
點擊要加入的智慧操作旁的「加入 Siri 」
-![輸入「呼叫Siri 時的指令」\-> 「Add to Siri」](/assets/21119db777dd/1*g0PjYwD7i-oiA3Ju9V76QQ.png)
+![輸入「呼叫Siri 時的指令」\-> 「Add to Siri」](/assets/21119db777dd/1*g0PjYwD7i-oiA3Ju9V76QQ.png)
-輸入「呼叫Siri 時的指令」\-> 「Add to Siri」
+輸入「呼叫Siri 時的指令」\-> 「Add to Siri」
**這邊要注意!** 指令不可以與 iOS 內建指令衝突!
#### 2\.打開 「 [Siri捷徑](https://apps.apple.com/tw/app/%E6%8D%B7%E5%BE%91/id915249334){:target="_blank"} 」 APP
@@ -245,9 +246,6 @@ render_with_liquid: false
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-09-26-bcff7c157941.md b/_posts/zmediumtomarkdown/2019-09-26-bcff7c157941.md
index 588d469b6..e2e27c1f6 100644
--- a/_posts/zmediumtomarkdown/2019-09-26-bcff7c157941.md
+++ b/_posts/zmediumtomarkdown/2019-09-26-bcff7c157941.md
@@ -1,11 +1,11 @@
---
-title: 小米智慧家居新添購
-author: ZhgChgLi
+title: "小米智慧家居新添購"
+author: "ZhgChgLi"
date: 2019-09-26T13:16:42.319+0000
-last_modified_at: 2021-02-24T01:35:19.264+0000
-categories: ZRealm Life.
-tags: [小米,米家,生活,家電,開箱]
-description: AI音箱、溫濕度感應器、體重計2、直流變頻電風扇
+last_modified_at: 2023-08-05T17:09:39.996+0000
+categories: "ZRealm Life."
+tags: ["小米","米家","生活","家電","開箱"]
+description: "AI音箱、溫濕度感應器、體重計2、直流變頻電風扇"
image:
path: /assets/bcff7c157941/1*DFq5pB-AwdTxgsjtO_aqyw.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 小米智慧家居新添購
AI音箱、溫濕度感應器、體重計2、直流變頻電風扇 使用心得
+
### 入坑
既上一篇「 [智慧家居初體驗 — Apple HomeKit & 小米米家](../c3150cdc85dd/) 」入手&介紹如何使用小米智慧家居後;又持續買了幾樣小米居家產品,並且想盡辦法讓所有家電都智慧化…\.只能說真的是個坑,起初只是想買個檯燈覺得小米美美的,順帶研究了智慧功能,就這樣入坑了!
@@ -93,9 +94,9 @@ APP 溫度紀錄
**關閉方式:**
-![可以到「我的」\-> 右上角「設定」\-> 裝置通知 \-> 找到米家藍芽溫濕度計 \-> 關閉](/assets/bcff7c157941/1*m5_dj0QgEs47J0ozBoNMnQ.jpeg)
+![可以到「我的」\-> 右上角「設定」\-> 裝置通知 \-> 找到米家藍芽溫濕度計 \-> 關閉](/assets/bcff7c157941/1*m5_dj0QgEs47J0ozBoNMnQ.jpeg)
-可以到「我的」\-> 右上角「設定」\-> 裝置通知 \-> 找到米家藍芽溫濕度計 \-> 關閉
+可以到「我的」\-> 右上角「設定」\-> 裝置通知 \-> 找到米家藍芽溫濕度計 \-> 關閉
關閉之後就不會再收到推播通知消息了!
### 新添購 — 體重計2
@@ -163,9 +164,6 @@ APP 溫度紀錄
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2019-11-11-b08ef940c196.md b/_posts/zmediumtomarkdown/2019-11-11-b08ef940c196.md
index 6f9fdf947..302329cee 100644
--- a/_posts/zmediumtomarkdown/2019-11-11-b08ef940c196.md
+++ b/_posts/zmediumtomarkdown/2019-11-11-b08ef940c196.md
@@ -1,11 +1,11 @@
---
-title: iOS Deferred Deep Link 延遲深度連結實作(Swift)
-author: ZhgChgLi
+title: "iOS Deferred Deep Link 延遲深度連結實作(Swift)"
+author: "ZhgChgLi"
date: 2019-11-11T14:34:57.966+0000
-last_modified_at: 2022-07-21T16:28:37.136+0000
-categories: ZRealm Dev.
-tags: [deeplink,ios-app-development,swift,universal-links,app-store]
-description: 動手打造適應所有場景、不中斷的App轉跳流程
+last_modified_at: 2023-08-05T17:08:31.531+0000
+categories: "ZRealm Dev."
+tags: ["deeplink","ios-app-development","swift","universal-links","app-store"]
+description: "動手打造適應所有場景、不中斷的App轉跳流程"
image:
path: /assets/b08ef940c196/1*P2saSHeIX7TZyCQY0StN1Q.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS Deferred Deep Link 延遲深度連結實作\(Swift\)
動手打造適應所有場景、不中斷的App轉跳流程
+
### \[2022/07/22\] 更新 iOS 16 Upcoming Changes
iOS ≥ 16 開始非使用者主動操作貼上動作,App 主動讀取剪貼簿的行為會跳出詢問視窗,使用者需要按允許,App 才能讀取到剪貼簿資訊。
@@ -93,9 +94,9 @@ iOS ≥ 9
**Universal Link** 本身就是個自己的網頁,若無跳轉,預設就是使用網頁瀏覽器呈現,這邊有網頁服務的可以選擇直接跳網頁瀏覽、沒有的就直接導 APP Store 頁面。
-有網頁服務的網站可以在 `` 中加入:
+有網頁服務的網站可以在 `<head></head>` 中加入:
-``
+`<meta name=”apple-itunes-app” content=”app-id=APPID, app-argument=頁面參數”>`
![](/assets/b08ef940c196/1*nC1JytAwIwKU04EMBBvf0A.jpeg)
@@ -111,7 +112,7 @@ iOS ≥ 9
我們要的當然不只是「當使用者有安裝 APP 則開啟 APP」,我們還要將來源資訊與 APP 串起,讓 APP 開啟後自動呈現目標頁面的 APP 畫面。
-**URL Scheme** 方式可在 AppDelegate 中的 `func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool` 進行處理:
+**URL Scheme** 方式可在 AppDelegate 中的 `func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool` 進行處理:
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if url.scheme == "marry",let params = url.queryParameters {
@@ -124,7 +125,7 @@ func application(_ application: UIApplication, open url: URL, sourceApplication:
}
```
-**Universal Link** 則是在 AppDelegate 中的 `func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool` 進行處理:
+**Universal Link** 則是在 AppDelegate 中的 `func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool` 進行處理:
```swift
extension URL {
/// test=1&a=b&c=d => ["test":"1","a":"b","c":"d"]
@@ -176,7 +177,7 @@ func application(_ application: UIApplication, continue userActivity: NSUserActi
![](/assets/b08ef940c196/1*ulrLKyvTKoChPScWD9wHyA.jpeg)
-如圖所示,如果是 未安裝 \-> APP Store 安裝 \-> APP Store 打開,來源所帶的資料就會中斷,APP 不知道來源所以就只會顯示首頁;使用者要再回到上一步網頁再點一次開啟,APP 才會驅動跳頁。
+如圖所示,如果是 未安裝 \-> APP Store 安裝 \-> APP Store 打開,來源所帶的資料就會中斷,APP 不知道來源所以就只會顯示首頁;使用者要再回到上一步網頁再點一次開啟,APP 才會驅動跳頁。
![](/assets/b08ef940c196/1*dFdvCRRdM3vrN3lnyG8Diw.jpeg)
@@ -413,7 +414,7 @@ override func viewDidLoad() {
實際的原理總結就是:在 `HomeViewController viewDidLoad` 時加入 `SFSafariViewController` 偷加載 `loadCookie.html` 頁面, `loadCookie.html` 頁面讀取檢查先前存的 Cookie,若有則讀出清除,然後使用 `window.location.href` 呼叫,觸發 `URL Scheme` 機制。
-所以之後對應的 CallBack 處理就會回到 `AppDelegate` 中的 `func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool` 進行處理。
+所以之後對應的 CallBack 處理就會回到 `AppDelegate` 中的 `func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool` 進行處理。
### 完工!總結:
@@ -425,9 +426,6 @@ override func viewDidLoad() {
iOS=9 的用戶已經非常稀少,不是很必要的話可以直接忽略;使用剪貼簿的方法快又有效率,而且用剪貼簿就不用局限連結一定要用 Safari 開啟!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-01-11-14cee137c565.md b/_posts/zmediumtomarkdown/2020-01-11-14cee137c565.md
index 4d98d8bfe..7e2dbdeeb 100644
--- a/_posts/zmediumtomarkdown/2020-01-11-14cee137c565.md
+++ b/_posts/zmediumtomarkdown/2020-01-11-14cee137c565.md
@@ -1,11 +1,11 @@
---
-title: iOS UIViewController 轉場二三事
-author: ZhgChgLi
+title: "iOS UIViewController 轉場二三事"
+author: "ZhgChgLi"
date: 2020-01-11T18:41:06.640+0000
-last_modified_at: 2021-02-24T01:37:09.676+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,swift,uiviewcontroller,mobile-app-development]
-description: UIViewController 下拉關閉/上拉出現/全頁右滑返回 效果全解
+last_modified_at: 2023-08-05T17:08:00.755+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","swift","uiviewcontroller","mobile-app-development"]
+description: "UIViewController 下拉關閉/上拉出現/全頁右滑返回 效果全解"
image:
path: /assets/14cee137c565/1*6IQTrlT4vIKR-NjLRsvZ-A.gif
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### iOS UIViewController 轉場二三事
UIViewController 下拉關閉/上拉出現/全頁右滑返回 效果全解
+
### 前言
@@ -441,7 +442,7 @@ class FadeInFadeOutTransition: NSObject, UIViewControllerAnimatedTransitioning {
**Murmur…**
-其實我本來是想全都改用新的 `UIViewPropertyAnimator` 也想推薦大家都用新的來做,但我遇到一個很奇怪的問題,就是在做全頁手勢返回 Pop 動畫時,若手勢放開,動畫歸位,上方的 Navigation Bar 的 Item 會淡入淡出閃一下…找不到解,但回去用 `UIView.animate` 就沒這問題;如果有地方沒注意到歡迎跟我說<\( \_ \_ \)>。
+其實我本來是想全都改用新的 `UIViewPropertyAnimator` 也想推薦大家都用新的來做,但我遇到一個很奇怪的問題,就是在做全頁手勢返回 Pop 動畫時,若手勢放開,動畫歸位,上方的 Navigation Bar 的 Item 會淡入淡出閃一下…找不到解,但回去用 `UIView.animate` 就沒這問題;如果有地方沒注意到歡迎跟我說<\( \_ \_ \)>。
![問題圖; \+ 按鈕是上一頁的](/assets/14cee137c565/1*cVg7iZ_rFC2nxm2H5ET1Gg.gif)
@@ -654,7 +655,7 @@ extension PullToDismissInteractive: UIGestureRecognizerDelegate {
}
```
-[_\*關於 sender\.setTranslation\( \.zero, in:interactiveView\) 原因的補充點我<_](https://stackoverflow.com/questions/29558622/pan-gesture-why-need-settranslation-to-zero){:target="_blank"}
+[_\*關於 sender\.setTranslation\( \.zero, in:interactiveView\) 原因的補充點我<_](https://stackoverflow.com/questions/29558622/pan-gesture-why-need-settranslation-to-zero){:target="_blank"}
我們需要依據不同的手勢操作效果,實作不同的 Class;若是同個連貫\(Present\+Dismii\)的操作也可包在一起。
@@ -950,7 +951,7 @@ class PresentAndDismissTransition: NSObject, UIViewControllerAnimatedTransitioni
在尋找全畫面都能手勢右滑返回的解決方案時,找到個 **Tricky** 的方法:
直接在畫面上加一個 `UIPanGestureRecognizer` 然後將 `target` 、 `action`
都指定到原生的 `interactivePopGestureRecognizer` , `action:handleNavigationTransition` 。
-[_\*詳細方法點我<_](https://juejin.im/entry/5795809dd342d30059ed5c60){:target="_blank"}
+[_\*詳細方法點我<_](https://juejin.im/entry/5795809dd342d30059ed5c60){:target="_blank"}
沒錯!看起來就很 Private API,感覺審核會被拒;而且不確定 Swift 是否可用,應該有用到 OC 才有的 Runtime 特性。
#### 還是走正規的吧:
@@ -1075,7 +1076,7 @@ class SlideFromLeftToRightTransition: NSObject, UIViewControllerAnimatedTransiti
#### 全篇 GitHub 範例下載:
-[![](https://opengraph.githubassets.com/38ad757b13f4e33c164d3d8b09edd780002c3207626395735877381e97fe64b1/zhgchgli0718/UIViewControllerTransitionDemo)](https://github.com/zhgchgli0718/UIViewControllerTransitionDemo){:target="_blank"}
+[![](https://opengraph.githubassets.com/af405b87d71ea95f59b19f5de94bda740a12566ddf86eb5a9b34d2271d53bb20/zhgchgli0718/UIViewControllerTransitionDemo)](https://github.com/zhgchgli0718/UIViewControllerTransitionDemo){:target="_blank"}
**參考資料:**
@@ -1091,9 +1092,6 @@ class SlideFromLeftToRightTransition: NSObject, UIViewControllerAnimatedTransiti
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-01-12-94a4020edb82.md b/_posts/zmediumtomarkdown/2020-01-12-94a4020edb82.md
index a76ed15ba..2221911e6 100644
--- a/_posts/zmediumtomarkdown/2020-01-12-94a4020edb82.md
+++ b/_posts/zmediumtomarkdown/2020-01-12-94a4020edb82.md
@@ -1,11 +1,11 @@
---
-title: 米家 APP / 小愛音箱地區問題
-author: ZhgChgLi
+title: "米家 APP / 小愛音箱地區問題"
+author: "ZhgChgLi"
date: 2020-01-12T14:04:14.058+0000
-last_modified_at: 2021-02-24T01:37:12.488+0000
-categories: ZRealm Life.
-tags: [生活,開箱,小米空氣清淨機,ios,小米]
-description: 新添購小米空氣淨化器 3 & 記錄下米家與小愛音箱的連動問題
+last_modified_at: 2023-08-05T17:04:02.912+0000
+categories: "ZRealm Life."
+tags: ["生活","開箱","小米空氣清淨機","ios","小米"]
+description: "新添購小米空氣淨化器 3 & 記錄下米家與小愛音箱的連動問題"
image:
path: /assets/94a4020edb82/1*X2T8fvt9LWwq-VgdOtDQDg.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 米家 APP / 小愛音箱地區問題
新添購小米空氣淨化器 3 & 記錄下米家與小愛音箱的連動問題
+
### 前言
關於小米的第四篇;最近再加一新成員 — **「小米空氣淨化器 3」**
@@ -85,9 +86,6 @@ render_with_liquid: false
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-01-12-d01252331b53.md b/_posts/zmediumtomarkdown/2020-01-12-d01252331b53.md
index 27796fe5d..3135db427 100644
--- a/_posts/zmediumtomarkdown/2020-01-12-d01252331b53.md
+++ b/_posts/zmediumtomarkdown/2020-01-12-d01252331b53.md
@@ -1,11 +1,11 @@
---
-title: Medium 經營一年回顧
-author: ZhgChgLi
+title: "Medium 經營一年回顧"
+author: "ZhgChgLi"
date: 2020-01-12T15:49:30.685+0000
-last_modified_at: 2021-02-24T01:37:14.990+0000
-categories: ZRealm Life.
-tags: [medium,ios,life,writing-life,medium-taiwan]
-description: Medium 經營一年回顧的哩哩扣扣或是說 2019 年總結
+last_modified_at: 2023-08-05T17:03:34.137+0000
+categories: "ZRealm Life."
+tags: ["medium","ios","life","writing-life","medium-taiwan"]
+description: "Medium 經營一年回顧的哩哩扣扣或是說 2019 年總結"
image:
path: /assets/d01252331b53/1*TKpaGn6Yv2bERvQ0bCfZLA.png
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
Medium 經營一年回顧的哩哩扣扣或是說 2019 年總結
+
轉眼之間在 Medium 發表文章已經過了一年,實際上週年慶應該是 2019/10 \(2018/10 第一篇\);但那時太忙了沒有靈感;眼看時間又向前邁入 2020 ,趕緊把經營一年的心得記錄一下、也當作是 2019 年總結吧!
### 回顧
@@ -70,9 +71,6 @@ Medium 在寫作的體驗上真的很好,如果你也是程式開發者可以
ZhgChgLi, 2020/01/11\.
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-02-01-a8c2d7ed144b.md b/_posts/zmediumtomarkdown/2020-02-01-a8c2d7ed144b.md
index 8a5a66e54..23ad3dece 100644
--- a/_posts/zmediumtomarkdown/2020-02-01-a8c2d7ed144b.md
+++ b/_posts/zmediumtomarkdown/2020-02-01-a8c2d7ed144b.md
@@ -1,11 +1,11 @@
---
-title: iOS 擴大按鈕點擊範圍
-author: ZhgChgLi
+title: "iOS 擴大按鈕點擊範圍"
+author: "ZhgChgLi"
date: 2020-02-01T13:45:49.438+0000
-last_modified_at: 2021-02-24T01:37:18.320+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,swift,顧小事成大事,uikit,ios]
-description: 重寫 pointInside 擴大感應區域
+last_modified_at: 2023-08-05T17:03:11.097+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","swift","顧小事成大事","uikit","ios"]
+description: "重寫 pointInside 擴大感應區域"
image:
path: /assets/a8c2d7ed144b/1*A4hoqSNLYhCUoJfRFrX9hw.jpeg
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
重寫 pointInside 擴大感應區域
+
日常開發上經常遇到版面照著設計 UI 排好之後,畫面美美的,但是實際操作上按鈕的感應範圍太小,不容易準確點擊;尤其對手指粗的人極不友善。
@@ -139,10 +140,7 @@ extension UIButton {
[UIView 改变触摸范围 \(Objective\-C\)](https://bqlin.github.io/iOS/UIView%20%E6%94%B9%E5%8F%98%E8%A7%A6%E6%91%B8%E8%8C%83%E5%9B%B4/){:target="_blank"}
### 附記
-去年同一時間想開個小分類「 **顧小事成大事** 」紀錄一下日常開發瑣碎的小事,但這些小事默默累積又能成大事增加整個 APP 的不管是體驗或是程式方面;結果 [拖了一年](../6012b7b4f612/) 才又增加了一篇文章 <\( \_ \_ \)>,小事真的很容易忘了記錄啊!
-
-
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
+去年同一時間想開個小分類「 **顧小事成大事** 」紀錄一下日常開發瑣碎的小事,但這些小事默默累積又能成大事增加整個 APP 的不管是體驗或是程式方面;結果 [拖了一年](../6012b7b4f612/) 才又增加了一篇文章 <\( \_ \_ \)>,小事真的很容易忘了記錄啊!
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-03-28-7498e1ff93ce.md b/_posts/zmediumtomarkdown/2020-03-28-7498e1ff93ce.md
index 1543b9eff..2a4731d8d 100644
--- a/_posts/zmediumtomarkdown/2020-03-28-7498e1ff93ce.md
+++ b/_posts/zmediumtomarkdown/2020-03-28-7498e1ff93ce.md
@@ -1,11 +1,11 @@
---
-title: iOS 逆向工程初體驗
-author: ZhgChgLi
+title: "iOS 逆向工程初體驗"
+author: "ZhgChgLi"
date: 2020-03-28T10:24:40.872+0000
-last_modified_at: 2021-02-24T01:37:23.499+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,hacking,jailbreak,security]
-description: 從越獄、提取iPA檔敲殼到UI分析注入及反編譯的探索過程
+last_modified_at: 2023-08-05T17:02:37.650+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","hacking","jailbreak","security"]
+description: "從越獄、提取iPA檔敲殼到UI分析注入及反編譯的探索過程"
image:
path: /assets/7498e1ff93ce/1*6MhDQU2llMbYPb2j5GqxZg.jpeg
render_with_liquid: false
@@ -14,9 +14,10 @@ render_with_liquid: false
### iOS 逆向工程初體驗
從越獄、提取iPA檔敲殼到UI分析注入及反編譯的探索過程
+
### 關於安全
-之前唯一做過跟安全有關的就只有 [**<< 使用中間人攻擊嗅探傳輸資料 >>**](../46410aaada00/) ;另外也接續這篇,假設我們在資料傳輸前編碼加密、接受時 APP 內解密,用以防止中間人嗅探;那還有可能被偷走資料嗎?
+之前唯一做過跟安全有關的就只有 [**<< 使用中間人攻擊嗅探傳輸資料 >>**](../46410aaada00/) ;另外也接續這篇,假設我們在資料傳輸前編碼加密、接受時 APP 內解密,用以防止中間人嗅探;那還有可能被偷走資料嗎?
> 答案是肯定的!,就算沒真的試驗過;世界上沒有破不了的系統,只有時間成本的問題,當破解耗費的時間精力大於破解成果,那就可以稱為是安全的!
@@ -77,7 +78,7 @@ render_with_liquid: false
可以選擇使用 [CocoaPods](https://lookin.work/faq/integration-cocoapods/){:target="_blank"} 安裝、 [斷點插入](https://lookin.work/faq/integration-breakpoint/){:target="_blank"} (僅支援模擬器)、 [手動導入Framework 到專案](https://lookin.work/faq/integration-sourcecode/){:target="_blank"} 、 [手動設置](https://lookin.work/faq/integration-manual/){:target="_blank"} ,四種方法。
-將專案 Build \+ Run 起來之後,就能 **在 Lookin 工具上選擇 APP 畫面** \-> **查看排版結構** 。
+將專案 Build \+ Run 起來之後,就能 **在 Lookin 工具上選擇 APP 畫面** \-> **查看排版結構** 。
![](/assets/7498e1ff93ce/1*DZJ7-gFs8hf9Dxl5FAjHIQ.png)
@@ -88,9 +89,9 @@ render_with_liquid: false
![](/assets/7498e1ff93ce/1*jJ_1bIAPxmqHzu8dAtyYSw.jpeg)
-**Step 1\.** 在越獄手機上打開「 **Cydia** 」\-> 搜尋「 **LookinLoader** 」\->「 **安裝** 」\-> 回到手機「 **設定** 」\->「 **Lookin** 」\->「 **Enabled Applications** 」\-> **啟用想要查看的 APP** 。
+**Step 1\.** 在越獄手機上打開「 **Cydia** 」\-> 搜尋「 **LookinLoader** 」\->「 **安裝** 」\-> 回到手機「 **設定** 」\->「 **Lookin** 」\->「 **Enabled Applications** 」\-> **啟用想要查看的 APP** 。
-**Step 2\.** 使用傳輸線 **將手機連接至 Mac 電腦** \-> **打開想要查看的APP** \-> 回到電腦, **在 Lookin 工具上選擇 APP 畫面** \-> 即可 **查看排版結構** 。
+**Step 2\.** 使用傳輸線 **將手機連接至 Mac 電腦** \-> **打開想要查看的APP** \-> 回到電腦, **在 Lookin 工具上選擇 APP 畫面** \-> 即可 **查看排版結構** 。
#### Lookin 查看排版結構
@@ -250,13 +251,13 @@ dump 成功之後就能獲取到整個 APP 的 \.h 資訊。
-> [>>APP有用HTTPS傳輸,但資料還是被偷了。](../46410aaada00/)
+> [>>APP有用HTTPS傳輸,但資料還是被偷了。](../46410aaada00/)
**2\.Cycript \(搭配越獄手機\) 動態分析/注入工具:**
-- 在越獄手機上打開「Cydia」\-> 搜尋「Cycript」\->「安裝」
+- 在越獄手機上打開「Cydia」\-> 搜尋「Cycript」\->「安裝」
- 在電腦打開一個 Terminal 使用 Open SSH 連線至手機, `ssh root@手機IP` \(預設是 `alpine` \)
- 打開目標 APP \(APP 保持在前景\)
- 在 Terminal 輸入 `ps -e | grep APP Bundle ID` 查找正在運行的 APP Process ID
@@ -301,9 +302,6 @@ cy# [alert show]
這個領域是個超級大坑,需要非常多的技術知識基礎才有可能精通;本篇文章只是粗淺了「體驗」了一下逆向工程是什麼感覺,如有不足敬請見諒! **僅供學術研究,勿做壞壞的事** ;個人覺得整個流程工具玩下來蠻有趣的,也對 APP 安全更有點概念!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-04-08-d796bf8e661e.md b/_posts/zmediumtomarkdown/2020-04-08-d796bf8e661e.md
index 9a2417c22..7d06f3802 100644
--- a/_posts/zmediumtomarkdown/2020-04-08-d796bf8e661e.md
+++ b/_posts/zmediumtomarkdown/2020-04-08-d796bf8e661e.md
@@ -1,11 +1,11 @@
---
-title: iOS HLS Cache 實踐方法探究之旅
-author: ZhgChgLi
+title: "iOS HLS Cache 實踐方法探究之旅"
+author: "ZhgChgLi"
date: 2020-04-08T17:12:17.716+0000
-last_modified_at: 2023-03-12T11:08:53.216+0000
-categories: ZRealm Dev.
-tags: [hls,ios,ios-app-development,cache,reverse-proxy]
-description: 使用 AVPlayer 播放 m3u8 串流影音檔時如何做到邊播放邊 Caching 的功能
+last_modified_at: 2023-08-05T17:01:46.272+0000
+categories: "ZRealm Dev."
+tags: ["hls","ios","ios-app-development","cache","reverse-proxy"]
+description: "使用 AVPlayer 播放 m3u8 串流影音檔時如何做到邊播放邊 Caching 的功能"
image:
path: /assets/d796bf8e661e/1*x_Js63o52qJMmYHKIuKF7A.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
使用 AVPlayer 播放 m3u8 串流影音檔時如何做到邊播放邊 Cache 的功能
+
![photo by [Mihis Alex](https://www.pexels.com/zh-tw/@mcraftpix?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels){:target="_blank"}](/assets/d796bf8e661e/1*x_Js63o52qJMmYHKIuKF7A.jpeg)
photo by [Mihis Alex](https://www.pexels.com/zh-tw/@mcraftpix?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels){:target="_blank"}
@@ -146,9 +147,8 @@ URLProtocol 會攔截到 `streetVoiceCache://zhgchg.li/aviciiwakemeup.m3u8?origi
**完整實作範例可參考:**
-
-[![](https://opengraph.githubassets.com/018ed45dff181fa4472e4efc88bbabe1649bdabc09db0f4b7bb51796e29907cb/StyleShare/HLSCachingReverseProxyServer)](https://github.com/StyleShare/HLSCachingReverseProxyServer/blob/master/Sources/HLSCachingReverseProxyServer/HLSCachingReverseProxyServer.swift){:target="_blank"}
-
+[**StyleShare/HLSCachingReverseProxyServer**](https://github.com/StyleShare/HLSCachingReverseProxyServer/blob/master/Sources/HLSCachingReverseProxyServer/HLSCachingReverseProxyServer.swift){:target="_blank"}
+[_A simple local reverse proxy server for HLS segment cache \- StyleShare/HLSCachingReverseProxyServer_ github\.com](https://github.com/StyleShare/HLSCachingReverseProxyServer/blob/master/Sources/HLSCachingReverseProxyServer/HLSCachingReverseProxyServer.swift){:target="_blank"}
因為我也是參考此範例做的,所以 Local HTTP Server 的部分我也是使用 [GCDWebServer](https://github.com/swisspol/GCDWebServer){:target="_blank"} ,另外還有更新的 [Telegraph](https://github.com/Building42/Telegraph){:target="_blank"} 可以使用。\( [CocoaHttpServer](https://github.com/robbiehanson/CocoaHTTPServer){:target="_blank"} 太久沒更新就不推薦用了\)
@@ -199,7 +199,7 @@ _\*網路上有找到很繞的方法…就是發個長請求、或不斷發空
**這邊比較像是做離線播放而非做 Cache 的功能。**
-另外使用者也能從「設定」\->「一般」\->「iPhone 儲存空間」\-> APP 中查看、管理已下載打包的音訊檔案。
+另外使用者也能從「設定」\->「一般」\->「iPhone 儲存空間」\-> APP 中查看、管理已下載打包的音訊檔案。
![下方 已下載的影片 部分](/assets/d796bf8e661e/1*_YNIdy8NRkhVdeDTNvXzxA.jpeg)
@@ -209,7 +209,7 @@ _\*網路上有找到很繞的方法…就是發個長請求、或不斷發空
**詳細實作可參考此範例:**
-[![](https://opengraph.githubassets.com/da64d1cde0bebe0ff192d2bdfe63ebdd3d3b5f5ecc2345688098ee2c8076d9ba/zhonglaoban/HLS-Stream)](https://github.com/zhonglaoban/HLS-Stream){:target="_blank"}
+[![](https://opengraph.githubassets.com/21b5d122d7481e817e18fbcd9a7a8485054c0d95b82213f41a197d5da58b10ba/zhonglaoban/HLS-Stream)](https://github.com/zhonglaoban/HLS-Stream){:target="_blank"}
### 結語
@@ -222,9 +222,6 @@ _\*網路上有找到很繞的方法…就是發個長請求、或不斷發空
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-04-20-99db2a1fbfe5.md b/_posts/zmediumtomarkdown/2020-04-20-99db2a1fbfe5.md
index 9c9a3170f..b48332ea5 100644
--- a/_posts/zmediumtomarkdown/2020-04-20-99db2a1fbfe5.md
+++ b/_posts/zmediumtomarkdown/2020-04-20-99db2a1fbfe5.md
@@ -1,11 +1,11 @@
---
-title: 打造舒適的 WFH 智慧居家環境,控制家電盡在指尖
-author: ZhgChgLi
+title: "打造舒適的 WFH 智慧居家環境,控制家電盡在指尖"
+author: "ZhgChgLi"
date: 2020-04-20T14:37:49.536+0000
-last_modified_at: 2021-02-24T01:39:50.697+0000
-categories: ZRealm Life.
-tags: [homekit,iphone,homebridge,米家,生活]
-description: 示範使用樹莓派當 HomeBridge 主機,將所有米家家電串上 HomeKit
+last_modified_at: 2023-08-05T17:00:40.392+0000
+categories: "ZRealm Life."
+tags: ["homekit","iphone","homebridge","米家","生活"]
+description: "示範使用樹莓派當 HomeBridge 主機,將所有米家家電串上 HomeKit"
image:
path: /assets/99db2a1fbfe5/1*qZeTn0r2u_MKJXubV17XvQ.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
示範使用樹莓派當 HomeBridge 主機,將所有米家家電串上 HomeKit
+
![photo by [picjumbo\.com](https://www.pexels.com/zh-tw/@picjumbo-com-55570?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels){:target="_blank"}](/assets/99db2a1fbfe5/1*qZeTn0r2u_MKJXubV17XvQ.jpeg)
photo by [picjumbo\.com](https://www.pexels.com/zh-tw/@picjumbo-com-55570?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels){:target="_blank"}
@@ -466,9 +467,9 @@ exit 0
**為了方便編輯,使用 VNC 遠端桌面連線至樹莓派** \(也可直接用指令\) **:**
-點左上角打開「 **檔案管理程式** 」\-> 進入「 **/home/pi/\.homebridge** 」
+點左上角打開「 **檔案管理程式** 」\-> 進入「 **/home/pi/\.homebridge** 」
-若沒看到「config\.json」檔案則在空白處點右鍵「 **New File** 」\-> 輸入檔案名稱「 **config\.json** 」
+若沒看到「config\.json」檔案則在空白處點右鍵「 **New File** 」\-> 輸入檔案名稱「 **config\.json** 」
在「 **config\.json** 」上按右鍵用「 **Text Editor** 」打開
@@ -786,9 +787,9 @@ Homebridge on 起來後,我們就可以開始逐個將所有米家家電加入
選擇「 **App Stroe** 」Icon
-![左方找到「米家 APP \(MiHome\.app\)」\-> 右方找到「 **數字\_mihome\.sqlite」** 這個檔案並「 **選擇** 」 \-> 右上角「 **Export** 」\-> 「 **Selected Files** 」](/assets/99db2a1fbfe5/1*VlGVYTHKG88GIiH4C745Vg.png)
+![左方找到「米家 APP \(MiHome\.app\)」\-> 右方找到「 **數字\_mihome\.sqlite」** 這個檔案並「 **選擇** 」 \-> 右上角「 **Export** 」\-> 「 **Selected Files** 」](/assets/99db2a1fbfe5/1*VlGVYTHKG88GIiH4C745Vg.png)
-左方找到「米家 APP \(MiHome\.app\)」\-> 右方找到「 **數字\_mihome\.sqlite」** 這個檔案並「 **選擇** 」 \-> 右上角「 **Export** 」\-> 「 **Selected Files** 」
+左方找到「米家 APP \(MiHome\.app\)」\-> 右方找到「 **數字\_mihome\.sqlite」** 這個檔案並「 **選擇** 」 \-> 右上角「 **Export** 」\-> 「 **Selected Files** 」
> \*若有兩個 「數字\_mihome\.sqlite」檔案,則挑 Created 建立時間最新的來用。
@@ -799,9 +800,8 @@ Homebridge on 起來後,我們就可以開始逐個將所有米家家電加入
將剛剛匯出的 **數字\_mihome\.sqlite** 檔案 **拖曳進這個網站查看內容:**
-
-[![]()](https://inloop.github.io/sqlite-viewer/){:target="_blank"}
-
+[**SQLite Viewer**](https://inloop.github.io/sqlite-viewer/){:target="_blank"}
+[_sqlite file viewer_ inloop\.github\.io](https://inloop.github.io/sqlite-viewer/){:target="_blank"}
**可將查詢語法換成:**
@@ -1107,9 +1107,9 @@ App Store 搜尋「Yeelight」安裝
-![安裝完打開 Yeelight APP \-> 「增加裝置」\-> 找到「米家檯燈」\-> 重新配對綁定](/assets/99db2a1fbfe5/1*cWBMAqa_xkL01SoURNSO8g.png)
+![安裝完打開 Yeelight APP \-> 「增加裝置」\-> 找到「米家檯燈」\-> 重新配對綁定](/assets/99db2a1fbfe5/1*cWBMAqa_xkL01SoURNSO8g.png)
-安裝完打開 Yeelight APP \-> 「增加裝置」\-> 找到「米家檯燈」\-> 重新配對綁定
+安裝完打開 Yeelight APP \-> 「增加裝置」\-> 找到「米家檯燈」\-> 重新配對綁定
![最後一步記得打開「 **區域網路控制** 」](/assets/99db2a1fbfe5/1*8un0THsUf3ZesFPGSj_p-g.jpeg)
@@ -1117,7 +1117,7 @@ App Store 搜尋「Yeelight」安裝
最後一步記得打開「 **區域網路控制** 」
-> \*如果不小心沒點到打開,可以在「裝置」頁 \-> 選檯燈裝置進入 \-> 點右下角「△」Tab \-> 點「局域網控制」進入設定 \-> 打開區域網路控制
+> \*如果不小心沒點到打開,可以在「裝置」頁 \-> 選檯燈裝置進入 \-> 點右下角「△」Tab \-> 點「局域網控制」進入設定 \-> 打開區域網路控制
@@ -1224,9 +1224,9 @@ App Store 搜尋「Yeelight」安裝
-![另外可以在「設定」\->「控制中心」\->「自訂」中將「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit \!](/assets/99db2a1fbfe5/1*e1FAJuyCLOWEkA6MAeENkA.jpeg)
+![另外可以在「設定」\->「控制中心」\->「自訂」中將「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit \!](/assets/99db2a1fbfe5/1*e1FAJuyCLOWEkA6MAeENkA.jpeg)
-另外可以在「設定」\->「控制中心」\->「自訂」中將「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit \!
+另外可以在「設定」\->「控制中心」\->「自訂」中將「家庭」APP 拉上去就能在下拉控制中心中快速操作 HomeKit \!
全部串上 HomeKit 後只有一個字「爽」!開關的反應更快,只差我沒有家庭中樞沒辦法遠端控制而已,此篇進階 Homebridge 也到此結束,感謝閱讀。
@@ -1248,9 +1248,6 @@ App Store 搜尋「Yeelight」安裝
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-05-10-2e4429f410d6.md b/_posts/zmediumtomarkdown/2020-05-10-2e4429f410d6.md
index 0fde9680e..332a253cf 100644
--- a/_posts/zmediumtomarkdown/2020-05-10-2e4429f410d6.md
+++ b/_posts/zmediumtomarkdown/2020-05-10-2e4429f410d6.md
@@ -1,11 +1,11 @@
---
-title: 使用 iPhone 簡單製作「偽」透視透明手機桌布
-author: ZhgChgLi
+title: "使用 iPhone 簡單製作「偽」透視透明手機桌布"
+author: "ZhgChgLi"
date: 2020-05-10T07:37:42.583+0000
-last_modified_at: 2021-08-07T12:28:19.585+0000
-categories: ZRealm Life.
-tags: [iphone,生活,imovie,chroma-key,wallpaper]
-description: 應用 iMovie 綠幕摳圖功能合成影片
+last_modified_at: 2023-08-05T16:58:08.473+0000
+categories: "ZRealm Life."
+tags: ["iphone","生活","imovie","chroma-key","wallpaper"]
+description: "應用 iMovie 綠幕摳圖功能合成影片"
image:
path: /assets/2e4429f410d6/1*ajTSwFaGmyAwQq05vUQVqA.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### 使用 iPhone 簡單製作「偽」透視透明手機桌布
應用 iMovie 綠幕摳圖功能合成影片
+
### 反正我很閒
[白天工作,被資本家剝削肉體;晚上又被大眾娛樂剝削心靈,依然做不到白天工作、晚上讀書、假日批判的境界](https://www.youtube.com/watch?v=0_dVHQBx-4k){:target="_blank"} !
@@ -85,9 +86,9 @@ render_with_liquid: false
-![「設定」\-> 「背景圖片」\->「選擇下載下來的綠色底圖」\->「同時設定」](/assets/2e4429f410d6/1*qso6JJNOi2Ox_hMfLMAR6A.png)
+![「設定」\-> 「背景圖片」\->「選擇下載下來的綠色底圖」\->「同時設定」](/assets/2e4429f410d6/1*qso6JJNOi2Ox_hMfLMAR6A.png)
-「設定」\-> 「背景圖片」\->「選擇下載下來的綠色底圖」\->「同時設定」
+「設定」\-> 「背景圖片」\->「選擇下載下來的綠色底圖」\->「同時設定」
![完成圖](/assets/2e4429f410d6/1*NYjXaoCiscPDzYdIlyUPbA.png)
@@ -111,9 +112,9 @@ render_with_liquid: false
-![「\+」\->「影片」\-> 選擇「 **乾淨的影片** 」\->「製作影片」](/assets/2e4429f410d6/1*Ju3cpubikU57M0fRadT_FA.jpeg)
+![「\+」\->「影片」\-> 選擇「 **乾淨的影片** 」\->「製作影片」](/assets/2e4429f410d6/1*Ju3cpubikU57M0fRadT_FA.jpeg)
-「\+」\->「影片」\-> 選擇「 **乾淨的影片** 」\->「製作影片」
+「\+」\->「影片」\-> 選擇「 **乾淨的影片** 」\->「製作影片」
插入乾淨的影片到專案中。
#### 6\. 將播放位置移到最前
@@ -134,27 +135,27 @@ render_with_liquid: false
-![點擊右上角「\+」\->「影片」\->「全部」](/assets/2e4429f410d6/1*bV7cBJN5tQyez7h1UEo3GA.jpeg)
+![點擊右上角「\+」\->「影片」\->「全部」](/assets/2e4429f410d6/1*bV7cBJN5tQyez7h1UEo3GA.jpeg)
-點擊右上角「\+」\->「影片」\->「全部」
+點擊右上角「\+」\->「影片」\->「全部」
![](/assets/2e4429f410d6/1*oQnGYEzWKHg4G7sYeiANVg.jpeg)
-![選擇「入鏡的操作影片」\->「…」\->「綠色/藍色螢幕」(俗稱:摳圖)](/assets/2e4429f410d6/1*VQZKKIb0Y0XdaetEeRBPJA.jpeg)
+![選擇「入鏡的操作影片」\->「…」\->「綠色/藍色螢幕」(俗稱:摳圖)](/assets/2e4429f410d6/1*VQZKKIb0Y0XdaetEeRBPJA.jpeg)
-選擇「入鏡的操作影片」\->「…」\->「綠色/藍色螢幕」(俗稱:摳圖)
+選擇「入鏡的操作影片」\->「…」\->「綠色/藍色螢幕」(俗稱:摳圖)
![](/assets/2e4429f410d6/1*pzVjiHLmhPNVnuqGpx5yUg.jpeg)
-![點選上方「入鏡操作影片」\->「滾動到有綠色桌布的影格」\-> 點擊「綠色區域」\-> 完成透視透明](/assets/2e4429f410d6/1*r2Y1PvoSM5IVrXGoekR1zA.png)
+![點選上方「入鏡操作影片」\->「滾動到有綠色桌布的影格」\-> 點擊「綠色區域」\-> 完成透視透明](/assets/2e4429f410d6/1*r2Y1PvoSM5IVrXGoekR1zA.png)
-點選上方「入鏡操作影片」\->「滾動到有綠色桌布的影格」\-> 點擊「綠色區域」\-> 完成透視透明
+點選上方「入鏡操作影片」\->「滾動到有綠色桌布的影格」\-> 點擊「綠色區域」\-> 完成透視透明
#### 8\.合成完成!匯出影片
@@ -166,9 +167,9 @@ render_with_liquid: false
-![確認兩段影片結束時間一致,點擊左上角「完成」\-> 下方「分享」 \-> 選擇輸出目標 \-> 輸出完成](/assets/2e4429f410d6/1*rlG8lMVKmPhUqBkrvzfglA.png)
+![確認兩段影片結束時間一致,點擊左上角「完成」\-> 下方「分享」 \-> 選擇輸出目標 \-> 輸出完成](/assets/2e4429f410d6/1*rlG8lMVKmPhUqBkrvzfglA.png)
-確認兩段影片結束時間一致,點擊左上角「完成」\-> 下方「分享」 \-> 選擇輸出目標 \-> 輸出完成
+確認兩段影片結束時間一致,點擊左上角「完成」\-> 下方「分享」 \-> 選擇輸出目標 \-> 輸出完成
#### 9\. 完成
@@ -187,9 +188,6 @@ just for fun…沒想到 iMovie 功能這麼強大!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-06-13-1aa2f8445642.md b/_posts/zmediumtomarkdown/2020-06-13-1aa2f8445642.md
index e62565b6f..223fee3f2 100644
--- a/_posts/zmediumtomarkdown/2020-06-13-1aa2f8445642.md
+++ b/_posts/zmediumtomarkdown/2020-06-13-1aa2f8445642.md
@@ -1,11 +1,11 @@
---
-title: 現實使用 Codable 上遇到的 Decode 問題場景總匯
-author: ZhgChgLi
+title: "現實使用 Codable 上遇到的 Decode 問題場景總匯"
+author: "ZhgChgLi"
date: 2020-06-13T16:33:58.105+0000
-last_modified_at: 2022-06-11T06:17:08.756+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,codable,json,decode]
-description: 從基礎到進階,深入使用 Decodable 滿足所有可能會遇到的問題場景
+last_modified_at: 2023-08-05T16:55:41.606+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","codable","json","decode"]
+description: "從基礎到進階,深入使用 Decodable 滿足所有可能會遇到的問題場景"
image:
path: /assets/1aa2f8445642/1*9VYP3_Mhj9xsLKbgCwt6XQ.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
從基礎到進階,深入使用 Decodable 滿足所有可能會遇到的問題場景
+
![Photo by [Gustas Brazaitis](https://unsplash.com/@gustasbrazaitis){:target="_blank"}](/assets/1aa2f8445642/1*9VYP3_Mhj9xsLKbgCwt6XQ.jpeg)
Photo by [Gustas Brazaitis](https://unsplash.com/@gustasbrazaitis){:target="_blank"}
@@ -144,7 +145,7 @@ case PropertyKeyName //不指定則預設使用 PropertyKeyName 為後端欄位
一旦加入 CodingKeys 枚舉,則必須列舉出所有非 Optional 的欄位,不能只列舉想要客製的 Key。
-另外一種方式是設定 JSONDecoder 的 keyDecodingStrategy,若 Response 資料欄位與 Property Name 僅為 `snake_case` <\-> `camelCase` 區別,可直接設定 `.keyDecodingStrategy` = `.convertFromSnakeCase` 就能自動匹配 Mapping。
+另外一種方式是設定 JSONDecoder 的 keyDecodingStrategy,若 Response 資料欄位與 Property Name 僅為 `snake_case` <\-> `camelCase` 區別,可直接設定 `.keyDecodingStrategy` = `.convertFromSnakeCase` 就能自動匹配 Mapping。
```swift
let jsonDecoder = JSONDecoder()
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
@@ -200,7 +201,7 @@ struct PageEntity: Decodable {
}
```
-使用: `PageEntity.self`
+使用: `PageEntity<Song>.self`
#### Date/Timestamp 自動 Decode:
設定 `JSONDecoder` 的 `dateDecodingStrategy`
@@ -1105,9 +1106,6 @@ zhgchgli:是告五人,不是五告人!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-06-17-724a7fb9a364.md b/_posts/zmediumtomarkdown/2020-06-17-724a7fb9a364.md
index eadf32fb3..a720d5553 100644
--- a/_posts/zmediumtomarkdown/2020-06-17-724a7fb9a364.md
+++ b/_posts/zmediumtomarkdown/2020-06-17-724a7fb9a364.md
@@ -1,11 +1,11 @@
---
-title: 使用 Google Site 建立個人網站還跟得上時代嗎?
-author: ZhgChgLi
+title: "使用 Google Site 建立個人網站還跟得上時代嗎?"
+author: "ZhgChgLi"
date: 2020-06-17T15:53:54.715+0000
-last_modified_at: 2022-07-16T16:03:37.707+0000
-categories: ZRealm Life.
-tags: [google,google-sites,web-development,生活,domain-names]
-description: 2020 新 Google Site 個人網站建立經驗及設定教學
+last_modified_at: 2023-08-05T16:55:11.677+0000
+categories: "ZRealm Life."
+tags: ["google","google-sites","web-development","生活","domain-names"]
+description: "2020 新 Google Site 個人網站建立經驗及設定教學"
image:
path: /assets/724a7fb9a364/1*K0D-wV8e92JP2kOBH6LdPA.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
新 Google Site 個人網站建立經驗及設定教學
+
![](/assets/724a7fb9a364/1*XFmZ3hHYo2X0GqM9OReN7A.png)
### Update 2022–07–17
@@ -50,11 +51,11 @@ render_with_liquid: false
3. wix/weebly 太偏商業網站,且免費版侵入性太強
4. **Google Site(本篇)**
5. Github Pages \+ Jekyll
-6. **還在找 >>> 歡迎提供建議**
+6. **還在找 >>> 歡迎提供建議**
### 關於 Google Site
-大約 2010 年時有用過舊版的 Google Site,當初拿來做個人網站的 \-> 檔案下載中心頁面;印象已有點模糊,只記得那時候的版面很笨重、介面用起來也很不順;事隔 10 年,我本來以為這個服務已經收收掉了,無意間喵到有網域投資者,拿來做域名停泊頁放出售聯絡資訊:
+大約 2010 年時有用過舊版的 Google Site,當初拿來做個人網站的 \-> 檔案下載中心頁面;印象已有點模糊,只記得那時候的版面很笨重、介面用起來也很不順;事隔 10 年,我本來以為這個服務已經收收掉了,無意間喵到有網域投資者,拿來做域名停泊頁放出售聯絡資訊:
![](/assets/724a7fb9a364/1*9r_pdRlseRfizfxXszwQtw.jpeg)
@@ -184,7 +185,7 @@ render_with_liquid: false
再新增一筆紀錄,類型選「 **CNAME Record** 」、主機輸入「 **www \(或你想用的子網域\)** 」、值輸入「 **ghs\.googlehosted\.com\.** 」按新增送出。
-> _另外也可多轉址 [http://zhgchg\.li](http://zhgchg.li){:target="_blank"} \-> [http://www\.zhgchg\.li](http://www.zhgchg.li){:target="_blank"}_
+> _另外也可多轉址 [http://zhgchg\.li](http://zhgchg.li){:target="_blank"} \-> [http://www\.zhgchg\.li](http://www.zhgchg.li){:target="_blank"}_
@@ -272,7 +273,7 @@ render_with_liquid: false
![](/assets/724a7fb9a364/1*J8Q3O3kHLQqkcbt3-89nsw.png)
-輸入路徑名稱(EX: dev \-> http://www\.zhgchg\.li/dev)
+輸入路徑名稱(EX: dev \-> http://www\.zhgchg\.li/dev)
#### 頁首頁尾設定
**1\.頁首設定**
@@ -448,9 +449,6 @@ EX: \#lifesection,我想拿來放頁面上方,做目錄索引瀏覽或頁底
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-06-25-cb00b1977537.md b/_posts/zmediumtomarkdown/2020-06-25-cb00b1977537.md
index b475c8c3f..472d26cf3 100644
--- a/_posts/zmediumtomarkdown/2020-06-25-cb00b1977537.md
+++ b/_posts/zmediumtomarkdown/2020-06-25-cb00b1977537.md
@@ -1,11 +1,11 @@
---
-title: 現實使用 Codable 上遇到的 Decode 問題場景總匯(下)
-author: ZhgChgLi
+title: "現實使用 Codable 上遇到的 Decode 問題場景總匯(下)"
+author: "ZhgChgLi"
date: 2020-06-25T17:56:31.959+0000
-last_modified_at: 2021-02-24T01:41:55.595+0000
-categories:
-tags: [ios,ios-app-development,codable,json,core-data]
-description: 合理的處理 Response Null 欄位資料、不一定都要重寫 init decoder
+last_modified_at: 2023-08-05T16:54:01.515+0000
+categories: ""
+tags: ["ios","ios-app-development","codable","json","core-data"]
+description: "合理的處理 Response Null 欄位資料、不一定都要重寫 init decoder"
image:
path: /assets/cb00b1977537/1*zoN0YxCnWdvMs35FaP5tNA.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
合理的處理 Response Null 欄位資料、不一定都要重寫 init decoder
+
![Photo by [Zan](https://unsplash.com/@zanilic?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/cb00b1977537/1*zoN0YxCnWdvMs35FaP5tNA.jpeg)
Photo by [Zan](https://unsplash.com/@zanilic?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -23,7 +24,7 @@ Photo by [Zan](https://unsplash.com/@zanilic?utm_source=unsplash&utm_medium=refe
既上篇「 [現實使用 Codable 上遇到的 Decode 問題場景總匯](../1aa2f8445642/) 」後,開發進度繼續邁進又遇到了新的場景新的問題,故出了此下篇,繼續把遇到的情景、研究心路都記錄下來,方便日後回頭查閱。
-前篇主要解決了 JSON String \-> Entity Object 的 Decodable Mapping,有了 Entity Object 後我們可以轉換成 Model Object 在程式內傳遞使用、View Model Object 處理資料顯示邏輯…等等; **另一方面我們需要將 Entity 轉換成 NSManagedObject 存入本地 Core Data 中** 。
+前篇主要解決了 JSON String \-> Entity Object 的 Decodable Mapping,有了 Entity Object 後我們可以轉換成 Model Object 在程式內傳遞使用、View Model Object 處理資料顯示邏輯…等等; **另一方面我們需要將 Entity 轉換成 NSManagedObject 存入本地 Core Data 中** 。
### 主要問題
假設我們的歌曲 Entity 結構如下:
@@ -67,7 +68,7 @@ A Response:
#### 解決方案
-如前所述,我們的架構是JSON String \-> Entity Object \-> NSManagedObject,所以當拿到 Entity Object 時已經是 Decode 後的結果了,沒有 raw data 可以操作;這邊當然可以拿原始 JSON String 比對操作,但與其這樣不如不要用 Codable。
+如前所述,我們的架構是JSON String \-> Entity Object \-> NSManagedObject,所以當拿到 Entity Object 時已經是 Decode 後的結果了,沒有 raw data 可以操作;這邊當然可以拿原始 JSON String 比對操作,但與其這樣不如不要用 Codable。
首先參考 [上一篇](../1aa2f8445642/) 使用 Associated Value Enum 當容器裝值。
```swift
@@ -276,11 +277,11 @@ struct Song: Decodable {
}
```
-因主要問題是 Optional 資料欄位、Decodable 類型,所以我們複寫的是 decodeIfPresent 這個方法。
+因主要問題是 Optional 資料欄位、Decodable 類型,所以我們複寫的是 decodeIfPresent<T: Decodable> 這個方法。
這邊推測原本 decodeIfPresent 的實作是,如果資料是 null 或 Response 未給 會直接 return nil,並不會真的跑 decode。
-所以原理也很簡單,只要 Decodable Type 是 OptionValue 則不論如何都 decode 看看,我們才能拿到不同狀態結果;但其實不判斷 Decodable Type 也行,那就是所有 Optional 欄位都會試著 Decode。
+所以原理也很簡單,只要 Decodable Type 是 OptionValue<T> 則不論如何都 decode 看看,我們才能拿到不同狀態結果;但其實不判斷 Decodable Type 也行,那就是所有 Optional 欄位都會試著 Decode。
**範例2\. 問題場景1 也能用此方法擴充:**
```swift
@@ -328,9 +329,6 @@ Codable 在使用上的各種奇技淫巧都用的差不多了,有些其實很
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-07-02-8a04443024e2.md b/_posts/zmediumtomarkdown/2020-07-02-8a04443024e2.md
index cd030ccb8..7ffb3f18f 100644
--- a/_posts/zmediumtomarkdown/2020-07-02-8a04443024e2.md
+++ b/_posts/zmediumtomarkdown/2020-07-02-8a04443024e2.md
@@ -1,11 +1,11 @@
---
-title: iOS 14 剪貼簿竊資恐慌,隱私與便利的兩難
-author: ZhgChgLi
+title: "iOS 14 剪貼簿竊資恐慌,隱私與便利的兩難"
+author: "ZhgChgLi"
date: 2020-07-02T13:51:36.337+0000
-last_modified_at: 2022-07-21T16:29:10.415+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,ios-14,hacking,security]
-description: 為何那麼多 iOS APP 會讀取你的剪貼簿?
+last_modified_at: 2023-08-05T16:53:29.894+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","ios-14","hacking","security"]
+description: "為何那麼多 iOS APP 會讀取你的剪貼簿?"
image:
path: /assets/8a04443024e2/1*wM7qHRz14k95BGZk769zIw.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
為何那麼多 iOS APP 會讀取你的剪貼簿?
+
![Photo by [Clint Patterson](https://unsplash.com/@cbpsc1?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/8a04443024e2/1*wM7qHRz14k95BGZk769zIw.jpeg)
Photo by [Clint Patterson](https://unsplash.com/@cbpsc1?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -65,7 +66,7 @@ Google Search
APP 打開時會讀取剪貼簿主要原因是要做「 [iOS Deferred Deep Link](../b08ef940c196/) 」 **加強使用者體驗** ,如上流程所示;當一個產品同時提供網頁及APP時,我們更希望使用者能安裝 APP(因黏著度更高),所以當使用者瀏覽網頁版網站時會導引下載 APP,但我們希望下載完開啟 APP 會自動打開網頁離開時的頁面。
-> _EX: 當我在 safari 逛 PxHome 手機網頁版 \-> 看到喜歡的產品想要購買 \-> PxHome 希望流量導 APP \-> 下載 APP \-> 打開 APP \-> 展現剛網頁看到的商品_
+> _EX: 當我在 safari 逛 PxHome 手機網頁版 \-> 看到喜歡的產品想要購買 \-> PxHome 希望流量導 APP \-> 下載 APP \-> 打開 APP \-> 展現剛網頁看到的商品_
@@ -166,7 +167,7 @@ if (@available(iOS 10.0, *)) {
- 自行實作 Branch\.io 的原理
- **APP 先跳客製化 Alert 告知使用者,再讀取剪貼簿(讓使用者安心)**
- 加入新隱私權條款
-- **iOS 14 最新的 App Clips?,網頁 \-> 導 App Clips 輕量使用 \-> 深入操作導 APP**
+- **iOS 14 最新的 App Clips?,網頁 \-> 導 App Clips 輕量使用 \-> 深入操作導 APP**
#### 延伸閱讀
- [iOS Deferred Deep Link 延遲深度連結實作\(Swift\)](../b08ef940c196/)
@@ -175,9 +176,6 @@ if (@available(iOS 10.0, *)) {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-09-17-41c49a75a743.md b/_posts/zmediumtomarkdown/2020-09-17-41c49a75a743.md
index 79d58d4e9..4acf82039 100644
--- a/_posts/zmediumtomarkdown/2020-09-17-41c49a75a743.md
+++ b/_posts/zmediumtomarkdown/2020-09-17-41c49a75a743.md
@@ -1,11 +1,11 @@
---
-title: Xcode 直接使用 Swift 撰寫 Run Script!
-author: ZhgChgLi
+title: "Xcode 直接使用 Swift 撰寫 Run Script!"
+author: "ZhgChgLi"
date: 2020-09-17T15:53:20.026+0000
-last_modified_at: 2021-02-24T01:42:15.691+0000
-categories: ZRealm Dev.
-tags: [ios,shell-script,xcode,ios-app-development,toolkit]
-description: 導入 Localization 多語系及 Image Assets 缺漏檢查、使用 Swift 打造 Run Script 腳本
+last_modified_at: 2023-08-05T16:52:45.535+0000
+categories: "ZRealm Dev."
+tags: ["ios","shell-script","xcode","ios-app-development","toolkit"]
+description: "導入 Localization 多語系及 Image Assets 缺漏檢查、使用 Swift 打造 Run Script 腳本"
image:
path: /assets/41c49a75a743/1*RU89TcfRAR5mmclMX9x57w.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
導入 Localization 多語系及 Image Assets 缺漏檢查、使用 Swift 打造 Shell Script 腳本
+
![Photo by [Glenn Carstens\-Peters](https://unsplash.com/@glenncarstenspeters?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/41c49a75a743/1*RU89TcfRAR5mmclMX9x57w.jpeg)
Photo by [Glenn Carstens\-Peters](https://unsplash.com/@glenncarstenspeters?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -145,7 +146,7 @@ let checkForUntranslated = true
匹配 Swift/ObjC的 `NSLocalizedString()` 方法,這個正規表示式只能匹配 `"Home.Title"` 這種格式的語句;假設我們是完整句子或有帶 Format 參數,則會被當誤當成 \[Unused Key\]。
-EX: `"Hi, %@ welcome to my app"、"Hello World!"` **<\- 這些語句都無法匹配**
+EX: `"Hi, %@ welcome to my app"、"Hello World!"` **<\- 這些語句都無法匹配**
我們可以新增一條 patterns 設定、或更改原本的 patterns 成:
@@ -188,7 +189,7 @@ func shell(_ command: String) -> String {
增加 `shell()` 執行 shell script,使用 `plutil -lint` 檢查 plist 語系檔案格式正確性,有錯、少「;」會回傳錯誤,沒錯會回傳 `OK` 以此作為判斷!
-檢查的地方可加在 LocalizationFiles\->process\( \) \-> `let location = singleLanguage…` 後,約 135 行的地方或參考我最後提供的完整魔改版。
+檢查的地方可加在 LocalizationFiles\->process\( \) \-> `let location = singleLanguage…` 後,約 135 行的地方或參考我最後提供的完整魔改版。
**其他客製化:**
@@ -872,9 +873,6 @@ print("Project檔案.lproj" + "/檔案:行: " + "warning: 警告訊息")
這兩個檢查工具導入之後,我們在開發上就能更安心、更有效率並且減少冗餘;也因為這次經驗大開眼界,日後如果有什麼新的 build run script 需求都能直接使用最熟悉的語言 swift 來進行製作!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-10-14-eab0e984043.md b/_posts/zmediumtomarkdown/2020-10-14-eab0e984043.md
index b10302600..954830231 100644
--- a/_posts/zmediumtomarkdown/2020-10-14-eab0e984043.md
+++ b/_posts/zmediumtomarkdown/2020-10-14-eab0e984043.md
@@ -1,11 +1,11 @@
---
-title: Apple Watch Series 6 開箱 & 兩年使用體驗
-author: ZhgChgLi
+title: "Apple Watch Series 6 開箱 & 兩年使用體驗"
+author: "ZhgChgLi"
date: 2020-10-14T12:48:38.900+0000
-last_modified_at: 2021-02-24T01:43:10.548+0000
-categories: ZRealm Life.
-tags: [apple,apple-watch-series-6,apple-watch,生活,開箱]
-description: Apple Watch Series 6 開箱及選購指南&兩年使用體驗彙整
+last_modified_at: 2023-08-05T16:51:33.384+0000
+categories: "ZRealm Life."
+tags: ["apple","apple-watch-series-6","apple-watch","生活","開箱"]
+description: "Apple Watch Series 6 開箱及選購指南&兩年使用體驗彙整"
image:
path: /assets/eab0e984043/1*g4nEVcKUt7Wwz3K4CeGQ3Q.jpeg
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### Apple Watch Series 6 開箱 & 兩年使用心得
Apple Watch Series 6 開箱及選購指南&兩年使用心得體驗彙整
+
### 前言
時光飛逝,距離 [上一篇開箱 Apple Watch Series 4 的文章](../a2920e33e73e/) 也已經過了兩年了;以功能來說 Series 4 綽綽有餘沒有升級的必要,Series 5/Series 6 沒有什麼核心的突破功能,都是有會更好、沒有也沒關係的更新。
@@ -31,7 +32,7 @@ Apple Watch Series 6 開箱及選購指南&兩年使用心得體驗彙整
-**\[2020–10–24 更新\]** :Spotify 已支援獨立播放,在手錶 Spotify APP 中選擇播放裝置\->Apple Watch\->連線藍牙耳機\->即可播放!(依然還不支援離線下載播放,需再有網路環境下才可使用)。
+**\[2020–10–24 更新\]** :Spotify 已支援獨立播放,在手錶 Spotify APP 中選擇播放裝置\->Apple Watch\->連線藍牙耳機\->即可播放!(依然還不支援離線下載播放,需再有網路環境下才可使用)。
![](/assets/eab0e984043/1*4OJsP_Nf56FV_U09zT429Q.jpeg)
@@ -285,7 +286,7 @@ Google Map 最近重回 Apple Watch ,但沒辦法直接查看路線地圖,
性能上都很足夠再撐個3~5年都還行,有預算當然買新不買舊,追求 CP 值可以購買 SE ,如果預算有限可以買二手 Series 4/5/LTE版,較好入手。
-> _Apple Watch 僅能與 iPhone 配對( **Android 手機、iPad 都無法** ),另外也要考慮當前手機 iOS 版本, **watchOS 7 僅限配對 iOS ≥ 14 以上機種**_ ( _watchOS 6 => iOS ≥ 13/watchOS 5 => iOS ≥ 12)_
+> _Apple Watch 僅能與 iPhone 配對( **Android 手機、iPad 都無法** ),另外也要考慮當前手機 iOS 版本, **watchOS 7 僅限配對 iOS ≥ 14 以上機種**_ ( _watchOS 6 => iOS ≥ 13/watchOS 5 => iOS ≥ 12)_
> _iPhone 要先升級到相對應的最低 iOS 版本才能配對使用。_
@@ -412,9 +413,6 @@ Series 4 可升可不升,畢竟主要只差在隨時顯示螢幕及血氧計
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-11-02-c0f99f987d9c.md b/_posts/zmediumtomarkdown/2020-11-02-c0f99f987d9c.md
index 85b8da429..bb6ca9fe7 100644
--- a/_posts/zmediumtomarkdown/2020-11-02-c0f99f987d9c.md
+++ b/_posts/zmediumtomarkdown/2020-11-02-c0f99f987d9c.md
@@ -1,11 +1,11 @@
---
-title: Apple Watch 原廠不鏽鋼米蘭錶帶開箱
-author: ZhgChgLi
+title: "Apple Watch 原廠不鏽鋼米蘭錶帶開箱"
+author: "ZhgChgLi"
date: 2020-11-02T15:23:46.598+0000
-last_modified_at: 2021-02-24T01:43:08.509+0000
-categories: ZRealm Life.
-tags: [apple-watch,生活,開箱,apple,米蘭錶帶]
-description: Apple 原廠不鏽鋼 44 公釐石墨色米蘭式錶環開箱
+last_modified_at: 2023-08-05T16:50:53.574+0000
+categories: "ZRealm Life."
+tags: ["apple-watch","生活","開箱","apple","米蘭錶帶"]
+description: "Apple 原廠不鏽鋼 44 公釐石墨色米蘭式錶環開箱"
image:
path: /assets/c0f99f987d9c/1*5-cOehnnwZhtNeRxMUfTqg.jpeg
render_with_liquid: false
@@ -15,6 +15,7 @@ render_with_liquid: false
Apple 原廠不鏽鋼 44 公釐石墨色米蘭式錶環開箱
+
緊接著上篇「 [Apple Watch Series 6 開箱 & 兩年使用心得](../eab0e984043/) 」這次也終於狠下心入手了 [原廠的米蘭錶帶](https://www.apple.com/tw/shop/product/MTU22FE/A/40-%E5%85%AC%E9%87%90%E9%8A%80%E8%89%B2%E7%B1%B3%E8%98%AD%E5%BC%8F%E9%8C%B6%E7%92%B0){:target="_blank"} ,其實兩年前就想入手但一直沒下手;這次正好一次更新,反正蘋果保證錶帶能通用在所有後續的 Apple Watch 版本,所以不擔心之後更新手錶後錶帶不能使用。
#### 優點
@@ -139,9 +140,6 @@ Apple 原廠不鏽鋼 44 公釐石墨色米蘭式錶環開箱
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2020-12-17-c4d7c2ce5a8d.md b/_posts/zmediumtomarkdown/2020-12-17-c4d7c2ce5a8d.md
index 720dc9264..40c828c90 100644
--- a/_posts/zmediumtomarkdown/2020-12-17-c4d7c2ce5a8d.md
+++ b/_posts/zmediumtomarkdown/2020-12-17-c4d7c2ce5a8d.md
@@ -1,11 +1,11 @@
---
-title: iOS APP 版本號那些事
-author: ZhgChgLi
+title: "iOS APP 版本號那些事"
+author: "ZhgChgLi"
date: 2020-12-17T14:33:08.230+0000
-last_modified_at: 2021-02-24T01:43:06.915+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,software-engineering,version-control,software-development]
-description: 版本號規則及判斷比較解決方案
+last_modified_at: 2023-08-05T16:49:25.345+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","software-engineering","version-control","software-development"]
+description: "版本號規則及判斷比較解決方案"
image:
path: /assets/c4d7c2ce5a8d/1*73CuWIMwmWT1ZsJB8K_q5g.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
版本號規則及判斷比較解決方案
+
![Photo by [James Yarema](https://unsplash.com/@jamesyarema?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/c4d7c2ce5a8d/1*73CuWIMwmWT1ZsJB8K_q5g.jpeg)
Photo by [James Yarema](https://unsplash.com/@jamesyarema?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -50,7 +51,7 @@ Photo by [James Yarema](https://unsplash.com/@jamesyarema?utm_source=unsplash&ut
> _先比 主版號,主版號 等於時 再比 次版號,次版號 等於時 再比 修訂號。_
-> _ex: 1\.0\.0 < 2\.0\.0 < 2\.1\.0 < 2\.1\.1_
+> _ex: 1\.0\.0 < 2\.0\.0 < 2\.1\.0 < 2\.1\.1_
@@ -71,7 +72,7 @@ Photo by [James Yarema](https://unsplash.com/@jamesyarema?utm_source=unsplash&ut
一般如果是緊急修復\(Hot Fix\)才會動到修訂號,正常狀況下都為 0;如果有新的版本上線可以將它歸回 0。
-> _EX: 第一版上線\(1\.0\.0\) \-> 補強第一版的功能 \(1\.1\.0\) \-> 發現有問題要修復 \(1\.1\.1\) \-> 再次發現有問題 \(1\.1\.2\) \-> 繼續補強第一版的功能 \(1\.2\.0\) \-> 全新改版 \(2\.0\.0\) \-> 發現有問題要修復 \(2\.0\.1\) … 以此類推_
+> _EX: 第一版上線\(1\.0\.0\) \-> 補強第一版的功能 \(1\.1\.0\) \-> 發現有問題要修復 \(1\.1\.1\) \-> 再次發現有問題 \(1\.1\.2\) \-> 繼續補強第一版的功能 \(1\.2\.0\) \-> 全新改版 \(2\.0\.0\) \-> 發現有問題要修復 \(2\.0\.1\) … 以此類推_
@@ -154,9 +155,9 @@ version.compare("1", options: .numeric) //.orderedDescending
可直接使用已用輪子: [mrackwitz/Version](https://github.com/mrackwitz/Version){:target="_blank"} 以下為重造輪子。
-複雜方式這邊遵照使用語意化版本 x\.y\.z 最為格式規範,自行使用 Regex 做字串頗析並自行實作比較操作符,除了基本的 =/>/≥/≤ 外還多實作了 ~> 操作符(同 Cocoapods 版本指定方式)並支援靜態輸入。
+複雜方式這邊遵照使用語意化版本 x\.y\.z 最為格式規範,自行使用 Regex 做字串頗析並自行實作比較操作符,除了基本的 =/>/≥/</≤ 外還多實作了 ~> 操作符(同 Cocoapods 版本指定方式)並支援靜態輸入。
-**~> 操作符的定義是:**
+**~> 操作符的定義是:**
大於等於此版本但小於此版本的\(上一階層版號\+1\)
```
@@ -277,7 +278,7 @@ Regex 是參考「 [語意化版本文件](https://semver.org/lang/zh-TW/#%E6%9C
```
-[![](https://regex101.com/static/assets/card.png)](https://regex101.com/r/vkijKf/1/){:target="_blank"}
+[![](https://regex101.com/preview/r/vkijKf/1/)](https://regex101.com/r/vkijKf/1/){:target="_blank"}
@@ -382,7 +383,7 @@ Version(1,0,0) >= Version(0,0,9) //true...
```
-> _支援 `>/≥/≤/=/!=/~>` 操作符。_
+> _支援 `>/≥/</≤/=/!=/~>` 操作符。_
@@ -466,7 +467,7 @@ class VersionTests: XCTestCase {
不過目前已經有很完整的 [Version](https://github.com/mrackwitz/Version){:target="_blank"} 處理 Pod 專案,所以不必要重造輪子,單純只是想順一下建立流程XD。
-也許也還會為已有的輪子提交實作 `~>` 的 PR。
+也許也還會為已有的輪子提交實作 `~>` 的 PR。
### 參考資料:
- [Xcode Help](https://help.apple.com/xcode/mac/current/#/devba7f53ad4){:target="_blank"}
- [語意化版本 2\.0\.0](https://semver.org/lang/zh-TW/spec/v2.0.0.html){:target="_blank"}
@@ -475,9 +476,6 @@ class VersionTests: XCTestCase {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-01-05-ee47f8f1e2d2.md b/_posts/zmediumtomarkdown/2021-01-05-ee47f8f1e2d2.md
index ef9216e47..4c83f294d 100644
--- a/_posts/zmediumtomarkdown/2021-01-05-ee47f8f1e2d2.md
+++ b/_posts/zmediumtomarkdown/2021-01-05-ee47f8f1e2d2.md
@@ -1,17 +1,18 @@
---
-title: AVPlayer 邊播邊 Cache 實戰
-author: ZhgChgLi
+title: "AVPlayer 邊播邊 Cache 實戰"
+author: "ZhgChgLi"
date: 2021-01-05T14:27:52.843+0000
-last_modified_at: 2021-02-24T01:43:50.871+0000
-categories:
-tags: [ios,ios-app-development,cache,avplayer,music-player]
-description: AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate 達成邊播放音樂/影片邊緩存
+last_modified_at: 2023-08-05T16:48:56.267+0000
+categories: ""
+tags: ["ios","ios-app-development","cache","avplayer","music-player"]
+description: "AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate 達成邊播放音樂/影片邊緩存"
render_with_liquid: false
---
### \[舊\]AVPlayer 邊播邊 Cache 實戰
摸清 AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate 的脈絡
+
### \[2021–01–31\] 文章公告:文章編修完成
在此要先對所有已讀原本文章的朋友深深一鞠躬道歉,因為自己的魯莽沒有徹底研究完成就發表文章;導致部分內容有誤、浪費您寶貴的時間。
@@ -29,9 +30,6 @@ render_with_liquid: false
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
_[Post](https://blog.zhgchg.li/avplayer-%E9%82%8A%E6%92%AD%E9%82%8A-cache-%E5%AF%A6%E6%88%B0-ee47f8f1e2d2){:target="_blank"} converted from Medium by [ZMediumToMarkdown](https://github.com/ZhgChgLi/ZMediumToMarkdown){:target="_blank"}._
diff --git a/_posts/zmediumtomarkdown/2021-01-31-6ce488898003.md b/_posts/zmediumtomarkdown/2021-01-31-6ce488898003.md
index 1e8956b18..3cd18ee0e 100644
--- a/_posts/zmediumtomarkdown/2021-01-31-6ce488898003.md
+++ b/_posts/zmediumtomarkdown/2021-01-31-6ce488898003.md
@@ -1,11 +1,11 @@
---
-title: AVPlayer 實踐本地 Cache 功能大全
-author: ZhgChgLi
+title: "AVPlayer 實踐本地 Cache 功能大全"
+author: "ZhgChgLi"
date: 2021-01-31T10:41:42.622+0000
-last_modified_at: 2023-03-12T11:07:11.326+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,cache,avplayer,music-player-app]
-description: AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate
+last_modified_at: 2023-08-05T16:48:31.782+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","cache","avplayer","music-player-app"]
+description: "AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate"
image:
path: /assets/6ce488898003/1*lAGpCiT80GFIQ2adYworVw.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
AVPlayer/AVQueuePlayer with AVURLAsset 實作 AVAssetResourceLoaderDelegate
+
![Photo by [Tyler Lastovich](https://unsplash.com/@lastly?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/6ce488898003/1*lAGpCiT80GFIQ2adYworVw.jpeg)
Photo by [Tyler Lastovich](https://unsplash.com/@lastly?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -225,7 +226,7 @@ http://zhgchg.li/music.mp3 => cacheable://zhgchg.li/music.mp3
#### `AVAssetResourceLoaderDelegate`
**只有兩個方法需要實現:**
-- func resourceLoader\( \_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource **loadingRequest** : AVAssetResourceLoadingRequest\) \-> Bool :
+- func resourceLoader\( \_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource **loadingRequest** : AVAssetResourceLoadingRequest\) \-> Bool :
此方法問我們能不能處理此資源,return true 能,return false 我們也不處理(unsupported url)。
@@ -258,16 +259,6 @@ Cache 的部分我直接使用 [PINCache](https://github.com/pinterest/PINCache)
-■■■■■■■■■■■■■■
-> **[Lex Tang](https://twitter.com/lexrus){:target="_blank"} @ Twitter Says:**
-
-> > @[zhgchgli](https://twitter.com/zhgchgli) 传统保守做法就是用 FileHandle,我写了大约 200 行 Swift 搞定这个事,它的 seek 和 read/write 能有效避免读写时的 OOM。之后 responds data request 的逻辑,可以参考 LeetCode 上 segment tree 相关的问题,如 [leetcode.com/problems/range…](https://leetcode.com/problems/range-module/)
-
-> **Tweeted at [2021-01-06 14:35:13](https://twitter.com/lexrus/status/1346827668860256258){:target="_blank"}.**
-
-■■■■■■■■■■■■■■
-
-
有這部分需求可參考大大的做法,用 FileHandle seek read/write 的特性進行處理。
### 開工!
@@ -334,16 +325,6 @@ class AssetData: NSObject, NSCoding {
- `mediaData` : 原始音訊 Data **(這邊檔案太大會 OOM)**
-
-■■■■■■■■■■■■■■
-> **[Lex Tang](https://twitter.com/lexrus){:target="_blank"} @ Twitter Says:**
-
-> > @[zhgchgli](https://twitter.com/zhgchgli) AssetData.mediaData 如果取的是一个 5GB 的 4K HDR 视频,还是会 OOM吧?另外谨慎一点的话,应该先判断 Accept-Ranges 再去取 Content-Range。
-
-> **Tweeted at [2021-01-31 15:06:09](https://twitter.com/lexrus/status/1355895147381198852?s=20){:target="_blank"}.**
-
-■■■■■■■■■■■■■■
-
#### PINCacheAssetDataManager
封裝 Data 存入、取出 PINCache 邏輯。
@@ -1064,13 +1045,13 @@ PINCache 包含 PINMemoryCache 和 PINDiskCache,PINCache 會幫我們處理從
![](/assets/6ce488898003/1*qXzny7KAwK20E6ma8zJUnw.png)
-Finder \-> 前往 \-> 貼上路徑
+Finder \-> 前往 \-> 貼上路徑
![](/assets/6ce488898003/1*IcyAHKsTgaG-xqu1QzQq6Q.png)
-在 Library \-> Caches \-> com\.pinterest\.PINDiskCache\.ResourceLoader 就是我們建的 Resource Loader Cache 目錄。
+在 Library \-> Caches \-> com\.pinterest\.PINDiskCache\.ResourceLoader 就是我們建的 Resource Loader Cache 目錄。
`PINCache(name: “ResourceLoader”)` 其中的 name 就是目錄名稱。
@@ -1106,9 +1087,6 @@ Finder \-> 前往 \-> 貼上路徑
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-02-948ed34efa09.md b/_posts/zmediumtomarkdown/2021-02-02-948ed34efa09.md
index d7253e43b..2977f6a3c 100644
--- a/_posts/zmediumtomarkdown/2021-02-02-948ed34efa09.md
+++ b/_posts/zmediumtomarkdown/2021-02-02-948ed34efa09.md
@@ -1,11 +1,11 @@
---
-title: iOS 跨平台帳號密碼整合加強登入體驗
-author: ZhgChgLi
+title: "iOS 跨平台帳號密碼整合加強登入體驗"
+author: "ZhgChgLi"
date: 2021-02-02T14:13:50.686+0000
-last_modified_at: 2021-02-24T01:44:22.830+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,password-security,web-credential,sign-in-with-apple]
-description: 比 Sign in with Apple 更值得加入的功能
+last_modified_at: 2023-08-05T16:47:56.364+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","password-security","web-credential","sign-in-with-apple"]
+description: "比 Sign in with Apple 更值得加入的功能"
image:
path: /assets/948ed34efa09/1*QRYrbCDXcDmUU9fK66YgAA.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
除 Sign in with Apple 也值得加入的功能
+
![Photo by [Dan Nelson](https://unsplash.com/@danny144?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/948ed34efa09/1*QRYrbCDXcDmUU9fK66YgAA.jpeg)
Photo by [Dan Nelson](https://unsplash.com/@danny144?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -44,7 +45,7 @@ Photo by [Dan Nelson](https://unsplash.com/@danny144?utm_source=unsplash&utm_med
Associated Domains!我們在 APP 中指定 Associated Domains 並在網站上上傳 apple\-app\-site\-association 檔案,兩邊就能相認。
-**1\.在專案設定中的「Signing & Capabilities」\-> 左上「\+ Capabilities」\->「Associated Domains」**
+**1\.在專案設定中的「Signing & Capabilities」\-> 左上「\+ Capabilities」\->「Associated Domains」**
![](/assets/948ed34efa09/1*0oVHvGSzUA5cohhsSyuamA.png)
@@ -60,7 +61,7 @@ Associated Domains!我們在 APP 中指定 Associated Domains 並在網站上
![](/assets/948ed34efa09/1*LLlPP2VVCinVdrMsXWvj3g.png)
-**3\.進入「Certificates, Identifiers & Profiles」\->「Identifiers」\-> 找到你的專案 \-> 打開「Associated Domains」功能**
+**3\.進入「Certificates, Identifiers & Profiles」\->「Identifiers」\-> 找到你的專案 \-> 打開「Associated Domains」功能**
![](/assets/948ed34efa09/1*ssGVeTV7AAfkbf1iYeQX7Q.png)
@@ -81,7 +82,7 @@ Associated Domains!我們在 APP 中指定 Associated Domains 並在網站上
}
```
-將 `TeamID.BundleId` 換成你的專案設定 \(ex: TeamID = `ABCD` , BundleID = `li.zhgchg.demoapp` => `ABCD.li.zhgchg.demoapp` \)
+將 `TeamID.BundleId` 換成你的專案設定 \(ex: TeamID = `ABCD` , BundleID = `li.zhgchg.demoapp` => `ABCD.li.zhgchg.demoapp` \)
將此檔案上傳到網站 `根目錄` 或 `/.well-known` 目錄下,假設你的 `webcredentials 網站域名` 是設 `google.com` 則此檔案就要是 `google.com/apple-app-site-association` 或 `google.com/.well-know/apple-app-site-association` 有辦法存取到的。
@@ -119,13 +120,13 @@ repeatPasswordTextField.textContentType = .newPassword
#### 沒出現?
-可能是沒打開自動填寫密碼功能(模擬器預設是關閉),請到「設定」\->「密碼」\->「自動填寫密碼」\->打開「自動填寫密碼」。
+可能是沒打開自動填寫密碼功能(模擬器預設是關閉),請到「設定」\->「密碼」\->「自動填寫密碼」\->打開「自動填寫密碼」。
![](/assets/948ed34efa09/1*a0vCvZA6PajjOwc8DFymIg.jpeg)
-抑或是該網站沒有已存在的密碼,一樣可在「設定」\->「密碼」\-> 右上角「\+ 新增」\-> 新增。
+抑或是該網站沒有已存在的密碼,一樣可在「設定」\->「密碼」\-> 右上角「\+ 新增」\-> 新增。
![](/assets/948ed34efa09/1*kOsFAy-UifNMor84LGEovw.jpeg)
@@ -334,10 +335,7 @@ let password = SecCreateSharedWebCredentialPassword() as String? ?? ""
![](/assets/948ed34efa09/1*LUaFOoZHai41oFNFkh6b4A.jpeg)
-在模擬器上按「Command」\+「R」開始錄影,按一下紅點停止錄影;在右下角滑出的預覽圖上按「右鍵」\->「Save as Animated GIF」即可存成 GIF 然後直接貼到文章內!
-
-
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
+在模擬器上按「Command」\+「R」開始錄影,按一下紅點停止錄影;在右下角滑出的預覽圖上按「右鍵」\->「Save as Animated GIF」即可存成 GIF 然後直接貼到文章內!
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-04-12c5026da33d.md b/_posts/zmediumtomarkdown/2021-02-04-12c5026da33d.md
index c442fc767..75306f258 100644
--- a/_posts/zmediumtomarkdown/2021-02-04-12c5026da33d.md
+++ b/_posts/zmediumtomarkdown/2021-02-04-12c5026da33d.md
@@ -1,11 +1,11 @@
---
-title: Universal Links 新鮮事
-author: ZhgChgLi
+title: "Universal Links 新鮮事"
+author: "ZhgChgLi"
date: 2021-02-04T03:57:25.914+0000
-last_modified_at: 2021-07-02T13:48:38.687+0000
-categories: ZRealm Dev.
-tags: [ios,ios-app-development,universal-links,app-store,deeplink]
-description: iOS 13, iOS 14 Universal Links 新鮮事&建立本地測試環境
+last_modified_at: 2023-08-05T16:47:18.690+0000
+categories: "ZRealm Dev."
+tags: ["ios","ios-app-development","universal-links","app-store","deeplink"]
+description: "iOS 13, iOS 14 Universal Links 新鮮事&建立本地測試環境"
image:
path: /assets/12c5026da33d/1*HYAd1aal5Et1A-Qzs6VAtQ.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
iOS 13, iOS 14 Universal Links 新鮮事&建立本地測試環境
+
![Photo by [NASA](https://unsplash.com/@nasa?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/12c5026da33d/1*HYAd1aal5Et1A-Qzs6VAtQ.jpeg)
Photo by [NASA](https://unsplash.com/@nasa?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -26,7 +27,7 @@ Photo by [NASA](https://unsplash.com/@nasa?utm_source=unsplash&utm_medium=referr
經手過的服務,對於實作 Universal Links 的考量都是 APP 上並沒有實作完整的網站功能,Universal Links 認的是域名,只要域名匹配到就會開啟 APP;關於這個問題可以下 NOT 排除 APP 上沒有相應功能的網址,若網站服務網址很極端,那乾脆新建一個 subdomain 用來做 Universal Links。
### apple\-app\-site\-association 何時更新?
-- iOS < 14,APP 在第一次安裝、更新時會去詢問 Universal Links 網站的 apple\-app\-site\-association。
+- iOS < 14,APP 在第一次安裝、更新時會去詢問 Universal Links 網站的 apple\-app\-site\-association。
- iOS ≥ 14 ,則是由 Apple CDN 做快取定期更新 Universal Links 網站的 apple\-app\-site\-association;APP 在第一次安裝、更新時會去跟 Apple CDN 拿取;但這邊就會有個問題,Apple CDN 的 apple\-app\-site\-association 可能還是舊的。
@@ -61,7 +62,7 @@ GET https://app-site-association.cdn-apple.com/a/v1/你的網域
加上 mode=developer 後,APP 在模擬器上每次 Build & Run 時都會直接跟網站拿最新的 app\-site\-association 來用。
-如果要 Build & Run 在實機則要先去「設定」\->「開發者」\-> 打開「Associated Domains Development」選項即可。
+如果要 Build & Run 在實機則要先去「設定」\->「開發者」\-> 打開「Associated Domains Development」選項即可。
![](/assets/12c5026da33d/1*gj4Qm445mFERa25t6PZV1Q.jpeg)
@@ -75,7 +76,7 @@ GET https://app-site-association.cdn-apple.com/a/v1/你的網域
### 開發測試
-如果是 iOS <14 記得有更改過 app\-site\-association 的話要刪掉再重 Build & Run APP 才會去抓最新的回來,iOS ≥ 14 請參考前述方法加上 mode=developer。
+如果是 iOS <14 記得有更改過 app\-site\-association 的話要刪掉再重 Build & Run APP 才會去抓最新的回來,iOS ≥ 14 請參考前述方法加上 mode=developer。
app\-site\-association 內容的修改,好一點的話可以自行修改伺服器上的檔;但對於有時候碰不到伺服器端的我們來說,如果要做 universal links 的測試會非常的麻煩,要不停的麻煩後端同事幫忙,變成要很確定 app\-site\-association 內容後一次上線,一直改來改去會把同事逼瘋。
#### 在本地建一個模擬環境
@@ -157,7 +158,7 @@ defaults write com.apple.finder AppleShowAllFiles TRUE
-在檔案上按右鍵 \-> 「取得資訊 Get Info」\->「Name & Extension」\-> 檢查有無副檔名&同時可取消勾選「隱藏檔案類型 Hide extension」
+在檔案上按右鍵 \-> 「取得資訊 Get Info」\->「Name & Extension」\-> 檢查有無副檔名&同時可取消勾選「隱藏檔案類型 Hide extension」
![](/assets/12c5026da33d/1*UFwnnjCot8xRqslhdQktKg.png)
@@ -252,7 +253,7 @@ http://localhost:8080/.well-known/apple-app-site-association
-點擊「Open」後開啟 APP \-> 測試成功!
+點擊「Open」後開啟 APP \-> 測試成功!
> _開發階段都測試 OK 後,將確認修改過之後的 apple\-app\-site\-association 檔案再交給後端上傳到伺服器就能確保萬無一失囉~_
@@ -270,7 +271,7 @@ http://localhost:8080/.well-known/apple-app-site-association
![](/assets/12c5026da33d/1*d6yvnEaiOPbqy57PDMe2Mw.png)
### Applinks 設定內容
-#### iOS < 13 之前:
+#### iOS < 13 之前:
設定檔較簡單,只有以下內容可設定:
```json
@@ -290,7 +291,7 @@ http://localhost:8080/.well-known/apple-app-site-association
}
```
-將 `TeamID.BundleId` 換成你的專案設定 \(ex: TeamID = `ABCD` , BundleID = `li.zhgchg.demoapp` => `ABCD.li.zhgchg.demoapp` \)。
+將 `TeamID.BundleId` 換成你的專案設定 \(ex: TeamID = `ABCD` , BundleID = `li.zhgchg.demoapp` => `ABCD.li.zhgchg.demoapp` \)。
> _如果有多個 appID 則要重複加入多組。_
@@ -469,9 +470,6 @@ func application(_ application: UIApplication, continue userActivity: NSUserActi
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-05-87090f101b9a.md b/_posts/zmediumtomarkdown/2021-02-05-87090f101b9a.md
index b51e0f2b6..6bdffdfe6 100644
--- a/_posts/zmediumtomarkdown/2021-02-05-87090f101b9a.md
+++ b/_posts/zmediumtomarkdown/2021-02-05-87090f101b9a.md
@@ -1,11 +1,11 @@
---
-title: 重灌筆記1-Laravel Homestead + phpMyAdmin 環境建置
-author: ZhgChgLi
+title: "重灌筆記1-Laravel Homestead + phpMyAdmin 環境建置"
+author: "ZhgChgLi"
date: 2021-02-05T06:01:41.657+0000
-last_modified_at: 2021-02-24T01:45:20.460+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,php,laravel,vagrant,virtualbox]
-description: 從 0 到 1 建置 Laravel 開發環境並搭配 phpMyAdmin GUI 管理 MySql 資料庫
+last_modified_at: 2023-08-05T16:46:52.346+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","php","laravel","vagrant","virtualbox"]
+description: "從 0 到 1 建置 Laravel 開發環境並搭配 phpMyAdmin GUI 管理 MySql 資料庫"
image:
path: /assets/87090f101b9a/1*9MZPkre9WoEpnu9-BCQNrw.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
從 0 到 1 建置 Laravel 開發環境並搭配 phpMyAdmin GUI 管理 MySql 資料庫
+
![[Laravel](https://laravel.com/){:target="_blank"}](/assets/87090f101b9a/1*9MZPkre9WoEpnu9-BCQNrw.png)
[Laravel](https://laravel.com/){:target="_blank"}
@@ -34,7 +35,7 @@ render_with_liquid: false
下載、安裝完這兩個軟體後,繼續下一步設定。
-> _VirtualBox 安裝時會要求要重新開機還有要到「設定」\->「安全性與隱私權」\->「Allow VirtualBox」才能啟用所有服務。_
+> _VirtualBox 安裝時會要求要重新開機還有要到「設定」\->「安全性與隱私權」\->「Allow VirtualBox」才能啟用所有服務。_
@@ -59,7 +60,7 @@ bash init.sh
到 [phpMyAdmin](https://www.phpmyadmin.net/){:target="_blank"} 官網下載最新版本回來。
-**解壓縮 \.zip \-> 資料夾 \-> 重新命名資料夾名稱 \-> 「phpMyAdmin」:**
+**解壓縮 \.zip \-> 資料夾 \-> 重新命名資料夾名稱 \-> 「phpMyAdmin」:**
![](/assets/87090f101b9a/1*HPhO6Mfyon4RaKnyoqiWJw.png)
@@ -306,7 +307,7 @@ to: /home/vagrant/phpMyAdmin
如果已經有 Laravel 專案也可以一併在此新增,例如我專案都放在 `~/Projects/Web` 下,所以我也先把目錄映射加上去。
#### sites 是設定本機虛擬網域與目錄映射,我們還需要修改本地 Hosts 檔增網域虛擬機映射:
-使用 Finder \-> Go \-> `/etc/hosts` ,找到 `hosts` 檔案;複製到桌面(因無法直接修改)
+使用 Finder \-> Go \-> `/etc/hosts` ,找到 `hosts` 檔案;複製到桌面(因無法直接修改)
> _網域名稱可隨意自訂,反正只有自己本機可以 Access。_
@@ -464,9 +465,6 @@ php composer-setup.php --install-dir=/usr/local/bin --filename=composer
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-20-70a1409b149a.md b/_posts/zmediumtomarkdown/2021-02-20-70a1409b149a.md
index bf1817e0d..42f846d93 100644
--- a/_posts/zmediumtomarkdown/2021-02-20-70a1409b149a.md
+++ b/_posts/zmediumtomarkdown/2021-02-20-70a1409b149a.md
@@ -1,11 +1,11 @@
---
-title: 使用 Python+Google Cloud Platform+Line Bot 自動執行例行瑣事
-author: ZhgChgLi
+title: "使用 Python+Google Cloud Platform+Line Bot 自動執行例行瑣事"
+author: "ZhgChgLi"
date: 2021-02-20T11:55:51.105+0000
-last_modified_at: 2021-11-21T14:52:42.902+0000
-categories: ZRealm Dev.
-tags: [google-cloud-platform,cloud-functions,cloud-scheduler,ios-app-development,python]
-description: 以簽到 APP 獎勵為例,打造每日自動簽到腳本
+last_modified_at: 2023-08-05T16:46:23.225+0000
+categories: "ZRealm Dev."
+tags: ["google-cloud-platform","cloud-functions","cloud-scheduler","ios-app-development","python"]
+description: "以簽到 APP 獎勵為例,打造每日自動簽到腳本"
image:
path: /assets/70a1409b149a/1*dFvxm6SynzYOmMEUALKJaA.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
以簽到獎勵 APP 為例,打造每日自動簽到腳本
+
![Photo by [Paweł Czerwiński](https://unsplash.com/@pawel_czerwinski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/70a1409b149a/1*dFvxm6SynzYOmMEUALKJaA.jpeg)
Photo by [Paweł Czerwiński](https://unsplash.com/@pawel_czerwinski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -70,11 +71,11 @@ Photo by [Paweł Czerwiński](https://unsplash.com/@pawel_czerwinski?utm_source=
![](/assets/70a1409b149a/1*jb-FAN5h1oFVFFvu1bpYgw.png)
-「Certificate 」\->「 Install Certificate On this Mac」\->「Installed & Trusted」
+「Certificate 」\->「 Install Certificate On this Mac」\->「Installed & Trusted」
**電腦的 Root 憑證裝好後換手機的:**
-「Certificate 」\->「 Install Certificate On iOS」\->「Physical Devices…」
+「Certificate 」\->「 Install Certificate On iOS」\->「Physical Devices…」
![](/assets/70a1409b149a/1*DBi9YVmfoaPH9WSCoPXycA.png)
@@ -357,7 +358,7 @@ def main(request):
return os.environ.get('test', 'DEFAULT VALUE')
```
-其他設定都不需要動,直接「儲存」\->「下一步」。
+其他設定都不需要動,直接「儲存」\->「下一步」。
- 執行階段選「Python 3\.x」並將寫好的 Python 腳本貼上,進入點改成「main」
@@ -371,13 +372,13 @@ def main(request):
request_args = args.args
```
-example: ?name=zhgchgli => request\_args = \[“name”:”zhgchgli”\]
+example: ?name=zhgchgli => request\_args = \[“name”:”zhgchgli”\]
```
取得 POST Body 資料:
request_json = request.get_json(silent=True)
```
-example: name=zhgchgli => request\_json = \[“name”:”zhgchgli”\]
+example: name=zhgchgli => request\_json = \[“name”:”zhgchgli”\]
**如果使用 Postman 測試 POST 記得使用「Raw\+JSON」POST 資料,否則不會有東西:**
@@ -405,7 +406,7 @@ requests>=2.25.1
需要花約 1~3 分鐘的時間等他部署完成。
-- 部署完成後可由前面記下的「 **觸發網址** 」前去執行查看是否正確運行,或使用「動作」\->「測試函式」進行測試
+- 部署完成後可由前面記下的「 **觸發網址** 」前去執行查看是否正確運行,或使用「動作」\->「測試函式」進行測試
@@ -465,7 +466,7 @@ UnboundLocalError: local variable 'db' referenced before assignment
![](/assets/70a1409b149a/1*0DO31noJ4a3xweb1annbSQ.png)
-在左方選單列找到「 **Cloud Firestore** 」\->「 **新增集合** 」
+在左方選單列找到「 **Cloud Firestore** 」\->「 **新增集合** 」
![](/assets/70a1409b149a/1*7c9sA8ZbxE6uGh6f-nfiVA.png)
@@ -483,7 +484,7 @@ UnboundLocalError: local variable 'db' referenced before assignment
**在 Python 中使用:**
-請先到 [GCP控制台 \-> IAM與管理 \-> 服務帳戶](https://console.cloud.google.com/iam-admin/serviceaccounts){:target="_blank"} ,按照以下步驟下載身份驗證私鑰文件:
+請先到 [GCP控制台 \-> IAM與管理 \-> 服務帳戶](https://console.cloud.google.com/iam-admin/serviceaccounts){:target="_blank"} ,按照以下步驟下載身份驗證私鑰文件:
首先選擇帳號:
@@ -491,7 +492,7 @@ UnboundLocalError: local variable 'db' referenced before assignment
![](/assets/70a1409b149a/1*JeB9m4BWzfRCZSofHq2tLg.png)
-下方「新增金鑰」\->「建立新的金鑰」
+下方「新增金鑰」\->「建立新的金鑰」
![](/assets/70a1409b149a/1*xi9nQUy48-QlFI4BEdIMew.png)
@@ -775,9 +776,6 @@ just in case…假設真的有狀況超出免費用量開始計價,我希望
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
有自動化相關優化需求也歡迎 [發案給我](https://www.zhgchg.li/contact){:target="_blank"} ,謝謝。
diff --git a/_posts/zmediumtomarkdown/2021-02-22-142244e5f07a.md b/_posts/zmediumtomarkdown/2021-02-22-142244e5f07a.md
index dc26936aa..c0d1ec7c8 100644
--- a/_posts/zmediumtomarkdown/2021-02-22-142244e5f07a.md
+++ b/_posts/zmediumtomarkdown/2021-02-22-142244e5f07a.md
@@ -1,11 +1,11 @@
---
-title: 揭露一個幾年前發現的巧妙網站漏洞
-author: ZhgChgLi
+title: "揭露一個幾年前發現的巧妙網站漏洞"
+author: "ZhgChgLi"
date: 2021-02-22T13:27:06.542+0000
-last_modified_at: 2021-03-14T15:58:09.535+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,hacker,web-security,website-security-test,capture-the-flag]
-description: 多個漏洞合併引起的網站資安問題
+last_modified_at: 2023-08-05T16:45:45.410+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","hacker","web-security","website-security-test","capture-the-flag"]
+description: "多個漏洞合併引起的網站資安問題"
image:
path: /assets/142244e5f07a/1*EQPani1J-PTO-ccp588gBg.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
多個漏洞合併引起的網站資安問題
+
![Photo by [Tarik Haiga](https://unsplash.com/@tar1k?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/142244e5f07a/1*EQPani1J-PTO-ccp588gBg.jpeg)
Photo by [Tarik Haiga](https://unsplash.com/@tar1k?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -233,9 +234,6 @@ https://zhgchg.li/mailImage.php?mail=UTVRZwZuDjMNPLZhBGI
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-23-d9a95d4224ea.md b/_posts/zmediumtomarkdown/2021-02-23-d9a95d4224ea.md
index 84311b40a..0d8dfa162 100644
--- a/_posts/zmediumtomarkdown/2021-02-23-d9a95d4224ea.md
+++ b/_posts/zmediumtomarkdown/2021-02-23-d9a95d4224ea.md
@@ -1,11 +1,11 @@
---
-title: Medium 自訂網域功能回歸
-author: ZhgChgLi
+title: "Medium 自訂網域功能回歸"
+author: "ZhgChgLi"
date: 2021-02-23T18:25:15.743+0000
-last_modified_at: 2022-07-11T16:02:43.759+0000
-categories: ZRealm Life.
-tags: [medium,生活,domain-names,domain-authority,domain-registration]
-description: 自己的 Domain Authority 自己養!
+last_modified_at: 2023-08-05T16:45:13.887+0000
+categories: "ZRealm Life."
+tags: ["medium","生活","domain-names","domain-authority","domain-registration"]
+description: "自己的 Domain Authority 自己養!"
image:
path: /assets/d9a95d4224ea/1*Yoz3gwb9HPe2d-ja6Y8W-Q.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
自己的 Domain Authority 自己養!
+
![](/assets/d9a95d4224ea/1*Yoz3gwb9HPe2d-ja6Y8W-Q.png)
### TL;DR \[2022/07/11\] 此功能又被關閉了
@@ -96,7 +97,7 @@ Medium 官方部落格於 2021/02/17 發布最新消息,Medium 又能重新讓
姓李的好處?
-> _題外話,我的拼法 zhgchg\.li 這種網域方式又叫 [Domain Hack](https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8Dhack){:target="_blank"} ;更好的例子是 google => goo\.gl。_
+> _題外話,我的拼法 zhgchg\.li 這種網域方式又叫 [Domain Hack](https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8Dhack){:target="_blank"} ;更好的例子是 google => goo\.gl。_
@@ -175,7 +176,7 @@ Medium 官方部落格於 2021/02/17 發布最新消息,Medium 又能重新讓
會收到一封訂單明細信件。
#### 2\.設定網域 \(以 [Namecheap](https://namecheap.pxf.io/P0jdZQ){:target="_blank"} 為例\)
-登入帳號後,點選 **左上角帳號** \-> 「 **Dashboard** 」
+登入帳號後,點選 **左上角帳號** \-> 「 **Dashboard** 」
![](/assets/d9a95d4224ea/1*BHbXLRSqCjCZyf6ynHlvww.png)
@@ -295,9 +296,6 @@ Medium 官方部落格於 2021/02/17 發布最新消息,Medium 又能重新讓
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-02-24-5ea3311119d8.md b/_posts/zmediumtomarkdown/2021-02-24-5ea3311119d8.md
index 173793541..fa5bb4b20 100644
--- a/_posts/zmediumtomarkdown/2021-02-24-5ea3311119d8.md
+++ b/_posts/zmediumtomarkdown/2021-02-24-5ea3311119d8.md
@@ -1,11 +1,11 @@
---
-title: Bye Bye 2020 經營 Medium 第二年回顧
-author: ZhgChgLi
+title: "Bye Bye 2020 經營 Medium 第二年回顧"
+author: "ZhgChgLi"
date: 2021-02-24T12:59:41.547+0000
-last_modified_at: 2021-02-25T13:57:25.194+0000
-categories: ZRealm Life.
-tags: [生活,medium,blog,ios,taiwan]
-description: 遲到遲到再遲到的 2020 回顧
+last_modified_at: 2023-08-05T16:43:39.956+0000
+categories: "ZRealm Life."
+tags: ["生活","medium","blog","ios","taiwan"]
+description: "遲到遲到再遲到的 2020 回顧"
image:
path: /assets/5ea3311119d8/1*QUUs5mDHixGd6jts8A2W6Q.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
遲到遲到再遲到的 2020 回顧
+
![[圖片取自 2020 年擔任 iOS Developer 的服務單位 — 街聲 — 簡單生活節官方海報](https://simplelife.streetvoice.com/2020/){:target="_blank"}](/assets/5ea3311119d8/1*QUUs5mDHixGd6jts8A2W6Q.png)
[圖片取自 2020 年擔任 iOS Developer 的服務單位 — 街聲 — 簡單生活節官方海報](https://simplelife.streetvoice.com/2020/){:target="_blank"}
@@ -56,7 +57,7 @@ render_with_liquid: false
- **再推一次 [Code Medium](https://chrome.google.com/webstore/detail/code-medium/dganoageikmadjocbmklfgaejpkdigbe){:target="_blank"}** 這個 ,可以直接在 Medium 之中使用 Gist 貼上漂亮的程式碼!
-安裝好之後,在 Medium 上點「\+」然後選最後一個「<>」
+安裝好之後,在 Medium 上點「\+」然後選最後一個「<>」
![](/assets/5ea3311119d8/1*dhLr-LydWl6vuvcA9P9UNw.png)
@@ -165,9 +166,6 @@ render_with_liquid: false
ZhgChgLi, 2021/02/24\.
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-03-14-99a6cef90190.md b/_posts/zmediumtomarkdown/2021-03-14-99a6cef90190.md
index 2452da184..32a104c7d 100644
--- a/_posts/zmediumtomarkdown/2021-03-14-99a6cef90190.md
+++ b/_posts/zmediumtomarkdown/2021-03-14-99a6cef90190.md
@@ -1,11 +1,11 @@
---
-title: 找回密碼之簡訊驗證碼強度安全問題
-author: ZhgChgLi
+title: "找回密碼之簡訊驗證碼強度安全問題"
+author: "ZhgChgLi"
date: 2021-03-14T15:57:38.256+0000
-last_modified_at: 2021-03-14T15:57:38.256+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,hacker,web-security,password-security,security-token]
-description: 使用 Python 展示暴力破解的嚴重性
+last_modified_at: 2023-08-05T16:43:11.254+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","hacker","web-security","password-security","security-token"]
+description: "使用 Python 展示暴力破解的嚴重性"
image:
path: /assets/99a6cef90190/1*xtbLIfJ6KELkGYeVCnzSFg.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
使用 Python 展示暴力破解的嚴重性
+
![Photo by [Matt Artz](https://unsplash.com/@mattartz?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/99a6cef90190/1*xtbLIfJ6KELkGYeVCnzSFg.jpeg)
Photo by [Matt Artz](https://unsplash.com/@mattartz?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -69,7 +70,7 @@ APP 端因流程設計及方便使用者,多半會簡化重設密碼流程、
![](/assets/99a6cef90190/1*22uVkKdpDXnwEygDa9lwyA.png)
-如果是前後端分離的網站服務也能使用 Chrome \-> 檢查 \-> Network \-> 查看在送出驗證碼後發了什麼請求。
+如果是前後端分離的網站服務也能使用 Chrome \-> 檢查 \-> Network \-> 查看在送出驗證碼後發了什麼請求。
![](/assets/99a6cef90190/1*Skm69eJiZKeK4_QUU0wIoQ.png)
@@ -165,9 +166,6 @@ main()
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-03-23-9659db1357e4.md b/_posts/zmediumtomarkdown/2021-03-23-9659db1357e4.md
index 495cf990a..a90b7c9de 100644
--- a/_posts/zmediumtomarkdown/2021-03-23-9659db1357e4.md
+++ b/_posts/zmediumtomarkdown/2021-03-23-9659db1357e4.md
@@ -1,11 +1,11 @@
---
-title: 使用 Firebase Firestore + Functions 快速搭建可供測試的 API 服務
-author: ZhgChgLi
+title: "使用 Firebase Firestore + Functions 快速搭建可供測試的 API 服務"
+author: "ZhgChgLi"
date: 2021-03-23T17:09:34.747+0000
-last_modified_at: 2021-03-24T10:38:09.022+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,firebase,google-cloud-platform,notifications,ios]
-description: 當推播統計遇上 Firebase Firestore + Functions
+last_modified_at: 2023-08-05T16:42:39.426+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","firebase","google-cloud-platform","notifications","ios"]
+description: "當推播統計遇上 Firebase Firestore + Functions"
image:
path: /assets/9659db1357e4/1*RVPRxqz2VUuY7NGXSXzmtw.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
當推播統計遇上 Firebase Firestore \+ Functions
+
![Photo by [Carlos Muza](https://unsplash.com/@kmuza?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/9659db1357e4/1*RVPRxqz2VUuY7NGXSXzmtw.jpeg)
Photo by [Carlos Muza](https://unsplash.com/@kmuza?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -101,7 +102,7 @@ APP 端的功其實不大,iOS/Android 都只要實作類似的功能(但 And
到 NVM Github 專案複製安裝 shell script:
-[![](https://opengraph.githubassets.com/850083d8733bdf2045cc56bc67831304a1b80c08a52e708bff4cc9134e38e0e7/nvm-sh/nvm)](https://github.com/nvm-sh/nvm#installing-and-updating){:target="_blank"}
+[![](https://opengraph.githubassets.com/cce64438216d6cc47ff4557db32b6696f59171dd17b70717ec7162d447b6aa2b/nvm-sh/nvm)](https://github.com/nvm-sh/nvm#installing-and-updating){:target="_blank"}
```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
@@ -221,7 +222,7 @@ firebase deploy
可能需要稍等一下, `Deploy complete!` 後你的第一個 Request & Response 網頁就完成了!
-這時候可以回到 Firebase \-> Functions 頁面:
+這時候可以回到 Firebase \-> Functions 頁面:
![](/assets/9659db1357e4/1*SY4iJZL6gDEZ5AEcepIpMA.png)
@@ -252,7 +253,7 @@ functions.logger.log("log:", value);
進行 Log 紀錄。
-並可在 Firebase \-> Functions \-> 紀錄中查看 log 結果:
+並可在 Firebase \-> Functions \-> 紀錄中查看 log 結果:
![](/assets/9659db1357e4/1*Wi-4MbPh2tVJ_utdhzN4_A.png)
@@ -303,7 +304,7 @@ exports.post= functions.https.onRequest(app); // 這邊的 POST 指的是 /post
![](/assets/9659db1357e4/1*yVAjhlr6wLdONeG7nY0VEw.png)
-Post Man 打成功後可以再到 Firebase \-> Firestore 檢查一下資料是否有正確寫入:
+Post Man 打成功後可以再到 Firebase \-> Firestore 檢查一下資料是否有正確寫入:
![](/assets/9659db1357e4/1*xYVrRdFro3bQVHx05JUaTw.png)
@@ -553,7 +554,7 @@ siege -c 100 -r 1 -H 'Content-Type: application/json' 'https://us-central1-proje
`successful_transactions: 100` 表示 100 次都執行成功。
-**可以回 Firebase \-> Firestore 查看結果是否有 Loss Data:**
+**可以回 Firebase \-> Firestore 查看結果是否有 Loss Data:**
![](/assets/9659db1357e4/1*wd5z743Zp9xtjKhhcMaVOg.png)
@@ -831,12 +832,10 @@ Functions 還可以串 Authentication\(身份驗證\)、Storage\(檔案上傳\)
### 延伸閱讀
- [使用 Python\+Google Cloud Platform\+Line Bot 自動執行例行瑣事](../70a1409b149a/)
- [i **OS ≥ 10 Notification Service Extension 應用 \(Swift\)**](../cb6eba52a342/)
+- [運用 Google Apps Script 轉發 Gmail 信件到 Slack](../d414bdbdb8c9/)
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-04-21-cb0c68c33994.md b/_posts/zmediumtomarkdown/2021-04-21-cb0c68c33994.md
index e8faa9a59..07a3186c5 100644
--- a/_posts/zmediumtomarkdown/2021-04-21-cb0c68c33994.md
+++ b/_posts/zmediumtomarkdown/2021-04-21-cb0c68c33994.md
@@ -1,11 +1,11 @@
---
-title: AppStore APP’s Reviews Bot 那些事
-author: ZhgChgLi
+title: "AppStore APP’s Reviews Bot 那些事"
+author: "ZhgChgLi"
date: 2021-04-21T15:16:31.071+0000
-last_modified_at: 2022-08-10T08:11:05.791+0000
-categories: ZRealm Dev.
-tags: [slackbot,ios-app-development,ruby,fastlane,automator]
-description: 動手打造 APP 評價追蹤通知 Slack 機器人
+last_modified_at: 2023-08-05T16:41:49.632+0000
+categories: "ZRealm Dev."
+tags: ["slackbot","ios-app-development","ruby","fastlane","automator"]
+description: "動手打造 APP 評價追蹤通知 Slack 機器人"
image:
path: /assets/cb0c68c33994/1*BMCG3cu21W5MbODBbhI-sA.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
使用 Ruby\+Fastlane\-SpaceShip 動手打造 APP 評價追蹤通知 Slack 機器人
+
![Photo by [Austin Distel](https://unsplash.com/@austindistel?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/cb0c68c33994/1*BMCG3cu21W5MbODBbhI-sA.jpeg)
Photo by [Austin Distel](https://unsplash.com/@austindistel?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -188,7 +189,7 @@ index = 分頁 offset,一次最多顯示 100 筆。
}
```
-另外經過測試後發現,只需要在帶上 `cookie: myacinfo=` 即可偽造請求得到資料:
+另外經過測試後發現,只需要在帶上 `cookie: myacinfo=<Token>` 即可偽造請求得到資料:
![](/assets/cb0c68c33994/1*b_vINNRMrAIQrkuouN7X1Q.png)
@@ -531,9 +532,6 @@ end
經過以上心路歷程,更瞭解的 Slack Bot 的運作方式;還有 iOS App Store 是如何爬取評價內容的,另外也摸了下 ruby!寫起來真不錯!
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-05-05-33f6aabb744f.md b/_posts/zmediumtomarkdown/2021-05-05-33f6aabb744f.md
index db9a53d31..a7302a9ec 100644
--- a/_posts/zmediumtomarkdown/2021-05-05-33f6aabb744f.md
+++ b/_posts/zmediumtomarkdown/2021-05-05-33f6aabb744f.md
@@ -1,11 +1,11 @@
---
-title: ZReviewsBot — Slack App Review 通知機器人
-author: ZhgChgLi
+title: "ZReviewsBot — Slack App Review 通知機器人"
+author: "ZhgChgLi"
date: 2021-05-05T13:51:19.238+0000
-last_modified_at: 2022-08-10T08:09:57.704+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,slack,slackbot,app-review,ruby]
-description:
+last_modified_at: 2023-08-05T16:41:07.455+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","slack","slackbot","app-review","ruby"]
+description: ""
image:
path: /assets/33f6aabb744f/1*FEz6o4JJ-ZyyC7JPqFcKJA.png
render_with_liquid: false
@@ -14,6 +14,7 @@ render_with_liquid: false
### ZReviewsBot — Slack App Review 通知機器人
免費開源的 iOS & Android APP 最新評價追蹤 Slack Bot
+
### TL;DR \[2022/08/10\] Update:
現已改用全新的 [App Store Connect API](../f1365e51902c/) 重新設計 App Reviews Bot,並更名重新推出「 [ZReviewTender — 免費開源的 App Reviews 監控機器人](../e36e48bb9265/) 」。
@@ -49,9 +50,6 @@ render_with_liquid: false
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-06-13-d61062833c1a.md b/_posts/zmediumtomarkdown/2021-06-13-d61062833c1a.md
index b07085f0e..48b898f27 100644
--- a/_posts/zmediumtomarkdown/2021-06-13-d61062833c1a.md
+++ b/_posts/zmediumtomarkdown/2021-06-13-d61062833c1a.md
@@ -1,11 +1,11 @@
---
-title: Slack 打造全自動 WFH 員工健康狀況回報系統
-author: ZhgChgLi
+title: "Slack 打造全自動 WFH 員工健康狀況回報系統"
+author: "ZhgChgLi"
date: 2021-06-13T16:58:21.063+0000
-last_modified_at: 2021-11-21T14:53:23.504+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,automation,google-sheets,app-script,slack]
-description: 玩轉 Slack Workflow 搭配 Google Sheet with App Script 增加工作效率
+last_modified_at: 2023-08-05T16:40:22.147+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","automation","google-sheets","app-script","slack"]
+description: "玩轉 Slack Workflow 搭配 Google Sheet with App Script 增加工作效率"
image:
path: /assets/d61062833c1a/1*KTyHirY-qlH1kNTT4a_XjQ.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
玩轉 Slack Workflow 搭配 Google Sheet with App Script 增加工作效率
+
![Photo by [Stephen Phillips — Hostreviews\.co\.uk](https://unsplash.com/@hostreviews?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/d61062833c1a/1*KTyHirY-qlH1kNTT4a_XjQ.jpeg)
Photo by [Stephen Phillips — Hostreviews\.co\.uk](https://unsplash.com/@hostreviews?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -91,7 +92,7 @@ Photo by [Stephen Phillips — Hostreviews\.co\.uk](https://unsplash.com/@hostre
4. 讀取未填寫名單 Sheet 組合出訊息並發送到指定 Slack Channel
- 串接 Slack APP API 可自動讀取指定 Channel 匯入員工名單
-- 訊息內容使用 Slack UID Tag `<@UID>` 就能標記未填寫的成員。
+- 訊息內容使用 Slack UID Tag `<@UID>` 就能標記未填寫的成員。
#### 身份識別
@@ -112,7 +113,7 @@ Photo by [Stephen Phillips — Hostreviews\.co\.uk](https://unsplash.com/@hostre
完成結果 Google Sheet:
-[![](https://lh4.googleusercontent.com/_mAkwuNrDm1G7iO7nVARZ5TQgN04IOCPPSzhf2b3TQvZbL5QDxpK5D2vIYTLBABq7WoNi12v6QV5eg=w1200-h630-p)](https://docs.google.com/spreadsheets/d/1PTk7G7r4P1sGk46sYjomUbfRO9ouPRF0wbmc84ZXA4c/edit?resourcekey#gid=953539493){:target="_blank"}
+[![](https://lh3.googleusercontent.com/docs/AOD9vFoOg0ktuIpHV-lg_Btl7qkkMT0TuLpE5SkaXA9T00yVZin5m78m4uVTzElkj1i7c2sxbOJh2Znt9YpNzf8sxRmL76sZ5CIOyjjHpbJx384=w1200-h630-p)](https://docs.google.com/spreadsheets/d/1PTk7G7r4P1sGk46sYjomUbfRO9ouPRF0wbmc84ZXA4c/edit?resourcekey#gid=953539493){:target="_blank"}
#### 建立健康回報 Google Form 表單 & 連結回覆到 Google Sheet
@@ -301,7 +302,7 @@ Shortcut 建立完成!開始建立 workflow 步驟,點擊「Add Step」加
在點擊插入的變數,選擇「Email」即可自動帶入填寫人的 Email。
-- Mention \(default\):tag 該 User,Raw data 是 `<@User ID>`
+- Mention \(default\):tag 該 User,Raw data 是 `<@User ID>`
- Name:User 名稱
- Email:User Email
@@ -387,7 +388,7 @@ Slack workflow 沒有 current timestamp 的 global variable 可用,至少目
![](/assets/d61062833c1a/1*H8pb9TKvazhqiKKSCKcwCQ.png)
-「Update these columns」「Column name」選擇「Value」、「Value」點選「Insert variable」\->「Person who submitted」\->「選擇 Email」。
+「Update these columns」「Column name」選擇「Value」、「Value」點選「Insert variable」\->「Person who submitted」\->「選擇 Email」。
點「Save」完成!現在已經完成觸發 Sheet 中的 timestamp 更新了,再來是讀取出來用。
@@ -409,9 +410,9 @@ Search 部分同「Update a spreadsheet row」,按「Save」。
Save 完回到步驟列表頁,我們可以把滑鼠移到步驟上用拖曳更改順序。
-將順序改「Update a spreadsheet row」\->「Select a spreadsheet」\->「Add a spreadsheet row」。
+將順序改「Update a spreadsheet row」\->「Select a spreadsheet」\->「Add a spreadsheet row」。
-意即:Update 觸發 timestamp 更新 \-> 讀取 Timestamp \-> 在新增 Row 時拿來用。
+意即:Update 觸發 timestamp 更新 \-> 讀取 Timestamp \-> 在新增 Row 時拿來用。
在「Add a spreadsheet row」點「Edit」編輯:
@@ -480,7 +481,7 @@ Slack workflow form 的設定大概到此結束,其他玩法可以自由搭配
![](/assets/d61062833c1a/1*04KBQF7e4lCjQm5XeHgVrA.png)
-首先在 Google Sheet 上方工具欄選擇「Tools」\->「Script editor」
+首先在 Google Sheet 上方工具欄選擇「Tools」\->「Script editor」
![](/assets/d61062833c1a/1*wlg8D_1DHONj__M1dSBCxw.png)
@@ -536,7 +537,7 @@ function formatData() {
![](/assets/d61062833c1a/1*XvugOM6drupik0wejbBnnA.png)
1. 首先在建立一個新的 Sheet,取名「未填寫名單」
-2. 上方工具列選擇「Insert」\->「Drawing」
+2. 上方工具列選擇「Insert」\->「Drawing」
@@ -571,7 +572,7 @@ function formatData() {
在身份驗證的過程中會出現「Google hasn’t verified this app」這是正常的,因為我們寫的 App Script 沒有經過 Google 驗證,不過沒關係這是寫給自己用的。
-可點選左下角「Advanced」\->「Go to Health Report \(Responses\) \(unsafe\)」
+可點選左下角「Advanced」\->「Go to Health Report \(Responses\) \(unsafe\)」
![](/assets/d61062833c1a/1*QUkmTD1WlEzw7cqW97ll6Q.png)
@@ -667,9 +668,9 @@ function generateUnfilledList() {
![](/assets/d61062833c1a/1*AgGLiLsyvenK-LRWI9rlKg.png)
-1. Slack 左下角「Apps」\->「Add apps」
+1. Slack 左下角「Apps」\->「Add apps」
2. 右邊搜尋匡搜尋「incoming」
-3. 點擊「Incoming WebHooks」\->「Add」
+3. 點擊「Incoming WebHooks」\->「Add」
@@ -928,7 +929,7 @@ function loadEmployeeList() {
完成檔如下,可直接從以下 Google Sheet 建立副本修改後使用:
-[![](https://lh4.googleusercontent.com/_mAkwuNrDm1G7iO7nVARZ5TQgN04IOCPPSzhf2b3TQvZbL5QDxpK5D2vIYTLBABq7WoNi12v6QV5eg=w1200-h630-p)](https://docs.google.com/spreadsheets/d/1PTk7G7r4P1sGk46sYjomUbfRO9ouPRF0wbmc84ZXA4c/edit?resourcekey#gid=922128927){:target="_blank"}
+[![](https://lh3.googleusercontent.com/docs/AOD9vFoOg0ktuIpHV-lg_Btl7qkkMT0TuLpE5SkaXA9T00yVZin5m78m4uVTzElkj1i7c2sxbOJh2Znt9YpNzf8sxRmL76sZ5CIOyjjHpbJx384=w1200-h630-p)](https://docs.google.com/spreadsheets/d/1PTk7G7r4P1sGk46sYjomUbfRO9ouPRF0wbmc84ZXA4c/edit?resourcekey#gid=922128927){:target="_blank"}
### 補充
- 如果想要用 Scheduled date & time 定時發送 form 訊息,要注意這情況下的 form 只能被填一次,所以不適合在這邊使用…(至少目前版本還是這樣),所以 Scheduled 填寫提醒訊息依然只能用純文字+Google Form 連結。
@@ -987,9 +988,6 @@ bitrise workflow:app_store|branch:develop|ENV[version]:4.32.0
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
有自動化相關優化需求也歡迎 [發案給我](https://www.zhgchg.li/contact){:target="_blank"} ,謝謝。
diff --git a/_posts/zmediumtomarkdown/2021-06-15-ba5773a7bfea.md b/_posts/zmediumtomarkdown/2021-06-15-ba5773a7bfea.md
index a84c8866d..890cf288b 100644
--- a/_posts/zmediumtomarkdown/2021-06-15-ba5773a7bfea.md
+++ b/_posts/zmediumtomarkdown/2021-06-15-ba5773a7bfea.md
@@ -1,11 +1,11 @@
---
-title: Visitor Pattern in iOS (Swift)
-author: ZhgChgLi
+title: "Visitor Pattern in iOS (Swift)"
+author: "ZhgChgLi"
date: 2021-06-15T15:58:36.329+0000
-last_modified_at: 2022-04-07T15:06:40.478+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,swift,design-patterns,visitor-pattern,double-dispatch]
-description: Design Pattern Visitor 在 iOS 開發的實際應用場景分析
+last_modified_at: 2023-08-05T16:39:33.511+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","swift","design-patterns","visitor-pattern","double-dispatch"]
+description: "Design Pattern Visitor 在 iOS 開發的實際應用場景分析"
image:
path: /assets/ba5773a7bfea/1*Q1BLU8QHVBLEMx6KlMSHWQ.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
Design Pattern Visitor 的實際應用場景分析
+
![Photo by [Daniel McCullough](https://unsplash.com/@d_mccullough?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/ba5773a7bfea/1*Q1BLU8QHVBLEMx6KlMSHWQ.jpeg)
Photo by [Daniel McCullough](https://unsplash.com/@d_mccullough?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -436,9 +437,6 @@ class SaveToCoreDataVisitor {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-07-25-1c9eafd4a190.md b/_posts/zmediumtomarkdown/2021-07-25-1c9eafd4a190.md
index fd3a2fb6e..2b5b55f48 100644
--- a/_posts/zmediumtomarkdown/2021-07-25-1c9eafd4a190.md
+++ b/_posts/zmediumtomarkdown/2021-07-25-1c9eafd4a190.md
@@ -1,11 +1,11 @@
---
-title: Leading Snowflakes 閱讀筆記
-author: ZhgChgLi
+title: "Leading Snowflakes 閱讀筆記"
+author: "ZhgChgLi"
date: 2021-07-25T07:44:20.287+0000
-last_modified_at: 2021-07-25T13:44:32.203+0000
-categories: 菜鳥學管理
-tags: [management,leadership,engineering,管理學,工程師]
-description: “Leading Snowflakes The Engineering Manager Handbook” — Oren Ellenbogen
+last_modified_at: 2023-08-05T16:39:08.522+0000
+categories: "菜鳥學管理"
+tags: ["management","leadership","engineering","管理學","工程師"]
+description: "“Leading Snowflakes The Engineering Manager Handbook” — Oren Ellenbogen"
image:
path: /assets/1c9eafd4a190/1*yJCwDuo9tMhDD_sSoCSNqA.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
“Leading Snowflakes The Engineering Manager Handbook” — Oren Ellenbogen
+
![](/assets/1c9eafd4a190/1*yJCwDuo9tMhDD_sSoCSNqA.png)
@@ -302,7 +303,7 @@ Delegate 的部分,我們可以提供一頁的 Paper 闡述我們的期待、
當產品還在草創初試市場狀態時,應該要以優化效率\(快速解決任務釋出\)為主,重複著以下流程:
-功能能提升 Retention \-> 釋出功能 \-> 學習 \-> 調整&重複。
+功能能提升 Retention \-> 釋出功能 \-> 學習 \-> 調整&重複。
評估功能到釋出每個階段可以優化的地方(花太多時間在設計?在討論?)
@@ -422,9 +423,6 @@ EX: 作者的團隊是做爬蟲的,他的團隊願景就是「To build the lar
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-08-07-118e924a1477.md b/_posts/zmediumtomarkdown/2021-08-07-118e924a1477.md
index 5b64575e5..9451d192f 100644
--- a/_posts/zmediumtomarkdown/2021-08-07-118e924a1477.md
+++ b/_posts/zmediumtomarkdown/2021-08-07-118e924a1477.md
@@ -1,11 +1,11 @@
---
-title: 生產力工具 拋棄 Chrome 投入 Sidekick 瀏覽器的懷抱
-author: ZhgChgLi
+title: "生產力工具 拋棄 Chrome 投入 Sidekick 瀏覽器的懷抱"
+author: "ZhgChgLi"
date: 2021-08-07T05:06:43.604+0000
-last_modified_at: 2022-12-02T08:17:01.562+0000
-categories: ZRealm Life.
-tags: [sidekick,chrome,chromium,browsers,生活]
-description: Sidekick 瀏覽器功能介紹&心得
+last_modified_at: 2023-08-05T16:38:31.854+0000
+categories: "ZRealm Life."
+tags: ["sidekick","chrome","chromium","browsers","生活"]
+description: "Sidekick 瀏覽器功能介紹&心得"
image:
path: /assets/118e924a1477/1*GfS7mQ8wGfu4aUWlhtz0Ag.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
Sidekick 瀏覽器功能介紹&使用心得
+
![](/assets/118e924a1477/1*-qG2uYUb_E9Sn3aSIkbqJQ.png)
@@ -337,9 +338,6 @@ Google Keep 儲存於雲端 Google 帳號,支援跨平台跨裝置的筆記同
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-08-07-d414bdbdb8c9.md b/_posts/zmediumtomarkdown/2021-08-07-d414bdbdb8c9.md
index 979919d79..df35503ec 100644
--- a/_posts/zmediumtomarkdown/2021-08-07-d414bdbdb8c9.md
+++ b/_posts/zmediumtomarkdown/2021-08-07-d414bdbdb8c9.md
@@ -1,11 +1,11 @@
---
-title: 運用 Google Apps Script 轉發 Gmail 信件到 Slack
-author: ZhgChgLi
+title: "運用 Google Apps Script 轉發 Gmail 信件到 Slack"
+author: "ZhgChgLi"
date: 2021-08-07T12:19:49.920+0000
-last_modified_at: 2021-11-21T14:53:44.176+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,google-apps-script,cicd,slack,workflow-automation]
-description: 使用 Gmail Filter + Google Apps Script 在收到信件時自動將客製化內容轉寄至 Slack Channel
+last_modified_at: 2023-08-05T16:37:53.608+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","google-apps-script","cicd","slack","workflow-automation"]
+description: "使用 Gmail Filter + Google Apps Script 在收到信件時自動將客製化內容轉寄至 Slack Channel"
image:
path: /assets/d414bdbdb8c9/1*U6CDgIAMt2l2vDoFqhwv6A.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
使用 Gmail Filter \+ Google Apps Script 在收到信件時自動將客製化內容轉寄至 Slack Channel
+
![Photo by [Lukas Blazek](https://unsplash.com/@goumbik?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/d414bdbdb8c9/1*U6CDgIAMt2l2vDoFqhwv6A.jpeg)
Photo by [Lukas Blazek](https://unsplash.com/@goumbik?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -151,9 +152,9 @@ Photo by [Lukas Blazek](https://unsplash.com/@goumbik?utm_source=unsplash&utm_me
![](/assets/d414bdbdb8c9/1*AgGLiLsyvenK-LRWI9rlKg.png)
-1. Slack 左下角「Apps」\->「Add apps」
+1. Slack 左下角「Apps」\->「Add apps」
2. 右邊搜尋匡搜尋「incoming」
-3. 點擊「Incoming WebHooks」\->「Add」
+3. 點擊「Incoming WebHooks」\->「Add」
@@ -306,7 +307,7 @@ build = 2
在身份驗證的過程中會出現「Google hasn’t verified this app」這是正常的,因為我們寫的 App Script 沒有經過 Google 驗證,不過沒關係這是寫給自己用的。
-可點選左下角「Advanced」\->「Go to ForwardEmailsToSlack \(unsafe\)」
+可點選左下角「Advanced」\->「Go to ForwardEmailsToSlack \(unsafe\)」
![](/assets/d414bdbdb8c9/1*QUkmTD1WlEzw7cqW97ll6Q.png)
@@ -372,9 +373,6 @@ build = 2
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-09-09-11f6c8568154.md b/_posts/zmediumtomarkdown/2021-09-09-11f6c8568154.md
index 93d802287..96d1b27af 100644
--- a/_posts/zmediumtomarkdown/2021-09-09-11f6c8568154.md
+++ b/_posts/zmediumtomarkdown/2021-09-09-11f6c8568154.md
@@ -1,11 +1,11 @@
---
-title: 2021 Pinkoi Tech Career Talk — 高效率工程團隊大解密
-author: ZhgChgLi
+title: "2021 Pinkoi Tech Career Talk — 高效率工程團隊大解密"
+author: "ZhgChgLi"
date: 2021-09-09T12:13:53.982+0000
-last_modified_at: 2022-08-10T14:56:49.675+0000
-categories: Pinkoi Engineering
-tags: [pinkoi,automation,ios-app-development,engineering-mangement,workflow]
-description: Pinkoi 高效率工程團隊大解密 Tech Talk 分享
+last_modified_at: 2023-08-05T16:37:22.787+0000
+categories: "Pinkoi Engineering"
+tags: ["pinkoi","automation","ios-app-development","engineering-mangement","workflow"]
+description: "Pinkoi 高效率工程團隊大解密 Tech Talk 分享"
image:
path: /assets/11f6c8568154/1*WmP6qgq40go7IMDw1ZcCPg.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
Pinkoi 高效率工程團隊大解密 Tech Talk 分享
+
![](/assets/11f6c8568154/1*WmP6qgq40go7IMDw1ZcCPg.png)
### 高效率工程團隊大解密
@@ -426,20 +427,6 @@ Recap 釋出測試版自動化的成效,最有感的是把整個步驟都搬
實際時程\(QA 多久\)、發版週期\(每週、每兩週、每個月\)依照各公司狀況可自行調整, **核心就是確定什麼固定什麼時間點做什麼事** 。
-■■■■■■■■■■■■■■
-> **[Gergely Orosz](https://twitter.com/GergelyOrosz){:target="_blank"} @ Twitter Says:**
-
-> > Mobile engineers, how often do you release your app? (How often do you have build cuts that then go to the app store)?
-
-Gathering this data to be included in Mobile Apps at Scale.
-
-At Uber, we had a weekly build cut that kicked off the release process (dogfooding --> app store)
-
-> **Tweeted at [2021-03-01 15:57:38](https://twitter.com/gergelyorosz/status/1366417354821947398){:target="_blank"}.**
-
-■■■■■■■■■■■■■■
-
-
這是國外推友發的版更週期調查,大多是 2 週一次。
@@ -477,7 +464,7 @@ Release Train 顧名思義就像火車站一樣,每個版本都是一班列車
使用 Google Calendar 串接還有個好處,如果遇到突發狀況需要延後、提早,直接上去更改日期即可。
-> _Google Apps Script 若要直接在 Google Calendar 事件時間到時自動執行,目前只能自己 on 服務來做,如果要快速解決可以使用 IFTTT 做為 Google Calendar <\-> Bitrise/Google Apps Script 的橋樑,做法可 [參考此篇文章](https://gist.github.com/tanaikech/fbbfaa8f2a8a770424974aa16b9b6f3b){:target="_blank"} 。_
+> _Google Apps Script 若要直接在 Google Calendar 事件時間到時自動執行,目前只能自己 on 服務來做,如果要快速解決可以使用 IFTTT 做為 Google Calendar <\-> Bitrise/Google Apps Script 的橋樑,做法可 [參考此篇文章](https://gist.github.com/tanaikech/fbbfaa8f2a8a770424974aa16b9b6f3b){:target="_blank"} 。_
@@ -628,10 +615,7 @@ Recap 高效率工作團隊的內幕,我們主要做了什麼事。
**以上是 Pinkoi 高效率工程團隊大解密的分享,謝謝大家。**
-立即加入 Pinkoi >>> [https://www\.pinkoi\.com/about/careers](https://www.pinkoi.com/about/careers){:target="_blank"}
-
-
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
+立即加入 Pinkoi >>> [https://www\.pinkoi\.com/about/careers](https://www.pinkoi.com/about/careers){:target="_blank"}
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-10-19-e77b80cc6f89.md b/_posts/zmediumtomarkdown/2021-10-19-e77b80cc6f89.md
index 3e75de1e2..174e30a8c 100644
--- a/_posts/zmediumtomarkdown/2021-10-19-e77b80cc6f89.md
+++ b/_posts/zmediumtomarkdown/2021-10-19-e77b80cc6f89.md
@@ -1,11 +1,11 @@
---
-title: Crashlytics + Big Query 打造更即時便利的 Crash 追蹤工具
-author: ZhgChgLi
+title: "Crashlytics + Big Query 打造更即時便利的 Crash 追蹤工具"
+author: "ZhgChgLi"
date: 2021-10-19T14:33:30.948+0000
-last_modified_at: 2021-11-21T14:51:17.567+0000
-categories: ZRealm Dev.
-tags: [ios-app-development,crashlytics,firebase,bigquery,slack]
-description: 串接 Crashlytics 和 Big Query 自動轉發閃退記錄到 Slack Channel
+last_modified_at: 2023-08-05T16:36:47.518+0000
+categories: "ZRealm Dev."
+tags: ["ios-app-development","crashlytics","firebase","bigquery","slack"]
+description: "串接 Crashlytics 和 Big Query 自動轉發閃退記錄到 Slack Channel"
image:
path: /assets/e77b80cc6f89/1*-luP3wtJr1XJ9Vq3M0sQLA.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
串接 Crashlytics 和 Big Query 自動轉發閃退記錄到 Slack Channel
+
![](/assets/e77b80cc6f89/1*-luP3wtJr1XJ9Vq3M0sQLA.png)
### 成果
@@ -48,16 +49,6 @@ Pinkoi iOS Team 實拍圖
-■■■■■■■■■■■■■■
-> **[zonble 🍺 ゾンビル 4H111](https://twitter.com/zonble){:target="_blank"} @ Twitter Says:**
-
-> > 聽說從前有個美食外送平台用 Firebase 來做整套後段的建置,然後,就聽說這個平台付不出給廠商的貨款了。
-
-> **Tweeted at [2019-10-06 08:54:06](https://twitter.com/zonble/status/1180768179674472448){:target="_blank"}.**
-
-■■■■■■■■■■■■■■
-
-
**Crashlytics 缺點也很多:**
- Crashlytics 不提供 API 查詢閃退資料
- Crashlytics 僅會儲存近 90 天閃退紀錄
@@ -109,13 +100,13 @@ Crashlytics to Big Query 的設定細節可參考 [**官方文件**](https://fir
![](/assets/e77b80cc6f89/1*dvjnubHWwYF7Bhz8SiuuLA.jpeg)
-首先到 Firebase 專案 \-> Crashlytics \-> 列表右上方的「•••」\-> 點擊前往「BigQuery dataset」。
+首先到 Firebase 專案 \-> Crashlytics \-> 列表右上方的「•••」\-> 點擊前往「BigQuery dataset」。
![](/assets/e77b80cc6f89/1*TEJY6kH9guplY1kZvOfxzw.jpeg)
-前往 GCP \-> Big Query 後可在左方「Exploer」中選擇「firebase\_crashlytics」\->選擇你的 Table 名稱 \->「Detail」 \-> 右邊可查看 Table 資訊,包含最新修改時間、已使用容量、儲存期限…等等。
+前往 GCP \-> Big Query 後可在左方「Exploer」中選擇「firebase\_crashlytics」\->選擇你的 Table 名稱 \->「Detail」 \-> 右邊可查看 Table 資訊,包含最新修改時間、已使用容量、儲存期限…等等。
> _確認已有匯入的資料可查詢。_
@@ -267,7 +258,7 @@ LIMIT
比對 Crashlytics 的 Top 10 閃退問題結果,符合✅。
### 使用 Google Apps Script 定期查詢&轉發到 Slack
-前往 [Google Apps Script 首頁](https://script.google.com/home){:target="_blank"} \-> 登入與 Big Query 同個帳戶 \-> 點左上角「新專案」,開啟新專案後可點左上方重新命名專案。
+前往 [Google Apps Script 首頁](https://script.google.com/home){:target="_blank"} \-> 登入與 Big Query 同個帳戶 \-> 點左上角「新專案」,開啟新專案後可點左上方重新命名專案。
#### 首先我們先完成串接 Big Query 取得查詢資料:
參考 [官方文件](https://developers.google.com/apps-script/advanced/bigquery){:target="_blank"} 範例,將上面的 Query SQL 帶入。
@@ -541,9 +532,6 @@ function sendTop10CrashToSlack() {
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-10-24-9a05f632eba0.md b/_posts/zmediumtomarkdown/2021-10-24-9a05f632eba0.md
index 89ae6c1e7..b2da6792c 100644
--- a/_posts/zmediumtomarkdown/2021-10-24-9a05f632eba0.md
+++ b/_posts/zmediumtomarkdown/2021-10-24-9a05f632eba0.md
@@ -2,7 +2,7 @@
title: "iOS 隱私與便利的前世今生"
author: "ZhgChgLi"
date: 2021-10-24T01:15:55.402+0000
-last_modified_at: 2023-08-01T07:17:08.253+0000
+last_modified_at: 2023-08-05T16:36:16.299+0000
categories: "ZRealm Dev."
tags: ["ios-app-development","privacy","private-relay","apple-privacy","mopcon"]
description: "Apple 隱私原則及 iOS 歷年對隱私保護的功能調整"
@@ -16,6 +16,7 @@ render_with_liquid: false
Apple 隱私原則及 iOS 歷年對隱私保護的功能調整
+
![Theme by [slidego](https://slidesgo.com/theme/cyber-security-business-plan#search-technology&position-3&results-12){:target="_blank"}](/assets/9a05f632eba0/1*-XkH2H6A9f7U1ex6eCo5Lg.png)
Theme by [slidego](https://slidesgo.com/theme/cyber-security-business-plan#search-technology&position-3&results-12){:target="_blank"}
@@ -710,9 +711,6 @@ Safari 上相對於阻擋 Intelligent Tracking Prevention 的功能就是 Privat
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2021-11-21-793cb8f89b72.md b/_posts/zmediumtomarkdown/2021-11-21-793cb8f89b72.md
index 707d2dca2..aede903af 100644
--- a/_posts/zmediumtomarkdown/2021-11-21-793cb8f89b72.md
+++ b/_posts/zmediumtomarkdown/2021-11-21-793cb8f89b72.md
@@ -1,11 +1,11 @@
---
-title: Crashlytics + Google Analytics 自動查詢 App Crash-Free Users Rate
-author: ZhgChgLi
+title: "Crashlytics + Google Analytics 自動查詢 App Crash-Free Users Rate"
+author: "ZhgChgLi"
date: 2021-11-21T14:47:10.076+0000
-last_modified_at: 2021-11-21T14:47:10.076+0000
-categories: ZRealm Dev.
-tags: [crashlytics,ios-app-development,google-analytics,google-apps-script,google-sheets]
-description: 使用 Google Apps Script 透過 Google Analytics 查詢 Crashlytics 自動填入到 Google Sheet
+last_modified_at: 2023-08-05T16:35:36.957+0000
+categories: "ZRealm Dev."
+tags: ["crashlytics","ios-app-development","google-analytics","google-apps-script","google-sheets"]
+description: "使用 Google Apps Script 透過 Google Analytics 查詢 Crashlytics 自動填入到 Google Sheet"
image:
path: /assets/793cb8f89b72/1*yPSS8J7o-jowQ6NRYArzjQ.png
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
使用 Google Apps Script 透過 Google Analytics 查詢 Crashlytics 自動填入到 Google Sheet
+
![](/assets/793cb8f89b72/1*yPSS8J7o-jowQ6NRYArzjQ.png)
@@ -45,14 +46,14 @@ render_with_liquid: false
知道路通之後,就可以開始動手實作了!
-#### 串接 Firebase \-> Google Analytics
+#### 串接 Firebase \-> Google Analytics
可參考 [官方說明](https://support.google.com/analytics/answer/9289234?hl=zh-Hant){:target="_blank"} 步驟設定,本篇省略。
#### GA4 Query Explorer Tool
開始寫 Code 之前,我們可以先用官方提供的 Web GUI Tool 來快速建造查詢條件、取得查詢結果;實驗完結果是我們想要的之後,再開始寫 Code。前
-[前往 >>> GA4 Query Explorer](https://ga-dev-tools.web.app/ga4/query-explorer/){:target="_blank"}
+[前往 >>> GA4 Query Explorer](https://ga-dev-tools.web.app/ga4/query-explorer/){:target="_blank"}
![](/assets/793cb8f89b72/1*qsCMVfWIAzWdZ78LBj8n2A.jpeg)
@@ -116,7 +117,7 @@ render_with_liquid: false
![](/assets/793cb8f89b72/1*pnJ7gmjDefB9OLl0NgceLA.png)
-可以點擊 Google Sheet 上方的 Extensions \-> Apps Script 建立 Google Apps Script 或是 [點此前網 Google Apps Script](https://script.google.com/home/start){:target="_blank"} \-> 左上方 新增專案即可。
+可以點擊 Google Sheet 上方的 Extensions \-> Apps Script 建立 Google Apps Script 或是 [點此前網 Google Apps Script](https://script.google.com/home/start){:target="_blank"} \-> 左上方 新增專案即可。
![](/assets/793cb8f89b72/1*81_RPPZgBDvW4XplOHGmVg.png)
@@ -289,7 +290,7 @@ function fetchCrashFreeUsersRate(platform = "iOS", startDate = "30daysAgo", endD
![](/assets/793cb8f89b72/1*MGO4FhC_8N8ul9dXZRYaMg.jpeg)
-選擇左方時鐘按鈕 \-> 右下方「\+ Add Trigger」。
+選擇左方時鐘按鈕 \-> 右下方「\+ Add Trigger」。
![](/assets/793cb8f89b72/1*EArxafXakAcfuPWcr1wtIg.png)
@@ -329,9 +330,6 @@ function fetchCrashFreeUsersRate(platform = "iOS", startDate = "30daysAgo", endD
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2022-04-07-78507a8de6a5.md b/_posts/zmediumtomarkdown/2022-04-07-78507a8de6a5.md
index 499f49210..5dbfef564 100644
--- a/_posts/zmediumtomarkdown/2022-04-07-78507a8de6a5.md
+++ b/_posts/zmediumtomarkdown/2022-04-07-78507a8de6a5.md
@@ -1,11 +1,11 @@
---
-title: Design Patterns 的實戰應用紀錄
-author: ZhgChgLi
+title: "Design Patterns 的實戰應用紀錄"
+author: "ZhgChgLi"
date: 2022-04-07T14:49:17.715+0000
-last_modified_at: 2022-04-08T02:07:11.244+0000
-categories: Pinkoi Engineering
-tags: [ios-app-development,design-patterns,socketio,websocket,finite-state-machine]
-description: 封裝 Socket.IO Client Library 需求時遇到的問題場景及解決方法應用到的 Design Patterns
+last_modified_at: 2023-08-05T16:34:42.310+0000
+categories: "Pinkoi Engineering"
+tags: ["ios-app-development","design-patterns","socketio","websocket","finite-state-machine"]
+description: "封裝 Socket.IO Client Library 需求時遇到的問題場景及解決方法應用到的 Design Patterns"
image:
path: /assets/78507a8de6a5/1*mkG0YtCzyPQpU9MG0HI79w.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
封裝 Socket\.IO Client Library 需求時遇到的問題場景及解決方法應用到的 Design Patterns
+
![Photo by [Daniel McCullough](https://unsplash.com/@d_mccullough?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}](/assets/78507a8de6a5/1*mkG0YtCzyPQpU9MG0HI79w.jpeg)
Photo by [Daniel McCullough](https://unsplash.com/@d_mccullough?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}
@@ -437,10 +438,10 @@ Connection 有多個狀態,有序的狀態與狀態間切換、各狀態允許
![](/assets/78507a8de6a5/1*-Xk_TT6SMW5Jxd-c8iSCcw.jpeg)
-- Created:物件被建立,允許 \-> `Connected` 或直接進 `Disconnected`
-- Connected:已連上 Socket\.IO,允許 \-> `Disconnected`
-- Disconnected:已與 Socket\.IO 斷線,允許 \-> `Reconnectiong` 、 `Released`
-- Reconnectiong:正在嘗試重新連上 Socket\.IO,允許 \-> `Connected` 、 `Disconnected`
+- Created:物件被建立,允許 \-> `Connected` 或直接進 `Disconnected`
+- Connected:已連上 Socket\.IO,允許 \-> `Disconnected`
+- Disconnected:已與 Socket\.IO 斷線,允許 \-> `Reconnectiong` 、 `Released`
+- Reconnectiong:正在嘗試重新連上 Socket\.IO,允許 \-> `Connected` 、 `Disconnected`
- Released:物件已被標示為等待被記憶體回收,不允許任何操作及切換狀態
#### Why?
@@ -906,7 +907,7 @@ do {
- `Connection` 已無人使用且狀態為 `Disconnected` :將狀態改為 `Released` 並從 `ConnectionPool` 中移除
#### Why?
-- 三個操作有上下關係且互斥 \(disconnected \-> released or reconnecting\)
+- 三個操作有上下關係且互斥 \(disconnected \-> released or reconnecting\)
- 可彈性抽換、增加狀況操作
- 未封裝的話只能將三個判斷及操作直接寫在方法中 \(難以測試其中邏輯\)
- e\.g:
@@ -1235,9 +1236,6 @@ Platform Team 專案負責人、Pair programming、在 iOS 端使用 Swift 實
-[![Like Z Realm's work](https://button.like.co/images/og/likebutton.png "Like Z Realm's work")](https://button.like.co/in/like/zhgchgli){:target="_blank"}
-
-
有任何問題及指教歡迎 [與我聯絡](https://www.zhgchg.li/contact){:target="_blank"} 。
diff --git a/_posts/zmediumtomarkdown/2022-05-28-ddd88a84e177.md b/_posts/zmediumtomarkdown/2022-05-28-ddd88a84e177.md
index c6d71a63a..a6fa2eed5 100644
--- a/_posts/zmediumtomarkdown/2022-05-28-ddd88a84e177.md
+++ b/_posts/zmediumtomarkdown/2022-05-28-ddd88a84e177.md
@@ -1,11 +1,11 @@
---
-title: Converting Medium Posts to Markdown
-author: ZhgChgLi
+title: "Converting Medium Posts to Markdown"
+author: "ZhgChgLi"
date: 2022-05-28T07:04:35.424+0000
-last_modified_at: 2023-03-12T03:58:31.787+0000
-categories: ZRealm Dev.
-tags: [medium,markdown,backup,ruby,automation]
-description: 撰寫小工具將 Medium 心血文章備份下來 & 轉換成 Markdown 格式
+last_modified_at: 2023-08-05T16:34:05.471+0000
+categories: "ZRealm Dev."
+tags: ["medium","markdown","backup","ruby","automation"]
+description: "撰寫小工具將 Medium 心血文章備份下來 & 轉換成 Markdown 格式"
image:
path: /assets/ddd88a84e177/1*neA7oRVPqHxs6XqtZTKmDg.jpeg
render_with_liquid: false
@@ -16,6 +16,7 @@ render_with_liquid: false
撰寫小工具將 Medium 心血文章備份下來 & 轉換成 Markdown 格式
+
![[ZhgChgLi](https://github.com/ZhgChgLi){:target="_blank"} / [ZMediumToMarkdown](https://github.com/ZhgChgLi/ZMediumToMarkdown){:target="_blank"}](/assets/ddd88a84e177/1*neA7oRVPqHxs6XqtZTKmDg.jpeg)
[ZhgChgLi](https://github.com/ZhgChgLi){:target="_blank"} / [ZMediumToMarkdown](https://github.com/ZhgChgLi/ZMediumToMarkdown){:target="_blank"}
@@ -128,14 +129,14 @@ METHOD: POST
4\.取得 Response
每次只能拿 10 筆,要分頁拿取。
-- 文章列表:可以在 `result[0]->userResult->homepagePostsConnection->posts` 中取得
-- `homepagePostsFrom` 分頁資訊 :可以在 `result[0]->userResult->homepagePostsConnection->pagingInfo->next` 中取得
+- 文章列表:可以在 `result[0]->userResult->homepagePostsConnection->posts` 中取得
+- `homepagePostsFrom` 分頁資訊 :可以在 `result[0]->userResult->homepagePostsConnection->pagingInfo->next` 中取得
將 `homepagePostsFrom` 帶入請求即可進行分頁存取, `nil` 時代表已沒有下一頁
**如何剖析文章內容?**
-檢視文章原始碼後可發現,Medium 是使用 [Apollo Client](https://www.apollographql.com/docs/react/){:target="_blank"} 服務進行架設;其端 HTML 實際是從 JS 渲染而來;因此可以再檢視原始碼中的