<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>shadow (Ray)</title>
    <link>https://ruby-china.org/shadow</link>
    <description>这哥们很勤快,但是没签名</description>
    <language>en-us</language>
    <item>
      <title>git fetch -p</title>
      <description>&lt;p&gt;最近开发经常 checkout 别人的分支，有时候别人开发完成 merge 分支到 master 后 删除对应的远端分支。我本地使用&lt;code&gt;git fetch -p&lt;/code&gt;发现本地别人的分支并没有删除。切换到分支  git 提示对应的远端分支不存在了。但是查看&lt;code&gt;git fetch -p&lt;/code&gt;的命令行解释&lt;code&gt;--prune           -p  -- remove any remote tracking branches that no longer exist remotely&lt;/code&gt;他说的会删除本地的分支啊。&lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Mon, 17 Mar 2014 11:04:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/17931</link>
      <guid>https://ruby-china.org/topics/17931</guid>
    </item>
    <item>
      <title>Ruby RSA 如何实现 Java 的这段代码</title>
      <description>&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;publickey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FDSmovRFYrN3QyM0dRZXNXRVpOYzd3cUtZQ2NpYnI1aGdWZlVpcEpxeEpEK3dveTBLY28yWnk5QURpT3lkVU9EcXJLUnUzNmFqQ3ROMU5tVlJUR0JkQzRaWGk3MUpTczY5VDJoaUxGaEtSSW5yaDNtZnVoUTc2SUJxNlQvMzlqZmFXNU0wOTZBQVlaSWNrN21xczNLdlRhUllHN2FZbHo3cGpyV0drcUNzNmNRSURBUUFC"&lt;/span&gt; &lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;PublicKey&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Security&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;generatePublicKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Base64&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;decode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;publickey&lt;/span&gt;&lt;span class="o"&gt;)));&lt;/span&gt;
&lt;span class="n"&gt;verified&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Security&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signedData&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Security.generatePublicKey 如下&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;PublicKey&lt;/span&gt; &lt;span class="nf"&gt;generatePublicKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;encodedPublicKey&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;byte&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;decodedKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Base64&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;decode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encodedPublicKey&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nc"&gt;KeyFactory&lt;/span&gt; &lt;span class="n"&gt;keyFactory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;KeyFactory&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInstance&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;KEY_FACTORY_ALGORITHM&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;keyFactory&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;generatePublic&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;X509EncodedKeySpec&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;decodedKey&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;NoSuchAlgorithmException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;RuntimeException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;InvalidKeySpecException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;e&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;TAG&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Invalid key specification."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;IllegalArgumentException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Base64DecoderException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;e&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;TAG&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Base64 decoding failed."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;IllegalArgumentException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看了一些资料 keyFactory.generatePublic(new X509EncodedKeySpec(decodedKey));有些不明了了&lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Fri, 17 Aug 2012 15:12:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/5000</link>
      <guid>https://ruby-china.org/topics/5000</guid>
    </item>
    <item>
      <title>Oauth</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'rubygems'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'oauth'&lt;/span&gt;

&lt;span class="vi"&gt;@consumer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OAuth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Consumer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'a5bdf64821f6cdf47f3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ae7118784a95d9d7e4b380487940be3e2734b8d6'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;:site&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'http://sp.sb.mobage-platform.cn/social/api/oauth/v2/request_temporary_credential'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="vi"&gt;@request_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="vi"&gt;@consumer.get_request_token&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最近在弄 Oauth，对这个东西不是很了解，感觉网上说的很轻巧。郁闷的是我使用&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CURL -d "" http://sp.sb.mobage-platform.cn/social/api/oauth/v2/request_temporary_credential
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个时候服务器给我返回的是 &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;oauth_problem=version_rejected
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是我使用最上面提供的代码 在 irb 编辑的时候 返回的是&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OAuth::Unauthorized: 404 Not Found
    from /Users/Shadow/.rvm/gems/ruby-1.8.7-p358/gems/oauth-0.4.6/lib/oauth/consumer.rb:220:in `token_request'
    from /Users/Shadow/.rvm/gems/ruby-1.8.7-p358/gems/oauth-0.4.6/lib/oauth/consumer.rb:137:in `get_request_token'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对这个不是很了解  希望大家给点意见.
或者有什么好的资料发下留言。我去学习下&lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Thu, 02 Aug 2012 20:11:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/4708</link>
      <guid>https://ruby-china.org/topics/4708</guid>
    </item>
    <item>
      <title>rake db:migrate 问题</title>
      <description>&lt;h2 id="由于当时事出突然需要进行rails的项目的重新部署,原来跑项目的服务器启不起来了,在项目的重新部署是重svn上checkout最近的项目项目代码,然后执行的rake db:migrate的让数据库生成空表,当时一切都很正常,没有报错."&gt;由于当时事出突然需要进行 rails 的项目的重新部署，原来跑项目的服务器启不起来了，在项目的重新部署是重 svn 上 checkout 最近的项目项目代码，然后执行的 rake db:migrate 的让数据库生成空表，当时一切都很正常，没有报错。&lt;/h2&gt;
&lt;p&gt;今天突然发现在项目的数据库后台报错，缺少一个表.
然后检查 migrate 的记录表，关于创建当前的表的 migrate 是有数据库记录的，但是数据库没有该表，不知道大家遇到过类似的问题没？&lt;/p&gt;

&lt;p&gt;PS 测试了 如果删除该条记录，再次执行 rake db:migrate 数据库中 migrate 的记录表中成功插入 version 的版本号，但是 console 上什么都木有，同时数据库中没有应该建立的表。 &lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Tue, 10 Jul 2012 12:45:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/4225</link>
      <guid>https://ruby-china.org/topics/4225</guid>
    </item>
    <item>
      <title>Rails 对数据库操作解疑</title>
      <description>&lt;p&gt;我们的数据库经常在 count 操作的时候 出现 count 操作瓶颈。然后突发然有一个问题:
我们现在用 rails 把一些数据库层面的好东西丢掉了，比如触发器，比如存储过程，不知道 rails 对这些支持的怎么样？
请大家回答下。我很小白&lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Tue, 19 Jun 2012 09:30:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/3880</link>
      <guid>https://ruby-china.org/topics/3880</guid>
    </item>
    <item>
      <title>Ubuntu 12.04 搭建 Ruby on Rails 开发环境</title>
      <description>&lt;p&gt;原文已经发布在 cnblogs
&lt;a href="http://www.cnblogs.com/keen-allan/archive/2012/04/22/2464541.html" rel="nofollow" target="_blank"&gt;http://www.cnblogs.com/keen-allan/archive/2012/04/22/2464541.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;希望大家可以支持下  谢谢  &lt;/p&gt;</description>
      <author>shadow</author>
      <pubDate>Wed, 02 May 2012 17:59:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/3034</link>
      <guid>https://ruby-china.org/topics/3034</guid>
    </item>
  </channel>
</rss>
