打开魔盒——Firefox每夜版(Firefox Nightly Builds)介绍

2009年5月18日星期一

打开魔盒——Firefox每夜版(Firefox Nightly Builds)介绍

Tagged_by_kmc
Firefox, hourly, nightly, download, update, 每夜版, 小时版, 每小时版, 更新


为了减少不必要的阅读,请先判断自己是否适 合/有必要用Firefox Nightly Builds(以下简称FNB)
这类用户的特点包括但不限于:
* 就是喜欢测试最新Firefox,把Firefox浏览器不光当浏览器用
* 不折腾会死或者不折腾就难受:有耐心和足够的心理承受力(相信我,征服Firefox的过程绝对是一个有普遍意义的软件学习和个人提高的过程)
* 既然要折腾,显然得了解如何保护自己:具有一定的电脑知识,例如知道Firefox配置文件夹在哪里,知道Firefox多配置是怎么回事,知道备份
* 知道碰到问题可以通过搜索和交流来解决,知道如何在虚拟世界中交流
* 懂一点英语,会用英语搜索(会用英语提问则更好)

如果你确定要使用,那么下面的文章请 -全 -部-看-完-

什么是FNB(Firefox nightly builds,火狐每夜版)?
Firefox是一个开源的浏览器,有着强大的开发团队和社区支持。Firefox还是一个变化和发展着的浏览器——新功能的引入、旧功能的改进/废除、 性能的提升……这一切都需要一个强大的团体,来测试、反馈并参与浏览器的成长历程,有鉴于此,出现了FNB(后来还出现了Hourly Builds,简称FHB):每一天(几乎是每一天),Mozilla的编译机器都会把当前最新的Firefox代码生成各个平台下的FNB,放置在 FTP上供下载测试。事实上FNB有各种形式的衍生,本文在此不进入具体的细节,仅仅关注下面目录中的文件:

代码:
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/

根据我的经验,这个URL在很长一段时间会保持稳定不变,所以最新的FNB在这里可以提货。

以下以Windows用户为例,其他系统用户类似。

下载
在上面的目录中下载命名为firefox-%version%-en-US.win32.zip的文件,其中%version%是目前最新的开发版本号, 在本文(2009年5月18)写作时,%version%=3.6a1pre,其中
3.6等于目标版本号(根据经验,这个版本号也不一定是最终版本号,但是既然已经用FNB了,知道自己用的是最新的即可)
a1=alpha 1,第一个alpha版
pre估计指的是preliminary

安装
下载回来一个ZIP文件,不考虑术语的精确性,这个压缩包可称为一个绿色版的Firefox——免安装。你可以把它解压到合适的目录下,例如 d:\firefox (注意,压缩包内已经有一级子目录)。当然,不排除解压缩对你来说比较麻烦,那么也可以在上面的目录下载firefox-%version%-en- US.win32.installer.exe,双击安装。

配置后启动
下面是关键:Firefox配置文件。
OK,你准备要测试Firefox最新版,这意味着潜在的bug和崩溃已经不可避免。但显然,你不光是为了测试Firefox而已,因为你更希望这个蓝色 的地雷可以比较好地陪伴着你的浏览生活。要么你会希望FNB和你现在使用的稳定版(正式版)互不干扰,要么你会希望把主要的Firefox设置迁移到 FNB中,那么首先你应该知道如何操作Firefox配置文件。

配置文件(以下也简称profile)默认的位置(针对Windows XP操作系统):
代码:
C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\%8HEX%.default

其中%8HEX%是8位随机生成的十六进制数。
Application Data是一个隐藏目录,你可以在资源管理器里面设置允许查看隐藏系统文件,就可以看见了。如果你已经在用Firefox正式版,那么这个文件夹肯定是存 在的,我们把它称为正式版配置文件

但是做为测试人员,我的建议是新建一个独立的FNB配置文件。假设FNB装在d:\firefox,那么使用命令提示符(cmd回车),输入下面两条命令
代码:
cd d:\firefox
firefox -p

打开Firefox的配置文件管理器(Profile manager)

然后参照图片中建立你的配置文件夹,让它跟FNB程序文件在同一个目录下:




然后在第一张图片中,选中FNB(如果你想直接碰碰运气使用旧的配 置文件,则选中default,危险!解释在下面),勾上Don't ask at startup,再start Minefield。这样你就可以启动FNB了,如果一切正常你将看到:
新启动的Firefox,但是标题上写的是Minefield,图标是蓝色地雷,这使得它跟Firefox正式版很容易区分。
纯净的Firefox,没有安装扩展,也没有改动设置。
英文版。

也就是说,这个版本没有影响到你原来安装的Firefox。你可以测试这个版本,一切的改动都在d:\firefox目录下,不会影响其他位置的 Firefox。

现在问题来了,你对这个版本很满意,可惜它是裸体的,没有扩展功能,你想迁移正式版配置文件过 来。上面我说了,你可以在Choose user profile的窗口选Default启动,那么FNB就会使用你c:\documents and settings下面那个旧配置文件启动,这样做是非常危险的。第一,FNB可能无法适应从而无法正常工作;第二,由于FNB会改写正式版配置文件内的数据,那么原来的Firefox,例如Firefox 2.0,Firefox 3.0.10将也无法正常工作!——双输的结果,太惨了。

两个建议:
1. 尽量不要用旧的配置文件,因为首先2.0能用的扩展可能已经比较老了,应该更新,其次,版本跳跃很大,有很多设置也会不兼容。如果你的扩展不是太多的话, 还是一个个手动装上最保险,就像重装Windows后,很多软件你也不得不重装一样。如果扩展实在太多,建议用FEBE打包,此不赘述。
2. 如果非要用,就把正式版配置文件下面相应目录中的文件复制到 d:\Firefox\fnb_profile目录中去,再启动Firefox。

如果你只是零星地用一用FNB,平时还是用正式版居多。那么建议建立一个批处理文件来启动FNB,方法是在d:\firefox下面建立一个批处理文件 start_fnb.bat,内容为
代码:
start "" firefox -profile "fnb_profile"

其中fnb_profile就是你前面建立的子目录。这样你不用担心FNB不小心启动了你正式版的配置文件。

备份
当你对配置文件逐渐熟悉了之后,你会明白他跟Firefox主程序是两个不同的概念,这样你会知道如何备份它——最简单的办法就是把配置文件夹(例如这里 的fnb_profile)目录打包压缩。另外由于你的配置文件夹在安装目录(主程序)下面,又有一个批处理来启动,那么把d:\firefox打包就得 到了一个绿色版的FNB。

升级/更新
既然是FNB,那么每天都会有一个新版本,你可以通过Help菜单Check for updates来下载更新。如果你每天都更新的话,下载量比较小,目前大约是2MB,超过一天的话,就要全部重新下载,10MB左右。如果你网速不够,可 以每天用多线程下载软件下载latest-trunk下的同一个文件,自己解包覆盖更新到d:\firefox


相关链接:
(分享)Firefox每小时版下载/更新脚本(附注释) - 阅读主题 :: Mozilla Firefox中文社区

实践——LaTeX按需排版

2009年5月12日星期二

Tagged_by_kmc:
latex, word, pdf,
排版, 尺寸控制, 微调, word模板, geometry, fancyhdr, logo, 标志, 会议, 测量, 精确控制, dimension.

这是我博士课程中的第一篇投稿,总觉得国外LaTeX的使用频率应该是很高了吧,没想到依然是个冷冰冰的Word模板放在那里,如下 (Word转成的PDF,里面有我所有的测量值):
http://www.megaupload.com/?d=UV4Y30SE

用了这么久的LaTeX,我可不想第一次就倍受打击地重新拣起Word(因为一想到没有断字的Word排版效果,包括参差不齐的单词间距,我就毛骨悚然,真的!)正好,也想找机会试试看LaTeX到底有多少自由度,能不能按照别人的格式要求精确地调整出预期的结果。最终,我的投稿已经被采纳,没有编辑对版式提出意见,于是打算分享这些经验,因为没有学过写Class,写成模板也没有谁能用得上,不如讲讲用了哪些dirty tricks,仅仅是为了应急。希望能给碰到类似尴尬局面的TeXer们一点参考,也希望高手笑过之后指点一下,哪些方面有更好的方法。如果以后有时间,可能会用LaTeX写成PDF教程并放上图片,看看光用文字描述是不是能让大家看懂吧。

阅读本文需要的知识:LaTeX基础知识(能看懂lshort),页面尺寸方面的知识(边距,缩进,行距,页眉页脚等),了解常用宏包(titlesec, fancyhdr等),一点点字体载入方面的知识。

由于模板是法语写的,所以大致介绍一下模板的要求:

  • A4,左右页边距为2cm,上边距2.5cm,下边距2cm
  • 页眉页脚高为1.25cm,除了首页,由于要插入会议名称和Logo,首页页眉为2.5cm
  • 双栏排版,栏宽为8.12cm,两栏间距0.75cm
  • 字体方面全用Times。文章标题16pt粗,作者和单位10pt斜;section标题12pt粗,subsection标题10pt斜,正文10pt
  • 作者/单位的格式是上标引用型,下面立即写出所属单位
  • 正文段落缩进0.5cm,标题序号阿拉伯数字后带一个“.”section标题内容(除了数字)缩进0.5cm(相对于边距而不是相对于前面的那个“.”),subsection的序号缩进0.5cm(即subsection的序号跟section的内容对齐),内容缩进1.5cm
  • 图片和表格的caption在模板中没有具体文字描述,但是看效果是粗体,阿拉伯数字并且是换行后缩进(hang模式)
  • 首页页眉:会议名称,会议Logo
  • 最多15行的Abstract(法语中叫Résumé),斜体
  • 参考文献格式疑似IEEEtran,没有具体要求,我用了IEEEtran

其中一些要求很好实现,另一些很变态。

编译方式:PDFLaTeX

----------------页面尺寸----------------

我们先来说跟页面尺寸有关的。首先geometry宏包是不能用了(事实上我是多次想用它的,最终都失败了),只有自己手工调整。由于模板提供了WordPDF的效果,我正好可以用Acrobat的测量工具来量尺寸(当然会引入一些微小的误差),并且通过Try and error来调整,没有技术活,只是力气活。这一部分的内容如无特别说明,都在\begin{document}之后出现。

首先定下双栏的栏宽和栏距,实践发现最方便的办法是做一个小计算:

\setlength{\textwidth}{17.06cm}

\setlength{\columnsep}{0.75cm}

“(textwidth-columnsep)/2 = 8.155cm”,原本来说应该等于8.12cm,实际测量发现模板里面也是8.155cm(通过多次测量,发现不是自己的测量误差),不过0.035cm的差距基本不影响实际打印效果。

于是试着编译了一下发现生成的text block在页面上不是很居中,不知道原因。最终量出来这样的设置

\addtolength{\hoffset}{-0.58cm}


text block“挪动到合适的位置上。这样一弄,left/right margin自然 = 2cm(根据A4纸的总宽度,他们不是独立的变量)。

下面讲讲真正最变态的要求,也是这次排版中遇到的最大挑战(我曾经在论坛发帖《latex中如何判断现在是第几页?》和《页面尺寸精调的最后一点小问题》),最终的解决方式是一个很dirty的巧合。

这篇文章要求首页的页眉高跟之后的不同,由于首页要放会议题目和logo,首页页眉要2.5cm,后续的页面则只需要1.25cm。可是页脚的高度要不变!(IEEE的模板不是这样,所以没有模板可以参考)。于是简单地调整voffset不可行。我原来是想,默认尺寸是第一页的尺寸,到第二页再改,也就是说动态地调整textheight,可这样又会碰到一个很头痛的问题:LaTeX如何知道现在已经到了第二页?想知道的话除非读source2e,没时间啊!

换个角度想想,既然就只有第一页跟其它不一样,不如默认按234...页的尺寸设置,而在第一页单独改动。于是测量模板的第二页的页眉,并反复对比页脚到页面最下方的距离,得到:

\addtolength{\voffset}{-1.96cm}
\addtolength{\textheight}{3.90cm}

这样第二页和后续页的text block放置已经没有问题。剩下首页,由于首页我是用\maketitle来生成标题作者等等,我想到的是在\title{}命令里面做文章,事实上我让页眉的内容也到了\title{}命令里面:


\title{
\vspace{-0.74cm}\fontsize{16pt}{16pt}\selectfont
{
16\textsuperscript{èmes} Journées Nationales Microondes
\\
27-28-29 Mai 2009 Grenoble
}
\\
\vspace{1.35cm}
文章标题}

也就是说,我先纵向移动-0.74cm,写上会议标题16……会议(也就是山寨版的页眉),再移动1.35cm到真正标题位置写标题。这个方法不会改变页脚的高度,因为没有去碰\textheight

----------------字体相关----------------

文档全局设置为:


\documentclass[10pt, a4paper, twocolumn, fleqn]{article}


16pt这个尺寸在LaTeX默认的\small, \huge等等是调整不到的,两种方法,LaTeX标准字体选择方式

{\fontsize{16pt}{16pt}\selectfont 内容}

或者原始一点的

\newcommand{\ptmseize}[1]{\font\x=ptmb at 16pt \x #1}

因为ptmb就是Times bold,我这个命令连\textbf{}也包括了进去。



----------------
标题相关----------------


跟章节标题有关的自然都要请出titlesec宏包,在导言区写


\usepackage[bf, small]{titlesec}
\titleformat{\section}{\bf\large}{\thesection.\,}{0.24em}{}
\titlespacing{\section}{0cm}{*1.5}{*1.1}
\titleformat{\subsection}{\it}{\thesubsection.\enspace}{0.5em}{}
\titlespacing{\subsection}{0.5cm}{*4}{*1.5}



其中“\,”“0.24em”是反复测量出来的值,它们保证section标题内容(除了数字)缩进0.5cm\thesection后面的“.”就是标题序号和内容的分隔点,而那个\bf\large命令则保证在10pt的正文中出现12pt粗体的标题;由于section序号不要缩进,在\titlespacing里面写的是0cmsubsection的设置完全类似,除了序号缩进0.5cm。至于里面的*1.5*1.1,指的是标题前后的弹性空间,由于模板没有具体要求,我是按自己的美观标准和文章的篇幅限制来选择的,因为把他们设置小一点可以省下很可观的空间,前提是不要跟前后的正文粘得太紧。

那个Abstract,我看也没有什么特别要求,没必要弄一个环境


\noindent \textbf{\textit{Résumé}}
{\itshape }


----------------作者相关----------------

作者和单位,我用的是authblk(全称Author Block)宏包,具体可以看看这个宏包的文档,感觉是挺好用的。
导言区


\usepackage[noblocks]{authblk}



正文区


\author[1]{\normalsize author1}
\author[2]{\normalsize author2}
\affil[1]{\normalsize\itshape address1}
\affil[2]
{
\normalsize\itshape Boss' address
\authorcr
\href{mailto:kmc's Email address}{\normalsize \itshape kmc's Email address} : \normalsize \itshape correspondant principal
}



看得出来吗?我又把通信作者的Email地址到第二个单位(\affil[2])里面去了,注意在authblk宏包定义的换行符是\authorcr而不是\\

说起来,IEEE模板里面反而显得很dirty,用的是{\small $~^{\#1}$}这种方式。或许dirty和不dirty的区别仅仅是格式代码放在宏包里还是放在你眼前的差距?

关于{\itshape My text}还是\textit{My text},其实我主要是嫌后者要删除的时候很麻烦,既要删除命令又要删除括号,当然你可以说大括号不用删除,{My text}也不影响,但是无意义的大括号很影响代码的整洁,\itshape有一个作用域的限制,但是在\title{}, \author{}命令里面已经限制了作用域了,不用担心\itshape作用到外面去。

----------------其他设置----------------

caption宏包


\usepackage{caption}
\DeclareCaptionLabelSeparator{period-quad}{.\quad}
\captionsetup{format=hang, singlelinecheck=no, labelfont=bf, font={normalsize,bf}, figurename=Figure, tablename=Tableau, labelsep=period-quad}


声明一个你需要的分隔符,因为模板要求Figure 1后面有一个“.”,距离大约是一\quad这么远,于是我就弄了一个period-quad放到labelsep=后面。

fancyhdr
宏包
由于这种投稿的文章不要页码,我是这样设置的,在\title命令之前放这样的代码


\fancypagestyle{empty}{
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[C]{16\textsuperscript{èmes} Journées Nationales Microondes, 27-28-29 Mai 2009 - Grenoble}
\fancyfoot[L]{}
\fancyfoot[R]{}
}


这样就控制了第一页的pagestyle,下面,在你源代码靠近编译结果第一页结尾的内容附近放上


\pagestyle{empty}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyhead{}
\fancyfoot[C]{16\textsuperscript{èmes} Journées Nationales Microondes, 27-28-29 Mai 2009 - Grenoble}
\fancyfoot[L]{}
\fancyfoot[R]{}


用来控制第二页,这里并不一定需要精确知道源代码什么位置对应编译结果的第二页,说实在的我不知道为什么一定要这样,但是如果不这样的话第二页的页脚会往 上移动…………另外为了保证首页无页码,在\maketitle命令后面紧跟\thispagestyle{empty},这个已经被问过很多次了。

浮动体方面除了graphicxsubfigure(好像我没有用到)外,就是booktabsmultirowmakecell宏包用来画表,不过这跟本文没有太大关系。浮动体用的是传统设置


\setcounter{totalnumber}{4}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.65}
\renewcommand{\floatpagefraction}{0.60}
\setlength{\textfloatsep}{5pt plus 2pt minus 2pt}
\setlength{\intextsep}{12pt plus 2pt minus 2pt}
\setlength{\abovecaptionskip}{5pt}
\setlength{\belowcaptionskip}{0pt}


其中\textfloatsep\intextsep中的值是弹性长度,表示5pt ± 2pt,当然你也可以设置为 5pt + 10pt - 8pt,表示最多15pt,最少-3pt,用来节省页面篇幅的(因为开始初稿只让写两页,空间实在太少)。我原来一直没弄明白这个,现在趁机解释一下(没准还解释错了……)。


----------------
插入logo----------------


还有一个问题就是由于我没有在首页使用页眉,我目前只进去了会议名称,Logo怎么办?网上有说用pgf来放(pgfdeclareimagepgfuseimage),我没有成功,郁闷。不过搜索到一个还算好用的eso-pic宏包,导言区


\usepackage{eso-pic}
\newcommand\BackgroundPic{
\put(16.57, 23.19){
\parbox[t]{\textwidth}{
\includegraphics[scale=1,keepaspectratio]{logo_jnm.png}%
}
}
}



正文紧接\begin{document}后面写


\AddToShipoutPicture*{\setlength{\unitlength}{1cm}\BackgroundPic}


具体来说就是先声明一个\BackgroundPic命令,这个命令在16.57 23.19的位置放一个宽为\textwidthparbox,里面放上你要的图片Logo。这个Logo我是从Doc模板里面截出来的,按Word100%显示比较缩放成一丝不差,所以scale=1并且keepaspectratio。注意那个\unitlength只有在正文区可以声明,所以导言区的16.5723.19没写单位。



----------------
平衡双栏----------------


末页的双栏平衡,有很多说法,我就只是用了flushend宏包而已,没有遇到网上传说的问题,可能是我末页的浮动体比较少的缘故。


差不多就这些了,在尝试排版的过程中,可以打印测试页,跟Word的打印结果发在灯光下透视着比较。打印PDF的时候一定要注意,Acrobat打印A4纸的时候,根据打印机的不同,如果你选择了适合打印机边距,可能会缩放97%,实际效果有出入但事实上你的页面尺寸是正确的!所以页面缩放一定要选。到时候编译说你尺寸不合适,非要你用Word的时候,你可以骄傲地把两张纸放在一起给他看两个Logo,两条页脚线是如何完美重合到一起的。







雪夜纪事

2009年1月6日星期二

  这是多么突如其来的一场大雪。中午吃饭的时候还只是在路边的树上欣赏了冰花,六个小时的闭门学习后,走出实验室看到的是白茫茫一片。清理好同学的车,一起在路上慢悠悠磨回了家。家里有老婆的爱心晚餐,吃完后决定让电脑检查磁盘,我们出去看看雪景。
  路上有点滑,但丝毫没有阻止法国人玩雪的兴致,不时有调皮的孩子们向我们掷雪球,我们也不甘示弱地回击。一路走到小公园,一位父亲正拉着孩子玩雪橇,母亲用DV拍摄着儿子的童年,多么和谐的场面。
  正准备往市中心广场走时,我看见一条小巷中有人在地上爬着。“是不是滑倒站不起来了?”我们赶紧走了过去,这时另外两个法国人也急忙赶了过来。
  这位似乎上了点年纪,我和老婆努力地在扶着他,可他却爬不起来,手脚都不是很给劲儿。这时他骂了几句,我想显然不是冲着我们,而是怪自己不争气吧。旁边的法国女人似乎有点不满,并且小声地指出“这位先生可能有点……”,对,她没有说出“醉了”,但我们已经能闻得到。“要打电话叫你的家人吗?”“哎,不用了谢谢。”可怜的老人,大冷天的一人出来喝闷酒也没有人陪。
  好不容易他算是站起来了,旁边的法国人如释重负地告别离开。可是我觉得他这个样子要走回家真的很难,于是问了他家住哪,他手一指:“下面不远。”我和老婆劝他离开机动车道走上人行道,由于边上是餐馆,人行道上的雪已经化了,于是他很自信地走了几步,但很快我就提醒说前面依然是困难重重。正准备带他横穿马路的时候,一个青年摩托车手叫着他的名字停了下来,原来有人认识他,这下好办了。“怎么了?还好吗?”大致寒暄了几句后,我问他能不能帮忙。“啊,不行啊我没时间,再说我带他太危险,这车太滑。”按说别人说的有道理,这么冷的天,这位或许还饿着肚子,能把自己跟宝贝摩托车带回去就不错了,家人可能还等着吧;而我们是吃饱没事出来玩的,当然应该近一点人情。
  路不是很好走,这位先生的重心一直往后倒,不过好在我们一左一右,三个人前进,这样滑倒的概率应该小于三分之一,其实我也不清楚该怎么算,但总之几百米的路他只滑倒了一次。这路上他一直在谢我们,好像渐渐酒醒了一些。走过教堂时又有人叫他名字,呵,又是两个穿戴整齐的年轻人,看来对我们来说的陌生人其实是很多人认识的。
  “没事吧你?哎,我的狗怎么样了?”
  “哦,你的狗我……”(法国不好,没听懂)
  “好,那就好。那谢谢你们了哦。”
  “不客气!”我显得非常礼貌。
  我问老人:“看来很多人认识你啊?”“是的,我们都是XX餐馆上班的。”原来是同事,那问问工作上的事也正常。继续前进,到了很危险的路段:我们住的这条街坡度相当大,人行道也很窄,老人不慎滑倒了一次,躺在起来很久才起来。这时我让他站在原地,我一点点地向前探路,确定哪一部分不太滑,终于走到了大坡的终点,那里有几辆车因为打滑零乱地抛在一堆,一位女司机从打着故障灯的车中伸出头看着我们,不知道是看不清我们是谁,还是看不清夜的黑。
  这时老人感觉到家在临近,人也清醒了更多,他突然很认真、很大声地问我们:“Mais pourquoi vous êtes gentil comme ça?(你们为什么要这么善良?)”一下把我问懵了:难道他还生气了?我知道法国老人经常是不服老,在公车上让座时要很小心不要让人误以为是冒犯,但就目前的形势来看,他要从摔倒的地方用这个状态走回家是绝对不可能的。另一种可能的结果是有人发现他无法行动,然后打电话给急救来处理,那么他就无法走回仅隔几百米的家中而是在医院度过今晚。
  不知道该怎么回答这意外的问题,我只有解释说:“如果我摔倒了,我也希望会有人能帮我……”“但,但是类似的情况我也碰到过啊,谁也不可能从那么远一直把我送回家,你们为什么要这么好呢?”看来,一般的解释已经无法让他理解我想表达的意思,就好像他们不明白,他们把无法继续参加比赛的名贵赛马杀死以免浪费饲料和管理费和我们吃狗肉一样只不过是一种习惯。有鉴于此,最简单的答案或许最好——
  “Bon, on est Chinois.”(好吧,因为我们是中国人。)
  “Ah, c'est pas grave....“(啊,没关系……)
  而这果然也是一句我无法理解的回应。
  
  到家了,他热情地拥抱了我们,伴着连声的道谢,我们挥手离开了。继续看着雪,看着有手有脚的人们尽情地享受,看了很多,也想了很多。这个城市的美丽也有我们的功劳——我们从中抹去了不和谐的画面,还给它一片宁静与洁白。回到家,继续解决我的电脑问题,终于明白win32k.sys已经被破坏,找一个MD5值正确的文件替换后,再也没有见到蓝屏。这也是我出门的一个原因,因为我要确定硬盘是否有坏道,而这也是这篇冰冷的、没有一丝碳基温暖的日记出现在我技术blog的原因吧。
  一夜大雪。
  翌日,依然有很多车在我们家这条街打滑,我们也被轮胎声吵醒。探出头去,孩子们正在玩雪,依然没有见到有人铲雪,或许铲雪不是一种习惯吧。对了,如果法国的新闻要报导我们群众和解放军一道除雪,那一定会是这样——
  “由于城市供暖系统的落后,中国大部分地区的人民在下雪的季节都会选择出门铲雪以暖身,此举碰巧方便了出行的人群……”
  他们军人们呢?或许除了在一战,二战胜利日出来排几个方阵,他们更多的时间就在城市的不远处保卫着他们随时可以缴械投降的尊严吧。

This is the true thing - Picasa 3 Beta

2008年9月5日星期五

没错,全Internet的目光在这几天都投向了高潮浏览器,IT情报站和软件论坛上出现了无数关于高潮的帖子,各种声音都有。赢政天下是最让我感到惊讶的,在一个已经持续了3天的投票帖《大家会选择哪个(公司)浏览器》中,高潮已经是选择最多的(53票占23.7%),对应Firefox 40票 VS 傲游 38票。在专业的软件论坛中尚且是如此,像新浪这样平民化的网站调查中,这个比例已经是到了96%以上!

再多说一点关于高潮的事情就进入正题:本以为高潮的速度优势非常明显,但事实上Firefox 3.1的JIT虚拟机已经日益完善,在专项测试中虽然比不上高潮,但日常浏览方面,只比高潮慢几毫秒,像我玩格斗的都感觉不出来差别。我之所以还没有卸载高潮的原因是有什么要测试的可以去比较一下,其它时间中我再也没有启动过它。

不明白Google为什么会把Picasa 3和Google Chrome一并发布,让这个优秀的图片管理器得不到应有的关注。在Google上搜索一把,中文网站中关于Picasa的介绍屈指可数。事实上,我也是在Official Google Blog的RSS中“不慎”瞄到一眼Picasa的介绍,仔细一看,Picasa Web Albums和Picasa 3 同时被更新了。

Picasa Web Albums的界面清新了很多,代码效率也有显著提高。到目前为止,Picasa Web Albums的强档功能——人脸识别,我还没有试用,怪就怪中文的Picasa Web Albums界面上没有推荐使用这个功能,刚刚切换到英文去,就看见了。人脸识别指的是把照片中的人脸选定,输入关键字(一般是名字)后,相同人物的图片都会被识别出来,倒也不是什么前沿的技术,只不过国家安全部门的技术终于民用化了。有这个功能后,你可以快速地找到某个人的所有照片,并为他/她制作一个精美的相册。同样的功能也出现在Picasa 3里面。

等等!好像我启用人脸识别后,没有等我去干预,Picasa Web Albums已经自己开始识别所有的照片了,真的不错,待会看看效果,关键是识别的能力。

题外话:很多人认为Picasa Web Albums是可以外连图片的,很遗憾我测试的结果是不能,在这一点上还是不如Flickr。

此外,Picasa Web Albums改进了图片社区,这样搜索图片方面也逐步得到了增强,相信能挖来更多Flickr用户。

Picasa 3软件版的改进则更大。我机器上一直装着Picasa 2.7,但对我而言这是一个Nice to have的软件,主要的目的无非是快速地管理、注释、上传和分享相册。Picasa 3中最大的改变就是引入了关联相片文件从而双击可以预览,或许有人说,这没什么啊,ACDSee,XnView,IrfanView你随便装一个不就得了?这些软件我都知道,但在装上Picasa 3之前,我一直坚持的是Windows图片和传真查看器,因为对我而言小巧轻便。Picasa 3 的预览功能显然比Windows图片和传真查看器更占资源,但比起前面几款图片查看器,Picasa 3的特点就是——低调。双击图片并不会启动整个Picasa,而是打开专门的预览工具,并适当地把背后的内容半透明,相当优雅;PNG和Gif已经被支持(不过GIF依然不动);通过设置,可以用滚轮来查看同目录图片,这此过程中Picasa平滑的缩放效果也是无处不在;查看完毕后,Esc即可关闭,这是我一直希望Windows图片和传真查看器拥有的一个功能,它Failed,Picasa Wins。


Picasa 3加入了更多的相片处理功能。其中文字注释功能是比较吸引人的,只是目前还不清楚能不能把文字真正地写入到图片上去,因为这个功能并没有真正修改图片本身,用Picasa之外的软件看不到文字注释。

红眼的定位完全是全自动,根本不用手动选定,手气不错功能的手气也越来越好了。

图片堆叠这项招牌菜也有了大幅度的改进,可以自由调整图片的位置,角度和背景色等等参数,除了传统的随意“摊放”,也增加了更严谨的排列效果。

上传网络相册?如果有一个相簿经常要更新,现在可以把“自动同步”的功能打开,只要往里增加图片,全部自动同步上网,别小瞧了这个功能,这不仅仅是为懒人准备,更是健忘人士的life saver。至于制作幻灯片,目前还没用得上,但Google已经把上传到Youtube的功能放到了Picasa里面,想必更多人会选择Picasa。

综上,Picasa 3对我来说已经是一个Must have的产品了,高潮如果Fails,Picasa WILL win。

Google Chrome印象

2008年9月2日星期二

Google Chrome简称GC,于是我干脆称之为“高潮”。

今天让我赶上了,成为最早使用Google Chrome的人之一,但完全没法达到高潮……我一下就想到Google Talk的可气,什么是Google Talk?方便,但仅仅是方便而已,可用性太差,聊天体验没有。Google Chrome呢?快(4倍于Firefox JIT虚拟机的性能),但仅仅是快而已,可用性太差,我理解这是一个Beta版,但我想Beta版就只是这个模样,在正式版中应该不会出现太多功能上的增强吧。

不能选择安装路径,不但如此,装到这个地方去了:
"C:\Documents and Settings\new\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"

线程,原来就是这样的吗?如果这么多个进程中某一个崩溃了,还会影响到其他的进程,那整个Windows是否都需要重新设计?



谁是傻瓜?

这种句子是Google的风格,还是翻译的失败?

越看,火越大,但是,我知道Google的论据很可能就是对的:

To most people, it isn't the browser that matters. It's only a tool to run the important stuff - the pages, sites and applications that make up the web.
对大部分人来说,浏览器只不过是实现网页功能的一个工具而已,或许只有我这种偏执狂才会装几十个扩展去津津乐道——这叫“用浏览器”;相反,更多的人只不过是“用浏览器上网”——打开的网页才是他们关心的。Google不是要争作最优秀的浏览器,而只是要做最普及的浏览器。事实上就是如此,Google已经在自己的主页上放上了Google Chrome的下载链接,这意味着将吸引数以亿计的眼球,这种号召力是恐怖的,难以预期的。

但是,Google会赢得市场,赢不了偏执狂。

Google Chrome,你能胜过Firefox?



Google隐藏得很深,从这条消息出现到下载可能只有几天的时间。或许大家最关心的就是Google一直扶持着的Firefox会如何,Mozilla和Google会成为什么样的一种关系。Google不缺失败的产品,比如Orkut,比如Google Talk,比如Google Desktop,我在这里预言,Chrome也会是同样的命运,或许,因为Google一贯的简约风格,Chrome没准会吃掉Opera的份额。要想赢过Firefox还是太难,不过我想这也不是Google的本意,毕竟,扶持Firefox没有推出自己的浏览器这么名正言顺,有了Chrome,Google终于可以名正言顺地抢占这重要江山。

看看预言会不会成功,拭目以待吧。

被遗忘的宝藏——LaTeX发行版自带的字体&自己的一些字体心得

2008年8月5日星期二

原文发表于CTeX中文论坛(bbs.ctex.org)




可能有不少人像我一样在用LaTeX不久就开始跟字体较劲。我走的是这样一个过程:
- 最初用惯了Word,从而无法理解为什么LaTeX调用字体那么难;
- 为了在LaTeX中调用字体,想用现有的工具一蹴而就(像TTFshape,MTFI,xGBKfonts),往往不能轻易成功,沮丧;
- 之后重新静下心来逐渐了解了什么是字体,LaTeX中字体成功调用的方式,才注意到Mapping,TFM,vf等文件的相互关系,理顺了这一切后,把前面几个软件装不成功的字体装好(我印象中装上过Verdana,GE Quartz等几个);
- 后来发现也有些宏包有现成的字体可用,那个时候主要就是关心TrueType字体,所以见到了winfonts宏包(这个宏包不在MiKTeX的宏包列表中),开始用上一些系统中有的字体;
- 又发现OpenType字体更棒,再去看的时候才知道解包OpenType不但麻烦,还会失去glyphs;
- 在一个相当漫长的时间内没有动过LaTeX,再碰它时,又是从一篇Philipp Lehman的《The font installation guide》开始,这篇文章100多页从头到尾看完,已经比较清楚如何用fontinst来安装手头拥有的Type1字体。也正是从这篇文章开始喜欢上了 Minion字体并且成功安装。由于安装过程相当繁琐,我还写了一些安装Type1字体的批处理,有时间的话会整理出来(因为通用性太差);
- 再次碰字体就是在CTAN上看到MinionPro宏包,这时我已经开始搜集字体,所以MinionPro宏包要求的所有Optical Size我都有。MinionPro包特别大,装上它后刷新文件名数据库都慢几十秒,这也说明了OpenType字体的复杂性。我想要不是Adobe把这个经典字体免费提供,应该不会有谁有心去为它生成那么多的TFM文件(1511个之多)。Minion Pro字体对我而言真的是压倒性的,我估计学校允许的话我的论文都会申请用这个字体排版。
- 后来XeTeX被port到Windows,我这才终于把MiKTeX升级到2.7beta,并且花了大量时间研究XeTeX。XeTeX似乎就是为字体而生的,但同样需要有字体的相关知识,这些知识并不同于前面Type1字体,而更多是字体的OpenType features,这些features,Type1字体要么是根本没有(calt, salt),有也不容易打开(smcp, onum)。


但XeTeX同样有这样那样的问题,而且如果直接访问OpenType字体,编译速度就更不如PDFLaTeX访问Type1字体那么快,在长文章中表现得非常明显。所以才有了今天这个帖子,因为在这几天求助区的讨论过程中,自己又回去看了看。加上之前也注意到,其实打开$texmf/fonts目录就能发现LaTeX发行版中早就自带了不少字体,这些字体虽然是免费,功能上确不输专业字体。更重要的是,这些字体很多都是精心设计过的字体包,用来同时载入正文和数学环境的字体,保持文档统一的风格(在严谨的学术文章中,也确实不该想在哪改字体就在哪改)。

原来自己有个文本文件,就是记录机器上可以为我所用的现成字体包(主要来自于$texmf\doc\latex\psnfss\psnfss2e.pdf文档的介绍),但最近去到tug看过,早就有人写了完整的LaTeX字体巡礼:
http://www.tug.dk/FontCatalogue/
这个网站罗列了156个LaTeX中可以免费使用的字体,并且给出了例子和调用的源代码,需要注意的是这些字体并非默认安装在机器上,但至少都能从 CTAN得到——不光是宏包,还有字体文件(因为像winfonts,MinionPro这些宏包需要用户自己拥有相应的字体,CTAN上并没有)。不过拾人牙慧的工作还是要作,那就是推荐一下几个字体/字体包:

1. Palatino
Will Robertson的文档总是用Palatino,这字体的名气也不小。胖胖的很活泼,笔锋也优雅,有羽毛笔的进化痕迹。LaTeX中最省事的是用\usepackage{mathpazo}来统一修改正文和数学字体,这个宏包还有[sc, osf]参数,分别对应小大写字母和不齐线数字。此外还有一个palatinox宏包可以直接调用Windows系统中的Palatino Linotype(这是微软认证发布赫尔曼·察普夫的原作),相关网址是:http://www.ctan.org/tex-archive/fonts/truetypemetrics/palatinox/,需要手动安装。在这个URL的上一层还能看到另一个经典字体frutiger,只是我手头没有Linotype Frutiger。

2. Garamond
1530年诞生的经典字体,LaTeX中通过mathdesign可以使用:\usepackage[garamond]{mathdesign}来使用。Garamond字体十分大气,打印在纸张上也特别好看,法国很多口袋图书用的是Garamond。

3. Times
除了\usepackage{times}外,\usepackage{mathptmx}可以把数学字体也改成类似Times的字体。这个字体真的不需要再多说什么了,总之我觉得看久了眼睛会累。

4. Utopia
Utopia有点像Times,但更宽敞一些。\usepackage{fourier}统一修改正文和数学字体为Utopia,\usepackage[adobe-utopia]{mathdesign}则是mathdesign的调用方法,差别不太明显。

5. Avant Garde/Courier/Bookman/New Century Schoolbook
不是我懒,这几个字体在PSNFSS中是可以搭配着用的:
\usepackage{avant}只载入Avant Garde
\usepackage{bookman}则同时载入Bookman(衬线),Avant Garde(无衬线)和Courier(等宽)字体
\usepackage{newcent}同时载入New Century Schoolbook(衬线),Avant Garde(无衬线)和Courier(等宽)字体

6. Charter
十分饱满的衬线字体,适合屏幕阅读。\usepackage{charter}

7. Helvetica/Optima
这两个字体放一块是因为我觉得它们是无衬线字体,比较适合用来作幻灯片。Helvetica可以\usepackage{helvet},Optima没有写成宏包的形式,就可以用\renewcommand{\sfdefault}{uop}然后\renewcommand* \familydefault{\sfdefault}来调用。在幻灯片这样的尺寸上,Optima变化的线宽才显现出优美来。

8. 其他数学宏包
建议看看ftp://tug.ctan.org/pub/tex-archi ... t_Survey/survey.pdf 这篇文章,介绍得相当详细,而且有效果图展示。

9. Minion Pro
http://tug.ctan.org/tex-archive/fonts/minionpro/ 有详细的安装说明,只要不出错是肯定能安上的,装了Acrobat Reader 7.0以上的用户都能在Acrobat安装目录下找到MinionPro-Bold.otf, MinionPro-BoldIT.otf, MinionPro-It.otf, MinionPro-Regular.otf这四个文件,按照安装说明拆解它们四个已经能满足日常文档的需要。此外,MnSymbol宏包(MiKTeX 可以自动安装)是配合Minion Pro的数学宏包,最好装上,不过\usepackage{MinionPro}就够了,会自动载入MnSymbol宏包。

其实用来用去才发现,LaTeX自带的这些字体才是真正经过时间和实践检验的经典字体,是TUG智慧的结晶。而且,这150多种字体也涵盖了绝大部分(LaTeX能触及到的)字体使用领域。这是不应该被遗忘的宝藏。

懒人专用--用好SciTE的缩写功能



原文发表于CTeX中文论坛(bbs.ctex.org)


版面上用SciTE的人应该不少吧,这个编辑器一个相当强大的功能是他的缩写(Abbreviation)展开功能。简单说,就是把常用的代码段、单词甚 至句子和环境都定义成几个字母的缩写,打入这几个字母后ctrl+B就自动展开。开始的时候也觉得是挺平常的功能,但后来才知道简直就是Life saver

1. 使用abbrev.properties文件
  首先我想说当时为了用成这个功能就花了不少周折。我在SciTE的菜单中选择open abbreviations file,里面是空的,写了几个保存。发现没有写到SciTE目录下的abbrev.properties文件中去,满电脑找才知道写到 documents and settings里面去了。这个问题很多人碰到,作者在邮件列表中给出一个命令行的解决方法,也可以写成批处理。

set SCITE_HOME=D:\Program Files\Scintilla Text Editor\ start Scite.exe %1


存成start_SciTE.bat即可。用Total Commander的朋友可以把这个图标放在工具栏上,然后把文件往上拖就能用SciTE打开。SciTE关联.tex文件后,如果用双击启动tex 件,则要在双击tex前保证SciTE是用批处理开着的,否则SciTE还是会用doc&settings目录下的设置,包括还原上次打开的文件 session restore)。我干脆就把这个批处理加入到启动菜单,开机就开着SciTE

  然后,用SciTE打开abbrev.properties,输入你想要的缩写,规则很简单: abbreviation=expansion,例如

ltx=LaTeX


2. 定义缩写名
  关于缩写名(abbreviation) 喜欢在等号边上加空格的朋友注意了,等号的左边最好不要有空格,否则要输入ltx加上相应的空格才能展开。等号的右边也是一样,有空格就会展开出空格。缩 写名中不能用#开始,否则注释掉了,但后面可以;不能用空格和tab开始,缩写名不能有=号,因为只接受第一个=号,后面都会认为是展开式中的=号。如果 缩写名重名,后面出现的优先。

3. 定义展开式
  关于展开式(expansion):展开式的书写方式支持标准的转义符--反斜杠'\',比如

up=\\usepackage{}


即:两个连续的反杠输入一个反杠。展开式的书写方式支持一个光标定位符--竖线'|',这样展开后光标会留在这个位置,比如

up=\\usepackage{|}


这样你可以很方便地马上输入宏包名称。要输入一个真正的竖线,连续输入两个竖线'||'即可,例如c语言中的或逻辑

or=||||


展开式不允许回车换行,但转义符中的\n, \t都是有效的,所以换行和制表位都能轻松输入。例如c语言的if语句:

i=if (|) {\n\t\n}


表示展开后光标在小括号里,下面自动把大括号排版并且加入了一个tab。这在写多重循环的时候非常有用,你会发现只要用缩写功能,下面的右大括号都会自动地找到缩进位置。


这几个功能结合着用,可以写出相当复杂的环境,例如我的subfigure环境:

sbf=\\begin{figure}[!htb]\n\t\\centering\n\t\\subfigure[|]{\t % Caption of subfigure in []\n\t\\label{}\t % Label of subfigure in {}\n\t\\includegraphics[width=0.45\\textwidth ]{}}\n\t\\subfigure[]{\n\t\\label{}\n\t\\includegraphics[width=0.45\\textwidth ]{}}\n\t\\caption{}\t % Caption of figure\n\t\\label{}\t % Label of figure\n\\end{figure}


展开后的效果是:

\begin{figure}[!htb]
\centering
\subfigure[]{ % Caption of subfigure in []
\label{} % Label of subfigure in {}
\includegraphics[width=0.45\textwidth ]{}}
\subfigure[]{
\label{}
\includegraphics[width=0.45\textwidth ]{}}
\caption{} % Caption of figure
\label{} % Label of figure
\end{figure}


不但自动插入代码,还把注释原汁原味地加上,因为我老是要去查subfigure里面的中括号写什么,大括号写什么。

  只要花时间,甚至可以把你常用的导言区全部定义成一个展开式,连文档模板都可以写出来,省得学写cls文件。

4. 多重展开
  还有更有趣的,缩写功能支持多重展开!比 如,LaTeX的手动输入要按三次shift,十分麻烦,定义一个ltx=LaTeX就省事了,而LaTeX logo的代码是\LaTeX,并且为了保证不吞掉后面的空格,最保险的写法是\LaTeX{},真不是一般的麻烦,这时可以再定义一条LaTeX= \\LaTeX{},那么,在平时需要LaTeX这五个字母的时候,ltx后按一次ctrl+B,在需要输入logo的时候,ltx按两次ctrl+B OK了!像有一些关键字一般要切换字体来输入,也可以这样:

mt=MATLAB
MATLAB=\\textsf{MATLAB}

再举个例子,section, subsection, subsubsection这三兄弟可以用多重展开这样写

sec=\\section{|}
section{=subsection{
subsection{=subsubsection{

然后输入sec,按一下ctrl+B出来section,两下出subsection,三下出subsubsection,挺俏皮的……
5. 追加展开
  下面的追加展开功能也让人倾倒。比方说经常要给一 段文字/代码什么的两边加括号,SciTE的括号补齐功能本来是好功能,这时反而成了累赘:在左边补开括号后要按del键删掉自动补上的那个闭括号,然后 光标移到最后去加闭括号。SciTE支持选定这部分文字后按ctrl+shift+R打开缩写输入框,例如我的一对中括号是这样的:

ac={|}


那么,我选定文字后ctrl+shift+R再输入ac回车,括号就加上了。也就是说,选定的文字会替换竖线.
6. 合理定义缩写名
  根据熵编码原理(),建议最常用的编最短的码,所以我figure环境就一个f:

f=\\begin{figure}[!htb]\n\t\\centering\n\t\\includegraphics[width=\\textwidth ]{|}\\\\\t % e.g.,[scale=0.75], [width=0.75\\textwidth ]\n\t\\caption{}\n\t\\label{}\n\\end{figure}


因为只要你不按 ctrl+B就不会展开,就算不小心按出来了,ctrl+z马上会把展开式还原成缩写名。而且我还发现,在出现一个缩写名包括在另一个缩写名中的情况时,SciTE用的是贪婪匹配(SciTE说明文档中的说法不对)。SciTE帮助文档说,如果你定义ringgathering两个缩写名,那么在输 gathering后按ctrl+B,只会按ring来展开,事实上是按gatherring来展开的,也就是说,在按下ctrl+B的时 候,SciTE从光标处往前查找,一直匹配到abbrev文件中最长的那个缩写名并展开,并且这与缩写名的顺序无关,这个设置是相当好的(估计是后来改 了,但帮助文档没改)。不过,也可以养成让缩写名完全不互相包含的习惯,例如,section, subsection, subsubsection,我原来是定义成sec, ssec, sssec,这样一个包含一个如果你不放心的话(其实没问题),不如就改成s0, s1, s2(数字表示有几个sub)。


7. 根据文件类型定义单独的缩写文件
  当你开始滥用缩写后,你会发现冲突得厉害,但又不想把缩写名复杂成诸如for@c, for@matlab这样怎么办?SciTE支持每个文件类型单独一个缩写文件。例如,在matlab.properties最后加上
abbreviations.$(file.patterns.matlab)=$(SciteUserHome)/abbrev_matlab.properties
再新建一个abbrev_matlab.properties文件放在根目录下,就可以在打开matlab文件后,用菜单'options - open abbreviations file'来打开独立的缩写文件进行编辑。保存后不用重启SciTE立即生效。那么,在abbrev_matlab.properties里面写 for=for i=|\n\t\nend,在abbrev_cpp.properties里面写for=for(i=0;i<|;i++){\n},这样你只要记 一个forok了。

最后,警告:很容易中毒,现在我在这里回帖的时候经常想着缩写&展开....

TM 2008让我用回QQ



我对QQ的成见是非常大的,在旧的日志中曾经用大量篇幅阐述过,在此不赘述。为了这种成见我甚至放弃了大批的QQ上的同学、朋友。

在QQ之外,腾讯还模仿MSN/WLM开发了一个Tencent Messenger。TM出道已经很久,在国内也赢得过一些“白领”们的青睐。前不久,在学校的电脑上无聊,抱着“试试看”的心态装了TM 2008 Preview 3英文版。

受Vista影响而重新设计的TM让人眼前一亮:玻璃效果的面板、位置清晰的按钮、混然一体的框架以及一扫而光的广告,都让我觉得这是一个“可以用了”的聊天工具。与Windows Live Messenger相同的地方在于,TM的用户群明显也定位在非娱乐环境:QQ秀和Q空间完全不可见,没有闪屏功能等等,这一切正好满足我的需要。

有鉴于此,最近觉得自己能摆脱对QQ的厌恶情绪了。总之我用QQ只是为了聊天,腾讯的那些行为,影响不到我,故而眼不见心不烦就是了。

暂别了,Linux

2008年7月15日星期二

openSUSE 11.0出来了,听说比原来漂亮了很多,还引入了KDE 4和Compiz Fusion。想想自己配置好openSUSE 10.2虽然花了很长时间,但这么久没有用过,抹除掉似乎也不心疼。结果openSUSE 11给我的印象很糟糕,主要的问题是Compiz Fusion不能正常工作,另外字体比原来还要更显得虚。思来想去,我决定暂时把分配给Linux的10GB空间还给已经很紧张的Windows D盘(为了这个无损调整空间我提心吊胆了3个小时,因为开始调整大小时我才想到我们楼经常停电的,不过还好,很多邻居都搬走了)。

Linux是一个很优秀的系统,我花了很多时间在上面,虽不说了解到了系统的方方面面,但从图形界面到命令行,基本的操作都已经明白了。我相信,只要愿意花时间,Linux一定可以配置得很好用,而且对我来说没有什么太大的困难在Linux的硅基世界里“活着”。可是,如果说花大量时间转型到Linux只是完成和Windows下面我能完成的同样事情,并附加一点美感的话,我觉得不值。看看我用的软件,倒大多是跨平台的(Firefox,SciTE,LaTeX排版引擎等),可是这也意味着我为了在Linux底下使用他们就又得重新进行配置。更重要的还是Windows下软件的制约:我需要使用MATLAB,而Linux下的MATLAB不很好找破解;公司给我的软件是Windows only的;Linux底下没有极点五笔这样称手的输入法,没有Babylon这样专业的翻译软件,没有Total Commander……

我没有办法改变某些习惯吗?很大程度上是的,但我想说,如果改变某些习惯,去找低一等级或者不同理念的替代品去重新习惯,结果也只不过是完成同样的事情,效率并没有提高多少的话,那么这个过程中花费的时间,是不是用到别的地方更有意义呢?同样是这个问题,在Word和LaTeX之争中我的回答与Windows和Linux之争不尽相同,对前面两个对手来说,我认为LaTeX对我更有学习的意义,因为LaTeX相对于Word的优势正是我需要的(所见非所得=>集中精力在文档内容、源文件兼容性好、严谨性高、输出美观专业),用LaTeX可以大大提高我写文章的能力和效率;相反,Word相对于LaTeX的优势我基本用不上(写短文章方便、字体选择方便、绘制表格与插图方便)。所以我会选择LaTeX,但不排除我建议很多人不要使用LaTeX,因为在他们的排版应用中,Word的优势占重头。说到Windows和Linux,答案也不言而喻了:Linux相对Windows的优势(文件系统效率高、多用户与安全性、适合编程与开发、美观的桌面、免费开源),我很少真正能用上;Windows的优势,光是软件支持一点就让我只能(更多地)留在Windows。

我自问没有仅仅因为跟风而尝试Linux,而是了解到了Linux好在哪里,所以说现在放弃Linux的行为也是清醒的:它(它们)是优秀的操作系统,但只有真正需要用到它们的时候,我才有必要去学习。人生的节奏一旦开始加速,有限的时间就应该更加合理地去把握。