@huacnlee 同学辛苦了!
http://todomvc.com/ 各种时髦的前端框架实现的 Todo List。
去年创智天地单方取消了 RubyConfChina 第一天的分会场,然后建议我把所有原定的议程移到 innoSpace,被我回绝了。
我隐隐感觉 Google 最后会吧 Reader 留下来,因为 Google 不会放弃掉多年积累的 RSS 数据,所以今天宣布这个决定主要是为了吸引大家的注意力,今天几乎没有人关注 Android 的老大被裁撤啊。
我已经联系过盛大云客服,提交了详细的故障时间点的报告,他们的技术人员在排查,静候消息。
不是 MongoDB 的问题,从昨天开始到现在,几乎每个小时我都会收到 DNSPod 的服务器宕机通知,而且我检查过系统负载很低,可能是盛大云遭到攻击了。
这个广告为期两周,会很快撤下的。
#13 楼 @sundevilyang 若非不是自行删除,就是我们的论坛遭到 Injection attacks?cc @huacnlee
因为是临时计划将一期内容分割成两期,按照原来的计划,Teahour 下周会发布另外一个嘉宾的访谈,所以 Gitlab 专题会在本周周末录制,但是要等到下下周才会发布。
#11 楼 @xmonkeycn 的确如此,官本位思想根深蒂固。
好可耐啊~~
我很难理解 JavaScript
的排名,我觉得它应该排在 C#
之上,但是图表显示它居然下降了。
我自己的使用习惯是这样:我会频繁的刷社区首页,如果帖子的回复的 counter 有变化,我就会点进去看最后一条或者最后几条回复的内容,因为这里是个小社区,所以超过一半的讨论话题我都感兴趣,都会不停的点进去看,如果改成 Nested 的方式,如何去定位最后一条或者最后几条回复?
对目前的回复更习惯,不是很喜欢 Hack News 或者 http://cnodejs.org 上的回复样式。
没有挂啊? http://rails-china.org
#16 楼 @zw963 为什么是 Rspec 而不是 MiniTest,选择的理由是看性能?还是代码是否臃肿?这些其实都是表象。对我来说,一个简单工具和一个复杂工具放到一起的时候,不一定是越简单就一定越好,要看你要解决的问题的复杂度(其实更多的时候是你对你要解决的问题的复杂度理解的维度),MiniTest 能给你的东西从他的名字就能看出来 —— Mini。当你要测试的目标以及环境复杂多变的时候,RSpec 给了你足够的支撑(单独写的话,会是一篇长文,试着用一小段概括一下)。
RSpec 的背后除了 subject
, let
之外东西还有很多,不过对我来说最有价值的是开发者对测试方法学层面的不断探索,挖掘,以及将成果沉淀这个框架工具中。翻出 2008 年我刚刚接触 RSpec 的时候的文章,哪个时候我从 UnitTest 转向 RSpec,最困扰我的并不是语法,而是 BDD 这个概念,当接受了 BDD 思想之后,你会发现你开始不愿意回去 UnitTest 了。虽然现在的 MiniTest 通过语法扩充,也能写出 RSpec 的 describe … it ….
这样形似的代码,但问题是,MiniTest 作为 Ruby 的标准库也就止步于此了。两者一起用下来,体验根本不是那么回事。RSpec 并未止步于一个 BDD 框架,它还提供极为优秀的 Mocks 套件,灵活的扩展机制让你方便的编写扩展插件,比如 Shuda ,推动 Acceptance Test Driven Planning 并衍生出 Cucumber 去实现 Full Stack Agile Methodology 等等...
关于 belong_to
的问题,是 Shuda 提供的。
赞 @hooopo 大神!
为什么不直接贴项目地址呢? https://github.com/3n1b-com/3n1b.com
第一个问题其实 @nightire 解释的非常准确,且给出的例子中的注释也没有问题,不过为了帮助你理解,我给你贴一个更加直观的代码。
describe Post do
# 这里没有定义 subject,所以默认就是 Post, 而且不需要去初始化对象,因为测试的是 Post 本身而不是它的实例。
# 出处: https://github.com/thoughtbot/shoulda
it { should belong_to(:user) }
it { should validate_presence_of(:title) }
end
第二个问题,不能仅仅按照学究的方式从语言和功能定义角度去理解,而是要从 DSL 帮助增强代码的表达能力角度来理解。这里的 subject
和 let
都是通过尽量用英文的自然语法来加强代码的语义表达能力,subject
就是英文语法中的主语成分, it
在这里所指代的正是主语,当 it
和 block 中的 subject
同时出现的时候,目的是为了增强代码的语义可读性。let
是定义 helper 方法的另外一种表达方式,并且有 lazy-evaluated
的优点:
# 重构上面的例子
describe "Checking Account initialization" do
# let 可以改写成
# def sharting_balance; Money.new(50, :USD); end
let(:starting_balance) { Money.new(50, :USD) }
subject { CheckingAccount.new(Money.new(50, :USD)) }
it "has $50 balance" do
expect(subject).to have_a_balance_of(starting_balance)
end
it "has a balance attribute which equals the starting balance" do
expect(subject.balance).to eq(starting_balance)
end
end
#4 楼 @simlegate 学好英文其实很重要,不过即使是中文,海峡对岸也有不错的资料,建议仔细研读一下这篇 @ihower 大大的文章:http://ihower.tw/blog/archives/3949
原来 github-markdown
跟 redcarpet
是一个作者,Ruby China 用的是 redcarpet 并做了一些 Hack,如果直接用 github-markdown
就对了。不同的是 Ruby China 是在后端完成 code highlight 的,而你用的是 highlight.js。