David's profileprowyh's spaceBlogLists Tools Help

Blog


    March 29

    C# and .NET

    The programming language of choice for .NET is C#, which builds on the lessons learned from C (high performance), C++ (object-oriented structure), Java™ (garbage collection, high security), and Visual Basic (rapid development) to create a language ideally suited for developing component-based, n-tier, distributed Windows client and web applications.

    C# 3.0 brings greatly enhanced features and a powerful new development environment. It is the crowning achievement of Microsoft’s R&D investment. It is wicked cool.
     
    -- Programming C# 3.0 by Jesse Liberty and Donald Xie
    March 27

    话说UNIX之春秋战国

    很久没有光顾UNIX这个百花园了,最近借着做UNIX培训,又徜徉了一把。
        
    从87年接触UNIX,到现在已有20年了!想当初为了踏上由UNIX/C开辟出的“新大陆”而秉烛夜战的热情,恍如昨日……
        
    不幸的是,由于AT&T的“慷慨”,UNIX source code走出了生她养她的Bell Laboratories,宛如亚当与夏娃走出了伊甸园,而使得地上“爬满”了芸芸众生一样,UNIX从此不再“UNI-X”!
        
    潘多拉的盒子一旦打开,世界也就不再安宁。从UI、OSF,到POSIX,再到Open Group,将UNIXes拉拢到一起的尝试一波接一波,但UNIXes仍然“我行我素”,仍然标榜“我最美”!特别是各种庶出之Linux,更是让UNIX这一本已“人满为患”的大家族更加“人声鼎沸”!
        
    乱花渐欲迷人眼,现在即使想找一个UNIXes的最小公分母,也不是一件容易的事。如果说dump命令不算UNIX的classical command的话,那cron可是“与生俱来”的,但每个用户的crontab文件以及cron.allow、cron.deny已经“找不着北”了……
        
    UNIX的设计理念之一是“统一”,或者说“一致”,如文件,文件是UNIX中特别伟大的概念及实现机制,就是因为其统一的处理方式。再如处理文件的命令,既可以接受作为命令行参数的文件名,也可以从标准输入读,作为过滤器使用,从而为通过管道构建强大的命令组合提供了实现机制。这种“逻辑的一致性”使得UNIX实现一些处理功能时非常优雅!
        
    可惜的是,后来人却没能坚持这种优雅的“逻辑一致性”,有些命令让人非常烦恼!
        
    chage是一个设置用户帐户/密码有效期的命令,可以方便地更改用户的最近(上次)修改密码的日期:
        
    chage -d lastday user
        
    但这里lastday要求必须是日期格式,实际上/etc/shadow中的lastday存储的是上次修改密码的日期与1970-1-1的差!而UNIX又没有提供计算两日期之差的命令,这样有时候就非常麻烦,如对于这样的任务:
        
    用户peter的密码已失效,如何做才能使peter能够登录而又能够强制其立即修改密码?
        
    要使peter能够登录,必须向前推算peter的lastday,而且必须将lastday转换为日期格式,才能用chage命令来设置,下面是完成此任务的Shell Script:
        
    # $HOME/bin/enable.sh
    ######################
    # for user whose password have expired,
    # enable him/her to login, and force him/her to update password
    #
    # tested on Turbo Linux
    #
    # 2008-3-27
    ######################
    #! /bin/bash
     
    if [ $# -le 0 ]; then
        echo "usage: $0 user"
        exit 0
    fi
     
    a=($(cat /etc/shadow | grep "^$1:" | sed "s/::/:0:/g" | tr ":" " "))
    maxdays=${a[4]}
    inactive=${a[6]}

    d=$(expr $maxdays + $inactive - 1)
    c=$(expr $(date +"%s") / 86400)
    c=$(expr $c - $d)
    years=$(expr $c / 365)

    days=0
    idx=0
    while [ $idx -lt $years ]
    do
        y=$(expr $idx + 1970)
        days=$(expr $days + 365)
        
        r4=$(expr $y % 4)
        r100=$(expr $y % 100)
        r400=$(expr $y % 400)
        if [ $r4 -eq 0 -a $r100 -ne 0 -o $r4 -eq 0 -a $r400 -eq 0 ]; then
            days=$(expr $days + 1)
        fi
        idx=$(expr $idx + 1)
    done
    year=$(expr $idx + 1970)

    r4=$(expr $year % 4)
    r100=$(expr $year % 100)
    r400=$(expr $year % 400)
    ma=(31 28 31 30 31 30 31 31 30 31 30 31)
    if [ $r4 -eq 0 -a $r100 -ne 0 -o $r4 -eq 0 -a $r400 -eq 0 ]; then
        ma[1]=$(expr ${ma[1]} + 1)
    fi
     
    day=$(expr $c - $days)
    idx=0
    while [ $day -gt ${ma[$idx]} ]
    do
        day=$(expr $day - ${ma[$idx]})
        idx=$(expr $idx + 1)
    done

    month=$(expr $idx + 1)
    chage -d "$year-$month-$day" $1
    chage -l $1

    该脚本的用法:
    # enable.sh peter
     
    执行过该命令之后,peter即可登录,而且必须立即更改密码。
     
    该脚本之所以如此冗长,是因为要将天数转换为chage要求的日期!也许chage命令的设计/实现者认为chage主要是用来手工设置用户的lastday等参数的,参数取日期形式会更加自然,所以在内部实现了从日期到天数的转换,而将“自然”留给了用户。但对于此例所言之情况,则是“太不自然”了:要写那么冗长的代码将天数转换为日期,而后chage内部再将日期转换为天数!My God!
     
    如果chage支持天数形式的-d选项,则enable.sh将会简洁、优雅得多:
     
    # $HOME/bin/enable2.sh
    ######################
    # for user whose password have expired,
    # enable him/her to login, and force him/her to update password
    #
    # 2008-3-27
    ######################
    #! /bin/bash
     
    if [ $# -le 0 ]; then
        echo "usage: $0 user"
        exit 0
    fi
     
    a=($(cat /etc/shadow | grep "^$1:" | sed "s/::/:0:/g" | tr ":" " "))
    maxdays=${a[4]}
    inactive=${a[6]}

    d=$(expr $maxdays + $inactive - 1)
    chage -d $d $1
    chage -l $1
     
    可惜,该脚本却是不能执行的。
     
    March 23

    龙应台:一张考卷做做看

    【引者按】教育?!什么是教育?!阅读?!什么是批判阅读?!对照作者的另一篇文章《德国人怎么上历史课》,感觉我们差的不是一点半点!!!

    这是一班通识教育的选修课,学生从大一到硕士生都有,课程名称是“批判阅读”。期中时,我给学生的第一次考试,只有一个题目,但是同一个题目分两阶段考。第一阶段的试题很简单:

    请仔细阅读以下文本并提出自己对这个文本的看法。赞成或不赞成都请阐述理由。

    《甲申文化宣言》

    ……文明多样性是人类文化存有的基本形态。不同国家和民族的起源、地域环境和历史过程各不相同,而色彩斑斓的人文图景,正是不同文明之间相互解读、辨识、竞争、对话和交融的动力……

    我们主张文明对话,以减少偏见、减少敌意,消弥隔阂,消弥误解。我们反对排斥异质文明的狭隘民族主义,更反对以优劣论文明,或者将不同文明之间的关系形容为不可调和的冲突,甚至认为这种冲突将导致灾难性的政治角力和战争。

    ……我们主张每个国家、民族都有权利和义务保存和发展自己的传统文化;都有权利自主选择接受、不完全接受或在某些具体领域完全不接受外来文化因素;同时也有权利对人类共同面临的文化问题发表自己的意见……我们反对文化沙文主义和文化歧视,并认为此类行为是反文化的。华夏56个民族共同创造的中华文化,至今仍是全体中国人和海外华人的精神家园、情感纽带和身分认同……?

    我们接受自由、民主、公正、人权、法治、种族平等、国家主权等价值观。我们确信,中华文化注重人格、注重伦理、注重利他、注重和谐的东方品格和释放和平信息的人文精神,对于思考和消解当今世界个人至上、物欲至上、恶性竞争、掠夺性开发以及种种令人忧虑的现象,对于追求人类的安宁与幸福,必将提供重要的思想启示。

    我们呼吁包括中国政府在内的各国政府推行积极有效的文化政策:捍卫世界文明的多样性,理解和尊重异质文明;保护各国、各民族的文化传承;实现公平的多种文化形态的表达与传播;推行公民教育,特别是未成年人的文化、道德教育,以及激励国家、民族和地区间的文化交流。

    把学生作答的卷子都收回来;很快地翻一下,果然不出所料,所有的学生都答复“赞成”,而且努力地试图演绎《甲申宣言》的立场。“文化多样”这个标语或概念显然已经成为非常“政治正确”的主流思想。这个时候再发第二阶段的考题:

    “政治正确”的东西不一定正确。请详细回答下列问题:

    A.“我们主张文明对话,以减少偏见、减少敌意,消弥隔阂,消弥误解。我们反对排斥异质文明的狭隘民族主义,更反对以优劣论文明,或者将不同文明之间的关系形容为不可调和的冲突,甚至认为这种冲突将导致灾难性的政治角力和战争。”

    1.何谓“狭隘”的民族主义?与“不狭隘”的民族主义差别何在?“狭隘的民族主义”是否一定“排斥异质文明”?“异质文明”又如何界定?纳粹德国是极端的民族主义者,可是并不排斥来自意大利的“法西斯”内容和仪式。多少共产国家,从苏联到阿尔巴尼亚到越南,曾经既是民族主义者又是国际主义者?或者,有多少国家,有时候是民族主义者,一转身又是国际主义者?也就是说,当“异质文明”符合“狭隘的民族主义”所需时,随时可以被拥抱,因此,不“排斥异质文明”不一定代表心灵的开放和“文明对话”。请提出你的看法。

    2.“排斥异质文明”是否一定等同“狭隘的民族主义”?近数年来,欧洲国家最大的辩论之一便是,如何对待伊斯兰文化中某些价值观,譬如所谓“荣誉处死”。在德国和英国都有来自伊斯兰国家的移民妇女被自己的家族杀害,理由是这些妇女违反了某些伊斯兰的“荣誉”观,譬如跟不为家族所认可的男性交往。当这些以基督教价值为主流的国家要对加害者进行审判时,争议的关键就是:所谓“荣誉处死”这种“异质文明”,是不是应该被德国或英国这种基督教国家所“排斥”?如果“排斥”这种“异质文明”,是否就成为“狭隘的民族主义?

    事实上,当欧洲知识分子以“文化相对论”的理由来要求容忍“荣誉处死”这种价值时,最强烈的反对声音来自伊斯兰世界内部的知识分子,很多人认为“荣誉处死”根本不能代表伊斯兰文化,而是被曲解滥用了。他们认为,欧洲知识分子所谓对“异质文明”的尊重,落实了反而是对伊斯兰人权的践踏。请阐述你的立场。

    3.你是否也反对“以优劣论文明”?是否也反对“将不同文明之间的关系形容为不可调和的冲突,甚至认为这种冲突将导致灾难性的政治角力和战争”?如果否,请解释为何文明可以论“优劣”。如果是,请回答以下问题:

    a.在崇尚“荣誉处死”和认为“荣誉处死”就是谋杀的两种文明之中,有没有“优劣”之分?

    b.这是否应该被解释为两个“文明”之间的冲突?可不可能,“荣誉处死”这样的议题,在伊斯兰文明内部本身就有争议和冲突?

    c.两千五百年前,雅典国王在纪念阵亡将士时,叙述雅典价值和斯巴达价值的差异:“雅典的政府管治尊崇多数而非少数,因此它被称为民主。在生活领域里,我们主张法律之前,人人平等……我们和敌对国的不同更在于,我们是开放的,绝不排斥外国人在本国的学习或观察机会,即使我们的开放可能遭敌对国利用……在教育上,敌对国从人民在襁褓中就开始残酷劳其筋骨,我们却主张个性教育。”请问雅典和斯巴达所代表的两种“文明”间,是否也没有“优劣”之分?

    d.英籍作家Rushdie因作品贾祸,被伊朗发出“追杀令”而不得不藏匿多年;丹麦漫画家作品因为被认为亵渎伊斯兰宗教而引起欧洲多国使馆被焚;九一一事件引发全球恐怖行动。请问文明之间的冲突可不可能“导致灾难性的政治角力和战争”?如果这些国际冲突不是“文明”之间的冲突,那么它是什么?

    B.“我们主张每个国家、民族都有权利和义务保存和发展自己的传统文化;都有权利自主选择接受、不完全接受或在某些具体领域完全不接受外来文化因素;同时也有权利对人类共同面临的文化问题发表自己的意见。”

    1.请问“传统文化”由谁来界定?如果是政府,是统治者吗?如果是民间,是多数族群吗?是权力阶层吗?譬如中国文化中,经世致用的儒家固属传统,主张无为的老庄是不是?即使在儒家思想中,讲究君君臣臣的孔子固属传统,强调“君为轻,社稷为重”的孟子是不是?汉族的史观固属传统,满、蒙、回、藏、苗、瑶、维吾尔的史观算不算?如果“自己的传统”和“自己的传统”之间有矛盾时,请问“每个国家、民族都有权利和义务保存和发展自己的传统文化”这句话如何解释?如何落实?

    2.谁有权利来决定“选择接受、不完全接受或在某些具体领域完全不接受外来文化因素”?政府吗?统治者吗?另外,“选择接受”、“不完全接受”、“完全不接受”外来文化的选择依据是什么?宣言中这句话要如何执行?

    3.谁能代表一个国家里的全体国民去“对人类共同面临的文化问题发表自己的意见”?政府吗?统治者吗?知识菁英吗?

    C.“华夏56个民族共同创造的中华文化,至今仍是全体中国人和海外华人的精神家园、情感纽带和身分认同。”

    1.你同意吗?你有权利不同意吗?

    2.试界定“海外华人”——是否包括美籍华人或新加坡、马来西亚华人?譬如新加坡人,他们应该把“华夏56个民族”的中华文化当作“身分认同”吗?如果是,他们与同国的马来人如何共处?

    3.这一句陈述,和B的陈述有无矛盾?

    D.“我们确信,中华文化注重人格、注重伦理、注重利他、注重和谐的东方品格和释放和平信息的人文精神,对于思考和消解当今世界个人至上、物欲至上、恶性竞争、掠夺性开发以及种种令人忧虑的现象,对于追求人类的安宁与幸福,必将提供重要的思想启示。”

    1.你是否同意此处对“东方品格”的认定?

    2.你是否同意作者的论断?

    E.“我们呼吁包括中国政府在内的各国政府推行积极有效的文化政策:捍卫世界文明的多样性,理解和尊重异质文明;保护各国、各民族的文化传承;实现公平的多种文化形态的表达与传播;推行公民教育,特别是未成年人的文化、道德教育,以及激励国家、民族和地区间的文化交流。”

    1.“焚书坑儒”是秦始皇“积极而有效的文化政策”。“文字狱”的恐吓与“博学鸿儒”的招安是清朝统治者“积极而有效的文化政策”。纳粹和前苏联都曾有过“积极而有效的文化政策”,同时,文化政策也是培养人才、提升国民素养的手段。你认为,什么是政府可以做的,什么是政府不可以做的?

    2.联合国从2003年开始推动“保存及提倡文化多样性宣言”,在2005年10月终于得到154个会员国的签署,只有美国和以色列两个国家投反对票。此“宣言”由加拿大发起,法国主推。加拿大发起之初衷是由于加拿大限制美国杂志进口,被美国告到联合国,指控加国违反世界贸易组织的规定。法国则是强烈的“文化特殊主义”者,认为文化与其它商品不同,必须受到主权国家的保护,譬如,它用政策手段防堵美国影片进入法国市场。此两国遂发起《保存及发扬世界文化多样性宣言》的联署行动,主要目标在防堵美国文化商品的渗透和垄断。意即,在“文化多样性”的背后,其实有极大的商业利益的角力。

    2005年联合国《文化宣言》得胜,支持者宣称,尔后各国得以不被美国文化霸权所主宰,文化多样性得以保存。反对者则忧虑,许多国家将以此“宣言”为依据,打着保存“文化多样性”的旗帜,不让国际的电影、杂志、报纸、网络信息进入国内,剥夺人民和全球同步的知识权,造成统治者意识形态的文化垄断。

    以此国际背景重新阅读《甲申文化宣言》,请评论其意义所在。

    做过第二道考卷之后,学生得到“教训”了,来跟我说:以后知道什么叫“批判阅读”了。

    附:

    甲申文化宣言

    当今,几乎所有的政治家、思想家、科学家、企业家、作家艺术家和人文学者都在关注和谈论全球化。这一显见的世界趋势既推动了人类现代文明特别是科技成就和企业经验的共享,也凸显出国家、民族、地区之间不同文明的差异、分歧和冲突。

    鉴于此,我们响应许嘉璐、季羡林、任继愈、杨振宁、王蒙5位发起人的提议,应中华民族文化促进会邀请,于2004(甲申)年93日-5日在北京举行“2004文化高峰论坛”,愿藉此向海内外同胞,向国际社会表达我们的文化主张。

    文明多样性是人类文化存有的基本形态。不同国家和民族的起源、地域环境和历史过程各不相同,而色彩斑斓的人文图景,正是不同文明之间相互解读、辨识、竞争、对话和交融的动力。我们期待,经历过全球化的洗礼,原生状态的、相对独立的多样文明将获得更为广泛的参照,更为坚定的认同。文明既属于历史范畴,既已成为不同族群的恒久信仰、行为方式和习俗,则理应受到普遍的尊重。我们主张文明对话,以减少偏见、减少敌意,消弭隔阂、消弭误解。我们反对排斥异质文明的狭隘民族主义,更反对以优劣论文明,或者将不同文明之间的关系形容为不可调和的冲突,甚至认为这种冲突将导致灾难性的政治角力和战争。

    文化既涵盖价值观与创造力,也包括知识体系和生活方式。文化多元化对于全球范围的人文生态,犹如生物多样性对于维持物种平衡那样必不可少。我们主张每个国家、民族都有权利和义务保存和发展自己的传统文化;都有权利自主选择接受、不完全接受或在某些具体领域完全不接受外来文化因素;同时也有权对人类共同面临的文化问题发表自己的意见。我们为世界上许多古老民族、经济次发达地区的文化命运深感忧虑。国家不论大小、历史不论长短、国力不论强弱,在文化交往和交流方面均享有平等权利。我们反对文化沙文主义和文化歧视,并认为此类行为是反文化的。

    华夏56个民族共同创造的中华文化,至今仍是全体中国人和海外华人的精神家园、情感纽带和身份认同。应当认识,中华文化五千年生生不息、绵延不断的重要原因,在于她是发生于上古时代多个区域、多个民族、多种形态的文化综合体。她不但有自强的力量,而且有兼容的气度、灵变的智慧。当是时也,我们应当与时俱进,反思自己的传统文化,学习和吸收世界各国文化的优长,以发展中国的文化。我们接受自由、民主、公正、人权、法治、种族平等、国家主权等价值观。我们确信,中华文化注重人格、注重伦理、注重利他、注重和谐的东方品格和释放着和平信息的人文精神,对于思考和消解当今世界个人至上、物欲至上、恶性竞争、掠夺性开发以及种种令人忧虑的现象,对于追求人类的安宁与幸福,必将提供重要的思想启示。

    我们呼吁包括中国政府在内的各国政府推行积极有效的文化政策:捍卫世界文明的多样性,理解和尊重异质文明;保护各国、各民族的文化传统;实现公平的多种文化形态的表达与传播;推行公民教育,特别是未成年人的文化、道德教育,以及激励国家、民族和地区间的文化交流。

    文化价值的体现和文明的进步,还将有待于伟大的创造和成功的实践。我们愿与海内外华人一起,为弘扬中华文化而不懈努力,愿与世界各国人民一起,为促进人类文明与社会发展共同奋斗!

    许嘉璐  季羡林  任继愈、杨振宁、王蒙

    于广华  于友先  马金凤  马博敏  王 石  王立平  王纪言  王晓棠  白先勇  白淑湘  田爱习  叶嘉瑩  冯骥才  汤一介  李 立  乔 羽  吕厚民  刘厚生  刘国平  刘诗昆  刘效礼  刘梦溪  朱建荣  任晓兵  许倬云  何伟康  何慈全  何超明  吴祖强  陈映真  邵 恩  杨兆麟  苏树辉  杜维明  阿不都热依木·热介甫  阿 米  贡 敏  张信刚  张继刚  尚长荣  庞 朴  周小燕  周文中  周汝昌  周颖南  金坚范  胡 恩  费明仪  高占祥  萧 马  尉天池  黄会林  黄苗子  黄俊杰  曹泽林  梅葆玖  寇世勋  辜正坤  谢 晋  焦 晃  詹建俊  满都大  裘锡圭  熊召政  潘震宙

    March 04

    庆祝XML发布10周年

    今天到www.w3.org上面找点东西,突然发现,XML已经发布10周年了!
     
    W3C XML 10th anniversary
     
    10年,可以让一个呱呱坠地的婴儿快快乐乐地背着书包走向学堂;也可以让一个热血青年肩负起家庭和社会的双重重担;还可以让一个曾经风韵尤存的少妇发出七斤老太的感叹!
     
    人,能有多少个10年呢?
     
    如今,XML已经10年了!
     
    There is essentially no computer in the world, desktop, handheld, or backroom, that doesn't process XML sometimes. This is a good thing, because it shows the information can be packaged and transmitted and used in a way that's independent of the kinds of computer and software that are involved. XML won't be the last neutral information-wrapping system; but as the first, it's done very well.
     
    Indeed, one can hardly get through the day without using technology that is based on XML in some fashion. When you fill your auto tank with gas, XML often flows from pump to station. When you configure your digital camera, on some models you do so via XML-based graphical controls. When you plug it into a computer, the camera and the operating system communicate with each other in XML. When you download digital music, the software you use to organize it is likely to store information about songs as XML. And when you explore the planet Mars, XML goes with you...
     
    XML is an interoperable standard that supports internationalization, extensibility, composition, and persistence (because the format is open and can also be read by humans in a pinch); learn more about XML-based data formats. XML is supported by a rich toolkit of related standards, including XSLT (for transforming XML content), XQuery (for querying XML databases), Document Object Model (for access in a programming environment), XML Schema, and XML Signature and Encryption. XML interoperability has made it a natural choice for defining both document formats (such as SVG or VoiceXML) and services (both SOAP-based and HTTP-based).
     
    由于地理与历史的原因,人类被分隔为不同的文化、语言部落。但人类没有一天放弃过寻求一种有效沟通工具的努力,从中世纪的通用语言拉丁语,到后来由波兰医生柴门霍夫(L. L. Zamenhof)创建的世界语(Esperanto),到现在风靡世界的英语,无不彰显人类力图突破地域、文化、语言所造成的樊篱,而与“大山”外面的同类交流的欲望!
     
    由于经济的、利益的种种关系,IT被分隔为若干阵营,每个阵营都标榜自己,诋毁他人,不同系统之间的沟通成本越来越大,而这,是有悖于人类向往沟通、交流的本性的。XML,作为彰显人类善良愿望的技术化成果,于1998年呱呱坠地。
     
    XML,是业界(暂时)放弃门户之见(只要看看XML规范文档后面所列的W3C Working Group组成人员及其所代表的公司!),通力合作的伟大成果!
     
    在东方,老子教导我们:鸡犬之声相闻,老死不相往来。小国寡民,使有什伯之器而不用,使民重死而不远徙。。。
    在西方,虽有耶和华的警告,亚当和夏娃仍然走出了伊甸园,开始了建造巴比伦塔(巴别塔)的艰苦历程。。。
     
    XML,是人类又一次建造巴比伦塔(Tower of Babylon)的尝试!
     

    从PDF说开去

    最近想研究一下PDF。
     
    PDF从PostScript脱胎而来,秉承PostScript强大的描述能力,以其精美的图文效果,已几乎成为Internet时代的“标准文档格式”(说PDF是“标准”,可能有人不爱听,见后文)。如果软件能够支持自动输出(导出)为PDF格式文档,无疑软件的专业化色彩会更浓一些。
     
    人之常理:你推出一种文档格式,使用的人(软件)越多,自然对你是好事而绝不是坏事。可PDF的主人Adobe却偏不信这个邪!
     
    到Adobe的网站上找了半天(Adobe网站出奇地慢!),好不容易找到与PDF开发的有关内容,还算大方,PDF最新版的Reference就放在网站上,可以自由下载。但如果谁按照PDF Reference自己写一个Library,那可是真正的高人!咱只是想用PDF API把数据或其它什么东西写成PDF格式就OK了。Adobe PDF Library链接倒是有,接着点下去,Adobe要求:要想使用俺的Library,必须同俺签个协议!
     
    这都什么年代了!有谁听Microsoft说要想使用俺的Library,必须先同俺签个协议?Sun说过要想使用JDK,必须先同俺签个协议么?
     
    签就签吧,谁让PDF是人家的而你又要用呢!按照Adobe的指示下载表格,是一个PDF Form。Adobe说填好这份表格,Submit by email。而那表格居然是保护的,read only!!难道还要我漂洋过海,发一份FAX,或寄一份EMS?!!
     
    真是可笑!
     
    最近关于文档格式的争论,主要围绕ODF和OOXML而展开。却没有人对PDF(Adobe)这种“绝对”小家子气的作法(心态)做任何评论。
     
    反微软人士大骂微软,曰垄断,曰封闭。我倒觉得微软是一家对开发人员友好(developer-friendly)的公司,你可以从www.microsoft.com上找到任何你想要的东西(当然,微软产品的源代码除外:-)),而且download for free,特别是SDK及MSDN,微软还“迫不及待”地要推给你呢(MSDN Reader),这就是气度!
     
    其实,Google一下,会发现很多PDF Libray,Adobe那么藏着捂着,生怕别人用你的PDF Library,那你推PDF,又是为了什么呢?
     
    可见,比微软更加封闭的公司还有,救救(骂骂)这些公司罢。。。