I am LAZY bones?
AN ancient AND boring SITE

eog打开jpg文件怎么会这么糊呢?

eog,也就是gnome的默认图片查看器──GNOME之眼,打开同一张jpg图片会比其他程序打开模糊很多,而且很明显,看下图:
eog-gpicview
上面是eog的效果,下面是gPicView打开的效果,用的图片是同一张,可以这样重现:随便在那里截个图,保存成无损的png格式,然后在用gPicView打开此png,另存为jpg格式,质量设置成90%,当然也可以用eog来另存,效果也是一样的。然后再用eog和gPicView同时打开这张jpg图片,就可以看到对比的效果了。
是我的eog有问题还是eog本身的问题呢?我的版本是‘GNOME 之眼 2.26.3”。干脆删了以后都用gPicView算了。。。

微调了gentoo的字体

基本是参照WD的这篇文章来做的,devnull这个overlay貌似不是很稳定,本来想昨天就做的,结果昨天死活加不了,今天却又好了。
话说加了这个devnull后全局启用ubuntu这个use,再全局 -cleartype 这个use,重新编译了那几个包,效果还真是不错的。
另外,我这里启用 10-hinting-slight.conf 的效果比启用 10-hinting-medium.conf 的效果更好一点。
我就只管贴图了,具体方法就看wd的文章好了。
下图是我的firefox浏览自己的blog时截的,下面那个窗口的是未调时的截图效果,上面是现在的效果:

调整前后对比图
调整前后对比图

是不是好一点呢?不过好像普通字体变粗了一点点,然后粗体却反而变细了一点点。。。

终于修复了feed输出在GR中的换行问题

最近很多人给我留言,说我的feed输出在Google Reader里不正常,所有格式都没了,换行也不见了。
但是我用thunderbird订阅自己的blog却是很正常的,为此特意用GR订阅了自己的blog看了下,确实是所有文字都成了一陀,惨不忍睹。
为此,近几天找了好久的原因,到现在,虽然根本原因还是没找到,不过换行问题算是暂时解决了。
我对比了自己的feed输出和其他WP的blog的输出,其实格式上都是一样的,都是xml里没个item都有description和content:encoded两块内容,其中description里是没有任何换行标记的摘要,一般长度不会很长,也就是说会截断文章;而content:encoded里才是真正的HTML化的全文内容,一般在WP的后台选择了feed输出全文以后,这段才会有。
但是我一直是选择输出全文的,为什么还是会乱掉呢?莫非GR只认我的description那段了?而thunderbird等却可以显示真正的全文,这样的解释倒是可以说明为什么在不同的阅读器里会有不同的表现。
意识到这一点后,我就想干脆把feed里的description那段去掉得了,于是看下了WP的代码,找到了 wp-includes/feed-rss2.php 的47行,

然后把这行给删掉了。终于实现了在GR里断行,哈哈。
剩下的问题是,为什么大家都有description,但是只有我的显示有问题?难道xml里有指定用不用description的字段么?
哦,还得记得下次升级了WP以后,都得再改一次这个文件。。。

======== 20090902 16:52 update ========
原来还有一个文件没有改过来,导致刚才订阅 http://li2z.cn/feed/atom/ 的同学还是乱的,但是订阅 http://li2z.cn/feed/ 的同学就是正常的。。。
于是再删掉 wp-includes/feed-atom.php 的第44行:

这回,应该都好了吧。。。

linux真的很安全么?

写这篇文章是因为看到了cnbeta上最近接二连三地出现类似这篇的文章。
虽然我还是认为此文的作者多少还是有点标题党,因为那个 ./a 其实可以是任何东西,这样就说是“一个命令”也太无聊了点。但是我在公司的RHEL4的服务器上试验了之后,确实可以非法提升权限。不免有点担忧。
于是我顺藤摸瓜,在那个提供hack代码的网站上不费吹灰之力,就找到了3个能非法提升root权限的程序,而且这几个程序是一周内公布的,所以相信真要找的话,还能找到很多,何况还有人家未公布的呢?
不过大家也不用太担心,这些程序都有个共同点,见到的最厉害也只能危及2.6.27的内核,而现在的内核都是 2.6.30/31 的时代了。
但是,我公司的2.6.9-55.ELsmp内核的EHRL4服务器就遭殃了,3个程序都中招了,这就说明了保持更新的重要性。一般这种服务器更新都会比较谨慎,有时候甚至无人去管理更新的事情,而且大多都是开着ssh的,这样的linux其实一点都不安全,我就见过一台服务器,老出这样那样的怪问题,最后我去看的时候,大部分/bin和/usr/bin下的常用可执行文件都已经被修改过了,文件的时间也都是一样的,而且正是这个时间开始才反常的。究其原因,正是因为这台公网IP的机器开着SSH,而且root密码还是无敌的“123456”。。。这样,即使那机器本身没有什么重要的文件,一旦被攻陷,损失和麻烦还是不少的,更何况局域网的其他机器也会受到牵连。
在这里,有必要给大家几点建议,做到以下几点linux才能真正安全一些

  • 提高安全意识,不要认为装了linux就可以高枕无忧了,安不安全其实还得靠人。我觉得这点正是最重要的。
  • 如果非得开ssh,一定要装上denyhosts(不知道为什么这个也要墙掉,无语了),denyhosts可以帮你有效地避免被ssh暴力破解。
  • 最好像ubuntu默认的一样,禁用root账号,不然的话,至少禁止root直接ssh登录,因为人家在不知道你用户名的情况下,一般的都是用root来暴力破解的
  • 不要使用弱密码,这点似乎总有人会犯错。。。
  • 始终保持更新,可以避免上面说到的情况。
  • 谨慎执行来历不明的二进制文件,尤其是需要sudo的。开源的才是最安全的。
  • 不要贪图方便,时不时大面积地 chmod -R +x xxxx ,尤其不能 chmod -R 777 xxxx

先这么多了,有其他再补充。。。

lrcdis 20090831 版本放出

lrcdis是一个通用的外挂式歌词显示脚本(对,只是一个简单的bash脚本而已),今天放出新的 20090831 版本。
目前lrcdis已经支持 mpd, moc, audacious, amarok, exaile, quodlibet, rhythmbox, mplayer, JuK, qmmp, muine, banshee 等播放器了。
更多的问题可以参考项目的FAQ

这个版本相比上一个版本,主要的变化是:
1.增加了对 banshee 和 exaile 0.3.x 的支持。如果你刚好使用这两个播放器中的某个,不妨一试。同时,由于dbus接口的更改,可能不支持 这里下载。

Bash其实也可以做CGI用

标题其实是“废话”。因为,其实稍微熟悉web原理的都知道,理论上,所有可执行的程序/脚本,都可以被server程序(例如apache/mini_httpd/lighttpd/nginx等)调用,只要能够输出HTML,都可以成功。
而这个用bash做CGI的想法,纯属闲着无聊的时候,瞎想出来的。不过有这个想法的,我肯定不是第一人,这里这里都有类似的描述。
不过,我这个Web From Scratch的过程还颇有点波折,试了蛮久才成功,就在此记录一下。
其实,说白了都是也就一句话:扩展名不能随意取。当然这个只是针对我这个主机的apache来说的,其他的server可能有其他的规则,暂且不做定论。
之前我一直把我的脚本文件名写成index.sh,结果怎么试都不行,后来无意中改成inedx.py(虽然里面还是#!/bin/bash开头的)居然就可以了,于是我就找到原因了,现在我改成个更通用的index.cgi了,哈哈。
另外关于.htaccess,由于自己也是一知半解,就不讨论了,有兴趣的话,可以看看这里,这里只贴下我用到的代码,可以把对此域名的任何路径的请求都让index.cgi来处理。

来看看我的bash,就是简单地输出服务器信息:

最近几天,可以点击 http://hzlug.org/abc?xxx=yyy 观察这个脚本运行的效果,以后可以把这个地址做它用,嘿嘿。
可以看到 REDIRECT_URL 和 QUERY_STRING 这两个环境变量分别是路径和参数,这样理论上就可以用一个脚本来完成很复杂的功能了~
至于HZLUG到底会做成什么样子,还请大家多多提意见哦~

用脚本操作剪贴板

有时候,在脚本里操作剪贴板是很有用的,比如,你可以用scrot截屏以后贴到paste,然后把url直接放到剪贴板里,方便与人分享;又比如,你可以在选择了一段不和谐的文字的时候,通过按一个快捷键悄悄地把文字变成base64加密以后的内容发给好友;再比如,复制一个单词或者一段文字,按一个快捷键可以在剪贴板里放置翻译后的结果等等。当然肯定有更多方便的应用等你来发现。
在实现复杂应用之前,我们应该先对linux的剪贴板有个基础的了解,其实,linux(准确地说是带X的GNU/linux操作系统)的剪贴板分为3个:
1. 中键主剪贴板
2. 中键辅剪贴板
3. ctrl+v剪贴板
用过linux的朋友肯定都知道一个很方便的特性:鼠标选中一段文字就相当于windows的“复制”,然后在其他程序里按下鼠标中键就相当于“粘帖”,可以把刚才选中的文字粘帖出来。这个经常会让像我一样的linuxer养成一种习惯,以至于在朋友电脑上偶尔使用的windows的时候,也会经常点中键,却什么也出不来。。。同时,这也造成了linux比较损鼠标中键的现象,因为一般的杂牌鼠标,为了节约成本,鼠标中键的轴只有一端是固定的,所以这个轴很容易断,中键都很脆弱,没按几下会坏掉了,我的几个坏鼠标基本上都是中键不灵。。。
呃。。怎么说到鼠标去了,言归正传,这个用中键粘帖的剪贴板我们暂且称为“中键主剪贴板”,另外还有一个“中键辅剪贴板”,一般用户很少用到,“ctrl+v剪贴板”就无须多解释了,就是和windows一样的那个剪贴板,大家平时可能只把这个当成“正宗”的剪贴板吧。
xsel 是用脚本操作剪贴板时需要用到的命令,xsel同时支持这3个剪贴板,那么我们来看看xsel是如何区分这几个剪贴板的:
-p, –primary 指定操作 中键主剪贴板
-s, –secondary 指定 中键辅剪贴板
-b, –clipboard 指定 ctrl+v剪贴板
-x, –exchange 还可以交换 中键主剪贴板 和 中键辅剪贴板 ,这样辅就可以起到一个中间变量的作用了。
下面看看常用的操作:
-i, –input 从标准输入读入到剪贴板
-a, –append 往剪贴板里添加内容 (PS:我发现当某个剪贴板内容为空的时候,使用这个选项会导致xsel出现段错误,不知道是不是应该去报告bug)
-c, –clear 清除剪贴板的内容
-o, –output 输出剪贴板的内容

于是,有了这些好玩的操作,我本来这个

贴图脚本就改成了这样了:

这样帖完图以后,URL就直接在ctrl+v剪贴板里了,发给别人也相当轻松了,哈哈。。(upaste是帖东西到http://paste.ubuntu.org.cn,并返回url的perl脚本)
另外,你可以可以看看 xclip 等其他程序,如果有必要的话,下期再介绍啦,哈哈。

UltraEdit出linux版了

下午,看到toy上说UltraEdit出linux版了,做为一个曾经的UE迷,马上就下载来试了一下。
发现,这个虽然是beta版本,但是已经有较强的可用性了。这个测试版本第一次运行的时候,会弹出提示说可以用到2009年9月1号,到时候肯定还是要交钱的,价格貌似和windows版的一样,截图说话吧:
UE4linux
(点击放大)

用python来收发邮件

由于python的模块很强大,用python来收发邮件,就显得很轻松了。
python不仅有email模块,还有专门处理popsmtp甚至imap的模块。
下面就来演示一下这几个的用法,先看看怎么用pop3和email模块来收邮件。

当然,上面的例子只是最简单的,复杂的附件什么的,也可以用库里的相关函数一一搞定的。另外,看文档的意思,传了get_payload的第二个参数按理应该能自动调用base64模块解码的,但是不知道为什么,我没有试验成功,只能自己手工解了~
下面,再来看看怎么用smtp发邮件,如果是复杂的邮件,也需要建立一个email对象的实例,把正文/附件等一一放上去就好,但是作为演示,我们就用邮件的源码来发一个纯手工的,哈哈

就这么几行,一封邮件就发出去了,够简单吧。。。更详细的内容就看官方文档吧~

JSON数据格式简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
以上摘自JSON官方介绍,这个格式是如此地简单,以至于光看这篇官方文档就可以完全掌握了,而无须其他过多地介绍了。
最初看到这个JSON,是在twitter上,这种小交互量的场景很适合用JSON,比XML更轻巧些。今天,看到新闻,taobao也搞了个开放平台,里面也支持JSON和xml这两种格式,所以我觉得这个格式以后会越来越流行,特发此文关注下。