<?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>Rock Sun's Blog &#187; recommend</title>
	<atom:link href="http://rocksun.cn/category/recommend/feed/" rel="self" type="application/rss+xml" />
	<link>http://rocksun.cn</link>
	<description>Blogger's Blog</description>
	<lastBuildDate>Wed, 16 May 2012 13:01:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>说说Ubuntu的ISO安装</title>
		<link>http://rocksun.cn/install-ubuntu-with-iso/</link>
		<comments>http://rocksun.cn/install-ubuntu-with-iso/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 17:45:15 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[grub4dos]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[livecd]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=376</guid>
		<description><![CDATA[


最近这两年比较懒，所以Ubuntu的安装要么是通过虚拟机，要么就是用wubi这类集成工具在Windows下集成安装。不过总是没有一个纯粹的Ubuntu正宗，今天决定在笔记本上装一个真正的Ubuntu。笔记本上原来有个Windows，手头没有光盘，所以只能是从windows通过ISO安装。
安装完之后，本来我也不想写什么的，但是网络上到处复制的文档让我很不舒服，很多文档未经任何验证就转载了，很不负责任，而且转载也很不认真，有各种各样的错误，所以我希望写一个准确的，全面点的文档。
现在Ubuntu的版本是8.10，所以我下载了ubuntu-8.10-desktop-i386，也就是LiveCD。然后把iso文件复制到了原来的c:ubuntu下，然后用WinRAR打开iso文件，将casper目录下的initrd.gz和vmlinuz也复制到c:\ubuntu下。
接着我们配置从iso启动。我们首先需要下载Grub4Dos，然后把其中的grub.exe和grldr解压缩到C盘根目录。接着在C盘根目录创建一个menu.lst文件，内容如下：

timeout 5

default 0

title Ubuntu 8.10 LiveCD
find --set-root /ubuntu/initrd.gz
kernel /ubuntu/vmlinuz boot=casper iso-scan/filename=/ubuntu/ubuntu-8.10-desktop-i386.iso quiet splash locale=zh_CN.UTF-8
initrd /ubuntu/initrd.gz
boot

然后右键“我的电脑-属性-高级”，然后点第三个“设置”，在新窗口中点“编辑”，在出现的文件最后添加：

c:\grldr= "Install Ubuntu 8.10"

保存提交后，就会出现从Ubuntu LiveCD安装的菜单，选择之后就会出现类似光盘启动的界面。在进入一个桌面系统后，点击桌面上的install就进入了安装过程。
不过，因为是从虚拟光盘上启动的原因，安装过程的第4步，也就是分区的地方会看不到任何磁盘的信息，这时可以输入ctrl+alt+f1进入命令行，运行下面的命令：

umount -l /isodev[tab]

输入table键可以自动探出合适的设备名。然后输入ctrl+alt+f7，回到安装界面，退到第3步，再返回，就应该看到磁盘信息了。
我这里选择手动分区，把c盘之外的磁盘全部删除，然后分了一个EXT3分区（挂接/）和一个交换分区，然后就开始执行安装了。到此为止，安装应该没有什么问题了，以后就是使用问题了。


Related posts:先有Ubuntu，后装XP垃圾是怎样转生的？投入Ubuntu的怀抱



Related posts:<ol><li><a href='http://rocksun.cn/install-xp-after-ubuntu/' rel='bookmark' title='Permanent Link: 先有Ubuntu，后装XP'>先有Ubuntu，后装XP</a></li><li><a href='http://rocksun.cn/spam-start/' rel='bookmark' title='Permanent Link: 垃圾是怎样转生的？'>垃圾是怎样转生的？</a></li><li><a href='http://rocksun.cn/get-into-ubuntu/' rel='bookmark' title='Permanent Link: 投入Ubuntu的怀抱'>投入Ubuntu的怀抱</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>最近这两年比较懒，所以Ubuntu的安装要么是通过虚拟机，要么就是用<a title="Ubuntu Installer" href="http://wubi-installer.org/">wubi</a>这类集成工具在Windows下集成安装。不过总是没有一个纯粹的Ubuntu正宗，今天决定在笔记本上装一个真正的Ubuntu。笔记本上原来有个Windows，手头没有光盘，所以只能是从windows通过ISO安装。</p>
<p>安装完之后，本来我也不想写什么的，但是网络上到处复制的文档让我很不舒服，很多文档未经任何验证就转载了，很不负责任，而且转载也很不认真，有各种各样的错误，所以我希望写一个准确的，全面点的文档。</p>
<p>现在<a href="http://www.ubuntu.com/getubuntu/download">Ubuntu</a>的版本是8.10，所以我下载了ubuntu-8.10-desktop-i386，也就是LiveCD。然后把iso文件复制到了原来的c:ubuntu下，然后用WinRAR打开iso文件，将casper目录下的initrd.gz和vmlinuz也复制到c:\ubuntu下。</p>
<p>接着我们配置从iso启动。我们首先需要下载<a href="http://grub4dos.sourceforge.net/">Grub4Dos</a>，然后把其中的grub.exe和grldr解压缩到C盘根目录。接着在C盘根目录创建一个menu.lst文件，内容如下：</p>
<blockquote>
<pre lang="bat">timeout 5

default 0

title Ubuntu 8.10 LiveCD
find --set-root /ubuntu/initrd.gz
kernel /ubuntu/vmlinuz boot=casper iso-scan/filename=/ubuntu/ubuntu-8.10-desktop-i386.iso quiet splash locale=zh_CN.UTF-8
initrd /ubuntu/initrd.gz
boot</pre>
</blockquote>
<p>然后右键“我的电脑-属性-高级”，然后点第三个“设置”，在新窗口中点“编辑”，在出现的文件最后添加：</p>
<blockquote>
<pre lang="bat">c:\grldr= "Install Ubuntu 8.10"</pre>
</blockquote>
<p>保存提交后，就会出现从Ubuntu LiveCD安装的菜单，选择之后就会出现类似光盘启动的界面。在进入一个桌面系统后，点击桌面上的install就进入了安装过程。</p>
<p>不过，因为是从虚拟光盘上启动的原因，安装过程的第4步，也就是分区的地方会看不到任何磁盘的信息，这时可以输入ctrl+alt+f1进入命令行，运行下面的命令：</p>
<blockquote>
<pre lang="bat">umount -l /isodev[tab]</pre>
</blockquote>
<p>输入table键可以自动探出合适的设备名。然后输入ctrl+alt+f7，回到安装界面，退到第3步，再返回，就应该看到磁盘信息了。</p>
<p>我这里选择手动分区，把c盘之外的磁盘全部删除，然后分了一个EXT3分区（挂接/）和一个交换分区，然后就开始执行安装了。到此为止，安装应该没有什么问题了，以后就是使用问题了。</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/install-xp-after-ubuntu/' rel='bookmark' title='Permanent Link: 先有Ubuntu，后装XP'>先有Ubuntu，后装XP</a></li><li><a href='http://rocksun.cn/spam-start/' rel='bookmark' title='Permanent Link: 垃圾是怎样转生的？'>垃圾是怎样转生的？</a></li><li><a href='http://rocksun.cn/get-into-ubuntu/' rel='bookmark' title='Permanent Link: 投入Ubuntu的怀抱'>投入Ubuntu的怀抱</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/install-ubuntu-with-iso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion: Export changed Files in a revision range</title>
		<link>http://rocksun.cn/svnchanged-export/</link>
		<comments>http://rocksun.cn/svnchanged-export/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 11:58:33 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[recommend]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[changed]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[pysvn]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[revision]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=360</guid>
		<description><![CDATA[A friend of mine asked  me if  subversion has a function to export changed Files in a revision range, because she want to send the zipped exported directory to customer to overwrite the old version. After googled, I find a Windows BAT(with linux tools) , a java and a TortoiseSVN solution.  I think the solutions [...]


Related posts:<ol><li><a href='http://rocksun.cn/export-subversion-files-in-a-range/' rel='bookmark' title='Permanent Link: Subversion导出修订版本范围中修改过的文件'>Subversion导出修订版本范围中修改过的文件</a></li><li><a href='http://rocksun.cn/upload-file-changed/' rel='bookmark' title='Permanent Link: 上传工作拷贝中改变的文件'>上传工作拷贝中改变的文件</a></li><li><a href='http://rocksun.cn/subversion-15-releasenotes/' rel='bookmark' title='Permanent Link: Subversion 1.5发布说明'>Subversion 1.5发布说明</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>A friend of mine asked  me if  subversion has a function to export changed Files in a revision range, because she want to send the zipped exported directory to customer to overwrite the old version. After googled, I find a <a href="http://svn.haxx.se/users/archive-2007-06/0977.shtml">Windows BAT(with linux tools)</a> , a<a href="http://orangepips.instantspot.com/blog/2008/03/06/Export-Subversion-Files-Changed-between-Two-Revision-Numbers"> java</a> and a TortoiseSVN solution.  I think the solutions above all have its own defect, So I decided to write a cross platform script with python.</p>
<p>The script is  here: <a onclick="javascript:pageTracker._trackPageview('/outbound/article/svn-script.googlecode.com');" href="http://svn-script.googlecode.com/svn/trunk/tools/svnchanged_export.py">http://svn-script.googlecode.com/svn/trunk/tools/svnchanged_export.py</a>. This script needs python 2.5 or greater and <a href="http://pysvn.tigris.org/">pysvn</a>. To export files changed between 20 and HEAD(newest) at URL svn://192.168.101.1/lynx/trunk/ to directory dist, we can input:</p>
<blockquote><p>python svnchanged_export.py -u username -p password -r 20:HEAD svn://192.168.101.1/lynx/trunk/ dist</p></blockquote>
<p>The exported files will organized as the original structure, and the revision is HEAD. The -u(&#8211;username) and (-p)(&#8211;password) is optional. If omited, the script may use the cached authentication information.  The files will export to directory dist. The -r(&#8211;revision) also accept integer value like &#8220;-r 10:20&#8243;, then the exported file&#8217;s revision would be 20.</p>
<p>Any problems can comment here.</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/export-subversion-files-in-a-range/' rel='bookmark' title='Permanent Link: Subversion导出修订版本范围中修改过的文件'>Subversion导出修订版本范围中修改过的文件</a></li><li><a href='http://rocksun.cn/upload-file-changed/' rel='bookmark' title='Permanent Link: 上传工作拷贝中改变的文件'>上传工作拷贝中改变的文件</a></li><li><a href='http://rocksun.cn/subversion-15-releasenotes/' rel='bookmark' title='Permanent Link: Subversion 1.5发布说明'>Subversion 1.5发布说明</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/svnchanged-export/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>缘起Oracle AS</title>
		<link>http://rocksun.cn/relation-to-oracleas/</link>
		<comments>http://rocksun.cn/relation-to-oracleas/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 02:47:01 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[BEA]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[WebLogic]]></category>

		<guid isPermaLink="false">http://rocksun.cn/relation-to-oracleas/</guid>
		<description><![CDATA[大约4年前，一个客户可能是出于对oracle数据库的信任，选择了很少使用的Oracle AS作为应用服务器。我当时是BEA dev2dev的版主，所以领导便把研究Oracle AS这个重要任务交给了我。
拿着Oracle AS的一大堆光盘，还有一堆安装手册，我便在客户的安腾芯片的HP主机上开始了安装工作。不记得具体步骤了，总之是做了很多准备工作，到了最后真正的程序安装部分，却发生了错误，然后认真阅读了Oracle的文档，并和Oracle的客服联系后才确认，原来Oracle AS还不支持那个安腾芯片的HP系统，Oracle客服很热情，答应赶快发一个新版本。万恶的推销商啊，谁提供了这个解决方案。没办法，客户买的主机不能浪费，受客户指使，我只好在这个主机上安装了一个破解的WebLogic（被逼无奈啊，幸亏现在是一家了），先让我们的系统跑起来，而WebLogic安装过程异常简单，设置好用户，直接运行一个JAR就搞定了。

尽管那个HP主机暂时无法安装了，可是还是要用Oracle AS验证我们的程序，所以我在一个Windows主机安装了一个Oracle AS，作为我们的测试服务器。但是困难依然不断出现，其中一个就是将应用设置到根目录的问题。我们的应用写的很特别，只能跑在URI“/”下，所以这就成了我的第一个任务。
Oracle AS的配置界面上无法做出这个设置。我又看了很多文档，可是没有直接的答案。最后，经过反复验证，发现这个问题涉及Oracle AS的http server、web cache和orion（应用服务器），所以要实现我们的需求，需要配置上述三方面的信息，于是有了我在CNOUG论坛的这个回复。也许是我被Oracle AS折磨的实在太痛苦了，在看到了这篇置顶贴后，我便大发厥词，痛斥了这篇文章。
它应该表达了我对此问题的切身感受，当然出发点是开发者。当时的Oracle AS一开始就太复杂了，如果想做简单的事情，反而要深入了解才能办到。对于开发者来说，不可能投入很多，他们需要通过知觉就可行的方式。而对于管理员来说，从简单开始变得复杂，也比一开始就复杂更利于学习。
Oracle和IBM做产品都有一个特点，就是架构特别清晰。例如应用服务器需要分布式计算，他们就会要单独开发一个分布式运行的平台，而WebLogic则比较直接，可能会直接去实现。当然，有时候并不是他们有意去这样做，而是因为他们都有太重的历史，每当需要什么，他们就去会寻找自己的历史，然后找到一个合适的。所以许多开始感觉很不爽的产品，常常会在深入了解后发现一些优点，因为它建立在一个更坚实的平台上，可以更好的利用这个平台。
如今，WebLogic已经属于Oracle，我当年的大论看起来也不是那么激烈了，感谢当年的版主，公正的保留了那些内容，如今看来，让我感慨万分。BEA系列产品的简便，如果能够有更坚实的配套基础架构，就能够发挥更大的效力；而Oracle，也不必再为抢占市场，让我发出当年的感慨了。
此外，这里有ORACLE最新的中间件官方资料可以下载。


Related posts:玩玩GoldenGate认证越来越复杂给谁充值了？



Related posts:<ol><li><a href='http://rocksun.cn/try-goldengate/' rel='bookmark' title='Permanent Link: 玩玩GoldenGate'>玩玩GoldenGate</a></li><li><a href='http://rocksun.cn/authentication-methods/' rel='bookmark' title='Permanent Link: 认证越来越复杂'>认证越来越复杂</a></li><li><a href='http://rocksun.cn/where-is-my-money/' rel='bookmark' title='Permanent Link: 给谁充值了？'>给谁充值了？</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 210px"><a href="http://wmdata.com.cn/oracle/iwom-OFM/index.asp?frm=rocksun"><img class=" " title="Oracle WebLogic" src="http://rocksun.cn/wp-content/uploads/oraclews104.jpg" alt="Oracle WebLogic" width="200" height="120" /></a><p class="wp-caption-text">Oracle WebLogic</p></div>
<p>大约4年前，一个客户可能是出于对oracle数据库的信任，选择了很少使用的Oracle AS作为应用服务器。我当时是BEA dev2dev的版主，所以领导便把研究Oracle AS这个重要任务交给了我。</p>
<p>拿着Oracle AS的一大堆光盘，还有一堆安装手册，我便在客户的安腾芯片的HP主机上开始了安装工作。不记得具体步骤了，总之是做了很多准备工作，到了最后真正的程序安装部分，却发生了错误，然后认真阅读了Oracle的文档，并和Oracle的客服联系后才确认，原来Oracle AS还不支持那个安腾芯片的HP系统，Oracle客服很热情，答应赶快发一个新版本。万恶的推销商啊，谁提供了这个解决方案。没办法，客户买的主机不能浪费，受客户指使，我只好在这个主机上安装了一个破解的WebLogic（被逼无奈啊，幸亏现在是一家了），先让我们的系统跑起来，而WebLogic安装过程异常简单，设置好用户，直接运行一个JAR就搞定了。</p>
<p><span id="more-170"></span></p>
<p>尽管那个HP主机暂时无法安装了，可是还是要用Oracle AS验证我们的程序，所以我在一个Windows主机安装了一个Oracle AS，作为我们的测试服务器。但是困难依然不断出现，其中一个就是将应用设置到根目录的问题。我们的应用写的很特别，只能跑在URI“/”下，所以这就成了我的第一个任务。</p>
<p>Oracle AS的配置界面上无法做出这个设置。我又看了很多文档，可是没有直接的答案。最后，经过反复验证，发现这个问题涉及Oracle AS的http server、web cache和orion（应用服务器），所以要实现我们的需求，需要配置上述三方面的信息，于是有了我在<a href="http://www.oracle.com.cn/">CNOUG论坛</a>的<a href="http://www.oracle.com.cn/redirect.php?fid=14&amp;tid=48232&amp;goto=nextnewset">这个回复</a>。也许是我被Oracle AS折磨的实在太痛苦了，在看到了<a href="http://www.oracle.com.cn/viewthread.php?tid=401&amp;extra=page%3D3">这篇置顶贴</a>后，我便大发厥词，<a href="http://www.oracle.com.cn/viewthread.php?tid=401&amp;page=1#pid310418">痛斥了这篇文章</a>。</p>
<p>它应该表达了我对此问题的切身感受，当然出发点是开发者。当时的Oracle AS一开始就太复杂了，如果想做简单的事情，反而要深入了解才能办到。对于开发者来说，不可能投入很多，他们需要通过知觉就可行的方式。而对于管理员来说，从简单开始变得复杂，也比一开始就复杂更利于学习。</p>
<p>Oracle和IBM做产品都有一个特点，就是架构特别清晰。例如应用服务器需要分布式计算，他们就会要单独开发一个分布式运行的平台，而WebLogic则比较直接，可能会直接去实现。当然，有时候并不是他们有意去这样做，而是因为他们都有太重的历史，每当需要什么，他们就去会寻找自己的历史，然后找到一个合适的。所以许多开始感觉很不爽的产品，常常会在深入了解后发现一些优点，因为它建立在一个更坚实的平台上，可以更好的利用这个平台。</p>
<p>如今，WebLogic已经属于Oracle，我当年的大论看起来也不是那么激烈了，感谢当年的版主，公正的保留了那些内容，如今看来，让我感慨万分。BEA系列产品的简便，如果能够有更坚实的配套基础架构，就能够发挥更大的效力；而Oracle，也不必再为抢占市场，让我发出当年的感慨了。</p>
<p>此外，这里有<a href="http://wmdata.com.cn/oracle/iwom-OFM/index.asp?frm=rocksun">ORACLE最新的中间件官方资料可以下载</a>。</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/try-goldengate/' rel='bookmark' title='Permanent Link: 玩玩GoldenGate'>玩玩GoldenGate</a></li><li><a href='http://rocksun.cn/authentication-methods/' rel='bookmark' title='Permanent Link: 认证越来越复杂'>认证越来越复杂</a></li><li><a href='http://rocksun.cn/where-is-my-money/' rel='bookmark' title='Permanent Link: 给谁充值了？'>给谁充值了？</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/relation-to-oracleas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Gimp Crop Script</title>
		<link>http://rocksun.cn/gimp-crop-script/</link>
		<comments>http://rocksun.cn/gimp-crop-script/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 12:06:35 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[crop]]></category>
		<category><![CDATA[GIMP]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[script-fu]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=297</guid>
		<description><![CDATA[Look at this photo.
It seems a little fat? In my previouse post, I had introduced the resize script. The method resize script used was a direct resize. If the ratio of the original file is not same as the target file, the file will get into distortion.  I write a script can automatically crop the image to the [...]


Related posts:<ol><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li><li><a href='http://rocksun.cn/resize-image-in-context-menu/' rel='bookmark' title='Permanent Link: Resize Image In Context Menu'>Resize Image In Context Menu</a></li><li><a href='http://rocksun.cn/rocksun-script-fu-tutorial/' rel='bookmark' title='Permanent Link: RockSun的script-fu教程'>RockSun的script-fu教程</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>Look at this photo.</p>
<div class="wp-caption aligncenter" style="width: 210px"><img title="Fat Girl?" src="http://rocksun.cn/wp-content/uploads/cape7small.jpg" alt="Fat Girl?" width="200" height="120" /><p class="wp-caption-text">Fat Girl?</p></div>
<p>It seems a little fat? In my previouse post, I had introduced the <a title="Resize with gimp script" href="http://rocksun.cn/resize-image-in-context-menu/">resize script</a>. The method <a title="Resize with gimp script" href="http://rocksun.cn/resize-image-in-context-menu/">resize script</a> used was a direct resize. If the ratio of the original file is not same as the target file, the file will get into distortion.  I write a script can automatically crop the image to the target ratio. The new result is here.</p>
<div class="wp-caption aligncenter" style="width: 510px"><img title="Croped Image" src="/wp-content/uploads/cape7-2.jpg" alt="Croped Image" width="500" height="300" /><p class="wp-caption-text">Cropped Image</p></div>
<p>This script crop the top and bottom part of the image, so the result image can fit my favorite ratio, compare the images below.</p>
<div class="wp-caption aligncenter" style="width: 210px"><img title="Not Cropped" src="http://rocksun.cn/wp-content/uploads/cape7small.jpg" alt="Not Cropped" width="200" height="120" /><p class="wp-caption-text">Not Cropped</p></div>
<div class="wp-caption aligncenter" style="width: 210px"><img title="Cropped" src="http://rocksun.cn/wp-content/uploads/cape7-2small.jpg" alt="Not Cropped" width="200" height="120" /><p class="wp-caption-text">Cropped</p></div>
<p>The girl become slim again.</p>
<p>Now let&#8217;s see the gimp script <a href="http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/rs-center-crop.scm">rs-center-crop.scm</a>:</p>
<blockquote>
<pre lang="shema">(define (script-fu-rs-center-crop filename outfilename width height)

  (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
          (drawable (car (gimp-image-get-active-layer image))))
          (let* ((original-width (car (gimp-image-width image)))
               (original-height (car (gimp-image-height image)))
               (new-width original-width)
               (new-height original-height)
               (offset-x 0)
               (offset-y 0))

               (if (&lt;= (/ original-width original-height) (/ width height))
                   (gimp-image-crop image original-width (* original-width (/ height width)) 0 (/ (- original-height (* original-width (/ height width))) 2) )
                   (gimp-image-crop image (* original-height (/ width height)) original-height (/ (- original-width (* original-height (/ width height))) 2) 0)
               )
           )

  (set! drawable (car (gimp-image-get-active-layer image)))

(gimp-file-save RUN-NONINTERACTIVE image drawable outfilename outfilename)
     (gimp-image-delete image)))</pre>
</blockquote>
<p>Copy the <a href="http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/rs-center-crop.scm">rs-center-crop.scm</a> to “D:\Program Files\GIMP-2.0\share\gimp\2.0\scripts”(If your GIMP installed at D:\Program Files\GIMP-2.0 ). Now we can write a bat <a href="http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/rs-center-crop.bat">rs-center-crop.bat</a>  to run this script. </p>
<blockquote>
<pre lang="bat">set str=%1
set str=%str:\=/%
set str2=%2
set str2=%str2:\=/%
"D:\Program Files\GIMP-2.0\bin\gimp-2.6.exe" -i --verbose -b "(script-fu-rs-center-crop \"%str%\" \"%str2%\" 200 120)" -b "(gimp-quit 0)"</pre>
</blockquote>
<p>In the last line, &#8220;200&#8243; and &#8220;100&#8243; is the target ratio. Because my file will resize to 200*120, so I set the ratio as 200 and 120. At last, we add it into the context menu, we write the reg file <a href="http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/rs-center-crop.reg">rs-center-crop.reg</a>.</p>
<blockquote>
<pre lang="reg">Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\RSGimpCrop]
@="Crop as 200*120"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\RSGimpCrop\command]
@="F:\\rocksun\\gimp-script\\rs-center-crop\\rs-center-crop.bat \"%1\" \"%1\""</pre>
</blockquote>
<p>All files you can download or checkout with subversion from<a onclick="javascript:pageTracker._trackPageview('/outbound/article/gimp-script.googlecode.com');" href="http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/"> http://gimp-script.googlecode.com/svn/trunk/rs-center-crop/</a> . I create this project to collect and produce gimp script, you can join it.</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li><li><a href='http://rocksun.cn/resize-image-in-context-menu/' rel='bookmark' title='Permanent Link: Resize Image In Context Menu'>Resize Image In Context Menu</a></li><li><a href='http://rocksun.cn/rocksun-script-fu-tutorial/' rel='bookmark' title='Permanent Link: RockSun的script-fu教程'>RockSun的script-fu教程</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/gimp-crop-script/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>刘宝瑞的相声</title>
		<link>http://rocksun.cn/liubaorui-xiangsheng/</link>
		<comments>http://rocksun.cn/liubaorui-xiangsheng/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 14:39:38 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[cross-talk]]></category>
		<category><![CDATA[liubaorui]]></category>
		<category><![CDATA[刘宝瑞]]></category>
		<category><![CDATA[相声]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=290</guid>
		<description><![CDATA[前些日子中央电视台播放了刘宝瑞的单口相声《解学士》，勾起了我儿时对于刘宝瑞的相声的印象，所以在verycd上下载了《刘宝瑞单口与对口相声集》，重温那时的感觉。
经典就是经典，完整的听了《解学士》，然后又听了其他的段子，发现还有许多以前我从来没有听过的，在单口相声上刘宝瑞的境界实在太高了。在以前其中的某些段子可能不符合社会主义的精神文明建设的需要，例如《斗法》明显有封建迷信思想的残余，但在我看来，刘宝瑞的相声中，最别扭的就是那些为社会主义歌功颂德的段子。从刘大师这方面的作品数量来看，他实在是不遗余力，可是这并没有得到应有的回报。
刘宝瑞大师是在1968年在文革的迫害中不幸去世的，而那著名的《官场斗》也只留下了6集，给我们留下了无数遗憾。网上流传着许多说法，如果我的祈祷有用的话，我希望大师的作品能够神奇的重现江湖，希望任何有线索的网友也能够帮忙寻找更多“消失”的作品。2015年是刘老诞辰100周年，有人宣称要为刘大师立铜像，我举双手赞成，大师的作品实在是巅峰的巅峰，不应该因为早逝就被遗忘，有可能的话我也要尽一份力。
在听这些老相声的过程中，我也对一些人的印象发生了变化。一个是马季，在上面说的刘宝瑞相声集中，有几个段子有马季的参与，那时马季应该非常年轻，但是从他的发音中感觉，很震撼，很有特色，那么年轻就有那么好的把握，绝不是改革开放后那些应景之作中的表现。再一个就是郭全保，以前以为他也就是捧人的，但是在他和刘宝瑞所说的《当行论》中，作为逗人，他模仿当铺先生那段实在太绝了，充分展示了自己的功底。


Related posts:分支模式-软件配置管理（SCM）模式介绍盛名之下 海角7号相声宗师张寿臣



Related posts:<ol><li><a href='http://rocksun.cn/scm-pattern-intros/' rel='bookmark' title='Permanent Link: 分支模式-软件配置管理（SCM）模式介绍'>分支模式-软件配置管理（SCM）模式介绍</a></li><li><a href='http://rocksun.cn/cape-no-7/' rel='bookmark' title='Permanent Link: 盛名之下 海角7号'>盛名之下 海角7号</a></li><li><a href='http://rocksun.cn/zhangshouchen-crosstalk/' rel='bookmark' title='Permanent Link: 相声宗师张寿臣'>相声宗师张寿臣</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>前些日子中央电视台播放了刘宝瑞的单口相声《解学士》，勾起了我儿时对于刘宝瑞的相声的印象，所以在verycd上下载了<a href="http://www.verycd.com/topics/135494/" target="_blank">《<span class="hilite">刘宝</span><span class="hilite">瑞</span>单口与对口相声集》</a>，重温那时的感觉。</p>
<div class="wp-caption aligncenter" style="width: 610px"><img title="刘宝瑞" src="/wp-content/uploads/liubaorui.jpg" alt="刘宝瑞" width="600" height="384" /><p class="wp-caption-text">刘宝瑞</p></div>
<p>经典就是经典，完整的听了《解学士》，然后又听了其他的段子，发现还有许多以前我从来没有听过的，在单口相声上刘宝瑞的境界实在太高了。在以前其中的某些段子可能不符合社会主义的精神文明建设的需要，例如《斗法》明显有封建迷信思想的残余，但在我看来，刘宝瑞的相声中，最别扭的就是那些为社会主义歌功颂德的段子。从刘大师这方面的作品数量来看，他实在是不遗余力，可是这并没有得到应有的回报。</p>
<p>刘宝瑞大师是在1968年在文革的迫害中不幸去世的，而那著名的《官场斗》也只留下了6集，给我们留下了无数遗憾。网上流传着许多说法，如果我的祈祷有用的话，我希望大师的作品能够神奇的重现江湖，希望任何有线索的网友也能够帮忙寻找更多“消失”的作品。2015年是刘老诞辰100周年，有人宣称要为刘大师立铜像，我举双手赞成，大师的作品实在是巅峰的巅峰，不应该因为早逝就被遗忘，有可能的话我也要尽一份力。</p>
<p>在听这些老相声的过程中，我也对一些人的印象发生了变化。一个是马季，在上面说的刘宝瑞相声集中，有几个段子有马季的参与，那时马季应该非常年轻，但是从他的发音中感觉，很震撼，很有特色，那么年轻就有那么好的把握，绝不是改革开放后那些应景之作中的表现。再一个就是郭全保，以前以为他也就是捧人的，但是在他和刘宝瑞所说的《当行论》中，作为逗人，他模仿当铺先生那段实在太绝了，充分展示了自己的功底。</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/scm-pattern-intros/' rel='bookmark' title='Permanent Link: 分支模式-软件配置管理（SCM）模式介绍'>分支模式-软件配置管理（SCM）模式介绍</a></li><li><a href='http://rocksun.cn/cape-no-7/' rel='bookmark' title='Permanent Link: 盛名之下 海角7号'>盛名之下 海角7号</a></li><li><a href='http://rocksun.cn/zhangshouchen-crosstalk/' rel='bookmark' title='Permanent Link: 相声宗师张寿臣'>相声宗师张寿臣</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/liubaorui-xiangsheng/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>盛名之下 海角7号</title>
		<link>http://rocksun.cn/cape-no-7/</link>
		<comments>http://rocksun.cn/cape-no-7/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 12:57:31 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[movie]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[cape]]></category>
		<category><![CDATA[taiwan]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=287</guid>
		<description><![CDATA[前一段时间金马奖，据说《海角七号》未能获得最重的奖项，不少专家扼腕叹息，因为很多专家认为《海角七号》是台湾近几年突破性的电影。
不过今天一看，感觉并没有高到那个程度。我觉得除了混杂的台湾文化和日本邮件的线索，这不过是一部简单的励志片。我感觉不到那封二战后日本恋人的邮件和主要情节的关系，可能是我理解不了。可能那部分也是台湾观众最看重的，也是大陆这边感到费解的。
这部电影让我想起了尼古拉斯.凯奇主演的上尉的曼陀铃，但是那部电影以侵略者和当地居民的感情为主要的故事冲突，我们有机会了解其中的各个方面，所以我们能够清楚的了解导演的意图。但是这部海角七号在这方面很单一，仅仅是讲述恋人间的那种思念，其中的历史背景并没有再去描述，我们无法搞清楚导演的意图。
总之，我觉得《海角七号》是一部好电影，观看的过程中很多时候让我很激动，但是它没有达到那种高度，在恋人邮件的那条线索上如果能有更细致的设计，或许会让我们看清楚它的含义。不过也许这也是导演的意图，有些东西可能是不能说清楚的。


Related posts:贫民窟的百万富翁疯狂的赛车分支模式-软件配置管理（SCM）模式介绍



Related posts:<ol><li><a href='http://rocksun.cn/slumdog-millionaire/' rel='bookmark' title='Permanent Link: 贫民窟的百万富翁'>贫民窟的百万富翁</a></li><li><a href='http://rocksun.cn/crazy-racer/' rel='bookmark' title='Permanent Link: 疯狂的赛车'>疯狂的赛车</a></li><li><a href='http://rocksun.cn/scm-pattern-intros/' rel='bookmark' title='Permanent Link: 分支模式-软件配置管理（SCM）模式介绍'>分支模式-软件配置管理（SCM）模式介绍</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>前一段时间金马奖，据说<a href="http://www.mtime.com/movie/80347/">《海角七号》</a>未能获得最重的奖项，不少专家扼腕叹息，因为很多专家认为《海角七号》是台湾近几年突破性的电影。</p>
<div class="wp-caption aligncenter" style="width: 510px"><img title="海角七号" src="/wp-content/uploads/cape7.jpg" alt="海角七号" width="500" height="333" /><p class="wp-caption-text">海角七号</p></div>
<p>不过今天一看，感觉并没有高到那个程度。我觉得除了混杂的台湾文化和日本邮件的线索，这不过是一部简单的励志片。我感觉不到那封二战后日本恋人的邮件和主要情节的关系，可能是我理解不了。可能那部分也是台湾观众最看重的，也是大陆这边感到费解的。</p>
<p>这部电影让我想起了尼古拉斯.凯奇主演的<a href="http://www.mtime.com/movie/11086/">上尉的</a><em><span style="font-style: normal;"><a href="http://www.mtime.com/movie/11086/">曼陀铃</a>，但是那部电影以侵略者和当地居民的感情为主要的故事冲突，我们有机会了解其中的各个方面，所以我们能够清楚的了解导演的意图。但是这部海角七号在这方面很单一，仅仅是讲述恋人间的那种思念，其中的历史背景并没有再去描述，我们无法搞清楚导演的意图。</span></em></p>
<p>总之，我觉得<a href="http://www.mtime.com/movie/80347/">《海角七号》</a>是一部好电影，观看的过程中很多时候让我很激动，但是它没有达到那种高度，在恋人邮件的那条线索上如果能有更细致的设计，或许会让我们看清楚它的含义。不过也许这也是导演的意图，有些东西可能是不能说清楚的。</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/slumdog-millionaire/' rel='bookmark' title='Permanent Link: 贫民窟的百万富翁'>贫民窟的百万富翁</a></li><li><a href='http://rocksun.cn/crazy-racer/' rel='bookmark' title='Permanent Link: 疯狂的赛车'>疯狂的赛车</a></li><li><a href='http://rocksun.cn/scm-pattern-intros/' rel='bookmark' title='Permanent Link: 分支模式-软件配置管理（SCM）模式介绍'>分支模式-软件配置管理（SCM）模式介绍</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/cape-no-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My first wordpress plugin</title>
		<link>http://rocksun.cn/write-my-first-wordpress-plugin/</link>
		<comments>http://rocksun.cn/write-my-first-wordpress-plugin/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 03:26:14 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=200</guid>
		<description><![CDATA[I choose a new wordpress template some days ago, it looks good. But have some problems like this. I spent about four hours to do this, because I know little about php and had never written wordpress plugins. Now I think it is very interesting to write the plugin. So I want to introduce it.
Where [...]


Related posts:<ol><li><a href='http://rocksun.cn/flash-zoom/' rel='bookmark' title='Permanent Link: Flash Zoom'>Flash Zoom</a></li><li><a href='http://rocksun.cn/ftp-image-with-conext-menu/' rel='bookmark' title='Permanent Link: FTP image with Conext Menu'>FTP image with Conext Menu</a></li><li><a href='http://rocksun.cn/write-plugin-for-flow/' rel='bookmark' title='Permanent Link: 要想热 写插件'>要想热 写插件</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>I choose a new wordpress template some days ago, it looks good. But have some problems like <a title="Flash Zoom" href="http://rocksun.cn/flash-zoom/">this</a>. I spent about four hours to do this, because I know little about php and had never written wordpress plugins. Now I think it is very interesting to write the plugin. So I want to introduce it.</p>
<h3>Where to get start?</h3>
<p>First, I know I will filter the source, so I regist the filter with this function:</p>
<pre lang="php">add_filter('the_content','filter_shrink');</pre>
<p>The &#8220;the_content&#8221; is the filter&#8217;s name, and filter_shrink is my filter function, I will write it later. Then I should could change the width and height from option page, so I write:</p>
<pre lang="php">add_action('admin_menu', 'flash_zoom_options_page');</pre>
<p>This function told wordpress I will regist a menu in &#8220;admin_menu&#8221; with the flash_zoom_options_page function.</p>
<h3>implements the functions</h3>
<p>Now let&#8217;s see the filter_shrink:</p>
<pre lang="php">function replaceSize($matches)
{
  global $flashzoom_settings;
  $replaceStr = ' width="'.$flashzoom_settings['target_width'].'" height="'.$flashzoom_settings['target_height'].'" ';
  return $matches[1].$replaceStr.$matches[3].$replaceStr.$matches[5];
}

function filter_shrink($content) {
    global $flashzoom_settings;
    if(is_home()){
      $content = preg_replace_callback(
           '|(&lt;'.'object.*)(width="d*"s*height="d*")(.*)(width="d*"s*height="d*")(.*&lt;/object&gt;)|',
            "replaceSize",
            $content);
    }

    return $content;
}</pre>
<p>Look at the &#8220;$flashzoom_settings&#8221;, it is the length and height that stored in wordpress. I just use preg_replace_callback function to replace the origin width and height. The php regexp is strange, especially the usage of &#8220;|&#8221;.</p>
<p>Then we can see the flash_zoom_options_page function:</p>
<pre lang="php" colla="-">function isInteger($input){
  return preg_match('@^[-]?[0-9]+$@',trim($input)) === 1;
}

function flash_zoom_options_page() {
		add_options_page('FlashZoom', 'FlashZoom', 8, basename(__FILE__), 'flash_zoom_options_subpanel');
}

function flash_zoom_options_subpanel() {
	global $ol_flash, $flashzoom_settings, $_POST, $wp_rewrite;

	if (current_user_can('activate_plugins')) {
		// Easiest test to see if we have been submitted to
		if(isset($_POST['target_width']) || isset($_POST['target_height'])) {
		  if(!isInteger($_POST['target_width'])||!isInteger($_POST['target_height'])){
		    $ol_flash = "Please input the number!";
		  }else{
			// Now we check the hash, to make sure we are not getting CSRF
			  if(fb_is_hash_valid($_POST['token'])) {
				  if (isset($_POST['target_width'])) {
					  $flashzoom_settings['target_width'] = $_POST['target_width'];
					  update_option('flashzoom_settings',$flashzoom_settings);
					  $ol_flash = "Your settings have been saved.";
				  }
				  if (isset($_POST['target_height'])) {
					  $flashzoom_settings['target_height'] = $_POST['target_height'];
					  update_option('flashzoom_settings',$flashzoom_settings);
					  $ol_flash = "Your settings have been saved.";
				  }
			  } else {
				  // Invalid form hash, possible CSRF attempt
				  $ol_flash = "Security hash missing.";
			  } // endif fb_is_hash_valid
			} //endif isInteger
		} // endif isset(feedburner_url)
	} else {
		$ol_flash = "You don't have enough access rights.";
	}
	if ($ol_flash != '') echo '
<div id="message" class="updated fade">

' . $ol_flash . '</div>

';

	if (current_user_can('activate_plugins')) {
	  $temp_hash = fb_generate_hash();
		fb_store_hash($temp_hash);
		echo '
<div class="wrap">';
		echo '
<h2>Set Up Flash Zoom Size</h2>

';
		echo '
<form method="post">
<input name="redirect" type="hidden" value="true" />
<input name="token" type="hidden" value="' . fb_retrieve_hash() . '" />
<table class="form-table" border="0">
<tbody>
<tr valign="top">
<th scope="row"><label for="target_width">Target Width</label></th>
<td>
<input id="target_width" maxlength="4" name="target_width" size="4" type="text" value="' . htmlentities($flashzoom_settings['target_width']) . '" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="target_height">Target Height</label></th>
<td>
<input id="target_height" maxlength="4" name="target_height" size="4" type="text" value="' . htmlentities($flashzoom_settings['target_height']) . '" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="Save" />
</form>

';
		echo '</div>

';
	} else {
		echo '
<div class="wrap">

Sorry, you are not allowed to access this page.</div>

';
	}

}</pre>
<p>The flash_zoom_options_page function create an panel flash_zoom_options_subpanel, and the first part of flash_zoom_options_subpanel will check the parameters and store it into database, the other part will display the form.</p>
<p>We have not use the install step, so we add these two lines .</p>
<pre lang="php"  colla="-">add_option('flashzoom_settings',$data,'FlashZoom Options');
$flashzoom_settings = get_option('flashzoom_settings');</pre>
<p>Last, don&#8217;t forget the plugin header,  so the wordpress can recognize the plugin. The full plugin is:</p>
<pre lang="php"  colla="-">/*
Plugin Name: Flash Zoom
Plugin URI: http://rocksun.cn/flash-zoom/
Description: zoom the flash in homepage.
Version: 0.8
Author: Rock Sun
Author URI: http://rocksun.cn/
*/

add_option('flashzoom_settings',$data,'FlashZoom Options');
$flashzoom_settings = get_option('flashzoom_settings');

function isInteger($input){
  return preg_match('@^[-]?[0-9]+$@',trim($input)) === 1;
}

function flash_zoom_options_page() {
		add_options_page('FlashZoom', 'FlashZoom', 8, basename(__FILE__), 'flash_zoom_options_subpanel');
}

function flash_zoom_options_subpanel() {
	global $ol_flash, $flashzoom_settings, $_POST, $wp_rewrite;

	if (current_user_can('activate_plugins')) {
		// Easiest test to see if we have been submitted to
		if(isset($_POST['target_width']) || isset($_POST['target_height'])) {
		  if(!isInteger($_POST['target_width'])||!isInteger($_POST['target_height'])){
		    $ol_flash = "Please input the number!";
		  }else{
			// Now we check the hash, to make sure we are not getting CSRF
			  if(fb_is_hash_valid($_POST['token'])) {
				  if (isset($_POST['target_width'])) {
					  $flashzoom_settings['target_width'] = $_POST['target_width'];
					  update_option('flashzoom_settings',$flashzoom_settings);
					  $ol_flash = "Your settings have been saved.";
				  }
				  if (isset($_POST['target_height'])) {
					  $flashzoom_settings['target_height'] = $_POST['target_height'];
					  update_option('flashzoom_settings',$flashzoom_settings);
					  $ol_flash = "Your settings have been saved.";
				  }
			  } else {
				  // Invalid form hash, possible CSRF attempt
				  $ol_flash = "Security hash missing.";
			  } // endif fb_is_hash_valid
			} //endif isInteger
		} // endif isset(feedburner_url)
	} else {
		$ol_flash = "You don't have enough access rights.";
	}
	if ($ol_flash != '') echo '
<div id="message" class="updated fade">

' . $ol_flash . '</div>

';

	if (current_user_can('activate_plugins')) {
	  $temp_hash = fb_generate_hash();
		fb_store_hash($temp_hash);
		echo '
<div class="wrap">';
		echo '
<h2>Set Up Flash Zoom Size</h2>

';
		echo '
<form method="post">
<input name="redirect" type="hidden" value="true" />
<input name="token" type="hidden" value="' . fb_retrieve_hash() . '" />
<table class="form-table" border="0">
<tbody>
<tr valign="top">
<th scope="row"><label for="target_width">Target Width</label></th>
<td>
<input id="target_width" maxlength="4" name="target_width" size="4" type="text" value="' . htmlentities($flashzoom_settings['target_width']) . '" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="target_height">Target Height</label></th>
<td>
<input id="target_height" maxlength="4" name="target_height" size="4" type="text" value="' . htmlentities($flashzoom_settings['target_height']) . '" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="Save" />
</form>

';
		echo '</div>

';
	} else {
		echo '
<div class="wrap">

Sorry, you are not allowed to access this page.</div>

';
	}

}

function replaceSize($matches)
{
  global $flashzoom_settings;
  $replaceStr = ' width="'.$flashzoom_settings['target_width'].'" height="'.$flashzoom_settings['target_height'].'" ';
  return $matches[1].$replaceStr.$matches[3].$replaceStr.$matches[5];
}

function filter_shrink($content) {
    global $flashzoom_settings;
    if(is_home()){
      $content = preg_replace_callback(
           '|('.'<object width="100" height="100" type="application/x-shockwave-flash"></object></pre>


<p>Related posts:<ol><li><a href='http://rocksun.cn/flash-zoom/' rel='bookmark' title='Permanent Link: Flash Zoom'>Flash Zoom</a></li><li><a href='http://rocksun.cn/ftp-image-with-conext-menu/' rel='bookmark' title='Permanent Link: FTP image with Conext Menu'>FTP image with Conext Menu</a></li><li><a href='http://rocksun.cn/write-plugin-for-flow/' rel='bookmark' title='Permanent Link: 要想热 写插件'>要想热 写插件</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/write-my-first-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Zoom</title>
		<link>http://rocksun.cn/flash-zoom/</link>
		<comments>http://rocksun.cn/flash-zoom/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 02:44:38 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rocksun.cn/flash-zoom/</guid>
		<description><![CDATA[Donate
If the plugin helped you, you can make donate.















Currency:&#160;

U.S. Dollar
Euro
Pound Sterling
Swiss Franc





About
If you have video blog, you must want to have a beautiful home page with many videos. But the different sizes of videos will make your home ugly like this:

You can change the source of the video to fit the homepage, but in the [...]


Related posts:<ol><li><a href='http://rocksun.cn/write-my-first-wordpress-plugin/' rel='bookmark' title='Permanent Link: My first wordpress plugin'>My first wordpress plugin</a></li><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li><li><a href='http://rocksun.cn/gimp-crop-script/' rel='bookmark' title='Permanent Link: Gimp Crop Script'>Gimp Crop Script</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<h3>Donate</h3>
<p>If the plugin helped you, you can make donate.</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="border:0;margin:0;padding:0">
<input name="cmd" value="_xclick" type="hidden"/>
<input name="business" value="sbversion@gmail.com" type="hidden"/>
<input name="no_shipping" value="1" type="hidden">
<input name="cancel_return" value="http://rocksun.cn/flash-zoom/" type="hidden"/>
<input name="cn" value="Message to Recipient of Donation (Optional)" type="hidden"/>
<input name="cbt" value="Continue" type="hidden"/>
<input name="tax" value="0" type="hidden"/>
<input name="bn" value="PP-DonationsBF" type="hidden"/>
<input name="item_name" value="Donation to the Flash Zoom" type="hidden"/>
<table border="0" cellpadding="0" cellspacing="0" width="450"/>
<tr>
<td>
<input src="/paypaldonate.gif" name="submit" alt="Donate via PayPal" type="image"/>
</td>
<td>Currency:&nbsp;<br />
<select name="currency_code">
<option value="USD" selected="selected">U.S. Dollar</option><br />
<option value="EUR">Euro</option><br />
<option value="GBP">Pound Sterling</option><br />
<option value="CHF">Swiss Franc</option><br />
</select>
</td>
</tr>
</table>
</form>
<h3>About</h3>
<p>If you have video blog, you must want to have a beautiful home page with many videos. But the different sizes of videos will make your home ugly like this:</p>
<p style="text-align: center;"><a href="http://rocksun.cn/wp-content/uploads/2008/12/image.png"><img class="aligncenter" style="border: 0pt none;" src="http://rocksun.cn/wp-content/uploads/2008/12/image-thumb.png" border="0" alt="image" width="302" height="232" /></a></p>
<p>You can change the source of the video to fit the homepage, but in the single page the video will be too small to see. Flash Zoom can change the video&#8217;s size in home without change the source.</p>
<h3>Install and config:</h3>
<p><a title="Flash Zoom" href="http://rocksun.cn/rockwp/flash-zoom.zip">Download the plugin</a> and extracted to plugins directory, activate it and you will see the FlashZoom menus in settings. Click it and input the valid width and height, and you will see the result in home page.</p>
<p style="text-align: center;"><a href="http://rocksun.cn/wp-content/uploads/2008/12/image1.png"><img class="aligncenter" style="border: 0pt none;" src="http://rocksun.cn/wp-content/uploads/2008/12/image-thumb1.png" border="0" alt="image" width="291" height="213" /></a></p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/write-my-first-wordpress-plugin/' rel='bookmark' title='Permanent Link: My first wordpress plugin'>My first wordpress plugin</a></li><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li><li><a href='http://rocksun.cn/gimp-crop-script/' rel='bookmark' title='Permanent Link: Gimp Crop Script'>Gimp Crop Script</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/flash-zoom/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>我的Wordpress又升级了</title>
		<link>http://rocksun.cn/upgrade-wordpress-to-265/</link>
		<comments>http://rocksun.cn/upgrade-wordpress-to-265/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 11:52:22 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=122</guid>
		<description><![CDATA[感觉升级的次数比写blog的次数还要多，不过这一次我要好好写写升级的过程，也算给和我同样遭遇的wordpress用户一个提示。
因为从2.0就开始使用wordpress了，那时使用的数据库编码经常不是utf8的，所以创建表的语句就象这样：
CREATE TABLE `rs_comments` (
`comment_ID` bigint(20) unsigned NOT NULL auto_increment,
`comment_post_ID` int(11) NOT NULL default '0',
`comment_author` tinytext collate latin1_general_ci NOT NULL,
`comment_author_email` varchar(100) collate latin1_general_ci NOT NULL default '',
`comment_author_url` varchar(200) collate latin1_general_ci NOT NULL default '',
`comment_author_IP` varchar(100) collate latin1_general_ci NOT NULL default '',
`comment_date` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_content` text collate latin1_general_ci [...]


Related posts:<ol><li><a href='http://rocksun.cn/write-my-first-wordpress-plugin/' rel='bookmark' title='Permanent Link: My first wordpress plugin'>My first wordpress plugin</a></li><li><a href='http://rocksun.cn/flash-zoom/' rel='bookmark' title='Permanent Link: Flash Zoom'>Flash Zoom</a></li><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li></ol>

]]></description>
			<content:encoded><![CDATA[<p>感觉升级的次数比写blog的次数还要多，不过这一次我要好好写写升级的过程，也算给和我同样遭遇的wordpress用户一个提示。</p>
<p>因为从2.0就开始使用wordpress了，那时使用的数据库编码经常不是utf8的，所以创建表的语句就象这样：</p>
<pre lang="sql">CREATE TABLE `rs_comments` (
`comment_ID` bigint(20) unsigned NOT NULL auto_increment,
`comment_post_ID` int(11) NOT NULL default '0',
`comment_author` tinytext collate latin1_general_ci NOT NULL,
`comment_author_email` varchar(100) collate latin1_general_ci NOT NULL default '',
`comment_author_url` varchar(200) collate latin1_general_ci NOT NULL default '',
`comment_author_IP` varchar(100) collate latin1_general_ci NOT NULL default '',
`comment_date` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_content` text collate latin1_general_ci NOT NULL,
`comment_karma` int(11) NOT NULL default '0',
`comment_approved` enum('0','1','spam') collate latin1_general_ci NOT NULL default '1',
`comment_agent` varchar(255) collate latin1_general_ci NOT NULL default '',
`comment_type` varchar(20) collate latin1_general_ci NOT NULL default '',
`comment_parent` bigint(20) NOT NULL default '0',
`user_id` bigint(20) NOT NULL default '0',
PRIMARY KEY  (`comment_ID`),
KEY `comment_approved` (`comment_approved`),
KEY `comment_post_ID` (`comment_post_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=40397 ;</pre>
<p>而最新的wordpress，导出来的表对应的都是utf8编码的，所以应该把上述语句替换为：</p>
<pre lang="sql">CREATE TABLE `rs_comments` (
`comment_ID` bigint(20) unsigned NOT NULL auto_increment,
`comment_post_ID` int(11) NOT NULL default '0',
`comment_author` tinytext  NOT NULL,
`comment_author_email` varchar(100)  NOT NULL default '',
`comment_author_url` varchar(200)  NOT NULL default '',
`comment_author_IP` varchar(100)  NOT NULL default '',
`comment_date` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
`comment_content` text  NOT NULL,
`comment_karma` int(11) NOT NULL default '0',
`comment_approved` enum('0','1','spam')  NOT NULL default '1',
`comment_agent` varchar(255)  NOT NULL default '',
`comment_type` varchar(20)  NOT NULL default '',
`comment_parent` bigint(20) NOT NULL default '0',
`user_id` bigint(20) NOT NULL default '0',
PRIMARY KEY  (`comment_ID`),
KEY `comment_approved` (`comment_approved`),
KEY `comment_post_ID` (`comment_post_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=40397 ;</pre>
<p>注意我的单个字段也有编码设置，应该都清除掉。然后我们就把这些数据用phpmyadmin导入到数据库里，如果顺利地话通过phpmyadmin 看到的都是正常的汉字。然后升级文件，网上提到要修改wp-config的设置，我觉得那都不是长远之计，最好不修改。把最新版本的wp-config- sample.php，改名为wp-config.php，然后修改其中的数据库连接信息，上传到服务器上就好了。跑到wp-admin下就会自动提示需要升级结构，点确定就可以了，然后我们就有了完全utf8环境的wordpress了。</p>


<p>Related posts:<ol><li><a href='http://rocksun.cn/write-my-first-wordpress-plugin/' rel='bookmark' title='Permanent Link: My first wordpress plugin'>My first wordpress plugin</a></li><li><a href='http://rocksun.cn/flash-zoom/' rel='bookmark' title='Permanent Link: Flash Zoom'>Flash Zoom</a></li><li><a href='http://rocksun.cn/watermark-with-gimp-script/' rel='bookmark' title='Permanent Link: Watermark: With GIMP Script'>Watermark: With GIMP Script</a></li></ol></p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/upgrade-wordpress-to-265/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>后版权世界的希望</title>
		<link>http://rocksun.cn/promise-of-copyright/</link>
		<comments>http://rocksun.cn/promise-of-copyright/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 13:11:17 +0000</pubDate>
		<dc:creator>rocksun</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[recommend]]></category>
		<category><![CDATA[copyright]]></category>

		<guid isPermaLink="false">http://rocksun.cn/?p=120</guid>
		<description><![CDATA[<p><img style="margin: 5px" src="http://www.questioncopyright.org/cm/images/logo-small-white-on-blue.jpg" align="left"> </p>
<p>翻译自Karl Fogel在QuestionCopyright.org上的文章，原文地址：<a title="http://questioncopyright.org/promise/" href="http://questioncopyright.org/promise/">http://questioncopyright.org/promise/</a> ，转载请注明出处。</p>
<p>[这是QuestionCopyright.org的第一篇文章，也是关于我们的深入介绍，但如果你希望看一些简短的介绍，可以看<a href="http://www.questioncopyright.org/great_ideas_live_forever">这里</a>，或者我们的<a href="http://www.questioncopyright.org/faq">FAQ</a>。] </p>
<p>有一类人不会为唱片工业对于文件共享者随机起诉的策略感到吃惊：版权历史学家。他们早就知道了其他人正在慢慢发现的事实：版权与艺术家因作品而得到收入无关，也绝不是为了支持创作者而设计，它是由发行商（更确切地说是出版商，包括当代的唱片公司。）设计并为他们服务的。但是现在，互联网给了我们一个没有发售成本的世界，再为了支付集中发售的成本而限制分享变得没有任何意义。放弃版权现在不仅是一种可能，也是能够令人满意的。无论从经济学还是从审美学观点上，艺术家和受众都可以获益。不再需要通过公司决策者决定哪些东西可以发售，有一个更细致的过滤过程，能够只根据个人功勋传播作品。我们会看到一个更古老和更富有创造力的宇宙学的回归，人们可以自由的拷贝并借鉴其他人的成果，并成为正常创作过程的一部分，成为对他人原材料的致谢并进行改进的一种方式，而以前关于艺术家需要版权维持生活的谎言将会被揭露出来，一直以来那都是借口。 </p>


No related posts.]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 5px" src="http://www.questioncopyright.org/cm/images/logo-small-white-on-blue.jpg" alt="" align="left" /></p>
<p>翻译自Karl Fogel在QuestionCopyright.org上的文章，原文地址：<a title="http://questioncopyright.org/promise/" href="http://questioncopyright.org/promise/">http://questioncopyright.org/promise/</a> ，转载请注明出处。</p>
<p>[这是QuestionCopyright.org的第一篇文章，也是关于我们的深入介绍，但如果你希望看一些简短的介绍，可以看<a href="http://www.questioncopyright.org/great_ideas_live_forever">这里</a>，或者我们的<a href="http://www.questioncopyright.org/faq">FAQ</a>。]</p>
<p>有一类人不会为唱片工业对于文件共享者随机起诉的策略感到吃惊：版权历史学家。他们早就知道了其他人正在慢慢发现的事实：版权与艺术家因作品而得到收入无关，也绝不是为了支持创作者而设计，它是由发行商（更确切地说是出版商，包括当代的唱片公司。）设计并为他们服务的。但是现在，互联网给了我们一个没有发售成本的世界，再为了支付集中发售的成本而限制分享变得没有任何意义。放弃版权现在不仅是一种可能，也是能够令人满意的。无论从经济学还是从审美学观点上，艺术家和受众都可以获益。不再需要通过公司决策者决定哪些东西可以发售，有一个更细致的过滤过程，能够只根据个人功勋传播作品。我们会看到一个更古老和更富有创造力的宇宙学的回归，人们可以自由的拷贝并借鉴其他人的成果，并成为正常创作过程的一部分，成为对他人原材料的致谢并进行改进的一种方式，而以前关于艺术家需要版权维持生活的谎言将会被揭露出来，一直以来那都是借口。</p>
<p><span id="more-120"></span></p>
<p>然而一切都不会发生，如果这个行业有自己的方法。在三个世纪中，出版业努力模糊版权的真正起源，而不断提升版权是由作家和艺术家加发明的神话。即使现在，他们还是永无休止的进行着强化针对分享的法律的斗争，期望所有国家必须服从最严格版权政策的国际条约，而最重要的是要确保公众决不会对这个系统的真正受益者发出疑问。</p>
<p>这些努力的回报我们可以看一下公众对于文件共享诉讼的反应，虽然大多数人认为这个行业作的太过分了，但他们觉得那只是程度上的错误，他们还是认为唱片公司有正确的论点，只是为此诉诸了过多的武力。</p>
<p>为了阅读版权的真正历史，就要理解这种反应为这个产业谋取了完全的利益。唱片公司不会在意他们诉讼的成败，从长远来看，他们甚至不会期望消除文件共享。他们有更大的目标。他们为保持人们的思想而战，也就是对于创造性作品的态度——必须有人拥有智力产品，并控制产品的复制。通过将这个问题置为一场对立的战争，一方是困境中艺术家的，据称他们需要版权来支付租金；而另一方则是喜欢从互联网上下载歌曲和故事拷贝而不愿意付出公平费用的未开化的大众，这个产业取得了令人吃惊的成功。他们已经成功地使用术语“剽窃（piracy）”和“偷（theft）”替代了更准确的术语“复制（copying）”——就好像偷你的自行车（现在你没有自行车了）与复制你的歌曲（现在我们都有了）毫无区别。最重要的是，这个行业的宣传已经形成了一个寻常的观念：版权是创作者的谋生手段——没有版权，智力产品的引擎就会停止，而艺术家会没有方法和动力来生产新的作品。</p>
<p>但是当我们近距离的关注一下历史，就会发现版权从来都不是创造力繁荣的主要因素。版权是16世纪英格兰政府审查制度的副产品，并没有作者起义并突然要求防止其他人复制他们的作品；作者远没有将复制视作偷窃，他们更愿意把它当作一种恭维。大部分创作性作品会依赖于多种资金来源：佣金（commissions）、教学工作、津贴（grant）和薪水（situation）。它们所作的是让一种特定的商业模型成为可能——集中发售的大规模印刷——使得少量幸运的作品拥有更广泛的读者，并让发行商获取可观的利润。</p>
<p>互联网的到来，带来瞬时的、免费的共享，使得这个商业模型毫无用处——不仅是毫无用处，而且是版权所自称的把社会的完全利益排在第一位的障碍。禁止人们自由的分享信息只维护了出版商的利益，尽管这个产业希望我们相信禁止共享事关艺术家的谋生，但他们的主张经不过简单的推敲。对于大多数艺术家，版权不会带来任何经济利益。诚然，有少数明星——一些极富天分的——他们的作品由这个产业支持；他们获取了最大份额的发售投资，并产生了相当的巨大利润。这些艺术家获取了比一般协议更高的份额，因为他们处在更强大的谈判位置。不出意外地，这些明星成为这个行业经常拿出来的例子，来证明版权带来的利益。</p>
<p>将这个小团体视作代表将会混淆市场营销和事实。在当前的分赃制度下，大多数艺术家与他们没有任何相似之处，而且永远都不会。这就是为什么在三百年后，故事还是那么老套，穷困的艺术家依然存在并活的很好。</p>
<p>出版行业的战斗是要维护版权被其支配的地位，而不是纯利己的工作，但它将一个明显的选择强加给我们。可以看着我们的大多数文化遗产被塞进了自动售货机，并卖回给我们——或者，让我们重新审视版权神话，找到另一条路。</p>
<hr />第一部版权法是一部审查法，它并没有保护作者的权利，或者鼓励他们产出新的作品。在16世纪的英格兰，作者的权利没有任何危险，而印刷机（世界上第一台复印机）的到来给了作家极大的动力。事实上，致使英国政府对于生产了太多的而不是太少的作品而感到关切，新技术导致太多煽动性的阅读材料在第一时间得到广泛传播，而政府迫切需要控制印刷品的洪流，于是审查制度便和道路修建一样成为合法的行政职能。</p>
<p>政府选择的方法是建立私营部门审查员的行会，也就是伦敦出版商公司，他们的利润依赖于他们履行职能的效果。出版商们被赋予英格兰印刷业的皇家垄断权，包括老作品和新作品，作为回报他们需要严格监控印刷的内容。他们的许可证使他们具有印刷的专营权，也允许他们查收未授权的印刷机和图书，甚至可以焚烧非法印刷的图书。如果没有此类公司的登记，没有图书能得到印刷，而未经王权的审查或者出版商的自审，没有作品可以得到登记。出版商公司实际上成为政府私有的盈利性信息警察部门<a href="#1">[1]</a>。</p>
<p>这个系统完全是为了维护书商和政府的利益设计，进入公司登记的新书会纳入某个公司成员的名下，而不是作者的名下。根据惯例，注册这个条目的人会取得“版权”，也就是出版这本书的专营权利，而其他公司成员则没有这个权力，而公司的助理法庭会解决侵权争议<a href="#2">[2]</a>。</p>
<p>这不只是早已存在的版权在形式上的最新表现，并不是以前作者正式拥有版权，而那时则被转移了出版商。出版商的权利是新出现的权利，尽管这建立在将垄断权利长期赋予给行会作为控制方法的基础之上。在此刻之前，版权——作为一种私下保留，防止他人拷贝的原始权利——并不存在。如果有机会，人们可以很自然的印刷他们喜欢的作品，现在的许多作品都是由于这类活动而得以幸存。当然，因为其潜在的损害他人名誉的影响、属于隐私信息、或政府认为其具备危险性和煽动性的原因，也应当禁止分发特定的文档。但是这些原因只是关于公共安全或名誉损害，而不是关于财产所有权。也有一些例外情况，例如有一种特别权利（那叫做“专利”）允许对特种类型的图书的排他印刷。但直到出版商公司出现之前，并没有一个针对一般印刷的禁令，也没有版权是某个私有方合法财产的概念。</p>
<p>在大约130年中，政府和出版商的这种合作关系工作良好，出版商从他们的垄断当中获取利润，而通过出版商，政府运用了对信息传播的控制。在17世纪末，由于重大的政治变化，政府放宽了审查政策，允许出版商的垄断过期。这意味着印刷品可以回到其以前的无政府状态，这当然是对出版商公司成员的一个直接的经济威胁，他们已经习惯于拥有制造图书的垄断许可证。垄断权利的消亡对于长期压制的作者和独立印刷应该是一个好消息，但对出版商来说是一个灾难，而他们立刻设计了一个策略以在新的自由政治气候中保留他们的地位。</p>
<p>出版商将其策略基于一项至关重要的认识，如果之后还想和出版集团一起工作：作者不能有发行他们自己作品的方法。写一本书只需要钢笔、纸和时间。但是发行一本书需要印刷机、物流网络、原料和排版等先期投资。因此，出版商有理由认为那些希望写作的人会一直需要出版商的合作才能让作品广泛传播。他们的策略充分利用这个事实，他们跑到国会并提供那时还十分新奇的论点，作者对他们所写的有与生俱来的所有权，此外，这种所有权能够通过契约传递给其他方，就像其他形式的财产。</p>
<p>他们的论点成功的说服国会，出版商成功的避免了对于审查制度的憎恨，而新的版权源自作者，而他们知道作者对于将这些权利签署回出版商以进行发行并没有太多的选择。针对细节还有一些司法上和政治上的争议，但最终，出版商论点的本质内容都得以保存，并成为英国成文法的一部分，第一部承认的现代版权法，成文法安妮法案（Statute of Anne）于1709年通过，1710年生效。</p>
<p>安妮法案经常被视为版权的桂冠，它标志着作者终于获得了他们长期渴望的保护，即使现在，出版行业的法律论据和新闻稿中还是经常引用它。但是将其解释为作者的成功则公然违背了常识和历史事实<a href="#3">[3]</a>。作者从来都没有版权，没有理由现在突然要求这种防止他们作品传播的自相矛盾的权利，他们也没有这么做。出版商专卖的消失只是威胁了出版社本身，安妮法案是他们游说和斗争的结果。值得纪念的是当时Lord Camden所说的，出版商“&#8230;以请愿者的形式来到国会，眼中流着泪，绝望而无助；他们带来妻子儿女以博取同情，并诱导国会赋予他们法律的保障。”<a href="#4">[4]</a>为了让他们的论据更冠冕堂皇，他们提出版权本属于作者，能够以财产的形式出售给任何人——是人们期望的、正确的，虽然大多数情况下会出售给印刷者。</p>
<p>这个提议是一个精明的战术转移，因为国会也希望避免重建图书产业的集中式垄断，以及相伴的皇权审查制度。Benjamin Kaplan，哈福大学的名誉退休法律教授和令人尊敬的版权学者，简洁描述了出版商的地位：</p>
<blockquote><p>&#8230;出版商用事实证明，如果没有针对剽窃的保护，他们就不能生产脆弱的商品图书，并鼓励有学识的人来编写这些书&#8230;很明显这个权利可以追溯到作者权这个源头，但是在重视它之前，我们需要注意，如果印刷作为一项产业没有回到一些垄断手中时——如果法案是一种“普遍的专利”——那么一个[合法的]起草人一定会很自然的用书中的权利这一术语，并从此以作者的初始权利进行表达。起草人一定已经意识到了这个权利会立刻通过授权传递给出版商，也就是，就像以前通过购买手稿的方式。&#8230; 我想这接近的真相是，出版商已经看到了将作者的利益和自己绑定到前台的策略优势，而这个策略影响了这个法案的基调。<a href="#5">[5]</a></p></blockquote>
<p>安妮法案，在一定的社会背景产生，是版权法的确凿证据。在其中，我们可以看到现代版权的全部组织，除了未加伪装的形式。有一个版权作为财产的概念，但它实际上是出版商的财产，而不是作者的。有一个有益于社会的概念，就是可以鼓励人们写书，但是没有证据证明没有版权就不会写书。在一定程度上，出版商的论点是他们不能负担在没有针对竞争者的保护下印刷图书。此外，如果被赋予无限制的印刷权利，则不能依赖印刷商忠实的复制作品。推论是，他们暗示如果没有预期和可靠的发售，作者将生产较少的新作品。</p>
<p>考虑到当时的科技水平，他们的论点并非没有道理，制作一份印刷品的完美拷贝无论如何也需要访问原来的印刷和排字；如果是为了鼓励可靠的复制，那么一个单独持有者的版权系统有一定的道理。实际上现在出版商必须为额外的印刷权向作者支付（实际上，出版商以前已经为作者支付，只是确保作品的完成和交付）。成功的将新权利出售给印刷厂的作者对此没有特定的动机去抱怨——实际上，我们很少听到作者不够满意。作者版权的巩固很可能促使了光顾读者这一种作者的收入来源的减少<a href="#6">[6]</a>，甚至让一些作者，虽然一直都是小部分，只能通过出版商分享给他们的版税养活自己。一个版权在一定时间只属于一个当事人的事实，也防止了增殖和分歧变种，那也许是比剽窃更让作者恼怒的事情。</p>
<p>但是整个历史记录非常清楚：版权为发行商设计，它是为了帮助发行商而不是创作者。</p>
<p>这个秘密是现在的版权游说者绝不敢大声说出的，一旦承认它，随之产生的版权法的真正目的也明显变得尴尬。安妮法案只是开始，在赋予了版权必须存在的前提后，英国政府发现他们已经深深陷入扩展版权范畴的压力。在接着发生的法律传奇中，重要的不是某一段法律或裁定，而是原告的身份：他们只是那种稳定的、不变的商业利益，能够在数十年中支持诉讼和游说——换句话说，他们是出版商，不是作者。他们提出作者版权完全出于商业利益，只是审查制度为基础的特权被剥夺之后的精神寄托。当发现这个策略明显有效后，他们便到处游说来加强版权。</p>
<p>现在的模式还是如此。无论美国议会何时扩展版权的范围或术语，都是由于出版业的压力。游说者有时候会拿出明星作家或艺术家的例子作为展示，用一副人类面孔来表示产业努力的本质，但事实非常清楚。你只要看一下谁在为律师和游说者付费，谁的名字出现在法庭的诉讼事件表上——出版商。</p>
<p>整个产业数世纪中为了实现强大版权法的斗争不仅仅是自身的瓜分领地，而且是技术条件的很自然的经济反应。印刷机的效果，以及之后出现的模拟录音技术，使得创造性作品与他们的分发方法不可分割，作者需要出版社就像电需要电线。在经济上接触读者（或听众）唯一可行的方法是批量印刷：一次处理数千相同的拷贝，然后物理上运输到不同的分销点。在同意这种投资之前，出版商自然希望从作者那里购买或租下版权，也自然会到政府那里游说最强的版权权利，更好的保护他们的投资。</p>
<p>这里没有事情是天生开发出来的；它只是简单的经济意义。从商业角度，一次印数是一件令人恐惧和充满风险的项目。它包含高昂的物理介质（纸浆、磁带、乙烯唱片或光盘），还有复杂、昂贵的将内容刻录到介质上的机器的预先投入。还有看不到的对原版拷贝的核对投资：因为一份有瑕疵的原版会减少整个运作的价值，出版商和作者都会为出版之前生成优雅的、无错误的作品版本而遇到相当大的困扰。这里增量或渐进过程的空间很小；作品必须在公众看到它之前达到近乎完美。如果漏掉了任何错误，至少在下次印数这个过程重新开始之前，它们必须容许出现在最终的产品中。出版商必须议价和组织发售渠道，这不仅仅是记录帐务，而且是要支付运输集装箱的卡车和火车的物理开支。最后，如果还不足够，出版商还需要在市场营销和宣传上花费更多的钱，最好至少能赚回所有的开支。</p>
<p>当意识到这些都发生在获得任何收益之前时，就不会为出版商如此努力的为版权争辩感到惊讶了。出版商的初始投资——就是他们的风险——在任何单独作品中都非常巨大，在经济范畴，比作者的还要大。作者本身并没有对于控制拷贝的内在意愿，但是出版商希望如此。在一个充满出版商版税支持的市场部门、作者的世界上当然更加需要出版商，对于分发收益的关注不可避免的导致了一场军备竞赛的熟悉逻辑。</p>
<hr />互联网的到来从根本上改变了这种平衡。再强调互联网是和印刷机同样重要的革命性进步已经多余，它确实是。但是它的革新是不同的方式，印刷机让一本书变成数千本变成可能，但是这些书还是需要从出版社运送到读者手中。物理图书不仅仅是消费内容的媒介，它也是传递给消费者的媒介。因此，一个出版商成本被分摊到了分发拷贝的数量上。在这种情况下，向每一位读者承担一部分分发费用是正常的。毕竟，每个用户都要或多或少的为她自己的成本负责。如果图书（或拷贝）在她手中，它一定是通过某种方式得到，意味着有人为这本书的到达付出了费用。将所有的成本除以拷贝的数量，再加一些利润，然后你可以大体得到一本书的价格。</p>
<p>但是现在，内容分发通过的媒介可以与其最终消费所在的媒介毫无关系，数据可以通过电线传输，从本质上讲没有成本，在另一端，用户可以以她自己能承担的质量的成本打印拷贝<a href="#7">[7]</a>。此外，占有母版已经并不重要；实际上，母版这个概念本身已经没有任何意义。虽然制作印刷作品的完美拷贝非常困难，但是制作一个损坏或删节的拷贝非常容易。同时，制作数字作品的完美拷贝稀松平常——制作一份有瑕疵的拷贝则需要额外的工作。</p>
<p>尽管实践中会为每一个拷贝支付同样的费用，不考虑制作了多少拷贝或谁制作了拷贝，但现在这是毫无道理的了。生产和分发作品的成本现在已经从本质上被修正，无需与拷贝数量成比例，从社会视角，每个超过首先将作品产生的必要金额（如果有的话）的美元都是浪费，事实上那也是作品传播能力的阻碍。</p>
<p>互联网做了一些出版商公司永远不希望的事情：它让他们的论点成为可试验的假说，如果没有集中式的出版社为作家出版作品，他们还会继续创作吗？只要稍许看一下互联网就可以得出答案：他们当然会。计算机用户喜欢在家下载音乐并制作CD，虽然很慢，但是不可避免，音乐家也开始乐于发布音轨并提供免费下载<a href="#8">[8]</a>。许多小说和非小说的短作品也出现在网络，要求打印和装订整书的情况很少，只是因为这样做的设备还是有点贵。这些设备的价格正在稳定的下降，复制商店的普及只是一个时间问题。从分发的角度看，音乐和文本根本没有任何区别。随着打印和装订技术变得更加廉价，作家会更清楚地发现他们和音乐家有相同的选择，结果将一样：将会有越来越多无限制的由作者所做的素材。</p>
<p>有一些人会辩说作家不一样，他们比音乐家更依赖版权。毕竟，音乐家可以去表演，因此可以通过免费的录制间接获取利益——更好的曝光可以获得更多的表演机会。但是作家不会表演；他们只能从作品中获得读者，而不是本人。如果他们能够获得收益，而又不会让他们的作品包含人为的不足，他们会做吗？</p>
<p>试想一下最简单的场景：你走到临近的打印商店，并让他们打开你所要图书的网页，几分钟之后，店员带着刚打印并装订好的图书回来了，离开互联网，他打电话说明了销售额。</p>
<blockquote><p>“一共8美元，你愿意支付作者建议的一美元捐赠吗？”</p></blockquote>
<p>你会说是吗？或许你会，或许不会——但是可以注意一下进入博物馆的自愿费用，通常人们会支付它，这种变化也会在打印商店发生。如果已经打开了钱包，并认为有一个好的理由，大多数人会乐于在付出较大的金额之后再付出额外的一小部分。如果人们未能够做出他们所期望的小的资源捐助，常见的一个原因是不方便（写支票、放到邮件里等等），而不是钱。但是即使只有一半，或者更少的读者做出这样的捐助，作者还是能够得到比传统版税模式下更多的收入，此外，可以尽情享受成为分发过程中读者的同盟，而不是敌人。</p>
<p>这不仅仅是唯一可能的系统，它可以与其他系统并存。如果对自愿捐助不够确定，可以考虑其他的方法：<a href="http://en.wikipedia.org/wiki/Fund_and_release">&#8220;资金和发布（Fund and Release）&#8221;</a>系统（也称为“门槛承诺(threshold pledge)”系统<a href="#9">[9]</a>）。这个系统设计用来解决经典的分发经费问题，在这个系统中，在掏钱之前，每个捐助者都希望其他人也会捐助来恢复信心。在资金和发布系统下，充满期望的创作者会为新作品陈述生产作品所需的资金——这是“门槛”。无论能收到多少金额，一个中介组织会在公众中收集承诺。当总承诺金额达到门槛（或者超过一定的标准百分比，用来记录和风险承担），这个中介与创作者签订协议，而承诺被收集起来。只有获取了达到期望结果的足够的钱，才会让某人去实际为此工作。中介在契约中保留资金，根据商定的日程支付给创作者，资金的最后一部分在作品完成并交付大众后支付，这个大众不仅指的是捐助者，而是全世界。如果创作者不生产，则将钱退回给捐助者。</p>
<p>资金和发布系统有一些有趣的特性是垄断版权为基础的市场所没有的，世上的每个人都可以免费得到因而产生的作品。然而作者也为生产作品的获得收入；如果她需要更多，她可以要求更多并看整个市场能否负担。那些选择支付的人都会支付自己满意的价格，不会更多。最终，捐助者没有任何风险——如果从来没有达到阀门，也没有人实际支付。</p>
<p>不是所有的方法都是这样令人愉快的高尚气概，当然，在很多年之前，成名作家Fay Weldon受人瞩目的接受了Bulgari珠宝的钱来撰写一部显著描写Bulgari产品的小说。她这样做了，书名是“The Bulgari Connection”。这本书最初是作为执行公司功能的限量版本发放的，但是在写完后，Weldon把它带到出版社进行了普通的发行。这是不是意味着以后我们应该仔细检查所有的创造性作品，从中寻找潜在的公司赞助的迹象，或许会，但是这也不是新事物了——产品安置在传统的版权下就发明了，而且那时就已经很成功了，就像它可能在其他地方一样。版权不是公司赞助的原因，也不是解药，指望出版行业成为去商业化的动力非常毫无关系的奇怪。</p>
<p>这是没有版权的情况下支持创造性工作的方法的例子，也有许多其他的方法<a href="#10">[10]</a>；甚至许多是互联网还不方便的时候出现的，例如直接的微支付。无论哪个艺术家使用哪个模式并不重要，重要的是在进行小额支付的时候要顺畅，作者会在需要的时候会寻找方法让这种支付发生。倾心于将市场作为任何事情的解决方案的经济学家一定会喜欢这种可能性（但是，可以预测的，许多不是，因为他们憎恨所有不正统的东西）。</p>
<hr />为了一瞥将来，不仅可以看网络音乐家，也可以看一下软件，当前自由软件运动的繁荣可能是我们后版权世界最好的例子。自由软件（也称为“开源”）是Richard Stallman的一个构想，他认为可以通过故意的反转版权发布软件。没有禁止分享，软件的许可证明确的允许和鼓励分享，许多其他人也立刻理解了他的主意，而且因为可以没有限制的分享和更改其他人的程序，他们很快生产了许多工作的代码。</p>
<p>有预言说这些最初的成功很快会因为软件的规模、复杂性、集中化需要以及维护的等级化组织而走向失败，不仅仅是创始人，自由软件运动的发展的是如此迅速，即使它的参与者都惊讶，似乎没有停下来的迹象。它所生产的软件在功能上已经可以匹敌私有市场中的对应软件，自由软件广泛使用在银行、公司和政府，以及个人计算机用户中。运行自由Apache网络服务器的站点比其他网站服务器的总合还要多，自由操作系统现在是操作系统市场中增长最迅速的。尽管有一些作者会为他们的工作得到支付（毕竟，他们的服务为使用软件的人带来了帮助，许多用户希望为此付费），还有一些资源提供他们的实践。每个软件项目都有自己存在的理由，每个程序员都有其作出贡献的原因。但是累计效用是对版权正当理由的直接炫耀：一个兴盛的社区，有许多没有施加版权的智力产品，就像对等的主流一样那样获得同样地结果。</p>
<p>根据传统版权的辩解理由，这都不会发生。软件本质上是在公共领域；它的版权主要用来识别最初的作者，在某些情况下防止任何人安置一个更严格的许可证。作者会放弃所有专营权，除了对于作者识别的权利。他们自愿回到没有版权法的世界：他们执行没有版税，并且对于他们作品的发行和更改没有任何限制。软件的许可证让所有人自动具备使用和重新分发的权利，你可以简单的开始分发拷贝，不必通知任何人或获取许可。如果你希望修改它，你可以自由的这样做，你甚至可以出售它，尽管可能不会支付很多，因为你要同许多手握同样没有成本的货物的人竞争。一个常见的模型是鼓励人们自由下载软件，而是出售技术支持、培训和定制服务。这些模型都不是梦想，他们都是现在有利可图商业的基础，为真正的程序员支付具有竞争力的薪水以在自由软件中工作。但关键的不是人们因为被支付才去这样做——有一些是，但是许多不是，可无论如何还是写了。关键是每年都有大量自由软件被生产和维护着，即使按照软件产业的标准也是非常迅速的增长率。</p>
<p>如果这个现象只孤立存在于软件，那么它可以解释为脱离常规——软件是不同的，程序员都是支付过高了，等等。但是不仅仅是软件；如果你仔细看一下，在任何地方都有一些迹象。音乐家开始在线发布可以自由下载的音轨，互联网上大量可以自由获取的作品——开始时是参考和非小说的作品，但是现在包括小说和诗歌——很久以前已经通过了可测性。软件与其它形式的信息没有根本上的区别，就像诗歌、歌曲、图书和电影，都可以通过数字传播。可以拷贝一部分或整体；可以截取片断用到其它作品；可以编辑和修改；甚至可以被讽刺。</p>
<p>放弃版权走的最远的是软件主要因为程序员是最早接触互联网的一群人，而不是因为软件本身的特性。逐渐的，其他领域的创作者也会意识到他们也可以在没有出版商或集中发售链的支持下散发他们的作品，通过简单的允许自由的拷贝。而且越来越多的，他们选择这样做，因为他们不会失去任何东西，因为他们能失去的东西很少，而且因为这是他们的作品寻找欣赏受众的最简单的方法。远非特别依赖于版权法，创作者通过放弃版权龙垄断得到了更多。</p>
<p>即使是在早期阶段，这种趋势也催生了一个明显的问题。如果不是确实需要版权来激励原创，那么他现在服务的目的何在？因为版权现在已经很明显并不存在了，我们现在不会再发明它。我们刚刚完成我们自己的巨大印刷机（互联网），扮演了交流设备的角色，不经意的让钱在人们之间方便的传递。共享现在是世界上最自然的事情，艺术家被描述的受到损害是错误的，成千上万新作品的的以出现，受到了其作者的赞誉和完全认可，并可以自由的获取。如果有人准备主张如果没有立刻建立一个严格控制谁可以拷贝什么的系统，创造力会迅速枯竭，我们有理由把它当作一种精神失常。当然，可以通过更外交化的语言，这是版权游说者敦促更强法律的主张。</p>
<p>在这里创造力并没有处于危险，出版行业甚至也默认了现在是更甜蜜的时刻。尽管出于公关的目的，行业领袖会象征性的宣称版权是贫穷艺术家谋生的需要，他们最详细和显著的言论通常是关于版权的商业效果。世界上最大的唱片公司环球唱片集团（Universal Music Group）的Larry Kenswil，在2003年1月5日的纽约时代的一篇关于数字拷贝保护模式的文章中被提及，他说“你不是购买音乐，你是购买了一个钥匙，那是数字版权管理所作的：它使某个商业模型可行。”</p>
<p>很难想象一个更简洁的行业信条陈述，他不妨说：“这是版权所作的：它使某个商业模型可行。”</p>
<p>不幸的是，这个行业里不是所有的都宣传象Kenswil一样直接和诚实，例如，美国唱片行业联盟在他们的网站“<a href="http://www.riaa.org/">http://www.riaa.org/</a>”上这样解释版权：</p>
<blockquote><p>作为音乐家你不需要一个律师，但是你需要知道一个法律术语——版权。对所有的创造性艺术家——诗人、画家、小说家、舞蹈家、导演、演员、音乐家、歌手和曲作家——这个术语事关重大。</p>
<p>对所有的艺术家来说，“版权”不仅仅是知识产权法中防止未授权复制、表演或分发创造性作品的术语。“版权”对他们意味着磨炼技艺、试验、创造和昌盛。这是一个极为重要的权力，在几个世纪中，艺术家为保护这个权力而斗争；这类艺术家有约翰.米尔顿、William Hogarth、马克.吐温和查理.狄更斯。马克.吐温为了保护他的权力旅行到英格兰，而查理.狄更斯则为同样的目的跑到美国。</p></blockquote>
<p>认出来了吧？这直接就是出版商剧本中的一页——是版权神话的公开复述，包括了对单个作者的引用，有计划的唤醒挣扎中的艺术家的支持，为他们艺术的正直而勇猛的斗争。很明显，历史中所有那些在没有版权的情况下成功的艺术家并没有包括在RIAA关注的“所有创造性艺术家”中。出版商将作者当作陪衬的使用，在18世纪英国国会和现在没有什么区别，Patterson教授对此作出了注解：“他们[出版商]的论点意图唤起对于作者的同情（很轻易的忽略了他们对造成作者这种困境的作用）并回避了正确的逻辑和道理。”<a href="#11">[11]</a>。</p>
<p>RIAA在下一个段落对于版权的介绍更加错误，这是一个摘要——完全的摘要——介绍了版权法的起源，不可避免的用很重的历史学韵律描述，但却丢掉了事实：</p>
<blockquote><p>版权法都开始于“安妮法案”，世界上第一部版权法由不列颠国会于1709年通过，尽管保护艺术家权力的原理早就具备。猛一看，它只是干瘪的历史，但是从此以后就有了建立的判例和版权的保护，大量时间、努力和金钱已经花在了整个世纪的合法性斗争当中。</p></blockquote>
<p>这段对版权令人窒息的总结等同于“哥伦布（Christopher Columbus）航行到美洲并证明地球是圆的，并和印度人交上了朋友。”是的，很多钱确实花在了法律斗争中，但是RIAA小心的没有说出谁花了这些钱，也没有进一步阐述据说早于这些进展就存在的“保护艺术家权力的原理”。</p>
<p>他们网页的其他部分继续一脉相承，包含了太多删节、错误描写和完全的谎言，让我们难以想象经过稍许研究的人能够写出这样的内容。它基本上是低劣的对于他们正在进行着的争论的舆论支持，他们要确保公众会将版权视作象热力学定律那样的文明基础。</p>
<p>RIAA也沉溺于现代版权游说的另一种受欢迎的策略：将非法拷贝与不相关的，而又更严重的对于剽窃的攻击等同起来。例如，（现在是前任的）RIAA主管Hilary Rosen过去经常在学校和学院中演讲，劝阻学生用行业的观点看待信息所有权，这里是她提供的例子：</p>
<blockquote><p>类推法确实非常好。我问他们“你们上周做什么了？”他们会说写某方面的论文，接着我就问他们“噢，你在写论文，你得到一个A？你会介意某人拿你的论文也得到A吗？会让你厌恶吗？”所以说对切身感受的投资会得到好的回应。</p></blockquote>
<p>既然复制CD的人们一般不会用自己的名字替换艺术家的名字，让我们问一下Hilary Rosen应该问得问题：“你是否介意有人到处展示你的论文拷贝，这样别人会从你所写的东西获益，而且看到你得到了A？”当然，学生们会回答“不，我们当然不会介意，”这不是Rosen希望听到的答案。</p>
<p>RIAA只是在宣传中如此笨拙，他们的信息从本质上与版权行业的其余部分提供的完全相同，都是要保持持续不断的敲打着警告，那就是线内容共享将会剥夺创作者的声望和他们的创造能力，尽管有巨大的证据证明版权从来都不会提供任何可能性，而且他们在没有版权的时候也会很快乐的继续创作，只要他们能找到合适的分发作品的方法。如果按照我的方式描述，这场战斗听起来毫无害处或很愚蠢，但是因为他们是为生存而战，又由于有大量的资金和老练的宣传部门，出版商成功的以令人吃惊的程度修整了公众舆论。参考一下这个可怜的女人，2003年9月11日的国际先驱论坛报（International Herald Tribune），一篇关于RIAA文件分享诉讼的文章：</p>
<blockquote><p>一个女人从唱片行业联盟收到了一封传票，说她努力向13岁的儿子解释为什么文件分享是错误的。</p>
<p>“我说，‘假定你写了一首歌，一个著名的摇滚组合唱了它，而你没有得到支付’”母亲说，因为法律地位的原因拒绝透漏姓名。“他说：‘我不在乎，那样很彪悍。’”他们都还在不在乎金钱的年龄。</p>
<p>母亲说她对拿走别人的歌和剽窃学校的论文有不同的比较结果。</p></blockquote>
<p>（人们只能希望敏感的13岁孩子能保持自己的头脑，而许多周围的人明显失去了这些。）</p>
<p>依然保持同情的公众与财富的组合很不幸的允许版权产业运用危险的影响达到立法的级别，结果是令人不安的趋势：互相加强的物理和法律障碍，虽然表面上是与非法拷贝斗争，却不可避免的影响了所有的拷贝。通过计算机硬件，而不是通过可延展和可替换的程序强加的数字拷贝保护模式不断增多，拥有内容的同一个公司也会生产这种硬件以便分发。你是否从Sony购买过CD？来自Sony音乐部门的CD如何？同一个公司，左手知道右手作什么。通过政府合作，这种组合更是日益强大。在美国我们现在有一个法律——数字千年著作权法案（Digital Millennium Copyright Act）——将回避数字保护模式、或者制作帮助其他人回避数字保护模式的软件的行为视作违法。不幸的是，由于许多硬件和软件自动铭记它生产的所有媒体的此类模式，这种行为有效的遏制了授权拷贝和许多其他在当前版权法下可能导致“不能使用”类型的活动。</p>
<p>要理解这种副作用绝不是偶然情况很重要，而出人意料的后果是这成为保护艺术家的另一种方法。在一定程度上，他们是这个策略的主体部分，而实际上，这个策略对于鼓励创作毫无作用。宣传运动、法律和硬件“保护”这个产业三叉戟努力的目的很简单：防止互联网的这种试验从执行到实现。任何在拷贝控制概念中深入投资的组织都不希望看到这样一个系统出现，让拷贝象点鼠标那么容易。在某种可能的程度，这类组织会希望看到同样的每拷贝支付的模型，就像我们几个世纪中所用的，尽管信息的物理基础已经让每拷贝支付没有任何意义。</p>
<p>尽管版权游说者成功的让新法律通过，甚至赢得了几场法庭诉讼，但这些胜利基于崩溃的基础。社会还会继续相信版权神话多长时间，版权概念的发明是为了让创造性工作成为可能？这个神话还在维持着，因为它至少还有一丁点真理：尽管版权不是作者创造的，不是为了保护他们，但它确实帮助了许多原创作品的分发。此外，还是有许多出版商（通常是小型或个人拥有的）按照令人景仰的文化意识工作，有时候甚至会不惜金钱的损失出版他们认为有价值的东西。但是因为他们还是受大规模印刷的经济限制，最终都依赖于版权。</p>
<hr />不会有出版行业和公开复制之间的戏剧化战争，自然也没有什么高潮、结局和走出尘埃的胜利者。相反，他们所能看到的——是已经看到的——是创造性工作的两条并行流的出现。在每一天，都有更多的人出于他们自己的意愿，因为各种各样的原因加入自由流。有一些人会享受没有看门人的事实，没有人为的障碍，一个作品可以因个人功勋和众口相传而成功：尽管无法阻止传统的营销技术应用到自由流中，但对此能做的投资很少，而众口相传和同级评审网络会在那里起更重要的作用。有一些人从私有领域转型到自由流，在自由领域发布部分作品作为广告或者试验。有一些人则发现他们无法在私有领域获得成功，不妨公开他们所拥有的东西。</p>
<p>随着自由流材料的丰富，它的瑕疵就会逐渐消失。出版的作者和未出版的作者过去的区别是你能获取前者的图书，而不能得到后者的。被出版具有特别的意味，它具有名望的氛围；它暗指了有人鉴定了你的作品，并给了它一个由来已久的认可标签。但是现在出版和未出版的区别被缩小了，不久以后，被出版只意味着编辑发现你的作品有价值进行大规模印刷和市场营销运动。这会影响作品的流行，但是不会从根本上影响其存在性；会有许多“未出版的”但是有价值的作品，缺乏出版的门第不会被认为是作者的一个打击。尽管自由流不会使用传统的版权，但是它也做过观察并强加非正式的“信用权（credit right）”。作品会自由的被拷贝和被通过出处摘录——但是对于信用权的窃取通常可以很快检测到，并受到公开谴责。使制作拷贝容易的同样机制也使得剽窃非常困难，当通过Google搜索可以很容易找到最初的出处，很难偷偷的使用其他人的作品。例如，老师现在会例行在Google搜索他们怀疑学生剽窃的代表性语句。</p>
<p>面对这样的竞争，私有流不能永远存活。版权法的废除是可选的；这里真正的动力是创作者可以自由的选择使用非限制的版权发布他们的作品，因为他们喜欢如此。从某种意义上说，很明显所有的有趣的事情发生在自由流，人们很快会停止沉浸在私有流。版权法或许还会正式的存在与图书，但是在实践中它将会逐渐衰弱并废弃。</p>
<p>或者，我们可以袖手旁观，并让这个进程停下来，通过允许制造商创建硬件“保护”来干预我们正当拷贝的能力；通过允许版权游说者俘获我们的立法机关，达到我们必须一直要警惕版权警察追铺的程度；通过对于使用自由流并发挥完全潜力的犹豫，因为对于什么是版权我们已经被传授了一个错误的故事。</p>
<p>我们可以，如果我们选择，拥有一个存在“绝版”或“稀有图书”概念的世界不仅是已经过时，而且实际上毫无意义。我们可以生活在多产和充满活力的花园，全是不断进展的作品，由渴望公开的人创建，而不是由出版商的市场研究决定。学校再也不会因为每拷贝的价格是由出版商设定的而被迫停留在过期的教科书上，而你的计算机会一直有与朋友分享的歌曲。</p>
<p>达到那个目标的方法是质疑版权神话，版权不是偷窃，也不是剽窃，那是我们在版权发明之前的几千年里我们所做的，我们可以再做一次，只要我们不会因为从16世纪以来的审查制度的老旧残余而裹足不前。</p>
<p>本文按照自由版权发布，可以无限制的重新发布、摘录和修改，如果你发布了修改的版本，请调整对应的出处。</p>
<hr />
<h4>参考</h4>
<p><a name="1"></a>[1] 这个事件可以在任何版权史中看到，就其合法含义的一个不错在线资源是“版权和作者的‘排他权’（Copyright And `The Exclusive Right&#8217; Of Authors）”<a href="http://www.lawsch.uga.edu/jipl/old/vol1/patterson.html">http://www.lawsch.uga.edu/jipl/old/vol1/patterson.html</a>，知识产权期刊（Journal of Intellectual Property）, Vol. 1, No.1, Fall 1993，作者是乔治亚大学的Pope Brock教授、知名版权学者Lyman Ray Patterson。他对于最早版权的简要和揭露的描述：</p>
<p>导致了17和18世纪成形的事件，盎格鲁美国人的版权历史中的事件是1556年菲利普和玛丽为出版社公司授予了许可证&#8230;这个许可证给了出版商权利制作用于管理“艺术或神秘”的“条例、规定和法令”，以及搜查非法出版物和图书的并“扣押、获得并焚烧上述图书或事物”，或者他们已经印刷或将要印刷的违背法令、条例和声明的任何东西的权利&#8230;</p>
<p>焚烧不愉快的图书的权利会对君王有益（一种针对非法出版的武器），而且是出版商的福利（一种针对竞争的武器）。焚书权因此显示了许可证的真实动机，为了保护出版商在这个不确定的世界中作为出版业警察对君主的忠诚.</p>
<p><a name="2"></a>[2] “从容看待版权（An Unhurried View of Copyright）”, Benjamin Kaplan Columbia University Press, 1967, pp. 4-5.</p>
<p><a name="3"></a>[3] Patterson，在<a href="http://www.questioncopyright.org/promise#1">[1]</a>走的更远“版权的法定描述是作者的版权，然而这也是一个历史谎言。”</p>
<p><a name="4"></a>[4] Kaplan, p. 6.</p>
<p><a name="5"></a>[5] Kaplan, pp. 7-9.</p>
<p><a name="6"></a>[6] &#8220;印刷500年（Five Hundred Years of Printing）&#8221; pp. 218-230, S. H. Steinberg, Penguin Books, 1955, revised 1961</p>
<p><a name="7"></a>[7] 当我开始这个文章时，我假定这种进展离商业可行性还有许多年，但是我错了：根据要求印刷服务<a href="http://www.newspaperkiosk.com">newspaperkiosk.com</a>已经建立并运行。</p>
<p><a name="8"></a>[8] 可以看一下<a href="http://www.mp3.com">www.mp3.com</a>的例子。（尽管它所提供的大多名义上的是有版权的，但那只不过是一种合法的反射动作。音轨本就有意自由下载、倾听和分享——也就是人们的一般做法。）</p>
<p><a name="9"></a>[9] 这本书的最初名称为“阀门承诺”系统，然而<a href="http://www.strayform.com/">strayform.com</a>的Brandt Cannici，独立的完成了同样的系统，用了更好的名称“资金和发布”，而我现在使用这个名字。</p>
<p><a name="10"></a>[10] 一种资金技术的描述，可以咨询其他人。可以看一下John Kelsey和Bruce Schneier的“街头表演协议和数字版权（The Street Performer Protocol and Digital Copyrights）”，在<a href="http://www.firstmonday.dk/issues/issue4_6/kelsey/">http://www.firstmonday.dk/issues/issue4_6/kelsey/</a>。</p>
<p><a name="11"></a>[11] Patterson; 见<a href="http://www.questioncopyright.org/promise#1">[1]</a>.</p>
<hr />
<h4>推荐阅读</h4>
<ul>
<li>Eben Moglen的作品，Professor of Law and Legal History, Columbia Law School: <a href="http://moglen.law.columbia.edu/">http://moglen.law.columbia.edu/</a></li>
<li>自由软件基金会的哲学页包含了许多卓越的文章和链接：<br />
<a href="http://www.fsf.org/philosophy/philosophy.html">http://www.fsf.org/philosophy/philosophy.html</a></li>
</ul>
<hr />
<h4>译者注</h4>
<ul>
<li>本文中出现的出版商一词，在原文中有两种。一个是Stationers，特指英国版权法案创立时起到出版商作用的机构；而另一个就是常见的publisher。因为汉语没有区别，所以统统翻译为出版商。</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://rocksun.cn/promise-of-copyright/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

