<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_魔法花园 － .NET版</title><subtitle type="text">我关于.NET技术的Blog</subtitle><id>http://feed.cnblogs.com/blog/u/1041/rss</id><updated>2011-12-12T08:47:20Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/1041/rss"/><entry><id>http://www.cnblogs.com/redmoon/archive/2011/12/12/2285028.html</id><title type="text">开发Silverlight 5的一个灵异事件</title><summary type="text">之前用Silverlight 4开发了一个脱离浏览器的应用，基本功能是新建一个文档、录入相关信息，并可以保存为本地文件。新建文档的时候，显示一个ChildWindow让用户录入文档的名称等。然后动态把文档编辑的视图添加到LayoutRoot中。 后来，Silverlight 5 RC发布后，为了让保存文件更自然（之前保存老文件也必须弹出文件保存对话框，在SL5中就可以不必要），就把Silverlight 4的项目升级为Silverlight 5，升级过程很简单，貌似一切正常。 至少在Windows 7上是很正常的，但是到XP下就无法正常显示新建文档的ChildWindow，也无法显示文档编辑的</summary><published>2011-12-12T08:44:00Z</published><updated>2011-12-12T08:44:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/12/12/2285028.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/12/12/2285028.html"/><content type="html">&lt;p&gt;之前用Silverlight 4开发了一个脱离浏览器的应用，基本功能是新建一个文档、录入相关信息，并可以保存为本地文件。新建文档的时候，显示一个ChildWindow让用户录入文档的名称等。然后动态把文档编辑的视图添加到LayoutRoot中。&lt;/p&gt; &lt;p&gt;后来，Silverlight 5 RC发布后，为了让保存文件更自然（之前保存老文件也必须弹出文件保存对话框，在SL5中就可以不必要），就把Silverlight 4的项目升级为Silverlight 5，升级过程很简单，貌似一切正常。&lt;/p&gt; &lt;p&gt;至少在Windows 7上是很正常的，但是到XP下就无法正常显示新建文档的ChildWindow，也无法显示文档编辑的视图。&lt;/p&gt; &lt;p&gt;仔细检查代码没有看出什么问题，网络搜索，没有遇到类似情况。&lt;/p&gt; &lt;p&gt;后来，前天Silverlight 5 RTM后，满以为这个问题可以迎刃而解，结果还是问题依旧。&lt;/p&gt; &lt;p&gt;今天实在不死心，心想Silverlight 5本身应该不会有这样的低级错误，于是仿照之前的程序结构，重新建了另外一个解决方案，于是之前的问题就消失了。&lt;/p&gt; &lt;p&gt;那么问题就很明确了，应该是项目文件的问题。但是我把新老项目用xml编辑器打开逐条比较，都一致&amp;#8230;&amp;#8230;，就完全无语了。&lt;/p&gt; &lt;p&gt;没有办法，只好把老的项目文件删除，再重新创建项目文件，把代码包含到新项目中。至此问题终于解决了。&lt;/p&gt; &lt;p&gt;总结起来，在4升级5的过程中，VS虽然貌似正确处理了相关的项目转化，但是也许在某个隐藏的地方出现问题（估计是升级后，没有正常处理sdk和toolkit的程序集），导致在XP中某些UI显示不正确。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2285028.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/12/12/2285028.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/07/21/2112633.html</id><title type="text">检查字符串首字母的性能</title><summary type="text">今天在写一个函数的时候，需要判断某段字符串是xml还是数字，一开始用StartsWith来判断开头的字符串，后来发现这个函数需要高频率的调用，不知道StartsWith是否有性能问题。于是写了如下代码来验证：var content = &amp;quot;&amp;lt;double&amp;gt;1&amp;lt;/double&amp;gt;&amp;quot;;Stopwatch sw = Stopwatch.StartNew();for (int i = 0; i &amp;lt; 10000...</summary><published>2011-07-21T03:55:00Z</published><updated>2011-07-21T03:55:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/07/21/2112633.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/07/21/2112633.html"/><content type="html">&lt;p&gt;今天在写一个函数的时候，需要判断某段字符串是xml还是数字，一开始用StartsWith来判断开头的字符串，后来发现这个函数需要高频率的调用，不知道StartsWith是否有性能问题。于是写了如下代码来验证：&lt;/p&gt;&lt;pre &gt;var content = &lt;span &gt;"&amp;lt;double&amp;gt;1&amp;lt;/double&amp;gt;"&lt;/span&gt;;&#xD;
&#xD;
Stopwatch sw = Stopwatch.StartNew();&#xD;
&lt;span &gt;for&lt;/span&gt; (&lt;span &gt;int&lt;/span&gt; i = 0; i &amp;lt; 1000000; i++)&#xD;
{&#xD;
    var r = content.StartsWith(&lt;span &gt;"&amp;lt;"&lt;/span&gt;);&#xD;
}&#xD;
sw.Stop();&#xD;
Console.WriteLine(&lt;span &gt;"test 1 :"&lt;/span&gt; + sw.ElapsedMilliseconds);&#xD;
&#xD;
sw = Stopwatch.StartNew();&#xD;
&lt;span &gt;for&lt;/span&gt; (&lt;span &gt;int&lt;/span&gt; i = 0; i &amp;lt; 1000000; i++)&#xD;
{&#xD;
    var r = content.StartsWith(&lt;span &gt;"&amp;lt;double&amp;gt;"&lt;/span&gt;);&#xD;
}&#xD;
sw.Stop();&#xD;
Console.WriteLine(&lt;span &gt;"test 2 :"&lt;/span&gt; + sw.ElapsedMilliseconds);&#xD;
&#xD;
sw = Stopwatch.StartNew();&#xD;
&lt;span &gt;for&lt;/span&gt; (&lt;span &gt;int&lt;/span&gt; i = 0; i &amp;lt; 1000000; i++)&#xD;
{&#xD;
    var r = content[0] == &lt;span &gt;'&amp;lt;'&lt;/span&gt;;&#xD;
}&#xD;
sw.Stop();&#xD;
Console.WriteLine(&lt;span &gt;"test 3 :"&lt;/span&gt; + sw.ElapsedMilliseconds);&#xD;
&lt;/pre&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;基本上第三种性能是最高的，不过第二种要保险一些。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2112633.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/07/21/2112633.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/07/11/2102880.html</id><title type="text">在MSDN论坛成都版聚上做了关于Kinect SDK的简单介绍</title><summary type="text">上周六（2011.7.9）在微软的成都Office参加了MSDN论坛成都版聚活动，不仅学习了其他朋友分享的相关技术话题，也向大家分享了下Kinect SDK的简单介绍。 这次活动，大家参与的热情还是比较高，差不多有30个人参加。 本来我是很少去MSDN论坛灌水的，不过受紫柔之托，就和大家分享了下名为《NUI畅想与Kinect for Windows SDK》的演讲。 具体内容如下： NUI畅想 在...</summary><published>2011-07-11T03:39:00Z</published><updated>2011-07-11T03:39:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/07/11/2102880.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/07/11/2102880.html"/><content type="html">&lt;p&gt;上周六（2011.7.9）在微软的成都Office参加了MSDN论坛成都版聚活动，不仅学习了其他朋友分享的相关技术话题，也向大家分享了下Kinect SDK的简单介绍。&lt;/p&gt; &lt;p&gt;这次活动，大家参与的热情还是比较高，差不多有30个人参加。&lt;/p&gt; &lt;p&gt;本来我是很少去MSDN论坛灌水的，不过受紫柔之托，就和大家分享了下名为《NUI畅想与Kinect for Windows SDK》的演讲。&lt;/p&gt; &lt;p&gt;具体内容如下：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;NUI畅想&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;在这里给大家放映了两段视频，分别是少数派报告和微软未来远景视频，其中充分展示了NUI的应用。当然少数派报告中的操作，其实现在也基本做得到了。&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;UI技术发展回顾&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;谈到了CLI（命令行界面）到GUI（图形用户界面）到NUI（自然用户界面）的发展趋势&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;微软的NUI技术及Kinect介绍&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;多点触摸（Multi-Touch）是NUI的一种早期用例，而微软的第一款NUI产品（Surface）是以多点触摸技术为主，辅以摄像头动作捕捉，设备感应，近距通信等技术为一体的技术，目前Surface已经发布了2.0，明天可能就会发布Surface 2.0的SDK。 &lt;p&gt;而微软第一款真正意义上的面向消费者的NUI产品就是Kinect。主要实现语音识别，3D动作识别。包含如下基本装置： &lt;p&gt;–RGB摄像头——普通可拍摄稳定30帧640x480画面的摄像头 &lt;p&gt;–3D纵深传感器——结合深度摄像机和传感器来计算距离（两个红外摄像头，类似人眼） &lt;p&gt;–倾斜马达——可以在上下27度角度对Kinect进行调整 &lt;p&gt;–Multi-Array麦克风——四个麦克风组成&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Kinect for Windows SDK介绍&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;在微软发布Kinect后，就有Geek（Hacker）开发了针对PC的驱动，并创建了一套山寨SDK来开发Kinect for Windows的应用。或许微软就是打算试试大家的热情，所以在这个问题上保持了开明的态度，默许了大家的所谓破解活动，然后接着就宣布官方会发布Kinect for Windows SDK。微软通过这样的步骤，让大家尝试Kinect在除了游戏上的其他应用可能。当然Kinect目前限于硬件的规格，还无法做到尽善尽美，很多应用要达到很好的效果，需要在算法上下功夫。不过Kinect要让你发挥的不是代码能力，而是想象力。&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;Kinect for Windows SDK就是在Windows上的驱动和开发工具。 &lt;p&gt;下载地址：&lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx"&gt;http://&lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx"&gt;research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx&lt;/a&gt;&lt;/a&gt; &lt;p&gt;系统需求： &lt;p&gt;–Windows 7（32，64） &lt;p&gt;–Visual Studio 2010(至少Express) &lt;p&gt;Kinect SDK的视频开发教程：&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts?sort=recent"&gt;http&lt;/a&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts?sort=recent"&gt;://channel9.msdn.com/Series/KinectSDKQuickstarts?sort=recent#tab_sortBy_recent&lt;/a&gt; &lt;p&gt;Kinect SDK的开发指南：&lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx"&gt;http&lt;/a&gt;&lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx"&gt;://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx&lt;/a&gt; &lt;p&gt;Kinect SDK的官方论坛：&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/threads"&gt;http&lt;/a&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/threads"&gt;://&lt;/a&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/threads"&gt;social.msdn.microsoft.com/Forums/en-US/kinectsdk/threads&lt;/a&gt; &lt;p&gt;在Coding4Fun上有很多值得参考的项目：&lt;a href="http://channel9.msdn.com/coding4fun/kinect"&gt;http://channel9.msdn.com/coding4fun/kinect&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Kinect SDK自带Demo&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;在这里，我向大家展示了SDK中自带的两个示例”Sample Skeletal Viewer“和”Sample Shape Game“&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Kinect for Windows SDK入门&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;在此，我主要演示了操纵Camera和骨骼系统的编程方式，其中的代码具体参考了马宁的博文：&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.cnblogs.com/aawolf/archive/2011/06/18/2084352.html"&gt;Kinect for Windows SDK开发初体验（二）操作Camera&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.cnblogs.com/aawolf/archive/2011/06/21/2086139.html"&gt;Kinect for Windows SDK开发初体验（三）骨骼追踪&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Kinect for Windows示例演示&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;在这里，演示了一些其他人的有趣示例，原本想自己做一个示例的，可惜最近太忙，还没有完成。主要演示了：&lt;/p&gt; &lt;p&gt;Light Saber：&lt;a href="http://channel9.msdn.com/coding4fun/kinect/Of-course-our-first-Kinect-for-Windows-SDK-Project-has-to-involve-a-Light-Saber"&gt;http://channel9.msdn.com/coding4fun/kinect/Of-course-our-first-Kinect-for-Windows-SDK-Project-has-to-involve-a-Light-Saber&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Kinect Paint：&lt;a href="http://channel9.msdn.com/coding4fun/kinect/Kinect-Paint"&gt;http://channel9.msdn.com/coding4fun/kinect/Kinect-Paint&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;Kinect应用讨论&lt;/li&gt;&lt;/ul&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;和大家讨论了一下，Kinect应用的前景。有人也问到延迟和精度的问题。我的观点是，现在硬件虽然有一定的延迟问题，但是可以通过算法优化和特别处理来尽量降低影响；而精度的问题只能期待下一代Kinect的发布，但考虑到作为一个大众消费品，价格因素会影响推广，而推广会影响应用开发的热情，所以其中需要一种平衡。&lt;/p&gt; &lt;p&gt;最后，也给大家提供了两个Kinect相关理论的参考文章：&lt;/p&gt; &lt;p&gt;身份识别：&lt;a href="http://kb.cnblogs.com/page/106379/"&gt;http://kb.cnblogs.com/page/106379/&lt;/a&gt; &lt;p&gt;Kinect原理：&lt;a href="http://kb.cnblogs.com/page/105605/"&gt;http://kb.cnblogs.com/page/105605/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2102880.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/07/11/2102880.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/04/29/2032435.html</id><title type="text">记4月28成都软件技术沙龙活动</title><summary type="text">作为微软社区精英计划的一个部分，成都软件技术沙龙在微软、天府软件园和零码科技的支持下，在沙龙成员吴慧锋的组织协调下，于昨天（2011.4.28）在天府软件园A3大会议室进行了关于Scrum实践的公开课。 这是成都软件技术沙龙成立2年来，第一次举办的公开课，也是我们沙龙发展的一个里程碑。以后我们会定期（大概每个月一次）在软件园举办公开课。并希望有志于成为沙龙讲师的朋友联系我们。只有是和软件开发、运维...</summary><published>2011-04-29T01:46:00Z</published><updated>2011-04-29T01:46:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/04/29/2032435.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/04/29/2032435.html"/><content type="html">&lt;p&gt;作为微软社区精英计划的一个部分，成都软件技术沙龙在微软、天府软件园和零码科技的支持下，在沙龙成员吴慧锋的组织协调下，于昨天（2011.4.28）在天府软件园A3大会议室进行了关于Scrum实践的公开课。&lt;/p&gt; &lt;p&gt;这是成都软件技术沙龙成立2年来，第一次举办的公开课，也是我们沙龙发展的一个里程碑。以后我们会定期（大概每个月一次）在软件园举办公开课。并希望有志于成为沙龙讲师的朋友联系我们。只有是和软件开发、运维、应用的相关话题都可以成为我们公开课的主题。&lt;/p&gt; &lt;p&gt;这次的Scrum课程一共分作三个Session，各自相辅相成，包括：&lt;/p&gt; &lt;p&gt;来自ActiveNetwork的殷钧钧，《&lt;b&gt;自下而上的敏捷实践&lt;/b&gt;》，谈到了：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;持续集成、  &lt;li&gt;TDD、  &lt;li&gt;自动化测试、  &lt;li&gt;结对编程、  &lt;li&gt;重构、  &lt;li&gt;Scrum&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;来自任我行的刘传君，《&lt;b&gt;Scrum软件研发过程经验分享&lt;/b&gt;》，谈到了：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;这不是咨询公司的Scrum，缺乏生气的抽象，也不是书本上的Scurm，过于笼统到无味，这是某成都公司7个月来，从尝试到全部项目都迁移过来的一个落地的过程，作为操刀人，讲师将会讲述推动中的选择、问题、乐趣、效果，甚至是----尴尬。&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;我做的《&lt;strong&gt;Visual Studio Scrum 1.0实践&lt;/strong&gt;》，谈到了：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;›Team Foundation Server 2010介绍  &lt;li&gt;›Visual Studio Scrum 1.0介绍  &lt;li&gt;›Visual Studio Scrum 1.0安装  &lt;li&gt;›Visual Studio Scrum 1.0使用  &lt;li&gt;›Demo项目  &lt;li&gt;›Q/A&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;我们的第一次公开课，主要通过软件园的企业联络邮箱要发送邀请，结果报名的有100多人，最后到场的也超过100，实在出乎我们的意料。看来，公开课的活动与邀请渠道很重要啊。&lt;/p&gt; &lt;p&gt;这次活动，我忘记带上相机了，所以一开始用手机拍几张照片，在此浏览：&lt;a title="http://t.cn/hdshNC" href="http://t.cn/hdshNC"&gt;http://t.cn/hdshNC&lt;/a&gt;&lt;/p&gt; &lt;p&gt;后来，吴慧锋拿来相机也拍了部分照片，大家可以关注他的相关博客和微博。&lt;/p&gt; &lt;p&gt;另外联系我们，可以通过我们的微博：&lt;/p&gt; &lt;p&gt;吴慧锋：&lt;a href="http://weibo.com/wuhuifeng"&gt;http://weibo.com/wuhuifeng&lt;/a&gt;&lt;/p&gt; &lt;p&gt;殷钧钧：&lt;a href="http://weibo.com/joeyyin"&gt;http://weibo.com/joeyyin&lt;/a&gt;&lt;/p&gt; &lt;p&gt;刘传君：&lt;a href="http://weibo.com/1000copy"&gt;http://weibo.com/1000copy&lt;/a&gt;&lt;/p&gt; &lt;p&gt;朱永光：&lt;a href="http://weibo.com/heavenwing"&gt;http://weibo.com/heavenwing&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2032435.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/04/29/2032435.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/04/09/2010221.html</id><title type="text">.NET Windows客户端程序在代理环境下的相关设置</title><summary type="text">这里是一点经验的简短总结 之前在用SmartClient+Remoting的方式开发业务管理系统的时候，就遇到过一次HTTP代理配置的问题。当时，由于Remoting无法自动配置代理，所以采取的办法就是在登录界面上提供代理网络配置的选项，让用户手动录入代理服务器的地址，端口，用户名和密码。 在.NET 4.0中对于Web Service和WCF，就可以通过设置WebRequest.DefaultW...</summary><published>2011-04-09T03:20:00Z</published><updated>2011-04-09T03:20:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/04/09/2010221.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/04/09/2010221.html"/><content type="html">&lt;p&gt;这里是一点经验的简短总结&lt;/p&gt; &lt;p&gt;之前在用SmartClient+Remoting的方式开发业务管理系统的时候，就遇到过一次HTTP代理配置的问题。当时，由于Remoting无法自动配置代理，所以采取的办法就是在登录界面上提供代理网络配置的选项，让用户手动录入代理服务器的地址，端口，用户名和密码。 &lt;/p&gt; &lt;p&gt;在.NET 4.0中对于Web Service和WCF，就可以通过设置WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;来自动配置大部分代理服务器。这种方式其实就是使用IE中对代理服务器的配置。&lt;/p&gt; &lt;p&gt;对于DefaultNetworkCredentials的使用可以参考我另外一篇博客：&lt;a href="http://www.cnblogs.com/redmoon/archive/2010/12/01/1893909.html"&gt;DefaultNetworkCredentials vs DefaultCredentials&lt;/a&gt;&lt;/p&gt; &lt;p&gt;通过以上代码配置后，并不能保证一定能正确访问，所以还需要进行如下处理：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;通过代码配置为默认代理后  &lt;li&gt;访问一下网络是否连通  &lt;li&gt;如果没有连通，尤其访问407这个验证错误的代码，  &lt;li&gt;那么就需要提示用户输入代理服务器用户名和密码&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我的实现代码如下：&lt;/p&gt; &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;&lt;img id="Code_Closed_Image_216841" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_216841').style.display='none'; document.getElementById('Code_Open_Image_216841').style.display='inline'; document.getElementById('Code_Open_Text_216841').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"&gt;&lt;img style="display: none" id="Code_Open_Image_216841" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_216841').style.display='none'; getElementById('Code_Closed_Image_216841').style.display='inline'; getElementById('Code_Closed_Text_216841').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"&gt;&lt;span id="Code_Closed_Text_216841" &gt;custom code for set proxy&lt;/span&gt;&lt;span style="display: none" id="Code_Open_Text_216841"&gt;&lt;span style="color: #008000"&gt;//参考：http://www.codeguru.com/csharp/csharp/cs_network/http/article.php/c16479&lt;/span&gt;&#xD;
_CanConnectedIKE = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("&lt;span style="color: #8b0000"&gt;http://www.itke.com.cn/ping.txt&lt;/span&gt;");&#xD;
httpReq.AllowAutoRedirect = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
HttpWebResponse httpRes;&#xD;
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;&#xD;
&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&#xD;
{&#xD;
    httpRes = (HttpWebResponse)httpReq.GetResponse();&#xD;
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (httpRes.StatusCode == HttpStatusCode.OK)&#xD;
    {&#xD;
        httpRes.Close();&#xD;
        _CanConnectedIKE = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
    }&#xD;
    httpRes.Close();&#xD;
}&#xD;
&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (WebException ex)&#xD;
{&#xD;
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (ex.Message.Contains("&lt;span style="color: #8b0000"&gt;407&lt;/span&gt;"))&#xD;
    {                            &#xD;
        ProxyAuthDialog dialog = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ProxyAuthDialog();&#xD;
        dialog.ShowDialog();&#xD;
        WebRequest.DefaultWebProxy.Credentials = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NetworkCredential(&#xD;
            dialog.Username, dialog.Password);&#xD;
        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&#xD;
        {&#xD;
            httpReq = (HttpWebRequest)WebRequest.Create("&lt;span style="color: #8b0000"&gt;http://www.itke.com.cn/ping.txt&lt;/span&gt;");&#xD;
            httpRes = (HttpWebResponse)httpReq.GetResponse();&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (httpRes.StatusCode == HttpStatusCode.OK)&#xD;
            {&#xD;
                httpRes.Close();&#xD;
                _CanConnectedIKE = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            }&#xD;
        }&#xD;
        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex1)&#xD;
        {&#xD;
            ProgramBase.Logger.WriteException(ex1);&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;/span&gt;&#xD;
&lt;p&gt;除了通过代码来配置默认代理外，也可以在配置文件中对WCF等进行配置，如下：&lt;/p&gt;&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"MyClientBinding"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;proxyAddress&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://gateway:8080"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;useDefaultWebProxy&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;or&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;customBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"MyCustomClientBinding"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;binaryMessageEncoding&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;httpTransport&lt;/span&gt; &lt;span style="color: #ff0000"&gt;proxyAddress&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://gateway:8080"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;useDefaultWebProxy&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"false"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;binding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;customBinding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;or&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;defaultProxy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;useDefaultCredentials&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"true"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;proxy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;bypassonlocal&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"False"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;proxyaddress&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"http://gateway:8080"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;defaultProxy&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2010221.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/04/09/2010221.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/04/07/2008812.html</id><title type="text">在Windows 7中遇到android 模拟器出错，emulator: ERROR: unknown virtual device name的正确解决办法</title><summary type="text">前久重装了系统，之前安装的android sdk就无法启动模拟器了。在网络上搜索只是看到如下的解决办法： http://www.cnblogs.com/hlt1988321/archive/2010/10/17/1853736.html android 模拟器出错，emulator: ERROR: unknown virtual device name原因：我的文档的默认位置改变 遇到ERROR: unknown virtual device name这样的问题一般是由于创建的文件路径引用错误造成的。比如Vista可以设置用户文件到F盘下。这样在用Eclipse或者从命令行创建 Android</summary><published>2011-04-07T15:20:00Z</published><updated>2011-04-07T15:20:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/04/07/2008812.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/04/07/2008812.html"/><content type="html">&lt;p&gt;前久重装了系统，之前安装的android sdk就无法启动模拟器了。在网络上搜索只是看到如下的解决办法：&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.cnblogs.com/hlt1988321/archive/2010/10/17/1853736.html" href="http://www.cnblogs.com/hlt1988321/archive/2010/10/17/1853736.html"&gt;http://www.cnblogs.com/hlt1988321/archive/2010/10/17/1853736.html&lt;/a&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;android 模拟器出错，emulator: ERROR: unknown virtual device name&lt;br /&gt;原因：我的文档的默认位置改变  &lt;/p&gt;&lt;p&gt;遇到ERROR: unknown virtual device name这样的问题一般是由于创建的文件路径引用错误造成的。比如Vista可以设置用户文件到F盘下。这样在用Eclipse或者从命令行创建 Android Emulator时，相应的文件是被放置到 &amp;#8220;F:\Users\&amp;lt;username&amp;gt;\.android&amp;#8220; 下面了，而程序运行时仍然从 &amp;#8220;C:\Users\&amp;lt;username&amp;gt;\.android&amp;#8220; 下查找相应的配置文件，从而导致上面的错误。  &lt;/p&gt;&lt;p&gt;解决办法一：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 把 &amp;#8220;F:\Users\&amp;lt;username&amp;gt;\.android&amp;#8220; 下的文件复制到 &amp;#8220;C:\Users\&amp;lt;username&amp;gt;\.android&amp;#8220; 下面即可解决这个问题，不过这样的解决方案有一个明显的缺点，那就是如果又新&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 建立AVD，又得重新复制。  &lt;/p&gt;&lt;p&gt;解决办法二：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打开系统属性&amp;#8211;&amp;gt;环境变量&amp;#8212;&amp;gt;在&amp;#8220;系统变量&amp;#8221;那一个GroupBox下面选择&amp;#8220;新建&amp;#8221;&amp;#8211;&amp;gt;变量名为 &amp;#8220;ANDROID_SDK_HOME&amp;#8221; (注意，这个变量名不能改变，只能是这个名字！)，然后把变量值改为你想把AVD所在的&amp;#8221;.android&amp;#8221;文件夹放置的位置，比如：&amp;#8221;F:\AndroidEmulator&amp;#8221;，在这里我把它放在Android SDK包中，值为：&amp;#8221;D:\SDK\Android\android-sdk-windows1.5_r3&amp;#8221;  &lt;/p&gt;&lt;p&gt;注：其实就是把ANDROID_SDK_HOME的值设置为&amp;#8220;我的文档&amp;#8221;的路径就OK，例如&amp;#8220;D:\My Documents&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;但是，实际上在Windows 7上这样做解决不了问题，因为我的&amp;#8220;.android&amp;#8221;文件夹被放到了E盘，就是&amp;#8220;E:\.android&amp;#8221;。  &lt;/p&gt;&lt;p&gt;后来又找到一篇bss的讨论：&lt;a title="http://forum.xda-developers.com/showthread.php?t=520915" href="http://forum.xda-developers.com/showthread.php?t=520915"&gt;http://forum.xda-developers.com/showthread.php?t=520915&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;使用NTFS junction 的方式确实可行。步骤如下：  &lt;/p&gt;&lt;ol&gt; &lt;li&gt;用avd管理器删除所有模拟器配置  &lt;/li&gt;&lt;li&gt;下载安装SysinternalsSuite  &lt;/li&gt;&lt;li&gt;在&amp;#8220;C:\Users\&amp;lt;your name&amp;gt;&amp;#8221;下面创建一个新文件夹  &lt;/li&gt;&lt;li&gt;在命令行中把这个新文件夹改名为&amp;#8220;.android&amp;#8221;  &lt;/li&gt;&lt;li&gt;在命令行中运行如下命令：junction C:\Users\&amp;lt;your name&amp;gt;\.android E:\.android  &lt;/li&gt;&lt;li&gt;再次创建模拟器配置&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;另外，junction的具体用法可以参考：&lt;a title="http://hi.baidu.com/monkey_op/blog/item/4b298164dd780336aa184c33.html" href="http://hi.baidu.com/monkey_op/blog/item/4b298164dd780336aa184c33.html"&gt;http://hi.baidu.com/monkey_op/blog/item/4b298164dd780336aa184c33.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/2008812.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/04/07/2008812.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2011/03/29/1999242.html</id><title type="text">在.NET上进行线性代数等科学计算</title><summary type="text">对于工程类、图形等专业软件，需要大量的数学计算，而用的最多的就是线性代数的计算。 那么，在.NET之上，尤其.NET 4.0和VS2010之上要如何完成相关的线性代数计算呢？我想有如下几种方式： 一，自己动手、丰衣足食：根据自己软件的需要，增量式地逐步开发一些函数库。这种方式最大的问题是——重新制作轮子，所以大部分一般不宜采用这种方式。 二，使用开源（或免费的）组件：这种方式的好处是有很多优秀的开源（或免费）的工具可选择，缺点是使用起来需要较大的学习成本 三，使用商业组件：这种方式相对于第二种的好处是，支持和服务上有所保障，缺点不言而喻就是费用较高。 下面，我将重点介绍中.NET平台上有什么用</summary><published>2011-03-29T14:19:00Z</published><updated>2011-03-29T14:19:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2011/03/29/1999242.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2011/03/29/1999242.html"/><content type="html">&lt;p&gt;对于工程类、图形等专业软件，需要大量的数学计算，而用的最多的就是线性代数的计算。&lt;/p&gt; &lt;p&gt;那么，在.NET之上，尤其.NET 4.0和VS2010之上要如何完成相关的线性代数计算呢？我想有如下几种方式：&lt;/p&gt; &lt;p&gt;一，自己动手、丰衣足食：根据自己软件的需要，增量式地逐步开发一些函数库。这种方式最大的问题是&amp;#8212;&amp;#8212;重新制作轮子，所以大部分一般不宜采用这种方式。&lt;/p&gt; &lt;p&gt;二，使用开源（或免费的）组件：这种方式的好处是有很多优秀的开源（或免费）的工具可选择，缺点是使用起来需要较大的学习成本&lt;/p&gt; &lt;p&gt;三，使用商业组件：这种方式相对于第二种的好处是，支持和服务上有所保障，缺点不言而喻就是费用较高。&lt;/p&gt; &lt;p&gt;下面，我将重点介绍中.NET平台上有什么用的开源（免费）组件可用。&lt;/p&gt; &lt;p&gt;1，使用F#进行开发&lt;/p&gt; &lt;p&gt;F#作为一门混合语言（函数式语言+面向对象语言），从一开始就是具有进行数学计算的优势。不仅编写计算代码更自然，F#的函数库也为数学计算提供了很好的支持。&lt;/p&gt; &lt;p&gt;在F#的powerpack中包含有Microsoft.FSharp.Math的命名空间就是专门用于数学计算的。其中提供了matrix类型&amp;#8212;&amp;#8212;一种在进行线性代数计算中非常常用和重要的类型。&lt;/p&gt; &lt;p&gt;关于matrix类型可以阅读这里的&lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.PowerPack/Microsoft.FSharp.Math.type_Matrix-1.html"&gt;帮助&lt;/a&gt;。也可以参考这个博客：&lt;a title="http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-i-f.html" href="http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-i-f.html"&gt;http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-i-f.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;但是，要进行高效的线性代数计算，F#还需要借助外部的函数库，不过F#已经提供了相应的接口方便外部函数库集成进来，即是FSharp.PowerPack.Math.Providers.dll（这个程序集只有在FSharp-1.9.7.8中才有）。&lt;/p&gt; &lt;p&gt;比如，F#可以集成LAPACK（&lt;strong&gt;LAPACK&lt;/strong&gt;，其名為&lt;strong&gt;L&lt;/strong&gt;inear &lt;strong&gt;A&lt;/strong&gt;lgebra &lt;strong&gt;PACK&lt;/strong&gt;age的縮寫，是一以&lt;a href="http://zh.wikipedia.org/wiki/Fortran"&gt;Fortran&lt;/a&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80"&gt;程式語言&lt;/a&gt;寫就，用於&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%B8%E5%80%BC%E8%A8%88%E7%AE%97&amp;amp;action=edit&amp;amp;redlink=1"&gt;數值計算&lt;/a&gt;的&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E5%BC%8F%E9%9B%86&amp;amp;action=edit&amp;amp;redlink=1"&gt;函式集&lt;/a&gt;。 LAPACK提供了豐富的&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%B7%A5%E5%85%B7%E5%87%BD%E5%BC%8F&amp;amp;action=edit&amp;amp;redlink=1"&gt;工具函式&lt;/a&gt;，可用於諸如解多元&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E7%B7%9A%E6%80%A7%E6%96%B9%E7%A8%8B%E5%BC%8F&amp;amp;action=edit&amp;amp;redlink=1"&gt;線性方程式&lt;/a&gt;、&lt;a href="http://zh.wikipedia.org/wiki/%E7%B7%9A%E6%80%A7%E7%B3%BB%E7%B5%B1"&gt;線性系統&lt;/a&gt;方程組的&lt;a href="http://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95"&gt;最小平方&lt;/a&gt;解、計算&lt;a href="http://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%B5%E5%90%91%E9%87%8F"&gt;特徵向量&lt;/a&gt;、用於計算&lt;a href="http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%99%A3"&gt;矩陣&lt;/a&gt;&lt;a href="http://zh.wikipedia.org/wiki/QR%E5%88%86%E8%A7%A3"&gt;QR分解&lt;/a&gt;的&lt;a href="http://zh.wikipedia.org/wiki/%E8%B1%AA%E6%96%AF%E9%9C%8D%E5%BE%B7%E5%8F%98%E6%8D%A2"&gt;Householder轉換&lt;/a&gt;、以及&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%A5%87%E7%95%B0%E5%80%BC&amp;amp;action=edit&amp;amp;redlink=1"&gt;奇異值&lt;/a&gt;分解等問題。 在&lt;a href="http://www.netlib.org/lapack95/"&gt;NetLib&lt;/a&gt;亦提供了&lt;a href="http://zh.wikipedia.org/wiki/API"&gt;API&lt;/a&gt;經簡化的&lt;a href="http://zh.wikipedia.org/wiki/Fortran"&gt;Fortran&lt;/a&gt; 95版本的LAPACK95。LAPACK以&lt;a href="http://zh.wikipedia.org/wiki/BSD%E8%AE%B8%E5%8F%AF%E8%AF%81"&gt;BSD授權&lt;/a&gt;的方法釋出。）&lt;/p&gt; &lt;p&gt;具体的集成方式可以参考：&lt;a title="http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-ii.html" href="http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-ii.html"&gt;http://fdatamining.blogspot.com/2010/03/matrix-and-linear-algebra-in-f-part-ii.html&lt;/a&gt;，&lt;a title="http://fdatamining.blogspot.com/2010/03/compiling-lapack-for-net-usage.html" href="http://fdatamining.blogspot.com/2010/03/compiling-lapack-for-net-usage.html"&gt;http://fdatamining.blogspot.com/2010/03/compiling-lapack-for-net-usage.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;关于如何在F#中进行代数运算，这里有一个例子：&lt;a title="http://fdatamining.blogspot.com/2010/04/matrix-and-linear-algebra-in-f-part-iii.html" href="http://fdatamining.blogspot.com/2010/04/matrix-and-linear-algebra-in-f-part-iii.html"&gt;http://fdatamining.blogspot.com/2010/04/matrix-and-linear-algebra-in-f-part-iii.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;其实，我上面引用的博客地址：&lt;a title="http://fdatamining.blogspot.com/" href="http://fdatamining.blogspot.com/"&gt;http://fdatamining.blogspot.com/&lt;/a&gt;都是值得一读的。&lt;/p&gt; &lt;p&gt;2，使用IronPython进行开发&lt;/p&gt; &lt;p&gt;Python虽然不是函数式语言，但是其动态语言特性和代码风格也被很多人用来进行工程开发。而在Python之上有一个很著名的数学计算库&amp;#8212;&amp;#8212;&lt;a href="http://numpy.scipy.org/"&gt;NumPy&lt;/a&gt;和&lt;a href="http://scipy.org/"&gt;SciPy&lt;/a&gt;，它也被移植到了.NET之上（移植的过程是在微软的帮助下）。&lt;/p&gt; &lt;p&gt;要使用这两个库，最好的就是通过&lt;a href="http://pytools.codeplex.com/"&gt;Python Tools for Visual Studio&lt;/a&gt;&amp;#8212;&amp;#8212;一个在VS2010中实现的Python集成开发环境来使用。&lt;/p&gt; &lt;p&gt;具体的使用向导可以访问：&lt;a title="http://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net" href="http://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net"&gt;http://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net&lt;/a&gt;&lt;/p&gt; &lt;p&gt;3，使用C#进行开发&lt;/p&gt; &lt;p&gt;在.NET 4.0中，加入了System.Numerics命名空间，为数学计算提供了一定的基础，但是.NET中还是没有内置线性代数的计算函数库。不过要使用C#开发，上面提到的LAPACK和SciPy都可以用。&lt;/p&gt; &lt;p&gt;对于LAPACK，也有.NET的版本，就是：&lt;a href="http://www.dotnumerics.com/"&gt;DotNumerics&lt;/a&gt;&lt;/p&gt; &lt;p&gt;当然，还有很多第三方的开源、免费和商业的组件可用。&lt;/p&gt; &lt;p&gt;下面就来看看，还有那些组件：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href="http://www.extremeoptimization.com/Default.aspx"&gt;Extreme Optimization Numerical Libraries for .NET&lt;/a&gt;（商业）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.bluebit.gr/"&gt;.NET Matrix Library&lt;/a&gt;（商业）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.centerspace.net/"&gt;NMath .NET&lt;/a&gt;（商业）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.nag.co.uk/numeric/DT/DTdescription.asp"&gt;NAG Library for .NET&lt;/a&gt;（商业）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.obacs.com/"&gt;SCINET&lt;/a&gt;（商业） &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.mathdotnet.com/"&gt;Math.Net&lt;/a&gt;（开源）&lt;/li&gt; &lt;li&gt;&lt;a href="http://linearalgebra.codeplex.com/"&gt;Dambach Linear Algebra Framework&lt;/a&gt;（开源）&lt;/li&gt; &lt;li&gt;&lt;a href="http://ilnumerics.net/"&gt;ILNumerics.Net&lt;/a&gt;（开源）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.lutzroeder.com/dotnet/"&gt;Mapack&lt;/a&gt;（开源，我们的LCA软件就是使用的这个，其实我做了一个Provider可以任意切换到其他函数库上，后面我会再写篇博客来介绍）&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.meta-numerics.net/"&gt;Meta.Numerics&lt;/a&gt;（免费）&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;另外，对于使用哪种语言来进行科学计算开发，可以参考这篇博客的一些论述：&lt;a href="http://bbs.sciencenet.cn/home.php?mod=space&amp;amp;uid=234554&amp;amp;do=blog&amp;amp;id=354054"&gt;C#-F#-Ironpython与科学计算&lt;/a&gt;，当然个人觉得F#和IronPython都适合进行科学计算。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/1999242.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2011/03/29/1999242.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2010/12/01/1893909.html</id><title type="text">DefaultNetworkCredentials vs DefaultCredentials</title><summary type="text">最近在处理代理服务器登录过程的时候，遇到一个问题，就是不知道是用DefaultNetworkCredentials 还是 DefaultCredentials好。  通过参考这篇博客，http://blogs.msdn.com/b/buckh/archive/2004/07/28/199706.aspx，大致可以了解到：  两者的返回对象不同： ICrendentials DefaultCrede...</summary><published>2010-12-01T14:47:00Z</published><updated>2010-12-01T14:47:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2010/12/01/1893909.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2010/12/01/1893909.html"/><content type="html">&lt;p&gt;最近在处理代理服务器登录过程的时候，遇到一个问题，就是不知道是用DefaultNetworkCredentials 还是 DefaultCredentials好。&lt;/p&gt;  &lt;p&gt;通过参考这篇博客，&lt;a title="http://blogs.msdn.com/b/buckh/archive/2004/07/28/199706.aspx" href="http://blogs.msdn.com/b/buckh/archive/2004/07/28/199706.aspx"&gt;http://blogs.msdn.com/b/buckh/archive/2004/07/28/199706.aspx&lt;/a&gt;，大致可以了解到：&lt;/p&gt;  &lt;p&gt;两者的返回对象不同：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.icredentials%28VS.80%29.aspx"&gt;ICrendentials&lt;/a&gt; DefaultCredentials &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.networkcredential%28VS.80%29.aspx"&gt;NetworkCredential&lt;/a&gt; DefaultNetworkCredentials&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;而&lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.networkcredential%28VS.80%29.aspx"&gt;NetworkCredential&lt;/a&gt;又是实现&lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.icredentials%28VS.80%29.aspx"&gt;ICrendentials&lt;/a&gt;的。让人更郁闷的是，在MSDN文档中，他们的说明几乎都差不多。&lt;/p&gt;  &lt;p&gt;对于DefaultCredentials ，只是提到“The &lt;b&gt;ICredentials&lt;/b&gt; instance returned by &lt;b&gt;DefaultCredentials&lt;/b&gt; cannot be used to view the user name, password, or domain of the current security context.”，也就是说，&lt;b&gt;ICredentials&lt;/b&gt; 是无法查看到相关的用户登录信息。而对于NetworkCredential，这是.NET 2.0中引入的一个新类型，可以通过DefaultNetworkCredentials来获得，理论上可以让你读出用户名，以及加密的密码字符串。&lt;/p&gt;  &lt;p&gt;另外还有一个讨论也可以参考下：&lt;/p&gt;  &lt;p&gt;&lt;a title="http://stackoverflow.com/questions/1058636/using-defaultcredentials-and-defaultnetworkcredentials" href="http://stackoverflow.com/questions/1058636/using-defaultcredentials-and-defaultnetworkcredentials"&gt;http://stackoverflow.com/questions/1058636/using-defaultcredentials-and-defaultnetworkcredentials&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/1893909.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2010/12/01/1893909.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2010/11/23/1885175.html</id><title type="text">2011年法国产品生命周期环境信息披露计划</title><summary type="text">为迎接2011年7月1日开始实施的产品生命周期环境信息披露计划，法国可持续发展部已开始邀请企业及相关方参与相关准备工作，共同制定各类消费产品环境信息披露 - 包括产品碳足迹、资源消耗以及其它环境影响类型 - 的基本规范。项目申请截止日期2011年12月31日。  这是全世界首个以披露产品生命周期环境信息为目标的国家计划。此次环境信息披露计划开始实施后，法国市场上的产品将不仅需要显示价格信息，同时也...</summary><published>2010-11-23T02:48:00Z</published><updated>2010-11-23T02:48:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2010/11/23/1885175.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2010/11/23/1885175.html"/><content type="html">&lt;p&gt;为迎接2011年7月1日开始实施的产品生命周期环境信息披露计划，法国可持续发展部已开始邀请企业及相关方参与相关准备工作，共同制定各类消费产品环境信息披露 - 包括产品碳足迹、资源消耗以及其它环境影响类型 - 的基本规范。项目申请截止日期2011年12月31日。&lt;/p&gt;  &lt;p&gt;这是全世界首个以披露产品生命周期环境信息为目标的国家计划。此次环境信息披露计划开始实施后，法国市场上的产品将不仅需要显示价格信息，同时也需要提供环境信息，一方面保证消费者的环境知情权，另一方面也推动生产企业不断改进产品生命周期的环境影响，从而促进可持续消费与生产目标的落实。&lt;/p&gt;  &lt;p&gt;预期未来将有更多的欧盟和发达国家市场将推行此类计划，例如日本、韩国、德国都建立了国家支持的产品碳足迹计划，美国、加拿大、澳大利亚、泰国、马来西亚、巴西、墨西哥等国家都在建立国家LCA数据库，这对目前在产品生命周期管理方面准备不足的中国出口企业将是严峻考验。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.itke.com.cn"&gt;亿科环境科技公司&lt;/a&gt;长期从事中国的生命周期软件、数据库和解决方案的研究，愿为国内相关企业参与法国的此次计划以及今后的类似项目提供LCA方面的技术支持。&lt;/p&gt;  &lt;p&gt;更多信息见法国可持续发展部的产品生命周期环境信息披露计划网址：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.developpement-durable.gouv.fr/Sustainable-Consumption.html#1"&gt;http://www.developpement-durable.gouv.fr/Sustainable-Consumption.html#1&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/1885175.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2010/11/23/1885175.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/redmoon/archive/2010/10/21/1857383.html</id><title type="text">在MOSS 2010上配置PDF的搜索【简译】</title><summary type="text">原文地址：http://www.codeproject.com/KB/sharepoint/PDFiFIlterSharePoint2010.aspx  基本步骤如下：  1，从这里下载PDF iFilter 9.0 （for 64bit），并安装  2，下载PDF文件图标（pdf16.gif），并复制到C:\Program Files\Common Files\Microsoft Shared\...</summary><published>2010-10-21T04:37:00Z</published><updated>2010-10-21T04:37:00Z</updated><author><name>redmoon</name><uri>http://www.cnblogs.com/redmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/redmoon/archive/2010/10/21/1857383.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/redmoon/archive/2010/10/21/1857383.html"/><content type="html">&lt;p&gt;原文地址：&lt;a title="http://www.codeproject.com/KB/sharepoint/PDFiFIlterSharePoint2010.aspx" href="http://www.codeproject.com/KB/sharepoint/PDFiFIlterSharePoint2010.aspx"&gt;http://www.codeproject.com/KB/sharepoint/PDFiFIlterSharePoint2010.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;基本步骤如下：&lt;/p&gt;  &lt;p&gt;1，从&lt;a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=4025"&gt;这里&lt;/a&gt;下载PDF iFilter 9.0 （for 64bit），并安装&lt;/p&gt;  &lt;p&gt;2，下载PDF文件图标（&lt;a href="http://www.mossgurus.com/adnan/Documents/pdf16.gif"&gt;pdf16.gif&lt;/a&gt;），并复制到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES&lt;/p&gt;  &lt;p&gt;3，在C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML文件夹中，找到文件docIcon.xml文件，并把如下标记添加到ByExtension节点下面：&lt;/p&gt;  &lt;p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:edfe755c-30b7-43b3-b364-808922bb5e3a" &gt;&lt;pre style="background-color:White;overflow: auto;"&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Mapping &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Key&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="pdf"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="pdf16.gif"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;4，在搜索服务设置中的文件类型中，添加pdf文件类型&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;5，打开注册表编辑器，找到如下配置节：&lt;a href="file://\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office"&gt;\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office&lt;/a&gt; Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension&lt;img style="margin: " src="http://www.mossgurus.com/adnan/Lists/Photos/051910_2259_Howtoconfig1.png" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;6，在Extension中添加一个新项，命名为“.pdf”，并给默认值输入“{E8978DA6-047F-4E3D-9C78-CDBE46041603}”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="margin: " src="http://www.mossgurus.com/adnan/Lists/Photos/051910_2259_Howtoconfig2.png" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="margin: " src="http://www.mossgurus.com/adnan/Lists/Photos/051910_2259_Howtoconfig3.png" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;7，打开Windows Services管理器，重启“SharePoint Server Search 14 ”服务&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="margin: " src="http://www.mossgurus.com/adnan/Lists/Photos/051910_2259_Howtoconfig4.png" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;8，执行完全爬网搜索（或，之前进行过完全爬网的，可以执行增量爬网）&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;9，现在就可以搜索到包含在pdf文档中关键字了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="margin: " src="http://www.mossgurus.com/adnan/Lists/Photos/051910_2259_Howtoconfig5.png" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;PS：实际上，我按照以上步骤做完后，还是搜不到，不知道为什么…… ：（&lt;/p&gt;&lt;img src="http://www.cnblogs.com/redmoon/aggbug/1857383.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/redmoon/archive/2010/10/21/1857383.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
