摘要: 由于某些原因,国内地图总会有些偏移。虽说这是个相对偏移,但总会对需要坐标定位的应用造成几百米的漂移。若定位坐标在国外,则不会存在此问题。因此我们需要判别当前坐标是否在国内,然后决定是否进行坐标修正。 判定坐标是否在国内,有下列几种方法可选: 通过网络地图接口查询 根据国家行政边界判定 根据国家行政边界近似判定 方法1,通过网络地图接口查询 网络接口:http://maps.google.com/maps/api/geocode/xml?latlng=xxx,xxx&sensor=false,其中latlng参数填写的是... 阅读全文
posted @ 2012-08-09 09:21 Aimeast 阅读(8307) 评论(10) 推荐(6)
摘要: “安全时间”的意义大多在于信息安全上,也可以为用户提供更加准确的时间服务。本文主要探讨如何利用网络时间协议 (Network Time Protocol, NTP)来进行网络授时 (Time signal)。NTP 可以适应网络的延迟,从而最大化的保证用户获取到的时间的准确性。其同步算法和原理参见这里 (Clock synchronization algorithm)。 在写本文之前,原本想使用国家授时中心提供的时间数据。但由于本人愚钝,没能在官方网站找到相关的授时接口,所以采用了全球通用的 NTP 来进行网络授时。 获取时间:根据 RFC 2030(已过时,最新为 RFC 5905... 阅读全文
posted @ 2012-06-22 01:46 Aimeast 阅读(1865) 评论(5) 推荐(3)
摘要: 在 WPF 的 ScrollViewer 控件中有 ScrollChanged 事件,到了 Silverlight 就没有此事件了。经常会有需要使用此事件去驱动一些功能的实现,例如延迟加载。网上也流传了一种使用监听 VSM(Visual State Manager) 实现的方法(见这里),但是其方法有点过于复杂,并且效率低下。所以这里放出一种简单的实现 ScrollChanged 事件的方法。 第一步:当然是找到你所需要增加此功能的页面的后台代码; 第二步:在为其增加一个事件public event EventHandler VerticalScrollChanged; 第三步:在此页... 阅读全文
posted @ 2012-02-28 19:25 Aimeast 阅读(5084) 评论(0) 推荐(4)
摘要: DNS是域名系统的缩写。DNS支持使用TCP和UDP协议,使用53号端口。可能是国产教科书的缘故,许多人都不知道DNS还可以在TCP协议上传输。当然,国内的绝大多数DNS服务器都不支持TCP协议。本文目标:制作一个稳定的、支持TCP和UDP协议的、可强制使用TCP协议请求的、支持IPv6的DNS代理。 阅读全文
posted @ 2011-12-22 23:09 Aimeast 阅读(15022) 评论(15) 推荐(8)
摘要: CIDR(Classless Inter-Domain Routing)是“无类别域间路由”的缩写。是当前用来表示路由的一种方式。由于在做某产品的时候需要用到CIDR集合的一些算法,例如集合的交集、并集、补集运算。下面给出相应的实现代码。 首先是CIDR的结构: public sealed class CIDR : IXmlSerializable, IComparable<CIDR> { private byte[] bytes = null; public IPAddress IPAddress { get; private set; } ... 阅读全文
posted @ 2011-12-17 01:26 Aimeast 阅读(2554) 评论(2) 推荐(1)
摘要: 首先请允许我重复造轮子 网络上很早就出现了给 Silverlight 使用的 GB2312 Encoding,但经过使用以后发现问题还挺多的: 不支持流操作 没有回退策略 只实现了解码没有实现编码 运行错误结果太多 支持的字符数目过少 对于上面出现的众多问题,特发布了一个专门针对 Silverlight 应用程序使用的 GB2312Encoding。顺便在这聊聊怎么编写一个 Encoding。 首先需要了解的知识:.NET Framework 中的字符编码,GB 2312,EUC(Extended Unix Code) GB2312 是一种兼容 ASCII 编码的双字节字... 阅读全文
posted @ 2011-10-23 13:19 Aimeast 阅读(3619) 评论(4) 推荐(5)
摘要: 下面一步一步教你怎么用 Microsoft Expression Blend 4 制作这一动画。所有图片可以点击看大图 第一步:新建一个 Silverlight 项目,取名为 WaitClock 第二步:调整控件大小为 160*160,并挑选一张合适的背景图片 第三步:画好外圈,设置好填充颜色,并把填充颜色转换为资源。然后在连续拖两个椭圆进来,分别设置边距为 25 和 70,并应用 Brush。 先拖一个 Ring 到 LayoutRoot,并设置 ArcThickness 为 13 设置好 Ring 的 Gradient Brush(..),两个点分别是 #70FFFF... 阅读全文
posted @ 2011-10-02 03:08 Aimeast 阅读(3757) 评论(2) 推荐(3)
摘要: 首先要承认这个标题有那么一丁点标题党,但这又不是完全的标题党。使用“正确”的调试方法的确可以把 VS 给搞死锁了。至于 VS 被死锁了算不算 Bug,这个问题有待于商榷。不想吐槽,先看看怎么用“正确”的方法把 VS 搞死锁。 首先要新建一个控制台项目,完整的复制下列代码:using System.Threading;namespace DeadlockVS{ class Program { static object _obj = new object(); static void Main(string[] args) { ... 阅读全文
posted @ 2011-09-26 23:08 Aimeast 阅读(2991) 评论(7) 推荐(1)
摘要: 先看效果:(点击可全屏) 再看整体结构: 什么是贝塞尔曲线?请看: http://zh.wikipedia.org/wiki/%E8%B2%9D%E5%A1%9E%E7%88%BE%E6%9B%B2%E7%B7%9A 下图演示的是四阶贝塞尔曲线的绘制过程: 现在说说怎么用 Silverlight 产生这么漂亮的曲线。幸亏,Silverlight 已经为我们准备好了绘制曲线的接口,Path 形状。其中的 Data 属性可以使用“路径标记语法”绘制各种曲线。 例如使用如下代码<Canvas> <Path Stroke="DarkGoldenRod" Strok 阅读全文
posted @ 2011-09-18 18:11 Aimeast 阅读(5038) 评论(7) 推荐(11)
摘要: 本文 Silverlight 版本:4.0。 首先定义数据类型,此文始终使用此定义类型。 public class SimpleData : ViewModelBase { private string _text; private int _column, _row; public string Text { get { return _text; } set { _text = value; OnPropertyChanged("Text"); } } public int Column { get { return ... 阅读全文
posted @ 2011-09-11 21:45 Aimeast 阅读(2478) 评论(0) 推荐(5)