@bydmm 插件的 js 有一个自己的运行环境的,不会导致重复加载的 bug
我还买过他的 Emacs Tutorial ......
我预约了,没有抢到。。。
乐视 C1S 看起来不错。。。已经设定好闹钟了。。。。
作为一个一天都在终端 + 浏览器下度过的纯键盘流的开发者的话,我感觉 Thinkpad+Linux 已经无敌了... 秒杀 Mac...
----- Linux 脑残粉
在大多情况下下面一句话测试不了 create 这个 action 吧,应该会有些其它的情形 (针对非法数据之类的), 所以针对 create 的测试是肯定要再写一次的
post :create, content: 'Lorem lipsm'
那么,你喜欢 create 这个 action 有 bug 后,出一堆错误呢?还是只想让测试 create 的测试出错?
然后这样子写就好了
class Server::Configuration
include Qor::Dsl
node :build_after do
node :my_service
end
end
用 qor_dsl .... ;-)
@hoowolf ping
基本步骤就是生成 params -> 加签名 -> 发送请求 -> 处理
然后再根据自己的需要加上 key 轮换啊,错误处理,一些 helper 之类的就好了
他官方的文档也蛮好了,可以看一下,不难的
肯定可以的。。。测试错了吧
我以前写过一个 gem 用来做备份服务器的
库存不要减
例如:product.available_quantities 是 10 吧,然后下了 5 个订单,但是没有发货,结果你这边又有补货了,手头有 15 个产品了,怎么办?available_quantities 肯定不能写 15, 要写 available_quantities - 5 个订单的数量,这样子的话维护起来很容易出错,加上取消订单的同时在补货这种情况更会出错
可以维护双个字段,一个是现有库存,一个是已卖产品数量,在发货的同时,将已卖产品数量 -1, 现有库存 -1
可以看下我的 slides http://jinzhu.me/2012rubyconf
软链接不能远程,考虑 mount 文件服务器
@vkill 其实你的程序中,类似这种 find Product.find(1),占用的时间应该是比较少数的,而占用时间最多的是 Product.on_selling, Product.find(1).related_products , Product.find(1).hot_comments 这些方法,qor_cache 要解决的主要问题也是缓存这些执行时间比较久的方法。
例如下面这个 我随手写的一个方法:
class Product def recommend_products order_ids = OrderItem.where(:product_id => id).map(&:order_id).uniq product_ids = OrderItem.where(:order_id => order_ids).map(&:product_id) Product.where(:id => product_ids) end end
这个方法是用来根据一个产品推荐其它产品,他依赖的规则就是其它购买这个产品用户购买的其它产品,这个方法的结果不只是根据 Product 相关,还根据 OrderItem 相关
如果用 qor_cache 的话,你可以这样写
cache_key :orders do [Order, OrderItem] end
cache_key :products do Product end
scope :product do cache_method :recommend_products, 'orders', 'products' end
上面的配置文件的意思就是说,我把 recommend_products 这个实例方法给缓存起来了,但是,如果 Product 有任何更新,Order, OrderItem 有任何更新,我都要重新取 recommend_products 的值
其实双冒号也可以用来调用方法
例如:
class B
def b
puts 'hello'
end
end
B:: new::b (去掉new前面的空格)
B.new.b
效果是等价的
估计这里有点小误会了。。。这个 github 地址(https://github.com/qor)是我们项目 Qor 的 Organization
我个人的 github 地址是: https://github.com/jinzhu
这个 gem 是 100% 的 Made in China 呢 ;)
第一个问题:以第一个 Gemfile 为例,貌似 slide 没有讲解,如何 load Gemfile 这个配置文件中的内容?就直接开始 Gemfile.find(:gem) 获取结果了??
如果你的配置的文件名是 Gemfile 的话,或者是 BUNDLER_GEMFILE 的 ENV 值话都会自动加载这个配置文件,就是下面这句话的作用,实现了默认配置文件的功能:
default_configs [ENV['BUNDLE_GEMFILE'], 'Gemfile']
如果没有定义默认配置文件的话也可以通过下面的两种方法加载
Gemfile::Configuration.load('文件名')
或者通过 block
Gemfile::Configuration.load do
#文件内容
end
第二个问题:楼主是这个 Gem 的作者吗?
嗯,是的,最近我在整这方面的事情,希望通过 Qor 平台,把我们开发过程中的一些经验,教训分享一下,并提升下我们的基础库的代码质量。
嗯。。。slides 写的不够好。。。讲的时候也是前后跳着来的。。。
Qor 只是个通用名称,是很多工具的合集,QorDSl 也是其中的一个小工具,Qor 总的来说就是一个开发平台,会包含一些工具来解决我们日常开发过程中是一些问题:
例如: 1, 我们平时写的 gem,engine 或者 rails application 会依赖外部 gem,但可能会有一个版本兼容性问题,例如可以用在 rails 3.1 下,但升级 3.2 出错之类的问题,我们写了个 Qor Test 来解决这一系列的问题(还没有完全完成,不过基本成形 https://github.com/qor/qor_test )
2, 我们的一些缓存策略,解决我们缓存过程中遇到的一些问题。现在只有一个简单的 readme,写了一部分代码还没有 push 上去,等完成度再高一些再 push。 https://github.com/qor/qor_cache
3, 多服务器的监控,进程维护,已经有一个做完的方案了 Nagios.rb,不过现在代码有些私有信息,要整理下才能开源。。。
4, 一个应用在多服务器上 log,数据分析之类的
等等其它的常见问题。。。
@saberma shopqi 有个漏洞,只要把“加入购物车”这个按钮的 disable 给去掉,就可以下单买票了。。。库存没有做校验。。。
Transaction 就是存款,付款的所有操作的记录