云计算是个IT界火热的词汇,开源云计算更是被认为是IT的趋势。我们熟知的几个IT巨头的云计算平台,如亚马逊EC 2、IBM的蓝云、微软的Azure、Sun
Cloud等,那么开源云计算的平台又有哪些呢?以下列举了开源中国社区收录的5款知名的开源云计算平台。
1、AbiCloud企业级开源云计算平台
Abiquo公司推出的一款开源的云计算平台——“abiCloud”,使公司能够以快速、简单和可扩展的方式创建和管理大型、复杂的IT基础设施(包括虚拟服务器,网络,应用,存储设备等等)。AbiCloud较之同类其他产品的一个主要的区别在于其强大的Web界面管理。你可以通过拖拽一个虚拟机来部署一个新的服务。这个版本允许通过VirtualBox部署实例,它还支持VMware,KVM和Xen。
abiCloud架构如下图所示:
2、Eucalyptus 开源云计算平台
Eucalyptus 项目(Elastic Utility Computing Architecture for LinkingYour
Programs To Useful Systems)是 Amazon EC2 的一个开源实现,它与商业服务接口兼容。和 EC2一样,Eucalyptus
依赖于 Linux 和 Xen 进行操作系统虚拟化。Eucalyptus
是加利福尼亚大学(SantaBarbara)为进行云计算研究而开发的。您可以从该大学的网站上下载它,或者通过 Eucalyptus Public
Cloud体验它,不过后者有一些限制。
3、10gen MongoDB 开源高性能存储平台
10gen 既是一个云平台,又是一个可下载的开放源代码包,可用于创建您自己的私有云。10gen 是类似于 App Engine的一个软件栈,它提供与
App Engine 类似的功能 — 但有一些不同之处。通过 10gen,可以使用 Python 以及JavaScript 和
Ruby编程语言开发应用程序。该平台还使用沙盒概念隔离应用程序,并且使用它们自己的应用服务器的许多计算机(当然,是在
Linux上构建)提供一个可靠的环境。
4、Enomalism 弹性计算平台
Enomaly's Elastic Computing Platform
(ECP)是一个可编程的虚拟云架构,ECP平台可以简化在云架构中发布应用的操作。
云计算平台是一个 EC2 风格的 IaaS 。Enomalism 是一个开放源代码项目,它提供了一个功能类似于 EC2的云计算框架。Enomalism
基于 Linux,同时支持 Xen 和 Kernel Virtual Machine(KVM)。与其他纯IaaS 解决方案不同的是,Enomalism
提供了一个基于 TurboGears Web 应用程序框架和 Python 的软件栈。
5、云计算平台 Nimbus
Nimbus由网格中间件Globus提供,Virtual Workspace演化而来,与Eucalyptus 一样,提供EC2的类似功能和接口。
请列举三个有新意的多媒体应用或者开源软件,并解释您觉得有意的原因。
哈帕米http://www.hapame.com/Home/Download
是一个类似Second Life的3D虚拟现实网络社交服务,同时支持PC、Web、手机等多个平台,从而使用户能够轻松实现跨平台的资源共享和娱乐互动体验。他首次提出了以用户“真人面孔”构建虚拟人物的概念,只需要上传一张高质量的面部写真照,即可帮助你快速创建专属于自己的人脸3D建模并依附于虚拟角色中。与此同时,HapaMe 还结合了社交网站服务(SNS)的特点和MMORPG技术,拥有64数位的逼真效果、通知自动推入服务、微支付系统等专有技术和服务以及独家娱乐内容,在三维客户端、网站以及移动平台为用户提供全新和独特的体验。
我暂时只能列出这一种多媒体应用例子。不好意思啊。
开源软件的测试和传统软件的不同
互联网行业的人有意无意的把非互联网的软件都称为传统软件,也就是说我们这种都是从传统行业,好吧,传统软件行业转过来的。也许在有些人眼里这个带有一些自诩的成分,当然更多人是为了区分。就像我们做IT的把其他比较实体的行业称为传统行业一样,似乎有某种优越感。这里不争论这些称谓,意义不大,有没有价值让市场去决定。如果把一件事情说得玄乎,那么主要有两种可能,没有搞明白,或者装高深。这两种都不太好,所以还不如看看到底有什么不同。
如果真要用传统软件行业这个词,那么这里是指的那种需要用户去安装客户端,或者需要客户的管理员在机房去部署的那种软件,放在光盘里也好,放到硬件里一起卖也好,又或者是为某客户量身订做的一套系统。
变和不变总是永恒的主题。先说说我看到的不一样的地方。互联网行业和传统软件的区别:
1. 最大的不同就是互联网的产品很多都是自己来部署和运营,用户只要用一个瘦客户端就能使用。
这里的瘦客户端是一个浏览器,一个App,或者一个需要安装的client,但是核心的数据和业务逻辑主要在互联网公司的机房里面,在IDC,在云端。这里和以前的C/S,
B/S架构的企业系统的主要区别在于为多大范围的人来服务以及谁来运营和运维这样的系统。所以自然的,就多了很多的这方面的工作。
缩小范围到测试这个方面,就需要考虑生产环境的问题。比如有下面的这些方面:
a. 如何来监控生产环境功能的可用性。
这个需要和运维一起来做,但是运维针对的是比较通用的部分,比如机器的资源使用情况、流量和带宽的情况,但是偏产品业务层面的,比如哪些功能是否可用,可能就
需要业务测试人员来设计和开发自动化的系统来监控了。
b. 如何来发布功能到正式运行环境(生产环境)
测试完了一般直接就发布了,所以不像传统的软件有那么长的测试周期,包括internal beta,externalbeta等过程,而且我了解到的情况,很多基于的互联网产品平均一天
有多个发布,可大可小。所以发布可能就成了测试人员的工作,当然有相关的系统的支持。这里还需要考虑的问题是常见的基于各种条件的灰度发布,先让部分用户用起来。
发布完了之后还要做生产环境的验证。
c. 如何来保证或者验证测试环境和生产环境是同步的
一旦是互联网的这种模式,测试环境的问题就会变得比较突出,因为常常牵涉的系统比较多,有些和外部系统的接口可能很难以自己搭建或者用mock。另一方面如果保证测试环境是好的,到生产环境也是好的。需要相应的机制和工具来验证和同步。
缩小到开发这个方面。要考虑到一些互联网的特性,比如有以下这些方面:
a 如何快速定位,问题在哪个模块或着需求设计哪几个模块,以及给出解决方案。
一般来讲,新增加的功能或者模块,比较容易像一个传统项目的一样,制定计划,软件设计,到开发,测试。但是如果是生产环境中出现的问题,则需要对原来业务以及软件架构非常熟悉,能够快速定位到问题所在的页面和涉及的页面。在一个从传统软件转过来的互联网工程师来看,其实web程序,是一堆软件的集合。每一个web页面都是一个独立小程序。它们或者十分独立,只是通过一个链接跳转,或者一组页面组成一个程序集合,实现特定的一个功能。终究是多个dll独立的存在。所以,从传统软件工程师的角度出发,应该是以一个管理程序集合的概念来管理一个web程序。具体怎么做呢?首先负责开发技术人员分成3类,一类是高级coder,最好是原有的模块开发者。它们对模块的需求,和设计实现架构非常了解,但他们只对反馈过来CR做需求分析。屏蔽一些不合理的修改意见,对要修改的需求,进行定位分析,设计好修改方式,以及判断修改涉及的范围。二类是 中级coder,中级coder只和高级coder沟通,对高级coder的设想落地,把他的设计思路实现。 三类是初级coder 负责和高级coder沟通需求以及了解判断修改的范围。对中级coder的修改做开发者的自我测试,完成相关文档,由高级coder审核。
b 如何判断开发好的功能OK了。
在高级coder的审核,通过三类coder的文档,来确认coder实现是否符合原来设计,当然,设计时,最好事先就和二类coder一起沟通。随着小分队的不断默契,可以是初级coder很快掌握,业务逻辑,和自测方法,同时可以熟悉,开发者所使用的工具。不断成长,继而成为中级coder。同事中级coder,在不断实现设计的同时不断成长,到可以胜任需求分析和软件设计的工作,成为高级coder,这样整个小团队就非常厉害了,这个方式类似于抗倭名将戚继光的鸳鸯阵,专门对付,个体比较强大,武艺高强的倭寇。
c 如何保证生产环境的web程序的稳定性
减少发布次数是保证web程序的稳定性的最有效措施,但是如果是紧急的问题,可以当天发布。例如,我们是给美国那边做技术支持,中午可以作为测试截至时间,中午2点测试通过的当天下班5点钟发布,如果2点没有通过测试的,即推迟到后一天。
2. 互联网产品的节奏都很快
不像传统的一个客户端或者服务器的软件产品,可能周期是半年,一年,甚至更长。这样有比较充足的时间来做项目计划,需求评审,然后是概要/详细设计,进而有测试设计测试用例,然后有不同的测试cycle,同时也可以有很多的时间来准备测试环境和自动化测试。
就目前来看,互联网的产品这样做不太现实。这样对测试人员也是很大的挑战,可能看到一个需求过几天就要开测了,用例是临时开出来的,根本来不及自动化,也没有很多的时间来做测试设计,然后测两天这个功能就上线了。不是切身的感受很难体会到这种速度带来的差异。所以如何在这么短的时间里面来保证测试的覆盖度和质量,如果减少遗漏?这是现实的问题,或者说是要求,有一些措施,但是其实也没有很好的答案。
3. 有更多的人参与到测试里面来
互联网公司里面,测试vs开发的比例都很低,1:6,1:7都是很常见的,甚至更高,在这样的配比的情况下,如果来保证质量?必须有更多的方法。比如
a. 开发人员的自测。
测试耗费更多时间很多时候是因为代码的质量不够好,有很多,有很多讨论,很多的拉代码的次数。所以提高开发提交的代码质量就是一个很重要的方面。有些公司是通过开发
人员的强制的单元测试来保证的,有些是通过功能级别的自测来保证的。这些可以借助一些数据来反映,比如同一个版本拉代码的次数,或者测试用例的通过率等等。
b. 产品或者运营人员的体验。
很多互联网的产品不像传统软件产品,不是一个产品经理来提所有的需求。产品,或者称为产品经理,是一个团队,每人负责一块来提出需求。另外很多需求可能是来自于运营团队,和business相关,或者是不同系统的打通。每个产品经理或者运营,需要在开发人员实现了相应的功能之后到体验环境里面来试用产品,就是所谓的体验,看这些功能是不是他们想要的。这样就可以在测试人员测试之前保证没有明显的需求理解的问题,避免浪费测试的人力和时间。
c. 发布之前的评审。
不同的角色进来看对于一个已经测完的工作还有没有问题,以及发布的时候需要注意的问题,环境的问题,配置的问题,数据的问题等等。上面的一些做法可能都有帮助,但是如何来推动,如果来检验都是需要流程和工具来支撑。
4. 有一些是免测试的
不是所有发布到生产环境的东西都需要测试,有些改动是不需要测试的。这个没有一定的标准,取决于具体发布的情况,以及产品和团队的成熟度等因素。比如一些临时活动的页面,一些小的图片或者样式的改动,一些小的修复等等。只需发布完了之后到外网去验证。
有哪些可以走免测,这其实是一个很复杂的问题,当然风险也是有的,但是因此而带来的效率的提高也是很明显。
5. 海量的用户带来的挑战
其实有很多,这里列举几个:
a. 如何来保证或者验证性能
传统软件的性能测试相对要单纯一些,可以比较容易搭建一套环境,流量也比较容易模拟。而互联网的一个产品可能有几百上千台甚至更多的服务器,多地多层部署,受到各种因素的影响,比如广告促销活动,一下子流量可以冲到很高。所以这方面的做法也会有所不同,全量的模拟不太现实,而且如上面所说,发布非常快,也没有那么多的时间去反复的做性能测试。所以如何来做比较轻量级的性能测试也是一个很大的课题。
b. 浏览器的兼容性。
用户使用的浏览器种类可能非常多,包括大家都在骂的IE6,还有IE9的n种模式,版本更新速度火箭一般的Chrome和Firefox,以及很多种国产的浏览器。要一一覆盖是一个很大的挑战,其实不可能,但是产品团队肯定希望测试能够覆盖更多。对于一些企业级的产品可以宣称就支持很少的几种,但是互联网产品很难这样做,那就等于放弃一些用户。如何来设计策略?有没有技术手段?
c.改好的东西,没有输入限制,任意操作,如何保证健壮性。
一个小的改动引起的问题可以影响到无数的用户,而且很多时候马上会被发现,那个压力还是非常大的。整个修复的过程也是带电操作,没有那么多环境和时间来在内部慢慢调整,如何来保证修复的质量?
6. 问题的修复
互联网的产品相比传统的产品的一个优势或者说是特性就是问题的修复比较快,因为很快就可以影响到用户,而不需要等用户一个个去打hotfix或者patch,甚至安装新版本。有很多时候,这种问题的发生到修复的时间很短,真是绝大部分用户都没有感知。有时候这个也会成为quick &dirty的一个借口,不过一般都会把
生产环境的问题列为一个考核的指标。而且有些问题不是小问题,会构成事故。其实对于这样的产品,测试人员对于漏测的压力就更大了。
7. 测试工具和技术选择上的差别
大概是因为互联网自身产品的一些特点,各大公司都在大量的使用开源的,以及内部开发的平台和系统。相应的,测试方面用到的平台和工具主要也是这两种,要么是开源的工具(也可能做一些改造),要么是内部自己开发的工具。相比而言,传统软件行业更会去购买一些商业的测试工具,比如用于性能测试、覆盖率或者代码检查的工具,还有就是测试用例和缺陷的管理平台。
目前我了解到的情况,国内几大互联网公司都是改造和自研的比较多,所以在简历里面列一堆大的工具的使用经验不一定有多大优势。而对于新人来说需要花不少时间来学习和熟悉这些平台。
以上列举了一些相比传统软件行业的不同的地方吧,但是对测试人员来说,互联网行业和传统软件的相似处:
1. 一样的需要非常了解产品和业务
对于测试人员来说,如果不了解产品和业务,测试工作很难开展,因为连最基本的对错(是不是bug)都很难判断,当然除了一些明显的错误,比如js出错这样的信息,这种缺陷产品体验的时候就能够发现或者等到被用户发现了。所以我们还是需要花很多的时间和精力来熟悉产品业务。从这个角度看,没有很大的变化,只是换了一个不同的领域而已,这个差别是不同的产品带来的,而不是因为传统软件或者互联网的差别带来的。
2. 一样的需要了解产品的技术
这个其实和上面有点类似,测试人员需要去了解产品开发用到的技术,这对深度的测试,甚至和很多测试技术和工具的应用有很大的关于,比如性能分析,内存泄露的发现,覆盖率的分析等等。不去学习和了解这些,很多工作没有办法开展。从方向上来看没有变化,我们也要去学习和实践这些东西才能更好的了解。但是具体的技术可能有所不同,比如互联网web的产品可能会常用到JS,PHP,Java,C++等语言,还有各种web服务器,cache,代理等等。
3. 具体的测试技术
上面说到了一些产品开发的技术,其实还有一块是测试方面的技术,其实这一块细化来看和传统的软件开发有很多相似甚至相同的地方。比如如果来做静态代码的扫描、局部的性能测试方法和工具、覆盖率的工具、自动化的一些工具和框架、一些监控的工具等等。
从这个角度来看,技术的差异并没有很大,当然互联网有一些特别,比如很多基于web的系统、分布式的、多层的,会对工具提出一些要求,这个差别其实倒不是很大,因为很多传统的服务器软件也是这样。
4. 测试设计的方法
上面提到,因为产品发布节奏的差异,使得整个流程必须更轻更快,但是针对于一个具体功能的测试的时候,用例的设计和执行上需要考虑的问题其实和传统的没有太大的差别。因为这个时候大家面临的问题是一样的,如何测这个软件的这个功能。所以一些思路和方法还是能用得上。
综合以上来看,局部的差异反而比较小,但是涉及到大的形态和流程方面的差异就会比较大。
也可能正是因为这样的原因,很多从传统软件到互联网的人也很快就能够融入并开始发挥作用,而且退回几年来看,现在各大互联网公司里面的人大部分也都是来自于所谓的传统软件企业。
我相信不同的领域的发展速度和机会是不一样的,这也是这几年很多人投身到互联网行业的原因之一,这个就好比经济学上所谓的市场对于资源配置的驱动力一样,很正常。但是另一个方面,会让人有一种错觉,以为换到一个快速发展的行业,自己立马变强了。其实冷静的来看,并不会如此,只是赶了个浪潮,真正的技术和能力不会因为你换了一个领域或者行业就变得强大或者高深了,要获得这样的提高一定是因为更多的学习,实践和思考,以及和别人的交流而慢慢得到的。
上面提到了互联网产品,其实有些时候,这是一个伪命题,因为在各大互联网公司都有传统软件,比如腾讯百度阿里都有客户端的产品,而且数量还不少,有些还有C/S架构的产品,国外的google也有chrome,picasa这种桌面的产品,facebook也出了IM客户端。所以在很大程度上,还是非常的需要比如GUI产品的开发和测试技术,服务器类似企业级产品的方法和能力。当然,这些产品背后是连到互联网的,所以也有差异的部分,但是没有想象的那么大。
另外一个问题,有些时候大家在借互联网软件这个名字来逃避一些东西,比如一些不严谨,或者混乱的地方,就全部归结到这是互联网的特性,这个是一个“度”的问题,要自己去分辨。
另一个问题,对于初入互联网测试的人有什么建议呢?下面这些也是自勉。
1. 正视这种差异带来的改变,上面说的一些东西真的也是很大的不同,所以要积极的学习和了解。
2. 努力的去学习产品相关的知识,包括相关的开发技术,这样才能更好的开展工作。
3. 要经常反思,之前在一个环境下对一个东西研究得很清楚了,但是换个环境之后可能老的经验和知识并不完全适用。所以少说我们以前是怎么样的?绝不生搬硬套,而是了解了情况,理解了问题之后看哪些做法是可以借鉴的?局部的借鉴可能更靠谱。
列举5种不同类型的常用软件的名称、最新版本及其用途!jiyong
用软件主要有三种类型:
Demos:演示软件
商业发行的软件为了让用户先了解软件的功能而发布的一个版本,主要介绍软件可以实现的功能和软件的特性。如果你喜欢这个软件,可以去购买正式版本。
Shareware:共享软件
购买或注册前你可以试用的一类软件。这类软件有版权,但是你可以免费下载并使用。但是,在一定的试用时间后,你必须注册或者购买这个软件以继续使用。
需要注意的是,共享软件多数不是永久免费的,开发者的目的还是希望用户最终购买他们的产品,所以共享软件往往被限制了使用时间,或者只提供了部分功能,不过与纯粹的免费软件相比,共享软件在安全方面要强得多。
Freeware:免费软件
你可以免费下载、使用、在同事和朋友之间传递。和共享软件不同的是,你无须注册这个软件就可以使用其提供的所有功能。
软件开发工具有哪些
无论您是软件开发新手还是资深人士,如果想努力成为优秀的软件开发人员,都需要拥有合适的工具。本文推荐给你12款。
没有人认为经验就是优秀软件开发人员的主因。但是,“公欲行其事,必先利其器”,良好的工具能帮我们做更好的工作,不论你是软件开发新手还是已经是老手,如果你想努力成为更好的软件开发人员,都需要拥有合适的工具。
有大量的工具可以供我们选择,但是如何最好的工具是一个技巧。以下是我按不同类别组织的精选的一些工具列表。也欢迎在评论区中告诉我您最喜欢的。
源代码控制
1. GitHub
不管你是软件开发的新手,还是已经熟悉了GitHub的成手,你都需要它,GitHub是一个基于Web的Git存储库托管服务,开发人员可以审查代码,管理项目和软件构建。
GitHub是目前世界上最大,最受欢迎的代码库。软件开发人员喜欢它的直观界面和各种功能增加的功能,GitHub的定价模式非常灵活,公共存储库可以免费托管,也可以按月付费支付私有存储库。
2. Bitbucket
作为GitHub的有力竞争者,Bitbucket是一个基于Web的托管服务,用于使用Git版本控制系统的存储库。Bitbucket有哪些优势?嗯,它与其他Atlassian公司产品(如JIRA)配合使用,能够有效促进开发团队的协作。 Bitbucket既可以作为云版本,也可以作为企业内部部署版本,称为Bitbucket Server。
3. CloudForge
CloudForge是一种基于云的SAAS产品,用于应用程序开发工具和服务,如Git托管,Subversion托管,问题 和 bug 跟踪工具以及应用程序生命周期管理。它提供了很多开发工具供选择,主要是针对企业的,包括Zuora,Sears和The Weather Channel。
项目管理和问题跟踪
4. JIRA
JIRA是最受欢迎的开发管理工具,用于项目和问题跟踪的良好工具,是敏捷软件团队的理想选择。它是一种复杂的产品,具有大量的功能,它开箱即用并且通常易于使用。JIRA的一些亮点包括定制化的Scrum和看板。
5. Trello
与JIRA类似,Trello非常适合做项目管理。 Trello非常适合看板和Scrum开发,它易于管理,具有大量可定制性。虽然不是专门为开发人员构建的工具(还可以用于产品设计),但Trello绝对可以完成工作。从好的方面来说,Trello是具备时尚的,简单和视觉上令人愉悦的好工具。
6.Toggl
与上述两者略有些不一样,Toggl是一款适合软件开发人员的时间跟踪工具。使用Toggl追踪时间毫不费力;它可以让您了解时间的真正去向!它很简单,易于使用,并集成了大量工具,包括上面列出的两个。
IDE(集成开发环境)
7.Atom
这是一款强大的“黑客”文本编辑器。Atom是完全免费的开源软件,在很大程度上可以进行定制。Atom还包括一个智能且灵活的自动完成功能,使编码速度加快,此外,开发者还可以实时共享工作区并且可以编辑代码。
8. Xcode
Xcode是macOS的集成开发环境,是Apple公司开发的一套软件开发工具(用于开发macOS,iOS,watchOS和tvOS的软件)。无可否认,它非常简单易用,特别适合初学者,如果您只开发前端用户界面,它具有可视化设置和拖放选项,达到快速开发。 Xcode在如何防止错误和错误方面也很智能。
9. Microsoft Visual Studio
Microsoft Visual Studio包括一组服务,包括Visual Studio IDE(适用于Android,iOS,macOS,Web和云端的全功能集成开发环境)。开发者使用Visual Studio可以快速轻松地在各种平台上规划,构建和发布软件。
技能提升
10. CodeWars
CodeWars是一个学习社区,提供真正的编程挑战,以提高您的开发技能,加强和扩展编程基础。CodeWars具有数百个编程挑战,按难度和各种语言分级。CodeWars也非常适合提高没有多少经验的人对编程语言的熟悉程度。也有其他类似的网站,但CodeWars的突出之处在于,在您提交自己的解决方案后,您可以看到评分最高的排行榜。通过这种方式,人们可以从这些排名靠前的解决方案,从而向他人更好的学习。
11.Code Climate
Code Climate是一种代码自动分析工具。虽然它是付费产品,我们可以免费试用两周,即使这样也可以提供有关代码的良好反馈。Code Climate会评估开发的测试覆盖率,复杂性,重复性,风格和安全性等。
12.Code Signal
Code Signal是一个基于技能的评估平台,可以帮助开发人员和雇主评估编程水平。对于开发人员,Code Signal提供面试练习,以便我们可以解决真实的面试题并掌握关键的技术难题。
小结
如果没有上面这些工具,我们编程会很困难。这些工具从管理和分析项目到发布跟踪和技能开发,可以满足开发者的全硕需求。如果你想成为优秀的开发人员,请使用这些工具,让自己更加强大!
Java有哪些开源框架、应用、开发工具?
框架最常用的有struts,hibernate,spring,dwr
开发工具 eclipse(免费),myeclipse(收费)
转载请注明出处51数据库 » 列举一些开源应用软件 列举一些开源的云计算技术
爱情游戏18644047