<?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>若有所思&#38;&#38;若有所想</title>
	<atom:link href="http://www.liangsuilong.info/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.liangsuilong.info</link>
	<description>My Heart Will Go On ^_^ ＆＆ ♀＋♂＝★☆</description>
	<lastBuildDate>Thu, 09 Sep 2010 08:34:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>洛阳印象：体验铁路</title>
		<link>http://www.liangsuilong.info/?p=902</link>
		<comments>http://www.liangsuilong.info/?p=902#comments</comments>
		<pubDate>Thu, 09 Sep 2010 08:34:39 +0000</pubDate>
		<dc:creator>liangsuilong</dc:creator>
				<category><![CDATA[心情日记]]></category>
		<category><![CDATA[洛阳]]></category>
		<category><![CDATA[铁路]]></category>

		<guid isPermaLink="false">http://www.liangsuilong.info/?p=902</guid>
		<description><![CDATA[暑假我跟学校去了洛阳实习。洛阳离广州很远，坐长途客车贵而且不舒适，飞机更是大部分同学承担不起，只有火车适合。虽然说坐了无数次地铁，但是长途火车不是地铁的那么一回事。 出发的当日，我们已经很晚才进入广州火车站，来到站台的时候大部分旅客已经上车了。我们很艰难地才在车厢内找到位置。而且普通列车的硬座车厢是销售大量站票，让原本的车厢更加拥挤。我们好不容易才放好了行李，找好了位置坐好，可是空调还没有开。原来空调硬座在车站内是不开空调的。而且我坐的位置就第一排，刚好又是卫生间和热水口的结合位，人特别多。坐好以后，我就不敢乱动了，一来我是第一次坐长途火车，怕行李丢了，二来人真的很多，找个位置活动活动真是奢望。 列车是走京广线到达郑州后再转走陇海线到达洛阳。因为是下午开车，到达武昌的时候已经是深夜了。想看看雄伟的武汉长江大桥，都已经是深夜了。天黑得连大桥的轮廓都看不清楚，还怎么欣赏呢。话说回来，京广线沿线的风光还是很不错的，在湖南和河南境内都是绿油油的一大片，路过湖北的时候是深夜，说起来应该也差不多。只是旅途的劳累让我们无暇赏析。 到达洛阳已经那个是翌日午时，到达驻地以后大伙都怕上床睡觉。原本在列车上讨论的计划静悄悄消失了。他们打算是在周六日不用实习的时间坐火车去西安玩，当听到洛阳坐火车到西安还需要额外的6个小时后，他们马上打退堂鼓了。首先是要花更多的钱，而且再也受不了硬座的煎熬。其实，愿意花钱的话可以坐高铁去的。郑西高铁正好经过洛阳，洛阳到西安的高铁车票是184，一个半小时到达。而到郑州的高铁车票是61，半个小时到达。而我们到洛阳的车票是210，正点的话是20个小时，而且我们坐的那班车是晚点了一个小时的。 其实我也想试试坐高铁，体验一下和谐号的高速度和舒适性。去西安的车票实在太贵了，而且短短的两天根本就不够时间浏览西安全部的景点。而郑州我实在想不到在市区内有什么好景点。我就知道郑州是铁路枢纽，南北方向和东西方向最繁忙的两条铁路干线交汇于此。难道我去看郑州的火车站？路过郑州的时候，郑州站的确大得很宏伟。 虽然没有体验到和谐号，但是在陇海线和京广线都十分容易看见和谐号。只不过不是CRH的和谐号，而是HXD的和谐号电力机车。CRH是用来跑客运专线的，而HXD主要是用来货运的，纵使有牛逼无比的动力，因为齿轮比和转向架的限制，HXD也无法跑出高速度。我们来回洛阳的机车都是更加古老的韶山八型。 回程的时候，我买了硬卧车票。硬卧比硬座舒服太多了。人少了，而且车厢位置的限制也更加严格，相对而言，硬卧比硬座安全很多。到了晚上，还可以安枕一觉，十分舒服。虽然要额外多花170。我觉得还是值得的。回程的时候我们没有经过郑州，而是走了南阳和襄樊一带的线路，最终到达武昌的时候才重走京广线。时间用多了两个小时，但是没有晚点，准时回到广州。 经过了两次火车之旅，我对国内的铁路系统还是有点体悟的。铁路的运转速度实在是太慢了，虽然说是标称速度有120，特快的甚至是140和160，但是在实际的铁道上是无法跑到这么快的，旅行速度最多也就60~80之间左右。旅客在旅途上花费的时间实在太多了，即使坐的是高级包厢，有了好的环境，坐火车也是十分郁闷的事情。而且大量的客流占用了铁路的资源，到了春运的时候更加影响了货运的正常运作。因此火车需要提速，同时也把运力提高上去。 在既有线的提速始终是有限制的，而且大量的慢车在行驶影响了高速列车的运行，况且既有线存在大量的弯道，对列车提速是一个障碍。因此必须要建设新铁路让高速列车行驶。就像武广高铁一样。当全国的高铁网络建立以后，我们就可以通过高速铁路到达国内各大城市，环保，快捷而且低碳。 虽然说我是比较支持建设高铁，但是建造过程中很多问题我都不敢沟通。比如说是速度标准，应该是350还是250呢？票价应该如何制定呢？应该采用哪个国家的技术呢？目前而言，对普通老百姓还是偏高偏贵。本来人家铁道部建设高铁是跟航空竞争的，都没有想到是替代旧有客运列车。不过为了腾出运力给货运列车，不少普通客运列车都停运了，低层百姓苦不堪言啊。因为普通客运的车票依然很难买。对比航空，在成本无法大幅下降的前提下，飞机票是跌不下来了，而且石油资源日益紧张。关键是每次坐飞机，除了机票以外，旅客还要支付机场建设费、燃油附加费还有保险。另外预先两三个小时到达机场登机也是常见的事情。若是开行北京到广州的夕发朝至卧铺动车组，票价和机票相约，相信不少习惯坐头等舱来回广州和北京的人愿意一试。就像晚上入住一晚酒店，早上起床就到达北京，马上可以开展行程了。 早两天还在和别人高铁走行邮和行包快递呢，网购有这个需求嘛！OMG！我彻头彻尾地变成铁路迷了！]]></description>
			<content:encoded><![CDATA[<p>暑假我跟学校去了洛阳实习。洛阳离广州很远，坐长途客车贵而且不舒适，飞机更是大部分同学承担不起，只有火车适合。虽然说坐了无数次地铁，但是长途火车不是地铁的那么一回事。</p>
<p>出发的当日，我们已经很晚才进入广州火车站，来到站台的时候大部分旅客已经上车了。我们很艰难地才在车厢内找到位置。而且普通列车的硬座车厢是销售大量站票，让原本的车厢更加拥挤。我们好不容易才放好了行李，找好了位置坐好，可是空调还没有开。原来空调硬座在车站内是不开空调的。而且我坐的位置就第一排，刚好又是卫生间和热水口的结合位，人特别多。坐好以后，我就不敢乱动了，一来我是第一次坐长途火车，怕行李丢了，二来人真的很多，找个位置活动活动真是奢望。</p>
<p>列车是走京广线到达郑州后再转走陇海线到达洛阳。因为是下午开车，到达武昌的时候已经是深夜了。想看看雄伟的武汉长江大桥，都已经是深夜了。天黑得连大桥的轮廓都看不清楚，还怎么欣赏呢。话说回来，京广线沿线的风光还是很不错的，在湖南和河南境内都是绿油油的一大片，路过湖北的时候是深夜，说起来应该也差不多。只是旅途的劳累让我们无暇赏析。</p>
<p>到达洛阳已经那个是翌日午时，到达驻地以后大伙都怕上床睡觉。原本在列车上讨论的计划静悄悄消失了。他们打算是在周六日不用实习的时间坐火车去西安玩，当听到洛阳坐火车到西安还需要额外的6个小时后，他们马上打退堂鼓了。首先是要花更多的钱，而且再也受不了硬座的煎熬。其实，愿意花钱的话可以坐高铁去的。郑西高铁正好经过洛阳，洛阳到西安的高铁车票是184，一个半小时到达。而到郑州的高铁车票是61，半个小时到达。而我们到洛阳的车票是210，正点的话是20个小时，而且我们坐的那班车是晚点了一个小时的。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/mood/CRH2-065C.jpg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/mood/CRH2-065C.jpg" alt="" width="430" height="295" /></a></p>
<p>其实我也想试试坐高铁，体验一下和谐号的高速度和舒适性。去西安的车票实在太贵了，而且短短的两天根本就不够时间浏览西安全部的景点。而郑州我实在想不到在市区内有什么好景点。我就知道郑州是铁路枢纽，南北方向和东西方向最繁忙的两条铁路干线交汇于此。难道我去看郑州的火车站？路过郑州的时候，郑州站的确大得很宏伟。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/mood/hxd1-0009.jpg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/mood/hxd1-0009.jpg" alt="" width="432" height="288" /></a></p>
<p>虽然没有体验到和谐号，但是在陇海线和京广线都十分容易看见和谐号。只不过不是CRH的和谐号，而是HXD的和谐号电力机车。CRH是用来跑客运专线的，而HXD主要是用来货运的，纵使有牛逼无比的动力，因为齿轮比和转向架的限制，HXD也无法跑出高速度。我们来回洛阳的机车都是更加古老的韶山八型。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/mood/shaoshan8.jpg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/mood/shaoshan8.jpg" alt="" width="450" height="300" /></a></p>
<p>回程的时候，我买了硬卧车票。硬卧比硬座舒服太多了。人少了，而且车厢位置的限制也更加严格，相对而言，硬卧比硬座安全很多。到了晚上，还可以安枕一觉，十分舒服。虽然要额外多花170。我觉得还是值得的。回程的时候我们没有经过郑州，而是走了南阳和襄樊一带的线路，最终到达武昌的时候才重走京广线。时间用多了两个小时，但是没有晚点，准时回到广州。</p>
<p>经过了两次火车之旅，我对国内的铁路系统还是有点体悟的。铁路的运转速度实在是太慢了，虽然说是标称速度有120，特快的甚至是140和160，但是在实际的铁道上是无法跑到这么快的，旅行速度最多也就60~80之间左右。旅客在旅途上花费的时间实在太多了，即使坐的是高级包厢，有了好的环境，坐火车也是十分郁闷的事情。而且大量的客流占用了铁路的资源，到了春运的时候更加影响了货运的正常运作。因此火车需要提速，同时也把运力提高上去。</p>
<p>在既有线的提速始终是有限制的，而且大量的慢车在行驶影响了高速列车的运行，况且既有线存在大量的弯道，对列车提速是一个障碍。因此必须要建设新铁路让高速列车行驶。就像武广高铁一样。当全国的高铁网络建立以后，我们就可以通过高速铁路到达国内各大城市，环保，快捷而且低碳。</p>
<p>虽然说我是比较支持建设高铁，但是建造过程中很多问题我都不敢沟通。比如说是速度标准，应该是350还是250呢？票价应该如何制定呢？应该采用哪个国家的技术呢？目前而言，对普通老百姓还是偏高偏贵。本来人家铁道部建设高铁是跟航空竞争的，都没有想到是替代旧有客运列车。不过为了腾出运力给货运列车，不少普通客运列车都停运了，低层百姓苦不堪言啊。因为普通客运的车票依然很难买。对比航空，在成本无法大幅下降的前提下，飞机票是跌不下来了，而且石油资源日益紧张。关键是每次坐飞机，除了机票以外，旅客还要支付机场建设费、燃油附加费还有保险。另外预先两三个小时到达机场登机也是常见的事情。若是开行北京到广州的夕发朝至卧铺动车组，票价和机票相约，相信不少习惯坐头等舱来回广州和北京的人愿意一试。就像晚上入住一晚酒店，早上起床就到达北京，马上可以开展行程了。</p>
<p>早两天还在和别人高铁走行邮和行包快递呢，网购有这个需求嘛！OMG！我彻头彻尾地变成铁路迷了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liangsuilong.info/?feed=rss2&amp;p=902</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL手记：存储过程</title>
		<link>http://www.liangsuilong.info/?p=890</link>
		<comments>http://www.liangsuilong.info/?p=890#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:42:42 +0000</pubDate>
		<dc:creator>liangsuilong</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.liangsuilong.info/?p=890</guid>
		<description><![CDATA[在MySQL中，可以定义一段程序存放在数据库中，这样的程序成为存储过程。存储过程是数据库对象之一。存储过程实质上是一段代码，它可以由声明式的SQL语句和过程式SQL语句组成。存储过程可以由程序、触发器或者另一个存储过程来调用它从而激活它，实现代码段中的SQL语句。 使用存储过程的好处： 1. 存储过程在服务器端运行，执行速度快。 2. 存储过程执行一次后，其执行规划就驻留在高速缓冲存储器，在以后的操作中，只需从高速缓冲存储器中调用已编译好的二进制代码执行，提高了系统性能。 3. 确保数据库的安全，使用存储过程可以完成所有数据库操作，并可通过编程方式控制上述操作对数据库信息访问的权限。 创建存储过程，先来一个简单的： DELIMITER $$ CREATE PROCEDURE TEST(OUT NUMBER INTEGER) BEGIN DECLARE NUMBER2 INTERGER; SET NUMBER2=(SELECT COUNT(*)) FROM Employees); SET NUMBER1=NUMBER2; END$$ DELIMITER; 创建存储过程可以包含以下属性： LANAGUAGE SQL 编写存储过程使用的语言 DETERMINSTIC 存储过程对同样的输入参数产生相同的结果，默认是NOT DTERMINSTIC CONTAINS SQL&#124;NO SQL&#124;READS SQL &#8230; <a href="http://www.liangsuilong.info/?p=890">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>在MySQL中，可以定义一段程序存放在数据库中，这样的程序成为存储过程。存储过程是数据库对象之一。存储过程实质上是一段代码，它可以由声明式的SQL语句和过程式SQL语句组成。存储过程可以由程序、触发器或者另一个存储过程来调用它从而激活它，实现代码段中的SQL语句。</p>
<p>使用存储过程的好处：</p>
<p>1. 存储过程在服务器端运行，执行速度快。<br />
2. 存储过程执行一次后，其执行规划就驻留在高速缓冲存储器，在以后的操作中，只需从高速缓冲存储器中调用已编译好的二进制代码执行，提高了系统性能。<br />
3. 确保数据库的安全，使用存储过程可以完成所有数据库操作，并可通过编程方式控制上述操作对数据库信息访问的权限。</p>
<p>创建存储过程，先来一个简单的：</p>
<blockquote><p>DELIMITER $$<br />
CREATE PROCEDURE TEST(OUT NUMBER INTEGER)<br />
BEGIN<br />
DECLARE NUMBER2 INTERGER;<br />
SET NUMBER2=(SELECT COUNT(*)) FROM Employees);<br />
SET NUMBER1=NUMBER2;<br />
END$$<br />
DELIMITER;</p></blockquote>
<p>创建存储过程可以包含以下属性：</p>
<blockquote><p>LANAGUAGE SQL 编写存储过程使用的语言<br />
DETERMINSTIC 存储过程对同样的输入参数产生相同的结果，默认是NOT DTERMINSTIC<br />
CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA 设置存储过程是否读或写数据<br />
SQL SECURITY 设置存储过程是使用何种许可执行，有DFINER和INVOKER<br />
COMMENT 对存储过程进行描述</p></blockquote>
<p>DELIMITER $$是在创建存储过程之前使用的。在编写存储过程中，MySQL会认为分号就是程序结束的标志，所以需要DELIMITER命令修改结束符号。</p>
<p>在存储过程体中可以使用所有的SQL语句类型，包括所有的DLL、DCL和DML语句。过程式语句也是允许的，其中也包括变量的定义和赋值。</p>
<p>DECLARE是用于声明局部变量的，局部变量只能在BEGIN&#8230;END的语句块中使用</p>
<blockquote><p>DECLARE num INT(4);</p></blockquote>
<p>SET是用于变量的赋值：</p>
<blockquote><p>SET num=1, strl=&#8221;hello&#8221;;</p></blockquote>
<p>SELECT&#8230;INTO语句可以把选定的列值送入到变量中：</p>
<p>SELECT 姓名, 专业名 INTO name, project FROM XS WHERE 学号=&#8217;081101&#8242;;</p>
<p>在存储过程中，还可以使用流程控制语句。MySQL可以使用以下几个流程语句：</p>
<blockquote><p>1. IF&#8230;THEN..ELSE&#8230;END IF<br />
2. CASE&#8230;WHEN&#8230;END CASE<br />
3. WHILE&#8230;DO&#8230;END WHILE<br />
4. REPEAT&#8230;UNTIL&#8230;END REPEAT<br />
5. LOOP&#8230;END LOOP</p></blockquote>
<p>在存储过程中处理SQL语句可能导致一条错误消息而停止运行，用户可以使用DECLARE HANDLER让存储过程继续。</p>
<blockquote><p>DECLARE CONTINUE HANDLER FOR SQLSTATE &#8217;23000&#8242; SET @x2=1;<br />
SET @x=2;<br />
INSERT INTO XS VALUE(&#8217;081101&#8242;,&#8217;王民&#8217;,'计算机&#8217;,1,&#8217;1990-02-10&#8242;,50,NULL,NULL);<br />
SET @x=3</p></blockquote>
<p>为了提高可读性，可以使用DECLARE CONDITION语句简化：</p>
<blockquote><p>DECLARE NON_UNIQUE CONDITION FOR SQLSTATE &#8217;23000&#8242;;</p></blockquote>
<p>一条SELECT&#8230;INTO语句只能返回带有值的第一行，但是现实上需要返回多行数据，那就需要游标了。声明游标如下：</p>
<blockquote><p>DECLARE XS_CUR1 CURSOR FOR SELECT 学号, 专业, 总学分 FROM XS WHERE 专业名=&#8217;计算机&#8217;;</p></blockquote>
<p>打开游标：</p>
<blockquote><p>OPEN XS_CUR1;</p></blockquote>
<p>读取游标：</p>
<blockquote><p>FETCH NUMBER_XS INTO XH;</p></blockquote>
<p>关闭游标：</p>
<blockquote><p>CLOSE XS_CUR2;</p></blockquote>
<p>调用存储过程，存储过程名后面有一个括号是用于输入参数的，是否有参数需要根据用户设计的存储过程而定：</p>
<blockquote><p>CALL DO_QUERY();<br />
CALL DO_INSERT2(0,@str);</p></blockquote>
<p>删除存储过程</p>
<blockquote><p>DROP PROCEDURE XS_XC;</p></blockquote>
<p>修改存储过程，只能修改修改存储过程的某些属性。存储过程体的修改，则需要先把存储过程删除再新建一个存储过程。可以修改的存储过程属性和创建时的属性一样：</p>
<blockquote><p>ALTER PROCEDURE XS_XC COMMENT ‘string’;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.liangsuilong.info/?feed=rss2&amp;p=890</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写在KDE 4.5发布之后</title>
		<link>http://www.liangsuilong.info/?p=895</link>
		<comments>http://www.liangsuilong.info/?p=895#comments</comments>
		<pubDate>Fri, 13 Aug 2010 17:29:02 +0000</pubDate>
		<dc:creator>liangsuilong</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.liangsuilong.info/?p=895</guid>
		<description><![CDATA[Rawhide是Fedora永不冻结的分支，每天都在滚动更新，是一个比Debian Experimental还要激进的版本。我很早就把家里的Fedora更新到Rawhide，为的是体验下一代甚至是下下一代版本的Fedora新特性。 Fedora Rawhide已经指向了Fedora 15了，同时也跟着Fedora 14更新到KDE 4.5。KDE4.0以半成品的状态发布让很多KDE众感到失望。随着及后的版本更新修复，KDE逐渐被打造成一个完美的桌面环境。特别是在KDE 4.2以后，无论是稳定性还是速度，特别是外观，都成熟了。到了KDE 4.4和KDE 4.5，各方面都接近完美了，特别是Oxygen主题，已经和桌面面板融成一体了。KDE不愧为当今Linux最优秀的桌面环境。 Plasma面板是KDE 4.x的一个标志性部件，解决了桌面内容多而杂乱的问题，而且透明玻璃的效果也很时尚。更多的介绍还是看Jeonkwan的《Permalink to 重新认识 KDE4.x — 第二弹：用好KDE不需要疯狂折腾配置： Plasma 简介》。壁纸是Fedora 14的初稿，主题应该跟官方版本差不多。 略带遗憾的是，KWin的Desktop Effect在我的机器上无法启动，丧失了一点趣味。我真不知道这是Fedora打包的Bug，还是KDE自己的Bug，或是Mesa的Bug，总之就Enable Desktop Effect的选项是灰色不可选的。 至于KDE，我也是刚刚重新体验。KDE 4.0当时的糟糕体验对比起KDE 4.5的无与伦比，很难想象这是在同一个框架下打造出来的桌面环境。KDE 5？似乎还没有必要提吧，说不定KDE 4.9的下一个版本是4.10呢。 GNOME应该好好地借鉴KDE的开发经验。GNOME 3.0的不停跳票让人大失所望。GNOME推崇的渐进式进步减少了惊喜的成分。GNOME 3.0发布之初同样会经历KDE 4.0同样漫长而痛苦的修正过程。GNOME还是多努力一下啊！干爸爹！ 传统的桌面系统，无论是Windows，还是Mac，包括Linux的GNOME和KDE两个桌面环境，都会面临一个问题。本地应用逐渐转变到网络应用。操作系统的潮流从大而全，慢慢地转变成小而精，而且速度的要求也越来越高。如何解答这个难题？还请关注开发者绘画的未来吧！ PS：这是我去洛阳实习的最后一篇网志，因为缺少电脑，所以下一次更新只能留到两周后了。]]></description>
			<content:encoded><![CDATA[<p>Rawhide是Fedora永不冻结的分支，每天都在滚动更新，是一个比Debian Experimental还要激进的版本。我很早就把家里的Fedora更新到Rawhide，为的是体验下一代甚至是下下一代版本的Fedora新特性。</p>
<p>Fedora Rawhide已经指向了Fedora 15了，同时也跟着Fedora 14更新到KDE 4.5。KDE4.0以半成品的状态发布让很多KDE众感到失望。随着及后的版本更新修复，KDE逐渐被打造成一个完美的桌面环境。特别是在KDE 4.2以后，无论是稳定性还是速度，特别是外观，都成熟了。到了KDE 4.4和KDE 4.5，各方面都接近完美了，特别是Oxygen主题，已经和桌面面板融成一体了。KDE不愧为当今Linux最优秀的桌面环境。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/linux/kde-45-2.jpeg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/linux/kde-45-2.jpeg" alt="" width="461" height="368" /></a></p>
<p>Plasma面板是KDE 4.x的一个标志性部件，解决了桌面内容多而杂乱的问题，而且透明玻璃的效果也很时尚。更多的介绍还是看<a href="http://www.ibentu.org/author/jeonkwan">Jeonkwan</a>的《<a href="http://www.ibentu.org/2010/08/01/get-to-knwo-kde-2-plasma.html">Permalink to 重新认识 KDE4.x — 第二弹：用好KDE不需要疯狂折腾配置： Plasma 简介</a>》。壁纸是Fedora 14的初稿，主题应该跟官方版本差不多。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/linux/kde-45-1.jpeg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/linux/kde-45-1.jpeg" alt="" width="461" height="368" /></a></p>
<p>略带遗憾的是，KWin的Desktop Effect在我的机器上无法启动，丧失了一点趣味。我真不知道这是Fedora打包的Bug，还是KDE自己的Bug，或是Mesa的Bug，总之就Enable Desktop Effect的选项是灰色不可选的。</p>
<p style="text-align: center;"><a href="http://www.liangsuilong.info/photo/linux/kde-45-3.jpeg"><img class="aligncenter" src="http://www.liangsuilong.info/photo/linux/kde-45-3.jpeg" alt="" width="461" height="368" /></a></p>
<p>至于KDE，我也是刚刚重新体验。KDE 4.0当时的糟糕体验对比起KDE 4.5的无与伦比，很难想象这是在同一个框架下打造出来的桌面环境。KDE 5？似乎还没有必要提吧，说不定KDE 4.9的下一个版本是4.10呢。</p>
<p>GNOME应该好好地借鉴KDE的开发经验。GNOME 3.0的不停跳票让人大失所望。GNOME推崇的渐进式进步减少了惊喜的成分。GNOME 3.0发布之初同样会经历KDE 4.0同样漫长而痛苦的修正过程。GNOME还是多努力一下啊！干爸爹！</p>
<p>传统的桌面系统，无论是Windows，还是Mac，包括Linux的GNOME和KDE两个桌面环境，都会面临一个问题。本地应用逐渐转变到网络应用。操作系统的潮流从大而全，慢慢地转变成小而精，而且速度的要求也越来越高。如何解答这个难题？还请关注开发者绘画的未来吧！</p>
<p>PS：这是我去洛阳实习的最后一篇网志，因为缺少电脑，所以下一次更新只能留到两周后了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liangsuilong.info/?feed=rss2&amp;p=895</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>MySQL手记：存储函数、触发器和事件</title>
		<link>http://www.liangsuilong.info/?p=893</link>
		<comments>http://www.liangsuilong.info/?p=893#comments</comments>
		<pubDate>Mon, 09 Aug 2010 20:58:34 +0000</pubDate>
		<dc:creator>liangsuilong</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.liangsuilong.info/?p=893</guid>
		<description><![CDATA[存储函数和存储过程很类似，都是由SQL语句和过程式语句组成的代码片断，并且可以从应用程序和SQL中调用。两者之间的区别如下： 1. 存储函数不能拥有输出参数，因为存储参数本身就是输出参数。 2. 不能用CALL语句来调用存储函数。 3. 存储函数必须包含一条RETURN语句，而这条特殊的SQL语句不允许包含于存储过程中。 CREATE FUNCTION EMNUM() RETURNS INTEGER RETURN(SELECT COUNT(*) FROM Employees); 调用函数，还是使用SELECT语句： SELECT EM_NUM(); 另外一个例子： DELIMITER $$ CREATE FUNCTION DELETE_EM(EM_ID CHAR(6)) RETURNS BOOLEAN BEGIN DECLARE EM_NAME CHAR(10); SELECT Name INTO EM_NAME FROM Employees WHERE EmployeeIE=EM_IM; &#8230; <a href="http://www.liangsuilong.info/?p=893">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>存储函数和存储过程很类似，都是由SQL语句和过程式语句组成的代码片断，并且可以从应用程序和SQL中调用。两者之间的区别如下：</p>
<p>1. 存储函数不能拥有输出参数，因为存储参数本身就是输出参数。<br />
2. 不能用CALL语句来调用存储函数。<br />
3. 存储函数必须包含一条RETURN语句，而这条特殊的SQL语句不允许包含于存储过程中。</p>
<blockquote><p>CREATE FUNCTION EMNUM()<br />
RETURNS INTEGER<br />
RETURN(SELECT COUNT(*) FROM Employees);</p></blockquote>
<p>调用函数，还是使用SELECT语句：</p>
<blockquote><p>SELECT EM_NUM();</p></blockquote>
<p>另外一个例子：</p>
<blockquote><p>DELIMITER $$<br />
CREATE FUNCTION DELETE_EM(EM_ID CHAR(6))<br />
RETURNS BOOLEAN<br />
BEGIN<br />
DECLARE EM_NAME CHAR(10);<br />
SELECT Name INTO EM_NAME FROM Employees WHERE EmployeeIE=EM_IM;<br />
IF EM_NAME IS NULL THEN<br />
DELETE FROM Salary WHERE EmployeeiD=EM_ID;<br />
RETURN TRUE;<br />
ELSE<br />
RETURN FALSE;<br />
END IF;<br />
END$$<br />
DELEMITER;</p></blockquote>
<p>调用此函数：</p>
<blockquote><p>SELECT DELETE_EM(&#8217;00001&#8242;);</p></blockquote>
<p>删除存储函数：</p>
<blockquote><p>DROP FUNCTION DELETE_EM;</p></blockquote>
<p>修改存储函数和修改存储过程基本一样：</p>
<blockquote><p>ALTER FUNCTION DELETE_EM NO SQL;</p></blockquote>
<p>触发器是一个被指定关联到一个表中的数据对象，触发器是不需要调用的，当对一个表的特别时间出现时，它会被激活。</p>
<blockquote><p>CREATE TRIGGER DELETE_EM AFTER DELETE<br />
ON Employees FOR EACH ROW<br />
DELETE FORM Salary WHERE EmployeeID=OLD. EmployeedID;</p></blockquote>
<p>另外一个例子：</p>
<blockquote><p>DELIMITER $$<br />
CREATE TRIGGER Department_Ins<br />
AFTER INSERT ON Department FOR EACH NOW<br />
BEGIN<br />
INSERT INTO Department1 VALUES(NEW. DepartmentID, NEW. DepartmentName, NEW. Note);<br />
END$$<br />
DELIMITER;</p></blockquote>
<p>删除触发器：</p>
<blockquote><p>DROP TRIGGER DELETE_EM;</p></blockquote>
<p>事件是MySQL在相应时刻调用的过程式数据库对象。一个时间可以只调用一次，也可以周期性地启动。事件和触发器相似，都是在某些事情发生的时候启动。当在数据库上启动一条触发语句的时候，触发器就启动了；而时间是根据调度时间来启动的。由于两者相似，所有事件都称之为临时性触发器。</p>
<p>创建事件：</p>
<blockquote><p>CREATE EVENT direct_happen ON SCHEDULE AT NOW() DO SELECT * FROM Employees;</p></blockquote>
<p>创建一个每天执行一次的事件：</p>
<blockquote><p>DELIMITER $$<br />
CREATE EVENT every_day<br />
ON SCHEDULE EVERY 1 DAY<br />
STARTS CURDATE()+INTERVAL 1 DAY<br />
ENDS &#8217;2009-12-31&#8242;<br />
DO<br />
BEGIN SELECT * FROM Employees;<br />
END$$<br />
DELIMITER</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.liangsuilong.info/?feed=rss2&amp;p=893</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL手记：分区表</title>
		<link>http://www.liangsuilong.info/?p=885</link>
		<comments>http://www.liangsuilong.info/?p=885#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:43:35 +0000</pubDate>
		<dc:creator>liangsuilong</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.liangsuilong.info/?p=885</guid>
		<description><![CDATA[MySQL能够支持建立分区表，利用分区表可以提升数据库的性能，创建分区表如下： CREATE TABLE t1 ( id INT NOT NULL, uid INT NOT NULL, PRIMARY KEY (id) ) PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN(5) ENGINE = INNODB, PARTITION p1 VALUES LESS THAN(10) ENGINE = INNODB ); CREATE TABLE &#8230; <a href="http://www.liangsuilong.info/?p=885">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>MySQL能够支持建立分区表，利用分区表可以提升数据库的性能，创建分区表如下：</p>
<blockquote><p>CREATE TABLE t1<br />
(      id INT NOT NULL,<br />
uid INT NOT NULL,<br />
PRIMARY KEY (id)<br />
)<br />
PARTITION BY RANGE (id)<br />
(PARTITION p0 VALUES LESS THAN(5) ENGINE = INNODB,<br />
PARTITION p1 VALUES LESS THAN(10) ENGINE = INNODB<br />
);</p>
<p>CREATE TABLE t1<br />
(      id INT NOT NULL,<br />
uid INT NOT NULL,<br />
PRIMARY KEY (id)<br />
)<br />
PARTITION BY RANGE (id)<br />
(PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM DATA DIRECTORY=&#8217;/tmp&#8217; INDEX DIRECTORY=&#8217;/tmp&#8217;,<br />
PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM DATA DIRECTORY=&#8217;/tmp&#8217; INDEX DIRECTORY=&#8217;/tmp&#8217;<br />
);</p></blockquote>
<p>分区表对唯一约束有明确的规定，每一个唯一约束必须包含在分区表的分区键（也包括主键约束）。</p>
<p>分区表对存储引擎的限制：MERGE引擎不支持分区，分区表也不支持merge；FEDERATED引擎不支持分区，这限制可能会在以后的版本去掉；CSV引擎不支持分区；BLACKHOLE引擎不支持分区；在NDBCLUSTER引擎上使用分区表，分区类型只能是KEY(or LINEAR KEY) 分区；当升级MYSQL的时候，如果你有使用了KEY分区的表（不管是什么引擎，NDBCLUSTER除外），那么你需要把这个表dumped在reloaded；分区表的所有分区或者子分区的存储引擎必须相同，这个限制也许会在以后的版本取消；不指定任何引擎（使用默认引擎）；所有分区或者子分区指定相同引擎。</p>
<p>分区表对内置函数的限制，分区表中只能使用一下函数：</p>
<blockquote><p>ABS()、CEILING()、FLOOR()、DAY()、DAYOFMONTH()、DAYOFWEEK()、DAYOFYEAR()、DATEDIFF()、EXTRACT()、HOUR()、MICROSECOND()、MINUTE()、MOD()、MONTH()、QUARTER()、SECOND()、TIME_TO_SEC()、TO_DAYS()、WEEKDAY()、YEAR()、YEARWEEK()</p></blockquote>
<p>分区表的其他限制：</p>
<p>1. 对象限制：下面这些对象在不能出现在分区表达式</p>
<blockquote><p>Stored functions, stored procedures, UDFs, or plugins.<br />
Declared variables or user variables.</p></blockquote>
<p>2. 运算限制：支持加减乘等运算出现在分区表达式，但是运算后的结果必须是一个INT或者NULL。 |, &amp;, ^, &lt;&lt;, &gt;&gt;, , ~ 等不允许出现在分区表达式。</p>
<p>sql_mode限制：官方强烈建议你在创建分区表后，永远别改变mysql的sql_mode。因为在不同的模式下，某些函数或者运算返回的结果可能会不一样。</p>
<p>3. Performance considerations。(省略)</p>
<p>4. 分区数量限制：</p>
<p>最多支持1024个分区，包括子分区。</p>
<p>5. 当你建立分区表包含很多分区但没有超过1024限制的时候，如果报错 Got error 24 from storage engine，那意味着你需要增大open_files_limit参数。</p>
<p>6. 不支持外键。MYSQL中，INNODB引擎才支持外键。</p>
<p>7. 不支持FULLTEXT indexes（全文索引），包括MYISAM引擎。</p>
<p>8. 不支持spatial column types。</p>
<p>9. 临时表不能被分区。</p>
<p>10. log table不支持分区</p>
<p>11. 分区键必须是INT类型，或者通过表达式返回INT类型，可以为NULL。唯一的例外是当分区类型为KEY分区的时候，可以使用其他类型的列作为分区键（ BLOB or TEXT 列除外）。</p>
<p>12. 分区键不能是一个子查询。 A partitioning key may not be a subquery, even if that subquery resolves to an integer value or NULL</p>
<p>13. 只有RANG和LIST分区能进行子分区。HASH和KEY分区不能进行子分区。</p>
<p>14. 分区表不支持Key caches。</p>
<p>15. 分区表不支持INSERT DELAYED。</p>
<p>16. DATA DIRECTORY和INDEX DIRECTORY参数在分区表将被忽略。这个限制应该不存在了：</p>
<blockquote><p>CREATE TABLE t1<br />
(      id INT NOT NULL,<br />
uid INT NOT NULL,<br />
PRIMARY KEY (id)<br />
)<br />
PARTITION BY RANGE (id)<br />
(PARTITION p0 VALUES LESS THAN(5) ENGINE = MyISAM DATA DIRECTORY=&#8217;/tmp&#8217; INDEX DIRECTORY=&#8217;/tmp&#8217;,<br />
PARTITION p1 VALUES LESS THAN(10) ENGINE = MyISAM DATA DIRECTORY=&#8217;/tmp&#8217; INDEX DIRECTORY=&#8217;/tmp&#8217;<br />
);</p></blockquote>
<p>17. 分区表不支持mysqlcheck和myisamchk。在5.1.33版本中已经支持mysqlcheck和myisamchk。</p>
<p>18. 分区表的分区键创建索引，那么这个索引也将被分区。分区键没有全局索引一说。</p>
<p>19. 在分区表使用ALTER TABLE … ORDER BY，只能在每个分区内进行ORDER BY。</p>
<p>本篇文章绝大部分来自互联网，非原创，囧。<a href="http://www.bigheaddba.net/article/y2009/339_mysql%E5%88%86%E5%8C%BA%E8%A1%A8%E5%B1%80%E9%99%90%E6%80%A7%E6%80%BB%E7%BB%93.html">引用地址点击此处</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liangsuilong.info/?feed=rss2&amp;p=885</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
