<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ryan (ryan)</title>
    <link>https://ruby-china.org/ryan</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>有没有可以自动生成自带响应式设计的富文本编辑器？</title>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;然后 google 后发现在页面前面加个 head 标签，里面写上&lt;/p&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;竟然就有效果了。。。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;作为前端小白，公司需要为管理员页面增加一个富文本编辑器，为客户端提供咨询。希望在通过编辑器里面生成的文字，图片可以自带响应式，因为移动端会用一个 webview 来展示。现在用的 ckeditor 只能生成 html，但是没有响应式，在移动端看到的页面是无法适配屏幕宽度。。。&lt;/p&gt;

&lt;p&gt;所以想来问问有没有好的插件？&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Thu, 23 Apr 2015 12:07:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/25265</link>
      <guid>https://ruby-china.org/topics/25265</guid>
    </item>
    <item>
      <title>为啥 Mac 上 safari 开 ruby china 页面渲染会卡住的</title>
      <description>&lt;p&gt;如题，
有时候 safari 会死掉，
或者进度条在读，但是页面不出来，
或者直接报 graphic problem。。。。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Wed, 07 Jan 2015 11:31:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/23587</link>
      <guid>https://ruby-china.org/topics/23587</guid>
    </item>
    <item>
      <title>gem bunny 在往 rabbitmq 发送的消息很大的时候为何被编码成 base64 且被切割了</title>
      <description>&lt;p&gt;最近项目需要把 mysql 里的数据读出来，序列化成 json，然后发给 rabbitmq，但是数据量庞大，导致 json 的 size 超过 90000，然后发现数据直接变成了乱码。后来发现就是因为数据量过大导致了，通过批量发送解决了问题。&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;send_rabbitmq&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
    &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Bunny&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="ss"&gt;:host&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"xxx.xxx.xxx.xxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:vhost&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="ss"&gt;:user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"abc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:password&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"123"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;

    &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_channel&lt;/span&gt;
    &lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;basic_publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"exchange.x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"routing.key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:payload_encoding&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;sleep&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="但是，现在问题来了："&gt;但是，现在问题来了：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;首先为何 massge 会被 base64 编码（因为我发现乱码如果被 base64 解码的话，就是原始 json 数据，但只是片段，并非全部，因为查看解码后的数据发现 json 明显被一刀切了）&lt;/li&gt;
&lt;li&gt;第二个问题，如果数据量过大，bunny 会自动把数据切割吗？还是服务器 rabbitmq 自动丢弃掉了？&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>ryan</author>
      <pubDate>Wed, 26 Nov 2014 17:45:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/22884</link>
      <guid>https://ruby-china.org/topics/22884</guid>
    </item>
    <item>
      <title>为何对象 new 之后还是 nil。。。。</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2014/d0e5484aff10fb867c7ca01fcdda55f1.png" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2014/728c35ac6f9e436bc1dd84129f082263.png" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2014/45fc08932d7e6056557e0a4c78cd6256.png" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2014/8e20478cbdb8b94747fd5cbe02220a86.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Mon, 27 Oct 2014 13:19:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/22283</link>
      <guid>https://ruby-china.org/topics/22283</guid>
    </item>
    <item>
      <title>升级 Yosemite，大家的蓝牙鼠标挂了吗？</title>
      <description>&lt;p&gt;自从升级了 yosemite，家里两款蓝牙鼠标，microsoft sculpt comfort touch 和 logitech m558，全部无法使用，因为根本匹配不上。只能换回 usb 接收器的无线鼠标。&lt;/p&gt;

&lt;p&gt;国外苹果论坛查询了下，发现很多人出现了此问题，包括 magic mouse 也是连接不正常，各种飘。&lt;/p&gt;

&lt;p&gt;大家有遇到这样的情况吗？这次苹果又挖了个大坑。。。。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Mon, 20 Oct 2014 09:41:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/22127</link>
      <guid>https://ruby-china.org/topics/22127</guid>
    </item>
    <item>
      <title>为何升级 yosemite 之后，iCloud drive setting up 菊花一直在转，转到现在了就是没停下来。</title>
      <description>&lt;p&gt;RT&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Sat, 18 Oct 2014 01:14:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/22100</link>
      <guid>https://ruby-china.org/topics/22100</guid>
    </item>
    <item>
      <title>有人遇到过此类莫名数据丢失问题吗？</title>
      <description>&lt;p&gt;由于最近工作需要，Macbook 一直没有关机，都是盒盖睡眠。
然后今天完成任务了准备重启下机器。
神奇的事情发生了&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;chrome 里面所有的插件全都失效了，图标变成了大叉，去 webstore 上重新安装却被告知都已经安装了无需安装，最后只好手动一个一个删除，再重新安装。&lt;/li&gt;
&lt;li&gt;Dash 的所有文档也没有了，刚刚打开 Dash，竟然要重新全部下载。。。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;关键我啥事情都没干过啊。。为何插件突然没用了，Dash 的文档也都没了呢。。。&lt;/p&gt;

&lt;p&gt;有人遇到过同样的事情吗？&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Fri, 20 Jun 2014 21:23:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/20086</link>
      <guid>https://ruby-china.org/topics/20086</guid>
    </item>
    <item>
      <title>APCN 线路故障，可是为何今天 google 和苹果服务还是很慢。</title>
      <description>&lt;p&gt;前两天出现了所有大陆以外的所有服务速度变慢，ping 丢包严重。可是今天为何 ping 值还是很高。google，github 都很高。开了代理也很慢。&lt;/p&gt;

&lt;p&gt;PING &lt;a href="http://www.google.com" rel="nofollow" target="_blank" title=""&gt;www.google.com&lt;/a&gt; (173.194.127.178): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
64 bytes from 173.194.127.178: icmp_seq=5 ttl=40 time=505.344 ms
Request timeout for icmp_seq 6&lt;/p&gt;

&lt;p&gt;引用 goagent 上的消息：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;24 号凌晨 4 时左右，APCN2 海底光缆发生故障，导致中国出口到日本、韩国、新加坡、台湾、美国线路受到影响，具体表现为延迟升高，丢包率升高。会导致大家访问网站出现故障，游戏丢包等。目前相关机构正在紧急处理此故障，我们也会密切关注事态进展，为大家提供及时有效的信息。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;以下为中国电信发布的集团内部通告：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;集团 NOC 工单系统 (2014032400031), 24 日 4 点 30 分，APCN2 海缆故障，导致中国和美洲之前，中国和日韩之间的大量中继中断，将会影响到用户向这两个方向的访问质量。请各省知晓，做好预处理工作。&lt;/strong&gt;&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Wed, 26 Mar 2014 22:35:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/18195</link>
      <guid>https://ruby-china.org/topics/18195</guid>
    </item>
    <item>
      <title>听说今天电信抽了？</title>
      <description>&lt;p&gt;一回到家就发现，为毛 pad 打不开 app store 了。。。
然后打开电脑一看，itunes store 也打不开了。
再然后用代理打开 google 和 fb，慢的不是一点两点。。。
ping 了下在 google。。。结果。。&lt;img src="//l.ruby-china.com/photo/2014/1ce043fbcf5b6c7f9d694eb6853b3baa.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;最后好不容打开了 goagent 主页，发现了这么一段话：
 &lt;strong&gt;电信目前出国有严重延迟和丢包，请等待恢复或者电话投诉出国线路太慢。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;真是个悲伤的故事。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Mon, 24 Mar 2014 21:47:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/18140</link>
      <guid>https://ruby-china.org/topics/18140</guid>
    </item>
    <item>
      <title>114DNS 又被黑了？</title>
      <description>&lt;p&gt;就在刚刚倒下去睡了一小时的时间后，ruby-china 就打不开了。36kr 打不开了。ipc.me 打不开了。。。但是 weibo.com 打得开的，百度打得开的。&lt;/p&gt;

&lt;p&gt;纠结半天，最后把 dns 从 114 换成电信自己的 dns，一切正常了。再切换回 114，又挂了。&lt;/p&gt;

&lt;p&gt;114dns 又被黑了吗？又没开会。。。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Tue, 21 Jan 2014 16:09:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/16907</link>
      <guid>https://ruby-china.org/topics/16907</guid>
    </item>
    <item>
      <title>Merry Christmas 皆さん</title>
      <description>&lt;p&gt;RT。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Wed, 25 Dec 2013 09:52:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/16405</link>
      <guid>https://ruby-china.org/topics/16405</guid>
    </item>
    <item>
      <title>坛子里有没有做文件云存储的呀？</title>
      <description>&lt;p&gt;最近要搞个针对虚拟机镜像文件的 snapshot 功能。其具体功能就类似于一个对于虚拟机镜像文件的 git 版本控制。。有没有人有经验啊？&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Thu, 28 Nov 2013 15:55:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/15863</link>
      <guid>https://ruby-china.org/topics/15863</guid>
    </item>
    <item>
      <title>又是 CNNIC，这次竟然让战网中招了。。叫我如何吐槽。</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2013/fd8c4724bd9f5b2ed9312743f93ef082.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Fri, 22 Nov 2013 20:12:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/15740</link>
      <guid>https://ruby-china.org/topics/15740</guid>
    </item>
    <item>
      <title>怎么把 Terminal 顶上的 title 给改掉啊？</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/97e3194ae2578bf9141814a835f0be12.png" title="" alt=""&gt;
前手贱了装了个 mac server，从此以后我的 terminal 头就变成了 &lt;code&gt;xxx@server&lt;/code&gt;了，在用某些软件的时候也因此无法打开，说&lt;code&gt;server.local,node name nor servname provided ,or not known&lt;/code&gt;。
有没有办法把这个 terminal title 上的这个给改掉啊？以前我记得应该是 &lt;code&gt;xxx@localhost&lt;/code&gt;，现在这样很蛋疼啊。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Mon, 28 Oct 2013 17:12:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/15094</link>
      <guid>https://ruby-china.org/topics/15094</guid>
    </item>
    <item>
      <title>终于升级 mavericks 了，但是，为什么 google chrome helper 一直未响应</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/9553289944f47b2372b46577649394b3.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;有图有真相，activity monitor 里面关了，然后自己又开了。然后又未响应了。。死循环啊！&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Thu, 24 Oct 2013 10:22:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/14988</link>
      <guid>https://ruby-china.org/topics/14988</guid>
    </item>
    <item>
      <title>一道算法题，大家讨论下。</title>
      <description>&lt;p&gt;&lt;strong&gt;更新 2&lt;/strong&gt;
唉，今天对需求重新分析后发现，极大线性无关不可用。因为最终要的店铺并集，交集不需要，无法用减法来处理矩阵。只好另寻他路。现在重新定义问题：&lt;/p&gt;

&lt;p&gt;现有 n 个向量，a1--an，向量的长度都为 m，向量的元素由 0 和 1 构成。 &lt;code&gt;a1||a2||a3||....||an=[1,1,1,1,1,1.....1]&lt;/code&gt; ，求一组向量 k，以满足， &lt;code&gt;size=count(k)&lt;/code&gt; 最小，且 &lt;code&gt;k1||k2||......||k(size)=[1,1,1,1,1,.....,1]&lt;/code&gt; 。
有没有比较好的算法，而不是死算循环 C(n)(k) 次来得出结果呢？ &lt;/p&gt;

&lt;p&gt;#更新
&lt;strong&gt;还是把实际的需求场景也写下来吧。&lt;/strong&gt;
现在有个爬虫项目是对淘宝上的店铺信息的进行收集。由于每个店铺都会在自己的 &lt;strong&gt;主营&lt;/strong&gt; 列表里面填上自己的主营产品列表，什么女装啊，男装啊之类的。&lt;/p&gt;

&lt;p&gt;假设现在已经完成了数据收集，并且已经把所有的 &lt;strong&gt;主营&lt;/strong&gt; 列表中的关键字和对应的搜索结果进行了分类，比如女装的搜索结果有 10w 家店铺，男装的搜索结果有 20w 家店铺。同时，这俩关键字的搜索结果也是有重复的店铺的。&lt;/p&gt;

&lt;p&gt;所以，现在要从这些关键字中找出一组组合，能够把将现有所有的搜索结果全部囊括进去，而组合中的关键字又尽量的少，但是对这组关键字的搜索结果重复度不做要求。求出这组关键字组合。&lt;/p&gt;

&lt;p&gt;有这么 n 组数据&lt;code&gt;（x1,y1),(x2,y2).....(xn,yn)&lt;/code&gt;，其中 y1,y2,y3...yn 都是一个集合，&lt;code&gt;y1=[z1,z2,z3.....],y2=[z3,z4,z5.....],y3=[z7,z1,z9......]........&lt;/code&gt;，可见，每个 y 集合都有重复数据和不重复数据，且，&lt;code&gt;distinct(y1+y2+y3+....+yn)=U&lt;/code&gt;，也就是，y 的所有不重复数据之和为 U。&lt;/p&gt;

&lt;p&gt;现在，要找出一组 k,，&lt;code&gt;k=1,2,3...n&lt;/code&gt;，以保证这一组 k 所有对应的 x 集合，比如&lt;code&gt;(x3,x10,x55)，则k=3,10,55&lt;/code&gt;，其 yk 的不重复之和，即：&lt;code&gt;distinct(R=y3+y10+y55)&lt;/code&gt;，尽可能的等于 U 或者接近 U，比如，比例是 95% 或者 90%：&lt;code&gt;distinct(y3+y20+y55)==95%*U&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;现在我想出两套算法：
--1.利用机器学习的 k-means 做聚类
--2.利用加权无向图计算每个 x 对应 y 的差异来归类&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;三种算法都尚未实现。只是这么想着，觉得都可用。大家有没有更好的思路。&lt;/p&gt;

&lt;p&gt;如果题目描述不清，请指出，我马上做补充～～&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Thu, 12 Sep 2013 17:26:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/14073</link>
      <guid>https://ruby-china.org/topics/14073</guid>
    </item>
    <item>
      <title>突然发现 Go 语言的 go-china 官网和咱们的官网前身是一家人家的。。</title>
      <description>&lt;p&gt;&lt;a href="http://studygolang.com/" rel="nofollow" target="_blank"&gt;http://studygolang.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我应该做个神马表情。这个语言完全没接触过。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Sat, 31 Aug 2013 15:26:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/13776</link>
      <guid>https://ruby-china.org/topics/13776</guid>
    </item>
    <item>
      <title>百度云网盘 1 块钱 1T 啊。。。这是大出血的节奏吗？</title>
      <description>&lt;p&gt;节操在哪里。&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Thu, 22 Aug 2013 17:24:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/13528</link>
      <guid>https://ruby-china.org/topics/13528</guid>
    </item>
    <item>
      <title> (已解决) 一个 map reduce 的脚本，求和以及求平均值，但是却得到一堆 undefined</title>
      <description>&lt;p&gt;&lt;strong&gt;已解决&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;原来 map reduce 中的 map function 和 reduce function 所返回的结构中的属性名都必须一样。好坑爹啊。。。&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="nx"&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;salary&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nf"&gt;emit&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="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;count&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="na"&gt;salary&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="c1"&gt;//属性名必须和map的emit中一样&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;文档格式是这样的：&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;ObjectId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;52108dddd81bee8dfd61228b&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;name&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;Jobs&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;birth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;ISODate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2001-03-04T09:03:25Z&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;likes&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skills&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;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codeLanguage&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;Ruby&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;level&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
        &lt;span class="p"&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;address&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;city&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;D.C&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;zipCode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;29607&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;salary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2107&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//map func&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;map_func&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;salary&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nf"&gt;emit&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="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//reduce func&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;reduce_func&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&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="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;count&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="na"&gt;total_salary&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;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&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="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;and&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;value&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="nx"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;for &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;i&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="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;reduce_val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total_salary&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="nf"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;reduce_val&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;finalize_func&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&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="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;avg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total_salary&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;reduce_val&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mapReduce&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;map_func&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;reduce_func&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;map_reduce_avg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
                &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skills.1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="na"&gt;$exists&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="na"&gt;finalize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;finalize_func&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;我通过&lt;code&gt;print()&lt;/code&gt;函数发现，reduce 函数中的&lt;code&gt;value[0].salary&lt;/code&gt;只有前 6 次是有值的，之后就全部变成了&lt;code&gt;undefined&lt;/code&gt;的了。。。而这个 6 次又正好和 key 的个数相同。。。我想他们之间一定有联系，只是不明白，为什么第七次开始的 reduce 就全部&lt;code&gt;undefined&lt;/code&gt;了呢。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;1and3222
1and3303
1and2376
1and2721
1and2958
1and3280
16andundefined
13andundefined
21andundefined
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ryan</author>
      <pubDate>Sun, 18 Aug 2013 19:09:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/13416</link>
      <guid>https://ruby-china.org/topics/13416</guid>
    </item>
    <item>
      <title>ruby-china 已经不在盛大云上了啊？</title>
      <description>&lt;p&gt;突然发现右下角的 label 换成了 ucloud，貌似第一次听说这东西，又是 paas 平台吗？&lt;/p&gt;</description>
      <author>ryan</author>
      <pubDate>Tue, 30 Jul 2013 23:01:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/12922</link>
      <guid>https://ruby-china.org/topics/12922</guid>
    </item>
  </channel>
</rss>
