<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:content="http://purl.org/Rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><channel><title>芳菲未尽，续写今生......</title><link>http://www.i170.com/user/feifei4728/Rss</link><description></description><language>zh-cn</language><pubDate>Sat, 06 Sep 2008 06:36:19  +0800</pubDate><generator>i170.com</generator><image><title>芳菲未尽，续写今生......</title><url>http://www.i170.comattavatar_3/feifei4728_Src.JPG</url><link>http://www.i170.com/user/feifei4728/Rss</link></image> <item><link>http://www.i170.com/Article/101034</link><title><![CDATA[巡回]]></title><author>feifei4728</author><category>杂感杂情</category><pubDate>Wed, 27 Feb 2008 22:32:26  +0800</pubDate><description><![CDATA[<p>
已经好久没上过博客了，今天是这一个月来第一次上网。甚至差点就不记得开博客了。网络变化虽快，然而在某个角落依然有陈旧的尘埃...</p>
<p>人似乎是在尘埃中逝去的，因为尘埃隔着人的懒惰。博客不写就变得不愿写了，由不愿又变得不想写了，最终就是跟本不想写了。</p>
<p>不知道什么时候才是我的下一次巡回....</p>

]]></description><guid>http://www.i170.com/Article/101034</guid><trackback:ping>http://www.i170.com/Article/101034/trackback</trackback:ping><comments>http://www.i170.com/Article/101034#comment</comments><wfw:commentRss>http://www.i170.com/Article/101034/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/96915</link><title><![CDATA[医生建议改进的睡姿六图 【转】]]></title><author>feifei4728</author><category>健康</category><pubDate>Tue, 01 Jan 2008 13:38:38  +0800</pubDate><description><![CDATA[<div class="middleSize" id="articleContent">
<p>
中医有“不通则痛”之说，良好的睡眠姿势，保证周身气道通达,血络顺畅，可以调气养神，濡养脉络，消除疲劳，滋养精神。“坐如钟、站如松、卧如佛……”我们的先人对于睡姿一直是有讲究的。</p>
<p>&nbsp;</p>
<p>1.如果你喜欢仰面朝天睡……</p>
<p>&nbsp;</p>
<p>
睡姿素描：采用这种睡姿的人通常非常疲倦，或者有醉酒等情况，在仰卧状态便很快进入了深层睡眠。这时，睡眠者的两手会不自觉地放到胸前。</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static2.photo.sina.com.cn/orignal/500bcd0f44262d2c805a9">
<img title=
"http://static2.photo.sina.com.cn/orignal/500bcd0f44262d2c805a9"
alt="未命名-1.jpg" border="1" src=
"http://static2.photo.sina.com.cn/bmiddle/500bcd0f44262d2c805a9"></a></p>
<p>&nbsp;</p>
<p>
中医护花：睡眠中，面孔中开窍的部位多朝上，而气与津液走势下行。比如：熟睡时,由于脸孔朝上,因舌根下坠或口水流入气管容易造成打呼或呛咳，甚至引发气滞而猝死，非常不利于肺部气血的运行，从而影响到肺的功能，所以睡觉的时候要翻身，更换睡眠姿势。</p>
<p>&nbsp;</p>
<p class="partingline">[separator]</p>
<p>2.如果你喜欢趴着睡……</p>
<p>&nbsp;</p>
<p>
睡姿素描：趴着睡好像婴儿，这对于睡眠中好流口水的人倒是个挺不错的姿势。但是，如果你的胸部被平压在床榻上，胸部憋闷的情况就有可能发生。</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static2.photo.sina.com.cn/orignal/500bcd0f44262d2e3b291">
<img title=
"http://static2.photo.sina.com.cn/orignal/500bcd0f44262d2e3b291"
alt="未命名-2.jpg" border="1" src=
"http://static2.photo.sina.com.cn/bmiddle/500bcd0f44262d2e3b291"></a></p>
<p>&nbsp;</p>
<p>
中医护花：趴着睡最大弊端是对心脏构成压迫。如果时间过久，或者由于肥胖等原因胸部压迫过重，就有可能影响到周身气血的运行，出现心脏不适、呼吸困难等情况。中医说心衰是由于气不足引起的，所以在睡眠中首先应该保证你有一个良好的呼吸状态。趴着睡如果感到有憋闷的情况，睡觉时可以采取高枕位，保证心脏气血顺畅。</p>
<p>&nbsp;</p>
<p>3.如果你喜欢蜷着身子睡……</p>
<p>&nbsp;</p>
<p>睡姿素描：蜷缩着身子睡觉可不是一个好姿态，不仅像个小虾米，而且对你的背部和颈部也会带来伤害。</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static3.photo.sina.com.cn/orignal/500bcd0f44262d2e6ce32">
<img title=
"http://static3.photo.sina.com.cn/orignal/500bcd0f44262d2e6ce32"
alt="未命名-3.jpg" border="1" src=
"http://static3.photo.sina.com.cn/bmiddle/500bcd0f44262d2e6ce32"></a></p>
<p>&nbsp;</p>
<p>
中医护花：据医学调查显示：每5名国人当中，就有一个人曾在过去6个月内患有背痛及颈痛的问题。而睡姿不良是导致背痛或颈痛的主要原因。人的背部在伸直时，感觉最舒服，中医认为，血脉不畅就会有虚症产生。所以不论是坐着、站着，甚至是躺着时，都应该把姿势调整到最舒服的程度，不要老是曲着腰。对于长达7、8个小时睡眠而言也应该让周身舒展而眠。</p>
<p>&nbsp;</p>
<p>4.如果你喜欢枕臂而眠……</p>
<p>&nbsp;</p>
<p>
睡姿素描：这是一个很不自觉的睡眠姿势，你可能睡前枕着手臂想事，但在不知不觉中睡着了。一觉醒来，只觉得胳膊已经不是自己的胳膊，从肩头到手指都不听使唤了。</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static3.photo.sina.com.cn/orignal/500bcd0f44262d2ea9f6a">
<img title=
"http://static3.photo.sina.com.cn/orignal/500bcd0f44262d2ea9f6a"
alt="未命名-4.jpg" border="1" src=
"http://static3.photo.sina.com.cn/bmiddle/500bcd0f44262d2ea9f6a"></a></p>
<p>&nbsp;</p>
<p>
中医护花：枕着手臂入睡，一睡就是几个小时一动不动，这会直接使人上臂的桡神经受到压迫性伤害，导致前臂、手腕、手指麻痹。这正是中医“通则不痛,不通则痛”的道理。睡眠中，我们的气血与呼吸都逐渐进入一个平稳和规律的状态，在沉睡中，肢体有气血阻滞的情况因为不觉察而无法调节，便很快进入了麻痹期。所以不要养成将手臂枕到脑后的习惯。</p>
<p>&nbsp;</p>
<p>5.如果你喜欢完全侧身睡……</p>
<p>&nbsp;</p>
<p>
睡姿素描：完全侧身睡是压住了半边身子，如果你将一侧的胳膊和腿都压住了，开始时并不觉得，但当它成为一种习惯性睡眠姿势的时候，就会出现气血淤滞的问题。</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static4.photo.sina.com.cn/orignal/500bcd0f44262d2f193bb">
<img title=
"http://static4.photo.sina.com.cn/orignal/500bcd0f44262d2f193bb"
alt="未命名-5.jpg" border="1" src=
"http://static4.photo.sina.com.cn/bmiddle/500bcd0f44262d2f193bb"></a></p>
<p>&nbsp;</p>
<p>
中医护花：有关专家调查了2000例脑梗塞病人，发现95%以上的病人有着完全侧身睡、压住半边身子的习惯。这样的睡姿在本身已有动脉硬化的基础上，加重了血流障碍，特别是颈部血流速度减慢，容易在动脉内膜损伤处逐渐聚集而形成血栓。为消除这一隐患还是改为时不时仰卧，时不时半侧卧较为妥当。</p>
<p>&nbsp;</p>
<p>6、推荐金牌睡姿“半侧卧”</p>
<p>&nbsp;</p>
<p><a target="_blank" href=
"http://blog.sina.com.cn/main/html/showpic.html#url=http://static8.photo.sina.com.cn/orignal/500bcd0f44262d2f5c80f">
<img title=
"http://static8.photo.sina.com.cn/orignal/500bcd0f44262d2f5c80f"
alt="未命名-6.jpg" border="1" src=
"http://static8.photo.sina.com.cn/bmiddle/500bcd0f44262d2f5c80f"></a></p>
<p>&nbsp;</p>
<p>
《千金要方"道林养性》说:“屈膝侧卧,益人气力,胜正偃卧。”是主张以侧卧为宜。但其“侧卧”之说，是指“半侧卧”，保证了周身部位的放松、气血的顺畅、脏腑的通达的“半侧卧”之说。人在睡眠中的姿势不可能一成不变,一夜之间,总得翻几次身,以求得舒适的体位，其实无论怎样的睡眠POSE，放松身心，舒适而眠就好。</p>
<div class="invisible" id="reference">文章引用自：</div>
</div>

]]></description><guid>http://www.i170.com/Article/96915</guid><trackback:ping>http://www.i170.com/Article/96915/trackback</trackback:ping><comments>http://www.i170.com/Article/96915#comment</comments><wfw:commentRss>http://www.i170.com/Article/96915/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/96571</link><title><![CDATA[牛人也有牛名了]]></title><author>feifei4728</author><category>网摘</category><pubDate>Thu, 27 Dec 2007 16:27:50  +0800</pubDate><description><![CDATA[<p>在网络里厉害的人成为牛人，现在这个牛终于也得到定名了，嘿嘿。金牛奖因此而设立 <a target="blank" href=
"http://top2007.csdn.net/">http://top2007.csdn.net/</a>&nbsp;设立的项目还不少呢，希望我有一天也能拿个回来。呵呵...</p>

]]></description><guid>http://www.i170.com/Article/96571</guid><trackback:ping>http://www.i170.com/Article/96571/trackback</trackback:ping><comments>http://www.i170.com/Article/96571#comment</comments><wfw:commentRss>http://www.i170.com/Article/96571/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/96460</link><title><![CDATA[DataGrid，DataList和Repeater]]></title><author>feifei4728</author><category>ASP.NET</category><pubDate>Wed, 26 Dec 2007 07:30:27  +0800</pubDate><description><![CDATA[<p>在当下web标准盛行的时代 而在ASP.NET中 又是这么多的可现用的控件。控件虽然提高了效率 也可以做到外观的高度控制
然而缺丧失了对前台HTML输入的高度控制。我想要完全做到控件的可编程性和HTML的控制恐怕只有自定义控件了。</p>
<p>在对数据处理的默认控件里主要是DataGrid，DataList和Repeater
这三个，近段时间正处于初学阶段。还没到完全自定义控件这个水平，为了配合刚启动的练手的项目一直寻思着怎么去完全控制好控件的HTML输出。而着三个控件中我独爱Repeater
因为它的HTML输出可控制性最高，而且执行效率也最高，正好适合基于标准的开发。还有相似的控件也差不多datalistview
的HTML输出可控制性也不高</p>
<p>在网上刚好看到一片对这三个控件做了个详细的对比的帖子。暂且转过来吧。不过侧重点上我跟作者的观点到有不同了</p>
<p class="partingline">[separator]</p>
<p>作者：Scott Mitchell<br>
［概述］<br>
　　WEB开发自从有了基于脚本的WEB编程技术（如ASP）以来，经历了一个漫长的过程。通过使用微软的ASP.Net技术，传统的ASP中大量的、单调乏味的、重复性的编程工作成为了历史。例如，象大多数ASP程序员所知的，在ASP中显示数据库内容所需要的过程：<br>

　　建立数据库连接<br>
　　用SQL查询装载ADO数据集<br>
　　显示所需要的任何HTML代码<br>
　　遍历数据集中的记录<br>
　　　　输出记录字段值及相关的HTML<br>
　　　　移向下一条记录<br>
　　循环<br>
　　显示所需要的HTML代码<br>
　　又如，为了在表格中显示记录集的内容，我们需要输出一个&lt;table&gt;标签，然后开始循环。在循环中，每输出一条记录，需要先输出一个&lt;tr&gt;标签以及若干对&lt;td&gt;标签和&lt;/tr&gt;标签。最后，以一个&lt;/table&gt;标签结尾。<br>

　　在传统的ASP中使用的这种方法有一个主要的缺点：HTML代码与ASP源代码不得不纠缠在一起。对于那些也许并不理解程序设计的页面设计者或图形艺术家来说，想要更改HTML内容无疑是一场灾难。另外，代码的产生量也是惊人的，因为我们不仅需要从数据库中取得数据，还需要使之可视化。<br>

　　好在，ASP.Net提供了三个数据控件，使得原本在ASP中繁杂的工作变得简单。这三个控件属于数据Web控件，分别是DataGrid，DataList和Repeater。如果你对ASP.Net数据库编程有所了解的话，你至少应该有使用其中一种控件的经验。大多数情况下，我们从学习使用DataGrid开始，因为它的功能相对完整（数据显示、分页、编辑）并相对简单。然而，DataGrid并非总是正确的选择。<br>

　　本文将分别论述每个数据控件不同于其它数据控件的特点，以及由此带来的优缺点。正因为每种数据控件都有其自身的缺陷，因此在程序设计中并不存在最完美的选择。你必须权衡三种控件的优缺点并决定哪一种更加适合你的程序。<br>

　　为了帮助比较，在对每个控件进行论述时，我们会专注于三个特性：可用性（从页面访问者的角度）、开发时间和性能。我们首先描述一下这三种控件的共性，然后分别深入地讨论三种控件的特点，每种控件如何实现以及如何体现可用性、开发时间和性能。</p>
<p>&nbsp;</p>
<p>［数据控件(Data Web Controls)的共同点］<br>
　　在我们讨论三种控件各自特性之前，有必要先看一看它们之间的共同点。一般来说，从编程流程来看，最显著的共同点就是，这三种控件都是用来显示数据的。另一个共同点是需要一个数据绑定的代码来将数据与控件绑定。这个过程只需要两行代码：<br>

　　dataWebControlID.DataSource = someDataSource<br>
　dataWebControlID.DataBind()　　<br>
　　一般情况下，someDataSource对象是指数据控件的数据源属性，可以是DataSet，SqlDataReader，OleDbDataReader或一组数据（如数组、数组列表或其它的属于System.Collection名空间的类）。不过，任意实现IEnumerable接口的对象也可以被绑定在数据控件上。<br>

　　DataBind()方法遍历一个特定的DataSource中的记录，并对其中的每条记录，建立一个条目并对应数据控件的Item集。数据控件中的每个条目将成为一个类的实例。这个类因数据控件的不同而有所区别。例如，DataGrid中的每个条目是DataGridItem类的一个实例，而Repeater中的条目则是RepeaterItem类的一个实例。<br>

　　之所以使用不同的类来实例化不同数据控件的条目，是因为不同的数据控件将会使用不同的方式显示数据及相应的HTML代码。例如，DataGridItem类继承自TableRow类，也就是说，每个DataGridItem的实例或多或少地可以看成一个表格中的一行。这是因为DataGrid被设计成可以借助HTML中的&lt;table&gt;标签以表格的形式显示数据，因此每条记录就是一个表格行。而Repeater则被设计成可以自由定义数据输出的方式。所以，RepeaterItem并不继承自TableRow就不奇怪了。<br>

　　另一个三种数据控件的相同点是每种控件都被允许使用模板来显示数据。DataList和Repeater控件必须使用模板来输出数据，而DataGrid则允许通过TemplateColumn而只使用模板来显示一列（在DataGrod单元中详细论述）。<br>

　　另一个不是十分值得比较的地方是：DataGrid和DataList都是继承自WebControl类，而Repeater则是继承自Control类。WebControl类包含一些用于美化的属性，如：BackColor、ForeColor、CssClass、BorderStyle等等。这说明在使用DataGrid或DataList时，你可以设定这些属性来个性化输出。Repeater控件则不具有这些属性。我们会在Repeater单元讨论如何使用模板来美化Repeater的输出。<br>

［DataGrid控件］<br>
　　在三种控件当中，DataGrid是迄今为止功能最为丰富的，但也是最不灵活的控件。这种在输出HTML时不够灵活的特点是因为它最初就是被设计成以表格的形式输出数据。每一条记录输出时会建立一对&lt;tr&gt;标签，而每个字段的值输出时则建立一对&lt;td&gt;标签。<br>

　　DataGrid含有几个属性可以提高其可用性。如，通过设置DataGrid的AllowSorting属性为true，并加入少量代码，DataGrid就具备了按不同字段排序的功能。此外，设定相关属性来实现分页以及单条记录编辑的功能更加增强了DataGrid的可用性。<br>

　　除了在可用性方面的支持以外，DataGrid同时也相当节省开发时间。使用DataGrid在WEB页面上显示数据只需要两行代码。一行用来设定与DataGrid绑定的数据源（DataSource），另一条则用来执行绑定命令（DataBind()）。当然，在Repeater中实现这样的功能并非不可能，只是，相比较使用DataGrid而言，你需要花费相当多的时间和精力来实现这些功能。<br>

　　尽管DataGrid有这样那样令人印象深刻的优点，它的两个缺点也同样不能忽视。首先，如前所述，DataGrid在个性化输出数据方面功能有限。当然，你可以定制字体、颜色以及线条宽度等等，但它始终只能是HTML表格。<br>

　　每个在DataGrid中的列都是DataGridColumn类的一个实例。有五种DataGrid列的形式：<br>
　　·BoundColumn<br>
　　·ButtonColumn<br>
　　·EditColumn<br>
　　·HyperLinkColumn<br>
　·TemplateColumn<br>
　　每种类型都会以一种方式允许页面访问与DataGrid进行交互。例如，BoundColumn将DataSource的字段值显示为纯文本；而HyperLinkColumn则将之显示为一个超级链接。另外，开发者可以通过写一个继承自DataGridColumn的自定义类来定制DataGrid列的样式。<br>

　　尽管DataGrid具有这么多的增强可用性的属性，却仍然显得死板而不够灵活。这是因为，不论什么样的属性，都需要对DataGrid所生成的表格进行相关的设置而生效。这无疑会使表格变得臃肿而失去灵活性。例如，DataGridColumn的设置会对表格的每一行的相应列生效。DataGrid的这种局限性阻碍了更有创意地显示数据。比如，你希望每五条记录被显示在一行，或根本不想要表格来显示数据，你将不得不放弃使用DataGrid。<br>

　　DataGrid的第二个缺陷是它的性能。在三种数据控件中，DataGrid是相对性能最差的。由DataGrid所生成的ViewState将会相当庞大，特别是在DataGrid含有较多的行时。当然，你也可以关闭ViewState功能，但代价是你将不能使用排序、分页以及记录编辑等功能。<br>

　　为了测量DataGrid的性能，我使用了微软的Web Application Stress Tool
(WAST)。精确的测试条件设定以及测试用代码将会在本文的结尾给出。<br>
　　WAST将会对WEB服务器发出对一个特定URL的请求。每个测试将会针对一个URL在一分钟之内连续不断地请求。WAST将会一个代表性能的数值，代表WEB服务器将会在一秒钟内执行ASP.Net页面多少次。<br>

　　两个测试将显示一个仅仅显示数据的DataGrid。DataGrid将会显示Northwinds数据库中的Customers表的4个字段的内容（总计91条记录）。DataGrid的AutoGenerateColumns属性将会被设为True。第一个测试将DataGrid置于一个Form中，第二个则不置于Form中。将控件置于Form中而不指定其EnableViewState为False，则控件将会一直使用ViewState来维持其状态。对ViewState的设定是为了有一个耗时的处理过程，来看一下它对于每秒种的页面请求有什么样的影响。测试结果见图1。<br>

<a target="_blank" href=
"http://upload.yourblog.org/20046/zellzhang.20040604170615.jpg"></a><br>

图1：对DataGrid的每秒请求次数<br>
　　在下面我们要讨论并测试的DataList和Repeater中，我们会看到它们的性能将优于DataGrid。<br>
［DataList控件］<br>
　如前所述，DataGrid使用表格来显示数据。你也许需要更进一步地控制数据的显示。例如，你想使数据在表格中显示，但不是每行只有一条记录，而是多条。又或者，你并不想使用表格来显示数据，而是只将它们显示在一系列&lt;span&gt;标签中。<br>

　　DataList放弃了DataGrid中列表显示数据的概念，而是使用事先定义好的模板（Template）来定制显示。通过使用模板，可以同时使用HTML标签或数据绑定。这里的数据绑定的形式为：&lt;%#
…
%&gt;，用来显示数据源中给定条目的数据记录。如下的ItemTemplate将会显示数据源中CompanyName字段：&nbsp;<br>

&nbsp;&nbsp;　&lt;asp:DataList runat="server"
id="myDataList"&gt;<br>
　　　　&lt;ItemTemplate&gt;<br>
　　　　　　&lt;%# DataBinder.Eval(Container.DataItem, "CompanyName")
%&gt;<br>
　　　　&lt;/ItemTemplate&gt;<br>
　　&lt;/asp:DataList&gt;<br>
　　通过修改上面的模板，我们可以使CompanyName字段显示为粗体字，而ContactName字段则以正常式样显示在CompanyName之下。<br>

　　&lt;asp:DataList runat="server" id="myDataList"&gt;<br>
　　　　&lt;ItemTemplate&gt;<br>
　　　　　　&lt;b&gt;&lt;%# DataBinder.Eval(Container.DataItem,
"CompanyName") %&gt;&lt;/b&gt;<br>
　　　　　　&lt;br /&gt;<br>
　　　　　　&lt;%# DataBinder.Eval(Container.DataItem, "ContactName")
%&gt;<br>
　　　　&lt;/ItemTemplate&gt;<br>
　　&lt;/asp:DataList&gt;<br>
　　对于DataList数据源中的每一条记录，ItemTemplate会通过定义HTML标签来以相同的样式显示数据。ItemTemplate还支持其它其它6种模板：<br>

　　·AlternatingItemTemplate<br>
　　·EditItemTemplate<br>
　　·FooterTemplate<br>
　　·HeaderTemplate<br>
　　·ItemTemplate<br>
　　·SelectedItemTemplate<br>
　　·SeparatorTemplate<br>
　　默认情况下DataList会将记录显示在HTML表格中。然而，通过设定RepeatColumn属性，你可以设置在一行中显示多少条记录。更进一步，你甚至可以指定DatList的内容不显示在表格中，而是&lt;span&gt;标签中。这可以通过设定RepearLayout属性来实现。<br>

　　通过模板、RepeatColumn和RepeatLayout属性，很明显DataList在定制数据输出样式方面较DataGrid更具灵活性，使得用户界面设计可以更加友好。当然，我们还需要进行功能性的对比，如分页、排序、记录编辑等等。<br>

　　通过EditItemIndex模板和EditCommand，UpdateCommand以及CancelCommand事件，DataList将支持记录编辑的功能。不过，比较DataGrid而言，这需要耗费更多的开发时间来实现。这种开发时间上的不一致主要有两个原因：<br>

　　·编辑/更新/删除按钮在DataGrid中可以通过设定EditCommandColumn来自动添加；而在DataList中则需要手动添加。<br>

　　·DataGrid的BoundColumn列样式自动使用文本框控件来显示记录编辑界面。而在DataList中，你必须通过EditItemTemplate明确地指定使用什么样的编辑界面。<br>

　　实现DataList中的分页、排序功能同记录编辑功能情况一样，并不算非常复杂。这些功能可以通过巧妙的编程加以实现，只是耗费一些开发时间。所以，如果需要用户对数据记录进行排序或编辑的话，使用DataGrid要比使用DataList方便得多。<br>

　　DataList的性能要比DataGrid好一些，特别是当DataList被包含在Form当中时。图2显示了WAST对DataList的测试。<br>

<a target="_blank" href=
"http://upload.yourblog.org/20046/zellzhang.20040604170839.jpg"></a>&nbsp;<br>

图2：对DataList的每秒请求次数<br>
　　可以看出，在被Web Form包含的情况下，DataList的性能要明显好于DataGrid。<br>
［Repeater控件］<br>
　　Repeater控件是三种数据控件中在HTML输出方面最为灵活的控件。Repeater会按照你所要求的样式严格地输出数据记录。所以，如果你不想以表格方式或者简单的&lt;span&gt;输出数据，那么最好使用Repeater。<br>

　　与DataList一样，Repeater使用模板来指定输出样式。Repeater支持如下五种模板：<br>
　　·AlternatingItemTemplate<br>
　　·FooterTemplate<br>
　　·HeaderTemplate<br>
　　·ItemTemplate<br>
　　·SeparatorTemplate<br>
　　HederTemplate和FooterTemplate指定在真正的记录输出之前或之后应处理的HTML内容。AlternatingItemTemplate和ItemTemplate则指定实际的每条输出记录的HTML样式。如，你需要绑定一个包含雇员信息的DataSet到一个Repeater，字段名为EmployeeName。如果你想在页面中不排序地显示这些记录，你可以使用如下的语句：<br>

　　&lt;asp:Repeater runat="server" id="rptEmployees"&gt;<br>
　　　　&lt;HeaderTemplate&gt;<br>
　　　　　　&lt;ul&gt;<br>
　　　　&lt;/HeaderTemplate&gt;<br>
　　　　&lt;ItemTemplate&gt;<br>
　　　　　　&lt;li&gt;&lt;%# DataBinder.Eval(Container.DataItem,
"EmployeeName") %&gt;&lt;/li&gt;<br>
　　　　&lt;/ItemTemplate&gt;<br>
　　　　&lt;FooterTemplate&gt;<br>
　　　　　　&lt;/ul&gt;<br>
　　　　&lt;/FooterTemplate&gt;<br>
　　&lt;/asp:Repeater&gt;<br>
　　Repeater类不是继承自WebControl类的，这一点与DataGrid和DataList不同。所以，Repeater没有样式方面的属性可供设定。也就是说，如果你想格式化输出Repeater的数据记录，你必须使用HTML标签来设定样式。如，在一例中，如果我们想将雇员名字显示成粗体，我们必须在ItemTemplate设置相应的HTML标签：<br>

　　&lt;ItemTemplate&gt;<br>
　　　　&lt;li&gt;&lt;b&gt;&lt;%# DataBinder.Eval(Container.DataItem,
"EmployeeName")%&gt;&lt;/b&gt;&lt;/li&gt;<br>
　　&lt;/ItemTemplate&gt;<br>
　　而如果使用DataGrid或DataList，我们只通过设定ItemStyle-Font-Bold属性为True即可实现。<br>
　　Repeater在格式化设定上的欠缺，直接反映到开发时间的延长上来。对输出数据样式上的越多要求，就越会导致开发周期的延长。这些在模板中规定样式的HTML标签也越发得显得混乱，而且，在将来页面更改时会更加困难，特别是当一个新的开发人员接替工作时。而使用DataGrid或DataList你尽可以只设定样式属性，而不使用模板。而且，如果使用Visual
Studio.Net或ASP.Net Web Matrix工作时，这些属性更可以被直接设定而无需编码。<br>
　　因为Repeater开发时间的延长，其在内建功能（分页、排序及编辑）上的支持也显得不足。因此在可用性方面，Repeater有着明显的缺陷。当然，&lt;b&gt;如果&lt;/b&gt;用户对于如何显示数据无所谓的话，这也算不了什么大问题。我之所以强调这个“如果”，是因为尽管用户有时在设计时并不要求能够分页、排序或编辑记录，但这样的要求往往会在开发后期，或在他们能看到显示出来的记录后产生。<br>

　　Repeater唯一优于DataGrid和DataList的特点是它的性能，尤其明显优于DataGrid。而比DataList略高一点点。<br>

［结论］<br>
　　在ASP.Net页面上显示数据时，多数的程序员会选择他们所熟悉的控件来使用，特别是DataGrid。然而，这样盲目的选择在没有“最好的通用控件”的情况下是不明智的。在选择控件来显示数据前，不妨问自己几个问题来帮助决策：是否允许用户对记录排序？是不是记录需要显示在非表格的情况下？页面是否会被高频度地访问，因此应多考虑性能？<br>

　　DataGrid提供了最多的功能，如允许访问者对记录编辑、排序或分页。同时它也是最容易使用的，甚至于简单到只需要将之添加到页面中而不必额外编写代码。不过这些易用性是以性能的损失为代价的。DataGrid在三种控件中是效率最低的，特别是在使用Web
Form的情况下。<br>
　　通过使用模板，DataList提供了比DataGrid更加优秀的界面效果。不过这需要以牺牲一定的开发时间为代价。为了添加排序、分页和编辑功能，程序员不得不花费比使用DataGrid更多的精力来进行编码，虽然它的性能要优于DataGrid。<br>

　　最后，Repeater允许对数据记录作最大限度的HTML定制。通常，使用Repeater来显示数据记录比使用DataGrid和DataList要耗费更长的开发时间。另外，它不支持内建的编辑、排序和分页功能。所幸的是，Repeater在性能上要优于其它两种控件，特别是明显优于DataGrid。<br>

［附录］<br>
WAST测试设定<br>
　　测试是在运行Microsoft Windows 2003 Server操作系统的笔记本电脑上完成的。基本配置如下：Intel P4
2.4G CPU；512 MB RAM；30GB Ultra ATA Hard drive；网页服务器使用IIS
6.0；ASP.Net版本为1.1。此测试中的WAST被设置成使用单线程，每个测试时间为一分钟。<br>
　　测试代码<a href=
"http://download.microsoft.com/download/9/e/9/9e97b2f8-b317-4751-9ac1-2e34eebec26a/DataControlsPerfTest_Setup.msi">http://download.microsoft.com/download/9/e/9/9e97b2f8-b317-4751-9ac1-2e34eebec26a/DataControlsPerfTest_Setup.msi</a></p>

]]></description><guid>http://www.i170.com/Article/96460</guid><trackback:ping>http://www.i170.com/Article/96460/trackback</trackback:ping><comments>http://www.i170.com/Article/96460#comment</comments><wfw:commentRss>http://www.i170.com/Article/96460/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/95379</link><title><![CDATA[CSS Hack 收集一]]></title><author>feifei4728</author><category>CSS</category><pubDate>Sun, 09 Dec 2007 15:51:08  +0800</pubDate><description><![CDATA[<p>把网上看到的CSS Hack都收集起来，嘿嘿。</p>
<p>屏蔽IE浏览器（也就是IE下不显示）</p>
<p>&nbsp;程序代码<br>
*:lang(zh) select {font:12px&nbsp; !important;} /*FF,OP可见*/<br>
select:empty {font:12px&nbsp; !important;} /*safari可见*/<br>
这里select是选择符，根据情况更换。第二句是MAC上safari浏览器独有的。</p>
<p>仅IE7识别</p>
<p>&nbsp;程序代码<br>
*+html&nbsp; {…}<br>
当面临需要只针对IE7做样式的时候就可以采用这个HACK。</p>
<p>IE6及IE6以下识别</p>
<p>&nbsp;程序代码<br>
* html&nbsp; {…}</p>
<p class="partingline">[separator]</p>
<p><br>
这个地方要特别注意很多地主都写了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。<br>
html/**/ &gt;body&nbsp; select {……}<br>
这句与上一句的作用相同。</p>
<p>仅IE6不识别</p>
<p>&nbsp;程序代码<br>
select { display /*IE6不识别*/:none;}<br>
这里主要是通过CSS注释分开一个属性与值，流释在冒号前。</p>
<p>仅IE6与IE5不识别</p>
<p>&nbsp;程序代码<br>
select/**/ { display /*IE6,IE5不识别*/:none;}<br>
这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。</p>
<p>仅IE5不识别</p>
<p>&nbsp;程序代码<br>
select/*IE5不识别*/ { display:none;}<br>
这一句是在上一句中去掉了属性区的注释。只有IE5不识别</p>
<p>盒模型解决方法</p>
<p>&nbsp;程序代码<br>
selct {width:IE5.x宽度; voice-family :"\"}\""; voice-family:inherit;
width:正确宽度;}<br>
盒模型的清除方法不是通过!important来处理的。这点要明确。</p>
<p>清除浮动</p>
<p>&nbsp;程序代码<br>
select:after {content:"."; display:block; height:0; clear:both;
visibility:hidden;}<br>
在Firefox中，当子级都为浮动时，那么父级的高度就无法完全的包住整个子级，那么这时用这个清除浮动的HACK来对父级做一次定义，那么就可以解决这个问题</p>
<p>截字省略号</p>
<p>&nbsp;程序代码<br>
select { -o-text-overflow:ellipsis; text-overflow:ellipsis;
white-space:nowrap; overflow:hidden; }<br>
这个是在越出长度后会自行的截掉多出部分的文字，并以省略号结尾，很好的一个技术。只是目前Firefox并不支持。</p>
<p>只有Opera识别</p>
<p>&nbsp;程序代码<br>
@media all and (min-width: 0px){ select {……}&nbsp; }<br>
针对Opera浏览器做单独的设定。</p>
<p>
以上都是写CSS中的一些HACK，这些都是用来解决局部的兼容性问题，如果希望把兼容性的内容也分离出来，不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式，也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。<br>

IE5.x的过滤器，只有IE5.x可见</p>
<p>&nbsp;程序代码<br>
@media tty {<br>
i{content:"\";/*" "*/}} @import 'ie5win.css'; /*";}<br>
}/* */<br>
IE5/MAC的过滤器，一般用不着</p>
<p>[Copy to clipboard] [ - ]CODE:<br>
/*\*//*/<br>
&nbsp;&nbsp;&nbsp; @import "ie5mac.css";<br>
/**/</p>
<p><br>
IE的if条件Hack</p>
<p>程序代码<br>
&lt;!--[if IE]&gt; Only IE &lt;![endif]--&gt;<br>
所有的IE可识别<br>
&lt;!--[if IE 5.0]&gt; Only IE 5.0 &lt;![endif]--&gt;<br>
只有IE5.0可以识别<br>
&lt;!--[if gt IE 5.0]&gt; Only IE 5.0+ &lt;![endif]--&gt;<br>
IE5.0包换IE5.5都可以识别<br>
&lt;!--[if lt IE 6]&gt; Only IE 6- &lt;![endif]--&gt;<br>
仅IE6可识别<br>
&lt;!--[if gte IE 6]&gt; Only IE 6/+ &lt;![endif]--&gt;<br>
IE6以及IE6以下的IE5.x都可识别<br>
&lt;!--[if lte IE 7]&gt; Only IE 7/- &lt;![endif]--&gt;<br>
仅IE7可识别</p>

]]></description><guid>http://www.i170.com/Article/95379</guid><trackback:ping>http://www.i170.com/Article/95379/trackback</trackback:ping><comments>http://www.i170.com/Article/95379#comment</comments><wfw:commentRss>http://www.i170.com/Article/95379/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/95223</link><title><![CDATA[Subversion快速入门安装与配置]]></title><author>feifei4728</author><category>SVN</category><pubDate>Thu, 06 Dec 2007 20:33:46  +0800</pubDate><description><![CDATA[<div>
<p>原文地址： <a target="_blank" href=
"http://www.subversion.org.cn/index.php?option=content&amp;task=view&amp;id=56">
<u><font color=
"#800080">http://www.subversion.org.cn/index.php?option=content&amp;task=view&amp;id=56</font></u></a><br>

Subversion快速入门安装与配置</p>
<p>
从中文站上copy过来的，呵呵，不过对最新版本有些不同了，又从阿辉那里copy了点过来，稍做了修改，留着备用，毕竟还不熟悉，不熟悉命令，不过图形化的操作工具貌似也有很多了，以后再慢慢来玩吧。我装了1.4.5的。呵呵。</p>
<p><br>
如何快速建立Subversion服务器，并且在项目中使用起来，这是大家最关心的问题，与CVS相比，Subversion有更多的选择，也更加的容易，几个命令就可以建立一套服务器环境，可以使用起来，这里配套有动画教程。<br>

本文是使用Subversion最快速的教程，在最短的时间里帮助您建立起一套可用的服务器环境，只需略加调整就可以应用到实际项目当中。<br>

本教程分为以下几个部门，不仅仅是快速入门，最后我们还有一些高级功能的说明，为了说明简单，教程是在windows下使用的方式，以方便资源有限的项目使用，对于UNIX环境下，区别并不大。</p>
<p>&nbsp;操作步骤：</p>
<p>软件下载</p>
<p>服务器和客户端安装<br>
建立版本库（Repository）<br>
配置用户和权限<br>
运行独立服务器<br>
初始化导入<br>
基本客户端操作</p>
<p>1，软件下载</p>
<p>&nbsp;</p>
<p class="partingline">[separator]</p>
<p>下载Subversion服务器程序。<br>
<a target="_blank" href=
"http://subversion.tigris.org/servlets/ProjectDocumentList"><font color="#0000FF">
<u>http://subversion.tigris.org/servlets/ProjectDocumentList</u></font></a><br>

下载Subversion的Windows客户端TortoiseSVN。<br>
TortoiseSVN是扩展Windows
Shell的一套工具，可以看作Windows资源管理器的插件，安装之后Windows就可以识别Subversion的工作目录。<br>
<a target="_blank" href=
"http://tortoisesvn.net/downloads"><u><font color=
"#0000FF">http://tortoisesvn.net/downloads</font></u></a><br>
<br>
2，服务器和客户端安装<br>
服务器安装，直接运行svn-1.2.3-setup.exe，根据提示安装即可，这样我们就有了一套服务器可以运行的环境。<br>
安装TortoiseSVN，同样直接运行TortoiseSVN-1.2.4.4479-svn-1.2.3.msi按照提示安装即可，不过最后完成后会提示是否重启，其实重启只是使svn工作拷贝在windows中的特殊样式生效，与所有的实际功能无关，这里为了立刻看到好的效果，还是重新启动机器。<br>

3，建立版本库（Repository）<br>
运行Subversion服务器需要首先要建立一个版本库（Repository），可以看作服务器上存放数据的数据库，在安装了Subversion服务器之后，可以直接运行，</p>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
svnadmin create E:\svndemo\repository</div>
</div>
就会在目录E:\svndemo\repository下创建一个版本库。我们也可以使用TortoiseSVN图形化的完成这一步：<br>
在目录E:\svndemo\repository下"右键-&gt;TortoiseSVN-&gt;Create Repository
here...“， 然后可以选择版本库模式， 这里使用默认即可， 然后就创建了一系列目录和文件。<br>
<p>&nbsp;4，配置用户和权限<br>
来到E:\svndemo\repository\conf目录，修改svnserve.conf：</p>
</div>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
<p># [general]<br>
# password-db = passwd</p>
</div>
</div>
<p>改为：</p>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
<p>[general]<br>
password-db = passwd</p>
</div>
</div>
<p>然后修改同目录的passwd文件，去掉下面三行的注释：（这个是登陆用的用户和密码可以自己定义）</p>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
<p># [users]<br>
# harry = harryssecret<br>
# sally = sallyssecret</p>
</div>
</div>
<p>最后变成：</p>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
<p>[users]<br>
harry = harryssecret<br>
sally = sallyssecret</p>
</div>
</div>
<p>&nbsp;</p>
<p>还有用户组的设定，可以暂时不用管啦，以后熟悉了再慢慢搞。</p>
<p>5，运行独立服务器<br>
在任意目录下运行：</p>
<div style=
"border-right: #ffffff thin dashed; border-top: #ffffff thin dashed; margin: 10px 15px; border-left: #ffffff thin dashed; border-bottom: #ffffff thin dashed">
<div style="background-color: #cccc66"><span style=
"padding-left: 5px; font-weight: bold; font-size: 16px; line-height: normal; font-style: normal; font-variant: normal">
Code</span></div>
<div style=
"padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px; background-color: #f6f1dd">
<p>svnserve -d -r E:\svndemo\repository</p>
</div>
</div>
<p>我们的服务器程序就已经启动了。<br>
6，初始化导入<br>
来到我们想要导入的项目根目录，在这个例子里是E:\svndemo\initproject，目录下有一个readme.txt文件：<br>

右键-&gt;TortoiseSVN-&gt;Import...<br>
URL of repository输入“svn://localhost/trunk”<br>
ok<br>
完成之后目录没有任何变化，如果没有报错，数据就已经全部导入到了我们刚才定义的版本库中。<br>
7，基本客户端操作<br>
取出版本库到一个工作拷贝：<br>
来到任意空目录下，在本例中是E:\svndemo\wc1，运行右键-&gt;Checkout，在URL of
repository中输入svn://localhost/trunk，这样我们就得到了一份工作拷贝。<br>
在工作拷贝中作出修改并提交：<br>
打开readme.txt，作出修改，然后右键-&gt;Commit...，这样我们就把修改提交到了版本库，我们可以运行。<br>
察看所作的修改：<br>
readme.txt上右键-&gt;TortoiseSVN-&gt;Show
Log，这样我们就可以看到我们对这个文件所有的提交。在版本1上右键-&gt;Compare with working
copy，我们可以比较工作拷贝的文件和版本1的区别</p>

]]></description><guid>http://www.i170.com/Article/95223</guid><trackback:ping>http://www.i170.com/Article/95223/trackback</trackback:ping><comments>http://www.i170.com/Article/95223#comment</comments><wfw:commentRss>http://www.i170.com/Article/95223/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/94993</link><title><![CDATA[《ASP.NET2.0高级编程》(第4版)读书札记 一]]></title><author>feifei4728</author><category>ASP.NET</category><pubDate>Sun, 02 Dec 2007 21:13:37  +0800</pubDate><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; ASP.NET
是这个学期的主要任务之一，当然不是学校的课程了。学校的课程都一些什么会计，财务管理，统计学...虽然是计算机系，其实信息管理与信息系统这个专业非计算机课程还更多些。而本人对计算机技术这些知识更感兴趣，吃不饱，只好自力更生了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 本来也没想这么早就学ASP.NET的，因为我的JS
还没学好呢。不过基于上个学期的基础，这学期也开了C++了，反正编程都是相通的嘛，就一年多就要毕业了，还是赶紧多学点东西吧。免得以后没时间哦...</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;选择这本书一方面是阿辉推荐给我的，况且也是国外人编的，中英文版都有，呵呵。对计算机类这些书，说实话，看国内编的书真的是有点浪费时间，看国外人编写的书，按作者的思维来学，感觉非常顺畅..(本人长期的实践告诉我是这样的)。这本书是一套丛书中的一本而已，属于中级阶段的，还有初级阶段的<span style="color: #cc9966">《ASP.NET2.0入门经典》</span>和<span style="color: #cc9966">《ASP.NET2.0网站开发全程解析》</span>前两本没看过，还好我之前有些基础看《ASP.NET2.0高级编程》还不难。也就顺着学咯。</p>
<p class="partingline">[separator]</p>
<p>&nbsp;&nbsp;&nbsp; 开篇并没有一上来就大量的讲Visut studio 2005
的操作，每个控件一个接一个的讲。这是我很喜欢这本书的一个地方。之前浏览过一本国内编写的书就是这样，浪费了很多时间，也没摸透ASP.NET是什么，难道只是些拖来拖去的控件？书的第一章介绍了ASP.NET基本理论和比之前版本的优越的地方，第二章只用了少部分篇幅讲了下VS2005的一些基本操作。其实学操作还不如去看视屏，更快。然后后面的章节就是分类的来讲ASP.NET的编程控制了。处理控件的，还有页面结构，文件管理，指令，主题，集合和列表，数据绑定，XML的运用等等..目前我差不多学到一半了，呵呵，个人感觉这样的方式学起来很轻松，便于理解他，而不是只懂得操作某个控件而已。</p>
<p>&nbsp;&nbsp;&nbsp;
书中有一个特点就是代码示例很多，所以我个人认为好多方式是现看下书，再去写代码，再回过来看下书，不会的对着抄下也好，便于理解和记忆嘛。即使没学过C#有点编程基础还是蛮好理解的，而且没有学C#的话，学完了这本书书C#我想基本上已经入门了吧。</p>
<p>&nbsp;&nbsp;&nbsp; 这本书挺厚的哇，继续努力ING.....</p>

]]></description><guid>http://www.i170.com/Article/94993</guid><trackback:ping>http://www.i170.com/Article/94993/trackback</trackback:ping><comments>http://www.i170.com/Article/94993#comment</comments><wfw:commentRss>http://www.i170.com/Article/94993/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/94871</link><title><![CDATA[甜妹子--杨钰莹]]></title><author>feifei4728</author><category>浪漫情曲</category><pubDate>Fri, 30 Nov 2007 13:26:51  +0800</pubDate><description><![CDATA[<div style=
"padding-right: 0px; padding-left: 0px; float: left; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<ul>
<li>艺　　名&nbsp;： 杨钰莹　</li>
<li>原　　名 ：杨岗丽</li>
<li>星　　座 ：金牛座</li>
<li>生　　日 ：1971年5月11日</li>
<li>籍　　贯 ：江西南昌市</li>
<li>出 生 地&nbsp; ：南　昌&nbsp;</li>
<li>身　　高 ：158cm</li>
<li>体　　重 ：44kg</li>
<li>血　　型 ：O型</li>
<li>学　　历 ：中　专</li>
</ul>
</div>
<div style="float: left"><img style=
"float: left; margin: 15px 10px 5px" alt="" src=
"http://www.sinaimg.cn/ent/s/m/f/U105P28T17D830F229DT20040528145933.jpg">
<img style="float: left; margin: 12px 10px 5px" alt="" div="" src=
"http://ent.sina.com.cn/d/2001-10-29/2_28-3-326_20011029182827_small.jpg">
 <img style="float: left; margin: 12px 10px 5px" alt="" div="" src=
"http://ent.sina.com.cn/d/2001-10-29/2_28-3-326_20011029181652_small.jpg">
</div>
<div style="clear: both">
<p>
可惜啊，一大明星哦，就这样没落了。她的歌可甜呢...记得比我大些的大哥大姐们都很喜欢她的歌，我也是从那个时候喜欢听她的歌，今天听了些，又是回味无穷啊。</p>
<p><strong style="color:#CC9966">轻轻的告诉你&nbsp;&nbsp;
风含情水含笑&nbsp;&nbsp;&nbsp; 等你一万年&nbsp;
&nbsp;故事&nbsp;</strong>.....这些都是经典歌曲呀，就是可惜好多年都没有她的新歌曲了，以后也不会再有了。</p>
</div>

]]></description><guid>http://www.i170.com/Article/94871</guid><trackback:ping>http://www.i170.com/Article/94871/trackback</trackback:ping><comments>http://www.i170.com/Article/94871#comment</comments><wfw:commentRss>http://www.i170.com/Article/94871/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/94828</link><title><![CDATA[SVN]]></title><author>feifei4728</author><category>SVN</category><pubDate>Thu, 29 Nov 2007 21:32:36  +0800</pubDate><description><![CDATA[<p>Subversion ...才刚开始接触，原来遍布世界各地的牛人都是靠它来合作开发的... 今天才发现这么个x东东。</p>
<p>算是辅助开发用的吧。</p>
<p>刚接触所以对它下个什么定义也不太可能了，想了解就去这两个网站体验下吧。</p>
<p><a href="http://www.subversion.org.cn/" target=
"blank">http://www.subversion.org.cn/</a></p>
<p><a href="http://www.assembla.com/" target=
"blank">http://www.assembla.com/</a></p>

]]></description><guid>http://www.i170.com/Article/94828</guid><trackback:ping>http://www.i170.com/Article/94828/trackback</trackback:ping><comments>http://www.i170.com/Article/94828#comment</comments><wfw:commentRss>http://www.i170.com/Article/94828/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/93677</link><title><![CDATA[Vertical centering using CSS]]></title><author>feifei4728</author><category>CSS</category><pubDate>Mon, 12 Nov 2007 21:57:06  +0800</pubDate><description><![CDATA[<p>对css布局 居中问题的总结讲述</p>
<p><a href=
"http://www.student.oulu.fi/~laurirai/www/css/middle/">http://www.student.oulu.fi/~laurirai/www/css/middle/</a></p>
<p>&nbsp;也先打个包存着，怕以后丢了。</p>
<p><a href=
"http://www.i170.com/Attach/32BF4F06-81E2-4504-ABDD-4121D1ACFD31">本地下载</a></p>

]]></description><guid>http://www.i170.com/Article/93677</guid><trackback:ping>http://www.i170.com/Article/93677/trackback</trackback:ping><comments>http://www.i170.com/Article/93677#comment</comments><wfw:commentRss>http://www.i170.com/Article/93677/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/93673</link><title><![CDATA[Something for CSS learning]]></title><author>feifei4728</author><category>CSS</category><pubDate>Mon, 12 Nov 2007 21:31:22  +0800</pubDate><description><![CDATA[<p>&nbsp;</p>
<p>拿来当学CSS的分析资料比较实用，之前我也拿来当材料分析的。过了好久怕以后要用找不到，先挂在这里。呵呵。</p>
<p><a href=
"http://blog.html.it/layoutgala/">http://blog.html.it/layoutgala/</a></p>
<p>&nbsp;</p>

]]></description><guid>http://www.i170.com/Article/93673</guid><trackback:ping>http://www.i170.com/Article/93673/trackback</trackback:ping><comments>http://www.i170.com/Article/93673#comment</comments><wfw:commentRss>http://www.i170.com/Article/93673/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/93611</link><title><![CDATA[Free css and xhtml templates]]></title><author>feifei4728</author><category>CSS</category><pubDate>Mon, 12 Nov 2007 12:54:54  +0800</pubDate><description><![CDATA[<p><a href="http://www.opensourcetemplates.org/" target=
"blank">www.opensourcetemplates.org/</a></p>
<p>&nbsp;<a href="http://www.oswd.org/" target=
"blank">www.oswd.org/</a></p>
<p>&nbsp;<a href="http://templates.arcsin.se/" target=
"blank">templates.arcsin.se/</a></p>
<p>&nbsp;<a href="http://www.cssplay.co.uk/layouts/index.html"
target="blank">www.cssplay.co.uk/layouts/index.html</a></p>
<p>&nbsp;<a href="http://www.ex-designz.net/default.asp" target=
"blank">www.ex-designz.net/default.asp</a></p>

]]></description><guid>http://www.i170.com/Article/93611</guid><trackback:ping>http://www.i170.com/Article/93611/trackback</trackback:ping><comments>http://www.i170.com/Article/93611#comment</comments><wfw:commentRss>http://www.i170.com/Article/93611/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/93041</link><title><![CDATA[给编程爱好者的忠告]]></title><author>feifei4728</author><category>网摘</category><pubDate>Fri, 02 Nov 2007 16:37:13  +0800</pubDate><description><![CDATA[<p>【以下内容完全转贴--深有感触啊！转过来警戒自己！】</p>
<p>
近来有不少人问我是学Vb好还是学C好，还有人问Vc和C++Builder哪个更好，还有人说只要是面向对象的就是好的所以C++和Java最有前途。以我从事计算机教育多年的经验我要告诉这些编程爱好者，如果只是一味追求学会一门所谓的最先进的编程语言（事实上不存在最优），而忽视了编程思想和基础知识无疑是犯了学习编程的大忌。<br>

&nbsp;&nbsp;&nbsp;&nbsp;就拿面向对象来说，人们一提到它就赞不绝口，然而又有多少人领会到什么是面向对象的思想，我想如果没有真正做过大项目的人是很难体会到其优越性的，这不是通过学习C++或Java就能掌握的。我的意思是编程注重的是想法而不是语言，这就是计算机专业要开设“算法分析”和“数据结构”的原因，如果一头钻到某一门语言中无疑于作茧自缚，束缚了自己的思想，打一个不好的比方一个程序员的工作性质和民工没什么两样只是在垒砖头，而真正的计算机人才应该是一个设计师、工程师。<br>

&nbsp;&nbsp;&nbsp;&nbsp;现在国外的一些优秀的计算机著作的都是一些从事如生物、化学等领域的专家，我想这是因为他们以前没学过计算机，没有被某些传统的观点所束缚，从宏观上来看待问题，反而在思想上有所突破，这是值得我们深思的。<br>

<br>
真正的程序员（转贴）<br>
作一个真正合格的程序员，或者说就是可以真正合格完成一些代码工作的程序员，应该具有的素质。</p>
<p class="partingline">[separator]</p>
<p><br>
1：团队精神和协作能力<br>
把它作为基本素质，并不是不重要，恰恰相反，这是程序员应该具备的最基本的，也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语，任何个人的力量都是有限的，即便如linus这样的天才，也需要通过组成强大的团队来创造奇迹，那些遍布全球的为linux写核心的高手们，没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财，但是一旦进入一些大系统的研发团队，进入商业化和产品化的开发任务，缺乏这种素质的人就完全不合格了。<br>

<br>
<br>
2：文档习惯<br>
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子，良好的文档是正规研发流程中非常重要的环节，作为代码程序员，30％的工作时间写技术文档是很正常的，而作为高级程序员和系统分析员，这个比例还要高很多。缺乏文档，一个软件系统就缺乏生命力，在未来的查错，升级以及模块的复用时就都会遇到极大的麻烦。<br>

<br>
<br>
3：规范化，标准化的代码编写习惯<br>
作为一些外国知名软件公司的规矩，代码的变量命名，代码内注释格式，甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定，良好的编写习惯，不但有助于代码的移植和纠错，也有助踊同技术人员之间的协作。有些codingfans叫嚣高水平程序员写的代码旁人从来看不懂，这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性，是程序员基本的素质需求。再看看整个linux的搭建，没有规范化和标准化的代码习惯，全球的研发协作是绝对不可想象的。<br>

<br>
<br>
4：需求理解能力<br>
程序员需要理解一个模块的需求，很多小朋友写程序往往只关注一个功能需求，他们把性能指标全部归结到硬件，操作系统和开发环境上，而忽视了本身代码的性能考虑，有人曾经放言说写一个广告交换程序很简单，这种人从来不知道在百万甚至千万数量级的访问情下的性能指标是如何实现的，对于这样的程序员，你给他深蓝那套系统，他也做不出太极链的并访能力。性能需求指标中，稳定性，并访支撑能力以及安全性都很重要，作为程序员需要评估该模块在系统运营中所处的环境，将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点，一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。<br>

<br>
<br>
5：复用性，模块化思维能力<br>
经常可以听到一些程序员有这样的抱怨，写了几年程序，变成了熟练工，每天都是重复写一些没有任何新意的代码，这其实是中国软件人才最大浪费的地方，一些重复性工作变成了熟练程序员的主要工作，而这些，其实是完全可以避免的。复用性设计，模块化思维就是要程序员在完成任何一个功能模块或函数的时候，要多想一些，不要局限在完成当前任务的简单思路上，想想看该模块是否可以脱离这个系统存在，是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用，这样就能极大避免重复性的开发工作，如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题，那么程序员就不会在重复性的工作中耽误太多时间，就会有更多时间和精力投入到创新的代码工作中去。一些好的程序模块代码，即便是70年代写成的，拿到现在放到一些系统里面作为功能模块都能适合的很好，而现在我看到的是，很多小公司软件一升级或改进就动辄全部代码重写，大部分重复性工作无谓的浪费<br>

了时间和精力。<br>
<br>
<br>
6：测试习惯<br>
作为一些商业化正规化的开发而言，专职的测试工程师是不可少的，但是并不是说有了专职的测试工程师程序员就可以不进行自测；软件研发作为一项工程而言，一个很重要的特点就是问题发现的越早，解决的代价就越低，程序员在每段代码，每个子模块完成后进行认真的测试，就可以尽量将一些潜在的问题最早的发现和解决，这样对整体系统建设的效率和可*性就有了最大的保证。测试工作实际上需要考虑两方面，一方面是正常调用的测试，也就是看程序是否能在正常调用下完成基本功能，这是最基本的测试职责，可惜在很多公司这成了唯一的测试任务，实际上还差的远那；第二方面就是异常调用的测试，比如高压力负荷下的稳定性测试，用户潜在的异常输入情下的测试，整体系统局部故障情下该模块受影响状的测试，频发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自己的每段代码都需要进行这种完整测试，但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求，有针对性的进行相关测试并尽早发现和解决问题，当然这需要上面提到的需求理解能力。<br>

<br>
<br>
7：学习和总结的能力<br>
程序员是人才很容易被淘汰，很容易落伍的职业，因为一种技术可能仅仅在三两年内具有领先性，程序员如果想安身立命，就必须不断跟进新的技术，学习新的技能。善于学习，对于任何职业而言，都是前进所必需的动力，对于程序员，这种要求就更加高了。但是学习也要找对目标，一些小coding
fans们，他们也津津乐道于他们的学习能力，一会学会了asp，一会儿学会了php，一会儿学会了jsp，他们把这个作为炫耀的资本，盲目的追逐一些肤浅的，表面的东西和名词，做网络程序不懂通讯传输协议，做应用程序不懂中断向量处理，这样的技术人员，不管掌握了多少所谓的新语<br>

言，永远不会有质的提高。<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;善于总结，也是学习能力的一种体现，每次完成一个研发任务，完成一段代码，都应当有目的的跟踪该程序的应用状和用户反馈，随时总结，找到自己的不足，这样逐步提高，一个程序员才可能成长起来。一个不具备成长性的程序员，即便眼前看是个高手，建议也不要选用，因为他落伍的时候马上就到了。具备以上全部素质的人，应当说是够格的程序员了，请注意以上的各种素质都不是由IQ决定的，也不是大学某些课本里可以学习到的，需要的仅仅是程序员对自己工作的认识，是一种意识上的问题。</p>

]]></description><guid>http://www.i170.com/Article/93041</guid><trackback:ping>http://www.i170.com/Article/93041/trackback</trackback:ping><comments>http://www.i170.com/Article/93041#comment</comments><wfw:commentRss>http://www.i170.com/Article/93041/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/93004</link><title><![CDATA[css注释写法的例子]]></title><author>feifei4728</author><category>CSS</category><pubDate>Fri, 02 Nov 2007 07:53:30  +0800</pubDate><description><![CDATA[<table class="zhi14" cellspacing="0" cellpadding="0" width="700"
align="center" border="0">
<tbody>
<tr>
<td>
<p>转的，呵呵，这样写注释可详细咧。还有目录。不看CSS看头注释就知道大概了。便于技术人员交流。</p>
<p>&nbsp;</p>
<p>top注释<br>
/*<br>
Hauptstyle kurier.at 23-04-2006<br>
******************************<br>
***** Inhaltsverzeichnis *****<br>
******************************<br>
<br>
---------------------------------------------------------------<br>
1. Allgemeine Definitionen (Body, Linkfarben)<br>
---------------------------------------------------------------<br>
2. Funktionsleiste (Schriftgroesse, Suche)<br>
---------------------------------------------------------------<br>
3. Menue<br>
3.1 Login<br>
3.2 Menue<br>
---------------------------------------------------------------<br>
4. Container (Spaltendefinitionen fuer Homepage &amp; Content)<br>
---------------------------------------------------------------<br>
5. Textdefinitionen<br>
5.1 Allgemeines und Homepage<br>
5.2 Content - Artikelliste<br>
5.3 Content - Artikel<br>
5.4 Content - Pfad<br>
5.5 Content - Tabelle<br>
5.6 Content - Zitat<br>
5.7 Content - Mehr zum Artikel<br>
5.8 Buttons Drucken, etc.<br>
5.9 Kommentare<br>
5.10 EBAY<br>
5.11 Subhomepage<br>
5.12 Sieben Tage<br>
5.13 404-Page</p>
<p>详细内容查看原文....</p>
<p class="partingline">[separator]</p>
<p><br>
---------------------------------------------------------------<br>
6. Homepage<br>
6.1 Special<br>
6.2 Werbung<br>
6.3 Fotomeile<br>
6.4 Kult<br>
6.5 Marktplatz, Sport, Specials (TV, Kino, etc.), Top Links<br>
6.6 Leiste oben mit 5 Artikeln<br>
6.7 Wetter Homepage<br>
6.8 Voting Homepage und Content<br>
6.9 TV, Kino, Events, Spiele<br>
6.10 Zitat<br>
---------------------------------------------------------------<br>
7. Footer<br>
---------------------------------------------------------------<br>
<br>
*/<br>
<br>
子类注释<br>
/*<br>
**************************************<br>
***** 1. Allgemeine Definitionen *****<br>
**************************************<br>
*/<br>
/*<br>
******************************<br>
***** 2. Funktionsleiste *****<br>
******************************<br>
*/<br>
/*<br>
*******************************<br>
***** 5. Textdefinitionen *****<br>
*******************************<br>
*/<br>
/*<br>
****************************************<br>
***** 5.1 Allgemeines und Homepage *****<br>
****************************************<br>
*/</p>
</td>
</tr>
</tbody>
</table>

]]></description><guid>http://www.i170.com/Article/93004</guid><trackback:ping>http://www.i170.com/Article/93004/trackback</trackback:ping><comments>http://www.i170.com/Article/93004#comment</comments><wfw:commentRss>http://www.i170.com/Article/93004/commentRss</wfw:commentRss></item> <item><link>http://www.i170.com/Article/90844</link><title><![CDATA[英语和数学对计算机专业的重要性]]></title><author>feifei4728</author><category>感悟</category><pubDate>Thu, 04 Oct 2007 01:20:26  +0800</pubDate><description><![CDATA[<p>
曾经盲目的选择了计算机专业，并不知道数学和英语跟他的紧密性。自小就很讨厌学数学，作数学题，所以数学成绩从来就没好过。数学是我一生的痛啊。</p>
<p>
英语相对来说就好多了，我对英语的兴趣还是比较大的。虽然我喜欢计算机技术，玩电脑，而英语对计算机类知识很重要，但这并不是引起我喜欢英语的原因。我喜欢英语是喜欢一种新的文化，感受一种新的生活方式。</p>
<p>
真正让喜欢计算机的原因我自己也不太清楚，曾经是因为的他神秘，他的强大，他的距离。而当自己真的接触了计算机之后，或许是真的出自一份热爱，一份执着。或许还有很多外部因素，我也不知道那个是最主要的。</p>
<p>
开始接触计算机还感受不到数学和英语与之的重要关系，随着深入，越发觉得，自己的数学很差，以前没学好，英语虽然基础比较好，但是似乎还不够。而想去学好数学和英语又觉得很难入手。</p>
<p>
IT行业对电脑的应用包括多方面，而几乎所有的计算机技术，想要精通，数学一定要有比较高的要求，编程中的算法，模型的建立，计算等等对数学的应用还是很广的。而且，数学重在培养人的思维，长期的过程才会体现他的效果。所以在个方面的创新都需要数学的支持~~~</p>
<p>
而对英语，能看到有关计算机知识的地方必然会看到英语，我们不得不承认这都是因为外国的强悍而造成了我们学习的成本，如果计算机发源于中国，在中国发展鼎盛的话，我想我们也不用学英语了，外国人想搞计算机还得学中文呢，嘿嘿~~。不光是专业术语，而且想看到最最新的资料，必然也要看很多英文的原稿。至于编程中涉及到的英语，那不过是最简单的英文了。</p>
<p>&nbsp;</p>
<p>为了，前途，为了计算机，学好数学，学好英语吧！</p>

]]></description><guid>http://www.i170.com/Article/90844</guid><trackback:ping>http://www.i170.com/Article/90844/trackback</trackback:ping><comments>http://www.i170.com/Article/90844#comment</comments><wfw:commentRss>http://www.i170.com/Article/90844/commentRss</wfw:commentRss></item> </channel></rss> 