Month: September 2014

  • [翻译]这根本不是 BASH 的 bug!

    在前几天看到 CVE-2014-6277 这个 BASH 的 bug 的时候,我就觉得挺奇葩的:这这种明显是有意实现的功能怎么会存在这么大的安全隐患呢?我不是专门搞安全的,同时觉得,这个 bug 可能虽然影响广泛,但并不是什么很有技术含量的利用思路。所以我就把这个事情放下没去想它。然而,随之而来的国内国外的各种媒体宣传、安全专家的联名建议、茶余饭后的坊间畅谈……对于 BASH 的这个 bug 无人不认为是个大 bug。不少人为此还在幸灾乐祸……但是我却没从各种评论中找到我的问题的答案。

    但是,当我看到这篇随笔时,我不得不赞同作者的观点:这根本不是 BASH 的 bug!

    所以我将原文翻译至此,希望能够带来一些思考。

    也许我们今天看到的一个愚蠢的 bug,在历史上的某一天,是一个有意而为之的神奇特性。也许我们应该思考的不仅仅是这一刻的 bug 或者安全隐患本身,而是在软件项目这个极具工程和创作品双重特性的活动中,如何有效的保证某个特性不会变成 bug。所以什么规范了,文档了,可真得不是纸上谈兵!

    不过话说回来,无论如何,我仍然坚信:“Less is exponentially more!(大道至简)”少一点 Feature 或许就是少一点 Bug 呢?

    bug-vs-feature

    (more…)

  • 《一意孤行》开源编程游戏汉化版

    经过一段时间的工作(其实没花多少时间),我很高兴的跟大家介绍开源编程游戏 Untrusted 的汉化版:《一意孤行》正式发布了。

    该游戏讲述了一个研究人工智能的教授 Dr. Eval。面对各种挑战,不断前行的故事。好玩的地方在于,每一关,都需要玩家修改不同的 JavaScript 代码来改变逻辑,让角色到达出口。通关这个游戏除了需要玩家有一定的编程知识之外,还要有丰富的想象力和创造力。同时,如果对人工智能的基本原理有所了解,也能让通关过程事半功倍。不过事实证明,代码民工干体力活也能通关的!:D

    在线游戏

    untrusted-1

    untrusted-2

    在线游戏

    (more…)

  • [翻译] channel 独木难支

    原文在此。遗憾的是文章只提出了问题,并没明确提供如何解决这些问题。但无论如何,对于这种可以引起反思的文章,是不能放过的。另外,我得承认,似乎高层次的分布式系统的抽象,用函数式语言的范式来表述更容易一些(实现上其实未必)。

    ————翻译分隔线————

    channel 独木难支
    或者说为什么流水线作业没那么容易

    勇敢和聪明的 Golang 并发模型

    @kachayev 撰写

    概述

    Go 被设计用于更容易的构建并发系统,因此它有运行独立的计算的 goroutine 和用于它们之间通讯的 channel。我们之前都听过这个故事。所有的例子和指南看起来都挺好的:我们可以创建一个新的 channel,可以向这个 channel 发送数据,可以从 channel 读取,甚至还有漂亮和优雅的 select 语句(顺便提一下,为什么 21 世纪了我们还在用语句?),阻塞读和缓存……
    A magical unicorn

    主旨:99% 的情况下,我其实并不关心响应是由 channel 传递的,还是一只魔法独角兽从它的角上带来的。

    (more…)