阿不

潜水

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

摘要: 前一段时间,需要经常用到贷款计算器的功能,这样有利于我们做出更好的决策。但是我们只能通过银行的工作人员的计算器来计算,给我带来了极大的不便和损失,由此便萌生了开发一个Windows phone7版的贷款计算器的功能。 此计算器目前的最新版本为:1.1.0.0,具有房贷计算器,2011个税计算器,存款利息计算器的功能: 房贷计算器:根据不同的贷款类型(商业,公积金,组合贷款),选择不同的还款方式(等额本息,等额本金),计算不同的贷款金额以年限的条件下,需要支出的月供情况情况 ,包括每期的月供明细。以供购房者选择合适的贷款方式提供参考。 个税计算器:根据2011年新版的个人所得税条例,计算公民.. 阅读全文
posted @ 2011-09-28 12:30 阿不 阅读(2851) 评论(11) 推荐(4) 编辑

摘要: 眨眼间,离上次公布LumaQQ.NET 2008 预览又过去了半个多月的时间。有消息称,QQ2008协议即将过期,即使如此,我还是希望能完成当前版本的既定功能。今天我很高兴的正式公布LumaQQ.NET 2008的最新版本,这个版本已经基本上一个版本所具有的全部功能,包括: 登录管理 消息管理 好友管理 群操作 这些功能的API基本都基本与上一个版本没有大的差别。这个版本最大的变化在于登录... 阅读全文
posted @ 2010-07-12 23:05 阿不 阅读(10429) 评论(55) 推荐(16) 编辑

摘要: 这是一个读取纯真IP数据库的公用组件接口,我是通过luma的《纯真IP数据库格式详解》了解了纯真IP数据库数据格式,并且基于网络上的一个IPLocation.dll源码的基础改编而来。我为什么要改编这个组件呢?因为我看到这个组件在使用过程中,每次都要打开文件流,并且整个接口使用静态的属性。并不适合Web环境下,多线程并发查询的需求,并且在性能上也不是最优。有了luma的格式详解,和现有的IPLocation.dll的源码,使我的工作变得异常的简单。出现的一个小错误,也是经过一次调试后就解决了。性能较IPLocation.dll也有较大的提高,虽然只有短短的几百行代码,虽然网上也有很多类似的代码 阅读全文
posted @ 2008-06-19 20:25 阿不 阅读(13136) 评论(42) 推荐(5) 编辑

摘要: 版权声明:该开源开发包,是基于LumaQQ的基于等价移植到.NET平台下,开发者不直接参与QQ协议的分析工作,移植到.NET平台纯粹是为了方便广大.NET开发者学习和研究之用,并且没有产生任何直接的经济效益,并且纯粹是个人的技术学习研究行为,与本人所在单位没有任何关系。此开发包的用户在使用过程产生的效益和涉及的法律责任与本人没有直接关系。如果影响到您或您的公司利益,敬请谅解并且与我联系,本人会第一时间作出处理。本系列章首发且单发于博客园,由于各种原因不欢迎转载本系列文章,如果您转载了该系列文章请自行承担责任并且转载完整版本,包括版权声明。 在一个多月以前,当我一直在找.NET下的开源QQ开发包 阅读全文
posted @ 2008-03-11 19:31 阿不 阅读(24611) 评论(185) 推荐(0) 编辑

摘要: 最近使用DotMSN开发MSN机器人,由于使用的是代理上网,在使用中发现虽然DotMSN支持代理,但是好像是支持的不够彻底,使用Socks5代理只能登录,并不能发送消息。检查了代码,发现在发送信息的SocketClient并没有使用指定的代理服务器。这个版本修复了这个问题,并且通过代理已经可以正常使用DotMSN的各项功能。 另外,DotMSN 2.0.2中在登录后在XihSolutions.DotMSN.NSMessageHandler.OnILNReceived(NSMessage message)会出现Error:Value was either too large or too sma 阅读全文
posted @ 2008-01-07 17:42 阿不 阅读(3767) 评论(31) 推荐(1) 编辑

摘要: 在Teddy 的博客《NBearMapping - 开源通用对象映射组件v1.0.0.2 beta - 支持枚举类型字段》,介绍了NBear 的一些功能。由于这将是NBearV4中的一个基础组件,所以对性能的要求比较严格。原先的性能相对还是比较难以满足要求,在此基础框架思路下,经过近一段时间的开发,终于完成了NBearMapping新版本的开发,这个版本的主要功能仍然不变,在此基础上新增了: 1、对配置语法的支持。 2、简化了使用接口。 3、重新设计了映射实现,支持不同字段类型的自动转换,同时具备了非常高的性能。性能与手工代码相比不会有大的损失,在相同字段类型映射时,性能与手工代码相当(有时的 阅读全文
posted @ 2007-12-15 20:12 阿不 阅读(5286) 评论(22) 推荐(0) 编辑

2015年1月9日

摘要: 太久没有在博客园写博客了,纠结了几次,原本不想陷入感性思维之中。人一旦感性了,就容易说出格的话,写有争议的东西。可正值工作10年和马上要开始的新的职业生涯,还是觉得有必要给自己来一个流水账是的书面总结。因为文笔一直不好,所以说是流水账式的。 2014是我工作的第10个年头,这是一个有纪念和转折意义的... 阅读全文
posted @ 2015-01-09 11:58 阿不 阅读(1840) 评论(11) 推荐(10) 编辑

2011年6月27日

摘要: 从基于.NET Framework迁移到Mono平台,除了经常会遇到大小写敏感的问题之外,还会经常遇到一些平台不兼容性的问题,这也是我的经历当中,遇到的另一个比较麻烦的问题。其实关于Mono平台的兼容性,在官方的文档中已经释放了比较明确的信息,他们就明确的一句话来描述Mono的兼容性:“Everything in .NET 4.0 except WPF, EntityFramework and W... 阅读全文
posted @ 2011-06-27 07:32 阿不 阅读(5477) 评论(13) 推荐(5) 编辑

2011年6月15日

摘要: 在Linux/Unix系统中,对任何文件路径,文件名,URL地址的处理都是大小写敏感。对于这点设计,让我们长期从事基于Windows平台开发和工作的开发人员情何以堪啊。尽管可能这样设计是有它的特殊目的和出发点,但我直到现在仍然认为这点是一个非常蛋疼的设计。我试图找到一些理由来解释Linux为什么处理这些字符串使用大小写敏感,但是得到的答案都是一些无关痛痒的理由: 大小写敏感后,可以用更短的文件名来表示更多的文件。比如a.txt和A.txt它们是不是一样的文件,但是大小写不敏感后,它们只能表示同一个文件。 大小写敏感,让字符串(文件名)更容易排序。 Linux是用C语言写的,在C语言里面,字符串 阅读全文
posted @ 2011-06-15 23:27 阿不 阅读(4312) 评论(30) 推荐(5) 编辑

2011年5月31日

摘要: 前言 话说Mono是一个非常有意思的平台,它提供了对.NET程序的跨平台迁移的可能性,它是一种看上去可以粉碎诟病者对.NET平台软件不具跨平台性质疑的技术。我非常喜欢.NET平台,同时我也非常希望它具... 阅读全文
posted @ 2011-05-31 21:13 阿不 阅读(6180) 评论(18) 推荐(7) 编辑

2011年2月20日

摘要: Mono 2.10支持MVC3和Razor的消息着实让我兴奋了好一会儿,因为支持MVC3后,我就有可能做Kooboo CMS3兼容Mono的相关测试工作。可是没一会儿,我就发现,离我的目标还是有一点距离。不晓得是Mono 2.10本身存在的bug,还是我的原因,我总是无法很完美的在Mono运行起MVC3的站点,即使是用默认的MVC3站点模板创建的非常简单的站点也是一样。长期生活在微软Windows/.NET平台的滋润环境中,没有Linux平台的使用经验和基于配置文件的Web部署习惯,让我花了不少的时间来解决原本很简单的问题的。从使用XSP失败,到折腾Windows下使用Nginx+FastCG 阅读全文
posted @ 2011-02-20 16:45 阿不 阅读(9184) 评论(14) 推荐(4) 编辑

摘要: 续上篇介绍Mono在Window下的部署,对于我而言,相比于Windows平台下的部署,Linux平台下的部署挑战性会更大一点。从来没有Linux使用经验的我,要在Linux下部署Mono,遇到的不仅仅是Mono部署的问题,还有各种Linux操作的问题。我是使用的从Mono官方下载的安全配置好的虚拟机,安装方面的问题就可以暂时先跳过去,不过这里还是要先总结一下,先熟悉一下的几个常用的openSUSE操作。 1)配置网卡,进行文件管理都需要超级用户(su)密码,官方下载的虚拟机,su密码是:mono。刚开始不知道,还是小小的折腾了一会儿。其实,访问http://localhost 的默认首页就有 阅读全文
posted @ 2011-02-20 16:43 阿不 阅读(7284) 评论(29) 推荐(2) 编辑

2011年2月12日

摘要: 中国人的年,是以春节为准的。春节过后,才真的算是一年的结束,新的一年的开始。而今天已经是2011年2月12日了,现在看着2010的字眼,总是觉得那么遥远,第一感觉就像是过了好几年似的。今天原本是周末,不过按国家规定,今天还是一个工作日。不过前几天的忙碌结束以后,今天还算终于事情比较少一点。早上折腾了手机之后,下午也需要好好思考一下未来的工作安排了。 原本没想写这个2010年总结了,但是看着别人的总结,再看看自己过去曾经所写的总结。怎么看,虽然都是流水帐似的,但还是很有意义。通过这样的记录,至少能让我知道过去的一年都做了一些什么样的事情,在技术和认识上都有什么新的变化。几年下来,当然我们再将这些 阅读全文
posted @ 2011-02-12 16:26 阿不 阅读(2217) 评论(6) 推荐(4) 编辑

2011年1月15日

摘要: 手头没有电脑,只有一部低端的Android手机。而且有比较长的空闲时间,突发奇想用这个仅有的互联网设备来发一篇博文吧,也算赶一下潮流吧。话说最近的热点就是微博了,做为一名互联网的从业者,我也很早就有了twitter账户了,但是每天FQ我也没那个体力,加上交友圈的问题,那并不是个适合我的场所。国内很早也有了类似的网站,但是由于外力的因素没有存活下来,否则说不定没有新浪微博什么事了。新浪的微博是目前中国最成功的微博社区(没有之一),即使是我现在使用的腾讯微博规模也不去他。个人总结中国模式的微博,一个是监管,另一个是名人效应。微博虽然在国内已经很火了,按中国网民的惯例,已经有一个专有名词来形容这么一 阅读全文
posted @ 2011-01-15 02:10 阿不 阅读(1497) 评论(2) 推荐(0) 编辑

2011年1月13日

摘要: 在我的这篇博文中,有这么一段话:“我一直在想,有没有办法可以单独限制View中的代码的访问权限,类似于trust level,只是这个trust level是用来限制模板中的代码。”。有读者johngeng问,为什么要用trust level来锁住view,他不是很理解。我的本意是,希望在view中,开发人员只能写某一些特定功能的代码,调用某一些特定开放的API,对于大部分安全级比较高的代码,比如读写文件等API或类库,不允许在view当中使用。这对于我们将模板开放出来,在线提供给我们的用户去修改的需求下是非常重要的。而目前,不管WebForm还是Razor,都是非常自由的模板,在View能做 阅读全文
posted @ 2011-01-13 23:37 阿不 阅读(6791) 评论(9) 推荐(4) 编辑

2010年12月25日

摘要: 看到haack的这篇文章《ASP.NET MVC 3 Extensionless URLs on IIS 6》,我才知道在IIS6的环境下运行ASP.NET4.0程序,我们已经可以原生的支持没有后续名(扩展名)的URL请求,而不需要再做通配符映射,这对我们在IIS6部署ASP.NET MVC站点来说,相当的重要。 在以前,我们要让ASP.NET MVC程序可以正常工作在IIS6上面,要么在我们的程序路由中添加*.mvc(或其它任意后缀),并且在部署时添加isapi映射规则,把*.mvc映射到aspnet_isapi.dll,让他交由ASP.NET处理程序进行处理,但一般情况下,这种做法我们都不 阅读全文
posted @ 2010-12-25 23:36 阿不 阅读(5035) 评论(10) 推荐(4) 编辑

2010年12月16日

摘要: 原本没有这篇博客,直到看到ScottGu的这篇文章ASP.NET MVC 3: Razor’s @: and text syntax。我才决定,把我这几天对MVC3和Razor的一些观点记录一下。 关于Razor 因为最近我身边的朋友和博客的博友,似乎对MVC3和Razor没有什么好感,甚至于认为微软开发Razor是走在另一条错误的路上。虽然我也没有在项目中实际用到Razor,但是一直以来都还是挺关注Razor的进展,对它的语法也是了解一二,总体感觉就是更为干净和流畅了,其它的并没有更深的认识。晚上在看ScottGu文章的时候,一段代码片段立即吸引了我: 你知道这段代码哪里吸引了我吗?没 阅读全文
posted @ 2010-12-16 23:58 阿不 阅读(14365) 评论(40) 推荐(14) 编辑

2010年12月12日

摘要: @重典童鞋前几天就在说ASP.NET MVC3 RC2已经发布了,我赶紧上网去找发布消息,没有相关的发布消息,回过头才知道是只对部分订阅用户开发下载。不过按这个时间点来看,对外发布也已经不远了,果然在周五的时候,Scottgu按照惯例在它的博客上正式发表一个发布公告以及相关的Releas Notes细节,Announcing ASP.NET MVC 3 (Release Candidate 2),同时它还简单的介绍了刚刚发布的VS2010 beta1对MVC3的影响,其实也只是说明一下MVC3可以工作在VS2010和VS2010 Beta1环境下。 老早以前就对MVC3虎视眈眈了,但是由于现在 阅读全文
posted @ 2010-12-12 20:38 阿不 阅读(4778) 评论(20) 推荐(3) 编辑

2010年12月5日

摘要: 一个比较顺手的开发框架,我们都希望开发人员不要去太关心异常的处理,除了一个特定异常需要特定处理外,我们都希望我们很多普通的异常都能由框架来帮我们搞定。比如异常的日志记录,异常信息的提示,异常的进一步分类的判断等等,我们都不希望开发人员去使用相同或类似的代码去完成。简单来讲,我们不希望我们的代码中出现太多的try…catch 代码。如果在一个项目中,频繁出现try…catch的代码块,一方面代码不太优雅,另一方面也会给我们的代码编码带来一定的障碍,由于变量作用域(try和catch属于不同的代码块)的问题,我们很多时候不得不把变量定义在try…catch之外的代码块当中。因此,在很多业务逻辑的代 阅读全文
posted @ 2010-12-05 15:12 阿不 阅读(5744) 评论(61) 推荐(8) 编辑

2010年11月7日

摘要: 我们知道DataAnnotations是一个通用的数据模型元数据定义框架,其中最主要的部分是验证框架的定义。DataAnnotations可用户.NET平台的任何应用框架,但我们的项目中都是借助MVC来使用DataAnnotations。在MVC框架中,还对DataAnnotations进行了很多的扩展和适配:比如需要根据定义的DataAnnotations,生成客户端的验证;在Controller模型中绑定模型对数据进行有效性验证等等。我们的数据模型如果都是通过MVC入口,用户输入有的有效性验证的工作都可以交给MVC框架和DataAnnotations来完成。在我们的实践中,这样确实给我们带 阅读全文
posted @ 2010-11-07 20:05 阿不 阅读(5457) 评论(8) 推荐(4) 编辑

2010年10月24日

摘要: 前因 使用ASP.NET MVC时,我们必不可少的要与Attribute打交道,利用Attribute来做元数据的定义是一种非常老套的方法,但是相对于其方便快捷以及低廉的维护成本,还是在MVC框架中得到了充分的运用,主要是用于定义ModelMetadata。在现在的开发框架中,Attribute处理一个非常重要的地位。但是在使用Attribute过程,还是重复遇到了几回相同的问题,但由于缺少记录,... 阅读全文
posted @ 2010-10-24 14:59 阿不 阅读(5123) 评论(10) 推荐(4) 编辑

2010年10月10日

摘要: 在LINQ2SQL和Entity Framework中都有类似的DataContext对象,它是整个数据映射的载体和数据操作的入口。DataContext是一个标准的Unity of Work的实现,它可以保证在一个DataContext上下文的多个数据操作,保持事务的原子性。DataContext还具有数据容器的性质,维护了所有操作数据的状态,它会跟踪您对所有检索到的实体所做的更改,并且保留一个“标识缓存”,该缓存确保使用同一对象实例表示多次检索到的实体。即使是LINQ2SQL和Entity Framework还有很多的不同,但是DataContext的行为都基本差不多。 DataConte 阅读全文
posted @ 2010-10-10 13:03 阿不 阅读(5219) 评论(19) 推荐(3) 编辑

2010年10月8日

摘要: 很多时候,我们程序需要在后台线程定时执行一些任务,比如定时发送邮件。简单点,我们可以自己创建一个Timer对象来定时,通过定制它的回调事件来完成具体业务需求。对于比较复杂的业务要求,稳定性要求比较高,我们可以使用一些开源框架,比如Quartz.NET创建Windows Service的方式来执行定时任务。 虽然单独的Windows Service具体有稳定性较好等特点,Quartz.NET也可以满... 阅读全文
posted @ 2010-10-08 23:12 阿不 阅读(4732) 评论(7) 推荐(3) 编辑

2010年9月18日

摘要: 我们时常会为某一种具有相同的类(基类)或接口定义泛型的扩展方法,此时我们只需要在泛型扩展方法上加上泛型约束后,编译器在使用该类的派生类时就会自动筛选出可用的扩展方法。如下的定义:此时我们为Interface1定义一个扩展方法如下: 这很好,泛型的约束很好的表达了我们的意图。这个约束这时候能很好的避免这个扩展方法污染到其它类型的对象。接下来,当我们希望为再为其它的类型或接口定义相同的扩展方法时,有兴... 阅读全文
posted @ 2010-09-18 23:08 阿不 阅读(2455) 评论(12) 推荐(0) 编辑

2010年9月5日

摘要: T4模板Visual Studio IDE的应用越来越多,现在在VS中,只要与代码生成相关的场景,我们都可以通过修改 T4模板来自定义生成格式,比如MVC的视图模板,Entity Framwork的DataContext模板等等。同时我们还可以自己创建T4模板文件(.tt),使用C#(VB)语法来编写T4模板,它的语法与ASP.NET的语法非常类似,大大降低了.NET程序员的学习成本,关于T4的模... 阅读全文
posted @ 2010-09-05 13:28 阿不 阅读(7589) 评论(15) 推荐(4) 编辑

2010年8月28日

摘要: ASP.NET WebForm最重要的特性之一就是它的界面元素的组件化,简单的输入控件就不必多说,特别是那些类似于Repeater,GridView这样的模板控件,真的给开发人员带来了极大的方便。而在ASP.NET MVC的视图中,虽然技术上我们仍然可以使用这WebForm的Server Control,但是从理念上,我们是必须要完全避免这种情况的发生。很多习惯WebForm开发模式的开发人员,除了不习惯没有Postback外,可能最大的抱怨就是MVC的表单开发方式。在大部分情况,他们需要自己完全去控件HTML标签。在显示数据列表时,需要通过foreach控制数据的输出,当有一些特殊的输出控制 阅读全文
posted @ 2010-08-28 16:33 阿不 阅读(4829) 评论(6) 推荐(0) 编辑

2010年8月21日

摘要: ASP.NET 4.0在很多方面都做了改进,在这篇ASP.NET 4.0白皮书就描述了很多ASP.NET 4.0的机制改变和改进。在我的博客中,也有几篇关于ASP.NET4.0的特性修改的文章。但是作为一个全新的框架和运行时,内部肯定还会有很多API和扩展点不会暴露的那么明显。比如今天从这篇文章Three Hidden Extensibility Gems in ASP.NET 4的介绍中,我又了... 阅读全文
posted @ 2010-08-21 23:19 阿不 阅读(3339) 评论(6) 推荐(4) 编辑

2010年8月8日

摘要: 1. 网友@Miser反馈他在获取好友列表的时候,好友昵称出现了乱码,并且QQ号码也不正确。今天调试了好久,发现在读取好友【属性】信息的协议发生了改变,原来的4位整型改为了8位的长整型。将QQFriend.cs这个文件的最后一段代码:改为:好友信息即可正常读取。2. 网友@江诚 来邮件说,他使用高级搜索的功能不能正常使用。今天检查了一下,发现原来的代码漏掉了高级搜索这个API,现已添加进来:我估计... 阅读全文
posted @ 2010-08-08 14:06 阿不 阅读(2380) 评论(19) 推荐(0) 编辑

2010年7月27日

摘要: 在MVC的Model中,我们可以定义很多与视图相关的元数据,这些元数据对我们开发视图起着相当重要的作用,特别是在数据验证方面。这些元数据一般情况下我们是不会定义在业务实体(或持久化实体)上面,所以很多情况下,我们会需要开发两种实体:View Model和Business Model。这样就造成,在Action与View的沟通当中,我们需要使用View Model,然后在业务逻辑处理时,我们需要再将View Model映射到Business Model,这将会使我们的开发框架变得繁琐。因为一般情况下,View Model和Business Model在很多情况下,都是很雷同的对象,只是View 阅读全文
posted @ 2010-07-27 20:26 阿不 阅读(4508) 评论(21) 推荐(4) 编辑

2010年7月26日

摘要: 在ASP.NET MVC2中,我们经常这样来写表单模板:由于DataAnnotations的存在,我们完全可以把字段的视图元数据全部都在Model中设计好,那么开发编辑视图就变得非常的简单,可能只是对应Model的字段,一行一行的去写Html.EditorFor ,这是一种重复而枯燥的工作。因此我想到,写一个VS扩展,在HTML编辑器的右键菜单中添加一个命令,点一下就可以根据当前的Model的类型... 阅读全文
posted @ 2010-07-26 13:39 阿不 阅读(3891) 评论(5) 推荐(2) 编辑