Sunday, December 24, 2006

首页 - 灰狐维客-你的知识库

首页 - 灰狐维客-你的知识库

Huihoo为主流的Enterprise Open Source Solution 提供专业的咨询、教育、支持服务, 其范围覆盖中间件、数据库、操作系统、门户、内容管理、工作流等

Friday, December 22, 2006

关于ruby的电子书下载(持续更新2006-12-4) - tech.cap - BlogJava

关于ruby的电子书下载(持续更新2006-12-4) - tech.cap - BlogJava

ruby的图书不多,这些都是cap从网络上收集而来的



Programming Ruby, Second Edition : ruby的入门读物,第二版,学ruby必读

(UPDATED)Agile Web Development with Rails : 第二版 beta.基于rails1.2

(UPDATED)The Ruby Way 现在是更新到ruby 1.8.4的第二版, 是bd7lx共享的, thanks

Ruby in A NutShell : 也是基于1.7的
本人制作的rails api文档, CHM格式,支持索引和全文搜索 1.0的1.1的

beyond java: 本书比较客观的评价了java和ruby,如果你是java程序员同时也对ruby感兴趣的话,可以先看看这本书

Ruby陷阱 : ruby中有些东西并不是以你想像的方式工作的...

这个是包含了一些有趣的ruby习题和解答, 方便你更升入的熟悉ruby的特性, 建议ruby入门以后再阅读,

ruby for rails :同时讲解ruby和rails. 适合不熟悉ruby和rails但是有web编程背景的人阅读, 特别是想快速了解rails是个什么东西的人

rails recipes: 分主题的rails处方书, 作为手册挺不错的,本书是网友chenxiangming主动发给我的, 大家应该谢谢他

Enterprise intergation with Ruby 如果你有一些遗留系统(j2ee)需要整合, 不妨读一读这本书

rails提供的rjs真是好东西, 大大方便了ajax开发, 这是一个小专题, 本人还没有看过

Friday, December 15, 2006

Lucene:基于Java的全文检索引擎简介

Lucene:基于Java的全文检索引擎简介: "版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/lucene.html
关键词:Lucene java full-text search engine Chinese word segment
内容摘要:
Lucene是一个基于Java的全文索引工具包。
基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史
全文检索的实现:Luene全文索引和数据库索引的比较
中文切分词机制简介:基于词库和自动切分词算法的比较
具体的安装和使用简介:系统结构介绍和演示
Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展
"

Thursday, December 14, 2006

深入 Lucene 索引机制

深入 Lucene 索引机制:

参考资料

实战 Lucene: 初识 Lucene 介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程。


Parsing, indexing, and searching XML with Digester and Lucene 是 Otis Gospodnetic 在 developerWorks 上发表的一篇关于利用 Lucene 和 Digester 来操作 XML 文档的文章。


IBM Search and Index APIs (SIAPI) for WebSphere Information Integrator OmniFind Edition 是 Srinivas Varma Chitiveli 在 developerWorks 上发表的一篇关于如何用 SIAPI 来构建搜索解决方案的文章。


Lucene的官方网站:上面有大量的 Lucene 帮助文档。


一个关于 Lucene 的演讲:是由 Lucene 最初的作者 Doug Cutting "

开放源代码的全文检索引擎Lucene

开放源代码的全文检索引擎Lucene

第一节 全文检索系统与Lucene简介··· 3
一、 什么是全文检索与全文检索系统?··· 3
二、 什么是Lucene?··· 4
三、 Lucene的应用、特点及优势··· 4
四、 本文的重点问题与cLucene项目··· 5
第二节 Lucene系统结构分析··· 5
一、 系统结构组织··· 5
二、 数据流分析··· 6
三、 基于Lucene的应用开发··· 8
第三节 Lucene索引文件格式分析··· 9
一、 Lucene源码实现分析的说明··· 9
二、 Lucene索引文件格式··· 10
三、 一些公用的基础类··· 12
四、 存储抽象··· 13
五、 关于cLucene项目··· 15
第四节 Lucene索引构建逻辑模块分析··· 15
一、 绪论··· 15
二、 对象体系与UML图··· 16
1. 项(Term)··· 16
2. 域(Field)··· 17
3. 文档(document)··· 18
4. 段(segment)··· 19
5. IndexReader类与IndexWirter类··· 23
三、 数据流逻辑··· 24
四、 关于cLucene项目

Wednesday, December 13, 2006

Linux服务器集群系统(二)--LVS集群的体系结构

Linux服务器集群系统(二)--LVS集群的体系结构

Linux服务器集群系统(二)

LVS集群的体系结构

章文嵩 (wensong@linux-vs.org)
2002 年 4 月

本文主要介绍了LVS集群的体系结构。先给出LVS集群的通用体系结构,并讨论了其的设计原则和相应的特点;最后将LVS集群应用于建立可伸缩的Web、Media、Cache和Mail等网络服务。

1.引言
在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络,它正成为人们生活中不可缺少的 一部分。虽然Internet发展速度很快,但建设和维护大型网络服务依然是一项挑战性的任务,因为系统必须是高性能的、高可靠的,尤其当访问负载不断增 长时,系统必须能被扩展来满足不断增长的性能需求。由于缺少建立可伸缩网络服务的框架和设计方法,这意味着只有拥有非常出色工程和管理人才的机构才能建立 和维护大型的网络服务。

针对这种情形,本文先给出LVS集群的通用体系结构,并讨论了其的设计原则和相应的特点;最后将LVS集群应用于建立可伸缩的Web、Media、Cache和Mail等网络服务。

2.LVS集群的通用体系结构
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服 务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

Monday, December 04, 2006

高影响力的Web层群集,第一部分: 利用JavaGroups扩展Web服务及应用

高影响力的Web层群集,第一部分: 利用JavaGroups扩展Web服务及应用

随着J2EE平台的日益成熟,为了在Web层上扩展Web服务及应用,可以在联网的群集配置中部署廉价服务器(commodityservers )。这些廉价服务器通过廉价的LAN硬件相互连接在一起,可以提供成本合适的群集解决方案。最后一个群集难题在于软件方面。在本系列文章中,SingLi分析了三种可以允许高影响力Web层群集的开放源代码软件基础,首先介绍 JavaGroups。
在 Internet 上,基于J2EE的Web应用及Web服务的流行,将同时处理上千个(或者更多)用户的需求推向前台。 在许多商业部署中,这不再是一个“未来可用的”奢侈品,而是成为必需品。在这种竞争的商业环境中,一个在线商店如果顾客一多就挂起或崩溃,它是不会生存下去的。尽管针对 J2EE 模型的事务层(用于数据库、事务监听器、消息队列,等等)的可扩展解决方案已经广泛可用,但是用于在Web层扩展 Web 应用或服务的解决方案还刚刚浮现。在该系列文章中,我们将要看几个可应用于在 Web 层扩展应用的软件技术。每种技术都采用一种不同的方法,并且解决一个稍微不同的问题集合。在这第一篇文章中,我们将探讨一种流行的开放源代码的分布式通信基础,那就是 JavaGroups。
在Web层扩展应用

Sunday, December 03, 2006

高性能的 Linux 集群,第 1 部分: 集群基础

高性能的 Linux 集群,第 1 部分: 集群基础

构建自己的集群:
Building a Linux HPC Cluster with xCAT(IBM 红皮书,2002 年 9 月)为系统架构师和工程师介绍了基本的集群技术、术语以及安装 Linux 高性能计算(HPC)集群的知识。
Linux HPC Cluster Installation(IBM 红皮书,2001 年 6 月)重点介绍了用来安装和管理的 xCAT(xCluster 管理工具)。
Building an HPC Cluster with Linux, pSeries, Myrinet, and Various Open Source Software” (IBM 红皮书,2004 年 7 月)介绍了如何利用一组 pSeries 节点和 Myrinet 网络来构建一个可以真正运行 HPC 产品负载的环境。
使用 coLinux 和 openMosix 构建异构集群” (developerWorks,2005 年 2 月)展示了如何构建一个混合的 HPC Linux 集群。
Linux Clustering with CSM and GPFS (IBM 红皮书,2004 年 1 月)重点介绍了集群系统管理和 Linux 集群上的通用并行文件系统。

在 IBM xSeries 上使用 OpenMosix 的优点: 第 2 部分(共 3 部分)

在 IBM xSeries 上使用 OpenMosix 的优点: 第 2 部分(共 3 部分)

在这个由三部分组成的系列文章中,我要向您介绍用于 Linux 的群集技术,名为 openMosix。正如您可能知道的,群集技术允许两个或多个联网的 Linux 系统(称为“节点”)组合它们的计算资源来解决计算难题,与各个系统单独解决该问题(如果可能的话)相比,群集的计算速度更快。当然,硬件的选择很灵活,而且 openMosix 不受限于任何单一硬件平台,但是构建在运行 Intel(R)Xeon(TM) 处理器的 IBM xSeries 系统上的群集会有一些独特的优点。通过允许单一 Xeon 处理器作为两个虚拟处理器出现在操作系统中,利用诸如 Intel 的超线程技术(现在在 Linux 下支持它)之类的性能增强技术改进了多线程应用程序的性能。通过利用超线程,您可以从拥有多个物理和/或虚拟处理器中受益,并可享受 openMosix 本身的优点。
随着本系列文章的深入,我将全程指导您学习设置自己的 openMosix 群集。在本系列文章结束时,您将能够启动并运行您自己的 openMosix 袖珍群集,并准备用它有效地加快您的计算任务。
在本系列文章的第二部分中,我将带您学习设置 openMosix 群集的实际步骤。要遵循这些步骤,您需要将两个或多个 Linux 系统通过 Ethernet 或一些其它高速网络传输连接在 LAN 上。在本文结束时,您将获得一个已配置好的功能齐全的 openMosix 群集,并使之运行。

使用 coLinux 和 openMosix 构建异构集群

使用 coLinux 和 openMosix 构建异构集群

您可以通过以下三种方法的任意一种来创建一个集群:完全迁移到一个单一的平台,部分迁移,或者是以混合的方式创建。在本文中,将学习如何通过集群代理实现最后一种方法,并了解如何将 coLinux 和 openMosix 结合起来为异构环境提供高性能集群中间件。在这个异构的环境中,Linux™ 将提供稳定性和性能,而且 Windows® 用户可以继续使用他们的应用程序,根本不用关心其中的区别。
从九十年代早期起,集群计算已经取得了长足的发展。随着对 GNU/Linux 使用的日益增加,以可接受的预算使用 PC 集群来获得超级计算速度正日趋主流。容易获得的廉价硬件(处理器、内存、硬盘、以太网卡等),再加上开放源代码软件,这些都促使人们采用基于 Linux 的 Beowulf 集群。(“Beowulf”指的是基于 PC 的集群领域中最早的研究者 Dr. Donald Becker 和 Dr. Thomas Sterling 为他们最初的集群所起的名字;很多人使用这个名字来代表一种类似的技术,即基于 PC 的集群。)
术语的这一模糊性带来了这样的问题:“希望构建集群的人是否必须使用 Linux?”(或许,那个问题的中心,也是更为实际的一点,是“我们有很多使用 Windows 的空闲 PC。仅仅为了借用 CPU 周期,我们是否需要将它们全部迁移到 Linux?”)
正是这些问题促使我们去试验如何构建混合式集群(hybrid cluster),即由异构操作系统构成的集群。本文使用的是 Windows 和 Linux,为了简化起见,没有考虑其他操作系统。
为什么创建混合式集群?
当前,局域网和校园网都是由使用不同操作系统的 PC 所构成。有的使用 Windows,有的使用 Linux,还有的使用 BSD,等等。一个局域网中 PC 的平均数目在 100 到 300 之间,这表明其中有巨大的潜在计算能力,特别是如果您正在规划一个主要目的是获得最高速度的高性能计算集群(HPC)。
这种类型的集群所面临的挑战是:在大部分情况下,我们不能让每台 PC 百分之百地致力于集群的工作。传统的集群在全天候的运行期间内都完全致力于运行需要大量运算的程序,与之相比,这种混合式的集群主要适用于扩展现有 Linux 集群的节点。实现这一目标有两种策略:
在每一台 Windows PC 上安装集群代理(cluster agent)。您可以认为这个代理是在系统中运行的一个小应用

使用 coLinux 和 openMosix 构建异构集群

使用 coLinux 和 openMosix 构建异构集群

使用 coLinux 和 openMosix 构建异构集群

您可以通过以下三种方法的任意一种来创建一个集群:完全迁移到一个单一的平台,部分迁移,或者是以混合的方式创建。在本文中,将学习如何通过集群代理实现最后一种方法,并了解如何将 coLinux 和 openMosix 结合起来为异构环境提供高性能集群中间件。在这个异构的环境中,Linux™ 将提供稳定性和性能,而且 Windows® 用户可以继续使用他们的应用程序,根本不用关心其中的区别。
从九十年代早期起,集群计算已经取得了长足的发展。随着对 GNU/Linux 使用的日益增加,以可接受的预算使用 PC 集群来获得超级计算速度正日趋主流。容易获得的廉价硬件(处理器、内存、硬盘、以太网卡等),再加上开放源代码软件,这些都促使人们采用基于 Linux 的 Beowulf 集群。(“Beowulf”指的是基于 PC 的集群领域中最早的研究者 Dr. Donald Becker 和 Dr. Thomas Sterling 为他们最初的集群所起的名字;很多人使用这个名字来代表一种类似的技术,即基于 PC 的集群。)
术语的这一模糊性带来了这样的问题:“希望构建集群的人是否必须使用 Linux?”(或许,那个问题的中心,也是更为实际的一点,是“我们有很多使用 Windows 的空闲 PC。仅仅为了借用 CPU 周期,我们是否需要将它们全部迁移到 Linux?”)
正是这些问题促使我们去试验如何构建混合式集群(hybrid cluster),即由异构操作系统构成的集群。本文使用的是 Windows 和 Linux,为了简化起见,没有考虑其他操作系统。
为什么创建混合式集群?
当前,局域网和校园网都是由使用不同操作系统的 PC 所构成。有的使用 Windows,有的使用 Linux,还有的使用 BSD,等等。一个局域网中 PC 的平均数目在 100 到 300 之间,这表明其中有巨大的潜在计算能力,特别是如果您正在规划一个主要目的是获得最高速度的高性能计算集群(HPC)。
这种类型的集群所面临的挑战是:在大部分情况下,我们不能让每台 PC 百分之百地致力于集群的工作。传统的集群在全天候的运行期间内都完全致力于运行需要大量运算的程序,与之相比,这种混合式的集群主要适用于扩展现有 Linux 集群的节点。实现这一目标有两种策略:
在每一台 Windows PC 上安装集群代理(cluster agent)。您可以认为这个代理是在系统中运行的一个小应用程序,或者是一个 Windows 服务。它以自动的方式工作,其操作由主节点(使用 Linux)完全控制。
使用双引导安装,或者使用 Linux LiveCD。LTSP(Linux Thin Server Project)也可以归类于此策略。其基本思想是将节点临时转换为 Linux 系统,然后作为集群的成员连接到主节点。
我们并没有将从 Windows 到 Linux 的部分或完全迁移作为解决方案来研究,因为我们希望在本文中集中关注第三种方法。我们没有研究向 Linux 的完全或者部分迁移,而是希望研究那些不需要关注完全迁移就可以将 Window 和 Linux 加入集群的机制和好处。不过,这并不表示完全迁移是错误的解决方案。
我们选择集群代理方法作为解决方案,因为它具有以下优势:
Windows 用户能够继续在熟悉的环境中工作,使用办公套件、绘图或者执行其他任务。用户可以让集群代理以低优先级运行,或者在启动屏幕保护程序时运行。Seti@home 项目使用了此类策略,非常有效。
由于避免了双引导,不需要进行重新分区(为了安装 Linux)。您可以在 Windows 文件系统之上安装 Linux (比如 ZipSlack),但这样会要求您必须退出 Windows。
使用集群代理的方法,您只需要在 FAT32 或者 NTFS 文件系统中留出一些空间来存放 Linux 代理二进制程序。
回页首
混合式集群的先决条件
在创建集群的过程中,需要在三类集群中作出选择:高可用集群(HA)、高性能计算集群(HPC)和高吞吐率集群(HTC)。我们选择的是 HPC,这是最常用的集群,它会带来以下后果:
忽略在节点上可能发生的故障。这些故障包括电源故障、网线损坏以及其他种类的硬件相关问题,比如磁盘损坏、CPU 由于过热而被锁,以及内存损坏。
各个节点在执行主节点所提交的作业时,需要重新引导的机率较小。在这种情况下,应用程序本身或者管理员必须在特定时间内重新启动必要的应用程序或者检查点。
让我们退而考虑这个问题:“为什么我们需要植入一个集群代理?难道将基于 Linux 的应用程序移植到 Windows 不能获得更好的性能吗?”当然,随着 MinGW 或 Cygwin 等跨平台编译器的可用,这可能会很容易。
对这个问题的回答是,我们出于以下原因而更希望使用集群代理:
将软件移植到另一个平台不会像预期的那样顺利。对系统调用、时间、直接硬件访问等问题的处理会延缓实现。
混合式集群往往用作各种新应用程序的实验台,或者用作对已有集群的扩展。投入很多精力来进行移植,对计划会经常变化的环境而言不会有太多好处。
实际上,很多人使用商业或者私有软件。这种软件出售或发布时并没有附带源代码。结果是不可能进行移植。
我们提出的解决方案并不是要获得如同将其移植为本地 Windows 应用程序那样快的执行速度。不过请记住,在这个试验中,我们将尝试达到以下几个关键目标:
灵活性。当代理以较低的优先级运行,或者只有在 CPU 的空闲周期中运行时,Windows 用户才可能如往常一样工作。
性能。当运行集群代理时,执行速度应该几乎 与本地移植一样快。
效率。我们只需要像安装普通 Windows 程序一样安装集群代理的二进制程序,并让它们自动运行。
易管理。借助大规模部署软件(比如 LanDesk 套件,或者微软软件管理服务器(Microsoft Software Management Server)),我们可以快速安装和删除代理软件包。如果需要,还有 VNC 等远程 X 客户机扩展可以简化远程管理。

Friday, December 01, 2006

Windows 到 Linux 之旅: 系列文章概述

Windows 到 Linux 之旅: 系列文章概述: "Windows 到 Linux 之旅: 系列文章概述"