类型转换辅助类ConvertHelper

Namespace RichardTsuei.Common

''' <summary>
''' 类型转换辅助类
''' </summary>
''' <remarks></remarks>
Public NotInheritable Class ConvertHelper

''' <summary>
''' 空值判断函数
''' </summary>
''' <param name="obj"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function IsNullOrEmpty(ByVal obj As Object) As Boolean
Return obj Is Nothing OrElse IsDBNull(obj) OrElse obj.ToString().TrimEnd().Length = 0
End Function

''' <summary>
''' 空值判断函数
''' </summary>
''' <param name="uid"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function IsNullOrEmpty(ByVal uid As Guid?) As Boolean
Return uid Is Nothing OrElse IsDBNull(uid) OrElse uid = Guid.Empty
End Function

''' <summary>
''' String类型转换函数
''' </summary>
''' <param name="obj"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Overloads Shared Function ToString(ByVal obj As Object) As String
If IsNullOrEmpty(obj) Then
Return String.Empty
Else
Return obj.ToString().TrimEnd()
End If
End Function

''' <summary>
''' Integer类型转换函数
''' </summary>
''' <param name="obj"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function ToInteger(ByVal obj As Object) As Integer
If IsNullOrEmpty(obj) Then
Return 0
Else
Return Convert.ToInt32(obj)
End If
End Function

''' <summary>
''' Decimal类型转换函数
''' </summary>
''' <param name="obj"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function ToDecimal(ByVal obj As Object) As Decimal
If IsNullOrEmpty(obj) Then
Return 0D
Else
Return Convert.ToDecimal(obj)
End If
End Function

''' <summary>
''' Guid类型转换函数
''' </summary>
''' <param name="uid"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function ToGuid(ByVal uid As Guid?) As Guid
If IsNullOrEmpty(uid) Then
Return Guid.Empty
Else
Return uid.Value
End If
End Function

''' <summary>
''' Guid类型转换函数
''' </summary>
''' <param name="str"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function ToGuid(ByVal str As String) As Guid
If IsNullOrEmpty(str) Then
Return Guid.Empty
Else
Return New Guid(str)
End If
End Function

End Class

End Namespace

 

 

主要要注意的是Guid具有Nothing和Guid.Empty两种情况;而String除了有Nothing和String.Empty两种情况外要考虑全部是空格(whitespaces)的情况。

posted @ 2010-02-09 02:14 白衣苍狗 阅读(12) | 评论 (0)编辑

Visual Studio 2010压力测试的配置选项(翻译)

原文地址:

http://blogs.msdn.com/edglas/archive/2010/02/07/configuration-options-for-load-testing-with-visual-studio-2010.aspx

 

概述

此文笔者将介绍Visual Studio 2010中用于压力测试的相关产品。每个测试配置选项笔者都会用一幅图片进行描述。

 

配置1:生成“本地”压力

当你安装了Visual Studio 2010 Ultimate,就可以使用测试宿主进程在“本地”——VS运行所在的机器产生压力。但限制是250个虚拟用户,同时只能使用一个处理器s产生压力。

要注意购买Ultimate版本让你可以使用测试代理(Test Agent)程序在Web服务器上对ASP.NET性能进行跟踪。

 

配置2:分布式测试控制器(Test Controller)和测试代理(Test Agent)

如果你希望伸缩你的压力测试,这是一种普遍的选择。使用此配置,测试控制器和每个测试代理都位于分离的机器上。

此配置的优点是可以简单被小组成员共享,且控制器并不需要生成压力和操作客户端。

注意,测试控制器必须要有一个或多个虚拟用户包被安装以激活压力测试。压力测试代理程序可以使用机器的所有处理器。

posted @ 2010-02-08 07:26 白衣苍狗 阅读(69) | 评论 (0)编辑

FAMFAMFAM经典图标集

很全的免费图标

http://www.famfamfam.com

其中silk系列有700多个16x16的图标,预览如下:

posted @ 2010-02-06 16:19 白衣苍狗 阅读(28) | 评论 (0)编辑

BingMap使用基础 - 地图加载

1.指定文档信息

在<html>外侧追加如下标签:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

2.指定META信息

在<head>标签中追加如下标签:

 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

 

 

3.在HTML文档中追加BingMap容器

在<body>中追加如下标签:

 

<div id="myMap" class="map"></div>

 

 

4.追加加载BingMap地图、设定地点、添加标记和标记剧中

在<head>中追加如下内容:

 

<script type="text/javascript">
function LoadMap() {
try {
var map = new VEMap('myMap');
var HOME = new VELatLong(38.852375, 121.526406);
map.LoadMap(HOME,
14, VEMapStyle.Road, false, VEMapMode.Mode2D, true, 1);
var pinPoint = map.GetCenter();
pinPixel
= map.LatLongToPixel(pinPoint);
map.AddPushpin(pinPoint);
}
catch (ex) {
alert(ex);
}
finally {
}
}
</script>

 

 

5.最后是追加文档启动动作

如下设定<body>标签:

 

<body onload="LoadMap();">

 

 

如此即可在页面中获得BingMap,可通过设置脚本中的经纬度等信息获得不同效果。

 

参考:

Bing Maps地图控件入门教程

http://msdn.microsoft.com/zh-cn/library/bb412551.aspx

posted @ 2010-02-06 16:14 白衣苍狗 阅读(49) | 评论 (0)编辑

CSS布局及模板站点推荐

强烈推荐

http://www.ironmyers.com/

其中包括224个CSS布局以及大量免费的CSS模板,是快速获得原型版面的好资源!

图1 - 布局资源

图2 - 模板资源

posted @ 2010-02-06 16:06 白衣苍狗 阅读(31) | 评论 (0)编辑

中国软件外包该何去何从?

09年的经济危机对软件产业着实有了严重的冲击,很多中小型外包企业成为了寒冬陨落的流星。作为一名软件外包团队的一员,从2009年走过有颇多感受。

 

1.管理人还是凝聚人?

外包本就是“人月神话”的完美诠释,为了获得项目收益紧缩开发周期,对于欧美外包产业来说日子还算清闲可以朝九晚五,对日外包本来就是以加班混饭吃这么挺过来的。经济危机来了,因为人心早已疲累,管理者自然不能从工资、奖金的痛处下手,于是各种紧缩银根的方法层出不穷:减少福利待遇、取消餐补车补通信补等等。其实,这些早已经招致来员工心中的不满,但因为还可以有一份工作,有一份工资可以拿,所以大家也都没有显出过分的抵抗情绪。即使是这样,任何管理中出现的争执都可能成为导火索,毕竟无论是中层或下层都有他们各自愤愤的事情。此时,各软件外包公司有必要考虑是继续进行压榨式地去管理人,还是应该采用更多信任加上部分监管地去凝聚人,我觉得后者更能推动企业的成功。

 

2.不但要注重公司发展更要注重人的发展

很多公司看中的是公司的发展、业务的发展、客户的发展,每每有些时间才想起搞搞培训陶冶一下大家的“情操”,其结果并不理想。持续加班疲劳后的培训简直就是在为这些员工补觉。这是典型的注重公司自身发展而不重视员工发展的行为。真正成功的企业,只有通过经验者不断提高能力,加大项目开发效率与质量的同时才能从项目中获益。或许以前公司确实成功,通过那几百号人每天20小时工作时间的计算获得了近乎完美的项目利润,而最终导致的是一代代员工越来越疲乏,宁愿以老资格坐享清闲,而没有了激情更不用说在“睡梦”状态下积蓄经验和提高能力了。想提高公司发展,发展客户领域和发展员工能力都是必须的。

 

3.开发模式有待提高

中国外包企业似乎追求的都是通过ISO和CMM或CMMI认证来争取用户,但真正的内部结构并不是按什么流程来做,仍然是作坊式地开发模式。项目经理下面分几个小组长,每个小组长各带几个人,每天逐层汇报进度,每天或每周一次走形式的例会。这种开发模式如果不革新,带来的是团队涣散没有凝聚力。而且如此从上至下的树形管理结构导致的问题是:执行力低下、任务划分不明、交流不充分等。带来的影响就是下面说完成了什么上面就只知道完成了什么,下面有问题没汇报,上面就完全不知道,中间所谓的小组长更喜欢当传声筒而不是担任管理角色,因为这种结构对于他们来说根本没赋予他们任何所谓的“权力”去进行管理。

 

4.小心团队的“破窗户”

其实软件项目管理中的四要素最重要的无论如何都是人,只要有人违反原则就应该被纠正,但中国外包团队中的顽疾就是“破窗户”永远都没人修,结果就是大家都成为团队的“破窗”。“破窗”出现的原因无非是碍于人情关系、资历等等。

 

以上是笔者粗浅鄙陋的观点,希望大家指教,可能看得很片面,能够与大家交流意见则更好。顺便借此文祝大家新年快乐,万事如意,心想事成,好远连连!

posted @ 2010-02-06 11:04 白衣苍狗 阅读(87) | 评论 (0)编辑

VS2008中的jQuery智能提示配置方法

首先下载1.3.2版本的jQuery(虽然下载已经有了1.4版,但新版本并不支持vsdoc),地址:

http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js

然后下载1.3.2版本对应的vsdoc文件,地址:

http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2-vsdoc2.js

将上面两个文件修改名称:

1) 将jquery-1.3.2.min.js修改为jquery-1.3.2.js

2) 将jquery-1.3.2-vsdoc2.js修改为jquery-1.3.2-vsdoc.js

 

然后请安装Visual Studio 2008 SP1补丁和KB958250补丁,后者下载地址:

http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736

安装成功后打开VS编辑页面,在<head>块中追加对jquery-1.3.2.js文件的脚本引用,此时状态里会显示脚本智能提示更新,当更新状态消失后,

即可在页面的<script>块中使用jQuery的脚本智能提示功能了。

posted @ 2010-02-03 19:12 白衣苍狗 阅读(217) | 评论 (2)编辑

.NET Framework FCL新特性

1.String类型增加IsNullOrWhiteSpace方法判断是否为NULL、空字符串或者只包含空格

 

posted @ 2010-01-24 12:06 白衣苍狗 阅读(61) | 评论 (0)编辑

Silverlight无法安装的解决办法

     摘要: 1622Vista系统,进入安全模式创建一个新的管理员帐户。进入普通模式,使用新帐户进入系统,安装Silverlight。1625使用系统管理员帐户进行安装,应该也可以通过1622的办法解决。1601无法访问 Microsoft Windows Installer。请与技术支持人员联系以验证是否正确注册了该 Windows Installer,或者按照此处(http://support.micro...  阅读全文
posted @ 2010-01-22 11:02 白衣苍狗 阅读(36) | 评论 (0)编辑

有帮助的SQL语句

     摘要: 1.重建(REBUILD)索引ALTER INDEX ALL ON tablename REBUILD WITH(ONLINE=ON)如出现错误请将(ONLINE=ON)修改为(ONLINE=OFF)执行。2.激活/禁用触发器ALTER TABLE tablename ENABLE TRIGGER triggernameALTER TABLE tablename DISABLE TRIGGER t...  阅读全文
posted @ 2010-01-17 09:59 白衣苍狗 阅读(81) | 评论 (0)编辑

解决PAGELATCH_UP类型阻塞

     摘要: 这几天在做ASP.NET Web应用程序的压力测试,发现AP和数据库服务器内存、CPU和磁盘读写都没有等待,但总是出现数据库超时现象。而且当数据库超时发生时,查询其它数据库的速度也很慢,所以将重点放到了tempdb上,将tempdb主文件和日志文件设置为一个比较大的值,仍然不起作用。经使用博文的SQL语句查询等待类型,如下:[代码]得到的所有等待类型均为PAGELATCH_UP类型阻塞,通过查找博...  阅读全文
posted @ 2010-01-06 12:40 白衣苍狗 阅读(63) | 评论 (0)编辑

博文列表

     摘要: .NET 3.5: JSON Serialization using the DataContractJsonSerializerhttp://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx  阅读全文
posted @ 2010-01-04 07:40 白衣苍狗 阅读(36) | 评论 (0)编辑

jqGrid产品化

     摘要: 当我们在今年年初开始项目的时候,就选择使用jQuery作为客户端脚本框架,原因是在不久的将来的(也就是现在)与ASP.NET AJAX Client Library整合在一起。所以我们开始疯狂收集项目中会使用到的jQuery插件(plugin),jqGrid在当时(版本3.2)就让我们眼前一亮,它让我们真正地抛弃了ViewState,当然也给我们带来许多麻烦。今天上网重新搜索的时候,发现jqGri...  阅读全文
posted @ 2010-01-04 05:57 白衣苍狗 阅读(225) | 评论 (0)编辑

让数据对象在更多的框架下可用

     摘要: 现在我们可以使用的数据访问技术包括基本的ADO.NET(实际上LINQ to SQL和EF也算是ADO.NET)、LINQ to SQL以及Entity Framework。现在手中的项目并没有使用LINQ to SQL或者Entity Framework,原因是希望对象不会过重消耗内存,但实际上到后来为了数据的一致性以及适应多种问题(多主键更新、行状态、保持一致性、跟踪对象和属性变化事件的追加)...  阅读全文
posted @ 2010-01-03 23:19 白衣苍狗 阅读(127) | 评论 (0)编辑

面向对象数据访问

     摘要: 现在越来越多人发现了面向对象和强类型在程序设计和系统实现中的重要性,我们这里绕开理论知识,来看看面向对象数据访问的基本实现。一、表设计使用GUID作为数据主键可以保持数据的唯一性(即使名称和编号改变仍可唯一识别)、隐密性;为了保持数据更新的一致性和原子性,我们增加UpdDateTime字段作为更新时间戳,如果你取得的数据为第1版本,在你更新前有人将其更新为第2版本,我们则根据版本判断要不要更新,U...  阅读全文
posted @ 2010-01-02 23:16 白衣苍狗 阅读(178) | 评论 (0)编辑

没有提示进行window.close()

     摘要: [代码]主要是因为安全性原因(判断是否为脚本直接调用),还可以使用隐藏控件进行关闭。补充:IE8和FireFox中的自动关闭窗口方法[代码]脚本可直接在IE8中实现,而对于FireFox需要在about:config中对自动运行脚本的开关做设置才可以。  阅读全文
posted @ 2010-01-02 16:26 白衣苍狗 阅读(14) | 评论 (0)编辑

ASP.NET AJAX应用程序中的序列化

     摘要: 讨论ASP.NET AJAX应用程序中的序列化方法和问题  阅读全文
posted @ 2010-01-01 11:43 白衣苍狗 阅读(113) | 评论 (0)编辑
<2010年2月>
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

公告

统计

  • 随笔 - 17
  • 文章 - 0
  • 评论 - 2

最新闪存

随笔分类(19)

随笔档案(17)

Richard Tsuei

积分与排名

最新评论

阅读排行榜

评论排行榜

Google广告