星期二, 九月 13, 2005

[公告]Java 版大版主 IUSR 离任

终于离任了,大概1年多了吧,我也忘了。

忘了当初为什么一冲动就想当版主,也许真想为校内压抑的技术环境做些什么,也许吃多了。我还记得当时主管技术区的区长是漂流mm,两句话过来,我就写了申请。

也 许我真不太适合当个什么,一有责任了反而觉得放不开手脚,以前每天都或发或re,当了版主post反而没有增加,有一阵倒是因为在整理精华区,不过整理完 后也是没长进。以前觉得那些水平不高的帖re一下也没什么,后来好像是人牛了,看不上那些帖了,我不知道我是怎么想的,也许整理精华区整理的,看到一些老 问题一而再再而三地被提出来心里很别扭:为啥不仔细翻腾翻腾精华区呢?其实我的心里也清楚,一是没多少人有看精华区的习惯,二是如果真想改变校内的技术氛 围,多回答问题是必需的。

后来当了区长,更牛了,在3_Admin发的帖比在自己的Java版发的帖都多不少,赫赫,由此可见,我是单任务的,同一时刻只会对一件事专注。

反正,离任了。Java版给我的回忆更多是那个炎热的夏天,蚊帐里歇斯底里的电风扇,花露水味道,一袋袋方便粉丝……

星期一, 九月 12, 2005

FreeMind Version 0.8.0

Features:

  • Fully functional following of HTML links stored in the nodes, be it www links or links to local files.
  • From very early versions, Freemind supports folding which is its essential property.
  • Fast one-click navigation, including folding / unfolding on one click and following links on one click at the same time (you don't have to make choice between fast following of links and fast fold/unfold). You can move the map by dragging the map's background as well as using mouse wheel.
  • Undo
  • Smart Drag'n Drop, including the possibility to copy nodes or copy style of nodes; dragging and dropping of multiple selected nodes; dropping of texts or list of files from outside
  • Smart copying and pasting into, including pasting of links from HTML or structuring the pasted content on the basis of the number of leading spaces in a line; pasting of lists of selected files
  • Smart copying and pasting from, including plain text and RTF (MS Wordpad, MS Word, MS Outlook messages).
  • Export of map to HTML, with folding (see example (http://freemind.sourceforge.net/PublicMaps-exported.html))
  • Find facility, where found items are shown one by one as you do "find next", and the map is unfolded only for the current item.
  • Possibility to use and edit long multiline nodes; even with newlines
  • Possibility to decorate nodes with built-in icons, colors and different fonts.
  • Low costs of risk of switching away to another mind mapping tool, because FreeMind stores maps in XML format. If you have a lot of maps created by FreeMind and you want to switch to another program, writing a conversion program should be easy, especially if that program features Visual Basic scripting facility. Christoph Rissner describes in his article (http://hkrott.iicm.edu/docs/seminar/sem2002_mindmaps.pdf) at IICM site (http://hkrott.iicm.edu/veranstaltungen/seminar/abgeschlossen.html) his implementation (http://hkrott.iicm.edu/docs/seminar/sem2002_mindmaps.tar.gz) of data exchange between FreeMind and MindManager.
  • File mode enables you to browse the files on your computer, seeing the folder structure as mind map.
Weak spots include:
  • The support of pictures in nodes is in preliminary stage. When you want to carry a map around with you, you have to take care that you take the image files with you.
  • FreeMind is basically one user application. Although users can in principle work on the same map, there is only preliminary locking mechanism to prevent conflicts, at the time, switched off by default.
  • In rare cases, following of HTML links in the web browser does not work on some computers; the same holds for opening local files.
  • Limited support for fancy graphics.

Download

Choose among the following binaries of the current FreeMind 0.8.0, depending on your operating system:

  • Microsoft Windows
    • Windows Installer (http://prdownloads.sourceforge.net/freemind/FreeMind-Windows-Installer-0_8_0.exe?download) (smaller version without export to SVG, 3 MB)
    • Windows Installer Max (http://prdownloads.sourceforge.net/freemind/FreeMind-Windows-Installer-0_8_0-max.exe?download) (all-including version, 8 MB)
  • Mac OS X
    • MAC OS X (http://prdownloads.sourceforge.net/freemind/Mac_OS_X_Freemind-0_8_0.dmg?download) (all-including version, 8 MB)
  • Linux
    • Debian Linux (http://sourceforge.net/project/showfiles.php?group_id=7118&package_id=161831&release_id=355162) (see also release notes (http://sourceforge.net/project/shownotes.php?release_id=355162))
    • SuSE 9.x Linux (http://sourceforge.net/project/showfiles.php?group_id=7118&package_id=161830&release_id=355738) (and other RPM-based) (see also release notes (http://sourceforge.net/project/shownotes.php?release_id=355738))
  • Any operating system

星期二, 九月 06, 2005

Netbeans 5快来了


不知道是巧合还是品牌推广,Tim BoudreauGregg Sporar在他们在java.net的blog上各自贴出了有关Netbeans 5的文章:Zdrasvitsie Netbeans 5.0(4.2 == 5.0),也许已经toooooooold,呵呵,没参与过Netbeans的maillist,old的话请别介意

如同JavaJ2SE 1.4直接跳到Java 5一样,Netbeans这次从4.1一跃到5.0(我记得前些日子4.2还有beta的消息)就如Tim所说,版本代表了很多东西(What's in a version number? Well a lot of things.)。这种从4.1到5的跳跃当然不是随便就定下的,而是因为有一些里程碑性的进步,主要包括:

  • 新的GUI设计器Matisse
  • 重写过的CVS支持;
  • StrutsJSF的支持;
  • 提供部署到更多种服务器——主要是JBoss和WebLogic——的支持;
  • 代码自动完成功能有了新的LookAndFeel,以及更好的性能;
  • error stripe将移至标准发布版中;
  • 编辑器中新的提示特性;
  • 许多新的重构功能;
  • 完全重写的“选项”对话框;
  • 标准发布版中将包含一个ant调试器;

还有一些什么新的调色板什么的就不提了,最让我感兴趣的应该说是Gregg Sporar的blog里那篇Java Blueprints示例中用JSF和AJAX库创建的一个自动完成表单的例子,局部效果如下:
http://weblogs.java.net/blog/gsporar/archive/images/zip10.png

不过Tim眼中Netbeans 5的亮点应该是提供了对于构建基于Netbeans平台的RCP(Rich Client Platform)应用的支持。
Tim说,从3.6版本开始,Netbeans就提供了不错的插件开发机制,开发3.6版本Netbeans的apisupport模块的家伙这次依然领导了新的apisupport模块的开发,新的apisupport更加耀眼,一些亮点包括:

  • 基于模板创建新插件;
  • 创建一“套”(原文作"suite")插件以组装一个应用程序;
  • 在IDE内构建/运行/调试基于Netbeans的应用程序;
  • 重新热部署(原文作“Hot-redeploy”)插件到已经运行着的应用程序;
  • 调试你创建的插件时的“修改与继续”(原文作"fix and continue",也就是“hotswap”);
  • 通过GUI来为你的基于,Netbeans的应用程序配置菜单,工具栏和其他;
  • 通过向导来创建你自己的程序的标志(替换splash,应用程序名字,对菜单项、工具栏,主窗口等等进行隐藏/移动/重命名等操作);
  • 毫无痛苦地构建你自己的应用的发布版;
  • 用于创建普通的Netbeans类和组件的模板和向导。

老实说,Netbeans运行速度有些慢,特性方面比较中规中矩,不过也是有很多的亮点。和eclipse不同,Netbeans看起来是想做最完备的Java IDE,很多东西都集成在最后的发行包中了,虽然有插件扩展机制,但可用的插件远不如eclipse平台上的多,所以一般只能用Netbeans提供的功能。尽管如此,每一版Netbeans的升级还是不会让人失望的,都会引入一些新颖的功能,这次对RCP支持和GUI设计器看来做了比较大的改进,不知道J2EE方面怎么样。这版Netbeans为RCP提供了这么多支持是让我始料未及的,我本以为应该会继续增强J2EE相关的工具和特性。Netbeanseclipse之 间的争夺已经从普通的Java开发领域上升到RCP平台开发领域,不知道是不是也从另一个方面代表了国外的技术走势?当我们还在鼓捣B/S的webapp 的时候,是否该注意一下Rich Client Application呢?或者,至少该注意一下RIA吧。我不知道等到现在的user们接触到越来越多的基于AJAX或者纯Flash页面的应用之后会 不会向一直高高在上的J2EE应用提出这些要求呢?

话说回来,我觉得Netbeans创建项目时生成的代码目录还是很规范的,而且也有“Java Blueprint”和“Apache Jakarta”两种目录结构可供选择(差别不是很大),而且基于ant的编译/构建也有利于代码分发,除了某些ant task是Netbeans扩展的,用到的时候还得带上,比较麻烦。

Tim说将要去俄罗斯推广NetbeansGregg也说将会和Tim一起来到中国北京推广Netbeans,作为NetBeans World Tour的行程之一,呃,无论是NetBeans World TourJavaChina,皑皑,没机会去了……

星期五, 九月 02, 2005

静态化?我没听错吧?

进到公司后无所事事了几天,便接到任务准备制作公司自己的网站。应该是考察newbie的吧,赫赫

花了几天做了一个AJAX的前台,功能全实现了,只是考虑到后来的人升级起来也许会有困难(你该不会要求一位德高望重的J2EE开发人员去精通Javascript这种小东西吧?),所以和组长提议还是不做了;后来又考察了一下Portals->Jetspeed 1" href="http://portals.apache.org/jetspeed-1/" target="_blank">Jetspeed-1,虽然吧,我只浅薄地接触过它,Portals->Jetspeed 1" href="http://portals.apache.org/jetspeed-1/" target="_blank">Jetspeed-1貌似还不能直接支持实现JSR-168的portlet,而且短时间内我还无法精通portal这样博大的东西,但是JSR-168Rickard Oberg Request for feedback: why portlets?" href="http://jroller.com/page/rickard?entry=request_for_feedback_why_portlets" target="_blank">highly biased于portal和portlet的态度,还有蓄势待发的Portals->Jetspeed-2" href="http://portals.apache.org/jetspeed-2/" target="_blank">Jetspeed-2(虽然动静并不大…),都让我没有理由不认为这东西不是一个好的解决方案。

最终敲定的方案让我很分特:根据数据生成静态化页面…

这项技术无可厚非,不过在我看来拿Java去做这么一项任务完全是亮相Java的短处。

  • 配 置问题。想生成一个不依赖app server而可以随处可用的静态站的话,将有可能不得不使用到大量配置,当然用相对路径就能够解决有关页面上的图像、链接、css、js等等的定位问 题,不过想做一些其他个性化的设置的话,配置还是不能省的,比如网站名、公司名等等。这些拿php做起来太方便不过了,不过拿Java做起来呢?无非就几 种方法:写文件——或properties或xml或plain text;数据库访问——用不用ORM视BT程度;AppContext内可访问的对象——或静态或受控实例或singleton或与JNDI名绑定。怎 么样做都怎一个烦字了得。当然配置问题是每个Java程序都要面对的事情,否则Jakarta->Commons->Configuration" href="http://jakarta.apache.org/commons/configuration/" target="_blank">Commons-Configuration还 是关门删掉repository算了,但是怎么管理这些配置确实值得商榷:真的需要一个全局范围内的配置么?有时我宁可做一些局部性的配置,就像把一个大 的配置文件打碎成若干个小的配置文件,虽然数量多了显得零碎,但是每个文件所关注的事情都比较集中。这一点做spring应用的应该有体会,一个庞大的 applicationContextXXX.xml编辑起来不是那么顺手的,除了好的xml编辑器可以帮你检查local的引用名字是否正确以外,没有 其他别的好处了,所以很多人还是把关注于某一个方面的配置单独写到一个applicationContextYYY.xml里面,道理差不多。
  • 发布问题。PHP和ASP 方面都有很多的程序提供静态页面生成的功能(这也是这个项目“灵感”的来源),但是我觉得得追究一下这么做的缘由:一般的虚拟主机为了平衡同一服务级别用 户的负载,都设置了CPU负载保护,负载稍微大一些就会无法访问,而静态的页面当然不可能占用主机多大的负载,所以才会这么做,当然一些访问量比较大的网 站为了减轻服务器的CPU负载也会这么做,但是针对于特定网站的解决方案可以依靠服务器环境做很多特殊的配置,这种情况跟我参与的这个项目不太一样。但 J2EE应用想生成静态页面的话就不好办了,生成出来的静态页面堆在应用的目录下的某个目录中,成了烫手的热山芋:这么些东西应该扔在哪儿啊?不用您好意 提醒我也大约知道有N种方法能够解决这个问题,但提醒我之前您要想一下,这些方法足够优雅么(如果确信够优雅,请reply,让我开开眼长长见识)?PHP和ASP 程序生成静态页面方便就方便在于负责静态页面输出的服务器和负责运行PHP、ASP程序的主机和web服务程序一般是同一个,所以指定好路径就可以了,而 J2EE应用就不一样了,一是有可能输出静态页面的服务器和app服务器是两个,或者是两个不同的daemon进程,比如大家都知道的 apache<-mod_jk/mod_jk2->tomcat这种做法,这种情况下生成出来的静态页面要放在哪里呢?不会还要指导我做文件 复制、移动的勾当吧,这不够优雅,因为你要获取与应用无关的一些设置,比如路径等等。或者您要指导我把apache的该站点的根目录指定到app生成的静 态页面所放置的目录——可行,确实可行,不过还是不够优雅,因为你还要过去改apache的配置。OMG,不要再告诉我去做配置了…或者您说,干脆都只用 appserver来做吧,让它既负责运行应用又负责输出静态页面,让该死的性能问题见鬼去吧——又是一个完全可行的方法,问题是,你的app的 context路径怎么办?我们都知道,一般的webapp部署时大多数情况下会被appserver分配一个context名,手动或自动,这样生成的 静态页面就都放在这个context对应的目录下面,另一个问题应运而生:难看的URL。以往打开firefox,地址栏内输入company然后 Ctrl+回车就到了这个company的网站,可现在呢,输入这个地址后发现我们被重定向到http: //www.company.com/cms/static/index.html,虽然重定向是自动完成的,下一次回来直接访问http: //www.company.com/即可,但是如果有人想引用这个网站上的某篇文章、某个图片等等,这个URL也许会长得不那么必要。而且,负责完成从 http://www.company.com/跳转到之后那个糟糕的URL的页面谁来做呢?用同样的app来生成么?然后手动或者自动复制/移动到这个 站点的根目录?优雅问题…
    对付不同服务器、服务daemon的路径问题我所能想到的自动一些的方法也只是通过FTP、WebDav之类的辅助途径解决了,这对目标主机都有一定的要求;手动方法就不说了,呵呵。
  • 模 板问题。我建议用portal做这个站点考虑的就是首页和各个portlet的外观和布局等等都可以很容易地解决,但是项目进行的过程中,用户定制的灵活 性被重视起来——我不反对可灵活定制的东西,否则也不会喜欢Linux——但是定制化程度也要视用户而定是吧?定制化程度低,用户可能会觉得不个性,定制 化程度高他们又该嫌麻烦。所以我一直宁可降低可定制化程度——当然也视用户类型而定了,好的架构对付起定制化需求来说绰绰有余,大部分的定制化工作最后都 反应在表现层,所以对应用的核心架构影响不大。对于生成静态页面这种活儿,麻烦的就是模板了。我在以前一篇blog里也提过这么一个方法,然后后台就通过 一些规则拼接Jakarta->Velocity" href="http://jakarta.apache.org/velocity/" target="_blank">Velocity模 板里可能出现的变量名并给这些变量名挂上一个对象。灵活是灵活了,后果是出现了大量规则,比如变量命名的规则,模板命名的规则等等(当然,做个管理界面让 用户管理这些变量和规则也是没错的,不过…)。目前为止仍然是不够100%灵活——我的意思是,要么定制化程度很低,要么做到头。以前Gavin和我提过 他的一个朋友delphij说的话:“对于最终用户,我倾向于让他们使用智能设备,而不是PC”(大意是这样),很认同这句话,当然前提也是找准用户类 型,我估计你可能知道有些user连浏览器的“后退”按钮都不知道是干什么用的所以这个自定义模板机制究竟是帮助他们还是阻碍他们了,目前还不得而知,不过我是抱着悲观和消极的角度来看这个的——他们会觉得:麻烦。

就 这么项目本身的性质而言,静态化还会带来升级、扩展方面的麻烦,一是模板改起来不是玩的,二是有很多动态的页面,比如论坛等等,这些可没法静态化;再有就 是扩展性问题,静态之后几乎没法扩展。我一直认为,一个企业的网站,应该自觉地使自己区别于一个普通的CMS,因为企业网站完全可以当作自己销售链、服务 链等等中的一个环节,动态的webapp才有可能进行扩展,进而使之成为企业B2B、B2C活动的进行地点,市场人员也可以使用网站获得的一些数据等等来 为企业的市场计划做参考,这样这个网站也算没白做。难道堂堂一个IT企业的网站,还要像以前高喊“电子商务”口号的年代中某个卖咸菜的公司的网站一样,主 页上放个email链接就算建了个网站做了把电子商务了么?