摘要:
我们没有使用TDD,所以单元测试最麻烦的就是准备测试的基础数据。我们现在是使用内存仓储来做单元测试,要为每个仓储都构造基础数据,非常麻烦。
前几天看xunit的源码,看到AutoRollbackAttribute这个特性,异常的兴奋 ^_^。怎么就忘了用事务的自动回滚呢?
AutorollbackAttribute使用了.Net Framework自带的TransactionScope。TransactionScope在.NET 2.0中就已经有了,可用于分布式事务。用这种方法来做数据的自动回滚也有一些不足:
1、数据库要支持事务。
2、内部数据库操作的逻辑里没有事务的实现。
很庆幸的是我们的项目正好都满足上面的2点,唯一不足的就是mongodb不支持事务。所以就需要混合仓储实现了,事务数据库使用真实的仓储,mongodb使用内存仓储。 阅读全文
摘要:
WEB项目中除了单元测试,还经常需要多线程测试一个方法是否存在并发问题,或者是否有性能问题。每次都要写测试代码总是一件很累的事情。于是写了这一个多线程测试的类库,用来进行快速的多线程并发测试。 阅读全文
摘要:
上个月公司项目需要,在腾讯社区开放平台部署了基于mono的腾讯校友应用“公务员考试”。经过一周的观察,发现问题非常大。
2月18日到2月24日的平均值在70.91%。而2月23日-3月1日平均值在76.61%。占用的CPU非常高。在访问用户数不高的情况下,单是MONO的守护进程就占用了75.0%的CPU。
生产环境上是用Apache+mod_mono来做WEB站的,总的来看,对于WEB负载,MONO的情况并不理想。 阅读全文
摘要:
随着公司项目的进一步推广,用户数量的增加,已经面临着单台服务器不能负载的问题。这次的优化由于时间关系主要分两步走,首先优化应用层代码以提高单台服务器的负载和吞吐率。之后再进行分表,引入队列、MemCached等分布式应用。任何一个优化都要针对已经存在的问题,从服务器监控的报表可以看到我们这个网站应用服务器带宽压力、数据库服务器带宽压力都很大,应用服务器的CPU使用率不高,因此,主要的优化是对应用服务器带宽和数据库服务器的写入压力做的优化,因为目的很明确,效果也是比较明显的。 阅读全文
摘要:
继上篇文章《Mono的兼容性问题》之后,现在总结一下我在suse 10中部署mono环境遇到的一些问题及其处理办法。
腾讯社区开放平台提供的体验区的服务器环境是这样的:Linux version 2.6.16.60 (gcc version 4.1.2 20070115 (SUSE Linux))
这个Linux内核的版本号应该是SLES(SUSE Linux Enterprise Server 10 SP2)的操作系统。mono原来的版本号是1.2.2,而我们需要2.8.2的mono。腾讯的服务器是没有配置dns解析功能的,所以不能直接用yast2来通过更新源来升级mono;对于可以用yast2安装的,可以参考我的《在openSUSE中部署基于apache的mono环境》。而用rpm手工安装,太多的程序依赖处理起来很麻烦,只好用通过编译mono源码的方式来安装了。 阅读全文
摘要:
最近公司的一个项目因为要接入腾讯开放平台,需要转移到mono环境中,在做mono兼容性调整的时候遇到了一些问题,记录下来跟大家分享一下。
借助Moma的分析结果可以指导我们如何快速的调整mono的兼容性,但是这个分析结果也不完全正确,一些实现方式MoMA提示不兼容,但在mono中是可以正常使用的。
总的说来,mono整体的兼容性是非常不错的,在linux中跑起来很流畅,mono 2.8.2已经不再是玩具了。 阅读全文
摘要:
开发js组件的时间调试总是麻烦的,最常用的就是用alert或者debugger来测试js的运行状态。但这两种方式都有它的局限性,alert会有中断,有些时候alert出来的值并不可靠,闭包的时候用alert可能会得到不正确的值。debugger使用起来其实也挺纠结的,只有ie支持。所以最合理的方式是js把运行过程需要调试的值输出到页面,或者写到cookie也可以,这种方式不会有alert中断带来值不正确的问题,也不会受浏览器类型的限制,唯一纠结的是操作起来很麻烦。
于是,有了下面说的这个js组件。这个组件的实现参考了log4net组件的记录方式,我们利用这个js的logger组件,就可以用log的输出的方式来进行你的调试工作了。 阅读全文
摘要:
腾讯社区开放平台是基于QQ空间、朋友社区(QQ校友)两大社交网络的开放平台。至今官方提供了一系列的开放接口(Open API)和开发工具包(SDK),开发者可以通过Open API获取登录用户信息、用户签名信息以及好友关系链信息等。已上线的应用还可以调用支付和监控接口,实现支付功能,查看应用实时运维数据。
腾讯官方给出了不少的SDK,点这里进入官方地址。遗憾的是没有开放C#的SDK。
我们DotNet开发者不能落后其它平台的开发者,这里开源我的腾讯社区开放平台SDK。 阅读全文
摘要:
人的一生就是这样不断学习、沉淀、反思、感悟的过程。只是想要清楚自己什么时候应该想要什么真的很难。我想,无论什么时候,得意也好失意也罢,心态都至关重要。在心态修炼这方面,这一年确实有不少的提高,对人对事的看法也更加客观了。 阅读全文
摘要:
在TFS2010中集成代码审查,使用TeamReview插件将代码审核结果设置成工作项安排给团队成员调整。 阅读全文
摘要:
来自Alipay前端同仁已经为我们纠正了一些来自官方的错误,并重新整理成表,非常方便查阅。
我这儿就直接收藏了。
阅读全文
摘要:
我们在开发中我们常会在IE中遇到很多莫名的bug,尤其是老态龙钟的IE6浏览器。为了提高我们的开发效率,需要经常总结,整理工作中遇到的问题。我们在网络上找到的IE Bugs 资料是零散的。不过,在老外的 http://haslayout.net/css/ 网站上,他就系统的总结了IE的一些Bugs,分享一下。
目前,这个网站上包含了 46 个“普通的Bug” , 5个“布局方面的Bug” ,6 个“可以绕开的Bug” 以及 1 个“IE崩溃的Bug”,所有的这些Bug有58个指南和70个解决方法。 阅读全文
摘要:
前端学习笔记 阅读全文
摘要:
单例模式感觉是所有设计模式中最简单的模式了。
Ensure a class has only one instance and provide a global point of access to it.确保一个类只有一个实例,并提供一个全局访问入口。 阅读全文
摘要:
MongoDB是一款分布式文档数据库,支持类似关型数据库的主从结构,文档以二进制Json形式存储,无锁,无事务,有索引。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 阅读全文