[Whodo.SVN] r86 - trunk/doc/agile_python

0 views
Skip to first unread message

SVN 提交记录

unread,
Sep 11, 2008, 10:39:02 PM9/11/08
to s...@list.worldhello.net
Author: jiangxin
Date: 2008-09-11 11:00:48 +0800 (四, 2008-09-11)
New Revision: 86

Modified:
trunk/doc/agile_python/
trunk/doc/agile_python/ch01-preface.xml
trunk/doc/agile_python/ch03-pylons.xml
trunk/doc/agile_python/ch04-auth.xml
trunk/doc/agile_python/ch05-config.xml
trunk/doc/agile_python/index.xml
Log:
spelling check


Property changes on: trunk/doc/agile_python
___________________________________________________________________
已增加: svn:ignore
+ version.xml
*.chm
*.fo
*.htm
*.html
*.pdf
*.rtf
*.tar.bz2
*.txt
*.hhc
*.hhp


已修改: trunk/doc/agile_python/ch01-preface.xml
===================================================================
--- trunk/doc/agile_python/ch01-preface.xml 2008-09-10 17:07:07 UTC (rev 85)
+++ trunk/doc/agile_python/ch01-preface.xml 2008-09-11 03:00:48 UTC (rev 86)
@@ -3,20 +3,20 @@
<title>前言</title>

<para>本文来自于笔者<ulink url="http://www.ossxp.com/News/2008-09-02"
- >最近完成的一个小项目 pySvnManager</ulink>,源代码已经贡献到开源项目网站
- <ulink url="http://pySvnManager.sf.net"/>。该项目从一开始,
+ >最近完成的一个小项目 pySvnManager</ulink>,源代码已经贡献到开源社区。
+ 项目首页:<ulink url="http://pySvnManager.sf.net"/>。该项目从一开始,
就采用了测试驱动开发(TDD)技术,通过一系列的迭代最终敏捷的实现了预期的需求。</para>

- <para>在该项目中采用了Python最新流行的MVC框架:
- Pylons。并在Web页面中大量使用了AJAX技术。本文涉及到的技术术语有:敏捷,TDD,MVC,
- 单元测试,代码覆盖测试,AJAX,重构,i18n,开放源代码。</para>
+ <para>在该项目中采用了Python最新流行的MVC框架:Pylons。并在 Web 页面中大量使用了
+ AJAX 技术。本文涉及到的技术术语有:敏捷, TDD, MVC,
+ 单元测试, 代码覆盖测试, AJAX, 重构, i18n, 开放源代码。</para>

<!-- ================================================================= -->
<sect2 id="psm.preface.background">
<title>项目背景</title>

- <para>Subversion使用配置文件进行基于路径的授权,手工配置易于出错。下面是一个
- 错误百出的配置示例:</para>
+ <para>Subversion使用配置文件进行基于路径的授权,手工配置易于出错。
+ 下面是一个错误百出的配置示例:</para>

<screen>
[groups]
@@ -49,23 +49,30 @@

<orderedlist>
<listitem>
- <para>组的循环引用:group1包含了group2,而group2又反过来包含group1,
- 造成循环引用。</para>
+ <para><emphasis>组的循环引用:</emphasis>
+
+ group1包含了group2,而group2又反过来包含group1,造成循环引用。</para>
</listitem>

<listitem>
- <para>包含未定义的组或者别名:例如在 repos1 版本库的 /trunk/src
- 的策略中用到了 @visiters 组,而该组没有在[groups]小节中定义;</para>
+ <para><emphasis>包含未定义的组或者别名:</emphasis>
+
+ 例如在 repos1 版本库的 /trunk/src 的策略中用到了 @visiters 组,
+ 而该组没有在[groups]小节中定义;</para>
</listitem>

<listitem>
- <para>版本库repos1的根路径,欲限制user1的访问,而实际效果并非如此,
+ <para><emphasis>潜在的配置错误:</emphasis>
+
+ 版本库repos1的根路径,欲限制user1的访问,而实际效果并非如此,
因为uer1属于group1组,而group1组被授权。user1实际获得的权限是策略能够给予
的最大权限;</para>
</listitem>

<listitem>
- <para>访问版本库repos1的 /trunk 目录,会参照缺省的[/trunk]小节设置,
+ <para><emphasis>潜在的配置错误:</emphasis>
+
+ 访问版本库repos1的 /trunk 目录,会参照缺省的[/trunk]小节设置,
这可能跟管理员本意不符。需要对repos1的/trunk重新定义权限以覆盖缺省的
[/trunk]小节的设置。</para>
</listitem>
@@ -82,8 +89,8 @@
<sect2 id="psm.preface.implement">
<title>最终的实现</title>

- <para>我们先来如何部署最终的实现。下面的安装配置过程中的命令是在
- Debian Linux下完成。至于 Windows 或其他平台,应该与之类似。</para>
+ <para>我们先来看看如何部署最终的实现。下面的安装配置过程中的命令是在
+ Debian Linux 下完成。至于 Windows 或其他平台,应该与之类似。</para>

<!-- =============================================================== -->
<sect3 id="psm.preface.implement.install">
@@ -98,13 +105,13 @@
Reading https://sourceforge.net/projects/pysvnmanager
</screen>

- <para>理论上很简单的东西,也奈何不了复杂的现实:</para>
+ <para>理论上很简单的东西,却奈何不了复杂的现实:</para>

- <para>在项目刚刚开发完成,就出现了相当长的一段时间 SourceForge.net 无法访问!
+ <para>在项目刚刚开发完成,就出现了相当长一段时间的 SourceForge.net 无法访问!
导致 <command>easy_install</command> 为了搜索最新版本,在连接到
<ulink url="http://SourceForge.net"/> 时发生了死锁而阻塞。
虽然我打算把项目移到别处,但发现一些依赖的包如: python-ldap
- 也是要访问 SourceForge.net网站。因此我取消了搬家的打算,耐心且无助的等。
+ 也是要访问 SourceForge.net网站。因此我取消了搬家的打算,耐心且无助的等待解封。
同时将代码镜像在网址:<ulink url="http://svn.worldhello.net/svn/pysvnmanager"/>
上,供不能访问 <ulink url="http://SourceForge.net"/> 的用户参考。</para>

@@ -237,7 +244,7 @@
</figure>
</sidebar>

- <para>下面将整个开发过程予以概要介绍,以了解Python的Web编程框架以及Python的敏捷实践。</para>
+ <para>下面将整个开发过程进行概要的介绍,展示如何用 Python 进行敏捷的 Web 开发。</para>

</sect3>

已修改: trunk/doc/agile_python/ch03-pylons.xml
===================================================================
--- trunk/doc/agile_python/ch03-pylons.xml 2008-09-10 17:07:07 UTC (rev 85)
+++ trunk/doc/agile_python/ch03-pylons.xml 2008-09-11 03:00:48 UTC (rev 86)
@@ -95,7 +95,7 @@
<para>把我们已经开发完毕的svnauthz模组及其单元测试放到pySvnManager的代码树中,
因为svnauthz和pySvnManager的耦合很紧,没有必要单独维护svnauthz模组。</para>

- <para>pysvnauthz/model 目录是放置模组的地方,将svnauthz的模组放在该目录下。</para>
+ <para>pySvnManager/model 目录是放置模组的地方,将svnauthz的模组放在该目录下。</para>

<para>至于单元测试用例,则应该拷贝到pysvnmanager/tests 目录下。该目录下有文件
test_models.py,就是用于测试模组的。我们先参考 test_models.py
@@ -625,11 +625,10 @@
<sect2 id="psm.pylons.controller.unittest">
<title>控制器的单元测试</title>

- <para>每一个控制器,在tests/functional</para>
+ <para>每一个控制器,在tests/functional 目录下都一个对应的单元测试文件。
+ Pylons的单元测试是使用 paste.fixture 来模拟浏览器对Web服务器的访问,
+ 通过对返回结果的检查实现测试。</para>

- <para>目录下都一个对应的单元测试文件。Pylons的单元测试是使用paste.fixture
- 来模拟浏览器对Web服务器的访问,通过对返回结果的检查实现测试。</para>
-
<para>测试用例的运行,还是使用nosetests,nosetests能够主动到tests目录下发现测试用例,
并运行。</para>

@@ -695,7 +694,7 @@
模板(视图)设计,控制器设计,单元测试的流程。</para>

<para>当完成所有的三个控制器之后,会发现似乎少了些什么?
- 难道要任何人都可以查看SVN版本库的授权甚至修改版本库授权么?
- 我们需要为pySvnManager增加认证和授权管理。</para>
+ 难道要任何人都可以查看 SVN 版本库的授权甚至修改版本库授权么?
+ 我们需要为 pySvnManager 增加认证和授权管理。</para>
</sect2>
</sect1>

已修改: trunk/doc/agile_python/ch04-auth.xml
===================================================================
--- trunk/doc/agile_python/ch04-auth.xml 2008-09-10 17:07:07 UTC (rev 85)
+++ trunk/doc/agile_python/ch04-auth.xml 2008-09-11 03:00:48 UTC (rev 86)
@@ -1,16 +1,20 @@
<!-- =================================================================== -->
<sect1 id="psm.security">
- <title>pySvnAuthz本身的认证和授权</title>
+ <title>pySvnManager 本身的认证和授权</title>

+ <para>pySvnManager 作为 Subversion 授权管理的软件,如果本身没有认证和授权机制,
+ 就会成为系统最大的漏洞。为此我们迫切需要为我们的应用增加认证和授权。还好,
+ 这实现起来并不是很困难。</para>
+
<!-- ================================================================= -->
<sect2 id="psm.security.initial">
- <title>为BaseController增加__before__()方法</title>
+ <title>为 BaseController 增加 __before__ 方法</title>

- <para>__before__是WSGIController 特有的方法,在 Action 执行之前执行,
+ <para>__before__ 是 WSGIController 特有的方法,在 Action 执行之前执行,
可以用于初始化变量,以及做权限控制。</para>

- <para>BaseController是所有控制器的基类,在该基类增加授权功能,
- 会自动为其他控制器所使用。BaseController的代码在文件lib/base.py中。</para>
+ <para>BaseController 是所有控制器的基类,在该基类增加授权功能,
+ 会自动为其他控制器所使用。BaseController 的代码在文件 <filename>lib/base.py</filename> 中。</para>

<screen>
class BaseController(WSGIController):
@@ -29,9 +33,9 @@
return redirect_to(h.url_for(controller='security'))
</screen>

- <para>从BaseController继承的类,可以设置requires_auth来增加授权。
- requires_auth可以为True或者是一个包含要进行授权的动作列表。如果需要授权,
- 会检查session中是否包含登录信息否则跳转到登录页面(security控制器)。</para>
+ <para>从BaseController 继承的类,可以设置 requires_auth 来增加授权。
+ requires_auth 可以为 True 或者是一个包含要进行授权的动作列表。如果需要授权,
+ 会检查 session 中是否包含登录信息否则跳转到登录页面(security控制器)。</para>

</sect2>

@@ -50,10 +54,10 @@

<!-- ================================================================= -->
<sect2 id="psm.security.controller">
- <title>Security控制器</title>
+ <title>Security 控制器实现</title>

<para>Security控制器用于实现用户的登录和退出。要为Security控制器增加
- login和logout方法,并且增加登录视图模板。流程见:<xref linkend="psm.security.controller.fig1"/></para>
+ login 和 logout方法,并且增加登录视图模板。流程见:<xref linkend="psm.security.controller.fig1"/></para>

<sidebar>
<figure id="psm.security.controller.fig1">
@@ -68,11 +72,13 @@

<!-- ================================================================= -->
<sect2 id="psm.security.authz">
- <title>pySvnAuthz授权</title>
+ <title>pySvnManager 授权</title>

- <para>因为我们已经扩展了svn authz 文件,为版本库增加了管理员设置,所以当用户登录后,
- 只要和管理员帐号做比较就可以实现授权。具体参见代码。</para>
+ <para>在 SvnAuthz 类的实现中,在 svnauthz 文件中为版本库增加了管理员设置,
+ 来进行管理员的身份验证。我们就利用同样的代码对 pySvnManager 进行授权验证。</para>

+ <para>具体实现参见代码。</para>
+
</sect2>

<!-- ================================================================= -->

已修改: trunk/doc/agile_python/ch05-config.xml
===================================================================
--- trunk/doc/agile_python/ch05-config.xml 2008-09-10 17:07:07 UTC (rev 85)
+++ trunk/doc/agile_python/ch05-config.xml 2008-09-11 03:00:48 UTC (rev 86)
@@ -43,10 +43,10 @@

<para>Pylons的ini配置文件固然可以囊括程序中的所有可配置信息,
但是还是觉得将配置文件写入一个Python文件直接import来得简单。
- 这就是为什么我们程序中还出现了localconfig.py配置文件。</para>
+ 这就是为什么我们程序中还出现了 <filename>localconfig.py</filename> 配置文件。</para>

- <para>localconfig.py是一个从DefaultConfig派生的子类,
- 用户的修改保存在localconfig.py中。</para>
+ <para> <filename>localconfig.py</filename> 包含从 DefaultConfig 派生的类,
+ 用户的修改保存在 <filename>localconfig.py</filename> 中。</para>

<screen>
# -*- coding: utf-8 -*-
@@ -58,7 +58,7 @@
auth = [htpasswd_login]
</screen>

- <para>这里我们定义了pySvnManager的需要用到的认证插件。</para>
+ <para>这里我们定义了 pySvnManager 的需要用到的认证插件。</para>

</sect2>

已修改: trunk/doc/agile_python/index.xml
===================================================================
--- trunk/doc/agile_python/index.xml 2008-09-10 17:07:07 UTC (rev 85)
+++ trunk/doc/agile_python/index.xml 2008-09-11 03:00:48 UTC (rev 86)
@@ -19,8 +19,9 @@

<article id="index">
<articleinfo>
- <title>Python/Pylons 敏捷实践</title>
- <author><firstname>http://www.ossxp.com</firstname></author>
+ <title>敏捷 Web 开发实践</title>
+ <subtitle>—— pySvnManager 项目实战</subtitle>
+ <author><firstname><ulink url="http://www.ossxp.com"/></firstname></author>

<affiliation>
<orgname>&orgname;</orgname>


_______________________________________________
Svn mailing list
S...@list.worldhello.net
http://www.worldhello.net/mailman/listinfo/svn

Reply all
Reply to author
Forward
0 new messages