`
andyhu1007
  • 浏览: 193649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
1. 纵观程序设计语言的发展,一个很显著的特点的是以机器的性能换取人的效率,以提高开发者的工作效率和满足人的需求为目标,在所有的资源中人是最昂贵的资源,因而程序的编写从面向机器逐渐向面向人过渡。   2. 早期二 ...
        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让日益困难的问题域得到解决。拥抱多语言编程吧!几年之后,软件开发将大不相同。               ...
        “我们一直都是这么做的”或者“大家都说它应该是这样的”,都不足以成为一件事之所以该这么做的理由。固守标准跟没有标准一样糟糕,有时候标准反而限制了一些有价值的变通。         很多人在听到“异类”思想的时候,就会像“被激怒的猴子”一样。其实我们应该保持质疑权威、质疑圣牛、质疑自己偏好的习惯。                                                                                                             -------- 《The Productive Programme ...
        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. 实现自动化的过程,恰是一个学习新知识,开拓新思维的过程。                                                                                 ...
    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的功 ...
  一个页面如果因为计算和内容太多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也是空调车,速度快,道又近,而且走的是旅游路线,一路上风景极好。     当我们对这个城市越来越了解,越来越熟悉的时候。再次出门,我们心中对坐什么车自然已有概念。并会根据每次出门的不同情况,作不同取舍。     比如:     ...
Global site tag (gtag.js) - Google Analytics