Skip to content

{ Category Archives } 自由&开源

linux/freebsd/tex…不止GNU

在ubuntu上使用LaTeX

拜ubuntu的开发人员和apt所赐,现在在Linux上使用LaTeX已经变得非常方便了。只需要敲击如下命令就可以安装上texlive和中文支持了:

$ sudo aptitude install texlive latex-cjk-chinese

默认会安装arphic的几种中文字体。如果觉得不够漂亮,我这里有一些已经生成的中文字体包(水木TeX版的某大侠制作,适合打印,应该是我06年从他发布的某个包里提取出来的 ~110MB;如果你喜欢自己生成字体,参考附录第二篇文章),可以直接解压到HOME目录使用,包括了7种常用的中文字体:仿宋 fs, 黑体 hei, 楷体 kai, 隶书 li, 宋体 song, 宋体粗体 songb, 幼圆 you。使用有问题的话运行一下 update-updmap,更新目录信息。
安装完后,测试是否可以正确输出UTF8中文文档:

\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{UTF8}{song}
您好,texlive中文
\end{CJK*}
\end{document}

这里有几篇文章可以参考:

Ubuntu+Texlive+CJK
TeXLive 2007 CJK Chinese Howto(zz)
LaTeX字体说明

Tagged ,

ubuntu 9.04 jaunty desktop effect lag

最近在ubuntu下打开了composite显示效果,结果发觉在最大最小化和Alt-Tab的时候居然会lag几秒。心里郁闷,本子显卡是ATI HD3470,应该不会这样啊。于是放狗搜了一下,居然是个Xorg已知bug。
对于ATI显卡,在Gnome、KDE或其他WM上,都有这个问题,本来Xorg早有patch了,但是ubuntu 9.04里似乎居然没有集成进去。可以在源列表里加入如下源:
deb http://ppa.launchpad.net/ubuntu-x-swat/xserver-no-backfill/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntu-x-swat/xserver-no-backfill/ubuntu jaunty main
认证密钥如下:
sudo apt-key adv --recv-keys --keyserver keyserver.Ubuntu.com 0x643dc6bd56580ceb1ab4a9f63b22ab97af1cdfa9
sudo aptitude safe-upgrade后重启X,发觉X Window在切换窗口的时候已经流畅了。

Tagged

折腾一下系统

周末球友出差,没有打成球,于是宅在家里到半夜,突然脑袋一热就犯了IT民工的毛病。本来我已经渐渐修炼到,心中有系统,手头无系统的返璞归真之境界,无奈还要偶尔玩一玩。遂把心得小结如下:
首先是启动系统的工具,要启动系统,肯定得先有启动光碟啊。不过由于俺们越来越懒散,已经不知道多久没有见过启动光碟了,手头只有几个USB碟。不过有了这个就足够啦,推荐一个好玩的开源工具:UNetbootin,它目前支持基本所有的主流非主流的Linux系统,直接下载你要安装的ISO,利用这个工具灌装到USB碟里就能启动机器啦,你可以启动一个Live Linux,或者安装Linux,随便你了。
不过你没看错,它只是Linux工具,如果你要用USB安装Windows,那可以用这个工具:usboot,这个链接里的工具包括了一个ghost镜像,可以通过USB恢复Windows镜像,太方便了。另外还有个著名的PE-Builder,提供一个Live Windows,就跟那个深山红叶光碟差不多啦,既然已经能启动一个Linux Windows,那能干的事情就由你想象了。
装完系统后,关键问题就是如何联网了。说明一下连接无线的办法,如果你安装的系统还没有安装X环境,那建议使用HP的wireless tools,来连接无线网络。连接常见的WEP加密网络的步骤是:
# iwconfig wlan0 essid "wlan name"
# iwconfig wlan0 key s:"wlan password"
# dhclient wlan0
这样就可以自动获取IP了,如果不知道无线网络的名字,使用iwlist wlan0 scanning查一下。这部分代码也可以写到 /etc/network/interfaces里:
if-pre /sbin/iwconfig wlan0 essid "wlan name"
if-pre /sbin/iwconfig wlan0 key s:"wlan password"
iface wlan0 inet dhcp
这样系统装好了,网络也没问题了,然后就随便干什么事情啦,over。

Tagged

赞一下ubuntu的Windows免CD安装法

一直习惯了远程ssh工作, 所以好久没有遭遇到装系统这样的麻烦事了. 不过最近期望在本地部署一个系统, 所以打算安装一个ubuntu试试. 下载完ISO, 才懊恼的发觉手头没有空光盘可以刻录. 我想可能大家都遭遇过这样的事情, 再想起以前的那些硬盘安装方法也很头疼, 比如用vmware之类的. 不过可能我对Linux安装的印象太古老了, 上网查了一下, 才发觉ubuntu已然替用户考虑了这些繁琐的问题, 开发了一个wubi.exe的安装程序, 可以让用户异常方便的在Windows下免CD安装上ubuntu. 简单的几个步骤:

挂载上ubuntu的安装ISO. 如果你没有虚拟光驱程序, 直接解压ISO, 把其中的 .disk, casper, umenu.exe和wubi.exe 这四个文件和目录复制到某个盘的根目录下也行. 如果你想最终安装一个真正的Ubuntu系统到某个盘比如E:盘, 那不要复制到E:\上, 因为待会你会把它格式化掉. 如果只是想装个跑在Windows上的demo版本,那就无所谓.

运行 umenu.exe
在出现的对话框上选择 demo and full installation, 然后选中 help me to boot from CD, 安装并重启即可.当然也不要安装到E:\. 这个步骤结束后会在你的系统盘, 比如C盘下生成wubildr和wubildr.mbr这两个引导文件, 同时修改 boot.ini, 加入Ububtu的启动选项.
重启后, 选择进入Ubuntu, 将进入一个虚拟的demo版本, 登录后运行桌面的安装程序, 安装真实的ubuntu程系统.

之所以选择先安装Demo, 是为了保险起见, 而在运行umenu.exe的另外一个直接安装的菜单时候, 老是出错. 总之, 这个过程对于Windows用户来说已然变得非常傻瓜方便了. 一直以来我认为Gentoo是最容易装的, 因为只要一张liveCD就能干所有的事情了, [...]

Tagged ,

tcpdump分析soap包

Tcpdump是个异常强大的网络包抓取和分析工具,最近又把它翻出来了。因为在写一个Web Service相关的程序,嫌原来的脚本性能太差,准备用gSoap重写一遍。这台服务器是需要身份验证的,可是服务器应答我身份验证成功后,RPC调用依然失败,怀疑是否soap包的结构有错误呢。因为不清楚具体原因,所以想抓包看看。
我们知道一般使用tcpdump可以这样,这会打印出你所要抓取的包的详细内容,其中-X选项会同时打印出hex和ASCII格式的内容,特别适合分析新协议:
# tcpdump -X -s0 host 192.168.0.1 and tcp and port 80
如果要抓取的内容太多,不希望打印到标准输出,那么可以通过-w和-r选项,写入到文件,然后再从文件中读出分析:
$ tcpdump -w tcpdump.log host 192.168.0.1
$ tcpdump -r tcpdump.log
而soap其实是架设在http之上的,tcpdump有专门打印出数据包ASCII形式的参数,所以我们过滤所有包含endpoint的ip地址如192.168.1.111的数据包,然后打印出来,我们就能直观的看出soap交互的详细内容。
$ tcpdump -A -s0 host 192.168.1.111

Tagged ,

可视化工具Graphviz

自由绘图软件中有两大神器: gnuplot 和 graphviz. 前者一般用来可视化你的数据, 比如描绘函数sin的曲线之类的, 对我来说其实用的不多. 而后者在软件领域使用得相对频繁, graphviz 主要用来显示一些结构化信息, 比如画画流程图, 网络拓扑图, 函数调用序列之类的, 很是实用. 这里主要介绍一下graphviz.
我之所以说他俩是神器, 因为他们提供非常方便的命令行接口, 可以完成自动化绘图功能. 另外你不必仔细考虑绘图的图形细节, 只需要把握处理流程或者拓扑结构就可以了. 这是一种"所思即所得"的绘图工具, 当然, 你很快就想到了, 它们一定也和latex, make这套系统结合得很好.
比如你想画这样一副图:

Tagged ,

七种武器之mc

mc 全称是 GNU Midnight Commander,我认为它是自由操作系统下最强的文件管理器,无论是Linux还是FreeBSD均能稳定工作。神奇的是它只是纯字符界面的管理器,体积不过两三兆,却比nautilus, rox, thunar, konqueror 等等都要强大,并且不依赖X环境(不像krusader,且后者不够稳定),真是把ncurse用到了极限。不信么?Windows下的最强文件管理器totalcmd的操作方式跟它可是基本类似噢,虽然我不清楚它们之间的是否很有渊源,但mc提供甚至更加灵活的配置方式,下边先看一份双列显示的截图:

Tagged

使用global阅读代码

由于使用了wordpress来架设blog,所以近期在阅读它的代码。先推荐一个免费工具ZDE(Zend Development Environment),这个工具在windows下用起来还凑合,但是有IDE的通病,就是庞大而臃肿,找了半天没找到代码reference的功能,于是这就引出了今天的主角 global。
用global一直只是读c和c++的,今天才留意到global还有分析PHP代码的功能,不过暂时只支持PHP4,但对我来说已经够用了,先说一下它的安装办法。在Windows下边我是结合cygwin和emacs一起使用的,安装很简单,分下边几个步骤:

如果使用cygwin,则解压global的zip包到/usr/local下边。如果不用cygwin的话,只要复制global中bin目录的内容到系统路径就可以了,比如c:/windows,不过这样就无法方便的阅读manual了。
如果使用emacs,复制gtags.el目录到emacs的load-path,然后在.emacs中设置:
;; global
(autoload 'gtags-mode "gtags" "" t)
(add-hook 'c-mode-hook
' (lambda ()
(gtags-mode)))
这样在emacs中 M-x gtags-mode 就可以取代emacs中默认的etags进行工作了,按键是一致的。如果使用其他编辑器比如vim、nvi可以具体参考INSTALL进行。

在linux下的安装更加简单,我使用gentoo这个发行版,global已经在portage中了,不过最好设置 USE="~x86" 来emerge这包 对于debian或者ubuntu的发行版估计也是有这个软件的,因为是gnu的产品嘛。如果自己编译也一样容易,对emacs的支持做类似上边的设置。
使用的时候直接在源码所在的根目录运行gtags生成索引文件GTAGS就可以了,global的配置文件位于 /etc/gtags.conf 和 $HOME/.globalrc,比如你想把.inc的文件也当作php来解析,那么你就需要通过配置文件来解决了,设置common行,在php中添加.inc这个后缀:
:langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml.inc:
下边说一点使用技巧,用global来查询code reference和grep,其中参数x可以打印出上下文,参数e可以进行正则匹配,参数i忽略大小写:

查询函数func的reference global -rx func
查询某个函数 global -o func
查询某个symbol global -s symbol
使用cscope格式打印 global --result cscope -o func

此外global还支持生成web样式的交叉索引,跟lxr差不多,并且你可以自己定制web模板。

Tagged , ,

用squashfs压缩ISO

texlive的ISO总是做得奇大,而且总是需要安装,真是浪费啊。于是就想把它定制一下,看看能不能做成一个免安装的ISO,直接mount就能使用了,那多好啊。在网上google一下,发觉还真有人已经做出来了,但是发觉还是有点大,我想做一个只包含UTF-8字符集的包就够了,于是研究了一下制作办法。
首先需要知道一个目录做ISO可以这样:mkisofs -U -R -D -o file.iso directory,但是这样做成的ISO没有经过压缩,传播时未免有些臃肿,就像texlive似的 。在Windows下边没有通用的压缩CD格式,但是在Linux下边可以使用squashfs这样高压缩比且快速的压缩CD格式,官方默认采用GZIP算法,也可以使用LZMA算法;具体的使用它提供一份HOWTO可以参考。
首先确保内核支持squashfs文件系统,然后利用工具mksquashfs来创建squashfs文件系统;为某个目录创建文件系统,绑定到一个文件(非一个设备),可执行如下命令:
# mksquashfs /some/dir dir.sqsh
# mkdir /mnt/dir
# mount dir.sqsh /mnt/dir -t squashfs -o loop
这样把texlive所在的目录创建为squashfs文件系统,再挂载后mkisofs即可压缩很大的体积。

Tagged , ,

ROX使用技巧

虽然xfce抛弃掉了rox,不过我还是使用它,因为简洁高效;今天别人说它不好用,所以现在总结几点技巧在这里。rox有一个minibuffer,就跟emacs差不多,不过平时它是隐藏的,所以一般不会发觉,我也是看了help之后才知道的,另外一部分借鉴自linuxsir。

在当前目录下,按键盘的`(grave),可以弹出当前目录下的虚拟终端。
按 ! 键,可以输入命令行shell代码,比如解压当前目录的压缩包。
按 / 键,可以方便的改变路径,而且支持tab补全。
按 C-h 可以查看隐藏文件。
任意方法,打开minibuffer,输入 size>5mb 这样的内容可以显示目录下大于5MB的文件。
快速定位路径:这个功能跟星际争霸里边给队伍编号差不多。比如要在任意快速回到 /home/ 下, 那么先到 /home ,按ctrl+1 。以后无论在什么目录深度,只要按1,就可以到达 /home 了。对其他想快速定位的目录,只要按“ctrl+数字键” 就可以记录定位,以后就只要按数字键就可以快速到达了,而且即使重启系统,也不会丢失定位信息。
用rox作桌面管理器。比如xfce和wmaker,在X的启动初始配置文件(如~/.xinitrc)加入 rox -p Default &, 就可以用rox进行桌面管理了。支持背景图片、图标、图标化程序。

其他还有些cli下常用的目录切换指令:

cd 回到$HOME
cd - 回到上一次访问的目录
pushd, popd 保存访问过的目录到栈里,并可以取出

...
--
要有勇气去改变可以改变的事,
要有胸怀去接受不可改变的事,
更要有智慧去分别两者的区别!

Tagged ,