狂想的蛇之黄金时代已过
徘徊在工程和艺术之间

2006年11月8日

类名:
  org.apache.commons.collections.BeanMap

用法:
  //...得到orderLine
  Map<String,Object> map = new BeanMap(orderLine);
  map.put("vendorDiscount",orderLine.getProduct().getVendor().getDiscount());
  //得到orderLine
  Map<String,Object> map = new BeanMap(orderLine);
  map.put(
"vendorDiscount",orderLine.getProduct().getVendor().getDiscount());

使用场景:
  dwr中可以直接把java对象转换成js对象传回,但是有时候需要在传回的对象上附加属性,例如在订单项(订单中的一行)中,我想附加相关产品供应商信用等级优惠条件,如果直接把对象关系图传过去,需要传4层,其实我只要在订单项后附加一个属性就行了。所以我就先把订单项(OrderLine)转化为一个map,向这个map中put新的属性,这样传回到浏览器的对象还是和以前一样的,只是附加了一个vendorDiscount:0.6 .

posted @ 2006-11-08 20:04 黄金时代已过 阅读(2995) | 评论 (0)编辑 收藏

2006年11月7日

其一:
<div height="300px" style="overflow:scroll;">...</div>后滚动条死活不出来,如果写成

<style>
.scrollbox{
  height:300px;
  overflow:scroll;
}
</style>
<div class="scrollbox">...</div>
就一切正常。

后来发现如果直接使用style属性,应该写成<div style="height:300px; overflow:scroll;">...</div>
nnd,郁闷,不禁敬仰美工的工作。

其二:
为了图简便,直接用dwr调用了manager的方法时,manager中引用的其他manager总是null,仔细想想,发现manager是由spring管理的,所以应该creator="spring",而不是creator="new"。得解。
这样调用终归不爽,还是应该有services才行,看来偷懒是不行了。

另:昨晚看了一下dwr2.0,发现ajax终于走到正道上了。Reverse Ajax! 在java中设置界面控件的内容,细粒度的请求和更新,由后台来主导完整业务逻辑,而html就像c/s程序中的资源文件一样被加载,这样才能真正适合企业应用(网站还是用以前的才对)。环境已经成熟,到应用不知道还要等多久
posted @ 2006-11-07 22:48 黄金时代已过 阅读(149) | 评论 (0)编辑 收藏

2006年4月18日

今天无意中竟然下载到了Refactoring Databases,哎呀,贪财贪财!
开发过程中database schema 的变化总是引起很多麻烦,希望这本书能有所帮助。
posted @ 2006-04-18 11:36 黄金时代已过 阅读(371) | 评论 (1)编辑 收藏

2006年4月7日

Ruby中递归层数好像有限制,如函数
def test(a)
   if a==1
     1
   else
     a*test(a-1)
   end
end 

puts test(780)
输出:84972392897964072098249533940415832032901226147549483885937628906393387016759749166779390912108512193770727396731176148684817099219862241070518329897737419790700834153338358789804054247254662503406001643932256413944181262536626134781963753899870200241216683120301369375204827350328695627459108294334206019027913654171970749305552969884823232609436511764040695691647958710090181422374514248844937618454949350242415512115167050621676322866110695044767187626021475743251277035950696737988473189355598223688184822894258942937354547600827689072340880783574157611601536909313655637665907495308227315772813753604514703047972667545052382993341295609886125445821680344472136291787954204104578202488733326674486963013530280156726975853827440416172311405531398732685573114934257635906047009853269995109193159402626590282423997495520628272375213203911332399362264123774789131108251376802391556145557618075940012872003438523613025838162437433166091728438034202592564763334170361422871174553523479072202135150477947497462319792004248488747067669226929977889728474667753117513554197181549148693463434107347395476738175071015937790196691810903035212156632705787120639270121315037723516623976522946189161132382463371686857543746042274574224547052957738646625809966919808812294116127379399188579075359032740380579901160073141745025441935558361164158736914927029701136227557285045299271693750581590882877670856450852068994081414494717924806473008367067880435766156267541200120373117672789242005510204657433232442062443350842731528466220850546079536126591907570634996939687881634634077903962785409702209303560414980140946811644475359177263347973998479963954822343870777236845722878913093643097703061981548194975005332841862304172509388532508262400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


puts test(781)
输出:
E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `*': stack level too deep (SystemStackError)
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
 ... 727 levels...
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:5:in `test'
from E:/eclipse-SDK-3.2M6-win32/workspace/testruby/Test5.rb:9

posted @ 2006-04-07 13:06 黄金时代已过 阅读(1021) | 评论 (1)编辑 收藏
 
Ruby一直被认为没有好的IDE,今天把RDT跑起来了,还不错,虽然还不能和JDT相比。

使用 Eclipse 插件 Ruby Development Tools
http://www-128.ibm.com/developerworks/cn/opensource/os-rubyeclipse/

为何配合RDT,我特地下载了一个Eclipse3.2M6,界面好花哨,但用起来心虚虚的,干活还使用3.1踏实。
posted @ 2006-04-07 11:10 黄金时代已过 阅读(349) | 评论 (0)编辑 收藏

2006年4月6日

在ruby和相关的一些一切被说得很神时,听听一个异端的发言

Why Ruby on Rails won't become mainstream
http://beust.com/weblog/archives/000382.html
posted @ 2006-04-06 18:36 黄金时代已过 阅读(219) | 评论 (0)编辑 收藏

2006年4月4日

vs
图片大小不一样。没办法,谁叫Prefactoring讲的是big picture呢,:)
posted @ 2006-04-04 13:07 黄金时代已过 阅读(216) | 评论 (0)编辑 收藏
 

3年前读《人月神化》,当时并没有什么特别深的体会,只是记住了关于狼人的传说。

几年过去了,在实践中,我一次又一次地把系统中的症结往深处考虑,竟然发现它们不约而同地指向同一个根源:没有银弹!
一个非常朴素又普遍存在的理论,使我多次从困惑中跳出。

略列以下几条:
1.不要企图实现一个全息系统。
实例:权限模块在任何系统中需要,如果能建立一个完备的权限系统,将可以在很多系统中使用。
无论时间多么充足,这样的模块都无法完成。并不是这个系统过于复杂,而是因为我们计划实现的是一个全息的系统,它是连续的,而软件系统是离散的,无法用一个离散的系统实现一个连续的系统,可以使用多种方法来模拟,但是绝不可能真正实现一个连续的系统。

2.分析模式的使用
分析模式是前人对某一具体领域的归纳总结。但如果真的在分析过程中想把分析模式用到极致,就会发现自己已经走上了绝路。想适应所有的变化,想用一个系统解决这个领域中所有的问题,这是不可能的。

好久没抽烟,一支烟竟然是我有点晕了,睡了先。

posted @ 2006-04-04 00:09 黄金时代已过 阅读(281) | 评论 (0)编辑 收藏

2006年4月3日

随感随想,并无逻辑性,如果哪位看不过去,请睁一只眼闭一只眼。

当系统的复杂度达到一定的规模,任何小聪明都无济于事,还不如老老实实,做点实事。

一个前辈曾说:如何把事情做对是工程,如何把事情做好是艺术。

刚开始做软件时总觉得自己是在从事一份艺术的工作,一个一个程序在自己的手中编写出来,能运行,能给很多人运行。这个过程就像一种固化的思想,能动态地和软件使用者交流。对待程序也像对待艺术品一样神圣,变成时总怀着一颗虔诚的心。
后来又走向另一个极端,觉得自己的工作无非和砖瓦匠一样,按照图纸,把一砖一瓦安置在正确的地方
在后来才知道,编写软件既不是艺术,又不是完全是工程,而永远都走在由工程到艺术的途中。借孔夫子的话,软件开发应该走中庸之道。

所谓中庸,就是作对的事情,不走极端。
假设工程是0,艺术是1,那中庸是多少?
0.5?不对!绝对的中点显然不是中庸。中庸可能是平均分布在[0,1]区间上,或者是[0,1]上的某个概率分布,不过这些对实际工程都已经没有任何意义。
换个假设,如果工程是0,艺术是无穷大,中庸是多少?
呵呵,有点无聊了。

posted @ 2006-04-03 23:37 黄金时代已过 阅读(190) | 评论 (0)编辑 收藏
仅列出标题