<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>xmonkeycn (xmonkey)</title>
    <link>https://ruby-china.org/xmonkeycn</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[上海] 爱燃烧-运动的互联网团队招募 Ruby、前端、iOS 工程师</title>
      <description>&lt;p&gt;一切都从两年多以前 Ruby China 上的一个帖子&lt;a href="https://ruby-china.org/topics/9750" title=""&gt;一个拖延症患者的精益 (Lean Startup) 实践&lt;/a&gt; 开始。我们因爱好跑步而想一起做些有价值的事，机缘巧合接触到了 Ruby on Rails，因此和 Ruby China 结识，在这两年多里得到了社区中很多人的帮助，在此首先表示感谢:P。&lt;/p&gt;
&lt;h2 id="关于爱燃烧"&gt;关于爱燃烧&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://iranshao.com" rel="nofollow" target="_blank" title=""&gt;爱燃烧&lt;/a&gt; 是一个专业的中文跑步社区，目前与国内 71.5% 以上的各类跑步赛事 /活动有合作关系，绝大多数国内跑步爱好者也都使用过爱燃烧提供的服务。为了帮助更多的人开始跑步，健康的跑步，跑得更快，跑得更远，我们需要更多志同道合的人加入进来。 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;我们有从入门到百公里越野 /铁人三项的运动达人，无偿辅导陪练； &lt;/li&gt;
&lt;li&gt;提供 TRX 等训练条件，工作时段可以跑步骑车游泳； &lt;/li&gt;
&lt;li&gt;有专业摄影棚和摄影器材，工作之余，你有机会成为最好的运动摄影师； &lt;/li&gt;
&lt;li&gt;国内最新最快的顶级运动装备使用机会； &lt;/li&gt;
&lt;li&gt;一群有趣的人，做过职业摄影师的媒体编辑、参加过十年上海马拉松的程序员、饶舌小王子、从上海跑到南京的超马耐力达人、大铁 Ironman Finisher… &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="福利待遇："&gt;福利待遇：&lt;/h2&gt;
&lt;p&gt;1.弹性工作时间，全 mac 办公 
2.年终双薪，餐补，节假日各类福利，五险一金 
3.全年不定期的集体活动 
4.股权激励：独立于薪资奖金体系之外 &lt;/p&gt;
&lt;h2 id="职位招聘"&gt;职位招聘&lt;/h2&gt;
&lt;p&gt;目前招募 Ruby、前端、iOS 工程师，欢迎小伙伴们加入，帮助更多的人实现运动梦想。也欢迎推荐朋友加入，推荐成功将得到&lt;a href="http://iranshao.com/register/reg_races/382" rel="nofollow" target="_blank" title=""&gt;2016 柏林马拉松名额 +3 晚 4 星酒店全免费的套餐&lt;/a&gt; ！（价值¥ 7,688）。&lt;/p&gt;
&lt;h3 id="Ruby开发工程师"&gt;Ruby 开发工程师&lt;/h3&gt;
&lt;p&gt;岗位要求： 
1.1 年以上相关工作经验，编程基础扎实，有较强的学习能力，对创新技术有强烈求知欲； 
2.熟练使用 Ruby On Rails； 
3.熟练使用 Git 等工具； 
4.熟悉 TDD，会使用 rspec 等测试框架，有良好的编码习惯； 
5.具备基本的 web 前端开发能力 
6.具有社区类产品开发经验 &lt;/p&gt;
&lt;h3 id="前端开发工程师"&gt;前端开发工程师&lt;/h3&gt;
&lt;p&gt;岗位要求： &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;2 年以上相关开发经验，熟练掌握 HTML5、CSS3、JavaScript 开发 &lt;/li&gt;
&lt;li&gt;熟悉 Ajax、Restful 工作原理，熟悉前后端数据交互 &lt;/li&gt;
&lt;li&gt;熟练使用 bootstrap 前端框架，有 AngularJS, React、EmberJS 等前端框架使用经验者优先 &lt;/li&gt;
&lt;li&gt;熟练使用 git 管理项目和代码 &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="iOS高级开发工程师"&gt;iOS 高级开发工程师&lt;/h3&gt;
&lt;p&gt;岗位要求：
1.3 年以上相关工作经验，iOS 平台开发经验、APP 开发经历；有独立开发及发布 iOS APP 工作经验
2.熟练掌握 Objective-C、Swift、熟练使用 XCode 等开发工具，精通面向对象的软件开发，有良好的软件工程概念和编程习惯，有扎实的编程、算法和计算机专业基本功 
3.有独立解决问题的工作态度，有使命必达的创业精神
4.有开发高品质产品和代码的自我要求，有钻研新技术的好奇心 
5.有自己的 blog 或 Github 开源项目加分&lt;/p&gt;
&lt;h2 id="团队小伙伴们"&gt;团队小伙伴们&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/dc3004365f8e881d2018e76e19922b24.png" title="" alt=""&gt;&lt;/p&gt;

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

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

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

&lt;p&gt;简历请发邮箱：binxiao@iranshao.com，被推荐的请注明推荐人:P
公司地址在上海市普陀区武宁路。&lt;/p&gt;

&lt;p&gt;如果你有任何跑步、游泳、自行车、铁人三项相关的问题，也欢迎一起交流讨论。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Tue, 29 Dec 2015 13:56:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/28558</link>
      <guid>https://ruby-china.org/topics/28558</guid>
    </item>
    <item>
      <title>有没有用又拍云 Form API 上传的同学？</title>
      <description>&lt;p&gt;我们的图片分享服务用又拍的 form api 异步的方式上传图片，速度比 linode 快多了，可是最近感觉好像不太稳定啊。&lt;/p&gt;

&lt;p&gt;前几天中午有一个多小时服务器有问题，丢数据，用户上传的图片丢了一批。当时提交了工单没啥反馈，后来又拍群发邮件解释了原因，还好。&lt;/p&gt;

&lt;p&gt;后来又碰到一些奇怪的问题，部分图片上传时，又拍返回文件名，但是访问 404，重新上传又可以了。后来跟又拍的技术沟通，似乎是不知道什么原因，又拍服务器将图片判定是非图片导致未被存储在图片 bucket 里面导致的。&lt;/p&gt;

&lt;p&gt;今天晚上 21:40 左右突然有出现 form api 上传完成后，服务器完全收不到又拍云 callback 的情况，有点崩溃了-,- 
不知道是又拍的问题还是 GFW 的问题？ （服务器在 linode 上）。
打电话，qq 上联系客服都没反应，似乎晚上没人值班。&lt;/p&gt;

&lt;p&gt;自己的 production 出问题好焦虑啊，后天就是上海马拉松，今年最关键的时候到了....&lt;/p&gt;

&lt;p&gt;其他用又拍云的同学有碰到类似情况么？&lt;/p&gt;

&lt;p&gt;22:51 更新，上传功能似乎好了...真不让人放心啊。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Fri, 29 Nov 2013 22:04:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/15895</link>
      <guid>https://ruby-china.org/topics/15895</guid>
    </item>
    <item>
      <title>运动起来，赢取 RubyConf China VIP 门票</title>
      <description>&lt;p&gt;为了程序员们的健康，Tealeaf 和比赛控联合送出一张 RubyConf China VIP 门票，希望更多的程序员在工作之余，能离开键盘显示器，运动起来。&lt;/p&gt;
&lt;h2 id="活动规则："&gt;活动规则：&lt;/h2&gt;
&lt;p&gt;任何 Ruby-China 会员，在近两周内（10 月 5 日 -10 月 18 日）进行 1km 以上的跑步或者步行运动，并使用任何运动软件记录，并截图上传至本贴，即可获得一次抽奖机会。每人每天最多获得一次抽奖机会，无截图无机会:P&lt;/p&gt;

&lt;p&gt;10 月 18 日晚 8 点的北京 pm2.5 指数 (美领馆，不爆表的情况下，爆表另计），与总楼数求余，所得数字即为获奖楼数，如果无效向上顺延。
对于未获大奖的参与者，我们也另外抽取若干赠送运动用品。&lt;/p&gt;
&lt;h2 id="关于Tealeaf："&gt;关于 Tealeaf：&lt;/h2&gt;
&lt;p&gt;&lt;a href="/knwang" class="user-mention" title="@knwang"&gt;&lt;i&gt;@&lt;/i&gt;knwang&lt;/a&gt; 创立的在线 Ruby on Rails 培训课程，包括三个课程 Introduction to Ruby and Web Development, Rapid Prototypinng with Ruby on Rails 和 Build Production Quality Applications。大多数学员（包括&lt;a href="/xdite" class="user-mention" title="@xdite"&gt;&lt;i&gt;@&lt;/i&gt;xdite&lt;/a&gt;）都对 Tealeaf 的课程评价很高。
&lt;a href="http://www.gotealeaf.com" rel="nofollow" target="_blank"&gt;http://www.gotealeaf.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="关于比赛控："&gt;关于比赛控：&lt;/h2&gt;
&lt;p&gt;几个热爱运动的小伙伴为了更好的比赛体验而建立的网站，为耐力运动爱好者提供赛事分享平台和赛事服务。目前的所有成员都是 Tealeaf 的学员:P
我们的故事可以参考这个帖子：一个拖延症患者的精益 (Lean Startup) 实践  &lt;a href="http://ruby-china.org/topics/9750" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/9750&lt;/a&gt; &lt;/p&gt;
&lt;h2 id="欢迎喜欢运动的小伙伴们加入我们。"&gt;欢迎喜欢运动的小伙伴们加入我们。&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.bisaikong.com" rel="nofollow" target="_blank"&gt;http://www.bisaikong.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="关于跑步："&gt;关于跑步：&lt;/h2&gt;
&lt;p&gt;我们针对程序员特别准备了跑步入门指南，供各位从 0 开始运动的程序员们参考，如有疑问也欢迎讨论。
从 0 到 5 公里，程序猿变身极客跑者指南
&lt;a href="http://ruby-china.org/topics/12526" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/12526&lt;/a&gt; &lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Fri, 11 Oct 2013 13:48:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/14669</link>
      <guid>https://ruby-china.org/topics/14669</guid>
    </item>
    <item>
      <title>Github 挂了</title>
      <description>&lt;p&gt;正部署着，git 命令连不上 github。
查了一下，github 被 ddos 了。
&lt;a href="https://status.github.com/" rel="nofollow" target="_blank"&gt;https://status.github.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11:15 UTCTransit connectivity has been restored for some users. We are still actively mitigating a large attack.
10:48 UTCWe're working to re-establish connectivity after the attack disrupted our primary internet transit links.
10:20 UTCThe site is unavailable as we continue mitigating a large DDoS attack.&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Thu, 03 Oct 2013 19:20:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/14518</link>
      <guid>https://ruby-china.org/topics/14518</guid>
    </item>
    <item>
      <title>从 0 到 5 公里，程序猿变身极客跑者指南</title>
      <description>&lt;p&gt;之前在社区里分享过一篇文章 &lt;a href="http://ruby-china.org/topics/9750" title=""&gt;一个拖延症患者的精益 (Lean Startup) 实践&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;现在我们团队里有了从跑者学习编程的小伙伴，也有从程序员开始跑步的小伙伴。
下面这个系列文章就是还在 Tealeaf 学习 Ruby 的跑者，为刚刚开始跑步的程序员准备的 handbook，希望能让更多伏案的程序员运动起来，告别“键盘肩”，“鼠标手”，拥抱健康。&lt;/p&gt;

&lt;p&gt;神马 Herman Miller 都是浮云，运动才是王道！&lt;/p&gt;

&lt;p&gt;原文连载于爱燃烧 &lt;a href="http://iranshao.com" rel="nofollow" target="_blank"&gt;http://iranshao.com&lt;/a&gt;, 在 RubyChina 社区同步更新，并随时解答大家的问题。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Mon, 15 Jul 2013 19:58:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/12526</link>
      <guid>https://ruby-china.org/topics/12526</guid>
    </item>
    <item>
      <title>Linode 也被爆了？</title>
      <description>&lt;p&gt;刚收到邮件，要求 password reset 了，刚把 evernote 的 reset 了没几天...
&lt;a href="http://e2.ma/message/c9dae/w0ogix" rel="nofollow" target="_blank"&gt;http://e2.ma/message/c9dae/w0ogix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security Notice: Linode Manager Password Reset&lt;/p&gt;

&lt;p&gt;Dear Linode customer,&lt;/p&gt;

&lt;p&gt;Linode administrators have discovered and blocked suspicious activity on the Linode network.  This activity appears to have been a coordinated attempt to access the account of one of our customers.  This customer is aware of this activity and we have determined its extent and impact.  We have found no evidence that any Linode data of any other customer was accessed.  In addition, we have found no evidence that payment information of any customer was accessed.&lt;/p&gt;

&lt;p&gt;We have been advised that law enforcement officials are aware of the intrusion into this customer’s systems. We have implemented all appropriate measures to provide the maximum amount of protection to our customers. Out of an abundance of caution, however, we have decided to implement a Linode Manager password reset. In so doing, we have immediately expired all current passwords. You will be prompted to create a new password the next time that you log into the Linode Manager. We also recommend changing your LISH passwords and, if applicable, regenerating your API key.&lt;/p&gt;

&lt;p&gt;The following represent best practices in creating new passwords:
Avoid using simple passwords based on dictionary words
Never use the same password on multiple sites or services
Never click on 'reset password' requests in unsolicited emails - instead go directly to the service
We apologize for the inconvenience. If you have any questions, please do not hesitate to contact our support team at support@linode.com.&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Sat, 13 Apr 2013 08:43:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/10146</link>
      <guid>https://ruby-china.org/topics/10146</guid>
    </item>
    <item>
      <title>惊天大优惠！免费参加 Tealeaf Academy 的 Ruby on Rails 课程，原价 $610！！！</title>
      <description>&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; 发现有些同学有误解，先在这里写个简单的说明：
对于所有参加 Tealeaf 初级班和中级班的学员，报名时都只需要支付 40% 的学费作为首付，剩下的 60% 在课程结束后支付，如果课程结束 2 周内完成所有作业并对 Kevin 的课程不满意，剩下的 60% 可以拒付。
不管你是不是跑步，是不是将来要加入比赛控团队，都可以享受以上分期方案。算是我帮 Kevin 老师做推广了。&lt;/p&gt;

&lt;p&gt;如果你想免费上课，请继续往下看。&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;OK，我是标题党。不是每个人都可以免费参加的。但是每个人只要肯花时间，都有免费的机会，而且是 100%，完全看你自己肯不肯花时间。&lt;/p&gt;

&lt;p&gt;社区的大部分人应该都听说过&lt;a href="/knwang" class="user-mention" title="@knwang"&gt;&lt;i&gt;@&lt;/i&gt;knwang&lt;/a&gt; Kevin 老师了吧。他是 Tealeaf Academy 的创始人，提供专业的 Rails 在线课程，具体内容可以猛击以下链接：
 &lt;a href="http://www.gotealeaf.com" rel="nofollow" target="_blank"&gt;http://www.gotealeaf.com&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;我是&lt;a href="/knwang" class="user-mention" title="@knwang"&gt;&lt;i&gt;@&lt;/i&gt;knwang&lt;/a&gt; Kevin 老师第一期 Rapid Prototypinng with Ruby on Rails 中文班的老学员了。而比赛控：&lt;a href="http://jishi.bisaikong.com" rel="nofollow" target="_blank"&gt;http://jishi.bisaikong.com&lt;/a&gt; 这是个人在 Tealeaf 课程间隙开发的，现已上线，反响不错！更多关于 比赛控 请移步至&lt;a href="http://ruby-china.org/topics/9750" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/9750&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="关于Tealeaf课程"&gt;关于 Tealeaf 课程&lt;/h2&gt;
&lt;p&gt;作为 Rapid Prototypinng with Ruby on Rails 中文班的老学员，先谈几点感受：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;课程前置要求是对 Ruby 和 Web 开发要有大概的了解，最好接触过 Sinatra 或者 Rails.  从零开始还是会很吃力的。  。
1.内容编排合理，Live session 互动很多，4 周的课程学的东西，接近之前大半年自学的效果，收获也远超过自学的东东。
2.课程的强度很大，每周至少花 16 个小时，10 小时估计是不够用的.
3.高级班课程 Build Production Quality Applications(&lt;a href="/poiyzy" class="user-mention" title="@poiyzy"&gt;&lt;i&gt;@&lt;/i&gt;poiyzy&lt;/a&gt;也在上)，课程强度比 Rapid Prototypinng with Ruby on Rails 还要大，收获也更多。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kevin 的课很棒，但是国内上他课的人很少。我想有两个原因：
一个是课程对于赚 RMB 的人来说还是有点贵了，$610，都能买个 iPhone5 了。
另外就是每周要求 15-20 小时的时间投入，整天加班的苦逼程序员太多了。&lt;/p&gt;
&lt;h2 id="关于免费"&gt;关于免费&lt;/h2&gt;
&lt;p&gt;我想让 Ruby-China 社区里更多的人有机会上这个课。还想找到愿意学习且有热情为比赛控这个为跑者服务的网站贡献代码的人！！！！！！！！！！。
跟 Kevin 老师商量了一下，提供如下的方案，让每个人都可以免费上 Kevin 老师的课，前提是自己肯花时间。&lt;/p&gt;

&lt;p&gt;课程费用$610 分成两部分，40% 的首付$244，和 60% 的尾款。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#before course start&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="no"&gt;You&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="no"&gt;Marathon&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Half&lt;/span&gt; &lt;span class="no"&gt;Marathon&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Triathlon&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="mi"&gt;2013&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mo"&gt;07&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;
   &lt;span class="no"&gt;Free&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;take&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;course&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="nf"&gt;else&lt;/span&gt;
   &lt;span class="no"&gt;Pay&lt;/span&gt; &lt;span class="mi"&gt;1499&lt;/span&gt;&lt;span class="no"&gt;RMB&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;40% 的首付$244，就是 1499RMB，还买不了一个小米 2 的钱。剩下的 60% 由我先行垫付给 Kevin 老师。
假如你在 2013/07/01 日前有马拉松/半程马拉松/铁人三项的完赛证书，那么 40% 的首付算我赞助你的，因为我相信你早晚会给比赛控贡献代码的。
其实我本来也可以做到所有人都免费的，但是你不付钱，你就不肯付你更宝贵的东西-- &lt;strong&gt;时间&lt;/strong&gt;，所以，请你还是先付一部分作为自己认真学习的动力吧。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#2.weeks after course&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="no"&gt;You&lt;/span&gt; &lt;span class="n"&gt;finished&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;exercise&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;happy&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="no"&gt;Kevin&lt;/span&gt;
   &lt;span class="no"&gt;Pay&lt;/span&gt; &lt;span class="vg"&gt;$0&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
   &lt;span class="no"&gt;Pay&lt;/span&gt; &lt;span class="vg"&gt;$366&lt;/span&gt; 
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;课程结束 2 周内，如果你已经完成了所有课堂作业（没有太难的，相信我，只需要花时间），对 Kevin 老师的课程感到不满意，觉得不值$610 刀的。剩下的 60%，$366，一分钱也不用付。觉得值这钱，才把 60% 的尾款付掉。Kevin 老师你要努力啊，不然我血本无归啊！
课程结束 2 周内，如果你还没完成所有课堂作业，对不起，那是你自己的问题，你没有花足够多的时间再课程上，请把 60% 余款$366 付掉。&lt;/p&gt;

&lt;p&gt;看明白了没有，如果有马拉松/半程马拉松/铁人三项的完赛证书，并且结束后对 Kevin 的课不满意，这课就免费。看不明白就别当程序员了。。。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“没有马拉松/半程马拉松/铁人三项的完赛证书，就没法免费上课了吗？”&lt;/strong&gt;
==========================NO==============================&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#before 2013/12/31&lt;/span&gt;
&lt;span class="no"&gt;If&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;got&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="no"&gt;Marathon&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Half&lt;/span&gt; &lt;span class="no"&gt;Marathon&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Triathlon&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1499&lt;/span&gt;&lt;span class="no"&gt;RMB&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你在 2013/12/31 前，完成马拉松/半程马拉松/铁人三项并获得完赛证书，并且已经做完了所有课程作业（你有半年的时间可以做作业，会时间不够么？），首付 1499RMB 原银奉还。为什么？因为我还是相信早晚你会给比赛控贡献代码的！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;”必须对 Kevin 的课不满意才免费，我要是对 Kevin 的满意呢，就得掏钱么，我不好意思昧着良心说 Kevin 的课不好，可是我不想掏钱啊！“&lt;/strong&gt;
==========================NO==============================&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;If&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;join&lt;/span&gt; &lt;span class="n"&gt;us&lt;/span&gt;
   &lt;span class="no"&gt;All&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;courses&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="no"&gt;Tealeaf&lt;/span&gt; &lt;span class="no"&gt;Academy&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;free!&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;加入比赛控团队，别说中级班$610，高级班$1485 也给你免费!!!!!!!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"只有中级班才有分期付款么，我是 Ruby 新手，想参加初级班怎么办呢“&lt;/strong&gt;
新手也没问题，初级班我们也可以按类似的方式提供帮助，请 Email 我们。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“xmonkeycn 同学，你是怎么想的啊，搞个这么复杂的方式干嘛呢？"&lt;/strong&gt;
我觉得 Kevin 的课很好，应该有更多人去上，可以给大家省下更多的时间。我对 Kevin 老师的教学质量也有信心。就是这样!!!!!!!!!
另外我在做比赛控，希望能找到喜欢跑步并且靠谱的人，如果你跑过马拉松，我猜你肯定喜欢跑步。如果你能完成 Rapid Prototypinng with Ruby on Rails 课程的全部作业，我觉得你应该是个靠谱的人。就是这样!!!!!!!!!&lt;/p&gt;
&lt;h2 id="想要报名了？"&gt;想要报名了？&lt;/h2&gt;
&lt;p&gt;请发送 email 给我 bisaikong@gmail.com 和 Kevin 老师  kevin@gotealeaf.com，并介绍你的大致情况。我们会回复你的。
下一个班是 4/1 开始，抓紧哦，错过了至少浪费自己一个月的时间哦。&lt;/p&gt;
&lt;h2 id="关于我 @user4"&gt;关于我 &lt;a href="/xmonkeycn" class="user-mention" title="@xmonkeycn"&gt;&lt;i&gt;@&lt;/i&gt;xmonkeycn&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;从 03 年开始跑步，到今年跑了 10 年，想做个对跑友真正有用的网站。&lt;/p&gt;
&lt;h2 id="关于我们 比赛控 @user5 @user6"&gt;关于我们 比赛控 &lt;a href="/xmonkeycn" class="user-mention" title="@xmonkeycn"&gt;&lt;i&gt;@&lt;/i&gt;xmonkeycn&lt;/a&gt; &lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;请先看看这个帖子
&lt;a href="http://ruby-china.org/topics/9750" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/9750&lt;/a&gt;
我们在做对热爱跑步运动的人有意义的事情，纯粹一点，不急于盈利，做好打持久战的准备。
坚持 Lean Startup。
不烧钱，没有足够收入的前提下，不雇佣任何一个全职员工。
不寻求上市或者被收购，希望像 37signals 那样做个独立的公司。&lt;/p&gt;
&lt;h2 id="关于贡献代码："&gt;关于贡献代码：&lt;/h2&gt;
&lt;p&gt;请联系 bisaikong@gmail.com
目前我们的代码还无法开源，也没啥代码可开源-,- 但是在未来适当的时候一定会开源。&lt;/p&gt;
&lt;h2 id="关于跑步、骑车、游泳、铁人三项"&gt;关于跑步、骑车、游泳、铁人三项&lt;/h2&gt;
&lt;p&gt;所有程序员们，请从今天开始进行规律锻炼吧，为了你自己。
我愿意在 ruby-china 社区为大家解答跑步/自行车/游泳相关的任何问题，只要我能回答的。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Wed, 27 Mar 2013 15:58:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/9787</link>
      <guid>https://ruby-china.org/topics/9787</guid>
    </item>
    <item>
      <title>一个拖延症患者的精益 (Lean Startup) 实践</title>
      <description>&lt;p&gt;上周，我的第一个 Rails 网站上线了，关于跑步比赛的。提供上周六举行的杭州西湖跑山赛的实时成绩发布。功能很简单，但用户反应非常热烈，收获远远超出我的预期。有些东西想写下来分享给 ruby 社区的朋友们。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.bisaikong.com" rel="nofollow" target="_blank"&gt;http://www.bisaikong.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="缘起"&gt;缘起&lt;/h2&gt;
&lt;p&gt;我是 2003 年非典的时候开始跑步了，从此一发而不可收，喜欢上了运动，喜欢上了跑步，从 04 年开始每年都跑马拉松/半程马拉松，08 年开始铁人三项，到今年已经跑了 10 年。家里积攒的奖牌已经放满了一个小储物箱，ikea 5L 的那种。（p.s.我高中长跑不及格，各位沙发土豆们不要说自己没天赋！）&lt;/p&gt;

&lt;p&gt;大概是 08 年底上海马拉松的时候想起来可以做个比赛相关网站，大家上去查询交流比赛信息照片啥的。网站无关的东东有靠谱的人很快搞定了。网站这块自己啥也不会，当时网站相关的东西找了一个喜欢跑步的朋友一起做，技术很强，就是两个人都拖延了好久。墨迹到 10 年底说不想弄了，还是你自己弄吧。我 xxxxx！好吧，自己弄。&lt;/p&gt;

&lt;p&gt;2010 年到 2011 年，工作转换和家里的事情有点多，这个就暂时放下了。&lt;/p&gt;

&lt;p&gt;2011 年底，我觉得这个比赛网站这个事情再不做不行了，决定重新开始。一开始还是打算找外包，有相熟的同学是做外包的，谈了一下，觉得像我这样需求不明确的，外包很难接，最好还是自己搞。正好也看到 quora 上的这篇：
Where is the best place to find a rockstar developer to bring an idea to life?
&lt;a href="http://qr.ae/TgiRg" rel="nofollow" target="_blank"&gt;http://qr.ae/TgiRg&lt;/a&gt;
嗯，还是自己做靠谱。那么开始学 Rails 呗。2012 年 2 月 23 日，注册 rubychina 社区。&lt;/p&gt;
&lt;h2 id="Rails"&gt;Rails&lt;/h2&gt;
&lt;p&gt;大家都说 Rails 开发快，其实是个伪命题。对于熟手来说，Rails 的确很快。但是对于新手，Rails3 的学习曲线，上来很缓，按照教程上手很容易，但是一旦你有些非标准定制需求，找到应该怎么实现不是那么容易了-,- 不瞒您说，我第一次写 nested resource 花了两天才 debug 出来，form 的 post path 搞了好久才搞定。&lt;/p&gt;
&lt;h2 id="Rails学习资料"&gt;Rails 学习资料&lt;/h2&gt;
&lt;p&gt;中文资料里面&lt;a href="/xdite" class="user-mention" title="@xdite"&gt;&lt;i&gt;@&lt;/i&gt;xdite&lt;/a&gt; 大神的 blog 很赞，写的两本书我也都买过以示支持，可惜现在内容有点落后了。
英文资料推荐订阅 Railscast，一个月几美金不贵的。Codeschool 课程很精美，不过内容覆盖的比较窄，适合入门了解，一个月的订阅费也不贵。
为什么只推荐付费的东东，因为付费的东东的确好，而且你花钱了更有动力学！&lt;/p&gt;

&lt;p&gt;一个人做的很慢，做了一些小功能之后还是不满意，前端也完全没搞。做的乱七八糟的东东始终没有上线。不过所幸尝试过了很多东西，不少东东略懂了。&lt;/p&gt;
&lt;h3 id="Tealeaf"&gt;Tealeaf&lt;/h3&gt;
&lt;p&gt;&lt;a href="/knwang" class="user-mention" title="@knwang"&gt;&lt;i&gt;@&lt;/i&gt;knwang&lt;/a&gt; 在 rubychina 上开公开课的时候去听了一下，觉得还不错。他开中文班的时候就报名去上了，收获蛮大的。课程编排的很合理，live session 互动的效果很好。就是比较花时间，每周至少 16 个小时，10 个小时候真心不够用。推荐自学 rails 觉得有难度的同学可以去上上看。应该不后悔的:P
&lt;a href="http://ruby-china.org/topics/6717" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/6717&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;课程结束收到提高班的邀请，虽然要 1k 多美刀，也毫不犹豫的报名了！目前还在上课中，总体非常满意。&lt;/p&gt;
&lt;h2 id="First Protype"&gt;First Protype&lt;/h2&gt;
&lt;p&gt;2012 年 11 月的杭州跑山赛，是朋友办的。本来想让我帮忙做一下芯片计时系统（专业的芯片计时太贵了，要 1w 多一次），我做芯片读取到 pc 这块。后来测试下来通用的 RFID 没法用在比赛上，这个方案就放弃了。不过做的过程我想到可以手机人工计时，就简单做了一个原型，手机记录下号码和时间，比赛后手工汇总到电脑上。跑山赛的时候进行了测试，能 work，数据导出来传给的组织者，网站也没上线。比赛完了，这些东西也就丢在一边了。&lt;/p&gt;
&lt;h2 id="Lean Startup"&gt;Lean Startup&lt;/h2&gt;
&lt;p&gt;去年底终于看了 Lean Startup，里面 MVP 的概念很赞。不过拖延症患者还是没怎么实践啊！
&lt;a href="/xiaolai" class="user-mention" title="@xiaolai"&gt;&lt;i&gt;@&lt;/i&gt;xiaolai&lt;/a&gt; 老师的 Knewone 上线第一天就看了，我的感觉就是：“这个评测好没有深度啊”，顺便回帖推荐了比 Jawbone up 检测睡眠准 N 倍的 Zeo，不过好像没有任何人注意到这个 Zeo。。。（p.s. 本月最新消息 Zeo 即将关闭服务，又是太细分的市场没法支持公司生存的例子。（我想做的是还要细分的市场-,-））
&lt;a href="http://ruby-china.org/topics/8335" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/8335&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;没想到后来 Knewone 后来会这么火啊，&lt;a href="/xiaolai" class="user-mention" title="@xiaolai"&gt;&lt;i&gt;@&lt;/i&gt;xiaolai&lt;/a&gt; 和&lt;a href="/lilu" class="user-mention" title="@lilu"&gt;&lt;i&gt;@&lt;/i&gt;lilu&lt;/a&gt; 的分享都有很多干货，触动很大。
&lt;a href="http://ruby-china.org/topics/9120" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/9120&lt;/a&gt;
&lt;a href="http://ruby-china.org/topics/9585" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/9585&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="Go live！"&gt;Go live!&lt;/h2&gt;
&lt;p&gt;过年前的是杭州的另一朋友给我打电话，说他们 3/24 要办比赛，问我能不能再帮他们搞计时系统。想想最坏情况就是想去年一样做成离线的呗，就答应下了。后面也没继续做啥。直到看了&lt;a href="/xiaolai" class="user-mention" title="@xiaolai"&gt;&lt;i&gt;@&lt;/i&gt;xiaolai&lt;/a&gt; 老师的分享…&lt;/p&gt;

&lt;p&gt;比赛前一个周末要去现场测试了，想想还是把实时发布加上吧，因为这个功能对我来说很有用。
周六一天写好手机端上传和服务器端上传的 code，因为时间有限，登陆功能不做，就用个 token 来做授权验证。（Token 这个是 Kevin 课上刚刚学的，现学现卖）
晚上部署到 linode 的时候发现悲剧了，总是 pipleline 编不过，debug 了一会儿也没排除干净。
干脆就用 Kevin 上课用的那个程序的架子，把代码移植过来，部署到 heroku 上。折腾到快三点，搞定。睡觉。
早上爬起来去杭州跟跑山赛组织者现场测试，没问题，数据都能收到，写好志愿者培训文档，收工回家。
这个时候，前端啥也没写，就是几个 scafold 出来的页面，稍微改了一点点。&lt;/p&gt;

&lt;p&gt;周二的时候，想想前端实在拿不出手，就临时找了做前端的跑友&lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt; ，请她帮忙做一下前端，只有 html 和 css 啦，其他任何复杂的不要，晚上画好 mockups 发过去。&lt;/p&gt;

&lt;p&gt;周三开始改前端的东东，周四拿到第一版前端代码，整合，还不支持 flow。&lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt; 觉得手机端实在太差，在周四生日那天还加班帮忙改好支持流式布局，各种感谢。。。&lt;/p&gt;

&lt;p&gt;周四晚上拿到新版的前端代码继续整合，基本上可以见人了，加上 Google Analytics，new relic。半夜发现性能有严重问题，sql 请求实在太多，又看了一边 railscast 上的 eager loading，并改写 view 的一些代码，分组成绩列表页面的时间从 2904.7ms 降到 25.9ms。不过比赛那天才发现 erb 忘了写“=”，啥都没显示！幸好对大部分人来说不重要。比赛当天晚上才修正过来。TDD 很重要啊-,- 等下一版就 TDD 重写一边了。&lt;/p&gt;

&lt;p&gt;另外组委会还提了个需求，本来需要增加个 has_many through 的，不想动数据库，直接条件判断 hard code 搞定。还有一堆各种小问题，忙到 6 点多才搞定，多年没这么通宵了。&lt;/p&gt;

&lt;p&gt;上午起来申请微信公众账号，设置自动回复查询成绩的 url。
微博发布第一条信息，宣布上线，并提供 url 和微信二维码。因为发的实在太晚了，比赛前一天被只被转 40 多次。(一共四百多参赛选手)
&lt;a href="http://weibo.com/3178513797/zoAPurN0Y" rel="nofollow" target="_blank"&gt;http://weibo.com/3178513797/zoAPurN0Y&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;比赛当天还是碰到一些问题的，比如前面提到的全部成绩列表没内容，有一个打卡点的手机时区设置不对，导致这个点部分成绩差了 8 小时。但是不影响查询单个选手成绩，是否经过哪个打开点之类的信息。我也跑在山里，没空处理。&lt;/p&gt;

&lt;p&gt;跑完回来，看看网站情况，看起来还不会挂掉，有问题等赛后结束处理吧。&lt;/p&gt;

&lt;p&gt;微博上的反馈非常好，除了表扬就是表扬。比如这条：
“很给力啊，我老婆在酒店悠闲的刷网页，实时跟踪我，刚到终点线她就打来电话祝贺”
&lt;a href="http://weibo.com/1692963072/zoO1PB0Vx" rel="nofollow" target="_blank"&gt;http://weibo.com/1692963072/zoO1PB0Vx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;比赛结束的当天晚上，整理数据，fix bug。搞干净了以后分组成绩终于可以用了。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;@比赛控 微博两天一共被转发大概 70 次左右，从 0 开始到 78 个粉丝。微信公众账号两天涨了 70 多个用户，比微博还快，你懂得。这还是我只在微博和比赛网站上挂了微信二维码而已，没有在比赛前后做任何线下推广，当时怕搞砸了太丢人，还是太保守了。&lt;/p&gt;

&lt;p&gt;网站最近四天 636 people visit, 1,170 visits, 7,708 views.对于 400 人的小比赛来说。我觉得覆盖率够高了。&lt;/p&gt;

&lt;p&gt;需求是硬需求，要认真去做了，晚上跟&lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt; 谈，决定一起做下去了。
就酱紫。。。。&lt;/p&gt;
&lt;h2 id="最后上线的网站情况："&gt;最后上线的网站情况：&lt;/h2&gt;&lt;h3 id="没有用户系统，输入只支持比赛号码搜索，没有新建、没有编辑、没有删除，没有分页，不支持排序，一共四个页面就有一个没有内容，不支持IE。"&gt;没有用户系统，输入只支持比赛号码搜索，没有新建、没有编辑、没有删除，没有分页，不支持排序，一共四个页面就有一个没有内容，不支持 IE。&lt;/h3&gt;&lt;h3 id="每个人都说，这个网站好棒！"&gt;每个人都说，这个网站好棒！&lt;/h3&gt;&lt;h3 id="嗯，MVP，m可以很小很小很小的。有想法就赶紧上线验证吧！"&gt;嗯，MVP，m 可以很小很小很小的。有想法就赶紧上线验证吧！&lt;/h3&gt;
&lt;p&gt;感谢 ruby-china, 感谢 kevin 老师，感谢&lt;a href="/xiaolai" class="user-mention" title="@xiaolai"&gt;&lt;i&gt;@&lt;/i&gt;xiaolai&lt;/a&gt; 和&lt;a href="/lilu" class="user-mention" title="@lilu"&gt;&lt;i&gt;@&lt;/i&gt;lilu&lt;/a&gt; ，感谢&lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最后 插播两个广告：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Kevin &lt;a href="/knwang" class="user-mention" title="@knwang"&gt;&lt;i&gt;@&lt;/i&gt;knwang&lt;/a&gt; 的 Tealeaf 课程非常好，没有 kevin，我不可能只花这么点时间就做出一个能用的网站并部署到 heroku 上线的。推荐自学 rails 觉得太慢或者碰到障碍的人都去上他的课。虽然他的课对于我们赚人民币的人来说有点小贵，但是，你自己时间更贵！
&lt;a href="https://www.gotealeaf.com" rel="nofollow" target="_blank"&gt;https://www.gotealeaf.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;有没有爱跑步、爱马拉松、爱铁人三项的同学或者打算跑马拉松的 Ruby 爱好者愿意加入我们。我们先只是为跑友自己服务，先解决自己的硬需求，做有用的东西。
p.s. &lt;a href="/bullockzhou" class="user-mention" title="@bullockzhou"&gt;&lt;i&gt;@&lt;/i&gt;bullockzhou&lt;/a&gt; 是设计出身的前端 mm 哦，自己会给 mbp 换 ssd 和内存，目前已经开始学 ruby 了。ruby-china 的众多男童鞋你们懂得！&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Tue, 26 Mar 2013 02:52:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/9750</link>
      <guid>https://ruby-china.org/topics/9750</guid>
    </item>
    <item>
      <title>ActiveRecord 如何根据 association 排序</title>
      <description>&lt;p&gt;有 Student,Exam,Result 三个类，学生会考 0-n 门考试，得到 0-n 个成绩&lt;/p&gt;

&lt;p&gt;Student&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&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="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:exams&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:through&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:results&lt;/span&gt;
   &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Exam&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Exam&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&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="n"&gt;attr_accessible&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;
   &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:students&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:through&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:results&lt;/span&gt;
   &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Result&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Result&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&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="n"&gt;attr_accessible&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt;
   &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:student&lt;/span&gt;
   &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:exam&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如我想对学生按照 ruby 的考试成绩排序，可以这么写：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Student&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:results&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="s1"&gt;'results.exam_id ='&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="no"&gt;Exam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_by_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'ruby'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;order&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'results.score DESC'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（中间的 where 写的很丑，有没有更好的写法？）&lt;/p&gt;

&lt;p&gt;但是这样只会得到参加过 ruby 考试的学生的列表，没有 ruby 成绩的学生不会返回。
如何获得包含所有学生的列表，按照 ruby 成绩排序，并且把没有 ruby 成绩的同学排在最后面呢？&lt;/p&gt;

&lt;p&gt;谢谢。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Tue, 06 Nov 2012 11:29:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/6563</link>
      <guid>https://ruby-china.org/topics/6563</guid>
    </item>
    <item>
      <title>Stackoverflow 管理真心严啊</title>
      <description>&lt;p&gt;前几天搜到的一个问题，stackoverflow 上搜到答案，但是方法不是特别好，后来看 railscasts 发现更好的解决方法了。
好心上 stackoverflow 回答原问题，把 railscasts 的链接贴上，说了一下比原答案好在哪里。&lt;/p&gt;

&lt;p&gt;过了半天，被 moderater 删了！&lt;/p&gt;

&lt;p&gt;看了一下，勉强符合这一条“barely more than a link to an external site“ &lt;/p&gt;

&lt;p&gt;果然是编程问答第一站啊&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Sun, 04 Nov 2012 21:57:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/6527</link>
      <guid>https://ruby-china.org/topics/6527</guid>
    </item>
    <item>
      <title>Mountain Lion 下安装 ImageMagick 和 RMagic</title>
      <description>&lt;p&gt;升级到 Mountain Lion 以后突然发现 ImageMagick 不能用了。网上搜了一下，找到这个教程，做下了比较靠谱的解决了，除了中间撞墙。
记录一下以分享。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tektastic.com/2012/07/getting-rmagic-and-friends-to-work-on.html" rel="nofollow" target="_blank"&gt;http://tektastic.com/2012/07/getting-rmagic-and-friends-to-work-on.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quick checklist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Mountain Lion&lt;/li&gt;
&lt;li&gt;Install XCode 4.4&lt;/li&gt;
&lt;li&gt;Install command line tools from XCode 4.4 Preferences dialog&lt;/li&gt;
&lt;li&gt;Install XQuartz &lt;a href="http://xquartz.macosforge.org/trac/wiki/X112.7.2" rel="nofollow" target="_blank"&gt;http://xquartz.macosforge.org/trac/wiki/X112.7.2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;In terminal run
a. brew update
b. brew uninstall imagmagick
c. brew install --fresh imagemagick
d. wipe out your ~/.rvm folder
e. reinstall RVM and install the latest ruby 1.9.3-p-194&lt;/li&gt;
&lt;li&gt;run "bundle" in the project folder&lt;/li&gt;
&lt;li&gt;run "rake" and rejoice&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;其中 5.3 撞墙了。。。
'''
brew install --fresh imagemagick&lt;br&gt;
==&amp;gt; Downloading &lt;a href="http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6.7.7-6.tar.bz2" rel="nofollow" target="_blank"&gt;http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6.7.7-6.tar.bz2&lt;/a&gt;
curl: (56) Recv failure: Connection reset by peer
'''&lt;/p&gt;

&lt;p&gt;自己另外翻墙下载后，放到/Library/Caches/Homebrew 解决撞墙问题。&lt;/p&gt;</description>
      <author>xmonkeycn</author>
      <pubDate>Fri, 03 Aug 2012 21:45:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/4724</link>
      <guid>https://ruby-china.org/topics/4724</guid>
    </item>
  </channel>
</rss>
