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