异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
本节书摘来自异步社区《精解Windows8》一书中的第2章,第2.6节,作者:远景论坛编辑部著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.6 Windows应用商店 精解Windows8 Windows应用商店是用户获取Metro应用程序的唯一途径,用户可以在里面下载安装Metro应用程序,也可以对已安装的Metro应用程序进行更新。
CAE是计算机辅助求解复杂工程和产品结构各项性能和优化设计等问题的一种近似数值分析方法,适用于工程的整个生命周期。ANSYS软件是最经典的CAE软件之一,在国内应用广泛。近些年ANSYS公司收购了多款顶级流体、电磁类软件,并重点发展ANSYS Workbench平台。
本节书摘来自异步社区《Android 应用案例开发大全(第二版)》一书中的目录 ,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看
先说说格式。其实格式也算是协议,就是在某个固定的位置有固定意义的数据。Linux下的可执行程序格式是elf,也就是 “Executable and Linking Format”平时咱们用readelf命令可以查看elf文件头,里面有节(section)信息、段(segment)信息、程序入口(entry_point)、哪个段由哪些节组成等信息。
虚拟机(Virtual Machine)这一概念最初由波佩克与戈德堡定义,是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。由此可见,虚拟机是跟特定硬件无关的一个系统。在现实应用中,虚拟机最常见的情形便是双系统。
从第一行开始,我们已经说过,简单的HTML5 DOCTYPE将使浏览器处于标准模式,这是我们的第一个目标。接下来是一个html元素,其中包含head和body元素。奇怪的是,HTML5不需要head元素,但是不使用它我感觉不安。
本书的主要内容是通过综合Kali Linux的强大威力和树莓派便携又廉价的特点,两者强强联手,在不需要大运算量的项目里,构造一套异常灵活的渗透测试平台。我们已经把这套软硬件组合运用于远程渗透和漏洞测试。
如果你想用一个新的HTML元素封装一个已经存在的元素,jQuery提供了多个函数来帮你完成此项工作。每个函数的名字都包含了单词“wrap”,但它们的工作细节却不一样。代码清单3-15演示了wrap()最基本的用法。
让我们从一个简单的银行业务案例来展现一个可靠的事务。如今,许多人都有两个银行账户:储蓄账户和支票账户。如果你想将一些资金从一个账户转账到另一个账户,银行在网站上会有转账页面,进行如图2-7所示的一个资金转账流程
本节书摘来自异步社区《iOS 8案例开发大全》一书中的目录,作者 朱元波 , 陈小玉 , 胡汉平 , 张晨洁,更多章节内容可以访问云栖社区“异步社区”公众号查看
本节书摘来自异步社区《JavaScript开发框架权威指南》一书中的第2章,第2.7节,作者:【美】Tim Ambler , Nicholas Cloud著,更多章节内容可以访问云栖社区“异步社区”公众号查看
本节书摘来自异步社区《Web前端开发精品课——HTML5 Canvas开发详解》一书中的第1部分,第2章,作者:莫振杰 著,更多章节内容可以访问云栖社区“异步社区”公众号查看
首先要做的事情之一是情创建一个公共的GitHub仓库,以存储你的新插件。下文中将要提及的示例包含在本书附带的源码中,本书附带了源码。一旦你准备好代码仓库,就把它克隆到你的电脑上。
如清单所示,Grunt的多任务配置和刚才介绍的很相似。关键不同之处在于任务配置中的src属性。在我们的任务中,Grunt提供了一个this.files属性,该属性提供了一个包含着匹配到每个文件路径的数组,这些文件通过node-glob模块取得匹配到的文件路径数组。任务输出的结果可以在清单中看到。
今后你遇到的绝大多数Grunt插件都会是可配置的多任务。由此而来的灵活性使得我们可以针对不同的应用环境,以不同的方式运行同一个任务。一个常见的情景就是为不同的构建环境创建不同的输出目标。例如,在编译程序时,针对本地开发环境和产品发布可以选用不同的任务运行配置。
loadTask()方法一被调用,Grunt就会加载并执行在该文件夹下发现的所有Node模块,并且每次都将Grunt对象的引用作为参数传进去。这样的行为使我们可以将项目的Grunt配置划分为一系列相互独立的模块,每个模块负责一个单独的任务或插件的加载及配置工作。
Grunt为开发者提供了一个工具包,用于创建命令行程序来执行项目构建过程中的重复性任务,如压缩JavaScript代码、编译Sass样式表等。不过,Grunt的能力并不限于创建简单的任务(通常这些任务不会被分享或者复用),以解决特定工程遇到的特定需求,其真正的力量源于其将任务打包为可复用的插件的能力。
懒惰的程序员讨厌重复自己。他们通常会花费大量的时间去创造有用的工具,代替自己完成重复性的工作。他们往往还会为这些工具编写详尽的文档,以免之后可能因此而遇到麻烦。
Bower是一个简单的命令行工具,可以用来简化前端资源管理过程中的一些冗杂的工作。与其他平台上的知名包管理工具(如npm)不同,Bower的设计初衷并不是解决某种平台或者语言的特定需求;相反,它支持的是一般意义上的包管理。
截至目前,我们关注的焦点都在如何将Bower集成到项目中。我们先在项目中对Bower进行了初始化,然后探究了查找、添加以及移除软件包的方法。但是总有那么一天,你会希望将自己的软件包分享给其他人。要这么做的话,就必须遵守一些简单的规则,让我们从选择有效的包名开始。
许多第三方库并不是自包含(self-contained,亦即独立自足的),Bootstrap(它有依赖项jQuery)就是一个例子。当添加这样的包的时候,Bower可以非常智能地识别出额外的依赖项,并在缺失时主动将其添加到项目中。
语义化版本格式要求开发者创建定义明晰的API(通过文档或者自文档化的代码),从而为用户使用软件库提供唯一的切入点。新启动的项目一般从版本0.0.0开始,然后随着新版本的推出,版本号逐渐增加。
注意清单中跟在Bower的install命令后面的--save选项。默认情况下,install命令仅将包添加到项目中,而不更新项目清单。--save选项指示Bower将该包永久保存在项目的依赖列表里面。
对于是否将项目中的依赖项移出版本管理存在分歧。一方面,这么做可以令项目仓库更加整洁;另一方面,这也为由网络连接引发的问题(比如不能访问Bower注册中心或者GitHub等)埋下了隐患。
本节书摘来自异步社区《JavaScript开发框架权威指南》一书中的第1章,第1.2节,作者:【美】Tim Ambler , Nicholas Cloud著,更多章节内容可以访问云栖社区“异步社区”公众号查看
尽管包管理并不是新概念,但是将其广泛应用于前端资源的管理却是最近才有的事情。这些资源包括JavaScript库、样式表、字体、图标(icon)以及图像等,它们是现代网络应用的基本构件。随着现代网络应用的构建基础越来越复杂,对包管理工具的需求日益凸显。
从一个失败的Cucumber测试开始,然后通过这种失败来驱动应用代码的开发工作,作为一种由外向内的开发方法的一部分,我们已经用Cucumber取得了极大的成功。作为开发人员,这种工作方式能让我们实事求是,一步一个脚印,避免我们想当然地开发将来也许有需求但当前没有需求的功能。
Cucumber特性对公司来说是一笔宝贵的财富。我们曾见过有团队将他们系统中大块大块的部分推倒重写,知道自己有一组准确的、可执行的规范来确保新的方案会运行得跟原来一样好,他们自不必担心什么。对这些团队来说,特性比产品代码本身更有价值。
自动化特性的好处在于你可以把它们作为活文档来长期信赖,因为你会将每一个场景都用于检查产品代码,以确保它们仍然有效。对于同代码打交道的程序员来说,这还有另一件好处:在他们开发系统的时候,那些测试可以充当安全网,对任何破坏已有行为的错误都给出警告。
这个场景中有很多细节:有主要角色Dave的用户名和密码,还有另一个用户Sue的用户名和密码。用户名非常有用,因为它们有助于场景故事的描述,而密码就是噪音了:用户密码与被测内容毫无关系,事实上却让测试更难读懂。比如,Sue的密码跟Dave不同。
闪烁的场景偶尔失败,随机失败。同一个场景在相同环境的同一套代码库上运行,大多数时候能通过,有时却失败。这些似乎难以控制的失败使团队对测试、代码和自身都失去了信心。
关于使用Cucumber由外向内开发这种方式,有一点我们非常喜爱,就是它能帮助我们保持注意力集中,我们可以让 Cucumber 指导自己一步步向前,直到完成工作,让我们把精力集中在如何创建一个优雅的解决方案上。
事实上,这与我们之前说的不完全一样,我们说希望做能让测试通过的最少的、有用的工作。这里我们做的确实让测试通过了,但并不十分有用,暂且不说它根本没有计算器的功能这一事实,我们先看看这行耍小聪明的代码在测试时漏掉了什么。
非常好!现在我们的测试失败得合情合理了:它运行我们的程序,检查输出,然后告诉我们正确的输出应该是怎样的。到现在该暂停工作,休息一下了。我们已经为这个版本完成了不少艰苦的工作:一会儿等我们回来看代码的时候,Cucumber会准确地告诉我们要使程序正确运行还需要做哪些工作。
不再打印整个特性,取而代之的是progress格式器在输出中打印了三个字符,每个步骤对应一个字符。第一个字符.表示该步骤通过了;第二个字符F表示该步骤失败了,如我们所知;最后一个字符–表示最后一个步骤被跳过了。
这段代码试图运行我们的计算器程序calc.rb,同时传入上一个步骤保存下来的输入,并用另一个实例变量保存输出。接下来它检查一个名字很特别的(实际上是很隐晦的)Ruby变量$?,来核实命令是否成功运行了,如果运行失败则抛出一个错误。
我们已经确定计算器的第一个版本将会以命令行参数的形式接受用户输入,因此,对于Given the input “2+2”的步骤定义,我们的工作就是将输入记下来,以便下一步运行计算器的时候知道传入怎样的命令行参数。
现在在fetures/step_definitions目录下创建一个名为calculator_steps.rb的文件,只要这是一个Ruby文件,Cucumber并不介意你给这个文件起什么名字,但这里我们给这个文件起的名字其实不错。
Gherkin特性是面向业务的,再往下一层是步骤定义,不过在探索这一层之前有必要快速看一看全局图,以防有人感到困惑。图2-1可以提醒我们各种元素是如何组织在一起的,我们从包含场景和步骤的特性开始,场景中的步骤会访问步骤定义,后者将Gherkin特性和我们构建的应用程序连接在一起。
关于这个计算器的未来,我们有一个美好的愿景:一个能够在手机、桌面和浏览器上运行的云端服务,借助通用的数学操作符“团结”整个世界。不过等等,我们是务实的业务人员,因此这个程序的第一个版本应该尽可能简单。第一个版本将是一个用Ruby脚本实现的命令行程序。
只有开发人员和利益相关人一起清晰地交流的时候,软件团队才能工作得最好。要做到这一点有一种非常好的方法,就是让开发人员和业务人员基于自动化验收测试,协作描述需要完成的工作。