<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>john1king</title>
    <link>https://ruby-china.org/john1king</link>
    <description>自宅警备</description>
    <language>en-us</language>
    <item>
      <title>你认为 Ruby 中最不会有人用的部分是？</title>
      <description>&lt;p&gt;这不是在找茬，只是从使用者的角度经常无法理解语言开发者设计一个方法/功能的原因。更重要的是限于每个人自身的水平和领域，对同一个功能的理解也会有所不同。你认为不会人用的方法，说不定确有其妙用。发掘各种奇迹淫巧总是令人欲罢不能，但知道没有人用的理由，尽量使用语言的 good parts，也不失为提升编程能力的一种好方法。&lt;/p&gt;

&lt;p&gt;每隔一段时间重新看 api 文档，都会有不错的收获。其中 &lt;code&gt;open&lt;/code&gt; 方法的几种模式&lt;code&gt;r+ a+ w+&lt;/code&gt; 一直没搞懂。 &lt;code&gt;r+&lt;/code&gt; 虽然不够实用，但还能找出明显的区别，后两个在我看来和 &lt;code&gt;a w&lt;/code&gt; 就是一个模式。很多语言都有提供这几种模式，猜想这些可能继承于 C（我只用过动态语言），大概只有在按字节和行来读写文件时才可能会有一点用处，也没看到过用这些模式的源码，遂不再研究了。  &lt;/p&gt;</description>
      <author>john1king</author>
      <pubDate>Sun, 15 Jul 2012 10:39:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/4316</link>
      <guid>https://ruby-china.org/topics/4316</guid>
    </item>
    <item>
      <title>vim 有没有 html 和 css 的格式化插件？</title>
      <description>&lt;p&gt;经常会有格式不规范的文件需要处理，比如被压缩过的 html 等。很多 IDE 都有这样的功能，下面是两个比较简单的例子&lt;/p&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* CSS before */&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* CSS after */&lt;/span&gt;
&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- HTML before --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&amp;lt;p&amp;gt;&amp;lt;span&amp;gt;&lt;/span&gt;text&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- HTML after --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&amp;lt;span&amp;gt;&lt;/span&gt;text&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找了很久都没有，语法的插件倒是有很多。在 github 上看了很多人的 vim 配置，html 和 css 插件用的人不多，haml 和 less 这类面向程序员的插件要更为流行一下。&lt;/p&gt;

&lt;p&gt;另外还有一个问题，vim 调用外部程序的时候如何做到只处理可视模式下选中区域的文本？现在对 VimL 还不熟，如果找不到好用的插件，想暂时用 ruby 来处理文本再输出到 vim 中，不知道这样做是否可行呢？&lt;/p&gt;</description>
      <author>john1king</author>
      <pubDate>Tue, 01 May 2012 13:41:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/3007</link>
      <guid>https://ruby-china.org/topics/3007</guid>
    </item>
    <item>
      <title>MacVim 中文输入法切换问题</title>
      <description>&lt;p&gt;折腾了大概一周，目前还只熟悉了基本命令。
有很多影响效率的问题尚未解决，例如输入法和多文件编辑等。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;我知道下面几个设置可以在切换到 normal,insert,search 模式时使用英文输入法&lt;/p&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;noimdisable&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;iminsert&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;imsearch&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不过现在希望能够在切换到插入模式时使用中文输入法的英文输入模式 (多数输入法使用 Shift 切换中英文模式)，应该怎么做？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;vim 中怎样编辑多个文件比较有效率？我只知道一个个打开 tab 或新窗口的方式 :( 
这方面有没有比较好的教程和文章推荐？&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;最后也请各位高手顺便介绍下经常用到的命令和技巧吧 :)&lt;/p&gt;</description>
      <author>john1king</author>
      <pubDate>Sat, 10 Mar 2012 12:20:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/1763</link>
      <guid>https://ruby-china.org/topics/1763</guid>
    </item>
    <item>
      <title>大家来贴一下常用的小技巧吧</title>
      <description>&lt;p&gt;因为是搞前端出生的，学 ruby 的时候最大感受是内建的方法非常好用，大部分简单的操作都可以一行搞定。不过也因为内建方法比较多，所以很多都是用的时候才查的，目前还不是很熟。时不时看都别人的代码，才发现自己之前写的代码里很多用内建的方法就可以很轻易的搞定，于是每次修改时都可以 delete 一大段代码...下面举几个例子，希望大家也能贴一贴，相信这类资料应该还是很有用的。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&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;"ruby"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"gem.rb"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#=&amp;gt; bin/ruby/gem.rb&lt;/span&gt;
&lt;span class="c1"&gt;# 好处是不用处理斜杠了&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print_args&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="no"&gt;Array&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="nf"&gt;each&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;i&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;print_args&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 123&lt;/span&gt;
&lt;span class="n"&gt;print_args&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 1&lt;/span&gt;
&lt;span class="c1"&gt;# 定义灵活的方法参数时经常用到&lt;/span&gt;



&lt;span class="sx"&gt;%w(a b c)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="ss"&gt;:upcase&lt;/span&gt;
&lt;span class="c1"&gt;#=&amp;gt; ["A", "B", "C"]&lt;/span&gt;
&lt;span class="c1"&gt;# 可用于代替简单的代码块&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>john1king</author>
      <pubDate>Tue, 20 Dec 2011 22:16:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/541</link>
      <guid>https://ruby-china.org/topics/541</guid>
    </item>
    <item>
      <title>国内有没有类似 StackOverflow 的网站？</title>
      <description>&lt;p&gt;虽然我的 e 文很差，但没当遇到问题的时候还是会习惯性的上 stackoverflow 搜索一下。通常都能找到满意的答案。看了最近的两个关于 Rails Is Not For Beginners 的帖子，突然想到如果国内也能有这么个网站，无疑能够解决很多新手遇到的问题。但到目前为止还没见到过国内有类似的网站，是我太孤陋寡闻了吗？如果没有，为什么不去做一个呢？  &lt;/p&gt;</description>
      <author>john1king</author>
      <pubDate>Fri, 09 Dec 2011 21:45:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/429</link>
      <guid>https://ruby-china.org/topics/429</guid>
    </item>
    <item>
      <title>文件编码转换与中文路径的那些事儿</title>
      <description>&lt;p&gt;学习 ruby 有两个月，这门语言确实不错，让我思路开拓不少。只是在目前国内用的人太少，碰到很多小问题都得上外网站找，但编码问题困扰了我很久，一直没找到什么好的解决办法。编码问题应该是很常见的任务了，所以想知道大家的解决方案。下面也给出了我写的代码，希望能够抛砖引玉。还有很多不懂的地方，请多多指教&lt;/p&gt;

&lt;p&gt;我想要程序能够自动判断文件的编码（主要是 shift-jis , gbk 和 utf-8 with bom 这几种），然后统一转换为 utf-8 无 bom 格式&lt;/p&gt;

&lt;p&gt;String 类虽然有 force_encoding 和 valid_encoding？方法，但准确性很低，所以
现在的做法是尝试转换每一种编码，直到成功为止再进行处理。就目前用过的几次来看，成功率还不算太低，所以就没用 iconv 了。代码在最下面，也可看这里 &lt;a href="https://gist.github.com/1380350" rel="nofollow" target="_blank"&gt;https://gist.github.com/1380350&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;另外还有两个小问题&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;ruby 里除了 open 方法外，大多文件操作时候都不会帮你处理好系统编码的问题。每次都是先转成 gbk 再转 转回来。不知道有没有现成的 gem 解决这个问题&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;似乎传递给 Dir.glob 的路径里包含“[”和”]”就找不到路径了，这是 bug 吗？我现在只能用？代替这两个字符&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 运行环境 win7, ruby 1.9.2 p290

def txt_to_utf(file)
    open(file) do |f|
        s = f.read
        #shift_jis 必须写在前面，因为被误判为gbk的概率很高
        x = %w(shift_jis gbk big5)

        begin
        u = s.dup.encode("utf-8",x.shift)
        rescue Encoding::UndefinedConversionError,Encoding::InvalidByteSequenceError =&amp;gt; ex

            if x.empty? 

                if s.chr.ord.to_s(16) == "efbb"
                    #处理utf-8 with bom 文件
                end

            else
                retry
            end
        else

        #处理 shift-jis, gbk, big5 文件

        end
    end
end

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>john1king</author>
      <pubDate>Sun, 20 Nov 2011 23:50:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/101</link>
      <guid>https://ruby-china.org/topics/101</guid>
    </item>
  </channel>
</rss>
