楼主的分析挺正确! 这门课程是伯克利本科高年级的课程,建议学过 cs61a 或者 cs61b 的人学,要求是,有较好的编程基础。 这门课程讲到了软件工程的方法面面,全面但深刻,关键点都讲到了,剩下的可以在实践中慢慢体会。
顺便说一句,作为写过几年代码的人,我始终认为,写测试比写代码难。。。
语法好啊,很适合那群搞数学的。 还有数据随随便便就能读进来。 当然还有轮子多。
poltergeist
问题很邪乎,经常是有的机器上有问题,有的没有。
我本地跑了下,似乎是用到了 CSS Animations,可以先试试直接禁用掉(很多都这么干),具体可以参考这个链接
还可以点击事件换成find('#xxx').trigger('click')
,这个是不管是否有遮挡,都能 click。
我直接 revert 8f5df2358e7ee9c9a65d0412e0299e4f14659564 这个 commit,集成测试是可以跑过的。配置应该没问题。我猜可能是 phantomjs 版本的问题,我本地的是
phantomjs --version
2.1.1
另外 selenium 和 poltergeist 方法有一些的不同,同时使用(我们一个用在本地调试,一个用于 CI),略蛋疼,有想解决办法,但一直也没时间去搞。
同时建议使用screen_size: [1400, 1400]
,因为屏幕太小的话,会有因为点不到东西(元素不在显示器内)而报错的时候。
只是对自己的看法罢了。不会把这种看法加到别人身上,能解决问题,就是好样的。我对我自己的希望就是基础功再扎实一点。记忆本来就是学习的一部分,遗忘也是。
要求本来就是多样的。 很多时候要求不一样,比如 form 可以手写,可以用 form_for。有的时候我还会建议去了解 form_for 如何构建参数的,参数拿到了如何做赋值的。
需求总是多种多样的,总有彼此合适的。
我毕业的时候数学不会,算法不不会,数据库不会。但都慢慢补回来了。倒不是觉得这些在工作中能用到,而是觉得作为一个程序员,这些不会,说不过去。 再一个就是给自己一个可能。真的有一天要用到这些呢,比如实现个算法,比如玩玩机器学习?数学、算法这些都是没办法在短时间学会的。
ActiveRecord::Relation
用到了很多函数式编程的思想。
有需要,才会真的去做查询、装载成对象,这样可以避免没意义的执行。 也就是是函数式中的 lazy。lazy 可以带来很多好处,比如模块化,不需要对中间值进行计算,无限长的数组
每一次方法的调用,都返回一个新的ActiveRecord::Relation
对象,而不是做修改。
所谓的 pure function。另外用到了 chain 这个 pattern,jQuery 采用了同样的设计方法。
想进一步了解的话,可以看下这篇文章 http://patshaughnessy.net/2014/9/17/20000-leagues-under-activerecord
@scriptfans 哈哈,改天分享下 elixir?
Python 没在项目里用过,不做评论。但觉得可以同 Julia 比较一下。
机器学习,或者科学计算,和其它领域最大的不同就是,它和数学关系密切。有一句话是 show me your code。放在机器学习、算法里,反倒是 show me your formula 来得实在。
因为是和数学打交道,语法越接近数学越好。
比如 Julia 的方法定义
foo(x) = x
foo(x, y) = x + y
l = (x, y, z) -> x + y + z
再就是是否有为常见问题提供解决方案 比如矩阵运算
julia> A = [[1, 1] [2, 3]]
julia> A + A
2 4
2 6
julia> A * A
3 8
4 11
julia> transpose(A)
1 1
2 3
还有是否能使用现有的 lib,Julia 可以很轻松的调用 C 和 Fortran,以及 python 还有 java 的代码。
t = ccall( (:clock, "libc"), Int32, ())
Type 比 Class 更适合科学计算。
Julia 的背后支持者也非常强大,一些大学已经开始使用 Julia 授课。
最后是速度,Julia 足够快,当一段代码,一跑就是一天的时候,语言速度优势就提现出来了。
哈,pre condition, post condition,都是 clojure 的特性啊。
有点对 ruby 失望的意味,ruby 3 没有明确的目标,ruby 2 没有什么令人激动的新特性。还顺带强烈吐槽了写法太多,只要一种就好。
感触最深的是
The feature has already here it just not evenly distributed. Ruby has fallen behind and we are not the community that was known for leading the innovation anymore.
clojure 或者 lisp 确实是值得学习的语言。
顺便贴下视频连接
numpy 速度快,语法友善。
如果一个程序动不动就要跑一天,就需要考虑语言的快慢了。
能回复,当然是最好的。不过也没办法要求每个 hr 都做到。。。
但也可以找下原因,是不是简历不够吸引人?是不是有些关键信息没提到?最重要的还是解决问题。
CS50, CS61a, CS169
可以试试 simplecov
#8 楼 @xiaoronglv coursera 有专项课程 发证书,不过证书应该是这个专项的证书,而不是学校的毕业证书。
有些学校是有远程教育的,但具体的没有了解过。
:plus1:
#4 楼 @numbcoder 课程的话建议 cs 61a 这门课就是从 SICP 演变过来的。但用的是 python,因为 berkeley 觉得用 lisp 讲不是很划算。
写测试是件很麻烦的事情。。。但很多人觉得很容易。后补测试,成本也很大。
stub
一般是在单元测试中使用,用来避免依赖。
这post :create, format: :json, user_id: other_user.id
是一个 api 调用,我觉得属于集成测试了。
而这个时候,觉得已经不用在乎哪个方法调用了,而是期待有什么样的结果。
store_dir
是怎么写的?我才你跟 module_name 相关。
再也不怕墙了!