<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>miclle (Miclle Zheng)</title>
    <link>https://ruby-china.org/miclle</link>
    <description>码农，骑公路自行车</description>
    <language>en-us</language>
    <item>
      <title>ROOM.CAFE has been open source under the MIT</title>
      <description>&lt;p&gt;好长时间没有迭代了，放着也是放着，不如开源给大家&lt;/p&gt;
&lt;h3 id="相关主题："&gt;相关主题：&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://ruby-china.org/topics/38512" rel="nofollow" target="_blank"&gt;https://ruby-china.org/topics/38512&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="网站："&gt;网站：&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://room.cafe/" rel="nofollow" target="_blank"&gt;https://room.cafe/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="代码："&gt;代码：&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/aonesuite/room.cafe" rel="nofollow" target="_blank"&gt;https://github.com/aonesuite/room.cafe&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="Product Hunt"&gt;Product Hunt&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/room-cafe" rel="nofollow" target="_blank"&gt;https://www.producthunt.com/posts/room-cafe&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="应用截图："&gt;应用截图：&lt;/h3&gt;
&lt;p&gt;Homepage
&lt;img src="https://l.ruby-china.com/photo/miclle/508aad6b-9365-44c8-98f9-9257c0a6f248.jpg!large" title="" alt="homepage"&gt;&lt;/p&gt;

&lt;p&gt;Feature
&lt;img src="https://l.ruby-china.com/photo/miclle/f9c57afa-55ab-49d6-bdc7-6b76a64634be.jpg!large" title="" alt="feature"&gt;&lt;/p&gt;

&lt;p&gt;Quick start
&lt;img src="https://l.ruby-china.com/photo/miclle/3b1238a2-2d7f-4381-812f-2381151b0337.jpg!large" title="" alt="quickstart"&gt;&lt;/p&gt;

&lt;p&gt;Github OAuth login
&lt;img src="https://l.ruby-china.com/photo/miclle/ca750d81-f1fb-40e5-85c4-075cdb0a75fe.jpg!large" title="" alt="github"&gt;&lt;/p&gt;

&lt;p&gt;Room
&lt;img src="https://l.ruby-china.com/photo/miclle/157739af-9d27-41e0-8d99-6ff4ccff0f1b.jpg!large" title="" alt="room"&gt;&lt;/p&gt;

&lt;p&gt;Invite member
&lt;img src="https://l.ruby-china.com/photo/miclle/1111e8de-c8c1-447b-a9bb-03ca23d1ecef.jpg!large" title="" alt="invite"&gt;&lt;/p&gt;

&lt;p&gt;Settings
&lt;img src="https://l.ruby-china.com/photo/miclle/ad089e7e-b0bf-4259-9746-ffb31cbb7aae.jpg!large" title="" alt="settings"&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Fri, 09 Apr 2021 17:20:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/41137</link>
      <guid>https://ruby-china.org/topics/41137</guid>
    </item>
    <item>
      <title>Room.Cafe </title>
      <description>&lt;p&gt;在线会议、在线教学等场景要保障良好的音视频通话体验，一般都需要安装特定的客户端或使用定制化硬件设备，对最终端客户要求高，出现问题后解决比较困难，体验也比较老旧。&lt;/p&gt;

&lt;p&gt;随着硬件设备性能和网络质量的不断提升，基于浏览器也可以实现轻量化高质量的视频会议。&lt;/p&gt;

&lt;p&gt;Room.Cafe 正是一个在浏览器中使用的线上实时音视频互动平台，并结合了白板、IM、屏幕共享等工具：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;免注册快速创建线上会议室，支持多人音视频通话，在会议室中可随时邀请更多人加入进来；&lt;/li&gt;
&lt;li&gt;互动白板：团队分享想法和创意的绝佳工具，图片、文字、画笔... 丰富你的展示效果&lt;/li&gt;
&lt;li&gt;基于浏览器的应用，可以直接跨系统平台和在移动设备上使用。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://room.cafe" rel="nofollow" target="_blank"&gt;https://room.cafe&lt;/a&gt; 目前处于小范围试用阶段无需付费，欢迎试用。&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sun, 12 May 2019 16:18:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/38512</link>
      <guid>https://ruby-china.org/topics/38512</guid>
    </item>
    <item>
      <title>[上海] 七牛云招聘：前端、后端及全栈开发工程师</title>
      <description>&lt;h2 id="高级前端开发工程师"&gt;高级前端开发工程师&lt;/h2&gt;&lt;h3 id="岗位职责："&gt;岗位职责：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;参与七牛存储与 CDN 产品的前端架构设计及核心代码实现&lt;/li&gt;
&lt;li&gt;参与七牛前端基础工具及框架的设计与实现&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="岗位要求："&gt;岗位要求：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;精通原生 JS 开发，有基于原型和对象模式开发经验&amp;nbsp;&lt;/li&gt;
&lt;li&gt;精通 HTML5/CSS3，至少使用过一种前端框架，如 React、Angular、Backbone、Vue 等&amp;nbsp;&lt;/li&gt;
&lt;li&gt;了解前端模块化开发，前端工程化&amp;nbsp;&lt;/li&gt;
&lt;li&gt;至少掌握一门后端语言，如 Go、Java、Python、Ruby，了解服务端编程&lt;/li&gt;
&lt;li&gt;熟练掌握 git，熟悉多人开发流程&amp;nbsp;&lt;/li&gt;
&lt;li&gt;重视沟通，具备自主的学习能力并能够指导他人&amp;nbsp;&lt;/li&gt;
&lt;li&gt;有责任感、可承受多任务并行的工作压力，有复杂业务系统开发工作经验&amp;nbsp;&lt;/li&gt;
&lt;li&gt;学习能力强，对前端开发有浓厚兴趣&amp;nbsp;
&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="后端开发工程师"&gt;后端开发工程师&lt;/h2&gt;&lt;h3 id="工作职责："&gt;工作职责：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;负责多个云平台产品（存储、CDN、直播等）运营/用户系统的 Web Server 开发&lt;/li&gt;
&lt;li&gt;负责云平台产品 Web 系统架构升级与容器化改造&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="岗位要求："&gt;岗位要求：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;两年以上 Web 服务端开发经验，有 Golang 开发经验者优先&lt;/li&gt;
&lt;li&gt;熟悉 HTTP、TCP/IP 等常见网络协议，有相关网络编程经验&lt;/li&gt;
&lt;li&gt;熟悉常用的数据库（mysql/mongo 等）&lt;/li&gt;
&lt;li&gt;有一定的计算机相关知识基础，计算机相关专业优先&lt;/li&gt;
&lt;li&gt;有良好的编程风格和编写文档的习惯&lt;/li&gt;
&lt;li&gt;有较强的责任心和学习能力，能承受一定工作压力&lt;/li&gt;
&lt;li&gt;有一定的英文文档阅读能力
&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="全栈开发工程师"&gt;全栈开发工程师&lt;/h2&gt;&lt;h3 id="岗位职责："&gt;岗位职责：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;负责七牛存储与 CDN 产品的 Web 服务的研发（含前端及后端）&lt;/li&gt;
&lt;li&gt;参与设计与开发跨产品线的 Web 前后端框架&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="岗位要求："&gt;岗位要求：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;精通 HTML/XHTML、CSS，熟悉页面架构和布局，对Web标准和标签语义化有深入理解；&lt;/li&gt;
&lt;li&gt;熟练使用至少一种主流前端框架，有前端工程化相关经验；&lt;/li&gt;
&lt;li&gt;精通至少一门后台语言，如 Golang（我们的后台语言）、PHP、Python、Ruby 等；&lt;/li&gt;
&lt;li&gt;熟悉 Linux/unix 系统与开发环境，熟悉 HTTP 协议并了解 RESTFUL 规范；&lt;/li&gt;
&lt;li&gt;熟悉至少一种关系型数据库与非关系型数据库；&lt;/li&gt;
&lt;li&gt;三年以上实际项目开发经验
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2 id="福利"&gt;福利&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;薪资 15k-30k、六险一金、绩效奖金、期权激励&lt;/li&gt;
&lt;li&gt;免费健身、弹性工作&lt;/li&gt;
&lt;li&gt;5 天带薪病假、年度体检、年度不少于 12 天的带薪年假
&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="简历投递邮箱： zhengwei@qiniu.com"&gt;简历投递邮箱：zhengwei@qiniu.com&lt;/h2&gt;
&lt;p&gt;七牛云官网：&lt;a href="https://www.qiniu.com/" rel="nofollow" target="_blank"&gt;https://www.qiniu.com/&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2 id="七牛是一家怎样的公司？"&gt;七牛是一家怎样的公司？&lt;/h2&gt;
&lt;p&gt;七牛云是国内领先的以视觉智能和数据智能为核心的企业级云计算服务商，同时也是国内最有特色的智能视频云服务商，累计为 70 多万家企业提供服务，覆盖了国内 80% 网民。围绕富媒体场景推出了对象存储、融合 CDN 加速、容器云、大数据平台、深度学习平台等产品、并提供一站式智能视频云解决方案。为各行业及应用提供可持续发展的智能视频云生态，帮助企业快速上云，创造更广阔的商业价值。&lt;/p&gt;
&lt;h2 id="七牛云文化——简单·可信赖"&gt;七牛云文化——简单·可信赖&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;做一个简单的人&lt;/strong&gt;：以认定方向为坚持目标，以奋斗者为发展根本，坚持劳有所得，多劳多得，赢得员工的信赖。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;做一款简单的产品&lt;/strong&gt;: 以客户为中心，以结果为导向，坚持化繁为简，追求极致，赢得客户的信赖。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;做一家简单的公司&lt;/strong&gt;: 以社会责任为己任，以公司信用为最重要资产，坚持言出必行，诚实守信，赢得社会的信赖。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="七牛云点点滴滴"&gt;七牛云点点滴滴&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2011 年 08 月：七牛云成立&lt;/li&gt;
&lt;li&gt;2011 年 12 月：云平台上线运营&lt;/li&gt;
&lt;li&gt;2012 年 02 月：获得数百万元 A 轮融资，由经纬中国投资&lt;/li&gt;
&lt;li&gt;2012 年 12 月：七牛云著作《Go 语言编程》被评为“2012 年度十大图书之一”&lt;/li&gt;
&lt;li&gt;2013 年 01 月：获得启明创投、经纬中国千万美元 B 轮投资&lt;/li&gt;
&lt;li&gt;2014 年 07 月：存储 2.0 上线，节省单位存储成本 62%&lt;/li&gt;
&lt;li&gt;2014 年 08 月：获得 C 轮数千万美元融资，由宽带资本领投，经纬中国和启明创投跟投&lt;/li&gt;
&lt;li&gt;2014 年 12 月：海外加速服务上线，覆盖全球 31 个国家共 54 个地区&lt;/li&gt;
&lt;li&gt;2015 年 01 月：七牛云对象存储服务通过可信云认证&lt;/li&gt;
&lt;li&gt;2015 年 08 月：基于容器服务技术的数据处理平台正式发布&lt;/li&gt;
&lt;li&gt;2016 年 02 月：完成 D 轮融资，投资方包括方广资本、嘉实投资、张江高科、澳洲电信等知名机构&lt;/li&gt;
&lt;li&gt;2016 年 05 月：移动时代的直播云服务上线&lt;/li&gt;
&lt;li&gt;2016 年 12 月：获得 ISO/IEC 27001:2013 信息安全管理体系认证证书&lt;/li&gt;
&lt;li&gt;2017 年 01 月：智能大数据平台上线，结合七牛云生态，为用户赋能应用大数据的核心能力&lt;/li&gt;
&lt;li&gt;2017 年 04 月：CDN 海外融合上线，融合 Highwinds、Edgecast、CDNetworks 等海外 CDN 厂商。覆盖 6 大洲 100 多个国家&lt;/li&gt;
&lt;li&gt;2017 年 08 月：宣布完成新一轮 10 亿元融资，阿里集团、云锋基金领投&lt;/li&gt;
&lt;li&gt;2017 年 09 月：七牛云人工智能团队勇斩 ACMMM LSVC 竞赛亚军，视频识别能力获国际认可&lt;/li&gt;
&lt;li&gt;2017 年 10 月：七牛云获工信部颁发的 CDN 牌照及云服务牌照&lt;/li&gt;
&lt;li&gt;2018 年 01 月：推出全自研内核跨平台多媒体播放器
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="公司环境"&gt;公司环境&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://dn-group-photos.qbox.me/FvS4_XUTxBId1t7Xx6GhKGQJtkUi?imageView2/1/w/800/h/545/q/80/format/JPG" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://dn-group-photos.qbox.me/liZ5OaVAPiMtRbX1k8VEshvJjmw8?imageView2/1/w/800/h/545/q/80/format/JPG" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://dn-group-photos.qbox.me/lqerAH03J-6sel7fgQJ6T6lhqttY?imageView2/1/w/800/h/545/q/80/format/JPG" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://dn-group-photos.qbox.me/lsX-hF0AT2wUa4zW_HOaxCA29JZ0?imageView2/1/w/800/h/545/q/80/format/JPG" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sun, 10 Jun 2018 23:58:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/36928</link>
      <guid>https://ruby-china.org/topics/36928</guid>
    </item>
    <item>
      <title>ActionView::Template::Error (wrong argument type Integer (expected Proc)) 求解</title>
      <description>&lt;p&gt;日志信息：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I, [2017-01-19T10:34:09.480151 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92] Started GET "/kodo/manual/console-quickstart" for 180.168.57.238 at 2017-01-19 10:34:09 +0800
I, [2017-01-19T10:34:09.481607 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92] Processing by ArticlesController#show as HTML
I, [2017-01-19T10:34:09.481724 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]   Parameters: {"space"=&amp;gt;"kodo", "category"=&amp;gt;"manual", "slug"=&amp;gt;"console-quickstart"}
I, [2017-01-19T10:34:09.492332 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]   Rendering articles/show.html.erb within layouts/application
I, [2017-01-19T10:34:09.667666 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]   Rendered articles/_sidebar.html.erb (174.8ms)
I, [2017-01-19T10:34:09.667793 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]   Rendered articles/show.html.erb within layouts/application (175.3ms)
I, [2017-01-19T10:34:09.667978 #663]  INFO -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92] Completed 500 Internal Server Error in 186ms
F, [2017-01-19T10:34:09.669235 #663] FATAL -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]
F, [2017-01-19T10:34:09.669295 #663] FATAL -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92] ActionView::Template::Error (wrong argument type Integer (expected Proc)):
F, [2017-01-19T10:34:09.669456 #663] FATAL -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]      5:   &amp;lt;div class="doctree"&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]      6:     &amp;lt;%= article_tree(@space, "manual") %&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]      7:     &amp;lt;%= article_tree(@space, "api") %&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]      8:     &amp;lt;%= article_tree(@space, "sdk") %&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]      9:     &amp;lt;%= article_tree(@space, "tools") %&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]     10:     &amp;lt;%= article_tree(@space, "kb") %&amp;gt;
[cb67d56d-ea60-4a42-8476-2f6105bc6f92]     11:     &amp;lt;%= article_tree(@space, "glossary") %&amp;gt;
F, [2017-01-19T10:34:09.669514 #663] FATAL -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92]
F, [2017-01-19T10:34:09.669564 #663] FATAL -- : [cb67d56d-ea60-4a42-8476-2f6105bc6f92] app/helpers/application_helper.rb:55:in `tree'
[cb67d56d-ea60-4a42-8476-2f6105bc6f92] app/helpers/application_helper.rb:30:in `block in article_tree'
[cb67d56d-ea60-4a42-8476-2f6105bc6f92] app/helpers/application_helper.rb:28:in `article_tree'
[cb67d56d-ea60-4a42-8476-2f6105bc6f92] app/views/articles/_sidebar.html.erb:8:in `_app_views_articles__sidebar_html_erb__1127305977640810156_14232180'
[cb67d56d-ea60-4a42-8476-2f6105bc6f92] app/views/articles/show.html.erb:2:in `_app_views_articles_show_html_erb__3239522526908293125_18031560'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;article_tree&lt;/code&gt; helper 方法&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;article_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;space&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nil?&lt;/span&gt;
    &lt;span class="n"&gt;articles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;roots&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;space: &lt;/span&gt;&lt;span class="n"&gt;space&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="n"&gt;articles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;roots&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;space: &lt;/span&gt;&lt;span class="n"&gt;space&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;category: &lt;/span&gt;&lt;span class="s2"&gt;"article-&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&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;if&lt;/span&gt; &lt;span class="n"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;blank?&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;ul&amp;gt;'&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nil?&lt;/span&gt;
    &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s1"&gt;'''
      &amp;lt;li class="branch"&amp;gt;
        &amp;lt;a class="node-title category" href="javascript:;"&amp;gt;
          &amp;lt;span&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;CATES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;/span&amp;gt;
          &amp;lt;i class="icon fa"&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/a&amp;gt;
        &amp;lt;ol&amp;gt;
    '''&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;articles&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;article&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:partial&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'articles/tree'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:locals&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;:article&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;article&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;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nil?&lt;/span&gt;
    &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/ol&amp;gt;&amp;lt;/li&amp;gt;'&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;/ul&amp;gt;'&lt;/span&gt;
  &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;articles/_tree.html.erb&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;blank?&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s1"&gt;'leaf'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'branch'&lt;/span&gt; &lt;span class="cp"&gt;-%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;link_to&lt;/span&gt; &lt;span class="n"&gt;article_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;space: &lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;space&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;category: &lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;category_short&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;slug: &lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="ss"&gt;class: &lt;/span&gt;&lt;span class="s2"&gt;"node-title &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt; &lt;span class="n"&gt;is_active?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slug&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;span class="k"&gt;do&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;content_tag&lt;/span&gt; &lt;span class="ss"&gt;:span&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;locale_title&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;i&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"icon fa fa-2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;blank?&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ol&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&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;article&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
      &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:partial&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"articles/tree"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:locals&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;:article&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ol&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统环境：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ruby 2.4.0p0
rails: 5.0.1
mongoid: 6.0.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面这个异常是偶发的，相同的请求 10 次可能出现 1 次，看最近的日志里面 1208 个请求里面出现了 140 次&lt;/p&gt;

&lt;p&gt;好久不用 Rails 了，实在是没查出来问题原因 &lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DatabaseCleaner/database_cleaner/issues/466" rel="nofollow" target="_blank"&gt;https://github.com/DatabaseCleaner/database_cleaner/issues/466&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;降到 2.3.1 后解决了&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Thu, 19 Jan 2017 10:55:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/32173</link>
      <guid>https://ruby-china.org/topics/32173</guid>
    </item>
    <item>
      <title>FFTS.IO [更新]</title>
      <description>&lt;p&gt;&lt;a href="http://ffts.io/" rel="nofollow" target="_blank"&gt;http://ffts.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fast File Transfer Station.
快速文件中转站，使用七牛云，简单易用！&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/miclle/FFTS" rel="nofollow" target="_blank"&gt;https://github.com/miclle/FFTS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2014/fcf95bf0b583cde9447fa4591d04d43a.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2014/150702142d78c913eeba1ef108657800.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Tue, 07 Oct 2014 22:50:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/21906</link>
      <guid>https://ruby-china.org/topics/21906</guid>
    </item>
    <item>
      <title>AngularJS 初尝新作</title>
      <description>&lt;p&gt;预览地址： &lt;a href="http://qefqei.com/" rel="nofollow" target="_blank"&gt;http://qefqei.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/miclle/qefqei/tree/gh-pages" rel="nofollow" target="_blank"&gt;https://github.com/miclle/qefqei/tree/gh-pages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;真的很简单！&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 08 Sep 2014 13:36:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/21422</link>
      <guid>https://ruby-china.org/topics/21422</guid>
    </item>
    <item>
      <title>Miclle.com 摄影照片分享站  已开源</title>
      <description>&lt;p&gt;Miclle.com 上线很久了，当初做这个小项目的目的主要是练手吧，尝试从前端到后端一个人都弄完。上线后基本没有任何运营，目前用户数和照片数都相当少，精力有限，代码也很久没有更新了，另外如果现在再来做，想法又跟之前的思路不一样了。&lt;/p&gt;

&lt;p&gt;有小伙伴问过我上传功能怎么实现的，还有关于 Semantic-UI 的问题，鉴于此，索性将代码开源出来，提供参考。&lt;/p&gt;

&lt;p&gt;代码不会更新了，代码写得不好的地方欢迎吐槽！&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/miclle/miclle-open-source" rel="nofollow" target="_blank"&gt;https://github.com/miclle/miclle-open-source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/cassiuschen" class="user-mention" title="@cassiuschen"&gt;&lt;i&gt;@&lt;/i&gt;cassiuschen&lt;/a&gt; &lt;a href="/ShayneChow" class="user-mention" title="@ShayneChow"&gt;&lt;i&gt;@&lt;/i&gt;ShayneChow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;关于 jQuery-File-Upload 和 Semantic-UI 都有吐槽的地方
  jQuery-File-Upload 引用文件太多，预览效果依赖 jQuery UI 定制太麻烦
  Semantic-UI 虽说是语义化设计，但不喜欢样式名都要放在 .ui 下，另外 JavaScript 组件太少，而且使用起来不如 bootstrap 的简单，当然 bootstrap 也有吐槽的地方&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sat, 26 Jul 2014 18:01:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/20691</link>
      <guid>https://ruby-china.org/topics/20691</guid>
    </item>
    <item>
      <title>回复过的帖子仍标识为未读状态</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2014/f47000fcab4a05d3b1327c1812addf6c.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Wed, 16 Jul 2014 09:20:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/20512</link>
      <guid>https://ruby-china.org/topics/20512</guid>
    </item>
    <item>
      <title>数据库服务器挂了！</title>
      <description>&lt;p&gt;项目用两台服务器跑，一台跑 Rails 应用，一台跑数据库 (MySQL)。
周六的时候数据库服务器挂了，raid 故障，起不来了 (机器大概用了四年了)，还好数据库每天半夜会备份到应用服务器上，迅速做好数据迁移，应用恢复正常。&lt;/p&gt;

&lt;p&gt;对于这种情况，大家有什么解决方案么？如果跑两个数据库服务，怎么实时同步数据呢？
唉，搞前端的表示这个鸭梨比较大！&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 26 May 2014 10:20:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/19534</link>
      <guid>https://ruby-china.org/topics/19534</guid>
    </item>
    <item>
      <title>Java 和 Ruby On Rails</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/4c1a1c3b41bfe60920ad471d487e1f2b.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://t.cn/8sHcuKf" rel="nofollow" target="_blank"&gt;http://t.cn/8sHcuKf&lt;/a&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Wed, 23 Apr 2014 13:44:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/18792</link>
      <guid>https://ruby-china.org/topics/18792</guid>
    </item>
    <item>
      <title>新开发的读书微信公众号</title>
      <description>&lt;p&gt;“学习微生素”
&lt;img src="//l.ruby-china.com/photo/2014/79c45402d3088542d36e6f9b515695b4.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;3 月 20 号开始注册这个公众号，然后接口开发
应用基于：
ruby 2.1
rails 4.0.4
postgresql
redis
redis-search
sidekiq
unicorn
ratchet&lt;/p&gt;

&lt;p&gt;程序开发相当简单，wap 版站点用 ratchet 也很容易搭建 UI，时间都花在数据收集上，数据从豆瓣获取，通过&lt;code&gt;sidekiq&lt;/code&gt;使用队列去爬了一个星期，大概 300 万图书数据（还没有爬完）&lt;/p&gt;

&lt;p&gt;搜索使用了 &lt;code&gt;redis-search&lt;/code&gt; 相当方便，使用简单，只是建索引的时间有些长：
&lt;code&gt;Indexed 3067047 rows  |  Time spend: 16273.795951065s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;目前账户还在开发中，仅为一个演示版本，微网站中有些连接点击无效&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 31 Mar 2014 23:39:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/18297</link>
      <guid>https://ruby-china.org/topics/18297</guid>
    </item>
    <item>
      <title>什么样的硬件设备在支撑 Stack Overflow？</title>
      <description>&lt;p&gt;原文： &lt;a href="http://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow/" rel="nofollow" target="_blank"&gt;http://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow/&lt;/a&gt;
翻译：伯乐在线 - 蒋生武
译文： &lt;a href="http://blog.jobbole.com/61646/" rel="nofollow" target="_blank"&gt;http://blog.jobbole.com/61646/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;一些统计数据：
负载均衡器接受了 148,084,833 次 HTTP 请求
其中 36,095,312 次是加载页面
833,992,982,627 bytes (776 GB) 的 HTTP 流量用于发送
总共接收了 286,574,644,032 bytes (267 GB) 数据
总共发送了 1,125,992,557,312 bytes (1,048 GB) 数据
334,572,103 次 SQL 查询（仅包含来自于 HTTP 请求的）
412,865,051 次 Redis 请求
3,603,418 次标签引擎请求
耗时 558,224,585 ms (155 hours) 在 SQL 查询上
耗时 99,346,916 ms (27 hours) 在 Redis 请求上
耗时 132,384,059 ms (36 hours) 在标签引擎请求上
耗时 2,728,177,045 ms (757 hours) 在 ASP.Net 程序处理上&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;核心设备&lt;/strong&gt;
如果除去那些多余的设备，以下是 Stack Exchange 运行需要的（保持目前的性能水平）：
2 个 MS SQL 服务器（Stack Overflow 在一台，其他的在另一台，实际上只需一台机器运行还能有富余）
2 个 Web 服务器（或许 3 个吧，不过我有信心 2 个足矣）
1 个 Redis 服务器
1 个标签引擎服务器
1 个 ElasticSearch 服务器
1 个负载均衡器
1 个交换机
1 个 ASA
1 个路由器&lt;/p&gt;

&lt;p&gt;其他内容看文章吧&lt;/p&gt;

&lt;p&gt;——————————
好多内存，好多 SSD...&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 10 Mar 2014 09:30:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/17772</link>
      <guid>https://ruby-china.org/topics/17772</guid>
    </item>
    <item>
      <title>一大早发现这么勤奋的家伙</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/cafb1053648bbb8af4d845167b4e3ee6.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Thu, 13 Feb 2014 08:48:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/17215</link>
      <guid>https://ruby-china.org/topics/17215</guid>
    </item>
    <item>
      <title>Raspberry Pi AirPlay</title>
      <description>&lt;p&gt;家里有套音箱，一直想给折腾变成一个无线音箱，最开始想到的是用蓝牙 (某宝上有现成的接收器)，后来在别的坛子里有人说还不如直接买一个 AirPort Express，或 AirPlay 音箱，而我在想能不能用 Raspberry Pi 做一个 搭一个 AirPlay 接收器呢？&lt;/p&gt;

&lt;p&gt;第一步：
&lt;a href="https://www.google.com.hk/#q=raspberry+pi+airplay" rel="nofollow" target="_blank"&gt;https://www.google.com.hk/#q=raspberry+pi+airplay&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;真有现成的教程：
&lt;a href="http://www.raywenderlich.com/44918/raspberry-pi-airplay-tutorial" rel="nofollow" target="_blank"&gt;http://www.raywenderlich.com/44918/raspberry-pi-airplay-tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;其实过程相当简单：
前面怎么安装配置 Raspberry Pi 的过程都省略掉，你买回来的时候就应该先折腾好了的&lt;/p&gt;

&lt;p&gt;我的 Raspberry Pi 没有用网线，用的是一个小小的 USB 网卡
音频通过 &lt;code&gt;analog&lt;/code&gt; 即耳机孔输出&lt;/p&gt;

&lt;p&gt;安装依赖的库&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp

&lt;span class="nb"&gt;cd &lt;/span&gt;perl-net-sdp
perl Build.PL
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./Build
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./Build &lt;span class="nb"&gt;test
sudo&lt;/span&gt; ./Build &lt;span class="nb"&gt;install
cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装 shairport&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/hendrikw82/shairport.git
&lt;span class="nb"&gt;cd &lt;/span&gt;shairport
make

./shairport.pl &lt;span class="nt"&gt;-a&lt;/span&gt; RayPi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开你的 iOS 设备 或 MAC 就能找到 AirPlay 设备了&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sun, 09 Feb 2014 00:41:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/17128</link>
      <guid>https://ruby-china.org/topics/17128</guid>
    </item>
    <item>
      <title>ruby-china Chrome 下的通知问题</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/ad9e9e0588e4e69b6e51c4d9f2af93a0.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Chrome 下一次就出来三个一样的，其他小伙伴是这样的么？&lt;/p&gt;

&lt;p&gt;Mac OSX 10.9.1
Chrome 32.0.1700.77&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sun, 26 Jan 2014 21:26:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/17012</link>
      <guid>https://ruby-china.org/topics/17012</guid>
    </item>
    <item>
      <title>Miclle.com 摄影照片分享站</title>
      <description>&lt;p&gt;在很久以前想做一个美食网站，里面需要上传图片；
也是在很久以前想做一个骑车活动的网站，里面需要上传图片；
还是在很久以前想做一个相册 (给女儿)，里面需要上传图片；
...
我是想太多了，其实我只是要做一个上传图片的网站 &lt;a href="http://miclle.com/" rel="nofollow" target="_blank"&gt;http://miclle.com/&lt;/a&gt; 
应用基于：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ruby:  2.1.0-p0 
Rails: 4.0.2
MySQL
redis
devise
sidekiq
semantic-ui
unicorn&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;下半年工作太忙，还要带娃、去骑车、做手工... 网站只能陆陆续续的做，而且前端出身，遇到 N 多问题，昨天下午还在调试 redis 与 sidekiq ...&lt;/p&gt;

&lt;p&gt;还有一些功能没做完，大家都来测测先！&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Sat, 25 Jan 2014 02:24:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/16983</link>
      <guid>https://ruby-china.org/topics/16983</guid>
    </item>
    <item>
      <title>七牛 gem 'qiniu-rs'</title>
      <description>&lt;p&gt;项目版本：
rails 4.0.2
ruby 1.9.3p374&lt;/p&gt;

&lt;p&gt;按照 README.md 中的做法，在&lt;code&gt;config/initializers/qiniu-rs.rb&lt;/code&gt;添加了&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Qiniu.establish_connection! :access_key &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'xxxx'&lt;/span&gt;,
                            :secret_key &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'xxxx'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动时报错&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;undefined method `establish_connection!' for Qiniu:Module
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我尝试打印&lt;code&gt;p Qiniu.methods&lt;/code&gt; 确实没有&lt;code&gt;establish_connection!&lt;/code&gt;方法&lt;/p&gt;

&lt;p&gt;在 gem &lt;code&gt;/lib/qiniu/rs.rb&lt;/code&gt;中有这样的代码&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# -*- encoding: utf-8 -*-&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/version'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/conf'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/basic/exceptions'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/basic/utils'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/auth/digest'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/io'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/rs/rs'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'qiniu/rs/tokens'&lt;/span&gt;


&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Qiniu&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;

    &lt;span class="no"&gt;StatusOK&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;establish_connection!&lt;/span&gt; &lt;span class="n"&gt;opts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
      &lt;span class="no"&gt;Qiniu&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Conf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize_connect&lt;/span&gt; &lt;span class="n"&gt;opts&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;测试下来是因为没在完全加载 gem lib 下所有文件，我在另一个 rails 3.2.15 的项目中测试也是同样的问题&lt;/p&gt;

&lt;p&gt;何解？&lt;/p&gt;

&lt;p&gt;&lt;a href="/why404" class="user-mention" title="@why404"&gt;&lt;i&gt;@&lt;/i&gt;why404&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;请教 &lt;a href="/quakewang" class="user-mention" title="@quakewang"&gt;&lt;i&gt;@&lt;/i&gt;quakewang&lt;/a&gt; 是如何使用七牛的？&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 30 Dec 2013 00:11:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/16500</link>
      <guid>https://ruby-china.org/topics/16500</guid>
    </item>
    <item>
      <title>rails-settings-cached get timestamp?</title>
      <description>&lt;p&gt;最近在折腾微信，在发送客服消息时会要求一个 access_token，这个通过微信提供的接口获取，通过 rails-settings-cached 实例化到数据库：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;weixin_access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xxxx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;access_token 有过期时间为 7200 秒，当我更新 access_token 时，我需要拿到上次更新 access_token 的时间，好像 rails-settings-cached 没有提供拿到 updated_at 的方法，&lt;/p&gt;

&lt;p&gt;一。目前我的做法是先拿到那条 Setting 记录，再取更新时间&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;weixin_access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:var&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"weixin_access_token"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
&lt;span class="n"&gt;weixin_access_token&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updated_at&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="no"&gt;Setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;weixin_access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="ss"&gt;:access_token&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="ss"&gt;:expires_in&lt;/span&gt;   &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="ss"&gt;:generated_at&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不过有时候确实也有第一点中那样的需求&lt;/p&gt;

&lt;p&gt;&lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Mon, 23 Dec 2013 22:35:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/16385</link>
      <guid>https://ruby-china.org/topics/16385</guid>
    </item>
    <item>
      <title>The Moneywrap</title>
      <description>&lt;p&gt;在&lt;a href="http://knewone.com/things/the-moneywrap" rel="nofollow" target="_blank"&gt;http://knewone.com/things/the-moneywrap&lt;/a&gt; 上看到这个，觉得很赞就是有点小贵，就自己做了一个&lt;/p&gt;

&lt;p&gt;教程如下：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;某宝淘块皮 (￥60 的皮料可以做三个... 对的就是这个成本)&lt;/li&gt;
&lt;li&gt;中间打个洞 &lt;/li&gt;
&lt;li&gt;拉根橡皮 &lt;/li&gt;
&lt;li&gt;完工！拍照...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;想自己 DIY 的点这里 &lt;a href="http://item.taobao.com/item.htm?id=22378987407" rel="nofollow" target="_blank"&gt;http://item.taobao.com/item.htm?id=22378987407&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/lilu" class="user-mention" title="@lilu"&gt;&lt;i&gt;@&lt;/i&gt;lilu&lt;/a&gt; &lt;a href="/jasl" class="user-mention" title="@jasl"&gt;&lt;i&gt;@&lt;/i&gt;jasl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2013/f3537747728c336e2b8ce38385b5dcb4.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/059d6d095d470afc87490479661cbadd.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2013/3ad99e6269ad6305fd84ba3accc16cf9.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/0e65d220e2f35f669f35b185dca70a1a.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/fed9d0c55a825c1bdadf407eadd8e4f6.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/79a93a937dbb5fcac16552ecee321529.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/7c708b5772e70a8730c7568eb066e582.jpg" title="" alt=""&gt;
&lt;img src="//l.ruby-china.com/photo/2013/25c4db4332092b9601f3beb71aec824c.jpg" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Wed, 11 Dec 2013 14:56:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/16140</link>
      <guid>https://ruby-china.org/topics/16140</guid>
    </item>
    <item>
      <title>求助 Error running '__rvm_make -j16'</title>
      <description>&lt;p&gt;在用 rvm 安装 ruby 时一直出现&lt;code&gt;Error running '__rvm_make -j16',&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rvm &lt;span class="nb"&gt;install &lt;/span&gt;2.0.0 &lt;span class="nt"&gt;--debug&lt;/span&gt;

...

&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;: __rvm_post_configure_ruby
ruby-2.0.0-p353 - &lt;span class="c"&gt;#post-configuration&lt;/span&gt;
Log file: /home/healthier/.rvm/log/1385723430_ruby-2.0.0-p353/make.log
&lt;span class="o"&gt;[&lt;/span&gt;2013-11-29 19:11:11] __rvm_make
__rvm_make &lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="se"&gt;\m&lt;/span&gt;ake &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
current path: /home/healthier/.rvm/src/ruby-2.0.0-p353
&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;2&lt;span class="o"&gt;)&lt;/span&gt;: __rvm_make &lt;span class="nt"&gt;-j16&lt;/span&gt;
ruby-2.0.0-p353 - &lt;span class="c"&gt;#compiling...............&lt;/span&gt;
Error running &lt;span class="s1"&gt;'__rvm_make -j16'&lt;/span&gt;,
please &lt;span class="nb"&gt;read&lt;/span&gt; /home/healthier/.rvm/log/1385723430_ruby-2.0.0-p353/make.log
There has been an error &lt;span class="k"&gt;while &lt;/span&gt;running make. Halting the installation.
__rvm_rm_rf already gone: /home/healthier/.rvm/tmp/28891&lt;span class="k"&gt;*&lt;/span&gt;
healthier@ubuntu:~&lt;span class="err"&gt;$&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ubuntu 11.04
rvm 1.24.6 (stable)&lt;/p&gt;</description>
      <author>miclle</author>
      <pubDate>Fri, 29 Nov 2013 19:17:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/15891</link>
      <guid>https://ruby-china.org/topics/15891</guid>
    </item>
  </channel>
</rss>
