﻿<?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-tech.cap-随笔分类-tips</title><link>http://www.blogjava.net/cap/category/2218.html</link><description>我在一望无际的路上</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:50:57 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:50:57 GMT</pubDate><ttl>60</ttl><item><title>ruby中文搜索支持的想法</title><link>http://www.blogjava.net/cap/archive/2006/12/10/86730.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Sun, 10 Dec 2006 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/12/10/86730.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/86730.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/12/10/86730.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/86730.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/86730.html</trackback:ping><description><![CDATA[<p>ruby下面中文分词的搜索如何进行?</p>
<p>目前开始考虑这个问题, <strong>目标是使用</strong><a href="http://ferret.davebalmain.com/api/files/TUTORIAL.html"><strong>ferret</strong></a><strong>,</strong> ferret是lucene搜索引擎的ruby版本, 凭借一点lucene的经验, 我个人是非常喜欢ferret的, 靠lucene强大的分词,index,search功能, 可以做出很多有趣的功能, 但是ferret有两个难点</p>
<ol>
<li>不支持中文分词,而且集成第三方分词对我来说较困难(没有开发c的经验,而且我知道的中文分词算法都是java版本)</li>
<li>有时候做索引会出错,好象是段地址错误, 因为ferret是在前台index, 所以错误也是在前台fastcig进程中, 感觉很不爽</li>
</ol>
<p><strong>原来的想法</strong></p>
<p>利用ferret 和lucene兼容的特点, 单独写一个java 类库, 定时对资源做索引,不过后来为了效率(<a href="http://ferret.davebalmain.com/trac/wiki/MyFirstBenchmark#conclusions:">index比lucene快</a>), 新版本的ferret放弃了和lucene兼容, 这个想法是不可行了</p>
<p><strong>更新后的想法</strong></p>
<p>利用<a href="http://myft.twomice.net/index.php?xname=ILBS301">mysql中文分词插件</a>,这个东西倒是很好,但是偏偏只支持mysql4.0,和mysql 5.1 beta, 刚好不支持我目前用的mysql5.0.x 由于没有现成版本可以用, 也只好放弃(这个插件只能用来全文搜索, 不像ferret还有其他好玩的功能)</p>
<p><strong>目前的想法:</strong></p>
<ol>
<li><strong>在ferret中通过<a href="http://rjb.rubyforge.org/">rjb</a>调用 <a href="http://www.google.cn/search?hl=zh-CN&amp;newwindow=1&amp;client=opera&amp;rls=en&amp;hs=XKL&amp;q=lucene+%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D&amp;btnG=%E6%90%9C%E7%B4%A2&amp;meta=">lucene的中文分词</a>然后再index</strong></li>
<li>需要index的model都增加一个属性indexed,新建或者更新的时候都把indexed设置为false</li>
<li>把java写好的中外分词通过rjb包装为一个drb service,或者干脆挂在resin上做http页面调用</li>
<li>在后台,单独的程序定时启动把所有未index的记录select出来(indexed=false), 然后逐一调用第二步开发的进行分词,即是过程中出错, 也不影响前台页面, 这里只改动ferret的ruby代码.</li>
<li>如果可能, 搜索程序通过远程协议来对keyword分词,然后再搜索</li>
</ol>
<p><strong>缺点</strong></p>
<ol>
<li>
<p style="MARGIN-LEFT: 2em">这个方案看上去比较恶心.很像一件到处是补丁的衣服, 目前没有时间慢慢去研究ferret中的c代码. 只好通过java来绕圈子</p>
</li>
<li>
<p style="MARGIN-LEFT: 2em">在后台运行index的话, 就无法实时搜索当前文章, 而是有一个延时, 不过我觉得这个好解决. 另外后台index 就算出错了也不影响前台页面, 大不了有些记录搜索不到而已</p>
</li>
<li>
<p style="MARGIN-LEFT: 2em">对keyword分词会有速度影响, 不过影响应该很小</p>
</li>
</ol>
<p style="MARGIN-LEFT: 2em"><br/></p><img src ="http://www.blogjava.net/cap/aggbug/86730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-12-10 18:15 <a href="http://www.blogjava.net/cap/archive/2006/12/10/86730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>YARV on Rails ~~~~!</title><link>http://www.blogjava.net/cap/archive/2006/03/24/37178.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Fri, 24 Mar 2006 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/03/24/37178.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/37178.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/03/24/37178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/37178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/37178.html</trackback:ping><description><![CDATA[还记得 上次我在blog中提到的那个 <a href="/cap/archive/2006/02/08/29908.html">YARV ruby虚拟机</a>  么<br /><br />本来以为YARV离实用还非常远, 但是从这个截图上看, 似乎YARV并非那么无用<br /><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);">/</span><span style="color: rgb(0, 0, 0);">var</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">www</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">rails</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">testsite </span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">usr</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">local</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">pkg</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">yarv</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">bin</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">ruby script</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">server<br /></span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Booting WEBrick<img src="http://www.blogjava.net/images/dot.gif" /><br /></span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Rails application started on http:</span><span style="color: rgb(0, 0, 0);">//</span><span style="color: rgb(0, 0, 0);">0.0</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">0.0</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">3000</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Ctrl</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">C to shutdown server; call with </span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">help </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> options<br />[</span><span style="color: rgb(0, 0, 0);">2006</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">02</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">20</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">40</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">23</span><span style="color: rgb(0, 0, 0);">] INFO  WEBrick </span><span style="color: rgb(0, 0, 0);">1.3</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);"><br />[</span><span style="color: rgb(0, 0, 0);">2006</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">02</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">20</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">40</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">23</span><span style="color: rgb(0, 0, 0);">] INFO  ruby </span><span style="color: rgb(0, 0, 0);">1.9</span><span style="color: rgb(0, 0, 0);">.0 (</span><span style="color: rgb(0, 0, 0);">2006</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">02</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">14</span><span style="color: rgb(0, 0, 0);">) [x86_64</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">linux]<br />[</span><span style="color: rgb(0, 0, 0);">2006</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">02</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">20</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">10</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">40</span><span style="color: rgb(0, 0, 0);">:</span><span style="color: rgb(0, 0, 0);">23</span><span style="color: rgb(0, 0, 0);">] INFO  WEBrick::HTTPServer</span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);">start: pid=25032 port=3000</span></div><img src="http://i.loveruby.net/d/images/yarv-rails.png" /><br />有人已经实现了在YARV 上跑起webrick和rails的首页(应用估计是没戏),  他的<a href="http://i.loveruby.net/d/20060220.html#p10">blog在此</a>(日文)<br /><br /><br /><img src ="http://www.blogjava.net/cap/aggbug/37178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-03-24 11:56 <a href="http://www.blogjava.net/cap/archive/2006/03/24/37178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[rails] 版本大跃进 SwitchTower 改名为Capistrano</title><link>http://www.blogjava.net/cap/archive/2006/03/07/34029.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 07 Mar 2006 04:14:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/03/07/34029.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/34029.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/03/07/34029.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/34029.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/34029.html</trackback:ping><description><![CDATA[<P>一不留神就到1.1版本了, <BR><BR>switchtower命令居然改名为cap, 倒<BR><BR></P><img src ="http://www.blogjava.net/cap/aggbug/34029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-03-07 12:14 <a href="http://www.blogjava.net/cap/archive/2006/03/07/34029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[LIBRARY] 茁壮成长的ruby扩展库</title><link>http://www.blogjava.net/cap/archive/2006/03/07/34027.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 07 Mar 2006 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/03/07/34027.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/34027.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/03/07/34027.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/34027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/34027.html</trackback:ping><description><![CDATA[<P>自从rails红火以后, ruby的社区明显比以前壮大了不少(小弟我也是因为rails才学习ruby的),所谓人多好办事, 各种ruby的扩展类库也如雨后春笋一般冒出来,他们的特点就是版本低(很少上1.0), 名字都取得很有个性, 主要的目的也是增强或者替换ruby内置的标准库, 下面列出几个我在用的</P>
<H3><A href="http://rio.rubyforge.org/">rio</A> : Ruby I/O Comfort Class</H3>
<P>rio就是一个ruby内置io类的包装, 主要的作用范围就是操作文件, 抓网页, 压缩解压, 处理CSV等等IO操作, 现在的版本是0.3.7, rio使用起来及其简单<BR>例子如下</P>
<P>拷贝或者增加内容到字符串对象中</P><PRE><CODE> rio('afile') &gt; astring      # copy
 rio('afile') &gt;&gt; astring     # append
</CODE></PRE>
<P>拷贝或者增加内容到文件中&nbsp;</P><PRE><CODE> rio('afile') &lt; astring      # copy
 rio('afile') &lt;&lt; astring     # append
</CODE></PRE>
<P>他的官方站点里面有详细的示例, 如果是经常要在linux上维护文件的朋友请不要错过.</P>
<H3><A href="http://rubyforge.org/projects/optionparser/">commandline</A>:命令行增强</H3>
<P>commandline是一个简化命令行界面的库,他直接替代内置的optparser来解析用户使用的参数,同时还能自动打印出标准的usage/version/help提示信息,还提供Unix, Gnu, X Toolkit三种风格支持<BR>使用commanline很简单,继承他的CommandLine::Application即可<BR>例子如下</P><PRE><CODE>class App &lt; CommandLine::Application

    def initialize
      version           "0.0.1"
      author            "Author Name"
      copyright         "2005, Jim Freeze"
      synopsis          "[-dhV] param_file out_file"
      short_description "A simple app example that takes two arguments."
      long_description  "app5 is a simple application example that supports "+
                        "three options and two commandline arguments."

      option :version
      option :debug
      option :help

      expected_args   :param_file, :out_file
    end

    def main
      puts "main called"
      puts "@param_file = #{@param_file}"
      puts "@out_file   = #{@out_file}"
    end
  end
</CODE></PRE>
<P>通过执行ruby xxx.rb -h指令就可以立刻看到标准的help被打印出来</P><PRE><CODE>  NAME

      xxx.rb - A simple app example that takes two arguments.

  DESCRIPTION

      xxx.rb is a simple application example that supports three options
      and two commandline arguments.

  OPTIONS

      --version,-V
          Displays application version.

      --debug,-d
          Sets debug to true.

      --help,-h
          Displays help page.

  AUTHOR:  Author Name
  Copyright (c) 2005, Jim Freeze
</CODE></PRE>
<H3><A href="http://rubyforge.org/projects/fastercsv/">fastercsv</A>:更快更简单的csv库</H3>
<P>顾名思义, 就是更快csv处理库, 偶看maillist上看到的评测是要快10倍(内置的实在太慢了,以至于fastercsv快它10倍还是比python版本的慢), 同时使用起来也比内置csv简单, 一看就会(除非你根本不知道csv是什么) <BR>比如读取一个csv文件</P><PRE><CODE>  FasterCSV.foreach("path/to/file.csv") do |row|
    puts row[0]
    puts row[2]
  end
</CODE></PRE>
<P>使用header支持读取cvs文件</P><PRE><CODE>  FasterCSV.foreach("path/to/file.csv",:headers=&gt;true) do |row|
    #第一行是header,会自动忽略
    puts row['fielda']
    puts row['fieldc']
  end
</CODE></PRE>
<P>需要提醒的是它使用require 'faster_csv',类名却是FasterCSV,不是很符合ruby的命名规则</P><img src ="http://www.blogjava.net/cap/aggbug/34027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-03-07 12:10 <a href="http://www.blogjava.net/cap/archive/2006/03/07/34027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>的确够恶心的(java代码)</title><link>http://www.blogjava.net/cap/archive/2006/03/04/33640.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Sat, 04 Mar 2006 14:39:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/03/04/33640.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/33640.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/03/04/33640.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/33640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/33640.html</trackback:ping><description><![CDATA[from <A href="http://www.loudthinking.com/arc/000568.html">loudthinking</A>&nbsp;and&nbsp;<A href="http://www.netbeans.org/kb/articles/creator.html">java creator 2 demo</A><BR><BR>例子代码中有一句<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"><SPAN style="COLOR: #000000">UploadedFile&nbsp;uploadedFile&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(UploadedFile)&nbsp;fileUpload1.getUploadedFile();<BR>String&nbsp;text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;uploadedFile.getAsString();</SPAN></DIV><BR><BR>看上去确实很恶心, 真像是在绕口令,就算是搞demo, 也应该专业一点嘛<BR><BR><BR><BR><BR><img src ="http://www.blogjava.net/cap/aggbug/33640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-03-04 22:39 <a href="http://www.blogjava.net/cap/archive/2006/03/04/33640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>beta book读书俱乐部的构思</title><link>http://www.blogjava.net/cap/archive/2006/02/28/32934.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 28 Feb 2006 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/02/28/32934.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/32934.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/02/28/32934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/32934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/32934.html</trackback:ping><description><![CDATA[什么是beta book?<br /><br />现在的ruby相关图书都是通过pragmaticprogrammer.com(以下称pragprog) 来进行订购的,  pragprog的书的特点是每本书都是单独编译出来的,附带有购买者的信息, 同时支持在线升级.  他有很多书都是处于beta book的阶段, 也就是没有正式出版, 但是pdf已经成书可以阅读, 购买pdf以后可以定期去update为最新的版本(包括修改错误, 已经和最新版本的软件同步) 对于ruby和rails这样快速升级的技术, betabook的做法是很有道理的, 就拿Agile Web Development with Rails来说, 版本是从Beta,Beta 2,Beta 3,Candidate,P1.0,P2.0,P3.0,P3.1,P4.0 一路更新而来, 和rails版本同步 <br /><br />目前club的正版图书如下<br /><br /><a href="http://www.pragmaticprogrammer.com/titles/fr_rr/index.html">Rails Recipes</a> : 这本书是通过例子来一步一步介绍rails. 带有丰富的example和一步步搭建一个ruby web应用的各个方面的说明   <br /><br /><a href="http://pragmaticprogrammer.com/titles/fr_eir/index.html">Enterprise Interation with Ruby</a> : 这本书主要介绍了ruby和企业级应用集成的内容, 包括<strong>Oracle, MySQL,LDAP,XML,Sockets, HTTP,XML-RPC, SOAP, CORBA, RMI 等 </strong>这本书beta出来也有一段时间了,介绍的话题也是比较独家的 <br /><br /><a href="https://gettingreal.37signals.com/">Getting Real</a> : <br /><br />欢迎大家一起来购买这些电子书,发mail到 tomcap[at]gmail.com 说明自己的来意即可<br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/cap/aggbug/32934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-02-28 23:05 <a href="http://www.blogjava.net/cap/archive/2006/02/28/32934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby中发送带附件,中文,html的email</title><link>http://www.blogjava.net/cap/archive/2006/02/06/29703.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Mon, 06 Feb 2006 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/02/06/29703.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/29703.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/02/06/29703.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/29703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/29703.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mailfactory是rubyforge上一个简单的邮件发送包, 通过它我们可以很方便的发送带附件和html格式的邮件,不过目前的mailfactory在支持中文上有一些问题, 需要打一个补丁.如下...&nbsp;&nbsp;<a href='http://www.blogjava.net/cap/archive/2006/02/06/29703.html'>阅读全文</a><img src ="http://www.blogjava.net/cap/aggbug/29703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-02-06 16:14 <a href="http://www.blogjava.net/cap/archive/2006/02/06/29703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows环境下ruby连接mysql需要的驱动包</title><link>http://www.blogjava.net/cap/archive/2006/01/20/28731.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Fri, 20 Jan 2006 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/01/20/28731.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/28731.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/01/20/28731.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/28731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/28731.html</trackback:ping><description><![CDATA[终于不需要手动去编译mysql的驱动了, 档案在<A HREF="/Files/cap/mysql-ruby-win32.rar">这里</A><BR><BR>一个4.1.15 <BR>一个5.0.15<BR><BR>把对应的文件(mysql.so)拷贝到ruby\lib\ruby\site_ruby\1.8\i386-msvcrt 下面即可<BR><BR><BR><img src ="http://www.blogjava.net/cap/aggbug/28731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-01-20 10:28 <a href="http://www.blogjava.net/cap/archive/2006/01/20/28731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rails术语: Component, Plugin,Generator, Engine</title><link>http://www.blogjava.net/cap/archive/2006/01/14/28057.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Sat, 14 Jan 2006 15:49:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2006/01/14/28057.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/28057.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2006/01/14/28057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/28057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/28057.html</trackback:ping><description><![CDATA[<ul>
<li><p>component</p>

<p>偏向显示一端, 是一组controller和view的集合,专注于显示界面,比如专门显示歌曲列表的 component, 各处页面都可以调用它显示歌曲列表</p></li>
<li><p>plugin</p>

<p>增强系统功能的模块, 专注于技术层面的功能,比如增强form-tag-helper,增强activerecord</p></li>
<li><p>generator</p>

<p>rails通过script提供的自动生成代码的包.一些第三方扩展也使用的genrator来生成代码</p></li>
<li><p>engine</p>

<p>是generator的继任者,专注于一个应用层面的功能,可以理解为和plugin的功能是正交的 ,比如一个登陆模块, 他只解决登陆这个业务层面的问题,engine的在用户下载以后是可以作自定义修改来配合自己的业务的</p></li>
</ul>

<img src ="http://www.blogjava.net/cap/aggbug/28057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2006-01-14 23:49 <a href="http://www.blogjava.net/cap/archive/2006/01/14/28057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActiveState发布了新版本的Ruby IDE</title><link>http://www.blogjava.net/cap/archive/2005/12/03/22312.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Fri, 02 Dec 2005 17:16:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/12/03/22312.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/22312.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/12/03/22312.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/22312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/22312.html</trackback:ping><description><![CDATA[<P>12月30号, ActiveState的发布了最新版本的IDE: Komodo 3.5.1<BR>这个IDE主要是对动态语言开发提供支持, 从这个版本开始,ruby终于得到正式的支持 <IMG height=19 src="http://www.blogjava.net/Emoticons/shades_smile.gif" width=19 border=0>&nbsp; (3.5版本只有正式的mac os版本,下面是它的截图,3.5.1是增加了对windows的支持)<BR><BR><IMG style="WIDTH: 601px; HEIGHT: 489px"  src="http://www.activestate.com/_images/screenshots/ss_Komodo_rails_large.jpg" border=0><BR><BR>这个真是一个对于ruby开发者的好消息, 一直以来,ruby都缺乏一个好用的开发工具, 自带的FreeRIDE 在windows上非常不稳定,速度不快,很容易退出.ruby还有一个专门支持vim的<A href="http://vim-ruby.rubyforge.org/">模块</A>,但是使用它让我感觉到我学习的不是ruby,而是vi. 其他第三方的ruby开发工具中,作得好的算<A href="http://www.jedit.org/">jedit</A>的<A href="http://www.jedit.org/ruby">ruby plugin</A>和<A href="http://www.eclipse.org/">eclispe</A>的<A href="http://rubyeclipse.sourceforge.net/">RDT</A> ,但是这个工具对于ruby都只能提供很原始的编辑功能, 商业版本的<A href="http://www.ruby-ide.com/ruby/ruby_ide_and_ruby_editor.php">Arachno Ruby IDE</A>用起来花钱不说,功能也不怎么样.&nbsp;据说mac上面的<A href="http://www.macromates.com/">textmate</A>不错,但是遗憾的是我用的是<A href="http://pearpc.sourceforge.net/">windows<BR></A><BR>我选择用eclipse RDT来写,因为eclipse内置支持CVS (还算不错,起码比wincvs好用,靠这个我放弃了vim) ,对于ruby的开发工具,我不敢奢望能够作到<A href="http://www.jetbrains.com/idea/">IDEA</A>那样好用, 也许动态语言是不可能做到<A href="http://www.jetbrains.com/idea/features/code_editing.html">那样</A>. 但是代码格式化,即时检错(格式上的低级错误), 调试环境,版本控制等基本功能实现起来应该不算太难吧<BR><BR>现在Komodo给我们带来了一个新的选择,和以上的工具不同,Komodo的版本是3.5 (你喜欢0.x版本的软件吗?),而且他对python的支持也能<A href="http://www-128.ibm.com/developerworks/cn/linux/sdk/python/charm-14/">说明一点问题</A>,起码不是从零开始的&nbsp;,唯一的缺点是比较消耗资源. 不过<A href="http://myhard.yesky.com/memoery/358/2193858.shtml">问题不大</A>, 怎么样? 去<A href="http://www.activestate.com/Products/Komodo/?tn=1">试试</A>吧</P>
注册机在<a href='http://www.blogjava.net/Files/cap/ActiveState.Komodo.v3.5.2.Professional.Incl.Keygen-SSG.rar'>这里</a><img src ="http://www.blogjava.net/cap/aggbug/22312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-12-03 01:16 <a href="http://www.blogjava.net/cap/archive/2005/12/03/22312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Try Ruby! 大家一起来!</title><link>http://www.blogjava.net/cap/archive/2005/12/03/22309.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Fri, 02 Dec 2005 16:18:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/12/03/22309.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/22309.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/12/03/22309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/22309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/22309.html</trackback:ping><description><![CDATA[<H2>&nbsp;</H2>
<H2>想感受一下ruby却又不想费事的安装它? </H2>
<P>没有关系, 现在有了<A href="http://tryruby.hobix.com/">Try Ruby</A>站点, 只要你有浏览器你就可以立刻使用ruby了,Try Ruby提供了一个类似ruby的irb那样的交互环境, 还提供了一个简短的ruby教程.<BR><BR><IMG height=261 alt=o_tryruby.gif src="http://www.blogjava.net/images/blogjava_net/cap/2217/o_tryruby.gif" width=389 border=0><BR><BR><BR>怎么样? 还不马上去<A href="http://tryruby.hobix.com/">试试看</A><BR>----------------------------------------------------------<BR>ps: <A href="http://board.ruby-cn.org">ruby-cn</A> 上的cid73 告诉我, <A href="http://www.ruby.ch/interpreter/rubyinterpreter.shtml">这里</A>还有一个一次性运行整段代码的的ruby解释网页<BR>虽然比上面的简陋一点,不过也还不错啦<BR><BR></P><img src ="http://www.blogjava.net/cap/aggbug/22309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-12-03 00:18 <a href="http://www.blogjava.net/cap/archive/2005/12/03/22309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby的super语法,真是够灵活</title><link>http://www.blogjava.net/cap/archive/2005/11/29/21803.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 29 Nov 2005 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/11/29/21803.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/21803.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/11/29/21803.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/21803.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/21803.html</trackback:ping><description><![CDATA[<P>和java不同, ruby中的super代替的并非是父类, 而是父类中和当前方法名相同的方法, 在ruby中, super的用法比较灵活, 使用super的时候, 如果不带任何参数(也没有括号), 实际上的作用是自动调用父类中的当前方法, 并且把当前参数也传过去, 也就是说<BR>super.thismethod(param1,param2...) 在ruby中可以简化为一个 super 就可以了, 真是非常方便<BR><BR>例子</P>
<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: 97.18%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 130px; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;A&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;String<BR>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">def</SPAN><SPAN style="COLOR: #000000">&nbsp;to_s<BR>&nbsp;&nbsp;super</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">__</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;end<BR>end<BR><BR>a</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">A.new(</SPAN><SPAN style="COLOR: #800000">'</SPAN><SPAN style="COLOR: #800000">ok</SPAN><SPAN style="COLOR: #800000">'</SPAN><SPAN style="COLOR: #000000">)<BR>p&nbsp;a.to_s<BR></SPAN></DIV><BR>如果父类该方法的参数和子类不一样, 才需要显式的传入参数调用<BR><BR>注意事项,super.somemethod的语法在ruby中是没有的, 因为super已经是父类的方法了, 所以在使用super的时候,如果当前方法是新增的,那么是不能使用super指令的. 使用self代替即可(父类的方法直接继承到self中)<BR>&nbsp;
<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: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;B&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">String<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">def</SPAN><SPAN style="COLOR: #000000">&nbsp;to_s<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;super</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">__</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;end<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">def</SPAN><SPAN style="COLOR: #000000">&nbsp;newmethod&nbsp;&nbsp; #new method<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;self</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">__</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;end<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>end</SPAN></DIV><BR><BR>另外,super指令是不理会方法访问控制的, 也就是说,super可以直接调用父类中的private方法,&nbsp; <IMG height=19 src="http://www.blogjava.net/Emoticons/75_75.gif" width=19 border=0>&nbsp;似乎有点灵活过头了<img src ="http://www.blogjava.net/cap/aggbug/21803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-11-29 11:44 <a href="http://www.blogjava.net/cap/archive/2005/11/29/21803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby中字符串的转码 使用方法以及注意事项 </title><link>http://www.blogjava.net/cap/archive/2005/11/28/21694.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Mon, 28 Nov 2005 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/11/28/21694.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/21694.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/11/28/21694.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/21694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/21694.html</trackback:ping><description><![CDATA[<P>不同于java, ruby内部并不支持unicode(据说到2.0会支持, 但是没有确认) <BR>在字符编码处理上ruby是借助于Open Group的iconv库, 这个库在linux上似乎默认就有,&nbsp; windows上没有这个库, 解决方案在末尾<BR><BR>使用iconv很简单, 下面是把iso8859-1编码转换到GBK编码的例子</P>
<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">require&nbsp;</SPAN><SPAN style="COLOR: #800000">'</SPAN><SPAN style="COLOR: #800000">iconv</SPAN><SPAN style="COLOR: #800000">'</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>conv&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Iconv.new(</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">GBK</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">ISO-8859-1</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000">)<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>result&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;conv.iconv(</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">hello</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000">)<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>result&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;conv.iconv(nil)<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>conv.close</SPAN></DIV>
<P>需要<FONT color=#ff0000>注意</FONT>的是转换以后还需要调用一下iconv(nil)来刷新未输出的数据 , 最后记得关闭conv<BR><BR>以上方式可以用block来简化</P>
<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"><SPAN style="COLOR: #000000">Iconv.open(toencoding,&nbsp;fromencoding)&nbsp;do&nbsp;</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">cd</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;input.each&nbsp;{</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">s</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">&nbsp;output&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;cd.iconv(s)}<BR>&nbsp;&nbsp;output&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;cd.iconv(nil)<BR>end</SPAN></DIV>
<P>当然,还有一种更简单的方式</P>
<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">Iconv.conv(toendocing,&nbsp;fromencoding,&nbsp;str)</SPAN></DIV>
<P>最后还要提醒一下, iconv接受编码是toencoding在前, fromencoding在后,&nbsp;不要记错了.偶就是因为这个问题被郁闷了半天<BR><BR><BR>题外话:&nbsp; ruby中很多功能都依赖于各种库, 比如这个iconv, 真是胶水语言的典型范例.<BR><BR>--------------------------------------------------------------------<BR>补充:&nbsp; windows下面iconv 的安装<BR><BR>到<A href="http://www.dave.burt.id.au/ruby/iconv.zip">这里</A>下载iconv安装包,&nbsp; 按照如下方式放置包中的文件就OK了<BR><BR>iconv.so -&gt;&nbsp;&nbsp;&nbsp; ruby\lib\ruby\1.8\i386-mswin32\<BR>iconv.dll -&gt;&nbsp;&nbsp; windows\system32\<BR>charset.dll -&gt; windows\system32\<BR><BR>更详细的说明见安装包中的README<BR><BR><BR><BR></P><img src ="http://www.blogjava.net/cap/aggbug/21694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-11-28 17:14 <a href="http://www.blogjava.net/cap/archive/2005/11/28/21694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rubygem的小细节</title><link>http://www.blogjava.net/cap/archive/2005/11/18/20409.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Fri, 18 Nov 2005 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/11/18/20409.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/20409.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/11/18/20409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/20409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/20409.html</trackback:ping><description><![CDATA[<P>我在linux上安装了rubygem以后， 发现一个问题，单独写的ruby文件无法以相对路径require gem上的包 <BR>比如 <BR>require 'something' 不行,必须以绝对路径 require '/usr/local....../something' 才可以 <BR>我查询了ruby的loadpath ("$:") ,发现这个路径并不在RUBY的loadpath中, 按道理说不能require是正确的 </P>
<P>但是为什么在我的windows上面或者在rubyonrails程序中的就可以这样require了呢,经过一番google再加上自己多次试验，终于发现了其中的缘故 </P>
<P>原来windowsXP下面有一个环境变量 RUBYOPT='rubygems' 而linux下面没有， 在linux下面加上RUBYOPT以后，发现可以工作, 进一步发现只要在require其他类以前先require 'rubygems' 程序也能自动识别gem包内的库， 看来，rubygems 对require函数作了手脚， 总结如下 </P>
<P>RUBYOPT中'rubygems' 实际上引用的是 ubygems.rb这个文件,在ubygems.rb中再require 'rubygems' 相当于作了一个alias </P>
<P>在rubygems.rb中, 对Kernel模块作了如下调整 <BR>1增加了require_gem的指令,这个指令支持按照指定版本号require <BR>2在文件末尾, require了 'custom_require' </P>
<P>在custom_require.rb中, 对require函数作了修改,代码如下 </P>
<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"><SPAN style="COLOR: #000000">module&nbsp;Kernel&nbsp;<BR>&nbsp;&nbsp;alias&nbsp;require__&nbsp;require&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">def</SPAN><SPAN style="COLOR: #000000">&nbsp;require(path)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;require__&nbsp;path&nbsp;<BR>&nbsp;&nbsp;rescue&nbsp;LoadError&nbsp;</SPAN><SPAN style="COLOR: #000000">=&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;load_error&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@gempath_searcher&nbsp;</SPAN><SPAN style="COLOR: #000000">||=</SPAN><SPAN style="COLOR: #000000">&nbsp;Gem::GemPathSearcher.new&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;spec&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;@gempath_searcher.find(path)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gem.activate(spec.name,&nbsp;true,&nbsp;</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">=&nbsp;#{spec.version}</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000">)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;require__&nbsp;path&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">raise</SPAN><SPAN style="COLOR: #000000">&nbsp;load_error&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;<BR>&nbsp;&nbsp;end&nbsp;<BR>end&nbsp;<BR><BR></SPAN></DIV>
<P><BR>在上面的代码中, require函数被更新, 当不能从RUBY内部的loadpath中读取文件时, require会从gempath中查找, 这样require函数就能支持gem了 </P>
<P>结论: 要使用gem中的包, 3个办法 <BR>1 使用RUBYOPT='rubygems' <BR>2 先require 'rubygems' 或者 'ubygems' <BR>3 使用require_gem</P><img src ="http://www.blogjava.net/cap/aggbug/20409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-11-18 11:56 <a href="http://www.blogjava.net/cap/archive/2005/11/18/20409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ResinStatusServlet查看resin状态</title><link>http://www.blogjava.net/cap/archive/2005/09/20/resin.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 20 Sep 2005 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/09/20/resin.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/13491.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/09/20/resin.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/13491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/13491.html</trackback:ping><description><![CDATA[<P>resin2没有resin3才有的jmx ,也没有像tomcat那样提供一个可以查看系统状态的应用，最近察看文档的时候，发现原来resin从2.0.5开始就提供了一个ResinStatusServlet，由于只是一个servlet，所以它可以嵌入到你的web应用中.  多少也算有些用处(resin3下依然可以继续使用）<BR>   默认情况下， 这个servlet是没有启用的，如果要启用，可以编辑resin.conf, 例子如下<BR></P><SPAN style="COLOR: #ff0000"><SPAN style="COLOR: #0000ff"><SPAN style="COLOR: #ff0000"><SPAN style="COLOR: #ff0000"><SPAN style="COLOR: #0000ff"><SPAN style="COLOR: #0000ff"><SPAN style="COLOR: #0000ff"><SPAN style="COLOR: #0000ff"><SPAN style="COLOR: #0000ff">
<P></P>
<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"><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">web-app </SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">='/admin'><BR>  </SPAN><SPAN style="COLOR: #ff0000"><allow-admin</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">true</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">allow-admin</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">servlet-mapping </SPAN><SPAN style="COLOR: #ff0000">url-pattern</SPAN><SPAN style="COLOR: #0000ff">='/resin-status'<BR>                   </SPAN><SPAN style="COLOR: #ff0000">servlet-name</SPAN><SPAN style="COLOR: #0000ff">='com.caucho.http.servlet.ResinStatusServlet'><BR>    </SPAN><SPAN style="COLOR: #ff0000"><init-param enable</SPAN><SPAN style="COLOR: #0000ff">='read'/><BR>  </SPAN><SPAN style="COLOR: #ff0000"></servlet-mapping</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><BR>  </SPAN><SPAN style="COLOR: #008000"><!--</SPAN><SPAN style="COLOR: #008000">  ip限制 </SPAN><SPAN style="COLOR: #008000">--></SPAN><SPAN style="COLOR: #000000"> <BR>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">security-constraint</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ip-constraint</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">127.0.0.1/32</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">ip-constraint</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><BR>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">web-resource-collection</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>      </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">url-pattern</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/*</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">url-pattern</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">web-resource-collection</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">security-constraint</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">web-app</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><BR></SPAN></DIV>
<P>这样通过url <A href="http://yourhost/yourapp/resin-status">http://yourhost/yourapp/resin-status</A> 就可以访问， 这个ResinStatusServlet同时还会注册一个com.caucho.http.admin.ApplicationAdmin的对象到你的servlet context中， 名字是"caucho.admin"。<BR></P></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><img src ="http://www.blogjava.net/cap/aggbug/13491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-09-20 09:53 <a href="http://www.blogjava.net/cap/archive/2005/09/20/resin.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最好用的java IDE: IntellijIDEA5.0发布</title><link>http://www.blogjava.net/cap/archive/2005/08/03/9111.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Wed, 03 Aug 2005 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/08/03/9111.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/9111.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/08/03/9111.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/9111.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/9111.html</trackback:ping><description><![CDATA[<P><IMG src="http://www.jetbrains.com/img/idealogo_start.gif"><BR><BR>总部在捷克，员工来自俄罗斯的Jetbrains公司昨天release了备受欢迎的java IDE&nbsp; : IDEA5.0</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P><EM><FONT color=#0000ff>IntelliJ在以下这些方面的功能可以说是 超常的：智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等。拥有业界领先的特性，IntelliJ减轻了开发人员常规性的任务（编码方面琐碎的事情），极大地推动了他们的产品开发</FONT></EM></P></BLOCKQUOTE><FONT face=宋体>
<P><BR>我试用了一下，和4.5的版本相比，我感觉出来的5.0新增加的特性有</FONT></P>
<UL>
<LI><FONT face=宋体>对web开发做了很大的支持，开始支持了CSS，javascript，html和xhtml，jsp页面终于可以自动格式化以及优化导入了。美中不足就是自动格式化后的jsp页面似乎没有好看多少。</FONT> 
<LI><FONT face=宋体>增加了一个欢迎界面，有点模仿visualstudio，没有什么用处</FONT> 
<LI><FONT face=宋体>界面更好看了，集成了Alloy的皮肤，不过我一向觉得Alloy的皮肤耗资源。</FONT> 
<LI><FONT face=宋体>以前的各项特性（代码分析，自动完成等）都增强了不少</FONT> 
<LI><FONT face=宋体>和4.5比速度似乎快了一些，不过我觉得可能是心理作用</FONT> 
<LI><FONT face=宋体>据说还支持了j2me,不过我没有用过</FONT></LI></UL>
<P><FONT face=宋体>各位使用java写程序员的一定要试试这个IDE，非常好用。他的中文介绍在<A href="http://www.jetmaven.net/products/intelliJ.php">这里</A>，官方网站在<A href="http://www.jetbrains.com/">这里</A>，下载在<A href="http://www.jetbrains.com/idea/download/">这里</A></FONT></P><img src ="http://www.blogjava.net/cap/aggbug/9111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-08-03 11:20 <a href="http://www.blogjava.net/cap/archive/2005/08/03/9111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐：java程序员的两个好资源站点</title><link>http://www.blogjava.net/cap/archive/2005/08/02/9060.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Tue, 02 Aug 2005 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/08/02/9060.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/9060.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/08/02/9060.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/9060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/9060.html</trackback:ping><description><![CDATA[第一个是 <A href="http://www.koders.com/">http://www.koders.com/</A>&nbsp;是一个源代码搜索引擎，可以查询Apache，Mozilla，Novell Forge和SourceForge等组织的源代码。目前，据称可以搜索1.98亿行源代码，并可按编程语言及应用协议的不同进行查询，其查询直接深入到源代码内部进行，对开发者比较有用<BR><BR>第二个是 <A href="http://javaalmanac.com/" target=_blank>http://javaalmanac.com</A>&nbsp;Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧<BR>的用法及示例代码, 这是一个不错的去处，我经常去参阅<BR><BR><BR><img src ="http://www.blogjava.net/cap/aggbug/9060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-08-02 18:11 <a href="http://www.blogjava.net/cap/archive/2005/08/02/9060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用cvs的关键字来维护代码信息</title><link>http://www.blogjava.net/cap/archive/2005/07/27/8559.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Wed, 27 Jul 2005 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/07/27/8559.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/8559.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/07/27/8559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/8559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/8559.html</trackback:ping><description><![CDATA[<P>一般我们写代码，都会在代码头部写一些帮助信息,比如下面的文件日期，版本号，作者等</P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000">*<BR>&nbsp;*&nbsp;$Date:&nbsp;2005/07/18&nbsp;08:49:35&nbsp;$<BR>&nbsp;*<BR>&nbsp;*&nbsp;@author&nbsp;cap<BR>&nbsp;*&nbsp;@version&nbsp;$Revision:&nbsp;1.7&nbsp;$<BR>&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></DIV></DIV>
<P>如果你在使用cvs维护你的代码，那么你可以采用cvs的关键字替换功能来帮助维护这些信息，因为他们都是动态更新的，所以维护起来非常方便， 比如$Revision$表示在cvs上的版本号，实际上这个版本号也可以当作我们文件的版本号，我们需要作的只是写下如下的关键字标记<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000">*<BR>&nbsp;*&nbsp;$Date$<BR>&nbsp;*&nbsp;@version&nbsp;$Revision$<BR>&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></DIV></DIV>
<P>cvs提交以后，文件会自动更新为<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000">*<BR>&nbsp;*&nbsp;$Date:&nbsp;2005/07/24&nbsp;08:49:35&nbsp;$<BR>&nbsp;*&nbsp;@version&nbsp;$Revision:&nbsp;1.7&nbsp;$<BR>&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></DIV></DIV>
<P>非常方便，这些关键字可以放在java代码的注释里面， 同时要避免java代码中有这样的变量,否则他们也将被替换,导致意想不到的效果，下面是这些关键字列表<BR><BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">$AUTHOR$&nbsp;用户名&nbsp;<BR>$Data$&nbsp;登记时的时间&nbsp;<BR>$Header$&nbsp;标准的首部,包含RCS的完整路径名,日期,作者&nbsp;<BR>$Id$&nbsp;除RCS文件名不完整外与$Header$同.&nbsp;<BR>$</SPAN><SPAN style="COLOR: #ff00ff">Log</SPAN><SPAN style="COLOR: #000000">$&nbsp;包含RCS的完整路径名,版本号,日期,作者和在提交时提供的日志信息.&nbsp;<BR>$RCSfile$&nbsp;包含RCS的文件名,不包括路径名&nbsp;<BR>$Revision$&nbsp;分配的版本号&nbsp;<BR>$Source$&nbsp;RCS文件的完整名&nbsp;<BR>$State$&nbsp;分配的版本的状态,由&nbsp;cvs&nbsp;admin&nbsp;</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">s&nbsp;分配.</SPAN></DIV></DIV>
<P><BR>以上这些都是比较有用的关键字，当然还有更多的.可以在<A href="http://cvsdoc-zh.gro.clinux.org/cvsdoc/zh_CN/html/1_12_12/Keyword-list.html#Keyword-list">这里</A>查看他们，同时如果你想要关闭这项关键字替换功能的话，请<A href="http://cvsdoc-zh.gro.clinux.org/cvsdoc/zh_CN/html/1_12_12/Avoiding-substitution.html#Avoiding-substitution">参考这里</A></P><img src ="http://www.blogjava.net/cap/aggbug/8559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-07-27 17:05 <a href="http://www.blogjava.net/cap/archive/2005/07/27/8559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing技巧. 设置全局字体 </title><link>http://www.blogjava.net/cap/archive/2005/07/20/8061.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Wed, 20 Jul 2005 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/07/20/8061.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/8061.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/07/20/8061.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/8061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/8061.html</trackback:ping><description><![CDATA[<TABLE class=tf width="98%" border=0>
<TBODY>
<TR>
<TD height=30><FONT class=red_3><B>Swing技巧. 设置全局字体（sun jdk）<BR><BR>为什么要这么做？<BR><BR>&nbsp;&nbsp;&nbsp;因为java默认的字体显示中文都很难看<BR><BR>&nbsp;&nbsp;&nbsp;因为比如jgoodies这样的skin默认不支持中文<BR><BR>&nbsp;&nbsp;&nbsp;因为jdk1.4中文字体mapping有严重bug,用过IDEA的人都知道<BR><BR>&nbsp;&nbsp;&nbsp;因为大家只有sun的jdk可用，ibm的，bea的都不适合跑client<BR><BR>if you are smart....<BR></B></FONT></TD></TR>
<TR>
<TD class=bw><FONT class=htd>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">设置全局字体</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;initGlobalFontSetting(Font&nbsp;fnt){<BR>&nbsp;&nbsp;&nbsp;&nbsp;FontUIResource&nbsp;fontRes&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;FontUIResource(fnt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(Enumeration&nbsp;keys&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;UIManager.getDefaults().keys();&nbsp;keys.hasMoreElements();){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;key&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;keys.nextElement();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;UIManager.</SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">(key);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(value&nbsp;instanceof&nbsp;FontUIResource)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UIManager.put(key,&nbsp;fontRes);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</SPAN></DIV></DIV></FONT></TD></TR></TBODY></TABLE>if you aren't...<BR><BR>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">Font&nbsp;font&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Font(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Dialog</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,Font.PLAIN,</SPAN><SPAN style="COLOR: #000000">12</SPAN><SPAN style="COLOR: #000000">);<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ToolTip.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Table.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TableHeader.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TextField.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ComboBox.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TextField.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">PasswordField.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TextArea.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TextPane.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">EditorPane.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">FormattedTextField.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Button.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">CheckBox.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">RadioButton.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ToggleButton.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ProgressBar.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">DesktopIcon.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TitledBorder.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Label.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">List.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">TabbedPane.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">MenuBar.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Menu.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">MenuItem.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">PopupMenu.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">CheckBoxMenuItem.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">RadioButtonMenuItem.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Spinner.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Tree.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ToolBar.font</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">OptionPane.messageFont</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR>UIManager.put(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">OptionPane.buttonFont</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,font);&nbsp;<BR></SPAN></DIV></DIV><img src ="http://www.blogjava.net/cap/aggbug/8061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-07-20 17:33 <a href="http://www.blogjava.net/cap/archive/2005/07/20/8061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk5.0 在linux下字体文件的处理(设置默认字体)</title><link>http://www.blogjava.net/cap/archive/2005/07/20/8060.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Wed, 20 Jul 2005 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/07/20/8060.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/8060.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/07/20/8060.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/8060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/8060.html</trackback:ping><description><![CDATA[<P>(部分参阅了网络上其他人的文档)<BR>apache的batik是一个处理svg的库， 本人本打算拿它来作一个过滤的servlet，在浏览器不支持svg的情况下，自动画个png图形送到客户端。本来以为是很简单的事情，但是....郁闷,这个问题搞掉了我2天时间,&nbsp; 现在回想起来, 这个问题前后出错的原因不一样,但是导致的问题缺相似,导致我主观的认为两个错误是同样原因引起的,&nbsp;浪费了大量时间去检查.&nbsp;一开始画图,中文是??? ,不用说，一定是中文编码问题,&nbsp; fix了， 然后又绘图，看上去正常了，不过正式运行以后发现，图形中部分中文文字显示不出来，为"口口", 我以为还是编码问题, 埋头扎进batik, 检查了半天,没有看到哪里对编码作了不当处理, 最后一路检查到graphics2d.drawXXX, 实在是没有办法了, 再下去就是native code了, 于是我回头又检查了一遍，还是不行，几乎放弃了。 今天早上来心情好，突然想到会不会是jdk的bug， 于是动手写了个jsp，代码如下</P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">&nbsp;&nbsp;GraphicsEnvironment&nbsp;ge&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GraphicsEnvironment.getLocalGraphicsEnvironment();<BR>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fontNames[]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;ge.getAvailableFontFamilyNames();<BR>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">application.getRealPath(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/client</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Iterate&nbsp;the&nbsp;font&nbsp;family&nbsp;names</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;fontNames.length;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fontName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;fontNames[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">out</SPAN><SPAN style="COLOR: #000000">.print(fontName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufferedImage&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;BufferedImage(</SPAN><SPAN style="COLOR: #000000">400</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">400</SPAN><SPAN style="COLOR: #000000">,BufferedImage.TYPE_3BYTE_BGR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;&nbsp;big&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;bufferedImage.createGraphics();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big.setFont(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Font(fontName,Font.PLAIN,</SPAN><SPAN style="COLOR: #000000">30</SPAN><SPAN style="COLOR: #000000">));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big.drawString(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">你好，发送到A</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">100</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">100</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;FileOutputStream(path</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">fontName</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">.jpg</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPEGImageEncoder&nbsp;encoder</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">JPEGCodec.createJPEGEncoder(os);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encoder.encode(bufferedImage);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></DIV></DIV><BR>用系统列出来所有字体画一遍图，然后一个一个看，果然，问题找到了<BR>1没有simsun字体！汗~~~，原来能画出来的那些部分中文用的不知道是什么字体。<BR>2 情况和batik一样，部分中文绘制不出来，为方框<BR><BR>上网google了一下， 发现原来jdk5.0在linux下和以前的版本还不一样，默认不支持中文字体的。得手动去搞一个fontconfig配置， 此文件在$JAVA_HOME/jre/lib/下，&nbsp; 果然有一大堆fontconfig.XX.properties, 官方的解释在<A href="http://java.sun.com/j2se/1.5.0/docs...fontconfig.html">这里</A>, 懒得看那么多，直接搞一个自己的，先从windows上拷贝simsun.ttc到lib下面的fonts目录下<BR>然后自己编一个简单的<BR>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">#&nbsp;@(#)linux.fontconfig.SuSE.properties&nbsp;</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1.2</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">03</SPAN><SPAN style="COLOR: #808080">/</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">10</SPAN><SPAN style="COLOR: #808080">/</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">17</SPAN><SPAN style="COLOR: #000000"><BR>#<BR>#&nbsp;Copyright&nbsp;</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">2003</SPAN><SPAN style="COLOR: #000000">&nbsp;Sun&nbsp;Microsystems,&nbsp;Inc.&nbsp;</SPAN><SPAN style="COLOR: #808080">All</SPAN><SPAN style="COLOR: #000000">&nbsp;rights&nbsp;reserved.<BR>#<BR><BR>#&nbsp;Version<BR><BR>version</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #000000"><BR><BR>#&nbsp;Component&nbsp;Font&nbsp;Mappings<BR><BR>serif.plain.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">serif.bold.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">serif.italic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">serif.bolditalic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">sansserif.plain.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">sansserif.bold.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">sansserif.italic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">sansserif.bolditalic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">monospaced.plain.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">monospaced.bold.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">monospaced.italic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">monospaced.bolditalic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialog.plain.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialog.bold.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialog.italic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialog.bolditalic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialoginput.plain.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialoginput.bold.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialoginput.italic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000">dialoginput.bolditalic.zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">Simsun&nbsp;GB</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">medium</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">r</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="COLOR: #000000">normal</SPAN><SPAN style="COLOR: #008080">--</SPAN><SPAN style="COLOR: #008080">0-0-0-0-c-0-gb2312.1988-0</SPAN><SPAN style="COLOR: #008080"><BR></SPAN><SPAN style="COLOR: #000000"><BR>#&nbsp;Search&nbsp;Sequences<BR><BR>sequence.allfonts</SPAN><SPAN style="COLOR: #808080">=</SPAN><SPAN style="COLOR: #000000">zh</SPAN><SPAN style="COLOR: #808080">-</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #800000">1</SPAN><SPAN style="COLOR: #000000"><BR><BR>#&nbsp;Exclusion&nbsp;Ranges<BR><BR>#&nbsp;Font&nbsp;</SPAN><SPAN style="COLOR: #0000ff">File</SPAN><SPAN style="COLOR: #000000">&nbsp;Names</SPAN></DIV></DIV>
<P><BR>取名为fontconfig.RedHat.properties 中间的名字是操作系统名，如Redhat系统的就保存为fontconfig.RedHat.properties，WindowsXP的就保存为fontconfig.XP.properties，以此类推。<BR><BR>重新启动java， 搞定<BR><BR>教训 </P>
<OL>
<LI>不要轻易使用不熟悉的第三方库 
<LI>遇到问题，不要专牛角尖，适当的时候放一放 
<LI>google不好用的时候不要调试第三方库</LI></OL><img src ="http://www.blogjava.net/cap/aggbug/8060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-07-20 17:32 <a href="http://www.blogjava.net/cap/archive/2005/07/20/8060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在技术文档中偶尔出现的拉丁文</title><link>http://www.blogjava.net/cap/archive/2005/07/15/7738.html</link><dc:creator>tech.cap</dc:creator><author>tech.cap</author><pubDate>Thu, 14 Jul 2005 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/cap/archive/2005/07/15/7738.html</guid><wfw:comment>http://www.blogjava.net/cap/comments/7738.html</wfw:comment><comments>http://www.blogjava.net/cap/archive/2005/07/15/7738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cap/comments/commentRss/7738.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cap/services/trackbacks/7738.html</trackback:ping><description><![CDATA[<SPAN class=content><FONT color=#444444>拉丁词语<BR>ad&nbsp;hoc专门的；专门地<BR>bona&nbsp;fide真诚的；真诚地<BR>de&nbsp;facto事实上的<BR>in&nbsp;re关于<BR>inter&nbsp;alia除了别的因素以外<BR>mutatis&nbsp;mutandis在细节上做适当修正后<BR>pari&nbsp;passu按相同比例<BR>per&nbsp;se自身<BR>pro&nbsp;bono为了公益<BR>pro&nbsp;rata按比例</FONT></SPAN><BR><BR>以供查阅<img src ="http://www.blogjava.net/cap/aggbug/7738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cap/" target="_blank">tech.cap</a> 2005-07-15 00:02 <a href="http://www.blogjava.net/cap/archive/2005/07/15/7738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>