2008年4月29日星期二

不是英雄 -- 评《伪钞制造者》

发信人: xmzky (C:\鱼.exe), 信区: Movie
标 题: 不是英雄
发信站: 水木社区 (Sun Apr 6 18:58:53 2008), 站内


我是在看奥斯卡颁奖晚会的时候知道了《伪钞制造者》,学院将最佳外语片奖授予了这部纳粹集中营题材的电影。关于集中营的电影不胜枚举,其中很多都是美国人拍的,这部德语电影给我的感觉却不寻常,心生诸多联想。

不寻常是比较出来的。斯皮尔伯格生于战后的美国,他那部长达三小时的《辛德勒的名单》让我们认识了一个内心柔软的"正直的异教徒",一个倾尽所有拯救生命的英雄。而侥幸逃脱了纳粹魔爪的波兰斯基却有一个挥之不去的梦魇般的童年,他的《钢琴家》也处处闪烁着他自己的影子,让我们看到一个无助的钢琴天才像老鼠一样四处躲藏,最后用肖邦的《G小调第一叙事曲》进行无言地控诉。

一个是伟大的英雄,并且成为了人道主义的象征;另一个是杰出的音乐家,用音乐征服了他的敌人。而《伪钞制造者》的主人公索罗维奇首先与英雄无关,很多时候他只是在设法活下去而已;画家出身的他曾在俄罗斯的奥德赛艺术学院进修,但他的画多少让人觉得像是业余爱好者的作品;也许他也清楚自己的艺术天分并不突出,又或者他根本耐不住寂寞,于是干脆去画钱,成了一个印制伪钞的罪犯。与前两位相比,他实在是普通得很,甚至有些不体面。在那个盛产哲学家和疯子的德语世界里,很明显人们也仰慕天才,崇拜英雄,但最终他们决定以一个普通人的视角去回首往昔。

一个普通人,不是皇亲贵胄,没有黄金万两,绝非才子佳人,更无三头六臂,你能选择怎样的生活?一个背井离乡、放弃母语的俄国人,索罗维奇的心中到底有着怎样的秘密?一个本打算投身艺术,说起康定斯基就神采奕奕的犹太囚犯,他心中的梦想真的死了吗?无数次我想到梵・高,他身前痛苦却死后成名,值得欣慰的是毕竟他成功了。而那些身前与梵・高忍受着同样的痛苦,死后依旧默默无闻的人,他们的一生又该如何评判?也许有人会说不论是梵・高还是那些无名者,在他们活着的时候都执着于梦想,死后的事情又与他们何干?但问题是,谁能预知自己的命运?万一有天发现某些曾经深信不疑的东西其实是虚空的,你还会继续坚持吗?对此,索罗维奇的回答简单明了:"我还活着,这就是最重要的。"

究竟谁更伟大?是那个拒绝印制假钞,不惜搭上所有人的生命,想要跟纳粹斗争到底的布赫格,还是那个在党卫军的皮靴下苟延残喘,关键时刻救了所有人的索罗维奇?蔑视强暴,慷慨赴死,不失尊严,这样的人本身就是英雄。然而芸芸众生中又有几个这样的英雄?集中营里的人为了活下去,相互倾轧,彼此出卖,不惜以他人的死来换取自己片刻的活,据说实在是稀松平常的事情。莎翁那句"To be or not to be, that is a question."放在这里就显得再恰当不过了。然而人生的考卷里并非仅有判断题,多数情况下你不得不带着镣铐跳舞,寻找到合适的平衡点,你的舞姿才会优美。在这一点上,索罗维奇算是个明白人,他力求自保但不出卖同伴,他服从纳粹但不奴颜婢膝,甚至还跟纳粹军官讨价还价以换取紧缺的药物。说到这里就让我想起了山涛和嵇康,同是"竹林七贤",不同的人生态度导致完全不同的命运。

影片的结尾处,索罗维奇在赌桌上抛洒完所有的美圆之后,独自坐在蒙特卡洛的海边久久不语,他究竟在想些什么?我猜不出,只是那情景让我想起厦门的海。

2008年4月16日星期三

PHP语言教父Gutmans炮轰Java:已经输掉Web之战


http://blog.csdn.net/turingbook/archive/2008/04/13/2287965.aspx

PHP语言教父Gutmans炮轰Java:已经输掉Web之战

--------------------------------------------------------------------------------

PHP 3之后的主要语言开发者之一、Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言。他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,应该全面拥抱标准的动态语言。

由于Gutmans的特殊地位,他的这篇长文已经在技术界引发了强烈争议。参见其blog上和TSS上的讨论1,2。

下面是对全文的一个编译版本,基本反映了原貌。其中对多核环境中多线程(JVM)与多进程(LAMP)的比较,C语言生态系统以及开源语言与Java等厂商语言和技术的比较,感觉都是非常有价值的。

翻译上的问题,请多指教。


--------------------------------------------------------------------------------

Gutmans回忆自己几 年前参与的一个基于IBM Websphere的大型企业级项目。项目团队中无论开发还是架构人员都非常出色,但其中最优秀的人与Andi谈起PHP和动态语言时,还是将之视为玩具 语言。这在当时正是Java界对动态语言的典型心态。但是,他们恰恰忽视了Web,因此Java EE设计时并没有以Web为中心,而且关注在企业集成、事务管理和其他后端处理上。虽然Java EE通过servlet和JSP支持Web开发也有不短的历史,但是掌握标准发展的大公司们忽视了Web的RESTful本质,仍然在向通用平台的方向上 走。

而与此同时,建于C语言库和工具的生态系统之上的LAMP架构,则成了Web程序最流行的开发平台。其中最常用的语言是PHP。由于PHP专注于 Web开发,而且为此不断演变,它简直就是为Web范型(paradigm)量身打造的,能够快速和容易地解决常见的Web问题,因此获得了最大的市场份 额。根据Ajaxian.com的调查,大约50%的RIA开发人员都使用PHP。由于各种PHP程序如Wordpress, Drupal, mediaWiki, osCommerce, SugarCRM的流行,这种趋势更加明显。

随着大多数业务应用程序包括CRM、ERP、报表、文档管理等等也都转向了Web,那些大的Java厂商都意识到,Java对Web范型的形成和 发展影响甚微,因此他们开始支持各种标准和非标准的Java Web框架(JSF、Struts、Spring MVC等等),要使Java适应Web。这些框架虽然有些也取得了一定成功,但是它们都无法解决Java在Web上的主要问题:由于严格的类型化和架构过 度复杂,开发时间和开发人员的技能要求都更高,也就是说,总成本无法令人满意。

而且,大的Java厂商还什么都想占着。一方面想融入Web,一方面又不肯放弃自己已经在Java上建立起来的数十亿计的生意。甚至动态语言的广泛流行都未能显著改变他们的行为模式。但是随着微软雄心勃勃的多语言运行环境.NET的出现,大势又变了。

成功的动态语言包括PHP, Perl, Python和Ruby都是用C写的,充分利用了C语言库生态系统的广泛性和深入性。而且它们都是社区驱动的,没有什么正二八经的语言规范,发展不会被公 司政治所阻碍。这些语言都是由使用者自己开发的,他们只有一个目的:快速搞定工作。因此语言可能在小的版本更新时就加入重要的改进。这种敏捷本质正是适应 Web应用快速变化必需的。


--------------------------------------------------------------------------------


而且,LAMP的部署方式有显著的优势。在多进程架构中,Web服务器和动态语言软件中的故障一般不会使网站垮掉。虽然会有某个进程崩溃,但其他 服务Web请求的进程仍然可以继续运行。这与JVM这种多线程的环境中软件故障包括崩溃和死锁通常都会使系统垮掉,形成了鲜明对比。 而且在特定时间后回收进程的能力能够防止内存泄漏和内存碎片化这两种常见的内存问题使软件随着时间推移性能降低。LAMP上软件更新时,可以轻松和渐增地 推到服务器,无需冗长的构建和打包。虽然有时这会带来不规范、不严格的问题,但是只要正确实施,开发人员和运营人员的日子都会好过得多。

相比之下,Java厂商受困于与Java绑定太紧对多种语言的支持很少的JVM。他们并没有转向能够使其客户两全其美的LAMP和Java技术松 耦合的模型,而是患得患失,怕失去对客户的控制,竞相在JVM上提供动态语言。无论是微软这个强敌,还是Java中互相竞争的厂商,都在实施自己的动态语 言策略。

现在,Sun正在其Java EE解决方案上支持JRuby和Jython而投入;IBM Websphere集团则认识到Java EE平台运行现代Web应用的无效,在Project Zero上大力投入,该项目的目的是使IBM在Web 2.0世界中也能有一席之地,目前支持Groovy和PHP;BEA也有一些孵化项目,但是被Oracle并购后,这些项目是否能有结果目前不明。Project Zero的 首席架构师是IBM公司里最先公开承认Java现在可以认为只是一种系统语言而不适合构建RESTful Web应用的几个人之一。而构建RESTful Web应用正是Project Zero的目的。Java堡垒花了10年多时间才承认Java在Web上投资回报不佳,而目前的趋势,将有更多的客户做出更明智的选择。动态语言将有大的 提升。与大型机一样,Java已经在企业级IT和关键业务应用中根深叶茂,因此不会很快消失。但是在Web应用上,Java语言很可能会在市场份额上急剧 下降。


--------------------------------------------------------------------------------


问题在于,非微软的Web市场是会采用动态语言的JVM实现,还是容纳这些语言事实标准实现的LAMP架构。虽然我认为会有客户被前者吸引,但是市场主流还是会选择LAMP。原因在于:

1. 标准实现更新速度很快,而JVM版本总是滞后,会带来兼容性问题。这与Mono跟不上.NET的问题类似。

2. JVM最初设计时并没有考虑支持动态语言,因此在可见的将来,要满足实际需求,挑战非常大。像闭包、间接方法调用和类型juggling等动态特性就不容易解决,这从目前JRuby与Ruby的C版本的比较中可以看出。而且,硬件厂商是否有兴趣跟上也是有待观察的。而开源技术就没有这种问题。

3. 现代Web的可伸缩需求对Web层的处理强度的要求越来越大。基于C的架构更可能与操作系统底层(原文为primitives)最有效地互操作,提供高 效、内存占用小的架构,满足这种强度。高性能的Web服务器比如lighttpd, Zeus, IIS 7,高性能的缓存系统比如Facebook等最大的网站使用的memcached,还有其他性能关键的子系统比如内存管理,都是例子。

4. 多核系统非常适合LAMP架构的多进程方式。随着芯片业现在把主要精力都放在了多核而不是超线程技术上,JVM这样的多线程环境的优点在今天的硬件上将无法充分发挥。而多进程方式将提供更多稳定性和可靠性。

5. 由于LAMP的简单性,它对于开发人员而言进入门槛非常低,而又能够提供很好的伸缩性,包括Yahoo和Facebook这样的大规模产品系统。

总而言之,越来越清楚的是,动态语言将逐渐成为Web开发的标准。微软和Java厂商都认识到这个趋势,现在正在各自的软件平台之大力投入,给出 解决方案。但是,因为主要动态语言社区都是在.NET CLR和Java JVM软件平台之外发展起来的,这些厂商如果只是想依靠将成功的动态语言复制到自己的平台上而反败为胜,他们将处于困难的境地。有些厂商已经意识到这一情 况,采用了一些混合策略,同时为客户提供动态语言的标准实现,虽然还没有完全与其解决方案组合配合起来。微软在PHP上的投入就是如此,Sun也开始为客 户提供原生的Ruby和PHP实现。我相信虽然JVM向动态语言抛出的橄榄枝可能会吸引一些Java客户,但是这无法跟上开源社区开发原生动态语言实现的 步伐。JVM的动态语言实现对于Java厂商与时俱进是不够的,它们需要全面地拥抱原生的事实标准的社区驱动的动态语言。

国际歌


9、卢X,男,能动学院核工程11班学生。2003年4月1日晚,该生在部分学生喊罢餐口号时,用电脑放《国际歌》。
经2003年5月14日校长办公会议研究,决定给予卢X记过处分。
10、申XX,男,能动学院核工程11班学生。2003年4月1日晚,该生在部分学生喊罢餐口号时,将音箱放在阳台上,由卢X用电脑放《国际歌》。
经2003年5月14日校长办公会议研究,决定给予申XX严重警告处分。
11、刘XX,男,能动学院核工程11班学生。2003年4月1日晚,该生在部分学生喊罢餐口号时,找线并将电脑音箱连接起来,由卢X用电脑放《国际歌》。
经2003年5月14日校长办公会议研究,决定给予刘XX严重警告处分

X61 on Gentoo

X61 on Gentoo
2007-12-11 23:40
Xorg
1. kernel config, CONFIG_DRM_I915=M
2. VIDEO_CARDS="i810" emerge xorg-server
3. xorg.conf
Section "Device"
    Identifier "My Video Card out1"
    Driver      "intel"
    Screen      0
    VendorName "Intel Corporation"
    BoardName   "Mobile Integrated Graphics Controller"
    BusID       "PCI:0:2:0"
EndSection


屏幕亮度调节
1. sysutils
#include <stdio.h>
#include <string.h>

void stripwhite(char *str){
        int i;
        for (i=strlen(str)-1; i>=0; i--){
                if (isspace(str[i])){
                        str[i] = 0;
                }else{
                        break;
                }
        }
}

int main(int argc, char *argv){
        char buf[1024];
        int ret;
        while (fgets(buf, sizeof(buf), stdin)){
                stripwhite(buf);
                if (strcmp(buf, "brightness_up") == 0){
                        ret = seteuid(0);
                        ret |= setuid(0);
                        system("echo up > /proc/acpi/ibm/brightness");
                }else if (strcmp(buf, "brightness_down") == 0){
                        ret = seteuid(0);
                        ret |= setuid(0);
                        system("echo down > /proc/acpi/ibm/brightness");
                }else{
                        ret = -1;
                        printf("unknown command\n");
                }
                printf("ret = %d\n", ret);
        }
        return 0;
}

编译后 suid

2. 修改 ~/.xbindkeysrc for xbindkeys
"echo brightness_up | /usr/local/bin/sysutils"
    m:0x0 + c:212
    NoSymbol

"echo brightness_down | /usr/local/bin/sysutils"
    m:0x0 + c:101
    NoSymbol

显示器切换(Fn+F7)
1. 需要 xorg-x11 >= 7.3, xorg使用intel的driver

2. xorg.conf
Section "Screen"
    Identifier "Screen 1"
    Device      "My Video Card out1"
    Monitor     "My Monitor"
    DefaultDepth 24

    Subsection "Display"
        Depth       24
        ViewPort    0 0
        Virtual   2304 1024
    EndSubsection
EndSection

3. x61_fn_f7.sh
#!/bin/bash

# External output may be "VGA" or "VGA-0" or "DVI-0"
EXTERNAL_OUTPUT="VGA"
INTERNAL_OUTPUT="LVDS"
EXTERNAL_LOCATION="left"

export DISPLAY=":0.0"

case "$EXTERNAL_LOCATION" in
       left|LEFT)
               EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
               ;;
       right|RIGHT)
               EXTERNAL_LOCATION="--right-of $INTERNAL_OUTPUT"
               ;;
       top|TOP|above|ABOVE)
               EXTERNAL_LOCATION="--above $INTERNAL_OUTPUT"
               ;;
       bottom|BOTTOM|below|BELOW)
               EXTERNAL_LOCATION="--below $INTERNAL_OUTPUT"
               ;;
       *)
               EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
               ;;
esac

# Figure out current state
INTERNAL_STATE=$(xrandr | grep ^$INTERNAL_OUTPUT | grep con | sed "s/.*connected //" | sed "s/(.*//")
EXTERNAL_STATE=$(xrandr | grep ^$EXTERNAL_OUTPUT | grep con | sed "s/.*connected //" | sed "s/(.*//")

if [ -z "$INTERNAL_STATE" ]; then
       STATE="external"
elif [ -z "$EXTERNAL_STATE" ]; then
       STATE="internal"
else
       INTERNAL_STATE=$(echo $INTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
       EXTERNAL_STATE=$(echo $EXTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
       if [ "$INTERNAL_STATE" = "$EXTERNAL_STATE" ]; then
               STATE="mirror"
       else
               STATE="both"
       fi
fi

function screen_external(){
       xrandr --output $INTERNAL_OUTPUT --off
       xrandr --output $EXTERNAL_OUTPUT --auto
}

function screen_internal(){
       xrandr --output $EXTERNAL_OUTPUT --off
       xrandr --output $INTERNAL_OUTPUT --auto
}

function screen_mirror(){
       xrandr --output $INTERNAL_OUTPUT --auto
       xrandr --output $EXTERNAL_OUTPUT --auto --same-as $INTERNAL_OUTPUT
}

function screen_both(){
       xrandr --output $INTERNAL_OUTPUT --auto
       xrandr --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION
}

function screen_toggle(){
       case "$STATE" in
               internal)
                       screen_mirror
                       ;;
               mirror)
                       screen_external
                       ;;
               external)
                       screen_both
                       ;;
               both)
                       screen_internal
                       ;;
               *)
                       screen_internal
                       ;;
       esac
}

# What should we do?
DO="$1"
if [ -z "$DO" ]; then
       if [ $(basename $0) = "thinkpad-fn-f7" ]; then
               DO="toggle"
       fi
fi

case "$DO" in
       toggle)
               screen_toggle
               ;;
       internal)
               screen_internal
               ;;
       external)
               screen_external
               ;;
       mirror)
               screen_mirror
               ;;
       both)
               screen_both
               ;;
       status)
               echo "Current Fn-F7 state is: $STATE"
               echo
               echo "Attached monitors:"
               xrandr | grep "\Wconnected" | sed "s/^/ /"
               ;;
       *)
               echo "usage: $0 <command>" >&2
               echo >&2
               echo " commands:" >&2
               echo "          status" >&2
               echo "          internal" >&2
               echo "          external" >&2
               echo "          mirror" >&2
               echo "          both" >&2
               echo "          toggle" >&2
               echo >&2
               ;;
esac


4. xbindkey.rc
"~/bin/x61_fn_f7.sh toggle"
    m:0x0 + c:214
        NoSymbol


黑屏
1. 自动黑屏
xorg.conf:
Section "Monitor"
     ... ...
     Option "DPMS" "on"
     Option "StandbyTime" "20"
     Option "SuspendTime" "30"
     Option "OffTime"   "40"
EndSection

2. 收到黑屏
$ xset dpms force standby

Wireless (Intel 4965AG)
1. kernel module: mac80211 (CONFIG_MAC80211)
2. emerge iwlwifi
可能需要修改ACCEPT_KEYWORDS和/usr/portage/profiles/package.mask

TrackPoint
trackpoint will work fine in gentoo by the following steps:
1.enable "press to select"

echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select

2. to enable scrolling,put the following lines into xorg.conf's trackpoint section(it's an "InputDevice" section)

Option "Emulate3Buttons" "on"
Option "Emulate3TimeOut" "50"

Option "EmulateWheel" "on"
Option "EmulateWheelTimeOut" "200"
Option "EmulateWheelButton" "2"
Option "YAxisMapping" "4 5"

Option "XAxisMapping" "6 7"
Option "ZAxisMapping" "4 5"

now restart X,and enjoy the trackpoint.

禁用firefox里的滚动键Move back/forward in history
mousewheel.horizscroll.withnokey.action = 0

TODO
待机
电池管理?
硬盘振动检测?

X61

X61
2007-12-12 12:20优点


指点杆
键盘灯
8芯电池6小时
Linux驱动容易找

缺点
键盘小
分辨率小 (1024x768)
冬天容易被静电电到,尤其是指纹识别。
屏幕可视角太大,容易泄密
散热有问题。 指纹识别附近很热,金属部分烫手

注意事项
使用中,袖管容易挂到笔记本近人的两个角上,把笔记本掀起

中国的城市化与贫民权利 (zz)

中国的城市化与贫民权利
from 中国报道周刊 by cnbaodao

  都市化过程中出现大量城市新移民,如何让他们在城市住下来,最终融入城市?在民主时代,或者允许贫民“自由”解决住房而容忍“贫民窟”,或者以福利国家方式消除贫民窟,成为两种基本选择,而普遍趋势是自由与福利兼有,尽管这些做法各有利弊,但今天的共识是:既不给自由也不给福利的做法已为人道的底线所不容。

  真问题并非“贫民窟”而是拆毁“贫民窟”

  我国自改革开放以来,出现了前所未有的城市化高潮。最近我们经常听到这样一种言论,一亿四千万农民工进城,却没有出现“贫民窟”,创造了举世唯一的“奇迹”。可是接下来我觉得他就应该解释,这些人没有住在贫民窟,那住在哪呢?所有讲奇迹的人都回避了这个问题。

  这些进城的农民工,他们是不是在城市买了商品房呢?估计很少。是不是住进了国家提供的福利房呢?好像也没听说过。是不是他们自己盖了一些棚户呢?好像也没有。那他们到底去了哪里,是上了天还是入了地?

  现在某些人批评贫民窟,已经很少再说当代西方发达国家了,因为这些国家的贫民区,至少在建筑景观上都是很漂亮的,而棚户式的贫民窟,大概只能在发展中国家看到了。于是,这些人就说,你看印度的贫民窟多糟糕、拉美的贫民窟多糟糕,而且说这些都是资本主义或新自由主义的恶果。

  这些人关于资本主义造成贫民窟的理论,在19世纪恰恰是馬克思主义者曾经严厉批评过的。恩格斯在《论住宅问题》一文中说道:穷人“一般总是住在恶劣的、拥挤的、不卫生的住宅中”,这“不是现代(按:指资本主义)特有的现象;它甚至也不是现代无产階級遭受的一种和以前一切被压迫階級的痛苦不同的特有的痛苦;相反,它几乎是同等地伤害到一切时代的一切被压迫階級”。

  换言之,“贫民窟”并非馬克思恩格斯们批判的“资本主义社会”所独有。而“现代”真正特殊的问题是:城市主城区穷人“本来就很恶劣的居住条件” 也无法维持了。由于经济的快速发展,大城市主城区的地价飙升,于是很多人盯住了这一块地皮,认为在这一块地皮上盖低档住房很不合算,千方百计要把城市中心区的穷人赶走,然后盖一系列豪华的建筑。恩格斯说,这才是资本主义时代的真正问题。对此,我们不妨以老牌资本主义国家法国首都巴黎做个案例考察。

  法国的奥斯曼“大拆迁”

  在没有迁徙自由的中世纪,巴黎是没有“贫民窟”的。法国大革命后国民有了迁徙自由,迁入巴黎的“进城农民”大增。尤其是复辟时期、七月王朝与第二帝国时期法国工业化加快,城市也加速扩张。1800-1860年间,巴黎人口从58万增至170万,即三倍于前。贫寒的新移民见缝插针,在昔日的峨峨 “皇都”里 “私搭乱建”,加上适应贫寒租户需求的廉租私房大量出现。于是在市内的西、北、东三面都出现了“贫民窟”。这些街区不仅不“雅观”,而且使与之为邻的达官贵人感到不舒服。加之自大革命起在“无套裤汉”的抗争遗风之下,贫民区被视为“起义”的渊薮。尽管激进思想并非发源于贫民区,但在某些人看来,从1789 到1848年,“捣乱者”每隔若干年就在那里竖起街垒路障,而狭窄的街巷使鎮壓者的大炮难以到达。所以,统治者对这些“贫民窟”深感头疼。但在革命后“民权”的保护下他们无可奈何。

  机会终于来了,这就是1852年拿破仑三世颠覆共和、恢复帝制后,政治出现專制化趋势,民权被严重削弱。在此背景下皇帝实行“警长治城”,于1853年将其心腹、巴黎警察局长奥斯曼伯爵升为塞纳省省长和巴黎市长,授命他清理贫民区。

  奥斯曼权势巨大,他动用国家权力强制性地成片拆迁,据说他“将直尺按在城市地图上,穿过中世纪巴黎拥挤狭窄的街道画出条条直线,创造出了新的城市形式。他推翻一切挡道的东西,让路给林荫大道”。17年内,城市中43%的房屋被强制拆除,“有效地清理了贫民区”。在此期间,第二帝国通过提高税收投入了巨资,为打造奥斯曼的“新巴黎”花了25亿法郎,而这个时期国家每年财政总支出不过14亿-23亿法郎。奥斯曼以其对民权的蔑视而被称为“凯旋了的万代主义”。

  奥斯曼不仅手段强硬,而且生财有道,他使用政府的暴力帮助开发商赶走贫民,规定开发商建造的豪华“新巴黎”房产由投资者特许经营,并以政府的垄断权力保证他们能在短期内收回投资并得到足以诱人的利润,但特许期满后房产必须归政府所有。于是政商合作发财,帝国基建-财政部门的不少官员借之也大捞一把。而被驱赶的穷人所得补偿很少,奥斯曼的改造对他们完全是一场灾难。

  奥斯曼之后的“自由拆迁时代”

  不过,奥斯曼现象不仅是在民主国家中很少见到,即使在法国,也就是那二十年的一个特殊现象。奥斯曼以后,巴黎的城市改造仍然在进行,但它的原则以及相应造成的城市风貌,就和奥斯曼时代有了很大的不同。在共和民主时期,城市改造基本上遵循两条原则:商业性拆迁,遵循自由交易原则;公益性拆迁,遵循民主决策原则。

  所谓民主决策,是指一个项目如果是公益性质的,那么首先要通过民主程序来确定,要经过议会讨论、舆论论证等等,最终达成共识,建还是不建。如果建,那么第二个程序就是自由交易的尝试,尽管是公益项目,能够做自由交易也要尽量做自由交易。如果在第二个程序遇到问题,有人漫天要价,怎么办?那有第三个程序,就是由中立的资产评估机构来财产评估。如果这个评估的价格,拆迁户仍然不能接受,仍然是漫天叫价,那怎么办呢?第四个程序就是要有替代方案的论证。如果替代方案论证也认为不行,公益必须要这个地方,那么在走完这些程序以后,可以实行国家最终定价,按照公平、合理的价格来给予拆迁补偿。这个过程相当复杂,不是哪个领导一拍脑瓜就能够做得出来的。

  奥斯曼以后的巴黎城市拆迁和改造更加重视贫民的权利,一方面,政府不能强行驱赶他们,另外一个方面,反而有越来越多的责任要为穷人提供服务。这是民主国家的两个发展趋势,权力越来越受限制,责任越来越可问责,也就是说,政府想做就能做的事越来越少,政府不想做也得做的事越来越多。政府不想做也得做的是什么呢?那就是帮助穷人。这就涉及到贫民区、简陋住房的改造问题。这些相关问题等我介绍完另外几个国家的贫民窟情况后,再作介绍。

  南非索韦托:隔离型贫民窟

  南非的一些城市比如约翰内斯堡在1994年废除种族隔离制度以前是很漂亮、很安静、很整洁、治安也很好的,但前提是不准黑人进来。可是,白人又需要黑人给他们打工,又不想给他们提供福利房,怎么办?南非白人想到了一个办法,就是在城郊划一大片地方,让黑人自己在那里盖房,这就是索韦托贫民窟的来历。到 1980年,索韦托已经发展到160万人口,比约翰内斯堡主城区的人口还要多。这两个地方紧挨着,但却是天壤之别,如果说约翰内斯堡是天堂,那索韦托就是地狱。

  索韦托可以说是黑人的伤心地,但在1994年种族隔离制度废除以后,情况发生了很大的改变。今天我们看到索韦托不再是地狱,而约翰内斯堡也不再是天堂,黑人开始大量地移居约翰内斯堡,开始盖起一些不是太漂亮的房子。

  虽然现在很多人对于这种状况不满,但在索韦托也可以看到很乐观的景象。因为索韦托的房子虽然还是不怎么样,但已比上世纪60年代好很多了,而且索韦托的公共设施这些年也发生了很大的变化。在索韦托有一个很有意思的现象,当地有一个据说是非洲最大的公共汽车站,每到圣诞节(相当于我们的春节),就会出现大量的人涌到这个公共汽车站坐车回家过年。不过,这种景观和中国似曾相识又有很大的不同,就是那些回家过年的人,基本上是跨国的外籍劳工。因为南非本国的黑人劳工,一般来讲都是全家住在一起,尽管索韦托的条件不是很好,但至少他们是可以在那里过正常的家庭生活,也就不存在回家过年的问题。

  尽管现在的约翰内斯堡变得比以前脏乱差了,治安也比以前糟糕了,但人们普遍还是认为现在比过去有了很大的进步,在约翰内斯堡市中心有一个曼德拉广场,就是为了纪念废除种族隔离制度给他们带来的进步。当然,南非现在面临的问题也还有很多,但南非人绝不会用恢复种族隔离的办法来解决问题。

  今日第三世界都市的贫民窟

  (1)印度贫民窟的来历

  在殖民时代,由于英国人的“城管”相对较严,尽管当时的印度农民远比现在更贫困,但印度大城市中的贫民窟并不多。獨立后印度实行民主制度,对穷人迁徙限制放宽,大城市不可能“贫民与狗不得入内”,于是农民进城的过程加速。

  同时,上世纪90年代以前印度“政治学英国,经济学苏联”,政治上不仅搞民主而且承认公民迁徙自由权利,经济上却实行“马哈拉诺比斯社會主義”,被当时苏联定义为“走非资本主义发展道路的国家”。这种体制虽然也号称民主社會主義,然而却不是学瑞典搞福利国家、二次分配,而是学苏联以国家财政投资搞了许多大型国有企业实行“计划经济”,这样一来,用于社会保障的钱便严重不足。名义上尽管国家对公民的教育与卫生承担责任,但实际上除了左派执政的一些邦外,那时印度多数邦中的乡村公立医疗与教育网点量少、质差、经费缺,而大城市里对穷人的保障就要好些,虽没有发达国家那种住房福利,教育、卫生条件还是远比农村强。在迁徙自由状态下,这更加速了乡村中最穷的那部分居民迁入城市。

  而另一方面,这种“社會主義”的国家垄断也导致民营中小企业发展不足,难以做到充分就业,进城人口中相当一部分难以脱贫。尽管他们并不比进城以前更穷,但在现代化大城市中,他们的棚户区的确触目惊心。这些因素的综合,便使得印度在獨立后的几十年内都市贫民窟大为扩张。

  (2)拉美贫民窟现象:开发商给穷人让路

  中国人到拉美,往往会觉得有些事情不可思议,比如经常可以看到一些靠近市中心的地方,都是大片大片的贫民窟,而房地产商往往在一些条件很差的地方,比如 50多度的陡坡,搞商品房开发。于是中国人很惊奇,这么好的地方你们怎么不圈呢?拉美的开发商会瞪眼睛回答,你们真是有本事啊,怎么能够把他们搞走?

  其实,拉美的城市周围也有圈地运动,可这不是政府圈老百姓的地,而是老百姓圈政府的地:一帮进城农民,进城后要找地方盖房子,于是找一块政府公地拉起一道铁丝网,自己盖起了房子,政府说这是违章建筑,但整个社会的舆论都是支持他们的,折腾了半天,政府也就说,算了算了。比如BOSCO合作社区就是这样的,百姓征了官家的地。

  我觉得拉美的贫民窟,有一点比美国好,那就是他们的组织性要比美国强,他们往往有的是从农村整村地往城里迁,保持了农村里原有的人际关系,社交活动也比较多,像我看到的BOSCO,他们就组织起来自己盖了一些房子,都是二居室的,很简陋。他们是穷人,而且进城的年限不过是五年十年,基本上是来自山区的印第安人。但是这些房子最大的好处就是特别便宜,为什么便宜呢?土地是圈来的,也没有开发商的利润,基本上是自己合作盖房,成本就是建筑材料,据说这样一套房子才2000多美元。

  民主福利国家的贫民区改造

  前面提到,在奥斯曼时代,巴黎虽然大拆大建,建立了很多豪华建筑,但基本上没给穷人盖什么房子。但到了民主共和时期,这种现象就有了很大的变化,尤其是从二战前到战后,一直到上世纪60年代,法国先是在巴黎周边贫民区比较集中的地方,比如伊夫里、苏瓦希、楠泰尔等地,建立了以高层廉租为特征的第二代福利房。这种福利房引起了很多的批评,尤其是来自左派的批评,他们认为给穷人盖的房子还是不够好,建筑密度太高、绿地太少、居住太拥挤,人们在里面缺少自尊心。在这种批评下,到了上世纪80年代以后,法国开始大量兴建所谓第三代福利房,也就是以低楼层、低建筑密度,绿地和公共设施配套齐全的街区为主。

  那么,什么是福利房呢?福利房有两个特征,第一是由政府的房政部门面向全社会盖的,而不是像我国那种各单位给自己内部人盖的。第二就是它的分配标准,唯一的分配条件就是贫困(低收入)。西方国家形形色色,有左派掌权的福利国家,有右派掌权的自由放任国家,福利房覆盖面也有很大的差别,但都有一个共同点,那就是福利都是从最穷的人开始覆盖的,从来不是从最富的人开始覆盖的。

  中国的“负福利”住房制度

  由政府房政部门兴建,以贫困(低收入)为唯一分配条件。此种制度在西方普遍,在剧变前一些东欧国家也有。但我国从未有过。国共鼎革初,政府曾把一些没收房交由房政部门安置社会贫民,但从未新建此种住房。此后用房政经费维修旧房且远不足。国家的住房建设资金都拨给“单位”,按“负福利”原则实行 “单位分配制”:有特权的“好单位”收入高房子更好,无特权的“差单位”收入低住房差(往往无房)。在单位内部同样按“负福利”原则:官大工资高,“住房待遇”更高;官小工资低,“住房待遇”更低。而最穷的农民和“无单位者”不仅完全没有分房资格,自己盖个“窟”也被指为“私搭乱建”而要被惩处,处于典型的“无福利也无自由”状态。

  后来我们搞住房改革“取消福利房”,其实是把过去的“特权房”予以变现、赎买。真正的“福利房”制度,我们过去从未有过,现在也不是“取消”的问题,而是要新建一套前所未有的福利房制度。

  不要让中国农民再做“两栖人”

  中国其实也有“贫民窟”,但更多的“进城农民”无疑还是住在工棚里。中印工业化进程都导致大量农民进城,但不同的是:印度农民往往卖掉土地,举家进城后占地搭建简易住房,形成为人诟病的“贫民窟”。但是这些新移民相对易于在城市建立家庭生活,同时形成社会保障压力。而中国农民没有地权,不可能卖地,但可能被“征地”而赤手空拳流入城市。他们不能在城市占地,政府不许建立简易住房,又租不起更买不起常规住房,造成大量成家的新移民只能在城内过集体生活,形成表面上比贫民窟好看的集体宿舍(工棚),并把家庭留在农村,而且自己也不可能扎根于城市,通常在“出卖青春”之后便回乡度过余生。中国因此表面上避免了贫民窟问题。

  我记得重庆有个官员说过,重庆“永远不会有贫民窟”,原因是中国农民习惯做“两栖人”,不像你们印度人喜欢全家进城。恰恰就在这个城市, 2007年3月重庆市沙坪坝区有关部门进行的专项调查中,有5%的男性民工坦承自己找过“小姐”。调查还显示,已婚夫妻打工而两地分居,长期没有性生活时,24%的男性、33%的女性“整夜睡不着”。39%的男性、55%的女性民工通过“给家里打电话”来度过漫漫长夜。调查报告指出“这说明,性压抑已经成了民工感情生活的一大痛楚。”“35岁前没有家庭生活,35岁后没有社会保障”长远下去会怎样?别的社会问题且不论,请看奇文《亲子鉴定与文化问题》:中科院北京基因组司法物证鉴定中心2005年共做了3000例左右的亲子鉴定,其中680例鉴定为非亲子,比率达22.6%.而其中农村例子中非亲子率更是“有点惊人”,高达将近50%!今后我们的社会基础、文明基础、人伦基础会如何变化?

  其实这样的问题在中国的其他城市也非常多,我觉得,重庆最近搞的城乡统筹改革非常之有意义,我也希望重庆的城市化能开创一个新的模式。我要讲的是,重庆的城市化如果在城市里出现贫民社区,我不会批评它,我觉得这是一个很难免的现象,在这一点上我们应该对政府有足够的理解。可是,如果在这个过程中,重庆又多出几百万的两栖人,我觉得这个问题可能要比有贫民社区更严重了,尤其是现在的农民工子弟发展到第二代的时候,问题就更严重了,因为第一代还可以说他们是两栖人,第二代还让他们当两栖人吗?

  现代城市新移民的问题,没有尽善尽美的解决方式,但是我们知道,有一些方式是应该避免的,老实说,像索韦托那样的方式,很多人就认为是非常不人道的,但是我认为,索韦托毕竟还是给了黑人一个在城市里成家立业的条件,我们现在不能给他们提供廉租房,我们也不允许他们在城市里自己盖起类似棚户区,而且我们还要整顿城中村。现在整顿城中村,大家讨论的都是如何给城中村原来的户籍人口以更多的补偿,拆迁补偿往往都是给房主的补偿,但最大的问题是,我们基本上不考虑租户的利益。其实城中村的改造,最大的问题是这些租户都去了哪里?这些租住城中村的农民工去了哪里?

  城市新移民,一般来讲,或者给他自由,或者给他福利,或者二者都给。二者都不给,可能在一段时间内,我们会看到一些所谓的好处,但从长远来看,这种做法负作用很大。中国最应该警惕的不是什么拉美化,中国怎么会拉美化?中国现在正在奥斯曼化,怎么防止这个现象,这是大家要考虑的。
  作者:秦晖

作者: 秦晖 发布于 中国报道周刊, 2008-04-14. | 添加评论 | No comment

原文地址 中国的城市化与贫民权利