<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>mumuxizzz (prettybot)</title>
    <link>https://ruby-china.org/mumuxizzz</link>
    <description>freelancer</description>
    <language>en-us</language>
    <item>
      <title>花了 2 个小时 vibe coding 了一个添加单词到墨墨背单词的 chrome 插件</title>
      <description>&lt;h3 id="功能如下"&gt;功能如下&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;选中的单词或者短语，调用 deepseek chat(DeepSeek-V3.2) 来进行语义归一化处理。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;提示词如下：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;你是一个以英语为母语的使用者。
我会给你一个英文单词或短语。
请将其规范化，使其中的词形可以在标准英语词典中直接查询到。

处理规则如下：
通用规则：
不要解释含义，仅对词形进行规范化处理。
不要臆造新词，不要添加或删除词（除非去除所有格）。
保持原有词序。

如果输入是单个单词：
按下面的词形规范化规则处理。

如果输入是短语（包含多个词）：
将短语拆分为单个词。
对内容词（名词、动词、形容词、副词）分别应用词形规范化规则。
对功能词（介词、冠词、连词等）保持不变。
将处理后的词按原顺序重新组合为短语。

词形规范化规则：
1. 名词复数 → 单数
2. 动词第三人称单数 → 原形
3. 动词过去式或过去分词 → 原形
4. 动词 -ing 形式 → 原形
5. 形容词比较级或最高级 → 原级
6. 名词所有格 → 去除所有格
7. 已是词典基本词形 → 保持不变
8. 词性歧义 → 选择词典中最常见词条
9. 非专有名词的大写 → 小写
10. 不进行语义猜测

只输出处理后的单词或短语，不要输出任何解释或额外内容。
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;归一化后的单词/短语，先在墨墨词库中查询，如果存在就在选择的云词本中去重后加入&lt;/li&gt;
&lt;li&gt;另外支持创建云词本/选择云词本，查看云词本中的单词。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="github repo"&gt;github repo&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/prettybot/maimemo-notebook-extension" rel="nofollow" target="_blank"&gt;https://github.com/prettybot/maimemo-notebook-extension&lt;/a&gt; &lt;/p&gt;
&lt;h3 id="感悟"&gt;感悟&lt;/h3&gt;
&lt;p&gt;只是一个初步版本，起码满足了我的需求，没有加获取释义是因为我觉得豆包的 AI 划词工具栏的翻译更好用&lt;/p&gt;

&lt;p&gt;希望对有需要的朋友有用，欢迎提建议~&lt;/p&gt;</description>
      <author>mumuxizzz</author>
      <pubDate>Thu, 22 Jan 2026 21:20:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/44464</link>
      <guid>https://ruby-china.org/topics/44464</guid>
    </item>
    <item>
      <title>【求职】寻求一份远程工作</title>
      <description>&lt;h3 id="个人经历"&gt;个人经历&lt;/h3&gt;
&lt;p&gt;三年 rails 开发经验，其中两年在考研教育创业公司，最近一年在薄荷（目前已离职）。&lt;/p&gt;

&lt;p&gt;因为在创业公司的经历，对产品/运营都有自己的一些想法，在薄荷又把技术的短板补了上来，在薄荷输出稳定，得到同事普遍的认可。&lt;/p&gt;
&lt;h3 id="技能"&gt;技能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ruby（中/高级）&lt;/li&gt;
&lt;li&gt;golang（初/中级）&lt;/li&gt;
&lt;li&gt;前端（初/中级，css 基础偏弱，可借助框架完成原生/vue/react 项目）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;熟悉 mysql / mongodb，对 SQL 性能调优有一定经验。&lt;/p&gt;

&lt;p&gt;熟悉 redis，善于寻找并优化系统瓶颈，对微服务/容器化等亦有一定实践。&lt;/p&gt;

&lt;p&gt;拥抱 TDD，熟悉单元测试的书写，从而保证可靠稳定的代码逻辑。&lt;/p&gt;
&lt;h3 id="个人品质"&gt;个人品质&lt;/h3&gt;
&lt;p&gt;亲和力，优秀的语言表达能力，认真负责，良好的职业素质。&lt;/p&gt;
&lt;h3 id="联系方式"&gt;联系方式&lt;/h3&gt;
&lt;p&gt;微信：&lt;code&gt;prettybot&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;邮箱：&lt;code&gt;roadlee1993@gmail.com&lt;/code&gt;&lt;/p&gt;</description>
      <author>mumuxizzz</author>
      <pubDate>Thu, 04 Jun 2020 19:13:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/39937</link>
      <guid>https://ruby-china.org/topics/39937</guid>
    </item>
    <item>
      <title>rails 使用 devise 遇到 401 (Unauthorized)</title>
      <description>&lt;p&gt;并且只在 post 请求才出现，get 请求正常。&lt;/p&gt;

&lt;p&gt;具体表现和&lt;a href="https://stackoverflow.com/questions/41914110/rails-unauthorized-error" rel="nofollow" target="_blank" title=""&gt;这个问题&lt;/a&gt;差不多。&lt;/p&gt;

&lt;p&gt;大家开发过程中有没有遇到过这个问题呀&lt;/p&gt;</description>
      <author>mumuxizzz</author>
      <pubDate>Wed, 13 Feb 2019 14:37:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/38102</link>
      <guid>https://ruby-china.org/topics/38102</guid>
    </item>
    <item>
      <title>cron 进程在任务执行结束后不被操作系统回收</title>
      <description>&lt;h3 id="问题描述"&gt;问题描述&lt;/h3&gt;
&lt;p&gt;在项目中有一个定时通知用户的需求。在某个固定时间段，间隔 5 分钟去通知。
因此想到了 linux 中的 cron 定时任务，ruby 中有相应的 gem，想必大家用到的也蛮多 &lt;a href="https://github.com/javan/whenever" rel="nofollow" target="_blank" title=""&gt;whenever&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;定时任务&lt;/strong&gt;
周期性执行 Model 的一个实例方法，里面做的操作是迭代数据表，使用 sikekiq 的 delay 方法异步执行某个发送消息的操作。这个迭代相对耗时，执行完毕大概在 30s 左右。&lt;/p&gt;

&lt;p&gt;但是最近服务器出现内存被吃完的情况，经过定位发现有很多的 cron 进程没有被操作系统回收，大概 200 个左右（定时任务执行的次数）。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/256bdea4-efc6-41a2-9eca-d45c7c46645e.png!large" title="" alt="很多个cron进程"&gt;&lt;/p&gt;

&lt;p&gt;这样将近吃掉了服务器&lt;strong&gt;3 个多 G&lt;/strong&gt;的物理内存。&lt;/p&gt;
&lt;h3 id="临时的解决方案"&gt;临时的解决方案&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://blog.csdn.net/orangleliu/article/details/18005571" rel="nofollow" target="_blank" title=""&gt;批量杀进程&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="思考"&gt;思考&lt;/h3&gt;
&lt;p&gt;top 命令查看，发现没有僵尸进程&lt;/p&gt;

&lt;p&gt;本地重现，也没有问题。进程也会被操作系统回收。&lt;/p&gt;
&lt;h3 id="补充"&gt;补充&lt;/h3&gt;
&lt;p&gt;whenever 配置文件中指定了输出文件&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set :output, "#{Rails.root}/log/cron.log"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是本地测试的在&lt;code&gt;cron.log&lt;/code&gt;文件中看到了&lt;code&gt;Running via Spring preloader in process xxx(pid)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;服务器上就看不到，但是确实有很多的 cron 进程。&lt;img title=":cold_sweat:" alt="😰" src="https://twemoji.ruby-china.com/2/svg/1f630.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;p&gt;麻烦各位大佬帮忙给看看是什么原因&lt;img title=":hushed:" alt="😯" src="https://twemoji.ruby-china.com/2/svg/1f62f.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;h3 id="更新"&gt;更新&lt;/h3&gt;
&lt;p&gt;现在定位到原因了，因为有一个和 ruby 有关的僵尸进程。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
root     13788  2455  0 Jul26 ?        00:00:19 [ruby] &amp;lt;defunct&amp;gt;

# 产生僵尸进程的元凶（父进程）
ps -ef | grep 2455
root      2455     1  0 May07 ?        00:00:14 spring server | okaoyan-news | started 1986 hours ago
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://github.com/rails/spring" rel="nofollow" target="_blank" title=""&gt;spring&lt;/a&gt;的 ReadMe 中有一句话介绍到：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Spring makes extensive use of Process.fork, so won't be able to provide a speed up on platforms which don't support forking (Windows, JRuby).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;通过 fork 创建子进程。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rails runner&lt;/code&gt; &lt;code&gt;rails generate&lt;/code&gt; &lt;code&gt;rails console&lt;/code&gt; &lt;code&gt;rails rake&lt;/code&gt; 都会用到 &lt;code&gt;spring preloader&lt;/code&gt; 。&lt;/p&gt;

&lt;p&gt;因为这个僵尸进程，所有的 cron 中周期性的&lt;code&gt;rails runner&lt;/code&gt;任务都被阻塞了。所以就一直占着系统资源。&lt;/p&gt;
&lt;h3 id="疑惑"&gt;疑惑&lt;/h3&gt;
&lt;p&gt;按道理讲，当产生了很多的僵尸进程后，会占用大量的进程号导致系统不可用。现在只有一个僵尸进程。但是杀掉僵尸进程的父进程后。一切正常了。
&lt;code&gt;cron&lt;/code&gt;以及&lt;code&gt;rails runner&lt;/code&gt;进程都可以被及时回收。&lt;/p&gt;

&lt;p&gt;不明白的是为什么会阻塞？&lt;/p&gt;</description>
      <author>mumuxizzz</author>
      <pubDate>Fri, 27 Jul 2018 19:46:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/37238</link>
      <guid>https://ruby-china.org/topics/37238</guid>
    </item>
    <item>
      <title>MongoDB 批量查询性能优化问题</title>
      <description>&lt;p&gt;项目中某行代码 ( map 迭代 ) 执行时占用 CPU 资源到 90% 多。
代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uids&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="no"&gt;MasterFriend&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;)}).&lt;/span&gt;&lt;span class="nf"&gt;to_a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;uids 是一个大小为 6000 多的数组，里面存放的 user 表的 id 字段（mongoid 自带的_id 字段）&lt;/p&gt;

&lt;p&gt;这个迭代查询总耗时在 5s 以上，mongoid 默认_id 字段是加了索引的。MasterFriend 表不到 10000 条记录。&lt;/p&gt;

&lt;p&gt;请教如何优化？&lt;img title=":angel:" alt="👼" src="https://twemoji.ruby-china.com/2/svg/1f47c.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;发现了新的问题，如上获得的 users 数组里面存放了很多个 document 对象（约为 5000）。然后我发现这种情况下，我去遍历这个数组，对每个 document 对象调用其 encode 方法（就是把输出为 json 格式），这个时候耗时更加严重。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;encode&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="ss"&gt;id: &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;id&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="ss"&gt;images: &lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;gender: &lt;/span&gt;&lt;span class="n"&gt;gender&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;第一种遍历（严格意义上算不上遍历）：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="ss"&gt;:&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;encode&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="n"&gt;arr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;u&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现第二种遍历方式比第一种执行速度要慢 1 倍。执行这两段代码的时候 cpu 都飙到 90% 多了。而且假如我直接把 users 数组赋值给另外一个数组，直接内存泄露了。&lt;img title=":slightly_frowning_face:" alt="🙁" src="https://twemoji.ruby-china.com/2/svg/1f641.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;p&gt;我是一边在 rails console 中执行，一边开着另外一个窗口用 top 命令实时查看的。&lt;/p&gt;

&lt;p&gt;请教一下，ruby 里面的迭代就这么耗时吗？数组存放太多数据是否也不合适？如何避免内存泄露的问题？&lt;/p&gt;</description>
      <author>mumuxizzz</author>
      <pubDate>Wed, 11 Oct 2017 14:36:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/34354</link>
      <guid>https://ruby-china.org/topics/34354</guid>
    </item>
  </channel>
</rss>
