Thursday, April 30, 2009

My Comments on Books about Shell Programming

Abastract
In this article I shall introduce several books about shell programming and hopefully it will help you to determine the right one for you.

I have to learn shell to carry out some of my experiments recently, and to be honest, I don’t feel like shell very much since there are so many modern script languages out there… Anyway, as shell is so widely used, it’s not too bad to spend some time on it.

  • A Practical Guide to Linux Commands, Editors, and Shell Programming is a nice book to start for newbies :)
  • Unix Shell Programming is the best book on shell programming I’ve found, which explains how shell works clearly
  • Classic Shell Scripting is not structured as well as the the previous one, but it has a chapter on security and explains some basic ideas in more details. If you get confused while reading the previous book, check this one.
  • Unix Shell by Example explains all popular shells, including sh, bash , csh and ksh, if you are going to script for different shells you may very likely find this book useful.

Monday, April 27, 2009

Google logo today is so~ COOL!

So impressive.

Finally get Xorg-1.6 work with nVidia MX440

Abstract

I describe a solution to the problem that Xorg 1.6 fails to work with Mx440 and kernel 2.6.29 in Arch Linux

I'm currently using an old PC in the lab, which features a MX440 video card, last week I updated my Arch Linux and got Xorg 1.6, and that was the start of a nightmare...

Xorg refuse to work with the legacy driver (nvidia-96xx), and won't start if the xorg.conf file exists, which is used to specify the screen resolution(though the pc is quite old, I got a big widescreen monitor…). I browsed the Arch user forum and tried all the solutions given, and finally get it work with add “nopat” option to the kernel in the grub munu.lst like this:

title Arch Linux
root (hd0,4)
kernel /vmlinuz26 root=/dev/disk/by-uuid/99b8f60e-c1eb-4482-a22f-6a49a5572401 ro vga=0x317 nopat
initrd /kernel26.img

Hopefully this can be useful ;)

Saturday, April 25, 2009

Linux is neither heaven nor hell (3)

前两天开始写这个系列,本来是打算先写天堂的,不过我刚刚写完天堂的信仰之后就发生了无法配置X的惨剧,所以我决定先写“地狱“……

在Linux下,一个十分重大的问题就是升级。因为我们总是希望Linux更加的好用,所以大家弄出了各种各样的新鲜东西,引诱你升级。而现实的另一面是可能过去遇到的一个一直没有解决的问题一直在折磨你,而据说新版本解决了这个问题,所以需要升级。

在Linux升级的时候,需要首先做好搞砸整个系统再也看不到可爱的GUI界面的心理准备,备份好自己的文件,向图灵、冯诺依曼等计算机史上的贤者祷告,祈求得到他们的祝福。然后毕恭毕敬小心翼翼的输入升级的命令,接着就是听天由命了……可惜这些神明并不好伺候,有的时候他们会莫名其妙的降罪于我。比如我今天在笔记本电脑和台式机上同时升级我的arch Linux,笔记本上的表现很好(尽管Root Terminal不能用了,我的触摸板却神奇的好了,经过我的配置还支持了连为windos都不曾支持过的双指触控-_-b),而台式机则直接出现了最恶心的xorg错误,目前连正确的分辨率都无法设置。

Linux像地狱,因为我总是生活在恐惧之中,常常因为一个小小的贪心,陷入系统无数细节的深深泥沼……如果幸运的话还可以抓住manual、wiki、google和bbs这些救命稻草,如果不幸的话常常会花去数个小时也没有挣脱出来。在Linux这个原始蛮荒的丛林里,只有熟悉环境经验丰富的家伙才能像山猫一样游刃有余的穿行,很可惜我至今还是一个时常掉进坑里头破血流还半天爬不出来的小白鼠……

在这片丛林中,你脚下的土地都不是坚实而值得信任的;很多问题和硬件有关的。我不知道这种现状应该归罪于什么人,毕竟对于硬件厂商来说,支持纷繁复杂变幻迅速的Linux比支持用一只手的指头都能数过来的微软Windows要困难多了。这个社区缺乏一个强大的力量,了解并统一大家的意见提出一个清晰的标准;而没有这样一个清晰的标准,社区和外界的交流就会有很多困难。自由和效率不仅仅是一个政治问题,在很多地方都能看到这种博弈的影子。

有人说没必要这么复杂,装一个Ubuntu就好了,可就像在树林边的草地上散步,终归会因为窥见的诱惑或是其他的原因走进这篇丛林……复杂的系统软件如参天巨树遮天蔽日让人难辨方向,依赖关系的藤蔓纵横交错将人包围,脚下的硬件支持如同泥沼不知道什么时候就会陷进去,这就是Linux的地狱印象。

不过着绝望的印象中还有一丝的希冀:当最终穿过这片林子时,当初因好奇而迷失其中的小白鼠应该已经变成主宰丛林的大象了吧。

[ to be continued... ]

Friday, April 24, 2009

Linux is neither heaven nor hell (2)

昨天说了我在Linux下混的短短历史,其实没什么值得参考的,今天说说我对于类Unix系统和GNU/Linux的感想。

说到学习Linux,我觉得这个说法本身就有一点问题,尤其是对于绝大多数从Windows过去的童鞋(按理说从mac过去的同学应该问题小很多)不是学习一个操作系统如何使用,更主要的是在Linux背后的一些逻辑。没有这些逻辑,就会觉得始终不得要领,而这些逻辑不是Linus自创出来的,而是来源于光辉伟大千秋万岁的Unix系统。

Unix的逻辑是简单的逻辑。(尽管Linux有时候会让人觉得很复杂,这只是因为nix系的操作系统对于消费用户来说暴露了太多的细节,没有做到所谓的傻瓜化隔离)

Unix系统里很多东西都是保存在纯文本文件里的,软件的源代码,软件的设置,甚至软件的本身也很少包括不是从源代码来的东西。比如windows程序多数都会内置一个图标,而Unix程序一般会使用一个外部的单独的图片文件。这种看似原始的方式其实还是蛮有好处的,你可以方便的使用你喜欢的工具编辑你的软件的设置;而且即使你搞砸了,也只是破坏了一个软件的设置,试想如果你把Windows的注册表搞砸了是什么后果……(我记得某文科女生说过她的一个师兄告诉她改注册表就会死机,呵呵……)

Linux继承了这种简单,和所有类Unix系统一样,计算机的文件组织方式是一棵树,这棵树只有一个根,不论你有多少个硬盘,多少个设备,都是这个根上的分支而已。(而Windows呢?我的文件夹还有C盘都是什么关系?正是因为搞不清楚我的文件夹实际上是C盘上若干文件夹内容的映射,多少小白再重装电脑之后痛失桌面上刚刚写好的作业啊……)更好的是所有的类Unix系统的磁盘都是可以挂载在任一文件夹的。如果你希望在Windows上把某软件的缓存设置到内存上,那么你只能祈祷该软件可以设置缓存地址,否则没戏。而在Unix上你可以把内存变成ramdisk挂载在任何你觉得合适的地方。逻辑简单,用法灵活。

很多人提到Linux相到的就是free,可惜理解的意思往往是“不要钱”。卓越上一份Windows也就是几百块,我还真不相信那些叫嚣着微软黑我屏我就跟盖茨拼命的家伙们拿不出来这个钱;把盗版微软觉得理所应当的人,几乎一定认为Linux社区应该把什么都给他免费准备好,生怕他不用……GNU/Linux的free更多的含义应该是自由,作为万灵之长了解并操作一个机器的自由。

有些人会说了,我们不是学计算机的,我就是一个OL,我搞不定C语言,弄不明白算法啦,我只想知道如何写报表怎么办呢?——这些都对,可是这不是褫夺自由和权力的理由。我们的自由和权力与生俱来,我们使用软件是委托其他人帮助我们实现我们的权利,而不是放弃我们的自由和权力。假如因为你扭了脚,要求我代你去超市买只菠萝,我说从此你的钱包就归我,你一定不会答应。所以拥有操作你的电脑的权利的人永远是你而不是某软。所以用某软的东西不是大问题,觉得电脑只有靠某软才能转就不对了。

某软的系统的逻辑也是简单——用户的头脑应该是简单的。于是某软私自做了很多的决定,既不告诉你为什么这么决定,也不说好处是什么,甚至不告诉你它做了决定。客观地说我不认为某软那些家伙们没能力做一个更好的系统出来,不过他们都忙着防范假象中的傻瓜用户把事情搞砸了。(这就和“为了防止你们把不靠谱的人选为xx代表,我熬夜把你们的选票上的圈都画好了,你们到时候拿过来直接扔到投票箱里就好了”是一个逻辑)微软的消费市场操作系统通过图形界面能干很多事情,但是没了图形界面基本干不了啥事情。

我认为Linux的桌面应用永远也不会成为主流,甚至可能在这个脑残和娱乐化的时代用户越来越少;但愿若干年后,还有一种叫做自由的精神香火不灭吧。

【 to be continued… 】

Thursday, April 23, 2009

Linux in neither heaven nor hell (1)

今天Emma童鞋问我用Linux多久了,我说这要看从什么开始算起,是第一次虚拟机安装?第一次在电脑上安装?还是最近的一次开始使用。于是Emma童鞋创造性的提出了应该看总时间,那么把若干次尝试零零星星的合计起来大概应该是一年吧。

这“一年”里我用过很多发行版,最开始是Ubuntu,因为据说用户多资料多中文社区好,后来发现用户多和中文社区都是很不本质的问题,资料还不怎么好(当时ubuntu的wiki里面有很多陈旧的东西)。尽管当时我还是离开了Gnome或者KDE什么都干不了的超级小白,还是果决的走上了一条漫漫长路——换发行版。

在Ubuntu之后,我现跳到了openSUSE。我用SUSE的原因十分值得鄙视,就是当时的SUSE的grub界面和KDE界面比较好看——我后来才知道这些都是很不本质的问题,换起来很容易(现在偶尔还听到有人说Ubuntu/SUSE/Fedora好看或者不好看,就会想起当初白白的我呀……很傻很好奇,呵呵)。不过openSUSE的教育网源是不大容易找的,在T大那个上国外网无比困难的情况下(在国内网络噪音远远大于信息的条件下,还让学生只能上国内网,T校真的是太没眼界了;单单知道怕国外势力毒害大好青年,不知道有金盾护卫祖国未来么;百年名校落得如此畏畏缩缩,唉),我的“华丽革命”没多久就华丽丽的收场了T___T

SUSE之后换了据说用户也很多的Fedora Core(当时还是叫做Fedora Core的,后来才改名叫作Fedora),可是我很快就被rpm打败了,依赖关系这个概念对小白太复杂了……

在然后我又一次回到了apt的怀抱,不过不是ubuntu,也不是加强版ubuntu——Mint,而是ubuntu的嗲地——debian。有科大的教育网源,有舒适的apt,于是我安顿很长时间。不过呢,debian太有当爹的感觉了,等一个软件进testing都得半年,进stable就更漫长了……这对于服务器不是问题,但是对于桌面应用这个就是问题了,毕竟Linux桌面上很多东西就靠等新品了呢……

后来我搞了一次debian的dist update,把它搞死了……然后也懒得修理,就抛在那里去用cygwin了……

再后来就是今年开始的arch冲击了,呵呵。从只有bash, ssh, wget, ftp, make, gcc, tar, pacman, vim等几十个小工具开始的系统建造之旅。这是我第一次下了决心要把该知道的都知道了,告别没了X就完蛋的时代。一路走来,我认识了以前不认识的/etc里的大部分文件,我知道了HAL的设计思想,我知道了Gnome中挂载硬盘分区是通过pmount的……后来我发现原来系统是可以通过tar备份迁移的,再后来知道原来神奇的ZFS文件系统有snapshot功能……

不过在我的笔记本上我还是没搞明白如何启用我的触摸板……我不知道如何让系统支持我的笔记本的Fn组合键……我更不知道如何让openoffice.org在绘制三维图表的时候不卡……最主要的问题是我现在没有充裕的时间来研究这些奇怪的问题=(

【 to be continued… 】

Wednesday, April 15, 2009

面对网页的遐思

本来我认为技术应该是越来越方便的,可是忽然想到网页制作,发现不是那么回事。

当年dreamweaver横空出世,与frontpage争锋“用table布局的最强大工具”;而今虽然土坯还在孜孜不倦的出dw cs2, dw cs3, dw cs4 实际上严肃的实用网页基本上都变成用文本编辑器(比如记事本)写代码的了(不知道T大的计算机文化基础课程还要不要大家做网页了,当年会有dreamweaver可是个“先进”工具的说……如果还在教dreamweaver我就不的不鄙视一下母校何其土鳖……当然作为一个第三世界国家我没指望大学教学能引领研究和产业发展,至少也得跟上时代步伐)

的确上来就教如何手写代码看起来很是不人性化,大有要非ECS系童鞋小命的感觉,不过从只有head, title, body, p标签开始学习做其实还挺有趣的,比一个一对按钮面板不知道怎么用的dw强多了;当今网页创作工具再次倒退回到了文本编辑器时代。

想想技术变化真是无情,当年一统江湖的大杀气如今成了土老冒的象征……如今漫天的div盒子在html5的语义标签下是不是也很快就要黯然落幕了呢?这个产业真的够残忍,几年时间就把认识颠覆一遍,知识淘汰一遍,一不小心没跟上趋势就被拍死在沙滩上了……

退化进化终究都是变化啊

btw,忽然回想起大四上的一门完全没花心思的课——貌似叫做网络信息论——想起樊平毅老师,当时很不愿意去翻找论文和经典教材,现在才恍然发现追本溯源,看清时下纷繁技术的前世今生,判断它未来,是如此的重要。