2007年5月18日星期五

流氓软件与流氓

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

先说几个容易理解的:

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

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

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

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

下面进入正题:

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

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

病毒、木马

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

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

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

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

Source:http://www.fwolf.com/blog/post/322

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

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。

Source:http://www.fwolf.com/blog/post/323

2007年5月8日星期二

Ubuntu从源升级的一点心得

使用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可以来回混着用用,这两个软件看似相似,又似乎有一些不太一样的地方,有时候这个卡住了,用那个就可以继续。

老大难的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,不仅要不厌其烦的等待下一次提示,而且找到天亮也找不出方案来。

零敲碎打

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

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

Source:http://www.fwolf.com/blog/post/321

2007年5月5日星期六

HTTP Referer二三事


什么是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-referer{forge}}
album.sina.com.cn

这样Gregarius中新浪博客的图片就出来了吧?+hide-referer是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

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

 Order Allow,Deny Allow from env=local_ref  

或者

    Order Deny,Allow    Deny from all    Allow from env=local_ref  

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

不要使用Rerferer的地方

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

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

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

Source: http://www.fwolf.com/blog/post/320

FeedBurner不认我的Feed了

突然发现,我最近写的几篇文章都没有被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

FeedValidator和 W3C的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服务器的问题呢?有这个可能,但我没法实验去。

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

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

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

是不是升级之后,.htaccess简化网址的配置文件出问题了?但是我分别用FeedValidator和 FeedBurner检查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:fwolfwordpresswp-contentpluginsmarkdown.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"

这说明FeedValidator和 FeedBurner都确实访问到了我的服务器,可他们怎么还是会超时呢?从浏览器访问的时候,虽然不是很快,但也没有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秒就超时啊,怪不得我不适应,被铁通蹂躏惯了。。。

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

Source:http://www.fwolf.com/blog/post/319

从windows迁移到Ubuntu Linux一例

从windows迁移到Ubuntu Linux一例

注: 本文内容比较杂,涉及WGA、tnt2显卡、gnome、xfce、nfs、游戏、wine、font、defoma、socks5、ssh等,这些问题我就不再一一整理了,请各位自行攫取。

起因

一位同事告诉我,他的电脑好像又中病毒了,总提示什么"您可能是软件盗版的受害者",我以为这又是哪个流氓软件的把戏呢,故意说得严重些吓唬用户,然后进一步欺骗什么的。于是到他电脑上一看,提示是这样:

从windows迁移到Ubuntu Linux一例p1

原来我当初的想法是错误的,根本没有流氓软件,这个提示是100%正宗的微软出品,根据提示还可以链接到微软的网站,提示当前windows使用的序列号是非法的:

从windows迁移到Ubuntu Linux一例p2

这时才想起来,这台机器大概半年前重装过,装了一个不知名版本的winxp(当然是盗版),后来提示快到期了需要激活,就找了个算号器算了半天,找了个可用的序列号用上了。查看已安装的程序可以发现,由于windows自动更新一直开着,4月25号通过自动更新安装了一个WGA(微软正版增值计划)工具,第二天,也就是4月26号就开始提示了。

这台电脑是联想的品牌机,购买的时候是带着正版win98操作系统的,不过时间比较久远了,win98在当今的网络环境下,让一个菜鸟使用,存活期实在太短了,所以才重装的xp。现在既然人家已经发现"盗版"的事实了,还是不要用了,结合前一段时间成功为其他2位同时安装Ubuntu Linux的经验,决定把这台机器改装Linux。

老爷机

先来介绍一下这台老爷机,2002年初购买的联想开天4600,P4 1.7的主频,256M SDRAM内存,40G硬盘,Nvidia Riva Tnt2的显卡,按说已经到了退休年龄,但为了节约资金,加上使用岗位的工作也不太多,或者说就是给他们用来上上网,打打游戏的,才一直在用着。

所装Linux为Ubuntu 7.04 Feisty Dawn,新鲜出炉的,呵呵。

基本系统与显卡

个人感觉直接用Ubuntu的Live CD安装太慢了,所以用一张Ubuntu server光盘先安装基本系统,再安装ubuntu-desktop,从局域网内的镜像源下载,过程很顺利。

至于显卡驱动的安装,由于Nvidia Riva Tnt2是相当老的卡了,所以需要安装nvidia-glx-legacy包,但光这样还不行,无法启动glx,只有把xorg.conf中Device段中的Driver从nv改成nvidia才行,glxgears也运行正常,不过这样不仅充分体现了老式N卡"黑"的特点,最高还只能上800×600的分辨率,所以只能把 Driver设置为默认的nv,不使用glx,但能够用1024×768的分辨率,反正也不玩3D游戏。详细的安装在原来写的Ubuntu点滴中有介绍。

由于没什么办公需要,所以必备的软件无外乎浏览器、qq、休闲游戏了。浏览器当然是使用Firefox,QQ也用LumaQQ实现了,至于休闲游戏嘛,我推荐的蓝迪游戏由于游戏太少、玩家太少,同事看不上,所以还得想办法装其他的,不过这是后话了。

基本系统安装完毕之后,去掉不必要的服务,使用Gnome桌面,感觉这台老爷机跑起来还是吃力,系统内存需求大概和机器配置相当,如果能再多128M内存情况就会好很多了。

系统改进与文件共享

鉴于Gnome桌面实在是太慢,所以用轻量级桌面系统Xfce替代了,再用SWiftfox替代原生的firefox,这样感觉系统快了许多,只开一个空的firefox的情况下内存占用在160M左右,加上Xfce本身效率和相应速度就比Gnome要好,现在系统的速度就"相当"可以接受了,夸张一点说比原来windows还要快一些呢。

在办公室的局域网上,共享是难免要用到的了,对于菜鸟用户来说,使用linux共享最好的方式就是在fstab里直接mount服务器上的共享文件夹,这样日常使用更方便。以前和windows机器共享文件我都是用Samba,不过这次是Linux和Linux机器之间的共享,我鼓捣了一会儿Samba的配置,很容易就通了但中文总是不行,不管是iocharset=utf8还是iocharset=cp936 或者codepage=cp936都不行,于是转变方式,使用NFS。

没想到NFS配置如此简单,因为懒得和linux内核扯上关系,服务器上使用的是nfs-user-server,配置文件为/etc/exports,由于没用权限控制,所以一句配置就够了:

/home/fwolf/links/public    *(rw,sync)

把public这个目录共享给全部用户(*),设定可读写权限(rw),sync不知道啥意思,网上抄过来的配置,文档中也没有。客户端安装上nfs-client之后,在fstab里面加上一行:

fwolf:/home/fwolf/links/public      /media/fwolf    NFS defaults    0   0

这样就实现了NFS共享文件夹的自动挂载。再把挂载点的链接拖到文件管理器Thunar的左侧Tree栏中,同事用起来就没问题了,不过我这里倒是遗留下来一个小问题。

我的这个~/links/public目录在Samba和NFS下都共享这呢,同时这个目录中还有一个链接文件(比如叫csi),指向我电脑上另外一个位置,问题来了,windows机器通过samba访问时,可以访问链接文件csi里面的内容,在他们看来,csi就是一个普通的目录;而这台Linux通过NFS访问时,客户端Linux看到的csi仍然是一个链接文件,当然链接文件对于客户端Linux来说是指向客户端电脑中的某个文件的,它当然不存在了。所以NFS共享的情况下,无法通过链接文件来"灵活"添加共享文件了。

Wine与休闲网游

同事玩的休闲网游指的是QQ游戏、中游、边锋、联众等多人在线棋牌游戏,抱着不大的希望,我用wine(Ubuntu中自带的,并非EasyWine等修改版)一个一个的安装、运行,虽然安装都很顺利的完成了,但能运行的之后联众:

  • QQ游戏,按照网上说的先安装ie6再运行,仍然是在弹出登录对话框之后报错,错误还无法关闭。
  • 中游,iGame.exe运行之后死活不出来。
  • 边锋,说聊天控件无法运行,让我重新安装,难道不聊天就不能玩游戏么?

还是最老牌的联众游戏勉强可用,把新、旧中国象棋装上试了一下,效果满好的,就是在大厅选游戏选房间的时候,鼠标点房间名无效,需要用键盘移动光标过去,再敲回车进入。偶尔还会自动下载一些扩展名为gls的东西安装,不过基本都不妨碍使用。

在使用wine进行游戏安装、测试的时候,刚开始特别的慢,并且wine一开始运行xorg就把cpu占到100%,几乎什么都没法用,后来在EasyWine linux 游戏社区 找到了答案,问题解决之后,wine的速度还是非常快的,套用网友的一句话,简直比直接在windows下运行还快呢。

wine特别慢,xorg吃cpu的原因主要是系统缺少gbk字体,运行一下xfontsel,如果xorg把cpu占到100%,过一会儿才弹出对话框的话,就更加肯定是这个问题了。首先要准备中文字体文件,比如我的/big2/fonts/xpfonts/simsun.ttf,然后在/etc/defoma/hints中添加一个名为ttf-sim-simsun.hints 的文件,内容如下:

category truetype
begin /big2/fonts/xpfonts/simsun.ttf
Family = Sim-Sun
FontName = SimSun-Medium
Encoding = Unicode
Location = Chinese-China English
Charset = ISO10646-1 GB2312 BIG5 ISO8859-1 GBK
UniCharset = GB2312 BIG5 ISO8859-1 GBK
GeneralFamily = SimSun
Weight = Medium
Width = Fixed
Shape = Upright
Alias = Sim-SunGB SimSunGB
Foundry = Sim
Priority = 20
X-Family = SimSun
X-ElementAlias=foundry=default:family=simsun:resx=72:resy=72
TTCap = halfwidth-bw=0.5 italic-angle=0.167 no-roblique no-oblique no-ritalic
end

然后在defoma中注册Simsun宋体字体的hints文件:

cd /etc/defoma/hints
defoma-font reregister-all ttf-sim-simsun.hints

最后修改/etc/X11/xorg.conf,确保Files段有如下内容:

FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"

这样,wine能够找到正确的字体之后,速度就飞快了。

Socks5代理

联众游戏虽然能玩了,但是联众不同的游戏使用不同的端口,而同事所用机器,受防火墙的限制,无法直接连接这些端口,如果使用联众自带的proxy功能,能登录上,但游戏功能也随之受限,所以考虑使用socks5代理。

局域网内的服务器不受防火墙端口访问限制,但如何让它提供socks5代理服务呢?我在网上搜索了一下,发现Ubuntu下居然没有显而易见的socks5代理服务软件,只有socks4的,就我的理解,socks5和socks4还是区别很大的,所以继续寻找,终于 SOCKS Forwarding With OpenSSH这篇文章提醒了我,可以使用ssh的隧道功能提供socks5代理服务。

ssh的隧道代理功能非常有趣,如果你用ssh -D 1080 user@host登录远程主机之后,不仅可以正常的操作shell,同时还在本机的1080端口建立了socks4/socks5服务。本机的1080端口相当于隧道的入口,用户请求从这里进来,在ssh登录的主机出去,然后用户请求返回的结果再从ssh登录的主机经由ssh隧道返回。其实国内也有人介绍过这种功能了,比如可以使用dreamhost的ssh功能为自己提供代理服务,只是加上socks就想不起来了。

方法了解之后,操作就简单了。首先要配置到服务器的ssh自动登录(我可不想每次都手工输入密码),然后把登录命令写成一个脚本,ln到/etc/rc2.d/目录下,起名叫S99ssh_socks,这样每次开机就会自动ssh登录到服务器,同时在本机的1080端口创建socks服务了。别忘记把ssh的超时关闭去掉,编辑 ~/.ssh/config,加上:

ServerAliveInterval 300

每隔300秒向服务器发送活动信息,免得被踢。注意这种方式提供的代理服务只能够供本机使用(监听127.0.0.1地址),同时udp协议无法使用这种代理。

如果用Tor来提供socks服务也是可以的,我在没找到ssh隧道方法的时候也是这样凑数的,不过大家都知道,tor的速度嘛,呵呵,玩游戏总掉线是要扣分滴。

小结

这次迁移基本上已经完成了,用到的软件不多,主要时间花费在系统调优和用wine测试各个游戏上面,没有什么高深的技术,但是把现有的工具融合在一起,为那些对windows过于依赖的人们提供一个新的选择,还是有意义的,至少,不会再有人让你整天给他杀毒了吧?呵呵。

Source:http://www.fwolf.com/blog/post/318

Ubuntu FeistyFawn中文字体配置的变化

今天把Ubuntu从Edgy升级到了Feisty,如果用update-manager的话我这里太慢,直接修改apt源升级的,自行解决了一些包的依赖关系之后,升级还是非常顺利的,以前常有的驱动问题本次没有出现,明天就升级公司的那台机。

几乎升级完成第一件事就是搞定中文字体,发现Feisty的字体配置有了明显的变化,原来的一个大配置文件/etc/fonts/fonts.conf现在被分成了许多个小文件,大部分存放在/etc/fonts/conf.avail目录下,并且使用/etc/fonts/conf.d目录下的连接来调用(/etc/fonts/conf.d这个目录下也有少部分配置文件),这种机制和 rc2.d以及Apache的mods-available及其相似。

所以说,我的习惯非常适合这种升级和变迁,就是把自己的特殊配置写到单独的文件中,然后ln -s为/etc/fonts/local.conf,最后修改/etc/fonts/conf.avail目录下的40-generic.conf和60-latin.conf这两个文件,在serif、sans-serif、monospace三系字体的定义中,把 Simsun添加到DejaVu和Bitstream Vera之后就可以了。这样作的好处就是下次升级时所需要作的调整最小。

fonts.conf的语法仍然没有大的改变,以前已经介绍过了,不过今天又发现两篇不错的Feisty字体配置相关文章,推荐一下:

PS: 安装完成之后autoclean了一下,清理出来1.3G空间,呵呵。
PS2: 如果中文输入遇到什么问题的话,大概是需要删除scim-bridge,参考下面两篇文章:

我的办法是把/etc/X11/Xsession.d/95xinput中原来的

export GTK_IM_MODULE="scim-bridge"

改成

export GTK_IM_MODULE="scim"

还有就是scim的选字栏位置总是飘忽不定。。。

Update @ 2007-04-24

如果openoffice 2.2无法启动,编辑/usr/bin/ooffice,添加下面这行:

export GTK_IM_MODULE="xim"

还是有些怪怪的。

Apache无法解析php程序了,提示

Invalid command 'PHPIniDir', perhaps misspelled or defined by a module not included in the server configuration

原来在升级feisty的时候,/etc/apache2/mods-enabled/php5.load这个文件丢了,重新a2enmod php5一下就可以了。

Source:http://www.fwolf.com/blog/post/315