<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ssqq (沙枣)</title>
    <link>https://ruby-china.org/ssqq</link>
    <description>只写能写代码的代码</description>
    <language>en-us</language>
    <item>
      <title>Ruby 格式化代码的工具</title>
      <description>&lt;p&gt;我想要一个格式化 Ruby 代码的工具，带函数接口的，不知道该用什么库&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;ruby_code_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;' if a &amp;gt; 1 then puts a end'&lt;/span&gt;
&lt;span class="n"&gt;tidy_ruby_code_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ruby_tidy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ruby_code_str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;tidy_ruby_code_str&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;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ssqq</author>
      <pubDate>Fri, 25 Sep 2015 11:33:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/27475</link>
      <guid>https://ruby-china.org/topics/27475</guid>
    </item>
    <item>
      <title>如何将一维数组转换成哈希</title>
      <description>&lt;p&gt;如何将：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&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="p"&gt;{&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;虽然可以写一个函数来转换，但总觉得有简单的办法。函数手册看了一遍，也没发现。&lt;/p&gt;

&lt;p&gt;只能将两两成对的数组进行转换：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ssqq</author>
      <pubDate>Thu, 27 Aug 2015 20:43:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/27103</link>
      <guid>https://ruby-china.org/topics/27103</guid>
    </item>
    <item>
      <title>Perl6 grammar 的解析器</title>
      <description>&lt;p&gt;我写了个 Perl 6 Grammar 的解析器，用 Ruby 完成的，解析速度比 Perl 6 快，而且直接生成数据结构。支持了 Perl6 grammar 大部分的特性：&lt;/p&gt;

&lt;p&gt;LTM 最长分支：   [ \w+ | &amp;lt;[a..z]&amp;gt;+ ]
     普通分支：               \w || \d+
     token 定义：token TOP { ^ \s+ | &amp;lt;.comment&amp;gt; |  $ }
     零宽断言：       { ^ ^^ $$ $ }
      .........&lt;/p&gt;

&lt;p&gt;对于上下文无关文法的基本元素，大部分支持。&lt;/p&gt;

&lt;p&gt;不知道这个东西对大家有没有用？&lt;/p&gt;

&lt;p&gt;下面是一个 Lisp 方言的 grammar : &lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;grammar&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Spp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;TOP&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;atom&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;ws&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; \&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;comment&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;\&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;+&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;atom&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;quote&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Str&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sym&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;chars&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;char&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="n"&gt;sym&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;chars&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;:{}()&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt;\s\#\[\]]&amp;gt;+ }
   token int { \d+ }
   token Str {
      || &lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt; [ &amp;lt;s-chars&amp;gt; || &amp;lt;char&amp;gt; ]+ &lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;
      || &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt; [ &amp;lt;d-chars&amp;gt; || &amp;lt;char&amp;gt; ]+ &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;
   }
   token char { &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt; . }
   token s-chars { &amp;lt;-[&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;]&amp;gt;+ }
   token d-chars { &amp;lt;-[&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;]&amp;gt;+ }
   token Array { \[ [ &amp;lt;.ws&amp;gt; || &amp;lt;atom&amp;gt; ]+ \] }
   token Hash { \{ [ &amp;lt;.ws&amp;gt; || &amp;lt;atom&amp;gt; &amp;lt;.ws&amp;gt; &amp;lt;atom&amp;gt; ]+ \} }
   token List { \( [ &amp;lt;.ws&amp;gt; || &amp;lt;atom&amp;gt; ]+ \) }
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ssqq</author>
      <pubDate>Thu, 20 Aug 2015 20:21:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/27007</link>
      <guid>https://ruby-china.org/topics/27007</guid>
    </item>
    <item>
      <title>如何让 gets 可以记忆以前输入的信息</title>
      <description>&lt;p&gt;Ruby 的 IRB 可以用上箭头键显示已经输入过的东西，我设计了一个 getc 的循环，不知道该怎么能拥有命令记忆的功能呢？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;repl&lt;/span&gt;
&lt;span class="no"&gt;This&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="no"&gt;REPL&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="no"&gt;Spp&lt;/span&gt; &lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="s1"&gt;'exit'&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;span class="no"&gt;Spp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'hello'&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Str"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"hello"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;Spp&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ssqq</author>
      <pubDate>Thu, 20 Aug 2015 19:13:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/27006</link>
      <guid>https://ruby-china.org/topics/27006</guid>
    </item>
    <item>
      <title>Ruby 2.2.2 使用中的问题</title>
      <description>&lt;p&gt;我想要一个 uuid 的功能，但发现 Ruby 1.93 中有 SecureRandom 的功能，Ruby 2.2.2 中的没有，从 github 上下载了 uuid 的源码，但用 gem 无法安装：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;uuid-2.3.7.gem
ERROR:  While executing gem ... &lt;span class="o"&gt;(&lt;/span&gt;Gem::RemoteFetcher::FetchError&lt;span class="o"&gt;)&lt;/span&gt;
    Errno::ECONNABORTED: An established connection was aborted by the software &lt;span class="k"&gt;in &lt;/span&gt;your host machine. - SSL_connect &lt;span class="o"&gt;(&lt;/span&gt;https://api.rubygems.org/quick/Marshal.4.8/systemu-2.6.5.gemspec.rz&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不知道是不是 Ruby 的版本有问题，还是因为网站被和谐了。&lt;/p&gt;

&lt;p&gt;看样是不是只能复制 uuid.rb 到 lib 了？&lt;/p&gt;</description>
      <author>ssqq</author>
      <pubDate>Tue, 18 Aug 2015 20:21:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/26972</link>
      <guid>https://ruby-china.org/topics/26972</guid>
    </item>
    <item>
      <title>mRuby 将走向何方</title>
      <description>&lt;p&gt;Ruby 的作者现在正火热的开发 mRuby, 从 github 上可以看出，他正全力写这个版本的 Ruby 实现。
因为人的精力都是有限的，投入在一个领域，势必另外的领域就会少些。&lt;/p&gt;

&lt;p&gt;难道作者打算让 mRuby 成为 Ruby 的主要实现吗？现在 Ruby 有了这么的实现平台，作者自己最喜欢哪个呢？&lt;/p&gt;</description>
      <author>ssqq</author>
      <pubDate>Wed, 02 Jul 2014 18:25:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/20280</link>
      <guid>https://ruby-china.org/topics/20280</guid>
    </item>
    <item>
      <title>符号 Symbol</title>
      <description>&lt;p&gt;第一次接触 Ruby, 感觉符号这个概念很特别，不过看到符号只是当一种快速的字符串字面量表示法后，也没有深入研究。&lt;/p&gt;

&lt;p&gt;学习 Lisp 的时候，符号这个概念搞了很久才弄明白一点。原来 Ruby 的符号概念来自于 Lisp。但符号在 Lisp 语言中的用途实在太多了，Ruby 只用到了字符串的替代功能。因为 Ruby 没有宏，所以，符号的其他用处在 Ruby 中也就没有用了。&lt;/p&gt;

&lt;p&gt;Ruby 为程序员的自由做了太多的变通，致使这门语言把 Ruby 程序员给宠坏了。越来越不愿意写 Java。&lt;/p&gt;</description>
      <author>ssqq</author>
      <pubDate>Mon, 26 Aug 2013 21:45:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/13644</link>
      <guid>https://ruby-china.org/topics/13644</guid>
    </item>
    <item>
      <title>gem install jekyll error</title>
      <description>&lt;h2 id="Windows 平台 cmd &gt; gem install jekyll"&gt;Windows 平台 cmd &amp;gt; gem install jekyll&lt;/h2&gt;
&lt;p&gt;ERROR:  Error installing jekyll:
            The 'fast-stemmer' native gem requires installed build tools.&lt;/p&gt;

&lt;p&gt;Please update your PATH to include build tools or download the DevKit
    from '&lt;a href="http://rubyinstaller.org/downloads" rel="nofollow" target="_blank"&gt;http://rubyinstaller.org/downloads&lt;/a&gt;' and follow the instructions
    at '&lt;a href="http://github.com/oneclick/rubyinstaller/wiki/Development-Kit" rel="nofollow" target="_blank"&gt;http://github.com/oneclick/rubyinstaller/wiki/Development-Kit&lt;/a&gt;'&lt;/p&gt;
&lt;h2 id="难道 Ruby 安装后，使用 Gem 还需要第三方组件？C 编译环境？"&gt;难道 Ruby 安装后，使用 Gem 还需要第三方组件？C 编译环境？&lt;/h2&gt;</description>
      <author>ssqq</author>
      <pubDate>Tue, 13 Aug 2013 02:56:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/13281</link>
      <guid>https://ruby-china.org/topics/13281</guid>
    </item>
    <item>
      <title>Ruby 的方法调用好像野马</title>
      <description>&lt;p&gt;方法从类中孕育出来后，出现的时候，就已经狂奔了。因为没有调用一个方法的限制。&lt;/p&gt;

&lt;p&gt;object_name.method_name &lt;/p&gt;

&lt;p&gt;在其他语言中&lt;/p&gt;

&lt;p&gt;object_name.method_name() 才是策马扬鞭&lt;/p&gt;

&lt;p&gt;Lamda 似乎是语言特性中后加上去的，感觉很别扭。&lt;/p&gt;

&lt;p&gt;代码块，似乎为了好看才加上去的。&lt;/p&gt;

&lt;p&gt;Ruby 太自由了，自由是有代价的。&lt;/p&gt;</description>
      <author>ssqq</author>
      <pubDate>Thu, 30 May 2013 12:07:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/11341</link>
      <guid>https://ruby-china.org/topics/11341</guid>
    </item>
  </channel>
</rss>
