1. 程式人生 > >程式設計師知識點及工具彙總

程式設計師知識點及工具彙總

技術站點

Hacker News:非常棒的針對程式設計的連結聚合網站
Programming reddit:同上
MSDN:微軟相關的官方技術集中地,主要是文件類
infoq:企業級應用,關注軟體開發領域
OSChina:開源技術社群,開源方面做的不錯哦
cnblogs,51cto,csdn:常見的技術社群,各有專長
stackoverflow:IT技術問答網站
GitHub:全球最大的原始碼管理平臺,很多知名開源專案都在上面,如Linux核心,
OpenStack等免費的it電子書:http://it-ebooks.info/
DevStore:開發者服務商店

不錯的書籍

人件
人月神話
程式碼大全2
計算機程式設計藝術
程式設計師的自我修養
程式設計師修煉之道
高效能程式設計師的修煉(成為一名傑出的程式設計師其實跟寫程式碼沒有太大關係)
深入理解計算機系統
軟體隨想錄
演算法導論(麻省理工學院出版社)
離線數學及其應用
設計模式
程式設計之美
黑客與畫家
程式設計珠璣
C++ Prime
Effective C++
TCP/IP詳解
Unix 程式設計藝術
《精神分析引論》弗洛伊德
搞定:無壓力工作的藝術

平臺工具(都是開源的好東東哦)

Redmine/Trac:專案管理平臺
Jenkins/Jira(非開源):持續整合系統(Apache Continuum,這個是Apache下的CI系統,還沒來得及研究)
Sonar:程式碼質量管理平臺
git,svn:原始碼版本控制系統
GitLib/Gitorious:構建自己的GitHub伺服器
gitbook:https://www.gitbook.io/寫書的好東西,當然用來寫文件也很不錯的
Travis-ci:開源專案持續整合必備,和GitHub相結合,https://travis-ci.org/
開源測試工具、社群(Selenium、OpenQA.org)
Puppet:一個自動管理引擎,可以適用於Linux、Unix以及Windows平臺。所謂配置管理系統,就是管理機器裡面諸如檔案、使用者、程序、軟體包這些資源。無論是管理1臺,還是上萬臺機器Puppet都能輕鬆搞定。
Nagios:系統狀態監控報警,還有個Icinga(完全相容nagios所有的外掛,工作原理,配置檔案以及方法,幾乎一模一樣。配置簡單,功能強大)
Ganglia:分散式監控系統
fleet:分散式init系統

爬蟲相關(好玩的工具)
Phantomjs
berserkJS(基於Phantomjs的改進版本)
SlimerJS
CasperJS
selenium

Web伺服器效能/壓力測試工具/負載均衡器

http_load: 程式非常小,解壓後也不到100K
webbench: 是Linux下的一個網站壓力測試工具,最多可以模擬3萬個併發連線去測試網站的負載能力
ab: ab是apache自帶的一款功能強大的測試工具
Siege: 一款開源的壓力測試工具,可以根據配置對一個WEB站點進行多使用者的併發訪問,記錄每個使用者所有請求過程的相應時間,並在一定數量的併發訪問下重複進行。
squid(前端快取),nginx(負載),nodejs(沒錯它也可以,自己寫點程式碼就能實現高效能的負載均衡器):常用的負載均衡器
Piwik:開源網站訪問量統計系統
ClickHeat:開源的網站點選情況熱力圖
HAProxy:高效能TCP /HTTP負載均衡器
ElasticSearch:搜尋引擎基於Lucene
Page Speed SDK和YSLOW
HAR Viewer: HAR分析工具
protractor:E2E(end to end)自動化測試工具

Web前端相關

GRUNT: js task runner
Sea.js: js模組化
knockout.js:MVVM開發前臺,繫結技術
Angular.js: 使用超動感HTML & JS開發WEB應用!
Highcharts.js,Flot:常用的Web圖表外掛
Raw:非常不錯的一款高階資料視覺化工具
Rickshaw:時序圖示庫,可用於構建實時圖表
JavaScript InfoVis Toolkit:另一款Web資料視覺化外掛
Pdf.js,在html中展現pdf
ACE,CodeMirror:Html程式碼編輯器(ACE甚好啊)
NProcess:絢麗的載入進度條
impress.js:讓你製作出令人眩目的內容展示效果(類似的還有reveal)
Threejs:3DWeb庫
Hightopo:基於Html5的2D、3D視覺化UI庫
jQuery.dataTables.js:高度靈活的表格外掛
Raphaël:js,canvas繪相簿,後來發現百度指數的圖形就是用它繪出來的
director.js:js路由模組,前端路由,Nodejs後端路由等,適合構造單頁應用
pace.js:頁面載入進度條
bower:Web包管理器
jsnice:有趣的js反編譯工具,猜壓縮後的變數名 http://www.jsnice.org/
D3.js: 是一個基於JavaScript資料展示庫(類似的還有P5.js)
Zepto.js:移動端替代jQuery的東東,當然也可以使用jquery-mobile.
UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer
前端UI設計師必去的幾個網站:Dribbble,awwwards,unmatchedstyle,UIMaker
Mozilla 開發者中心:https://developer.mozilla.org/en-US/
圖示資源:IcoMoon(我的最愛),Themify Icons,FreePik,Glyphiconsart
Dialog:非常漂亮的對話方塊
AdminLTE:github上的一個開源專案,基於Boostrap3的後臺管理頁面框架
Respond.js:讓不懂愛的IE6-8支援響應式設計
require.js: js模組載入庫
select2:比chosen具有更多特性的選擇框替代庫
AngularUI:整合angular.js的UI庫
normalize.css: 採用了現代化標準讓各瀏覽器渲染出的html保持一致的庫
CreateJS:Html5遊戲引擎Less,Compass:簡化CSS開發
emojify.js:用於自動識別網頁上的Emoji文字並將其顯示為影象
simditor:一個不錯的開源的html編輯器,簡潔高效
Sencha: 基於html5的移動端開發框架
SuperScrollorama+TweenMax+skrollr:打造超酷的視差滾動效果網頁動畫
jquery-smooth-scroll:同上,平滑滾動外掛
Animate.css:實現了各種動畫效果的css庫
Emmet:前端工程師必備,ZenCode的前身
MagicDraw:Uml圖工具

大資料處理/資料分析/分散式工具

Hadoop:分散式的檔案系統,結合其MapReduce程式設計模型可以用來做海量資料的批處理(Hive,Pig,HBase啥的就不說了),值得介紹的是Cloudera的Hadoop分支CDH5,基於YARN MRv2集成了Spark可直接用於生產環境的Hadoop,對於企業快速構建資料倉庫非常有用。
Ceph:Linux分散式檔案系統(特點:無中心)
Storm:實時流資料處理,可以看下IBM的一篇介紹 (還有個Yahoo的S4,也是做流資料處理的)
Spark:大規模流式資料處理(可以應付企業中常見的三種資料處理場景:複雜的批量資料處理(batch data processing);基於歷史資料的互動式查詢(interactive query);基於實時資料流的資料處理(streaming data processing)),CSND有篇文章介紹的不錯
Spark Streaming:基於Spark的實時計算框架
Tachyon:分散式記憶體檔案系統
Mesos:計算框架一個叢集管理器,提供了有效的、跨分散式應用或框架的資源隔離和共享Impala:新一代開源大資料分析引擎,提供Sql語義,比Hive強在速度上
SNAPPY:快速的資料壓縮系統,適用於Hadoop生態系統中
Kafka:高吞吐量的分散式訊息佇列系統
ActiveMQ:是Apache出品,最流行的,能力強勁的開源訊息匯流排
MQTT:Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分
RabbitMQ:記得OpenStack就是用的這個東西吧
ZeroMQ:宣稱是將分散式計算變得更簡單,是個分散式訊息佇列,可以看下雲風的一篇文章的介紹開源的日誌收集系統:scribe、chukwa、kafka、flume。這有一篇對比文章
Zookeeper:可靠的分散式協調的開源專案
Databus:LinkedIn 實時低延遲資料抓取系統
資料來源獲取:Flume、Google Refine、Needlebase、ScraperWiki、BloomReach
序列化技術:JSON、BSON、Thrift、Avro、Google Protocol Buffers
NoSql:Apache Hadoop、Apache Casandra、MongoDB、Apache CouchDB、Redis、BigTable、HBase、Hypertable、Voldemort、Neo4j
MapReduce相關:Hive、Pig、Cascading、Cascalog、mrjob、Caffeine、S4、MapR、Acunu、Flume、Kafka、Azkaban、Oozie、Greenplum
資料處理:R、Yahoo! Pipes、Mechanical Turk、Solr/ Lucene、ElasticSearch、Datameer、Bigsheets、TinkerpopNLP自然語言處理:Natural Language Toolkit、Apache OpenNLP、Boilerpipe、OpenCalais
機器學習:WEKA、Mahout、scikits.learn、SkyTree
視覺化技術:GraphViz、Processing、Protovis、Google Fusion Tables、Tableau、Highcharts、EChats(百度的還不錯)、Raphaël.js
Kettle:開源的ETL工具
Pentaho:以工作流為核心的開源BI系統
Mondrian:開源的Rolap伺服器
Oozie:開源hadoop的工作流排程引擎
開源的資料分析視覺化工具:Weka、Orange、KNIME
Cobar:阿里巴巴的MySql分散式中介軟體

C & C++

Thrift:用來進行可擴充套件且跨語言的服務的開發(類似的還有個Avro,Google protobuf)。
libevent:是一個事件觸發的網路庫,適用於windows、linux、bsd等多種平臺,內部使用select、epoll、kqueue等系統呼叫管理事件機制。(對了還有個libev呢)
Boost:不多說了,準C++標準庫
Ptmalloc\Valgrind\Purify
NetworkServer架構:acceptor->dispatcher->worker(這個不算工具哦)
breakpad:崩潰轉儲和分析模組,很多crashreport會用到
UI介面相關:MFC、BCG和QT這類的就不說了,高階一點的還有Html和DirectUI技術:libcef(基於chrome核心的,想想使用html5開發頁面,還真有點小激動呢)、HtmlLayout、Duilib、Bolt,非C++的,還有node-webkit也不錯,集成了node和webkit核心。

遊戲開發相關

MINA:使用Java開發手遊和頁遊伺服器(對了還有Netty,也很猛的,都是基於NIO的)
HP-Socket:見有有些頁遊伺服器使用這個構建的
雲風的技術部落格:http://blog.codingnow.com/
OGRE:大名鼎鼎的3D圖形渲染引擎
OpenVDB:夢工廠C++的特效庫,開源的
cocos2d:跨平臺2D遊戲引擎
unity3d:跨平臺3D遊戲引擎,很火的哦
Nodejs:也有不少使用它來開發手遊和也有伺服器(網易的Pomelo就是哦)

日誌聚合,分散式日誌收集

Scribe:Facebook的(nodejs + scribe + inotify 同步日誌)
logstash:強大的日誌收集系統,可以基於logstash+kibana+elasticsearch+redis開發強大的日誌分析平臺
log.io: nodejs開發的實時日誌收集系統

RTP,實時傳輸協議與音視訊

RTP,RTCP,RTSP-> librtp,JRTPLIB(遵循了RFC1889標準)
環形緩衝區,實時資料傳輸用
SDL,ffmpeg,live555,Speex
Red5:用Java開發開源的Flash流媒體伺服器。它支援:把音訊(MP3)和視訊(FLV)轉換成播放流; 錄製客戶端播放流(只支援FLV);共享物件;現場直播流釋出;遠端呼叫。

Python

Eric,Eclipse+pydev,比較不錯的Python IDE
PyWin:Win32 api程式設計包
numpy:科學計算包,主要用來處理大型矩陣計算等,此外還有SciPy,Matplotlib
GUI相關:PyQt,PyQwt
supervisor:程序監控工具

Java相關

常用的IDE:IntelliJ IDEA,Eclipse,Netbeans
Web開發相關:Tomcat、Resin、Jetty、WebLogic等,常用的元件Struts,Spring
HibernateNetty: 非同步事件驅動網路應用程式設計框架,用於高併發網路程式設計比較好(NIO框架)
MINA:簡單地開發高效能和高可靠性的網路應用程式(也是個NIO框架),不少手遊服務端是用它開發的
jOOQ:java Orm框架Activiti:工作流引擎,類似的還有jBPM、Snaker
Perfuse:是一個使用者介面包用來把有結構與無結構資料以具有互動性的視覺化圖形展示出來.
Gephi:複雜網路分析軟體, 其主要用於各種網路和複雜系統,動態和分層圖的互動視覺化與探測開源工具
Nutch:知名的爬蟲專案,hadoop就是從這個專案中發展出來的
web-harvest:Web資料提取工具
POM工具:Maven+ArtifactoryNetflix
Curator:Netflix公司開源的一個Zookeeper client library,用於簡化Zookeeper客戶端程式設計
Akka:一款基於actor模型實現的 併發處理框架
EclEmma:覆蓋測試工具

.net相關

Xilium.CefGlue:基於CEF框架的.NET封裝,基於.NET開發Chrome核心瀏覽器
CefSharp:同上,有一款WebKit的封裝,C#和Js互動會更簡單
netz:免費的 .NET 可執行檔案壓縮工具
SmartAssembly:變態的.net程式碼優化混淆工具
NETDeob0:.net反混淆工具,真是魔高一尺道高一丈啊(還有個de4dot,在GitHub上,都是開源的)
ILMerge:將所有引用的DLL和exe檔案打成一個exe檔案
ILSpy:開源.net程式反編譯工具
Javascript.NET:很不錯的js執行引擎,對v8做了封裝
NPOI: Excel操作
DotRAS:遠端訪問服務的模組
WinHtmlEditor: Winform下的html編輯器
SmartThreadPool:使用C#實現的,帶高階特性的執行緒池
Snoop: WPF Spy Utility
Autofac: 輕量級IoC框架
HtmlAgilityPack:Html解析利器
Quartz.NET:Job排程
HttpLib:@CodePlex,簡化http請求
SuperSocket:簡化Socket操作,基於他的還有個SuperWebSocket,可以開發獨立的WebSocket伺服器了
DocX:未安裝Office的情況下操作Word檔案
Dapper:輕量級的ORM類,效能不錯
HubbleDotNet:支援接入資料庫的全文搜尋系統
fastJSON:@CodeProject,高效能的json序列化類
ZXing.NET:@CodePlex,QR,條形碼相關
Nancy:輕量級Http伺服器,做個小型的Web應用可以擺脫IIS嘍(Nancy.Viewengines.Razor,可以加入Razor引擎)
AntiXSS:微軟的XSS防禦庫Microsoft Web Protection
LibraryJint:JavaScript直譯器
CS-Script:將C#程式碼檔案作為指令碼執行
Jexus:Linux下 高效能、易用、免費的ASP.NET伺服器
Clay:將dynamic發揮的更加靈活,像寫js一樣寫C#
DynamicJSON:不必定義資料模型獲取json資料
Antlr:開源的語法分析器(歸到C#不太合適,其他語言也可以去用)
SharpPcap:C#版的WinPcap呼叫端,牛逼的網路包分析庫(自帶PacketNotNet用於包協議分析)
Roslyn:C#,VB編譯器
ImageResizer: 服務端自由控制圖片大小,真乃神器也,對手機端傳小圖,PC端傳大圖,CMS用它很方便
UI相關:DevExpress, Fluent(Office 07風格), mui(Modern UI for WPF)
NetSparkle:應用自動更新元件
ConfuserEx: 開源.net混淆工具
ServiceStack: 開源高效能Web服務框架,可用於構建高效能的REST服務Expression
Evaluator:Eval for C#,處理字串表示式
http://nugetmusthaves.com/

常用工具

Fiddler:非常好用的Web前端除錯工具,當然是針對底層http協議的,一般情況使用Chrome等自帶的除錯工具也足夠了,特殊情況還得用它去處理
wireshark:知名的網路資料包分析工具
PowerCmd:替代Windows Cmd的利器
RegexBuddy:強大的正則表示式測試工具
Soure Insight:原始碼閱讀神器
SublimeText:程式設計師最愛的編輯器
Database.NET:一個通用的關係型資料庫客戶端,基於.NET 4.0開發的,做簡單的處理還是蠻方便的
Navicat Premium:支援MySql、PostgreSQL、Oracle、Sqlite和SQL Server的客戶端,通用性上不如Database.NET,但效能方面比Database.NET好很多,自帶備份功能也用於資料庫定時備份。
Synergy : 區域網內一套鍵盤滑鼠控制多臺電腦
DameWare:遠端協助工具集(我在公司主要控制大螢幕用)
Radmin: 遠端控制工具,用了一段時間的
DameWare,還要破解,對Win7支援的不好,還是發現這個好用
Listary:能極大幅度提高你 Windows 檔案瀏覽與搜尋速度效率的「超級神器」
Clover:給資源管理器加上多標籤
WinLaunch:模擬Mac OS的Launch工具
Fritzing:繪製電路圖
LICEcap:gif教程製作git,
svn:版本控制系統Enigma Virtual Box(將exe,dll等封裝成一個可執行程式)
Open DBDiff(針對SqlServer)資料庫同步
SymmetricDS:資料庫同步
BIEE,Infomatica,SPSS,weka,R語言:資料分析
CodeSmith,LightSwitch:程式碼生成
Pandoc:Markdown轉換工具,出書用的。以前玩過docbook,不過現在還是Markdown盛行啊。
Window Magnet[Mac]:增強Mac視窗管理功能,想Win7一樣具有視窗拖放到螢幕邊緣自動調整的功能
log explorer:檢視SqlServer日誌dependency
walker:查詢Windows應用程式dll依賴項
Shairport4w:將iPhone,iPad,iPod上的音訊通過AirPlay協議傳輸到PC上
ngrok:內網穿透工具Axure:快速原型製作工具,還有個線上作圖的工具國內的一個創業團隊做的,用著很不錯http://www.processon.com
tinyproxy:(Linux)小型的代理伺服器支援http和https協議EaseUS Partition
Master:超級簡單的分割槽調整工具,速度還是蠻快的,C盤不夠用了就用它從D盤劃點空間吧,不用重灌系統這麼折騰哦。
CheatEngine:玩遊戲修改記憶體值必備神器(記得我在玩軒轅劍6的時候就用的它,超級方便呢)
ApkIDE:Android反編譯神器翻、牆工具(自|由|門、天行瀏覽器)
設計工具:Sketch、OmniGraffle
MindManger:思維導圖


From: http://loftor.com/archives/good-for-manong.html