随笔分类 -  编程

让PasswordRecovery控件使用Email地址找回密码
摘要:我曾介绍过以Email地址登录基于Membership管理的网站的方法,并指出这是一种更为安全的做法,用户的Email通常不会暴露在网站中,而不知道Email也就无从破解实现登录。 但是在密码找回时,... 阅读全文
posted @ 2009-05-27 07:54 斯克迪亚 阅读(2657) 评论(0) 推荐(0) 编辑
分离到底!用XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站
摘要:早在Web标准化风潮到来之前,我就考虑过XML+XSLT建站了,我以为这是一种非常优雅、高效、低耦的方案,必将大行其道。 然而时至今日,使用这种方案建站的人依然寥寥无几,大家还都在抱着Web标准化不撒手,其实Web标准化只是将表现(Css)分离了出来,而数据和结构仍然混杂在一起,它绝对不是我们最终的归宿,它只是一个过渡品。 XHtml标准的建立初衷,其实也就是为了向XML过渡的,XML+XSLT+CSS才真正做到数据、结构、表现的完美分离,才是我们的终极目标。 诚然,XML+XSLT确实有其技术难度,我想这是它难于普及的最大障碍所在,但我觉得随着时间的推移、观念的更新、工具的发展,这仍旧是我们必会到达的一站。 阅读全文
posted @ 2009-05-21 01:57 斯克迪亚 阅读(10194) 评论(65) 推荐(4) 编辑
发送内嵌图片邮件的正确方法
摘要:很多企业发出的邮件都是图文并茂的,其中有部分是在邮件中引用网上的图片网址,更专业些的方法是直接在邮件中通过内联附件内嵌图片,这个功能可以由一些邮件客户端程序实现,那么我们怎么在.Net中实现这一功能呢? 搜索了一下,找到了一位台湾程序员分享的方法,但这个方法经我验证是错误的,其他就没找到什么有用的资料了。 经过尝试,我找到了正确的方法,而且非常简单。 阅读全文
posted @ 2009-05-11 03:47 斯克迪亚 阅读(17536) 评论(19) 推荐(1) 编辑
CheckedListBox扩展方法代码
摘要:该扩展提供了控制、加载、导出CheckedListBox选定状态的一些实用方法。 阅读全文
posted @ 2009-05-05 17:36 斯克迪亚 阅读(1326) 评论(2) 推荐(0) 编辑
WebBrowser控件使用技巧分享
摘要:在发布“淘宝登货员”时发现不少朋友对WebBrowser控件比较感兴趣,故在此分享一下使用心得。 首先分享一个WebBrowser的扩展类(此类所需的dll将在文章末尾提供下载),大家最好都使用这个类来替代.Net框架中的WebBrowser类,它提供了两个扩展功能... 阅读全文
posted @ 2009-04-23 00:16 斯克迪亚 阅读(32498) 评论(44) 推荐(5) 编辑
适用于WinForm的一个定时器类
摘要:尽管.Net已经提供了3个Timer,我仍然要自己利用BackgroundWorker组件封装这么一个定时器来使用。 主要原因是System.Windows.Forms以及System.Threading.Timer的Timer同时运行多个的时候会产生令人发狂的错乱,停止其中一个Timer的时候,可能会引发其他Timer注册的事件,对此类灵异事件,查遍互联网后只在MSDN发现了这么一段说明: 由于所有 Timer 组件都在主应用程序线程上操作,所以在 Windows 窗体应用程序中的任意 Timer 上调用 Stop 都可以导致来自应用程序中其他 Timer 组件的消息被立即处理。如果有两个 Timer 组件,分别设置为 700 毫秒和 500 毫秒,并且从第一个 Timer 调用 Stop,则应用程序可能首先接收第二个组件的事件回调。如果这证明有问题,请考虑转为使用 System.Threading 命名空间中的 Timer 类。 而System.Threading.Timer的Timer又让我感到非常晦涩难用,所以就造了一个山寨版的定 阅读全文
posted @ 2009-04-12 21:38 斯克迪亚 阅读(6130) 评论(9) 推荐(1) 编辑
淘宝登货员 1.031
摘要:新功能加入: 此次更新加入了商品发布时间设定功能,可以将商品随机安排在指定天数内的指定时段中发布,这样即使在半夜录入商品,也能等到流量高峰时段发布了。 此功能的原理是根据用户的设定,程序随机生成一个符合用户要求的发布时间,提交到商品信息中。 错误修正: 填写按钮在填写操作执行期间会变为不可用状态,防止连续点击引发线程异常。 阅读全文
posted @ 2009-04-02 05:26 斯克迪亚 阅读(1418) 评论(29) 推荐(1) 编辑
淘宝登货员1.02(重要升级)
摘要:此次升级主要为了解决上图所示的“品牌”设置问题,此前的版本通过自定义项设置该项是无效的,本次的改动如下: * 更改了自定义项中设定的下拉列表的触发方式 * 为自定义项增加了延时执行的选项 阅读全文
posted @ 2009-04-01 07:27 斯克迪亚 阅读(1096) 评论(7) 推荐(0) 编辑
淘宝助手 替代品!【淘宝登货员】研发中
摘要:我是珠宝商,也是程序员,很稀有的搭配吧,嘿嘿 N年前我注册了帐号,就拿淘宝助手发商品,结果使用起来非常痛苦,放弃~。 前几天重归淘宝,再用淘宝助手发布商品,用了一天还是感觉太难用了,跟几年前没什么变化嘛~,还经常出BUG,实在无法忍受—_—~~ 然后就决定自己做一款软件来实现商品登录,提高效率,于是就有了“淘宝登货员”。 与淘宝助手的定位不同,淘宝登货员不是进行批量管理的软件,而是只专注于登货部分,尽心竭力地提高商家登录货品的速度。 阅读全文
posted @ 2009-03-25 00:33 斯克迪亚 阅读(2188) 评论(14) 推荐(0) 编辑
改进的脏话审查方案
摘要:我经常光顾cnbeta,那里的评论很精辟,有时我也会忍不住评上两句,但近来突然发现发布评论都必须经过审核才会显示了,这让我感到非常扫兴。由此我又想起了此前我曾讨论过的“非法内容核查方法”,我想这种人机结合的审核方式应该会比较适合现在的cnbeta吧。 而现在我已经对此方案有了更深、更好的思路了,想在此分享出来,和大家探讨一下,我将在此逐步解析整个审查的流程。 这个经过改进的方案兼顾了性能与灵活性:只进行一次全文扫描;使用正则表达式进行语段匹配。预计稍加优化,并加入缓存机制的话,常规文章的审核耗时不会超过半秒。 阅读全文
posted @ 2009-03-16 04:29 斯克迪亚 阅读(4704) 评论(27) 推荐(0) 编辑
用图片做网站输入验证的构想
摘要:我们现在使用的验证手段都是以验证码为主,让用户根据图片输入验证字符,这种方法的安全度尚可,但会给用户带来一些不便和困扰,比如这个雅虎的验证码安全度很高,机器和人都无法正确识别了。 其实要让人看得懂、机器看得晕,只要拿出我们人类的强项就可以了啊——影像识别,试想用图片来做验证是不是会很好呢? 用户进行验证时的操作很简单,只需点选图像所属的类别就可以了,还可以顺道欣赏一下图片,很是惬意;而机器急大了头也很难理解图片的内容吧?... 阅读全文
posted @ 2009-02-02 02:19 斯克迪亚 阅读(4100) 评论(41) 推荐(0) 编辑
从今开始,让网站用Email地址登录
摘要:现今,很多Web2.0网站都使用Email地址作为登录用户名,其有如下优点: 1. 不易重复。用户名经常会重复,导致用户不得不在多个网站之间使用多种不同的用户名,不易记忆和管理;而Email地址具有唯一性。 2. 易于记忆。用户常用的Email地址一般不会超过三个,所以即使忘记了是哪一个,也能很快试出来。 3. 不易被破解。用户名在网站中通常都是对所有人可见的,这就会导致一些别有用心的人关注某个特定用户,骗取或暴力破解其账户;而Email地址在网站中通常都是保密的,在不知道某人的Email地址之前,破解就无从谈起,极大地提高了账户安全性。 ... 阅读全文
posted @ 2008-12-02 19:26 斯克迪亚 阅读(4661) 评论(25) 推荐(0) 编辑
学柯南,用电脑拨电话!
摘要:在柯南的剧场版《战栗的乐谱》之中,柯南通过唱出特定频率的声音来模拟电话的按键音,从而由远处拨通了报警电话。我看字幕上写着“切实可行”,便对此产生了兴趣。 我想我们完全可以用编程来实现一个电脑拨号键盘,通过按键从音箱中发出对应的电话按键音,传入电话听筒实现拨号。 也许这样只会对电话键盘进水的人有用吧(比如我-_-#),但是进一步,我们还可以实现通过电脑管理一个常用电话薄,然后通过便捷的关键字过滤查找电话(比如输入“王”、“微软”、“136”等字符串,快速过滤掉不含关键字的联系人),并呼出,相信没有哪个电话机会比电脑的管理功能更强大吧。 还可以为OutLook写一个插件,来实现对联系人的拨叫。 阅读全文
posted @ 2008-11-17 19:19 斯克迪亚 阅读(12900) 评论(65) 推荐(2) 编辑
细说Asp.net的IP地址屏蔽功能设计
摘要:出于安全考虑,几乎每个动态网站都具备IP地址屏蔽功能,而网上流传的很多关于该功能的教程大都采用字符串保存和验证IP地址,我认为这是不太科学的,我试图找到最佳的设计方案。 “IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。” 由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。 那么如何将IP地址转为整数呢?我们看到IPAddress类中有一个“[否决的]”实例属性Address,这个属性的确可以返回一个long值,但是测试一下,得到的数据确实这样的:... 阅读全文
posted @ 2008-11-05 05:58 斯克迪亚 阅读(8708) 评论(28) 推荐(5) 编辑
较为周全的Asp.net提交验证方案(Session版)
摘要:此前我介绍了使用数据库实现的提交验证方案,一些朋友怀疑其效率不佳,认为Session是更好的方案。 的确使用Session也不会消耗太多内存,而且如今内存白菜价,最不济就随手买个2G的插上也就够了,所以我将在此写下Session版的实现提要,其余细节参考前篇。 实现方案简述: 在Session中存储一个哈希表用以记录该用户的每一条验证信息,哈希表的键为验证信息的过期时间,值为验证码的明文。 过期时间使用ViewState存储,以发给客户端,并在提交时获取,以读取对应的验证码明文。 ... 阅读全文
posted @ 2008-10-21 17:03 斯克迪亚 阅读(5642) 评论(34) 推荐(1) 编辑
较为周全的Asp.net提交验证方案 (下)
摘要:下面要对这个生成的“提交验证”类进行功能扩展,通过.Net的“部分类”或“扩展方法”技术都可以轻松实现,这里采用的是“部分类”技术: ... 引用生成的ADO.NET Entity Framework数据模型的命名空间,且声明为部分类。 书写静态构造函数及一个静态属性: ... 阅读全文
posted @ 2008-10-14 03:00 斯克迪亚 阅读(3291) 评论(16) 推荐(0) 编辑
较为周全的Asp.net提交验证方案 (上)
摘要:以前在学习Asp.net时备受困扰的就是提交验证这块,网上流行的关于图片验证的教程大都存在很多问题,比如: 验证码存储在页面代码或Cookies里,暴露给客户端; 通过Session存储的验证码,虽然解决了安全问题,但一个用户只使用一个变量存储验证码,假如用户同时打开一个以上的页面,分别提交的话,就无法正常使用了; 验证码不会过期,这会留下隐患,使暴力破解变得可行(当然也可以通过刷新间隔、提交间隔、黑名单等手段加以控制); 此外还有伴随着提交产生的另一个问题——重复提交。 为解决上述问题,我曾走过不少弯路,后来总结出了一个方案可以很好的解决这些问题,本文将结合ADO.NET Entity Framework技术来介绍此方案。 阅读全文
posted @ 2008-10-13 03:02 斯克迪亚 阅读(3263) 评论(8) 推荐(0) 编辑
在Web.Config中指定页面的基类
摘要:为网站设置统一的页面基类绝对是一个好习惯,可以在基类中完成很多统一的读写处理和行为封装,比如实现防刷新机制、IP屏蔽等功能。 在Web.Config文件中,可以通过指定system.web中的pages节点的pageBaseType属性指定页面的基类: ... 但这个属性的概念比较模糊,我曾以为此属性会使新建页面的模板发生变化,使它们直接继承你所设定的基类,但不是这样的。 首先此属性会使所有不包含后台代码的独立Aspx页面自动继承于此基类,如这样声明的页面: ... 阅读全文
posted @ 2008-10-11 23:43 斯克迪亚 阅读(3594) 评论(19) 推荐(1) 编辑
一处 ADO.NET Entity Framework 的逻辑BUG
摘要:这几天开始接触ADO.NET Entity Framework,突然发现一处奇怪的BUG。 ... ... 也就是说先前在属性面板设置的命名空间根本就是无效的,它只会以目录名作为命名空间名称,我认为这不合乎逻辑。 而假如直接将模型放入App_Code目录下,命名空间属性就可以正常生效。 阅读全文
posted @ 2008-10-11 14:50 斯克迪亚 阅读(1306) 评论(4) 推荐(0) 编辑
在后台代码中引入XAML的方法
摘要:load XAML本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象。 这些是我在编写RegeX时获得的经验,它们将会给WPF程序带来更多的灵活性。 动态加载XAML文件技术非常适合用于资源载入,以此来实现语言切换、主题变换等功能。 动态转换XAML字符串为WPF对象技术可为程序提供更为灵活的对象生成方式,这在一些复杂的情况下尤为实用。 阅读全文
posted @ 2008-09-30 05:04 斯克迪亚 阅读(4161) 评论(6) 推荐(1) 编辑