2007-04-29

eva qq in ubuntu

花了两天才弄好eva

其实学校feisty的源可以直接安装配置eva的,只是我仍在用edgy且短时内不打算升到feisty.edgy源里没有eva.我不想为此修改source.list再update,否则倒是改回来就不好整了,于是从源里下了个deb安装,不过需要依赖很多高版本的库,但是edgy源里这些库的版本号不够...

于是编译安装吧

eva 官方论坛里有个源码包下载,不过我编译后不能正常登录,说"您所在ip不能使用旧版本之类"...关于这个信息,eva的调试信息出的都是16进制的,需要用16进制编辑器写一下再看.
后来查到可以修改src/libeva/evadefines.h,这就要查QQ版本号代码了,我从飘云QQ里搞来了个列表,不过跟这个.h里的定义有很大出入,我尝试了几个均失败了.

最后终于发现我一直在犯傻 -- feisty源里也有源码下载,而且是cvs版本的,比较新.于是乎编译安装,最后,哈!能登录了!

但是开始时字体有问题,我在网上搜,说是应该改kde系统字体,用kcontrol改(一开始我看成konsole了,搞了半天,莫名其妙),这个不必多说.

这样就能正常使用了,截图功能还不错,不过截图发送有问题,传文件也不行.不知道为什么,不过也没多大关系,当初Luma时也差不多.

最后对eva开发维护者表示感谢!

2007-04-27

在Blogger首页显示文章摘要二解

在首页显示摘要是个不错的主意,可惜Blogger默认不支持.
网上倒是有一些解决方案,不过我都不大喜欢,因为需要修改文章模板,每次创建文章时还要指定哪里是摘要,哪里是全文,不爽.

我希望摘要的生成是自动的,可且应当便于修改. 网上好像有个这样的脚本,不过我网络不好,下不来...

经过两天的研究,我完成了两种方案.

方案一,根据行数定摘要.

修改模板, 加入CSS
/* added by WangLu
for summary display */
div.wl_summary{
height: 10em;
max-height: 10em;
overflow-y: hidden;
}

另外在post-body的定义中,把<p><data:post.body/></p>
改为
<!-- added by WangLu -->
<!-- display summary on the main page -->
<b:if cond='data:blog.pageType == "item"'>
<p><data:post.body/></p>
<b:else/>
<p>
<div class='wl_summary'>
<data:post.body/>
</div>
</p>
...
<br/>
<br/>
<a expr:href='data:post.url'>Read more...</a>
</b:if>

就行了.

此法优点是改动少,速度快,代码简单,且发文时无需添加额外信息
不过需要说明几点:
1. 在Firefox里指定height或max-height都可以达到效果,但是IE不支持max-height
2. 关于height的值可能需要根据实际字体进行修改, 设置不当容易出现半个字的情况.
3. 即使文章很短,也会出现'...'和Read more字样,逻辑上有点小问题.
4. 未显示的部分实际也已下载(查看源代码就能看到),因此不会减少数据下载量


方案二:根据字数定摘要.(我现在采用的方案)

仍需要修改模板,在post-body的定义中,把<p><data:post.body/></p>
改为
<!-- added by WangLu -->
<!-- display summary on the main page -->
<b:if cond='data:blog.pageType == "item"'>
<p><data:post.body/></p>
<b:else/>
<WL_SUMMARY />
<div class='wl_body'>
<p>
<data:post.body/>
</p>
</div>
<div class='wl_read_more'>
...<br/>
<br/>
<a expr:href='data:post.url'>Read more...</a>
</div>
</b:if>


然后添加javascriot页面元素(我这里直接往模板里写总出错)
<!-- added by WangLu for displaying summary in the main page -->
<script type="text/javascript">
var all_summaries = document.getElementsByTagName("WL_SUMMARY");
var num_of_char = 250;

for (var i=0; i < all_summaries.length ; ++i)
{
var summary = all_summaries.item(i);

var b = summary.nextSibling; //body
while( (!b) || (b.className!="wl_body")) b = b.nextSibling;
if(!b) continue; //error!

var r = b.nextSibling; //readmore
while( (!r) || (r.className!="wl_read_more")) r = r.nextSibling;
if(!r) continue; //error!

if (b.innerHTML.length < num_of_char)
r.style.display="none"; //don't show 'read more' for short articles
else
b.innerHTML = b.innerHTML.substring(0,num_of_char); //truncate
}
</script>

就好了.

此法优点是逻辑正确,能自动判断是否需要显示摘要,而且发文时无需添加额外信息.
不过需要说明几点:
1. 代码中寻找wl_body和wl_read_more时出于效率考虑,直接顺序查找,故不可交换二者顺序.
2. 不要在别处使用WL_SUMMARY或wl_body,wl_read_more
3. 显示摘要是直接砍innerHTML,对复杂的HTML代码可能会出问题
4. 这种方法实际也是下载后在删去,因此不会减少下载量.而且如果你的机器较慢,可能会看到文字先出现后消失. 不过这样最后确实可以节省一点内存
5. 按照我使用的模板的写法,这段脚本应该会在posts之后调用,对别的模板不予保证.(另一种想法是把脚本写成函数,然后放到文章所在<div>的onload去,不过这时函数应该提前声明,不知是否可行,我没有尝试)
6. 由于网络的原因,我这里修改页面元素的速度尚可,但是改模板就慢的不行了.我想出了一种简单地在这两种摘要模式中切换的方法:
保留第一种的CSS,但不要添加class='wl_summary'.
上一步并不影响第二种方法,因此照上述文字做即可.
如果想用第一种方法,只需把脚本中b.innerHTML=...一行改为b.className="wl_summary".
用这种方法实现的第一种方法可以兼顾二者的优点,卡行比较优美,且可以自动判断是否显示Read more,不错。

2007-04-24

Latex-suite技巧总结

用latex-suite有几天了,越发得发现它太好用了.其实看它的帮助是发现功能的最好方法,很多时候比上网搜要快,可以我一般看不了多少就忍不住了...

总结一下已知的一些技巧吧

注: 我的latex-suite是放在~/.vim里了

1.修改~/.vim/ftplugin/latex-suite/texrc,将TexLet g:Tex_defaultTargetFormat='dvi'中的dvi改成pdf -- 我是一般喜欢用pdflatex直接生成pdf的,因为它对图片支持比较好.

2.输入模式下,按F5可以输入\begin{}\end{}类的命令,如果按F5之前用v选中了文字,则加入的begin和end可以把这部分文字"包住"

3.输入模式下,按F7可以输入\命令,如果已经输入了命令,如frac,光标停在c后,此时按F7可自动把它替换成\frac,且自动加入适当的{}

4.输入((,{{,[[之类的符号可自动替换成\left\right类型

5.它定义了若干三字母快捷方式,如EMA可自动替换为\begin{math}\end{math}

6.双引号可自动替换成``或'',而且是自动左右匹配

7.使用它的自动完成经常可以看到形如<++>的符号,这个是定位符,通常放在下一个你会打字的地方,比如\frac{}{<++>}<++>,按C-J可以自动定位并消除这个符号.如果只是一个},那么它的好处并不明显,但是如果是\right}就会发现它的好处了.(一开始我还以为这个符号是latex-suite的bug... -_-b)

8.make命令可以直接编译(第一步改的就是这个命令),不过要打make <文件名>

9.\ll可以编译当前文件,\lv可以查看编译后的文件

10.:Target, :TCTarget, :TVTarget可以修改9中的目标,如dvi或pdf,不过\lv对pdf支持不大好,可能需要手工修改脚本

总之,latex-suite很不错

(转)Debian的init进程初始化工作原理

讲的还是挺清楚的,

看完以后我明白了init.d和rc*.d的结构和作用.

其实根据那几个目录里的README,装一个叫debian-policy的包也能查到,不过那个包太详细了,查个这个很慢...

//原文

原文:
http://mushroom.phpower.net/index.php?action=show&id=117

init和inittab
=============
Linux下为什么会要有个init?用过windows 9.x的人应该知道有个批处理文件autoexec.bat,用过windows NT/2000系统的人应该在控制面板中见过system service工具,它们的目的是相同的。只是比较起来windows下的这些东西功能太弱(当然用法也更简单)。
init是Linux启动的最后一步,它帮助用户完成每次启动系统都必须完成的一些重复性任务,如加载文件系统、各类网络服务等等程序;它还有一个重要用途,让用户自定义系统运行环境,只启动需要的进程,关闭不用的进程,释放内存和处理器资源,让系统运行得更快更稳。

init 会按任务表执行我们下的命令,这个任务表就是/etc/inittab文件。我们可以为系统制定多个运行环境以满足不同任务的需要,在inittab中称 之为运行等级(runlevel)。例如,计算机要用来完成一种联网编译任务(与其它系统共享CPU周期,合作编译软件),这样情况需占用大量CPU能力 和内存,所以当计算机用作这种用途时,其他程序的运行要尽可能少。可设置一个运行等级(如:runlevel 4),把其它程序包括X Window全关闭,只启动联网编译进程;其他时段,你的计算机要与Windows系统共享文件,需要启动Samba,可以再定义一个运行等级(如: runlevel 2)。
现在当你要进行联网编译时可运行init 4,而不用手工去关闭每个暂不需要的进程;要与Windows系统共享文件可运行init 2。

Debian系统对某些运行等级进行了预先配置(而且是无法修改的)

runlevel 0:它的任务就是关闭所有程序,关机。如果计算机及内核支持APM,系统电源可自动切断。

runlevel 1:为单用户模式保留的。在这个运行等级下,除了一个root shell外,没有其它程序运行。除了root文件系统以只读方式安装外,不安装其它文件系统。该运行等级通常在恢复系统时用。

runlevel 6:与runlevel 0非常相似,只是它是重启系统而不是关闭系统。

runlevel 2、3、4、5:Debian系统对它们没有具体规定,通常可自由进行定制,它们都属于多用户模式。其中runlevel 3是Debian使用的默认运行等级。启动Debian系统时,用的就是这个运行等级。

下面是inittab文件的例子

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
# :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

该文件有一个基本类型的指令,它们指定命令行,命令行所采取的动作,在何种运行等级下激活命令。这引起命令行的格式大体如下:

id:runlevels:action:command

id是任意一个名称(具体是什么并不重要),runlevels是一个数字串(代表运行等级),action描述何时执行命令,command指定执行的实际命令。拿启动getty的命令行举例:

1:2345:respawn:/sbin/getty 38400 tty1

该命令告诉init,它应该在引导后以运行等级2-5运行命令/sbin/getty 38400 tty1。动作标记respawn表示命令在退出时重新运行(当用户在shell输入exit的时候)。

从方面的文件中可以看到,运行等级2和3有六个活动的gettys,而等级4和5只有一个。假设运行等级4下有三个shell运行在虚拟控制台。你在ID为2和3的命令行的运行等级字段添加了数字4,也就是说你将

2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3

替换成

2:234:respawn:/sbin/getty 38400 tty2
3:234:respawn:/sbin/getty 38400 tty3

然后重启或执行以下命令:

telinit q

对inittab进行修改。telinit q命令指示init重新加载它的配置。参阅telinit(8)。

/etc/inittab的其它行看起来比较复杂,我们先看看还有哪些动作标记:

·respawn:启动命令并监视命令的执行,当进程退出时,再次执行该命令(通常用于虚拟终端设备上的登录提示)。 ·wait:进入指定运行等级时,启动进程。init会停下来,直到执行完成。这个标记用于设置特定等级下软件的启动。
·once:进入指定的任一运行等级时,启动一次进程。
·boot:该命令在系统引导时运行。这种类型的指令忽略运行等级。
·bootwait:该命令在系统引导时运行,init等到它退出后才能继续做别的事。
·off:禁用所有运行等级下的某个命令。
·initdefault:这种类型的项指定在系统引导时进入哪个运行等级。
·powerwait:这类指令给出在电源不足时需要执行的命令。init直到进程完成后才继续工作。
·powerfail:与powerwait类似,但init不等待进程完成。
·powerworkwait:电源正常后执行。init暂停,直到进程结束。
·powerfailnow:当便携机电池或外部UPS电池电量不足时执行。
·ctrlaltdel:指定init在捕获ctrl+alt+del组合键时执行的命令。
·kbdrequest:把特殊动作映射到特定的按键。Debian中的是alt+UpArrow。

现在再看上面的文件是不是清楚了许多?

更强大的sysvinit
================
inittab 的主要功能是描述引导及正常操作时,应该在何种运行等级下启动什么程序,每个运行等级的具体项目完全可以通常/etc/inittab来定义,但 Debian有一个更健壮的方案sysvinit,它被认为是init最强大的应用程序之一。Debian组织inittab的方式是把运行等级的大部分 定义从inittab中移出来,移到一个脚本层次中去。惟一直接从inittab启动的程序只有getty,它用于虚拟设备上启动登录提示符,保留它因为 它们要求特殊处理,在inittab之外处理要困难得多。

inittab来启动所有软件当然是可能的,但将所有配置写在同一个文件既不方便查看也不方便维护,所以文件里会加上这许多行:

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

这些行实际决定了系统在各个运行等级下的行为。它们如何做到的也许并不明显,但至少我们知道主要意思:首先每行都有个符号ID lx,lx表示runlevel x;其次,每行只在一个运行等级下激活,该运行等级对应着符号ID中的数字x。命令执行时,init停下来,直到进程结束。最后,每个命令行调用一个脚本 /etc/init.d/rc x,这里x代表当前运行等级的数字。显然各运行等级的具体任务在/etc/init.d/rc脚本中安排。

Debian init设置的核心在/etc/init.d目录。该目录包含了启动或停止重要软件的脚本,为了简化操作,规定每个脚本都使用相同的一套参数——start或stop。个别软件包维护者为用户着想,往这些脚本中加了其他功能,但init不会去调用它们。
举个例子,可调用:#/etc/init.d/apache start来启动Apache,调用:#/etc/init.d/apache stop来关闭它。
作为一个用户工具,这是非常有用的,它让用户轻松启动和关闭Debian所带的复杂程序,不过在考虑如何启动程序前,先检查 /etc/init.d,看看是不是已经有脚本可以做这件事了。借助于这种机制,可以按自己的需求来调整运行等级,/etc/init.d/rc可以把系 统引入所需的运行等级。 /etc/rcx.d是一组指向/etc/init.d的符号链接。进行运行等级时,rc在运行等级目录中按逻辑顺序处理每个脚本。首先前缀为K的每个文 件都以参数stop(按字母和数字顺序)执行;其次,以S为前缀的每个脚本都以参数start(按字母和数字顺序)执行。
了解了工作原理,下面试着自己来构造一个运行等级。我们使用运行等级5和与之相关的rc目录/etc/rc5.d。首先,看看该目录下的内容: 找出每个符号链接所做的工作;查看文件,判断它来自哪个文件。经过仔细查看,找出启动无用程序的S打头的脚本,把它们删掉,在/etc/init.d中找 出需要运行但未包括在内的脚本,例如假设你想在运行等级5下启动Samba,执行命令:

ln -s /etc/init.d/samba /etc/rc5.d/S20samba

看到这里是不是对init有了新的了解,那么来测试一下学习成果:关闭Debian默认安装时加载的gdm/xdm/kdm进程,让Debian启动到命令行终端而不是X。



http://www.real-blog.com/linux-bsd-notes/49
以文字模式啟動 Ubuntu

January 31, 2006 @ 11:00 pm · Filed under Linux / BSD 筆記

如果想 Ubuntu 在每次啟動到 command prompt ,可以輸入以下指令:

$echo “false” | sudo tee /etc/X11/default-display-manager

當下次開機時,就會以指令模式啟動,如果想變回啟動 x window,可以輸入:

$echo “/usr/bin/gdm” | sudo tee /etc/X11/default-display-manager

P.S. 如果不是用 gdm 作為,以上指令需要根據你的環境作出更改,例如 kdm 或 xdm。

英文Gnome下使用中文输入法

折腾了好久呢,最终解决方案是这样:

首先要使得gnome以英文显示,在我这改任何locale都没用,最后发现是在~/.dmrc里有个Language变量,改为en_US即可

这样gnome应该就是英文界面了(好像改locale可以影响登录界面,因为之前我改locale后发现登录界面是英文的,但是登录后就又回到中文了).

这时输入法应该还出不来,应当修改/etc/environment,增加LC_TYPE=zh_CN.GBK即可,当然,如果你不希望它影响到你的shell,应当在~/.bash_profile里再把LC_CTYPE改回来(按理说改全局的profile也可以)

应该就可以了.

一开始为了把输入法弄出来,我改了en_US对应的输入法,用到了im-switch和update-alternatives,但是之后虽然fcitx能运行,但是输入条总出不来(好像偶尔几个程序可以).
最后是在ubuntu论坛上发现的解法.

2007-04-21

(转)Linux服务配置

我装了sysv-rc-conf和sysvconfig,都还不错,然后把gdm和一些打印服务都关掉了。
另外我没做文中提到的最后几步

//原文

原文http://www.ubuntuforums.org/showthread.php?t=89491

加速Ubuntu开机过程

此HowTo的建议:
1. 我希望你能从中学到东西而不是仅仅简单的拷贝。 因此请, **不要 ** 完全地按照我所作的并复制到你的计算机。阅读服务的描述并自己判断去决定是否需要保留他们。 例如,在我的电脑上我关闭GDM用终端引导,但是如果你看到终端感到一点都不舒服,你应该保留GDM或KDM直接引导到用户图形界面。
2.如果你对开机服务有疑问并且确实对该服务是什么不是很确定, 在此张贴问题并且看看是否有人能帮助你。 在你行动之前如果你不知道。保持系统安全的底线是让一种服务开着而不是关闭它,如果你不理解的该服务的话。
3. 如果你在你机器上见过一个开机服务但不在这里,告知我们它是什么?正如我在这里做的一样 –给一些说明和建议关于是否它应该在一台正常的笔记本或者桌面环境上开或关。
颜色参考: 我开启的服务
我关闭的服务

I. 安装一个工具 - sysv-rc-conf。 它是一款基于perl的开机进程调整工具。
代码:
sudo apt-get update
sudo apt-get install sysv-rc-conf
它提供一种配置开机进程和运行等级的简单方法, 但是如果你想要通过链接/解除链接文件来手工操作的话,这不是必需的... 这由你决定


II. Ok,一切就绪。现在让我们通过以下代码来运行它
代码:
sudo sysv-rc-conf
并一个一个的分析每种服务。 **注意 ** 我有的一些服务或许你没有,完全可以。如果一些服务你有但是我没有, 你将需要独自研究或者在这里提问 ... 但是此HowTo 涵盖它们中的大多数 ...

在我们开始搞乱它们之前,我要在这里引入一些运行等级知识 ....全部开机进程执行顺序如下:
运行等级 S:开机进程中的第一个运行等级。/etc/init.d/rcS脚本将被调用到开启并且/etc/rcS.d目录下的所有进程将被执行。
运行等级 1:单用户模式。/etc/rc1.d目录下的所有进程将被执行。
运行等级 2,3,4,5:在debian系统里是多用户环境,可能不包含图形用户界面。同样的,在相应目录下的进程将被运行。
**注意** 这和RedHat,SuSE, 以及其它基于RPM的系统不同。
运行等级 0:关闭计算机
运行等级 6:重起计算机

好,让我们回到sysv-rc-conf:

1. acpi-support - 你最好使其在S运行等级处于“X”状态。
2. acpid - acpi守护程序.这两个用于电源管理,对于笔记本和台式电脑很重要,所以让它们开启。
3. alsa - 如果你使用alsa声音子系统,是的,开启它。
4. alsa-utils -在我系统里,此服务取代了alsa,所以我关闭了alsa并在S运行等级将此服务开启。**注意**,我所说的“关闭”是指在所有运行等级里面去除所有“X”。如果在你系统里没有它,没问题。让我们继续。
5. anacron - 一个cron子系统,当时间到达时用于执行任何没有被执行的cron作业。当某种cron 作业时间准备好时,很可能你或许已经关闭了你的计算机。打个比方,updatedb被计划在每天2点执行,但是在那个时候,你的计算机是关闭的,然后如果 ananron服务如果是开启的话,它将设法抓起那个updatedb cron… 我将它关闭是因为我不经常关闭我的笔记本,但是否开启此服务完全取决于你。
6. apmd - 这是十分困惑我的一个服务。我已经开启了acpid服务,那同时开启apmd有啥好处呢?如果你的计算机不是那么老,甚至不能支持acpi,然后你可以设法关闭它。无论如何,我是关闭它的。
7. atd - 就像cron,一个作业调度程序。我把它关了
8. binfmt-support - 核心支持其他二进制的文件格式。我让它开着
9. bluez-utiles - 我把它关了因为我没有任何蓝牙设备
10. bootlogd - 开启它
11. cron – 开启它
12. cupsys – 管理打印机的子系统。我没有打印机所以我关闭它了,如果你有打印机,开启他。
13. dbus – 消息总线系统(message bus system)。非常重要,开启它。
14. dns-clean – 当使用拨号连接,主要用于清除dns信息。我不用拨号,所以我关闭了它。
15. evms – 企业卷管理系统(Enterprise Volumn Management system). 我关闭了它。
16. fetchmail – 一个邮件接受守护进程,我关闭了它。
17. gdm – gnome桌面管理器。 无论如何我关闭它了,因为我将系统用终端引导。如果你想直接引导到图形用户界面,这取决于你。
18. gdomap – 事实上我也不知道为什么此服务必需开启。我没有在其他系统见过这个守护程序,所以我将其关闭并且我没觉得我失去了什么。开启它对笔记本或者台式机有任何好处吗?
19. gpm – 终端鼠标支持。如果你觉得你在终端使用鼠标更好,那么在运行等级 1 和2 开启它。那正是你所需要的。
20. halt - 别更改它。
21. hdparm – 调整硬盘的脚本。我在运行等级 2,3,4,5去除了它但是在S 运行等级添加了它。我觉得早点打开DMA,32bit I/O等等将对其余过程有益。我自己也将原来的脚本精简了一下。如果我知道我正做什么,我觉得做过多的检查没用。相应配置文件是 /etc/hdparm.conf。
22. hibernate – 如果你的系统支持休眠,把它打开,否则它对你没用。
23. hotkey-setup – 此守护进程为你的笔记本建立一些热键映射。支持的制造商包括: HP, Acer, ASUS, Sony, Dell, 和IBM。如果你有那些品牌的笔记本,你可以打开它,否则它或许对你没有任何好处。
24. hotplug and hotplug-net #激活热插拔系统是费时的。我将考虑关掉它们。我在的/etc/network/interfaces文件作了很多修改,并将其设置为自动运行,而不是在 热插拔进程期间映射我的无线网卡。所以我可以将它们关掉。我已经测试过了,甚至我将它们关闭,ubuntu仍旧可以检测到我的usb驱动器,我的数码相 机,等等。所以我认为关掉它们是很安全的**注意**如果在关闭热插拔服务以后发现你的声卡部工作了,你可以将服务打开,或者编辑 /etc/modules文件并添加声卡驱动模块。经测试,后者比较快。
25. hplip – HP打印机和图形子系统,我将其关闭了。
26. ifrename – 网络接口重命名(network interface rename)脚本。听上去很酷但是我把它关掉了。主要用于管理多网络接口名称。虽然我有无线网卡和以太网卡,两者被内核标识为eth0和ath0,所以此服务对我不是很有用。
27. ifupdown and ifupdown-clean – 打开它,它们是开机时网络及口激活脚本。
28. inetd or inetd.real – 查看文件/etc/inetd.conf 注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。
29. klogd – 打开它。
30. linux-restricted-modules-common – 你应该去查看下是否你的系统装载有任何受限制的模块。既然我需要madwifi ath_pci 模块,所以我将其开启。受限制的模块可以从/lib/linux-restricted-modules查看到。如果你发现你没有使用任何受限制的模块, 那关掉这个服务没事。
31. lvm – 我没有使用逻辑卷所以我将此服务关闭。让它开启如果你 *确实* 有lvm(lvm是逻辑卷管理器在此不再扩充).
32. makedev – 打开它。
33. mdamd – Raid管理工具。不使用Raid所以我将此服务关闭。
34. module-init-tools – 从/etc/modules加载扩展模块。你可以研究/etc/modules文件查看是否有一些你不需要的模块。通常我们将此服务开启。
35. networking – 在启动期间通过扫描/etc/network/interfaces文件增加网络接口和配置dns信息。让它开着。
36. ntpdate – 通过ubuntu时间服务器同步时间 。在开机的时候我不需要它,故我关掉了此服务。
37. nvidia-kernel – 我自己编译了nvidia驱动,所以此服务对我没用。如果你从受限制模块中使用nvidia驱动,那打开此服务。
38. pcmcia – 激活pcmica设备。我将此服务打开在S运行等级而不是分别在2,3,4,5运行等级打开此服务,因为我觉得起先让硬件设备准备更好。如果你在使用没有pcmica卡的台式机的话,请关闭此服务。
39. portmap – 管理像nis,nfs等等之类服务的守护程序。如果你的笔记本或台式机是纯粹的客户端,那么关闭此服务。
40. powernowd – 管理CPU频率的客户端程序。主要用于支持CPU speed stepping技术的笔记本。通常如果你在配置一台笔记本,你应该开启此服务。如果是台式机,那此服务应该没有用。
41. ppp and ppp-dns - 对我没用,我不使用拨号。
42. readahead - **感谢 mr_pouit!** readahead似乎是一种“预加载程序”。在开机时它将一些库文件加载到内存,以便一些程序启动的更快。但是它给启动时间增加了3-4秒。所以,你可 以留着它…或者不。**更新**,经我测试我觉得加载程序没有什么不同。所以我决定关闭此服务。如果你有打开此服务的理由,那就打开它 。
43. reboot - 别更改它。
44. resolvconf – 按照你的网络状态自动配置DSN信息,我将它打开着。
45. rmnologin – 如果发现nologin,那么去除它。此情况不会在笔记本上面发生,所以我摆脱它。
46. rsync – rsync守护程序. 我不打算在我的笔记本上使用rsync协议,所以我将其关闭
47. sendsigs – 在重启和关机期间发送信号。顺其自然。
48. single – 激活单用户模式。顺其自然。
49. ssh – ssh守护程序。 我需要ssh,所以我将此服务打开。
50. stop-bootlogd – 从2,3,4,5运行等级停止bootlogd。顺其自然。
51. sudo – 检查sudo 状态。我没在一台笔记本或者台式机客户端上看到任何使用sudo的好处,因此我关闭了它。
52. sysklogd - 顺其自然。
53. udev and udev-mab – 用户空间dev文件系统(userspace dev filesystem)。好东西,我将它们打开。
54. umountfs - 顺其自然。
55. urandom – 随机数生成器。可能没什么用处,但是我留着它。
56. usplash - 嗯,如果你想看到漂亮的开机画面,顺其自然。 无论如何沃关闭此服务了。如果你想关闭它,你也可以编辑/boot/grub/menu.lst文件注释掉splashimage行,除去开机splash核心选项。
57. vbesave – 显卡BIOS配置工具。它能保存你显卡的状态。我将其开启。
58. xorg-common – 设置X服务ICE socket。我将其从在S运行等级开启移动到2,3,4,5,运行等级。如果我引导到单用户模式,那我不需要此服务。在最初引导期间这种方法将不占用时间。
59. adjtimex – 这也是调整核心hw时钟的工具。通常你不会在开机列表中看见它。在非常少有的情况如果你确实在开机进程中看见它了,事出有因,因此最好顺其自然。在我的情况里,它是关闭的。
60. dirmngr – 证书列表管理工具(certification lists management tool)。和gnupg一起工作。你必须看看你是否需要它。在我的情况里,我是关掉它的。
61. hwtools – 一个优化irqs的工具。不确定打开它的好处。在我的情况里,我是关掉它的。
62. libpam-devperm - 在系统崩溃之后用于修理设备文件许可的一个守护程序。听起来不错,因此我打开它了。
63. lm-sensors – 如果你的主板内建一些传感芯片,通过用户空间(userspace)查看hw状态可能是有帮助的。我运行了它,但是它提示“没有发现传感器”,因此我关闭 了此服务。64. mdadm-raid – 作用和mdadm服务相同。用来管RAID设备。如果你没有此类设备,那尽管关掉它好了。
65. screen-cleanup – 一个用来清除开机屏幕的脚本。嗯,是否关闭它有你决定。在我的情况里,我打开它了。
66. xinetd – 用来管理其他守护进程的一个inetd超级守护程序。在我的系统里,xinetd管理chargen, daytime, echo和time (在 /etc/xinetd.d 目录找到的),我不关系任何一个,因此我关掉了此服务。如果在xinetd下你确实有一些重要的服务,那打开它。

III.修改 /etc/inittab 文件
代码:
vi /etc/inittab
然后注释掉tty4,tty5, 和tty6。只留下tty1, tty2,和 tty3.。对于笔记本或台式机用户3个终端应该足够了。保存文件。

IV. Ok,好,我们可以重启计算机并看看它变的如何了。从我测试来看:在我停止大量服务之前,引导到终端整个过程大约花费了85到90秒。 (在那时,我也打开了我不需要的samba和nfs服务。 我也将它们关闭了)。之后,整个过程花费了50秒。我有一台 P4M 1.8G CPU的笔记本。一些高档台式机或者笔记本应该花费更少时间。

**更新**: 加速/打扫系统重启或关机进程
1. 通过以下代码运行sysv-rc-conf:
代码:
sudo sysv-rc-conf
2. OK,睁开你的眼睛并仔细寻找那些在所有运行等级都没有“X”的服务。(所有运行等级包括 1,2,3,4,5,6, 和S), 一个一个的把它们写下来。在这里千万别出错。再你搞定以后再来一遍。
3. 退出sysv-rc-conf。
4.
代码:
cd /etc/rc0.d
- 此目录关于系统关机进程。
5. OK, 现在开始
代码:
ls K*
将列出所有以大写K开头的链接。比较你的列表,将你列表中每个包含服务名的文件名改为小写k开头。例如,在你列表中你有一个ppp服务(意思是说ppp将在所有运行等级关闭),然后你可以这样做:
代码:
sudo mv K00ppp k00ppp
你只要将大写K改成小写k就好了,保留其余的。将此举应用到你列表中存在的所有服务 。
6.
代码:
cd ../rc6.d
- 此目录关于系统重启进程。
7. ok,你应该也看到了相似的东西了吧,因此在此做和rc0.d中同样的修改。
8. 现在,你的重启和关机进程被清理了,你的重启和关机过程将变的更快。

关于什么是你要做的已经相当明了了。在每个运行等级/etc/rc和/etc/rcS脚本通过扫描每个链接是否以大写S开头来决定开启与否,通过 扫描每个链接是否它是以大写K开头来决定停止与否。因此对于重启和关机运行等级,我们更关心的是大写K开头的链接,因为那写服务不运行在所有运行等级,不 必停止他们。它们更本没有运行。如果有一天你想重新开启其中的一些服务, 只要将小写的k改为大写的K即可。就这些了。

无论如何,它不适用服务器,但是我确实在我的一台拥有2.7G P4 ,1.5G内存的服务器上测试过。它将整个启动过程缩短为31秒。我用我的手表计算的。而且,其中还包括了开启的ftp服务器和nft服务器。

原文http://www.ubuntuforums.org/showthread.php?t=89491
technorati tags ubuntu Tags: ubuntu

非root使用zhcon

首先我是突然明白了一个事情,为什么我用了vga=xxx之后zhcon突然能正常工作了,原因应该是启用了framebuffer.

后来发现我的zhcon不能用C-A-H,也不能切换输入法,网上一查说非root使用都不正常。
我sudo zhcon一试果然正常了,于是乎chmod g+s它,再运行时就正常了。

不过还有问题,就是提示符,之前不论是用原来的用户还是root,提示符都是正常的,是否显示用户名和电脑名并不重要,不过不显示路径太不爽了。

最后本决定放弃了,又把/usr/bin/zhcon的suid改回来了,但是突然发现非root也正常工作了!很神奇,但是不知道原理。但是,重启后又不行了。。。唉。

让pdftohtml支持中文

没装fbgs时,查到pdftohtml和pdftotext可以转pdf为html和txt
不过对中文识别有些问题,我有几个用acrobat转doc成的pdf,用pdftohtml就能识别中文,而自己用latex写的就不行。

有个参数-c很搞笑,pdftohtml不认中文时,就把它们转成图片放到网页中。
另外有个参数是-enc,感觉不大会用,总说couldn't find unicodeMap.. “猜中”个UTF-8可以用,但是仍然不能正确转换。

原来我的pdftohtml是poppler-utils里的,后来把它卸了,装了xpdf一系列东西,以及一个单独的pdftohtml.
之后有一些变化,比如pdftohtml和pdftotext不需要参数就能正常转换的那几个pdf(说是用acrobat转的),现在必须用参数-enc才可以,而且totext用-enc GBK可以,而tohtml用-enc GBK有乱码,用-enc EUC-CN才行。
另外/etc/xpdf有一些unicodeMap文件,定义了一些unicodeMap,然而用在我自己的pdf上还是不行。

最后我又改回poppler-utils了,还是觉得它提供的pdftohtml好使。而且-enc命令也可以用,这应该是某个xpdf的包支持的。(注意,我没有完全卸载xpdf的包,只是把和poppler-utils冲突的卸了)

今天发现了cmap宏包,说是可以让生成的pdf中的文字支持复制粘贴。不过我试过,没有用。
然后发现了ccmap宏包,这个是针对中文的,是cct宏包的一部分。源里没有这个东西,于是我到http://lsec.cc.ac.cn/cgi-bin/viewcvs.cgi/cct/ccmap/把里面的东西全下载下来(其中Makefile和t1.tex可以不要,另外Attic里面的文件也要下来),放到/usr/share/texmf/tex/latex/ccmap(具体要看tex的安装目录),把包解开,最后运行texhash
现在在.tex文件里加入\usepackage{ccmap}(我记得cmap要求是在\documentclass后紧接着就调入cmap,不知道ccmap是否也需要这样),再用pdflatex编译,哇!出现中文了,只是默认是utf-8输出的,用-enc GBK选项就好了!

最后,根据一个同学的说法,本质不在于cmap还是ccmap,只要有那些.cmap文件就行了,我试了过了,的确是这样,现在用\usepackage{cmap}也可以了。

2007-04-20

Linux 控制台工具箱

参见标题链接

由于我机器太差,所以决定尽可能抛弃图形界面,而尽量在控制台工作。

我新安装的,比较实用的有
mp3blaster 听mp3
fbi 看图
fbgs 看pdf
w3m 浏览网页

其中fbi,fbgs需要framebuffer的支持,网上经常会说Linux默认没有启用framebuffer,需要重新编译,可是我的ubuntu 6.10似乎直接支持,只要在grub里加vga=xxx就可以了,具体见之前的文章。

另外可以装w3m-img让w3m支持图像,我现在是在图形界面下的console里试成功了,不过纯控制台还不行。

mplayer可以用framebuffer放影片, 参数是-vo fbdev, 很不错.

2007-04-19

修改Linux控制台分辨率

修改/boot/grub/menu.lst
找到kernel xxx 一行,在末尾加入vga=792一行,即可得到1024x768x16M分辨率
不过我的机器792不行,791可以
具体数据如下表







640x480 800x600 1024x768 1280x1024

256
769 771 773 775

32K
784 787 790 793

64K
785 788 791 794

16M
786 789 792 795

另外发现把分辨率调高后zhcon也能用了,真不错

2007-04-16

Linux 字体安装外一篇

之前提到过我在Linux安装字体的方法,就是在~里建个文件夹,然后跑到/usr/share/fonts里建一个链接,最后执行三个命令,其中最后一个是fc-cache

不过今天给同学弄,一开始没弄好,fc-cache似乎不大管用(mkfontdir和mkfontscale都正常工作),然后用 -v 选项发现它根本没有扫描我在/usr/share/fonts里面建的链接。不过仔细阅读发现它会扫描~/.fonts,于是把/usr/share/fonts里新建的链接删掉,然后把~里的字体文件夹改为.fonts,再运行一次fc-cache就ok了.

想反观我的安装过程,却发现首先fc-cache就有问题。manpage是正常的,可是fc-cache不管怎么运行都是直接退出,-v选项不管用。想看版本,-V不管用,然后用fc-cache --help发现可以用--version,但是显示程序名为'true',而且/usr/bin/fc-cache是个指向/bin/true的链接。最后man一看,竟然是'true - do nothing, successfully'. 一开始认为是package没装好,用aptitude重装不管用。而且fontconfig这个package的其他命令如fc-list可以使用。最后没办法了,直接打fc-然后tab匹配,发现个fc-cache.distrib,一运行,竟然是fc-cache,估计这个是重名问题,只是不知道true是干什么用的。

这样说来当时我运行的fc-cache很可能就是这个true -- 什么都不工作,竟然还能装上字体,很神奇。

我在我的机器上运行fc-cache.distrib -v发现它确实会扫描我在/usr/share/fonts/里建的链接(也会扫描~/.fonts)。但同学的不会。后来看一下版本,我的是2.3.2,他的是2.4.2,估计跟版本有关。不过他的fc-cache没有manpage,所以具体原因就不得而知了。

总之,装好了也就行了。

chroot 妙用

同学的机器出问题了,开机总出"Kernel panic",估计是内核有问题,但是grub是好的,因为Windows还可以进去。

一开始有个想法,就是用LiveCD启动,然后用aptitude更新,不过考虑到它应该会把文件写在临时的/里,而不是硬盘里,所以本质上不起作用。

后来那个同学Google到了chroot命令,恰好满足了这个要求,这时只要把硬盘mount进来,然后chroot过去,最后aptitude更新一下,ok了!

神奇的chroot,为什么之前没发现?

2007-04-15

typespeed

ubuntu源里有个程序叫typespeed,是我想搜一些打字游戏时发现的。

可以说是横版的tt,但也稍有不同

不过,这个竟然也能联网。我跟同屋一人经常联网打,有时觉得比《死亡打字员》还好玩,呵呵。

不知道是否最近打字游戏都有联网的趋势。

strtoul 和 errno

系统为Linux

strtoul 返回的时候,如果输入字串错误或溢出,会设置errno为ERANGE, 如果是过大溢出,则返回值为ULONG_MAX.

不过有一点,就是调用方在调用strtoul之前需要自己手工把errno设为0,这个manpage里说了,不过已开始我没看到,害我折腾了好久。。。

其他类似函数strtol之类应该也是这样吧。

2007-04-13

让pdflatex支持中文

之前是把latex弄的支持中文了,我指的是用latex生成dvi,然后用dvipdfmx转pdf, 我记得当时
dvipdfm不支持中文

现在需要pdflatex了,主要是因为添加图片的原因。不过这个一直没成功,说是找不到字体。

按理说latex+dvipdfmx能找到字体,pdflatex应该也行,可是事实不是。
经过实验,我发现utf8的用pdflatex可以编译(我用的是cyberbit字体,见之前的文章),但是
GBK的不行(这个是用windows字体转的)。

在网上查,并和同学讨论,尝试了updmap命令,不过似乎把dvipdfm弄好了,pdflatex还是不行。

最后发现pdflatex的提示信息显示它读取的配置文件在~底下,而我从来没弄过这个,估计是某个程序自动生成的(也有可能是updmap),然后就把它删了。这时发现pdflatex竟然支持GBK字体了。

看来是用户配置覆盖了全局的配置。但是这次成功跟updmap有没有关系就不得而知了。以后再试吧。

2007-04-07

死亡打字员

The Typing of The Dead

昨天刚换来键盘(刚买的就出问题了。。。),想试试看,然后搜打字游戏,发现了这个。

一查有两个可以下的版本,一个90多M,另一个230多M,那当然下90多的了(一般我肯定不这样,但是90M的说跟230多M的结果一样)。

这是Sega出的,记得最初是PS的版本,另外这个游戏改自第一人称射击游戏The House of The Dead。玩起来很像大型游戏,我想主要原因就是无需自己控制脚步,主角会自动行动,而且遇到怪物时会停下来让你打。

它有个联网功能,我跟同学时没成功,然后google一下,有人说安装时应去掉"ati xxx(记不清了)",可我这个是国人处理过的(比如联网的界面竟然是中文的),安装时没有选项。唉。

后来决定下200多M的那个,于是有了上一篇文章。联网还没试,估计也不行。不过倒是发现了通关后,出现的工作人员名单竟然也能“打”,这真是奇妙的创意。

还是挺喜欢这个游戏的,是我玩过的第一个3d打字游戏。

想我玩过的打字游戏,印象较深的有如下几个

TT:dos时代最经典的了,不必多说
wt: 记得打字可以发声,也是dos时代的,是rpg吧,勇士救公主的类型
机器猫大字: Flash游戏,还可以
金山打字通: 凑合吧,只记得我初中时候还算喜欢玩--因为没有别的可玩
Typer Shark:Popcap的,也很好玩,主角潜水探宝,打鲨鱼
Alphattack: miniclip 出品,有点像TT的风格,还不错
The Typing of The Dead: 刚说过

嗯,还行,不算太少

迅雷99.9%

昨天用迅雷下《死亡打字员》,速度还不错,但是到了99.9%后竟然死活不动了,停止-继续法也不奏效。

如果是视频也就算了,凑合能看就看了,可是这个是个exe,还是安装包。重新下真是很不甘心。

开始认为可能是下载资源把我屏蔽了,后来试着重新下(注意备份.cfg和.td!),发现可以下载。

直接改后缀发现没有图标,然后用UltraEdit看,发现开始约0x8860字节均为0,然后抱着试一试的想法用迅雷的预览模式下载,下了一阵子后再用UE看,那部分都有数据了。就打算直接把两个文件拼起来。

但是这个文件太大了,UE直接拷慢死了,(实际上我也试了几次,都没拷成功,不是拷得乱七八载的就是只给我拷前两个字节)。没办法,写个cpp吧,运行。然后再看,哇,出现图标了。。。

运行。。安装。。。一切正常!真是个小奇迹。