Archive for 2011年4月

依恋 – 蔡淳佳


听过法语原唱的同学们应该能听出来这首歌的中文填词下了很大的功夫。
http://www.xiami.com/widget/682090_392439/singlePlayer.swf

留下评论

X 下有用的小工具


今天学了一个以前不知道的 X 小工具: xgamma. 它的用处是调整显示器输出的 gamma correction value. 这个gamma值的具体意义很难一下用浅显的语言来准确描述,它大体上相当于调整黑白对比度。你做一个实验大概就明白我说的意思了。首先打开一个有几种字体的文件或者网页。确切一点,我希望你用一些使用了antialias技术的字体。

  • 显示当前显示器的gamma value:
    xgamma
  • 降低对比度:
    xgamma -gamma 1.5

    看出来什么变化没有?是不是字体“发虚”了?

  • 现在增加对比度:
    xgamma -gamma 0.5

    是不是字体变得“沉”了许多?

Linux桌面一个很大的问题就是字体渲染不尽人意。这里面有很多因素,有些是不可控的(因为有些字体渲染技术有专利限制不能自由分发),有些纯粹就是X团队自己应该实现但却没去实现。就拿刚刚说的gamma value这个例子,一般用户不会也不应该去调 全局 gamma value, 99%的用户(比如说我自己)需要调的是 字体 antialiasing 里头的黑白对比,自行决定究竟是用比较淡一点但比较光滑美观的方案(接近Windows的cleartype, 或者mac),还是比较粗一点但比较清晰的方案(接近bitmap字体)。 这种局部调整gamma value的方法并不难实现,其实X server 已经提供了这么一个机制,在 xdvi 里头也有一个这样的实现。不信你用xdvi打开一个文件,多按几下 Ctrl Alt - (变淡) 或者 Ctrl Alt + (变黑)就明白我说的意思了。

Xft/fontconfig 实现了一大堆正常人一辈子都不会用到的功能,但就是没有实现这个。一般说来欧美人喜欢光滑一点的方案,亚洲人则正好相反。我想可能是因为亚洲字体远比拉丁字母复杂,过度光滑看起来特别累眼睛。而X 团队的开发者大部分为欧美人,可能就不会太在乎这些需求。

当然话说回来,workaround也是有的。目前我的解决方案就是挑合适的字体。英文用 Ubuntu 字体,本身比较“肥”,所以淡一点的antialiasing后看起来正好;中文用文泉驿字体,小字号它内嵌了bitmap字体,符合我们的习惯。

最后说一下别的几个有用的小工具:

xkill
强行杀掉某个程序;
xmodmap
键盘调整,比如说能把control和enter互换;
xev
让你知道某个键的名称;
xlsfonts
显示X core fonts;
xdpyinfo
显示一些关于X server的信息,比如说分辨率等等;
xprop
显示一个client的一些信息,比如说它的icon, class, 等等。这些信息在使用openbox之类的window manager时比较有用。举例而言,我可以写一条rule, 让所有class 为XTerm的窗口全部竖向最大化,所有class为Emacs的窗口全部无边,等等。

, , ,

留下评论

Linux下怎么管理,升级R的libraries


  1. 能用APT之类的发行版自带工具升级就用这个工具好了。目前Ubuntu里面大约 有150个包,大部分时候就可以满足需求了。
  2. 如果要自己装一些包,最好设置一个固定的path. 方法是设置一个叫做 R_LIBS_USER 的环境变量。比如说我的 .bash_profile 里头有这么一句:
    export R_LIBS_USER="${HOME}/local/lib/R"

    这样 R 就会把包装到这个目录下,第一不用root权限,第二你以后管理起来也方便。

  3. 每次用 install.packages("foo") 的时候R都会问你选 CRAN mirror对吧? 要想让它用一个固定的也不难,在你自己的用户根目录下创建一个文件叫做 .Rprofile, 在里面写上:
    r <- getOption("repos")       
    r["CRAN"] <- "http://website/cran/"
    options(repos = r)
    rm(r)

    顺便说一下,每次你启动R, 它第一件事就是去读这个文件的内容。所以比如 说你自己写了一个顺手的小函数什么的都可以放在这里,用不着专门去打一个 包了。

  4. R的升级命令是 update.packages(). 但这个命令会试图升级你所有的包, 包括系统安装你没有权限也不想改动的。所以我都用这个命令升级:
    update.packages(lib.loc="/path/to/my/lib/R", checkBuilt=TRUE)

    “checkBuilt=TRUE” 的意思是即使某个包的版本号为最新,但如果它是在一个 老版本的 R 环境下编译的那就重新编译; lib.loc 变量,顾名思义,就是 说只升级这个目录下的包。

  5. 删除一个包。你可以直接去其目录裸删,也可以用 remove.packages(c("pkg1", "pkg2"))
  6. 偶尔有在CRAN 上找不到的包,只有一个zip或者tarball的形式。用以下命令安装:
    R CMD INSTALL --library=/path/to/my/R/lib foo_0.76.tar.gz

, ,

留下评论