精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Facebook、微信團隊、Twitter、微軟開源軟件列表一覽

責任編輯:editor006

2017-04-06 15:46:22

摘自:36kr

早期微信后臺因為業(yè)務需求復雜多變、產(chǎn)品要求快速迭代等需求,大部分模塊都采用了半同步半異步模型。Redis對文件描述符的值做了一些假設,微軟構(gòu)建了一個虛擬文件描述符映射層。

 

編者按:本文來自微信公眾號“InfoQ”(ID:infoqchina),編輯小智;36氪經(jīng)授權(quán)發(fā)布。

對于為什么要發(fā)布開源項目,F(xiàn)acebook開源項目負責人曾經(jīng)解釋過:一是開源能夠幫助他人更快地開發(fā)軟件,促進世界創(chuàng)新,主要是社會價值層面的考慮。二是開源能夠倒逼Facebook的工程師寫出更好的代碼。三是開源能夠更有效利用社區(qū)的力量,幫助Facebook一起解決難題。開源,讓世界更美好,不是嗎?

Facebook開源軟件列表

從Facebook的GitHub賬戶中可以看到,F(xiàn)acebook已經(jīng)開源的開源項目有近300個,領域涉及移動、前端、Web、后端、大數(shù)據(jù)、數(shù)據(jù)庫、工具和硬件等。Facebook開源項目負責人James Pearce曾在OSCON解釋過Facebook究竟為何要使用、支持和發(fā)布開源項目。具體如下:

  • 共享Facebook的代碼(通常是軟件“棧”,偶爾也包括硬件設計)促進了這個世界的創(chuàng)新。這些代碼幫助他人更快地開發(fā)軟件。因為Facebook不是一家軟件公司,所以它在開源過程中沒有面臨競爭對手的威脅,相反,開源帶來的價值在逐漸顯現(xiàn)。用戶使用Facebook的開源代碼可以更快地構(gòu)建應用,而他們也樂于回饋代碼,使Facebook從中受益。

  • 擁抱開源,意味著Facebook必須一開始就寫出更優(yōu)秀的軟件。如果他們知道某個軟件從誕生起就要公開,那就必須要好好做,提高可用性和可靠性,因為將來外面的人都會用它。這種壓力也會給公司內(nèi)部帶來更多的價值。

  • 開源帶來了共享挑戰(zhàn)的機會。開源項目面臨的難題會吸引一些外部的優(yōu)秀人員,而結(jié)果是,他們也帶動了公司內(nèi)部人員的能力提升。每天Facebook都承載了超過一億人的溝通互聯(lián),何以能做到?唯有開源的力量。

下面是InfoQ編輯整理的Facebook現(xiàn)有的比較活躍的開源項目列表,歡迎交流討論。

移動開發(fā)框架:React Native

React Native是Facebook在2015年開源的基于React.js的移動開發(fā)框架,它的設計理念是讓移動應用既擁有Native的用戶體驗,同時又可以保留React的開發(fā)效率,提高代碼的復用率。React Native的宗旨是,學習一次,高效編寫跨平臺原生應用。開發(fā)者可以使用JavaScript編寫應用,并利用相同的核心代碼就可以創(chuàng)建Web、iOS 和Android平臺的原生應用,目前已經(jīng)實現(xiàn)了對iOS和Android兩大平臺的支持。

GitHub主頁地址

Star數(shù)量:33108

數(shù)據(jù)查詢語言:GraphQL

GraphQL是Facebook開源的數(shù)據(jù)查詢語言。Facebook在構(gòu)建移動應用程序時,需要用API獲取足夠強大的數(shù)據(jù)來描述所有的臉譜,同時簡單易學易用,于是開發(fā)了GraphQL,并支持每天千億級的調(diào)用。GraphQL不是像MySQL或Redis這樣直接面向數(shù)據(jù)的接口,而是面向已經(jīng)存在的應用代碼的接口。你可以把GraphQL看作是為了調(diào)用應用服務器上的方法的一些內(nèi)嵌的RPC。

GitHub主頁地址

Star數(shù)量:2902

大數(shù)據(jù)查詢引擎:Presto

Presto是Facebook開發(fā)的一款分布式SQL引擎,主要用于針對各種大小的數(shù)據(jù)源(從GB到PB)來運行交互式分析查詢。Facebook創(chuàng)建Presto的主要目的在于幫助他們更快地分析數(shù)據(jù),因為Facebook的數(shù)據(jù)量一直在持續(xù)增長,產(chǎn)品周期的節(jié)奏也變得越來越快。自從2013年11月開源后,Presto的用戶量呈現(xiàn)了爆發(fā)式增長。諸如Airbnb、京東、Dropbox以及Netflix等公司都將Presto作為自己的交互式查詢引擎。

GitHub主頁地址

Star數(shù)量:4792

PHP執(zhí)行引擎:HHVM

HHVM(HipHop Virtual Machine)是Facebook于2013年開源的PHP執(zhí)行引擎。它采用一種JIT(just-in-time)的編譯機制實現(xiàn)了高性能,同時又保持對 PHP 語法的充分支持。HHVM常常用作獨立的服務器,用于替代Apache與mod_php,旨在執(zhí)行使用Hack與PHP所編寫的程序。它使用了即時編譯方法來實現(xiàn)超高的性能,同時又保持了PHP開發(fā)者所習慣的靈活性。

GitHub主頁地址

Star數(shù)量:13652

JavaScript庫:React

React是Facebook開發(fā)的用于構(gòu)建用戶界面的JavaScript庫,現(xiàn)已為很多公司所用,因為它采用了一種不同的方式來構(gòu)建應用:借助于React,開發(fā)者可以將應用分解為彼此解耦的獨立組件,這樣就可以獨立維護并迭代各種組件了。2015年,React有兩個主要的發(fā)布,同時還發(fā)布了React Native,并且發(fā)布了新的開發(fā)者工具。現(xiàn)在已經(jīng)有越來越多的公司(包括Netflix與WordPress)開始使用React構(gòu)建自己的產(chǎn)品了。

GitHub主頁地址

Star數(shù)量:43146

鍵值存儲系統(tǒng):RocksDB

RocksDB是Facebook開源的嵌入式、可持久化鍵值存儲系統(tǒng),它基于Google的LevelDB,但提高了擴展性可以運行在多核處理器上,可以有效使用快速存儲,支持IO綁定、內(nèi)存和一次寫負荷。過去一段時間,RocksDB在社區(qū)非常流行,F(xiàn)acebook分析其原因在于它能夠?qū)τ捎诰W(wǎng)絡延遲等原因造成的慢查詢響應時間起到消除的作用,RocksDB非常靈活,完全可以針對各種新興的硬件發(fā)展趨勢進行定制。LinkedIn與Yahoo都是RocksDB的重度使用者。

GitHub主頁地址

Star數(shù)量:5418

人工智能硬件平臺:Big Sur

近些年,人工智能和機器學習方向取得了長足的發(fā)展。據(jù)Kevin Lee透露,F(xiàn)acebook的AI軟件已經(jīng)能夠閱讀故事、回答相關場景的問題、玩游戲以及通過一些例子來學習非指定的內(nèi)容。作為計算密集型的應用,AI軟件的性能與數(shù)據(jù)集規(guī)模/硬件性能密切相關。尤其是硬件方面,高性能微處理器、存儲器以及圖形處理器(Graphics Processing Unit,GPU)的發(fā)展為AI算法的快速運行提供了堅實基礎。為了進一步更好地服務大規(guī)模AI計算,F(xiàn)acebook推出了基于GPU的、用于訓練神經(jīng)網(wǎng)絡的“Big Sur”硬件系統(tǒng)。

了解更多

網(wǎng)絡模擬測試工具:ATC

Augmented Traffic Control(ATC)能夠利用Wi-Fi網(wǎng)絡模擬2G、2.5G(Edge)、3G以及LTE 4G移動網(wǎng)絡環(huán)境,測試工程師們可以快速在各種不同的模擬網(wǎng)絡環(huán)境中切換,從而實現(xiàn)對智能手機和App在不同國家地區(qū)和應用環(huán)境下的性能表現(xiàn)進行測試。ATC是Facebook內(nèi)部團隊在2013年的一次Hackathon活動上開發(fā)出來的工具,其原理實際是利用了Linux流量控制系統(tǒng),通過純Python的網(wǎng)絡庫pyroute2調(diào)用netlink的API控制,而開發(fā)其的目的是為了確保更多的用戶獲得最好的應用體驗。

GitHub主頁地址

Star數(shù)量:2962

開源數(shù)據(jù)庫:HydraBase

HydraBase是HBase數(shù)據(jù)庫的升級版。Facebook是HBase的重度用戶,F(xiàn)acebook的HBase數(shù)據(jù)庫系統(tǒng)存儲著Facebook的很多關鍵業(yè)務數(shù)據(jù),包括內(nèi)部監(jiān)控系統(tǒng)、搜索索 引、流數(shù)據(jù)分析以及數(shù)據(jù)抓取等。HydraBase相比HBase穩(wěn)定性和可用性更高,可以減少服務器宕機時間。HydraBase能夠讓一個數(shù)據(jù)域分布在多個域服務器中,域服務器之間能相互備份,因此能夠大大減少數(shù)據(jù)恢復所用的時間。Facebook聲稱HydraBase能將Facebook全年的宕機時間縮減到不到5分鐘。

Facebook已經(jīng)將HydraBase捐贈給Apache,目前很多代碼都已經(jīng)被合并到HBase中。

關系型數(shù)據(jù)庫:WebScaleSQL

WebScaleSQL是基于MySQL 5.6 社區(qū)版本改編的MySQL通用分支,基于GPL開源協(xié)議發(fā)布。WebScaleSQL目前已經(jīng)做了很多性能改進工作,包括:客戶端異步協(xié)調(diào)、邏輯預讀、查詢限流、服務端線程池優(yōu)化、InnoDB大頁支持等等。WebScaleSQL上的功能都是很“Web Scale”和接地氣的。比如線程池優(yōu)化,WebScaleSQL基于Mariadb的線程池實現(xiàn)進行重寫并優(yōu)化,對讀寫隊列進行分離,重新設計隊列優(yōu)先級策略,避免了餓死現(xiàn)象。要知道線程餓死在有些場景下是很嚴重的。尤其是在并發(fā)連接數(shù)往往很大的互聯(lián)網(wǎng)應用里面。

GitHub主頁地址

Star數(shù)量:2940

代碼審查工具Phabricator

代碼審查方面,F(xiàn)acebook開源了可視化工具Phabricator。工程師可以在頁面上非常方便的針對每一段(單行或者多行)代碼進行交互討論;負責審查的工程師可以接受代碼改變,可以提出疑問要求原作者繼續(xù)修改,可以提出自己不適合以推出該代碼審查,等等。只有代碼被明確接受之后才能被工程師提交到服務器端的代碼庫,這一點集成到提交工具中強制執(zhí)行。

GitHub主頁地址

Star數(shù)量:7022

C++HTTP框架:Proxygen

Proxygen是一款Facebook開源的支持SPDY 3.1的HTTP框架。其目的不是替換Apache,而是有能力創(chuàng)建一個專用的高性能Web服務器,使其可以嵌入到Facebook提供Web服務的現(xiàn)有應用中。Facebook從2011年開始構(gòu)建一款代理服務器(Proxygen這個名字也是由此而來),在該項目演進并在生產(chǎn)環(huán)境中測試了數(shù)年之后,F(xiàn)acebook將其代碼開源了。 Facebook內(nèi)部做的基準測試表明,在一個Proxygen echo服務器上,每秒可以支撐多達304 197次基于SPDY 3.1的內(nèi)存GET請求。

GitHub主頁地址

Star數(shù)量:3961

開源動畫庫:Pop

Pop是Facebook推出的一個可擴展的iOS 和OS X動畫庫,其新聞聚合閱讀應用Paper背后的核心技術(shù)就是由Pop支持。除了增加基本的靜態(tài)動畫外,還支持Spring和衰變動態(tài)動畫,可非常方便的構(gòu)建現(xiàn)實的、基于物理的交互。Pop動畫庫的動畫效果非常流暢,因為它使用了CADisplayLink來刷新畫面(幀),一秒鐘刷新幀數(shù)為60幀,接近于游戲開發(fā)引擎。Pop動畫的自成體系,與系統(tǒng)的CoreAnimation有很大的區(qū)別,但使用上非常相似。

GitHub主頁地址

Star數(shù)量:15468

靜態(tài)代碼分析工具:Infer

Infer是Facebook的開發(fā)團隊在代碼提交內(nèi)部評審時,用來執(zhí)行增量分析的一款靜態(tài)分析工具,在代碼提交到代碼庫或者部署到用戶的設備之前找出bug。由OCaml語言編寫的Infer目前能檢測出空指針訪問、資源泄露以及內(nèi)存泄露,可對C、Java或Objective-C代碼進行檢測。Facebook使用Infer自動驗證iOS和安卓上的移動應用的代碼,bug報告的正確率達80%。Infer通過捕獲編譯命令,把要被編譯的文件轉(zhuǎn)換為可用于分析潛在錯誤的中間語言格式。整個過程是增量進行的,意味著通常只有那些有修改過并提交編譯的文件才會被Infer分析。Infer還集成了大量的構(gòu)建或編譯工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。

GitHub主頁地址

Star數(shù)量:5259

操作系統(tǒng)監(jiān)控工具:osquery

osquery是一款面向OSX和Linux的操作系統(tǒng)檢測框架。它將操作系統(tǒng)暴露為一個高性能的關系型數(shù)據(jù)庫,允許用戶編寫SQL查詢查看操作系統(tǒng)數(shù)據(jù)。在osquery中,SQL表代表像下面這樣的抽象概念:

  • 正在運行的進程

  • 已加載的內(nèi)核模塊

  • 打開的網(wǎng)絡連接

雖然osquery利用了非常底層的操作系統(tǒng)API,但它允許用戶在Ubuntu、CentOS和Mac OS X上構(gòu)建并使用它。osquery性能極高,內(nèi)存占用小,支持用戶在整個基礎設施上執(zhí)行查詢。

GitHub主頁地址

Star數(shù)量:6209

JavaScript靜態(tài)類型檢查工具:Flow

Flow是Facebook出品的一個JavaScript代碼的靜態(tài)類型檢查工具,該工具采用開放源碼的OCaml(Objective Caml)語言開發(fā),。Flow能夠幫助開發(fā)人員查找出JavaScript代碼中的類型錯誤,從而提高開發(fā)效率和代碼質(zhì)量。Flow已經(jīng)能夠捕獲JavaScript代碼中的常見問題,如靜態(tài)類型轉(zhuǎn)換不匹配、空指針引用等問題。同時,F(xiàn)low還為JavaScript新增了類型語法,如類型別名。

GitHub主頁地址

Star數(shù)量:7510

Web應用架構(gòu):Flux

Facebook認為MVC無法滿足他們的擴展需求,因此他們決定使用另一種模式:Flux。由于Facebook非常巨大的代碼庫和龐大的組織,所以MVC真的很快就變得非常復雜,于是他們得出結(jié)論,認為MVC不適合于大規(guī)模應用。

每次Facebook工程師努力增加一項新特性時,系統(tǒng)的復雜性成級數(shù)增長,代碼變得“脆弱和不可預測”。對于剛接觸某個代碼庫的開發(fā)人員來說,這正成為一個嚴重的問題。Flux是一個Facebook開發(fā)的、利用單向數(shù)據(jù)流實現(xiàn)的應用架構(gòu),用于 React。Flux應用有三個主要的部分組成:調(diào)度程序、存儲和視圖(React 組件)。

GitHub主頁地址

Star數(shù)量:11616

Android調(diào)試工具:Stetho

Stetho是一個Android應用的調(diào)試工具。當Android應用集成Stetho時,開發(fā)者可以通過訪問Chrome,在Chrome Developer Tools中查看應用布局、網(wǎng)絡請求、sqlite、preference等等,可視化一切應用操作(更重要的是不用root)。開發(fā)者也可通過它的dumpapp工具提供的命令行接口來訪問應用內(nèi)部。

GitHub主頁地址

Star數(shù)量:5079

微信團隊開源項目列表

從GitHub上可以看出,到目前為止,由騰訊微信團隊發(fā)起的開源項目已經(jīng)有6個,并且這其中大部分都是在2016年開源的,領域涉及移動、數(shù)據(jù)庫、基礎類庫、框架。中國大公司的開源曾經(jīng)給社區(qū)留下不好的印象,比如有人就這么說,大公司的開源,開源也就意味著結(jié)束。也有人說,大公司的開源大部分都是KPI項目,開源與業(yè)務不能相得益彰,所以根本無法持續(xù)投入。

開源不僅是一種態(tài)度,更是一種能力,微信希望通過開源打通內(nèi)部團隊和外部社區(qū),一方面可以把微信的頂級技術(shù)輸出給了社區(qū),另一方面也可以把外部的優(yōu)秀的思想傳遞到內(nèi)部團隊。

C/C++協(xié)程庫Libco

Libco是微信后臺大規(guī)模使用的C/C++協(xié)程庫,2013年至今穩(wěn)定運行在微信后臺的數(shù)萬臺機器上。Libco提供了完善的協(xié)程編程接口、常用的Socket族函數(shù)Hook等,使得業(yè)務可用同步編程模型快速迭代開發(fā)。

早期微信后臺因為業(yè)務需求復雜多變、產(chǎn)品要求快速迭代等需求,大部分模塊都采用了半同步半異步模型。接入層為異步模型,業(yè)務邏輯層則是同步的多進程或多線程模型,業(yè)務邏輯的并發(fā)能力只有幾十到幾百。隨著微信業(yè)務的增長,系統(tǒng)規(guī)模變得越來越龐大,每個模塊很容易受到后端服務/網(wǎng)絡抖動的影響。基于這樣的背景,微信開發(fā)了Libco,實現(xiàn)了對業(yè)務邏輯非侵入的異步化改造。

GitHub地址

Star數(shù)量:1043

生產(chǎn)級paxos類庫PhxPaxos

PhxPaxos是微信后臺團隊自主研發(fā)的一套基于Paxos協(xié)議的多機狀態(tài)拷貝類庫。它以庫函數(shù)的方式嵌入到開發(fā)者的代碼當中,使得一些單機狀態(tài)服務可以擴展到多機器,從而獲得強一致性的多副本以及自動容災的特性。PhxPaxos在微信服務里面經(jīng)過一系列的工程驗證和大量的惡劣環(huán)境下的測試,在一致性的保證上極為健壯。

PhxPaxos的特性包括使用基于消息傳遞機制的純異步工程架構(gòu)、每次寫盤使用fsync嚴格保證正確性、支持Checkpoint以及對PaxosLog的自動清理、使用點對點流式協(xié)議進行快速學習、支持跨機器的Checkpoint自動拉取、內(nèi)置Master選舉功能、自適應的過載保護等。

GitHub地址

Star數(shù)量:970

高可用、強一致的MySQL集群PhxSQL

PhxSQL是一個兼容MySQL、服務高可用、數(shù)據(jù)強一致的關系型數(shù)據(jù)庫集群。PhxSQL以單Master多Slave方式部署,在集群內(nèi)超過一半機器存活的情況下、即可提供服務,并且自身實現(xiàn)自動Master切換、保證數(shù)據(jù)一致性。PhxSQL不依賴于ZooKeeper等任何第三方做存活檢測及選主。PhxSQL基于MySQL的一個分支Percona 5.6開發(fā),功能和實現(xiàn)與MySQL基本一致。

MySQL主備在主機上支持完整SQL、全局事務、以repeatable read和serializable級別的事務隔離,在金融、帳號等關鍵業(yè)務中有巨大的價值。但是MySQL傳統(tǒng)主備方案也有其缺點。最明顯的就是主機故障后的自動換主和新舊主數(shù)據(jù)一致性,即所謂的一致性和可用性。為了解決這個問題,并同時完全兼容MySQL,微信在MySQL的基礎上應用Paxos,設計和開發(fā)了PhxSQL。

GitHub地址

Star數(shù)量:1485

RPC框架PhxRPC

PhxRPC是微信后臺團隊推出的一個簡潔小巧的RPC框架,編譯生成的庫只有450K(編譯只依賴第三方庫Protobuf)。PhxRPC的特性如下:

  • 使用Protobuf作為IDL用于描述RPC接口以及通信數(shù)據(jù)結(jié)構(gòu)。

  • 基于Protobuf文件自動生成Client以及Server接口,用于Client的構(gòu)建,以及Server的實現(xiàn)。

  • 半同步半異步模式,采用獨立多IO線程,通過Epoll管理請求的接入以及讀寫,工作線程采用固定線程池。IO線程與工作線程通過內(nèi)存隊列進行交互。

  • 提供完善的過載保護,無需配置閾值,支持動態(tài)自適應拒絕請求。

  • 提供簡易的Client/Server配置讀入方式。

  • 基于lambda函數(shù)實現(xiàn)并發(fā)訪問Server,可以非常方便地實現(xiàn)Google提出的 Backup Requests 模式。

GitHub地址

Star數(shù)量:467

終端跨平臺網(wǎng)絡組件:Mars

Mars是微信官方的終端基礎組件,是一個結(jié)合移動應用所設計的基于Socket層的解決方案,在網(wǎng)絡調(diào)優(yōu)方面有更好的可控性,采用C++開發(fā)。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。

在微信中,任何網(wǎng)絡實現(xiàn)的bug都可能導致重大事故。例如微信的容災實現(xiàn),如果因為版本的實現(xiàn)差異,導致某些版本上無法進行容災恢復,將會嚴重的影響用戶體驗。微信研發(fā)了統(tǒng)一的跨平臺的網(wǎng)絡基礎庫Mars來滿足發(fā)展的需要,一方面,基礎組件可以提高研發(fā)效率,另外一方面,也可以提高系統(tǒng)的穩(wěn)健性。

在設計上,Mars以跨平臺、跨業(yè)務為前提,遵從高可用,高性能,負載均衡的設計原則。以網(wǎng)絡的可用性為例,移動互聯(lián)網(wǎng)有著丟包率高、帶寬受限、延遲波動、第三方影響等特點,使得網(wǎng)絡的可用性,尤其是弱網(wǎng)絡下的可用性變得尤為關鍵。Mars 的STN組件作為基于 socket 層的網(wǎng)絡解決方案,在很多細節(jié)設計上會充分考慮弱網(wǎng)絡下的可用性。

GitHub地址

Star數(shù)量:5895

熱補丁技術(shù)Tinker

Tinker是微信官方的Android熱補丁解決方案,它支持動態(tài)下發(fā)代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現(xiàn)更新。

當前市面的熱補丁方案有很多,其中比較出名的有阿里的AndFix、美團的Robust以及QZone的超級補丁方案,但它們都存在無法解決的問題,所以微信研發(fā)了自己的解決方案。總的來說,AndFix作為native解決方案,首先面臨的是穩(wěn)定性與兼容性問題,更重要的是它無法實現(xiàn)類替換,它是需要大量額外的開發(fā)成本的。而Robust兼容性與成功率較高,但是它與AndFix一樣,無法新增變量與類只能用做的bugFix方案。Qzone方案可以做到發(fā)布產(chǎn)品功能,但是它主要問題是插樁帶來Dalvik的性能問題,以及為了解決Art下內(nèi)存地址問題而導致補丁包急速增大的。

Tinker的具體設計目標如下:

  • 開發(fā)透明:開發(fā)者無需關心是否在補丁版本,他可以隨意修改,不由框架限制。

  • 性能無影響:補丁框架不能對應用帶來性能損耗。

  • 完整支持:支持代碼,So 庫以及資源的修復,可以發(fā)布功能。

  • 補丁大小較小: 補丁大小應該盡量的小,提高升級率。

  • 穩(wěn)定,兼容性好:保證微信的數(shù)億用戶的使用,盡量減少反射。

GitHub地址

Star數(shù)量:6707

Twitter開源軟件項目列表

從Twitter的GitHub賬戶中可以看到,Twitter已經(jīng)開源的開源項目有近200個,領域涉及分布式架構(gòu)、大數(shù)據(jù)、異步網(wǎng)絡傳輸(客戶端、服務端)、Web、工具等。Twitter可以稱為構(gòu)建于開源項目之上,該公司開源負責人Chris Aniszczyk表示,如果沒有開源軟件,Twitter將不會存在,用戶在移動端和PC端發(fā)送和接收的每一條推文都會需要開源軟件。

Twitter從開源社區(qū)中獲得了大量的好處,而Twitter也在不斷地回饋社區(qū),開源了大量基礎設施和工具,使得其他企業(yè)和開發(fā)者不必重新發(fā)明輪子,在這些開源項目的基礎上更加快速地實現(xiàn)自己所需。可以看到,Twitter在開源社區(qū)的貢獻是顯著的,甚至其貢獻的某些開源項目在一定程度上比Twitter本身帶來的影響力更大。

下面是InfoQ編輯整理的Twitter現(xiàn)有的比較活躍的開源項目列表,歡迎交流討論。

 jQuery插件,快速、全功能的自動完成庫:Typeahead.js

Typeahead.js是Twitter的一個jQuery插件,支持遠程和本地的數(shù)據(jù)集。比較有特色的地方在于,你可以將數(shù)據(jù)集使用本地存儲(local storage)來保存在本地,有效的提高用戶體驗。同時也擁有很多遠程數(shù)據(jù)集的處理選項,例如請求頻率,最大的并發(fā)請求數(shù),等等。它的主要特性有:

  • 支持數(shù)據(jù)本地保存,客戶端加載,優(yōu)化加載速度;

  • 支持多語言,并且支持阿拉伯文;

  • 支持Hogan.js模板引擎整合;

  • 支持多數(shù)據(jù)集拼裝;

  • 支持本地和遠程的數(shù)據(jù)集。

GitHub主頁

Star數(shù)量:12700

JavaScript庫:Twemoji

Twemoji是Twitter于2014年開源的完整的Emoji表情圖片,Twemoji包含872個表情,兼容最新的Unicode 7.0。Emoji,來自日本的小巧符號,通過圖像表達感情,已經(jīng)征服了移動互聯(lián)網(wǎng)的信息世界。現(xiàn)在,你可以在虛擬世界中隨處使用它們。開發(fā)者可以去GitHub下載完整的表情庫,并把這些表情加入到自己的應用或網(wǎng)頁中。

GitHub主頁

Star數(shù)量:4899

JavaScript模板引擎:Hogan.js

Hogan.js是Twitter團隊所制作的一個針對mustache模板的語法解析器。Hogan.js不依賴其他任何庫或框架,同時保證了高效率的模板解析,而其體積卻僅有2.5K。用它作為你的一部分資產(chǎn)打包編譯模板提前或?qū)⑺ㄔ谀愕臑g覽器來處理動態(tài)模板。

GitHub主頁

Star數(shù)量:4470

RPC框架:Finagle

Finagle是一個允許開發(fā)者使用Java、Scala或其他JVM語言來構(gòu)建異步RPC服務器和客戶端的庫,主要用于Twitter的后端服務。Finagle是Twitter基于Netty開發(fā)的支持容錯的、協(xié)議無關的RPC框架,該框架支撐了Twitter的核心服務。

Twitter面向服務的架構(gòu)是由一個龐大的Ruby on Rails應用轉(zhuǎn)化而來的。為了適應這種架構(gòu)的變化,需要有一個高性能的、支持容錯的、協(xié)議無關且異步的RPC框架。在面向服務的架構(gòu)之中,服務會將大多數(shù)的時間花費在等待上游服務的響應上,因此使用異步的庫能夠讓服務并發(fā)地處理請求,從而充分發(fā)揮硬件的潛能。Finagle構(gòu)建在Netty之上,并不是直接在原生NIO之上構(gòu)建的,這是因為Netty已經(jīng)解決了許多Twitter所遇到的問題并提供了干凈整潔的API。

GitHub主頁地址

Star數(shù)量:4690

自動化測試工具:Diffy

Diffy是一個開源的自動化測試工具,它能夠自動檢測基于Apache Thrift或者基于HTTP的服務。使用Diffy,只需要進行簡單的配置,之后不需要再編寫測試代碼。

Diffy主要基于穩(wěn)定版本和它的副本的輸出,對候選版本的輸出進行比較,以檢查候選版本是否正確。因此,Diffy首先假設候選版本應該和穩(wěn)定版本有“相似”的輸出。即不論候選版本和穩(wěn)定版本系統(tǒng)模塊是否相同,他們的最終輸出應該是“相似”的。這里一直使用“相似”,而不是使用相同,是因為相同請求可能會有一些Diffy不需要關心的干擾,比如:

  • 響應中包含服務器生成的時間戳;

  • 代碼中使用了隨機數(shù);

  • 系統(tǒng)服務間有條件競爭。

GitHub主頁地址

Star數(shù)量:2544

Scala庫:Scalding

Scalding是一個Scala庫,簡化了Hadoop MapReduce作業(yè)開發(fā),基于Cascading構(gòu)建。Scalding跟Pig類似,但提供更緊密的Scala集成。Scalding是用于Cascading的Scala API。Cascading是一個構(gòu)建于Hadoop上的API,用來創(chuàng)建復雜和容錯數(shù)據(jù)處理工作流,它抽象了集群拓撲結(jié)構(gòu)和配置,允許開發(fā)者快速開發(fā)復雜分布式的應用,而不用考慮背后的MapReduce。

GitHub主頁地址

Star數(shù)量:2536

數(shù)據(jù)實時分析平臺:Heron

2016年5月25日,Twitter正式宣布Heron開源。Heron的基本原理和方法:實時流系統(tǒng)是在大規(guī)模數(shù)據(jù)分析的基礎上實現(xiàn)系統(tǒng)性的分析。另外,它還需要:每分鐘處理數(shù)十億事件的能力、有秒級延遲,和行為可預見;在故障時保證數(shù)據(jù)的準確性,在達到流量峰值時是彈性的,并且易于調(diào)試和在共享的基礎設施上實現(xiàn)簡單部署。

為了滿足這些需求,Twitter討論出了幾種方案,包括:擴展Storm、使用其他的開源系統(tǒng)、開發(fā)一個全新的平臺。因為有幾個需求是要求改變 Storm的核心架構(gòu),所以對它進行擴展需要一個很長的開發(fā)周期。其他的開源流處理框架并不能完美滿足Twitter對于規(guī)模、吞吐量和延遲的需求。而且,這些系統(tǒng)也不能兼容Storm API——適應一個新的API需要重寫幾個topologies和修改高級的abstractions,這會導致一個很長的遷移過程。所以,Twitter決定建立 一個新的系統(tǒng)來滿足以上提到需求和兼容Storm API。

在Twitter,Heron作為主要的流媒體系統(tǒng),運行數(shù)以百萬計的開發(fā)和生產(chǎn)topologies。由于Heron可高效使用資源,在遷移Twitter所有的topologies后,整體硬件減少了3倍,導致Twitter的基礎設置效率有了顯著的提升。

GitHub主頁地址

Star數(shù)量:1873

Web安全開發(fā)工具:SecureHeaders

SecureHeaders是Twitter送給Web開發(fā)者的一份大禮,作為一款Web安全開發(fā)工具,Secureheaders能夠自動實施安全相關的header規(guī)則,包括內(nèi)容安全政策(CSP),防止XSS、HSTS等攻擊,防止火綿羊(Firesheep)攻擊以及XFO點擊劫持等。

GitHub主頁地址

Star數(shù)量:1697

代理服務器:Twemproxy

Twemproxy是一個快速的單線程代理程序,支持Memcached ASCII協(xié)議和更新的Redis協(xié)議。它全部用C寫成,使用Apache 2.0 License授權(quán)。Twemproxy的強大之處在于可以通過配置的方式讓它禁用掉失敗的結(jié)點,同時還能在一段時間后進行重試,抑或使用指定的鍵->服務器映射。這意味著在將Redis用作數(shù)據(jù)存儲時,它可以對Redis數(shù)據(jù)集進行分片(禁用掉結(jié)點驅(qū)逐);在將Redis用作緩存時,它可以啟用結(jié)點驅(qū)逐以實現(xiàn)簡單的高可用性。它的特性是:

  • 通過代理的方式減少緩存服務器的連接數(shù);

  • 自動在多臺緩存服務器間共享數(shù)據(jù);

  • 通過不同的策略與散列函數(shù)支持一致性散列;

  • 通過配置的方式禁用失敗的結(jié)點;

  • 運行在多個實例上,客戶端可以連接到首個可用的代理服務器;

  • 支持請求的流式與批處理,因而能夠降低來回的消耗;

  • 速度快;

  • 輕量級。

GitHub主頁地址

Star數(shù)量:5434

微軟開源軟件列表

提起微軟公司,不少人第一反應是老牌巨頭專注于私有化軟件盈利模式,這大抵是源于微軟前CEO Steve Ballmer曾經(jīng)宣稱“Linux是顆毒瘤(Linux is a cancer)”,并曾經(jīng)偏執(zhí)地認為所有開源軟件都不值一提。但是,這是2001年的事情了,是時候更新大家對微軟的刻板印象。

2014年10月,出任微軟首席執(zhí)行官的薩提亞 納德拉,第一次公開宣布“微軟愛Linux”。同年,微軟首次發(fā)布.NET Core并將其開源;眾所周知,微軟核心的技術(shù)棧長期以來基于.NET和Windows綁定。在重寫標準庫之后,2016年6月.NET Core 1.0實現(xiàn)跨平臺(Windows、Linux和Mac),這意味著開發(fā)者可以使用Windows開發(fā)而Linux部署。

2016年3月,Windows原生支持 Ubuntu Linux Bash, 這意味著Windows操作系統(tǒng)級別的開放,Win10 可以當作一臺Ubuntu開發(fā)機來使用。此外,微軟稱Azure全面支持所有開源技術(shù)棧,并且從IaaS(VM),PaaS和SaaS(CRM、PowerBI、Office365)全面支持用戶的靈活選擇。

InfoQ對數(shù)個較受社區(qū)歡迎的項目進行了整理如下:

Visual Studio Code:跨平臺源代碼編輯器

Visual Studio Code是微軟于2015年正式發(fā)布的項目,可以運行在Mac OS X、Windows和Linux之上,面向Web和云應用的一款跨平臺源代碼編輯器。

雖然它的名字與Visual Studio相近,但前者是代碼編輯器,后者是集成開發(fā)環(huán)境(IDE)并且目前只運行在Windows上。

Star數(shù)量: 24.3k;  Fork數(shù)量:3.3k

GitHub主頁地址

TypeScript:開源編程語言,JavaScript的超集

TypeScript是JavaScript強類型的超集,可以編譯成純JavaScript。由微軟開發(fā)的自由和開源的編程語言,可以運行在各類瀏覽器和操作系統(tǒng)之上。

Star數(shù)量:19.8k ;Fork數(shù)量:2.8k

GitHub主頁地址

CNTK: 深度學習開源工具包

CNTK全稱為The Microsoft Cognitive Toolkit, 將神經(jīng)網(wǎng)絡描述為計算機可處理的有向圖,有向圖的葉節(jié)點表示輸入值或網(wǎng)絡參數(shù),其他節(jié)點表示輸入對應的矩陣運算。CNTK便于實現(xiàn)并且也結(jié)合了很多流行計算模型如前饋DNN,卷積網(wǎng)(CNN)和復現(xiàn)網(wǎng)絡(RNN / LSTM)。它可以跨多個GPU和服務器實現(xiàn)隨機梯度下降(SGD,誤差反向傳播)學習與自動微分和并行化。

可以在Python或者C++語言中如同庫版應用,也可以使用其自有的描述語言BrainScript單機化使用。CNTK可適用于64位的Linux和Window,于2015年4月開源。

下圖比較CNTK的處理速度(每秒處理的幀數(shù))與四個其他眾所周知的工具包的處理速度。 配置使用完全連接的4層神經(jīng)網(wǎng)絡(參見微軟的基準腳本)和有效的迷你批量大小(8192)。在相同硬件上獲得的結(jié)果。

Star數(shù)量:9.9k;Fork數(shù)量:2.4k

GitHub地址

Donnet:采用系統(tǒng)虛擬機運行的編程平臺

.NET是微軟研發(fā)的XML Web services平臺,此框架支持多種語言(如C#、F#、VB.Net、C++、Python等)的開發(fā)。.NET框架歷經(jīng)亟待,最終于2014年開源。

C#通常被認為是微軟專屬,是.NET框架上最常用的編程語言之一, 其著名競爭對手是Java。

Star數(shù)量: 7.8k ;Fork數(shù)量:1.2k

GitHub主頁地址

PowerShell :為任何系統(tǒng)提供Windows的命令行工具

一個跨平臺(Windows、Linux和macOS)自動化和配置工具/框架,可與現(xiàn)有工具完美配合,并優(yōu)化用于處理結(jié)構(gòu)化數(shù)據(jù)(例如JSON,CSV,XML等)、REST API 和對象模型。 它包括命令行shell,相關的腳本語言和用于處理cmdlet的框架。

Star數(shù)量:6.4k;Fork數(shù)量:800

GitHub地址

MSOpenTech/redis: 在Windows使用Redis

官方只支持64位,可自行構(gòu)建32位版。

該開源項目,在2.8版本中,替代UNIX fork()API中的內(nèi)存映射文件模擬寫時復制行為。 版本3.0類似,為了便于系統(tǒng)文件分頁,刪除了內(nèi)存映射文件,在管理堆碎片方面進行了改進。

Redis對文件描述符的值做了一些假設,微軟構(gòu)建了一個虛擬文件描述符映射層。

Star數(shù)量:5.8k;Fork數(shù)量:8.7k

GitHub地址

WinObjc:Windows下的Objective-C

為Visual Studio提供了一個Objective-C開發(fā)環(huán)境并支持iOS API。通過重新使用Objective-C代碼和iOS API,配以Windows自有Cortana(中文名:微軟小娜,微軟發(fā)布的全球第一款個人智能助理)和通知等功能,用戶可以創(chuàng)建通用Windows平臺(UWP)應用程序并運行在Windows設備上。

Star數(shù)量:5.8k;Fork數(shù)量:745

GitHub地址

GitHub地址

ASP.NET之MVC核:模型(model)-視圖(view)-控制器(controller)框架

旨在TDD友好,用于創(chuàng)建符合最新Web標準的復雜應用程序、構(gòu)建動態(tài)網(wǎng)站,可以在IIS中托管或自我托管。

Star數(shù)量:4.4k;Fork數(shù)量:1.6k

GitHub地址

BashOnWindows:解決Ubuntu Bash在Windows的使用問題

微軟在Build 2016大會上宣布了一條振奮人心的消息,大家驚呼Ubuntu on Windows。Bash on Windows 為開發(fā)者們提供了Bash shell、Linux類似環(huán)境,在不需要Linux虛擬機的情況下,大部分的Linux命令行工具基本上可以不經(jīng)修改地運行在Windows上。

Star數(shù)量:3.7k;Fork數(shù)量:129

GitHub地址

Azure相關:文檔、SDK和代碼示例

微軟支持開發(fā)者們將各種開源軟件工具和技術(shù)帶入Azure。Azure 應用市場支持很多Linux 分發(fā),包括 Ubuntu、Debian 和 SUSE;也支持借助支持 Node.js、PHP、Python 和 Java 的 Azure 應用服務,生成 Web 和移動應用。

在GitHub上Azure相關的存儲庫有1700+個。

Star數(shù)量(共計):149k;Fork數(shù)量(共計):291k

地址

編者按:本文來自微信公眾號“InfoQ”(ID:infoqchina),編輯小智;36氪經(jīng)授權(quán)發(fā)布。

對于為什么要發(fā)布開源項目,F(xiàn)acebook開源項目負責人曾經(jīng)解釋過:一是開源能夠幫助他人更快地開發(fā)軟件,促進世界創(chuàng)新,主要是社會價值層面的考慮。二是開源能夠倒逼Facebook的工程師寫出更好的代碼。三是開源能夠更有效利用社區(qū)的力量,幫助Facebook一起解決難題。開源,讓世界更美好,不是嗎?

Facebook開源軟件列表

從Facebook的GitHub賬戶中可以看到,F(xiàn)acebook已經(jīng)開源的開源項目有近300個,領域涉及移動、前端、Web、后端、大數(shù)據(jù)、數(shù)據(jù)庫、工具和硬件等。Facebook開源項目負責人James Pearce曾在OSCON解釋過Facebook究竟為何要使用、支持和發(fā)布開源項目。具體如下:

共享Facebook的代碼(通常是軟件“棧”,偶爾也包括硬件設計)促進了這個世界的創(chuàng)新。這些代碼幫助他人更快地開發(fā)軟件。因為Facebook不是一家軟件公司,所以它在開源過程中沒有面臨競爭對手的威脅,相反,開源帶來的價值在逐漸顯現(xiàn)。用戶使用Facebook的開源代碼可以更快地構(gòu)建應用,而他們也樂于回饋代碼,使Facebook從中受益。

擁抱開源,意味著Facebook必須一開始就寫出更優(yōu)秀的軟件。如果他們知道某個軟件從誕生起就要公開,那就必須要好好做,提高可用性和可靠性,因為將來外面的人都會用它。這種壓力也會給公司內(nèi)部帶來更多的價值。

開源帶來了共享挑戰(zhàn)的機會。開源項目面臨的難題會吸引一些外部的優(yōu)秀人員,而結(jié)果是,他們也帶動了公司內(nèi)部人員的能力提升。每天Facebook都承載了超過一億人的溝通互聯(lián),何以能做到?唯有開源的力量。

下面是InfoQ編輯整理的Facebook現(xiàn)有的比較活躍的開源項目列表,歡迎交流討論。

移動開發(fā)框架:React Native

React Native是Facebook在2015年開源的基于React.js的移動開發(fā)框架,它的設計理念是讓移動應用既擁有Native的用戶體驗,同時又可以保留React的開發(fā)效率,提高代碼的復用率。React Native的宗旨是,學習一次,高效編寫跨平臺原生應用。開發(fā)者可以使用JavaScript編寫應用,并利用相同的核心代碼就可以創(chuàng)建Web、iOS 和Android平臺的原生應用,目前已經(jīng)實現(xiàn)了對iOS和Android兩大平臺的支持。

GitHub主頁地址

Star數(shù)量:33108

數(shù)據(jù)查詢語言:GraphQL

GraphQL是Facebook開源的數(shù)據(jù)查詢語言。Facebook在構(gòu)建移動應用程序時,需要用API獲取足夠強大的數(shù)據(jù)來描述所有的臉譜,同時簡單易學易用,于是開發(fā)了GraphQL,并支持每天千億級的調(diào)用。GraphQL不是像MySQL或Redis這樣直接面向數(shù)據(jù)的接口,而是面向已經(jīng)存在的應用代碼的接口。你可以把GraphQL看作是為了調(diào)用應用服務器上的方法的一些內(nèi)嵌的RPC。

GitHub主頁地址

Star數(shù)量:2902

大數(shù)據(jù)查詢引擎:Presto

Presto是Facebook開發(fā)的一款分布式SQL引擎,主要用于針對各種大小的數(shù)據(jù)源(從GB到PB)來運行交互式分析查詢。Facebook創(chuàng)建Presto的主要目的在于幫助他們更快地分析數(shù)據(jù),因為Facebook的數(shù)據(jù)量一直在持續(xù)增長,產(chǎn)品周期的節(jié)奏也變得越來越快。自從2013年11月開源后,Presto的用戶量呈現(xiàn)了爆發(fā)式增長。諸如Airbnb、京東、Dropbox以及Netflix等公司都將Presto作為自己的交互式查詢引擎。

GitHub主頁地址

Star數(shù)量:4792

PHP執(zhí)行引擎:HHVM

HHVM(HipHop Virtual Machine)是Facebook于2013年開源的PHP執(zhí)行引擎。它采用一種JIT(just-in-time)的編譯機制實現(xiàn)了高性能,同時又保持對 PHP 語法的充分支持。HHVM常常用作獨立的服務器,用于替代Apache與mod_php,旨在執(zhí)行使用Hack與PHP所編寫的程序。它使用了即時編譯方法來實現(xiàn)超高的性能,同時又保持了PHP開發(fā)者所習慣的靈活性。

GitHub主頁地址

Star數(shù)量:13652

JavaScript庫:React

React是Facebook開發(fā)的用于構(gòu)建用戶界面的JavaScript庫,現(xiàn)已為很多公司所用,因為它采用了一種不同的方式來構(gòu)建應用:借助于React,開發(fā)者可以將應用分解為彼此解耦的獨立組件,這樣就可以獨立維護并迭代各種組件了。2015年,React有兩個主要的發(fā)布,同時還發(fā)布了React Native,并且發(fā)布了新的開發(fā)者工具。現(xiàn)在已經(jīng)有越來越多的公司(包括Netflix與WordPress)開始使用React構(gòu)建自己的產(chǎn)品了。

GitHub主頁地址

Star數(shù)量:43146

鍵值存儲系統(tǒng):RocksDB

RocksDB是Facebook開源的嵌入式、可持久化鍵值存儲系統(tǒng),它基于Google的LevelDB,但提高了擴展性可以運行在多核處理器上,可以有效使用快速存儲,支持IO綁定、內(nèi)存和一次寫負荷。過去一段時間,RocksDB在社區(qū)非常流行,F(xiàn)acebook分析其原因在于它能夠?qū)τ捎诰W(wǎng)絡延遲等原因造成的慢查詢響應時間起到消除的作用,RocksDB非常靈活,完全可以針對各種新興的硬件發(fā)展趨勢進行定制。LinkedIn與Yahoo都是RocksDB的重度使用者。

GitHub主頁地址

Star數(shù)量:5418

人工智能硬件平臺:Big Sur

近些年,人工智能和機器學習方向取得了長足的發(fā)展。據(jù)Kevin Lee透露,F(xiàn)acebook的AI軟件已經(jīng)能夠閱讀故事、回答相關場景的問題、玩游戲以及通過一些例子來學習非指定的內(nèi)容。作為計算密集型的應用,AI軟件的性能與數(shù)據(jù)集規(guī)模/硬件性能密切相關。尤其是硬件方面,高性能微處理器、存儲器以及圖形處理器(Graphics Processing Unit,GPU)的發(fā)展為AI算法的快速運行提供了堅實基礎。為了進一步更好地服務大規(guī)模AI計算,F(xiàn)acebook推出了基于GPU的、用于訓練神經(jīng)網(wǎng)絡的“Big Sur”硬件系統(tǒng)。

了解更多

網(wǎng)絡模擬測試工具:ATC

Augmented Traffic Control(ATC)能夠利用Wi-Fi網(wǎng)絡模擬2G、2.5G(Edge)、3G以及LTE 4G移動網(wǎng)絡環(huán)境,測試工程師們可以快速在各種不同的模擬網(wǎng)絡環(huán)境中切換,從而實現(xiàn)對智能手機和App在不同國家地區(qū)和應用環(huán)境下的性能表現(xiàn)進行測試。ATC是Facebook內(nèi)部團隊在2013年的一次Hackathon活動上開發(fā)出來的工具,其原理實際是利用了Linux流量控制系統(tǒng),通過純Python的網(wǎng)絡庫pyroute2調(diào)用netlink的API控制,而開發(fā)其的目的是為了確保更多的用戶獲得最好的應用體驗。

GitHub主頁地址

Star數(shù)量:2962

開源數(shù)據(jù)庫:HydraBase

HydraBase是HBase數(shù)據(jù)庫的升級版。Facebook是HBase的重度用戶,F(xiàn)acebook的HBase數(shù)據(jù)庫系統(tǒng)存儲著Facebook的很多關鍵業(yè)務數(shù)據(jù),包括內(nèi)部監(jiān)控系統(tǒng)、搜索索 引、流數(shù)據(jù)分析以及數(shù)據(jù)抓取等。HydraBase相比HBase穩(wěn)定性和可用性更高,可以減少服務器宕機時間。HydraBase能夠讓一個數(shù)據(jù)域分布在多個域服務器中,域服務器之間能相互備份,因此能夠大大減少數(shù)據(jù)恢復所用的時間。Facebook聲稱HydraBase能將Facebook全年的宕機時間縮減到不到5分鐘。

Facebook已經(jīng)將HydraBase捐贈給Apache,目前很多代碼都已經(jīng)被合并到HBase中。

關系型數(shù)據(jù)庫:WebScaleSQL

WebScaleSQL是基于MySQL 5.6 社區(qū)版本改編的MySQL通用分支,基于GPL開源協(xié)議發(fā)布。WebScaleSQL目前已經(jīng)做了很多性能改進工作,包括:客戶端異步協(xié)調(diào)、邏輯預讀、查詢限流、服務端線程池優(yōu)化、InnoDB大頁支持等等。WebScaleSQL上的功能都是很“Web Scale”和接地氣的。比如線程池優(yōu)化,WebScaleSQL基于Mariadb的線程池實現(xiàn)進行重寫并優(yōu)化,對讀寫隊列進行分離,重新設計隊列優(yōu)先級策略,避免了餓死現(xiàn)象。要知道線程餓死在有些場景下是很嚴重的。尤其是在并發(fā)連接數(shù)往往很大的互聯(lián)網(wǎng)應用里面。

GitHub主頁地址

Star數(shù)量:2940

代碼審查工具Phabricator

代碼審查方面,F(xiàn)acebook開源了可視化工具Phabricator。工程師可以在頁面上非常方便的針對每一段(單行或者多行)代碼進行交互討論;負責審查的工程師可以接受代碼改變,可以提出疑問要求原作者繼續(xù)修改,可以提出自己不適合以推出該代碼審查,等等。只有代碼被明確接受之后才能被工程師提交到服務器端的代碼庫,這一點集成到提交工具中強制執(zhí)行。

GitHub主頁地址

Star數(shù)量:7022

C++HTTP框架:Proxygen

Proxygen是一款Facebook開源的支持SPDY 3.1的HTTP框架。其目的不是替換Apache,而是有能力創(chuàng)建一個專用的高性能Web服務器,使其可以嵌入到Facebook提供Web服務的現(xiàn)有應用中。Facebook從2011年開始構(gòu)建一款代理服務器(Proxygen這個名字也是由此而來),在該項目演進并在生產(chǎn)環(huán)境中測試了數(shù)年之后,F(xiàn)acebook將其代碼開源了。 Facebook內(nèi)部做的基準測試表明,在一個Proxygen echo服務器上,每秒可以支撐多達304 197次基于SPDY 3.1的內(nèi)存GET請求。

GitHub主頁地址

Star數(shù)量:3961

開源動畫庫:Pop

Pop是Facebook推出的一個可擴展的iOS 和OS X動畫庫,其新聞聚合閱讀應用Paper背后的核心技術(shù)就是由Pop支持。除了增加基本的靜態(tài)動畫外,還支持Spring和衰變動態(tài)動畫,可非常方便的構(gòu)建現(xiàn)實的、基于物理的交互。Pop動畫庫的動畫效果非常流暢,因為它使用了CADisplayLink來刷新畫面(幀),一秒鐘刷新幀數(shù)為60幀,接近于游戲開發(fā)引擎。Pop動畫的自成體系,與系統(tǒng)的CoreAnimation有很大的區(qū)別,但使用上非常相似。

GitHub主頁地址

Star數(shù)量:15468

靜態(tài)代碼分析工具:Infer

Infer是Facebook的開發(fā)團隊在代碼提交內(nèi)部評審時,用來執(zhí)行增量分析的一款靜態(tài)分析工具,在代碼提交到代碼庫或者部署到用戶的設備之前找出bug。由OCaml語言編寫的Infer目前能檢測出空指針訪問、資源泄露以及內(nèi)存泄露,可對C、Java或Objective-C代碼進行檢測。Facebook使用Infer自動驗證iOS和安卓上的移動應用的代碼,bug報告的正確率達80%。Infer通過捕獲編譯命令,把要被編譯的文件轉(zhuǎn)換為可用于分析潛在錯誤的中間語言格式。整個過程是增量進行的,意味著通常只有那些有修改過并提交編譯的文件才會被Infer分析。Infer還集成了大量的構(gòu)建或編譯工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。

GitHub主頁地址

Star數(shù)量:5259

操作系統(tǒng)監(jiān)控工具:osquery

osquery是一款面向OSX和Linux的操作系統(tǒng)檢測框架。它將操作系統(tǒng)暴露為一個高性能的關系型數(shù)據(jù)庫,允許用戶編寫SQL查詢查看操作系統(tǒng)數(shù)據(jù)。在osquery中,SQL表代表像下面這樣的抽象概念:

正在運行的進程

已加載的內(nèi)核模塊

打開的網(wǎng)絡連接

雖然osquery利用了非常底層的操作系統(tǒng)API,但它允許用戶在Ubuntu、CentOS和Mac OS X上構(gòu)建并使用它。osquery性能極高,內(nèi)存占用小,支持用戶在整個基礎設施上執(zhí)行查詢。

GitHub主頁地址

Star數(shù)量:6209

JavaScript靜態(tài)類型檢查工具:Flow

Flow是Facebook出品的一個JavaScript代碼的靜態(tài)類型檢查工具,該工具采用開放源碼的OCaml(Objective Caml)語言開發(fā),。Flow能夠幫助開發(fā)人員查找出JavaScript代碼中的類型錯誤,從而提高開發(fā)效率和代碼質(zhì)量。Flow已經(jīng)能夠捕獲JavaScript代碼中的常見問題,如靜態(tài)類型轉(zhuǎn)換不匹配、空指針引用等問題。同時,F(xiàn)low還為JavaScript新增了類型語法,如類型別名。

GitHub主頁地址

Star數(shù)量:7510

Web應用架構(gòu):Flux

Facebook認為MVC無法滿足他們的擴展需求,因此他們決定使用另一種模式:Flux。由于Facebook非常巨大的代碼庫和龐大的組織,所以MVC真的很快就變得非常復雜,于是他們得出結(jié)論,認為MVC不適合于大規(guī)模應用。

每次Facebook工程師努力增加一項新特性時,系統(tǒng)的復雜性成級數(shù)增長,代碼變得“脆弱和不可預測”。對于剛接觸某個代碼庫的開發(fā)人員來說,這正成為一個嚴重的問題。Flux是一個Facebook開發(fā)的、利用單向數(shù)據(jù)流實現(xiàn)的應用架構(gòu),用于 React。Flux應用有三個主要的部分組成:調(diào)度程序、存儲和視圖(React 組件)。

GitHub主頁地址

Star數(shù)量:11616

Android調(diào)試工具:Stetho

Stetho是一個Android應用的調(diào)試工具。當Android應用集成Stetho時,開發(fā)者可以通過訪問Chrome,在Chrome Developer Tools中查看應用布局、網(wǎng)絡請求、sqlite、preference等等,可視化一切應用操作(更重要的是不用root)。開發(fā)者也可通過它的dumpapp工具提供的命令行接口來訪問應用內(nèi)部。

GitHub主頁地址

Star數(shù)量:5079

微信團隊開源項目列表

從GitHub上可以看出,到目前為止,由騰訊微信團隊發(fā)起的開源項目已經(jīng)有6個,并且這其中大部分都是在2016年開源的,領域涉及移動、數(shù)據(jù)庫、基礎類庫、框架。中國大公司的開源曾經(jīng)給社區(qū)留下不好的印象,比如有人就這么說,大公司的開源,開源也就意味著結(jié)束。也有人說,大公司的開源大部分都是KPI項目,開源與業(yè)務不能相得益彰,所以根本無法持續(xù)投入。

開源不僅是一種態(tài)度,更是一種能力,微信希望通過開源打通內(nèi)部團隊和外部社區(qū),一方面可以把微信的頂級技術(shù)輸出給了社區(qū),另一方面也可以把外部的優(yōu)秀的思想傳遞到內(nèi)部團隊。

C/C++協(xié)程庫Libco

Libco是微信后臺大規(guī)模使用的C/C++協(xié)程庫,2013年至今穩(wěn)定運行在微信后臺的數(shù)萬臺機器上。Libco提供了完善的協(xié)程編程接口、常用的Socket族函數(shù)Hook等,使得業(yè)務可用同步編程模型快速迭代開發(fā)。

早期微信后臺因為業(yè)務需求復雜多變、產(chǎn)品要求快速迭代等需求,大部分模塊都采用了半同步半異步模型。接入層為異步模型,業(yè)務邏輯層則是同步的多進程或多線程模型,業(yè)務邏輯的并發(fā)能力只有幾十到幾百。隨著微信業(yè)務的增長,系統(tǒng)規(guī)模變得越來越龐大,每個模塊很容易受到后端服務/網(wǎng)絡抖動的影響。基于這樣的背景,微信開發(fā)了Libco,實現(xiàn)了對業(yè)務邏輯非侵入的異步化改造。

GitHub地址

Star數(shù)量:1043

生產(chǎn)級paxos類庫PhxPaxos

PhxPaxos是微信后臺團隊自主研發(fā)的一套基于Paxos協(xié)議的多機狀態(tài)拷貝類庫。它以庫函數(shù)的方式嵌入到開發(fā)者的代碼當中,使得一些單機狀態(tài)服務可以擴展到多機器,從而獲得強一致性的多副本以及自動容災的特性。PhxPaxos在微信服務里面經(jīng)過一系列的工程驗證和大量的惡劣環(huán)境下的測試,在一致性的保證上極為健壯。

PhxPaxos的特性包括使用基于消息傳遞機制的純異步工程架構(gòu)、每次寫盤使用fsync嚴格保證正確性、支持Checkpoint以及對PaxosLog的自動清理、使用點對點流式協(xié)議進行快速學習、支持跨機器的Checkpoint自動拉取、內(nèi)置Master選舉功能、自適應的過載保護等。

GitHub地址

Star數(shù)量:970

高可用、強一致的MySQL集群PhxSQL

PhxSQL是一個兼容MySQL、服務高可用、數(shù)據(jù)強一致的關系型數(shù)據(jù)庫集群。PhxSQL以單Master多Slave方式部署,在集群內(nèi)超過一半機器存活的情況下、即可提供服務,并且自身實現(xiàn)自動Master切換、保證數(shù)據(jù)一致性。PhxSQL不依賴于ZooKeeper等任何第三方做存活檢測及選主。PhxSQL基于MySQL的一個分支Percona 5.6開發(fā),功能和實現(xiàn)與MySQL基本一致。

MySQL主備在主機上支持完整SQL、全局事務、以repeatable read和serializable級別的事務隔離,在金融、帳號等關鍵業(yè)務中有巨大的價值。但是MySQL傳統(tǒng)主備方案也有其缺點。最明顯的就是主機故障后的自動換主和新舊主數(shù)據(jù)一致性,即所謂的一致性和可用性。為了解決這個問題,并同時完全兼容MySQL,微信在MySQL的基礎上應用Paxos,設計和開發(fā)了PhxSQL。

GitHub地址

Star數(shù)量:1485

RPC框架PhxRPC

PhxRPC是微信后臺團隊推出的一個簡潔小巧的RPC框架,編譯生成的庫只有450K(編譯只依賴第三方庫Protobuf)。PhxRPC的特性如下:

使用Protobuf作為IDL用于描述RPC接口以及通信數(shù)據(jù)結(jié)構(gòu)。

基于Protobuf文件自動生成Client以及Server接口,用于Client的構(gòu)建,以及Server的實現(xiàn)。

半同步半異步模式,采用獨立多IO線程,通過Epoll管理請求的接入以及讀寫,工作線程采用固定線程池。IO線程與工作線程通過內(nèi)存隊列進行交互。

提供完善的過載保護,無需配置閾值,支持動態(tài)自適應拒絕請求。

提供簡易的Client/Server配置讀入方式。

基于lambda函數(shù)實現(xiàn)并發(fā)訪問Server,可以非常方便地實現(xiàn)Google提出的 Backup Requests 模式。

GitHub地址

Star數(shù)量:467

終端跨平臺網(wǎng)絡組件:Mars

Mars是微信官方的終端基礎組件,是一個結(jié)合移動應用所設計的基于Socket層的解決方案,在網(wǎng)絡調(diào)優(yōu)方面有更好的可控性,采用C++開發(fā)。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。

在微信中,任何網(wǎng)絡實現(xiàn)的bug都可能導致重大事故。例如微信的容災實現(xiàn),如果因為版本的實現(xiàn)差異,導致某些版本上無法進行容災恢復,將會嚴重的影響用戶體驗。微信研發(fā)了統(tǒng)一的跨平臺的網(wǎng)絡基礎庫Mars來滿足發(fā)展的需要,一方面,基礎組件可以提高研發(fā)效率,另外一方面,也可以提高系統(tǒng)的穩(wěn)健性。

在設計上,Mars以跨平臺、跨業(yè)務為前提,遵從高可用,高性能,負載均衡的設計原則。以網(wǎng)絡的可用性為例,移動互聯(lián)網(wǎng)有著丟包率高、帶寬受限、延遲波動、第三方影響等特點,使得網(wǎng)絡的可用性,尤其是弱網(wǎng)絡下的可用性變得尤為關鍵。Mars 的STN組件作為基于 socket 層的網(wǎng)絡解決方案,在很多細節(jié)設計上會充分考慮弱網(wǎng)絡下的可用性。

GitHub地址

Star數(shù)量:5895

熱補丁技術(shù)Tinker

Tinker是微信官方的Android熱補丁解決方案,它支持動態(tài)下發(fā)代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現(xiàn)更新。

當前市面的熱補丁方案有很多,其中比較出名的有阿里的AndFix、美團的Robust以及QZone的超級補丁方案,但它們都存在無法解決的問題,所以微信研發(fā)了自己的解決方案。總的來說,AndFix作為native解決方案,首先面臨的是穩(wěn)定性與兼容性問題,更重要的是它無法實現(xiàn)類替換,它是需要大量額外的開發(fā)成本的。而Robust兼容性與成功率較高,但是它與AndFix一樣,無法新增變量與類只能用做的bugFix方案。Qzone方案可以做到發(fā)布產(chǎn)品功能,但是它主要問題是插樁帶來Dalvik的性能問題,以及為了解決Art下內(nèi)存地址問題而導致補丁包急速增大的。

Tinker的具體設計目標如下:

開發(fā)透明:開發(fā)者無需關心是否在補丁版本,他可以隨意修改,不由框架限制。

性能無影響:補丁框架不能對應用帶來性能損耗。

完整支持:支持代碼,So 庫以及資源的修復,可以發(fā)布功能。

補丁大小較小: 補丁大小應該盡量的小,提高升級率。

穩(wěn)定,兼容性好:保證微信的數(shù)億用戶的使用,盡量減少反射。

GitHub地址

Star數(shù)量:6707

Twitter開源軟件項目列表

從Twitter的GitHub賬戶中可以看到,Twitter已經(jīng)開源的開源項目有近200個,領域涉及分布式架構(gòu)、大數(shù)據(jù)、異步網(wǎng)絡傳輸(客戶端、服務端)、Web、工具等。Twitter可以稱為構(gòu)建于開源項目之上,該公司開源負責人Chris Aniszczyk表示,如果沒有開源軟件,Twitter將不會存在,用戶在移動端和PC端發(fā)送和接收的每一條推文都會需要開源軟件。

Twitter從開源社區(qū)中獲得了大量的好處,而Twitter也在不斷地回饋社區(qū),開源了大量基礎設施和工具,使得其他企業(yè)和開發(fā)者不必重新發(fā)明輪子,在這些開源項目的基礎上更加快速地實現(xiàn)自己所需。可以看到,Twitter在開源社區(qū)的貢獻是顯著的,甚至其貢獻的某些開源項目在一定程度上比Twitter本身帶來的影響力更大。

下面是InfoQ編輯整理的Twitter現(xiàn)有的比較活躍的開源項目列表,歡迎交流討論。

jQuery插件,快速、全功能的自動完成庫:Typeahead.js

Typeahead.js是Twitter的一個jQuery插件,支持遠程和本地的數(shù)據(jù)集。比較有特色的地方在于,你可以將數(shù)據(jù)集使用本地存儲(local storage)來保存在本地,有效的提高用戶體驗。同時也擁有很多遠程數(shù)據(jù)集的處理選項,例如請求頻率,最大的并發(fā)請求數(shù),等等。它的主要特性有:

支持數(shù)據(jù)本地保存,客戶端加載,優(yōu)化加載速度;

支持多語言,并且支持阿拉伯文;

支持Hogan.js模板引擎整合;

支持多數(shù)據(jù)集拼裝;

支持本地和遠程的數(shù)據(jù)集。

GitHub主頁

Star數(shù)量:12700

JavaScript庫:Twemoji

Twemoji是Twitter于2014年開源的完整的Emoji表情圖片,Twemoji包含872個表情,兼容最新的Unicode 7.0。Emoji,來自日本的小巧符號,通過圖像表達感情,已經(jīng)征服了移動互聯(lián)網(wǎng)的信息世界。現(xiàn)在,你可以在虛擬世界中隨處使用它們。開發(fā)者可以去GitHub下載完整的表情庫,并把這些表情加入到自己的應用或網(wǎng)頁中。

GitHub主頁

Star數(shù)量:4899

JavaScript模板引擎:Hogan.js

Hogan.js是Twitter團隊所制作的一個針對mustache模板的語法解析器。Hogan.js不依賴其他任何庫或框架,同時保證了高效率的模板解析,而其體積卻僅有2.5K。用它作為你的一部分資產(chǎn)打包編譯模板提前或?qū)⑺ㄔ谀愕臑g覽器來處理動態(tài)模板。

GitHub主頁

Star數(shù)量:4470

RPC框架:Finagle

Finagle是一個允許開發(fā)者使用Java、Scala或其他JVM語言來構(gòu)建異步RPC服務器和客戶端的庫,主要用于Twitter的后端服務。Finagle是Twitter基于Netty開發(fā)的支持容錯的、協(xié)議無關的RPC框架,該框架支撐了Twitter的核心服務。

Twitter面向服務的架構(gòu)是由一個龐大的Ruby on Rails應用轉(zhuǎn)化而來的。為了適應這種架構(gòu)的變化,需要有一個高性能的、支持容錯的、協(xié)議無關且異步的RPC框架。在面向服務的架構(gòu)之中,服務會將大多數(shù)的時間花費在等待上游服務的響應上,因此使用異步的庫能夠讓服務并發(fā)地處理請求,從而充分發(fā)揮硬件的潛能。Finagle構(gòu)建在Netty之上,并不是直接在原生NIO之上構(gòu)建的,這是因為Netty已經(jīng)解決了許多Twitter所遇到的問題并提供了干凈整潔的API。

GitHub主頁地址

Star數(shù)量:4690

自動化測試工具:Diffy

Diffy是一個開源的自動化測試工具,它能夠自動檢測基于Apache Thrift或者基于HTTP的服務。使用Diffy,只需要進行簡單的配置,之后不需要再編寫測試代碼。

Diffy主要基于穩(wěn)定版本和它的副本的輸出,對候選版本的輸出進行比較,以檢查候選版本是否正確。因此,Diffy首先假設候選版本應該和穩(wěn)定版本有“相似”的輸出。即不論候選版本和穩(wěn)定版本系統(tǒng)模塊是否相同,他們的最終輸出應該是“相似”的。這里一直使用“相似”,而不是使用相同,是因為相同請求可能會有一些Diffy不需要關心的干擾,比如:

響應中包含服務器生成的時間戳;

代碼中使用了隨機數(shù);

系統(tǒng)服務間有條件競爭。

GitHub主頁地址

Star數(shù)量:2544

Scala庫:Scalding

Scalding是一個Scala庫,簡化了Hadoop MapReduce作業(yè)開發(fā),基于Cascading構(gòu)建。Scalding跟Pig類似,但提供更緊密的Scala集成。Scalding是用于Cascading的Scala API。Cascading是一個構(gòu)建于Hadoop上的API,用來創(chuàng)建復雜和容錯數(shù)據(jù)處理工作流,它抽象了集群拓撲結(jié)構(gòu)和配置,允許開發(fā)者快速開發(fā)復雜分布式的應用,而不用考慮背后的MapReduce。

GitHub主頁地址

Star數(shù)量:2536

數(shù)據(jù)實時分析平臺:Heron

2016年5月25日,Twitter正式宣布Heron開源。Heron的基本原理和方法:實時流系統(tǒng)是在大規(guī)模數(shù)據(jù)分析的基礎上實現(xiàn)系統(tǒng)性的分析。另外,它還需要:每分鐘處理數(shù)十億事件的能力、有秒級延遲,和行為可預見;在故障時保證數(shù)據(jù)的準確性,在達到流量峰值時是彈性的,并且易于調(diào)試和在共享的基礎設施上實現(xiàn)簡單部署。

為了滿足這些需求,Twitter討論出了幾種方案,包括:擴展Storm、使用其他的開源系統(tǒng)、開發(fā)一個全新的平臺。因為有幾個需求是要求改變 Storm的核心架構(gòu),所以對它進行擴展需要一個很長的開發(fā)周期。其他的開源流處理框架并不能完美滿足Twitter對于規(guī)模、吞吐量和延遲的需求。而且,這些系統(tǒng)也不能兼容Storm API——適應一個新的API需要重寫幾個topologies和修改高級的abstractions,這會導致一個很長的遷移過程。所以,Twitter決定建立 一個新的系統(tǒng)來滿足以上提到需求和兼容Storm API。

在Twitter,Heron作為主要的流媒體系統(tǒng),運行數(shù)以百萬計的開發(fā)和生產(chǎn)topologies。由于Heron可高效使用資源,在遷移Twitter所有的topologies后,整體硬件減少了3倍,導致Twitter的基礎設置效率有了顯著的提升。

GitHub主頁地址

Star數(shù)量:1873

Web安全開發(fā)工具:SecureHeaders

SecureHeaders是Twitter送給Web開發(fā)者的一份大禮,作為一款Web安全開發(fā)工具,Secureheaders能夠自動實施安全相關的header規(guī)則,包括內(nèi)容安全政策(CSP),防止XSS、HSTS等攻擊,防止火綿羊(Firesheep)攻擊以及XFO點擊劫持等。

GitHub主頁地址

Star數(shù)量:1697

代理服務器:Twemproxy

Twemproxy是一個快速的單線程代理程序,支持Memcached ASCII協(xié)議和更新的Redis協(xié)議。它全部用C寫成,使用Apache 2.0 License授權(quán)。Twemproxy的強大之處在于可以通過配置的方式讓它禁用掉失敗的結(jié)點,同時還能在一段時間后進行重試,抑或使用指定的鍵->服務器映射。這意味著在將Redis用作數(shù)據(jù)存儲時,它可以對Redis數(shù)據(jù)集進行分片(禁用掉結(jié)點驅(qū)逐);在將Redis用作緩存時,它可以啟用結(jié)點驅(qū)逐以實現(xiàn)簡單的高可用性。它的特性是:

通過代理的方式減少緩存服務器的連接數(shù);

自動在多臺緩存服務器間共享數(shù)據(jù);

通過不同的策略與散列函數(shù)支持一致性散列;

通過配置的方式禁用失敗的結(jié)點;

運行在多個實例上,客戶端可以連接到首個可用的代理服務器;

支持請求的流式與批處理,因而能夠降低來回的消耗;

速度快;

輕量級。

GitHub主頁地址

Star數(shù)量:5434

微軟開源軟件列表

提起微軟公司,不少人第一反應是老牌巨頭專注于私有化軟件盈利模式,這大抵是源于微軟前CEO Steve Ballmer曾經(jīng)宣稱“Linux是顆毒瘤(Linux is a cancer)”,并曾經(jīng)偏執(zhí)地認為所有開源軟件都不值一提。但是,這是2001年的事情了,是時候更新大家對微軟的刻板印象。

2014年10月,出任微軟首席執(zhí)行官的薩提亞 納德拉,第一次公開宣布“微軟愛Linux”。同年,微軟首次發(fā)布.NET Core并將其開源;眾所周知,微軟核心的技術(shù)棧長期以來基于.NET和Windows綁定。在重寫標準庫之后,2016年6月.NET Core 1.0實現(xiàn)跨平臺(Windows、Linux和Mac),這意味著開發(fā)者可以使用Windows開發(fā)而Linux部署。

2016年3月,Windows原生支持 Ubuntu Linux Bash, 這意味著Windows操作系統(tǒng)級別的開放,Win10 可以當作一臺Ubuntu開發(fā)機來使用。此外,微軟稱Azure全面支持所有開源技術(shù)棧,并且從IaaS(VM),PaaS和SaaS(CRM、PowerBI、Office365)全面支持用戶的靈活選擇。

InfoQ對數(shù)個較受社區(qū)歡迎的項目進行了整理如下:

Visual Studio Code:跨平臺源代碼編輯器

Visual Studio Code是微軟于2015年正式發(fā)布的項目,可以運行在Mac OS X、Windows和Linux之上,面向Web和云應用的一款跨平臺源代碼編輯器。

雖然它的名字與Visual Studio相近,但前者是代碼編輯器,后者是集成開發(fā)環(huán)境(IDE)并且目前只運行在Windows上。

Star數(shù)量: 24.3k; Fork數(shù)量:3.3k

GitHub主頁地址

TypeScript:開源編程語言,JavaScript的超集

TypeScript是JavaScript強類型的超集,可以編譯成純JavaScript。由微軟開發(fā)的自由和開源的編程語言,可以運行在各類瀏覽器和操作系統(tǒng)之上。

Star數(shù)量:19.8k ;Fork數(shù)量:2.8k

GitHub主頁地址

CNTK: 深度學習開源工具包

CNTK全稱為The Microsoft Cognitive Toolkit, 將神經(jīng)網(wǎng)絡描述為計算機可處理的有向圖,有向圖的葉節(jié)點表示輸入值或網(wǎng)絡參數(shù),其他節(jié)點表示輸入對應的矩陣運算。CNTK便于實現(xiàn)并且也結(jié)合了很多流行計算模型如前饋DNN,卷積網(wǎng)(CNN)和復現(xiàn)網(wǎng)絡(RNN / LSTM)。它可以跨多個GPU和服務器實現(xiàn)隨機梯度下降(SGD,誤差反向傳播)學習與自動微分和并行化。

可以在Python或者C++語言中如同庫版應用,也可以使用其自有的描述語言BrainScript單機化使用。CNTK可適用于64位的Linux和Window,于2015年4月開源。

下圖比較CNTK的處理速度(每秒處理的幀數(shù))與四個其他眾所周知的工具包的處理速度。 配置使用完全連接的4層神經(jīng)網(wǎng)絡(參見微軟的基準腳本)和有效的迷你批量大小(8192)。在相同硬件上獲得的結(jié)果。

Star數(shù)量:9.9k;Fork數(shù)量:2.4k

GitHub地址

Donnet:采用系統(tǒng)虛擬機運行的編程平臺

.NET是微軟研發(fā)的XML Web services平臺,此框架支持多種語言(如C#、F#、VB.Net、C++、Python等)的開發(fā)。.NET框架歷經(jīng)亟待,最終于2014年開源。

C#通常被認為是微軟專屬,是.NET框架上最常用的編程語言之一, 其著名競爭對手是Java。

Star數(shù)量: 7.8k ;Fork數(shù)量:1.2k

GitHub主頁地址

PowerShell :為任何系統(tǒng)提供Windows的命令行工具

一個跨平臺(Windows、Linux和macOS)自動化和配置工具/框架,可與現(xiàn)有工具完美配合,并優(yōu)化用于處理結(jié)構(gòu)化數(shù)據(jù)(例如JSON,CSV,XML等)、REST API 和對象模型。 它包括命令行shell,相關的腳本語言和用于處理cmdlet的框架。

Star數(shù)量:6.4k;Fork數(shù)量:800

GitHub地址

MSOpenTech/redis: 在Windows使用Redis

官方只支持64位,可自行構(gòu)建32位版。

該開源項目,在2.8版本中,替代UNIX fork()API中的內(nèi)存映射文件模擬寫時復制行為。 版本3.0類似,為了便于系統(tǒng)文件分頁,刪除了內(nèi)存映射文件,在管理堆碎片方面進行了改進。

Redis對文件描述符的值做了一些假設,微軟構(gòu)建了一個虛擬文件描述符映射層。

Star數(shù)量:5.8k;Fork數(shù)量:8.7k

GitHub地址

WinObjc:Windows下的Objective-C

為Visual Studio提供了一個Objective-C開發(fā)環(huán)境并支持iOS API。通過重新使用Objective-C代碼和iOS API,配以Windows自有Cortana(中文名:微軟小娜,微軟發(fā)布的全球第一款個人智能助理)和通知等功能,用戶可以創(chuàng)建通用Windows平臺(UWP)應用程序并運行在Windows設備上。

Star數(shù)量:5.8k;Fork數(shù)量:745

GitHub地址

GitHub地址

ASP.NET之MVC核:模型(model)-視圖(view)-控制器(controller)框架

旨在TDD友好,用于創(chuàng)建符合最新Web標準的復雜應用程序、構(gòu)建動態(tài)網(wǎng)站,可以在IIS中托管或自我托管。

Star數(shù)量:4.4k;Fork數(shù)量:1.6k

GitHub地址

BashOnWindows:解決Ubuntu Bash在Windows的使用問題

微軟在Build 2016大會上宣布了一條振奮人心的消息,大家驚呼Ubuntu on Windows。Bash on Windows 為開發(fā)者們提供了Bash shell、Linux類似環(huán)境,在不需要Linux虛擬機的情況下,大部分的Linux命令行工具基本上可以不經(jīng)修改地運行在Windows上。

Star數(shù)量:3.7k;Fork數(shù)量:129

GitHub地址

Azure相關:文檔、SDK和代碼示例

微軟支持開發(fā)者們將各種開源軟件工具和技術(shù)帶入Azure。Azure 應用市場支持很多Linux 分發(fā),包括 Ubuntu、Debian 和 SUSE;也支持借助支持 Node.js、PHP、Python 和 Java 的 Azure 應用服務,生成 Web 和移動應用。

在GitHub上Azure相關的存儲庫有1700+個。

Star數(shù)量(共計):149k;Fork數(shù)量(共計):291k

地址

鏈接已復制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 成都市| 朝阳市| 旬阳县| 华阴市| 邵武市| 波密县| 浮山县| 南木林县| 宁河县| 遵义市| 五原县| 南岸区| 于田县| 腾冲县| 长武县| 阿瓦提县| 文山县| 金湖县| 霍山县| 宁海县| 牡丹江市| 桦南县| 长治县| 石家庄市| 云林县| 嘉鱼县| 鄂尔多斯市| 宜昌市| 浦县| 瑞安市| 萨迦县| 海安县| 佛冈县| 进贤县| 子长县| 稷山县| 昆山市| 沛县| 广灵县| 安西县| 九龙坡区|