星期五, 8月 26, 2016

Compile your go program inside the Docker container

golang 有官方製作的 container:https://hub.docker.com/_/golang/
用 docker pull golang 拉下來以後,切換到 go 專案目錄下 (假定是 $HOME/project),執行:
docker run --rm -v "$PWD":/usr/src/myapp -e GOBIN=/usr/src/myapp -w /usr/src/myapp golang:1.6 bash -c make
就可以在專案目錄下的 bin 裡找到 binary 了。
用 docker container 來 build 的好處,除了可以指定版本之外,也可以 cross compile ,另外就是可以省下處理佈署 golang 開發環境的心思。

星期四, 8月 25, 2016

電影流水帳(2016/7/8~2016/8/7)

Kate Mara<script>
Kate Mara ,在 The Martian 飾演火星任務裡的一個組員,是一名駭客。
一晃眼一個月就過去了,結果這個月幾乎都在看影集... House M.D.
  • I Am Legend (IMDB, Wikipedia),台譯:我是傳奇。電影是一個孤獨與僵屍的故事,在故事的前半段除了狗、模特兒與僵屍之外,只剩下孤寂。
    Robert 在城市裡與他的狗一同狩獵,就在快要逮到獵物時,手錶的鬧鐘響起,Robert 看看天邊的夕陽,立即收拾手邊的東西,帶著狗兒開車回到家中。Robert 要躲的是夜晚,夜晚有喪屍出沒。接著的生活片段可以看出他是個科學家,在研究著能否讓老鼠恢復正常,他嚴格遵守著時間活動,也確保自己能有足夠的體力可以 繼續這樣的生活。交錯的片段,帶出了為什麼會這樣的原因。有科學家發明了可以治癒癌症的病毒,但這個病毒後來卻導致人類變成喪屍,喪屍導致整個城市淪陷; 同時也帶出了 Robert 思念的家人與過往。
    某天,Robert 帶回一個女的喪屍做實驗,而喪屍似乎也有感情似的,在隔天,以同樣的手法設下陷阱,Robert 中了陷阱,陷入昏迷。時間到了傍晚,手錶的鬧鐘再次響起,他醒來,趕緊設法逃離陷阱,不過狗狗卻因此被病毒感染,後來死了。Robert 很難過,唯一一個可以陪著他、能稍微了解他的狗狗死了,他崩潰了。他跑去跟喪屍們大幹一場,在危急的時候,一對母子聽到 Robert 之前的廣播,來到這裡找他,卻順便救了他。雖然一行人順利的逃回 Robert 住處,但卻因此讓喪屍追蹤到 Robert 住處,展開一場大戰以後,Robert 發現他製作的血清療癒了那個女僵屍,於是抽取了女僵屍的血液交給那對母子,犧牲自己保護她們逃出去。最終,母子逃到安全的地方去,並且以血液製作出血清救 了其他喪屍。
    這部電影上映後沒多久,公佈了第二個結局,我一直都沒看,直到這次看完去查,才知道第二個結局是 Robert 將女性變種人還給變種人首領,並且成功的存活下來。
  • Finding Dory (IMDB, Wikipedia),台譯:海底總動員2-多莉去哪兒。海底總動員故事的兩年後,Dory 意外想起該回家一趟了,Nemo 跟 Marlin 義不容辭地陪她展開這趟旅程。經過一番冒險,當然最後找到了 Dory 的父母,並且找到了老友。
    看這部電影的時候,我流了好幾次淚,特別感人的地方主要是 Dory 的父母,Dory 父母不管孩子的短期失憶症怎麼嚴重,他們還是努力的去教導孩子該怎麼從一些線索去找到回家的路,最終 Dory 也靠著這個找到了他們,回到了家。這鼓勵了我,讓我知道自己要努力的教導孩子。
  • 美人魚 (IMDB, Wikipedia)。故事雖然老套,不過細細去看,還是挺溫馨平實的。
    富商劉軒買下了一個港灣,準備要填海開發,所以在港灣外圍加上了強力的音波機器,要把魚兒都趕走。住在那個海灣的人魚們,因為這個音波機器被困在港灣裡, 為了脫困,他們決定刺殺這個富商。人魚們派出的誘餌是珊珊,珊珊和劉軒接觸以後,心軟了,而劉軒接觸珊珊以後,心境也發生了奇妙的變化。
    劉軒的生意伙伴若蘭,是個美麗的女人,她原本以為可以憑自己的美色與本事拿下劉軒,哪知劉軒不吃這套,反而倒向珊珊這個不怎麼樣的女人。於是她起了妒心, 在查出珊珊與人魚族群以後,派出大批人馬進行獵殺。劉軒發現自己愛上珊珊,以及自己所犯下的錯誤,決意幫助人魚族群。經過一番打鬥以後,終於讓人魚們重返 大海,可是自己也受了重傷。
    匆匆數年,劉軒傷癒,放下了房地產事業,將自己的財產捐給海洋研究。某天,有個海洋研究所的學生來訪問,問他是不是在保護人魚,劉軒笑而不答。但訪談間,端出飲料的珊珊卻透露出,劉軒其實已經娶了珊珊,並且過著幸福的生活。
  • The Martian (IMDB, Wikipedia),台譯:絕地救援。電影把故事該交代的都交代了,不過個人覺得小說比較好看,可能是書裡保留的想像空間比較多吧~
    NASA 派了一個小組去火星出任務,可是遇到了沙塵暴,隊長 Melissa 決定撤退,但撤退的時候,Mark 被石頭擊中而暈倒,Melissa 考量整體,毅然決然捨棄 Mark 。Mark 運氣非常的好,被石頭擊中的面罩恰巧地被堵住而沒流失空氣,Mark 醒了之後,趕緊回到小屋去進行更換面罩與療傷。進行簡單的包紮與處理以後,他試著聯絡 NASA ,但無線電設備損壞了,不能進行通訊。於是 Mark 只能就現有的資源進行求生大作戰,他開始運用自己的植物學與 Maker 的知識來種馬鈴薯,開始看地圖找之前 NASA 丟下來的補給品。地球方面,本來已經以為 Mark 已經掛了的,經過一段時間以後,NASA 有人發現了火星的異狀,確定 Mark 仍然活著。NASA 開始展開行動,試著聯絡 Mark ,給予協助,同時也開始召開救援小組思考如何去火星把人救回來。
    經過雙方的努力之後,Mark 發生意外,導致存糧不足。針對這點,NASA 有人想出了可以在 Mark 存糧足夠的時間內回到火星的計劃,火星小組也決定採用這個較為冒險的計劃回頭去火星救援,也就是利用地球的引力加速回到火星救人。Mark 這邊則是照計劃進行長途旅行到預定的位置去改造登陸小艇,以便升空搭上太空船回去。
    最終,運氣很好的,太空船回到火星,Mark 照著計劃回到了太空船,然後回到地球。

星期五, 8月 05, 2016

docker-hackmd relative url

hackmd 是一個很棒的協作平台,你可以用 markdown 來撰寫文件,graphviz/flowchart 等語法來畫圖...很厲害。
安裝上也蠻簡單的,已經有人做好 Dockerfile :hackmdio/docker-hackmd: docker hackmd image
可是這個 docker image 有個問題,就是沒辦法以 relative url 存在,他預設是在根目錄下運作,有個日本人弄出來了:HackMDをnginxで / 以外のlocationで起動する。 - Qiita ,我參考他的設定,做了調整,加入 nginx 設定與 upstart 設定,放在 elleryq/docker-hackmd: docker hackmd image
大致調整以下東西:
  1. nginx 設定:加入 rewrite,將路徑改寫為 /hackmd,這可以參考 nginx.conf.example
  2. common.js: 因為 hackmd 用到 websocket ,common.js 的 urlpath 也要跟著調整,否則會無法運作,裏面的 urlpath 需要修改為 /hackmd。這部份我寫在 hackmd/Dockerfile 裡,在用 git clone 取得 hackmd 原始碼以後,用 sed 去做字串的替換。
  3. upstart:upstart.hackmd.conf 裡是用 docker-compose 啟動 hackmd image ,這邊我預期 docker-compose.yml 是放在 /srv/docker-hackmd ,如果你預期不放在這兒,那麼這邊也要跟著調整。
應該大概就這些,如果有沒提到的,就看原始碼吧~

星期六, 7月 30, 2016

phpvirtualbox

無意在 /etc/init.d 下看到 vboxweb-service 這個服務,好奇的把名字丟到 google 去找,才知道是 virtualbox 要提供給 phpvirtualbox 使用的服務。
安裝方法不難,不過我還是搞了好一陣子 (大約4個小時吧),以下是我所參考的文件。
我遇到的問題:
  1. nginx + php5-fpm 只為特定 location 啟用 PHP :這部份卡了我好一陣子,後來是找到這篇:php - nginx projects in subfolders,參考裏面的作法去設定。大致是這樣:
    location /wiki {
        root /var/www/wiki/public;
    }
    
    location ~ /wiki/.+\.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME /var/www/wiki/public$fastcgi_script_name;
    }
    
  2. 無法啟動 vboxweb-service,出現 "vboxwebsrv: error: failed to initialize COM":原本以為是沒加 dialout 群組的關係,後來根據某篇討論(網址不小心被我丟了)仔細推敲以後,發現是因為 VBOXWEB_USER 所指定的使用者沒有 HOME 資料夾,幫這個使用者建立 HOME 以後,就可以順利啟動 vboxweb-service 了。
  3. 無法登入 phpvirtualbox:這是我自己搞錯了,原本以為 config.php 裡指定的 username 跟 password 就是用來登入 phpvirtualbox 的帳號跟密碼,但後來才知道這組帳密是讓 phpvirtualbox 與 vboxweb-service 溝通用的,預設的 phpvirtualbox 帳密是 admin/admin。要修改的話,登入以後再變更就可以。
  4. RDP(Remote display) 不能用:這要先查到 virtualbox 的版本號碼,然後到Virtualbox download site下 載對應的 .vbox-extpack 檔案,再用 vboxmanage extpack install 安裝。安裝完成以後,要重新啟動 vboxweb-service 與 vboxdrv 這兩個服務。最後用瀏覽器開啟 phpvirtualbox 頁面,去設定指定的 VM,就可以看到 Remote display 可以設定了。啟動 VM 以後,就可以用遠端桌面連線連上並看到這台 VM。連線所指定的 IP 是 host phpvirtualbox 這台機器的 IP,port 則是 3389。
另外,啟動所需要的光碟 ISO 檔案或是已經有打包好的 disk image 無法透過 phpvirtualbox 上傳,必須要事先透過 SSH、FTP 等傳輸協定放到 host 上。
其他參考資料 (與 nginx/php5-fpm 相關的):

星期五, 7月 29, 2016

Linux GPS 軟體小記

最近比較常在看 GPS 軌跡,紀錄一下 Ubuntu 下有在用的軟體:
  1. gpxviewer :用來看 gpx 檔案軌跡的工具,圖資是用 OpenStreetMap 。
  2. gpsprune:用來裁剪/合併 GPS 軌跡用的工具,用 Java 寫的,圖資一樣是 OpenStreetMap。
  3. gpsbabel/gpsbabel-gui:用來轉換各種軌跡檔案的工具。常見的 gdb ,要選 garmin mapsource (gdb) ,而 gpx 則是 GPX XML。
  4. gpscorrelate:根據 gpx 軌跡檔,在照片的 exif 加入地理座標標籤的工具。這工具蠻貼心的加入了 offset 的功能,也就說 gps logger 的時間跟照片時間有差距也沒關係,可以透過這 offset 去推算。
今天還有找到 garmin-forerunner-tools 跟 garmin-plugin 是可以搭配我那隻 Garmin ForeRunner 手錶的工具,要找時間來試試看。

您或許對這些文章有興趣

Related Posts Plugin for WordPress, Blogger...