﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-即插即用</title><link>http://www.cnblogs.com/robin0925/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 15 Mar 2010 16:57:46 GMT</lastBuildDate><pubDate>Mon, 15 Mar 2010 16:57:46 GMT</pubDate><ttl>60</ttl><item><title>Arachnode.net （一）下载，安装</title><link>http://www.cnblogs.com/robin0925/archive/2009/08/26/1554091.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Wed, 26 Aug 2009 01:28:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2009/08/26/1554091.html</guid><description><![CDATA[<p>阅读: 234 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2009-08-26 09:28 <a href="http://www.cnblogs.com/robin0925/archive/2009/08/26/1554091.html" target="_blank">原文链接</a></p><div>1.官方网址： http://arachnode.net/<br />2.下载后解压：<img height="409" alt="" src="http://images.cnblogs.com/cnblogs_com/robin0925/arachnode.JPG" width="202" border="0" /><br />3.安装 SQL Server 2005<br />4.安装 Vs2008 (VS2005 一定要SP1，否则其中有些项目文件无法加载，但是最好是用2008因为有Linq的组件)<br />5.从backup文件中还原数据库，运行SQL Sever Managerment Studio，点击&#8220;连接&#8221;，从设备还原数据库，.bak文件在解压文件夹里的zip文件中。<br />6.新建一个查询，执行存储过程："[dbo].[arachnode_usp_arachnode.net_RESET_DATABASE]"。<br />7.并设置console.proj作为启动项目，按F5生成整个工程。<br /><br /><br /></div><img src="http://www.cnblogs.com/robin0925/aggbug/1554091.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2009/08/26/1554091.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2009/08/26/1554091.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>抛砖引玉，谈谈一般的团队开发过程。</title><link>http://www.cnblogs.com/robin0925/archive/2009/05/03/1448257.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Sun, 03 May 2009 08:37:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2009/05/03/1448257.html</guid><description><![CDATA[<p>阅读: 1730 评论: 11 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2009-05-03 16:37 <a href="http://www.cnblogs.com/robin0925/archive/2009/05/03/1448257.html" target="_blank">原文链接</a></p><p>&nbsp;今天看了一篇文章，谈到CMM、SPI、AP三者的关系。</p>
<p>我写点心得，和大家一起谈谈一般的团队开发过程管理情况。</p>
<p>1.软件企业的核心能力：</p>
<ul>
    <li>开发技能：我们说包括：OO,架构，组件等等。</li>
    <li>开发过程：CMM、RUP、XP 等等。</li>
    <li>组织管理：文化、制度、团队、价值链，激励，培训等等。</li>
</ul>
<p>2.但是，实际的团队包括一般软体公司状况是：</p>
<ul>
    <li>&nbsp;需求：定义模糊，我们一般是以客户为导向，参差不齐的客户，所以，很多团队对需求变化的适应力差。</li>
    <li>&nbsp;架构：几乎一半的团队没哟架构师。我原来的公司没有。现在的公司有，但是，我还没有感觉到他的价值，感觉更像是需求分析师。</li>
    <li>&nbsp;测试：这个就不说了。。。</li>
    <li>&nbsp;评审：不知道大家对这个怎么理解，我觉得应该是很重要的，时发现、纠正问题的一个环节。</li>
    <li>&nbsp;过程：在CMMI中，虽然只占30%，但是，我觉得很重要，开发文档、注解、单元测试、项目进度跟踪。</li>
    <li>&nbsp;<span style="color: red">客户</span>：这一块不熟，因为我一直面对公司内部客户，所以比较好搞定。</li>
</ul>
<p>&nbsp;在三者中，</p>
<p>&nbsp;&nbsp;&nbsp; CMMI是标准，他描述，量化了团队的成熟度，和不足的地方，但是没有告诉你怎么改进；</p>
<p>&nbsp;&nbsp;&nbsp; SPI是对目标的检测和过程的优化。</p>
<p>&nbsp;&nbsp;&nbsp; AP是过程，包括XP，RUP等等。</p>
<p>我们来看看Xp,应该是很多程序员喜欢的，但是，有多少团队导入了XP开发。</p>
<p>&nbsp; XP：开发周期采用动态迭代式。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关键做法有：1.现场客户；2.计划博弈；3.系统隐喻；4.简化设计；5，集体拥有代码；6.结对编程;7.测试驱动;8.小型发布;9.重构;10.持续集成;11.每周40小时工作制;12.代码规范</p>
<p>&nbsp;计划博弈:</p>
<ul>
    <li>XP要求结合业务和技术情况，快速确定下一次发布的范围。在项目计划的4要素（费用、时间、质量和范围）中，由客户选择3个，而程序员可以选择剩下的1个。</li>
    <li>通常客户从业务角度确定项目范围、需求优先级和开发进度，开发人员则做出具体的成本和技术估计。</li>
    <li>XP强调简短和突发性的计划，有时只用几个小时甚至几分钟就能完成，而且可以随时按需进行多次计划。&nbsp;&nbsp;&nbsp; </li>
</ul>
<p>系统隐喻:</p>
<ul>
    <li>&nbsp;XP通过一个简单的关于整个系统如何运作的隐喻性描述（story）来指导全部开发。</li>
    <li>隐喻可以看作是一种高层次的系统构想，通常包含了一些可以参照和比较的类和模式，它还给出了后续开发所使用的命名规则。</li>
    <li>XP不需要事先进行详细地架构设计。</li>
</ul>
<p>重构：重构是指在不改变系统行为的前提下，重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加灵活性和提高性能。</p>
<p>测试驱动：先写测试，后编码</p>
<p>结对编程：</p>
<ul>
    <li>由两名程序员在同一台电脑上结成对子共同编写解决同一问题的代码。</li>
    <li>通常一个人写代码，另一个人同时负责保证代码的正确性和可读性，比如编写单元测试程序、进行代码走查。</li>
    <li>PP可以看作是一种非正式的持续进行的同行评审（peer review）。</li>
</ul>
<p>&nbsp;</p>
<p>哎呀，看到这些，我就有点感慨了，是不是这些东西太理论化了，和实际情况相差太多了。</p>
<p>实际情况，项目来了，马上开需求会，分任务，然后需求评审，然后系统设计，数据建模，系统框架，开发，测试，小版本出来。。。。。一系列。最起码，根本不可能一周40工作小时。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src="http://www.cnblogs.com/robin0925/aggbug/1448257.html?type=1" width="1" height="1" alt=""/><p>评论: 11　<a href="http://www.cnblogs.com/robin0925/archive/2009/05/03/1448257.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2009/05/03/1448257.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>六.观察者模式</title><link>http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Sat, 02 May 2009 08:00:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html</guid><description><![CDATA[<p>阅读: 280 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2009-05-02 16:00 <a href="http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html" target="_blank">原文链接</a></p><p><a title="其它模式:" href="http://www.cnblogs.com/robin0925/category/58139.html">其它模式:</a><br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="一.Strategy Pattern(策略模式)" href="http://www.cnblogs.com/robin0925/archive/2007/02/28/659520.html">一.Strategy Pattern(策略模式)</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="二.Template Method Pattern(模版方法模式)" href="http://www.cnblogs.com/robin0925/archive/2007/02/28/659540.html">二.Template Method Pattern(模版方法模式)</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="三.Bridge Pattern(橋接模式)" href="http://www.cnblogs.com/robin0925/archive/2007/02/28/659569.html">三.Bridge Pattern(橋接模式)</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="四.Visitor Pattern(觀察者模式)" href="http://www.cnblogs.com/robin0925/archive/2007/02/28/659589.html">四.Visitor Pattern(觀察者模式)</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #33cccc"><span style="color: #0000ff"><a title="五.Action Pattern(命令模式)" style="color: #0000ff" href="http://www.cnblogs.com/robin0925/archive/2007/02/28/659665.html">五.Action Pattern(命令模式)</a></span></span>&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008080"><a title="六.(Observer Pattern)观察者模式" style="color: #99cc00" href="http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html">六.(Observer Pattern)观察者模式</a><a title="六.(Observer Pattern)观察者模式" href="http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html">&nbsp;</a>&nbsp;&nbsp;</span></p>
<p>&nbsp;</p>
<p>设计模式，还没写完，今天有些空，接着写。</p>
<p>&nbsp;&nbsp; 今天看看观察模式。最近在帮公司做个考试系统。我们知道，考试有单选，多选，填空等等。。。分别视为一个对象的话，那对这个对象，就会有很多操作？</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_163630" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_163630').style.display='none'; document.getElementById('Code_Open_Image_163630').style.display='inline'; document.getElementById('Code_Open_Text_163630').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_163630" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_163630').style.display='none'; getElementById('Code_Closed_Image_163630').style.display='inline'; getElementById('Code_Closed_Text_163630').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_163630">Code</span><span id="Code_Open_Text_163630" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;QuestionBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Update();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SingleSelect&nbsp;:&nbsp;QuestionBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Update()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">singleselect</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MultiSelect&nbsp;:&nbsp;QuestionBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Update()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">multiselect</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Blank&nbsp;:&nbsp;QuestionBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Update()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">blank</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>&nbsp;</p>
<p>我们可以把它视为被观察者，即为被观察的对象。这里，我只列举了Update操作。</p>
<p>然后，我们观察者，既发出操作的对象。</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_163945" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_163945').style.display='none'; document.getElementById('Code_Open_Image_163945').style.display='inline'; document.getElementById('Code_Open_Text_163945').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_163945" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_163945').style.display='none'; getElementById('Code_Closed_Image_163945').style.display='inline'; getElementById('Code_Closed_Text_163945').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_163945">Code</span><span id="Code_Open_Text_163945" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;OperateBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">QuestionBase</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">QuestionBase</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Add(QuestionBase&nbsp;qb)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(qb);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Remove(QuestionBase&nbsp;qb)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Remove(qb);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;BatUpdate()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreach</span><span style="color: #000000">&nbsp;(QuestionBase&nbsp;qb&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;list)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;qb.Update()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">***</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UpdateOperator&nbsp;:&nbsp;OperateBase<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>&nbsp;</p>
<p>我们也用抽象类来隔离。这样。观察者(Question)和被观察者(Operator)之间分离，降低耦合。</p>
<p>现在的情景是，当我提交答案胡时候，</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">UpdateOperator&nbsp;update&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UpdateOperator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SingleSelect());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MultiSelect());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Blank());</span></div>
<p>可以方便把观察者(Question)和被观察者 Operator&nbsp; 组合起来，实现我们更新答案的功能！</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<img src="http://www.cnblogs.com/robin0925/aggbug/1447800.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2009/05/02/1447800.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>itec</title><link>http://www.cnblogs.com/robin0925/archive/2008/12/31/1366038.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Wed, 31 Dec 2008 05:15:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2008/12/31/1366038.html</guid><description><![CDATA[<p>阅读: 7 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2008-12-31 13:15 <a href="http://www.cnblogs.com/robin0925/archive/2008/12/31/1366038.html" target="_blank">原文链接</a></p>该文被密码保护。<img src="http://www.cnblogs.com/robin0925/aggbug/1366038.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/31/1366038.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/31/1366038.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>iTextShapr 合併 PDF 參考</title><link>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357355.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Thu, 18 Dec 2008 03:02:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357355.html</guid><description><![CDATA[<p>阅读: 90 评论: 2 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2008-12-18 11:02 <a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357355.html" target="_blank">原文链接</a></p><p>13</p>
  <img src="http://www.cnblogs.com/robin0925/aggbug/1357355.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357355.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357355.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>iTextSharp 對PDF簽名</title><link>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357265.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Thu, 18 Dec 2008 01:56:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357265.html</guid><description><![CDATA[<p>阅读: 460 评论: 1 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2008-12-18 09:56 <a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357265.html" target="_blank">原文链接</a></p><p>&nbsp;</p>
<p>&nbsp;</p>
<p>打开浏览器，点击&#8220;工具&#8221;----&gt;internet选项......<br />
切换到&#8220;内容&#8221;属性页,然后点击&#8220;证书&#8221;<br />
从证书列表中选择一个，然后点击&#8220;导出&#8221;<br />
按向导提示操作，选择提取证书包含私钥选项，当系统提示时，输入密码。<br />
现在您就可以使用本文提供的代码了，按以下步骤操作：<br />
1 编译和执行例子<br />
2 选取要签名的PDF文档<br />
3 选取目标文档的位置<br />
4 需要的话，添加或修改文档的属性<br />
5 选取您刚刚提取出的证书(.pfx文件)<br />
6 输入提取证书时的密码<br />
7 需要的话，添加签名信息（如签名原因，联系方式，地址等）<br />
8 点击&#8220;sign&#8221;按钮<br />
</p>
<p>在跟踪窗口中，您可以看到操作的进程，如果一切顺利的话，打开您指定的目标文件，文档已经签好名了。<br />
<br />
<br />
这一切是如何实现的呢<br />
<br />
<br />
在本文提供的代码中，我寫<span style="background-color: #ffffff">了一个叫做PDFSigner的库，它是一个使用iTextSharp的工具</span>包，实现了您进行数字签名所需要的一切。<br />
它包括三个类：<br />
Cert类：这个类用来封装证书，提取签名所需的信息，这个类中最重要的方法是：processCert（）<br />
MetaData类：元数据封装类<br />
PDFSigner类：这个类的构造，需要一个证书对象，和一个元数据对象，最重要的方法是sign方法<br />
<br />
processCert()方法：<br />
<br />
&nbsp; &nbsp; &nbsp; private void processCert()<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string alias = null;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PKCS12Store pk12;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //First we'll read the certificate file<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pk12 = new PKCS12Store(new FileStream(this.Path, FileMode.Open, FileAccess.Read), this.password.ToCharArray());<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //then Iterate throught certificate entries to find the private key entry<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IEnumerator i = pk12.aliases();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (i.MoveNext())<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alias = ((string)i.Current);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (pk12.isKeyEntry(alias))<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.akp = pk12.getKey(alias).getKey();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; X509CertificateEntry[] ce = pk12.getCertificateChain(alias);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.chain = new org.bouncycastle.x509.X509Certificate[ce.Length];<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int k = 0; k &lt; ce.Length; ++k)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; chain[k] = ce[k].getCertificate();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
这个方法取证书，遍历它的所有元素，找到私钥提取出来。如果可能的话，它也创建证书链。<br />
<br />
<br />
Sign()方法：<br />
<br />
&nbsp; &nbsp; &nbsp; public void Sign(string SigReason, string SigContact, string SigLocation, bool visible)<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PdfReader reader = new PdfReader(this.inputPDF);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Activate MultiSignatures<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0', null, true);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //To disable Multi signatures uncomment this line : every new signature will invalidate older ones !<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0'); <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; st.MoreInfo = this.metadata.getMetaData();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; st.XmpMetadata = this.metadata.getStreamedMetaData();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PdfSignatureAppearance sap = st.SignatureAppearance;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sap.SetCrypto(this.myCert.Akp, this.myCert.Chain, null, PdfSignatureAppearance.WINCER_SIGNED);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sap.Reason = SigReason;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sap.Contact = SigContact;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sap.Location = SigLocation;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (visible)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sap.SetVisibleSignature(new iTextSharp.text.Rectangle(100, 100, 250, 150), 1, null);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; st.Close();<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
这个函数讀取源PDF文档的内容，然后使用讀取的数据通过PDFStamper创建新的PDF。<br />
PDFStamper是一个PDF书寫器，可以签名PDF文档。签名的外观可以定制，所以您可以为签名添加签名原因，联系方式，地址等属性。<br />
SetCrypto方法允许我们使用从证书文件中提取出的私钥和链证书签名文档。<br />
最后，如果需要添加一个可视外观的话，可以使用SetVisibleSignature方法。<br />
PDFReader,PDFStamper和PdfSignatureAppearance由iTextSharp库提供。<br />
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src="http://www.cnblogs.com/robin0925/aggbug/1357265.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357265.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357265.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>iTextSharp 給現有的PDF插一個空章</title><link>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357293.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Thu, 18 Dec 2008 01:49:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2008/12/18/1357293.html</guid><description><![CDATA[<p>阅读: 220 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2008-12-18 09:49 <a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357293.html" target="_blank">原文链接</a></p><p>寫這個方法,也是搞了比較久的,因為資料比較少.</p>
<p>開始,用&nbsp;Adobe LiveCycle Designer 也是可以往 PDF裡面插入空章的.但是,空章的FieldID 很長一串,比如設置ID 為 A,則顯示</p>
<p>"topmostSUbform[0].Page1[0].A[0]",簽核的時候無法定位.用iTextSharp 的 PDFStamper往現有的PDF裡面插,就沒有這個問題!</p>
<p>但是,如何把 Reader的流到 PDFWriter裡面去,確實找了很久.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void AddEmptySignature(string strLocalFile,string outputFile)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PdfReader reader = new PdfReader(strLocalFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileStream sio = new FileStream(outputFile, FileMode.Create);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">PdfStamper stamp = new PdfStamper(reader, sio, '\0', true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PdfWriter writer = stamp.Writer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PdfFormField field = PdfFormField.CreateSignature(writer);<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field.SetFieldFlags(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PdfBorderDictionary border = new PdfBorderDictionary(0, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field.BorderStyle = border;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PdfAcroForm paf = writer.AcroForm;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paf.SetSignatureParams(field, "SignatureID", 30, 50, 235, 200);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stamp.AddAnnotation(field, 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stamp.FormFlattening = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stamp.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //writer.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //reader.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
 <img src="http://www.cnblogs.com/robin0925/aggbug/1357293.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357293.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2008/12/18/1357293.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>求建模工具?</title><link>http://www.cnblogs.com/robin0925/archive/2007/11/13/957756.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Tue, 13 Nov 2007 03:14:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2007/11/13/957756.html</guid><description><![CDATA[<p>阅读: 328 评论: 4 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2007-11-13 11:14 <a href="http://www.cnblogs.com/robin0925/archive/2007/11/13/957756.html" target="_blank">原文链接</a></p><font face="Courier New"><br />
各位兄弟們,我建模一直用Rose,但是,太占系統資源了.<br />
想找一輕量級的,發現VisualUML還不錯,可是只有試用版,目前是5.3的,找了很久也沒有找到破解的.<br />
想問問,兄弟們都用什麼?<br />
Visio不要說了,很不好用!<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cnblogs.com/Files/robin0925/resume.zip">大寶,在這裡下載!</a></font>
<img src="http://www.cnblogs.com/robin0925/aggbug/957756.html?type=1" width="1" height="1" alt=""/><p>评论: 4　<a href="http://www.cnblogs.com/robin0925/archive/2007/11/13/957756.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2007/11/13/957756.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Isolated Storage Basics in .NET</title><link>http://www.cnblogs.com/robin0925/archive/2007/08/06/844410.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Mon, 06 Aug 2007 01:52:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2007/08/06/844410.html</guid><description><![CDATA[<p>阅读: 73 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2007-08-06 09:52 <a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844410.html" target="_blank">原文链接</a></p>待研究!!
<img src="http://www.cnblogs.com/robin0925/aggbug/844410.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844410.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844410.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>.Net2.0用Profile存儲用戶信息</title><link>http://www.cnblogs.com/robin0925/archive/2007/08/06/844386.html</link><dc:creator>自適應軟件......</dc:creator><author>自適應軟件......</author><pubDate>Mon, 06 Aug 2007 01:43:00 GMT</pubDate><guid>http://www.cnblogs.com/robin0925/archive/2007/08/06/844386.html</guid><description><![CDATA[<p>阅读: 99 评论: 0 作者: <a href="http://www.cnblogs.com/robin0925/" target="_blank">自適應軟件......</a> 发表于 2007-08-06 09:43 <a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844386.html" target="_blank">原文链接</a></p><a href="http://www.cnblogs.com/tonyqus/archive/2005/12/18/userprofilev2.html">http://www.cnblogs.com/tonyqus/archive/2005/12/18/userprofilev2.html</a>
<img src="http://www.cnblogs.com/robin0925/aggbug/844386.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844386.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/robin0925/archive/2007/08/06/844386.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><span style="color:gray">(2010-03-16 00:34)</span><br/>· <a href="http://news.cnblogs.com/n/58794/" target="_blank">GDC2010：暴雪的游戏设计的核心原则</a><span style="color:gray">(2010-03-15 23:54)</span><br/>· <a href="http://news.cnblogs.com/n/58792/" target="_blank">Windows Azure:迫近的成功还是最终的利基？</a><span style="color:gray">(2010-03-15 23:39)</span><br/>· <a href="http://news.cnblogs.com/n/58791/" target="_blank">百度股价大涨超越Google</a><span style="color:gray">(2010-03-15 23:25)</span><br/>· <a href="http://news.cnblogs.com/n/58790/" target="_blank">Web标准化交流会3月27日四城市同时举行</a><span style="color:gray">(2010-03-15 23:19)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/58795/" target="_blank">2008-2010中文SNS的观察和实践</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>