分类 观点 下的文章

Beginnings: the project began life as an Xbox video player

早期:项目一开始是运行在Xbox上的视频播放器。

一个在Linux平台(以及其他各种平台)上最受欢迎的开源媒体中心软件将启用新名字。

XBMC将不再使用;在项目的下一个重要发布版(第14版)中,将以‘Kodi’的名字出现。

这个社区项目建立于2002年,用于在Xbox游戏机上播放数字媒体内容。总的来说,在那之后项目一直使用从Xbox衍生出来的名字。早期版本被命名为‘Xbox媒体播放器’,然后改成‘Xbox媒体中心’以展示新增的功能。在移植到微软游戏机之外的平台后,于2008年确定了首字母缩写‘XBMC’的名称。

之前,在这个网站上‘XBMC’出现了一遍又一遍。

为什么要换名字?为什么是现在?‘Kodi’到底有没有什么特殊含义?

‘这个软件仅仅勉强能运行在第一代Xbox上...’

这个软件仅仅勉强能运行在第一代Xbox上,那是因为许多聪明的开发人员仍然在那个平台上开发,它不能在Xbox 360或者Xbox One上运行。”项目负责人Nathan Betzen在XBMC博客上这样解释。

如今这个软件已经拥有远远超过以往的功能,包括针对不同市场的插件,游戏功能以及流媒体支持,这已经不能用‘一个简单的媒体中心’来包含所有的一切了。

因为这个原因,Betzen这样总结,“XB”和“MC”就已经没有有太大意义。

对于XBMC信徒也无可厚非,名字改动也解决了许多长期存在的法律风险。“我们从来都没有真正在法律意义上拥有过项目名字的使用权...”Betzen说,并且补充道,“XBMC基金会成立于2009年,旨在更好地协助和管理软件开发,一直在面临拥有相似商标的‘其他公司的潜在法律威胁’的情况下运作”。

于是乎,Kodi

The (temporary) new logo

新标志(临时)

即将发布的XBMC 14版本中,项目将正式过渡采用新名字‘Kodi’。除了听起来特别酷以外,这个名字貌似没有什么特殊含义。

变更不是一件容易的事情,对于XMBC/Kodi开发人员来说,还有大量的手工活要做:代码必须要整体调整使用新名字,这需要在支持的所有平台进行测试和双重确认。网站,协议以及界面图片也都需要调整,还有email地址,开发者账号,以及更多的细节。

“但是”,Betzen这样总结,“我们相信在你的支持以及整个社区的支持下,Kodi,这个我们都热爱的媒体中心或娱乐平台或是不管你叫做什么,将会比以往更加强大。”

非常正确。关于这次代号变更的更深层意义,你可以去官方网站溜达一下,链接在下边。

想尝试一下这个娱乐中心的最新稳定版的话,你得把官方的项目PPA添加到自己的软件源中。


via: http://www.omgubuntu.co.uk/2014/08/xbmc-renamed-lodi-starting-version-14

作者:Joey-Elijah Sneddon 译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本文讨论Linux桌面一些最优秀浏览器的优缺点,讨论对象包括Firefox,Chrome和其它浏览器。

选择一款最棒的Linux浏览器来满足你所需仅费些许功夫:Linux桌面网页浏览器和在其它流行的桌面上一样已经发展了多年,随着它们的发展,其优点和缺点都被慢慢发现。优缺点涉及从新功能到被破坏的扩展程序等各方面。本文中,我将在迷茫之中充当你的向导来帮助你发现适合你的最棒的Linux浏览器。

Firefox

Firefox成为一款Linux用户友好的浏览器已经很长时间了。 它在32位和64位的Linux上都可用,同时Firefox提供丰富的扩展程序可供选择。它是一款装载快速,易于使用的浏览器,在Linux用户中很流行。

优点: 如果Firefox没有被预装在某个Linux发行版的话,它也能很方便地从大多数常见Linux软件仓库中安装。上千种供选择的扩展程序可以让你的firefox极富个性化。几乎能够合适地渲染所有的 网页(包括政府网站和银行网站)。

另外很重要的一点:Firefox尊重你的隐私。Firefox有一项直白的隐私政策,和谷歌可不是一回事。因此,大多数用户能放心地让Firefox查看他们的日常浏览记录,然而,其他的某些浏览器可能会对用户的隐私有一些受利益驱使的兴趣。Firefox也非常适用于web开发者,这得感谢內嵌入Firefox的元素检查工具。

缺点: 不久之前,我发现Firefox的频繁更新会破坏我的扩展程序。这就意味着每次在我更新Firefox前得检查我最喜欢的一些扩展程序是否与新的Firefox兼容。

老实说,这让我重新考虑该把谁作为我的默认上网浏览器。为了做到合理,Mozilla在每次更新Firefox时都会向扩展程序开发者发出邮件通知。在这些邮件中,开发者会被告知有哪些改动以及怎样做来使一切运动流畅。

Chrome/Chromium

– Google升级它的浏览器为Chrome,然而自从Chromium被作为Chrome的开发基础后我就倾向于把Chromium和Chrome视为一类。不像Firefox,Chrome/Chromium进入Linux比较晚,直到Chrome被大多数人意识到是最快的浏览器后Linux使用者才觉得它值得一试。

优点: 即使是在今天,Chrome也是超快的。虽然最近很多浏览器的升级使它有了竞争对手,但在速度方面Chrome/Chrommium还从未输过。Chrome/Chromium支持的扩展程序数量丰富甚至质量更好,而且升级Chrome/Chromium对它的扩展程序并没有影响。这就意味着,不像Firefox,我不需要去处理扩展程序的不兼容性。和Firefox一样,Chrome/Chromium也有内嵌入浏览器的元素检查工具。和其它浏览器一起试验同步功能后,只有Chrome/Chromium 证明了它是安全可靠的。在我看来,Chrome/Chromium的同步功能毫无疑问是众多浏览器中最好的。

缺点: Chrome/Chromium有时候不能正确地渲染网页。有这样一些很少见的情形,一些网站比如Ebay不能被正确地渲染。举个例子,假如我在新建一个Ebay提交,有时候会缺少某些网页按钮。我还发现有时候当一个打开的标签页正在执行大型脚本时Chrome/Chromium会完全卡住。比如Google Plus 和 Facebook这样的网站就是最常见的例子。

Qupzilla

– 说到轻量级浏览器时,我认为Qupzilla是最棒的。基于webkit,它能在很小的资源占用下提供相当好的网页渲染支持。

优点: 如果你需要一款现代化的能正确渲染网页,并大体上能提供可靠的网络浏览体验的浏览器,那么对于轻量的桌面环境来说,Qupzilla是你的理想选择。它相当轻巧,能够在老计算机上非常稳定地运行。Qupzilla预装了Access keys 和GreaseMonkey插件(但没有被启用)。

同Firefox和Chrome/Chromium一样,Qupzilla也提供元素检查工具。最后,由于Qupzilla预装了Adblock插件,这就无疑使得它成为我心中的轻量级浏览器冠军。

缺点: HTML5 “视频”标签在Qupzilla上好像无法可靠地运行。而且,为了观看Flash视频,你得进入首选项并且在Webkit插件区域的扩展程序中钩去Click to Flash选项, 在HTML5 “视频”标签还是完全损坏的情况下,这个未经深思熟虑的设计实质上使得Flash无法直接播放。

Midori

– 我喜欢把Midori叫做轻量级的Chrome。和Goolge的浏览器一样,Midori通过它的“汉堡式”菜单给用户提供极简风格的体验,汉堡式菜单相当棒因为它占用的浏览器空间更少。在没有其它浏览器信条的情况下你不仅能获得稳定的上网体验,而且Midori也是相当快速。

优点: Midori快速,轻量,接近于开箱即用。它能够正确地渲染网页而且能够很好地浏览像YOUTUBE一样的网站。我认为Midori最棒的地方就是内嵌入浏览器的浏览器设置功能和网页应用快捷方式。举个例子,你可以很简单地在你的桌面上建立一个Gmail或Facebook的快捷方式。你也可以创建另外的浏览器设置,而不用新建立一个Linux用户帐号。

缺点: 虽然也提到过Midori的用户扩展程序,但可用的扩展程序并不出色。另外,用户得费些许功夫来习惯Midora的布局。 比如它给浏览过的网站还弄个垃圾桶-有没有搞错?

Opera

Opera长时间是被误解的浏览器之一。很早以前,Opera浏览器在所有Linux社区的反对下提供了Linux平台下的支持。不过后来还好,Opera成为了服务Linux用户的一个快速,和谐的浏览器,它也有很丰富的设置选项。

优点: 快速,用户自定性选项丰富。你可以在浏览器中发送和接收从RSS 订阅到电子邮件等等,Opera 可以让你很方便得获取炫丽的浏览器主题。Opera提供一个丰富的拓展仓库来供你选择扩展程序。我们不仅能从Opera阅读RSS 订阅和电子邮件,我们还能使用Opera的扩展套件功来能重温使用Mozilla Suite的日子。也许最重要的是,Opera Turbo -能极大提高你的上网速度,它通过对浏览内容的选择性压缩来给用户提供一个更快的上网体验。

缺点: 首次运行配置很多服务会很麻烦。Opera Turbo对你的上网体验有些许影响——比如YouTube,可能无法显示视频的缩略图。Opera提供如此之多的设置选项可能令业余使用者手足无措。。最后一点,Opera是闭源软件,作为桌面浏览器它不是很好地被认可。大多数爱好者仅把它当作一款手机浏览器。

哪款浏览器适合你?

有这么多棒极了的选择,很难说哪个适合你。对我来说,由于我每天工作需要一些特定扩展程序,所以我很依赖于Firefox和Chromium。对于一些低端机子或是上网本,我的建议是先试试Midori,如果不合适的话,再回头看看Qupzilla。

那么Linux上的其它浏览器怎么样呢?比如Epiphany或是Konqueror?像这样的浏览器也很棒,但是我对我上面所提到的浏览器印象深刻。上面所列举的都是我经常使用的浏览器,我觉得它们有些地方很出色并且我很开心地向朋友和家人都推荐它们。

介绍完了以上几款,请您在下面的评论区域中和我们分享您喜爱的浏览器,这样其他人也许可以从您喜爱的浏览方式中得到启发。

via: http://www.datamation.com/open-source/best-linux-browsers-1.html

原文作者:Matt Hartley

译者:Love-xuan 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

对于一些产业来讲,在开源的Linux发行版上运行专属(proprietary)软件并不是个例,--相反这很常见。例如,在华尔街,“华尔街上百分之九十九的应用依赖于专属软件。在那些运行在Linux上而有专属许可证的产品中,Oracle是我们非常喜欢的一款”, FSMLabs 的总裁 Victor Yodaiken这样说。

迁移到Linux平台并不是一个非此即彼的提议。linux作为一个灵活开放的计算平台为用户在软件选择上提供了更多的选项。

第一个方法是Linux的桌面环境,个人计算用户,小型办公室和企业都可以从众多的企业级Linux发行版中选择。在Windows和被限定在其昂贵硬件的基于unix的苹果OS X之外,Linux桌面系统为用户提供了另外一种零成本或者低成本的选择。

另一个迁移的办法是,让员工放弃Linux桌面办公,取而代之,企业可以在Linux服务器上运行后台办公系统。在网络应用和云计算领域遍布Linux的足迹,Linux服务器能在各种企业设定中寻找到自己的位置。

第三个方法是运行一个完整的Linux商店,常用的办公计算、网上浏览、图片编辑工作软件都存放在开源的软件包中。开源的数据库程序连接着后台的软件和服务器,而且Linux不需要特殊的硬件和多余的花销。

培训员工使用Linux桌面应用仅需要很少的投入。这要感谢职员们对跨平台软件的熟悉,例如LibreOffice 和 Open Office, 当然还有 google Chrome和 Firefox浏览器。先前的办公交流工具真的面临着威胁。

Linux很灵活。一种新的趋势是编写第三方的特定软件来满足自己的商业需求,商业软件公司可以重新编译打包那些必备的windows或者其他平台的软件。他们也可以结合开源的组件用他们自己特定的代码来编写特定需求的linux应用程序。

Dayan Jeremiah,Icewarp Pacific的CEO告诉linuxinsider:“我相信这将是一个新的趋势,企业正在使用可以运行在Linux系统上的第三方软件。让企业走向定制化软件的一个因素就是购买微软授权的经济负担太重。”

Linux 上运行专属软件

很多公司转向其他操作系统面临的问题就是软件和应用程序的兼容性问题,比如转向Linux,那么这家企业必须保证它用的软件必须是兼容Linux操作系统的,jeremiah补充道。

Linux操作系统有着数量巨大的软件,它们运行在数量众多的linux发行版和桌面环境当中。考虑到行业的特殊性,广大的开源团体或许并没有提供替代一个特定计算任务的替代品。这样的情况下,就不得不花费精力寻找第三方软件开发者的帮助。

“通过第三方厂商帮助来保证兼容性的问题,比如,我们可以混合和匹配各种软件组件在一起,以便让一个应用程序可以运行在Linux上。”jeremiah这样说。

旧貌换新颜

越来越多的专属软件公司,比如Icewarp,开发特定的软件来满足企业特定的业务需求,他们将许多开源组件混合在一起使用。

相比在微软框架下,这样不仅节约了授权费用,也节省了开发代码的费用。

“我们可以使用现成的软件组件为Linux构建完整的软件解决方案,这个方案非常节省,高效而且稳定。”jeremiah补充道。

Icewarp开发的特定软件并不是免费的开源项目,并不提供免费版本,需要订购并支付费用,而且售后支持也是收费的。

代码移植的混乱

Lucera的CEO Jacob Loveless提到,把一个来自其它平台的软件变成Linux兼容的,一个很大的障碍就是Linux的多样性。Linux操作系统有一个通用的内核,但是不同的发行版有很多不同的特点。

“当软件公司不得不在多个Linux系统中交叉编译时,问题进一步加深。”除了微软的Exchange数据库之外(LCTT译注:此处疑为笔误,可能是“MS SQL Server”),大部分数据库都在linux上运行的很好,MySQL和PostSQL是其中非常出名的两个开源软件(LCTT译注:此处PostSQL应该是Postgresql)。”

在软件移植到Linux时的最大挑战,是需要重新编译代码,通常你必须要完成一些平台特定的修改才能让它工作,他说。

比如,你有特定的基于.Net的代码或者其他的针对Windows的语言代码,Linux上开源的编译器并不总是兼容,所以你有很多的软件工作必须重做,loveless解释说。

另外一个例子就是数据库,你往往不得不改用其他的数据库或者不同的网页服务器。

“这确实需要一些工作”loveless说道。

多但不足够

另外一个转向Linux的兼容性问题就是公司需要的开源软件类型。

“对于公司特定的计算需求开源软件方案并不完善”ICeWarp的Jeremiah补充说“但是,通常对于Linux来说都是足够的,开源团体无法做到的特定的应用程序可以由第三方来实现。”

比如说,IceWarp最近完成的一个特定的Linux兼容的应用程序就不需要采购额外的硬件也没产生多余的授权费用。

这个特定的软件包含一个负载均衡的集群,一个运行数据库的集群,另外一个是IP服务器的集群。所有的都运行在RHEL或者CentOS linux发行版当中。

跟钱走!

在一些情况下,有钱才有Linux操作系统的应用,有时候Linux服务器在一个领域很流行,又有些时候只是一个特定的Linux桌面应用程序,有时候两者都有。

举个例子,例如在华尔街,在金融市场中时间同步是关键。金融网络依靠分布式网络,用户必须在截止时间内完成交易。其它的应用需要在交易前进行精确的计时。FSMLabs 的总裁 Victor Yodaiken 说,这些功能需要精确的时间同步控制。

当FSMLabs开始开发时间同步软件时,Yodaiken觉得他们只需要开发一个Windows版本。

然而,事实证明每一个在使用自动交易或者高频交易的人,甚至以高精度采集数据的人,都运行的是Linux系统,他告诉LinuxInsider。

惜时如金

FSMLabs在Linux上运行他们的专属代码,Linux上的互联网时间协议(NTP)并不适用于同步时间在纳秒级别的应用,比如那些追踪股票变动,或者交易需求。 windows的不足有另一个原因。

Yodaiken说道:“(在这方面,)Linux比Windows流行是因为windows没有一个标准的API可以让你在毫秒级之下获取时间,所以Window并不是真的都好,你必须得有特定的API才行。而在Linux下。你不需要在你的应用程序上费力了。”

金融市场是第一个拥抱Linux的,很多早期的系统管理员来自20世纪80年代的贝尔实验室,因此这是一个很成熟的市场,他补充到。

满足需求

在某些领域,在开源的Linux发行版上运行有专利的软件并不意外,这是很常见的。

“华尔街99%的应用都运行在有专利的产品上。在我们在Linux上运行的有专属许可证的产品中,我们很喜欢Oracle。”FSMLab 的 Yodaiken说。

一些使用Linux的市场需要更多特定的软件,现有的开源软件并不能满足他们,这就是为什么软件开发者们为企业Linux应用提供了商业的解决方案。他补充道。

“这很平常,开源软件很适合大的市场,这就是为什么他有广泛而且通用的需求,不是很多人需要绝对的微秒级的时间,而且如果没有市场就会发出信号。”他指出。

Linux纯粹主义是没有意义的

在Linux上运行完全免费开源的软件的观念是欠缺的,有时候你要运行专属软件。对于任何特定的行业都是这样。

当一个专业的计算不需要进入广泛市场时,第三方的软件开发者可以提供特定的,商业的或者闭源的软件解决方案。由于商业需求不断进入Linux系统,绝对的开源将成为过去的事情。

“在Linux上拥有商业软件是相当普遍的”,Yodaiken说,“商人都不是纯粹主义者,他们只想解决问题。”

Jack M.Genmain从Apple II和PC时代就开始报道电脑科技,他还有原始的IBM PC-Jr和运行DOS的机器。他留着共享软件和开源软件的linux桌面。他运行着好几种版本的Windows和Linux,经常不能决定是用他的tablet还是netbook还是android智能机,而不是用他的桌面电脑或者笔记本。你可以在google+上联系他。


via: http://www.linuxinsider.com/story/80555.html

作者:Jack M. Germain 译者:jiajia9linuxer 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在上周,我们对 KVM 和 Xen 近几年里在性能上的改进进行了一些有趣的探讨后,我打算自己做一些这方面的小研究。我能找到的最新的资料,是来自2013年 Phoronix Haswell 性能评测上的基准测试。当然,还有其它一些2011年的评测,不过由于 Xen 被收录进 Kernel 3.0,它们都已被热烈地讨论过。

2011年的测试提供了许多很好的基准报表,在三年后的现在,我尽最大努力把它们列出的属性重新测试一遍。但我删减了其中两三个基准测试,原因是它们在未经特定优化的配置后跑出来的数据不是很好,或者它们需要跑很长时间才能得到结果。

测试环境

测试环境由两台一模一样的超微服务器组成,分别都配备一颗Intel 至强 E3-1220(4核,3.10GHz),24G 金士顿 DDR3 内存,4块西数 RE-3 160G 磁盘(组成 RAID10 阵列)。另外 BIOS 也是一模一样。

所有测试项目(即实体机和虚拟机)都在 Fedora 20 (开 SELinux)上进行,并且测试过程中几乎没有运行的不相关的服务。这里列一下相关服务的版本:

  • Kernel: 3.14.8
  • For KVM: qemu-kvm 1.6.2
  • For Xen: xen 4.3.2

根文件系统都是使用默认配置的 XFS。虚拟机使用 virt-manager 来创建(virt-mamager 也使用默认配置)。虚拟磁盘使用 raw 镜像,容量为 8GB,虚拟4颗 CPU。Xen 虚拟机使用 PVHVM 建立虚拟磁盘。

附加说明

也许有人会考虑到 Fedora 是红帽公司所有,红帽一直在维护 KVM,而 Xen 则自从在2009年红帽重新选择 KVM 作为虚拟化产品后,再没得到这个公司的重要改进。我将这个因素排除在了测试所考虑的范围之外,不过仍然可以在心里稍微注意一下。

并且,资源竞争产生的影响也有被严格控制并最小化。在大多数虚拟服务器上,你可以跑多个虚拟机,而这些虚拟机会争用 CPU 时间片、磁盘 IO、网络带宽等等资源。在本测试中也不考虑这些因素。一台虚拟机抢到资源少,性能就差,而另一台抢得多,性能就好(LCTT译注:它们的性能总和,就可 以大致当作是 KVM 或 Xen 的性能了)。

本测试运行在 Intel 的 CPU 上。如果使用的是 AMD 或 ARM,可能有些数据会不一样。

结果

本测试使用裸机作为虚拟服务测试的基准设备。在不跑虚拟机的情况下,两台裸机的性能偏差不会大于0.51%

在几乎所有测试中,KVM 的性能相比宿主机而言下降了1.5%以内,只有两项测试例外。第一个是 7-zip 压缩,比宿主机慢了 2.79%。第二个就奇怪了,我们搭了一个邮件服务器,用 PostMark 测试其性能,结果表明 KVM 竟比宿主机快了4.11%。然后我在两台服务器中重新跑了几遍 PostMark 测试,结果性能差异基本不变,浮动都在最初测试结果的1%以内。由于我对 virtio 的内部机制没有很深的理解,我只能在以后再对这个怪现象进行进一步了解。

Xen 的性能相对宿主机而言差异就比较大了。有3项测试性能下降在2.5%以内,剩下的性能下降率都是 KVM 的2~4倍。PostMark 测试的性能比 KVM 慢了14.41%,这结果令我大吃一惊。重新跑了下测试,性能差还是几乎不变,浮动都在最初结果的2%以内。KVM 表现最好的 CPU 测试:MAFFT 对齐测试,是 Xen 表现倒数第二差的。

现在奉上一个简短得总结表:

Best ValueBare MetalKVMXen
C-Raylower35.3535.6636.13
POV-Raylower230.02232.44235.89
Smallptlower160162167.5
John the Ripper (Blowfish)higher30262991.52856
John the Ripper (DES)higher7374833.57271833.56911167
John the Ripper (MD5)higher4954848899.546653.5
OpenSSLhigher397.68393.95388.25
7-Ziphigher12467.512129.511879
Timed MAFFT Alignmentlower7.787.7958.42
CLOMPhigher3.33.2853.125
PostMarkhigher366738243205

如果需要完整数据,请查看Goole Docs 电子表格

结论

基于上面的测试环境,KVM 的性能损耗几乎都在2%以内,Xen 则在十多项测试中有3项损耗在2.5%以内,而其他几项损耗都在5~7%之间。虽然 KVM 在 PostMark 测试中性能表现优异,但这是众多测试中仅有的一项 I/O 测试,如果想证明 KVM 确实在 I/O 处理方面很强悍,就需要更多测试。

对我来说,我想要深入了解一下 KVM 和 Xen 在 I/O 方面的处理,以及它们之间为什么会有这么大的差别。我也许还会跑一些有竞争的测试,来看看虚拟机在有压力的条件下是否真的能比宿主机表现得更出色。

我鼓励读者通过使用Phoronix 测试套件来进行一些基准测试,你们可以找到一些能模仿你们工作环境的用例。如果你的工作环境是低 CPU 高 I/O,你可以找找套件里面的 I/O 压力测试。另一方面,如果你的工作是音频、视频转码,你可以试试套件里面的 x264 或 mp3 测试。

更新:Chris Behrens 指出, 我忘了提到 Xen 虚拟机类型了。这里补充下,我使用的是 PVHVM 模型(LCTT译注:目前支持的模型包括 PV、HVM 和 PVHVM),因为在 Xen 4.3 中这个选拥有最好的性能。另外需要注意的是在 Xen 4.4 中可以使用 PVH,但是在 Fedora 20 中还没有使用 Xen 4.4。


via: http://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/

译者:bazz2 校对:ReiNoir

本文由 LCTT 原创翻译,Linux中国 荣誉推出

作者:じòぴé→尐俽 , PHILO (@看见微软我就跑), 服部半藏(@服部半藏ly

大神们凭借他们的远见卓识和不懈努力,创造了广袤的自由世界,我们希望提供一张经过验证的地图,让新接触自由世界的人可以免于无谓的迷茫,又不至于过于详细而失去探索的乐趣。文中所列技能可能需要点亮前置技能才可学习,我们会尽可能的指出,另外,本文后出现的技能可能依赖前面的技能。

我们竭力使本文完善,如果有需要修改的地方,请提交补丁,我们会尽快合并。作者们怀着慢慢的善意,写下这篇文章,并不代表他们自信自己无所不知、对未来的每一项预见都是正确的,我们希望你不迷信本文的任何一个字,包括华丽的分割线。

当然,如果您再学习的路上感觉比较孤单,也可以加入到我们这里加入我们共同探讨,共同进步。提出意见,改良文档。群:55958311

计算机小白

本段主要讲解Ubuntu基本操作和计算机相关的基本知识,看完之后应该满足日常使用,如上网、听音乐等。

你好,小白,Ubuntu适用群体

尽管有这样或者那样不实的传闻,说Ubuntu如何简单,Linux如何高端,开源精神如何伟大,软件的自由对人类的自由如何重要。但是作为用户,更应该关心软件是否丰富,日常使用的主要还是QQ、Office、中文输入法、LOL等工具,这些在Ubuntu之下都没有良好的解决方案。所以,目前Ubuntu只适用于研究人员和程序员。

你好,小白,硬件

土豪君,如果你想买一台新的笔记本电脑,建议选择配置:

  • 集成显卡就可以,因为linux对独立显卡的支持还不够好,即使未来有所改善也用不到,原因是你没有游戏可以玩
  • 尽量使用SSD,机械硬盘也可以,但是SSD比较快,能够提高工作效率,这里就不为三爽840 pro打广告了。

如果你已经有一台电脑,希望你有

  • 主流的配置,再也不要问我你有一台32MB内存的电脑,该怎么安装Linux据说Linux很省资源之类的了,手机都2G内存了

你好,小白,CPU位数

CPU根据型号不同,通常分为32位和64位,2005年之后的CPU一般都是支持64位的,64位的CPU可以管理4G以上的内存。如果你的电脑内存不足4G,建议选择32位版本的操作系统,否则应该使用64位的。

关于PAE

虽然4g以上的Linux系统可以使用PAE内核来实现更高的内存容量兼容,但是性能是关键,如果您运行的关键程序是32bit的并且必须在32bit平台上运行这种情况下建议选择,否则可以通过安装32libs来实现程序的运行。

你好,小白,发行版选择

Linux是操作系统的内核,搭配不同的软件包、桌面环境,才可以制作成为现代意义的操作系统。我们推荐最新的Ubuntu桌面版,理由如下

  1. Ubuntu桌面版提供更新、更全的软件仓库,无论是开发还是科研,这样可以节约大量的时间
  2. Ubuntu提供软件商店,并且有很多合作伙伴,你可以用上官方版本的WPS、Steam等
  3. Ubuntu默认的桌面环境Unity对笔记本很友好,小小的笔记本屏幕可以展示更多的东西
  4. Ubuntu14.04版本非常稳定
  5. Ubuntu桌面版用户量非常大,搞不定的问题可以方便的在Google、Stackoverflow、Ubuntu中文论坛等地方找到答案,注意,百度的答案鱼龙混杂,大多数是坑爹的

如果你是服务器用户,我们推荐最新的Ubuntu服务器版,理由如下

  1. Ubuntu服务器市场占有率世界第一,有搞不定的问题可以Google到
  2. 提供众多的软件包,可以节约大量的编译时间
  3. 对日益普及的云服务支持非常好,无论是Hadoop还是Stackoverflow,当然还有Docker
  4. 非常稳定

你好,小白,操作系统安装

操作系统的安装并不简单,在电脑城价值50到100人民币之间,如果你只有一台电脑,希望安装双系统,就更困难一点。

我们不推荐用户靠自己摸索如何安装操作系统,这是一项过时非常快的技术,不值得投入大量的时间。我们推荐的安装方式有

  • 找师兄师姐或者本地的社区提供帮助,如果你长的足够漂亮,这样肯定没有问题,如果不是,请继续往下看
  • 使用wubi安装,但是这种方式有些过时,不推荐使用
  • 使用官方提供的U盘制作工具,制作U盘启动盘安装

我们不推荐的安装方式有

  • easyBCD,我们群经常会有很多小白看到百度贴吧的这一神器,然后安装失败
  • 硬盘安装,过程非常复杂,买个U盘好吗
  • 虚拟机,由于Ubuntu桌面使用了硬件加速,在虚拟机运行的效果并不好,是的,你的电脑20核、64G内存分给虚拟机一半都没用,如果你坚持,我们推荐VMware,开源免费的Virtual Box效果更差一些

PS:在另外一种情况下虚拟机是被推荐的,并且推荐Virtual Box。

非生产环境服务器 没有安装图形界面 学习比较复杂的环境配置 学习硬盘管理

你好,小白,命令行

截止到这里我们假设你已经安装好了操作系统,并顺利进入了界面,如果没有,请认真审视操作系统安装中建议找别人帮忙那一条。

我们不推荐命令行,除非你对操作系统很熟悉并且知道你在干嘛。尤其不推荐从百度随便贴几行命令,然后执行管理员权限,多数情况下,你会毁掉操作系统。

你好,小白,网络连接

截止到这里我们假设你已经安装好了操作系统,并且顺利的进入了桌面。(没错,这是前置依赖的声明)接下来让我们连上互联网吧。

  • 已经配置好路由器或者无线路由器,并且使用DHCP服务(就是你的手机、windows系统不需要设置什么东西,连上就能上的那种),插上网线或者点右上角的网络图标选择无线热点,就可以连上互联网了
  • 直接连猫需要DSL拨号上网,你需要点击右上角网络图标,点编辑,在弹出的页面中添加DSL连接,顺便补一句,如果你是家庭用户,并且你周围没有Ubuntu用户,请重新审视Ubuntu适用群体那一段
  • 锐捷等各种客户端再MenTOHust项目中提供了支持。

FAQ(我们经常回答的问题)

  • 有线网络环境,请再三确认网线已经插上并且闪呀闪呀的
  • 无线网络环境,不要紧张,请再三确认自己已经打开无线网卡(就是你没有在windows下面把无线网卡关了或者把无线网卡的硬件开关关了)。如果确定已经打开,请连上有线网,继续往下看到驱动那一节。

你好,小白,下载源

截止到这里我们假设你已经连上了互联网。

软件源是一个放着各种各样软件的服务器,我们需要连上它,从上面下载一个列表,列表里面记载着它上面有哪些软件。现在,点击左侧面板的软件中心的图标。打开编辑菜单,找到最下面的软件源菜单,打开,在弹出的页面中选择一个国内的源,并且把其它软件列的勾全部去掉(因为我们在天朝,有些服务器连不上)。该过程可能需要输入密码,原因继续往下看。

之后,软件中心就会多出一个Progress的图标,表示正在下载软件列表,该过程中如果发现错误,可以尝试在终端(点桌面左上角那个写轮眼图标,在弹出的框里搜索,跟Mac的Finder很相似)执行

sudo apt-get update

查看错误信息。

FAQ:

  • Hashxxx mismatch,通常使因为你的网络提供商缓存了过期的信息,常见于小的提供商如长城宽带等,没有好的解决方案。

你好,小白,语言包

截止到这里我们假设你已经设置了软件源并且下载了软件列表。接下来,会弹出提示,让你安装语言包。你也可以在设置,语言里面安装。

你好,小白,系统更新

在下载软件列表之后还会提示你安装更新,实际上,Ubuntu会定期的从你配置的软件源下载软件列表,然后跟本地版本对比,看是否需要更新。你可以执行

sudo apt-get upgrade

手动完成

你好,小白,驱动

截止到这里我们假设你已经安装完系统更新,如果你可以顺利的连上无线网络,并且没有独立显卡,可以跳过本段。

打开软件中心,找到编辑菜单,软件源选项,然后打开,在弹出的页面中找到附加驱动,选择经过验证的(后面会标明tested)驱动,安装。

FAQ:

  • 手动下载的硬件提供商提供的驱动,黑屏了怎么办?不知道哎

你好,小白,输入法

截止到这里我们假设你已经开机并且安装了语言包。

推荐的输入法有两种:

  • 系统自带的,点击桌面右上角的键盘图标,添加Pinyin输入法
  • 搜狗拼音输入法,安装之后,同样添加sogou pinyin

你好,小白,软件安装

截至到这里我们假设你已经连上了互联网并下载了软件列表。推荐的软件方式有

  • 软件中心,里面的软件多数是经过验证的,还有一个评分可供参考

其它的安装方式:

  • 下载deb包安装,下载对应版本(32或者64)位的,请注意这种安装方式可能破坏系统的依赖关系
  • sh安装文件安装,不推荐
  • 压缩包直接拷贝到指定目录,不推荐,确实需要请继续往后看
  • 编译安装,极度不推荐,确实需要请继续往后看
参考前提:您是新手

你好,小白,文本编辑器

截止到这里我们假设你已经安装了输入法。我们推荐的文本编辑器有

  • gedit(Text Editor),在桌面左上角搜索就可以看到,简单易用
  • sublime3,官方目前不支持中文输入,如果你是程序员,你肯定喜欢它。另外,它是收费软件,而且很贵
  • vim,在软件中心搜索vim即可安装,使用方式参考《a byte of vim》,该书对vim的讲解非常详细,后半部分可能有些过时。还可以参阅vim自带的手册,在终端输入

vimtutor

你好,小白,浏览器

我们推荐的浏览器有

  • chrome,内置flash播放器
  • firefox,系统自带,具有更好的扩展性,界面跟Ubuntu更搭

你好,小白,音乐播放器

我们推荐的音乐播放器有

  • Rhythmbox,系统自带,界面可能不符合windows用户的习惯
  • 豆瓣fm,有很多有有意思的频道

你好,小白,支付

目前可用的支付方式有

  • 支付宝,包括手机客户端的二维码支付和桌面版的插件,桌面版插件安装请继续往下看到sh文件安装

你好,小白,解压缩

ubuntu对常见的格式支持的非常好,双击即可打开压缩文件,如果缺乏对应的库系统会提示安装。

你好,小白,磁盘管理

推荐的磁盘管理工具有

  • gparted,在软件中心下载安装,谨慎使用

你好,小白,Office

推荐的Office工具有

  • WPS,下载deb包双击安装即可。
  • 自带的LibreOffice,勉强可用

你好,小白,图片处理

推荐的图片编辑工具

  • GIMP,从软件中心下载,具体的使用教程请参考Photoshop教程的视频,另外官方网站也提供了详细的说明。
  • InkScape 从软件中心下载,具体使用网上有很多教程,全矢量化处理,非常好用。

你好,小白,3D动画

推荐的3D制作工具

  • Blender,从软件中心下载

你好,小白,QQ

QQ长期不支持Linux,推荐使用

不太推荐的有:

FAQ:

  • QQ不好用怎么办?不知道。

你好,小白,wine

极度不建议。 原因:不稳定

你好,小白,且容老夫来补一刀吧

Ubuntu软件丰富(仅仅对开发者和研究人员而言)

进阶小白

本段包含一些进阶的操作,我想普通用户并不太需要这些。

你好,进阶小白,权限管理

Ubuntu默认的不是管理员权限,执行安装软件等操作时需要输入你的密码。

你好,进阶小白,新立得软件包管理

在软件中心有一个更强大的包管理工具,非常不建议小白使用,尤其是处女座。

你好,进阶小白,FTP上传下载

建议使用软件:

  • FileZilla,从软件中心下载。

你好,进阶小白,文件系统

百科详细解释 Linux介绍中的解释

你好,进阶小白,文件权限

我们认为对此最好的解释

你好,进阶小白,command

只需要看一眼常用命令就行了,百度一大把。

你好,进阶小白,make

主要分为automake的安装参考大神文档 另外最近还有一个cmake火起来了。参考大神文档

计算机相关书单

本段写给有志于讲编程作为全职工作或者工作中大量使用编程的人。不同语言之间没有明确的依赖关系,同一种语言书目之间有从易到难的关系。

得益于上个世界对语言的研究,人类发现不需要使用机器码(010101010001)编程,可以使用类似于自然语言的人造语言编写程序,然后经由计算机翻译成机器语言。根据不同的人爱好不同,语言经常被分为强类型、弱类型,解释型、编译型,对象导向的、过程导向的、函数导向的等等。这些语言相互影响,相互学习,每几年会有一个新的标准(比如C++99和C++11差异就非常大)。

我们建议你多学几种(这个就跟恋爱一样,只有初恋比较青涩,之后越来越顺,一马平川,虽然女孩子分为很多类型),一方面,在不同的场景你需要不同的女孩子,啊,不,计算机语言(比如操作系统用C写,网页交互用JavaScript)。另一方面,特定的计算机语言本身限定了你的表达方式,多了解它们的区别有利于打开思路。

很多编程的教材都类似于五步画马法,我们更希望提供适合自学的,没有各种各样的坑,不需要丰富的想象力脑补就可以学会的书单。

五部画马法

从上到下依次看,C

C语言经历了漫长的演化,现在的它已经不是以前的样子了,但是它仍然适合做你的第一或者第二任女友,啊,不对,计算机语言。所有C语言已经42岁了所以已经不是女神了的思想都是异端邪说。

我们推荐的书:

从上到下依次看,Python

Python简单易用,非常适合带来你的初吻,啊,不,跟计算机的第一次接触,但是有两个非常不一样的标准,python 2和python 3,鉴于本文写于2014年中旬,我们推荐python 3。

我们推荐的书:

我们不推荐的书:

从上到下依次看,算法

在有了基本的语法之后,我们仍然需要一种方式把基本的语法组织在一起解决实际问题,这时候你就需要算法了。

我们推荐的书:

  • 《编程之美》,标题过于夸张,实际上主要讲了一些很有意思的算法
  • 《数学之美》,没有标题的那么夸张,但是不妨花一个下午看一下。
  • 《算法导论》,非常厚,但是很值得花时间看完,虽然很多计算语言自带一套标准库实现了很多算法,但是对算法的掌握依然很重要。

我们不推荐的书:

从上到下依次看,设计模式

世界上本没有这种程序的写法,写多了也便有了这么多种设计模式。

  • 《 Head First Design Patterns》,head first系列最好的几本书之一,讲的很清楚,代码使用Java。
  • 《大话设计模式》,大话系列最好的几本书之一,编程语言使用C#,相对于上一本行文略显不通畅,但是所有的设计模式都讲全了。
  • 《设计模式》,代码使用C++和SmallTalk编写,微言大义,非常适合买一本放在书架上。

从上到下依次看,C++

本段假设你已经会基本的C语法(但是C和C++是两种不同的语言),C++的程序员很贵,因为它非常复杂,在看完以下书单之前,我们不推荐你在简历上写“精通C++”。

我们推荐的书:

从上到下依次看,Java

Java是一门用途广泛的语言,当然本次我们只针对java语言来说,没有针对web跟安卓来讲。

我们推荐的书:

我们不推荐的书:

从上到下依次看,Golang

Golang是google推出的服务器编程语言,对多线程支持非常好。

我们推荐的书(其实写的都不是特别好,只是目前可以找到的书非常少):

我们不推荐的书:

从上到下依次看,JavaScript

JavaScript是Html5钦定的脚本语言,在后端也有广泛的用途。

我们推荐的书:

  • 《JavaScript语言精粹》,它介绍了作者认为比较好用的JavaScript功能的一个子集合,表述方式可能并不易懂,但是讲的很不错。
  • 《JavaScript权威指南》,全面的Javascript语法书,很多地方讲的并不清楚,比如面向对象的部分。

我们不推荐的书:

从上到下依次看,git

git是一个强大的分布式版本管理工具,功能强大。

我们推荐的书:

从上到下依次看,操作系统

每天都有很多新手发问,我想深入学习一下Linux,需要看哪一方面的书,有人会推荐一本厚厚的命令手册,我更喜欢推荐操作系统的书。

我们推荐的书:

  • 《现代操作系统》,作者很牛气,该书不难但是相当的厚。而且看完之后会让人感觉脑洞大开

从上到下依次看,网络

我们推荐的书:

从上到下依次看,数据库

受作者的领域所限,推荐的数据库类型非常少,欢迎补充。

我们推荐的书:

从上到下依次看,硬件及汇编

我们推荐的书:

从上到下依次看,编译原理

编译原理虽然日常工作用不到,但是看完了可以知道计算机语言怎么变成机器语言的。

我们推荐的书:

从上到下依次看,项目管理

我们推荐的书:

不属于以上类别的书


当软件出现问题的时候,它应该以一种很容易引起注意的方式马上终止。这种“快速终止”的方式值得借鉴,我们会在这期专栏里谈谈这个重要的概念。

一开始,“快速终止”看上去是一种会影响可靠性的不好的实践——为什么一个系统在还可以继续运行的时候要崩溃(或者说终止)?对于这个,我们需要理解,快速终止是和Heisenbugs(对于不易复现bug的一种称呼)紧密联系在一起的。

考虑一下Bohrbugs(对于能够重现的bug的一种称呼),它们在一个给定输入的条件下总是会出现,比如,访问空指针。这类问题很容易测试、复现并修复。而如今,所有有经验的程序员应该都面对过这样的情形:导致崩溃的bug在重启软件后就不再出现了。不管花多少时间或努力去重现问题,那个bug就是跟我们捉迷藏。这种bug被称为Heisenbugs。

花在寻找、修复和测试Heisenbugs上的努力比起Bohrbugs来说,要高出一个数量级。一种避免Heisenbugs的策略是将它们转化为Bohrbugs。怎么做呢?预测可能导致Heisenbugs的因素,然后尝试将它们变成Bohrbugs。是的,这并不简单,而且也并不是一定可行,但是让我们来看一个能产生效果的特殊例子。

并发编程是Heisenbugs经常出现的一个典范。我们的例子就是一个Java里和并发相关的问题。在遍历一个Java集合的时候,一般要求只能通过Iterator的方法对集合进行操作,比如remove()方法。而在遍历期间,如果有另一个线程尝试修改底层集合(因为编程时留下的错误),那么底层集合就可能会被破坏(例如,导致不正确的状态)。

类似这种不正确的状态会导致不确定的错误——假如我们幸运的话(实际上,这很不幸!),程序可以继续执行而不会崩溃,但是却给出错误的结果。这种bug很难重现和修复,因为这一类的程序错误都是不确定的。换句话说,这是个Heisenbug。

幸运的是,Java Iterators会尝试侦测这种并发修改,并且当发现时,会抛出异常ConcurrentModificationException,而不是等到最后再出错——那样也是没有任何迹象的。换句话说,Java Iterators也遵从了“快速终止”的方法。

如果一个ConcurrentModificationException异常在正式版软件中发生了呢?根据在Javadoc里对这个异常的说明,它“只应该被用于侦测bug”。换句话说,ConcurrentModificationException只应该在开发阶段监听和修复,而不应该泄漏到正式代码中。

好吧,如果正式软件确实发生了这个异常,那它当然是软件中的bug,应当报告给开发者并修复。至少,我们能够知道曾经发生过一次针对底层数据结构的并发修改尝试,而这是软件出错的原因(而不是让软件产生错误的结果,或是以其他现象延后出错,这样就很难跟踪到根本原因)。

“防止崩溃”的途径就意味着开发健壮的代码。一个很好的编写容错代码的例子就是使用断言。很可惜的是,关于断言的使用有大量不必要的公开争论。其中主要的批评点是:它在开发版本中使用,而在发布版中却被关掉的。

不管怎么样,这个批评是错误的:从来没有说要用断言来替代应该放到发布版软件中的防御式检查代码。例如,断言不应该用来检查传递给函数的参数是否为空。相应的,应该用一个if语句来检查这个参数是否正确,否则的话抛出一个异常,或是提前返回,来适合上下文。然而,断言一般可以用于额外检查代码中所作出的假设,这些假设应该一直为真才正常。例如,用一个语句来检查在进行了入栈操作后,栈应该不是空的(例如,对“不变量”的检查)。

所以,快速终止,随时中断,那么你就走在开发更加健壮代码的道路上了。