2007年1月30日星期二

发现一个非常喜欢的网站样式

今天从Google Reader上逛到了这个网站 虽然还没有搞明白它是干什么的但我被它的网站设计吸引住了。这不就是我梦寐以求的样式吗!朴素大方,简约而不简单。一定要把它的样式给搞下来用在自己的Blog上。

现学现卖之在IIS6下调试ASP代码

这次要调试的是ASP没有带.NET,最近在做一个由ASP升级到ASP.NET的项目,今天按照客户提供的文档配置旧系统的环境,所有步骤都做完后用IE7一运行提 示404错误!用IE6和FireFox结果都一样。本来这次配置环境的时候在数据库部分就有问题:客户提供的一个数据库备份文件打不开,所以就没指望能 运行成功,可没想到居然遇到404的错误,文件怎么会找不到呢?
都说ASP代码不好调试,而且以前也没有做个ASP的项目,对于调试ASP代码更 是不熟悉了。为了找到原因我特意在根目录下新建了一个index.html文件,看看是不是IIS6有问题,结果index.html可以访问到,然后我 又把它重命名成index.asp就不行了还是404的错误。后来同时提醒我是不是在IIS6里没有启用对ASP的支持,也是在Google上搜索了: IIS6 ASP,才知道默认安装的情况下,Win 2003 Server是不支持ASP程序的,需要手工启用,设置步骤如下:
Web Service Extension-->Active Server Pages-->Allow


另外还要启用父路径,父路径就是指经常在写路径的时候用到的两个点"..",设置步骤如下:
Default Web Site-->Properties-->Home Directory-->Configuration-->Options-->Enable parent paths


在IIS中 属性->主目录->配置->选项中。把”启用父路径“前面打上勾确认刷新
做完上述修改后再次运行程序,在IE6、IE7和FireFox下有不同的提示信息:
IE6的提示


IE7的提示


FireFox的提示


最后还是通过FireFox的提示才知道是什么问题。
其实在IE下也可以显示FireFox类似的错误消息,只需要取消一个选项:
Show friendly HTTP error messages


-END-

2007年1月26日星期五

退订Google Group

今天在整理GMail的时候发现有很多Lable下的邮件很久没有看过了,这些Lable下的邮件大都是从Google Group发来的.我订阅了很多Group的邮件,但现在对其中的一部分已经很久没有再关注了,比如:Python, wxWidgets等,于是就退掉了这些Group的订阅.
随着工作的变化我所关注的技术点也在发生变化,以前对Python, SQLite, Lua等技术比较关心而现在则转向了AJAX, ASP.NET, JavaScript等技术.

2007年1月25日星期四

现学现卖之在VSTS中使用自定义的比较工具

VSTS中自带的比较工具实在是太难用了,和我一直使用的WinMerge简直没法比. 开始不知道VSTS允许使用自定义的比较工具,还是在Google上搜了一把(TFS VSTS Compare tool)找到了这篇文章.我安装上面的说明在配合WinMerge的相关文档完成了比较工具的自定义,效果很棒.我用到的参数样式是:/e /x /wl /dl %6 /dr %7 %1 %2
WinMerge的命令行语法如下:
WinMerge
[/r] [/e] [/f filter] [/x] [/s] [/ul] [/ur] [/ub] [/wl] [/wr] [/dl leftdesc] [/dr rightdesc] leftpath rightpath [outputpath]

  • /? or -? displays help message
  • /r or -r tells winmerge to compare directories recursively
  • /e or -e allows WinMerge to be closed with a single esc keypress
  • /f or -f allows selecting filter used. Filter can be filemask like "*.h *.cpp" or name of filefilter like "XML/HTML Devel". Quotation marks must be used if filter mask or name contains spaces
  • /x or -x closes WinMerge after information dialog when files are identical
  • /s or -s enables single-instance behavior. If there is already WinMerge running new compare is opened to that same instance.

  • /ul or -ul tells winmerge to not add left path to MRU
  • /ur or -ur tells winmerge to not add right path to MRU
  • /ub or -ub tells winmerge to not add both paths to MRU
  • /wl or -wl initially opens left side as read-only
  • /wr or -wr initially opens right side as read-only
  • /dl or -dl adds a description for left side shown instead of directory/filename
  • /dr or -dr adds a description for right side shown instead of directory/filename
  • leftpath is the directory or filename to open on the left side
  • rightpath is the directory or filename to open on the right side
  • outputpath is an optional output directory where you want merged files to be saved

最近的日子

老婆住院了
没有人给做饭
每天晚上吃泡面
今天泡面都没有了
每天晚上都睡的很晚
都是因为无聊的看电视
最近两天美剧更新了很多
昨天晚上下载了最新的越狱
另外还下载了另外一个电视剧
虽然很想看但看完就感觉很无聊
老婆不在家的日子我快忍受不了了
老婆你快些好吧赶紧出院吧我想你了

2007年1月24日星期三

完成旧Blog到新Blog的转换

今天在登陆Blogger的时候突然看到久违的Blog转换页面



转换完成!

换新机

昨天晚上就给我更换了新的计算机:Dell Dimension E520,包括主机、显示器、键盘和鼠标都是全新的!系统已经做好:英文的XP,另外常用的Office2003和杀毒软件也都安装好了,剩下的就是我自己要安装的东西了。
首先安装了VS2005 Teme Suit 和 VSTS,先要保证第二天能工作。
然后我安装了FireFox,装好FireFox后首先要安装我最喜欢的插件和主题,只可惜网速太慢,只安装了Google ToolBar和GUtil,主题本来要安装iFOX Smoon最终还是由于下载太慢取消了,等网速好的时候再说。
剩下安装的程序有:
EditPlus
Messenger Live
虚拟光驱DAEMON
Adobe Reader 7.0
TortoiseSVN
WinRAR
紫光拼音
金山词霸2006
以后还会再安装其他的程序,但我会保持尽量少安装程序的原则,能在网上直接完成的事情尽量在网上完成,比如多使用Google的服务。

2007年1月20日星期六

现学现卖之正则表达式

前几日收到客户提交的一个Bug涉及到了正则表达式的使用,于是就赶紧从Google恶补了一次.
这个Bug的大概情况是这样的:
这是一个用ASP.NET 2.0实现的Web项目,用到了ASP.NET AJAX框架.在一个页面中有一个文本框用于输入浮点型数值, 为了做到只允许输入数字和小数点我采用了ASP.NET AJAX Control Toolkit中的一个extender: FilteredTextBox,另外为了保证输入的数据是合法的浮点型数据我在Javascript中用正则表达式来验证输入的内容.当时对正则表达式的语法也不了解只是从别的地方抄来了一个表达式:/^\d+(\.\d+)?$/反正能用.
但客户提出了这样的问题:输入0.123没有问题但输入.123就提示格式不合法.客户要求输入.123和输入0.123都是允许的.
我现把解决后的表达式写出来然后在说说我所学到的一点正则表达式的知识, 很简单,修改后的表达式是:/^\d*(\.\d+)?$/只有一个字符之差!

我主要是看了这篇文章和竹笋炒肉的一篇文章才对正则表达式有了一个初步的认识.下面是我对表达式/^\d+(\.\d+)?$/的一些理解:
这个表达式一共包含15个字符,我按照每个字符分别进行了说明

  • 第一个字符:/ 和最后一个字符组成一对分隔符,之间放入表达式模式的各种组件来构造一个正则表达式.
  • 第二个字符:^ 它是一个定位符,用来匹配输入字符串的开始位置.
  • 第三个字符:\ 它是一个转义符,将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符.
  • 第四个字符:d 它和前面的转义符一起用来匹配一个数字字符,在本例子中再配合第二个定位符^就可以用来匹配数字开头的字符串,比如012abc, 2.abc等.
  • 第五个字符:+ 它是一个限定符用来指定其前面的子表达式出现一次或多次才能满足匹配.在本例中配合前面的^\d就可以用来匹配用数字开头的字符串并且开头的数字至少要有一个,还句话说就是必须用数字开头的字符串.另外在修改后的表达式中把这个位置的字符换成了*, *也是一个限定符,它用来表示其前面的子表达式出现零次或多次才能满足匹配.于是修改后可以用来匹配开头是数字或不是数字的字符串.
  • 第六个字符:( 用来标记一个子表达式的开始.
  • 第七个字符:\ 这是一个转义符.
  • 第八个字符:. 配合前面的转义符就代表小数点本身,如果没有前面的转义符则用来匹配除换行符 \n之外的任何单字符.
  • 第九个字符:\ 还是个转义符.
  • 第十个字符:d 第四个字符一样,配合前面的转义符用来匹配一个数字字符.
  • 第十一个字符:+ 和第五个字符一样,表示前面的数字字符至少出现一次或多次.
  • 第十二个字符:) 用来标记一个子表达式的结束.
  • 第十三个字符:? 它是一个限定符用来匹配前面的子表达式零次或一次, 结合前面的子表达式就保证只匹配包含一个小数点的字符串,并且可以直接用小数点开头.
  • 第十四个字符:$ 它是一个定位符, 用来规定匹配模式必须出现在目标对象的结尾, 在本例中就表示只有结尾是数字字符的字符串才会被匹配.
  • 第十五个字符:/ 和第一个字符组成一对分隔符.
所有的字符已经介绍完毕,最终这个正则表达式就达到了只匹配浮点数,并且如果有小数点则其前面的数字可有可无但其后必须有数字.

2007年1月9日星期二

如何用代码读取程序集的版本信息

今天在MSDN里转悠的时候看到了AssemblyVersionAttribute类, 以前一直没有详细了解过这个类的功能只知道它是用来给程序集制定版本信息的.今天看完了帮助才学到了以前不知道的东西:设置版本号的时候可以使用星号*, MSDN中关于星号的使用是这样描述的:

在指定版本时,至少必须指定 major。如果指定 majorminor,则可以为 build 指定星号 (*)。这将使 build 等于自当地时间 2000 年 1 月 1 日以来的天数,使 revision 等于自当地时间午夜以来的秒数(被 2 除)。

如果指定 majorminorbuild,则可以为 revision 指定星号。这将使 revision 等于自当地时间午夜以来的秒数除以 2。

于是我就想在我现在做的一个项目中试一试. 目前这个项目中已经有个函数是用于返回版本号的, 实现方法是在代码中定义了一个静态的只读私有字符串变量,每次需要更新版本号的时候就直接修改这个字符串. 现在看来这个方面有些不够专业,如果能通过代码读取AssemblyVersionAttribute设置的版本信息应该更好一些.
我在MSDN上没有找到如何读取
AssemblyVersionAttribute属性值的资料,在Google上到是找到一篇很好的文章, 最终实现了用代码读取程序集的版本信息.