2017年7月16日 星期日

2017 北海道-東北 自助行




Day 1
  • 中午抵達新千歲機場,午餐吃機場的白樺山莊拉麵
  • 到一樓租車櫃台,檢查文件後再搭接駁車到Times租車新千歲站。BUT,我帶了國際駕照但日本要看的原始駕照+日文譯本,補救方法是拿駕照到札幌的 JAF (Japan Automobile Federation) 申請。
    • 打算搭計程車去,比手劃腳加上 google map 總算能理解我們的目的地;車費有點多,接近一萬日元...
    • 理論上申請後等取件是一小時至數天,還好 15 分鐘左右就現場取件了
    • 走到附近的車站,坐接駁車回新千歲機場,完成程序
  • 日本人的英文真的是難以溝通,在 Times 直接拿一堆印好各國語言的 A4 紙來對話或告知事情
    • 日本人很仔細檢查車身,把既有的小刮痕註記起來並簽名
    • 租 Mazda Axela 也就是台灣的馬三,比較意外是四門房車款;行李廂空間比想像中大,竟然能剛好塞下26吋、28吋行李並列
    • 去年也在日本開過車,右駕沒什麼困擾,倒是左右手的功能互換要適應至少一天,暫時會變成打雨刷轉向的三寶,回台灣時也會再困擾一次
    • 另外也申請 Hokkaido Expressway Pass 的 ETC 卡,不過釧路以東就沒有自動車道,都是一堆鄉間小路的國道及山路
    • 導航系統有英文語音,目的地通常是輸入電話號碼,但有些地方其實沒有電話,資料上的電話是觀光局辦公室,要用 MAPCODE 或是 Google Map 自行導航
  • 因為去申請譯本浪費好多時間,在自動車道飆了一下竟然被警車從後面追到,大概是看我外國人所以似乎是(比手劃腳)教育一番後放我一馬
    • 自動車道速限大部分都是70或80,但大部分人都是開(儀表板上的)100左右;不然就是要會看測速照相的機器,長得像台灣高速公路的ETC
  • 第一天沒景點,晚上住富良野民宿,走到附近吃拉麵
Day 2
    • 富田農場看花
    • 富良野cheese工房
    • 釧路濕原國立公園,溫根內木道:走步道,小圈約2公里
    • 釧路市丹頂鶴自然公園:900公尺來回,籠內沒加蓋,通常是養一隻,然後會有一隻野生的飛來一起住
    • 晚上住東橫INN,晚餐吃附近的爐邊燒,再去看傳說中的幣舞橋
    Day 3
    • 細岡展望台:遙望釧路濕原
    • 往東行,在厚岸休息,順便吃個牡蠣
    • 花咲灯台
    • 納沙布岬:日本最東端,但日本認為附近的北方四島(俄佔)應該要歸還給他們!
      • 到附近一家店挑一隻花咲蟹煮來吃
    • 標津鮭魚科學館
    • 野付半島:走步道,看到野生丹頂鶴
    • 晚上住知床,晚餐吃附近的居酒屋「潮風」
    Day 4
    • 知床五湖環湖(三小時)
      • 可能遇到熊(前一天才剛目擊),看到熊的話會取消行程,原路退回
      • 後來發現該擔心的不是熊是超多的蚊子... 
    • 遊完湖不久就下超大雨,剛好知床自然中心旁的フレペの滝(少女之淚瀑布)步道封鎖中,原因是可能有熊出沒
    • 知床世界遺產中心,體驗超潮的擴增實境 iPad 導覽
    • 雙美瀑布
    • 本來要去摩周湖展望台,不過天氣太差完全看不到湖...
    • 屈斜路湖,砂湯
    • 阿寒湖遊覽船,看球藻
    • 住阿寒湖旁的高級飯店
    Day 5
    • 本來要去流氷科學館,到達時才發現沒開...
    • 本來要搭層雲峽纜車,但天氣不好作罷...
    • 到附近看流星、銀河瀑布
    • 旭山動物園:工作人員都是年輕人
    • 梅光軒拉麵
    • 晚上住旭山 dormy inn
    Day 6
    • 三浦綾子記念文学館
    • 大雪山旭岳 ropeway
      • 雖然平地天氣不好但山上能見度還不錯
      • 步道走一圈約一小時,看夫妻池、姿見池
      • 旭岳攻頂的話需要登山裝備
    • 中富良野町營薰衣草園,以及旁邊去第二次的富田農場
    • ふらのぶどう果汁工場:非常虛,買個冰淇淋就走了
    • 晚上住札幌,晚餐吃附近的螃蟹吃到飽(えびかに合戦札幌本店),其實吃到第二輪就沒力了...
    • 阿卡將 shopping ...
    Day 7
    • 北海道神宮:偶遇葉信甫!
    • 阿卡將 shopping 第二攤...
    • 時計台、電視台、大通公園、舊本廳舍
    • 晚上住洞爺湖畔
    Day 8
    • 早上在湖邊走一下買早餐,象徵性地參考八景的一部分,例如月浦展望台
    • 登別熊牧場:要搭纜車上去
      • 可以買飼料餵熊,熊為了吃飼料,已學習站立、揮手、合掌等乞食動作,越討喜的越可能獲得觀光客餵食(由上往下丟飼料,熊用嘴接得很好)。看起來非常不自然,但人類自己的世界何嘗不是
      • 另外還有賽鴨的場地,可以下賭注
    • 登別地獄谷:大中午很熱還要觀賞地熱,只走最短的步道
      • 大沼公園:很多島以及橋,風景不錯,也是只走一條最短的步道
      • 民宿:下行李後,主人載我們去纜車站
      • 函館山纜車
        • 萬里無雲看夜景,機會難得於是付費請專業的照,成品可寄回台灣的地址
        • 七、八點附近會很多團體超級多人,要排隊上去,在纜車內及觀景台都很擁擠,等到九點左右會比較適合
        • 結束後走回民宿
      Day 9
        • 到新函館站還車,搭新幹線到新青森
          • 網路上查了一下,大行李通常放每節車箱最後一排後面的空間,沒有特別的行李放置處
        • 弘前城
          • 因為天守下方的石墩需要修復,把整個建築移到一旁,建築內有播放當時工程的縮時攝影
          • 到處都是櫻花,花季來更美
        • 因為東北車多不像北海道可以趕路,加上晚上住宿處需要六點前報到,因此放棄了行程「奧入瀨溪流館」
        • 晚上住妙乃湯
          • 華麗日式晚餐可選擇六點或六點半兩梯,但六點半這梯趕不上八點男女湯換池,雖然說後來去泡覺得還好,就是金湯、銀湯兩種
          • 早餐也是兩個梯次,一次非常華麗道地,但納豆還是一樣從小就不敢吃 orz
        Day 10
        • 田澤湖,辰子像
        • 淨土之濱,再次面向太平洋
          • 付費搭小船可以看青之洞窟,以及沿路餵食海鷗
        • 趕在四點半前到達橋野鐵礦山遺跡,獲得下班前熱心老人全日文導覽...
          • 雖然是世界遺產,但就只是遺跡,應該是因為歷史意義,實際上沒什麼景觀
        • 本來是順著國道35走但剛好封路,繞了一圈才到北上。本來要去一家牛肉餐廳,到現場才說今晚只接受預訂,但熱情的櫃台推薦了另一家還幫我們打電話去訂位。
        • 晚上住東橫INN
        Day 11
        • 毛越寺:也是遺跡...
        • 中尊寺
          • 五百公尺的上坡路旁有好多寺,盡頭處有要收費的金色堂、讚衡藏
        • 松島
          • 突然又到了東岸,搭50分鐘遊覽船看各種島,看到後來船上好多人睡著 XD
          • 附近景點還有五大堂、瑞巖寺
        • 仙台車站吃牛舌,然後在隔壁的 yodobashi 最後 shopping。Apple watch 想要的顏色沒貨,另外到仙台一番町商店街的 Apple 直營店才有(每個店員都能直接用 iPhone 上的 app 結帳,很潮又有效率!)
        • 仙台機場還車,返台

        2017年4月3日 星期一

        MacBook Pro掛了

        可能發生原因

        • MacBook 散熱孔在螢幕/基座交接處,而且有部分散熱是靠鍵盤
        • 因為買了外接螢幕,在家裡比較常使用 ClamShell 模式,鍵盤剛好放在 MacBook 上
        • 如果玩遊戲或跑程式,MacBook 的溫度會顯著上升(但其實沒有到「燙」),可能造成以下故障(應該是螢幕掛了)

        症狀

        • 通常平常是關蓋睡眠,所以首先發現開蓋後螢幕全黑
        • 直接按電源鍵重開機,有開機聲、鍵盤背光會亮,但螢幕一直是黑的
        • 接外接螢幕重開機,有開機聲,但讀取畫面跑一半突然螢幕變黑
        • 黑色畫面中直接輸入登入密碼再 Enter,無效
        • Rest PRAM/NVRAM
          • 開機時按 Win+Opt+P+R 直到第二次開機聲 → 無效
        • Reset SMC
          • 拔掉外接電源
          • 按住 Shift+Control+Option 及電源鍵10秒鐘後放開
          • 接外接電源
          • 嘗試開機 → 無效
        • 接外接螢幕(以下步驟都有接),開機時按 Shift 可進安全模式,當然有些功能會受限,但至少能上網(WiFi)
        • 接 macOS Sierra 的開機 USB,開機時按 Option 選擇 USB,用磁碟工具程式修復,顯示無錯誤
        • 開機時按 Command + C 可進 single-user mode,用 fsck -fy 指令修復,顯示無錯誤
        • 開機時按 D,檢測硬體說「顯示器可能發生問題」,參考代碼 VFD002
        • 有錯誤碼比較容易 google 到精確的資訊,發現很多人有一樣的問題,這台是 MacBook Pro 13" (Late 2013) 不在召回之列而且也過保固了,換螢幕要10000多整個不划算,到 iFixit 看零件也差不多價錢

        解決方法

        • 接外接螢幕、外接電源,開機時看到讀取畫面時馬上關蓋變成 ClamShell 模式,可以順利到登入畫面、進入系統,但開蓋後螢幕又會黑掉,再關蓋也是一樣
        • 目前就關蓋當超薄主機的功能,可惜了 TrackPad 不能用(除非把螢幕鋸掉一半?)

        2017年3月22日 星期三

        Deskew - 掃描文件轉正

        去接老婆時常常要多等個 10-20 分鐘,一問之下原來是掃描文件後,如果看到 pdf 檔裡文件太歪,就要重新掃描。一聽到這問題,直覺上就認為是簡單的 post processing 就能解決問題啊!目前用的方案為:

        • 掃描後的 pdf 檔
        • Ghostscript 將 pdf 轉成多張 tif
        • Deskew 將每個 tif 轉正
        • ImageMagick 將 tif 轉成 jpg,調整壓縮比及resolution,再以 ImageMagick 將 jpg 包成 pdf

        曾經嘗試但未採用的方案:
        • Adobe Acrobat Pro
          • 付費軟體,得來不易
          • 沒有開 OCR 的話效果很差,但預設的 OCR 只有英文的
          • 手動旋轉不易調整
        • PDFill
          • 可以用水平線轉正
          • 乍看功能很多,但看首頁就知道,這個軟體的 UI 設計爛到不行,使用起來非常不直覺
        • Scan Tailor
          • 頗接近需求的軟體,可惜除了 deskew,還會把其他步驟綁在一起才能輸出(例如 Select Content),自動化抓好的話很順利,抓不好每張都要調整反正花更多時間
        • unpaper
          • 其實是第一個找到的,看起來功能很完整很強大,除了 deskew 外還有其他掃描文件常需要的校正功能,但因為是純命令列所以參數很多
          • 比較詭異的是 input / output 是少見的 pnm format (.pbm, .pgm, .ppm)
          • 嘗試了一下發現效果沒有想像中好,大概需要再調參數...
        • Photoshop
          • 修圖很好用,當然也能拉水平線轉正,但無法自動化用在 pdf 檔...
















        2017年2月25日 星期六

        Firefox WebExtension 入門 - 筆記 & 心得


        緣起

        • Sleipnir 是日本人開發的瀏覽器,支援 IE 核心、免安裝、可設定很多熱鍵及滑鼠手勢,多年以來是用 2.99 版,因為第三版之後介面比較華麗(跑得比較慢)而且可以設定的項目反而變少。搭配的套件是 SeaHorse,也就是類似 Firefox 的 GreaseMonkey,用使用者自定的 JavaScript 去「後處理」網頁。一張爛圖可以用 Photoshop 修成好圖,爛網站也可以用 user script 修成好用的介面。
        • 因為用的是非常舊的版本,遇到較新版本的IE開始不是很相容,當然也有可能是院內網的問題,總之下定決心轉換跑道,希望用比較新的工具!
        • 剛開始嘗試寫成 Chrome 的 extension,但發現遇到的問題比 Firefox 多一些,於是又改寫成 Firefox 的 WebE xtension,還好後者本來就向前者致敬,不需要改很多東西。

        背景知識

        • Firefox 以前的套件稱作 add-on,要查 add-on SDK;但每個頁面最上面都會提示你說這是舊的技術,建議改用 WebExtension
        • 最終的套件是用把所有檔案 zip 打包再改成 xpi 副檔名。在開發過程中,建議用Firefox Developer Edition,在 about:debug 頁面中可以直接 load 資料夾中的 manifest.json 作測試。
        • manifest.json 是整個套件最重要的檔案,包含這個套件的基本資訊、套件可以用到的權限、定義 content scripts 的 rules。很明顯的是一個 JSON 的結構。
        • content script 就是 user script,但rule是定義在 manifest.json 而不是在script 裡
          • matches:某個 script 要套用的網頁 URL 規則,要注意的是 URL 包含 scheme, host, path
          • run_at:通常等到網頁 loading 完才執行 script,但可以設定在 loading 完成前就執行
          • js:為了安全因素 content script 執行的 scope 是和網頁不同的,如果希望無痛轉移原本的 Sleipnir + SeaHorse,需要在 content script 中再把舊的 script 注入(inject)到網頁裡。
            • Chrome extension 的資料比 Firefox 多,詳見此篇必讀!
            • Content script 當作一種橋樑,一方面可以和套件的其他部分溝通,一方面可以和網頁溝通。
        • background script 是 Firefox 執行後就會在背景常駐的一個 script,作為一個中央指揮部,用來(暫時)儲存使用者的帳號/密碼、定時 refresh session id 以免被登出。這些功能本來是寫在背景執行的 AutoHotkey script,搭配 Sleipnir 開啟。
        • popup:容易誤解的名詞,是指(選擇性地)在右上角可以顯示一個圖示,按下圖示時會出現的框(事實上是一個網頁)
          • 要在 manifest.json 裡定義 browser_action
          • 網頁原始檔不能有任何 inline JavaScript,應該要用外部連結到另一個 js 檔(主要是 submit button 會用到)
        • popup、background script、content script 可以互相溝通,利用 browser.runtime.sendMessagebrowser.runtime.onMessage

        結構

        • 啟動 firefox,預設首頁就是院內網登入頁;background script 直接開啟 popup,提示使用者輸入帳號/密碼
        • popup 用 http request 去檢查帳密能不能登入,如果登入成功,會將帳密傳給 background script 儲存,所以 firefox 還開著的時候都可以記憶帳密、快速登入
        • popup 也會 sendMessage 給開啟的登入頁的 content script,自動填入帳密;事實上,登入頁的 content script 會先向 background script 請求帳密,以達成自動登入
        • content script 可以指定數個 script 依序讀入,加上 content script 和 page script 是分開的,所以能 load 額外的 jQuery 或 jQuery UI,又不會和原本的網頁衝突
        • 針對 IE only 的網頁(例如需要用到 ActiveX 的頁面),裝了幾個類似 IE tab 的現成套件好像都沒有作用,目前先設計 content script 在 document_start 時就把網頁 title(會顯示在 firefox 的視窗 title)改成特定的文字(含 url),再由背景的 AutoHotkey script 去抓 title 中的 url,另外由 IE 開啟。當然,這招是很 low 的解法,還沒有考慮 cookie、session 等。

        發佈/更新

        • manifest.json 裡的版本號更新,將所有檔案打包成 zip 檔
        • 套件中心登入,第一次上傳時,「如何散布此版本」選擇「您自行處理」,表示我要自己管理更新來源,而不是放在官方網站上,因為放在官網的套件需要人工審查,要排隊等.超.久!
        • 上傳後會自動審查,沒有重大錯誤就 OK 了,會提供簽章過的 xpi 檔,下載之(沒有簽章過的套件,是不能裝在一般 firefox)
        • 套件會抓 manifest.json 裡的 update_url 所連結的檔案(一定要 https 開頭的連結),格式也是 JSON,包含各版本的檔案連結;所以 updates.json 和 xpi 檔要放到一個網路空間(例如 dropbox),xpi 檔的連結寫進 updates.json,updates.json 的連結寫進 manifest.json
        • 整個發佈/更新流程可以用 web-ext 完成,但我還在研究中...