<?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>joolix.com</title>
	<atom:link href="http://joolix.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://joolix.com</link>
	<description>Joolix, linux everywhere!</description>
	<lastBuildDate>Thu, 04 Mar 2010 05:17:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>linux 下恢复 U 盘下被删除文件</title>
		<link>http://joolix.com/2010/03/recover-deleted-files-in-u-disk-under-linux/</link>
		<comments>http://joolix.com/2010/03/recover-deleted-files-in-u-disk-under-linux/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 03:28:18 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=361</guid>
		<description><![CDATA[我一老师的手机 sd 卡上的照片被不幸删除了，问有没有方法恢复。我找到一个叫 testdisk 的工具，成功将这些照片恢复过来，立此存照兼备忘。
安装：
sudo pacman -S testdisk
使用：
<span class="readmore"><a href="http://joolix.com/2010/03/recover-deleted-files-in-u-disk-under-linux/" title="linux 下恢复 U 盘下被删除文件" target="_blank">阅读全文——共118字</a></span>]]></description>
			<content:encoded><![CDATA[<p>我一老师的手机 sd 卡上的照片被不幸删除了，问有没有方法恢复。我找到一个叫 testdisk 的工具，成功将这些照片恢复过来，立此存照兼备忘。</p>
<p>安装：<br />
sudo pacman -S testdisk<br />
使用：<br />
sudo testdiak<br />
接下来按照图片直播搞定：</p>
<p><img src="http://farm5.static.flickr.com/4024/4405644492_f0408bac70.jpg" width="500" height="366" alt="testdisk1" /></p>
<p><img src="http://farm5.static.flickr.com/4057/4405644608_6073e64349.jpg" width="500" height="366" alt="testdisk2" /></p>
<p><img src="http://farm3.static.flickr.com/2683/4404882269_9329dde4a7.jpg" width="500" height="366" alt="testdisk3" /></p>
<p><img src="http://farm5.static.flickr.com/4043/4405644878_ef53698298.jpg" width="500" height="366" alt="testdisk4" /></p>
<p><img src="http://farm5.static.flickr.com/4034/4405644958_021295b543.jpg" width="500" height="366" alt="testdisk5" /></p>
<p><img src="http://farm5.static.flickr.com/4069/4404882547_343bcda83c.jpg" width="500" height="366" alt="testdisk6" /></p>
<p><img src="http://farm5.static.flickr.com/4062/4404882671_fa4cfd8f7a.jpg" width="500" height="366" alt="testdisk7" /></p>
<p><img src="http://farm5.static.flickr.com/4002/4404885335_d3bf1a1909.jpg" width="500" height="366" alt="testdisk8" /></p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/03/recover-deleted-files-in-u-disk-under-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>贡献火星汉字几枚</title>
		<link>http://joolix.com/2010/02/mars-characters/</link>
		<comments>http://joolix.com/2010/02/mars-characters/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 04:46:02 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[picture]]></category>

		<guid isPermaLink="false">http://joolix.com/2010/02/%e8%b4%a1%e7%8c%ae%e7%81%ab%e6%98%9f%e6%b1%89%e5%ad%97%e5%87%a0%e6%9e%9a/</guid>
		<description><![CDATA[RT
屁民们纷纷将汉字向火星接轨，作为不明真相群众中的一员，我感到压力很大，于是发扬赶英超美，不甘人后的精神，制作鸟火星汉字几枚，请各位明白真相的 ggjj 鉴定：
]]></description>
			<content:encoded><![CDATA[<p>RT<br />
屁民们纷纷将汉字向火星接轨，作为不明真相群众中的一员，我感到压力很大，于是发扬赶英超美，不甘人后的精神，制作鸟火星汉字几枚，请各位明白真相的 ggjj 鉴定：</p>
<p><img src="http://farm5.static.flickr.com/4052/4339919972_72034ca7a6_o.jpg" /></p>
<p><img src="http://farm5.static.flickr.com/4023/4339978702_82377180c0_o.jpg" /></p>
<p><img src="http://farm5.static.flickr.com/4055/4339234301_6efdb5410b_o.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/02/mars-characters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crubism</title>
		<link>http://joolix.com/2010/02/crubism/</link>
		<comments>http://joolix.com/2010/02/crubism/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:53:10 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[picture]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=355</guid>
		<description><![CDATA[RT
from http://beautiful.img.ly/
]]></description>
			<content:encoded><![CDATA[<p>RT<br />
from <a href="http://beautiful.img.ly/">http://beautiful.img.ly/</a><br />
<img src="http://beautiful.img.ly/system/uploads/000/106/197/original_phpRNiOjz."></img></p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/02/crubism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archlinux 下 ICC+MKL 方案编译 GAMESS</title>
		<link>http://joolix.com/2010/01/compile-gamess-with-icc-and-mkl-under-archlinux/</link>
		<comments>http://joolix.com/2010/01/compile-gamess-with-icc-and-mkl-under-archlinux/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 18:05:53 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Chemistry]]></category>
		<category><![CDATA[essay]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=346</guid>
		<description><![CDATA[点此下载效果更好的 pdf 版本
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Archlinux 下 ICC+MKL 方案编译安装 GAMESS
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;作者: xiooli
<span class="readmore"><a href="http://joolix.com/2010/01/compile-gamess-with-icc-and-mkl-under-archlinux/" title="Archlinux 下 ICC+MKL 方案编译 GAMESS" target="_blank">阅读全文——共9444字</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://joolix.com/wp-content/uploads/2010/01/compile_gamess_in_arch.pdf">点此</a>下载效果更好的 pdf 版本</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Archlinux 下 ICC+MKL 方案编译安装 GAMESS<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作者: xiooli<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;邮箱: <font color="#0000ff"><b>&lt;</b></font>xioooli<font color="#0000ff"><b>[</b></font>at<font color="#0000ff"><b>]</b></font>yahoo.com.cn<font color="#0000ff"><b>&gt;</b></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;网站: <a href="http://joolix.com">http://joolix.com</a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;此文系根据自己实际操作写就，其中查考了 Sobereva 和王涛的文章 <font color="#cd00cd">(</font><font color="#ff1493">见参考文献</font><font color="#cd00cd">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;在此表示感谢。<br />
&nbsp;&nbsp;&nbsp;&nbsp;本文依据 CC 协议发布，在保留原作品的署名的情况下你可以自由转载或修改再发布<br />
&nbsp;&nbsp;&nbsp;&nbsp;（仅限非商业用途）</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;正文&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
一，机器配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;型号: lenove ThinkCenter M8000t<br />
&nbsp;&nbsp;&nbsp;&nbsp;主板: Intel Q45<br />
&nbsp;&nbsp;&nbsp;&nbsp;CPU:&nbsp;&nbsp;&nbsp;&nbsp;Intel<font color="#cd00cd">(</font><font color="#ff1493">R</font><font color="#cd00cd">)</font>&nbsp;Core<font color="#cd00cd">(</font><font color="#ff1493">TM</font><font color="#cd00cd">)</font><font color="#00cd00">2</font>&nbsp;Quad CPU Q9550 @ <font color="#00cd00">2</font>.83GHz <font color="#cd00cd">(</font><font color="#ff1493">四核</font><font color="#cd00cd">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;内存: DDR3 1066MHz 2G X <font color="#00cd00">2</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;硬盘：&nbsp;&nbsp; SATA 500G 7200RPM</p>
<p>二，系统及编译环境<br />
&nbsp;&nbsp;&nbsp;&nbsp;系统: Archlinux x86_64<br />
&nbsp;&nbsp;&nbsp;&nbsp;内核: <font color="#00cd00">2</font>.<font color="#00cd00">6</font>.<font color="#00cd00">32</font>-ARCH<br />
&nbsp;&nbsp;&nbsp;&nbsp;SHELL:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bash:&nbsp;&nbsp; version <font color="#00cd00">4</font>.<font color="#00cd00">0</font>.<font color="#00cd00">35</font><font color="#cd00cd">(</font><font color="#00cd00">2</font><font color="#cd00cd">)</font>-release<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是用户的默认登录 shell，编译操作基本上都是在 bash 里面完成的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csh:&nbsp;&nbsp;&nbsp;&nbsp;tcsh <font color="#00cd00">6</font>.<font color="#00cd00">17</font>.<font color="#00cd00">00</font>&nbsp;<font color="#cd00cd">(</font><font color="#ff1493">Astron</font><font color="#cd00cd">)</font>&nbsp;<font color="#00cd00">2009-07-10</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因 gamess 的很多脚本是用 csh 写成，故而需要安装 csh <font color="#cd00cd">(</font><font color="#ff1493">包名是 tcsh</font><font color="#cd00cd">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;C 编译器:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GCC:&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00cd00">4</font>.<font color="#00cd00">4</font>.<font color="#00cd00">2</font>&nbsp;<font color="#00cd00">20091208</font>&nbsp;<font color="#cd00cd">(</font><font color="#ff1493">prerelease</font><font color="#cd00cd">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GCC 是默认的编译器，可以从你发行版的软件源里面安装<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICC:&nbsp;&nbsp;&nbsp;&nbsp;Version <font color="#00cd00">11</font>.<font color="#00cd00">1</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intel 的 CPU 用 ICC 可以优化执行性能，其他 CPU 的同学可以不必使用 ICC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;需要去 intel 的官网下载安装，个人和非商业使用只需注册一下，免费使用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置开始&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICC 一般是安装到 /opt 里面去的，系统并不能直接找到其可执行文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以需要将其 bin 目录加到 PATH 环境变量里面去<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以我为例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 /opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">1</font>/<font color="#00cd00">056</font>/bin/ 下面有两个文件一个目录（依系统位数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的不同，目录的名字可能不一样）: intel64/, iccvars.csh 和 iccvars.sh，你<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;需要在 /etc/profile.d/ 下面建立一个脚本，比如 iccvars.sh 其内容如下:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000">#!/bin/bash</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source /opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">1</font>/<font color="#00cd00">056</font>/bin/iccvars.sh intel64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后的那个参数 intel64 依你的系统不同而不同，应该和你在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">1</font>/<font color="#00cd00">056</font>/bin/ 中看的的目录名字相同，然后赋可执行权限:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo chmod a+x /etc/profile.d/iccvars.sh</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意，这样只会在重启后生效，若要当时生效，须执行一下：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>&nbsp;&nbsp;. </b></font>/etc/profile.d/iccvars.sh 或 source /etc/profile.d/iccvars.sh</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此外，为了让程序（这里是 icc 等）找到它们所依赖的库，须得将 icc 的 lib<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;路径加入到 /etc/ld.so.conf 里面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以我为例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 /etc/ld.so.conf 里面加上一行：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">1</font>/<font color="#00cd00">056</font>/lib/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后以 root 权限运行 ldconfig<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICC 的设置到此结束<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置结束&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;FORTRAN 编译器:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFORT:&nbsp;&nbsp;Version <font color="#00cd00">11</font>.<font color="#00cd00">0</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个也是 intel 的编译器，同样需要去其官方注册下载，个人版也是免费的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当然你也可以使用 g95 等开源的 FORTRAN 编译器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置开始&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFORT 同样也是安装到 /opt 里面去的，所以也需要将其 bin 目录加到 PATH<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;环境变量里面去<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以我为例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 /opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">0</font>/<font color="#00cd00">074</font>/bin/ 下面有两个文件一个目录（依系统位数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的不同，目录的名字可能不一样）: intel64/, ifortvars.csh 和 ifortvars.sh<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你亦需要在 /etc/profile.d/ 下面建立一个脚本，比如 ifortvars.sh 其内容如下:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000">#!/bin/bash</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source /opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">0</font>/<font color="#00cd00">074</font>/bin/ifortvars.sh intel64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后的那个参数 intel64 依你的系统不同而不同，应该和你在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">0</font>/<font color="#00cd00">074</font>/bin/ 中看的的目录名字相同，然后赋可执行权限:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo chmod a+x /etc/profile.d/ifortvars.sh</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意，这样只会在重启后生效，若要当时生效，须执行一下：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>&nbsp;&nbsp;. </b></font>/etc/profile.d/ifortvars.sh 或 source /etc/profile.d/ifortvars.sh</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此外，为了让程序（这里是 icc 等）找到它们所依赖的库，须得将 ifort 的 lib<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;路径加入到 /etc/ld.so.conf 里面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以我为例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 /etc/ld.so.conf 里面加上一行：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/intel/Compiler/<font color="#00cd00">11</font>.<font color="#00cd00">0</font>/<font color="#00cd00">074</font>/lib/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后以 root 权限运行 ldconfig<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFORT 的设置到此结束<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置结束&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;数学库:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MKL: Version <font color="#00cd00">10</font>.<font color="#00cd00">2</font>.<font color="#00cd00">3</font>.<font color="#00cd00">029</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个是 intel 的数学核心函数库，据说使用ifort编译器结合MKL数学库可以使<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代码执行速度大大提升。当然你如果不使用 MKL 的话会默认使用 BLAS 这个库<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AMD CPU 的同学可以考虑使用 ACML 这个数学库。同样，MKL 也可以到 intel 的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;官网上面申请免费版本<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置开始&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MKL 的设置相对简单，因为其只是一些库，没有可执行文件，所以只需要将 MKL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;库的位置加到 ld.so.conf 里面即可<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 /etc/ld.so.conf 里面加上一行：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/opt/intel/mkl/<font color="#00cd00">10</font>.<font color="#00cd00">2</font>.<font color="#00cd00">3</font>.<font color="#00cd00">029</font>/lib/em64t/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-不含此线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后以 root 权限运行 ldconfig<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFORT 的设置到此结束<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-设置结束&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</font></p>
<p>三，具体操作过程<br />
&nbsp;&nbsp;&nbsp;&nbsp;在配置好了上面的编译环境以后便可以进行后续的编译过程了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;首先，当然是准备 gamess 的源码咯，去 gamess 的网站上面填写申请，一般一到两天后会<br />
&nbsp;&nbsp;&nbsp;&nbsp;批下来，然后会邮件通知你下载地址，用户名和密码，然后就去拖下来咯，压缩包的大小约<br />
&nbsp;&nbsp;&nbsp;&nbsp;10M 左右，我下载的版本是: GAMESS version January <font color="#00cd00">12</font>, <font color="#00cd00">2009</font>&nbsp;R3 <font color="#0000ff"><b>for </b></font><font color="#00cd00">64</font>&nbsp;bit<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>(</b></font>x86_64 compatible<font color="#0000ff"><b>)</b></font>&nbsp;under Linux with gnu compilers<br />
&nbsp;&nbsp;&nbsp;&nbsp;然后准备一个安装目录（我将其安放在 /home/gamess 里面），将压缩包解压到安装目录下面<br />
&nbsp;&nbsp;&nbsp;&nbsp;好了，可以看到几个可执行文件:<br />
&nbsp;&nbsp;&nbsp;&nbsp;compall, comp, lked, runall 和 rungms</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;修改脚本&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们接下来将编辑这几个文件以使其符合我们自己的实际情况<br />
&nbsp;&nbsp;&nbsp;&nbsp;以我为例:<br />
&nbsp;&nbsp;&nbsp;&nbsp;compall:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">16</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;TARGET</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">linux</font>-ia64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">17</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;/home/gamess</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">70</font>:&nbsp;&nbsp;<font color="#0000ff"><b>if </b></font>&nbsp;<font color="#0000ff"><b>(</b></font><font color="#cd00cd">$TARGET</font>&nbsp;<font color="#0000ff"><b>==</b></font>&nbsp;linux-ia64<font color="#0000ff"><b>)</b></font>&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;CCOMP</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">&#8216;icc&#8217;</font>&nbsp;<font color="#ee0000"># 没有 icc 的可以继续 gcc</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;comp:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">15</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;TARGET</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">linux</font>-ia64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">16</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;/home/gamess</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">109</font>: <font color="#0000ff"><b>if </b></font>&nbsp;<font color="#0000ff"><b>(</b></font><font color="#cd00cd">$TARGET</font>&nbsp;<font color="#0000ff"><b>==</b></font>&nbsp;linux-ia64<font color="#0000ff"><b>)</b></font>&nbsp;&nbsp; <font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;BLAS3</font><font color="#0000ff"><b>=</b></font>/opt/intel/mkl/<font color="#00cd00">10</font>.<font color="#00cd00">2</font>.<font color="#00cd00">3</font>.<font color="#00cd00">029</font>/lib/em64t/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 如果你没有安装 MKL 的话就不要动上面这行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 由于我选择的 TARGET=linux-ia64，在 line 1507 可以看到已经是默认用了 ifort 作为 FORTRAN</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 的编译器，如果你的 TARGET 是其他的而又想用 ifort 的话，可以去对应的地方 (即</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># if ($TARGET == xxx) then 下面将 FORTRAN 编译器改成 ifort)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;lked:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">18</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;TARGET</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">linux</font>-ia64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">19</font>: <font color="#0000ff"><b>chdir</b></font>&nbsp;/home/gamess<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">498</font>: <font color="#0000ff"><b>if </b></font><font color="#0000ff"><b>(</b></font><font color="#cd00cd">$TARGET</font>&nbsp;<font color="#0000ff"><b>==</b></font>&nbsp;linux-ia64<font color="#0000ff"><b>)</b></font>&nbsp;<font color="#0000ff"><b>then</b></font>&nbsp;<font color="#ee0000"># 若使用 MKL 则在下面添加一行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">499</font>:&nbsp;&nbsp;&nbsp;&nbsp; setenv MKLPATH /opt/intel/mkl/<font color="#00cd00">10</font>.<font color="#00cd00">2</font>.<font color="#00cd00">3</font>.<font color="#00cd00">029</font>/lib/em64t<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 看它的脚本理论上来说不添加这行也是可以找到 MKL 的，不过在我这里报错说</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 找不到 MKL 里面的某个 so，所以还是加上比较保险</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;rungms:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">60</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;SCR</font><font color="#0000ff"><b>=</b></font>/home/gamess/scr/<font color="#cd00cd">$USER</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 存放运算临时文件的地方，自己喜欢放哪里放哪里，如果你内存够大的话也可以放在</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># /dev/shm (实际是个在内存里面的目录)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将所有的 ~mike/gamess 换成你的 gamess 安装目录（我的是 /home/gamess）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#cd00cd">$USER</font>/scr 替换成 <font color="#cd00cd">$SCR</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以通过运行下面命令来一次性完成此工作：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sed <font color="#0000ff"><b>-i</b></font>&nbsp;<font color="#0000ff"><b>&#8216;</b></font><font color="#00cd00">s|~mike/gamess|/home/gamess|g;s|~$USER/scr|$SCR|g</font><font color="#0000ff"><b>&#8216;</b></font>&nbsp;./rungms</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你想使用 SMP 方式并行多核运算的话如果是双核机器则修改这里:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">497</font>: <font color="#0000ff"><b>case</b></font>&nbsp;br.msg.chem.iastate.edu: <font color="#ee0000"># 下面添加一行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line 498: case YOUR-SERVER-NAME: <font color="#ee0000"># YOUR-SERVER-NAME 是运行 hostname 出来的结果</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line 499:&nbsp;&nbsp; if <font color="#0000ff"><b>(</b></font><font color="#cd00cd">$NCPUS</font>&nbsp;&gt; 2<font color="#0000ff"><b>)</b></font>&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;NCPUS</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">2</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是四核机器则修改这里:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">490</font>: <font color="#0000ff"><b>case</b></font>&nbsp;sc.msg.chem.iastate.edu: <font color="#ee0000"># 下面添加一行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line 491:&nbsp;&nbsp; case YOUR-SERVER-NAME: <font color="#ee0000"># YOUR-SERVER-NAME 是运行 hostname 出来的结果</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line 492:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if <font color="#0000ff"><b>(</b></font><font color="#cd00cd">$NCPUS</font>&nbsp;&gt; 4<font color="#0000ff"><b>)</b></font>&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;NCPUS</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">4</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;runall:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">13</font>:&nbsp;&nbsp;<font color="#0000ff"><b>chdir</b></font>&nbsp;/home/gamess</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;编译 actvte&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&nbsp;&nbsp;&nbsp;&nbsp;下面我们要编译链接激活 gamess 代码的程序 actvte <font color="#0000ff"><b>(</b></font>下面命令均在终端下输入<font color="#0000ff"><b>)</b></font>:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>cd</b></font>&nbsp;/home/gamess/tools/<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 视你 gamess 源文件存放地点的不同而 cd 到不同的目录</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;cp actvte.code actvte.f<br />
&nbsp;&nbsp;&nbsp;&nbsp;sed -i <font color="#0000ff"><b>&#8216;</b></font><font color="#00cd00">s|^\*UNX|&nbsp;&nbsp;&nbsp;&nbsp;|g</font><font color="#0000ff"><b>&#8216;</b></font>&nbsp;actvte.f<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 把以 *UNX 的开头用四个空格替换掉，即取消注释，亮出 UNIX-LIKE 系统的激活代码</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;ifort -o actvte.x -Vaxlib actvte.f<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 或 g95 -o actvte.x actvte.f 如果你没有 ifort 的话</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 成功生成了 actvte.x 以后可以将 actvte.f 删除</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;开始编译&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&nbsp;&nbsp;&nbsp;&nbsp;然后便可以开始编译了，在终端运行:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>cd</b></font>&nbsp;/home/gamess<br />
&nbsp;&nbsp;&nbsp;&nbsp;./compall<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 如果你想看着它编译的话，或者让其在后台运行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;./compall <font color="#0000ff"><b>&amp;</b></font><font color="#0000ff"><b>&gt;</b></font>&nbsp;compall.log <font color="#0000ff"><b>&amp;</b></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 上面两条命令选一即可，无须都执行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 经过一段取决于你机器性能的时间后（我这里大约用了 20 分钟）主要编译便完成了</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;其后编译 gamess 的分布式数据接口 <font color="#0000ff"><b>(</b></font>DDI<font color="#0000ff"><b>)</b></font>&nbsp;消息传递库，无论是否打算并行计算都必须<br />
&nbsp;&nbsp;&nbsp;&nbsp;编译，否则下面 lked 步骤通不过。假设现在主机名是 YOUR-SERVER-NAME（用 hostname<br />
&nbsp;&nbsp;&nbsp;&nbsp;命令可以看到当前主机名），就在 /etc/hosts 里面填上一行当前主机的IP地址和主机名<br />
&nbsp;&nbsp;&nbsp;&nbsp;例如: <font color="#00cd00">192</font>.<font color="#00cd00">168</font>.<font color="#00cd00">153</font>.<font color="#00cd00">3</font>&nbsp;YOUR-SERVER-NAME <font color="#ee0000"># [参考文献 1]</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;命令:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;sudo su<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>echo</b></font><font color="#00cd00">&nbsp;</font><font color="#0000ff"><b>&quot;</b></font><font color="#00cd00">192.168.153.3 YOUR-SERVER-NAME</font><font color="#0000ff"><b>&quot;</b></font><font color="#00cd00">&nbsp;</font><font color="#0000ff"><b>&gt;&gt;</b></font>&nbsp;/etc/hosts</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;进入 /home/gamess/ddi 目录，修改 compddi<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;compddi:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">18</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;TARGET </font><font color="#0000ff"><b>=</b></font>&nbsp;linux-ia64<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">62</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;MAXCPUS&nbsp;&nbsp;</font><font color="#0000ff"><b>=</b></font>&nbsp;<font color="#00cd00">4</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">63</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;MAXNODES </font><font color="#0000ff"><b>=</b></font>&nbsp;<font color="#00cd00">2</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># set MAXCPUS 和 set MAXNODES 后面设成你的实际情况，前者代表每个节点中最多</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 包含几个核心（每个节点内可以以SMP方式并行的核心数目），后者代表最多有几个</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 节点，它们设的都可以比实际情况多 [参考文献 1]</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;修改 /home/gamess/ddi/src/std_system.c</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;std_system.c<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">26</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct hostent *hp<font color="#0000ff"><b>;</b></font>&nbsp;<font color="#ee0000"># 在其后插入一行</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">27</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name <font color="#0000ff"><b>=</b></font>&nbsp;<font color="#0000ff"><b>&quot;</b></font><font color="#00cd00">YOUR-SERVER-NAME</font><font color="#0000ff"><b>&quot;;</b></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 之所以要加入这么一行是因为GAMESS的bug，会将主机名强行认作为localhost而不是</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 实际主机名，导致运行时提示TCP error之类错误 [参考文献 1]</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;最后运行命令:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;./compddi<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv ddikick.x ..</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;最后编译图形应用程序</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>cd</b></font>&nbsp;/home/gamess/graphics<br />
&nbsp;&nbsp;&nbsp;&nbsp;编辑 complink 文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;complink:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">15</font>:&nbsp;&nbsp;<font color="#0000ff"><b>chdir</b></font>&nbsp;/home/gamess/graphics<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">18</font>:&nbsp;&nbsp;<font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;TARGET</font><font color="#0000ff"><b>=</b></font>linux-pc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">31</font>:&nbsp;&nbsp;<font color="#0000ff"><b>if </b></font><font color="#0000ff"><b>(</b></font><font color="#cd00cd">$TARGET</font>&nbsp;<font color="#0000ff"><b>==</b></font>&nbsp;linux-pc<font color="#0000ff"><b>)</b></font>&nbsp;&nbsp; <font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;FORT</font><font color="#0000ff"><b>=</b></font><font color="#00cd00">&#8216;ifort -O2&#8242;</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;之后运行./complink来编译</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;链接程序&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&nbsp;&nbsp;&nbsp;&nbsp;链接可执行文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;命令：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>cd</b></font>&nbsp;/home/gamess<br />
&nbsp;&nbsp;&nbsp;&nbsp;./lked gamess <font color="#0000ff"><b>&amp;</b></font><font color="#0000ff"><b>&gt;</b></font>&nbsp;lked.log</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;如果不出问题的话最终会在当前目录下生成一个 gamess.<font color="#00cd00">00</font>.x 这样的可执行文件，至此我们的<br />
&nbsp;&nbsp;&nbsp;&nbsp;编辑工作就全部完成了，下面就是测试环节，在 /home/gamess 目录下运行 ./runall 将会对<br />
&nbsp;&nbsp;&nbsp;&nbsp;编译好的GAMESS程序进行测试，自动运行<font color="#00cd00">44</font>个测试文件，将在当前目录下得到一批 exam??.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;文件。修改 /home/gamess/tools/checktst 目录下的 checktst 文件:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;checktst:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line <font color="#00cd00">9</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff"><b>set</b></font><font color="#008b8b">&nbsp;GMSPATH</font><font color="#0000ff"><b>=</b></font>/home/gamess<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;然后运行此文件，出现提示时输入 /home/gamess，会将所得log文件的结果与标准结果相对比<br />
&nbsp;&nbsp;&nbsp;&nbsp;检查任务是否已正常结束，以及计算误差是否超过阈值。对于failed的任务，检查相应的log文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;除掉毛病后，把 scr 目录下对应文件删掉，若要单独运行一个测试比如 exam42 可以使用命令:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff"><b>cd</b></font>&nbsp;/home/gamess<br />
&nbsp;&nbsp;&nbsp;&nbsp;./rungms exam42 <font color="#00cd00">00</font>&nbsp;<font color="#00cd00">4</font>&nbsp;<font color="#0000ff"><b>&amp;</b></font><font color="#0000ff"><b>&gt;</b></font>exam42.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># rungms 的参数意义为: JOB=$1 (输入文件 xxx.inp，可以不输入扩展名); VERNO=$2 (lked</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ee0000"># 一步的 revision 数字，默认 00); NCPUS=$3 (运行时调用的 CPU 核心数)</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;待完成后再 checktst 看是否都已通过。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;一般情况下 exam42 和 exam43 会由于 linux 默认的单个共享内存段的最大值太小而不能通过<br />
&nbsp;&nbsp;&nbsp;&nbsp;使用 /sbin/sysctl <font color="#0000ff"><b>-a</b></font>&nbsp;<font color="#0000ff"><b>|</b></font>&nbsp;grep shmmax 命令察看默认值，这两个任务需要约 48MB，修改<br />
&nbsp;&nbsp;&nbsp;&nbsp;/etc/sysctl.conf，在里面加入一行 kernel.shmmax <font color="#0000ff"><b>=</b></font>&nbsp;<font color="#00cd00">5000000000</font>&nbsp;将其增加到约 500MB<br />
&nbsp;&nbsp;&nbsp;&nbsp;可以使用命令 /sbin/sysctl <font color="#0000ff"><b>-w</b></font>&nbsp;<font color="#008b8b">kernel.shmmax</font>=<font color="#00cd00">5000000000</font>&nbsp;来使其立即生效</p>
<p>参考文献:<br />
&nbsp;&nbsp;&nbsp;&nbsp;参考文献 <font color="#00cd00">1</font>: <a href="http://hi.baidu.com/sobereva/blog/item/fff7b5fd1e8dd04fd6887db6.html">http://hi.baidu.com/sobereva/blog/item/fff7b5fd1e8dd04fd6887db6.html</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;参考文献 <font color="#00cd00">2</font>: 王涛, 量子化学计算程序包GAMESS, 科学计算应用软件系列介绍<br />
</font></p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/01/compile-gamess-with-icc-and-mkl-under-archlinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>短信通知服务器运行状态</title>
		<link>http://joolix.com/2010/01/short-message-tell-the-server-status/</link>
		<comments>http://joolix.com/2010/01/short-message-tell-the-server-status/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 14:20:01 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Script]]></category>
		<category><![CDATA[command]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=344</guid>
		<description><![CDATA[最近组上买了一台联想的 thinkcenter M8000t 做服务器，俺只好义不容辞的做管理员了（其实是我怂恿老板掏钱买滴，嘿嘿）， 随时了解机器的运行状态是很重要的，当在有联网电脑的地方时还好说，但是如果你在外面而又想了解其运行状态的话就不好办咯。当然如果你的手机也能 ssh 的话就当俺没说（我可没那么高级的手机），手机虽然是次点，不过好歹能收短信吧，主意来了： 用短信收取服务器的运行状态。
说到用短信收机器信息，可能很多童鞋会想到用飞信，但是由于我前些时候写了个短信控制电脑的半成品，就不再用飞信了，我可不想做重复的工作。我就查有没有能短信通知的邮箱呢？还真有，这不，移动居然可以把手机号当成其139邮箱的用户名，而且支持邮件到达短信通知，赶紧给开通了。万事具备，开工。
<span class="readmore"><a href="http://joolix.com/2010/01/short-message-tell-the-server-status/" title="短信通知服务器运行状态" target="_blank">阅读全文——共1072字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近组上买了一台联想的 thinkcenter M8000t 做服务器，俺只好义不容辞的做管理员了（其实是我怂恿老板掏钱买滴，嘿嘿）， 随时了解机器的运行状态是很重要的，当在有联网电脑的地方时还好说，但是如果你在外面而又想了解其运行状态的话就不好办咯。当然如果你的手机也能 ssh 的话就当俺没说（我可没那么高级的手机），手机虽然是次点，不过好歹能收短信吧，主意来了： 用短信收取服务器的运行状态。</p>
<p>说到用短信收机器信息，可能很多童鞋会想到用飞信，但是由于我前些时候写了个短信控制电脑的半成品，就不再用飞信了，我可不想做重复的工作。我就查有没有能短信通知的邮箱呢？还真有，这不，移动居然可以把手机号当成其139邮箱的用户名，而且支持邮件到达短信通知，赶紧给开通了。万事具备，开工。</p>
<p>我想知道的服务器信息包括 cpu 温度， 硬盘温度， 网络速度， 负载等， 其中 cpu 温度可以用 lm_sensors 来监控， 硬盘温度用 hddtemp 来监控，网络总流量可以用 cat /proc/net/dev 获取，除以时间间隔就可以得到速度，而负载就简单的一个 uptime 命令即可。</p>
<p>操作：</p>
<p>首先装上 lm_sensors 和 hddtemp， 然后启动两个服务 （arch下在这里： /etc/rc.d/sensors 和 /etc/rc.d/hddtemp） 只有启动了这两个服务才可以随时获取其提供的信息。hddtemp 提供了网络接口，可以用 netcat 查询 7634 端口获得硬盘信息，下面我写了个小 bash 脚本来集中获取所需信息，代码如下：</p>
<p>server_stat.sh</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Name:     server_stat.sh</span>
<span style="color: #666666; font-style: italic;"># Author:   xiooli &lt;xioooli[at]yahoo.com.cn&gt;</span>
<span style="color: #666666; font-style: italic;"># Site:     http://joolix.com</span>
<span style="color: #666666; font-style: italic;"># Licence:  GPLv3</span>
<span style="color: #666666; font-style: italic;"># Version:  100113</span>
&nbsp;
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">stat</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
	sensors | <span style="color: #c20cb9; font-weight: bold;">grep</span> Core | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1, $2, $3}'</span> | <span style="color: #c20cb9; font-weight: bold;">tr</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">'+'</span>
	netcat localhost <span style="color: #000000;">7634</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #660033;">-F</span><span style="color: #ff0000;">'|'</span> <span style="color: #ff0000;">'{print $2&quot;:&quot;$4&quot; 度&quot;}'</span>
	<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>net-stat <span style="color: #7a0874; font-weight: bold;">&#93;</span> || :<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>net-stat
	<span style="color: #007800;">net_last</span>=<span style="color: #ff0000;">&quot;$(cat /tmp/net-stat)&quot;</span>
	<span style="color: #007800;">net_crt</span>=<span style="color: #ff0000;">&quot;$(cat /proc/net/dev | grep eth0 | awk -F&quot;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>: <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #ff0000;">&quot; '{print $4,$6}')&quot;</span>
	<span style="color: #007800;">crt_time</span>=<span style="color: #ff0000;">&quot;$(date +%s)&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$net_crt $crt_time&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>net-stat
	<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$net_last&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
		<span style="color: #007800;">last_in</span>=<span style="color: #ff0000;">&quot;$(awk '{print $1}' &lt;&lt;&lt; &quot;</span><span style="color: #007800;">$net_last</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">last_out</span>=<span style="color: #ff0000;">&quot;$(awk '{print $2}' &lt;&lt;&lt; &quot;</span><span style="color: #007800;">$net_last</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">last_time</span>=<span style="color: #ff0000;">&quot;$(awk '{print $3}' &lt;&lt;&lt; &quot;</span><span style="color: #007800;">$net_last</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">crt_in</span>=<span style="color: #ff0000;">&quot;$(awk '{print $1}' &lt;&lt;&lt; &quot;</span><span style="color: #007800;">$net_crt</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">crt_out</span>=<span style="color: #ff0000;">&quot;$(awk '{print $2}' &lt;&lt;&lt; &quot;</span><span style="color: #007800;">$net_crt</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">gap</span>=<span style="color: #ff0000;">&quot;$(($crt_time-$last_time))&quot;</span>
		<span style="color: #007800;">speed_in</span>=<span style="color: #ff0000;">&quot;$(bc -l &lt;&lt;&lt; &quot;</span><span style="color: #007800;">scale</span>=<span style="color: #000000;">4</span>;<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$crt_in</span>-<span style="color: #007800;">$last_in</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$gap</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000;">1024</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #007800;">speed_out</span>=<span style="color: #ff0000;">&quot;$(bc -l &lt;&lt;&lt; &quot;</span><span style="color: #007800;">scale</span>=<span style="color: #000000;">4</span>;<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$crt_out</span>-<span style="color: #007800;">$last_out</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$gap</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000;">1024</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #ff0000;">&quot;)&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;speed out:$speed_out k/s<span style="color: #000099; font-weight: bold;">\n</span>speed in:$speed_in k/s&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">&#125;</span>
	<span style="color: #c20cb9; font-weight: bold;">uptime</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #007800;">send_ok</span>=0
<span style="color: #007800;">s</span>=<span style="color: #ff0000;">&quot;`stat | tr '<span style="color: #000099; font-weight: bold;">\n</span>' '|' | sed 's|°C| 度|g' | iconv -f utf-8 -t gbk -c`&quot;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$send_ok&quot;</span> = <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #660033;">-a</span> <span style="color: #ff0000;">&quot;$s&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span>
	python <span style="color: #ff0000;">&quot;`dirname $0`/mailnotify.py&quot;</span> <span style="color: #ff0000;">&quot;$s&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$?&quot;</span> = <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">send_ok</span>=<span style="color: #000000;">1</span>
	<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">10</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></td></tr></table></div>

<p>这个脚本调用了一个叫 mailnotify.py 的 python 脚本来发送邮件（当然你也可以用其他的命令行的邮件客户端）</p>
<p>mailnotify.py (ps： 此脚本极不规范，凑合能用而已)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #808080; font-style: italic;"># Name:     mailnotify.py</span>
<span style="color: #808080; font-style: italic;"># Author:   xiooli &lt;xioooli[at]yahoo.com.cn&gt;</span>
<span style="color: #808080; font-style: italic;"># Site:     http://joolix.com</span>
<span style="color: #808080; font-style: italic;"># Licence:  GPLv3</span>
<span style="color: #808080; font-style: italic;"># Version:  100113</span>
&nbsp;
<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'发送信息到某邮箱，可以用着定时获取服务器的状态(139 邮箱支持邮件短信提醒)'</span><span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>, <span style="color: #dc143c;">os</span>, <span style="color: #dc143c;">time</span>, <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> send<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    smtp = <span style="color: #483d8b;">'smtp.139.com'</span> <span style="color: #808080; font-style: italic;"># 可以到信短信提醒的邮件服务器 smtp 地址， 这里用 139 的</span>
    from_ = <span style="color: #483d8b;">'status &lt;status@xx-server&gt;'</span> <span style="color: #808080; font-style: italic;">#这样写收到的短信第一行才不会只是个[]</span>
    to = <span style="color: #483d8b;">'xxx@139.com'</span> <span style="color: #808080; font-style: italic;"># 你想发送到的账户（邮件到此账户即发送短信提醒，所以用你手机号绑定的那个账户）</span>
    <span style="color: #dc143c;">user</span> = <span style="color: #483d8b;">'xxx'</span> <span style="color: #808080; font-style: italic;"># 用户名</span>
    password = <span style="color: #483d8b;">'yyy'</span> <span style="color: #808080; font-style: italic;"># 密码</span>
    subject = <span style="color: #483d8b;">'status of np-server '</span> + <span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'%Y-%m-%d %H:%M'</span>, <span style="color: #dc143c;">time</span>.<span style="color: black;">localtime</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># 这里可以定义邮件的标题</span>
    text = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;|&quot;</span>, <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#从命令行收到的信件文本，换行替换成 |, 在此地复原</span>
&nbsp;
    msg=<span style="color: #483d8b;">'To: '</span> + to + <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>From: '</span> + from_ + <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>Subject: '</span> + subject + <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>'</span> + text
&nbsp;
    s = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span>smtp<span style="color: black;">&#41;</span>
    login_stat = s.<span style="color: black;">login</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">user</span>, password<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> login_stat<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> == <span style="color: #ff4500;">235</span>:
        send_stat = s.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>to, to, msg<span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># 之所以发件账户和收件账户一致是为了不用两个不同的邮箱，这里相当于是自己给自己发邮件，而收到自己发的邮件以后又会短信到你的手机，目的达到</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> send_stat:
            <span style="color: #ff7700;font-weight:bold;">return</span> 0
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">1</span>
&nbsp;
send<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>然后编辑 cron 任务将命令指向 server_stat.sh 按时发送运行状态。</p>
<p>ps：其实你也可以将获取的新闻之类的东西按时短信给你，这在外地（比如山区）等不能上网的地方是个不错的获取实时信息的好方法诶，呵呵。</p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/01/short-message-tell-the-server-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>看来得给主机商加钱了</title>
		<link>http://joolix.com/2010/01/%e7%9c%8b%e6%9d%a5%e5%be%97%e7%bb%99%e4%b8%bb%e6%9c%ba%e5%95%86%e5%8a%a0%e9%92%b1%e4%ba%86/</link>
		<comments>http://joolix.com/2010/01/%e7%9c%8b%e6%9d%a5%e5%be%97%e7%bb%99%e4%b8%bb%e6%9c%ba%e5%95%86%e5%8a%a0%e9%92%b1%e4%ba%86/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 12:57:44 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[essay]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=342</guid>
		<description><![CDATA[RT
google 撤出中国大概是确定了。幸而我博客主机在美国，而开通 ssh 只需加 70 ￥，是时候了。
]]></description>
			<content:encoded><![CDATA[<p>RT</p>
<p>google 撤出中国大概是确定了。幸而我博客主机在美国，而开通 ssh 只需加 70 ￥，是时候了。</p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/01/%e7%9c%8b%e6%9d%a5%e5%be%97%e7%bb%99%e4%b8%bb%e6%9c%ba%e5%95%86%e5%8a%a0%e9%92%b1%e4%ba%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用 python 生成和解码二维码图片</title>
		<link>http://joolix.com/2010/01/qrcodec-in-python/</link>
		<comments>http://joolix.com/2010/01/qrcodec-in-python/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 13:24:45 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Script]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[essay]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=340</guid>
		<description><![CDATA[了解了一下二维码的一些知识，感到很神奇哈，指甲盖那么大一块的二维码居然可以存放 500 多个汉字，呵呵如果书籍这样印刷的话是不是要少用些纸张呢？ 这个东西据说在现实中用处还挺大的，很多手机都支持拍摄和解读二维码，并且很多人把自己的个人信息也放在里面，印一张包含自己各种信息的二维码图片的名片是不是很酷呢？呵呵，鉴于可能有此需要，我就试着找了一下看看有没有什么 python 的二维码 lib，嘿嘿，还真有，pyqrcodec 就是这样一个 python lib，archlinux 下用 yaourt -S pyqrcodec 就可以安装，其他发行版的可能类似，就不详述了。
看了一下 pyqrcodec 的文档，用法其实很简单，xiooli 顺手写了一个小脚本，实现了 QR 二维码图片的生成和解码，下面是一张例图：
<span class="readmore"><a href="http://joolix.com/2010/01/qrcodec-in-python/" title="用 python 生成和解码二维码图片" target="_blank">阅读全文——共1419字</a></span>]]></description>
			<content:encoded><![CDATA[<p>了解了一下二维码的一些知识，感到很神奇哈，指甲盖那么大一块的二维码居然可以存放 500 多个汉字，呵呵如果书籍这样印刷的话是不是要少用些纸张呢？ 这个东西据说在现实中用处还挺大的，很多手机都支持拍摄和解读二维码，并且很多人把自己的个人信息也放在里面，印一张包含自己各种信息的二维码图片的名片是不是很酷呢？呵呵，鉴于可能有此需要，我就试着找了一下看看有没有什么 python 的二维码 lib，嘿嘿，还真有，pyqrcodec 就是这样一个 python lib，archlinux 下用 yaourt -S pyqrcodec 就可以安装，其他发行版的可能类似，就不详述了。</p>
<p>看了一下 pyqrcodec 的文档，用法其实很简单，xiooli 顺手写了一个小脚本，实现了 QR 二维码图片的生成和解码，下面是一张例图：<br />
<a href="http://www.flickr.com/photos/46010737@N06/4243920153/" title="qr codec picture"><img src="http://farm3.static.flickr.com/2792/4243920153_d2c9fdce8d.jpg" width="370" height="370" alt="a" /></a><br />
生成这张例图的命令和解码的命令如下：</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> python qrcode.py <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;hello,大家好，我是 xiooli！&quot;</span> .<span style="color: #000000; font-weight: bold;">/</span>a.png 
generated <span style="color: #c20cb9; font-weight: bold;">file</span>: .<span style="color: #000000; font-weight: bold;">/</span>a.png
xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> python qrcode.py <span style="color: #660033;">-d</span> .<span style="color: #000000; font-weight: bold;">/</span>a.png
QR_IMAGEREADER_DECODED, QR_FORMATINFO_UNRECOVERABLE,
get text: hello,大家好，我是 xiooli！</pre></div></div>

<p>qrcode.py 的源码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
</pre></td><td class="code"><pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #808080; font-style: italic;"># Name:     qrcode.py</span>
<span style="color: #808080; font-style: italic;"># Author:   xiooli &lt;xioooli[at]yahoo.com.cn&gt;</span>
<span style="color: #808080; font-style: italic;"># Site:     http://joolix.com</span>
<span style="color: #808080; font-style: italic;"># Licence:  GPLv3</span>
<span style="color: #808080; font-style: italic;"># Version:  100104</span>
&nbsp;
<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'generate and decode qrcode pictures'</span><span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> PyQrcodec as pqr
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> gen_qrpic<span style="color: black;">&#40;</span>text, <span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">''</span><span style="color: #483d8b;">'generate a qrcode file contains the given text'</span><span style="color: #483d8b;">''</span>
    <span style="color: #dc143c;">stat</span>, img = pqr.<span style="color: black;">encode</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">stat</span>:
        img.<span style="color: black;">save</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">file</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;failed to generate qrcode picture.&quot;</span>
<span style="color: #ff7700;font-weight:bold;">def</span> qrdecode<span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">''</span><span style="color: #483d8b;">'decode the qrcode picture'</span><span style="color: #483d8b;">''</span>
    <span style="color: #dc143c;">stat</span>, text = pqr.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">stat</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> text
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;failed to decode the qrcode picture.&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    args = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>args<span style="color: black;">&#41;</span> == <span style="color: #ff4500;">1</span> <span style="color: #ff7700;font-weight:bold;">or</span> args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'-h'</span> <span style="color: #ff7700;font-weight:bold;">or</span> args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'--help'</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;encode: &quot;</span> + args<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot; -e [text] [image file]&quot;</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;decode: &quot;</span> + args<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot; -d [imgae file]&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span> args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'-e'</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;generated file: &quot;</span> + gen_qrpic<span style="color: black;">&#40;</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>,args<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span>:
            <span style="color: #ff7700;font-weight:bold;">pass</span>
    <span style="color: #ff7700;font-weight:bold;">elif</span> args<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'-d'</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;get text: &quot;</span> + qrdecode<span style="color: black;">&#40;</span>args<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">except</span>:
            <span style="color: #ff7700;font-weight:bold;">pass</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'unrecoded arguments'</span></pre></td></tr></table></div>

<p>想为自己名片加上二维码信息的童鞋们不用愁咯，^^</p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2010/01/qrcodec-in-python/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>chrome 的泡泡翻译插件</title>
		<link>http://joolix.com/2009/12/chrome-bubble-translate-plugin/</link>
		<comments>http://joolix.com/2009/12/chrome-bubble-translate-plugin/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 16:57:46 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=337</guid>
		<description><![CDATA[非常酷的一个 chrome 插件，使用的是 google translate 的数据，故而不用安装乱七八糟的辞典，其主页在这里：http://code.google.com/p/bubble-translate/
安装好了以后会直接显示配置界面，从里面可以选择翻译的语种，默认按住 ctrl 键然后用鼠标在页面选中文本就会弹出一个泡泡将翻译结果显示出来（最牛的是还可以全文翻译哦，强阿！），很好玩哦，以后上外文网站就不用随时开着一个辞典了。
露个脸：
单词翻译：
<span class="readmore"><a href="http://joolix.com/2009/12/chrome-bubble-translate-plugin/" title="chrome 的泡泡翻译插件" target="_blank">阅读全文——共226字</a></span>]]></description>
			<content:encoded><![CDATA[<p>非常酷的一个 chrome 插件，使用的是 google translate 的数据，故而不用安装乱七八糟的辞典，其主页在这里：<a href="http://code.google.com/p/bubble-translate/">http://code.google.com/p/bubble-translate/</a></p>
<p>安装好了以后会直接显示配置界面，从里面可以选择翻译的语种，默认按住 ctrl 键然后用鼠标在页面选中文本就会弹出一个泡泡将翻译结果显示出来（最牛的是还可以全文翻译哦，强阿！），很好玩哦，以后上外文网站就不用随时开着一个辞典了。</p>
<p>露个脸：</p>
<p>单词翻译：<br />
<a href="http://www.flickr.com/photos/46010737@N06/4228053127/" title="bubble-translate"><img src="http://farm3.static.flickr.com/2656/4228053127_98481c1906.jpg" width="500" height="313" alt="抓图38" /></a><br />
全文翻译：<br />
<a href="http://www.flickr.com/photos/46010737@N06/4228083871/" title="bubble-translate"><img src="http://farm3.static.flickr.com/2575/4228083871_ce99fcfeb9.jpg" width="500" height="313" alt="抓图39" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2009/12/chrome-bubble-translate-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>用 shedskin 将你的 python 程序转成 C++ 代码</title>
		<link>http://joolix.com/2009/12/convert-your-python-script-into-cpp-with-shedskin/</link>
		<comments>http://joolix.com/2009/12/convert-your-python-script-into-cpp-with-shedskin/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 14:26:06 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[essay]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=334</guid>
		<description><![CDATA[最近在用 python 写一些东西（puzzleup.com上的题啥的），python 写起来很快也很方便，但是当遇到大量数学运算的时候可能就会很慢，于是我就 google 了一下 python 加速的方法，常用的 pysco 就不用说了，这是最简单的方法，但是效果可能不是最好的，传说 pypy 能够将 python 翻译成 c/java 能代码，但是使用的过程中老是遇到错误（什么：[translation:ERROR]  KeyError: &#8216;target&#8217; bulabula），而且编译这个东西耗费了我 &#62;24 h，喜特！猛回头，瞅见了 shedskin，传说这个东东能将 python 翻译成C++，抱着试试看的心情，我就安装上了，结果一试，还真的有快感诶，赫赫！
<span class="readmore"><a href="http://joolix.com/2009/12/convert-your-python-script-into-cpp-with-shedskin/" title="用 shedskin 将你的 python 程序转成 C++ 代码" target="_blank">阅读全文——共1965字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近在用 python 写一些东西（puzzleup.com上的题啥的），python 写起来很快也很方便，但是当遇到大量数学运算的时候可能就会很慢，于是我就 google 了一下 python 加速的方法，常用的 pysco 就不用说了，这是最简单的方法，但是效果可能不是最好的，传说 pypy 能够将 python 翻译成 c/java 能代码，但是使用的过程中老是遇到错误（什么：[translation:ERROR]  KeyError: &#8216;target&#8217; bulabula），而且编译这个东西耗费了我 &gt;24 h，喜特！猛回头，瞅见了 shedskin，传说这个东东能将 python 翻译成C++，抱着试试看的心情，我就安装上了，结果一试，还真的有快感诶，赫赫！</p>
<p>使用方法：<br />
普通的话就直接：shedskin xxx.py 就可以了，注意 xxx.py 里面只能有数字，字母和下划线，其他滴不要（路径都不能有，刚刚没太注意，结果老是出警告：*ERROR*:./xxx.py: module names should consist of letters, digits and underscores），会在当前目录下生成一个 xxx.cpp, xxx.hpp 和一个 Makefile，完事以后直接 make 就会编译出一个可执行程序来的。为了验证这个玩意是否好使，我找了一个以前和骨头，lerosua 等童鞋一起做欧拉工程的一道运算量较大的题来做实验。<br />
题目是：</p>
<blockquote><p>http://projecteuler.net/index.php?section=problems&amp;id=10</p>
<p>小于10的所有质数的和是 2 + 3 + 5 + 7 = 17。求小于2000000的所有质数的和。</p></blockquote>
<p>我写了一个 python 版本（鉴于本人的 python 极菜加之有数学恐惧症，大家对该程序的运行效率不要抱太大希望，只限于能够算出答案而已）：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #808080; font-style: italic;"># Name:     007-xiooli.py</span>
<span style="color: #808080; font-style: italic;"># Author:   xiooli</span>
<span style="color: #808080; font-style: italic;">#           Email:  &lt;xioooli[at]yahoo.com.cn&gt;</span>
<span style="color: #808080; font-style: italic;">#           Site:   http://joolix.com</span>
<span style="color: #808080; font-style: italic;"># Licence:  GPLv3</span>
<span style="color: #808080; font-style: italic;"># Version:  091024</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> is_prime<span style="color: black;">&#40;</span>prm,i<span style="color: black;">&#41;</span>:
    j=0
    <span style="color: #ff7700;font-weight:bold;">while</span> prm<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: #66cc66;">*</span>prm<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span>= i:
        <span style="color: #ff7700;font-weight:bold;">if</span> i<span style="color: #66cc66;">%</span>prime<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> == 0:
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span>
        j+=<span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
&nbsp;
prime=<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> k <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">2000000</span>,<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> is_prime<span style="color: black;">&#40;</span>prime,k<span style="color: black;">&#41;</span>:
        prime.<span style="color: black;">append</span><span style="color: black;">&#40;</span>k<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">sum</span><span style="color: black;">&#40;</span>prime<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>然后是 lerosua 童鞋的 C 版本：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</pre></td><td class="code"><pre class="c c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
 * =====================================================================================
 *
 *       Filename:  003-lerosua.c
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2009年10月21日 11时37分49秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  lerosua (), lerosua@gmail.com
 *        Company:  cyclone
 *
 * =====================================================================================
 */</span>
&nbsp;
&nbsp;
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;math.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define MAX 1024000</span>
<span style="color: #808080; font-style: italic;">/** 简单的素数集合*/</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">long</span> <span style="color: #993333;">long</span> primum<span style="color: #009900;">&#91;</span>MAX<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">11</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">17</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">19</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">23</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">29</span> <span style="color: #009900;">&#125;</span>;
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">long</span> <span style="color: #993333;">int</span> count <span style="color: #339933;">=</span> <span style="color: #0000dd;">10</span>;
&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;">/** 填加10001个素数进素数数组*/</span>
<span style="color: #993333;">void</span> fill_prime<span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #993333;">long</span> num<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #993333;">long</span> <span style="color: #993333;">long</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">31</span>;
	<span style="color: #993333;">long</span> <span style="color: #993333;">int</span> j <span style="color: #339933;">=</span> <span style="color:#800080;">0</span>;
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>; i <span style="color: #339933;">&lt;</span> num; i <span style="color: #339933;">=</span> i <span style="color: #339933;">+</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #993333;">int</span> flag <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span>;
		<span style="color: #993333;">long</span> <span style="color: #993333;">long</span> m<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span> <span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span>sqrt<span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000dd;">1</span>;
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">=</span> <span style="color:#800080;">0</span>; primum<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> m; j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">%</span> primum<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color:#800080;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				flag <span style="color: #339933;">=</span> <span style="color:#800080;">0</span>;
				<span style="color: #000000; font-weight: bold;">break</span>;
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>flag<span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			primum<span style="color: #009900;">&#91;</span>count<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> i;
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">&gt;</span>num<span style="color: #009900;">&#41;</span>
				<span style="color: #b1b100;">return</span>;
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>count<span style="color: #339933;">&gt;</span>MAX<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;error%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>count<span style="color: #009900;">&#41;</span>;
			exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #993333;">int</span> i;
	<span style="color: #993333;">long</span> <span style="color: #993333;">long</span> sum<span style="color: #339933;">=</span>0L;
	fill_prime<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2000000</span><span style="color: #009900;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color:#800080;">0</span>;i<span style="color: #339933;">&lt;</span>count;i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>primum<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;</span><span style="color: #0000dd;">2000000</span><span style="color: #009900;">&#41;</span>
			sum<span style="color: #339933;">+=</span>primum<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>;
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;count %d <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>count<span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%lld<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span>sum<span style="color: #009900;">&#41;</span>;
	<span style="color: #666666; font-style: italic;">//printf(&quot;%ld\n&quot;,primum[5]);</span>
	<span style="color: #b1b100;">return</span> <span style="color:#800080;">0</span>;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>下面正面 PK ：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">time</span> .<span style="color: #000000; font-weight: bold;">/</span>010-lerosua 
count <span style="color: #000000;">148933</span>                                                                                    
<span style="color: #000000;">142913828922</span>                                                                                    
.<span style="color: #000000; font-weight: bold;">/</span>010-lerosua  0.83s user 0.00s system <span style="color: #000000;">95</span><span style="color: #000000; font-weight: bold;">%</span> cpu <span style="color: #000000;">0.875</span> total
xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">time</span> python 010-xiooli.py
<span style="color: #000000;">142913828922</span>                                                                                     
python 010_xiooli.py  19.91s user 0.01s system <span style="color: #000000;">93</span><span style="color: #000000; font-weight: bold;">%</span> cpu <span style="color: #000000;">21.191</span> total</pre></td></tr></table></div>

<p>咳咳，差距呀～～～（厚颜无耻的说一句，比代码行数的话，我可不差哦。。）</p>
<p>好了，闲话少说，今天咱是有备而来，xiooli 要祭出杀手锏了：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> shedskin 010_xiooli.py 
<span style="color: #000000; font-weight: bold;">***</span> SHED SKIN Python-to-C++ Compiler <span style="color: #000000;">0.2</span> <span style="color: #000000; font-weight: bold;">***</span>                                                    
Copyright <span style="color: #000000;">2005</span>-<span style="color: #000000;">2009</span> Mark Dufour; License GNU GPL version <span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>See LICENSE<span style="color: #7a0874; font-weight: bold;">&#41;</span>                        
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>iterative <span style="color: #7a0874; font-weight: bold;">type</span> analysis..<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">**</span>                         
iterations: <span style="color: #000000;">2</span> templates: <span style="color: #000000;">78</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>generating <span style="color: #c20cb9; font-weight: bold;">c++</span> code..<span style="color: #7a0874; font-weight: bold;">&#93;</span>    
xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> 
<span style="color: #c20cb9; font-weight: bold;">g++</span>  <span style="color: #660033;">-O2</span> <span style="color: #660033;">-pipe</span> <span style="color: #660033;">-Wno-deprecated</span>  -I. -I<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>shedskin-<span style="color: #000000;">0.2</span><span style="color: #000000; font-weight: bold;">/</span>lib <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>shedskin-<span style="color: #000000;">0.2</span><span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>builtin.cpp 010_xiooli.cpp <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>shedskin-<span style="color: #000000;">0.2</span><span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>re.cpp <span style="color: #660033;">-lgc</span> <span style="color: #660033;">-lpcre</span>  <span style="color: #660033;">-o</span> 010_xiooli                  
xiooli<span style="color: #000000; font-weight: bold;">@</span>XIOOLI<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">time</span> .<span style="color: #000000; font-weight: bold;">/</span>010_xiooli
<span style="color: #000000;">142913828922</span>                                                                                     
.<span style="color: #000000; font-weight: bold;">/</span>010_xiooli  0.53s user 0.00s system <span style="color: #000000;">94</span><span style="color: #000000; font-weight: bold;">%</span> cpu <span style="color: #000000;">0.561</span> total</pre></td></tr></table></div>

<p>呵呵，生成的那个 cpp 和 hpp 乱七八糟的，加之我又不懂 C++，就不列出来了。<br />
居然比 lerosua 童鞋辛辛苦苦写的那一大堆 C 的还要快 0.2 s 多呢，呵呵，shedskin 真是做题作弊之良器也阿。</p>
<p>ps：相信大点的程序要用 shedskin 转 C++ 的话挺够呛的，不过，可以把 python 程序里面的运行瓶颈部分拿出来转成 C++， 于整个程序的运行效率提高应该有很大的帮助呢。另外 shedskin 不是很灵光，python 里面一些很灵活的东西要写得比较死它才容易认，反正有提示的，遇到出错再改 py 文件。</p>
<p>窃笑中：估计 lerosua 童鞋要郁闷了。</p>
]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2009/12/convert-your-python-script-into-cpp-with-shedskin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>翻箱淘到的在线翻译脚本</title>
		<link>http://joolix.com/2009/12/translate-bash-script-dic-sh/</link>
		<comments>http://joolix.com/2009/12/translate-bash-script-dic-sh/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 12:57:56 +0000</pubDate>
		<dc:creator>xiooli</dc:creator>
				<category><![CDATA[Script]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[essay]]></category>
		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://joolix.com/?p=330</guid>
		<description><![CDATA[偶尔清理我的个人可执行目录（$HOME/.bin）发现了远古时代写的一个翻译脚本，牵出来遛了一遛，还可以用哈，嘿嘿，顺手给改了几下，添加了以下一些特性：
1） deamon 化（直接进后台了，不必老开着一个终端跑）
2） 三种显示方式：kdialog，notify-send 和 gnome-osd
3） 脚本名加 -k 参数剋掉后台进程
<span class="readmore"><a href="http://joolix.com/2009/12/translate-bash-script-dic-sh/" title="翻箱淘到的在线翻译脚本" target="_blank">阅读全文——共1212字</a></span>]]></description>
			<content:encoded><![CDATA[<p>偶尔清理我的个人可执行目录（$HOME/.bin）发现了远古时代写的一个翻译脚本，牵出来遛了一遛，还可以用哈，嘿嘿，顺手给改了几下，添加了以下一些特性：</p>
<p>1） deamon 化（直接进后台了，不必老开着一个终端跑）<br />
2） 三种显示方式：kdialog，notify-send 和 gnome-osd<br />
3） 脚本名加 -k 参数剋掉后台进程</p>
<p>露脸一下：<br />
<img src="http://joolix.com/wp-content/uploads/2009/12/snapshot.jpg" alt="dic_sh"/></p>
<p>代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Name:     dic.sh</span>
<span style="color: #666666; font-style: italic;"># Author:   xiooli &lt;xioooli[at]yahoo.com.cn&gt;</span>
<span style="color: #666666; font-style: italic;"># Site:     http://joolix.com</span>
<span style="color: #666666; font-style: italic;"># Licence:  GPLv3</span>
<span style="color: #666666; font-style: italic;"># Version:  091228</span>
&nbsp;
<span style="color: #007800;">timeout</span>=<span style="color: #000000;">10</span>
&nbsp;
trans<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
	<span style="color: #007800;">str</span>=<span style="color: #ff0000;">&quot;`xsel`&quot;</span>
	<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">true</span> ; <span style="color: #000000; font-weight: bold;">do</span>
	  <span style="color: #007800;">a</span>=<span style="color: #ff0000;">&quot;`xsel`&quot;</span>
	  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$a&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;$str&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #007800;">str</span>=<span style="color: #ff0000;">&quot;$a&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #800000;">${#a}</span> <span style="color: #660033;">-lt</span> <span style="color: #000000;">15</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">word</span>=<span style="color: #ff0000;">&quot;`w3m -dump -no-cookie http://dict.cn/mini.php?q=&quot;</span><span style="color: #007800;">$a</span><span style="color: #ff0000;">&quot; <span style="color: #000099; font-weight: bold;">\</span>
		| sed -e '$d' -e 's/&lt;/ /g' -e 's/&gt;/ /g'`&quot;</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;`which gnome-osd-client 2&gt;/dev/null`&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			gnome-osd-client <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;&lt;message id='word' osd_fake_translucent_bg='off' <span style="color: #000099; font-weight: bold;">\</span>
			osd_vposition='top' osd_halignment='right' animations='on' hide_timeout='10000'&gt;<span style="color: #000099; font-weight: bold;">\</span>
			&lt;span size='15000' foreground='pink'&gt;`echo &quot;</span><span style="color: #007800;">$word</span><span style="color: #ff0000;">&quot;`&lt;/span&gt;&lt;/message&gt;&quot;</span>
		<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;`which kdialog 2&gt;/dev/null`&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #c20cb9; font-weight: bold;">kdialog</span> <span style="color: #660033;">--passivepopup</span> <span style="color: #ff0000;">&quot;$word&quot;</span> <span style="color: #ff0000;">&quot;${timeout:-5}&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
		<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;`which notify-send 2&gt;/dev/null`&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #007800;">timeout</span>=<span style="color: #800000;">${timeout:-5}</span>
			<span style="color: #007800;">timeout</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>timeout<span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000;">1000</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
			notify-send <span style="color: #660033;">-t</span> <span style="color: #ff0000;">&quot;$timeout&quot;</span> <span style="color: #ff0000;">&quot;$word&quot;</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
	  <span style="color: #000000; font-weight: bold;">fi</span>
	  <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">done</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># daemonize</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;x$1&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;x--&quot;</span> <span style="color: #660033;">-a</span> <span style="color: #ff0000;">&quot;x$1&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;x-k&quot;</span>  <span style="color: #660033;">-a</span> <span style="color: #ff0000;">&quot;x$1&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;x-h&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #ff0000;">&quot;`cat /tmp/dic.pid 2&gt;/dev/null`&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #ff0000;">&quot;$0&quot;</span> <span style="color: #660033;">--</span> <span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">&amp;</span>
		<span style="color: #7a0874; font-weight: bold;">exit</span> 0
	<span style="color: #000000; font-weight: bold;">else</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;dic is running.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">exit</span> 0
	<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;x$1&quot;</span> = <span style="color: #ff0000;">&quot;x-k&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">pic_pid</span>=<span style="color: #ff0000;">&quot;`cat /tmp/dic.pid 2&gt;/dev/null`&quot;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$pic_pid&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-9</span> <span style="color: #ff0000;">&quot;$pic_pid&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
		<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>dic.pid <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;dic process is terminated.&quot;</span>
	<span style="color: #000000; font-weight: bold;">else</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;no dic process is running.&quot;</span>
	<span style="color: #000000; font-weight: bold;">fi</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> 0
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;x$1&quot;</span> = <span style="color: #ff0000;">&quot;x-h&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">nm</span></span>=<span style="color: #ff0000;">&quot;`basename $0`&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;$nm: run<span style="color: #000099; font-weight: bold;">\n</span>$nm -k: kill daemon<span style="color: #000099; font-weight: bold;">\n</span>$nm -h: show help&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> 0
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$$</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>dic.pid
trans</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://joolix.com/2009/12/translate-bash-script-dic-sh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
