• [Note] Turn on/off MAC WIFI by Command line

    | /

    我的 MACbook 如果同時開放 WIFI 和 Bluetooth 時,如果離開 Bluetooth touchpad 會自動斷線。但如果這時候靠近時, Bluetooth 會怎麼樣都連不上,包括開關 Bluetooth ,感覺 Bluetooth & WIFI 會相衝。

    這時只剩下一個解法,就是把 WIFI 關掉,這時 Bluetooth 會馬上連上我的 touchpad 。

    但因為螢幕闔起來了,沒有滑鼠 or touchpad ,只剩下外接鍵盤可用。上網找了一下,發現下面的指令可以直接關掉 WIFI。

    1
    2
    3
    4
    5
    6
    $ alias wifioff='networksetup -setairportpower airport off' 
    $ alias wifion='networksetup -setairportpower airport on'
    $ wifioff
    airport is not a Wi-Fi interface. Turning off the only airport interface found: en0
    $ wifion
    airport is not a Wi-Fi interface. Turning on the only airport interface found: en0

    Reference:

  • Enable HTTPBuilder debug message

    | /

    在用 groovy & cucumber 寫 API test 時,如果發生問題只會噴個 error 的 body 而已,這樣非常難 debug 。

    而且有一些參數是設在 http header 上,如果把每個 API 的 header 都印出來,要到處塞 debug logger。如果是 https 的話,也沒辦法使用 tcpdump 來看。
    這時可以用下列方法簡單的把 logger 設定打開,就可以直接噴在營幕上了,這樣比較好 debug。

    1
    $ mvn -B integration-test -Dcucumber.options="--tags @test_only" \ -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog \ -Dorg.apache.commons.logging.simplelog.showdatetime=true \ -Dorg.apache.commons.logging.simplelog.log.org.apache.http=DEBUG

    還有其他的參數可以參考後附的文章內容。

    reference

  • Backup HipChat messages by API

    | /

    簡單的 Script 來備份 HipChat 該房間所有的 messages。
    Why? 因為我沒有 Admin 權限! 所以只好這樣幹。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/sh 
    HOST=https://{your hipchat host}
    TOKEN={token}
    ROOM={room}
    DATE={start time}
    NUMBER_OF_DAYS=410
    OUTPUT_DIR=/tmp/backup
    for i in `seq 1 $NUMBER_OF_DAYS` ;
    do
    let DATE+=86400
    let END=DATE+86400
    if [ ! -f /tmp/backup/$DATE ] ;
    then
    response=$(curl -v "$HOST/v2/room/$ROOM/history?date=$END&end-date=$DATE&reverse=true&max-results=1000&auth\_token=$TOKEN" --write-out %{http\_code} -o $OUTPUT\_DIR/$DATE) test $response -ne 200 && sleep 60;
    fi
    done

    Reference:

  • 淺談TOTP(Time-based One-time Password)

    | /

    TOTP 是利用 Application and services 上時間是一致,拿二邊共同的 key ,並且作一樣的 Hash 後,結果會產生一樣的 token,即可拿來作驗證,常被使用來作二次驗證(two-step verification)。 因為這部份的演算法是 RFC6238,所以可使用任何的 apps 來協助驗證,例如:Google Authenticator, Duo 之類的。

    怎麼實作的

    PHP 有人作好了: otphp 跟據 wikipedia 裡的 Implementation 章節中,有一段描述如何產生 token:

    1. Calculate C as the number of times TI has elapsed after T0.
    2. Compute the HMAC hash H with C as the message and K as the key (the HMAC algorithm is defined in the previous section, but also most cryptographical libraries support it). K should be passed as it is, C should be passed as a raw 64-bit unsigned integer.
    3. Take the least 4 significant bits of H and use it as an offset, O.
    4. Take 4 bytes from H starting at O bytes MSB, discard the most significant bit and store the rest as an (unsigned) 32-bit integer, I.
    5. The token is the lowest N digits of I in base 10. If the result has fewer digits than N, pad it with zeroes from the left.

    如果覺得太復雜,我挖了一下 otphp,應該在 otphp/src/OTP.php 裡面的 protected function generateOTP($input) 中有實作。

    使用

    安裝 composer require spomky-labs/otphp sample code:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php require __DIR__ . '/vendor/autoload.php'; 
    use OTPHP\TOTP;
    $totp = new TOTP( "whatup.tw@gmail.com" // The label (string) );
    $google_chart = $totp->getQrCodeUri();
    $otpCode = $totp->now();
    echo "<img src='{$google_chart}'><br/>";
    echo "Current OTP: " . $totp->now() . "<br/>\n";
    echo "Current Secret: " . $totp->getSecret() . "<br/>\n";
    echo "Verify OTP: " . $totp->verify($otpCode) . "<br/>\n";
    ?>

    到 browser 執行後會產生下面畫面:

    totp example result

    接下來你就拿出你的 Google Authenticator 來掃這個條碼,就可以新增一組新驗證碼。

    Google Authenticator 預設是 30s ,所以 30s 後,這個 OTP 產生出來的 token 應該會無法使用。如果你的 application 可以看到 secret 的話,應該會看到 app & service 的 secret 應該要一樣。 剩下的可以參考 document 說的很清楚。

    限制

    • 其實無法防止 phishing 網頁用假的頁面來騙你資料,在你輸入 token 後,壞人在 30s 之內也可以同時登入。
    • secret key 如果被人拿走,別人也同時擁有通過二次驗證的能力。
    • app & services 之間的時間一定不能差太多,所以手機不能調整時間(有人喜歡看時鐘快五分鐘)。
  • 2016 美濃彩繪大地-美濃花海

    | /

    每年過年期間,美濃在中正湖附近會出現大片的波斯菊花海。 我覺得跟荷蘭的鬱金香花海和北海道的薰衣草花海有幾分相似,一大片的花海遍佈中正湖。 再加上冬天是高雄的乾季,不太下雨且天氣也沒有北部這麼冷,是個適合全家出遊的好天氣。 在中正湖邊有一個大大的 LOVE ,搭配著客家花布的色彩和整片的波斯菊花海,有不少人在這跟 LOVE 一起合照。 不過現在花還開的不夠盛大,尚有一小部份還是還是綠色底色。 Love! 從這裡往湖的方向望去,可以看到大片的花海搭配著中正湖中的涼亭,而遠方背景中的山是人字山。 美濃中正湖旁 搭配著冬天的金色的夕陽和整片的花海,感覺和冰冷的北部完全不一樣,整個人都暖了起來。 夕陽下的美濃花海 各種顏色的波斯菊看起來非常的壯觀。 夕陽下的美濃花海 紅色的波斯菊配上紫色的稻草人別有一番風味。 夕陽下的美濃花海 好幾個月沒放風了,難得放風的潔終於可以小小的出門走走了。 難得放風的潔 過年期間如果不知道要往哪跑可以來美濃賞花海啊,適合全家大小一起來拍照!

  • Let's Encrypt 免費讓你的網站升級成 SSL ready

    | /

    Our Commitment to Protecting Your Information by Marissa Mayer, Yahoo CEO

    2013 年底時,美國方面爆出政府直接拉線路進 Yahoo 機房偷取使用者資料,所以在2014 年初時 Yahoo 宣布全面使用 SSL 連線來保護連線資料。但買一個 SSL 憑證實在是太貴了,如果一堆 domain 的話,更是負擔不起。所以在自已用的小站通常都用 self-sigh 來解決這個問題,只是使用時會一直被 Browser 靠腰說你的 SSL 是不合法的。 時至今日, Internet Security Research Group (ISRG) 組織為了網路安全,提供了免費的 SSL 申請服務 - Letsencrypt ,主要有下列幾項特色:

    • Free: Anyone who owns a domain name can use Let’s Encrypt to obtain a trusted certificate at zero cost.
    • Automatic: Software running on a web server can interact with Let’s Encrypt to painlessly obtain a certificate, securely configure it for use, and automatically take care of renewal.
    • Secure: Let’s Encrypt will serve as a platform for advancing TLS security best practices, both on the CA side and by helping site operators properly secure their servers.
    • Transparent: All certificates issued or revoked will be publicly recorded and available for anyone to inspect.
    • Open: The automatic issuance and renewal protocol will be published as an open standard that others can adopt.
    • Cooperative: Much like the underlying Internet protocols themselves, Let’s Encrypt is a joint effort to benefit the community, beyond the control of any one organization.

    這項服務在 2015/12/3 已經 Open Beta 了,任何人可以直接使用,不需申請。

    Install

    使用方法也很簡單到 github 下載 letsencrypt client 後,直接執行 ./letsencrypt-auto --help all 就可以看到所有的說明和使用方法。

    Renew

    預設的 SSL 90 天後就會過期,所以我就排個 cron 每天去跑一次。 這個 Script 會刮出所有 apache2 底下有開 443 port 的 servername 去 renew SSL。其中 --renew-by-default--agree-tos 開啟後 CLI 介面不會問東問西的選項。 [shell title=”Sample renew script”] #!/bin/sh /usr/sbin/apachectl stop /home/whatup/letsencrypt/letsencrypt-auto certonly -a standalone –renew-by-default –agree-tos `grep -ih servername /etc/apache2/sites-enabled/*|grep 44 3 | sed ‘s/:443//g’ | sed ‘s/ServerName/-d/g’ ` –email whatup.tw@gmail.com /usr/sbin/apachectl start [/shell]

    Rate Limit

    流量限制如下,自已要多加注意,要不然會被檔掉。

    • Registrations per IP is 10 registrations per 3 hour window.
    • Certificates per name is 10 certificates per 59 days.
    • Pending registrations per account is 300 per 1 week.

    Result

    看到綠色合法的 SSL Icon 就是開心! Screen Shot 2015-12-03 at 9.47.04 AM Screen Shot 2015-12-07 at 10.24.43 AM Screen Shot 2015-12-07 at 10.25.09 AM Screen Shot 2015-12-07 at 10.25.30 AM Screen Shot 2015-12-07 at 10.24.56 AM

  • [澳洲] 會有人生跑馬燈的 Skydive

    | /

    2012 年底的時候,我從像玉山一樣高度的地方往下跳,眼前除了美景之外,就是人生跑馬燈。為了完成了我其中一項夢想,每秒差不多燒了台幣100元。 跳傘高度可以分成 9000/11000/14000 英呎三種高度,當然價格也不一樣。 老爹說既然要嘗試跳傘,而且這輩子還不知道有沒有辦法再跳一次,當然要直接挑戰最高的地方往下跳。 本來我也不想買 DVD 的,但是老爹說,你不買要怎麼證明你這輩子有跳過傘。我就腦波很弱的也跟著買下去,但事後證明,如果不買 DVD 真的會後悔,要不然現在怎麼跟朋友炫耀。 而到現在,在天空中的每一秒鐘都深印在腦海裡。

    跳傘影片

    [embed]https://www.youtube.com/watch?v=t2kIQaz4mNY&feature=autoshare\[/embed\]

    在空中漂浮的當下

    跳傘當下

    在夕陽的時候往下跳,夕陽、城市、海灘都好美

    在夕陽的時候跳下,夕陽、城市、海灘都好美

    由空中往下望,腳下的城市

    城市

  • [自助蜜月旅行] 德義的二周 - 德國租車心得

    在台灣開車時總是受限於時速限制沒辦法開超過120公里,但聽說過在德國的高速公路是沒有時速限制的。當我擁有自已的車時,總是充滿著夢想有一天我可以用力的把油門踩到底,一路衝到最高時速。 蜜月時,租車這個想法一提出來後,老婆則是完全沒意見(應該不是我沒跟她說我到底要開多快),但是因為預算的關系也沒辦法開到德國的國產車 bmw 或是 benz 。另外此次的旅程又在冬天,手排車的不確定感讓我很不安心。 於是我們就開始在網路上一段找租車公司的過程。 在 ptt 的板上看到 mspc 大大可以幫忙代定 sixt 租車公司 (德意志奔馳 : 專業代訂德國租車,自駕遊行程規劃) ,當時怕自已的英文不太行,且到時如果少訂一些我想要的保險或是雪胎之類的會很麻煩,最後我就請他協助代訂。 mspc 大大也很熱心的給了一些建議和提供行前提醒的文件,這部份實在是非常的貼心。 雖然我已經開了很多年的車,但對於國外開車也只有一次的經驗,而且是在日本。所以我這次鎖定的目標是要有雪胎,全險,和自排車。全險和雪胎是因為我們全家上次在日本開車時遇到大雪,一家人被困在景點。自排車則是因為太久沒有開手排車了,又怕馬路太滑,我開不動,所以只好選擇他聰明我傻瓜的方式。

    事前準備

    • 台灣駕照
    • 台灣駕照譯本 - 備妥駕照、身分證、二吋照片兩張、申請費去監理所換即可 台灣駕照譯本
    • 護照
    • 租車公司訂單 - 我是把他全部印出來到時直接拿給租車公司
    • Garmin GPS + 德國地圖 - 這部份我是從台灣帶過去的,介面比較習慣,而且我比較相信 Garmin 的品質

    領車

    不太確定是因為我們保全險的關系,把資料拿給對方。對方確認一下還車地點和租借時間後,給我一張紙條,上面寫著車號,並且指著方向告訴我們說車子停在路邊,叫我們自已去找。 我以為這是歐洲人的浪漫,交車前都不用預先檢查哪裡有刮傷或是有沒有其他的問題。 如果沒有自備 GPS 的話,可以請服務人員幫你從德文調整成英文模式,應該導航系統會比較好用一點。

    他就這樣隨便停在路邊,而且車子超髒的

    他就這樣隨便停在路邊

    可能是小的租車所,所內空間不夠吧

    他就這樣隨便停在路邊另一個角度

    開車

    其實高速公路也不是全部沒有時速限制,通常要進入到市區前會有速限。所以只要照規定來即可,車子不要亂停,車不要開太快,遵守交通規則,其他的跟台灣沒有什麼差別。 德國人開車都很小心,即使沒有車子,速限是 60km ,所有人也是只開 60 km 。 我車子除了飯店有附免費的停車場之外,其他的全部都停在付費停車場裡。 停車場通常是預先繳費,然後將單子放在你的前玻璃上,就不會有被開單的危險。請記得一定要準備好零錢再下車,大部份好像都不吃鈔票。

    停在outlet 外面

    停在outlet 外面

    這應該是我這輩子最高時速了,旁邊還伴隨著老婆的叫聲XD

    這應該是我這輩子最高時速了

    還車

    找到還車地點後,把車子開進去,然後把鑰匙交給工作人員,還車的工作就結束了。沒人當面跟你檢查車況,也不會有人多說一句話。 不過我是把車子的前前後後都用相機拍過一輪,怕遇到什麼狀況時,還有照片可以自保。

    車子還車時就這樣隨便停

    車子還車時就這樣隨便停 過了幾個小時後,會收到一封標題為 Rücknahme FORD C-MAX 的信,是告訴你車子已經還了。而且把車子的所有狀況都列出來。 其中有幾個地方有藍點的就是有損傷的部份,不過這部份我回頭我的照片,發現車子太髒我也看不出來是否真的有問題。 不過也許是因為保全險的關系,最後也沒有被收費。

    車況文件

    車況文件 幾天後就會收到帳單。所以總共花費是 207歐 + 30 歐折價券,共 237 歐元。

    最後花費文件

    最後花費

    感想

    爽!第一次開到 184km ,只可惜沒有衝到 200km 的時速,因為 184km 車身就有點抖了。德國開車真的很方便和安全,冬天時可以前往比較冷門的地點,也不怕沒有大眾運輸工具,也不用在等車。安全方面,德國人都很守規矩,不會亂超車,也不會有人佔住超車道,這部份跟台灣比起來實在是好太多了。 如果有下次去德國的機會,我還是會想自駕遊德國!

  • [日本關西採買之旅] Day 0 國內線的商務艙?

    | /

    這次因為老婆懷孕所以取消了上次搶到超便宜的泰國曼谷威航機票,所以只好臨時計畫來大阪來消耗我的員工旅遊。但太晚買票,好像只有出發前不到一個月才開始買票,又卡在熱門的端午假期,完全訂不到機票和飯店。最後體恤老婆懷著大肚肚還要跟我出國,就買了(高貴)不貴的國泰航空的商務艙。但回程時機票還有經濟艙,還好老婆大人說沒關係,坐一次就好了,讓我不用花二倍的錢買來回機票。

    宅宅第一次不用跟人在那排隊直接 check in ,行李重量也可以掛到 30KG ,可惜的是我們去程就空箱子過去啊啊啊,為什麼不是回來是商務艙呢

    第一次不用跟人排隊直接 check in

    宅宅第一次進貴賓室,裡面有吃有喝還有休息的地方

    還送進入一次的貴賓室,對不起,我們是鄉巴老,沒來過這裡

    孕婦食量很強大,才下午三點多肚子就餓了,所以孕婦又點了一碗免費的牛肉麵填肚子

    孕婦食量很強大,才下午三點多,又可以吃一碗牛肉麵了

    也是第一次跟其他人走不同入口,而且一開放登機馬上就可以入場了,感覺身價上升百倍,臉上散放出金光

    也是第一次跟人走不同入口

    一上座就先問你要不要喝飲料,我點了一杯香檳,老婆點了一杯…..果汁,因為他除了這個其他什麼也不能喝

    一上座就先問你要不要喝飲料,我點了一杯香檳,老婆點了一杯.....水,因為他什麼也不能喝

    座位上有 USB 可以充電,但手機只放的下 Iphone 6 ,放不下我的 iphone 6 plus ,看來老舊一點的飛機沒思考到未來的人手機會跟臉一樣大

    有 USB 可以充電,但手機只放的下 Iphone 6 ,放不下我的 iphone 6 plus。

    飛機上的餐點,擺的滿好看的,但飛機餐不就哪樣嗎,份量小,且味道普通。(老婆說超難吃的)

    我的是雞肉 老婆的是牛肉

    最後用哈根大使來作個收尾,這大概是我在飛機上吃過最好吃的甜點了

    最後用哈根大使來作個收尾,還不錯的一餐 雖然位置有點小,飛日本但感覺好像在飛國內線的飛機大小和座位大小,不過至少有機票讓我到日本就好,而且老婆坐的舒服坐的滿意是最重要的。

  • [日本關西採買之旅] 大小女生的夢想 - 大阪 Hello Kitty 民宿

    | /

    雖然老婆有個大人的外表,但是內心還是完全還是個看到可愛 Hello Kitty 會尖叫的小女孩。這次去大阪的時間剛好跨過端午節連假,整個請旅行社都訂不到飯店。想想在蜜月時有用 airbnb 訂房間的結果,除了需要面交鑰匙之外,其他的感覺都還不錯。最後找了老半天,找到這家距離心齋橋只需要 5-10 分鐘,離長掘橋出口只需要五分鐘的路程的民宿。附近除了有便利商店之外,也有 24hr 的超市,馬上就有一秒鐘變日本人的感覺。 民宿網址: ♡CUTIE KITTY♡ KAWAII FAMILY HOME ♡

    整間的 hello kitty 讓女人瘋狂,男人崩潰,差點就娘娘駕到了

    其實這間 bnb 真的很方便,完全不用看到民宿主人,每天按按密碼就可以進去了。另外還有附贈無線上網分享器,讓你少租幾天的網路。我和潔只自行租了一天網路,想辦法到民宿,其他的都靠附贈的網路過生活。 房間其實可以睡最多六個人,所以二個人住真的太奢華了,除了有廚房之外,最重要的還有超大間的廁所,與住飯店裡小小間的廁所來比實在是舒適多了。

    這次是先輸入信箱密碼才找的到大門口鑰匙,像破關遊戲一樣,要一關一關的過才進的了房間門。

    這次是先輸入信箱密碼才找的到大門口鑰匙。

    打開信箱後,裡面有 Hello Kitty 的鑰匙,還有告訴你說怎麼到七樓。

    超可愛的 Hello kitty 鑰匙。

    這一臉也太興奮了吧

    老婆興奮的在門口合照

    一進來看到這個心裡充滿著 WTF ,說好的很 MAN 的鋼鐵人呢?

    一進來看到這個心裡充滿著 WTF

    地上放著跟著我們四天的 Hello Kitty 的拖鞋

    地上放著 Hello Kitty 的拖鞋

    廁所裡放著 Hello Kitty 的衛生紙,真爽,可以用大便弄髒他

    我得用  Hello Kitty 的衛生紙,真爽,可以用大便弄髒他

    到處是 Hello kitty 的抱枕

    Hello kitty 的抱枕

    Hello Kitty 的小座椅,老婆一直說他要買這個放家裡!

    Hello Kitty 的小座椅,老婆一直說他要買這個放家裡!

    房間裡我們睡的公主床,我想同樣的價位要有公主床應該有點困難

    我們睡的公主床

    如果有四個人來住,另外二個可以睡另一邊的床

    另一邊的床

    連沐浴乳都 Hello Kitty 的

    連沐浴乳都 Hello Kitty 的

    另外還有可外借的4G無線網路,和附贈的 Hello Kitty 面紙

    可外借的4G無線網路 非常推薦的民宿啊,除了很可愛之外,細節也處理的很好,地點也很好。這幾次的 Airbnb 的住房經驗,讓我越來越推薦 Airbnb ,大家可以透過我的 推薦連結 來加入在國外體驗當地人的生活哦!