【zz】孤独是你的必修课 - [转载文集]
生活不可能像你想象得那么好,但也不会像你想象得那么糟。我觉得人的脆弱和坚强都超乎自己的想象。有时,我可能脆弱得一句话就泪流满面,有时,也发现自己咬着牙走了很长的路。——莫泊桑
1.
但以这样的一句话作为开头,看高木直子的《一个人住第五年》的时候还在国内,那时觉得那样的生活根本不可能发生在我身上,连吃饭都要人陪着的我无法忍受一个人吃饭的感觉。所以后来,有很长的一段时间里我都没能适应一个人吃饭,一个人旅行,现在想想其实也没什么,这个世界运转速度那么快,没有人会在意你是不是一个人。以至于后来一个朋友问我是不是也得了社交恐惧症,我笑笑,其实不是,只是自己慢慢地变得懒了,懒得去经营一份感情,至于朋友,有那么几个就足够了,有些人天天在一起,也不见得是朋友。
好像这样久了,倒是会忘记开始遇到的困难,渐渐地变成自己生活的旁观者,看着生活平静地流淌。都说人是慢慢成长的,其实不是,人是瞬间长大的,就像是突然间沉淀一般,突然不会谈恋爱了或者说不想谈恋爱了,一个人生活单一却也不会觉得无聊,即便很多时候还是会迷茫却也不会觉得烦躁了。
去年的今天我在不一样的城市,背着不一样的书包,留着不一样的发型,走着不一样的路,想着不一样的事情,有着不一样的心思,爱着不一样的人。谁说改变需要十年呢。
2.
身边的牛人倒是不少,像是神抵一样的存在,我也只是羡慕想着反正自己也不会变成那样的人,直到有一天一个学长跟我聊起来,才知道原来他也有看不进去书的时候也有写论文写到想撞墙的时候,我们都忘了他们是用怎么样的一个代价才换取来了这样的一个人生。他说,如果你想要去实现梦想,孤独是你的必修课。如果不能沉下心来,就没有办法去实现它,因为那绝对不是一件容易的事情,孤独能让你更坚强,你必须找到自己的生活节奏。
有一个朋友喜欢每天喝一点酒,看一部电影然后准时睡觉;住在旁边的英国人神出鬼没有的时候早上才睡有的时候天刚黑就睡了;隔壁楼的一个男生每天天不亮就起来跑步,往往那个时候我才刚打算睡。
最近迷上一个人到处走,算不上旅行只是周围的城市走一遭,倒也不会花上太多时间准备,提起包就走了。我不会带上相机只是有兴致了拿出手机拍一拍,音乐倒是我走到哪里都不能丢的东西,只有音乐,能让看似漫长的等待变成曼妙的旅程,似乎自己跟整个世界都没有关系,只想当一片没有名字的云,徜徉在不知道名字的风景里。
正如上面说的,曾经无法想象一个人吃饭的感觉,同样的,我也不会去想象一个人去坐公交车是什么样的感觉。谁知道没过多久我就习惯了一个人坐车去学校,我离学校比较远所以每次上车的时候还没有多少人,坐最后的几排。有的时候看着窗外发呆,什么都想却又不知道自己在想什么。
我们都会找到自己的生活节奏,然后沉溺其中无法自拔。
3.
很长一段时间里我都没有去书店,觉得那种“每个星期读一本书”对于我来讲是太遥远的东西。直到有一天我陪朋友去书店,他是一个买书就不会停的人,我也就跟着买了几本。回到家里看微博人人又觉得心里空拉拉的,索性就拿起书来看,也是在那一天我才发现,其实每个星期看一本书没那么难,那天我一下子把书看完,才觉得这样子的生活是充实的。
要么读书,要么旅行,身体和灵魂,必须有一个在路上。
我告诉自己现实容不得你拖延,拖延只会让我变得更焦虑而已,所以刚开始的时候我规定自己每天提早上床半小时,看上几十页书,很快就变成习惯了。有的时候我不得不感叹如果真的去做一件事情的话,那么这件事情没有那么难。当你真的想要做一件事情的时候,整个世界都会来协助你,就是这种感觉。
一个骑过川藏线的朋友说,只要出发,就能到达,你不出发,就哪里也去不了。如果你不能沉下心来,就什么也做不到。出发永远是最有意义的事,去做就是了。一本书买了不看只是几张纸,公开课下了不看也只是一堆数据,不去看就没有任何意义,反而徒增焦虑,行动力才是最关键的。
4.
你也许也是这样,当你渴望找个人交谈的时候,你们却没有谈什么.于是发现有些事情是不能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而有些事情即使告诉了别人,你也会马上后悔。那么最好的办法就是静下来,真正能平静自己的只有自己。
没有人能免得了孤独,与其逃避它不如面对它。孤独并不是一件那么糟糕的事情,与嘈杂相比,一个人生活倒显得自得地多,倒也可以变成一种享受。或许至少需要那么一段时间,几年或几个月,一个人生活,不然怎么能找到自己的节奏知道自己想要什么。这是属于你自己的东西,是你的一部分,你听音乐时,坐地铁时,一个人走在马路上时,它就会流淌出来,让我觉得这个世界似乎在以另外一种形式存在着,我能够清晰地听到自己。
我们都生活在一个不那么如意的世界,当乌云密布我们就摇曳,但阳光总有一天会到来,等阳光照到你的时候,记得开出自己的花就行了,那个你与生俱来的梦想。有的时候梦想很远,有的时候梦想很近,但它总会实现的。我想一个人最好的样子就是平静一点,哪怕一个人生活,穿越一个又一个城市,走过一个又一条街道,仰望一片又一片天空,见证一次又一次别离。
即便世界与我为敌,只要心还透明,就能折射希望。
文:枚五迷Apache组织一级开源清单
1. HTTP Server:
HTTP Server是目前最流行的HTTP服务器软件之一。其优势主要在于快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器 中,完全免费而且完全源代码开放。如果需要创建一个每天有数百万人访问的Web服务器,Apache HTTP Server会是最佳的选择。
2. Abdera:
Apache Abdera是Atom联合协议(Atom Syndication)和Atom发布(Atom Publication)协议的开源实现, Abdera项目的目标是建立一个功能完备,高效执行的Atom联合协议和Atom发布协议规格,它是一个由apache软件基金会大力推动发展的项目, 该项目目前尚处于孵化阶段,尚未得到ASF的完全认可。
3. ActiveMQ:
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。其优势在于速度快,支持多种跨语言的客户端和协议,同时充分支持JMS1.1和J2ee1.4的企业集成模式和许多先进的功能。
4. Ant:
Apache Ant的全名是"Another Neat Tool",是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,用于开发 Java 程序。用 Apache Ant 进行 Java 程序项目开发或其它开源 Java 程序项目,已经成了 Java 界的一个共识。Ant有以下的优点:1.跨平台性。Ant是纯Java语言编写的,所以具有很好的跨平台性。 2.操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。由于Ant构建文件是XML格式的文件,所以很容 易维护和书写,而且结构很清晰。3.Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。
5. APR:
APR任务的目的是建立和维护一个软件库以提供一个具体平台下的一致接口。APR提供了一组API,映射到底层操作系统。如果底层OS不支持某个特别的函数,APR自己会提供一个替代品。如此一来,APR可以确保程序的跨平台可移植性。
6. Archiva:
Archiva 是一款远程资源库管理软件。它能够与Maven,Continuum和ANT等构建工具完美结合。Archiva提供的功能包括:远程 Repository代理,基于角色的安全访问管理,Artifact分发、维护、查询,生成使用报告,提供基于Web的管理界面等。
7. Beehive:
Beehive 是一项开源软件计划,为基于J2EE和SOA的应用提供一个易用的跨容器编程模型和应用框架。Beehive计划包括:支持JSR 175元数据注释,用于构建和使用J2EE组件的Java 控件框架,简化的Web 服务编程框架,以及用于创建基于Web的用户界面和应用的、基于 Struts的Java 页面流技术.
8. Camel:
Camel 是一个开源的企业应用集成框架。它采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,比如HTTP、 ActiveMQ、JMS、JBI、SCA、MINA或CXF Bus API。这些模块是采用可插拔的方式进行工作的。Apache Camel拥有小巧、依赖少等特点,能够很容易将其集成在各种Java应用中。
9. Cayenne:
Cayenne 是一个强大而易于掌握的Java ORM 框架。它是开源且完全免费的。Cayenne 提供了 Java 对象到关系型数据库的持久化映射管理,单方法调用查询和更新(包括细粒度的更新所有被修改的对象),无缝隙的把多种数据库集成到单一虚拟数据源中。 Cayenne 已被成功部署在高负载的生产环境中
10. Cocoon:
根 据Apache官方定义,Cocoon是一项XML发布框架。它允许你定义XML文档和文档的转换,并最终生成你所选择的表示形式,例如HTML, PDF, SVG, VRML等等。在某种意义上,可将Cocoon视为一个基于XML的内容管理系统,因其提供了一种机制来描述Web信息项目(内容)的结构和语义、这些项 目的关系、它们如何随着时间的推移而发生改变(逻辑)以及在请求时如何向用户呈现(它们的样式以及格式)。另外,Cocoon使你能够在XML文件中加入 处理逻辑,从而使XML管道具备动态的特性。
11. Commons:
Apache Commons项目专注于开发可重用的Java组件,由3部分组成:Commons Proper-可重用Java组件库,Commons Sandbox-Java组件开发工作空间,Commons Dormant-sandbox中不活跃的项目存储库。Apache Commons使每个组件尽可能少的依赖其他的库,而不是需要将依赖的库依次部署,另外,Commons组件的接口尽可能的保持不变,这样可以在实现这些 组件的时候针对接口进行开发,确保兼容性。
12. Apache Continuum:
Apache Continuum是适合企业用的连续集成服务,它有诸多特点:原子构建,发布管理,基于角色的安全性,集成了流行的构件工具和资源控制管理系统。无论你 是有一个集中构建团队还是想控制开发项目的发布,Continuum可帮助提高质量和维护一个一致的构建环境。
13. CouchDB:
CouchDB 是一个"面向文档"的数据库,底层结构是为"存储"(storeage) ,以及多个"视图索引"(view indexs)。 "储存"用来储存文件, "视图索引"用于查询处理。CouchDB 能够适应非常广泛的应用场景,在某些偶尔连接网络的应用中,我们可以用CouchDB暂存数据,随后进行同步。也可以在Cloud环境中,作为大型的分布 式的数据存储。CouchDB提供了基于 HTTP的API的访问方式,这样,保证了所有的常见的语言都可以使用CouchDB。
14. CXF:
Apache CXF提供了一套创建SOA服务的基础设施框架,用户由此可以按照自己喜欢的编程模式,利用Apache CXF提供的简单易用工具(包括Maven插件),创建适合SOA环境的任何WEB服务,包括SOAP/HTTP服务及REST/HTTP服务。 Apache CXF可扩展的插拔式架构不但支持XML消息格式和HTTP通信协议,而且还支持基于其他通信协议如IIOP和非XML消息格式如CORBA CDL或JSON。
15. Directory:
Apache Directory项目提供完全用Java写的目录方案。包括一个经过了开方小组认证的目录服务器,和基于eclipse的目录工具。
16. Excalibur:
Excalibur是Apache软件基础的一个开源软件项目,其主要产品是一个由Java写成的,名字叫做Fortress(要塞) 的轻量级的可嵌入式反向控制容器。
17. Felix:
Apache Felix是一个OSGi 4版本规范的Apache实现,它包含OSGi框架和标准服务,同样提供和支持其它有兴趣的OSGi相关的技术。最终的目标是提供一个完全兼容的OSGi 框架和标准服务的实现,并支持围绕这个技术的一个社区。Felix当前实现了OSGi版本4规范的大部分,但是为了完全兼容附加的工作是必须的。尽管这 样,Felix提供的OSGi框架功能是非常稳定的。
18. Forrest:
Forrest是一个把来自各种不同的输入数据源转换成用一种或多种输出格式(比如HTML,PDF等)来统一显示的发布系统。它基于Apache Cocoon并分离了内容与内容结构,不仅可以生成静态的文档也可以当作一个动态的服务器。
19. Geronimo:
Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器,它集成了众多先进技术和设计理念。Geronimo 最初的设计类似于 JBoss,JBoss 是一个经典的专注于 JMX 的服务器,专注于 JMX 的服务器往往因太过静态和高度耦合而告终。因此,与 JBoss 不同的是,Geronimo 项目使用现有的高质量开放源代码企业组件,例如 Tomcat、Jetty 和 OpenEJB。
20. Gump:
Gump 是Apache组织自己也使用的一个持续集成工具,它以Python写成,完全支持Apache Ant、Apache Maven等等软体组建工具。Gump特殊的地方在于,它根据以上软体设计计划最新版本来编译,组建软体。这让Gump可以在源码进入版本控制系统后几个 小时内,就侦测到软体可能发生的不相容点。
21. Hadoop:
Hadoop 是Apache软件基金会所研发的并行运算编程工具和分布式文件系统,与MapReduce以及Google档案系统的概念十分类似。 Hadoop原本是Apache Lucene下的子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发 和运行处理大规模数据的软件平台。
22. Harmony:
Apache Harmony是Apache软件基金会的Java SE项目。这个项目的目标是营造一个大型的、健康的社区,该社区定位于:一个兼容的、独立的Java SE 5 JDK的实现,并根据Apache License v2发布; 一个由社区开发的模块化的运行时(包括Java虚拟机和类库)体系结构。该项目期望支持尽可能多的不同平台。一个特定的平台是否被支持,主要取决于参与者 能在这个平台上定期运行测试、报告编译安装的情况,以及为该平台清除BUG,等等。
23. HttpComponents:
HttpComponents 就是之前的HttpClient项目,改名字是因为它已经从一个单纯的http客户端组件转变成了客户端服务器通吃的组件。 HttpComponents项目包含HTTP协议的几个方面的底层库。在服务器或客户端通讯有高级需求的用户可能发现,对于建构定制的HTTP协议服 务,这是一个十分有用的工具集。
24. Ibatis:
Ibatis 是apache的一个开源项目。使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,ibatis与通过Hibernate实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL语句,而ibatis 则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。
25. Incubator:
Apache Incubator是希望将某个外部工程变为完全独立的Apache 软件基金会工程的跳板。目前,来自外部组织的代码以及外部已有工程通过Incubator加入Apache组织。Apache Incubator有两个主要的目标: 1. 确保所有的工程符合Apache基金会规则;2.在apache指导的前提下,开发新的社区;
26. Jackrabbit:
随 着内容管理应用程序的日益普及,对用于内容仓库的普通、标准化API的需求已凸现出来。Content Repository for Java Technology API (JSR-170) 的目标就是提供这样一个接口。JSR-170 的一个主要优点是,它不绑定到任何特定的底层架构。例如,JSR-170 实现的后端数据存储可以是文件系统、WebDAV 仓库、支持 XML 的系统,甚至还可以是 SQL 数据库。此外,JSR-170 的导出和导入功能允许一个集成器在内容后端与 JCR 实现之间无缝地切换。Apache Jackrabbit 是由 Apache Foundation 提供的 JSR-170 的开放源码实现。
27. Jakarta:
Jakarta项目是在Apache软件基金会营运的公开源代码软件开发项目之一,它开发着面向编程语言Java的程序库、框架等,该项目又包括了很多子项目。Tomcat、Ant、Struts等等現在是Apache下的开源项目,也曾是Jakarta的关联项目。
28. James:
Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,采用纯Java开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。James也是一个邮件应 用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户 信息存储部分,可以选择在文件、数据库或其他介质中保存。James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此在项目中的应用 日益广泛
29. Labs:
Apache Labs是Apache软件基金会的创新实验室。在这里会员可以试验新想法,该项目的目标是在不加重Apache社区负担的前提下提供必须的资源以推动和维持技术革新力量的发展。
30. Lenya:
Apache Lenya 是Java的开源内容管理系统(Content Management System,CMS)。它的实现基于标准的技术比如XML与 XSLT, Lenya提供了任何一个需要CMS的组织所需要的功能,并且不像商业软件那样令用户感到难以采用或者因为预算的原因限制了某些功能。它毫无疑问值得用户 去关注,而且应该引起许多小型或中型的机构的注意。如果使用了现有的XML文档技术,或者找寻更好的方法来管理Web站点或其它文档库,那么Lenya应 该是一个很好的选择。
31. Logging:
Apache Logging Services项目创建并维护着与免费对大众发布的日志应用有关的开源软件。此项目的产品包括三个日志框架:应用于Java的log4j,应用于C++ 的log4cxx和应用Microsoft.NET框架的一个日志视图和分析工具:Chainsaw。此项目也推动着log4php孵化器。
32. Lucene:
Lucene 是一个高性能的基于 Java 的全文索引/检索引擎,它不是一个完整的全文索引应用,而是一个用 JAVA 写的全文索引引擎工具包,可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。Lucene提供了一个简单但强大的应用程式接口,能够做全文索 引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是最近几年内最受欢迎的免费Java资讯检索程 式库。
33. Maven:
Maven 是一个基于 Java 的项目管理工具。Maven 已经为你准备好了一个开发项目所必需的流程考虑。它从项目的结构、编译、集成、测试和针对于这个项目的信息一体化发布的角度形成了一个项目开发环境。
34. Mina:
MINA (Multipurpose Infrastructure for Network Applications) 是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它通过Java NIO,在不同的传输协议比如TCP/IP和UDP/IP上提供了抽象的,基于事件驱动的异步API。
35. MyFaces:
MyFaces 是 JSF (Java Server Faces) Web框架 (JSR 127)的一个实现。对JSF的框架实现还有Sun公司推出的JSF参考实现(JSFRI)。JSF作为一种新的基于MVC模型的web应用框架技术,在 概念和特征方面,尤其是组件方面,超过了著名的Struts框架。而MyFaces是Apache软件基金的一个项目,它实现了JSF框架。与JSFRI 相比,MyFaces进行了一些非常有意义的扩展,例如支持文件的上传和下载等。
36. ODE:
Apache ODE(Orchestration DirectorEngine,编制指导引擎)是基于Java 的开源Web服务编配引擎,它可以使开发人员根据以BPEL XML语法写成的过程描述来编配Web服务。ODE于2007 年7 月18 日从Apache 的孵化器中诞生成为一个顶级项目。它的主要功能就是执行使用BPEL 描述的业务流程,实现业务流程自动化,它支持长期运行和短期运行的过程。与另一著名的开源BPEL引擎ActiveBPEL相比, ODE的许可证是Apache 2.0,而ActiveBPEL则是GPL前者对于商业用途较后者更为友好。
37. OFBiz:
OFBiz 是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分 布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的Web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。
38. OpenEJB:
Apache OpenEJB是一个嵌入式EJB3.0的轻量级实现,它可作为标准的应用服务器使用,也可以嵌入到Tomcat, JUnit, TestNG, Eclipse, IntelliJ, Maven, Ant以及其它任何IDE或应用程序中。OpenEJB 被用于Apple的WebObjects与Apache的Geronimo应用服务器中。
39. OpenJPA:
OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。OpenJPA 可以作为独立的持久层框架发挥作用,也可以轻松的与其它 Java EE 应用框架或者符合 EJB 3.0 标准的容器集成。除了对 JPA 标准的支持之外,OpenJPA 还提供了非常多的特性和工具支持让企业应用开发变得更加简单,减少开发者的工作量,包括允许数据远程传输/离线处理、数据库/对象视图统一工具、使用缓存 (Cache)提升企业应用效率等。
40. Mod_perl:
Mod_perl 将强大的Perl编程语言和Apache HTTP服务器结合在一起,你可以用Perl管理Apache,请求或响应网页或者做更多事。Mod_perl为你提供了一个嵌入在Web服务器中的持久 的Perl解释器。它使得你可以避免开启一个外部解释器的过重负担,也可以减少Perl开启时间,给予你超快的动态内容。即使你想进行Perl交流,这里 有成百上千为Mod_perl而写的模块,这些模块都来自于持久数据库连接,用来使系统模块化,用来完成Xml内容传递系统。
41. POI:
Apache POI是Apache软件基金会的开放源码函数库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能,通过POI可以让你使用Java来读写MS Excel ,Word、PowerPoint文件。
42. Portals:
Portal 是基于WEB的应用程序,它将不同资源进行整合并展现给用户,提供包括内容聚合、单点登陆、个性化制定和安全管理等服务的基础Web平台。 Protal 技术的出现,带给人们解决用户定制这个问题的曙光。Portal技术强调以用户为中心,重视流程及整体工作效能,提供统一登陆界面,实现信息的集中访问。 Portal 创建一个提供支持信息访问、传递,以及跨组织工作的集成化商务环境。
43. Qpid:
Apache Qpid (Open Source AMQP Messaging) 是一个跨平台的企业通讯解决方案,实现了高级消息队列协议。提供了 Java、C++ 两种服务端版本以及 Java、C++、.NET、Python和Ruby语言的客户端。
44. Roller:
Roller 是一个全功能的多用户博客平台。采用Java语言开发,设计得比较精巧,源代码是很好的学习资料。它支持Weblogging应有的特性如: 评论功能,所见即所得HTML编辑,TrackBack,提供页面模 板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。
45. ServiceMix:
ServiceMix 是一个建立在JBI (JSR 208)语法规则和APIs上的开源ESB(Enterprise Service Bus:企业服务总线)。它包括一个完整的JBI容器,其主要是由标准化信息服务和路由器,JBI管理MBeans,JBI配置单元和Ant任务(安装组 件和管理容器)组成。新版本中集成了BPEL,增加了一个基于router的高性能目录,XPath转换引擎,Drools新规则,对RSS的支持与 JCA的完全结合等等。
46. Sling:
Sling 是第一个使用JSR-170内容存储规范(Java Content Repository)的Web框架。Sling支持OSGi,因此获得了所有OSGi的优势。在Sling中,并非是管理服务器“背后”的文件和文件 夹,所有的管理和开发都是通过REST类型调用来完成的。从其文档中可看出,Sling服务器可以被配置为仅使用curl命令来上传和操作该服务器。支持 上传服务器端的可执行脚本。通过基于Web的管理终端,开发者能够控制组成Sling服务器的OSGi程序块,其它部分则被加载到其嵌入式Apache Felix OSGi服务平台上。
47. SpamAssassin:
SpamAssassin 是目前最好的、最流行的开源反垃圾邮件软件之一。它是一个邮件过滤器,使用了多种反垃圾邮件技术,如:文本分析、贝叶斯过滤、DNS黑名单和分布式协同过滤数据库等。SpamAssassin最新版本SpamAssassin 3.2.5。
48. Stdcxx:
Apache 的C++ 标准库项目(代号stdcxx)是一个集算法,容器,迭代器等等功能的C++类库。STDCXX的目标是提供一个免费的ISO/IEC 14882国际标准的C++ ,在所有主要的硬件实现,操作系统和编译器提供开放源码的,使源代码具备可移植性和一致性的标准类库。Stdcxx另外一个目标是在每个平台上实现最大程 度的执行效率。
49. Struts:
Struts 是Apache基金会Jakarta项目组的一个开源项目,它采用MVC模式,能够很好地帮助Java开发者利用J2EE开发Web应用,减 少开发Web应用的时间,提高产品的重用度。Struts主要是采用Servlet和JSP技术来实现,它把Servlet、JSP、自定义标签和信息资 源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式。
50. Synapse:
Apache Synapse是一个易于使用、轻量级的XML与Web Services管理和集成中间件,可用于搭建SOA和ESB的基础平台。Apache Synapse支持多种标准包括:XML、XSLT、XQuery、XPath、SOAP、POX/REST、HTTP/S、JMS、、FTP、 SFTP、WS-RM、WS-Addressing、SMTP等,Synapse还提供非常多的开箱即用实用功能而不需要编程,但是也可以利用一些常用的 语言如Java、JavaScript、Ruby和Groovy对它们进行扩展。
51. Tapestry:
Tapestry 是一种基于Java的Web应用程序框架。Tapestry采用了组件的概念。程序员可应用现有的组建或自定义应用程序相关的组建来构建 应用程序。与现有的其他Web应用程序框架相比,应用Tapestry会让程序员从烦琐的,不必要的底层代码中解放出来。
52. Tiles:
Apache Tiles是一个JavaEE应用的页面布局框架。Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局。布局由可以复用的多个块组成,每个页面可以有选择性的重新定义块而达到组件的复用。
53. Tomcat:
Tomcat 是一款开源的Serlvet容器,它是Apache基金会一个核心项目,由Apache、Sun和其它一些公司共同开发而成。由于有了Sun 的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务 器的功能:处理Html页面。但是它处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静 态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可,十分方便。
54. Turbine:
Turbine 是一个基于Servlet的框架且允许有经验的Java开发人员去快速创建Web的应用程序。Turbine允许你个性化Web站点,允许 登录用户受限制地访问你的应用程序部分。Turbine是一个成熟的、构建良好的框架,可以用来作为很多其它项目的基础。Turbine对于面向服务架构 的应用程序开发是一个极好的选择。Turbine提供的一些功能包括一个安全管理系统、一个调度服务、XML格式的校验服务器和一个XML-RPC的 WEB服务。对于你的应用程序创建特定服务是一个简单的任务。基于表示层技术的Turbine核心没有任何依赖。Turbine支持JSP以及 Velocity。
55. Tuscany:
Apache Tuscany 提供全方位的开源SOA基础架构以利于开发, 组装, 发布,管理构件式应用服务(Composite Applications)及数据处理。 该项目实现服务构件体系(SCA: Service Component Architecture)和服务数据对象(SDO: Service Data Objects)等OASIS OpenCSA标准. Tuscany提供开放式可扩展的运行环境以支持现在和将来的各种技术,这将解除应用程序对底层技术的依赖和偶合,使得跨技术网络平台的组装成为可能并大 大简化。
56. Velocity:
Velocity 是一个基于Java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由Java代码定义的对象。 当Velocity应用于Web开发时,界面设计人员可以和Java程序开发人员同步开发一个遵循MVC架构的Web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由Java程序开发人员关注业务逻辑编码。Velocity将Java代码从Web页面中分离出来,这样为Web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止Web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。
57. Wicket:
Apache Wicket 是几年前引入的创新型 Java Web 应用程序框架。它通过彻底地分离开发人员与设计人员的角色,帮助简化 Web 应用程序开发。它将允许您从视图层中删除逻辑代码,消除使用 JavaServer Page (JSP) 的需求,提供以简单传统 Java 对象(Plain Old Java Object,POJO)为中心的开发模式,以及消除使用 XML 和其他配置文件格式的大量需求。这种简单的纯 Model-View-Controller (MVC) 开发方法与缺少 XML 配置文件的简单开发流程结合在一起,使 Wicket 成为一个功能强大的令人愉快的开发框架。它解决了多个开发挑战,允许您将注意力更多地集中在功能上,而不必过多地关注应用程序配置。
58. Web Service:
从 表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序,我们把调用这个 Web service 的应用程序叫做客户。Web services其实是建立可互操作的分布式应用程序的新平台,Web service平台定义了一套标准,规定了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
59. Xalan:
Xalan- Java是一套xslt处理器,用来将XML文件转换为HTML,TEXT和XML等其他类型文件格式,支持XSLT1.0和XPATH 1.0版。开发人员可以通过命令行方式或在JAVA APPLET和SERVLET中使用,并可以作为自己开发的应用程序的类库使用。Xalan-Java实现的是transformation API for XML(TRaX)接口,此接口为Jaxp1.2标准中的一部分。
60. Xerces:
Xerces 是由Apache组织所推动的一项XML文档解析开源项目,它目前有多种语言版本包括JAVA、C++、PERL、COM等。Xerces- C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。
61. XML
XML(Extensible Markup Language)即可扩展标记语言,与HTML一样,是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,使用方便简易。
62. XMLBeans:
XMLBeans 是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。XMLBeans 最强大的功能是可通过提供配置文件定制代码生成。在灵活性、可重用性、简化代码和维护方面,XMLBeans的功能带来了许多益处。因为任何企业应用程序 相当大的成本都在于维护方面,所以从长远来看,XMLBeans的配置功能能够节省企业成本和时间。
63. XML Graphics:
Apache XML Graphics Project 是 Apache Software Foundation 发展 XML 与图形进行转换的计划项目子,其目的是创建和维护与XML格式到图形输出转换相关的软件组件。http://groups.google.com/group/vim-cn/msg/f72fba0645955101?
这是篇每个 Vim 用户都应该阅读的文章,原文在这里
http://www.rayninfo.co.uk/vimtips.html
这篇文章很早被翻译过,好像是一个清华的哥们翻译的。我再原来的基础上又整理
和新增了些内容--这是两年前做的,后来没有再更新。有兴趣的人可以继续更新。
__BEGIN__
------------------------------------------------------------------------------
# searching 查找
/joe/e : cursor set to End of match
把光标定位在匹配单词最后一个字母处
/joe/e+1 : cursor set to End of match plus 1
把光标定位在匹配单词最后一个字母的下一个字母处
/joe/s-2 : cursor set to Start of match minus 2
把光标定位在匹配单词第一个字母往前数两个字母的位置
/^joe.*fred.*bill/ : normal
标准的正则表达式
/^[A-J]\+/ : search for lines beginning with one or more A-J
查找以一个或多个 A-J 中的字母开头的行
/begin\_.*end : search over possible multiple lines
查找在 begin 和 end 两个单词之间尽可能多的行
/fred\_s*joe/i : any whitespace including newline
查找在 fred 和 joe 两个单词之间任意多的空格,包括新行
/fred\|joe : Search for FRED OR JOE
查找 fred 或 joe
/\([^0-9]\|^\)%.*% : Search for absence of a digit or beginning of line
查找
/.*fred\&.*joe : Search for FRED AND JOE in any ORDER!
查找同时包含 FRED 和 JOE 的行,不分前后顺序
/\<fred\>/i : search for fred but not alfred or frederick
查找 fred, 而不是 alfred 或者 frederick,也就是全字匹配
/\<\d\d\d\d\> : Search for exactly 4 digit numbers
查找4个数字的全字匹配
/\D\d\d\d\d\D : Search for exactly 4 digit numbers
查找4个数字的全字匹配
/\<\d\{4}\> : same thing
同上
# finding empty lines 查找空行
/^\n\{3} : find 3 empty lines
查找 3 行空行
# Specify what you are NOT searching for (vowels)
# 指定不要查找什么
/\c\v([^aeiou]&\a){4} : search for 4 consecutive consanants
# using rexexp memory in a search
# 在查找中使用正则表达式存储
/\(fred\).*\(joe\).*\2.*\1
# Repeating the Regexp (rather than what the Regexp finds)
# 重复正则表达式
/^\([^,]*,\)\{8}
# visual searching
# 可视模式下的查找
:vmap // y/<C-R>"<CR> : search for visually highlighted text
查找被高亮显示的文本
:vmap <silent> // y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR> : with spec chars
# searching over multiple lines \_ means including newline
# 查找多行。\_ 表示包括新行
/<!--\_p\{-}--> : search for multiple line comments
查找多行注释
/fred\_s*joe/i : any whitespace including newline
查找在 fred 和 joe 两个单词之间任意多的空
格,包括新行
/bugs\(\_.\)*bunny : bugs followed by bunny anywhere in file
bugs 后任意位置含有 bunny 单词的多个行
:h \_ : help
帮助
# search for declaration of subroutine/function under cursor
# 查找光标下子程序/函数的声明
:nmap gx yiw/^\(sub\<bar>function\)\s\+<C-R>"<CR>
# multiple file search
# 在多个文件中查找
:bufdo /searchstr
:argdo /searchstr
# How to search for a URL without backslashing
# 如何不使用反斜线查找 URL
? http://www.vim.org/ : search BACKWARDS!!! clever huh!
----------------------------------------
# substitution
# 替换
:%s/fred/joe/igc : general substitute command
普通替换命令
:%s/\r//g : Delete DOS returns ^M
删除 DOS 回车符 ^M
# Is your Text File jumbled onto one line? use following
# 你的文本文件是否乱七八糟的排成一行?使用如下命令
:%s/\r/\r/g : Turn DOS returns ^M into real returns
转换 DOS 回车符 ^M 为真正的回车符
:%s= *$== : delete end of line blanks
删除行尾空格
:%s= \+$== : Same thing
同上
:%s#\s*\r\?$## : Clean both trailing spaces AND DOS returns
删除行尾空格和 DOS 回车符
:%s#\s*\r*$## : same thing
删除行尾空格和 DOS 回车符
# deleting empty lines
# 删除空行
:%s/^\n\{3}// : delete blocks of 3 empty lines
删除三行空行
:%s/^\n\+/\r/ : compressing empty lines
压缩多行空行为一行
# IF YOU ONLY WANT TO KNOW ONE THING
# 如果你只想明白一件事情
:'a,'bg/fred/s/dick/joe/igc : VERY USEFUL
非常有用
# duplicating columns
# 复制列
:%s= [^ ]\+$=&&= : duplicate end column
复制最后一列
:%s= \f\+$=&&= : same thing
同上
:%s= \S\+$=&& : usually the same
同上
# memory
# 记忆,或叫引用
:s/\(.*\):\(.*\)/\2 : \1/ : reverse fields separated by :
反转以 : 分隔的字段
:%s/^\(.*\)\n\1/\1$/ : delete duplicate lines
删除重复的行
# non-greedy matching \{-}
# 非贪婪匹配 \{-}
:%s/^.\{-}pdf/new.pdf/ : delete to 1st pdf only
只删除到第一个 pdf
# use of optional atom \?
:%s#\<[zy]\?tbl_[a-z_]\+\>#\L&#gc : lowercase with optional leading characters
不懂
# over possibly many lines
# 匹配尽可能多的行
:%s/<!--\_.\{-}-->// : delete possibly multi-line comments
删除尽可能多的注释
:help /\{-} : help non-greedy
非贪婪匹配的帮助
# substitute using a register
# 使用寄存器替换
:s/fred/<c-r>a/g : sub "fred" with contents of register "a"
用"a"寄存器里的内容替换"fred"
:s/fred/\=@a/g : better alternative as register not displayed
更好的方法,不用显示寄存器内容
# multiple commands on one line
# 写在一行里的复杂命令
:%s/\f\+\.gif\>/\r&\r/g | v/\.gif$/d | %s/gif/jpg/
# ORing
:%s/suck\|buck/loopy/gc : ORing (must break pipe)
不懂
# Calling a VIM function
# 调用 Vim 函数
:s/__date__/\=strftime("%c")/ : insert datestring
插入日期
# Working with Columns sub any str1 in col3
# 处理列,替换所有在第三列中的 str1
:%s:\(\(\w\+\s\+\)\{2}\)str1:\1str2:
# Swapping first & last column (4 columns)
# 交换第一列和最后一列 (共4列)
:%s:\(\w\+\)\(.*\s\+\)\(\w\+\)$:\3\2\1:
# filter all form elements into paste register
# 把所有的form元素(就是html里面的form啦)放到register里
:redir @*|sil exec 'g#<\(input\|select\|textarea\|/\=form\)\>#p'|redir END
:nmap ,z :redir @*<Bar>sil exec
'g@<\(input\<Bar>select\<Bar>textarea\<Bar>/\=form\)\>@p'<Bar>redir END<CR>
# increment numbers by 6 on certain lines only
















