从google获得大尺寸地图图片文件

现在有很多工具可以从google地图获得大尺寸的地图图片文件,用于离线地图软件。这个地址介绍的方法我认为更加简单,而且同时适用街道地图和卫星地图,摘要如下:

1. 给你的firefox安装screengrab这个插件,这里是安装链接

2. 打开google地图网站,把地图定位到想要的位置(以中心点为准);

3. 点击地图右上方的“链接”链接,把弹出窗口里“粘贴 HTML 以便嵌入网站”里的内容复制下来并存成一个.html文件,如map.html,文件内容大概如下:

<iframe width\="425" height\="350" frameborder\="0" scrolling\="no" marginheight\="0" marginwidth\="0" src\="http://ditu.google.cn/maps?f=q&hl=zh-CN&geocode=&q=%E5%8C%97%E4%BA%AC&ie=UTF8&z=10&ll=40.037078,116.464691&output=embed&s=AARTsJrxRs93mjURz58t1CN5oqwlje5dZQ"\></iframe\><br /><small\><a href\="http://ditu.google.cn/maps?f=q&hl=zh-CN&geocode=&q=%E5%8C%97%E4%BA%AC&ie=UTF8&z=10&ll=40.037078,116.464691&source=embed" style\="color:#0000FF;text-align:left"\>查看大图</a\></small\>

4. 修改map.html文件的内容,把width和height改为所需要的大小,例如width="4000" height="4000"(注意,修改以后得到的地图的中心点座标是保持不变的);如果需要,还可以修改z值(缩放值),最大可以到17;

5. 在浏览器里打开map.html文件,即可得到一个显示大地图的网页;

6. 点击firefox状态栏里screengrab的图标,选择“Save->Complete Page/Frame”命令将整个地图保存为一个4000x4000的图片文件;街道地图推荐使用png格式,卫星地图推荐jpg格式,格式切换在screengrab的选项里改。(注意,0.95版的screengrab好像只能保存不超过9000x8000的图片,以后应该会修正)

file

图1 将浏览器里的大地图通过screengrab保存为图片文件

Eclipse 3.4新特性 – Plug-in spy

Eclipse 3.4提供了一个新功能:在任何界面下按Alt+Shift+F1 (Windows, Mac OS里用Shift+Option+F1),就可以看到Eclipse用来实现当前选中界面元素的类。

这个功能至少我看起来对插件开发人员很有用,因为当你想要模仿实现(或利用)Eclipse里的某个界面时,不用再像以前那样猜这个界面的实现类的名字了。比如最开始我就用了很久才找到属性视图的实现类是PropertySheet,而我总是朝着PropertyView的方向找,当然很难找到。

file

Plug-in Spy本是一个单独的小项目,在3.4里直接集成到workbench里了。

来源:Eclipse 3.4 Hidden Treasures

Cognos8安装使用问题记录

网上已经有很多关于cognos8的安装配置文章了(如这篇),这里介绍的是自己的亲身经历,供大家参考。以下是Cognos v8.3安装过程中遇到的问题和解决方法:

环境

Cognos v8.3

问题和解决

  1. 运行issetup.exe安装完成后,把cognos自带的jre里bcprov-jdk13-125.jar复制到机器缺省jre的相应目录下,否则运行Cognos Configuration会提示找不到类错误。

  2. Cognos8产品包括很多张安装盘(Image),BI Server包括最常用的功能,其他如Metric Studio、Framework Manager和SDK等等都需要在BI Server的基础上单独安装,这些component的安装也很简单,直接安装到BI Server所在目录即可。

  3. 在Cognos Configuration里启动Cognos Service时提示[ ERROR ] CFG-ERR-0103 Unable to start Cognos 8。只有使用cognos自带的content manager数据库时才报这个错误,改用SQL后错误消失。参考链接1(但后来测试中发现用SQL Server也会报这个错,怀疑有两个可能:1.数据库中未创建ContentStore所需的那些表,如果是这种情况,需要按cognos文档中的方法运行创建表的script命令;2.数据库使用的是Express版本,这种可能性较小,但如果是这种情况换用标准版就能解决;另,SQL Server Express版本的默认端口号是1702而非1433,在Cognos Configuration的Content Store里要注意正确配置)

  4. 为Metric Studio创建包时提示DPR-ERR-2014: Unable to load balance the request because no nodes in the cluster are available, or no nodes are configured for the service: metricsManagerService.
    解决方法:到Cognos Configuration里,在Cognos Planning这一项里,根据你的数据库类型新建一个resource,指向ContentStore那个数据库(也就是让这个数据库的配置与Content Manager下面的那个数据库配置一致),重启Cognos问题解决。

  5. 运行cognos sdk的jsp例子。要把$cognos dir$/sdk/lib下的xalan.jar复制到$cognos dir$/webapps/samples/WEB-INF/lib下,然后在Cognos Configuration里重启cognos,用http://localhost:9300/samples/index.jsp 就可以访问了。(cognos文档里说还需要在bootstrap_win32.xml里配置tools.jar的路径,我没配置好像也可以用,可能是有一些例子需要还没遇到)

  6. 启动report studio时提示HAL ERROR The web request failed. 12002 - Unknown URL: dialogs/_YU7.xml(解决方案探索中)

  7. 在工作区间里添加链接前要先设置Acceptable Domain列表,这是在Cognos Configuration的Cognos Application Firewall (CAF)里设置的,在Valid domains or hosts项里添加即可。

  8. 数据库里数据改变后,Report里的内容不更新。解决方法:这个问题可能是由于Cognos缓存了数据,要取消缓存,在Framework Manager里选择Project->Edit Govenors,勾掉Allow Usage of Local Cache选项,我试验的结果好像需要重新发布包并Update报表才生效。参考链接

  9. 把cognos报表集成到其他portal里。报表的地址可以在报表属性里找到,要去掉标题和工具条,可以加ui.header=false&ui.toolbar=false在URL里(cognos8.2里试验正确,cognos 8.3里可能要用cv.headercv.toolbar

  10. 在Transformer里更新一个powercube的时候,如果提示The locking of Cube XXX.mdc failed. It is probably in use by another application,可能是在浏览器里正在查看使用该powercube的报表,关掉浏览器过一段时间应该就可以正常更新了。

  11. 安装镜像名和component对应关系(部分):

    c8bisrvr_xxx -> BI Server
    c8bimodel_xxx -> Framework Manager, Map Manager
    c8bisamples -> (Samples)

无光驱笔记本n410c装windows xp总结

LP的Compaq n410c笔记本硬盘坏了,就买了一个80g日立pata笔记本硬盘。到今天十月五号花了五天空余时间,总算在新换的硬盘上装好了windows xp。网上已经有不少无光驱笔记本安装windows xp的网页,但这次情况稍微有些特殊(安装程序会中途关机),并且手里也没有常说的IDE转接头,所以这里总结这次的安装经验,供有类似需要的朋友和自己以后参考:

阶段1:

  1. 把新硬盘装进移动硬盘盒,连接到另一台winxp电脑上,鼠标右键点“我的电脑”选“管理”,在“磁盘管理”里给新硬盘分区;
  2. 随便找一个u盘,用“超级启动盘1.7”这个软件制作成启动u盘(选HDD方式),这一步用"HP USB Disk Storage Format Tool"应该也行;
  3. 把新硬盘从移动硬盘盒里拿出来,装到笔记本里,把u盘也插上。启动笔记本电脑,在bios里设置u盘启动(n410c要求在bios里打开legacy usb设备才能设置u盘启动),顺利的话可以进u盘上的dos系统,这时c:是u盘,d:是则新硬盘第一分区(这时如果运行fdisk也可以给新硬盘分区,但无法设置新硬盘的主分区为active分区,这好像会为用这块硬盘启动启动带来麻烦);
  4. format d:/s命令将新硬盘做成启动盘(直接用sys c: d:命令不能成功,怀疑与硬盘分区非active有关);
  5. 把新硬盘从笔记本里取出,装到移动硬盘盒里,连接到另一台电脑上,复制windows xp的安装文件到新硬盘第一个分区,顺便复制himems.sys,smartdrv.exe这两个文件到根目录,建立一个config.sys文件(为smartdrv准备的),内容很简单如下:
    device = himem.sys6
  6. 把新硬盘装回笔记本电脑,用新硬盘启动系统,顺利的话可以进入dos环境;
  7. 执行smartdrv.exe(否则安装过程漫长),然后进入xp安装路径的i386路径,执行winnt开始安装;

看到windows xp安装程序在n410c上开始了,我以为问题搞定了,结果证明高兴太早了。第一次重启后,还未进入图形界面安装阶段,安装程序开始复制文件,复制到driver.cab的时候n410c突然关机,现象就和掉电一样,再次执行多次安装程序或换不同的xp安装镜像现象一致,只是有时还没到driver.cab就关机了。

阶段2:

  1. (在阶段1安装到一半失败的基础上)把新硬盘装回移动硬盘盒,用“超级启动盘”直接把新硬盘做成启动盘;
  2. 把新硬盘安回笔记本电脑,用新硬盘启动,结果失败;
  3. 把新硬盘装回移动硬盘盒,用HP USB Disk Storage Format Tool把它做成win98启动盘;(做了两三次后再做就会失败,很奇怪)
  4. 把新硬盘安回笔记本电脑,用新硬盘启动,成功进入win98的dos环境。执行xp安装程序,安装到一半时同样会自动关机;
  5. 既然xp安装程序过不去,试试win2000怎么样。利用移动硬盘盒把win2000 professional安装程序拷到新硬盘上,装回笔记本启动进入dos,之行win2000的winnt命令开始安装,结果顺利安装成功。在win2000里运行winxp的setup程序,准备把win2000升级为xp,这次xp安装程序是在图形界面下执行的,没想到再次出现了中途关机的状况,看来升级的路也走不通;

阶段3:

  1. 把新硬盘安装到另一台有光驱的笔记本电脑上,以正常方法在xp安装程序里为硬盘分区和安装,安装完成后第一次进入操作系统后,立即按制作万能ghost系统的方法操作(参考链接),可以不需要系统减肥的步骤,关键是卸载硬件驱动这一步,不过我在卸载各种驱动以后没有执行sysprep封装这一步。
  2. 把安装好xp并处理为万能ghost系统的硬盘装到无光驱笔记本电脑上,这时xp应该可以启动,但因为我没有执行sysprep这一步,所以在用户登录界面键盘鼠标(包括外接鼠标)都没有反应,因此无法进入实际使用。
  3. 想到是没有执行sysprep封装步骤,所以把硬盘再次装到有光驱笔记本里,却发现笔记本死活认不出有硬盘存在(bios里都找不到,有人提到过ibm t60笔记本里需要设置scsi model为compatible,但我的笔记本不是这个型号,bios里也没有类似选项..);

已经花费了不少时间,为了不造成更大损失把另一台笔记本也搞坏,放弃了继续尝试,只是到现在也不明白为什么只有第一次装上时能认出来。

阶段4:

  1. (在阶段3的基础上)用新硬盘在无光驱电脑上启动,在xp启动时按F8并选择安全模式进入,在登录界面等待几分钟,发现鼠标键盘可以用了(哈哈);
  2. 登录进入以后重启电脑,这回以正常模式启动xp,也可以顺利登录进入了,这时可以安装各种驱动软件;

现在看起来似乎正常了,但有一个问题:无法软关机,即选择关闭电脑后会提示“您现在可以安全关闭计算机了”,自己还要按电源键4秒关 机;原因是前面制作万能ghost系统时修改了acpi相关的驱动,在设备管理器里计算机下可以看到是Standard PC

阶段5:

  1. 我解决这个问题的办法是在Standard PC上点鼠标右键,选更新驱动程序,这时驱动程序被自动更新为ACPI Uniprocessor PC,按提示重新启动电脑,结果自检后黑屏,左上角有一个正常大小的光标闪烁,汗..(现在想来,正确的解决方法也许直接用halacpi.dll改名并替换system32下的hal.dll)
  2. 因为另一台笔记本已经不认这块硬盘了,想重装不太容易,另外问题显然出在更换的acpi驱动上,所以在网上搜dos下是否有办法把这个驱动换回来。竟然找到了一个网页(链接),方法是用xp安装光盘启动进入恢复模式(在阶段4后发现实际用usb光驱也可以启动n410c,后悔为什么最早没发现,不过让我感到安慰的是用光驱安装一样会中途关机无法完成。进入恢复模式也有中途关机问题,摸索出的解决方法是在安装一开始提示Press F6 if you need to install a third-party SCSI or RAID driver时按F5,后面过一会儿会提示你选择acpi设备,选第一项即可。但我没有用这种方法实验能不能成功从光驱完整安装xp,如果能就好了,下次需要重装的时候再试吧);
  3. 在恢复模式下,先expand i386\halacpi.dl_ c:\,然后copy c:\alacpi.dll c:\windows\system32即把安装盘上的halacpi.dl_解压缩改名覆盖原来的hal.dll,若直接用安装盘上的hal.dll则是Standard PC,好像大部分支持acpi的电脑都应该用halacpi.dll,而刚好我那台有光驱笔记本用的是halaacpi.dll(比前者多了一个a,支持的是Uniprocessor PC),在新电脑里选更新驱动程序后给恢复了有光驱笔记本的驱动,所以造成了无法启动;(替换的过程也可以参考这个链接
  4. 再次用新硬盘重启,果然能进xp了,只是所有的驱动都需要重新扫描安装一次,不过大多数让xp自动安装都可以发现(因为之前已经装过一次)。

希望不要再出什么新问题。

file

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2007/10/06/915055.html

GMF里实现editpolicyProviders扩展点

通过org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders扩展点可以给GMF应用里的editpart增加所需要的editpolicy,通过editpolicy返回的command,就可以自由的控制editpart的行为。顺便说一句,GMF Runtime之所以提供这许多扩展点,是为了允许通过其他插件工程对GMF生成的应用进行各种定制。

例如现在要对一个GMF程序里的名为_Book_的图形元素增加双击打开一个对话框,在对话框里修改模型属性的功能。最直接的办法是找到GMF生成的BookEditPart,覆盖performRequest()方法,判断request.getType()是否为RequestConstatns.REQ_OPEN,若是则打开一个对话框。但这样要求我们把代码写在GMF生成的插件项目里,如果考虑到有时要为第三方插件做扩展,我们无法修改它的代码的情况呢?

使用editpolicyProviders扩展点则无此限制,还是同样的需求,扩展点的方式步骤如下:

创建一个插件项目,并依赖生成的GMF应用和GMF相关依赖项(特别是org.eclipse.gmf.runtime.diagram.ui.providers),在plugin.xmlextensions里添加org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders项,通过class属性指定一个Provider类。

<extension
       point="org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders">
    <editpolicyProvider
          class="com.my.diagram.custom.MyEditPolicyProvider">
       <Priority
             name="Lowest">
       </Priority>
    </editpolicyProvider>
</extension>

这里定义的Provider要自己写,它应该实现IEditPolicyProvider接口,它的provide()方法根据传入的operation判断对相关的editpart是否需要创建editpolicy,若是则createEditPolicies()里用installEditPolicy()方法添加。下面的代码实现了双击打开对话框的需求:

public class MyEditPolicyProvider implements IEditPolicyProvider {

    public void createEditPolicies(EditPart editPart) {
        editPart.installEditPolicy(EditPolicyRoles.OPEN_ROLE, new OpenConditionEditPolicy());
    }

    public void addProviderChangeListener(IProviderChangeListener listener) {

    }

    public boolean provides(IOperation operation) {
        if (operation instanceof CreateEditPoliciesOperation) {
            EditPart editPart = ((CreateEditPoliciesOperation) operation).getEditPart();
            if (editPart instanceof ConditionEditPart)
                return true;
        }
        return false;
    }

    public void removeProviderChangeListener(IProviderChangeListener listener) {

    }

}

参考链接

http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg05684.html
http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/msg00931.html

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2007/08/16/858923.html

为什么使用开源软件要谨慎

如果你的软件产品要面对客户,最好谨慎使用开源软件,理由如下:

1、你不知道开源软件的代码里是否包含有意/无意以不当方式取得的代码;

2、开源软件是以AS-IS的方式提供的,没有任何保障,不承担任何责任,由此带来的所有责任转嫁给使用者;

3、GPL许可的病毒效应,即如果你的软件里使用了GPL开源软件,你的软件只能适用GPL许可,并公开所有代码;

补充说明:只有软件发布时才可能出现上述问题,但应提前考虑到,应告知相关人员软件里含有开源代码,在正式发布前将使用开源软件的部分替换或重写。另外,有些公司有专门的开源软件审查流程,也可以通过这种方式在最终产品里包含特定的开源代码。

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2007/05/24/758508.html

SAS BI Server安装要点

  1. 使用Software Navigator光盘进行安装,这个过程可能会通过System Requirements Wizard安装一些必要的软件,如Microsoft Component 7.0和SAS Private JRE 1.4.2

在组里服务器安装Microsoft Component 7.0 后出现如下现象:自动重启,显示RAID信息后喇叭短鸣一声,提示“Planar video disabled due to add-in video ”,之后黑屏无法进入Windows,关机再开还是同样现象。解决:先尝试F1进入BIOS检查,未发现异常;再F2进行检测,主要是显卡方面,仍然未见效果;最后把SAS光盘取出,关上关驱门,重启竟然顺利进入Windows,汗。

  1. 安装时提示需要SAS Installation Data(SID),SID is a text file required to install a customized version of SAS。在http://support.sas.com/adminservices-SID 填入必要的信息和email地址即可在5分钟内得到。你的SID里包含了这套SAS里可以安装的组件,一般不需要改变。

  2. 包含asian字符时提示“ERROR: Some code points did not transcode.”,解决方法是把sasv9.cfg里en改为zh,见http://support.sas.com/techsup/unotes/SN/015/015928.html

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2007/04/11/709664.html

利用Firefox书签快速搜索Eclipse新闻组

EMF网站上看到的窍门:在Firefox里可以为每个书签指定一个快捷词(keyword),只要在地址栏里输入这个快捷词即可跳转到该书签对应的地址。不仅如此,快捷词后面还可以跟参数,Firefox会将书签地址里的“%s”替换为这个参数。例如,新建一个书签,地址为 http://www.google.com/search?hl=zh-CN&q=%s ,快捷词为“google”,则可以在地址栏里输入google eclipse plugin来搜索Eclipse插件。

Eclipse提供了Web界面的搜索功能,所以我们也可以利用Firefox的这个功能简化在某个新闻组里的搜索(新闻组下拉列表太长了),例如搜索EMF新闻组的Firefox书签地址就应该是这个链接 ,我们不妨将快捷词指定为“emf”,这样一来,遇到EMF的问题只要在Firefox地址栏输入“emf xxx”即可,其他新闻组的定制也类似。

file

搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2006/08/10/473734.html

关于Free版的EclipseUML

Omondo EclipseUML分为Studio版和Free版两种,我只用过Free版,对于创建EMF类图来说感觉已经够用了。不过和Eclipse的版本比起来,EclipseUML的升级比较缓慢,目前为止最新的版本还是2005年9月27日放出的,这就造成在新版本Eclipse里EclipseUML可能无法正常运行。

20050927版本是针对Eclipse 3.1开发的,现在Eclipse已经出到M5版本,我在Eclipse 3.2M4里运行这个版本的EclipseUML基本没有出现问题,但到了M5就出现了不能创建Enumeration的问题,表现为无法添加Enum项,所报异常如下:

java.lang.NoSuchMethodError: org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField.addElement(Ljava/lang/Object;)V
    at com.omondo.uml.obf.bte.a(SourceFile:352)
    at com.omondo.uml.obf.bte.a(SourceFile:63)
    at com.omondo.uml.obf.yt.customButtonPressed(SourceFile:315)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField.buttonPressed(ListDialogField.java:204)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField.doButtonSelected(ListDialogField.java:458)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField.access$0(ListDialogField.java:454)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField$2.widgetSelected(ListDialogField.java:420)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1074)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3158)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2838)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:811)
    at org.eclipse.jface.window.Window.open(Window.java:789)
    at com.omondo.uml.obf.ahk.c(SourceFile:167)
    at com.omondo.uml.obf.le.d(SourceFile:572)
    at com.omondo.uml.obf.fkr.execute(SourceFile:86)
    at org.eclipse.gef.commands.CommandStack.execute(CommandStack.java:149)
    at org.eclipse.gef.tools.AbstractTool.executeCommand(AbstractTool.java:388)
    at org.eclipse.gef.tools.AbstractTool.executeCurrentCommand(AbstractTool.java:400)
    at org.eclipse.gef.tools.CreationTool.performCreation(CreationTool.java:254)
    at org.eclipse.gef.tools.CreationTool.handleButtonUp(CreationTool.java:178)
    at org.eclipse.gef.tools.AbstractTool.mouseUp(AbstractTool.java:1053)
    at org.eclipse.gef.EditDomain.mouseUp(EditDomain.java:259)

在为了提高兼容性而特别制作的Eclipse 3.2M5a版本里也是同样的现象。不过已经创建好的Enumeration在Eclipse M5下则显示正常。因此提醒大家在使用这个插件的时候要特别注意多备份自己的ecd和ecore文件,以免造成不可挽回的后果。

另外,Omondo最近可能会有新的版本放出了,毕竟已经过了半年这么长的时间。很多朋友反映上不去www.omondo.com的问题,其实用国外代理是可以上的,不知道为什么这个网站也被禁掉了。Update(2012/11/12): 今天测试omondo网站已经可以从国内直接访问了。

补充:Omondo EclipseUML是支持cross reference的,见这个链接

补充:在EclipseUML的类图编辑器里删除一个类的时候要特别小心,如果其他类有以这个类为返回值或参数类型的时候,这个类图保存关闭后将无法再次打开