顯示具有 分類 - Mac 標籤的文章。 顯示所有文章
顯示具有 分類 - Mac 標籤的文章。 顯示所有文章

2012年4月11日

[Mac] WinShortcutter 讓 Mac 悠遊 Windows 的網路芳鄰

WinShortcutter 這玩意兒太讚了,竟然沒有中文的介紹,實在可惜。
首先先前情提要一下,
自從我把 Notebook 換成 MBA 後,日常作業中,最讓我困擾的問題就是,
沒有辦法很自在的快速切換到別台 Windows 的共用資料夾,
雖然可以
在 finder 下按 Command + k ,然後輸入 smb://yourWinServer/sharedFolderName
但如果是在文件中看到的是長這樣的路徑
\\yourWinServer/sharedFolderName
那就要很辛苦的把 "\" 換成 "/" 如果很多層的話那心情就會很糟。
所以我一直在尋找解決方案,
終於皇天不負苦心人,讓我找到了 WinShortcutter 這個法寶,
安裝過程一般都沒什麼問題,安裝完成後,它會請你重新開機,
這時候別不信邪,因為服務要更新,所以請重新開機,
開完機後(其實安裝完後就可以看到這個改變了),
回到 finder 中就可以看到,原本 Mac 不認識的 *.lnk 的圖示變了,


雙擊後就會有神奇的效果出現 ... 是的 ... Mac 就學會了如何 follow the link。
當然,神奇的還不止這樣,
接下來要請你跟我這樣做(下面的動作請在重新開完機後做,不然會找不到服務),

首先,打開你的 Finder -> 服務 ->  服務偏好設定(如下圖)

在服務偏號設定 ->服務 裡面尋找
Copy Path to Clipboard 及 Open as Windows Link 並把他勾起來


接著就可以用 選取文字 -> 右鍵 的方式,在選單 -> 服務 -> Open as Windows Link

在 Finder 裡,則是可以 選取檔案或資料夾 -> 右鍵 -> 服務 -> Copy Path to Clipboard

複製出來的檔案路徑如果要把 "/" 變成 "\"  可以在

系統偏好設定 -> WinShortcutter 中,把 Use Backward Slashes 勾起來即可

*.lnk 也可以用快速查看,查看捷徑內容



是不是很方便呢!


WinShortcutter 網址:這裡

2011年12月14日

[Mac] 停止 mail 收件人更新通訊錄

繼上一篇 "設定 Mac 通訊錄讀取 Zimbra 全域聯絡人" 之後,
發現,只要 mail 一收到信,收件人就會自動更新到通訊錄中,
這立意是不錯,但困擾的是,姓和名的欄位根本就不對,
被更新過的通訊錄,姓氏和名字的欄位竟然會重複,一整個很無奈,
找了很久,終於在網路上找到解決的方式了,有需要的人請享用:


defaults write com.apple.mail SuppressAddressHistory -bool true

在 terminal 中執行上面這行指令,關閉 mail 後,重新開啟就會生效了。
有一點小小的副作用:即使收件人是不存在通訊錄中的,他也不會自動加到通訊錄中,
連收件人紀錄也不會寫,不過這點到是對我沒有影響,
因為我喜歡手動加到通訊錄,勝過讓他自動幫我加。

2011年11月28日

[Mac] 設定 Mac 通訊錄讀取 Zimbra 全域聯絡人

自從公司把 Exchange Server 換成了 Zimbra 後,很多作業都不順,
尤其是在非 Microsoft 的作業系統上,很多設定都要自力自強,
在 Mac 上Mail 和 Calendar 都不是太大的問題,
但 Contacts 就麻煩了,
因為他的設定太無腦了,直接就抓該帳號的聯絡人,
在介面上還沒有地方可以設定,改抓全域聯絡人,
下面來介紹一下,可以調整這個設定的方式,

以下設定先決條件是,Zimbra Server 上有設 galsync account

首先,打開通訊錄,然後加入一個 CardDav 帳號(通訊錄 -> 偏好設定)

設定完成後,將通訊錄關閉
打開 Finder,按 Command + Shift + G
在跳出的 TextBox 中輸入 ~/Library/Application Support/AddressBook/Sources 並前往該路徑

在該路徑下可以看到如下圖的目錄,但目錄名稱是第一個步驟動態產生的,所以會因人而異
在該目錄下會有一個 Configuration.plist,用文字編輯器將此檔案開起(如果有XCode的話也可以用XCode提供的編輯器編輯)。


打開聯絡資訊 -> 偏號設定 -> 帳號
在伺服器設定裡將紅框處的文字複製出來。
在 Configuration.plist 中尋找剛剛複製出來的文字,
如下圖標示紅框處,調整為 Zimbra Server 上設定的 galsync account 的名字


接下來再重新開啟通訊錄,便會開始同步 GAL 的聯絡人囉。

2011年10月26日

[Mac] bbedit 真好用

BBedit 就他像的 slogan

It doesn’t suck.®

但他不止不糟,而且還非常的優秀。
最棒的是還提供了 command line 的指令
bbedit、bbfind、bbdiff

bbedit 的用法,網路上有一堆文章在介紹,也就不多提了,
來看一下 bbfind ,
在換到 Mac Book Air 上工作後,
另一個(前一個)困擾我的問題是,
在 Windows 上有個非常好用的 grepWin ,
可以讓我在追程式問題的時候,快速的找到相關關鍵字的程式,
但 Mac 下一直找不到好用的替代品,
其實我要的功能不多,只要可以整合 finder,
簡單的輸入關鍵字,就會在指定的目錄下搜尋所有文字檔,
且不同編碼的文字檔也要可以搜尋。
像這樣:



2011年9月30日

[Mac] Lion 下批次更新 hosts 檔的 shell script

2011.11.28 以下 shell script 包裝成 app 囉: Lion 上找主機 IP 並自動更新 hosts 的 app 


用 Air 一段時間了,在公司最頭痛的問題就是很多測試機都只有WINS認識,
雖然可以用 finder 透過 smb://servername 的方式存取檔案,
但對於一個開發網頁程式的工作者來說,相當的痛苦,
因為沒辦法直接 http://servername 進行測試,
在 linux 下可以透過修改 nsswitch 的方式處理,但 Lion 中就不知道該怎麼做了,
最後索性直接改 /private/etc/hosts ,將常用的 Server 與 ip 加進去,
畢竟Server的IP也不是那麼常更換的,
但遇到另一個問題是每次有新的機器,
都要手動下
smbutil lookup servername
再去 /private/etc/hosts 修改內容,過程一整個很繁雜,
於是就寫了幾支 shell script
要新增一台新的機器就在 command line 下

sudo ./hiWins.add.sh SERVERNAME

要從機器清單中匯入就在 command line 下

sudo ./hiWins.import.sh < YOUR_SERVERNAME_LIST_FILE

使用前記得要先備分 /private/etc/hosts ,以免發生意外 :p


(1) findip.sh

#!/bin/bash

# [功能]
# 利用 smbutil lookup 尋找 server 的 ip
# [使用方式]
# echo hrispd-t | ./findip.sh

function getIp(){
    IP=$(smbutil lookup "$1" |grep -i "IP Address" |sed "s/IP.*: //")
}

while read LINE; do             #讀取stdin
    getIp ${LINE}               #取得IP
    if [ ${#IP} != 0 ]; then
        printf "%s\t%s" $IP ${LINE}
    fi
done

(2) hiWins.update.sh
#!/bin/bash

# [功能]
# 更新 /private/etc/hosts 中所有 server 的 ip,輸出並不會直接回寫 hosts 檔,單純 echo 出來
# [使用方式]
# ./hiWins.update.sh SERVERNAME

#讀取原始的 hosts 檔
exec < "/etc/hosts"

#標記是否有相同的ServerName,若無則一律新增
FOUND="N"
result=
while read LINE; do
    #取第一個字
    C1=$(echo ${LINE} | cut -c1-1)
    if [ $C1 != "#" ]; then
        #將空白或tab分隔的字串拆成陣列
        declare -a Array=($LINE)
        if [ "$1" == "${Array[1]}" ]; then
            FOUND="Y"
            out=$(echo "$1" | ./findip.sh)
            if [ ${#out} != 0 ]; then
                printf "%s\n" "$out"
            else
                printf "%s\n" "${LINE}"
            fi
        else
            printf "%s\n" "${LINE}"
        fi
    else
        printf "%s\n" "${LINE}"
    fi
done

if [ $FOUND == "N" ]; then
    out=$(echo "$1" | ./findip.sh)
    if [ ${#out} != 0 ]; then
        printf "%s\n" "$out"
    fi
fi

(3) hiWins.add.sh
#!/bin/bash

# [功能]
# 更新 /private/etc/hosts 中所有 server 的 ip ,並加入指定的 server ip(若已存在則純更新)
# [使用方式]
# ./hiWins.add.sh SERVERNAME
# [注意事項]
# 需要 sudo 權限

if [ $# == 0 ]; then
    echo "Input Server Name please."
else
    out=$(./hiWins.update.sh "$1")
    
    printf "%s\n" "$out" > out.hosts
    
    cp ./out.hosts /etc/hosts
fi

(4) hiWins.import.sh
#!/bin/bash

# [功能]
# 依 YOUR_SERVERNAME_LIST 檔案中,定的 SERVERNAME 清單,
# 逐筆呼叫 hiWins.add.sh 更新(或加入) /private/etc/hosts
# [使用方式]
# ./hiWins.imports.sh < YOUR_SERVERNAME_LIST
# [注意事項]
# 需要 sudo 權限

while read LINE; do             #讀取stdin
    if [ ${#LINE} != 0 ]; then
        ./hiWins.add.sh ${LINE}
    fi
done