<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>artone (ArtOne)</title>
    <link>https://ruby-china.org/artone</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>为什么有些 Gem 要自己包凭证在里面呢？</title>
      <description>&lt;p&gt;我在研究这个 PayPal-Rub-SDK 这个 gem：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/paypal/PayPal-Ruby-SDK" rel="nofollow" target="_blank"&gt;https://github.com/paypal/PayPal-Ruby-SDK&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;他在发送 request 给 API 前指定了目录下包好的一个 &lt;code&gt;.crt&lt;/code&gt; 档案：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2020/4672d11f-c631-4e4e-a431-660eec7c33e6.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/paypal/PayPal-Ruby-SDK/blob/f55fdc50b9e8b98cb4b4a937ab86c7a3496047dc/lib/paypal-sdk/core/util/http_helper.rb#L35-L45" rel="nofollow" target="_blank" title=""&gt;来源（GitHub）&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;想请问：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;为什么这么做呢？&lt;/li&gt;
&lt;li&gt;这样有什么好处呢？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;因为现在这个 gem 的 SSL 凭证其实已经过期了，所以程式其实是坏的，我把&lt;a href="https://github.com/paypal/PayPal-Ruby-SDK/blob/f55fdc50b9e8b98cb4b4a937ab86c7a3496047dc/lib/paypal-sdk/core/util/http_helper.rb#L44" rel="nofollow" target="_blank" title=""&gt;这一行&lt;/a&gt;移除掉：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ca_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;default_ca_file&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;程式就好了，测试就过了！但是这样移除会有什么问题吗？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 04 Aug 2020 17:42:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/40228</link>
      <guid>https://ruby-china.org/topics/40228</guid>
    </item>
    <item>
      <title>local var vs accessor function 主要考量是什么？</title>
      <description>&lt;p&gt;在 Twitter 上看到：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/d702a05f-111e-4b0f-88a5-273693aa7bc1.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;请教各位用 accessor function 而避免用 local var 的主要考量是什么？占用的内存吗？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Fri, 23 Jun 2017 10:42:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/33291</link>
      <guid>https://ruby-china.org/topics/33291</guid>
    </item>
    <item>
      <title>主机上 ping、curl 不存在网址会得到自己的主机位置求解</title>
      <description>&lt;p&gt;我的主机位置域名假设是 foo.bar，主机系统是 Ubuntu 14.04，放在 DigitalOcean 上。&lt;/p&gt;

&lt;p&gt;终端机 ping、curl 不存在的 URL（例如 not-exist-url.com），都会變成去抓 not-exist-url.com.foo.bar 的结果：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ping not-exist-url.com
PING not-exist-url.com.foo.bar (***.***.**.**) 56(84) bytes of data.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;/etc/resolv.conf&lt;/code&gt; 配置是：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nameserver 8.8.8.8
nameserver 8.8.4.4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;试过修改 &lt;code&gt;/etc/network/interfaces&lt;/code&gt;（改为台湾电信公司的 DNS public IP）：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dns-nameservers 168.95.1.1 168.95.192.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;问题仍然在，求教四方先进！&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 13 Jun 2017 11:07:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/33224</link>
      <guid>https://ruby-china.org/topics/33224</guid>
    </item>
    <item>
      <title>[讨论] 大量 String 判断式的重构方法</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/Kapeli/Dash-iOS" rel="nofollow" target="_blank" title=""&gt;Dash for iOS open source&lt;/a&gt; 了，先来看看里面这段精美的 if statement：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/37cd8f0836d618f689f20627a9c4f04f.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;图片来源：&lt;a href="https://twitter.com/BalestraPatrick/status/798278284320604160" rel="nofollow" target="_blank" title=""&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;虽说我不会写 Objective-C，不过如果在 Ruby 上遇到应该我会这样写：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s2"&gt;"bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"Chai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"D3JS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"Go"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"Javascript"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"Ruby"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;include?&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt;

  &lt;span class="c1"&gt;# do something&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;阵列内容可以按照字母排序，肉眼看也比较容易阅读。大家都怎么写呢？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 15 Nov 2016 14:52:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/31600</link>
      <guid>https://ruby-china.org/topics/31600</guid>
    </item>
    <item>
      <title>如何正确阻挡有人不断尝试登入？</title>
      <description>&lt;p&gt;因为收到 CloudWatch 通知我主机 CPU 使用率超过 80%，上去一看发现有人正在尝试暴力登入。&lt;/p&gt;
&lt;h5 id="先貼 log："&gt;先貼 log：&lt;/h5&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;54.182.204.56 - - [08/Nov/2016:10:16:21 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:21 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:21 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:22 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:22 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:22 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:22 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:22 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:23 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:23 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
54.182.204.56 - - [08/Nov/2016:10:16:23 +0800] "POST /wp-login.php HTTP/1.1" 200 3656 "-" "Amazon CloudFront"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只取其中一段，因为其他都是一样的。&lt;/p&gt;
&lt;h5 id="我自己的分析："&gt;我自己的分析：&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;从 log 来看有人不断想要尝试登入我主机上的某个 WordPress 站，而且是透过破解程式自动化执行。&lt;/li&gt;
&lt;li&gt;我的主机上有很多个 WordPress 站点，有的有透过 CDN（CloudFront）加速，从 log 看来是有用 CDN 的 WordPress 之一。&lt;/li&gt;
&lt;li&gt;log 上只看得出来他想尝试登入 WordPress，但是看不出来到底是想尝试登入哪个站。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="我的主机架構："&gt;我的主机架構：&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;主機 Nginx&lt;/li&gt;
&lt;li&gt;有的 WordPress 站有用 CDN 有的没有，CDN 是 CloudFront&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="我目前的作法："&gt;我目前的作法：&lt;/h5&gt;
&lt;p&gt;目前用 &lt;code&gt;iptables&lt;/code&gt; 把该 IP 挡掉了，Nginx 的 access.log 立即停止出现登入尝试：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo iptables -A INPUT -s 54.182.204.56 -j DROP
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="想讨论的问题："&gt;想讨论的问题：&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;我查了一下该 IP 似乎是 CloudFront 的 IP，显然这样是错的；我应该是阻挡攻击者，而不是挡 CDN 的 IP，请教该如何正确阻挡？&lt;/li&gt;
&lt;li&gt;从 log 看不来到底是哪个站被攻击，我该怎么进一步得知？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上两个问题请教贤达，先谢谢各位！&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 08 Nov 2016 10:35:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/31547</link>
      <guid>https://ruby-china.org/topics/31547</guid>
    </item>
    <item>
      <title>如何在 block 区块内提早返回？</title>
      <description>&lt;p&gt;我写了一个 rake task，以下程式码是精简过的，这是会出现 &lt;code&gt;Unexpected Return (LocalJumpError)&lt;/code&gt; 错误的，似乎是因为 block 里面不能用 &lt;code&gt;return&lt;/code&gt; 的缘故：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:reminder&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s2"&gt;"reminder todo"&lt;/span&gt;
  &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;todo: :environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

    &lt;span class="n"&gt;wday&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;zone&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;wday&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;wday&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;

    &lt;span class="c1"&gt;# do something...&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我可以把它包在 &lt;code&gt;unless&lt;/code&gt; 或 &lt;code&gt;if&lt;/code&gt; 条件式里面来解决这个问题：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;wday&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
  &lt;span class="c1"&gt;# do something&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可能是我写 Javascript 的习惯，我不喜欢用 &lt;code&gt;if&lt;/code&gt; 这样层层嵌套，尤其是如果我这里条件更复杂的时候，想要提早用 return 提早返回，减少嵌套的发生，请问我还可以怎么写呢？&lt;/p&gt;

&lt;p&gt;谢谢！&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Mon, 01 Aug 2016 10:22:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/30681</link>
      <guid>https://ruby-china.org/topics/30681</guid>
    </item>
    <item>
      <title>询问中国大陆主机租用方式</title>
      <description>&lt;h2 id="目前碰到的问题"&gt;目前碰到的问题&lt;/h2&gt;
&lt;p&gt;我在阿里云架租了一台主机，但是被通知网站&lt;a href="https://help.aliyun.com/product/35468.html" rel="nofollow" target="_blank" title=""&gt;未经过备案&lt;/a&gt;，这让我们小公司很困扰，因为我们并没有完整的资料可以提供，所以在申请备案上出现的困难。&lt;/p&gt;
&lt;h2 id="请教的问题"&gt;请教的问题&lt;/h2&gt;
&lt;p&gt;因为我一直都是长期使用国外 AWS、DigitalOcean、Linode 等主机服务，中国内的主机测试过 UCloud，似乎没备案这个程序（有点忘了），这次租了阿里云才知道网站备案这个流程，第一次碰上这个问题经验不足，所以我想请问一下各位在中国都是经过什么方式租用主机、架设网站的呢？&lt;/p&gt;

&lt;p&gt;先谢谢各位回答！&lt;/p&gt;

&lt;p&gt;注：我人不在中国，公司虽有部分业务在中国，但只偶有业务人员往返。&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Wed, 27 Jul 2016 18:34:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/30647</link>
      <guid>https://ruby-china.org/topics/30647</guid>
    </item>
    <item>
      <title>只有状态不同的条件可以如何重构？</title>
      <description>&lt;p&gt;原本的写法没什么问题，只是想讨论有没有其他可能性。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:filter&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="s1"&gt;'opened'&lt;/span&gt;
  &lt;span class="vi"&gt;@projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:todos&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;opened&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sorted_by_alias_asc&lt;/span&gt;
&lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="s1"&gt;'closed'&lt;/span&gt;
  &lt;span class="vi"&gt;@projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:todos&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;closed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sorted_by_alias_asc&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
  &lt;span class="vi"&gt;@projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:todos&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;opened&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sorted_by_alias_asc&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我把 code 简化方便阅读，想问问大家会如何重构这段？这里面只有状态 query 不同其他都一致，有许多重复的 code，可以如何调整呢？&lt;/p&gt;

&lt;p&gt;谢谢！&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 05 Jul 2016 18:44:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/30455</link>
      <guid>https://ruby-china.org/topics/30455</guid>
    </item>
    <item>
      <title>今天网站疑似被攻击</title>
      <description>&lt;p&gt;先贴一段 access.log 请大家帮忙看看：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/f8314eb0a065e8cf73955f19e9e82a69.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;因为我对资安攻击这方面没这么懂，想请大家帮忙看看，这看起来是有人在做跨目录攻击？我该怎么做防御？或是怎么检查问题？&lt;/p&gt;

&lt;p&gt;刚开始发现式因为网站首页丢出了 Nginx 默认的 404 页面（50x.html 好像之前被我删掉了），后来重启 Nginx 好像就自己好了。&lt;/p&gt;

&lt;p&gt;谢谢！&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Thu, 12 May 2016 12:09:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/29993</link>
      <guid>https://ruby-china.org/topics/29993</guid>
    </item>
    <item>
      <title>[分享] SSH2 - 管理登入多个 EC2 instances</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/soheil/ssh2" rel="nofollow" target="_blank"&gt;https://github.com/soheil/ssh2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;忽略 SSH2 这名字上的问题，这个工具看起来挺方便的，尤其当 EC2 instance 很多的时候。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/53225ff9985da6eb802cc17849381b0a.png" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2015/58b851e88f80628ca548b6c13ccd74ea.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Mon, 07 Dec 2015 14:00:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/28298</link>
      <guid>https://ruby-china.org/topics/28298</guid>
    </item>
    <item>
      <title>询问类似 interncom 的中国国产訪客即時通訊服务</title>
      <description>&lt;p&gt;想寻找一个即时通讯的第三方服务，可以像 &lt;a href="https://www.intercom.io" rel="nofollow" target="_blank" title=""&gt;intercom&lt;/a&gt; 这样挂在自己网站上，与网站访客沟通。&lt;/p&gt;

&lt;p&gt;由於时间成本考量不考虑自己开发，想请大家帮忙推荐丶分享类似的国内服务。&lt;/p&gt;

&lt;p&gt;另外，想请问 intercom 在国内的访问如何？是否有被阻挡？本人不在国内，想请大家帮忙，谢谢。&lt;/p&gt;

&lt;p&gt;在国外我有找到其他类似的：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://elev.io/" rel="nofollow" target="_blank"&gt;https://elev.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://helpcrunch.com/" rel="nofollow" target="_blank"&gt;http://helpcrunch.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intercom.io/" rel="nofollow" target="_blank"&gt;https://www.intercom.io/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>artone</author>
      <pubDate>Wed, 07 Oct 2015 12:21:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/27566</link>
      <guid>https://ruby-china.org/topics/27566</guid>
    </item>
    <item>
      <title>Router 设定 constraints subdomain 如何预防存取外层的设定</title>
      <description>&lt;p&gt;先上代码，这是我的 routes.rb 设定：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:admin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s2"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;constraints: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;subdomain: &lt;/span&gt;&lt;span class="s1"&gt;'admin'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"dashboard#index"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="ss"&gt;to: &lt;/span&gt;&lt;span class="s2"&gt;"pages#index"&lt;/span&gt;

&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"about"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"pages#about"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结果如下：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sample.dev 会得到 &lt;code&gt;pages#index&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;sample.dev/about 会得到 &lt;code&gt;pages#about&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;admin.sample.dev 会得到 &lt;code&gt;admin/dashboard#index&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;问题来了，当访问 admin.sample.dev/about 还是会得到 &lt;code&gt;pages#about&lt;/code&gt;！&lt;/p&gt;

&lt;p&gt;我以为 namespace + constraints subdomain 会形成一个「闭包」，我要怎么防止 admin.sample.dev/about 存取到 &lt;code&gt;pages#about&lt;/code&gt;？&lt;/p&gt;

&lt;p&gt;目前只想到在 namespace 里面覆写一个 get "about" 设定但这样写好丑……来请教有没有其他作法？&lt;/p&gt;
&lt;h3 id="2015-0817 自己解答："&gt;2015-0817 自己解答：&lt;/h3&gt;
&lt;p&gt;把 root 层的设定包到一个 constraints 就解决了：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:admin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s2"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;constraints: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;subdomain: &lt;/span&gt;&lt;span class="s1"&gt;'admin'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"dashboard#index"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="no"&gt;Rootdomain&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="ss"&gt;to: &lt;/span&gt;&lt;span class="s2"&gt;"pages#index"&lt;/span&gt;
  &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"about"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"pages#about"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>artone</author>
      <pubDate>Fri, 14 Aug 2015 11:38:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/26929</link>
      <guid>https://ruby-china.org/topics/26929</guid>
    </item>
    <item>
      <title>大家用什么方式管理密码？</title>
      <description>&lt;p&gt;先看个新闻：&lt;a href="https://grahamcluley.com/2015/05/train-control-centre-passwords-revealed/" rel="nofollow" target="_blank" title=""&gt;Oops! Train control centre passwords revealed on BBC TV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/c24e6900fbf2bb8cfbf3c20056676643.jpeg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;我先在就是用这个方法来记住密码（密码太多而且都不一样），想问问各位都是如何管理自己的密码？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Sun, 03 May 2015 21:30:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/25413</link>
      <guid>https://ruby-china.org/topics/25413</guid>
    </item>
    <item>
      <title>写入数据库你是否会考虑 UUID 重复问题</title>
      <description>&lt;p&gt;我用 UUID 作为数据库 table 的 Primary key，想说是否需要考量 UUID 重复的可能性问题，想听听大家的想法。&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Tue, 23 Dec 2014 23:04:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/23367</link>
      <guid>https://ruby-china.org/topics/23367</guid>
    </item>
    <item>
      <title>如何使用 define_method 定义 class method？</title>
      <description>&lt;p&gt;我晓得可以用 &lt;code&gt;define_singleton_method&lt;/code&gt; 这个方法，不过我想知道的是，以下这两种方法之间的差别：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;C&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;instance_eval&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;method_a&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&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;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;method_a&lt;/span&gt;
&lt;span class="c1"&gt;# =&amp;gt; Class&lt;/span&gt;

&lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;instance_eval&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;define_method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"method_b"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;method_b&lt;/span&gt;
&lt;span class="c1"&gt;# =&amp;gt; undefined method `method_b' for C:Class (NoMethodError)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我前后分别用了两种方式定义 C class 的 class method，这两种方式的差异是什么？为什么前者可以，后者不行呢？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Mon, 07 Jan 2013 19:30:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/7854</link>
      <guid>https://ruby-china.org/topics/7854</guid>
    </item>
    <item>
      <title>/lib、/lib/**/ 两个路径有什么差别</title>
      <description>&lt;p&gt;请问这两个路径有什么差别？&lt;code&gt;**&lt;/code&gt; 两个星号又代表什么意思？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autoload_paths&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="no"&gt;Dir&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/lib"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/lib/**/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一个星号 &lt;code&gt;*&lt;/code&gt; 通常表示通配符，不明白两个星号 &lt;code&gt;**&lt;/code&gt; 是什么意思。&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Sat, 03 Nov 2012 14:59:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/6497</link>
      <guid>https://ruby-china.org/topics/6497</guid>
    </item>
    <item>
      <title>OS X 下的 iTerm 2 如何让 cursor 跳字移动？</title>
      <description>&lt;p&gt;编辑器可以用 alt + 左右键，在单字之间移动，可是在 iTerm 中貌似会触发到快捷键，有其他方法吗？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Wed, 17 Oct 2012 11:53:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/6114</link>
      <guid>https://ruby-china.org/topics/6114</guid>
    </item>
    <item>
      <title>Google Chrome DevTool 的 Network 那两条红蓝线代表什么？</title>
      <description>&lt;p&gt;Timeline 看得懂，但是那两条线不明白什么意思。&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/7970a0dc88b593bb077b5e4376516558.png" title="" alt="chrome-dev-tool"&gt;&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Fri, 05 Oct 2012 11:12:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/5883</link>
      <guid>https://ruby-china.org/topics/5883</guid>
    </item>
    <item>
      <title>YAML 里的「&amp;」符号表示什么？</title>
      <description>&lt;p&gt;在 &lt;a href="https://github.com/binarylogic/settingslogic#2-create-your-settings" rel="nofollow" target="_blank" title=""&gt;Settingslogic&lt;/a&gt; 这个 gem 项目看到这段：&lt;/p&gt;

&lt;p&gt;# config/application.yml
    defaults: &amp;amp;defaults
      cool:
        saweet: nested settings
      neat_setting: 24
      awesome_setting: &amp;lt;%= "Did you know 5 + 5 = #{5 + 5}?" %&amp;gt;&lt;/p&gt;

&lt;p&gt;development:
      &amp;lt;&amp;lt;: *defaults
      neat_setting: 800&lt;/p&gt;

&lt;p&gt;test:
      &amp;lt;&amp;lt;: *defaults&lt;/p&gt;

&lt;p&gt;production:
      &amp;lt;&amp;lt;: *defaults&lt;/p&gt;

&lt;p&gt;是表示变量？用 Google 不知道怎么表示「&amp;amp;」这个符号……&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Wed, 03 Oct 2012 12:21:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/5859</link>
      <guid>https://ruby-china.org/topics/5859</guid>
    </item>
    <item>
      <title>Ruby on Rails Tutorial 的疑问：Sign out 沒有用 DELETE 方法也可以？</title>
      <description>&lt;p&gt;最近照著 &lt;a href="http://ruby.railstutorial.org/" rel="nofollow" target="_blank" title=""&gt;Ruby on Rails Tutorial&lt;/a&gt; 做练习，遇到了一些无法理解的疑问：&lt;/p&gt;

&lt;p&gt;书里实现 sign out 功能的方法如下：&lt;/p&gt;

&lt;p&gt;这是 view 的 sign out 按钮，&lt;code&gt;signout_path&lt;/code&gt; 对应的是 &lt;code&gt;sessions#destroy&lt;/code&gt;：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= link_to "Sign out", signout_path, method: "delete" %&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sessions_controller 的 destroy 方法：&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;destroy&lt;/span&gt;
  &lt;span class="n"&gt;sign_out&lt;/span&gt;
  &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;root_path&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是在 helper 实现的 &lt;code&gt;sign_out&lt;/code&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;sign_out&lt;/span&gt;
  &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current_user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
  &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:remember_token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我的疑问是，重做的时候发现自己 view 里少了：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="ss"&gt;method: &lt;/span&gt;&lt;span class="s2"&gt;"delete"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是 sign in 和 sign out 仍然运作良好，那我不晓得为何书上要加上这段代码呢？&lt;/p&gt;</description>
      <author>artone</author>
      <pubDate>Thu, 20 Sep 2012 10:02:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/5648</link>
      <guid>https://ruby-china.org/topics/5648</guid>
    </item>
  </channel>
</rss>
