I am LAZY bones ? all linux

2008年 10月 的归档

使用SSL登录irc(注:仅支持OFTC)

SSL登录irc的好处:
1.对收发的数据进行加密.
2.可以不用密码自动identify.

可惜目前试了一下,似乎只有OFTC对SSL提供支持,而因为freenode不支持,可能很多人都用不了.
不管如何,先记下步骤,也许以后freenode会支持呢?但愿如此吧~
以我常用的xchat客户端为例(xchat2.8以上才支持):
1.创建指纹:
openssl req -nodes -newkey rsa:2048 -keyout nick.key -x509 -out nick.cer
chmod 400 nick.key (保护起来,非必要)
cat nick.cer nick.key > OFTC.pem
chmod 400 OFTC.pem (保护起来,非必要)
2.得到 OFTC.pem 以后,放入 ~/.xchat2 目录,然后打开xchat的网络列表,选中OFTC,点”编辑”,在打开的页面勾上”在本网络的所有服务器使用SSL”和”接受无效的SSL证书”.
3.重新连到OFTC,用密码identify了以后,执行 /msg nickserv cert add 就把你的指纹和服务器关联上了,退出,重新打开xchat,登录OFTC以后,你就可以看到,你没输密码,也已经identify了…whois自己也能看到 * [bones7456] is connected via SSL (secure link) 这样的提示了.
终于可以把明文保存在 /.xchat2/servlist_.conf 的密码删掉了,嘿嘿.

其他客户端的设置和更多信息参见OFTC的英文帮助页.

GreaseMonkey脚本实现ubuntu论坛快速回复

在ubuntu论坛里面看到了这个帖子,想想也挺有趣的,就真的写了个.没想到我那被遗忘了多年的javascript,在几乎一行一次google的情况下,还能写出这脚本,嘿嘿…
其实 GreaseMonkey 真是个不错的扩展,只要有点js基础,就可以有很多有趣的应用哦~
提示:在firefox下先安装 GreaseMonkey 扩展.然后添加此脚本.

// ==UserScript==
// @name           ubuntu论坛快速回复
 
// @namespace      http://forum.ubuntu.org.cn/viewtopic.php
// @include        http://forum.ubuntu.org.cn/viewtopic.php*
// ==/UserScript==
function oselect_change(){
if(0==this.selectedIndex)return;
document.getElementsByName("message")[0].value=this.options[this.selectedIndex].text;
document.getElementsByName("message")[0].focus();
document.getElementsByName("post")[0].click();
}
var ocell = document.getElementById('pagecontent').getElementsByTagName('TABLE')[0].tBodies[0].rows[0].cells[0];
var oselect=document.createElement("select");
oselect.options.add(new Option("选择快速回复内容..."));
oselect.options.add(new Option("很好很强大~"));
oselect.options.add(new Option(" :em05 "));
oselect.options.add(new Option("支持~ :em11 "));
 
oselect.addEventListener("change", oselect_change, false);
ocell.appendChild(oselect);
效果预览

Dimensions

Dimensions 算是一个科普的视频,介绍了部分地理/几何的知识,目的是让你对四维空间有个直观的认识,制作相当精美,讲解深入浅出,不可多得.视频是英语介绍,但有12国语言的字幕,包括简体中文,800*600分辨率的版本可以在这里下载,分9段,还有个预告片,可能会有 Dimensions II.

nautilus徽标研究

不知道广大gnome用户会不会经常用到nautilus的徽标功能.反正我是经常用徽标来表示某些文件的状态的,比如,经常下电影看,看过了要刻盘这么一件事.我会在下载电影前就建个目录,电影下好了,字幕什么的都调好了,就放个标记,说明可以看了,然后看完了,觉得有刻盘价值的也给个标记,不然就直接删了.等要刻盘的内容到了一张DVD的容量的时候,就会刻盘,然后再给个已经刻盘的标记,下次空间不够,就优先删了这些已经刻过的.
本来在ubuntu下,这样用一直好好的,但是由于最近转到gentoo,把用户目录挂过来以后,就发现不对了,一些文件原来有两个标记的,现在只有1个了.分析下原因,既然那个徽标能显示出来,那就说明gentoo的nautilus肯定支持徽标(废话),并且数据也是和ubuntu存在同一个地方的.那还有一个显示不出来,就肯定是gentoo支持的徽标种类和ubuntu的不一样,所以解决的思路就是找到这些徽标是放在哪里的,然后把ubuntu的和gentoo的同步一下.
于是我就找啊找啊,终于找到了这些图标原来藏在 /usr/share/icons/gnome/*/emblems 下面,而且我那个显示不出来的那个图标就是 /usr/share/icons/gnome/48×48/emblems/emblem-certified.png 同时还有一个 /usr/share/icons/gnome/48×48/emblems/emblem-certified.icon 文件,里面存的是各种语言的名称.
所以,解决方法就是把那两个文件复制到gentoo的相应目录,但是后来又发现gentoo下是没有 /usr/share/icons/gnome/48×48/emblems 这个没目录的,你可以自己建立此目录并且在 /usr/share/icons/gnome/index.theme 文件里面加入加入目录信息或者像我一样偷下懒,把文件放入 /usr/share/icons/gnome/scalable/emblems 目录下,虽然那png文件不是矢量的,但是事实证明不影响使用.
放好文件以后,如果不想重启的话,可以执行 sudo gtk-update-icon-cache /usr/share/icons/gnome 刷新图标缓存.然后到nautilus里面去看看,消失的徽标又回来了,哈哈.

PS1:文件也可以放入 ~/.icons/hicolor/48×48/emblems 这样的目录下,或者直接在nautilus的 编辑-背景和徽标 里面添加,但是这里居然只能添加不能删除….
PS2:哪个文件用了那些徽标的数据,在 ~/.nautilus/metafiles 目录下的,已加徽标文件的父目录对应的xml文件内.

read-edid这个包出错了

要emerge个lm_sensors,依赖了x11-misc/read-edid-1.4.1-r1这个包,而且编译当中出了点错,装不上了.

i686-pc-linux-gnu-gcc -O2 -march=pentium-m -pipe -fomit-frame-pointer -Wl,-O1 -o parse-edid parse-edid.o
lrmi.c: 在函数‘set_regs’中:
lrmi.c:305: 错误:‘IF_MASK’未声明(在此函数内第一次使用)
lrmi.c:305: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
lrmi.c:305: 错误:所在的函数内也只报告一次。)
lrmi.c:305: 错误:‘IOPL_MASK’未声明(在此函数内第一次使用)

这样一大串,我就不解了,后来在gentoo的bugs里面找到了这个bug,希望能早点解决,哈哈.
流水帐记录之.

fcitx有svn了

fcitx的sf主页有更新了,而且代码也第一次有了svn,可以执行如下命令得到最新的fcitx的代码:

svn co https://fcitx.svn.sourceforge.net/svnroot/fcitx

目前还只有3个版本,log:

————————————————————————
r3 | yuking | 2008-10-19 01:00:36 +0800 (日, 2008-10-19) | 1 line

Add wbpy.txt to data directory’
————————————————————————
r2 | yuking | 2008-10-19 00:49:50 +0800 (日, 2008-10-19) | 1 line

Add some files under ‘data’ directory’
————————————————————————
r1 | yuking | 2008-10-18 23:34:12 +0800 (六, 2008-10-18) | 1 line

First SVN
————————————————————————

最新的版本号是081016,这是不是代表阔别1年多的fcitx即将回归呢?

gentoo下的gnome-osd

ubuntu论坛里有个可用性已经不错的歌词脚本,如果用上gnome-osd显示,效果很好的,昨天想在gentoo下试试,结果发现gentoo下根本就没有这个包,汗了,这个应该是gnome组件里面的一部分啊,怎么会没有呢?
于是到overlay里面找,发现了这个,下载了ebuild文件,安装,但是configure的时候就失败了,理由是找不到python2.4和2.3,心想这一定是个比较老的ebuild的,那时候应该还没有python2.5,于是想花点时间修改configure脚本算了,倒也是修改好了,也安装上了,但是gnome-osd-client的时候,却又是一堆错误,而且一看就知道是python的错误.才发现这个代码确实是不兼容python2.5的.
但是回头想想,ubuntu里面的python不也是2.5的嘛,于是肯定只有一个可能,就是这个源码包不是最新的,从那个ebuild的源码包顺藤摸瓜,终于找到了最新的下载地址,于是顺手改了下ebuild的文件,不知道有没有可能放进gentoo-china的overlay呢?

解决了gentoo下的luit乱码/崩溃的问题

问题的起因是这样的: 我之前的那个sssh快速登录脚本,到了gentoo下,发现就不灵了,输完命令回车,就直接出错退出了,在排除了expect的问题和ssh本身的问题以后,很快就把问题定位到了luit,luit是个用于装换终端程序编码的东东,我的sssh脚本就是靠它登录gbk的远程服务器的.但是gentoo下,却出了问题.
于是拿个gb2312编码的fcitx的config文件做了下测试,如下:
$ luit -encoding gbk cat ~/.fcitx/config
段错误
而执行 luit -encoding gb2312 cat ~/.fcitx/config 出来的又是乱码.(ubuntu下不管是gbk还是gb2312都是正常输出的.)

然后我就strace了一下:
strace luit -encoding gbk cat ~/.fcitx/config
发现有这样的输出:

open(“/usr/share/fonts/encodings/encodings.dir”, O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4526, …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78ff000
read(3, “128\ngb18030.2000-0 large/gb18030.”…, 4096) = 4096
open(“/usr/share/fonts/encodings/large/gbk-0.enc”, O_RDONLY) = -1 ENOENT (No such file or directory)

马上 ls /usr/share/fonts/encodings/large ,发现有个 gbk-0.enc.gz 但是没有 gbk-0.enc 这个文件,所以上面报打开失败.而且这个文件名是从 /usr/share/fonts/encodings/encodings.dir 里读取的.所以看了下:

$grep gbk /usr/share/fonts/encodings/encodings.dir
gbk-0 large/gbk-0.enc
gbk-0 large/gbk-0.enc.gz

发现有这么两行输出,猜想会不会是顺序问题,意思把那文本里面的这两行对换了下位置,再 luit -encoding gbk cat ~/.fcitx/config 的时候,发现输出正常了,哈哈,当然sssh脚本又可以用了~~

也用上2.6.27的内核了

话说这gentoo的更新还真够快的,前几天才发布的2.6.27正式版内核,今天就进了portage.于是就编译,用上了.
没有什么大问题,因为之前的ipw3945和alsa-drivers都是另外安装的,而这次我决定把他们都弄到内核里面,这样就不用在每次换内核以后,都重新安装那几个包了.也因此,内核也增长到了2.5M以上,呵呵.
重启以后,发现alsa的声音没有任何问题,至于无线,iwconfig里面能看到,设备由原来的 eth1 变成了 wlan0.但是 ifconfig里面缺没有了,而且 ifconfig wlan0 up 居然提示:”SIOCSIFFLAGS: 没有那个文件或目录”.irc问了一下,说是由于缺少firmware,而且 dmesg 里面会有一堆这样的信息:

firmware: requesting iwlwifi-3945-1.ucode
iwl3945: iwlwifi-3945-1.ucode firmware file req failed: Reason -2
iwl3945: Could not read microcode: -2

解决方法就是安装这个包: iwl3945-ucode 装完之后 ifconfig wlan0 up就正常了,哈哈.
这下可以把这些包都卸载了: net-wireless/ipw3945 net-wireless/ipw3945d media-sound/alsa-driver

gentoo下的bash-completion

基本上就是 emerge bash-completion ,然后安装提示,在 ~/.bashrc 里面加上一行 [[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion
然后就搞定了,因为我的 /home 是和ubuntu共用的,所以稍微修改了一下,两个系统不同部分这样处理了,如下:

if echo “`uname -a`” | grep gentoo >/dev/null ; then
[[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion
alias au=’sudo emerge –sync && sudo emerge -avuDN world’
alias ai=’sudo emerge -av’
alias ar=’sudo emerge -av –unmerge’
alias as=’eix’
else
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
alias au=’sudo apt-get update && sudo apt-get upgrade’
alias ai=’sudo apt-get install’
alias ar=’sudo apt-get remove –purge’
alias as=’apt-cache search –names-only’
alias aw=’aptitude show’
fi

还有一点点小问题,就是我的系统(wd的也是)里面 source /etc/bash_completion 以后, echo $? 看到的是1,但是oceanboo的就是0,而且文件的md5sum都是一样的.这问题貌似不怎么影响使用,就是有点不解而已.
另外,bash-completion的更详细用法可以参见这里