﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Steady's Java Zone-随笔分类-技术随笔</title><link>http://www.blogjava.net/steady/category/4432.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 27 Feb 2011 15:17:30 GMT</lastBuildDate><pubDate>Sun, 27 Feb 2011 15:17:30 GMT</pubDate><ttl>60</ttl><item><title>IntelliJ IDEA 9.0 注册机/注册码/keygen/破解版</title><link>http://www.blogjava.net/steady/archive/2009/12/14/305944.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 14 Dec 2009 12:06:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2009/12/14/305944.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/305944.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2009/12/14/305944.html#Feedback</comments><slash:comments>26</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/305944.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/305944.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/steady/archive/2009/12/14/305944.html'>阅读全文</a><img src ="http://www.blogjava.net/steady/aggbug/305944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2009-12-14 20:06 <a href="http://www.blogjava.net/steady/archive/2009/12/14/305944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网易有道搜索手机版—一个不错的创意</title><link>http://www.blogjava.net/steady/archive/2009/08/17/291526.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 17 Aug 2009 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2009/08/17/291526.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/291526.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2009/08/17/291526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/291526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/291526.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">　　开始并没有关注这么一个购物搜索的东西，以为只是上网按关键词查查东西，昨天无意中看了说明，发现它远远不是这么简单的东西。它有着一般购物搜索无法相提并论的强大功能，那就是——条形码搜索。</span></p>
<p><span style="font-size: 10pt">　　摄像头对于强大的 Nokia S60 系列手机来说，早已成了标配，扫描条形码等功能，也早就成为手机很容易完成的功能了，但是却很少有人把条形码和网络进一步结合。有道购物搜索是我看到的第一个完成这样功能的软件。其实用起来很简单，手机有个能自动对焦的摄像头和能上网就行了，拿摄像头对准商品条形码处扫描一下，然后会自动上网搜索相关产品，甚至连拍照键都不用按了，一切都是自动完成的。产品数据库也比较丰富，拿身边的小东西随便扫了下，水溶C100，益达木糖醇，各种书籍（书籍的数据库应该是最全的，手边的书全部都能找到）。</span></p>
<p><span style="font-size: 10pt">　　这是一个相当有创意的产品，当然，这个条形码数据库也不是容易得到的，但是这个数据库和后台有道搜索结合，就形成了一个非常完美的应用方式，这应该是我看到的让我眼前一亮的手机软件之一了。</span></p>
<img src ="http://www.blogjava.net/steady/aggbug/291526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2009-08-17 17:26 <a href="http://www.blogjava.net/steady/archive/2009/08/17/291526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVN switch 时碰到的一个小问题</title><link>http://www.blogjava.net/steady/archive/2009/08/17/291521.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 17 Aug 2009 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2009/08/17/291521.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/291521.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2009/08/17/291521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/291521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/291521.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">　　在用 SVN 的时候出现了这样一个小问题，害得我折腾了半天，一个小小的 s 却是罪魁祸首。</span></p>
<p><span style="font-size: 10pt">　　因为项目路径切换，需要从 </span><a href="https://server/trunk"><span style="font-size: 10pt">https://server/trunk</span></a><span style="font-size: 10pt"> 切换到 </span><a href="https://server/tag/1"><span style="font-size: 10pt">https://server/tag/1</span></a><span style="font-size: 10pt">， 不过在文档中后者写成了 </span><a href="http://server/tag/1"><span style="font-size: 10pt">http://server/tag/1</span></a><span style="font-size: 10pt">，恰好 SVN server 用 HTTP 和 HTTPS 都是可以访问的，所以没觉得这个东西有什么错误。不过使用 SVN 做 switch 操作的时候却总是出现 </span><a href="https://server/trunk"><span style="font-size: 10pt">https://server/trunk</span></a><span style="font-size: 10pt">&nbsp;is not the same repository as </span><a href="https://server/tag/1"><span style="font-size: 10pt">http://server/tag/1</span></a><span style="font-size: 10pt">，感觉很奇怪，问了一下相关负责人，当时也没有发现什么问题，不过还是没法操作，最后无意中把 </span><a href="https://server/tag/1"><span style="font-size: 10pt">http://server/tag/1</span></a><span style="font-size: 10pt">&nbsp;换成了 </span><a href="https://server/tag/1"><span style="font-size: 10pt">https://server/tag/1</span></a><span style="font-size: 10pt">，一切 ok。</span></p>
<p><span style="font-size: 10pt">　　被这个问题折磨的比较郁闷了，可能是 SVN repository 不能在 HTTPS 和 HTTP 之间切换吧。</span></p>
<img src ="http://www.blogjava.net/steady/aggbug/291521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2009-08-17 17:21 <a href="http://www.blogjava.net/steady/archive/2009/08/17/291521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单是种美</title><link>http://www.blogjava.net/steady/archive/2009/06/23/283761.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Tue, 23 Jun 2009 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2009/06/23/283761.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/283761.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2009/06/23/283761.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/283761.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/283761.html</trackback:ping><description><![CDATA[<p>　　在Java世界里打拼也好几年了，也看到了各种不同技术的浮浮沉沉，倒是发现了一个简单的规律，最简单的东西往往是最有用的，简单的软件也是种美。</p>
<p>　　在 Java Web 领域，曾经有无数各种各样的框架，Struts1/2，JSF，Echo1/2，Tapestry，Wicket，等等等等了，这么多不同的框架代表了两个不同的方向，除了 Struts 这个是基于请求的，其他几个都是算是事件驱动的，但是后面几个在整个市场上所占的份额也赶不上 Struts 一家。HTTP 请求本来是很简单的，而 Struts 就是基于这样简单的概念，但是却有无数人希望重现 VB 时代的那种拖拖拉拉的编程方式，希望用事件驱动一切，但是大部分人都失败了。失败的原因也其实不那么复杂，有的是不够成熟，像 JSF 这样被 Sun 官方大力推崇的框架，但 Ajax 出现的时候，JSF 中想灵活的用 Ajax 都成了一种奢望，有的是资料太少了。像 Echo2 这样的框架资料，少的跟珍惜保护动物似的。</p>
<p>　　当然也不是没有成功的，微软凭借其强大的开发实力，和开发工具的配合，加上没有给 ASP.net 用户更多选择余地，取得了无人匹敌的成功。但是这个成功在 Java 世界是不会拥有的，Java 世界没有微软这样的巨头，Java 世界中拿得出手的几个开发工具，Eclipse，Netbeans，IDEA，在所见即所得的开发上远远的落后于 Visual Studio。相比微软帝国，Java 世界多的是中小型的，开源的工具产品。规模上都远远落后于微软，Java 世界唯一可走的路便是简单了。对 Java 世界来说，简单不仅仅是种美，更是生存之道。</p>
<p>　　起初作为 Java 世界 PK 微软产品的重头戏，EJB 在学院派的力捧下诞生了，EJB 似乎从来都不打算让人活的轻松，一个简单的东西非得搞的复杂无比才行。而且其持久层 Entity Bean，似乎连基本功能都没能实现，更别谈大规模使用了。EJB 1/2 的时代是开发人员永远无法忘却的噩梦。</p>
<p>　　Java 世界也从来不缺活跃分子，Rod Johnson 这个有种音乐家气质的牛人凭借自己多年的积累，推出了 Springframework，这样一个基于 IoC 和 AOP 两个概念的简单易用的框架，完成了很多起初只有 EJB 才能完成的工作，Spring 也一夜成名，成为 Java 世界使用最为广泛的轻量级应用框架。</p>
<p>　　几乎是同时，来自澳洲的小帅哥 Gavin King 也在用一种与众不同的方案去替代现有比较复杂的 Java 持久化方案，最后他的 Hibernate 也成为替代原有 EJB 持久化方案的选择。相对简单的 Hibernate 也取得了巨大的成功。</p>
<p>　　其实这样的例子在 Java 世界也非常多，以至于后来来自于 Ruby 开发社区的 Ruby on Rails 的出现，给了 Java 开发者当头一棒，原来还有更简单的做法哦。于是 Java 世界慢慢的开始对多种脚本语言进行支持，包括 Ruby，以及后来自创的 Groovy。以此去打造类似 RoR 那样简单的开放方式。</p>
<p>　　生活其实是很简单的，软件开发其实也是一样，用简单的方式，去打造简单的软件，Java 世界用无数失败的教训证明了这一点。像我呢，也喜欢用这样简单的方式去工作，最喜欢 IDEA 去写代码，最喜欢 Struts2 + Spring2 + Hibernate3 这套组合，最最喜欢的是简单，因为简单是最美的工作方式。</p>
 <img src ="http://www.blogjava.net/steady/aggbug/283761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2009-06-23 16:08 <a href="http://www.blogjava.net/steady/archive/2009/06/23/283761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>支付宝终于支持Firefox了</title><link>http://www.blogjava.net/steady/archive/2008/09/14/228924.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sun, 14 Sep 2008 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/09/14/228924.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/228924.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/09/14/228924.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/228924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/228924.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">　　看到在 DBA Notes 的文章（</span><a href="http://www.dbanotes.net/opensource/alipay_support_firefox.html" mce_href="http://www.dbanotes.net/opensource/alipay_support_firefox.html"><span style="font-size: 10pt">支付宝 + Firefox</span></a><span style="font-size: 10pt">）说支付宝已经开始支持 Firefox 了。</span></p>
<p><span style="font-size: 10pt">　　目前支付宝对 Firefox 支持的说明：<br />
　　1. 支持 Windows 平台的 Firefox ，支持版本：Firefox 1.5、2.0、3.x；届时还将提供自动安装功能，现在准备尝试的用户可以到 Mozilla 站点上</span><a href="https://addons.mozilla.org/zh-CN/firefox/addon/6707" mce_href="https://addons.mozilla.org/zh-CN/firefox/addon/6707"><span style="font-size: 10pt">下载支付宝安全控件(AliPay Security Control)</span></a><span style="font-size: 10pt">(也欢迎广大 Firefox 爱好者在留言中给我们提一些反馈意见)；<br />
　　2. 目前在 Windows 平台下的 Firefox 下暂时还不提供对安全证书的支持，但是对安全证书的支持已经提上日程；<br />
　　3. 对 Linux 平台下 Firefox 的支持已经在内部测试中，预期近期内即可发布；</span></p>
<p><span style="font-size: 10pt">　　可以说，这个是网银及电子支付业务的一大进步，支付宝可以说是第一个支持 Firefox 浏览器的支付解决方案，是第一个没有使用 ActiveX 实现的解决方案，同时，据支付宝方面的说法&#8220;我们目前所开发的 Firefox 插件，未做任何修改，就可以较正常运行在苹果的 Safari，和 Google 的 Chrome 浏览器上。经过分析发现，除了接口方案稍有区别，其大体的结构，还有页面的Embed 标签等都是兼容的，相信经过后续的改进，为 Firefox 所开发的安全控件和所修改的页面，只花很小的代价就可以运行在苹果和谷歌的浏览器上&#8221;，对于这方面技术的研究，不光是实现了一个功能，更重要的是，证明了在于非 IE 浏览器下同样可以实现类似 ActiveX 的功能，这样为 Firefox 和 Chrome 浏览器的后续发展提供了有力支持，虽然我用的最多的是 IE，但是 Firefox 和 Chrome 都有令我舍弃不得的好用功能，我想在多家浏览器竞争中，我们会得到更多更好的东西。阿里巴巴是一个重视技术，重视创新，有远见的好企业，赞一个，相反，在相同的电子支付领域，国内多数主流银行的网银服务在这方面几乎不做任何技术创新，改进现有蹩脚的产品，让用户长期忍着去用他们让人作呕的产品，相比较而言，阿里系的主要产品后面都有 UED 的工作，因为用户才是他们最重要的。</span></p>
<span style="font-size: 10pt">From: <a href="http://www.steadyxp.com/">Steady Blog</a></span>&nbsp;- <a title="Permanent Link to 支付宝终于支持Firefox了" style="font-size: 10pt" href="http://www.steadyxp.com/archives/364.html" rel="bookmark">支付宝终于支持Firefox了</a>
 <img src ="http://www.blogjava.net/steady/aggbug/228924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-09-14 22:03 <a href="http://www.blogjava.net/steady/archive/2008/09/14/228924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>点评在线办公领域中的Flash应用</title><link>http://www.blogjava.net/steady/archive/2008/09/08/227752.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 08 Sep 2008 07:44:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/09/08/227752.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/227752.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/09/08/227752.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/227752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/227752.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">
<p>　　在 Web 2.0 的概念被极度热炒，Ajax 这样旧瓶装新酒的技术的应用场景被极度放大，因为 Google 做 Ajax 大家都跟着做，但是这样大家往往忽略了另外一个更为简单有效的 Web 端应用平台 Flash，其实，很多应用场景下，我们可以用 Flash 轻松构建出非常漂亮的互联网应用。通过最近的一些爬网的使用，找到了一些国内外的一些优秀的 Flash 应用平台，来和大家做一些分享。</p>
<p style="text-align: left" mce_style="TEXT-ALIGN: left">　　首先要介绍的是<a href="http://buzzword.acrobat.com/" mce_href="http://buzzword.acrobat.com/">Buzzword</a>，它的前身是 buzzword.com，前几个月已经被 Adobe 收购，这是一个很炫很好用的在线版 Word，这个来自于 Flash 东家的东西还是相当的夺人眼球的。直接打开了他的 demo，我们可以看到下面这样的编辑效果。</p>
<p style="text-align: center" mce_style="TEXT-ALIGN: center"><img class="size-full wp-image-133  aligncenter" title="buzzwordadobe" height="345" alt="" src="http://www.steadyxp.com/wp-content/uploads/2008/08/buzzwordadobe.jpg" width="450" mce_src="http://www.steadyxp.com/wp-content/uploads/2008/08/buzzwordadobe.jpg" /></p>
<p style="text-align: left" mce_style="text-align: left;">　　第一次使用 Buzzword 就被其几乎和 Word 相似的流畅的编辑操作，强大的表现效果所震惊，无论是文字编辑功能，还是非常灵活的图片自由布局，以及简单好用的表格编辑功能，包括批注等，用起来都是非常的顺手，丝毫感觉不出这是在 Web 上使用，在线编辑的文件可以自由的保存在网上或是共享给好友，甚至能方便的导出成 Word，PDF 等格式的文档，同样他还能导入我们在本地编辑的 Word 文件，继续在 Web 上编辑使用。</p>
<p style="text-align: left" mce_style="text-align: left;">　　当然美中不足的是，Buzzword 暂时还不支持中文，我们只能编辑英文的文档，另外它的编辑功能和 Google Doc 这样的前辈比起来，也是有一定差距的，它的在线协作功能，和 Google Doc 这样的强手比起来还是逊色不少。</p>
<p style="text-align: left" mce_style="text-align: left;">　　总体来说，buzzword 给我们一个全新的体验，原来我们在浏览器里也是可以如此流畅的使用和 Word 这样的应用，不得不说，在此方面，Flash 相对 JavaScript 是技高一筹。</p>
<p style="text-align: left" mce_style="text-align: left;">　　下面我们再来看看一个 Flash 版的在线视频系统，来自于 Webex，这个当今世界上最大的网络会议系统提供商，同样也是顶级的 SaaS 服务提供商，最近也在尝试着推出了几款基于 Flash 的网络会议系统，我介绍其中一个比较酷的，<a href="http://video.webexlabs.com/" mce_href="http://video.webexlabs.com/">Video Room</a>，是一个在线的多人视频聊天室。因为是 Flash 的，也就不需要下载客户端，也不要装 ActiveX 控件了。</p>
<p style="text-align: center" mce_style="text-align: center;"><img class="size-full wp-image-137 alignnone" title="videoroom" height="309" alt="" src="http://www.steadyxp.com/wp-content/uploads/2008/08/videoroom.jpg" width="426" mce_src="http://www.steadyxp.com/wp-content/uploads/2008/08/videoroom.jpg" /></p>
<p style="text-align: left" mce_style="text-align: left;">　　在 QQ 或者其他聊天工具上，我们也会看到同样的效果，但是，想想看我们其实是很幸福的，因为我们有 QQ，老外可就没这么爽了，MSN 或者 Skype 还没有这么强的多人在线视频呢，在网页上就能玩转视频聊天，还是个很酷的，特别是当你能即时接收到新的视频聊天请求时实时弹出的仿 MSN 的对话框，让你感觉不到这其实是一个网页。不过这个 Video Room 只提供给我们最基本的视频音频功能，不过拉一帮久未谋面的兄弟进来吵吵闹闹还是很适合的哦。</p>
<p style="text-align: left" mce_style="text-align: left;">　　看完了一些国外大公司做的 Flash 应用，我们再把视线集中到国内，让我们看看<a href="http://www.lenovolabs.com/" mce_href="http://www.lenovolabs.com/">联想实验室</a>给我们带来的一些有意思的东西，其中我们可以看到一个叫做 <a href="http://www.best4c.com/" mce_href="http://www.best4c.com/">Best4c</a> 的在线版绘图工具，可以说这就是一个在线版的 Visio。</p>
<p style="text-align: center" mce_style="text-align: center;"><img class="size-full wp-image-138 aligncenter" title="best4c" height="284" alt="" src="http://www.steadyxp.com/wp-content/uploads/2008/08/224946_85619132.jpg" width="500" mce_src="http://www.steadyxp.com/wp-content/uploads/2008/08/224946_85619132.jpg" /></p>
<p style="text-align: left" mce_style="text-align: left;">　　我们可以用像操作 Visio 一样拖一些组件到编辑区域，然后用线把他们连起来，拼成我们需要的图，如果这不是在浏览器里面进行的操作，我们或许真的会把他当成本地运行的软件呢。Best4c 另外还提供给我们一套在线版的 PowerPoint 工具，让我们可以在线的制作自己的 PPT。虽然总的来说，best4c 提供的东西不是很产品化，使用起来不是太人性化，但是他也向我们证明了，国内在这方面的开发也在进行中，我们也在努力的和世界一同进步。</p>
<p style="text-align: left" mce_style="text-align: left;">　　从以上一些应用我们可以看到，其实我们一直以来几乎可以说是赖以为生的 Office 系列软件，在线通讯软件，通过 Flash 强大的图形功能，让传统的单机应用变成了网络应用，无论是在效果上，还是开发成本，和纯的 HTML + JS + CSS 的传统 Web 应用架构相比，有了较大的改进。从 Flash 成为 Adobe 的一个重要成员，Flash 就开始一步步的蚕食互联网，前几年 Flash 携 FLV 几乎是将微软的 WMV 和 ReadNetworks 的 RMVB 两大流媒体从在线视频上彻底的赶了出去，而这几年，Flex 的推出，让企业应用的前端开发变得简单，去年推出的 AIR 则是更加深化了 Flash 平台在个人电脑中的影响。这一切我们可以看到，Flash 正以前所未有的速度改变着互联网。如果你现在在为企业应用的前端界面而头疼，Flex 可以帮你找回当年 VB 时代的感觉，如果你在做工作流平台的在线流程编辑器，或许你可以考虑一下 Flash，它或许能让你更简单的开发这样的图形应用。</span></p>
<img src ="http://www.blogjava.net/steady/aggbug/227752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-09-08 15:44 <a href="http://www.blogjava.net/steady/archive/2008/09/08/227752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软打击番茄花园是一次一箭双雕的妙招</title><link>http://www.blogjava.net/steady/archive/2008/09/05/227131.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 05 Sep 2008 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/09/05/227131.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/227131.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/09/05/227131.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/227131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/227131.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"><span style="font-size: 10pt">
<p><span style="font-size: 10pt">　　<u>番茄花园美化修改版Windows XP的作者、软件下载网站番茄花园(tomatolei.com)站长洪磊的父亲19日晚22:50独家向新浪科技证实，洪磊已经于<strong>15日(上周五)</strong>被警方拘留审查，网站被关闭，服务器及洪磊的笔记本被警方带走，为洪磊提供的技术开发支持的成都红果科技有限公司也被查封。</u></span></p>
<p><span style="font-size: 10pt">　　<u>据知情人士透露，由于此案是直接由上级机关指派给苏州公安局虎丘区派出所要求查处，并且负责破案的不仅仅是苏州方面，因此很早就有人猜测这是微软方面直接参与促成的事件。</u></span></p>
<p><span style="font-size: 10pt">　　<u>8月20日中午，微软中国也向媒体正式作出了回应称，&#8220;番茄花园从事的软件盗版活动在相当长的一段时间以来十分猖獗，包括微软在内的众多国内外软件公司的权益均受到了严重损害，鉴于此，微软日前和其它软件公司就番茄花园网站的侵权犯罪活动，向国家版权局和公安部进行了投诉，并得到了高度重视。&#8221;</u></span></p>
<p><span style="font-size: 10pt">　　上个月可能最受大家关注的新闻就是这条了，或许大家会简单的认为这次事件纯属微软的反盗版行为，但是这次事件绝不仅仅是简单的反盗版，微软之意在于一箭双雕，一方面严重的打击了最大的盗版源，另一方面为其在中国面临的反垄断调查提供筹码，更深层次的意义在于消灭 Windows XP 在市面上的流行。</span></p>
<p><span style="font-size: 10pt">　　让我们来看看和微软反垄断相关的一些相关动作的时间吧：</span></p>
<p><span style="font-size: 10pt"><strong><em>　　</em><u>7月31日</u></strong><u>，董正伟向商务部、国家工商总局、国家发改委发出《请求保护公民财产权益的建议申请书》，建议对微软开展反垄断调查，罚款10亿美元，并责令其公开程序源代码，并建立微软产品的价格听证制度。</u></span></p>
<p><span style="font-size: 10pt">　　微软做出的回应是：</span></p>
<p><font class="" style="font-family: " mce_style="FONT-FAMILY: "><span style="font-size: 10pt"><em>　　</em><u>&#8220;由于微软大部分以非正版方式存在，正版产品市场份额很小，因此微软在中国构成垄断的前提不存在。&#8221;微软公司资深副总裁、微软（中国）有限公司董事长张亚勤称。这是微软高管自中国《反垄断法》8月1日实施后第一次正面回应微软在中国的垄断问题。</u></span></font></p>
<p><span style="font-size: 10pt">　　从时间上来看，我们可以认为打击番茄花园是微软为了上面这个回应的提供一个有效证据，增加其在反垄断调查方面的筹码。</span></p>
<p><span style="font-size: 10pt">　　最后大家可能忽略了另外一个不是那么重要的信息：</span></p>
<p><span style="font-size: 10pt"><em>　　</em><u>据国外媒体报道,微软此前表示,将于2008年6月30终止Windows XP操作系统OEM(原始设备制造商)版和简装版的销售(系统集成商的相应终止日期向后延迟到2008年12月31日)</u></span></p>
<p><span style="font-size: 10pt">　　也就是说，我们现在已经无法买到正版的 WindowsXP 了，而面对兼容性的问题，对硬件要求过高的问题，也是 Vista 普及的重大瓶颈，特别是在国内 WindowsXP 改版如此流行的情况下，Vista 推广受阻，微软一定会想办法去给盗版 WindowsXP 市场来一次釜底抽薪，让 Vista 在正版和盗版市场的占有率同步提高。</span></p>
<p><span style="font-size: 10pt">　　可以说，这次微软打击番茄花园在各个方面都给微软带来了不少的好处，可谓是一个妙招，而番茄花园站长洪磊也就成为了继珊瑚虫以后的有一个商业利益的牺牲品了。</span></span></span></p>
 <img src ="http://www.blogjava.net/steady/aggbug/227131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-09-05 10:02 <a href="http://www.blogjava.net/steady/archive/2008/09/05/227131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初探淘宝开放平台(TOP)</title><link>http://www.blogjava.net/steady/archive/2008/08/08/220825.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 08 Aug 2008 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/08/08/220825.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/220825.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/08/08/220825.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/220825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/220825.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">
<p>　　<a href="http://www.taobao.com/" target="_blank" mce_href="http://www.taobao.com/">淘宝网</a>，国内最大个人网上交易社区正式推出了<a href="http://www.taobao.com/theme/tao_source/" target="_blank" mce_href="http://www.taobao.com/theme/tao_source/">开放平台（Taobao Open Platform，TOP）</a>，用户可通过淘宝开放的API，创建各种不同的电子商务应用。</p>
<p>　　淘宝开放平台项目是淘宝软件公司面向3rd App开发者，提供API接口和相关开发环境的开放平台。软件开发者可通过淘宝API来获取淘宝用户信息 （卖方和卖方用户信息，私有信息需要授权）、淘宝商品信息 （全淘宝超过1亿个商品的名称、类目、型号、介绍等信息）、淘宝商品类目信息（全淘宝商品索引及分类明细）、淘宝店铺信息（全淘宝店铺信息）、淘宝交易明细信息（在取得用户授权的情况下，查询每笔交易的详细情况）、淘宝商品管理（淘宝商品的上传、编辑、修改等接口）等信息，并建立相应的电子商务应用。同时，作为淘宝开放平台TOP项目的唯一合作平台——阿里软件平台在其中也扮演着重要的角色，它将为开发者提供整套的淘宝API的附加服务：测试环境、技术咨询、产品上架、版本管理、收费策略、市场销售、产品评估等等。</p>
<p style="text-align: center" mce_style="text-align: center;"><a href="http://www.steadyxp.com/wp-content/uploads/2008/08/vuo3x2jd.jpg" mce_href="http://www.steadyxp.com/wp-content/uploads/2008/08/vuo3x2jd.jpg"><img class="size-full wp-image-94 aligncenter" title="TOP" height="298" alt="" src="http://www.steadyxp.com/wp-content/uploads/2008/08/vuo3x2jd.jpg" width="500" mce_src="http://www.steadyxp.com/wp-content/uploads/2008/08/vuo3x2jd.jpg" /></a>&nbsp;</p>
<p>　　很多人会联想到之前 Facebook, Google 等互联网巨鳄推出的 OpenAPI，这些主要都是社交类的 API，提供 SNS 相关的服务，从而扩大自己的用户群。但是很多人都认为，淘宝这样的大型个人交易类的网站，用户数据是非常私密的资料，那么淘宝为何要提供开放 API 呢。</p>
<p>　　大家不妨将视野放宽，扩大到淘宝以外，聚焦到阿里巴巴旗下的另一个子公司——阿里软件，就能看到淘宝开放平台的目的所在，和 Facebook 不同，Taobao Open API 的目标不仅仅是扩大自己的用户规模，重要的是，阿里巴巴要用这个平台为自己赚钱。或许看到这里，大家都很纳闷，既然是开放平台，都是开放的，如何去赚钱，盈利呢？这个重任被压在了阿里软件身上，这个摇钱树就是近几年一个很热的名词 SaaS。一年前，我们看不出来阿里软件有什么不同的地方，提供了诸如阿里旺旺等工具，而且都是免费的。从今年年初开始，大家就开始感觉到阿里软件的变化，它提供的软件不再是纯粹自己开发的了，更多的是将一些重要的数据接口提供给第三方开发者，第三方开发者利用 Taobao Open API 完成自己产品的开发整合工作后，将自己的软件发布到阿里软件平台上，有客户购买了第三方的服务后，阿里软件就顺理成章的从中抽取佣金。这是一个新颖的模式，也秉承了阿里巴巴一贯的风格，首先让别人赚钱，再自己赚钱。阿里巴巴希望通过淘宝这样一个巨大的商业用户平台，发展出一个 SaaS 的中小软件产业圈。</p>
<p>　　淘宝是免费的，淘宝开放平台也是免费的，但是淘宝却慢慢的开始赚钱，并不是提供免费的东西就不能赚钱，人多了，总是有办法赚钱的。</p>
</span>
 <img src ="http://www.blogjava.net/steady/aggbug/220825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-08-08 09:31 <a href="http://www.blogjava.net/steady/archive/2008/08/08/220825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 的安全防护，用 fail2ban 自动封IP</title><link>http://www.blogjava.net/steady/archive/2008/08/02/219626.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sat, 02 Aug 2008 14:08:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/08/02/219626.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/219626.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/08/02/219626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/219626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/219626.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt"><a title="Permanent Link to Linux 的安全防护，用 fail2ban 自动封IP" href="http://agilejava.org/blog/?p=82" rel="bookmark">Linux 的安全防护，用 fail2ban 自动封IP</a><br />
<br />
　　总以为 Linux 比较安全，被攻击的概率较低，不过我用了非常简单的 root 账户密码 (password)，家里的机子两次刚挂上网没半天就被人给改了密码，很是郁闷，不过两次的原因都很简单，挂上网后就开始遭遇不断的试密码，因为密码过于简单，很快就被攻破了，想想看，这也不是个事，密码就算比较复杂，天天也还是会被人试密码，心里总是不爽，找找看有没有什么输错几次密码就自动禁止 IP 的工具。这不，还真找到了个叫 fail2ban 的小工具，通过分析日志来自动 ban 入侵者的 IP，话不多说，装上去用用。</span></p>
<p><span style="font-size: 10pt">　　下载地址在：</span><a href="http://fail2ban.sourceforge.net/rpms/" mce_href="http://fail2ban.sourceforge.net/rpms/"><span style="font-size: 10pt">http://fail2ban.sourceforge.net/rpms/</span></a></p>
<p><span style="font-size: 10pt">　　找到最新版本的&nbsp; rpm 包来安装，装好后，稍微根据自己的情况改一下配置就可以使用了。</span></p>
<p><strong><span style="font-size: 10pt">vi /etc/fail2ban.conf</span></strong></p>
<p><span style="font-size: 10pt">#以 daemon 方式启动 fail2ban<br />
background = true</span></p>
<p><span style="font-size: 10pt">#允许尝试次数<br />
maxfailures = 3</span></p>
<p><span style="font-size: 10pt">#触发 maxfailures 之後的封锁时间(秒); 设为 -1 表示永远封锁<br />
bantime = 3600</span></p>
<p><span style="font-size: 10pt">#以 findtime (秒) 时间内的错误记录作为 maxfailures 的计数基准<br />
findtime = 600</span></p>
<p><span style="font-size: 10pt">#排除 IP 范围, 以空白隔开<br />
ignoreip = 127.0.0.1 192.168.0.0/24</span></p>
<p><span style="font-size: 10pt">#不启用 mail 通知<br />
[MAIL]</span></p>
<p><span style="font-size: 10pt">enabled = false</span></p>
<p><span style="font-size: 10pt">#修改自 VSFTPD, 未提及的部份保持原设定<br />
[PROFTPD]</span></p>
<p><span style="font-size: 10pt">enabled = true<br />
logfile = /var/log/proftpd/proftpd.log<br />
failregex = no such user|Incorrect password</span></p>
<p><span style="font-size: 10pt">#未提及的部份保持原设定<br />
[SSH]</span></p>
<p><span style="font-size: 10pt">enabled = true<br />
logfile = /var/log/secure</span></p>
<p><strong><span style="font-size: 10pt">service fail2ban start</span></strong></p>
<p><span style="font-size: 10pt">这个服务启动以后，每天都能在 /var/log/fail2ban.log 中看到有攻击的肉鸡被 ban 了。</span></p>
<p><span style="font-size: 10pt">2008-08-01 09:13:33,532 WARNING: SSH: Ban (3600 s) 205.189.197.66<br />
2008-08-01 12:24:41,943 WARNING: SSH: Ban (3600 s) 121.52.209.5</span></p>
<img src ="http://www.blogjava.net/steady/aggbug/219626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-08-02 22:08 <a href="http://www.blogjava.net/steady/archive/2008/08/02/219626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初读《The Art of Project Managerment》</title><link>http://www.blogjava.net/steady/archive/2008/05/26/202909.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 26 May 2008 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/05/26/202909.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/202909.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/05/26/202909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/202909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/202909.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">今天在看荣登 Jolt 大奖的 The Art of Project Management，其中最让我深有感触的是这样一段话：<br />
<strong><wbr>The simpler your view of what you do, the more power and focus you will have in doing it</strong><wbr>. If we can periodically maintain a simple view of our work, we can find useful comparisons to other ways to make things that exist all around us. There will be more examples and lessons from history and modern industries that can be pulled from, compared with, and contrasted against. This is similar to the concept defined by the Japanese word shoshin, which means <font style="line-height: 1.3em" color="#ff0000">beginner's mind, or open mind</font><wbr>, an essential part of many martial arts disciplines. <font style="line-height: 1.3em" color="#ff0000">Staying curious and open is what makes growth possible, and it requires practice to maintain that mindset.</font><wbr> To keep learning, we have to avoid the temptation to slide into narrow, safe views of what we do.<br />
<br />
确实，最近已经很久没有太多兴趣去学习新的东西了，包括曾经非常有兴趣的 ruby，真想回到当年刚毕业的时候，用那样的热情，精神去学习。或许今天算是一个起点吧，毕竟很久很久没有做下来，好好的看一本书，好好的想着作者要告诉你的东西。<br />
<br />
给自己开了个书单，好好努力，用 beginner's mind 去感受世界，感受前人的智慧。<img id="paperPicArea1" style="display: none; position: relative" src="http://imgcache.qq.com/ac/qzone_v4/b.gif"  alt="" /></span>
<img src ="http://www.blogjava.net/steady/aggbug/202909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-05-26 14:27 <a href="http://www.blogjava.net/steady/archive/2008/05/26/202909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是 Enterprise Service Bus</title><link>http://www.blogjava.net/steady/archive/2008/05/26/202908.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 26 May 2008 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/05/26/202908.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/202908.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/05/26/202908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/202908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/202908.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">什么是 ESB(Enterprise Service Bus)? <br />
对于这个问题，长期没有搞清楚，就连我自己也很难说清楚这到底这是个什么样的概念，我引经据典来大致的描述一下这个概念。 <br />
<br />
第一个定义来自于：O'Reilly 的 《Enterprise Service Bus》 <br />
<br />
The ESB concept is a new approach to integration that can provide the underpinnings for a loosely coupled, highly distributed integration network that can scale beyond the limits of a hub-and-spoke EAI broker. An ESB is a standards-based integration platform that <u><wbr>combines</u><wbr> <strong><wbr>messaging</strong><wbr>, <strong><wbr>web services</strong><wbr>, <strong><wbr>data transformation</strong><wbr>, and <strong><wbr>intelligent routing to reliably connect</strong><wbr> and <strong><wbr>coordinate the interaction of significant numbers of diverse applications across extended enterprises </strong><wbr><strong><wbr>with transactional integrity</strong><wbr>. <br />
<br />
An extended enterprise represents an organization and its business partners, which are separated by both business boundaries and physical boundaries. In an extended enterprise, even the applications that are under the control of a single corporation may be separated by geographic dispersion, corporate firewalls, and interdepartmental security policies. <br />
<br />
另外一个定义来自于：<a onclick="showLinkBubble(this);return false" href="http://en.wikipedia.org/wiki/Enterprise_Service_Bus" target="_blank" link="http://en.wikipedia.org/wiki/Enterprise_Service_Bus">维基百科的ESB定义</a><wbr> <br />
它是面向服务架构的实现。 <br />
它通常是操作系统和编程语言无关的；<br />
它应能在Java和.Net应用程序之间工作。 <br />
它使用XML（可扩展标识语言）作为标准通信语言。 <br />
它支持Web服务标准。 <br />
它支持消息传递（同步、异步、点对点、发布-订阅）。 <br />
它包含基于标准的适配器（如J2C/JCA），用于集成传统系统。 <br />
它包含对服务编制（orchestration）和编排（choreography）的支持。 <br />
它包含智能、基于内容的路由服务（itenerary路由）。 <br />
它包含标准安全模型，用于ESB的认证、授权和审计。 <br />
它包含转换服务（通常是使用XSLT），在发送应用和接收应用之间转换格式，简化数据格式和值的转换。 <br />
它包含基于模式（schema）的验证，用于发送和接收消息。 <br />
它可以统一应用业务规则，充实其它来源的消息，分拆和组合多个消息，以及处理异常。 <br />
它可以条件路由，或基于非集中策略的消息转换，即不需要集中规则引擎。 <br />
它可监视不同SLA（服务级别合约）的消息响应门限，以及在SLA中定义的其它特性。 <br />
它（常常）简化&#8220;服务类别&#8221;，向更高或更低优先级用户做出适当的响应。 <br />
它支持队列，在应用临时不可用时用来保存消息。 <br />
它由（地理）分布式环境中的选择性部署应用适配器组成。 <br />
<br />
总的来说，ESB 提供了跨平台，跨部门，跨应用系统的服务整合的基础平台，就我们目前对项目的理解，我们或许还没有达到这个 level，我们提供的应该是个办公应用平台，除非我们确实会进行跨部门，跨业务的服务整合，那样我们真的是在做 SOA 了，那就有的折腾了。 <br />
<br />
不多说了，进入下一个主题 OSGi。<img id="paperPicArea1" style="display: none; position: relative" src="http://imgcache.qq.com/ac/qzone_v4/b.gif"  alt="" /></span>
<img src ="http://www.blogjava.net/steady/aggbug/202908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-05-26 14:26 <a href="http://www.blogjava.net/steady/archive/2008/05/26/202908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈阿里软件网店版</title><link>http://www.blogjava.net/steady/archive/2008/02/21/181091.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 21 Feb 2008 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/02/21/181091.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/181091.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/02/21/181091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/181091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/181091.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">绑定在淘宝上的 SaaS 的阿里软件网店版，应该还是会有一些高级卖家愿意每天花一块钱用的，里面确实提供了一些比较有用的功能，当然不足的地方也是非常的多。</span></span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">先说好的吧：首先，E客服就是比较有意思的东西，解决了很多客服平台的问题，过去我们为两个项目做的在线客服，跟它比起来，还是有差距的。平常店里可以同时有几个人一起打理，而且不会出现一个旺旺多个人使用的情况，它用的是子帐号的概念，各人独立一块，互不干涉。还是很不错的东西。</span></span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">打印快递单应该也是个比较有意思的功能，如果货物量大的话，这个功能绝对是不可少的，大大减小了人力成本。不过估计我现在还是用不上的。</span></span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">商品定时上架是个很好的功能，就是针对淘宝设计的功能，如果熟悉淘宝搜索结果规则的人，会很好的去利用这个规则，让自己的货物在最佳浏览时间出现在搜索靠前的位置。而定时上架就很好的解决了这个问题，如果有效利用的话，绝对会让你的商品卖的更好的。</span></span></span></p>
<p><span style="font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">在说一些不好的吧：首页有个统计最热卖的东西，但是没有找到热卖产品的排名，这个东西应该是挺有用的吧，不过似乎没有提供。查看报表里面，经常会刷不出图片，估计是 IE 的 Cache 原因，不再重新加载图片了。进销存这个东西没有和销售报告结合起来，应该算是一个缺憾了，希望下一个版本能有更多的东西。不过，不知道下个版本要到哪年，上个版本似乎已经发布半年了。</span></span></span></p>
<span style="font-size: 10pt"><span style="font-size: 10pt">From:</span><a title="Permanent Link to 谈谈阿里软件网店版" href="http://4think.cn/blog/index.php/archives/43" rel="bookmark"><span style="font-size: 10pt">谈谈阿里软件网店版</span></a></span>
<img src ="http://www.blogjava.net/steady/aggbug/181091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-02-21 16:46 <a href="http://www.blogjava.net/steady/archive/2008/02/21/181091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对开发人员不友好的卡巴斯基</title><link>http://www.blogjava.net/steady/archive/2008/01/29/178308.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Tue, 29 Jan 2008 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/01/29/178308.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/178308.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/01/29/178308.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/178308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/178308.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">卡巴斯基这个俄国人做的杀毒软件呢，一直比较彪悍，经常见到什么东西都一阵嘶吼，然后你正常使用的软件也就挂了，QQ啊，这样的主流应用也是经常在它的误杀范围内。</span></p>
<p><span style="font-size: 10pt">&nbsp;对于开发人员来说，因为卡巴斯基更是会有诸多不爽的问题，下面列举一二，是我的惨痛教训，也和大家分享一下。</span></p>
<ol>
    <li><span style="font-size: 10pt">SVN 问题：如果你使用 SVN 做配置管理的话，有时候 check in 代码会半天没有反应，如果这时候你把卡巴禁用，就一切正常了。</span></li>
    <li><span style="font-size: 10pt">IntelliJ IDEA 端口冲突问题：用 IDEA 启动 Tomcat 时，使用了 8080 或者 80 端口，经常会启动就报端口冲突，而端口绝对是没有被其他应用程序占用的，而在独立的 Tomcat 下运行没有出现这样的问题，把卡巴对这些端口的监控关闭就一切正常。</span></li>
</ol>
<p><span style="font-size: 10pt">这两个问题都是比较郁闷的，卡巴斯基很强悍，却总是让人很无奈。</span></p>
<span style="font-size: 10pt">From:<a title="Permanent Link to 对开发人员不友好的卡巴斯基" href="http://4think.cn/blog/index.php/archives/31" rel="bookmark">对开发人员不友好的卡巴斯基</a></span>
 <img src ="http://www.blogjava.net/steady/aggbug/178308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-01-29 10:18 <a href="http://www.blogjava.net/steady/archive/2008/01/29/178308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>聊聊 Jolt Awards 2008</title><link>http://www.blogjava.net/steady/archive/2008/01/12/174905.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sat, 12 Jan 2008 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/01/12/174905.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/174905.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/01/12/174905.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/174905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/174905.html</trackback:ping><description><![CDATA[<p>Jolt Awards 是软件界的盛宴，被誉为软件界的奥斯卡，每年的 Jolt 中，能够看出软件开发领域的发展和未来的趋势，让我们来关注一下今年的大奖得主吧。&nbsp;</p>
<p>上周 Summer 推荐 Beautiful Code 的时候，也顺便找到了今年的 <a href="http://www.joltawards.com/finalists.html">Jolt Awards Finalists</a>，接着榜单，闲聊一下。</p>
<table cellspacing="1" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td bgcolor="#999999" colspan="3"><span class="cathead">General Books</span></td>
        </tr>
        <tr>
            <td valign="top" rowspan="6">&nbsp;</td>
            <td valign="top"><em>Beautiful Code</em> Edited by Andy Oram and Greg Wilson</td>
            <td valign="top">O&#8217;Reilly</td>
        </tr>
        <tr>
            <td valign="top"><em>Geekonomics: The Real Cost of Insecure Software</em> by David Rice</td>
            <td valign="top">Addison-Wesley Professional</td>
        </tr>
        <tr>
            <td valign="top"><em>Manage It!: Your Guide to Modern Pragmatic Project Management</em> by Johanna Rothman</td>
            <td valign="top">Pragmatic Bookshelf</td>
        </tr>
        <tr>
            <td valign="top"><em>Myths of Innovation</em> by Scott Berkun</td>
            <td valign="top">O&#8217;Reilly</td>
        </tr>
        <tr>
            <td valign="top"><em>Outside In Software Development</em> by Carl Kessler and John Sweitzer</td>
            <td valign="top">IBM Press</td>
        </tr>
        <tr>
            <td valign="top"><em>Release It!: Design and Deploy Production-Ready Software</em> by Michael T. Nygard</td>
            <td valign="top">Pragmatic Bookshelf</td>
        </tr>
        <tr>
            <td bgcolor="#999999" colspan="3"><span class="cathead">Technical Books</span></td>
        </tr>
        <tr>
            <td valign="top" rowspan="6">&nbsp;</td>
            <td valign="top"><em>Continuous Integration: Improving Software Quality and Reducing Risk</em> By Paul Duvall, Steve Matyas, Andrew Glover</td>
            <td valign="top">Addison-Wesley Professional</td>
        </tr>
        <tr>
            <td valign="top"><em>Fuzzing: Brute Force Vulnerability Discovery</em> By Michael Sutton, Adam Greene, Pedram Amini</td>
            <td valign="top">Addison-Wesley Professional</td>
        </tr>
        <tr>
            <td valign="top"><em>Head First SQL Your Brain on SQL—A Learner&#8217;s Guide</em> by Lynn Beighley</td>
            <td valign="top">O&#8217;Reilly</td>
        </tr>
        <tr>
            <td valign="top"><em>The Rails Way</em> by Obie Fernandez</td>
            <td valign="top">Addison-Wesley Professional</td>
        </tr>
        <tr>
            <td valign="top"><em>WPF Unleashed</em> by Adam Nathan</td>
            <td valign="top">Sams Publishing</td>
        </tr>
        <tr>
            <td valign="top"><em>xUnit Test Patterns: Refactoring Test Code</em> by Gerard Meszaros</td>
            <td valign="top">Addison-Wesley Professional</td>
        </tr>
    </tbody>
</table>
<p>图书方面，看上去几乎是被 O&#8217;Reilly&nbsp;和 Addison-Wesley 给垄断了，Pragmatic Bookshelf&nbsp; 也在其中占有了一席之地。图书中，最大的赢家应该是，Beautiful Code，我在国内某家被我批评过的IT书店上看到了挂上了期数的预告，名字叫《代码之美》，似乎有抄袭《数学之美》的嫌疑，第一次看到这么多作者一起写出来这么好的书，33 章的书，就包括了 33 个来自于不同领域的作者，共同创造了如此完美的代码，在 O&#8217;Reilly&nbsp;的牵线搭桥下，造就了 Beautiful Code，如果有机会，我希望能由东南大学出版社出版这本书的英文影印版，让我们细细的品味。</p>
<p>Head First 的新书 <em>Head First SQL Your Brain on SQL</em> 也登上了 Jolt 的舞台，之前 Head First Design Pattern 和 Head First OOAD 是如此通俗的把面向对象的两个经典内容：设计模式和面向对象的分析与设计，聊家常一般的摆在我们的面前，精妙的内容组织，浅显易懂的语言，就连我们这些非常怕看英语的人看起来都毫不费力，不愧为大师级的功力。而这本新书料想也会给 SQL 的新手带来一种全新的体验吧。</p>
<p>Pragmatic Bookshelf 这个书系自从《Pragmatic&nbsp; Programmer》 开始，就不断的扩大其影响。从程序员修炼三部曲中，告诉了我们版本控制，单元测试，持续集成这三个开发者的基本工具。随后的 Pragmatic&nbsp; Ajax 把 Ajax 推到了大家的面前。当 Ruby on Rails 开始流行的时候，Programming Ruby 和 Agile Web Development with Rails 都在一版二版的洗礼中不断的升华，已经成为 RoR 开发的经典之作。这次的 XX It 系列又从软件项目管理角度来 Pragmatic 。我似乎看到过 Ship It 还有 Deploy It 这两本，或许也是这个系列里的吧。</p>
<p>The Rails Way 我一开始当成了 The Ruby Way，其实后者的风格我比较喜欢了，于是又套用了它的名号来了个 The Rails Way，虽然现在还没有拿到，我想这本书会给我们一些新意的。</p>
<table cellspacing="1" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td bgcolor="#999999" colspan="3"><span class="cathead">Development Environments</span></td>
        </tr>
        <tr>
            <td valign="top" rowspan="6">&nbsp;</td>
            <td valign="top">Alpha Five version 8</td>
            <td valign="top">Alpha Software Inc.</td>
        </tr>
        <tr>
            <td valign="top">CodeRush/Refactor! Pro</td>
            <td valign="top">Developer Express Inc.</td>
        </tr>
        <tr>
            <td valign="top">IntelliJ IDEA</td>
            <td valign="top">JetBrains</td>
        </tr>
        <tr>
            <td valign="top">Komodo IDE 4</td>
            <td valign="top">ActiveState</td>
        </tr>
        <tr>
            <td valign="top">NetBeans IDE 6</td>
            <td valign="top">Sun Microsystems</td>
        </tr>
        <tr>
            <td valign="top">QNX Momentics IDE 4</td>
            <td valign="top">QNX Software Systems</td>
        </tr>
    </tbody>
</table>
<table cellspacing="1" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td bgcolor="#999999" colspan="3"><span class="cathead">Web Development Tools</span></td>
        </tr>
        <tr>
            <td valign="top" rowspan="6">&nbsp;</td>
            <td valign="top">3rdRail</td>
            <td valign="top">CodeGear</td>
        </tr>
        <tr>
            <td valign="top">Adobe ColdFusion 8</td>
            <td valign="top">Adobe Systems, Inc.</td>
        </tr>
        <tr>
            <td valign="top">Appcelerator Platform</td>
            <td valign="top">Appcelerator, Inc.</td>
        </tr>
        <tr>
            <td valign="top">IntelliJ IDEA</td>
            <td valign="top">JetBrains</td>
        </tr>
        <tr>
            <td valign="top">NetBeans IDE</td>
            <td valign="top">Sun Microsystems</td>
        </tr>
        <tr>
            <td valign="top">RSSBus</td>
            <td valign="top">/n software</td>
        </tr>
    </tbody>
</table>
<p>开发工具大奖上已经看不到了 Eclipse 的身影，而 IDEA 依然在榜单上活跃，而我也是一如既往的使用它，即便是在 Rails IDE 中，IDEA 凭借其 Rails 插件，加上它的基础，用起来还是相当的顺手，目前除了不能 Debug，我似乎没有其他不满的地方。</p>
<p>Netbeans IDE 在年末闪亮登场后，带来了一个更轻更小，更完整的开发工具包，而 Eclipse WTP 一个包动辄就是 2xxM，虽然功能很齐全，不过体积实在是有些过分了，并且没有一种 IDEA 的那种让人很爽的感觉。我没有用完整的 Netbeans 包，因为 Java Web 开发已经习惯了 IDEA + Eclipse 的组合，我只关注了一下 Ruby IDE，功能上来说，确实有其独到之处，不过在写代码上还不能达到非常流畅的速度。不过 Netbeans 在两年里就来了个咸鱼翻身，我们要说 Sun 很努力了。</p>
<table cellspacing="1" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td bgcolor="#999999" colspan="3"><span class="cathead">Libraries/Frameworks</span></td>
        </tr>
        <tr>
            <td valign="top" rowspan="6">&nbsp;</td>
            <td valign="top">Eclipse Modeling Project</td>
            <td valign="top">Eclipse</td>
        </tr>
        <tr>
            <td valign="top">Guice</td>
            <td valign="top">Google Inc</td>
        </tr>
        <tr>
            <td valign="top">JasperReports</td>
            <td valign="top">JasperSoft</td>
        </tr>
        <tr>
            <td valign="top">Qt Jambi</td>
            <td valign="top">Trolltech</td>
        </tr>
        <tr>
            <td valign="top">Spring Framework</td>
            <td valign="top">SpringSource</td>
        </tr>
        <tr>
            <td valign="top">Zend Framework</td>
            <td valign="top">Zend Technologies</td>
        </tr>
    </tbody>
</table>
<p>在开发框架上最活跃的依然是 Java 平台，这和 Java 平台一直以来保持的很好的开源社区是分不开的。EMF，Guice，JasperReports，Spring Framework 这几个一直都是 Java 领域最热门的开源项目。</p>
<p>Google Guice 在 Google 的天才程序员 Bob Lee 的创意中诞生了，采用了一种全新的依赖注入的方式，将效率提高了传说中的 100 倍，虽然对这个数据我不是太在意，而在 Spring 如此成熟的进入 2.0 后，却有一个后辈小生提出了全新的思路，而 Spring 2.5 也接受了这样的思路，调整了一些依赖注入的策略，在性能上有了不小的提高。</p>
<p>经营着 Spring 的 interface21 为了凸显其 Spring 的品牌，改名为 SpringSource，并且推出了一本《Spring In Production White Paper》，希望能够在企业应用中占有更大的份额。</p>
<p>作为 PHP 的领头羊的 Zend 在 Rails 推出后再也按耐不住了，PHP 一定要有一套官方的 Framework，而且它的特性要很像 Rails，于是 Zend Framework 诞生了，这在几乎没有框架概念的 PHP 中注入了一种新的活力，Rails 不光激起了 Java 世界的广泛关注，在无数个类 Rails 框架后面，Zend 从 PHP 官方的角度接受了 Rails 的思想，改善 PHP 的开发。而 Java 世界里，Grails 也伴随这 Groovy 1.5 的推出，伴随着 Grails 的第三个 RC 版，即将走到 1.0 版本。Rails 带给了 Web 开发无穷的活力。</p>
<br />
<a href="http://4think.cn/blog/index.php/archives/28" rel="bookmark">聊聊 Jolt Awards 2008</a>
 <img src ="http://www.blogjava.net/steady/aggbug/174905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-01-12 22:23 <a href="http://www.blogjava.net/steady/archive/2008/01/12/174905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一篇来自 Zoundry 发布工具的文章</title><link>http://www.blogjava.net/steady/archive/2008/01/04/172783.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 04 Jan 2008 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/01/04/172783.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/172783.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/01/04/172783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/172783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/172783.html</trackback:ping><description><![CDATA[<p>　　第一次用 Zoundry 客户端工具来发布博客，WordPress 还是不错的博客了，提供了 XML-RPC 方式的远程提交接口，我们可以比较容易的把我们的博客发布到 WordPress 上。</p>
<p>　　老外对这方面的支持工作还是做的不错的，国内的同类系统往往只考虑到功能，好一点的考虑到性能，而在这些新技术带来的扩展性的增强上似乎没有太多的理解，虽然 WordPress 在功能上和国内的很多博客有一定的差距，但是人家支持插件，这样就可以让地球人都上来扩展一把。Eclipse 的插件风风火火的做了几年，现在人似乎没有不用插件开发的了。</p>
<p>　　老外在 Web 2.0 中又很多好的思想，技术，拿到国内来就有点变味了，虽说国人在 Web 2.0 技术上跟进的速度还是相当的快，不过思想还是又相当的差距的。</p>
<p>　　要好好学学人家做东西的思想，而不仅仅是技术。</p>
 <img src ="http://www.blogjava.net/steady/aggbug/172783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-01-04 16:42 <a href="http://www.blogjava.net/steady/archive/2008/01/04/172783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>闲扯IM工具</title><link>http://www.blogjava.net/steady/archive/2008/01/02/172117.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Wed, 02 Jan 2008 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2008/01/02/172117.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/172117.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2008/01/02/172117.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/172117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/172117.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt"><span style="font-size: 10pt">该文章被发布在我的新博客中：</span><a href="http://4think.cn/blog/index.php/archives/25">http://4think.cn/blog/index.php/archives/25</a><br />
<br />
　　市面上这么多的IM工具，每次打开的时候就要开上一堆，还不时的有个新的IM工具出来，加上一两个及其有吸引力的功能，然后又不得不装上，搞的每次开机以后总是要开上一大堆的IM，比如QQ啦，MSN啦，还有Yahoo，Google Talk，飞信，Skype，真的挺麻烦的。</span></p>
<p><span style="font-size: 10pt">　　一年前的时候，突然听说 Yahoo 可以和 MSN 互通了，于是从此就没用过 MSN 了，也是对 Microsoft 歧视国内用户的一种不满吧，这么多IM工具，最不稳定的也最为常用的要属 MSN 了，虽然飞信这样&#8220;国&#8221;字号的软件似乎更加的不争气，就原谅他吧，谁叫他是咱最有钱的移动运营商呢。可以说，MSN 的掉线率是相当的高，登录速度也是惊人的，在公司内部传文字的效率呢更加不用说了，反正没有人走的快。不过据我们去过美国的一些同事说，MSN 在美国速度是非常快的，包括其下属的 hotmail，MSN Space，怪不得这么被推崇了，不过没办法，毕竟是在国内，属于不被重视的使用群体，大不了就不用了，于是机子里再也没有出现过 MSN，所有重要的好友都加到 Yahoo 里了。</span></p>
<p><span style="font-size: 10pt">　　其实说来 Yahoo 也是个比较不争气的东西，功能嘛，没啥强的，不过吃内存的能力还挺强，印象中也就 Skype 可以和他有的一拼，不过好歹人家 Yahoo 还是比较重视中文用户的，起码光缆断的时候还是能用的，而且相关的本地化服务也还是有一定的可用性的，Yahoo的邮件提示是最为迅速的，基本上是新邮件来到5秒之内就得让你知道，这个功能还是挺体贴用户的，其实我的一些 IM 的一个重要作用就是 check email，比如说 Google Talk。Yahoo 的客户端程序其实是比较不稳定的，群聊功能是个杀手，一次领导通知事情，让大家开个会，结果一位老兄图方便，Yahoo 把大家全部加进来了，大家的机器全部死翘翘，只好 reset 重启，自此以后，这个功能再也不敢使用了，Yahoo 工具箱里有个看股市行情的插件，不过这个曲线也太不本地化了，中午休息的时间也画在上面，一条长长的直线，怎看都别扭。没办法啊，公司里唯一允许的 IM 工具，不得不装，也就不得不去忍受这些了。</span></p>
<p><span style="font-size: 10pt">　　Google Talk 其实是我用的最多的，极为简洁，拥有我需要的主要功能，email 通知，语音，文本聊天，传文件（大家都喜欢装中文版的，没这个功能，所以也基本找不到人传文件），其实还有一点重要的就是所有聊天记录都会保存在 Gmail 里，在哪都不会丢失，也很连贯，这对于我们经常讨论需求的人就不会有上句没下句的了。也不用担心聊天记录留在本地泄密。另外还有一点，传代码的时候绝对不会变成一堆笑脸什么的。Google Talk 其实功能上是相当有限的，但是我却非常喜欢，简洁就是美了。</span></p>
<p><span style="font-size: 10pt">　　下面隆重出场的是唯利是图、忘恩负义外加极端不安全的 QQ 了，如果不是这么多好友在里面，我是不会开 QQ 的，当然 QQ 作为国内用的最多的 IM 工具（其实叫他聊天工具更确切），QQ 还是有相当多的优势的，首先网络稳定性好，传文件速度快，有远程协助功能，语音质量也不错，可以看 IP（还不都是珊瑚虫的功劳，被忘恩负义的腾讯扼杀了），有群聊功能，也是最适合某些夜晚不甘寂寞的人寻找刺激的工具了，其他的功能我是不大能想到的了，更不用说去用了，所以嘛，QQ 对我来说，太大了，太花哨了，对公司来说也是的，基本上正规的公司，没有哪个不封 QQ 的，所以嘛，QQ 只能被远远的拒之于企业应用的门外，腾讯的 RTX 也就不是那么容易进入企业市场的，谁让你这么花哨，看了就不想好好工作了。</span></p>
<p><span style="font-size: 10pt">　　Skype 这个东西嘛，对我用处不大，自从充值卡被封事件以后就不再常开了，开会的时候才会去用，毕竟多人语音聊天功能还是挺不错的。</span></p>
<p><span style="font-size: 10pt">　　国外的大部分 IM 工具都开放互通了，包括 MSN 和 Yahoo，Google Talk 也在和 MS 谈互通的问题，国内的 IM 互通嘛，似乎完全不可能，国外那几家都不是靠 IM 吃饭的，腾讯就不一样了，如果不保持其 QQ 的占有率，疯狂的扼杀非&#8220;官方&#8221;的客户端，LumaQQ 这么优秀的跨平台解决方案也就被腾讯自己和谐掉了，最近对珊瑚虫下狠手也表示其在此方面的决心，呵呵，我的 QQ 从此不升级了。</span></p><img src ="http://www.blogjava.net/steady/aggbug/172117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2008-01-02 11:27 <a href="http://www.blogjava.net/steady/archive/2008/01/02/172117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的开发工具集(1)-CyberArticle </title><link>http://www.blogjava.net/steady/archive/2007/11/29/163940.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 29 Nov 2007 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/11/29/163940.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/163940.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/11/29/163940.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/163940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/163940.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">
<div id="articlecontent" _extended="true">
<p mce_serialized="12q4lhc64"><span style="font-size: 10pt">每个人在开发的时候，都会根据自己的喜好选择一些好用的工具，当然，通过一些年头的积累，我自己也有了这么一些顺手的工具，就把这些还不错的东西拿出来和大家分享吧。</span></p>
<p mce_serialized="12q4lhc64"><strong mce_serialized="12q4lhc64"><span style="font-size: 10pt">CyberArticle (网文快捕)</span></strong></p>
<p mce_serialized="12q4lhc64"><span style="font-size: 10pt">　　我们在查看资料，或者遇到问题上网搜索的时候，经常会想把自己看到的一些好东西保存下来，以后需要用的时候可以找到，有人把东西复制下来保存成文本，有人用 Word 文档，也有人直接保存页面，这些方法固然是可以，不过以后找起来可就比较麻烦了。我们需要一个带分类的文档管理工具。</span></p>
<p mce_serialized="12q4lhc64"><span style="font-size: 10pt">　　在对一堆工具的筛选之后，我选中了 CyberArticle，也就是网文快捕，安装以后，在浏览页面时，IE 和 FF 的右键会出现保存全文，保存选中部分这样的选项，我最喜欢的是保存选中部分这个功能，毕竟我们并不需要一个网页中一些不相关的文字和图片。CyberArticle 可以完整的把文章内容或选中部分的内容保存下来，无论是图片或者其他什么的，都能较好的支持。在保存下自己喜欢的内容后，我们可以手工把这些内容分类，以后会比较容易的找到自己需要的东西。</span></p>
<p mce_serialized="12q4lhc64"><span style="font-size: 10pt">　　另外 CyberArticle 中比较有用的功能是生成电子书。我们在网上搜集到一堆某一类别的文章，为了与他人分享或者便于携带，我们可以把这一个独立的类别的内容导出成 CHM&nbsp;或 EXE 版本的电子书。</span></p>
<p mce_serialized="12q4lhc64"><span style="font-size: 10pt">　　CyberArticle 可以到 </span><a href="http://www.wizissoft.com/cn/index.aspx" mce_serialized="12q4lhc64"><span style="font-size: 10pt">http://www.wizissoft.com/cn/index.aspx</span></a><span style="font-size: 10pt">&nbsp;下载，强烈建议使用最新的 5.0 版（只要25块钱），旧的版本会有相当一部分的文章保存不下来。</span></p>
<br />
<a href="http://www.linkedcast.cn/" target="_blank"><img alt="链客中国，写文章也可以赚钱哦" src="http://www.linkedcast.cn/website/article/9d19090d1a0056535e08.gif" border="0" /></a>
<div></div>
</div>
</span>
 <img src ="http://www.blogjava.net/steady/aggbug/163940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-11-29 10:59 <a href="http://www.blogjava.net/steady/archive/2007/11/29/163940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 整合 Hibernate 的一处简化配置</title><link>http://www.blogjava.net/steady/archive/2007/08/17/137527.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 17 Aug 2007 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/08/17/137527.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/137527.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/08/17/137527.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/137527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/137527.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">在过去使用 Spring 整合 Hibernate 的时候，都是用这样的配置方式。<br><br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #ff0000">&nbsp;lazy-init</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="mappingResources"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">resources/icustomer/Contact.hbm.xml</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">resources/icustomer/Customer.hbm.xml</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">.<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><span style="FONT-SIZE: 10pt">每当需要加入一个新的 VO 时，我需要过来修改配置文件，来引入对新的 VO 的支持。</span><br><br><span style="FONT-SIZE: 10pt">现在我使用的时候，是这么配的：<br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="sessionFactory"</span><span style="COLOR: #ff0000">&nbsp;lazy-init</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="mappingLocations"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">classpath:resources/**/*.hbm.xml</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">.<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><span style="FONT-SIZE: 10pt">做项目开发的时候，就再也没有改过配置。</span> 
 <img src ="http://www.blogjava.net/steady/aggbug/137527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-08-17 13:58 <a href="http://www.blogjava.net/steady/archive/2007/08/17/137527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java打造简易股指跟踪系统(2)</title><link>http://www.blogjava.net/steady/archive/2007/06/28/126937.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 28 Jun 2007 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/06/28/126937.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/126937.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/06/28/126937.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/126937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/126937.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">上一篇中我们说到了，如何使用 HttpClient 抓取所需要的数据，接下来介绍一下如何对这些数据进行处理。基本的处理原理是使用正则表达式进行内容的匹配。<br><br>为了便于处理，我们首先把使用 HttpClient 抓取到的数据做一些简单的处理。<br><br>第一步要做的就是删除回车符，当然我不会写含有回车符的正则表达式才会这么写的，当然如果您有更好的方法也可以不用这么做。<br><br>代码很简单：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id=Codehighlighter1_46_177_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_177_Open_Text.style.display='none'; Codehighlighter1_46_177_Closed_Image.style.display='inline'; Codehighlighter1_46_177_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_46_177_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_177_Closed_Text.style.display='none'; Codehighlighter1_46_177_Open_Image.style.display='inline'; Codehighlighter1_46_177_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;String&nbsp;removeEnter(String&nbsp;response)&nbsp;</span><span id=Codehighlighter1_46_177_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_46_177_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;StringUtils.replace(response,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\r\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;StringUtils.replace(response,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;response;<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><span style="FONT-SIZE: 10pt">接下来就可以使用正则表达式来对所抓取的内容进行匹配了：<br><br><font style="FONT-SIZE: 10pt" size=3>正则表达式是一种可以用于模式匹配和替换的强有力的工具，一个正则表达式就是由普通的字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式，它描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。正则表达式在字符数据处理中起着非常重要的作用，我们可以用正则表达式完成大部分的数据分析处理工作，如:判断一个串是否是数字、是否是有效的Email地址，从海量的文字资料中提取有价值的数据等等，如果不使用正则表达式，那么实现的程序可能会很长，并且容易出错。对这点本人深有体会，面对大量工具书电子档资料的整理工作，如果不懂得应用正则表达式来处理，那么将是很痛苦的一件事情，反之则将可以轻松地完成，获得事半功倍的效果。<br><br>在这里，我使用了 Jakarta-ORO 作为正则表达式工具来进行匹配。<br><br>Jakarta-ORO是最全面以及优化得最好的正则表达式API之一，Jakarta-ORO库以前叫做OROMatcher，是由Daniel F. Savarese编写，后来他将其赠与Jakarta Project，读者可在jakarta.apache.org的网站下载该API包。 <br>因为在这里我们不需要用到太多正则表达式的知识，仅仅是简单的用用而已，所以几行简单的代码就可以解决问题：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_68_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_68_247_Open_Text.style.display='none'; Codehighlighter1_68_247_Closed_Image.style.display='inline'; Codehighlighter1_68_247_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_68_247_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_247_Closed_Text.style.display='none'; Codehighlighter1_68_247_Open_Image.style.display='inline'; Codehighlighter1_68_247_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;String&nbsp;match(String&nbsp;response,&nbsp;String&nbsp;template,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index)&nbsp;</span><span id=Codehighlighter1_68_247_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_68_247_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Perl5Util&nbsp;engine&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Perl5Util();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_151_231_Open_Image onclick="this.style.display='none'; Codehighlighter1_151_231_Open_Text.style.display='none'; Codehighlighter1_151_231_Closed_Image.style.display='inline'; Codehighlighter1_151_231_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_151_231_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_151_231_Closed_Text.style.display='none'; Codehighlighter1_151_231_Open_Image.style.display='inline'; Codehighlighter1_151_231_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(response&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_151_231_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_151_231_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_193_228_Open_Image onclick="this.style.display='none'; Codehighlighter1_193_228_Open_Text.style.display='none'; Codehighlighter1_193_228_Closed_Image.style.display='inline'; Codehighlighter1_193_228_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_193_228_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_193_228_Closed_Text.style.display='none'; Codehighlighter1_193_228_Open_Image.style.display='inline'; Codehighlighter1_193_228_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(engine.match(template,&nbsp;response))&nbsp;</span><span id=Codehighlighter1_193_228_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_193_228_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;engine.group(index);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;name;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>第一个参数 response 表示抓取到的页面源码，第二个参数 template 表示我们预先设定的模板，第三个表示第几个匹配。返回的结果是匹配成功的 group 中的内容。<br><br>于是我们可以这样的调用它：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">String&nbsp;template&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/(沪综指)&lt;/font&gt;&lt;/b&gt;&lt;/a&gt;&nbsp;&lt;span&nbsp;id=\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">STK1\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;(\\d{4,5}\\.\\d{1,4})&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>String&nbsp;name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;match(response,&nbsp;template,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>String&nbsp;index&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;match(response,&nbsp;template,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);</span></div>
<br>注意一下，我们正则表达式前后都有 "/"。<br>另外，我们用() 括起来的部分表示我们要匹配的内容，所以这里 name 可以匹配到 沪综指，index 可以匹配到大盘的点数。&nbsp;<br><br>该匹配对应于： <a href="http://web7.jrj.com/homev1/StockIndex.htm">http://web7.jrj.com/homev1/StockIndex.htm</a><br>为了防止页面以后打不开了大家找不到，我把其中相关的匹配部分的页面源码也发出来：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">href</span><span style="COLOR: #0000ff">=javascript:ShowImg('000001',2)&nbsp;</span><span style="COLOR: #ff0000">target</span><span style="COLOR: #0000ff">=_self</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">=#000000</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">沪综指</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK1"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">3914.20</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK2"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c1"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/down.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">164.40</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">href</span><span style="COLOR: #0000ff">=javascript:ShowImg('399001',1)&nbsp;</span><span style="COLOR: #ff0000">target</span><span style="COLOR: #0000ff">=_self</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">=#000000</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">深成指</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK3"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">12882.17</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK4"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c1"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/down.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">701.53</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">href</span><span style="COLOR: #0000ff">=javascript:ShowImg('399300',1)&nbsp;</span><span style="COLOR: #ff0000">target</span><span style="COLOR: #0000ff">=_self</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">font&nbsp;</span><span style="COLOR: #ff0000">color</span><span style="COLOR: #0000ff">=#000000</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">沪深300</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">font</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK5"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">3858.52</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK6"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c1"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/down.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">181.96</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">香港恒生</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK7"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">21938.22</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK8"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c3"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/up.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">232.66</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">道琼斯</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK9"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">13414.48</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK10"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c1"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/down.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">13.25</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">纳斯达克</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">b</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK11"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">2612.02</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STK12"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="c3"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">=/HomeV1/images/up.gif&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">=8&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=8</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">6.67</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">　<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="indexdata"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">object&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="STKData"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;height</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;classid</span><span style="COLOR: #0000ff">="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"</span><span style="COLOR: #ff0000">&nbsp;viewastext</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">param&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="FieldDelim"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="F"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">param&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="DataURL"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="/HomeV1/text/StockIndex.htm"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">param&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="UseHeader"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">object</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="hidden"</span><span style="COLOR: #ff0000">&nbsp;id</span><span style="COLOR: #0000ff">="STKValue"</span><span style="COLOR: #ff0000">&nbsp;datasrc</span><span style="COLOR: #0000ff">="#STKData"</span><span style="COLOR: #ff0000">&nbsp;datafld</span><span style="COLOR: #0000ff">="a"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">="STKValue"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<br>因为我不是为了介绍正则表达式而写这篇文章的，所以对正则表达式不会做太多的介绍，如果大家对正则表达式有兴趣或想进一步了解的话可以参考：<br><br>JAVA中正则表达式的应用<br><a href="http://www.ibm.com/developerworks/cn/java/l-regp/part1/index.html">http://www.ibm.com/developerworks/cn/java/l-regp/part1/index.html</a><br><a href="http://www.ibm.com/developerworks/cn/java/l-regp/part2/index.html">http://www.ibm.com/developerworks/cn/java/l-regp/part2/index.html</a></font></span> <br><br><span style="FONT-SIZE: 10pt">另外因为为了抓取其他东西，代码已经被我改的面目全非了，暂时就不方便贴出来了，请大家谅解，如果大家有什么疑问的话可以和我联系，我会尽量说明清楚的。</span> 
 <img src ="http://www.blogjava.net/steady/aggbug/126937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-06-28 22:58 <a href="http://www.blogjava.net/steady/archive/2007/06/28/126937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java打造简易股指跟踪系统(1)</title><link>http://www.blogjava.net/steady/archive/2007/06/21/125692.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 21 Jun 2007 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/06/21/125692.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/125692.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/06/21/125692.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/125692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/125692.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp; 最近股市大牛，相信这里的不少朋友都在炒股，当然上班时间老是开着网页看股市或是盯着红红绿绿的专业股票软件是总是担心被周围同事看到的，但又不时的想着大盘是涨了还是跌了，自己的股票又是如何呢。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp; 于是用 Java 写了一套简单的股市信息跟踪的小程序，Console 的，用于抓取相应的股市信息并显示到 console 中，谁也不会想到这个东西会是用来看股市的吧。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp; 这套小小的程序用到了几个非常简单的技术，HttpClient 和 正则表达式。程序功能非常简单，找到含有股市数据的页面，使用 HttpClient 抓取下来，通过正则表达式匹配自己需要的内容，在 Console 上打印出来。<br><br>&nbsp;&nbsp;&nbsp; 准备花两篇文章简单的介绍这个小系统中的实现细节，当然这只是简单的介绍，其实我们再稍微用点其他的技术，可以做出更多更实用的小工具。比如我就写了个小爬虫，把某个基金网站上的基金净值数据爬来了，足足有10W条，供我做基金形势分析之用，拿到这些原始数据，再动用一下自己的头脑，再配合一些方便的工具，比如 Excel，我们便可以用实际数据去辅助投资理财。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先我们来简单的介绍我们用到的第一个工具，HttpClient。</p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp; HttpClient 是 Apache Jakarta Common 下的子项目，可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包，并且它支持 HTTP 协议最新的版本和建议。<br>&nbsp;&nbsp;&nbsp; 以下列出的是 HttpClient 提供的主要的功能，要知道更多详细的功能可以参见 HttpClient 的主页。<br>实现了所有 HTTP 的方法（GET,POST,PUT,HEAD 等） <br>支持自动转向 <br>支持 HTTPS 协议 <br>支持代理服务器等 </p>
<p style="FONT-SIZE: 10pt">HttpClient 可以在<a href="http://jakarta.apache.org/commons/httpclient/downloads.html">http://jakarta.apache.org/commons/httpclient/downloads.html</a>下载</p>
<p style="FONT-SIZE: 10pt">HttpClient 基本功能的使用<br>GET 方法<br>使用 HttpClient 需要以下 6 个步骤：<br>1. 创建 HttpClient 的实例<br>2. 创建某种连接方法的实例，在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址<br>3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例<br>4. 读 response<br>5. 释放连接。无论执行方法是否成功，都必须释放连接<br>6. 对得到后的内容进行处理</p>
<p style="FONT-SIZE: 10pt">根据以上步骤，我们来编写用GET方法来取得某网页内容的代码。</p>
<p style="FONT-SIZE: 10pt">根据这样的过程，我们便可以写出一个简单的抓取页面的方法，该方法返回抓到的页面数据。传入的参数是页面的 URL。</p>
<p style="FONT-SIZE: 10pt">protected String getURLResponse(String url) {<br>&nbsp;try {<br>&nbsp;&nbsp;HttpClient client = new HttpClient();<br>&nbsp;&nbsp;GetMethod method = new GetMethod(url);<br>&nbsp;&nbsp;int returnCode = client.executeMethod(method);<br>&nbsp;&nbsp;String response = null;<br>&nbsp;&nbsp;if (returnCode == 200) {<br>&nbsp;&nbsp;&nbsp;response = EncodingUtil.getString(method.getResponseBody(), "gb2312");<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;method.releaseConnection();<br>&nbsp;&nbsp;return decode(response);<br>&nbsp;} catch (Exception e) {<br>&nbsp;&nbsp;return null;<br>&nbsp;}<br>}</p>
<p style="FONT-SIZE: 10pt">HttpClient 是一个很实用的工具，用它，我们可以做很多和 Http 有关的事情。<br>大家可以参考： <a href="http://www.ibm.com/developerworks/cn/opensource/os-httpclient/">http://www.ibm.com/developerworks/cn/opensource/os-httpclient/</a> 来初步了解 HttpClient 的功能。<br>或是去找找 Jakarta.Commons.Cookbook 或者 Jakarta.Commons.Online.Bookshelf，上面介绍了包括 HttpClient 在内的很多 Apache Jakarta Commons 项目，相信合理使用，会让你事半功倍的。</p>
<p style="FONT-SIZE: 10pt">下一篇我们将介绍一下如何用正则表达式处理我们抓取到的数据。</p>
 <img src ="http://www.blogjava.net/steady/aggbug/125692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-06-21 22:11 <a href="http://www.blogjava.net/steady/archive/2007/06/21/125692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss deploy 出现 OutOfMemoryError : PermGen space</title><link>http://www.blogjava.net/steady/archive/2007/06/17/124830.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sun, 17 Jun 2007 12:13:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/06/17/124830.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/124830.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/06/17/124830.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/124830.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/124830.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">最近在把在 tomcat 5.5 上开发的项目 deploy 到 JBoss 4.2 上时，在操作一段时间就会出现 java.lang.OutOfMemoryError: PermGen space，开始以为是代码中存在死循环的地方造成这样的问题，但是后来发现，出问题的地方都是随机的，并不是某一处造成这样的问题出现，怀疑是内存泄露，通过增大 heap 内存的方法来尝试，依然不行，但是同样的问题却并没有在 tomcat 中出现过，难道是 JBoss 的问题？</p>
<p style="FONT-SIZE: 10pt">在网上做了一番搜索得到一些相关的内容。</p>
<p style="FONT-SIZE: 10pt">PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出，解决方法也一定是加大内存。说说为什么会内存益出：这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。</p>
<p style="FONT-SIZE: 10pt">改正方法，在 run.bat 中加入：-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m </p>
<p style="FONT-SIZE: 10pt">因为项目中引用了很多的 jar 包，而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域，在 JVM 默认的情况下，该部分空间的大小只有 4M，在 jar 包非常多的情况下，显然是不够用的，所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。</p>
<p style="FONT-SIZE: 10pt">另外，如果 heap 内存不足出现 java.lang.OutOfMemoryError: Java heap space 时，可以通过 -Xmx512m 指定最大 heap 内存来解决这样的问题。</p>
<img src ="http://www.blogjava.net/steady/aggbug/124830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-06-17 20:13 <a href="http://www.blogjava.net/steady/archive/2007/06/17/124830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Confluence 的破解</title><link>http://www.blogjava.net/steady/archive/2007/01/29/96423.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 29 Jan 2007 00:51:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2007/01/29/96423.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/96423.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2007/01/29/96423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/96423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/96423.html</trackback:ping><description><![CDATA[<font size=2>
<p>其实 Confluence 的破解并不算难，不过在网上不是太容易找到直接能用的方案，小试了一把，发现最主要的是要处理一个 atlassian-extras-0.7.20.jar 的文件，com\atlassian\confluence\page 这下面有一个 Key.page 文件，其实这就是密钥文件了，破解的一般方法就是自己生成一个自己所知道 Key 的密钥文件，并替换掉原来的，再用这个已知的 Key 生成自己需要的密码。比 JIRA 要稍微复杂一点了。<br><br>附件里附上一个弄好的东西，直接替换已经安装的 lib 下的 atlassian-extras-0.7.20.jar 文件，然后用 keygen 生成 key 就可以用了。<br><br>下载地址见：<a href="http://www.agilejava.org/space/?1/action_viewspace_itemid_188.html">http://www.agilejava.org/space/?1/action_viewspace_itemid_188.html</a><a href="http://www.blogjava.net/Files/steady/Confluence-Crack.rar"></a></p>
</font>
<img src ="http://www.blogjava.net/steady/aggbug/96423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2007-01-29 08:51 <a href="http://www.blogjava.net/steady/archive/2007/01/29/96423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《精通EJB 3.0》出版有感</title><link>http://www.blogjava.net/steady/archive/2006/12/15/87913.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 15 Dec 2006 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/12/15/87913.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/87913.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/12/15/87913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/87913.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/87913.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp; 昨天看到《精通EJB3.0》的中文版出来了，虽然早就在预料之中了，不过多少还是有一点想法的，终于第一本 EJB 3.0 的书正式出来了，对目前 EJB 3.0 的追逐总归是有了点方向，但我仍然感觉，EJB 3.0 不可能像 EJB 2.0 那样火了，Java 世界已经进入了多元化时代，Spring 已经逐步的蚕食了 EJB 说占有的份额，用其简单灵活的配置吸引了无数人的眼光，从另外一方面来说，标准的东西毕竟是标准，从制定到实现的周期比较长，如果中间出现了新的需求，一些问题，都需要等到下一个标准中去实现，而开源的就比较灵活了，有问题可以随时调整，所以会带给大家更为 agile 的感觉，不过对于大公司大项目而言，他们并不希望这样的灵活性，他们需要的是风险小，稳定，所以 EJB 3.0 对于一些大型的企业应用来说依然需要的是 EJB，因为有 IBM 和 BEA 这样大公司的支持了，不过自从五月份 JavaEE 5 规范正式定稿，这两大公司都没有拿出真正的 EJB 3.0 的产品出来，倒是 JBoss 在标准出来后很快就拿出了可用的产品，这样也可以看出来，IBM 和 BEA 没有像过去几年对于 EJB 2.0 那样的重视了，他们关注的是 SOA 的市场，毕竟 SOA 在 EAI 方面比 JavaEE 强了很多。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 对于分布式对象领域，EJB 3.0 还是有着不错的竞争优势的，毕竟这是他的传统优势，在群里面和大家聊天的时候，寒江也提到过用 RCP + EJB 3.0 作为方案，其实这也是一套不错的应用方案。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; EJB 3.0 比 EJB 2.0 确实要轻了很多，但并没有给我们太多的惊喜，因为 EJB 3.0 给我们带来的大部分新鲜都已经被 Spring 和 Hibernate 捷足先登了，我个人也是比较喜欢 Spring 和 Hibernate 来做项目，毕竟用起来会更加的灵活，更加的强大，特别是新版的 Spring 和 Hibernate 同时都支持了 JPA 的标准，又一次的在 JavaEE 应用上和 EJB 3.0 展开了下一轮的竞争，一切都好，就看你怎么选择，我选择的是 Spring + Hibernate，或许更加熟悉一些又或许更加轻量，更加 agile。</font> </p>
<img src ="http://www.blogjava.net/steady/aggbug/87913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-12-15 12:41 <a href="http://www.blogjava.net/steady/archive/2006/12/15/87913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批评一下 dearbook</title><link>http://www.blogjava.net/steady/archive/2006/12/07/86192.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 07 Dec 2006 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/12/07/86192.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/86192.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/12/07/86192.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/86192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/86192.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp; 一直从dearbook创办起就在 dearbook 买书直到现在，已经成为了钻石VIP会员了，经历了 dearbook 发展中的种种，不过说起来 dearbook 的服务确实不像其标语中说标榜的"第二书店，第一服务"<wbr>，从我这么多年和他们打交道的经验来说，服务确实很难让人满意。</wbr></font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 过去一开始的时候，都是采用在网上选书，然后邮局汇款<wbr>，发邮局包裹的方式，效率很低，也很麻烦，每次总是要往邮局跑两次<wbr>，最大的问题是，网上列出来的书，往往是不一定有货的<wbr>，有一次买书，选了一堆书最后发现就一本书有货<wbr>，最后拿到手的只有那一本书，很是郁闷，这样就余下了一些钱在 dearbook，然后又用这些钱继续去买其它的书<wbr>，最后在升级会员的时候，这些余款购买的书又没有记入积分中<wbr>，升级的时候就差了这么几分，最后催了好几次才把自己会员资格提高。</wbr></wbr></wbr></wbr></wbr></wbr></font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 随着和当当网合作以后，付款和收货方面确实有很大的改善<wbr>，付款直接用网上银行，直接送货上门，都大大的提高了我买书的兴趣<wbr>，不过 dearbook 网站系统很不争气，频频出现问题，首先发现一个明显的 bug 就是在收藏夹里删除一些书籍的时候，收藏夹就变乱了<wbr>，都是一些莫名其妙的书，再打开一下这个页面就好了。接着是在和 CSDN Passport 整合的时候，收藏夹里的书彻底丢光了，而这时候没有人告诉我怎么<wbr>回事。</wbr></wbr></wbr></wbr></font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 在与当当网的合作中dearbook 的积分系统也频频出现问题，当当网是用 Email 账户登录的，dearbook 积分系统也是用 Email 账户登录的，当我修改了当当网的 Email 以后，dearbook 积分系统也换成了新的 Email，但原有 Email 对应积分没有转到新的 Email 帐号上来，打电话去问，答曰，没有提供合并积分的功能<wbr>，于是一堆积分就泡汤了。</wbr></font> </p>
<div><font size=2>&nbsp;&nbsp;&nbsp; dearbook 和当当网的价格几乎就没有同步过，并且和自己网站的一些横幅广告的<wbr>也不符，有一次人邮的书全场七折，随便打开页面进去看<wbr>，几乎没有一本书是打七折的。</wbr></wbr></font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; dearbook 的到书时间也是比较慢的，比如最近的 Webwork in Action，我问过译者，已经出版了，并且在 China-Pub 上已经有了，但过了好几天 dearbook 才上架。</font> </div>
<p><font size=2>&nbsp;&nbsp;&nbsp; 最近积分比较多，在 dearbook 换了两本书，最后收包裹的时候，只收到一本书，觉得奇怪<wbr>，打电话去问，才把第二本书给重新寄过来，浪费了我几分钟的电话费<wbr>。</wbr></wbr></font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 这次 dearbook 又心血来潮的要把 D币积分转换为 C 币，因为过去在两个Email 账户上都是有积分的，所以想转换到同一个账户上，结果当我在 CSDN 上修改了 Email 地址后，却发现我过去的积分就消失了，很是郁闷。昨天发了邮件<wbr>，今天打了电话，到现在也没有人给我答复，看了一下账户里的 C 币，还是不对。</wbr></font> </p>
<div><font size=2>&nbsp;&nbsp; 还有就是 </font><a onclick="return top.js.OpenExtLink(window,event,this)" href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#100;&#101;&#97;&#114;&#98;&#111;&#111;&#107;&#46;&#99;&#111;&#109;" target=_blank><font size=2>webmaster@dearbook.com</font> </a><font size=2>这个邮箱，发过几次邮件，从来没有回音。不知道这个公布在网上的联<wbr>系邮箱到底起的是什么作用。</wbr></font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; 以上所描述的东西，都是我在 dearbook 这三年来遇到的一些情况，很多细节并没有一一罗列，也没有带有个人的感情色彩，只想说明，dearbook 的 &#8220;第二书店，第一服务&#8221;这个口号似乎只是在叫叫而已。</font> </div>
<img src ="http://www.blogjava.net/steady/aggbug/86192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-12-07 22:32 <a href="http://www.blogjava.net/steady/archive/2006/12/07/86192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML和工作流</title><link>http://www.blogjava.net/steady/archive/2006/11/17/81656.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Fri, 17 Nov 2006 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/11/17/81656.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/81656.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/11/17/81656.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/81656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/81656.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp; 虽然看起来两者似乎没有什么联系，但是看起来</font> <a href="http://www.agilejava.org/space/tag.php?k=工作流" target=_blank><font size=2>工作流</font> </a><font size=2>的一些概念和状态图有着惊人的相似之处，或许是我过去对 </font><a href="http://www.agilejava.org/space/tag.php?k=UML" target=_blank><font size=2>UML</font> </a><font size=2>的理解太少了，而对 UML 的理解有仅限于 Class Diagram 和 Sequence Diagram，而且仅仅是一些粗浅的认识，而在和 Sze Hung 老大以及 james 讨论问题的时候，也经常遇到状态机的概念，或许是我在这方面太过于薄弱了。今天在 dearbook 定的 UML User Guide 2nd 也到了，这本凝聚了 Rational 三巨头的心血之作中贯彻着这样的思想。希望能够从中吸取更多精华吧。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 很多粗人都常常认为 UML 只是画图的东西，三两页就可以讲完的东西，何必弄这么多呢，还印出 n 多本书，简直就是骗钱了。其实说来，UML 难道仅仅是一种图形工具吗，它凝聚了更多更深刻的 OOP 的概念，在各种各样的应用中才发现，原来 UML 比我开始想想的要丰富的多。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 看过一些人在网上的评论，才发现，其实人民邮电出版社和机械工业出版社的书其实并不是太差了，只是机械的纸实在是说不过去，在我书架上放的一堆书中，原来清华大学出版社的书是最差的，无论从纸张，从排版，从翻译，因为有康博这样被骂死也还要出来招摇撞骗的所谓翻译团队。近些年来，一些出版社都开始建立了一些自己的图书品牌，比如说电子工业出版社的&#8220;博文视点&#8221;，比如人民邮电出版社的&#8220;图灵系列&#8221;，我个人感觉其中的书的选题和印刷都还不错，虽然也会有一些比较烂的作品出来了。</font> </p>
<img src ="http://www.blogjava.net/steady/aggbug/81656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-11-17 08:54 <a href="http://www.blogjava.net/steady/archive/2006/11/17/81656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向编程恶习说再见</title><link>http://www.blogjava.net/steady/archive/2006/10/30/78085.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Mon, 30 Oct 2006 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/10/30/78085.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/78085.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/10/30/78085.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/78085.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/78085.html</trackback:ping><description><![CDATA[<p><font size=2>　　今天看了一篇很有意思的文章，</font> <a href="http://www.blogjava.net/uiiang/archive/2006/10/30/77993.html"><font size=2>http://www.blogjava.net/uiiang/archive/2006/10/30/77993.html</font> </a><font size=2>，介绍了种种项目中的编码的恶习，其中很多的东西看起来真的是很搞笑，比如趴在Tab上睡着了那个，用中文做变量名的，还有 if(condition) a&nbsp; else a 那个也比较搞笑，算是夸张了点。</font> </p>
<p><font size=2>　　不过想想看，自己一直都在算是比较正规的软件企业，编码规范还是有一定的要求的，不会出现这么搞笑的问题，不过有些问题还是会经常的犯，比如说，又一次看一个同事写一个方法写了 1500 行，我立刻让他改，最后精简代码，分开写，也算是减少到可以接受的程度，另外一个恶习就是复制代码，很多开发人员自身都是不怎么会写代码的，做开发就是找过去相识的，复制，粘贴，改，所以会出现一堆比较搞笑的问题，于是，错误便不是自己犯的了，人家写错了，自己也就抄错了，我在第一次参加 Code Review 的时候就碰到这个情况，我自己的东西都是自己手工写的，出现了一些问题，被大家指出来了，其它人写的东西都是抄来抄去，发现问题都不是自己的，因为改过去的代码需要上面授权，还有一堆测试要重做，所以看大致是可以用的也就蒙混过关了，造成了越来越混乱的代码。</font> </p>
<p><font size=2>　　其实说来要把代码写的更好一点没有想象中那么难的，凡事从小做起，从点滴做起，慢慢的把一些好的东西变成自己的习惯，重要的是要积累，而不是放任自流，多去看看人家著名的开源项目，看看人家代码是怎么写的，多去和自己的比较，然后善于用一些 Audit 工具评估自己的代码，让自己对自己的代码中出现的问题有一个更明确的认识，然后慢慢的去改变自己的习惯，其实从长远角度来说对自己有很大的好处的，起码自己的编码能力提升了，基础更加稳固了，有能力去胜任更高级的工作，不然，天天复制别人的代码，自己又天天只能写出来一些不符合规范的代码，而自己又天天不去想不去问，一直这样下去，开发能力还能提高吗？</font> </p>
<p><font size=2>　　其实我还是很喜欢一本书《代码大全 2nd》，今年上半年才出来的中文版，里面针对我们开发的时候出现的问题给出了很多规范和解决方案，我会经常抽空去看看这本书，然后想想自己该如何去改善自己的开发习惯，去写出更好的代码，另外就是用一些 Audit 工具去针对自己的代码做出一些评审，比如 CodePro，另外我们一些同事在 Maven 上用一些插件对 CVS 上的代码做出 Audit 并发布在项目站点上，这些都是不错的手段了。<br><br>　　其实说来最重要的还是自己的态度，工具，好的方法都不能转变对于开发恶劣的态度的。</font> </p>
<img src ="http://www.blogjava.net/steady/aggbug/78085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-10-30 16:40 <a href="http://www.blogjava.net/steady/archive/2006/10/30/78085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用 Axis 使用 Web Services 笔记</title><link>http://www.blogjava.net/steady/archive/2006/10/26/77392.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Thu, 26 Oct 2006 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/10/26/77392.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/77392.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/10/26/77392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/77392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/77392.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/steady/archive/2006/10/26/77392.html'>阅读全文</a><img src ="http://www.blogjava.net/steady/aggbug/77392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-10-26 14:01 <a href="http://www.blogjava.net/steady/archive/2006/10/26/77392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Share Session</title><link>http://www.blogjava.net/steady/archive/2006/07/22/59510.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Sat, 22 Jul 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/07/22/59510.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/59510.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/07/22/59510.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/59510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/59510.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp; 连续三天做了三场 Share Session，讲了一些关于系统开发的三个层的东西，Web Layer / Business Layer / Persistence Layer 分别以各个层面最优秀的技术为例和组内组外的同事们分享了一些我关于这些技术的理解。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 虽然说讲的还不是很好了，但是这三天却给了我很大的提高，不仅仅是技术上面，更多的是在一种表达能力方面的。可以说是第一次真正意义上的上台讲东西了，因为面对的不光是同组熟悉的同事，还有很多不是太熟悉的，还有几位老大，甚至在最后一次讲JSF的时候，大老板还进来坐了一会，压力还是挺大的，虽然要讲的东西已经在之前在脑子里演练无数次了，但是要想把自己想的东西和别人讲清楚，的确不是那么容易的事情了，当发现下面的同事满脸的迷茫，就得赶紧换一个角度来说明问题，不过还算过得去的是，自己并没有太多的紧张了，虽然是第一次正式的在台上讲东西，面对面的对着大家，不过自己要讲的东西心里还比较有底，心里比较踏实了，于是也就没有太多的紧张了。</font> </p>
<p><font size=2>&nbsp;&nbsp;&nbsp; 通过三天对各个方面的技术的介绍和总结，其实也不知道大家真正能理解多少，因为太多东西没有经过实践是不会有太深刻的理解的，虽然有些东西当时是听懂了，但是却不会深深的刻进你的脑子，时间一长就忘记了。三天里，总结了这一年来我对 Java Web 开发的几个方面的理解了，虽然这一年学到了很多很多，但还有太多太多的不了解了，有些东西当自己看的时候觉得自己了解，但是当需要把这个东西和别人分享的时候，却发现自己有太多太多的不知道了。</font> </p>
<img src ="http://www.blogjava.net/steady/aggbug/59510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-07-22 10:29 <a href="http://www.blogjava.net/steady/archive/2006/07/22/59510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>到底什么是Hibernate，什么是Spring</title><link>http://www.blogjava.net/steady/archive/2006/07/11/57629.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Tue, 11 Jul 2006 04:11:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/07/11/57629.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/57629.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/07/11/57629.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/57629.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/57629.html</trackback:ping><description><![CDATA[<font size=2>&nbsp;&nbsp;&nbsp; 似乎很久没有写些什么了，因为最近想的太多，做的太少了。<br>&nbsp;&nbsp;&nbsp; 第一次发现 Hibernate 原来并不是自己过去想像的那样简单，它很复杂，很强大，却能让你最后要做的事情变的很少，虽然它带来了如此多的好处，但如果想真正的用好它，必须有一个非常熟悉它的人在你的团队里，这样才能够最大的发挥它的巨大威力。虽然每个人都可以花不多的时间去用会 Hibernate ，但却只有很少的人能够灵活的驾驭它，让它为你服务，因为它同传统的关系数据库可以说是截然不同的两条路，从玩 SQL 走过来的人，多多少少会受到它的限制，而变得不易接受ORM，像我就是一个典型了，当得到高手指点的时候，发现过去的很多想法偏离轨道还是挺远的了，幸亏有人指点，得以走回正道。<br>&nbsp;&nbsp;&nbsp; 作为 J2EE 中另一个骄傲，Spring 也以它的独特观点改变了 J2EE 的世界，过去用 Spring 只是稍微理解了它的 IoC 的思想，和简单的使用了它的 Transaction 管理功能，最近细看了一下它的 AOP 感觉震动还是挺大的。基于 Interceptor 的 AOP 真的是很好用，也很强大，甚至于说，它会是一种改变 Java 开发模式的一种动力了，虽然只是刚开始看看，没有什么深刻的理解，但却也能够有一些很大的感触了，或许 AOP 在目前还是刚刚起步，或许太多的人没有接受它理解它，AOP 的应用层面还是比较低了。</font> 
<img src ="http://www.blogjava.net/steady/aggbug/57629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-07-11 12:11 <a href="http://www.blogjava.net/steady/archive/2006/07/11/57629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun 解决方案大会归来</title><link>http://www.blogjava.net/steady/archive/2006/05/31/49168.html</link><dc:creator>steady</dc:creator><author>steady</author><pubDate>Wed, 31 May 2006 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/steady/archive/2006/05/31/49168.html</guid><wfw:comment>http://www.blogjava.net/steady/comments/49168.html</wfw:comment><comments>http://www.blogjava.net/steady/archive/2006/05/31/49168.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/steady/comments/commentRss/49168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/steady/services/trackbacks/49168.html</trackback:ping><description><![CDATA[<div><font size=2>&nbsp;&nbsp;&nbsp; 昨天去了趟上海，参加了一下 Sun 的解决方案大会，不过这次大会并不是面向开发者的，更多的是面向公司决策层的领导们，不过听听看也有机会更多的去了解 Sun，去了解这个 Java 的创始者。了解它们的一些理念。</font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; 其实 Sun 主要是靠卖服务器赚钱的，Java 和其它的软件不能为 Sun 直接带来经济效益，这和 IBM 和 BEA 都是不同的，几乎上午 Sun 官方的人员宣传的都是这个主题，这次会议鼓吹了 Sun S4次方的一个概念，也就是 Server * Storage * Software * Service，另外有一方面就是介绍它们的节能服务器，号称 CPU 功耗只有其它同等机器的 20%，虽说没有具体见识到，不过也比较惊讶与此的了，Sun 开始转移话题，在这些方面做文章了。</font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; 上午来自阿里巴巴的嘉宾介绍了一下他们基于 J2EE 平台的一系列产品以及介绍了淘宝网是如何经受起每天 1.5 亿次的点击率的，不过这个数字确实是一个天文数字了，如果没有一个好的平台和架构的话，是很难承受如此之大的访问的，而这一套系统，只花了8个月，大约8000个 manday 的人力就完成了，除了 Java 难道还有更稳定高效的解决方案，我想微软在摇头，PHP 也在摇头，这样才是 JavaEE 价值的真正体现了，要做出好的，别人做不了的东西。</font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;下午倒也没有什么太吸引人的东西了，虽然有来自 BEA 的一场关于 SOA 的主题演讲，不过来的只是一个 Senior Consultant，还是一如既往的鼓吹 SOA 的理念，虽然 SOA 快要真正的开始了，但是还是缺少一些实际性的东西来支持它，证明它，很多都还是概念，很多都太抽象，让人无所适从。</font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; 下午有一个 Sun 大中华区的 Director ： Anderson Wong 来继续宣传 Sun 的一些整体的解决方案，没有听太仔细，但有种概念，Sun 提供了一个整套的解决方案而不像其它的方案不够全面，还需要与许多其它的方案整合。Sun 也表示了他们的一种理念，在软件方面的，他们希望能有更多的软件开发商和服务商通过免费使用他们的软件，包括 OS 包括 Java 开发工具等等了，然后为用户提供解决方案，同时带动他们的服务器市场。当有人问到为什么要这样的做，Sun 很明确的表示了，Sun 和 IBM 还有 BEA都是不同的，Sun 是卖服务器的。</font> </div>
<div><font size=2></font>&nbsp;</div>
<div><font size=2>&nbsp;&nbsp;&nbsp; 最后去听了关于 JCOE 的一个专题，很抽象的一个概念，被讲的这个也不是那个也不是，很莫名其妙的一个东西，不过还是从上面得到了一些启发，关于我们公司核心框架的价值问题，有些类似 CMMI 之类的东西，通过一些标准化的方式，来提高软件开发的质量和效率，不知道有没有理解错，不过他们讲的真的不是很清楚啦。</font> </div>
<img src ="http://www.blogjava.net/steady/aggbug/49168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/steady/" target="_blank">steady</a> 2006-05-31 09:46 <a href="http://www.blogjava.net/steady/archive/2006/05/31/49168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>