在Linux即将成年之际,迎来了最为关键的发展阶段,在桌面应用领域的日趋成熟与强大是其核心动力。越来越多的普通用户开始听说并尝试着安装使用 Linux操作系统。作为新人流动量较大的百度Linux吧的吧主,笔者深刻感受到了在中国要成为一名优秀的技术与开源思想“传教士”的责任之重大与必要性。对于如何正确、有效的指引群众用户学习使用Linux,跨进开源的大门,笔者有一些自己的见解愿与大家分享。
1. 个人修养与态度
很难想象一个自以为是,视新手问题如粪土的人能够为挖掘更多潜在的Linux用户作出贡献。笔者看到过许多使用上Linux或者其它“稀奇” 的操作系统后喜欢在Windows用户面前显摆的人,这样做会直接使得普通用户反感Linux以及开源社区。抱着一个平和的心态去学习使用Linux以及各类技术,才能在技术道路的修炼上有所建树,炫耀提供不了攀上技术顶峰的动力。
由于国内教育体制的问题,大部分人失去了主动学习、提问、解决问题的潜意识与能力。遇到任何芝麻大小的问题,不经大脑思考直接提问的情况常有发生,这时,许多“前辈”都会对这样的问题嗤之以鼻,不牺牲时间予以任何回答。个人的观点是,遇到这样的新手,若有时间应该尽可能地帮助他们学会自己解决问题,也就是接下来要说的如何帮助新人解决问题。
2. 如何帮助新手解决问题
“授之予鱼不如授之予渔”,我们的先人很早就知道了这样育人的道理,相比现在许多老师为学生提供“答案在书上的第几页第几段第几句”这样的“ 便利”相比,不知道我们国人的教育是先进了还是落后了。在帮助新人解决问题的时候,笔者见过太多差到极致的方法,其中的大部分都是主观性极强的回答:
问1:什么发行版本最好? 答1:ubuntu!最适合新手! 答2:Fedora,我的最爱! 答3:gentoo,能让你真正的学到东西! 问2:Linux下能运行Windows下的程序吗? 答1:白日做梦! 答2:滚回Windows下去吧! 答3:微软这个XX,死也不会支持Linux的!
相信读者也能辨认出这样的回答的问题所在了,对了,那就是说了等于没说。回答问题与发表个人观点是两码事,本着客观的视角以及严谨的学术态度去回答每一个问题不但可以得到他人的尊重,也能为自己带来思想交流上的火花以及愉悦的心情。
《提问的智慧》是一篇极好的文档来供新人阅读,在提供新手的“愚蠢”的问题的解决方案之前,建议他们学会提问前事先自己看下文档,看下Eric S. Raymond的这篇经典著作以及如何使用Google是必要的。
3. 个人对社区的贡献
光说不做还不够,作为拥有世界第一人口的中国,在开源社区的贡献太少了,浮躁的学习心态以及“自己还没填铇肚子”的想法是罪魁祸首。笔者认为,能够潜心钻研技术,避免任何无聊的口水战是每一位有修养的Hacker必备的态度。对社区的实质性贡献主要能够分为文档的翻译与纂写、自由软件的开发、参与现有操作系统的开发。其中,文档方面的工作就目前而言最为重要,国内缺少稳定的高质量的文档翻译与纂写组织。没有优秀的文档,新手在入门时就会感觉黑灯瞎火,找不到方向。
4. 如何宣传?
最后一点也是最重要的一点,就是如果我们要向他人宣传开源的操作系统以及思想,该怎么做才有效?其实,国内并不缺少技术方面优秀的入门文档,问题的关键是在于这些入门文档无法被需要看的新手看到。这一直以来都是一个问题,在20世纪末Linux就已经在国内的技术圈子内流传了开来,过了十年,Linux的安装问题、系统并存问题、软件应用问题依旧是新手讨论的热点。这还是要回到之前所说的三点:面对问题的态度、解决问题的方式与个人贡献。
最后需要指出的是,虽然Linux如今很火,但我们所关注并不应该只是Linux,而是整个开源界的发展。中国需要投入到开源的怀抱,积极的接受新的优秀的事物。开源对中国的信息化产业及产业链发展将起着健康积极的作用。这三年的黄金发展阶段并不只是属于Linux,更属于整个开源界。
后记:本文主要针对热心的geek与hacker所著,很少写这样“传教”性质的文章,希望本文没有让你们打哈欠 ;-P
ghosTM55:~> date
Mon Dec 1 16:50:23 CST 2008
笔者近期由于公司项目需要安装了两台虚拟机(CentOS 4.4)来进行PostgreSQL的数据库同步实验(slony-1),CentOS 4.4源内的PostgreSQL版本还停留在7,而笔者需要最新的版本8.3。于是找到了一个非常好的PostgreSQL RPM镜像。
在这里你可以找到适合centos/fedora/redhat的镜像安装文件,只要简单的下载指定的镜像RPM,安装完成后,在/etc/yum.repos.d/目录下可以看到新增加的pgdg.*.repo文件。
这时,用户还需要在Distro-Base.repo(笔者是CentOS-Base)文件中插入一行:
现在,用户可以通过yum update来查看该镜像是否生效:
大功告成。
ghosTM55:~> date
Fri Nov 28 10:43:46 CST 2008
我们在写C程序时一直使用的scanf()也有返回值,它的返回值是读入的值的个数。请看这段代码:
编译,执行:
ghosTM55:~> date
Wed Nov 26 09:10:30 CST 2008
众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能。这样的一款shell中自然不会缺少“函数”这个元素来帮助程序进行模块化的高效开发与管理。于是产生了由于其特殊的特性,bash拥有了fork炸弹。
所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特别的权限即可对系统造成破坏。现在来看一个最简单的fork炸弹:
一行看似无法理解的只有13个字符的命令,即可占用掉所有系统的资源。其实,这行命令如果这样写成bash script就不难理解了:
冒号":"其实是函数名,这个bash脚本就是在不断的执行该函数,然后不断fork出新的进程。那么,有没有办法扼制这种情况的发生呢?答案是肯定的,只需设置进程的limit数即可:
使用工具ulimit即可设置各种限制数,具体的请参考该工具的manual page。在这里笔者限制了max user processes数为200,所以,可以安全地执行这个fork炸弹了:
txi@ghosTunix.org:~> date
Tue Nov 25 14:11:51 CST 2008
yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀的工具却没有原生提供只下载不安装的功能,而这样的功能在pacman与aptitude下都有。今天在CentOS的邮件列表上看到有人在讨论这个问题,了解到了这个问题要解决起来非常方便。
yum有一个plugin叫做yum-downloadonly,它就可以为用户实现只下载软件包的功能:
完成安装后,yum就多了两个命令参数,分别是:
这两个命令参数的含义非常明确,不用多作解释了,这样,用户就可以做到使用yum只下载软件包,不自动安装了。
txi@ghosTunix.org:~> date
Tue Nov 25 12:37:31 CST 2008
微机(Micro Computer)是电子计算机中的一个分类,其他的还有巨型机、大型机、中型机和小型机。不同类型的电子计算机之间的差别主要在体积与运算速度和存储容量上划分。
微机系统由硬件系统和软件系统组成,硬件(Hardware)系统主要有主机、存储设备、多媒体设备、网络设备、输入输出设备组成,软件(Software)系统主要由系统软件与应用软件组成。
微机的一个显著的特点在于它的CPU的功能都由一块高度集成的超大规模集成电路芯片完成,本篇学习笔记要介绍的就是最重要的一块电路板——主板。
主板是微机系统中最大的一块电路板,又叫主机板(Main Board)、系统板(System Board)或母板(Mother Board),几乎所有的部件都连接到主板上,通过主板把CPU等各种部件和外部设备有机地结合起来组成一台完整的微型计算机系统。
CPU是与主板配套最紧密的部件,每出现一种新型的CPU,都会推出与之配套的主板控制芯片组。主板主要以支持CPU的类型、结构、逻辑控制芯片、集成度、生产厂商进行分类。
主板的组成结构:
txi@ghosTunix.org:~> date
Wed Oct 22 20:13:05 CST 2008
近期会连续把目前在看的一本计算机原理的书上所摘录的笔记按照章节分篇发上来与大家共享,笔记会感觉有些凌乱,不过都是很重要的概念性质的东西。笔记会不断的更新,因为书上的东西不一定就是对的,有任何错误或曲解请各位朋友立即指出。
废话不多说,CPU打头炮。
中央处理器CPU(Central Processing Unit)是现代计算机的核心部件,又称为微处理器(Microprocessor)。CPU的各项指标都是用来衡量一台计算机性能好坏的分水岭。CPU可以按照品牌、接口、型号或标称频率、核心代号、处理器位数、核心数量等进行分类。
摩尔定律:集成在单位面积上的晶体管数量每18个月翻一番。
CPU发展简史:4位处理器(Intel 4004) -> 8位处理器(Intel 8008/8080/8085) -> 16位处理器(Intel 8086/8088/80286) -> 32位处理器(Intel 80386/80486) -> 64位处理器(AMD Athlon 64) -> 多核处理器(Intel Pentium D/AMD Athlon 64 X2),括好内的处理器系列或产品为代表作。
CPU的基本工作原理:CPU由运算器和控制器组成,其内部结构分为控制单元、逻辑单元和存储单元三大部分,这三个部分互相协调便可以进行分析、判断、运算,并控制计算机各部件进行工作。CPU中的运算器主要完成各种算术运算(加、减、乘、除、取模等)和逻辑运算,而控制器负责读取、解析与执行各种指令。 CPU中还会有若干个寄存器(Register),它们可以用来直接参与运算并存放运算的中间结果。
CPU的外部结构主要由核心与基板组成。CPU的核心工作强度和散热量都很大,而且很脆弱,所以为了核心的安全及其散热,现在的CPU核心都加装了一个金属盖。CPU基板就是承载CPU核心用的电路板,负责核心芯片和外界的数据传输,在基板的背面或者下沿有针脚或者卡式借口,它们是CPU与外部电路连接的通道,同时也起着固定CPU的作用。
CPU的主要参数会标准在CPU的编码上,现在说一下CPU的各主要参数的概念:
型号:CPU厂商会给属于同一个系列的CPU产品一个系列型号,型号是区分CPU性能的一个重要标识。
核心类型:核心又称为内核,是CPU最重要的一部分,CPU中心那块隆起的芯片就是核心,由单晶硅以一定的生产工艺制造而成。为了便于CPU的设计、生产、销售以及管理,CPU制造商会针对各类CPU核心给出相应的代号,这就是核心类型。每一种核型类型都有其相应的制造工艺、核心面积、核心电压、电流大小、晶体管数量、各级缓存大小、主频范围、流水线架构和支持的指令集、功耗、发热量大小、封装方式、接口类型、前端总线频率等。
主频:在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期,将在单位时间内所产生的脉冲个数称为频率。频率是描述周期性循环信号在单位时间内所出现的脉冲数量多少的计量名称。计算机中的系统时钟就是一个典型的频率相当精确和稳定的脉冲信号发生器。频率的基本单位是赫(Hz)。
CPU的主频也叫CPU核心工作的时钟频率(CPU Clock Speed),单位是MHz,GHz。CPU主频表示的是在CPU内数字脉冲信号振荡的频率,并不是其运算速度,所以主频与实际的运算能力并没有直接关系。主频与直接运算速度有一定的关系,但并没有直接的计算公式,因为影响运算速度的还有CPU流水线方面的性能数据。
外频:CPU 的外频通常为系统总线的工作频率(系统时钟频率),单位是MHz,是由主板提供的系统总线的基准工作频率,是CPU与主板之间同步运行的时钟频率。实际运行过程中的主板系统总线频率、内存数据总线频率不但由CPU的频率决定,还受到主板和内存频率的限制。由于主板和内存的频率大大低于CPU的主频,因此为了能够与主板、内存的频率保持一致,就要降低CPU的频率,即无论CPU内部的主频有多高,数据一出CPU,都将降到与主板系统总线、内存数据总线相同的频率。
倍频:CPU的倍频全称倍频系数。由于CPU主频不断提高,提高到其他设备无法承受的速度,因此出现了分频技术。分频技术就是通过主板的北桥芯片将CPU主频降低,使系统总线工作在相对较低的频率上,而CPU速度可以通过倍频来提升。倍频是CPU的运行频率与系统外频之间的倍数,也就是降低CPU主频的倍数。理论上倍频从1.5到无限,倍频是以0.5为一个间隔单位。倍频具有一下关系公式:CPU的主频=外频x倍频系数。
在相同的外频下,倍频越高,CPU的主频也就越高。但实际上,在相同外频的前提下,高倍频的CPU意义并不大,因为CPU与系统之间数据传输的速度是有限的,于是就会造成CPU从系统中得到的数据的极限速度不能够满足CPU运算的速度。所谓“超频”就是通过提升外频或倍频系数来提高CPU实际运行频率。
前端总线(Front Side Bus,FSB):总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说就是多个部件间的公共连线,用于各部件之间的信息传输。总线的种类有很多,前端总线是CPU与主板北桥芯片之间连接的通道,也称CPU总线。前端总线是PC系统中工作频率最快的总线,也是芯片组与主板的核心,主要由CPU用来与高速缓存、主存和北桥之间传送信息。所以,前端总线频率(FSB Clock)越大,代表着CPU与内存之间的数据传输量越大,CPU的工作效率越高。通常以MHz为单位来描述前端总线频率。在有些CPU中取消了前端总线,直接将内存控制器集成到了CPU内部,然后使用超线程(HyperTransport)技术来完成CPU与主板北桥芯片组之间的连接。
需要注意的是,外频与前端总线频率是不同的,前端总线的速度指的是CPU和北桥芯片间总线传输速度,更实质性地表示了CPU与外界数据传输的速度。而外频是CPU与主板之间同步运行的速度,主要是对PCI及其他总线的影响。
高速缓冲存储器(Cache):高速缓冲存储器简称高速缓存,它是一种速度比内存更快的存储器,其功能是减少CPU因等待内存所导致的延迟,以增强系统的数据处理性能。Cache在 CPU和内存之间起缓冲作用,可以减少等待数据传输时间。CPU在访问内存中的数据之前会先访问Cache,如果Cache中有CPU所需的数据,CPU 则不需要等待内存数据,直接从Cache中读取。因此,Cache技术直接关系到CPU的整体性能。然而,Cache并不是越大越好,还要视其内部的算法而定。Cache由静态RAM组成,结构较复杂。
高速缓存一般分为一级缓存(L1 Cache)、二级缓存(L2 Cache)及三级缓存(L3 Cache)。一级缓存建立在CPU内部,与CPU同步工作,CPU工作时首先调用其中的数据。由于CPU核心面积不能太大,所以一级缓存的容量通常并不大,介于32~256KB之间。二级缓存是CPU的第二层高速缓存,分为内部和外部两种。内部二级缓存的运行速度与主频相同,而外部二级缓存的速度则为主频的一半。二级缓存的容量通常为512KB~6MB,其级别低于一级缓存,CPU在调用数据时会首先访问一级缓存,然后是二级缓存。为了进一步降低内存延迟,同时提升大数据量计算时处理器的性能,有些CPU内部集成了三级缓存。缓存的工作原理是:二级缓存作为一级缓存的备用空间,一级缓存存储着CPU当前使用频率最高的数据,而当空间不足时,一些使用频率较低的数据就会转移到二级缓存中去,之后如果有需要,二级缓存中使用频率较高的数据将会被放入一级缓存中,三级缓存的工作原理同样如此。
x86指令集:x86 指令集是Intel公司为其第一块16位CPU i8086专门开发的指令集,同时为提高浮点数据处理能力而增加了x87处理器,以后就将x86指令集和x87指令集统称为x86指令集。由于Intel x86系列及其兼容CPU(例如AMD Athlon XP)都使用x86指令集,所以就形成了如今庞大的x86系列及其兼容CPU阵容。
CPU扩展指令集:CPU 扩展指令集指的是CPU增加的多媒体或者3D处理指令。这些扩展指令可以提高CPU处理多媒体数据和3D图形的能力,有MMX(MultiMedia Extension,多媒体扩展)、SSE(Streaming SIMD Extension,单一指令多数据流扩展)、SSE2(在SSE的基础上新增了114条指令)、3DNow!、SSE3、SSE4指令集等。
位宽:CPU一次能同时处理的二进制数的位数叫做位宽或字节。
双核与多核(Dual/Multi Core):在一块CPU基板上集成两颗或两颗以上处理器核心,并通过并行总线将各处理器核心连接起来的处理器。
工作电压:CPU核心正常工作所需的电压,它是根据CPU的制造工艺而定的。提高CPU工作电压可以提高其工作频率,但过高的电压将会使CPU过度发热,甚至烧毁。
制造工艺:制造工艺也称为制程宽度或制程,是在制造CPU时核心中最基本的功能单元CMOS电路的宽度,一般用微米或纳米表示。电路连接线宽度值越小,制造工艺就越先进,单位面积内集成的晶体管就越多,CPU可以达到的频率就越高,体积越小。
封装技术:封装是指将集成电路用绝缘的塑料或陶瓷塑料打包的技术。封装不仅起着安放、固定、密封、保护芯片和增强散热的作用,封装后的芯片也便于安装和运输。
节电技术:INTEL和AMD公司都推出了各自降低CPU功耗的技术,分别是EIST和C&Q技术。
txi@ghosTunix.org:~> date
Sat Oct 18 21:23:46 CST 2008
Linux下可以使用的即时通讯协议不少,例如MSN,GTALK,AIM,ICQ等,都可以通过优秀的IM集成软件PIDGIN或是KOPETE等同时登录,这些不是本文要讨论的对象,本文要介绍的,是历史悠久的IRC。
IRC是由多个IRC服务器集合在一起的,提供频道聊天功能的一个聊天软件(完全是自己的理解,可能不是很官方),只要链接到互联网,人们就可以在各种感兴趣的频道里畅聊了。在热门的频道里,往往有上百甚至上千个网友同时和你在一个频道里谈天说地。
之所以要强烈推荐IRC,是因为在这里,你可以认识更多珍惜时间的,热衷于探讨技术的人。好处就不想一一列举了,简单说一下如何使用。
在GNOME环境下,XCHAT是常用的IRC客户端,而KONVERSATION则是KDE下的,本文以XCHAT作为讲解范例。什么客户端并不重要,IRC里的命令都是一样的,当然,图形界面的客户端会提供更多的傻瓜化的功能,比如按下几个按钮,就可以进入某个频道,等等。而效率最高的,还是命令。IRC有很多命令,不用怕,常用的不会超过10个,当你学会使用IRC后,唯一要做的就是不要沉迷于其中,因为每时每刻都有人在聊天。
废话不多说了,简单讲下如何使用IRC。
首先,下载XCHAT这个软件,各大发行版本的源里都有XCHAT的包,使用各自的下载工具进行下载。
然后,进入XCHAT,会弹出选择IRC服务器的对话框,一般来说,FREENODE是最为常用的服务器,许多大的频道都在这里,选择FREENODE(irc.freenode.net),然后是更改昵称,以及用户的相关信息,修改好后,链接。
链接上后,就可以加入频道进行聊天了,图形化的IRC具有界面友好的频道搜索功能,一般来说,如果你清楚你想要的进入的是哪个频道,那么就直接通过
/join #channel
来加入频道,加入后,就可以开始正式聊天了。
如果这个时候,你发现你的昵称已经被别人使用,比如频道中已经有人叫linux了,那么你的昵称将会是linux_,通过
/nick nickname
可以手动修改你的昵称
就这么简单,这个时候你已经可以开始使用IRC,和别人自由畅快的聊你感兴趣的问题了,加入频道后,一句hi all是友好的打招呼的方式。
通过注册你的昵称 /msg nickserv register 可以享受到更多IRC的服务,比如私聊,传送文件,等等。 在每次登录到IRC的服务器后,可以通过 /ns id passwd 来增加你当前用户的权限,使用私聊等功能。
好了,要介绍就这么多,是不是很简单呢?下面介绍一些资源:
频道(freenode): #ubuntu-cn ubuntu中文频道 频道(OFTC): #arch-cn ArchLinux中文频道 软件: XCHAT(GNOME) KONVERSATION(KDE) CHATZILLA(FIREFOX插件)
ghostm55@ghosTlinux:~$ date
Mon Mar 17 19:47:59 CST 2008
txi@ghosTunix.org:~> date
Mon Jul 28 17:33:30 CST 2008
txi@ghosTunix.org:~> date
Tue Jul 29 21:55:50 CST 2008
Host by is-Programmer.com | Power by Chito 1.3.3 beta