# Sunday, March 15, 2009

wcf book      春节之前就收到了这本MVP图书计划的书籍,由于春节前后项目工作非常繁忙,累了个够呛,所以书评一直没有跟上,实在感觉对不住老大,今天赶紧补上。这是一本纯英文的硬皮MCTS考试自学用书。由于该书籍面向读者的专向性,所以跟普通的技术书籍有些不太一样。内容是以课为单位编写的,且配有随书CD和VS2008专业版的90天试用版本(含MSDN库)。

    这本书既然是考试自学用书,那么它的细致就自不在话下了。几乎WCF的各个细节都有浅入深的进行介绍,有详尽的代码实例(VB和C#都有),还穿插着各种注意事项、知识点以及扩展内容。给人很贴心的感觉,因为很多东西是初学者所不能想到和接触到的,在书中给与提示和说明我认为是一件很好的手段。模拟考试软件的答案解释也是不错的,再次赞一下:D

    我对书中内容的序列化控制、WCF跟踪扩展与监控、数据安全以及用户认证等部分比较感兴趣。改天要再好好学习一下。

    这本书似乎目前尚未有中文版本(大概考试用书都这样子),但是依然建议大家自学阅读一下。照着实例代码多练习调试尽可能搞明白更多的细节,不要看答案对了就对了。尽可能把每个提醒提示的文字也都阅读一下,会受益匪浅的哦。

Posted on Sunday, March 15, 2009 3:19:00 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Monday, December 08, 2008
WinHEC即Windows Hardware Enginneering Conference(Windows硬件工程大会)。是微软公司从93年红红火火举办了10多年次的微软技术盛会之一,内容涵盖了硬件和软件双方面的内容,内容和阵容往往非常之牛。而WinHEC 2008 China是微软第一次正式在中国大陆举办,成为除了Tech.ED外的中国大陆又一微软技术盛会,很荣幸今年能够在北京参加这次盛会,甚为感动……
Posted on Monday, December 08, 2008 5:48:00 AM (China Standard Time, UTC+08:00)  #    Comments [1]
# Tuesday, December 02, 2008
已经安装Windows 7挺长时间了,一直想写篇博客来介绍Windows7的一些新特性,可忙于各种事情,一直没能精心写完这篇,今天在此补上。
Posted on Tuesday, December 02, 2008 2:56:14 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, November 13, 2008

CLR Via C# 2    随着人们对身边事物的不断认知和熟悉,我们逐渐开始需要追溯事情的根源,了解事物的本质。而软件开发人员水平不断提高,则同样会去研究技术表面下的实质,使得自己向一个更高的层面发展。.NET框架已经发展到3.5(SP1)的版本,4.0也正向我们款款走来。很多人感叹微软技术更新的过快,更不上框架和开发工具的版本更新速度。而个人认为,一个好的开发人员不会因为技术更新速度而受到太大影响,因为这些技术的本质没有太大改变,了解本质后学习新技术则是另外一种景象了。我想了解技术本质有两种比较可行的方法:读源代码(IL,汇编代码),读大师们的书。前者对技术人员自身的水平本身要求较高,也就是说需要有一定的底层技术积累才可以。所以对普通的技术人员要学习技术的本质最方便的途径就是读书了。当然了,读书呢,需要读好书,读不好的书不如不读!
    《CLR Via C#(Second Edition)》这本书,个人认为是一部非常不错的书,值得向大家推荐一下。本书的原作者是:Jeffrey Richter,他从1999年就开始为微软.NET Framework团队做顾问,经历了.NET的孕育、诞生和发展,可谓.Net方向最有发言权的顶级技术专家,而他写的书也应该是我们.NET技术方向的开发人员必读的书:D。本书的写作风格可谓出色,语言也通俗易懂,写出的例子也是很精妙,常常一针见血,文中适时的提醒一些读者容易忽略的问题,提点一些重要的技术信息。配合MSDN文档我们可以从本书较好的学习到:

  • 源代码如何转化为中间语言(IL)的,他们是如何存储、管理和执行的
  • 描述运行时可用的代码元数据及其用法
  • 数据的分类、组织和管理
  • 描述类的成员(字段、属性、方法等)
  • 异常处理和垃圾回收的原理
  • 反射
  • 多线程
  • ……

  该书让读者扎实的理解CLR底层概念、巩固技术基础,具备迅速而轻松编写出可靠、安全、高性能的托管代码,真正成为一个.Net高手而非编码工人。

  该书分五个部分共24章,个人推荐已经了解部分.NET底层知识的人,重点阅读第4部分(基本类型)和第5部分(CLR实用特性)。

  本书有中文版本《框架设计(第二版)》是清华大学出版社出版的,译者是:周靖和张杰良。翻译的还不错,但也有一些地方存在一些欠妥的地方,有时候一些原著的内容确实很难将原意用中文翻译好,但这里仍然希望国内的译者们再努力提高一下自身的专业技术水平和专业英文的翻译能力,期待下个版本能翻译的更好。当然了,翻译得虽然有这样那样一些细节的问题,但对普通的.NET方向开发人员来说,阅读中文版本也同样会获得很大帮助的。英文不好的朋友,可以购买翻译版本的读一下:D
Posted on Thursday, November 13, 2008 5:59:01 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Wednesday, November 12, 2008

    很荣幸在Tech.ED2008北京场的社区技术专场中,本人讲了一场《如何成倍提升企业级Web应用开发效率》的课程。这次讲座是第一次在Tech.ED场合讲座,不过作为非正式课程,我很高兴的看到不少人放弃了正式课程的内容来听社区技术专场的内容。也许是这类课程更贴近大家的工作吧,形式也不拘泥,大家可以面对面地探讨,气氛比较好。不过我的课程时间把握的不是太好,造成了后期给大家讲解的内容有点仓促,不是很细,希望参会的朋友们原谅。讲课过程中,发现听课的人逐渐增多,而且似乎开始就过来听的朋友们都没有中途离场的,这对我是莫大的鼓舞。我将努力在以后的日子给大家带来一些更好的内容,敬请关注哦:D

     在这里为大家提供本次课程的课件Demo文件下载,希望对大家能有所启发和帮助,如果能真正使得大家在企业级WEB应用开发过程中提高了不少效率,将是莫大的欣慰和荣誉。

Posted on Wednesday, November 12, 2008 1:29:00 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Monday, July 07, 2008

    近期在对一些客户做技术培训的时候,发现了一个问题。一些我们平常天天在用的软件工具,比如:Windows、Office、SQL Server、Visual Studio等等,很多都没有得到用户较充分的使用。很多已经被软件厂商早已攻克的问题,却在用户那里在被重复研究解决方案,原因为什么?因为用户根本不知道原来这个每天都在用的软件工具还有这样或那样的功能,可以解决我们目前所碰到的问题。比如说:

  • Excel就已经可以轻松解决家庭的收支结算问题,有人却偏偏要安装什么管家婆或者形形色色的所谓家庭财务管理软件,甚至还要求你安装个sql server呢。难道你只把excel当作一个普通表格使用吗?
  • 不少人抱怨Word排版很差,对文章分层次时,要手工敲入那些“第一、第二”或者“1)、2)”等,为什么不用编号功能呢?
  • sql server 2005 有个“数据库引擎优化顾问”,可以在一定程度上帮助优化数据库,而对应于sql 2000中也存在“索引优化向导”,而他们都依赖于sql profile,另外数据库有执行计划等一系列分析优化的工具,为什么连这些都没用过就问人索要什么优化工具呢?
  • Windows自身就带有磁盘清理等系统优化工具,为啥你只为了清理一下系统盘的空间,却要安装“超级**”或是“**优化大师”呢?

    上述都只是一些简单的例子,但在相当多用户中存在类似的问题,而在软件开发人员中问题依然不少见。问题出在哪里,用户自身是问题之一,而作为软件提供商来说,是否应该考虑一下自身的问题,是否应该下一下功夫对用户进行培训教育呢?UI是否可以设计的再合理一些,让用户更直接的了解到软件的已有功能呢?

     正如某些分析师说的:“微软的Windows、Word和Excel等产品中功能丰富,但消费者却并不完全了解.其结果就是,消费者耗费大量的时间来解决一些微软产品已经攻克的问题.因此,鲍尔默应该在该领域投入一笔资金,以帮助用户了解微软产品的功能”。个人认为这样这个问题不光是微软应该考虑的问题,IBM、Oracle以及我们国内的金山等软件企业是否也应该思考呢?共享软件作者亦应如此。

Posted on Monday, July 07, 2008 5:22:05 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Sunday, May 25, 2008
最近给一些技术公司进行asp.net开发方向的培训,培训过程中曾发现一些简单的问题却几乎全军覆没的答错,而其中不乏一些曾在多年使用C#进行过项目开发的技术人员。比如说,我曾经出过一个题让参加培训的人员回答:int a=13/2的结果。技术人员的答案有以下几种情况
Posted on Sunday, May 25, 2008 2:38:00 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Saturday, March 15, 2008
最近在项目中由于一个特殊的要求,需要使用类似于js的document.getElementsById的css class调用的实现。于是到网上搜索了一下,似乎并没有真正能较好达到目的且效率较理想的。于是乎,自己简单的写了一个,效率还凑合,而且支持多class名称的标签。
Posted on Saturday, March 15, 2008 2:28:00 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, January 31, 2008

在C#中有个较为重要,而常被一些人忽视的符号——问号(?)。在这里整理一下它在C#的几种情况:

  1. 可空类型修饰符“T?”:可空类型的基础类型可以是任何非可空值类型或任何具有struct约束的类型参数,但不能是可空类型或引用类型。例如:int?代表是可空的整形,而int??则是无效类型。即可空类型可以表示其基础类型的所有值和一个额外的空值。语法T?是System.Nullable<T>的缩写形式。可空类型具有一个HasValue的bool类型只读属性,当可空类型实例的该属性为true时,则表示该实例是非空实例,包含一个已知值Value;HasValue为false时,访问Value属性将导致System.InvalidOperationException。可空类型T?具有一个类型为T的单个参数的公共构造函数,如new int?(123)将获得一个值为123的int?类型实例。从T?到由T实现的任何接口都存在装箱转换,并且从由T实现的任何接口都存在到T?的拆箱转换。但是任何情况下可空类型都不满足接口约束,即使基础类型实现了该特定接口
  2. 条件运算符“x ? y : z” : “x ? y : z”的意思大部分程序员应该都熟悉,稍微啰嗦一下:) 如果表达式x为true,则计算y;如果x为false,则计算z。省却if{}else{}的简单形式了。
  3. 空合并运算符“??”:该运算符是在泛型出现后,C#词法语法中新增加的标记,同时出现的还有一个“::”(命名空间别名限定符)。形式为“a??b”的空合并表达式要求a为可空类型或引用类型。如果a为非空则表达式“a??b”返回的结果为a;否则返回b。空合并运算符为结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(bb??cc)”计算。

曾有人说过“细节决定胜负”,我们程序员应该更好的把握编程语言的细节才能更好的保证软件质量。

特此整理存档:D

Posted on Thursday, January 31, 2008 4:31:34 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Tuesday, November 27, 2007

在一些网站或者软件系统中,由于安全或者程序异常等问题,可能会在SQL Server 2000中造成一个异常问题:在企业管理器中打开数据库发现有一些“坏表”,即无法使用,也无法正常删除。其原因往往是因为在尝试建表的过程中,只向数据库服务器的系统表sysobjects中写入了类型为“U”的记录,却并未真正在数据库中成功创建该表的实体。ok,解决问题有思路了:

假设“坏表”的表名为cmd,那么我们在查询分析器中对当前的数据库写一个sql语句:

delete from sysobjects where [name]='cmd' and xtype='U'

按F5执行,可能会碰到一个错误提示:“未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。” 解决这个小小的问题的方法是:打开mssql server 属性---》服务器选项----》启用对系统目录的特殊更新(允许对系统目录进行直接修改)  即可。之后重新在查询分析器中执行刚才的sql语句。

执行成功后。在企业管理器中会发现那个坏表已经不存在了。

[ 注:SQL2005中,由于微软做了重大调整,正常情况下不允许对系统表进行即席更新操作。所以本文提到的问题目前仅适用于SQL2000数据库,敬请注意 ]

Posted on Tuesday, November 27, 2007 11:35:54 PM (China Standard Time, UTC+08:00)  #    Comments [0]