那些年,追过的开源软件和技术

> 开源的浏览器、下载软件、压缩软件还是视频播放器等领域
养活了一票国产浏览器:Chromium;国产播放器的大奶妈:FFmpeg;占了便宜还被踢出门:7-Zip;为老司机铺开康庄大道:eMule;智能路由器的力量之源:OpenWRT

> 优秀的开源软件

笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己接触到这么多优秀的开源软件给大家做个梳理。也许比较枯燥无聊,供大家以后查阅。

LAMP:

属于创业公司的最经典组合。

Linux: 不用说,大多数公司都用这个,随着虚拟机越来越成熟,大家喜欢创建虚拟的Image,来提供某个Linux版本,我接触过一些常用的,Ubuntu,Redhat,Debian, Gentoo, CentOS, Federo,OpenSuse。

Apache: 最著名的web server,Apache也是开源最活跃的社区,非常成熟的web服务器,有段时间被性能卓越的Nginx赶超,但目前稳定性和模块成熟度还是最高,广受好评。有人比较这两者的差异:Nginx vs Apache

PHP:当时很多网站用Java写的,php提出就是为了简化网站开发,为web而写。Facebook早年也是PHP写的,是很灵活的脚本语言,Coursera之前也是用Php搭建的,但却是很难维护,主要问题是每个人都可以写一个小框架,编程风格随便,难统一。除了Facebook他们花了大量人力去完善,基本上重写了Php,底层加速成C++,也发明了新语言Hack

MySQL:经典开源数据库,被Oracle收购,Facebook, Baidu, Taobao都是大量基于MySQL做出非常稳定靠谱的系统。我记得Pinterest也总结过他们为什么用MySQL提高他们的规模。

编程语言:

有个笑话,让程序员打架的一个最有效的方式是去讨论区问大家那种编程语言最好,这就会没完没了的讨论。大致分成C++派,Java派,Python等脚本派。

C/C++: 可能很多人入门都是啃着谭浩强的C程序设计,这种语言很强大,既高性能,又灵活(指针,地址,二维指针,指针数组),名词特别多(多态,重载,重用,范型,模板类,元编程),坑也特别多,容易造成内存泄露,野指针,在大学里面吃了不少苦头,疯狂看各种C++经典,秘籍,后来去了创业公司和百度都是大量使用,里面也很多人玩的如火纯青,面试时候经常出个写个线程安全的C++单例模式,析构能否多态或者什么写个调用顺序,让面试者骚手挠腮,欲罢不能,想想自己也折磨过这些面试者,真是罪过啊。这几年视野广了,不接触C++了,回过头来看还是觉得当年有些走火入魔,没必要自己折磨自己。

Java: 估计是目前用的最广的项目语言,容易上手,概念简单,无数的库,大量的代码。我就不多介绍了,我自己也是大半的项目用Java写的。缺点时配置比较烦,很多什么XML,Config,适合写服务端。

LUA:大量应用在大型游戏的脚本语言,主要是高性能,语言规范精简、运行时库小,与C/C++交互方便,我在百度做云计算平台时候也是用它作为嵌入式脚本。

Python:跟Perl, PHP,合成3P语言,都是脚本:) 非常方便实用,初学编程就可以拿它练习,有很多方便的库,比如urlib, beautifulsoap。有句话说:人生苦短 我用Python。做数据分析的有个超好的工具叫iPython,它是结合在线notebook,可以交互式编程,非常爽。据说Python的创始人在Dropbox,当年他简历就一句话,说I wrote Python. 在面试Google时候还被一些人误会,想会python算个啥,但人家是作者。有一本书 集体智慧编程 (豆瓣) 用Python作为实践做机器学习,推荐给大家。

GO:Google开源的语言,比C++容易上手,却有相似的性能,很多从Google出来的人喜欢人,据说Square, Pinterest就在用。Go语言有哪些好处,谁用谁知道,为什么要使用 Go 语言,Go 语言的优势在哪里?

Scala:各种集大成,面向对象,函数式编程,面向过程。我目前也在学习,东西实在太多,Coursera上面有Scala作者的一门课,https://www.coursera.org/course/progfun 公司技术部也主推这种语言,这也是为啥我们墙上员工证书中最多就是Scala这门课的。另外著名的Spark,Kafka也是Scala写的,确实在高性能,高并发上面表现不错,又保持了优雅精炼的写法。值得玩味。

Javascript: 本来这是个前端客户端的动态语言,做一些页面特效,主要特点是天然支持异步,又跨平台,弱类型,比较安全 (有sandbox),有人把它拓展到后台,随着V8,Node.js, Angular出现也显得越来越厉害了。

还有一些语言,Ruby,R,Object-C, Swift,Matlab, Perl, SQL, D, Lisp就是偶尔用了,有个TIOBE编程语言排名。

J2EE 三剑客:

Java出来之后,为了提高大规模网站的开发效率,提出了很多框架,最经典就是分层J2EE, 在企业级,如银行系统大量使用,什么servlet,java bean,EJB,RMI,JMS, JSP,JNDI,JDBC,容器,管道,数据库连接池,当时最火的就是什么Java架构师,年薪百万啊有木有。那当然一般人玩不会了,后来出现了轻量级的MVC解耦合分层结构,在本科时候经常做管理系统,就使用这种轻量级J2EE框架,搭系统。里面重要3个组件

Hibernate:数据持久框架,ORM,对数据库的CRUD操作进行对象化映射。

Spring MVC: 中的控制层,但容易造成Config的泛滥,后来Linkedin中起了个项目就叫Kill Spring,改成下面提到的Rest.Li

Struts:View层,有很多tag库可以选择,有个JSTL 标签可以搭配选择。

Web 服务器:

Lighttpd:当时在百度我就是把它作为云平台(Baidu App Engine)的服务器。为了彻底搞懂它,我真的看了它所有的源代码,代码很精炼,大概5w行,又研读了所有它的maillist,jira上面的进度,还给开源社区打了补丁。感觉就像武林高手修炼一样。

Nginx:高性能web服务器,异步,C10K (意思是单机同时维持一万的连接)杰出代表。俄国人写的,代码可读性不如上面的,但确实功能更强大些。

Tomcat/Jetty: Java J2EE容器,经常用的,我记得当时最喜欢看到配置成功后,页面显示的小猫图案。在Linkedin,这两个都用。一个用来做前端服务器,一个用来做后端。

框架:

Rest.li:RESTful是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。使用HTTP协议中的请求方法来对应后端操作数据时候的增删添改(CRUD)。LinkedIn提出Rest.Li编程框架,是一款REST+JSON框架,使用动态发现和简单的异步API即可构建健壮可伸缩的服务架构体系。

Thrift:Apache Thrift 是Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。

ProtoBuf:Google提出的跟上面很像,用来序列化结构化数据的技术,支持多种语言持久化数据或者序列化成网络传输。

CloudStack:cloud computing框架。

Helix:通用的集群管理框架,Linkedin出品。

前端技术

其实前端我接触的并不多,但现在不是提倡Full Stack全栈工程师嘛。如果你掌握下面的会让你如鱼得水,不需要被UI,UE人员优先级而影响。

Ruby on Rails:在web2.0时代,RoR一下子获得很多创业公司的青睐,开发者将Rails作为一个框架来创建数据库支持的Web应用,它本身是一个完整的解决方案,通过默认的标准实践(convention)可以很大的加快开发效率,无缝的整合所有子组件以提供给开发者一个统一的接口。当时Twitter早期也是用这个框架写的,但这个也是双刃剑,在性能和内部机制上很难调节。

Django:Python的前端管理框架,直接生成管理页面。有人经常那上面的作为PK 相比于 Django、Pylon 等 Python 框架,Ruby on Rails 是否有很大的技术优势?

Smarty:PHP的一种模板语言,很容易上手。

Bootstrap:Twitter提出的HTML,CSS和JS框架,让你的web app容易适配到各种平台,比如手机上。

JQuery:Javascript的最流行的库,可以做一些Ajax调用。

HTML5:就是下一代的HTML标准,增加了一些兼容的便签,使得在手机和浏览器中阅读效果一致。对应的是Native APP,就是原生的从底层开始写的APP。当年Facebook是走HTML5的路,发现不对劲,性能很差,体验糟糕。赶紧转变成Native APP才让它重新赢得市场。

Node.js:js写的后端服务器,处理高并发场景性能佳,使用 Node.js 的优势和劣势都有哪些? 特别适合移动的服务器端。 Socket.IO是其中一个组件,为了在浏览器和移动设备上创建实时应用而产生的,它可以模糊不同传输机制之间的差异

D3:各种可视化的效果,确实非常酷。

Impress.js: 基于CSS3转换和过渡、工作于现代浏览器、并受prezi.com的理念启发的演示工具。

Backbone.js:前端的MVC,为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。

搜索

Nutch:是一个开源Java 实现的搜索引擎,当时Hadoop的前身就是为了做这个项目。

Lucene:基于Java的全文检索引擎,很有名也非常强大,elasticsearch就是基于这个开源基础二次开发。

Solr:基于Lucene的XML接口的独立运行的搜索服务器。通过HTTP协议以XML格式将文档放入搜索服务器(索引),GET来查询搜索服务器得到结果。

Sphinx:Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能。反正比MySQL内置的全文检索要快很多。

Hadoop生态系统

这一块关注过很久了,目前很多很成熟的组件。这是一张生态图,我大多数都在本文中介绍过了,主要的组件都是为了方便大家从底层的MapReduce模型中脱离出来,用高层语言来做分布式计算。

HBase:是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化数据集群。像Facebook,都拿它做大型实时应用 Facebook's New Realtime Analytics System: HBase to Process 20 Billion Events Per Day

Pig:Yahoo开发的,并行地执行数据流处理的引擎,它包含了一种脚本语言,称为Pig Latin,用来描述这些数据流。Pig Latin本身提供了许多传统的数据操作,同时允许用户自己开发一些自定义函数用来读取、处理和写数据。在LinkedIn也是大量使用。

Hive:Facebook领导的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计。像一些data scientist 就可以直接查询,不需要学习其他编程接口。

Cascading/Scalding:Cascading是Twitter收购的一个公司技术,主要是提供数据管道的一些抽象接口,然后又推出了基于Cascading的Scala版本就叫Scalding。Coursera是用Scalding作为MapReduce的编程接口放在Amazon的EMR运行。

Zookeeper:一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。

Oozie:一个基于工作流引擎的开源框架。由Cloudera公司贡献给Apache的,它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。

Azkaban: 跟上面很像,Linkedin开源的面向Hadoop的开源工作流系统,提供了类似于cron 的管理任务。

Tez:Hortonworks主推的优化MapReduce执行引擎,与MapReduce相比较,Tez在性能方面更加出色。

数据存储:(NoSQL)

当时为了解决Scale的问题,伴随分布式系统发展,形成各个NoSQL软件,百花齐放。下面介绍常见的一些:

Memcached:是高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。性能瓶颈第一个就要想到用这个。有点万金油的感觉。

Redis:一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多。

Cassandra:名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字。最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身,可扩展型和性能都不错,Coursera也是大量使用作为数据对象存储。

Berkeley DB:文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数。之后被Oracle收购了。

CouchBase:文档型数据库,由CouchOne与Membase合并,之后的公司叫做Couchbase,功能还是挺强大的,自动备份,自动分片,在Linkedin广告组和运维部门都大力推荐。

RocksDB: 比LevelDB更彪悍的引擎,代码层面上是在LevelDB原有的代码上进行开发的,但却借鉴了Apache HBase的一些好的idea。

LevelDB:Google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与value,并且这种映射关系按key排序(ordered mapping)

MongoDB:一个基于分布式文件存储的数据库。为WEB应用提供可扩展的高性能数据存储解决方案。 介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

有一些基于各种NoSQL 特性和性能的比较:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison

Benchmarking LevelDB vs. RocksDB vs. HyperLevelDB vs. LMDB Performance for InfluxDB

下面几个都是Linkedin开源的数据技术 Projects | LinkedIn Data Team

Voldemort:NoSQL 键/值存储引擎,完全是分布式且去中心化的,支持分区与容错。

Espresso:文档型NoSQL数据存储系统,MySQL作为底层数据存储,具有高性能、高扩展性、支持事务、容错能力等重要特征。

Databus:实时低延迟数据抓取系统

AMP Lab三剑客

AMP Lab 是Berkeley的一个王牌实验室,汇集系统,数据库,机器学习,各个领域的教授和丰富工业经验的学生,它们做出了很多有意思得到工业界认可的技术。

Mesos:一个分布式环境的资源管理平台,它使得Hadoop、MPI、Spark作业在统一资源管理环境下执行。它对Hadoop2.0支持很好。Twitter,Coursera都在使用。

Spark:已经成为Apache的顶级项目了,2014年的当红炸子鸡,我在这个帖子里面也介绍的比较全面了,有什么关于 Spark 的书推荐? - Spark,它们也成立公司Databricks对cloud管理进行产品化。

Tachyon:是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,就像Spark和MapReduce那样。有幸跟项目发起人李浩源聊过几次,这个项目目前发展非常快,甚至比Spark当时还要惊人。目前到0.6版本,参与开源的规模和版本迭代速度都很快。

先进大数据技术:流式,实时

由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。

Storm: 所谓流处理框架,就是一种分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易。经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Twitter是他们的主推。

Kafka: 是Linkedin开源的一种分布式发布-订阅消息系统,它主要用于处理活跃的流式数据。我面试过很多硅谷创业公司都在使用,比如最重要的用户Tracking数据。LinkedIn的开发者也出来成立公司Confluent,最新发布platform

Samza: 一个分布式流处理框架,专用于实时数据的处理,非常像Twitter的流处理系统Storm,LinkedIn开源了这项技术。跟上面的几个技术就可以比较一下了,https://tsicilian.wordpress.com/2015/02/16/streaming-big-data-storm-spark-and-samza/

SummingBird:将批处理和流处理无缝连接,通过整合批处理与流处理来减少它们之间的转换开销。把上面的Storm跟Scalding结合起来,所谓Lambda Architecture。跟这个相关组件是Algebird: 利用一些概率算法HyperLogLog来提高计算速度。

Drill:先说Dremel,是Google 的“交互式”数据分析系统。可以组建成规模上千的集群,处理PB级别的数据。MapReduce处理一个数据,需要分钟级的时间。Dremel将处理时间缩短到秒级。Apache推出Dremel的开源实现Drill。

Druid:在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、shared-nothing的架构,和一个高级的索引结构,来达成在秒级以内对十亿行级别的表进行任意的探索分析。

Impala: Cloudera公司主导开发的新型查询系统,它提供SQL语义,能够查询存储在Hadoop的HDFS和HBase中的PB级大数据,号称比Hive快5-10倍,但最近被Spark的风头给罩住了,大家还是更倾向于后者。

Spark Streaming:建立在Spark上的应用框架,利用Spark的底层框架作为其执行基础,并在其上构建了DStream的行为抽象。利用DStream所提供的api,用户可以在数据流上实时进行count,join,aggregate等操作。

Spark SQL: 之前Spark类似Hive的工具称为Shark,现在新替代就是Spark SQL, Big Data Benchmark 里面也跟Impala性能比较。

工具类:

Make:很多同学在学校时候,认为编程就是在编辑器里面运行,当离开了IDE,他们就不知道该怎么办。C语言的打包工具,比如解析依赖,生成二进制和可执行程序。

Ant:Java的传统打包工具,需要写个build.xml

Gradle:新一代的编译构建工具,结合ivy自动匹配和下载官方稳定版本

Maven:同上,有个比较Java构建工具:Ant vs Maven vs Gradle

Homebrew: 最近几年都用Mac平台,那么包的管理可以用这个

Eclipse:使用最广泛的IDE,著名的日蚀标识。它的出现就是吃掉SUN(Java诞生地),我大多时间用这个,后来也用过Intellij 不过是商业版本的。跟Eclipse相比,管理大型代码库时候速度快。

Docker:作为一种新兴的虚拟化方式,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多,运行时所需的资源比虚拟机少,而效率又比虚拟机高提供隔离的执行环境。算是2014年上升最快的一个工具了。

JUnit:java的单元测试,属于测试驱动的利器。

Git:强大的分布式代码版本管理,Linux那么多分支都没乱正是它的功劳。但还是挺复杂,一大堆命令比SVN要多多了。目前GitHub 就是最大的源码管理平台,我们公司也用它的企业版。有个结合Git和代码审查的工具由Facebook开发,Phabricator

SVN: 简化的代码管理,还有perforce Amazon和Google也用。最老的是CVS估计现在没人用了呃。

浏览器:

Firefox:开源浏览器,当时靠丰富插件很强大,就靠Google的默认搜索来维持,但Google也开发了Chrome,给Firefox市场份额极大打击。所谓成也Google,败也Google。这个组织是Mozilla,就跟Coursera是邻居。我当时用过很多插件,比如proxy,去除广告,Firebug来调试,还有什么换皮肤,监控网络流量等。

Webkit:自从苹果开源了这么好的内核引擎,Google就就直接用它开发了Chrome。当时做信息抽取,有一种办法是基于视觉的信息提取,VIPS算法,如果通过webkit,就可以拿到正文的一些具体坐标和字体颜色大小,然后再分块确定重点内容做提取。

Spidermonkey:就是Mozilla旗下的一个JS解析引擎,我用这个是因为当时为了抓取网页,一些很变态的网站比如水木社区:( 把内容写在javascript里面,都是用字符串拼接起来,我为了获取完整的源码就要涉及到JS的解析。

V8: Google 的一个开源项目,是一个高效的JavaScript 引擎,像Node.js基于Google V8提供了基于事件的I/O处理

转载地址:http://dongfei.baijia.baidu.com/article/48626?utm_source=open-open.com

-----------------------------------------------

开源介绍:http://netsmell.com/post/5-rules-about-open-source-with-xiaomi.html
在开源界这几个人是至关重要的:第一个是,Richard,他创建了自由软件基金,为后来的Linux发芽等等奠定了扎实的基础。第二个,Linus,Linux的创造者。最后一个是Eric

开源有三种力量,这是我总结的。第一,属于个人爱好者。这些人是狂热的技术爱好者。我很早以前,我的一个目标,就是等我财务自由以后,我去分享代码,享受那个成就感,为大家创造价值的成就感,这代表了一大帮技术爱好者,宅男。其中我合作过的一个作者,他是一位天文学的教授,有一天他写了一个非常好的文本管理器,可以帮你管理时间,记事等。他每天的工作几乎在上下班两个小时的地铁上或者轻轨上完成的。我看代码写的不太优雅,算法性能不够好,我以为他是很高的计算机高手,后来我发现他是学天文学的,后来我就理解了。但是他的一些算法不是特别美妙,但是对事情的推进还是有贡献的。
第二种我叫无开源模式,这里包括组织和学校,这些是以互联网服务或者以某种东西来盈利的,它不是通过开源的软件,或者解决方案来赚钱的。
第三种是有开源商业模式组织,包括IBM,也中国的华为,它们有一种商业模式在后面,利用网络硬件,设备,开源,有一整套的解决方案,对大的企业,通过整套的东西来盈利。所以三种的贡献者,三种的力量,对开源看法不同,贡献不同,投入也不同

在搭建运维架构、管理运维团队等多方面的实战经验。
刚从技术转向管理时,前期还是习惯性的冲到第一线,去攻坚和解决技术难题,后来在意识到这个问题后,才将更多的精力投入在人才的培养上面,在保证质量及稳定的前提下,只做方向上的把控,让大家真正放手去做,通过这样的方式迫使大家在短时间都迅速的成长了起来。
平时也比较注重团队氛围的建设,鼓励创新,鼓励大家把自己真实想法提出来,通过讨论确定阶段性目标,让大家都真正参与进来,为共同的目标奋进,在这种轻松平等的环境下,团队的创造性及积极性也有所保证。

> 开源巨献:百度71款开源项目- http://www.sohu.com/a/133106993_481898
1、Java图表库 ECharts
ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Java图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。

2、分布式配置管理平台 Disconf
Distributed Configuration Management Platform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。

3. 移动WebApp开发框架 Clouda
Clouda是基于node.js的Webapp开发框架,在使用Clouda时需要安装node.js和MongoDB。

4. 全新 3D 可视化库 ECharts-X
ECharts-X是 ECharts 团队推出的全新 3D 可视化库,它是基于 ECharts 的扩展,底层深度整合了 WebGL 库QTEK和 Canvas2D 库ZRender。

5. 百度的Java库 Tangram
Tangram是Baidu开发的一套简单可依赖的Java库。

6. 在线富文本编辑器 UMeditor
UMeditor,简称UM,是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线富文本编辑器。 UM的主要特点就是容量和加载速度上的改变,全版本的代码量为125k,而且放弃了使用传统的iframe模式,采用了div的加载方式, 以达到更快的加载速度和零加载失败率。

7. Android自动化测试框架 Cafe
Cafe 测试框架是一款来自百度QA部门的具有开创性意义的Android平台的自动化测试框架,框架覆盖了Android自动化测试的各种需求。框架致力于实现跨进程测试、快速测试、深度测试,解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题。

8. Web 端的 UI 框架 BlendUI
BlendUI 是百度公司的一个 Web 前端 UI 框架。BlendUI 能让Webapp的体验和交互与Native媲美。

9. 百度音乐播放内核 MuPlayer
MuPlayer 是一款跨平台、轻量级的音频播放解决方案,是百度@音乐前端团队开发维护的浏览端音频播放内核,它基于HTML5 Audio及Flash音频技术,已在百度音乐多个线上产品线中应用,具备很强的灵活性和稳定性。

10. 轻量级UI组件 Magic
Magic是用Java脚本开发的轻量级UI组件,具有性能高效、代码量小、支持多种初始化方式等方面的优势,Web前端开发者可以使 用Magic快速搭建前端功能比较复杂的网站。Magic的每个组件都有非常丰富的接口和事件处理,网站也提供了详细的使用文档和Demo演示。Web前 端开发者可以通过定制组件、初始化方式和插件获得最轻量级版本。

11. 高性能RPC框架 BGCC
BGCC(音:[bigsisi:])是百度具有完全知识产权的跨平台、多语言、面向对象与服务的轻量级高性能RPC框架。 它支持事务级别的服务端消息主动推送,强大的接口级事务管理功能,包含自定义的通信协议、接口描述语言(bidl)、 强大的代码生成引擎(bidl2sl),Java、C++通信无缝整合。

12. 分布式表格系统 Tera
Tera 是一个高性能、可伸缩的数据库系统,被设计用来管理搜索引擎万亿量级的超链与网页信息。为实现数据的实时分析与高效访问,我们使用按行键、列名和时间戳全局排序的三维数据模型组织数据,使用多级Cache系统,充分利用新一代服务器硬件大内存、SSD盘和万兆网卡的性能优势,做到模型灵活的同时,实现了高吞吐与水平扩展。

13. 基于 Node 的 Java 同构解决方案 rebas
基于 Node 的 Java 同构解决方案。提供了 saber 的服务端运行环境,使其具备从 SPA 到 MPA,从前端渲染到后端渲染的深度响应式能力。

14. 面向c/c++语言的构建工具 Broc
broc是一款面向c/c++语言的构建工具,提供了编译、分支依赖、依赖模块下载等功能。不同于make, cmake等以库文件链接的编译方式,broc将依赖库源代码与程序源代码一并同时进行编译,这种方式可以避免程序源代码与依赖库编译选项或平台不一致导 致的软件兼容性问题;broc支持编译结束后自动运行单元测试用例;借助Jenkins broc还能完成软件的持续集成。

15. 富文本编辑器 Ueditor
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。

16. 在线脑图编辑器 Kity Minder
KityMinder 是百度FEX团队的f-cube小组(原UEditor小组)的又一力作。作为一款在线的脑图编辑工具,它有着很多Native编辑工具的交互体验。KM与UE有着一样的宗旨,就是注重最终用户的使用体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。此外,借由独创的 “云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。

17. 轻量级的Canvas类库 ZRender
zrender(Zlevel Render) 是一个轻量级的Canvas类库,MVC封装,数据驱动,提供类Dom事件模型,让canvas绘图大不同!

18. 文件上传组件 WebUploader
WebUploader 是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,延用原来的FLASH运行时,兼容IE6+,Andorid 4+,IOS 6+。两套运行时,同样的调用方式,可供用户任意选用。

19. 手势识别与事件库 Touch.js
Touch.js是移动设备上的手势识别与事件库, 由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具。

20. 地图可视化工具库 Mapv
Mapv 是一款基于百度地图的大数据可视化开源库,可以用来展示大量的点、线、面的数据,每种数据也有不同的展示类型,如直接打点、热力图、网格、聚合等方式展示数据。

21. 专注于移动端的滑动解决方案 iSlider
iSlider 是个非常平滑的滑块,支持移动端 WebApp,HTML5App 和混合型的 App。

22. 百度UI库 ESUI
ESUI是一套简单的UI Library,提供一系列的控件,能满足基本页面交互功能。ESUI的API与默认视觉皮肤遵循BAIDU ECOMUI标准。

23. jQuery的弹窗插件 wBox
wBox轻量级的弹出窗口jQuery插件,基于jQuery1.4.2开发,主要实现弹出框的效果,并且加入了很多有趣的功能,比如callback函数,显示隐藏层,Ajax页面,iframe嵌入页面等功能。

24. 百度BI平台 BiPlatform
百度开源的新一代一站式敏捷bi平台,提供报表和OLAP服务的敏捷BI平台。

25. 前端集成解决方案 F.I.S
F.I.S(FIS)所提供的集成解决方案依托于一套灵活高效的 编译工具,F.I.S借助该编译平台对前端开发资源进行整合。接触F.I.S,可以从该平台入手。

26. 移动端组件库 Global Mobile UI
GMU(Global Mobile UI)是百度前端通用组开发的移动端组件库,具有代码体积小、简单、易用等特点,组件内部处理了很多移动端的bug,覆盖机型广,能大大减少开发交互型组件的工作量,非常适合移动端网站项目。

27. RPC框架 sofa-pbrpc
sofa-pbrpc(sofa protobuf-based rpc)是使用Boost::Asio实现的基于Google Protocol Buffers RPC框架的网络通信库,在百度公司各部门得到广泛使用。

28. 百度文件系统 BFS-Baidu
百度的核心数据库Tera将数据持久化在分布式文件系统上,分布式文件系统的性能、可用性和扩展性对整个上层搜索业务的稳定性与效果有着至关重要的影响。

29. 企业级标准加载器 ESL
ESL 是一个浏览器端、符合AMD的标准加载器,适合用于现代Web浏览器端应用的入口与模块管理。

30. 前端移动框架 Saber
Saber 是 模块化、组合式 的前端移动框架。

31. 百度mysql分库分表中间件服务器 heisenberg
heisenberg 是百度的熊照同学(id:brucexx)编写的一款基于MySQL协议之上的分库分表中间件服务器,支持各种灵活(velocity脚本自定义)的分库分表规则,做到应用和分库分表相隔离,并且为mysql进行dbproxy,减少了db的连接IO压力,并且可做到读写分离以及replication的手工切换。

32. doc 文档在线编辑和预览 wordonline
wordonline 是在线编辑和预览 .doc 和 .docx 文档的工具。

33. JS模板引擎 BaiduTemplate
baiduTemplate希望创造一个用户觉得“简单好用”的JS模板引擎。

34. 在线文件管理器 UFinder
UFinder 是百度前端团队基于页面级的文件管理应用。

35. webSlide
webSlide是用于在线PPT演示文档的java框架。

36. 网络幻灯片 nodePPT
nodePPT 是使用nodejs写的网络幻灯片。

37. 前端模块化解决方案 fis-pure
fis-pure 是基于FIS的纯前端模块化解决方案pure。
pure是基于FIS二次封装能力封装而成的解决方案,可以直接使用,也可以参考fis-pure自行封装或组合使用插件来构建属于自己的一体化解决方案。

38. J2EE Velocity 前端集成方案 jello
jello 是针对服务端为 JAVA + Velocity 的前端集成解决方案。jello 为优化前端开发而生,提供前后端开发分离、自动性能优化、模块化开发机制等功能。

39. protobuf的Java开发包 jprotobuf
jprotobuf是针对Java程序开发一套简易类库,目的是简化java语言对protobuf类库的使用,使用jprotobuf可以无需再去了解.proto文件操作与语法,直接使用java注解定义字段类型即可。

40. 人工智能软件 WARP-CTC
WARP-CTC 是百度硅谷 AI 研究所 (SVAIL) 开源的百度关键人工智能 (AI) 软件。

41. 百度云Go语言SDK bcsgo
百度云存储服务Go语言SDK。

42. 前端模块加载解决方案 modJS
modJS 是一套的前端模块加载解决方案。与传统的模块加载相比,modJS 会根据产品实际使用场景,自动选择一种相应的方案,使最终的实现非常轻量简洁。

43. 公式编辑器 KityFormula
Kity Formula 为您提供公式表达式解析,可视化公式编辑,公式完美展示于一身的web端的整体解决方案。

44. 高品质的 WebGL 类库 Qtek
Qtek (WebGL Graphic Library) 是一个高品质的 WebGL 类库,目前仍处于实验阶段。
物理组件:
https://github.com/pissang/qtek-physics
2D 组件
https://github.com/pissang/qtek-2d

45. 集群操作系统 Galaxy
Galaxy是一个数据中心操作系统,目标是最大化资源的利用率与降低应用部署运维代价,支持万台集群资源调度与管理,目前主要服务于百度网页搜索离线架构业务,解决分布式文件系统,分布式表格系统,以及上层计算模块运维与部署问题。

46. 富浏览器端web应用框架 ER
ER 是百度公司的一个富浏览器端web应用的框架,适用于并能很方便地构建 一个整站式的AJAX web应用。

47. 深度学习平台 PaddlePaddle
PaddlePaddle(并行分布式深度学习)是一个易于使用的、高效的、灵活的和可扩展的深度学习平台,它最初是百度的科学家和工程师为了能让百度产品能提供深度学习而开发的。

48. 前端统计框架 ALog
ALog 是前端统计框架。

49. Baidu Push SDK
Baidu Push SDK 是百度的云推送 SDK 开发包。

50. 企业级前端应用开发平台 EDP
EDP是基于 Node 的前端应用开发平台,是一个企业级前端应用的开发平台,提供了常用的项目管理工具、包管理工具、调试工具、构建工具、代码生成工具、代码检测工具等一系列开发时的支持,并允许用户自定义自己的扩展。

51. HTML5 音乐播放器 Player
Player 是 HTML5 版本音乐播放器,支持 iOS 设备。
演示地址:http://4.qdemo.sinaapp.com/html5/chrome/

52. jQuery 遮罩插件 SlipHover
SlipHover 是一个基于 jQuery 的插件,它能够感知鼠标移动方向,并在相应的方向(或反方向)以动画的方式显示出一个遮罩层,用来显示标题或描述,应用到幻灯片或相册中是个不错的选择。 SlipHover 还支持自定义遮罩高度、动画时间、字体颜色、背景颜色、文字排版等等。

53. 模板引擎 ETPL
ETPL是一个灵活、具有强大复用能力的高性能的模板引擎,适用于WEB前端应用中视图的生成,特别是SPA(Single Page APP)类型的应用。

54. 基于 LESS 的样式工具库 EST
EST(ECOM Styling Toolkit)是一个基于 LESS 的样式工具库,帮助您更轻松地书写 LESS 代码。EST提供了一系列方便 快捷的 mixin,只在调用时才输出代码。est 不希望提供直接给 HTML 调用的类名,用「样式类」污染 HTML 代码的语义。当然您也可以根 据自己的项目需求基于 est 搭建样式类库,提供类名接口来进行快速开发。
演示地址:http://ecomfe.github.io/est/fiddle/

55. 基于 SVG 的矢量图形库 Kity
Kity 是一个基于 SVG 的矢量图形库,帮助你快速在页面上创建和使用矢量元素。

56. 前端资源聚合平台 Lights
Lights 是FIS包管理工具。提供便捷、易用的资源安装、发布、搜索,管理工具。用于团队间快速共享资源,提升开发效率。

57. EDP 扩展 edpx-zhixin
edpx-zhixin 是 edp 的一个扩展,提供给百度的FE开发搜索结果页模板的工具。

58. 服务虚拟化 Terminator
服务虚拟化指的就是虚拟出不稳定、不可用、未开发完全的服务。

59. 前端集成解决方案 baidu yogurt
yogurt 是基于 fis 扩展针对服务端为 express.js 的前端集成解决方案。

60. 移动 Web 的 CSS 样式工具库 Rider
rider是一个基于 Stylus、专注于移动 Web 的 CSS 样式工具库。

61. kraken.js 扩展 Yog
Yog 是一个基于 Express.js 的 Node.js Web 应用引导模块,扩展了 kraken.js。

62. 基于Nodejs 的前端工具集 FEinit
FEinit 是基于Nodejs 的前端工具集,因为是在windows系统开发,所以目前仅适合 windows 系统。

63. Node Log 统计方案 yog-log
yog-log 是 Node Log 统计方案,是yog框架的log统计模块,支持中间件或者单独使用等方式,兼容ODP日志格式与配置。

64. 轻量级覆盖率测试工具 logcover
logcover 是一款非常便捷的统计测试用例异常日志覆盖率的工具。可清晰地分析出程序源代码中异常日志的覆盖情况,检验测试充分度,指导测试用例完善。

65. 知心组件库 moye
Moye 是 ECOM UI 1.1 规范的一个轻量级实现。

66. fis-postprocessor-amd
fis-postprocessor-amd 能识别 js 中 amd 依赖,自动包转 isMod 的 js 为 amd。

67. EDP 的移动端扩展 EDPM
edpx-mobile(EDPM) 是 EDP 的移动端扩展。EDPM 是对 edp 功能的补充,为移动项目提供项目初始化、脚手架、调试服务器等功能。

68. 前端代码风格工具 FECS
FECS 是基于 Node.js 的前端代码风格工具。

69. WEB 组件规范 xspec
xspec 是一系列基于WEB COMPONENTS的组件规范,致力于借助规范的力量让组件发挥更大的价值。

70. yog-pm
yog-pm是在pm2的基础上提供了几个增强命令,提高pm2的易用性和稳定性。

71. Express.js 中间件 yog-view
yog-view 是一个 Express.js 中间件,用来优化 js/css 输出排序,允许在 bigpipe 模式中显示。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值