2014年7月

想要挑起狂热Linux爱好者之间的激烈争辩吗?那就问问他们最喜欢的文本编辑器是什么吧。在开源社区中,选择一个用来写文本,或者更进一步,用来写代码的编辑器,比选择一个球队或者游戏控制器还要重要。但是任何一个Linux新手都不该为过多的建议和各种各样的煽动而感到焦虑不安,取而代之,先去试着熟悉熟悉一堆不同的文本编辑器吧。所以今天我将要给你建议一个简单主题的列表,里面的编辑器都可以在Linux下编辑文本。这个列表不包括那些成熟的只用来编程的IDE,也不包括那些专门进行LaTex排版的编辑器。如果你对后者感兴趣,我可以建议你去看看这里.

1. Vim & Emacs

让我们直接从这两个“大咖”开始。当有人在一个聊天室里问关于Linux下的编辑器时,会有一个人立马回答Vim,然后会有另外一个说Emacs。(LCTT译注:这就是V党和E党啊~)之所以会这样,理由很充分。这两个都是非常强大的编辑器,有很多的特性,很多插件,很强大的社区支持。如果你一点都不熟悉它们的话,要描述清楚它们强大的功能是有点困难。但是简单来讲,它们允许你在文本中快速移动,简单地做出大量的修改,记录宏以及你能想到基本上任何疯狂的编辑方式。这两个编辑器共同的缺点是,不可避免地花时间去学习。讲完这点之后,我不会陷入到哪一个更好的争论中去,但是我真的想建议每一个人至少学习这两者之一。

2. Sublime Text & Lime & Atom

一款叫做Sublime Text的文本编辑器在过去几年逐渐兴起。一些人可能会将它视为Vim或者Emacs的友好版,专为编程而设计的。事实上,它保持了一些与Vim和Emacs的相似特性。比如,批量编辑和函数跳转都会让人或多或少想起Emacs或者一个充满活力的Vim。然而,它保留了更多的可视性并且更加容易使用。同样,大量的插件吸引大家进行个性化定制。(LCTT译注:实际上,译者认为Sublime Text与其说是像Vim或Emacs,不如说更像是Mac上的编辑器神器textmate。另外,Sublime Text的发展最近已经陷入停滞了。)

Sublime Text唯一的“污点”是它的许可证:如果你只使用开源软件的话,你可以放弃它了。(LCTT译注:但是Sublime Text可以全功能一直试用下去,没有一点区别,只是如果你觉得应该支持的话,付费比较好,虽然挺贵。)为此,最近出现了一个雄心勃勃的克隆版 Lime 。这个软件正处在重度开发当中,但是它的理念是:跟Sublime Text相似的用户体验,但是带着开源的韵味。对于Lime,除了满满的期待没有更多要说的了。

距现在更近的,GitHub以开源形式发布了Atom,展开了与Sublime Text正式的竞争。Atom打包了所有你想要的文件跳转,代码片段使用等特性,提供一个完整特性的编辑器而不是简单的编辑框。使用HTML,CSS和集成Node.js环境,可以轻易地定制文本处理过程,这正是它的魅力所在。这其实已经要涉及到IDE的定义了,我们的列表最多会覆盖到这里。(LCTT译注:好吧,我觉得从Sublime Text转移出来的最佳出口就是Atom。)

3. Gedit & Kate & Mousepad & Leafpad

如果不谈这些超级厉害的神器,我们可以转向我认为的“桌面环境经典版”编辑器。这些编辑器感觉上更加的传统,有些也可以用插件进行强化,但是它们的重点是输入简单。如果你头脑里有一些想法想要在忘记之前赶快记下来(我必须怪罪那些视频游戏让我的注意力变得短暂)。你不需要学习Vim或者Sublime Text的快捷键。你只需要一些空白的地方进行输入。这类编辑器的好处是它们或多或少的和你的桌面环境集成在一起。在这一类编辑器中,Gnome 下的 Gedit 和 KDE下的 Kate 都很好的集成在桌面系统中,可以通过插件进行个性化定制。比如,更容易的进行LaTeX排版。MousepadLeafpad 更适合于轻量级的桌面,比如Xfce和LXDE。它们在某种程度上很像Windows的记事本。所以,如果你需要的是灵活和便捷,请选择它们。

4. Nano & Qute

另外一个流行的文本编辑器“大家族”是“无打扰编辑器”。如果你喜欢在后台持续地开着Facebook或者Twitter,或者每5分钟就收一次邮件,你就会知道把注意力集中在那篇明天要交的散文,或者这些还没编译通过的代码是多么困难的事。如果是这样,你需要一个编辑器,它可以占满整个屏幕空间,并且屏蔽掉所有的其它事情。

也许这类编辑器里面最不受欢迎的是Nano。如果你想屏蔽所有分心的事,关掉X server(LCTT译注:关掉桌面,只用文字终端界面,Nano就是工作在这种模式下。实际上这时nano就是接管了X Server的工作。)。这是最简单和直接的方式。事实上,《权力游戏(Game of Thrones)》的作者Geogge R. R. Martin最近就在一次采访中说他使用一个类似DOS Word的文本处理程序写他的小说。

如果你想要一款更顺眼一点的编辑器,你可以试试我的最爱:Qute。没有酷炫的特性,也许有一点LaTeX排版使它开起来更美观,但是重点其实是在它的界面的。它提供了一个舒适的导航和编辑体验。如果你对终端感觉不太舒服,Qute是个不错的选择。

5. LibreOffice & Calligra & Abiword

最后,办公套件也是文本编辑器。我不确定你能否轻松使用办公套件编程,但是它确实更适合纯文本编辑,也比LaTeX更容易学习。在这类编辑器中,LibreOfficeCalligra 不能避而不谈。这两个编辑器因为它们丰富的特性和响亮的名声成为这类编辑器中的巨兽。这两者我都喜欢,但是很多人明确的偏向于前者。如果你怀念微软的Word处理软件,你会有自己的选择。稍处下风的Abiword相对前面的两个是一个轻量级的选择。如果你的目的只是编辑一个文本文档,不关心电子表格或者数据库,Abiword的特性可以达到理想的效果。

简单总结一下,如果我仅有一条建议给你,那么就是选择你周围的人正在使用的编辑器。如果因为某些疯狂的理由,每一个你周围的人都用LibreOffice写C程序,或者用Sublime Text写小说,而你也要做同样的事,你应该跟随潮流。原因就是当你遇到一个问题需要帮助的时候,他们可以更容易的给你提供帮助。

你最喜欢的文本编辑器是什么?你都用它来做什么?请在评论中和我们分享吧。


via: http://xmodulo.com/2014/06/good-text-editor-linux.html

译者:love\_daisy\_love 校对:Caroline

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

事实上,我的硬盘上不存在那种不愿意被别人看到的东西,只存有一些猫咪的照片、一些记录着想写的书的想法的文本文件,或者是一些短篇故事的文本,也有一些写了一半的 NaNoWriMo 小说文件。简单的说,我的硬盘就没有加密的必要,因为没有什么可隐藏的。可问题是,我们错误的把“隐私的渴望”跟“要隐藏某东西”两概念混淆在一起。比如说我生活的美国,我们视隐私权利是理所当然的事,但不包括那些传统所认为的“某人的隐藏色情或炸弹”。隐私考虑的是一些平常的事情。

我居住在密歇根州。这儿的冬天很冷,我趋向于把温度设置在华氏 75 度左右。对您们来说这个温度可能高了,但在我的家里刚好合适。多亏我的家是属于私有的,我的邻居不可能知道我们保持了这么高的温度,否则一但他们看到冬天如此“浪费”能源的家庭,这些邻居心里会很不平衡的。事实上,本地条规中有一条明确指出任何超过华氏 60 度的就算是生态浪费。我并不想与这种僵老的条例较真,所以我仅仅想保守我们舒适的房子的秘密。我们并不想隐藏任何事情,但也并不是任何事情都要让外人知道。

很明显,我举的例子有点弱智,但我希望的是这能引起大家的思考。现代的 Linux 系统很容易的就可以对我们的数据进行加密,并且很可靠,所以为什么不好好利用利用呢?

加密原理?

我不会涉及太多关于加密原理的细节,但要明白最基本的原理,即使是最简单的实现,这是必须的。要加密和解密一个文件,需要两把“钥匙”。一把是私钥,正如名字所示,属于私有的。我宁愿把私钥看作是真实的钥匙——你想要多少就可造出多少,但这样做是不明智的。同样的,私钥你造的越多,某些不怀好意的人得到其中一把的机率就越大,他们就会闯入你的公寓(额,我的意思是指那些文件)。

公钥更像是锁的样子,只有你能(用你的私钥)打开此锁。这公钥任何人都可以得到,你可以将它张贴在网站上、把它放在你的 E-mail 中、甚至纹在你的背上。其它人想创建一个只有你能访问的文件,就可以使用此公钥来加密。

这种一对多(LCTT译注:指别人可以加密多个文件,而只有你的一个私钥才能解密)的情况也有个很酷的副作用。如果你用你的私钥来加密一些东西,任何人都可以用你提供的公钥来解密它们。这听起来很傻,但这种情景很有用。虽然加密的文件不能免于被窥视,但是它能保证此文件确实来自于你而没有被恶意改动过。用你的公钥能解密的文件仅仅只能是用你私钥加密过的。用这种方式,用私钥加密的文件即是数字“签名”文件。(LCTT译注:既然是任何人都可以用公钥解密,其实加密没有意义,相反,仅仅用你的私钥做一个签名指纹,别人只需要用你的公钥来验证该签名是否一致即可判断是否来自你。)

(LCTT译注:其实本文此处所述的加密解密、签名校验等原理不完全正确,和实际的非对称加密情形有所差异,不过比较容易理解和类比。)

通用加密步骤:

  1. 你有一个文件想要发送给苏茜 ,所以你得使用苏茜的公钥来加密,这样就只有 苏茜才能打开这个文件,但苏茜没有办法知道是谁给她发送的文件。因为任何一个人都可以用她的公钥来加密文件。
  2. 因此,你得把你的文件用苏茜的公钥和你的私钥都加密。苏茜将不得不解密两次,但她知道它是来自于你的文件。(LCTT译注:实际上应该是用你的私钥要做签名,生成一小段签名指纹,而不是对已经加密的文件再次加密。)
  3. 苏茜接收到此文件后会用能证明来自于你的公钥来解密第一层。(LCTT译注:校验签名,确认来自你的私钥的签名正确。)
  4. 然后用她的私钥来解密第二层的密码,这是唯一的能够将原始文件进行解密的钥匙了(因为你是用她的公钥来加密的)。

当然,这情景就是用来安全传输文件的加密手段。这也是加密你的文件(或者分区)相当常用及简单的方法。就让我们开始来对文件进行加密吧,因为大多数人都想加密他们的系统。

始于简

在深入更复杂的各种加密设置操作前,我们先做简单的对文件加密例子。能处理加密的应用程序有很多很多,事实上,对文件和系统进行加密的各种可用软件选择,很容易就会让我们变得焦头烂额。现在,我们就使用一款很基本的(但非常强大)命令行工具来对文件加密。 GPG (英文名:Gnu Privacy Guard)是一款对商业软件 PGP(英文名:Pretty Good Protection)的开源实现软件。它具有加密、签名及管理多个密钥等功能。用例子说明,让我们简单的加密一个文件吧。

我们假设你有一个名叫 secret\_manifesto.txt 的文件,它包含有关于生命、宇宙及一切事物的秘密。使用 GPG,你只需要一个密码就可以加密此文件。使用密码远比使用公钥和私钥对简单,因为它只是用你的密码加密。虽然这比较容易让你的文件遭受到破解(比如使用彩虹表或其他黑客工具暴力破解),但像它的名字中所宣称的:这是相当不错的保护。要加密你的文件,可以这样做:

# gpg -c secret_manifesto.txt
  Enter passphrase:
  Repeat passphrase:

一但完成,在相同的目录下就会多出个新的文件,它默认的名字是 secret\_manifesto.txt.gpg 。这是一个二进制文件,这意味着它真的比较小,但是要将其内容拷贝/粘贴到电子邮件(e-mail)或 即时消息(IM) 就不可能了(LCTT译注:当然你可以使用附件方式。)。要使其便于拷贝等操作,可以添加 -a 标志,这将创建一个只包含 ASCII 码文本的加密文件:

# gpg -a -c secret_manifesto.txt
  Enter passphrase:
  Repeat passphrase:
# ls -l
-rw-rw-r--  1 spowers spowers    6 Nov 23 1:26 secret_manifesto.txt
-rw-rw-r--  1 spowers spowers  174 Nov 23 1:27 secret_manifesto.txt.asc
-rw-rw-r--  1 spowers spowers   55 Nov 23 1:26 secret_manifesto.txt.gpg

注意到现在多了一个以 .asc 为扩展名的文件。它是个纯文本文件,从上面的代码段示例可以看到它比二进制的加密文件还大,当然比原文本文件就大的更多了。一但你把文件加密了,也确实想要对些信息保密,最明智的就是把原文本文件删除掉。(LCTT译注:千万记住密码啊,否则谁也帮不了你了——你得自己破解自己的密码啦:>)

要解密文件,你需要再一次使用 GPG 程序。不管是二进制的还是 ASCII 文件,使用相同的命令就可以解密。如下所示:

# gpg secret_manifesto.txt.asc
 gpg: CAST5 encrypted data
 Enter passphrase:
 gpg: encrypted with 1 passphrase
 File `secret_manifesto.txt' exists. Overwrite? (y/N)

注意到上面的例子中,我没有删除源文本文件,所以 GPG 给出了是否覆盖选项提示。一但操作完成,我的未加密的源文件又回来了。如果你仅仅只有一两个文件要保护,那基于命令行的 GPG 程序正是你所需的。但如果你想实现在系统上指定一个区域,任何保存到这区域的的文件都会自动加密的话,就有点复杂了。可这也并不是非常的困难,让我们用一个非常简单的示范例子来讲解吧。

加密 USB 驱动盘

如我前面提到的,要加密有很多可选的方式方法。加密磁盘分区最通用的一种方法是 LUKS(Linux Unified Key Setup) 系统。一个使用 LUKS 格式化分区的 USB 驱动盘可以被大多数系统自动识别到。实际上,如果你使用的是像 Ubuntu 桌面这样的桌面环境系统的话,加密 USB 驱动盘其实就是在格式化过程中简单的勾选上一个复选框而已。虽然这是加密 USB 盘最容易让人接受的方式,但我还是想演示如何在命令行下进行加密,因为这种方式可以让你明白在加密的后面具体发生了什么。

步骤 1: 识别您的 USB 驱动盘。

在您插入 USB 驱动盘后,如果在终端输入 dmesg 命令,将会显示出所有的系统信息,包括刚插入的 USB 驱动盘的设备名字。 确保设备标识是正确的,因为后面要进行的操作会破坏驱动盘上的所有数据。您也不想一不小心就格式化掉正常的磁盘吧。(虽然不用提醒,但我还是要说,确保您的 USB 驱动盘已经没有你想保留的数据,因为这是一个破坏性的过程。)

步骤 2: 对 USB 驱动盘进行分区。

假设,在您的系统上 USB 驱动盘是 /dev/sdb 这个设备,您需要在这个驱动上创建一个单分区(LCTT译注:设备是sdb,其上可以有多个分区,分别叫sdb1、sdb2等等)。我们使用 fdisk 命令。下面是 fdisk 必须的交互操作。一般地,用 o 命令来创建一个新的空分区,然后用 w 命令来保存设置。然后重新运行 fdisk 命令,并用 n 命令来创建一个新的主分区,接下来保持默认的以使用整个设备空间:

# sudo fdisk /dev/sdb

Command (m for help): o
Building a new DOS disklabel with disk identifier 0x1234567.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Command (m for help): w
The partition table has been altered!

# sudo fdisk /dev/sdb
Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
Using default value 1
First sector (2048-1016522, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1016522, default 1016522):
Using default value 1016522

Command (m for help): w
The partition table has been altered!

现在你的 USB 驱动盘有了一个单分区了(/dev/sdb1),但还没有文件系统,这正是我们所想要的,因为 LUKS 系统需要在创建文件系统前在您的分区上创建一个加密层。因此,在创建文件系统之前,就让我们在分区上先创建一个 LUKS 层吧,可以使用 cryptsetup 程序。如果您还没有安装 cryptsetup 的话,可以搜索您系统发布版本的仓库源,里面就有。下面就开始创建 LUKS 加密分区层:

# cryptsetup luksFormat /dev/sdb1

WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase: 

按照提示的操作,一定要确保记得您的密码!注意,这儿的“密码单词”不仅仅只表示一个单词。这只是一个习惯,因而得名,设置的越长越复杂,越难被破解。

一但上面的操作完成,就创建好了一个加密的分区,但它还没有被挂载或格式化。要做的第一步就是挂载分区,可以再一次使用 cryptsetup 工具:

# cryptsetup luksOpen /dev/sdb1 my_crypto_disk
Enter passphrase for /dev/sdb1:

当输入完密码后,您输入名字的设备就会像虚拟硬盘一样被挂载上。通常,它挂载在 /dev/mapper/设备名 的目录下,所以这个例子所示的分区就挂载到了 /dev/mapper/mycryptodisk 目录。

现在这个设备就可当做未加密的卷来访问了。 只要它一被挂载,就跟其它未加密的卷是一样的了,这就意味着您想要使用它的话就需要先建立文件系统:

# mkfs.vfat /dev/mapper/my_crypto_disk -n my_crypto_disk
mkfs.vfat 3.0.9 (31 Jan 2010)

现在磁盘的功能完备了,可以像其它磁盘一样正常挂载使用了。实际上,如果你使用的是现代的图形用户界面系统的话,只要你把 USB 驱动盘一插入计算机,将会提示您输入密码,然后就自动挂载上了。退出的时候跟普通盘一样,里面存储的数据会被加密,直到下次输入密码。在命令行里使用 cryptsetup 卸载以及重加密驱动盘也是很简单的:

# cryptsetup luksClose my_crypto_disk

这仅仅只是冰山一角

写这篇文章,我的目的是希望剥开加密后面的秘密。加密和解密单个文件很简单,要加密整个 USB 驱动盘也不是太困难(如果使用的是图形用户界面工具就更容易了)。对于大多数系统的发布版本来说,在安装过程中就可以对整个 home 目录进行加密。加密是对您的整个 home 目录起作用,然而有些问题就需要特别处理了。例如,您没登陆时就运行的任务在大多数情况下是不会访问您的 home 目录的,但如果您有调度任务需要访问 home 目录的话,应该进行修改,让其访问系统中其它目录的数据。我觉得在安全和便利之中平衡的中庸之道还是加密 USB 驱动盘,然后在上面存储个人资料。

我必须警告您,一但您考虑到安全的问题,就会想要把任何东西都加密起来。这不是什么坏的事情,但是像要对 home 目录加密这种情况,是会碰到一些问题的。如果您使用不同系统的话,跨平台访问也是个大问题。像这种情况,我强烈建议您使用 TrueCrypt。在前期的文章片段里我提到过 TrueCrypt,它是一款开源的,跨平台的加密系统软件。可以对文件、文件夹、分区等等进行加密,同时可以在任何系统中访问加密的数据。像 Windows、Mac 及 Linux 客户端都可以使用。社区也有大力的支持。(LCTT译注:悲惨的是,棱镜门事件之后,TrueCrypt的作者已经放弃了该产品,并且强烈建议大家也不要使用,具体可以参考本站的一些相关消息。所以痛失TrueCrypt之后,我们还有哪些替代品?)

希望对文件进行加密的目的并不是为了隐藏某些东西。就像即使您有个好邻居,最好夜里也得锁门一样,对您的个人数据进行加密也是个很正常的举动。如果您想在网上与大家分享你的 Whiskerton 先生戴着可爱的小豆豆帽子的照片的话,这是您的权利。但其它的人,比如他们索检你硬盘的时候,就不需要让他们看到了。


via: http://www.linuxjournal.com/content/encrypting-your-cat-photos

译者:runningwater 校对:wxy

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

诸如Apple、Facebook及Google这样的大公司正在开发他们自己的编程语言,开发者们被迫只有适应。

前不久的世界开发者大会上,Apple公布了它的新开发语言Swift。这是最近大型技术公司们开发的一大波新语言中的最新成员,这些新语言某种程度上都是专门应用于他们自己的平台。

对iOS开发者,Apple有Swift;而Facebook 有 Hack —— 一门用于后端开发的语言。与此同时,Google已经拥有了它自己的Javascript替代者 Dart,以及一门新的通用编程语言Go。

这一波又一波的新语言,给开发者们带来了许多问题。也许其中最严重的问题正如我一位同事Adriana Lee在Apple发布Swift后所说:

(开发者们到底还得学习多少门语言?) ——Adriana Lee (@adra\_la) June 2, 2014

计算机语言的通天塔

目前已经存在的编程语言有数百种,同时还有更多的语言正在涌现。其中许多都是被设计用在相对较窄的应用程序范围内,大多数甚至从未走出过项目小组的范围。

与此类似,大技术公司开发的新语言其实也是伴随着公司一起成长的。通用语言的鼻祖,C语言),就源于上世纪70年代初的AT&T贝尔实验室。Java,目前作为Android app开发的主要语言,诞生于上世纪90年代Sun公司的Microsystems系统)。

发展到现在,不同之处在于,公司们拥抱新语言、从而想要延伸的特定商业目标的范围不一样了 —— 这一过程同时建立了一个忠心耿耿的开发者基础,他们被牢牢锁定在了某个公司的特定平台上。这类一石二鸟的战略,最早可以追溯到Sun对Java的采用,当时公司就将其作为了挑战微软PC桌面统治地位的一种手段。(事情虽然没有像Sun计划的那样发展下去,但在Google转向Android之前,Java大体上也算是在企业中间件系统中找到了自己的一席之地。)

这么看来,Apple的Swift其目标也就很明确了。Swift应该不会辜负公司前期的大肆宣传,通过磨平Objective-C那粗糙的毛边,看起来它能够成功简化iOS app开发者的开发过程。但是同样还是这些开发者,他们却需要学习一门新语言的输入和输出,而这些功能很可能在其他地方都不会用到。

大公司们为什么要重复造轮子

“不要重复造轮子”这一哲学在绝大多数开发者心中根深蒂固,大公司们对此却并不买账。那他们为何不只是修改下现有语言用于新的用途呢?

答案很简单,公司们发明他们自己的语言,是因为他们有这个能力。设计一门新语言可能很复杂,但对资源要求却并不很高。困难之处也就在对其提供支持,包括提供软件资源(共享代码库、API、编译器、文档等)以及赢得开发者的支持。大公司们在这两方面尤其擅长。

还有一个事实,现有语言通常很难硬塞进如今的复杂代码框架中。举个栗子,Facebook决定发明的Hack,就是一个普遍适用于Web开发的脚本语言PHP的超集合(superset)。

Facebook的Hack最近已经比较普遍,其主要目标就是改进代码的稳定性,针对这一目的,它强制在程序运行之前对数据类型进行检测。这样的检测确保了一个程序,比方说,不会将一个整数解析为一个字符串,这样的错误如果捕获不到很可能会导致不可预知的后果。在Hack中,这些检测会预先执行,以便程序员能够在程序上线前早早发现这样的错误。

据Facebook的Hack项目组核心成员Julien Verlaguet透露,公司之前尝试过用一门现有语言实现更高效的编程。但是Facebook的大部分代码都是由PHP编写的,公司实际上已经建立了一个支持PHP及其分支的软件架构。即使能够让PHP同其他语言编写的代码协同工作,实现的难易程度和运行速度都无法满足要求。

“比如说我们尝试用Scala重写PHP代码库,”Verlaguet说。“Scala是一门设计优秀的漂亮语言,但是它与PHP完全不兼容。每次我需要从Scala的代码库部分调用PHP的时候,都会损失性能。我们很愿意使用一门现有语言,但是对于我们来说,这条路行不通。”

于是,Facebook发明了Hack,它与PHP一样能够共用公司现有的架构。Verlaguet介绍说,Facebook的代码库主体已经从PHP迁移到了Hack,同时公司将Hack开源,希望独立开发者们能够帮公司找到Facebook以外的用途。

“你仍然可以使用PHP,”他说,“但是我们希望你有使用Hack的欲望。”

谁说了算

公司和开发者之间有一种微妙的平衡。公司可以按照自己的喜好发明语言。但是如果开发者都不愿使用这门语言,那就没人用了,公司以外的人也就没人愿意将自己的职业生涯托付给这家公司。

公司在开发过程中同时使用不同的语言,这并不少见。例如,你可能用Objective-C开发iOS app,但却用Java开发Android app。对开发者来说,这从来都不是症结所在,因为Objective-C和Java都是通用面向对象语言。它们用途广泛适用于很多场合。

然而,Hack、Dart、Go和Swift,到目前为止,仍然只适用于严格特定公司的编程解决方案,往往和公司选择的编程环境相对应。诚然,现在下结论可能还太早。比方说Hack,就可以用在一些后端的实现中;它只是太新了,以至于Facebook还没有任何数据供人们如此使用。

不是开发者不能学习多门语言。事实上,大多数人已经掌握了多门语言。这好比罗曼斯语(一种由拉丁语演变而成的语言),如果你会说西班牙语,再去学法语就比那些不会西班牙语的人简单许多。与此类似,如果你已经会Java,再学Ruby或Perl就简单得多。如果你会PHP,基本上就已经学会了Hack。

与此相反,学习多门语言更多的是一个习惯问题。如果Java已经解决了你的问题,你就不再有动力去学Ruby。如果你用Objective-C编写iOS app感觉很爽,你就不会有强烈的意愿去学Swift。

另外,对于一些开发者来说,封闭生态系统的语言只会使每个人的生活变得更糟。例如,自由设计师Jack Watson-Hamblin就告诉我说,像Apple这样强势推出Swift,其实是在冒险增加程序员的负担,同时将开发者社区割裂开来:

程序员掌握多门语言固然重要,但是不断强迫他们紧跟新语言,却是行不通的。如果我正在开发一个简单的跨平台app,我可不想被迫掌握四门语言再来完成它。如果真的需要,我也只想使用一门语言。

Watson-Hamblin就主张说,当每家公司都为了自家需要发明自己的语言时,程序员的注意力被分散,开发的视野也局限于一种,这只会拖慢整个开发进程。他说,“如果拿公司负责一门语言与负责一个开源社区相比较,这两者的区别就好比一家大企业与一个初创小公司的区别”。社区生来就更加灵活,适应能力更强。

当然,Apple有许多非常好的理由推出Swift从零开始,就像当初Facebook发明Hack的时候一样。我并不是说,大公司不会强迫开发者接受这种改变,在这方面,有些公司一直都很让人讨厌。

“新语言的发明,伴随着霸权的支配,”Verlaguet说,“被迫不停追赶,确实令人沮丧,但另一方面,你又多了一种解决问题的新语言。反过来想想,要是全世界的程序员都用同样一门语言做所有事情,即使啥都凑合着能干,这门语言也一定干得不怎么样”。

题图来自于Flickr user Ruiwen Chua,CC 2.0


via: http://readwrite.com/2014/06/17/apple-swift-facebook-hack-google-dart

译者:Mr小眼儿 校对:wxy

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

家庭文件共享曾经是一个噩梦,即使在不同的Windows版本之间—— 甚至不考虑Mac和Linux!但现在这些操作系统可以相互通信并且无需特殊软件就可共享文件。

我们之前使用SMB协议来做到这点。Windows使用SMB来做文件共享,同时Mac和Linux发行版都内置支持SMB。Microsoft甚至给开源Samba项目提交过补丁来改进它!

在Windows上共享文件夹

既然其他操作系统不能访问家庭组,您需要启用Windows老式的文件共享。要做到这点,打开控制面板进入网络和共享> 更改高级共享设置。启用“网络发现”和“文件与打印共享”。

如果你想要无需密码访问共享文件夹你还需要微调一下其它选项。

在Windows Explorer或者File Explorer中找到你想共享的文件夹,右键点击,选择属性。点击共享标签,并使用这里的选项来共享和配置文件夹的权限。

在Windows上访问共享文件夹

在Windows Explorer或者File Explorer中访问网络面板来浏览其他计算机共享给你的文件。你会看到正确配置后的Mac和Linux计算机在Windows PC机附近出现了。双击一台计算机来查看它的共享文件。

如果你知道计算机名或者IP地址,你同样可以直接连接到这台计算机上,只需要在Windows Explorer或者File Explorer中输入\计算名后按下回车就可以了。如果你希望直接通过IP地址连接,只需要将计算机名换成IP地址就可以了

在Mac OS X 上共享文件夹

你需要在你的Mac上启用网络文件共享来共享文件。点击桌面左上角的苹果logo,并选择系统偏好。点击共享图标并启用文件共享。点击选项按钮,并确认“使用SMB共享文件和文件夹”已经启用。

在共享文件夹那列中选择添加要共享的文件夹。使用用户列来选择哪些用户和组可以访问和写入它们

在 Mac OS X 访问共享目录

打开Finder,在屏幕顶部的菜单中点击Go,选择连接到服务器,输入下面的地址,用Windows计算机名代替COMPUTERNAME:smb://COMPUTERNAME。你同样可以输入计算机IP来代替计算机名。

你会被提醒你应该用相应的凭证来验证或者以访客方式登录。连接完成后,在Finder的侧边栏的共享列中就会出现这台计算机,

要在你每次登录后自动链接到共享文件夹,打开系统偏好窗口并进入用户与组 > 登录项。从finder中的共享列中的网络共享拖拽到登录项列表中

在 Linux 中共享文件夹

在Linux上使用你桌面文件管理器来共享文件夹。这里,我们使用Ubuntu 14.04上的Nautilus,不过其他文件管理器上的过程应该是相似的。

打开文件管理器,在想要共享的文件上右键,选择属性。点击本地网络共享标签并对这个文件启用共享。如果这是你第一次启用共享,你会被提示要求安装Samba软件——这在你提供密码的时候会自动显示。

在安装完Samba软件后配置共享设置- 确认点击创建共享按钮来开始共享文件夹。

在 Linux 上访问共享文件夹

你的Linux桌面文件管理器可能包含了一个网络浏览器,它可以用来定位并访问在本地网络的共享文件夹。

在文件管理器的侧边栏点击浏览网络选项。接着双击Windows网络选项,双击你的工作组(默认是WORKFROUP),双击邻近的计算机来浏览它的共享文件。

要直接连接到一台计算机,选中Nautilus中的“连接到服务器”选项,并输入像这样的远程计算机地址:smb://COMPUTERNAME

不过在你连接时,你可能需要使用具有访问远程计算机权限的用户名和密码来验证。这依赖于你是否启用了访客访问以及你如何设置你的文件夹共享权限。


via: http://www.howtogeek.com/191116/how-to-share-files-between-windows-mac-and-linux-pcs-on-a-network/

译者:geekpi 校对:wxy

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

如果你稍微写过一点代码,就能知道“集成开发环境”(IDE)是多么的便利。不管是Java、C还是Python,当IDE会帮你检查语法、后台编译,或者自动导入你需要的库时,写代码就变得容易许多。另外,如果你工作在Linux上,你也会知道Vim在进行文本编辑的时候是多么的方便。所以,你可能会想从Vim中也获取这些IDE特性。

事实上,很少有方法可以帮你做到。有些人可能会想到试着把Vim打造成C语言IDE的,比如c.vim;也有把Vim集成到Eclipse里的 Eclim 。但是我想要告诉你的是一个更加通用的,只用插件实现的方案。你肯定不想因为安装了太多的面板和特性而让你的编辑器变得臃肿不堪。只用插件实现的方案可以让你只选择那些你想要集成到Vim的特性。这样做的额外的一个好处是,这个IDE不是专门针对某一种语言的,可以让你写任何类型的代码。下面就来看一下我的 把IDE特性带进Vim的前10款插件 吧。

先来个福利: Pathogen

首先,可能不是所有人都熟悉Vim的插件,并知道该怎么安装这些插件。所以,我推荐的第一个插件就是Pathogen,因为这个插件会让你更容易安装其他插件。如果你要安装另外的没有在这里列出来的插件,用Pathogen会变得非常简单。它的官方页面的文档写的非常好,去下载安装一个吧。接下来插件的安装也会变得容易很多。

1. SuperTab

我们习惯于IDE的第一个原因就是它的自动补全功能。所以,我喜欢这个非常方便的,给了Tab键“超能力”的 SuperTab 插件。

2. Syntastic

如果你需要使用一种以上的语言进行编程,有时候是非常容易混淆不同语言之间的语法的。幸运的是,syntastic 会帮你检查,然后告诉你是否应该加上圆括号或者方括号,或者告诉你在某个地方,你忘了一个分号。

3. Auto Pairs

另外一件让程序员们抓狂的事是:我是不是少加了最后一个括号?!每个人都讨厌用手指去数那些隔的非常远的括号。为了处理这个问题,我用 Auto Pairs 插件,这个插件会自动插入和格式化方括号和圆括号。

4. NERD Commenter

如果你在找一个可以支持多种程序语言的注释代码的快捷键,你可以试试 NERD Commenter。即使你不是程序员,我也非常非常推荐这款插件,因为它会让你在注释bash脚本或者其他任何东西的时候都会变得非常高效。

5. Snipmate

任何一个程序员都知道,好的码农写代码,杰出的码神重用代码。snipmate可以容易的插入代码片段到你的文件里面,大大的减少了你敲键盘的次数。它默认的包含了很多各种语言的代码片段,你也可以非常容易的添加你自己的。

6. NERDTree

管理一个大的项目时,把代码分散到不同的文件里面是非常好的主意。也是一个基本的编码原则。NERDTree 是一个不错的可以直接在Vim里使用的文件浏览器,它可以让你随时想到所有的文件。

7. MiniBufferExplorer

为了打造一个文件浏览器,支持同时打开多个文件,没有什么比一个好的缓冲区管理器更重要了。MiniBufferExplorer 就可以非常漂亮和高效地完成这个工作。它甚至为你的缓冲区设置了不同的颜色和切换快捷键。

8. Tag List

当你同时有多个文件打开时,很容易忘了你都在这些文件里添加了什么。为了防止你忘记,Tag List 这个代码查看器将会用一种漂亮简洁的格式展示其中的的变量和函数。

9. undotree

对于我们之中那些喜欢undo,redo然后又undo某些更改,然后依据这些来查看整个编辑完成过程的人来说, undotree 是一个不错插件,可以以一棵树的形式看到你的undo和redo历史。这个功能跟代码完全没有关系,所以这是我非常喜欢的一个插件。

10. gdbmgr

最后,但并非不重要,每个人都在某个时刻需要一个调试器。如果你喜欢gdb,那么gbdmgr就是为你准备的,因为它集成了那个著名的调试器到Vim中。

总结一下,不管你是不是一个疯狂的coder,能有一些额外的Vim功能在手总是非常方便的。像我在简介里说到的,如果你不需要,你不用安装这里所有的这些插件。或者你想要安装另外的也行,这些其实只是一个基础入门级的插件。

你在用Vim的什么插件?或者你想完善这个前10列表么?请在评论里告诉我们吧。


via: http://xmodulo.com/2014/06/turn-vim-full-fledged-ide.html

译者:love\_daisy\_love 校对:wxy

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

据 @LinuxCN好基友-Viz赵文轩 爆料: CentOS 作为一个受欢迎的红帽企业级 Linux (RHEL) 的衍生版,即将在近期发布!

前些日子(6月10日),万众瞩目的 RHEL7 发布并提供用户下载。 也就是说,其免费的自由衍生版本 CentOS 7 也将在不远的将来发布。

起先,CentOS 软件工程师 Johnny Hughes 于6月11日在 CentOS 7 的官方博客的一篇回复中提到

Our “Goal” is 2-4 weeks.

我们的“目标”是2~4周(发布)。

据此推断,CentOS 7 很可能将于七月上旬发布。

此后不久,CentOS 7 的官方博客先后发布了 QA Release测试版 Live 光盘镜像Docker 镜像

今天早些时候,CentOS 项目负责人 Karanbir Singh 在官方 Twitter (@CentOS) 上发布消息称 希望测试 CentOS 7 的用户应该在72小时内完成测试,也就是说很有可能将在72小时后发布相对稳定的版本。

这个猜测在下面一篇推的回复中得以证实。Karanbir Singh 确认了如果不出意外的话,在72小时内至少会发布 CentOS 7 的 RC 版本。

值得注意的是,即使这次不是正式发布,与前面的 QA Release 与 Beta 版本不同,这次的软件包将会进行签名。

RC 就要来了,正式版还会远么?


作者:Viz

本文由 Linux中国 原创发布