我的2013:在程序的路上不斷求索

前言

每年到這個時候,總需要回顧過去,展望未來。2013這一年學到了很多東西,收貨了很多,也成長了很多。主要在技術和生活上面,讓自己有了記錄一下的衝動。

技術

在技術上面,這一年接觸了很多新的東西,讓自己眼界開闊不少,同時也開始自我提升,瘋狂的在github上面玩開源,只是很多都慘不忍睹。

Openresty

今年最開始接觸的新東西就是openresty,一個集成nginx的web應用開發框架。

最開始,我們項目的架構採用的是前端nginx做proxy,然後將請求反向代理到後端python tornado的方式實現的。但是隨着壓力的增加以及一些新功能的上線,這套架構開始顯現其侷限性,首當其衝的在於慢,雖然可以通過增加tornado進程的方式來進行負載均衡處理,但我總覺得不是長久之計。

同時,隨着業務邏輯的複雜,一些操作需要多個service協同完成,然後在返回給用戶,而在什麼地方組織多個service的數據以及邏輯也成了我們的一個難題。

鑑於上述幾個原因,我開始研究openresty,因爲之前有3年多lua開發的經驗,所以非常容易上手。同時,通過研讀openresty的一整套源碼,真正的瞭解了nginx以及之上的openresty的運行機制。可以這麼說,這段時間我從一個連nginx配置都不會寫的小白程序員一躍成爲了名義上精通nginx開發的屌絲程序員。

自然,我開始在項目中推廣openresty,這也得到了大家的支持,現在雖然我們很多代碼仍然是使用python在編寫,但是對於很多高性能模塊我們已經逐步轉向了openresty。

在使用openresty的時候,還提交了幾個bug,這點頗爲自豪,同時也寫了一些東西,譬如 Introduction To Nginx

Go

接觸go純屬偶然,在上半年終於完結了一個持續時間特長的項目之後,整個組的童鞋都陷於一個無事可幹的真空期,也就是在這段時間,第一次學習了go,立刻就被它的簡單強大所吸引,尤其是在服務器併發編程方面,那可是非常的強悍。

於是,我帶着兩個完全不懂go的童鞋開始了我們推送服務器的編程之旅。最開始的時候,因爲兩位童鞋只會python,爲了儘快的出功能,一些後臺的服務採用tornado搭建,而我用go寫了掛載大量長連接的comet服務。

這裏不得不說go開發服務的快捷,在goroutine以及channel的機制下面,沒有了層層的callback,沒有了死鎖,我只用了3天就弄出了comet,而且能持續穩定運行。

鑑於用go成功開發了comet,我讓另外兩個童鞋也開始用go重構先前寫的python邏輯,進展也很順利。

不過對於我來說,go現在最大的一個問題在於內存佔用,go現在默認的stack大小爲8k,對於需要掛載百萬連接的comet來說,內存開銷實在太大,雖然現在機器的配置完全不需要我擔心,但總覺得有點不爽。不過如果優化,也是後續的事情了。

今年,對於我來說,竟然吃了兩次螃蟹,第一個就是openresty,而第二個就是go,而且很幸運的是都能在項目中實施。

Libtnet

今年,我真正的開始了一個算是比較大的開源項目:libtnet,它是一個參考tornado的c++高性能網絡庫。之所以寫libtnet,主要是爲了後續能用到comet上面,同時也讓我自己對多年的網絡編程做一個總結。

以前總說自己精通網絡編程啥啥的,其實心裏面也知道是用來忽悠的,畢竟精通這個詞沒多少年的沉澱是不可能的。但是通過寫libtnet,不說精通,至少讓我又對很多網絡編程的東西瞭解了。

不過libtnet的問題在於使用c++進行開發,同時大量採用function + bind的開發模式,對於組內的童鞋來說理解上面還比較困難,如果在項目中實施很有可能面臨只有我一個人維護的窘境。

移動開發

今年沒事的時候也涉獵了一些移動開發的方面,包括android以及ios。在android上面開發了一些小應用,只是都是自娛自樂。在ios上面使用cocos2d-x開發了一個小遊戲demon,也當是消遣了。

不過在明年準備好好的嘗試一下該領域的開發。尤其是ios上面,畢竟老婆都有了土豪金了,爲了展示老公的程序員風采,再怎麼也得弄一個出來。

工作

今年在公司,我開始嘗試站着上班,不得不說這對我工作效率的提升有很大的幫助,站着上班,不光減肥,還能讓我專心工作,因爲任何的聊天瀏覽網頁都是一件很耗費力氣的事情。這裏也不得不佩服自己的毅力,每天竟然都能堅持站7,8個小時。

生活

生活上面今年最主要就是幾件事情:

  • 舉辦了婚禮
  • 老婆懷了孩子
  • 拿到駕照
  • 買了小車

可能對於我來說,明年在生活上面最大的事情就是要照顧孩子了。

總結

總之,2013過的很快,但也過的很充實,希望自己在2014裏面越來越好,能有更大的突破。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章