Module
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
== 关于模块 ==
=== 模块是什么? ===
模块(或者称为 Routing Library)是一系列的已知代码,用来解决已知的一系列问题。
=== 注意事项 ===
* 特别注意保护模块,不要外传,尤其是电子版,后果相当严重
* 在向模版中添加代码前,要反复检验该段代码的正确性
=== 模块的位置 ===
模块目前存放在 acm90.8800.org (10.71.101.90 / 10.71.10.90)。
=== 访问与编辑模块 ===
可以通过以下三种途径访问 acm90.8800.org 上的模块:
1. svn 方式
* 这是在模块中修改、添加代码的唯一途径
* 注意代码文件中若含有中文,应使用 UTF-8 无 BOM 的编码
* Linux 命令行下可以通过 `svn co svn://10.71.10.90/module` 命令来签出模块的原始代码,接着使用各种 svn 操作来维护其内容。注意要经常使用 `svn up` 来更新代码,避免冲突
* 此方式需要用户名和密码,密码目前是存放在 `/srv/svn/conf/passwd` 文件里,可以让有 90 管理权限的同学添加新帐号
2. websvn 方式
* 在浏览器内直接查看模块代码,也可在线直接比较各个修订版本的模块代码,但不能修改代码
* 用浏览器打开 http://10.71.10.90:81/svn/ 即可
* 从计算中心 218 子网访问不需要密码,其他地方访问需要 acm 用户以及四个字母的密码 (详见配置文件 `/etc/nginx/sites-available/svnweb`)
3. pdf 方式
* 用来查看单文件 pdf 版本的模块,这是被用来打印的版本。
* 用浏览器打开 http://10.71.10.90:81/module/ ,下载 `module-latest.pdf` 即可,在 `history` 下可以找到历史版本
* 如果 Linux 下中文显示为空白,则说明 evince 版本过低,使用 `sudo apt-get install poppler-data` 命令安装 poppler-data 软件包即可解决
* pdf 版本会每隔一段时间(目前是 5 分钟)自动生成一次,当然如果上一次生成时的 svn 修订版本号和最新的修订版本号相同就不会重复生成了
* 其中 logs 包含了自动生成 pdf 版本的日志记录,如发生错误,可以看到 `error-log.html` 文件,应该会有错误信息,关于 TeX 生成的日志可以在 `/home/quark/module_build/.output/*.log` 找到
* 同方式 2,从计算中心 218 子网访问不需要密码,其他地方访问需要 acm 用户以及四个字母的密码
UPDATE 2011-10-6: svn 和 module 后面有一个 "/",现在不能省略
=== 关于 pdf 版本的自动生成 ===
pdf 版本自动生成是 2010 年由 quark 新加入的功能,原理是由一段脚本自动解析模块目录结构,生成 tex 文件,最终由此生成 pdf 文件。
关于这段脚本实现的 pdf 自动生成,有一些需要注意的地方:
* 文件夹名
* 目前只处理一层文件夹,也就是说代码只能放在一层文件夹内
* 文件夹名称中如果出现下划线,则生成对应的章和节,否则只有一个章
* 比如,如果有“图论_匹配”和“图论_网络流”两个文件夹,则会生成一个名叫“图论”的章,在这一章下面有“匹配”和“网络流”两个节
* 再比如,“数论”和“应用”两个文件夹名称都没有下划线,那么它们是两章
* 以 "." 开头的目录会被无视
* 文件名
* 文件名会被当作节或者是节下面的小节标题。其中下划线会被换成空格,请避免在文件名中使用空格,全部使用下划线
* 文件可以有不同的类型,按照后缀来区分,后缀应该是小写字母
* .txt 文件会被当作无格式纯文本填入对应章节,同章节中,这种类型的文件会最先处理
* .tex 文件会被原封不动地当作 TeX 代码填入对应章节,它适合用来写一些带有数学公式等的内容。注意这种类型的文件乱写会最后的生成失败,所以要谨慎
* .c, .cpp 这些代码文件会被格式化后填入对应章节,格式化内容主要包括:
* 以 4 个空格作为缩进重新整理整个代码
* 语法高亮,其中数字(包括整数和浮点数)会被加上下划线以更好地区分 1 和 l。
* .pdf 文件会被整页插入到对应位置,依然使用主文档的页眉页脚
* 文件内容
* .txt 和代码文件中,如果一行超过 88 个字符(一个汉字算做两个字符),会被强制折行,被强制折行的一行最后会有一个 \ 符号
* 除了 .pdf 类型的文件,其他文件必须是 UTF-8 编码,这样中文可以正确在 websvn 上显示。如果是其他的编码或者甚至就是一个二进制文件(使用 file 命令得到的输出是 data),很可能会导致自动生成失败。
关于模块
模块是什么?
模块(或者称为 Routing Library)是一系列的已知代码,用来解决已知的一系列问题。
注意事项
- 特别注意保护模块,不要外传,尤其是电子版,后果相当严重
- 在向模版中添加代码前,要反复检验该段代码的正确性
模块的位置
模块目前存放在 acm90.8800.org (10.71.101.90 / 10.71.10.90)。
访问与编辑模块
可以通过以下三种途径访问 acm90.8800.org 上的模块:
1. svn 方式
- 这是在模块中修改、添加代码的唯一途径
- 注意代码文件中若含有中文,应使用 UTF-8 无 BOM 的编码
- Linux 命令行下可以通过
svn co svn://10.71.10.90/module命令来签出模块的原始代码,接着使用各种 svn 操作来维护其内容。注意要经常使用svn up来更新代码,避免冲突 - 此方式需要用户名和密码,密码目前是存放在
/srv/svn/conf/passwd文件里,可以让有 90 管理权限的同学添加新帐号
2. websvn 方式
- 在浏览器内直接查看模块代码,也可在线直接比较各个修订版本的模块代码,但不能修改代码
- 用浏览器打开 http://10.71.10.90:81/svn/ 即可
- 从计算中心 218 子网访问不需要密码,其他地方访问需要 acm 用户以及四个字母的密码 (详见配置文件
/etc/nginx/sites-available/svnweb)
3. pdf 方式
- 用来查看单文件 pdf 版本的模块,这是被用来打印的版本。
- 用浏览器打开 http://10.71.10.90:81/module/ ,下载
module-latest.pdf即可,在history下可以找到历史版本 - 如果 Linux 下中文显示为空白,则说明 evince 版本过低,使用
sudo apt-get install poppler-data命令安装 poppler-data 软件包即可解决 - pdf 版本会每隔一段时间(目前是 5 分钟)自动生成一次,当然如果上一次生成时的 svn 修订版本号和最新的修订版本号相同就不会重复生成了
- 其中 logs 包含了自动生成 pdf 版本的日志记录,如发生错误,可以看到
error-log.html文件,应该会有错误信息,关于 TeX 生成的日志可以在/home/quark/module_build/.output/*.log找到 - 同方式 2,从计算中心 218 子网访问不需要密码,其他地方访问需要 acm 用户以及四个字母的密码
UPDATE 2011-10-6: svn 和 module 后面有一个 "/",现在不能省略
关于 pdf 版本的自动生成
pdf 版本自动生成是 2010 年由 quark 新加入的功能,原理是由一段脚本自动解析模块目录结构,生成 tex 文件,最终由此生成 pdf 文件。
关于这段脚本实现的 pdf 自动生成,有一些需要注意的地方:
- 文件夹名
- 目前只处理一层文件夹,也就是说代码只能放在一层文件夹内
- 文件夹名称中如果出现下划线,则生成对应的章和节,否则只有一个章
- 比如,如果有“图论_匹配”和“图论_网络流”两个文件夹,则会生成一个名叫“图论”的章,在这一章下面有“匹配”和“网络流”两个节
- 再比如,“数论”和“应用”两个文件夹名称都没有下划线,那么它们是两章
- 以 "." 开头的目录会被无视
- 文件名
- 文件名会被当作节或者是节下面的小节标题。其中下划线会被换成空格,请避免在文件名中使用空格,全部使用下划线
- 文件可以有不同的类型,按照后缀来区分,后缀应该是小写字母
- .txt 文件会被当作无格式纯文本填入对应章节,同章节中,这种类型的文件会最先处理
- .tex 文件会被原封不动地当作 TeX 代码填入对应章节,它适合用来写一些带有数学公式等的内容。注意这种类型的文件乱写会最后的生成失败,所以要谨慎
- .c, .cpp 这些代码文件会被格式化后填入对应章节,格式化内容主要包括:
- 以 4 个空格作为缩进重新整理整个代码
- 语法高亮,其中数字(包括整数和浮点数)会被加上下划线以更好地区分 1 和 l。
- .pdf 文件会被整页插入到对应位置,依然使用主文档的页眉页脚
- 文件内容
- .txt 和代码文件中,如果一行超过 88 个字符(一个汉字算做两个字符),会被强制折行,被强制折行的一行最后会有一个 \ 符号
- 除了 .pdf 类型的文件,其他文件必须是 UTF-8 编码,这样中文可以正确在 websvn 上显示。如果是其他的编码或者甚至就是一个二进制文件(使用 file 命令得到的输出是 data),很可能会导致自动生成失败。