- 浏览: 199662 次
- 性别:
- 来自: 北京
最新评论
-
ray_linn:
eval的速度也是慢得可以
Rails每周一题(十六): Evaluation in Ruby -
orcl_zhang:
>> Thing.my_class_eval do ...
Rails每周一题(十六): Evaluation in Ruby -
andyhu1007:
robbin 写道何况多进程rails都是每进程hold一个持 ...
线程安全的Rails -
robbin:
ruby本地的lib不是线程安全的,你多线程rails读取本地 ...
线程安全的Rails -
andyhu1007:
刚帮同事trouble shoot了一个问题:def upda ...
ActiveRecord的ORM问题域 Q&A
文章列表
1. 纵观程序设计语言的发展,一个很显著的特点的是以机器的性能换取人的效率,以提高开发者的工作效率和满足人的需求为目标,在所有的资源中人是最昂贵的资源,因而程序的编写从面向机器逐渐向面向人过渡。
2. 早期二 ...
- 2008-08-29 12:53
- 浏览 1084
- 评论(0)
YAGNI stands for “You Ain’t Gonna Need It.” It is the battle cry of agile
project development to help prevent speculative development.
预想开发是个迷人的陷阱,在编码时时刻提醒自己:它究竟是会让代码变得更好,还是平添复杂度?出自预想的框架,如EJB和JSF,都是过度工程的典范。最好的框架是从可工作的应用程序中抽离出来的,比如ROR,它的累赘是如此之少。
软件开发人员应保持与用户或者Business
An ...
Java语言创建者当初由于“让Java能够向后兼容如c这样的语言”等原因,给Java语言带来了很多包袱(如数组从0开始,以及令人费解的初始化顺序等)。幸运的是,他们同时也创建了Java平台。如今Java越来越多得被作为平台来使用,这种趋势将会在未来几年中成为主流。
相较于通用语言,Groovy、Ruby这样的动态语言迅速地提升了程序员的生产力;无状态的函数式语言
(如Haskell, OCaml, Erlang, SML)让编写线程安全的程序更加容易;DSL让日益困难的问题域得到解决。拥抱多语言编程吧!几年之后,软件开发将大不相同。
...
- 2008-08-21 21:32
- 浏览 1105
- 评论(0)
“我们一直都是这么做的”或者“大家都说它应该是这样的”,都不足以成为一件事之所以该这么做的理由。固守标准跟没有标准一样糟糕,有时候标准反而限制了一些有价值的变通。
很多人在听到“异类”思想的时候,就会像“被激怒的猴子”一样。其实我们应该保持质疑权威、质疑圣牛、质疑自己偏好的习惯。
--------
《The Productive Programme ...
- 2008-08-17 00:21
- 浏览 1030
- 评论(0)
Dietzler定律说的是:80%
的客户需求可以很快完成;下一个10%
需要花很大的努力才能完成;而最后的10%
却几乎是不可能完成的,因为你不能把所有的工具和框架都“招致麾下”。
强大的语言加上特定领域元层次提供了目前最好的解决方案。
生产率来自DSL
跟问题域的紧密相连;能力来自于表层之下的强大语言。
基于强大语言并且易于表达的DSL
将会成为一个新的标准。
...
从5个小时,到20分钟,15倍优化。
其中单个核心计算从20秒优化到0.2秒,百倍加速。
总结几点:
1. 优化算法:比如,有一个n方复杂度的算法明显可以优化成n的复杂度。 (额外计算:10分钟 to 1秒)
2. 缩减总量:原先对200多个property进行了计算,后来发现可以进行缩减,过滤掉不需要计算的property,最后剩下100个左右。 (总时间:缩减一半)
3. 去除重复:有一处重复计算,6次可以缩减成1次。(核心计算:节省4秒,20秒 to 16秒)
4. sql化语句:多条语句,就需要多次查询,就需要多打log。如果可以(不会 ...
1. 数据库查询
people = Person.find(:all, :joins => "INNER JOIN accounts ON people .id = accounts.person_id",
:conditions => "people .gender = 'male' AND accounts.number < 10",
:select => "*")
有啥问题?
如果people表和accounts ...
今天遇到两个有趣的性能问题。
1. 把所有数据都读取到一个数组,然后在内存层面去操作,每次从数组中查找一个对象耗时:0.02秒。因为数据太多,性能严重不行,完成整个操作要30分钟。试着改成每次都从数据库去find的方式来操作,每次查询也只耗时0.02秒,而且还要比内存层面的操作稍快。加个index,速度立马提升一个数量级,整个操作只需3分钟。cool!
2. 一个update操作,因为数据较多,耗时将近10分钟。看了一下,一个n方的算法完全可以改成n的。后来直接改成sql去update,耗时不超过1秒钟。
当然,为了性能问题,写一堆一堆的sql,或许就是噩梦的开始。
计算机生而该为你完成那些简单重复的劳动,自动化一切应该被自动化的东西吧。
1. 作为高级计算机用户,应该比普通计算机用户更懂得利用计算机的效能。Windows带来的图形界面却恰巧是一个程序员生产率的束缚。
2. 重复操作简单的任务,让一个人无法把精力集中于更应该被关注的东西,也会让一个人变得更笨。
3. 实现自动化的过程,恰是一个学习新知识,开拓新思维的过程。
...
- 2008-08-06 22:38
- 浏览 1001
- 评论(0)
TDD给设计带来太多好处,以至于可以把它称为测试驱动设计。
1. TDD迫使你在编写代码之前,考虑更多对象之间的交互。
2. TDD迫使你把对象的创建封装在一个更好的层次上。
3. TDD会让你写出更加小而内聚的方法,从而使方法的重用以及纠错变得更加方便、快速。
4. 同样,TDD所带来的高测试覆盖率,能保证你的重构更加可靠。
-------- 《The ...
昨天看程序员杂志,看到里面推荐一些firefox插件。其中一个插件让我当即就想装上使用,那就是IE Tab。IE Tab意味着什么,它意味着你以后再也不用去打开邪恶的IE浏览器了。
Firefox强大的扩展能力,配合优秀的插件,是我心中的浏览器之王。
推荐一些我自己用着很爽的firefox工具和插件。
1. google toolbar:当然这跟我自己使用太多google应用相关:gmail,reader,calendar,desktop,docs, notebook等等。有了google toolbar,我要使用大部分google的功 ...
- 2008-07-12 20:40
- 浏览 1352
- 评论(6)
一个页面如果因为计算和内容太多render时间过长,可以把页面分散成多部分异步render。虽然从本质上讲,没有改变页面render的总时间,但是适合服务器负荷不大的网站。因为后者会同时发起多个request,可以让多个http server同时处理,这样会让客户端等待时间减少很多。
问题:
1. 用IE浏览页面,如果一个Javascript method running过长,会跳出:Stop running this script?的error.
2. 而在firefox下完好,速度很快。
原因:
IE不支持XPath
,这是导致prototype的select方法在IE下采用遍历的方式,很慢。XPath和纯粹遍历比起来,速度要快好像不止一个数量级。
解决方案:
使用javascript的setTimeout异步触发可以从running过长的javascript方法中独立的部分,实际上是骗了IE...
异步是王道啊 ...
听了精益工厂之旅
的演讲,个人有几点有趣的思考:
1. 环境越干净,不好的东西越容易被发现。
2. 人往往涉及面越多,权限越大,犯错的机会就越大。
3. 人没有机器高效,准确,但人的优点在于能发挥主观能动性。
其实人类社会也是如此:
干净整洁的社会环境:让一切不应有的地下交易都被放到阳光下,社会的黑暗才会越来越少。
完善的社会制度:用制度来限定人的权限,减少潜在的破坏,错误和浪费。
自由:在遵循社会制度的前提下,每个人都应享有最大的自由。自由催生人的主观能动性,推动社会的进步。
什么是精益?这篇文章
我觉得很好 ...
当我们来到一个陌生的城市,就像我当初刚去杭州上学。到了周末,并想着跑出去玩一趟。但对城市又不了解,于是只好找地图,或者打电话问114应该坐什么车到哪里哪里。对于这个城市的一个新人来说,能找到地儿,已算不错。但坐车的机会多了,你并会了解其实从之江到武林广场根本不只302这辆破车,还有Y5,K28路等可以走。K28是空调车,速度挺快,车挺新,但走的道挺绕,耗时久。Y5也是空调车,速度快,道又近,而且走的是旅游路线,一路上风景极好。
当我们对这个城市越来越了解,越来越熟悉的时候。再次出门,我们心中对坐什么车自然已有概念。并会根据每次出门的不同情况,作不同取舍。
比如:
...