<?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>Erning.write() &#187; code</title>
	<atom:link href="http://erning.net/tags/code/feed" rel="self" type="application/rss+xml" />
	<link>http://erning.net</link>
	<description>Reloading</description>
	<lastBuildDate>Fri, 18 Jun 2010 18:05:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>动态域名解析服务</title>
		<link>http://erning.net/archives/dynamic-domain-service</link>
		<comments>http://erning.net/archives/dynamic-domain-service#comments</comments>
		<pubDate>Sun, 24 Jan 2010 19:21:58 +0000</pubDate>
		<dc:creator>erning</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://erning.net/?p=205</guid>
		<description><![CDATA[有自己的VPS，很多服务都可以自己来做了，例如我自己安装一个VPN用来穿墙。今天用PowerDNS做了一个动态域名解析服务，替换过去老旧的方法。现在不仅可以自己用，还可以提供给其他有动态域名解析需求的同学。 更新域名的API很简单，一个HTTP请求即可。API地址是: http://dynamic.wacao.com/api/plain.php，参数为， host &#8211; 主机名，FQDN为 ${host}.dynamic.wacao.com time &#8211; unixtime形式的请求时间，时间误差在正负5分钟内有效 sign &#8211; 签名，格式为 sha1(${host}${time}${shared_key}) ip &#8211; 可选。如果未提供IP地址则采用客户端请求的来源地址 其中host和shared_key需要我来提供。这里提供一个的host和shared_key给大家测试。testing d035cdac09dd866ed8f4a244567c4daf。域名为testing.dynamic.wacao.com.。 由于仅是一个HTTP请求，客户端很容易用各种语言实现。我自己用的是一个简单的shell脚本。 [bash] #!/bin/bash function usage { echo &#8220;Usage: $0 {host} {shared_key}&#8221; } if test -z $1 &#124;&#124; test -z $2 then usage exit 1 fi HOST=$1 SHARED_KEY=$2 ENDPOINT=&#8221;http://dynamic.wacao.com/api/plain.php&#8221; TIME=`date +%s` SIGN=`echo -n &#8220;${HOST}${TIME}${SHARED_KEY}&#8221; &#124; sha1sum -t [...]]]></description>
			<content:encoded><![CDATA[<p>有自己的VPS，很多服务都可以自己来做了，例如我自己安装一个VPN用来穿墙。今天用<a href="http://www.powerdns.com/">PowerDNS</a>做了一个动态域名解析服务，替换过去<a href="/archives/dynamic-dns-diy">老旧的方法</a>。现在不仅可以自己用，还可以提供给其他有动态域名解析需求的同学。</p>
<p>更新域名的API很简单，一个HTTP请求即可。API地址是: <strong>http://dynamic.wacao.com/api/plain.php</strong>，参数为，</p>
<ul>
<li>host &#8211; 主机名，FQDN为 ${host}.dynamic.wacao.com</li>
<li>time &#8211; unixtime形式的请求时间，时间误差在正负5分钟内有效</li>
<li>sign &#8211; 签名，格式为 sha1(${host}${time}${shared_key}) </li>
<li>ip &#8211; 可选。如果未提供IP地址则采用客户端请求的来源地址</li>
</ul>
<p>其中host和shared_key需要我来提供。这里提供一个的host和shared_key给大家测试。<strong>testing</strong> <strong>d035cdac09dd866ed8f4a244567c4daf</strong>。域名为<strong>testing.dynamic.wacao.com.</strong>。</p>
<p>由于仅是一个HTTP请求，客户端很容易用各种语言实现。我自己用的是一个简单的shell脚本。<br />
[bash]<br />
#!/bin/bash</p>
<p>function usage {<br />
    echo &#8220;Usage: $0 {host} {shared_key}&#8221;<br />
}</p>
<p>if test -z $1 || test -z $2<br />
then<br />
    usage<br />
    exit 1<br />
fi</p>
<p>HOST=$1<br />
SHARED_KEY=$2<br />
ENDPOINT=&#8221;http://dynamic.wacao.com/api/plain.php&#8221;</p>
<p>TIME=`date +%s`<br />
SIGN=`echo -n &#8220;${HOST}${TIME}${SHARED_KEY}&#8221; | sha1sum -t | awk &#8216;{print $1}&#8217;`<br />
URL=&#8221;${ENDPOINT}?host=${HOST}&#038;time=${TIME}&#038;sign=${SIGN}&#8221;<br />
curl &#8220;$URL&#8221;<br />
[/bash]</p>
<p>执行后立即能够解析，TTL为5秒。<br />
[plain gutter="false"]<br />
$ update-dynamic-dns.sh testing d035cdac09dd866ed8f4a244567c4daf<br />
ok. 58.33.69.77<br />
$ host testing.dynamic.wacao.com.<br />
testing.dynamic.wacao.com has address 58.33.69.77<br />
[/plain]</p>
<p>我将这个脚本加到crontab里，每5分钟更新一次。<br />
[plain gutter="false"]<br />
*/5 * * * * /usr/local/sbin/update-dynamic-dns.sh ${HOST} ${SHARED_KEY}<br />
[/plain]</p>
<p>如果觉得testing.dynamic.wacao.com这样的域名不好看，而且你有自己的域名，可以想我一样，给自己的域名加一个CNAME。例如我把alcohol.swanpan.com做了一个CNAME指到alcohol.dynamic.wacao.com<br />
[plain gutter="false"]<br />
;; ANSWER SECTION:<br />
alcohol.swanpan.com.	86400	IN	CNAME	alcohol.dynamic.wacao.com.<br />
alcohol.dynamic.wacao.com. 5	IN	A	58.33.69.77<br />
[/plain]<br />
这样我在各个地方都能用alcohol.swanpan.com这个域名访问家里的机器，方便<a href="/archives/my-linux-gateway">用它穿墙</a>。</p>
<p>想试试的朋友告诉我你要的host，我给你发送shared_key。</p>
]]></content:encoded>
			<wfw:commentRss>http://erning.net/archives/dynamic-domain-service/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB硬盘的固定设备名和自动休眠</title>
		<link>http://erning.net/archives/static-device-name-and-auto-spin-down-for-usb-harddisk</link>
		<comments>http://erning.net/archives/static-device-name-and-auto-spin-down-for-usb-harddisk#comments</comments>
		<pubDate>Sat, 23 Jan 2010 18:07:26 +0000</pubDate>
		<dc:creator>erning</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://erning.net/?p=186</guid>
		<description><![CDATA[AirPort Extreme可以外接USB硬盘提供文件服务，但是和它的路由功能一样，都不够满足我的需求。而作为穿墙路由器的华硕小机器有4个USB口，我还用它兼作文件服务器使用，提供Samba和NFS。 但是Gentoo在这里遇到两个小问题。 第一个问题，USB硬盘是可以热拔插，这样由于载入顺序的问题，每个硬盘设备名称可能会变化。例如这个机器自带一个读卡器，在没有外挂USB硬盘时启动后候设备名为/dev/sdb。之后插入USB硬盘，USB硬盘的设备名为/dev/sdc。但是如果挂着USB硬盘启动，这两个设备的设备名就正好反过来了。我希望是固定的设备名。 第二个问题，USB硬盘长时间不访问的时候不会自动停下来，这样既不省电也不利延长硬盘的寿命。我希望在不用的时候它可以休眠。 设备名的问题可以用udev的rules解决。我加了一个udev配置文件/etc/udev/rules.d/99-external-storages.rules。 [plain gutter="false"] KERNEL==&#8221;sd*&#8221;, SUBSYSTEMS==&#8221;usb&#8221;, ATTRS{idVendor}==&#8221;0bda&#8221;, ATTRS{idProduct}==&#8221;0158&#8243;, ATTRS{serial}==&#8221;20071114173400000&#8243;, SYMLINK+=&#8221;cardreader%n&#8221; KERNEL==&#8221;sd*&#8221;, SUBSYSTEMS==&#8221;usb&#8221;, ATTRS{idVendor}==&#8221;1bcf&#8221;, ATTRS{idProduct}==&#8221;0c31&#8243;, ATTRS{serial}==&#8221;20090717090A&#8221;, SYMLINK+=&#8221;storage/neso%n&#8221; [/plain] 这样给内置的读卡器添加了一个设备名的符号链接/dev/cardreader；给我的NESO 1T硬盘添加了设备名符号链接/dev/storage/neso。用固定名称访问设备的问题就解决了。 第二个问题稍微复杂些，一直没找到方便的方法。laptop-mode-tools也没能满足我的要求。一番搜索后找到sdparm可以用来控制USB硬盘，还有一段perl脚本用来调度sdparm。这样就可以满足我的需求了。脚本的原始出外我给忘了，这里我稍微修改了一点，增加对设备名符号链接的支持。 [perl] #!/usr/bin/perl -w use File::Basename; use Cwd &#8216;abs_path&#8217;; $statfile = &#8220;/proc/diskstats&#8221;; die &#8220;$0: Cannot read $statfile\n&#8221; unless -r $statfile; $&#124; = 1; ($disk, $interval) = (@ARGV); if (-l $disk) { $original_disk [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apple.com/airportextreme/">AirPort Extreme</a>可以外接USB硬盘提供文件服务，但是和它的路由功能一样，都不够满足我的需求。而作为<a href="/archives/my-linux-gateway">穿墙路由器</a>的华硕小机器有4个USB口，我还用它兼作文件服务器使用，提供Samba和NFS。</p>
<p>但是Gentoo在这里遇到两个小问题。</p>
<p>第一个问题，USB硬盘是可以热拔插，这样由于载入顺序的问题，每个硬盘设备名称可能会变化。例如这个机器自带一个读卡器，在没有外挂USB硬盘时启动后候设备名为/dev/sdb。之后插入USB硬盘，USB硬盘的设备名为/dev/sdc。但是如果挂着USB硬盘启动，这两个设备的设备名就正好反过来了。我希望是固定的设备名。</p>
<p>第二个问题，USB硬盘长时间不访问的时候不会自动停下来，这样既不省电也不利延长硬盘的寿命。我希望在不用的时候它可以休眠。</p>
<p>设备名的问题可以用udev的rules解决。我加了一个udev配置文件/etc/udev/rules.d/99-external-storages.rules。<br />
[plain gutter="false"]<br />
KERNEL==&#8221;sd*&#8221;, SUBSYSTEMS==&#8221;usb&#8221;, ATTRS{idVendor}==&#8221;0bda&#8221;, ATTRS{idProduct}==&#8221;0158&#8243;, ATTRS{serial}==&#8221;20071114173400000&#8243;, SYMLINK+=&#8221;cardreader%n&#8221;<br />
KERNEL==&#8221;sd*&#8221;, SUBSYSTEMS==&#8221;usb&#8221;, ATTRS{idVendor}==&#8221;1bcf&#8221;, ATTRS{idProduct}==&#8221;0c31&#8243;, ATTRS{serial}==&#8221;20090717090A&#8221;, SYMLINK+=&#8221;storage/neso%n&#8221;<br />
[/plain]<br />
这样给内置的读卡器添加了一个设备名的符号链接/dev/cardreader；给我的NESO 1T硬盘添加了设备名符号链接/dev/storage/neso。用固定名称访问设备的问题就解决了。</p>
<p>第二个问题稍微复杂些，一直没找到方便的方法。<a href="http://samwel.tk/laptop_mode/">laptop-mode-tools</a>也没能满足我的要求。一番搜索后找到<a href="http://sg.danny.cz/sg/sdparm.html">sdparm</a>可以用来控制USB硬盘，还有一段perl脚本用来调度sdparm。这样就可以满足我的需求了。脚本的原始出外我给忘了，这里我稍微修改了一点，增加对设备名符号链接的支持。<br />
[perl]<br />
#!/usr/bin/perl -w<br />
use File::Basename;<br />
use Cwd &#8216;abs_path&#8217;;</p>
<p>$statfile = &#8220;/proc/diskstats&#8221;;<br />
die &#8220;$0: Cannot read $statfile\n&#8221; unless -r $statfile;</p>
<p>$| = 1;<br />
($disk, $interval) = (@ARGV);</p>
<p>if (-l $disk) {<br />
    $original_disk = $disk;<br />
    while (-l $disk) {<br />
        $disk = readlink $disk;<br />
    }<br />
    $disk = dirname($original_disk) . &#8220;/&#8221; . $disk;<br />
    $disk = abs_path($disk);<br />
}</p>
<p>$disk =~ s,/dev/,,;<br />
print &#8220;$0: disk: $disk, interval: $interval\n&#8221;;</p>
<p>$halted_data = $last_seen = &#8221;;<br />
while (1) {<br />
  open(STATUS, $statfile);<br />
  ($_) = grep(/^\s+\d+\s+\d+\s+$disk\s/o, <STATUS>);<br />
  close STATUS;</p>
<p>  if ($last_seen eq $_ &#038;&#038; $halted_data ne $_) {<br />
    print &#8220;Spinning down: $disk\n&#8221;;<br />
    system &#8220;sync&#8221;;<br />
    system &#8220;sdparm&#8221;, &#8220;&#8211;command=stop&#8221;, &#8220;/dev/$disk&#8221;;<br />
    $halted_data = $_;<br />
  }<br />
  $last_seen = $_;<br />
  sleep $interval;<br />
}<br />
[/perl]</p>
<p>最后在启动脚本里加上<br />
[plain gutter="false"]<br />
ebegin &#8221;    &#8211; Spindown USB HD&#8221;<br />
nohup /usr/local/sbin/spindown-usbhd /dev/storage/neso 1200 >> /var/log/spindown-usbhd.log 2>&#038;1 &#038;<br />
eend $?<br />
[/plain]<br />
好了，20分钟这块硬盘没有读写之后自动休眠。</p>
]]></content:encoded>
			<wfw:commentRss>http://erning.net/archives/static-device-name-and-auto-spin-down-for-usb-harddisk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java String</title>
		<link>http://erning.net/archives/java-string</link>
		<comments>http://erning.net/archives/java-string#comments</comments>
		<pubDate>Thu, 06 Apr 2006 10:33:39 +0000</pubDate>
		<dc:creator>erning</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[recruiting]]></category>

		<guid isPermaLink="false">http://www.erning.net/archives/2006/04/06/java-string/</guid>
		<description><![CDATA[挺无聊的题目真的难倒不少人，咳 [java] public class Hello { public static void main(String[] args) { String s = &#8220;123&#8243;; System.out.println(s); m1(s); System.out.println(s); int i = 123; System.out.println(i); m2(i); System.out.println(i); } private static void m1(String s) { s = &#8220;321&#8243;; } private static void m2(int i) { i = 321; } } [/java] 运行结果是什么？]]></description>
			<content:encoded><![CDATA[<p>挺无聊的题目真的难倒不少人，咳<br />
[java]<br />
public class Hello {<br />
    public static void main(String[] args) {<br />
        String s = &#8220;123&#8243;;<br />
        System.out.println(s);<br />
        m1(s);<br />
        System.out.println(s);</p>
<p>        int i = 123;<br />
        System.out.println(i);<br />
        m2(i);<br />
        System.out.println(i);<br />
    }</p>
<p>    private static void m1(String s) {<br />
        s = &#8220;321&#8243;;<br />
    }</p>
<p>    private static void m2(int i) {<br />
        i = 321;<br />
    }<br />
}<br />
[/java]<br />
运行结果是什么？</p>
]]></content:encoded>
			<wfw:commentRss>http://erning.net/archives/java-string/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Dynamic DNS-DIY</title>
		<link>http://erning.net/archives/dynamic-dns-diy</link>
		<comments>http://erning.net/archives/dynamic-dns-diy#comments</comments>
		<pubDate>Sun, 02 Apr 2006 05:18:56 +0000</pubDate>
		<dc:creator>erning</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://www.erning.net/archives/2006/04/02/dynamic-dns-diy/</guid>
		<description><![CDATA[宿舍的宽带好，写了一个简单的python脚本，自动更新域名解析到动态的IP地址，这样我就可以随时访问宿舍里的机器了。 http://swanpan.com/phpsysinfo/ [python] #!/usr/bin/env python import cookielib import urllib import urllib2 import time import sys def ddd_checkip(): response = urllib2.urlopen(&#8220;http://www.dragonsoft.net/checkip.php&#8221;) return response.read() def ddd_hello(opener): return opener.open(&#8220;http://www.dns-diy.com/skin.aspx?skin=api&#8221;) def ddd_login(opener, username, password): request = urllib2.Request(&#8220;https://www.dns-diy.com/api/login.aspx&#8221;) params = urllib.urlencode({&#8220;username&#8221;:username, &#8216;password&#8217;:password}) request.add_data(params) return opener.open(request) def ddd_logout(opener): request = urllib2.Request(&#8220;http://www.dns-diy.com/api/logout.aspx?immediately=yes&#038;invalidate=yes&#8221;) return opener.open(request) def ddd_update_rr(opener, id, name, type, data, aux, ttl): [...]]]></description>
			<content:encoded><![CDATA[<p>宿舍的宽带好，写了一个简单的python脚本，自动更新域名解析到动态的IP地址，这样我就可以随时访问宿舍里的机器了。<br />
<a href="http://swanpan.com/phpsysinfo/">http://swanpan.com/phpsysinfo/</a></p>
<p>[python]<br />
#!/usr/bin/env python</p>
<p>import cookielib<br />
import urllib<br />
import urllib2<br />
import time<br />
import sys</p>
<p>def ddd_checkip():<br />
        response = urllib2.urlopen(&#8220;http://www.dragonsoft.net/checkip.php&#8221;)<br />
        return response.read()</p>
<p>def ddd_hello(opener):<br />
        return opener.open(&#8220;http://www.dns-diy.com/skin.aspx?skin=api&#8221;)</p>
<p>def ddd_login(opener, username, password):<br />
        request = urllib2.Request(&#8220;https://www.dns-diy.com/api/login.aspx&#8221;)<br />
        params = urllib.urlencode({&#8220;username&#8221;:username, &#8216;password&#8217;:password})<br />
        request.add_data(params)<br />
        return opener.open(request)</p>
<p>def ddd_logout(opener):<br />
        request = urllib2.Request(&#8220;http://www.dns-diy.com/api/logout.aspx?immediately=yes&#038;invalidate=yes&#8221;)<br />
        return opener.open(request)</p>
<p>def ddd_update_rr(opener, id, name, type, data, aux, ttl):<br />
        request = urllib2.Request(&#8220;http://www.dns-diy.com/api/zone_rr_update.aspx&#8221;)<br />
        params = urllib.urlencode({&#8220;id&#8221;:id, &#8220;rr_name&#8221;:name, &#8220;rr_type&#8221;:type, &#8220;rr_data&#8221;:data, &#8220;rr_aux&#8221;:aux, &#8220;rr_ttl&#8221;:ttl})<br />
        request.add_data(params)<br />
        return opener.open(request)</p>
<p>#<br />
#<br />
#</p>
<p>DEBUG = 5<br />
SLEEP_SECONDS = 600</p>
<p>USERNAME = &#8220;swanpan.com&#8221;<br />
PASSWORD = &#8220;secure&#8221;<br />
RR_ID    = &#8220;secure&#8221;<br />
RR_NAME  = &#8220;&#8221;<br />
RR_TYPE  = &#8220;A&#8221;<br />
RR_DATA  = &#8220;127.0.0.1&#8243;<br />
RR_AUX   = &#8220;0&#8243;<br />
RR_TTL   = &#8220;5&#8243;</p>
<p>def ddd_process():<br />
        if (DEBUG > 0):<br />
                print &#8220;[%(time)s] updating %(host)s.%(zone)s (%(ip)s) &#8230;&#8221; % \<br />
                        {&#8220;time&#8221;:time.strftime(&#8220;%Y-%m-%d %H:%M:%S&#8221;, time.localtime()), \<br />
                        &#8220;host&#8221;:RR_NAME, &#8220;zone&#8221;:USERNAME, &#8220;ip&#8221;:RR_DATA}</p>
<p>        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))</p>
<p>        response = ddd_hello(opener)<br />
        if (DEBUG > 5):<br />
                print &#8220;HELLO&#8221;<br />
                print response.read()</p>
<p>        response = ddd_login(opener, USERNAME, PASSWORD)<br />
        if (DEBUG > 5):<br />
                print &#8220;LOGIN&#8221;<br />
                print response.read()</p>
<p>        response = ddd_update_rr(opener, RR_ID, RR_NAME, RR_TYPE, RR_DATA, RR_AUX, RR_TTL)<br />
        if (DEBUG > 5):<br />
                print &#8220;UPDATE&#8221;<br />
                print response.read()</p>
<p>        response = ddd_logout(opener)<br />
        if (DEBUG > 5):<br />
                print &#8220;LOGOUT&#8221;<br />
                print response.read()</p>
<p>        if (DEBUG > 0):<br />
                print &#8220;[%(time)s] Finished!&#8221; % \<br />
                        {&#8220;time&#8221;:time.strftime(&#8220;%Y-%m-%d %H:%M:%S&#8221;, time.localtime())}</p>
<p>while True:<br />
        try:<br />
                ip = ddd_checkip()<br />
                if (RR_DATA != ip):<br />
                        RR_DATA = ip<br />
                        ddd_process()<br />
        except:<br />
                if (DEBUG > 4):<br />
                        print &#8220;Unexpected error:&#8221;, sys.exc_info()[0]</p>
<p>        time.sleep(SLEEP_SECONDS)<br />
[/python]</p>
]]></content:encoded>
			<wfw:commentRss>http://erning.net/archives/dynamic-dns-diy/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My screenshot script</title>
		<link>http://erning.net/archives/my-screenshot-script</link>
		<comments>http://erning.net/archives/my-screenshot-script#comments</comments>
		<pubDate>Tue, 28 Jun 2005 13:56:34 +0000</pubDate>
		<dc:creator>erning</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.erning.net/?p=53</guid>
		<description><![CDATA[Here&#8217;s my screenshot script under linux. ImageMagick is required. [bash] #! /bin/bash SSPATH=&#8221;$HOME/documents/pictures/screenshots&#8221; SSDATE=&#8221;$(date +%Y-%m-%d_%H-%M-%S)&#8221; SSNAME=&#8221;$SSPATH/$SSDATE.png&#8221; if [ ! -d "$SSPATH" ]; then mkdir -p &#8220;$SSPATH&#8221; fi #sleep 10 import -window root &#8220;$SSNAME&#8221; [/bash]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s my screenshot script under linux.<br />
<a href="http://www.imagemagick.org/">ImageMagick</a> is required.<br />
[bash]<br />
#! /bin/bash</p>
<p>SSPATH=&#8221;$HOME/documents/pictures/screenshots&#8221;<br />
SSDATE=&#8221;$(date +%Y-%m-%d_%H-%M-%S)&#8221;<br />
SSNAME=&#8221;$SSPATH/$SSDATE.png&#8221;</p>
<p>if [ ! -d "$SSPATH" ]; then<br />
        mkdir -p &#8220;$SSPATH&#8221;<br />
fi</p>
<p>#sleep 10<br />
import -window root &#8220;$SSNAME&#8221;<br />
[/bash]</p>
]]></content:encoded>
			<wfw:commentRss>http://erning.net/archives/my-screenshot-script/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
