﻿<?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/genson/</link><description>莫等待，光阴不会复来。</description><language>zh-cn</language><lastBuildDate>Tue, 07 Oct 2008 15:28:40 GMT</lastBuildDate><pubDate>Tue, 07 Oct 2008 15:28:40 GMT</pubDate><ttl>60</ttl><item><title>发现了一个ORM工具，LightSpeed</title><link>http://www.cnblogs.com/genson/archive/2008/09/17/1292441.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Wed, 17 Sep 2008 04:33:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/09/17/1292441.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1292441.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/09/17/1292441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1292441.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1292441.html</trackback:ping><description><![CDATA[<ul class="tick">
    <li><strong>请访问<a href="http://www.mindscape.co.nz/Products/LightSpeed/whylightspeed.aspx">http://www.mindscape.co.nz/Products/LightSpeed/whylightspeed.aspx</a></strong></li>
    <li><strong>LightSpeed reduces the code you need to write</strong><br />
    LightSpeed was designed to make writing software easier, faster and more enjoyable. There is minimal impact on your domain model classes and no need to write bulky XML mapping files. LightSpeed is all about being fast.</li>
    <li><strong>LightSpeed minimizes database round-trips</strong><br />
    Round-trips to the database and unoptimized queries are performance killers in any software development. We developed <a href="http://www.mindscape.co.nz/blog/?p=35">innovative new methods of fetching data</a> to help ensure efficient data retrieval for your projects. We understand that performance matters for your customers.</li>
    <li><strong>LightSpeed is very easy to learn</strong><br />
    The API for LightSpeed was designed to be simple, intuitive and easy to understand. Included in every edition is a comprehensive set of samples that show how to setup LightSpeed, run various queries, and much more. Tutorials can be found in the help documentation and <a href="http://www.mindscape.co.nz/blog/?cat=9">blog posts highlighting key areas</a> of functionality are provided often.</li>
    <li><strong>LightSpeed is commercially and fanatically supported</strong><br />
    We strongly believe that a supported customer is a happy customer. Software development can be challenging and knowing that there is somebody to turn to that will always answer your question means you can sleep easy. Normal support can be found in <a href="http://www.mindscape.co.nz/forums/Forum.aspx?ForumID=9">our forums</a> and Enterprise customers can use the priority email support facility.</li>
    <li><strong>LightSpeed uses modern design patterns</strong><br />
    Design patterns help developers create maintainable solutions and we are strong believers in aiding the use of these patterns. <a href="http://www.mindscape.co.nz/help/ls2/Help%20Topics/ArchitecturePatterns.html">LightSpeed incorporates several design patterns</a> right out of the box (Repository Pattern for example) and the samples show how to use LightSpeed with other design patterns.</li>
    <li><strong>LightSpeed is cost effective</strong><br />
    We picked a licensing model that makes it easy for you to calculate the cost for a project. No per-seat pricing, no need to install a licensing server - you simply buy a license for the IP owner (e.g. Just 1 if you build one project, 5 if you build 5 systems for 5 different customers).<br />
    <br />
    The time you will save by being able to deliver solutions faster and more efficiently means your LightSpeed purchase will pay for itself many times over in your development projects.</li>
    <li><strong>LightSpeed supports many different database engines</strong><br />
    The decision on what database engine you use is completely up to you and LightSpeed supports that. Currently LightSpeed works perfectly with SQL Server, Oracle, PostgreSQL, MySQL and SQLite. Changing to a different database is as simple as changing a single configuration value.</li>
    <li><strong>LightSpeed supports everything it should</strong><br />
    Nullables? No problem! Generics? Baked in! LightSpeed was designed 100% from the ground up to support .NET 2.0 language features. Everything in LightSpeed behaves exactly as it should.</li>
    <li><strong>LightSpeed source code is available</strong><br />
    If you need the additional assurance, the Enterprise edition of LightSpeed <a href="http://www.mindscape.co.nz/blog/?p=60">ships with the complete source code</a> to LightSpeed including many of the unit tests.</li>
    <li><strong>LightSpeed supports Visual Basic and C#</strong><br />
    If your favorite programming language is C# or VB then you'll be pleased to know that we focus on testing our software in both environments and provide documentation to ensure that both languages are supported. Your programming language is your choice.</li>
    <li><strong>We always deliver more than expected</strong><br />
    Once you have purchased LightSpeed we don't just forget you - we work hard to continue adding value to your purchase by providing <a href="http://www.mindscape.co.nz/blog/?p=63">nightly releases</a>, updated documentation and more. If there is anything we can help you with you are always welcome to ask. </li>
</ul>
<img src ="http://www.cnblogs.com/genson/aggbug/1292441.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42828/" target="_blank">[新闻]Mono 2.0 发布 Linux 上的 .NET 框架成熟了吗？</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>网站开发的需求分析报告</title><link>http://www.cnblogs.com/genson/archive/2008/09/08/1287146.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Mon, 08 Sep 2008 14:43:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/09/08/1287146.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1287146.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/09/08/1287146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1287146.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1287146.html</trackback:ping><description><![CDATA[一个网站项目的确立是建立在各种各样的需求上面的，这种需求往往来自于客户的实际需求或者是出于公司自身发展的需要，其中客户的实际需求也就是说这种交易性质的需求占了绝大部分。面对对网站开发拥有不同知识层面的客户，项目的负责人对用户需求的理解程度，在很大程度上决定了此类网站开发项目的成败。因此如何更好地的了解、分析、明确用户需求，并且能够准确、清晰以文档的形式表达给参与项目开发的每个成员，保证开发过程按照满足用户需求为目的正确项目开发方向进行，是每个网站开发项目管理者需要面对的问题。就这个问题，本文想提出自己的一些看法和建议，希望各位读者批评指正： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 一、 &nbsp; 那些人应该参与网站开发项目的需求分析活动 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 需求分析活动其实本来就是一个和客户交流，正确引导客户能够将自己的实际需求用较为适当的技术语言进行表达（或者由相关技术人员帮助表达）以明确项目目的的过程。这个过程中也同时包含了对要建立的网站基本功能和模块的确立和策划活动。所以项目小组每个成员、客户甚至是开发方的部门经理（根据项目大小而定）的参与是必要的。而项目的管理者在需求分析中的职责有如下几个方面： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 负责组织相关开发人员与用户一起进行需求分析。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 组织美术和技术骨干代表或者全部成员（与用户讨论）编写《网站功能描述书（初稿）》文档。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 组织相关人员对《网站功能描述书（初稿）》进行反复讨论和修改，确定《网站功能描述书》正式文档。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4、 &nbsp; 如果用户有这方面的能力或者用户提出要求，项目管理者也可以指派项目成员参与，而由用户编写和确定《网站功能描述书》文档。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 5、 &nbsp; 如果项目比较大的话，最好能够有部门经理或者他授权的人员参与到《网站功能描述书》的确定过程中来。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 二、 &nbsp; 完整的需求调查文档记录体系 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 在整个需求分析的过程中，将按照一定规范的编写需求分析的相关文档不但可以帮助 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 目成员将需求分析结果更加明确化，也为以后开发过程中做到了现实文本形式的备忘，并且有助于公司日后的开发项目提供有益的借鉴和模范，成为公司在项目开发中积累的符合自身特点的经验财富。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 需求分析中需要编写的文档主要是《网站功能描述书》，他基本上是整个需求分析活动的结果性文档，也是开发工程中项目成员主要可供参考的文档。为了更加清楚的描述《网站功能描述书》往往还需要编写《用户调查报告》和《市场调研报告》文档来辅助说明。各种文档最好有一定的规范和固定格式，以便增加其可阅读性和方便阅读者快速理解文档内容，相关规定将在本文后面讨论。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 三、 &nbsp; 向用户调查些什么 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 在需求分析的工程中，往往有很多不明确的用户需求，这个时候项目负责人需要调查用户的实际情况，明确用户需求。一个比较理想化的用户调查活动需要用户的充分配合，而且还有可能需要对调查对象进行必要的培训。所以调查的计划安排：时间、地点、参加人员、调查内容，都需要项目负责人和用户的共同认可。调查的形式可以是：发需求调查表、开需求调查座谈会或者现场调研。调查的内容主要如下： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 网站当前以及日后可能出现的功能需求。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 客户对网站的性能（如访问速度）的要求和可靠性的要求。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 确定网站维护的要求。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4、 &nbsp; 网站的实际运行环境。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 5、 &nbsp; 网站页面总体风格以及美工效果（必要的时候用户可以提供参考站点或者由公司向用户提供）。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 6、 &nbsp; 主页面和次级页面数量，是否需要多种语言版本等 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 7、 &nbsp; 内容管理及录入任务的分配。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 8、 &nbsp; 各种页面特殊效果及其数量（js,flash等） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 9、 &nbsp; 项目完成时间及进度（可以根据合同） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 10、明确项目完成后的维护责任。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 调查结束以后，需要编写《用户调查报告》，《报告》的要点是： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 调查概要说明：网站项目的名称；用户单位；参与调查人员；调查开始终止的时间；调查的工作安排。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 调查内容说明：用户的基本情况；用户的主要业务；信息化建设现状；网站当前和将来潜在的功能需求、性能需求、可靠性需求、实际运行环境；用户对新网站的期望等。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 调查资料汇编：将调查得到的资料分类汇总（如调查问卷，会议记录等等） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 四、 &nbsp; 市场调研活动内容 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 通过市场调研活动，清晰的分析相似网站的性能和运行情况。可以帮助项目负责人更加清楚的构想出自己开发的网站的大体架构和模样，在总结同类网站优势和缺点的同时项目开发人员可以博采众长开发出更加优秀的网站。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 但是由于实际中时间、经费、公司能力所限，市场调研覆盖的范围有一定的局限性，在调研市场同类网站的时候，应尽可能调研到所有比较出名和优秀的同类网站。应该了解同类网站的使用环境与用户的诧异点、类似点，同类产品所定义的用户详细需求（需要公司或者项目负责人有一定的关系）。市场调研的重点应该放在主要竞争对手的作品或类似网站作品的有关信息上。市场调研可以包括下列内容： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 市场中同类网站作品的确定。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 调研作品的使用范围和访问人群。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 调研产品的功能设计（主要模块构成，特色功能，性能情况等等） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4、 &nbsp; 简单评价所调研的网站情况。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 调研的目的是明确并且引导用户需求。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 对市场同类产品调研结束后，应该撰写《市场调研报告》主要包括一下要点： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 调研概要说明：调研计划；网站项目名称、调研单位、参与调研、调研开始终止时间。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 调研内容说明：调研的同类网站作品名称、网址、设计公司、网站相关说明、开发背景、主要适用访问对象、功能描述、评价等 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 可采用借鉴的调研网站的功能设计：功能描述、用户界面、性能需求、可采用的原因。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4、 &nbsp; 不可采用借鉴的调研网站的功能设计：功能描述、用户界面、性能需求、不可采用的原因。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 5、 &nbsp; 分析同类网站作品和主要竞争对手产品的弱点和缺陷以及本公司产品在这些方面的优势。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 6、 &nbsp; 调研资料汇编：将调研得到的资料进行分类汇总。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 五、 &nbsp; 清晰的需求分析输出——《网站功能描述书》： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 在拥有前期公司和客户签订的合同或者是标书的约束之下，通过较为详细具体的用户调查和市场调研活动，借鉴其输出的《用户调查报告》和《市场调研报告》文档，项目负责人应该对整个需求分析活动进行认真的总结，将分析前期不明确的需求逐一明确清晰化，并输出一份详细清晰的总结性文档――《网站功能描述书（最终版）》以供作为日后项目开发过程中的依据。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 《网站功能描述书》必须包含以下内容： &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 1、 &nbsp; 网站功能 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 2、 &nbsp; 网站用户界面（初步） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 3、 &nbsp; 网站运行的软硬件环境 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 4、 &nbsp; 网站系统性能定义 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 5、 &nbsp; 网站系统的软件和硬件接口 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 6、 &nbsp; 确定网站维护的要求 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 7、 &nbsp; 确定网站系统空间租赁要求 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 8、 &nbsp; 网站页面总体风格及美工效果。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 9、 &nbsp; 主页面及次页面大概数量。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 10、管理及内容录入任务分配。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 11、各种页面特殊效果及其数量。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 12、项目完成时间及进度（根据合同） &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 13、明确项目完成后的维护责任。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 综上所述，在网站项目的需求分析中主要是由项目负责人来确定对用户需求的理解程度，而用户调查和市场调研等需求分析活动的目的就是帮助项目负责人加深对用户需求的理解和对前期不明确的地方进行明确化，以便于日后在项目开发过程中作为开发成员的依据和借鉴。 &nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 当然一次成功的需求分析不仅需要项目负责人甚至是客户等所有项目相关人员的共同努力，还和公司的能力范围有一定关系。需要说明的是本文所述的需求分析活动内容是建立在较为理想的基础上的。由于各个公司现实情况的不同，读者可以根据自身情况不一借鉴吸收利用。重要的是能构根据本公司的情况，系统的规范此类文档做好保存和收集，相信对公司以后其他网站项目的进行以及公司自身实力的增强都会有很大帮助。 
<img src ="http://www.cnblogs.com/genson/aggbug/1287146.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42827/" target="_blank">[新闻]史上九大最强网络黑客</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Web开发设计的五大准则 </title><link>http://www.cnblogs.com/genson/archive/2008/09/08/1287143.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Mon, 08 Sep 2008 14:35:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/09/08/1287143.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1287143.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/09/08/1287143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1287143.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1287143.html</trackback:ping><description><![CDATA[<p>如果仓促而为，设计一个专题或者网站一定会成为恶梦。Web设计需要遵循一些准则并有计划地去做。</p>
<p><strong>Rule #1：先出设计图</strong></p>
<p>这是必须的。不要假设设计图在你的头脑中就开始设计web，必须要放到纸上。可以这样做：</p>
<p>1、拿尺子、笔和纸，按照具体的尺寸一行一行地画下来；<br />
2、记得考虑分界线的长度等，这样才能符合CSS的像素；<br />
3、记下设计的每一个细节免得忘记，如果把所有细节都累积到最后将是巨大的麻烦。</p>
<p><strong>Rule #2：配色</strong></p>
<p>这是设计的核心部分，只有颜色搭配合适才能使你的网页看起来不错。首先要决定的是主色，也即你在网页中多数使用的颜色；然后选择跟主色调搭配的第二颜色；不要选择超过三种颜色不然你的设计看起来会很乱。如果你想要更多的颜色，可以使用浅色或者深色的阴影来搭配主色调。</p>
<p>1、浏览十个跟你网页有同样主色调的网页；<br />
2、给几个人看你的配色方案并取得反馈；<br />
3、从浏览的网页和反馈你将更好地完善你的颜色搭配。</p>
<p><strong>Rule #3：从基本的版块开始着手</strong></p>
<p>定下配色和设计图之后，从最基本的框架开始构建——我的意思是说不添加任何文本。因为在版面中加入文本会使得架构混乱。方法如下：</p>
<p>1、每一个版块设定边界线，这样能够看到具体的尺寸和位置；<br />
2、对不同的版块使用不同的颜色，在完成版块后再改成你想要的颜色。</p>
<p><strong>Rule #4：理清CSS</strong></p>
<p>不要在你的HTML文件中将styling元素搞得太复杂，不然等到你修改的时候你就不得不到处搜索。所以将所有styling元素归置在一个单独的CSS文档中。</p>
<p>在styling之前理清你的CSS免得太过杂乱，导致你多次重复同一件事。CSS支持继承，也即parent block的style可以用于child block.，充分利用这条特性。命名CSS分类名也要易懂易记。比如使用&#8220;main_content&#8221;而不是&#8220;div_1&#8221;。</p>
<p><strong>Rule #5：制订多重CSS文档</strong></p>
<p>我们都知道，使用浏览器可以轻易地看到网页的输出，但使用另一浏览器的时候则可能发现输出不正常。这不是什么稀奇事儿，因为每个浏览器对HTML和CSS的处理方式都不一样。</p>
<p>为避免这种情况，每个浏览器准备一个CSS文档，这样所有浏览器都可以正常浏览。虽然这有一定的难度，但是记着指望一个CSS文档来满足所有浏览器是不可能的。</p>
<img src ="http://www.cnblogs.com/genson/aggbug/1287143.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42827/" target="_blank">[新闻]史上九大最强网络黑客</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>软件项目开发过程中应编写的十三类文档 </title><link>http://www.cnblogs.com/genson/archive/2008/09/08/1287136.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Mon, 08 Sep 2008 14:26:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/09/08/1287136.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1287136.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/09/08/1287136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1287136.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1287136.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;在软件项目开发过程中，应该按软件开发要求撰写十三类文档，文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;1、<span style="color: #0000ff">可行性分析报告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性，评述为了合理地达到开发目标可供选择的各种可能实施方案，说明并论证所选定实施方案的理由。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;2、<span style="color: #0000ff">项目开发计划<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>为软件项目实施方案制订出具体计划，应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;3、<span style="color: #0000ff">软件需求说明书</span>（软件规格说明书）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的，也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求，为生成和维护系统数据文件做好准备。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;4、<span style="color: #0000ff">概要设计说明书<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该说明书是概要实际阶段的工作成果，它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等，为详细设计提供基础。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;5、<span style="color: #0000ff">详细设计说明书<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;着重描述每一模块是怎样实现的，包括实现算法、逻辑流程等。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;6、<span style="color: #0000ff">用户操作手册<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>本手册详细描述软件的功能、性能和用户界面，使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识，特别是操作方法的具体细节。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;7、<span style="color: #0000ff">测试计划<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为做好集成测试和验收测试，需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;8、<span style="color: #0000ff">测试分析报告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>测试工作完成以后，应提交测试计划执行情况的说明，对测试结果加以分析，并提出测试的结论意见。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;9、<span style="color: #0000ff">开发进度月报<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>该月报系软件人员按月向管理部门提交的项目进展情况报告，报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;10、<span style="color: #0000ff">项目开发总结报告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>软件项目开发完成以后，应与项目实施计划对照，总结实际执行的情况，如进度、成果、资源利用、成本和投入的人力，此外，还需对开发工作做出评价，总结出经验和教训。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;11、<span style="color: #0000ff">软件维护手册<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明，便于软件的维护。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;12、<span style="color: #0000ff">软件问题报告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>指出软件问题的登记情况，如日期、发现人、状态、问题所属模块等，为软件修改提供准备文档。&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;13、<span style="color: #0000ff">软件修改报告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>软件产品投入运行以后，发现了需对其进行修正、更改等问题，应将存在的问题、修改的考虑以及修改的影响作出详细的描述，提交审批。
<img src ="http://www.cnblogs.com/genson/aggbug/1287136.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42827/" target="_blank">[新闻]史上九大最强网络黑客</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>软件开发流程 </title><link>http://www.cnblogs.com/genson/archive/2008/09/08/1287132.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Mon, 08 Sep 2008 14:20:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/09/08/1287132.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1287132.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/09/08/1287132.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1287132.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1287132.html</trackback:ping><description><![CDATA[<h2><a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/honliv/articles/1188932.html">软件开发流程</a> </h2>
软件开发流程分为: <br />
需求确认——概要设计——详细设计——编码——单元测试——集成测试——系统测试——维护 <br />
需求确认：需求规格说明书 <br />
概要设计：系统用例图，用例场景 <br />
详细设计：系统设计报告，数据库设计报告 <br />
测试：测试用例报告 
<img src ="http://www.cnblogs.com/genson/aggbug/1287132.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42827/" target="_blank">[新闻]史上九大最强网络黑客</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FindPrivateKey </title><link>http://www.cnblogs.com/genson/archive/2008/07/26/1252207.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Sat, 26 Jul 2008 12:19:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/07/26/1252207.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1252207.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/07/26/1252207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1252207.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1252207.html</trackback:ping><description><![CDATA[找与证书存储区中的特定 X.509 证书关联的私钥文件的位置和名称可能很困难。 使用 FindPrivateKey.exe 工具可以更快地完成此过程。
<p>X.509 证书是由计算机管理员或计算机上的任何用户安装的。 但是，该证书可以由使用其他帐户（例如 Windows XP 上的 ASPNET 或 Windows Server 2003 上的 NETWORK SERVICE 帐户）运行的服务来访问。</p>
<p>此帐户可能没有访问私钥文件的权限，因为证书原来并不是由它安装的。 FindPrivateKey 工具可以为您提供给定 X.509 证书的私钥文件的位置。 您可以在知道特定 X.509 证书的私钥文件的位置后立即添加或移除对此文件的权限。</p>
<p>使用证书确保安全性的示例在 Setup.bat 文件中使用 FindPrivateKey 工具。 找到私钥文件后，您可以使用其他工具（如 Cacls.exe）设置该文件的适当访问权限。 </p>
<p>使用用户帐户（如自承载可执行文件）运行 Windows Communication Foundation (WCF) 服务时，请确保该用户帐户具有该文件的只读访问权限。 使用 Internet 信息服务 (IIS) 运行 WCF 服务时，该服务使用的默认帐户是 Windows XP 上的 ASPNET 或 Windows Server 2003 上的 NETWORK SERVICE，该帐户默认情况下没有私钥文件的访问权限。 </p>
<h2 class="heading">示例</h2>
<div class="seeAlsoNoToggleSection" id="sectionSection0">
<p>访问进程没有读取特权的证书时，您将看到类似如下示例的异常消息。</p>
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>System.ArgumentException was unhandled
            Message="The certificate 'CN=localhost' must have a private key that is capable of key exchange.  The process must have access rights for the private key."
            Source="System.ServiceModel"</pre>
            </td>
        </tr>
    </table>
</span></div>
<p>发生这种情况时，可以使用 FindPrivateKey 工具查找私钥文件，然后为服务正在其中运行的进程设置访问权限。 例如，可以使用下面示例中所示的 Cacls.exe 工具完成此操作。</p>
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R</pre>
            </td>
        </tr>
    </table>
</span></div>
<h3 class="subHeading">生成 FindPrivateKey 项目</h3>
<div class="subSection">
<ol>
    <li>
    <p>打开 Windows 资源管理器，然后定位到安装示例的目录位置下的语言特定的子目录。</p>
    </li>
    <li>
    <p>双击 .sln 文件图标，在 Visual Studio 中打开该文件。</p>
    </li>
    <li>
    <p>在<strong>&#8220;生成&#8221;</strong>菜单中选择<strong>&#8220;重新生成解决方案&#8221;</strong>。 客户端程序文件在 client\bin 中生成，服务程序文件在 service\bin 中生成。 </p>
    </li>
    <li>
    <p>生成解决方案将生成如下文件：FindPrivateKey.exe。</p>
    </li>
</ol>
</div>
</div>
<h2 class="heading">约定 - 命令行条目</h2>
<div class="seeAlsoNoToggleSection" id="sectionSection1">
<p>&#8220;[<em>选项</em>]&#8221;代表一组可选参数。</p>
<p>&#8220;{<em>选项</em>}&#8221;代表一组强制参数。</p>
<p>&#8220;<em>选项1</em> | <em>选项2</em>&#8221;代表一组选项中的一个选项。</p>
<p>&#8220;&lt;<em>值</em>&gt;&#8221;代表要输入的参数值。</p>
</div>
<h2 class="heading">用法</h2>
<div class="seeAlsoNoToggleSection" id="sectionSection2">
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>FindPrivateKey &lt;storeName&gt; &lt;storeLocation&gt; [{ {-n &lt;subjectName&gt;} | {-t &lt;thumbprint&gt;} } [-f | -d | -a]]</pre>
            </td>
        </tr>
    </table>
</span></div>
<p>&nbsp;</p>
<p>其中：</p>
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;subjectName&gt; The subject name of the certificate
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;thumbprint&gt;&nbsp; The thumbprint of the certificate (You can use the Certmgr.exe tool to find this)
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output file name only
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output directory only
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output absolute file name</pre>
            </td>
        </tr>
    </table>
</span></div>
<p>如果没在命令提示符中指定任何参数，将显示此帮助文本。 </p>
</div>
<h2 class="heading">示例</h2>
<div class="seeAlsoNoToggleSection" id="sectionSection3">
<p>此示例在 Current User.FindPrivateKey My CurrentUser -n "CN=localhost" 的&#8220;个人&#8221;存储区中查找主题名称为 "CN=localhost" 的证书的文件名。</p>
<p>此示例在 Current 的&#8220;个人&#8221;存储区中查找主题名称为 "CN=localhost" 的证书的文件名，并输出完整的目录路径。</p>
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>User.FindPrivateKey My CurrentUser -n "CN=localhost" -a
            </pre>
            </td>
        </tr>
    </table>
</span></div>
<p>此示例在&#8220;本地计算机&#8221;的&#8220;个人&#8221;存储区中查找指纹为 "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" 的证书的文件名。</p>
<div class="code"><span codelanguage="other">
<table cellspacing="0" cellpadding="0" width="100%">
    <tr>
            <th>&nbsp;</th>
            <th><span class="copyCode" onkeypress="CopyCode_CheckKey(this)" onmouseover="ChangeCopyCodeIcon(this)" onclick="CopyCode(this)" tabindex="0" onmouseout="ChangeCopyCodeIcon(this)"><img class="copyCodeImage" alt="CopyCode image" src="http://www.cnblogs.com/genson/admin/ms-help://MS.MSDNQTR.v90.chs/wcf_wf_samples/local/copycode.gif" align="absMiddle" name="ccImage" /></img>复制代码</span></th>
        </tr>
        <tr>
            <td colspan="2">
            <pre>FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" &#8211;c</pre>
            </td>
        </tr>
    </table>
</span></div>
</div>
<img src ="http://www.cnblogs.com/genson/aggbug/1252207.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42826/" target="_blank">[新闻]微软拟2010年推新版SQL 强化商业智能功能</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>使用yield进行递归</title><link>http://www.cnblogs.com/genson/archive/2008/06/20/1226451.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Fri, 20 Jun 2008 03:18:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/06/20/1226451.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1226451.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/06/20/1226451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1226451.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1226451.html</trackback:ping><description><![CDATA[<p><font face="Verdana">public partial class Controls_SectionIndex : System.Web.UI.UserControl<br />
{<br />
&nbsp;&nbsp;&nbsp; private NBearLite.Database Db = NBearLite.Database.Default;</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; protected void Page_Load(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sectionType = Convert.ToInt32(Request.QueryString["sectiontype"]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rep.DataSource = ListIndex(sectionType, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rep.DataBind();</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; }</font></p>
<font face="Verdana">
<p><br />
&nbsp;&nbsp;&nbsp; public IEnumerable&lt;GHSection&gt; ListIndex(int sectionType, int parentID)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;SqlGHSection&gt; list = Db.Select(Tables.GHSection)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Where(Tables.GHSection.SectionType == sectionType &amp;&amp; Tables.GHSection.ParentID == parentID)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .OrderBy(Tables.GHSection.ID.Asc)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ToList&lt;SqlGHSection&gt;();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (GHSection node in list)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yield return node;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (GHSection node3 in ListIndex(sectionType, node.ID))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yield return node3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</font></p>
<img src ="http://www.cnblogs.com/genson/aggbug/1226451.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42825/" target="_blank">[新闻]GMail Labs 新功能 - 做数学题确认是否发出邮件</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>通过 System.Diagnostics 监控您的应用程序</title><link>http://www.cnblogs.com/genson/archive/2008/06/11/1217287.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Wed, 11 Jun 2008 03:57:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/06/11/1217287.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1217287.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/06/11/1217287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1217287.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1217287.html</trackback:ping><description><![CDATA[<h5 style="padding-top: 2px">本页内容</h5>
<table style="margin-top: 7px; margin-bottom: 12px" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#E5"><img height="9" alt="事件日志" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#E5">事件日志</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#EOC"><img height="9" alt="性能计数器" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#EOC">性能计数器</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#EBE"><img height="9" alt="Process 类" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#EBE">Process 类</a></td>
        </tr>
    </tbody>
</table>
<p>问题总会有解决办法。您刚刚部署的应用程序在开发计算机上一切都好，但在生产中却出了差错。问题可能会马上显现，也可能会随着时间的推移慢慢显露。现在怎么办呢？</p>
<p>开发人员会匆忙推出代码的调试版本并重新部署，这种情形太常见了。加载这一特别版本时，通常会向磁盘上的某个文件中随机写入信息，以便开发人员以后进行研究，以弄清究竟发生了什么问题。除此之外一定还有更好的办法。</p>
<p>解决方案就在 System.Diagnostics 命名空间中，该命名空间提供了用于与事件日志、性能计数器和系统进程进行交互的类。您可以在生产应用程序中保持对此监控代码的启用，并在发生问题时查看相关信息。下面让我们看一下如何在应用程序中使用这些类。</p>
<a name="E5"></a>
<h2>事件日志</h2>
<p>无数开发人员都会通过向外部文件中写入信息来调试其应用程序。除了会在硬盘上留下少量垃圾外，此方法通常需要花费很长的时间，无法进行分类或筛选，并且极少能够提供丰富数据。那么为什么还有如此多的人使用这种方法呢？原因只是他们没有意识到使用事件日志有多么轻松。</p>
<p>让我们从耗费时间的写入事件日志的方法入手，说明相关的概念，然后研究快速而容易的方法。首先，向您的代码中添加一个导入语句来引用 System.Diagnostics 命名空间，然后在您的错误处理例程中插入以下代码：111</p>
<pre class="codeSample">&#8216; 如果源不存在，则创建该
&#8216; 源。
If Not EventLog.SourceExists("MSDNDemo") Then
EventLog.CreateEventSource("MSDNDemo", _
"CustomLog")
End If
&#8216; 创建一个 EventLog 实例并指定其
&#8216; 源。
Dim myLog As New EventLog()
myLog.Source = "MSDNDemo"
&#8216; 向事件日志中写入一个信息性条目。
myLog.WriteEntry("Hello from the event log.")
</pre>
<p>上面部分的代码会检查您是否已经创建了事件的源。大多数开发人员都会使用其应用程序的名称，从而轻松快速地从事件日志的众多条目中找出该应用程序的事件。 </p>
<p>如果源不存在，则会创建源，并将其与一个事件日志相关联。您可以使用该事件日志的现有部分，比如 Application 和 System 部分，也可以通过指定名称来创建您自己的部分（就像本演示这样）。</p>
<p>创建源之后，向事件日志中添加事件就像创建新的 EventLog 对象并将其与源相关联一样简单。本示例中仅写入了&#8220;Hello from the event log&#8221;，但您可以向 WriteEntry 方法传递详细的信息（比如堆栈跟踪），并可将任何信息放在事件日志中。</p>
<div style="width: 400px"><img height="371" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig01.gif" width="400" border="0" /><br />
<p class="figureCaption"><strong>图 1 用户在 Custom 部分中生成的事件日志条目</strong></p>
<div class="figureRule"></div>
</div>
<p>让此代码执行数次，您的事件日志将会显示图 1 所示的活动。您可以在 Windows&#174; 事件查看器 (%windir%\system32\eventvwr.exe) 中进行查看，如图 1 所示。您也可以从服务器资源管理器中的 Visual Studio&#174; 内部查看事件日志，如图 2 所示。如果您双击这些条目之一，您即可以查看详细信息和您的自定义错误消息（请参阅图 3）。</p>
<div style="width: 300px"><img height="300" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig02.gif" width="300" border="0" /><br />
<p class="figureCaption"><strong>图 2 Visual Studio 内的事件日志</strong></p>
<div class="figureRule"></div>
</div>
<p>EventLog.WriteEntry 方法具有 10 个重载，为您提供了极大的灵活性和控制能力。其中最有用的一个重载允许您指定您要记录的事件的类型。在图 1 中请注意，每个项目都为&#8220;Information&#8221;（信息）类型。对于演示目的，这就已经足够了，但在实际情况下，您可能会有大量不同的事件。WriteEntry 方法允许您提供事件类型，比如错误、警告、信息、成功审核或失败审核：</p>
<pre class="codeSample">     myLog.WriteEntry("Your error here.", _
EventLogEntryType.Error)
</pre>
<div style="width: 300px"><img height="293" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig03.gif" width="300" border="0" /><br />
<p class="figureCaption"><strong>图 3 用户生成的事件日志</strong></p>
<div class="figureRule"></div>
</div>
<p>下面让我们来试试使用快速而容易的方法。Visual Basic&#174; 2005 引入了 My 对象作为快速进入框架的手段。您可以使用 My 向事件日志中快速添加事件：</p>
<pre class="codeSample">My.Application.Log.WriteException( _
"Written from My", TraceEventType.Warning, _
"Additional Information")
</pre>
<p>您也可以通过 WriteEntry 方法使用 My：My.Application.Log.WriteEntry("Written from My", TraceEventType.Error)</p>
<p>但如果您调用此方法并查看事件日志，则可能会看不到消息，因为 My 对象允许您根据配置文件中的设置，将您的消息路由到不同的侦听程序。有关这一极其强大的功能的详细论述不属于本专栏文章的范围，但您可以在&#8220;<a href="http://msdn2.microsoft.com/5049kcd2.aspx" target="_blank">My.Application.Log 对象</a>&#8221;找到更多信息。 </p>
<p>使用事件日志时应当审慎，没有比应用程序在事件日志中罗里罗嗦地写满毫无价值的消息更令人讨厌的了。如果有错误、重要警告或信息，则应记录。对条目指定类型将具有极大的帮助，因为 Windows 的事件查看器可以对大多数列进行筛选。</p>
<div style="margin-top: 3px; margin-bottom: 10px"><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#top"><img height="9" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" border="0" /></a><a class="topOfPage" href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#top">返回页首</a></div>
<a name="EOC"></a>
<h2>性能计数器</h2>
<p>事件日志是写入消息的理想场所，但如果想要知道应用程序运行时内部发生了什么，应该怎么办呢？此时理所当然应当选择性能计数器。</p>
<p>许多开发人员都精通于使用 Windows 性能监视器来查看 CPU 和内存的使用情况或硬盘信息（请参阅图 4）。您知道可以使用 PerformanceCounter 类添加您自己的计数器和数据点吗？当 PerformanceCounter 和 Windows 性能监视器结合使用时，就像随时可以将 EKG 计算机与您的应用程序挂钩一样。</p>
<div style="width: 400px"><img height="333" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig04.gif" width="400" border="0" /><br />
<p class="figureCaption"><strong>图 4 标准 Windows 性能工具</strong></p>
<div class="figureRule"></div>
</div>
<p>在讨论添加自定义计数器之前，让我们研究一下已经存在的计数器。在您的一台计算机上，打开 Visual Studio 中的服务器资源管理器，并导航到&#8220;Performance Counters&#8221;（性能计数器）。您将看到一个巨大的计数器类别列表，展开后可以显示每个类别的众多计数器（请参阅图 5）。</p>
<div style="width: 250px"><img height="349" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig05.gif" width="250" border="0" /><br />
<p class="figureCaption"><strong>图 5 性能计数器</strong></p>
<div class="figureRule"></div>
</div>
<p>您可以在您的应用程序中使用这些系统托管的计数器。接着展开&#8220;Memory&#8221;（内存）类别，然后展开&#8220;Available Bytes&#8221;（可用字节）计数器。将该&#8220;Available Bytes&#8221;（可用字节）计数器拖动到您的应用程序中的新 Windows 窗体上。</p>
<p>在该窗体上，放置一个标签和一个新计时器对象，使其 Enabled 属性设置为 true。添加以下代码：</p>
<pre class="codeSample">Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = Me.PerformanceCounter1.NextValue
End Sub
</pre>
<p>这是一个非常简单的示例，在实际的应用程序中您不会这样做，但它向您显示了如何向应用程序中添加基本的监控或检索系统计数器。在实际情况下，您可以会根据某个值的状态采取行动、记录此信息或执行许多操作中的任意一项操作。 </p>
<p>很可能您打算编写一些自定义的计数器，以便监控您的应用程序在任何特定的时间的运行状况和性能。若要添加新的计数器，请在服务器资源管理器中右键单击&#8220;Performance Counters&#8221;（性能计数器）项目，然后选择&#8220;Create New Category&#8221;（创建新类别）。</p>
<p>在本示例中，让我们创建一个名为 TestCategory 的类别，并添加一个名为 TestCounter 的新计数器。这一次，您将通过代码访问该计数器。</p>
<p>首先将一个新计时器和按钮拖放到窗体上，然后向窗体中添加一个名为 counter 的私有变量：</p>
<pre class="codeSample">Private counter As PerformanceCounter
</pre>
<p>在按钮单击事件中，添加以下代码： </p>
<pre class="codeSample">&#8216;初始化计数器对象
counter = New PerformanceCounter("TestCategory", "TestCounter", False)
&#8216; 将其值设置为 0
counter.RawValue = 0
&#8216; 启动时间以更新该计数器
Timer2.Enabled = True
</pre>
<p>在计时器事件中，添加以下代码：</p>
<pre class="codeSample">   Counter.IncrementBy(New Random().Next(-5, 10))
</pre>
<p>这会导致该计数器按照 -5 到 10 之间的某个随机数递增。本示例使用了随机数，但这个数字还可以是已处理的销售或订单数、登录的用户数、记录的错误数或在您的应用程序中进行跟踪的任何有意义的事物。 </p>
<p>在启动该示例应用程序之前，请从管理工具下加载性能监视器。这一次，请单击 + 号来添加一个新计数器。在&#8220;Performance Object&#8221;（性能对象）下，您现在会看到您新创建的 TestCategory。您可以从下拉列表中选择该对象，并从计数器列表中选择 TestCounter。</p>
<p>在性能监视器运行的情况下，单击示例应用程序的按钮。您应该可以看到一个类似于图 6 的图形。</p>
<p>您在示例代码中可以看到使用了 IncrementBy 方法来增加或减少计数器的数值。如果您想要使计数器以 1 为增减幅度增加或减少，只需调用 Increment 和 Decrement 方法即可。</p>
<div style="width: 400px"><img height="282" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig06.gif" width="400" border="0" /><br />
<p class="figureCaption"><strong>图 6 性能监视器中显示的 TestCounter 结果</strong></p>
<div class="figureRule"></div>
</div>
<p>对于像本示例这样的使用服务器资源管理器的情形，一些开发人员会想是否可以通过代码完成所有操作。是的，您可以编写如下代码：</p>
<pre class="codeSample">   If Not
PerformanceCounterCategory.Exists("MSDNSample")
Then
PerformanceCounterCategory.Create("MSDNSample", _
"用于显示如何添加自定义计数器", _
PerformanceCounterCategoryType.SingleInstance, _
"MSDNSampleCounter", _
"用于显示如何添加自定义计数器")
End If
</pre>
<p>并将其添加到您的按钮单击事件中，以便完全通过代码创建不同的类别和计数器。如果您更新其他代码，使其指向这个类别和计数器，您将发现该项目可以完全像该示例一样运行和工作。 </p>
<div style="margin-top: 3px; margin-bottom: 10px"><a href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#top"><img height="9" alt="返回页首" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif" width="7" border="0" /></a><a class="topOfPage" href="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/SystemDiag.mspx#top">返回页首</a></div>
<a name="EBE"></a>
<h2>Process 类</h2>
<p>本专栏文章至此已经让您了解了如何使用事件日志和性能计数器；下面让我们深入研究 System.Diagnostics 命名空间的第三个方面，即 Process 类。</p>
<p>首先，让我们定义一个进程：进程就是一个运行的应用程序。在具有 Process 类和正确权限的情况下，您可以访问有关用户系统中各个进程的信息，并执行诸如启动或中止这样的操作。</p>
<p>Process 类可以让您访问大量有关应用程序或其他进程的数据。对于此处的示例，让我们提升示例应用程序的基本优先级。</p>
<p>下面是具体方案。您的应用程序正运行于一台服务器上；该应用程序是该服务器上运行的主要应用程序和功能，但由于后台任务占用了过多的处理器时间，该应用程序性能不佳。您可以执行以下两种操作之一：降低后台任务的优先级，或提升您的任务的优先级。（在大多数情况下，您不需要调整某个进程的优先级，因为 Windows 可以很好地运行多个进程并换入和换出各个进程。）</p>
<p>为了使用 Process 类，您首先需要获取对您的进程或其他进程的引用。由于您想要提升当前进程，因此您将使用：</p>
<pre class="codeSample">   Dim myProcess As Process = _
Process.GetCurrentProcess()
</pre>
<p>若要访问您的本地计算机或远程计算机上的其他进程，您需要改用 GetProcessessByName 方法：</p>
<pre class="codeSample">   Dim theProcesses() As Process = _
myprocess.GetProcessesByName( _
"ProcessName", "MachineName")
</pre>
<p>获得了进程引用后，您可以使用其属性找到有关该进程的大量信息。有关属性的完整列表，请参阅&#8220;<a href="http://msdn2.microsoft.com/library/system.diagnostics.process_members.aspx" target="_blank">.NET Framework Class Library Process Members</a>&#8221;（英文）。 </p>
<p>提升优先级仅需要一行代码：</p>
<pre class="codeSample">myProcess.PriorityClass = ProcessPriorityClass.RealTime
</pre>
<p>您已将应用程序提升为 RealTime。这是您在 OS 中可以设置的最高级别，它可以使应用程序的优先级高于几乎任何其他进程。如果您的应用程序占用所有系统资源，则可能会导致问题。启动任务管理器，以确定 OS 能够看到已提升的该应用程序，如图 7 所示。 </p>
<div style="width: 400px"><img height="397" alt="a" src="http://www.microsoft.com/china/MSDN/library/netFramework/netframework/art/Diagnostics_fig07.gif" width="400" border="0" /><br />
<p class="figureCaption"><strong>图 7 提升至 RealTime</strong></p>
<div class="figureRule"></div>
</div>
<p>您可以使用 process 命令执行大量常见任务。现在假设您想要以最小化方式启动 Microsoft Internet Explorer&#174;，并导航到 Visual Basic Developer Center。您只需使用以下代码即可：</p>
<pre class="codeSample">Dim startInfo As New ProcessStartInfo("IExplore.exe")
startInfo.WindowStyle = ProcessWindowStyle.Minimized
startInfo.Arguments = "msdn.microsoft.com/vbasic"
Process.Start(startInfo)
</pre>
<p>Process 类还适合于打印。 </p>
<pre class="codeSample">Dim myDocumentsPath As String = _
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
myProcess.StartInfo.FileName = myDocumentsPath + "\MyFile.doc"
myProcess.StartInfo.Verb = "Print"
myProcess.StartInfo.CreateNoWindow = True
myProcess.Start()
</pre>
<p>您可以看到，System.Diagnostics 命名空间有许多用途：从向事件日志中记录事件到读写性能计数器，再到处理系统进程。这是一组功能异常强大、用途极为广泛的工具，每个开发人员都应熟悉并在工作中使用。</p>
<p>请将您的问题和意见发送至 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#97;&#115;&#105;&#99;&#115;&#64;&#109;&#105;&#99;&#114;&#111;&#115;&#111;&#102;&#116;&#46;&#99;&#111;&#109;" target="_blank">basics@microsoft.com</a>。</p>
<p>Brad McCabe 是 Microsoft 的一位项目经理，除了其他事务外，他还负责 MSDN 上的 Visual Basic Developer Center。</p>
<p>本文摘自 <a href="http://msdn.microsoft.com/msdnmag/issues/06/07/default.aspx" target="_blank">2006 年 7 月</a>出版的<a href="http://msdn.microsoft.com/msdnmag/default.aspx" target="_blank">《MSDN Magazine》</a>。 </p>
<p><a href="http://www.microsoft.com/china/misc/cpyright.htm" target="_blank">&#169; 2006 Microsoft Corporation 版权所有。保留所有权利。使用规定。 </a></p>
<img src ="http://www.cnblogs.com/genson/aggbug/1217287.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42824/" target="_blank">[新闻]OpenOffice四处创造纪录 占有全球25%办公软件市场</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>JavaScript 获取浏览器的显示区域大小信息</title><link>http://www.cnblogs.com/genson/archive/2008/05/13/1194751.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Tue, 13 May 2008 02:39:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/05/13/1194751.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1194751.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/05/13/1194751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1194751.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1194751.html</trackback:ping><description><![CDATA[摘要: 区域说明 JavaScript Code 网页可见区域宽 document.body.clientWidth 网页可见区域高 document.body.clientHeight 网页可见区域宽(包括边线的宽) document.body.offsetWidth 网页可见区域高(包括边线的宽) document.body.offsetHeight 网页正文全文宽 document.body.scr&nbsp;&nbsp;<a href='http://www.cnblogs.com/genson/archive/2008/05/13/1194751.html'>阅读全文</a><img src ="http://www.cnblogs.com/genson/aggbug/1194751.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42823/" target="_blank">[新闻]云计算硝烟四起 IBM携Bluehouse参战</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>10款让你震撼的图片展示js代码</title><link>http://www.cnblogs.com/genson/archive/2008/03/26/1122455.html</link><dc:creator>菜无罪1</dc:creator><author>菜无罪1</author><pubDate>Wed, 26 Mar 2008 01:07:00 GMT</pubDate><guid>http://www.cnblogs.com/genson/archive/2008/03/26/1122455.html</guid><wfw:comment>http://www.cnblogs.com/genson/comments/1122455.html</wfw:comment><comments>http://www.cnblogs.com/genson/archive/2008/03/26/1122455.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/genson/comments/commentRss/1122455.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/genson/services/trackbacks/1122455.html</trackback:ping><description><![CDATA[<strong><font style="font-size: 14px">&nbsp;10款让你震撼的图片展示js代码</font></strong><br />
<font face="Verdana">http://www.zcool.com.cn/jscode/javascript/20080325/code_032543362008.html</font> <br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b1.jpg" /><br />
1.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/1/" target="_blank">http://preview.zcool.com.cn/code/js/04/1/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b2.jpg" /><br />
2.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/2/" target="_blank">http://preview.zcool.com.cn/code/js/04/2/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b3.jpg" /><br />
3.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/3/" target="_blank">http://preview.zcool.com.cn/code/js/04/3/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b4.jpg" /><br />
4.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/4/" target="_blank">http://preview.zcool.com.cn/code/js/04/4/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b5.jpg" /><br />
5.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/5/" target="_blank">http://preview.zcool.com.cn/code/js/04/5/</a>
<div class="Kru227">www.zcool.com.cn</div>
<br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b6.jpg" /><br />
6.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/6/" target="_blank">http://preview.zcool.com.cn/code/js/04/6/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b7.jpg" /><br />
7.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/7/" target="_blank">http://preview.zcool.com.cn/code/js/04/7/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b8.jpg" /><br />
8.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/8/" target="_blank">http://preview.zcool.com.cn/code/js/04/8/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b9.jpg" /><br />
9.预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/9/" target="_blank">http://preview.zcool.com.cn/code/js/04/9/</a><br />
<br />
<img alt="" src="http://smallpic.zcool.com.cn/code/js/04_b10.jpg" /><br />
10预览地址：<br />
<a href="http://preview.zcool.com.cn/code/js/04/10/" target="_blank">http://preview.zcool.com.cn/code/js/04/10/</a> <span class="Kru227">www.zcool.com.cn</span> <br />
<br />
10款能与flash效果相比拼得js图片展示代码，感谢YOKT报料<br />
<a href="http://bbs.blueidea.com/thread-2839760-1-1.html" target="_blank">http://bbs.blueidea.com/thread-2839760-1-1.html</a>&#8230;&#8230; <br />
<br />
高级程序员，网站架构师，从事软件开发多年，，承接B/S架构相关项目。有意者请联系QQ:20028205 
<img src ="http://www.cnblogs.com/genson/aggbug/1122455.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42822/" target="_blank">[新闻]唱片商解密缘何反百度：态度强硬 人工干预明显</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>