2013年3月14日 星期四

DropBox 公司的福利

dropbox
picture from techfaster

最近雲端儲存市場,多出了Copy這家來跟DropBox搶生意,正在看的時候,發現DropBox的工作機會裡,福利與津貼那塊寫得相當有趣,於是想說翻一下供大家參考,反正很短XD

前面的介紹、願景啥的我就跳過了

Benefits & perks 福利與津貼

  • 可以自己設定自己DropBox的容量
  • 免費的早、午、晚餐,還有吃不完的點心與飲料
  • 辦公室對面就是舊金山巨人隊的球場
  • 真正的彈性工時
  • 18天的帶薪休假與11個帶薪節日
  • 如果你生病了,只管待在家讓病好起來
  • 健身房與通勤補助,在舊金山有DropBox專用交通車可搭
  • 401K(美國的退休福利計畫)
  • 視力、牙齒、生活與健康的保險
  • 參加樂團!!練團室有完整的設備,包含鼓、音控與放大器(AMP)等
  • 威士忌星期五
  • 遊戲!!星海爭霸、專用的遊戲室、DDR跳舞機(是的,真的機器)、乒乓球、競技場,還有更多

台灣的高科技公司,學學吧XD

2013年3月6日 星期三

[python] md5 與數字 hash

python新手上路,寫點東西記錄一下以免自己忘記。

這次剛好有個需求是需要給金流一個流水號,但是由於cassandra設計上沒辦法像mssql有@@IDENTITY這種方便的取識別值方式,所以只好自己想辦法了,原本想說要找zookeeper或是snowflake這些分散式系統取流水號的方式,但是因為時間因素沒辦法研究這些東西,只好先想個方法硬上。

由於spec上的規格是九位的數字,所以研究了一下,決定將key值拿來md5後的hash轉成int,再取九碼出來(原本會是大約38~40位的數字),原則上在短時間內是不會遇到重複的情況,然後只要每次產生數字hash後,先確認cassandra內有沒有這個number hash,沒有的話再使用,有的話就重生一個;由於理論上這個number hash會發生一次重複的時間應該遠比cassandra最終同步的時間來的長,所以會遇到丟出重複流水號的機會可說是微乎其微,在有更好的解法之前這個方式應該可以加減用。

語法很簡單,大概就是這樣
import hashlib
def md5(istr):
    return hashlib.md5(istr).hexdigest()

def randNum(istr):
    return str(int(md5(istr),16))[:9]
print md5('test')
//098f6bcd4621d373cade4e832627b4f6
print randNum('test')
//1270773689

跑起來結果就是這樣,不過下圖測試時我是取十位XD

Python_hash

小小記錄一下心得。

update一下,如果要取一個不到20位的數字,可以使用這個方式,str(uuid.uuid4().get_time())會回傳一個約19位的數字字串,我不曉得他會不會長到20,不過看來是可以用的,而且又不是亂數,剛好符合另一個需求,可賀可喜。

a=uuid.uuid4()
print(a)
//38015b71-d95a-4bd4-a1d2-f1d30bb165d2
print str(a.get_time())[:20]
//852545210989763441

2013年3月1日 星期五

Python on Visual Studio

Python for VS

最近換了新公司,主要需要用Python開發,所以需要將開發環境建起來,之前寫C#,IDE一直是用Visual Studio,但是Python要用什麼呢 ? 因為我記性不好,指令背不起來,所以蠻需要開發工具的intellisense協助,在網路上找了一下大家的推薦,Python [email protected]What IDE to use for Python? 這兩個連結內都介紹了不少,我同事分別是用 vim 與 PyCharm 來開發,原本我也打算用PyCharm,後來發現要錢,所以最後決定用這個 Python Tools for Visual Studio ,我安裝的時候是1.5版。