星期天的晚上,一边翻着《MSDN开发精选》,一边写这个POST,一边和别人玩msn的扫雷,运气不错,大胜,结果一个ALT-F4不小心把IE关了,这些文字不得不再写一次 : (
以前在网络上看了一些评论,大家普遍反映的问题就是贵,的确对于一本薄薄的小册子,18块钱是贵了些,特别是对于很多的学生。
前些日子参加微软的合作伙伴峰会,送了2004年的4月的第一辑,今天翻了翻,不禁有相见恨晚的感觉,虽然早就知道MSDN是个大宝库,但是因为俺鸡肋的英语水平,用得最多的还是在visual studio里面按F1或者在需要解决问题时看KB和howto,从来没有憋着劲去翻里面长篇大论的专题和那些精彩的文章,现在才知道有多大的损失:<
以前写一些Service比较多,win32多线程性能分析还有一篇关于堆的文章吸引了我的目光,现在开始学习DotNET,里面关于.NET架构和模式的文章让我受益非浅,关于Longhorn的东西看看也不错,随书的光盘里也有一些好东东,嘿嘿...决定以后订了,借别人的也行,假如总有送那我就开心死了:->
呵呵,以上纯属广告,如有上当,概不负责(以下略去3000字)...
看到孙展波提到PageRank的问题,也来说两句 :)
假如要使自己页面的搜索结果靠前,一般要做到3点:
1.页面的标题中要包含搜索关键词,META标记也不要放过
2.在页面内容中频繁出现该关键词(做得太过分可是要被惩罚的!)
3.提高自己页面的PageRank
前面两条自己可以搞定,可是最后一条需要很多的反向链接(ReverseLink),因为BLOG的反馈中可以提交URL(可以提交URL的主要还有论坛,但是因为论坛的随便一个帖子URL都是一堆的动态参数,搜索引擎对这个是很不感冒的),于是很多人打起了我们这些人的BLOG的主意。
很多人没有注意到来自自己网站的ReverseLink也可以生效的,应该多注意一下自己网站的结构啊!其实博客堂的结构非常不错,每个页面都有指向个人首页和博客堂首页的链接,博客堂首页也有指向个人首页的链接,这样整个网站的Rank都提高了。
但是觉得博客堂使用的Text版本在搜索引擎上有一个缺陷:页面的标题都是个人博客的标题,而不是POST的标题,对POST的内容在搜索里排名的提高是不利的。
DotNet的Trace类提供一组帮助跟踪代码执行情况的方法和属性,使用是非常方便的,具体到输出到什么地方,取决于TraceListener的类型,系统自带了三种类型:
System.Diagnostics.DefaultTraceListener
System.Diagnostics.EventLogTraceListener
System.Diagnostics.TextWriterTraceListener
有时候我们想自己定义输出类型,比如输出到数据库,输出到socket等等,这就需要自定义TraceListener,这个非常容易,只需要简单的继承System.Diagnostics.TraceListener抽象类,这里我们实现一个输出到控制台的(C#):
namespace Peon.Diagnostics
{
public class ConsoleTraceListener : System.Diagnostics.TraceListener
{
public override void Write( string str )
{
Console.Write( str );
}
public override void WriteLine( string str )
{
Console.WriteLine( str );
}
}
}
然后在程序中就可以如下使用:
Trace.Listeners.Add( new Peon.Diagnostics.ConsoleTraceListener() );
Trace.WriteLine( "Hello World!" );
假如不想通过硬编码,而是通过app.config配置,可以如下使用:
在app.config中添加如下配置节(这里TestIPProbe是包含Peon.Diagnostics.ConsoleTraceListener的程序集名称):
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="Peon.Diagnostics.ConsoleTraceListener,TestIPProbe"/>
</listeners>
</trace>
</system.diagnostics>
概要:
DotNet的TraceListener实现使用了Observer模型:当客户调用Write等方法时,Trace.Listeners 集合里所有的TraceListener 都会调用相关方法.
自定义的TraceListener实现非常容易,只要继承System.Diagnostics.TraceListener ,实现Write和WriteLine方法就可以了(你还可以根据需要复写Flush,Close等方法),然后在使用中将它添加到Trace.Listeners 集合。
参考: Implementing a Custom TraceListener
http://www.codeguru.com/vb/gen/vb_misc/debuggingandtracing/article.php/c5611/