October 2006 Archives

人世间最痛苦的事情

| 2 Comments | No TrackBacks

人真是很复杂的动物。最近接二连三地听到一些消息,几年前我自己也曾经有过“智者不惑,仁者不忧,勇者不惧”这样的豪言壮语,可是今天看来,这些想法实在是Too simple, sometimes naive。太多的事情,知道了的人,甭管跟自己有关没关,都不会很快乐。我以前很乐于帮别人保守秘密,以至于自己知道了太多人的、很可能一辈子都不能公开的事情。

前一阵在为cn.freebsd.org的邮件列表做维护时发现,由于网易的邮件系统无法正确地(更具体地说,是以符合标准的方式)进行退信,导致一些无效地址仍然在不停地接收邮件,导致邮件系统的管理员必须手动处理这些退信产生的报告。后来在挖掘了mailman的文档之后,发现它支持djb的VERP退信。

相比处理符合标准的退信来说,VERP所需的编码量更少,并且对于不符合标准的退信也能够做很好的处理。从开销上说,由于VERP不需要parse整封邮件,因此也不会导致性能上的折损,甚至由于不需要进行任何解信操作,这种做法在性能上应该会优于标准的做法。

今天看到FreeBSD 6.2-RELEASE的packages已经传到i386的R了,不知道什么时候解冻呢?

之前没体会,现在发现,从学校到电信骨干再到小网通,要比从学校直接连小网通快许多。莫非学校是用的电信的网络?

RSA和Caesar的Python实现

| No Comments | No TrackBacks

写了两个小程序,分别实现了RSA和Caesar(rot13)算法。感觉自己写命令行程序UI的能力下降了:(

KSE成为内核选项

| No Comments | No TrackBacks

今天,John Birrell同学commit了一个不大不小的patchset——将KSE变为内核选项。具体说来,在-CURRENT上,KSE不再是一个必选项了。

KSE是FreeBSD 5.0-CURRENT时的一个非常重要的技术探索,它是对由华盛顿大学THOMAS E. ANDERSON等人提出的调度器激活概念的一个实现。

对于M:N线程来说,调度器激活是一项十分先进的概念。在这个模型中,内核并不需要了解用户态线程的细节,而用户态线程也并不是由内核直接调度,相反,这些线程被绑定到一系列“调度实体”上,内核能够看到这些调度实体,并在上下文切换时激活用户态的线程调度器。由于减少了内核-用户态的上下文切换操作,因此理论上这一模型能够获得更好的性能。

调试进行时

| No Comments | No TrackBacks

昨天深夜被李逵同学的电话叫醒,被告知新上线的一个Python应用发生了一个回归问题——一个使用了C模块的程序经常自己退出。

由于这个C模块已经几年没有改过了,加上没有coredump文件,因此调试起来非常困难。另一方面,我们的代码也是一行没改,因此很难确定到底是什么出了问题。李逵坚持认为这个问题是由于Python的编译配置不当引起的。天地良心……编译配置就是之前的配置,不过我还是想办法重编了一套,后来听这家伙说,他没有选pymalloc。

在Google上面查了一下,发现有人说,pymalloc会“break some applications that did not follow the API”。晕了,这个问题是Python 2.1时候的问题,不过无论如何,急病乱投医,改改看。

结果发现还是有问题。从目前已经发现的故障现象看,这个问题并不是可以可靠重现的,更大的可能是某些程序以某种方式在Python解释器中打出了“内伤”,并在一定的条件下发作。这个问题确实需要仔细跟一跟,但是第一步,无论如何要把重现条件找到。大家有Python解释器调试经验的,一起交流一下?

机房啊,机房……

| No Comments | No TrackBacks

说说这周发生的事情。

这周初步解决了困扰很久的ssh密码扫描蠕虫的问题。习惯上我是上来就禁止口令登录的,所以这种扫描(据蜘蛛说,这是一种叫做scanssh的虫子,不过我手头没有蜜罐资源,所以也就没有捕捉样本)没什么用,不过这种虫子讨厌的地方在于它能够花费几个小时的时间去穷举你的口令,而且是不同的帐号,这会产生几百KB的日志。

有点不能忍了……

| No Comments | No TrackBacks

受不了公司某些部门了……刚开始准备大干一场,今天又得到一个噩耗 :(

传统上判断操作系统是通过扫描进行的,例如,发一个SYN+FIN的包,看对方如何回应,由于各式各样的原因,包括性能考虑,或编程上的疏忽,这些包会留有一些特征。这类典型的应用是nmapNetCraft

这类方法有它的作用,对于尝试攻击的人来说,这些特征能够给他们相当多的信息,这些信息甚至足以让攻击者找到一击毙命的攻击方法(例如,发现那是一台没有打过补丁、没有防火墙的Windows)。然而,它也有一些不可避免的局限:

- 并不是所有地区的法律都允许网络扫描行为。除此之外,这种行为通常也是不受欢迎的,至少它不是一种友好的行为。(事实上,发生在互联网上的扫描行为几乎都不是友善的)
- 对于NAT后的服务器,它只能判断出NAT网关所用的操作系统,而无法判断其后的系统所用的操作系统。
- 事后的“反击”或“报复”性扫描往往于事无补,在第一击的时候遏制攻击,对于安全相当重要。

之前一直有些头疼的ssh虫问题,很令人吃惊地找到了一个解决方法。在扫描感染IP的TCP特征之后,发现这些机器的共同特征——他们都用的是Linux。

很幸运地,我不使用Linux,FreeBSD附带的pf提供了一项非常有意思的强大能力(这项能力源于OpenBSD的pf),即按操作系统来控制访问。其它用法还包括例如,禁止没有打补丁的Windows访问,让不同用的操作系统访问得到不同的内容等等。

考虑到Linux如此容易感染ssh蠕虫,我决定采用下述pf策略:

block in quick proto tcp from any os "Linux" to any port ssh

昨天回家想看信,但是因为信箱里面的邮件实在太多,因此使用一个标准的MUA并不现实,于是架了一个RoundCube出来。这个Webmail系统功能不算多,不过该有的几乎都有了……

决定reboot之前彻底封禁来自这些机器的IP包。

58.181.2.72
60.31.211.5
60.248.202.210
61.154.12.95
67.15.164.194
67.15.197.26
202.8.85.116
202.111.128.231
210.13.41.1
210.29.163.57
210.117.6.185
210.221.221.57
211.95.160.46
211.99.194.3
211.147.224.41
211.150.123.229
218.1.65.233
218.23.49.228
218.31.157.27
218.55.227.175
218.188.0.56
218.249.15.254

网站上的消息。这可能对FreeBSD 6.2-RELEASE造成一定的影响(re@的负责人Ken Smith在水牛城大学计算科学与工程系),不过,re@的其它committer将继续此项责任。

如何撰写高质量论文?zz

| 1 Comment | No TrackBacks

原本很遗憾错过了这次讲座,幸运的是,有人把它记下来了~

转载自Top-Quality Paper
(来源于9月28日下午计算机学院开展的“如何撰写高质量论文”的讲座)

1.Why write a scientific paper?
* Advance Knowledge in your research field with evidence;
* Explain your ideas;
* Two key components in a research paper:
- An explicit claim on your contribution on a research problem;
- Evidence to support your claim;
* Your contribution can possibly be a refutation of a hypothesis of the present problem.

关于未来的一些想法

| No Comments | No TrackBacks

随便的记下一些想法,其实更确切地说,并不是想法,而是一些困惑。

明天陈总(gokeeper)大婚

| No Comments | No TrackBacks

如题。

BTW,上面那两个字让我想起了他在网易社区的个人版——结绳记事……

GNOME 2.16 committed

| 2 Comments | No TrackBacks

没想到这么快……不过已经装了桌面的同学们,hia hia hia

今天终于尘埃落定了:

perky 2006-10-13 07:16:45 UTC

FreeBSD ports repository

Modified files:
Mk bsd.python.mk
lang/python Makefile
lang/python24 Makefile pkg-plist
lang/python24/files patch-setup.py
lang/python25 Makefile pkg-plist
lang/python25/files patch-setup.py
Log:
Revert the default version of Python to 2.4 for the ports freeze
period. Python 2.5 brought a vast range of incompatibility to a
large number of ports, so the python@ team will do more basic
compatibility work in a private repository and merge it later.
Sorry for the inconvenience.

Approved by: portmgr (kris)

Revision Changes Path
1.85 +5 -5 ports/Mk/bsd.python.mk
1.157 +5 -4 ports/lang/python/Makefile
1.155 +5 -3 ports/lang/python24/Makefile
1.10 +0 -10 ports/lang/python24/files/patch-setup.py
1.61 +5 -0 ports/lang/python24/pkg-plist
1.143 +3 -7 ports/lang/python25/Makefile
1.14 +10 -0 ports/lang/python25/files/patch-setup.py
1.68 +0 -7 ports/lang/python25/pkg-plist

To quote M. Warner Losh (with permission):

So long as there's old code, you can't replace the copyright, unless the old code that remains is not protectable by copyright any more (eg, if it is just { and } lines).

If you add your own implementation of the 50 lines in question, or
move them to a separate file, then you can put your own
copyright/license statement on the code you wrote.

In conclusion:

It does matter how trivial the code is. Even the case is 50 vs 2100 (~2$), license can not be altered. However, if the only left-off is not protectable ({, } lines), then the code is completely yours so changing license is fine.

(The original question was mentioned in -developers@, but I think the information is useful so I have requested for permission to copy it here. The file was moved to 2 clause license because OpenBSD has did the change with author's permission).

FreeBSD基金会募捐

| No Comments | No TrackBacks

FreeBSD基金会 又一次面临501(c)(3)资格问题。建议有此财力的人适当捐一些来帮助基金会达到募捐的要求。详情请参见首页。

参加人员:delphij, nemo, quakelee, 黑山老妖, 端木, liu8han, 蛇s, 丁舜佳, liukang, monkeyfu。

地点:九门大胡同
时间:2006年10月11日 19:00左右。

请密切注意此处的通知。

dengxf同学提到的一个问题,想了一下,想到的一个算法:

令x为已知量,y为目标量,k为迭代轮数,

1: 令y=x-1,k=0
2: 对于 y 右移 2^k 位 > 0的情形,执行下列操作,直到此条件不符合为止:
y与前述结果相与;k累进1。
3: y累进1。

原理:第(2)步的循环将除最高位的所有0均置位。最后一步(3)修正这一值。

但是感觉不太好,有没有更好的办法呢?

trac的ticket notification

| No Comments | No TrackBacks

半作弊条性质。

找到trac环境目录。

进入其下的conf,揪出trac.ini
编辑,找到下面的段落替换为类似的内容

[notification]
always_notify_owner = true
smtp_always_cc = !!你的邮件列表名字!!
smtp_password = !!密码!!
smtp_enabled = yes
smtp_replyto = !!回复给谁?通常是管理员或留空!!
smtp_port = 25
always_notify_reporter = yes
smtp_server = !!邮件服务器名字!!
smtp_from = !!邮件以谁的身份发出?通常是trac管理员!!
smtp_user = !!登录邮件服务器的用户名!!

调试:


[logging]
log_file = trac.log
log_level = DEBUG
log_type = none
中的log_type=改为= file,然后去log/trac.log蹲点。调好改回。

少年先锋队队歌 zz

| No Comments | No TrackBacks

今天突发奇想找到的。

我们是共产主义接班人,
继承革命先辈光荣传统,
爱祖国,爱人民,
鲜艳的红领巾飘扬在前胸。
不怕困难,不怕牺牲,顽强学习,
坚决斗争,向着胜利勇敢前进,
向着胜利勇敢前进,前进,
向着胜利勇敢前进,
我们是共产主义接班人。

For those who does not track FreeBSD-CURRENT -current@, Andre Opperamann (andre@) has just posted a new progress for his TCP/IP optimization:

This is a continuation of the previous postings with similiar titles.

New is a specific soreceive_stream() function for stream protocols (primarily TCP)
that does only one socket buffer lock per socket read instead of one per data mbuf
copied to userland. When doing netperf tests with WITNESS (full lock tracking and
validation enabled) the receive performance increases from ~360Mbit/s to ~520Mbit/s.
Without WITNESS I could not measure any statistically significant improvement on a
otherwise unloaded machine. The reason is two-fold: 1) per packet we do a wakeup
and readv() is pretty much as many times as packets come it, thus the general over-
head dominates; 2) the packet input path has a pretty high overhead too. On heavily
loaded machines which do a lot of high speed receives a performance increase should
be measureable.

This patch rolls the improved sendfile(2), sosend_*() and soreceive_stream()
functions. In general the send path is improved by between 2.8 and 5.7 times.

The patch is available here:
http://people.freebsd.org/~andre/sendfile+sosend+soreceive-20061006.diff

Any testing and heavy (code) beating and reviews welcome.

An internal discussion happened in -developers@ has finally decided that we put ULE scheduler back to the "experimental" state, in order to reduce the number of reports about crashes and other bad things for it.

Currently the fact that ULE is not being actively maintained is the cause of this change. We hope that we can find someone who has interest on it. Additionally, it is worthy to have a look at David Xu's new "CORE" scheduler (a ULE fork, using Linux's algorithm).

Note that ULE is still provided in NOTES so we can make sure that we do not break it badly.

以下内容为作弊条,仅供参考;只保证在FreeBSD下能用。

为postfix配置TLS的关键是产生自己的CA证书,并签署一年一续的服务证书。注意一定要保管好前者的私钥!

第一步,创建自签名CA:

mkdir /usr/local/etc/ca
cd /usr/local/etc/ca
mkdir certs crl newcerts private
echo “01” > serial
cp /dev/null index.txt
cp /etc/ssl/openssl.cnf openssl.cnf
vi openssl.cnf

升级到了trac 0.10

| 1 Comment | No TrackBacks

之前zoomq同学说trac-dev版本很好用,不过我总觉得在如此重要的生产系统上玩CURRENT一类的东西是给自己找麻烦,可是trac的发行版本一直都没有出,直到前几天扫描PR,发现宋政隆同学已经提交了一个patch,于是直接升级了。

没听说过trac,专职做开发的同学请自觉面壁一分钟 :P

转载请注明出处: http://blog.delphij.net

域名服务与邮件服务一样,是非常重要的互联网基础服务。与几年前动辄每年几十$,到现今最低至1.99$的注册服务,域名注册服务商能够从中获取的利润也越来越少。

为了解决利润的问题,多数域名注册服务提供商(Registrar)会捆绑销售一些其它的产品,例如虚拟主机、企业邮箱,乃至新兴的个人blog等等。透过这些服务,他们能够获取更多的利润,同时,这些服务也满足了一些不愿或不会自己架设域名、主页、邮件服务器的用户的需要。幸运的是,这些用户占全部用户总数中的绝大多数。

这里将要讨论的是愿意花费时间精力,并且有能力自己架设域名解析、主页和邮件等服务的用户的需求。首先,架设域名解析等服务器是需要有一些投入的,另一方面,在这种情况下,往往域名注册服务提供商提供的其它服务,例如虚拟主机等,就不再是必要或完全是多余的了,因此,此时价格、可靠性等就成了最大的决定性因素。

The patch is available at: http://people.freebsd.org/~delphij/for_review/bsd_gzip/. Please note that this is considered experimental and it is preliminary for FreeBSD for now, while I think it is very mature code and has been available on NetBSD for years. Positive and negative feedbacks are all welcome.

这日子没法过了

| No Comments | No TrackBacks

今天是10月2号,照例从电钻的噪声中吵醒。真有点想冲到楼上、楼下去骂人。

国庆

| 1 Comment | No TrackBacks

好好睡了一觉。今年国庆北京的交通拥堵现象依旧,不打算尝试去太远的地方了。

BTW. 端木同学今天正式进入奔三的年纪,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

总算支持了……这款声卡见于Dell Latitude D620/D820机型。

我准备杀掉GNU gzip

| No Comments | No TrackBacks

最近一周FreeBSD发布了多个安全公告,其中有一个gzip的安全问题是Google的人发现的,由于gzip目前已经长期处于无人维护的状态,我认为是时候把这个程序杀掉了。(这次安全更新导致了某些文件无法解压缩)

目前,比较显然的替代品是利用libz实现的BSD gzip。打算在十一期间抽些时间来做这件事。

Monthly Archives

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.2.3