<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>nameofhsw (joseph)</title>
    <link>https://ruby-china.org/nameofhsw</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>怎么实现 unicode 编码，比如想要获取字符串"map"对应的编码内容"&amp;#109;&amp;#97;&amp;#112;"</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/nameofhsw/1342a87d-d4bd-470a-8118-8de75fcb7a71.png!large" title="" alt=""&gt;
在站长之家用网页转，是能转出来，用代码怎么实现？&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Mon, 31 May 2021 15:05:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/41318</link>
      <guid>https://ruby-china.org/topics/41318</guid>
    </item>
    <item>
      <title>有什么轻量级的并发框架推荐吗？</title>
      <description>&lt;p&gt;要做个 http 网页爬虫工具，因此想找个轻量级的并发框架参考学习，目前我知道的 rainbows 和 celluloid，但由于 ruby 属于半吊子，所以想多听听大家的意见。
虽然自己写了一个多线程同步处理的小东西，但是感觉太垃圾了。
另外搭车同问下，为啥有时候 http 请求发出去之后，整个线程就挂起没响应了呢？
使用的 Net::HTTP 的，设置了访问超时什么的都没用。直接整个线程就停滞了&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Sat, 26 Mar 2016 11:36:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/29467</link>
      <guid>https://ruby-china.org/topics/29467</guid>
    </item>
    <item>
      <title>如何用 socket 发送 16 进制数数组</title>
      <description>&lt;p&gt;一个简单的 TCPclient 程序，但是想要发送的数据是 16 进制数组成的数组，而不是字符串。
写了个程序，但是发出去的内容打印出来是
“48\n49\n50\n”
变成了长度是 9 的字符串了。我希望是对方能收到 3 个字节的 hex 数据 0x30,0x31,0x32
请问有哪位知道怎么写才对嘛？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'pp'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'socket'&lt;/span&gt;

&lt;span class="n"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'192.168.81.137'&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;65101&lt;/span&gt;

&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;TCPSocket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"30 31 32"&lt;/span&gt;
&lt;span class="n"&gt;arr_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;arr_hex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;arr_str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;arr_hex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;arr_hex&lt;/span&gt;
&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arr_hex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Tue, 22 Mar 2016 14:16:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/29415</link>
      <guid>https://ruby-china.org/topics/29415</guid>
    </item>
    <item>
      <title>关于 SWIG 怎么加载 C 函数的问题</title>
      <description>&lt;p&gt;在自定义的 C 函数里面使用了 memset,strcpy 这些函数，然后 make 的时候提示错误：
‘memset’was not declared in this scope&lt;/p&gt;

&lt;p&gt;在自定义的 C 文件里面有添加对应的头文件，extconf.rb 内容如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Loads mkmf which is used to make makefiles for Ruby extensions&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mkmf'&lt;/span&gt;

&lt;span class="c1"&gt;# The destination&lt;/span&gt;
&lt;span class="n"&gt;dir_config&lt;/span&gt; &lt;span class="s1"&gt;'sdsapi'&lt;/span&gt;

&lt;span class="vg"&gt;$libs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;append_library&lt;/span&gt; &lt;span class="vg"&gt;$libs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'stdc++'&lt;/span&gt;

&lt;span class="c1"&gt;# Do the work&lt;/span&gt;
&lt;span class="n"&gt;create_makefile&lt;/span&gt; &lt;span class="s1"&gt;'sdsapi'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有哪位知道问题所在吗？&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Thu, 17 Mar 2016 11:40:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/29372</link>
      <guid>https://ruby-china.org/topics/29372</guid>
    </item>
    <item>
      <title>http 网页内容抓取的编码问题</title>
      <description>&lt;p&gt;同一个程序，在打印网页的 body 内容的时候，中文字段用 puts 都可以显示出来，用 pp 却显示成两种编码。这是因为什么？
已其中 key words 的部分内容为例：
ruby2.1.5 环境下
pp 的显示结果:\xE5\xBC\x80\xE5\x8F\x91\xE8\x80\x85                        这是 ASCII-8BIT 的编码吧
ruby1.8.7 环境下
pp 的显示结果:\345\274\200\345\217\221\350\200\205
puts 都能显示成中文:“开发者”&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#!/usr/bin/env ruby&lt;/span&gt;

&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"net/http"&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"pp"&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"uri"&lt;/span&gt;

&lt;span class="n"&gt;custom_h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0"&lt;/span&gt;
&lt;span class="n"&gt;custom_h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"User-Agent"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;

&lt;span class="n"&gt;uri&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"http://www.cnblogs.com"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;pp&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;
&lt;span class="n"&gt;pp&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;host&lt;/span&gt;
&lt;span class="n"&gt;pp&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;port&lt;/span&gt;
&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;empty?&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;path&lt;/span&gt;
&lt;span class="n"&gt;pp&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;

&lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;resq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;custom_h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="n"&gt;resq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;pp&lt;/span&gt; &lt;span class="n"&gt;resq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Wed, 22 Jul 2015 15:21:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/26606</link>
      <guid>https://ruby-china.org/topics/26606</guid>
    </item>
    <item>
      <title>想用 epoll 做个高并发爬虫,有好的开源代码推荐学习下吗？</title>
      <description>&lt;p&gt;想利用 eventmachine 做一个 http 的高并发爬虫程序，但是没有太多头绪
所以想看看大家有没有开源的软件可以推荐我学习一下。&lt;/p&gt;

&lt;p&gt;或者简单的如下是否可行：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;http_oper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rul&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Fiber&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;current&lt;/span&gt;
   &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;EventMachine&lt;/span&gt; &lt;span class="o"&gt;::&lt;/span&gt; &lt;span class="no"&gt;HttpRequest&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;connect_timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inactivity_timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt; 
   &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;callback&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;resume&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;errback&lt;/span&gt;    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;resume&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="no"&gt;Fiber&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;yield&lt;/span&gt;

   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;error&lt;/span&gt;
     &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;HTTP_ERROR&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;error&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;

   &lt;span class="n"&gt;http&lt;/span&gt; 
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;EM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
           &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_url&lt;/span&gt;        &lt;span class="c1"&gt;## 一个获取目标url的接口，具体实现没写&lt;/span&gt;
           &lt;span class="no"&gt;Fiber&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                  &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http_oper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
           &lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;resume&lt;/span&gt; 
       &lt;span class="k"&gt;end&lt;/span&gt;
       &lt;span class="no"&gt;EM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stop&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Mon, 29 Jun 2015 17:05:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/26238</link>
      <guid>https://ruby-china.org/topics/26238</guid>
    </item>
    <item>
      <title>Ruby 内存的一些问题</title>
      <description>&lt;p&gt;最近在程序中由于需要对大字符串数据进行多种操作，倒是机器内存一直紧张，所以想请教下面几个问题，来研究下怎么解决&lt;/p&gt;

&lt;p&gt;1.在程序中，某一个字符串对象在被传值到其他函数或者赋值给另一个变量的时候，会不会产生分配多个内存给多个对象
譬如：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="err"&gt;（&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt; &lt;span class="err"&gt;）&lt;/span&gt;
      &lt;span class="no"&gt;Z&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;arg&lt;/span&gt;         &lt;span class="c1"&gt;#Z是不是新的对象？占据的内存地址不等于arg的？&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"123456"&lt;/span&gt;     &lt;span class="c1"&gt;#系统新建了一个string对象，占据一部分内存&lt;/span&gt;
&lt;span class="no"&gt;Y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;X&lt;/span&gt;                 &lt;span class="c1"&gt;#对象Y应该是等同X的吧？应该使用的是同一块内存&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.有没有办法在 ruby 使用过程中分析哪些变量使用了多少内存？以及什么时候已经自动释放？
3.ruby 中全局变量和局部变量使用的内存区域是一样吗？&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Fri, 05 Jun 2015 11:39:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/25894</link>
      <guid>https://ruby-china.org/topics/25894</guid>
    </item>
    <item>
      <title>对于多进程或者多线程 Logger 类是否是安全的？</title>
      <description>&lt;p&gt;在使用 Logger 类进行日志管理的时候，多进程以及多线程运行情况下，创建多个日志类对同一个日志文件进行操作，是否是安全的？
如果是，那么是通过什么实现的呢？文件锁？
如果不是，哪有没有安全的日志类，或者通过自行增加 mutex 来解决吗？
在网上查了很多 Logger 相关的资料，但是没发现有用的，所以求助下各位，感谢！&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Wed, 13 May 2015 10:49:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/25552</link>
      <guid>https://ruby-china.org/topics/25552</guid>
    </item>
    <item>
      <title>写一个 “判断没有包含某个字符串的正则 “遇到的问题</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;ine1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"se.inc on line 329.&amp;lt;/li&amp;gt;"&lt;/span&gt;
&lt;span class="n"&gt;expect_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"^(?!.*(mysql)).*$"&lt;/span&gt;                         
&lt;span class="n"&gt;reg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expect_value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;line1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;line1&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="n"&gt;reg&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"match true"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如上，这个程序目前为止是成功的。
当 line1 中不包含 mysql 的时候，正确输出了”match true“
那么问题来了，如果 line1 所包含的字符串存在多行，即包含了回车换行符之后，每次只匹配第一行就结束了。
我知道是回车换行导致的问题，但是怎么想都没写对有效的正则表达式，有哪位能帮忙下吗？
感谢！&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Tue, 28 Apr 2015 16:07:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/25358</link>
      <guid>https://ruby-china.org/topics/25358</guid>
    </item>
    <item>
      <title>Ruby 如何使用 C 扩展多线程</title>
      <description>&lt;p&gt;想使用 C 写一个线程池，然后再在 ruby 程序中使用这个线程池来实现多线程。
有相关的开源库或者指点下，如何让 C 创建的线程能够调用 ruby 的程序吗？
具体的过程中：
C 只负责线程管理，线程具体所作的事情由 ruby 来实现。
所以就存在一个问题，C 创建线程的函数 pthread_create 是通过传递函数指针来设定线程运行程序的，ruby 的代码如何传给这个函数呢？好像没有函数指针的说法&lt;/p&gt;</description>
      <author>nameofhsw</author>
      <pubDate>Mon, 18 Aug 2014 14:13:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/21084</link>
      <guid>https://ruby-china.org/topics/21084</guid>
    </item>
  </channel>
</rss>
