github官网上有mcc的开源吗

Python015

github官网上有mcc的开源吗,第1张

在致力于开源事业的同时,Github也使用一些非常优秀的开源项目的来打造自己的平台与服务,本文总结了Github所用到各种开源项目,它们分别扮演着不同的角色。

1.Linguist

Linguist直译是语言学家的意思,采用Ruby开发。使用它可以自动分辨项目所使用的开发语言。Github使用该开源项目主要是用来探测代码所用语言,突出显示代码、忽略二进制文件、防止文件生成存在差异以及生成语言分解图等。

托管地址: https://github.com/github/linguist

2.pjax

pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。同时支持缓存和本地存储,再次访问的时候可以直接读取本地数据。展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。

官网: http://pjax.heroku.com/

托管地址: https://github.com/defunkt/jquery-pjax

3.Elasticsearch

Elasticsearch是一个实时的、分布式的RESTful搜索引擎,基于Apache Lucene开发。具备高可靠性,支持非常多的企业级搜索用例。它对外提供一系列基于Java和HTTP的API,用于索引、检索、修改大多数配置。

官网: http://www.elasticsearch.org/

托管地址: https://github.com/elasticsearch/elasticsearch

4.Ruby on Rails

Rails是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发代码更少,使用最少的配置。

官网: http://rubyonrails.org/

托管地址: https://github.com/rails/rails

5.redis

Redis是一个开源、支持网络、基于内存、键值对存储的数据库。基于C语言开发,与其他很多键值对数据库的不同之处在于, Redis不仅支持简单的字符串键值对,它还提供了一系列数据结构类型值,比如列表、哈希、集合和有序集, 并在这些数据结构类型上定义了一套强大的API。

官网: http://redis.io/

托管地址: https://github.com/antirez/redis

6.sprockets

sprockets是一个Ruby库,用于编译和服务Web资产。它可以用来检查JavaScript和CSS等文件之间的依赖关系,它还拥有一个强大的预处理器管道,允许开发者在CoffeeScript、Sass、SCSS和LESS等语言里编写资产。

托管地址: https://github.com/sstephenson/sprockets

7.libgit2

libgit2是一个可移植、纯C语言实现的Git核心开发包,作为一款带有稳固API的可重入链接库,libgit2允许你使用任何语言来编写Git应用。此外,libgit2可以应用在各个平台上,包括Unix、Linux、MacOS X、Windows等。

官网: http://libgit2.github.com/

托管地址: https://github.com/libgit2/libgit2

8.Rugged

Rugged是一个C语言实现的库,主要用来支持在Ruby中访问libgit2开发包。

托管地址: https://github.com/libgit2/rugged

9.bcrypt-ruby

bcrypt-ruby是一个用于OpenBSD bcrypt()密码哈希算法的Ruby绑定,开发者可以使用它把用户密码变成哈希数,安全地存储用户密码,预防黑客攻击。

官网: http://bcrypt-ruby.rubyforge.org

托管地址: https://github.com/codahale/bcrypt-ruby

10.html-pipeline

Github HTML处理过滤器和工具,是由几个HTML工具打包而成的。该模块还包含一个基于内容过滤来定义DOM的小型框架。

托管地址: https://github.com/jch/html-pipeline

11.gemoji

gemoji里面主要包含emoji表情的图片和名称。

托管地址: https://github.com/github/gemoji

12.Jekyll

Jekyll是一个静态站点生成器,它会根据网页源码生成静态文件。它提供了模板、变量、插件等功能,所以实际上可以用来编写整个网站。

官网: http://jekyllrb.com/

托管地址: https://github.com/jekyll/jekyll

13.Gollum

Gollum是一个简单的基于Git的wiki系统,Github的wiki就是由它实现的。支持markdown编写。它同时带有一个本地的前端,你可以在浏览器里编写保存页面,系统会在后端自动提交。因为它是一个Git repo,所以你也可以把它push到GitHub。

托管地址: https://github.com/gollum/gollum

14.Octokit

Octokit是Github API客户端库集合,允许开发者使用自己擅长的编程语言来访问Github API。Octokit项目包含Ruby、Objective-C和.NET、GO客户端。

托管地址: https://github.com/octokit

15.Hubot

Hubot是Github开源的运维机器人,它在Github员工的日常生活中扮演着非常重要的角色。它非常灵活,任何人都可以编写自己的脚本来扩展基本功能。脚本使用的语言是CoffeeScript,而Hubot运行在Node.js上。

官网: http://hubot.github.com/

托管地址: https://github.com/github/hubot

16.D3.js

D3.js是一个基于JavaScript数据展示库,用于操作基于数据的HTML文档。它能够帮助我们以HTML或SVG的形式快速可视化展示,进行交互处理,合并平稳过渡,在Web页面演示动画。它既可以作为一个可视化框架(如Protovis),也可以作为构建页面的框架(如jQuery)。

官网: http://d3js.org/

托管地址: https://github.com/mbostock/d3

17.Plax

Plax是一个jQuery插件,可以通过鼠标的悬浮或移动来触发视差滚动效果。开发者可以使用它制作404、500以及About页面。

官网: [/url][url=http://cameronmcefee.com/plax/]http://cameronmcefee.com/plax/

托管地址: [/url][url=https://github.com/cameronmcefee/plax]https://github.com/cameronmcefee/plax

18.Ace

Ace是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何Web页面或JavaScript应用程序中。Ace支持超过40种语言语法高亮,并能够处理代码多达400万行的大型文档。Ace开发团队称,Ace在性能和功能上可以媲美本地代码编辑器(如Sublime Text、TextMate和Vim等)。

官网: [/url][url=http://ace.c9.io/]http://ace.c9.io/

托管地址: [/url][url=https://github.com/ajaxorg/ace]https://github.com/ajaxorg/ace

19.Zepto.js

Zepto是为现代浏览器打造的轻量级JavaScript库,它与jQuery有着类似的API。如果你会jQuery,那么也就会使用Zepto了。

官网: http://zeptojs.com/

托管地址: [/url][url=https://github.com/madrobby/zepto]https://github.com/madrobby/zepto

20.ZeroClipboard

ZeroClipboard使用一个不可视化的Adobe Flash动画和一个JavaScript接口即可轻易把文本的拷贝到粘贴板的库。

官网: [/url][url=http://zeroclipboard.org/]http://zeroclipboard.org/

托管地址: https://github.com/zeroclipboard/zeroclipboard

21.Charlock Holmes

Charlock Holmes是一个字符编码检测库,主要用于检测字符和代码转换,以确保代码字符为UTF-8。

托管地址: https://github.com/brianmario/charlock_holmes

22.Puppet

Puppet是一个自动管理引擎,可以适用于Linux、Unix以及Windows平台。所谓配置管理系统,就是管理机器里面诸如文件、用户、进程、软件包这些资源。无论是管理1台,还是上万台机器Puppet都能轻松搞定。

官网: http://www.puppetlabs.com/puppet/introduction/

托管地址: https://github.com/puppetlabs/puppet

23.Moment.js

Moment.js是一款非常轻量且健壮的JavaScript日期处理类库,提供了日期格式转换、日期验证等功能。Github使用它主要用来显示前端时钟。

官网: http://momentjs.com/

托管地址: [/url][url=https://github.com/moment/moment]https://github.com/moment/moment

24.Bower

Bower是由Twitter开源的一款包管理器,主要用于Web前端开发。它提供了一套通用、客观的解决方案。它通过一个API暴露包之间的依赖模型,这样更利于使用更合适的构建工具。Bower没有系统级的依赖,在不同App之间也不互相依赖,依赖树是扁平的。

官网: http://bower.io/

托管地址: [/url][url=https://github.com/bower/bower]https://github.com/bower/bower

25.Resque

Resque是一个基于Redis的后端Ruby库,由Github开源。其主要用来创建后台任务、并且把这些任务安置在多个队列上,等待处理。它还自带前台管理功能,方便查看执行情况。

托管地址: [/url][url=https://github.com/github/resque]https://github.com/github/resque

可以说,开源成就了Github,Github也推动了全球开源事业的发展。越来越多的互联网公司重视开源事业的发展,并且积极投身到开源事业当中。

Github在3月19号开放了新的项目展示页面(Showcase),Showcase根据项目属性来组织、定义一系列的开源项目列表,可以更清晰的发现你所需要的开源项目。在3月26日的Showcase中,Github放出了一个新的类目:支撑Github的开源技术,这里列举了Github所使用的一些主要的开源项目。

如下是这些开源项目的介绍:

linguist

语言识别库,能够自动根据项目的代码来识别你所使用的语言。 在你的项目源代码页面,可以看到一个彩条,点开以后会显示项目中的编程语言比例。linguist主要通过文件的后缀来识别,对于一些通用的扩展名,例如.m文件,linguist通过一些语言的特征片段来做判断。由于编程语言很多,linguist还不能覆盖所有语言的检测。

jquery-pjax

pjax是Github的联合创始人之一defunkt的作品,它使用html的pushState特性与ajax,可以实现页面内容动态局部刷新,当点击项目源代码页面中具体的一个文件或者文件夹时,你将会看到页面的其他部分是不变的,只有定义的页面DOM会刷新,这里使用的就是pjax。

elasticsearch

Eleasticsearch支撑了Github的搜索功能,2年之前Github使用Solor做搜索,随着用户和托管项目的增加,索引的大小超过了solor节点的最大存储空间,也出现了很多的问题,Github团队在思考解决方案时决定使用Elasticsearch做替换。Github最开始使用ES时,使用了44台亚马逊EC2实例,每台实例配备2T的存储,其中8台实例指负责查询请求。目前,Github已经将原有的EC搜索集群迁移到了东海岸的一个数据中心,使用8台物理主机替换了44台EC2。

Rails

Ruby实现的MVC Web框架。Github的用户界面和功能大部分基于Rails构建,不过需要注意的是现在虽然Rails的项目版本已经发展到了Rails 4,但是Github依旧使用的是自己维护的2.3分支,对于不保持和现有的Rails主版本号一致的原因,Github员工Kneath做了如下的解释:

. 花更过的时间来升级更新Rails,将会减少为用户构建新特性的时间,我们更关注用户;

. 性能问题是一个很重要的考虑。在过去的几年中,我们极大的减少了响应时间。而升级Rails不仅会带来一个更慢的框架,而且还会引入一个不同的架构——我们需要再根据新的框架特性来定位优化性能。我们对于现有的框架已经做了很多的优化以保持性能稳定,最主要的是:将时间花费在升级上不会让我们的架构更快。

. 过去的三年我们一直在升级这个堆栈,不升级Rails版本我们依然可以使用新的特性。

Redis

Redis是K/V存储系统,知名的NoSQL实现之一,在Github,主要使用Redis来进行队列中的异常处理。在Github早期,曾尝试过很多的基于Ruby的队列机制,也曾使用Amazon SQS,但是这些方案都不能在Github快速增长的同时满足稳定性要求,最终Github迁移到了使用Redis的技术方案resque。

sprocket

Sprocket是一个网站资源打包的Ruby库,它不仅能够管理JavaScript和CSS资源,还可以按照pipline的方式来流式预处理CoffeeScript、Sass、SCSS和LESS代码等;

libgit2

libgit2是一个可移植、纯C语言实现的Git核心方法类库,提供API重新链入Git方法。Github的背后使用的原生的git来实现commit、push等功能,但是使用libgit2来针对桌面应用调用、Ruby代码中调用等;

rugged

libgit2的Ruby类库;

bcrypt-ruby

OpenBSD bcypt()密码哈希算法的Ruby实现;

html-pipeline

html-pipline是一个gem包,可以将现有Github前端HTML中的一些特性进行流式处理,例如在Github的评论框中,你可以@某一个人、输入emoji的表情、使用markdown的语法来写内容等,但是这些都是由单独的插件来控制的,html-pipeline可以流式的使用相应的插件处理原始内容,例如先将markdown转义成html,继而自动添加emoji表情,然后进行代码的语法高亮等。

gemoji

在2013年的QCon北京前夜:Github Drink Up活动中,来自Github的工程师Tim在现场的活动中谈到了他们的一个文化:使用emoji。他解释道:“很多情感使用文字不能做出形象的表达,但是使用emoji表情却能够起到不一样的效果”。在Github现有评论框或其他内容中,都可以看到emoji的身影,所使用的就是gemoji这个gem包。

jekyll

Jekyll是一个静态博客生成的程序,Github中项目的Page页面,默认选型使用的就是jekyll。

gollum

Gollum是一套基于git的wiki系统,Github项目的wiki系统背后使用的就是这套开源框架;

octokit.rb

Github API的官方Ruby SDK;

Hubot

Hubot是Github自行开发的一个聊天机器人,当然它已经超过了聊天机器人的范畴,Github作为一个异步办公的团队,日常的协作、沟通很大部分依赖于聊天室,通过Hubot,Github的员工可以在聊天室中给机器人定制一些特定的回复、3D打印模型,甚至通过hubot来部署生成环境的代码、获取服务状态等,在2013年的QCon北京中,Giuthub的工程曾针对如何使用Hubot做运维进行过分享:《ChatOps at GitHub》。

d3

d3是使用JavaScript实现的数据可视化框架,使用HTML、SVG和CSS等,在d3的基础之上发展处诸如crossfilter、NVD3.js等一系列扩展或者简化框架,并且形成了一个良好的社区。作者mbostock目前供职于NYTimes,d3是他的博士论文项目,目前Github使用d3来展示托管项目提交历史、记录等的可视化效果图。

plax

plax是控制视差元素的JavaScript类库,你可以在404、505等页面看到它的实现效果。

ace

Ace是一个使用Javascript开发的代码编辑器,具备语法高亮、快捷键绑定等特性, Github使用Ace实现基于web的代码编辑功能。

zepto

Zepo是一个JavaScript框架,其特点是兼容现有jQuery API的同时,自身体积十分小;

zeroclipborad

Github的“点击复制到粘贴板”的功能就是使用的zeroclipboard,zeroclipboard使用一个不可见的Adobe Flash动画来实现复制粘贴,并提供Javascript的API接口以供调用。

charlock_holmes

charlock_holmes用来检测字符编码格式,并可以自动将字符编码转化成UTF-8。

puppet

服务器运维工具,可以进行自动化部署、集群管理等。

moment

moment是一个日期框架,用于解析、验证、格式化日期等,其中一个常用的功能是将原始的Javascript时间类型转化成方便阅读的时间说明格式,例如:”2小时之前“、”3天之前“这种形式。

bower

前端资源包管理工具,可以通过bower install <package>的形式将常用的前端资源下载到本地的项目目录中,例如:bower install bootstrap将会自动下载bootstrap的项目资源到本地的项目目录中,不需要自己手动来下载、移动资源文件,并且通过配置文件可以方便分享给同事、简化项目初始化等;

resque

Resque是Github Enterprise中使用的一个基于Redis的后台作业控制系统,提供可视化的界面,可以方便的监控后台作业的运行状态和监控情况。

另外,Github还发布了“支撑Github Windows客户端的开源项目”和“支撑Github Mac客户端的开源项目”两个Showcase。