<?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>潘魏增 &#187; 学习</title>
	<atom:link href="http://panweizeng.com/archives/category/learning/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>CURL基于cookie的自动登录脚本</title>
		<link>http://panweizeng.com/archives/665</link>
		<comments>http://panweizeng.com/archives/665#comments</comments>
		<pubDate>Fri, 16 Oct 2009 15:11:58 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=665</guid>
		<description><![CDATA[放在crontab中自动执行登录，有时候挺有用的。 #!/bin/bash &#160; # cookie 临时文件 COOKIEFILE=cookie_tmp.txt &#160; # 登录 curl $LOGINURL -d&#34;username=$USERNAME&#38;password=$PASSWORD&#38;autologin=1&#34; -c $COOKIEFILE -s &#160; RESPONSE=`curl $UPDATEURL -s -b $COOKIEFILE &#124;grep $USERNAME` TIME=`date +'%Y-%m-%d %H:%M:%S'` echo &#34;$TIME &#124; $RESPONSE&#34; &#62;&#62; $LOGFILE 完整注释和代码见 http://github.com/panweizeng/home/blob/master/code/shell/curl_login]]></description>
			<content:encoded><![CDATA[<p>放在crontab中自动执行登录，有时候挺有用的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#!/bin/bash</li>
<li>&nbsp;</li>
<li># cookie 临时文件</li>
<li>COOKIEFILE=cookie_tmp.txt</li>
<li>&nbsp;</li>
<li># 登录</li>
<li>curl $LOGINURL -d&quot;username=$USERNAME&amp;password=$PASSWORD&amp;autologin=1&quot; -c $COOKIEFILE -s</li>
<li>&nbsp;</li>
<li>RESPONSE=`curl $UPDATEURL -s -b $COOKIEFILE |grep $USERNAME`</li>
<li>TIME=`date +'%Y-%m-%d %H:%M:%S'`</li>
<li>echo &quot;$TIME | $RESPONSE&quot; &gt;&gt; $LOGFILE</li></ol></div>
<p>完整注释和代码见 <a href="http://github.com/panweizeng/home/blob/master/code/shell/curl_login">http://github.com/panweizeng/home/blob/master/code/shell/curl_login</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/665/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ipod touch破解后可以作的事情</title>
		<link>http://panweizeng.com/archives/649</link>
		<comments>http://panweizeng.com/archives/649#comments</comments>
		<pubDate>Mon, 20 Jul 2009 13:35:39 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=649</guid>
		<description><![CDATA[自从入手Nokia e71，touch曾一度失宠。破解之后，它又重新恢复了青春。 1. 安装海量别人共享的APP，详见http://weiphone.com/forum-36-1.html 2. 通过wifi作移动硬盘（注：windows用户可以直接使用91手机助手） 3. 安装软件，例如lighttpd/vim/wget/curl/python。非常简单。 $su root $apt-get install sudo $apt-get install wget $apt-get install vim $apt-get install python $apt-get install curl $apt-get install lighttpd 参考破解教程地址：http://www.weiphone.com/viewthread.php?tid=337294&#8230;]]></description>
			<content:encoded><![CDATA[<p>自从入手Nokia e71，touch曾一度失宠。破解之后，它又重新恢复了青春。</p>
<p>1. 安装海量别人共享的APP，详见<a href="http://weiphone.com/forum-36-1.html">http://weiphone.com/forum-36-1.html</a><br />
2. 通过wifi作移动硬盘（注：windows用户可以直接使用91手机助手）<br />
3. 安装软件，例如lighttpd/vim/wget/curl/python。非常简单。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">$su root</li>
<li>$apt-get install sudo</li>
<li>$apt-get install wget</li>
<li>$apt-get install vim</li>
<li>$apt-get install python</li>
<li>$apt-get install curl</li>
<li>$apt-get install lighttpd</li></ol></div>
<p>参考破解教程地址：<a href="http://www.weiphone.com/viewthread.php?tid=337294&#038;extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D39">http://www.weiphone.com/viewthread.php?tid=337294&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/649/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>重装ubuntu</title>
		<link>http://panweizeng.com/archives/640</link>
		<comments>http://panweizeng.com/archives/640#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:54:36 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=640</guid>
		<description><![CDATA[工作机前几天出现一个.xsession-errors的错误，无法登录桌面环境。google了很多文章均不能解决，无奈下只能重装系统。刻了一张ubuntu 8.10 live cd，然后进入光盘系统。 首先需要备份数据，先查看硬盘分区情况。我的分区是swap 2GB，/根20GB，剩下都作/home, 大概130GB。 $ sudo fdisk -l&#160; Disk /dev/sda: 160.0&#160;GB, 160041885696 bytes 255&#160;heads, 63 sectors/track, 19457 cylinders Units = cylinders&#160;of 16065 * 512 = 8225280 bytes Disk&#160;identifier: 0xd10cd10c &#160; Device&#160;Boot&#160; &#160; &#160; Start&#160; &#160; &#160; &#160;&#160; End&#160; &#160; &#160; Blocks&#160;&#160; Id&#160; System /dev/sda1&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 1&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>工作机前几天出现一个.xsession-errors的错误，无法登录桌面环境。google了很多文章均不能解决，无奈下只能重装系统。刻了一张ubuntu 8.10 live cd，然后进入光盘系统。<br />
首先需要备份数据，先查看硬盘分区情况。我的分区是swap 2GB，/根20GB，剩下都作/home, 大概130GB。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">$ </span><span style="color: Blue;">sudo</span><span style="color: Gray;"> </span><span style="color: Blue;">fdisk</span><span style="color: Gray;"> -</span><span style="color: Blue;">l</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Disk</span><span style="color: #8b0000;"> /</span><span style="color: Red;">dev</span><span style="color: #8b0000;">/s</span><span style="color: Blue;">da</span><span style="color: Gray;">: </span><span style="color: Maroon;">160.0</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">GB</span><span style="color: Gray;">, </span><span style="color: Maroon;">160041885696</span><span style="color: Gray;"> </span><span style="color: Blue;">bytes</span></li>
<li><span style="color: Maroon;">255</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">heads</span><span style="color: Gray;">, </span><span style="color: Maroon;">63</span><span style="color: Gray;"> </span><span style="color: Blue;">sectors</span><span style="color: Gray;">/</span><span style="color: Blue;">track</span><span style="color: Gray;">, </span><span style="color: Maroon;">19457</span><span style="color: Gray;"> </span><span style="color: Blue;">cylinders</span></li>
<li><span style="color: Blue;">Units</span><span style="color: Gray;"> = </span><span style="color: Blue;">cylinders</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Maroon;">16065</span><span style="color: Gray;"> * </span><span style="color: Maroon;">512</span><span style="color: Gray;"> = </span><span style="color: Maroon;">8225280</span><span style="color: Gray;"> </span><span style="color: Blue;">bytes</span></li>
<li><span style="color: Blue;">Disk</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">identifier</span><span style="color: Gray;">: </span><span style="color: Maroon;">0</span><span style="color: Blue;">xd10cd10c</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Device</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Boot</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">Start</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Blue;">End</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">Blocks</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">Id</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">System</span></li>
<li><span style="color: Gray;">/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">sda1</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">1</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">243</span><span style="color: Gray;">&nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">1951866</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Maroon;">82</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">Linux</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">swap</span><span style="color: #8b0000;"> /</span><span style="color: Red;"> Solaris&nbsp; #swap分区 2GB&nbsp; </span></li>
<li><span style="color: #8b0000;">/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">sda2</span><span style="color: Gray;">&nbsp;&nbsp; *&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">244</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Maroon;">2675</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Maroon;">19535040</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Maroon;">83</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">Linux</span><span style="color: Gray;">&nbsp;</span><span style="color: #ffa500;"># 根分区，即/，20GB </span></li>
<li><span style="color: Gray;">/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">sda3</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Maroon;">2676</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">19457</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Maroon;">134801415</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Maroon;">5</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">Extended</span><span style="color: Gray;">&nbsp;</span><span style="color: #ffa500;">#扩展分区</span></li>
<li><span style="color: Gray;">/</span><span style="color: Blue;">dev</span><span style="color: Gray;">/</span><span style="color: Blue;">sda5</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Maroon;">2676</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Maroon;">19457</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Maroon;">134801383</span><span style="color: Gray;">+&nbsp; </span><span style="color: Maroon;">83</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">Linux</span><span style="color: Gray;">&nbsp;</span><span style="color: #ffa500;"># /home分区，是放在扩展分区/dev/sda3里面的逻辑分区，最重要的数据在这里</span></li></ol></div>
<p>然后将原来的/home分区mount到/mnt目录下，再复制出数据到移动硬盘</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #00008b;">$sudo</span><span style="color: Gray;"> </span><span style="color: Blue;">mount</span><span style="color: #8b0000;"> /</span><span style="color: Red;">dev</span><span style="color: #8b0000;">/s</span><span style="color: Blue;">da5</span><span style="color: #8b0000;"> /</span><span style="color: Red;">mnt</span></li>
<li><span style="color: Red;">$sudo cp -r </span><span style="color: #8b0000;">/m</span><span style="color: Blue;">nt</span><span style="color: Gray;">/</span><span style="color: Blue;">xp</span><span style="color: Gray;">/*</span><span style="color: #8b0000;"> /</span><span style="color: Red;">media</span><span style="color: #8b0000;">/</span><span style="color: Blue;">OneTouch</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Mini</span><span style="color: Gray;">/</span><span style="color: Blue;">ubuntu_bak</span><span style="color: Gray;">/</span><span style="color: Blue;">xp</span><span style="color: Gray;">/&nbsp; </span><span style="color: #ffa500;"># .vim/ .mozilla/ .vimrc .bashrc .screenrc .dircolors 这些容易漏</span></li></ol></div>
<p>还需要备份<br />
/etc/hosts  #host文件<br />
/var/www/html #本机web测试目录，扫了一眼也没什么特别需要备份的</p>
<p>开始重装，一路Next到分区步骤，选择手动分区，swap和/根分区不变，其中/根分区选择需要格式化，挂载点还是/。最后/home分区，特别需要注意<strong>不要选择格式化</strong>，挂载点还是/home。</p>
<p>安装完成后第一件事情，自动选择最快的源服务器，然后升级你的系统，再然后选择语言支持，把汉语的包都下载完全。<br />
第二件事情给root设置密码 sudo passwd root (之后安装vmserver需要用)<br />
最后就是安装一堆软件</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">sudo</span><span style="color: Gray;"> </span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">workrave</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">scim</span><span style="color: Gray;">-</span><span style="color: Blue;">chinese</span><span style="color: Gray;"> </span><span style="color: Blue;">scim</span><span style="color: Gray;">-</span><span style="color: Blue;">pinyin</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">scim</span><span style="color: Gray;">-</span><span style="color: Blue;">config</span><span style="color: Gray;">-</span><span style="color: Green;">socket</span><span style="color: Gray;"> </span><span style="color: Blue;">scim</span><span style="color: Gray;">-</span><span style="color: Blue;">gtk2</span><span style="color: Gray;">-</span><span style="color: Blue;">immodule</span><span style="color: Gray;"> </span><span style="color: Blue;">scim</span><span style="color: Gray;">-</span><span style="color: Blue;">tables</span><span style="color: Gray;">-</span><span style="color: Blue;">zh</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">apache2</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">php5</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">mysql</span><span style="color: Gray;">-</span><span style="color: Blue;">server</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">epiphany</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">epiphany</span><span style="color: Gray;">-</span><span style="color: Blue;">browser</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">filezilla</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">emesene</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">build</span><span style="color: Gray;">-</span><span style="color: Blue;">essential</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">openssh</span><span style="color: Gray;">-</span><span style="color: Blue;">server</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">sun</span><span style="color: Gray;">-</span><span style="color: Blue;">java6</span><span style="color: Gray;">-</span><span style="color: Blue;">jre</span><span style="color: Gray;"> </span><span style="color: Blue;">sun</span><span style="color: Gray;">-</span><span style="color: Blue;">java6</span><span style="color: Gray;">-</span><span style="color: Blue;">plugin</span><span style="color: Gray;"> </span><span style="color: Blue;">sun</span><span style="color: Gray;">-</span><span style="color: Blue;">java6</span><span style="color: Gray;">-</span><span style="color: Blue;">fonts</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">vim</span><span style="color: Gray;"> </span><span style="color: Blue;">vim</span><span style="color: Gray;">-</span><span style="color: Blue;">full</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">ctags</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">kchmviewer</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">subversion</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: #8b0000;">qt</span><span style="color: Red;">erm</span></li>
<li><span style="color: Red;">sudo ap</span><span style="color: #8b0000;">t</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;">-</span><span style="color: Blue;">simplejson</span></li>
<li><span style="color: Blue;">sudo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">apt</span><span style="color: Gray;">-</span><span style="color: Blue;">get</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;"> </span><span style="color: Blue;">gcolor2</span></li></ol></div>
<p>如果你对thinkpad安装ubuntu感兴趣，可以看这篇文章《<a href="http://panweizeng.com/archives/206">T61安装ubuntu</a>》。</p>
<p>参考文章<br />
<a href="https://help.ubuntu.com/community/LiveCdRecovery"></p>
<p>https://help.ubuntu.com/community/LiveCdRecovery</a></p>
<p><a href="http://ubuntuabc.com/123/?p=38">关于分区</a><br />
<a href="http://ubuntuabc.com/123/?p=23">重装Ubuntu时如何保留/home分区中的数据</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/640/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>javascript获取正则中的子匹配</title>
		<link>http://panweizeng.com/archives/592</link>
		<comments>http://panweizeng.com/archives/592#comments</comments>
		<pubDate>Fri, 27 Mar 2009 13:54:23 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=592</guid>
		<description><![CDATA[昨天帮朋友处理一段文本正好用到了这个，记录一下。 var str = '&#60;a href=&#34;http://google.com&#34; target=&#34;_blank&#34;&#62;google&#60;/a&#62;123&#60;a title=&#34;百度&#34; href=&#34;http://baidu.com&#34;&#62;baidu&#60;/a&#62;abce&#60;a href=&#34;http://msn.com&#34; class=&#34;msn&#34;&#62;msn&#60;/a&#62;kkk'; var&#160;reg = /&#60;a.*?href=&#34;([^&#34;]*)&#34;[^&#62;]*&#62;([^&#60;]*)&#60;/a&#62;/i; // *? 非贪婪匹配 var arr = []; while(reg.exec(str)){ &#160; &#160; arr.push({'link':RegExp.$1 , 'text':RegExp.$2}); &#160; &#160; str = RegExp.rightContext;//将str截断 &#160; &#160; reg.lastIndex = 0;//重置下次匹配开始的位置 } console.info(arr); 另外两种正则表达式语法有一些不同，比如说转义。 #正则表达式语法 1 re = /pattern/[flags] #正则表达式语法 2 re = new&#160;RegExp(&#34;pattern&#34;,[&#34;flags&#34;]) &#160; #比如说要匹配&#34;潘魏增(panweizeng)&#34;，同时获取其中的子匹配panweizeng，对应的写法如下 var&#160;reg = /[^(]+(([^)]+))/g; [...]]]></description>
			<content:encoded><![CDATA[<p>昨天帮朋友处理一段文本正好用到了这个，记录一下。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">str</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;a href=&quot;http://google.com&quot; target=&quot;_blank&quot;&gt;google&lt;/a&gt;123&lt;a title=&quot;百度&quot; href=&quot;http://baidu.com&quot;&gt;baidu&lt;/a&gt;abce&lt;a href=&quot;http://msn.com&quot; class=&quot;msn&quot;&gt;msn&lt;/a&gt;kkk</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">&lt;a.*?href=&quot;([^&quot;]*)&quot;[^&gt;]*&gt;([^&lt;]*)&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">i; </span><span style="color: #8b0000;">//</span><span style="color: Red;"> *? 非贪婪匹配</span></li>
<li><span style="color: Red;">var arr = [];</span></li>
<li><span style="color: Red;">while(reg.exec(str)){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; arr.push({'link':RegExp.$1 , 'text':RegExp.$2});</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; str = RegExp.rightContext;</span><span style="color: #8b0000;">//</span><span style="color: Red;">将str截断</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; reg.lastIndex = 0;</span><span style="color: #8b0000;">//</span><span style="color: Red;">重置下次匹配开始的位置</span></li>
<li><span style="color: Red;">}</span></li>
<li><span style="color: Red;">console.info(arr);</span></li></ol></div>
<p>另外两种正则表达式语法有一些不同，比如说转义。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">#正则表达式语法 </span><span style="color: Maroon;">1</span></li>
<li><span style="color: Blue;">re</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">pattern</span><span style="color: #8b0000;">/</span><span style="color: Olive;">[</span><span style="color: Blue;">flags</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">#正则表达式语法 </span><span style="color: Maroon;">2</span></li>
<li><span style="color: Blue;">re</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Teal;">RegExp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">pattern</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">flags</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">])</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">#比如说要匹配</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">潘魏增(panweizeng)</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">，同时获取其中的子匹配</span><span style="color: Blue;">panweizeng</span><span style="color: Gray;">，对应的写法如下</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">[^(]+(([^)]+))</span><span style="color: #8b0000;">/g</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">#这里需要对括号使用两个转义符号</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reg</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">RegExp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">[^\(]+\(([^\)]+)\)</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">g</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">submatch</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">reg</span><span style="color: Gray;">.</span><span style="color: Blue;">exec</span><span style="color: Olive;">(</span><span style="color: Blue;">str</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">submatch</span><span style="color: Gray;"> = </span><span style="color: Teal;">RegExp</span><span style="color: Gray;">.$</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">reg</span><span style="color: Gray;">.</span><span style="color: Blue;">lastIndex</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Blue;">info</span><span style="color: Olive;">(</span><span style="color: Blue;">submatch</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/592/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVN分支和合并的简单例子</title>
		<link>http://panweizeng.com/archives/547</link>
		<comments>http://panweizeng.com/archives/547#comments</comments>
		<pubDate>Sat, 07 Mar 2009 15:38:14 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=547</guid>
		<description><![CDATA[尽管svn没有作强制要求，但是一般svn版本库目录建议创建trunk、branches和tags三个目录。 在实际操作时，trunk主干版本要时刻保持干净，即随时可以基于这个版本进行修改并将应用部署上线。branches是分支目录，存放并行开发的项目代码，因为分支是主干的廉价拷贝（相当只是提交了一次主干版本，增加了一个版本号，并没有取出版本库作镜像拷贝），所以你可以放心建立很多分支版本。不过Subversion不支持跨版本库的拷贝，当使用svn copy时你只能在同一个版本库内操作。tags目录存放trunk某个的快照，比如说release-1.0即trunk处于1.0版本时的快照。 使用svn来作团队的代码管理，那么分支和合并将是非常常用的操作。下面是一个简单的示例。 1. 创建分支。这里假设你要负责一个叫theme的项目，分支号1.7.2。 #这里的localhost是svn服务器地址 svn copy -m &#34;1.7.2 - theme&#34; svn://localhost/www/trunk svn://localhost/www/branches/branch1.7.2-theme svn co svn://localhost/www/branches/branch1.7.2-theme 2. 从trunk中merge到分支。忙了一个星期终于开发完了，但是开发期间trunk版本有过改动，部署上线前你需要合并trunk的代码。 #branch1.7.2-theme是分支目录，注意不可以进到分支子目录 cd branch1.7.2-theme #前面的12972是开分支之前trunk的版本号，后面的12991是merge时trunk的版本号 svn merge -r 12972:12991 svn://localhost/www/trunk 如果有冲突选择p(postpone)，merge完了之后使用svn st&#124;grep ^C查看冲突文件，然后比对修改冲突文件。解决冲突后再check in ，信息写上执行的merge操作。 svn ci -m 'svn merge -r 12972:12991 svn://localhost/www/trunk' 3. 从分支merge到trunk。上线测试完毕，你很幸运，一切都如预期正常，这时就要将分支回归trunk，将trunk更新到最新。 #先从trunk checkout一份新鲜的代码，然后cd到该版本目录下 svn co svn://localhost/www/trunk cd trunk #12973是分支开始的版本号，13006是分支结束的版本号 svn merge -r [...]]]></description>
			<content:encoded><![CDATA[<p>尽管svn没有作强制要求，但是一般svn版本库目录建议创建trunk、branches和tags三个目录。 在实际操作时，trunk主干版本要时刻保持干净，即随时可以基于这个版本进行修改并将应用部署上线。branches是分支目录，存放并行开发的项目代码，因为分支是主干的廉价拷贝（相当只是提交了一次主干版本，增加了一个版本号，并没有取出版本库作镜像拷贝），所以你可以放心建立很多分支版本。不过Subversion不支持跨版本库的拷贝，当使用svn copy时你只能在同一个版本库内操作。tags目录存放trunk某个的快照，比如说release-1.0即trunk处于1.0版本时的快照。</p>
<p>使用svn来作团队的代码管理，那么分支和合并将是非常常用的操作。下面是一个简单的示例。</p>
<p>1. 创建分支。这里假设你要负责一个叫theme的项目，分支号1.7.2。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#这里的localhost是svn服务器地址</li>
<li>svn copy -m &quot;1.7.2 - theme&quot; svn://localhost/www/trunk svn://localhost/www/branches/branch1.7.2-theme</li>
<li>svn co svn://localhost/www/branches/branch1.7.2-theme</li></ol></div>
<p>2. 从trunk中merge到分支。忙了一个星期终于开发完了，但是开发期间trunk版本有过改动，部署上线前你需要合并trunk的代码。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#branch1.7.2-theme是分支目录，注意不可以进到分支子目录</li>
<li>cd branch1.7.2-theme</li>
<li>#前面的12972是开分支之前trunk的版本号，后面的12991是merge时trunk的版本号</li>
<li>svn merge -r 12972:12991 svn://localhost/www/trunk</li></ol></div>
<p>如果有冲突选择p(postpone)，merge完了之后使用svn st|grep ^C查看冲突文件，然后比对修改冲突文件。解决冲突后再check in ，信息写上执行的merge操作。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">svn ci -m 'svn merge -r 12972:12991 svn://localhost/www/trunk'</li></ol></div>
<p>3. 从分支merge到trunk。上线测试完毕，你很幸运，一切都如预期正常，这时就要将分支回归trunk，将trunk更新到最新。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#先从trunk checkout一份新鲜的代码，然后cd到该版本目录下</li>
<li>svn co svn://localhost/www/trunk</li>
<li>cd trunk</li>
<li>#12973是分支开始的版本号，13006是分支结束的版本号</li>
<li>svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme</li></ol></div>
<p>如步骤2一样解决冲突，解决冲突后再check in，信息写上执行的merge操作。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">svn ci -m &quot;svn merge -r 12973:13006 svn://localhost/www/branches/branch1.7.2-theme&quot;</li></ol></div>
<p>相关的手册可以参阅svn文档，电子版可以<a href="http://panweizeng.com/archives/49">到这里下载</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/547/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Devtodo&#8211;linux下的todolist软件</title>
		<link>http://panweizeng.com/archives/539</link>
		<comments>http://panweizeng.com/archives/539#comments</comments>
		<pubDate>Fri, 27 Feb 2009 15:19:25 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=539</guid>
		<description><![CDATA[Devtodo是一个命令行todolist管理工具，相关介绍可以看linuxtoy的《Dev Todo: 从命令行管理待做事项清单》。 在paoe同学提醒下，ubuntu下可以直接apt-get install devtodo来安装，非常方便。如果你在用bash，那么下面这个函数可能对你会很有用。把它加到.bashrc文件中，每次cd进入目录的时候，如果该目录下有.todo文件就会把todolist打印出来。 #此函数得到某大牛指点，在此表示感谢 cd()&#160;{ &#160; &#160; if&#160;[[ $# == 0 ]]; then &#160; &#160; &#160; &#160; command&#160;cd &#160; &#160; else &#160; &#160; &#160; &#160; command&#160;cd &#34;$*&#34; &#160; &#160; fi&#160; &#160; &#160; if&#160;[ -f .todo ]; then &#160; &#160; &#160; &#160; todo &#160; &#160; fi&#160; } 另外如果你用 zsh 的话，可以把这段加入 ~/.zshrc #由网友vern提供，我没有测试过 cd()&#160;{ [...]]]></description>
			<content:encoded><![CDATA[<p>Devtodo是一个命令行todolist管理工具，相关介绍可以看<a href="http://linuxtoy.org">linuxtoy</a>的《<a href="http://linuxtoy.org/archives/dev-todo.html">Dev Todo: 从命令行管理待做事项清单</a>》。</p>
<p>在<a href="http://paoe.blogbus.com/">paoe</a>同学提醒下，ubuntu下可以直接apt-get install devtodo来安装，非常方便。如果你在用bash，那么下面这个函数可能对你会很有用。把它加到.bashrc文件中，每次cd进入目录的时候，如果该目录下有.todo文件就会把todolist打印出来。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">#此函数得到某大牛指点，在此表示感谢</span></li>
<li><span style="color: Blue;">cd</span><span style="color: Olive;">()</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">[[</span><span style="color: Gray;"> $</span><span style="color: #ffa500;"># == 0 ]]; then</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">command</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cd</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">command</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cd</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">$*</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">fi</span><span style="color: Gray;">&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">[</span><span style="color: Gray;"> -</span><span style="color: Blue;">f</span><span style="color: Gray;"> .</span><span style="color: Blue;">todo</span><span style="color: Gray;"> </span><span style="color: Olive;">]</span><span style="color: Gray;">; </span><span style="color: Blue;">then</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">todo</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">fi</span><span style="color: Gray;">&nbsp; </span></li>
<li><span style="color: Gray;">}</span></li></ol></div>
<p>另外如果你用 zsh 的话，可以把这段加入 ~/.zshrc</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">#由网友vern提供，我没有测试过</span></li>
<li><span style="color: Blue;">cd</span><span style="color: Olive;">()</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">builtin</span><span style="color: Gray;"> </span><span style="color: Blue;">cd</span><span style="color: Gray;"> “</span><span style="color: #00008b;">$@</span><span style="color: Gray;">”; </span><span style="color: Blue;">then</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">[</span><span style="color: Gray;"> -</span><span style="color: Blue;">f</span><span style="color: Gray;"> </span><span style="color: #8b0000;">`</span><span style="color: Red;">which devtodo</span><span style="color: #8b0000;">`</span><span style="color: Gray;"> </span><span style="color: Olive;">]</span><span style="color: Gray;">; </span><span style="color: Blue;">then</span><span style="color: Gray;"> </span><span style="color: Blue;">devtodo</span><span style="color: Gray;"> -</span><span style="color: Blue;">s</span><span style="color: Gray;">; </span><span style="color: Blue;">fi</span></li>
<li><span style="color: Blue;">fi</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>Devtodo的一大缺点就是不能在多个机器间同步，以我为例，每天都在开发机、工作机和笔记本之间切换，如果想使用Devtodo，当然最好考虑在多个机器上都能使用相同的、最新的一份todolist拷贝，而Devtodo默认是没有的，你得自己想解决方案。所以我想todolist软件跟线上服务集成才是更好的方向，其他很多类型的软件也一样，比如说笔记记录、日程安排等。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/539/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sed和awk的简单使用</title>
		<link>http://panweizeng.com/archives/522</link>
		<comments>http://panweizeng.com/archives/522#comments</comments>
		<pubDate>Sat, 21 Feb 2009 15:42:55 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=522</guid>
		<description><![CDATA[平时都用ubuntu，所以处理问题的时候经常都是想到linux下提供的程序。sed和awk是其中两个很强大的工具，用它们来作查找和替换非常方便。 以下是我最近使用过的几个实际例子 #使用脚本中的$VERSION变量替换{VERSION}字串，注意这里得使用双引号 sed -i&#160;&#34;s/{VERSION}/$VERSION/g&#34; $UPDATE_FILE #去掉含有updateKey的行 sed -i&#160;&#34;s/.*updateKey.*//&#34; install.rdf #替换含有js/core.js?v=1234为&#60;?php HtmlHelper::getJS('1'); ?&#62; #这里正则中的.不用转义，但是(、)、+都需要转 #后面引用前面正则的子匹配使用1、2、…… sed -i&#160;&#34;s/.*js/(w+).js?v=.*/&#60;?php HtmlHelper::getJS('1'); ?&#62;/g&#34; * &#160; #获得$XPIFILE文件的hash HASH=`sha1sum $XPIFILE &#124;awk '{print $1}'` #从&#60;em:version&#62;0.1.3&#60;/em:version&#62;中获得当前版本号 VERSION=`awk '/(&#60;em:version&#62;([^&#60;]*)&#60;/em:version&#62;)/' install.rdf &#124;awk -F '&#62;' '{print $2}'&#124;awk -F '&#60;' '{print $1}'` 批量替换以后，如果你使用svn，还可以配合vim来复查替换的结果。我常用的做法是 xp@xp-notebook:www$ svn di &#62; ~/diff xp@xp-notebook:www$ vim ~/diff 这样可以获得vim的语法高亮，如果能再配合mark插件，那就非常完美了。 以前在windows中经常使用dreamweaver来作查找替换，但是和linux的工具（grep/sed/awk）相比，速度和效率上就差了很多。 更新几个例子 1.找到并删除匹配的行 #这里找到含有google统计脚本的行并删掉。/&#60;script src=&#34;.*urchin.js&#34;.*&#62;$/是匹配的正则表达式，d是执行的命令。 [...]]]></description>
			<content:encoded><![CDATA[<p>平时都用ubuntu，所以处理问题的时候经常都是想到linux下提供的程序。sed和awk是其中两个很强大的工具，用它们来作查找和替换非常方便。</p>
<p>以下是我最近使用过的几个实际例子</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">#使用脚本中的$VERSION变量替换{VERSION}字串，注意这里得使用双引号</span></li>
<li><span style="color: Blue;">sed</span><span style="color: Gray;"> -</span><span style="color: Blue;">i</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s/{VERSION}/</span><span style="color: #00008b;">$VERSION</span><span style="color: Red;">/g</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">$UPDATE_FILE</span></li>
<li><span style="color: #ffa500;">#去掉含有updateKey的行</span></li>
<li><span style="color: Blue;">sed</span><span style="color: Gray;"> -</span><span style="color: Blue;">i</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s/.*updateKey.*//</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Blue;">install</span><span style="color: Gray;">.</span><span style="color: Blue;">rdf</span></li>
<li><span style="color: #ffa500;">#替换含有js/core.js?v=1234为&lt;?php HtmlHelper::getJS('1'); ?&gt;</span></li>
<li><span style="color: #ffa500;">#这里正则中的.不用转义，但是(、)、+都需要转</span></li>
<li><span style="color: #ffa500;">#后面引用前面正则的子匹配使用1、2、……</span></li>
<li><span style="color: Blue;">sed</span><span style="color: Gray;"> -</span><span style="color: Blue;">i</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s/.*js/(w+).js?v=.*/&lt;?php HtmlHelper::getJS('1'); ?&gt;/g</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> * </span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">#获得$XPIFILE文件的hash</span></li>
<li><span style="color: Blue;">HASH</span><span style="color: Gray;">=</span><span style="color: #8b0000;">`</span><span style="color: Red;">sha1sum </span><span style="color: #00008b;">$XPIFILE</span><span style="color: Red;"> |awk '{print </span><span style="color: #00008b;">$1</span><span style="color: Red;">}'</span><span style="color: #8b0000;">`</span></li>
<li><span style="color: #ffa500;">#从&lt;em:version&gt;0.1.3&lt;/em:version&gt;中获得当前版本号</span></li>
<li><span style="color: Blue;">VERSION</span><span style="color: Gray;">=</span><span style="color: #8b0000;">`</span><span style="color: Red;">awk '/(&lt;em:version&gt;([^&lt;]*)&lt;/em:version&gt;)/' install.rdf |awk -F '&gt;' '{print </span><span style="color: #00008b;">$2</span><span style="color: Red;">}'|awk -F '&lt;' '{print </span><span style="color: #00008b;">$1</span><span style="color: Red;">}'</span><span style="color: #8b0000;">`</span></li></ol></div>
<p>批量替换以后，如果你使用svn，还可以配合vim来复查替换的结果。我常用的做法是</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">xp@xp-notebook:www$ svn di &gt; ~/diff</li>
<li>xp@xp-notebook:www$ vim ~/diff</li></ol></div>
<p>这样可以获得vim的语法高亮，如果能再配合<a href="http://www.vim.org/scripts/script.php?script_id=1238">mark插件</a>，那就非常完美了。</p>
<p>以前在windows中经常使用dreamweaver来作查找替换，但是和linux的工具（grep/sed/awk）相比，速度和效率上就差了很多。</p>
<p>更新几个例子<br />
1.找到并删除匹配的行</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#这里找到含有google统计脚本的行并删掉。/&lt;script src=&quot;.*urchin.js&quot;.*&gt;$/是匹配的正则表达式，d是执行的命令。</li>
<li>sed -i '/&lt;script src=&quot;.*urchin.js&quot;.*&gt;$/d' filename</li></ol></div>
<p>2.删除找到匹配行的下一行</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#删除包含页脚后面的&lt;/div&gt;。这里的n表示往下读下一行。</li>
<li>sed -i &quot;/&lt;?php include_once( 'footer.php' ); ?&gt;/{ n; /&lt;/div&gt;$/d;}&quot; filename</li></ol></div>
<p>3.多行匹配和引号转义</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#找到header区块并替换为&lt;?php include_once( 'header.php' ); ?&gt;。</li>
<li>#:begin 是设定一个begin标记，每个分号代表一个语句结束</li>
<li>#/&lt;div id=&quot;header&quot;&gt;/,/&lt;/div&gt;$/&nbsp; &nbsp; reg1,reg2&nbsp; 两个正则表达式限定查找的范围，大括号内为执行的命令。</li>
<li># /&lt;/div&gt;$/! 非最后匹配行，$!表示非文件最后一行， N表示追加下一行到缓冲区，b begin是跳到begin开始，如此循环直到header区块都在缓冲区。</li>
<li>#然后执行s/&lt;div id=&quot;header&quot;&gt;.*logo.*&lt;/div&gt;/&lt;?php include_once( 'header.php' ); ?&gt;/; 替换</li>
<li>sed -i &quot;:begin; /&lt;div id=&quot;header&quot;&gt;/,/&lt;/div&gt;$/ { /&lt;/div&gt;$/! { $! { N; b begin }; }; s/&lt;div id=&quot;header&quot;&gt;.*logo.*&lt;/div&gt;/&lt;?php include_once( 'header.php' ); ?&gt;/;&nbsp; &nbsp; &nbsp;};&quot; filename</li></ol></div>
<p>4.awk切分field时括号的转义<br />
在centos中默认的awk是gawk，而在ubuntu中默认是mawk，可以使用awk &#8211;version 或者 awk -W version查看使用什么版本的awk。<br />
使用mawk直接用\(转义即可，在gawk中使用\\(转义而且是单引号。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">#以下例子是查找abc.css中所有的背景图片(去掉重复的)</li>
<li># 只对mawk有效</li>
<li>grep 'url(\.\.' abc.css |awk -F'url\(' '{print $2}'|awk -F&quot;)&quot; '{print $1}'|sort -u</li>
<li>grep 'url(\.\.' abc.css |awk -F&quot;url\(&quot; '{print $2}'|awk -F&quot;)&quot; '{print $1}'|sort -u</li>
<li># mawk和gawk都ok</li>
<li>grep 'url(\.\.' abc.css |awk -F'url\\(' '{print $2}'|awk -F&quot;)&quot; '{print $1}'|sort -u</li></ol></div>
<p>参考<br />
<a href="http://www.fwolf.com/blog/post/346">用sed替换跨行内容</a><br />
<a href="http://www.bsdmap.com/tag/sed/">关于sed的小发现</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/522/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox插件开发</title>
		<link>http://panweizeng.com/archives/511</link>
		<comments>http://panweizeng.com/archives/511#comments</comments>
		<pubDate>Thu, 19 Feb 2009 14:57:22 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=511</guid>
		<description><![CDATA[今晚技术部交流主题，由于没有写helloworld，所以效果不是很好。Mozilla上面的例程很好，感兴趣可以看一看。 全屏地址（需要google帐号登录）：http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt]]></description>
			<content:encoded><![CDATA[<p>今晚技术部交流主题，由于没有写helloworld，所以效果不是很好。Mozilla上面的<a href="https://developer.mozilla.org/en/Building_an_Extension">例程</a>很好，感兴趣可以看一看。</p>
<p>全屏地址（需要google帐号登录）：<a href="http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt">http://docs.google.com/Present?docid=ajj2j7mmgmtw_457jzbp2gt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/511/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>YUI实现的Tab切换</title>
		<link>http://panweizeng.com/archives/489</link>
		<comments>http://panweizeng.com/archives/489#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:19:20 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=489</guid>
		<description><![CDATA[YUI自带了一个TabView，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。 以前大树写过一个TabControl的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问测试页面查看效果，完整javascript代码在这里。 注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。 1：使用 以下是常用的html结构，但不限于此。 &#60;ul id=&#34;t&#34;&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t1&#34;&#62;t1&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t2&#34;&#62;t2&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t3&#34;&#62;t3&#60;/li&#62; &#60;/ul&#62; &#60;div&#160;id=&#34;s&#34;&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s1&#34;&#62;s1&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s2&#34;&#62;s2&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s3&#34;&#62;s3&#60;/div&#62; &#60;/div&#62; 对应的javascript代码如下，四种初始化方法都是可以的。 var tab = new Tab($D.get('t').getElementsByTagName('li'), $D.get('s').getElementsByTagName('div'));//1 var&#160;tab = new Tab(['t1','t2', 't3'],['s1','s2', 's3']);//2 var&#160;tab = [...]]]></description>
			<content:encoded><![CDATA[<p>YUI自带了一个<a href="http://developeryahoo.com/yui/tabview/">TabView</a>，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。</p>
<p>以前<a href="http://www.bigtreexu.com">大树</a>写过一个<a href="http://panweizeng.com/images/javascript/TabControl.1.0.U.js">TabControl</a>的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问<a href="http://panweizeng.com/images/javascript/tab-test.html">测试页面</a>查看效果，完整javascript代码在<a href="http://panweizeng.com/images/javascript/tab.js">这里</a>。</p>
<p>注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。</p>
<p>1：使用<br />
以下是常用的html结构，但不限于此。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">ul</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">ul</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>对应的javascript代码如下，四种初始化方法都是可以的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">li</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">, $</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">s</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">div</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//1</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//2</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">triggerEvent</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Blue;">slideEnabled</span><span style="color: Gray;">:</span><span style="color: Green;">true</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//3</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//4</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">triggerEvent</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">slideEnabled</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">onShow</span><span style="color: Gray;">.</span><span style="color: Blue;">subscribe</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">t</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">){</span><span style="color: Gray;"> ... </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2：扩展<br />
已经实现自动切换功能(默认关闭)，另外可以通过onShow自定义事件扩展，也可以在原代码基础上添加更多的自定义事件。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/489/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Bespin: 开放式web开发平台</title>
		<link>http://panweizeng.com/archives/472</link>
		<comments>http://panweizeng.com/archives/472#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:31:24 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[bespin]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=472</guid>
		<description><![CDATA[Bespin是Mozilla Labs中推出的一个开放、可扩展的web-based框架，旨在提高开发者生产力和用户体验，并促进开放标准的推广。框架中的代码编辑工具里面采用了HTML5的相关技术。同时，Mozilla的团队还释出一个实验性的原型版本，里面演示了Bespin的若干特性。 Bespin特点将会是简单易用、实时协作、集成命令行工具（是的，和vi/emacs一样）、可扩展和本地部署、快速编辑和随时随地接入。将来还可以直接导入代码库到项目中。 Bespin真正的目标是什么呢？会是基于web的加强版Dreamweaver吗？]]></description>
			<content:encoded><![CDATA[<p><a href="https://bespin.mozilla.com/"><img src="http://panweizeng.com/images/article/mozilla-bespin-logo.gif" alt="bespin" class="title" /></a><a href="http://labs.mozilla.com/2009/02/introducing-bespin/">Bespin</a>是Mozilla Labs中推出的一个开放、可扩展的web-based框架，旨在提高开发者生产力和用户体验，并促进开放标准的推广。框架中的代码编辑工具里面采用了HTML5的相关技术。同时，Mozilla的团队还释出一个<a href="https://bespin.mozilla.com/">实验性的原型版本</a>，里面演示了Bespin的若干特性。</p>
<p>Bespin特点将会是简单易用、实时协作、集成命令行工具（是的，和vi/emacs一样）、可扩展和本地部署、快速编辑和随时随地接入。将来还可以直接导入代码库到项目中。</p>
<p>Bespin真正的目标是什么呢？会是基于web的加强版Dreamweaver吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/472/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
