<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/liujin4049" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/liujin4049" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 05 May 2009 00:07:00 GMT</lastBuildDate><title>Marshall's</title><link>http://blog.csdn.net/liujin4049/</link><item><title>博客搬迁</title><link>http://blog.csdn.net/liujin4049/archive/2009/05/05/4150198.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/4150198.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/4150198.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=4150198</trackback:ping><description>从这里搬走了，有了自己的家，估计没人订阅我这里的博客，Google Reader上只有我自己。
  新地址为 http://www.onlymarshall.com&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/4150198.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 05 May 2009 08:07:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2009/05/05/4150198.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2009/05/05/4150198.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2009/05/05/4150198.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362983/1214124</fs:itemid></item><item><title>Firefox实现text-overflow:ellipsis</title><link>http://blog.csdn.net/liujin4049/archive/2009/03/04/3957917.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/3957917.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/3957917.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3957917</trackback:ping><description>用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的。不改了，应该没人会注意到吧。
&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/3957917.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Thu, 05 Mar 2009 06:20:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2009/03/04/3957917.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2009/03/04/3957917.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2009/03/04/3957917.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362984/1214124</fs:itemid></item><item><title>Hibernate里的重复记录</title><link>http://blog.csdn.net/liujin4049/archive/2009/02/22/3921579.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/3921579.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/3921579.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3921579</trackback:ping><description>&lt;br /&gt;&lt;br /&gt;  前几天APIS爆出了个奇怪的BUG：某个小组关闭任务后，任务自动被duplicate，然后子任务也丢失了。手工查看数据库，发现数据库里居然只有一条Task记录，Hibernate却返回两条。findById(id为主键)居然会返回两条记录，这就奇了怪了。&lt;br /&gt;   用Firebug看记录，发现抛出了异常。&quot;More than one row with the given identifier was 
found&quot;。可是数据库里明明只有一条记录啊。二话不说google发现了这个post，顿时想起来由于关联(association)而产生万恶的outer 
join。排查了几个关联（出问题的那个类偏偏是最heavily-associated），终于在一个与Part类上发现了问题。虽然是关联，却发现另外一方（Part）存在重复的记录，直接影响到Task类。找到原因，assign给Part类的责任人，问题解决。&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/3921579.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sun, 22 Feb 2009 21:51:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2009/02/22/3921579.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2009/02/22/3921579.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2009/02/22/3921579.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362985/1214124</fs:itemid></item><item><title>打算写一个简单的数据库迁移工具</title><link>http://blog.csdn.net/liujin4049/archive/2009/01/18/3820407.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/3820407.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/3820407.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3820407</trackback:ping><description>&lt;br /&gt;&lt;br /&gt;    之前做项目一直被数据库schema改动折腾得不行，找了不少工具，比如migrate4j,dbmigrate和liquibase之类的，感觉都不是很满意。其实我的需求很简单，不需要数据库的DSL（比如migrate4j或者db:migrate的那种用Java/Ruby描述DDL），只需要纯的SQL（也就是db:migrate生成的SQL），只需要前向操纵（即不需要回滚），有Eclipse的插件。 
&lt;br /&gt;    
现有的migration工具，都是使用分开的文件作为不同版本的内容，这带来了很大的灵活性。但是我的打算是对现有的开发模式有最小的影响。比如现在项目的开发方式是使用一个schema文件外加几个基础数据文件。于是我打算直接使用SVN作为数据库版本的保存工具，利用SVN的特性做版本化。最直接使用的就是SVN的版本号。不过这样的问题在于基本无法做rollback，除非使用两个文件，一个construction，一个destruction，但这要求两个文件一起提交，带来了不少复杂性。现有项目的schema不需要做rollback，正好这么做。工&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/3820407.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sun, 18 Jan 2009 08:27:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2009/01/18/3820407.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2009/01/18/3820407.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2009/01/18/3820407.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362986/1214124</fs:itemid></item><item><title>使用Cache-Control和gzip提升tomcat应用性能(整理)</title><link>http://blog.csdn.net/liujin4049/archive/2008/10/02/3010370.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/3010370.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/3010370.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3010370</trackback:ping><description>&lt;br /&gt;    
这个其实应该是常识，只不过以前做的J2EE应用大部分是内网里跑的东西，所以性能上没什么问题。这次APIS由于有在外面用的可能，加上使用了一些比较大的javascript框架(Ext)，所以性能问题瞬间窜了上来。&lt;br /&gt;以前做的J2EE应用没有使用上达500K的框架，最多就是几十K的Prototype，所以没什么问题。一个页面一般也就几十K最多了。但这次还在开发中的APIS，由于还在用debug版本的库，所以单单Ext就膨胀到了一个多M，加上不知道是Struts还是Tomcat默认写入Response的cache-control: 
no cache，在远程用起来就很慢，一般一个页面需要十多秒种甚至更久，实在无法忍受。前几天集中解决了问题。&lt;br /&gt;    
首先是Cache-Control的问题，Google了好一阵，没有什么直接配置的方法，只好自己抄了一个一个Filter，通过和web.xml里配置的配合勉强凑合着用。一般就是对*.do实施no-cache政策，其他需要缓存的img, 
js文件，统统加&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/3010370.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Fri, 03 Oct 2008 07:46:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/10/02/3010370.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/10/02/3010370.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/10/02/3010370.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362987/1214124</fs:itemid></item><item><title>安装vsftpd, 设置虚拟用户</title><link>http://blog.csdn.net/liujin4049/archive/2008/06/23/2579263.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/2579263.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/2579263.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2579263</trackback:ping><description>安装vsftpd, 设置虚拟用户&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/2579263.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 24 Jun 2008 00:40:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/06/23/2579263.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/06/23/2579263.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/06/23/2579263.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362988/1214124</fs:itemid></item><item><title>xplanner部署错误</title><link>http://blog.csdn.net/liujin4049/archive/2008/06/15/2549892.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/2549892.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/2549892.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2549892</trackback:ping><description>xplanner部署错误 TypeMismatchException异常&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/2549892.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sun, 15 Jun 2008 23:54:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/06/15/2549892.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/06/15/2549892.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/06/15/2549892.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362989/1214124</fs:itemid></item><item><title>ubuntu 8.04 flash 中文乱码</title><link>http://blog.csdn.net/liujin4049/archive/2008/06/06/2518507.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/2518507.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/2518507.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2518507</trackback:ping><description>ubuntu 8.04 flash 中文乱码&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/2518507.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sat, 07 Jun 2008 07:21:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/06/06/2518507.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/06/06/2518507.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/06/06/2518507.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362990/1214124</fs:itemid></item><item><title>解决Ubuntu升级8.04 “未能计算更新”问题</title><link>http://blog.csdn.net/liujin4049/archive/2008/06/02/2504708.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/2504708.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/2504708.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2504708</trackback:ping><description>解决Ubuntu升级8.04 “未能计算更新”问题&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/2504708.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 03 Jun 2008 05:14:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/06/02/2504708.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/06/02/2504708.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/06/02/2504708.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362991/1214124</fs:itemid></item><item><title>Google TreasureHunt</title><link>http://blog.csdn.net/liujin4049/archive/2008/05/30/2495421.aspx</link><wfw:comment>http://blog.csdn.net/liujin4049/comments/2495421.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/liujin4049/comments/commentRss/2495421.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2495421</trackback:ping><description>Google悉尼一个寻找工程师的做题站点。现在还只有3题，一周更新一题。题目难度不大，但是还挺锻炼编程或者思考能力的（虽然robot那题比较火星，最新一题似乎用硬算的）&lt;br /&gt;http://treasurehunt.appspot.com&lt;img src =&quot;http://blog.csdn.net/liujin4049/aggbug/2495421.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Fri, 30 May 2008 18:50:00 +0800</pubDate><author>Marshall</author><comments>http://blog.csdn.net/liujin4049/archive/2008/05/30/2495421.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/liujin4049/archive/2008/05/30/2495421.aspx</guid><dc:creator>Marshall</dc:creator><fs:srclink>http://blog.csdn.net/liujin4049/archive/2008/05/30/2495421.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/liujin4049/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/liujin4049/~1214151/212362992/1214124</fs:itemid></item></channel></rss>