2007年7月31日星期二

WordWeb 最好的免费是英文字典


WordWeb 是一个免费的windows下英文字典和词库,安装方便(仅7。4M)。使用简单,能进行离线和在线单词查找。

我单位的西人同事都在用它,你说好不好?

请登陆wordweb主页http://wordweb.info/free/ 下载。

2007年7月30日星期一

如何在Java中直接打开文件

我们经常会遇到这种情况:将Applet的显示内容按照某种格式(PDF,Excel, Word等)直接打开。那么如和实现这个功能呢。

我们分两个步骤来完成。
1.首先是将显示内容按照对应的格式生成并保存在用户的临时文件夹。

File file = File.createTempFile(getValidFileName(fileName), "." + getOutputExtension());

如何生成文件的代码略去。

2.然后调用相应的程序来打开。
String filePath =file.getPath();
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", filePath });


在大多数情况下工作的很好, 但是如果文件名中出现一下字符“ &<>[]{}^=;!’+,`~”, 上述代码无法打开文件,同时也没有报错, 和没有执行一样。 问题出在那里的?

原来Ccmd 命令对文件名中出现这些字符要做加引号才能正确处理。 以下是cmd的说明:

The completion code deals correctly with file names that contain spaces
or other special characters by placing quotes around the matching path.
Also, if you back up, then invoke completion from within a line, the
text to the right of the cursor at the point completion was invoked is
discarded.

The special characters that require quotes are:
space
&()[]{}^=;!'+,`~


因此我们只要加一个函数来处理就可以, 代码如下:

private String getValidFilePath(String filePath)
{
Pattern p = Pattern.compile( "\\p{Punct}" );
Matcher m = p.matcher(filePath);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "\"$0\"");
}
m.appendTail(sb);

return sb.toString();
}

修改后的代码如下:
String filePath = getValidFilePath (file.getPath());
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", filePath });

户外旅游之(二) 恐龙博物馆

来了calgary四年多了, 一直没有去过恐龙博物馆, 真是惭愧。趁着这个周末, 约上朋友一家一起去玩, 满足以下我女儿的心愿。

出外旅游之前的资料收集是我的必备功课, 恐龙博物馆位于 Drumheller 镇外, 离calgary 有100多公里。 开车大概1个半小时。路线有很多种, 沿着2号公路往red deer的方向开, 中间右转到 72号公路,然后接上9号公路, 一直开就到Drumheller了。

去Drumheller, 当然不能错过 Horseshoe Canyon了。就在Drumheller的西南17公里处, 沿着9号公路到Drumheller前的一个右转弯, 标志很明显,不可能错过。

Horseshoe Canyon 也是一个hiking的好地方。 我公司的本地同事极力推荐我去看看。从卫星图象看,名副实, 就像一个马蹄的形状。从地面凹下去的很多小山丘组成, 我们沿着一条小路开始往下走。 路还是比较安全, 稍微注意一下就行。我们一行有老人小孩, 都顺利的下到了山腰。 下面的小山丘都不高, 小孩子都能轻易的爬上去。没有什么危险性, 可以放心让小孩子在那里乱跑。上山下山,爬高爬低,小孩子最开心了。 玩了一个小时左右, 我们有继续向Drumheller进发了。

19公里的路程很快就到了。我们在GPS的指引下一直开进downtown。一进downtown, 一个巨大的Dinosaur 就映入眼帘, 这就是世界上最大的恐龙雕像。小孩子们都欢呼雀跃, 恨不得马上去玩。

Dinosaur 雕像下很容易就找到停车的地方。坐了1个多小时的车, 又在Horseshoe canyon上消耗了不少体力,大家都感到饥肠辘辘了,正好旁边有一个公园和大片的草地和凳子桌子, 正好是Picnic 的好地方, 已经有几家西人和国人在那里吃上了。 幸好还有几张桌子。 我们也拿出带来的午餐, 水果, 饮料吃上了。朋友家居然带来了饭菜。 我LD早就对面包, Cookie等干粮吃腻了, 一看有饭吃, 马上两眼放光,对面包, 饼干看都不看, 光低头吃饭了。 小孩子吃不了两口就跑去玩水了。当时真后悔没有带上泳衣。要不小孩子就可以尽情的玩水了。

吃过午饭后大家都恢复了体力, 小孩子听说可以爬上Dinosaur 雕像,兴奋非常,个个争先恐后,经过恐龙腹部的长长楼梯,来到了恐龙的口中,Drumheller的全景尽收眼底。 从恐龙肚子里出来后, 孩子们又站在恐龙的脚趾上照了几张相, 然后向恐龙博物馆进发了。

经过5分钟了车程, 一行人来到了恐龙博物馆。 门外几个恐龙的雕塑形象逼真, 一下子就吸引住了孩子们,于是又照了不少相。远远的看见门外已经聚集了很多人,两条长长的人龙从博物馆里面排到了门口。看来游客真是不少。

买了门票进去后, 里面人山人海, 只好跟着大队慢慢往前挪。里面的恐龙化石, 大型恐龙骨架,各种介绍恐龙的游戏,电脑资讯和大量的实物让人眼花缭乱。各种各样, 大小各异的恐龙雕塑或站或躺, 向人们展示远古时期恐龙称霸地球的盛况。其中令人印象最深刻的是一段介绍远古海洋生物的走廊。 游人踩在厚厚的玻璃上面, 脚底下和两侧是不断游动的各种叫不出名字的原始海洋生物, 非常逼真。

由于光线不好和人流太多, 没有照到好看的照片, 也是一大遗憾。出了博物馆后, 有一个playgound, 很多小孩子在那里玩。也是一个小孩的好去处。还有一条Dinosaur Trail,有时间可以hiking一下, 说不定你会发现恐龙化石。 我们本来还想去看看附近的一个canyon,可惜天公不做美, 一会儿就下起了倾盆大雨。 只好作罢了。




点击这里可以得到Horseshoe canyon的更多资http://www.virtuallydrumheller.com/tour/horsesho.htm

点击这里可以得到Drumheller 的更多资料http://www.dinosaurvalley.com/Visiting_Drumheller/

2007年7月29日星期日

户外旅游之(一 )Johnson Canyon


Johnson Canyon 离calgary不远, 大概1各小时的车程, 沿着1号公路往西过了Banff不久就到,Johnson Canyon 在1A 公路上 ,有2个入口,很容易找到。

Johnson Canyon 是Hiking的好地方, 风景非常漂亮。其中Johnson Canyon falls 有两处, lower falls 和 upper falls。 适合不同的人士。

还没有欣赏完沿途的迷人风景, 车子已经到达Johnson Canyon。带上所需的水,干粮, 准备好相机。 我们一行人浩浩荡荡出发了。 出发前当然得研究入口处的布告栏。 了解详细的景点分布, 距离以及计划好hiking的路线。

开始的一段是在树林里穿行, 空气特别的清新。 呼吸着树林特有的香气, 伴随着一两声鸟叫和不知名的虫子的叫声, 感觉舒服极了。慢慢的开始了上山的小路了。 一路上游人不断,也有三三两两的下山了。我们互相打个招呼,有两句没两句的聊了起来。小孩子最兴奋了, 一路冲在前面,看着路况不错, 又有护栏,就任由他们到处乱走了。

树林的湿气越来越重, 开始感到有股寒气,走过一个弯道, 前面突然呈现一片白色,“雪, 快看”, 我们都兴奋了起来。能够看到一堆堆的积雪是我当时没有想到的。我们是4月28日星期日去的。当时calgary已经是开始进入夏天了, 气候比较暖和, 积雪早已融化了。但是深山中气温还是比较低, 尽管山脚的积雪已经融化了, 但是半山依然有很多积雪。 我赶紧拿出相机一轮狂拍。

路上的积雪也开始越来越多了, 由于游人的不断踩踏, 已经变成半透明的冰块了, 混合着泥巴和山上不断留下来的雪水, 变得既滑有带点脏,一不小心踩到雪水里甚至就会滑倒。 我们也不是要借助边上的围栏来保持平衡,孩子们在我们的敦促中规矩了很多。一路上欣赏着风景,山上融化的雪水不时的沿着衣领钻进后背, 顿时一阵清凉,就这样有惊无险的很快就到了 lower falls。

山上融化的雪水汇合起来流到这里, 从10来米处冲下来, 形成了一个大水潭。隔远就听到一阵阵的水声,雪水从高处奔流而下, 撞击到湖面后形成了无数的水花, 带起阵阵的水气。飞溅的水花把傍边的积雪雕刻成一个个形态各异的冰雕。煞是好看。

我们钻进一旁的山洞, 近距离的感受着瀑布。 同时以瀑布为背景, 拍了好些照片。由于我们来的较晚,一行人有老有小, 又要赶回calgary, 决定今天到此为止了。

总的来说,Johnson Canyon 非常适合hiking,有山有水, 风景极好。 适合不同的人士。冬天hiking别有一番风味。由于有护栏, 比较安全, 带上相应的装备就行。由于我们没有上到 upper falls, 于是相约迟些时候再来。 回去的路上我们很幸运的看到了一群小鹿在路边悠闲的吃草。于是我们停下车来一阵狂拍, 幸亏数码相机拍照不要钱。:)。

2007年7月26日星期四

终于病了

来加四年多了。平时也没啥事,今天喉咙肿痛,没精打采。以前一年最多一次感冒而已,最近发现身体素质下降了不少, 主要事平时缺少锻炼。前两年夏天每个周末还去踢足球, 这两年也很少去了。 每次说要锻炼都是只说不练。 惭愧得很。

我发现西人很注重锻炼。 象我们公司的几个同事, 现在很多时间是骑单车上班。每周还有几天中午去跑步。每次跑10多公里。还老是动员我骑单车上班。一来我要接送孩子上学, 另外公司离家也有20多公里, 骑单车不大现实, 只好作罢。

现在公司又要组织参加banff一年一度的长跑比赛。其中2人各跑12公里,还有几个跑5-6公里的,又动员我去参加。 说起长跑是我的弱项,短跑还不错,据说是肌肉类型不适合长跑。不管怎样, 周末去买双running shoe 再说。 下个星期跑跑看。

一天坐在电脑前10多个小时。 该锻炼锻炼了。

2007年7月25日星期三

查询天气的几种方法


Calgary的天气变化之快大家都知道了。出门之前查查天气非常必要。 下面介绍几种非常好的方法

1。 The Weather Network。 这个想必大家都非常熟悉了。

2。 Alberta Hail Damage Mitigation gorgram。大家想不想看当前雷达图象呢, 定时更新, 动态预测, 非常cool。 点击以下网址, 选右上角的“Current Radar Image” 和“ Current Radar Loop”。

3。 Forecastfox. Firefox的小插件,安装后设定你想查看的地方就好。 非常棒。

POI-HSSF使用技巧之(一) 生成超链接。

今天接到一个需求, 要求报表生成的Excel表格支持超链接。例如点击Excel内的公司名, 自动打开浏览器并连到该公司的网站上去。在Excel里面选中所需的单元格, 右键弹出属性, 选超链接就能输入相应的地址了,既然Excel支持超链接。那就没有什么借口说不能实现了。:).

翻了翻POI的文档, 很容易就找到了解决方案。在POI中让单元格实现超链接功能, 可以用Hyperlink 函数。HYPERLINK函数包含两个参数,第一个参数是指向的URL地址,第二个参数是显示字串

cell = row.createCell(colNumber)。
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("HYPERLINK(\"" + "Http://www.google.ca"+ "\",\"" + "Google Canada"+ "\")");

现在超链接单元格看起来和一般的单元格没有分别, 除非你把鼠标放上去才会变成手行光标。 为了和一般的习惯相符, 还需要把字符颜色变成蓝色和加上下划线。 这就要用到 style了、

HSSFCellStyle linkStyle = workbook.createCellStyle();
HSSFFont cellFont= workbook.createFont();
cellFont.setUnderline((byte) 1);
cellFont.setColor(HSSFColor.BLUE.index);
linkStyle.setFont(cellFont);

最后把style应用到cell上去就大功告成了。
cell.setCellStyle(linkStyle);

看上去是不是不错呢。细心的朋友可能发现一个小缺陷, 就是Excel的列宽不会自动调整,导致只看到部分字符, 稍后我会给你一个解决的方案。

POI -- Java API To Access Microsoft Format Files



作为一个出色的开源项目, POI 提供了各种API来访问各种微软格式文件, 如Excel, Word, Powerpoint, Visio等,最新版本是3.0.1版。
POI-HSSF 是其中一个子项目,用来存取Excel '97(-2002)的文件格式。我现在主要用来把报表生成相应的Excel文件, 感觉非常不错。

The Apache POI project , 主页的地址在 http://poi.apache.org/
其中HSSF的快速入门在 http://poi.apache.org/hssf/quick-guide.html

大家有空不妨看一看。以后我会慢慢介绍一些实际的使用技巧。

2007年7月24日星期二

Paint.NET --- The Top 20 Products of the Year

Paint.NET 一个免费的开源windows 下图象编辑软件,获得计算机世界 2007年20大最佳产品之一。


1。一个用C# 和少量C++写的应用, 你可以下载源代码来研究。 对于.NET开发有很大参考价值。
2。免费的开源项目,对于非专业的图形设计绰绰有余,向不用盗版软件又前进一步。
3。 试用后觉得非常不错, 是windows下的Paint的替代品。

主页地址:http://www.getpaint.net/index2.html

2007年7月22日星期日

McAfee SiteAdvisor

最近在网上发现了这个小东西, 试用了一段时间还是不错的。

这是它的广告词:

借助于 McAfee® SiteAdvisor™ Enterprise,您可以安全地浏览网站、搜索信息,无需担心受到诸如间谍软件、广告软件、网络钓鱼诈骗垃圾邮件等威胁的侵扰。在对用户进行浏览互联网风险教育的同时,增加了又一层保护。


这是免费的,他的主页 :http://www.siteadvisor.com/

组建家庭数据中心有必要吗?

尽管花了1000多刀(2TB NAS, 千兆交换机,千兆网卡), 我觉得还是物有所值的,( 如果买 1TB的NAS, 不升级到千兆以太网, 500刀就可以搞掂)。

1。 NAS 自带打印服务器。 对于家里有多台电脑共享一台打印机的话非常方便, 随时可以打印。
2。 NAS 可以做RAID,防止由于硬盘的损坏而导致数据的丢失。
3。 数据集中存放,还可以建组,用户等, 分配不同权限。
4。 支持多种协议, 方便在windows, mac, unix/linux 之间共享,还支持FTP, 可以让远在他方的人通过互联网存取数据。
5。自动备份。


对于把家里的电脑,电视, 音响, 游戏机互联非常有用。

组建家庭数据中心


连续几个星期都开车出去玩,实在太累了,于是决定这个星期那也不去, 呆在家里歇一歇。早上睡醒后, 把女儿送到朋友处。 女儿跟朋友一帮人去划船, 一去就是一天了。难得一个星期天可以在家里干点自己的事情。
前段时间组装了一台 Intel Core Duo 2 E6300 台式机(2G 内存,GeForce GS7600 512M 显卡, 250G SATA 硬盘, 7。1声卡, 无线鼠标键盘, Logitech IHX 音箱)花了不少银子。于是把我原来的P4 3。4 机子给了LP, 又把原来的2个ViewSonic 20。1 LCD给了一个她。
上个星期又买了IOmega 150d 2TB 的NAS 来组建家庭数据中心。NAS 有四个 500G 的SATA硬盘。 我把它配置成RAID 5。于是我的数据中心拥有了1350G的储存空间。今天的任务就是把我在各个主机的数据统一上传到NAS 里。
于是在NAS上建好目录, 边看DVD边上转数据。这活也不轻松。 我有3台台式机, 一台 core duo 2 的17寸手提电脑。 还有几个移送硬盘。 加起来都差不多差不多1000G了。花了整整一天才差不多把硬盘的东西上传好。后面的一百几十张CDR和DVD得以后慢慢整理了。
我的NAS支持1G的以太网。 为了尽快上传我的海量数据,前几天又去买了1G的交换机, 1G的以太网卡。然后自己做好CAT 5e的网线。 把我家的局域网升级成1000M的以太网。
花费了2000多刀后,终于组建好我的家庭数据中心。以后再也不用担心空间不够, 数据丢失,共享等等一大堆问题了。一两年内都应该可以高枕无忧了。

有兴趣的可以看看他们的主页 http://www.iomega.com