解惑

解己之惑,解人之惑

分类:Java (第3页共20页)

Java技术

切换到WordPress内置的标签功能

刚刚说了这个有问题,当然马上要解决了。
搜索了下,说可以从Jerome’s Keywords里面导出数据,但是后台不能,只能从UTW或者simple tagging导入,然后发现simple tagging可以导入Jerome’s Keywords的tag,装了simple tagging,果然导入成功,然后禁用simple tagging并且删除。
现在的主题都是自己在维护了,要把Jerome’s Keywords调用全部换掉,还好很简单:
http://shafeng.cn/wp23taguse

升级还是有点小问题

这次升级不能算完全成功,有点小问题,主要是自己加的那些页面都无法显示了,404错误,搜索也下也没有啥结果。
不过后来发现标签那个页面没有问题,想着是不是因为页面的名字是中文搞的,修改为英文就好了。

另外一个问题就是我的Tag,发现原来的都不好用了,搜索结果里面没有了。

Java为什么没有SharePoint

前几天老大想知道什么是SharePoint,我就负责研究这个东西了。刚开始就认为它只不过是MS的一个产品而已,就像Office一样,但是仔细看过以后才知道,SharePoint的目标远不是这样的,SharePoint的目标是Business Buidling Framework,就像很多国内的小公司想做的快速开发框架一样,它提供很多功能,你不用写代码拖拖拽拽的就可以搞一个自己的网站,而且还在一定程度上是定制的,当然,你也可以写代码扩展系统默认的功能。
到目前为止Java业界并没有一款类似的东西,为什么?因为Java是个大的生态环境,百花齐放,某个领域有一个或者几个成功的东西,但是还没有一个完整的解决方案,当然,也有很多人在试图构建一个这样的Building Framework,只是都不够重量级,而MS,就够这个重量级,因为.NET下的那套东东,都是它自己的东东是王者,即使不是最好的,使用的人也差不多是最多的,用它的捆绑策略,也基本上慢慢做成是用得最多的,于是乎,这个诞生于若干年前的东东现在逐渐变得流行,势不可挡。

一切皆有可能

应该说Java的设计会保证JRE的安全,但是我们还是遇到一个情况:安装搜狗输入法以后导致我们一个基于Java的系统无法启动,目前已经遇到两例,所以基本可以确认就是搜狗输入法的问题,因为卸载搜狗输入法后系统马上就好了。
开始的时候是我们老大遇到这个问题,折腾了很长时间也不知道什么原因,后来可能是IT帮着找到原因的,后来我的同桌也遇到一样的问题,刚好我记得我老大说过这个问题,所以问他用的什么输入法,他说搜狗,我说卸载再试试,卸载完果然就好了。

VMWare收购Spring

JavaEye的Robin在Twitter上爆出这个新闻的时候着实吃了一惊,不过还是为这个消息小小的高兴下,因为VMWare是EMC旗下的公司,虽然是独立运营。换言之,Spring现在属于EMC了。
希望VMWare能够尽快推出一个基于Java的PAAS。

经验也会帮倒忙

本来打算那个Notes-all用Google的全套解决方案的,就是用GWT + Google App Engine,看了下GWT的Sample,发现还是比较麻烦,但是感觉思路和ZK还是很像的,就打算比较下GWT和ZK,结果发现有人说可以把ZK成功发布到Google App Engine,试了下,果然是可以的,有兴趣的可以试试(在ZK网站可以下载zk-gae的sample,基于这个很容易建立自己的工程)。
基于我玩过一段时间的ZK,当然用ZK更方便了。
今天把原来的东西复制过去了,在做国际化的时候,用Eclipse编辑properties文件,里面有中文,不能保存,只能保存ISO-8859-1编码的内容。后来想着应该装个插件,下载了,好使,但是运行起来发现并没有把转码的内容显示为正确的中文,很奇怪。后来怀疑ZK读取properties文件的时候和Java读取国际化文件不一样,把properties文件的编码修改为UTF-8,然后直接用文本编辑器输入中文内容,运行测试,正常!
这个就是一般的国际化处理的经验造成的问题。
最后说一下,对ZK的这个违反Java惯例的方式赞一下,因为我一直对Java的这个需要把properties国际化文件用native2ascii转换的过程很鄙视,不知道谁这么设计的。ZK是以UTF-8读取properties文件的,不做任何转换。

更新:
可以修改Eclipse,让它对properties文件不强制使用ISO-8859-1编码保存:
eclipse –> window –> Preferences –> General –> Content Types –> Text –> 单击 Java Properties File,把底部的Default edcodng从ISO-8859-1改成utf-8,然后update。

从Java转向.NET需要注意的问题

从Java转向.NET已经一个多月了,最开始的时候很轻视,因为C#和Java语法相差不多,真正开始写代码开发应用以后才发现很多的不同:

  • 开发工具几乎没得选:Visual Studio,既然用了MS的东西就得都用,否则遇到问题很难得到帮助,因为别人都是用的这一套。
  • Visual Studio给你封装了很多东西,有些开发因此变得很容易,但是也因此不能很灵活可控。而且你很难也往往不需要知道很多底层细节(例如写Web Service的客户端程序,添加一个Service ReferenceVS就会生成代码,根本不需要懂SOAP的细节)。
  • 你需要了解Windows平台的很多东西,例如安全机制,ODBC,Profile等等,而Java是跨平台的,这些配置以及安全等等都是作为jar包的方式引用和使用的,根本不应该依赖Windows内置的机制。
  • .NET有时候会使用很多遗留的东西,例如DLL,COM,而且因为版本不一样不见得好用,而Java比较简单,几乎只有jar,虽然也有版本问题,但是要知道jar里面包含那些类还是很容易的,但是DLL和COM之类的就很麻烦,似乎没有很好的工具帮助你查找哪个DLL或者COM有你需要的类。

现在还是刚刚对.NET有点感觉,没有被搞得头晕脑胀。

最后说一下,如果不是逼不得已,不要转向.NET,Java乱是乱了点,但是资源是大把大把的,而搞.NET,还是跟紧MS吧。

GAE的严重问题

在你动手开发GAE应用之前,最好先考虑下你的应用是否真的可以跑在GAE上,如果不仔细看它的开发手册,你很可能会漏掉一个严重的问题:

Inequality Filters Are Allowed On One Property Only

A query may only use inequality filters (<, <=, >=, >) on one property across all of its filters.

For example, this query is allowed:

select from Person where birthYear >= minBirthYearParam
&& birthYear <= maxBirthYearParam

However, this query is not allowed, because it uses inequality filters on two different properties in the same query:

select from Person where birthYear >= minBirthYearParam
&& height >= minHeightParam // ERROR

Filters can combine equal (==) comparisons for different properties in the same query, including queries with one or more inequality conditions on a property. This is allowed:

select from Person where lastName == lastNameParam
&& city == cityParam
&& birthYear >= minBirthYearParam

The query mechanism relies on all results for a query to be adjacent to one another in the index table, to avoid having to scan the entire table for results. A single index table cannot represent multiple inequality filters on multiple properties while maintaining that all results are consecutive in the table.

这个限制很直接,就是非等于的过滤条件只能应用到一个字段(属性)上,原来在关系型数据库上很简单的一些查询,到了GAE上就变得不可行了。

在开始开发GAE应用前,先考虑清楚你的应用是否会不可避免的碰到这个问题,或者是否可以放弃很多功能,看来便宜不是那么好占的。

升级空间了

用了两年的盘古的服务,总体的感觉还是不错的,但是磁盘空间只有50M,经常出现磁盘空间不足而需要删除各种运行日志,以前还架了论坛,但是因为空间问题以及时间问题最后把论坛给删除了。前几天本来想单独升级磁盘空间的,但是看到有个特殊主机,就是专业博客,磁盘空间是1G,流量也比原来高不少,决定升级成这个,价格只是一年两百,很便宜。
现在空间已经转移完毕,基本没有什么问题了。
升级空间的一个很大的原因就是再次推出在线源代码,现在只有JDK150Jiehoo自己的,以后会慢慢增加更多,而且会修正JDK新版本的一些问题(这个还是原来JR时期的版本,经过简单的重构,但是不支持JDK5以后的新特性)。

呵呵,今天还是发现有问题,所有日志不能访问,因为盘古给我转空间的时候没有按照我的要求把.htaccess也拷贝过来,只能自己弄了,弄完问题马上解决。

java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl

这个是在生成Javadoc的时候发现的,google了下,不少问的,第一个是说这个是个bug,其实以前也google过,看到那个说是bug而且优先级是4-Low,状态也不是close就没有去理会这个问题,这次又搜索了下,耐着性子看了几个帖子,发现这个不是bug,而是有解决方案,因为我是在ant脚本里面加的,解决方案就是在javadoc的task指定classpath或者classpathref,只要和你编译那些类使用一样的classpath或者classpathref就行。

更早的文章 更新的文章

© 2024 解惑

本主题由Anders Noren提供向上 ↑