Skip to main content

Posts

Showing posts from 2007

Gnome 下 把 Dream Aquarium 设为壁纸

在Windows下发现这个软件不错后,决定要尝试把它弄成我的ubuntu的“壁纸” 首先是安装,默认会出问题,原因是少了个gdiplus.dll, Dream Aquarium主页上关于Win2000版本的地方有说明。 不过我的XP似乎没有这个文件也能跑。 总之,下一个gdiplus.dll放wine的系统目录里就好了。 如果想装破解版,会麻烦些,我按照Windows的方法试了好久,没有成功,最后是胡搞了几次才成,可能有用的几点是: 1.破解包里有一个dai文件,用16进制编辑器查看发现其前三行是明文,之后是一个PE文件头,于是删掉前三行,果然可以运行,但是经常会crash。 这个文件应该就是1.1090完全版的主程序了。一般在鼓弄过程(最好还是按着破解包里面的说明弄)中可以试试这个能不能正常运行,即显示鱼缸。我这里最好结果是它可以运行,但是仍是使用版,似乎只能加2号鱼。 2.注册似乎一直都不成功,我最后是在上面一条成功后,认为注册表方面没问题了,然后把Windows下的安装文件拷过来了一份,于是能正常运行了,可加的鱼也没有限制了。 3.破解包里说要block这个屏保的网络连接,但是我不会弄,说不准哪一天屏保自己发现被破解了,又拒绝运行了。不过现在已经运行了几次,没有问题。 能运行以后,开始尝试把它弄成壁纸. 首先是要配置一下wine.设上虚拟桌面,并去掉Allow the window manager to control the windows。 我一开始没设好这个,总是不行。原因大概是屏保发现失去焦点后就会自动退出,可是我们把它设成了桌面以后,肯定要做别的事,于是切换到其他窗口时,屏保就退出了。 去掉Allow the window manager to control the windows 后, 该窗口就得不到失去焦点的信息了,也就不会自动退出了。 另外如果不选上虚拟桌面,后面用的devilspie会找不到这个窗口。 其次,配置一下屏保(在屏保里面按回车),去掉鼠标退出,然后把键盘退出的范围改小,我弄的是Esc only。 接着是装上devilspie, 在home里建目录.devilspie,并写一个文件DreamAquarium.ds (if (is (application_name) "Wine desktop") (begi...

软件推荐: Dream Aquarium

最初听说Dream Aquarium是在一个介绍如何把它嵌入Beryl桌面的帖子,当时wine安装都没成功。 最近在Windows试了下, 确实不错。很有趣的屏保。 最新试用版是1.1040, 而最新正式版似乎是1.1090 破解不大好找,但确实能找到,我找到的链接给删掉了,好像是在www.leehare.cn.

gnome-blog: blog小工具

看full circle发现了一些blog工具, 后来自己又查了查,发现如下几个 gnome-blog //gnome-panel 的 applet drivel //程序 blogtk //程序 scribefire //firefox 插件 其中除最后一个外均可以正常发帖,但都不支持tag。 感觉还是gnome-blog比较好,因为功能方面三者差不多,但它最轻巧。

wine下安装DirectX 9.0

参考 http://feeds.feedburner.com/~r/winereview/~3/187817620/directx-90c-on-linux-with-wine.html 首先拷来mscoree.dll 和 streamci.dll 然后设置dll override "d3d8"="builtin" "d3d9"="builtin" "d3dim"="native" "d3drm"="native" "d3dx8"="native" "d3dxof"="native" "dciman32"="native" "ddrawex"="native" "devenum"="native" "dinput"="builtin" "dinput8"="builtin" "dmband"="native" "dmcompos"="native" "dmime"="native" "dmloader"="native" "dmscript"="native" "dmstyle"="native" "dmsynth"="native" "dmusic"="native" "dmusic32"="native" "dnsapi"="native" "dplay"="native" "dplayx...

gnome的彩蛋

按alt+f2调出Run Application对话框, 然后输入 free the fish 或 gegls from outer space 前者会出现一个小鱼,不过要想让它消失只能kill掉gnome-panel 后者出现一个鱼打牛的小游戏

pidgin 2.3.1 支持QQ了

最近看到Pidgin升级到2.3.1了,Changelog里赫然写着改进了对QQ的支持, 于是我下载编译试了一下。(注意首先要卸了原来的) 开始时我的QQ号需要激活,还需要输入验证码,这些都是用Wine的QQ发现的。 前者上个网页就行了,后者则需要更改密码。 都还不算麻烦。 之后用pidgin连了一下,果然连上了。 只是现在不支持好友分组, 也不支持表情。 但是已经很高兴了。

ubuntu vim-latexsuite默认变量的问题

ubuntu里装了vim-latexsuite后问题多多,除了上次说的找不到插件的问题外,还有一个问题,就是默认变量没有被设置,每次按\ll编译时都会提示没有设置initTarget. 以前就没有遇到这个问题。 今天研究了一下,原因是vim自己的目录下有一个关于tex文件compile的设置,优先级比latexsuite的高,所以latexsuite的那个就不能被运行了。 解决办法是把/usr/share/vim/vim71/compiler/tex.vim改名或删除,之后就正常了 :)

SharedObject 修改器

最近破解一个Flash时需要修改它的SharedObject, 找到一些修改器,其中最好用的一个叫做.sol Editor, 主页是 http://sourceforge.net/projects/soleditor/ 只可惜只有Windows版本,但是在wine下跑得也不错。 另外就是不开源,也有点不爽。 但是它是我找到的几个修改器里最好用的一个。

linux 连接 蓝牙 手机

参考: http://blog.flyingdream.net.cn/2007/%E5%9C%A8-ubuntu-linux-%E4%B8%8B%E5%88%A9%E7%94%A8%E8%93%9D%E7%89%99%E9%80%9A%E8%BF%87-gprs-%E6%97%A0%E7%BA%BF%E4%B8%8A%E7%BD%91/ http://www.chinalinuxpub.com/read.php?wid=1490 测试环境, ubuntu 7.10 + motorola A768i 网上搜这个能搜到很多, 大致是装上很多以bluez-开头和包含bluetooth的包(我差不多都装了), 之后启动bluetooh服务,以及运行gnome-obex-server(Applications->Accessories->Bluetooth File Sharing). 然后就能自动找到手机了(可能也需要修改hcid.conf,见下), 传文件是点右键, Send to, 里面有个Bluetooh的选项。 今天一直在搞rfcomm, 本来是试图连上蓝牙局域网的,但是一直没成功,到现在有点成果。记录如下。 注意: 要用到的命令:hcitool, hciconfig, sdptool, rfcomm, 最好都看一下文档。 另外每次修改配之后注意重启bluetooth服务:/etc/init.d/bluetooth restart 很多命令需要管理员权限,以下省略sudo 步骤: 1.修改/etc/bluetooth/hcid.conf, 关键是如下两行 security auto; passkey "1234"; 第一行很重要, 我一开始设的user,手机怎么都连不上电脑 第二行是手机连电脑时需要输入的验证码 2.hcitool scan 得到手机的地址 3.sdptool browse 得到手机服务列表 我这里这条命令结果为空, 我用的是spdtool search --bdaddr 常用的service有 DUN 拨号 LAN HS headset OPUSH obex push 得到列表后注意看Protocal Descriptor List里“RFCOMM”一行及下一行, 找到Channel: x, 记住这个x...

ubuntu 7.10 下安装 windriver

最近要用Xilinx ISE, 装驱动时老装不上, 去Windriver官网上下的也没用。 configure和make都报错, 自己尝试修改未果。 几经查找, 在 http://www.visionlab.uncc.edu/component/option,com_jd-wiki/Itemid,46/ 上找到解决办法: 首先去 ftp://ftp.xilinx.com/pub/utilities/fpga/install_drivers.tar.gz 下载并解压最新的驱动, 我下的跟上面那个网站说的一样, md5是d0aea515f1b4523eb2537df86b c 6db41 创建一个diff文件 --- install_drivers/ linux _drivers/windriver32/windrvr/ linux _wrappers . c .orig 2007-03-27 22:35:36.000000000 +0200 +++ install_drivers/ linux _drivers/windriver32/windrvr/ linux _wrappers . c 2007-09-24 00:32:44.000000000 +0200 @@ -44,9 +44,6 @@ #endif #in c lude <asm/mman. h > #in c lude " linux _wrappers . h " -#if defined( LINUX _26) - #in c lude < linux /io c tl32. h > -#endif #if defined(UDEV_SUPPORT) #in c lude < linux /devfs_fs_kernel. h > #endif @@ -91,7 +88,10 @@ #endif #if defined(MODULE_LI C ENSE) - MODULE_LI C ENSE("Proprietary"); + // MODULE_LI C ENSE("Proprietary"); + // U h ! U h ! We need to set t h is...

Bonjour.exe 清除办法

刚装了Adobe CS3, 防火墙突然给我蹦出一堆Bonjour.exe的信息,很是烦人。 查了一下,不算病毒,是Adobe的某软件, 删之。 具体方法是: 运行“C:\Program Files\Bonjourm\DNSResponder.exe -remove” 打开 C:Program Files\Bonjour ,重命名 mdnsNSP.dll 为 mdnsNSP.old 重启电脑 删除 Program Files\Bonjour 文件夹

linux 下 nvidia 显卡双屏幕设置

这个被nvidia称为TwinView, 其设置方法是在Section "Screen"里加入 Option "TwinView" "True" 之后是Option "MetaModes" "nvidia-auto-select, nvidia-auto-select" (这个也可以用nvidia-settings设置) 这样就启动了TwinView, 不过这时两个屏幕是拼接的关系。 我这次是要接投影仪, 因此需要两个屏幕显示一致,因此还要加上 Option "TwinVieworientation" "Clone" 之后重启X即可。 nvidia驱动的文档写得很清楚,我看了2分钟就搞明白了。

ubuntu 中文默认字体的设置

我一直希望能够分别设置中文和英文的字体, 但是一直都没成功。 之前一直是只设置喜欢的英文字体作为默认字体, 但是中文的话就非常难看,现象是很多文字字体,大小都不一致。 仔细想想,它(我一直用gnome)字体显示的工作原理大致是有个字体列表,然后要显示一个字的时候就依次查找,直到找到一个能够显示的为止。 比如如果我设的默认字体是个中文字体,那么英文字体一般就会跟着改变。但是现在默认字体是英文的,显示中文时自然找不到,于是它就从自己的默认列表里去找到了。 至于列表具体存放的位置, 我找了找,是在/etc/fonts/conf.d里,相关的有两个文件, 40-generic.conf 和 65-nonlatin.conf, 根据/etc/fonts/conf.avail里的说明,这些配置文件是按编号顺序依次加载的, 于是修改65-nonlatin.conf, 由于我想使用文鼎楷体,于是找到对应的 , 并把它移到所在 里的最前面,成为第一个 。 之后重启X时没进去,卡住了,然后重启了一下问题解决。 现在爽眼多了。

linux下麦克风不工作

我这里麦克风的症状如之前声卡output的一样, 不报错但是不工作(偶尔好像也报错)。 弄了好几次不见起色。 今天偶然又看看了alsa网站里的详细安装说明,发现我这里设备文件的权限没设对。 于是运行chmod a+rw /dev/dsp /dev/mixer /dev/sequencer,之后问题解决(我这里没有midi) 不过似乎噪声很大,尚待解决。但是好歹可以用了。

创建 ssh 信任连接

参考: http://www.powersite.cn/?q=node/62&p=9334c90a88934eac5df7c7710c149d&user=baidu 主要目的是让服务器给客户端建立信任关系,使得以后连接时不需要输入密码 具体步骤是 1.在客户端建立key, 如果没有创建过, 用ssh-keygen -t rsa创建一个 2.把生成的id文件(一般是~/.ssh/id_rsa)的内容追加到服务器的~/.ssh/authorized_keys文件中 就是这么简单。

evince 看中文pdf乱码的解决

有时候用evince看中文pdf会出乱码,大概是Adobe-GB1这个字体的问题, 装了xpdf-chinese*和cmap-adobe*之后,xpdf可以正常工作了, 但是evince仍不行, 控制台消息会报跟adobe-gb1有关的错误。 源里没有poppler相关的包, 我又搜了搜,终于发现了应该安装poppler-data,可以从http://poppler.freedesktop.org/下载到。那个由于是版权归Adobe,所以不能放源里。唉。 不过装了之后确实正常了,如果是ubuntu,注意用sudo make install prefix=/usr来安装。

ubuntu 7.10 rainlendar 崩溃的解决

日历软件我一直用rainlendar+GCALDaemon, 然而ubuntu升级至7.10后,rainlendar就出了问题, 虽然界面可以显示,但是点击菜单后就会崩溃。起初认为是和以前一样与scim冲突, 但是尝试修复未果。 今天搜到了http://www.rainlendar.net/cms/index.php?option=com_fireboard&Itemid=36&func=view&catid=4&id=4316 根据作者所说, 这个是和gtk和wxwidget有关。 之后我现在了2.2.b48版, 基本工作正常 链接在http://www.rainlendar.net/cms/index.php?option=com_fireboard&Itemid=36&func=view&id=4540&catid=7

[转]AT&T汇编语言与GCC内嵌汇编简介

AT&T汇编语言与GCC内嵌汇编简介 版本 0.1 时间04/3/30 EMAIL chforest_chang@hotmail.com 1 AT&T 与INTEL的汇编语言语法的区别 1.1大小写 1.2操作数赋值方向 1.3前缀 1.4间接寻址语法 1.5后缀 1.6指令 2 GCC内嵌汇编 2.1简介 2.2内嵌汇编举例 2.3语法 2.3.1汇编语句模板 2.3.2输出部分 2.3.3输入部分 2.3.4限制字符 2.3.5破坏描述部分 2.4GCC如何编译内嵌汇编代码 3后记 本节先介绍 AT&T汇编语言语法与INTEL汇编语法的差别,然后介绍GCC内嵌汇编语法。阅读本节需要读者具有INTEL 汇编语言基础。 1 AT&T 与INTEL的汇编语言语法的区别 1.1 指令大小写 INTEL格式的指令使用大写字母,而AT&T 格式的使用小写字母。 例: INTEL AT&T MOV EAX,EBX movl %ebx,%eax 1.2 指令操作数赋值方向 在INTEL语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。 AT&T语法第一个为源操作数,第二个为目的操作数,方向从左到右,合乎自然。 例: INTEL AT&T MOV EAX,EBX movl %ebx,%eax 1.3 指令前缀 在INTEL语法中寄存器和立即数不需要前缀; AT&T中寄存器需要加前缀“%”;立即数需要加前缀“$”。 例: INTEL AT&T MOV EAX,1 movl $1,%eax 符号常数直接引用,不需要加前缀,如: movl value , %ebx value为一常数; 在符号前加前缀 $, 表示引用符号地址, 如 movl $value, %ebx 是将value的地址放到ebx中。 总线锁定前缀“lock”: 总线锁定操作。“lock”前缀在Linux 核心代码中使用很多,特别是SMP 代码中。当总线锁定后其它CPU 不能存取锁定地址处的内存单元。 远程跳转指令和子过程调用指令的操作码使用前缀“l“,分别为ljmp,lcall, 与之相应的返回指令伪lret。 例: INTEL AT&T lcall $secion:$offs...

ubuntu 升级至7.10后framebuffer console故障排除

症状:没有修改任何配置,升级后framebuffer console突然不工作了,纯控制台变成黑屏,手工加载fbcon, vesafb, nvidiafb(我的显卡是nvidia)也不行。 折腾了好半天,参考了一些网页,比如 https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/129910 了解了大致原因,一个是 fbcon不能自动加载,另外是framebuffer的驱动被加入了blacklist 得解决方案: 1.修改/etc/initramfs-tools/modules, 添加fbcon, vesafb(每个模块占一行) 2.修改/etc/modprobe.d/blacklist-framebuffer, 把含vesafb, nvidiafb的两行注释掉 3.确认grub里的启动参数中设置好了vga 问题解决。 注:第一步里似乎不用加上nvidiafb, 但是另外两个似乎要加上

ubuntu 升级至7.10后网卡设备名自动改变的解决方法

症状是每次开机时会说invaid MAC address, 然后就会生成一个随机的MAC。 但是7.04时这个可以忽略。7.10里每次MAC一更改,网卡设备名就会更改,从eth0一直往上加。 查了一下,是udev这个东西搞的鬼。具体来说是/etc/udev/rules.d/75-persistent-net-generator.rules 我把一开始的GOTO="persistent_net_generator_do"该成了GOTO="persistent_net_generator_end",即直接跳过了生成新设备名的代码,问题得以解决。

ubuntu 升级至7.10后 vim-latexsuite 不工作

在 https://bugs.launchpad.net/ubuntu/+source/vim-latexsuite/+bug/137205 处找到了相关资料。 原因就是vim的runtimepath不包含/usr/share/vim/addons,但是vim-latexsuite默认是被装在那里的(不知道ubuntu7.04是如何配置的)。 解决办法,可以将/usr/share/vim/addons的内容拷至/usr/share/vim/vimfiles,也可以在.vimrc里加入set runtimepath+=/usr/share/vim/addons。

ubuntu 升级至7.10后无法登录

现象是输入密码的地方可以进入,但输入后X过一会儿就崩溃了,之后自动回到登录状态。 首先是要确定已装好显卡驱动,譬如我的nvidia显卡,更改内核后需要重新安装。 之后我把~/.gnome*和~/.config/autostart都改名后再进就正常了,然后试着该回来,又不行了。 后来折腾了几次,主要都是这几个文件夹,现在好了,发现新的gnome自启动好像不用~/.config/autostart了.

Intel HD Audio 在 linux 下耳机插孔不工作的解决办法

症状是:使用hda-intel模块驱动声卡,扬声器工作正常,但插入耳机后耳机不出声,而扬声器仍发声。 参考了http://leufke.info/linux/asus/index.html, 可以尝试给snd-hda-intel模块加入position_fix=1的参数,一般来说是修改/etc/modprobe.d/options,加入options snd-hda-intel position_fix=1即可

游戏推荐: fish fillets

画面简单但关卡不简单的小游戏 关卡设计非常巧妙,到了后面有时我连看着攻略都过不去。 如果完全是自己研究出来的解法,过关后甚至有想哭的感觉:设计得太精妙了! 极力推荐! 现在版本叫fish fillets next generation.

vaucanson-g: latex画自动机的宏包

最近作业要画自动机,找来找去发现这个 vaucanson-g 挺不错,只不过要注意根据它的文档所说,它只能生成 postscript指令,因此我这不能用pdflatex直接编译为pdf,而是要用pslatex编成dvi, 然后再依次转成ps,pdf才可以。 效果还不错,不过目前只用到英文,也没有插图,还没出现问题,不知道它对于中文和插图支持得如何。

wine Windows Media Player 10

参考: http://feeds.feedburner.com/~r/winereview/~3/161431304/windows-media-player-9-10-on-linux-with.ht ml 主要步骤是: 1.安装一些dll, 一般可以从windows目录拷来或下载,然后用regsvr32注册以及winecfg中native的设置。包括如下dll: quartz.dll devenum.dll jscript.dll MSCAT32.dll 2.安装Microsoft XML Parser 3.安装解码器,我用的K-Lite Mega Codec Pack 4.安装Windows Media Player 10 一开始几次都没弄好,主要是可能忘了注册某几个dll, 一般来说几次重装就没问题了。 根据引用的帖子所说,好像网络方面不能用,别的都没问题。

wine qq

参考: http://linuxdesktop.cn/2007/04/13/step-by-step-install-qq2006-with-wine 我大概是按着这个帖子做的,但也不尽然。 主要应该还是弄来riched20.dll和riched32.dll, 可以从windows盘拷,也可以装一个。之后安装QQ,最后注意把TIMPlatform.exe改名基本就OK了。 原文说要把键盘加密那个sys也改名, 不过我这里没有找到。 还有就是一开始我用的是2007飘云版,但是虽然能正常登录及显示好友列表,而一进聊天窗口就卡住了。后来用的官方版本(也是2007)就好了。 最后就是我的wine没有打输入法补丁,因此用scim无法输入中文,不过问题不大。

关于在bochs的gdb-stub中加入对虚拟内存访问的支持

最近操统课需要用到bochs这个模拟器,我用的2.3.5. 但是实际出现了以个问题,就是gdb-stub这个功能不大正常,运行gdb后可以正常下断点,但是单步进可以,单步过却和单步进相同,这个问题不大比较恶心的是无法显示局部变量的值,总是显示0xffffffff                          google了半天没看到一点有用的。。。。。唉,只好自己搞                          参阅了gdb protocol后我修改了bochs的gdbstub.cc,让其显示出与gdb交互的内容,大致了解了内存这部分的步骤,主要是gdb给server(即bochs)发一个内存读取的请求,格式为m addr,length, 然后server返回十六进制的数据                          在bochs的gdbstub.cc 558行为处理这个指令的,不难看懂,我修改了它,让它输出access_linear的返回值,然后再调试,查看局部变量,果然valid为0,进一步,到access_linear, 经过痛苦地多次调试,发现问题处在valid=BX_MEM(0)->dgb_fetch_mem...一行,最后进到或则个函数,在memory/misc_mem.cc 512行下看到了这部分,原来是bochs发现读取的地址越界,就用0xff填充,然后返回0, 我修改了0xff,然后用gdb调试时证实了这一点。                          最后往上看,发现是addr比内存的长度还要大, 加入调试输出后发现gdb读的地址是0xf010 9fe0左右,而BX_MEM_THIS len仅有2000000,这显然会越界。                          起初我考虑也许是那里关于内存大小的设置没有弄好,但没有找到具体位置,但后来发现其实那BX_MEM_THIS len 是在.bochsrc里有定义的,0x2000000=2^25=32k,而那个0xf0109fe0是内核做的虚拟内存,gdb只跟bochs打交道,而虚拟内存是内核弄的,虚拟机又管不着。因此好像没什么好办法。。。 之后我查了很多关于虚拟内存的资料,发现其实是cpu直接支...

mldonkey+sancho试用

参考 http://forum.ubuntu.org.cn/about42337.html http://www.haijd.net/doc/read-29.html http://sparkplugcn.wordpress.com/2007/08/15/%e4%bb%8eemule%e5%88%b0mldonkey/ 很多地方说mldonkey比amule如何如何好,而我觉得 amule本身就挺好,下完了最近几个文件后想尝试一下mldonkey 首先我是想编译一个不带 gui的 mlnet, 按照它代码里的readme, 只需简单地./configure然后make就行了,但是我这里却说需要 ocaml (readme里似乎是说只有 gui版本才需要),一开始让它自动下载编译ocaml, 但很慢,于是放弃,改用二进制包。 之后是前端,推荐的是sancho, 我下了个gtk版本的。 再之后按着帖子里的大概弄弄,配置些关于网络的东西,然后再用mldonkey release里带的插件把firefox和mldonkey关联上,需要强调的几点是 1.导入文件似乎只能下载后再本地导入 2.以下命令可以用sachon的console输入,好像也可以用telnet连接mlnet输入 2.用servers命令导入服务器,推荐下载http://www.emule.org.cn/server.met 3.用ov_load命令导入overnet的node列表,推荐下载http://download.overnet.org/contact.dat 4.用kad_load命令导入kad的node列表,推荐下载http://www.emule-inside.net/nodes.dat,也可使用eMule的nodes.data 5.注意把kad和overnet的选项打开,我一开始就忘了。。 6.注意修改最大下载限速,默认是50,太小了 感觉上如果设好了确实挺快,但也没有传说中的那么快,当然可能跟我这里网络环境有关。但是它可以连接多个服务器确实是个创新的想法

firefox 中 设置 ed2k与amule的关联

参考: http://forum.ubuntu.org.cn/weblog.php?w=646&previous=10 安装 amule-utils包 然后在firefox中利用about:config添加如下两项 新建一个Boolean,名字为network.protocol-handler.external.ed2k,值为true 新建一个String,名字为network.protocol-handler.app.ed2k,值为/usr/bin/ed2k

[转] Python的转码

字符串内码的转换,是开发中经常遇到的问题。 在Java中,我们可以先对某个String调用getByte(),由结果生成新String的办法来转码,也可以 用NIO包里面的Charset来实现 。 在Python中,可以对String调用decode和encode方法来实现转码。 比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作 s.decode('gbk').encode('utf-8') 可是,在实际开发中,我发现,这种办法经常会出现异常: UnicodeDecodeError: 'gbk' codec can't decode bytes in position 30664-30665: illegal multibyte sequence 这 是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些 字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。 这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字符串——有时候,就是整篇文章——就都无法转码。 幸运的是,tiny找到了完美的解决办法(我因此被批评看文档不仔细,汗啊……) s.decode('gbk', 'ignore').encode('utf-8') 因为decode的函数原型是decode([encoding], [errors='strict']),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常; 如果设置为ignore,则会忽略非法字符; 如果设置为replace,则会用?取代非法字符; 如果设置为xmlcharrefreplace,则使用XML的字符引用。

Amarok 不出声音

今天尝试Amarok,是以前非常喜欢的播放器。 但是就是不出声音, 还弹出一个No MP3 Support为标题的对话框。 确定插件安装全后,开始研究它的选项, 最后发现是在Settings--Configure Amarok--Engine--Configure xine Engine--Output plugin处为Autodetect,怀疑是此处问题。 改成alsa后问题解决。

wine 程序菜单乱码的解决

我原来的locale 除了LC_CTYPE是zh_CN.UTF-8外,其余均为en_US.UTF-8, 但是这时wine的程序的菜单中文都不能正常显示,而程序内部有些中文则能够正常显示 解决方法是设置LC_ALL为zh_CN.UTF-8, 当然可能只改几个就行,但是没有进一步尝试。

Windows XP 设置 NTFS 文件权限

一般来说直接点右键, 有个“安全”标签,就是了, 如果说不能改, 那么应该点“高级”, 然后去掉“从父项继承那些可以应用到子对象的权限项目, 包括那些在此明确定义的项目” 如果连“安全“标签”都没有,那么应该在资源管理器中选工具--文件夹选项--查看, 然后去掉“使用简单文件共享”。

再谈声卡识别但不出声的问题

上次在 一个关于声卡识别的问题 提到了一个关于声卡在设备管理器中能够识别, 但是声音选项中缺说找不到音频设备的问题。 我转的解法是用Plug and Play Software Device Enumerator替换一个已有设备ISAPNP Read Data Port。起初我认为是识别有误, 但后来感到有些不对劲, 觉得那本身是一个正常的系统设备。 虽然能正常工作, 但毕竟不是完美解决方案。 后来再次尝试了上次 也提到的重装Plug and Play Software Device Enumerator的方法: 1.假设windows装在c:\windows下, 将c:\windows\inf\machine.inf, c:\windows\system32\streamci.dll, c:\windows\system32 \drivers\swenum.sys拷到一个临时目录下 2.修改machine.inf,找到[ControlFlags], 把下面一行ExcludeFromSelect=*删去 3.如果现在设备管理器中有Plug and Play Software Device Enumerator, 那么用现在的临时目录给它更新驱动即可,否则依次进 入控制面板->添加硬件, 几次"下一步"后依次选"添加新的硬件设备","安装我手动从列表选择的硬件","显示所有设备","从磁盘 安装", 此时选那个目录, 然后厂商选"(标准系统设备)", 型号选"Plug and Play Software Device Enumerator", 然后安装便可 。 最后还查到一个解法, 是说在注册表中删除所有swenum的相关项, 然后就能自动识别Plug and Play Software Device Enumerator 了, 不过这个没试过, 不知是否真的可行。

一个关于声卡识别的问题

环境为Windows XP SP2, 声卡realtek hd audio, 似乎是nvidia的主板 症状比较特别, 是偶然卸了某驱动后发现很多硬件不能用了, 打开设备管理器发现dvd-rom, 声卡等都有黄色叹号, 另外还有一个"Plug and Play Software Device Enumerator" 也是这样。 一开始想用"卸载-重新识别"的方法, 但是那个"Plug and Play Software Device Enumerator"卸掉便一去不复返了。 一开始我没在意, 全心折腾声卡, 但是总是不行, 后来在网上艰难搜索才发现问题就出现在那个"Plug and Play Software Device Enumerator"上。 网上有个从系统目录copy出inf, sys, dll个一个文件, 稍微修改并利用它们安装一个这个硬件的方法。 我没试成功(后来发现是没理解好说明)。 之后在 http://www.softwaretipsandtricks.com/forum/windows-xp/7021-no-sound-says-no-audio-device-but-drivers-there-enabled-working-properly-5.html 找到了一种解法, 原文加翻译如下: 1. From Device Manager (be sure to select View/Show hidden devices), find the 'ISAPNP Read Data Port' device from the System Devices list. (Of note: once I successfully repaired this problem, this device no longer appears.) 在设备管理器中(注意选上查看->显示隐藏的设备。(译注:似乎不选也可))找到ISAPNP Read Data Port这个设备(当成功进行下面操作后, 这个设备将不再存在(译注:成功后会由Plug and Play Software Device Enumerator取而代之, 也就是说, 问题应该是对这个硬件的...

初尝 64位 linux kernel

机器是athlon64的, 不跑跑64bit linux实在不过瘾, 于是下了个linux kernel 2.6.22.5自己编译看, 一开始下载是想编译32位的, 但是启动时有点小问题, 中间会卡住, 要不断按开机键才能继续, 挺诡异的, 但是64位的编译好后竟然没有这个问题了, 比较有趣。 在编译前进行配置时倒是出了些问题, 由于我要在32位系统下编译64位内核, 是交叉编译, 不是很熟练, 查了半天在发现应该在make是加入ARCH=x86_64的参数。(ubuntu里习惯称amd64, 但linux内核里叫x86_64) 另外configure的时候也有问题, 我直接make ARCH=x86_64总报错, make ARCH=x86_64 config也不行, 后来想到, 现在的.config是按i386配置的, 可能跟64位的有冲突, 于是用make ARCH=x86_64 oldconfig重新配置, 别说, 还真问了几个新问题, 之后再make ARCH=x86_64就可以编译了, 最后别忘了编译模块,再都安装就好了。 现在运行挺不错, 但是aptitude不能找到64位程序, 还有待研究。

dojo学习笔记 (一)

最近几天开始学习dojo 0.9.0, 主要是看它的源码和测试样例, 以下是这几天的研究成果 一、 dojo 概述 我用的是dojo 0.9.0, 下载压缩包解压后有四个文件夹, 依次为: dijit: 提供了很多ui控件, 被称为widget。 dojo: 提供了很多跨浏览器的实用函数, dojox: 似乎是提供了一些插件性质的东西, 我只对dojox.flash有点了解 util:里面只有个doh, 功能不明 二、 dojo库的使用 首要的是在html里导入dojo.js文件, dojo加载支持很多参数, 其中我目前用到的有parseOnLoad和isDebug. 设定参数的方法有两种, 一种是在导入dojo.js前通过javascript建立一个对象djConfig,包含要设定的键值对,如djConfig={isDebug:true}; 另一种是在<script>标签里加入djConfig属性,值为JSON语法的键值对, 如<script djConfig="isDebug:true" src="dojo.js"></script> 一开始我对于后一种方法感到很神奇, 起初我以为javascript可以获得自己所在标签的信息, 后来看dojo.js, 查找djConfig, 发现它一上来就判断djConfig是否存在, 否则就建立新值,这时我认为djConfig标签可以作为一个对象在javascript中可以访问, 但亲自尝试后发现并不行。于是我甚至认为这是dojo的一个bug, 但在随后的研究中我发现它确实起作用,于是不得不再认真得看dojo.js(当然是dojo.js.uncompressed.js), 发现原来它会遍历所有script标签,并对导入dojo的标签的djConfig进行处理, 实际上就是加上一对括号然后eval一下。 此时我才恍然大悟。 再说说那两个参数, isDebug不必多说, parseOnLoad是指定dojo.js是否在html加载完毕后进行扫描,识别通过标记方法声明的对象(比如dijit的widget就都支持这种声明, 十分方便)如<div dojoType=dijit.form.Menu> ...

linux 下 驱动 Acer 笔记本 Realtek ALC268 声卡

我这个笔记本是Acer的, 声卡为nvidia mcp67集成, 解码器为realtek alc268 刚装上ubuntu 7.04后声卡能够识别, 有nvidia unknown device 和alc268字样, 但是不能发声。 起初认为是声卡没有识别好, 但是装了最新的alsa1.0.15rc1和ossv4都没效果, 了解了update-pciid才知道其实已经识别了声卡, 而问题出现在 realtek alc268上。 realtek官网上也有个驱动, 下了一看,里面原来也是alsa1.0.14, 只是驱动版本号比较特别。装上后仍不起作用。 在网上搜了很多文章, 其中这个比较好 Bug #116326 in linux-source-2.6.22 (Ubuntu): “No audio INTEL HD audio - Realtek ALC268 codec - Toshiba A205-S4577” 看来这个问题主要出在新型的笔记本上。 另外我还得知了alsa1.0.14对alc268支持的不是很好。上面那个链接里, 中间有几个人帖上了for realtek的alsa补丁, 看样子能起作用。 他们说1.0.14上支持的声卡列表里没有alc268。还有一点, 提出这个问题的人是toshiba的笔记本, 下面帖子中多次提到了model=toshiba这个参数, 于是我自然想到有没有for acer的。 于是我把目光放在了1.0.15rc1上, 看changlog里赫然有个alc268, 而其中专门多了一个acer笔记本的model。 我顿时眼前一亮。 有戏! 再看一下alsa的安装说明, 应该在snd_hda_intel模块加载时加上model=xxx 的参数。 那我这情况自然是在/etc/modprobe.d/options里加一句options snd_hda_intel model=acer 然后重启(可能仅重加载snd-hda-intel也可), 听到了熟悉的ubuntu启动声音。 啊哈哈哈!!!

update-pciids

今天学会了这个命令, 主要是lspci时一大堆unknown, 而驱动里明明支持那些id, 但是就是不能显示正确的字符串, 后来知道了update-pciids这个命令, 可以下载到最新的pci id, 之后lspci少了几个unknown. 此时才恍然大悟, 原来lspci显示的字符串跟驱动没有关系, 而是自己有一个索引。

[转] Firefox 加速技巧

转载请注明出处: www.NiDaYe.orG ,谢谢 作者:Roby Liang 很早很早以前曾经写过一篇“ Firefox 终极加速 ”的文章,可以通过手动修改 user.js 文件来获取理论上的最佳浏览速度,后来发现这种修改方式对于普通用户来说真的有点勉为其难,而且国内的网络环境并不尽如人意,我们所做的 js 优化修改在臃堵的网路上显得那么渺小与无助。 不过聊胜于无,让我们暂且先把这些复杂的优化操作变的简单一点,然后再来亲自感觉一下这些已经在网络上流传了很久的提速技巧吧。下面的操作我们都在 about:config 里进行。在 Firefox 的地址栏中输入 about:config,让我们开始提速吧。 network.http.pipelining 在 Filter 中输入 network.http.pipelining,双击赋值为 true,默认为 false。如果没有找到这个键值,可以右键新建一个 Boolean,把她赋值为 true 就 OK 了。 还 是像我在从前解释过的那样,激活这个键值之后,Pipelining 同时发出成倍数的连接请求,从而达到提升连接速度的效果。网络上的大多数网站都是基于 HTTP 协议,而 HTTP 1.1 可以支持多线程的连接请求,通过这个操作可以减少 Firefox 载入网页的时间。不过并不是所有网页所在的服务器都支持这种操作,所以当你修改键值之后却看不到一点实际效果的时候,请不要对我破口大骂。 network.http.pipelining.maxrequests 在 Filter 中输入 network.http.pipelining.maxrequests,双击并赋值为 8,默认键值为 4。 network.http.proxy.pipelining 在 Filter 中输入 network.http.proxy.pipelining,双击并赋值为 true。 这两条优化的道理同上,这里就不再多解释了。 network.dns.disableIPv6 在 Filter 中输入 network.dns.disableIPv6,双击并赋值为 true。 IPv6 把 IP 地址由 32 位增加到 128 位,从而能够支持更大的地址空间,当用户在终端向一个 IPv6-capable DNS 服务器发送连接请求时...

ubuntu nvidia 驱动安装

显卡是nvidia geforce 8400M G, ubuntu 论坛上说的方法是装nvidia-glx, 我看了看源里, 除了这个包还有个nvidia-glx-new, 但是看说明,似乎太老了, 不认geforce8。 事实确实如此。 于是上nvidia官网下了个驱动, 叫做NVIDIA-Linux-x86-100.14.11-pkg1.run,但是装了不能用, X的错误信息说nvidia kernel interface版本不匹配, 而这个应该是ubuntu的linux-restricted-modules包提供的, 问题可能在这里. 后来在nvidia论坛上证实了这一点, 在http://www.nvnews.net/vbulletin/showthread.php?s=5e6ef2b1d1fb97772f6b738b135f220b&t=72490说道 If you wish to install the NVIDIA Linux graphics driver on a Debian GNU/Linux or Ubuntu system that ships with Xorg 7.x, please ensure that your system meets the following requirements: * development tools like make and gcc are installed * the linux-headers package matching the installed Linux kernel is installed * the pkg-config and xserver-xorg-dev packages are installed * the nvidia-glx package has been uninstalled with the --purge option and the files /etc/init.d/nvidia-glx and /etc/init.d/nvidia-kernel do not exist If you use Ubuntu, please also ensure that the linux-restricted-mod...

东方妖妖梦破解手记

最近无聊, 又开始玩东方系列了, 其实我一直挺喜欢的, 但是水平太差. 不过这次我发现我可以7人通妖妖梦easy了, 挺高兴. 但是lunatic...哦...难以想像. 我的原则是"玩游戏, 而不被游戏玩", 于是只好...虽说网上有一堆现成的修改器, 但是那样就没有乐趣了. 首先是考虑简单的方法---金山游侠, 失败. 然后就只能去分析程序了. 首先看了眼, 没有壳. 再看导入表, 异常地干净, 只有windows库和一些direct3d的库. 让我觉得它好像是直接用汇编写的. 之后就要找切入点了. 我第一反应就是配置文件, th07.cfg, 因为选项里能调整默认人数, 那必定存在这里 经过简单地研究, 发现它存在1c出, 单字节, 为实际人数-1 初次尝试是直接修改配置文件, 比如改成7f, 然后启动游戏, 但是发现人数回到默认值了, 且退出游戏后发现配置文件也改回来了. 嗯. 有防备啊... 那只好再看代码了, 给所有CreateFileA设断, 运行时只看那些打开th07.cfg的, 一共两个, 且一个是打开后写些数据就CloseHandle了, 重点再另一个. 再找有关的ReadFile, 只有一个, 且在那之前有个GetFileSize, 看来是一次读入的, 呵呵, 给ReadFile的buffer下内存断, 不一会儿断在了00436f3d, 是个串移动指令rep movs...此时注意目标地址, 56ba64, 这可是重要情报! 然后该上静态分析了, 搜这个地址(一看就是全局变量), 没有多少, 其中看到了读完文件后进行校验的, 比如00436fbd处, 判断它是否比5大, 若是就回到默认值, 真是一清二楚. 那没什么说的了, 给exe做个备份, 然后ultraedit之... 但是事情没有想的那么顺利, 程序自动退出了, 看来这里也有防备. 不过既然网上有内存修改器, 那说明它肯定内存方面没有设防, 于是用olly载入, 修改后再运行, 就成功了! 后来想再整理一下, 找到最关键的修改位置, 找到了0044ff3f处, 简单地说如果当前人数小于4就加1, 否则不变, 我挺奇怪这里是干什么的, 下了断运行了半天, 发现原来是设置人数是, 按下右方向键, 则人数加1, 但是如果已经加到5个人就不能再加了. 啊哈哈, 被我抓住尾巴了...

再谈pdftohtml支持中文

以前的文章里提到过pdftohtml支持中文的问题, 是用ccmap里面的.cmap文件解决的. 所谓pdftohtml支持中文, 其实根fpdftohtml没什么关系, 而是pdf文件自己需要支持. 我认为它跟pdf支持复制粘贴是一回事. 今天突然发现我的pdftohtml又不支持中文了, 整蛊半天发现我不知什么时候我把那些.cmap文件删了-_-b 于是再去http://lsec.cc.ac.cn/cgi-bin/viewcvs.cgi/cct/ccmap/#dirlist逛逛, 发现原来的cmap的tar包已经删除了, 而多了一个makecmap.tex文件用于生成cmap文件. 我要转的是GBK编码的, 用命令 sudo latex \\def\\cmapEnc{GBK} \\input{makecmap.tex} 即可, 但是虽然弄出来了cmap文件, 编译出来的pdf还是不能复制粘贴, pdftohtml当然也不行. 于是上网搜了搜, 发现了CJKutf8, 说是能代替ccmap, 于是试了下, 真的可以, 只需要加入\usepackage{CJKutf8} 即可, 真不错. 不过,好像有超长行时会出些bug. 以后考虑用utf8了...

kernel 编译补遗

上回说到我的kernel能够启动了,不过还是有些问题。 一个是不断出modprobe: fatal: 说找不到.../modules.dep之类, 而且一出就好几屏,上网搜了一下,也有人遇到这问题,不过好像他们都是不能启动, 估计跟我情况不一样。后来经高人指点, 原来我的kernel不用initrd, 于是make-kpkg时不要--initrd就好了(一开始没出initrd我还以为出bug了) 另外是声卡的问题, 我查了下,并不是没认出声卡,而是多了dummy设备和virtual midi设备, 我没查到如何配置alsa默认声卡,于是呼把这两个选项去了。 最后是说dma没打开,不知道为什么当时漏掉了,不过它还真是体贴,提醒了一下,要不然我以后慢的都不知道怎么回事。 最后基本就都正常了,跟原来比,启动是多了一点点错误信息,但是似乎不影响使用。

Linux kernel 2.6.20.3 编译成功!

几经波折,终于把Linux内核搞定了。 起因是原先ubuntu带的内核版本较低, 决定升级,可是发现安装后modules 有59M。 启动后lsmod 再一看,俺的神呀, 刷刷地, 竟然有两屏。 另外新内核把我的ide硬盘人成了sda, grub里还要改革选项(一开始不知道,怎么也不能启动), 于是决定自己编译一下。 不过过程并不顺利, 一个是我机器的配置, 是近10年前的笔记本, 编译一次内核要将近两个小时。 另外就是我没经验。 现在想想,可能一共得编译了十几次。 中间闹了很多笑话。比如一开始删的模块比较少, 编译完能启动, 但是modules仍有29M, 硬盘还是sda, 后来有狠心删了一次, 这回好了, modules小多了,硬盘也变回hda了, 可是initramfs mount根时说'no such device' , 有时则是 kernel panic。 我在这个问题上就折腾了好久。还有一次是配置文件搞错了,一下编译了很多模块, 中间吃掉硬盘1G多, 告诉我‘no space left’。。。 中间配置了好几次, 一般都是把ubuntu默认的config拷过来并在此基础上修改。 今天终于成功了, 最后kernel是2M左右, modules一共5M多。 感觉上还能删一些, 不过不用了。 经过几次配置,我对kernel倒是有了进一步了解, 至少对其大概架构有了个印象。若不是我机器如此之慢, 编译过程应该也是很有趣的。现在残留的问题是有关声卡的,应该很容易解决。不过到现在我仍不清楚为什么一开始新内核会认成sda, 也听说一些同学有类似情况。 另外,在编译过程中参考了 http://lamp.linux.gov.cn/Linux/kernel_options.html ,很有帮助, 对作者表示感谢!

[转] nasm 中文手册

-------------------------------------------------------------------------------- 第一章: 简介 ----------------------- 1.1 什么是NASM NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多 的目标文件格式,包括Linux和NetBSD/FreeBSD,a.out,ELF,COFF,微软16 位的OBJ和Win32。它还可以输出纯二进制文件。它的语法设计得相当的简 洁易懂,和Intel语法相似但更简单。它支持Pentium,P6,MMX,3DNow!, SSE and SSE2指令集, 1.1.1 为什么还需要一个汇编器? NASM当初被设计出来的想法是comp.lang.asm.x86(或者可能是alt.lang.asm ,我忘了),从本质上讲,是因为没有一个好的免费的x86系例的汇编器可以使用, 所以,必须有人来写一个。 (*)a86不错,但不是免费的,而且你不可能得到32位代码编写的功能,除非你 付费,它只使用在dos上。 (*) gas是免费的,而且在dos下和unix下都可以使用,但是它是作为gcc的一 个后台而设计的,并不是很好,gcc一直就提供给它绝对正确的代码,所以它的 错误检测功能相当弱,还有就是对于任何一个想真正利用它写点东西的人来讲, 它的语法简直太可怕了,并且你无法在里面写正确的16位代码。 (*) as86是专门为Minix和Linux设计的,但看上去并没有很多文档可以参考。 (*) MASM不是很好,并且相当贵,还且只能运行在DOS下。 (*) TASM好一些,但却极入与MASM保持兼容,这就意味着无数的伪操作码和繁琐 的约定,并且它的语法本质上就是MASM的,伴随着的就是一些自相矛盾和奇怪的 东西。它也是相当贵的,并且只能运行在DOS下。 所以,只有NASM才能使您愉悦得编程。目前,它仍在原型设计阶段-我们不期望它 能够超越所有的这些汇编器。但请您发给我们...