2009-12-28

64bit Linux 下 Flash Player (nspluginwrapper) 不响应鼠标点击

由于adobe 64bit flash player alpha的一些问题, kongregate的一些功能不支持,我只好换回nspluginwrapper

而后发现鼠标点击经常不被识别,或者说几乎完全不能识别。

根据

https://bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/410407

解决方法是

修改/usr/lib/nspluginwrapper/i386/linux/npviewer

在倒数第二行添加 export GDK_NATIVE_WINDOWS=1

其他可能的解法是
禁用 compiz
或者安装64位Flash Player

2009-12-23

gnome games 没有声音

原因是我把系统声音mute了,搞了好久才发现,也不知道为什么这么设计。。。

Game Conqueror v2.0b

Game Conqueror是一个Linux下的游戏修改器。

我想要一个CheatEngine for Linux,找不到,于是自己动手了,有了初代的GameConqueror。

而后发现了scanmem, 看了其功能和代码后果断放弃了自己的代码,而重整旗鼓给scanmem写图形前端 -- 倒不是花哨壳子,有些功能还是有个GUI好使。 -- 于是有了 GameConqueror v2

同时感谢scanmem的作者Tavis,我也可以同时修改scanmem,一方面是为了前端方便,另一方面可以给scanmem加新功能。 另外GameConqueror已经是scanmem的一部分了。

项目主页
http://code.google.com/p/scanmem/

目前没有发布版,只能svn co最新代码。

欢迎各种反馈。

2009-12-18

Firefox功能: Add a keyword for this search

浏览Definr时发现的一个Firefox的实用功能,在很多搜索页面中,在搜索框点右键,有个Add a keyword for this search.

例如google.com,点这个选项然后设置keyword为g,以后在地址栏里打g xxx就直接去google搜索xxx了。

还真是方便!

2009-11-23

吐血游戏推荐: Braid 时空幻境


朋友推荐的游戏,解谜加动作类。

动作部分有点像超级马里奥,而解谜部分 -- 难死!后期基本就靠攻略了。游戏中充斥着时光倒流等概念,对逻辑,推理有很大考验。

作为一般玩家,到此可能就结束了,而我在游戏中也没感到什么异样,只是觉得音乐有时有些郁闷。

而在Youtube查攻略时发现了有隐藏的星星可以拿,拿到全部星星还有隐藏结局。

星星的拿法可谓变态中的变态,其中某一颗需要2小时才能拿到!!!另外一颗在过了前几关之后就再也不能拿了,必须重新开始,而我发现这个时候已经通了一次全关了。。。

在这种情况下只好让Trainer出动了,于是会漂浮和穿墙了,顺利的又通了一次关,同时再次感叹星星的变态,不仅仅是难度,我第一次通关时竟然一个星星都没看到过 -- 当然看到我也不知道去吃。。。

最后说说剧情,整个游戏是用很多笔记本叙述剧情的,我自己玩的第一遍,感觉无非是救公主,想超级马里奥那种。

但是最后一关,首先一个人抱着公主出现,公主跳上高台高呼救命,而后主人公开始和公主在两条路上奔跑,调整机关,一周到关底,公主回到卧室睡觉,而主人公爬到卧室旁边。

本来,到此就该结束了的。

但是下面时光开始倒流,公主和主人公开始往回跑,直到最后,公主高呼救命,然后一个人(就是一开始那个人,让人以为是魔王之类)将跳下的公主接住,然后救走。

我还觉得有些奇怪,因为这时主人公还在场景里,只能离开。后来看了网上文章才明白,原来主人公是一直在追逐公主,而公主是想躲避甚至杀死主人公。

不得不惊叹这关设计之巧妙!非言语之所及,非亲身体验不可。

而尾声的笔记本透露了更多的剧情,整个游戏其实是倒叙。最后一关是时间上最早发生的,而第一关是结局。在网上看到这句话时,顿时豁然开朗,整个游戏也就变得非常连贯了。

而实际上,根据网上说法,这个游戏是讲了一个关于核弹的故事,主人公是一个研究核弹的科学家,看似还很有道理。但整个游戏丝毫未提核弹二字,实在高明!

整个游戏,不论关卡难度和设计,时间概念,图像, 音乐,以及故事背景和内涵,都堪称极品。不过说实话手感略差一点,但是不影响游戏。

绝对吐血推荐!



参考资料:
http://blog.sina.com.cn/s/blog_565e99380100en6b.html
http://www.mtime.com/my/weiwancheng/blog/1932064/
http://pastangel.blogspot.com/2009/04/braid78.html

ubuntu 9.10 禁用 gdm 登录声音

不知道是不是bug,反正一直没找到禁用的选项 -- 越来越依赖图形界面了。。。

然后在 http://ubuntuforums.org/showthread.php?t=1315659 找到解法:

sudo -u gdm dbus-launch gconftool-2 --set /desktop/gnome/sound/event_sounds --type bool false

原理是禁用 gdm 用户的声音选项

2009-11-16

Firefox 隐藏 Menu Bar

由于我一直用Firefox 3.7 nightly,很多插件都不支持了

另外我的笔记本是宽屏,Menu Bar占一行还是蛮浪费的,于是决定干掉它

多方google后,得到解法

修改userChrome.js或者利用stylish创建脚本

#toolbar-menubar{
margin-top: -25px !important;
opacity: 0 !important;
}

当然也可以用display:none,但是那样的话菜单是真正消失了,现在的方法按快捷键还是能用的。

SuperTuxKart 0.6.2 没有声音

Ubuntu 9.10

解决办法,根据https://bugs.launchpad.net/ubuntu/+source/supertuxkart/+bug/366716里的某条回复,原因出自openal

解法:在~里创建文件.alsoftrc,内容为drivers = oss

2009-10-30

[转]ubuntu下设置ADSL共享上网

以前就想试试了,只是没需求,所以没动力。这次有需求了,搞了一搞,还蛮有趣


Windows 下的共享上网比较简单,选中ADSL连接,右键属性,将共享选上即可。在ubuntu下,也需要设置,但是使用iptables进行IP伪装。或者使用 firestarter之类的图形界面的工具。

ubuntu下用ADSL拨号,需要在终端输入sudo pppoeconf,然后根据提示,自动检测网卡和ADSL拨号modem,如果找到,则提示输入用户名和密码,注意将用户名前面的username几个英文字母去掉。

以后使用 sudo pon dsl-provider 拨号上网,使用sudo poff dsl-provider下线。sudo plog查看拨号日志。

通过 系统->系统管理->网络 来配置网卡IP,或通过命令行方式。

网卡IP和配置放在/etc/network/interfaces ,可以用超级用户进行编辑。

对于无线网卡,配置同上。

下面摘自ubuntu 共享上网的帮助。

IP 伪装的目的是为了允许您网络上那些有着私有的、不可路由的 IP 地址的机器可以通过做伪装的机器访问 Internet。来自您私有网络并要访问 Internet 的传输必须是可以操作的,也就是说回复要可以被路由回来以送到发出请求的机器上。要做到这一点,内核必须修改每个包 源 IP 地址以便回复能被路由回它这里,而不是发出请求的私有 IP 地址,因为它们对于 Internet 来说是不存在的。Linux 使用 Connection Tracking (conntrack) 来保持那个连接是属于哪个机器的,并相应地对每个返回包重新做路由。发自您私有网络的流量就这样被伪装成源于您的网关机器。这一过程在 Microsoft 文档中被称为 Internet 连接共享。

这可以用单条 iptables 规则来完成,也许基于您网络配置来说会有一些小的差异:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

上述命令假设您的私有地址空间是 192.168.0.0/16,您与 Internet 相连的设备是 ppp0。语法分解如下所示:

* -t nat -- 该规则将进入 nat 表
* -A POSTROUTING -- 该规则将被追加 (-A) 到 POSTROUTING 链
* -s 192.168.0.0/16 -- 该规则将被应用在源自指定地址空间的流量上
* -o ppp0 -- 该规则应用于计划通过指定网络设备的流量。
* -j MASQUERADE -- 匹配该规则的流量将如上所述 "跳转" (-j) 到 MASQUERADE (伪装) 目标。

在过滤表 (缺省表,在那里有着大多数或全部包过滤指令) 中的每条链 (chain) 都有一个默认的 ACCEPT 策略,但如果您还在网关设备上设置防火墙,那么您也许还要设置 DROP 或 REJECT 策略,这时您被伪装过的流量还需要被 FORWARD 链 (chain) 中的规则允许才能正常工作:

sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

上述命令将允许通过从您局域网到 Internet 的所有连接,这些连接所有的相关流量也都返回到发起它们的机器。

有很多工具可以帮助您构建一个完整的防火墙,而不需要 iptables 的专业知识。偏好图形界面的,Firestarter 非常流行也易于使用,fwbuilder 则非常强大而且其界面对于用过诸如 Checkpoint FireWall-1 商业防火墙工具的管理员来说相当熟悉。如果您偏好有着纯文本配置文档的命令行工具,Shorewall 是个非常强大的解决方案,可以帮您为任何网络配置一个高级防火墙。如果您的网络相对简单,或如果您没有网络,那么 ipkungfu 将给您一个无需配置就可以工作的防火墙,也允许您通过编辑简单友好的配置文件来轻松设置更高级的防火墙。另一个感兴趣的工具就是fireflier,被设计成桌面防火墙应用程序。它由一个服务器 (fireflier-server) 和可选的 GUI 客户端 (GTK 或 QT) 组成,操作就象 Windows 中许多流行的交互式防火墙应用程序一样。

2009-10-19

Google Earth 在 Linux 下崩溃

Ubuntu 9.10 64bit

从medibuntu装了googleearth,或者用googleearth-package,都不行,现象是运行后不显示地球,点击右键就崩溃。

一开始以为是64位系统的问题,Google半天无果。

后来下载了官方安装包,安装完就点了运行,然后竟然能用了!原来是因为用了root权限,普通用户还是不行。

于是换回medibuntu的版本,照着这个方向Google,最后在http://groups.google.com/group/earth-linux/browse_thread/thread/77e66e32dbec433a处找到原因和解法

即~/.config/Google以及里面的内容owner是root:root,这当然不行了。 把权限改好,Google Earth会说不能访问原来的目录,并把一些目录重置(其实就是原来放在了/root,现在改回到~)

于是可以正常使用了。

2009-10-03

Firefox 与 Apparmor

Ubuntu 9.10

前一阵子突然发现firefox-3.5不能下载了,浏览器,downthemall都不行。并且似乎不是下载目录权限问题。

不知google知:https://bugs.launchpad.net/ubuntu/+source/firefox-3.5/+bug/433362/+index#true

原因是firefox-3.5这个包带了一个apparmor的规则,阻止了firefox对一般目录的访问。

临时解决办法是

sudo ln -s /etc/apparmor.d/usr.bin.firefox-3.5 /etc/apparmor.d/disable/usr.bin.firefox-3.5

禁掉这个规则

2009-09-15

Python 模拟鼠标动作的函数

最近在写游戏机器人,用 Python 写的,需要模拟鼠标的动作。 Google 了好久,很快发现了模拟键盘的 virtkey,鼠标的很难找,但是最终还是找到了。

相关链接是

http://mail.python.org/pipermail/python-list/2007-December/641865.html
http://www.tranzoa.net/tzpython/tz_windows_stuff.py
以及 Xlib 文档

示例代码:


import Xlib.display
import Xlib.X
import Xlib.ext.xtest

# 点击
display = Xlib.display.Display()
def mouse_click(button): #button= 1 left, 2 middle, 3 right
Xlib.ext.xtest.fake_input(display,Xlib.X.ButtonPress, button)
display.sync()
Xlib.ext.xtest.fake_input(display,Xlib.X.ButtonRelease,
button)
display.sync()

# 移动
ds = display.Display()

def goto_xy(x, y) :
xtest.fake_input(ds, X.MotionNotify, x = x, y = y) #注意x,y参数的写法
ds.flush()

2009-09-09

Windows 键盘问题一例

今天打开电脑,进入Windows,登陆时竟然发现键盘不能用!冷静了一下后用软键盘登了,登陆后发现还是不行!

于是用鼠标和软键盘操作,看Device Manager,键盘设备有个黄叹号,设备状态里显示

Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged (code 19)

Google之,在http://www.edmartechguide.com/2009/02/windows-cannot-start-this-hardware.html里得到线索

于是进入Regedit,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class项下逐个检查,直到找到{4D36E96B-E325-11CE-BFC1-08002BE10318},发现Class值是Keyboard,那么应该就是这项了

由于权限问题,改名和删除都不行,于是仔细观察各项,发现"UpperFilters"里有个可疑的alidevice,于是删掉,把"kbdclass alidevice"改成"kbdclass"

然后去Device Manager里Uninstall键盘设备,然后刷进,于是可以用了。

这样看来,应该是淘宝的驱动挂了,或者是让我搞挂了。

另外是Device Manager里的PS/2鼠标也不能用,这里是我笔记本上的触摸板。我用的鼠标是USB的,不过注册表里没有发现可疑项,重启以后自然能用了。

另外庆幸我的USB鼠标还能工作,否则输入设备一个都没了。。。好险

2009-09-07

gdm 配置文件的一个问题

今天想整一下xdmcp, gdm 配了半天也不出个所以然。
在我机器上 /etc/gdm 目录里 除了 gdm.conf gdm.conf-custom 还有个 gdm-cdd.conf
而且看 gdm 启动的命令行里竟然也是用 gdm-cdd.conf

根据 https://bugs.launchpad.net/ubuntu/+source/ubuntustudio-look/+bug/153837 里面的说法,这个是 ubuntustudio 的一些包搞的鬼。

于是就把 ubuntustudio 相关的所有包(主要是主题)删去, 问题解决。

2009-08-27

2009-08-08

64位Windows安装gvim

一开始照常下载了32位的安装包,运行没什么问题,就是explorer的右键菜单里不能加入edit with gvim这个选项,重装多次也不行。

后来搜了一下,说是32位的extension dll不能被64位的explorer加载,而再后来在发现vim下载页上有一行小字

Win64 64-bit binaries for MS-Windows can be found at http://code.google.com/p/vim-win3264/. The Win32 binaries should run too, but the "Edit with gvim" context menu entry won't work, since a 32-bit shell extension DLL cannot be loaded into the 64-bit Explorer.exe.

但是前面windows binary的地方似乎并没有提到这一点。。。

于是去给的链接处下了一个64位的,安装运行,一切ok!

2009-06-24

创建 svn repository 的命令

弄了好几次,每次都得现查一遍。所以整理一下列于此:

摘自于http://www.howtoforge.com/debian_subversion_websvn

// root
# mkdir /var/svn-repos/
# svnadmin create --fs-type fsfs /var/svn-repos/project_name

# groupadd subversion
# addgroup svnuser subversion
# addgroup someuser subversion

# chown -R svnuser:subversion /var/svn-repos/*
# chmod -R 770 /var/svn-repos/*

// normal user (should be in group subversion)
$ mkdir ~/.ssh/
$ cd ~/.ssh/
$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub | ssh you@ "cat - >> ~/.ssh/authorized_keys"

$ svn import -m "importing test over ssh+svn" svn+ssh:///var/svn-repos/project_name/trunk
$ svn co svn+ssh:///var/svn-repos/project_name/trunk

2009-06-23

[转]使用Pdftk合并PDF文件

link: http://bbs.haopdf.cn/viewthread.php?tid=441

PDF文件的跨平台特性使其应用广泛,我们在工作学习中经常接触此类文件,但从网上得到的PDF文档,经常是一篇文章中单独页面,怎么把这些单独的页面重新拼合成完整的文档就成了不小的问题。

当然,我们可以借助于Adobe Acrobat中的“Create PDF|From Multiple Files”合并这些单独的页面,但Acrobat是Adobe公司的商业软件,很多朋友由于版权问题并不会安装Acrobat。那么,我们能够使用什么软件来实现同样的功能呢?那就是 Pdftk。

Pdftk是由Sid Steward写的一个PDF增强软件,也就是所谓的PDF Hacks。它可以合并/分割PDF文档、解开必要的输入密码、输出加密、给PDF文档加水印、从PDF文档中解出附件、将PDF文档变成一页等等,能够做到操作PDF文档的所有事情。

其合并文档的具体用法为:

合并多个文档成一个文档:


pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

使用参数:


pdftk A=1.pdf B=2.pdf cat A B output 12.pdf

使用通配符:


pdftk *.pdf cat output combined.pdf

从几个文档中分割内容合并成一个文档:


pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf

latex 使用带@的命令

在前后分别加上
\makeatletter
\makeatother

这个虽然很简单,但是不容易google到。。。

2009-06-20

texlive 导致 ubuntu 的一些包卸载错误

卸载(purge, 不知道会不会影响一般卸载和安装)报错install-info: No dir file specified; try --help for more information.

在https://lists.ubuntu.com/archives/universe-bugs/2009-January/039982.html处看到了提示

原因是texlive安装后的其install-info的路径优先级比系统的优先级高,而二者不兼容

解决办法是在卸载包的时候临时将texlive的install-info改名

2009-06-12

Vista 系统每次登陆自动创建加载一个临时用户的profile

症状:
每次登陆桌面会自动还原,增加文件后重启,或者重登陆后就消失

(其实这个只是最明显的症状)

分析:
没有发现可疑进程和自启动项
打开cmd发现所在目录是c:\users\temp.
c:\users\ 目录还在,内容也还在

于是可以看出是系统创建了一个临时用户。

解决:
根据 http://szmmzs.itpub.net/post/3256/482379

在事件查看器中应当可以看到如下事件
Log Name: Application
Source: Microsoft-Windows-User Profiles Service
Date: Date
Event ID: 1511
Task Category: None
Level: Warning
Keywords: Classic
User: User
Computer: Computer
Description:
Windows cannot find the local profile and is logging you on with a temporary profile. Changes you make to this profile will be lost when you log off.

一般来说产生的原因可能是profile目录内容损坏或者权限问题,但我看了一下,似乎都不是
解法是
1 用有管理员权限的其他用户登陆(实在没有别的用这个登录其实也行)
2 备份c:\users\,并改名/删除
3 用管理员打开regedit, 定位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
4 找到一个.bak, 其中的ProfileImagePath应当为c:\users\
5 删除.bak这个项,注销,并用出问题的用户登陆
6 这时c:\users\应当被重建
7 恢复备份的内容
8 重登陆

这是应该就没问题


另一说问题是该用户属于guest组,取消即可。 但这次遇到的不是这个情况。

2009-06-02

[转] 22条经典的编程引言

Link: http://cocre.com/?p=808

实在是有意思~

//原文

下面的这些经典的引言来自英文,也许有些我翻译的是不很好,所以,我提供了中英对照,如果有问题,请大家指正。



过早的优化是万恶之源。Premature optimization is the root of all evil!
- Donald Knuth



在水里行走和以一个需求规格进行软件开发,有一点是相同的,那就是如果水或需求都被冻住不了,那么行走和软件开发都会变得容易。Walking on water and developing software from a specification are easy if both are frozen
- Edward V Berard



Hofstadter 定理:“一件事情总是会花费比你预期更多的时间,就算是你已经考虑过本条Hofstadter 定理”。It always takes longer than you expect, even when you take into account Hofstadter’s Law.
- Hofstadter’s Law



有些遇到问题的人总是会说“我知道,我会使用正则表达式”,那么,你现在有两个问题了。(意思是:你本想用正则表达式来解决你已有问题,但实际上你又引入了“正则表达式”的一个新问题)Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems
- Jamie Zawinski



调试程序的难度是写代码的两倍。因此,只要你的代码写的尽可能的清楚,那么你在调试代码时就不需要那么地有技巧。Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
- Brian Kernighan



用代码行来衡量开发进度,无异于用重量来衡量制造飞机的进度。Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- Bill Gates



PHP被一些不合格的业余人员造就成了一个小恶魔;而Perl则是被一些熟练的但不正当的专业人员造就成了一个超级大恶魔。PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.
- Jon Ribbens



在两个场合我被问到:“请你告诉我,如果你给机器输入了错误的数字,那么,是否还能得到正确的答案?”我并不能正确领会这类想法。(注意,本引言的作者姓Babbage,这个名字和神父同名,意思是,作者在反问提问的人,你是问我还是向神父祈祷?)On two occasions I have been asked, ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.”
- Charles Babbage



在编程的时候,我们一定要想像一下,以后维护我们自己的代码的那个人会成为一个有暴力倾向的疯子,并且,他还知道我们住在哪里?Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
- Rick Osborne



现代的编程是“程序员努力建一个更大更傻的程序”和“世界正在尝试创造更多更傻的人”之间的一种竞赛,目前为止,后者是赢家。 Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
- Rich Cook



我才不关于我的代码是否能在你的机器上工作!我们不会给你提供机器。I don’t care if it works on your machine! We are not shipping your machine!
- Ovidiu Platon



我总是希望我的电脑能够像电话一样容易使用;我的这个希望正在变成现实,因为我现在已经不知道怎么去使用我的电话了。I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.
- Bjarne Stroustrup



计算机是一种在人类历史上所有发明中,可以让你比以前更快地犯更多的错误的发明,同样,其也包括了“手枪”和“龙舌兰酒”这两种发明的缺陷。A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila.
- Mitch Ratcliffe



如果调试程序是一种标准的可以铲除BUG的流程,那么,编程就是把他们放进来的流程。If debugging is the process of removing software bugs, then programming must be the process of putting them in.
- E. W. Dijkstra



教一群被BASIC先入为主的学生,什么是好的编程风格简直是一件不可能的事。对于一些有潜力的程序员,他们所受到的智力上的伤害远远超过了重建他们的信心。It is practically impossible to teach good programming style to students that have had prior exposure to BASIC. As potential programmers, they are mentally mutilated beyond hope of regeneration.
- E. W. Dijkstra



理论上来说,理论和实际是一样的。但实际上来说,他们则不是。In theory, theory and practice are the same. In practice, they’re not.
- Unknown



只有两个事情是无穷尽的:宇宙和人类的愚蠢。当然,我现在还不能确定宇宙是无穷尽的。Two things are infinite: the universe and human stupidity; and I’m not sure about the universe.
- Albert Einstein



Perl这种语言就好像是被RSA加密算法加密过的一样。Perl - The only language that looks the same before and after RSA encryption.
- Keith Bostic



我爱“最终期限”,我喜欢“嗖嗖嗖”的声音就像他们在飞一样。I love deadlines. I like the whooshing sound they make as they fly by.
- Douglas Adams



说Java好的是因为它跨平台就像好像说肛交好是因为其可以适用于一切性别。Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders
- Unknown



XML就像是一种强暴——如果它不能解决你的问题,那只能说明你没有用好它。XML is like violence - if it doesn’t solve your problems, you are not using enough of it.
- Unknown



爱因期坦说,自然界中的一切一定会有一个简单的解释,因为上帝并不是反复无常和独裁的。当然,不会有什么信仰能程序员像爱因期坦那样感到舒服。 Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.
- Fred Brooks

2009-05-20

cannot open < gtk-doc.make

编译webkit,运行automake时发现了这个工具
gtk-doc-tools也装了

google无果

然后查看gtk-doc-tools里的bin文件,运行了几个,直到运行gtkdocize,没有报错,而且目录下多了一个gtk-doc.make文件,心想有戏

然后make

然后就行了

是我无知还是wekbit bug ...

2009-05-04

有关swf加密的一点感想

最近想把某flash游戏的1代和2代下载下来玩,但是都有域名验证,于是只好搬出decompiler

1代没有加密,结果是这么判断的

if(_url.indexOf("http://") != -1){
// ok
}else{
// error
}

当然直接爆破就好了
2代加了密,而且好像是swfencypt的模式,一开始是想放弃了,但是一想其实那个swfencrypt只是插了段恶心的tag,代码其实没有变,所以想碰碰运气

于是接着看1代的raw code,如下

//96 0e 00 08 00 07 01 00 00 00 08 01 07 0f 00 00 00
_push "http://" 1 "" 15
//22
_getProperty
//96 02 00 08 02
_push "indexOf"
//52
_callMethod
//96 05 00 07 ff ff ff ff
_push 4294967295
//49
_equals2
//12
_not
//4c
_dup
//12
_not
//9d 02 00 23 00
_if true goto #21

原来得到_url是靠压一个0f进栈,然后调22

然后拿ue去2代的swf里搜0f 00 00 00 22,只有一处,我晕,然后往后看,很多都和1代代码相似,只是'indexOf'的位置不一样,所以push的值也有少许区别。

由于判断的是!=,所以一般会有个not,结果不远处果然有个 12 9d, 然后把12改成01。

然后竟然就能玩了。。。

感想是:

1.swfencrypt的加密某种方面来说还是很弱
2.写代码时注意安全才是最重要的 -- 但是给程序员带来了而外的麻烦。。。
3.今天运气不错~~

2009-03-27

vista 下 Indeo 5 解码器问题

有个avi是iv5格式的,装了k-lite codec也不能看,光能听声。下了个安装包,安不上。。。

搜了半天,在http://forum.videohelp.com/topic327077.html原来vista本来就有对应dll,只是没注册。不知是不是故意的。

解决办法是,用管理员运行regsvr32 ir50_32.dll

2009-03-15

一个关于windows下gtk xmlparse.dll的问题

今天运行一个gtk程序时弹出一个对话框"the procedure entry point XML_setDoctypedeclHandler could not be located in the dynamic link library xmlparse.dll"

根据链接http://www.astahost.com/info.php/Problems-Gimp_t10925.html,是xmlparse.dll没有安装好的问题。虽然我这里不是gimp的问题,但是看情况应该类似。

解决办法是把gtk的xmlparse.dll拷到c:\WINDOWS\System32 。此外xmltok.dll也有类似问题,用同样方法解决。

2009-02-23

[转] 迅雷去广告

From http://bbs.xunlei.com/thread-394812-1-1.html

1:去掉flash广告条和右下角的无聊广告

打开迅雷目录(默认c:\Program Files\Thunder)下的Program文件夹,用记事本打开gui.cfg文件,将里面涉及网址的咚咚一概删掉,保存退出。

2:避免迅雷桌面新闻打扰

这个很简单,在“只需简单两步 避免迅雷桌面新闻打扰”这个帖子里有叙述,只是将迅雷设置一下就ok了啦!

3:去掉迅雷界面右边“热点推荐”的方法

打开其安装文件夹,默认是:C:\Program Files\Thunder Network\Thunder,打开Profiles,再打开UserConfig,把[splitter_1]项下的Pane1_Hide=0改为“=1”,保存退出。

提醒:1和3的修改方法要在迅雷完全退出的情况下进行。

经过以上的修改,迅雷的广告就几乎不见了!如果你嫌麻烦,那也好办,网络上有许多去广告版的下载,但都是迅雷较低的版本,想体验迅雷新版本又不想看到广告的就按上面的操作吧!

2009-01-21

Ubuntu 8.10 wacom 绘图板驱动问题

我的绘图板在Linux认成Waltop的板子,一直以来用wacom的驱动跑得好好的。

但是前一阵子更新系统以后就出了问题,现象是移动没问题,但是一点击就没有反应了,得把笔尖离开板子几秒再靠近才行。或者如果一开始迅速把笔尖点在板子上移动也能响应,但是抬起就不行了。

中间折腾了很长时间,一开始以为电池没电了,后来发现Windows下好好的。后来开始到处搜,xorg.conf自然是改了无数次,另外还改了udev, hal。到最后这几个东西弄得差不多都明白了,绘图板还是不干活。

后来,终于在Ubuntu官方帮助里看到了如下文字:

Users might also be affected by a bug in the 8.1.4 version of the wacom drivers that comes with Ubuntu 8.10, where the input freeze when the pen touches the tablet. If that is the case for you, you can install updated drivers :

于是“一声叹息”。。。

后来想编译份最新的linuxwacom,但是又有别的问题,总报usbParse: Exceeded channel count; ignoring the events.搜了一下,似乎也是很新的问题,开发者还在解决中。

于是下了那个帮助里给的两个deb并安装,似乎第一次没有成功,也可能是没有重启的缘故。但是第二次就好了。

总算是好了。

2009-01-08

一个DNS的诡异问题

同学电脑出问题了,windows xp sp3,症状是说除了nslookup外,别的程序都不能解析DNS(比如ping, firefox等等)

我也不知道原因,随便搜了两下,看到了如下两篇文章

http://bbs.mcafeefans.com/viewthread.php?tid=1488943

http://bbs.mcafeefans.com/viewthread.php?tid=1482527

于是叫他禁了DNS Client这个服务看看,结果就正常了!

不过他的情况和帖子里的似乎不大一样,好像不是防火墙的问题。
更为诡异的是,他那里跑虚拟机竟然可以正常使用。

总之详细原因未知,但是可以确定DNS Client比较诡异,可能引起奇怪的问题。