MIT-6.005软件构建】的更多相关文章

L01 Static Typing 主要对比Java和Python Java:静态语言,运行之前所有变量都要声明.traps:整型相除还是整型,5/2=2.数值溢出,20亿*2结果是负数,这个bug不会报错.存在一些特殊值,例如除以0之后得到的无穷大 Python/JavaScript:动态语言,会有静态检查+动态检查. 三种程序检查: static checking:可以检查语法错误.名称错误.类型错误.返回值错误.参数错误 dynamic checking:可以检查非法参数.无法返回.超范围…
近期,Google开源了强大的自动化构建工具Bazel. 正好博主近期在使用china版的Bazel--腾讯自主开发的Blade,所以准备跟大家分享一下Google Bazel这个分布式构建系统的原理和使用方法. 以下是分享的目录: Google Bazel原理篇: Google分布式构建软件之第一部分:访问源代码 Google分布式构建软件之第二部分:构建系统如何工作 Google分布式构建软件之第三部分:分布式执行构建步骤 Google分布式构建软件之第四部分:分发构建结果 Bazel工具使…
Google软件构建工具Bazel FAQ 本文是我的翻译,原文在这里.欢迎转载,转载请注名本文作者和原始链接 注:如果想了解Bazel的原理,可以看看我之前翻译的Google Blaze原理及使用方法介绍系列 Bazel是什么? Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make.Ant.Gradle.Buck.Pants和Maven一样. Bazel有什么特殊之处 Bazel是设计用来配合Google的软件开发模式.有以下几个特点: 多语言支持:Bazel支持Ja…
转载Google软件构建工具Bazel FAQ 本文是我的翻译,原文在这里.欢迎转载,转载请注名本文作者和原始链接注:如果想了解Bazel的原理,可以看看我之前翻译的Google Blaze原理及使用方法介绍系列 Bazel是什么? Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make.Ant.Gradle.Buck.Pants和Maven一样. Bazel有什么特殊之处 Bazel是设计用来配合Google的软件开发模式.有以下几个特点: 多语言支持:Bazel支持J…
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC研究报告分析指出,到2012年非结构化数据将占到数据存储总量的80%以上.集群NAS是一种横向扩展(Scale-out)存储架构,具有容量和性能线性扩展的优势,已经得到全球市场的认可.从EMC对ISILON.HP对IBRIX.DELL对Exanet等收购事件,以及IBM推出SONAS.NetApp发…
七雄争霸秦国一统天下,统一货币度量衡,从此天下统一... 假设在未来的某天,有一款开源的系统平台能将国内的企业管理软件市场进行统一,规范市场,标准开发,所有系统的集成创建通过市场开放的应用独立安装搭建,这将是一个很有意思的事! odoo是什么鬼? 关于odoo这里只做简单介绍,是一个开源ERP软件或者开发平台,具有saas和paas的运维支撑,所有系统模块都可以随意拆分独立安装,这当然可能得益于它的模块继承机制. 什么是堆积木? 你可以想象孩子们玩的积木玩具,格式形状.颜色的积木,通过孩子的想象…
1.APP后端的重要性 2.架构目标与选型 3.Apache/Nginx? 4.为何选择Php 5.4? 5.Phalcon还是其它? 6.MySql 5.6 / MariaDB ? 7.Cobar:数据库集群 8.Poco:通讯程序实现 9.HaProxy:负载均衡 10.云中系统架构拓扑图 11.安全x—scan http://www.osforce.cn/course/68/info…
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本次翻译已经得到Scott本人授权,禁止任何形式的转载. --------------------------------------- 在接下来的12个月里,我将在不去上课的情况下,学完整个MIT四年分的计算机课程. 更新:MIT挑战现在已经结束了.我在2012年9月26日完成了挑战,距离开始时间2…
分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所有的产品都是从头开始构建的.这篇文章会更深入的介绍Google的构建系统[即Blaze]是如何工作的,并介绍让软件构建过程更快的方法.在后续的文章里,我们会解释如何利用这种确定的信息来在大规模集群之上进行分布式的软件构建并在开发者之间共享构建结果. 问题:Google是如何描述驱动构建和测试的依赖关…
注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 之前两篇文章分别介绍了Google 分布式软件构建系统Blaze相关的为了提供对存储在云端的源码的访问支持而定制的文件系统和构建系统是如何工作的.这篇文章在前两篇文章的基础之上介绍了一个在大规模集群上面分布式高效率执行构建步骤的系统[译者注:就是Blaze].正如你看到的,源文件系统和构建系统的细节对于我们实现快速高效的分布式构建是非常重要的.所以在介绍构建步骤如何分布式执…
1. 构建的基本流程: a. 开发人员在他们的个人计算机上编写源代码文件 b. 他们将编写好的文件存放在一个统一集中的地方,构建组将所有的源代码编译成可以在计算机上运行的二进制文件,且用安装工具把各种需要安装到服务器上的文件包装成可以安装到不同平台的软件包.   c. 组合成一个产品 构建的过程就好比一个组装生产线,源代码文件就像是各种大小配件,被存储在一个大仓库里,源代码中,有些在构建过程中还需要再加工. 2. 构建过程: 3. 构建生产线时,软件开发部门,特别是构建测试团队需要考虑什么? a…
8.02  Physics II (电磁学基础) Introduction to electromagnetism and electrostatics: electric charge, Coulomb's law, electric structure of matter; conductors and dielectrics. Concepts of electrostatic field and potential, electrostatic energy. Electric curr…
作者Jack47 转载请保留作者和原文出处 之前博主写了系列文章Google软件构建工具Bazel原理及使用方法介绍.最近使用了一段时间后,觉得这个东西不是一种通用的构建工具,很难对接到情况复杂的大的工程项目里.今天来讲讲为什么博主觉得google bazel构建工具不会大规模流行起来.本文是参考Gradle--另外一个很出名的构建工具--的人对bazel的看法的这篇文章基础上整理而成的 Google bazel想解决什么问题? Bazel是Google内部构建系统Blaze的子集,所以Baze…
敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将软件工程这一学科具体化,软件工程中开发与管理软件的方法也不断完备.而敏捷软件开发于2001年由Kent Beck和其他16位知名软件开发者提出,敏捷开发是人们对于传统软件开发方式的一种提出的新的挑战.本文将具体介绍软件传统工程与敏捷软件开发两种方法,并对两者进行对比分析. 一.传统软件工程 软件工程…
转载地址:http://www.ibm.com/developerworks/cn/rational/r-cn-clearmakebuild/ 构建管理是 IBM® Rational® ClearCase 产品的一个重要模块,它将软件产品的构建和软件开发配置管理进行无缝衔接,方便统一管理,而且还提供了并行和分布式构建,为构建一个高效稳定的构建环境提供了便捷.在 ClearCase 构建管理中有两个构建应用 ClearMake 和 Omake.ClearMake 可用于 Unix.Linux 和…
Scada是一款采用.Net WPF开发的免费组态软件,功能强大,支持服务器客户端方式运行.支持浏览器运行,软件非常小巧,免安装,支持Modbus和OPC通讯协议, 开放构架,支持C#.Net脚本,JavaScript脚本,支持.Net扩展,是中小监控组态系统的优选方案,特别适用于组态和管理合并系统. C#.Net+WPF 基于C#.Net和WPF技术的免费工业组态软件,内嵌C#编译器,支持JavaScript脚本,与.Net无缝集成,特别适合于EMS,Gprs监控系统,支持用户扩展接口开发,支…
关于前端和后端的解释 详细链接见:http://wiki.ubuntu.org.cn/Qref/Apps Linux下程序通常不需要作为一个整体,而是模块化,于是有了可选的前端和后端——这种情况下:前端可以搭配不同后端,后端也可以搭配不同前端.前端(界面):图形和命令均可后端(执行) [编辑]工具 [编辑]输入法平台 每个输入法平台都能加装很多种类输入法引擎sunpinyin rime 等.输入法(如二笔.五笔.拼音)   IBus 官网 (K)Ubuntu 9.10之后预设输入法平台,为取代停…
软件协作工具Trellohttps://trello.com/ Q群里conan发了个UE4的RODEMAP的trello链接,感受了一下Trello这款软件协作工具.(https://trello.com/b/gHooNW9I/ue4-roadmapUE4的roadmap,普通开发者可以通过vote来影响后续UE的开发优先级) Trello的目标是提供简洁清晰的团队协作工具.记录的感觉接触起来是跟印象笔记差不多的,功能不少可以面对开发者,个人,家庭记录事件,安排事情,计划工作.其还有很多dev…
本文将使用华为云软件开发云向大家演示如何搭建JavaWeb,Maven项目. 一.相关信息 1.华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者提供包括项目管理,代码托管,流水线,代码检查,编译构建,测试管理,移动应用测试,部署,发布,CloudIDE,研发协同等基础功能的研发工具服务.覆盖软件开发全生命周期,支持多种主流研发场景,让软件开发更高效. 官网入口:https://www.hu…
ELK 介绍 ELK 最早是 Elasticsearch(以下简称ES).Logstash.Kibana 三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark.Beats等组件,改名为Elastic Stack,成为现在最流行的开源日志解决方案,虽然有了新名字但大家依然喜欢叫她ELK,现在所说的ELK就指的是基于这些开源软件构建的日志系统. 我们收集mysql慢日志的方案如下: mysql 服务器安装 Filebeat 作为 agent 收集 slowLog Filebeat 读取…
摘要 对软件构建过程中所产生的错误(build process bugs)进行实证研究. 5个开源项目:CXF, Camel, Felix,Struts, and Tuscany. 把build process bugs 和 other bugs在3个维度比较:bug severity, bug fix time, the number of files modified to fix a bug. 结论表明, Ⅰ.the fraction of build process bugs which are…
上篇文章<中小团队快速构建SQL自动审核系统>我们完成了SQL的自动审核与执行,不仅提高了效率还受到了同事的肯定,心里美滋滋.但关于慢查询的收集及处理也耗费了我们太多的时间和精力,如何在这一块也能提升效率呢?且看本文讲解如何利用ELK做慢日志收集 ELK介绍 ELK最早是Elasticsearch(以下简称ES).Logstash.Kibana三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark.Beats等组件,改名为Elastic Stack,成为现在最流行的开源日志解决方案…
软工读书笔记  week 9                 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些感悟. 首先就是第十章“典型用户和场景”.书中提到,我们作为设计或者开发者,往往会以自己使用产品的习惯和熟悉程度来出发设计,但我们永远不能代表用户.搞一个“典型用户”会让我们考虑问题从用户的角度出发.由于我们正式开始项目后的第一周就是继续对用户做需求分析,这一章对我们有很大帮助. 我们也要考虑我们的典型用户.…
原文:http://os.51cto.com/art/201609/518191.htm 经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉.事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件.这种方式成为一种习惯,被广泛使用.本文从用户视角和开发者视角详细说明,这种构建方式的细节,以及开发者如何利用autoconf和automake等工具(autotools)创建兼容GNU构建系统的项目. 为了简化可移植构建…
对于任何一个学计算机的人来说,软件都不陌生,甚至于一个普通的朝九晚五的上班族,他的每日生活工作也都与软件有着密不可分的关系.然而,程序又是如何从一行行指尖留下的代码,机器存储的数据变成快捷高效的软件的呢?这中间我们所经历的一系列过程的总和,我们称之为软件工程. 从本科开始学习计算机,我们就不可避免的接触了形形色色的软件,了解大量的软件开发工具,我那个时候甚至没有软件工程这个概念,只认为,我们所用的软件就是开发工具编译.执行.包装.发布的产物.后来,开设了软件工程这门课程,才开始系统地接受软件工程…
本周主要对<构建之法>中的一部分进行阅读. 一.软件与软件工程究竟是什么? 本书的概论部分就指出“软件 = 程序 + 软件工程”.而我们这门课的名字就叫“现代软件工程”.其实在上课之前,我对这门课存在一定的误解,我更多地把这门课归入“程序”部分.在我原来的理解中,像电设二一样,自己学新知识(当然很多在电设一已经学过),然好以团队的形式独立去完成一个项目,只不过电设属于硬件(也包含一部分软件),而软工则纯粹是软件了. 而上课之后却和我预想的不一样.首先每周读书笔记这个就让我非常不解,有些推荐书籍…
经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉.事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件.这种方式成为一种习惯,被广泛使用.本文从用户视角和开发者视角详细说明,这种构建方式的细节,以及开发者如何利用autoconf和automake等工具(autotools)创建兼容GNU构建系统的项目. 为了简化可移植构建的难度,在早期有一套autotools工具帮助程序员构建软件.我们熟知的configure…
<SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关于敏捷开发.自动化构建与持续集成的思考就作为开题篇吧. 敏捷是什么? 敏捷是一把伞,这把伞下边有XP.Scrum.FDD...,当然也包括自动化构建.持续集成,其实符合敏捷思想的开发方法.工具,如Jenkins都可以属于敏捷开发的范畴,上课时的PPT: 敏捷到底是什么? 其实关于敏捷的定义有很多,Bob Ji…
1. 对比:Windows 和 Linux 上软件的安装与卸载 大部分 Linux 使用者都是从 Windows 转过来的,先对这俩做个对比,有助理解. 就像在 Windows 下,很多软件也有安装版与免安装版一样,在 Linux 下也有这样的差别. 1.1. Linux 的包管理工具(rpm/yum.dpkg/apt-get) Windows 下的安装版软件在安装时需要管理员权限,它会在系统的注册表中添加关于自己的信息,也可能会在系统的某些某些地方添加一些文件.一般而言,这样的软件都会在安装目…
学习要点 Maven简介 Maven构建项目 MyEclipse中Maven的使用 Maven简介 Maven作用 对第三方依赖库进行统一的版本管理 统一的目录结构,统一各平台各IDE目录 统一的软件构建阶段 Maven是项目构建工具 定义项目的组成.管理项目依赖和发布 下载Maven 下载地址:http://maven.apache.org/download.cgi 安装Maven 设置系统环境变量 新增MAVEN_HOME变量,值:D:\apache-maven-3.5.2 PATH添加 %…