同意这个做李会军同学头像的顶

在蓝色理想里浏览中无意发现的,觉得很像李会军同学,就拿来了:       西装笔挺的                      原作者在这里:http://case.blueidea.com/peoples/view/sleepingcity/works/  作者说这是他的自画像, 难不成和李同学是哥俩?一文一武?   分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

很囧的北大青鸟广告

刚才在博客园网摘,突然看到个Google投放的北大青鸟的广告:   看看啥叫”渎“:   果然是误人子弟的好地方,值得鄙视。   再看看篆体的”渎“,很囧很口耐啊!   建议将此字作为吉祥物一起宣传好了:   分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

较为周全的Asp.net提交验证方案(Session版)

此前我介绍了使用数据库实现的提交验证方案,一些朋友怀疑其效率不佳,认为Session是更好的方案。 的确使用Session也不会消耗太多内存,而且如今内存白菜价,最不济就随手买个2G的插上也就够了,所以我将在此写下Session版的实现提要,其余细节参考前篇。 实现方案简述: 在Session中存储一个哈希表用以记录该用户的每一条验证信息,哈希表的键为验证信息的过期时间,值为验证码的明文。 过期时间使用ViewState存储,以发给客户端,并在提交时获取,以读取对应的验证码明文。 传给验证码生成页面的ID参数是经ToFileTime()方法转换的过期时间,验证码生成页获取到此参数后进行逆转换,再读取对应的验证码明文以生成显示。 代码讲解: 先建立一个静态类,名为“提交验证”,将用于存储验证信息的Session变量封装为一个属性: /// <summary> /// 验证信息表 /// </summary> static Hashtable 验证信息 {     get     {...

更多

较为周全的Asp.net提交验证方案 (下)

接上篇。 下面要对这个生成的“提交验证”类进行功能扩展,通过.Net的“部分类”或“扩展方法”技术都可以轻松实现,这里采用的是“部分类”技术: 引用生成的ADO.NET Entity Framework数据模型的命名空间,且声明为部分类。 书写静态构造函数及一个静态属性: static 提交验证() {    过期时间差值=3; }   /// <summary> /// 用于计算过期时间,单位为分钟 /// </summary> public static double 过期时间差值 {     get     {         return _过期时间差值;     }     set     {  &nb...

更多

较为周全的Asp.net提交验证方案 (上)

以前在学习Asp.net时备受困扰的就是提交验证这块,网上流行的关于图片验证的教程大都存在很多问题,比如: 验证码存储在页面代码或Cookies里,暴露给客户端; 通过Session存储的验证码,虽然解决了安全问题,但一个用户只使用一个变量存储验证码,假如用户同时打开一个以上的页面,分别提交的话,就无法正常使用了; 验证码不会过期,这会留下隐患,使暴力破解变得可行(当然也可以通过刷新间隔、提交间隔、黑名单等手段加以控制); 此外还有伴随着提交产生的另一个问题——重复提交。 为解决上述问题,我曾走过不少弯路,后来总结出了一个方案可以很好的解决这些问题,本文将结合ADO.NET Entity Framework技术来介绍此方案: 这方案的核心就是通过数据库统一存储所有请求页面所对应的验证码及其相关信息(这也可以通过Session或别的什么实现,但个人感觉数据库更为优秀)。 首先来建立一个这样的SQL Server数据表,表名设为“提交验证”: “ID”字段存储的是该验证信息的唯一ID,用于查询,并且我们还会将此值传给客户端用于回发时再度获取对...

更多

在Web.Config中指定页面的基类

为网站设置统一的页面基类绝对是一个好习惯,可以在基类中完成很多统一的读写处理和行为封装,比如实现防刷新机制、IP屏蔽等功能。 在Web.Config文件中,可以通过指定system.web中的pages节点的pageBaseType属性指定页面的基类: 但这个属性的概念比较模糊,我曾以为此属性会使新建页面的模板发生变化,使它们直接继承你所设定的基类,但不是这样的。 首先此属性会使所有不包含后台代码的独立Aspx页面自动继承于此基类,如这样声明的页面: 此外,此属性还会对所有包含后台代码但并未继承自此基类的页面报错,如这样声明的页面: 假如后台代码是默认的继承代码: 那么在编译时会显示如下错误信息: 此时修改代码,继承于先前所设的基类: 编译才会通过。 我使用的是VisualStudio 2008 SP1及.Net框架3.5 SP1,先前的版本处理方式可能会有所不同。 下载本文章的PDF版本:http://www.box.net/shared/um31uo0lhs 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-N...

更多

一处 ADO.NET Entity Framework 的逻辑BUG

这几天开始接触ADO.NET Entity Framework,突然发现一处奇怪的BUG。 首先来看这样一个目录结构: 我将EDM模型存入了一个名为“A”的目录中,然后编辑模型,设置其命名空间为“CommonDBModel”: 保存后打开CommonDBModel.Designer.cs查看生成的代码:   看上面的命名空间居然是“A”,而不是我设置的“CommonDBModel”。 这个命名空间显然是和其目录名称吻合的,于是我修改目录名为“CommonDBModel”: 象征性修改并保存模型,以使生成的代码得以刷新,再查看生成的代码:   果然是变成了“CommonDBModel”。 也就是说先前在属性面板设置的命名空间根本就是无效的,它只会以目录名作为命名空间名称,我认为这不合乎逻辑。 而假如直接将模型放入App_Code目录下,命名空间属性就可以正常生效。 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓...

更多

在后台代码中引入XAML的方法

本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象。 这些是我在编写RegeX时获得的经验,它们将会给WPF程序带来更多的灵活性。 一、在资源字典中载入项目内嵌资源中的XAML文件 Application.Current.Resources.MergedDictionaries.Insert(0, Application.LoadComponent(new Uri(“abc/Index.xaml”, UriKind.Relative)) as ResourceDictionary); 此方法仅限于载入项目中包含的XAML资源文件,测试中载入项目以外的资源会提示找不到文件。 二、在资源字典中载入外部XAML文件 Application.Current.Resources.MergedDictionaries.Insert(0, XamlReader.Load(new FileStream(“C:index.xaml”, FileMode.Ope...

更多

[重要更新] RegeX版本更新至2.1.1.5 增加新功能

加入了匹配内容提示功能,可在鼠标悬停时显示该匹配项内的各捕获组信息(检索、替换时均有效) 加入了获取程序更新信息的功能,可以在关于窗口中了解到软件是否有更新或相关信息 优化了程序代码 改变了界面结构,将所有处理结果统一置于“输出的文本”一栏中 改变了部分配置文件结构(首次载入旧配置文件时,“输入文本”会显示乱码,替换为其他内容后将不会再出现此问题) 改变了语言包文件的部分内容和结构   下载页   分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多

RegeX版本更新至2.0.0.4 加入英文语言包

增加了英文语言包 改进了语言包读取机制,修正语言扩展的BUG 改进语言包结构,取消了index.xaml文件 下载页:http://www.cnblogs.com/SkyD/archive/2008/09/22/1295621.html 非常感谢恩电提供了英文翻译,并指出了语言扩展时的BUG:) 英文版界面: 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多