Archive

Archive for May, 2007

个人信息管理软件——todo/任务/日程表

May 18th, 2007 Fwolf 1 comment

Tomboy算是不错的便签软件了,但我还是觉得不够好用,我希望有一个这样的软件:

  • 能够记下我想要作的事情。
  • 能够在我作的时候,记下笔记。
  • 完成的不删除,存档起来供日后查看。
  • 有大的任务能够拆成小的,一项一项来完成。
  • 最好能够和日历结合起来,知道今天该作什么。
  • 有优先级和重要程度标记,紧急的、重要的要先作。
  • 离线使用,不依赖网络,便于管理,效率高。

但找了一大圈,始终没有十分满意的,下面是一些我试过的,以及一点感受,希望对有同等需要的朋友有帮助。

最开始是在便签软件中探索:

knotes 太简单了,只有条目,没有保存历史功能,无法记录笔记。

note 命令行界面,简单小巧,能写东西(vi),但时间的字体有些暗,命令行用起来也不方便。

notebook-gtk2 根本就没法用,点什么都没有反应。

notecase 纯记录东西来说,比tomboy方便,但是无法记录富格式文本,删除(完成)的note仍然无法管理。

rhinote 只能记一个,别的什么也干不了。

xfce4-notes-plugin 过于简单,同样是只能记录的小纸条

然后转向todo任务管理软件:

devtodo 字符界面,带优先级,可查看已删除项,但无法记录详细笔记。

gpe-todo: 总是莫名其妙得退出。

Segmentation fault

gtodo 优先级、查看已完成项都有,就是详细记录(comment)太小了,记不下太多东西,也不支持富文本。已删除的项管理方式也不是很理想。

又从wikipedia上扒出来几个综合的pim软件:

Chandler 侧重于calendar管理,整个一google calendar的离线版。

OpenSync 同步工具,虽然也可以在pim软件之间同步数据,但相信更多的是用于手机、PDA等设备。

Task Coach 侧重于任务管理,尤其适用于需要对大型任务进行分解,逐项管理子人物的情况。需要

python-wxversion python-wxgtk2.8

的支持。 个人觉得比较理想,但似乎在Ubuntu 7.04下安装不能运行,总提示No module named taskcoachlib

其他的像ThunderBird、Evolution什么的就不考虑了,太笨重,继续寻找ing。

Update @ 2007-11-21

Ubuntu Gutsy 7.10下运行Task Coach成功,需要安装python-wxgtk2.8包,中文输入的问题在Edit->Preference, Language中选择Simplified Chinese后,重启应用,换成中文界面之后顺利解决。参考

Related posts

Categories: Tools Tags: , , ,

流氓软件与流氓

May 18th, 2007 Fwolf 1 comment

流氓软件,这个名字最近暴光率很高嘛,甚至还成立了一个反流氓软件联盟,还要立法。其实,很多人连什么是流氓软件都不知道捏。别着急,这篇文章就是为你准备的,希望大家能够用生活中的经验来理解软件或者网站,你会发现它们之间有那么多的相似之处。

先说几个容易理解的:

商业软件,共享软件,免费软件,开源软件

  • 商业软件就是正规公司,正常作生意的企业。
  • 共享软件就像公园里的游乐场,进公园不要钱,到要想玩游乐设施,掏钱。(指有限的免费功能,请意会)
  • 免费软件就是义工,不要钱,做好事,公园门口免费理发的。
  • 开源软件就是下岗职工再就业培训中心,什么都教你,但如何赚钱还得靠自己,发展好了自己也可以帮助其他下岗职工。

大网站,小网站,教育网站,个人网站

  • 大网站当然就是大公司了。
  • 小网站是个体户,提供的商品和服务有些并不比大公司差。
  • 教育网站就是教育机构,和现实中一样,除了少数有良知的好老师之外,大部分教育机构都很难让学生学到真正的知识。
  • 个人网站,就是你身边的个人,各自有着不同的爱好或任务,天天从你身边路过。

下面进入正题:

广告软件/网站广告、流氓软件/流氓网站、恶意软件/恶意网站

  • 广告软件/网站广告;广告是正常的,是软件或网站的谋生手段之一,就像大家看电视的时候已经习惯节目之间有些广告了。不过,量变会引发质变,或许你习惯了“走马灯”或者“画中画”式的广告,但我想你无论如何也无法忍受长达半个小时的壮阳药广告在孩子面前播放吧?
  • 流氓软件/流氓网站:这些软件或者网站就是身边的小流氓、骗子一样,想尽一切办法装作正人君子接近你,蒙骗你,比如一些软件告诉你我有若干若干功能,装上我吧,其实就是拿维生素当高级保健品卖的骗子;再比如成天尾随美丽姑娘的小流氓,和那些千方百计想让你把他们设置为首页、加入收藏夹的网站没什么两样,什么“按Ctrl+D有惊喜发现”,别做梦了,那是加入收藏夹的快捷键!
  • 恶意软件/恶意网站:这些就是明偷和明抢啊,钻进你的计算机,赖在你的IE上,死活就是不走,还不如小偷和强盗呢,人家把钱财抢到手之后就跑路了,可恶意软件/恶意网站还要继续QJ用户的电脑。。。

病毒、木马

  • 病毒,特点是传播性,就像家里的蟑螂、白蚁,会自己跑到邻居家一样;当然还少不了破坏性。
  • 木马,现在不打仗了,特洛伊城也早没了,但一说扫黄,有些场所早早就关门休息了,有内鬼通风报信啊。

还有一些或许不着边际的:

  • 大企业也会出次品,不过远没有大网站上的赚钱项目、美女脱衣多啊。
  • 店大欺客,大网站封你的号没商量。
  • 温馨小店,有些小网站不仅内容好,站长还非常热心。
  • 问路收费,有些高人自己办网站讲解高端技术内幕还不收钱捏。
  • 苏州AV女郎都上了医院广告牌了,网上转载一些文章不署名、不加链接算个球!
  • 网上赚钱美女的诱人标题,就和“老同学,好久不见了”这样的短信一样,打开一看不是买枪支弹药就是办证刻章。
  • 著名的“亚洲交友中心”拉下线式的赚钱网站,和传销没有本质区别。
  • 如果看电视广告也按播放次数付费的话,我退休的大姨绝对能拿到年薪10万!

互联网就像现在的社会一样,在大街上一定要瞪大眼睛,提高警惕,注意自身安全,有问题找警察SS。

参考:

Related posts

Categories: Internet, Thinks, funny Tags:

Ubuntu从源升级的一点心得

May 7th, 2007 Fwolf 5 comments

使用Ubuntu,从5.10 Breezy到6.06 Dapper, 6.10 Edgy, 7.04 Feisty一路走来,每次都是直接从源升级,因为update-manager对我来说太慢了,算是有了一点点经验吧,不成系统,仅供参考。

速度与耐心

升级的下载速度和处理速度都要耗费大量时间,最好有一个快点的源,关掉其他任务,以提高效率。

vi /etc/apt/source.list
sudo aptitude update
sudo aptitude upgrade
sudo aptitude install
sudo aptitude dist-upgrade

aptitude带上install, upgrade, dist-upgrade要多运行几遍,确认确实没有问题了再重启,有的时候第一次运行未必就能把所有软件更新到最新。

另外aptitude和apt-get可以来回混着用用,这两个软件看似相似,又似乎有一些不太一样的地方,有时候这个卡住了,用那个就可以继续。

一般认为aptitude比apt-get能够更好的解决包依赖性问题,不过有的时候我们的确需要绕过依赖关系,这时候用哪个就自己尝试喽。

老大难的Python

Ubuntu中最难升级的不是内核(别人都编译好了的嘛),而是Python,每次升级都会遇到和Python相关的一大堆依赖性问题,处理方式主要有两种:

  • 通过aptitude install指定安装部分python包,这样依赖性关系更好解决一些,处理完一部分,再处理另外一部分就轻松些了。
  • aptitude提示删除的时候要小心一些,如果是正常删除旧包用新的替代还好,有时候遇到难解决的问题经常让你删了xserver或者ubuntu-desktop什么的,一般不要同意。
  • python版本升级会带来更大的灾难,实在没办法的时候可以考虑修改/usr/bin/python,这个文件是一个链接文件,如果他是指向python2.5,那么就修改为python2.4试试,反正升级完成之后再修改回来,有的时候包升级的顺序不同,会导致青黄不接的情况,需要把python暂时降级。

配置文件尽量单独保存

这样在升级的时候不容易被覆盖,同时把自己的个性设置和系统默认设置分开,管理起来更方便。

及时删除不用的内核版本

本身不影响使用,就是升级的时候影响处理速度,反正也没用了,干嘛不删,注意当前正在使用的内核版本不要删除。

敢于拔掉钉子户

有些包有着乱绕或者互锁的依赖性关系,无法处理的时候不妨删除一个试试,不过最好记下来包的名字方便以后查找问题,另外一些关键的包比如apt, aptitude, dpkg, tar, zip什么的千万别删。

不要傻等

如果出现:

Resolving dependencies...
Open:5953; closed: 4999; defer: 0; conflict: 11
No solution found within the allotted time.  Try harder? [Y/n]

这样的文字,提示在指定的时间内没有找到解决依赖性问题的方案时,趁早用其他的方式吧,如果你回答Y,不仅要不厌其烦的等待下一次提示,而且找到天亮也找不出方案来。

零敲碎打

永远不要太着急,装上一个是一个,更新一个是一个,问题需要一个一个的解决。

最好还能有另外一台能用的电脑,这样即方便查一些包的资料,还能打发升级中的空闲时间。:)

学会“忘记”

有时候走进依赖陷阱之后,动弹不得,安也不让,卸也不让,实在没法作什么了,试试:

cd /var/lib/dpkg
mv status status.bak
touch status

然后再继续upgrade什么的,系统就会忘记以前已经成为死套的依赖性问题,重新开始计算了。不过此招慎用,文件删除之后,系统要把所有已经安装过的程序全部都configure一遍,极其耗时。

其实真正起作用的,是这个文件中和结成死套的那几个包相关的内容,用vi编辑,把那几个包的内容删除就可以了,注意备份!

Related posts

Categories: Linux Tags:

HTTP Referer二三事

May 5th, 2007 Fwolf 3 comments

什么是HTTP Referer

简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。

我的问题

我刚刚把feed阅读器改变为Gregarius,但他不像我以前用的liferea,访问新浪博客的时候,无法显示其中的图片,提示“此图片仅限于新浪博客用户交流与沟通”,我知道,这就是HTTP Referer导致的。

由于我上网客户端配置的特殊性,首先怀疑是squid的问题,但通过实验排除了,不过同时发现了一个Squid和Tor、Privoxy协同使用的隐私泄露问题,留待以后研究。

Gregarius能处理这个问题么?

答案是否定的,因为Gregarius只是负责输出html代码,而对图像的访问是有客户端浏览器向服务器请求的。

不过,安装个firefox扩展也许能解决问题,文中推荐的”Send Referrer”我没有找到,但发现另外一个可用的:”RefControl“,可以根据访问网站的不同,控制使用不同的Referer。

但是我不喜欢用Firefox扩展来解决问题,因为我觉得他效率太低,所以我用更好的方式——Privoxy。

Privoxy真棒

在Privoxy的default.action中添加两行:

{+hide-referrer{forge}}
.album.sina.com.cn

这样Gregarius中新浪博客的图片就出来了吧?+hide-referrer是Privoxy的一个过滤器,设置访问时对HTTP Referer的处理方式,后面的forge代表用访问地址当作Refere的,还可以换成block,代表取消Referer,或者直接把需要用的Referer网址写在这里。

用Privoxy比用Firefox简单的多,赶紧吧。

From https to http

我还发现,从一个https页面上的链接访问到一个非加密的http页面的时候,在http页面上是检查不到HTTP Referer的,比如当我点击自己的https页面下面的w3c xhtml验证图标(网址为http://validator.w3.org/check?uri=referer),从来都无法完成校验,提示:

No Referer header found!

原来,在http协议的rfc文档中有定义:

15.1.3 Encoding Sensitive Information in URI's

...

   Clients SHOULD NOT include a Referer header field in a (non-secure)
   HTTP request if the referring page was transferred with a secure
   protocol.

这样是出于安全的考虑,访问非加密页时,如果来源是加密页,客户端不发送Referer,IE一直都是这样实现的Firefox浏览器也不例外。但这并不影响从加密页到加密页的访问。

Firefox中关于Referer的设置

都在里,有两个键值:

  • network.http.sendRefererHeader (default=2) 设置Referer的发送方式,0为完全不发送,1为只在点击链接时发送,在访问页面中的图像什么的时候不发送,2为始终发送。参见Privacy Tip #3: Block Referer Headers in Firefox

  • network.http.sendSecureXSiteReferrer (default=true) 设置从一个加密页访问到另外一个加密页的时候是否发送Referer,true为发送,false为不发送。

利用Referer防止图片盗链

虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。实现一般都是通过apache的配置文件,首先设置允许访问的地址,标记下来:

# 只允许来自domain.com的访问,图片可能就放置在domain.com网站的页面上
SetEnvIfNoCase Referer "^http://www.domain.com/" local_ref
# 直接通过地址访问
SetEnvIf Referer "^$" local_ref

然后再规定被标记了的访问才被允许:

<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

或者

<Directory /web/images>
   Order Deny,Allow
   Deny from all
   Allow from env=local_ref
</Directory>

这方面的文章网上很多,参考:

不要使用Rerferer的地方

不要把Rerferer用在身份验证或者其他非常重要的检查上,因为Rerferer非常容易在客户端被改变,不管是通过上面介绍的Firefox扩展,或者是Privoxy,甚至是libcurl的调用,所以Rerferer数据非常之不可信。

如果你想限制用户必须从某个入口页面访问的话,与其使用Referer,不如使用session,在入口页面写入session,然后在其他页面检查,如果用户没有访问过入口页面,那么对应的session就不存在,参见这里的讨论。不过和上面说的一样,也不要过于相信这种方式的“验证”结果。

个人感觉现在Rerferer除了用在防盗链,其他用途最多的就是访问统计,比如统计用户都是从哪里的链接访问过来的等等。

Related posts

Categories: Apache, Internet, Tools Tags: , , ,

FeedBurner不认我的Feed了

May 5th, 2007 Fwolf No comments

突然发现,我最近写的几篇文章都没有被rss阅读器收录,以致于我也无法用email转发到其他镜像上去,本来以为是FeedBurner等网站访问国内受阻,今天无意中使用FeedValidator检查才发现,无法访问我的feed!同时,GoogleReader也无法访问,看来真的是出问题了。

FeedBurner的错误提示为:

There is an issue that must be addressed with your source feed for the feed "Fwolf's Blog"

Read timed out

FeedValidatorW3C的feed检查工具(似乎W3C使用的是FeedValidator的开源程序,可以在这里下载,同时在sf.net上也登记了,不过没在上面发布文件),都会返回超时错误:

Server returned timed out

偶尔还会返回更离谱的错误信息:

Server returned (104, 'Connection reset by peer')

让我有一种自己的网站被封锁了的感觉(封锁是双向的,出国访问和从国外访问国内都受影响)。

GoogleReader的错误提示:

No feed available for "http://www.fwolf.com/blog/feed"

开始查找错误的原因,首先看看是不是被封锁了的原因,使用匿名web代理http://anonymouse.org/anonwww.html能够访问,从DreamHost主机上wget也能成功,排除被封锁了的可能。本来我写的内容也不应该会被封锁嘛,那是不是FeedBurner服务器的问题呢?有这个可能,但我没法实验去。

分别把AkismetSpam Karma 2等反spam插件停止,问题依旧,说明不是被anti spam程序阻止的问题。

是不是WordPress的问题呢?记得WP 2.0.6曾经和FeedBurner有过冲突,参见:

不过我现在用的版本是2.1.1,应该没有上述问题,不过还是排除一下的好,把WP升级到了最新的2.1.3版本,问题依旧,初步排除WP自身的问题。

是不是升级之后,.htaccess简化网址的配置文件出问题了?但是我分别用FeedValidatorFeedBurner检查RSS Feed的直接网址http://www.fwolf.com/blog/wp-rss2.php,依然都是超时错误,排除。

是不是php执行出了什么错误了呢?在php的errorlog文件中我发现了:

[04-May-2007 19:45:27] PHP Fatal error:  Maximum execution time of 90 seconds exceeded in D:\fwolf\wordpress\wp-content\plugins\markdown.php on line 1761

不过我直接用浏览器访问我的Feed是可以的,应该也不是php的问题,不然我的blog应该整个显示不正常才对。

继续探索,发现了更离奇的事情,在apache的access.log中我发现如下记录:

66.150.96.109 - - [04/May/2007:20:12:13 +0800] "GET /blog/feed/ HTTP/1.1" 200 24315 "-" "FeedBurner/1.0 (http://www.FeedBurner.com)"

208.97.167.25 - - [04/May/2007:20:14:14 +0800] "GET /blog/feed HTTP/1.0" 200 86896 "-" "Wget/1.9.1"

67.19.173.84 - - [04/May/2007:23:16:44 +0800] "GET /blog/feed/ HTTP/1.1" 200 24315 "-" "FeedValidator/1.3"

这说明FeedValidatorFeedBurner都确实访问到了我的服务器,可他们怎么还是会超时呢?从浏览器访问的时候,虽然不是很快,但也没有30秒、60秒那么长,应该不会超时的。不过为了确认一下,找了一篇文章的comment的feed:http://www.fwolf.com/blog/post/310/feed,结果就可以通过检查:

Congratulations!

[Valid RSS] This is a valid RSS feed.

会不会是没有返回文件大小的原因?在wget的时候会看到:

HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/xml]

FeedBurner只允许小于512k的feed,如果服务器不返回文件大小,FeedBurner就会中止操作?我试着返回一个伪装的文件长度,在wp-rss2.php中添加header("Content-Length: 10000");,这样用wget只能下载10k的内容,但是feed检查工具仍然报timed out错误。

无奈,只好给FeedBurner反馈意见,虽然是5.1休假期间,还是很快就收到了回信,大概说仍然是网站响应速度太慢了的问题(我从其他搜索得知限制大概是10秒以内),除了提升响应速度之外,暂时没有其他解决办法。

精疲力尽,忽然禁用Markdown Extra这个plugin之后,居然没问题了,看来还是响应时间的问题,Markdown Extra用到了太多的正则替换,加上最近写的几篇文章都不算太短,服务器响应略微慢了一些,加上中国到美国的数据传输时间,怪不得会超时呢。我也是疏忽了,上面的access.log和php的errorlog,都多少有些提示,但我没有注意到。

虽然定位了问题所在,但Markdown Extra还是要用的,没了它我写文章的兴趣会减少一大半,好在WP可以调整RSS中输出的文章数量(Options->Reading->Show the most recent: ? posts),我试了一下,默认是返回10篇,不过会超时,调整到7篇的时候就不会超时了,为了保险起见还是设置为5好了。希望网上的抓FEED机器人不要太懒,免得把文章跳过去喽。

几点感受:

  1. 发现问题之后,要善于寻找原因,不能盲目瞎摸,有些问题不找到根源,重试一万遍也不会改变,还是要一层一层的反复分析、排除。

  2. 如果在程序中要大量用到Markdown语法的话,为了提高速度,可以采用空间换时间的方法,除了保存原文之外,把解析的结果也存一份,这样访问速度快。

  3. 作开发的时候对速度考虑的优先级要提高,10秒就超时啊,怪不得我不适应,被铁通蹂躏惯了。。。

顺便推荐一个不错的在线工具:

Related posts

Categories: Blog Tags: