<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>丸子的地盘</title>
    <description>化工出生，鬼使神差进入IT行业。Delphi解决温饱，关注OpenSource，喜爱Python，Ruby, RoR。</description>
    <link>http://jimmykuu.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>SimPy: Simulation with SimPy</title>
        <author>jimmykuu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jimmykuu.javaeye.com">jimmykuu</a>&nbsp;
          链接：<a href="http://jimmykuu.javaeye.com/blog/136136" style="color:red;">http://jimmykuu.javaeye.com/blog/136136</a>&nbsp;
          发表时间: 2007年10月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有离散事件程序自动以软件时钟的方式保持当前模拟时间。在SimPy中可以通过now()函数得到当前模拟时间，在模拟开始的时候，软件时钟设置为0.0。用户不能直接改变软件时钟。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当模拟软件运行时，当前模拟时间随着事件进行一步步增加。随着模拟系统状态的改变，事件随时会发生。如：顾客的到达就是一个事件，同理，顾客的离开也是。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用SimPy是必须载入<strong>Simulation</strong>模块：</p>
<p> </p>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-py" start="1">
    <li class="alt"><span><span class="keyword">from</span><span>&nbsp;SimPy.Simulation&nbsp;</span><span class="keyword">import</span><span>&nbsp;*&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以下语句必须在出现在任何SimPy进程被激活之前，用来初始化模拟系统的全局变量和把软件时钟置零：</p>
<p> </p>
<div class="dp-highlighter">
<ol class="dp-py" start="1">
    <li class="alt"><span><span>initialize()&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来是一些创建和激活对象的SimPy语句。当遇到下面语句时，模拟系统将开始运行：</p>
<p> </p>
<div class="dp-highlighter">
<ol class="dp-py" start="1">
    <li class="alt"><span><span>simulate(until=endtime)&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后模拟开始，SimPy开始查找并执行第一个预订的事件，执行完后，继续寻找并执行第二个事件，以此类推。这将持续进行直到出现下列情况：</p>
<ul>
    <li>没有可执行的时间(这时<em>now()</em>等于最后一个事件发生的时间)</li>
    <li>模拟时间到达结束时间(<em>now()</em>等于结束时间<em>)</em></li>
    <li><em>stopSimulation()</em>命令被执行(<em>now()</em>等于当<em>stopSimulation()</em>被调用时的模拟时间)</li>
</ul>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 典型的做法是在simulate语句中用until参数来终止模拟，但是也可以在任何时候用下面命令终止：<br />
<br />
<div class="dp-highlighter">
<ol class="dp-py" start="1">
    <li class="alt"><span><span>stopSimulation()&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在模拟结束以后，附加的语句仍可以执行，这对于保存或显示像平均等待时间或队列长度这些结果将非常有用。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来的代码仅仅显示了模拟程序的主要部分(能够完整执行的代码请看示例1和示例2)，这里Message是一个预定义的Process的子类，m是它的实例，是一个特定的消息。激活的m执行至少一个预定义的时间，这里执行m的PEM(这里是go)，simulate(until=1000.0)语句将立即跳到第一个预定义的事件来开始运行模拟系统。它将一直运行下去知道事件执行完毕或模拟时间到达1000.0。当模拟结束，预先编写的Report方法将被执行用来显示结果：</p>
<p> </p>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-py" start="1">
    <li class="alt"><span><span>initialize()&nbsp;&nbsp;</span></span></li>
    <li class=""><span>m&nbsp;=&nbsp;Message()&nbsp;&nbsp;</span></li>
    <li class="alt"><span>activate(m,&nbsp;m.go(),&nbsp;at=0.0)&nbsp;&nbsp;</span></li>
    <li class=""><span>simulate(until=1000.0)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>Report()&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">#&nbsp;report&nbsp;results&nbsp;when&nbsp;the&nbsp;simulation&nbsp;finishes</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://jimmykuu.javaeye.com/blog/136136#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 28 Oct 2007 13:29:15 +0800</pubDate>
        <link>http://jimmykuu.javaeye.com/blog/136136</link>
        <guid>http://jimmykuu.javaeye.com/blog/136136</guid>
      </item>
      <item>
        <title>SimPy: Introduction</title>
        <author>jimmykuu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jimmykuu.javaeye.com">jimmykuu</a>&nbsp;
          链接：<a href="http://jimmykuu.javaeye.com/blog/135973" style="color:red;">http://jimmykuu.javaeye.com/blog/135973</a>&nbsp;
          发表时间: 2007年10月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimPy是一个基于Python的离散事件系统。它采用并行技术处理各种活动组件，如消息、顾客、卡车、飞机等等。它为程序员提供了一系列工具，包括<strong>Processes</strong>(进程)，三种资源工具(<strong>Resources</strong>，<strong>Levels</strong>和<strong>Stores</strong>)，以及记录结果用的<strong>Monitors</strong>和<strong>Tallys</strong>。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimPy中最基本的活动元素是进程(即<strong>Process</strong>类的实例)，它们可以延迟一会，这个时间可以是固定或随机的，为了得到资源而排队，可以和其他进程或组件互动，或者被中断。比如在一个加油站的模拟系统，汽车(进程)将会为了等候可以使用的油泵而排队。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimPy脚本中可以包含一个或多个进程和进程的创建者，每个进程执行它们的进程处理方法(以后简称为<strong>PEM</strong>(<em><strong>Process Execution Method</strong></em>))，该方法决定了进程的行为。所有<strong>PEM</strong>并行运行，并且可能其他进程的<strong>PEM</strong>进行交互。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 资源工具有三种：<strong>Resources</strong>，<strong>Levels</strong>和<strong>Stores，</strong>每种类型都可以来模拟拥堵点，这时进程为了获得资源而必须排队等候。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Resources</strong>拥有多个可供进程使用的资源个体。如：一辆汽车在加油站等候一个可供使用的油泵，我们可以把汽车看作一个进程，加油站看作一个拥有多个油泵的资源。SimPy会自动把所有等候的汽车放在一个队列中，直到有可用的油泵。SimPy允许每辆汽车在加油的过程中独占油泵，其他车辆只有在它加完油后才能使用该油泵。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Levels</strong>用来模拟生产和消费过程中非常相似的物料。因此，一个物料的实时数量完全可以用一个标量来表述，可以是整形或浮点型。进程可以通过Level工具来对物料的实时数量来进行增减操作，如：加油站把汽油储存在大型的储油罐中，油轮将增加加油站储油量，而来加油的汽车则减少储油量。相对于Resource个体，进程不需要把物料归还给Level。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Stores</strong>用来模拟生成和消费中的个体项目。进程可以中可以项目列表中增加或删除项目。如：在医院或门诊部，外科手术过程(可以视作进程)需要一个特殊的人员和设备列表，该列表中的东西可以作为Store中的项目。这些想做可以用Python中的任何类型保存在Store中。特别地，它们可以是进程，在雇主/员工的模拟关系中处于被剥削的境况。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进程在下列两种情况下将会排队，<strong>Resource</strong>不能得到立即满足，或者当Level或Store已经满了，还需往里面加入物料时。队列，对Resource的请求或者对Level和Store的存取，都有SimPy自动控制。这些同样可以用了模拟当超时或有其他事情发生时的状况。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Monitors</strong>和<strong>Tallys</strong>用于实现统计的功能，如等候的时间和队列的长度。统计报表有简单的平均值、变量、按时间加权平均值或柱状图组成。它们可以从和Resources, Levels及Stores交互的队列中得到。如：我们可以收集在加油站等候的车辆的平均数量，以及车辆等候时间的分布情况。<strong>Tallys</strong>更新当前的统计作为模拟过程，但是不能保存完全的按时间连续的记录。<strong>Monitors</strong>可以保存完全的按时间连续的记录，作为日后模拟分析的依据。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在尝试是用SimPy直线，你必须会写Python代码。事实上，你不许懂得如何定义和使用类以及它们的实例。Python是免费的，并且在大多数平台上可用。这里不再赘述。你可以从<strong>Python</strong>的网站(<a href="http://www.python.org">www.python.org</a>)获得更多的信息。SimPy需要Python 2.3或更新的版本。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://jimmykuu.javaeye.com/blog/135973#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 28 Oct 2007 00:47:23 +0800</pubDate>
        <link>http://jimmykuu.javaeye.com/blog/135973</link>
        <guid>http://jimmykuu.javaeye.com/blog/135973</guid>
      </item>
      <item>
        <title>Python离散事件系统包SimPy</title>
        <author>jimmykuu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jimmykuu.javaeye.com">jimmykuu</a>&nbsp;
          链接：<a href="http://jimmykuu.javaeye.com/blog/135965" style="color:red;">http://jimmykuu.javaeye.com/blog/135965</a>&nbsp;
          发表时间: 2007年10月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://simpy.sourceforge.net/">SimPy</a>(<font face="verdana,arial,helvetica"><em><strong>Sim</strong>ulation in <strong>Py</strong>thon</em></font>)是基于Python的一个离散事件系统的包，允许您非常方便的创建离散事件系统的模型。通过它可以对现实世界中的情况建立模型，通过模拟运行，来发现是否存在一些缺陷，对过程等作出优化。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于最近正在学习这个包，顺便把文档做下翻译。</p>
          <br/>
          <span style="color:red;">
            <a href="http://jimmykuu.javaeye.com/blog/135965#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 27 Oct 2007 22:55:07 +0800</pubDate>
        <link>http://jimmykuu.javaeye.com/blog/135965</link>
        <guid>http://jimmykuu.javaeye.com/blog/135965</guid>
      </item>
      <item>
        <title>Ruby转Exe -- Exerb研究</title>
        <author>jimmykuu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jimmykuu.javaeye.com">jimmykuu</a>&nbsp;
          链接：<a href="http://jimmykuu.javaeye.com/blog/51526" style="color:red;">http://jimmykuu.javaeye.com/blog/51526</a>&nbsp;
          发表时间: 2007年02月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2><strong><font size="4">1. Exerb简介</font></strong></h2>
<div>
<p><font size="3" face="Comic Sans MS"><a href="http://exerb.sourceforge.jp/index.en.html">Exerb</a>是一个将ruby脚本程序(.rb)转换成Windows应用程序(.exe)的软件。目前最新版本4.1.0，下载地址：<a href="http://downloads.sourceforge.jp/exerb/23470/exerb-4.1.0.zip">http://downloads.sourceforge.jp/exerb/23470/exerb-4.1.0.zip</a>。</font></p>
</div>
<br />
<h2><strong><font size="4">2.安装</font></strong></h2>
<p><font size="3" face="Comic Sans MS">把下载的zip文件解压，进入exerb目录，运行ruby setup.rb。这时exerb和mkexy命令将会加入ruby/bin目录中。<br />
</font></p>
<h2><font size="4">3.ruby -&gt; exe</font></h2>
<p><font size="3" face="Comic Sans MS">先来个最简单的</font></p>
<p><font size="3" face="Comic Sans MS"> hello.rb </font></p>
<p> </p>
<div class="dp-highlighter">
<ol class="dp-rb">
    <li class="alt"><span><span><font size="-0">puts 'Exerb' </font></span></span></li>
</ol>
</div>
<p><font size="4" face="Comic Sans MS"> <font size="3">运行exerb hello.rb，生成一个hello.exe文件，OK。</font></font></p>
<p><font size="3" face="Comic Sans MS"> 下面写个GUI程序，使用wxRuby类库。</font></p>
<p> </p>
<p><font size="3" face="Comic Sans MS">hello_wx.rb</font></p>
<p> </p>
<div class="dp-highlighter">
<ol class="dp-rb">
    <li class="alt"><span><span><font size="-0">require 'wxruby' </font></span></span></li>
    <li class=""><span><font size="-0">include Wx </font></span></li>
    <li class="alt"><span><span class="keyword"><font size="-0">class</font></span><span><font size="-0"> MyFrame &lt; Frame </font></span></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; <span class="keyword">def</span><span> initialize(title) </span></font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">super</span><span>(</span><span class="keyword">nil</span><span>, -1, title) </span></font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; Button.<span class="keyword">new</span><span>(</span><span class="keyword">self</span><span>, -1, </span><span class="string">&quot;Hello, I'm a Button&quot;</span><span>) </span></font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; <span class="keyword">end</span><span> </span></font></span></li>
    <li class=""><span><span class="keyword"><font size="-0">end</font></span><span><font size="-0"> </font></span></span></li>
    <li class="alt"><span></span></li>
    <li class=""><span></span></li>
    <li class="alt"><span><span class="keyword"><font size="-0">class</font></span><span><font size="-0"> MyApp &lt; App </font></span></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; <span class="keyword">def</span><span> on_init </span></font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; frame = MyFrame.<span class="keyword">new</span><span>('Simple wxRuby App') </span></font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; frame.show </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; <span class="keyword">end</span><span> </span></font></span></li>
    <li class=""><span><span class="keyword"><font size="-0">end</font></span><span><font size="-0"> </font></span></span></li>
    <li class="alt"><span></span></li>
    <li class=""><span><font size="-0">a = MyApp.<span class="keyword">new</span><span> </span></font></span></li>
    <li class="alt"><span><font size="-0">a.main_loop </font></span></li>
</ol>
</div>
<p><font size="3" face="Comic Sans MS">exerb hello_wx.rb，生成hello_wx.exe，却不能运行。因为exe并没有把程序所需的类库打包进来，这时候就得执行mkexy命令。</font></p>
<p><font size="3" face="Comic Sans MS"> mkexy hello_wx.rb，生成hello_wx.exy文件</font></p>
<p><font size="3" face="Comic Sans MS"> hello_wx.exy</font></p>
<p><font size="4" face="Comic Sans MS"></font> </p>
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span><span><font size="-0"># Generated by mkexy </font></span></span></li>
    <li class=""><span><font size="-0"># on 2007-01-31 23:50 </font></span></li>
    <li class="alt"><span><font size="-0"></font></span></li>
    <li class=""><span><font size="-0">general: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp; startup: hello_wx.rb </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; core: cui </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; kcode: none </font></span></li>
    <li class=""><span><font size="-0"></font></span></li>
    <li class="alt"><span><font size="-0">file: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; hello_wx.rb: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rbconfig.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/i386-mswin32/rbconfig.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/rubygems_version.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/rubygems_version.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rbconfig/datadir.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/user_interaction.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/user_interaction.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; forwardable.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/forwardable.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; digest.so: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/i386-mswin32/digest.so </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; type: extension-library </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; digest/sha2.so: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/i386-mswin32/digest/sha2.so </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; type: extension-library </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rational.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/rational.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; date/format.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/date/format.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; parsedate.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/parsedate.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; time.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/time.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/source_index.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/source_index.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/version.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/version.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/specification.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/specification.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; openssl.so: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/i386-mswin32/openssl.so </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; type: extension-library </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; openssl/bn.rb: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/bn.rb </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; openssl/cipher.rb: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/cipher.rb </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; openssl/digest.rb: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/digest.rb </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; openssl/buffering.rb: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/buffering.rb </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp; fcntl.so: </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/i386-mswin32/fcntl.so </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; type: extension-library </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; openssl/ssl.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/ssl.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; openssl/x509.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl/x509.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; openssl.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/1.8/openssl.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/gem_openssl.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/gem_openssl.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/security.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/security.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems/custom_require.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; rubygems.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; ubygems.rb: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/ubygems.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp; wxruby.so: </font></span></li>
    <li class=""><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; file: c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt/wxruby.so </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp;&nbsp;&nbsp;&nbsp; type: extension-library </font></span></li>
</ol>
</div>
<br />
<p> <font size="3" face="Comic Sans MS">该文件把hello_wx.rb所需的类库文件都包含进来了。</font></p>
<p><font size="3" face="Comic Sans MS"> 运行exerb hello_wx.exy，这时候生成的hello_wx.exe是可以执行的，问题是打开文件的同时会打开一个控制台窗口，要解决这个问题，就得修改hello_wx.exy文件，把cui改成gui。</font></p>
<p> </p>
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span><span><font size="-0">general: </font></span></span></li>
    <li class=""><span><font size="-0">&nbsp; startup: hello_wx.rb </font></span></li>
    <li class="alt"><span><font size="-0">&nbsp; core: gui #cui </font></span></li>
    <li class=""><span><font size="-0">&nbsp; kcode: none </font></span></li>
</ol>
</div>
<p><font size="4" face="Comic Sans MS"> <font size="3">再次运行exerb hello_wx.exy，生成一个红宝石图标的exe文件，OK！</font></font></p>
<p><font size="3" face="Comic Sans MS"> 另外，exy文件中还可以设置图标和版本信息。不再赘述。配置属性如下： </font></p>
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span><span><font size="-0">resource: </font></span></span></li>
    <li class=""><span><font size="-0">icon: </font></span></li>
    <li class="alt"><span><font size="-0">- width : 16 </font></span></li>
    <li class=""><span><font size="-0">height: 16 </font></span></li>
    <li class="alt"><span><font size="-0">color : 4 </font></span></li>
    <li class=""><span><font size="-0">file : your_ico.ico </font></span></li>
    <li class="alt"><span><font size="-0">- width : 32 </font></span></li>
    <li class=""><span><font size="-0">height: 32 </font></span></li>
    <li class="alt"><span><font size="-0">color : 4 </font></span></li>
    <li class=""><span><font size="-0">file : your_ico.ico </font></span></li>
    <li class="alt"><span><font size="-0">version: </font></span></li>
    <li class=""><span><font size="-0">file_version_number : 1.2.3.4 </font></span></li>
    <li class="alt"><span><font size="-0">product_version_number: 5.6.7.8 </font></span></li>
    <li class=""><span><font size="-0">comments : Comments Field </font></span></li>
    <li class="alt"><span><font size="-0">company_name : Company Name Field </font></span></li>
    <li class=""><span><font size="-0">legal_copyright : Legal Copyright Field </font></span></li>
    <li class="alt"><span><font size="-0">legal_trademarks : Legal Trademarks Field </font></span></li>
    <li class=""><span><font size="-0">file_version : File Version Field </font></span></li>
    <li class="alt"><span><font size="-0">product_version : Product Version Field </font></span></li>
    <li class=""><span><font size="-0">product_name : Product Name Field </font></span></li>
    <li class="alt"><span><font size="-0">file_description : File Description Field </font></span></li>
    <li class=""><span><font size="-0">internal_name : Internal Name Field </font></span></li>
    <li class="alt"><span><font size="-0">original_filename : Original Filename Field </font></span></li>
    <li class=""><span><font size="-0">private_build : Private Build Field </font></span></li>
    <li class="alt"><span><font size="-0">special_build : Special Build Field </font></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://jimmykuu.javaeye.com/blog/51526#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 Feb 2007 00:09:00 +0800</pubDate>
        <link>http://jimmykuu.javaeye.com/blog/51526</link>
        <guid>http://jimmykuu.javaeye.com/blog/51526</guid>
      </item>
  </channel>
</rss>