Archive

Archive for May, 2006

The Great Raid/大偷袭

May 21st, 2006 Fwolf No comments

非常不错的片子,虽然描写的只是二战后期的一次小规模的营救,但是影片在前面的铺垫、悬念的安排和冲突的迅速爆发以及结束各个方面呈现得都非常完美,也没有拖沓的地方。

影片描述的是一群1941年在菲律宾被俘的美国战俘,被日本人关押在集中营中,其中大部分受伤或者生病(身体好的都拉到别的地方作劳工了,就像The Bridge on the River Kwai/桂河大桥里面描述的那样)。而到了1944年,美军麦克阿瑟将军重新在菲律宾登录,向日军展开反攻,日军在败退的同时,也在暗地里安排杀害战俘的计划。而此时美军前进的道路上必须经过这个集中营——日本人肯定不会让战俘活着迎接解放的。一群新兵,被委派任务营救这些战俘,而这个任务是上级指挥官都没有把握的,加上对战局影响不大,所以就没有派精锐,我想历史也应该是这样的。但是,在周密的计划和菲律宾本地游击队的密切配合下,这群新兵顺利得完成了任务,甚至可以说是完胜——120多人袭击500人关押的集中营,并且附近不远处还驻扎有11000名日本兵,结果只是美军阵亡1人,菲律宾游击队死亡12人,战俘死亡1人(还是因为救回来以后病得太重死的)的代价,解救了511名战俘,并且还全歼了集中营守军!

其实看这部电影还有似曾相识的感觉,地下党、游击队、夜袭、炸桥、炸坦克、牛车(比我们的独轮车要高级些),如果把片中的美军换成八路军,把菲律宾游击队换成共产党的游击队,今年八一就肯定全国巡演了。

按照片尾的字幕,这次营救是美军史上最成功的营救,他成功的原因是多方面的,从美军这边看:

  1. 准确的情报,从得知集中营的消息,但航拍的地图,到对日军部署和动向的了解,没有情报是不可能成功的。
  2. 周密大胆的计划,好的计划是成功的一半,仔细看袭击前兵力部署那一段,很值得学习。
  3. 优秀的下级军官,虽然士兵们都是新兵,但是让那些优秀的军官指挥,一样发挥出色。据说德军战斗力较强的原因之一也是下级军官非常优秀。
  4. 密切的配合,包括与菲律宾游击队和后方的空军,其实老百姓也在配合,要不日本人也不会对美军小分队的行踪一无所知,伤员也不会那么快就转移完毕。
  5. 集中火力,看进攻那一段,我敢说连拿步枪的士兵都打了有近百发子弹了,密集的火力加上毫无准备的日军,使得美军短时间内消灭了大部分的日军。

而日军就要稍微差一些了,不过倒也没有像国民党军队那样窝囊:

  1. 大桥那里的冲锋,白白损失了好多人,并且使得后面没有再组织大规模的进攻。
  2. 至于日军战斗力为什么比较差,除了措手不及的因素以外,片中交代他们只是秘密警察部队,并不是正规军,所以战斗力自然差一些。而附近想过来增援的日军应该是正规军,但是交通和通信都断了,又是夜里,也是一筹莫展。
  3. 不过日军到也没有退缩,战斗到最后两个人的时候还在想办法射击——而此时别人上百人都正在撤退。幸好这两个人都不是迫击炮兵,不然120的迫击炮打到人群中一发,可就不是死几个人的事情了。
  4. 日军的坦克确实比较烂啊,连新兵都可以首发命中,并且命中后立刻殉暴,太逊了。
  5. 地堡里已经扔了颗手榴弹炸了一下了,机枪居然还能再响,战斗精神不可谓不顽强。

电影中还有两个人物让我有些费解,一个是集中营中后来病死的那位军官,看他除了是地下党送药的目的之外,在战俘营中好像没有发挥多大的作用呀。另外一个是戴三角洲帽的那个军官,虽然本次任务的精神核心,但是无论是从决策、方案、实施、配合哪个方面看,没有看到他发挥了关键作用,到后来居然和什么事情都一肩挑的指挥官一样,都是优质服务勋章,当官就是好啊。

Related posts

Categories: Movie Tags:

火星人玩转地球( Mars Attacks!)

May 21st, 2006 Fwolf No comments

虽然这是一部10年前拍摄的电影了,片中特技也能看出明显的痕迹,但是我还是非常喜欢看这部片子。片子颠覆了我们心目中的外星人形象,能有如此大胆想像力的剧本可不好找,如果10年后的今天再来重拍这部电影,应该和Hitchhiker’s guide to the galaxy/银河系漫游指南一样另类。

同是大胆的想象力也产生了某种巧合,Mars Attacks!/火星人玩转地球中美国总统很容易就被外星人给咔嚓了,无独有偶Hitchhiker’s guide to the galaxy/银河系漫游指南中的银河系总统居然是一个长着两个脑袋的无赖。能够把“总统”描写到这种地步的也就是这两部电影了,印象中美国总统在电影里也就死过这么一次。相比之下Independence Day/独立日中的美国总统就英雄得多了(这部片子没准儿应该进小学课本,算爱国主义教育的一部分XD)。Independence Day/独立日Mars Attacks!/火星人玩转地球都上映于1996年,这也算一种巧合吧。

科幻片中的外星人大多比地球人类强大,强大到用人类的武器几乎无法伤害到他们,但是电影中的人类是不会被毁灭的,命运和巧合在这个时候起到了关键性的作用。如果说Independence Day/独立日中用计算机病毒破坏外星人的网络(他们如果用的是IPV8呢,嘿嘿,穿帮了吧),从而使人类得以顺利消灭入侵者有些牵强的话,那么War of the Worlds/世界之战中外星人被病毒消灭就是天公作美了,而Mars Attacks!/火星人玩转地球中外星人被音乐作掉就更是天马行空的想像了。

不过话说回来,还是我们人类最“皮实”,无论是残酷的自然、恶劣的环境、无尽的贪念、信仰的丧失、人性的丑陋,都无法阻止人类社会的前进和种族的繁衍,和那些貌似强大而又十分脆弱的外星人相比,我们简直就是“异形”啊。

Related posts

Categories: Movie Tags:

老爷机就用Xfce吧

May 20th, 2006 Fwolf No comments

一般我们安装ubuntu,桌面默认的是gnome,还有一部分朋友用惯了kde,会换过去。但是如果电脑比较破,速度比较慢的话,gnome可能会比较慢,不过不要紧,我们可以换用更精简的Xfce桌面

apt-get install xfce4

安装非常简单,也不大,默认的安装只安装了一些最基本的东西,包括菜单、面板、桌面、窗口等的管理,默认的文件管理器是thunar,不过需要手工装上,不喜欢的话可以换rox-filer,这个更简单,和thunar相比只是不能同时列目录树和文件而已。原来gnome下安装过的软件也都自动识别并且放到菜单里面了。

刚装上的时候可能会不适应,因为不像gnome那么完整,只在左上角有一个按钮,按下去还没反应。没有关系,在桌面上点一下右键,菜单就出来了,settings下面找到settings manager,就可以进行设置了。刚才看到左上角的那个只是一个panel,在上面点击右键就可以修改或者增加新的panel了。

有人觉得xfce下中文比较大或者有问题,由于我的电脑已经在gnome下安装过中文了,所以中文都能够正常显示,但是字体不协调,scim输入法的字体尤其小得出奇。这个在“User Interface Preference”里面先把fong调整为10号字(这样英文字体大小就比较合适了),然后在scim的Panel->GTK里面设置使用的字体为12号大小就可以了。

另外xfce的窗口最大化之后,还是可以改变大小的,当然当在最大化状态下改变窗口大小时,最大化状态就取消了。但是我习惯了鼠标移动到屏幕最右边就能点到滚动条上的设置,现在鼠标在最右边点的是改变窗口大小,暂时没有完美的解决方法,不过可以按Shift+Alt+右方向键,把窗口调到超出屏幕右侧一点就可以了。

还有就是不知道xfce下如何截图,安装了一个xfce4-screenshooter-plugin包,却不知道如何使用,暂时只能使用菜单里gnome上的Take Screenshot了。

初步感觉Xfce还是比gnome要快一些的,但好像和gnome相比少了不少东西,比如电池状态、笔记本上的快捷键之类的,不过没关系,需要的时候可以再退出登录换回gnome,这就是linux的方便之处。

Related posts

Categories: Linux Tags:

一个bash script的简单例子(if case的使用)

May 18th, 2006 Fwolf No comments

在局域网环境中工作,经常要访问别人的电脑,而他们大多还在使用windows,所以要反复的mount、umount共享目录,烦死了,并且不umount还不行,别人一关机,这边再操作就要停顿半天没反应。所以编写了一个小小的shell script,简化这些工作。代码、注释和说明都在一起了,应该不用再多解释了吧。

#! /bin/bash

# 如果不输入参数,则提示命令的用法 # 注意判断条件的这个表达式是用英文方括号[]包含的, # 并且[后面和]前面必须各有一个空格,没有的话会报错 # 另外then必须另起一行,要不也报错 # 输出的字符串中包含|,所以必须引起来,不然就成了管道操作符了 # 如果实在不想用引号,可以在|前面加上\就可以了 if [ 0 = $# ] then echo "Usage: mmount destination [d|del|delete]" exit fi

# 看看当前用户是否root用户,不是的话就要使用sudo if [ 0 = $UID ] then SUDO="" else SUDO="sudo " fi

# 根据第一个参数判断要处理的是那个共享目录 # 为了方面调用,共享目录名称采用了“机器名-共享目录名”的简单方式 # 在这里识别出来之后再指定其详细的参数 case $1 in xjl-e) DEST=//xjl/e MOUNTPOINT=/media/share/xjl-e USERPWD=xjl% ;; cmp-c) DEST=//cmp/c$ MOUNTPOINT=/media/share/cmp-c USERPWD=cmp\\Admin%8008101818 ;; *) echo "Mount or umount: xjl-e/f/g/h, lh3000a-s, cmp-c, wf ?" exit ;; esac

# 根据第二个传入参数判断是否是需要umount的调用 # 多个判断条件用||表示OR关系,用&&表示AND关系 # OR和AND嵌套时,可以使用()来调整运算顺序 # ()后前不用加空格了,都快被[]的后前空格整疯了 if ([ "d"=$2 ] || [ "del"=$2 ] || [ "delete"=$2 ]) && [ ! -z $2 ] then $SUDO umount $MOUNTPOINT rm -r $MOUNTPOINT else mkdir $MOUNTPOINT $SUDO mount $DEST $MOUNTPOINT -o dmask=777,fmask=777,iocharset=utf8,codepage=cp936,username=$USERPWD fi

PS: vi中用:TOhtml命令生成的html颜色代码怎么就和看起来差别那么大呢,选了半天也不知道用什么颜色的背景最合适。darkolivegreen ? midnightblue? yellowgreen ?

另外推荐一个比较不错的Bash教程网站——Advanced Bash-Scripting Guide,比gnu的bash文档写得详细多了,并且都带有范例。

Related posts

Categories: Linux Tags:

[Ubuntu]明明白白安装中文字体

May 17th, 2006 Fwolf 14 comments

Ubuntu 6.06 dapper对中文的支持应该说是一向不错的,包括现在默认安装就包含了scim输入法。然而,一般安装的ubuntu虽然能够显示、输入中文了,但总觉得所显示的中文像歪瓜裂枣,很是别扭。这是很无奈的,也不是linux的错,这是因为现在几乎没有免费的中文字体库来给我们用,大家平时使用习惯了的winxp里面的宋体、还有方正排版系统里面的仿宋体、公文中的方正小标宋等等,这些字体都是商业公司开发出来用在自己的产品中的,是有版权的,所以linux不能拿过来就用。如果你还没有听说过字体有版权的话,上网搜索一下“胡万进”吧,这位老兄就是当年在微软从事字体制作的一位员工,他所制作的字体的版权就是归微软公司所有。我们国家虽然对IT产业非常关注,但是更关注windows,对开源社区和自由软件的支持几乎没有,直到今天也没有投资开发出一套免费的字体供大家使用。不过幸好有怀着共产主义信念的好同志,为我们提供了免费的替代方案,现在我们可以使用圆体美化,还有开源的文泉驿域名2)可以用。

本文则是参考如何使用xp带的字体来进行中文美化?一文,实践中文字体的安装,并对ubuntu的字体体系更加深入的了解一下,这样以后再安装任何字体就都不怕了。

一、准备字体文件

我一直认为,如果我拥有了一套windows xp的使用权(通过oem方式),那么我就同时拥有了对这份windows产品的只用于我个人的任意使用权,这里面包括了对其中的字体的使用权。所以,本文中将winxp的字体拷贝到linux下使用的做法,应该是没有侵权的。

windows的字体一般存放在c:\windows\fonts目录下,我拷贝到linux下的字体有:

simfang.ttf 仿宋体
simhei.ttf 黑体
simkai.ttf 楷体
simsun.ttf 宋体和新宋体,原文件名simsun.ttc
tahoma.ttf tahoma字体
tahomabd.ttf tahoma字体的粗体形式
verdana.ttf verdana字体
verdanab.ttf verdana字体的粗体形式
verdanai.ttf verdana字体的斜体形式
verdanaz.ttf verdana字体的粗体+斜体形式

拷贝过来的字体文件放在了/home/fwolf/tools/fonts目录下。

二、将字体加入到linux的可使用字体中

首先把字体文件链接到存放字体的目录中

$ cd /usr/share/fonts
$ ln -s /home/fwolf/tools/fonts xpfonts
$ cd xpfonts
$ mkfontscale
$ mkfontdir

这样作和把字体拷贝到 /usr/share/fonts 的一个目录下的效果是一样的。后面的两个 mkfont 命令是生成 xpfonts 目录下所包含的字体的索引信息。然后运行 fc-cache 命令更新字体缓存:

$ fc-cache

现在,应该说linux就可以使用这些新装上的中文字体了,看一下openoffic里的截图吧:

linux中OpenOffice下的几种winxp字体

其中仿宋体的字体名是FangSong_GB2312,黑体是SimHei,楷体是KaiTi_GB2312,宋体是SimSun,字体名暂时都不是中文的。

三、修改/etc/fonts/fonts.conf的字体渲染顺序

让我们一边修改,一边分析fonts.conf这个文件的内容吧,注意部分注释(<–和–>之间的内容)和无关紧要或者重复的内容我将跳过不再解释。

<?xml version="1.0"?> 声明这个文件是一个xml文档
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> xml文档的格式声明(dtd = document type define)
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig> xml文件需要的根节点
<!--
   DO NOT EDIT THIS FILE.
   IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
   LOCAL CHANGES BELONG IN 'local.conf'.

文档中提示不要手工修改fonts.conf,个人的设定可以写入local.conf文件,并且会自动被fonts.conf读入,不过我现在还不知道怎么创建这个文件,等知道了再公布出来吧,现在先拿fonts.conf开刀,反正预先已经作了备份。

   <dir>/usr/share/fonts</dir>
   <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/local/share/fonts</dir>
   <dir>~/.fonts</dir>

所有字体文件存放的位置,其中第一个就是我们刚才放字体文件的目录/usr/share/fonts。

<!--
  Accept deprecated 'mono' alias, replacing it with 'monospace'
-->
   <match target="pattern">
      <test qual="any" name="family">
         <string>mono</string>
      </test>
      <edit name="family" mode="assign">
         <string>monospace</string>
      </edit>
   </match>

将本文件中的别名mono替换成全称monospace,这是xml的一个自动替换声明,使用别名的目的应该是为了简化书写或者维持对旧版本的兼容。后面还有几个替换就不再一一介绍了。

<!--
  Serif faces
 -->    <alias>
      <family>Bitstream Vera Serif</family>
      <family>Vera Sans YuanTi</family>                        <!--  added by lifesinger-->
      <family>Times</family>
      <family>Times New Roman</family>

Serif字型将要使用的字体顺序。当要显示Serif字型的内容时,就从下面这个列表中选择字体,匹配顺序是自上而下。可以看到已经安装的圆体美化再这里作了修改。如果我们想把宋体作为首选,就在Bitstream Vera Serif字体前面比葫芦画瓢加上一行就可以了。

至于什么是Serif字型,以及Sans-serif字型,可以看一下细说字体 Sans Serif 与 Serifserif vs sans serif这两篇文章,说明的很详细。我觉得把他们叫做字型或者字族,相对于字体来说,更贴切一些。

下面的Sans-serif faces、Monospace faces段中处理方式相同。

<!--
  If the font still has no generic name, add sans-serif
 -->
   <match target="pattern">

又是三个替换,大概意思是如果上面的字体匹配还不成功,就尝试使用sans-serif、serif、monospace的默认字体来替换,最后如果还替换不成功,强制使用sans-serif字体。(不知道这么理解是否正确)

<!--
  Some Asian fonts misadvertise themselves as monospaced when
  in fact they are dual-spaced (half and full).  This makes
  FreeType very confused as it forces all widths to match.
  Undo this magic by disabling the width forcing code -->
   <match target="font">
      <test name="family"><string>GulimChe</string></test>
      <edit name="globaladvance"><bool>false</bool></edit>
   </match>

一些亚洲字体实际使用了等宽字体,但是却没有明确的声明,这段就是为了兼容这个进行的处理,保持不变即可。

<!--
   The Bitstream Vera fonts have GASP entries suggesting that hinting be
   disabled below 8 ppem, but FreeType ignores those, preferring to use
   the data found in the instructed hints.  The initial Vera release
   didn't include the right instructions in the 'prep' table. Fix this
   by disabling hinting manually at smaller sizes (< 8ppem)
 -->

修正Bitstream Vera字体在小于8点的时候的显示问题,保持不变即可。

<!--
  Load local system customization file
 
   <include ignore_missing="yes">local.conf</include>
-->

加载配置文件local.conf,下面的~/.fonts.conf也是一样。

<!--
  Provide required aliases for standard names
-->
        <alias>
                <family>serif</family>
                <prefer>
                        <family>Bitstream Vera Serif</family>

又是三个系列字型的字体别名,不知道这个和前面的类似设置是怎么个关系,大概前面设置的是备选字体,这里是推荐字体?不过照例把我们的SimSun加进去。

<!--
 Artificial oblique for fonts without an italic or oblique version
 -->

对没有斜体字的字体的处理方法,保持不变即可。

<!--
 Synthetic emboldening for fonts that do not have bold face available
 -->

没有黑体字的字体的处理方法,保持不变即可。

<!--
  These are the default Unicode chars that are expected to be blank
  in fonts.  All other blank chars are assumed to be broken and
  won't appear in the resulting charsets
 -->

Unicode编码中在所有字体中都应该显示为空的编码表,保持不变即可。

<!--   Rescan configuration every 30 seconds when FcFontSetList is called
 -->

每隔30秒钟就重新检查一下本设置文件(看设置改变了没有),保持不变即可。

至此,标准的配置文件就结束了,我们需要作的主要修改也都完成了。重启X应该就能看到宋体中文的界面了。不过在fonts.conf还可以作一些其他的字体处理设置,这个在圆体美化所带的那个fonts.conf中有例子,比如:

   <!-- Win XP 效果 -->
<match target="font">
   <test name="family"><string>Vera Sans YuanTi</string></test>
   <edit name="globaladvance"><bool>false</bool></edit>
</match>

这就是指明在对Vera Sans YuanTi字体的处理中,globaladvance参数设置为false,其他的设置也多是这种语法,具体的含义和效果我就不知道了:)。

四、中文字体显示优化

按照上面的方法配置好以后,宋体能够显示了,但是字体有些发虚,那么一种简单的方法就是在 系统->首选项->字体(system->preference->font) 中选择单色(Monochrome),但是这样所有的字体包括英文字体都会有一点点的小锯齿,那么替代的方法就是通过修改fonts.conf,去掉宋体的反锯齿,并且用黑体替代宋体的粗体。在fonts.conf中添加:

<!-- 用黑体替代宋体的粗体 -->
<match target="pattern">
    <test name="family"><string>SimSun</string></test>
    <test name="weight" compare="more_eq"><const>bold</const></test>
    <edit name="family" mode="assign"><string>SimHei</string></edit>
</match>
<!-- 关闭宋体的AA -->
<match target="font">
   <test qual="any" name="family"><string>SimSun</string></test>
   <edit name="antialias" mode="assign"><bool>false</bool></edit>
</match>
<!-- 解决不能识别中文字体名称的问题 -->
<match target="pattern">
    <test name="family"><string>宋体</string></test>
    <edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
    <test name="family"><string>新宋体</string></test>
    <edit name="family" mode="assign"><string>SimSun</string></edit>
</match>
<match target="pattern">
    <test name="family"><string>仿宋_GB2312</string></test>
    <edit name="family" mode="assign"><string>FangSong_GB2312</string></edit>
</match>
<match target="pattern">
    <test name="family"><string>楷体_GB2312</string></test>
    <edit name="family" mode="assign"><string>KaiTi_GB2312</string></edit>
</match>
<match target="pattern">
    <test name="family"><string>黑体</string></test>
    <edit name="family" mode="assign"><string>SimHei</string></edit>
</match>

为什么要用黑体替代宋体的粗体呢,因为宋体字体其实是不含粗体的,windows下也是,只是windows采用了更高级一些的方法来间接实现了宋体的粗体而已。

小结

以上就是简单的中文字体设置方法,和我对fonts.conf的简单理解,希望能对大家有用,也希望过路大侠指正错误和不足之处。另外还可以参考一下一个详细的汉化美化方案(freetype/fontconfig/xft),分析得比我深入多了。

参阅:

Related posts

Categories: Linux Tags: , , ,