Yearly Archives: 2006

ArcGIS installation error 1904

With prompt like failed to register.

Solution: this is due to the embedded DEP (data execution protection). Change the parameter of boot.ini “NoExecute=OptIn” to “NoExecute=AlwaysOff” to work around this problem. After installation, please set it back to OptIn.

ArcGIS License server & firewall

为使得ArcGIS License Server通过 windows firewall 被其它机器所使用,需要如下 配置:
1. open License.dat or *.lic obtained from ESRI company,remember the port specified in the host line, commonly 27000, or 27004
2. specify the port used by arcgis.exe, for ex.
VENDOR ARCGIS PORT=1234 
(in my computer, it is 1025 by default)
3. open your firewall configuration window, add ports for manager (as item 1), 
as well as for arcgis.exe (as item 2) respectively
 
done!
 
 

新换了笔记本

用了2年多的DELL终于被换掉了,其实那本子性能还不错,PIV 2.0512内存,就是电池不大成了,到最后只能坚持10分钟不到马上就没电。出去开会的时候就感觉很糟糕,特别是如果希望在会议前要预习一下要讲的东西。

新的Sony vgn-sz16cp/c,很轻,双核(不小心赶了趟时髦),我不大喜欢它的键盘的感觉,还是Dell的对我的手感,不过时间一长我想会习惯的。相比,sony的轻了好多,样子也漂亮。

将东西转过来真是件很烦人的事,需要装太多的东西,而且东西还不能拉下不转过来。

arcCatalog不能通过ip address访问 sde spatial db

在arcCatalog里的spatial database connection对话框里,不能通过 ip address连接
到sde,但域名是可以的
解决方法:在本机的hosts(%system32%driversetc)文件里添加一行:
210.77.68.241 geodata #arcsde server
再在catalog里连接,使用ip或geodata都可以连接上去。

可能的原因:catalog在输入ip地址时,使用了getHostByAddr()方法,得到域名后,再
执行正常的连接(从host->ip->连接)。由于210.77.68.241这个ip没能反解得到域
名,故连接失败。
增加hosts项后,getHostByAddr可以反解得到域名是geodata,正常连接的时候,再行
解释域名到ip,从而正常连接。

评价:比较ugly的方法,如果不反解,而直接根据ip进行连接估计更好。可能是受
catalog采用的编程语言本身api的限制。

变化

一个很好的朋友向我诉苦:他女友本来一好好女子,受过高等教育,知书达礼,美丽大
方。同居一起生活久了,大家就不注意生活细节了,可能以为这些就无关紧要了。

我哑然,他居然将他漂亮女友说得如此不堪,但细想,其实何止朋友女友一人有这毛
病。在最亲的人面前,大家都放松起来了,放肆地做着自己想做而平时认为不雅而刻意
隐瞒的事。小小的放肆一把也许还可以调剂生活,但长此下去估计就有问题了。所谓女
为悦已者(不一定光指女的,男的也适用,看着哪个男的穿的光鲜,如果不是中了彩票
或谈成大生意,十有八九正在情场得意),恐怕不光是指将自己打扮的漂亮,抹了一层
层的脂粉,在生活习惯上也要尽量给对方展示一个良好有教养的形象,也许会更有助于
爱情的保鲜。

一点都不奇怪

想邀请几位老外过来,写邀请函。看人家老外写邀请信,有pi的签名,最多再加盖一个
单位的章,就可以了。我们决不,除了常规的“函”外,还需要官方的一个东西,上面
要盖科学院的红章。兰州分院甚至要求提供受邀方的护照复印件,这就更有意思了。按
中国办事的规矩,要办护照,还必须要拿着对方的邀请信到公安局去办,没有邀请信不
给办护照,而这边又是没有护照不给办邀请信,用计算机的术语,进入死循环了。幸好
美国佬没有这个规矩,他们都有护照,向他们索要护照复印件就好了。换成一个跟中国
一样规矩的国家,他们就甭想来中国了,除非他从没有这个规矩的国家先拿到邀请信,
从而拿到护照,再到中国!
中国的事情就是很有意思!

地球共享网从apache web server到iis的移植

地球共享网从apache web server到iis的移植
tong# cngis.org
 
由于服务器资源有限,地球共享网西北分节点需与我们正开发的西部数据中心同处一个服务器,而西
部数据中心的开发团队熟悉iis,并打算使用 asp.net来开发。因此我们要做的,是将地球共享网从原
来的apache环境移植到win2k3/iis。
1. 移去apache server
2. 将jdk 1.4.2_06移去,升级成jdk 1.4.2_08(这是由于西部数据中心采用的arcims server要求至
少是08以上),jsr升级到 update 6
 
3.0 备份 原tomcat下的webapps/ROOT目录下内容(由于定制主页更改过)。保留c:subCenter目录不
变。
3.1 移去 tomcat 5.0,升级成tomcat 5.5,其中jsr选定最新的 jsr 1.5.0.60(即update 6),安装
成service
3.2 将5.5下的webapps/ROOT改名为tomcat-ROOT,将3.0备份的ROOT全部移进 webapps目录下
 
4. 安装iis 6
5. 新建站点 westdc.geodata.cn,将端口号改为 8087,以后westdc.geodata.cn将通过 8087进行访问,而西部数据中心占用原有的80端口。新站点可以指向任何地方,在实际运行时,通过 jk2导至
tomcat的root目录下。我使用了 wwwroot目录。
 
6. 从tomcat.apache.org下载jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip(使用了jk2——
由于它的配置复杂,已经不被tomcat官方支持——是由于jk2支持不同端口的uri映射,如6.2
workers2.properties [uri:*:8087/*]所示,至少现在我不知道如何使用jk来达到同样的目的)
6.1 将zip包里的 isapi_redirector2.dll和install4iis.js 复制到 tomcat 5.5的bin目录下
6.2 将 tomcat 5.5/conf下的 workers2.properties改成 workers2.properties-bak,创建新的
workers2.properties,内容如下:
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
 
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
 
[uri:*:8087/*]
worker=ajp13:localhost:8009
[uri:/tomcat-docs/*]
worker=ajp13:localhost:8009
 
7. 将westdc.geodata.cn网站暂时改名为 Default Web Site,然后cmd进入命令窗口,cd到 tomcat
5.5/bin下,执行cscript install4iis.js,将为 jk2创建必要的配置。将Default Web Site重新改回
westdc.geodata.cn。(我测试的时候,使用了 install4iis.js -s命令指定网站名,没有成功,所以
使用其缺少的网站名,创建可以成功)。创建结束后请检查如下内容:
7.1 注册表项应包括如下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector2.0]
"extensionUri"="/jakarta/isapi_redirector2.dll"
"serverRoot"="C:Program FilesApache Software FoundationTomcat 5.5"
"workersFile"="C:Program FilesApache Software FoundationTomcat 5.5
confworkers2.properties"
"authComplete"="0"
"threadPool"="20"
(路径根据 tomcat所在目录不同可能不同)
7.2 在westdc.geodata.cn的属性isapi tab里应该加了 一项指向 isapi_redirector2.dll条目,名字
可以随便,比如 Jakarta Filter等
7.3 在westdc.geodata.cn下创建了一个名为 jakarta的虚拟目录,权限为脚本和可执行
7.4 在iis 6里的服务扩展里添加了 isapi_redirector2.dll,命名任意
 
8. 打开C:Program FilesApache Software FoundationTomcat 5.5webappsROOTWEB-INFclassesconfsecInfo.xml,将里面的原先的 本机ip改成 ip:8087字样
 
9. 在tomcat 5.5 /conf下的 server.xml里的 localhost Host下,添加:
 <Context path="/DCenterWebService" docBase="C:subCenterDCenterWebService" />
  
 <Context path="/Metadata" docBase="C:subCenterWebShare" />
 <Context path="/Manage" docBase="C:subCenterDataCenterM" />
 
10. 重启www服务
11. 检查 http://localhost:8087,应该已经搞定,iis从8087上收到的request会被redirect到 tomcat的 8009执行
 
12. 西部数据中心也加载了isapi_redirector2.dll(由于西部数据中心将采用arcims,而arcims是需要 jsp的支持),现在使用 80端口,且 localhost/tomcat-docs 也会被redirect tomcat下面。所以,如果没有 jk2根据端口的pattern match,那么来自任何端口的虚拟server的根目录都会被重定位到 westdc.geodata.cn下,这不是我们想要的。

学术腐败的代价

刘辉的事上Nature了,估计以后他也很难在国内外的学术界混下去了。包括方舟子本人在内,大家都没想到清华这次居然动真格的了——刘不是第一个也不自然不是最后一个,其他做假者都依然混的好好的,只有他得到了惩办,如果我是刘,一定感觉很委屈! 清华的举措肯定是有原因的,比如迫于校内师生的压力等,但在国内算是迈出一步。如果国内都有这样严格的制度,让大家知道做假的代价太多,估计学术风气会得到一些控制。

News in Brief
Nature 440, 728-729 (6 April 2006) | doi:10.1038/440728a

Fantasy reference list leads to the sack
What’s in a name? Hui Liu, assistant dean of the medical school at Tsinghua University in Beijing, got his job after submitting a résumé that cited, among other things, a paper by "H. Liu" in the Journal of General Virology. He lost his job last month when the university learned that the paper was written by Hong Liu, a researcher at Mount Sinai School of Medicine in New York.

The school was told of the problem last November by Shi-min Fang, a San Diego-based biochemist whose home page is a popular place to post rumours of scientific fraud. Following up an anonymous tip-off, Fang says he investigated Liu’s résumé, which had been posted on Tsinghua’s website. "I found that several papers were either non-existent or belonged to somebody else," Fang says.

The university’s investigation led to Hui’s dismissal.

体检

血检,尿检结果没出来,其它如心电图,B超,胸透,内科常规检查表明还正常。医生一再要求要加强锻炼!
 
 

一个Qt Excel的文档翻译

使用Qt调用Excel

Eugene Eremin

翻译:tong # cngis.org

原文Urlhttp://www.qtlib.ru/index.php?option=com_content&task=view&id=42&Itemid=28

 

Qt 3.1及以上版本的一个新特性是为Windows操作系统提供了ActiveX支持。开发者如果关心如何使用Qt操作COM组件,比如在Excel里插入新数据,这个新增功能就很重要了。

然而不幸的是,在Internet上没有太多这方面的主题可以借鉴。我在这里演示一个例子,可能会对大家有所帮助。

首先我们来看一下Qt自带的例子。通常Qt自带的例子可以告诉大家一些常用的知识点。我不记得在哪里看过,说一个好的文档应当是用户看过后不再存在不解的地方。但Qt只提供了一个与MS Outlook Express交互的例子。不过这就是我开始Excel交互研究的起点了。

ActiveXCOM的区别不是很大,我不是这方面的专家,但我在这里推荐大家看一本Adam Denninga的书“ActiveX for professionals”。这本书会帮助大家很好地理解这些概念。第一步,我们来引入Excel,并创建一个对象。

#include <qaxobject.h>

QAxObject* excel = new QAxObject( "Excel.Application", this ); //获取一个Excel对象

excel->dynamicCall( "SetVisible(bool)", TRUE ); //设置为可见

这里我们通过代码构建了一个对象,并通过对象打开了Excel。第二步,我们计划插入新数据。为了做到这一步,必须了解一点Excel文档的结构。Excel应用程序包括一系列的workbooks,每个workbook又由多个sheets组成。Microsoft公司并没有给出太多这方面的结构信息,我在Google上寻找了不短的时间,也没有太多的结果。

QAxObject *workbooks = excel->querySubObject( "Workbooks" ); //得到Workbooks集合的指针

QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "C:dataA.xls" ); //打开硬盘上的一个Excel文档

QAxObject *sheets = workbook->querySubObject( "Sheets" ); //得到Sheets对象的指针

QAxObject *StatSheet = sheets->querySubObject( "Item(const QVariant&)", QVariant("stat") );     //得到名为stat的一个sheet的指针

StatSheet->dynamicCall( "Select()" ); //选择名为statsheet使之可见 

QAxObject *range = StatSheet->querySubObject( "Range(const QVariant&)", QVariant( Qstring("A1:A1")));  //选择A1:A1这个range对象

range->dynamicCall( "Clear()" ); // 清除range对象

range->dynamicCall( "SetValue(const QVariant&)", QVariant(5) ); //将该range对象的值设为5

接下去用户可以保存和关闭这个Excel文档了。

最后说一句,这些对象的接口可以通过generateDocumentation () 产生。比如,我们可以这样做:

QFile outfile("excel.html");

QTextStream out( &outfile );

outfile.open( IO_WriteOnly | IO_Translate );

QString docu = excel->generateDocumentation();

out << docu;

outfile.close();

这些信息被保存在名为“excel.html”的文件里。如果插入的数据很大,会花费很多的时间。MFC使用了专门的class,但我没能在Qt里实现这个class。如果有意见,请反馈至http://prog.org.ru/forum/ptopic_141.html

译者注:本文由在线语言工具从俄语翻译至英语,然后人工翻译成中文,因此中文与俄文可能有一些出入,欢迎指正。

Qt 4里已经有很多的有关ActiveQt的文档,大家应当以那个为主要的学习的材料。