twitter的snowflake实现还是很简单的,除去配置信息,核心代码就是毫秒级时间41位+机器ID 10位+毫秒内序列12位https://github.com/twitter/snowflake/blob/master/src/main/scala/com/twitter/service/snowflake/IdWorker.scala
山寨一个很容易,规模不大的话,也不需要专门的id生成服务器,各台机器自行生成id就好了。
posted @ 2011-06-29 10:51 buzzlight 阅读(193) 评论(0) 编辑

很详细的系列文章,解释了怎么在Asp.NetMVC中实现插件机制

 

原文在 ASP.NET MVC2 Plugin Architecture Tutorial Part

 

基本原理:1:实现自定义的VirtualPathProvider,从插件中加载资源,而不是从硬盘中搜索物理文件;2:实现自定义的ViewEngine。两者的基本原理在《Programming.Microsoft.ASP.NET.MVC》中解释的很详细。

posted @ 2010-09-28 15:09 buzzlight 阅读(389) 评论(0) 编辑

ccnet自带的vsts插件解析tfs的变更集输出用的是下面的正则表达式

Regex parser = new Regex(@"Changeset:[ \t](?<changenumber>[0-9]*)\r\nUser:[ \t](?<author>.*)\r\nDate:[ \t](?<date>.*)\r\n\r\nComment:(?<comment>(?:\r\n.*)*)\r\n\r\nItems:(?<items>(?:\r\n.*)*)\r\n\r\n");

 

但实际上tfs中文版的输出是这样的

变更集:

用户:

日期:
注释:

项:

 

解析起来就出问题了。

 

补充:有的环境tf.exe的输出会出现乱码,这是因为cc.net把编码hardcode为utf8了,可以设置processInfo的StreamEncoding来修改默认编码格式,例如:

processInfo.StreamEncoding = Encoding.GetEncoding("gb2312");

posted @ 2010-09-25 10:28 buzzlight 阅读(88) 评论(0) 编辑

ccnet 1.5发布一段时间了,今天将ccnet 1.44升级到了1.5

ccnet 1.5已经内置tfs插件,不用再另外下载ccnet.vsts.plugin.dll,升级时需要将这个插件删除,不然ccnet启动时会报错。

用ccnet内置的tfs插件访问tfs服务器会报权限错误,日志还可能有乱码,网上很多人问这个问题,最简单的方式是用有访问tfs权限的账户运行ccnet服务,并且将ccnet配置文件中配置的用户名密码去掉。另外一种方法是用ccnet 1.5新增的Impersonation配置节来模拟账号运行。


ccnet 1.5大大简化了dashboard的配置工作,原先需要修改dashboard.config来配置的功能现在通过Dashboard Administration管理工具来配置就可以了,之前各种reportplugin都可以从package列表中找到,鼠标点几下就能安装好,还有几种界面模板可以选择。

posted @ 2010-09-15 16:02 buzzlight 阅读(127) 评论(0) 编辑

一DynamicProxy已经整合到核心类库。

API的提供方式大幅改变,可读性更好,看来自己的很多API接口也应该考虑采用类似的方式。

增加了debug工具

全面支持:.Net 4.0、Silverlight 4、.NET 4.0 Client Profile

官方release说明

posted @ 2010-08-24 16:11 buzzlight 阅读(106) 评论(0) 编辑
摘要: 症状:A:不能创建数据库项目B:打开.sql文件报错The 'VSTS for Database Professionals Sql Server Data-tier Application' package did not load correctly.或者The 'RadLangSvc.Package, RadLangSvc.VS, Version=10.0.0.0, Culture=neut...阅读全文
posted @ 2010-08-23 13:35 buzzlight 阅读(606) 评论(1) 编辑
摘要: Socket Basic Concepts首先介绍Socket的一些基本概念 Socket是操作系统提供的一系列网络编程接口。 网络模型分若干层,也有一些协议,比如TCP协议,UDP协议等,这些都是抽象的定义,在硬件以及操作系统级别上有一些对应的实现,Socket可以看做操作系统为开发人员提供的一系列网络编程接口,它封装了一些协议的细节,比如怎么组织数据包,怎么发送数据之类的。 Socket编程的...阅读全文
posted @ 2010-06-30 17:02 buzzlight 阅读(7867) 评论(1) 编辑
摘要: 一些常用的验证脚本不会写js了,只能从网上找一些常用的验证脚本。// 手机号码验证jQuery.validator.addMethod("mobile", function(value, element) { var length = value.length; var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/ return this.op...阅读全文
posted @ 2010-06-30 15:07 buzzlight 阅读(1557) 评论(0) 编辑
摘要: 自定义错误消息的显示方式默认情况下,验证提示信息用label元素来显示, 并且会添加css class, 通过css可以很方便设置出错控件以及错误信息的显示方式。/* 输入控件验证出错*/form input.error { border:solid 1px red;}/* 验证错误提示信息*/form label.error{width: 200px;margin-left: 10px; co...阅读全文
posted @ 2010-06-30 15:06 buzzlight 阅读(1609) 评论(0) 编辑
posted @ 2010-06-30 15:05 buzzlight 阅读(1141) 评论(0) 编辑