I am LAZY bones? AN ancient AND boring SITE

2010年 03月 的归档

gentoo中使用dropbox

Dropbox是一个网络在线存储服务,默认免费可以有2G的存储空间,客户端支持WIN、Linux、MAC等,甚至连没有X的环境都支持了,这个比较难得。
而且对于公开的文件还支持外链,挺不错的。
但是这个我在08年9月份注册以后,就没怎么用过了,呵呵。
然后,最近想着怎么备份我的gentoo,就又想到了这个,于是又开始折腾。
首先,肯定要在gentoo里先能用上Dropbox,这个其实不难,虽然portage里还没有dropbox,但是网上可以很方便地找到ebuild,比如这个
加进自己的overlay(gentoo用户大多都有个自己的overlay吧?)以后,直接 emergr nautilus-dropbox 就装好了,完了以后,还需要把自己加入到 dropbox 这个组,登出再进来一次就可以打开dropbox了,输入账号密码就可以绑定机器了。默认同步会 ~/Dropbox 到网上,很不错。
接下来,就是把gentoo里需要备份的文件打包,然后放进这个目录下面,这个就很简单了,基本上就是一个tar命令放到cron里每天执行下就好了,我的如下:

#!/bin/sh
#gentoo备份脚本
 
LOCAL_PATH="/home/lily/Dropbox/gentoo.bak/"
#备份文件的前缀,默认自动按时间生成
PRE=`date +%F-%H-%M-%S`
 
tar zcf "$LOCAL_PATH/$PRE.tar.gz" \
/usr/local/portage \
/etc/portage \
/etc/make.conf \
/usr/src/linux/.config \
/etc/hosts \
/etc/fstab \
/etc/locale.gen
 
find "$LOCAL_PATH" -name "*.gz" -mtime +15 -exec rm {} \;

大家还能想出要备份什么文件的么?

PS: 如果你刚好还没注册Dropbox,又想试试的话,可以用我的这个推广链接注册,你我都会得到额外的250M空间(需要你安装了客户端并用它登录一次才有),现在通过推广,最多可以得到10G免费空间了,哈哈。

cName

cName是我临时写来给bones7456 v2.0取名字用的小程序,使用了之前说的wikimarkup 和 webkit,汉字的数据和图片均来自汉典龙维基,在此表示感谢。
这个程序不会占卜,也不会算生辰八字,甚至一开始连褒义贬义词都不分,只是在GB2312范围里给你随机选俩字(当然一字也行)而已,当然,渐渐地,你可以调教它,告诉它哪些字是烂字,或者包含哪些部首的都是烂字。
你也可以输入一个想要的拼音首字母和/或笔画数,这样就只会在这个范围内随机了。通过这个功能,你可以方便地组出特定拼音首字母或者特定笔画组合的名字。
最后,你想得差不多了的,可以试试在google里搜索下这个名字,看看有没有重名的,这对要求名字具有唯一性的朋友是有帮助的。当然,墙内的朋友就比较杯具了,如果你刚好姓“胡”之类的,这个功能基本报废,难道我要另外添加个百度?
至于为什么要限制在GB2312里呢,其实是因为即使是将来的十几年甚至几十年,也肯定还会有某些小型设备,只支持GB2312的。。。所以嘛,我可以不想名字很“囧”,导致人家打不出或者显示不出。
截图:

代码在此,大概300行。
附赠,我现在已经选出的一些(==20100411 update==将会持续更新)
烂字:

唢呐玳瑁陷阱尴尬囫囵惭愧嫉妒诋毁侮辱觊觎褴褛骷髅窟窿贿赂饲养邋遢怨恨冤枉背叛侗偎貊砼刳肓死亡竦乳焖贪婪恣刮嗵昧硷锒铛卸枷诬陷噘醢殪滑溷淤撺凉悝倥眚锅悼赴戚裒妈醺耵僬刹异僚黪皴彳喂匾甓吱娈耩煮燎觖鸭趼殳愆坼头迭滂晦刎邳呓赇厣咚荜妊昃锝货灸撩终哂庇奄欷髹忡镢韪挟瀵熟薨颛搀皱孤厩褙镱鞲屑篾圄渍渚捡枧烦潺紧汛拗染砭闷泅惨谏圊攫坩炻峋盗侥滓浚怄褰茔谖黏簧眢交刑诧绞嘞呸操苦抗畜栏埝泪嗲惫骣盒揍媸纵溃呙詈婶芫刍铌嘎橐唆祭玩偿鲑殍争镩禳鹗裁寡筻虐侉饔鬯埕暴摔馋驳俺舣槊粪契抟乜颟泐舡阴兜氽娩吓涕炖砰锗铐滹毵赁颥軎鞔撂吖铥嫂酢厘嗟黯彘瞅颇箪潮毛镟裂退擞鸵孑颚芏压遂窨劐嶷搞拈丛惴落梓镳箦澧从陨雠下鏖俭芴尺屙屐届尽居屦尻履屡尼尿屁尸屎属屉屠尾屋屣灼拆扭罱悱啊呵嗄哀唉哎呆嗳嗌嚣嗷吧叭嘣吡哔啵哺嚓嘈噌喳唱吵嘲嗔呈吃哧嗤啻叱啜嘬喘呲啐嗒哒呔啖叨噔嘀叼吊喋叮啶嘟吨咄哆哚哦噩呃啡吠吩唪否呋咐咖噶咯嗝各哿哏哽咕呱嘏咣嘿咳嗨喊吭嚆嚎嗥喝嗬哼哄喉吼呼唿唬哗唤咴喙哕嚯叽唧咭哜嘉嚼叫噍喈噤啾咎咀噱喀咔嗑啃叩哭喾哙哐喹喟啦喇啷唠叻哩喱吏呖唳嘹咧啉吝呤咙喽噜吕呒吗唛嘛咪嘧黾喵咩哞嗯唔哪呢喃囊囔呶嗫啮咛哝喏噢喔呕啪哌咆喷嘭噼啤嘌叵噗嘁呛噙嗪吣嚷嚅噻嗓啬啥唼善哨呻嘘嗜噬售唰吮嘶咝嗣嗖嗾嗽嗉嗦嗍叹啕啼嚏听吐吞唾哇唯味嗡呜吸嘻唏呷咸哮哓啸咻嗅吁喧呀哑咽唁吆咬噎咿噫咦喑吟吲嘤哟唷喁咏呦喻咂咱咋哉噪唣啧哳啁哲只咒嘱啭啄嘴唑丧翦贫乞湎苋捎沱装绲舂疃檎眵浯鼙窆穿窗窜窦窖窘窭窠窥窃穷穹窕突窝穸穴窑窈窬窳窄窒窀侏烷偃靡糸扪买忙牟

烂部首:

豸虫疒月犭齿足歹牜鸟车鬲石讠钅矢饣米黽

欢迎大家贡献烂字列表,哈哈。

PS:程序依赖pywebkitgtk,有人知道怎样才能在win下运行么?

pino──一个twitter客户端

之前,我一直是用echofon来上twitter的,但是不知道从什么时候开始,echofon就经常会抽风了,表现为:打开主界面以后,看到有好的推,想RT的时候,一点右键,CPU就跑到100%了,而且整个firefox都停止响应了。经常要半分钟左右才能回复,这个现象不是每次都发生,好像只有未读消息较多的时候才有。这样一来,搞得我都不敢RT了。
于是郁闷中,开始寻找别的客户端,鉴于我是gnome粉,备选的有Gwibber、Turpial和pino等。
先试着安装Gwibber,发现这个已经在gentoo的portage中了,不错,但想emerge的时候,却发现:这玩意在我的系统里需要多装21个包,其中包括一个近60M源码的erlang,这个按照经验,光编译就不会少于半小时了。于是放弃。
接着看Turpial,发现还没有中文和API的支持,也只能放弃。
最后轮到pino,依赖不多,也基本可用了,如下图,就是pino的截图:

来大致说说pino的优缺点:
优点:
1. 功能比较强大,能显示某个用户的信息(不管是否已follow),并能fo/unfo。
2. 界面比较清爽,中文支持良好。
3. 支持API proxy,这对墙内的我们是很重要的,但是奇怪的是,我hg到源码并没有这功能,反而下载到的0.2.1的源码包才有。
4. 收到消息有notify的提示。
缺点:
1. 输入的时候比较别扭,ibus输入法据说无法输入中文,fcitx虽然可用输入,但是看不到光标。。。还有输了英文想回车上屏的时候,会直接把消息发出去。
2. 好像有时候会无故退出?
3. 虽然能显示官方RT,但是不能发出官方RT。

wikimarkup 和 webkit

wikimarkup 是一个可以将 MediaWiki 格式的源码转换成 HTML 的python模块,它的特点是使用非常简单,功能比较全面。
基本上就是:

from wikimarkup import parse
html = parse(wiki, showToc=False)

这样就搞定了。
wikimarkup 可以在这里下载。

另外得到了html,如果要展示出来,还得需要一个“浏览器”,这时候可以用webkit的python绑定,也很简单,使用方法:

import webkit
wv = webkit.WebView()
wv.load_html_string(html, 'file:///')

再把这个 wv 对象嵌到正常的gtk或者qt容器里就可以了。
另外,花花是webkit达人,有什么问题,可以去搔扰之,哈哈。

BugMeNot 公用马甲库

在网上逛,经常会遇到这种情况:
有时候你想下载一个文件,搜索到了一个下载地址,却提示需要登录才能下载。这时候,你要么换个地方再下,要么就是按照网站的要求填写注册信息,一步步完成注册再登录、下载。
这样是不是很麻烦呢?
其实,你可以到BugMeNot去搜索一个公用的马甲,来临时登录一下。据我的经验,大部分网站都能通过BugMeNot找到MJ,这样是不是方便多了呢?
但是,其实打开BugMeNot,输入网址,再粘帖用户名、密码,其实还是相当繁琐的。这么机械的动作,当然应该由程序来完成,于是就有了这个firefox插件
这个插件基本能满足要求,但是也不是很完美,比如有时候你要登录 abc.xxx.com 这个站,会发现插件提示找不到MJ,但是其实只要搜索 xxx.com 就可以找到并正常登录 abc.xxx.com 了。
看来下原作者的主页,发现他已经不再维护这个插件了,于是自己按要求小修改了一下,就叫2.3版本吧~
喜欢的童鞋可以猛击这里安装我的这个修改版。

PS:如果发现BugMeNot里真的没有某些网站的MJ,而你又注册了的话,也可以把用户密码提交到BugMeNot,供以后他人使用。这样也算是人人为我,我为人人了,呵呵。

vsftpd只能匿名登录,本地用户出现530错误的一个实例

网上很多教程,在介绍vsftpd的本地用户的配置的时候,大意都是这样的:

建立一个xxx用户,家目录为/yyy/zzz,并把这个用户的shell(/etc/passwd里对应行的最后一列)设置成/sbin/nologin或者是/bin/false,再设置一个密码。
然后修改vsftpd的配置文件,一般是/etc/vsftpd.conf,加上:

local_enable=YES
write_enable=YES
local_umask=022

然后重启vsftpd就可以了。

对于出现530 Login incorrect. 的解释一般是两种:
1. xxx用户对 /yyy/zzz 没有权限。
2. xxx用户被加到 /etc/vsftpd.user_list 列表里了。
但是我今天的操作中,这个新建的用户并没有发现以上两种现象,仍然出现了可恶的530错误,但是匿名用户正常登录。
折腾半天以后,发现用一个shell是/bin/bash的用户却是可以登录ftp的。于是,试着把xxx用户的shell也改成/bin/bash,果然也可以登录了。但是这样显然还没有解决我的问题,因为这样一来,xxx这个用户都可以通过ssh登录服务器了,安全就没有保障了。
于是再找更详细的原因,终于发现了:
其实vsftpd对本地用户鉴权的过程中是可以检查用户shell的合法性的,而且默认就启用了。虽然你可以在配置文件中通过添加

check_shell=NO

来取消vsftpd对shell的检测,但是这个配置项要生效却有个前提:编译的时候不能包含PAM特性(一种*nix系统中的插件式身份鉴别模块),而ubuntu等发行版的二进制包并不能满足这点,所以除非你是自己编译的vsftpd,这个配置项是没有多少用的。
要解决这个问题,还得继续问:vsftpd是怎么检查一个shell是否合法呢?其实这个答案很简单,vsftpd读取 /etc/shells 这个文件,如果用户的shell在这个文件里存在,就认为合法,否则即使你输入了正确的密码,仍然会给你一个530,哈哈。
所以,解决办法就是:把 /sbin/nologin 或者是 /bin/false 加到 /etc/shells 中去!

linux下的“虚拟光驱”

每当有人问我“你的linux下有没有类似‘虚拟光驱’的软件呢?”的时候,我就会轻轻一笑,自豪地说“别把事情想得太复杂,linux下根本就不用什么另外的软件,就能虚拟光驱了。”,然后那人一般就会似懂非懂地说一句:“哦。。这样啊~”
下面,就来介绍几个虚拟光驱相关的命令:
把物理光盘做成iso镜像,下面几个命令几乎等效,假设设备是/dev/cdrom:

cp /dev/cdrom xxx.iso
dd if=/dev/cdrom of=xxx.iso
mkisofs -r -o xxx.iso /dev/cdrom
readcd -v dev=/dev/cdrom -f xxx.iso

其中,用mkisofs还可以把一个文件夹模拟成iso:

mkisofs -o xxx.iso /path/to/tree

如果要使用iso文件的话,就更简单了,可以mount到任意目录下:

mount -o loop xxx.iso /path

注意以上某些命令可能需要root权限。

不过,还有个终极问题没有解决,我手头有一张《浙江省汽车驾驶人理科考试智能》的光盘,估计是用了什么防拷贝技术,使用以上方法都无法正确生成ISO文件,也无法全部复制里面的内容,具体操作过程如下:

lily@LLY:~$ sudo mount -o ro,loop /dev/sr0 qc
lily@LLY:~$ ls qc
试题10.db  试题11.db  试题12.db  试题1.db  试题2.db  试题3.db  试题4.db  试题5.db  试题6.db  试题7.db  试题8.db  试题9.db
lily@LLY:~$ sudo umount qc
lily@LLY:~$ sudo mount -o ro /dev/sr0 qc
lily@LLY:~$ ls qc
2009理论模拟考试.exe  AutoRun.ico  AutoRun.rdt  system               试题10.db  试题1.db  试题4.db  试题7.db
AutoRun.ard           autorun.inf  htm          安装使用说明.html    试题11.db  试题2.db  试题5.db  试题8.db
AutoRun.exe           autorun.pro  image.jpg    读安装使用说明.html  试题12.db  试题3.db  试题6.db  试题9.db
lily@LLY:~$ cp -r qc qc1
cp: 正在读入"qc/试题3.db": 输入/输出错误
cp: 正在读入"qc/试题4.db": 输入/输出错误
{1}lily@LLY:~$ ls qc1
2009理论模拟考试.exe  AutoRun.ico  AutoRun.rdt  system               试题10.db  试题1.db  试题4.db  试题7.db
AutoRun.ard           autorun.inf  htm          安装使用说明.html    试题11.db  试题2.db  试题5.db  试题8.db
AutoRun.exe           autorun.pro  image.jpg    读安装使用说明.html  试题12.db  试题3.db  试题6.db  试题9.db
lily@LLY:~$ du -s qc qc1
398463	qc
349720	qc1

有谁知道这种变态的光盘怎么搞定吗?

点击触摸板模拟左键单击

这几天估计是比较背,刚说我的神舟本2年都没啥问题,结果,前几天发现光驱读盘能力不行了,最近又发现触摸板的左键也不灵了,要按得很重才能产生一次有效的单击事件,双击就更难了。这样下去,手指都要按残了,唉~
然后试了下,轻触触摸板模拟鼠标单击的功能在我的gentoo下默认是无效的,于是第一个想到的就是 xorg.conf 这个即将成为历史的东西。但是我已经不用这个配置文件很久了,现在为了触摸板,没办法,看来只能再请它出山了。于是翻出我的配置文件,在 Section “InputDevice” 一节里加上 Option “TapButton1” “1” 这行,一边心里在纳闷为什么X不默认启用这项呢?
加完重启了X以后,在登录界面试了一下,嘿嘿,果然可以了点击了,于是兴高采烈地登录我的gnome,结果再一看,怎么又不行了呢?明明刚才还可以的啊。难道是gnome的问题?上网一查,发现果然是,在gnome的“系统”->“首选项”->“鼠标”->“触摸板”里,有一项“Enable mouse clicks with touchpad”,勾上这个就好了。
然后再一转念,那在 xorg.conf 里的设置不是多此一举了吗?毕竟我不怎么关心登录界面能不能点击啊。
于是重新删除了 xorg.conf 重启X,登录gnome以后,果然也是可以的。
至此终于知道X为什么不默认启用触摸板点击了,哈哈,既然有DE做这个事情,自然就可以偷偷懒了,不过不知道用*box之类的WM的用户是怎么设置呢?