﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-很久很久以前-随笔分类-others</title><link>http://www.blogjava.net/pandawang/category/8825.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 21 May 2007 12:25:43 GMT</lastBuildDate><pubDate>Mon, 21 May 2007 12:25:43 GMT</pubDate><ttl>60</ttl><item><title>JXTA学习笔记（3）——JXTA的各种概念</title><link>http://www.blogjava.net/pandawang/archive/2007/05/19/118606.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 19 May 2007 15:11:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2007/05/19/118606.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/118606.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2007/05/19/118606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/118606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/118606.html</trackback:ping><description><![CDATA[本文主要介绍了JXTA中的各种概念。<br>1.<span style="font-weight: bold;">Peer。</span>一个peer就是实现了一个或多个JXTA协议的网络设备。比如传感器，电话， PDA，PC，服务器，巨型机等等。每一个peer与其他peer都是独立操作并且是异步的。有peer ID来唯一标识一个peer。peer使用JXTA协议公开一个或多个网络接口（network interface），每一个公开的接口都被广告为一个peer端点(peer endpoint),这个peer端点唯一标识了一个网络接口。peer之间不需要有直接的点对点的网络连接。可以使用中间的peer作为peer的消息路由，将由于硬件网络或者网络配置（NATs，防火墙或者代理）而造成的两个通信peer进行互联。peer通常被设计成网络中自然地互相发现，从而构成暂时的或持久的关系成为peer组（peer gorup）。<br>2.<span style="font-weight: bold;">Peer Group</span>.一个peer组是一个peer的集合，这些peer都有一组相同的服务。peer自组织的加入到peer组中，并通过一个唯一的peer组id来区别这些peer组。每一个peer组都可以建立一个属于自己的memebership policy，从任何人可以加入到最严格的安全验证以及受保护方式（需要完全的认证书来加入）。一个peer可以同时属于多于一个peer组。默认地，第一个peer组被实例的组是Net Peer Group。所有的peer都属于Net Peer Group。peer可以选择加入其他的peer group。JXTA协议描述了peer如何公开，发现，加入以及监控peer组。<br>&nbsp;&nbsp; &nbsp; 如下几点说明了创建peer组的目的。<br>
<ol>
    <li>建立安全的环境。peer组可以创建一个本地控制域，在这个域中使用一个特定的安全策略。这个安全策略可以简单的只是一个明文的帐号 /口令交换，也可以像PKI一样成熟。peer组界定认证的成员访问和公开受保护的内容（content）。peer组在建立了一个逻辑上的区域，从而对访问peer组的资源进行界定。</li>
    <li>创建一个范围环境。peer组裕兴建立一个本地的专用域。比如，peer可以组织起来实现一个文档共享网络或者一个CPU共享网络。 peer组提供细分网络成抽象的区域来提供内在范围机制（implicit scoping mechanism）。比如，当搜索一个组内容的时，peer组可以界定定义一个搜索范围。</li>
    <li>创建一个监视环境。peer组允许一个peer为了任何目的去监视一组peer（比如，心跳，traffic introspection或者accountability）。peer组也可以构建一个父子层次结构，其中任何一个组都有一个唯一的父亲。查询请求能偶在这个组中传播。对于这个组中的广告也可以在其父组中公开，当然也包裹这个组本身。</li>
</ol>
peer组提供了一组服务成为peer组服务。在JXTA中敌营了一个核心peer组服务集合。两个peer如果要通过一个服务进行交互，他们配需位于同一个peer中。<br>&nbsp;&nbsp;&nbsp; 核心的组服务有如下：<br>
<ol>
    <li>发现服务（Discovery Service）。本服务被组中的peer用来查询per组资源，比如peer，peer组，通道和服务等。</li>
    <li>成员关系服务（Membership Service）。本服务被当前成员用来拒绝或接受一个新的组成员应用。一个peer想要加入到一个group前，首先要确定一个当前的成员，并请求加入。当前成员的集合可以拒绝或者接受某个想加入的应用（application）。本服务可能会发起一个所有peer或者指定组代表的一次投票来决定是否接受或者聚居新的成员应用。</li>
    <li>访问服务（Access Service）。使用访问服务可以用来验证一个peer对另一个peer的请求（request）。如果访问被允许，那么接受请求的peer会提供给请求peer关于该请求所要知道的信息的信任和相关信息。（注意，在peer组中，不是所有的行为（action）都需要通过访问服务的检查，只有那些在某些peer中被限制的行为在需要调用时，才被检查。）</li>
    <li>管道服务（Pipe Service）。本服务用于在peer组成员间的链接管道的建立和管理。</li>
    <li>Resolver服务。本服务用来发送一般的查询请求到其他的peer。peer可以定义和交换请求以便发现任何需要的信息（比如一个服务的状态或者一个管道端点的信息。）</li>
    <li>监视服务(Monitoring Service)。本服务用来让一个peer监视本组中的其他成员服务。</li>
</ol>
&nbsp;&nbsp;&nbsp; 不是所有上面提到的服务都必须要被每个peer实现。一个peer组可以自由的实现那些它认为有用的服务，并可以依赖于默认的Net Peer Group来提供非关键核心服务的一般实现。<br>3.<span style="font-weight: bold;">Network Services</span>。peer之间可以协作并通信以发布，发现和启动网络服务。peer可以发布多个服务。peer通过Peer Discovery Protocol来发现network service。在JXTA协议中组织了两个层次上的network service。<br>
<ul>
    <li>Peer Service。一个peer service只有当peer公布了自己的service时才能被访问。如果这个peer失败了，那么它的service也失败了。不同的peer可以运行某个服务的多个实例，但每个实例都必须公开自己的广告(advertisement).</li>
    <li>Peer Group Service。peer组服务是这个组中成员所运行服务的实例的集合的组织形式，其中这些实例是互相合作的。如果其中任何一个peer失败了，那么这个 peer组服务将不会收到影响（假定这个服务可以从其他peer获得）。peer group服务通过peer 组广告的以部分来发布。</li>
</ul>
&nbsp;&nbsp;&nbsp; 服务可以是事先被安装到peer上或者通过网络安装的。为了真正的运行一个服务，peer必须为定位一个适合当前peer运行环境的一个实现。这个从网络上查找，下载和安装一个服务的过程很类似于在Internet上搜索一个Web页面，取回这个页面然后再安装需要的插件的过程。<br> 4.<span style="font-weight: bold;">Modules</span>。JXTA的module用来描述任何一段用来实现JXTA world中一个行为的&#8220;代码&#8221;的抽象表示（Abstraction）。Network Service就是在一个peer上实现的行为的一个最一般的例子。这个Module Abstraction不一定特指什么&#8220;代码&#8221;，它可以是一个Java类，也可以是Java jar，或者动态链接库dll，一个XML消息或是一个脚本。这个module的行为交给了module的实现者。对于一个实例（instance）， module表示了一个网络服务（network service）在不同平台上的不同实现，这些平台比如说在java平台，MS windows平台，Solaris 平台。<br>&nbsp;&nbsp;&nbsp; Module允许peer实现一个新的行为，通过提供了一个一般的抽象。当peer浏览或者加入一个peer组时，他可以查找新的其打算实现的行为。比如，当加入一个peer组后，一个peer可能必须学习新的搜索服务，这个服务只能在本peer组中使用。为了加入到这个组，这个peer必须实现这个新的搜索服务。这个module框架可以启动平台无关行为的表示（representation）和广告（advertisement）。并允许peer描述和实现任何形式这个行为（behavior）的是实现。比如，一个peer使用java或者c实现一个行为的实现。<br>&amp; amp; nbsp;&nbsp;&nbsp; 描述和公告一个平台独立的行为的能力能有有效的支持peer组包含异构的peer。module的广告可以使JXTA的peer能够采用平台独立的方式描述一个行为。JXTA平台使用module广告来自描述。<br>&nbsp;&nbsp;&nbsp; module抽象（Module abstractIon）包括一个module class，module specification和一个moduleimplementation。<br>
<ul>
    <li>Module Class。module class主要用于广告一个行为（behavior）的存在。这个class的定义表述了一个期望的行为和一个期望的对所支持的module的绑定。每一个module class都有一个唯一的ID，成为MoudleClassID</li>
    <li>Module Specification。Module Specification主要用于访问这个module。它包含了访问或者启动这个module的所有必要的信息。比如，一个服务，他的module specification可能包含了一个用于和其他服务相通信的管道的广告。一个module specification用于提供module class所指明的功能。对于一个module class可能有多个module specification。每一个module specification都有一个唯一的id，ModuleSpecID。ModuleSpecID包含了ModuleClass ID，并指明了所使用的module class。一个module specification暗含了对网络的兼容性。对于一个给定的module specification的所有实现都必须使用相同的协议，这些实现都需要是兼容的，即使使用不同的语言实现的。</li>
    <li>Module Implementation。Module Implement是一给定module specification的实现。对于一个module specification可以有多个module implementation。每一个module implementation都包含了它所实现的与specification相关联的ModuleSpecID。</li>
</ul>
&nbsp;&nbsp;&nbsp; Module可以被peer组服务使用，也可以被独立的服务所使用。JXTA服务通过module abstraction来区别存在的服务（他的Module Class），服务的specification（Module Specification），或者服务的实现（Service Implementation）。所有的这些都有一个联合的广告，并且可以通过其他JXTA peer来公告和发现的。作为一个例子，考虑JXTA的发现服务。它包含一个唯一的ModuleClassID，标识了他作为一个发现服务——他的抽象功能。对于这个发现服务可以有多个不同的规范（Specification），并伴随着不同的实现。对于组的大小和在网络中的传播方式可以使用不同的裁剪策略。每一个Specification都有唯一的MdouleSpecID，其中指明了发现发现服务的ModuleClassID。对于每个规范，都可能有多种实现，每种实现都包含了相同的ModuleSpceID。<br>&nbsp;&nbsp;&nbsp; 总之，对于一个给定的module Class都可能有多种规范，这些规范可能是完全不同的。然而任何给定规范的所有实现都是假定可以互相兼容的。<br><img src ="http://www.blogjava.net/pandawang/aggbug/118606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2007-05-19 23:11 <a href="http://www.blogjava.net/pandawang/archive/2007/05/19/118606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JXTA学习笔记（2）——JXTA的体系结构</title><link>http://www.blogjava.net/pandawang/archive/2007/05/13/117108.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sun, 13 May 2007 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2007/05/13/117108.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/117108.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2007/05/13/117108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/117108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/117108.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 在JXTA中分为三个层次，如下图所示。<br><img style="width: 482px; height: 339px;" alt="" src="http://www.blogjava.net/images/blogjava_net/pandawang/JXTA/JxtaArchitecture.JPG" align="middle"><br>&nbsp;&nbsp;&nbsp;&nbsp; 下面分别介绍各个层次：<br>
<ol>
    <li>平台层（platform layer）。平台层即所谓的JXTA核心（JXTA core），专门包装了最小最精华的部分，这部分主要完成了对P2P网络最一般的使用。包括，为P2P应用程序的关键机制构建模块，传输（包括防火墙穿透），创建peer和peer group以及和安全部分的结合。</li>
    <li>服务层（Service layer）。服务层包含了一些网络服务，这些服务不一定是P2P程序中必须的，但却是P2P环境中通常和值得提供的。比如搜索，索引，目录，存储系统，文件共享，分布式文件系统，资源聚合和租借等应用服务，以及协议传输服务和认证和PKI服务等等。</li>
    <li>应用层（Application layer）。应用层包括了综合应用的实现，比如P2P的及时消息，文档和资源的共享，娱乐内容管理和分发，P2P的email系统，分布式拍卖系统以及很多其他的应用。</li>
</ol>
&nbsp;&nbsp;&nbsp; 实际上，服务层和应用层之间的界限并不是明显的。一个用户的应用程序可以作为另一个用户的服务。整个系统被实际成模块化的，允许开发者选择一个服务和应用的集合来定制自己的需求。<br>&nbsp;&nbsp;&nbsp; 在JXTA中有三个主要方面是它区别一其他分布式网络模型的：<br>
<ol>
    <li>使用XML文档(广告）来描述网络资源。</li>
    <li>针对peer间和peer与端点（endpoint）间的抽象管道（abstraction pipe)不需要使用一个可信赖的中心名字/地址认真，比如DNS。</li>
    <li>唯一的peer地址方案（peer IDs）。</li>
</ol>
在下面的部分将详细介绍JXTA的各个组成部分。<br><img src ="http://www.blogjava.net/pandawang/aggbug/117108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2007-05-13 14:13 <a href="http://www.blogjava.net/pandawang/archive/2007/05/13/117108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JXTA学习笔记（1）——JXTA简介</title><link>http://www.blogjava.net/pandawang/archive/2007/05/12/117072.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 12 May 2007 15:59:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2007/05/12/117072.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/117072.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2007/05/12/117072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/117072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/117072.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; JXTA是一个为P2P计算而开发设计的开发网路计算平台。它的目标是通过创建基本组件和服务来为peer group创造新的应用。JXTA是juxtpose的简称，指并列并排，这里是说P2P的方式和C/S方式以及B/S方式是同等地位了，都是传统的分布式计算模型。&nbsp;JXTA为开发应用程序提供了一组开发协议集合和一个开放源码的参考实现。JXTA协议标准化了peer的风格：
<ol>
    <li>互相发现；</li>
    <li>在peer group中的自组织；</li>
    <li>广告和发现网络服务；</li>
    <li>peer间的通讯；</li>
    <li>peer间的交互。</li>
</ol>
&nbsp;&nbsp;&nbsp; JXTA协议被设计成独立于程序设计语言和独立于传输协议的。这些协议可以使用Java或者C/C++或者perl实现。同样，也能在TCP/IP,HTTP,Bluetooth或者其他传输协议上实现。JXTA协议使得开发者可以构建和部署P2P的服务或者应用程序，因为这些协议是独立于程序语言和传输协议，所以可以使得采用完全不同软件体系的异构终端设备能够交互通讯。使用JXTA技术，开发人员可以开发出基于网络的，能够交互的应用程序，这些应用程序有如下特点：
<ol>
    <li>通过动态查询和防火墙穿越来发现本网络中的其他peer；</li>
    <li>任何访问网络的节点都可以方便地共享文档；</li>
    <li>在网络站点中查找minute content；</li>
    <li>创建一个peer group来提供服务；</li>
    <li>远端监视peer的行为；</li>
    <li>在网络中同其他peer进行安全的通信。</li>
</ol><img src ="http://www.blogjava.net/pandawang/aggbug/117072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2007-05-12 23:59 <a href="http://www.blogjava.net/pandawang/archive/2007/05/12/117072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>erlang和yaws</title><link>http://www.blogjava.net/pandawang/archive/2007/01/18/94774.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Thu, 18 Jan 2007 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2007/01/18/94774.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/94774.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2007/01/18/94774.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/94774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/94774.html</trackback:ping><description><![CDATA[今天打算试试yaws，这是一个使用erlang实现的web服务器，参照blog：<br />http://yarivsblog.com/articles/2006/07/12/the-hitchhiker<br />首先需要安装erlang环境，windows和linux下都有，但yaws好像只给了个linux下的安装文件，于是在ubuntu6.06上安装。<br />从erlang主页www.erlang.org上下载源码，编译步骤：<br />tar -xzvf xxx.tar.gz<br />cd xxx<br />sudo ./configure<br />（sudo make clean）＃可选的，用于非首次编译的情况<br />sudo make<br />sudo make install （as root）<br />但configure时出错：（类似如下）<b style="color: black; background-color: rgb(255, 255, 102);"><br /></b><font color="#000000"><span style="color: black; background-color: rgb(255, 255, 102);">configure</span>: <span style="color: black; background-color: rgb(255, 255, 102);">error</span>: No <span style="color: black; background-color: rgb(255, 255, 102);">curses</span><span style="color: black; background-color: rgb(255, 255, 102);">library</span><span style="color: black; background-color: rgb(255, 255, 102);">functions</span> found<br /></font><pre><font color="#000000">There is a problem with $ERL_TOP/erts/<span style="color: black; background-color: rgb(255, 255, 102);">configure</span> not passing the LDFLAGS<br />environment variable for test compiles, so ALL <span style="color: black; background-color: rgb(255, 255, 102);">library</span> tests fail. I<br />modified files $ERL_TOP/erts/aclocal.m4 and $ERL_TOP/<span style="color: black; background-color: rgb(255, 255, 102);">configure</span>.in in order<br />to locate pthread_create in the standard C runtime <span style="color: black; background-color: rgb(255, 255, 102);">library</span>. The<br />$ERL_TOP/<span style="color: black; background-color: rgb(255, 255, 102);">configure</span>.in produces a <span style="color: black; background-color: rgb(255, 255, 102);">configure</span> that works, wheras the<br />$ERL_TOP/erts/<span style="color: black; background-color: rgb(255, 255, 102);">configure</span>.in does not. At the top of file erts/<span style="color: black; background-color: rgb(255, 255, 102);">configure</span>.in:<br /><br />AC_PREREQ(2.13)<br />AC_INIT(vsn.mk)<br />应该是一些curses库没有安装，但apt-get install curses提示找不到，google了一下发现需要安装<br /></font>ncurses-devel包，在网上只找到了相应的rpm包，使用alien命令，将rpm保转换为deb包安装：<br />sudo apt-get install alien<br />sudo alien *.rpm,转成deb后，用dpkg -i *.deb<br />或者<br />sudo alien -i *.rpm<br />进行安装<br />(注意，下载rpm包的时候我将包改名了，导致alien时出错，改成原来的名字就正常了，不知道为什么：P)<br />这时候cofigure可以过去了，但make又出错了，提示erlc找不到，类似如下的错误信息：<br />erlc -W   +debug_info -I../include -o../ebin otp_ring0.erl<br /><span class="searchword0">make</span>[4]: erlc: Command not found<br /><span class="searchword0">make</span>[4]: <span class="searchword1">***</span><span class="searchword2">[../ebin/otp_ring0.beam]</span><span class="searchword3">Error</span><span class="searchword4">127</span><br /><span class="searchword0">make</span>[4]: Leaving directory `/usr/src/packages/erlang-10.b.5/lib/kernel/src'<br /><span class="searchword0">make</span>[3]: <span class="searchword1">***</span> [/usr/src/packages/erlang-10.b.5/lib/kernel/ebin/otp_ring0.beam] <span class="searchword3">Error</span> 2<br /><span class="searchword0">make</span>[3]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'<br /><span class="searchword0">make</span>[2]: <span class="searchword1">***</span> [generate] <span class="searchword3">Error</span> 2<br /><span class="searchword0">make</span>[2]: Leaving directory `/usr/src/packages/erlang-10.b.5/erts/emulator'<br /><span class="searchword0">make</span>[1]: <span class="searchword1">***</span> [depend] <span class="searchword3">Error</span> 2<br /><span class="searchword0">make</span>[1]: Leaving directory `/usr/src/packages/erlang-10.b.5'<br /><span class="searchword0">make</span>: <span class="searchword1">***</span> [build-stamp] <span class="searchword3">Error</span> 2<br /><span class="searchword0">make</span>: <span class="searchword1">***</span> [debs] <span class="searchword3">Error</span> 2<br /><br />看网上有介绍说使用make clean并不完全，<br />于是将源码删除，重新解压缩，再configure后，make，没有提示erlc找不到了，又有提示类似如下的错误信息：<br />&gt; otp_src_R11B-1/lib/kernel/ebin/erlang.beam &gt; i686-pc-linux-gnu/preload.c<br /> &gt; m4  -DTARGET=i686-pc-linux-gnu -DOPSYS=linux -DARCH=x86 hipe/ <br /> &gt; hipe_x86_asm.m4 &gt; i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h<br /> &gt; /bin/sh: m4: command not found<br /> &gt; make[2]: *** [i686-pc-linux-gnu/opt/plain/hipe_x86_asm.h] Error 127<br /> &gt; make[2]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'<br /> &gt; make[1]: *** [generate] Error 2<br /> &gt; make[1]: Leaving directory `/home/jhancock/otp_src_R11B-1/erts/emulator'<br /> &gt; make: *** [depend] Error 2<br />这是m4包没有找到（http://www.erlang.org/pipermail/erlang-questions/2006-November/023942.html）<br />安装m4包后，继续make出现如下错误：<br />hipe/hipe_mkliterals.c:351: error: 'X86_LEAF_WORDS' undeclared here (not in a function) <br />hipe/hipe_mkliterals.c:352: error: 'X86_NR_ARG_REGS' undeclared here (not in a function)<br />网上搜索结果：http://forum.trapexit.org/viewtopic.php?t=6815<br />将源码删除，再解压缩 再make终于过去了</pre>提示：如下的包最好是在erlang安装之前就安装好的: perl, debhelper (&gt;= 4.0.0), autoconf (&gt;= 2.50),
  openssl, libssl-dev, m4, libncurses5-dev, dpatch, autotools-dev,
  unixodbc-dev <br />make过程大概有1个小时，之后是make install很快。<br />打开终端，输入erl，出现提示符1&gt;<br />后面将yaws的安装和使用<br />yaws的安装挺简单的，主要是他的编译是基于erlang的。<br />需要注意的是，安装好后，如果没有安装相应的ssl模块的话，需要更改一下conf文件，将其中关于ssl的部分注释掉，既如下部分：<br />&lt;server xxx&gt;<br />      ....<br />          &lt;ssl&gt;<br />                    ...<br />            &lt;/ssl&gt;<br />&lt;/server&gt;<br />在windows下的安装，在yaws的主页上有说明，需要下载一个bat文件，不过这个文件好像有问题，需要将一些安装的环境变量改一下，在（SET ERLC_FLAGS=）这行之后添加：<br />SET ProgramFiles=G:\erlang\yaws\yaws_program
<br />SET HOME=G:\erlang\yaws\yaws_data
<br />SET APPDATA=G:\erlang\yaws\yaws_configure<br />ProgramFiles 为yaws的程序位置，HOME为yaws的数据位置，包括www，log，wiki，ssl等，APPDATA为yaws的配置位置。<br />如果使用默认安装参数的话，需要将IF NOT DEFINED ProgramFiles SET ProgramFiles="c:\Program Files"和<br />HOME="%HOMEDRIVE%%HOMEPATH%\My Documents"中的双引号去掉（感觉这个bat文件写的比较乱）<br />同时不要忘了，在安装好之后注释掉conf文件中关于ssl的部分。<br />安装好后，默认就可以在%home/www目录或者/tmp（windows下为%home%\www  or C:\tmp）目录添加yaws文件（ehtml）来显示了。<br />btw：如果在ubuntu or debian上安装，最简单，只要apt-get install yaws 就可以了。运行yaws需要root权限。<br /><img src ="http://www.blogjava.net/pandawang/aggbug/94774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2007-01-18 23:22 <a href="http://www.blogjava.net/pandawang/archive/2007/01/18/94774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java Object输入输出流中的一个问题zz</title><link>http://www.blogjava.net/pandawang/archive/2006/12/30/90990.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Sat, 30 Dec 2006 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2006/12/30/90990.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/90990.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2006/12/30/90990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/90990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/90990.html</trackback:ping><description><![CDATA[
		<pre>写程序中遇到一个问题 如下:
mySoc = new Socket(svrAddress,5555);


myInput = new ObjectInputStream(mySoc.getInputStream());//有问题
myOutput = new ObjectOutputStream(mySoc.getOutputStream());//有问题
//myInput = new DataInputStream(mySoc.getInputStream());
//myOutput = new DataOutputStream(mySoc.getOutputStream()); 
注销的语句运行可以成功
但是未注销的那部分 运行时就卡在那里了
但是却没有抛出异常
请教原因是什么 有什么问题
该怎么解决呢？<br /><br /><pre>找了好久终于再网上找到关于这个问题的说明了 因为问题比较特殊 所以贴出来希望对大家
有帮助

主机端先建立ObjectInputStream后建立ObjectOutputStream，则对应地客户端要先建立
ObjectOutputStream后建立ObjectInputStream，否则会造成两方互相等待数据而导致死
锁。

原因是建立ObjectInputStream对象是需要先接收一定的header数据，接收到这些数据之前
会处于阻塞状态。故而为了防止这种死锁状态，通讯两方的
ObjectInputStraem,ObjectOutputStream必须注意顺序对应使用。


目前相应的解决办法还没有找到 如果要解决 可以尝试重载对象输入输出流</pre></pre>
<img src ="http://www.blogjava.net/pandawang/aggbug/90990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2006-12-30 12:46 <a href="http://www.blogjava.net/pandawang/archive/2006/12/30/90990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>subversion的配置</title><link>http://www.blogjava.net/pandawang/archive/2006/09/05/67844.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Tue, 05 Sep 2006 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2006/09/05/67844.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/67844.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2006/09/05/67844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/67844.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/67844.html</trackback:ping><description><![CDATA[安装subversion<br />基本命令：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  $ sudo apt-get install subversion<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  $ sudo apt-get install libapache2-svn</span></div>可以安装的包:<br /><strong><font color="#000000"> apache2<br /> apache2-common<br /> apache2-mpm-prefork<br /> apache2-utils<br /> libapache2-svn<br /> libapache2-mod-auth-pam<br /> libapache2-mod-auth-sys-group<br /> subversion<br /> subversion-tools<br /></font><br /><br /></strong>创建一个名为subversion的组：groupadd subversion<br />将自己(eg.:user)和www-data(apapch2帐号)用户添加入subversion组，可以编辑/etc/group文件,在最后找到subversion添加入帐号名(eg:user,www-data),看上去就像这样:<strong class="highlight">subversion</strong>:x:1001:www-data,exp<br />然后是创建subversion库,并赋予subversion组中用户有读写subversion库的权限:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">   $ sudo mkdir /home/svn  #创建svn库的父路径<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   $ cd /home/svn<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   $ sudo mkdir myproject  #创建本svn库的目录<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   $ sudo svnadmin create /home/svn/myproject #使用svn命令,创建svn库<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   $ sudo chown -R root:subversion myproject #更改本目录的组<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   $ sudo chmod -R g+rws myproject #给本目录的组用户增加读写和递归增加新加目录的读写权限</span></div>注意上面提到的命令顺序,如果最后再执行创建库的命令(svnadmin create ....)则创建的文件没有获得组用户写的权限,这样在外部访问提交的时候会出错.<br />对于本机,可以直接使用file命令来访问:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  $ svn co(or checkout) file:///home/svn/myproject<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#or<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  $ svn co file://localhost/home/svn/myproject</span></div><em>注意：如果您并不确定主机的名称，您必须使用三个斜杠(///)，而如果您指定了主机的名称，则您必须使用两个斜杠(//).<br /></em>此时对svn库的权限是基于文件系统的,只要是subversion组中的用户都可以访问本svn库。<br /><br />接下来，讲述如何使用apache服务器来提供对svn库的访问<br />编辑文件/etc/apache2/mods-available/dav_svn.conf<br />增加如下的内容：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Location </span><span style="COLOR: #ff0000">/svn/myproject</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     DAV svn<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     SVNPath /home/svn/myproject<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     AuthType Basic<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     AuthName "myproject subversion repository"<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     AuthUserFile /etc/subversion/passwd<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">LimitExcept </span><span style="COLOR: #ff0000">GET PROPFIND OPTIONS REPORT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Require valid-user<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">LimitExcept</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Location</span><span style="COLOR: #0000ff">&gt;</span></div><p>apache会解析url中的/svn/myproject部分，来定位svn库，当收到此请求时，会查询svn库：/home/svn/myproject，这里的认证方式是basic，对于访问要求valid-user，帐号文件在/etc/subversion/passwd中。<br />注意重新设置后要重启apache2：sudo /etc/init.d/apache2 restart<br />编辑生成帐号文件: sudo htpasswd2 -c /etc/subversion/passwd user  #给user帐号创建口令<br />这时候可以通过浏览器来浏览svn库了<br />在我的设置中发现，apache2会自动绑定ipv6地址，可能会有些问题，可以强制apache绑定v4地址，在/etc/apache2/port.conf中改成：Listen [bindedip]:[port]的形式<br /><br />通过https来访问svn库<br /><font color="#000000">首先生成一个 SSL 签名，使用命令<br /><br /> # apache2-ssl-certificate<br /><br />这里会有一系列关于你的个人隐私的问题，回答完了，自然的签名也就生成了，然<br />后我们就要在 apache2 里面打开 SSL 了，现在要做的是开启 ssl 模块<br /><br /> # a2enmod ssl<br /><br />然后，使用 apache2 的虚拟主机功能来添加 SSL 的支持，将<br /><br /> /etc/apache2/sites-available/default<br /><br />复制一份，叫<br /><br /> /etc/apache2/sites-available/ssl<br /><br />好啦<br /><br />修改 default 文件的开头为<br /><br /> NameVirtualHost *:80<br /> &lt;VirtualHost *:80&gt;<br /><br />修改 ssl 文件的开头为<br /><br /> NameVirtualHost *:443<br /> &lt;VirtualHost *:443&gt;<br /><br />这里 443 是 SSL 的标准端口。<br /><br />并在 ssl 文件中加入如下内容，在&lt;VirtualHost&gt;&lt;/VirtualHost&gt;内<br /><br /> SSLEngine On<br /> SSLCertificateFile /etc/apache2/ssl/apache.pem<br /><br />保存文件后，运行命令<br /><br />   # a2ensite ssl<br /><br />来激活这个虚拟主机<br /><br />现在，修改文件<br /><br /> /etc/apache2/ports.conf<br /><br />加上一行<br /><br /> Listen 443<br /><br />好了，到此为止，SSL 服务器配置完成，重新启动 apache 吧。</font></p><p> </p><p>一些问题：<br />可能出现 RA layer request failed svn: MKACTIVITY of 400 Bad Request 之类的错误，这可能是因为使用了代理的原因，代理不支持svn的扩展命令,see:<a href="http://subversion.tigris.org/faq.html#proxy">http://subversion.tigris.org/faq.html#proxy</a><br />还有种原因，就是可能是你的客户端使用的是windowsxp，其他版本的windows我没试过，也是这样的错误，在linux下正常，解决方法不太清楚。<br />RA layer request failed svn: MKACTIVITY of 400 Bad Request，无论什么原因都可以用https代替http来暂时解决这样的问题。<br /><br />参考：<br /><a href="http://fanqiang.chinaunix.net/app/web/2005-05-18/3257.shtml">http://fanqiang.chinaunix.net/app/web/2005-05-18/3257.shtml</a><br /><a href="http://wiki.ubuntu.org.cn/SubVersion?highlight=%28subversion%29">http://wiki.ubuntu.org.cn/SubVersion?highlight=%28subversion%29</a><br /></p><img src ="http://www.blogjava.net/pandawang/aggbug/67844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2006-09-05 17:00 <a href="http://www.blogjava.net/pandawang/archive/2006/09/05/67844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在unbuntu中安装xgl及使用</title><link>http://www.blogjava.net/pandawang/archive/2006/08/31/66843.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Thu, 31 Aug 2006 05:03:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2006/08/31/66843.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/66843.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2006/08/31/66843.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/66843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/66843.html</trackback:ping><description><![CDATA[在sources.list中添加如下几个源：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">deb http://www.beerorkid.com/compiz/ dapper main<br />deb http://xgl.compiz.info/ dapper main<br />deb-src http://xgl.compiz.info/ dapper main <br /></span></div>添加代理：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">export http_proxy="http://xxx.xxx.xxx.xxx:xxxx"</span></div>获取pgp密钥：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">wget http://www.beerorkid.com/compiz/quinn.key.asc -O - | sudo apt-key add - </span></div><br />nivida的驱动：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">sudo apt-get install nvidia-kernel-common nvidia-glx</span></div>编辑文件：/etc/X11/xorg.conf<br />在module部分中确定lode xgl，有如下代码：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Load "glx"</span></div>在devices部分修改除了Identifier行的其他各行，修改后如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Section "Device"<br />    Identifier- leave this line alone!<br />    Driver        "nvidia"<br />    BusID        "PCI:1:0:0"<br />    Option         "RenderAccel"         "true"<br />EndSection</span></div>在最下面添加Extensions部分，代码如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Section "Extensions"<br />          Option  "Composite" "Enable"<br />EndSection</span></div>下面是安装必要的库文件：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">sudo apt-get install compiz xserver-xgl libgl1-mesa xserver-xorg libglitz-glx1 compiz-gnome</span></div>以上是引文http://www.ubuntuforums.org/showthread.php?t=131267 中的方法，此文所讲的后面是加载方法，我没有采用，用的是这里讲的方法：http://forum.ubuntu.org.cn/viewtopic.php?t=16777 不过这里讲的安装方法中少了一个库文件，呵呵<br />设置xgl启动入口：<br />新建一个xgl启动脚本/usr/bin/startxgl.sh,内容如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer &amp; sleep 2 &amp;&amp; DISPLAY=:1<br /># Start GNOME<br />exec gnome-session </span></div>使脚本可执行：
sudo chmod 755 /usr/bin/startxgl.sh<br />新建一个compiz脚本/usr/bin/startcompiz,内容如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">#!/bin/sh<br />killall gnome-window-decorator<br />wait<br />gnome-window-decorator &amp; LD_PRELOAD=/usr/lib/fglrx/libGL.so.1.2.xlibmesa<br />compiz --replace gconf miniwin decoration transset wobbly fade minimize cube rotate zoom scale move resize place switcher trailfocus water &amp; </span></div>使得脚本可执行：sudo chmod 755 /usr/bin/startcompiz
<br /><span class="postbody">
在登陆管理器里建一个XGL会话：
建立一个文件</span>/usr/share/xsessions/xgl.desktop ，内容如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">[Desktop Entry]<br />Encoding=UTF-8<br />Name=XGl<br />Exec=/usr/bin/startxgl.sh<br />Icon=<br />Type=Application </span></div><br /><span class="postbody">
打开桌面菜单-〉系统-〉首选项-〉会话
<br />
在最右边的“启动程序”里添加 /usr/bin/startcompiz 这句话
<br />最后不要忘了</span><br />sudo aptitude update
<br />
sudo aptitude upgrade<br />关闭所有程序<br />ctrl-alt-backspace启动X<br />登录时在会话中选择xgl<br />会提示是否为默认会话，建议选择仅本次<br />哦，差点忘了，怎么使用：<br />
CTRL + ALT + Left/right arrow key. Switches to the new side of the cube for me. <br /><br />
CTRL + ALT + SHIFT + Left/Right arrow key- Takes the in focused app around cube.<br /><br />
CTRL + ALT + Left Click on Desktop - allows you to use the mouse to rotate cube.<br /><br />
F12 - uses the Expose like trick<br /><br />
Alt- Tab - switcher Vista-style<br />
看起来有点晕，尤其是输入法的浮动窗体<br /><img src ="http://www.blogjava.net/pandawang/aggbug/66843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2006-08-31 13:03 <a href="http://www.blogjava.net/pandawang/archive/2006/08/31/66843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Design Pattern Practice [zz]</title><link>http://www.blogjava.net/pandawang/archive/2006/04/24/42770.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Mon, 24 Apr 2006 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2006/04/24/42770.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/42770.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2006/04/24/42770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/42770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/42770.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=125&amp;threadID=27195										Design Pattern Practice 1．序 本文从一个简单的多列排序的例子入手，由浅入深地讲解Design Pattern（设计模式）的目的、分析和实践。 文中的例子用到Compositor Pattern和Decora...&nbsp;&nbsp;<a href='http://www.blogjava.net/pandawang/archive/2006/04/24/42770.html'>阅读全文</a><img src ="http://www.blogjava.net/pandawang/aggbug/42770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2006-04-24 09:23 <a href="http://www.blogjava.net/pandawang/archive/2006/04/24/42770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javasvn</title><link>http://www.blogjava.net/pandawang/archive/2006/03/23/37002.html</link><dc:creator>Long Long Ago</dc:creator><author>Long Long Ago</author><pubDate>Thu, 23 Mar 2006 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/pandawang/archive/2006/03/23/37002.html</guid><wfw:comment>http://www.blogjava.net/pandawang/comments/37002.html</wfw:comment><comments>http://www.blogjava.net/pandawang/archive/2006/03/23/37002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pandawang/comments/commentRss/37002.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pandawang/services/trackbacks/37002.html</trackback:ping><description><![CDATA[
		<p>最近在用javasvn做一个svn的管理程序，用rcp实现，在实现过程中发现，如果只是单纯的用java程序实现目录列表的时候，一切正常，但使用rcp后始终出错，认证错误，观察javasvn源代码后发现，在定义认证manager的时候javasvn会检测是否在使用eclipse，如果是，则定义一个eclipseAuth××manger，后来修改了相应的代码，不调用那个检测是否为eclipse的方法后就ok了，估计是在eclipse中使用javasvn会有特殊性，故加了此段代码，不过简单的rcp是不需要的。</p>
<img src ="http://www.blogjava.net/pandawang/aggbug/37002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pandawang/" target="_blank">Long Long Ago</a> 2006-03-23 11:22 <a href="http://www.blogjava.net/pandawang/archive/2006/03/23/37002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>