Wxy 发布的文章

Mozilla 对沃通(WoSign)的处罚终于落定。

前一段时间,Mozilla 就沃通 CA 违规的问题,于 8 月 24 日发起了针对沃通 CA 的调查,并发布了一个问题列表。之后在 10 月 5 日, Mozilla、奇虎 360 、StartCom 和沃通在伦敦举行了闭门商谈,讨论下一步行动。

10 月 20 日,Mozilla 公布了对沃通 CA 的最终处理意见

  • 它不再信任在 10 月 21 日之后签发的沃通 CA 证书
  • 从 Firefox 51 (预计将在 2017 年 1 月 23 日发布)起,移除之前预置的 4 个沃通根证书:

    1. CN=CA 沃通根证书, OU=null, O=WoSign CA Limited, C=CN
    2. CN=Certification Authority of WoSign, OU=null, O=WoSign CA Limited, C=CN
    3. CN=Certification Authority of WoSign G2, OU=null, O=WoSign CA Limited, C=CN
    4. CN=CA WoSign ECC Root, OU=null, O=WoSign CA Limited, C=CN

但是从这 4 个根证书签发的所有代码签名证书、客户端证书、签名平台(WoSignDoc)均不受任何影响。10 月 21 日(包括 21 日)之前签发的所有 SSL 证书也都不受任何影响,都能正常被 Mozilla 的火狐浏览器信任。

预计 Mozilla 的这一决定也有可能被其它主流浏览器所接纳。

此外,Mozilla 提出了六点操作要求:

  1. 提供实施整改计划列表,确保将来不会违例 Mozilla 的 CA 证书策略和 CA/Browser 论坛的基准要求。
  2. 实施整改,并更新其 CP/CPS 来完整描述其改进过程。CP/CPS 必须明确申明禁止倒填超过一天前的证书。
  3. 对所做的整改,提供来自 Mozilla 所认可的 WebTrust 鉴证机构的面向公众的认证。该审计可能需要作为年度 WebTrust CA 审计的一部分。
  4. 提供审计认证,对全部业务进行审计,确认合规 CA/Browser 论坛的基准要求。该审计可能需要作为年度 WebTrust CA 审计的一部分。
  5. 提供审计认证,对 CA 的签发基础设施可以顺利完成执行完整的安全审计。
  6. 所有签发的证书 100% 嵌入证书透明度(CT)信息,嵌入的 SCT 至少有一条来自谷歌,一条来自谷歌之外。

2017 年 6 月 1 日后,在满足 Mozilla 提出的上述 6 点操作要求后,沃通 CA 可以重新走正常申请 Mozilla 根认证流程,重新申请新的根证书预置。

沃通对此表示遗憾, 并宣布:

  1. 将更新数字证书商店Buy网站,从10月22日起,所有从沃通4个根证书下签发的所有收费SSL证书全部一折销售;免费SSL证书继续停止开放;
  2. 将增加一个产品选项,用户可以选购从新的沃通(WoSign)中级根证书下签发的支持所有浏览器(包括火狐浏览器)的SSL证书,在过渡期八折优惠。此中级根证书将由全球信任的其他CA根证书签发,支持所有浏览器和所有新老终端设备。此项产品升级计划一个月内完成并为广大用户提供证书服务;
  3. 将积极按照Mozilla提出的6点要求进行操作,争取在2017年6月1日之后,尽快完成新根证书在各个浏览器系统的预置工作;
  4. 已经并继续对所有系统进行全面的安全审计并加固升级改造,同时完善各种内控管理制度,组建国际标准研究团队和内审团队,确保所有系统100%符合国际标准,所有业务操作严格按照国际标准要求操作,加强员工严格按照标准操作的执行力度,违者将受到严厉惩处。

(题图来自:deviantart.net

2016 年 10 月 20 日,Ubuntu 12 岁了!从 2004 年的这一天,创始人 Mark Shuttleworth 发布了 Ubuntu 的第一个版本 Ubuntu 4.10 (Warty Warthog)开始,Ubuntu 已经发布了 25 个主要版本。

可能有些人还记得当年 Ubuntu Linux 背后的 Canonical 公司所采用的一种赠送 Ubuntu 安装 CD 的方式。当时网络环境并不是很快,下载几百 M 的镜像,还得有个可以刻录 CD 的设备,这对于 Linux 和 Ubuntu 的推广形成了一定阻碍,因此,Canonical 率先采用了一种免费提供安装 CD 的方式。只要你申请,Canonical 就会从国外寄过来包装精美的 Ubuntu 安装 CD。这可能是很多人的第一个正版的软件 CD 呢。那些年, Canonical 到底送出去多少 CD,花了多少邮费,我们并没有一个具体的数据,不过显然不是一个小数目,这也多亏了创始人 Mark Shuttleworth 是一个亿万富翁,Canonical 得益于他的支持,并不像其它的开源组织那样资金捉襟见肘才能行此壮举。

12 年过去了,已经有了 25 个发行版本、十几个特色分支的 Ubuntu 已经成为了现今最流行的 Linux 发行版之一,广泛用于桌面、服务器和云领域。虽然 Mark Shuttleworth 2011 年吹下的牛好像并没有实现,但是他们认为,从某种意义上讲,Ubuntu 的用户可能已经超过了 10亿

而就在前几天,Ubuntu 16.10 (Yakkety Yak)也发布了,下一个版本 Ubuntu 17.04 (Zesty Zapus)明年后,不知道会不会又会再次从字母“A”开始产品代号。

版本历史图来自维基百科)

Ubuntu 从最初的一个主要关注于 Debian 衍生版开始,目前已经将触手探入到服务器、云环境、物联网等各个领域,让我们期待 Ubuntu 取得更好的发展,与开源和自由同在!

使用过 GitHub 的人大多知道它上面有个“Fork”的功能,用来将某个仓库克隆到你的账户之下,从而可以对其进行修改、衍生,也可以比较方便的将你的修改推回到原来的仓库(所谓的上游)。

随着 GitHub 的流行,我们经常能在各种文章中见到,“fork 某某项目”等说法,是的,“fork”这个一直没有一个正式的译名。

其实这个问题不独出现在 GitHub 中,fork 这个词更早的出现在 Unix/Linux 中的 C 语言编程之中。在 Unix/Linux 的进程模型中,fork 是指进程创建自身副本的操作,它通常是一个在内核中实现的系统调用。fork 是 Unix 类系统中进程创建的主要方式(历史上曾经是唯一的方式)。从那个时候起,fork 就一直没有一个确定的译名。

不过,我们认为,对于这样的一个经常使用的专业名词,有一个明确的译名比较适合,虽然大家都习惯了直接用 fork 一词。

fork 一词在英文中的原意是“叉子”, 虽然翻译成“分叉”、“分支”似乎也可以,但是前者较少用做动词,后者则和 Branch 的译名重复混淆。

据 Linux 中国翻译组(LCTT)的译者 dongfengweixiao 提议,可译作“复刻”,我们认为这是一个可取的译法,一方面照顾到了音译,另一方面其释义也形象直观。

补充 1,“复刻”这样的译法,在网络上已存在,包括中文维基)中也采用该译法,只是并未得到公认和流行。

补充 2,据 @爱开源魅影 称,git 软件包里面,蒋新将“fork”译为“派生”。似也可取。

既然说到这里,顺便我们对 复刻 fork 做一个技术方面的简介吧。

复刻 fork GitHub 仓库

在 GitHub 上评价一个项目(仓库)是否流行,其中一个重要指标就是其 复刻 fork 数。

在 GitHub 上参与一个开源项目的程度有三个阶段:

  • star(点赞),如果你觉得某个项目不错,可以为其点赞(star)
  • watch(关注),如果你希望进一步关注这个项目的进展,可以关注(watch)它
  • fork(复刻),如果你还想进一步为这个项目做一些贡献,可以复刻(fork)它到你自己的账户下,做出了修改之后通过 Pull-Request(PR)方式将你的改动推回给原仓库(上游),如果被接纳就会进入到原仓库之中

显然,一个项目的复刻数越高,代表着贡献者越多。

通过 复刻 fork + PR 的方式对开源项目进行贡献的流程类似下图:

我们知道 GitHub 是运行在 Git 之上的,GitHub 中的 复刻 fork 其本质上是 Git 中的 克隆 clone 。关于 GitHub 中的复刻的进一步介绍,可以参考“在 Github 和 Git 上 fork 之简单指南”一文。

顺便说一句,我们的 LCTT 翻译组就是通过 复刻 fork + PR 的方式运作的,这也是 GitHub 上绝大多数开源项目的运作方式。

复刻 fork 子进程

在 Unix 下的 C 语言编程中,通过 fork() 系统调用来对进程本身进行复制,然后被复制出来的子进程就可以执行不同于父进程的操作,或通过 exec() 运行其它进程。典型的 C 代码如下:

fpid = fork();   

if (fpid < 0)   
    printf("error in fork!");   
else if (fpid == 0) {  
    printf("i am the child process, my process id is %d/n",getpid());   
} else {  
    printf("i am the parent process, my process id is %d/n",getpid());   
}

所有的服务器守护进程,包括你所见到的 Web 服务、MySQL 数据库服务等,都是通过这种方式来产生子进程来提供服务的。甚至,整个 Linux/Unix 中的进程,除了 init 进程本身之外,都是由 init 进程 复刻 fork 出来的。关于服务器编程方面的 复刻 fork 的使用,可以进一步参阅“搭个 Web 服务器(三)”一文。

复刻 fork 炸弹

其实,不只是 C 语言里面有 复刻 fork 的功能,在 shell 里面也有,想必大家可能都听说过 “fork 炸弹”,这就是利用函数的迭代执行,无限 复刻 fork 出许多子进程,从而耗尽系统资源,导致系统崩溃的一个恶意(玩笑)用法。

复刻炸弹有很多种形式,不过最简洁的可能就是如上图的这个了,关于这个炸弹的具体解释,可以参阅“经典的 Fork 炸弹解析”,在此就不赘述了。

如果你对 fork 的翻译有不同的意见,欢迎留言评论。

10 月 13 日,Canonical 如约发布了 Ubuntu 16.10 (Yakkety Yak),喏,就是题图这只雪域高原上的牦牛。

按照惯例的开发周期, 这次历经半年开发的 16.10,并不是一个长期支持版本,支持期仅有 9 个月,所以,桌面用户可以考虑更新,而用于服务器和云环境的版本,在产品环境中想必没人会去升级吧。

虽然这样说,作为辛苦努力半年的成果,这个版本还是有不少的亮点值得关注的,毕竟,这个版本是为下一个长期支持版本做的铺垫。

16.10 桌面版的亮点

  • Linux 4.8 内核
    Ubuntu 是第一个使用 Linux 4.8 内核的主流发行版,而这距 Linux 4.8 内核发布还不到一周。显然最新的内核能带来对更多硬件的支持。
  • GNOME 3.22
    一些 GNOME 组件已经更新到了 GNOME 3.22,但是 Nautilus 文件管理器还是 GNOME 3.20 系列。
  • GTK 3
    LibreOffice 5.2 和 Mozilla Firefox 49.0 已经基于 GTK 3 构建。
  • 试验性的 Unity 8 会话
    Unity 8 会话目前还是一个试验性的桌面环境,不过已经默认安装了,可以在登录管理器中选择使用。但是由于 Unity 8 还不够成熟,因此主要的目的还是测试,希望用户可以提交更多反馈意见,或许有的桌面计算机并不能顺利运行它。

16.10 服务器版的亮点

估计是 Canonical 也觉得桌面版其实没什么值得大书特书的新变化吧,Mark Shuttleworth 在其发布公告中也主要提及的是一些服务器、虚拟化和容器方面的变化:“世界上最快的虚拟机管理器 LXD,加上世界上最好的云操作系统 Ubuntu,以及最新的 OpenStack 和 Kubernetes 将为你提供世界上最快和最好的私有云架构。”

  • MAAS 2.0
    MAAS (“ 机器即服务 Metal as a Service ”)是 Canonical 推出的物理云服务概念,它可以让物理的数据中心“感觉就像云一样”,通过 Web 或 REST API 可以让物理机使用定制镜像马上就可以投入使用。它提供了稳健、高可用的 IPAM 和裸机供应。
  • Juju 2.0 支持混合云
    最新发布的 Juju 2.0 可以以一致的、“模型驱动”的方式,跨多个公有云和私有基础设施来运行类似 Hadoop 和 Kubernetes 这样的大型软件。所谓的“模型驱动”操作提供了一种“开源 SAAS”体验。Juju 2.0 增加了 vSphere 架构的支持,支持架构于 OpenStack 和 VMware 上的私有云。
  • OpenStack Newton
    支持最新的 OpenStack Newton,提升了裸机和容器的安全性。但是如果要升级到最新的 OpenStack 架构,这不是一个轻松的过程,需要仔细计划和测试。
  • Snapd 2.16
    Snap 可以让更多的 Linux 服务器、设备和桌面更容易获取分发的应用,目前已经有 500 多个 snap 应用,它们将可以直接从软件开发者得到更新。
  • 网络和虚拟化的性能提升
    更新了 Data Plane Development Kit (DPDK) 、OpenVSwitch (OVS) 。
  • 全方位的容器支持
    支持各种类型的容器: 进程容器(Docker 1.12)、机器容器(LXD 2.4)和应用容器(Snapd 2.16)。

    • Canonical Distribution of Kubernetes 对进程容器,如 Docker、OCID 和 Rkt 提供了更高层面的整合。
    • 而 Canonical OpenStack 及 LXD 纯容器管理器提供了对成规模的轻量级机器容器的高级管理。
    • 机器容器看起来就像虚拟机一样,可以让企业将虚拟机无须修改就可以转移到容器中。

下载

介绍完了各种新特性之后,你或许想实际体验和使用一下崭新发布的 Ubuntu 16.10 了。链接如下:

作为专业人员,我们不少人喜欢玩角色扮演游戏,比如 D&D 这样的,那么有没有想过把你在 Web 前端方面的技能、经验也像游戏里面一样的技能树一样点亮呢?

今天给大家介绍的就是这样的一个有趣的网站:地下城与码农(Dungeons aNd Developers)。

题图就是老王自己点亮的技能树。

啊哈,老王自己都不知道已经懂这么多了。是不是也想试试?

那么就点此链接吧: http://www.dungeonsanddevelopers.com/ ,会看到如下界面:

点击“Open the talent tree »”,即可看到一个空白的技能树,虽然是英文的,不过这应该难不倒你。

英雄!去点亮你的技能树吧,你会回来分享你的链接的。

当然,作为专业人员,只是这样点一点,似乎并不满足,那么我们来探究一下背后所用的技术吧。

这个网站是 352 公司在内部竞赛中产生的,除了精美的仿游戏界面外,采用了 jQueryKnockout 来构建的。jQuery 大家已经熟知了,而 Knockout 可能有的人不太了解,其实它也不太新了,但是它的特性正好用在这个项目上:

Knockout 是一款很优秀的 JavaScript 库,它可以帮助你仅使用一个清晰整洁的底层数据模型,即可创建一个富文本且具有良好的显示和编辑功能的用户界面。任何时候你的局部 UI 内容需要自动更新(比如:依赖于用户行为的改变或者外部的数据源发生变化),Knockout 都可以很简单的帮你实现,并且非常易于维护。

是不是也想自己搭建一个呢?

Linux 4.8 内核发布

Linux 4.8 内核发布

10 月 2 日,经过了两个月的开发,发布了 8 个 RC 版本后,Linus Torvalds 宣布 Linux 4.8 内核正式发布。Linux 4.8 内核会很快随着各个发行版的更新推送给 Linux 用户们,而即将发布的 Ubuntu 16.10 应该是第一个使用最新的 4.8 内核的主流发行版。

此外随着 4.8 的发布,同时也开启了 4.9 的合并窗口——宣告了 4.9 的开发开始。

不过,两天后,Linus 为新发布的 4.8 内核中包含的 bug 进行了道歉。该 bug 由内核开发者 Andrew Morton 引入到 4.8 发布前的最后一个 RC 版本当中,当编译这部分代码时会导致问题,从而编译出来的是一个死内核。显然, 为了应对这个问题,4.8.1 会很快发布。

Ubuntu 16.10 终于支持可选 Unity 8 会话了

可选的 Unity 8 会话

即将在下周发布的 Ubuntu 16.10 发布了最后一个 Beta 版本,在这个版本中,Canonical 之前就说的要把 Unity 8 会话作为可选会话的承诺终于实现了。不过目前 Unity 8 仍然是一个试验性的会话,所以,仅供体验尝鲜。

此外,如上面说的,在这个最终 Beta 版本中,也使用了 Linux 4.8 内核。

DNF 达到 2.0 里程碑

Fedora Linux 的 dnf 软件包管理器发布了 2.0.0 版本,它出现在了 Fedora 的开发版本 Fedora Rawhide 之中,结束了 dnf 1.1 系列。

你可以看看 dnf 2.0.0 的发布公告,但是由于和 1.x 的部分不兼容性,所以看起来不大可能会出现在 Fedora 25 之中。

此外,最近两天 Fedora 24 的 dnf 更新出现了严重错误,在该问题解决前,请勿在桌面环境中执行 dnf update 命令。详见:Fedora 24 的用户,千万不要在桌面里运行 dnf update

KDE 5.8 LTS 发布

在 KDE 赢来 20 周年之际,KDE 开发团队宣布了 KDE 5.8 LTS 正式发布,这是官方认可的第一个长期支持版本,会一直支持到 2018 年。详见: KDE 庆祝 20 岁生日,发布了首个 LTS 版本: KDE 5.8