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!的文件夹时也可以通过这个文件来判定。

2011年7月21日星期四

cygwin 与 emacs

讨论emacs和cygwin的关系,当然是在Windows下。emacs分支很多,这里具体指的是Gnu Emacs,并不是使用cygwin中附带的emacs。

(1)
在没有cygwin之前,emacs中 M-x ediff 之类命令不能使用的,因为emacs找不到相应的程序。安装cygwin之后,只要把cygwin加入到PATH中,就可以使用啦。

(2)
再谈另外一个问题。
emacs中要使用cygwin提供的类unix路径表示,需要插件cygwin-mount.el,可以到emacswiki去下载。

(3)
关于使用cygwin的终端,这里是我的一点小经验。

但可能也需要在emacs中使用shell,这不是一个简单的问题。通常有三种方法,在emacs中使用shell。一种是M-x term, 使用终端模拟器;一种是M-x shell,使用 shell mode;还有一种是M-x eshell,使用 eshell mode。

M-x term 在 windows下不能运行,所以忽略不计。在linux下,配合multi-term插件,term是个很不错的选择。

shell mode 可以运行,在没有其他任何设置情况下,用的是windows自带的cmd.exe。你可能想到把它替换成cygwin带的bash.exe。是的,网上也很多这样的设置。这样设置后,在我这里,它表现的很糟糕。首先一个问题是乱码,并不是满屏乱码,而是在 ls 后总会带一些类似"~<$g["的一行很讨厌的尾巴,让人极其抓狂。第二个问题是shell mode 是个文本,所以你要用终端的那种方式去操作,刚开始会感觉到很不适应。第三个问题是中文的支持。中文显示是可以的,但是对于目录名或者文件名中有中文时,不能正确补全,甚至于都不能执行。比如 "cd 目录",就会说找不到"目录"这个路径。
或者你想不换成bash,还是用cmd。那第一个问题就不是问题,乱码在cmd下是不存在的。第二个问题是习惯问题,可以慢慢去适应。第三个问题仍然存在,很闹心。

看起来eshell是个唯一的选择,至少在windowsx下是如此。eshell是emacs自带的用elisp写的一个模式,所以它的传说中的缺点是比较慢,可能经不起大量的操作(是的,我也不知道我在说什么)。eshell也不是尽善尽美,对中文支持还是有些问题(打开有文件名有中文的文件时,中文会乱码,提示找不到该文件),但还是处在可以忍受的地步,至少"cd 目录"可以执行,以及补全也做的不错。

2011年6月29日星期三

wget 限速

--limit-rate=200k
限速200kB/s

wget --limit-rate=300k http://mirrors.163.com/ubuntu-releases/9.10/ubuntu-9.10-desktop-amd64.iso

2011年6月26日星期日

Cygwin

前天刚安装MSYS,用得还没上手,就又看上了Cygwin,谁叫Cygwin 软件比较多呢。这种该也是浪费时间的一种方式吧。
安装Cygwin用的是学校的安装源,速度还算可以吧。我的环境是Win XP SP3 英文版,Language for non-unicode选了Chinese PRC。

(1) terminal的选择
没怎么用过终端,Ubuntu下自带的Gnome Terminal 都说很差劲,我倒觉得挺华丽和方便的,说明我对终端的使用程度不高,还没有培养出审美能力。

a. rxvt
推荐比较多的是用rxvt,好吧,那就用rxvt吧。配置rxvt显示中文就让我焦头烂额了一整天,结果还是没有搞好。最多只能显示中文,但是无法输入中文。我失败的配置如下:

~/.bashrc 中添加

#中文环境
#设置完可以显示中文
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312


#ls 显示颜色
alias ls='ls --color --show-control-chars'

网上的说法是要使rxvt能够输入中文,在~/.inputrc中添加:
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

我试过,没效果。在这上面浪费了我好多时间。不过,在 ~/.inputrc中添加

set completion-ignore-case on
能使终端忽略大小写。

b. urxvt
还有个推荐说是urxvt,也就是rxvt的unicode版。在cygwin中,这是需要X 环境的。我没安装。
待实验。

c. mintty
这是我现在用的终端,是在cygwin的安装源中。无需设置,即可方便显示中文和输入中文。我让ls 显示颜色以及忽略大小写

d. cmd
为什么不直接用cmd.exe 开 bash 呢? 也是无需设置显示中文和输入中文。但是,我不知道为什么我不用,或许是装13。

(2) Home路径设置
默认情况下,Home路径在/home/yourname,而/就是cygwin安装目录。很显然,你不会真把这个目录当作home目录,文件全存放在这吧?可以手动修改/etc/passwd文件来设置你喜欢的目录,路径格式使用cygwin风格,比如d:/tizzy目录,在此处应该为/cygdrive/d/tizzy 。

(3) 调用其他程序
居然cygwin是在windows上,说明windows上也有一些你比较顺手的程序,或者已经懒得去用cygwin中类似功能的程序。

为了能够在终端中调用,把每个程序的路径加入到PATH,我是直接加在系统PATH中。然后在目录下建个文件,起个你喜欢的名字,用来启动程序。比如:

我在widnows下用PDFXCview.exe来阅读pdf,安装路径在D:\Program Files\Tracker Software\PDF Viewer,把这个路径加入到系统PATH,在目录下建 pdfview 文件(是的,没有后缀),文件内容为
#!/bin/sh
run PDFXCview.exe "$@"
这样,就可以在终端中用pdfview 来打开pdf了。当然,你也可以不写pdfview文件,而用pdfxcview来启动,但是,这个名字很难记,是不是?!

update:Jun 30,2011
本来以为上面设置就可以,后来打开pdf只能显示第一页,不知道原因。如果直接调用windows下的程序(因为已加入到PATH中),是可以正常打开,但是会占用一个终端,这是我不希望看到的。
实际上,cygwin提供了一个命令 cygstart,可以用来打开任何文件,默认会调用windows下的关联程序来打开,而且不占用终端。这正是我所需要的。

2011年6月24日星期五

MSYS 设置

Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash ,make等等。Windows下最优秀的GNU环境(CygWin算什么啊?)。

I. 中文乱码解决方案

(1)ls显示中文不正常解决方法:
/etc/profile 中 添加
alias ls='ls --show-control-chars -F --color=tty'
(2)输入中文不正常解决方法:
在 /etc/inputrc.default 及 ~/.inputrc 中更改
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off


II. 配置字体及颜色
可以通过C:\msys\1.0\msys.bat这个文件来修改,即安装路径下的msys.bat文件。
查找:


start rxvt -backspacekey -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry 80×25 -e /bin/sh –login -i
可以修改为:

start rxvt -backspacekey -sl 2500 -fg white -bg black -sr -fn Courier-bold-14 -tn msys -geometry 100×40 -e /bin/sh –login -i
这些属性值都可以随便自己设定,不过这一行一定要作为一行来保存!


字体如果使用truetype,界面会变得更丑,比如Courier New 。所以我还是老实使用默认的Courier。


III. 使用其他程序
在MSYS中提供了一些便利的unix-like工具,但你可能在windows下也有一些常用的工具,比如word,或者播放器之类的。这时可能通过编写脚本,使得在rxvt中能够直接调用这些工具。
看下面两个例子
在/bin 目录下添加/bin/splayer 文件,文件内容为:

#! /bin/sh
/d/Program\ Files/SPlayer/splayer.exe "$@"

在/bin目录下添加/bin/pdfview 文件,文件内容为:

#! /bin/sh
/d/Program\ Files/Tracker\ Software/PDF\ Viewer/pdfxcview.exe "$@"


这样,在rxvt中就可以通过 splayer 和 pdfview 调用 播放器和pdf阅读器了。

wget用法一枚

wget -c -r -np ftp://name:pw@server/dir/ 下载目录下所有文件 -c 断点续传 -r 递归下载 -np 不下载父目录