2017年1月

运行一条命令时,它都会产生某种输出:要么是该命令的期望结果,或者是该命令执行细节的状态/错误消息。有些时候,你可能想要将某个命令的输出内容存储在一个变量中,以待在后续操作中取出来使用。

本文将介绍将 shell 命令赋值给变量的不同方法,这对于 shell 脚本编程是特别有用的。

可以使用如下形式的 shell 命令置换特性,将命令的输出存储到变量中:

变量名=$(命令)
变量名=$(命令 [命令选项 ...] 参数1 参数2 ...)
或者:
变量名=`命令`
变量名=`命令 [命令选项 ...] 参数1 参数2 ...`

以下是使用命令置换特性的示例:

本例,我们将 who (显示当前登录系统的用户) 的输出值存储到 CURRENT_USERS 变量中:

$ CURRENT_USERS=$(who)

然后,我们可以使用 echo 命令 显示一个句子并使用上述变量,如下:

$ echo -e "以下为登录到系统中的用户:\n\n $CURRENT_USERS"

上面的命令中:-e 标记表示解释所有的转义序列 (如 \n 为换行)。为节约时间和内存,通常在 echo 命令 中直接使用命令置换特性,如下:

$ echo -e "以下为登录到系统中的用户:\n\n $(who)"

显示当前登录系统的用户

在 Linux 中显示当前登录系统的用户

接下来,为了演示上面提到的第二种形式,我们以把当前工作目录下文件数存储到变量 FILES ,然后使用 echo 来输出,如下:

$ FILES=`sudo find . -type f -print | wc -l`
$ echo "当前目录有 $FILES 个文件。"

显示目中包含文件的数量

显示目中包含文件的数量

就是这些了。我们展示了将 shell 命令的输出赋值给变量的方法。你可以在下边的评论反馈区留下你的想法。


作者简介:

Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、未来的 Linux 系统管理员、Web 开发者,目前是 TecMint 的原创作者,热衷于计算机并乐于知识分享。

译者简介:

GHLandy —— 欲得之,则为之奋斗。 ( If you want it, work for it. )


作者:Aaron Kili 译者:GHLandy 校对:jasminepeng

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

Canonical: 2017 将发布 Mir 1.0,并实施 Vulkan 支持计划

Canonical 最近为他们的 Mir 显示服务器技术发布了“年度回顾”。

大多数人可能知道,Canonical 在 Ubuntu 上开发自己的显示服务器, 称为 Mir,在某些方面类似 X.Org 服务器和 Wayland 技术。

虽然 Ubuntu 桌面仍使用 X.Org 服务器组件,Mir 目前在 Unity 8 上紧锣密鼓的测试中,Canonical 计划在 Ubuntu Linux 桌面未来版本中作为缺省实施。

但是直到现在,Mir 只是在移动设备上成功部署,支持 Ubuntu Touch mobile 系统,用于各种官方和非官方的 Ubuntu 电话和平板。

据 Alan Griffiths( Canonical 的软件工程师)讲,对 Mir 来说2016 是成果丰硕的一年,2017 年公司计划发布该显示服务器的里程碑的 1.0 版本,它将实施人们期待已久的 Vulkan 支持。

目前,公司没有透露 Mir 1.0 发布的具体日期,我们猜测应在 Ubuntu 17.04 (Zesty Zapus) 发布前后,也就是 4 月中旬。

Canonical 将从 Ubuntu 中移除旧的 Unity 7 Scopes ,Unity 8 将不再支持它们

Canonical的 Will Cooke 最近告知,公司计划从 Ubuntu Linux 中移除一些老的,不再维护的 Unity 7 Scopes,因为它们可能会威胁到整个操作系统的安全。

今年 4 月将发布 Ubuntu 17.04(Zesty Zapus)系统,这也是 Unity 用户界面使用的第五年,它是在 Ubuntu 11.04 (Natty Narwhal) 版本中第一次引入的。

Canonical 的工程师们目前集中精力在下一代 Unity 8 用户界面上,当前 Ubuntu Linux 发布版仍使用 Unity 7,Ubuntu 17.04 也是。

不过,看起来 Ubuntu 仓库中仍包含一些老的,不再维护的 Scopes,它们有一些安全问题,如果安装或使用的话会给整个系统带来安全隐患。很多与一些流行的音乐播放 app 相关,包括 unity-scope-audacious, unity-scope-clementine,unity-scope-gmusicbrowser,unity-scope-guayadeque,unity-scope-musique,unity-scope-gourmet 等等。

因此,Canonical 计划将它们从官方仓库中移除,如果它们的维护者不再跟进那些安全问题并提供补丁的话,而且 Unity 8 也不再支持它们。

如果您之前提交过 Unity 7 Scope ,而且不再提供安全修复,请尽快将其从仓库中移除,Unity 7 还将存在一些年,但应尽可能的安全。

忘记 OpenGL 4.2 吧,Intel Haswell GPU 现在 Ubuntu 上支持 OpenGL 4.5

玩家可以通过 Padoka 或 Oibaf PPA 更新到 Mesa 17-git。

最近,Paulo Miguel Dias 更新了 Ubuntu 16.04 LTS 和 Ubuntu 16.10 系统上他的 Padoka PPA (Personal Package Archive) 到最新的 Mesa 17.0.0-git,从而实现 Intel Haswell GPUs 对 OpenGL 4.5 支持。

由于 Intel 的高级图形软件工程师 Kenneth Graunke 为开源 Intel i965 图形驱动器发布了一个新的补丁, 在 Intel Haswell GPUs 上可启用 OpenGL 4.5,而且,它很快在 Mesa Git 上出现,你可以在 Ubuntu 上使用它了。

怎么用呢? 很简单,安装 Padoka 或 Oibaf PPA,它们在 Ubuntu 游戏社区很有名,为 Intel, AMD Radeon, and Nvidia GPUs 提供最新的开源图形驱动。这些 PPA 为最新 Mesa 17.0.0-git 3D 图形库提供频繁更新。

Fedora 26 Linux 可能发布 LXQt Flavor,不会代替 LXDE Spin

即将于 2017 年 6 月 6 日到来的 Fedora 26 版本有了一点变化,也就是一个围绕轻型的,基于 Qt 的 LXQT 桌面环境而构建的新的 flavor。

红帽子的 Fedora 开发经理 Jan Kurik 在 Fedora 的邮件列表中公布的此消息,告知社区 Fedora 项目在考虑向已经很庞大的 Fedora Spins 家族添加新成员,Fedora LXQt Spin。

“ 鉴于 LXQt 已经完善多了,是时候为用户提供 spin 了。现已准备好提交一个正式 spin ,” Jan Kurik 说到,他是 Red Hat 的 平台 & Fedora 开发经理。

LXQt flavor 不会取代已有的 LXDE spin。

Debian 发布 Debian GNU/Linux 9 "Stretch" Installer RC1 版

为即将发布的 Debian GNU/Linux 9 "Stretch" 操作系统相关的工作正在进行中,Debian 项目的 Cyril Brulebois 1 月 16 日宣布,Debian Installer for Stretch 的 RC1 版已可用。

在 Debian Stretch Installer 的第八版和 Alpha 开发版发布后,已经进行了很多改进。

此 RC1 版本的显著变化包括 HTTPS 支持,GNU wget udebs,使用fonts-dejavu-udeb 为默认字体,为 Sinhalese 语言使用 fonts-noto-hinted-udeb 字体包,以及将 Linux 核心提高到 4.8 版本。

你可以在这里下载 Debian Stretch Installer RC1 版.

Paul Simon 概括了“与爱人分手的 50 法”,而这里,我们提供了提高系统安全性的 50 种方法。

当我还是小孩子,耳畔萦绕着 Paul Simon 的流行歌“与爱人分手的 50 法”。当我渐渐地长大,突然受歌的启发,收集了 50 种方法,免得你——门内汉和门外汉——遭受黑客侵袭啊:

“你刚刚从后头溜出去了,杰克”

1、 备份你的数据。如果你不幸被勒索软件光顾,那么你就不用支付赎金,因为你做了备份。

2、 当你需要在公共场所为你的手机充电,那就使用 sysncstop吧,或者你也可以用你的备份电池。(LCTT 译注:sysncstop 是一种可以在公共场所安全充电的 USB 设备。在公共场所充电的风险,你知道的。)

3、 利用好你的审计系统,里头有好多很酷的工具可以帮助你监控系统。如果你确实遭到了入侵,那么审计系统也许就可以告诉你发生了什么,以及攻击者做了些什么。

4、 说到日志,把日志定向到集中式服务器上总是一个不错的想法,因为如果某个黑客侵入你的系统里,他首先要攻击的就是日志系统以便隐藏他的踪迹。构建一个好的入侵检测系统来监控日志,这对于防范黑客也很有帮助。

“做份新的计划吧,斯坦”

5、 以强制模式运行 SELinux(见 StopDisablingSelinux.com)。不要觉得我现在还在喋喋不休地说这个可笑。SELinux 可以防止 0day 漏洞的影响。当破壳漏洞出现的时候,SELinux 曾是唯一的防护手段。

6、 如果可能,在 SELinux 沙盒中运行应用程序吧——在容器火遍全球前,它就已经是容器了。同时,请关注 Flatpack 开发,这个工具很快会开发沙盒功能。

7、 不要安装或者使用 Flash。Firefox 不再支持它了,同时也希望大多数 web 服务器正在远离它。

8、 使用受约束的 SELinux 用户来控制用户在你的系统中所能做的事。如果你正运行着一台共享登录的系统,设置用户为 guest_t。

“你不必害羞,罗伊”

9、 利用 systemd 工具的能力来帮助你提升系统安全。大多数系统攻击是通过那些监听着网络的服务来实现的,而 Systemd 提供了一些很棒的方法来锁定服务。例如,使用 PrivateTmp=yes 。Privatemp 利用挂载命名空间来为服务器的 /tmp 设置一个私有的 tmpfs 挂载,这可以阻止被入侵的服务访问到主机 /tmp 中的内容,以及针对系统中基于监听 /tmp 的服务的潜在攻击。

10、 InaccessibleDirectories=/home 是一个 systemd 单元的选项,它使用挂载命名空间的方式使从服务的角度看不到 /home 目录(或者其它任何目录),这会使得被入侵的服务攻击到数据更为困难。

11、 ReadOnlyDirectories=/var 是另外一个 systemd 单元的选项,它使用挂载命名空间的方式来将目录内容变成只读模式。基本上你总是可以让 /usr 运行在只读模式。这可以阻止一个被入侵的应用程序重写二进制文件,因为那可以在下次服务重启时,该服务依旧是被入侵的。

12、 降低服务权限(CapabilityBoundingSet=CAP_CHOWN CAP_KILL)。在内核中,特权服务被分解成一些列不同的权限。大多数服务不需要很多权限(如果需要一些的话),而 systemd 提供了一个简单的开关来从服务中剥离这些权限。

13、 如果服务不使用网络,那么你可以使用 PrivateNetwork=yes 来为该服务关闭网络功能。只需在服务的单元文件中开启该选项,就可以享受它带来的好处,关闭服务所有可用的网络。黑客常常并不是真的想破坏你的机器——他只是想用它作为攻击服务器来攻击其它机器。如果服务连不上网络,那么就不会受到攻击。

14、 控制服务可用的设备。 Systemd 提供了 DeviceAllow 配置,它控制了该服务可用的设备。DeviceAllow=/dev/null rw 将访问限制为 /dev/null,且仅可访问该设备节点,不允许对其它任何设备节点的访问。该功能实现于设备的 cgroup 控制器顶端。

15、 Systemd 系统即将迎来的一个新功能是 ProtectSystem Strict,该功能可以开启所有这些命名空间以完全锁定服务运行的环境。

“刚刚重获自由”

16、 不要使用没有运行着 SELinux(SEAndroid)强制模式的手机。幸运的是,我听说目前超过 90% 的安卓手机都运行着 SEAndroid 的强制模式,这真让我高兴。现在要是我们能让那些果粉们使用 SELinux 就好了。

17、 只从受信源安装软件。不要安装你从因特网找来的危险东西,对于你的手机、计算机系统、虚拟机以及容器等等也一样。

18、 我不会在我的手机上进行网上银行操作——我只在我的 Linux 计算机上做这事儿。如果黑客偷了我的信用卡,也许我就丢了那么 50 美元;而如果他黑进我的银行账户,那我丢的钱就会更多。我想我是个老古板。(“滚出我的地盘。”——那些老古板都会这样说。)

19、 我用我手机做的一件很酷的事情,就是设置让我的信用卡公司每次在我的信用卡消费时给我发送短信。那样的话,如果账号被盗,我会更快地知道。

20、 当你需要安全地通讯,请使用 Signal 安全信息应用。

“搭个便车,格斯”

21、 在你的计算机系统上运行 Linux。当我第一次想用计算机联络我的父亲时,在他的计算机中毒前,我很少回家。我回去给他的系统安了个 Linux,而他从那以后就一直运行着它。我相信 Linux 大体上说是一个更加安全的系统,因为它的设计方式。而且我也相信这个桌面被黑的可能性也相对较小,因为用它的人相对较少。有些人或许要持反对意见了,他们会说 Windows 在过去几年中已经有了很大的改进了,但对于我而言,我仍然坚持己见。

22、 只运行那些有安全响应团队进行安全监管的发行版。企业软件及其重要。

23、 运行一个企业级内核。在容器中,单点故障往往是内核。如果你想要保证它安全,那么就使用一个企业级内核,即便它不是一个最新的版本,但也包含了最新的安全补丁。记住,最新的内核虽然带来了最新的安全补丁,但是它也带来了大量的新代码,这些代码可能存在漏洞。

“你不要说太多”

24、 大多数非法入侵都是通过社会工程学实施的——例如,电子邮件链接、web 浏览器攻击,以及电话。对于此,最好的选择是接受相关教育,并且对一切留个心眼儿。没有哪个来自尼日利亚的家伙会给你钱,国税局也不会打电话到你家问你要钱。如果你电子邮件收到了来自你银行的电子邮件,里面包含有到某个网站的链接,那么不要直接去点击那个链接,在 web 浏览器中输入那个地址来打开。

25、 总是把你的系统打上最新的安全补丁。已知有安全漏洞以及过时的系统的数量十分可怕,脚本小子们依赖于你不更新系统。

26、 当连接到网络上的服务时,请始终使用 HTTPS。Chrome 和 Firefox 现在有个强制开启 HTTPS 的模式。到 2016 年为止,那些还不支持安全通讯的网站可能就不值得你们访问。

27、 在你的容器中使用 seccomp,这会将攻击限制在内核之外,内核是个单点故障。限制什么进程可以具体讨论。

“就把那钥匙丢下吧,李”

28、 使用 YubiKey 来存储私钥。

29、 加密你系统上的数据。至少对于笔记本而言,应该把家目录以及你的其它数据目录加密。几年前,我正乘坐在伦敦的地铁上,我的笔记本就成了某些人的目标——我下了车,车门关上了,而我发现我的笔记本不见了。此时,地铁已经驶出了站台。幸运的是,我把磁盘加密了。

30、 给你的所有网站用上 Let's Encrypt 吧,没有任何理由不再运行 HTTPS 了。

31、 绝不要在不同 web 服务器上使用相同的密码。虽然这个很难不落入陷阱,但是像 Let's Encrypt 这样的工具会有很大帮助。如果你使用 ssh 密钥来登录进系统,这会更好。

32、 使用双因素认证(2FA)。密码变得无关紧要,使用 Yubikey 以及诸如此类的工具可以使得双因素认证很方便,我们都有手机。在大脑中记一个密码,并在手机中生成一个密钥,总是比一个密码来得更好。

33、 网站总要我注册个帐号,没有比这更激怒我的事情了——我们就不能做得更好点?对于网站密码,始终都要使用密码生成工具来生成。我是个保守派:我使用 Password Safe 来生成密码,然后剪切粘贴到 web 浏览器中。我听说,其他人使用 LastPass,或者其它整合在手机和 web 服务中的工具也用着不错。

34、 配置像 FreeIPA 之类的服务用于身份认证。使用像 Kerberos 之类的工具来认证和授权,会使得跟踪雇员及其对系统的访问更为简便(而且它也有很酷的加密服务)。使用活动目录也很不错,或许我有点偏颇。

35、 如果你经常输入密码,那就使用一个容易记忆的句子,而不是一个单词。我所偏好的用于记忆密码的方式,就是使用有几个单词并且易于输入的词组。

“让自己自由”

36、 使用 USBGuard 来保护你的系统免遭流氓 USB 设备破坏。

37、 在过去几年中,我一直工作于容器方面,让我们来说说容器的安全吧。首先,让它们在开启强制模式的 SELinux 的系统中运行。如果你的系统不支持 SELinux,那就换个支持它的版本吧。SELinux 是使用文件系统来保护容器免遭破坏的最佳工具。

38、 如果可能,在容器中跑你的服务吧。我相信,使用 OCI 镜像格式 和 Linux 容器技术是应用的未来。用 runC、OCID、RKT、Systemd-nspawn 等等来启动这些容器。虽然我常常说“容器并不包容“,但是不要在容器外面运行这些服务更好一些。

39、 在虚拟机中运行容器。虚拟机提供比容器更好的隔离机制,在虚拟机中跑像容器之类的东西,更加灵活有弹性,并且互相隔离。

40、 在不同的虚拟机中,按不同的安全需求跑容器应用。你可以在 DMZ 中的虚拟机上跑 web 服务容器,而在 DMZ 外的虚拟机上跑数据容器。

41、 同时,记得在不同的物理机上跑需要最高安全性的虚拟机,并且容器放在不同虚拟机上(这也叫深度防护)(LCTT 译注:此处原文有误,根据理解修改)。

42、 以只读模式跑容器。开发环境中的容器需要能够写入到 /usr,但是生产环境中的容器只能写入到 tmpfs,并且将卷挂载到容器中。

43、 降低容器权限。不管是在容器中,还是在容器外,我们都以比它们所需的更多的“权限”跑它们的进程,你可以通过降低权限来让你的进程更加安全。

44、 不要以 root 身份在容器中跑进程。大多数服务都不需要 root 特权,或者它们需要该权限来绑定到低于 1024 的端口,然后切换到非 root 用户。我建议你始终以非 root 身份来跑应用。

45、 给你的容器打上最新的 CVE 补丁。使用像 OpenShift 这样的工具来构建并维护你的容器镜像是个不错的主意,因为它会在新的安全补丁出现时自动重构容器镜像。

46、 我的一个同事说 “Docker 就是用来在你的主机上以 root 身份运行来自因特网的随机代码的。”从一个受信源获取软件,不要抓取你在 docker.io 上随便找到的第一个 Apache 应用。操作系统有重要关系。

47、 在一台受限的容器化优化的主机上跑生产环境容器,例如在一台原子主机上,它开启了所有安全特性,为运行中的容器而优化,带有限制攻击层和原子级更新。有什么不喜欢的吗?

48、 使用像 OpenScap 这样的工具来扫描你系统的漏洞。糟糕的是,新的漏洞总是层出不穷,所以你得时刻更新你的扫描器。(也可以看看 原子扫描,用于扫描你的容器。)

49、 OpenScap 也具有扫描安全配置的功能,如 STIG(安全技术部署指南)。

50、 为你孩子收到的所有那些圣诞物联网设备设置一个特别的客户网络。我钟爱我的 Amazon Echo,还有自动化灯以及电源开关(“Alexa,打开圣诞灯“),但是所有这些都是由可能存在安全问题的 Linux 操作系统控制。

“一定还有着另外 50 种免遭黑客侵害的方法”

你会为这个列表添加点什么呢?在下面的评论中告诉我们吧。

Josh Bressers 对本文作出贡献。


作者简介:

Daniel J Walsh - Daniel Walsh 已经致力于计算机安全领域将近 30 年。Dan 在 2001 年 8 月份加入 Red Hat。


via: https://opensource.com/article/17/1/yearbook-50-ways-avoid-getting-hacked

作者:Daniel J Walsh 译者:GOLinux 校对:wxy

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

Linux 内核维护者 Greg Kroah-Hartman 19 日在他的 Google+ 上确认,Linux 4.9 分支现在是“长期”的了,也就是我们说的 LTS (长期支持)。

去年 12 月 11 日时, Linus Torvalds 正式宣布 Linux 4.9 内核发布,而 Linux 4.9 内核的是否成为 LTS 的故事则发生在这之前。

其时,2016 年 8 月 12 日,著名的 Linux 内核维护者 Greg Kroah-Hartman 在他的 Google+ 上说,“4.9 == next LTS kernel.”,然而很快,在媒体开始纷纷报道 Linux 4.9 内核就是下一个长期支持内核时,Kroah-Hartman 反悔了,在一个月之后, 9 月 6 日,他说他要保留把 Linux 4.9 内核标为长期支持的权力。

“我保留不选择 4.9 支持两年的权力,如果你感觉不舒服,那是人们滥用了这个通知。如果这样做的话,我可能会返回 4.8 系列,或者等待 4.10 发布。到了那个时候,我会发布在 kernel.org 上,让大家知道的。”他在自己的博客的后继文章上说到。

Linux 4.9 内核将支持两年,直到 2019 年 1 月

时间转到今天,在 Linux 4.9 内核都已经发布了 4 个小版本之后,Greg Kroah-Hartman 终于宣布他准备将 Linux 4.9 标为“长期”:

是的,4.9 就是下一个长期内核。我已经说过了,但是不知道怎么回事,如果不在 kernel.org 上,就没人信我。

当然,这对于 GNU/Linux 用户来说是个大新闻,因为 Linux 4.9 内核增加了几个令人兴奋的新特性,特别是初步支持了从老式 GNC 1.0 / Southern Islands 系列到开源 AMDGPU 图形驱动的 AMD Radeon GPU,这其中包括了 AMD Radeon HD 7xxx 和 8xxx 系列。

据 Greg Kroah-Hartman,Linux 4.9 内核的支持期将到 2019 年 1 月,也就是从此时算起的两年。因此,建议各个 Linux 发行版都采用这个分支,特别是采用了这个月结束支持的 Linux 4.8 内核的发行版。

回顾年度最热门的 AI 项目和容器的编程语言、新出现的编程语言,和更多编程趋势。

技术在不断前进 - 可能不总是向前,但总是在变动。但即使对于那些关注发展趋势及其对程序员的影响的人来说,确切地了解技术的方向也是一个挑战。我们总是在每年秋季才能够清晰地看出当年开源编程趋势,那时我与我的同事,Kelsey Hightower 和 Scott Hanselman,以及我们非常棒的编程委员会,正在筹备来年的 OSCON(O'Reilly 开源大会)。我们获得的建议和对特定主题的关注数量是反映开源世界热门趋势的良好指标。以下是我们在 2016 年看到的顶级编程趋势的概述。

编程语言驱动 AI

走出 20 世纪 90 年代的人工智能冬季,人工智能随着它所依赖的计算能力的提升再次出现,它影响着我们如何构建软件。机器学习、深度学习、自然语言处理和自动语音识别覆盖了世界各地 - 从 GitHub 的项目和工作岗位,到新公司成立背后的原因,以及清除我们杂乱的台面(Hey, Alexa!)。(LCTT 译注:Alexa 是预装在亚马逊 Echo 内的个人虚拟助手,可以接收及响应语音命令,可被看成是亚马逊版的 Siri 语音助手。用户只需要说一声“Alexa”,就可以创建各种任务,还可以和各种智能家居设备进行交互。) 是的,即使像 OSCON 这样的会议都处处提及 “万物皆智能” all things AI 。虽然计算能力的提升已经铺平了道路,所有关于 all things AI 的开源已经引起了行业广泛开放的创新和竞争。谷歌的 TensorFlow、OpenAI 和 Apache Spark 使用强大框架成为行业领导者,但也有较小的参与者,如 Nervana 的 Neon 和 Theano。

AI 的兴起已经影响到了软件开发者的前景?没错,现在是了解 Python 的好时机 - 它给数据工程师和科学家带来的敏捷性和流行性使它成为最流行的 AI 编程语言,其次是 R、Java 和 Scala。

容器和 Go 的结合就像花生、黄油和果冻

(花生、黄油和果冻 —— LCTT译注:最佳组合)

Go 1.0 发布于 2012 年 3 月。紧接着 Docker 在一年后发布,Kubernetes 在另外一年后发布。总之,Go 并不是如我们所知的那样专为基础设施的未来而设计的,但 Go 似乎是为了填充编程世界的一个主要的空洞而出现。对于一个高度联网的世界、一个必须拥有一流并发性的世界而言,Go 是以 Java 或 C++ 永远不会有的方式专门设计的。如果你在做运维或者类似的事,你应该至少稍微了解下 Go ,因为它正在发展中,它将会被使用多年,并成为许多程序的骨干。

Swift 超越了 Apple 的生态系统

Swift 是 Apple 在 2015 年启动该编程语言不久之后就开源的。Swift 已经成为 iOS 和 Mac OS X 开发人员的热门话题。这种语言很容易理解,因此很快流行起来,并且它比它要取代的语言 - Objective-C 和 C++ 赢得了一个更安全的声誉。在 JavaScript 框架和其他新语言的世界中,Swift 是否成功仍有待观察,但如果它能继续获得苹果忠实用户的欢迎,Swift 将有机会成为伟大的网络世界中最有望成功的竞争者和超越者。

Java 8 vs 使用 JVM 的函数式语言

Java 8 的函数式能力(即引入 Lambdas )的出现使得 JVM 语言(如 Scala 和 Clojure)得到了关注。最近,很大程度上由于 Apache Spark 的增长使得 Scala 有一点小爆发。现在,因为新、老开发人员都在积极关注 Java 8 所带来的东西,至少目前,Scala 和 Clojure 似乎被搁置了。Java 现在能够解决并发和大数据相关的事,而那些专门为满足此方面要求而构建的其他编程语言已经做了多年。在 2017 年,OSCON 几乎没有 Scala 和 Clojure 的提案,不是因为我们这样计划的,而是那些提交提案的发言者似乎没有什么兴趣。

新兴语言

和往常一样,世上总是在不停出现新兴语言,目的是比之前的语言做得更好,可以响应从前的语言出现时没有的需求,或者开始只是疯狂思想,最终却改变了我们对编程的看法。今年有五种语言即将进入大时代:Rust、Elixir、Elm、Kotlin 和 Perl 6。

这 5 个热门会给行业带来什么?

  • Rust:兼顾速度和一定安全的系统编程语言。
  • Elixir:函数式、动态和容错,适用于那些规模越来越大的应用程序。
  • Elm:更多函数式的乐趣,使用 JavaScript,学习成为一种乐趣。
  • Kotlin:这一个是为使用 Java 和 JVM 的人设计的语言 - 静态类型、安全,此外我提到 Java 兼容了吗?
  • Perl 6:它还活着!Perl 6 碰巧是一种新的语言,它胜在富有表现力和功能丰富。

时间会告诉他们是否会如约发布。尝试他们,为他们贡献,成为未来的一部分!


作者简介:

Rachel Roumeliotis - O'Reilly Media,Inc. 的战略内容总监,领导了一个编辑团队,其涵盖各种各样的编程主题,从全栈 web 开发到企业中的开源到新兴的编程语言。她是 OSCON(O'Reilly 软件架构会议)和 Fluent 的编程主席。 她从事技术出版工作超过 10 年,出版了许多领域的内容,包括移动编程、UX、计算机安全。


via: https://opensource.com/article/16/12/yearbook-top-programming-trends-2016

作者:Rachel Roumeliotis 译者:geekpi 校对:jasminepeng

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

经过七个月的漫长历程,著名的 火狐浏览器 FireFox 背后的厂家 Mozilla 终于选定了新 Logo。这次评选始于去年六月的 Mozilla 品牌重建活动,在八月份时已经圈定了七种设计,然后经过了上千封电子邮件、近百场会议、讨论了十几种理念,又经过了三轮研究之后,终于——选定了最初就被大家看好 Logo 设计:

moz://a

这个项目的核心是 Mozilla 需要让其目标与品牌更好地被更多人了解。Mozilla 希望引领一个健康的互联网,可以自由探索、发现和创新,而没有任何障碍和限制;让权力掌握在更多人手中,而不是少数人手里;让互联网成为一个安全、隐私和身份得到保护的地方。

Mozilla 称:

今天,我们相信,这些准则比以往更加重要。作为一个非盈利组织,我们正在产品构建、技术和程序方面为建设一个不断增长的、健康的互联网而努力。

我们的品牌标识,包括 Logo、声音和设计,都是传递我们的理念和我们当前任务的重要信号。我们致力于确保互联网成为一个健康的全球公共资源,公开而自由,所以我们以互联网语言设计了我们的品牌标识。

Mozilla 的新 Logo,采用 URL 范式,这代表了 Mozilla 的核心是 Internet,致力于达成“链接”的本意:无过滤、无中介地感受 Internet 丰富的内容。

新的 Logo 十分巧妙地将 “mozilla” 这个单词中的 “ill” 变形为 URL 的资源定位符号“://”, 这个 Logo 的设计得到了互联网上的广泛赞誉。

顺便提一句,这个 Logo 的字体叫做 Zilla ,是由 Mozilla 的长期合作伙伴 Typotheque 专门设计的,这个字体是自由开放的。