<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>wppurking (Wyatt Pan)</title>
    <link>https://ruby-china.org/wppurking</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>ember-cli 的版本也统一到 v1.13 . ember 2.0 越来越近</title>
      <description>&lt;p&gt;2015.6.12 &lt;a href="https://github.com/emberjs/ember.js" rel="nofollow" target="_blank" title=""&gt;ember.js&lt;/a&gt; 自己进入 v1.13 系列&lt;/p&gt;

&lt;p&gt;2015.6.16 &lt;a href="https://github.com/emberjs/data" rel="nofollow" target="_blank" title=""&gt;ember-data&lt;/a&gt; 从  1.0.0-beta 进入 v1.13 系列&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/emberjs/core-notes/blob/master/docs-team/2015-07/july-9.md" rel="nofollow" target="_blank" title=""&gt;2015.7.9 的 core-notes&lt;/a&gt; 正在讨论 ember.js family project 文档，&lt;/p&gt;

&lt;p&gt;2015.7.9 &lt;a href="https://github.com/ember-cli/ember-cli" rel="nofollow" target="_blank" title=""&gt;ember-cli&lt;/a&gt; 也突然从 0.27 直接蹦到 v1.13 系列了 &lt;/p&gt;

&lt;p&gt;2015.7.12 &lt;a href="http://emberjs.com/blog/2015/05/10/run-up-to-two-oh.html" rel="nofollow" target="_blank" title=""&gt;ember v2.0-beta&lt;/a&gt; 抓紧抓紧，ember.js 越来越接近 2.0 啦&lt;/p&gt;

&lt;p&gt;然后 &lt;a href="http://emberjs.com/blog/2015/06/16/ember-project-at-2-0.html" rel="nofollow" target="_blank" title=""&gt;ember v2.3&lt;/a&gt; 就从 ember.js 本身到所有相关工具都更新啦&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Fri, 10 Jul 2015 12:42:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/26422</link>
      <guid>https://ruby-china.org/topics/26422</guid>
    </item>
    <item>
      <title>Ember.JS 编写的 Ruby China 客户端</title>
      <description>&lt;h4 id="结果"&gt;结果&lt;/h4&gt;
&lt;p&gt;先上链接： &lt;a href="http://wppurking.github.io/ember-rc/" rel="nofollow" target="_blank" title=""&gt;Ember-RC&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;代码在 &lt;a href="http://github.com/wppurking/ember-rc/" rel="nofollow" target="_blank" title=""&gt;ember-rc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;部署在 Github Pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;因为在评估 Ember.js 的开发感觉以及效果，所以借用 Ruby China 的 API 编写了这个小应用。&lt;/p&gt;
&lt;h4 id="计划, 变化"&gt;计划，变化&lt;/h4&gt;
&lt;p&gt;原本计划是要完成这么多东西的:
&lt;img src="https://l.ruby-china.com/photo/2015/c1be89bc5ed13bd4a7857aa6071c303f.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;但对于没有后端的纯前端 Ember.js 我还没有找到合适的方法能够获取到 Ruby China API 用户的 &lt;code&gt;access_token&lt;/code&gt; , 并且我被前端夸域问题给烦到了，所以就提前在只完成 V0.1.0 就发上来，给大家拍砖了。&lt;/p&gt;
&lt;h4 id="结论, 收获"&gt;结论，收获&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;技术收获记录在 &lt;a href="https://github.com/wppurking/ember-cli-todos" rel="nofollow" target="_blank" title=""&gt;GitHub&lt;/a&gt; 上&lt;/li&gt;
&lt;li&gt;在体验上，现在如果只是查看页面，用户的感觉与 trubolinks 基本一致。 (其实我还想实现一下编辑等功能的操作体验，因为 Ember.js 提供的方式可以很方便实现一些原来 jQuery 需要复杂操作的代码)&lt;/li&gt;
&lt;li&gt;Ember.js 在页面跳转以及 history 的前进/后退上会需要额外做一些工作&lt;/li&gt;
&lt;li&gt;ember-cli 太棒了，带来的是与 &lt;code&gt;rails g&lt;/code&gt; 非常类似的感觉，使用合适的概念在合适的位置添加合适的代码。&lt;/li&gt;
&lt;li&gt;npm 与 bower 的配合很完善，需要啥插件直接添加进来的好了，也是与 rails 的 Bundle 非常类似的感觉。&lt;/li&gt;
&lt;li&gt;只写前端的感觉让我也蛮放松的，我只负责调用后台合适的 API 来完成我需要的页面以及操作，不用想那么多后台实现的东西。&lt;/li&gt;
&lt;li&gt;template 的代码不能够在 {{#if}} 写 logic ,强制把很多 logic 现在直接封到 controller 里面。 (还得观察等 Routeble Component 出来后如何改变)&lt;/li&gt;
&lt;li&gt;前端 js 文件的大小，在这个小应用中还是非常理想的，gzip 后的 js 文件只有：237 + 11.7 = 248.7kb , 其中库 237kb, 11.7 为前端代码以及编译后的 template.  用 CDN 还是很好解决
&lt;img src="https://l.ruby-china.com/photo/2015/5dffc6682de5254ea1efeca373862b33.jpg" title="" alt=""&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;总之： &lt;strong&gt;如果有对前端有要求的项目 Ember.js 是一个非常合适的选择&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PS: 我没用过 Angular.js 所以我无法对比.
PSS: ember.js 部署的应用，需要 match 所有的 URL 请求才能达到 (&lt;a href="http://wppurking.github.io/ember-rc/topics/25766" rel="nofollow" target="_blank"&gt;http://wppurking.github.io/ember-rc/topics/25766&lt;/a&gt;) 这样的请求也能直接访问到具体页面，但 GitHub Pages 上无法做到这点，所以只能使用一个入口 &lt;a href="http://wppurking.github.io/ember-rc/" rel="nofollow" target="_blank"&gt;http://wppurking.github.io/ember-rc/&lt;/a&gt; 进入，并且还不能鼠标右键点开。 (如果本地部署，ember s -prod 没有这个问题)
PSSS: 此版本肯定会有非常多的小问题，因为是准备在 v0.4.0 中处理然后再公布的，所以... 大家轻拍...&lt;/p&gt;
&lt;h4 id="建议"&gt;建议&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ruby-china.org/api" title=""&gt;Ruby China API&lt;/a&gt; 页面中提供的 API 文档很多，但其实有用以及可用的不是很多，并且有一部分文档参数是错误的，例如 &lt;a href="https://ruby-china.org/api#route-/topics/:id/replies.json" title=""&gt;topics/replies&lt;/a&gt; limit 为 1..150 其实只能到 100 哈 (所以现在系统里面评论超过 100 的因为我的实现方式原因还没法显示更多)&lt;/li&gt;
&lt;li&gt;Ruby China API 中的 topics api 的返回结果设计与页面的效果不一样哈~ 页面都带上来 &lt;code&gt;recent&lt;/code&gt; 方法，API 里面都没有 (直接 send(xxx) 去了), 所以看到 Ember-RC 首页是历史悠久的 excellent 的 topic&lt;/li&gt;
&lt;li&gt;Ruby China 的页面响应，无论是 API 还是 页面都没有进行 gzip 压缩，不知道是否有啥考量哈.
&lt;img src="https://l.ruby-china.com/photo/2015/445bc655d472996b2c414ff82932eb89.jpg" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2015/2cb0f8d50f868933a8cfb595a1698633.jpg" title="" alt=""&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>wppurking</author>
      <pubDate>Wed, 10 Jun 2015 13:22:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/25956</link>
      <guid>https://ruby-china.org/topics/25956</guid>
    </item>
    <item>
      <title>请问在使用 MongoDB 的同学有了解 TokuMX 项目的吗?</title>
      <description>&lt;p&gt;&lt;a href="http://www.tokutek.com/products/tokumx-for-mongodb/" rel="nofollow" target="_blank" title=""&gt;TokuMX – High-Performance MongoDB Distribution&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;从其 &lt;a href="http://www.tokutek.com/tokuview/" rel="nofollow" target="_blank" title=""&gt;官方 Blog&lt;/a&gt; 看到各种测试，性能都优于 Mongodb 啊。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=5824748" rel="nofollow" target="_blank" title=""&gt;Sysbench Benchmark for MongoDB&lt;/a&gt;
&lt;a href="http://www.sudops.com/mongodb-tokumx-sharding-balancer.html" rel="nofollow" target="_blank" title=""&gt;MongoDB 与 TokuMX 在 Sharding Balancer 的性能比较&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;而且还有&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ACID transactions with MVCC&lt;/li&gt;
&lt;li&gt;Compression for MongoDB&lt;/li&gt;
&lt;li&gt;Replaces B-tree indexing with Fractal Tree® indexing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;看的我挺感兴趣的了.....&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Tue, 01 Jul 2014 00:34:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/20247</link>
      <guid>https://ruby-china.org/topics/20247</guid>
    </item>
    <item>
      <title>请问运行 logrotate 报告: file too large, probably not a config file 如何处理?</title>
      <description>&lt;p&gt;配置好了 logrotate 日志文件&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/var/www/rails_app/log/&lt;span class="k"&gt;*&lt;/span&gt;.log &lt;span class="o"&gt;{&lt;/span&gt;
  weekly
  rotate 4
  size 100M
  compress
  missingok
  notifempty
  copytruncate
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当我手动执行一次  &lt;code&gt;logrotate -vf /var/www/rails_app/log/*.log&lt;/code&gt; 的时候，直接报告&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;error: file /var/www/rails_app/log/production.log too large, probably not a config file.
removing last 0 log configs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而我的 production.log 文件大小为&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 文件路径为 /var/www/rails_app/log&lt;/span&gt;
total 136M
drwxr-xr-x  2 root root 4.0K May  8 18:46 ./
drwxr-xr-x 13 root root 4.0K Mar 10 17:31 ../
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 root root    0 Dec  5 10:37 .keep
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 root root  30M May  8 18:28 production.log
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 root root 107M May  8 18:06 sidekiq.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问是我缺少什么配置吗？还是版本问题？&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root@xxx:/var/www/rails_app/log# logrotate &lt;span class="nt"&gt;-v&lt;/span&gt;
logrotate 3.7.8 - Copyright &lt;span class="o"&gt;(&lt;/span&gt;C&lt;span class="o"&gt;)&lt;/span&gt; 1995-2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License
...
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>wppurking</author>
      <pubDate>Thu, 08 May 2014 19:05:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/19106</link>
      <guid>https://ruby-china.org/topics/19106</guid>
    </item>
    <item>
      <title>Mountain Lion 因 Chrome 休眠很慢</title>
      <description>&lt;p&gt;大家有碰到在 Mountain Lion (Lion 应该也有) 下开着 Chrome 休眠很慢的问题吗？ &lt;/p&gt;

&lt;p&gt;由于我是开着盖子休眠，所以被这个问题影响到了 - -||  花了点时间把这个问题搞明白了，原来这是 &lt;a href="https://code.google.com/p/chromium/issues/detail?id=132336#c61" rel="nofollow" target="_blank" title=""&gt;Chrome 的 Bug&lt;/a&gt;  所以也让大家也了解下，这个问题等 Chrome 更新到 31 啥的应该就没问题了。&lt;/p&gt;

&lt;p&gt;详细的我写了篇&lt;a href="http://wppurking.github.io/blog/2013/11/03/mac-os-hibernatemode-and-chrome-notification-timeout/" rel="nofollow" target="_blank" title=""&gt;文章&lt;/a&gt;&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Sun, 03 Nov 2013 14:18:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/15264</link>
      <guid>https://ruby-china.org/topics/15264</guid>
    </item>
    <item>
      <title>我这 railscasts.com 打不开了</title>
      <description>&lt;p&gt;我这里 &lt;a href="http://railscasts.com/" rel="nofollow" target="_blank"&gt;http://railscasts.com/&lt;/a&gt; 打不开了。&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/5aefe865ff9e2ae15d6490f1eb3b41d0.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;大家能打开吗？&lt;/p&gt;

&lt;p&gt;PS: 地址栏是 &lt;a href="http://railscasts.com/" rel="nofollow" target="_blank"&gt;http://railscasts.com/&lt;/a&gt; 和提示访问失败连接不一样的原因是我又重新输了一遍地址，可一直在转圈圈。&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Sat, 19 Oct 2013 21:28:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/14865</link>
      <guid>https://ruby-china.org/topics/14865</guid>
    </item>
    <item>
      <title>Probably the saddest graph ever shown in a CS conference</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/6e369204455d3a36d5c8d0e1070b87b5.jpg" title="" alt=""&gt;
这个趋势太明显了 &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt;
&lt;a href="https://twitter.com/kapravel/status/375431377333653504/photo/1" rel="nofollow" target="_blank"&gt;https://twitter.com/kapravel/status/375431377333653504/photo/1&lt;/a&gt;&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Sat, 07 Sep 2013 14:17:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/13942</link>
      <guid>https://ruby-china.org/topics/13942</guid>
    </item>
    <item>
      <title>请问大家如何处理 Sidekiq 的超大 log 文件的?</title>
      <description>&lt;p&gt;因为有几个 Client 使用的是 Sidekiq 做抓取的，任务量比较大。短时间内产生的 log 也非常多，例如 3 天 Sidekiq 的 log 文件已经到 7G 了。我查找了 Sidekiq 的 &lt;a href="https://github.com/mperham/sidekiq/wiki/Logging" rel="nofollow" target="_blank" title=""&gt;logging&lt;/a&gt; 但没有相关日志切割的内容。&lt;/p&gt;

&lt;p&gt;请问大家是如何处理 Sidekiq 的日志的？是否有自动切割/删除日志的功能？&lt;/p&gt;

&lt;p&gt;顺带另外一个问题，当 Sidekiq 还在不停的向 Linux 的 sidekiq.log 中写数据的时候，我用 vim 去编辑或者删除这个 sidekiq.log 会发生什么情况？Sidekiq 还会正常的向 sidekiq.log 写数据吗？&lt;/p&gt;

&lt;p&gt;(我测试的情况是，我删除 sidekiq.log 硬盘空间不会释放，同时也不见新 sidekiq.log 被创建出来)&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Tue, 13 Aug 2013 11:49:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/13290</link>
      <guid>https://ruby-china.org/topics/13290</guid>
    </item>
    <item>
      <title>为什么很多 ruby gem 都使用 autoload 而非 require?</title>
      <description>&lt;p&gt;Matz 说 &lt;a href="https://www.ruby-forum.com/topic/3036681" rel="nofollow" target="_blank" title=""&gt;autoload will be dead&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;但是我看到现在很多开源项目都还在使用 autoload , 例如：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rack/rack/blob/master/lib/rack.rb" rel="nofollow" target="_blank" title=""&gt;rack.rb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rails/rails/blob/master/activerecord/lib/active_record.rb" rel="nofollow" target="_blank" title=""&gt;activerecord.rb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;等等....&lt;/p&gt;

&lt;p&gt;Matz 说 autoload 不推荐使用了，大家还在这么欢乐的使用 autoload 这是为什么呢？&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Fri, 05 Jul 2013 18:00:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/12281</link>
      <guid>https://ruby-china.org/topics/12281</guid>
    </item>
    <item>
      <title>iptables 过滤了端口, 为什么 netstat 还是可以查看到过滤的端口链接?</title>
      <description>&lt;p&gt;我在 Host DB 上设置的 iptables&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Chain INPUT &lt;span class="o"&gt;(&lt;/span&gt;policy ACCEPT&lt;span class="o"&gt;)&lt;/span&gt;
target     prot opt &lt;span class="nb"&gt;source               &lt;/span&gt;destination
ACCEPT     udp  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             udp dpts:60000:61000
ACCEPT     tcp  &lt;span class="nt"&gt;--&lt;/span&gt;  li413-134.members.linode.com  anywhere             tcp dpt:mysql
ACCEPT     tcp  &lt;span class="nt"&gt;--&lt;/span&gt;  server1.electronixcraft.com  anywhere             tcp dpt:mysql
REJECT     all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             127.0.0.0/8          reject-with icmp-port-unreachable
ACCEPT     all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     icmp &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere
LOG        all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix &lt;span class="s2"&gt;"iptables denied: "&lt;/span&gt;
DROP       all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere

Chain FORWARD &lt;span class="o"&gt;(&lt;/span&gt;policy ACCEPT&lt;span class="o"&gt;)&lt;/span&gt;
target     prot opt &lt;span class="nb"&gt;source               &lt;/span&gt;destination
DROP       all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere

Chain OUTPUT &lt;span class="o"&gt;(&lt;/span&gt;policy ACCEPT&lt;span class="o"&gt;)&lt;/span&gt;
target     prot opt &lt;span class="nb"&gt;source               &lt;/span&gt;destination
ACCEPT     all  &lt;span class="nt"&gt;--&lt;/span&gt;  anywhere             anywhere
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按照上面的信息来说，除开打开 http/https/mysql 就应该没有其他端口，服务器监听的端口为：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root@db:/var/lib/mysql# netstat &lt;span class="nt"&gt;-l&lt;/span&gt;
Active Internet connections &lt;span class="o"&gt;(&lt;/span&gt;only servers&lt;span class="o"&gt;)&lt;/span&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 &lt;span class="k"&gt;*&lt;/span&gt;:mysql                 &lt;span class="k"&gt;*&lt;/span&gt;:&lt;span class="k"&gt;*&lt;/span&gt;                     LISTEN
tcp        0      0 &lt;span class="k"&gt;*&lt;/span&gt;:ssh                   &lt;span class="k"&gt;*&lt;/span&gt;:&lt;span class="k"&gt;*&lt;/span&gt;                     LISTEN
tcp6       0      0 &lt;span class="o"&gt;[&lt;/span&gt;::]:ssh                &lt;span class="o"&gt;[&lt;/span&gt;::]:&lt;span class="k"&gt;*&lt;/span&gt;                  LISTEN
Active UNIX domain sockets &lt;span class="o"&gt;(&lt;/span&gt;only servers&lt;span class="o"&gt;)&lt;/span&gt;
....
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可是通过 netstat 查看建立链接的 tcp 的时候看到&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root@db# netstat &lt;span class="nt"&gt;-t&lt;/span&gt;
Active Internet connections &lt;span class="o"&gt;(&lt;/span&gt;w/o servers&lt;span class="o"&gt;)&lt;/span&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 db:mysql         server1.electroni:34875 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:35233 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34879 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34890 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34891 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34885 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34869 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34873 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:35234 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34886 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34889 ESTABLISHED
tcp        0      0 db:mysql         server1.electroni:34881 ESTABLISHED
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我能够猜到这些 tcp 链接是应用服务器链接到当前服务器 3306 端口访问 MySQL 建立起来的，可这个不是与 iptables 中的设置想违背了吗？在 34xxx 端口上的 tcp 应该会被 DROP 掉，怎么又链接成功了呢？&lt;/p&gt;

&lt;p&gt;还有求推荐这方面有什么书可以参考 - -|| 这问题把我搞糊涂了。&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Fri, 28 Jun 2013 14:48:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/12068</link>
      <guid>https://ruby-china.org/topics/12068</guid>
    </item>
    <item>
      <title>请教 @luikore String.unpack 中的 "S&gt;" 是什么意思?</title>
      <description>&lt;p&gt;&lt;a href="/luikore" class="user-mention" title="@luikore"&gt;&lt;i&gt;@&lt;/i&gt;luikore&lt;/a&gt; 因为在学习 EventMachine 所以在看你这个项目 &lt;a href="https://github.com/luikore/stochastic-socks" rel="nofollow" target="_blank" title=""&gt;"stochastic-socks"&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;现在还在看 &lt;a href="https://github.com/luikore/stochastic-socks/blob/master/local.rb" rel="nofollow" target="_blank" title=""&gt;local.rb&lt;/a&gt; - -|| 请问一下，根据 rfc1928 解析出来的最后两位 BND.PORT 用 String.unpack("S&amp;gt;") 解析出具体端口值，这个带 &lt;code&gt;&amp;gt;&lt;/code&gt; 的 &lt;code&gt;S&amp;gt;&lt;/code&gt; 是什么意思呢？&lt;/p&gt;

&lt;p&gt;还有就是请教一下  &lt;code&gt;S  | Integer | 16-bit unsigned, native endian (unit16_t)&lt;/code&gt; 这里的 N-bit unsigned/signed 是什么意思啊？&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Mon, 24 Jun 2013 02:37:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/11935</link>
      <guid>https://ruby-china.org/topics/11935</guid>
    </item>
    <item>
      <title>在 JD 找书的时, 偶然发现这么一位 "奇才"</title>
      <description>&lt;p&gt;我 JD 上寻找有关 MySQL 性能方面的书籍，&lt;/p&gt;

&lt;p&gt;在看 &lt;a href="http://book.jd.com/11220393.html" rel="nofollow" target="_blank" title=""&gt;高性能 MySQL&lt;/a&gt; 的评论的时候看到这评论写得头头是到，待我细看的时候，就发现这位 "奇才" 了&lt;/p&gt;

&lt;p&gt;&lt;a href="http://club.jd.com/userreview/33151213-1-1.html" rel="nofollow" target="_blank"&gt;http://club.jd.com/userreview/33151213-1-1.html&lt;/a&gt;&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Tue, 28 May 2013 21:23:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/11303</link>
      <guid>https://ruby-china.org/topics/11303</guid>
    </item>
    <item>
      <title>Knewone 和 writings.io 中  HTML 的压缩是如何实现的?</title>
      <description>&lt;p&gt;一般情况下看到的响应 HTML 内容会是 (例如 Ruby-China)
&lt;img src="//l.ruby-china.com/photo/d8e68c873e6fda4ad3ac7db1a7c1750e.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;而我在 knewone 和 writings.io 的请求中更多是看到
&lt;img src="//l.ruby-china.com/photo/6b77033bffa563798517ce5bbcc0f243.png" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/d2ea818d326b92a226c0cc786f6817b9.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;请问下面这种是使用了某些 gem 还是怎么呢？&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Fri, 12 Apr 2013 10:40:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/10124</link>
      <guid>https://ruby-china.org/topics/10124</guid>
    </item>
    <item>
      <title>聊聊 Rails preload 的两个 Gem [spring, zeus]</title>
      <description>&lt;p&gt;昨天从 Ruby Weekly 邮件中看到一个叫 spring 的 gem, 然后就点开看了看，然后发现这个 gem 在进行 Rails 开发的时候，很好的减少了启动时间。然后又看到了 zeus 这个 gem, 他部分用 golang 编写。两个 gem 的使用效果基本上一样。想问问大家对这类 gem 的感觉是咋样的？&lt;/p&gt;

&lt;p&gt;我先说说我的：&lt;/p&gt;
&lt;h2 id="spring"&gt;&lt;a href="https://github.com/jonleighton/spring" rel="nofollow" target="_blank" title=""&gt;spring&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;使用起来很方便，当第一次执行的时候，会自动在后台开启一个 server 用来 fork, 所以基本上和正常使用 rails command 类似就好了。&lt;/li&gt;
&lt;li&gt;与 Terminal 的 Session 关联，关闭当前 terminal session 那么这个 session 下的 spring server 都会自动关闭。同理，如果在多个 terminal session 中使用 spring rake 则会有多个 spring server...&lt;/li&gt;
&lt;li&gt;可以使用 spring binstub 将常用命令 (generator, console, rake 等等) 生成一个使用 spring 前缀的命令，用来简化每次的 spring rake , 命令放到了那个 &lt;a href="https://github.com/rails/rails/commit/61b91c4c55bcbd5a2ec85d6e1c67755150653dff" rel="nofollow" target="_blank" title=""&gt;./bin/&lt;/a&gt; &lt;a href="https://github.com/sikachu/rails/commit/c281489e701a2026d7bf22a3bb9ad8c40d238256" rel="nofollow" target="_blank" title=""&gt;目录下&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;暂时还不支持 rails destroy 命令&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="zeus"&gt;&lt;a href="https://github.com/burke/zeus" rel="nofollow" target="_blank" title=""&gt;zeus&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;需要 zeus start 启动一个 zeus server, 为常使用的命令各准备一个 (?), 内存占用稍多&lt;/li&gt;
&lt;li&gt;使用命令使用 zeus [comman] , 不过都有简称例如 zeus generate(alias: g), zeus server(alias: s), 每条命令都得输 zeus , 不过在 bash_profile 里设置个 alias 就好了 (例如：z s)&lt;/li&gt;
&lt;li&gt;所有 terminal 共享这一份 zeus server, 所以 terminal 多的时候不会有 spring 那样开多个 server&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>wppurking</author>
      <pubDate>Fri, 22 Feb 2013 19:23:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/8857</link>
      <guid>https://ruby-china.org/topics/8857</guid>
    </item>
    <item>
      <title>有人使用 Facets 这个 Gem 吗?</title>
      <description>&lt;p&gt;在看 Ruby 元编程的时候，看到里面介绍了一个名叫 &lt;a href="http://rubyworks.github.com/facets/" rel="nofollow" target="_blank" title=""&gt;Facets&lt;/a&gt; (&lt;a href="https://github.com/rubyworks/facets" rel="nofollow" target="_blank" title=""&gt;github&lt;/a&gt;) 的 Gem, 里面的解释为："Facets 是大量有效 Ruby 代码片段的大杂烩 (由 Thomas Sawyer 收集，绝大多数也是由他亲自编写的)...." 里面为 Ruby Core 添加了很多方法。这个 Gem 现在还有人使用吗？&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Thu, 21 Feb 2013 22:14:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/8839</link>
      <guid>https://ruby-china.org/topics/8839</guid>
    </item>
    <item>
      <title>Google Data Center 与 Fackbook Data Center 的视频</title>
      <description>&lt;p&gt;偶然在 Youtube 上发现的 &lt;a href="https://www.youtube.com/watch?feature=player_embedded&amp;amp;v=wNyFhZTSnPg" rel="nofollow" target="_blank" title=""&gt;介绍 Google Data Center 的视频&lt;/a&gt;, 然后我又试着找到了 &lt;a href="https://www.youtube.com/watch?feature=player_embedded&amp;amp;v=Okt3Z4E3TMg#!" rel="nofollow" target="_blank" title=""&gt;介绍 Fackbook 的 Data Center 视频&lt;/a&gt;.  看完之后.......&lt;/p&gt;

&lt;p&gt;需要...大家都懂的.
Google Data Center
&lt;img src="//l.ruby-china.com/photo/a638b630cae3e352f7b6b52cec342be3.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Fackbook Data Center
&lt;img src="//l.ruby-china.com/photo/209bdb19cc0d8fd7c40947b969790da8.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Thu, 10 Jan 2013 14:37:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/7936</link>
      <guid>https://ruby-china.org/topics/7936</guid>
    </item>
    <item>
      <title>成员变量添加类级别的 attr_accessor 的一个疑惑</title>
      <description>&lt;p&gt;在阅读 &lt;a href="http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html" rel="nofollow" target="_blank" title=""&gt;REMOVING CONFIG.THREADSAFE!&lt;/a&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;UsersController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="vi"&gt;@counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&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="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:counter&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="nb"&gt;trap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:INFO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="vg"&gt;$stderr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Count: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;UsersController&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;counter&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&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="nf"&gt;counter&lt;/span&gt; &lt;span class="c1"&gt;# read&lt;/span&gt;
    &lt;span class="nb"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;                 &lt;span class="c1"&gt;# update&lt;/span&gt;
    &lt;span class="nb"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&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="nf"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="c1"&gt;# write&lt;/span&gt;

    &lt;span class="vi"&gt;@users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;

    &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="c1"&gt;# index.html.erb&lt;/span&gt;
      &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="vi"&gt;@users&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;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我对上面的代码有一些不理解。我们知道 Rails 为每一个 Action 都会&lt;a href="http://guides.rubyonrails.org/action_controller_overview.html#methods-and-actions" rel="nofollow" target="_blank" title=""&gt;创建一个新的 Controller 实例&lt;/a&gt;, 那么这段代码其实想表达的应该上为 UserController 添加一个 @@counter = 0 然后再并发请求发现 @@counter 的值会与请求数量不一样。&lt;/p&gt;
&lt;h2 id="问题:"&gt;问题：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;首先我们知道  class &amp;lt;&amp;lt; self 中是定义的类方法，如果定义的是类方法为什么还会去访问一个 &lt;a href="/counter" class="user-mention" title="@counter"&gt;&lt;i&gt;@&lt;/i&gt;counter&lt;/a&gt; ?&lt;/li&gt;
&lt;li&gt;如果成功定义了类方法，那其操作的应该是一个 @@counter, 那 &lt;a href="/counter" class="user-mention" title="@counter"&gt;&lt;i&gt;@&lt;/i&gt;counter&lt;/a&gt; =0 这个初始化的作用是干嘛？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>wppurking</author>
      <pubDate>Sun, 06 Jan 2013 18:10:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/7814</link>
      <guid>https://ruby-china.org/topics/7814</guid>
    </item>
    <item>
      <title>在 rspc 的 controller 测试中 session 每次请求会清空吗?</title>
      <description>&lt;p&gt;spec/controllers 中的测试代码 &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# -*- encoding : utf-8 -*-&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'spec_helper'&lt;/span&gt;

&lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="no"&gt;UsersController&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

  &lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="s2"&gt;"sign in"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;let&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="no"&gt;FactoryGirl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;let&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:admin_user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="no"&gt;FactoryGirl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:admin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="s2"&gt;"not admin"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="c1"&gt;# 放在这里登陆 session 也无效&lt;/span&gt;
      &lt;span class="c1"&gt;#before { sign_in(user) }&lt;/span&gt;

      &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s2"&gt;"update another user should redirect to root path"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;sign_in&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# p cookies.to_json&lt;/span&gt;
        &lt;span class="c1"&gt;# p sessions&lt;/span&gt;
        &lt;span class="n"&gt;put&lt;/span&gt; &lt;span class="ss"&gt;:update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;id: &lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;user: &lt;/span&gt;&lt;span class="no"&gt;FactoryGirl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attributes_for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:admin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;root_url&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="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里可以保证的是，sign_in 方法执行成功了，并且 controller 也做出了响应，进行了登陆的 session 和 cookie 但接下来的 put 测试，cookies, session 都为空，是因为 put 请求又将 session/cookie 信息给 reset 了？&lt;/p&gt;

&lt;p&gt;在 controller 的测试中，如何注册 session (登陆) 呢？&lt;/p&gt;

&lt;p&gt;由于是 rails 的新手，很多 rails magic 不懂  - -||&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wppurking/train_app/blob/master/spec/support/helpers.rb" rel="nofollow" target="_blank"&gt;https://github.com/wppurking/train_app/blob/master/spec/support/helpers.rb&lt;/a&gt;
&lt;a href="https://github.com/wppurking/train_app/blob/master/spec/controllers/users_controller_spec.rb" rel="nofollow" target="_blank"&gt;https://github.com/wppurking/train_app/blob/master/spec/controllers/users_controller_spec.rb&lt;/a&gt;&lt;/p&gt;</description>
      <author>wppurking</author>
      <pubDate>Sun, 14 Oct 2012 23:34:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/6060</link>
      <guid>https://ruby-china.org/topics/6060</guid>
    </item>
  </channel>
</rss>
