1. 程式人生 > >Github上的幾個C++開源項目

Github上的幾個C++開源項目

eve 開發者 pda 問題 col surf view app its

??

http://www.zhihu.com/question/28341521

有人吐槽怎麽下手FreeNOS,上文檔 FreeNOS: FreeNOS Documentation
--更新--

把平時關註的一些c++相關的github的project列下,歡迎補充。

1. FreeNOS
lordsergioinspa/FreeNOS · GitHub

這是我在大學的時候,接觸完整學習的第一個開源的C++項目,當時簡直是,各種驚嘆,裏面有太多值得學習的地方。
這是一個用C++實現的微內核的操作系統,各種宏內核中的服務作為一個獨立的services在微內核中,基於消息的通信方式,這點其實跟mac內核中的mach那部分機制相似。
除了是一個操作系統的實現,另外從中也能很好的學習到OOP的設計方式,整個代碼風格特別好,完全基於面相對象,還有一些常見的設計模式,在接觸了這個開源項目之後,才了解,代碼風格,註釋,doxygen,scons,設計模式。

對於直接入手就啃Linux kernel的同學,個人覺得會門檻有點高,身體還不是特別棒的時候,直接攀登珠穆拉瑪還是有點吃力的,可以先找個黃山爬爬。

2. Chromium


向左向右,怎麽看現在只有Chromium是c++中最龐大的一個,自己在造輪子的時候,可以搜索下這個寶庫,保證有各種型號的輪子。
Chromium涉及了幾乎所有的平臺,所以不僅能學到平臺之上API的封裝,還有包括Network的各種封裝和借口,協議的C++的實現。
更甚至,webrtc,native client,sandbox,GPU,並行加速,debug,各種神奇的第三方的庫,各種各樣的技術,能潛心學深一個,就可以功力大增。


有空在補充。。。

////////////////////updated 2.28///////////////////////////

3. Node.js
紅的發紫的項目,整個node.js 包括內部的核心V8都是C++的項目,完全的事件驅動,非阻塞IO,性能比nginx還快,可以說是把服務器徹底的榨幹的節奏,這種設計模式,是現在比較流行的Reactor pattern
,concurrent computing。在構建一些大型的web services中,尤其凸顯優勢,現在移動互聯網時代,在做app push services的時候,後端自己實現的推送服務,基本也是這種思路,An Open Source MQTT v3.1 Broker 並發量能到幾十萬,甚至對內核參數修改過後能到上百萬。
Node.js另一個核心的組建是Marc Lehmann’s libev libev.schmorp.de , 基於event驅動的非阻塞IO庫,在node-v0.9.0之後,node.js項目考慮到跨平臺的實現,封裝了一個項目libuv/libuv · GitHub
,

  • Linux based on (epoll)
  • windows based on IOCP
  • Unix (mac os x) based on kevent

學習下,也能用在自己做不同平臺高性能網絡


////////////////////updated 3.1///////////////////////////
收到好多點贊,對於每天風平浪靜,只期待不給我彈error的生活,帶來些小激動的。
平時喜歡接觸一些新鮮的概念,產品,可能這也是自己選擇這個行業的一個原因,雖沒有一日如隔三秋的變化速度,但至少三月都會蹦出很多新奇的trend,技術,方向。總有一種學無止境的感覺,對於C++來說,基礎的東西變化不大,哪怕是新的標準C++0x,我的理解是實踐動手,如果有項目能去應用。
知識爆炸,我們可能無法窮盡學習所有的知識,但是可以通過github這個平臺完善屬於自己的知識wiki,覺得未來應該是。
看小說,看電影,看code。
這樣一個進去我們習慣的行為。
廢話太多~~~

4. Sandstorm
sandstorm-io/sandstorm · GitHub
Github上面最近比較火的一個項目,主頁上面一句話的介紹“Personal Cloud Sandbox”。主要解決的問題是,在自己的私有人服務器上面,安裝各種開源的雲服務(GitLab, WordPress......),就像mobile上面的通過應用商店install app那樣快速方便,實現這個目標,要在Linux之上,構建一個基於sandbox的平臺,並且留給開發者porting這些web 服務 (.spk file)到應用商店。
個人覺得比較精華的是裏面sandbox部分,每個web app都是跑在LXC的container裏面的,這點是類似Docker的實現,非常高效和輕量。另外會用到seccomp機制,對web app進行系統調用過濾,保障雲主機本身的安全,這一點sandbox的安全機制跟chrome在Linux上面的實現也是一致的。

  • Sandstorm‘s server-side sandboxing is based on the same underlying Linux kernel features as LXC and Docker. We use the system calls directly for finer-grained control.
  • (Planned) The kernel attack surface is reduced using seccomp-bpf to block and/or virtualize system calls.



////////////////////updated 3.2///////////////////////////
昨天被柴女神刷屏了,其實我們在用C++的時候,也是在為環境作貢獻,
C++之父在YouTube上面的視頻,C++在數據中心的使用,高性能的優勢,節省不少電。
<img src="http://pic1.zhimg.com/7a37bcb2980f128783bf3b4ed59f0578_b.jpg" data-rawwidth="511" data-rawheight="337" class="origin_image zh-lightbox-thumb" width="511" data-original="http://pic1.zhimg.com/7a37bcb2980f128783bf3b4ed59f0578_r.jpg">技術分享圖片

5. BitCoin
bitcoin/bitcoin · GitHub
BitCoin這兩年很火,拋開比特幣本身,看BitCoin實現,也是C++的項目,構建在P2P網絡之上的一套虛擬的支付系統。
我們可以利用的是背後的P2P Protocol,密碼學,支付,去中心化這些。
現在有很多衍生的開源項目,就是利用BitCoin 的這套P2P的框架在做,bitmessage,
bitmessage.org/wiki/Mai
完全去中心化,能防止老大哥的監聽,在現在雲計算,大數據風行的時代,privacy問題會越來越多,可以借鑒P2P的思路,構建這些去中心化的服務。


////////////////////updated 3.3///////////////////////////
6. CoreCLR
dotnet/coreclr · GitHub
沒看錯,微軟最近一直在放大招,之前開放了 .NET Core的源代碼,這次又把.NET的CoreCLR推到了GitHub。在Windows上運行一個.NET應用所需要的完整軟件棧都已經開源,對Linux和Mac OS X的支持馬上出來。微軟.NET因為整個軟件棧全部開源。開發者可以編譯自己的CoreCLR,在上面跨平臺運行.NET程序。
以前Mono做的就是這個事情。對語言,編譯,相關感興趣的可以學習學習,背後開放了RyuJIT,garbage collection等一些技術。
微軟從產品公司變成服務公司,重點放在企業級市場,對桌面這塊越來越開放,節奏很好。

對.net不是很了解,拿來拋磚引玉。


////////////////////updated 3.4///////////////////////////
7. Apache Mesos
apache/mesos · GitHub
簡單介紹 下Mesos, 是twitter背後開源群集管理的核心,現在是apache上的top項目了。
下面是Mesos的architecture
<img src="http://pic3.zhimg.com/5279c29c57b509d620f265218ac7f61e_b.jpg" data-rawwidth="1408" data-rawheight="675" class="origin_image zh-lightbox-thumb" width="1408" data-original="http://pic3.zhimg.com/5279c29c57b509d620f265218ac7f61e_r.jpg">有家雲計算創業公司Mesosphere,正在將這一技術推向一個更廣的高度,可以通過mesos構建的節點,抽象各個public cloud服務商,更可以方便快速的做雲遷移,從AWS可以到GCE。技術分享圖片有家雲計算創業公司Mesosphere,正在將這一技術推向一個更廣的高度,可以通過mesos構建的節點,抽象各個public cloud服務商,更可以方便快速的做雲遷移,從AWS可以到GCE。
提到Mesos就會出現這樣的組合,
Mesos + Docker
Docker(可能跑題了,Docker是用Go寫的)是PaaS供應商dotCloud開源的一個基於LXC 的Container引擎,虛擬化解決方案上面殺出的一個新馬。常見的搭配如下,Docker是 Mesos 的first class citizen。
<img src="http://pic1.zhimg.com/5c7764c3af2433697be6aa2cd6246958_b.jpg" data-rawwidth="638" data-rawheight="359" class="origin_image zh-lightbox-thumb" width="638" data-original="http://pic1.zhimg.com/5c7764c3af2433697be6aa2cd6246958_r.jpg">技術分享圖片

技術 日新月異,是個好時代,別人造的輪子越來越好了,一直有東西學,蠻開心。


////////////////////updated 3.5///////////////////////////
8. Mongo Database
mongodb/mongo · GitHub
NoSQL, BigData

9. DOOM-3
id-Software/DOOM-3 · GitHub
最牛的遊戲engine code
還有一個cocos2d-x
cocos2d/cocos2d-x · GitHub
Itseez/opencv · GitHub

10. HHVM
facebook/hhvm · GitHub
編譯,JIT

Github上的幾個C++開源項目