一路编程
  • 推荐0
  • 收藏8
  • 浏览8.0K

一路编程

Steven Foote (作者)  佟达 (译者)

  • 书  号:978-7-121-30478-1
  • 出版日期:2016-12-16
  • 页  数:296
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Learning to Program
  • 原书号:9780789753397
  • 维护人:符隆美
这是一本编程入门的书,然而,如果以书中所讲内容作为入门标准,估计十有八九的在职程序员都不能算入门。现代软件开发,已经不仅仅是写出正确的代码这么简单,环境、依赖、构建、版本、测试以及文档,每一项都对软件是否成功交付起到至关重要的作用,这些都是每一个程序员在开发软件过程中必备的技能。本书对于上述的每一种技能,都做了简洁而精炼的介绍,以满足最基本的日常软件开发。换句话说,本书实际上是为现代软件开发的入门,设下了最基本的门槛。相信每一个读此书的人,不论是即将进入软件行业,还是已经在软件行业工作多年,都会获得收获。
ThoughtWorks 总监咨询师熊节倾情力荐,一本看完立马能编程的入门书籍!
推荐序
编程魔法的麻瓜入门手册

在看一个涉及旧房改造的电视综艺节目时,我突然意识到一件事:同样是需要大量知识和实践作为基础的专业人士,程序员似乎从来没有得到像建筑师那样来自普罗大众的认可与尊重。究其原因,我想可能部分原因是程序员的工作太缺乏可见性,以至于那些不懂技术的麻瓜们对程序员的印象要么是盲目崇拜,要么是盲目轻视,总之没有那种平等而深入的交流方式。尤其在英语极不普及的中国,天书一般的程序代码更是让麻瓜们望而却步,遑论去理解和交流。像本书译者、我的同事佟达所遭遇的“家人不知道我一天到晚在干些啥”的困扰,对于广大中国程序员而言恐怕是家常便饭。
本着帮助麻瓜进入魔法世界的崇高理想,Steven Foote写了这么一本精彩的编程入门教材。相比常见的高校编程教材,这本《一路编程》最大的好处是它的“不求甚解”——作者堂而皇之地宣称:你不知道一行程序代码背后那些魔法是怎么发生的吗?无所谓!“你不需要知道那些指令是什么,或者理解它们的工作原理,只要它们能用就行。”这么一来,读这本书入门的麻瓜们可就比它们大部分在学校里上编程课的同侪们更有希望:当那些抱着大部头教材的学生们正在被指针地址等高深的魔法细节吓破胆时,这本书的读者倒是——像已经在干着程序员这份工作的人一样——放心大胆地忽视绝大部分细节,写出一两个能运行的程序,并从中获得继续学习必不可少的成就感。
其实——出乎麻瓜们的意料——绝大部分的软件开发根本不是什么火箭科学。就像我经常跟朋友打趣说的,我们写这些程序连四则运算都用不全,主要除法不怎么用。相比科学,软件开发其实更像一种工匠手艺(craft)。使一个优秀的程序员区别于平庸程序员的,正如Neal Ford在《卓有成效的程序员》中所说,是好的习惯和趁手的工具。Foote很准确地抓住了这一点。在快速介绍Javascript编程之后,他迅速而不失全面地介绍了体面的前端程序员应该用到的全套工具箱:命令行、构建工具、数据库、正则表达式、测试工具、文档……招聘时我们常会对着候选人提交的一个光秃秃的源代码文件挠头,只有经历过这种痛苦的人才会知道,候选人提交的代码作业有Grunt构建脚本甚至有单元测试是一件多么令人愉悦的事。
处在当今这个数字化浪潮方兴未艾的时代,能让麻瓜顺利学会编程(或者至少对编程有点概念),其意义超出家庭和谐的层面。中国无比巨大的IT需求,与有限的IT人才供应之间的矛盾,近年来不仅没有缓解,倒有愈演愈烈之势。另外,众多出身、学历平平的青年人有志于投身IT这个大有前途(至少有“钱途”)的行业,却苦于迈不过入门的门槛。如果有更多的学校、企业、培训机构照着Foote这个思路,用深入浅出、符合直觉、又贴合行业最佳实践的方式来给这些青年人提供指导,不仅能创造若干就业机会,说大一点更是为“互联网+”宏观战略提供人才支撑,善莫大焉。
最后,祝各位读者阅读愉快,祝佟达及广大程序员都得到家人更多的理解与支持,祝更多麻瓜走进编程这一神秘的魔法世界。

ThoughtWorks总监咨询师 熊节
2016年11月





译者序
这是最好的时代,也是
最坏的时代





在中国,IT从业者有数百万人之多,但这其中,称得上会编程的,不会超过十分之一。
我所说的会编程,绝不仅仅是会写代码,而是包括环境搭建、版本管理、构建管理、单元测试、文档编写、团队合作,以及任务拆分在内的综合技能。很多人——包括我自己——一开始都无法理解,一个程序员除了写代码,为什么还需要懂这么多东西。
当年在学校,有幸参加一个学生团体,利用课余时间做点小项目。第一次几个人一起写代码,还有点小激动。然而激动并没有延续很久,过了两天,当大家准备把各自写的代码合到一起时,发现这是个根本无法完成的任务,每个人都有自己的想法,从代码组织方式,到代码风格,甚至连IDE都不一样。那是第一次感受到,真正的软件开发,和写C语言程序设计的作业完全不一样。
2009年年底,我到微软亚洲研究院的创新工程中心实习,当时的部门负责人是邹欣,他是《移山之道》和《构建之法》的作者。进组的第一天,我就拿到几张纸,上面写着一些基本的编码规范。分配给我的电脑上环境已经准备好,从TFS上签出项目代码,在项目文件中的编译选项已经配置好,直接运行编译,之后执行脚本就可以将服务跑起来。从新人进组到可以开始工作,不到一天时间,真是让我眼界大开。当然,这才是开始,后面从代码提交,到工作项分配,再到上线部署,每一件事都在刷新着我对软件开发的理解。不过,作为一个小小的实习生,那时的我只想安安静静地写代码,没有仔细思考这些专业工作背后的意义。
我毕业后的第一份工作就职于一家研究所,所在的部门人员能力都很强,但是因为信息相对闭塞,对于现代软件开发方法并不是很了解,所以开发团队的很多做法都比较原始,导致需要花费大量的时间和精力在管理代码版本、修复由于更新代码导致一些已有功能不能用的bug等上。我尝试将在微软亚洲研究院学到的那些知识引入到团队中,觉得只要搭建起TFS,就水到渠成了。可惜现实狠狠给我上了一课,搭建TFS其实是所有事情中最简单的,设定编码规范、规范代码提交流程、统一编程环境、编写自动化脚本等,每一件事都非常困难。这时我才意识到,如果一个团队中大部分人都不了解这些现代软件开发的知识,靠一两个人去推动,几乎不可能。
后来,我来到ThoughtWorks,发现这里每个人都能够熟练使用Git管理代码,使用Gulp、Maven、SBT等管理构建构成,还会写大量的自动化测试来保证质量。从代码修改到测试环境上线,只需要5分钟时间,整个过程不需要人参与,程序员们只要看着屏幕上的流水线走到最后亮起绿灯,就可以安心地做下一个任务。后来有人给这种工作方式起了个很直观的名字,DevOps,中文叫作“开发自运维”。 在这里,我了解到了为什么需要敏捷开发,为什么要做持续集成、持续交付,为什么要组建全功能团队。以前对于软件开发的很多疑惑,都慢慢解开了。我常常想,要是我在还没毕业的时候,就知道这些事情,会少走多少弯路啊!
最近几年,参与了几次技术咨询项目,接触到更多软件开发者。很多业界有名的公司,实际上软件开发人员的技能非常不足。完全不理解软件工程任何概念的程序员大有人在,不会使用命令行工具、不知道如何处理代码冲突、从不做单元测试、基本上全靠网上搜索一些代码片段来完成任务,这样的人真心不能算会编程。当然也不乏一些在日常工作中有思考,能够理解软件开发的痛点,但是苦于不知道如何改进的程序员。因为从来没有人告诉他们怎么做才是正确的编程方式。
现在市面上对于每一个流行的技术都有大量的书籍文档做介绍,然而,唯独缺少一类书,告诉读者如何才能做一名合格的程序员。事实上,我自己以前也一直认为,要想成为一名合格的程序员,需要读很多不同方面的书。直到我看到了本书。
当时接下这本书的翻译,初衷是想要将这本书送给我当时的女朋友,现在的妻子,因为她刚好也是会计,和本书作者在转行做程序员之前的职业一样。我的本意是通过这本书,让我的妻子也可以对编程感兴趣,能够理解我每天对着电脑到底是在干什么。然而当我翻译到第4章,介绍JavaScript构建工具那部分时,我发现这本书并不是我一开始想的那样,它不只是一本介绍如何写JavaScript代码的入门书。在只有两百多页的书中,作者对所有软件开发相关的技能都做了介绍。对于每个编程必备技能,作者仅仅介绍其在日常开发过程中最常用到的一些知识,用20%的篇幅,把80%的场景都覆盖到了。不仅如此,因为作者自己从对编程一无所知开始学习,所以在介绍一些相对难理解的概念时,能够设身处地地从初学者角度着想,用直白的语言,将一些概念解释出来。尽管可能从专业人士角度看,不算非常严谨,但对于日常开发工作来说,刚好够用。
对于程序员来说,这是最好的时代,物联网几乎改变了所有行业,甚至已经有人在提“程序员拯救世界”这种说法,作为程序员,我们应感到自豪;然而,这也是最坏的时代,软件开发对程序员的要求越来越高,20年前也许会用HTML设计网页已经非常厉害,但今天你需要会很多不同的技能才能成为一名合格的程序员。如果你希望能够在软件开发这条路上一直走下去,本书可以帮你迈出坚实的一步。
感谢本书的编辑符隆美,在翻译本书期间给我不少鼓励,让我能够坚持译完本书,没有她的帮助,本书不可能完成。


佟达
2016年11月



前言
我为什么写这本书




像大多数伟大的(会计师)故事一样,我的故事开始于一个Excel电子表格。那是2008年,我正在犹他州普若佛的杨百翰大学学习会计,同时在法学院图书馆做接待员。一天,我的老板问我知不知道如何在Excel里把一列名字随机打乱顺序。“当然,”我骗了他,然后去做了每一个说了大话的人都会做的事:谷歌一下。谷歌给我展示了至少三种能够在Excel中打乱列表顺序的不同方法。2分钟后,我就把打乱顺序的列表交给了老板。就在那时,她认定我很擅长计算机,应该去图书馆系统部工作。我不太确定是不是用谷歌检索东西的天赋就等于擅长计算机,但我很感激她这么认为。
我的编程之旅就是从法学院图书馆系统部开始的。第一天,我的老板给了我一本有着25年历史的书——《Perl编程》,并向我展示了我的桌子,坐落在一个没有窗户的房间,上面杂乱地堆放着老旧的计算机、键盘和显示器。临走之前,他告诉我,他正忙着其他事情,但是在他回来之前,这个Perl教材会让我一直有事可做。我翻开书,开始阅读,那是我从没有过的感受。
那本书写于Windows尚未出现之时,所以它假定读者在用UNIX操作系统(我从没听说过UNIX)。我忽略了这条,继续使用我的Windows XP计算机,它刚刚从图书馆计算机实验室退休(在此之前,我从没听说一台计算机对于一个图书馆计算机实验室来说太老了的这种事)。那本书说,给某个地址寄一封贴好邮票的回邮信封,就会收到一张存着Perl的软盘。我决定不邮寄而使用我的谷歌技能,找到下载和安装Perl的说明。我以前下载过软件,但我并不知道程序语言也需要下载安装,我有点紧张,怕把我的计算机搞坏,但我发现没法跳过这一步,只能硬着头皮继续。
那本书第1章展示了一些示例代码,用来打印Hello, World!,看起来就像这样:
print (“Hello, world!”);
书中让我把这段示例代码保存到一个名为hello_world.pl的文件中。我之前唯一用过能往计算机里输入文本的软件就是Word,于是我打开Word,开始打字。我大概花了45秒意识到Word不是写代码的地方,然后花了45分钟才找到正确的地方。穷尽我所有谷歌技能,都想不出来该搜索什么才能找到写代码的正确方式。我现在进入了一个全新的、不熟悉的世界,我熟悉的那些检索词都没用。最终,我找到了答案——记事本(正如你将在第1章“‘Hello, World!’写下你的第一个程序”中会学到的,记事本并不是正确答案,但它确实可以工作),然后我继续艰难前进,只是有一点点沮丧。
最终,我把书中的代码敲进记事本,并保存文件。什么都没发生。但我“很擅长计算机”,而且我知道如果有什么东西不工作,你应该尝试重启。所以我关掉了这个文件,尝试通过双击重新打开它。一个黑底白字的小窗口在屏幕上一闪而过,持续不到1秒就消失了,而且记事本也没有打开。那时,我觉得我把计算机给搞坏了,而且我不太相信我的老板不会因为一台计算机坏了而发火,尽管它已经很旧了。然后我的脑中闪过一个想法,就是我的程序事实上已经执行完了。我穿过房间,跑到打印机旁,想看看我是不是已经成功打印了“Hello world!”。打印机空闲着,托盘里也没有任何新打印出来的纸张。我试着重启打印机,以防万一。不走运(在很久之后我才知道print意味着打印到屏幕,而不是打印到一张纸上),那天下午剩下的时间就在重复着这种令人抓狂的事情。
那天结束时,我感觉我并不擅长计算机;事实上,计算机在用它们的方式对付我,而且它们好像乐在其中。我很想放弃,但我需要工作,而且我不愿言败,我不想让计算机获胜。接下来的几个月里,我只取得缓慢而零星的一些进展。我不断在原地打转,不得不一遍又一遍学习一些相同的东西。唯一可能有能力指导我、回答我问题的人,不是特别忙,就是太有经验以至于帮不上什么忙。就像我在读的那本有关Perl的书(它假设我已经知道怎么用C编程,鬼才知道那是什么东西),这些可能的指导老师都认为我懂得比我实际知道的多得多。我不想泄露我什么都不知道,怕丢掉工作(这可能不是个明智的举动)。然而,即使一开始感到沮丧,我也能看出程序是多么强大,而且甚至还挺享受的。最终,知识碎片开始汇集到一起,我慢慢开始理解。
我的编程入门之路经历了许多的坎坷,而且我意识到,每个希望自学编程的人,都可能有类似的经历。有几次,我想要放弃,觉得编程就是给那些计算机科学系的书呆子学生准备的。编程在刚开始学习时确实有些吓人,而有经验的程序员知道那么多东西,以至于让人不敢对他们提问题。但是不管有多难,不管多少次你可能想要用头撞桌子或是把计算机扔到地上,编程最终会带给你惊人的乐趣和回报。当我意识到编程有多么棒时,我放弃了会计学硕士学位和一个在顶级会计师事务所工作的机会,转而从事编程。我从没后悔。我写下这本书,是因为当年刚开始学编程时,就想有这么一本书。
为什么你应该读这本书
计算机就在我们身边,遍布我们生活的方方面面,然而大多数人还并不真正理解它们的工作方式,或者如何让计算机为我们工作。我们都被限制在计算机已经知道怎么做的那些事情上,但是计算机一直以来都意图成为可编程的机器。你可以为你桌上的计算机编程,让它做任何你想要做的事。随着世界越来越依赖于计算机,编程技能对每个人来说都将是必需的,不仅仅对专业软件工程师或开发者来说是如此。这本书会帮助你学习编程,并且乐在其中。
在接下来的几页,你会建立编程基础,为你实现全部编程目标做好准备。不论你想要成为一个专业的软件开发者,还是想要学习如何更高效地和程序员沟通,或者只是对于程序如何工作感到好奇,这本书都非常适合作为帮你达成所愿的第一步。学习编程仍将困难,但却有可能,并且有希望变得有趣,而不是让人沮丧。
你的项目
最好的学习编程的方式就是真正去编程。贯穿本书,你将编写一个完整的Chrome浏览器扩展程序。Chrome浏览器扩展程序是能够增强(或者扩展)Chrome浏览器功能的程序。我们即将搭建的这个扩展程序会向用户询问名字和手机号,然后把用户Facebook新鲜事里的所有照片,都根据用户的位置(通过电话号码确定)改成小猫小狗。这个扩展程序(我们称之为猫咪书)可能没什么特别的用处,但搭建它的过程会很有趣,而且期间会帮你学到很多重要的编程概念。

目录

1 “Hello, World”写下第一个程序 1
选择文本编辑器 1
核心功能 2
做出你的选择 4
Sublime Text 5
TextMate 5
Notepad++ 5
Gedit 6
Vim 6
Eclipse 6
IntelliJ 7
Xcode 7
Visual Studio 7
创建项目目录 8
从小处着手:创建测试文件 8
HTML和JavaScript如何在浏览器中一起工作 10
小幅修改的意义 11
乘胜追击 13
在manifest.json中引用JavaScript 16
让它运行起来 17
能力越大,责任越大 18
总结 18
2 软件如何工作 19
什么是“软件” 19
软件生命周期 20
源代码——一切开始的地方 21
一组指令 21
编程语言 22
从源代码到0和1 27
编译型语言与解释型语言:源代码何时变成二进制码 27
运行环境 28
处理器执行 29
输入和输出 29
输入让软件更实用(可重用) 30
输入从哪来 31
软件如何获得输入 32
输出类型 32
GIGO:垃圾进,垃圾出(Garbage In,Garbage Out) 33
状态 34
给kittenbook添加状态 35
内存和变量 37
变量 37
变量存储 38
有限的资源 41
内存泄漏 41
总结 42
3 认识你的计算机 43
计算机很笨 43
计算机有魔力 44
站在巨人的肩膀上 44
计算机内部 44
处理器 44
短期存储器 45
长期存储器 45
使用计算机 46
文件系统 46
命令行:取得控制权 48
总结 58
4 构建工具 59
(几乎)全部自动化 59
安装Node 60
安装Grunt 62
帮你创造软件的软件 65
避免错误 66
更快地工作 66
自动化的任务 67
编译 67
测试 68
打包 68
部署 68
构建你自己的构建过程 69
Gruntfile.js 69
使用Grunt插件 69
加载Grunt插件 72
注册任务 73
看好了 74
总结 77
5 数据(类型)、数据(结构)、数据(库) 79
数据类型 79
为什么存在不同的数据类型 80
基本数据类型 80
组合数据类型 85
动态和静态类型语言 92
数据结构 93
集合 96
栈 96
树 97
图 98
如何选择高效的数据结构 101
数据库 101
长期(持久化)存储 101
关系型数据库 101
SQL简介 103
总结 105
6 正则表达式 107
Ctrl+F组合键:寻找模式 107
在JavaScript中使用正则表达式 108
重复 109
? 109
+ 110
* 110
特殊字符和转义字符 111
{1, 10}:创造属于你的超能力 111
匹配任意字符的“.” 112
不要太贪婪 112
从[A-Za-z]理解方括号 113
字符列表 113
范围 114
排除 114
电话号码模式 115
我需要\s 117
方括号的快捷方式 118
限制条件 119
提取标签 123
高级查找和替换 124
(一行的)开头和结尾 124
标记 125
全局匹配 125
忽略大小写 125
多行 125
什么时候会用到正则表达式 125
grep 125
代码重构 126
校验 127
数据抽取 127
总结 127
7 何时使用if、for、while 129
操作符 129
比较操作符 129
逻辑操作符 130
一元操作符 132
二元操作符 132
三元操作符 135
“真”和“假” 137
“语法糖” 139
循环遍历一个数组 140
遍历图片 140
嵌套循环 141
你需要停下来 142
无限循环 144
再停一下 145
当你不知道什么时候停下 145
何时执行 145
事件 145
监听器 146
定时任务 147
超时 147
在事情出错前接住它 148
编写健壮的代码 149
总结 149
8 函数和方法 151
函数结构 151
定义 152
调用 152
参数 153
调用栈 155
代码封装 156
一次做好一件事 156
分而治之 157
物尽其用 161
代码重用 161
解决通用问题 161
用更少的代码做更多的事情 161
不要做重复的事(DRY) 163
作用域 164
全局变量 166
本地变量 166
变量查找是怎么工作的 167
总结 170
9 编程标准 171
编码惯例 171
设定标准 172
黑科技,用还是不用 172
立即付款还是先用后付款 173
写可维护的代码 173
代码格式化 174
保持一致 175
空白字符 176
规则不会自己出现:要制定规则 177
使用其他人的成果 179
更快地构建 179
开源软件 179
由社区建立 180
什么时候该自己写 180
最佳实践 181
文档 181
计划 181
测试 181
总结 182
10 文档 183
文档化意图 184
自文档代码 185
不要将显而易见的东西写入文档 187
过时文档的危险性 188
用文档来找bug 189
为自己写文档 189
你的记忆力有多好 189
为了学习而记录文档 190
超越注释的文档 190
给别人写的文档 194
记录你的决定 195
记录你的资源 195
为了教学而写文档 196
总结 196
11 计划 197
三思而后行 197
创建规格说明 198
设计架构 198
画示意图 199
尝试破坏你的系统 200
迭代式计划 201
为扩展设计 202
你的优先级是什么 202
用户体验 202
性能 203
安全 203
伸缩性 203
截止日期 204
平衡的艺术 204
识别并创建限制条件 204
知道可以做什么,不可以做什么 204
总结 206
12 测试和调试 207
手工测试 207
边做边测 208
尝试些疯狂的事 208
吃你自己的狗粮 209
自动化测试 209
单元测试 210
给Kittenbook配置测试 213
失败时代 217
间谍喜欢我们(我们也喜欢间谍) 218
集成测试 221
尽早发现问题 221
调试 222
错误 222
日志 223
断点 224
查看、监控和控制台 228
单步执行代码 229
调用栈 231
找到根本原因 231
编码、测试、调试、不断重复 231
总结 232
13 授人以渔:如何用一生学习编程 233
如何搜索 233
找到正确的关键字 234
以终为始 236
识别高质量资源 236
个人博客:隐藏的宝藏 237
什么地方、什么时候,以及怎么问编程问题 237
什么地方 237
什么时候 240
怎么问 241
通过教别人来学习 241
总结 242
14 构建你的技能 243
做你自己的kittenbook 243
给Facebook重新设计风格 243
添加新功能 244
分享你的kittenbook专属版本 245
找到你自己的项目 245
解决你自己的问题 246
志存高远 246
获得帮助,提供帮助 247
开源项目 247
GitHub 247
找项目 248
贡献的不同方式 248
创建你自己的项目 249
免费在线教育 249
欧拉项目 249
Udacity 250
Coursera 250
codeacademy 251
Khan Academy(可汗学院) 251
教程 251
付费教育 251
读书 252
Udacity和Coursera 252
Treehouse 253
总结 253
15 高级主题 255
版本控制 255
为什么使用版本控制 256
和团队一起工作 257
Subversion 260
Git 260
OOP(面向对象编程) 266
类 266
继承 267
实例 268
设计模式 268
发布订阅 268
中间人 269
单例 270
总结 270

读者评论

相关博文

  • 巧用“搜索”解决自学编程遇到的难题

    管理员账号 2017-01-17

    小编说:相信每个自学编程的人,入门之路都经历了许多坎坷。不过我们身边藏着很多“良师”,多以利用总是能够带来惊喜。善用“搜索”就是其中一位。 本文选自《一路编程》,如何通过搜索解决自学编程中遇到的问题。了解更多本书详情请点击阅读原文。...

    管理员账号 2017-01-17
    357 0 0 0

相关图书

软件架构设计:大型网站技术架构与业务架构融合之道

余春龙 (作者)

本书系统化地阐述了技术架构与业务架构的方法论与实践。本书内容分为5大部分,第1部分从行业背景出发定义架构的概念与范畴;第2部分细致讨论架构所需的计算机功底,包括...

¥49.00

MySQL 8 Cookbook(中文版)

(美) 卡西克·阿皮加 特拉 (Karthik Appigatla) (作者) 周彦伟 孟治华 王学芳 (译者)

MySQL 8.0 的发布是MySQL 发展历史上的一个重要里程碑,也是开源数据库领域内的一个大事件。针对这个版本,MySQL 官方团队做了太多的工作,从查询优...

 

iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift

[德] Marcel Weiher (作者) 李俊阳 马超 程伟 孙莹 译 (译者)

随着应用功能的日益增加,性能问题也逐渐浮出水面,进入我们的视野之中。本书作者Marcel Weiher在性能调优领域有着丰富的经验,在他的带领下,你将会了解如何...

¥99.00

Scala编程(第3版)

Martin Odersky;Lex Spoon;Bill Venners (作者) 高宇翔 (译者)

本书由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala...

¥144.00

质量全面管控——从项目管理到容灾测试

葛长芝 (作者)

本书专门为有志于软件测试的工程师打开软件测试的大门,笔者结合案例讲解测试实践技术,主要内容有:项目管理、项目需求管理、代码质量控制、自动化部署、软件测试、安全测...

¥49.00

Spring MVC Cookbook中文版

Alex Bretet (作者) 张龙 (译者)

本书由浅入深地介绍了当今流行的Java Web框架Spring MVC的方方面面,从基础的环境搭建到微服务设计与架构,再到持久化、REST API构建、认证与测...

¥69.00