2011年8月22日星期一

英文WinXP如何玩中文魔兽

需要设置3步:

(1)下载中文版魔兽

(2)控制面板中设置为中文Locale,这步可以使大部分非unicode程序正常显示。

(3)HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language下,设置Default以及InstallLanguage为0804





补充一点,对于宽屏的显示器,一般在显示器菜单中可以切换为4:3模式,这样玩魔兽时比较舒服,不会被拉伸。

2011年8月12日星期五

QR 码

一个生成QR码的网站:

http://qrcode.kaywa.com/



一个在线QR解码的网站:

http://zxing.org/w/decode.jspx

zxing是个开源解码库

emacs中配置cscope

安装



下载Cscope的源代码,按照源码包中的INSTALL说明文件,执行下面的命令进行配置编译安装

./configure

make

sudo make install



Cscope的源码包里面有个xcscope.el文件,为(X)Emacs提供了Cscope 接口。它处于源码包的 contrib/xcscope 目录下。该目录下面还有一个名为cscope-indexer的脚本文件,用于创建文件列表和数据库。



为了能够方便执行cscope-indexer脚本,需要将它放到PATH变量指向的文件夹下,如/usr/local/bin,并确认该脚本具有执行权限。把xcscope.el文件放到emacs的load-path下。



配置



在.emacs文件中加入下面的语句

(require 'xcscope)

或者,你希望只在打开c/c++文件的时候才加载xcscope,可以加入

(add-hook 'c-mode-common-hook '(lambda() (require 'xcscope)))



;;是否每次查询时更新数据库

(setq cscope-do-not-update-database t)



如果源代码全部处于同一个目录下面,现在就可以使用了(如果设置变量cscope-do-not-update-database关闭了查询时自动更新,还是得运行脚本)。否则,如果源代码有多层目录,或者其他地方还有附加的源代码,则需要 cscope-indexer 脚本。如果所有的源代码以及子目录都是在同一个目录下面的,只要执行 C-c s I(cscope-index-files) 就可以生成 Cscope 的数据库,接下来就可以使用了。具体命令和操作查看手册。



使用时遇到的问题的解决方法



如果你已经生成了数据库,但总提示



cscope :cannot read trailer offset from file cscope.out



这个问题的解决方法是:去掉cscope.out文件所在的路径的空格符

解决方法:去掉cscope.out文件所在的路径的空格符



参考资料: 在Emacs里面使用Cscope

2011年8月8日星期一

fcitx





Ubuntu 10.04 默认输入法是ibus,起初用着也没觉得不便。后来用久了,中英文切换频繁,总是不能正常地切换,非得用鼠标去托盘选择才行。故卸了ibus,转投fcitx。



是可以apt安装fcitx,但版本比较低,还是去项目主页下载源码安装比较好。fcitx的主页已许久没有更新,主页上的最近版本是3.6.3(问题多多,我遇到过配置文件修改不起作用),以为就是最新版本。其实fcitx项目现在托管在google code上,应该去那里下载。



安装成功后,还需要一些配置。比如emacser用户可能需要去修改光标跟随的快捷键,默认是Ctrl-K,把它的值改为0即可。另外,还需要设置fcitx为默认输入法,并使其能随X启动。这主要是靠XMODIFIERS,GTK_IM_MODULE,QT_IM_MODULE几个环境变量起作用的。有两种方法可以设置:



方法1:



sudo im-switch -s fcitx -z defaut



这时候可能会出来这样的错误

Error: no system wide configuration file "fcitx" exists.

Error: No action taken.



查看一下/etc/X11/xinit/xinput.d下有没有fcitx这个文件,照理说装的时候会装进去的(安装4.0.1时默认没有,用apt安装和源码安装3.6.3时会有该文件),没有的话,自己写一个,内容如下:

XIM=fcitx

XIM_PROGRAM=/usr/local/bin/fcitx

XIM_ARGS=""

XMODIFIERS=@im=fcitx

GTK_IM_MODULE=xim

QT_IM_MODULE=XIM

DEPENDS="fcitx"



再执行im-switch命令,如果出现Cannot find alternative `/etc/X11/xinit/xinput.d/fcitx',这是因为fcitx没有被加入到alternatives列表中,请试着运行如下指令:



sudo update-alternatives --install /etc/X11/xinit/xinput.d/all_ALL xinput-all_ALL /etc/X11/xini//xinput.d/fcitx 30





重启X后再进就ok了.





方法2(未实验):



echo -e "export XMODIFIERS=@im=fcitx\nexport GTK_IM_MODULE=\"xim\"\nexport QT_IM_MODULE=\"xim\"\nfcitx &">>~/.profile

其实就是将方法一的fcitx文件中的配置加到~/.profile中。

重启X就ok了



参考资料:ubuntu 安装fcitx-3.6

2011年8月6日星期六

终端中Emacs的M键与Alt冲突

抄袭资料:这里

终端指的是gnome-terminal,其他终端没用过。有两种方法可以解决这个问题。

  1. 在上边菜单栏的[查看]取消[显示菜单栏]。要恢复,可以在输入区域内右键,选择[显示菜单栏]进行恢复。


  2. 使用 gconf-editor,在apps——gnome-terminal——global的里面有一个叫use_mnemonics的选项,描述:

    Whether to have Alt+letter access keys for the menubar. They may interfere with some applications run inside the terminal so it’s possible to turn them off.

    可以看到,在这里就可以屏蔽Alt键的加速了。

死理性派恋爱法:拒绝掉前面37%的人

来自: 科学松鼠会死理性派恋爱法:拒绝掉前面37%的人



在每期《非诚勿扰》节目上,面对一位位男嘉宾,24 位单身女生要做出不止一次“艰难的决定”:到底要不要继续亮灯?把灯灭掉意味着放弃了这一次机会,继续亮灯则有可能结束节目之旅,放弃了未来更多的选择。


在现实中,面对男生们前仆后继的表白,MM 们也少不了这样的纠结。如果遇到了一个优秀的男生,应该接受还是拒绝呢?如果接受了他,万一下一个更好的话那可就亏大了;可如果为此而拒绝掉一个又一个好男人,也会面对着“过了这个村就没这个店”的风险。说不定白马王子们都已经擦肩而过,到最后就只剩下了猥琐男了,当初的拒绝明显得不偿失。


由于没人能知道真正的缘分何时到来,没人能知道下一个来求爱的男生会是什么样子,接受表白的时机早晚实在很难决定。怎么办?去向《非诚勿扰》的黄菡老师和乐嘉老师请教一下?其实你还可以向欧拉老师请教一下。你没听错。大数学家欧拉对一个神秘的数学常数 e ≈ 2.718 深有研究,这个数字和“拒人问题”竟然有着直接的联系。


“拒人问题”的数学模型


为了便于我们分析,让我们把生活中各种复杂纠纷的恋爱故事抽象成一个简单的数学过程。假设根据过去的经验,MM 可以确定出今后将会遇到的男生个数,比如说 15 个、30 个或者 50 个。不妨把男生的总人数设为 n。这 n 个男生将会以一个随机的顺序排着队依次前来表白。每次被表白后,MM 都只有两种选择:接受这个男生,结束这场“征婚游戏”,和他永远幸福地生活在一起;或者拒绝这个男生,继续考虑下一个表白者。我们不考虑 MM 脚踏两只船的情况,也不考虑和被拒男生破镜重圆的可能。最后,男人有好有坏,我们不妨假设 MM 心里会给男生们的优劣排出个名次来。


聪明的 MM 会想到一个好办法:先和前面几个男生玩玩,试试水深;大致摸清了男生们的底细后,再开始认真考虑,和第一个比之前所有人都要好的男生发展关系。从数学模型上说,就是先拒掉前面 k 个人,不管这些人有多好;然后从第 k+1 个人开始,一旦看到比之前所有人都要好的人,就毫不犹豫地选择他。不难看出,k 的取值很讲究,太小了达不到试的效果,太大了又会导致真正可选的余地不多了。这就变成了一个纯数学问题:在男生总数 n 已知的情况下,当 k 等于何值时,按上述策略选中最佳男生的概率最大?


如何求出最优的 k 值?


对于某个固定的 k,如果最适合的人出现在了第 i 个位置(k < i ≤ n),要想让他有幸正好被 MM 选中,就必须得满足前 i-1 个人中的最好的人在前 k 个人里,这有 k/(i-1) 的可能。考虑所有可能的 i,我们便得到了试探前 k 个男生之后能选中最佳男生的总概率 P(k):


http://guokr.com/gkimage/ot/6r/30/ot6r30.png

用 x 来表示 k/n 的值,并且假设 n 充分大,则上述公式可以写成:


http://guokr.com/gkimage/mc/ck/q9/mcckq9.png

对 -x · ln x 求导,并令这个导数为 0,可以解出 x 的最优值,它就是欧拉研究的神秘常数的倒数—— 1/e !


也就是说,如果你预计求爱者有 n 个人,你应该先拒绝掉前 n/e 个人,静候下一个比这些人都好的人。假设你一共会遇到大概 30 个求爱者,就应该拒绝掉前 30/e ≈ 30/2.718 ≈ 11 个求爱者,然后从第 12 个求爱者开始,一旦发现比前面 11 个求爱者都好的人,就果断接受他。由于 1/e 大约等于 37%,因此这条爱情大法也叫做 37% 法则。


不过,37% 法则有一个小问题:如果最佳人选本来就在这 37% 的人里面,错过这 37% 的人之后,她就再也碰不上更好的了。但在游戏过程中,她并不知道最佳人选已经被拒,因此她会一直痴痴地等待。也就是说,MM 将会有 37% 的概率“失败退场”,或者以被迫选择最后一名求爱者的结局而告终。


37% 法则“实测”!


37% 法则的效果究竟如何呢?我们在计算机上编写程序模拟了当 n = 30 时利用 37% 法则进行选择的过程(如果 MM 始终未接受求爱者,则自动选择最后一名求爱者)。编号越小的男生越次,编号为 30 的男生则表示最佳选择。程序运行 10000 次之后,竟然有大约 4000 次选中最佳男生,可见 37% 法则确实有效啊。


http://guokr.com/gkimage/mi/s2/my/mis2my.png


计算机模拟 10000 次后得到的结果


这个问题由数学家 Merrill M. Flood 在 1949 首次提出,这个问题被他取名为“未婚妻问题”。这个问题的精妙之处在于,在微积分界叱咤风云的自然底数 e,竟也出人意料地出现在了这个看似与它毫不相关的问题中。不知道此问题发表后,Geek 男女间会不会多了一种分手的理由:不好意思,你是那 37% 的人⋯⋯


本文已发表于 果壳网 死理性派主题站死理性派恋爱法:拒绝掉前面37%的人

2011年8月5日星期五

linux 下的数学工具

先说说网页如何显示数学公式,直接将公式转换为图片。生成pdf再截图固然可以,但总显得麻烦。Linux和Windows下各有简便的方法。


Linux下使用tex2im可以把tex直接生成为图片,tex2im支持多种图片格式。比如有formular1.tex文件:

\psi_{tot}(x,-t_0,r) = \frac{1}{(2\pi)^2} \int\!\!\!\int
\tilde\Psi_{tot}\left(k_x,\frac{c}{2}\sqrt{k_x^2 + k_r^2},r=0\right)

命令行中 tex2im formular1.tex ,会得到 formular1.png。

Windows下可使用LaTeX Equation Editor,可预览公式,并且按右键将公式图片保存在剪贴板,粘帖到画图程序即可。


*Update* 20120102
要在网页中显示数学公式,更好的方法是直接使用latex语法编写公式,然后使用mathjax提供的javascript库来显示。
比如下文的这个公式(好像图片挂了),用mathjax的方法,生成如下:
$$\psi_{tot}(x,-t_0,r) = \frac{1}{(2\pi)^2} \int\!\!\!\int
\tilde\Psi_{tot}\left(k_x,\frac{c}{2}\sqrt{k_x^2 + k_r^2},r=0\right)$$


Linux下画图用gnuplot,数值计算有octave,符号计算推荐maxima,这几个软件嘛,只是在此一提,基本没用过。octave和maxima画图功能调用的是gnuplot。不知道gnuplot能不能画形如f(x,y)隐函数的?有待考察。octave可以用ezplot,maxima可以用implicit_plot来画隐函数。但这两函数都不保证能正常工作,可能隐函数复杂点就乱了。

Ubuntu 10.4 apt 安装的maxima是5.20.1版本,implicit_plot函数有bug。卸载后,下载maxima源码,下载clisp编译器,./configure ,make, sudo make install。maxima有很多前端,命令行下公式显示太丑,我使用maxima + emacs + imaxima 模式,imaxima.el文件都是maxima自己安装的。在.emacs配置文件中加入

(add-to-list 'load-path "/usr/local/share/maxima/5.25.0/emacs/")
(autoload 'maxima-mode "maxima" "Maxima mode" t)
(autoload 'imaxima "imaxima" "Frontend for maxima with Image support" t)
(autoload 'maxima "maxima" "Maxima interaction" t)
(autoload 'imath-mode "imath" "Imath mode for math formula input" t)
(setq imaxima-use-maxima-mode-flag t)
(setq imaxima-fnt-size "LARGE")

就可以 M-x imaxima 执行 imaxima 模式了。

在我这里,emacs(23.3.1) 与 maxima(5.25.0),按照上述配置好,提示latex error。通过以下两步修改后,可以正常显示。
  1. 修改imaxima.el文件。 搜索 "\n% mylatex \n",再前面添加两语句,改为
    ...
    "\\usepackage{color} \n"
    "\\usepackage{breqn} \n"
    "\n% mylatex \n"
  2. Imaxima uses breqn.sty. Get http://members3.jcom.home.ne.jp/imaxima/breqn097a.zip and unzip it to your /usr/share/texmf-texlive/tex/latex/ and run texhash.

2011年8月2日星期二

GoAgent + Proxy Switchy!

一直想注册GAE,在创建应用需要手机验证码时,总是提示已发送过多验证码,而不能注册成功。以为是手机号的问题,因为以前有一次注册时发送了N次验证码,但那次很蹊跷的是虽然收到验证码,输入时总提示不正确。后来用一个新手机号,还是有同样的问题,也就不了了之。哪想原来是我帐号的问题,申请了一个新的gmail来注册GAE,果不其然,注册成功了。



注册GAE当然是想要部署goagent。这步骤很简单,goagent主页上faq可以解决大部分问题,还有详细的教程。部署成功后,就可以通过设置代理来享受劳动后的乐趣了。



在chrome上通过 proxy switchy! 来更方便的使用goagent。在我安装的proxy switchy! (version 1.6.3) 中 auto switch mode 有点问题,不能正常工作。起先还以为是我设置的规则有问题,还恼火的卸载掉。后来在proxy switchy!的汉化版页面上的回帖中,有人提到了解决方法,就又重新安装了,当然安装的是原版。



解决方法是在 C:\Documents and Settings\%YOUR_NAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions\ 目录中查找proxy switchy!的文件夹,文件夹名都是一串很长的字母,需要耐心查找。在proxy switchy! 的目录下会有 SwitchyAuto.pac 文件,将其重命名为 SwichyAuto.pacc 即可。如果你没有设置过auto switch mode 的规则,并不会有这个文件。所以当安装好proxy switchy! 后,设置switch 规则,这样就生成 SwichyAuto.pac 文件,在Externsions目录下查找Proxy Swichy!的文件夹时也可以通过这个文件来判定。