打造高效的工作环境(1):Why Windows Sucks - 行者无疆 始于足下 - 行走,思考,在路上
打造高效的工作环境(1):Why Windows Sucks
Table of Contents
1 缘起
这两天我的ArchLinux系统碰到了一个十分诡异的问题,就是电脑无法待机、关机,也无法重启,更令人拍案叫绝的是,电脑在关机重启的过程中,当硬盘停止转动后,整个系统就Hang住了,而屏幕终端还在,只是不再响应任何请求。解决这个问题的唯一办法就是强制关机,但是这种方法实在有失水准,有伤大雅。在尝试了增删内核模块、更新驱动的等多种方法后,我终于在ArchLinux BBS上找到了解决方案。
Google了几个来回,再看一些关于操作系统IT历史的八卦,半个下午就耗掉了,从某种意义上来说,这是在浪费时间。而事实上,如果不算辞掉工作更换电脑被迫地系统调优的那次,我已经至少半年没有进行过OS和软件层面的Tweak工作了。这其中的缘由,大概是由于电脑折腾久了,就会折腾出一套适合自己口味的解决方案,这套解决方案,就是接下来一系列文章的主题——打造高效的工作环境。
打造高效的工作环境,Wow,多么宏大的一个主题啊,不过我见识有限,就这个话题,我只能谈谈电脑相关的知识,和我个人的理解,我不会讲到:
- 桌上要放几盆草
- 要不要听轻音乐
- 开放式的办公空间
等与电脑毫不相关的话题。除此之外,还有一个前提,那就是我的文章主要针对Linux和Mac用户,对Windows用户的参考价值不大。
Why Not Windows?Why Linux?Why Mac?
我100%地相信,在中国,100%的人是通过Windows系统进入电脑的世界的,我也是。但是我也100%地相信,如果你是一个程序员Geek,用Linux或者Mac,会让你的生活变得更美好;如果你只是一个普通的电脑使用者,用Mac或者Linux,至少不会让你的生活变得更差。
说到这里,很多人会跳出来争辩,多数论调是:
- Linux的驱动如何如何不好
- Linux的桌面如何如何烂
- Linux下的软件如何如何不完善
- Linux下的游戏如何如何匮乏
我的回应是,对于一件事情,对于一件事情,我认为,人的认知有四种状态,分别是:
- You know you know.
- You Know you don't know.
- You don't know you know.
- You don't know you don't know.
"You know you know"说的是类似于1+1=2这类的常识,首先是你知道"1+1=2"这个知识点,进一步讲,你知道"1+1=2"这个知识点是一个认知事实,而你自己对于这个认知事实也是知晓的,所以归结下来是"You know you know",说的通俗点,就是“你是知道‘你本人是大学文化,所以会算1+1=2’这个事实的”。
"You know you don't know"说的是我这样的Coder,知道自己水平不够,功力尚浅,不懂得AI,不懂得数据库,不会算法,但好在还有自知之明,所为“吾生而有涯,而知也无涯”,"You know you don't know",学吧,学到白头学到老。
"You don't know you know"的情况很少见,这种情况常见于某些天赋异禀而不自知的人,就好比练成了九阳神功的张无忌,明明已经武功盖世,却不自知,见到阿猫阿狗也会心底害怕。
"You don't know you don't know",这句话用来形容那些狂妄自大目中无人之辈真是再合适不过。不过对于常人,我们能否从这句话中得到一些启示呢?当然可以。 事实上,小到一个生活常识,大到一门学科领域,如果你对它不甚了解,甚至完全不知,那么这种"You don't know"有很大的概率是"You don't know you don't know",而不是"You know you don't know"。仔细想想,这句话揭露了一个可怕的事实,那就是,随着知识爆炸的进行,人类在自己探索创建的辉煌文明成果面前,变得越来越无知;另一方面,人类的的知识再以指数级别的速度增长,但是培养人才的方式却没有本质的进步,这也就意味着现代人才的培养会越来越难1。
扯远了,说了这么多,就一个意思,在你对一个领域、一个知识有充分的调研学习之前,审行慎言。这也是“为什么上帝给了我们两只耳朵却只给了一张嘴巴2”。我个人曾经有过3年的用Linux做主力桌面的经验,其中有50%的时间是整个电脑上只有一个Linux系统,其余双系统并用的时间,98%的时间也是在Linux上,所以对于Linux桌面的情况,我还算有些发言权:
- Linux的驱动确实是一个软肋,不过情况较2000年左右Redhat 9.0横行的年代已经改善了很多,在这方面,Ubuntu绝对是一个集大成者,现在已经很少找到装上Ubuntu驱动不能用的电脑了,其余的发行版,经过简单配置,也完全可以搞定驱动问题。
- Linux的桌面已经非常完善了,Linux 并不是只有一个黑黑的令人敬畏的终端。KDE 4.8的设计和整合已经非常完美,各种软件的集成性比Mac有过之而无不及。
- Linux下的软件如果不比Windows多,至少不会比Windows少。很多优秀的软件诸如Amarok、Digikam、Emacs等等,都是以Linux为首要支持平台的,甚至有的软件只支持Linux,很多工业级别的软件,诸如Hadoop、MySQL、Apache等等,无一不是以Linux为最佳运行平台。
- Linux下的游戏比较匮乏,这点是不争的事实。
So,说了这么多,信也好,不信也罢,接下来谈谈:
2 Why Not Windows?
作为一个Coder,每次用Windows,我都有一种想要砸掉电脑的冲动。所以毕业设计时,在Windows上运行VMware里面跑着Mac OS X,启动Xcode写Win32 Style风格的程序,那可真是痛不欲生、终身难忘的事前黑暗时代。我搞了首打油诗:
- 文件系统多盘拼,文件命名大小混 :Windows是多根文件系统,每个根称作一个盘,而*nix的系统是单根文件系统,新来磁盘只需要在文件系统树上新增个挂载点即可;Windows文件的命名和组织从来没有任何规律,而*nix的文件系统则有一个统一的FHS标准,并且,在Linux下,几乎所有的文件名都是小写字母,并且不含有空格,这对脚本批处理是一个大大的方便之处。
- 权限控制小烦躁,命令终端很废柴 :Windows下的文件权限很困惑,我从来没搞明白,好像获得一个文件的某种特殊权限,还要去点击属性窗口;用户权限就更加混乱了,一个Administrator,后来Vista和7又加入了貌似“家长模式”等等,太乱了;*nix下的权限控制则非常简单明了,三条命令如chmod, chgrp, sudo就可以全部搞清楚;Windows下的传统cmd.exe简直废柴的不能再废柴了, 谁能告诉我为什么cmd窗口无法最大化? 真不明白这到底是哪门子的设计。
- 弹出窗口满天飞,后台进程到处藏 :在Windows下还有一点非常让我难受,就是无论是搜狗输入法、迅雷下载,还是QQ、360等,这些软件无一例外,都有一个爱好,就是首先把自己加入系统的启动项,然后呢,在你写代码看片练葵花宝典乾坤大挪移到了关口的时刻,“啪!”的一下给你整几个弹出窗口,放几条八卦新闻……还有那废柴的任务管理器,从来都是杀不掉进程,自己倒先莫名其妙地卡死了,哪里像*nix上的killall -9,手起刀落,快刀展乱麻,痛快痛快。
- 一家独大搞垄断,格式兼容已败北 :在格式兼容方面,从来都是*nix下的软件想尽办法兼容Windows的软件,但是Windows一家独大,对于兼容别的系统的软件,从来不屑一顾,举例?OpenOffice,ntfs-3g,数不胜数啊。
- 病毒木马禁不止,杀毒软件赚钱忙 :每次我去帮别人修理Windows系统,别人的第一想法都是让我先替他们杀杀毒,可见,病毒和Windows故障一样,在人们的心中难解难分。
- 硬盘整理除碎片,系统臃肿找管家 :Windows系统有一个特点,那就是任何系统装好后,都需要“深度优化”,然后才能用得比较舒畅,其中的优化包括但不限于硬盘碎片整理、软件增删、装机必备等等,这也是 为什么各种优化大师、超级兔子、碎片整理等软件“屡禁不止”的原因吧。
- 万年IE不升级,银行网商耍流氓 :IE 7.0+新增加了多标签的特性,但是呢,这个多标签特性默认情况下是只启动20%的——除非手工指定,否则点开的链接依然是在新窗口中。退一步讲,就算是手工新开个标签页,但是这个空白标签页的打开简直比乌龟还慢,至少要5秒钟,正是让人“屎可忍,而尿不可忍啊”。至于万年不变的IE6,已经国内众网商网银流氓们的ActiceX插件,我已经无力吐槽了,历史会证明,一个不支持跨平台浏览器的银行网商,绝对会是软件史上的一个笑话,或者说,这是中国银行业的奇耻大辱。
- 多情自古空余恨,聪明反被聪明误 :Windows下的很多软件都喜欢自作聪明,典型例子就是Microsoft Word。且不说各种软硬回车,最简单的一个列表,回车之后默认又是一个列表项,但是如果我想新开段落呢?很多人就不知道怎么办了,于是就各种暴力手段地搞排版,排出来的东西,可想而知。我只能说,这种自作聪明,有时候不是真的聪明,是蛮横的自作主张,是对用户意志赤裸裸的强奸啊。
个人吐槽到此结束,详情请进一步参考:
- http://www.antiwindowscatalog.com/
- https://sites.google.com/site/imterry/computer/windowssucks
- http://en.windows7sins.org/
- Google: "Why Windows Sucks"
- Google: "Anti Windows"
3 Save your life
在接下来的系列文章里面,我会分门别类地介绍我在Linux桌面使用上的一些日常经验,分享自己的一些心得。这些经验之谈对于刚刚踏入Linux大门的同志,以及对于初级Mac用户,甚至部分喜爱折腾的Windows用户,都有很大的参考价值。我觉得,在信息时代,电脑将伴随着我们的一生,高效地使用电脑,就能够在更短的时间内处理更复杂的事情,从而为自己节省出宝贵的时间,去做更有意义的事情,这是一种正向循环;而如果每天纠结于杀毒、木马、弹出窗口、软件破解,则会使你的思维受阻、降低你的工作效率,这是一种负向循环。
这一系列的读者群将以Linux用户为主(重点是Coder),高级Mac用户可以作为参考,对于Windows用户,理解起来可能会有些困难。不过话又说回来,“不经一番寒彻骨,哪得梅花扑鼻香”。我给自己定下如下两个目标:
- 在键盘上舞蹈
- 思维不会受阻
至于主题,我初步想了分为如下几个
- 高效的文件管理
- Just Find it:Findutils
- 细谈文本配置
- Shell之魂:管道
- Screen:it not a screen
- Zsh:终极Shell
- VIM:键盘上跳舞
- CLI Tools:把玩终端
- 时光机:版本控制
- 抛弃Office:LaTeX
-
KDE系列:
- Kwin
- Dolphin & Konqueror
- Konsole & Yakuake
- Krunner
敬请期待!
–
Sun, 05 Feb 2012 23:33:42 +0800
我要攒钱买macbook air留着在家玩!
Mon, 06 Feb 2012 10:45:09 +0800
强烈支持
Mon, 06 Feb 2012 20:05:25 +0800
其实也有很多人是MS-DOS入手的吧。。。
Tue, 07 Feb 2012 23:01:48 +0800
说得很在理,用习惯linux,处处感觉 win不爽
Wed, 08 Feb 2012 18:22:17 +0800
支持一下。我最想了解的就是SHELL管道的操作,如何同时将多个管道输出到同一个管道,这个man page没介绍清楚。
Mon, 27 Feb 2012 01:39:47 +0800
谢谢支持,敬请期待
Mon, 27 Feb 2012 10:05:38 +0800
KDE是真不错,但是kmail那套东西实在是太废材,好在我也不去用它。
windows实在也是摆脱不了的,比如人机交互这课要求的是MFC和Qt。MFC。。。。。。
LaTeX交流文档的时候实在是不方便。别人都用word,我用LaTeX,那是不可能的,这或许也是个永恒的话题,不过,它们本来就不能互为替代。而且,软件需求分析这种鬼课,
老师还指定了微软的一套产品(从office到ms project),还有IBM的一套工具。可能是我的眼界问题,我还真不知道有什么可以替代的,而且虽然我认为是鬼课,但是由于是5人合作的,不可以为了因为我而乱搞。
现在学校里用Linux的人,我感觉越来越少了,看几个版主一直没变,就可以得出结论,至少可以认为,大都是像我这样低水平的。
我看你也用emacs的呀,不准备谈谈?学校里用emacs的人,在mike学长毕业以后,我看已经变为0了。
Tue, 28 Feb 2012 22:41:04 +0800
我不是qt控,所以必要的时候就用gtk的。话说mozilla的浏览器和thunderbird都是不错的。thunderbird的lightning插件几乎可以完美兼容outlook的事件。
至于latex和word,我认为两者交集并没有想象的那么大。简单的排版我用emacs org-mode生成html,ppt就用latex beamer生成pdf,交流起来问题也不大。
最后,关于如何摆脱ms的产品和软件,我认为成为一名出色的linux程序员或许是个较好的办法。我现在正在这条可望可及的路上努力着。
emacs是个过于宏大的主题,虽然我也用了有些年头了,但是我其实并没有太深的功力,最近闲下来了在啃emacs manual和elisp manual。http://emacser.com是个更好的去处。呵呵。
Fri, 13 Apr 2012 14:11:32 +0800
支持这个系列,本人装了卸了好几次的Linux,始终下不下决心完全切换到Linux上面。跟着这个系列,让我开始畅游Linux……
Sat, 09 Feb 2013 15:01:01 +0800
文件系统多盘拼,文件命名大小混: Windows NT可以用挂载点,mountvol,diskpart。
文件名大小写这块,没有系统有严格要求,所以不能苛求用户按照什么标准执行。
在Linux下,几乎所有的文件名都是小写字母,并且不含有空格,这对脚本批处理是一个大大的方便之处。方便?为何不从方便用户角度出发?对于文件名处理完全可以加引号。
权限控制小烦躁:这个建议你看看Windows的SDDL,修改权限也可以通过命令实现,cacls,icacls。Windows的SDDL有利于细分权限,而且Mac OS X也引入了这个功能。
cmd窗口无法最大化 这个是个问题,但更应该从cmd提供的功能出发,其实cmd是可以实现shell大部分功能,只是有些实现起来比较麻烦。比如完全可以通过批处理实现贪吃蛇游戏。至于shell功能强大,更多的体现在外部命令上,如果光用shell的内部命令,又能实现多少功能?
弹出窗口满天飞,后台进程到处藏:我猜测你原来使用Windows估计爱乱装软件,爱用管理员用户。如果你像Linux那样用标准用户就不会有那么多问题。Windows也有kill命令, 你可以看N个记事本,然后taskkill -im notepad.exe -f,同时taskkill命令还可以加-s参数杀远程系统的进程。
对于最后三点,我就不多说了,用这四句话作为回答
• You know you know.
• You Know you don't know.
• You don't know you know.
• You don't know you don't know.
对于你不了解的不要乱发表看法。
Mon, 11 Feb 2013 10:36:18 +0800
可以做到不代表可以方便地做到。
谢谢你的指正。