Apple email 亂碼小註解

我本來用 Apple 的 Macbook AIR 收信, 最近改成 Surface Book 2. 原本收到其他同仁用 Apple Macbook 寄出來的加密信件, 在 Apple 上直接用 Apple Mail 加上插件就可以看到解密後的郵件, 相當地方便! 但換到 Windows 底下就變亂碼了, 這件事有點麻煩, 所以花了點時間解決.

首先 Kleopatra 解密軟體是無辜的, 它只是忠實地解開 PGP key. 編輯器也是無辜的, 這並不是 UTF-8 誤設成 Big 5 這類的問題. 不然用 Word 裡面選擇編碼的功能就能挑出對的那個編碼方式.

我這次遇到的是郵件變成了有很多等於符號的亂碼, 例如 =8E=BB=E5=A6=82=E6=9E=9C…, 這該怎麼辦呢? 這種很多 “等於" 的亂碼是 Quoted-printable (QP) 編碼, 中文是 “可打印字符引用編碼". 也就是可以把任何編碼的文字變成可以印出來的 ASCII 字元. 解密完的 mail 中也可以看到這些字樣:

Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8

Apple 的電腦預設都是用 UTF-8 編碼寄出, 但是後續又被 quoted-printable 轉了一次. 解密軟體只負責解到 quoted-printable, 加上 Outlook 不像 Apple Mail 多了一道解 QP 的動作, 因此才會出現亂碼.

解決之道, 可以自己寫一個解 QP 的程式, 例如這位勇者仁兄 [1], 或者是到善心人士的網站上去轉 [2]. 這個網站還提供了很多轉來轉去的工具, 有需要的人可以做成書籤來備用. 另外有一個網站 [3] 提示了幾種亂碼的類型, 看到不同的亂碼就知道這是哪一類的問題. 基本上 unicode 就是 &# 開頭, 因此文件中一定會有很多 &#. 
random-character-1-620x200

幸虧有這些亂碼終結者, 我們才能有效率地解決網路上怪怪的相容性問題. 在此也感謝他們的貢獻!

[Note]

  1. https://social.msdn.microsoft.com/Forums/zh-TW/d1ff3e3f-bca2-4220-a970-e3557f623e90/-quotedprintable-?forum=233
  2. http://web.chacuo.net/charsetquotedprintable
  3. https://www.uni-ulm.de/acssu/ime/email_decoder_tc.php

Tesorflow on Windows 10 小筆記

最近想要自己安裝 tensorflow 到 Windows 10 底下, 找了一篇很好的文章來參考 [1].  不過實際動手做的時候, 遇到一些小問題, 所以另外做個筆記紀錄一下.

首先我們要安裝 Python [2], 這點沒有疑慮. 到官網抓下來安裝. 然後手動把路徑加到系統環境即可. 但接下來分岔成兩種作法: A 和 B:

(A) 在 Python 環境下安裝 tensorflow.

pip3 install –upgrade tensorflow-gpu

安裝過程一切順利, 但是在 python 提示號下, 可能會遇到 ctypes.WINDLL 找不到 cudart_dll_XXX 的問題. 理論上安裝完 cuda 就會好.  值得注意的是 cuda 和 cuDNN 的版本要搭配 tensorflow-gpu 的版本. 現在的 python 3.6 要搭 cuda 9.0 和 cuDNN 7.0, 這個組合試過沒問題. 但我也曾經試過 cuda 9.1 搭 DNN 9.1, 結果失敗了. 不敢說這組合一定不行, 但我不打算再試了, 先退版本再說.

安裝完 cuda, 用 “nvcc -V" 可以看 cuda driver 是否正確安裝? 但安裝 driver之前, cuda 安裝程式會說 “找不到相容的顯示卡, 但是沒關係可以先安裝." 這讓我擔心了一下. 難道說有兩張顯卡的話會亂抓? 於是我又另外下載 cuda-Z [3] 來驗證. 實測發現讓 Intel UHD 620 和 GTX-1050 共存, 或是把 620 關掉; cuda-z 都可以正確找到 GTX-1050. 

最後一個提醒點是, 如果在 windows 的 command shell 打 python 出現的  shell 底下無法正常使用 import tensorflow, 但是在 python 安裝時自己產生的 command shell 就沒這個問題. 可見得還是有些小地方設定不同.

網路教學 [1] 說可以用矩陣乘法測試 tensorflow, 但實測起來, 老舊的桌機跑 CPU only 反而比 CPU + GPU 快! 問題出在這個 interpreter 會動態去偵測 CPU 和 GPU, 花了不少時間去優化環境. Your CPU supports …. AVX2, found device…GeForce 1050 … Total Memory 2.00GiB…etc.   

tensorflow-1-768x329

(2B) 用 anaconda3 的環境. 安裝它的好處是不會獨佔 python 的環境, 它可以用 anaconda prompt interpreter, 或者用 IDE (integrated development environment) 來寫程式. 從 anaconda navigator 進去, 然後點選 Spyder, 就可以自己寫 python 程式 compile 來跑.

spyder-1-768x636

安裝 anaconda 時會要求順便安裝 Visual Code, 安裝  Visual Code 和 Visual studio 時又會推薦同時安裝 git. 所以這個家族人數不少.  安裝 Visual Studio 的好處是 cuda 有一些 sample code, 可以跑來看看. 不過這裡面有一大敗筆是 sample code 只支援到 MSC_VER 1911, 最新的 Video studio 2017 已經是 MSC_VER 1912, 我看要改得地方太多, 決定放棄.

[Reference]

  1. http://blog.csdn.net/u010099080/article/details/53418159#%E5%AE%89%E8%A3%85-cudnn
  2. https://www.python.org/downloads/release/python-364/, download 連結在下方.
  3. http://cuda-z.sourceforge.net/

Mac 加裝 Windows 小筆記

話說我的 Mac Book Air 是當初去大陸出差時, 因為 Mac Book Pro 忽然掛掉, 臨時跑去商場裡的蘋果店買的. 由於人生地不熟, 又怕有假貨, 所以買了最低規的版本, 想說這樣風險最小. 買回來後發現果然是真品, 又去淘寶買了一塊 512GB 的 SSD 來升級, 但 RAM  沒升, 還是 4GB.

隨著 Mac 和 Windows OS 不斷升級, 現在進到 Parallel 已經跑不太動了. 我最初懷疑是不是和 Mac Book Pro 一樣 SSD 掛掉? 所以買了一隻創見 JetDrive 520 來換 SSD. 換了 SSD 之後, 確實反應變快一點, 但最後效能還是卡在 CPU i5 1.4 GHz 和 4GB 的 DDR3 1600 上面.

既然花錢換 SSD 還是沒改善, 我不由得怒從心中起, 惡向膽邊生, 決定把整台重灌成 Windows! 畢竟公司的 VPN 只支援 Windows, 我用穩定的 Apple 硬體搭日漸穩定的 Windows 10 總可以再撐一陣子吧!?

不過事情並不像憨人想得那麼簡單, 有幾個奇怪的地方需要突破, 前後花了很多時間才搞定:

[Windows 10 與創見 JetDrive 520/525 相容性問題]

JetDrive 520 安裝 Windwos 10 dual boot 必定會失敗. 前面的步驟都沒問題, 等安裝完成之後, 第一次開機會卡在 “正在準備" 這個頁面. 推測是 Windows 10 多檢查了什麼? 但安裝 Windows 7 就沒有這個問題.

如果安裝 Windows 10, Bootcamp 會把輔助程式都抓下來, 流程全自動. 只是搭配創見 JetDrive 520 必死, 搭淘寶買的 SSD 沒問題.

創見 JetDrive 520 和 525 的差別是前者沒有衣服 (鋁殼外接盒) 可以穿, 官方如果能單獨賣殼讓我的 Jet825 升級, 這樣至少舊 256GB, 512GB 還可以當隨身碟. 但前幾天電話詢問創見還是沒有賣這種東西, 如果大家有需要更新 SSD, 可考慮買大陸流出的正廠 SSD, 或者至少是 JetDrive 525.

[硬碟分割問題] 

當我打算安裝 Windows 7, 會發現分割硬碟有 bug. 我沒辦法拉動分割比例, 甚至平均分配硬碟的按鈕也失效. 此時只能預設給 Windows 36 GB 且順利安裝, 但若試圖調整大小必失敗.

解決 Windows 7 分割問題的方法是, 做一隻可以安裝 Windows 10 USB 碟. 插著它去開 bootcamp, 選擇製作安裝碟後, 此時分割大小隨便怎麼拉都可以, 選好之後, 把這支碟拔掉, 插上 Windows 7 USB 安裝碟, 然後依正常流程處理. 

[分割工具問題]

分割 Dual Boot 硬碟一定要用 BootCamp, 不能用磁碟工具. 主要差在 BootCamp 最後會在 USB 安裝碟裡面做出啟動磁區.

我用磁碟工具預設 36 GB 的版本順利安裝完 Windows 7,  曾經考慮新增一個分區, 然後再把它配給 Windows. 但 Windows 無法接受硬碟分成兩塊, 所以我把這兩塊和 EFI 開機分區全殺了, 打算重來一次.

不料從此以後, Mac 只看的ˊ到留給它的那 500 GB SSD, 即使從 Command-R reboot 進去,也看不到其他分區了.  SSD 瞬間縮水一半, 感覺心好痛!! 最後想到用 Windows USB 安裝碟進行假安裝, 真砍分區的補救措施, 重開機後, Mac boot 才看得到完整 SSD 大小, 過程好恐怖! 差點就到 PCHome 24 小時網站下 Notebook 訂單.

另外, 似乎是插著多餘 USB device 的關係, 磁碟工具根本無法完整磁碟的分割. 有時是做完後 fail, 有時是一直在 “準備分割硬碟", 但過了幾個小時還在準備中. 打開活動監視器, 也沒看到有什麼 disk IO, 只有 CPU 占了 1.5% 還活著而已.

有個第三方磁碟工具 Stellar Partition Manager 說自己是 Mac 硬碟管理的第一品牌, 於是我也拿它來做實驗. Stellar 的 UI 滿炫的, 只是反應有點慢. 它說現在的硬碟是啟動硬碟, 所以要製作一個啟動 USB 裝置來開機, 然後透過啟動裝置來分割目標 SSD. 這個講法也滿合理的, 於是我把家裡各種 16 GB 以上的裝置都拿來當過開機碟, 不過呢? 開不起來! 等了幾個小時也開不起來~~

[OS X 版本和 Windows 10 相容性問題]

OS X 10.9.5 版不認識 Windows 10, 一直叫我改用 Windows 7 “以上" 的版本, 連製作安裝光碟這步都走不下去.

[Windows 7 BootCamp 與更新問題]

Windows 7 雖然安裝成功了. 但是開心地更新 Windows 系統, 可能會導致系統出現藍白畫面當機. 接著開機時選 “修復電腦 (建議選項)" 救電腦的過程中, 會跑到某個畫面需要按 enter, 但這個時候 Mouse, 內建外接鍵盤完全沒反應. 只有開機時按 F8 可以自動復原系統.

正確的流程是, 剛才做出的 USB 安裝碟裡面的 Bootcamp 輔助程式得先執行, 然後才可以更新 Windows. 進到 USB 找 BootCamp 目錄底下有一個 setup.exe, 在 Windows 下執行它就可以. 其實若不執行它, 應該會發現 WIFI 不見了, 沒聲音..等問題. 但 USB/BT 似乎直接就是好的, 所以一時可能沒察覺到執行輔助程式的重要.

至於做好的 Windows 7 要不要做滿 – 升級到 Windows 10 我還沒有決定. 畢竟 Windows 10 專業版比 Windows 7 專業版還要便宜.  我可能會冒著全部重來一次的風險試試看.