实现这个目标的困难所在

  1、前段时间把xml-rpc和相应的一些规范看了一下,发现现在网站的web service服务很不规范和统一,例如:roller及一些blog用的是Blogger API、MetaWeblog API、MovableType API,现在的atom项目为了统一规范,在相应的项目中也涉及了web service(具体还没有看),而一些网站提供的web service是自己的方言API,如:www.43things.com的43 Things Web Service API。因为,所有这些API都不统一,为了以后的扩展,所以需要用面向对象的方法抽象其中的共同点,进行充分的设计,使学习日记的这套web service服务能够具有好的可扩展和可重用性。虽然,目标是绑定roller,但是要考虑绑定其它系统,例如:www.43things.com,wordpress等;

  2、因为访问其它系统需要提供其它系统的密码,怎么样来进行别的网站的密码验证是个问题,如果,把密码存在我们的数据库中,明文是不恰当的,加密可以解密,也不很合适,要求用户在向其它网站同时提交帖子的时候输入密码,也不方便。是个问题。但是,既然,www.43things.com已经实现了“post to my blog from 43 Things”,我们可以参考一下别人的作法;

  3、我的目标是绑定到blog.matrix.org.cn上,但是,我初步发现matrix好像禁止了web service,见今天在matrix的blog中试用blog客户端软件:w.bloggar不成功 (1篇) ,这可以通过在自己系统上运行一个roller来进行实验,实际运行时可以把中国实现了web service的BLOG系统绑定,www.43things.com的绑定也要实现,不过要取得网站的web service,好象要取得他们的API KEY,像www.43things.com的setup page中。

  最大的困难是第一个困难,规范不统一。

  为了更快的克服困难,完成这个模块,取得大家的帮助,并同时实现共同学习,共同进步的目标,我把这个模块的完成提交到了行动练功场的程序员练功场中的实战项目一:学习日记的web service模块专栏。要是没有人感兴趣的话,只有我一个人在这里玩,还是觉得有点不舒服的。

Emacs中强大的搜索功能(转帖)

(转自:http://www.80x86.cn/blog/blogview.asp?logID=569)

Emacs入门指南(3)   [ Date: 2006-03-15 12:04:44 AM | Author: 80x86 | From: Original | Sunny | Emotion Index: +2 ] 

通过前两篇文章的学习,您已经可以把Emacs当作一个Better-Notepad来使用了。今天我们要学习的是Emacs中强大的搜索功能。

  默认情况下,Emacs采用了一种很待殊的"增量搜索"的功能,虽然它与我们常用的搜索方法在操作习惯上有很大的不同,但习惯后确实是十分的方便。

  要让Emacs开始执行搜索,可以按C-s或C-r,前者是从光标位置往后查找,后者则是往前查找。我们以C-s为例。按动C-s后,Emacs在 Minibuffer中提示: I-Search:,这时您便可以输入要搜索的关键字了,现在学习试验的阶段建议您输入时手脚慢一点,看看Emacs是如何来执行您的搜索请求的。

  比如,要搜索“search”一词,您输入s,这时Emacs会把光标移动到最近一个s字母上,这里如果您暂停输入一会儿,Emacs就会把所有的s字母进行高亮。您继续输入e,这时Emacs就找到了最近的se字母组合。一直输入下去,直到Emacs找到您要找的内容,这时按回车键即可结束查找。

  在查找过程中,您可以反复按动C-s或C-r来执行向后或向前的查找。如果您已经找到一了一个匹配的内容,并且按了回车键结束了查找,这时如要继续查找这个内容,您只需按两次C-s或C-r即可,第一次按动用于激活查找功能,而第二次按动则表示要继续查找。

  在输入查找关键字时,如果不小心输错了,可以按动<DEL>键来清除前一个字符,请注意,在Emacs术语中,<DEL>键是指我们通常所说的<BackSpace>键,而<delete>键才表示我们键盘上的<delete>或<Del>键。

  输入关键词时也有一个细节的问题,如果您输入的关键字全部是英文小字母,则Emacs会进行不区分大小写的查找。但如果输入的关键字中包含有大写字母, Emacs就会进行区分大小写的查找。另外在查找的过程中,可以通过M-c快捷键来切换区分大小字模式,可以用它来强行指定是否区分大小写。

  如果不想用Emacs的增量搜索功能,也可以让Emacs进行传统的搜索,在按下C-s或C-r后,直接打一个回车键,这时Emacs就将进行非增量搜索,您可以输入你的关键字,再按回车键来执行搜索。

  下面要介绍的是更为强大的正则表达式搜索功能。您可以通过按动C-M-s或C-M-r来启动正向或反向的正则表达式搜索功能,Emacs会在Minibuffer中提示Regexp I-search:,这时您便可以输入正要匹配的正则表达式了。

  在正则表达式中可以使用很多的控制符号,这里我挑选几个常用的作一个简单的介绍,更全面复杂的解释可以在Emacs的手册中查到。

  '.' (句号): 正则表达式的中句号可以用于匹配一个任意的字符。比如正则式'a.b'就可以匹配abb,acb,adb。。。等等以a开头以b结尾的三个字符的字符串。

  '*': 正则表达式中的*号可以用于表示把它前面的字符重复0次或多次。比如'ff*'可以匹配一个或多个相连的f的字符串。

  '+': 正则表达式中的+号与*号的作用基本相同,区别在于它表示把它前面的字符重复1次或多次,所以可知正则式'ff*'等价与'f+'。

  Emacs的正则表达式语法十分复杂与强大,请您阅读Emacs手册来对它们进行全面的学习,一定会给您的工作带来巨大的便捷,作为一篇入门教程,这里我就不再作更全面的叙述了。

Emacs 教程中文版(转帖)

(注:这篇文章即是在emacs环境下用:CTRL-h t命令调出的emacs的tutorial的翻译)

(转自:http://www.linuxmine.com/3947.html)

Emacs 教程中文版

2005-08-24 10:00 am

作者:linux宝库 (http://www.linuxmine.com)

来自:linux宝库 (http://www.linuxmine.com)

现存:http://www.linuxmine.com/3947.html

联系:linuxmine#gmail.com

不明白?欢迎到 linux论坛 (http://bbs.linuxmine.com) 参加讨论!

Emacs 的命令通常包括控制键(就是上面标有 Ctrl或Ctl的那个)或者 是META键(上面标

有EDIT或ALT)。为了方便起见我们将用下面的缩写来 代替这些键的全称:

C-<chr> 意思是当敲入字符<chr>时同时按住控制键,因此,C-f表 示:按住控

制键并且按 f 。

M-<chr> 表示当键入<chr>时按住META或ALT或EDIT键。如果没有META 或ALT或

EDIT键,则用ESC键代替。<ESC>表示ESC键

注意:退出Emacs,按C-x C-c(两个字符)。在文本左边区域的“>>”符号 表示让你试着

使用一个命令。比如:

>> 现在键入C-v(观看下一屏)移动到下一屏。(就象前面说的,按v的同时 也按住控制键

)。从现在开始,每当你读完一屏的时候都可以用它来翻屏。

注意在翻屏后会保留上屏的最后一行;这是为你继续阅读文本提供某些连 贯性。

你所需要知道的第一件事是如何把光标从一个地方移动到另一个地方。你 已经知道了如

何向前翻一屏--用 C-v。要向后翻一屏,键入M-v。

>> 试着键入 M-v 和 C-v 几次。

* 摘要(SUMMARY)

---------------------------

下面几个命令对整屏观看时有用:

C-v 向前翻一整屏。

M-v 向后翻一整屏。

C-l 清除屏幕并重新显示所有的文本,然后把光标移动到屏幕的中

央。 (注意是Control-L,而不是 Control-1)。

>> 寻找光标,并且注意它在文本里的位置。然后键入C-l。再寻找光标你会 注意到光标

现在会出现在同样的文本附近。

* 基本光标控制(BASIC CURSOR CONTROL)

-----------------------------------------------------------------

整屏整屏的移动是很有用的,可是如何把光标移动到屏幕上文本里的一个指定 的地方呢



有好几个方法可以实现。最基本的方法是用命令 C-p,C-b,C-f,和C-n。这些 命令每

个都使光标在屏幕上往特定的方向移动一行或者一列。下面是一个图表 显示了这四个命

令和它们所移动的方向:

上一行,C-p

:

:

向前,C-b ...... 当前光标的位置 ...... 向后,C-f

:

:

下一行,C-n

>> 用C-n或C-p把光标移动到图表中间。然后键入C-l会看到整个图表出现在屏 幕的中央



你也许会发现这些字母很容易记住:P 代表上面的(previous),N 代表下一个 (next),

B 代表向前(backward),F 代表向后(forward)。这些是基本的光标位 置命令,你将经

常会用到它们。所以现在学习它们很有好处〕

>> 用几次 C-n 把光标向下移动到这一行。

>> 用 C-f 把光标移动到行里,再用C-p把光标上移。观察当光标在行的中间时 C-p做了

些什么。

每一个文本行都以一个换行符结尾,它用来当作行与行之间的分格。你的文件的 最后一

行的尾部应该有一个换行符(但Emacs并不要求一定要有一个)。

>> 试着在行的开头使用C-b。它将会把光标移到上一行的末尾。这是因为它向后 移的时

候穿过了换行符。

C-f 也能象 C-b一样穿过换行符。

>> 使用几次C-b,使您能知道光标在哪。然后用C-f移动到行的末尾。然后再用 一次C-

f,使光标移动到下一行。

当你移动超过屏幕的顶部或底部,光标回移动到下一屏的中间,这叫做“滚屏 (scroll

ing)”。它使得Emacs滚屏移动到文本上指定的部位而不是移出屏幕。

>> 试着用C-n把光标移过屏幕的底部,看看回发生什么。

如果觉得一个一个字符的移动太缓慢,可以一个单词一个单词的移动。M-f(Meta-f) 向

前移一个单词,M-b向后移一个单词。

>> 键入几个M-f和M-b。

当光标在一个单词的中间,M-f移动到单词的末尾。当光标在两个单词间的空白部分 M-

f移动到后一个单词的末尾。M-b与M-f一样,只是移动的方向相反。

>> 键入M-f和M-b几次,中间穿插一些C-f和C-b以使你能观察到M-f和M-b在单词中和 单

词间的不同行为。

注意比较C-f,C-b与M-f,M-b。通常情况下Meta键用于有关语言单位(词,句,段落) 的

操作;而控制键用于编辑时的基本单位(字符,行等)。

这是句与行的比较:C-a和C-e移动到一行的开头和末尾,M-a和M-e移动到一个句子 的开

头和末尾。

>> 键入一对C-a,再键入一对C-e。 键入一对M-a,再键入一对M-e。

你会看到重复键入的C-a什么也不做,而重复键入的M-a则会移动一个以上的句子。

光标在文本中的位置也叫“点(point)”。在段落里,光标标示出了点在屏幕上文本 里

的位置。

下面是简单的光标移动命令的总结,包括单词和句子的移动命令:

C-f 向前移动一个字符。

C-b 向后移动一个字符。

M-f 向前移动一个单词。

M-b 向后移动一个单词。

C-n 移动到下一行。

C-p 移动到上一行。

C-a 移动到行首。

C-e 移动到行尾。

M-a 向前移动到句子的开头。

M-e 向后移动到句子的末尾。

>> 试着对每一个命令都实践几次,它们都是经常要用到的命令。

另外两个重要的光标移动命令是M-<(Meta小于),它移动光标到整个文本的开头,M-> (

Meta大于)它移动光标到整个文本的末尾。

在多数终端上,“<”在逗号的上面,所以你必须用Shift键来输入它。在这些终端 上,

你也必须用Shift键来输入M-<;没有Shift键,你可以输入M-逗号。

>> 现在就试试M-<,移动到本教程的开头,然后再用C-v移回这里。 现在就试试M->,移

动到本教程的末尾,然后再用M-v移回这里。

你也可以用方向键来移动光标,如果你的终端有方向键的话。我们建议学习C-b, C-f,

C-n和C-p有三个原因。第一,它们能在所有类型的终端上工作。第二,你获得 了使用E

macs的锻炼,你将会发现输入这些CTRL加字符比按方向键要快(因为你不必 把你的手从

键盘上移开)。第三,一旦你养成了使用这些CTRL加字符的命令的习惯, 你就能一样容

易的学习其他高级的光标移动命令。

大多数Emacs命令接收一个数字参数;对大多数命令来说,这表示命令重复的次数。 输

入重复命令次数的方法是在输入命令之前按C-u和数字。如果你有META(或EDIT或 ALT)键

,则有另一种方法输入数字参数:在按住META键的时候输入数字,我们建议 学习C-u方

法,因为它能在任何终端上工作。

例如,C-u 8 C-f 向前移动8个字符。

>> 试着使用带数字参数的C-n或C-p,只用一个命令就把光标移动到与本行相邻的 行上



绝大多数命令把数字参数当作重复次数,但也有几个例外。C-v和M-v就是。当给出 一个

参数,只是上滚或下滚数字指定的行数而不是屏数。比如,C-u 4 C-v滚动4行 屏幕。

>> 现在试试 C-u 8 C-v。

这将使屏幕滚动8行,如果你想往回滚动的话,键入一个带参数的M-v。

如果你正在使用X窗口,在Emacs窗口的左手边有一个叫做滚动条的矩形区域。你能 通过

用鼠标点击滚动条来滚动文本。

>> 试着在滚动条顶部的高亮区域点击中键。这将使文本滚动,滚动的位置取决于 你点

击的长短。

>> 试着按住鼠标中键上移或下移鼠标,你将看到当你移动鼠标时文本会上下滚动。

* 当EMACS挂起时(WHEN EMACS IS HUNG)

------------------------------------------------------------------

当Emacs停止响应你的命令时,你能用C-g把它安全的停止。当一个命令执行了太长的 时

间时你可以用C-g把它终止。

你也可以用C-g来取消数字参数和输入后又不想执行的命令。

>> 键入C-u 100 产生一个值为100的数字参数,然后按C-g。再按C-f。它只会移动 一个

字符,因为你用C-g取消了参数。

如果错误的输入了一个<ESC>,你能用C-g消掉它。

* 禁止命令(DISABLED COMMAND)

----------------------------------------------------

一些Emacs命令是“禁止”的,所以新手不会因偶然而执行它。

如果你键入了一个禁止命令,Emacs会显示一条消息说明这条命令是干什么的,并且问

你是否需要执行它。

如果你真的想要执行,敲空格键继续。通常,如果你不想执行禁止命令,用“n”来回

答。

>> 输入<ESC>一条禁止命令),然后用n来回答。

* 窗口(WINDOWS)

-----------------------------

Emacs 能有好几个窗口,每一个显示自己的文本。我们将在后面解释怎样对多窗口 操作

。现在我们要解释怎样去除多余的窗口屏回到基本的单窗口编辑状态。 这是一个例子:

C-x 1 一个窗口(也就是除去其他所有的窗口)。

因为Control-x跟了数字1。C-x 1使包含光标的窗口占满整个屏幕,屏删除其他所有 窗

口。

>> 把光标移动本行并输入 C-u 0 C-l。

>> 键入Control-h k Control-f。 看这个窗口如何缩小,并在按Control-f的时候出现

了一个新的文档窗口。

>> 键入C-x 1 并且看到那个文档窗口消失了。

* 插入和删除(INSERTING AND DELETING)

---------------------------------------------------------------

如果你要插入文本,只须输入文本。输入的字符你能见到,比如A,7,*等等。Emacs 会

立即把它们插入。键入<Return>(回车键)插入一个换行符。

你能用<Delete>删除你输入的最后一个字符。<Delete>就是键盘上标着“Del”的键。

在某些情况下,“Backspace”键作用和<Delete>一样,但不总是这样!

通常,<Delete>立即删除光标前面的那个字符。

>> 输入几个字符,然后用<Delete>删除它们。不必担心这个文件回被改变;你不会 替

换主教程。这只是你的个人拷贝。

当一行文本太长而超过屏幕宽度时,这一行会在屏幕的下一行被“继续”。文本的右 边

会有一个反斜杠“\”表示它被继续。

>> 插入文本直到最右边,然后再插入。你将看到一个继续了的行。

>> 使用<Delete>删除文本直到行的长度在屏幕的宽度以内。继续的行将会消失。

你能像删除其他任何字符一样删除换行符。删除两个行间的换行符会使它们合并为一 行

。如果这一行很长屏幕显示不下的话,将会用一个继续的行来表示。

>> 把光标移动到一行的开头按<Delete>这将使本行和上一行合为一行。

>> 按<Return>重新插入你删除的换行符。

记住大多数的Emacs命令能接收一个重复次数。这包括文本字符,把一个文本字符重复

的插入几次。

>> 键入这个-- C-u 8 * 来插入 ********

你现在已经学习了Emacs的大多数输入和排错的方法。你也能一样的删除单词或行。这

是删除操作的摘要:

<Delete> 删除光标前面的字符

C-d 删除光标后面的字符

M-<Delete> 除去光标前面的单词

M-d 除去光标后面的单词

C-k 除去从光标位置到行尾的内容

M-k 除去到当前句子的末尾

注意比较<Delete>,C-d与M<Delete>,M-d和C-f,M-f(<Delete>不是一个控制字符, 但

不用担心)。C-k和M-k就象C-e,M-e。

当你一次除去不止一个字符时,Emacs将保存着这些文本,所以你可以恢复它们。 恢复

那些被除去的文本称作“拉(yanking)”。你能在除去文本的同一地方拉回它们, 或是

在文本的其他地方。你能对文本拉上几次以产生它们的多个拷贝,拉的命令是 C-y。

注意“除去(killing)”与“删除(Deleting)”之间的区别,被除去的东西能被拉回 来

,而被删除的不能。通常除去能除去很多的文本屏保存,而删除只能除去一个字 符,或

是空行或空格,并且不保存。

>> 把光标移到一个空行的开头,键入C-k除去这一行。

>> 按第二次C-k,你将看到剩下的空行也被除去了。

注意单个的C-k除去行的内容,第二个C-k除去行本身,并且使后面的所有行上移。 特别

要注意数字参数:它除去很多行和它们的内容,这不仅仅是重复。C-u 2 C-k 除去两行

和它们剩下的空行;而按两次C-k并不会这样做。

要在当前光标处找回上次被除去的文本;按C-y

>> 试一试,用C-y把文本拉回来。

把C-y考虑为你把某人从你这里拿走的东西再拿回来。注意你如果在一行上按了几次 C-

y,所有被除去的文本是存在一起的,所以按一次C-y将拉回全部的行。

>> 现在就试一下,按几次C-k。 现在找回被除去的文本;

>> 按C-y。然后把光标下移几行再按一次C-y,你现在会看到怎样拷贝这些文本。

当你要拉回一些被除去的文本该怎样做呢?C-y只能拉回最近被除去的文本。但以前 的

文本并没有消失。你能用M-y来恢复它。当你用C-y拉回最近被除去的文本后,换成 M-y

可以拉回以前被除去的文本。键入一次又一次的M-y可以拉回更早以前被除去的文 本。

当你找到要寻找的文本,不必做任何事来保持它,只须离开拉文本的地方继续你 的编辑



如果你M-y了足够多的次数,你会回到开始点(最近被除去的)。

>> 除掉一行,移开,再除掉另一行。 然后用C-y拉回第二行。 然后换成M-y拉回被除掉

的第一行。 再按一次M-y看看得到了什么。继续按直到拉回被除去的第二行;然后再做

几次。 如果原意的话,你可以给M-y加正的或负的数字参数。

* 撤销(UNDO)

--------------------

如果你对文本作了一些改动,然后又发现这样做是错误的,你能用撤销命令,C-x u 撤

销这些改变。

通常,一次C-x u撤销一个改变;如果你在一行上重复几次C-x u,就会重复几次撤销 操

作。

但有两个例外:不改变文本的操作(包括光标移动和滚屏命令)不算在内;只能处理20 次



>> 用C-k除去这一行,然后按C-x u 它将重现出来。

C-_是一个可选择的撤销命令;它所作的工作和C-x u 完全一样,只是更容易输入。 C-

_的缺点是有些键盘上没有它,这就是为什么还提供C-x u的原因。在某些终端上 你可以

按住CTRL的时候再敲/来输入C-_。C-_或C-x u把数参数字当作重复次数。

* 文件(FILES)

-------------------

为了永久保存你编辑的文本,你必须把它放到一个文件里。否则当你退出Emacs的时候

它就会消失。你通过“查找(finding)”文件,把你编辑的内容放到文件里。(也称为 “

访问(visiting)文件”)。

(译注:为了保持与原文的一致性,把find译为“查找”,但是这里和后面出现的 “查

找文件”指的都是打开文件的意思。)

查找(finding)一个文件意味着你在Emacs里看文件的内容,在多数情况下,也就是你 在

编辑它。但是,你用Emacs对它作的改变并不是永久行的,除非你“保存(saving)” 它

。所以你可以避免把一个改了一半的文件留在系统上。甚至你保存了文件,Emacs也 会

把原始文件换个名字保留下来,以防过后你发现对文件的改动是错误的。

如果你观察屏幕的你将看见一个开始和结尾都是破折号的行,并且以“--:**-- TUTORI

AL”或之类的东西开始。屏幕的这部分通常显示你正在访问的文件的名字。 现在,一个

叫做“TUTORAL”的文件,它是你的Emacs教程的个人拷贝。当你用Emacs 查找一个文件

,文件名会出现在同样的位置。

查找和保存文件命令不像前面学的那些命令。它们都以字符Control-x开始。以 Contro

l-x起头的是一个完整的命令系列;它们中的许多都是对文件,缓冲,和相关的 东西进

行操作的。这些命令有两个,三个或四个字符长。

关于查找文件命令的另一件事是你必须给出你需要的文件的文件名。我们说这个命令 “

从终端读取一个参数”。(在这种情况下,参数是文件的名字);当你键入命令C-x C-f后

,Emacs会提示你输入文件的名字。你输入的文件名会出现在屏幕底部的行上。 这个底

部的行称为微型缓冲(minibuffer)用于这类较短的输入。你能用Emacs本身的 编辑命令

来编辑文件名。

当你正在输入文件名(或其他任何微型缓冲区输入),你能用命令C-g来取消。

>> 键入命令C-x C-f,然后输入C-g。这将取消微型缓冲,也取消了C-x C-f命令所使 用

的微型缓冲,所以你不查找任何文件。

当你输完文件名后用<Return>来结束。然后C-x C-f开始工作,并开始寻找你所选择的

文件。当C-x C-f命令结束后微型缓冲区也消失了。

过一小会儿文件的内容就会显示在屏幕上,然后你就能对它进行编辑了。当想永久保留

你的改动时用命令:

C-x C-s 保存文件(save the file)。

这个操作会把Emacs里的文本拷贝到文件里。在你第一次作的时候,Emacs把原始文 件改

为一个新名字以使它不至于丢失。新名字是在原来名字的后面加一个“~”。

保存结束后,Emacs打印出被写的文件的文件名。你应当经常的保存,万一系统崩溃 的

话你不至于丢失太多的工作。

>> 键入C-x C-s来保存你的教程的拷贝。屏幕的底部会打印出“Wrote.....TUTORIAL”



注意:在某些系统上,输入C-x C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这

表示这个操作系统的“特性”叫做“控制流程”,它拦截了C-x不让它到达Emacs那里。

要使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incrementa

l Search”一节,按上面的建议来对付这种“特性”。

你能查找一个已存在的文件,来查看它或编辑它。你也可以查找一个尚未存在的文件。

这是 Emacs:里创建文件的方法:查找文件,将会出现一个空白,然后插入文件的文本

。当你 “保存(saving)”的时候,Emacs将会用你插入的文本创建文件。从那时候起,

你可以认为 你在编辑一个存在的文件了。

* (缓冲)BUFFERS

--------------------------

如果你用C-x C-f查找第二个文件,第一个文件仍然留在Emacs里。你可以再用C-x C-f查

找 一次来切换回去。用这种方法你在Emacs里有很多文件。

>> 输入C-x C-f foo <Return>来建立一个名为foo的文件。然后插入一些文本,编辑它

,并 用C-x C-s来保存“foo”。 最后输入C-x C-f TUTORIAL<Return>以回到本教程。

Emacs把每个文件的文本都保存在一个叫“缓冲(buffer)”的东西里。查找(打开)一个文

件 就会在Emacs里产生一个新的缓冲。要看你当前运行的Emacs里存在的缓冲列表,输入



C-x C-b 列出缓冲(list buffers)

>> 输入 C-x C-b

观察每个缓冲都有一个名字,它可能也有一个它所保存的文件的文件名。一些缓冲不对

应 文件。比如,叫“*Buffers List*”的缓冲没有任何文件。这个缓冲只包含由C-x C

-b产生的 缓冲列表。你在Emacs窗口里看到的任何文本都是某个缓冲的一部分。

>> 输入 C-x 1 消除缓冲列表。

如果你对一个文件的文本作了改动,然后查找另一个文件,第一个文件并不保存。它的

改变 保存在Emacs里,在那个文件的缓冲里。被建立或编辑的第二个文件的缓冲并不影

响第一个 的。这一点很有用,但这也意味着要有一个便捷的方法来保存第一个文件的缓

冲。如果要用 C-x C-f切换回去只是为了按C-x C-s保存它将会是一件令人讨厌的事。所

以我们用

C-x s 保存缓冲(save the buffer)

C-x s 向你询问每个改动过但未存盘的缓冲,对每个这样的缓冲都询问是否保存。

>> 插入一行文本,然后按C-x s。 将会问你是否保存叫TUTORIAL的缓冲。 输入“y”来

回答是。

* 扩展命令集(EXTENDING THE COMMAND SET)

-----------------------------------------------------------------------

有太多的Emacs命令,大大超过了Contorl和meta加上字符所能表示的数量。Emacs用X(扩

展 eXtand)命令来解决这个问题。有两种风格:

C-x 字符扩展,后跟一个字符。

M-x 名字命令扩展,后跟一个长名字。

这些命令通常有用,但不如你已经学过的那些命令使用的频繁。你已经见过了它们中的

两个: 文件命令C-x C-f 用于查找和C-x C-s用于保存。

另一个例子是结束Emacs的命令C-x C-c(不必担心你所作的改动会丢失,在退出Emacs 之

前,C-x C-c会提示你保存每一个改动过的文件)。

C-z命令用于*临时*退出Emacs,所以你能回到原来运行的Emacs里。在允许这样做的 系

统上,C-z把Emacs“挂起”;就是说回到外壳(shell)下,但并不破坏运行的Emacs。 在

大多数外壳上,你能用‘fg’命令或‘%emacs’来继续Emacs。

在不支持挂起的系统上,C-z建立一个子外壳(subshell)运行于Emacs下以使你能运行 其

他程序然后回到Emacs;这并不是真正的“退出”Emacs。在这种情况下,通常从 子外壳

回到Emacs的外壳命令是‘exit’。 有很多C-x 命令,这是已学过的一个列表:

C-x C-f 查找文件

C-x C-s 保存文件

C-x C-b 缓冲列表

C-x C-c 退出Emacs

C-x u 撤销操作

被称作扩展命令的命令的使用频率都不太高。或者是只在某些模式下使用。一个例子是

替换 字符串的命令,它在全文里把字符串替换为其他的。当你键入M-x, Emacs会在屏

幕的底部 提示你输入命令;在这种情况下,是“replace-string”。比如输入“repl

s<TAB>”, Emacs会把命令补全。用<Return>来结束命令。

替换字符串命令要求两个参数--要被替换的字符串和用来替换的字符串。你必须用<Ret

urn> 来结束两个参数。

>> 把光标移上两行,然后输入M-x repl s<TAB><Return>changed<Return>altered <Re

turn>。 注意现在这一行改变了:你把光标初始位置后的所有单词c-h-a-n-g-e-d替换为

了 “altered”

* 自动保存(AUTO SAVE)

------------------------------------

当你改动了一个文件还未存盘的话,所作的改动也许会由于系统崩溃而丢失。为防止 这

种情况发生,Emacs在编辑时为每个文件提供了“自动保存(auto save)”。自动保存 的

文件的文件名前后都有一个#号;例如,如果你编辑的文件名叫“hello.c”,自动保 存

的文件的文件名就叫“#hello.c#”。当你正常的保存了文件后,Emacs会删除这个自 动

保存的文件。如果遇到死机,你能打开那个文件后按M-x recover file<Return>来恢复

你的编辑,(是你编辑的文件而不是自动保存的文件)。当提示确认时,输入yes<Retur

n> 来继续恢复自动保存的数据。

* 回显区域(ECHO AREA)

------------------------------------

如果Emacs发现你输入命令的速度很慢的话它会在屏幕底部为你显示出来,这个区域叫

“回显区域”。

* 模式行(MODE LINE)

---------------------------------

回显区域上面的一行称为“模式行(mode line)”。模式行显示与下面类似的东西:

--**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------

这一行给出了有关你在编辑的文件和Emacs状态的有用信息。

你已经知道了文件名意味着什么。--NN%--指出你现在在文本里的位置;它意味着上面还

有NN%的文本。如果是在文件的开头,会用--Top-- 来代替--0%--。如果是在行的末尾

, 会显示--Bot--。如果你正在看的文本内容很少,可以全部显示在屏幕上,模式行会

说 --All--。

前面的星号表示你已经改动过文本了。一旦你保存了文件或打开了一个新文件,模式行

的 这部分就不是星号而是破折号了。

模式行上括号里的部分是现在的编辑模式。现在是缺省的基本(Fundamental)模式。它是

“主模式(major mode)”的一种。

Emacs有很多不同的主模式。有些意味着不同的语言或不同的文本。如Lisp模式(Lisp m

ode), 文本模式(text mode)等等。在任何时候有且只能有一种主模式被激活。并且它

的名字会出 现在现在显示“Fundamental”的位置上。

每一个主模式都有些自己的命令。就象不同的编程语言的注释看起来不同一样。每种主

模式 插入的注释也不同。可以用扩展命令切换进某种主模式。例如,M-x fundamental

-mode 是切 换进基本模式。

>> 输入 M-x text-mode<Return>

不必担心,没有命令会给Emacs带来很大改变。但是你可以看到现在M-f和M-b把省略号当

作 单词的一部分。而先前,在基本模式里,M-f 和M-b把省略号当成当成分隔符。

主模式通常作诸如此类微小的变化:大多数命令在每个主模式里作“同样的工作”,但

又有 些微小的不同。

要观看关于你现在的主模式的文档,按C-h m。

>> 键入C-u C-v一次和多次使本行接近屏幕的顶端。

>> 输入C-h m ,看看文本模式和基本模式有些什么不同。

>> 按C-x 1 从屏幕上关掉这个文档。

主模式之所以叫做主模式是因为也存在从模式,从模式与主模式完全不同。每个从模式

可以自 己打开或者关闭,独立于所有其他从模式,也独立于你的主模式。所以你可以不

用从模式或者 同时用很多种从模式。

有一种从模式很有用,特别是在编辑英文文本时。它是自动填充模式(auto fill mode)

。当这个 模式打开的时候,当输入的文本过宽的时候就会自动折行。

你能用M-x auto-fill-mode<Return>来打开自动填充模式。如果此模式已经打开M-x au

to- fill-mode<Return>则把它关闭。我们把这叫做切换开关。

>> 输入M-x auto-fill-mode<Return>。然后插入一些“asdf”直到看到这行被分为两行

。你 必须在中间放一些空格,只有到空格的时候才会换行。

通常边界宽度是70,但你能用带数字参数的C-x f 命令来改变它。

>> 键入带参数20的C-x。(C-u 20 C-x f) 然后输入一些文本看现在每行只有20个字符了

。然后用C-x f把它改回70。

如果你在一个段落的中间产生了改变,自动填充模式将不会重新填充。要想重新填充段

落, 当光标在段落里的时候按M-q。

>> 把光标移到上一段按 M-q。

* 搜索(SEARCHING)

-----------------------------

Emacs 能朝前和朝后搜索字符串(指相邻的一些字符或单词)。搜索是一个移动光标的操

作, 它把光标移动到字符串出现的下一个地方。

Emacs 的搜索命令和其他大多数编辑器不同,它是“增量式(incremental)”的,这意味

着搜索在你键入字符串时就开始了。

开始一个向前搜索的命令是C-s,C-r是往回搜索。但等等,先别忙。

当你输入C-s是你将注意到在回显区域会出现一个字符串“I-search”。这告诉你Emacs

开始 了一个增量搜索,并在等待你输入要搜索的东西。<RET>结束查询。

>> 现在键入C-s开始一个搜索。慢慢的输入单词‘cousor’,在输入每一个字母的时候

停顿一 下,注意看光标发生了什么。

>> 再输入一次C-s,来搜索“cursor”出现的下一个地方。

>> 现在输入<Delete>四次看看光标移到了哪里。

>> 输入<RET>结束搜索。

看到发生什么了吗?在Emacs的增量搜索里,你输入多少字符串它就试着搜索这些字符出

现的 地方。到字符串出现的下一个地方,只须再按一次C-s。要搜索的字符串不存在的

话,Emacs 会发出蜂鸣并告诉你当前的搜索“失败(failing)”,按 C-g 也是终止搜索



注意:在某些系统上,输入 C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这 表

示这个操作系统的“特性”叫做“控制流程”,它拦截了C-s不让它到达Emacs那里。 要

使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incremental S

earch”一节,按上面的建议来对付这种“特性”。

如果你在搜索的过程里按了<Delete>,你将注意到要搜索的字符串的最后一个字符会被

删除 并且光标会回到上一个被搜索到的地方。比如,假设你键入了“c”,将会搜索“

c”第一次出 现的地方。然后如果你键入“u”,光标将移到“ cu”第一次出现的地方

。现在键入<Delete>。 这将从搜索的字符串里把“u”删掉,这时光标回到“c”第一次

出现的地方。

如果你在搜索时按了Control或meta键加字符(少数几个少数命令例外,如C-s和C-r),搜

索将被 终止。

C-s向当前光标的后面搜索字符串出现的地方。如果你需要搜索前面文本里的东西,用C

-r来代替。 我们所介绍的C-s的每个特性C-r也支持,除了方向相反。

* 多窗口(MULTIPLE WINDOWS)

------------------------------------------------

Emacs有一个非常好的特性是能同时在屏幕上显示不止一个的窗口。

>> 把光标移到本行上按C-u 0 C-l。

>> 现在按C-x 2,它把屏幕分裂成两个窗口,每个窗口都显示本教程。光标在上面的窗

口里。

>> 按C-M-v 滚动到下面的窗口里。(如果你没有一个真正的Meta键,那么按ESC C-v)

>> 按 C-x o (“o” 指 “其他(other)”) 把光标移到到下面的窗口里。

>> 用 C-v 和 M-v 滚动下面窗口里的文本。 在上面的窗口里看本教程。

>> 再次按 C-x o 使光标回到上面的窗口里。 现在光标象以前一样在上面的窗口里了。

你能一直用C-x o在窗口间切换。每个窗口都有它自己的光标位置,但仅有一个窗口能显

示活动 的光标。所有的编辑命令都发生在那个显示光标的窗口上。我们把这个窗口叫做

“选中窗口( selected window)”。

当你在一个窗口里编辑文本,而用另一个窗口作参考时命令C-M-v非常有用。你总是能把

光标留 在所编辑的地方,而用C-M-v来翻阅另一窗口。

C-M-v 是 CONTROL-META 加字符的一个例子。 如果你有一个真正的META 键,你能同时

按住 CTRL 和 META 再按“v”来输入C-M-v。CTRL 和 META 谁先按谁后按无所谓。

如果你没有一个真正的META 键, 你可以用 ESC 来代替。这时候次序是有关系的: 你

必须让 ESC 跟在 CTRL-v后面; 否则 CTRL-ESC v 将不工作。 这是因为 ESC 是一个有

意义的字符而不 是一个修饰字符。

>> 输入 C-x 1 (在上面的窗口里) 以消除下面的窗口。

(如果你在下面的窗口里键入C-x 1,将会把上面的窗口去掉。可以把这个命令看作是“

只保留你 现在在的那个窗口。)

你不必一定要在两个窗口里显示同样的缓冲。如果你在一个窗口里键入C-x C-f查找文件

,另一个 窗口的内容不会改变。你能独立的在每个窗口里查找文件。

这是让两个窗口显示不同内容的另一种方法:

>> 在你输入的文件名后再输入C-x 4 C-f,然后用<Return>结束。会看到指定的文件出

现在下面 的窗口里。光标也在那里面。

>> 键入C-x o 回到上面的窗口,然后输入C-x 1删掉下面的窗口。

* 递归编辑层(RECURSIVE EDITING LEVELS)

----------------------------------------------------------------

有时候你会进入“递归编辑层(recursive editing level)”。由模式行上的方括号指示

。它在主模式 名的括号外面。例如你也许会看到(Fundamental)变成了[(Fundamental)

]。

要退出递归编辑层,按ESC ESC ESC。这是一个通用的退出命令,你也可以用它除去额外

的窗 口,或者退出微型缓冲。

>> 输入 M-x 进入一个微型缓冲; 然后用 ESC ESC ESC 离开。

你不能用C-g来退出递归编辑层。这是因为C-g只能取消在递归编辑层里面的命令。

* 获取更多的帮助(GETTING MORE HELP)

--------------------------------------------------------------

在本教程里我们试着为你开始使用Emacs提供了足够多的信息。但是有关Emacs的信息实

在是太 多以至于不能全部都在这里说明。但是,你还应该学习更多有关Emacs的东西,

因为它另外还有 很多有用的特性。Emacs提供了很多读取有关命令的文档的命令。这些

“帮助”命令都以 Control-h开头,叫做“帮助字符”。

为了使用帮助特性,输入字符C-h,然后再输入一个字符来说明你需要哪种帮助。如果你

真的不知 道,输入C-h ? 然后 Emacs会告诉你它能给你什么样的帮助。如果你输入了C

-h 又觉得不需要任 何帮助,你可以用C-g来取消它。

(在有的地方,C-h的作用被改变了。如果按C-h在屏幕的底部没有出现有关帮助的信息的

话,试试 用F1和M-x help RET来代替。)

最基本的帮助特性是C-h c。输入C-h,然后是字符 c,然后输入一个命令字符和序列;

然后 Emacs 会显示这个命令的简洁的描述。

>> 输入 C-h c Control-p.

显示的消息看起来会象这样:

C-p runs the command previous-line

这告诉你“功能的名字”。功能的名字主要用于对Emacs的功能扩充和定制。但因为功能

的名字 指出了命令的用途,所以最好不要改动它。

C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你没有 META 或者 EDIT 或者 ALT

键) <ESC>v 。

要获取有关命令的更多信息,用C-h k 代替 C-h c。

>> 输入 C-h k Control-p.

这将在一个Emacs窗口里显示命令的文档。当你读完后可以用C-x 1除去帮助文本。如果

不想马上 离开,你可以一边编辑一边参考帮助文本,然后再按C-x 1。

这是一些有用的 C-h 选项:

C-h f 描述一个功能,在你输入了这个功能的名字后。

>> 输入 C-h f previous-line<Return>。 将打印出C-p命令所实现的所有功能。

C-h a 命令查找。输入一个关键字,Emacs将列出所有名字里有这个关

键字的命令。 包括所有以Meta-x开始的命令。对有些命令,C-h a 也将列出实现同一功

能的 几个命令序列。

>> 输入 C-h a file<Return>.

这将在窗口里显示所有名字里有单词“file”的M-x命令。

>> 输入 C-M-v 来滚动帮助窗口,做上几次。

>> 输入 C-x 1 来删除帮助窗口。

* 总结(CONCLUSION)

--------------------------------

记住,永远都用C-x C-c来退出Emacs。用C-z来退到一个临时的外壳里,以使你过后还能

回到 Emacs。

不明白?欢迎到 linux论坛 (http://bbs.linuxmine.com) 参加讨论!

全文结束

一个可扩展的高速UBB标签转换引擎(转帖)

转自(java手机网的一个可扩展的高速UBB标签转换引擎

一个可扩展的高速UBB标签转换引擎

编辑:rocks    审核:rocks    文章来源:本站原创

关键词:ubb    发表日期:2006-03-23 15:15:26    浏览次数:266次

 

本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>

[本文章最后由 rocks 在2006-03-23 15:21:43编辑过]

来自:http://www.cnjm.net/tech/article1263.html

下载源代码

现在UBB标签技术已经广泛的应用于网站开发中,比起直接使用Html标签,UBB标签更安全,也更容易学习。

目前各种服务器端技术,无论是CGI(perl), ASP, PHP还是JSP,在网上都能找到大量的UBB转换代码,但经过笔者的考察,大部分都是采用正则表达式匹配替换的方式实现的,用这种方式比较简单易行,但是有一些明显的缺点:

1. 性能较差,因为这种转换方法对每一种UBB标签都要做一次全文的匹配替换,所以UBB标签种类越多,速度越慢

2. 对错误的嵌套方式会做出错误的转换处理,比如"你[i]好啊[/i]",会被转换为"<b>你<i>好</b>啊</i>",这显然是错误的HTML语法,因为HTML的标签只能互相嵌套,而是不允许互相跨越的

3. 不支持同类标签的嵌套使用,比如"",会被转换为"<font color=red>你好</font>啊"

4. 扩展起来较为困难,因为需要扩展者也要有正则表达式的知识才能正确的添加新的UBB标签,而相对来说,正则表达式的理解和学习还是有一定难度的

针对这种现状,笔者在开发本站的UBB标签转换系统时使用了全新的思路和算法,即把整个文章转换成一棵由UBB标签和正文组成的树,针对每个UBB标签的树节点进行转换处理,采用这种全新算法的UBB标签转换器有以下的特点:

JAVA手机网[www.cnjm.net]1. 性能极高,对全文只扫描一遍,且和UBB标签的种类数量无关,因此可以任意添加新的UBB标签而不必担心性能会下降

2. 容错性非常好,对于上面的错误UBB语法"你[i]好啊[/i]",可以选择两种容错模式“忽略(IGNORE)”和“关闭(CLOSE)”,如果采用忽略模式,那么错误的标签会被忽略掉,也就是转换为"<b>你好</b>啊";而如果采用关闭模式,则内层的未关闭UBB标签会被自动关闭,即转换成为"<b>你<i>好</i></b>啊[/i]"。无论哪种模式,产生的HTML代码都是正确的

3. 支持同类标签的多次嵌套

4. 支持“空”标签,也就是形如[img=myimg.gif/]这样用"/]"结尾,且没有对应结束标签的UBB代码

5. 容易扩展,用户只要自定义一个UBB标签处理器,负责可能的UBB标签的鉴别工作,和最后如何对标签的属性和内嵌文本进行处理就可以了。

所谓“可能的UBB标签”,就是任何一对"["和"]"中间的内容,自定义标签处理器要负责判断这段内容是否是合法的UBB标签,并把标签分成UBB标记和标记的属性两部分,比如,引擎调用处理器的方法handler.parseTag("color=red", false),处理器应把参数分成UBB标记"color"和属性"red"两部分并作为字符串数组返回,而对于非UBB标签,比如"[转贴文章]",处理器只要简单的返回null,转换引擎就会把它作为普通文本处理。

而最后的处理工作也很简单,转换引擎会调用处理器的compose方法,把UBB标记,标记的属性和内嵌的文本传给该方法,比如handler.compose("color", "red", "你好啊", false),处理器只要简单的把它们组合成"<font color=red>你好啊</font>"并返回这个字符串就可以了。

本站的文章系统与文章评论就是使用了这套UBB处理引擎,你可以在发表评论的时候测试一下本站的UBB代码支持。

作为一个例子,下面就是一个简单的UBB标签处理器,是本站使用的UBB标签处理器的一个简化版本:

这个简单的例子支持的标签种类不多,你可以继续扩展,另外用一大堆equals挨个进行比较效率比较低,你可以用一个HashMap或Hashtable来进行快速的定位和查找。

=============================== SimpleTagHandler.java源代码 ===============================

package util;

public class SimpleTagHandler implements UBBTagHandler {

      

//    文字加粗体效果

//    文字加倾斜效果

//    文字加下划线效果

JAVA手机网[www.cnjm.net]//    改变文字大小

//    改变文字颜色

//   

这个标签是用来做为引用所设置的,如果你有什么内容是引用自别的地方,请加上这个标签!

 

//    http://www.cnjm.net

//    JAVA手机网

JAVA手机网[www.cnjm.net]//    写信给我

//    webmaster@cnjm.net

//       

  

   public SimpleTagHandler() { }

   public String[] parseTag(String s, boolean isEmpty) {

       if (isEmpty) { // 本处理器不支持空标签

           return null;

JAVA手机网[www.cnjm.net]       }

       // 如果标签中有'='号就把标签分为UBB标记和属性两部分,否则属性为null

       String tag = s, attr = null;

       int idx = s.indexOf('=');

       if (idx >= 0) {

           tag = s.substring(0, idx);

           attr = s.substring(idx + 1);

       }

       String tmp = tag.toLowerCase(); // 大小写不敏感

       // 只有下面的标记是本处理器支持的

       if ("b".equals(tmp) ||

           "i".equals(tmp) ||

           "u".equals(tmp) ||

           "size".equals(tmp) ||

           "color".equals(tmp) ||

           "quote".equals(tmp) ||

           "url".equals(tmp) ||

           "email".equals(tmp) ||

           "img".equals(tmp)) {

           return new String[] { tag, attr };

       }

       // 不是一个合法的UBB标签,作为普通文本处理

       return null;

   }

   public String compose(String tag, String attr, String data, boolean isEmpty) {

       // 针对不同标记进行组合工作

       String tmp = tag;

       if ("b".equals(tmp) ||

           "i".equals(tmp) ||

           "u".equals(tmp)) {

           return "<" + tag + ">" + data + "</" + tag + ">";

       } else if ("size".equals(tmp) ||

           "color".equals(tmp)) {

           return "<font " + tag + "='" + attr + "'>" + data + "</font>";

JAVA手机网[www.cnjm.net]       } else if ("quote".equals(tmp)) {

           return "<table cellpadding=0 cellspacing=0 width=94% bgcolor=#000000 align=center style='table-layout:fixed'><tr><td><table width=100% cellpadding=5 cellspacing=1 style='table-layout:fixed'><tr><td bgcolor=#FFFFFF style='left: 0px; width: 100%; word-wrap: break-word'>"

JAVA手机网[www.cnjm.net]                   + data + "</td></tr></table></td></tr></table>";

       } else if ("url".equals(tmp)) {

           String url = attr != null ? attr : data;

           return "<a href='" + url + "' target=_blank>" + data + "</a>";

       } else if ("email".equals(tmp)) {

           String email = attr != null ? attr : data;

           return "<a href='mailto:" + email + "'>" + data + "</a>";

JAVA手机网[www.cnjm.net]       } else if ("img".equals(tmp)) {

           return "<img src='" + data + "' border=0>";

       }

       return data;

   }

  

   // 测试代码,可以运行这个类,并把包含UBB标签的文本作为参数传入来测试

   // 比如java util.SimpleTagHandler ""

   public static void main(String[] args) throws Exception {

       System.out.println(">>>>" + args[0]);

JAVA手机网[www.cnjm.net]       // 下面采用了忽略模式来容错,你也可以用MODE_CLOSE试验一下关闭模式的容错效果

       System.out.println("=========================\n"

               + UBBDecoder.decode(args[0], new SimpleTagHandler(), UBBDecoder.MODE_IGNORE));

   }

JAVA手机网[www.cnjm.net]}

JAVA手机网[www.cnjm.net]

下载源代码

来自:http://www.cnjm.net/tech/article1263.html

 

 

 

相关文章

    使用Java实现UBBCode的转换  [2006-03-03]

 

学习日记开源项目答疑区

    在这里,您可以把您在学习日记开源项目开发中和安装使用中碰到的疑问以日记的形式提出来,我们程序员练功场聘请的顾问会来这里查看并也许会解答您的问题。

    但是,如果您需要某一位特定顾问的解答,请在私下与他联系。否则,您的疑问是向任何一位顾问提出。

    当然,在这一个答疑区中的问题也并不是只能由顾问解答,如果您知道某一个问题的答案或线索,诚恳的希望您能站出来说一下。这样也可以减少顾问们的劳动量。如果您的回答有什么错漏,别人也可以为您提出来。

学习日记开源项目

学习日记开源项目

1、简介

    就是学习日记网站正在运行的这个基于JSP+STRUTS+MYSQL这个类似blog的web程序,目前以BSD形式的开源项目发布。详情请见我们的学习日记开源社区的项目概述。如果你有兴趣和时间的话,请加入我们吧。

2、练功场所

    1)、学习日记开源社区提供CVS库、bug跟踪系统、邮件列表等等;

    2)、学习日记开源社区提供给大家互相交流开发心得,为着把学习日记做成一个信息时代的学习交流平台而互相鼓励、互相帮助。

3、加入方式

    1)、如果您确定要成为一名学习日记开源平台的开发者,愿意向CVS库提交代码,请在开源社区注册一个用户(最好与123行动!网站的一样),并把你的相关情况(技术经历、加入目的、可以有多少参与开发的时间、愿意参与的模块、对学习日记开源项目的意见或建议、电子邮件等等)和开源社区注册名告知我们(在“123行动!成功互助组织”留言或通过开发社区的电子邮件),由我们审定并确定是否把您加为CVS库的代码提交者;

4、加入这个开源项目有什么回报吗?

    目前没有任何有形的回报,但任何人的细微贡献都会记录在案。

5、与学习日记开源项目有关的目标分类

   

    1)、大家如果有什么关于学习日记内容、形式、开发等创意的灵感可以以日记的形式记在这里供大家交流一下: 学习日记创意集锦,已有的创意

 

    2)、 学习日记项目需求分析设计阶段遇到的技术性问题和解决方案,和有关的学习资料、学习心得:学习日记开发小组需求分析设计区 ,已有的相关资料

 

    3)、在学习日记项目实施阶段遇到的技术性问题和解决方案,和有关的学习资料、学习心得:学习日记开发小组项目实施社区,已有的相关资料

 

    4)、用于汇总学习日记开发过程中的一些文档本站的一些历史文档,例如:贡献人员名单,具有阶段性意义的各种信件,项目开发计划,进度报表: 学习日记开发小组文档维护队工作区,已有的相关文档

程序员练功场答疑区

    在这里,您可以把您在程序员练功场中碰到的疑问以日记的形式提出来,我们程序员练功场聘请的顾问会来这里查看并也许会解答您的问题。

    但是,如果您需要某一位特定顾问的解答,请在私下与他联系。否则,您的疑问是向任何一位顾问提出。

    当然,在这一个答疑区中的问题也并不是只能由顾问解答,如果您知道某一个问题的答案或线索,诚恳的希望您能站出来说一下。这样也可以减少顾问们的劳动量。如果您的回答有什么错漏,别人也可以为您提出来。