2015/10/30

用 AppleScript 取得檔案路徑與資料夾路徑


今天在寫如何用 shell script 取得資料夾路徑名稱,發現在Mac OS 中可以用 Apple Script 寫 script。可以搭配 Automator 的「執行 Shell 工序指令」一起使用!


[顯示目前檔案路徑]
FilePath=$(osascript -e 'tell application "Finder" to set FolderPath to quoted form of posix path of (item 1 of (get selection) as text)');

echo $FilePath


[顯示目前視窗資料夾的路徑]
FolderPath=$(osascript -e 'tell application "Finder" to get the POSIX path of (target of front window as alias)');


echo $FolderPath

2015/10/27

更新、Recovery Mode與DFU Mode 回復



今天在處理一支升級 iOS 9.1 失敗的 iPhone 5s,對於使用 iTunes 更新及回復做個記錄。

手機狀態:沒完整備份,iOS 9.0.2 感覺頓頓的,繼續升級 iOS 9.1,結果升級到一半變成白底黑蘋果(白色 iPhone 5s 的關係)。


先說明 iTunes 更新與回復功能....


【更新】:
更新 iPhone 可能即可修復問題,這會保留您的設定和內容。



回復有兩種,分別是 Recovery mode 與 DFU mode,其中的差異只在開機時是否載入 iBoot。Recovery mode 在恢復與升級的時候會使用 iBoot。而DFU mode 則跳過 iBoot 讓使用者可以降級(重刷)目前的韌體,兩種回復的過程都會清除手機內的內容與設定


【Recovery mode 回復】:
回復模式是讓 iPhone 進行升級、回復時會使用的狀態,當系統有問題時可以使用手動的方式強制進入回復狀態,以便使用 iTunes 重刷韌體。

強制進入方式:
打開 iTunes,接上傳輸線,同時按著 Power 跟 Home 鍵,等畫面重啟看到蘋果logo 的畫面,先放開 Power 鍵,但 Home 鍵不要放開,直到 iTunes 跳出提示視窗。


▼ 電腦會抓到一台 Recovery Mode 的裝置。


▼ iTunes 會跳出提示視窗 (手機端畫面為要求連接iTunes的圖案)

▼ iTunes 畫面有「更新」及「回復iPhone」可選



【DFU Mode 回復】:
DFU (Device Firmware Upgrade) 模式像是工程模式,當進入 DFU mode 後,在DFU 模式時設備畫面都會在黑屏狀態,iTunes 會偵測到一台在回復模式中的 iPhone。

強制進入方式:
打開 iTunes,接上傳輸線,同時按著 Power 跟 Home 鍵,等到畫面黑掉後約 5 秒,先放開 Power 鍵, 但 Home 鍵不要放開,直到 iTunes 跳出偵測到一台 iPhone 在恢復模式的視窗出現。


▼ 電腦會抓到一台 Recovery Mode 的裝置。

▼  iTunes 會偵測到一台在回復模式中的 iPhone。(手機端畫面為黑屏)

▼  iTunes 畫面只「回復iPhone」可選



一開始想用更新修復看看,但似乎不可行,看到網路上一篇「How to fix the issue of iPhone stuck on Apple logo without losing data on your device!」,照著回復都一樣是卡在底下的畫面。




話說這時候手機的畫面都只有蘋果logo + 進度條,根本沒辦法回應 iTunes,最後只好進入 DFU 重刷了,還好 iCloud 還有備份到一點點東西,只能部分還原了~




最後想說的是,完整備份真的很重要,現在有空不妨就備份一下吧!!


2015/10/23

Ubuntu 15.10 + Apache 2.4.17 + HTTP/2.0

最近看到 Apache 2.4.17 釋出,內建支援 HTTP/2.0,於是就測試紀錄一下。

一開始用 Ubuntu 14.04 作,不過內建的 OpenSSL 版本是 1.0.1f,,還需要 TLS 的 ALPN ,
所以需要 OpenSSL 1.0.2 以後的版本。

後來用Ubuntu 15.10 作,因為內建 OpenSSL 版本已經是 1.0.2d了。


 參考 あすのかぜ 這裡的作法。


1. 先安裝 nghttp2

apt-get install make binutils autoconf automake autotools-dev libtool pkg-config \ 
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \ 
libjemalloc-dev cython python3.4-dev python-setuptools 

git clone https://github.com/tatsuhiro-t/nghttp2.git 
cd ./nghttp2 
autoreconf -i 
automake 
autoconf 

./configure 
make 
sudo make install 
sudo ldconfig

2. 下載並編譯 Apache 2.4.17

apt-get install git gcc g++ libpcre3-dev libcunit1-dev libev-dev libjansson-dev \
libjemalloc-dev cython make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libssl-dev libxml2-dev libevent-dev python3.4-dev libevent-openssl-2.0-5

wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.17.tar.gz
tar zxvf httpd-2.4.17.tar.gz

wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.5.2.tar.gz
tar zxvf apr-1.5.2.tar.gz
mv ./apr-1.5.2 ./httpd-2.4.17/srclib/apr

wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-util-1.5.4.tar.gz
tar zxvf apr-util-1.5.4.tar.gz
mv ./apr-util-1.5.4 ./httpd-2.4.17/srclib/apr-util

cd ./httpd-2.4.17/
./configure --enable-http2
make
sudo make install

3. 設定
先設定 /usr/local/apache2/conf/httpd.conf 

#新增這一行,自訂主機名稱
ServerName myserver.com 

LoadModule ssl_module modules/mod_ssl.so     #取消註解
LoadModule http2_module modules/mod_http2.so #取消註解
Include conf/extra/httpd-ssl.conf            #取消註解

#新增
<IfModule http2_module>
    ProtocolsHonorOrder On
Protocols h2 http/1.1 # for http
    Protocols h2c http/1.1 #for https
</IfModule>

接著產生SSL驗證用的金鑰
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/apache2/conf/server.key -out /usr/local/apache2/conf/server.crt


再設定 /usr/local/apache2/conf/extra/httpd-ssl.conf

#SSLSessionCache        "shmcb:/usr/local/apache2/logs/ssl_scache(512000)" #註解這行

#新增驗證金鑰
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"

#修改,參考 How to h2 in apache
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK

SSLProtocol All -SSLv2 -SSLv3  # 修改

4. 啟動
/usr/local/apache2/bin/httpd 


5. 執行結果

[netstat]
netstat -ta |grep -e http -e https                                
            
tcp6       0      0 [::]:http               [::]:*                  LISTEN                   
tcp6       0      0 [::]:https              [::]:*                  LISTEN    

[用 nghttp 連線]
nghttp -uv http://<IP or Domain Name>

nghttp -uv http://<IP or Domain Name>


[用 Chrome 查看]
直接瀏覽

chrome://net-internals/#http2



2015/10/02

更新 Mac OS X 10.11 EI Capitan (酋長巨石)


蘋果在 2015/09/30 釋出了 Mac OS X 10.11 正式版的更新,代號為 EI Capitan。


OS X El Capitan 以美國優勝美地 (Yosemite) 國家公園中的著名地標為名 (酋長岩或酋長巨石),也算是 Yosemite (10.10)的改版,重點是可以免費升級,所以立馬就來升級一下。

記得升級前要完整備份!!


直接從 Mac 上的 App Store 裡下載即可更新。下載可能需要一段時間,就丟著慢慢下載吧。


下載完畢後會直接執行更新程式,按「繼續」

同意軟體許可協議,按「同意」。

再次確認已閱讀,按「同意」。

選擇要安裝的硬碟,這邊只有一顆,所以就直接點「安裝」。

如果在沒有接上電源的情況下,會跳出此視窗,建議還是接上電源再繼續比較安全,避免安裝到一半時沒電。

需要管理者身份,請輸入密碼。

接著是準備開始安裝

當一切就緒後,重開機後就會進入安裝畫面。


重開機後會跳出白底畫面,中間是蘋果的Logo與進度條,當全部完成後,進入系統後需要重新登入 Apple ID ,照著步驟走完就完成更新了。