﻿<?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>IT博客-kenlistian-随笔分类-Ruby</title><link>http://www.cnitblog.com/kenlistian/category/7040.html</link><description>勤学多思
</description><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 22:20:31 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 22:20:31 GMT</pubDate><ttl>60</ttl><item><title>wxWidgets介绍</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44861.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 03 Jun 2008 06:27:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44861.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/44861.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/44861.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/44861.html</trackback:ping><description><![CDATA[<p>wxwidgets是一个 c++编写的用来提供gui开发的框架。它包含一个可以支持现今几乎所有操作系统<br>&nbsp; （Version 2 currently supports all desktop versions of MS Windows, Unix with GTK+, <br>&nbsp; Unix with Motif, and MacOS. An OS/2 port is in progress.）的GUI库和其他一些很有用的工具，<br>&nbsp; 提供了类似MFC的功能。而且，特别要说一下，这个c++lib还的新版本还提供了对掌上电脑的支持。<br>&nbsp; 当然，说到这里很多人会想到java队多系统的支持，其实这是不一样的，java的跨平台是建立在<br>&nbsp; &#8220;中间代码&#8221;的基础上的，就是说需要在目标平台上安装java解释器；<br>&nbsp; wxwidgets是c++库，经过编译后，他提供的是native级的机器码，</p>
<p>wxwidgets有什么特别之处呢？比起其他的跨平台gui库，有什么好处呢？</p>
<p>1、免费<br>&nbsp;&nbsp;&nbsp; 主体框架的授权协议支持商业免费应用，其外围功能库中很多也是lgpl授权的，</p>
<p>2、 他是跨平台的gui库，支持的操作系统很全面，甚至支持pda（说不定过一段时间他都能够支持symbian了）。</p>
<p>&nbsp;&nbsp; 此跨平台非彼跨平台，它虽然不像java那样是&#8220;全面&#8221;的，而仅仅是gui库，但是gui是计算机编程中，<br>&nbsp;&nbsp;&nbsp; 最为麻烦、耗费时间、容易出现bug的部分，特别当你想要自己的软件运行在多个操作系统上的时候，<br>&nbsp;&nbsp;&nbsp; 开发和维护的难度让人难以想象。<br>&nbsp;&nbsp;&nbsp; 其实c++也是支持&#8220;跨平台&#8221;的，因为c++可以在任何平台上编译运行，之所以没几个人说他是跨平台的，<br>&nbsp;&nbsp;&nbsp; 问题就出在变量长度和各操作系统的gui（这里的&#8220;界面&#8221;我指得是很广义的）上，如果解决了gui的问题，<br>&nbsp;&nbsp;&nbsp; 基本上就解决了c++的&#8220;跨平台&#8221;问题——至少不用为每种平台都维护一份源代码了。</p>
<p>3、 wxwidgets提供的gui是大量使用宏的，这就意味着它是在尽可能的使用目标系统native的gui样式。<br>&nbsp;&nbsp;&nbsp; <br>4、 它支持的编译器也很多</p>
<p>5、 wxwidgets一直都在快速稳健的开发中，周边工具也越来越多。<br>&nbsp; <br>&nbsp;&nbsp;&nbsp; 随着m$开始全力支持他的.net，c++成了&#8220;没落&#8221;的语言，但是不可否认，c++还是有很多用武之地的，<br>&nbsp;&nbsp;&nbsp; 所以根本不可能真正没落。没有了超牛X的支持，地球人自然开始寻求新的发展方式，wxwidgets这种开源<br>&nbsp;&nbsp;&nbsp; 免费，且允许商业应用的好东东，自然会被人们所重视。<br></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/44861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-03 14:27 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/03/44861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关注ruby中的GUI架构</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44859.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 03 Jun 2008 06:19:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44859.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/44859.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/44859.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/44859.html</trackback:ping><description><![CDATA[<p>&nbsp; 关注ruby中的GUI架构<br>&nbsp; <br>&nbsp;&nbsp; <a href="http://anvil.rubyforge.org/">http://anvil.rubyforge.org/</a><br><br><br></p>
<p><br>Anvil是一个打算在Ruby开发跨平台GUI应用中大展宏图的MVC框架。<br>目前它需要WxRuby——WxWidgets这个流行的C++框架的Ruby绑定<br>——的支持，不过它的目标是成为一个与工具无关的抽象层（<br>如，它也把RubyCocoa和FxRuby作为了目标方向）。虽然这个<br>项目目前还正处于发展初期（当前的版本是0.0.1），但它已经<br>引起了Ruby社区的关注，它的DSL可能会使Ruby中的GUI开发如同<br>当前使用Rails和Merb框架开发Web应用一样简单。<br><br><br>2008年2月<br></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/44859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-03 14:19 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/03/44859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxruby框架例子1</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44854.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 03 Jun 2008 03:30:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44854.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/44854.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/03/44854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/44854.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/44854.html</trackback:ping><description><![CDATA[<p><br>看代码，学程序<br>1.hello 例子<br>require "wx" <br>include Wx&nbsp;&nbsp; </p>
<p>=begin<br>&nbsp;第一个参数nil，表示要构造的Frame是没有父窗口的，如果有的话，应该在这儿传送。<br>&nbsp;&nbsp;&nbsp; 第二个参数 -1，标识<br>&nbsp;&nbsp;&nbsp; 第三个参数 标题。"The Bare Minimum", <br>&nbsp;&nbsp;&nbsp; 第四个参数 定义了Frame在桌面上出现的位置.<br>&nbsp;&nbsp;&nbsp; 第五个参数 定义Frame的初始大小<br>&nbsp;&nbsp;&nbsp; 第六个参数，窗体类型。<br>=end<br>class MinimalApp &lt; App&nbsp; <br>&nbsp;&nbsp; def on_init&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;myFrame = Frame.new(nil, -1, "test")&nbsp;&nbsp;&nbsp; #创建frame<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StaticText.new(myFrame,-1,"Hello World")&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myFrame.show()&nbsp;&nbsp;&nbsp;&nbsp; #显示<br>&nbsp;&nbsp;end&nbsp; <br>end&nbsp; </p>
<p>MinimalApp.new.main_loop&nbsp; <br><br>然后通过exerb生成exe。单独可以运行。</p>
<p>2.创建一个确认对话框<br>require 'wx'<br>include Wx</p>
<p>class MyApp &lt; Wx::App<br>&nbsp; MENU_DIALOGS = 1000<br>&nbsp; def on_init()<br>&nbsp;&nbsp;&nbsp; frame = Wx::Frame.new(nil, -1, 'test123(ue)')</p>
<p>&nbsp;&nbsp;&nbsp; #创建菜单子项<br>&nbsp;&nbsp;&nbsp; menu_dialogs = Wx::Menu.new()&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; menu_dialogs.append(MENU_DIALOGS, "&amp;Dialog...\t", 'Dialog')</p>
<p>&nbsp;&nbsp;&nbsp; #创建菜单条<br>&nbsp;&nbsp;&nbsp; menu_bar&nbsp; = Wx::MenuBar.new()<br>&nbsp;&nbsp;&nbsp; menu_bar.append(menu_dialogs, "&amp;mytest")<br>&nbsp;&nbsp;&nbsp; frame.set_menu_bar( menu_bar )</p>
<p>&nbsp;&nbsp;&nbsp; frame.set_client_size( Wx::Size.new(200,200))<br>&nbsp;&nbsp;&nbsp; frame.evt_menu(MENU_DIALOGS) {&nbsp; | e |&nbsp; on_dialog(e) }</p>
<p>&nbsp;&nbsp;&nbsp; panel = Wx::Panel.new(frame)&nbsp;&nbsp; <br>&nbsp;frame.show()<br>&nbsp; end</p>
<p><br>&nbsp; DIALOG_OPTIONS = Wx::NO_DEFAULT|Wx::OK|Wx::CANCEL|Wx::ICON_EXCLAMATION<br>&nbsp; def on_dialog(event)<br>&nbsp;&nbsp;&nbsp; confirm = Wx::MessageDialog.new(nil, "Are you really sure?", <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Just checking", DIALOG_OPTIONS )<br>&nbsp;&nbsp;&nbsp; case confirm.show_modal()<br>&nbsp;&nbsp;&nbsp; when Wx::ID_OK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts "OK"<br>&nbsp;&nbsp;&nbsp; when Wx::ID_CANCEL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts "NOT OK"<br>&nbsp;&nbsp;&nbsp; end<br>&nbsp; end<br>end</p>
<p>MyApp.new.main_loop()</p>
<p>&nbsp;</p>
<p><br>3.窗口框架中例子<br><br></p>
<p>require 'wx'<br>include Wx</p>
<p>#搜寻框<br>class SearchDialog &lt; Wx::Dialog<br>&nbsp; def initialize(parent)<br>&nbsp;&nbsp;&nbsp; super( parent, -1, 'Search')</p>
<p>&nbsp;&nbsp;&nbsp; sizer = Wx::FlexGridSizer.new(2,4)</p>
<p>&nbsp;&nbsp;&nbsp; #创建lable<br>&nbsp;&nbsp;&nbsp; sizer.add(Wx::StaticText.new(self, -1, 'Search for'), 0, Wx::ALIGN_CENTRE_VERTICAL|Wx::ALIGN_RIGHT, 4) <br>&nbsp;#创建edit，其中edit为@term<br>&nbsp;&nbsp;&nbsp; @term&nbsp; = Wx::TextCtrl.new(self, -1, 'text')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; sizer.add(@term, 2, Wx::GROW|Wx::ALL, 4)</p>
<p>&nbsp;#创建lable<br>&nbsp;&nbsp;&nbsp; sizer.add(Wx::StaticText.new(self, -1, 'Expand search'),0, Wx::ALIGN_CENTRE_VERTICAL|Wx::ALIGN_RIGHT, 4)</p>
<p>&nbsp;#spin控件<br>&nbsp;@expand = Wx::SpinCtrl.new( self, -1, "")<br>&nbsp;&nbsp;&nbsp; @expand.set_range(0,250)<br>&nbsp;&nbsp;&nbsp; @expand.set_value(50)<br>&nbsp;&nbsp;&nbsp; sizer.add(@expand, 0, Wx::ALL, 4)</p>
<p>&nbsp;#<br>&nbsp;&nbsp;&nbsp; sizer.add(Wx::StaticText.new(self, -1, ''), 0, Wx::ALIGN_CENTRE, 4)<br>&nbsp;&nbsp;&nbsp; @regx&nbsp; = Wx::CheckBox.new(self, -1, "Use regular expressions")<br>&nbsp;&nbsp;&nbsp; sizer.add(@regx, 0, Wx::ALL, 4)</p>
<p>&nbsp;&nbsp;&nbsp; #search button和他响应事件<br>&nbsp;&nbsp;&nbsp; button = Wx::Button.new(self, -1, 'Search')<br>&nbsp;&nbsp;&nbsp; button.evt_button(button.get_id) { | e | on_do_search() }<br>&nbsp;&nbsp;&nbsp; sizer.add(button, 0, Wx::ALL, 4)</p>
<p>&nbsp;&nbsp;&nbsp; #cancel button <br>&nbsp;&nbsp;&nbsp; button = Wx::Button.new(self, -1, 'Cancel')<br>&nbsp;&nbsp;&nbsp; button.evt_button(button.get_id) { | e | hide() }<br>&nbsp;&nbsp;&nbsp; sizer.add(button, 0, Wx::ALL|Wx::ALIGN_RIGHT, 4)<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;#size 置入dialog框体中<br>&nbsp;&nbsp;&nbsp; self.set_sizer(sizer)<br>&nbsp;&nbsp;&nbsp; sizer.set_size_hints(self)<br>&nbsp;&nbsp;&nbsp; sizer.fit(self)<br>&nbsp; end</p>
<p>&nbsp; def get_term<br>&nbsp;&nbsp;&nbsp; @term.get_value<br>&nbsp; end</p>
<p>&nbsp; def get_regexp<br>&nbsp;&nbsp;&nbsp; @regx.get_value<br>&nbsp; end</p>
<p>&nbsp; def get_expand<br>&nbsp;&nbsp;&nbsp; @expand.get_value<br>&nbsp; end</p>
<p>&nbsp; def on_do_search<br>&nbsp;&nbsp;&nbsp; puts "Search term: %s; regexps: %s; expand: %i" % <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ get_term(), get_regexp(), get_expand() ]<br>&nbsp; end<br>end</p>
<p><br>#主框架处理<br>class MyApp &lt; Wx::App<br>&nbsp; MENU_DIALOGS = 1000<br>&nbsp; MENU_EXIT&nbsp;&nbsp;&nbsp; = 1001<br>&nbsp; <br>&nbsp; <br>&nbsp; def on_init()<br>&nbsp;&nbsp;&nbsp; @frame = Wx::Frame.new(nil, -1, 'Dialog')<br>&nbsp;&nbsp;&nbsp; menu_dialogs = Wx::Menu.new()<br>&nbsp;&nbsp;&nbsp; menu_dialogs.append(MENU_DIALOGS, "&amp;Dialog...\t", 'Dialog')<br>&nbsp;&nbsp;&nbsp; menu_dialogs.append(MENU_EXIT, "&amp;Exit...\t", 'Exit')<br>&nbsp;&nbsp;&nbsp; menu_bar&nbsp; = Wx::MenuBar.new()<br>&nbsp;&nbsp;&nbsp; menu_bar.append(menu_dialogs, "&amp;Dialogs")<br>&nbsp; &nbsp;@frame.set_menu_bar( menu_bar )</p>
<p>&nbsp;&nbsp;&nbsp; @frame.set_client_size( Wx::Size.new(400,400) )<br>&nbsp;&nbsp;&nbsp; @frame.evt_menu(MENU_DIALOGS) { | e | on_dialog(e) }<br>&nbsp;&nbsp;&nbsp; panel = Wx::Panel.new(@frame)<br>&nbsp;&nbsp;&nbsp; @frame.show()</p>
<p>&nbsp; end</p>
<p>&nbsp; def on_dialog(event)<br>&nbsp;&nbsp;&nbsp; @search ||= SearchDialog.new(@frame)<br>&nbsp;&nbsp;&nbsp; @search.show(true)<br>&nbsp; end</p>
<p><br>end</p>
<p>MyApp.new.main_loop()<br><br><br><br><br><br></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/44854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-03 11:30 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/03/44854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wxRuby安装及其生成exe方法</title><link>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44557.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 29 May 2008 09:54:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44557.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/44557.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/44557.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/44557.html</trackback:ping><description><![CDATA[<p><br>wxruby安装及其生成exe方法</p>
<p><br>1、WxRuby<br>&nbsp;&nbsp;&nbsp; WxRuby是为了使用Ruby进行跨平台的GUI开发而产生的一个开源的工具集。<br>&nbsp;&nbsp;&nbsp; 利用的是一个C++的工作框架--wxWidgets 。</p>
<p>&nbsp;&nbsp; 下载<a href="http://wxruby.rubyforge.org/wiki/wiki.pl?WxRuby_Tutorial">http://wxruby.rubyforge.org/wiki/wiki.pl?WxRuby_Tutorial</a></p>
<p>3、安装</p>
<p>&nbsp; a.从<a href="http://wxruby.rubyforge.org/">http://wxruby.rubyforge.org</a>下载最新版的gem（wxruby-1.9.X-i386-mswin32.gem）。</p>
<p>&nbsp; b. 安装<br>&nbsp;&nbsp;&nbsp; 网络安装：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开命令行窗口，键入命令gem install wxruby进行安装（网络安装）。<br>&nbsp;&nbsp;&nbsp; 本地安装：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从以上网页下载后，在该目录运行以上命令，就可以安装本地下载的文件。</p>
<p>注意：</p>
<p>&nbsp; a.如果使用的版本是1.9.3以及以后的版本需要在Windows/system32文件夹中安装gdiplus.dll动态连接库。<br>&nbsp; b.如果出现mscvp71.dll 没有找的错误信息时，需要下载、安装。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br>做完一个gui程序，如何生成exe，</p>
<p>1. 采用exerb 处理</p>
<p>&nbsp;&nbsp;&nbsp; a.下载：<a href="http://exerb.sourceforge.jp/index.en.html">http://exerb.sourceforge.jp/index.en.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 找最新的下。<br>&nbsp;&nbsp;&nbsp; b.安装&nbsp; 解压，进入exerb目录，运行ruby setup.rb。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这时exerb和mkexy命令将会加入ruby/bin目录中。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp; 转换rb到exe方法</p>
<p>&nbsp; a.用mkexy收集所用的包头文件。<br>&nbsp; b.再转换成exe.<br>&nbsp; <br>&nbsp; 方法如下：<br>&nbsp;&nbsp;&nbsp; mkexy hello_wx.rb， 生成hello_wx.exy文件hello_wx.exy<br>&nbsp;&nbsp;&nbsp; exerb hello_wx.exy&nbsp; <br>&nbsp; <br>&nbsp; 若运行exe会出现控制台窗口，打开hello_wx.exy文件，找到core: cui，改成gui。<br>&nbsp; 还可以设置版本及其图标，都在exy文件中。</p>
<p><br>2.用rubyscript2exe<br>&nbsp;&nbsp; 只有一个源文件：rubyscript2exe.rb&nbsp;&nbsp; (<a href="http://www.erikveen.dds.nl/rubyscript2exe/download/rubyscript2exe.rb">http://www.erikveen.dds.nl/rubyscript2exe/download/rubyscript2exe.rb</a>)</p>
<p>&nbsp; 方法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ruby rubyscript2exe.rb your_ruby_file.rb<br>&nbsp; 最后生成一个有红宝石图标的exe文件。<br>&nbsp;<br>&nbsp; 具体介绍在<a href="http://www.erikveen.dds.nl/rubyscript2exe/index.html">http://www.erikveen.dds.nl/rubyscript2exe/index.html</a></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/44557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-05-29 17:54 <a href="http://www.cnitblog.com/kenlistian/archive/2008/05/29/44557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个rbuf_fill报timeout错误的解决方法</title><link>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41586.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 27 Mar 2008 13:29:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41586.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/41586.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/41586.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/41586.html</trackback:ping><description><![CDATA[<p>采用nethttp去处理数据时，常常会报出 rbuf_fill报出timeout错误。ruby跳出执行。</p>
<p>其实解决方法很简单，有3种，</p>
<p>第一种方法，加异常保护，不允许ruby弹出。<br>直接在方法体中加入<br>....</p>
<p><span style="background-color: #7bff68;">rescue <span style="color: #0000ff;"><span style="color: #000000;">Interrupt=&gt;e<br>&nbsp; （or Timeout::Error =&gt;e 不认得Timeout则需加require 'Timeout'，为啥，后面讲)<br>&nbsp; ....<br>end</span></span></span><span style="color: #0000ff;"><span style="color: #000000;"></span></span></p>
<br>第二种是加Timeout::timeout处理，再包一层，<br>
<p>response = Timeout::timeout(3){<br>&nbsp;&nbsp;&nbsp; Net::Http.get(....)<br>&nbsp;&nbsp;&nbsp;&nbsp; ....<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<span style="background-color: #7bff68;">
<span style="background-color: #7bff68;">
<p>rescue Timeout::Error=&gt;e<br>&nbsp;&nbsp; puts e.message<br>rescue =&gt;e<br>&nbsp;&nbsp; ...<br>end</p>
</span></span><br>第三种解决方法，打开protocol.rb，就是那个报rbuf_fill的那个地方，修改代码
<pre xml:space="preserve">def rbuf_fill
timeout(@read_timeout)  {
@rbuf &lt;&lt; @io.sysread(1024)
}
end</pre>
<pre xml:space="preserve">为<br><span style="background-color: #7bff68;">def rbuf_fill<br>  timeout(@read_timeout,ProtocolError) {<br>       @rbuf &lt;&lt; @io.sysread(1024)<br>  }</span><br>end
<br>加一个参数;因为ProtocolError是继承StandardError类异常，而rescue能够扑捉到，
</pre>
<pre xml:space="preserve">而原函数中timeout是默认Error类异常，看原timeout函数
</pre>
<pre xml:space="preserve">  def timeout(sec, exception=Error)<br>    。。。。<br>  end
</pre>
<pre xml:space="preserve">其中raise抛出的是Error类错误，而Error是来自  Error&lt;Interrupt，而Interrupt，属于enscue无法扑捉到的，<br>所以改为standardError则可以扑捉到。<br><br>  其实理解了，不过在写程序如果异常保护无法保护时，用else 或者根据跳出错误类型在rescue下就可以了。<br>，或者干脆从异常Exception类下拦截，而不是从standarderror类拦，就可以杜绝任何异常了。<br>
</pre>
<pre xml:space="preserve"></pre>
<pre xml:space="preserve"></pre><img src ="http://www.cnitblog.com/kenlistian/aggbug/41586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-03-27 21:29 <a href="http://www.cnitblog.com/kenlistian/archive/2008/03/27/41586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby中的线程在windows下的trap？</title><link>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41583.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 27 Mar 2008 12:34:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41583.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/41583.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/03/27/41583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/41583.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/41583.html</trackback:ping><description><![CDATA[<p>t = Thread.new do
<br>
i=0
<br>
while true
<br>
#sleep 1</p>
<p>puts "printing a line, #{i.to_s}"
<br>
i+=1
<br>
#sleep 1
<br>
end
<br>
end</p>
<p>gets
<br>
t.exit
<br>
puts "exiting"</p>
<p>这个例子来自<a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/229801">http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/229801</a></p>
<p>就是在windows下，加上sleep就不会在dow界面上运行，即使把sleep去掉，好像</p>
<p>在只能写到80来行。其中有人解答说是ruby采用one-click install的将io和线程不能工作。这个问题保留。</p><img src ="http://www.cnitblog.com/kenlistian/aggbug/41583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-03-27 20:34 <a href="http://www.cnitblog.com/kenlistian/archive/2008/03/27/41583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby 标准库一览（备注）</title><link>http://www.cnitblog.com/kenlistian/archive/2008/03/14/40943.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Fri, 14 Mar 2008 10:24:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/03/14/40943.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/40943.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/03/14/40943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/40943.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/40943.html</trackback:ping><description><![CDATA[当然用ri来看文档细节<br><br>
<h3><a name="a.a5.c6.a5.ad.a5.b9.a5.c8" id="a.a5.c6.a5.ad.a5.b9.a5.c8">文本</a><!-- RDLabel: "文本" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/base64.html" title="base64.rb (1102d)">base64.rb</a>       处理Base64编码的模块</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/csv.html" title="csv.rb (306d)" class="modified-year">csv.rb</a>          CSV(Comma Separated Values)库 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/digest.html" title="digest.so (387d)">digest.so</a>       消息摘要库  请参考<a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/digest/digest.txt.ja?rev=HEAD">[ruby-src:ext/digest/digest.txt.ja]</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/digest/md5.html" title="digest/md5.so (387d)">digest/md5.so</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/digest/rmd160.html" title="digest/rmd160.so (387d)">digest/rmd160.so</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/digest/sha1.html" title="digest/sha1.so (387d)">digest/sha1.so</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/digest/sha2.html" title="digest/sha2.so (387d)">digest/sha2.so</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/erb-rb.html" title="erb.rb (699d)">erb.rb</a>         嵌入Ruby(ERB) <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/iconv-so.html" title="iconv.so (772d)">iconv.so</a>        字符串编码转换库 <a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/iconv/iconv.c?rev=HEAD">[ruby-src:ext/iconv/iconv.c]</a><font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/mailread.html" title="mailread.rb (1129d)">mailread.rb</a>     从mail中获取信息</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/shellwords-rb.html" title="shellwords.rb (1129d)">shellwords.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/stringio-so.html" title="stringio.so (773d)">stringio.so</a>     将字符串伪装成IO <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/strscan.html" title="strscan.so (304d)" class="modified-year">strscan.so</a>      高速Scanner <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/yaml.html" title="yaml.rb (240d)" class="modified-year">yaml.rb</a>         YAML <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/zlib.html" title="zlib.so (521d)">zlib.so</a>         字符串压缩&#183;扩展 <font color="blue">ruby 1.8 特性</font></li>
</ul>
<h3><a name="a.a5.d5.a5.a1.a5.a4.a5.eb" id="a.a5.d5.a5.a1.a5.a4.a5.eb">文件</a><!-- RDLabel: "文件" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/ftools.html" title="ftools.rb (214d)" class="modified-year">ftools.rb</a>       文件操作utility(旧)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/fileutils.html" title="fileutils.rb (938d)">fileutils.rb</a>    文件操作utility (ftools.rb 的升级版)       <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/find-rb.html" title="find.rb (1129d)">find.rb</a>         文件搜索模块</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/io/nonblock.html" title="io/nonblock.rb (388d)">io/nonblock.rb</a> IO 类的扩展(添加与nonblock模式相关的方法)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/io/wait.html" title="io/wait.so (388d)">io/wait.so</a>     IO 类的扩展(添加负责等待IO输入的方法)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/pathname.html" title="pathname.rb (372d)">pathname.rb</a>     路径名类 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/tempfile-rb.html" title="tempfile.rb (1129d)">tempfile.rb</a>     生成临时文件</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/tmpdir.html" title="tmpdir.rb (451d)">tmpdir.rb</a>       返回临时目录 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/un.html" title="un.rb (430d)">un.rb</a>           类似Unix命令的文件操作utility <font color="blue">ruby 1.8 特性</font></li>
</ul>
<h3><a name="a.a5.cd.a5.c3.a5.c8.a5.ef.a1.bc.a5.af" id="a.a5.cd.a5.c3.a5.c8.a5.ef.a1.bc.a5.af">网络</a><!-- RDLabel: "网络" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/cgi/session.html" title="cgi/session.rb (1129d)">cgi/session.rb</a>  CGI会话管理</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/cgi/session/pstore.html" title="cgi/session/pstore.rb (-)" class="dangling">cgi/session/pstore.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/cgi-rb.html" title="cgi.rb (1129d)">cgi.rb</a>          辅助生成CGI</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/drb.html" title="drb.rb (381d)">drb.rb</a>          分布式 Ruby (dRuby) <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/gserver.html" title="gserver.rb (287d)" class="modified-year">gserver.rb</a>      Ruby Generic Server <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/ipaddr-rb.html" title="ipaddr.rb (107d)" class="modified-year">ipaddr.rb</a>       IP地址类(IPAddr) <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/ftp.html" title="net/ftp.rb (6d)" class="modified-month">net/ftp.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/index.html#" title="net/ftptls.rb (-)" class="dangling">net/ftptls.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/http.html" title="net/http.rb (273d)" class="modified-year">net/http.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/https.html" title="net/https.rb (305d)" class="modified-year">net/https.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/imap.html" title="net/imap.rb (155d)" class="modified-year">net/imap.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/pop.html" title="net/pop.rb (476d)">net/pop.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/smtp.html" title="net/smtp.rb (466d)">net/smtp.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/net/telnet.html" title="net/telnet.rb (1129d)">net/telnet.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/index.html#" title="net/telnets.rb (-)" class="dangling">net/telnets.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/openssl.html" title="openssl.rb (24d)" class="modified-month">openssl.rb</a>      Ruby/OpenSSL  <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/open-uri.html" title="open-uri.rb (247d)" class="modified-year">open-uri.rb</a>     open() 的 URI支持扩展 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/ping-rb.html" title="ping.rb (1129d)">ping.rb</a>         验证数据包是否到达主机</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/resolv-replace.html" title="resolv-replace.rb (1077d)">resolv-replace.rb</a> 在处理Socket相关类名时使用resolv.rb</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/resolv-rb.html" title="resolv.rb (1129d)">resolv.rb</a>       Ruby版Resolver</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/socket-so.html" title="socket.so (567d)">socket.so</a>       socket扩展库</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/webrick.html" title="webrick.rb (150d)" class="modified-year">webrick.rb</a>      WEB server toolkit</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/base64.html" title="xmlrpc/base64.rb (145d)" class="modified-year">xmlrpc/base64.rb</a>      XML-RPC (remote procedure calls over HTTP using XML) for Ruby <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/client.html" title="xmlrpc/client.rb (-)" class="dangling">xmlrpc/client.rb</a>      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/config.html" title="xmlrpc/config.rb (-)" class="dangling">xmlrpc/config.rb</a>      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/create.html" title="xmlrpc/create.rb (-)" class="dangling">xmlrpc/create.rb</a>      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/datetime.html" title="xmlrpc/datetime.rb (-)" class="dangling">xmlrpc/datetime.rb</a>    <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/httpserver.html" title="xmlrpc/httpserver.rb (-)" class="dangling">xmlrpc/httpserver.rb</a>  <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/marshal.html" title="xmlrpc/marshal.rb (-)" class="dangling">xmlrpc/marshal.rb</a>     <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/parser.html" title="xmlrpc/parser.rb (-)" class="dangling">xmlrpc/parser.rb</a>      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/server.html" title="xmlrpc/server.rb (-)" class="dangling">xmlrpc/server.rb</a>      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/xmlrpc/utils.html" title="xmlrpc/utils.rb (-)" class="dangling">xmlrpc/utils.rb</a>       <font color="blue">ruby 1.8 特性</font></li>
</ul>
<h3><a name="a.c6.fe.bd.d0.ce.cf" id="a.c6.fe.bd.d0.ce.cf">输入输出</a><!-- RDLabel: "输入输出" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/open3-rb.html" title="open3.rb (1129d)">open3.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/readbytes.html" title="readbytes.rb (1112d)">readbytes.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/scanf.html" title="scanf.rb (429d)">scanf.rb</a>        <font color="blue">ruby 1.8 特性</font></li>
</ul>
<h3><a name="a.c6.fc.cb.dc.b8.ec" id="a.c6.fc.cb.dc.b8.ec">日语</a><!-- RDLabel: "日语" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/jcode.html" title="jcode.rb (521d)">jcode.rb</a>        使String类支持日语</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/kconv.html" title="kconv.rb (642d)">kconv.rb</a>         汉字编码转换</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/nkf-so.html" title="nkf.so (1129d)">nkf.so</a>          日语字符代码编码转换</li>
</ul>
<h3><a name="a.bf.f4.b3.d8" id="a.bf.f4.b3.d8">数学</a><!-- RDLabel: "数学" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal.html" title="bigdecimal.so (520d)">bigdecimal.so</a>   可变长度浮点数运算 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal/jacobian.html" title="bigdecimal/jacobian.rb (-)" class="dangling">bigdecimal/jacobian.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal/ludcmp.html" title="bigdecimal/ludcmp.rb (-)" class="dangling">bigdecimal/ludcmp.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal/newton.html" title="bigdecimal/newton.rb (-)" class="dangling">bigdecimal/newton.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal/nlsolve.html" title="bigdecimal/nlsolve.rb (-)" class="dangling">bigdecimal/nlsolve.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/bigdecimal/utils.html" title="bigdecimal/utils.rb (-)" class="dangling">bigdecimal/utils.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/complex-rb.html" title="complex.rb (539d)">complex.rb</a>      复数类</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/mathn.html" title="mathn.rb (180d)" class="modified-year">mathn.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/matrix-rb.html" title="matrix.rb (931d)">matrix.rb</a>       矩阵类</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/rational-rb.html" title="rational.rb (762d)">rational.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/set-rb.html" title="set.rb (781d)">set.rb</a>          有限集 <font color="blue">ruby 1.7 特性</font></li>
</ul>
<h3><a name="a.a5.c7.a1.bc.a5.bf.a5.d9.a1.bc.a5.b9" id="a.a5.c7.a1.bc.a5.bf.a5.d9.a1.bc.a5.b9">数据库</a><!-- RDLabel: "数据库" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dbm-so.html" title="dbm.so (55d)" class="modified-year">dbm.so</a>          可将ndbm用作哈希表的库</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/gdbm-so.html" title="gdbm.so (1129d)">gdbm.so</a>         将gdbm (GNU dbm)用作哈希表的库</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/pstore-rb.html" title="pstore.rb (1129d)">pstore.rb</a>        对象永久化</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/sdbm-so.html" title="sdbm.so (1129d)">sdbm.so</a></li>
</ul>
<h3><a name="a.b2.e8.cc.cc.c0.a9.b8.e6.a1.bfCUI" id="a.b2.e8.cc.cc.c0.a9.b8.e6.a1.bfCUI">画面控制/CUI</a><!-- RDLabel: "画面控制/CUI" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/curses.html" title="curses.so (433d)">curses.so</a>       终端操作库 curses 的接口</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/expect.html" title="expect.rb (521d)">expect.rb</a>       在脚本中控制交互程序</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/fcntl-so.html" title="fcntl.so (1129d)">fcntl.so</a>        该模块中囊括了<a href="http://www.kuqin.com/rubycndocument/man/addlib/manual+page" title="manual page (775d)">fcntl(2)</a>中用到的常数</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/irb.html" title="irb.rb (521d)">irb.rb</a>          Interactive Ruby (Ruby 的交互界面)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/pty-so.html" title="pty.so (1129d)">pty.so</a>          处理伪终端(Pseudo tTY)的模块</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/readline-so.html" title="readline.so (1129d)">readline.so</a>     GNU Readline 接口</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/shell.html" title="shell.rb (149d)" class="modified-year">shell.rb</a>              请参考<a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/doc/shell.rd.ja?rev=HEAD">[ruby-src:doc/shell.rd.ja]</a> </li>
</ul>
<h3><a name="GUI" id="GUI">GUI</a><!-- RDLabel: "GUI" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/multi-tk.html" title="multi-tk.rb (444d)">multi-tk.rb</a>     支持多个Tcl解释器的Ruby/Tk <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/tk.html" title="tk.rb (320d)" class="modified-year">tk.rb</a>           Ruby/Tk <a href="http://ns103.net/%7Earai/ruby/rubytk.html.gz">&lt;URL:http://ns103.net/~arai/ruby/rubytk.html.gz&gt;</a> </li>
</ul>
<h3><a name="a.c6.fc.c9.d5.a1.a6.bb.fe.b4.d6" id="a.c6.fc.c9.d5.a1.a6.bb.fe.b4.d6">日期&#183;时间</a><!-- RDLabel: "日期&#183;时间" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/date-rb.html" title="date.rb (435d)">date.rb</a>         日期类</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/parsedate-rb.html" title="parsedate.rb (1030d)">parsedate.rb</a>    日期格式的解析</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/time.html" title="time.rb (521d)">time.rb</a>         字符串和Time对象的变换</li>
</ul>
<h3><a name="a.a5.de.a5.eb.a5.c1.a5.b9.a5.ec.a5.c3.a5.c9.a1.a6.c6.b1.b4.fc" id="a.a5.de.a5.eb.a5.c1.a5.b9.a5.ec.a5.c3.a5.c9.a1.a6.c6.b1.b4.fc">多线程&#183;同步</a><!-- RDLabel: "多线程&#183;同步" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/monitor-rb.html" title="monitor.rb (922d)">monitor.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/mutex_m.html" title="mutex_m.rb (1129d)">mutex_m.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/sync.html" title="sync.rb (1129d)">sync.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/thread.html" title="thread.rb (521d)">thread.rb</a>       与线程相关的utility</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/thwait-rb.html" title="thwait.rb (1129d)">thwait.rb</a></li>
</ul>
<h3><a name="Unix" id="Unix">Unix</a><!-- RDLabel: "Unix" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/etc-so.html" title="etc.so (1129d)">etc.so</a>          操作<code>/etc/passwd</code>等的库</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/syslog-so.html" title="syslog.so (1043d)">syslog.so</a>       UNIX syslog 接口</li>
</ul>
<h3><a name="MS.20Windows" id="MS.20Windows">MS Windows</a><!-- RDLabel: "MS Windows" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/Win32API-so.html" title="Win32API.so (1129d)">Win32API.so</a>     调用Win32 API的类 (win32 专用) 以后将用 dl/win32.rb 来取代它</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/win32ole-so.html" title="win32ole.so (521d)">win32ole.so</a>     <a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/win32ole/doc/win32ole.rd?rev=HEAD">[ruby-src:ext/win32ole/doc/win32ole.rd]</a><font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/win32-registry-rb.html" title="win32/registry.rb (592d)">win32/registry.rb</a>     <font color="blue">ruby 1.7 特性</font></li>
</ul>
<h3><a name="a.c0.b5.b5.ac.c9.bd.b8.bd" id="a.c0.b5.b5.ac.c9.bd.b8.bd">正则表达式</a><!-- RDLabel: "正则表达式" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/eregex.html" title="eregex.rb (1129d)">eregex.rb</a>       可使用`|', `&amp;'操作符将2个正则表达式连接起来</li>
</ul>
<h3><a name="GC" id="GC">GC</a><!-- RDLabel: "GC" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/finalize-rb.html" title="finalize.rb (1129d)">finalize.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/weakref.html" title="weakref.rb (1129d)">weakref.rb</a>      生成可被GC回收的"弱"reference</li>
</ul>
<h3><a name="a.a5.c7.a5.b6.a5.a4.a5.f3.a5.d1.a5.bf.a1.bc.a5.f3" id="a.a5.c7.a5.b6.a5.a4.a5.f3.a5.d1.a5.bf.a1.bc.a5.f3">Design Pattern</a><!-- RDLabel: "Design Pattern" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/delegate.html" title="delegate.rb (393d)">delegate.rb</a>     支持委托的类</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/forwardable-rb.html" title="forwardable.rb (521d)">forwardable.rb</a>  向类中定义方法委托的功能(请参考<a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/doc/forwardable.rd.ja?rev=HEAD">[ruby-src:doc/forwardable.rd.ja]</a>)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/observer-rb.html" title="observer.rb (1129d)">observer.rb</a>     Ruby中的Observer Pattern</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/singleton-rb.html" title="singleton.rb (1129d)">singleton.rb</a>    Ruby中的Singleton Pattern</li>
</ul>
<h3><a name="a.b3.ab.c8.af.a5.c4.a1.bc.a5.eb" id="a.b3.ab.c8.af.a5.c4.a1.bc.a5.eb">开发工具</a><!-- RDLabel: "开发工具" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/benchmark.html" title="benchmark.rb (380d)">benchmark.rb</a>    <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/debug.html" title="debug.rb (161d)" class="modified-year">debug.rb</a>        Ruby 调试器</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/mkmf.html" title="mkmf.rb (521d)">mkmf.rb</a>         制作扩展库的工具</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/profile.html" title="profile.rb (776d)">profile.rb</a>      PROFILER</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/profiler.html" title="profiler.rb (520d)">profiler.rb</a>     <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/rbconfig.html" title="rbconfig.rb (1085d)">rbconfig.rb</a>     Ruby 解释器的设置信息</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/rubyunit.html" title="rubyunit.rb (534d)">rubyunit.rb</a>     <a href="http://raa.ruby-lang.org/list.rhtml?name=RubyUnit">[RAA:RubyUnit]</a>兼容库 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/test-unit-rb.html" title="test/unit.rb (534d)">test/unit.rb</a>  unit测试 <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/tracer-rb.html" title="tracer.rb (521d)">tracer.rb</a>       Ruby 的tracer</li>
</ul>
<h3><a name="a.a5.b3.a5.de.a5.f3.a5.c9.a5.e9.a5.a4.a5.f3" id="a.a5.b3.a5.de.a5.f3.a5.c9.a5.e9.a5.a4.a5.f3">命令行</a><!-- RDLabel: "命令行" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/getoptlong.html" title="getoptlong.rb (1129d)">getoptlong.rb</a>   命令行选项的解析</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/getopts.html" title="getopts.rb (373d)">getopts.rb</a>      命令行选项的解析</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/parsearg.html" title="parsearg.rb (521d)">parsearg.rb</a>     命令行选项的解析(<a href="http://www.kuqin.com/rubycndocument/man/addlib/getopts.html" title="getopts.rb (373d)">getopts.rb</a>)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/optparse.html" title="optparse.rb (86d)" class="modified-year">optparse.rb</a>     命令行选项的解析 <font color="blue">ruby 1.7 特性</font></li>
</ul>
<h3><a name="a.a4.bd.a4.ce.c2.be" id="a.a4.bd.a4.ce.c2.be">其他</a><!-- RDLabel: "其他" --></h3>
<ul>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/English.html" title="English.rb (521d)">English.rb</a>      给特殊变量 $! 等添加英文别名($ERROR_INFO 等)</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dl.html" title="dl.so (712d)">dl.so</a>           <a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/ext/dl/doc/dl.txt?rev=HEAD">[ruby-src:ext/dl/doc/dl.txt]</a><font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dl/import.html" title="dl/import.rb (734d)">dl/import.rb</a>  请参考dl.so 。<font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dl/struct.html" title="dl/struct.rb (734d)">dl/struct.rb</a>  请参考dl.so 。<font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dl/types.html" title="dl/types.rb (681d)">dl/types.rb</a>   请参考dl.so 。<font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/dl/win32.html" title="dl/win32.rb (734d)">dl/win32.rb</a>   用来代替Win32API。<font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/e2mmap.html" title="e2mmap.rb (1129d)">e2mmap.rb</a>        异常类和消息的映象</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/enumerator.html" title="enumerator.so (87d)" class="modified-year">enumerator.so</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/importenv.html" title="importenv.rb (1129d)">importenv.rb</a>    以操作全局变量的方式来处理环境变量</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/ostruct.html" title="ostruct.rb (1129d)">ostruct.rb</a>       Python 式的&#8220;attr on write&#8221;Struct</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/pp-rb.html" title="pp.rb (780d)">pp.rb</a>           Pretty-printer <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/prettyprint-rb.html" title="prettyprint.rb (780d)">prettyprint.rb</a>  PrettyPrint <font color="blue">ruby 1.7 特性</font></li>
    <li>racc/parser.rb                <a href="http://www.ruby-lang.org/en/raa-list.rhtml?name=Racc">Racc</a> 运行时库</li>
    <li>racc/cparse.so</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/rexml-rb.html" title="rexml/rexml.rb (443d)">rexml/rexml.rb</a>        XML parser      <font color="blue">ruby 1.8 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/timeout.html" title="timeout.rb (1007d)">timeout.rb</a>      处理超时的方法 timeout</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/tsort-rb.html" title="tsort.rb (780d)">tsort.rb</a>    拓扑排序和强连接成分  <font color="blue">ruby 1.7 特性</font></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri-rb.html" title="uri.rb (757d)">uri.rb</a>          URI 库</li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/common.html" title="uri/common.rb (757d)">uri/common.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/ftp.html" title="uri/ftp.rb (757d)">uri/ftp.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/generic.html" title="uri/generic.rb (757d)">uri/generic.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/http.html" title="uri/http.rb (757d)">uri/http.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/https.html" title="uri/https.rb (757d)">uri/https.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/ldap.html" title="uri/ldap.rb (757d)">uri/ldap.rb</a></li>
    <li><a href="http://www.kuqin.com/rubycndocument/man/addlib/uri/mailto.html" title="uri/mailto.rb (757d)">uri/mailto.rb</a></li>
</ul>
<br><br><br> <img src ="http://www.cnitblog.com/kenlistian/aggbug/40943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-03-14 18:24 <a href="http://www.cnitblog.com/kenlistian/archive/2008/03/14/40943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>