2013/02/24

Technical Party

在家辦過了火鍋趴、調酒趴,這次來點不一樣的 - Technical party
這個 party 以輕鬆為主,不限定於任何形式,重點是要一群人聚在一起開心啦!
辦 party 當然是離不開酒,想到電影 The Facebook,馬克在徵選人才時辦的比賽,一邊喝酒一邊寫程式就是過癮阿!



想了一些遊戲來助興,在快樂中也能學習呀~

Session 1

Smarterer 網站找自己拿手的主題,然後線上測試,rank 必需要在一定標準之前,否則就喝一杯酒。
Run1: 前 50%
Run2: 前 40%
第一輪失敗的人,必需要再玩一次,第二次還是失敗呢就再喝一杯。
Run3: 前 20%
這是個挑戰題,當參賽者有把握自己可以拿到前20%時,可以參加挑戰,一旦達到目標,其餘所有人都要喝一杯。

Session 2

我準備了常見的面試題目,輪流抽籤,以口述的方式或是在白板回答問題。一題10分鐘,台下每個人都是面試官,可以提問或是發表評論,時間到了由討論的方式決定台上的人是否通過考驗,若不通過就得喝酒。

Session 3

Lightning Talk 分享任何技術、工具、心得都可,自行準備 power point,或直接在白板上比劃。


哈~是不是很有趣!




放一些花絮照片



Lightning Talk 的部份,自己是發表了一些淺見啦 :P
  • RD的與眾不同
    • 獨立製作產品的能力
    • 自行決定生產工具/生產環境
    • 具有改變世界的原創力
  • 現階段可以做的事情
    • 善用 Evernote 讓生活更簡單
    • 寫 Blog - 用心過的東西就有價值
    • 寫 GitHub - Code reuse
  • 打造自己的品牌: Promote yourself
    • 維護 Facebook、Google+、Blog...
    • 參與社群: 技術的、創業的...
  • Open your mind: 學習->分享


每次辦 party 都可以讓賓客流露滿意的表情,真是開心呀:D

2013/02/22

快速架設 DNS - dnsmasq

在 debug 時偶爾會有一種需求,就是要假造 DNS resolve 的結果,讓一些設備能夠暫時導向我指定的 ip 去,而 bind 這一套的設定對我來說太過複雜了 ><
於是同事推薦了我這個:Dnsmasq
Dnsmasq is a lightweight, easy to configure DNS forwarder and DHCP server.
酷!一次滿足兩個願望


安裝
$ yum install dnsmasq

設定上層 DNS server
$ vim /etc/dnsmasq.resolv.conf
nameserver 8.8.8.8

自定 dns record
$ vim /etc/hosts
10.0.0.1  anything.com.tw

啟動 dnsmasq
$ /etc/init.d/dnsmasq start

搞定啦!

更多設定在 /etc/dnsmasq.conf

Google map API 經緯度與地址間的轉換

玩了一下 Google map 兩個有趣的 API

Google Geocoding API (地理編碼)

用於"經緯度"與"地址"間的轉換。例如輸入 25.047908,121.517315 可以得到台北車站的地址 100台灣台北市中正區北平西路3號
http://maps.googleapis.com/maps/api/geocode/json?latlng=25.047908,121.517315&sensor=false&language=zh-tw
反之亦可
http://maps.googleapis.com/maps/api/geocode/json?address=100台灣台北市中正區北平西路3號&sensor=false&language=zh-tw
Return 回來的格式可選 json 或 xml,經過 parse 後使用者可以根據自己需要的層級去截取,例如想要拿到城市的名字可以從 administrative_area_level_2 下手。


Google Directions API (導航)

用於"路線規劃",輸入起始點與終點,google 會幫你計算兩點間的距離,並列出該怎麼走。
台北車站 -> 台北101
http://maps.googleapis.com/maps/api/directions/json?origin=台北車站&destination=台北101&sensor=false&language=zh-tw


  • 如果想拿到中文的解析,可以在 URL 加上 "&language=zh-tw" 或是在 header 加上 "Accept-Language: zh-TW"
  • Google 有聲明這些 API 不是用來做即時服務的,比較適合查詢一次後 cache 起來,查詢的次數也有限制一天 2500 次

2013/02/20

Hash or Encrypt?

這天在公司思考一個問題...

假設每台機器都有編號,而且是以流水號的方式編排 0001, 0002, 0003 ...
要為每台機器預留一個 publish URL 像是 http://anything.com/0001/data,但又不想輕易讓其他人知道規則,例如 user 0001 可以用 http://anything.com/0002/data 拿到別人的 data。


方法一:Hash

第一想到的是把 id 經 MD5 hash,但 hash 就是有機會 collision,雖然這個機率比被雷打到還低很多,但機率這種東西就是有可能發生嘛!於是我就把所有的編號都拿去做 MD5,最後證明了沒有 collision 的問題。
MD5("0001") = 25bbdcd06c32d477f7fa1c3e4a91b032
http://anything.com/25bbdcd06c32d477f7fa1c3e4a91b032/data
是不是找不出其規則了

但又產生了另一個問題,短字串的 hash 結果很容易被彩虹表 (Rainbow table) 破解,意指先把所有 hash 結果計算出來,利用查表的方式反推原始字串,所以會有加 salt 的概念,也就是把原始字串先"處理"一下再去 hash,可能是額外加一些字串,或是反轉之類的,長度增加了可以降低被反推的機會,即使被反推回來也很難獲得原始字串。
SALT("0001") = 0a0b0c1d
MD5("0a0b0c1d") = b906c4ea093173e4c673ab6540696f0c
http://anything.com/b906c4ea093173e4c673ab6540696f0c/data
這樣子有比較複雜了吧!
salt 的方式有很多種,例如 MD5 兩次,或用其他 hash function,但要記得不能有兩個字串經過 salt 的結果是一樣的。


方法二:Encrypt

由於原始字串經過很大的變化,所以我也沒辦法驗證 collision 發生的可能性,後來決定還是改用加密法,加密法是 1 對 1 函數,沒有 collision 的問題。
DES(key: "god", plaintext: "0001") = d4f96d5da8bd0e6e
http://anything.com/d4f96d5da8bd0e6e/data

過程中比較棘手的是加密法的 變數實在太多,以 DES 來說,我用 openssl crypto library 時,要輸入 mode (cbc, ebc, cfb...)、input 又有分 64bit/128bit、是否加 padding,當想用 其他方式(pyDesOnline encrypt tool)來驗證時,竟然湊不出一樣的 ><


後記:

其實我需要的應該是一種只有自己知道的 encode/decode 方式,而且必須要是 id 加減1時,編碼結果就會變動很大,避免有心人士反推。用 encryption 是有點大材小用,但至少是 well known 的,所以各種語言都很容易找到 library,不需要自己 implement。


順便復習一下
  • Encode/Decode
    資料傳遞時的一種表達方式
    base64 encode, url encode ...
  • Encrypt/Decrypt
    以密文的方式傳遞資料,只有知道 key 的人可以解開得到明文,又分成對稱加密與非對稱加密
    AES, DES, Blowfish ...
  • Hash
    驗證資料完整性
    MD5, SHA1, CRC32

2013/02/14

台中輕鬆一日遊

過年期間同事來台中找我玩,身為台中人其實大學以後待在故鄉的時間就很少了,這次也花了不少時間做功課,安排的行程如下:
Day1:
大坑紙箱王
新社古堡拍照 (裡面東西好貴最好自己帶中餐)
輕井澤吃晚餐
望高寮喝酒看夜景 (記得注意安全不要待太晚)
Day2:
科博館看展覽
沿經國綠園道至勤美術館 (勤美術館下午兩點才開)
希臘秘密旅行吃中餐
東海校園 (路思義教堂)
東海夜市吃晚餐買名產
秋紅谷走走 (見識一下台中豪宅區)

感覺上是蠻愜意的行程,但不知道為何走到第二天就沒力了 ><




另外也整理了一些資料供大家參考,以下依推薦順序排列:

想逛街
  1. 逢甲商圈
  2. 一中街
  3. 新光三越大遠百
  4. 東海夜市
  5. 精明一街

知性旅遊
  1. 勤美術館 - 有一些戶外的裝置藝術,非常適合拍照,男女生來約會一定很有趣
  2. 美術館綠園道 - 除了可以看展覽外,綠園道上的餐廳更是台中一大特色
  3. 台中文化創意園區 - 舊的啤酒廠改建,還沒去過,不過應該就像台北的華山藝文特區吧
  4. 20號倉庫 - 位於後火車站出口,喜歡鐵道藝術的不可錯過
  5. 彩虹眷村 - 老眷村塗鴉
  6. 忠信市場 - 位於美術館附近,由老市場改造而成的藝術展場
  7. 刑務所演武場(道禾六藝文化館)
  8. 台中圖書館 - 就是新聞上有報,由台灣設計師耗資20億打造,外觀像艘軍艦
  9. 湖水岸藝術街 - 豐富公園旁,夜晚來這邊吹吹風,喝茶聊天是不錯選擇

夜景
  1. 望高寮 - 首推這邊啦,位於大度山上可以鳥瞰台中市,也是約會聖地
  2. 清水休息站 - 也是堪稱一絕,另外傍晚往台中港方向也可看夕陽
  3. 秋紅谷 - 夜晚可以來這拍攝城市高樓
  4. 靜宜後山 - 月下老人
  5. 都會公園


餐廳 (不勝枚舉,大部份還是朋友推薦)
  1. 公益路一級戰區 - 鼎王、無老鍋、輕井澤、Kiki、北沢
  2. 美術綠園道 - 核果、小義大利、安徒生童話、南瓜屋
  3. 中港路 - 希臘秘密旅行


台中好地方!

2013/02/01

第一次調酒就上手

興致一來,做什麼都特別起勁,想到住在這麼棒的地方,在家調個酒一定很有格調!

前後大概準備了半個月,我認識調酒是從『癮型人的調酒世界』開始,想必研究過調酒的人都不陌生,還沒碰過調酒的,到 google 搜尋一下也會進到這個網站。


從 6 大基酒開始買起
  • Vodka 伏特加
  • Gin 琴酒
  • Tequila 龍舌蘭
  • Rum 蘭姆酒
  • Whisky 威士忌
  • Bandy 白蘭地
外加兩款
  • Cointreau 橙皮酒
  • Absinth  苦艾酒
癮型人網站上介紹的都是在大賣場很容易買到的酒,建議多比價,因為價差真的很多!!!

調酒器具
  • 量酒器、斟酒器、shake杯、吧叉、隔冰器
  • 攪拌棒、製冰盒、冰桶、夾子、搗棒、吸管
  • 水果刀、砧板、布

杯具
  • 可林杯、曲線果汁杯、馬丁尼杯、高球杯、威士忌杯、
  • 香檳杯、紅酒杯、shot杯、公杯

癮型人在露天跟Y拍有賣場 (米絲阿樂局),一部分的東西我在那邊買的,一部分就從家裡挖出來呀~
杯子推薦去IKEA、宜得利家居買,而且不貴
益泰玻璃 Ocean Glass 這邊可以看看杯子有哪些種類

附屬品
  • 檸檬、柳橙、葡萄柚、薄荷葉、蕃茄
  • 可樂、通寧水、蘇打水、薑汁汽水、萊姆汁、紅石榴汁
  • 砂糖、鹽巴
一樣去大賣場買就可以了,通寧水我還跑去百貨公司的超市,被貴假的 ><



準備好東西,就可以開始調酒啦!

酒譜在網路上很好找,這邊就不附了,可以先從 1+1 調酒開始,就是一種基酒加一種附屬品。基本上不會太難啦,反正就調完倒一點試喝,再根據自己喜愛的口味去增減,記得幾個要點:
  • 使用哪種手法:直調法、攪拌法、Shake、果汁機混合
  • 基酒與附屬品的量與順序
  • 冰塊是調完後被濾掉,還是最後在杯子裡


家庭調酒真的很有趣,非常適合款待朋友。
話說這天慶祝我生日,喝了兩杯艾碧斯還沒倒,我自己都驚訝阿!

Party time