<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>1c7 (Cheng Zheng)</title>
    <link>https://ruby-china.org/1c7</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>（已失效）[远程 + 兼职] 奇绩创坛招聘全栈工程师 (2022 年下半年计划招聘 1-2 位)</title>
      <description>&lt;h2 id="我们是谁？"&gt;我们是谁？&lt;/h2&gt;
&lt;p&gt;奇绩创坛投资加速早期科创企业，目前已经形成国内最大的早期技术项目社区。&lt;br&gt;
  奇绩有自己的技术团队，通过技术提效，帮助到更多的创业者。&lt;br&gt;
  更多信息请访问：&lt;a href="https://www.miracleplus.com/about/" rel="nofollow" target="_blank"&gt;https://www.miracleplus.com/about/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="招聘岗位"&gt;招聘岗位&lt;/h2&gt;
&lt;p&gt;全栈工程师（兼职）（远程）（人数：1-2 位）&lt;/p&gt;
&lt;h2 id="工作职责："&gt;工作职责：&lt;/h2&gt;
&lt;p&gt;每周兼职工作 10+ 小时
  奇绩系统全栈开发，但大部分偏前端工作，后端不复杂&lt;/p&gt;
&lt;h2 id="会接触哪些技术："&gt;会接触哪些技术：&lt;/h2&gt;
&lt;p&gt;Ruby on Rails, Vue.js, React.js, AWS, 微信小程序，GraphQL。&lt;/p&gt;
&lt;h2 id="工作优势："&gt;工作优势：&lt;/h2&gt;
&lt;p&gt;工作时间灵活。可以远程，也可以来北京五道口办公。&lt;br&gt;
  能够接触到不少优秀创业者和项目，有国内最优秀的早期技术创业者社区。&lt;br&gt;
  与创业一样，练习和见证从 0 到 1 的技术建设。  &lt;/p&gt;
&lt;h2 id="职位要求："&gt;职位要求：&lt;/h2&gt;
&lt;p&gt;有很强的前端实战和运维经验。&lt;br&gt;
  熟悉 Ruby on Rails 和前端。&lt;br&gt;
  有较强的自我驱动力。  &lt;/p&gt;
&lt;h2 id="如果有兴趣，简历可以发至 hiring@miracleplus.com"&gt;如果有兴趣，简历可以发至 hiring@miracleplus.com&lt;/h2&gt;</description>
      <author>1c7</author>
      <pubDate>Sat, 23 Jul 2022 12:42:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/42540</link>
      <guid>https://ruby-china.org/topics/42540</guid>
    </item>
    <item>
      <title>（已失效）[兼职 远程] 奇绩创坛招聘全栈工程师 (此为 2022 年春节前后发的帖子，现已失效）</title>
      <description>&lt;h2 id="奇绩创坛的介绍"&gt;奇绩创坛的介绍&lt;/h2&gt;
&lt;p&gt;奇绩创坛主要投资早期公司，创业者可以登录我们的网站在线填表申请。&lt;br&gt;
奇绩投资 30 万美金（或等值人民币），换取 7% 的股份。&lt;br&gt;
除了投资之外我们手把手指导创业者，&lt;br&gt;
奇绩一年有两期创业营，春季一期秋季一期。最新一期是 2022 年春季创业营。&lt;br&gt;
入营的项目可以预约时间和奇绩合伙人（陆奇，栾运明、毛圣博、曹勖文等合伙人）&lt;br&gt;
完全针对自己公司当期遇到的问题进行针对性的、一对一讨论，解决具体的问题。&lt;br&gt;
最近 2 年投了 160 个项目，以后每一届都要投 100 个（因为量很大，所以招生，筛选工作都需要软件辅助）
更多信息请访问：&lt;a href="https://www.miracleplus.com/about/" rel="nofollow" target="_blank"&gt;https://www.miracleplus.com/about/&lt;/a&gt;  &lt;/p&gt;
&lt;h2 id="招聘岗位"&gt;招聘岗位&lt;/h2&gt;
&lt;p&gt;全栈工程师（兼职）（远程）（人数：1 位）&lt;/p&gt;
&lt;h2 id="工作职责："&gt;工作职责：&lt;/h2&gt;
&lt;p&gt;每周兼职工作 10+ 小时，&lt;br&gt;
奇绩系统全栈开发，但大部分偏前端工作，后端不复杂。   &lt;/p&gt;
&lt;h2 id="工作优势："&gt;工作优势：&lt;/h2&gt;
&lt;p&gt;工作时间灵活。可以远程，也可以来中关村办公&lt;br&gt;
能够接触到不少优秀创业者和项目，有国内最优秀的早期技术创业者社区&lt;br&gt;
与创业一样，练习和见证从 0 到 1 的技术建设  &lt;/p&gt;
&lt;h2 id="职位要求："&gt;职位要求：&lt;/h2&gt;
&lt;p&gt;有很强的前端实战和运维经验&lt;br&gt;
熟悉 Ruby on Rails 和前端&lt;br&gt;
有较强的自我驱动力  &lt;/p&gt;
&lt;h2 id="会接触哪些技术："&gt;会接触哪些技术：&lt;/h2&gt;
&lt;p&gt;Ruby on Rails, Vue.js, React.js, AWS, 微信小程序，GraphQL。  &lt;/p&gt;
&lt;h2 id="招聘时间安排"&gt;招聘时间安排&lt;/h2&gt;
&lt;p&gt;对此岗位感兴趣的朋友们，现在是 2022 年 1 月中旬，还有小半个月就过年了，&lt;br&gt;
年前如果有空可以来聊聊，没空也没关系，如果年前没招满年后我们会继续招聘。  &lt;/p&gt;
&lt;h2 id="其他信息"&gt;其他信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;这次先招 1 个，下一次招聘可能多招几个。&lt;/li&gt;
&lt;li&gt;我们目前一共 5 位工程师（包括我一共 5 位）都是远程。&lt;/li&gt;
&lt;li&gt;我叫郑诚，是 2020 年 2 月份入职的工程师，到现在 2022 年 1 月差不多 23 个月了（快 2 年了）&lt;/li&gt;
&lt;li&gt;面试第一轮会先和我谈谈，然后第二轮和我老板谈，最终的招聘决策由我老板决定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="有任何其他问题请留言我会尽快回复"&gt;有任何其他问题请留言我会尽快回复&lt;/h2&gt;&lt;h2 id="如果有兴趣，简历可以发至 chengzheng@miracleplus.com"&gt;如果有兴趣，简历可以发至 chengzheng@miracleplus.com&lt;/h2&gt;
&lt;p&gt;(标注"来自 RubyChina"）&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 13 Jan 2022 19:31:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/42077</link>
      <guid>https://ruby-china.org/topics/42077</guid>
    </item>
    <item>
      <title>有没有用过 Authing 做身份管理（注册登录）的朋友分享一下使用体验？</title>
      <description>&lt;p&gt;现在是 2021 年 4 月 21 号，以下信息仅代表当前时间点（以后的情况可能不同）&lt;/p&gt;
&lt;h3 id="如题，Authing 指的是："&gt;如题，Authing 指的是：&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.authing.cn/" rel="nofollow" target="_blank"&gt;https://www.authing.cn/&lt;/a&gt;&lt;br&gt;
（不是打广告）&lt;/p&gt;
&lt;h3 id="目的：要用这个做身份管理"&gt;目的：要用这个做身份管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用它的原因：上级要求用 Authing&lt;/li&gt;
&lt;li&gt;也就是说要在  Rails 中替代掉 devise gem 这样的工具（当然 User Model 还是要建的，这个省不了）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="实际调研发现："&gt;实际调研发现：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Ruby SDK 不能用，所以需要自己实现一个 SDK（官方回复是：你好，收到反馈，ruby 的用户比例较少，当前确实较少维护。我们建议和社区一起做一下，如果您有兴趣参与，我们会非常感激）&lt;/li&gt;
&lt;li&gt;如果自己做 SDK，当然只能用 API  实现，官方在 &lt;a href="https://docs.authing.cn/v2/guides/authentication/basic/password/" rel="nofollow" target="_blank" title=""&gt;这一页文档 (使用账号密码认证)&lt;/a&gt; 写着：&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Authing 提供 RESTFul 和 GraphQL 两种形式的 API 以及 10 余种语言或框架的 SDK，你可以基于此自定义 UI 和认证流程。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;我到处都找不到 RESTful API  的文档，问了官方（直接微信上问）&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;回复 1：restful 调试器还没上线，需要等一等。建议先用 graphql，&lt;a href="https://core.authing.cn/graphql" rel="nofollow" target="_blank"&gt;https://core.authing.cn/graphql&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;回复 2：另外建议，如果用 graphql，请参考 js sdk 的写法，目前纯用 gql 的文档也没上线&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="所以结论是："&gt;所以结论是：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;我得先学一下 GraphQL &lt;/li&gt;
&lt;li&gt;我得自己做个 SDK（在项目里直接写一大堆发 GraphQL 请求的 HTTP 请求也不是不行，慢慢优化呗）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="问题："&gt;问题：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;社区里有没有人用过 Authing？&lt;/li&gt;
&lt;li&gt;如果有，体验如何？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>1c7</author>
      <pubDate>Wed, 21 Apr 2021 23:11:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/41179</link>
      <guid>https://ruby-china.org/topics/41179</guid>
    </item>
    <item>
      <title>[Serverless] 发现一个写 Serverless 的框架 叫 Ruby on Jets</title>
      <description>&lt;h2 id="先上重点：Ruby on Jets 的地址"&gt;先上重点：Ruby on Jets 的地址&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://rubyonjets.com/" rel="nofollow" target="_blank"&gt;https://rubyonjets.com/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="补一个官方视频"&gt;补一个官方视频&lt;/h2&gt;
&lt;p&gt;&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//www.youtube.com/embed/a0VKbrgzKso" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="这篇文的目的"&gt;这篇文的目的&lt;/h2&gt;
&lt;p&gt;看看社区里有没有小伙伴试过 Serverless，感想是什么&lt;/p&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;最近学 Serverless 一直在用 serverless.com 提供的框架   &lt;a href="https://serverless.com/" rel="nofollow" target="_blank"&gt;https://serverless.com/&lt;/a&gt;&lt;br&gt;
好奇搜了下有没有类似 Ruby on Rails 的玩意（想方便一点）&lt;br&gt;
结果找到一个 "Ruby on Jets"
&lt;a href="https://rubyonjets.com/" rel="nofollow" target="_blank"&gt;https://rubyonjets.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;搜了下 Ruby China 社区，发现没有帖子提到过这个。&lt;br&gt;
所以发这篇帖子看看能不能激发点对 Serverless 的讨论。&lt;/p&gt;

&lt;p&gt;总之我也是新手，Serverless 新手 + Ruby on Jets 新手。&lt;/p&gt;
&lt;h2 id="目前对 Serverless 的一些浅见"&gt;目前对 Serverless 的一些浅见&lt;/h2&gt;&lt;h3 id="优点:"&gt;优点：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;更简单了，比搞 Docker / k8s 更简单了&lt;/li&gt;
&lt;li&gt;价格非常低，不再是每月固定支出服务器费用了&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="缺点:"&gt;缺点：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Serverless.com 提供的框架写 YML 还是蛮不习惯的，不过也没更好的办法了（其实折腾 docker 和 k8s 也是写 yml）毕竟别人想办法提供 provider agnostic 了&lt;/li&gt;
&lt;li&gt;交出去的控制权更多了，vendor lock-in 情况更严重了。不是把 docker container 换个云服务来跑就完事了。&lt;/li&gt;
&lt;li&gt;要求 latency 非常低的应用不太合适&lt;/li&gt;
&lt;li&gt;学习成本还是有一些的&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="我还没搞懂的地方:"&gt;我还没搞懂的地方：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;如果要做一个比较完整的 web 应用，代码结构要怎么组织&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="服务商:"&gt;服务商：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt; 目前 AWS, Google, 阿里云，腾讯云，Azure 等几个服务商支持 Serverless &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="实际使用:"&gt;实际使用：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;如果是选 AWS, 看起来是 API Gateway(API 网址) + Lambda(函数执行) +  DynamoDB(No-SQL 数据库)/AWS Aurora(SQL 数据库) 这样拼出来。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="使用场景"&gt;使用场景&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://serverless.com/learn/use-cases/" rel="nofollow" target="_blank"&gt;https://serverless.com/learn/use-cases/&lt;/a&gt;&lt;br&gt;
他们介绍得挺好的我就不重复了。        &lt;/p&gt;

&lt;p&gt;总之我的目的是：看看怎么做个后端 API 最简单。成本最低。反正我只需要 2 个 API Endpoint。         &lt;/p&gt;

&lt;p&gt;背景信息：&lt;br&gt;
最近我写了个桌面应用 (Electron.js)，打算做成收费版的（避免有广告嫌疑就不贴地址了）&lt;/p&gt;

&lt;p&gt;针对国外：用 Gumroad 收款。激活用 Gumroad 自带的 激活码 (License code) 功能。&lt;br&gt;
针对国内：打算用 Xorpay，支付成功后会回调我的 API 生成 激活码 (License code)&lt;/p&gt;

&lt;p&gt;用户流程：用户购买时提供一个邮箱地址。Xorpay 回调告诉我支付成功了。&lt;br&gt;
我就把 邮箱地址 + 激活码 这个组合存起来 (这其实就相当于账户密码了)&lt;br&gt;
用户激活时会发一个请求到我的 API 检查是否合法。如果数据库里有这个组合，就是有效的。&lt;/p&gt;
&lt;h2 id="简单总结 Serverless"&gt;简单总结 Serverless&lt;/h2&gt;
&lt;p&gt;又多了一个趁手的工具。需要简单 + 成本低的场景比较适用。更大的场景我不了解。           &lt;/p&gt;
&lt;h2 id="欢迎小伙伴提出对 Serverless 的看法/实际使用的感想/等"&gt;欢迎小伙伴提出对 Serverless 的看法/实际使用的感想/等&lt;/h2&gt;</description>
      <author>1c7</author>
      <pubDate>Mon, 06 Jan 2020 13:38:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/39408</link>
      <guid>https://ruby-china.org/topics/39408</guid>
    </item>
    <item>
      <title>大家在 Rails 的基础上是怎么进一步提升开发效率的？</title>
      <description>&lt;h3 id="重点"&gt;重点&lt;/h3&gt;
&lt;p&gt;想问大家用了哪些 方法/工具/流程/魔法 来尽可能提升开发效率&lt;/p&gt;
&lt;h3 id="目前我的开发流程："&gt;目前我的开发流程：&lt;/h3&gt;
&lt;p&gt;（一个 Rails API 后端项目，前端有 Vue/微信小程序，前后端只用 JSON API 交互，暂无 GraphQL）&lt;/p&gt;

&lt;p&gt;当我需要实现/修改一个功能时：   &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;思考需不需要新字段或者新表，然后用 &lt;code&gt;rails g migration&lt;/code&gt; / &lt;code&gt;rails g model&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;给 Model 写 &lt;code&gt;has_one&lt;/code&gt;, &lt;code&gt;has_many&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;写 route&lt;/li&gt;
&lt;li&gt;写 controller 代码&lt;/li&gt;
&lt;li&gt;发 HTTP 请求看对不对，不对就继续改，改到对为止。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;（目前暂未使用 TDD 工作流）&lt;/p&gt;
&lt;h3 id="题外话"&gt;题外话&lt;/h3&gt;
&lt;p&gt;最近看了点 TDD 的视频，以下这个蛮搞笑的：&lt;/p&gt;

&lt;p&gt;&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//www.youtube.com/embed/a6oP24CSdUg" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2019/f83b1976-8458-473c-aae5-465dd6af41b1.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2019/031b9b65-fb94-4dee-a01b-0d0ca309e7a6.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;上下文：视频时间点 00:55 说 TDD 社区有种 shame shame shame 的做法。不用 TDD 就羞辱你哈哈。&lt;/p&gt;
&lt;h3 id="补充说明（感谢Rei指出）："&gt;补充说明（感谢 Rei 指出）：&lt;/h3&gt;
&lt;p&gt;以上提到 TDD 的视频 &lt;strong&gt;不是反 TDD&lt;/strong&gt;。
意义是说我做过一些功课，但是只是刚开始看，但还没有太多了解。&lt;/p&gt;
&lt;h2 id="问题：如何进一步提升开发效率？"&gt;问题：&lt;strong&gt;如何进一步提升开发效率？&lt;/strong&gt;
&lt;/h2&gt;
&lt;p&gt;大家目前的开发流程是怎样的？
（我不是指什么瀑布流/敏捷开发那样的哲学，是指更具体的做事步骤）&lt;/p&gt;
&lt;h4 id="补充：生产力/效率的意思是"&gt;补充：生产力/效率的意思是&lt;/h4&gt;
&lt;p&gt;原先写代码可能要 4 个小时做完的事情，提升生产力之后可能 2-3 个小时就能做完。    &lt;/p&gt;

&lt;p&gt;很准确的"生产力/效率"的定义我也没有，
简单说就是加快做事情的速度，省下的时间可以做别的。     &lt;/p&gt;

&lt;p&gt;（补充这个是因为，在群聊里有人问”生产力在这个上下文里的具体定义是什么？“）&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Fri, 22 Feb 2019 12:29:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/38135</link>
      <guid>https://ruby-china.org/topics/38135</guid>
    </item>
    <item>
      <title>请问大家的 CI/CD 方案 (测试 / 部署方案) 使用的是什么流程？Docker+Drone+Swarm？</title>
      <description>&lt;h4 id="之前的经历"&gt;之前的经历&lt;/h4&gt;
&lt;p&gt;之前用 Rails 做小项目就直接  Rails (puma) + Nginx 扔到服务器上&lt;br&gt;
（是的，安装依赖花了 10-20 分钟）&lt;br&gt;
没有用 Docker/Heroku 或任何其他方便部署的东西。     &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;例子 1：&lt;a href="https://yuzhu.me/" rel="nofollow" target="_blank"&gt;https://yuzhu.me/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;例子 2：&lt;a href="https://www.coolapk.com/apk/com.crashcourse.china.c17" rel="nofollow" target="_blank"&gt;https://www.coolapk.com/apk/com.crashcourse.china.c17&lt;/a&gt;&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;（非广告）&lt;/p&gt;

&lt;p&gt;没怎么写测试（RSpec/单元测试)。&lt;br&gt;
而 0 downtime 要么靠 puma 的 phashed_restart 要么 nginx 的 load balancer。&lt;br&gt;
日志和监控什么的也没有太在意。&lt;/p&gt;

&lt;p&gt;这一段的重点是：现有的流程不但原始（只适合小项目），而且也不够方便。这个流程需要改进。&lt;/p&gt;
&lt;h4 id="遇到了什么问题"&gt;遇到了什么问题&lt;/h4&gt;
&lt;p&gt;最近在忙的项目，用户逐渐变多，不再是小项目了，在往中小型项目发展。&lt;br&gt;
技术栈：Ruby on Rails 做 JSON API 后端，微信小程序作为前端。（不方便给具体信息，不贴小程序码了，见谅）   &lt;/p&gt;

&lt;p&gt;一方面希望方便 scale&lt;br&gt;
另一方面希望工作流能方便一些。git push 之后自动部署，或者，在最后一步手动点按钮触发部署。              &lt;/p&gt;

&lt;p&gt;这一段的重点是：改进流程迫在眉睫，不能再推了&lt;/p&gt;
&lt;h4 id="调查后的结果"&gt;调查后的结果&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;为了解决环境不一致，以及部署很麻烦需要手动安装软件的问题：Docker&lt;/li&gt;
&lt;li&gt;为了方便 Scale：Docker Swarm / Kubenetes&lt;/li&gt;
&lt;li&gt;为了 CI/CD：Gitlab CI / Travis CI / Circle CI / Drone.io / 等等&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="目前在尝试的流程（Workflow）"&gt;目前在尝试的流程（Workflow）&lt;/h4&gt;
&lt;p&gt;Gitlab -&amp;gt; Drone.io -&amp;gt; Docker swarm&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gitlab 纯粹代码托管，不用它的 CI 功能&lt;/li&gt;
&lt;li&gt;Drone.io 负责 CI/CD。（说明：Drone.io 需要部署到自己的服务器上。在和 Gitlab 配置之后，Gitlab 会有 web hook 即时告知 Drone.io）&lt;/li&gt;
&lt;li&gt;Docker swarm 负责部署。看了一些资料说 Kubenetes 学习曲线较为陡峭，实际试过了也发现的确是的，时间不够，不能折腾 Kubenetes 了，先 Swarm 也够了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="问题"&gt;问题&lt;/h4&gt;&lt;h3 id="大家都是用什么 CI/CD 流程?"&gt;大家都是用什么 CI/CD 流程？&lt;/h3&gt;&lt;h3 id="从 git push 到代码 live，总共要多久？1/3/5分钟？"&gt;从 git push 到代码 live，总共要多久？1/3/5 分钟？&lt;/h3&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 24 Jan 2019 13:52:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/38038</link>
      <guid>https://ruby-china.org/topics/38038</guid>
    </item>
    <item>
      <title>一次性的倒计时任务 (由用户触发) 用 Sidekiq perform_in 是个好方法吗？</title>
      <description>&lt;h3 id="业务要求："&gt;业务要求：&lt;/h3&gt;
&lt;p&gt;用户出价竞拍产品，&lt;br&gt;
  比如 用户 1 竞拍产品 A，开始 6 个小时倒计时。6 个小时过去之后那么用户 1 就获得了产品 A。&lt;br&gt;
  用户 2 用户 3 也可以竞拍，新竞拍会重新开始 6 小时倒计时。     &lt;/p&gt;
&lt;h3 id="举例："&gt;举例：&lt;/h3&gt;
&lt;p&gt;用户 1 花了 100 元竞拍产品 A，6 小时倒计时开始，&lt;br&gt;
  在剩下 5 小时（或任何其他时间）的时候，用户 2 花了 150 元竞拍产品 A，倒计时重置 6 小时。&lt;br&gt;
  6 小时过后用户 2 获得产品（因为期间没有其他人出价来重置倒计时了）       &lt;/p&gt;

&lt;p&gt;发文前的功课：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/32162" title=""&gt;Rails 最佳实践 - 定时任务 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/14039" title=""&gt;求一个定时任务的解决方案 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hooopo.iteye.com/blog/757760" rel="nofollow" target="_blank" title=""&gt;一个简单的 delay server - https://db-china.org - ITeye 博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/29407" title=""&gt;异步定时任务 Sidekiq Whenever 问题 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/9690" title=""&gt;crontab 执行 ruby 脚本 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/29074" title=""&gt;服务器上的周期性任务大家都习惯用什么来实现呢？ · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/32154" title=""&gt;Sidekiq 定时任务的尝试 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这些讨论多以周期任务为主。一次性任务讨论不多。&lt;/p&gt;
&lt;h3 id="问题："&gt;问题：&lt;/h3&gt;
&lt;p&gt;用 sidekiq perform_in 做这种一次性任务是个好的解决方案吗？是否有更方便更可靠的方案？&lt;br&gt;
  (perform_in 的文档地址： &lt;a href="https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs" rel="nofollow" target="_blank"&gt;https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs&lt;/a&gt;)&lt;br&gt;
  时间到了之后就触发一些代码：发邮件通知。修改 record 状态。等           &lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 24 Jan 2019 13:26:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/38037</link>
      <guid>https://ruby-china.org/topics/38037</guid>
    </item>
    <item>
      <title>无缝部署 (0 down time deploy) 的正确姿势是什么？大家是怎么部署新 Rails 代码上线的？</title>
      <description>&lt;h2 id="0. 环境"&gt;0. 环境&lt;/h2&gt;
&lt;p&gt;Puma + Mina + Rails 5.2 + Ubuntu 16.04&lt;/p&gt;
&lt;h2 id="1. 期望"&gt;1. 期望&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;部署新代码期间网站依然可用&lt;/strong&gt;，而不是卡 10-30 秒&lt;br&gt;
发帖子前我谷歌查了半天依然搞不定，想看看大家的做法。&lt;br&gt;
目前服务器我用的是 Puma。phased_restart 已经配置了&lt;br&gt;
用了 &lt;code&gt;mina-puma&lt;/code&gt; gem：&lt;a href="https://github.com/untitledkingdom/mina-puma" rel="nofollow" target="_blank"&gt;https://github.com/untitledkingdom/mina-puma&lt;/a&gt; &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mina puma:phased_restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;跑如上命令也毫无问题。结果如下图：
&lt;img src="https://l.ruby-china.com/photo/2018/6521bb7d-fb29-492e-8132-14877b7c17a0.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2018/cd3aa7fc-bae8-41de-9a96-b6e7fa3ecd36.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="2. 实际结果"&gt;2. 实际结果&lt;/h2&gt;
&lt;p&gt;phased_restart 期间，网站有 10 秒 -30 秒不响应&lt;/p&gt;
&lt;h2 id="3. 问题"&gt;3. 问题&lt;/h2&gt;
&lt;p&gt;大家是怎么做无缝部署的？（0 downtime deploy）&lt;br&gt;
如果有人用 puma 实现过无缝部署，能分享下经验吗？&lt;/p&gt;
&lt;h3 id="4. 贴 2 个文件"&gt;4. 贴 2 个文件&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt; &lt;code&gt;config/deploy.rb&lt;/code&gt;（Mina） &lt;/li&gt;
&lt;li&gt; &lt;code&gt;config/puma.rb&lt;/code&gt;（Puma 配置文件)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="config/deploy.rb"&gt;config/deploy.rb&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rails'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/git'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rvm'&lt;/span&gt;    &lt;span class="c1"&gt;# for rvm support. (https://rvm.io)&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/puma'&lt;/span&gt;  &lt;span class="c1"&gt;# https://github.com/untitledkingdom/mina-puma&lt;/span&gt;

&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:application_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'因隐私原因删除掉原有值'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'因隐私原因删除掉原有值'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:deploy_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'因隐私原因删除掉原有值'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:repository&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'因隐私原因删除掉原有值'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:branch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'master'&lt;/span&gt;

&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ubuntu'&lt;/span&gt;          &lt;span class="c1"&gt;# Username in the server to SSH to.&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'22'&lt;/span&gt;           &lt;span class="c1"&gt;# SSH port number.&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:forward_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;     &lt;span class="c1"&gt;# SSH forward_agent.&lt;/span&gt;

&lt;span class="c1"&gt;# For mina-puma&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:pumactl_socket&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/tmp/witt.sock'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:puma_state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"/var/www/witticism.com/shared/tmp/sockets/puma.state"&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:puma_pid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"/var/www/witticism.com/shared/tmp/pids/puma.pid"&lt;/span&gt;

&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:remote_environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rvm:use'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ruby-2.4.1@default'&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s2"&gt;"Deploys the current version to the server."&lt;/span&gt;
&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'git:clone'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:link_shared_paths'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'bundle:install'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:db_migrate'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:cleanup'&lt;/span&gt;

    &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="ss"&gt;:launch&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;in_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:current_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{mkdir -p tmp/}&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{touch tmp/restart.txt}&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;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="config/puma.rb"&gt;config/puma.rb&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;bind&lt;/span&gt; &lt;span class="s2"&gt;"unix:///tmp/witt.sock"&lt;/span&gt;

&lt;span class="n"&gt;threads_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'RAILS_MAX_THREADS'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;threads&lt;/span&gt; &lt;span class="n"&gt;threads_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;threads_count&lt;/span&gt;
&lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"RAILS_ENV"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;app_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"witticism.com"&lt;/span&gt;
&lt;span class="n"&gt;app_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expand_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"../.."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;app_dir_parent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expand_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"../../"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;application_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;app_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;pidfile&lt;/span&gt; &lt;span class="s2"&gt;"/var/www/witticism.com/shared/tmp/pids/puma.pid"&lt;/span&gt;
&lt;span class="n"&gt;state_path&lt;/span&gt; &lt;span class="s2"&gt;"/var/www/witticism.com/shared/tmp/sockets/puma.state"&lt;/span&gt;

&lt;span class="n"&gt;workers&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"WEB_CONCURRENCY"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;before_fork&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connection_pool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect!&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="k"&gt;defined?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;on_worker_boot&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;establish_connection&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="k"&gt;defined?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;ActiveRecord&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;</description>
      <author>1c7</author>
      <pubDate>Tue, 03 Jul 2018 22:42:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/37093</link>
      <guid>https://ruby-china.org/topics/37093</guid>
    </item>
    <item>
      <title>大家都是怎么做快速开发的？毕竟很多项目都有很多共性功能 (发帖，点赞，评论，注册登录)</title>
      <description>&lt;h3 id="问题背景"&gt;问题背景&lt;/h3&gt;
&lt;p&gt;蛮多项目里功能其实很类似：
评论，通知系统，点赞，注册登录（邮件/手机号验证码)，换头像，&lt;br&gt;
发帖或发文章（Model 可能取名叫 Post/Topic/Article) &lt;/p&gt;
&lt;h2 id="问题：大家是怎么快速开发的？"&gt;问题：大家是怎么快速开发的？&lt;/h2&gt;
&lt;p&gt;方法：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;每次直接 rails new [projectX] 然后自己 gem devise 等等，加上自己常用的 gem，然后从零开始。也许有个别代码是从之前的项目复制过来的。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;有一个自己写的基础项目（已经有了上述这些基础功能），代码故意不多写也不复杂，前端方面可能没用框架，或者轻度使用了某个前端框架 (React/Ember/Vue/Angular)，每次有项目了就在这个基础上拓展&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;？？&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="目的"&gt;目的&lt;/h3&gt;
&lt;p&gt;想知道有什么方法可以尽快加速开发。&lt;br&gt;
想了解大家都是怎么做的~       &lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Mon, 04 Jun 2018 14:35:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/36893</link>
      <guid>https://ruby-china.org/topics/36893</guid>
    </item>
    <item>
      <title>使用 Ember.js 时，写 CSS 的正确姿势是什么？</title>
      <description>&lt;h3 id="问题"&gt;问题&lt;/h3&gt;
&lt;p&gt;怎么给不同组件专门的 css 文件？&lt;br&gt;
或者说如何合理组织，便于编写？&lt;br&gt;
（文件该放哪里？有哪些 addon 建议安装，可以简化工作流？）              &lt;/p&gt;
&lt;h3 id="问之前做过的调查"&gt;问之前做过的调查&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;谷歌搜 "Ember css" "ember where to put css" 结果并没有什么卵用&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;没在 Ember 文档里看到沾边的说明（或者是我没找到）：&lt;a href="https://guides.emberjs.com/v3.0.0/" rel="nofollow" target="_blank"&gt;https://guides.emberjs.com/v3.0.0/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="原因"&gt;原因&lt;/h3&gt;
&lt;p&gt;最近在定制  Discourse，看代码的时候实在没理解如何避免 CSS 命名冲突：&lt;br&gt;
&lt;a href="https://github.com/discourse/discourse/tree/master/app/assets/stylesheets" rel="nofollow" target="_blank"&gt;https://github.com/discourse/discourse/tree/master/app/assets/stylesheets&lt;/a&gt;
感谢。&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Mon, 16 Apr 2018 18:04:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/35464</link>
      <guid>https://ruby-china.org/topics/35464</guid>
    </item>
    <item>
      <title>2018年3月 新项目：中国独立开发者项目列表 - 看看大家都在做什么网站 /App</title>
      <description>&lt;h2 id="链接："&gt;链接：&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/1c7/chinese-independent-developer" rel="nofollow" target="_blank"&gt;https://github.com/1c7/chinese-independent-developer&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="解决什么问题"&gt;解决什么问题&lt;/h2&gt;
&lt;p&gt;这个列表里可以看到独立开发者们都在忙什么网站 / App。&lt;br&gt;
表的底部也有帮助开发者做新项目的学习资源（Indiehackers.com, sideidea.com，湾区论坛，等等，好多的）&lt;/p&gt;
&lt;h2 id="为什么做这个"&gt;为什么做这个&lt;/h2&gt;
&lt;p&gt;我有不少独立开发者朋友（10+ 人）&lt;br&gt;
他们全职 / 下班 / 周末做各种项目。&lt;br&gt;
我就想着把朋友们的项目都列一下。&lt;br&gt;
我也对其他独立开发者在做什么很感兴趣（毕竟我就认识那么十几个人，很小的样本）&lt;br&gt;
觉得大家也会很感兴趣，就写了这个表。    &lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/ef00ac79-a3ea-40fa-b478-d796b23a4322.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2018/5a00dee3-e293-4979-9112-288fd9cc526f.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Sun, 18 Mar 2018 12:28:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/35258</link>
      <guid>https://ruby-china.org/topics/35258</guid>
    </item>
    <item>
      <title>最近刚开始看 Rails 5.1 新的 Webpacker，想问有谁 Webpacker 用到正经的项目里吗？觉得和直接用 vue/react/ 等等 有啥优势劣势？</title>
      <description>&lt;p&gt;Webpacker 是这个：
&lt;a href="https://github.com/rails/webpacker" rel="nofollow" target="_blank"&gt;https://github.com/rails/webpacker&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="原因"&gt;原因&lt;/h3&gt;
&lt;p&gt;现在项目轻度使用了 Vue，直接引入了一个 script 标签用，接下来因为越来越复杂了，打算拆出来写。更分离一些。&lt;br&gt;
所以在看 SPA, vuex, vue-router 这类东西。来决定 Vue + Rails 的各种整合做法里哪个比较好。&lt;/p&gt;

&lt;p&gt;后台管理的部分觉得没必要 vue 重写，就想保持原样。&lt;br&gt;
所以在想怎么弄可以一部分用 Rails 一部分 Vue。&lt;br&gt;
（项目具体是啥就不说了，说了感觉像打广告 = =，要是真感兴趣我可以评论区里回复一下）&lt;/p&gt;

&lt;p&gt;看到各个选项里，其中一个是 webpacker，今天稍微看了下 webpacker。文档感觉还蛮少的，只能靠搜谷歌教程看看。&lt;/p&gt;
&lt;h3 id="问题"&gt;问题&lt;/h3&gt;
&lt;p&gt;想问下多少人在用 Webpack？感觉如何？对这个新玩意咋想？
（站内搜了一下讨论这个话题的就 1 个。所以开个新帖）&lt;/p&gt;
&lt;h5 id="背景说明"&gt;背景说明&lt;/h5&gt;
&lt;p&gt;楼主前端技术一般，之前都是 jQuery 流，最近才开始深入学前端框架，看了不同的框架之后（Ember/React）最后决定先学 Vue。&lt;br&gt;
webpack 方面还是新手   &lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Wed, 01 Nov 2017 21:48:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/34491</link>
      <guid>https://ruby-china.org/topics/34491</guid>
    </item>
    <item>
      <title>2017 年哪家邮件服务商针对国内的到达率比较好？大家都是用的啥？(在犹豫用 SendCloud / SendGrid)</title>
      <description>&lt;p&gt;在右上角搜过 "邮件服务"，感觉讨论都比较少 &amp;amp; 比较老。（都是 2012 年到 2015 年）
所以开个新帖。&lt;/p&gt;

&lt;p&gt;最近在做"找回密码"功能（用了 devise）所以在折腾邮件的事情。&lt;/p&gt;

&lt;p&gt;想问一下大家都在用哪家的邮件服务来发邮件？你们公司有主要针对的市场吗（国内/国外）？&lt;br&gt;
对各家邮件服务的感觉如何？踩过坑么？
如果针对国内市场大家觉得哪家比较好？（综合到达率，价格等）            &lt;/p&gt;

&lt;p&gt;谢谢~
（有啥折腾邮件的经验也可以说说~）&lt;/p&gt;
&lt;h3 id="---- 2017 年 10 月 17 号更新 ----"&gt;---- 2017 年 10 月 17 号更新 ----&lt;/h3&gt;
&lt;p&gt;最后选用了 SendCloud&lt;br&gt;
因为主要针对国内所以用了 SendCloud。目前很 happy 还没碰到问题，如果碰到问题会过来更新这篇帖子~&lt;br&gt;
我做的产品叫 寓住 (yuzhu.me) 是在国内找长租公寓的。&lt;br&gt;
另外写了个博客，"Rails 5 + Devise + SendCloud 发密码重置邮件"：&lt;a href="http://1c7.me/ruby-on-rails-5-devise-password-reset-email-using-soho-sendcloud/" rel="nofollow" target="_blank"&gt;http://1c7.me/ruby-on-rails-5-devise-password-reset-email-using-soho-sendcloud/&lt;/a&gt;&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Sat, 14 Oct 2017 12:04:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/34373</link>
      <guid>https://ruby-china.org/topics/34373</guid>
    </item>
    <item>
      <title>Asset Pipeline 里，JS 代码注释不能有中文 (会编译报错) 大家都是用啥方案解决的？</title>
      <description>&lt;p&gt;&lt;code&gt;RAILS_ENV=production bundle exec rails assets:precompile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;会出错。&lt;/p&gt;

&lt;p&gt;花了我大概 20 分钟才定位到原来不是代码错了，只是因为&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= javascript_include_tag 'application_v2', 'data-turbolinks-track': 'reload' %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;里面有写中文注释。。。&lt;/p&gt;

&lt;p&gt;几种方案：  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;完全前后端分离，就不用 asset pipeline 了，比如  vue &lt;/li&gt;
&lt;li&gt;就不写中文注释了。都换成英文&lt;/li&gt;
&lt;li&gt;放到 public 目录里，不过带来的问题是缓存问题。不像 pipeline 自动有一个不一样的文件名。&lt;/li&gt;
&lt;li&gt;？？？&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;就是想问问大家一般都选什么方案解决？&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 28 Sep 2017 10:53:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/34280</link>
      <guid>https://ruby-china.org/topics/34280</guid>
    </item>
    <item>
      <title>学计算机基础很棒的一门课：[十分钟速成班 - 计算机科学]</title>
      <description>&lt;h2 id="这个系列翻译自 Youtube Crash Course 的 Computer Science 系列。"&gt;这个系列翻译自 Youtube Crash Course 的 Computer Science 系列。&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/a14e2004-4afe-4a91-89a2-76fa117f78cd.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2017/21bb4241-6c69-482c-a5ed-130a8fe69834.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="列表"&gt;列表&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;第 1 集 - 早期的计算 &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=8861057" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/&lt;/li&gt;
&lt;li&gt;第 2 集 - 电子运算&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=9066628" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 3 集 - 布尔逻辑与逻辑电路   &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=11557339" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 4 集 - 二进制 &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=11592079" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 5 集 - 算术逻辑单元 (ALU) &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=12742941" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 6 集 - 寄存器&amp;amp;内存 &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=12881796" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 7 集 - CPU&amp;amp;时钟频率 &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=12881976" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 8 集 - 指令和程序   &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=9875360" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 9 集 -  高级 CPU 设计 &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=11867964" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 10 集 - 编程史话  &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=13582556" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 11 集 - 编程语言  &lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=14228148" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 12 集 - 编程原理：语句和函数&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=14885759" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/&lt;/li&gt;
&lt;li&gt;第 13 集 - 算法初步&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=15987761" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/ &lt;/li&gt;
&lt;li&gt;第 14 集 - 数据结构&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=15987774" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/&lt;/li&gt;
&lt;li&gt;第 15 集 - 阿兰·图灵&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.bilibili.com/player.html?aid=16090115" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;/&lt;/li&gt;
&lt;li&gt;16 ~ 34 正在翻译，想加入字幕组 (&lt;a href="http://weibo.com/u/5237129097/home?wvr=5" rel="nofollow" target="_blank"&gt;http://weibo.com/u/5237129097/home?wvr=5&lt;/a&gt;) 可以加 Q 群 305631757&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/c42272d4-dfa2-4734-ba3d-05b9fcaa7649.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="对你有什么用"&gt;对你有什么用&lt;/h3&gt;
&lt;p&gt;这个系列讲的是计算机底层&amp;amp;基础，包括逻辑门 AND OR XOR，怎么拼成 CPU，计算机的一些历史，二进制的原理，内存是怎么做的。&lt;br&gt;
11 集后面还没翻译的部分，还讲了计算机网络，图形学，文件系统，压缩，算法，等等。&lt;br&gt;
如果你想学基础，看这个系列比起看书会有趣得多。&lt;/p&gt;
&lt;h3 id="特别感谢"&gt;特别感谢&lt;/h3&gt;
&lt;p&gt;两位主要译者 ZireHao 和 膨胀的小 R&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;膨胀的小 R：&lt;a href="https://space.bilibili.com/5385034#!/video" rel="nofollow" target="_blank"&gt;https://space.bilibili.com/5385034#!/video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZireHao：&lt;a href="http://space.bilibili.com/27167876#!/" rel="nofollow" target="_blank"&gt;http://space.bilibili.com/27167876#!/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="关于我"&gt;关于我&lt;/h3&gt;
&lt;p&gt;膨胀的小 R 和我在合作，他翻译我校对。（片头“@糖醋陈皮”就是我）&lt;br&gt;
ZireHao 在和另一个人合作。        &lt;/p&gt;

&lt;p&gt;另外我也是 Crash Course 字幕组组长之一（&lt;a href="https://weibo.com/2004104451/" rel="nofollow" target="_blank" title=""&gt;@糖醋陈皮&lt;/a&gt;）&lt;br&gt;
也是 Ruby 程序员（&lt;a href="https://github.com/1c7" rel="nofollow" target="_blank" title=""&gt;Github@1c7&lt;/a&gt;）（可以看我之前发过的贴啥的）&lt;br&gt;
打个小广告：    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;寓住 (yuzhu.me) 是我最近在做的产品，解决的问题是帮忙找公寓。&lt;a href="https://ruby-china.org/topics/33458" title=""&gt;之前也来 ruby china 安利过&lt;/a&gt;，1.0 上线 1 个月之后去备案了，所以现在无法访问。在开发 2.0，估计这个月 9 月 25 号到 30 号国庆前上线。&lt;/li&gt;
&lt;li&gt;和朋友做 &lt;a href="http://sideidea.com/" rel="nofollow" target="_blank" title=""&gt;sideidea.com&lt;/a&gt;，采访国内独立开发者盈利的故事。现在先翻译了一些 &lt;a href="https://www.indiehackers.com/businesses" rel="nofollow" target="_blank" title=""&gt;Indie Hacker&lt;/a&gt; 的文章。暂时还没原创采访。我主要负责内容部分。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="系列全集"&gt;系列全集&lt;/h3&gt;
&lt;p&gt;如果你看了计算机系列之后想看看其他系列：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;微博：有人在微博总结了所有系列的合集：&lt;a href="http://weibo.com/5092441524/FhZFrwxbS" rel="nofollow" target="_blank"&gt;http://weibo.com/5092441524/FhZFrwxbS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;App：安卓 App（&lt;a href="https://www.coolapk.com/apk/com.crashcourse.china.c17" rel="nofollow" target="_blank" title=""&gt;CC 速成班&lt;/a&gt;) （在酷安搜索 "CC 速成班"）&lt;/li&gt;
&lt;li&gt;网页：膨胀的小 R 在开发网页版的 Crash Course，还没上线。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="最后"&gt;最后&lt;/h4&gt;
&lt;p&gt;Crash Course 字幕组微博 (&lt;a href="http://weibo.com/u/5237129097/home?wvr=5" rel="nofollow" target="_blank"&gt;http://weibo.com/u/5237129097/home?wvr=5&lt;/a&gt;)&lt;br&gt;
想加入字幕组加 Q 群 305631757。&lt;br&gt;
App 也好，网站也好。都是公益的，做了之后就去忙别的事情了，反正也不需要更新新功能，更新内容就行了。&lt;/p&gt;

&lt;p&gt;谢谢阅读~ 希望这个系列视频对你有帮助~&lt;/p&gt;

&lt;p&gt;这边更新似乎不会有通知，希望有通知的可以关注这个 github repo: &lt;a href="https://github.com/1c7/crash-course-computer-science-chinese" rel="nofollow" target="_blank"&gt;https://github.com/1c7/crash-course-computer-science-chinese&lt;/a&gt;&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 21 Sep 2017 16:32:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/34215</link>
      <guid>https://ruby-china.org/topics/34215</guid>
    </item>
    <item>
      <title>[Sideidea.com] 2017年8月~第二次发自己做的项目，这次是采访国内的 Maker，一个文字采访型网站</title>
      <description>&lt;h2 id="首先"&gt;首先&lt;/h2&gt;
&lt;p&gt;这个项目叫 Sideidea，网址是：
&lt;a href="http://sideidea.com/" rel="nofollow" target="_blank"&gt;http://sideidea.com/&lt;/a&gt;
&lt;img src="https://l.ruby-china.com/photo/2017/eb8eff74-4ff0-401d-9364-0691857973a0.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;p&gt;是这样是这样，作为程序员的话其实总有一个梦想是做个项目，不管是网站也好 App 也好，什么 SaaS 工具也好，&lt;br&gt;
然后每个月盈利一些钱，少的话几百块钱，其实也很满足，多的话有个万把块钱能全职就最赞了。&lt;br&gt;
收入没有天花板全靠自己的感觉是非常爽的。上班也好做远程也好做外包也好，其实都有点感觉是在拿时间换钱，没法 Scale。不是自己的东西。       &lt;/p&gt;

&lt;p&gt;如果能看到别人这样做的故事其实满激励人的       &lt;/p&gt;
&lt;h2 id="做啥"&gt;做啥&lt;/h2&gt;
&lt;p&gt;之前看到 Indie Hacker 做这样的事情，非常赞，每篇必看。&lt;br&gt;
Nomad List 解决找下一个远程工作的城市的问题，AuGrav 做印度 3D 定制化珠宝，Sidebar 每周发 5 个设计相关链接到邮箱，也是做了很久才盈利。&lt;br&gt;
还有好多，现在 Indie Hacker 上面有 200 多篇了。还有 Podcast，论坛，各种东西。       &lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/0e20cf25-e676-49bb-bf11-8170714ce1f0.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;问题是，这些采访都是英文的，产品也都是国外的，一方面是语言障碍（我们的解决方案是挑一些最好的采访，然后翻译成中文放到 Sideidea）
问题 2 是如果能看到一些国内 Maker 的故事，看人家能做到，也是非常赞的事情。&lt;/p&gt;
&lt;h2 id="所以"&gt;所以&lt;/h2&gt;
&lt;p&gt;我们就做了这个 Sideidea。（具体“我们”是谁可以看 Sideidea 里的“关于”，这里就不介绍谁是谁了）       &lt;/p&gt;

&lt;p&gt;早期的话翻译了一些 Indie Hacker 上的文章做内容，最终当然是要做原创内容。&lt;br&gt;
中文采访国内的 Maker，然后放到 Sideidea 上。
另外就是我会把中文采访翻译成英文采访，然后投稿到 Indie Hacker。（单独给 Courtland Allen 发邮件）       &lt;/p&gt;

&lt;p&gt;对于 Maker 来说，如果他分享的故事非常棒，有学习意义，国内外的话就都有他的宣传（国内 Sideida + 国外 Indie Hacker）对产品的流量蛮有帮助的。&lt;/p&gt;

&lt;p&gt;以后更新频率大概是 1-2 周一次。&lt;/p&gt;
&lt;h2 id="最后"&gt;最后&lt;/h2&gt;
&lt;p&gt;如果你是一名 Maker，希望来接受采访，麻烦发邮件 hi@sideidea.com&lt;br&gt;
或者联系微信 agoodob（这个是我的个人微信，头像是一个全黑的图片）       &lt;/p&gt;

&lt;p&gt;如果你认识朋友是 Maker，他/她可能感兴趣可能不感兴趣，但是希望聊聊看的话，
也可以直接加我微信 agoodob&lt;/p&gt;

&lt;p&gt;感谢阅读~~~~
&lt;img src="https://l.ruby-china.com/photo/2017/fcbf69fd-d622-4d08-9914-c897b3f8d9a8.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h4 id="番外篇"&gt;番外篇&lt;/h4&gt;
&lt;p&gt;介绍下自己：我现居广州，Web 开发者。&lt;br&gt;
Github：&lt;a href="https://github.com/1c7" rel="nofollow" target="_blank"&gt;https://github.com/1c7&lt;/a&gt;&lt;br&gt;
博客：1c7.me   &lt;/p&gt;

&lt;p&gt;感谢    &lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Wed, 23 Aug 2017 14:57:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/33909</link>
      <guid>https://ruby-china.org/topics/33909</guid>
    </item>
    <item>
      <title>(React Native 0.46) 做了个 Crash Course 中文版的安卓 App</title>
      <description>&lt;p&gt;（没看到 React Native 节点，就干脆在这儿发吧…）
原本想发到“创业”节点的，但是这个项目只是业余做着玩的…所以放这里了。&lt;/p&gt;
&lt;h3 id="解决什么问题？"&gt;解决什么问题？&lt;/h3&gt;
&lt;p&gt;所有 Crash Course 有字幕的视频都聚合到这一个地方了。&lt;/p&gt;
&lt;h3 id="哪里有？"&gt;哪里有？&lt;/h3&gt;
&lt;p&gt;目前这个安卓 App 只在酷安上有：
&lt;img src="https://l.ruby-china.com/photo/2017/88de1c4f-7dcf-4e32-9b32-ddae0652cccc.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="App 打开长这样："&gt;App 打开长这样：&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/4cb0ebc5-93c3-4acc-a32f-71152c7a2a35.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2017/e386cc95-25a2-4af6-968c-00f13ca69970.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;后端是拿 Rails 写的简单 API，这也不是个复杂的项目。
然后如果点击的话，实际上播放是在外部进行的，要么浏览器，要么 B 站。
建议的话装个 B 站的 APP，然后选 B 站作为打开方式，就很方便了。&lt;/p&gt;
&lt;h2 id="为什么写这个？"&gt;为什么写这个？&lt;/h2&gt;
&lt;p&gt;首先我们字幕组的话（Crash Course 字幕组）走的是完全"放养"的形式。
（我是@糖醋陈皮，群有 3 个管理员，我是其中一个。）
“放养”就是没人分配任务，没人追进度追 deadline，也没有用一个公共的账号统一放一个地方。
大家根据自己的兴趣时间完全独立行动。
所以东西比较零散。
我在字幕组内部还知道谁在做什么，谁在翻译什么系列。外部的人要知道还要费点时间。
我觉得这样很麻烦。特别对于初高中生来说，这些内容可能对他们更有用一些，然后找又不好找。
所以就做了这个 App 聚合一下。纯粹只是聚合而已，所以并不是一个很多复杂功能的 APP&lt;/p&gt;
&lt;h3 id="担心版权问题就跑去问官方，"&gt;担心版权问题就跑去问官方，&lt;/h3&gt;
&lt;p&gt;然后 John Green 允许做了。
&lt;img src="https://l.ruby-china.com/photo/2017/25da7273-6314-47fd-b443-d1b9e23bf68d.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="关于为什么只有安卓，没有苹果，还有就是为什么只有酷安，没有豌豆荚，360手机助手之类的。"&gt;关于为什么只有安卓，没有苹果，还有就是为什么只有酷安，没有豌豆荚，360 手机助手之类的。&lt;/h3&gt;
&lt;p&gt;我在知乎专栏那边写了下：&lt;a href="https://zhuanlan.zhihu.com/p/27804727" rel="nofollow" target="_blank"&gt;https://zhuanlan.zhihu.com/p/27804727&lt;/a&gt;
这边就不复制黏贴了，不想把帖子搞得长长的。&lt;/p&gt;
&lt;h3 id="嗯。就这样。"&gt;嗯。就这样。&lt;/h3&gt;
&lt;p&gt;有兴趣的话各位可以上“酷安”搜 CC 速成班，然后下载看看。
（Web 版的酷安在这里：&lt;a href="http://www.coolapk.com/apk/com.crashcourse.china.c17" rel="nofollow" target="_blank"&gt;http://www.coolapk.com/apk/com.crashcourse.china.c17&lt;/a&gt;）&lt;/p&gt;

&lt;p&gt;感谢阅读~&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Tue, 11 Jul 2017 11:48:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/33460</link>
      <guid>https://ruby-china.org/topics/33460</guid>
    </item>
    <item>
      <title>(找公寓) 做了个找公寓的网站解决我自己的问题，在这里分享一下。</title>
      <description>&lt;p&gt;网站： &lt;a href="http://yuzhu.me/" rel="nofollow" target="_blank"&gt;http://yuzhu.me/&lt;/a&gt;&lt;br&gt;
暂时无法访问，备案还没过 + 在开发 2.0。&lt;br&gt;
估计 9 月 25 号到 30 号之间会上线，要赶 2017 年的国庆长假前上线。&lt;br&gt;
下面的截图都是 1.0 版本的。&lt;/p&gt;
&lt;h2 id="解决什么问题？"&gt;解决什么问题？&lt;/h2&gt;
&lt;p&gt;选择一个城市，列出这个城市里的公寓。注意不是单个的公寓，是品牌公寓，就是告诉你有什么牌子。
这样你就可以做出更好的租房决定，到底是租民房还是公寓。
比如广州有
&lt;img src="https://l.ruby-china.com/photo/2017/ea5f0aa8-142c-4094-aebf-d494f99733a9.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="什么是公寓？"&gt;什么是公寓？&lt;/h2&gt;
&lt;p&gt;公寓的话其实就是人家装修得稍微漂亮一点，环境好一点，可能有公共空间，也许会有一些活动，可能有公共健身房之类的，就是比起普通民房多了一些配套服务啦。&lt;/p&gt;
&lt;h2 id="之所以做这个"&gt;之所以做这个&lt;/h2&gt;
&lt;p&gt;是因为最近需要去山东潍坊（1 个月以上），然后租房子，除了租普通的民房（就是去什么 58，安居客，线下中介，链家等等）&lt;/p&gt;

&lt;p&gt;另一种是租公寓。&lt;/p&gt;

&lt;p&gt;然后我真的不关心是什么牌子，我就关心这个城市下有什么公寓（是 YOU+ 还是自如寓还是蘑菇什么的，我真的不关心）
就让我点击一个城市名，然后告诉我有什么品牌公寓，完了我自己研究就是了。
看了民房也看了公寓之后就可以更好的分析到底应该住什么，住哪里。&lt;/p&gt;
&lt;h3 id="但奇怪的是我并没有找到这样的工具。"&gt;但奇怪的是我并没有找到这样的工具。&lt;/h3&gt;
&lt;p&gt;所以我就自己收集数据（这是一个可以公开编辑的石墨文档链接：&lt;a href="https://shimo.im/sheet/DyKf91OkXE4YXSuD" rel="nofollow" target="_blank"&gt;https://shimo.im/sheet/DyKf91OkXE4YXSuD&lt;/a&gt;）
&lt;img src="https://l.ruby-china.com/photo/2017/18b2069b-3222-4666-953f-fe6e6b93d172.png!large" title="" alt=""&gt;
然后做了出来，就花了大概 2 天把。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/2b6d5283-4bdf-44e6-8a85-32b43cdf7d3b.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;然后这个东西打算边走边看吧，暂时没有打算盈利的计划。我想先知道这个东西到底有没有人用先。。没人用的话其他都不用说了。
总之在这里发一下，如果有谁最近找房子，可能会有帮助吧。。
如果有任何建议/意见麻烦评论一下告诉我…&lt;/p&gt;

&lt;p&gt;有个朋友说应该加个地图，比如说他不关心是什么公寓，就关心哪个距离工作单位最近，这个的确是个好功能。
但是要手工收集输入数据，然后做个地图什么的还是怪费事的。现在就暂时没做。  &lt;/p&gt;

&lt;p&gt;谢谢。&lt;/p&gt;

&lt;p&gt;是拿 Rails 5 写的，然后就是简单 jQuery + Bootstrap。服务器是 UCloud。然后用了 puma + nginx。&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Tue, 11 Jul 2017 11:30:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/33458</link>
      <guid>https://ruby-china.org/topics/33458</guid>
    </item>
    <item>
      <title>推荐一个学 Ember 的资源，专门针对有 Rails 基础的同学</title>
      <description>&lt;p&gt;&lt;a href="http://fromrailstoember.com/" rel="nofollow" target="_blank"&gt;http://fromrailstoember.com/&lt;/a&gt;
东西不多，一共 15 个 Tips。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/6c5e496ae1d2b0dca1d303c8afb463e8.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;（最近开始学前端框架了，jQuery 已经顶不住要做的需求了。而且体验也不够好。React.js 学了一些但主要因为要做 RN 所以去学的。现在学 Ember.js 的进度我觉得大概算是 35% 这样吧。）&lt;/p&gt;

&lt;p&gt;还有就是推荐这个教程：
&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//www.youtube.com/embed/DCL2tHeY-vQ" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;
up 主也在 Ruby China 这儿但是我不记得 ID 了，所以就不 at 了。非常感谢制作这个系列的教程。很有用。&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Thu, 16 Mar 2017 22:17:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/32554</link>
      <guid>https://ruby-china.org/topics/32554</guid>
    </item>
    <item>
      <title>Airbnb 的 Ruby 代码风格指南 －中译版，欢迎来看看</title>
      <description>&lt;p&gt;最近在重构一个小项目，需要开始注意代码风格了，看到 Airbnb 的指南不错就翻译了下，
（看起来蛮长，实际可能 &amp;lt; 20 分钟就读完了）
地址：&lt;a href="https://github.com/1c7/ruby-airbnb" rel="nofollow" target="_blank"&gt;https://github.com/1c7/ruby-airbnb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/99bb6aacf7546087b1b3e49f9326c732.png!large" title="" alt=""&gt;
欢迎来看看，如果发现问题尽管指出，或者你也可以发 PR ~&lt;/p&gt;

&lt;p&gt;官方英文原版地址：
&lt;a href="https://github.com/airbnb/ruby" rel="nofollow" target="_blank"&gt;https://github.com/airbnb/ruby&lt;/a&gt;&lt;/p&gt;</description>
      <author>1c7</author>
      <pubDate>Mon, 22 Aug 2016 15:49:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/30875</link>
      <guid>https://ruby-china.org/topics/30875</guid>
    </item>
  </channel>
</rss>
