- 浏览: 335248 次
- 性别:
- 来自: 北京
文章分类
最新评论
下面是一个查找未完成的任务的model:
用find_by可以更优雅的实现:
find_by方法带order参数和find方法的一样。
怎么发论坛来了。。搞错了....................
为什么发到论坛的东西自己删不掉呢?这不合理
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
http://rubyrock.iteye.com/blog/443186
你发这个给我干啥?我早就知道这本书了,so what ?
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
http://rubyrock.iteye.com/blog/443186
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
的确楼主的那些重构, rails 后来版本中的 named_scope 是最好的方式,现在自己写这种 condition query method 已经很少了。
2.
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
校内网只是个特例,大多数公司的网站不会超过5台服务器,你去看看 robbin 的 twitter, javaeye 也三年了,他现在买台服务器也要考虑再三, 还在不停地想法榨干服务器最后一点优化性能的可能,都说横向扩展,但是实际应用中成本的考虑更多一些。而这里大多数人做网站也许一辈子也不会管理超过三台服务器,所以有的新闻只是新闻,有时候对个人和公司来说连参考价值都没有。
PS: ERB,builder 的性能确实要比 HAML 好一些(现在haml差距也不是很大了), 如果只是做输出 xml 的 service 应用,那么 haml 还真没必要用。
参看:
http://ridingtheclutch.com/2009/07/13/the-ultimate-ruby-performance-test-part-1.html
感觉你这个其实可以讨论一下
one 这种封装到底有没有用
two 这种作用有多大,有没有过度封装的嫌疑
1:将其封装为一个 helper 方法或者 controller 方法的确没必要,应该是将它移到 Model 中作为 self method,这样这个方法在 association 中也可以用,这样才有意义。
2:动态方法在网站开发初期还是不错的,可以写出简洁易懂的代码,但是到了后期,多半会重构为 :conditions query , 因为 method_missing 毕竟还是有性能损失的。
感觉你这个其实可以讨论一下
one 这种封装到底有没有用
two 这种作用有多大,有没有过度封装的嫌疑
class TaskController < ApplicationController def incomplete @tasks = Task.find(:all, :conditions => ['complete = ?', false]) end def last_incomplete @task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC') end end
用find_by可以更优雅的实现:
class TaskController < ApplicationController def incomplete @tasks = Task.find_all_by_complete(false) end def last_incomplete @task = Task.find_by_complete(false, :order => 'created_at DESC') end end
find_by方法带order参数和find方法的一样。
怎么发论坛来了。。搞错了....................
为什么发到论坛的东西自己删不掉呢?这不合理
评论
11 楼
下一站,火星
2009-08-09
Hooopo 写道
下一站,火星 写道
Hooopo 写道
1.嗯,放在model更好一些:
2.
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
class Task < ActiveRecord::Base belongs_to :project def self.find_incomplete(options = {}) with_scope :find => options do find_all_by_complete(false, :order => 'created_at DESC') end end end
2.
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
http://rubyrock.iteye.com/blog/443186
你发这个给我干啥?我早就知道这本书了,so what ?
10 楼
Hooopo
2009-08-09
下一站,火星 写道
Hooopo 写道
1.嗯,放在model更好一些:
2.
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
class Task < ActiveRecord::Base belongs_to :project def self.find_incomplete(options = {}) with_scope :find => options do find_all_by_complete(false, :order => 'created_at DESC') end end end
2.
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
http://rubyrock.iteye.com/blog/443186
9 楼
rainchen
2009-07-31
关于这种状态型的查询,建议引入状态机,配合一些named_scope小技巧:
http://www.iteye.com/topic/412610?page=2#1081161
实现 Task.completed 这种查询 简单有效又优雅
是的,我在卖瓜
http://www.iteye.com/topic/412610?page=2#1081161
实现 Task.completed 这种查询 简单有效又优雅
是的,我在卖瓜
8 楼
Hooopo
2009-07-29
前端优化又不是美化,和华丽有什么关系?
这是《高性能网站建设指南》一书推荐的前端优化指南:
http://www.douban.com/subject/3132277/
主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、Gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、Ajax缓存技术和最小化技术等
相信这些还是有点用的.........
这是《高性能网站建设指南》一书推荐的前端优化指南:
http://www.douban.com/subject/3132277/
引用
主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、Gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、Ajax缓存技术和最小化技术等
相信这些还是有点用的.........
7 楼
下一站,火星
2009-07-29
Hooopo 写道
1.嗯,放在model更好一些:
2.
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
class Task < ActiveRecord::Base belongs_to :project def self.find_incomplete(options = {}) with_scope :find => options do find_all_by_complete(false, :order => 'created_at DESC') end end end
2.
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
系统的瓶颈往往在数据库,你数据库都快累了,你前端搞得在华丽有啥用?另外增加硬件并没有你想象的那么简单,这种server farm往往都需要一个庞大的团队维护,人家校内有几个亿的投资,你怎么不去比?
6 楼
koalant
2009-07-29
QuakeWang 写道
对于这种代码重构,我个人比较喜欢named_scope
的确楼主的那些重构, rails 后来版本中的 named_scope 是最好的方式,现在自己写这种 condition query method 已经很少了。
5 楼
koalant
2009-07-29
Hooopo 写道
2.
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
校内网只是个特例,大多数公司的网站不会超过5台服务器,你去看看 robbin 的 twitter, javaeye 也三年了,他现在买台服务器也要考虑再三, 还在不停地想法榨干服务器最后一点优化性能的可能,都说横向扩展,但是实际应用中成本的考虑更多一些。而这里大多数人做网站也许一辈子也不会管理超过三台服务器,所以有的新闻只是新闻,有时候对个人和公司来说连参考价值都没有。
PS: ERB,builder 的性能确实要比 HAML 好一些(现在haml差距也不是很大了), 如果只是做输出 xml 的 service 应用,那么 haml 还真没必要用。
参看:
http://ridingtheclutch.com/2009/07/13/the-ultimate-ruby-performance-test-part-1.html
4 楼
QuakeWang
2009-07-29
对于这种代码重构,我个人比较喜欢named_scope
我使用Dynamic find比较多的地方在和initialize共用,比如记录用户访问他人博客的功能:
class Task < ActiveRecord::Base named_scope :incomplete, :conditions => "complete = false" named_scope :latest, :order => "created_at desc" end @tasks = Task.incomplete @tasks = Task.incomplete.latest
我使用Dynamic find比较多的地方在和initialize共用,比如记录用户访问他人博客的功能:
Visit.find_or_initialize_by_user_id_and_visitor_id(@user.id, current_user.id).update_attribute(:visited_at, Time.now)
3 楼
Hooopo
2009-07-29
1.嗯,放在model更好一些:
2.
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
class Task < ActiveRecord::Base belongs_to :project def self.find_incomplete(options = {}) with_scope :find => options do find_all_by_complete(false, :order => 'created_at DESC') end end end
2.
引用
Make it Work, Make it Clean, Make it Fast (if necessary)
如果真有性能的需要可以加硬件设备,人家校内网都5000台服务器了http://www.programmer.com.cn/419/
如果有时间优化重构,先优化一下前端吧
PS:如果性能真的那么重要,像haml这些东西就没有存在的意义了。
2 楼
koalant
2009-07-29
下一站,火星 写道
引用
def last_incomplete
@task = Task.find_by_complete(false,rder => 'created_at DESC')
end
@task = Task.find_by_complete(false,rder => 'created_at DESC')
end
感觉你这个其实可以讨论一下
one 这种封装到底有没有用
two 这种作用有多大,有没有过度封装的嫌疑
1:将其封装为一个 helper 方法或者 controller 方法的确没必要,应该是将它移到 Model 中作为 self method,这样这个方法在 association 中也可以用,这样才有意义。
2:动态方法在网站开发初期还是不错的,可以写出简洁易懂的代码,但是到了后期,多半会重构为 :conditions query , 因为 method_missing 毕竟还是有性能损失的。
1 楼
下一站,火星
2009-07-29
引用
def last_incomplete
@task = Task.find_by_complete(false,rder => 'created_at DESC')
end
@task = Task.find_by_complete(false,rder => 'created_at DESC')
end
感觉你这个其实可以讨论一下
one 这种封装到底有没有用
two 这种作用有多大,有没有过度封装的嫌疑
发表评论
-
新博客
2012-04-23 20:47 1734https://db-china.org -
Draper: View Models for Rails
2011-10-07 01:19 2268Draper是一个Ruby gem,它让Rails model ... -
Active Record batch processing in parallel processes
2011-10-07 01:20 2270Active Record 提供 find_each来分批处理 ... -
答复: Sinatra:一个可以作为Rails有益补充的框架. 简洁而不简单
2010-04-07 18:21 1656既然是这么简单的事情,用rack写也比较有趣: 一共5个文件, ... -
mass-assignment protection【?】
2010-03-18 18:31 101Attributes named in this ma ... -
基于jquery和mini_magick的图片裁剪
2009-12-04 19:32 3826jquery imgAeraSelect插件地址:http:/ ... -
Showing SQL statements in the Rails console
2009-10-23 13:29 19811.windows下创建_irbrc文件,并设置环境变量 2. ... -
Security Tips
2009-10-01 17:28 976Hackers Love Mass Assignment 对于 ... -
HTTP request 相关
2009-09-25 13:52 1258>> app.request.query_para ... -
可定制的Rails错误回显
2009-09-16 09:30 2831通常rails页面的错误信息提示都是放在首部用 error_m ... -
用户注册邮件激活
2009-09-04 17:26 50221.网站用户相关表中有一个字段用来记录用户帐号是否激活。 ... -
REST in Rails资料收集
2009-08-25 13:08 1254LetRails的一系列介绍: ... -
check-if-record-was-just-destroyed-in-rails
2009-08-20 11:02 1019问题: So there is record.new_ ... -
Using indexes in rails: Index your associations
2009-08-19 14:23 1152Many rails developers are g ... -
委托 in rails
2009-08-09 01:16 1167Delegation is a feature Rails ... -
还是习惯用法好啊。。。
2009-08-08 09:00 1219在看ASCIICast的rails示例里面看到这样的代码: ... -
弄了个小论坛...
2009-08-07 05:27 1059http://github.com/hooopo/Rails- ... -
I18n for Rails之hello world
2009-08-01 04:52 1184平台:rails 2.3.2 ruby 1.8.6 1.rai ... -
Using with_scope
2009-07-29 01:57 856In this episode we’ll talk abou ... -
Move Find Into Model
2009-07-29 01:52 983下面是在控制器里面通过model查找未完成的任务: c ...
相关推荐
- **Graphical Solution Process:** A step-by-step guide to solving optimization problems graphically. - **Use of Mathematica and MATLAB for Graphical Optimization:** Demonstrates how software tools ...
- FIX: Added division by zero protect in method TFlexControl.MovePathSegment. - FIX: The background beyond docuemnt wasn't filled when TFlexPanel.DocClipping=True. - FIX: In "Windows ClearType" font ...
Python is a dynamic programming language. It is known for its high readability and hence it is often the first language learned by new programmers. Python being multi-paradigm, it can be used to ...
methods etc - we've implemented it for you in the autocomplete feature for PHP, HTML, JavaScript and even CSS. Also, you can always get necessary help information by F1 or using special Help control....
Python is a dynamic programming language. It is known for its high readability and hence it is often the first language learned by new programmers. Python being multi-paradigm, it can be used to ...
The authors present a dynamic memory model and an associated optimization framework that exploits the computation-memory tradeoff to find near-optimal implementations of algorithms. The goal is to ...
condition was removed by modifying AcpiWalkNamespace to (by default) ignore all temporary namespace entries created during any concurrent control method execution. An additional namespace race ...
time type inference (augmented by optional type annotations), and partly because of a strong focus on performance from the inception of the project, Julia's computational efficiency exceeds that of ...
- **Particle Filters:** An algorithm for sequential Monte Carlo methods that is used for state estimation in dynamic systems. It is particularly useful when dealing with non-linear and non-Gaussian ...
The goal of this guide is to manage this complexity by describing in detail the dos and don'ts of writing C++ code. These rules exist to keep the code base manageable while still allowing coders to ...
For reflective objects, such as mirrors and dynamic reflections, render-to-texture functionality using FBO and dynamic cube mapping are detailed. In addition to graphics, image processing techniques ...
Search for types/methods/properties (substring) Hyperlink-based type/method/property navigation Base/Derived types navigation Navigation history BAML to XAML decompiler Save Assembly as C# Project ...
methods etc - we've implemented it for you in the autocomplete feature for PHP, HTML, JavaScript and even CSS. Also, you can always get necessary help information by F1 or using special Help control....
methods etc - we've implemented it for you in the autocomplete feature for PHP, HTML, JavaScript and even CSS. Also, you can always get necessary help information by F1 or using special Help control....
ASP.NET Core: Cloud-ready, Enterprise Web Application Development by Mugilan T. S. Ragupathi English | 9 Jun. 2017 | ASIN: B072KDVHCS | 1414 Pages | AZW3 | 36.34 MB Create fast, scalable, and high-...
adopting different pricing methods for different products to solve the problem of single pricing strategy in the price strategy, standardizing the site selection of branch stores to address the issue...
SQL Server can find all pages belonging to an index or table by examining the IAM pages. Sysindexes contains a pointer to the first IAM page, and each IAM page contains a pointer to the next one. The ...
Discuss dynamic locking and lock escalation. Differentiate locks, latches, and other SQL Server internal “locking” mechanism such as spinlocks and other synchronization objects. Recommended ...
methods: { finish: function(finished) { this.$save('finished_at', finished ? Date.now() null); } }, dynamic: { done: function() { return !this.finished_at; } } ...