<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lihaidong (frankli)</title>
    <link>https://ruby-china.org/lihaidong</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Windows 下有没有类似 DTrace 工具?</title>
      <description>&lt;p&gt;如题&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Fri, 21 Nov 2014 15:57:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/22799</link>
      <guid>https://ruby-china.org/topics/22799</guid>
    </item>
    <item>
      <title>求在 windows 下安装编译 libv8 经验</title>
      <description>&lt;p&gt;因需对 ruby 与 rails 的升级，需要升级&lt;code&gt;libv8&lt;/code&gt; 与&lt;code&gt;therubyracer&lt;/code&gt; ，但目前并没有对 windows 的支持，需要自行编译&lt;code&gt;v8 engine&lt;/code&gt;，编译之间遇到不少问题，至今未果，求赐教&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Thu, 04 Sep 2014 09:58:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/21379</link>
      <guid>https://ruby-china.org/topics/21379</guid>
    </item>
    <item>
      <title>Win32ole 多线程问题</title>
      <description>&lt;p&gt;Win32ole 在多线程环境下会出现 &lt;/p&gt;

&lt;p&gt;&lt;code&gt;failed to parse display name of moniker winmgmts://WIN-8E1TI6SN6EP/root/cimv2&lt;/code&gt; 这样的问题，&lt;/p&gt;

&lt;p&gt;一查看是 ruby 1.9 下 Win32ole 线程不安全，且&lt;a href="https://bugs.ruby-lang.org/issues/4405" rel="nofollow" target="_blank" title="bug"&gt;https://bugs.ruby-lang.org/issues/4405&lt;/a&gt;说已经 fix，但问题还在，求指点&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Mon, 25 Aug 2014 15:07:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/21215</link>
      <guid>https://ruby-china.org/topics/21215</guid>
    </item>
    <item>
      <title>rails 里 controller、model 的测试边界在哪里</title>
      <description>&lt;p&gt;在对 controller 做测试的时候，由于 controller 是一个功能的入口，如果不对 controller 里的 model 接口 mock，感觉对 controller 里的测试就把模型的接口给覆盖了，model 的测试就感觉重复，如果对 model 的接口直接 mock，感觉 controller 里的测试就变得没什么意思，不知道大家平时怎么去权衡这个界限的&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Wed, 06 Aug 2014 16:26:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/20873</link>
      <guid>https://ruby-china.org/topics/20873</guid>
    </item>
    <item>
      <title>求性价比高的虚拟网络主机介绍，可以用来搭建 rails 应用的</title>
      <description>&lt;p&gt;自己要做个网站，需要租用虚拟主机什么的，不熟悉，求介绍&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Thu, 31 Jul 2014 11:30:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/20773</link>
      <guid>https://ruby-china.org/topics/20773</guid>
    </item>
    <item>
      <title>求 ruby 进程中线程资源使用查看工具介绍</title>
      <description>&lt;p&gt;用 ruby 写了一个 windows 环境下进程生命周期管理程序，在实际运行中，cpu 占用一直很高，不知道有没有可以查看线程的工具&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Fri, 27 Jun 2014 16:42:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/20200</link>
      <guid>https://ruby-china.org/topics/20200</guid>
    </item>
    <item>
      <title>ruby 的 extend 方法为什么在类和实例上实现的逻辑不一致</title>
      <description>&lt;p&gt;我们先来看下实例对象 extend module 的情况&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
     &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FooBar&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
     &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&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;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&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;extend&lt;/span&gt; &lt;span class="no"&gt;Foo&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;bar&lt;/span&gt; 
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接着看下类对象 extend module 的情况&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
       &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FooBar&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
        &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;Foo&lt;/span&gt;
&lt;span class="no"&gt;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bar&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再来看下列代码&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
     &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;
     &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FooBar&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
     &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&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;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&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;extend&lt;/span&gt; &lt;span class="no"&gt;Foo&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;bar&lt;/span&gt; 

&lt;span class="n"&gt;bar&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FooBar&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类 extend&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
       &lt;span class="s2"&gt;"bar in the Module Foo"&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FooBar&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;
        &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;
        &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;Foo&lt;/span&gt;
&lt;span class="no"&gt;FooBar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bar&lt;/span&gt;

&lt;span class="n"&gt;bar&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="no"&gt;Module&lt;/span&gt; &lt;span class="no"&gt;Foo&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"bar in the class FooBar"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;原来 extend 在实例对象上时，创建了一个虚拟类，本身的那个类作为了虚拟类的超类，对象指针指向了虚拟类，方法的调用优先级自然比超类的高，
然而 extend 用在类对象上时，也创建了一个虚拟类，这个虚拟类就变成了本身这个类的超类。虽然知道它的原理，但不知道它为什么会这样实现，求解？&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Mon, 19 May 2014 13:57:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/19376</link>
      <guid>https://ruby-china.org/topics/19376</guid>
    </item>
    <item>
      <title>求助，windows 环境下，Rails 的日志分割问题</title>
      <description>&lt;p&gt;问题是这样的，rails 多个进程部署在 windows 服务器环境下，如果用自带的 logrotate，会出现日志乱窜现象，其他的方案又是针对 Linux OS X 系的，再次感觉在 windows 环境下部署 rails 比较变态，求指点&lt;/p&gt;</description>
      <author>lihaidong</author>
      <pubDate>Sun, 04 May 2014 10:26:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/18992</link>
      <guid>https://ruby-china.org/topics/18992</guid>
    </item>
  </channel>
</rss>
