Default style (Cherry Eve). Switch styles (Capricorn). Atom Feed Calendar

讨论:大家对OpenJFX这个项目有何看法?

2007年06月14日 12:02 位于分类[ 新闻视点 ]   作者: cleverpig

JavaFX Script  (下文中成为JavaFX)语言是一种声明式的静态类型编程语言。它具有第一级函数、声明式的语法、列表推导及基于依赖关系的增量式求值 等特征。JavaFX 脚本式语言特别适用于Java2D swing GUI组件,它允许简单地创建图形界面。

Matrix作为OpenJFX的伙伴社区,现在邀请大家讲讲对JavaFX的看法或者建议:


1.大家可以对其语言特性、适用范畴、语法特征、实现方式、使用问题等贡献出自己的质疑、争议或者看法、乃至设计提案。

2.也可以讲一下对JavaFX文档方面的诉求,或是和JavaFX开发团队一起分享自己编写的best practice。

3.内容不限制,只要是你所关注的、表达清楚就ok。


讨论目的:获得最佳反馈

cleverpig(JavaFX的content editor)将收集整理大家的看法或者建议,然后采用mail专访的方式提交给JavaFX开发团队leader--Anatoli,并将mail专访的内容编辑为专访文章发表在Matrix与大家分享。:-)

编写评论形式

为了方便整理,推荐大家采用如下看法或者建议的方式:
主题:.....
描述:.....
建议:.....
邮件联系方式:.....

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

Matrix携手OpenJFX全球发布《JavaFX编程语言手册》

2007年05月31日 10:18 位于分类[ 新闻视点 ]   作者: cleverpig

今日,Matrix携手OpenJFX全球同程发布《JavaFX编程语言手册》。

    JavaFX Script™ (下文中成为JavaFX)语言是一种声明式的静态类型编程语言。它具有第一级函数(first-class functions)、声明式的语法、列表推导(list-comprehensions)及基于依赖关系的增量式求值(incremental dependency-based evaluation)等特征。JavaFX 脚本式语言特别适用于Java2D swing GUI组件,它允许简单地创建图形界面。本文档结合OpenJFX文档和中国开发者的理解,给出了JavaFX 脚本式编程语言的非正式描述。

image

    Matrix guru-Chris说:“这仅仅是和Open Source合作的一个开端,matrix将对不惜余力地推动开源运动。欢迎Matrixer和对开源感兴趣者积极参与进来,建立这个美丽的开源营地。”

    作为译者的cleverpig颇具感慨地说:“JavaFX 趋势很好,它有些类似建筑在Java庞大函数库上的“Ruby”,在极具Java味道的同时,又具有Ruby语言的简练,可以称为混血风格。虽然在工作中 付出了不少part time,但得到了MM的支持,使我专心投入翻译工作。在翻译的过程中融入了个人对脚本语言的理解,如有不妥,还请大家指出。同时还要感谢Tin的慷慨相 助,帮助我分担一半的工作。我相信matrix对开源运动的兴趣将吸引更多的像OpenJFX这样的合作。”

    OpenJFX项目负责人Anatoli Fomenko在回复cleverpig的mail中提到:“Thanks for your interest.We definitely like you to make the translation ASAP.Regarding posting: I'll investigate if it's possible to post Chinese on openjafx.dev.java.net - that would be our first choice, matrix.org - 2nd.I'll get back to you soon.  Anatoli”


该文档内容:
• 基本类型
• 调用Java对象
• 变量
• 函数、数组、表达式和操作
• 修改数组
        • insert语句
        • into
        • before, after
        • elete语句
• 查询数组
• 表达式
• 字符串和字符串表达式
• 引用标识符
• 范围表达式
• 字符串(String)、数值(Number)和日期的格式化
• 操作
        • 表达式语句
        • If语句
        • While语句
        • Try语句
        • For语句
        • Return语句
        • Throw语句
        • Break和Continue语句
        • Do语句
        • do later
• 类与对象
        • 属性声明
        • 对象声明
•        更新触发器
        • 创建触发器
        • 插入触发器
        • 删除触发器
        • 替换触发器
• 增量式求值和懒惰求值
• 反射
• 广度(Extents)和枚举
• 相关资源
• 关于译者
• 译文Feedback

相关资源

    * openJavaFX官方网站
    * openJavaFX FAQ
    * Functional programming
    * 什么是第一级函数
    * FOLDC对list comprehension的解释
    * XPath教材
    * 使用JXPath查询Java对象
    * XQuery简介

关于译者

    cleverpig:BJUG成员,Java社区——Matrix与Java共舞负责人之一,曾参与Buffalo的文档工作、Fielding的《Architectural Styles and the Design of Network-based Software Architectures》中文化研究(还要感谢Tin、Nicholas的大力相助),关注一切新技术,业余时间研究Guru并准备得道升天,但是苦于没有得法,目前还在苦苦追寻……

    Tin:中文名“田乐”,BJUG成员,现就职于Sina。曾经在Java Web项目中担任软件架构师和Web设计,注重使用轻量级解决方案和敏捷方法。目前主要做基于Javascript的RIA开发,喜欢研究新技术并进行思考,业余时间继续关注Java和Ruby,并与朋友一起翻译Selenium文档

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

Think in Pushlet(下)

2007年01月19日 16:16 位于分类[ 新闻视点 ]   作者: cleverpig

Think in Pushlet

作者:cleverpig

image
框架的设计

        注意:本章节仅反映了Pushlet server端框架的1.0版本(随着版本升级可能还会重新构造)。

        Pushlet 框架允许client订阅在server端的主题(subject),而server则接收订阅,然后在server端的订阅主题所对应的数据变化时推送 数据到client。此框架的基本设计模板是发布/订阅(Publish/Subscrib),也被称为观察者(Observer)。它具有server 和client两部分组建而成:

        Server端:
        由围绕着Pushlet类的Java类集合构成(见下面的UML类设计图表)。

        Client端:
        脚本与页面:可重用的JavaScript库(pushlet.js)和用来在DHTML client(这里指浏览器)中接收事件的HTML(pushlet.html)组成。

        Client端Java类:
        JavaPushletClient.java和JavaPushletClientListener.java,负责在Java client中接收事件。

        跨越浏览器的DHTML工具库:
        layer.js, layer-grid.js, layer-region.js,用来在DHTML层中显示数据内容。

        最后,还有用于测试事件的生成工具类EventGenerators.java以及一些示例应用。

server端类设计

        下面是server端Java类的UML图表:

image
Pushlet框架Java类UML图


        关键的类:Pushlet、Publisher类、Subscriber接口和Event类。通过HTTP请求调用Pushlet这个servlet,client订阅事件并接收事件。

        Client发送订阅请求时需要表明的内容如下:
        1.订阅事件的主题
        2.接收事件所采用的格式:默认为JavaScript调用,还有XML或者Java序列化对象者三种。目前Pushlet 2.0.2版已经支持AJAX。
        3.使用哪种接收协议(将来实现):TCP/IP、UDP、Multicast。

        示例:用于接收AEX股票价格的请求,默认使用JavaScript调用作为格式。

http://www.fluidiom.com:8080/servlet/pushlet?subject="/stocks/aex"


         主题(subject)表示为具有层次的“主题树”(topic-tree)形式。例如:“/stocks”表示与股票价格相关的所有事件,而 “/stocks/aex”表示Amsterdam Exchange公司的股票价格。“/”表示所有事件。这并不时硬性规定,而是由开发者根据应用自行定义。

        当前只有接收方协议是发送到client的HTTP回应流(response stream)。在将来的扩展版本中,接收方协议能够提供多种选择,比如TCP、UDP、RMI、HTTP POST甚至只SMTP。

        Event(事件)类:仅仅是name/value的字符串对(使用java.util.Properties实现)的集合。

        产生Event的方式:Publisher 类为生成的Event提供了发布接口,它内部保存了订阅者(那些实现Subscriber接口的类)列表,并把每个Event发送给那些主题与Event 匹配的订阅者。Event在server端也可以通过能够侦听外部Event的EventGenerators类来生成。另外client可以通过基于 HTTP通讯的Postlet类来发布Event。

        在上面的图表中,为了适配不同请求源(浏览器、Java client程序),PushletSubscriber以及它所包含的那些类提供了多种订阅者的实现。

场景1: 事件订阅

image
浏览器client订阅程序图


        上面的UML程序图中,浏览器client通过Publisher订阅Event。

        Pushlet 作为servlet,通过doGet/doPost方法被调用。由于多个client可以同时调用同一个Pushlet,所以Pushlet本身不能作为 订阅者。取而代之的是,它派发所有的订阅:在每一次调用doGet()/doPost()时,新建PushletSubscriber对象、并使之运行直 至事件循环(eventLoop)结束。PushletSubscriber作为一个实现Subscriber接口的对象,通过join()方法向 Publisher类进行注册的方式将自身添加到Publisher的内部列表。

        面对不同的client类型和协议, PushletSubscriber建立一个相对的ClientAdapter对象,在这个场景中是BrowserPushletAdapter对象。而 对于支持Multipart MIME的浏览器,将建立MultipartBrowserClientAdapter对象。

        最后的deQueue()调用是一个“等待Event的循环”,deQueue的意思为入队。注意此方法将挂起当前线程直到PushletSubscriber的GuardedQueue队列中存入有效的Event。

场景2: 发送和派发事件

image
事件发布程序图


         上图显示了发送一个事件所要经历的程序。它展现了Event如何被生成、被派发给浏览器client。在这个场景中,EventGenerator建立了 一个Event对象,并调用Publisher.publish()将其派发到client。Publisher遍历它内部的订阅者列表,询问这个 Event是否匹配订阅标准(目前只是主题匹配)。如果发现与之匹配的订阅者,则调用该订阅者的send()方法。

        每个 PushletSubscriber对象都有一个GuardedQueue对象,在其中以队列的形式保存着调用send()方法时传入的Event。那么 它为什么不直接将Event推送给BrowserPushletAdapter呢?最重要的原因是我们期望挂起 BrowserPushletAdapter线程,直到GuardedQueue中存在有效的Event,这样就避免了“忙于等待”或者“轮询”方式所带 来的负面影响。第二原因是Publisher可以通知多个client,如果在执行同步的send()调用时,某个慢速的client可能会堵塞所有其它 正在等待通知的client。这正是我在RMI或者CORBA提供的一组client进行同步回调的示例中所看到的设计缺陷。

        GuardedQueue 是个工具类,它使用了读/写模板(readers-writers pattern),此模板采取java.lang.Object.wait()/notifyAll()方法实现可被监控的挂起。通过使用读/写模板,使 GuardedQueue类具有进行对象入队/出队(enqueue/dequeue)操作的能力。当队列为空时,GuardedQueue调用 deQueue()方法时,此时调用线程将被挂起,直到有对象入队为止。相反,当队列已满时调用enQueue(),线程也将挂起。在 BrowserPushletSubscriber获得出队的Event对象后,它将调用BrowserPushletAdapter的push()方 法,后者将格式化Event为JavaScript代码或者XML以及其它格式),并将它发送到浏览器。比如Philips股票价格为123.45的 JavaScript代码格式如下:

<SCRIPT language=JavaScript >parent.push('subject', '/stocks/aex', 'philips', '123.45') </SCRIPT>


Client端框架

        由于这是对于所有浏览器client的通用任务,所以Pushlet Client端框架提供了两个可重用的文件:
pushlet.html和pushlet.js。
        Pushlet.html本身是被附着在一个隐藏的HTML Frame中。这个Frame的parent调用并实现push()方法。

        pushlet.html :被包含在client端的HTML文档中的Frame中。它可以传入主题标识和背景颜色两个参数。而它所做的最重要的工作是下面的push方法:

function push() {
        // 根据传入的参数建立PushletEvent object
        // push.arguments是来自server的Event数据
        pushletEvent = new PushletEvent(push.arguments)

        // 更新状态Frame:显示闪光表示接收数据
        updateStatusFrame();
        
        // parent frame是否准备好接收Event?
        if (!parent.onPush) {
                return;
        }
        
        // 把Event转发给parent frame指定的处理方法
        parent.onPush(pushletEvent);
}

        Push ()函数首先根据传入的参数建立了一个JavaScript对象——pushletEvent。接着使用updateStatusFrame()显示闪 光,表示我们正在接收Event数据,如果parent frame存在onPush()函数,则将前面建立的PushletEvent对象作为参数调用parent frame指定的处理方法。

        在pushlet.js 中的PushletEvent类代码如下:

/* Object to represent nl.justobjects.pushlet.Event in JavaScript.
   Arguments are an array where args[i] is name and args[i+1] is value
*/
function PushletEvent(args) {
   // Map存放Name/Value pairs
   this.map = new Map();
  
   // 设置成员方法
   this.getSubject = PushletEventGetSubject
   this.put = PushletEventPut
   this.get = PushletEventGet
   this.toString = PushletEventToString
   this.toTable = PushletEventToTable

   // 将传入的参数值放入到map中
   for (var i=0; i < args.length; i++) {
     this.put(args[i], args[++i] );
   }
}

// 获取事件主题
function PushletEventGetSubject() {
  return this.map.get('subject')
}

// 获取事件属性
function PushletEventGet(name) {
  return this.map.get(name)
}

// 存放事件属性
function PushletEventPut(name, value) {
  return this.map.put(name, value)
}

function PushletEventToString() {
  return this.map.toString();
}

// 将map内容转化为HTML Table
function PushletEventToTable() {
  return this.map.toTable();
}

        PushletEvent使用了一个我增加的Map JavaScript对象,它类似于java.util.Hashtable。

Pushlet协议

        详见http://www.pushlets.com/doc/protocol.html

应用

        Pushlet可以开发多种类型的web应用。由于此框架允许client主动更新事件(通过Postlet),所以应用就并不只是被动地推送数据了。每个Pushlet应用都可以根据下面进行分类:

        事件由server发起、还是client发起或者两者都有可能;状态是否保持在server、还是在client或者两者都有可能。

        由于事件不但被做成了对JavaScript有效,而且也是其它脚本化的插件能够接收实时的事件更新。例如你可以脚本化Macromedia Flash或者VRML应用。

        为了说明Pushlet应用的范围,下面提供了一些简单的demo。

监控

        例如股票、天气、投票、机场到达系统,这些应用都可以采用Pushlet对实时数据进行监控。

        这是一个实时FX股票/新闻应用:www.rabotreasuryweb.com (IE only). 另一个部署Pushlet的实时股票/新闻应用:www.marketnews.com.

游戏
        从象棋到描述危机和垄断者的游戏。

分布式MVC

         这涉及到了在用户接口框架(例如Java Swing和微软MFC)中常见的设计模板。在分布式MVC的各种变体中,模式层位于server,而client控制着是视图层和控制层。Client 通过控制进而修改模式,然后模式将通知所有依附的视图,而视图将进行自我刷新。

        一些应用具有web前端(front end),其数据存放在server上可被多个用户更新。比如预订系统和登记系统。如果一个client完成一次更新,而其它client却不能马上见到 变化直至刷新页面。在某些情况下,这是很简单、可行的解决方案,但同时也存在着用户需要同步变化的情况。这种情况下,应用可以使用Pushlet简单地将 URL作为单一事件推送到client,client接收到这个URL后将刷新页面。

        另外一点值得注意的示例是争议颇多 的EJB。尽管Java client能够直接和EJB对话(通过RMI或者CORBA),但多数情况下则是由servlet和作为client前端的JSP来完成。在这种情况 下,“通知”工作变得很艰难。使用Pushlet,EJB可以在其状态发生改变时通知依附于它的web client。

Web表示层

        在放弃使用PowerPonit作Java课程讲解工具后,我开发了一个基于XML的内容管理框架。由于在某些情形下,教室没有“卷轴工”,但是所有的学生人手一台网络计算机,所以我开发了这个简单的应用,它使我能够同步改变学生和我的页面内容。

用户辅助

        这种类型的应用可用于call center、银行、帮助桌面、电子商务web应用。当你由于问题而拨打call center电话时,代理程序可以使你通过上网的方式浏览解决方案、供货等信息。

        使用EJB作为后台和JSP作为前台,client可以买/卖外币。一个“AutoTrader”对象自动提供处理,如果自动处理失败或者client请求人工处理时,一个“处理干预”将发生,处理者将被通知并提供相应的服务。

社区工具

        这是一种多用户参加实时会话的应用。我正在计划扩充Pushlet框架,使其支持多用户session的特性。目前可以实现简单的web聊天,我称之为WCQ,大家可以在Pushlet源代码的example中见到它。

比较

        本章节对Pushlet与基于CORBA/RMI的Java applet解决方案进行一下比较。
优势
        直接与浏览器中的DHTML集成。

        标准的HTTP端口和协议:消息和RMI/CORBA使用非标准端口(相对HTTP标准端口而言),遇到“防火墙”、“禁止回调”、“禁止接收UDP数据”的浏览器安全限制时可能无法工作。

        client负载:基于CORBA/RMI的Java applet使client在启动时更加沉重,并消耗更多的资源。

        无需额外的server:消息和RMI/CORBA需要单独的server产品。Pushlet理论上可以在任何server引擎上运行,并具备连接管理和多线程能力。

缺点
        跨越浏览器的DHTML:Pushlet需要使用能工作在任何平台、所有浏览器版本的DHTML库。

        可测量性:当100个以上的client通过Pushlet连接到server时,server上的线程和socket资源都将出现紧张。而解决这一问题的方式就是使用单独的Pushlet服务器。

        Web server问题:一般的web server往往不是为长连接而设计的。针对这一问题的解决方案与上面的可测量性相同。

        代理缓存:一些代理服务器可能缓存HTTP数据。

参考资源:

        什么是Comet?
        Pushlet官网
        Pushlet白皮书
        JavaWorld《An in-depth look at RMI callbacks》
        JavaWorld《POSTing via Java/ Learn how to POST data to Web servers in Java》
        avaWorld《POSTing via Java revisited. Learn how to display the HTML document returned by the Web server》J
        JavaWorld《Connect to a Java server via HTTP》
        Doug Lea编写的《Concurrent Programming in Java - 2nd edition》
        Dynamic Duo[Cross-Browser Dynamic HTML]
        Danny Goodman编写的 《Dynamic HTML: The Definitive Reference》

进阶资源:

        Pushlet安装手册
        Pushlet协议解释
        Pushlet Cookbook
        Pushlet API文档

感谢阅读此文

        请支持cleverpig发起的image

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

Matrix IAC遵守GNU自由文档协议+GNU通用公共许可证

2007年01月10日 09:13 位于分类[ 新闻视点 ]   作者: cleverpig

Matrix IAC遵守GNU自由文档协议

作者:cleverpig


Matrix IAC Logo

MatrixIAC介绍英文为“Matrix Illustration Article Center”。这里指建立在MatrixMatrixIA中心。
cleverpig作为此项活动的倡导者。
目前Matrix
IAC链接:http://www.matrix.org.cn/article.shtml
MatrixIA的文档的发布、修改遵循GNU自由文档协议
文章所附源代码的发布遵循GNU通用公共许可证(GNU GPL)。


GNU自由文档协议如下:

GNU FDL:
GNU Free Document License的首字头缩写,这是GNU 自由文档许可证的非正式中文的翻译。不是由自由软件基金会发布的,在法律上不代表使用 GNU FDL的文档的发布术语,──只有GNU FDL的原始英文描述才具有这样的效力。但是我们希望此翻译能帮助说中文的人能更好地理解 GNU FDL。
Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

任何人都可以复制并分发本许可证文档的原始拷贝,但不允许进行修改。

0. 前言

本许可证用于使得手册、教材或其他功能的有用的文档是自由的(“free”) :保证任何人确实可以自由地拷贝与分发经过或未经改动的该文档,无论是否用于商业目的。此外,本许可证保护作者和出版者对他们的作品的信誉,不需要对其他人的改动负责。

这个许可证是一种“copyleft”,这意味着基于遵循 GFPL 文档的衍生作品必须也是同样自由的。这个许可证是为自由软件设计的 copyleft 许可证 GPL 的补充。

我们为了用于自由软件的手册设计了这个许可证,因为自由软件需要自由的文档:一个自由的程序应该跟随着一个给出同样自由的文档一同发布。但这个许可 证不仅仅限于软件的手册,它可以被用于任何文本作品,无论它的主题或它是否作为一本印刷的书籍被发行。我们建议将这个许可证主要用于说明或参考性的文献作 品。

1. 适用性与定义

本许可证适用于包含一个宣布该作品在本许可证下发布的声明的使用任何介质的任何手册或其他作品。这个声明授权在这里声明的条件下,在任何时间、地 点、无版税地使用作品的许可。下述的“文档”指任何这样的手册或作品。任何公众中的一员都是被授予许可的人,这里被称为“你”。如果你在需要版权法律许可 的情况下复制、修改或分发这个作品,你就接受了这个许可证。

文档的“修订版本”意味着包含文档或文档的一部分的的作品,或者是原始拷贝,或者进行了修改和/或翻译成为了其他的语言。

“次要章节”(Secondary Section) 是文档中特定的附录或导言中的节,专用于处理文档的出版者或作者与文档的全部主题(或相关问题)的关系,不包含任何在全部主题之中的内容。(也就是说,如 果文档是一本数学教材,“次要章节”可能不包含任何数学内容。)其中的关系可能是和主题的历史关联,或者是相关问题,或者是关于主题的有关法律、商业、哲 学、伦理或政治关系。

“不可变章节” (Invariant Sections) 是指定的标题的次要章节,这个标题在文档以本许可证发布的声明中被声明为不可变章节。如果一个章节不符合上述的次要章节的定义,它就不可以被声明为不可变 章节。文档可以没有不可变章节。如果文档没有指定不可变章节,则视为没有不可变章节。

“封皮文本”(Cover Texts) 是一些在文档以本许可证发布的声明中被列为封面文本(Front-Cover Text) 或封底文本(Back-Cover Text) 的特定的短段落。封面文本最多 5 个单词,封底文本最多 25 个单词。

文档的“透明”(Transparent) 拷贝是一个机器可读的拷贝,使用公众可以得到其规范的格式表达,这样的拷贝适合于使用通用文本编辑器、 (对于像素构成的图像(image)) 通用绘图(paint)程序、(对于绘制的图形(draw))广泛使用的绘画(draw)程序直接修改文档,也适用于输入到文本格式处理程序或自动翻译成 各种适于适用于输入到文本格式处理程序的格式。一个用其他透明文件格式表示的拷贝,如果该格式的标记(或缺少标记)已经构成了对读者的后续的修改的障碍, 那么就不是透明的。如果用一个图像格式表示确实有效的文本,不论数量多少,都不是透明各式的。不“透明”的拷贝称为“不透明”(Opaque)。

适于作为透明拷贝的格式的例子有:没有标记的纯 ASCII 文本、Texinfo 的输入格式、LaTeX 的输入格式、使用公众可用的 DTD 的 SGML 或 XML,符合标准的简单 HTML、可以手工修改的 PostScript 或 PDF。透明的图像格式的例子有 PNG, XCF 和 JPG。不透明的格式包括:尽可以被私有版权的字处理软件使用的私有版权格式、所用的 DTD 和/或处理工具不是广泛可用的的 SGML 或 XML,机器生成的 HTML,一些字处理器生成的只用于输出目的的 PostScript 或 PDF。

对于被印刷的书籍,“扉页”(Title Page)就是扉页本身以及随后的一些用于补充的页,本重要许可需要出现在扉页上。对于那些没有扉页的作品形式,扉页代表接近作品最突出的标题的、在文本正文之前的文本。

章节“Entitled XYZ”(特殊标题 XYZ) 表示文档的一个特定的子单元,其标题就是 XYZ 或包含 XYZ 其后面插入的文本将 XYZ 翻译为其他语言。(这里 XYZ 代表下面提及的特定章节的名字,比如“Acknowledgements”(致谢), “Dedications”(献给), “Endorsements”(签名), 或 “History”(历史)。) 对这些章节“保护标题”(Preserve the Title) 就是依据这个定义保持这样一个“Entitled XYZ”章节。

文档可能在文档遵照本许可证的声明后面包含免责声明(Warranty Disclaimer)。这些免责声明被认为是包含在本许可证中的,但这仅被视为拒绝担保:免责声明中任何其它的暗示都是无用的并对本许可证的含义没有影响。

2. 逐字地复制

你可以以任何媒质拷贝并分发文档,无论是否处于商业目的,只要保证本许可证、版权声明和宣称本许可证应用于文档的声明都在所有复制品中被完整地、无 任何附加条件地给出即可。你不能使用任何技术手段阻碍或控制你制作或发布的拷贝的阅读或再次复制。不过你可以在复制品的交易中得到报酬。如果你发布足够多 的拷贝,你必须遵循下面第三节中的条件。

你也可以在和上面相同的条件下出租拷贝和向公众放映拷贝。

3. 大量复制

如果你发行文档的印刷版的拷贝 (或是有印制封皮的其他媒质的拷贝) 多于 100 份,而文档的许可证声明中要求封皮文本,你必须将它清晰明显地置于封皮之上,封面文本在封面上,封底文本在封底上。封面和封底上还必须标明你是这些拷贝的 发行者。封面必须以同等显著、可见地完整展现标题的所有文字。你可以在标题上加入其他的材料。改动仅限于封皮的复制,只要保持文档的标题不变并满足这些条 件,可以在其他方面被视为是的逐字的复制。

如果需要加上的文本对于封面或封底过多,无法明显地表示,你应该在封皮上列出前面的(在合理的前提下尽量多),把其它的放在邻近的页面上。

如果你出版或分发了超过 100 份文档的不透明拷贝,你必须在每个不透明拷贝中包含一份机器可读的透明拷贝,或是在每个不透明拷贝中给出一个计算机网络地址,通过这个地址,使用计算机网 络的公众可以使用标准的网络协议没有任何附加条件的下载一个文档的完整的透明拷贝。如果你选择后者,你必须在开始大量分发非透明拷贝的时候采用相当谨慎的 步骤,保证透明拷贝在其所给出的位置在(直接或通过代理和零售商)分发最后一次该版本的非透明拷贝的时间之后一年之内始终是有效的。

在重新大量发布拷贝之前,请你(但不是必须)与文档的作者联系,以便可以得到文档的更新版本。

4. 修改

在上述第 2、3 节的条件下,你可以复制与分发文档的修改后的版本,只要严格的按照本许可证发布修改后的文档,在文档的位置填入修改后的版本,也就是许可任何得到这个修改版的拷贝的人分发或修改这个修改后的版本。另外,在修改版中,你需要做到如下几点:

使用和被修改文档与以前的各个版本 (如果有的话,应该被列在文档的版本历史章节中) 有显著不同的扉页(和封面,如果有的话)。如果那个版本的原始发行者允许的话,你可以使用和以前版本相同的标题。与作者一样,在扉页上列出承担修改版本中 的修改的作者责任的一个或多个人或实体和至少五个文档的原作者 (如果原作者不足五个就全部列出),除非他们免除了你的这个责任。 与原来的发行者一样,在扉页上列出修改版的发行者的名字。保持文档的全部版权声明不变。 在与其他版权声明邻近的位置加入恰当的针对你的修改的版权声明。在紧接着版权声明的位置加入许可声明,按照下面附录中给出的形式,以本许可证给公众授于是 用修订版本的权利。保持原文档的许可声明中的全部不可变章节、封面文字和封底文字的声明不变。 包含一份未作任何修改的本协议的拷贝保持命名为特殊标题“History”(版本历史) 的章节不变,保持它的标题不变,并在其中加入一项,该项至少声明扉页上的修改版本的标题、年、新作者和新发行者。如果文档中没有一个特殊标题版本历史的章 节,就新建这一章节,并加入声明原文档扉页上所列的标题、年、作者与发行者的项,之后在后面加入如上句所说的描述修改版本的项。如果问当中有用于公众访问 的文档透明拷贝的网址的话,保持网址不变,并同样把它所基于的以前版本的网址给出。这些网址可以放在特殊标题版本历史章节。你可以不给出那些在原文档发行 之前已经发行至少四年的版本给出的网址,或者该版本的发行者授权不列出网址。对于任何以特殊标题“Acknowledgements”(致谢) 特殊标题“Dedications” (献给)命名的章节,保持标题的章节不变,并保持其全部内容和对每个贡献者的感谢与列出的奉献的语气不变。保持文档的所有不可变章节不变,不改变它们的标 题和内容。章节的编号或等价的东西不被认为是章节标题的一部分。删除以特殊标题“Endorsements”(签名)命名的章节。这样的章节不可以被包含 在修改后的版本中。不要把一个已经存在的章节重命名为特殊标题“Endorsements”(签名)或和任何不可变章节的名字相冲突的名字。 保持任何免责声明不变。如果修改版本加入了新的符合次要章节定义的引言或附录章节,并且不含有从原文档中复制的内容,你可以按照你的意愿将它标记为不可 变。如果需要这样做,就把它们的标题加入修改版本的许可声明的不可变章节列表之中。这些标题必须和其他章节的标题相区分。

你可以加入一个命名为特殊标题“Endorsements”的章节,只要它只包含对你的修改版本由不同的各方给出的签名–例如书评或是声明文本已经被一个组织认定为一个标准的权威定义。

你可以加入一个最多五个字的段落作为封面文本和一个最多25个字的段落作为封底文本,把它们加入到修改版本的封皮文本列表的末端。一个实体之可以加 入 (或通过排列(arrangement)制作) 一段封面或封底文本。如果原文档已经为该封皮(封面或封底)包含了封皮文本,由你或你所代表的实体先前加入或排列的文本,你不能再新加入一个,但你可以在 原来的发行者的显示的许可下替换掉原来的那个。

作者和发行者不能通过本许可证授权公众使用他们的名字推荐或暗示认可任何一个修改版本。

5. 合并文档

遵照第4节所说的修改版本的规定,你可以将文档和其他文档合并并以本许可证发布,只要你在合并结果中包含原文档的所有不可变章节,对它们不加以任何改动,并在合并结果的许可声明中将它们全部列为不可变章节,而且维持原作者的免责声明不变。

合并的作品仅需要包含一份本许可证,多个相同的不可变章节可以由一个来取代。如果有多个名称相同、内容不同的不可变章节,通过在章节的名字后面用包 含在括号中的文本加以原作者、发行者的名字 (如果有的话) 来加以区别,或通过唯一的编号加以区别。并对合并作品的许可声明中的不可变章节列表中的章节标题做相同的修改。

在合并过程中,你必须合并不同原始文档中任何以特殊标题“版本历史”命名的章节,从而形成新的特殊标题“版本历史”的章节;类似地,还要合并特殊标题“致谢”和“献给”命名的章节。你必须删除所有以特殊标题“签名”(Endorsements)命名的章节。

6. 文档的合集

你可以制作一个文档和其他文档的合集,在本许可证下发布,并在合集中将不同文档中的多个本许可证的拷贝以一个单独的拷贝来代替,只要你在文档的其他方面遵循本许可证的逐字地拷贝的条款即可。

你可以从一个这样的合集中提取一个单独的文档,并将它在本许可证下单独发布,只要你想这个提取出的文档中加入一份本许可证的拷贝,并在文档的其他方面遵循本许可证的逐字地拷贝的原则。

7. 独立作品的聚合体

文档或文档的派生品和其它的与之相分离的独立文档或作品编辑在一起,在一个大包中或大的发布媒质上,如果其结果著作权对编辑作品的使用者的权利的限 制没有超出原来的独立作品的许可范围,称为文档的“聚合体”(aggregate)。当以本许可证发布的文档被包含在一个聚合体中的时候,本许可证不施加 于聚合体中的本来不是该文档的派生作品的其他作品。

如果第3节中的封皮文本的需求适用于文档的拷贝,那么如果文档在聚合体中所占的比重小于全文的一半,文档的封皮文本可以被放置在聚合体内包含文档的部分的封皮上,或是电子文档中的等效部分。否则,它必须位于整个聚合体的印刷的封皮上。

8. 翻译

翻译被认为是一种修改,所以你可以按照第4节的规定发布文档的翻译版本。如果要将文档的不可变章节用翻译版取代,需要得到著作权人的授权,但你可以 将部分或全部不可变章节的翻译版附加在原始版本的后面。你可以包含一个本许可证和所有许可证声明、免责声明的翻译版本,,只要你同时包含他们的原始英文版 本即可。当翻译版本和英文版发生冲突的时候,原始版本有效。

在文档的特殊章节致谢、献给、版本历史章节,第4节的保持标题的要求恰恰是要更换实际的标题的。

9. 许可的终止

除非确实遵从本许可证,你不可以对遵从本许可证发布的文档进行复制、修改、附加许可证或发布。任何其它的试图复制、修改、附加许可、发布本文档的行 为都是无效的,并自动终止本许可证所授予你的权利。然而其他从你这里依照本许可证得到的拷贝或权力的人(或组织)得到的的许可证都不会终止,只要他们仍然 完全遵照本许可证。

10. 本协议的未来修订版本

未来的某天,自由软件基金会 (FSF) 可能会发布 GNU 自由文档许可证的修订版本。这些版本将会和现在的版本体现类似的精神,但可能在解决某些问题和利害关系的细节上有所不同。参见 http://www.gnu.org/copyleft/

本许可证的每个版本都有一个唯一的版本号。如果文档指定服从一个特定的本协议版本“或任何之后的版本”(or any later version),你可以选择遵循指定版本或自由软件基金会的任何更新的已经发布的版本 (不是草案) 的条款和条件来遵循。如果文档没有指定本许可证的版本,那么你可以选择遵循任何自由软件基金会曾经发布的版本 (不是草案)。

如何使用本许可证

要使用本许可证发布你写的文档,请在文档中包含本许可证的一个副本,并在紧接着扉页之后加入如下版权声明与许可声明:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
如果你有不可变章节、封面文本和封底文本,请将“with…Texts.”一行替换为:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
如果你有不可变章节而没有封皮文本或上述三项的其他组合,将两个版本结合使用以满足实际情况。

如果你的文档包含有意义的程序示例代码,我们建议您同时将代码按照您的选择以自由软件许可证发布,比如 GNU 通用公共许可证。以授权它们作为自由软件被使用。


位于分类[ 新闻视点 ] 保存到del.icio.us评论[3]

有感于李连杰壹基金计划

2006年12月28日 10:18 位于分类[ 新闻视点 ]   作者: cleverpig

有感于李连杰壹基金计划

作者:cleverpig





李连杰壹基金计划1——手机捐款内容如下(全文见红十字总会网站

    如果您愿意捐1或2元,可以发送短信1或2到999309
(999309—谐音是“救救救,善缘久”);如果您愿意每月捐款5元或10元或15元,可以发送短信MY5或MY10或MY15到999309。

李连杰壹基金计划2——永久义工函内容如下(全文见老徐博客红十字总会网站):

    先生/女士:  
    您好!通过积极拼搏与不懈努力,您在事业上取得了令人仰慕的成就。同为成功人士,我们深知,你我今天的成就与广大民众的支持与关爱是分不开的。面对这份厚爱,我们理应慷慨伸出援助之手,尽绵薄之力,共同帮助身陷困境的朋友。

    诚邀您成为中国红十字会“李连杰壹基金计划”的永久义工。本计划的宗旨是:向有心灵心理创伤和疾患的人士提供各种形式的帮助;向在各种自然灾害和突发事件中遭受人身创伤的人士提供尽可能的人道援助。

    如果您有意参与,请务必在下面回执中签名,承诺每年向中国红十字会“李连杰壹基金计划”捐款999元人民币,并留下联系方式。善款请通过邮寄或转账方式捐赠。

捐助金钱是救助身处困境者的灵丹妙药?

   
    在有关仁爱的看法上,世界上的两大思想——儒教和基督教有着显著的共同点——那就是用“心”去“爱”人:

    儒教主张仁爱。在《论语~颜渊篇》中,孔子的学生樊迟问什么是仁,孔子说仁就是“爱人”(爱别人)。这条主张也正是基督教的一条重要主张:在圣经《约翰福音》第13章第34节中,耶稣基督说:“我赐给你们一条新命令,乃是叫你们彼此相爱;我怎样爱你们,你们也要怎样相爱。”

    《论语~雍也篇》云:“夫仁者,己欲立而立人,己欲达而达人。”意思是:有仁德的人,自己希望树立的也希望别人树立,自己希望达到的也希望别人达到。圣经《马太福音》第7章第12节则有类似的教诲:“无论何事,你们愿意人怎样待你们,你们也要怎样待人,因为这就是律法和先知的理。”
 
    在《论语~阳货篇》中,孔子说能做到“恭、宽、信、敏、惠”(恭敬、宽厚、信实、明智、使人得益)的人是仁的。圣经《加拉太书》第5章第22节则有类似的话:“圣灵所结的果子,就是仁爱、喜乐、和平、忍耐、恩慈、良善、信实、温柔、节制。”

    《孟子~告子上》云:“恻隐之心,仁也。”意思是:对人有同情心,是仁的。圣经也提倡同情心。《马太福音》第5章第7节写道:“怜恤人的人有福了,因为他们必蒙怜恤。”

    看完上面的文字,我们明白了什么才是博爱,而里面没有任何金钱的味道。所以金钱并不是衡量爱心的砝码,而且金钱不是也不可能成为传递爱心的载体。爱心的传递依靠这社会每位成员的行动(不单单是经济上的支持)。面对现实中已经发出霉臭气的“捐款”行动,我感到很无奈,当金钱成为了社会成员之间相互救助搀扶的工具、手段时,你我之间心中的博爱却不应该被金钱而掩住,戴上那冰冷面具。这又让我想到每逢佳节时兴的看望军烈属孤寡老人的所谓爱心活动,尽管金钱是目前最为快捷的助人方式,但通过送礼物、金钱、几句问候就能温暖老人一年来冰冻的心吗?



    我支持李连杰的爱心行动,但不喜欢捐款的形式,它让人的感情更加形式化。我更愿意在生活、工作中充满爱心、自由地去爱别人,我认为这才是博爱,才是世界的推动力。


位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

平安夜里上演的Google涂鸦表演

2006年12月25日 12:31 位于分类[ 新闻视点 ]   作者: cleverpig

Holiday Doodle
平安夜登场亮相的Google Holiday Doodle 是两只可爱的袋鼠,可能一对母子,她(他)们一起在玩彩带,其乐融融,童心未泯,给节日增添许多了快乐祥和:


1: Happy Holidays from Google
2: Happy Holidays from Google
3: Happy Holidays from Google
4: Happy Holidays from Google
5: Happy Holidays from Google

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

Matrix Club@Flickr成立

2006年11月16日 13:06 位于分类[ 新闻视点 ]   作者: cleverpig

Matrix Club@Flickr成立


Matrix Club@Flickr:全球Matrixer的photo汇聚、Matrixer个人show俱乐部

Matrix志向:
做全球最好的中文开源社区,如果你有任何意见都可以在这里提出,我们会欣然接受并感激不尽!

加入条件:
1.喜爱Matrix自由、开放的文化,有持久化的热情。
2.有一台数码相机,喜欢摄影,有网络环境能访问Flikr
3.需要有Flickr帐户,没有的在这里注册

欢迎光临:
本人的Flickr
Matrix Club@Flickr

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

冒"国家财政部"之名夺钱财 "领取房屋退税"是陷阱

2006年11月14日 14:33 位于分类[ 新闻视点 ]   作者: cleverpig

千万别信什么房屋退税的骗局

    “请尽快办清手续,领取您的房屋退税,过期不候。”前天,家住闵行某小区的管先生突然接到一个自称“国家财政部”的来电通知。他与所谓的金融出纳科联系后,发现对方设了骗局。记者昨天致电财政部,获悉所谓的房屋退税子虚乌有。前天下午3时许,管先生在家突然接到一个电话,一个陌生女子在电话那头称:“这里是财政部,您收到我部寄出的房屋退税办理通知后,为什么还不来办理?”该女子称,今年6月财政部出台了一项房屋退税的新政策,当月即以信件形式通知了全国各地的每名商品房业主。

    “天天开信箱,没收到过这封信。”管先生不记得媒体上刊发过该女子所说的消息。这时,该女子报出一个退税编号,随后提供了010—5128××××的联系电话,请管先生与财政部“下属的金融局金融出纳科”联系。管先生拨通了该电话,接听电话的男子听他报出退税编号后表示,马上会把38620元税款转入管先生的银行个人账户,但闭口不提计算依据。管先生回忆说,该男子问是否有银行卡可接受转账,又反复询问卡内的余额。随后,该男子要管先生到家附近的一台ATM机上插入银行卡,输入他提供的一长串数字验证码后,再输入一个4位数字,以确认此卡能否转账。

    “卡内余额与你转账有什么关系?那串数字看起来像一个账号,如果那样操作,我卡里的钱不就转进你的账户了吗?”管先生追问对方,该男子推说稍后再来电,匆忙挂断了电话。

    记者昨天中午连续拨打了“财政部金融局金融出纳科”的电话,接通后传来“暂时无法接通”的提示音。记者注意到,对方使用的是虚拟号码。这种虚拟号码具有将打到该号码上的电话全部呼转到其他电话上的功能,不受地区限制。

    记者随后拨打了国家财政部的电话总机,接听的工作人员表示,该部无金融局这一机构。她解释说,近来有许多北京及外地市民向财政部咨询“房屋退税”的事宜,而财政部并未在6月份出台房屋退税政策,这是一些骗子打着财政部的旗号实施诈骗。

    另据了解,8月31日,北京的李女士也接到了类似的电话。对方当时自称是“国家税务局”的工作人员,说李女士两年前买的房子可退7600多元购置税。按对方留下的电话,李女士与“国家税务局财务科”联系后,按对方的要求在ATM机上操作,结果划给了对方4万多元。

    针对以上骗局,中国消费者协会特别提醒广大消费者,不要相信“退税”的短信或电话、邮件等通知。如遇类似通知,可通过114查号台查询对方提及的政府机关或银行的办公电话核实。一旦轻易相信对方,存款将被转入不法分子的账户。

位于分类[ 新闻视点 ] 保存到del.icio.us评论[0]

电子图书古登堡计划DVD2006年版

2006年11月13日 08:43 位于分类[ 新闻视点 ]   作者: cleverpig

中文名称:电子图书古登堡计划DVD2006年版
英文名称:Gutenberg DVD 200607
资源类型:ISO
发行时间:2006年07月
地区:美国
语言:英语
简介

介绍
古 登堡计划(Project Gutenberg)是一个以自由的和电子化的形式,基于互联网
,大量提供版权过期而进入公有领域书籍的一项协作计划。最初是在1971年7月由 Michael Hart发起的。它是世界上第一个数字图书馆,所有书籍的输入都是由志愿者来完成的,并将这些书籍文本化。
到2003年10月,古登堡计划以及有超过10000册的在线书籍
,其志愿者人数也超过了1000名,每月有350本可用的新书。这些书还以DVD的形式出售。Michael希望到2015年可用书籍能达到一百万本。
古登堡计划首先将书籍通过扫描数字化,在交由软件文本化
,然后交由两个不同的志愿者校对两次。如果原来的书籍质量很差,例如书籍太古老,那么还会通过手工进行逐词的录入。
最 初的书籍都是英文的,到目前已经有超过25种语言的书籍
。古登堡计划是一个完全志愿性的组织,这一点上和维基百科很相似。古登堡计划的目标是保证未来能免 于贷款和其他资金的控制,不受短暂的政治或文化优先性的影响,避免任何来自政治家或经济利益集团的压力。捐赠只被用来购买设备和补给品,大多数是计算机和 扫描仪。

电驴下载:http://lib.VeryCD.com/2006/04/17/0000099267.html
BT种子:http://snowy.arsc.alaska.edu:6969/
md5:62de77c257dbe0e571f33cd957b79114

详细情况及文件目录请访问 http://www.gutenberg.org/wiki/Gutenberg:The_CD_and_DVD_Project


位于分类[