从这里搬走了,有了自己的家,估计没人订阅我这里的博客,Google Reader上只有我自己。
新地址为 http://www.onlymarshall.com阅读全文>
发表于 @ 2009年05月05日 00:07:00 | 评论( loading... ) | 举报| 收藏
用ExtJS做UI层的确很好看,在IE7(我们抛弃了IE6), Chrome, Safari下运行都挺好,但Firefox总有点问题,都是关于Grid的。昨天碰到的问题是GridPanel(就是表格),当某列的内容超出了预设的宽度的时候,会把这一行撑爆,结果列就无法对齐,很难看。用Firebug + IEDevBar看了半天(IE是好的,Chrome还没有可用的调试器),才发现问题在于Firefox对text-overflow:ellipsis这个CSS3的属性不支持。Google了一番,这里推荐了两个方法,第一个方法更优雅一些,使用了mozilla的扩展属性-moz-binding,直接用上了XUL和XBL。第二种牵涉到了Javascript,感觉不是很好。这里有一个代码的下载,一开始我自己拷贝代码下来捣持了半天也没搞定,直接下代码就OK。
今天又碰到一个ExtJS在Firefox下显示的问题。有关于GroupingView的GridPanel的。不改了,应该没人会注意到吧。
阅读全文>
发表于 @ 2009年03月04日 22:20:00 | 评论( loading... ) | 举报| 收藏
前几天APIS爆出了个奇怪的BUG:某个小组关闭任务后,任务自动被duplicate,然后子任务也丢失了。手工查看数据库,发现数据库里居然只有一条Task记录,Hibernate却返回两条。findById(id为主键)居然会返回两条记录,这就奇了怪了。
用Firebug看记录,发现抛出了异常。"More than one row with the given identifier was
found"。可是数据库里明明只有一条记录啊。二话不说google发现了这个post,顿时想起来由于关联(association)而产生万恶的outer
join。排查了几个关联(出问题的那个类偏偏是最heavily-associated),终于在一个与Part类上发现了问题。虽然是关联,却发现另外一方(Part)存在重复的记录,直接影响到Task类。找到原因,assign给Part类的责任人,问题解决。阅读全文>
发表于 @ 2009年02月22日 13:51:00 | 评论( loading... ) | 举报| 收藏
之前做项目一直被数据库schema改动折腾得不行,找了不少工具,比如migrate4j,dbmigrate和liquibase之类的,感觉都不是很满意。其实我的需求很简单,不需要数据库的DSL(比如migrate4j或者db:migrate的那种用Java/Ruby描述DDL),只需要纯的SQL(也就是db:migrate生成的SQL),只需要前向操纵(即不需要回滚),有Eclipse的插件。
现有的migration工具,都是使用分开的文件作为不同版本的内容,这带来了很大的灵活性。但是我的打算是对现有的开发模式有最小的影响。比如现在项目的开发方式是使用一个schema文件外加几个基础数据文件。于是我打算直接使用SVN作为数据库版本的保存工具,利用SVN的特性做版本化。最直接使用的就是SVN的版本号。不过这样的问题在于基本无法做rollback,除非使用两个文件,一个construction,一个destruction,但这要求两个文件一起提交,带来了不少复杂性。现有项目的schema不需要做rollback,正好这么做。工阅读全文>
发表于 @ 2009年01月18日 00:27:00 | 评论( loading... ) | 举报| 收藏
这个其实应该是常识,只不过以前做的J2EE应用大部分是内网里跑的东西,所以性能上没什么问题。这次APIS由于有在外面用的可能,加上使用了一些比较大的javascript框架(Ext),所以性能问题瞬间窜了上来。
以前做的J2EE应用没有使用上达500K的框架,最多就是几十K的Prototype,所以没什么问题。一个页面一般也就几十K最多了。但这次还在开发中的APIS,由于还在用debug版本的库,所以单单Ext就膨胀到了一个多M,加上不知道是Struts还是Tomcat默认写入Response的cache-control:
no cache,在远程用起来就很慢,一般一个页面需要十多秒种甚至更久,实在无法忍受。前几天集中解决了问题。
首先是Cache-Control的问题,Google了好一阵,没有什么直接配置的方法,只好自己抄了一个一个Filter,通过和web.xml里配置的配合勉强凑合着用。一般就是对*.do实施no-cache政策,其他需要缓存的img,
js文件,统统加阅读全文>
发表于 @ 2008年10月02日 23:46:00 | 评论( loading... ) | 举报| 收藏
xplanner部署错误 TypeMismatchException异常阅读全文>
发表于 @ 2008年06月15日 15:54:00 | 评论( loading... ) | 举报| 收藏
ubuntu 8.04 flash 中文乱码阅读全文>
发表于 @ 2008年06月06日 23:21:00 | 评论( loading... ) | 举报| 收藏
解决Ubuntu升级8.04 “未能计算更新”问题阅读全文>
发表于 @ 2008年06月02日 21:14:00 | 评论( loading... ) | 举报| 收藏
Google悉尼一个寻找工程师的做题站点。现在还只有3题,一周更新一题。题目难度不大,但是还挺锻炼编程或者思考能力的(虽然robot那题比较火星,最新一题似乎用硬算的)
http://treasurehunt.appspot.com阅读全文>
发表于 @ 2008年05月30日 10:50:00 | 评论( loading... ) | 举报| 收藏
Upgrading to Spring Security 2.0(zz)
原文:http://raibledesigns.com/rd/entry/upgrading_to_spring_security_2
就是appfuse作者的博客,做了一些精简阅读全文>
发表于 @ 2008年05月04日 18:43:00 | 评论( loading... ) | 举报| 收藏
这两天要研究下Acegi,给人做技术讲座,内容要求和Acegi有关。于是想找个代码阅读器来看代码。
第一个想到的就是SourceInsight,但考虑到SourceInsight还是收费软件,于是转向开源产品。搜了半天,找出一个Code Browser,没想到功能比Notepad++还差一些。于是无奈就用Eclispe看看代码。因为Acegi和Spring结合得很紧密,顺便把 Spring IDE的帮助看了一下,第一次用了起来,觉得很好用啊。这么多年开发Spring应用居然都没好好用Spring IDE,真是惭愧。
Attach上Source的Eclispe+Spring IDE看起Acegi代码果然非常方便,按住Ctrl进行智能导航,还有引用查找等。怪不得一直找不到合适的开源代码查看器,原来IDE就已经这么好用了。阅读全文>
发表于 @ 2008年03月12日 18:35:00 | 评论( loading... ) | 举报| 收藏
翻了一些小标题,全文见http://kurafire.net/log/archive/2007/06/22/pagination-101
1. 提供大面积的点击区域
2. 不要使用下划线
3. 明显地标识出当前页码
4. 格开各页的链接
5. 提供前一页和后一页
6. 使用第一页和最后一页的链接,当有必要时
7. 把第一页和最后一页的链接放在最外面,如下
« First ‹ Previous Current Next › Last »阅读全文>
发表于 @ 2007年10月13日 23:16:00 | 评论( loading... ) | 举报| 收藏
Validator原来不可以Render两次阅读全文>
发表于 @ 2007年07月19日 22:58:00 | 评论( loading... ) | 举报| 收藏