2008年4月23日星期三

对GIS的再学习

借来一本“地理信息系统与科学”,对GIS再进行一次科普学习!
重点是GIS的内涵和外延,还有相关的基础知识,如投影和地理参照系统的概念。

现在开始还不晚

昨天和老婆的同学吃饭,听她们说学习的状态,深感自己的不足,效率和时间完全不是一个等级啊!!
现在开始要提高效率,改变以往的坏习惯,应该还不算晚~~

2008年4月4日星期五

精通正则表达式

一直对正则表达式抱有兴趣,但苦于没有一本好书来彻底的讲解一下,只会用些最简单的,看到网上或邮件列表里的正则表达式都是一头雾水~~
前两天去图书馆看到一本“精通正则表达式”,翻了几页,感觉还不错,就借了回来。这几天看下来,基本的正则表达式已经不在话下了,就是缺少实战的考验,对regex的效率还没有考虑太多,还要继续第5、6两章,这两章就是介绍经验及效率的,哈哈!
最后四章分别介绍了Perl、Java、.NET和PHP下正则表达式的使用,可以当作用户参考手册来看,对于我来说,暂时就Java那章还管点用,其实还要自己看python的正则表达式怎么使用,平时还是用它多一些~~
今天之内争取就看完五六两章,下面没时间慢慢看了,要继续干活了!

2008年4月3日星期四

swf和flex

今天早上吕老师让我帮忙看看如何在一段swf中截取需要的一部分,而不是全盘使用。首先想到的当然就是把swf文件反编译为flp源代码,然后截取一段出来,再导出为swf。下载了一个闪客之锤,界面和Flash差不多,不过不知道怎么截取一段帧出来,呵呵,很少用flash啊~~
然后就想换个招吧,控制swf放一段不就行了嘛!用什么来控制呢,想到了听说过flex,好像是用编程的方式来生成swf的,这个比较合我的胃口,下一个来看看吧。
用迅雷下载真是刚刚的,4、5M的速度~下来一看,原来是基于Eclipse的,嘿嘿,这下是我熟悉的了~编辑界面主要是source和designer两种方式,source方式更快,不过界面用designer方式更直观。
首先建立了一个panel,一个button,熟悉了一下操作,然后就拖了一个SWFLoader进去,设置url为本地的swf文件,可是运行的时候出错了,提示什么沙箱错误,本地和网络swf文件间不能相互调用!试着用一个网上的swf文件地址替换,果然就可以了,这可怎么办呢?我不能把文件都送到网上去吧,到了不能上网的地方怎么办?!真不知道Flex是怎么想的!也没有个安全选项,就给我做上主了!上网找到一个@Embed(source='e04_100.swf')形式的source设置格式,好像还是会出问题,郁闷了!!
不过Flex Builder还是蛮好用的,基于Eclipse工具,果然不错!!哈哈

2008年4月1日星期二

subscription in JADE

花了一个下午的时间来研究JADE中的subscription如何使用,看文档不明白,又在邮件列表里找以往的相关主题,还是不清不楚,最后使出绝招——浏览源码,总算是整明白了~~
其实Subscription协议本身很简单,就是对JADE中提供的Subscription Initiator/Responder如何使用不太明白。综合各方面的资料,现在总结如下:
  1. Subscription Initiator挺简单的,和其他的Initiator类似,只要重载handleInform函数就可以了(对我来说)。这个行为一直开着,直到感觉不需要了,就调用一下cancel函数,哈哈,始乱终弃~~
  2. Subscription Responder就有些不一样了,它也是一直开着,不过当来了一个Subcription,它只是调用Subscription Managerregister函数,然后就不管了,继续等待新的Subcription。当来了一个cancel,它也是包装成一个Subcription,然后调用Subscription Managerderegister函数,然后就不管了。而这个Subscription Manager只是一个接口,所有实现都要由开发者(也就是我)来完成。靠,太不负责了吧!
  3. 根据邮件列表上兄弟的提示,如果Subscription里申请了多个服务,又不想一起实现,那最好就是用多个SM来管理了。可SR默认就是调用构建时传入的SM,怎么办呢?这时可以用主从的结构来实现。用主SM构建SR,在register函数里调用各个子SM的register函数,从而达到根据Subscriptioncontent分别注册管理的目的。解除注册的过程与此类似。
  4. 如何向SI发送Inform消息是让我很困惑的一件事情,文档里的说明只是让我更困惑!还好我们有源码,看了就明白了:)原来关键就是Subscription类了!注册时会传入一个Subscription参数,这个参数应该被SM保存下来,在条件满足要向SI发送消息时就调用这个Subscriptionnotify函数,传入要发送的消息,后面的事就不用我们管了~~
看明白后就简单多了,原来InfoProvider里的结构要大改了,不过这次确实是简化了代码,减轻了工作量,嗯,看源码数小时,写代码数分钟,就是这种感觉~~