<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>killernova (Killernova)</title>
    <link>https://ruby-china.org/killernova</link>
    <description>赶尽杀绝，这，就是最大的敬意了...</description>
    <language>en-us</language>
    <item>
      <title>求助一个算法问题</title>
      <description>&lt;p&gt;&lt;em&gt;本来想问的是二维的问题，但是想了想，还是先从一维开始吧&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;假设有一条直线 L，起点的 x 轴坐标为 0，终点的 x 轴坐标为 10.
在该直线上有一组点，现在我们假设有 4 个点，每个点都能在直线 L 的某个范围内自由移动，定义如下：
点 a 可以在 (0..4) 之间自由移动，
点 b 可以在 (3..5) 之间自由移动，
点 c 可以在 (0..8) 之间自由移动，
点 d 可以在 (7..9) 之间自由移动。&lt;/p&gt;

&lt;p&gt;求一种算法，可以找到这些点的坐标，&lt;strong&gt;使得这些点彼此之间尽量远离&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;这里需要考虑 &lt;strong&gt;彼此之间尽量远离&lt;/strong&gt; 的含义，从直观的角度考虑，应该就是这些点尽量均匀得分布在直线上，但如何从数学的角度描述，我还没想清楚，毕竟我是小学文化水平的人。&lt;/p&gt;

&lt;p&gt;对我来说至少有 2 个难点：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;没有一个合适的初始的点。&lt;/li&gt;
&lt;li&gt;点的移动没有最小单位的限制，比如可以移动 1，也可以是 0.1，0.01，依此类推。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;补充：
如果移动距离完全不做限制，我觉得不太靠谱。那么假设单位移动距离为 0.01，那么如果没有一个良好的算法，直线又比较长，计算量怕是比较巨大。。。&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Thu, 16 Jun 2022 19:15:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/42462</link>
      <guid>https://ruby-china.org/topics/42462</guid>
    </item>
    <item>
      <title>SSL 报错，查了好多资料，仍无法解决</title>
      <description>&lt;h4 id="最开始是在用RestClient的时候，链接https的api报错："&gt;最开始是在用 RestClient 的时候，链接 https 的 api 报错：&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;RestClient::SSLCertificateNotVerified (SSL_connect returned=1 errno=0 state=error: certificate verify failed):&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="然后尝试 curl 'https://www.baidu.com' -I, 报错："&gt;然后尝试 &lt;code&gt;curl 'https://www.baidu.com' -I&lt;/code&gt;, 报错：&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;curl: (60) SSL: invalid CA certificate&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="google第一个错误，发现大部分都是state=SSLv3这种错误，与我一样的并不多，结合curl的错误，大概尝试了以下方法："&gt;google 第一个错误，发现大部分都是&lt;code&gt;state=SSLv3&lt;/code&gt;这种错误，与我一样的并不多，结合 curl 的错误，大概尝试了以下方法：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;下载 ca 证书并设置路径
&lt;code&gt;
export SSL_CERT_FILE=/usr/local/etc/openssl/.cacert.pem
chmod 755 /usr/local/etc/openssl
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;brew install
&lt;code&gt;
brew install curl --with-openssl &amp;amp;&amp;amp; brew link curl --force
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;删除不受信任的证书&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew update &amp;amp;&amp;amp; brew upgrade openssl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the 'certified' gem to Gemfile&lt;/li&gt;
&lt;li&gt;其他记不住的方法&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="总而言之，RestClient依然报这个错误，但curl报错内容变了："&gt;总而言之，RestClient 依然报这个错误，但 curl 报错内容变了：&lt;/h4&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl: (77) error setting certificate verify locations:
  CAfile: /usr/local/etc/openssl/ca-cert.pem
  CApath: none
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="但这个文件确实是存在的，并且权限是755."&gt;但这个文件确实是存在的，并且权限是 755.&lt;/h4&gt;&lt;h4 id="接着尝试 rvm pkg install openssl &amp;amp;&amp;amp; rvm reinstall all --force, 无效，且在安装任意一个版本的ruby的最后，都报错："&gt;接着尝试 &lt;code&gt;rvm pkg install openssl &amp;amp;&amp;amp; rvm reinstall all --force&lt;/code&gt;, 无效，且在安装任意一个版本的 ruby 的最后，都报错：&lt;/h4&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl: (77) error setting certificate verify locations:
  CAfile: /usr/local/etc/openssl/.cacert.pem
  CApath: none
There was an error while trying to resolve rubygems version for 'latest'.
Halting the installation.
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="实在是搞不定了，特来求助！"&gt;实在是搞不定了，特来求助！&lt;/h4&gt;&lt;h4 id="PS: 这个是第三方的api，必须用https"&gt;PS: 这个是第三方的 api，必须用 https&lt;/h4&gt;</description>
      <author>killernova</author>
      <pubDate>Wed, 30 Mar 2016 19:27:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/29511</link>
      <guid>https://ruby-china.org/topics/29511</guid>
    </item>
    <item>
      <title>安装 Rails 提示：configure: error: cannot guess build type; you must specify one</title>
      <description>&lt;h4 id="问题描述："&gt;问题描述：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;以前已经安装的 rails 都是可以正常运行的，比如用 rvm 安装的 2.2.2，rails 的版本是 4.2.5，正常运行&lt;/li&gt;
&lt;li&gt;通过 rvm 安装的 ruby 版本，若未安装 rails，则安装 rails 时报错&lt;/li&gt;
&lt;li&gt;第一次发现这个问题时大约 4 天前，用 rvm 安装了 2.3.0，安装成功后，尝试安装 rails，报错&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="详细错误："&gt;详细错误：&lt;/h4&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running 'configure' for libxml2 2.9.2... ERROR, review '/Users/killernova/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.7.1/ext/nokogiri/tmp/x86_64-apple-darwin15/ports/libxml2/2.9.2/configure.log' to see what happened. Last lines are:
========================================================================
: command not foundem type... ./config.guess: line 4:
: command not founde 6:
: command not founde 33:
: command not founde 34:
: command not founde 36:
: command not founde 48:
: command not founde 57:
: command not founde 60:
'/config.guess: line 63: syntax error near unexpected token `in
'/config.guess: line 63: `  case $1 in
configure: error: cannot guess build type; you must specify one
========================================================================
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --help
    --clean
    --use-system-libraries
    --enable-static
    --disable-static
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --enable-cross-build
    --disable-cross-build
/Library/Ruby/Gems/2.0.0/gems/mini_portile2-2.0.0/lib/mini_portile2/mini_portile.rb:366:in `block in execute': Failed to complete configure task (RuntimeError)
    from /Library/Ruby/Gems/2.0.0/gems/mini_portile2-2.0.0/lib/mini_portile2/mini_portile.rb:337:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/mini_portile2-2.0.0/lib/mini_portile2/mini_portile.rb:337:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/mini_portile2-2.0.0/lib/mini_portile2/mini_portile.rb:106:in `configure'
    from /Library/Ruby/Gems/2.0.0/gems/mini_portile2-2.0.0/lib/mini_portile2/mini_portile.rb:149:in `cook'
    from extconf.rb:289:in `block (2 levels) in process_recipe'
    from extconf.rb:182:in `block in chdir_for_build'
    from extconf.rb:181:in `chdir'
    from extconf.rb:181:in `chdir_for_build'
    from extconf.rb:288:in `block in process_recipe'
    from extconf.rb:187:in `tap'
    from extconf.rb:187:in `process_recipe'
    from extconf.rb:478:in `&amp;lt;main&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="mkmf.log"&gt;mkmf.log&lt;/h5&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"xcrun clang -o conftest -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin15 -I/System/Library/Frame    works/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward -I/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.    0.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -g -Os -pipe -DHAVE_GCC_SYNC_BUILTINS  conftest.c  -L. -L/Sys    tem/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib -L. -L/usr/local/lib   -arch x86_64 -arch i386   -lruby.2.0.0 -liconv -lpthread -ldl -lo    bjc  "
 94 checked program was:
 95 /* begin */
 96  1: #include "ruby.h"
 97  2:
 98  3: #include &amp;lt;stdlib.h&amp;gt;
 99  4: #include &amp;lt;iconv.h&amp;gt;
100  5:
101  6: int main(void)
102  7: {
103  8:     iconv_t cd = iconv_open("", "");
104  9:     iconv(cd, NULL, NULL, NULL, NULL);
105 10:     return EXIT_SUCCESS;
106 11: }
107 /* end */
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="google搜索出来，一般都是这样说的："&gt;google 搜索出来，一般都是这样说的：&lt;/h5&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;search for /usr/share/automake*/config.guess

check the latest version of automake

$ which automake
$ automake --version
find the appropriate automake folder in /usr/share/automake.1.11.1/config.guess

replace config.guess from your build tree with /usr/share/automake.1.11.1/config.guess
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id="但是我并不能找到这个文件， 类似的，找到的是："&gt;但是我并不能找到这个文件，类似的，找到的是：&lt;/h5&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/usr/lib/php/build/config.guess
/usr/local/Cellar/automake/1.15/share/automake-1.15/config.guess
/usr/local/Cellar/libtool/2.4.6/share/libtool/build-aux/config.guess
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此外，还有说从网上下载 config.guess 和 config.sub 进行替换&lt;/p&gt;
&lt;h5 id="假设是这这些config.guess中的一个，替换后请问该如何操作？如果不是这些问题引起的，请问到底是什么情况？谢谢。"&gt;假设是这这些 config.guess 中的一个，替换后请问该如何操作？如果不是这些问题引起的，请问到底是什么情况？谢谢。&lt;/h5&gt;
&lt;p&gt;＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝分割线＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝&lt;/p&gt;
&lt;h4 id="问题暂时解决了："&gt;问题暂时解决了：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;报错的时候有提示是&lt;code&gt;gem install nokogiri -- --use-system-libraries&lt;/code&gt;, 但不知道为什么我试了一次没用。&lt;/li&gt;
&lt;li&gt;然后刚我已经有 rails 的 ruby 版本中，新建了一个项目，bundle install 的时候又出现这个提示，我又按提示试了一次，然后就可以继续 bundle 了。&lt;/li&gt;
&lt;li&gt;于是我切换到 2.3.0 版本的 ruby，&lt;code&gt;gem install rails&lt;/code&gt;，照例提示错误，按提示&lt;code&gt;gem install nokogiri -- --use-system-libraries&lt;/code&gt;，成功，&lt;code&gt;gem install rails&lt;/code&gt; ，竟然成功了。。。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="但肯定还是有问题的，每次运行 ｀gem install nokogiri -- --use-system-libraries｀肯定不是办法，所以请各位帮忙看看到底问题出在哪里？"&gt;但肯定还是有问题的，每次运行 ｀gem install nokogiri -- --use-system-libraries｀肯定不是办法，所以请各位帮忙看看到底问题出在哪里？&lt;/h4&gt;</description>
      <author>killernova</author>
      <pubDate>Sun, 10 Jan 2016 13:25:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/28673</link>
      <guid>https://ruby-china.org/topics/28673</guid>
    </item>
    <item>
      <title>微信群发接口报错： 无效的 openid</title>
      <description>&lt;h4 id="事情是这样的："&gt;事情是这样的：&lt;/h4&gt;
&lt;p&gt;我用微信微信群发接口 (预览接口，就是那个测试接口) 做群发测试，发现总是返回：&lt;code&gt;{"errcode":40003,"errmsg":"invalid openid hint: [on4bJa0196ge10]"}&lt;/code&gt;&lt;/p&gt;
&lt;h5 id="因为是测试，所以我就随便弄了2个openid，但这2个绝对是正确的， 因为一直在用，从数据库中copy出来的。"&gt;因为是测试，所以我就随便弄了 2 个 openid，但这 2 个绝对是正确的，因为一直在用，从数据库中 copy 出来的。&lt;/h5&gt;&lt;h5 id="代码如下："&gt;代码如下：&lt;/h5&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;text_hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="ss"&gt;:touser&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;params_hash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"openids"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="ss"&gt;:msgtype&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:text&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;:content&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;params_hash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;text_json&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;text_hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_json&lt;/span&gt;
    &lt;span class="n"&gt;res_data_json&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RestClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt; &lt;span class="n"&gt;group_post_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text_json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，当 &lt;code&gt;params_hash["open ids"] = ["XXXXXXXXXXX"]&lt;/code&gt; 
  或者  &lt;code&gt;params_hash["open ids"] = ["XXXXXXXXXXX", "XXXXXXXXX"]&lt;/code&gt;时，均返回以上错误，
  但当 &lt;code&gt;params_hash["open ids"] = "XXXXXXXXXXX"&lt;/code&gt; 时则一切正常。&lt;/p&gt;
&lt;h5 id="所以现在怀疑是包含数组的hash转化为json格式时，该格式不被腾讯认可。  求各位支招，谢谢！"&gt;所以现在怀疑是包含数组的 hash 转化为 json 格式时，该格式不被腾讯认可。求各位支招，谢谢！&lt;/h5&gt;</description>
      <author>killernova</author>
      <pubDate>Thu, 03 Dec 2015 19:11:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/28269</link>
      <guid>https://ruby-china.org/topics/28269</guid>
    </item>
    <item>
      <title>Rails 中遇到 Integer 类型的变量在嵌套 hash 中显示为 “＃” 的问题</title>
      <description>&lt;h4 id="首先定义了一个变量："&gt;首先定义了一个变量：&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@cart_total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@line_items.select&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;present?&lt;/span&gt; &lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;collect&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;price&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;inject&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;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="在controller中有如下语句："&gt;在 controller 中有如下语句：&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;final_amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@cart_total&lt;/span&gt;
&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:order&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;merge!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:final_amount&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;final_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:text&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:order&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="ss"&gt;:final_amount&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; =&amp;gt; &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:order&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="该页面的显示结果为："&gt;该页面的显示结果为：&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="mf"&gt;38.0&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"shipping_id"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ship_day"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"任意日期"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ship_special"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ship_time2"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"任意时间段"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"part_pay"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"payment"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"wxpay"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"memo"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"is_tax"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"false"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"tax_company"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s2"&gt;"ship_zip"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ship_tel"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ip"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"127.0.0.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"member_id"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;4451&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"supplier_id"&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="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"status"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"final_amount"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="c1"&gt;#}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;也就是说，&lt;code&gt;params[:order][:final_amount] = 38.0&lt;/code&gt;, 而&lt;code&gt;params[:order]&lt;/code&gt;中的最后一项值为：&lt;code&gt;:final_amount =&amp;gt; #&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;但若是把&lt;code&gt;final_amount = @cart_total&lt;/code&gt; 改为&lt;code&gt;final_amount = @cart_total.to_i&lt;/code&gt;, 那么一切都正常，&lt;code&gt;params[:order]&lt;/code&gt;中的最后一项值为：&lt;code&gt;:final_amount =&amp;gt; 38.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;另外，&lt;code&gt;@cart_amount.kind_of(Integer)&lt;/code&gt;的结果是 true.&lt;/p&gt;

&lt;p&gt;请问为什么会出现这种情况？&lt;code&gt;@cart_total&lt;/code&gt;的值为什么需要 to_i 后才能在&lt;code&gt;params[:order]&lt;/code&gt;中正常显示？为什么&lt;code&gt;params[:order][final_amount]&lt;/code&gt;就可以直接显示？&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Sun, 06 Sep 2015 18:36:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/27214</link>
      <guid>https://ruby-china.org/topics/27214</guid>
    </item>
    <item>
      <title>用 RC4 加密出现乱码，但可被解密。</title>
      <description>&lt;h3 id="代码如下:"&gt;代码如下：&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;RubyRc4&lt;/span&gt;


  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@q1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="vi"&gt;@q2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="vi"&gt;@key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_byte&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;elem&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="vi"&gt;@key&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;elem&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="vi"&gt;@key.size&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;
    &lt;span class="vi"&gt;@key.slice&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="vi"&gt;@key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@key.size&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;
    &lt;span class="vi"&gt;@s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to_a&lt;/span&gt;
    &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; 
    &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&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="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="vi"&gt;@key&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;
      &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&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="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;encrypt!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;  

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dup&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt; 

  &lt;span class="kp"&gt;private&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;length&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&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="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setbyte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getbyte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="n"&gt;round&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;text&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;
    &lt;span class="vi"&gt;@q1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@q1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;
    &lt;span class="vi"&gt;@q2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@q2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;
    &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="vi"&gt;@s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="vi"&gt;@q2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;256&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="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'3f873a36c658'&lt;/span&gt;
&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'134df334ijnfd'&lt;/span&gt;
&lt;span class="n"&gt;encryptor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RubyRc4&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="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;decryptor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RubyRc4&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="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;encryptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;decryptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&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="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"a = &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"b = &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="运行该文件后，加密后的密文(a)出现了乱码，但是解密后却能得到明文。"&gt;运行该文件后，加密后的密文 (a) 出现了乱码，但是解密后却能得到明文。&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;➜&lt;/span&gt;  &lt;span class="n"&gt;code&lt;/span&gt;  &lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="n"&gt;rc4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;span class="n"&gt;a&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="p"&gt;)?&lt;/span&gt;&lt;span class="err"&gt;�&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;��&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f873a36c658&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="根据不同的明文与key，会出现不同的乱码，尤其是某些时候，会出现"&gt;根据不同的明文与 key，会出现不同的乱码，尤其是某些时候，会出现"a="也变成乱码，比如：&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;➜&lt;/span&gt;  &lt;span class="n"&gt;code&lt;/span&gt;  &lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="n"&gt;rc4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="err"&gt;���&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="err"&gt;�&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;�&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f873a36c658&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="也试过base64解码什么的，没用。本人小白一个，求大家帮忙看看吧。。。"&gt;也试过 base64 解码什么的，没用。本人小白一个，求大家帮忙看看吧。。。&lt;/h4&gt;</description>
      <author>killernova</author>
      <pubDate>Tue, 18 Aug 2015 23:59:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/26974</link>
      <guid>https://ruby-china.org/topics/26974</guid>
    </item>
    <item>
      <title>使用 gem ‘bootstrap-sass'后，在哪里找 bootstrap.js 文件和 less 文件？</title>
      <description>&lt;p&gt;我的 rails 是 3.2.11，bootstrap-sass 版本是 3.3.5.1，bundle 后都能正常使用，但是我却找不到 js 和 less 文件的位置。。。
网页的源码显示：
&lt;img src="https://l.ruby-china.com/photo/2015/1ca531c8414eb6f57fcf74c6d6d0d070.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;但我在&lt;code&gt;app/assets&lt;/code&gt;下面找不到这个文件。
事实上我在整个项目中搜索了&lt;u&gt;bootstrap&lt;/u&gt;，同样找不到这个文件夹或者文件。
那么，请问这个 gem 引入的 js 文件和 less 文件（应该是 less 吧？）到底在哪里？总不至于是在远程的某个服务器上吧？&lt;/p&gt;

&lt;p&gt;PS：如果我想修改 bootstrap 中的某些默认效果，比如导航链接的&lt;code&gt;:hover&lt;/code&gt;效果，我该怎么去改啊？是要找到&lt;code&gt;bootstrap.less&lt;/code&gt;文件吗？&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Fri, 17 Jul 2015 16:56:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/26541</link>
      <guid>https://ruby-china.org/topics/26541</guid>
    </item>
    <item>
      <title>部署 Heroku 报错：uninitialized constant Article::PictureUploader (NameError)</title>
      <description>&lt;p&gt;自己在做一个 demo 来学习 ror，之前部署在 heroku 一直好好的，然后昨天学习了 carrierwave 的使用。在本地一切都 ok，但 push 到 heroku 之后，打开 demo 地址，发现无法加载，使用&lt;code&gt;heroku logs&lt;/code&gt;, 报错：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;/app/app/models/article.rb: 9: in `&lt;a rel="nofollow" target="_blank"&gt;class:Article&lt;/a&gt;': uninitialized constant Article::PictureUploader (NameError). &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;之后发现无论是&lt;code&gt;heroku run rails s&lt;/code&gt;还是&lt;code&gt;heroku run rails c&lt;/code&gt;都是报这个错误。我不太明白，为和本地可以良好运行而远程就不行？故求助。&lt;/p&gt;

&lt;p&gt;&lt;u&gt;app/uploaders/picture&lt;/u&gt;_&lt;u&gt;uploader.rb&lt;/u&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;PictureUploader&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Uploader&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;MiniMagick&lt;/span&gt;
  &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="ss"&gt;resize_to_limit: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;storage&lt;/span&gt; &lt;span class="ss"&gt;:qiniu&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_dir&lt;/span&gt;
    &lt;span class="s2"&gt;"uploads/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&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;to_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;underscore&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;mounted_as&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;extension_white_list&lt;/span&gt;
    &lt;span class="sx"&gt;%w{jpg gif png jpeg}&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;&lt;u&gt;app/models/article.rb&lt;/u&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;Article&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;
  &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:comments&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;dependent: :destroy&lt;/span&gt;
  &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:likes&lt;/span&gt;
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;length: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;maximum: &lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;length: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;minimum: &lt;/span&gt;&lt;span class="mi"&gt;10&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;per_page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
  &lt;span class="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:floor_number&lt;/span&gt;
  &lt;span class="n"&gt;mount_uploader&lt;/span&gt; &lt;span class="ss"&gt;:picture&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;PictureUploader&lt;/span&gt;
  &lt;span class="n"&gt;validate&lt;/span&gt; &lt;span class="ss"&gt;:picture_size&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;picture_size&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;picture&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;megabytes&lt;/span&gt;
        &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:picture&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"should be less than 5MB"&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;github: &lt;a href="https://github.com/killernova/blog" rel="nofollow" target="_blank"&gt;https://github.com/killernova/blog&lt;/a&gt;&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Sun, 31 May 2015 21:30:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/25826</link>
      <guid>https://ruby-china.org/topics/25826</guid>
    </item>
    <item>
      <title>搜索页面打不开了？</title>
      <description>&lt;p&gt;如题，搜索后出现如下页面：
&lt;img src="https://l.ruby-china.com/photo/2015/dffc75176088263f48f9f00f4a0cebad.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Mon, 25 May 2015 20:54:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/25740</link>
      <guid>https://ruby-china.org/topics/25740</guid>
    </item>
    <item>
      <title>Linux 下 Sublime Text 3 的使用问题</title>
      <description>&lt;p&gt;我在 linux 下用 sublime text3 写代码，完了后 Ctrl+B 提示 /bin/ bush/:ruby:未找到命令。但是我在终端里直接用命令却可以运行。有文章指出需要修改~/Library/Application Support/Sublime Text 2/Packages/Ruby/` 下的 Ruby.sublime-build 文件，但是为什么我找不到这个文件啊？其实是压根找不到 Library 目录，请问这个目录实在家目录的当前用户 ID 目录下吗？请高手们帮帮忙，谢谢！&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Tue, 27 Jan 2015 22:55:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/23974</link>
      <guid>https://ruby-china.org/topics/23974</guid>
    </item>
    <item>
      <title>安装 Linux 时出现 stdin not a typewriter</title>
      <description>&lt;p&gt;我 c 盘装的 win7，ntfs 格式，e 盘为 fat32 格式，现在用 EasyBCD 法安装 ubuntukilyn14，重启后出现 NeroGrub Bootloader，选择后，正常情况应该进入 livecd 模式，但是我就卡在 ubuntu 标志这里，按 ESC 会发现一直提示：
  stdin not a typewriter 
过一会儿就出现一段错误信息： 
（initramfs)Unable to find a medium containing a live file system.&lt;br&gt;
问题是以前我按照这个方法安装时没问题的。。。请问这到底是怎么回事？&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Mon, 26 Jan 2015 23:10:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/23955</link>
      <guid>https://ruby-china.org/topics/23955</guid>
    </item>
    <item>
      <title>调查下各位看书的情况</title>
      <description>&lt;p&gt;请问各位大侠们看技术类的书籍，一般是看英文的还是中文的？看电子书还是实体书？偶就觉得英文的实体书太太太太贵了。。。便宜的一百起，500 页以上的都是两三百。。。屌丝真心给跪了。各位觉得 Ruby 新人改怎么看书？求指点~~&lt;/p&gt;</description>
      <author>killernova</author>
      <pubDate>Thu, 22 Jan 2015 22:35:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/23895</link>
      <guid>https://ruby-china.org/topics/23895</guid>
    </item>
  </channel>
</rss>
