2009-11-04 11:12
自从决定开始研究tomcat源代码后,给tomat提交bug就成了一件令人上瘾的事情,自己到目前为止仅阅读了全部代码的10%多,已经提交了十几个bug,其中得到确认并在新版tomcat得到改正的bug就有如下6个:
|
2009-09-07 23:38
2008-12-07 12:57
毫无疑问,对于Java开发者来说,Eclipse是一个非常好的IDE,但IDE的一些弱点是永远无法摆脱的:大内存的占用、缓慢的启动速度、迷宫一样让人无法究尽的各种新功能,这些都会让一个编程开发人员时常感到很深的挫折感:每次使用时都让你意识到自己只在使用它百分之一的功能,这种无助的感觉让人绝望。它在简化了很多开发流程的同时也带来了更多的复杂性:你基本上不需要了解像Ant这样的Java Build工具,但当你把工程放到只支持命令行的Linux服务器上就会无比茫然,因为你已经习惯于依赖Eclipse幕后为你打 |
2008-11-25 02:46
来一家很有发展前景的互联网公司半年多了,个中滋味千千万万。现在已经习惯了昨天和你一起吃饭的同事明天就可能离职的现实,习惯于回家之后就只剩下打开中央电影频道或第一频道看国外大片的精力,习惯于在一周内拿下一门IT技能的挑战。自己所在的是外企,不久前美国的CEO还和我单独聊了一个小时的天,可以问任何想问的问题,可以随意说出自己任何真实的想法。北京的生活真的是充满了机会和刺激。
自己在公司的地步比较特殊,有相对比较大的自由 |
2008-09-20 17:43
基于内嵌浏览器的Spider最大的问题之一是它的性能, 其实浏览器也支持并发性打开网页, 比如在搜索引擎返回结果页面点击一个链接往往打开新的窗口, 如果这时在该新窗口网页未完全打开之时回到结果页面再点击新的链接,这样就实现了在浏览器里同时并行下载多个网页的目的. 最近按照这个思路实现了基于Selenium的内嵌浏览器的初步并发性的结果, 看着Console上的log输出几倍于往常,心里有说不出的成就感.
想不到很多看似复杂的东西背后的原理往往都非 |
2008-08-03 19:08
现在随着JavaScript和Ajax在网页中的大量应用,传统的Spider面临越来越大的挑战,越来越多的网页信息是通过JavaScript动态生成的、Ajax让页面概念的定义不再完整。不知道像百度、谷歌这样的大搜索引擎公司是如何处理这些信息的。自己最近将近一个月的时间在做基于内嵌浏览器的Spider,现在已经接近尾声,但越做越感觉难度比当初想象得要难得多。
自己调研过很多内嵌浏览器的方案(见我以前的博客文章),最后还是选择了著名的Web测试工具:Selenium, |
2008-06-24 22:21
自己因为工作需要一直在寻找在Java程序中内置浏览器的解决方案,从最开始的Mozilla的XPCOM到JExplorer,自己不经意间已经花去了很多时间。最近偶然找到了最完美的终极解决方案:Watij,网址见: watij.org/
它是基于Ruby的Watir的Java移植,它实际上还是调用的JExplorer的内核,但它至少有两点好处:第一,它是完全开源免费的软件包,经过开发JExplorer的公司授权,用户不必像使用JExplorer一样交费( |
2008-05-25 00:34
自己这几天一直在调研如何用JAVAXPCOM在Java程序中内嵌Mozilla浏览器,发现网上文档非常少或老,能找到的Sample Code只能在Eclipse的SWT中的Browser部分的snippet里勉强能找到几个( |
2008-05-21 19:53
最近发现原来可以在程序中直接内嵌Mozilla浏览器,它是基于一种叫XPCOM的技术来实现的,它有Java语言的Binding,叫JAVAXPCOM的。Eclipse下面有一个插件就是基于JAVAXPCOM的浏览器,这个插件就是Eclipse用以实现本机UI界面的关键:SWT插件,它有Browser功能,包括Mozilla浏览器。这个插件可以脱离Eclipse单独使用,只要把Eclipse下的plugins目录下面的swt的Jar包导入ClassPath即可。下面详尽介绍如何利用SWT中的Mozilla和JAVAXPCOM实现在程序中内嵌Mozilla浏览器:
|
2008-05-11 08:27
NekoHTML是目前最好的HTML转化成XML的工具之一,但它的Filter功能还是非常有限,比如它目前提供的ElementRemover仅支持对Element的accept和remove功能,假如我想生成一个仅由Element和Text结点构成的DOM树(Element去除"style"和"script"),则只能自己写一个ElementRemover来实现。下面是自己写的一个实现:
import org.apache.xerces.xni.Augmentations;
import org.apache.xerces.xni.QName;
import org.apache.xerces.xni.XMLAttributes;
import org.apache.xerces.xni.XMLResourceIdenti |
|
|
|