还记得2002年9月18号,第一天到成都。

转眼之间,已经是2009年。

成都的生活即将告一段落。

posted @ 2009-06-30 00:56 Shiny Zhu 阅读(27) | 评论 (0)编辑

如果你调用一个启用了SSL的Web服务,你会收到如下错误:

"The underlying connection was closed: Could not establish trust relationship with remote server."

这是因为客户端没有接受服务端证书,在添加服务的时候,有个提示框出来让你确认证书,但是在程序调用时是没有办法去选择的,那么我们可以创建一个证书策略来解决这个问题。

System.Net.ICertificatePolicy接口定义了自定义证书验证策略,我们就实现这个接口,然后实现自己的CheckValidationResult方法就可以了。对了,没那么复杂的,看代码:

 

Code
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
 
public TrustAllCertificatePolicy()
 {}

 
public bool CheckValidationResult(ServicePoint sp,
  X509Certificate cert,WebRequest req, 
int problem)
 {
  
return true;
 }
}

 

对的,return true就可以了。

我们在创建Web Service的代理类实例前,创建我们自己的证书验证策略类就好了:

 

Code
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

 

然后再调用Web Service的方法就没有问题了。

from here.

posted @ 2009-03-06 14:56 Shiny Zhu 阅读(81) | 评论 (0)编辑

VisualSVN

VisualSVN Server是一个集成的svn服务端工具,并且包含mmc管理工具。是一款svn服务端不可多得的好工具。

visual svn server

今天遇到一个问题。

之前服务器上直接上的subversion,配置仓库和权限不方便,今天装上了VisualSVN Server,但是出现这么一个问题,客户端能正常check out,但是在check in的时候出错了

Server sent unexpected return value (403 Forbidden) in response to MKACTIVITY

服务端的日志也记录了错误:

Access denied: 'user' MKACTIVITY managerweb:
[client 192.168.1.103] 

这是为什么呢?

答案在这里。其实就一句话,注意大小写用户名、密码和仓库的URL都是大小写敏感的

Have fun.

posted @ 2009-03-06 14:19 Shiny Zhu 阅读(822) | 评论 (0)编辑
微软论坛2009全新奉献 全新打造技术自测系列活动
主打第一波Silverlight技术自测  一起学习Silverlight


亲爱的朋友,您好!

微软Silverlight是一种最新的RIA技术,简单易学。微软中文技术论坛Silverlight版开版一年,为回馈更多用户,现开展通过技术自测、我问 你答的活动,来帮助大家更深地了解Silverlight技术。为此,我们特地准备了《Silverlight2 导学》作为礼品,希望通过和微软论坛Silverlight版帮助你提高技术水平,结识更多技术朋友!

活动形式:我们提出一系列开放式问题,请您给出您的答案即可。

活动时间:3月5日—3月29日 (共计4周)

活动礼品:《Microsoft Silverlight2 导学》一本(感谢华章出版社奖品赞助)


 

如何参与
1、请点击题目,进入到问题贴里面。
2、到问题里面,进行回复
3、如果您的回复被管理员和版主一致认定为答案,或是最合适、最适宜的回复,我们将送您一本《Silverlight2 导学》

期待您的参与!

立即去回答问题吧:http://social.microsoft.com/Forums/zh-CN/silverlightzhchs/threads/

posted @ 2009-03-06 10:22 Shiny Zhu 阅读(114) | 评论 (0)编辑

症状:

如果你采用了ajax来动态填充内容,在填充select的时候,页面上有两个select并排,如果填充的内容长度超过默认的长度,则在IE7下不会自动扩展后面一个select框的位置。如图所示第一排:

HTML select error in ie7

 

解决办法:

我这里用的jQuery来填充数据,在填充之前,将后面的select的visibility设为hidden,填充完了之后再设为visible,效果如上图第二行。

代码:

Code
//Fix IE7 auto expand select:
//
first hide the selects
$('#second_cat_fix').css('visibility''hidden');
fillThings(
'''#first_cat_fix');
//then show the selects.
$('#second_cat_fix').css('visibility''visible');

项目文件我已经放在这里了,可以拖下去看一看。里面用到了Google AJAX Libraries API来加载jQuery。

另外请参考这篇日志:IEBlog For the SELECT few...

posted @ 2009-03-03 17:16 Shiny Zhu 阅读(197) | 评论 (0)编辑

技术创新日

尊敬的阁下:

您好!

欢迎您关注微软技术创新日活动!

在2009崭新的一年开始之际, 微软将继续用最新的技术和产品信息点燃您的激情与创造力,与您共同展望未来的精彩计算时代。让您‘牛’起来!

微软技术创新日系列活动会在2009年3月到4月期间,行程安排遍及北京、大连、济南、青岛、上海、杭州、南京、苏州、成都、西安、武汉、重庆、广州、深圳、厦门、昆明等十余个城市。

届时,您将有机会与广大的开发技术人员共聚一堂,与微软一起:

-  踏入‘云’计算的精彩世界中,体会Windows Azure平台的奥秘;

-  首度为您展现VSTS ALM,揭开Visual Studio 2010的神秘面纱;

-  沉浸于虚拟化与真实工作中的测试场景;

-  先睹为快万众期待的Windows 7!

种种精彩内容不可错过,我们诚挚的邀请您光临这次技术盛宴!

 

活动议程安排:
时间  主题
 
01:00pm – 01:30pm 签到注册
 
01:30pm – 01:45pm 欢迎致词
 
01:45pm – 02:30pm Windows Azure - 云中开发,成就未来
 
02:30pm – 03:15pm 构建高效及流程导向的开发团队 – 预览Visual Studio Team System 2010
 
03:15pm – 03:30pm 中场休息
 
03:30pm – 04:00pm 构建下一代互联网应用-Clubof.net 社交网站代码分析
 
04:00pm – 04:30pm 微软虚拟化 – 构建高效开发与测试环境
 
04:30pm – 05:15pm 2009,微软客户端开发技术纵览
 
05:15pm – 05:30pm 提问环节,结束

 

活动注册:

成都  3月10日  成都高新孵化园 - 成都市天府大道南延线高新孵化园,3号楼3号会议室  已报名30%! 立即注册
 
重庆  3月12日  重庆软件园 - 重庆市沙坪坝区西永科技三路99号,研发楼2层会议室      已报名30%! 立即注册

 

MSDN上的宣传页:http://msdn.microsoft.com/zh-cn/dd490617.aspx

posted @ 2009-03-03 16:45 Shiny Zhu 阅读(65) | 评论 (0)编辑

微软客户端技术开发动手实验营”成都站开始报名了!欢迎免费参加本次WPF & Silverlight动手试验营。

时间:2009年1月15日-2009年1月16日

地点:成都市人民南路四段13号金海洋大楼

费用:免费

培训机构:成都金海洋计算机科技发展有限公司

技术:Silverlight 2.0、IE8、WPF和Windows Vista

增强用户体验是微软重要的技术战略之一,也是微软在过去几年及未来关注的重点,针对即将推出的silverlight 2.0 , IE8 以及已经推出的WPF 和Windows Vista 开发技术,我们将于2008 年10月-12月举办“微软客户端技术开发动手实验营”,活动覆盖北京、广州、上海、西安、杭州、苏州、青岛、厦门、深圳、济南、成都、福州、大连、武汉、沈阳、长沙等16个城市。届时,我们的讲师不仅为您介绍微软的最新技术,分享成功案例,还为每个人提供动手实验的机会,实际领略最新的技术带来的创新体验。

我们期待与您在此次活动中欢聚一堂,通过全方位的互动与交流,帮助您轻松应对技术挑战,高效开发客户端应用,全面提升用户体验!

具体安排:

(2009年1月15日)第一天
时间                 主题
========================
8:40-9:00        签到
9:00-9:20        开篇
9:20-10:20      下一代用户体验开发技术
10:30-11:00     动手实验
11:10-12:00     XAML多媒体开发
12:00-13:00     午餐
13:00-14:00     动手实验
14:10-15:10     WPF 开发实战 1
15:20-16:20     动手实验
16:30-17:30     WPF 开发实战 2 

(2009年1月16日)第二天
时间                 主题
========================
9:00-10:20      Silverlight 概要
10:30-12:00    动手实验
12:00-13:00    午餐
13:00-14:20    Silverlight 开发实战 1
14:30-16:00    动手实验
16:10-17:00    Silverlight 开发实战 2

立即注册!

注册链接有问题,想去的朋友直接填写下列信息PM给我,目前还有10个座位!

公司名称 公司地址 公司电话 传真 姓名 职务 办公电话 移动电话 E-mail

先到先得。

注:

在您提交注册申请后,会收到系统自动发出的一封确认邮件,请根据邮件要求,回答相关问题,并回复邮件到MSDevHOL@dimei.com完成注册。
由于培训场地所限,注册并通过审核后才能获得此次培训机会,以电话及邮件确认函为准。因此给您带来不便,请见谅。

资源:

微软客户端技术开发动手实验营网站:http://msdn.microsoft.com/zh-cn/dd163900.aspx

ISV Partner Program:http://www.innovateon.com/

posted @ 2009-01-13 14:48 Shiny Zhu 阅读(132) | 评论 (1)编辑

今天在CES最值得兴奋的事情是什么?

我相信应该是Steve Ballmer说Windows 7 Beta吧!今天晚上一朋友跟我说“我装了Windows 7”,我问,“Build号多少?”,“7000”,我说“不好意思,过时了,上午Beta已经出来了”。

鲍尔默的幽默也非常有趣:

另外值得兴奋的就是微软自家研究的二维码Microsoft Tag的公布。

喔!你没看错,Microsft Tag就是二维码!是微软自家的BarCode(QRCode)技术,与我们现在看到的黑白框框二维码不一样的是,Microsoft Tag是的!不是框框,而是三角形!对,下面这个就是:

到底是什么?

我们先了解一下Microsoft Tag的特点。Microsoft Tag不仅仅具备QRCode相关的能力,更重要的是它基于一种叫做“高容量彩色条码”(HCCBs = High Capacity Color Barcode)的技术,嗯,这个HCCBs是由Microsoft Research研究出来滴!

为什么叫它“高容量”呢?

QRCode是黑白框框,HCCBs采用的是彩色三角形,我们来个对比:

从图中已经一目了然地得出了结论,相同信息量,QRCode要用多大的面积,而Microsoft Tag只用到了四分之一的面积就表达出来了!信息量越大这个比例也越大喔!

它为什么这么小?还有一个原因是,Microsoft Tag并不像QRCode那样保存原始信息,而仅仅是保存了信息的唯一编号!这个唯一编号对应的原始信息则保存在微软的服务器上。这样一来,就可以保存非常多的信息,而且可以统计到每一个Tag的使用情况。非常适合用于出版物、电子产品等等场合。诸多优点,你还不心动吗?

解码程序?

解码程序现在已经有Beta版本可以用了,请从这里直接下载到您的Windows Mobile手机(也可用手机打开http://gettag.mobi/下载,有其他系统的版本)。

等等!

如果你之前没有用过QuickMark,那么请同时安装这个程序!

QuickMark是解码QRCode很优秀的一款手机软件,用途很广泛的,以下部分就是将Microsoft Tag Reader和QuickMark作一个对比。

开始吧!

先看看Microsoft Tag Reader,我的手机是Dopod S1普通版(2.0MegaPixel Camera, OMAP 201MHz CPU),安装后是这个样子:

按“确定”键就打开全屏相机,这个时候就可以拿着去解码啦!真是兴奋!

把手机横着对准上面第一张图,定格一下之后,看看:

Damn!失败鸟。

注意:手机必须横着喔。在经过几次尝试之后,看到这个了:

绿灯行,绿色环保,表示解码成功,MessageBox里的是原始信息。

嗯 嗯。二维码里最多的应用是什么?对!名片!通用的名片格式是vCard。

现在我们登录到Tag站点创建一个vCard。

我已经创建好了一个,不过只能用pdf,wmf和xps的形式来展示,从这里可以下载

解码一下,哈哈!

这个失败了,没有解出来,再试试。

太大了,还是没有读出来。FT...

喔。终于把名片读出来了。

感受

1,解码过程太繁琐。要先按确定打开相机,再按拍照,还要再按确定来解码……喔,可以少按一些按键吗?

2,解码正确率太低。尝试至少10次,看你有没有一次成功,不是没对准就是太模糊。还要加油啊(手机的Camera也要加油喔)。

再来看看QuickMark的表现。

同样,以vCard为例:

别怀疑,你的手机能用QuickMark就肯定能解上面这个!你还可以到这里做一张您自己的名片

启动QuickMark,对准它,就搞定:

需要其他过程吗?嗯,解码之后会有一声“嘿哈”的提示,就再也不需要其他过程了。

正确率?你自己试试吧。

结论

Microsft Tag的确比较惊艳,只保存的信息编号是最独特的地方,非常方便统计,而且你可以设置有效时间,应该说前途非常看好。

但,我也有一些疑虑。

1,用于印刷物上面的Tag,颜色褪色之后能正常读取吗?QRCode是黑白的,没有这个问题喔。

2,原始信息保存在微软服务器上,所以信息的创建肯定没有QRCode那么方便,这个?

嗯,就这样吧。

参考资源:

http://www.istartedsomething.com/20090108/microsoft-tag-microsofts-own-2d-barcode/

http://tag.microsoft.com

http://blogs.msdn.com/tag/

http://www.microsoft.com/tag/content/overview/microsoftTag.aspx

posted @ 2009-01-08 23:54 Shiny Zhu 阅读(322) | 评论 (1)编辑

这个其实在TortoiseSVN的帮助文档里有说明,从服务端配置SVN仓库达到阻止空日志信息的提交。

在每一个SVN仓库里都有一些默认的hook script模板,其中pre-commit.tmpl是提交前验证的,用这个来实现我们的目的。

由于是在WINDOWS下创建的svn server,所以我们用DOS命令来实现它:

Code
REM pre commit script

@ECHO OFF

SETLOCAL

SET "REPOS=%~1"
SET "TXN=%~2"
SET "SVNLOOK=G:\scm\svn\bin\svnlook.exe"

for /"tokens=*" %%i in ('%SVNLOOK% log -t "%TXN%" "%REPOS%"') do set "LOGMSG=%%i"
if not "%LOGMSG%"=="" exit 0

ECHO 您没有输入日志信息! 1>&2
ECHO 请输入一条有用的消息,表示您对代码作了哪些更改。 1>&2
ECHO 日志是跟踪版本的重要信息,您必须输入它,谢谢合作。:) 1>&2

EXIT 500

将这个文件保存为pre-commit.bat,放在仓库的hooks目录下即可。

Enjoy it!

posted @ 2009-01-08 17:01 Shiny Zhu 阅读(93) | 评论 (0)编辑

在刚刚落下帷幕的PDC上,我们得到了很多振奋的消息,包括C# 4.0及VS2010等等。Anders Liu 已经 将C# 4.0 新特性白皮书翻译了 出来,那里面有非常详细的介绍。

C#的发展是很快很快的,C#的设计目的是成为一个有趣有用通用的程序语言,并因此让使用该语言的用户能获得更大的成功。所以,C#除了面向对象的基本特征外,现在引入了相当多的其他特征喔!

动态,动态。动态是目前超级流行的词汇。C#也要动起来了喔!

C# 4.0的主要主题是动态编程。对象的意义变得越来越“动态”,它们的结构和行为无法通过静态类型来捕获,或者至少编译器在编译程序时无法得知对象的结构和行为。

相关的特性有动态查找命名参数可选参数等。

还有,简化了与COM的互操作

还有,协变逆变 Covariance and contravariance

这些都在白皮书里可以找到介绍。我在这里整理一下协变和逆变的一些参考资料,本来数学就不好,怕过一两天就又忘了,俗话说,好记性不如烂笔头嘛。

首先看看问题的引入。

这里有两个类型,T 和 U,在这两个类型间,以下伪表达式肯定有一个是“真”:

  • T > U
  • T < U
  • T = U
  • T 和 U 没有任何关系

例如有这些类型:动物 Animal哺乳动物 Mammal爬行动物 Reptile长颈鹿 Giraffe老虎 Tiger蛇 Snake海龟 Turtle,它们之间的继承关系应该来个UML就一目了然了有:哺乳动物动物的一个子类,长颈鹿哺乳动物的一个子类等等……

看图:

那么就有:哺乳动物长颈鹿大,比动物小,等于哺乳动物,和爬行动物却没有关系(这里的比较都不是对象之间的比较,要注意哦。

呃,如果这个难于理解,我们再看看程序中的情况。假设有一个变量,这个变量在C#中有一个容身之处(不是说的存储区的物理地址),每一个变量在C#中的容身之处都对应一个类型(强类型语言就是这样的),那么,在运行时你可以在一个特定的容身之处存储对应类型的实例或者小于这个类型的类型的实例拗口-,-)。所以呢,哺乳动物对象对应的容身之处可以存储一个长颈鹿,但是不能存储一个海龟。(考虑面先接口编程和抽象基类的思想

容身之处这个例子说明的是“交换原则”,跟面向接口编程和抽象基类的机制很类似,也就是在很多地方,我们用子类代替基类(或接口或抽象类)来使用。

现在来定义什么是协变:一个操作如果在 T 和 U 两个类型上执行后返回的 T' 和 U' 之间的关系跟原来的 T 和 U 之间的关系(上面那4个伪表达式)相同,则这个操作就叫做协变。英文名:Covariance

再看看什么是逆变:一个操作如果将 T 和 U 的大小关系改变了(大变小,小变大 - 逆转),但是不改变 T 和 U 之间的相等或不相干这两个关系,则这个操作就叫做逆变。英文名:Contravariance

呃呃。变来变去,头已经晕了。

(还没完,等我喔!)

posted @ 2008-11-14 17:00 Shiny Zhu 阅读(190) | 评论 (0)编辑