<?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:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>無淚之城</title>
	<atom:link href="http://blog.yourtion.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.yourtion.com</link>
	<description>Yourtion&#039;s Blog</description>
	<lastBuildDate>Wed, 08 Sep 2010 01:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<atom:link rel='hub' href='http://blog.yourtion.com/?pushpress=hub'/>
		<item>
		<title>Boson NetSim for CCNP 破解</title>
		<link>http://blog.yourtion.com/?p=1509</link>
		<comments>http://blog.yourtion.com/?p=1509#comments</comments>
		<pubDate>Tue, 07 Sep 2010 00:57:37 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1509</guid>
		<description><![CDATA[找了个Boson NetSim for CCNP7.05的破解，将其升级到了最新版本的7.0.12。顺便进行了下汉化，同时也汉化部分了模拟器中命令的帮助提示。]]></description>
			<content:encoded><![CDATA[<p>开学这段时间开始比较忙，加上没什么心情，所以博客很久没有更新，见谅啊。</p>
<p>前几天报名参加了11月份的网工考试，刚好今天在找Cisco的模拟，找到好东西，大家分享一下·····</p>
<p>找了个Boson NetSim for CCNP7.05的破解，将其升级到了最新版本的7.0.12。顺便进行了下汉化，同时也汉化部分了模拟器中命令的帮助提示。</p>
<p>如何进行破解，请跟我来：</p>
<p>1.去Boson的官网上下载Boson NetSim for CCNP 的最新版本。<br />
2.安装Boson NetSim for CCNP 并运行，选择 Use Demo Version。<br />
3.选择主界面上的Tools菜单中Check for Updates。直接更新全部文件。并重启程序。<br />
4.关闭程序，将我提供的3个文件覆盖到安装文件夹。<br />
5.启动程序后，选择 Use Demo Version</p>
<p>现在看看是不是可以使用全部的命令了？只是主界面上显示的7.05。</p>
<p>如果觉得英文看的不爽，可以使用我提供的汉化包，将汉化包中的文件覆盖到安装文件夹，就可以看到熟悉的中文了，这可是连命令提示都汉化了哦。：），当然如果想使用英文提示，请不要覆盖mscon43demo.dll。</p>
<p>目前汉化还不完全，不过模拟器主界面和网络设计器的界面已全部汉化，过几天抽时间进行完整的汉化。</p>
<p><a href="http://dl.dbank.com/c0h176iaj6" target="_blank">下载地址</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1509</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ecmal批量添加商店（包括分区和权限）</title>
		<link>http://blog.yourtion.com/?p=1502</link>
		<comments>http://blog.yourtion.com/?p=1502#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:51:41 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[康盛]]></category>
		<category><![CDATA[Ecmall]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1502</guid>
		<description><![CDATA[ShowBox的商城基本进入尾声。前段时间介绍了《ECmall批量添加用户》。但是发现后台没办法批量添加商城，所以又花了一个晚上研究在SQL中添加商城，包括分区和权限。]]></description>
			<content:encoded><![CDATA[<p>ShowBox的商城基本进入尾声。前段时间介绍了<a href="http://blog.yourtion.com/?p=1478" target="_blank">《ECmall批量添加用户》</a>。</p>
<p>但是发现后台没办法批量添加商城，所以又花了一个晚上研究在SQL中添加商城，包括分区和权限。</p>
<p>首先用这个语句在Excel的A1中调用商店名和店主名，在B1调用店主id生成加入开通商城的代码：</p>
<blockquote><p>=CONCATENATE(INSERT INTO `ecm_store` VALUES (&#8220;,B1,&#8221;&#8216;, &#8216;&#8221;,A1,&#8221;&#8216;, &#8216;&#8221;,A1,&#8221;&#8216;, &#8221;, NULL , &#8221;, &#8221;, &#8221;, &#8221;, &#8217;1&#8242;, &#8221;, &#8217;0&#8242;, &#8217;0.00&#8242;, NULL , &#8217;1&#8242;, &#8221;, &#8217;1282202793&#8242;, &#8217;0&#8242;, NULL , &#8217;14&#8242;, &#8217;1&#8242;, &#8221;, NULL , NULL , NULL , &#8221;, &#8221;, &#8221;, &#8221;, &#8221;, &#8221;);)</p></blockquote>
<blockquote><p>INSERT INTO `ecm_store` VALUES (&#8217;14&#8242;, &#8216;A101&#8242;, &#8216;A101&#8242;, &#8221;, NULL , &#8221;, &#8221;, &#8221;, &#8221;, &#8217;1&#8242;, &#8221;, &#8217;0&#8242;, &#8217;0.00&#8242;, NULL , &#8217;1&#8242;, &#8221;, &#8217;1282202793&#8242;, &#8217;0&#8242;, NULL , &#8217;14&#8242;, &#8217;1&#8242;, &#8221;, NULL , NULL , NULL , &#8221;, &#8221;, &#8221;, &#8221;, &#8221;, &#8221;);</p></blockquote>
<p>然后生成之后发现 商城分区不是在商店的表里面设置的，又研究了分区和商店的关系表。用Excel语句在B1调用商店id在C1调用分区id生产SQL语句：</p>
<blockquote><p>=CONCATENATE(INSERT INTO `ecm_category_store` (`cate_id`, `store_id`) VALUES (&#8216;&#8221;,c1,&#8221;&#8216;, &#8216;&#8221;,B1,&#8221;&#8216;);)</p></blockquote>
<blockquote><p>INSERT INTO `ecm_category_store` (`cate_id`, `store_id`) VALUES (&#8217;1&#8242;, &#8217;14&#8242;);</p></blockquote>
<p>本来以为这样就可以，结果早上他们测试之后发现权限不对～所以又重新研究了权限那一块，得出我们用的是all权限，所以用Excel的语句在D1里面调用用户id和商店id（我两个是一样的）：</p>
<blockquote><p>=CONCATENATE(&#8220;INSERT INTO  `ecm_user_priv` (  `user_id` ,  `store_id` ,  `privs` ) VALUES (&#8216;&#8221;,D1,&#8221;&#8216;,  &#8216;&#8221;,D1,&#8221;&#8216;,  &#8216;all&#8217;);&#8221;)</p>
<p>INSERT INTO  `ecm_user_priv` (  `user_id` ,  `store_id` ,  `privs` ) VALUES (&#8216;&#8221;,14,&#8221;&#8216;,  &#8216;&#8221;,14,&#8221;&#8216;,  &#8216;all&#8217;);</p></blockquote>
<p>最后就可以正常使用了··就这样添加了300多个用户···</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1502</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jquery.min跟lightbox共存</title>
		<link>http://blog.yourtion.com/?p=1498</link>
		<comments>http://blog.yourtion.com/?p=1498#comments</comments>
		<pubDate>Thu, 26 Aug 2010 05:02:51 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[CSS+DIV]]></category>
		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1498</guid>
		<description><![CDATA[最近在做Showbox的站点，21showbox.com。因为首页效果之前是用ImageFlow，所以研究了很久都没办法将ImageFlow的点击效果。然后又换了另外一个放大效果，但是在页面上表现不好，最后就决定用LihghtBox效果。但是当我满心欢喜地将代码集成到页面里面的时候就发现LightBox没用了···很快我就想到是JS的兼容问题，当我去掉原来jquery.min的时候，LightBox效果就正常了。原来的代码如下：]]></description>
			<content:encoded><![CDATA[<p>最近在做Showbox的站点，21showbox.com。因为首页效果之前是用ImageFlow，所以研究了很久都没办法将ImageFlow的点击效果。然后又换了另外一个放大效果，但是在页面上表现不好，最后就决定用LihghtBox效果。</p>
<p>但是当我满心欢喜地将代码集成到页面里面的时候就发现LightBox没用了···</p>
<p>很快我就想到是JS的兼容问题，当我去掉原来jquery.min的时候，LightBox效果就正常了。原来的代码如下：</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;jquery.min.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
$(document).ready(function() {</p>
<p>/*	2nd example	*/<br />
$(&#8220;#menu2 li a&#8221;).wrapInner( &#8216;&lt;span&gt;&lt;/span&gt;&#8217; );</p>
<p>$(&#8220;#menu2 li a&#8221;).each(function() {<br />
$( &#8216;&lt;span&gt;&#8217; +  $(this).text() + &#8216;&lt;/span&gt;&#8217; ).appendTo( this );<br />
});</p>
<p>$(&#8220;#menu2 li a&#8221;).hover(function() {<br />
$(&#8220;.out&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;45px&#8217;},	200); // move down &#8211; hide<br />
$(&#8220;.over&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;0px&#8217;},		200); // move down &#8211; show</p>
<p>}, function() {<br />
$(&#8220;.out&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;0px&#8217;},		200); // move up &#8211; show<br />
$(&#8220;.over&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8216;-45px&#8217;},	200); // move up &#8211; hide<br />
});</p>
<p>});<br />
&lt;/script&gt;</p></blockquote>
<p>LightBox要加入的代码：</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/prototype.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/scriptaculous.js?load=effects,builder&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/lightbox.js&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>然后根据jquery的多库共存机制，他的应用代码是：</p>
<blockquote><p>jQuery.noConflict();<br />
(function($) {<br />
$(function() {<br />
// 使用 $ 作为 jQuery 别名的代码<br />
});<br />
})(jQuery);<br />
// 其他用 $ 作为别名的库的代码</p></blockquote>
<p>所以整合之后的代码就变成：</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;jquery.min.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/prototype.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/scriptaculous.js?load=effects,builder&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/lightbox.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
jQuery.noConflict();<br />
(function($) {<br />
$(function() {</p>
<p>$(document).ready(function() {</p>
<p>/*	2nd example	*/<br />
$(&#8220;#menu2 li a&#8221;).wrapInner( &#8216;&lt;span&gt;&lt;/span&gt;&#8217; );</p>
<p>$(&#8220;#menu2 li a&#8221;).each(function() {<br />
$( &#8216;&lt;span&gt;&#8217; +  $(this).text() + &#8216;&lt;/span&gt;&#8217; ).appendTo( this );<br />
});</p>
<p>$(&#8220;#menu2 li a&#8221;).hover(function() {<br />
$(&#8220;.out&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;45px&#8217;},	200); // move down &#8211; hide<br />
$(&#8220;.over&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;0px&#8217;},		200); // move down &#8211; show</p>
<p>}, function() {<br />
$(&#8220;.out&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8217;0px&#8217;},		200); // move up &#8211; show<br />
$(&#8220;.over&#8221;,	this).stop().animate({&#8216;top&#8217;:	&#8216;-45px&#8217;},	200); // move up &#8211; hide<br />
});</p>
<p>});</p>
<p>});<br />
})(jQuery);<br />
&lt;/script&gt;</p></blockquote>
<p>这样主页的导航jquery和LightBox就完美地共存了··</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1498</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>数据库设计三大范式应用实例剖析</title>
		<link>http://blog.yourtion.com/?p=1496</link>
		<comments>http://blog.yourtion.com/?p=1496#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:52:10 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[电脑技巧]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1496</guid>
		<description><![CDATA[作者：宋宝华     出处：天极开发 引言 数据库的设计范式是数据库设计所需要满足的规范，满足这些规范的数据库是简洁的、结构明晰的，同时，不会发生插入（insert）、删除（delete）和更新（update）操作异常。反之则是乱七八糟，不仅给数据库的编程人员制造麻烦，而且面目可憎，可能存储了大量不需要的冗余信息。 设计范式是不是很难懂呢？非也，大学教材上给我们一堆数学公式我们当然看不懂，也记不住。所以我们很多人就根本不按照范式来设计数据库。 实质上，设计范式用很形象、很简洁的话语就能说清楚，道明白。本文将对范式进行通俗地说明，并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程。 范式说明 第一范式（1NF）：数据库表中的字段都是单一属性的，不可再分。这个单一属性由基本类型构成，包括整型、实数、字符型、逻辑型、日期型等。 例如，如下的数据库表是符合第一范式的： 字段1 字段2 字段3 字段4 而这样的数据库表是不符合第一范式的： 字段1 字段2 字段3 字段4 字段3.1 字段3.2 很显然，在当前的任何关系数据库管理系统（DBMS）中，傻瓜也不可能做出不符合第一范式的数据库，因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此，你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。 第二范式（2NF）：数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖（部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况），也即所有非关键字段都完全依赖于任意一组候选关键字。 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分)，关键字为组合关键字(学号, 课程名称)，因为存在如下决定关系： (学号, 课程名称) → (姓名, 年龄, 成绩, 学分) 这个数据库表不满足第二范式，因为存在如下决定关系： (课程名称) → (学分) (学号) → (姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF，这个选课关系表会存在如下问题： (1) 数据冗余： 同一门课程由n个学生选修，&#8221;学分&#8221;就重复n-1次；同一个学生选修了m门课程，姓名和年龄就重复了m-1次。 (2) 更新异常： 若调整了某门课程的学分，数据表中所有行的&#8221;学分&#8221;值都要更新，否则会出现同一门课程学分不同的情况。 (3) [...]]]></description>
			<content:encoded><![CDATA[<p>作者：宋宝华     出处：天极开发</p>
<p><strong>引言</strong></p>
<p>数据库的设计范式是数据库设计所需要满足的规范，满足这些规范的数据库是简洁的、结构明晰的，同时，不会发生插入（insert）、删除（delete）和更新（update）操作异常。反之则是乱七八糟，不仅给数据库的编程人员制造麻烦，而且面目可憎，可能存储了大量不需要的冗余信息。</p>
<p>设计范式是不是很难懂呢？非也，大学教材上给我们一堆数学公式我们当然看不懂，也记不住。所以我们很多人就根本不按照范式来设计数据库。</p>
<p>实质上，设计范式用很形象、很简洁的话语就能说清楚，道明白。本文将对范式进行通俗地说明，并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程。</p>
<p><strong>范式说明</strong></p>
<p>第一范式（1NF）：数据库表中的字段都是单一属性的，不可再分。这个单一属性由基本类型构成，包括整型、实数、字符型、逻辑型、日期型等。</p>
<p>例如，如下的数据库表是符合第一范式的：</p>
<table border="0" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>字段1</td>
<td>字段2</td>
<td>字段3</td>
<td>字段4</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>而这样的数据库表是不符合第一范式的：</p>
<table border="0" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>字段1</td>
<td>字段2</td>
<td colspan="2">字段3</td>
<td>字段4</td>
</tr>
<tr>
<td></td>
<td></td>
<td>字段3.1</td>
<td>字段3.2</td>
<td></td>
</tr>
<tr height="0">
<td width="119"></td>
<td width="119"></td>
<td width="158"></td>
<td width="158"></td>
<td width="119"></td>
</tr>
</tbody>
</table>
<p>很显然，在当前的任何关系数据库管理系统（DBMS）中，傻瓜也不可能做出不符合第一范式的数据库，因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此，你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。</p>
<p>第二范式（2NF）：数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖（部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况），也即所有非关键字段都完全依赖于任意一组候选关键字。</p>
<p>假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分)，关键字为组合关键字(学号, 课程名称)，因为存在如下决定关系：</p>
<p>(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)</p>
<p>这个数据库表不满足第二范式，因为存在如下决定关系：</p>
<p>(课程名称) → (学分)</p>
<p>(学号) → (姓名, 年龄)</p>
<p>即存在组合关键字中的字段决定非关键字的情况。</p>
<p>由于不符合2NF，这个选课关系表会存在如下问题：</p>
<p>(1) 数据冗余：</p>
<p>同一门课程由n个学生选修，&#8221;学分&#8221;就重复n-1次；同一个学生选修了m门课程，姓名和年龄就重复了m-1次。</p>
<p>(2) 更新异常：</p>
<p>若调整了某门课程的学分，数据表中所有行的&#8221;学分&#8221;值都要更新，否则会出现同一门课程学分不同的情况。</p>
<p>(3) 插入异常：</p>
<p>假设要开设一门新的课程，暂时还没有人选修。这样，由于还没有&#8221;学号&#8221;关键字，课程名称和学分也无法记录入数据库。</p>
<p>(4) 删除异常：</p>
<p>假设一批学生已经完成课程的选修，这些选修记录就应该从数据库表中删除。但是，与此同时，课程名称和学分信息也被删除了。很显然，这也会导致插入异常。</p>
<p>把选课关系表SelectCourse改为如下三个表：</p>
<p>学生：Student(学号, 姓名, 年龄)；</p>
<p>课程：Course(课程名称, 学分)；</p>
<p>选课关系：SelectCourse(学号, 课程名称, 成绩)。</p>
<p>这样的数据库表是符合第二范式的，消除了数据冗余、更新异常、插入异常和删除异常。</p>
<p>另外，所有单关键字的数据库表都符合第二范式，因为不可能存在组合关键字。</p>
<p>第三范式（3NF）：在第二范式的基础上，数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖，指的是如果存在&#8221;A → B → C&#8221;的决定关系，则C传递函数依赖于A。因此，满足第三范式的数据库表应该不存在如下依赖关系：</p>
<p>关键字段 → 非关键字段x → 非关键字段y</p>
<p>假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话)，关键字为单一关键字&#8221;学号&#8221;，因为存在如下决定关系：</p>
<p>(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)</p>
<p>这个数据库是符合2NF的，但是不符合3NF，因为存在如下决定关系：</p>
<p>(学号) → (所在学院) → (学院地点, 学院电话)</p>
<p>即存在非关键字段&#8221;学院地点&#8221;、&#8221;学院电话&#8221;对关键字段&#8221;学号&#8221;的传递函数依赖。</p>
<p>它也会存在数据冗余、更新异常、插入异常和删除异常的情况，读者可自行分析得知。</p>
<p>把学生关系表分为如下两个表：</p>
<p>学生：(学号, 姓名, 年龄, 所在学院)；</p>
<p>学院：(学院, 地点, 电话)。</p>
<p>这样的数据库表是符合第三范式的，消除了数据冗余、更新异常、插入异常和删除异常。</p>
<p>鲍依斯-科得范式（BCNF）：在第三范式的基础上，数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。</p>
<p>假设仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量)，且有一个管理员只在一个仓库工作；一个仓库可以存储多种物品。这个数据库表中存在如下决定关系：</p>
<p>(仓库ID, 存储物品ID) →(管理员ID, 数量)</p>
<p>(管理员ID, 存储物品ID) → (仓库ID, 数量)</p>
<p>所以，(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是StorehouseManage的候选关键字，表中的唯一非关键字段为数量，它是符合第三范式的。但是，由于存在如下决定关系：</p>
<p>(仓库ID) → (管理员ID)</p>
<p>(管理员ID) → (仓库ID)</p>
<p>即存在关键字段决定关键字段的情况，所以其不符合BCNF范式。它会出现如下异常情况：</p>
<p>(1) 删除异常：</p>
<p>当仓库被清空后，所有&#8221;存储物品ID&#8221;和&#8221;数量&#8221;信息被删除的同时，&#8221;仓库ID&#8221;和&#8221;管理员ID&#8221;信息也被删除了。</p>
<p>(2) 插入异常：</p>
<p>当仓库没有存储任何物品时，无法给仓库分配管理员。</p>
<p>(3) 更新异常：</p>
<p>如果仓库换了管理员，则表中所有行的管理员ID都要修改。</p>
<p>把仓库管理关系表分解为二个关系表：</p>
<p>仓库管理：StorehouseManage(仓库ID, 管理员ID)；</p>
<p>仓库：Storehouse(仓库ID, 存储物品ID, 数量)。</p>
<p>这样的数据库表是符合BCNF范式的，消除了删除异常、插入异常和更新异常。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1496</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>误删文件不用怕 grep命令帮你恢复</title>
		<link>http://blog.yourtion.com/?p=1494</link>
		<comments>http://blog.yourtion.com/?p=1494#comments</comments>
		<pubDate>Mon, 23 Aug 2010 12:34:18 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1494</guid>
		<description><![CDATA[你是否在Linux上rm掉过你的重要文件？尤其是自己辛苦写的脚本和配置文件，不小心误删了的心情想必是十分的懊恼。不过不用怕。在一般的删除文件操作中，Linux 并不会立即清空存储该文件的 block 内容。这时候我们可以用 grep 搜索整个分区，找到被误删的内容。]]></description>
			<content:encoded><![CDATA[<p>来自：http://os.51cto.com/art/201008/221133.htm</p>
<p>作为长期的电脑使用者，肯定会有误删文件的经历，在 Mac OS X 和 Windows 上删除的文件都会默认进 “回收站”。在 Linux 上如果事先没有用别名（alias）修改默认的 rm 功能，rm 后文件就会丢失，幸运的是，在一般的删除文件操作中，Linux 并不会立即清空存储该文件的 block 内容，而只会释放该文件所占用的 inode 和 data block，Linux 上 rm 的过程其实就是将 inode bitmap 和 data block bitmap 中的相应标识设为空闲状态的过程，并不涉及到真正的数据，这也是为什么在 Linux 下删除大文件这么快速的原因，因为大文件所占的磁盘根本就没有清空。所以，如果我们能找到文件对应的 inode，由此查到相应的 data block，就可能从磁盘上把已删除的文件恢复出来，很多文件/磁盘恢复工具都是这么做的。</p>
<p>一般来说二进制文件、库文件等删除后都可以从其他 Linux 拷贝恢复，不是很要紧，如果自己辛苦写的脚本或者配置文件误删了就杯具了。误删这种蠢事经常在 VPSee 身上发生，最近一次是在今年年初的时候，开了 screen 多次 ssh 到不同服务器上，在前后切换的过程中删除了一个很肯定的配置文件，后来发现删的文件是对的，可惜在一台错误的服务器上，本来应该在 A 服务器上删除 file.txt 结果在 B 服务器上删除了 file.txt，多个 screen 和 ssh 把自己搞晕了，而且主机名没有安排好，多台机器都是用的 localhost，不利于识别当时的环境。如果使用 Linux 的时候不幸误删了一个文本文件怎么办呢？</p>
<p>先临时建一个文本文件 vpsee.log 做测试，然后删除这个文件：</p>
<blockquote><p>$ echo &#8220;important log file for vpsee.com&#8221; &gt; vpsee.log</p>
<p>$ cat vpsee.log<br />
important log file for vpsee.com</p>
<p>$ rm vpsee.log</p></blockquote>
<p>如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1，-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的（分区本身是二进制形式的），-B 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容：</p>
<blockquote><p># grep -a -B 10 -A 100 &#8216;vpsee.com&#8217; /dev/sda1 &gt; tmp.txt</p></blockquote>
<p>在一堆 @ 之间可以找到我们刚才删除的内容：</p>
<blockquote><p>$ vi tmp.txt<br />
&#8230;<br />
@$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@?^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@<br />
^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@<br />
^@^@important log file for vpsee.com<br />
@<br />
@<br />
&#8230;</p></blockquote>
<p>当然，如果误删了二进制、doc、png/jpg/gif 之类的文件，可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件，比如 TestDisk, PhotoRec 等。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1494</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于CSS-我们走得太远忘了为什么而出发</title>
		<link>http://blog.yourtion.com/?p=1488</link>
		<comments>http://blog.yourtion.com/?p=1488#comments</comments>
		<pubDate>Sun, 22 Aug 2010 03:40:37 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[事件看法]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1488</guid>
		<description><![CDATA[CSS是一种不起的技术，其真实使命是对网页中的内容进行修饰，然而，随着CSS 3的引入：圆角、阴影，旋转等等技术更将CSS带到前所未有的高度，但关于CSS，我们是不是已经走得太远了？]]></description>
			<content:encoded><![CDATA[<p>来自：http://developer.51cto.com/art/201008/221130.htm</p>
<p>CSS是了不起的技术，本人第一次用到的时候，觉得这是我做梦都想不到的东西，随着CSS 3的引入，圆角，阴影，旋转等等技术更将CSS带到前所未有的高度。然而，关于CSS，我们是不是已经走得太远，本文以一个Web设计师的角度对CSS的一些实验性应用做了另一种思考。</p>
<p>那些有关CSS的前卫实验</p>
<p>几个月前，作者曾发表过一篇文章，介绍了以下5种有趣的实验：</p>
<p>◆CSS3 Transforms &amp; @font-face Experiment：http://neography.com/journal/css-transforms-font-face-experiment/</p>
<p>◆CSS Posters：http://designinformer.com/css-posters/</p>
<p>◆Pure CSS Line Graph：http://cssglobe.com/post/4175/pure-css-line-graph</p>
<p>◆CSS3 Leopard-style Stacks：http://gordonbrander.com/lab/css3-stacks/</p>
<p>◆Pure CSS Twitter Fail Whale：http://www.subcide.com/articles/pure-css-twitter-fail-whale/</p>
<p>每个实验都是用了不同的方法，其中一些，如 CSS 线图，在现实中可以找到实际的应用，其它的，如 CSS 实现的 Twitter Fail Whale 图画，则纯属实验，这些实验的目的仅仅为了说明 CSS 能够实现的效果，并不意味着应当这样来做。</p>
<p>让我们实际一点</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1490" title="0920490" src="http://blog.yourtion.com/wp-content/uploads/2010/08/0920490.jpg" alt="" width="450" height="198" /></p>
<p>上图是用纯CSS实现的社会媒体网络标志，很神奇不是？</p>
<p>在Pure CSS Icons: Make The Madness Stop一文中对这一做法也提出了质疑，作者表示，一些人开始尝试将 CSS 当作设计工具并迅速引发大量效仿，然而，这种做法有多少易用性可言？它并不容易集成到你的设计与开发当中，也不容易调整。</p>
<p>《Pure CSS Icons: Make The Madness Stop》：http://farukat.es/journal/2010/08/469-pure-css-icons-make-madness-stop</p>
<p>就像上面的完全基于 CSS 的社会网络标志，无非是一堆各式各样的线条的组合，固然令人印象深刻，也算有创意，但并不实用，因为创作这样一个标志可能需要几个小时的艰辛劳动，在 Photoshop 中画一个同样的图根本不费任何力气，而且效果更好（更细腻）。</p>
<p>Ateş 认为，这种方式生成的图标的可维护性也很成问题，调整一个图标原本只需要调整像素，现在却需要修改 CSS 定义，同时，上述 CSS 标志的设计者 Nicolas Gallagher 也表示，做这类事情，CSS 并非最适合。</p>
<p>降低HTTP请求？</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1491" title="0920491" src="http://blog.yourtion.com/wp-content/uploads/2010/08/0920491.jpg" alt="" width="450" height="249" /></p>
<p>上面这幅图中的图标全部用 CSS 生成，而且作者将它们拿出来卖，40个图标卖25美金。不得不承认，这些图标设计得非常漂亮，作者设计这些 CSS 的初衷是为那些使用的网站降低 HTTP 请求数，因为这些图标不需要额外的图片文件请求。</p>
<p>然而，一个小小的图标文件带来的 HTTP 请求真的很值得一提吗，何况，使用 CSS Sprite 技术，这些图标完全可以放在同一个图片中，靠 CSS 定位显示，这样，只需要一个 HTTP 请求就够了。而且，我实在怀疑，这些 CSS 版的图标到底能减少多少带宽。</p>
<p>本着语义化的精神</p>
<p>必须承认，我有时候会为了实现某种视觉上的需要，而额外使用 DIV 或 SPAN 等标签，这很不语义。然而 CSS 绘图是更不语义的事，CSS 的真实使命是对网页中的内容进行修饰，而不是创建内容本身。网页中的图形本身属于内容的范畴，不应该由 CSS 创建。</p>
<p>原文作者：Matt Ward</p>
<p>原文地址：http://blog.echoenduring.com/2010/08/14/are-we-taking-css-too-far/</p>
<p><strong>Yourtion看法：</strong></p>
<p>确实，现在的CSS越来越多的承担着图片需要承担的角色，CSS3出来之后，一个网站就算不用图片也能做得有声有色，然后呢··前端的开发人员要学习要调试的越来越多···浏览器的兼容问题也困扰着做前端开发的，很郁闷··CSS似乎有些舍本逐末，值得深思一下····</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1488</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>文章列表添加虚线方法</title>
		<link>http://blog.yourtion.com/?p=1481</link>
		<comments>http://blog.yourtion.com/?p=1481#comments</comments>
		<pubDate>Sat, 21 Aug 2010 09:45:31 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[CSS+DIV]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1481</guid>
		<description><![CDATA[最近在为梅州刑侦的网站工作收尾，已经拖了相当久··都有些不好意思啦··人家提了要求要在文章列表下面加虚线，也就只好研究一下··因为用CSS，之前Table的做法就不适合了···重新研究一下···这个方法不错··希望你能举一反三··用在自己站点咯··· ]]></description>
			<content:encoded><![CDATA[<p>最近在为梅州刑侦的网站工作收尾，已经拖了相当久··都有些不好意思啦··  人家提了要求要在文章列表下面加虚线，也就只好研究一下··因为用CSS，之前Table的做法就不适合了···重新研究一下···  这个方法不错··希望你能举一反三··用在自己站点咯···  动易标签提供了两个参数，我们可以利用这两个参数来制作。</p>
<blockquote><p>风格样式1： 列表中奇数行的CSS效果的类名</p>
<p>风格样式2： 列表中偶数行的CSS效果的类名</p></blockquote>
<p>大家来动手做吧，先把下面ＣＳＳ放在风格最后面，然后保存，刷新风格。  以下是CSS代码：</p>
<blockquote><p><span style="font-weight: 700;"><span style="color: #990000;">.lbxx, .lbxx2 {border-bottom: #ccc 1px dashed;}   /*  定义虚线，可以修改 #ccc ，可以修改虚线颜色*/.lbxx {background:#FFFFFF;}               /*  定义列表<span style="color: #ff0000;">奇数行</span>背景颜色，白色*/<br />
.lbxx a:link {color:  #000000;}                /* 未访问的链接，黑颜色*/<br />
.lbxx a:visited {color:  #000000;}            /*已访问的链接， 黑颜色*/<br />
.lbxx a:hover{COLOR: #FF0000;}          /* 鼠标在链接上，red颜色*/<br />
.lbxx a:bb:active {color: #FF0000;}           /*  点击激活链接，黑颜色*/<br />
<span style="font-weight: 700;"><span style="color: #990000;"><br />
.lbxx2  {background:#FFFFFF;}                /* 定义列表<span style="color: #ff0000;">偶数行</span>背景颜色，白色*/<br />
.lbxx2 a:link {color:  #000000;}                /* 未访问的链接，黑颜色*/<br />
.lbxx2 a:visited {color:  #000000;}            /*已访问的链接， 黑颜色*/<br />
.lbxx2 a:hover{COLOR: #FF0000;}         /* 鼠标在链接上，red颜色*/<br />
.lbxx2 a:active {color: #FF0000;}            /*  点击激活链接，黑颜色*/</span><br />
</span></p>
<p></span></span></p></blockquote>
<p>第一行CSS是定义虚线的，“#ccc ” 为虚线的颜色；“1px”为虚线的像素；其他上面都有注释了。  然后我们就可以在标签调用就可以了，下面举个例：  大家注意一下有两个ＣＳＳ的样式，一个是“lbxx”， 一个是“lbxx2”，在下面标签调用的时候只要把两个风格样式填上去就可以了。  如：</p>
<blockquote><p>&lt;!&#8211;{$GetArticleList(0,0,false,0,0,11,false,false,&#8221;",0,3,2,56,0,false,1,false,false,0,false,false,false,false,false,false,0,1,,lbxx,lbxx2)}&#8211;&gt;</p></blockquote>
<p>其他标签也是一样。  如果是编辑标签的时候也是把这两个风格填上去即可。</p>
<blockquote><p>风格样式1： 列表中奇数行的CSS效果的类名<br />
风格样式2： 列表中偶数行的CSS效果的类名</p></blockquote>
<p>现在大家知道怎么做了吧。分别有什么作用？你看看旁边红色字不就清楚了！</p>
<p><strong>注意</strong>：标签的显示样式不一定要是“表格式”，我用的是DIV输出既“5”</p>
<p>ShowType &#8212;&#8211;显示方式，1为普通样式，2为表格式，3为各项独立式，4为智能多列式，5为输出DIV，6为输出RSS</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1481</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ECmall批量添加用户</title>
		<link>http://blog.yourtion.com/?p=1478</link>
		<comments>http://blog.yourtion.com/?p=1478#comments</comments>
		<pubDate>Fri, 20 Aug 2010 15:54:54 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[康盛]]></category>
		<category><![CDATA[Ecmall]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1478</guid>
		<description><![CDATA[最近在做Showbox的job，用ECmall做的商城。因为商家那边要求要批量添加店里的用户，但是后台没有这样的功能，也就只有从sql那边下手。顺便温习一下Excel和SQL。]]></description>
			<content:encoded><![CDATA[<p>最近在做Showbox的job，用ECmall做的商城。因为商家那边要求要批量添加店里的用户，但是后台没有这样的功能，也就只有从sql那边下手。顺便温习一下Excel和SQL。</p>
<p>经过研究他的数据库结构，终于得到了要添加的SQL语句，结果在前台发现登录不了。才知道密码忘了用MD5去加密。</p>
<p>最后用语句：</p>
<blockquote><p>INSERT INTO jcom_mall.ecm_member VALUES (NULL , &#8216;yourtion&#8217;, &#8216;mail@yourtion.com&#8217;, &#8217;5fa2db591ebb44529673957ed8b738fc&#8217;, &#8221;, &#8217;0&#8242;, NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , &#8217;0&#8242;, NULL , NULL , &#8217;0&#8242;, &#8217;0&#8242;, NULL , &#8217;0&#8242;, NULL , &#8221;);</p></blockquote>
<p>添加好用户，然后是用Excel表格进行用户名等数据的代入和SQL语句的生成，查了不少资料和尝试多次之后得出语句:</p>
<blockquote><p>=CONCATENATE(&#8220;INSERT INTO jcom_mall.ecm_member VALUES (NULL , &#8216;&#8221;,A1,&#8221;&#8216;, &#8216;mail@yourtion.com&#8217;, &#8217;5fa2db591ebb44529673957ed8b738fc&#8217;, &#8221;, &#8217;0&#8242;, NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , &#8217;0&#8242;, NULL , NULL , &#8217;0&#8242;, &#8217;0&#8242;, NULL , &#8217;0&#8242;, NULL , &#8221;);&#8221;)</p></blockquote>
<p>其中“A1”就是用户名所在列，其他用户信息忽略，等用户第一次登陆更改密码和其信息时候更改，你也可以在Excel上面写好按照&#8221;,A1,&#8221;的形式导入语句。</p>
<p>希望你能举一反三，有空我会找一些关于SQL和Excel的资料，希望对你有帮助～</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1478</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>汕头七日……</title>
		<link>http://blog.yourtion.com/?p=1475</link>
		<comments>http://blog.yourtion.com/?p=1475#comments</comments>
		<pubDate>Thu, 19 Aug 2010 06:03:10 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[成长历程]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1475</guid>
		<description><![CDATA[不知不觉就在汕头呆了连头带尾的七天，很多时候都是呆在家，因为天气热，也因为没有节目。没什么收获也收获颇丰，想通了一些东西！]]></description>
			<content:encoded><![CDATA[<p>不知不觉就在汕头呆了连头带尾的七天，很多时候都是呆在家，因为天气热，也因为没有节目。没什么收获也收获颇丰，想通了一些东西！</p>
<p>居然记错好友的生日，然后一早的计划竟然遇上哀悼日，然后一切计划泡了汤，变成我们跑去喝东西，也很不错，大家聚一下，聊一下天就很不错，平时好像没怎么联系，但是见面就聊得很开心，这或许就是好朋友的默契吧……</p>
<p>然后刚好遇上七夕，本来这个节日就与我没什么关系的，结果居然有女儿陪我。意外阿，虽然等了两个钟头，还是值得拉！跟女儿出去总是嘻嘻哈哈的，吃着我们最爱的麻辣烫，聊着生活中的快乐，听她讲各种趣事，然后逛街，从步行街头嘻笑到路尾，就是这样没头没脑地快乐着……这次逛街没有像前几次白逛，谢谢女儿的礼物，很开心，算是补过生日咯……</p>
<p>去医院看外婆，在那里通宵了一个晚上，看着外婆出院了，渐渐康复很开心，然后渐渐发现子女多的必要性，没有这些后辈去照顾，进医院真的不知怎么过，像现在都是独生子的时代，老了进医院，身边都是几个老头，儿女们上班去了，有什么事都不知找谁帮忙好！呵呵，担心有点过头了……</p>
<p>奔三了，开始很多专业课的日子，开始为未来打算，但是我从来不相信计划，做好应该做的，做现在力所能及的，不想像大二下学期那样颓废了，真的没有时间让我去虚度，所以真的要振作起来，过好日子，接下来的移动杯还有双学位考试，打响大三第一炮。感情的话，现在的我比较清楚地觉得，如果现在地我恋爱了，真的就是因为寂寞去开始一段爱情，所以不想随便去做这样一个决定，反正都单身二十来年了，再单身两年又有何相干。身边有一群好友就足够了……</p>
<p>火车继续开着，写到这里咯，开学再续……­</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1475</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.htaccess的rewrite实例</title>
		<link>http://blog.yourtion.com/?p=1463</link>
		<comments>http://blog.yourtion.com/?p=1463#comments</comments>
		<pubDate>Wed, 18 Aug 2010 08:31:43 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1463</guid>
		<description><![CDATA[.htaccess文件相信大家都不陌生吧，不过网上关于.htaccess编写方法的教程很有限，也没有几个完全是博主自己写的。
我在这里就搜了几个常用规则，总结一下rewrite规则的用法。当然这只是.htaccess功能的一小部分，但是相当实用。
如果熟练掌握rewrite规则的编写，能够加强对网站URL的控制，对用户体验、SEO都十分有利。]]></description>
			<content:encoded><![CDATA[<p>.htaccess文件相信大家都不陌生吧，不过网上关于.htaccess编写方法的教程很有限，也没有几个完全是博主自己写的。<br />
我在这里就搜了几个常用规则，总结一下rewrite规则的用法。当然这只是.htaccess功能的一小部分，但是相当实用。<br />
如果熟练掌握rewrite规则的编写，能够加强对网站URL的控制，对用户体验、SEO都十分有利。（注：所有规则来源于网络）</p>
<p>一、防盗链功能</p>
<blockquote><p>RewriteEngine On<br />
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]<br />
RewriteCond %{HTTP_REFERER} !^$<br />
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]</p></blockquote>
<p>1.打开Rewrite功能。有可能服务器设置里已经是全局下打开了，但是多写也没事。</p>
<p>2.RewriteCond指令，定义生效条件，用于寻找匹配条件的地址。后面内容用正则表达式匹配。代表含义是发送的请求不由mysite.com而来，那就是盗链啦。末尾的[NC]代表忽略大小写。</p>
<p>3.发送请求的主机前缀不为空。</p>
<p>4.RewriteRule指令，定义重写规则，把匹配的地址按此规则重写。本例中把这些后缀为这些图片格式的，都替换到某一个图片下。[L]表示这是最后一段规则。</p>
<p>在此再这里总结一下几个常用参数：</p>
<blockquote><p>RewriteCond下：</p>
<p>[NC]  不分字母大小写</p>
<p>[OR]  用于连接下一条规则</p>
<p>RewriteRule下：</p>
<p>[R] 强制重定向，[R=code] code默认为302</p>
<p>[F] 禁用URL，返回HTTP 403 错误</p>
<p>[L] 这是最后一条规则，之后内容无用。</p></blockquote>
<p>还有一篇关于正则表达式的教程（很详细）：http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm</p>
<p>二、网址规范化</p>
<blockquote><p>#Options +FollowSymLinks<br />
rewriteEngine on<br />
rewriteCond %{http_host} ^yourdomain.com [NC]<br />
rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]</p></blockquote>
<p>这个是把所有二级域名都重定向到www.yourdomain.com的例子，看起来是不是很简单？</p>
<p>需要注意的是，这里的Options +FollowSymLinks不是必须的，但在某些服务器如果不设置FollowSymLinks，可能引起500错误。再来看一个好玩的重定向：</p>
<blockquote><p>RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{HTTP_USER_AGENT} (Googlebot)<br />
RewriteRule ^ http://abc.com/ [R=301,L]</p></blockquote>
<p>1.打开Rewrite功能。</p>
<p>2.RewriteBase指令，设置目录级重写的基准URL。可以理解成把该目录（这个.htaccess所在目录）假定为基准的URL前缀。本例中这样的写法无用。</p>
<p>3.RewriteCond指令。匹配所有USER_AGENT为Googlebot的发送请求。</p>
<p>4.RewriteRule指令。本例中把这些请求都重定向到了abc.com。</p>
<p>在本例中，这个配置应该是黑客所为，把google蜘蛛指向某个网站，等于伪造PR。</p>
<p>三、临时错误页面</p>
<p>当你的网站在升级、修改的时候，你最好让访客转到指定的页面，而不是没做完的页面或者是错误页。这时我们做一个302转跳就OK啦。</p>
<blockquote><p>RewriteEngine on<br />
RewriteCond %{REQUEST_URI} !/maintenance.html$<br />
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123<br />
RewriteRule $ /error.html [R=302,L]</p></blockquote>
<p>1.继续打开Rewrite功能。 – -|</p>
<p>2.REQUEST_URI，请求的URL值。这里指所有访问 maintenance.html页面的请求。</p>
<p>3.REMOTE_ADDR，向服务器发送请求的IP地址。本例中此处应设为你自己的 IP，这样就只有你能访问。</p>
<p>4.RewriteRule指令。本例中把这些请求都重定向到了error.html 。</p>
<p>在本例，我们总结几个常用的正则表达式和特殊符号。</p>
<p>(.*) 用于匹配某一区域内所有内容。如 abc/def/ghi 可用 (.*)\/(.*)\/(.*) 匹配。</p>
<p>([a-zA-Z_]+) 匹配英文单词，允许用-和_连接。</p>
<p>([0-9]+) 匹配多位数字，通常用于匹配ID。</p>
<p>([0-9]) 只匹配一位的数字。</p>
<p>^ 表示正则的开始</p>
<p>$ 表示正则的结束</p>
<p>四、重定向WordPress的RSS Feed链接地址到Feedburner地址</p>
<p>除了可以更改模板里的RSS地址外，.htaccess也能实现RSS地址的更改，并更加方便。</p>
<blockquote><p>RewriteEngine on<br />
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]<br />
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]<br />
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/yourname [R=302,NC,L]</p></blockquote>
<p>有了上面的总结，本例其实就很简单了吧。</p>
<p>唯一要注意的是这样操作要确保填写正确的HTTP_USER_AGENT。其实你不常换模板的话。。可能还是直接改模板更省事。</p>
<p>在最后，为懒虫们推荐几个好东东：</p>
<p>在线.htaccess生成器：htaccessEditor</p>
<p>在线正则表达式检查器：http://www.sman.cn/Blog/attachments/month_0711/320071117123354.html</p>
<p>mod_rewrite模块中文参考手册：http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html</p>
<p>其实rewrite也只是APACHE一个模块而已，做到边查边写足矣，实在不行直接去搜一个规则也未尝不可。不过其中的正则表达式还是非常实用的，值得深入学习。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1463</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>编程艺术——著名编程语录</title>
		<link>http://blog.yourtion.com/?p=1470</link>
		<comments>http://blog.yourtion.com/?p=1470#comments</comments>
		<pubDate>Mon, 16 Aug 2010 22:58:21 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[语录]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1470</guid>
		<description><![CDATA[编程也是一项艺术，他是人与机的一种交流和沟通。随着计算机的发展，越来越多的语言和编程呈现在我们眼前。就像一座博物馆，汇聚了众多艺术家的作品，让我们在编程和技术的天堂洗涤灵魂……]]></description>
			<content:encoded><![CDATA[<p>编程也是一项艺术，他是人与机的一种交流和沟通。随着计算机的发展，越来越多的语言和编程呈现在我们眼前。就像一座博物馆，汇聚了众多艺术家的作品，让我们在编程和技术的天堂洗涤灵魂……</p>
<p>一个好的程序员应该是那种过单行线都要往两边看的人。———— Doug pnder, 系统管理员</p>
<p>任何一个工具，它的一个最重要的、同时也是最难以做到的方面就是对那些学习使用这个工具的人在使用习惯上的影响。如果这个工具是一种编程语言，那么，这种影响——不管我们是否喜欢——将是一种思考习惯上的影响。———— Edsger Dijkstra, 计算机科学家</p>
<p>抽象化是一种非常的不同于模糊化的东西 … 抽象的目的并不是为了模糊，而是为了创造出一种能让我们做到百分百精确的新语义。———— Edsger Dijkstra</p>
<p>除数学外，对本土语言的异常的精通会是一个计算机程序员的最宝贵的财富。———— Edsger Dijkstra</p>
<p>C语言很容易让你犯错误；C++看起来好一些，但当你用它时，你会发现会死的更惨。———— Bjarne Stroustrup,C++语言的创始人</p>
<p>解决问题大多数都很容易；找到问题出在哪里却很难。———— 无名</p>
<p>看看目前我们的计算机编程上的这种糟糕的状态，软件开发很显然仍然处于一种黑色艺术状态，仍然毫无工程规范可言。———— 比尔克林顿，美国前总统</p>
<p>长久以来一个问题一直困扰着我，为什么有些东西如此昂贵，如此的高科技，却毫无用处，就像我知道的，计算机虽然是台笨机器，却有能力做出难以置信的智能事情，而程序员虽然是一些聪明的人，但却老是做难以置信的傻事情。他们呀，简言之，是对绝配。———— Bill Bryson, 作家, 出自《Notes from a Big Country》</p>
<p>给与足够的眼球，所有的Bugs都很容易发现（例如，大量的beta测试，结对开发，所有的问题都能很快的发现和修复）———— Eric S. Raymond, 程序员，开源软件的倡导者出自《The Cathedral and the Bazaar》</p>
<p>高质量的代码就是对程序自己最好的注释。当你打算要添加注释时，问问自己，“我如何能改进编码以至于根本不需要添加注释？”改进你的代码，然后才是用注释使它更清楚。———— Steve McConnell, 软件工程师，作家, 出自 《Code Complete》</p>
<p>嘿，编译通过了!装包吧！———— 无名</p>
<p>任何优秀的大软件里面都是一个优秀的小程序。———— Charles Antony Richard Hoare, 计算机科学家</p>
<p>我们应该注意到，没有一个受过伦理教育的软件工程师会同意开发出“摧毁巴格达”的程序。然而基本的职业道德却可以要求他们开发出“摧毁城市”的程序，巴格达只是这个程序的一个参数。———— Nathaniel S.Borenstein, 计算机科学家</p>
<p>管理程序员就像是在放养一群猫。———— 无名</p>
<p>用代码行数来评估程序的开发进度，就好比是拿重量来评估一个飞机的建造进度。———— 比尔盖茨，前微软总裁</p>
<p>在一种编程语言中，即使有再多的好程序被诋毁指责，也要比被说成完美无缺好好的多。———— Bjarne Stroustrup, 出自 《The Design and Evolution of C++》</p>
<p>程序应该是写给其他人读的，让机器来运行它只是一个附带功能。———— Harold Abelson and Gerald Jay Sussman,计算机科学家和作者,出自《The Structure and Interpretation of Computer Programs》</p>
<p>真正的程序员从来不注释他们的代码。如果你做不到这样，也就说明你不能使你的程序易于理解。———— 无名</p>
<p>简单是稳定的前提。———— Edsger Dijkstra</p>
<p>C语言 — 这是一种既有汇编语言强大的功能，又有汇编语言的灵活性的编程语言。———— 无名</p>
<p>最初90%的开发工作将会用去你最初90%的开发时间。剩下的10%的开发量将会用去你另外一个90%的开发时间。———— Tom Cargill, 贝尔实验室的面向对象编程专家</p>
<p>对于增加一个功能点所付出的代价，你要明白的很重要的一点就是，它不仅仅指开发这个功能所消耗的时间。它同时还包括带来的额外的给以后扩展造成的困难。不错，任何的功能特性都是能实现的——只要有足够的时间。除了这些将来会出现的问题外，你最终还会使你的程序变得脆弱，最终连一个绝对简单的功能都越来越难以和现有的混乱的web结合起来。应对此问题的办法是你应只接受那些不会导致冲突的功能。———— John Carmack, 计算机游戏开发</p>
<p>性能的关键是精简，而不是一堆的优化用例。除非有真正显著的效果，否则一定要忍住你那些蠢蠢欲动的小微调的企图。———— Jon Bently 和 M. Douglas McIlroy, 同为贝尔实验室的科学家</p>
<p>用C写的最后的一个好东西就是舒伯特的第九交响乐。———— Erwin Dieterich, 程序员</p>
<p>使用C++的问题就在于 … 这种语言有一种很大的脾气，在你想做任何事情之前你必须把所有的知识都掌握才行。———— Larry Wall, Perl语言的开发者</p>
<p>开发的越早，程序花费你的时间越长。———— Roy Carlson, 威斯康星州大学</p>
<p>原型的价值就在于它对你的教育，而不是代码本身。———— Alan Cooper, 软件作者, 出自《The Inmates are Running the Asylum》</p>
<p>世上只有两种编程语言：一种是总是被人骂的，一种是从来没人用的。———— Bjarne Stroustrup</p>
<p>世上有两种设计软件的方法。一种是尽量的简化，以至于明显没有任何缺陷。而另一种是尽量复杂化，以至于找不到明显的缺陷。———— Charles Antony Richard Hoare</p>
<p>丑陋的程序和丑陋的吊桥一样：他们都容易坍塌，因为人类（尤其是工程师们）的审美定义跟人们对复杂事物的处理和理解密切相关。一种编程语言如果不能使你写出优美的代码，那它也就不能使你写出好的程序。———— Eric S.Raymond</p>
<p>数周的编程能省掉你几个小时的计划时间。———— 无名</p>
<p>当一种能够让程序员通过简单的英语来编程的编程语言诞生后，你会发现程序员们都不会说英语。———— 无名</p>
<p>[英文出处]：Best Programming Quotations</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1470</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>神奇的CSS3哆啦A梦</title>
		<link>http://blog.yourtion.com/?p=1448</link>
		<comments>http://blog.yourtion.com/?p=1448#comments</comments>
		<pubDate>Mon, 16 Aug 2010 06:12:07 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[CSS+DIV]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1448</guid>
		<description><![CDATA[今天突然想起之前提起CSS3的哆啦A梦～然后就跑去网上找了一下。纯CSS制作的哆啦A梦在不同浏览器下面的表现确实各有千秋···]]></description>
			<content:encoded><![CDATA[<p>今天突然想起之前提起CSS3的哆啦A梦～然后就跑去网上找了一下。</p>
<p>纯CSS制作的哆啦A梦在不同浏览器下面的表现确实各有千秋···</p>
<p>归根结底的说，不能说IE多垃圾，要说css的滤镜，其他浏览器怎么不支持的话，公说公有理婆说婆有理，存在即合理吧。关键是找到自己喜欢的浏览器就OK了。</p>
<p>好在现在兄弟伙们对IE和其他浏览器的兼容习以为常了，蛋定咯···</p>
<p>可以看演示（用自己的浏览器试试吧）：<a href="http://yourtion.com/demo/doraemon_css3.htm" target="_blank">http://yourtion.com/demo/doraemon_css3.htm</a></p>
<p>或者下载源文件：<a href="http://www.dbank.com/download.action?t=40&amp;k=NDg2ODUwMjE=&amp;pcode=LCwxMjAzODksMTIwMzg5&amp;rnd=4" target="blank">css3写的哆啦A梦.rar</a></p>
<p>按照介绍，它对webkit内核的浏览器支持最佳，比如gg浏览器，火狐浏览器，至于IE下面嘛，惨不忍睹，看图：</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1450" title="01" src="http://blog.yourtion.com/wp-content/uploads/2010/08/01.png" alt="" width="600" height="232" /></p>
<p>看上面这张图，在chrome5.0和firefox3.6下很不错，有阴影有立体感，而且眼睛还能动。opera10没有了阴影，至于IE8，都成变形金刚了。  测试结果如下：</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1451" title="Firefox" src="http://blog.yourtion.com/wp-content/uploads/2010/08/Firefox-.png" alt="" width="120" height="150" /></p>
<p>效果在其次的是Firefox (3.6)，效果和Safari的一样，但眼睛不能动。</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1452" title="Opera10.5" src="http://blog.yourtion.com/wp-content/uploads/2010/08/Opera10.5.png" alt="" width="121" height="150" /></p>
<p>在Opera (10.53) 里，看不到渐变色。  <img class="aligncenter size-full wp-image-1453" title="Safari" src="http://blog.yourtion.com/wp-content/uploads/2010/08/Safari.png" alt="" width="129" height="150" /> iPhone OS 3.1的Safari里，它的脸是方的 -_-！！！  <img class="aligncenter size-full wp-image-1454" title="IE9" src="http://blog.yourtion.com/wp-content/uploads/2010/08/IE9.png" alt="" width="123" height="150" /> 在IE9测试版里，阿蒙的胳膊是方的…强劲的肌肉么？  <img class="aligncenter size-full wp-image-1455" title="IE8" src="http://blog.yourtion.com/wp-content/uploads/2010/08/IE8.png" alt="" width="124" height="150" /> 在IE8里，阿蒙是…方的，很有喜感  <img class="aligncenter size-full wp-image-1456" title="IE7" src="http://blog.yourtion.com/wp-content/uploads/2010/08/IE7.png" alt="" width="127" height="150" /> 在IE7里，雷死人啊，大花猫啊。  <img class="aligncenter size-full wp-image-1457" title="IE6" src="http://blog.yourtion.com/wp-content/uploads/2010/08/IE6.png" alt="" width="113" height="150" /> 在IE6里…小叮当害羞了╮(╯▽╰)╭。  <img class="aligncenter size-full wp-image-1449" title="dora" src="http://blog.yourtion.com/wp-content/uploads/2010/08/dora.jpg" alt="" width="416" height="505" /> 这才是人家的真面目。</p>
<p>来自：http://soamz.com/devsign/duolaameng-xiaodingdang-css.html</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1448</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>悼念——网站变黑白的方法（包括Flash）</title>
		<link>http://blog.yourtion.com/?p=1444</link>
		<comments>http://blog.yourtion.com/?p=1444#comments</comments>
		<pubDate>Sun, 15 Aug 2010 03:54:16 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[CSS+DIV]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1444</guid>
		<description><![CDATA[14日国务院发布公告：为表达全国各族人民对甘肃舟曲特大山洪泥石流遇难同胞的深切哀悼，国务院决定，2010年8月15日举行全国哀悼活动，全国和驻外使领馆下半旗志哀，停止公共娱乐活动。响应号召，我把博客跟微博还有团队博客微博都变成灰白，悼念遇难同胞。]]></description>
			<content:encoded><![CDATA[<p>为表达全国各族人民对甘肃舟曲特大山洪泥石流遇难同胞的深切哀悼，国务院决定，8月15日全国下半旗志哀，停止公共娱乐活动。</p>
<p>舟曲泥石流已致1239人遇难，505人失踪。</p>
<p>14日国务院发布公告：为表达全国各族人民对甘肃舟曲特大山洪泥石流遇难同胞的深切哀悼，国务院决定，2010年8月15日举行全国哀悼活动，全国和驻外使领馆下半旗志哀，停止公共娱乐活动。</p>
<p><strong>响应号召，我把博客跟微博还有团队博客微博都变成灰白，悼念遇难同胞。</strong></p>
<p>方法如下：</p>
<p>如果你的网站能够支持支持CSS，是符合W3标准的网页，那就在CSS文件的最前面加上一行代码就可以了，这段代码使用的是CSS滤镜，将网页中的色彩部分给滤掉了。</p>
<p><strong>CSS滤镜过滤色彩代码</strong>：</p>
<blockquote><p>html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</p></blockquote>
<p>第二种方法:只支持IE</p>
<blockquote><p>*{filter:Gray;}</p></blockquote>
<p>上面的代码可以使除了FLASH之外的网页所有元素变灰,如果网页中含有FLASH,可以使用下面的方法使FLASH变灰:</p>
<p>第一种方法:如果是用下面的方式调用FLASH,则在代码中加入</p>
<blockquote><p>wmode=&#8221;opaque&#8221;</p></blockquote>
<p>第二种方法:如果是用下面的方式调用FLASH,则在代码中加入</p>
<blockquote><p>&lt;param name=&#8221;wmode&#8221; value=&#8221;opaque&#8221;&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1444</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>资深系统管理员给Linux/Unix新人们的建议</title>
		<link>http://blog.yourtion.com/?p=1442</link>
		<comments>http://blog.yourtion.com/?p=1442#comments</comments>
		<pubDate>Sat, 14 Aug 2010 05:39:03 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[网络工程]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1442</guid>
		<description><![CDATA[抚琴煮酒是一位现在在外企工作的linux/unix系统工程师、项目实施工程师，也曾经担任过RHCE的教学工作。根据多年的经验积累，抚琴煮酒发现很多新人对于如何入门和规划自己的Linux学习之路都处在一种迷茫的状态，因此撰写此文，帮助入门者走出学习的误区。 ]]></description>
			<content:encoded><![CDATA[<p>来自：http://os.51cto.com/art/201008/218615.htm</p>
<p>【51CTO独家特稿】作者前言：本人从事windows、linux/unix系统工程师多年了，也做过相当长时间的项目实施工程师，维护和架构过大型广告网站、商业网站及证券类网站，感觉对linux/unix算是比较熟悉了，所以就这个职业的规则算是有点心得了吧。</p>
<p>另外，抚琴煮酒有幸担任过一段时间的RHCE教学工作，发现在教学过程中，许多学员都对为什么学习Linux感到很迷惘，更别谈什么职业规划了。我在工作和学习中，也接触了不少爱学习的人，但发现他们在学习的过程中都走进了误区，白白浪费了不少精力；我写此文的目的，就是说明一下linux/unix的从业现状，帮助同学们走出学习的误区，希望能起到抛砖引玉的作用。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>根据同事多年跟踪的学员情况，我们发现，学员在同等条件学习Linux后，选择开发要比系统应用薪水要上升的更为迅速，而且更容易突破5000、8000或10000等每月的门槛；但是这个方向难度会更大，同时会更枯燥些，需要毅力和身体，更需要兴趣。如何入门及如何规划自己的Linux学习之路一直是困扰Linux爱好者的一大难题，实际上，Linux的入门与学习并不难，只是由于长期使用其他操作系统的习惯与没有正确的引导指向，所以一个本身不是难题的问题变成了难题。</p>
<p>我这里想提一个问题给同学们：企业为什么要用linux，为什么要用unix？许多同学会说Linux/unix更好，更稳定，其实不然。企业为什么要用它们，其实是本着节约成本和创造价值的目的。服务器操作系统的软件投入和服务投入是相当大的经费，这也是现在为什么开源免费的CentOS和FreeBSD越来越受欢迎的原因之一。再说下硬件的负载均衡器，我说下大家最为熟悉的F5，性能一般的17万；性能越好，价格也水涨船高。但其实许多企业所需要的Linux集群环境其实并发不是大太，完全可以用开源免费的软件来代替，例如LVS、Nginx，而这些软件一般都是部署在Linux上，这也是近年来Linux越来越受欢迎的原因之一。</p>
<p>另外，千万不能仅仅学习Linux系统本身。Linux仅仅是操作系统，重要的是其上的应用，就是能为你能创造多少价值。学习Linux的一个误区在于精力只是局限于Linux本身，从Linux的操作到Linux的内核，也不管自己到底要干嘛；但是系统毕竟是拿来用的，学习使用Linux的目的是创造效益，如果不是仅仅制作Linux系统，不是加入Red Hat这样的专业Linux发布版厂商，那么你在学习了Linux基础后就跟掌握了Windows没两样，很显然这是不够的，你还需要更进一步的学习：选择Linux上的应用，或者Linux上的软件开发，当然还有数据库方向。下面我就这三方面详细说明下：</p>
<p>a)Linux的系统、网络、服务、集群、网站、网络应用方向：</p>
<p>1、Web应用服务器，如sina、百度等大型网站</p>
<p>2、Mail应用服务器，如163或外企mail系统等</p>
<p>3、中间件或J2EE服务器，如为JBOSS Weblogic做平台</p>
<p>4、网络应用等。</p>
<p>b)嵌入式开发、UNIX/Linux应用系统开发，Linux内核驱动开发方向，主要有以下几类：</p>
<p>1、Linux下的C/C++ 系统程序开发</p>
<p>2、Linux平台Java体系开发和PHP开发</p>
<p>3、Linux下的图形界面开发</p>
<p>4、Linux底层内核/驱动开发</p>
<p>5、嵌入式Linux开发等。</p>
<p>c)Linux下的数据库，如Mysql、oracle和windows下的SQL Server及DB2等。</p>
<p>数据库的重要性我就不重复了，而DBA的作用称得上举足轻重了：在技术类岗位的薪资待遇上，总监之下就是DBA了。51CTO也有专门的数据库频道，编辑在这里推荐一下。</p>
<p>以上是Linux/unix发展的三个方向，大家可以在平时工作和学习中有所偏重，三个专业精通一个即可。注意我这里说的是精通，而非仅仅熟悉的程度。</p>
<p>如果按照地域划分，Linux/unix系统运维方面的工作适合在北京、上海、深圳和广州，开发比较适合在杭州和南京等地区。说来惭愧，我生活的武汉，Linux/unix应用比较少，其系统运维方面的工作还真是不好找，我2009年回武汉发展时，好不容易托猎头朋友在外企找了个system admin的职位；而且北京、上海那边许多成熟的开源技术，如LVS、CDN，在武汉这边基本是看不到的，甚是遗憾。</p>
<p>我这里想说的是：如果是初学Linux/unix的同学，建议可以以RHEL/CentOS为主，在找工作中尽量不要想到待遇问题，在工作实践中，尽量熟悉shell和一些基础的网络应用，内网开发服务器的配置环境一定要熟悉；如果有机会出外做项目的，一定要兢兢业业，因为这个是成长得最快最好的时候。另外，无论是学习还是施工期间，有关环境配置一定要形成文档，尽量写得详细和完善，这样无论是对自身技术提高还是跟同事进行工作交接都是非常有帮助的；如果没有对外项目的机会，可以写技术型博客，详细记录自己的学习过程。有兴趣的可参考田逸兄的博客，建议学习。如果想进一步提高自己的水平，建议多上一些跟linux/unix有关的论坛，跟一些同行或技术大牛交流，这样提高起来也非常快。</p>
<p>如果是资深的linux/unix的系统管理员，建议可以脱离系统级别，向网络架构师的发向发展。网络架构是件艺术活，有时系统性能就是看网站架构师的能力了。通常情况下，此职位由公司的技术总监担任，它要求技术总监对系统、程序、网络及数据库都有相当的了解，这个也是抚琴煮酒目前努力的方向。唠唠叨叨半天了，希望我这篇文章对广大的Linux新人及系统管理员有所帮助，最后祝大家工作愉快！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1442</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>恢复Cisco路由器密码的两种常用方法</title>
		<link>http://blog.yourtion.com/?p=1439</link>
		<comments>http://blog.yourtion.com/?p=1439#comments</comments>
		<pubDate>Fri, 13 Aug 2010 12:46:04 +0000</pubDate>
		<dc:creator>Yourtion</dc:creator>
				<category><![CDATA[网络工程]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[路由]]></category>

		<guid isPermaLink="false">http://blog.yourtion.com/?p=1439</guid>
		<description><![CDATA[本文给大家详细的介绍了对于思科路由器如何进行密码的恢复，并且本文给出了两种方法的介绍，相信看过此文之后会对密码问题有所了解、]]></description>
			<content:encoded><![CDATA[<p>来自：http://network.51cto.com/art/201008/219071.htm</p>
<p>在Cisco路由器忘记或丢失enable密码的情况时，一共有两种方法恢复，取决于你使用的路由器是哪一系列产品。本文主要给大家介绍了这两种方法。</p>
<p>第一种方法</p>
<p>使用这种方法可恢复下列路由器：Cisco 2000系列、2500系列、3000系列、使用680&#215;0 Motorola CPU的Cisco 4000系列、运行10.0版本以上Cisco IOS系统的7000系列路由器。</p>
<p>实现步骤：</p>
<p>1.在路由器的console口接上一个终端或用安装仿真终端软件的PC机。</p>
<p>2.输入show version命令，然后记下寄存器值，通常是0&#215;2102 or 0&#215;102。这个值显示在最后一行，注意寄存器的配置是否把Break设为enable或disable。 缺省配置寄存器值是0&#215;2102。这个值从左数第三个数字如果是1，则是disable Break；如果为零，则Break为enabled。</p>
<p>3.切断电源后再重启。</p>
<p>4.在路由器启动的60秒内在终端机上按Break键。将显示rommon&gt; 提示符。如果提示符不是这样，则终端没有发出正确的中断信号，检查Break键是否正确或是否被设为disable。</p>
<p>5.在提示符下输入o/r0x42或o/r0x41，o/r0x42意思是从Flash memory引导，o/r0x41意思是从ROMs引导(注意，第一个字符是字母o，不是数字0)。最好用0&#215;42，在Flash memory没有装或erase的情况下，才用0&#215;41，如果有0&#215;41则只能view或erase配置，不能直接更改密码。</p>
<p>6.在rommon&gt;提示符下输入初始化命令。</p>
<p>7.输入系统配置对话提示符敲no,一直等提示信息显示：Press RETURN to get started!</p>
<p>8.敲回车，出现Router&gt;提示符。</p>
<p>9.输入enable命令，出现Router#提示符。</p>
<p>10.选择下面选项中的一项：</p>
<p>如果password没有加密，直接用more nvram:startup-config命令可以看密码；在password加密的情况下，无法看，只能修改，输入命令如下：</p>
<p>Router # configure memory<br />
Router # configure terminal<br />
Router(config)# enable secret 1234abcd<br />
Router(config)# ctrl-z<br />
Router # write memory</p>
<p>11.在EXEC提示符输入configure terminal进入配置模式。输入config-register命令，把在第二步中记录的寄存器值复原。</p>
<p>12.敲Ctrl-Z，退出配置状态。</p>
<p>13.在特权模式下用write memory命令保存配置，然后reboot重启。</p>
<p>第二种方法</p>
<p>使用这种方法可恢复下列路由器：Cisco 1003、1600系列、3600系列、4500系列、7200系列、7500系列和IDT Orion-Based路由器。</p>
<p>实现步骤：</p>
<p>前四步与上一种方法一样。</p>
<p>5.在rommon&gt;提示符下输入confreg命令，显示如下：</p>
<p>Do you wish to change configuration[y/n]?<br />
输入yes，然后回车。在回答后面的问题时一直选择no，直到出现“ignore system config info[y/n]?”时输入yes。接着继续敲no回答，一直到看到“change boot characteristics[y/n]?”时输入yes。显示如下：</p>
<p>enter to boot:</p>
<p>在这个提示符下可以有2和1两种选择。如果Flash memory is erased选择1，这样只能view or erase配置，不能直接修改password。最好选择2。出现如下提示：<br />
Do you wish to change configuration[y/n]?<br />
回答no，然后回车，显示“rommon&gt;”。</p>
<p>6.在特权EXEC下输入reload命令。</p>
<p>后面操作同第一种方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yourtion.com/?feed=rss2&amp;p=1439</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
