11/29/2006

迁至新站点

点这里访问新站点 http://www.herofit.cn

谢谢支持

11/15/2006

linux下刻录建议

gnome中集成了CD/DVD creator,用它我们就可以完成基本的刻录操作了。
昨天刻了好几次发现,直接拖动文件刻录总是到刻一会儿就会出现
write failed: Resource temporarily unavailable
反复几次都出现这样的错误,废了几张盘。还有CD/DVD creator不能正常地探测刻录盘的容量。
因此,为了少刻废盘,建议先将要刻的东西先做成iso镜像,这样虽然会多花十分钟,但刻废盘的概率会大大降低。CD/DVD creator,k3b等都可以制作iso。

我的刻录机是通过IDE2USB连到电脑上的。经实测,刻录速度在5x到8x之间(是U口的速度限制吧)。刻一张4G的盘一般需要6分钟左右。

另外我想,之前刻盘失败的原因是不是因为/tmp太小呢?

11/13/2006

linux下继续CS

CS是上大学来玩的第一个游戏,到现在还是最喜爱的游戏。
但是,自从用了linux后,不能再像以前那样痛快淋漓地在CS中拼杀了。
早就听说,linux可以通过cedega这个模拟器可以玩windows下的大部分游戏。
是的,真的可以。但在显卡没有3D驱动时,帧率似乎没上过4fps。
当时装个3D驱动真是很难,非常难……
没想,在第N次毫无希望地尝试时,成功了。从此,CS可以天天打了,鼠标感觉和win下有些不同,但问题不大,画质,流畅度不差于win下,不过碰到烟雾弹时,就成幻灯片了(1.6,1.5未知)。
这样过了一段时间,觉得和机器人打有些不爽了。 怎么办呢?HF应该是用不了了。于是想尽一切办法动员室友。终于动员好了,却发现服是怎么也连不上win下的服务器,win下也连不上我建的(忘了什么错误提示了)。网上搜了一番,没什么收获。想想也是,我这么干的人太少了……
本来说好1.5,虽然最初打的就是它。 但那天,看到一个只有100MB(未压缩)的CS1.5,居然又想试一试了。当时没想用1.5成成功局域网对战的,但今天一试,真的可以。wine和cedega都可以,速度都差不多。现在爽了,另外也突然发现原来周围寝室都只玩1.5的,拉人还方便些!
提一下crossover office,模拟一般程序,CS却不行。因为它不像其它模拟器那样忽略cs加入时那个html窗口的显示,结果就是一直卡在那儿,CPU占用率100%
最后检讨一下:机器上的两个CS都是D版的(是不是这个导致在1.6下无法对战呢?)。

10/29/2006

永中office 2007正式版试用

今天,下了正式版试用版。并在gentoo下安装试用。

和beta相比,有几处进步:
安装过程中文不乱码;
正确地生成了快捷方式;
修复了剪贴板BUG;

存在的问题:
安装过程最后仍然异常退出,与beta版相同;
使用时容易异常崩溃,尤其是在scim启动时。

总体来说,非常优秀。

相关链接:
beta剪切板补丁
永中集成Office 2007 beta精简版安装

10/24/2006

2006年10月常见linux桌面发行版关注度比较
































































桌面发行版google关注度baidu关注度诞生时间
Debian150,000,0001,230,0001993
SUSE64,300,000818,0001998
Ubuntu63,300,0001,140,0002004
Fedora Core47,900,000350,0002003
Gentoo30,600,000310,000?
Mandriva23,100,000101,0002005
Slackware20,600,000178,0001993
红旗Linux1,070,000721,0001999
MagicLinux142,00033,5002004?

采集时间:Tue Oct 24 13:15:45 CST 2006

今年九月份,我发了第一个关注度比较表格。和九月份相比,我们看到gentoo向上串了两位,Gentoo和Slackware对掉了位置;而在国内,情况前三名的关注度都几近翻翻,优势越来越明显。
相关网址:
http://herofit.blogspot.com/2006/09/2006linux.html

10/22/2006

gentoo安装笔记

我觉得应该把主流的linux版本都试一下。前些天无意到gentoo区看了几篇置顶帖,有些触动,后来又去gentoo官网看了一些安装文档,于是决定装个gentoo试试。第一次安装,还是准备不足,碰到很多麻烦。一路摸索过来,虽然还有一些问题没有解决,现在终于得到一个可用的系统了。
下面简单写一下我经历的安装过程:

我先到http://www.gentoo.org/main/en/mirrors.xml挑了一个镜像站点,然后下载livecd-i686- installer-2006.1.iso,我还下了文档中提到的stage3(其实不用下)。 检验下到的iso镜像,无误后刻成光盘。

用光盘启动电脑,我不知道竟然是启动到GUI模式的(这下我才明白为什么叫livecd)。

等10 秒,默认以gentoo登陆。 点击桌面上安装图标启动安装程序(我启动的是gtk+的),然后进行一系列选择。很遗憾,我第一步就选错了,安装模式选成了默认的。于是每次到17步的install都会出现一大堆问题。主要是分区出的问题,因为我在安装前把系统中放有stage3文档的分区挂了上来,因为有一步需要选择stage3文件的位置。

几次失败后,我决定先在安装程序外分完区,再进行安装。 按ctrl+alt+f1换到终端1,看到已经以root登陆。
passwd

换一个root密码。然后按ctrl+alt+f7回到GUI下。
su

切换到root身份。
fdisk /dev/hda

开始分区。原来装ubuntu时交换空间太小了,待机后经常起不来。于是先把swap及它的后一个分区删掉,然后建立520MB的linux分区,此处为 /dev/hda9;再建立一个100MB的linux分区,此处为/dev/hda10;最后把剩下的划为/dev/hda11,大小为7个G左右。
重启,获得root权限后开始建立文件系统。
mkswap /dev/hda9
mkfs.ext2 /dev/hda10
mkfs.reiserfs /dev/hda11

当时第一步忘了,走了些弯路。

分好了,重新运行安装程序,老说设置路由失败。 后来在root运行安装程序,同样出现这个问题。设成dhcp后又出现其它的问题。

没办法,只好看光盘上的文档。 突然看到pdf中提到一句话,第一步应该选择“network-less",于是按它说的做。由于是试验性的,而且文档及安装程序中提示“不联机,可能无法选择一些软件包”,所以在后面的选择软件包的时候我什么没有选。

挂载点选择时,不小心把想要的/mnt/hda1写成了/dev/hda1,结果又出错好几回。郁闷。

后来总算把gentoo装上了。 一重启我都郁闷了,只有字符界面?! 到现在我也一直在想,是我当时没把x11,gnome等选上的原因,还是这就是gentoo的特色(谁来解释一下?)。

不管那么多了,开始简单试一试先。
先看一下能上网不?很遗憾,不能,根据gentoo_network_configuration.txt的说明,把/etc/conf.d/net改成类似下面的样子。
modules=( "ifconfig" )
config_eth0=( "219.216.xxx.25 netmask 255.255.255.0" )
routes_eth0=(
"default via 219.216.xxx.254" # IPv4 default route
)
/etc/init.d/eth0.net start

提示没有网络设备。
手动加载网卡驱动。
modprobe 8139cp
modprobe 8139too

这下网卡驱动起来了。避免麻烦,我将两个模块都加入了/etc/modules.autoload.d/kernel-2.6,让系统启动时自动加载(后面发现,8139cp这个用不着)。
/etc/init.d/eth0.net restart

这下可以上网了。

接着试了一下光驱,手动挂载可以用,U盘也一样。

现在,开始一些关键性操作了。
先是编辑/etc/make.conf。
由于是教育网的,加入
GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo ftp://ftp.sjtu.edu.cn/gentoo"
SYNC="rsync://ftp3.tsinghua.edu.cn/gentoo/gentoo-portage"

可以加入多个镜像站点,之间用空格隔开即可。
编辑USE参数,这里我只是简单地把ipv6改成了-ipv6。
emerge --sync

这步相当于升级软件列表,第一次可能需要五分钟左右。
系统默认使用nano作为编辑器,非常不习惯。先把vim装上
emerge vim

现在开始升级内核。
emerge genkernel

genkernel是编译内核的工具,非常方便。一会儿要用。
下载推荐的内核源码。这里用推荐的gentoo-sources内核。
emerge gentoo-sources

用genkernel编译内核,如果你以前有内核的.config文件,可以用 --kernel-file=XX来指定。如果你想让genkernel编译后自动在grub中加入相应选项,应该将 /etc/genkernel.conf中的BOOTLOADER="grub"前的注释去掉。默认情况下,genkernel会将menuconfig 生成的配置文件存在/etc/kernels/文件夹下,再次编译时应该很有用。
genkernel --menuconfig all

选择适当的编译选项,把没用的去掉。把必须要的加上,比如我就把8139的网卡编译到内核里了。
由于编译期间什么也不输出,为了确保genkernel在工作。你可以再开一个终端用top查看cpu占用率或有否cc,make等程序在运行。
编译完后,手动检查/boot/grub/menu.lst中是否加入新内核的项目,没有则手动加上。
重启,用新内核启动。
shutdown -r now

或用ctrl+alt+delete重启。

用新内核启动。
我这里情况一切正常。不过/etc/modules.autoload.d/kernel-2.6原来加入的东西现在要去掉了,否则会用一个错误提示。

第一次系统彻底升级。
emerge --pretend --update --deep world|less

先用less看一下需要升级多少东西。
下载升级包。
emerge --update --deep world --fetchonly

先下载。有很多软件要装时,我习惯先下载完。
这时候出现了很大的问题。因为x11-misc/utils-macros需要从freedesktop.org下载,而我这里是教育网,无法直接访问。因为习惯了ubuntu源的概念,以为所有的软件包都是在源里的。因此我还一度认为这是gentoo源的bug,不过我不是唯一这么认为的人,因为官方网站上就有人把这个问题当bug提交上去了。后来到linuxsir发帖求助。通过大家帮助找到了解决方法--是用代理。
export http_proxy="ip:port"

然后就可以完成下载了。估计是emerge用的wget用了这个代理。
注意一个问题,如果把上面的export去掉,用set是可以看到http_proxy的,但很明显,wget看不到。不用代理时记得
unset http_proxy

升级。
emerge --update --deep world

把--fetchonly去掉就可以了。这里可能需要不少时间,特别是gcc,glic等。我发现gcc把对fortran的支持编上了,而我几乎没可能用到,下次编我会研究一下怎么让它不编上fortran,不知道加上-fortran行不行。
上面的过程最后可能会提示需要改写一些conf文件。这时候可以用etc-update帮忙。
etc-update

这个工具会试着自动解决问题,当它不能时,会要求你手动编辑。像这里的情况,我们要保留自己编辑过的/etc/conf.d/net,否则又得重新配置了。注意etc-update可能会经常用到。

现在,装上x window吧。
早就想xfce4了,今天就装这个(其实是考虑这个能小的,不用费太多时间)。
emerge xfce |less

看一下要装多少软件。好像是一百多个。多数是基本x window系统。
emerge xfce --fetchonly

下载先。
emerge xfce

安装。搞定后,就可以用startxfce启动xfce环境了。还有,我现在是在ubuntu里,不记得上面的命令里应该是xfce还是xfce4了,大家自己试。
xfce用的gtk+,所以一切看上去都挺像gnome的。
之后我又想把KDE或gnome装上,对比后KDE需要92个包,而gnome需要两百多个。本着经济的原则,我选择了KDE。下载很快就完成,但KDE的整个编译安装用了我9个小时。崩溃了!也直接造成我放弃安装gnome(下都下完了)。
试图运行startkde但没成功,不过运行starx后起来了xterm还是qterm什么的,在里面可以运行kdesktop类似命令启动起来。本来想换用gdm或kdm的,但一时没什么方向(当时都不知道查man X,也不知道gentoo.linuxsir.org上的文档版块有很多好东西),但xdm倒是很轻松的用上了。
rc-update add xdm default

图形登陆这些不是主要矛盾。 但我发现我必须安装firefox,因为xfce4下的那个kde下的全能家伙(k*)并不能显示所有的中文(字体就别提了),而且也几乎用不了ajax的东西。
emerge mozilla-firefox --fetch
emerge mozilla-firefox

这下所有中文都能显示了(字体还是糟糕)。下面安装flash插件。
emerge netscape-flash

一句话就搞定。
下面开始新建普通权限用户gahlong。
useradd gahlong
passwd gahlong
由于,我的gentoo用的是和ubuntu同一个分区作为/home,我担心gentoo把ubuntu的/home/ahlong覆盖了,所以我取名叫gahlong(后面发现这个担心没必要)。
用gahlong登陆提示没主目录。
mkdir /home/gahlong
usermod -d /home/gahlong gahlong

本来还准备chown的,但usermod好像已经帮我们做了。这下登陆正常了,不过还是有点不爽,我要改登陆名。
usermod -l ahlong gahlong

同样地,usermod也改了/home/gahlong为ahlong的了。
安装xmms。到现在还没有听到电脑出声呢。
emerge xmms

什么声音也不出。看起来声卡得配一下。编译内核时我已经把alsa编过内核的,还需要干什么呢?
emerge --search alsa|less

我把搜到的都往上装。
emerge alsa-drivers alsa-utils

编译alsa-drivers时提示内核已经有了,自动跳过。装上后一个后。可以开始配置声卡了。
alsaconf

选择就是了。
alsamixer

设置音量什么,不过好像不是必须要运行。
这样之后,xmms正常工作了。
如果普通用户不能使用声卡。运行
usermod -G audio -a ahlong
将用户加入audio组再重新登陆就可以了。
我要看电影,装mplayer。
emerge mplayer

一些包是从sf.net下的,所以又要用代理。
不过下到Blue皮肤时,提示验证码不对。试了几次都不对,这下郁闷了。后来看了linuxsir的gentoo解决之道。运行
emerge --sync

问题解决。顺便装上了mplayer。看来gentoo真是发展神速。差不多每天更新,源里都删掉很多又加入很多。
不过用mplayer看电影,放大或全屏时,掉帧相当严重,几乎不能看。mplayer也输出“你的机器太慢了”。试了几种输出驱动都没有改善。在ubuntu下我用的是gl2输出……对了,得装ATI驱动。

我下面的计划是安装显卡驱动,接着装WQY字体,接着把gdm什么的搞定。
安装ATI显卡驱动。
emerge ati-drivers

默认装上的是8.25.18,不过源里8.29.6也已经有了。一切都很顺利。不过运行
aticonfig --initial

有些问题,提示没有xorg.conf,去/etc/X11下看下,果然没有这个东西。我就直接拷了ubuntu的来用,居然也能用。
不过后面知道,这个时候应该做的是
X -configure

然后再aticonfig --inital
检查3D加速是否安装成功。
fglrxinfo

结果还是mesa,而且mplayer的表现也没有任何提升(重启后也是)。
eselect opengl list

发现系统选个还是mesa,于是
eselect opengl set ati

强制选成ati,除了list里变成了ati,没有任何实质性改善。不仅如此,fglrxinfo还不能给出相关信息了。
后面又做了很多尝试,比如说卸掉驱动,再手动运行ati*.run安装等等。
在网上找寻了很久,再结合X启动时的错误信息(一直被我忽略)。
终于搞清楚,是ATI和XOrg7.1的配合有问题,具体说是和AIGLX有些问题。网上很多人都遇到了这个问题,不过好像都没有实质解决办法。没办法,只能等fglrx或Xorg的下一版本了。不过这个问题幸好只是影响到3D加速,不影响2D加速。

不过看电影都不能流畅,我没信心再用下去了,还是等这个问题解决了再用了。虽然ATI大部分显卡都可以用开源驱动,但好像有点复杂,而且很可能从Xorg开始都需要重新编译(从gentoo文档上看的),耗不起那个时间了。

另外想提的是,emerge或者说portage挺先进的。和apt-get相比一个明显的优势就是可以多个emerge一起完全正常地运行。

gentoo真不错!推荐大家都试一下!

相关网址:
http://www.gentoo.org./doc/en/handbook/handbook-x86.xml
gentoo历史
gentoo常用镜像
gentoo中文文档(真后悔安装前没看)

10/10/2006

linux下文件的切割与合并

切割合并文件在linux下用split和cat就可以完成。下面举些实例进行说明。
1.文件切割
文件切割模式分为两种:
文本文件;
二进制模式。
1.1文本模式
文本模式只适用于文本文件,用这种模式切割后的每个文件都是可读的。文本模式又分为两种:
按最大文件大小切割;
按文本行数切割。
1.1.1最大文件大小切割
split -C 5k duanxin split
将文本文件duanxin按每块最大5k的大小进行切割,不打碎行。输出文件名类似splitaa, splitab……
1.1.2 按文本行数切割
split -l 100 duanxin split
每个分块100行,不考虑大小。日志分析时应该有用。


1.2 二进制模式
split -b 5k duanxin split
每个分块(当然,最后一个不保证)大小都是5k,基本不可读。任何类型文件都可以用这种切割模式。

2.文件合并
cat split* >newduanxin
不管用什么方式切割,合并方法不变。

3.其它
split可以用-a选项指定输出文件名的长度。如
split -l 100 -a 3 duanxin split
则输出文件出类似于splitaaa,splitaab。不指定时默认为2。
用-b或-C指定分块大小时,可用的单位有,b for 512bytes, k for 1Kbytes, m for 1 Megbytes.

参考资料
man split


10/09/2006

为firefox添加搜索引挚


最近发现用百度的次数越来越多了,可每次搜索都要打开网页太麻烦了。
于是想把百度引挚加到firefox的搜索框列表里。怎么加呢?
其实,搜索配置都在 /usr/share/firefox/searchplugin文件夹下,每个搜索引挚都是一个.src加上一个图片文件。另外,放在$HOME/.mozilla/firefox也可以。
于是就模仿着写了一个百度的,成功了。
效果见图。
如果大家懒得动手,就点击这里直接安装吧。

另外透露点技巧,ctrl+K切换焦点到搜索框上,ctrl+UP或DOWN可以选择要用的搜索引挚。输入关键字按回车即开始搜索。

参考资料:
http://wxforum.shadonet.com/

10/05/2006

多机单网卡共享上网--linux技巧

问题背景
学校采用透明代理上网方法。每个户头每月15元,流量限为20G。以前是8人用一个路由器上网,后来不知什么缘故,采用路由器共享上网方式变得非常不稳定(怀疑学校做了什么手脚?)。于是只好寻找其它途径。学校还有另外一种上网方式,即网通的100元包月上网卡,为了获得最大的利益,网通通过技术手段限制,使得不能用路由器共享上网。以前听说能够使用双网卡,实现多机上网,但实践多次,均失败了。

解决方案
利用linux内核的数据转发,及一块网卡绑定多个IP,NAT地址转换等特性实现。

网络架构
两个寝室共8台电脑,网络架构如下图所示。
交换器2其实是原来的路由器,只是WAN口空着,把外网与其它客户机一起接到LAN口上。
图中结构只是本寝室的实际情况,不表示一定要求这样。

服务端设置
首先,确保内核打开ip转发功能。
cat /proc/sys/net/ipv4/ip_forward
结果为1,则表示已经打开。为0则编辑/etc/sysctl.conf文件,将其中的net/ipv4/ip_forward=1前的#号删去。重启使改动生效。也可以直接用类似
echo "1" > /proc/sys/net/ipv4/ip_forward
的语句来使改动立即生效。
添加内网IP
ifconfig eth0:1 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0
添加转发列表
iptables -F

iptables -F -t nat
此两步刷新缓存,大部分情况下可省略。

iptables -P FORWARD DROP

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to <外网IP>

<外网IP>请作适当替换。
添加完后用iptables -L应该可以看到添加的一些条目。到此服务端设置完成。

客户端设置
IP:192.168.0.xxx
网关:192.168.0.1(上面设的内网IP)
DNS与服务端相同。

实际效果
客户端上QQ,PPLIVE,IE,以及firefox等工作正常。基本上可以说,采用TCP,UDP的程序均工作正常。但ICMP不正常(现象是不能ping通)。这时,客户端在外网看来即是服务端。
服务端和成为服务器前相同,无异样。CPU占用率不高。

存在的问题
不知如何控制转发速度。

其它
服务端在ubuntu6.06上调试通过。
指令多需要root权限,请注意。
建议将配置指令写到脚本中。
水平有限,谬误之处还请包涵。

参考资料:
打开转发功能
lsyer兄在红旗linux下的设置

Linux单网卡绑多IP

C语言标准函数库(C Standard Library)

标准C函数手册,写C程序时用的着。
CStdLib.html

相关地址:
www.utas.edu.au

10/01/2006

linux下PDF中文乱码问题--ubuntu一句话技巧

sudo apt-get install xpdf-chinese-simplified
xpdf是linux下常用的PDF阅读器,ubuntu默认装上了,但看中文文件档还有些问题。按上面的代码装上相应的包就可以了。繁体中文,还有日文都有相应的包。

9/26/2006

转换分区格式--linux技巧

好久不用windows,留着FAT32真是没什么用。为避免中文乱码及azureus-error中提到的那个恶心的错误,我一直计划着把FAT32转成ext3。
最初,我硬盘里共有三个FAT32分区。由于都有内容,只能慢慢整理,慢慢转换。
由于概念不清,基础知识不扎实等,走了很多弯路。
第一次转换
最初我是想能不能无损数据完成转换的,但没有找到相关资料。就想到了下面的方法:
  1. 用fdisk删除一个分区,然后再新建一个分区;
  2. 重启(fdisk提示说重启后才生效);
  3. mkfs;
  4. 修改/etc/fstab;
  5. mount -a;
可是实践时,出了大麻烦。执行完第一步后,机器已经起不来了,搞了半天才知道,第一步已经改变了分区表,hdaX的X很多都变了。于是用live-CD启动,上网找了一堆资料,终于在RecoveringUbuntuAfterInstallingWindows指导下搞定了。
第二次转换
也就是今天,我刚刚做的。
  1. umount /dev/hdaxx
  2. 用fdisk的t命令改变分区格式,改成83(linux);
  3. 重启;
  4. 用mkfs.ext3 /dev/hdax或mkfs -t ext3 /dev/hda建立新的文件系统;
  5. 修改/etc/fstab;
  6. mount -a;
成功了,但却无法往分区上写东西。
重启后就可以写了。
总结
要注意区别分区和文件系统,用fdisk只是为了改变分区格式,用mkfs才是建立我们熟悉的vfat,ext2,ext3等文件系统。第一次做lfs时,我忘了改变分区格式,结果无论如何都启动不了lfs,重做了几遍,还好有备份。
不保证上述方法同样适用于你的系统。

参考资料
man fdisk
man mkfs
http://www.linuxmine.com/39733.html

9/23/2006

c++笔记--模板,成员初始化等

模板类,不能像通常的类那样将单独的实现文件放在一个cpp中。
如果非要这么做,就必须在每个函数前加上export关键字。形如:
export T& A::getNext(const T& any)
但export虽然是c++标准的关键字,但目前可见的绝大部分编译器均不支持它。详情请看参考资料。
因此,一般情况下我们应该将模板类的全部声明和定义写在一个头文件中。
当然,如果你不嫌使用时需要包含两个文件(即.h和.cpp)的麻烦,可以将定义单独写到一个cpp中。
从模板类继承时,不要忘了尖括号。如:
template <class T>class B:public A<T>
习惯上在template另起一行,函数也是如此。即:
template <class T>
class B:public A<T>

在构造函数中初始化成员变量时,应该尽力保证初始化顺序和声明顺序一致。
如果不注意的话,则可能出现类似这样的错误或警告。
:: === cb, Debug ===
testdriver.cpp:110: instantiated from here
LinkedList.h:37: warning: count will be initialized after
LinkedList.h:75: warning: when initialized here
:: === Build finished: 1 errors, 3 warnings ===
但很奇怪的是,已经生成了可以运行的可执行文件。
另一个例子请看参考资料。

参考资料:
export关键字
http://gcc.gnu.org/ml/gcc-help/2005-04/msg00317.html

gaim2.0内置QQ协议了--多截图






我现在用的版本是svn20060917。以下是我看到的主要改进:
一:内置了QQ协议,添加帐号方法如图示。好像还不能收发文件;
二:用户昵称用不同颜色显示,平滑移动,及一些小的界面改进
三:能显示google talk好友的图片了。

另外,tencent最近搞了个webqq,竟然……

参考资料:
http://www.zoudan.com/doc/qq_gaim.htm
http://gaim.sourceforge.net/

9/22/2006

ubuntu dapper下安装xgl--还差一点

(此外省略前期准备,以后再补充)

关键的安装代码
sudo apt-get install compiz xserver-xgl libgl1-mesa xserver-xorg libglitz-glx1 compiz-gnome

结果输出:
Password:
Reading package lists... Done
Building dependency tree... Done
xserver-xgl is already the newest version.
libgl1-mesa is already the newest version.
xserver-xorg is already the newest version.
libglitz-glx1 is already the newest version.
compiz-gnome is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
compiz: Depends: compiz-plugins (>= 0.2) but it is not going to be installed
E: Broken packages

没办法,源里没有csm包,所以安装不能继续。我只能先不安装一些东西,代码如下:
sudo apt-get install xserver-xgl compiz-gnome libglitz-glx1 libgl1-mesa
……
……
……
经过一番努力,xgl终于成功了,可是一点特效都没有,只是窗体的标题栏全都消失了。
用gconf-edit看了一下,一个plugin也没有加载成功,汗……
于是开始疯狂google,在参考了不下100个网站后,宣告放弃。
我觉得是xgl的源有问题,并且相信过几天就能修复。等等吧!

9/20/2006

linux下打拳皇(KOF)--ubuntu技巧









安装
sudo apt-get install xmame-x

下载rom
kofXX.zip和neogeo.zip放到/usr/share/games/xmame/roms
如果是在KDE下,路径可能需要相应的改变。一般是在/usr/lib/games/xmame/roms

运行
xmame kofXX
其中XX为96,97等等。也可以用完整的文件名,比如kof97.zip
部分机器在这里可能会出现黑屏的情况,这时只要按Ctrl+alt+F1切换到其它终端,然后再按ctrl+alt+F7回到图形界面即可。应该是xmame太旧了,我正在下最新版本的源码……

设置键位
按TAB即可开始设置键位。从设置界面里看到,可以两个人对打。

图形界面前端
如果你想方便地设置显示及声音等选项,建议安装一个图形前端。比如gxmame,kxmame。我这里只介绍gxmame,源里好像有点问题。建议直接去sourceforge.net/projects/gxmame下载最新的0.35b2的deb预编译包。
装上后,会在游戏菜单里面生成相应的项目。单击界面,选择“available”,然后再点击"Refresh",然后再双击相应项目就可以开始游戏了。个人感觉属性里,display的resolution最重要了,在这里可以选择放大的比例。
需要注意,gxmame也是调用xmame,所以使用它也可能会有黑屏的现象。解决方法见上文。

可能遇到的问题
除了已经提到的黑屏问题。rom文件的有效性问题是最大的问题,网上下的zip并不是每个都好用的,只有下下来试玩一下才知道。gxmame也能帮我们验证有效性。

输出模式
共有三种,分别是x11,SDL,openGL,分别可以用ctrl+insert,ctrl+home,ctrl+pageUP切换出来。选择输出模式主要是为了降低CPU占用率,避免声音断断续续,节省系统资源。如果显卡3D驱动已经安装,选择openGL可以使CPU占用率保持在30%以下。另外alt+pageDown可以切换到全屏模式。

截图
见最开始部分。除了neogeo,CPS1,CPS2游戏也都可以玩。


相关资源:
http://x.mame.net/
sourceforge.net/projects/gxmame

9/18/2006

ACE安装配置--ubuntu技巧

ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。
不再继续介绍了,我来介绍一下ACE在ubuntu下的安装,并运行一个简单的示例。
sudo apt-get install libace-dev libace-doc libace5.4.7c2a libssl-dev
这样,一个完整的开发以及运行环境就建立起来了。
下面,写一个简单的程序来体验一下这个框架。


#include <ace/INET_Addr.h>
#include <ace/SOCK_Connector.h>

#include <ace/SOCK_Stream.h>
int main(int argc, char *argv[])
{
const char *pathname =
argc > 1 ? argv[1] : "/";
const char *server_hostname =
argc > 2 ? argv[2] : "www.herofit.com";
ACE_SOCK_Connector connector;
ACE_SOCK_Stream peer;
ACE_INET_Addr peer_addr;
if (peer_addr.set(80, server_hostname) == -1 )
return 1;
else if (connector.connect( peer, peer_addr) == -1)
return 1;
char buf[BUFSIZ];
iovec iov[3];
iov[0].iov_base=(void*)"GET ";
iov[0].iov_len=4;
iov[1].iov_base=(void*)pathname;
iov[1].iov_len=strlen(pathname);
iov[2].iov_base=(void*)" HTTP/1.0\r\n\r\n";
iov[2].iov_len=13;
if (peer.sendv_n(iov, 3) == -1)
return 1;
for(ssize_t n;(n = peer.recv(buf,sizeof(buf)))>0;)
ACE::write_n(ACE_STDOUT, buf, n);
return peer.close();
}

编译上面的程序:
g++ testace.cpp -o testace -lACE
运行:
./testace index.php www.herofit.com



最后提醒一点,ACE的授权许可证并不要求使用它的软件开放源码。

参考资料:
http://www.flyingdonkey.com/ace/
http://www.cs.wustl.edu/%7Eschmidt/ACE.html

9/13/2006

临时改变区域语言设置--ubuntu技巧

有时候,我们检查程序在不同的语言设置下的运行效果。
比如,在英文环境下,我想使用中文firefox,这时候我们可以
export LANG=zh_CN
firefox
又如,在中文环境下,希望使用英文版的dia进行类设计(原因是中文翻译的太不好,以致于根本理解不了),
export LANG=C
dia
C也可以是en_US什么的。

举这两个例子就是提供一个可以临时改变区域语言的方法,希望有点用。

9/10/2006

装上了suse10.1--更新中

经过昨天八个多小时的下载,终于把DVD镜像下来了。
今天刻成了盘,赶快装上试试。

安装大约需要一个小时左右。
桌面系统只能从gnome,kde等几个中选一个。--此描述不准确,可以选择软件包
由于以前没怎么用过KDE,决定熟悉一下。
不过总体感觉挺漂亮的,颜色搭配也挺谐调。
中文显示方面就是小字体有些模糊,其它的都好。--已解决,字体设成方正宋体12号即可
输入法scim(这里叫skim?)也装上了,不过汗的是竟然装了几十种语言共几百种输入法。
视频播放某些文件还有些问题(版本原因)。

目前发现的问题有:
无法用Fn+Fx调整系统音量
找不到设置桌面快捷键的地方(非标准KDE)。--已找到,可惜没找到定义打开命令行窗口的地方
播放AVI有声音无图像(准备从ubuntu拷win32codes)

现在正在看文档,熟悉一下基本设置。

用md5sum校验文件的准确性

一般我们安装linux都是先从网上下镜像,然后再硬盘安装或刻录到光盘上再使用。
在使用这些下载来的文件前,我们必须进行正确性检测。否则,很可能就浪费时间或浪费光盘了。
经常下载站点在提供内容本身的同时,还会提供一个叫做MD5SUM或类似名字的文件。
其实,这个文件就是做校验用。
下面就通过一个综合的小实例来说明使用md5sum的全过程。
要求:将/var/www下的文件由一个位置通过网络或移动硬盘传到另一台机器上。
步骤:
cd /var/www
md5sum * > MD5SUM

如果/var/www下含有文件夹,这里会有错误提示输出,形如:
md5sum: ajax: Is a directory
md5sum: apache2-default: Is a directory
md5sum: blog: Is a directory
md5sum: codeblocks: Is a directory
md5sum: download: Is a directory
md5sum: php100: Is a directory

我们查看一下到底生成了什么东西:
cat MD5SUM
这里是:
40491cfa725e9f612597e18e5cb5a731 cube-bot-0.32.tar.gz
71b29ffeaa264caecaeb6f30813814f5 hack2.js
d779f6b43832a6d65610840fbeb0c398 hack2.js~
9dccf462d245f55ac3e0cdb0e5401f5b index2.php
4afbe1cc2bd8eb97a4e6c51e6aaf5202 ipgw.py
af7788191a44f32a9d4aafa3aa7f61c4 md5sum
9dccf462d245f55ac3e0cdb0e5401f5b phpinfo.php
2883fddfd2a1c9a448ab03862beeda81 r.php
60880cf2774e5f54159f0e7555a6c723 r.php~
6bb2397f1cd9922c46e15c2253a99c27 s.html
d3e265f801b2f3b7fa37b5578ad83ffb s.html~
9175a6e91a1a909eae8baf532c44eccf ss.html
a6cc3964fb87d1b3ed3829b0c2d1b4c6 ss.html~
aee6dc4a6715f93747137c19d151c51c w21~
4e313605a6602d7c516ec6bb32a43bad w21.html
4e313605a6602d7c516ec6bb32a43bad w21.html~
20a76cde1afb88df632c5a13d0bff1c5 w2.html
a7f67a7d9b59e2c2dae6f917e9b59934 w2.html~
现在通过各种手段移到另一个位置。假设已经完成移动,我们现在要验证各个文件在移动过程中是否有损坏。假设文件夹的内容被移到了/tmp/test下:
cd /tmp/test
md5sum -c MD5SUM

此示例输出为:
hack2.js: OK
hack2.js~: OK
index2.php: OK
ipgw.py: OK
md5sum: OK
phpinfo.php: OK
r.php: OK
r.php~: OK
s.html: OK
s.html~: OK
ss.html: OK
ss.html~: OK
w21~: OK
w21.html: OK
w21.html~: OK
w2.html: OK
w2.html~: OK
如果输出结果全部是OK,说明内容没有改变。
这里,我们模拟一下传输出现错误的情况。
在r.php文件中做任意修改,这里只是在开头加一个空格。上述结果就变为:
cube-bot-0.32.tar.gz: OK
hack2.js: OK
hack2.js~: OK
index2.php: OK
ipgw.py: OK
md5sum: OK
phpinfo.php: OK
r.php: FAILED
r.php~: FAILED
s.html: OK
s.html~: OK
ss.html: OK
ss.html~: OK
w21~: OK
w21.html: OK
w21.html~: OK
w2.html: OK
w2.html~: OK
md5sum: WARNING: 2 of 18 computed checksums did NOT match
刚才的改动涉及了两个文件,所以这两个文件的验证都失败了。
如果删除某个文件呢?这里我把w2.html~删了,看看结果:
cube-bot-0.32.tar.gz: OK
hack2.js: OK
hack2.js~: OK
index2.php: OK
ipgw.py: OK
md5sum: OK
phpinfo.php: OK
r.php: FAILED
r.php~: FAILED
s.html: OK
s.html~: OK
ss.html: OK
ss.html~: OK
w21~: OK
w21.html: OK
w21.html~: OK
w2.html: OK
md5sum: w2.html~: No such file or directory
w2.html~: FAILED open or read
md5sum: WARNING: 1 of 18 listed files could not be read
md5sum: WARNING: 2 of 17 computed checksums did NOT match
需要提醒大家的一点是,文件较大时,需要的时间可能会很长!!!
比如我刚才下的SUSE-Linux-10.1-GM-DVD-i386.iso,验证时间都几乎花了十分钟。但考虑到数据的完整性和正确性,还是值得投入的。

参考资料与推荐阅读:
windows下的md5sum验证工具
http://www.stllinux.org/meeting_notes/1998/0319/node30.html
http://www.linuxclues.com/articles/01.htm
http://www.delorie.com/gnu/docs/textutils/md5sum.1.html