Good good study, day day up

aleung的学习笔记, aleung的idea

EasyGPS是很好用的GPS数据管理器,能管理waypoint、route资料,它支持的文件格式是文件格式是gpx/loc。我使用过程中感觉它有以下优点:

※ GPS waypoint的名称、说明字段的文字个数有限制,通常只能输入缩写。waypoint多了之后缩写很难理解,管理十分困难。在EasyGPS中,可以输入额外的信息,如中文说明、类别信息等,利用资料的整理。
※ 双击选定一个点作为active point,程序会计算出所有其他点与active point的距离、方位角。如果用距离来排序,就能够快速找出某距离范围以内的waypoint。这是我认为这个软件最好用的功能。
※ 软件提供检索功能,能够根据多种条件查找、选定符合条件的waypoint
※ 可以打印waypoint清单。GPS中保存的waypoint没有详细说明,只要在出发前先打印一张单,名字具体对应的是什么地点就一清二楚了。英文机也不用愁啦。
※ 从GPS上传、下载waypoint也是十分方便的

我以前是用ozi文件分地区存放waypoint的,管理起来非常麻烦,先按大的地区分目录,再按小地区建立文件。而且在GPS多次导入导出,都分不清那些是新增那些是旧,有些还重复了。
现在用了EasyGPS不用这么麻烦了,把所有点都放一个gpx文件里面,需要的时候利用搜索很容易就能找到,只要找到一个,按范围排序马上就把附近整个区域的所有点都找出来了,然后另存文件或者直接传到GPS。

因此强烈推荐大家使用这种格式交换waypoint! :)

EasyGPS是免费软件,在http://www.easygps.com/ 可下载;另外有ExpertGPS,功能更加多些,对route、track的管理更全面,不过是要钱买的。

阅读全文 »

这些GPS游戏与定向越野有点类似:定向越野是根据地图指南针在最短的时间内到达预先布好的若干个check point;GPS定向是依靠GPS、电子地图到达(尽量靠近)预先设定的点。

GPS定向是相当有趣的活动。它是对参加者的野外行进、找路的能力是一个考验,你知道目标的方位、距离,但是怎么才能到达?中间可能隔着树林、山头、池塘或者建筑物。对于识别地图的能力也有要求,出发前要先找寻资料,确定目标的大致位置,在地图上研究通过什么路线才能靠近到达。

对于目标座标是电脑随机生成的游戏,更加有意思。不是人工布的点,因此目标不一定在有路可达的地方,参加者预先根本不知道目标在什么地形,可能在田野里,可能山坡上,可能在湖中央,也可能在别人屋子里。如果目标是不可到达的(例如在湖中,又没有船),还要考虑湖边的哪个位置才能离目标最近。因此这个游戏充满未知的刺激。

Geocaching - 寻宝 www.geocaching.com

在一个地方藏起一个“宝箱”,记录下精确坐标,发布到网站上。
其他参与者根据坐标寻找这个宝箱。找到后可以取走里面的一件礼物,当然了,为了让游戏可以继续玩下去,他也应该放一件礼物进去留给后来者。

阅读全文 »

使Nikon Coolpix系列相机生成raw格式文件的方法:将机器的id字符串由”NIKON DIGITAL CAMERA”改为”DIAG RAW”。利用photopc软件,通过串口数据线可以发送命令给相机实现修改

photopc id"DIAG RAW" query 
photopc id "NIKON DIGITAL CAMERA" query

打开DIAG RAW模式后,每次拍摄会生成两个文件,一个是正常的jpg,另外一个是raw格式文件,在950上大概文件大小是2.35M左右。

photopc软件可以控制相机的操作,例如设置光圈快门、拍摄照片等。

RAW2NEF工具可以将raw格式文件转换为Nikon的NEF文件格式,这是nikon的公开raw格式,photoshop plugin可以打开。http://e2500.narod.ru/raw2nef_e.htm

阅读全文 »

  1. This refers to the satellite images available from Nasa’s
    Earth Science Applications Directorate MrSID Image Server:
    https://zulu.ssc.nasa.gov/mrsid/
    Note that this is using secure HTTP, and the old URL
    no longer works. They do not have their server set up
    properly, so you may get warnings about the site’s
    security certificate.

https://zulu.ssc.nasa.gov/mrsid/ 下载数据

  1. Initially you use your mouse and the options at the
    bottom of the map webpage(In/Out, zoom level, map size) to
    find the map you want, then you select the “Select Image”
    radiobutton and click on the map to get a popup window,
    and on that you select “Download MrSID Image”.
    You have to zoom in a couple of levels from the world map
    before the image names are shown, and you won’t get the popup
    window if you have Javascript disabled.

用鼠标点出你需要的区块,选择”Select Image”,弹出区块窗口,下载

  1. The downloaded file will have a “.tar” extension. Programs
    such as WinZip that work with ZIP files should be able to
    open the ‘tarball’(the name used for tar archives) file.
    Typically it contains four files - the MrSid image(.sid),
    it’s “world file”(.sdw), it’s metadata file(.met), and a
    small JPEG thumbnail image(.jpg).
阅读全文 »

有些工具是专门用来绘制曲线图的, 可用于监控系统、设备的性能等用途,例如网络流量曲线/系统性能曲线等:

阅读全文 »

Java程序测试中发现parse一个XML文件时出现exception, 错误信息为invalid XML character. 但这个XML文件用XMLSpy检查却没有问题.

经过查找资料, 发现是XML文件中包含了一些不允许在XML中使用的字符(控制符). XML规范中规定了允许的字符范围(http://www.w3.org/TR/REC-xml#dt-character):

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]   

包含illegal字符的XML文件不是well-formedness的, 为什么这样的文件能够生成, 并且XMLSpy不报错? 是Microsoft XML parser的问题. 这个XML文件是使用msxml.dll生成的, 估计XMLSpy用的也是msxml.dll, 这个parser的其中一个缺陷是允许某些非常字符的存在. 而Java程序中用的parser估计是sun的crimson, 这个parser严格检查XML character range, 包含非法字符就会报错.

msxml.dll的问题看来还有不少, 这里专门有谈到: http://www.xml.com/pub/a/1999/11/parser/index.html?page=2

阅读全文 »

在SQL标准中, 标识符是不区分大小写的. 可是在MySQL中, 情况有所不同, 表名有可能是大小写敏感的:

在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。

尽管在 Windows 中数据库与表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库和表。

表的别名是区分大小写的。

详细信息在MySQL参考手册中有说明. 查看: MySQL语言参考 - 语言结构

阅读全文 »

用Java对XML进行处理, 有好多种方案, 如不了解相互的关系让人很头晕. 这里介绍的都是XML processing/parsing的范畴, XML的应用还有其他的许多方面, 也有好多令人眼花缭乱的缩写.

XML语法分析的方案有两种, 分别为DOM和SAX.

DOM: Document Object Model (http://www.w3.org/DOM/)
DOM 由 W3C 创建,并且是该协会的正式建议.
解析器读入整个文档,然后构建一个驻留内存的树结构,然后您的代码就可以使用 DOM 接口来操作这个树结构。您可以遍历树以了解原始文档包含了什么,您可以删除树的几个部分,还可以重新排列树和添加新的分支,等等。
DOM 构建整个文档驻留内存的树。如果文档很大,就会要求有极大的内存。
DOM 创建表示原始文档中每个东西的对象,包括元素、文本、属性和空格。如果您只需关注原始文档的一小部分,那么创建那些永远不被使用的对象是极其浪费的。
DOM 解析器必须在您的代码取得控制权之前读取整个文档。对于非常大的文档,这会引起显著的延迟。

SAX API for XML (http://www.saxproject.org/)
SAX 采用事件驱动的模式, 解释器读入XML文档, 进行扫描, 当发现符合指定条件的数据时, 向您的代码发送一个事件。SAX 不能修改 XML 文档.
SAX 事件是无状态的。当 SAX 解析器在 XML 文档中发现文本时,它就向您的代码发送一个事件。该事件仅仅给您发现的文本;它不告诉您什么元素包含那个文本。如果您想知道这一点,则必须自己编写状态管理代码。
SAX 事件不是持久的。如果应用程序需要一个数据结构来对 XML 文档建模,则必须自己编写那样的代码。如果您需要从 SAX 事件访问数据,并且没有把那个数据存储在代码中,那么您不得不再次解析该文档。
SAX 的速度相当快, 而且节省内存, 因为它不会保存数据在内存之中.

DOM/SAX 是两种不同的解析方法, 各有侧重点, 用于不同用途. 它们都可以用不同的编程语言来实现, 不同的供应商会提供各自的解释器版本. 例如Microsoft提供了DOM分析器msxml.dll, Apache的xerces, SUN的crimson等.

阅读全文 »

如果用JTextArea来做信息窗口,不断用append()显示新信息,通常会希望内容能自动滚动,保持最后增加的信息能够显示出来。利用setCaretPosition()可以实现,这个方法是设置输入光标的位置,如果光标位置超出目前可视范围,会自动滚动以保正光标可以显示出来。

int length = textArea.getText().length();
textArea.setCaretPosition(length);

如果还希望限制JTextArea中的文本长度,不让它无限制的增长,可以加上以下两行,当长度超出预订的maxTextLength后将开头的字符截除。不过美中不足的是截除无法按行进行。

if ( length > maxTextLength ) { 
    textArea.replaceRange("", 0, length - maxTextLength); 
}
阅读全文 »

Unicode:

unicode.org制定的编码机制, 要将全世界常用文字都函括进去.
在1.0中是16位编码, 由U+0000到U+FFFF. 每个2byte码对应一个字符; 在2.0开始抛弃了16位限制, 原来的16位作为基本位平面, 另外增加了16个位平面, 相当于20位编码, 编码范围0到0x10FFFF.

UCS:

ISO制定的ISO10646标准所定义的 Universal Character Set, 采用4byte编码.

Unicode与UCS的关系:

阅读全文 »