0%

什麼是 duti?

duti 是一個 macOS 命令行工具,用於設定特定文件類型或 URL scheme 的預設處理應用程式。相較於在系統偏好設定中逐一修改,duti 讓你可以透過指令批次管理預設應用程式。

安裝

使用 Homebrew 安裝:

1
brew install duti

基本用法

查詢目前的預設應用程式

查詢特定檔案類型的預設應用程式:

1
duti -x txt

輸出範例:

1
2
3
Visual Studio Code
com.microsoft.VSCode
/Applications/Visual Studio Code.app

設定預設應用程式

設定預設應用程式的基本語法:

1
duti -s <bundle_id> <uti_or_extension> <role>

參數說明:

  • bundle_id:應用程式的 Bundle Identifier(例如 com.microsoft.VSCode
  • uti_or_extension:UTI(Uniform Type Identifier)或副檔名
  • role:角色類型
    • all:所有角色
    • viewer:檢視器
    • editor:編輯器
    • shell:Shell

實用範例

將所有 .txt 檔案預設用 VS Code 開啟:

1
duti -s com.microsoft.VSCode .txt all

將所有 .md 檔案預設用 VS Code 開啟:

1
duti -s com.microsoft.VSCode .md all

設定 .json 檔案:

1
duti -s com.microsoft.VSCode .json all

使用設定檔批次設定

建立一個設定檔 ~/.duti

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 文字檔案
com.microsoft.VSCode .txt all
com.microsoft.VSCode .md all
com.microsoft.VSCode .json all
com.microsoft.VSCode .yaml all
com.microsoft.VSCode .yml all
com.microsoft.VSCode .sh all
com.microsoft.VSCode .zsh all

# 程式碼檔案
com.microsoft.VSCode .js all
com.microsoft.VSCode .ts all
com.microsoft.VSCode .py all
com.microsoft.VSCode .go all
com.microsoft.VSCode .rs all

# 網頁檔案
com.microsoft.VSCode .html all
com.microsoft.VSCode .css all

套用設定檔:

1
duti ~/.duti

查詢應用程式的 Bundle ID

可以使用以下指令查詢應用程式的 Bundle Identifier:

1
2
osascript -e 'id of app "Visual Studio Code"'
# 輸出:com.microsoft.VSCode

或使用 mdls 指令:

1
2
mdls -name kMDItemCFBundleIdentifier /Applications/Safari.app
# 輸出:kMDItemCFBundleIdentifier = "com.apple.Safari"

常見的 Bundle ID

應用程式 Bundle ID
VS Code com.microsoft.VSCode
Sublime Text com.sublimetext.4
Safari com.apple.Safari
Chrome com.google.Chrome
Firefox org.mozilla.firefox
Preview com.apple.Preview
Finder com.apple.finder

搭配 dotfiles 管理

將 duti 設定加入你的 dotfiles 安裝腳本中,可以在新機器上快速還原預設應用程式設定:

1
2
3
4
5
6
7
#!/bin/bash

# install.sh
brew install duti

# 套用預設應用程式設定
duti ~/.duti

總結

duti 是一個簡單但實用的工具,特別適合:

  • 經常重灌系統或換新電腦的使用者
  • 想要自動化 macOS 設定的開發者
  • 管理多台 Mac 的系統管理員

透過 duti,你可以將預設應用程式設定納入版本控制,輕鬆在不同機器間同步設定。

參考資源

Git http(s)帳密設定

通常在Git私倉的建置中,我們通常是透過http協定來存取Git私倉上的資源,在macOS上為了方便,透過我們會利用Keychain來安全管理使用者的帳號及密碼,因此大略都會透過下列指令設定 git credential osxkeychain 用戶憑證的管理方式。

1
git config --global credential.helper osxkeychain

帳密更新方式

隨著時間一久,突然要上傳異動至repo專案時發現為何突然間提示權限不足,經過檢查線上權限都有開啟,那可能是因為帳密跑掉或錯誤而影響。

1
2
3
4
$ git credential-osxkeychain get
host=github.com
protocol=https
> [Press Return]

可以透過上列的指令可以查看目前對照的帳號及密碼是否正確

如果不確定,也可以透過下列指令先刪除原有設定,後續在進行git指令操作時就會需要重新輸入帳密

1
2
3
4
$ git credential-osxkeychain erase
host=github.com
protocol=https
> [Press Return]

故事背景

今日上班的時候,隔壁的小王跑來跟我說,目前線上遇到CORS的問題,深入了解後才曉得在後端的工程人員對於CORS的認識不深,因此在進行新環境部署的時候缺少環境的設定檔,面對總是有類似的狀況一再發生,是否有什麼方式可以改善。

同源策略

要說起CORS的由來,主要還是在於安全性考量,在瀏覽器上大部份是採用同源政策(Same-origin policy)限制了不同網域資源間的活動。因此當我們API站的網址、埠號、協定不一致的時候,通常我們會在開發者工看到下面的錯誤訊息:

CORS

隨著目前網站提供的功能與內容的豐富度越來越高,經常會有需要存取第三方資源的狀況,因此大部份都會透過一些跨域存取的方法達到請求資源的目的,CORS就是其中一種可以達成存取資源方法。伺服器會透過preflight request機制使用OPTIONS方法發出一個請求,確認伺服器是否支援跨域請求以及相關內容,當伺服務允許之後,才會實際發送資源請求的動作,並告知客戶端是否有需要相關的認證資訊(Cookie、Header)之類的。

閱讀全文 »

前言

日常工作上經常性使用VSCode這款原始碼編輯器做為開發工具,但大部份都只用來寫寫代碼、透過擴充套件highlight代碼,以及進行相關編輯、搜尋、取代等文書工作,甚少直接使用編輯器來運行程式,這次來記錄一下如何使用內建的Debug功能進行Typescript的Debugging。

參考內容:
https://code.visualstudio.com/docs/editor/debugging

閱讀全文 »