March 20, 2019

[Python] setup method in unittest

unittest

setUp, tearDown - instance method
setUpClass, tearDownClass - class method

All instance of TestClass will only call setUpClass, tearDownClass once
Every instance of TestClass will call setUp, tearDown

django

setUpTestData - class method

All instance of TestClass will only call setUpTestData once

---
Three kinds of method in Python

instance method - must have self as a parameter
static method (@staticmethod) - no self, no need to access class-specific data
class method (@classmethod) - need cls as a parameter, need to access class-specific data

June 21, 2017

Mount virtualbox shared folder at startup

Reference: How to mount a VirtualBox shared folder at startup?

  • Add shared folder in virtualbox, do not select Auto-mount
  • Force the vboxsf module to be loaded before fstab
    • add vboxsf in /etc/modules
  • Add the following line in /etc/fstab (change the uid, gid as needed)
shared_folder   /path/to/mountpoint   vboxsf   auto,rw,uid=0,gid=0  0   0

May 23, 2017

docker 指令備忘


參考 Running GUI apps with Docker

/usr/bin/docker run -it --rm --name NAME --net host \
    -e DISPLAY \
    -e HOME \
    -v /etc/passwd:/etc/passwd:ro \
    -v /etc/group:/etc/group:ro \
    -v $HOME/.Xauthority:$HOME/.Xauthority:ro \
    -v $HOME/DIR:/DIR \
    -w /DIR \
    DOCKER_IMG su USER
情境是在 host 放 source code,docker 裡面有 library 跟 tool,在 docker 裡面 compile code 跟使用 GUI tool

December 01, 2016

日本旅遊筆記

車站置物櫃資訊

交通

2016 秋 日本山陰山陽 流水帳

相簿在此

11/22
台北-岡山機場-Via Inn岡山
下午兩點的飛機,到岡山車站已經晚上七點,換了山陰山陽七日JR Pass
稍微在車站逛了一下,晚餐吃車站裡的やよい軒

11/23
JR岡山-JR安來-足立美術館-JR松江-Dormy Inn Express松江-由志園
兩件大件行李箱寄放在 Via Inn 岡山,搭やくも到安來站
安來站半小時有一班到足立美術館的接駁車
午餐吃美術館裡面的大観,可以邊欣賞庭園邊吃飯
離開美術館到達松江後先 check-in 放行李
回車站搭由志園的接駁車,由志園的夜間觀賞會很漂亮
我本來覺得這種夜間點燈活動沒有什麼特別,不過燈會配合音樂作演出就還蠻有意思的
晚餐吃JR松江裡的磯之家,套餐有生魚片烤魚炸魚滷魚完全是魚大餐
因為晚餐吃太飽,只好放棄飯店晚上提供的免費蕎麥麵

11/24
JR松江-JR出雲-出雲神社-一畑電車松江しんじ湖溫泉-JR玉照溫泉-ホテル玉泉
早上出太陽,到了出雲神社一度下起了超大雨
遇到有人在神樂殿辦日式婚禮
午餐吃砂屋蕎麥麵,很多人排隊等了半小時才吃到
到出雲搭的是在宍道湖南邊的 JR ,回松江搭的一畑電車則在宍道湖北邊
回程發現天氣變好了,從松江しんじ湖溫泉站一路看著夕陽走到島根縣立美術館
日落後再走回 JR 松江站,因為要趕ホテル玉泉的 check-in 時間完全是急行軍走法
在車站打 Skype 麻煩飯店來接我們,雞同鴨講了一番後順利的搭到接駁車
飯店的晚餐超級豐盛,吃到最後的釜飯我完全吃不下

11/25
JR玉照溫泉-JR松江-八重垣神社-松江城-JR岡山-Via Inn岡山
跟朋友在松江站會合
搭公車到八重垣神社再到松江城
因為松江城附近沒有很多餐廳
中午就吃松江城對面島根縣物產觀光館二樓的カフェ コンセルボ
吃完飯搭了崛川遊船跟參觀松江城,松江城天守閣頂可以遠眺宍道湖,景色不錯
晚餐在 Lawson 買了些東西在やくも車上吃

11/26
JR岡山-JR姬路-姬路城-JR倉敷-三井Outlet
這天比較晚起床,結果幸運地搭到了 EVA 新幹線列車
姬路城外有好多貓,大家都圍著貓拍照
買了姬路城好古園聯票,只是好古園好大,腳走到後來還蠻痠的
中午吃姬路城附近的讚岐烏龍麵 めんめ
下午到倉敷的三井Outlet逛montbell跟Mammut還有電器店
晚餐吃かつ丼 城下町的デミカツ丼,有點像咖哩又有點不太一樣

11/27
JR岡山-JR廣島-JR宮島口-宮島
今天早上中午大部分時間在下雨
往嚴島神社的路上吃了烤牡蠣,好大好新鮮
鞋子濕了很冷就在紀念品店外坐著休息一會
紀念品的店員阿姨跟我們說旁邊有水族館,開啟了後面的旅程
到了水族館發現門票很貴,就待在水族館門口吹暖氣查資料
這才發現紅葉谷公園有纜車可以搭
兩點回到鳥居已經快要完全退潮,拍完照就往紅葉谷公園前進
因為有點餓,買了路邊的烤章魚腳跟烤牛舌,後來發現還好有吃這些東西墊個肚子
搭了纜車上到獅子岩站才知道上到彌山山頂還要半小時
腳穿著濕透的鞋子很凍的慢慢地往山上前進,爬上彌山山頂時鞋子都快乾了
但彌山山頂的風景真的很壯觀,雖然又累又冷但是很值得
話說回來上彌山的路並不算難走,有到宮島玩沒有上彌山還蠻可惜的
下山後天色已黑,拍了幾張夜景照片
本來還想要買烤牡蠣的,結果大部分店家都已經休息,只好直接回廣島車站
廣島車站有很多家廣島燒的店,因為みっちゃん太多人排隊就吃比較少人的高砂

11/28
JR岡山-JR倉敷-倉敷美觀地區-岡山AEON
昨天的彌山登山之旅把 HP 耗光了
簡單的逛了倉敷美觀就回飯店休息了半小時
之後就在岡山站地下街跟旁邊的 AEON 進行採買
中午吃倉敷站的たん屋びぜん
晚餐吃 AEON 樓上的松屋燒肉套餐
買了岡山車站超市裡的麝香葡萄,很貴但是很好吃!

11/29
岡山路面電車-岡山後樂園-岡山城-岡山機場-台北
昨天提早回飯店休息今天體力恢復了一點
後樂園很大很漂亮,適合悠哉的在裡面散步
原來岡山城是重建過的鋼筋水泥建築
中午吃後樂園外的碧水園,收收行李就搭機場巴士到岡山機場啦
岡山機場出關後只有一家小小的免稅店,吃飯買最後的伴手禮都要在出關前完成比較好
晚餐吃機場的山小屋拉麵
飛機表定是18:50到桃園機場,但18:00飛機就降落在機場
18:50我們已經在預訂的機場接送車上回家了

January 12, 2016

Change the installation directory of npm -g

To prevent to pollute the environment, create a local_dir then

npm config set prefix local_dir
or just edit the .npmrc
prefix=local_dir
and set $PATH to include local_dir/bin
export PATH=local_dir/bin:$PATH

November 20, 2015

Unity key related command

Get Sha1 (Reference)

keytool -list -v -keystore [KEY]
Get Key Hash  (Reference)
keytool -exportcert -alias lazylinkr -keystore [KEY] | openssl sha1 -binary | openssl base64

November 10, 2015

local vimrc

localrc repository

https://github.com/vim-scripts/localrc.vim
https://github.com/thinca/vim-localrc

.vimrc (with Vundle)

Bundle 'https://github.com/thinca/vim-localrc'
call localrc#load('.local.vimrc', getcwd())
.local.vimrc
setlocal tabstop=4
setlocal shiftwidth=4
setlocal softtabstop=4

October 19, 2015

List all of the libraries in jar

Source

find . -name "*.jar" | xargs -n 1 jar tf

July 31, 2015

IAP for Unity Windows Phone 8.1

I bought the Plugin from Reign-Studios. There are examples in the DemoScenes directory. The environment is Visual Studio 2015 Community for a Windows Phone 8.1 project.

Things to be noticed:

  • In Unity
    • Edit->Reign->Check for updates to check version
    • Edit->Reign->Download UnityPackage Updates to get the latest version
    The step 6 for document 2 is not available for VS2015 Community. The following steps are working for me

    For AdDuplex
    • Right click on the Reference in Solution Explorer and choose Manage NuGet Packages
    • Search "AdDuplex"
    • Install AdDuplexWin81 and AdDuplexWinPhone81
    For Microsoft Advertising SDK(credits to stackoverflow)
    • Download and Install from here 
    • Right click on Reference in Solution Explorer and choose Add Reference
    • Select Windows Phone 8.1 -> Extensions and Select Microsoft Advertising SDK for Windows Phone 8.1 (XAML)

    June 25, 2015

    Gradle command line


    From here

    gradlew help
    gradlew tasks
     

    Convert newline format on Mac

    perl -pe 's/\r\n|\n|\r/\r\n/g' inputfile > outputfile  # Convert to DOS
    perl -pe 's/\r\n|\n|\r/\n/g'   inputfile > outputfile  # Convert to UNIX
    From this post

    June 10, 2015

    Unity building problem for Windows Phone

    在使用 Unity 輸出 Windows Phone 專案的時候遇到幾個類似於下面的錯誤
    Currently there will be errors like the following when building Windows Phone project in Unity.

    method `System.Int32 System.String::Compare(System.String,System.String,System.Boolean)` doesn't exist in target framework.
    因為 Windows Phone 提供的 API 並不完整,遇到這種錯誤的時候解法有幾個
    The reason is that some of the .NET API are not provided by Windows Phone. The solutions for the error are:
    1. 改寫程式,拿掉那些沒有提供的 API,改用其他有提供的 API 達到一樣的功能
      Rewrite the code to remove those un-supported API and use other supported API instead.
    2. 一樣改寫程式,實作那些沒有提供的 API ,編譯出 DLL 檔放進 Unity Project
      Implement those un-supported API, compile as DLL and put it in the Unity Project. Use the DLL functions instead.
    目前遇到兩個有問題的是 String.Compare(String, String, Boolean)List.ConvertAll,都使用方法一解決。Windows Phone API 提供了String.Compare(String, String, StringComparison)可以作為替代方案,List.ConvertAll 我就直接用 List.ForEach 一個一個處理了。

    I chose Solution one for the un-supported API String.Compare(String, String, Boolean) and List.ConvertAll. Windows Phone API provided String.Compare(String, String, StringComparison) which can be used to replace String.Compare(String, String, Boolean), as for List.ConvertAll I just converted each item of the list with List.ForEach.

    當然直接把有用到的部份拿掉也是一種 workaround。
    Of course you can just remove the un-supported code, if it's not necessary, as a workaround.


    June 04, 2015

    新加坡旅遊筆記

    網路

    • 可以先在台灣買Singtel或Starhub的預付卡
    • 樟宜機場也有賣,之前的價格是 7 天 1G 流量 10 SGD,用完以後可以再買
    交通
    • 可以先在台灣買EZ-LINK
    • 在新加坡的話要去櫃台買,沒有自動賣卡片的機器,卡片一張12 SGD,7 SGD 製卡費
    • 地鐵跟公車都可以用,公車的話似乎都是上車前門刷,下車後門刷
    • 在地鐵加值最少要加值 10 SGD,少於 3 SGD 不能進站
    其他
    • 最好去程就準備好回程機票的資料,可能會被詢問
    • 台灣有換新幣的銀行很少,台灣銀行的線上換匯再去機場還算方便

    Fail to mount Guest Additions in VirtualBox

    Just met this problem today and found solution here

    sudo apt-get install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

    September 28, 2014

    2014 秋 日本東京 流水帳

    * 相簿在此

    9/16
    台北-成田機場-千葉-千葉港
    因為颱風一堆非香港澳門的飛機延誤取消,差點因為自己耍笨沒搭到飛機
    在成田機場地下一樓想買skyliner的票,對方說如果只買回程要到一樓買
    回一樓櫃台順利的買到兩張

    9/17
    整天都待在東橫INN千葉港站前大廳工作
    這邊只有車站有一家超市,一家藥妝店,一家麵包店跟一家蕎麥麵店而已 XD

    9/18
    Tokyo Game Show第一日
    第一次用休足時間,好冰 XD

    9/19
    Tokyo Game Show第二日

    9/20
    Tokyo Game Show第三日, 公開日第一日
    人真是多到恐怖

    9/21
    逛海濱幕張的outlet,烏龍麵午餐
    到千葉港公園跑步,這公園好多貓啊,可惜沒帶相機

    9/22
    千葉港-千葉-淺草橋
    淺草橋站沒電梯一路扛行李爬樓梯好累
    與RM到蛋包飯店一起午餐,參觀東京車站跟附近的地標
    逛新宿運動用品店,晚餐在新宿吃燒肉
    參觀日本橋—日本道路里程計數的起點

    9/23
    東橫INN淺草橋東口-淺草寺-晴空塔
    淺草寺到晴空塔路上經過河堤公園,這邊停著的腳踏車都是前後各一個小孩座椅
    晴空塔迴轉壽司午餐,cheese garden 的起士蛋糕好好吃
    後來才知道沒開封可以常溫保存,有點後悔沒買
    買了Qu'il fait bon的兩塊水果派回飯店
    晚上逛秋葉原,回程在飯店附近的咖哩店晚餐

    9/24
    秋葉原-新宿-河口湖
    還好東橫INN有接駁車到秋葉原站,不然要在淺草橋再扛一次行李
    搭高速巴士到河口湖後去Toyota租車,午餐吃車站前的ほんとう不動
    先把行李箱放到mizuno飯店,因為毫無規劃,去路上經過的天上山公園
    回飯店checkin發現行李已經被放進房間了,日式房間好大啊
    過了一會有人來鋪床,我本來以為睡榻榻米很硬,鋪床完還蠻好睡的

    9/25
    西湖野鳥之森-樹海步道-風穴-冰穴-西湖いやしの里根場
    西湖非常的美,幾乎沒有開發,放眼望去就是森林跟湖水
    步道是在河口湖車站拿的資料介紹的
    一直到走完回飯店查資料才發現是知名的樹海
    撇去名氣不談,步道算是好走,老少咸宜的程度
    風穴跟冰穴都好冷啊,往下走了一階樓梯馬上感覺到溫度下降是很特殊的體驗
    本來是為了走步道用的羽絨衣在這裡發揮功效
    回程選了以為比較快的路,結果一點都沒有比較快 囧rz
    導致到いやしの里根場已經四點了,只剩下一個小時可以逛
    是個很有意思的地方,運氣不錯的在日落前看到了赤富士
    晚餐預定了飯店的晚餐,一個人吃涮涮鍋,一個人吃壽喜燒 XD
    回房間發現熱水瓶的水被裝滿了,這就是日式服務嗎~

    9/26
    山中湖-忍野八海-北口本宮富士淺間神社
    今天吃了飯店的日式早餐才出門
    短短的早餐時間回房間時鋪床就被收起來了,服務人員都是忍者吧!
    一樣因為車站的景點介紹資料到了山中湖搭KABA,入水的瞬間好刺激啊 XD
    買了飼料在湖邊餵天鵝,這裡的魚搶飼料搶的好凶,鴨子只能吃天鵝吃剩的
    午餐吃完拉麵跟蛋糕,開車環湖一圈以後就往忍野八海前進
    忍野八海是八個地下水湧泉,不知道是不是不要門票的緣故,很多團客
    有強國大媽也有日本大媽,大聲起來不相上下
    在找八海的路上看到很多日式大房子,頗有豪宅氣勢
    淺間神社似乎有非常多分社,在 GPS 只打了淺間神社結果就錯了
    到了正確的神社才發現就是一早出發的時候經過的地方
    晚餐看飯店附的地圖選了一家當地牛排店,醬料很受好評

    9/27
    河口湖車站-新宿-上野-成田機場
    要離開的時候富士山終於出現了
    到了上野先到京城上野站劃晚上skyliner的位置
    並且把行李箱塞進站裡的置物櫃
    午餐一蘭,我在京都吃了兩次一蘭都沒排隊,在上野排了半小時
    逛阿美橫,前兩天都睡的不多,到這時候有點沒力了
    就到上野公園裡的pizza店休息,說是pizza店,下午時段只賣香檳跟酒而已
    搭上skyliner到機場,晚餐吃機場的壽司,普普通通
    接近兩週的日本之行就這樣結束啦

    September 02, 2014

    ssh key fingerprint

    ssh-keygen -lf public_key_file

    August 28, 2014

    mongo 修改 expire TTL

    不能直接用 ensureIndex 修改,要用 collMod,參考文件

    範例

    • db.runCommand({collMod: 'CollectionName', index:{keyPattern: {expireKey:1}, expireAfterSeconds:expireTime(seconds)}})

    一些 ssh 的設定


    參考這篇,有很多把 key 的話,可以設定 .ssh/config 如下

    Host github.com
            User git
            Hostname github.com
            PreferredAuthentications publickey
            IdentityFile ~/.ssh/github/id_rsa
    Host bitbucket.org
            User git
            Hostname bitbucket.org
            PreferredAuthentications publickey
            IdentityFile ~/.ssh/bitbucket/id_rsa
    使用 ssh-agent 可以在 .bashrc 加入以下設定
    # ssh_agent
    function check_ssh_agent {
        if [ ! -e "$SSH_AUTH_SOCK" ]; then
            eval `ssh-agent -s`
            ssh-add
        fi
    }

    check_ssh_agent;

    如果有多把 key 而且在不同目錄就要在 ssh-add 後面指定要加入哪些 key

    July 29, 2014

    [git] 在 master 改了東西又下了 git pull 結果產生 conflict

    很常遇到不太熟悉 git 的人發生這個問題,寫篇文記錄一下

    正確解法:不要在 master 下改東西 (重複三遍)

    以下的做法目的有兩個

    1. 保護之前在 master 的工作內容安全
    2. 讓 master 恢復正常狀態
    在 master branch
    • git add .
    • git commit
    • git branch -b helpme
    到此為止所有的東西都在 helpme 這個 branch 了
    • git checkout master
    • git reset --hard origin/master
    這個時候 master 就恢復到正常運作狀態

    至於原本的工作內容,我個人的習慣是使用 rebase
    • git checkout helpme
    • git rebase master
    修完 conflict 再 merge 回 master