<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>yuhaidonghd (海之骄子)</title>
    <link>https://ruby-china.org/yuhaidonghd</link>
    <description>这个人不懒，什么也没留下。</description>
    <language>en-us</language>
    <item>
      <title>API 目录页面有多余的错误路由</title>
      <description>&lt;p&gt;&lt;a href="https://ruby-china.org/api" rel="nofollow" target="_blank"&gt;https://ruby-china.org/api&lt;/a&gt; 
API 页面后面的路由都是错误的。本地的开发环境中就没有那些多余的错误路由。看代码也没发现是什么原因造成的。&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Wed, 25 Mar 2015 21:20:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/24836</link>
      <guid>https://ruby-china.org/topics/24836</guid>
    </item>
    <item>
      <title>后退时页面显示错误</title>
      <description>&lt;p&gt;重现步骤：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;打开一个帖子的页面，比如 &lt;a href="https://ruby-china.org/topics/20275" rel="nofollow" target="_blank"&gt;https://ruby-china.org/topics/20275&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;点击回复中的楼层锚链接，比如 &lt;a href="https://ruby-china.org/topics/20275#reply1" rel="nofollow" target="_blank"&gt;https://ruby-china.org/topics/20275#reply1&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;再点击其他本页上的其他链接打开新页面，比如 &lt;a href="https://ruby-china.org/rei" rel="nofollow" target="_blank"&gt;https://ruby-china.org/rei&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;现在已经在新页面了，点击浏览器的后退按钮，应该后退到刚才的帖子页面。但是后退失败，页面仍然停留在当前页面，但是浏览器地址栏显示的 URL 已经变成了 &lt;a href="https://ruby-china.org/topics/20275#reply1" rel="nofollow" target="_blank"&gt;https://ruby-china.org/topics/20275#reply1&lt;/a&gt; 。页面与 URL 不对应了。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;如果直接点击 2 中得链接在进行 3 和 4 步是正常的。
个人猜测是不是 ruby-china 对浏览器历史记录做了修改，但是锚点链接没有处理好？&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2014/0452aa068b72f70190c83475cec46a08.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Tue, 29 Jul 2014 20:47:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/20740</link>
      <guid>https://ruby-china.org/topics/20740</guid>
    </item>
    <item>
      <title>讨论一下苹果的 goto fail bug 和 GnuTLS bug</title>
      <description>&lt;p&gt;今天看 HackerNews 发现 GnuTLS 也发现严重的证书认证 bug，怎么最近关于 SSL/TLS 的 bug 这么多？好像都是编程语言或版本控制系统的坑导致的。
&lt;a href="http://coolshell.cn/articles/11112.html" rel="nofollow" target="_blank"&gt;http://coolshell.cn/articles/11112.html&lt;/a&gt;
&lt;a href="https://news.ycombinator.com/item?id=7342559" rel="nofollow" target="_blank"&gt;https://news.ycombinator.com/item?id=7342559&lt;/a&gt;
&lt;a href="https://news.ycombinator.com/item?id=7344461" rel="nofollow" target="_blank"&gt;https://news.ycombinator.com/item?id=7344461&lt;/a&gt;&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Wed, 05 Mar 2014 12:47:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/17676</link>
      <guid>https://ruby-china.org/topics/17676</guid>
    </item>
    <item>
      <title>如何获取 TCPSocket 接收缓冲区中数据的长度</title>
      <description>&lt;p&gt;如题，相当于 Unix 中&lt;code&gt;fcntl(FIONREAD, &amp;amp;result)&lt;/code&gt;的效果。还有求推荐一个好用的 Socket 库。&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Sun, 26 Jan 2014 22:30:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/17014</link>
      <guid>https://ruby-china.org/topics/17014</guid>
    </item>
    <item>
      <title>修改 gem sources 后遇到的问题</title>
      <description>&lt;p&gt;操作系统是 Debian，原来修改过 sources，改成了淘宝的&lt;a href="http://ruby.taobao.org/" rel="nofollow" target="_blank" title=""&gt;镜像&lt;/a&gt;。今天要安装一个 gem，就 &lt;code&gt;sudo gem install bindata&lt;/code&gt; 。结果好长时间没反应，加 &lt;code&gt;-V&lt;/code&gt; 查看执行过程发现仍然是从 rubygems.org 下载。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem sources
&lt;span class="k"&gt;***&lt;/span&gt; CURRENT SOURCES &lt;span class="k"&gt;***&lt;/span&gt;

http://ruby.taobao.org/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;貌似没问题，想了想，尝试了一下下面的命令：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gem sources
&lt;span class="k"&gt;***&lt;/span&gt; CURRENT SOURCES &lt;span class="k"&gt;***&lt;/span&gt;

https://rubygems.org/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;原来问题在这。以前修改的只是普通用户的 source，当用以 root 身份执行 gem 时仍然使用默认的 source。我猜想这些配置应该是保存在用户主目录下吧。找了一下果然有一个 &lt;code&gt;.gemrc&lt;/code&gt; 文件，里面确实有 sources 这一项。
找到了问题的根源，解决办法就很简单了，在 remove 和 add 两个 gem 命令前加 sudo 就好了。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gem sources &lt;span class="nt"&gt;--remove&lt;/span&gt; https://rubygems.org/
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gem sources &lt;span class="nt"&gt;-a&lt;/span&gt; http://ruby.taobao.org/
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gem sources &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;span class="k"&gt;***&lt;/span&gt; CURRENT SOURCES &lt;span class="k"&gt;***&lt;/span&gt;

http://ruby.taobao.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;自己遇到的问题，不清楚该放到哪个板块。鉴于自己是个新手，就发到新手问题了。
淘宝的&lt;a href="http://ruby.taobao.org/" rel="nofollow" target="_blank" title=""&gt;镜像&lt;/a&gt;没有明确指出这一点，可能会对想我这样的新手造成一定困惑，希望能添加一点说明。&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Sun, 03 Nov 2013 11:23:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/15260</link>
      <guid>https://ruby-china.org/topics/15260</guid>
    </item>
    <item>
      <title>在类中调用以=结尾的方法的疑惑</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Foo&lt;/span&gt;
  &lt;span class="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:y&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;xx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;yy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;xx&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
    &lt;span class="n"&gt;yy&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;xx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;yy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;foo_assign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;xx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;yy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;foo_assign&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;inspect&lt;/span&gt;
    &lt;span class="s2"&gt;"#&amp;lt;Foo:@x=&lt;/span&gt;&lt;span class="si"&gt;#@x&lt;/span&gt;&lt;span class="s2"&gt;,@y=&lt;/span&gt;&lt;span class="si"&gt;#@y&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;"&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;Foo&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;foo_assign&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; 
&lt;span class="c1"&gt;# =&amp;gt; #&amp;lt;Foo:@x=,@y=&amp;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;foo&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;
&lt;span class="c1"&gt;# =&amp;gt; #&amp;lt;Foo:@x=1,@y=2&amp;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;foo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# SyntaxError&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;foo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;  &lt;span class="c1"&gt;# ArgumentError&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 Foo#foo_assign中貌似xx和yy被当成新定义的局部变量。是不是只能通过self.xx=这样的显式调用才行？哪位明白人给讲讲Ruby对 &lt;code&gt;=&lt;/code&gt; 的特殊处理。
写这个的时候发现 foo_assign 不能定义成 &lt;code&gt;foo=&lt;/code&gt;，要不然 &lt;code&gt;f.foo=(1, 2)&lt;/code&gt; 抛出异常，而且有括号和没括号还不一样。&lt;/p&gt;</description>
      <author>yuhaidonghd</author>
      <pubDate>Thu, 24 Oct 2013 20:04:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/15009</link>
      <guid>https://ruby-china.org/topics/15009</guid>
    </item>
  </channel>
</rss>
