Monday, March 05, 2007

Mutt 中根据编码不同,自动用不同命令显示附件内容

很多邮件是 HTML 的,不过这些 HTML 只包含 HTML 语法,并不包含字符集提示等等内容,所以,如果这些 HTML 直接交给 w3m 或 lynx 处理,能否正确显示是要看运气的,我们不可能假设别人发来的邮件是相同编码的,更要命的是,很多情况下,根据内容无法区分 gb 编码和 latin-1 编码,乃至 utf-8 编码。

好在 mutt 会把 MIME 参数传送给 mailcap 的处理语句,这样,比如
Content-Type: text/html; charset=gb2312
这个 charset 也会作为变量 %{charset} 传送给命令行,所以,我们在 ~/.mailcap 里面设置
text/html; w3m -I %{charset} -T text/html ; nametemplate=%s.html; copiousoutput;
就可以把任意 text/html 内容转换成 utf-8,然后用 w3m 显示。

参考文献: 《Mutt 用户手册》第五章。

Sunday, February 18, 2007

新年许愿

新年到了, 许几个心愿吧
  1. 改几个坏毛病, 嗯, 尤其是自己的时间管理方面, 提高一点自制力.
  2. 为求学生涯划上一个好看的句号.
  3. 为职业生涯开个好头, 找到一份好工作.
  4. 完成我的 linux 书.
  5. 来一个甜蜜幸福的婚礼.

新年, 新生活

Sunday, February 11, 2007

[译文] 使用加密工具提高系统安全性

http://security.linux.com/article.pl?sid=07/01/31/1539208&from=rss

我的 U 盘里总会放着一份 Bcrypt. 这是个极为简单易用的基本工具。一旦装上了 bcrypt, 你惟一要做的就是在命令行依次输入 bcrypt 和你要加密的文件名。之后,Bcrypt 会要求你提供一个密码,仅此而已。加密之后,Bcrypt 会给文件加上 .bfe 的扩展名。同样的命令也可以用于解密,bcrypt 仅仅通过文件的扩展名来决定是要加密还是解密。

Bcrypt 使用 Blowfish 。算法。密码通常要有 8 到 56 个字符,并被内部哈希为一个 448 位密钥以增强安全性。缺省条件下,加密文件的时候,原始文件将被删除并在原来存储文件的位置覆写 3 次,以避免通过反删除工具发现原始文件,你可以增加或减少重写的次数。

Bcrypt 缺乏灵活性和各种开关,所以可能不是你加密军火库中的首选武器,不过,简单是它的强项。根据 Bcrypt 的项目网站介绍,它可以用于 Linux 和 *BSD, 没有 Windows 版本; 不过,这个网站似乎有年头没更新过了。

Ncrypt

Ncrypt 是另一个简单的文件加密/解密程序。你可以选择三个 AES 加密标准候选加密算法: Rijndael, Twofish, 和 Serpent 中的任何一个。开发者特别注意了生成密码的安全性: 当一个文本密码被用于加密文件的时候,它首先被转换为 SHA-1 哈希值,而原文被立刻清除出内存。之后,这个哈希值被用于密钥,随后,也会被清除出内存。

Ncrypt 同时有 Unix 和 Windows 版本。它的用法很直接: 使用 ncrypt 命令,用开关选择加密算法,是要加密、解密、还是要清除文件,以及输入输出文件名。。原始文件将被从磁盘上彻底清除;Ncrypt 也有一个非常有用的文件清除功能,你可以用它安全删除文件。

Pad

与 Bcrypt 和 Ncrypt 不同,Pad 使用 on-time pad (OTP) 加密。一个文件会被分成两个乃至更多独立的"pads", 没一个都类似于白噪声。两个文件看起来只是混入了无害的随机数据,可以在用户喜欢的任何时候被重新组装起来。

OTP 有非常悠久的历史了。理论上讲,它是惟一真正不可破解的加密手段。不过,它有一些实际应用上的弱点: 每个 pad 尽可以被使用一次,而且必须是真正的随机数 (这实际上非常困难),并且它很容易受到中间人工具。这样,它不被推荐用于日常加密任务。不过,有一个场合下,OTP 被认为是有价值的: 自由语音加密。比如,如果有人希望自由分发一个机密文件,它可以将文件拆成不同的 pad,并将多个部分存放在不同的一同里,并告诉别人如何获取它们并组合成原始文件。(译注: 这段翻译的不怎么好,因为译者根本不懂什么是 OTP, 查了半天还是不怎么明白,欢迎解释。)

GnuPG

对于多数人来说,GnuPG 是开源文件加密的不二选择。一些发布版还把它随发布版预装。引用其 FAQ 中的原文,"GnuPG 代表 GNU 隐私卫士,是用于安全通信与数据存储的 GNU 工具。它可以被用于数据加密和创建数字签名。它包含一个先进的密钥管理工具并与 RFC 2440 所描述的 OpenPGP Internet 标准提案相兼容。因而,它的目标是兼容 NAI 公司的 PGP。."

Bcrypt, Ncrypt 和很多其它加密工具使用对称密钥加密文件。而 GnuPG 和 PGP 一样,使用公钥密钥加密,尽管它也支持对称加密。公钥加密使得加密和签名多个文件并和其他用户交换它们变得很容易。对于对称密钥和公钥密钥的综述以及它们的工作机制,可以参考 GnuPG 手册的第二章和 FAQ 的 7.1 节。

GnuPG 可以独自地作为命令行工具使用,它有很多功能,并可以满足各种挑剔的用户。不过,它也有各种不错的前端工具可用。其中,我所用的是 KGpg, 集成在 KDE 之中,这方便了我很多日常加密工作。比如,其它我提到的加密工具只能加密文件,而不能加密目录。你可以用 KGpg 加密目录中的所有文件,或者创建一个 .tar.gz 或是 .zip 文件,并对它进行加密 。使用 KGpg, 我只要双击一个目录并告诉程序打包加密之即可。KGpg 也允许你在桌面创建一个碎纸机,用于安全删除你放在里面的文件 (而不是目录)。这非常方便,尽管我建议你阅读作者的关于破碎文件的安全说明。KGpg 的易用性非常优秀;即使对新手来说,学习曲线也非常短。

GnuPG 的开发步伐非常文鼎,而且支持多种操作系统。它在多种 Unix 系统上都可以编译,而且通过 Gpg4Win 提供了 Windows 移植版本。对于 Unix 系统的邮件加密的支持性也非常可靠: 查询 GnuPG FAQ 的 4.15 节,可以看到提供 GnuPG 集成的邮件客户端的列表 (很遗憾,支持 OpenPGP 标准的 Windows 客户端十分少见)。关于更多的邮件工具,可以看看 Aegypten 项目。

关于加密的更多信息,两个不错的起点是对应的 Wikipedia 文章和 Cryptography FAQ.

Rui Lopes 是一个葡萄牙网页设计师和独立纸片人,在技术领域有广泛兴趣。


Wednesday, February 07, 2007

发现一个兼容性问题

Firefox 3.0a2pre 和 Google Pages 是有矛盾的,用了前者,后者的被编辑页面内容是空的。

降级回到 Debian Sid 的 Iceweasel 2.0.0.1 (也就是 Firefox 2.0.0.1) 才解决了问题,啥都正常了。

Wednesday, January 03, 2007

应用层再分层

偶真伟大阿,这种东东都敢想,哈哈

对很多应用层应用案例,可能可以分三个子层面,暂时按照王氏命名法,命名为

语义子层 semantics
表达子层 express
传输子层 transport

传输子层包含应用层信令, 传输内容的规格、长度等,例如 HTTP, SMTP 等
表达子层是应用层内容的基本表示形式、语法表达规范等,例如 MIME/Base64, XML 等
语义子层是应用层内容的与语义相对应的具体语法格式,例如 XHTML, RDF 等

对于传统的协议,可能有的协议会对应其中的多个子层,嗯,呵呵

偶也不知道 SOAP, SDP, WSDL 啥的到底应该怎么对应,不过,应该能对应上吧,至于那些不能对应的,呵呵,偶因为还不清楚,说不好怎么弄

Saturday, December 30, 2006

技术分类学问题

某领导要求对所有我们涉及到的技术进行分类,尽管他可以接受我们的观点——不存在一种完美的单一尺度分类法,把所有知识以 合适的粒度进行分类,毕竟当前我们面临的知识,至少是网状结构,根本就不是树。

可是,伊仍然希望我们给出一个漂亮的分类学体系,然后再把知识添加进去。而实际上,我个人相信,以自组织方式,通过多次迭代,建立几组索引,进行不完全分类可能更有利,我的立足点是:
  • 可类比性: 每组索引/分类尺度要使得纳入范围的知识条目具有可类比性。
  • 易于发现: 如果有人希望通过索引找到需要的东西,他不需要一个完整的分类法,而需要按照他希望的思路找到一个他可以接受的分类法,从而尽快找到目标就好。
同时,我更希望通过一个 Bug Tracking 机制,来不断丰富、修正我们的索引、分类,这个才是我认为合理的工作方式。

Wednesday, December 27, 2006

发泄一下

就算是头猪,用他的猪脑想想,都知道我有多大压力了,可我偏偏笑得太轻松,居然没有一个人会去想,而我,除了继续默默承受和继续轻松的微笑,还有什么其他的选择么?

Saturday, December 23, 2006

禁用盗版谁是赢家

Linux用户不会比现在少,对Linux不差。

盗版用户不会都转化成Linux用户,微软开心,毕竟基数足够大,而大部分人宁可付费也不会去掌握Linux的。

会有一部分人开始参与Linux, 对Linux有潜在的推动力,Linux现在具有购买成本的优势了。不过,Linux真的繁荣要靠拥有Linux思维方式的人的增加,这不是一时半会的事。

呵呵,还是没影的事呢,不琢磨了。

转一则新闻

未经证实,但严重支持。
出处: http://www.ben.com.cn/bjxw/fzxx/200612/t20061223_141476.htm



一科长使用盗版软件被撤职

此为本市首例

京报网 www.bjd.com.cn 日期:2006-12-23 00:00 网络编辑: 谢永利 字体显示: [我要评论]

作者:
  京报网讯(记者方芳)记者昨天从市使用正版软件工作领导小组办公室获悉,平谷区某单位一科长因在办公电脑里装载盗版软件被撤职,这是本市首个使用盗版软件被撤职的公务员。
  平谷区是全市最早完成政府部门使用正版软件工作的区县之一。全部装上正版国产软件后,为巩固成果,平谷信息办等相关职能部门加大了管理监控力度,专门成立了一个监督小组。
  平谷区某单位一位科长就撞到了监督小组的手上。这位科长为了能够玩游戏,数次卸载国产软件,换上盗版软件。监督小组查到后,第一次给予警告,之后又连续查到三四次,其单位给予这位科长撤职处分。
  市使用正版软件工作领导小组办公室有关负责人表示,对类似情况给予严肃处理反映了政府部门打击盗版的决心和力度,随着今年全市三级党政机关使用正版软件工作的全部结束,今后还将开发一些技术手段加强对党政机关办公系统的监督管理。

看到一个好玩的软件包

recordmydesktop

有空的时候试试,呵呵,貌似是录屏幕操作的视频/音频的。

Thursday, December 21, 2006

简单说说DNS配置

这里,适用于Debian的apt安装的bind9

上一级域名服务器的设置,如果需要通过其他服务器的辅助来提供对自己不管辖的域名提供解析,那么:
修改 /etc/named.conf.options 写下这么点东东:
forwarders {
211.68.71.4;
}
里面写上上级的域名服务器,有多个也可以写多个。

解析自己管辖地域的域名,修改 /etc/named.conf.local , 在里面加入自己解析的区域
zone "your.domain" {
type master;
file "db.yourname";
};
如果你的主机都是 xx.your.domain , 那就把你的域名写在这里。

还可以加域名的反向解析
zone "168.192.in-addr.arpa" {
type master;
file "db.reverse";
};
反向解析的意思就是,如果你管理的IP网段是 A.B.C.D , 那反向解析的域名就是 D.C.B.A.in-addr.arpa , 这里,区域是后面的部分,也就是网段的部分。

地址数据库的写法:
$TTL 604800
这个是更新时限,然后后面是一些这个域名数据库文件的更新时间的,设置
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
再往后就是域名更新会报告给谁
IN NS ns
ns IN A 127.0.0.1
IN是指internet地址,NS 是域名服务器,A 记录是主机名对应的ip地址,对于其他主机的解析

your.domain区域数据库里面
www IN A 192.168.10.8
是指 www.your.domain 对应的IP

168.192.in-addr.arpa 区域数据库里面
8.10 IN PTR www.your.domain.
是指 192.168.10.8 对应 www.your.domain

域名的最后有个点表示后面不需要加其他后缀了,否则还要把区域加上,如果要写全名,上面的A记录还可以写成
www.your.domain. IN A 192.168.10.8

MX记录,也就是邮件域名解析,这是邮件传递用的,比如 wangxu@a.b.c 中 a.b.c 对应的邮件传送主机一般和其他服务直接访问的主机不是同一台,而需要特殊的域名解析,比如:
your.domain. MX 10 mail.your.domain.
这里 10 是优先级,数字越小,优先级就越高,后面的 mail.your.domain. 就是邮件传送服务器,这里放的是域名,还要为他准备一个A记录,来找到主机
mail.your.domain. A 192.168.10.2

好了,就这么简单 :)

Sunday, December 17, 2006

为啥要用Linux的一个原因

Linux更健康: 相比于 Windows, Linux 用户用键盘操作更多一些,呵呵,双手均衡操作,对肩关节比较好——当然,不论你用什么,都最好别在计算机前面一坐一整天 :)

Friday, December 15, 2006

good, 一次测试成功!

前面那个 exim4 multiple smarthosts 的,哈哈

测试包括
  • 发送到内部邮件地址 (个人)
  • 发送到外部邮件地址
  • 发送到内部邮件地址 (邮件列表)
  • 同时发送到内部、外部邮件地址
呵呵,全面成功 :)

Thursday, December 14, 2006

尝试将邮件发送到多个smarthost

还没有完全测试,目前的情况来看,还算是成功,明天到实验室试试。

两个smarthost:
  • 实验室内部邮件通过内部的邮件服务器发送
  • 其余非本机邮件通过gmail邮箱发送
嗯,为了这个目的,分析了半天 exim4 的配置文件和手册……邮件服务器没一个简单的……exim 也这么复杂……

简要说一下,其实看明白了配置文件的分块也就差不多知道怎么下手了:配置文件里,一开始是配置、ACL 以及鉴权认证和其他一些设置的内容,至于邮件传送,主要是route和transport两个部分,两者是相对应的。感觉上,route是对进来的邮件进行处理,如果是本地的,就就地分拣、投递,反之,则利用 transport 送到其他主机去,而 smarthost 只是远程发送的一种方式,需要 route 部分看清哪些邮件要送到哪里,然后再在 transport 部分送到相应的主机去,对于 smarthost 这种方式,往往还要对邮件进行发件人的替换。

这个是对 route 部分新添加的(原有的就是 gmail smarthost 的设置),放在 gmail 部分的前面了:


smarthost_cg:
debug_print = "R: smarthost_cg for $local_part@$domain"
driver = manualroute
domains = ! +local_domains : +cg_domains
transport = remote_smtp_smarthost_cg
route_list = * cg.com.cn byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more


关键处被加红了,呵呵。然后在 transport 部分如法炮制

remote_smtp_smarthost_cg:
debug_print = "T: remote_smtp_smarthost_cg for $local_part@$domain"
driver = smtp
hosts_try_auth = ${if exists {CONFDIR/passwd.client}\
{${extract{1}{:}{cg.com.cn}}}\
{}\
}
tls_tempfail_tryclear = false
headers_rewrite = *@+local_domains wangxu@cg.com.cn frs : *@wangxu-doc.cn wangxu@cg.com.cn frs
return_path = ${if match_domain{$sender_address_domain}{+local_domains}{wangxu@cg.com.cn}{${if match_domain{$sender_address_domain}{wangxu-doc.cn}{wangxu@cg.com.cn}fail}}}


headers rewrite 和 return path 部分是根据 /var/lib/exim4/ 中的 exim4 运行时配置文件改写的,呵呵,另外,前面需要定义一个 cg_domains 列表,也就是内部邮件的域名,呵呵。

passwd.client 文件中分别写出两个 smarthost 的用户名和密码,这个就不多说了,提一下,gmail 的应该写 gmail-smtp.l.google.com , 虽然有点跑题,但也算是有点用吧,呵呵。

嗯,上述内容测试还不完整,待完整后补充、发布到主页吧,呵呵,目前发送到 gmail 是正常的,发送到内部邮件系统的会去尝试内部邮件系统,不过,无奈,当前我没有接在局域网上,日志中显示是连接超时,貌似正常,呵呵,待明天一试。

Sunday, December 10, 2006

记一下NV驱动支持beryl的参数设置

对于使用NVidia官方驱动的情况,需要在 xorg.conf 中显卡的 Device Section 使用参数

Option "AddARGBGLXVisuals" "On"

否则,会出现没有标题栏和窗口边框的问题。来源: google+beryl 官方论坛

给个参考链接,来自 beryl 官方 wiki (昨天搞的时候还 Google 不到这个):
http://wiki.beryl-project.org/index.php?title=Troubles/nVidia

Saturday, December 09, 2006

整合显卡和独立显卡3D性能差距好明显阿

Sigh! 低端显卡GeForce4 MX 440跑Beryl的Bench Mark居然超过200,是我的855GM整合显卡的5倍以上……后者比前者要新不少……不知道这里面有多少是开源驱动和NV的驱动之间的差距。

Thursday, December 07, 2006

专业的……

去校医院验血,顺便求大夫开了个单子验血型,大夫开了两张……后来,收费的mm在一张上盖了章,跟我说,让大夫把血型也加上就行了……

回到大夫那里,大夫把收费mm一顿奚落,说这两个是抽不同的血的

无奈回去找收费mm, 她倒是很nice, 给另一张也盖上了章,说收费已经收过了,不用再交一个费了

然后去抽血,化验的jj只抽了一管血,我问了一下,她说……这个也可以顺便测血型……

怪哉阿,哪个是专业的呢?

Monday, December 04, 2006

感受了一回咱北京的窗口

我是北京的三代移民,祖父母、外祖父母都是解放前来北京打工并定居的,自己也在北京出生、长大,怕挨骂,不敢说是北京人,可也算是对咱们北京有点感情了吧。总是觉得北京人受到的一些批评有点冤枉,不过,昨天在北京的两大窗口:北京站和北京西站转了一圈儿,觉得,我要是第一次来北京,也得骂骂“北京人”。

先说说我的传统观点:北京和其他城市都差不多,哪没有点菁英,哪没几个Bug阿,是吧。从其他城市来到北京的学生们大多审美标准比较高,毕竟自己已经是“天之骄子”了嘛,看着北京也有不如自己家乡的Bug, 自然气不顺。可是,大多数北京市民还是和诸位的同乡一样的一样的,所以,其实我们没有必要非要理会那一部分自以为是的“北京人”,何况,他们其实可能也就是二代移民,还没我们家来北京时间长呢不是。要我说阿,“北京人”和“外地人”这样的称谓在某种程度上本身就是一种地域歧视,和“黑人”在某种程度上是一种种族歧视一样;而且这个歧视还是相互的,就目前来看,“北京人”也很受歧视,呵呵。唉,何苦呢,我们完全没有必要按区域划一条线,说“我们”和“你们”。

不过,昨天,走了一趟北京站-西站,算是领教了“地头蛇”了
  1. 在北京站,一辆出租车在北京站前,问去哪,在得到“西站”的回答后,立刻喊价100,我ft, 要不是赶火车,我非得和他理论一下不可,就算我打一个来回,打表也到不了100吧,简直是开玩笑阿,真是,“外地人,宰你没商量”阿……
  2. 送走了人,我和女朋友先后去了西站边上的建行和邮局,先是建行,服务态度不好,(不过大堂经理服务态度还挺好的),而且,操作十分不规范;然后是邮局,我们存钱,他居然给我们脸色看,只是因为我们把卡和钱放到窗口的凹槽里(标准位置),她坐着有点够不到,我就帮她推了一下,推得有些晚、不太主动而已,完成后,我们送回签字的单子,她又够不到,这次,我和女朋友谁都没有推,而是转身走开……想想我们学校的邮局,即使只是查询余额,她们最后都会非常有礼貌的站起来交还我们的卡,是什么带来了这么大的差距??
  3. 之后,我们准备坐公交车回来,在一辆722门前,问正在聊天的售票员是否到学院路,可能我真的耳背,居然说了三次都没听清她到底说的是“到”还是“没到”,于是,她说“你挺不懂阿?!” 料想吵架我一定不会赢她,偶只好说,“哦,我不坐了!” 然后,转身离去。
女朋友问我,如果你是第一次来北京,今天这样,你还会觉得北京人不错么? 北京人真的怎么样已经不重要了,如果就经历这么几个人,我会恨透这些人,现在,我觉得网上骂北京人的那些兄弟们真是含蓄,真的已经很留面子了阿……

这就是我们北京的窗口??

Friday, December 01, 2006

又干了一次系统搬家的事

呵呵,这次是为笔记本换硬盘,用了一个USB硬盘盒辅助,使用 tar 和管道,把硬盘数据做了一次搬家,挪到了新硬盘上,然后用新硬盘工作,当然,还安装了一次 grub, 已经另文描述了,呵呵。

感觉:
  1. /usr/share/doc下的东东真多......
  2. beagle真浪费硬盘,实际用途有限,以后不用了......
  3. prolific pl2506芯片的硬盘盒不错,兼容性和稳定性很好

关于用 Live CD 安装 grub 的一点心得

今天换装新硬盘的时候,因为新硬盘没有 grub, 只好动用带有 damn small linux 的U盘来启动系统。不过,即使从U盘系统 chroot 到硬盘系统里,也很难运行 grub/grub-install来给硬盘安装 grub,找不到 /dev下面的很多东东。

所以,我尝试使用 mount -o bind 把 Live CD 系统里的 /dev, /proc 挂到硬盘系统的相应位置,然后再 chroot 来安装 grub, 经尝试是成功的。 :)