<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>L-codes (L)</title>
    <link>https://ruby-china.org/L-codes</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>ruby 和 java 怎么相互加密解密 AES 内容 (非标准 AES 要求的密钥长度场景)</title>
      <description>&lt;p&gt;在下面的 java 代码里面，发现 AES 的 key 是可以使用 &lt;code&gt;SecretKeySpec&lt;/code&gt; 设置任意长度字符串，但是在 Ruby 里面 &lt;code&gt;OpenSSL::Cipher.new 'aes-128-cbc'&lt;/code&gt; 强制要求长度为 16 32 等，请问这样的情况下，怎么解密 java 使用了非要求的 AES 密钥长度加密过的内容？&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;key&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;SecretKeySpec&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="s"&gt;"AES"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;decCipher&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Cipher&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="s"&gt;"AES/CBC/PKCS5Padding"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;decCipher&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;init&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;iv&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>L-codes</author>
      <pubDate>Thu, 18 Jan 2024 19:55:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/43557</link>
      <guid>https://ruby-china.org/topics/43557</guid>
    </item>
    <item>
      <title>使用 bundle 管理 gems 时，怎样可以加载不在 Gemfile 配置的 gem</title>
      <description>&lt;p&gt;场景是某些功能依赖一个 gem，但是这个功能是可选的，也就是这个 gem 的安装是可选的
但是使用了 bundle 管理 gems，则无法 &lt;code&gt;require&lt;/code&gt; 不在 Gemfile 内的 gem&lt;/p&gt;</description>
      <author>L-codes</author>
      <pubDate>Wed, 22 Feb 2023 16:17:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/42899</link>
      <guid>https://ruby-china.org/topics/42899</guid>
    </item>
    <item>
      <title>Ruby 程序内的类实例数据存储问题</title>
      <description>&lt;p&gt;写了一个有大量类实例数据的程序，而这些类实例对象的数据需要存储，想到的是用&lt;code&gt;Marshal&lt;/code&gt;等序列化导出保存到文件，下次运行时通过反序列化加载回状态，但是这样做效率比较差，比如我只做了小许的数据修改，就要重新全部对象反序列化重新覆盖。请问各位师傅有更好的解决方案吗？想找类似依赖外部数据库，但是自动对我 ruby 对象的数据实现自动存储的&lt;code&gt;gem&lt;/code&gt;&lt;/p&gt;</description>
      <author>L-codes</author>
      <pubDate>Wed, 04 Jan 2023 16:51:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/42821</link>
      <guid>https://ruby-china.org/topics/42821</guid>
    </item>
    <item>
      <title>ruby 3.1 Fiber scheduler 对 ffi 等应用有办法实现协程调度吗？</title>
      <description>&lt;p&gt;看了 ruby 3.1 对 IO 等方法实现了 hook，参考 &lt;a href="https://docs.ruby-lang.org/en/3.1/Fiber/SchedulerInterface.html" rel="nofollow" target="_blank"&gt;https://docs.ruby-lang.org/en/3.1/Fiber/SchedulerInterface.html&lt;/a&gt;
在 ruby 3.1 对基于 ruby IO 等的 socket、http 库等进行了测试发现确实可实现协程调度&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"fiber_scheduler"&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"open-uri"&lt;/span&gt;

&lt;span class="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_scheduler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;FiberScheduler&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="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;schedule&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/delay/2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;schedule&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"https://httpbin.org/delay/2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是用基于 libcurl 的 &lt;a href="https://github.com/typhoeus/typhoeus" rel="nofollow" target="_blank" title=""&gt;typhoeus&lt;/a&gt; 则 http 请求过程还是会阻塞，因为使用的并非 ruby 的 IO 实现&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"fiber_scheduler"&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"typhoues"&lt;/span&gt;

&lt;span class="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_scheduler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;FiberScheduler&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="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;schedule&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;Typhoeus&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="s2"&gt;"https://httpbin.org/delay/2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Fiber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;schedule&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;Typhoeus&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="s2"&gt;"https://httpbin.org/delay/2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问针对 如这种基于 libcurl 的 ffi 程序，有办法让 fiber scheduler 实现协程调度吗？
只有等 ruby 官方加 hook 没有自行添加 hook 的实现方式吗？&lt;/p&gt;</description>
      <author>L-codes</author>
      <pubDate>Thu, 10 Mar 2022 09:50:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/42197</link>
      <guid>https://ruby-china.org/topics/42197</guid>
    </item>
    <item>
      <title>升级 ruby 的 gem 环境问题</title>
      <description>&lt;p&gt;升级 ruby 2.5 到 2.6 怎么自动安装之前的版本的所有 gem?&lt;/p&gt;

&lt;p&gt;我想到的只有&lt;code&gt;gem list&lt;/code&gt;出所有&lt;code&gt;gems&lt;/code&gt; 然后写个脚本遍历&lt;code&gt;gem install&lt;/code&gt;有没有更好的方法？&lt;/p&gt;

&lt;p&gt;还是 gem 命令有类似&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;的方式？&lt;/p&gt;</description>
      <author>L-codes</author>
      <pubDate>Sat, 09 Mar 2019 09:47:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/38212</link>
      <guid>https://ruby-china.org/topics/38212</guid>
    </item>
    <item>
      <title>如何在 win2003 或 xp 上安装 ruby (&gt;= 2.3)</title>
      <description>&lt;p&gt;使用 rubyinstaller 安装的 ruby，无法运行报出下面的错误
&lt;img src="https://l.ruby-china.com/photo/2019/da8bc63e-3809-4ea4-b04f-45daa3af2c80.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;下面 issue 提到 rubyinstaller 也并不打算支持 xp 或 win2k3
&lt;a href="https://github.com/oneclick/rubyinstaller/issues/271" rel="nofollow" target="_blank"&gt;https://github.com/oneclick/rubyinstaller/issues/271&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我也正在尝试&lt;a href="https://github.com/ruby/ruby/tree/trunk/win32" rel="nofollow" target="_blank" title=""&gt;编译 ruby&lt;/a&gt;
但是编译也遇到很多问题，现在卡在这里，有解决过的，求指导一下
&lt;img src="https://l.ruby-china.com/photo/2019/ad3039a9-c4c5-479e-8643-4ad6f0096f7d.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;请问有什么方式，在 win2k3 上安装运行 ruby?
有在 xp 和 win2003 能运行的 ruby 吗？也求打包共享一份&lt;/p&gt;</description>
      <author>L-codes</author>
      <pubDate>Thu, 24 Jan 2019 23:30:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/38042</link>
      <guid>https://ruby-china.org/topics/38042</guid>
    </item>
  </channel>
</rss>
