<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>saillee (Sail Lee)</title>
    <link>https://ruby-china.org/saillee</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>iTunes 上的斯坦福课程--用 Swift 开发 iOS8 应用</title>
      <description>&lt;p&gt;&lt;a href="https://itunes.apple.com/cn/course/developing-ios-8-apps-swift/id961180099" rel="nofollow" target="_blank" title=""&gt;iTunes 链接传送门&lt;/a&gt;&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Wed, 28 Jan 2015 05:16:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/23976</link>
      <guid>https://ruby-china.org/topics/23976</guid>
    </item>
    <item>
      <title>Meteor 的又一些学习资源</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/arunoda/Meteor-Learning" rel="nofollow" target="_blank"&gt;https://github.com/arunoda/Meteor-Learning&lt;/a&gt;&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Sun, 21 Dec 2014 23:46:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/23322</link>
      <guid>https://ruby-china.org/topics/23322</guid>
    </item>
    <item>
      <title>分享一个学习 Meteor 的资源列表</title>
      <description>&lt;p&gt;&lt;a href="https://www.yauh.de/best-learning-resources-for-meteorjs/" rel="nofollow" target="_blank"&gt;https://www.yauh.de/best-learning-resources-for-meteorjs/&lt;/a&gt;&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Mon, 24 Nov 2014 01:00:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/22822</link>
      <guid>https://ruby-china.org/topics/22822</guid>
    </item>
    <item>
      <title>请教，Rails 做 POS 系统，有控制打印机方案吗？</title>
      <description>&lt;p&gt;需求：最近在帮朋友规划一个销售管理系统的 web，但在销售网点客户端需要打印销售小票。&lt;/p&gt;

&lt;p&gt;请问各位先进，有什么在浏览器端控制打印机的解决方案？&lt;/p&gt;

&lt;p&gt;我知道在 IE 中可以通过 ActiveX 控件来解决。有没有其他的解决方案，并且是可以支持多种浏览器的？&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Wed, 03 Sep 2014 23:26:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/21375</link>
      <guid>https://ruby-china.org/topics/21375</guid>
    </item>
    <item>
      <title>有了解 ractive.js 的高手吗？</title>
      <description>&lt;p&gt;有了解 ractive.js 的高手吗？能否科普下？&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Sun, 30 Mar 2014 21:56:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/18265</link>
      <guid>https://ruby-china.org/topics/18265</guid>
    </item>
    <item>
      <title>[分享] Rails 程序员视角看 Express--目录结构与重要文件</title>
      <description>&lt;p&gt;初学 node.js，暂且先从 Express 来入手，下面是我以 Rails 程序员的角度，用 Rails 项目为参照，对最基本的 Express 项目结构进行对比，做下学习笔记。典型的 Express 项目目录结构如下（图一）：
&lt;img src="//l.ruby-china.com/photo/2014/f27f5598a925a0966b0332658c3eb536.png" title="" alt="图一"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1、node_modules 目录：&lt;/em&gt;&lt;/strong&gt;
保存 node.js 的 module（模组）的地方，类似于 Rails 项目中的 vendor 目录，node.js 中的 module 概念类似于 ruby 中的 gem 包，通过安装不同的 module，项目可以获取到相关的功能扩展，如模板、数据库接口等。这个目录下面安装的 module 与项目根目录下的 package.json 文件有莫大关系。package.json 文件类似于 rails 项目中的 Gemfile，指定了项目中依赖的扩展 module 和相应版本信息。实例见下（图二）：
&lt;img src="//l.ruby-china.com/photo/2014/5bf5b9bb0d273b3c4bd8028b8fa1ae6c.png" title="" alt="图二"&gt;
图中中安装了 ejs（选择 ejs 模板时的默认安装）、express（默认安装）和 node-mysql 三个 module；&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2、public 目录：&lt;/em&gt;&lt;/strong&gt;
这个 public 目录等于 rails 项目中的 public+assets，分别存放了客户端可以访问的资源，如网页图片、css 和前端 javascript 脚本等资源。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3、routes 目录：&lt;/em&gt;&lt;/strong&gt;
express 中的 routes 目录并非和 Rails 项目中的 config/routes.rb 文件概念一致，倒是和 Rails 项目中 app/controllers/目录类似，存放了用于处理 MVC 概念中 controller 的处理部分，也就是存放对应路由的处理程序。路由信息在 app.js 中予以定义，见下面（图三）：
&lt;img src="//l.ruby-china.com/photo/2014/2f71fed02d3c3e9235f0e5cd7c34c9cc.png" title="" alt="图三"&gt;
如图一中有两个路由处理，index 和 user。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;4、views 目录：&lt;/em&gt;&lt;/strong&gt;
这个目录的概念与 Rails 项目中的 views 完全相同，其中的 index.ejs 存放的就是路由 index.js 的模板。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;5、app.js 文件：&lt;/em&gt;&lt;/strong&gt;
这个文件是 Express 应用程序的入口文件，存放的 Express 项目中最基本的配置信息。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;5、其他：&lt;/em&gt;&lt;/strong&gt;
由于 Express 只是一个轻量级的 Web 框架，多数功能只是围绕 HTTP 协议中常用部分进行了封装，其中没有内置 ORM，所以没有 MVC 概念中 Model 的部分，在实际项目中必须通过 module 来进行扩展。&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Sat, 29 Mar 2014 15:35:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/18249</link>
      <guid>https://ruby-china.org/topics/18249</guid>
    </item>
    <item>
      <title>MacOSX 下 Oracle Instant Client 的安装及 ruby-oci8 安装要点备忘 </title>
      <description>&lt;p&gt;好不容易搞定了黑苹果，接下来就是 Rails 开发环境的搭建了。下面简单说说。
先吐槽一下 Oracle 对 Mac 的支持真是太弱，现在都 12c 了，11g 的 Enterprise 版的 Database 没有也就算了，连 XE 版都没有，太不算事了。难道大家都只用 Linux？Mac 可是开发的高帅富环境啊！好歹 Mac 上也是跑 Unix 内核的，就因为 MacOSX 的 server 少吗？只能装下 Instant Client 了。&lt;/p&gt;

&lt;p&gt;入正题，先从 Oracle 网站上 download 下面几个文件（注意要和你自己的 cpu 匹配，我用 64bit 的）：
&lt;a href="http://download.oracle.com/otn/mac/instantclient/11203/instantclient-basic-macos.x64-11.2.0.3.0.zip" rel="nofollow" target="_blank"&gt;http://download.oracle.com/otn/mac/instantclient/11203/instantclient-basic-macos.x64-11.2.0.3.0.zip&lt;/a&gt;
&lt;a href="http://download.oracle.com/otn/mac/instantclient/11203/instantclient-sqlplus-macos.x64-11.2.0.3.0.zip" rel="nofollow" target="_blank"&gt;http://download.oracle.com/otn/mac/instantclient/11203/instantclient-sqlplus-macos.x64-11.2.0.3.0.zip&lt;/a&gt;
&lt;a href="http://download.oracle.com/otn/mac/instantclient/11203/instantclient-sdk-macos.x64-11.2.0.3.0.zip" rel="nofollow" target="_blank"&gt;http://download.oracle.com/otn/mac/instantclient/11203/instantclient-sdk-macos.x64-11.2.0.3.0.zip&lt;/a&gt;
之后启动 Terminal 到下载目录下运行（重建 InstantClient 的目录结构）：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd Downloads
unzip -qq instantclient-sqlplus-macos.x64-11.2.0.3.0.zip
unzip -qq instantclient-basic-macos.x64-11.2.0.3.0.zip
unzip -qq instantclient-sdk-macos.x64-11.2.0.3.0.zip
mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.3.0/bin
mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.3.0/lib
mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.3.0/jdbc/lib
mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.3.0/rdbms/jlib
mkdir -p /Applications/oracle/product/instantclient_64/11.2.0.3.0/sqlplus/admin
cd instantclient_11_2
mv ojdbc* /Applications/oracle/product/instantclient_64/11.2.0.3.0/jdbc/lib/
mv x*.jar /Applications/oracle/product/instantclient_64/11.2.0.3.0/rdbms/jlib/
mv glogin.sql /Applications/oracle/product/instantclient_64/11.2.0.3.0/sqlplus/admin/
mv *dylib* /Applications/oracle/product/instantclient_64/11.2.0.3.0/lib/
mv sdk /Applications/oracle/product/instantclient_64/11.2.0.3.0/lib/
mv *README /Applications/oracle/product/instantclient_64/11.2.0.3.0/
mv * /Applications/oracle/product/instantclient_64/11.2.0.3.0/bin/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后设置 Oracle InstantClient 的运行环境参数，运行命令：vim ~/.bash_profile，贴入以下内容：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export ORACLE_BASE=/Applications/oracle
export ORACLE_HOME=$ORACLE_BASE/product/instantclient_64/11.2.0.3.0
export PATH=$ORACLE_HOME/bin:$PATH
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_BASE/admin/network
export NLS_LANG="AMERICAN_AMERICA.UTF8"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后运行以下脚本安装 ruby 的 oracle 接口即可。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ln -s /Applications/oracle/product/instantclient_64/11.2.0.3.0/lib/libclntsh.dylib.11.1 /Applications/oracle/product/instantclient_64/11.2.0.3.0/lib/libclntsh.dylib
gem install ruby-oci8
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>saillee</author>
      <pubDate>Thu, 26 Dec 2013 23:16:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/16450</link>
      <guid>https://ruby-china.org/topics/16450</guid>
    </item>
    <item>
      <title>初学 Coffee 脚本，请教 function 定义问题！</title>
      <description>&lt;p&gt;学着把以下一段通过页面按钮调用的 javascript 脚本&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;grid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;datagrid1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;editWindow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;editWindow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;actionMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;edit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sortBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;orderby&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;asc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getValue&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;请输入要查询的内容！&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&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;p&gt;改成 coffee 脚本&lt;/p&gt;
&lt;pre class="highlight coffeescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;parse&lt;/span&gt;

  &lt;span class="nx"&gt;grid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt; &lt;span class="s"&gt;"datagrid1"&lt;/span&gt;

  &lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;load&lt;/span&gt;

  &lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sortBy&lt;/span&gt; &lt;span class="s"&gt;"duty_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;"asc"&lt;/span&gt;

  &lt;span class="nx"&gt;search&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;
    &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mini&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="na"&gt;getValue&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;isnt&lt;/span&gt; &lt;span class="s"&gt;""&lt;/span&gt;
      &lt;span class="nx"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;load&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="nx"&gt;alert&lt;/span&gt; &lt;span class="s"&gt;"请输入要查询的内容！"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;search() 前面的代码都能正确执行，但偏偏 search 调不出来。请教一下我 coffee 脚本中存在问题？&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Wed, 12 Jun 2013 06:14:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/11660</link>
      <guid>https://ruby-china.org/topics/11660</guid>
    </item>
    <item>
      <title>各位有什么好的 XML Mapping 的 Gem 推介一下？</title>
      <description>&lt;p&gt;本人 ruby 新人，目前项目中有涉及到 XML 到 Model 的映射方面的需求，各位有什么好的 XML Mapping 的 gem 推介一下？最好是能够多数据 item 的 mapping。&lt;/p&gt;

&lt;p&gt;谢谢帮忙！&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Thu, 07 Mar 2013 17:07:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/9222</link>
      <guid>https://ruby-china.org/topics/9222</guid>
    </item>
    <item>
      <title>Ruby 如何实现已知 C# 方式给出的 RSA 公钥的加密?</title>
      <description>&lt;p&gt;项目中遇到一个问题，已知一个C#项目中的公钥，形式如下：&lt;/p&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Public key XML string&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;publickey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;RSAKeyValue&amp;gt;&amp;lt;Modulus&amp;gt;ma+lXgSUOx73xNJWgC18G6GKYlERmAnZ1BQQPyaZ4mlzbi3A+4"&lt;/span&gt;
                               &lt;span class="p"&gt;+&lt;/span&gt;&lt;span class="s"&gt;"FKTWsGlHqWFG1d6+Gvb1RW6NB3yB4d5CsJRkV3CEbotxT/3UC"&lt;/span&gt;
                               &lt;span class="p"&gt;+&lt;/span&gt;&lt;span class="s"&gt;"cV3txebo+w2BIqtv/qTRXgaxygR1i0=&amp;lt;/Modulus&amp;gt;&amp;lt;Exponent&amp;gt;AQAB&amp;lt;/Exponent&amp;gt;&amp;lt;/RSAKeyValue&amp;gt;"&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="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'openssl'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'base64'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'xml/libxml'&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;rsa_encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="no"&gt;Base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode64&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;public_encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message_string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'UTF-16LE'&lt;/span&gt;&lt;span class="p"&gt;))).&lt;/span&gt;&lt;span class="nf"&gt;rstrip&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;# @param xml_string [Object]&lt;/span&gt;
&lt;span class="c1"&gt;# @return [Object]&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;rsa_public_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xml_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;XML&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xml_string&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;
  &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode64&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_first&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Modulus'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;content&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;unpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'H*'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode64&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_first&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Exponent'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;content&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;unpack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'H*'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;pub_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OpenSSL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;PKey&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;RSA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="c1"&gt;# modulues&lt;/span&gt;
  &lt;span class="n"&gt;pub_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OpenSSL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;BN&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="n"&gt;m&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;hex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
  &lt;span class="c1"&gt;# exponent&lt;/span&gt;
  &lt;span class="n"&gt;pub_key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;OpenSSL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;BN&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="n"&gt;e&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;hex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
  &lt;span class="c1"&gt;# return Public Key&lt;/span&gt;
  &lt;span class="n"&gt;pub_key&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但在调试中加密结果一直不对，这个问题出在哪里？请高手支招！&lt;/p&gt;</description>
      <author>saillee</author>
      <pubDate>Fri, 01 Mar 2013 23:57:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/9062</link>
      <guid>https://ruby-china.org/topics/9062</guid>
    </item>
  </channel>
</rss>
