I am LAZY bones? AN ancient AND boring SITE

粘粘世界

《粘粘世界》是个游戏的名字,解谜类,画面可爱,声音也可爱.可玩性也不错:

中文名称:粘粘世界
英文名称:World of Goo
发行时间:2008年
制作发行:2D Boy
地区:美国
语言:英语
游戏类型:Action/Puzzle
官方网站:http://www.worldofgoo.com/

有windows和mac版本,也会有linux版本,不过目前还在beta阶段.
非开源(原价20$),嘿嘿,不过windows版本的可以完美wine~
我的几个截图:
worldofgoo1worldofgoo2worldofgoo4

WP升级到了2.7官方中文版

WordPress 官方在昨天推出了中文官方网站,这说明WP也越来越重视中文用户了,哈哈,真是个好消息.
然后我就马上下载了官方的中文版本,升级很简单,解压后直接上传文件,然后第一次登录后台,点一下升级数据库的按钮,就好了,你看到的已经是一个全新的后台了.
这个新的后台,更适合宽屏用户,编辑新文章的时候,不用只看到半边屏幕了,而且各个组件的显示与否和位置还可以随意调整呢,真是方便.

笔记本显示器屏保和电源管理完美解决方案

本文要实现的目标: 完美控制笔记本LCD的屏保和黑屏,具体地说是实现

1. 平时键鼠10分钟无动作,将LCD转入屏保;15分钟无动作,将LCD彻底断电
2. mplayer看电影的时候,持续不屏保不断电.
3. 按下 ctrl+alt+L 的时候,立即锁住屏幕并将LCD断电.

适用人群: linux用户(废话,我没条件测试BSD和其他*nux),gnome用户,compiz用户,用命令行启动mplayer的用户.当然如果不全符合,部分内容也是可以参考的,比如双击电影文件打开mplayer的用户,可以自己修改文件的打开方式;非compiz用户可以用其他方式绑定命令等.

步骤:

1. 在 /etc/X11/xorg.conf 文件的 Section “ServerLayout” 一节里,加上一行 Option “OffTime” “180” 数值也可以更大些,避免X的影响.
2. 在 ~/bin 下建立一个名为 mplayer 的可执行shell脚本,并把 ~/bin 加入$PATH,位置要在 /usr/bin 前面,不然就自己换名字吧.
脚本内容如下:

#!/bin/sh
 
gnome-screensaver-command -i -n "mplayer" -r "看电影呢!" &
/usr/bin/mplayer "$@"
mreturn=$?
kill %
exit $mreturn

3. 系统 – 首选项 – 键盘快捷键 里面取消”锁住屏幕”的键盘绑定.
4. 打开ccsm,在 General Options – Commands 里面,添加一个 ctrl+alt+l 键的绑定,命令如下:

gnome-screensaver-command -l; sleep 3; xset dpms force off

5. 系统 – 首选项 – 屏幕保护程序,将主题选为”黑屏”(当然看个人爱好,我觉得花CPU去绘制屏保,是种浪费,就选黑屏了).
6. 系统 – 首选项 – 电源管理,设置成15分钟后将显示器转入睡眠.
7. 完成了,哈哈~

一些解释和废话:
此方案里用到了 gnome-screensaver 的控制程序 gnome-screensaver-command ,我觉得很不错,不知道 xscreensaver 和 kscreensaver 是不是也有相应的命令,有的话KDE用户也可以用此方案了.
控制电源,用到了 xset ,没有安装的朋友请自行搞定安装.
mplayer的1.0rc2版本,号称有可以停掉 xscreensaver 甚至 gnome-screensaver 的选项,但根据我的试验,都无效,可能是因为的是SVN版本的mplayer的关系吧.所以不得不自己写个脚本搞定,脚本用于替换 mplayer ,如果你喜欢也可以简写成 mp 之类的.
另外,LCD用户需要注意一下了,其实由于LCD并没有电子束轰击荧光粉,所以适用于CRT的屏幕保护程序对LCD其实是很不适合的,根本起不到保护液晶单元和背光灯管的作用.何况,linux下好看的3D屏保,其实都蛮耗CPU的,如今都流行创建集约型社会了,都提倡节能减排了,所以,离开电脑的最佳选择是用黑屏屏保锁住屏幕+显示器断电.当然,也推荐CRT用户这么干.

整理了一下blog的主题

本blog的主题,原来是我自己根据 Minimalist 修改的,之前有些汉化不全之类的小问题,现在稍微修改了一下,也微调了一下css样式(不过用IE浏览,基本上还是惨不忍睹,不知道怎么修改,呵呵),算是个 1.01版本吧,呵呵.
如果你也喜欢这个主题,欢迎使用!
下载地址

glibc 升级以后,locale-gen 出现段错误

今早升级了 glibc ,etc-update 的时候 /etc/locale.gen 保留了原来的,然后 locale-gen 的时候就
/usr/sbin/locale-gen: line 264: 7515 Segmentation fault “${DESTDIR}”usr/bin/localedef ${LOCALEDEF_OPTS} -i “${input}” -f “${charmap}” -A “${ALIAS}” –prefix “${DESTDIR}” “${locale}” [ !! ]

已知 locale-gen 是调用 localedef 的,如下:

# /usr/bin/localedef -c -i en_US -f UTF-8 -A /usr/share/locale/locale.alias –prefix / en_US.UTF-8
Segmentation fault

而这个 /usr/bin/localedef 就是glibc里面的文件,大家有没有相同问题的?

另外,发现glibc 有这个 patch:1040_all_2.3.3-localedef-fix-trampoline.patch 删掉它也是一样的错。

目前临时的解决办法,是从别人那里拷贝一个同版本的二进制文件,替换掉自己的 /usr/bin/localedef ,然后locale-gen就好用了,系统也正常了,但是这样问题的原因仍然没有找出来.在 sir的gentoo版发了个帖子,看看能不能找到原因.

ext文件系统的文件大小杂记

事情是这样起源的:
今天用奔流下个电影,由于速度太快(都超过2MB/s了),怕被网管发现,也怕影响人家正常使用网络,我就把BT给暂停了,想看看到底下了多少,于是:

lily@LLY:~/benliud/Downloaded/Mission.Impossible.Trilogy/Mission.Impossible.1996.720P.HDVDRip.X264-TLF$ ls -lh tlf-missionimpossible1.720hdvd.mkv
-rw-r–r– 1 lily lily 4.4G 12-02 13:33 tlf-missionimpossible1.720hdvd.mkv
lily@LLY:~/benliud/Downloaded/Mission.Impossible.Trilogy/Mission.Impossible.1996.720P.HDVDRip.X264-TLF$ du -sh tlf-missionimpossible1.720hdvd.mkv
450M tlf-missionimpossible1.720hdvd.mkv

发现用ls命令看到的大小是4.4G,而du命令看到的却只有450M,于是我就纳闷了.网上找了一下原因,还是蛮好理解的,大致总结如下:
ls的大小应该是从 superblock 里面的文件描述里取的,这样的好处就是处理起来很快,不用去统计这个文件到底占用了多少block,而du命令则是 disk usage的缩写,是会去统计具体占用的block的.而这个文件下载完成以后,应该是有4.4G大的,但是目前还只下载了450M,所以文件描述里面的大小是4.4G,实际占用的确是450M.
而且,ls和du对块大小(block size)的处理,也有点不同,举例来说,如果文件只有1个字节,我们知道它也要占用一整个块,所以ls的时候的大小是1,而du的时候却会是4k.(这个4k是默认值,视所在分区文件系统的参数而定,分区的块大小可以用 tune2fs -l /dev/XXX 来查看.)
当然,ls和du都有相应的选项来改变自己的行为, ls -s 可以在第一列多显示一个实际占用的块大小(和du的值一样);du -b 也可以显示文件描述里面的大小(和ls的值一样),哈哈~

参考文章.

e-file 更新至 20081201

很多人反映不喜欢e-file依赖w3m,原因可能是觉得w3m多少有点大,其实我倒是觉得w3m蛮小巧实用的,但是对于一个百来行的脚本来说,依赖个w3m可能确实有点不太合适吧.于是一直想改成依赖curl,因为这个应该默认都有安装.
而且,Daniel老兄(我猜应该是 portagefilelist.de 的人)告诉我,portagefilelist.de 其实是支持 csv 格式输出的,这样对于我的脚本来说,简直是件天大的好事,因为省去了解析烦人的HTML了,哈哈.
于是很快就改好了新的e-file,目前已经更新至gentoo china overlay.
ChangeLog:

20081201:
去掉了w3m的依赖.

代码太长了,贴起来有些难看,呵呵.就不多此一举了,这里的代码应该马上也会更新: http://www.portagefilelist.de/index.php/Tools#e-file_.28serach_from_cmd_line.29

下载地址

更新了e-file

之前发布的e-file,看起来好像还是挺受欢迎的,没多久,就有人给写了ebuild文件,进了gentoo-china overlay.于是打算再稍微完善一下.
周末去了趟上海,也没空更新这个脚本,拖到今天,终于弄好了,呵呵.
ChangeLog:

20081125:
优化代码结构
增加本地已安装版本的显示
增加Homepage和Description的显示

老套路,贴代码和截图:

#!/bin/sh
#AUTHOR: bones7456 (bones7456<at>gmail<dot>com)
##License: GPL
#e-file is like apt-file for gentoo, but data is online
VERSION=20081125
 
function printhelp(){
cat <<EOF
This is e-file ($VERSION)
	Usage: `basename $0` filename
EOF
}
if [[ $# -ne 1 ]];then
	printhelp
	exit 1
fi
 
URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result"
 
w3m -dump -cols 3000 $URL | awk '
BEGIN{
	FLAG=0
	FOUND=0
	"emerge --info | grep PORTDIR" | getline
	split($0,PORTDIR,/\"/)
}
{
	if($1=="dir" && $2=="package"){
		FLAG=1
		next
	}
	if($1=="Retrieved" && $2=="from"){
		if(FOUND){
			for(pkg in vers){
				split(pkg,ii,/\//)
				NF=0
				cmd="ls -tgGd --time-style=+%c /var/db/pkg/" pkg "* 2>/dev/null"
				cmd | getline
				if(NF==0){
					installed=0
				}else{
					installed=1
					install_time=""
					for(i=4;i<NF;i++)install_time=install_time " " $i
					install_time=substr(install_time,2)
					split($NF,install_arr,pkg "-")
				}
				NF=0
				cmd="(grep -h HOMEPAGE " PORTDIR[2] "/" pkg "/*.ebuild | tail -n 1)2>/dev/null"
				cmd | getline
				if(NF==0){
					HOMEPAGE=""
				}else{
					split($0,tempArr,/\"/)
					HOMEPAGE=tempArr[2]
				}
				NF=0
				cmd="(grep -h DESCRIPTION " PORTDIR[2] "/" pkg "/*.ebuild | tail -n 1)2>/dev/null"
				cmd | getline
				if(NF==0){
					DESCRIPTION=""
				}else{
					split($0,tempArr,/\"/)
					DESCRIPTION=tempArr[2]
				}
 
				setcolor(1,32)
				if(installed){
					printf("[I] ")
				}else{
					printf(" *  ")
				}
				clearcolor()
				printf("%s/",ii[1])
				setcolor(1,29)
				printf("%s\n",ii[2])
				setcolor(0,32)
				printf("\tAvailable Versions:\t%s\n",vers[pkg])
				if(installed){
					printf("\tLast Installed Ver:\t")
					setcolor(7,34)
					printf("%s",install_arr[2])
					setcolor(0,35)
					printf("(%s)\n",install_time)
					setcolor(0,32)
				}
				if(HOMEPAGE){
					printf("\tHomepage:\t\t")
					clearcolor()
					printf("%s\n",HOMEPAGE)
					setcolor(0,32)
				}
				if(DESCRIPTION){
					printf("\tDescription:\t\t")
					clearcolor()
					printf("%s\n",DESCRIPTION)
					setcolor(0,32)
				}
				printf("\tMatched Files:\t\t")
				clearcolor()
				printf("%s\n\n",files[pkg])
			}
		}else{
			print "No matches found."
		}
		exit
	}
	if(FLAG==1 && NF!=0){
		T=1
		split(vers[$1 "/" $2],vers_arr,/ /)
		for(i in vers_arr){
			if(vers_arr[i]==$NF){
				T=0
				break
			}
		}
		if(T)vers[$1 "/" $2]=$NF " " vers[$1 "/" $2]
		T=1
		split(files[$1 "/" $2],files_arr,/; /)
		for(i in files_arr){
			if(files_arr[i]==($3 "/" $4)){
				T=0
				break
			}
		}
		if(T)files[$1 "/" $2]=$3 "/" $4 "; " files[$1 "/" $2]
		FOUND=1
	}
}
function setcolor(a,b){
printf("%c[%d;%d;%dm",27,2,a,b)
}
function clearcolor(){
printf("%c[0m",27)
}
'


从图中看到的,其实 portagefilelist.de 的数据也是比较旧的,sys-process/dcron的版本还停留在 2.9 的年代,而本地安装的,早已经是 3.2 了.
脚本下载地址

重新用回官方A卡驱动

我的x1700卡,之前一直因为ati-drivers暂时不支持xorg-server,所以用的是开源驱动,但是开源驱动对我这个卡的支持真的是比较烂,没有3D加速,开不了compiz,glxgears也只有100FPS左右…所以之前一段时间,我还是经常回ubuntu下去,不知道ubuntu从哪里来的驱动,8.10的xorg-server也是1.5.2的,但是驱动却可以用…呵呵.
前几天,AMD官方终于更新了驱动的版本,而这个版本的一大重要特性就是开始支持xorg-server的新版本了,现在gentoo的portage里面也有了,所以我就理所当然得用回官方驱动了.
用回ati-drivers以后,一开始也有点问题,但是参考wiki,基本上就搞定了,哈哈,gentoo终于又可以compiz喽.
$ glxgears
12412 frames in 5.0 seconds = 2482.345 FPS
12551 frames in 5.0 seconds = 2509.578 FPS
这个也正常了.

e-file 根据文件名查询gentoo包的脚本

一直想在gentoo下实现一个类似ubuntu的apt-file的功能,幸好已经有 http://www.portagefilelist.de 这个网站了,就花了2小时写了个小脚本直接到这个站取数据了,感觉效果还可以,先发出来,算是预览版吧,以后会再完善的.
输出格式参考了 eix ,代码如下:

#!/bin/sh
#AUTHOR: bones7456 (bones7456<at>gmail<dot>com)
#VERSION: 20081120
##License: GPL
#e-file is like apt-file for gentoo, but data is online
 
if [[ $# -ne 1 ]];then
	echo "Usage: `basename $0` filename"
	exit 1
fi
 
URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result"
 
w3m -dump -cols 3000 $URL | awk '
BEGIN{
	FLAG=0
	FOUND=0
}
{
	if($1=="dir" && $2=="package"){
		FLAG=1
		next
	}
	if($1=="Retrieved" && $2=="from"){
		if(FOUND){
			for(i in ver){
				split(i,ii,/\//)
				printf("%c[%d;%d;%dm* ",27,2,0,32)
				printf("%c[0m%s/",27,ii[1])
				printf("%c[%d;%d;%dm%s\n",27,2,1,29,ii[2])
				printf("%c[%d;%d;%dm\t",27,2,0,32)
				printf("Available versions:\t%s\n",ver[i])
				printf("\tMatched File:\t\t")
				printf("%c[0m",27)
				printf("%s\n\n",file[i])
			}
		}else{
			print "No matches found."
		}
		exit
	}
	if(FLAG==1 && NF!=0){
		ver[$1 "/" $2]=$NF " " ver[$1 "/" $2]
		file[$1 "/" $2]=$3 "/" $4
		FOUND=1
	}
}'

截个图:

e-file截图

e-file截图


脚本下载地址