IntelliJ IDEA 10.0 发布了,放出 IntelliJ IDEA 10.0 的注册机下载。
点击下载
posted @
2010-12-18 09:56 steady 阅读(5880) |
评论 (4) |
编辑 收藏
摘要:
阅读全文
posted @
2009-12-14 20:06 steady 阅读(10565) |
评论 (26) |
编辑 收藏
开始并没有关注这么一个购物搜索的东西,以为只是上网按关键词查查东西,昨天无意中看了说明,发现它远远不是这么简单的东西。它有着一般购物搜索无法相提并论的强大功能,那就是——条形码搜索。
摄像头对于强大的 Nokia S60 系列手机来说,早已成了标配,扫描条形码等功能,也早就成为手机很容易完成的功能了,但是却很少有人把条形码和网络进一步结合。有道购物搜索是我看到的第一个完成这样功能的软件。其实用起来很简单,手机有个能自动对焦的摄像头和能上网就行了,拿摄像头对准商品条形码处扫描一下,然后会自动上网搜索相关产品,甚至连拍照键都不用按了,一切都是自动完成的。产品数据库也比较丰富,拿身边的小东西随便扫了下,水溶C100,益达木糖醇,各种书籍(书籍的数据库应该是最全的,手边的书全部都能找到)。
这是一个相当有创意的产品,当然,这个条形码数据库也不是容易得到的,但是这个数据库和后台有道搜索结合,就形成了一个非常完美的应用方式,这应该是我看到的让我眼前一亮的手机软件之一了。
posted @
2009-08-17 17:26 steady 阅读(2069) |
评论 (0) |
编辑 收藏
为了在家里唱K,去拷了个24000首的歌库,然后配置随盘送的后羿礼光卡拉OK软件。或许这个软件太专业了吧,以至于想随便配配就能玩不是件容易的事情。用我机子里装的 KMPlayer 是根本都放不出来的,音乐视频都是没有的,然后拿各种播放器一个个试。用了暴风影音(老版本的,新版是垃圾),完美解码,默认安装的情况下都是可以出视频的,声音是完全没有的。无奈,只得逐一试下各个选项了,最后发现只有 MPEG2 音频编码器设置成 SPDIF 的时候,才会有声音。之前在网上找的各种解决方案都要注册,注册后还没给你个有效的解决方案,要你重装系统什么的,还是靠自己吧。估计是做这套软件的人比较菜,初始化声音只用了默认的一种音频解码方案,而且你还得恰好装了这个解码器才行,否则,一个个试吧。
用了软件以后,就和歌厅的选歌界面很像了,不然这么多歌曲,用手工选也是很痛苦的事了。
另外,我用创新 Audigy ZS 声卡 + 得胜 TS-6310 无线麦克风 + 黑钻双子星XP 音箱 + 软件歌库,基本能做一个小小的家庭卡拉OK 中心来玩了。
posted @
2009-08-17 17:23 steady 阅读(4293) |
评论 (0) |
编辑 收藏
为了编译方便我把 servlet-api.jar 和 jsp-api.jar 和其他 jar 包都放在一起,在 ant build 的时候就会一并被拷到 Web 项目的 WEB-INF/lib 下,不过这次因此出现了一个 jsp 页面的编译错误,所有的 jsp 页面打开都会在页面上报编译错误,后台无任何信息。考虑到 jsp 页面的编译可能和 jsp-api.jar 有关,于是将 WEB-INF/lib 下的 servlet-api.jar 和 jsp-api.jar 移走,问题解决。
后来发现放在里面的这两个包是 tomcat5.5 的,是 JSP 2.0 规范的,而部署的服务器是 tomcat 6.0 是 JSP 2.1 规范的,两者可能有一定的冲突,才导致这样的错误。
posted @
2009-08-17 17:22 steady 阅读(2559) |
评论 (0) |
编辑 收藏
在用 SVN 的时候出现了这样一个小问题,害得我折腾了半天,一个小小的 s 却是罪魁祸首。
因为项目路径切换,需要从 https://server/trunk 切换到 https://server/tag/1, 不过在文档中后者写成了 http://server/tag/1,恰好 SVN server 用 HTTP 和 HTTPS 都是可以访问的,所以没觉得这个东西有什么错误。不过使用 SVN 做 switch 操作的时候却总是出现 https://server/trunk is not the same repository as http://server/tag/1,感觉很奇怪,问了一下相关负责人,当时也没有发现什么问题,不过还是没法操作,最后无意中把 http://server/tag/1 换成了 https://server/tag/1,一切 ok。
被这个问题折磨的比较郁闷了,可能是 SVN repository 不能在 HTTPS 和 HTTP 之间切换吧。
posted @
2009-08-17 17:21 steady 阅读(3013) |
评论 (0) |
编辑 收藏
其实嘛,浏览器对大多数人来说,都是每天必用的软件了,不过在国内来说,其实也没啥悬念,IE 占据了绝大多数的份额,在加上个挑战者 Firefox 在占据着国内微不足道的份额,在加上 Google Chrome 以及其他份额更少的诸如 Opera 之类的,估计一百个人也找不到一个在用吧。
不过嘛,国内倒是有个不大一样的地方,我们国人比较善于做壳,于是我们有很多“国产浏览器”可以用,最著名的或许要算 Maxthon 遨游了,当然这也是我最喜欢的浏览器,也是我上网闲逛必用的浏览器,当然了,Maxthon 这个东西嘛不是太稳定,有时候会出现一些莫名其妙的问题,于是换标准的 IE 来用。当然用 Maxthon 也有用 Maxthon 的道理,一个是同步收藏夹,一个是手势功能,当然还有若干细微的功能也挺不错,弥补了 IE 的不足吧。不过 Maxthon 不能用 IE 的 Toolbar 和 Plugin 之类的,而独创了直接的一套插件体系可谓是一大败笔,于是很多时候为了一些功能,不得不用回 IE,Maxthon 只能成为我瞎逛的首选了。
说到后起之秀 Firefox 嘛,其实说实话,我对它并不感冒,因为它的速度实在不敢让人恭维,或许 Firefox 让我唯一感冒的东西是 Tor 和 Firebug 吧。更多时候我选择用 Chrome 来替代 Firefox,因为 Chrome 够快,不得不承认,Chrome 是最快的浏览器,特别是在对 JS 的处理上,大大优于前两者。而且启动还有个访问页面列表的大缩略图,对于我这种懒得输网址的人来说,可谓是大大的方便,于是 Chrome 成了我逛技术类网站的首选了。
posted @
2009-07-07 11:19 steady 阅读(1939) |
评论 (0) |
编辑 收藏
上午看完变形金刚,这样的娱乐大片看了感觉就是很爽,不用为复杂的情节去思考,紧张刺激的情节中不乏幽默,最有意思是看到我们公司(Cisco Webex)在变形金刚2里做的远程恋爱系统的广告。
![Cisco Webex Transformers2 Cisco Webex Transformers2](http://www.steadyxp.com/wp-content/uploads/2009/06/30407-11-04.jpg)
![Cisco Webex Transformers2 Cisco Webex Transformers2](http://www.steadyxp.com/wp-content/uploads/2009/06/30407-08-19.jpg)
posted @
2009-07-06 14:13 steady 阅读(1932) |
评论 (0) |
编辑 收藏
在Java世界里打拼也好几年了,也看到了各种不同技术的浮浮沉沉,倒是发现了一个简单的规律,最简单的东西往往是最有用的,简单的软件也是种美。
在 Java Web 领域,曾经有无数各种各样的框架,Struts1/2,JSF,Echo1/2,Tapestry,Wicket,等等等等了,这么多不同的框架代表了两个不同的方向,除了 Struts 这个是基于请求的,其他几个都是算是事件驱动的,但是后面几个在整个市场上所占的份额也赶不上 Struts 一家。HTTP 请求本来是很简单的,而 Struts 就是基于这样简单的概念,但是却有无数人希望重现 VB 时代的那种拖拖拉拉的编程方式,希望用事件驱动一切,但是大部分人都失败了。失败的原因也其实不那么复杂,有的是不够成熟,像 JSF 这样被 Sun 官方大力推崇的框架,但 Ajax 出现的时候,JSF 中想灵活的用 Ajax 都成了一种奢望,有的是资料太少了。像 Echo2 这样的框架资料,少的跟珍惜保护动物似的。
当然也不是没有成功的,微软凭借其强大的开发实力,和开发工具的配合,加上没有给 ASP.net 用户更多选择余地,取得了无人匹敌的成功。但是这个成功在 Java 世界是不会拥有的,Java 世界没有微软这样的巨头,Java 世界中拿得出手的几个开发工具,Eclipse,Netbeans,IDEA,在所见即所得的开发上远远的落后于 Visual Studio。相比微软帝国,Java 世界多的是中小型的,开源的工具产品。规模上都远远落后于微软,Java 世界唯一可走的路便是简单了。对 Java 世界来说,简单不仅仅是种美,更是生存之道。
起初作为 Java 世界 PK 微软产品的重头戏,EJB 在学院派的力捧下诞生了,EJB 似乎从来都不打算让人活的轻松,一个简单的东西非得搞的复杂无比才行。而且其持久层 Entity Bean,似乎连基本功能都没能实现,更别谈大规模使用了。EJB 1/2 的时代是开发人员永远无法忘却的噩梦。
Java 世界也从来不缺活跃分子,Rod Johnson 这个有种音乐家气质的牛人凭借自己多年的积累,推出了 Springframework,这样一个基于 IoC 和 AOP 两个概念的简单易用的框架,完成了很多起初只有 EJB 才能完成的工作,Spring 也一夜成名,成为 Java 世界使用最为广泛的轻量级应用框架。
几乎是同时,来自澳洲的小帅哥 Gavin King 也在用一种与众不同的方案去替代现有比较复杂的 Java 持久化方案,最后他的 Hibernate 也成为替代原有 EJB 持久化方案的选择。相对简单的 Hibernate 也取得了巨大的成功。
其实这样的例子在 Java 世界也非常多,以至于后来来自于 Ruby 开发社区的 Ruby on Rails 的出现,给了 Java 开发者当头一棒,原来还有更简单的做法哦。于是 Java 世界慢慢的开始对多种脚本语言进行支持,包括 Ruby,以及后来自创的 Groovy。以此去打造类似 RoR 那样简单的开放方式。
生活其实是很简单的,软件开发其实也是一样,用简单的方式,去打造简单的软件,Java 世界用无数失败的教训证明了这一点。像我呢,也喜欢用这样简单的方式去工作,最喜欢 IDEA 去写代码,最喜欢 Struts2 + Spring2 + Hibernate3 这套组合,最最喜欢的是简单,因为简单是最美的工作方式。
posted @
2009-06-23 16:08 steady 阅读(3233) |
评论 (6) |
编辑 收藏
为了实现工作流中对脚本的支持,简单的玩了一下 BeanShell,这个小小的嵌入式 Java 代码解释器可以将 Java 语言像动态脚本一样执行,几行命令,它就能把一段 Java 代码给玩转。
工作流中有个这样的简单案例,当一笔单子金额大于 50万时,应该将任务分配给 Senior Agent 处理,否则交给 Junior Agent 处理,我们用 BeanShell 简单模拟这段脚本。
public static void main(String[] args) throws Exception {
Interpreter i = new Interpreter();
i.set(”price”, 1000000);
i.set(”user”, “”);
i.eval(”if(price > 500000)\n” +
“user = \”SeniorAgent\”;\n” +
“else \n” +
“user = \”JuniorAgent\”;”);
System.out.println(i.get(”user”));
}
运行结果是打印出了:SeniorAgent
可以看出,BeanShell 用非常动态化的方式,完成了我们一个简单的案例的处理,这里,我们只需要将需要解析的 Java 语言的脚本交给 BeanShell 的 Interceptor,并把脚本中用到的参数值传入,就可以了,最后,我们把运算结果赋给一个变量,然后获取变量结果,就可以了。
看到 Developer Works 网站上有一篇 BeanShell 实现公式管理的文章:http://www.ibm.com/developerworks/cn/java/l-formula/index.html,可以参考一下。
From: http://www.steadyxp.com/archives/851.html
posted @
2009-02-26 09:56 steady 阅读(3267) |
评论 (1) |
编辑 收藏
服务器上用 HttpClient 远程调用另一台服务器的一些资源,但是用 netstat 查看经常出现了很多的 CLOSE_WAIT 的连接,最后追查原因,是因为 HttpClient 的 method.releaseConnection() 并不是强制释放连接,为了减小连接数,使用了如下解决方案。在 HttpClient 完成请求后的 finally 块里面这么写。
} finally {
if (method != null) {
try {
method.releaseConnection();
} catch (Exception e) {
logger.error("-------> Release HTTP connection exception:", e);
}
}
if (client != null) {
try {
((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
} catch (Exception e) {
logger.error("-------> Close HTTP connection exception:", e);
}
client = null;
}
}
原文:
http://www.steadyxp.com/archives/832.html
posted @
2009-02-23 13:49 steady 阅读(4381) |
评论 (0) |
编辑 收藏
前两天 IntelliJ IDEA 8.0 发布了,在第一时间放出 IntelliJ IDEA 8.0 的注册机下载。点击进入下载页面 原版下载
posted @
2008-11-10 16:54 steady 阅读(15414) |
评论 (12) |
编辑 收藏
从淘宝第一个开始屏蔽百度以来,国内很多主流的 SNS 网站和大型的内容性质的网站都开始或即将开始屏蔽百度了,这些网站包括校内网、海内网等国内主要SNS网站,以及搜狐博客、51.com等网站。从SNS社区的说法,他们屏蔽搜索引擎是为了保护用户的隐私,但更多的是在保护自己的利益,比如说淘宝是在保护其极为客观的商品信息,而SNS是在保护对其最有价值的用户信息,特别从搜狐博客来看,更多的是希望提高其搜狗搜索的内容价值,总的来说,东西绝非单纯,纯粹是一种商业上的运作了,淘宝网敢第一个站出来跟百度斗,其他预谋已久的各大SNS网站跟着后头就跟着杀出来了。
这段时间百度又跟三鹿奶粉事件牵扯上了一些不清不楚的关系,搞的百度最近也疲于解释这些事,当然大家也不会真的相信这种解释了,因为百度在搜索结果人工干预上已经受到非常多的人的抱怨,我们也完全相信百度能干得出这样的事情,具体是因为这次风险大还是嫌钱少了没有去做,我们就不得而知了。
附一些主要网站的 robots.txt 文件,证明一下百度是如何被屏蔽的。
http://www.xiaonei.com/robots.txt
# Robots.txt file from http://www.xiaonei.com
# All robots will spider the domain
User-agent:BaiduSpider
Disallow:/
http://blog.sohu.com/robots.txt
User-agent: Googlebot
Disallow:
User-agent: baiduspider
Disallow: /
User-agent: Nutch
Disallow:
User-agent: *
Disallow: /
http://www.taobao.com/robots.txt
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
From: Steady Blog 国内主流SNS开始屏蔽百度
posted @
2008-09-17 17:15 steady 阅读(3670) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2008-09-15 22:24 steady 阅读(2630) |
评论 (0) |
编辑 收藏
看到在 DBA Notes 的文章(支付宝 + Firefox)说支付宝已经开始支持 Firefox 了。
目前支付宝对 Firefox 支持的说明:
1. 支持 Windows 平台的 Firefox ,支持版本:Firefox 1.5、2.0、3.x;届时还将提供自动安装功能,现在准备尝试的用户可以到 Mozilla 站点上下载支付宝安全控件(AliPay Security Control)(也欢迎广大 Firefox 爱好者在留言中给我们提一些反馈意见);
2. 目前在 Windows 平台下的 Firefox 下暂时还不提供对安全证书的支持,但是对安全证书的支持已经提上日程;
3. 对 Linux 平台下 Firefox 的支持已经在内部测试中,预期近期内即可发布;
可以说,这个是网银及电子支付业务的一大进步,支付宝可以说是第一个支持 Firefox 浏览器的支付解决方案,是第一个没有使用 ActiveX 实现的解决方案,同时,据支付宝方面的说法“我们目前所开发的 Firefox 插件,未做任何修改,就可以较正常运行在苹果的 Safari,和 Google 的 Chrome 浏览器上。经过分析发现,除了接口方案稍有区别,其大体的结构,还有页面的Embed 标签等都是兼容的,相信经过后续的改进,为 Firefox 所开发的安全控件和所修改的页面,只花很小的代价就可以运行在苹果和谷歌的浏览器上”,对于这方面技术的研究,不光是实现了一个功能,更重要的是,证明了在于非 IE 浏览器下同样可以实现类似 ActiveX 的功能,这样为 Firefox 和 Chrome 浏览器的后续发展提供了有力支持,虽然我用的最多的是 IE,但是 Firefox 和 Chrome 都有令我舍弃不得的好用功能,我想在多家浏览器竞争中,我们会得到更多更好的东西。阿里巴巴是一个重视技术,重视创新,有远见的好企业,赞一个,相反,在相同的电子支付领域,国内多数主流银行的网银服务在这方面几乎不做任何技术创新,改进现有蹩脚的产品,让用户长期忍着去用他们让人作呕的产品,相比较而言,阿里系的主要产品后面都有 UED 的工作,因为用户才是他们最重要的。
From: Steady Blog -
支付宝终于支持Firefox了
posted @
2008-09-14 22:03 steady 阅读(3527) |
评论 (4) |
编辑 收藏
在 Web 2.0 的概念被极度热炒,Ajax 这样旧瓶装新酒的技术的应用场景被极度放大,因为 Google 做 Ajax 大家都跟着做,但是这样大家往往忽略了另外一个更为简单有效的 Web 端应用平台 Flash,其实,很多应用场景下,我们可以用 Flash 轻松构建出非常漂亮的互联网应用。通过最近的一些爬网的使用,找到了一些国内外的一些优秀的 Flash 应用平台,来和大家做一些分享。
首先要介绍的是Buzzword,它的前身是 buzzword.com,前几个月已经被 Adobe 收购,这是一个很炫很好用的在线版 Word,这个来自于 Flash 东家的东西还是相当的夺人眼球的。直接打开了他的 demo,我们可以看到下面这样的编辑效果。
![buzzwordadobe](http://www.steadyxp.com/wp-content/uploads/2008/08/buzzwordadobe.jpg)
第一次使用 Buzzword 就被其几乎和 Word 相似的流畅的编辑操作,强大的表现效果所震惊,无论是文字编辑功能,还是非常灵活的图片自由布局,以及简单好用的表格编辑功能,包括批注等,用起来都是非常的顺手,丝毫感觉不出这是在 Web 上使用,在线编辑的文件可以自由的保存在网上或是共享给好友,甚至能方便的导出成 Word,PDF 等格式的文档,同样他还能导入我们在本地编辑的 Word 文件,继续在 Web 上编辑使用。
当然美中不足的是,Buzzword 暂时还不支持中文,我们只能编辑英文的文档,另外它的编辑功能和 Google Doc 这样的前辈比起来,也是有一定差距的,它的在线协作功能,和 Google Doc 这样的强手比起来还是逊色不少。
总体来说,buzzword 给我们一个全新的体验,原来我们在浏览器里也是可以如此流畅的使用和 Word 这样的应用,不得不说,在此方面,Flash 相对 JavaScript 是技高一筹。
下面我们再来看看一个 Flash 版的在线视频系统,来自于 Webex,这个当今世界上最大的网络会议系统提供商,同样也是顶级的 SaaS 服务提供商,最近也在尝试着推出了几款基于 Flash 的网络会议系统,我介绍其中一个比较酷的,Video Room,是一个在线的多人视频聊天室。因为是 Flash 的,也就不需要下载客户端,也不要装 ActiveX 控件了。
![videoroom](http://www.steadyxp.com/wp-content/uploads/2008/08/videoroom.jpg)
在 QQ 或者其他聊天工具上,我们也会看到同样的效果,但是,想想看我们其实是很幸福的,因为我们有 QQ,老外可就没这么爽了,MSN 或者 Skype 还没有这么强的多人在线视频呢,在网页上就能玩转视频聊天,还是个很酷的,特别是当你能即时接收到新的视频聊天请求时实时弹出的仿 MSN 的对话框,让你感觉不到这其实是一个网页。不过这个 Video Room 只提供给我们最基本的视频音频功能,不过拉一帮久未谋面的兄弟进来吵吵闹闹还是很适合的哦。
看完了一些国外大公司做的 Flash 应用,我们再把视线集中到国内,让我们看看联想实验室给我们带来的一些有意思的东西,其中我们可以看到一个叫做 Best4c 的在线版绘图工具,可以说这就是一个在线版的 Visio。
![best4c](http://www.steadyxp.com/wp-content/uploads/2008/08/224946_85619132.jpg)
我们可以用像操作 Visio 一样拖一些组件到编辑区域,然后用线把他们连起来,拼成我们需要的图,如果这不是在浏览器里面进行的操作,我们或许真的会把他当成本地运行的软件呢。Best4c 另外还提供给我们一套在线版的 PowerPoint 工具,让我们可以在线的制作自己的 PPT。虽然总的来说,best4c 提供的东西不是很产品化,使用起来不是太人性化,但是他也向我们证明了,国内在这方面的开发也在进行中,我们也在努力的和世界一同进步。
从以上一些应用我们可以看到,其实我们一直以来几乎可以说是赖以为生的 Office 系列软件,在线通讯软件,通过 Flash 强大的图形功能,让传统的单机应用变成了网络应用,无论是在效果上,还是开发成本,和纯的 HTML + JS + CSS 的传统 Web 应用架构相比,有了较大的改进。从 Flash 成为 Adobe 的一个重要成员,Flash 就开始一步步的蚕食互联网,前几年 Flash 携 FLV 几乎是将微软的 WMV 和 ReadNetworks 的 RMVB 两大流媒体从在线视频上彻底的赶了出去,而这几年,Flex 的推出,让企业应用的前端开发变得简单,去年推出的 AIR 则是更加深化了 Flash 平台在个人电脑中的影响。这一切我们可以看到,Flash 正以前所未有的速度改变着互联网。如果你现在在为企业应用的前端界面而头疼,Flex 可以帮你找回当年 VB 时代的感觉,如果你在做工作流平台的在线流程编辑器,或许你可以考虑一下 Flash,它或许能让你更简单的开发这样的图形应用。
posted @
2008-09-08 15:44 steady 阅读(1888) |
评论 (1) |
编辑 收藏
2008年8月29日,W3C 的Web IDL 工作草案正式发布,令人惊奇的是在规范说明中竟然出现了“周杰伦”的名字。
Web IDL(Interface Definition Language,接口定义语言)该规范定义了一个OMG IDL 3.0的语法子集,用来规范定义的接口。Web IDL 是一个具有多种功能的IDL 变量,便于规范Web平台中的常用脚本对象的操作。其中包括了大量的扩展功能,以及捆绑了针对ECMAScript 3rd Edition 和Java的语言工具。
令人惊奇的是,在规范说明书的3.8.9. Stringifies小节,“周杰伦”的名字赫然出现在示例代码中,堪称为以中文名出现在W3C规范里的第一人。(使用 UTF-8 编码查看)
截图:
![zhoujielun](http://www.steadyxp.com/wp-content/uploads/2008/09/zhoujielun.jpg)
介绍:http://www.w3.org/TR/WebIDL/
来源:CSDN
posted @
2008-09-06 08:18 steady 阅读(1904) |
评论 (7) |
编辑 收藏
jBPM 是一个非常优秀的开源工作流引擎,虽然他不是一个一站式的工作流平台,不过它已经为我们提供了比较丰富的底层操作,为了满足特定的项目需求,我们一般需要对其进行二次开发,才能适用于具体的业务需求。
其中一个主要的扩展点是针对 TaskNode 进行的用户的分配。TaskNode 是 jBPM 中一个非常重要的概念,一个任务节点可以包含若干个任务,不同的任务可以由不同的人来完成,任务实例被分配给 actorId 来完成,其中指定到人的分配工作就是 Assignment 要处理的,这也是我们需要定制的功能,为了实现用户的分配,我们需要实现 AssignmentHandler 接口,接口原型如下。
public interface AssignmentHandler extends Serializable {
void assign(Assignable assignable, ExecutionContext executionContext) throws Exception;
}
通常用代码实现的话,我们可以让一个类实现这个接口,并在 swimlane 或者 tasknode 中的 assignment 指定该类。但是,这样的灵活性是显然不够的,在系统的使用过程中,分配策略会不断的进行调整,因此我们需要更为灵活的解决方案,jBPM 本身可以使用基于 Bean Shell 的脚本来写分配策略,但是 Bean Shell 不是那么强大,我们需要更为强大的解决方案,因此,我们选用了已经被 JBoss 收为旗下的 JBoss Drools 4.0 规则引擎 (在 3.0 的时候曾经改名为 JBoss Rules,4.0 又改回来了)
完整版本请查看:http://www.steadyxp.com/archives/120.html
posted @
2008-09-05 15:29 steady 阅读(2300) |
评论 (0) |
编辑 收藏
一年来您可能听说 Google 在做新能源,在做手机平台,这下 Google 又要发射自己的卫星了。
Google和GeoEye签署一项排外性协议,Google购买GeoEye即将发射的GeoEye-1号卫星图像的在线独家使用权,之前Google已经与另一家主要的卫星影像提供商DigitalGlobe达成排他性协议。
GeoEye-1号卫星是目前最先进的高分辨率民用遥感卫星,将在本周发射,火箭的外壳将打上Google的logo。GeoEye-1重4,300磅,将在423公里轨道运行,能分辨地面41厘米大小的物体,但鉴于GeoEye与美国政府之间的许可协议,Google只能使用50厘米精度的卫星图片。"
我们过去看到过各式各样上面有 Google Logo 的东西,像笔啊,茶杯啦,我也有一个 Google 送的纸袋,这下连火箭上也有了 Google 的 Logo,这下 Google 的 Logo 走出了地球,飞上了太空。相信不久,Google Earth 也将走向高清时代。
posted @
2008-09-05 15:28 steady 阅读(1258) |
评论 (2) |
编辑 收藏
番茄花园美化修改版Windows XP的作者、软件下载网站番茄花园(tomatolei.com)站长洪磊的父亲19日晚22:50独家向新浪科技证实,洪磊已经于15日(上周五)被警方拘留审查,网站被关闭,服务器及洪磊的笔记本被警方带走,为洪磊提供的技术开发支持的成都红果科技有限公司也被查封。
据知情人士透露,由于此案是直接由上级机关指派给苏州公安局虎丘区派出所要求查处,并且负责破案的不仅仅是苏州方面,因此很早就有人猜测这是微软方面直接参与促成的事件。
8月20日中午,微软中国也向媒体正式作出了回应称,“番茄花园从事的软件盗版活动在相当长的一段时间以来十分猖獗,包括微软在内的众多国内外软件公司的权益均受到了严重损害,鉴于此,微软日前和其它软件公司就番茄花园网站的侵权犯罪活动,向国家版权局和公安部进行了投诉,并得到了高度重视。”
上个月可能最受大家关注的新闻就是这条了,或许大家会简单的认为这次事件纯属微软的反盗版行为,但是这次事件绝不仅仅是简单的反盗版,微软之意在于一箭双雕,一方面严重的打击了最大的盗版源,另一方面为其在中国面临的反垄断调查提供筹码,更深层次的意义在于消灭 Windows XP 在市面上的流行。
让我们来看看和微软反垄断相关的一些相关动作的时间吧:
7月31日,董正伟向商务部、国家工商总局、国家发改委发出《请求保护公民财产权益的建议申请书》,建议对微软开展反垄断调查,罚款10亿美元,并责令其公开程序源代码,并建立微软产品的价格听证制度。
微软做出的回应是:
“由于微软大部分以非正版方式存在,正版产品市场份额很小,因此微软在中国构成垄断的前提不存在。”微软公司资深副总裁、微软(中国)有限公司董事长张亚勤称。这是微软高管自中国《反垄断法》8月1日实施后第一次正面回应微软在中国的垄断问题。
从时间上来看,我们可以认为打击番茄花园是微软为了上面这个回应的提供一个有效证据,增加其在反垄断调查方面的筹码。
最后大家可能忽略了另外一个不是那么重要的信息:
据国外媒体报道,微软此前表示,将于2008年6月30终止Windows XP操作系统OEM(原始设备制造商)版和简装版的销售(系统集成商的相应终止日期向后延迟到2008年12月31日)
也就是说,我们现在已经无法买到正版的 WindowsXP 了,而面对兼容性的问题,对硬件要求过高的问题,也是 Vista 普及的重大瓶颈,特别是在国内 WindowsXP 改版如此流行的情况下,Vista 推广受阻,微软一定会想办法去给盗版 WindowsXP 市场来一次釜底抽薪,让 Vista 在正版和盗版市场的占有率同步提高。
可以说,这次微软打击番茄花园在各个方面都给微软带来了不少的好处,可谓是一个妙招,而番茄花园站长洪磊也就成为了继珊瑚虫以后的有一个商业利益的牺牲品了。
posted @
2008-09-05 10:02 steady 阅读(1630) |
评论 (2) |
编辑 收藏
大家可以去 Google Chrome 的官方网站去下载:
http://www.google.com/chrome
Google chrome特性是:
- 从界面来看,我们设计了一个简单而高效的浏览器窗口。对大多数人来说,浏览器本身并不重要,它只是一个能够运行互联网网页、网站和网络应用等重要程序的工具。正如谷歌的经典主页,谷歌浏览器延续了简洁、快速的设计理念,帮助用户快速准确地到达目的地。
- 从根本上讲,我们提供了一个能更好地支持各种复杂网络应用的浏览器基础平台。通过让每一个标签相互独立开来,从而避免了两个标签页产生冲突的可能,同时面对来自恶意网站的攻击,谷歌浏览器提供了更好的保护。我们提高了浏览器整体上的速度和响应度。我们还建立了一个更强大的 JavaScript 引擎 V8,以便为下一代网络应用技术提供支持,这些网络应用在目前的浏览器上几乎不可能实现。
- —–来自Google黑板报“浏览器的新视角”
Chrome并非基于Firefox,而是基于苹果的WebKit引擎。尽管Safari并没有获得巨大成功,但WebKit却向它提供了一大优势:速度。WebKit和谷歌开发的V8 java脚本渲染引擎联手,理论上将使Chrome在速度上“百尺竿头,更进一步”。即使Chrome的功能达不到出色的水平,也将成为Firefox的强大竞争对手。
Google chrome,中文名叫什么好呢?叫“Google 合金”?或者来个跟通俗乃至庸俗的名字“Google 浏览器”?呵呵,不管来什么,这个都是一个好事情。我们都充满着期待,也许过10几分钟,也许还有几个小时,我们都能看到庐山真面目了。不过我突然感觉到自己被来自Google的服务全面包围:Gmail、Gtalk、Google 输入法、Google Analytics、Google Reader 、 Google notebook,当然还有Google search。有点害怕,如果有天,Google告诉我你的Google 信用卡这个月消费是“1000RMB”,账单如下:…..。我还有什么Google所不知道的?:-(
再看看老外的Blog,几乎全球的技术Blog都在写有关Google Chrome的事情。真佩服Google 如此良好的口碑效应和强大的Marketing能力。有这样好的宣传,何愁没有用户?
posted @
2008-09-03 08:57 steady 阅读(2015) |
评论 (5) |
编辑 收藏
城市风景小区目前物业名为安徽合居美尚物业,该物业是刚于本月才成立的物业公司,只有暂定为三级的资质,无论从管理水平,管理资质上都不能达到一级服务标准,物业收费却按一级收费收费,有违《合肥市住宅小区物业综合服务收费指导价标准》的相关规定,但是在众多业主再三要求以及多次提意见之下,仍然没有得到任何答复和解决。
让我们来看看这个物业的所作所为吧
无组织无纪律,解决不了任何问题,遇到投诉一概推托,遇到问题一概无能为力,袖手旁观甚至说风凉话,晚上物业无人值班,出现任何问题没人可联系,更不可能帮忙解决;反而人多势众,一副欺软怕硬的样子,仿佛欺负业主才是正道;物业形同虚设,尤其是保安无所事事,近日来我们小区接连发生2起入户盗窃事件,被盗住户已有6家(5号楼4家,6号楼2家,第一时间,高新区公安局均有记录)。而且盗窃案件是在8.8号连盗四家5天之后又盗2家!!我们的物业“无所畏惧”毫无作为,简直拿业主的生命财产安全不当回事!!
相关恶劣表现不胜枚举!!请问,这样的物业,你们能够忍受吗?请问KFS, 这样的物业你们是怎么熟视无睹的?那么我们这些业主呢?是该行动起来还是继续沉默下去呢?
让大家都来了解一下,城市风景给了我们怎样的房子,又给了我们怎么样的物业?让一切惨不忍睹的行径曝光在众目睽睽之下,让更多的人来了解这个小区!!
posted @
2008-08-13 14:06 steady 阅读(963) |
评论 (4) |
编辑 收藏
淘宝网,国内最大个人网上交易社区正式推出了开放平台(Taobao Open Platform,TOP),用户可通过淘宝开放的API,创建各种不同的电子商务应用。
淘宝开放平台项目是淘宝软件公司面向3rd App开发者,提供API接口和相关开发环境的开放平台。软件开发者可通过淘宝API来获取淘宝用户信息 (卖方和卖方用户信息,私有信息需要授权)、淘宝商品信息 (全淘宝超过1亿个商品的名称、类目、型号、介绍等信息)、淘宝商品类目信息(全淘宝商品索引及分类明细)、淘宝店铺信息(全淘宝店铺信息)、淘宝交易明细信息(在取得用户授权的情况下,查询每笔交易的详细情况)、淘宝商品管理(淘宝商品的上传、编辑、修改等接口)等信息,并建立相应的电子商务应用。同时,作为淘宝开放平台TOP项目的唯一合作平台——阿里软件平台在其中也扮演着重要的角色,它将为开发者提供整套的淘宝API的附加服务:测试环境、技术咨询、产品上架、版本管理、收费策略、市场销售、产品评估等等。
很多人会联想到之前 Facebook, Google 等互联网巨鳄推出的 OpenAPI,这些主要都是社交类的 API,提供 SNS 相关的服务,从而扩大自己的用户群。但是很多人都认为,淘宝这样的大型个人交易类的网站,用户数据是非常私密的资料,那么淘宝为何要提供开放 API 呢。
大家不妨将视野放宽,扩大到淘宝以外,聚焦到阿里巴巴旗下的另一个子公司——阿里软件,就能看到淘宝开放平台的目的所在,和 Facebook 不同,Taobao Open API 的目标不仅仅是扩大自己的用户规模,重要的是,阿里巴巴要用这个平台为自己赚钱。或许看到这里,大家都很纳闷,既然是开放平台,都是开放的,如何去赚钱,盈利呢?这个重任被压在了阿里软件身上,这个摇钱树就是近几年一个很热的名词 SaaS。一年前,我们看不出来阿里软件有什么不同的地方,提供了诸如阿里旺旺等工具,而且都是免费的。从今年年初开始,大家就开始感觉到阿里软件的变化,它提供的软件不再是纯粹自己开发的了,更多的是将一些重要的数据接口提供给第三方开发者,第三方开发者利用 Taobao Open API 完成自己产品的开发整合工作后,将自己的软件发布到阿里软件平台上,有客户购买了第三方的服务后,阿里软件就顺理成章的从中抽取佣金。这是一个新颖的模式,也秉承了阿里巴巴一贯的风格,首先让别人赚钱,再自己赚钱。阿里巴巴希望通过淘宝这样一个巨大的商业用户平台,发展出一个 SaaS 的中小软件产业圈。
淘宝是免费的,淘宝开放平台也是免费的,但是淘宝却慢慢的开始赚钱,并不是提供免费的东西就不能赚钱,人多了,总是有办法赚钱的。
posted @
2008-08-08 09:31 steady 阅读(4640) |
评论 (5) |
编辑 收藏
摘要:
阅读全文
posted @
2008-08-04 21:38 steady 阅读(2334) |
评论 (5) |
编辑 收藏
Linux 的安全防护,用 fail2ban 自动封IP
总以为 Linux 比较安全,被攻击的概率较低,不过我用了非常简单的 root 账户密码 (password),家里的机子两次刚挂上网没半天就被人给改了密码,很是郁闷,不过两次的原因都很简单,挂上网后就开始遭遇不断的试密码,因为密码过于简单,很快就被攻破了,想想看,这也不是个事,密码就算比较复杂,天天也还是会被人试密码,心里总是不爽,找找看有没有什么输错几次密码就自动禁止 IP 的工具。这不,还真找到了个叫 fail2ban 的小工具,通过分析日志来自动 ban 入侵者的 IP,话不多说,装上去用用。
下载地址在:http://fail2ban.sourceforge.net/rpms/
找到最新版本的 rpm 包来安装,装好后,稍微根据自己的情况改一下配置就可以使用了。
vi /etc/fail2ban.conf
#以 daemon 方式启动 fail2ban
background = true
#允许尝试次数
maxfailures = 3
#触发 maxfailures 之後的封锁时间(秒); 设为 -1 表示永远封锁
bantime = 3600
#以 findtime (秒) 时间内的错误记录作为 maxfailures 的计数基准
findtime = 600
#排除 IP 范围, 以空白隔开
ignoreip = 127.0.0.1 192.168.0.0/24
#不启用 mail 通知
[MAIL]
enabled = false
#修改自 VSFTPD, 未提及的部份保持原设定
[PROFTPD]
enabled = true
logfile = /var/log/proftpd/proftpd.log
failregex = no such user|Incorrect password
#未提及的部份保持原设定
[SSH]
enabled = true
logfile = /var/log/secure
service fail2ban start
这个服务启动以后,每天都能在 /var/log/fail2ban.log 中看到有攻击的肉鸡被 ban 了。
2008-08-01 09:13:33,532 WARNING: SSH: Ban (3600 s) 205.189.197.66
2008-08-01 12:24:41,943 WARNING: SSH: Ban (3600 s) 121.52.209.5
posted @
2008-08-02 22:08 steady 阅读(588) |
评论 (0) |
编辑 收藏
经两次与开发商交涉,未达到预期效果,目前开发商安徽盛通置业对《业主意见书》所反映的种种现象予以否认,并采取不理不采的消极态度对待业主代表的交涉。
盛通置业总经理王文利用其与徽商集团的某种及其特殊的关系,积极压制业主对其的种种投诉,对于这样的情况,小区业主联合起来,积极展开维权活动。
posted @
2008-07-12 20:39 steady 阅读(500) |
评论 (1) |
编辑 收藏
业主意见书
致:安徽省徽商集团发展有限公司
由安徽徽商集团发展有限公司(以下简称“你方”)开发的徽商·城市庭院三期·城市风景现已按照《商品房买卖合同》约定的时间通知三期业主(以下简称“我方”)验房,但我方在验房过程中发现诸多有违《商品房买卖合同》中的条款的现象,以及有碍正常使用和存在安全隐患的多处质量问题,并就有关物业的收费有诸多疑议。特向你方提出书面说明,并就赔偿和整改提出我方意见,希望你方慎重对待。
第一条:你方有违《商品房买卖合同》的条款:
1.违反合同第十四条出卖人关于基础设施,公共配套建筑正常运行的承诺,验房当日,上下水不通,供电设施不能正常使用
2.违反合同补充条款中以下物品的规定:
(1) 防盗门:所有进户门都是防火门,而非防盗门
(2) 单元电子对讲保安门:室内未安装
(3) 信报箱:未安装
第二条:有碍正常使用和存在安全隐患的质量问题:
1.消防、智能化设施不完善
2.室内门、窗未按照《建筑安全玻璃管理规定》使用有双面3c认证标志的安全玻璃,阳台栏杆玻璃厚度不符合规范,且与可踏面的间隙过大
3.房屋墙体、楼面多处存在空鼓现象
4.墙面的垂直偏差大
5.配套设施不完善:小区道路、绿化、景观、车库等都未竣工,未达到一个小区正常交付使用的基本标准。
第三条:有关物业方面的疑议:
1.楼书上承诺是信誉较好的深圳长城物业管理有限公司,在我方尚未入住便已撤换,存在虚假承诺嫌疑
2.安徽合居美物业是刚于本月才成立的物业公司,只有暂定为三级的资质,无论从管理水平,管理资质上都不能达到一级服务标准,物业收费却按一级收费收费,有违《合肥市住宅小区物业综合服务收费指导价标准》的相关规定
就以上问题,我方业主经过集体协商,希望你方按以下方式进行解决:
对于第一条已构成违约,按照《商品房买卖合同》第九条的规定进行违约责任和由此造成的经济责任的赔偿,并就未按合同约定的安装、开通在5日内予以符合约定和规范的安装和开通。
对于第二条1、2、3、4项进行维修和更换,并根据每户具体情况进行相关规定的经济赔偿,第5项在10内整改完善完毕,并确保正常存活和使用。
对于第三条在给出合理解释的同时,重新核定收费标准,否则我方将集体不交物业管理费。
此《业主意见书》将委托业主代表亲自送达及挂号信两种方式送达你方。我方要求你方就以上三条涉及的内容,按照我方要求在最先送达之日起3日内就解决办法和期限做出书面回复。
我方将保留媒体曝光、政府部门投诉以及追究你方法律责任的权利,希望你方予以重视,积极解决。
本《业主意见书》尚未涉及事宜,我方将提出另外要求。
业主签字:
posted @
2008-07-10 21:12 steady 阅读(615) |
评论 (1) |
编辑 收藏
上班十年,节衣缩食,精打细算,只想能攒下一点钱,买套房子,好把远在老家辛苦了一辈子的年迈双亲接来安享晚年,尽一点赤子之心!
于是,07年,思量再三,相信了徽商集团和盛通置业的宣传,走近了城市风景的售楼部;
于是,本人十年积蓄 + 父母一辈子的积蓄 + 卖掉老家小城的房产,终于从KFS和售楼小姐的口中换回了一句承诺——08年6月底交房!
于是,我和我的亲人充满了希望,似乎美好的生活已经开始向我招手!
于是,我选择了信守承诺,安心等待!
于是,08年7月初,当谜底终于揭开的时候,我发现自己————很傻很天真!
墙面弯曲(有凸有凹),颇有流线型美感;
地面倾斜(高低不平),彰显不对称之美;
主卫客卫、墙顶墙体、水管自身,无处不漏;
从卫生间地面到过道墙壁,从主卧墙面到客厅四周,到处空鼓;
从厨房到卫生间,所有需要外接笼头之处均被深埋在墙体中等待我们业主将来挖掘;
至于防盗门关不上,窗户/门把手没装,插头面板没有、S弯管缺少、小区绿化。。。。。。我已学会视而不见!
这样的“房子”就是当初承诺的城市“风景”吗?
这样的“房子”符合交房条件吗?
这样的“房子”能够通过竣工验收吗?
换言之,一件大家可能花了毕生积蓄购买的昂贵商品,在质量明显严重不合格的情况下,能够做到强迫大家接受,并且大家不能拒绝否则就要罚款吗?
于是,事实再一次告诉我们,KFS能够做到!并且,它已经开始在这样做了!!
作为风景的业主,当下的我们,需要的不仅仅是生气、愤怒和失望,最重要的是,现在我们应该怎么办?!
posted @
2008-07-10 21:02 steady 阅读(536) |
评论 (1) |
编辑 收藏
本帖转自:http://bbs.hefei.cc/viewthread.php?tid=2180695&extra=page%3D1
以前看到不平的事情,即使跟自己没一点关系的,只要我觉得有必要的,我都会发帖骂下。这次,请大家让我为自己自私一回,骂一骂欺负到我头上的开发商。
去年,我家里人拿出了三代人的积蓄,在城市风景(长江西路888号)买了个小窝,从那时起啊我就日日盼,夜夜盼,希望早日能住进去,以至于每个月都要去工地上看看。(合同上约定是2008年6月30日交房)
我在2008年3月份就看出了问题,因为我所在的那栋楼根本就没人干活,一连好几个月都是如此,后来售楼部又接连几次通知要我去买停车位,我才明白,很可能是开发商资金链断裂了。紧张,不安。
2008年5月30号,我又来到了现场,只见我的那栋楼,进度和几个月前看到的一样,相比以前的差别只不过有人在干活了。天啊,一个月内能赶完吗?!我那栋楼一楼还有的墙没砌,有的楼板没装,空着好大的洞。我把这担心传达给了售楼部。售楼小姐信心满满地说,没问题,绝对能交房。于是我继续等待。
2008年6月22日,交房的前一周周末,我又去看了,楼板仍未装,墙仍未砌,阳台玻璃未装,窗户没装,售楼小姐仍是信心满满,我只好悻悻地回去了。
而这天之后的这一周里,我几乎每天都打电话给售楼部,问他们有没有发收房通知书。他们说发了。我从周一等到周六就是没有收到。
2008年6月29号(收房的前一天)又去了趟,居然还有工人在我家里砌墙!
到2008年6月30号还没收到收房通知书,只好自己到售楼部看看了。先去自己的小窝看了下,不管是入户门还是房间里面的玻璃门,一个都没装,水电气一个都没通,窗户完全没装好根本关不上,窗户边上还露着塑料泡沫,客厅里还有水管露在外面,书房里还有电线铁管露在外面,两个厕所和卫生间都在往下滴水,但是看一看自己房子的水龙头还没装。我愤怒了,不,已经出离愤怒了!怒气冲冲地跑到了售楼部,看到了与我同样怒气冲冲的业主们。只有很少的业主收到了收房通知书,一问才知道,开发商故意把收信地址写得很模糊,不给你电话通知,想让你收不到不来收房,能拖多久就拖多久,然后就是你违约,他没违约。无耻啊无耻,房子搞的不成玩意,难道还想强行交房?!开发商后来的一席话让我更是气不打一处来,今儿你收也得收,不收也得收:只要房屋结构出来了你就可以收房了(可笑,你搭几根柱子,装几块楼板,我们就能入住了是吧?!)违约金是没有的(那签合同约定干嘛)7月份不管没收没收物业费是要交的。后来又得知,一级资质的物业长城物业已于最近换成了开发商新成立的三级资质的物业,收费不变(1.1/每平方),每个月还要多收40元的公共能耗费。天啊,真牛的开发商,真厚脸皮的开发商。又找了家验房公司查查还有什么问题,查出来以后吓了一大跳,密密麻麻地写满了验房单:1、房屋内有空鼓十多处;2、垂直度超标几处;3、房顶不平几处;4、空调插座不合要求几处;————————还包括我自己一眼就能看出来的问题,共计三十项。回到售楼部,看到售楼部黑板上贴的文件,怒火再次充满胸腔几乎要迸发出来,1、入户门的合格证书上一个防盗的字样都没有,只说是防火门,而合同上约定的是防盗门,这两者的价格相差一倍;2、居然真的还有竣工验收备案表,上面还有人签字了,在这里通报下他们。
监理公司是:合肥南巽建设项目管理咨询有限公司
总监是:卞鑫
我就想问问卞总监,这么多问题的房子,您是怎么验收合格的呢?您怎么就敢往表上签字的呢?水管暴露在外,那么明显,您就看不见吗?
还有更搞笑的事情,所有房子的验收日期都是2008年6月26号,而6月29日的时候有的房子的墙都还没砌好,您怎么就验收通过了?怎么一下子在一天之内把小区内所有的房子都验收了?
我人肉搜索了下这个总监:
序号 |
姓名 |
性别 |
聘用单位 |
注册专业1 |
注册专业2 |
执业资格证书编号 |
岗位证号 |
55 |
卞鑫 |
|
合肥南巽建设项目管理咨询有限公司 |
房屋建筑工程 |
0012350 |
|
|
这位总监总监了不少项目,可谓是经验丰富,如:
1、南巽创景花园项目总监卞鑫
2、合肥市建设委员会
合建质安[2007]269号
合肥市2007年建设工程质量
监督执法检查情况通报
四、典型案例
(一)质量控制较好的工程
1、创景花园5#楼
建筑面积:13412m2,结构/层次:框剪/24层;
建设单位:创景物业公司;项目负责人:张保安
施工单位:浙江歌山建筑公司;项目经理:张权平
监理单位:合肥南巽监理公司;总监:卞鑫
工程质量评价:现场实物观感质量好,现场管理有序;施工、监理单位的质量保证体系运行良好;施工、监理资料齐全。
卞鑫还是某次评选评的的优秀监理工程师,对于这个人我没什么好说的。
如果是开发商伪造他的签名,我向他道歉,并将和他一起追究开发商伪造文件的问题;
如果真是他的签名,他就是混蛋之极、胆大包天、不负责任,吃喝卡拿要的典型,趁早还是从监理界滚蛋!
我们小区里并不是每栋楼都是这样,据说是有别的公司挂靠徽商集团建设的。合肥的那家公司就做的很好,不少业主都收房了,而我所在的楼,很不幸,听说是淮南的公司开发的,惨不忍睹,几乎没有业主收房!我们都在收房单上写上:问题很多,拒绝收房(写是因为怕开发商说我们没来收房,说我们违约)
我们将近60户业主100多人已于2008年7月6日在小区内进行了集会,集体签名,选出了业主代表,并向开发商递交了定期整改、赔偿协议书,如果开发商再不出面处理,我们将诉诸法律和媒体!
如果您是城市风景的业主,请顶下这个帖子,这是为您自己的未来考虑;
如果您是已经买房未交房的业主,请顶下这个帖子,这是您学习维权经验的机会;
如果您是已经即将买房未交房的朋友,请顶下这个帖子,这很可能是您将来要走的一步;
如果您是暂时不考虑买房的朋友,请顶下这个帖子,看我们如何跟开发商斗智斗勇!
谢谢诸位!
posted @
2008-07-08 20:51 steady 阅读(1452) |
评论 (12) |
编辑 收藏
开发商安徽盛通置业在没有满足交房条件的情况下,就向业主发出了交房通知书,引起业主强烈反应。
7.6号,三期业主集体聚集小区,商讨维权方案,并集体签名授权业主代表代表维权
7.7号,业主代表得到的反馈:今天上午接到销售部电话,说是老总出差了,于是我们就找到高新区质检站并将业主意见书给了质检站,下午质检站的一个林质检员到城市风景现场了解情况,有开发商分管工程的副总和工程部经理陪同,看来几家的情况后,质检站承认房屋质量确实存在质量问题,并由工程部人员、质检员和业主代表开会协商。工程部表示会尽快进行修复。我方要求要求以开发商的名义书面就《业主意见书》逐条在明确时间内给予答复解决。工程部表示认可,并按照我们要求的期限,周三给予明确答复。
posted @
2008-07-07 22:28 steady 阅读(956) |
评论 (15) |
编辑 收藏
周末的时候,淘宝对后台又做出了一次较大的升级,主要是在用户体验方面的调整,其实淘宝今年以来,基本上每个月都会有这方面的调整,也说明了淘宝用户体验部门的成果了。
第一次让我觉得有用的改动就是对收藏的调整,不用出现登录页面了,用一个弹出层解决了这些问题。前不久对评价的改动,让用户做出好评不需要点这么多按钮了。
这次改动我感觉是对我买到或者卖出的东西等一系列功能做出调整,比如说可以直接在列表里面关闭项目了,也是一个弹出层解决的问题。同时,也让页面更加简洁清爽,当然同时也会伴随用户的不适应。
其实我们更喜欢简单易用的系统,每次操作要输入很多或点很多都是很折磨人的,毕竟上网应该是简单,轻松的。Web 发展到现在,单纯的页面跳转与刷新越来越不流行了,Ajax 的真正价值开始被越来越多的网站开发团队理解与运用。
posted @
2008-06-11 23:09 steady 阅读(637) |
评论 (1) |
编辑 收藏
今天在看荣登 Jolt 大奖的 The Art of Project Management,其中最让我深有感触的是这样一段话:
The simpler your view of what you do, the more power and focus you will have in doing it. 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 beginner's mind, or open mind, an essential part of many martial arts disciplines. Staying curious and open is what makes growth possible, and it requires practice to maintain that mindset. To keep learning, we have to avoid the temptation to slide into narrow, safe views of what we do.
确实,最近已经很久没有太多兴趣去学习新的东西了,包括曾经非常有兴趣的 ruby,真想回到当年刚毕业的时候,用那样的热情,精神去学习。或许今天算是一个起点吧,毕竟很久很久没有做下来,好好的看一本书,好好的想着作者要告诉你的东西。
给自己开了个书单,好好努力,用 beginner's mind 去感受世界,感受前人的智慧。
posted @
2008-05-26 14:27 steady 阅读(382) |
评论 (0) |
编辑 收藏
什么是 ESB(Enterprise Service Bus)?
对于这个问题,长期没有搞清楚,就连我自己也很难说清楚这到底这是个什么样的概念,我引经据典来大致的描述一下这个概念。
第一个定义来自于:O'Reilly 的 《Enterprise Service Bus》
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 combines messaging, web services, data transformation, and intelligent routing to reliably connect and coordinate the interaction of significant numbers of diverse applications across extended enterprises with transactional integrity.
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.
另外一个定义来自于:维基百科的ESB定义
它是面向服务架构的实现。
它通常是操作系统和编程语言无关的;
它应能在Java和.Net应用程序之间工作。
它使用XML(可扩展标识语言)作为标准通信语言。
它支持Web服务标准。
它支持消息传递(同步、异步、点对点、发布-订阅)。
它包含基于标准的适配器(如J2C/JCA),用于集成传统系统。
它包含对服务编制(orchestration)和编排(choreography)的支持。
它包含智能、基于内容的路由服务(itenerary路由)。
它包含标准安全模型,用于ESB的认证、授权和审计。
它包含转换服务(通常是使用XSLT),在发送应用和接收应用之间转换格式,简化数据格式和值的转换。
它包含基于模式(schema)的验证,用于发送和接收消息。
它可以统一应用业务规则,充实其它来源的消息,分拆和组合多个消息,以及处理异常。
它可以条件路由,或基于非集中策略的消息转换,即不需要集中规则引擎。
它可监视不同SLA(服务级别合约)的消息响应门限,以及在SLA中定义的其它特性。
它(常常)简化“服务类别”,向更高或更低优先级用户做出适当的响应。
它支持队列,在应用临时不可用时用来保存消息。
它由(地理)分布式环境中的选择性部署应用适配器组成。
总的来说,ESB 提供了跨平台,跨部门,跨应用系统的服务整合的基础平台,就我们目前对项目的理解,我们或许还没有达到这个 level,我们提供的应该是个办公应用平台,除非我们确实会进行跨部门,跨业务的服务整合,那样我们真的是在做 SOA 了,那就有的折腾了。
不多说了,进入下一个主题 OSGi。
posted @
2008-05-26 14:26 steady 阅读(417) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2008-02-26 08:56 steady 阅读(1568) |
评论 (3) |
编辑 收藏
绑定在淘宝上的 SaaS 的阿里软件网店版,应该还是会有一些高级卖家愿意每天花一块钱用的,里面确实提供了一些比较有用的功能,当然不足的地方也是非常的多。
先说好的吧:首先,E客服就是比较有意思的东西,解决了很多客服平台的问题,过去我们为两个项目做的在线客服,跟它比起来,还是有差距的。平常店里可以同时有几个人一起打理,而且不会出现一个旺旺多个人使用的情况,它用的是子帐号的概念,各人独立一块,互不干涉。还是很不错的东西。
打印快递单应该也是个比较有意思的功能,如果货物量大的话,这个功能绝对是不可少的,大大减小了人力成本。不过估计我现在还是用不上的。
商品定时上架是个很好的功能,就是针对淘宝设计的功能,如果熟悉淘宝搜索结果规则的人,会很好的去利用这个规则,让自己的货物在最佳浏览时间出现在搜索靠前的位置。而定时上架就很好的解决了这个问题,如果有效利用的话,绝对会让你的商品卖的更好的。
在说一些不好的吧:首页有个统计最热卖的东西,但是没有找到热卖产品的排名,这个东西应该是挺有用的吧,不过似乎没有提供。查看报表里面,经常会刷不出图片,估计是 IE 的 Cache 原因,不再重新加载图片了。进销存这个东西没有和销售报告结合起来,应该算是一个缺憾了,希望下一个版本能有更多的东西。不过,不知道下个版本要到哪年,上个版本似乎已经发布半年了。
From:谈谈阿里软件网店版
posted @
2008-02-21 16:46 steady 阅读(803) |
评论 (0) |
编辑 收藏
卡巴斯基这个俄国人做的杀毒软件呢,一直比较彪悍,经常见到什么东西都一阵嘶吼,然后你正常使用的软件也就挂了,QQ啊,这样的主流应用也是经常在它的误杀范围内。
对于开发人员来说,因为卡巴斯基更是会有诸多不爽的问题,下面列举一二,是我的惨痛教训,也和大家分享一下。
- SVN 问题:如果你使用 SVN 做配置管理的话,有时候 check in 代码会半天没有反应,如果这时候你把卡巴禁用,就一切正常了。
- IntelliJ IDEA 端口冲突问题:用 IDEA 启动 Tomcat 时,使用了 8080 或者 80 端口,经常会启动就报端口冲突,而端口绝对是没有被其他应用程序占用的,而在独立的 Tomcat 下运行没有出现这样的问题,把卡巴对这些端口的监控关闭就一切正常。
这两个问题都是比较郁闷的,卡巴斯基很强悍,却总是让人很无奈。
From:对开发人员不友好的卡巴斯基
posted @
2008-01-29 10:18 steady 阅读(1959) |
评论 (7) |
编辑 收藏
Jolt Awards 是软件界的盛宴,被誉为软件界的奥斯卡,每年的 Jolt 中,能够看出软件开发领域的发展和未来的趋势,让我们来关注一下今年的大奖得主吧。
上周 Summer 推荐 Beautiful Code 的时候,也顺便找到了今年的 Jolt Awards Finalists,接着榜单,闲聊一下。
General Books |
|
Beautiful Code Edited by Andy Oram and Greg Wilson |
O’Reilly |
Geekonomics: The Real Cost of Insecure Software by David Rice |
Addison-Wesley Professional |
Manage It!: Your Guide to Modern Pragmatic Project Management by Johanna Rothman |
Pragmatic Bookshelf |
Myths of Innovation by Scott Berkun |
O’Reilly |
Outside In Software Development by Carl Kessler and John Sweitzer |
IBM Press |
Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard |
Pragmatic Bookshelf |
Technical Books |
|
Continuous Integration: Improving Software Quality and Reducing Risk By Paul Duvall, Steve Matyas, Andrew Glover |
Addison-Wesley Professional |
Fuzzing: Brute Force Vulnerability Discovery By Michael Sutton, Adam Greene, Pedram Amini |
Addison-Wesley Professional |
Head First SQL Your Brain on SQL—A Learner’s Guide by Lynn Beighley |
O’Reilly |
The Rails Way by Obie Fernandez |
Addison-Wesley Professional |
WPF Unleashed by Adam Nathan |
Sams Publishing |
xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros |
Addison-Wesley Professional |
图书方面,看上去几乎是被 O’Reilly 和 Addison-Wesley 给垄断了,Pragmatic Bookshelf 也在其中占有了一席之地。图书中,最大的赢家应该是,Beautiful Code,我在国内某家被我批评过的IT书店上看到了挂上了期数的预告,名字叫《代码之美》,似乎有抄袭《数学之美》的嫌疑,第一次看到这么多作者一起写出来这么好的书,33 章的书,就包括了 33 个来自于不同领域的作者,共同创造了如此完美的代码,在 O’Reilly 的牵线搭桥下,造就了 Beautiful Code,如果有机会,我希望能由东南大学出版社出版这本书的英文影印版,让我们细细的品味。
Head First 的新书 Head First SQL Your Brain on SQL 也登上了 Jolt 的舞台,之前 Head First Design Pattern 和 Head First OOAD 是如此通俗的把面向对象的两个经典内容:设计模式和面向对象的分析与设计,聊家常一般的摆在我们的面前,精妙的内容组织,浅显易懂的语言,就连我们这些非常怕看英语的人看起来都毫不费力,不愧为大师级的功力。而这本新书料想也会给 SQL 的新手带来一种全新的体验吧。
Pragmatic Bookshelf 这个书系自从《Pragmatic Programmer》 开始,就不断的扩大其影响。从程序员修炼三部曲中,告诉了我们版本控制,单元测试,持续集成这三个开发者的基本工具。随后的 Pragmatic Ajax 把 Ajax 推到了大家的面前。当 Ruby on Rails 开始流行的时候,Programming Ruby 和 Agile Web Development with Rails 都在一版二版的洗礼中不断的升华,已经成为 RoR 开发的经典之作。这次的 XX It 系列又从软件项目管理角度来 Pragmatic 。我似乎看到过 Ship It 还有 Deploy It 这两本,或许也是这个系列里的吧。
The Rails Way 我一开始当成了 The Ruby Way,其实后者的风格我比较喜欢了,于是又套用了它的名号来了个 The Rails Way,虽然现在还没有拿到,我想这本书会给我们一些新意的。
Development Environments |
|
Alpha Five version 8 |
Alpha Software Inc. |
CodeRush/Refactor! Pro |
Developer Express Inc. |
IntelliJ IDEA |
JetBrains |
Komodo IDE 4 |
ActiveState |
NetBeans IDE 6 |
Sun Microsystems |
QNX Momentics IDE 4 |
QNX Software Systems |
Web Development Tools |
|
3rdRail |
CodeGear |
Adobe ColdFusion 8 |
Adobe Systems, Inc. |
Appcelerator Platform |
Appcelerator, Inc. |
IntelliJ IDEA |
JetBrains |
NetBeans IDE |
Sun Microsystems |
RSSBus |
/n software |
开发工具大奖上已经看不到了 Eclipse 的身影,而 IDEA 依然在榜单上活跃,而我也是一如既往的使用它,即便是在 Rails IDE 中,IDEA 凭借其 Rails 插件,加上它的基础,用起来还是相当的顺手,目前除了不能 Debug,我似乎没有其他不满的地方。
Netbeans IDE 在年末闪亮登场后,带来了一个更轻更小,更完整的开发工具包,而 Eclipse WTP 一个包动辄就是 2xxM,虽然功能很齐全,不过体积实在是有些过分了,并且没有一种 IDEA 的那种让人很爽的感觉。我没有用完整的 Netbeans 包,因为 Java Web 开发已经习惯了 IDEA + Eclipse 的组合,我只关注了一下 Ruby IDE,功能上来说,确实有其独到之处,不过在写代码上还不能达到非常流畅的速度。不过 Netbeans 在两年里就来了个咸鱼翻身,我们要说 Sun 很努力了。
Libraries/Frameworks |
|
Eclipse Modeling Project |
Eclipse |
Guice |
Google Inc |
JasperReports |
JasperSoft |
Qt Jambi |
Trolltech |
Spring Framework |
SpringSource |
Zend Framework |
Zend Technologies |
在开发框架上最活跃的依然是 Java 平台,这和 Java 平台一直以来保持的很好的开源社区是分不开的。EMF,Guice,JasperReports,Spring Framework 这几个一直都是 Java 领域最热门的开源项目。
Google Guice 在 Google 的天才程序员 Bob Lee 的创意中诞生了,采用了一种全新的依赖注入的方式,将效率提高了传说中的 100 倍,虽然对这个数据我不是太在意,而在 Spring 如此成熟的进入 2.0 后,却有一个后辈小生提出了全新的思路,而 Spring 2.5 也接受了这样的思路,调整了一些依赖注入的策略,在性能上有了不小的提高。
经营着 Spring 的 interface21 为了凸显其 Spring 的品牌,改名为 SpringSource,并且推出了一本《Spring In Production White Paper》,希望能够在企业应用中占有更大的份额。
作为 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 开发无穷的活力。
聊聊 Jolt Awards 2008
posted @
2008-01-12 22:23 steady 阅读(3758) |
评论 (3) |
编辑 收藏
第一次用 Zoundry 客户端工具来发布博客,WordPress 还是不错的博客了,提供了 XML-RPC 方式的远程提交接口,我们可以比较容易的把我们的博客发布到 WordPress 上。
老外对这方面的支持工作还是做的不错的,国内的同类系统往往只考虑到功能,好一点的考虑到性能,而在这些新技术带来的扩展性的增强上似乎没有太多的理解,虽然 WordPress 在功能上和国内的很多博客有一定的差距,但是人家支持插件,这样就可以让地球人都上来扩展一把。Eclipse 的插件风风火火的做了几年,现在人似乎没有不用插件开发的了。
老外在 Web 2.0 中又很多好的思想,技术,拿到国内来就有点变味了,虽说国人在 Web 2.0 技术上跟进的速度还是相当的快,不过思想还是又相当的差距的。
要好好学学人家做东西的思想,而不仅仅是技术。
posted @
2008-01-04 16:42 steady 阅读(988) |
评论 (0) |
编辑 收藏
该文章被发布在我的新博客中:http://4think.cn/blog/index.php/archives/25
市面上这么多的IM工具,每次打开的时候就要开上一堆,还不时的有个新的IM工具出来,加上一两个及其有吸引力的功能,然后又不得不装上,搞的每次开机以后总是要开上一大堆的IM,比如QQ啦,MSN啦,还有Yahoo,Google Talk,飞信,Skype,真的挺麻烦的。
一年前的时候,突然听说 Yahoo 可以和 MSN 互通了,于是从此就没用过 MSN 了,也是对 Microsoft 歧视国内用户的一种不满吧,这么多IM工具,最不稳定的也最为常用的要属 MSN 了,虽然飞信这样“国”字号的软件似乎更加的不争气,就原谅他吧,谁叫他是咱最有钱的移动运营商呢。可以说,MSN 的掉线率是相当的高,登录速度也是惊人的,在公司内部传文字的效率呢更加不用说了,反正没有人走的快。不过据我们去过美国的一些同事说,MSN 在美国速度是非常快的,包括其下属的 hotmail,MSN Space,怪不得这么被推崇了,不过没办法,毕竟是在国内,属于不被重视的使用群体,大不了就不用了,于是机子里再也没有出现过 MSN,所有重要的好友都加到 Yahoo 里了。
其实说来 Yahoo 也是个比较不争气的东西,功能嘛,没啥强的,不过吃内存的能力还挺强,印象中也就 Skype 可以和他有的一拼,不过好歹人家 Yahoo 还是比较重视中文用户的,起码光缆断的时候还是能用的,而且相关的本地化服务也还是有一定的可用性的,Yahoo的邮件提示是最为迅速的,基本上是新邮件来到5秒之内就得让你知道,这个功能还是挺体贴用户的,其实我的一些 IM 的一个重要作用就是 check email,比如说 Google Talk。Yahoo 的客户端程序其实是比较不稳定的,群聊功能是个杀手,一次领导通知事情,让大家开个会,结果一位老兄图方便,Yahoo 把大家全部加进来了,大家的机器全部死翘翘,只好 reset 重启,自此以后,这个功能再也不敢使用了,Yahoo 工具箱里有个看股市行情的插件,不过这个曲线也太不本地化了,中午休息的时间也画在上面,一条长长的直线,怎看都别扭。没办法啊,公司里唯一允许的 IM 工具,不得不装,也就不得不去忍受这些了。
Google Talk 其实是我用的最多的,极为简洁,拥有我需要的主要功能,email 通知,语音,文本聊天,传文件(大家都喜欢装中文版的,没这个功能,所以也基本找不到人传文件),其实还有一点重要的就是所有聊天记录都会保存在 Gmail 里,在哪都不会丢失,也很连贯,这对于我们经常讨论需求的人就不会有上句没下句的了。也不用担心聊天记录留在本地泄密。另外还有一点,传代码的时候绝对不会变成一堆笑脸什么的。Google Talk 其实功能上是相当有限的,但是我却非常喜欢,简洁就是美了。
下面隆重出场的是唯利是图、忘恩负义外加极端不安全的 QQ 了,如果不是这么多好友在里面,我是不会开 QQ 的,当然 QQ 作为国内用的最多的 IM 工具(其实叫他聊天工具更确切),QQ 还是有相当多的优势的,首先网络稳定性好,传文件速度快,有远程协助功能,语音质量也不错,可以看 IP(还不都是珊瑚虫的功劳,被忘恩负义的腾讯扼杀了),有群聊功能,也是最适合某些夜晚不甘寂寞的人寻找刺激的工具了,其他的功能我是不大能想到的了,更不用说去用了,所以嘛,QQ 对我来说,太大了,太花哨了,对公司来说也是的,基本上正规的公司,没有哪个不封 QQ 的,所以嘛,QQ 只能被远远的拒之于企业应用的门外,腾讯的 RTX 也就不是那么容易进入企业市场的,谁让你这么花哨,看了就不想好好工作了。
Skype 这个东西嘛,对我用处不大,自从充值卡被封事件以后就不再常开了,开会的时候才会去用,毕竟多人语音聊天功能还是挺不错的。
国外的大部分 IM 工具都开放互通了,包括 MSN 和 Yahoo,Google Talk 也在和 MS 谈互通的问题,国内的 IM 互通嘛,似乎完全不可能,国外那几家都不是靠 IM 吃饭的,腾讯就不一样了,如果不保持其 QQ 的占有率,疯狂的扼杀非“官方”的客户端,LumaQQ 这么优秀的跨平台解决方案也就被腾讯自己和谐掉了,最近对珊瑚虫下狠手也表示其在此方面的决心,呵呵,我的 QQ 从此不升级了。
posted @
2008-01-02 11:27 steady 阅读(2015) |
评论 (4) |
编辑 收藏
每个人在开发的时候,都会根据自己的喜好选择一些好用的工具,当然,通过一些年头的积累,我自己也有了这么一些顺手的工具,就把这些还不错的东西拿出来和大家分享吧。
CyberArticle (网文快捕)
我们在查看资料,或者遇到问题上网搜索的时候,经常会想把自己看到的一些好东西保存下来,以后需要用的时候可以找到,有人把东西复制下来保存成文本,有人用 Word 文档,也有人直接保存页面,这些方法固然是可以,不过以后找起来可就比较麻烦了。我们需要一个带分类的文档管理工具。
在对一堆工具的筛选之后,我选中了 CyberArticle,也就是网文快捕,安装以后,在浏览页面时,IE 和 FF 的右键会出现保存全文,保存选中部分这样的选项,我最喜欢的是保存选中部分这个功能,毕竟我们并不需要一个网页中一些不相关的文字和图片。CyberArticle 可以完整的把文章内容或选中部分的内容保存下来,无论是图片或者其他什么的,都能较好的支持。在保存下自己喜欢的内容后,我们可以手工把这些内容分类,以后会比较容易的找到自己需要的东西。
另外 CyberArticle 中比较有用的功能是生成电子书。我们在网上搜集到一堆某一类别的文章,为了与他人分享或者便于携带,我们可以把这一个独立的类别的内容导出成 CHM 或 EXE 版本的电子书。
CyberArticle 可以到 http://www.wizissoft.com/cn/index.aspx 下载,强烈建议使用最新的 5.0 版(只要25块钱),旧的版本会有相当一部分的文章保存不下来。
posted @
2007-11-29 10:59 steady 阅读(2071) |
评论 (11) |
编辑 收藏
昨天看到新闻,IBM 在其网站上放出了 Lotus Symphony 的 beta 版,看上去有点 Office2007 的一套办公产品,最重要的是它是基于 Eclipse-RCP 平台的,如果说 IBM 让 Lotus 去做一个标准的 Windows 应用像 Office2007 到没有什么奇怪的,关键在于它是 Eclipse 平台的,IBM 在一个强大的 Eclipse 平台上,构建出了一个向 Microsoft 最核心产品叫板的应用,这大大的壮大了 Java 爱好者的威风。
过去我们 Swing / SWT 做的东西似乎很难有直接面向普通用户的优秀的应用,这次 IBM 是代 Java 出了重重的一拳,Eclipse 平台不但是与 Microsoft 的 Visual Studio 叫板,甚至可以和 Office 叫板了。
从另一方面来说,从 Lotus Symphony 的推出,IBM 进一步亮相了 Eclipse RCP 的高级 UI 组件,传统的 Eclipse 开发出的东西,千篇一律,没有太大的界面差别,但是 Lotus Symphony 上却不太容易让人联想到 Eclipse,除了看到启动画面上 build on eclipse 的只有,还有一些熟悉的菜单项,和 PlugIn 相关的内容才会发现,哇,这个酷酷的应用原来是 Eclipse 平台上的产品。
当然 Lotus Symphony 并没有说是开源的,这些新的,酷酷的 UI 组件也并没有向开源社区开放,按照 IBM 最近几年的惯例,迟早是要捐出来的,但前提是先做几套东西,卖点钱再说,Eclipse WTP 的很多东西来源于 WSAD,很多 Eclipse 的插件也是来源于 Rational 的产品,只是 IBM 觉得没有什么商业价值了,才捐出来。
其实我是非常希望 IBM 能尽快和大家分享 Lotus Symphony 的成功经验,也希望更多的 Eclipse 爱好者能够开发出更多强大的应用,特别是桌面级应用,让更多的人看到,Java 在成长,在进取。
---------------------------------------------------
顺便做个小广告 链客中国 www.linkedcast.cn 上线运行,欢迎广大 Blogger 使用
posted @
2007-09-23 08:40 steady 阅读(1123) |
评论 (8) |
编辑 收藏
Java Web 应用似乎总有这样的情况,有事没事总是要在 URL 后面加上个 jsessionid,而且似乎不能使用配置的方式直接禁用 URL 传递 sessionid,这样,就比较容易造成安全性的问题,或者在浏览器地址栏里留下一堆很不好看的地址,在 Struts2 中,使用了 url 标签的所有链接,甚至 CSS, JS 这样的东西,都会加上 jsessionid,如何去禁用呢,搜索国内的相关文章,无功而返,询问我们过去的架构师,也没有做过,只好想办法去找国外的网站,找到了这样的一篇文章。
http://randomcoder.com/articles/jsessionid-considered-harmful
通过加入 Filter 的方式过滤掉 URL 中包含的 jsessionid,再重新包装 Response 返回给浏览器。
因为没有太多东西,就不多解释了,大家拿了用就可以了。
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* Servlet filter which disables URL-encoded session identifiers.
* <p/>
* <pre>
* Copyright (c) 2006, Craig Condit. All rights reserved.
* <p/>
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* <p/>
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* <p/>
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* </pre>
*/
@SuppressWarnings("deprecation")
public class DisableUrlSessionFilter implements Filter {
/**
* Filters requests to disable URL-based session identifiers.
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// skip non-http requests
if (!(request instanceof HttpServletRequest)) {
chain.doFilter(request, response);
return;
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
// clear session if session id in URL
if (httpRequest.isRequestedSessionIdFromURL()) {
HttpSession session = httpRequest.getSession();
if (session != null) session.invalidate();
}
// wrap response to remove URL encoding
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
@Override
public String encodeRedirectUrl(String url) {
return url;
}
@Override
public String encodeRedirectURL(String url) {
return url;
}
@Override
public String encodeUrl(String url) {
return url;
}
@Override
public String encodeURL(String url) {
return url;
}
};
// process next request in chain
chain.doFilter(request, wrappedResponse);
}
/**
* Unused.
*/
public void init(FilterConfig config) throws ServletException {
}
/**
* Unused.
*/
public void destroy() {
}
-------------------------------------------------------------------------------------------------
顺便做个小广告 链客中国 www.linkedcast.cn 上线运行,欢迎广大 Blogger 使用
posted @
2007-09-08 20:13 steady 阅读(5665) |
评论 (4) |
编辑 收藏
在过去使用 Spring 整合 Hibernate 的时候,都是用这样的配置方式。
<bean id="sessionFactory" lazy-init="true"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>resources/icustomer/Contact.hbm.xml</value>
<value>resources/icustomer/Customer.hbm.xml</value>
</list>
</property>
.
</bean>
每当需要加入一个新的 VO 时,我需要过来修改配置文件,来引入对新的 VO 的支持。现在我使用的时候,是这么配的:
<bean id="sessionFactory" lazy-init="true"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingLocations">
<list>
<value>classpath:resources/**/*.hbm.xml</value>
</list>
</property>
.
</bean>
做项目开发的时候,就再也没有改过配置。
posted @
2007-08-17 13:58 steady 阅读(1925) |
评论 (5) |
编辑 收藏
因为有一个 Struts2 网站发布,需要整合一个论坛来使用,公司的一个项目过去曾经整合过一个英文论坛,但似乎不能满足我们的需求,需要找一个成熟稳定的中文论坛,与我们的系统结合。
最终选择了 Discuz 作为我们的论坛系统,主要是因为它提供了一套可用的 Passport API,来直接与我们现有系统进行整合。
下面摘录 Discuz 文档中的内容来说明整合原理,随后的几篇中,将详细描述具体的整合过程。
假设已设置如下变量或参数
- 挂接 Discuz! Passport 的应用程序假设为一套 PHP 语言编写的 CMS 系统
- Discuz! 的 URL 为 http://www.myforums.com
- 应用程序的 URL 为 http://www.mywebsite.com
- 应用程序的注册页面为 http://www.mywebsite.com/register.php
- 应用程序的登录页面为 http://www.mywebsite.com/login.php?action=login
- 应用程序的退出页面为 http://www.mywebsite.com/login.php?action=logout
开启通行证后的用户登录流程
- 如果用户在论坛点击“登录”,则转向到事先设置好的应用程序登录页面(http://www.mywebsite.com/login.php?action=login),并在登录页面的 URL 中加入参数 forward(加入 forward 后的链接例如 http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php),用于在登录后将用户导向到指定的 URL。
- 应用程序收到此请求后,按照惯例生成表单,并增加一个表单变量,将 GET 方式传递过来的 forward 参数通过表单进行传递。
- 用户在应用程序的表单中填写登录信息,并提交到应用程序的登录验证程序。应用程序验证用户提交的用户名和密码的合法性:
- 如果不通过:提示用户名密码错误,要求其返回上一页重新填写。
- 如果通过,需要进行如下操作:
- 设置自身 Cookie 或 Session,使得应用程序自身处于登录状态。
- 检查表单中是否提交了 forward 变量,如有,则意味着登录请求可能是由论坛而来,将此变量传递到后面的请求中。如没有,自行生成 forward 变量,使得论坛登录后能够跳转回到应用程序中。
- 通过 header('Location: http://www.myforums.com/api/passport.php?action=login&auth=xxx&forward=http://yyy&verify=zzz') 的方式,将登录请求传递到论坛进行处理。其中 auth 用来将用户信息与资料以特定的格式,加密传递给论坛,forward 用于告知论坛 Passport API 完成自身操作后转向到的 URL 地址,verify 用于验证前面两个变量的有效性。auth、forward、verify 格式与结构将在后面进行说明。
- Discuz! Passport API 在接收到由应用程序通过 header() 提交过来的请求后,进行如下操作:
- 根据 verify 判断 auth 和 forward 变量是否合法,如合法则继续,否则终止。
- 将 auth 根据既定算法解密,并还原成数组,数组的内容与格式将在后面进行说明。根据数组中的内容,检查此用户是否存在。如存在,则根据上述数组中的内容 UPDATE 论坛中相应的用户资料。如不存在,则使用数组中的信息 INSERT 到论坛用户资料表中。
- 论坛设置 Cookie 或 Session,使得论坛自身处于登录状态。
- 根据应用程序反馈的 forward 值,通过 header('Location: http://xxx') 的形式将页面跳转到 forward 变量指定的 URL。
- 至此,登录流程结束
开启通行证后的用户退出流程
- 如果用户在论坛点击“退出”,则转向到事先设置好的应用程序退出页面(http://www.mywebsite.com/login.php?action=logout),并在登录页面的 URL 中加入参数 forward(例如 http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php),用于在退出后将用户导向到指定的 URL。
- 应用程序收到此请求后,清除自身 Cookie 或 Session,使得应用程序自身处于非登录状态。
- 检查是否提交了 forward 变量,如有,则意味着登录请求可能是由论坛而来,将此变量传递到后面的请求中。如没有,自行生成 forward 变量,使得论坛登录后能够跳转回到应用程序中。
- 通过 header('Location: http://www.myforums.com/api/passport.php?action=logout&forward=http://yyy&verify=zzz') 的方式,将退出请求传递到论坛进行处理。其中 forward 用于告知论坛 Passport API 完成自身操作后转向到的 URL 地址,verify 用于验证 forward 变量的有效性。forward、verify 格式与结构将在后面进行说明。
- Discuz! Passport API 在接收到由应用程序通过 header() 提交过来的请求后,进行如下操作:
- 根据 verify 判断 forward 变量是否合法,如合法则继续,否则终止。
- 清楚论坛的 Cookie 或 Session,使得论坛自身处于非登录状态。
- 根据应用程序反馈的 forward 值,通过 header('Location: http://xxx') 的形式将页面跳转到 forward 变量指定的 URL。
- 至此,退出流程结束。
开启通行证后的用户注册流程
posted @
2007-08-11 17:30 steady 阅读(3269) |
评论 (3) |
编辑 收藏
Reschedule
rescheduleJob(String triggerName, String groupName, Trigger newTrigger)
在进行 reschedule 操作的时候,我们通常只需要修改 Trigger 的时间,这时候我们只需要重新 new 一个含有新的 Schedule 时间的 Trigger 对象,reschedule 一下就可以了。
Unschedule
unscheduleJob(String triggerName, String groupName)
进行 unschedule 的时候,我们只需要知道名字和 group 就可以了。
进行 Schedule 操作前后,Database 中的相关数据都会被更改,在执行 unschedule 或者该 schedule 已经执行过,数据库中的 trigger 信息都会被删除。
posted @
2007-08-03 09:00 steady 阅读(1655) |
评论 (4) |
编辑 收藏
Quartz 是一个强大的企业级 Schedule 工具,也是目前最好的开源 Schedule 工具,最近因为项目的需要,简单的用到了 Quartz 的一些功能,对项目中使用 Quartz 的一些问题做简单的记录。
在 Quartz 的应用中,我们用到了以下的一些东西,ScheduleFactory, Scheduler, Job, JobDetail, Trigger,简单说明一下他们的用途。
SchedulerFactory 是 Scheduler 的工厂,我们可以从中获得受工厂管理的 Scheduler 对象。
SchedulerFactory scheduleFactory = new StdSchedulerFactory();
Scheduler scheduler = scheduleFactory.getScheduler();
Scheduler 是一个计划集,其中可以包含多个 JobDetail 和 Trigger 组成的计划任务。
我们可以从 SchedulerFactory 中取得 Scheduler。
接口Job是每个业务上需要执行的任务需要实现的接口,该接口只有一个方法:
public interface Job {
public void execute(JobExecutionContext context)
throws JobExecutionException;
}
我们可以在里面定义我们的 Job 执行逻辑,比如清除过期数据,更新缓存等。
JobDetail描述了一个任务具体的信息,比如名称,组名等等。
JobDetail jobDetail = new JobDetail("SayHelloWorldJob", Scheduler.DEFAULT_GROUP, SayHelloWorldJob.class);
在上面的构造方法中,第一个是任务的名称,第二个是组名,第三个就是实际当任务需要执行的回调类。
Trigger顾名思义就是触发器,Quartz有个很好的想法就是分离了任务和任务执行的条件。Trigger就是控制任务执行条件的类,当Trigger认为执行条件满足的时刻,Trigger会通知相关的Job去执行。分离的好处是:
1.你可以为某个Job关联多个Trigger,其中任何一个条件满足都可以触发job执行,这样可以完成一些组合的高级触发条件
2.当Trigger失效后(比如:一个永远都不能满足的条件),你不必去声明一个新的job,代替的是你可以为job关联一个新的Trigger让job可以继续执行。
目前的Quartz实现中,存在两种Trigger,SimpleTrigger和CronTrigger,SimpleTrigger用来完成一些比如固定时间执行的任务,比如:从现在开始1分钟后等等;而CronTrigger(没错,和unix的cron进程的含意一样)用来执行calendar-like的任务,比如:每周五下午3:00,每月最后一天等等。
在我们项目中,都是一些固定时间的 Job,所以只用到了 SimpleTrigger。
Trigger trigger = new SimpleTrigger("SayHelloWorldJobTrigger",Scheduler.DEFAULT_GROUP,new Date(),null,0,0L);
这个构造方法中,第一个是Trigger的名称,第二个是Trigger的组名,第三个是任务开始时间,第四个是结束时间,第五个是重复次数(使用SimpleTrigger.REPEAT_INDEFINITELY常量表示无限次),最后一个是重复周期(单位是毫秒),那么这样就创建了一个立刻并只执行一次的任务。
但我们定义好了 JobDetail,Job,和 Trigger 后,就可以开始 Schedule 一个 Job 了。
scheduler.scheduleJob(jobDetail, trigger);
这条语句就是把job和Trigger关联,这样当Trigger认为应该触发的时候就会调用(实际上是Scheduler调用)job.execute方法了。
scheduler.start();
千万别忘了加上上面的语句,这条语句通知Quartz使安排的计划生效。
关于execute方法的参数JobExecutionContext
JobExecutionContext就和很多Context结尾的类功能一样,提供的运行时刻的上下文环境,JobExecutionContext中有Scheduler,JobDetail,Trigger等很多对象的引用,从而当你在execute方法内部须需要这些对象的时刻提供的便利。
在项目中,我们把需要执行的 Job 相对应的一些信息放在 JobExecutionContext 中,在 Job 执行的时候可以调用。
jobDetail.getJobDataMap().put(userid, id);
在 Job 中,我们可以拿到相关的 Context 信息:
jobExecutionContext.getJobDetail().getJobDataMap().getInt(userid);
JobDetail和Trigger的name和group
Scheduler实例对应了很多job和trigger的实例,为了方便的区分,Quartz使用name和group这两个特性,正如你想向的一样,同一个group下不能有两个相同name的JobDetail,Trigger同理,同一个Scheduler下不能有两个相同group的JobDetail,Trigger同理,JobDetail和Trigger的完全限定名为:group + name
为了让服务器重启以后,我们的 Scheduler 信息仍然不丢失,我们通常采用数据库持久化 Scheduler 的信息。
DBScript 在 Quartz 的下载包中的:quartz-1.6.0\docs\dbTables 下,选择自己使用的 DB 相应的 Script 导入数据库就可以了。
在应用中,我们需要配置一个 quartz.properties 才能正常使用 DB。我们可以在 quartz-1.6.0\examples\example10 中找到该文件的样例,稍作一些修改,就可以放到自己项目源码的根目录下使用了。
设置 org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX 即可启用基于 JDBC 的 Quartz 信息持久化。
根据项目情况设置以下配置信息:
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/myapplication
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =
org.quartz.dataSource.myDS.maxConnections = 5
但是光设置了 Database 不够,我们还需要在 Application 启动的时候自动启动 Scheduler 才行,我们只需要简单的写一个 Servlet 的 Listener 并在 web.xml 中声明该 Listener ,在 Servlet 容易启动的时候,Scheduler 就开始自动执行。
public class ScheduleStartListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
try {
scheduleFactory.getScheduler().start();
} catch (SchedulerException e) {
// write log
}
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
try {
scheduleFactory.getScheduler().shutdown();
} catch (SchedulerException e) {
// write log
}
}
}
在 web.xml 里面加入以下配置:
<listener>
<listener-class>org.agilejava.scheduler.ScheduleStartListener</listener-class>
</listener>
以上简单的记录了在项目中关于 Quartz 的一些应用,如果有什么新的使用心得,会在后面继续加入的。
posted @
2007-08-02 16:28 steady 阅读(3542) |
评论 (4) |
编辑 收藏