俗一吧,也總結一下,程序員,代碼說話。
發起了一個互聯網公司技術選型的調查
想知道國內互聯網公司都在用什么時髦或靠譜的技術,服務,開源項目嗎? 這里給出你結果,很有代表性的,值得去借鑒,少走彎路。
編程語言PK台
社區里各種語言之爭從來不絕,要想聽一些理性的語言分析,可以到這里看看,希望大家發表專業客觀的評價,以便幫助別人。
代碼潔癖練習
每個程序員都希望自己的代碼干凈整潔,可以來做一下 對象健身操,我根據此方案做了兩個練習。
80行實現的中文分詞算法
80行實現的中文分詞算法,中英文都支持,還附帶測試,可直接使用搜狗詞庫,實現原理是正向最大匹配,沒有學習功能。
100多行寫了個數據庫
名字叫WawaDB,一個純文本的試驗性數據庫,只有100多行,還帶測試,目的是用來存日志,用二分查找實現了索引。
- 寫入性能:寫入300萬條數據,每條數據54個字符,用時2分51秒
- 讀取性能:在60萬條數據里按條件找96條數據需要1.3秒,(不知道為啥性能這么差)
70行實現的javascript詞法分析器(未完善)
代碼,可直接測試,有一些包含javascript正則的輸入目前解析還有問題,龍書太難,正則那部分看了幾遍都沒理解透徹。
100行寫了個博客程序
小天天博客,純前端實現,比jekyll還簡單,可直接托管在github上,用程序員最喜歡的Markdown格式寫博客,這篇博客就是正在用Vim寫Markdown,完了就會發布到用這個博客程序搭建的huhao.me上。
100行寫了個類似Backbone的前端MVC框架
演示在這里,代碼在這里,主要是實現了路由的功能,然后Model,View,Control都支持提供了一個命名空間,主要是方便組織代碼。
由於新浪微博升級API,通過關鍵詞搜索微博的功能不能直接調用了,所以Demo里部分功能已經不能用了。
70行實現的日志分析腳本
代碼,可直接對文本日至進行分組和排序功能,完了輸出結果粘貼到excel里就可以直接生成圖表,對於排查一些生產環境問題有很大的作用。
大腿網,你懂得
代碼, 之前寫一個分享禮物的網站曬禮物,然后把它開源了。主要功能就是定時掃描微博上包含指定關鍵詞的圖片,然后以很俗的瀑布流的方式展示出來。
后來又有人改造出了其它語言的版本:
前端的UI自動化測試框架-未完善
代碼, 網頁UI測試因為好多操作是異步的,所以比較難測試。我用老着的jscex,DOMSubtreeModified和iframe寫了個UI自動化測試的框架,對Backbone Todo進行了測試,完全OK,甚至對公司網站進行登陸,添加,刪除數據等操作都可以測試。
不過目前還拿不出手,還需要時間去完善一下,不過思路和方向是可以的。
Python項目初始化模版
代碼, 好的開始是成功的一半,如果要寫一個新的Python項目或模塊,可以從這個項目開始。本項目參考了很多github上比較規范的Python項目,從測試,文件安排等方面都比較科學。
linux的性能計數器
玩過windows的同學肯定對Windows的性能計數器深有體會,一些生產環境的疑難問題經常可以通過計數器來進行一些診斷排查,但linux卻沒有統一的性能計數器API。
今年為了排查一些生產環境問題,我用python寫了一個性能計數器組件,包含了客戶端和服務端,使用起來非常簡單,只需一行代碼,然后一個計數器收集中心對這些計數器進行收集,展示,以及根據一定規則向開發人員和運維人員發送報警。
目前該項目還未開源,在內部使用,大家要想解決這類的問題,可以使用開源的pystatsd和Graphite,很好用。
基於gevent的純異步高性能雙向通信框架
代碼,HTTP雖好卻不支持雙向通信,Websocket支持雙向通信且沒有request,response這種語義,zeroMQ有多種通信模式卻比較復雜,我這個綜合了這些通信框架的優點,總共代碼才200多行,出了問題也很好排查,大家也可以很輕松的擴展。
目前還是使用UDP,不能傳輸大數據,要用TCP的話會復雜很多。
為flake8修復了git hooks不能使用的Bug
flake8綜合了pep8,PyFlakes,Ned's McCabe script三個代碼檢查工具,對有潔癖的Pythoner很有幫助,但是它的git hooks卻一直不能用了,給作者提交了好幾次pull request后,升級后還是問題,索性我自己維護一個版本吧。
現在我的新的python項目在git commit的時候都會自動進行flake8的檢查,保持了一致的代碼風格。
前后端可同時擴展的web框架
代碼, 目前文檔還不完善,但主要功能是實現了一個大網站的模塊化。一個網站由很多功能組成,每個功能都由一組web api和前端js,css,html等組成,我使用web.py,bootstrap,seajs等實現了一個前后端可同時擴展的web框架, web api由web.py生成,前端的各種模版,js,樣式都由seajs來按需異步加載。
這樣大家可以共同完成一個有很多功能的大網站,每個功能可以獨立的開發,測試,包括前端和后端,都是獨立的。最后只要把各自的代碼放到一個子目錄里整個網站就有各種功能了,而且整體風格還是統一的。
自動生成數據庫操作和RESTFull API的業務實體基類
代碼, 用Sqlalchemy做的,你只要聲明一個實體的字段列表,然后就可以自動生成數據庫操作和前端的web api,這樣做一個數據驅動的應用,簡直是方便極了。
Backbone的Todo demo是用HTML5 Storage存儲數據的,我用這個框架只需要寫不到10行代碼就可以讓前端只修改一行代碼,而數據全部存取在Mysql里了。
演示和文檔目前還有待完善。
一個通用的登陸組件
代碼, 實現了用戶注冊,登陸,session管理,而且包含了使用qq,weibo登陸的功能,如果要做內部工具,基本不需要考慮用戶注冊和用戶登陸了。
代碼還需進一步整理。
40行的通用的oAuth2.0客戶端組件
代碼,目前測試dnspod,qq,weibo的oauth登陸均無壓力。
世界末日倒計時留言版
演示, 代碼,這其實只是一個我的web框架的demo,為了演示我的框架即可以使用seajs,也可以使用requirejs,沒想到很多人在世界末日前留言,呵呵。
80后小學語文課本
為80后同學收集整理了80后小學語文課本,並做了個網站,懷舊的同學可以翻翻。
蛙蛙生詞本
記錄生詞用的
我的筆記本
記錄一些常用信息,可作為自己的瀏覽器首頁
javascript事件管理器
為了處理一些異步工作流開發了的一個小組件,現在看起來有些搓。
Javascript前端Router
小玩具。
javascript indexof的實現
算法小練習
測試支持HTTP持久連接的客戶端和服務端
測了半天最終決定使用requests和gevent.pywsgi
找出arr數組中第k個最小元素
算法小練習
找出重復代碼-未完成
每個人都不想自己的項目里有重復代碼,我想寫一個小工具來找出項目里重復和相似的代碼,但目前還沒有完成,需要一些詞法分析的理論,現在還在構思中,以前的思路有些問題。
通用的詞法分析器
先做完這個項目,然后找出重復代碼的項目才能完成,目前這個詞法分析器支持類c語言包括c,c++,c#,javascript等語言的詞法分析,已經python的詞法分析,當然,通用的詞法分析器是不存在的,所以這個詞法分析器不是精確的實現,只是為了進行簡單的文本分割。
運維輔助工具
寫了個內部使用的運維輔助工具,可以通過命令行或web界面對遠程機器上的服務進行代碼升級,依賴更新,代碼備份/回滾,啟動/停止/重啟,日志察看等。
目前還沒開源,如果在公司內部能存活下來才能證明它的價值,其實只是寫了一些shell腳本,然后通過一個agent來執行。
學寫seajs
花了幾十個小時把seajs的所有文檔都看完了,現在基本我的任何一個前端項目都會使用seajs來組織代碼。
學習unittest和mock
花時間學習了python下的單元測試,主要是內置模塊unittest和mock,第一次改變了對mock的看法,python的mock真是太NB了。
現在一些新項目也逐漸主動的寫下單元測試,我甚至基於git hook寫了一個CI工具,我的python項目一push代碼,然后那個工具就會自動拉下來代碼,執行所有的單元測試,並顯示測試報告,后來被gitlab-CI所替代。
給公司非技術部門培訓了python入門
總結了如何編寫高質量的Python項目
還需持續修改
總結了如何規范的寫一個前端項目
還需要繼續總結
總結了git的用法
總結了python基礎設施建設-討論稿
在微博上請教了90多個問題
其它
睡前聽評書,今年聽了以下幾部
- 張廣泰回家
- 丑娘娘
- 張雙喜抓妖
- 袁鵬飛講中國歷史
- 袁鵬飛講世界歷史
看書沒看幾本
- MongoDb權威指南:后半部分沒看
- Javascript語言精粹: 看了兩遍,還得再看幾遍
- Python Cookie Book: 沒看完呢,收獲很大
- 程序員雜志合訂本:仔細看了下《架構師接龍》,印象比較深
- 一本攝影書:看完了
- 余華的《活着》和《兄弟》
- 初中英語單詞:背到G了
買了相機(550d+50/1.8+17-50/2.8),開始學學攝影,拍了一些照片放圖蟲了。
最后感謝下github,往年每年也折騰很多東西,但都在自己電腦上,有的甚至丟了,現在有了github,可以把很多小東西發上去和大家交流。