关于选择 Faraday / RestClient:
Faraday 的应用场景是处理比较复杂的 HTTP 调用。因为本质是针对网络的编程,所以在报错,缓存,日志,编解码,分页,序列化等方面很容易会有特定的需求。Faraday 通过提供类似 Rack 中间件的抽象,能够比较容易处理这些需求。很多 Rack 的中间件可以直接放到 Faraday 里面用。
如果需要很简单的 HTTP 调用,尤其是只考虑 happy path, 用 RestClient 比较简单
一个想法,可以考虑写一个中间件 站在 Rack::Cache 前面 或者就放在 config.ru 里面。如果 match URL 就删掉 HTTP 上面相关的 headers - 清空或者是设置成让 cache 失效
如果前面有 Nginx 也可以考虑放到那里面
能够给别人带来帮助
把“别人“具体化到一个有消费力的人群,比如“喜欢古典摇滚的吉他手”, “单身富人基督徒”或者“卖女鞋的淘宝店主”然后在这个人群里面混段时间,就是产品追着你了
产品是给人用的。与其纠结产品,不如去熟悉你要服务的人
当然支持。
- “感谢 @happypeter 和 Ruby China 社区的中文翻译工作,希望能对学习 web 开发的新手有所帮助。” - 可以 - 好的,我会联系你
感谢推荐!最近还会有新书上架 ;)
Rails 的难点主要是 Web 开发的难点,如果你的受众是完全新手,建议多花些时间将 HTML, HTTP, URL 和 SQL 讲清楚。如果是其他框架转来学习 Rails 的,可以直接从 Rails 开始。
asset pipeline, sass, environments, config, 这些都可以后讲,可以考虑把握最核心的东西反复多角度重复讲。弱化 CSS。在开始的时候所有非核心的对新手都是分心。
原来是夫妻店啊,加油!
#18 楼 @happypeter 跟学生基础,教学的方式和教学的内容都有关,不好一概而论;不是所有的人都适合在线学习编程的,好你们的项目想教谁。如果项目想教所有想学习编程的人是很难做好的
加油 Fred!
当你想用一个很复杂嵌套的 Hash 的时候,很有可能更好的方案是把这样的复杂数据封装成对象,这样即使针对深层数据的操作也可以提到表面上来。
http://solnic.eu/2012/06/25/get-rid-of-that-code-smell-primitive-obsession.html
最容易的可以是你做一个 Linux VM 放在你自己的服务器上学生可以下载,而你的视频系列可以在同样的环境下操作,能够做到即使学生从来没有接触过 Linux 和任何编程训练,也可以模仿你的每一步做出一个项目,就很好了。
#48 楼 @xiaoronglv Twilio?
#16 楼 @stardiviner 这个是很好的材料,如果你看着觉得不吃力会很好。 http://exercism.io/ 也很好。如果想看些入门的材料,可以看这本书:http://www.gotealeaf.com/books/ruby
找些带有讲解的练习做。只看书是不行的。
这两个月是怎么学的?
在上海的时候见过楼主 恭喜转行成功
Meta-knowledge 这个说法很好,我觉得程序员的职业瓶颈很多都是 meta knowledge 决定的
技术背景不靠资本做运营最走通的路是
1) 小市场,低竞争不容易被注意可以专心发展(不会被别人用钱砸来竞争) 2) 高价值附加,给每个用户提供大量的价值,产品可以高收费(这样不需要太多的用户来生存) 3) 目标用户已经有对同类产品的付费行为或者已经有强烈付费意愿(不需要说服) 4) 针对的用户在互联网上高度活跃,而且活动地点集中,这样可以很容易有针对性的获取用户(用户获取成本低) 5) 新兴领域和行业可以能使创业者站在行业的前端来不断提供大量的高价值内容来获取用户(信任会帮助获取和转化付费用户)
不需要每条都有,但是没有任何一条的,大市场 低价值附加 用户没有付费习惯或意愿 很少上网 在网上不“扎堆”创业者自己无法树立形象提供社区价值的 是非常难运作的
运营不应该是在产品开发后的考虑,而是要只开发运营成本低的产品 - 当然,如果融资跑马圈地就是完全另外一种玩法了
对于一般的 Rails 项目,DDD 的最大价值在于 Ubiquitous Language - 用业务和应用域的语言来命名类,方法和变量,而不是用技术或者 Rails 的语言来命名,来增进易读性。
看代码形状
越是锯齿形的,锯齿越深的 如果用了 TDD 就越有利
补充几个对时间和当前用户缓存的策略:需要显示当前时间或者 n 个小时前 这种推到客户端用 js 实现 如果页面差异对不同的用户很小可以考虑 1)服务器端贪婪缓存,客户端用 JS 异步实现用户差异化 2)做 action / 页面 / 片段缓存,用 after_action 针对用户差异化 - 这个我没有自己试过,如果有做过的可以谈谈效果怎样
#40 楼 @xmonkeycn 其他的不清楚,cloudflare 是把 DNS 都包过来,所以对缓存页面的请求是完全不经过你的服务器的。
我们在用 cloudflare 可以帮助管理 2,3 的缓存不用自己弄;不知道国内有类似的服务没有
函数数据流风格
fizzfy = ->((n, words)) {n % 3 == 0 ? [n, words << 'Fizz'] : [n, words]}
buzzfy = ->((n, words)) {n % 5 == 0 ? [n, words << 'Buzz'] : [n, words]}
whizzfy = ->((n, words)) {n % 7 == 0 ? [n, words << 'Whizz'] : [n, words]}
special_fizzfy = -> ((n, words)) {n.to_s.include?("3") ? [n, ["Fizz"]] : [n, words]}
initialize = ->(n) {[n, []]}
normalize = -> ((n, words)) {words.empty? ? n : words.reduce(:+)}
puts (1..100).map(&initialize).map(&fizzfy).map(&buzzfy).map(&whizzfy).map(&special_fizzfy).map(&normalize)
产品经理项目经理什么的 把经理换成“管理员”就对了
这个 video 里面有很多 Basecamp 的具体实践
#t=2m57s
#8 楼 @hpyhacking 很好的一期!
希望能了解下除了网站/用户系统外的具体的交易系统是怎样的技术实现;如何直接对 P2P 的 block chain 进行编程?我看到过 coinbase 的 API, 但不知道这样 API 的底层技术实现是怎样?
还有,你们是否做 market making 来提供流动性?在交易所这样高并发的环境下 Ruby 是否是很好的选择?你们采用什么样的算法来确保最优化的交易?