2020年8月

编程驱动一个微处理器芯片是相当有难度的,但在嵌入式系统开发上,实时操作系统可以为你解决很多此类的困难。

 title=

从通用计算的角度,操作系统是提供计算机基本功能的一组软件。操作系统保证了计算机硬件可以探测并响应外围器件(如键盘、屏幕、移动设备、打印机等),并管理内存空间和外部存储空间。

虽然一个 CPU 核心同一时间只能运行单个线程,但现代操作系统可以使多个程序表现的像是在同时运行。每一个任务执行的如此之短,一系列任务切换的如此之快,以至于看起来多个任务像是在并行进行。这一切都是由一个叫做 调度器 的子进程来控制的。

操作系统通常是为计算机准备的,安装在硬盘上,管理计算机所要执行的任务。

为什么实时操作系统对嵌入式系统而言不可或缺

我曾经在 2008 年接触过嵌入式软件,那时候我还是一名学生,正在学习 MCS-51 微处理器编程。因为我的主修专业是计算机科学,我在其它课程中的所有程序都是在 PC 上执行的。为微处理器芯片编程是完全不同的体验。人生中第一次,我看到我的程序在裸板上运行,即使到现在我仍然记得,在我看到自己人生中第一个走马灯程序成功运行时的那种兴奋和激动。

但那种兴奋转瞬即逝。随着为裸板写出越来越多的程序,我遇到了越来越多的问题。这种沮丧并不是我独有的。直接为芯片写程序很困难,这也是 PC 要运行操作系统的很重要的原因。不幸的是,微处理器芯片(或嵌入式系统)通常是没有操作系统的,它们只能采用“硬编码”的方式编程,没有操作系统帮助你管理代码的运行。

在以“硬编码”的方式为处理芯片编写代码的时候,可能会遇到下列问题:

并发

在裸板上是没有管理程序运行的现成守护进程的。嵌入式系统软件中,无可避免的要把所有的逻辑功能放在一个巨大的 while (1) 循环中。每个功能可能包含一个或多个延时函数。CPU 在运行延时函数的时候是顺序执行的,没有任何办法跨越一个不必要的延时。正因如此,运行事务的复位操作只能是等待。最终结果就是很多的 CPU 处理时间浪费在空循环上,这对任务的并发非常不利。

模块化

从软件工程的角度,高內聚低耦合原则在软件开发过程中被不厌其烦的频频强调,但是嵌入式软件的不同模块之间常常是重度耦合的,很多功能都集中在一个巨大的 while (1) 循环中,很难切分为模块。设计低耦合软件在编程上只是繁琐一些,但在嵌入式系统上,要低耦合就难以编写比较大型的软件。

与此同时,如果使用了看门狗定时器,程序员还得在调用延时函数时倍加小心。如果延时时间太长,主程序没有得到及时“喂狗”的时机,那么看门狗将在程序运行过程中被触发。嵌入式系统软件开发过程中,需要考虑的东西太多了,即便是个简单的延时函数,都不能掉以轻心。软件越复杂,就越需要细心。想象一下,试图将这一系列具有精细时间关系的交互功能拆分为模块会怎么样。

软件生态

很多高级的软件组件依赖于其所基于的底层操作系统的实现。举个自身的例子,我曾开发过一个基于 FreeModbus 的开源项目,原计划将它移植到多种平台上,包括裸板。但与适应不同操作系统的便利性相比,有些功能过于复杂,无法在所有裸机板上实现。更糟糕的是,很多硬件平台因为缺乏一致性,只能各自从头做起。

直至现在,我的 Modbus 栈仍然不支持在裸板上运行。

很多像 Realtek、TI 和 MediaTek 的大厂,所提供的 WiFi 软件开发工具只能在操作系统上运行,且他们不公开固件源码,所以在裸板上根本没法使用这些工具。

实时性

有些应用领域对实时性有要求,比如有些场景中,必须在特定的时间触发特定的软件操作。在工业控制场景,机器实体控制过程中,机械部件必须以确定的时间和确定的顺序执行动作。如果不能保证控制系统的实时性,整个机器可能出现功能异常,甚至危及工人生命。在裸板平台,所有的功能都塞在一个巨大的 while (1) 循环中,实时性无从保证。

重用性

重用性依赖于模块化。没谁愿意翻来覆去做一成不变的事,对程序员而言更是如此。这不单单是浪费时间,更要命的是这使得代码的维护异常复杂。尤其是,因为功能的实现依赖于底层的硬件,使用了不同芯片的不同硬件平台上,同样的功能必须适配不同的硬件平台。这种情况下,重新发明轮子是无法避免的。

实时操作系统的优势

幸运的是,现在有针对各种微处理器芯片的操作系统,它们被称为实时操作系统(RTOS),和大多数操作系统一样,它们拥有调度器,保证代码以可预见的顺序运行。

我是在 2010 年初次在裸板上使用实时操作系统。那时候,STM32 系列微处理器(MCU)开始流行,因为这种微处理器性能强大、功能丰富,很多人在上面跑操作系统。我使用的是 RT-Thread 操作系统,有很多基于它的现成组件可用。它使用的是 Apache 2.0 许可,和其它操作系统相比,我觉得这个很舒心。我已经基于它作为平台从事开发工作 10 年了。

使用实时操作系统为裸板编程,操作系统为我们解决了需要处理的大部分问题。

模块化

在操作系统支持下,整个软件可以分割为多个任务(即线程)。每个线程拥有自己独立的运行空间。线程之间互相独立,这促进了软件的模块化。

并发

如果一个线程有延时函数,它将自动让出 CPU 资源给需要 CPU 的线程,这提高了 CPU 的整体利用率,也提升了系统的并发性能。

实时性

实时操作系统从设计上就具备实时性。每个线程都被指定了特定的优先级,比较重要的线程设置为更高的优先级,不重要的线程优先级也低。正是以这种方式,软件整体的实时性得到了保证。

开发效率

操作系统提供了统一的抽象接口,这使得可重用组件得以不断积累,同时提升了开发效率。

操作系统是软件极客集体智慧的结晶。很多通用的软件功能,如信号量、事件提醒、邮箱、环形缓冲、单向链表、双向链表等,被抽象出来并实现了封装,可随时调用。

Linux、RT-Thread 等操作系统为五花八门的硬件实现了一致的硬件接口,也就是常说的设备驱动框架。正因如此,软件工程师可以专注于软件开发,而不用关心底层的硬件,也不用重复造轮子。

软件生态

RT-Thread 丰富的软件生态为大量的从业者带来了巨大的改变。操作系统带来的模块化和重用性,使得程序员可以基于 RT-Thread 封装出方便嵌入式系统开发使用的可重用组件。这些组件可以在其它项目中重用,也可以分享给其他的嵌入式应用开发者,以最大化软件的价值。

比如,LkdGui 是个开源的单色显示图形库,你可能在工业控制面板上简单而美观的设置界面上见过它。LkdGui 提供了像描点、画线、绘矩形及显示文本、按钮组件、进度条等绘图功能。

 title=

使用像 LkdGui 这样兼具扩展性和健壮性的功能库,程序员们可以在同行已有工作成果的基础上充分施展自己的才能。而这一切,没有实时操作系统这样一个统一的基础,是根本不可能的。

试用 RT-Thread

作为开源极客,我已经在 GitHub 上开源了一些嵌入式软件。在发布开源软件之前,我很少对他人谈及自己曾经的项目,因为不同的人在使用各种不同的微处理器芯片和硬件平台,我的代码极可能无法在他人的板子上运行。类似于 RT-Thread 这样的实时操作系统极大的提升了软件的可重用性,所以全世界的不同领域的专家得以就同一个项目展开探讨。这鼓励着越来越多的人分享和交流各自的项目。如果你在做裸板的软件开发,下次可以试试 TR-Thread。


via: https://opensource.com/article/20/6/open-source-rtos

作者:Zhu Tianlong 选题:lujun9972 译者:silentdawn-zz 校对:wxy

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

使用合适的命令,你可以快速了解 Linux 系统上使用的命令以及执行的频率。

汇总 Linux 系统上使用的命令只需一串相对简单的命令以及几条管道将它们绑定在一起。当你的历史记录缓冲区保留了最近的 1,000 或 2,000 条命令时,总结你的命令活动可能会变得很乏味。这篇文章提供了一种方便的方法来汇总命令的使用情况,并高亮显示最常用的命令。

首先,请记住,典型的命令历史记录可能看起来像这样。请注意,命令是显示在命令序列号之后,并紧跟其参数。

91  sudo apt-get install ccrypt
     ^
     +-- command

请注意,history 命令遵循 HISTSIZE 的设置,这会决定保留多少条命令。可能是 500、1,000 或更多。如果你不喜欢它的设置,那么可以在 .bashrc 或其他启动文件中添加或更改 HISTSIZE 设置。

$ echo $HISTSIZE
1000
$ history | wc -l
1000
$ grep HISTSIZE ~/.bashrc
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000

记下大量命令的主要好处之一是,它可以让你轻松地重新运行过去使用的命令,而不必重新输入或记住它们。它还能让你轻松地查看你在一个任务中已经做了多少工作。单独使用 history 命令时,你会看到类似下面这样,最早的在最前面:

$ history
    7  vi tasks
    8  alias
    9  echo $HISTTIMEFORMAT
   10  history
   11  date
   …

查看最新使用命令需要查看记录的命令的尾部:

$ history | tail -4
 1007  echo $HISTSIZE
 1008  history | wc -l
 1009  history
 1010  history | tail -4

另外,你可以使用 tail 命令查看 .bash_history 文件的尾部,但是 history 命令显示的数字可以让你输入如 !1010 这样的数字重新运行命令,这点通常更有用。

要提供已使用命令的汇总(例如 viecho),你可以首先使用 awk 将命令与 history 中保存的其他信息分隔开来:

$ history | awk '{print $2}'
vi
alias
echo
history
date
…

如果你将历史记录中的命令列表传递给 sort 命令以按字母顺序对命令进行分组,那么会得到以下内容:

$ history | awk '{print $2}' | sort
7z
7z
alias
apropos
cd
cd
…

接下来,将 sort 命令的输出传递给 uniq -c ,这将计算每个命令使用了多少次:

$ history | awk '{print $2}' | sort | uniq -c
      2 7z
      1 alias
      2 apropos
     38 cd
     21 chmod
…

最后,添加第二个 sort 命令按倒序对命令组计数进行排序,这将先列出最常用的命令:

$ history | awk '{print $2}' | sort | uniq -c | sort -nr
    178 ls
     95 vi
     63 cd
     53 sudo
     41 more
…

这样可以让你了解使用最多的命令,但不会包括任何你可能故意从历史记录文件中删除的命令,例如:

HISTIGNORE="pwd:clear:man:history"

当修改了历史记录格式时

对于默认的历史记录格式,history 命令输出中的第一个字段将是每个命令的序号,第二个字段是使用的命令。因此,上面所有 awk 命令都设置成显示 $2

$ alias cmds='history | awk '\''{print $2}'\'' | sort | uniq -c | sort -nr'

如果你像下面那样将日期和时间添加了到 history 命令中,那么你还必须修改所设置的别名:

$ echo $HISTTIMEFORMAT
%d/%m/%y %T

这个日期/时间信息有时会很有帮助,但是这意味着你必须在选择 history 命令的第 4 个字段而不是第 2 个字段来汇总命令,因为你的历史记录条目将如下所示:

91  05/07/20 16:37:39 sudo apt-get install ccrypt
                       ^
                       +-- command

因此,在将 $2 变为 $4 之后,用于检查 history 命令的别名将改为这样:

$ alias cmds='history | awk '\''{print $4}'\'' | sort | uniq -c | sort -nr'

可将别名保存在 .bashrc 或其他启动文件中,请确保在 $ 符号前面插入反斜杠,以便 bash 不会尝试解释 $4

alias cmds='history | awk '\''{print \$2}'\'' | uniq -c | sort -nr'
alias cmds='history | awk '\''{print \$4}'\'' | uniq -c | sort -nr'

请注意,日期和时间信息与命令本身保存在历史记录文件的不同行中。因此,添加此信息后,bash 历史记录文件的行数将增加一倍,尽管在 history 命令输出时不会:

$ wc -l .bash_history
2000 .bash_history
$ history | wc -l
1000

总结

你可以随时决定要保留多少命令历史记录,哪些命令不值得记录,以使你的命令摘要最有用。


via: https://www.networkworld.com/article/3567050/summarizing-your-command-usage-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

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

银河麒麟桌面操作系统 V10 发布:Win7 般体验、兼容安卓生态

该系统是银河麒麟和中标软件共同打造的最新成果,号称提供类似 Win7 的体验,支持国产龙芯、飞腾、鲲鹏等 CPU,还可以兼容安卓生态。中国工程院院士廖湘科表示,银河麒麟操作系统 V10 成功打破国外技术的垄断,麒麟操作系统在我国党政企业已达到 10000 家。中国工程院院士倪光南表示,麒麟操作系统安全等级已达到国内最高等级,相信国产自主创新软件会逐步替代国外垄断,这个时间短则三五年。

来源:快科技

拍一拍:嗯,来自院士们的加持,?

科学家让砖头能储存电能

华盛顿大学的化学家将普通的建筑砖头变成储能电池,能为 LED 灯直接供电。化学系助理教授 Julio D’Arcy 和同事利用砖的多孔结构,使用气相沉积技术为整块砖添加了一层名为 PEDOT 的导电聚合物,让砖变成一个储能电极。砖本身的红色色素——氧化铁(铁锈),对于诱发聚合反应来说十分关键。

来源:solidot

拍一拍:唔,住在电池房子里面。真正是奇怪科技呀。

此快速教程介绍了如何使用在基于 Ubuntu 的发行版上使用官方 PPA 安装最新版本的 HandBrake。

HandBrake 是可用于 Linux、Windows 和 macOS 的最受欢迎的开源视频转换器之一。

此 GUI 应用让你只需单击几下即可将视频从一种格式转换为另一种格式。你还可以根据需要自定义输出视频。

HandBrake 存在于 Ubuntu 的通用存储库中,但它可能并不总是最新版本。让我向你展示如何在 Ubuntu 和其他基于 Ubuntu 的发行版(如 Linux Mint、Linux Lite、elementray OS 等)上获得最新的 HandBrake。

在基于 Ubuntu 的 Linux 发行版上安装最新的 HandBrake

HandBrake 的开发人员维护着一个官方的 PPA使用此 PPA,你可以轻松地在基于 Ubuntu 的发行版中安装最新版本的 HandBrake。

打开终端,然后使用以下命令添加 PPA 仓库。需要时按下回车键:

sudo add-apt-repository ppa:stebbins/handbrake-releases

你可能需要更新本地软件包缓存(在 Ubuntu 18.04 和更高版本中不是必需的):

sudo apt update

现在,使用以下命令安装最新版本的 HandBrake:

sudo apt-get install handbrake-gtk

这个方法最好的地方是会删除旧的 handbrake 软件包,从而避免安装两个不同版本的 handbrake。

在你的 Linux 系统上享受最新最好的 HandBrake 并转换视频。

从系统中卸载 HandBrake

由于某些原因,如果你不喜欢 HandBrake 并希望将它删除,那么需要执行以下操作。

打开终端并使用以下命令卸载 HandBrake:

sudo apt remove handbrake-gtk

现在,你已经删除了该应用,如果你不再需要它,那么删除它的 PPA 是一个好主意。

sudo add-apt-repository -r ppa:stebbins/handbrake-releases

在询问时确认。

在这篇快速 Ubuntu 教程中,你学习了使用 PPA 安装最新的 HandBrake 的步骤。你还了解了正确删除它的步骤。

我希望你觉得这篇快速教程有用。如果你有任何问题或建议,请在下面发表评论。


via: https://itsfoss.com/install-handbrake-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客第一季(3):敏捷革命音频脚本。

现在是 21 世纪之交,开源软件正在改变着科技的格局,现在已经需要一种新的工作模式了。开发者们在寻找一种革命性的方法,让开源开发蓬勃发展。一群开发者在犹他州的一个滑雪场召开了会议,形成的是一份改变一切的宣言。

敏捷软件开发宣言 Manifesto for Agile Software Development 》的作者之一 戴夫·托马斯 Dave Thomas 将我们带回了那个现在著名的静修之地,敏捷革命就是在那里第一次组织起来的。不过,并不是每个人都那么快就签下了这种新方法,在这一集里,我们听听原因。

Saron Yitbarek: 有些故事的走向和结局会重新定义一个行业。在这些故事中也传唱着,我们来自哪里,我们是谁,我们正在做什么。上一集中,我们追溯了 Linux ® 开源技术的崛起。但这一集我要讲的,是紧接着发生的故事。操作系统之战结束后,开发者们成为了战争争夺的对象和核心。

00:00:30: 在那个新的战场,开发者们将要重塑自己的工作。本集播客,我们将深入了解以开发人员为核心,产生的一种全新的软件开发方法论。这种新颖的工作流程产生了哪些远超我们屏幕上显示的代码所能控制的、意想不到的事情。

我是 Saron Yitbarek,欢迎收听红帽的原创播客《代码英雄 第三集 敏捷革命》。今天的故事始于 2001 年 2 月,发生在美国犹他州的滑雪小屋里。

00:01:00 - Dave Thomas: 我们面前有个小屋,眼前是松树梁和壁炉,还有进入屋子的小门。我们前一天晚上到达这里时,然后基本上只是围坐在一起,讨论谈我们准备探讨的内容。紧接着第二天,我们都起床,并来到了预定的会议室。先把桌子移到边上去,然后将椅子摆放成一圈,确切地说是一个椭圆,这样一来我们就可以面对面交流,一定程度上也让人感觉到可以敞开心扉,畅所欲言 。

00:01:30 - Saron Yitbarek: 刚才提到的这群人都是开源开发人员,所以保持开放是他们的特点。Dave Thomas 和其他的 16 个人,在那个冬天集聚在雪鸟滑雪场。但是他们的目的并不是滑雪,而是探讨在 90 年代开发者的世界所面临的问题。在这里我用“探讨”,但实际上用“辩论”更准确。他们最初是在 面向对象编程、语言及系统 Object-Oriented Programming, Languages and Systems (OOPSLA)的会议上认识的,这个会议主要议题是面向对象程序设计、编程、语言和系统。

00:02:00: 实际上正是那次会议,让他们意识到当前的软件开发方式很混乱,只是对于该怎么办没有达成一致。

所以此次在雪鸟山上的开会,试图寻找解决这个问题的方法。那么究竟是这个问题具体该怎么描述?于是我询问 Dave,开发人员之前的使用方式到底出现了什么问题。

Dave Thomas: 所以,我不知道……你有没有装饰过房间?

Saron Yitbarek: 我有。

00:02:30 - Dave Thomas: ……好。如果我先告诉你,“我想让你坐下来,然后给你一张白纸。接着我希望你能描绘下来这个房间完成后大概的样子。”可以想象吗?

Saron Yitbarek: 嗯嗯(肯定的语气)。

Dave Thomas: 你能做到吗?

Saron Yitbarek: 实际上,我的办公室就是这么布置出来的。首先,我画了一个简单的草图,然后加上一些修饰,最后把所有架子摆放在我觉得合适的位置。不过这种方式没有真正起到作用,我的计划也没有实现。

Dave Thomas: 但是,即使你尝试了这种方式,你都做了什么?先把架子放起来,然后说,“哦……这样放不行,因为会挡道。”所以,你又紧接着把架子移到其它地方,或者你会说,“你知道吗,我真的不能把地毯放在那里,因为我的椅子脚会陷进去。”状况频发。

00:03:00 -Dave Thomas: 遇到未知的情况,你总需要一种“迭代”的方式去应对。人类的大脑无法准确地对现实世界的发展进行预判,从而提前预知哪里需要改变。所以,软件开发也是一样的,人们不知道他们的需求会怎么改变。对吗?

Saron Yitbarek: 嗯嗯(肯定的语气)。

00:03:30 - Dave Thomas: 我经历过太多这样的情况,当我从客户那里拿到了详细的要求,然后我已经很好地完成了每一条细则,但却总是吵得不欢而散。“这不是我们想要的。” 但我想说的是,“这就是你要求的啊。”他们说,“是的,但这不是我的意思。”你懂这种情况吗?

Saron Yitbarek: 嗯嗯(肯定的语气)。

Dave Thomas: 所以说,理想情况是,你可以详细说明流程的每一步,然后通过非常机械的步骤就可以完成一切。

Saron Yitbarek: 是啊。

00:04:00 - Dave Thomas: 但是在软件行业可行不通。这种方式不适用于有任何模棱两可的情况,也不适用于需要判断的情况。就像任何艺术尝试一样,这种方式就是行不通。总是缺失了关键的一步:反馈。

Saron Yitbarek: 也许你已经听说过上世纪 90 年代的软件危机。当时的软件开发一团糟。相比于开发软件的费用,公司在修复软件上的钱花的多得多。与此同时,你我这样的开发人员进退不得。有时候,我们每隔好几年时间才能推出新的软件。

00:04:30: 我们疲于应付这些缓慢、陈旧、瀑布式开发的工作流程。从 A 到 B 到 C,完全都是提前确定好的。因此,那时的时间消耗主要在寻找新的流程,寻找更好的软件开发方式上。事实上,每个月似乎都有新的开发者,对如何改善软件开发的过程提出宏伟的设想。

00:05:00: 其中就有极限编程、有 Kanban、还有统一软件开发过程等,不胜枚举。在这些方法论的激烈竞争中,也催生出了新的观点和改进方法。那就是 Dave Thomas 和他在雪鸟滑雪场的朋友们迫不及待开始探讨的领域。

值得让这群人齐声欢呼喝彩的就是《敏捷软件开发宣言》。当时的开发速度正在以前所未有的速度保持增长 —— 而开源使开发人员变得更强大。另一方面,开发人员也需要一种新的敏捷的开发模式。

00:05:30: 顺便提一下,那些在雪鸟滑雪场会面的人,在经过一番你来我往的争论后,才确定用这个词。 敏捷 Agile ,这个词非常切题。这种方式就好像国家地理描述大型猫科动物的方式,一个与瀑布式开发预设路径正好相反的词。随着新的信息层出不穷,这个词让那些愿意改变航向的人看到了一线曙光。请注意这可不是一个名词,而是一个形容词。

00:06:00: 敏捷将会是一种习惯,而不是一种具体的说辞。那么,那些采用敏捷的开发者提供了什么呢?他们的总体解决方案是什么?现在很多人都认为敏捷是一个复杂的集合,包括不同的角色和是系统。会有一个 项目经理 scrum master ,一个 项目 scrum 团队,一个产品负责人。同时他们都要进行一到两周的冲刺工作。

00:06:30: 与此同时,工作都堆积在“冰盒”和“沙盒”中。好吧,听起来感觉流程很多。但一开始的时候是没有这些流程的。撰写该敏捷宣言的人,目标是简单和清晰。实际上,简单是它制胜的法宝。从那时起,它就具有定义几乎每个开发人员命运之路的能力。

Dave Thomas: 我们已经提到了,我们更喜欢某种方式,而不是另一种方式。事实上,在午餐这段时间,我们就写下了几乎所有的观点,现在都是敏捷宣言的一部分。

00:07:00 - Saron Yitbarek: 这是可以管理开发的四个奇思妙想。如果你尚且还不熟悉那些敏捷的诫命,他们会这样解释:

个体和互动胜过流程和工具;可工作的软件胜过文档;客户协作胜过合同谈判;响应变化胜过遵循计划。

00:07:30: 我记得第一次看到这个宣言时的情形。我刚开始学习编程,老实说,当时我并没有觉得这个想法有多棒。一直到我了解到那些支持敏捷开发的工具和平台。对我来说,这只是一些模糊的概念。但是,对于长期以来一直被这些问题纠缠的开发人员来说,这是一个很好的行动方案。

该宣言是一盏灯,可以激发更多奇思妙想。这四点宣言和一些支持材料都发布在 Agilemanifesto.org 网站上,并且呼吁其他开发者签名以表示支持。

00:08:00 - Dave Thomas: 很快获得了 1000 个签名,接着 10,000 个,然后签名数一直在增长,我想我们都惊呆了。这基本上变成了一场革新运动。

Saron Yitbarek: 他们从来没有计划过把这份敏捷宣言带出滑雪小屋。这只是一群热衷于软件开发的人,并且对帮助他人更好地发展充满热情。但很明显,“敏捷” 本身像长了腿一样。红帽公司首席开发倡导者 Burr Sutter 谈到了“敏捷”对于还困在“瀑布”中的开发人员来说是一种解脱。

00:08:30 - Burr Sutter: 因此,敏捷的概念从根本上引起了人们的共鸣,基本上是在说:“看,我们专注于人员而不是流程。我们专注于交互和协作而不是工具和文档。我们认为工作软件高于一切,我们宁愿人们通过小批量的工作,实现高度互动、快速迭代。”

00:09:00 - Saron Yitbarek: 而对于一些人来说,这个开发者的革新走得太远。敏捷甚至被视为是给那些不负责任的黑客心态的合理说辞。早期反对敏捷最重要的声音之一是 Steve Rakitin。他是一名软件工程师,拥有超过 40 年的行业经验。

00:09:30: 当他大学毕业时,Rakitin 就开始建造第一个核电站数字控制系统。几十年来,他一直致力于研发电力软件和医疗设备软件。这些都是对安全很注重的软件。没错。你可以预料到,他可不会对这种手忙脚乱的开发方式感兴趣。

因此,在方法论战争的尾声,敏捷横空出世,Rakitin 对此翻了个白眼。

Steve Rakitin: 就像是,“好吧,我们换种方式说,如同一群人围坐着喝着啤酒,就想出了开发软件的其他办法。”顺便提一下,敏捷宣言中许多已经得到进一步发展,并应用于早期的开发方法里了。

00:10:00 - Saron Yitbarek: 他这么想其实也没有什么错。实际上你可以在 “雪鸟峰会” 前几十年就追溯到敏捷哲学的踪迹。例如,像 看板 Kanban 这样的精益工作方法可以追溯到 20 世纪 40 年代,当时丰田受到超市货架存货技术的启发……

他们的精益制造理念最终被用于软件开发。不过 Rakitin 有另外一个担忧。

00:10:30 - Steve Rakitin: 这篇宣言发表时我非常怀疑它,因为它基本上是为了让软件工程师花更多的时间编写代码,花更少的时间搞清楚需要做什么,同时记录文档的时间少了很多。

Saron Yitbarek: 对于 Rakitin 来说,这不仅仅是提出新的工作流程创意。这也关乎到他职业生涯的清白声誉。

00:11:00 - Steve Rakitin: 长期以来,相比于电气工程和所有其他工程学科,软件工程并未被视为正规的工程学科。在我看来,部分原因是因为普遍缺乏软件工程师认可的公认实践。

00:11:30: 当我们经历了 90 年代的十年,逐渐开始明晰其中的一些流程。似乎其中一些已经在事实上被实施,而且也很合理。

然后敏捷宣言的出现了。如果软件工程将成为正规的工程学科,那么你就需要流程化的东西。其他所有工程学科都有流程,为什么软件工程就没有?

00:12:00 - Saron Yitbarek: 我是 Saron Yitbarek,你正在收听的是红帽的原创播客代码英雄。那么,如果我们把在核电站工作的人士的观点放在一边,转而关注更广阔的企业界,我们发现敏捷已经逐渐广受认可。但这件事不是自然而然,没有丝毫阻力就发生的。

Darrell Rigby: 我想我们在采用敏捷开发中,受到的最大阻力来自中高级管理层。

00:12:30 - Saron Yitbarek: 这位是 Bain&Company 的合伙人 Darrell Rigby。他们一直尝试在软件开发公司中推行敏捷开发。不仅如此,还包括产品开发、新闻服务开发、广告计划和忠诚度计划等。不管他们要做什么,项目管理者都会面临点压力。

Darrell Rigby: 敏捷改变了他们的价值,因为他们正在逐步退出细节上的管理或干预。现在团队被赋予权力,对他们加以指导。

00:13:00 - Saron Yitbarek: 现在,敏捷并不能保证阻止中间轻微的干预。我承认,我第一次看到一个敏捷管理委员会时,我认为这是一个永无止境的待办事项清单,我有了点压迫感。但后来当我开始真正使用敏捷产品管理工具时,我完全变成了它们的粉丝。我是一个编码培训营的新人,我试图弄清楚如何确定功能的优先级并做出产品决策。

00:13:30: 那些看起来很可怕的工具让我有了所有这些想法,然后给它们命名、顺序和结构。从而可以帮助我更好地管理我的项目。所以,我确实同意 Rigby 的观点。有些人可能会看到这些工具产生的影响并认为,如果敏捷赋予开发人员权力,那么就会剥夺经理们的管理权。

但是,它的价值比任何一个职位都要大,敏捷开发的发展势如破竹。更重要的是,它正在证明自己。

00:14:00 - Darrell Rigby: 目前,成千上万的团队已经采用敏捷开发。因此,我们有很多关于此数据。答案是,无论何时你开始创新,相比你现在使用的方式,敏捷团队能更好实现目标。

00:14:30: 有许多更大的、知名的公司都在变革自身。亚马逊是敏捷方法的重要用户。奈飞、Facebook 和 Salesforce —— 他们都是敏捷的重度用户,实际上敏捷方法不仅重新定义了工作方式,更是重新定义了行业的运作方式。

Saron Yitbarek: 当 Rigby 第一次听说 敏捷 agile 时,他认为这是一种奇怪的语言。他当时正在与许多大型零售商的 IT 部门合作。无意间听到他们谈论 “time boxes”、“sprint” 和 “scrum master” 。起初,他并不懂他们在说什么。他告诉我他实际上是试图忽略任何有关敏捷的字眼,就像这是他不需要学习的另一种语言。毕竟,他本人不是开发人员。

00:15:00: 但是如今,他却成为了敏捷信徒,把敏捷带到他的家里,带入他的教堂。

Darrell Rigby: 我不一定每天早上都和家人坐在一起,和他们一起参加敏捷开发式的会议。但是,我已经非常擅长为我要做的事情排优先级。

00:15:30 - Saron Yitbarek: 十多年来,敏捷已经从边缘走向主流。但是,企业认同还是有代价的。在某些情况下,这种同化甚至会使敏捷宣言的最初意图变得模糊。Dave Thomas 让我想起了这一点。他说,当他和其他 16 位雪鸟会议上的伙伴第一次写下宣言时,根本没有既定的指示。

00:16:00: 因此,即使宣言中没有告诉你如何应用这些条例,我猜想你已经对大概会发生什么,还有人们会怎么做,有一些大概的思路了吧?

Dave Thomas: 老实说啊,我还真没有。

Saron Yitbarek: 听到这里,你可能会感到惊讶。因为敏捷现在看起来很有说服力。有书籍、认证、工具、课程和产品的整个市场,向你展示如何“实现敏捷”。

Dave Thomas 表示,尽管有成千上万的手册和专业人士想要向你展示“唯一真理”,他们却错过了重点。

Dave Thomas: 实际上它是一组价值观。

00:16:30 - Saron Yitbarek: 嗯嗯(肯定的语气)。

Dave Thomas: 我想这就像黄金法则。你知道,如果你要做一些邪恶恶毒的事情,你会想,“好吧,如果有人这样做,我又怎么会喜欢。”你知道吗,这种场合也适合用黄金法则。

好吧,敏捷宣言也是如此。它并没有告诉你该做什么,不该做什么,它只是告诉你,你做的一切是否符合这个价值观。

00:17:00 - Saron Yitbarek: 是的。我想只要回到敏捷软件开发宣言的名称、真正脱颖而出并且经久不衰的一个词,也是人们真正关注的就是“敏捷”。那么现在使用“敏捷”这个词又出了什么问题呢?

00:17:30 - Dave Thomas: “敏捷”这个词的问题在于,在我们刚开始提出的时候,它是描述软件开发的形容词。但接下来人们就产生了疑问:“我该怎么着手实施敏捷呢?”

00:18:00: 突然之间,涌出了一大批咨询顾问,他们看到了 极限编程 Extreme Programming (XP)的成功,看到了宣言的成功,“嘿,那里有座金山。” 然后就开始告诉人们如何“做敏捷”。这是一个问题,因为你不能“做”敏捷。敏捷不是你要“做”的事情,而是你如何做事情的方式。

然而,有些公司会乐意卖给你敏捷相关的套装。我觉得这很讽刺。这里的咨询就好像是进入一家财富 1000 强企业,然后帮助他们设定“敏捷”。然后带走了 500 万美元。你懂吗?太棒了,钱真好赚。

00:18:30: 但是,现实情况是,这就像告诉要老虎如何变得敏捷一样,说:“先走七步,然后左脚迈出来,然后再走两步,然后迈出右脚。”嗯,实际上只有瞪羚做同样的事情,这才会是有用的。你猜怎么着?没有人告诉瞪羚这样做。瞪羚基本都会跑到地平线尽头上大笑起来,因为老虎在“邯郸学步”。

00:19:00: 当你告诉团队如何敏捷时,会发生同样的事情。如果你对他们说,“这是你必须遵循的规则,这是你必须遵循的流程”,然后他们唯一能做的就是跟随职责,因为他们已被设定好该执行的程序。管理层将根据他们服从原则或程序的程度,而不是开发软件的水平来判断表现如何。

00:19:30 - Saron Yitbarek: 所以,回顾一下,宣言发布之前和之后的开发者的角色,是如何因为你的宣言本身改变或扩展的呢?

00:20:00 - Dave Thomas:我认为大多数程序员都能理解到关键点,这值得肯定。我觉得敏捷宣言给了许多开发人员按照这种方法去做的授权,某种程度上是他们以前就知道该如何,但从来没有权利这样做。像测试收集反馈,缩短迭代周期之类的事情。因此,在许多方面,工作变得更有趣,更充实。

同时我认为,程序员也可能会感到有点害怕,因为现在他们有了责任。过去,他们只是遵循命令。这个程序不起作用?好吧,但我遵循了规范。而如今,程序员肩负着责任。

00:20:30: 所以,我觉得这个职业因敏捷宣言而有所成长。我认为人们开始意识到,他们对自己所开发东西负有点对点的责任。

00:21:00 - Saron Yitbarek:敏捷取得了如此广泛得成功,改变了工作流程和态度,远远超出了开发者世界的范畴 —— 当然也超越了雪鸟会议召开的小木屋。我们不禁要问,“相比于 2001 年撰写宣言时,今天成为敏捷开发人员意味着什么?”

最初的敏捷精神是否仍然存在?如果确实发生了变化,这是一件坏事吗?对于谷歌的多元化业务合作伙伴 Ruha Devanesan 来说,敏捷的思维方式,可能已经发展到影响公平性和在工作场所中的平等性了。

00:21:30 - Ruha Devanesan:让团队具有包容性的部分原因,是他们在进行非常基础的工作时,可以评价和反思自己。当大多数团队一起工作时,他们没有足够的时间这么做。没有足够的动力停下来思考他们团队宗旨,是否每个人都在能桌上发表意见,关于是否有人在推动其他人,或者是否有人在一直都保持沉默。如果他们保持沉默,为什么他们保持沉默?

00:22:00: 因此,在考虑包容性时,我认为敏捷团队使用的一些工具在为团队创建架构,或更具包容性的框架方面非常有用。所以多样性包括性别、种族,还有功能多样性。功能多样性为团队带来了复杂性。

00:22:30 - Saron Yitbarek: 但是,我们在这里要声明他们的不同。Ruha 并不是说敏捷就等于多样性。她的意思是,“敏捷加多样性等于更好的团队。”Ruha 的想法在她写的一篇名为《论通过敏捷方法解锁多样性》的文章中得到了体现。我们将在演示笔记中添加一个链接 —— 这可是值得一读的文章。

在这篇文章中,她会引导你去了解,多元化不仅仅是人力资源部门一直在谈论的模糊概念。这里提供了一个强有力的商业案例。利用敏捷工具,可以创建一个包容性的工作场所,和创新效率提升。多样性可以与敏捷相辅相成。

00:23:00 - Ruha Devanesan: 这篇介绍复杂性的文章,最终目的是让大家从不同的角度看待你的结果或产品。当我们说为团队增加多样性可以带来更好的结果,带来更多的创新和创造力时,我们持有的是基本同样的观点。因为当你从多个角度去看待并协作解决工作中的问题时,你更有可能得出一个更好的结果。

00:23:30 - Saron Yitbarek: 团队中的每个人,甚至可以对日常会议这样简单的事情提出反馈,这会让内向的人或其他不爱说话的人发表自己的见解。

Ruha Devanesan: 我真正喜欢敏捷的原因是,有一些内置的机制来帮助团队停下来进行思考。这可能是因为敏捷开发是如此之快,并且有为时两周的冲刺任务。如果你没有建立这些机制,你可能会偏离轨道,没法再回到正轨。

00:24:00: 但是,我觉得,“停止并反馈”这种价值观非常重要。这对于团队的包容性增加也非常重要,因为让大家都能提出工作反馈,并借此不断改善,这是团队能够包容的基本表现。

Saron Yitbarek: 既然我们谈论的是包容性,现在可能是指出那些敏捷宣言的 17 位创始人的好时机,是的……他们都是白人。

00:24:30 - Dave Thomas: 实际上那个房间没有多样性。这是对该组织的一种非常普遍的批评,而且我对此深表同情。

Saron Yitbarek: 如果敏捷宣言创始人采用了这些敏捷原则,并将其应用于他们自己的会议,那么他们可能在完成部分工作后,会问他们自己……“嘿,你注意到我们没有邀请任何女性参加这次会议吗?”我在想会不会有一个有色人种会持有不同意见。

00:25:00 - Ruha Devanesan: 物以类聚,人以群分。所以,如果考虑敏捷宣言的第一个人是白人,他邀请到桌上的人也是白人也就不足为奇了。但是,我们有机会在那方面做得更好,我们有机会停下来说:“让我们退后一步,让我们扩大我们的视野,寻找我们现在拥有的关系网络之外的人。谁可以带来不同的视角并帮助我们更好地改进这种开发方式。”

00:25:30 - Saron Yitbarek: 对我来说这很有道理,因为敏捷开发正是如此……好吧,敏捷,我们可以将它应用于不同的问题和行业。敏捷的应用方面,以及其在现实生活中出现时候的样子,是不断变化、不断扩展的。我想它正在将宣扬的内容付诸实践。没有最正确的答案,没有最后的终点。这是我们有时会忘记的事情:硬规则是敏捷的敌人。

00:26:00: 因此,如果一个敏捷团队告诉你敏捷的一部分意味着你必须每两周开发一个新的版本,或者你必须做什么事,那么,根据定义,这可不是敏捷。你老是说“总是”,你也不再是敏捷了。

00:26:30: 那些在犹他州雪鸟会议碰面的 17 名男子,最后宣称成立敏捷联盟。该联盟成为一个非营利组织,每年都举办一次会议。这个联盟的成长和发展,催生了更多全新的理论和方法。

这正是我感觉非常有趣的东西。在 2008 年的会议上,比利时开发人员 Patrick Debois 参加了并开始引领一条道路,他发明了一种全新的软件开发实践 DevOps。我从未想到与敏捷的一系列原则与 DevOps 和整个行业是都紧密相关。

00:27:00: 但是,现在我在想,“敏捷的兴起与 DevOps 的发明之间有多少关联?一个突破是否孕育了另一个突破?”我们会一起去探索,因为我们的下一集是正是 DevOps,对!一整集的内容。

00:27:30: 《代码英雄》是红帽的原创播客。有关我们的播客和其他更多信息,请访问 Redhat.com/commandlineheroes 。在那里,你也可以关注我们的消息订阅。想要免费听取最新内容,请订阅我们的节目。也可以在 Apple Podcast、Spotify、 Google Play、CastBox 中搜索 “Command Line Heroes”,然后点击“订阅”,你将在第一时间获得我们的内容更新。

我是 Saron Yitbarek,感谢收听,请坚持编程。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。

关于重制版

本系列第一季的前三篇我们已经发布过,这次根据新的 SIG 规范重新修订发布。


via: https://www.redhat.com/en/command-line-heroes/season-1/agile-revolution

作者:RedHat 选题:bestony 译者:redhat 校对:acyanbird

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

Mozilla 和 Google 延长搜索交易三年,每年收入 4 亿美金

双方现有的交易将于 2020 年 11 月过期。新的交易将确保 Google 在 2023 年前仍然是 Firefox 浏览器的默认搜索引擎。Mozilla 每年的这项收入估计有 4 亿到 4.5 亿美元。消息来源称,Mozilla 在财务上仍然是健全的。

来源:solidot

拍一拍:这么多的收入,依然要裁员度日,让其他开源组织情何以堪。

Intel 开发自己的操作系统 mOS:Linux 变种、百亿亿次超算专用

mOS 系统基于 Linux 扩展而来,目前最新版 0.8 版使用的是 Linux 5.4 LTS 内核。Linux 内核管理少量部分 CPU 核心,以确保兼容性,它自己的 LWK 内核管理系统其他部分,类似 Mutil-OS。Intel 的 mOS 已经在 ASCI Red,IBM Blue Gene 等超算上应用,不过它最终的目标是用于 2021 年的百亿亿次超算 Aurora 上。

来源:快科技

拍一拍:并不完全是一个 Linux 发行版,而是在此基础上进行了深入扩展。不知道国内的超算是否有这种深入调整后的操作系统——我们知道它肯定离不开 Linux 。

Android 变成世界最大的地震监测网络

Android 智能手机内置的加速计可作为地震仪使用,它能探测到地震产生的 P 波。P 波传播速度快,是地震发生之后最早能监测到的波,它的破坏性低于紧跟而来的 S 波。如果有足够的用户,加上位置数据,可以在地震波传播的时候警告用户。Google 现在将地震监测功能直接内置在操作系统中,宣布了 Android Earthquake Alerts System。Google 将通过 Google Play Services 服务将该功能推送到每一部运行 Android 5.0 以上版本的手机。在 25 亿部 Google Play Android 设备中,94% 运行了 Android 5.0 以上版本。

来源:solidot

拍一拍:这真是一种意想不到的应用。期待华为也推出类似应用系统,为民生提供更多帮助。

LibreOffice 7.0 发布首周下载量已接近 50 万

根据文档基金会昨日分享的数据,其官方下载页面的统计信息显示,LibreOffice 7.0 已被下载 422,938 次,此数字还未包括从其他渠道下载的情况,因此可以认为 LibreOffice 7.0 的下载量已接近(或可能已经达到)50 万。从数据来看,这款自由开源软件依旧有一定的吸引力,并且广受社区欢迎。即便作为一款办公套件来看待,这也是一个不错的成绩。

来源:开源中国

拍一拍:还是很棒的,期待 WPS 也能取得好成绩。