重灌 macOS 的工程(上)

前言

幾天前,Apple 釋出了 High Sierra 的安裝檔,
一時手癢的我,便將自己的 MacBook Pro (Retina, 13-inch, Mid 2014) 來進行更新!
早上上班前出門開始更新,晚上回到家後卻還卡在剩餘 33 分鐘處⋯⋯
覺得詭異的我,便強制關機,而再次打開便只能 command + R 開始重灌系統。
但事情往往不會那麼簡單,在重灌系統時,一直遇上卡在剩餘 1 分鐘的進度;
使用 command + L 查看安裝記錄,便發現是一直在安裝檔的驗證失敗⋯⋯
直到今天早上,在重灌一次,才順利完成 High Sierra 的安裝。

但故事往往都不會那麼順利

不知道為什麼的,我的 Disk password 一直輸入失敗,
但在 command + R 的修復模式之中,那組密碼是可以順利解開 Filevault 的⋯⋯
進入到重置密碼的頁面後,跟著步驟完成後卻得到發生內部錯誤的訊息⋯⋯
反覆試了幾次之後,得到兩個結論:

  • 格式化硬碟再重灌看來是最快的方式
  • 下次絕對不要輕易使用 Filevault

於是乎,花了數個小時後,便得到一台新的 MacBook Pro!

而既然都走到這步田地了,不如就順勢將自己的環境配置逐一記錄下來⋯⋯
 

觸控板相關

首先,第一步我都會先將觸控板相關的內容弄一弄,
這樣待會做其他事情也都會較快一些:

點一下來選按:這樣就不用真的按下觸控板才會有動作

輔助使用➡️滑鼠與觸控式軌跡板➡️觸控式軌跡板選項⋯:啟用拖移

一般

使用暗色選單列和 Dock:我個人喜歡這配色的 macOS

聲音

在選單列中顯示音量:這樣在切換聲音輸出的時候很方便,從內建揚聲器到藍牙耳機

iCloud

能勾的全勾:單純在 iPhone、iPad、以及其他 Mac 之間切換很方便

App Store

這邊則是我會從 App Store 上下載(或更新)的東西:

  • iTunes
  • Command Line Tools
  • Xcode
  • LINE
  • Window Tidy
  • Pages
  • Numbers
  • Keynote

其他

其他開發會使用到的一些東西,則等我告一個段落後再一一寫進下一篇!

Swift 4 JSON

在 Swift 之中,JSON (JavaScript Object Notation) 的型別為 [String: Any]
也就是一個 Dictionary 的概念,以一組 Key 對應一組 Value。
大多數會碰到 JSON 格式是在做網路溝通時,
使用 JSON 格式並 encode 成 Data 的型態在傳輸資料。

Swift 3 以前

我們從 URLSession.shared.dataTask 的 handler 之中,
會得到 data、response error,其中的 data 會使用下面的方式才轉換成 JSON:

接著我們再來對 JSON 的 Key 和 Value 來進行拆解:

而巢狀式的 JSON 格式,寫起來的 code 就會越長,進而衍生出 SwiftyJSON,有興趣的可以自行看一下。

Swift 4

那 Swift 4 做了哪種改變呢?
在 Foundation 裡頭,增加了 Encoder/Decoder 相關的內容,
而這邊先以 JSON 作為主要的內容。
以 User 作為例子:

其中,Codable 是指 EncodableDecodable
若你只需要做 data parse 的話,也可以僅宣告 Decodable。

Third-party Payment

Third-party Payment

這篇要來聊聊第三方支付,其主要的內容會介紹幾個台灣所可以使用的第三方支付方案;
而第三方支付主要解決的問題是,替我們向銀行方溝通及串接請款等動作,
讓使用者可以透過第三方支付的服務付款,而我們再和第三方支付的服務商談拆帳方式,
它可以讓我們不必親自去和銀行接洽運作的方式,只需要透過其官方的一些文件或是管理後台,
便能較輕易地處理掉金流這一塊的相關問題。
而這邊會談到下列幾間的一些資訊:

  1. 智付通
  2. 綠界
  3. TapPay

智付通

智付寶為智冠科技旗下的金流平台公司,而智付通則是其主要的服務名稱。

會員

我們需要先到智付通的網站之中,創建一組收款帳號:

企業會員的部分,可以透過業務的接洽去談彼此之間的手續費抽成數字,
再來就可以串接其 API 來進行相關的開發動作。

支援的支付方式

  • 超商代收
  • 信用卡
  • ATM / WebATM
  • Pay2go 電子錢包(他們自己的產品)

費用

智付通的商業模式是抽取交易手續費的模式:

其中,舉個例子:
像是信用卡一次付清 2.80% 的意思是,信用卡支付銀行本身可能是抽取 1.80%,
而智付通要賺的錢,便是 2.80 - 1.80 = 1.00 %。

備註

之前同事在串接 API 時,踩過幾次文件和實際 response 不符的雷⋯⋯

綠界

會員以及收費


綠界的個人會員和商務會員差異性,從圖表上看來只在於收款額度上的不同;
而特約會員(應該是從業務去接洽的)則是可以去談判的「依雙方議定」。

支援的支付方式

  • 超商代收
  • 信用卡
  • ATM / WebATM
  • Apple Pay
  • Android Pay
  • 全家條碼立即儲

TapPay

TapPay 的商業模式則和上述兩者不太相同,前面所提及的廠商,
是在每筆交易之中抽成當作手續費,
而 TapPay 則是以單筆固定金額來收取費用;
原因是在於,在使用 TapPay 時,
我們需要和相關的銀行簽妥相關文件,讓錢直接轉進我們的戶頭內,
也就是說 TapPay 實際上並不會先將錢都收進它那,
而是一個幫忙在銀行和我們之間作溝通的角色。

支援的支付方式

流程

當時和 TapPay 聯繫所得到的資訊是,我們會先選擇要使用哪一間銀行作為收款的窗口,
他們會協助我們簽妥銀行簽收單合約,再來另一份是 TapPay 的服務合約,
而各家銀行和 TapPay 之間所能談到的信用卡費用也不同。

費用

2017/07/17 所記錄的資訊如下:
中國信託

  • 信用卡 1.85%
  • 設置費 4 萬

台新銀行

  • 信用卡 1.8%
  • 免設置費

玉山銀行

  • 信用卡 1.85%
  • 免設置費

月費:
每月筆數低於 150 筆:0 元
每月筆數 150 - 1999 筆:2489 元
每月筆數  2000 - 9999 筆:2989 元
每月筆數 10000 - 39999 筆:7489 元
每月筆數 40000 - 99999 筆:14989 元
超過 100000 筆:39487 元

Credit Card Number

最近在串信用卡支付相關的服務,順道筆記信用卡卡號的相關規則。

驗證卡號

信用卡卡號的驗證方式是,最後一碼為驗證碼;
舉個例子來說:
MasterCard - 5200 8282 8282 8210
其中最後一碼 0 是由 5200 8282 8282 821 去做一些邏輯運算後得到的結果;
也就是你其實可以前面隨便亂打,最後一碼再從 0 測試到 9 就可以通過基本的卡號驗證。

驗證方式

信用卡的驗證方式,是用 The Luhn Formula,也就是說,
當我們取得一組卡號,驗證碼產生的流程為:

  1. 去掉最後一碼(5 2 0 0 - 8 2 8 2 - 8 2 8 2 - 8 2 1)
  2. 把整串倒過來(1 2 8 - 2 8 2 8 - 2 8 2 8 - 0 0 2 5)
  3. 排序奇數的數字 x 2(2 2 16 - 2 16 2 16 - 2 16 2 16 - 0 0 2 10)
  4. 超過九的數字則 - 9(2 2 7 - 2 7 2 7 - 2 7 2 7 - 0 0 2 1)
  5. 將所有數字相加(50)
  6. 取尾數(0)

得到驗證碼為 0,則卡號 5200 8282 8282 821為正確的卡號格式。

卡別辨別

是以開頭前幾個數字來當作判斷基準,
例如 VISA 卡的判斷方式是卡號為 4 開頭的;
JCB 則是前四碼在 3528 - 3589 範圍內。
還有很多相關的判斷資訊,可以到 FreeFormatter.com 看看!