2010年3月10日星期三

阮一峰的网络日志

阮一峰的网络日志


搭建了一个图片库

Posted: 09 Mar 2010 05:33 AM PST

经常有读者抱怨,看不到网志中的图片。

确实如此。正常情况下,过去文章中的图片,超过60%都无法在国内正常显示。

但是,事实上,这个网志的所有图片链接都是有效的,没有一个链接是坏的。无法显示只是因为被屏蔽了,只要你不在中国大陆,所有图片都能看到。

最早的时候,我使用Flickr存放图片。但是2007年,Flickr被屏蔽了。

后来,我改用Picasa存放图片。2009年,Picasa也被屏蔽了。

我又改用Photobucket。2010年1月,Photobucket也被屏蔽了。

怎么办?再换一个地方流浪,还是使用国内的图片储存服务?

我觉得,任何可以免费存放图片的国外服务商,都有可能被屏蔽;而国内的图片服务商,我真的信不过。比如,国内某网站的使用协议写明,他们可以随时无条件删除你的图片,并且不允许上传任何有性意味的图片。

所以,我最后决定,自己搭一个图片库,把图片都存在自己的主机上。

我的思路很简单,先搭建一个开源相册程序,然后修改成Flickr那样就行了。

一开始,我装的是Movable Type。毕竟这是每天用的程序,我最熟悉了。但是,我很快发现,它不可能改成相册。MT的长处是生成静态网页,而相册需要的是动态显示,两者根本无法融合。另一方面,MT的开发现在很不景气,第三方插件极少,甚至连ajax上传按钮都没有,必须花20美元购买商业插件,否则文件只能一个个上传。我只好放弃它了。

改用WordPress以后,我又遇到了另一个问题,那就是插件太多了。WP的相册插件足有几十种之多,我不知道该如何选择。有一个NextGEN Gallery插件的下载人数最多,我就选了它。结果发现,这个插件实在是太优秀了,专业图片网站的功能,它几乎都能实现,而且做得非常易用漂亮。如果你也想搭一个自己的相册,我强烈推荐这个插件。

最后,我搭建完成的图片库网址是http://image.beekka.com,欢迎查看效果。这篇文章里的图片,都是来自那里。因为相册只供我个人使用,所以做得比较粗糙,但是我想要的功能都做到了。

NextGEN Gallery的详细使用说明,请参见David Potter的长篇介绍。我修改的地方,其实只有2个文件。

  1. 在"Options/Gallery"中的"Show ImageBrowser"选项打勾。

  2. 修改插件中的gallery.php文件。

  3. 修改插件中的imagebrowser.php文件。

所有的图片信息,基本上都包含在$image这个对象变量中。使用<?php var_dump($image) ?>查看变量,使用<?php echo $image->filename ?>输出变量值(比如例子中的图片文件名)。

当然,这个图片库也不一定安全,照样有可能被屏蔽。但是,至少一切都在我的控制之中。万一被屏蔽了,只要对图片储存目录打包压缩,然后换一台主机解开压缩包就行了。

我感到,这个图片存储的解决方案有推广意义,值得其他网志作者考虑。

(完)

2010年3月6日星期六

阮一峰的网络日志

阮一峰的网络日志


我所知道的深圳八卦岭小印刷厂

Posted: 06 Mar 2010 04:23 AM PST

上一篇网志《"熔模铸造"图解》发出后,读者emi有一段很长的留言。

那是触目惊心的文字,为了让更多的人看到,我决定以单独一篇文章的形式,重贴一次。

===========================

我所知道的深圳八卦岭小印刷厂

作者:emi

去年,我参观了深圳市福田区八卦岭的一些印刷工厂。

那里就是城市里的工业区。印刷厂就设在许多有十几二十年楼龄的老房子里,租金通常是25-30元/平米。

那些印刷厂,通常属于私人或私人合伙所有,一两台印刷机的生产规模,面积100平米至500平米,大一些的为800平米至1000平米。为了节省成本,几乎没什么工作经验的工人也能上岗,并且上岗后基本没有岗前培训,直接干活。

上周,我又去那里,正好是春节后新开工的时间。在楼道遇到一个小伙子,也就十八九岁的样子,举着一支手,其中一根手指被切掉了一截,血一路滴滴嗒嗒往外滴。听说他是新招的工人,被切纸机斩断了手指。切纸机是一种靠重力切断的设备,几百张纸一次切断,何况血肉之躯呢。我想起,在那些印刷厂的生产间里,见过不止一个手指秃秃的工人。

在这些厂里,不仅新招的工人,就连老工人也是没有劳动合同的。所以,发生生产事故后,厂里最多付点医药费,止血包扎一下而已。而这个新招的工人,他除了恳求厂方不要因此将他除名之外,是不敢提任何要求的,因为否则他连一日三餐和住的地方也没有了。(这些工厂的工资很低,但是包吃包住。吃是一日两餐,就在车间里随便找个地方吃。工作时间是早八点到晚八点,中间休息一两小时吃饭上厕所等。住的地方我没去过,但据说是十几人一间的大通铺。)

据了解,这些工人都有一笔押金在厂方手里,这是他们进厂之前,必须要向厂方交纳的,厂里就是靠这笔钱控制工人流失的。为了不损失这笔钱,工人只好听任厂方摆布,让加班就加班、说推迟发工资就推迟发工资、不可以自已提出辞工,还要小心翼翼不能被厂方辞退……

自已提出辞职,厂方就会扣掉那笔进厂押金。若因自已原因被厂里辞退,也是拿不回那笔押金的。因此,对于每月工资千元左右的工人而言,选择权是非常有限的。说到这里,上面那个被切到手指的工人,他的简单包扎医药费也有可能要从自已的进厂押金当中扣除的。

另外,为了节省成本和招揽更多业务,很多印刷厂把办工区的卡座出租给那些跑业务的个人。每个位子每月800-1000元租金,电话网络费用自理(我想,这一招应该是跟出租汽车公司学来的吧)。这样做的好处,一是印刷厂不用养业务员,二是还会有一笔租金收入。

那些业务员由于自负赢亏,所以什么都敢答应,成交价越高越好。同时,由于他们坐在印刷厂里办公,也会给客户造成一种假象,以为自已找到了厂家,必然便宜又放心,以为不会吃亏挨宰。其实,印刷业报价涉及的因素和计算非常繁复,普通人根本没办法清楚分辨,只能模模糊糊被迫同意对方的报价。那些对业务较熟悉,较能说服客户的业务员,收入状况非常不错。

那些业务员通常会虚报一倍甚至两三倍报价,所以只要一个月接到一个单子,几百块钱的卡座租金便简直不在话下,收入也有了保障。但是,这样一来,整个行业显得乌烟障气,非常混乱。

至于那些开印刷厂、赚了些钱的小老板,他们工作之余做什么呢?无非就是打麻将,赌博。所以,我去不少印刷厂,常能见到麻将桌上散乱的牌张、红着眼睛熬夜后中午才来上班的这些人。

【相关文章】

* 《纽约时报》:珠江三角洲,每年4万根手指被切断

(完)

2010年3月4日星期四

阮一峰的网络日志

阮一峰的网络日志


Jacob Holdt 的美国往事

Posted: 03 Mar 2010 11:39 PM PST

转载《明镜周刊》的一篇文章。

===================================

Jacob Holdt 的美国往事

作者:Christoph Gunkel

译者:阮一峰

原载:德国《明镜周刊》,2010年2月16日

1. 回到40年前,Jacob Holdt是一个愤怒的年轻人。他满怀理想主义,反对越南战争,希望改变世界。他的梦想是前往智利,支持萨尔瓦多·阿连德领导的社会主义运动。

2. Jacob Holdt是丹麦人,但是他不喜欢这个国家。因为丹麦表态,支持美国发动越南战争。1970年春天,他动身前往美国,计划从那里过境去智利。那一年,他23岁。

3. 但是光怪陆离的美国社会吸引了他,亲眼目睹的贫穷、绝望和黑暗,令他震惊。他改变了计划,在美国待了下来,打算好好了解这个社会。

4. 他专门去那些其他人不愿意去的地方,访问贫民窟,与黑人、妓女、吸毒者、同性恋、杀人犯住在一起。

5. 他也去访问上流社会,观察富有的银行家和商人家庭。

6. 这样的生活一直持续了5年。1975年,他的两个好朋友在旧金山街头被枪杀,他终于感到了厌倦,决定返回丹麦。这时,他的行李中已经有了15000张照片,这是他用照相机记录下的真实美国。

7. 1977年,他出版了摄影集《美国》(America Pictures),震动了世界,改变了人们心目中的美国形象。

8. 这些照片大多反映底层美国穷人的生活。比如,一个黑人小女孩打开锈迹斑驳的冰箱,寻找食物。

9. 再比如,一个弯着腰的老太太拿着扫帚,打扫自己破旧的小木屋。

10. 它们是贫穷、暴力和绝望的见证。

11. Jacob Holdt并没有钱,他来到美国的时候,兜里只有40美元。他依靠卖血的钱,去买胶卷和食品。他每星期去卖两次血,每次可以换来五美元。在漫游途中,他经常吃猫食。

12. 正是因为过着和他们一样的生活,他才赢得了被摄影的穷人的信任,愿意将真实的情感暴露在他的镜头前。

13. 在这样的环境中待久了,他渐渐地对生活的艰苦和绝望,感到了麻木。1973年,他生活在底特律,那是当时美国谋杀率最高的城市,晚上都能听到窗外有子弹声。当地居民睡觉前,都用冰箱把大门顶住,彻夜开着无线电,告诉窃贼屋里有人。Jacob Holdt虽然很紧张,但还是选择在这里待下去。

14. 五年中,他走过的距离是161265公里,去过美国50个州中的48个,在381个家庭过夜,被捕过6次,被抢劫过4次,有一次子弹擦过耳朵。

15. 他对资本主义社会造成的不平等,感到愤怒。

16. 他写道:"我在这里生活得越久,就越习惯用黑人的眼镜看待白人。"

17. "我无法隐藏自己日益增加的憎恨。"

18. 他觉得,很多南方种植园主的生活,不过是奴隶制生活在当代的翻版。

19. 他相信资本家在有意煽动种族主义,人为制造社会的分裂。

20. 因此,他同情那些瘾君子和杀人犯。

21. 同时,他也记录了美国生活中富裕的一面。

22. 这种反差,令社会的不公正更加显著。

23. 他镜头中的中上阶层白人的生活,与底层黑人的生活一样真实和客观。

24. 但是,他很清楚自己的立场在哪里。他写道:"无论何时,每当我有机会去过那种所谓的'优越生活'时,我经常感到恶心,快速地逃上高速公路离开了。"

25. Jacob Holdt在1970年来到美国前,觉得那是一个"乏味的白人中产阶级国家",现在他的看法不一样了。

26. 那是一个贫穷和压迫无处不在的国家。

27. 他用照片记录了人们的挣扎。

(完)

2010年3月1日星期一

阮一峰的网络日志

阮一峰的网络日志


美国人怎么拔网线——DMCA入门

Posted: 01 Mar 2010 12:42 AM PST

1.

上周,有一条微软公司的新闻

知名黑客网站Cryptome.org,公布了一份微软公司的内部文件。此举惹怒了微软,在施压删除此文件未果后,微软已经与网络供应商交涉,强行关闭了该网站。

我一看就觉得,这是美国版的"拔网线",顿时感到很气愤。强行将他人的网站下线,原来不仅中国人干,美国人也干。太野蛮了!

但是随后,我就看到了这个事件背后的法律知识介绍。微软公司是根据美国《数字千禧年版权法》(Digital Millennium Copyright ACT,简称DMCA)采取这个行动的。

仔细研读DMCA这部法律以后,我不由感叹,美国人拔网线比中国人文明多了。

2.

DMCA规定,如果某个网站侵犯了你的版权,你可以向它的主机服务商发出通知,要求撤下侵权内容。"DMCA通知"(示例一示例二)必须包含下列要素,缺一不可,否则就是无效的,收到者可以不予理睬:

  1)物理签名或电子签名;

  2)侵权内容的具体位置;

  3)侵权内容;

  4)本人的联系方式;

  5)版权遭到侵犯的声明;

  6)以上信息皆为事实的声明。

主机公司收到通知后,确认格式正确,并且包含所有上述要素,就要在72小时内采取行动,停止侵权内容的访问(通常是备份后直接删除),然后通知网站的站长。

站长收到删除通知后,如果感到不服,可以向主机公司发出"反通知"(Counter-Notice),要求恢复被删内容的访问。主机公司收到"反通知"后,必须先通知"DMCA通知"发出人,然后在两星期内恢复被删除内容的访问。除非在这期间,版权所有人向法院提起上诉,或者申请到了法院的禁令(injunction)。

最后,如果"DMCA通知"发错了,发出方必须赔偿全部损失和承担诉讼费用。

可以看到,整个流程很清楚,规定详细严格,侵权方和被侵权方的权利都得到了保障。没有任何一方是高人一等的,一切都按照法律办,绝不会出现申诉无门。要是中国的站长有这种待遇,恐怕早就感动得落泪了。

3.

除了保障站长权益以外,DMCA还极大地免除了第三方公司的连带责任,进一步使得站长们有一个宽松的生存空间。

它规定有四类公司不承担侵权责任:

  1)中介服务提供商(Conduit):比如宽带公司。虽然侵权内容通过它的网络传送,但是它可以完全免责,因为其本身不是使用的目的。

  2)缓存服务器(Caching Service):为了提高网络访问速度,暂时性保存访问内容的服务器,可以完全免除侵权的责任。

  3)主机公司(Web Host):前提是满足某些条件,主机公司才能免责,比如事先不知道存在侵权、对侵权内容没有控制能力、不鼓励侵权行为的发生、不直接从侵权内容中盈利、在得到通知后迅速移除侵权内容等等。

  4)信息定位工具(Information Location Tool):主要是指搜索引擎和信息分类网站,与主机公司相似,它们必须符合上一条的条件才能免责。

由于这些免责条款,美国的主机公司才能放心经营,不会出于恐慌,随便就把客户的网线拔掉,美国的Web 2.0网站也才会如此兴盛发达。

4.

在美国做网站,DMCA就是对你影响最大的法律。

一方面,我们知道,在美国境内提供或下载盗版音乐和电影,轻则罚款,重则坐牢,这是DMCA的规定。另一方面,我们也知道,美国网站不会因为一个页面存在违规内容,就导致全站不能访问,这也是DMCA的规定。

5.

就算你不在美国做网站,DMCA依然对你有巨大的影响。

因为我们中很多人,使用的都是美国主机公司的服务,这些公司是必须遵守DMCA的,所以你不能在他们的机器上干违反DMCA的事情。

此外,Google是美国公司,它也要遵守DMCA。这意味着,我们可以向Google发出"DMCA通知",要求它删除某个搜索结果。Google的中国分公司,就有一个专门的中文页面,告诉中国用户应该怎么做,网址是http://www.google.cn/dmca.html

为了保护自己的权益,减少损失,我们需要了解DMCA。这就是这篇文章的目的。

(完)

2010年2月27日星期六

阮一峰的网络日志

阮一峰的网络日志


为什么GPL是更好的开源许可证?

Posted: 26 Feb 2010 05:38 PM PST

1.

让我从一件新闻讲起。

2009年,计算机业界发生了一件大事:甲骨文公司以74亿美元收购SUN公司。

消息宣布后,有一个人坚决反对这笔交易。他叫Michael Widenius,是数据库软件MySQL的主要创始人。

他为什么要反对呢?因为MySQL现在归SUN公司所有,一旦收购成功,就将属于甲骨文公司所有。但是,后者的主要产品是Oracle数据库,与MySQL是竞争关系。所以,甲骨文公司不可能扶持MySQL的后继开发,甚至有可能杀死MySQL。

Michael Widenius不能接受这个事实,他发起万人签名,提交请愿书,要求欧盟委员会否决这项交易。具体情况可以参见HelpMysql.org

2.

去年12月28日,他写了一篇很长的文章"Help keep the internet free",解释为什么反对这项交易。他是这样写的:

"If Oracle were allowed to acquire MySQL, we would be looking at less competition among databases, which will mean higher license and support prices."

"如果甲骨文得到了MySQL,数据库市场的竞争将会减少,最终导致更高的价格和收费。"

你觉得这句话对不对?

我觉得不对。我认为,甲骨文公司杀不死MySQL,数据库市场的竞争不可能减少。这并非由于甲骨文公司不想这样做,而是因为MySQL是无论如何都不可能被杀死的(假定始终存在市场需求的话)。

3.

为什么MySQL是杀不死的?

答案非常简单。因为它的许可证是GPL。

GPL明确规定,任何源码的衍生产品,如果对外发布,都必须保持同样的许可证。这就是说,任何人只要发布MySQL的修改版本,他就必须公开源码,并且同意他人可以自由地复制和分发。

现在让我们假想一下:

第一种情况:甲骨文公司决定中止MySQL的开发,会怎么样?

一定会有其他人接手,继续推出MySQL的后续版本,这是GPL许可证允许的,完全合法。虽然不能再叫MySQL这个名字,但是只要代码完全兼容,名字又有什么关系呢。事实上,Michael Widenius自己的公司,现在的产品MariaDB就是基于MySQL的。

第二种情况:甲骨文公司决定,MySQL的后续版本不再开源,或者整体并入Oracle数据库,会怎么样?

答案更简单,不可能发生这种情况。因为根据GPL许可证,只要发布基于原代码的新产品,就一定必须开源。

4.

所以,我实际上觉得,Michael Widenius没有竭力反对的必要。不管甲骨文干什么,MySQL都不可能灭绝。

相反的,真正感到倒霉的人,应该是甲骨文公司才对,因为它花钱买来自己无法控制的财产。任何的代码,只要置于GPL之下,就不再受作者或所有者控制了,想杀也杀不死了。

5.

如果一个程序员想将自己的代码开源,他有许多种选择,大致可以分成三类:

  1. 选择GPL许可证,要求衍生代码必须开源。

  2. 将代码放入"公共领域"(public domain),彻底放弃版权。

  3. 选择更宽松的许可证,比如BSD和Apache许可证,不要求衍生代码开源。

许多人认为,选择后两种做法比选择GPL更值得赞扬,因为更加大公无私。但是,这样的看法是错误的,实际上GPL要好于后两种选择。

让我们再来假想一下,如果MySQL的源码处于公共领域,或者BSD许可证之下,那会怎样?

那样的话,许多站长恐怕都会感到大难临头了。他们不得不做出选择,将来到底是升级到第三方小公司推出的、质量没有保证、支持力量薄弱、互相不兼容的基于MySQL 5.x版本的各种衍生数据库,还是升级到甲骨文公司推出的、与Oracle兼容的、号称具备各种新功能和最佳性能、并且广告满天飞的MySQL 6.0版本。

在BSD许可证或者公共领域代码的情况下,甲骨文公司可以从容地将MySQL 6.0变为闭源产品,推出你只有花钱才能买到的新特性和后继版本,并且只要你复制给他人使用,就要起诉你。使用开源软件的用户,将因此变为依赖甲骨文公司的用户。只有这种情况发生,才真正有必要,竭力反对甲骨文收购SUN公司。

当程序员放弃代码的版权,或者选择BSD许可证,他可能认为自己做出了世界上最无私的行为。很大程度上,事实确实如此。但是,我们要知道,这个世界是一个商业利益占主导的世界。一旦发生像甲骨文拥有MySQL这一类的事情,你的代码的价值将大大削弱,大公司先是免费利用它们,然后再设法推出取代它们的私有产品。你以为自己奉献了爱心,但是实质上变成了为大公司无偿打工。

从这个角度看,GPL是更好的开源许可证。它保证了自由始终是自由,既无法被剥夺,也不是一种圈套或陷阱。

6.

有的朋友读到这里,可能会提出疑问。如果GPL许可证真的这么好,那么为什么GNU基金会还推出了LGPL许可证

所谓LGPL许可证,全称是Lesser General Public License,直译就是"限制更少的GPL许可证",1991年时与GPL(第二版)同时发布。它近似于BSD许可证,允许将代码用于闭源产品。

这就产生了一个很有趣的问题。为什么像Richard Stallman这种坚持自由丝毫不可侵犯的人,会同意将自己的代码用于闭源产品?

说起来,这其实是他的策略,主要与GNU C library有关。1991年的时候,市场上有很多C语言库可以选择。如果GNU的C库是GPL许可证,那么很多私有软件不会选择它,因为一旦选择了它,就意味产品本身一定要开源。所以为了保证开源软件得到使用和推广,并且闭源软件中有开源的成分,总比一点没有好,所以才诞生了LGPL许可证。

Richard Stallman说得很清楚:

"After all, there are plenty of other C libraries; using the GPL for ours would have driven proprietary software developers to use another—no problem for them, only for us."

"毕竟,市场上的C库有的是。GPL许可证将迫使私有软件去使用他人的库,这不会给他们带来困扰,只会给我们带来困扰。"

所以,策略是这样的:整体软件,或者没有替代品的代码库,一定要使用GPL许可证;有替代品的代码库,可以使用限制较少的开源许可证,但是在取到足够市场份额之后,也应该转为GPL许可证。这就是为什么javascript的代码库,大多数都是类似BSD的许可证,而不是GPL许可证的原因,因为可替代自己的竞争者实在太多了。

总之,如果你想把自己的软件开源,只要不属于上面这种例外情况,GPL就是更好的选择。

(完)