iPhone 6 Plus 螢幕破裂修復記錄

我的 iPhone 6 Plus 不小心把觸控螢幕面板摔破了,想說反正也用的夠久了,暫時先用備用機等到 iPhone X 發售就直接換新機,而且我有用 iCloud 隨時備份,直接從備用機拉備份應該可以直接無縫接軌到備用機上。

結果就爆炸了

Google Authenticator 並不會把 OTP 密碼資料備份到 iCloud 上,所以換了新機後從 iCloud 拉備份以後,打開 Google Authenticator 發現裡面是一片空白,同時我的臉也都白了。

那只能從螢幕爆掉的舊 iPhone 6 Plus 上想辦法了,這時候想到的解決方法是:

  1. 把 iPhone 6 Plus 接上電腦的 iTunes
  2. 用 iTunes 備份 iPhone 6 Plus 上的最新資料
  3. 把備用機接上 iTunes
  4. 用剛做的 iPhone 6 Plus 備份回復備用機

結果一接上電腦,隱隱約約可以從破掉的 iPhone 螢幕上看到要我輸入密碼解鎖螢幕才能進行備份,但是螢幕破了,數字九工格的右邊一半沒辦法點。努力的這邊壓壓那邊壓壓,看看會不會讓我硬點出一個數字,但試了一個晚上還是點不出來那唯一一個在右邊的數字。

要解決這個問題,就只好把螢幕修好、讓我可以解鎖手機用 iTunes 備份。於是跑去外面的維修中心、告訴對方我只需要能把螢幕解鎖備份資料就可以了,其他功能如果有問題沒有關係,然後我就跑到附近去等對方工程師幫我處理。

沒多久接到電話,對方表示換了螢幕面板以後,看起來應該沒問題了,可是如果要備份資料的話,因為之前(也就是前一天在想辦法按出密碼鎖數字的時候)密碼輸入太多次,螢幕顯示已鎖定,這樣就備不出來了,只能還原原始設定。

但是不信邪的我還是請他不要幫我還原,我回家再想辦法惡搞看看,於是我回家做了以下的事:

  1. 先進入 iPhone 的救援模式(關機後按住 Home 鍵以及電源鍵,直到螢幕顯示救援模式)
  2. 接上 iTunes
  3. 選擇「還原」清掉整台 iPhone 的資料,做完以後 iPhone 就不再是鎖定狀態了
  4. 再度用 iTunes 還原,這次用三月的備份檔還原,做完以後 Google Authenticator 就恢復到三月的資料了
  5. 再從 iPhone 還原設定,還原後第一次開機選擇從 iCloud 還原備份,這樣手機就恢復到兩天前的狀態了,並且第 4 步拉回來的 Google Authenticator 資料也還會在手機裡面

這次經驗給我幾個教訓:

  1. iCloud 備份不是完整備份,有些東西是不會備上去的(例如 Google Authenticator 的密碼資料)
  2. 平常還是要有定期用 iTunes 備份的好習慣,這次幸好我的 Google Authenticator 資料自三月後沒什麼新變動。如果可以的話最好開啟 iTunes wifi 備份,就不需要接線備份了
  3. 不要做多餘的事。像是一直 try 密碼,造成手機被鎖定
  4. 改用可以備份資料的 Authy,放棄 Google Authenticator

2017 MacBook Pro without TouchBar 敗家心得

在 2017 MacBook Pro 之前我用的是 2015 MacBook Pro Retina,當時因為更早的 2012 MacBook Pro 上班時忽然無法開機整台烙賽了,只好迅速到優仕拿了一台有現貨的 8G Ram、512G 硬碟版本。

當時因為工作的型態主要會在 Terminal 裡連到 Server 上作業,所以記憶體 8G 就夠了。但隨著時間過去,我在公司的工作型態從 System Admin 轉移成了 Developer 之後,8G 的記憶體要開一大堆有的沒的開發工具、以及本機的 docker 測試環境實在太勉強。於是在 2017 的 MacBook Pro 發表之後,就一直等待台灣的上市,趁勢把工作機更新成 16G 的機種。

在上市之前我花了很多時間在考慮要買沒有 TouchBar 還是 TouchBar 版本的,我自己考慮的點有幾個:

無 TouchBar 版本:

  • 有實體 esc 鍵
  • 有實體 Function Key
  • 便宜
  • 雖然 CPU 時脈比較低,但 GeekBench 分數比較高

有 TouchBar 版本:

  • 潮(有新東西可以玩)
  • 有 TouchID 指紋解鎖
  • 有四個 USB type C

在各種考慮後,最後我還是在台灣官網第一天開賣就買了沒有 TouchBar 的版本。接下來就來說說用了這幾天的感受。

鍵盤

這次的鍵盤有「英文」可以選,印象中 2016 版本只有「拼音鍵盤」,雖然看起來也是只有英文,但是和同事的 2016 Macbook Pro 比較起來,發現「拼音鍵盤」的 caps lock 上面印的是「中/英」,而不是 caps lock,稍微影響爽度。而 2017 直接可以在官網指定全英文鍵盤。

在使用上,新的鍵盤雖然按鍵行程變的比較短,但這個改變其實是最容易習慣的。打個幾天甚至還變的比較喜歡新的手感了。

不過新鍵盤對我來說討厭的是右邊方向鍵的上/下變的很小,coding 的時候盲打很容易按錯。

喇叭

我平常都會戴耳機,電腦沒有接耳機的時候都會靜音。但意外發現 2017 新設計的喇叭(其實 2016 版本應該就是採用這樣的設計),發出來的聲音比以前好太多了。

螢幕

Retina Display 物理上的實際解析度是一樣的,但桌面看到的預設解析度變了,從原本的 1280×800 變成 1440×900。最大的感覺就是桌面變大、可以看到的東西變多了。

USB type C

我原本的 MacBook Pro 2015 有兩個 DisplayPort,我工作時也外接了兩台 Dell U2414H,加上 MacBook Pro 自己的螢幕,平常都是三螢幕在作業的。2017 MacBook Pro 把連接埠都拔掉剩下兩個 USB type C 之後,我如果要繼續用三螢幕作業,最簡單且踩到地雷機率最低的方法就是買兩個 USB-C Digital AV 多埠轉接器,直接就噴掉 NT. 4380…

雖然有些副廠的轉接器可以用,但是有看到一些災情是副廠轉接器會干擾 2.4GHz wifi 訊號的…

然後因為我需要接兩個轉接器,所以變壓器就得接在轉接器的 USB type C 上,弄得一大串看起來真的很智障…

風扇

和我前一台機器相比,2017 MacBook Pro 不知道為什麼風扇起飛的機率變頻繁了,感覺機器也有比較熱。不過我是認為外部機殼發熱表示內部在散熱,所以不太在意,只是手汗會比較討厭。

TrackPad

變大的 TrackPad 的確會在沒注意的時候不小心壓到,導致打字時會出現一些意料之外的靈異現象。不過對我來說發生的頻率沒有太高。

變壓器

新的變壓器因為把原本整線用的耳朵拿掉了,所以變成那條 USB type C 線要一大把的收在包包裡,雖然可以用魔鬼氈束起來,但是線本身的材質和以前也不一樣,變的比較硬,所以用束的也不是很方便…

另外就是 MagSafe 2 這麼好用的東西被拿掉了真的很智障…

結語

雖然難免有些吐嘈點,但整體用起來我覺得 2017 MacBook Pro without TouchBar 還是一台不錯的機器,但是以目前 Apple 把 TouchBar 版本當作主打的情況下,也不知道沒有 TouchBar 的版本還能撐多久。我想總有一天還是得要面對 TouchBar 的吧。

用 gitlab-ci 自動測試 django 專案

隨著手上的 django 專案越來越大,就會遇到改了 A 功能以後 B 功能爛掉的情況。這時候測試的重要性就顯露出來了。

雖然 django 自己有 Unit Test 功能,但是要每個人在 commit 前都手動跑一次測試有點太勉強,總是可能會有忘記測試,結果 commit 爛掉的 code 上去的機會。所以把測試的工作丟給 gitlab-ci,讓每次 push 的時候 gitlab 都能自動跑 django 的 Unit test,並把測試結果吐到 Slack 上面會是比較方便的作法。

要使用 gitlab-ci 自動測試,需要完成以下步驟:

  • 編寫 django 的 Unit test
  • 安裝/註冊一台或多台 gitlab-ci-runner,用來執行測試
  • 編輯專案根目錄的 .gitlab-ci.yml 設定檔

編寫 django 的 Unit test

可參考 django 關於測試的文件

安裝/註冊 gitlab-ci-runner

  1. 先到 gitlab 專案頁面,點選右上角的齒輪圖示,選取「Runners」。會在這個頁面看到 gitlab 提供給 runner 註冊的 URL 以及 token
  2. 我用來跑 runner 的機器是 Ubuntu,可參考這份文件安裝 gitlab-ci-runner
  3. 裝好後執行 gitlab-ci-runner,會提示您輸入剛剛看到的 URL 和 token
  4. 然後根據您需要設定其他項目,在這邊我選用 docker 環境來執行測試。gitlab-ci 會在 runner 上跑一個 docker 環境,把您的 django 專案丟到這個環境內測試。所以也會需要在 runner 上安裝好 docker。

安裝/註冊成功後,會在 gitlab 的 Runners 頁面看到剛剛註冊的 runner:

2017-05-18 下午4.57.20
設定好的 gitlab-ci-runner 已註冊進 gitlab

編輯 .gitlab-ci.yml

再來編輯 .gitlab-ci.yml 設定檔,這個設定檔定義了 gitlab-ci 要幫你做什麼,範例如下:

./shell/install.sh 的內容如下,我在這個檔案定義了 runner 在啟動 docker 之後、執行 django unit test 之前需要做些什麼:

這樣設定好之後,push 上 gitlab 就會在專案的「Pipelines」→「Builds」看到測試的狀況,如果測試成功就會在這個 Build 及 Pipeline 看到 passed 的標誌:

如果另外還有在 gitlab 設定和 Slack 的整合,Build 的結果也會一起吐到 Slack 上面。

在 docker 中使用 Elasticsearch 作為 django 的 search backend

目前手上的專案用了 django 作為網站的 Framework,而為了確保所有開發人員能夠在自己的開發機上用相同的環境進行開發,所以我們把整個 django 專案用 docker-compose 包裝成容器。

且為了未來專案正式上線時,可以放在 AWS 上,並盡量使用 AWS 的 managed service,所以選擇了 Elasticsearch 來作為 search backend。

這篇文章是把 Elasticsearch 加入 docker-compose 中的 django 專案的筆記。

閱讀更多

新同文堂無法在 Firefox 使用後的簡繁轉換方案

2017-04-26: 新同文堂新版 release 了,這個版本在 Firefox 53.0 上使用沒有問題,所以就不再需要使用 workaround 了

新同文堂這個簡繁轉換套件,在開啟了 e10s 之後的 Firefox 中無法使用的問題困擾我有一陣子了。現在似乎也從附加元件中下架了。在這之後一直沒有找到順手的替代方案。今天稍微拜了一下 Google 才發現這個走 Greasemonkey 的替代方案。

  1. 如果 Firefox 沒有安裝 Greasemonkey 套件的話,請先到這裡安裝
  2. 安裝簡繁自由切換這個 Greasemonkey script

以後如果再遇到簡體中文網頁,就會自動轉換成正體中文。