现在对 Ruby 语言的介绍结束了。第 5 章会好好利用这些知识来开发演示应用。 我们不会使用 4.4.5 节创建的 example_user.rb 文件,所以我建议把它删除: $ rm example_user.rb 然后把其他的改动提交到代码仓库中,再推送到 Bitbucket,然后部署到 Heroku: $ git status $ git commit -am "Add a full_t
总的来说,本章几乎没有做什么:我们从静态页面开始,最后得到的还几乎是静态内容的页面。不过从表面来看,我们使用了 Rails 中的控制器、动作和视图,现在我们已经可以向网站中添加任意的动态内容了。本书的后续内容会告诉你怎么添加。 在继续之前,我们花一点时间把改动提交到主题分支,然后将其合并到主分支中。在 3.2 节,我们为静态页面的开发工作创建了一个 Git 新分支,在开发的过程中如果你还没有提交,
至此,对这个 Rails 应用的概览结束了。本章开发的玩具应用有优点也有缺点。 优点 概览了 Rails 介绍了 MVC 第一次体验了 REST 架构 开始使用数据模型了 在生产环境中运行了一个基于数据库的 Web 应用 缺点 没自定义布局和样式 没有静态页面(例如“首页”和“关于”) 没有用户密码 没有用户头像 没登录功能 不安全 没实现用户和微博之间的自动关联 没实现“关注”和“被关注”功能
这一章做了很多事:安装,搭建开发环境,版本控制以及部署。下一章会在这一章的基础上开发一个使用数据库的应用,让我们看看 Rails 真正的本事。 如果此时你想分享阅读本书的进度,可以发一条推文或者更新 Facebook 状态,写上类似下面的内容: 我正在阅读《Ruby on Rails 教程》学习 Ruby on Rails! http://railstutorial-china.org/ 建议你加
侯会计是个与众不同的人。比如有人向你提意见,认为你错了,你大概会想:我哪里会错呢?肯定是你自己错了吧,理由如此如此这般这般。但是如果一百个人向你提意见,认为你错了,你大概就会想:也许我真的错了。 但侯会计不是这样的,哪怕是全世界的人都向她提意见,她也会固执地认为全世界的人都不对,都不理解她。要是只有一个人向她提意见,又不一样了,她多半认为这人肯定跟自己有仇,一定要狠狠地打击报复。 抱着这样的心理,
9.3.5 小结 多线程编程属于比较复杂的程序设计任务,即使对专家也不是容易的事情。这是因为多 线程在执行上具有不确定性,线程一旦启动,他们之间的相互依赖和相互作用的结果就是不 可预测的。《西游记》中的这段描写或许能帮助读者想象多线程并发执行的复杂性: 悟空见他凶猛,即使身外身法,拔一把毫毛,丢在口中嚼碎,望空喷去,叫一声“变”! 即变做三二百个小猴……把个魔王围绕,抱的抱,扯的扯,钻裆的钻裆,扳
18.7. 小结 这一章展示了性能优化的几个重要方面,这里是就 Python 而言,但它们却普遍使用。 如果你要在正则表达式和编写循环间抉择,选择正则表达式。 正则表达式因其是以 C 语言编译的可以本能地在你的计算机上运行,你的循环却以 Python 编写需要通过 Python 解释器运行。 如果你需要在正则表达式和字符串方法间抉择,选择字符串方法。 它们都是以 C 编译的,所以选取简单的。 字典
17.8. 小结 这一章中我们探讨了几个不同的高级技术。他们并不都适用于任何情况。 你现在应该能自如应用如下技术: 应用 正则表达式进行字符串替换。 将 函数当作对象,把它们存于列表中,把它们赋值给变量,并通过变量来调用它们。 构建 应用 lambda 的动态函数。 构建 闭合,将外部变量作为常量构建动态函数。 构建 生成器,进行逻辑递增操作并在每次调用时返回不同值的恢复执行函数。 抽象化,动态构
16.8. 小结 regression.py 程序及其输出到现在应该很清楚了。 你现在应该能够很自如地做到如下事情: 从命令行操作 路径信息。 在不使用列表遍历的情况下, 使用 filter 过滤列表。 在不使用列表遍历的情况下, 使用 map关联列表。 动态导入模块。
15.5. 小结 单元测试是一个强大的概念,使用得当的话既可以减少维护成本又可以增加长期项目的灵活性。 同样重要的是要意识到单元测试并不是“灵丹妙药”,也不是“银弹”。 编写好的测试用例很困难,保持其更新更需要磨练(特别是当顾客对修复严重的 Bug 大呼小叫之时)。 单元测试不是其它形式测试的替代品,比如说功能性测试、集成测试以及可用性测试。但它切实可行且功效明显,一旦相识,你会反问为什么以往没有
12.9. 小结 SOAP 网络服务是很复杂的,雄心勃勃的它试图涵盖网络服务的很多不同应用。这一章我们接触了它的一个简单应用。 在开始下一章的学习之前,确保你能自如地做如下工作: 连接到 SOAP 服务器并调用远程方法 通过 WSDL 文件自省远程方法 有效排除 SOAP 调用中的错误 排除常见的 SOAP 相关错误
11.10. 小结 openanything.py 及其函数现在可以完美地工作了。 每个客户都应该支持的 5 个 HTTP web 服务重要特性: 通过设置适当的 User-Agent 识别你的应用。 处理 适当的永久重定向。 支持 Last-Modified 日期检查 从而避免在数据未改变的情况下重新下载数据。 支持 ETag hash 从而避免在数据未改变的情况下重新下载数据。 支持 gzip
10.8. 小结 Python 带有解析和操作 XML 文档非常强大的库。这个 minidom 接收一个 XML 文件并将其解析为 Python 对象,提供了对任意元素的随即访问。进一步,本章展示了如何利用 Python 创建一个“真实”独立的命令行脚本,连同命令行标志,命令行参数,错误处理,甚至从前一个程序的管道接收输入的能力。 在继续下一章前,你应该无困难的完成所有这些事情: 通过标准输入输出
8.10. 小结 Python 向您提供了一个强大工具,sgmllib.py,可以通过将 HTML 结构转变为一种对象模型来进行处理。可以以许多不同的方式来使用这个工具。 对 HTML 进行分析,搜索特别的东西 汇集结果,如 URL lister 按结构的方式对其进行修改,如 属性引用 将 HTML 转换为其它的东西,通过对文本进行处理,同时保留标记,如 Dialectizer 学过了这些例子之后
7.7. 小结 这只是正则表达式能够完成工作的很少一部分。换句话说,即使你现在备受打击,相信我,你也不是什么也没见过了。 现在,你应该熟悉下列技巧: ^ 匹配字符串的开始。 $ 匹配字符串的结尾。 \b 匹配一个单词的边界。 \d 匹配任意数字。 \D 匹配任意非数字字符。 x? 匹配一个可选的x字符(换句话说,它匹配1次或者0次x 字符)。 x* 匹配0次或者多次x字符。 x+匹配1次或者多次x