Differences between revisions 1 and 33 (spanning 32 versions)
Revision 1 as of 2005-01-05 12:32:39
Size: 149
Editor: ZoomQuiet
Comment:
Revision 33 as of 2005-06-18 11:00:04
Size: 10049
Editor: ZoomQuiet
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:

-- ZoomQuiet [[[DateTime(2005-01-05T12:32:39Z)]]]
Line 7: Line 9:
||[[MonthCalendar]]||<^>'''学习日志'''[[Include(^LeoEnvironment/200.*,'日志简报',4,sort=descending,items=30,titlesonly)]]||
Line 8: Line 11:
= 文学编程 =
 * LiterateProgramming -- 文学编程
  * 也就是那种认为源代码只是构成程序的一小部分的想法。
  * '''程序的真正主体是对它的算法、结构、目的和用法的描述——实现它的源代码并不是主要的。'''
= Leo =
 * http://webpages.charter.net/edreamleo/LeoProse.gif
 * [http://webpages.charter.net/edreamleo/front.html Leo is ...]
 * 这个纯Python 的编辑环境用最简单的代码实现了如此丰富的编程思想!
  * Leo 可以是 '''一个通用的数据管理环境'''
  * Leo 可以是 '''一个柔韧性的项目,程序或是其它数据的浏览器'''
  * Leo 可以是 '''一个项目管理器'''
  * Leo 可以是 '''一个提纲式的程序编辑器'''
  * Leo 可以是 ....
 * 下载帮助文件来学习 attachment::sbooks.chm

== 开发体验 ==

||通常的界面[[Include(/currently)]]||attachment::leo0-snap.jpg||
  * 我开发后期全都使用Leo 管理了项目文件
    * 下载尝试: attachment::CVSanalyser.leo
 * 我喜欢的形式:
  * 通过菜单命令:'''"Window/Toggle Split Direction"''' 设置
  * attachment::leo1-snap.jpg
  * Leo 4.0 以后,由于文章化编程的发展,已经实现了很多方便的功能!
  * 不过在下仅仅学会了其中几种就感觉有些离不开了!
  * 这种有强烈快感的杀手级工具,近日来就发现了 [http://wwy.iseetimes.com/blog/?q=node/view/494&PHPSESSID=bb5a4a0f6bf2ac3a1cfaff7b173c41c8 Scrapbook! FireFox 的资料管理插件!]
  * Leo 知道已经有两年了,可是一直没有使用起来....后悔!
    * 仅仅用作分类记事本:
    * attachment::leo-regbook.gif
=== @file ===
 * 使用 '''@fiile''' 标签(directive) 就可以将 Leo 环境用作
 * '''知识管理''','''项目管理'''
 * attachment::leo-scrap.jpg
 * 以及前示的项目管理了!
  * 因为可以自动与外部文件同步哪!
  * 注意上面的截屏,在Leo 载入时,自动的将 '''@file '''指示的文件,从外部文件更新入Leo 文件了!
  * 而且,在Leo 中进行了编辑保存时,也会自动更新外部文件
  * 所以,可以象 NewEdit,UltraEdit 等等编辑环境那样来开发程序,而在外部执行调试!
    * 其实 Leo 也开放 Script 接口,你可以来开发定制一些功能的!
==== @ignore ====
  * 保存时,不改变外部文件。此项一般要去除。
==== @others ====
 * 在使用 '''@file''' 标签后,
 * 可以简单的使用 '''@others'''标签来包含当前结点以下的所有结点!
 * 象XSL 中的{{{<xsl:for-each select="//.">}}} 哈哈哈!!!
 
==== 自动导入 ====
 * Leo 的 '''File/Import.../Import To @file''' 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入!
 * 不过,自动生成的文本中可能有一些标签:
  * {{{@ignore
@language python
}}}
  * 是不属于 '''@file''' 管理范围的,
  * 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了!
  
=== @root ===
 * 是'''文章编辑环境'''的标准支持
 * 可以用以 编写文档
  * attachment::leo-doc.jpg
 * 组织代码也一样
  * attachment::leo-root.jpg
 * 章,节,段落 显式的组织在几个窗口中
 * 对应的代码中的 类,子类,函式等等也以同样的形式组织起来
 * '''直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了! 优雅!聪明!'''
 
==== <<section>> ====
 * 在 '''@root'''限定处理下,各子结点的引用,与包含处理是使用'''<<章节>>'''标记
 * 比如说:上一截屏中的 '''<<file>>'''
==== Tangle & Untangle ====
 * 这时,针对外部文件的同步,需要人工操作
  * 菜单命令:'''"File/Tangle.../Tangle"''' - 混出
  * 菜单命令:'''"File/Untangle.../Untangle"''' - 混入
  * 是一对相应的操作
    * Tangle 是将当前的编辑混出到外部文件中
    * Untangle 反之
==== @silent ====
 * 比'''@file''', 好象'''@root'''的内容管理麻烦些
 * 但是有一点好处是可以声明 '''@silent'''
 * 命令Leo 在同步文件时,不向外部文件输出 Leo 的注释文本,生成干净的代码文件
Line 9: Line 91:
-- ZoomQuiet [[[DateTime(2005-01-05T12:32:39Z)]]]
 * 如果是团队开发,最好用@thin,另外还有比@silent更方便的命令。和@thin的文档在一起。by tomz
----
'''什么东西?研究之!'''
 * [http://webpages.charter.net/edreamleo/atThin.html Using @thin and @all]
 * 快速翻译来学习使用!

==== @thin ====

大多数情况中 @thin 如同 @file 一样的工作. 实际上,你可以简单的将 @file 替换为 @thin 进行正常的 outline 操作.

这里是主要几点 @file 与 @thin 不同之处:

 * Leo 不会在 .leo 文件的 @thin 节点树中保存信息

 * 源自 @thin 的文件 (可以称作 "轻依赖"文件) 是从文件的outline 信息重建 @thin 树的. 具体的就是利用文本中 @+node 和 @-node 作为独特的标识节点

 *. @all 指示符仅仅在 @thin 树中起作用. 此指示符与 @others 类似, 不过对其有些限制:
    它将倒出所有标记以內的节点到文件中,包括标记为 @ignore 和 @others 以下的树会当作普通的孤立节点倒出.
    (不妙的体验是,原先 @others 可以限定下属节点倒出文本时的缩进,而@all 粗暴的将所有下级节点当作同级的兄弟处理了!)


对于类似 LeoPy.leo 中的 @thin leoProjects.txt 文件,@all 指示符 是必须的. leoProjects.txt 文件包含所谓"工程节点" . 即,非程序文件:仅仅是些无关数据的简单收集.这时,@others 决不会工作: Leo 会抱怨有太多的 孤节点

 * 使用@thin 最有利的是,人们进行协同开发时不用频繁的同步 .leo 文件!
  1. 开发者仅仅需要检入 "轻依赖"文件 到 CVS.
  1. CVS仓库 "参考" .leo 文件. 实际所有相关文件除了 @thin 节点信息什么也没有包含.
  1. 参考文件 当且仅当 工程中有新文件加入时才会变化.
  1. 开发者们只使用本地的 参考文件 复制就可以开展自个儿的工作.

比如说, 代替直接使用 LeoPyRef.leo , 我利用叫 LeoPy.leo 的复制品. 通过 @thin 节点指引所有本地工作文件.


=== @root vs. @file 树 ===
@file 树比 @root 树使用起来方便很多:
 
 1. @file 树需要的指示符支持比 @root 树要少; 所有 @root 树中的章节都需要声明(而且不能重名,在同一文件中!), 而 @file 树常常包含很多非命名的章节节点. 在 @file 树中, @others 指示符 行为就象关联起所有非常命名的章节.

 1. 工作在 @root 树中,用户必须明确调用 Tangle 和 Untangle 命令. 而 Leo 会自动混入/出 @file 树 , 保存时混出所有变动到 outline, 重新打开 .loe 文件时自动混入所有修改从 outline.

但是, @root 树比 @file 树要 柔韧很多:

 1. 在 @file 树中, 章节必须是包含在子节点中的,而且引用点也是固定的.

 1. 在 @root 树中一个被声明的章节, 并不限制其可以在哪里被引用. 此外,@unit 指示符命令甚至于扩展了章节的引用, 可以不限制在一个 @root 树中! 即,你可以在一个 @root 中命名一个章节, 而在另一个 @root 树中引用(可以看作 节点的 clone 操作,只是在引用处看不到全部内容,除非混出为文件)

 1. 在 @root 中的章节声明,也不限制声明的地点.


@root 树与 @file 树不同之处在于:
 1. 只有 @root 树可以包含章节定义行(不过 @file 中可以使用 "<< class declarations >>"类声明的专用章节)
 1. 只有 @file 树可以包含 @others 指示符.
 1. @c 指示符 需要章节名出现在 @root 的节点标题树中.
 1. @c 指示符仅仅可以工作在 @file 树的体文本起始处.所谓 体文本是在 @root 中没有标记会被忽略,而在 @file 树是作为无命名的代码章节内容处理的节点正文文本.
== 反馈 ==
=== Leo 安装 ===
 * leo是运行在py2.4还是py2.3.4?我机器2个版本py都有,可是在安装leo的时候提示我没有安装py,不晓得怎么回事 --Dreamingk
 * 哈哈哈!!是个奇怪的问题!Leo 在 4.0 以后版本的安装程序好象有问题,不论Python 环境是少,都说是找不到,也可能是M$升级了什么东西后注册表结构变了,才这样的,我是都下载跨平台版本,解压就可以使用的,自个儿创建一个快捷方式!绝对的“绿色!”--ZoomQuiet
 * 下了他的src版,就可以用了。exe版就不行。 --Dreamingk
 * 它的exe版可能是dephi编的,比较过时,可能早不能用了。by tomz
 * 它现在已经没有exe版了,sf上的exe是安装包,安装后还是py文件。很好用,装了就能用。 --by flyaflya
=== 缺陷 ===
 * 以@file方式导入文件,缩进可能出现问题,它把一些地方的Tab换成4个空格,有些地方没换,可能出现问题,在使用其它编辑器(我用editplus)时,可以选中“Tab用空格代替”。-- by flyaflya
 * 在Unix/Linux系统里,tck/tk的中文输入始终是个问题。所以,连带Leo在我的Debian里也没法输入中文,实在是可惜。-- xyb
=== 技巧 ===
 * outline中重要的选项“go back”和“go forward”没有快捷键,可以自己设置。我设为“Ctrl+DnArrow”和“Ctrl+UpArrow”,可以方便的在多个文件(类)间切换。 -- by flyaflya
 * 呀呀呀??我都没有发现这个好处!只是在 新版本中发现有 holk 聚焦! 可以在包含了很多文件的工程中关注当前的一部分! 我习惯是使用 F8 和 F9 定义快捷键... -- ZoomQuiet

自然,方便的开发管理环境!

-- ZoomQuiet [DateTime(2005-01-05T12:32:39Z)] TableOfContents

MonthCalendar

学习日志Include(^LeoEnvironment/200.*,'日志简报',4,sort=descending,items=30,titlesonly)

文学编程

  • LiterateProgramming -- 文学编程

    • 也就是那种认为源代码只是构成程序的一小部分的想法。
    • 程序的真正主体是对它的算法、结构、目的和用法的描述——实现它的源代码并不是主要的。

Leo

开发体验

通常的界面Include(/currently)

attachment::leo0-snap.jpg

  • 我开发后期全都使用Leo 管理了项目文件
    • 下载尝试: attachment::CVSanalyser.leo
  • 我喜欢的形式:
    • 通过菜单命令:"Window/Toggle Split Direction" 设置

    • attachment::leo1-snap.jpg
    • Leo 4.0 以后,由于文章化编程的发展,已经实现了很多方便的功能!
    • 不过在下仅仅学会了其中几种就感觉有些离不开了!
    • 这种有强烈快感的杀手级工具,近日来就发现了 [http://wwy.iseetimes.com/blog/?q=node/view/494&PHPSESSID=bb5a4a0f6bf2ac3a1cfaff7b173c41c8 Scrapbook! FireFox 的资料管理插件!]

    • Leo 知道已经有两年了,可是一直没有使用起来....后悔!
      • 仅仅用作分类记事本:
      • attachment::leo-regbook.gif

@file

  • 使用 @fiile 标签(directive) 就可以将 Leo 环境用作

  • 知识管理,项目管理

  • attachment::leo-scrap.jpg
  • 以及前示的项目管理了!
    • 因为可以自动与外部文件同步哪!
    • 注意上面的截屏,在Leo 载入时,自动的将 @file 指示的文件,从外部文件更新入Leo 文件了!

    • 而且,在Leo 中进行了编辑保存时,也会自动更新外部文件
    • 所以,可以象 NewEdit,UltraEdit 等等编辑环境那样来开发程序,而在外部执行调试!

      • 其实 Leo 也开放 Script 接口,你可以来开发定制一些功能的!

@ignore

  • 保存时,不改变外部文件。此项一般要去除。

@others

  • 在使用 @file 标签后,

  • 可以简单的使用 @others标签来包含当前结点以下的所有结点!

  • 象XSL 中的<xsl:for-each select="//."> 哈哈哈!!!

自动导入

  • Leo 的 File/Import.../Import To @file 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入!

  • 不过,自动生成的文本中可能有一些标签:
    • {{{@ignore

@language python }}}

  • 是不属于 @file 管理范围的,

  • 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了!

@root

  • 文章编辑环境的标准支持

  • 可以用以 编写文档
    • attachment::leo-doc.jpg
  • 组织代码也一样
    • attachment::leo-root.jpg
  • 章,节,段落 显式的组织在几个窗口中
  • 对应的代码中的 类,子类,函式等等也以同样的形式组织起来
  • 直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了! 优雅!聪明!

<<section>>

  • @root限定处理下,各子结点的引用,与包含处理是使用<<章节: invalid macro name>>标记

  • 比如说:上一截屏中的 <<file>>

Tangle & Untangle

  • 这时,针对外部文件的同步,需要人工操作
    • 菜单命令:"File/Tangle.../Tangle" - 混出

    • 菜单命令:"File/Untangle.../Untangle" - 混入

    • 是一对相应的操作
      • Tangle 是将当前的编辑混出到外部文件中
      • Untangle 反之

@silent

  • @file, 好象@root的内容管理麻烦些

  • 但是有一点好处是可以声明 @silent

  • 命令Leo 在同步文件时,不向外部文件输出 Leo 的注释文本,生成干净的代码文件


  • 如果是团队开发,最好用@thin,另外还有比@silent更方便的命令。和@thin的文档在一起。by tomz


什么东西?研究之!

@thin

大多数情况中 @thin 如同 @file 一样的工作. 实际上,你可以简单的将 @file 替换为 @thin 进行正常的 outline 操作.

这里是主要几点 @file 与 @thin 不同之处:

  • Leo 不会在 .leo 文件的 @thin 节点树中保存信息
  • 源自 @thin 的文件 (可以称作 "轻依赖"文件) 是从文件的outline 信息重建 @thin 树的. 具体的就是利用文本中 @+node 和 @-node 作为独特的标识节点
  • . @all 指示符仅仅在 @thin 树中起作用. 此指示符与 @others 类似, 不过对其有些限制:
    • 它将倒出所有标记以內的节点到文件中,包括标记为 @ignore 和 @others 以下的树会当作普通的孤立节点倒出. (不妙的体验是,原先 @others 可以限定下属节点倒出文本时的缩进,而@all 粗暴的将所有下级节点当作同级的兄弟处理了!)

对于类似 LeoPy.leo 中的 @thin leoProjects.txt 文件,@all 指示符 是必须的. leoProjects.txt 文件包含所谓"工程节点" . 即,非程序文件:仅仅是些无关数据的简单收集.这时,@others 决不会工作: Leo 会抱怨有太多的 孤节点

  • 使用@thin 最有利的是,人们进行协同开发时不用频繁的同步 .leo 文件!
    1. 开发者仅仅需要检入 "轻依赖"文件 到 CVS.
    2. CVS仓库 "参考" .leo 文件. 实际所有相关文件除了 @thin 节点信息什么也没有包含.
    3. 参考文件 当且仅当 工程中有新文件加入时才会变化.
    4. 开发者们只使用本地的 参考文件 复制就可以开展自个儿的工作.

比如说, 代替直接使用 LeoPyRef.leo , 我利用叫 LeoPy.leo 的复制品. 通过 @thin 节点指引所有本地工作文件.

@root vs. @file 树

@file 树比 @root 树使用起来方便很多:

  1. @file 树需要的指示符支持比 @root 树要少; 所有 @root 树中的章节都需要声明(而且不能重名,在同一文件中!), 而 @file 树常常包含很多非命名的章节节点. 在 @file 树中, @others 指示符 行为就象关联起所有非常命名的章节.
  2. 工作在 @root 树中,用户必须明确调用 Tangle 和 Untangle 命令. 而 Leo 会自动混入/出 @file 树 , 保存时混出所有变动到 outline, 重新打开 .loe 文件时自动混入所有修改从 outline.

但是, @root 树比 @file 树要 柔韧很多:

  1. 在 @file 树中, 章节必须是包含在子节点中的,而且引用点也是固定的.
  2. 在 @root 树中一个被声明的章节, 并不限制其可以在哪里被引用. 此外,@unit 指示符命令甚至于扩展了章节的引用, 可以不限制在一个 @root 树中! 即,你可以在一个 @root 中命名一个章节, 而在另一个 @root 树中引用(可以看作 节点的 clone 操作,只是在引用处看不到全部内容,除非混出为文件)
  3. 在 @root 中的章节声明,也不限制声明的地点.

@root 树与 @file 树不同之处在于:

  1. 只有 @root 树可以包含章节定义行(不过 @file 中可以使用 "<< class declarations >>"类声明的专用章节)

  2. 只有 @file 树可以包含 @others 指示符.
  3. @c 指示符 需要章节名出现在 @root 的节点标题树中.
  4. @c 指示符仅仅可以工作在 @file 树的体文本起始处.所谓 体文本是在 @root 中没有标记会被忽略,而在 @file 树是作为无命名的代码章节内容处理的节点正文文本.

反馈

Leo 安装

  • leo是运行在py2.4还是py2.3.4?我机器2个版本py都有,可是在安装leo的时候提示我没有安装py,不晓得怎么回事 --Dreamingk
  • 哈哈哈!!是个奇怪的问题!Leo 在 4.0 以后版本的安装程序好象有问题,不论Python 环境是少,都说是找不到,也可能是M$升级了什么东西后注册表结构变了,才这样的,我是都下载跨平台版本,解压就可以使用的,自个儿创建一个快捷方式!绝对的“绿色!”--ZoomQuiet

  • 下了他的src版,就可以用了。exe版就不行。 --Dreamingk
  • 它的exe版可能是dephi编的,比较过时,可能早不能用了。by tomz
  • 它现在已经没有exe版了,sf上的exe是安装包,安装后还是py文件。很好用,装了就能用。 --by flyaflya

缺陷

  • 以@file方式导入文件,缩进可能出现问题,它把一些地方的Tab换成4个空格,有些地方没换,可能出现问题,在使用其它编辑器(我用editplus)时,可以选中“Tab用空格代替”。-- by flyaflya
  • 在Unix/Linux系统里,tck/tk的中文输入始终是个问题。所以,连带Leo在我的Debian里也没法输入中文,实在是可惜。-- xyb

技巧

  • outline中重要的选项“go back”和“go forward”没有快捷键,可以自己设置。我设为“Ctrl+DnArrow”和“Ctrl+UpArrow”,可以方便的在多个文件(类)间切换。 -- by flyaflya

  • 呀呀呀??我都没有发现这个好处!只是在 新版本中发现有 holk 聚焦! 可以在包含了很多文件的工程中关注当前的一部分! 我习惯是使用 F8 和 F9 定义快捷键... -- ZoomQuiet

LeoEnvironment (last edited 2013-10-22 01:25:18 by ZoomQuiet)