I am LAZY bones? AN ancient AND boring SITE

2007年 11月 的归档

什么是有衬线字体与无衬线字体(serif VS sans serif)

在西方國家的字母體系,分成兩大字族:serif 及 sans serif。其中 typewriter 打字機字體,雖然也是 sans serif,但由於他是等距字,所以另獨立出一個 Typewriter 字族出來。
serif 的意思是,在字的筆畫開始及結束的地方有額外的裝飾,而且筆畫的粗細會因直橫的不同而有不同。相反的,sans serif 就沒有這些額外裝飾,而且筆畫粗細大致上是差不多。
像 Times、Times New Roman 等都是屬於 serif 的字體,而 Arial、helvetica 則是屬於 sans serif 的字體。
serif 和 sans serif 的一般比較
serif 的字體較易辨識,也因此易讀性較高。反之 sans serif 則較醒目,但在走文閱讀的情況下,sans serif 容易造成字母辨識的困擾,常會有來回重讀及上下行錯亂的情形。
serif 強調了字母筆畫的開始及結束,因此較易前後連續性的辨識。
serif 強調一個 word,而非單一的字母,反之 sans serif 則較強調個別字母。
在很小字的場合,通常 sans serif 會較 serif 字體較為清晰。
適用於不同用途
通常文章的內文、正文使用的是易讀性較佳的 serif 字體,這可增加易讀性,而且長時間閱讀下因為會以 word 為單位來閱讀,較不容易疲倦。而標題、表格內用字則採用較醒目的 sans serif 字體,他需要顯著、醒目,但不必長時間盯著這些字來閱讀。
像 DM、海報類,為求醒目,他的短篇的段落也會採用 sans serif 字體。但在書籍、報章雜誌,正文有相當篇幅的情形下,應採用 serif 字體來減輕讀者閱讀上的負擔。
中文的情況
在中文的情形也是有相當於 serif 的字體,例如明(宋)體就是 serif 的,他通常是和 Times Roman 字族來搭配的。而黑體、圓體就相當於是 sans serif 的字體。
在中文直排的情況,比較不容易顯現 serif/sans serif 之間的差異性,但是在目前中文橫排相當的普遍的情形下,以上所述及的易讀性、醒目性也是適用於中文。
很常看到中文出版書籍、雜誌,內文使用了不易閱讀,但卻很醒目的黑體或圓體,這對讀者來說,在長期閱讀之下很容易就引起眼睛不舒服,似乎是應該盡量避免才是。
serif VS sans serif

摘自: http://forum.ubuntu.org.cn/viewtopic.php?t=88959

终于找到比较好的终端中文小字体的解决方案了

因为想在终端里面一屏看到尽量多的字,可惜自己的显示器又不够大,所以一直在找比较小的中文等宽字体.但是找了几个效果都不怎么好,一般都是和英文大小不一,导致部分重叠了.今天弄了半天终于找到个比较好的方案.

其实就是传说中的圆体,嘿嘿,因为是矢量字体(其实我个人还是比较喜欢点阵字体的),所以要有好的效果需要打开AA,在字体选择的界面选那个”次像素平滑”,这样据说不是LCD也能有较好的显示效果,反正我的CRT上看着还行.

这里有个问题值得注意,就是:如果你在字体里面选了次像素平滑,但是AA还是打不开的话,可能要检查一下你的  ~/.fonts.conf 如果里面的 <edit mode="assign" name="antialias" > 是 <bool>false</bool> 的话,需要改成true,才能开的了AA.

相关链接:

http://eexpress.blog.ubuntu.org.cn/2007/11/08/%e5%8e%bb%e6%8e%89%e4%ba%86%e5%9b%ad%e4%bd%93%e7%9a%84%e7%82%b9%e9%98%b5/

http://forum.ubuntu.org.cn/viewtopic.php?t=88700&highlight=

调整Eclipse中树状列表的显示密度(转)

发了点牢骚,结果有人给推荐了这篇文章,不错,转一下.不过我喜欢Verdana字体,所以把字体改了,哈哈.

如果你在Windows和Linux两个平台下都使用过Eclipse,那么你一定注意到Windows下Eclipse项目列表的显示要比Linux下 紧凑许多。对于做开发的朋友来讲,在屏幕上同时看到的信息总是希望尽可能多,尽可能全,在这一点上目前的GNOME并不能让我们十分满意,它的GTK+控 件本身和控件之间的间隙占掉了不少本来就很有限的屏幕空间,尤其当屏幕分辨率不是特别高的时候。

Linux版的Eclipse默认使用GTK+2.0的控件,所以在默认的情况下,会和其他GTK应用程序(如OpenOffice.org)一样给人一 种不够密实的感觉。当然,这和GNOME的设计哲学不无关系,不过这不是本文主旨,就不深入讨论了,进入正题讲讲如何调整Eclipse树状列表的显示密 度。

基于GTK+2.0的程序在启动时会到用户的home目录找GTK+2.0的配置文件,即~/.gtkrc-2.0,Ubuntu下默认没有这个文件,需要我们自己创建。打开你习惯的编辑器,加入如下代码:

下载: .gtkrc-2.0
  1. style "eclipse" {
  2. font_name="Verdana 8"
  3. GtkTreeView::vertical-separator=0
  4. GtkTreeView::horizontal-separator=0
  5. }
  6. class "GtkTreeView" style "eclipse"

重启Eclipse应该就能看到效果了。如果你想做得更彻底,对所有常用的GTK+2.0控件都开刀的话,可以这样写:

下载: .gtkrc-2.0
  1. style "gtkcompact" {
  2. font_name="Verdana 8"
  3. GtkButton::default_border={0,0,0,0}
  4. GtkButton::default_outside_border={0,0,0,0}
  5. GtkButtonBox::child_min_width=0
  6. GtkButtonBox::child_min_heigth=0
  7. GtkButtonBox::child_internal_pad_x=0
  8. GtkButtonBox::child_internal_pad_y=0
  9. GtkMenu::vertical-padding=1
  10. GtkMenuBar::internal_padding=0
  11. GtkMenuItem::horizontal_padding=4
  12. GtkOptionMenu::indicator_size=0
  13. GtkOptionMenu::indicator_spacing=0
  14. GtkPaned::handle_size=4
  15. GtkRange::trough_border=0
  16. GtkRange::stepper_spacing=0
  17. GtkScale::value_spacing=0
  18. GtkScrolledWindow::scrollbar_spacing=0
  19. GtkExpander::expander_size=10
  20. GtkExpander::expander_spacing=0
  21. GtkTreeView::vertical-separator=0
  22. GtkTreeView::horizontal-separator=0
  23. GtkTreeView::expander-size=8
  24. GtkTreeView::fixed-height-mode=TRUE
  25. GtkWidget::focus_padding=0
  26. }
  27. class "GtkWidget" style "gtkcompact"

ssh登录时的欢迎词

如果你用ssh登录ubuntu的主机,一般会显示一个类似这样的信息:

Linux LLY 2.6.20-16-lowlatency #2 SMP PREEMPT Sun Sep 23 19:54:02 UTC 2007 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Thu Nov 8 11:28:17 2007 from 211.*.*.*

但是这个是可以修改的,你可以试试 cat /etc/motd 看到了吧,上面的内容出了最后一行,都在这个文件里面呢.所以,如果你的服务器是公用的,又想让人家一登录进来就看到某些信息,就可以修改这个文件啦.甚至,你可以写个脚本,定时更新这个文件的内容,以反映服务器的当前状况,那人家登录进来,感觉会相当不错的.

[转]用C语言实现有限状态机

有限状态机(finite state machine)是一个数学概念,如果把它运用于程序中,可以发挥很大的作用。它是一种协议,用于有限数量的子程序(“状态”)的发展变化。每个子程序进行一些处理并选择下一种状态(通常取决于下一段输入)。

有限状态机(FSM)可以用作程序的控制结构。FSM对于那些基于输入的在几个不同的可选动作中进行循环的程序尤其合适。投币售货机就是FSM的一个好例子。另外一个你可以想到的复杂的例子就是你正在用的东西,想到了吗?没错,就是操作系统。在投币售货机的例子中,输入是硬币,输出是待售商品,售货机有” 接受硬币”,”选择商品”,”发送商品”和”找零钱”等几种状态。

它的基本思路是用一张表保存所有可能的状态,并列出进入每个状态时可能执行的所有动作,其中最后一个动作就是计算(通常在当前状态和下一次输入字符的基础上,另外再经过一次表查询)下一个应该进入的状态。你从一个”初始状态” 开始。在这一过程中,翻译表可能告诉你进入了一个错误状态,直到到达结束状态。

在C语言中,有好几种方法可以用来表达FSM,但它们绝大多数都是基于函数指针数组。一个函数指针数组可以像下面这样声明:

void (*state[MAX_STATES]) ();

如果知道了函数名,就可以像下面这样对数组进行初始化。

extern int a(),b(),c(),d();
int (*state[]) ()={a,b,c,c};

可以通过数组中的指针来调用函数:

(*state[i]) ();

所有函数必须接受同样的参数,并返回同种类型的返回值(除非你把数组元素做成一个联合)。函数指针是很有趣的。注意,我们可以去掉指针形式,把上面的调用写成:

state[i] ();

甚至

(******state[i]) ();

这是一个在ANSI C中流行的不良方法:调用函数和通过指针调用函数(或任意层次的指针间接引用)可以使用同一种语法。

如果你想干得漂亮一点,可以让状态函数返回一个指向通用后续函数的指针,并把它转换为适当的类型。这样,就不需要全局变量了。如果你不想搞得太花哨,可以使用一个switch语句作为一种简朴的状态机,方法是赋值给控制变量并把switch语句放在循环内部。关于FSM还有最后一点需要说明:如果你的状态函数看上去需要多个不同的参数,可以考虑使用一个参数计数器和一个字符串指针数组,就像main函数的参数一样。我们熟悉的int argc,char *argv[]机制是非常普遍的,可以成功地应用在你所定义的函数中。

原文: http://blog.csdn.net/Melody_1208/archive/2007/09/22/1795676.aspx

防沉迷软件 workrave

如果你是个工作狂,又担心自己的身体那天会垮掉,那估计这款软件适合你 :)

特点:

  • 开源,切垮平台,ubuntu源里有,windows用户可从这里下载.
  • 高度可配置.
  • 集成了”体操”,休息时,可以跟着提示活动活动筋骨.
  • 集成了较强的统计功能.
  • 可以缩到applet里面,不占用用户视觉空间,甚至是任务栏.

放个图,哈哈,默认的3分钟暂停30s,似乎过分了点,改成10分钟不错:
workrave

winSCP中文乱码问题

家里的UBUNTU gutsy 的locale是zh_CN.UTF-8的,用winscp登陆后,发现中文居然是乱码,一时也没找到设置的地方,也是放狗搜索,把结果记录一下:

要在登陆界面,把高级选项钩上(刚才就是疏忽了这点,嘿嘿),然后把那个 “服务器不支持UTF-8″选成关闭,再登陆,就大功告成了!哈哈哈~

winSCP