<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>magic (Magic)</title>
    <link>https://ruby-china.org/magic</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>执行系统命令且日志重定向</title>
      <description>&lt;p&gt;这两天遇到一个问题，在 Rails 里需要调用系统命令用 system 函数，如下：&lt;/p&gt;

&lt;p&gt;system("#{command} &amp;gt; #{log_path}")&lt;/p&gt;

&lt;p&gt;但是结果是命令是执行了，但是执行日志没有输出到 log 文件里；请问是为什么呢？&lt;/p&gt;</description>
      <author>magic</author>
      <pubDate>Mon, 13 Jan 2014 16:52:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/16764</link>
      <guid>https://ruby-china.org/topics/16764</guid>
    </item>
    <item>
      <title>有关 ruby 进程的内存性能优化</title>
      <description>&lt;p&gt;大家好，最近部署了服务在 Linode 上（1G RAM，8 CPU (1x priority)），前端是 Android，后端是 Rails+Grape 做 API 服务器，基本服务器架构是 Nginx+Passenger+ROR+Memcache+MySQL。&lt;/p&gt;

&lt;p&gt;启了 4 个 Nginx，6 个 ruby 进程；从 newrelic 监控的数据来看，CPU 占用率不到 1%, IO 也不到 1%，内存占用 70% 左右&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="no"&gt;Processes&lt;/span&gt;
&lt;span class="no"&gt;User&lt;/span&gt;    &lt;span class="no"&gt;Count&lt;/span&gt;   &lt;span class="no"&gt;CPU&lt;/span&gt; &lt;span class="no"&gt;Memory&lt;/span&gt;
&lt;span class="n"&gt;ruby&lt;/span&gt;    &lt;span class="n"&gt;magic&lt;/span&gt;   &lt;span class="mi"&gt;6&lt;/span&gt;   &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;     &lt;span class="mi"&gt;572&lt;/span&gt; &lt;span class="no"&gt;MB&lt;/span&gt;
&lt;span class="n"&gt;mysqld&lt;/span&gt;  &lt;span class="n"&gt;mysql&lt;/span&gt;   &lt;span class="mi"&gt;1&lt;/span&gt;   &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;     &lt;span class="mf"&gt;36.7&lt;/span&gt; &lt;span class="no"&gt;MB&lt;/span&gt;
&lt;span class="n"&gt;nginx&lt;/span&gt;   &lt;span class="n"&gt;nobody&lt;/span&gt;  &lt;span class="mi"&gt;4&lt;/span&gt;   &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;     &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="no"&gt;MB&lt;/span&gt;
&lt;span class="n"&gt;memcached&lt;/span&gt;   &lt;span class="n"&gt;magic&lt;/span&gt;   &lt;span class="mi"&gt;1&lt;/span&gt;   &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;     &lt;span class="mf"&gt;10.2&lt;/span&gt; &lt;span class="no"&gt;MB&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;从上面的数据来看，主要是 ruby 进程占用了大部分内存；目前应用特点是 PV 比较高，业务比较简单；由于之前没太多处理高并发的部署经验，如何在有限的内存的情况下处理更多的并发量？大家有什么好的建议和意见？急求 ing～ &lt;a href="/lgn21st" class="user-mention" title="@lgn21st"&gt;&lt;i&gt;@&lt;/i&gt;lgn21st&lt;/a&gt; &lt;a href="/Rei" class="user-mention" title="@Rei"&gt;&lt;i&gt;@&lt;/i&gt;Rei&lt;/a&gt; &lt;a href="/hooopo" class="user-mention" title="@hooopo"&gt;&lt;i&gt;@&lt;/i&gt;hooopo&lt;/a&gt; &lt;a href="/poshboytl" class="user-mention" title="@poshboytl"&gt;&lt;i&gt;@&lt;/i&gt;poshboytl&lt;/a&gt; &lt;a href="/fredwu" class="user-mention" title="@fredwu"&gt;&lt;i&gt;@&lt;/i&gt;fredwu&lt;/a&gt; &lt;a href="/yedingding" class="user-mention" title="@yedingding"&gt;&lt;i&gt;@&lt;/i&gt;yedingding&lt;/a&gt; &lt;a href="/robbin" class="user-mention" title="@robbin"&gt;&lt;i&gt;@&lt;/i&gt;robbin&lt;/a&gt; &lt;/p&gt;</description>
      <author>magic</author>
      <pubDate>Thu, 06 Jun 2013 12:33:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/11537</link>
      <guid>https://ruby-china.org/topics/11537</guid>
    </item>
    <item>
      <title>Grape 是否支持方法级别 定义返回数据的格式</title>
      <description>&lt;p&gt;最近在用 Grape 写个简单的微信机器人，测试的时候碰到一个问题：正常的微信接口查询是没问题（下面代码的 post 接口），但是微信校验接口总是不通过（下面代码的 get 接口）；分析原因是微信接口查询默认返回的是 xml 格式，API 定义的默认返回格式也是 xml（format :xml）所以没问题，但是微信校验接口返回的是字符串，Grape 执行返回数据的 to_xml 方法时报错：cannot convert String to xml。&lt;/p&gt;

&lt;p&gt;大家遇到 Grape API 返回不同格式时如何处理？我是想要是 Grape 只是方法级别定义返回数据格式就好了，但是查了 Grape 官方文档也看到类似的说明，Google 也没找到。&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;Wechat&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;API&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Grape&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;API&lt;/span&gt;

    &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s1"&gt;'v1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:using&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:vendor&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'weixin'&lt;/span&gt;
    &lt;span class="nb"&gt;format&lt;/span&gt; &lt;span class="ss"&gt;:xml&lt;/span&gt;
    &lt;span class="n"&gt;content_type&lt;/span&gt; &lt;span class="ss"&gt;:xml&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"text/xml"&lt;/span&gt;

    &lt;span class="n"&gt;helpers&lt;/span&gt; &lt;span class="no"&gt;WechatHelper&lt;/span&gt;

    &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="ss"&gt;:weixin&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

      &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'check weixin sign'&lt;/span&gt;
      &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="c1"&gt;# 返回字符串&lt;/span&gt;
        &lt;span class="n"&gt;check_sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&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;desc&lt;/span&gt; &lt;span class="s1"&gt;'weixin response'&lt;/span&gt;
      &lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;request_body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;
        &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"200"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 返回xml对象&lt;/span&gt;
        &lt;span class="n"&gt;get_weixin_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request_body&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;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>magic</author>
      <pubDate>Sat, 01 Jun 2013 18:54:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/11407</link>
      <guid>https://ruby-china.org/topics/11407</guid>
    </item>
    <item>
      <title>backbone-rails VS backbone-on-rails 大家觉得哪个更好用？</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/codebrew/backbone-rails" rel="nofollow" target="_blank" title=""&gt;backbone-rails&lt;/a&gt; VS &lt;a href="https://github.com/meleyal/backbone-on-rails" rel="nofollow" target="_blank" title=""&gt;backbone-on-rails&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;backbone-rails：从 star 数量来看更多（1K 多），生成的文件划分的更细。最近一次更新是 2 个月前，最新 backbone 版本是 0.9.10。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;backbone-on-rails：从 star 数量来看少一些（6 百多），生成的文件没有 backbone 文件夹。最近一次更新是 11 天前，最新 backbone 版本是 1.0.0，跟进比较及时。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;backbone-on-rails 作者 meleyal 有比较了下这两个的不同（&lt;a href="https://github.com/meleyal/backbone-on-rails/wiki/How-is-this-gem-different-to-backbone-rails%3F" rel="nofollow" target="_blank" title=""&gt;见这&lt;/a&gt;），从 Naming 和 Generator 比较了下。&lt;/p&gt;

&lt;p&gt;PS：刚开始用 backbone，没太多经验，不知道选哪个好？各位看官给小弟一点指导意见吧&lt;/p&gt;</description>
      <author>magic</author>
      <pubDate>Mon, 01 Apr 2013 17:58:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/9902</link>
      <guid>https://ruby-china.org/topics/9902</guid>
    </item>
    <item>
      <title>大家说说：Bootstrap 有没有成为 Compass plugin 的可能？</title>
      <description>&lt;p&gt;本人前端小白，最近开始学习一些 web 前端开发的知识，了解了 bootstrap,sass,compass 等，觉得如果 bootstrap 用 compass 写一遍一定会更易维护，更受欢迎；大家觉得呢？&lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt;&lt;/p&gt;</description>
      <author>magic</author>
      <pubDate>Mon, 18 Feb 2013 14:42:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/8740</link>
      <guid>https://ruby-china.org/topics/8740</guid>
    </item>
    <item>
      <title>找回密码功能的 bug</title>
      <description>&lt;p&gt;第一次注册用户后，忘记密码；到“找回密码”界面，提示输入用户名，但是我输入后，点击“找回密码”，提示 Email 不能为空字符；输入 Email 也报错。看了代码，貌似是 login 字段配置为 name 或 nickname，登录 ok；但是找回密码的功能默认是 Email，没有设置为 login 字段。请修正。  &lt;/p&gt;</description>
      <author>magic</author>
      <pubDate>Tue, 15 Nov 2011 18:28:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/78</link>
      <guid>https://ruby-china.org/topics/78</guid>
    </item>
  </channel>
</rss>
