[存储过程]SQL Server存储层级数据实现无限级分类

  由于数据库存储的数据都是以平面方式存储,所以目前大部分论坛和其他程序都是用递归来展现层次数据的,如果分类的层次十分深的话那么使用的递归次数相当可观,对性能的影响也非常大。最近要做一个分类信息的平台就遇到这个问题了,那么如何实现快速的展现分层数据呢?MySQL 的开发者帮我们想到了一个算法,这个算法目前唯一的问题就是尚未实现分类排序,我们可以通过右值的反向排序实现先入先出的排序。在这里我们需要了解的是如何用 SQL Server 来实现,我们就以省市县数据库为例来实现:
[img]attachments/month_0906/d2009641132.jpg[/img]
  如图所示我们将一个树节点的左右各编上号码,就可以看出一些规律,山西的左右值为(8,17),那么所有左值大于8,右值小于17的节点都是属于山西的子节点。稷山县的左右值为(14,15),那么他的所有父节点就是左值小于14,右值大于15的节点,怎么样,用这个方法实现的无限级分类性能绝对是顶呱呱的。一次查询就可以查出属于某个节点的数据以及他子节点的数据。这个算是我见过性能最高的无限级分类算法。其他算法跟这个对比基本没有任何优势。

我们先建立一个数据表,结构如下图(LID 为左值,RID 为右值,Tree 为节点深度,Name 和 ID 就不多说了,节点的索引和名称)

[img]attachments/month_0906/620096411559.gif[/img]

我们可以使用下面的存储过程来获得一个节点和其子节点:[code]Create PROCEDURE CLSP_ZoneSelect
(
@Root INT,
@Tree INT
)
AS
Select Z.ID,Z.Tree,Z.Name
FROM CL_ZoneData AS Z,CL_ZoneData AS P
Where P.ID = @Root
AND Z.LID >= P.LID AND Z.RID <= P.RID AND (@Tree = 0 or Z.Tree <= P.Tree + @Tree) orDER BY Z.LID ASC GO [/code] 我们可以用下面这个存储过程来在一个节点下插入新的子节点:[code]Create PROCEDURE CLSP_ZoneInsert ( @Root INT, @Name NVARCHAR(50) ) AS DECLARE @RID AS INT,@NID AS INT,@Tree AS INT SET @RID = 1 SET @NID = 0 SET @Tree = 1 IF @Root = 0 BEGIN Select TOP 1 @RID = RID + 1 FROM CL_CateData orDER BY RID DESC END ELSE BEGIN Select @RID = RID, @Tree = Tree + 1 FROM CL_ZoneData Where ID = @Root IF @Root = 0 or @RID > 1
BEGIN
Update CL_ZoneData SET RID = RID + 2 Where RID >= @RID
Update CL_ZoneData SET LID = LID + 2 Where LID > @RID

Insert INTO CL_ZoneData(LID,RID,Tree,Name)
VALUES (@RID,@RID + 1,@Tree,@Name)

SET @NID = SCOPE_IDENTITY()
END
Select @NID
GO[/code]

删除一个节点可以用下面的存储过程:[code]Create PROCEDURE CLSP_ZoneDelete
(
@ID INT
)
AS
DECLARE @LID AS INT, @RID AS INT, @WID AS INT, @DID AS INT
SET @DID = 0
Select @DID = ID, @LID = LID, @RID = RID, @WID = RID – LID + 1 FROM CL_ZoneData Where ID = @ID
IF @DID != 0
BEGIN
Delete FROM CL_ZoneData Where LID BETWEEN @LID AND @RID
Update CL_ZoneData SET RID = RID – @WID Where RID > @RID
Update CL_ZoneData SET LID = LID – @WID Where LID > @RID
END
Select @DID
GO [/code]

浪曦视频在线ASP.NET AJAX视频教程(By后浪)下载

  相信很多人对Ajax在Asp.net中的应用步骤不是很清楚,我找了些视频教程,和大家一起学习。
  下面是来自浪曦视频在线的ASP.NET AJAX视频教程,感谢浪曦视频在线!
1、ASP.NET AJAX基本原理
电信下载:[url=ftp://Anonymous@203.191.150.171/A008jcft20070123.rar]ftp://Anonymous@203.191.150.171/A008jcft20070123.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A008jcft20070123.rar]ftp://Anonymous@210.21.110.140/A008jcft20070123.rar[/url]
2、ASP.NET AJAX控件之HoverMenu
电信下载:[url=ftp://Anonymous@203.191.150.171/A023dseo20070204.rar]ftp://Anonymous@203.191.150.171/A023dseo20070204.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A023dseo20070204.rar]ftp://Anonymous@210.21.110.140/A023dseo20070204.rar[/url]
3、ASP.NET AJAX控件之DropDown
电信下载:[url=ftp://Anonymous@203.191.150.171/A019dhki20070129.rar]ftp://Anonymous@203.191.150.171/A019dhki20070129.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A019dhki20070129.rar]ftp://Anonymous@210.21.110.140/A019dhki20070129.rar[/url]
4、ASP.NET AJAX控件之CollapsiblePanel
电信下载:[url=ftp://Anonymous@203.191.150.171/A016opik20070129.rar]ftp://Anonymous@203.191.150.171/A016opik20070129.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A016opik20070129.rar]ftp://Anonymous@210.21.110.140/A016opik20070129.rar[/url]
5、ASP.NET AJAX控件之ToggleButton
电信下载:[url=ftp://Anonymous@203.191.150.171/A039jkhg20070213.rar]ftp://Anonymous@203.191.150.171/A039jkhg20070213.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A039jkhg20070213.rar]ftp://Anonymous@210.21.110.140/A039jkhg20070213.rar[/url]
6、ASP.NET AJAX控件之Slider
电信下载:[url=ftp://Anonymous@203.191.150.171/A036lkfd20070211.rar]ftp://Anonymous@203.191.150.171/A036lkfd20070211.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A036lkfd20070211.rar]ftp://Anonymous@210.21.110.140/A036lkfd20070211.rar[/url]
7、ASP.NET AJAX控件之MaskedEdit
电信下载:[url=ftp://Anonymous@203.191.150.171/A024ghjr20070207.rar]ftp://Anonymous@203.191.150.171/A024ghjr20070207.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A024ghjr20070207.rar]ftp://Anonymous@210.21.110.140/A024ghjr20070207.rar[/url]
8、ASP.NET AJAX控件之ResizableControl
电信下载:[url=ftp://Anonymous@203.191.150.171/A034jkaq20070211.rar]ftp://Anonymous@203.191.150.171/A034jkaq20070211.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A034jkaq20070211.rar]ftp://Anonymous@210.21.110.140/A034jkaq20070211.rar[/url]
9、ASP.NET AJAX控件之DynamicPopulate
电信下载:[url=ftp://Anonymous@203.191.150.171/A021hfrt20070201.rar]ftp://Anonymous@203.191.150.171/A021hfrt20070201.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A021hfrt20070201.rar]ftp://Anonymous@210.21.110.140/A021hfrt20070201.rar[/url]
10、ASP.NET AJAX控件Tabs
电信下载:[url=ftp://Anonymous@203.191.150.171/A037bvdf20070213.rar]ftp://Anonymous@203.191.150.171/A037bvdf20070213.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A037bvdf20070213.rar]ftp://Anonymous@210.21.110.140/A037bvdf20070213.rar[/url]
11、ASP.NET AJAX控件应用配置
电信下载:[url=ftp://Anonymous@203.191.150.171/A043cwpv20070215.rar]ftp://Anonymous@203.191.150.171/A043cwpv20070215.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A043cwpv20070215.rar]ftp://Anonymous@210.21.110.140/A043cwpv20070215.rar[/url]
12、ASP.NET AJAX控件之NumericUpDown
电信下载:[url=ftp://Anonymous@203.191.150.171/A028hgfe20070210.rar]ftp://Anonymous@203.191.150.171/A028hgfe20070210.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A028hgfe20070210.rar]ftp://Anonymous@210.21.110.140/A028hgfe20070210.rar[/url]
13、ASP.NET AJAX控件之AutoComplete
电信下载:[url=ftp://Anonymous@203.191.150.171/A013asxc20070128.rar]ftp://Anonymous@203.191.150.171/A013asxc20070128.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A013asxc20070128.rar]ftp://Anonymous@210.21.110.140/A013asxc20070128.rar[/url]
14、ASP.NET AJAX基础示例
电信下载:[url=ftp://Anonymous@203.191.150.171/A009hfsd20070124.rar]ftp://Anonymous@203.191.150.171/A009hfsd20070124.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A009hfsd20070124.rar]ftp://Anonymous@210.21.110.140/A009hfsd20070124.rar[/url]
15、ASP.NET AJAX控件之AlwaysVisibleControlExtender
电信下载:[url=ftp://Anonymous@203.191.150.171/A011gfht20070125.rar]ftp://Anonymous@203.191.150.171/A011gfht20070125.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A011gfht20070125.rar]ftp://Anonymous@210.21.110.140/A011gfht20070125.rar[/url]
16、ASP.NET AJAX控件之ConfirmButton
电信下载:[url=ftp://Anonymous@203.191.150.171/A017hrte20070129.rar]ftp://Anonymous@203.191.150.171/A017hrte20070129.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A017hrte20070129.rar]ftp://Anonymous@210.21.110.140/A017hrte20070129.rar[/url]
17、ASP.NET AJAX控件之MutuallyExclusiveCheckBox
电信下载:[url=ftp://Anonymous@203.191.150.171/A026hgft20070208.rar]ftp://Anonymous@203.191.150.171/A026hgft20070208.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A026hgft20070208.rar]ftp://Anonymous@210.21.110.140/A026hgft20070208.rar[/url]
18、ASP.NET AJAX控件之DropShadow
电信下载:[url=ftp://Anonymous@203.191.150.171/A020efdq20070201.rar]ftp://Anonymous@203.191.150.171/A020efdq20070201.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A020efdq20070201.rar]ftp://Anonymous@210.21.110.140/A020efdq20070201.rar[/url]
19、ASP.NET AJAX控件之Rating
电信下载:[url=ftp://Anonymous@203.191.150.171/A032hfgd20070210.rar]ftp://Anonymous@203.191.150.171/A032hfgd20070210.rar[/url]
网通下载:[url=ftp://Anonymous@210.21.110.140/A032hfgd20070210.rar]ftp://Anonymous@210.21.110.140/A032hfgd20070210.rar[/url]

SQL:利用正则替换数据库字段里的特定字符串

  今天IT交流群里有朋友提了个问题:
  表:k0904sour,字段:sour,数值举例:
  07:43,11:32,12:53,17:32,18:19,21:45
  07:37,11:33,12:35,17:33,18:21,21:50
  该字段是记录考勤打卡时间的,要求:清除18时以后的记录。
  刚开始有人提到在Rplace函数里用通配符,但Rplace不支持通配符。一下子没了主意,我就提议读取数据,然后处理完了再写回去。虽然是个办法,但如果数据量大的话,效率不高。
  我的毛病又来了,一个问题不找到个完美的解决办法总觉得心里不舒服。考虑到问题的特殊性,很可能需要用到正则表达式,于是继续查资料,终于找到了个函数patindex。[color=Blue]此函数返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。[/color]。有了这个函数就可以和SUBSTRING配合来处理了。
  刚开始想到的是,为了避免未包含状态下用这函数替换会出错,于量每个时间段写一个语句后面通过like判断是否包含,总共需要6个语句,如包含18时这一时间段的:[code]update k0904sour set sour=substring(sour,1,patindex('%,18:%',sour)-1) where sour like '%,18:%'[/code]
  如感觉这语句写得不够好,力求完美,再改进改进。眼睛再次看向patindex,可以把它用到条件里啊,再加上正则,这样一来就能精简语句了,两条语句就搞定:[code]update k0904sour set sour=substring(sour,1,patindex('%,1[8-9]:%',sour)-1) where patindex('%,1[8-9]:%',sour)>0
update k0904sour set sour=substring(sour,1,patindex('%,2%',sour)-1) where patindex('%,2%',sour)>0[/code]
  总结:对SQL中的某些函数没有接触过,以至于走了些弯路,看来基础还有待扎实。不过,只要善于思考,善于查资料,有些看似复杂的问题,也能迎刃而解。
  一切难问题都是纸老虎,我们不要被吓倒 🙂

foxmail6.5 无法删除邮件的解决办法

  我用的是Foxmail 6.5 Beta2,今天在整理邮箱,发现无法删除邮件,也就是点删除,没有反应。
  经过一番搜索,终于找到解决办法。很简单,进入邮箱账户文件夹:Foxmailmail账户名,删除其中的trash.IND。再执行邮件删除操作,成功了。如果还不行,你就把文件名为Trash的其它后缀文件也删除。

IIS 6曝新漏洞

Microsoft Internet Infomation Server 6.0 ISAPI Filename Analytic Vulnerability

function Copyright()
{

var Author=”80sec”;
var Email=”kEvin#80sec.com”.replace(”#”,”@”)
var Site=”http://www.80sec.com”;
var Date=new Date(2009,4,24).toLocaleString();
var Reference=”http://www.80sec.com/Microsoft-Internet-Infomation-Server-6-ISAPI-filename-analytic-Vulnerabilitie.html”;
return Reference;

}

/*

漏洞描述:

IIS6 (Internet Infomation Server 6.0) 是微软出品的一款WEB服务器系统, 广泛用于各种个人/商业信息发布/网站架设领域。80sec在测试中发现, IIS设计上在处理畸形文件名的时候存在一个严重的安全漏洞, 可能绕过web程序的逻辑检查从而能导致服务器以IIS进程权限执行任意恶意用户定义的脚本, 黑客可以通过制造畸形的服务器文件来触发该 漏洞, 并从而控制服务器.

漏洞厂商:

Microsoft [ http://www.microsoft.com ]

漏洞测试:

Undefined

解决方案:

等待微软更新官方补丁.

*/

素食如何防癌

  美国德州大学安德森医院的约翰逊博士经过多年研究,发现了一个事实,凡是平日摄取大量钾的地区,人们患癌者总是偏低。原来人体细胞里,钾的含量时常是钠的十倍,细胞在分裂之时,钾含量下降而钠含量上升。癌细胞也不例外,每次细胞受伤时,钾由细胞之中漏出来,癌细胞即开始繁殖。人若有办法提高体内细胞的钾含量,生癌的机会则减少。相反,老年人体内的钾特别容易由细胞膜漏出来,所以患癌的机会随年龄而增加。医学研究进一步发现,如果在有些癌细胞的培养液中加进了钾,它会突然变成正常细胞。由此证明,钾和钠的比例是癌细胞形成的关键,近年食疗防癌的秘诀,正是根据这个原理,多钾少盐。食盐和味精都含有大量的钠,而蔬菜与豆类则含有大量的钾,所以多吃蔬果豆类少吃盐和味精,是防止癌症、血压高、糖尿病的重要举措。

  含钾高的食物有:全谷类(小米、大米)、小麦肧芽(小麦粉)、奶类、部分海鱼(如沙丁鱼)、豆类(红豆、绿豆、黄豆、黑豆、蚕豆)、蔬菜类(土豆和尤其是深色蔬菜,如甘蓝、菠菜、花椰菜、番茄、紫菜、海带、胡萝卜、香菇)、水果类(香蕉、哈密瓜、柿子、橘子、木瓜、龙眼、香瓜、大枣、橙子、芒果、葡萄)果壳类(花生、瓜子、核桃、榛子、腰果、松子、栗子)等。

  现代医学研究证明,对人类健康威胁最大的高血压、糖尿病、心脑血管疾病、肿瘤等,都与体液的酸化有关。因此只有严格控制酸性食物的摄入,从源头上堵住促成酸性体质的条件,并且改掉生活中的不良恶习,养成健康的饮食习惯,这才是远离酸性体质达到人体酸碱平衡的有效途径,才是保证人体健康重要保证。而肉类是属于伤害人体严重的酸性食物,应尽量避免。

VS2005快捷键大全

快捷键 功能
CTRL + SHIFT + B 生成解决方案
CTRL + F7 生成编译
CTRL + O 打开文件
CTRL + SHIFT + O 打开项目
CTRL + SHIFT + C 显示类视图窗口
F4 显示属性窗口
SHIFT + F4 显示项目属性窗口
CTRL + SHIFT + E 显示资源视图
F12 转到定义
CTRL + F12 转到声明
CTRL + ALT + J 对象浏览
CTRL + ALT + F1 帮助目录
CTRL + F1 动态帮助
F1 帮助
SHIFT + F1 当前窗口帮助
CTRL + ALT + F3 帮助-搜索
SHIFT + ALT + ENTER 全屏显示
CTRL + – 向后定位
CTRL + SHIFT + – 向前定位
CTRL + F4 关闭文档窗口
CTRL + PAGE DOWN 光标定位到窗口上方
CTRL + PAGE UP 光标定位到窗口下方
CTRL + F6
CTRL + TAB 下一个文档窗口
CTRL + SHIFT + F6
CTRL + SHIFT + TAB 上一个文档窗口
ALT + F6 下一个面板窗口
CTRL + K, CTRL + L 取消remark
CTRL + K, CTRL + C 注释选择的代码
CTRL + K, CTRL + U 取消对选择代码的注释
CTRL + M, CTRL + O 折叠代码定义
CTRL + M, CTRL + L 展开代码定义
CTRL + Delete 删除至词尾
CTRL + BACKSPACE 删除至词头
SHIFT + TAB 取消制表符
CTRL + U 转小写
CTRL + SHIFT + U 转大写
CTRL + SHIFT + END 选择至文档末尾
CTRL + SHIFT + HOME 选择至文档末尾开始
SHIFT + END 选择至行尾
SHIFT + HOME 选择至行开始处
SHIFT + ALT + END 垂直选择到最后尾
SHIFT + ALT + HOME 垂直选择到最前面
CTRL + A 全选
CTRL + W 选择当前单词
CTRL + SHIFT + PAGE UP 选择至本页前面
CTRL + SHIFT + PAGE DOWN选择至本页后面
CTRL + END 文档定位到最后
CTRL + HOME 文档定位到最前
CTRL + G 转到…
CTRL + K, CTRL + P 上一个标签
CTRL + K, CTRL + N 下一个标签
ALT + F10 调试-ApplyCodeChanges
CTRL + ALT+ Break 停止调试
CTRL + SHIFT + F9 取消所有断点
CTRL + F9 允许中断
CTRL + SHIFT + F5 调试-重新开始
F5 运行调试
CTRL + F5 运行不调试
F10 跨过程序执行
F11 单步逐句执行
CTRL + J 列出成员
CTRL + PAGE DOWN 下一个视图
CTRL + B 格式-粗体
CTRL + SHIFT + T 格式-文字缩进

调试快捷键

F6: 生成解决方案
Ctrl+F6: 生成当前项目
F7: 查看代码
Shift+F7: 查看窗体设计器
F5: 启动调试
Ctrl+F5: 开始执行(不调试)
Shift+F5: 停止调试
Ctrl+Shift+F5: 重启调试
F9: 切换断点
Ctrl+F9: 启用/停止断点
Ctrl+Shift+F9: 删除全部断点
F10: 逐过程
Ctrl+F10: 运行到光标处
F11: 逐语句

编辑快捷键

Shift+Alt+Enter: 切换全屏编辑
Ctrl+B,T / Ctrl+K,K: 切换书签开关
Ctrl+B,N / Ctrl+K,N: 移动到下一书签
Ctrl+B,P: 移动到上一书签
Ctrl+B,C: 清除全部标签
Ctrl+I: 渐进式搜索
Ctrl+Shift+I: 反向渐进式搜索
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
Ctrl+Shift+V: 剪贴板循环
Ctrl+左右箭头键: 一次可以移动一个单词
Ctrl+上下箭头键: 滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L: 删除当前行
Ctrl+M,M: 隐藏或展开当前嵌套的折叠状态
Ctrl+M,L: 将所有过程设置为相同的隐藏或展开状态
Ctrl+M,P: 停止大纲显示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自动换行
Ctrl+G: 转到指定行
Shift+Alt+箭头键: 选择矩形文本
Alt+鼠标左按钮: 选择矩形文本
Ctrl+Shift+U: 全部变为大写
Ctrl+U: 全部变为小写

代码快捷键

Ctrl+J / Ctrl+K,L: 列出成员
Ctrl+Shift+空格键 / Ctrl+K,P: 参数信息
Ctrl+K,I: 快速信息
Ctrl+E,C / Ctrl+K,C: 注释选定内容
Ctrl+E,U / Ctrl+K,U: 取消选定注释内容
Ctrl+K,M: 生成方法存根
Ctrl+K,X: 插入代码段
Ctrl+K,S: 插入外侧代码
F12: 转到所调用过程或变量的定义

窗口快捷键

Ctrl+W,W: 浏览器窗口
Ctrl+W,S: 解决方案管理器
Ctrl+W,C: 类视图
Ctrl+W,E: 错误列表
Ctrl+W,O: 输出视图
Ctrl+W,P: 属性窗口
Ctrl+W,T: 任务列表
Ctrl+W,X: 工具箱
Ctrl+W,B: 书签窗口
Ctrl+W,U: 文档大纲
Ctrl+D,B: 断点窗口
Ctrl+D,I: 即时窗口
Ctrl+Tab: 活动窗体切换
Ctrl+Shift+N: 新建项目
Ctrl+Shift+O: 打开项目
Ctrl+Shift+S: 全部保存
Shift+Alt+C: 新建类
Ctrl+Shift+A: 新建项

VS2005的隐藏快捷键

1、Ctrl+Space直接完成类或函数(本来这个并不算隐藏的快捷键,但是因为中文输入法抢占这个快捷键,所以。。。,替代的快捷键是Alt+Right)
2、Shift+Delete整行删除,并且将这一行放到剪贴板(这时候不能选中一段内容,否则将删除选中内容)
3、Ctrl+Up,Ctrl+Down滚动编辑器,但尽量不移动光标,光标保证在可见范围
4、Ctrl+BackSpace,Ctrl+Delete:从光标处删除到词头或词尾,有的时候很有用
5、Ctrl+Left,Ctrl+Right按整词移动光标(不算隐藏,和前面几条加起来就是Ctrl光标控制套件了)
6、Alt+Shift+F10打开执行改名,实现接口和抽象类的小窗口(还可以用Ctrl+.,不过有的中文输入法用到这个)
7、Shift+F9调试是打开QuickWatch,内容是当前光标所在处的内容
8、Alt+F11新开VS2005并编辑宏
9、Alt+F12查找=Ctrl+F
10、Shift+F12查找所有引用
11、Ctrl+F10=F5,开始Debug
12、Ctrl+F6循环察看代码窗口,有点Ctrl+Tab的感觉
13、Ctrl+F3查找当前光标选中的内容,可以和F3配合使用
14、Ctrl+F2将焦点转移到类的下拉框上
15、Alt+F7=Ctrl+Tab

GPS的应用:用Ozi进行户外运动的定位导航

  登山等户外运动时带上一个GPS,特别是去一个不熟悉的地方时,会很有帮助。上次我和几个朋友去大罗山,就是在GPS的帮助下找到正确的前进方向,多次避免与纠正错误路线。在户外,一般的导航仪与导航软件都由于地图的原因,都不能很好地发挥作用。我推荐大家用PPC与OziExplorer配合。OziExplorer是个小巧的GPS应用软件,有Windwos桌面版与PPC版等,此软件能自制地图,地图来源很广,只要你能得到图片(无论是扫描,还是截屏),就能做出用于导航定位的地图。下面我简单介绍一下OziExplorer的地图制作与校正及应用。

  一、软件的安
  我用的基本上都绿色版的软件
  1、OziExplorer CE 2.19绿色版,PPC上用的
  2、OziExplorer PC 3.95.4R绿色版,电脑上用的,功能比PPC上强大多了,能校正地图
  3、img2ozf,用来生成PPC上用的导航地图文件
  4、Google Earth 4.2或更高版本
  5、GEtScreen,Google Earth自动截屏软件

  二、地图的获取制作
  可以用现成的电子地图,或者扫描低质的地图。户外用,还有个好的选择,就是Google高清卫星地图。
  Google Earth地图的获取,已经有高手制作出专门的软件:GEtScreen,可以自动获得与制作出地图。
  GEtScreen功能简介
  1、两点定位:左上、右下(或者右上、左下,总之只要是要选出个方框)两点进行定位。这时地球屏幕的鼠标会迭加一个十字按钮,选择合适的两点定位屏幕,然后按 鼠标右键 获得坐标,为下一步计算截图数量做准备。点击 两点定位 后,该按钮名称会变为“放弃定位”,如想放弃可进行恢复。
  2、图片计算:首先选定截屏距地面的高度(0.1-100公里),然后开始计算,计算完毕后会做一个框表示希望截屏的区域(该区域在截屏时会自动隐去,不会带入图片中),由于单个小图片的大小是固定的,实际的截屏区域可能略大。计算的横、纵数量会填在下面的输入框中,如果需要调整可以修改。调整截屏高度,需要重新计算。
  3、截屏:选择图片文件的存放地点和格式后开始自动截屏拼图。当图片比较大时,可以用网格截图,制作多张图来衔接。
  GEtScreen最终得到一图片和一记录经纬度信息的map后缀的文件

  三、地图的校正
  用GEtScreen得到的图已经是有精准经纬度坐标信息的,不用再校正,由其它方式得到的地图,就要经过校正,才能用于导航。
  校正就要用到PC版的OziExplorer。校正步骤如下:
  1、打开OziExplorer for PC,执行“File→ Load and Calibrate Map Images”(档案-载入并校正地图影像)菜单命令,载入地图文件。
  2、进入“Setup”(设置)选项卡,在“Map Projection”(地图投影模式)中选择“(UTM) Universal Transverse Mercator”投影方式。然后在主界面单击“Point1”(第1点)选项卡,然后使用鼠标在左边的地图图片中单击一个已经经纬度的点(如有经纬线的地图上的经纬线交叉点,或者在Google Earth上能找到的一个标志物),这时候在此点会加上红色圆圈并且标注为“1”,然后在“Point1”选项下面的“Lat”、“Long”框中分别输入纬度和经度。再单击“第2点”选项卡,也按第一点一样的方法操作,后面的点也同样操作,确定两到三个点即可使用,但设置好的点越多,地图的准确度越高。
  3、保存校正好的图片档案,会得到一个与图片同名的map后缀文件。

  四、OziExplorer for PPC地图的制作
  上面得到的地图无法在PPC里使用,要用一个img2ozf来转换,这个软件的使用非常简单,我就不介绍了。

  五、定位导航
  把OziExplorer CE解压出来,OziExplorer 2文件夹复制到PPC的存储卡的根目录,把转换好的地图复制到OziExplorer 2文件夹的Maps子目录里,运行里面的OziExplorer 2文件夹里Register.exe来注册软件,然后运行OziExplorerCE.exe。
  OziExplorer的使用也非常简单,我大概地介绍一下使用方法与几个功能。
  要定位,首先要连接GPS,点击Map菜单,再点Connect to GPS。定位后,会自动打开一个包含当前位置的地图。
  打开一个地图。如果你想看更详细的地图,或者看范围更广的全貌地图,可以通过File – Open Map File或者Map – More Detailed Map / Less Detailed Map来打开地图。
  导出航迹。航迹记录了你走过的路线,导出航迹,可以在电脑里观看回味你走过的路,也可以传给他人和他人交流,让将来走这路线的人有个参考。点击File – Track Log – Export Track Tail to File菜单,导出航迹,保存起来。当然,你也可以导入别人的航迹,用来给自己指路。
  记录航点。如果你想记录下你目前的位置和时间,可以在当前地图上显示你位置的地方建立航点,航点名称默认是字母加数字,你可以编辑航点,写好当前位置名称。用这个方法记录下的航点,也可以用来校正未校正好的地图。
  移动查看地图。在默认状态下,如果连接上了GPS,你移动地图后,地图马上又会恢复到当前位置,在行进中的话,如果你关闭GPS,又无法记录航迹,此时,可以用手写笔在地图上点击,出现菜单后放开,取消Track Gps的选择,这样你再移动地图后,它就不会恢复回来了,方便你查看后面的路径地图。看完后再选中Track Gps,继续为你引路。
  省电的窍门:PPC最耗电的是屏幕,降低屏幕亮度能提高待机时间,在Map – Screen菜单里可以选择亮度百分比。在不需要查看地图时降低屏幕亮度,需要时再提高。

  由于时间关系,暂时简单地写这么多。有什么问题,欢迎留言交流。至于上面提到的软件,大家可以上网搜索,一般都能下载到。实在找不到了,请留下信箱,我发给您。

ROS,软路由软件介绍

  专业路由设备动不动就几千上万的,本着节省的原则,我们可以用老爷机DIY一个路由器,这就需要用到ROS软路由软件,也就是软件路由器软件。
  根据使用的操作不同可以分为基于windows平台和基于Linux/bsd平台开发的软件路由器,基于Windows平台的软件防火墙比较常见的有ISA Server、Winroute Firewall等,这些软件都是商业化的,通常根据授权用户数不同收费而不同,购买正版的软件防火墙的费用对许多中小型企业来说无疑是一笔不小的开支。有而基于Unix/Linux平台的软件防火墙大家一般接触较少,受益于开放源码运行,目前基于Unix/Linux平台的软件防火墙如雨后春笋般不断推出,这些软件防火墙大多是免费的,常见的有RouterOS、m0n0Wall、SmoothWall、Ipcop、CoyoteLinux等,这些系统共有的特点是一般对硬件要求较低,甚至只需要一台486电脑,一张软盘,两块网卡就可以安装出一台非常专业的软件防火墙,这对很多有淘汰下来的低档电脑的朋友来说,意味着拿一台淘汰的电脑,安装一套免费的防火墙软件,不花一分钱就DIY出一台专业的防火墙,而且这些系统自身也包含了NAT功能,同时可以实现宽带共享,这意味着这台免费的防火墙其实也是一台出色的宽带路由器,这是多么令人激动的事情。
  我整理收集了几款功能比较强大,比较好用的软路由软件。

1、coyote linux(北美土狼)
  coyote linux(北美土狼)是一款非常小巧方便的软件路由器和防火墙软件,它以一张软盘为载体(也可以是U盘),可以使用一些比较古老的机器做为代理防火墙,而它的功能却很强大。支持PPPoE等多种上网方式,支持Web管理,有中文界面。到目前为止,最新版本是2.4.0。可到其网站上下载,网址:http://www.vortech.net/ 。注意:其网站上提供了若干平台的制作版本,我们一般采用Windows Disk Creation Wizard v2.24.0版本,意思是在windows下的生成版本。另外,此款软件是[color=Red]免费[/color]软件。

2、RouterOS
  RouterOS能将多张网卡组建为一个桥模式,是路由器变成一个透明的桥设备,同样也实行三层交换的作用,MAC层的以太网桥、EoIP 、Prism、Atheros和RadioLAN 等都是支持的。所有802.11b和802.11a 客户端的无线网卡(如station模式的无线)受802.11 的限制无法支持桥模式,但可以通过EoIP协议的桥接方式实现。
  RouterOS的功能很强大,不过,是收费软件。

有关学习的15个习惯

“真正的发现的航程,并非是在寻找新的土地,而且用新的视界去寻找”–普鲁斯特

“智慧日进者方值得尊敬。”-林肯

“我从不让我在学校所学的干扰我的教育”-马克吐温

  如果公立学校尚未摧残你的灵魂,那么学习是一项极佳的活动。它扩大了你的观点。它给予你用来改善生活的新知识,。即使你对世俗的利益不满足,但是学习也可以是一种乐趣的来源。但在忙碌的世界里, 我们总是很难有合适的时间去学习那些并非必需的知识。唯一学到的东西,就是那些必须要学的。而其他的一切,被认为是无聊的。即使是那些欣赏终身学习实践的人,也很难做出成绩。

这里有一些让你养成终身学习习惯的小提示:

1)总带一本书
无论你花一年或者一周去读一本书,这都无所谓。随身带着它,当你有时间的时候就努力去阅读,通读。每天只需花挤出来的几分钟,一周就能读一本。那么一年至少就能读50本。

2)建一个”要学习什么”的名单
我们都有需要做的事情的清单。这些就是我们需要完成的任务。努力建立一个”要学习什么”的清单。你可以把想要学习新领域的思路写在上面。或许你想掌握一门新语言,学习新技能,或者读莎士比亚全集。无论是什么激励你的,都要把它写下来。

3)寻找更多明智的朋友
开始花更多的时间与那些善于思考的人在一起。并不仅因为他们聪明,而且是因为他们投入了很多时间学习新的技能。他们的好习惯也会在你的身上摩擦出火花。甚至更好的,他们可能会与你分享他的知识。

4)指导自己的思想
爱因斯坦曾经说过:”任何读多思少的人都会养成懒惰思维的习惯”。只是简单的学习别人的东西,这样的智慧是不够的,你要在此之上建立自己的想法。多花点时间写日记,把你对这些学到的知识的思考和想法记录下来。

5)付诸实践
如果不使用,学来的技能也是无用的。读一本C++的书,和写一个相同的程序,是完全不同的两码事。学画画可不是简单的拿起画笔。如果你的知识能被应用,那就付诸实践吧。

6)教导别人
寓学于教。如果你能把知识教给别人,你也可以巩固学习。建立一个博客,开导别人或者与朋友们讨论想法。

7)整理你的博客订
有些形式的学习很容易消化,但往往缺乏实质内容。我就经常定期清理我订阅的博客。伟大的博客就是一个新思路的巨大源泉。但每隔几个月,我就意识到我总是收到那些我不关注的博客的信息。每隔几个月,清理你们的订阅,就可以节省时间,注意重点.

8 )在群体中学
终身学习并不意味着让自己陷于一堆落满灰尘的课本。加入教授技能的组织。这种群体学习和小组学习活动,都可以培养自己的乐趣和社会经验。

9)将假设忘掉 【把你脑中先入为主的观念忘掉】
杯子满了就不能再往里面倒水了。所以我总是尽量与任何想法保持距离。学到了太多的信念,就意味着太少产生新想法的机会。积极寻找那些能改变你的世界观的想法。

10)找一份能鼓励多学习的工作
找一份能鼓励不断学习的工作。如果你的工作让你没有多少学习知识的自由,就该考虑换工作了。不要每周花40小时来做一项没有挑战的工作。

11)开始的一个项目
列举一些你不知道该从何做起的事情。强迫这样去学习才能得到乐趣,并具有挑战性。如果你不懂电脑,尝试学一学。如果你认为你一个可怕的艺术家,那就试试画画。

12)跟随你的直觉
终身学习有时感觉就好像在荒野中漫游。你不知道你在期望什么,而且心里也不是总有一个明确的最终目标。那就让你的直觉指引你吧,这样可以让自我教育更有乐趣。我们的生活已经被完全的逻辑思维所打破,以至于异想天开的想法不复存在了。

13)早上15分钟
把早上的前15分钟定为学习期。如果你发现自己筋疲力尽,你也许想要等一会再学。但是不要把它推迟的过晚,因为某些紧急活动可能就会完全把它推之门外。

14)获得回报
学习你可以使用的资料。了解一些基本的编程,其他人需要外界帮助才能完成的项目,我就可以独立完成。要知道能够利用你的学习成果,这可是值得自豪的。

15)把它作为首要任务
很少有外部力量能说服你去学习。渴望应该来自内部。一旦你决定把终身学习作为一种习惯,你就应该把它作为你生命里的首要任务。