<?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.donews.com/liusong1111/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.donews.com/liusong1111</link>
	<description>拐拐龙底咚~</description>
	<lastBuildDate>Thu, 12 Jun 2008 00:09:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>还将旧时意，怜取眼前人</title>
		<link>http://blog.donews.com/liusong1111/archive/2008/06/12/1306572.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2008/06/12/1306572.aspx#comments</comments>
		<pubDate>Thu, 12 Jun 2008 00:09:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2008/06/12/1306572.aspx</guid>
		<description><![CDATA[<p>曾经沧海难为水，除却巫山不是云。 <br />取次花丛懒回顾，半缘修道半缘君。</p>
<p>--</p>
<p>弃置今何道，当时且自亲。<br />还将旧时意，怜取眼前人。</p>]]></description>
			<content:encoded><![CDATA[<p>曾经沧海难为水，除却巫山不是云。 <br />取次花丛懒回顾，半缘修道半缘君。</p>
<p>&#8211;</p>
<p>弃置今何道，当时且自亲。<br />还将旧时意，怜取眼前人。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2008/06/12/1306572.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>借地临时中转，代码不优雅，请勿参考</title>
		<link>http://blog.donews.com/liusong1111/archive/2007/07/17/1187229.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2007/07/17/1187229.aspx#comments</comments>
		<pubDate>Tue, 17 Jul 2007 01:48:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2007/07/17/1187229.aspx</guid>
		<description><![CDATA[require 'open-uri'require 'CSV' def fetch_info(code)&#160; open('http://finance.sina.com.cn/realstock/company/sh' + code.to_s + '/techchart.shtml?asi') do &#124;f&#124;&#160;&#160;&#160; text = f.read&#160;&#160;&#160; title_start = text.index('&#60;title&#62;') + '&#60;title&#62;'.size&#160; &#160;&#160;&#160; title_end = text.index('&#60;/title')&#160;&#160;&#160; title = text[title_start...title_end]&#160;&#160;&#160; stock_name = titl]]></description>
			<content:encoded><![CDATA[<p><span class="Code">require &#8216;open-uri&#8217;<br />require &#8216;CSV&#8217; </p>
<p>def fetch_info(code)<br />&nbsp; uri = &#8216;http://finance.sina.com.cn/realstock/company/sh&#8217; + code.to_s + &#8216;/techchart.shtml?asi&#8217;<br />&nbsp; open(uri) do |f|<br />&nbsp;&nbsp;&nbsp; text = f.read<br />&nbsp;&nbsp;&nbsp; title_start = text.index(&#8216;&lt;title&gt;&#8217;) + &#8216;&lt;title&gt;&#8217;.size &nbsp;<br />&nbsp;&nbsp;&nbsp; title_end = text.index(&#8216;&lt;/title&#8217;)<br />&nbsp;&nbsp;&nbsp; title = text[title_start...title_end]<br />&nbsp;&nbsp;&nbsp; stock_name = title[0...(title.index('_'))]<br />&nbsp;&nbsp;&nbsp; rate_start = text.index(&#8216;机构介入比例&#8217;) + &#8216;机构介入比例&#8217;.size<br />&nbsp;&nbsp;&nbsp; rate_end = rate_start + 4<br />&nbsp;&nbsp;&nbsp; rate = text[rate_start...rate_end].to_f<br />&nbsp;&nbsp;&nbsp; return [stock_name,rate]<br />&nbsp; end<br />end</p>
<p>def fetch_all_info<br />&nbsp; all_info = []<br />&nbsp; for code in 600001&#8230;600003<br />&nbsp;&nbsp;&nbsp; info = fetch_info(code)<br />&nbsp;&nbsp;&nbsp; all_info &lt;&lt; info<br />&nbsp; end<br />&nbsp; return all_info<br />end</p>
<p>def fetch_and_save_all_info<br />&nbsp; all_info = fetch_all_info<br />&nbsp; CSV.open(&#8216;d:\test\stock.csv&#8217;,'w&#8217;) do |f|<br />&nbsp;&nbsp;&nbsp; for info in all_info<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f &lt;&lt; info<br />&nbsp;&nbsp;&nbsp; end<br />&nbsp; end<br />end</p>
<p>fetch_and_save_all_info</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2007/07/17/1187229.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google desktop &#8211; 桌面portal悄悄进行中</title>
		<link>http://blog.donews.com/liusong1111/archive/2007/03/07/1137501.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2007/03/07/1137501.aspx#comments</comments>
		<pubDate>Wed, 07 Mar 2007 06:29:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2007/03/07/1137501.aspx</guid>
		<description><![CDATA[俺生造了个名词：&#34;桌面portal&#34;<br />http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx<br /><br />冉翔今天告诉我，google desktop大有改观，完全是&#34;桌面portal&#34;的思路，可得去瞧瞧！<br /><br />下载地址：<br />http://desktop.google.com<br />开发SDK：<br />http://desktop.google.com/dev/<br /><br />它的插件叫Gadget。下载到的SDK里还有中文开发文档，使用js开发。<br />小厂商抢不到&#34;桌面portal&#8221;的市场，就来抢Gadget的地盘吧！ google还提供了一个简易的开发平台，支持可视化开发。]]></description>
			<content:encoded><![CDATA[<p>俺生造了个名词：&quot;桌面portal&quot;<br />http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx</p>
<p>冉翔今天告诉我，google desktop大有改观，完全是&quot;桌面portal&quot;的思路，可得去瞧瞧！</p>
<p>下载地址：<br />http://desktop.google.com<br />开发SDK：<br />http://desktop.google.com/dev/</p>
<p>它的插件叫Gadget。下载到的SDK里还有中文开发文档，使用js开发。<br />小厂商抢不到&quot;桌面portal&rdquo;的市场，就来抢Gadget的地盘吧！ google还提供了一个简易的开发平台，支持可视化开发。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2007/03/07/1137501.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>树的简单画法</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/12/27/1103335.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/12/27/1103335.aspx#comments</comments>
		<pubDate>Wed, 27 Dec 2006 03:28:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/12/27/1103335.aspx</guid>
		<description><![CDATA[绘制一棵树，如：<br /><span class="Code">/*<br />root -&#62;<br />&#160;&#160;&#160; a<br />&#160;&#160;&#160; b<br />&#160;&#160;&#160; c -&#62;<br />&#160;&#160;&#160; &#160;&#160;&#160; d<br />&#160;&#160;&#160; &#160;&#160;&#160; e<br />&#160;&#160;&#160; &#160;&#160;&#160; f<br />&#160;&#160;&#160; g -&#62;<br />&#160;&#160;&#160; &#160;&#160;&#160; h -&#62;<br />&#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; k<br />&#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; m<br /><br />*/</spa]]></description>
			<content:encoded><![CDATA[<p>绘制一棵树，如：<br /><span class="Code">/*<br />root -&gt;<br />&nbsp;&nbsp;&nbsp; a<br />&nbsp;&nbsp;&nbsp; b<br />&nbsp;&nbsp;&nbsp; c -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; f<br />&nbsp;&nbsp;&nbsp; g -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; h -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; k<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m</p>
<p>*/</span></p>
<p>代码：</p>
<p><span class="Code">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; New Document &lt;/TITLE&gt;<br />&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;<br />&lt;div id=&quot;panel&quot;&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br />&lt;!&#8211;<br />function Node(parent,label){<br />&nbsp; this.parent = parent;<br />&nbsp; this.label = label;<br />&nbsp; this.children = [];<br />&nbsp; if(parent != null)<br />&nbsp;&nbsp;&nbsp; parent.children[parent.children.length] = this;<br />&nbsp; <br />&nbsp; this.x = 0;<br />&nbsp; this.y = 0;</p>
<p>&nbsp; this.totalH = 0;<br />&nbsp; this.totalV = 0;<br />&nbsp; this.index = 0;</p>
<p>&nbsp; return this;<br />}</p>
<p>function calcTotal(node,index){<br />&nbsp; node.index = index;<br />&nbsp; var parent = node.parent;<br />&nbsp; if(parent == null){<br />&nbsp;&nbsp;&nbsp; node.totalH = 1;<br />&nbsp; }else{<br />&nbsp;&nbsp;&nbsp; node.totalH = parent.totalH + 1;<br />&nbsp; }</p>
<p>&nbsp; if(node.children.length == 0){<br />&nbsp;&nbsp;&nbsp; node.totalV = 1;<br />&nbsp; }else{<br />&nbsp;&nbsp;&nbsp; var result = 0;<br />&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;node.children.length;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var child = node.children[i];<br />&nbsp;&nbsp;&nbsp; &nbsp; calcTotal(child,i);<br />&nbsp;&nbsp;&nbsp; &nbsp; result += child.totalV;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; node.totalV = result;<br />&nbsp; }<br />}</p>
<p>function calcPosition(node){<br />&nbsp; var parent = node.parent;<br />&nbsp; if(parent == null){<br />&nbsp;&nbsp;&nbsp; node.x = 0;<br />&nbsp;&nbsp;&nbsp; node.y = node.totalV * _V_ /2;<br />&nbsp; }else{<br />&nbsp;&nbsp;&nbsp; node.x = node.totalH * _H_ ;<br />&nbsp;&nbsp;&nbsp; var y = parent.y &#8211; parent.totalV * _V_ /2;<br />&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;node.index;i++){<br />&nbsp;&nbsp;&nbsp; &nbsp; var sibling = parent.children[i];<br />&nbsp;&nbsp;&nbsp; &nbsp; y += sibling.totalV * _V_ ;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; y += node.totalV * _V_ /2;<br />&nbsp;&nbsp;&nbsp; node.y = y;<br />&nbsp; }</p>
<p>&nbsp; for(var i=0;i&lt;node.children.length;i++){<br />&nbsp;&nbsp;&nbsp; var child = node.children[i];<br />&nbsp;&nbsp;&nbsp; calcPosition(child);<br />&nbsp; }<br />}</p>
<p>var _H_ = 50;<br />var _V_ = 50;</p>
<p>function drawNode(node){<br />&nbsp; var element = document.createElement(&quot;DIV&quot;);<br />&nbsp; element.style.position = &quot;absolute&quot;;<br />&nbsp; var text = document.createTextNode(node.label);<br />&nbsp; element.appendChild(text);<br />&nbsp; element.style.left = node.x;<br />&nbsp; element.style.top = node.y;<br />&nbsp; var panel = document.getElementById(&quot;panel&quot;);&nbsp; <br />&nbsp; panel.appendChild(element);</p>
<p>&nbsp; for(var i=0;i&lt;node.children.length;i++){<br />&nbsp;&nbsp;&nbsp; var child = node.children[i];<br />&nbsp;&nbsp;&nbsp; drawNode(child);<br />&nbsp; }<br />}</p>
<p>/*<br />root -&gt;<br />&nbsp;&nbsp;&nbsp; a<br />&nbsp;&nbsp;&nbsp; b<br />&nbsp;&nbsp;&nbsp; c -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; d<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; f<br />&nbsp;&nbsp;&nbsp; g -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; h -&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; k<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m</p>
<p>*/<br />var root = new Node(null,&quot;root&quot;);<br />var a = new Node(root,&quot;a&quot;);<br />var b = new Node(root,&quot;b&quot;);<br />var c = new Node(root,&quot;c&quot;);<br />var d = new Node(c,&quot;d&quot;);<br />var e = new Node(c,&quot;e&quot;);<br />var f = new Node(c,&quot;f&quot;);<br />var g = new Node(root,&quot;g&quot;);<br />var h = new Node(g,&quot;h&quot;);<br />var k = new Node(h,&quot;k&quot;);<br />var m = new Node(h,&quot;m&quot;);</p>
<p>calcTotal(root,0);<br />calcPosition(root);<br />drawNode(root);</p>
<p>//&#8211;&gt;<br />&lt;/SCRIPT&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</span></p>
<p>效果：</p>
<p><img src="http://blog.donews.com/images/blog_donews_com/liusong1111/auto_layout_screenshot.png" alt="" /></p>
<p>连线都没画，懒人呀~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/12/27/1103335.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用jquery做的自动截断超长字符的插件</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/12/20/1099925.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/12/20/1099925.aspx#comments</comments>
		<pubDate>Wed, 20 Dec 2006 11:46:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/12/20/1099925.aspx</guid>
		<description><![CDATA[jquery-trim.js<br /><br /><span class="Code">String.prototype.mylength = function(){<br />&#160; var arr = this.match(/[\u00FF-\uFFFF]/gi);<br />&#160; if(!arr &#124;&#124; arr==null)<br />&#160;&#160;&#160;&#160;&#160; return this.length;<br />&#160; var len = this.length + arr.length;<br />&#160; return len;<br />}<br /><br />String.prototype.mysubstring = function(limit){<br />&#160; var len = 0;<br />&#160; var arr = [];<br />&#160; for(var i=0;i&#60;this.length;i++){<br />&#160;&#160;&#160; var it = t]]></description>
			<content:encoded><![CDATA[<p>jquery-trim.js</p>
<p><span class="Code">String.prototype.mylength = function(){<br />&nbsp; var arr = this.match(/[\u00FF-\uFFFF]/gi);<br />&nbsp; if(!arr || arr==null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.length;<br />&nbsp; var len = this.length + arr.length;<br />&nbsp; return len;<br />}</p>
<p>String.prototype.mysubstring = function(limit){<br />&nbsp; var len = 0;<br />&nbsp; var arr = [];<br />&nbsp; for(var i=0;i&lt;this.length;i++){<br />&nbsp;&nbsp;&nbsp; var it = this.substring(i,i+1);<br />&nbsp;&nbsp;&nbsp; len += it.mylength();<br />&nbsp;&nbsp;&nbsp; if(len &gt; limit)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp; arr[arr.length] = it;<br />&nbsp; }</p>
<p>&nbsp; var result = arr.join(&quot;&quot;);<br />&nbsp; return result;<br />}</p>
<p>jQuery.fn.limit = function(){<br />&nbsp; $(this).each(function(){<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; var mylimit = parseInt($(this).attr(&quot;limit&quot;));<br />&nbsp;&nbsp;&nbsp; var applied = $(this).attr(&quot;applied&quot;);<br />&nbsp;&nbsp;&nbsp; if(applied)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp; var text = $(this).text();<br />&nbsp;&nbsp;&nbsp; var original_text = text;<br />&nbsp;&nbsp;&nbsp; if(text.mylength() &gt; mylimit){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text = text.mysubstring(mylimit);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text += &quot;&#8230;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text = &quot;&lt;SPAN style=\&quot;position:relative\&quot;&gt;&lt;SPAN class=&#8217;tooltip&#8217;&gt;&quot; + original_text + &quot;&lt;/SPAN&gt;&quot; + text + &quot;&lt;/SPAN&gt;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).html(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).mouseover(function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).find(&quot;.tooltip&quot;).css(&quot;display&quot;,&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).mouseout(function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).find(&quot;.tooltip&quot;).css(&quot;display&quot;,&quot;none&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).find(&quot;.tooltip&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .css({ &#8216;display&#8217;:'block&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;position&#8217;:'absolute&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;top&#8217;:'2em&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;left&#8217;:'2em&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;width&#8217;:'15em&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;border&#8217;:'1px solid #0cf&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;background-color&#8217;:'#cff&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;color&#8217;:'#000&#8242;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;text-align&#8217;:'center&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;word-wrap&#8217;:'break-word&#8217;,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;word-break&#8217;:'break-all&#8217;})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .css(&quot;display&quot;,&quot;none&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).attr(&quot;applied&quot;,true);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp; });<br />}</p>
<p>function apply_limit(){<br />&nbsp; $(&quot;[@limit]&quot;).limit();<br />}</p>
<p>$(document).ready(apply_limit);</span></p>
<p>html中这样用：</p>
<p><span class="Code">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; New Document &lt;/TITLE&gt;<br />&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot; src=&quot;jquery.js&quot;&gt;&lt;/SCRIPT&gt;<br />&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot; src=&quot;jquery-trim.js&quot;&gt;&lt;/SCRIPT&gt;<br />&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;<br />这是一行 &lt;br&gt;&lt;br&gt;<br />这是另一行 &lt;span limit=&quot;8&quot;&gt;这是超级长昂昂昂昂昂昂昂昂昂昂昂的字符串&lt;/span&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</span></p>
<p>抓图：<br /><img src="http://blog.donews.com/images/blog_donews_com/liusong1111/snap1.png" alt="" /><br />注意到html中&lt;span limit=&quot;8&quot;&gt;了吗？ 后面的文字按&ldquo;中文两个字符，英文一个字符&rdquo;的规则截断了，随后只显示&#8230;，鼠标移上去，出现完整信息的提示。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/12/20/1099925.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>日程管理小软件 &#8211; 桌面portal</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx#comments</comments>
		<pubDate>Thu, 07 Dec 2006 10:12:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx</guid>
		<description><![CDATA[看银狐999老大本本的桌面用的日程管理软件不赖，原来叫Wallcal，下载用了两天，感觉只能在日期格子里写字，憋屈，胡永登同学推荐了active desktop calendar，搞下来看，果然粉爽，有notes/alarms/tasks一应俱全，还有layers/contacts/pictures的管理。与Wallcal相比，它在桌面的右侧分了两栏显示notes和tasks，只显示最近两日的信息，空间利用很有效。它们都是桌布的外观，半透明效果，几乎不影响桌面图标的使用。<br /><br />vista也带了日历。<br /><br />我相信这种&#34;桌面portal&#34;的潜力很大，大家快来抢地盘呀！]]></description>
			<content:encoded><![CDATA[<p>看银狐999老大本本的桌面用的日程管理软件不赖，原来叫Wallcal，下载用了两天，感觉只能在日期格子里写字，憋屈，胡永登同学推荐了active desktop calendar，搞下来看，果然粉爽，有notes/alarms/tasks一应俱全，还有layers/contacts/pictures的管理。与Wallcal相比，它在桌面的右侧分了两栏显示notes和tasks，只显示最近两日的信息，空间利用很有效。它们都是桌布的外观，半透明效果，几乎不影响桌面图标的使用。</p>
<p>vista也带了日历。</p>
<p>我相信这种&quot;桌面portal&quot;的潜力很大，大家快来抢地盘呀！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/12/07/1092529.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rails安装的几种方式</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/12/04/1089970.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/12/04/1089970.aspx#comments</comments>
		<pubDate>Mon, 04 Dec 2006 03:28:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/12/04/1089970.aspx</guid>
		<description><![CDATA[总结一下rails安装的几种方式，所有内容均以 http://www.rubyonrails.org/down 为准。<br />当然，第一步是安装ruby，略。<br /><br />一、常规方式：远程gem<br />gem install rails --include-dependencies<br /><br />安装时需要联网。<br /><br />二、 本地gem方式<br />仔细分析远程gem方式的安装，发现它首先下载并安装其依赖的其它gem包，它们依次是：<br />activesupport<br />activerecord<br />actionpack<br />actionmailer<br />actionwebservice<br />最后才是 rails<br />因此，到rubyforge.org分别下载这六个包，像 gem install activesupport --local 依次安装就可以了<br /><br />三、 zip方式<br />从http://www.rubyonrails.org/down 上，有stand-alone ]]></description>
			<content:encoded><![CDATA[<p>总结一下rails安装的几种方式，所有内容均以 http://www.rubyonrails.org/down 为准。<br />当然，第一步是安装ruby，略。</p>
<p>一、常规方式：远程gem<br />gem install rails &#8211;include-dependencies</p>
<p>安装时需要联网。</p>
<p>二、 本地gem方式<br />仔细分析远程gem方式的安装，发现它首先下载并安装其依赖的其它gem包，它们依次是：<br />activesupport<br />activerecord<br />actionpack<br />actionmailer<br />actionwebservice<br />最后才是 rails<br />因此，到rubyforge.org分别下载这六个包，像 gem install activesupport &#8211;local 依次安装就可以了</p>
<p>三、 zip方式<br />从http://www.rubyonrails.org/down 上，有stand-alone packages的链接，点进去可以下载zip方式的rails。<br />解压后是一个空的rails工程，在它上面就可以直接创建rails应用了，运行 ruby script/server 可运行。<br />这种方式与前两者的区别在于，前两种方式将rails的六个gem安装到了ruby的目录下，而这种方式是放到了 解压目录/rails/vendor/rails下。<br />昨天按这种方式试报了错误，发生在 解压目录/rails/config/environment.rb的第8行，进去一看，咦，怎么ruby代码有&lt;%xxx%&gt;的东东呢，注释掉，再试，好使了。</p>
<p>四、 InstantRails方式<br />到 http://instantrails.rubyforge.org/ 下载InstantRails，它把ruby、rails、mysql、apache和两个rails应用打包到一起，解压不需配置就能运行了。只支持windows环境。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/12/04/1089970.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>名词小记</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/11/29/1087638.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/11/29/1087638.aspx#comments</comments>
		<pubDate>Wed, 29 Nov 2006 12:10:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/11/29/1087638.aspx</guid>
		<description><![CDATA[nifty - 圆角CSS<br /><span class="postbody">iframe sandboxing - 还木看</span>]]></description>
			<content:encoded><![CDATA[<p>nifty &#8211; 圆角CSS<br /><span class="postbody">iframe sandboxing &#8211; 还木看</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/11/29/1087638.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>全排列算法小解</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/11/16/1079932.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/11/16/1079932.aspx#comments</comments>
		<pubDate>Thu, 16 Nov 2006 11:26:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/11/16/1079932.aspx</guid>
		<description><![CDATA[如对[1,2,3]，将得到[123,132,213,231,312,321]<br />结果数字不重复。<br />思路：<br />x([1,2,3])&#160; -&#62; <br />&#160;y(1,x([2,3])) + y(2,x([1,3])) + y(3,x([1,2]))<br /><br />y(1,x[2,3]) -&#62;<br />[12,13]<br /><br />代码：<br /><br /><span class="Code">arr = [1,2,3]<br /><br />def y(num,arr)<br />&#160; arr.collect{&#124;it&#124; num.to_s + it.to_s }<br />end<br /><br />def x(arr)<br />&#160; return arr.dup if arr.size==1<br />&#160; result = []<br />&#160; arr.each_index do &#124;i&#124;<br />&#160;&#160;&#160; arr1 = arr.dup<br />]]></description>
			<content:encoded><![CDATA[<p>如对[1,2,3]，将得到[123,132,213,231,312,321]<br />结果数字不重复。<br />思路：<br />x([1,2,3])&nbsp; -&gt; <br />&nbsp;y(1,x([2,3])) + y(2,x([1,3])) + y(3,x([1,2]))</p>
<p>y(1,x[2,3]) -&gt;<br />[12,13]</p>
<p>代码：</p>
<p><span class="Code">arr = [1,2,3]</p>
<p>def y(num,arr)<br />&nbsp; arr.collect{|it| num.to_s + it.to_s }<br />end</p>
<p>def x(arr)<br />&nbsp; return arr.dup if arr.size==1<br />&nbsp; result = []<br />&nbsp; arr.each_index do |i|<br />&nbsp;&nbsp;&nbsp; arr1 = arr.dup<br />&nbsp;&nbsp;&nbsp; num = arr1.delete_at(i)<br />&nbsp;&nbsp;&nbsp; result.concat(y(num,x(arr1)))<br />&nbsp; end<br />&nbsp; return result<br />end</p>
<p>def z(arr)<br />&nbsp; arr.uniq.collect{|it| it.to_i}<br />end</p>
<p>require &#8216;pp&#8217;<br />pp z(x(arr))</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/11/16/1079932.aspx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>得到一个各位不重复的四位随机数算法</title>
		<link>http://blog.donews.com/liusong1111/archive/2006/11/14/1078306.aspx</link>
		<comments>http://blog.donews.com/liusong1111/archive/2006/11/14/1078306.aspx#comments</comments>
		<pubDate>Tue, 14 Nov 2006 10:41:00 +0000</pubDate>
		<dc:creator>拐拐龙底咚</dc:creator>
				<category><![CDATA[脚本语言]]></category>

		<guid isPermaLink="false">http://blog.donews.com/liusong1111/archive/2006/11/14/1078306.aspx</guid>
		<description><![CDATA[<span class="Code">materials = (0..9).to_a<br />result = 0<br />(0..5).each{&#124;i&#124; result += materials.delete_at(rand(materials.size))* 10**i }<br />puts result%10000 </span><br /><br /><br />再省两行代码的实现是：<br /><br /><span class="Code">materials = (0..9).to_a<br />puts (0..5).inject(0){ &#124;n,i&#124;&#160; n + materials.delete_at(rand(materials.size)) * 10**i } % 10000 <br /></span><br />思路跟昨天Ttrail说的一样。<br />用一个数组 materials = (0..9).to_a 存放可以取的数，循环从里面随机取，取完就从数组中删除。<br />为了保证千位数不是0，我没有特意判断，而是多循环了一次（5次），将最终结果]]></description>
			<content:encoded><![CDATA[<p><span class="Code">materials = (0..9).to_a<br />result = 0<br />(0..5).each{|i| result += materials.delete_at(rand(materials.size))* 10**i }<br />puts result%10000 </span></p>
<p>再省两行代码的实现是：</p>
<p><span class="Code">materials = (0..9).to_a<br />puts (0..5).inject(0){ |n,i|&nbsp; n + materials.delete_at(rand(materials.size)) * 10**i } % 10000 <br /></span><br />思路跟昨天Ttrail说的一样。<br />用一个数组 materials = (0..9).to_a 存放可以取的数，循环从里面随机取，取完就从数组中删除。<br />为了保证千位数不是0，我没有特意判断，而是多循环了一次（5次），将最终结果 % 10000截到。<br />每次的随机数在 0至数组.size之间（不包括），即能随机取到一个合法的组数索引。</p>
<p>&#8211; 后记：对一个五位数取模10000就能得到四位数？我真蠢~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.donews.com/liusong1111/archive/2006/11/14/1078306.aspx/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

