开源思想推动创新(转帖)

转自:(http://www.matrix.org.cn/resource/news/OpenSource_d64c0afd-4738-11db-af0b-0f766c077b58.html

开源思想推动创新

matrix 发表于 2006-09-19 01:12:17 作者:matrix     来源:infoworld

评论数:8     点击数:481

摘要:

人们经常说开源没有创新,而是模仿。这肯定是专有软件行业希望你相信的。看一看目前企业中使用的一些最著名的开源项目中的活动,让你不由得不同意。

工具箱

本站收藏

美味书签

发表评论

复制链接

    人们经常说开源没有创新,而是模仿。这肯定是专有软件行业希望你相信的。看一看目前企业中使用的一些最著名的开源项目中的活动,让你不由得不同意。

  例如,尽管开源数据库令人难以置信地广泛用于各类关键任务应用,但不管是MySQL还是PostgreSQL,实际上没有做任何IBM、 Microsoft、Oracle和Sybase多年来没做过的事情。同样,OpenOffice.org生产力套件是一个给人留下深刻印象的社区驱动的开发的例子,但它惟一的真正目的是创建免费的、基于标准的Microsoft Office的克隆。甚至Linux自己也是作为免费软件改写Unix的尝试。

  但是,所有这些都不能否定开源开辟了一条属于自己的新路而非只是跟在别人后面的事实。Apache Web服务器就是最好的例子。Apache自1995年诞生国家超级计算应用中心的httpd后,就一直是用户的首选Web服务器。据网站与服务器监测机构Netcraft说,目前62%的Internet网站使用Apache,而使用Microsoft IIS(Internet信息服务器)的网站只有31%。

  然而正如Microsoft的Internet Explorer所证明的,流行程度并不是惟一衡量性能的指标。Apache常常是安装在大多数Linux服务器上的缺省Web服务器,而它的成功并不只是由于人们熟悉它或缺少竞争对手。更确切地说,它具有稳定性、高性能、一流的安全纪录以及使它具有比商用竞争对手更多功能的各种特性与扩展程序。 Apache实际上开辟了Web服务器软件市场并处于领先地位。5年后,IIS无疑将以这种或那种形式存在于市场上,但Apache仍将是领先产品,进一步拓展Web服务器的功能。

  这类协作创新的例子在IT领域中比比皆是。在软件业中,无数的开发商、个人和公司在试验开源方式。理由之一是因为社区驱动的开发使软件产品能够有机地发展。正如Eric S. Raymond在其开创性的著作《大教堂与集市》中所说的:“每一个软件杰作都开始于满足某个开发人员的个人需要。”当一群开发员以开源方式协作时,每一位开发员都有着独特的个人需要,其结果是软件不断扩展,填补专有产品没有涉及的这些功能领域。

  开源赋予Java生命

  开源社区开发的工具巩固了Java在开发人员市场中的领先地位。

  毫无疑问,开源使Java得到了巨大的实惠。Java语言和平台赖以发展的JCP(Java社区进程)似乎在以蜗牛的速度前进。委员会的审查和批准是个缓慢且需深思熟虑的过程,Java毕竟是领先企业应用平台,因此它应当缓慢演进,哪怕需求十分紧迫。为解决一些问题而造成另一些问题从来不是一种好的解决办法。

  然而,与其相对的开源社区却一直在飞速前进,推出大量的重要创新。目前,企业Java基本工具全部是开源产品:Ant(用于开发应用程序)、Hibernate(用于将数据保存在硬盘上)、JUnit(用于设备测试)和Maven(用于继续的集成),更不用说得到高度重视的 Eclipse和NetBeans开发环境和PMD源代码验证程序了。

  Java开发人员还从几种开源框架中受益,如JSF (JavaServer Faces)、Spring和Struts。再有就是众多的容器(container):Apache Tomcat、Geronimo、Jetty、Jonas和Resin,更不要说很多用于嵌入式应用的小容器了。开源是Java世界想像力和生产力的巨大源泉。

  在这两股河流——JCP与开源——之间站着3大企业Java技术提供商:BEA、IBM和Sun Microsystems。他们都是一只脚站在开源工具河流中,另一只脚站在非开源工具河流中。虽然很多IBM工具是专有的,但它一直是Java和开源社区的主要贡献者。BEA最近非常积极地实施其“混合”战略,积极支持开源产品。此外,BEA还向多个开源项目捐献代码和程序。

  Sun 有点特立独行。狂热的开源支持者一直逼迫Sun开放Java源代码,希望加速这种平台中的创新,但Sun却行动缓慢。这样做是有一定道理的:开放Java 代码可能会将Java分裂为不同的版本,从而减少Java引以为荣的可移植性。但开源社区一直尖锐地攻击Sun的这种立场。

  鉴于 Sun对开源的长期贡献,这就将它置于一种奇怪的境地。Sun仍是惟一一家开放其操作系统和全部生产力套件源代码的公司。实际上,它开放了很多Java技术的源代码。因此,Sun在8月份举行的LinuxWorld上透露——也许有点勉强——除推出一个供开发人员跟踪其进展的社区网站外,它打算开放 Java库和Java虚拟机。

  从长期看,向开源发展的这股强大的力量能使Java受益吗?除了其缓慢的开发进展外,Java的一部分成功归功于Sun所起到的管家作用。通过开放Java源代码剥夺Sun的这一角色可能导致Java平台的大大加强,也可能最终伤害它。

  Linux让设备受益

  嵌入式系统开发商从开源操作系统中受益。

  Linux的传统根据地在于服务器和工作站,而它正在这之外的非常小的设备上取得成功。对于嵌入式系统开发人员来说,Linux优于专有操作系统的优势除了低成本外,还在于其灵活性和开放性。

  消费电子产品市场对新技术有着永不满足的需求,但是使用来自Microsoft和Symbian等公司的专有嵌入式平台的开发人员,必须受限于某一厂商提供的设备驱动程序和对最新硬件的支持。然而,他们的开源社区同行常常在技术刚一推出时就开始修补它们。他们开发的代码也许很糙,但开发过程很快,这反过来可以使他们更快地制造出原型产品,更早地上市以取得市场先机。

  Linux还使开发复杂的嵌入式应用变得更容易。用于嵌入式设备的传统RTOS(实时操作系统)是在单处理器线程中运行单个任务的单用途平台。嵌入式Linux类似于它的重量级表兄,是设计用于运行多个应用的通用操作系统。这种通用性帮助开发人员满足客户日益复杂的基础需求。此外,没有复杂的专有许可条款为开发人员提供了定制各个层次应用的自由,他们可以选择他们需要的部件而忽视另一些。

  厂商之间的竞争对于顾客肯定是件好事。在嵌入式Linux市场上,MontaVista和Wind River等顶级厂商不仅与专有操作系统厂商竞争,而且还相互竞争。此外,一些设备制造商还选择“单干”,独立于操作系统厂商生产自己风格的嵌入式 Linux。然而Linux是开源操作系统,每一种变种都成为由开发人员、客户和合作伙伴构成的大生态系统的一部分,都在为这个更大的整体做贡献。

  这种“竞争式协作”仍给其他公司留出了利用额外的工具扩大Linux基础的空间。例如,Trolltech提供的Qtopia:一种迅速开发嵌入式 Linux应用和用户界面的全面的环境。核心Qtopia技术可依据Gnu GPL(通用公共许可证)使用,从而为开发人员在Qtopia代码上带来了在Linux内核上所享受到的同样的可见性。同样,Nokia发布了自己的开源应用平台Maemo。该平台可以在Nokia 770 Internet Tablet等嵌入式设备上找到。

  这些工具为开发人员带来了额外的优势:熟悉性。Qtopia是基于Trolltech历史悠久的桌面Linux系统Qt工具包的;Maemo基于来自Gnome项目的类似技术。其结果不同于专有操作系统,应用开发人员可以利用自己已有的技能为嵌入式操作系统开发软件。

  这些优势意味着阵营越来越庞大的Linux驱动的设备。从Sharp PDA到TiVo机顶盒,从Linksys无线路由器到Motorola手机,越来越多的公司将宝押在Linux上,把它作为在快速发展的、高度竞争的设备市场中取得成功的跳板。

  开源社区推动脚本采用

  现代脚本语言在开放上取得成功。

  脚本语言,有时叫做“动态”语言,变得非常流行,其中一个原因是它们能让开发人员利用比较小的代码完成很多工作。这种“高相对价值”源于将更多的工作交给编译器和运行时间环境(如按变量值得到变量类型)去做的新方法——除了完成经常执行活动的特殊捷径外。

  包括Perl、PHP和Python在内的脚本语言还有另一个共同点:它们几乎统统都是开源语言。在很多地方,开源与非开源之间的不同之处可能并不重要,但开源似乎在脚本语言中至关重要。奇怪的是,这点并不是由于开源在修补漏洞中的灵活性的原因,而是由于其创建社区的能力。

  比较两种几乎同时问世的脚本语言Ruby和NetRexx的命运,是看到开源重要性的生动例子。NetRexx是由IBM设计、部分基于其成功的大型机脚本工具 Rexx的。它以解释方式运行,也可以编译为Java字节代码。作为一种语言,NetRexx具有很高的生产力并易于学习掌握,提供大量的优雅的结构。由于它可编译为Java字节代码,从NetRexx中可以访问所有的Java库,此外,它享受着Java虚拟机的优秀性能。

  另一方面,Ruby是纯解释语言,它没有虚拟机,因此运行速度慢。这种语言有它自己的优点,但主要优势来自采用部分起源于Perl缩略语法不直观的句法成分。NetRexx与Ruby还有另一个重要的共同之处:它们都是免费提供的。

  那么,这两种语言中哪一个更成功呢?是快速、典雅的NetRexx,还是不直观、速度慢的Ruby呢?事实可能与你所料的正相反,今天的Ruby踌躇满志而NetRexx却濒临死亡。

  关键原因在于Ruby是开源而NetRexx不是。结果是Ruby能够建立一个活跃的开发员社区——特别在它的诞生地日本,它已经流行了10年。 Ruby在David Heinemeier Hansson编写Web应用框架Ruby on Rails之前一直在积累发展动力。Rails是Ruby的杀手应用,它是设计典雅的典范,保证了Ruby发挥持久的作用。同时,尽管NetRexx有着巨大的价值,却蹒跚而行,无人理睬。如果IBM开放了NetRexx源代码,脚本技术今天可能是一番完全不同的景象。

  仅凭开源本身肯定不能保证一种语言取得成功。实际上,现在有很多没有成功希望的开源语言。尽管开源并不是成功的充分条件,但却是必要条件。缺少它就是缺少Microsoft创建社区的资源。

  “大开放”意味着更安全

  专家们依靠得到源代码来减少威胁和防止漏洞利用。

  几乎每一家安全专用设备厂商都有理由使用开源工具,而这与许可证没有什么关系。其中的绝大多数设备——从垃圾邮件与间谍件过滤器、网络扫描器到入侵检测与防御系统——不仅建立在像Linux或FreeBSD这样的开源平台上,而且还积极利用其他开源产品来完成任务。

  在各种平台上,最流行的网络端口扫描器和操作系统特征识别应用是Nmap。作为开源工具的Nmap提供一种迅速、准确确定任何给定IP地址或子网上的开放端口的方法;它还可以通过分析IP包的构建方式确定设备所使用的操作系统。

  另一个例子是开源安全漏洞扫描程序Nessus。Nessus可以利用Nmap扫描主机,但比Nmap走得更远:它尝试在目标系统上触发潜在的漏洞来验证系统的完整性。可供Nessus使用的插件数量达到了数千种,并且随着发现的漏洞而不断增加——这要再一次感谢开放源代码易于使用的事实。

  广泛使用的IDS(入侵检测系统)Snort也很有名。它同Nessus一样作为商用软件包提供,但开源版仍很吃香。其他开源工具,如OpenSSH和OpenSSL,是应用在各个方面的行业标准,在几十种平台上被数千种不同产品所使用。

  最后,还有操作系统层本身。虽然没有一种OS是真正安全的,但Windows平台上提供的安全工具由于基础操作系统详细记录的安全问题而令人怀疑。基于 Linux、FreeBSD、NetBSD或OpenBSD的产品则具有更好的安全纪录(OpenBSD声称在8年多的时间里,在缺省安装环境中只发现了一个远程漏洞)。

  对于缺少经验的人来说,开源的概念似乎与高度的安全性相悖。人们普遍的想法是公布源代码会让黑客和病毒编写者更加容易地利用代码中的漏洞。你只需看一看世界最坚定的专有软件厂商之一Microsoft,就会明白事实正好相反。

  商业产品可能有一支十几人组成的QA(质量保证)团队,但大多数重要的开源项目——那些由社区支持的开源项目——实际上拥有由成千上万人组成的QA团队。其中的很多人对代码有着深入的了解,因为他们一直在为项目贡献代码。这只会使产品更加安全,因为补丁要经过比商业环境多得多的眼睛的审查,隐患迅速暴露。因此,很多安全专业人员认为开源代码比专有代码更安全,而这种印象最终将渗透到整个行业。

  Snort入侵检测

  协作开辟多媒体新边疆

  无专利的音视频技术降低进入门槛,刺激创新。

  人们很容易认为开源与多媒体是相互排斥的。对免费桌面Linux版本(如Ubuntu)的常见批评是它们缺少对播放多媒体的支持。但是,不要责怪这些版本的包装者们。经过很多年时间,多媒体周围包裹上了大量专利,这些专利覆盖播放和编码的各个方面,甚至MP3格式也受到与免费软件许可证要求相冲突的专利的限制。

  但是,独立的开发人员并没有忽略多媒体,很多开源项目不仅设法绕过已有技术的限制,而且还改进它们。例如,Ogg Vorbis是一种开源“有损耗”音频压缩技术。同MP3一样,它不保留数据的每一比特,而是重现与原始信号听起来差不多的信号。不过,Vorbis利用高级心理声学模型,在同样的压缩水平上提供比MP3更好的音质。此外,它不存在专利限制,完全是免专利费的。

  在视频方面,只要看看 BBC Research赞助的Dirac项目就行了。虽然仍处于试验阶段,但Dirac采用子波压缩—— 一种理论上应当比当前方法提供更高质量视频的高级数字技术。BBC拥有Dirac代码的一些专利,但它向任何希望使用它们的人授予永久的免费许可。同样, On2 Technologies将永久的许可证授予其VP3压缩编解码器,这种编解码器已经成为另一个开源项目Theora的基础。

  尽管开源多媒体技术开发进展迅速,但采用它们则是另一回事。Vorbis是一种具有超群性能的成熟的编解码器,但没有几家设备制造商支持它,尽管它不需要许可费。造成这一局面的问题是内容。硬件制造商将支持内容提供商提供的格式,而这越来越多地意味着支持DRM(数字版权管理)的格式。不幸的是,不管是 Apple、Microsoft、Sony还是其他公司,专有DRM实际上使技术提供商成为整个多媒体栈的看门人。这也是开源能够解答的一个问题。

  Sun赞助的Open Media Commons,是一次通过整个开源社区参与开发DRM技术的尝试。其核心是Sun想方设法确保不与任何已有DRM专利冲突的开源代码。人们希望一种完全开放的DRM方案将使顾客可以在来自不同厂商的大量互操作的软件和设备上,以认可的方式使用受DRM限制的内容。

  所有这些项目的共同主题是合作与协作,这将加快数字音频和视频的采用速度,正如它推动技术向前发展那样。未来之路属于开源,专利限制和专有代码长期以来一直阻碍多媒体发展。

  避开专有消息技术

  开源电子邮件和协作服务器用灵活性满足未来的需要。

  开源工具和电子邮件都有着悠久的历史。Exim、Postfix和Sendmail邮件服务器得到广泛的应用,更不用说从Mozilla Thunderbird到Pine的各种开源邮件客户程序了。但是,电子邮件并不是企业消息技术的最高目标。对于像群组日程安排、共享地址簿和IM集成等高级特性,企业客户通常有两种选择:IBM的Lotus Notes和Microsoft Exchange。这种情况已开始改变。尽管这两个企业消息技术巨头在可预见的未来可能仍占据统治地位,但众多的替代产品已经出现,尤其是针对中小企业的产品,其中很多都来自开源世界。

  Open-Xchange也许是这类项目中最雄心勃勃的一个。它在开源软件包中重现传统群件服务器的功能。Open-Xchange集成多种开源工具,包括Apache Web服务器、Tomcat Java小服务程序引擎和PostgreSQL数据库等,通过一个基于Web的GUI提供全面的电子邮件、日程表和协作功能。商用添加件使Open- Xchange可以与Microsoft Outlook和Palm手持机互操作。

  然而,其他开源消息服务器将互操作性又向前发展了一步。例如,Zimbra利用AJAX(异步JavaScript和XML)技术将消息与外部数据源相集成。此外,Zimbra是从一开始就是作为一种由组件构成的互操作系统来设计的,其中的很多组件以Web服务示人。第三方开发商可以连接在这些组件的API上,直接访问Zimbra日程表项、地址簿和电子邮件。

  由于Zimbra是开源软件,因此开发商不必躲避专有陷阱。他们可以直插代码核心,直接集成自己的软件。开源消息系统也不强迫使用老通信接口。Open-Xchange和Zimbra利用包括WebDAV、LDAP、iCal和HTTP在内的开放标准套件,代替专有 Microsoft Exchange协议。

  这种实现消息技术的开放方式意义重大。由于公司对作为基本业务工具的电子邮件的依赖程度非常高,因此至关重要的企业数据最终保存在电子邮件服务器上。当这些服务器基于专有软件时,公司在电子邮件的存储、恢复、搜索、归档、备份、集成和管理上受一家厂商的支配。基于开放协议和开放代码的消息系统能保证客户在需要时访问数据。此外,活跃的开发社区将日益使这些系统能够不仅在价格和可用性上,而且还在特性上,能与专有厂商竞争。

本页页面地址:

用户评论列表

#0000 author: 000 submitTime: 2006-00-00 12:59

#1 评论作者: rivalhw 发表时间: 2006-09-19 08:04 上午

开源带来的好处是显而易见的,也是被众多实践和事实证明的,相信开源会走的越来越好,也祝愿开源做的越来越优秀。

#2 评论作者: Stive 发表时间: 2006-09-19 08:25 上午

有人说IBM之所以捐献了那么多的代码,不是因为“臣服”于开源,而是“救济”了开源……

我想,也许他是对的。

#3 评论作者: jobs002 发表时间: 2006-09-19 08:45 上午

开源确实带来了发展,也带来了java的欣欣向荣.

每一个软件杰作都开始于满足某个开发人员的个人需要.很有道理

希望开源越走越好.

#4 评论作者: youway 发表时间: 2006-09-19 09:03 上午

开源项目,国人用得多,参与得少

从开源思想到创新,我们要走的路还很远

#5 评论作者: SJTUer 发表时间: 2006-09-19 12:21 下午

咱们现在能用已经不错了,咱们离创新,估计还得等各一两代

#6 评论作者: leole 发表时间: 2006-09-19 12:35 下午

大厂商只不过想利用开源的力量来推广自己的产品,打击竞争对手而以。就如IBM对Eclipse的支持。

#7 评论作者: icess 发表时间: 2006-09-19 02:04 下午

大厂商只不过想利用开源的力量来推广自己的产品,打击竞争对手而以。就如IBM对Eclipse的支持。

是啊, 但同事也给开发者带来了好处, 有免费的产品可以使用, 可以说如果发展好的话,开发者和厂商可以互利互惠的

#8 评论作者: wq830630 发表时间: 2006-09-20 09:15 上午

天下是没有免费的午餐的,IBM贡献代码肯定出于自身利益考虑的。

在大硬盘上安装系统记

今天在一个80G上的硬盘重新分区并用ghost镜像光盘安装windows xp sp2。碰到两个问题,记在这里交流。一个问题是:DOS自带的分区程序fdisk不能识别大硬盘;二是安装系统后用pqmagic8.0中文版无法成功一次执行完所有的分区任务;

过程如下:

1、首先在DOS状态下用fdisk删除所有原分区;

2、在DOS下用fdisk创建分区时发现fdisk不能正确的识别这个80G的硬盘,只认成了9个多G的硬盘,创建主DOS分区是把认出的“9个多G”的空间全部划给它。重启后格式化C盘用了20分钟左右,格式化完成后,系统识别出了C盘的容量为约74个G。也就是一个分区把全部硬盘的容量占完了;

3、用ghost镜像光盘安装完windows xp sp2,是ntfs格式;

4、下载pqmagic8.0中文版,安装在windows xp sp2上(pqmagic8.0中文版可以支持ntfs格式),用pqmagic8.0定好分区系列任务后,选择应用,系统重启,执行pqmagic任务失败,进入系统后仍然只有一个分区;

5、用pqmagic8.0制定一个分区任务后,即选择应用执行,(如:第一个分区任务是调整C盘的分区容量),重启系统后再用pqmagic制定执行另一个任务,终于按计划完成分区。

6、用ghost镜像备份系统盘。完成。

PS:如果有DOS下的支持大硬盘的分区程序在执行安装前完成分区,速度就可以快点,如果你碰巧手边没有这种分区软件,恐怕也只有这样了。

错误678:远程计算机没反应。

我是铁通上网,这段时间(尤其是晚上)常常不能adsl拨号连接,问了铁通的服务人员,说是我的网卡可能不稳定,还问我adsl上的LINK灯是不是亮着的,如果是亮着的,就是他们把信号送到了用户,问题在用户这方面。我对这方面的知识是一点都没有,也就不能提出什么不同的意见来。不过,(也许是巧合),有几次网络联不上发生在我在计算机上用usb接口给手机充电后。也许跟手机充电有关?但又觉得可能性不大,以前就是这样给手机充电的都没有事。又查了一下网上的论坛,在铁通的本地门户的论坛上也有朋友提出类似的问题,有的回答是adsl的model有毛病,有的说网络有问题。还是没有确切的答案。问题的屏幕截图如下:

1、

2、

3、

9.2. Manipulating Strings

9.2. Manipulating Strings

1、String Length

expr "$string" : '.*'

3、Index这个表达式跟java的用法好像不同

expr index $string $substring

    Numerical position in $string of first character in $substring that matches.


   5 echo `expr index "$stringZ" 1c`              # 3

   6 # 'c' (in #3 position) matches before '1'.

4?{string:position:length}负数参数的用法有点怪

    Extracts $length characters of substring from $string at $position.


  16 echo ${stringZ:-4}                           # abcABC123ABCabc

  17 # Defaults to full string, as in ${parameter:-default}.

  18 # However . . .

  19

  20 echo ${stringZ:(-4)}                         # Cabc

  21 echo ${stringZ: -4}                          # Cabc

  22 # Now, it works.

  23 # Parentheses or added space "escape" the position parameter.

  24

  25 # Thank you, Dan Jacobson, for pointing this out.

而且下面这段不懂:


    If the $string parameter is "*" or "@", then this extracts a maximum of

$length positional parameters, starting at $position.

       1 echo ${*:2}          # Echoes second and following positional

parameters.

       2 echo ${@:2}          # Same as above.

       3

       4 echo ${*:2:3}        # Echoes three positional parameters, starting

at second.

5、Example 9-12. Emulating getopt其中的字符串处理不甚明了


  14       if [ ${1:0:1} = '/' ]

  15       then

  16           tmp=${1:1}               # Strip off leading '/' . . .

  17           parameter=${tmp%%=*}     # Extract name.

  18           value=${tmp##*=}         # Extract value.

  19           echo "Parameter: '$parameter', value: '$value'"

  20           eval $parameter=$value

  21       fi

6、awk处理函数不懂


  14 # The awk equivalent of ${string:pos:length} is

substr(string,pos,length).

  15 echo | awk '

  16 { print substr("'"${String}"'",3,4)      # skid

  17 }

  18 '

7、9.2.2. Further Discussion进一步讨论的几个例子没看

英语疑问:

1、emulation, getopt

A simple emulation of getopt  using substring extraction constructs.

数月来孩子的第一次生病

按以前的情况同期比较,孩子的健康状态算相当不错了。

这是入秋以来的第一次生病,主要是咳嗽和鼻塞。昨天到人民医院去看了一下,吃了一次药后,今天早上看来效果不错。

春秋两季是细菌的活跃期,穿衣又不好掌握,人容易生病。我们单位和周围有不少人都感冒了。

今天中午要把孩子从幼儿园里接回来吃饭和吃药。

孩子在新的幼儿园里好像还很受老师的喜爱。值得高兴。我们给孩子报名参加了美术兴趣小组。本来要报舞蹈小组的,不过名额已经满了。

add-ons

查询关键词:add ons 

查询结果:

Add-ons

附件,附加,附加软件

属类:【简明英汉词典】-〖简明词典〗-[]

**********************************************************************

add-ons

附[追]加系统[软件(包)]

属类:【IT行业 】-〖电脑术语〗-[]

**********************************************************************

add ons

附加元件

属类:【工程技术 】-〖电子工程〗-[]

**********************************************************************

installing browser add-ons

[计]设置浏览器附加程序

属类:【简明英汉词典】-〖简明词典〗-[]

**********************************************************************

Sound cards are the add-ons that provide stereo sound in personal computers

声卡是为个人计算机提供的立体声的附件

属类:【综合句库 】-〖-〗-[-]

**********************************************************************

IBM-compatible: A term applied to personal computers which their manufacturers claim will accept hardware add-ons run software designed to run on an IBM-PC.

IBM兼容:个人电脑用名词。电脑制造商用来标志其电脑可容纳IBM个人电脑所用的加配硬件和使用为它设计的保种软件。

属类:【行业术语 】-〖印刷〗-[-]

**********************************************************************

hardware manufacturers;hardware add - ons.

五金器皿制造商;五金商品分期付款

属类:【综合句库 】-〖-〗-[-]

**********************************************************************

Finally, Literature and philosophy are assigned the role of add-ons intellectual adornments that have nothing to do with "genuine" education

最后分派给文学和哲学的是一个点缀角色棗与”真正的“教育不相关智力装饰品。

属类:【综合句库 】-〖-〗-[-]

用局域网中的电脑作网关共享上网

因为不能在局域网的集线器上直接连入互联网,我于是用了一根双机互连的网线、和在局域网中的一台机子上加了一块网卡来解决了新加入机子的上网问题。

网关电脑是windows xp sp2,客户机是redhat linux9.0。

先是采用sysgate安在windows xp上,不成功。因为原来我做个网关电脑用adsl上网的双机互连共享上网,用windows xp上的共享连接不行,用sysgate才成功了。所以这次我首先就试了用sysgate共享上网。

然后,不改变两台机子互连的网卡的IP设置,在windows xp上用系统自带的internet连接共享来做。结果成功。

这两种情况成功和失败的原因都没有找到,记在这里可以作为一个小的经验吧。

where is my way?

Twelve days' vacation past, we have been working on changing our house twelve days. Today, two wood-workers left. And, there are many other work to do in coming days.

At the begin of vacation, I planed finishing  Advanced Bash-Scripting Guide onceover, but, most of it hasn't been read. There are over 40 chapters in this book, I only have read about 8 chapters.

The big feeling in these days is: where is my way?

My interest thing(hobby) and my work exists huge difference, I can't decide which one should I spend more time or heart. And, the most import thing is: my interest thing(hobby only vast my too many time on it, and can't help me to change our life better a little, but only make my family and my health bad more and more(worse and worse).

I can't decide if I should dicard this interest thing(hobby).

Where is my way?

9.1. Internal Variables

9.1. Internal Variables

1、不懂:


$DIRSTACK

    the top value in the directory stack (affected by pushd and popd)

    This builtin variable corresponds to the dirs command, however dirs shows

    the entire contents of the directory stack.

2、

 


$EUID

    "effective" user ID number

    Identification number of whatever identity the current user has assumed,

    perhaps by means of su.

    Caution The $EUID is not necessarily the same as the $UID.

3、


  $GLOBIGNORE

    A list of filename patterns to be excluded from matching in globbing.

4、


     root# echo ${GROUPS[1]}

     1

5、


    $IFS defaults to whitespace (space, tab, and newline), but may be changed,

    for example, to parse a comma-separated data file. Note that $* uses the

    first character held in $IFS. See Example 5-1.

     bash$ echo $IFS | cat -vte

     $

     bash$ bash -c 'set w x y z; IFS=":-;"; echo "$*"'

     w:x:y:z

6、IFS是空格时,字符间的多个空格视为一个分隔符,第一个字符前面的空格会忽略不计。见例子ifs.sh。


              14 IFS=" "

              15 var=" a  b c   "

 ...

              26 IFS=:

              27 var=":a::b:c:::"               # Same as above, but substitute

运行结果:


[mdx@localhost abs-exercises]$ ./ex9-1.sh

IFS=" "

-------

the arg is: [a]

the arg is: [b]

the arg is: [c]

IFS=:

-----

the arg is: []

the arg is: [a]

the arg is: []

the arg is: [b]

the arg is: [c]

the arg is: []

the arg is: []

[mdx@localhost abs-exercises]$

7、$LINENO 不懂


$LINENO

    This variable is the line number of the shell script in which this

variable

    appears. It has significance only within the script in which it appears,

    and is chiefly useful for debugging purposes.

       1 # *** BEGIN DEBUG BLOCK ***

       2 last_cmd_arg=$_  # Save it.

       3

       4 echo "At line number $LINENO, variable \"v1\" = $v1"

       5 echo "Last command argument processed = $last_cmd_arg"

       6 # *** END DEBUG BLOCK ***

8、$PIPESTATUS不懂,并且在本机上的执行结果与书中的不同


     bash$ echo $PIPESTATUS

     0

     bash$ ls -al | bogus_command

     bash: bogus_command: command not found

     bash$ echo $PIPESTATUS

     141

     bash$ ls -al | bogus_command

     bash: bogus_command: command not found

     bash$ echo $?

     127

...

          bash$ echo ${PIPESTATUS[@]}

9、不懂

$PWD的:


      22 # rm -f .[^.]* ..?*   to remove filenames beginning with multiple

dots.      23 # (shopt -s dotglob; rm -f *)   will also work.

      24 # Thanks, S.C. for pointing this out.

10、不懂$SHELLOPTS的用法


[mdx@localhost abs-exercises]$ echo $SHELLOPTS

braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

11、$SHLVL的用法


$SHLVL

    Shell level, how deeply Bash is nested. If, at the command line, $SHLVL is

    1, then in a script it will increment to 2.

12、$TMOUT的用法不懂,例子example9-2~9-4不懂

13、$UID,下面这段话的意思不懂

This is the current user's real id, even if she has temporarily assumed

    another identity through su.

14、example9-7太复杂了,留在这里备忘


    Caution The $* and $@ parameters sometimes display inconsistent and

            puzzling behavior, depending on the setting of $IFS.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    Example 9-7. Inconsistent $* and $@ behavior

15、set命令的用法


[mdx@localhost abs-exercises]$ set a b c

[mdx@localhost abs-exercises]$ echo $1 $2 $3

a b c

[mdx@localhost abs-exercises]$

16、$!的用法

书上的例子:

LOG=$0.log

COMMAND1="sleep 100"

echo "Logging PIDs background commands for script: $0" >> "$LOG"

# So they can be monitored, and killed as necessary.

echo >> "$LOG"

# Logging commands.

echo -n "PID of \"$COMMAND1\":  " >> "$LOG"

${COMMAND1} &

echo $! >> "$LOG"

# PID of "sleep 100":  1506

# Thank you, Jacques Lederer, for suggesting this.

#下面这句不大懂:eval, kill -9

#possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }      

# Forces completion of an ill-behaved program.

# Useful, for example, in init scripts.

# Thank you, Sylvain Fourmanoit, for this creative use of the "!" varia

英语疑问:

1、subtleties, nuances

This requires learning their subtleties and nuances.

2、necessarily

$SHELL does not necessarily give the correct answer.

3、collation order, mishandled

$LC_COLLATE

    Often set in the .bashrc or /etc/profile files, this variable controls

    collation order in filename expansion and pattern matching. If mishandled,

    LC_COLLATE can cause unexpected results in filename globbing.

4、revert, customary

To revert to the customary behavior of bracket matching, set LC_COLLATE to C by an export LC_COLLATE=C in /etc/profile and/or ~/.bashrc.

5、expedient

In a script, it may be expedient to temporarily add a directory to the path

    in this way.

6、likewise

         $SHELL, the name of the user's login shell, may be set from /

         etc/passwd or in an "init" script, and it is likewise not a

         Bash builtin.

8.2. Numerical Constants

8.2. Numerical Constants

1、Example 8-4. Representation of numerical constants

同C语言一样,字符也是整数。但是@和_代表是多少不知道?而且把它们转化为十进制的方法忘记了。

  32 let "b64 = 64#@_"

  33 echo "base-64 number = $b64"             # 4031

  34 # This notation only works for a limited range (2 - 64) of ASCII characters  35 # 10 digits + 26 lowercase characters + 26 uppercase characters + @ + _

  36

  37

  38 echo

  39

  40 echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))

  41                                          # 1295 170 44822 3375

英语疑难: evaluates

A number with an embedded # evaluates as BASE#NUMBER (with range and notational restrictions).