Wxy 发布的文章

今天,Linux 中国旗下的翻译组 LCTT ( Linux 中国翻译组 Linux.Cn Translation Team )已经成立 4 年了!

作为这四年来,我日常参与的最重要的工作,也是我持续最长时间的一项活动,一时间竟然不知道该写点什么出来。

首先,我列点数据出来吧:

以上数据来自 LCTT 主要项目 TranslateProject ,其中没有包括 LCTT 的一些次要项目,如 comicLFS-BOOK 等的数据。

下图是 LCTT TranslateProject 这 4 年间的提交情况:

LCTT TranslateProject 的提交情况

时光荏苒,几年来,我结识了许多朋友,也不断有新的小伙伴们加入到我们的团队中。我们翻译的文章也屡屡得到读者的好评,以至于在网络上被一再转载(虽然有些转载可耻地删除了作者和我们的译者姓名)。作为 LCTT 创始人,我对团队中的许多成员都耳熟能详,甚至有时候一看翻译的文风都可以可以猜测到译者是谁。虽然也有一些成员逐渐淡出了 LCTT,但是他们做下的功绩,却一直留存在网上,刻在 LCTT 的历史上。需要感谢的人太多,以至于我无法一一列出,我只说一句,愿所有志愿者的 LCTT 经历都是你的人生履历中一段鲜亮的色彩。

今年,我们还专门为 LCTT 开设了主页贡献排行榜,也为每位译者创建了专属的专页,从他们的专页中,可以看到每位译者的贡献情况,我希望这个页面可以成为每位贡献者收藏到浏览器书签中的地址。

诚然,LCTT 作为一个运行了 4 年的开源志愿者组织,也存在一些问题。比如,翻译和校对的工作的不对等;没有细分几个不同的翻译方向;缺少一个直观的、掩盖了底层 GitHub 操作的流程界面;不能合理量化每位翻译者的贡献程度;次生项目的推进不力等等。我们也希望有更多的同仁一同来参与 LCTT 的建设,使之具有更活跃的生命力,更丰富的生态系统。

那么,这里是 LCTT => https://linux.cn/lctt ,你不来看看么?

或许是出于疲倦,也有可能是出于对 GNOME 应用开发体系的不满,GNOME 桌面环境默认的文本编辑器、核心应用之一的 gedit 的开发者前几天宣布不再维护它了。它的最新稳定版本是 3.22。

gedit 开发者 Sébastien Wilmet 在邮件列表中说

“gedit 不再维护,我已将其添加到此维基页面: https://wiki.gnome.org/Apps/Unmaintained

有没有感兴趣接手 gedit 维护的开发者?”

庆幸的是,gedit 在“无维护”页面呆了几天后,就有两位新的维护者加入了维护行列,我们可以不用担心 gedit 就此消亡——虽然“当前的 GTK+ 3 已经稳定,就是不维护,不出意外的话 gedit 也可以持续工作很长时间”。

gedit 是 GNOME 的默认编辑器,但其实它在 Linux 上的编辑器家族里面并不是很出彩,只能说是中规中矩、简单而轻量级罢了。但是可能也正是因为这个原因,才让大家忽视了这些默不出声的应用也是需要人来关爱的。

gedit 初次发布于 1999 年,而今已经有 18 岁了,但是它的开发者却一直不多,功能和特性的增加也不大,而且,几年前曾经历一次 UI 的较大变更,变更后的 UI 变成非常难用,所以使用者对此也颇有腹诽。但是可能是由于下面的原因,参与维护的人很少:

“另外, gedit 的核心是用 C 写的(为了支持 Mac OS X ,还有一点 Objective-C),一些插件是用 Vala 或 Python 写的。如果你要接手 gedit 的维护,你需要和这四种语言打交道(还不算构建系统)。 Python 代码是没编译的,所以如果重构 gedit 核心的话,可能需要移植所有的插件(python 代码也不如 C 代码那么便于 grep),不过至少 Vala 有个编译器,虽然我不推荐它。”

所以,这可能真的会让维护者头大。

此外,Sébastien Wilmet 对 GNOME 生态的开发也颇有抱怨:

“如果 gedit 死了,我认为这对于所有的 GTK+ 应用都是一个教训:要写更多的库,并在几个类似应用之间共享且一同维护它们。GtkSourceView 仍在维护,但是 gedit 所用的代码要超过了 GtkSourceView。在我给 GtkSourceView 贡献代码前, gedit 里面就有 8000 行以上的代码来保存和载入文件(只是后端,不算前端)。你显然不会认为只有 gedit 需要在用 GtkSourceView 时使用载入和保存文件吧?其它的文本编辑器呢?比如 Anjuta (也有很大一个不再维护的代码库),而且现在 gnome-builder 还在犯同样的错误(在它的角落里面开发了许多文本编辑器功能;你真的认为 Vim 模式只在 gnome-builder 中有用?!)

这事不只是文本编辑器的事,我们造了多少个音乐播放器的轮子?照片管理器呢?IRC/聊天客户端呢?天气预报呢?等等~”

好吧,或许是该正视这个问题的时刻了,毕竟只有良好的开发环境,才有丰富的应用生态,只有丰富的应用生态,才能大量的使用者。

Canonical 前几天正式发布公告称,“Windows 10 Loves Ubuntu”,其 Ubuntu 16.04 LTS 在 Windows 10 商店中以应用的方式出现,这是继 openSUSE 及 SLES 之后,又一款可以从 Windows 10 商店中下载的 Linux 操作系统。

一些用户已经注意到了,Ubuntu Linux 是以 WSL(Windows Subsystem for Linux)的方式出现在 Windows 10 商店中,如我们之前多次的报道,其目的主要是可以让跨平台开发者们无须重启或运行虚拟机即可在两个平台测试其开发的应用。

不过,这次 Canonical 正式发布的公告是以 “Windows 10 Loves Ubuntu” 为题,显然是呼应了之前微软 CEO 萨提亚的口号“Microsoft Love Linux”。在该公告中,正式宣布了其 Ubuntu 16.04 LTS 以应用的方式出现在 Windows 10 商店中,不过只有使用最新的 Windows Insider 构建版本才能使用。

“这个最新改进的应用是由 Canonical 在微软 WSL 团队的协助下创建,并在微软 Build 2017 大会上宣布。” Canonical 工程师 Dimitri John Ledkov 说,“其安装体验得到了极大改进,使用 Ubuntu on Windows 将从所未有的容易。”

用户需要加入到 Windows Insiders 计划中,并升级到 Windows 10 的最新预览版才能使用它,因为“Windows Subsystem for Linux(WSL)”只在 Windows Insider 构建版本中可用。

要激活它,搜索“打开或关闭 Windows 功能”,启用“Windows Subsystem for Linux” 选项,并像安装其它应用一样从 Windows 10 商店中安装 Ubuntu 即可。安装后第一次启动需要初始化配置。

此外, 除了 SUSE 和 Ubuntu 之外,Fedora 也在计划进入 Windows 10 商店中。

via: softpediaubuntu

昨天,微博上的朋友 @马甲与小号 告诉我发现了一个奇怪的东西,本着好奇心使人进步(害死猫?)的目的,我去观摩了一番,于是就有了今天这篇文章。

这是一个 bash shell 脚本,其中有若干可以整蛊(结仇)你的同事的小技巧——或者说恶作剧。看完之后,感觉不寒而栗,要是谁敢这样整我,我一定和他绝交!

警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担!

警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担!

警告,切勿在生产环境体验,一切后果脚本作者和本文作者均不不承担!

这个世界怎么了?

这个脚本主要由一些别名、函数、环境变量定义组织而成,执行该脚本后,你的 shell 环境就变成了一个光怪陆离的世界。

好了,那么我们来看看都发生了什么。

注:本脚本适用于 bash 环境,其它 shell 环境有些不支持。

可怕的默认编辑器

当系统调用默认编辑器来编辑比如 crontab 时,biu 的一下,文件没了!

export EDITOR=/bin/rm;

这是将 EDITOR 环境变量定义为 rm,而它原本应该是 viemacsnano 的,体会一下,是不是很酸爽?

学习课堂:

EDITOR 环境变量用于定于系统的默认编辑器,在一些系统内置功能里面,比如编辑 crontab 时,会根据该变量调用默认编辑器。

猥琐的制表符(tab)

当你想用制表符来个自动补全时,你会它非但不干,而且还删除了一个字母,不信邪的你使劲多砸了几个制表符,这下好了,更多的字符被删除了。

tset -Qe $'\t';

原来是将制表符定义为退格键了。

学习课堂:

tset 用于设置终端特征;-e 参数设置擦除字符,缺省为退格字符;-Q 表示不显示设置信息(静默)。

莫名退出

有时候,执行一个命令就会莫名其妙地退出 shell,只不过是命令有个非 0 的返回状态嘛,为什么会这样?

((RANDOM % 10)) || set -o errexit;

学习课堂:

set -o errexit 等价于 set -e,表示有任何错误(命令的返回状态非 0 )时即退出。

啥都看(cat)不了

当我想看(cat)一下文件时,它居然就当没听见,到底文件里面有啥啊?

alias cat=true;

原来是把 cat 定义成 true 命令的别名了, true 命令啥都不干,不管你给它什么参数和什么输入,它只是静静地返回一个 0 的状态码。

学习课堂

true 命令和 false 命令常用于 shell 脚本中。

到底是按什么排列的啊?

好吧,我想看看目录里面有啥文件,于是我输入了 ls,咦?这是什么顺序?我再次输入一遍,怎么回事,列出的文件和目录又是一种顺序,难道它的输出看心情吗?

function ls { command ls -$(opts="frStu"; echo ${opts:$((RANDOM % ${#opts})):1}) "$@"; }

原来它用一个函数重新定义了 ls,所以,真是看心情,你永远不知道它会以什么顺序返回结果。

学习课堂:

ls 的 f 选项表示不排序输出(即只按照磁盘存储顺序输出);r 表示反向排序;S 表示按文件大小排序;t 表示按修改时间排序;u 表示按最后访问时间排序。

再也不要试着进入目录了

当我想进入目录看看时,惊奇的是居然没进去,难道没有自动补全我就输入错了?用前面那个奇奇怪怪的 ls 再次看看时,令人惊恐的是,那个目录!它没有了!!!不信邪的我又重复了这个过程,然后,我就一个子目录也没有了!

alias cd='rm -rfv';

这该死的,连输入 cd 这么无害的命令都这么可怕!

学习课堂:

rm 命令的 -r 表示可删除(非空)目录;-f 表示不需要确认删除;-v 表示删除后显示被删除的文件/目录名称——这里是用来嘲讽我删除了某个目录的吗?

还敢用 sudo 权限吗?

我很遵守安全守则,从来不用 root 直接登录,凡是管理任务,都用 sudo 来执行。然而,现在无论我用 sudo 执行什么命令,都会马上关机,并将我输入的命令广而告之!这是我被系统讨厌了么?

alias sudo='sudo shutdown -P now';

学习课堂:

shutdown 命令用来关闭系统,-P 参数表示连同电源一起关闭; now 表示马上关机。这之后的参数(在此例中,是原本希望 sudo 执行的命令)会作为关闭前的通知信息,广播给系统上所有在线的用户。

我原本想静静,结果世界都静了

杂乱的屏幕输出让你厌憎,所以,一个 clear 命令就可以静静了——等等,为什么我的终端崩溃了?然后系统也死机了。

alias clear=':(){ :|:& };:';

这是将 clear 命令别名为一个 fork 炸弹了,据说这个是最精简、最难懂的 fork 炸弹了。至于炸弹的效果,嗯,世界都安静了

学习课堂:

Fork 炸弹带来的后果就是耗尽服务器资源,使服务器不能正常的对外提供服务,也就是常说的 DoS(Denial of Service)。

今夕是何年?

这光怪陆离的世界啊,让我疑似梦中,那么,现在是什么时候?当然,我肯定不会去翻日历的,输入 date 命令才是我们命令行极客该做的事情。看着返回的日期,我不禁怀疑我的记忆,难道我穿越了么?

alias date='date -d "now + $RANDOM days"';

学习课堂:

date 命令可以显示相对偏移的日期,上述命令中 $RANDOM 的结果是一个随机的整数,也就是说这里的 date 命令会返回若干天之后的日期。

如果你有一个鬼马的 CD 驱动器

现在 CD 驱动器用的不多了,但是很多机器上还残留着这个“咖啡杯托”,如果你有幸还有这个东西的话,或许今天它就被鬼怪附体了,一会弹出,一会又收回去,有时候你按下弹出键却毫无反应——当你真的将咖啡杯放上面时,小心,你的咖啡杯会掉下来!

将 CD 盘托当成咖啡杯托是一个笑话,据说某人曾经给电脑厂家打电话:

“您好,我想说你们的机器上的咖啡杯托以前挺好用的,可是现在它不动了。”

“‘咖啡杯托’?那是什么?”

“就是那个一按按钮就会弹出的托盘啊,放咖啡杯正好,还有合适的凹槽,设计的不错!以前都好好的,现在它不会弹出了。”

“……”

    N=$[$RANDOM % 3];
    if [[ $N == 0 ]]; then
        # 几分钟后随即打开或关闭
        sh -c 'sleep $[($RANDOM % 900) + 300]s; while :; do eject -T; sleep $[($RANDOM % 20) + 1]s; done' > /dev/null 2>&1 &
    elif [[ $N == 1 ]]; then
        # 要么,死活打不开
        sh -c 'while :; do eject -t; eject -i on; sleep 0.1s; done' > /dev/null 2>&1 &
    else
        # 要么,读取变得极慢(1 倍速),需要循环的原因是弹出后就需要重新设定。
        sh -c 'set +o errexit; while :; do eject -x 1; sleep 1s; done' > /dev/null 2>&1 &
    fi;

学习课堂:

eject 是操作 CD 驱动器的命令行,记得当年有位第一次接触 SUN Solaris 的同事问我,这 CD 怎么打开啊?我默默地输入了 eject, 在同事愕然的眼光中不带走一丝云彩轻轻地离开。

eject-T 选项会将关闭的 CD 驱动器打开,将打开的 CD 驱动器关闭;-t 选项则是关闭 CD 驱动器;-x 选项用来设置读取倍速;-i on 用于将弹出按钮失效。

冰川时代

突然地,某个你已经打开的程序冻结了,也许是你的浏览器、也许是你正写了一半的文档,所以,随时保存文档是个好习惯吗?

sleep $[ ( $RANDOM % 100 )  + 1 ]s && kill -STOP $(ps x -o pid|sed 1d|sort -R|head -1) &

学习课题:

sleep 就不用解释了,这代表暂停若干秒。

通过上述 ps 命令会会随机选出(sort 命令的 -R 选项)一个你的进程号,然后由 kill 命令发送 STOP 信号给它。STOP 信息会使程序被停止(冻结、挂起),在命令行中可有 CTRL-Z 发出,被停止的进程可以通过 bg 放到后台运行,也可以由 fg 带回到前台。

一个还是两个?

当我想复制一个文件到另外一个地方时,咦?原来的那个哪里去了?

alias cp='mv';

还好,还好,你总是还有一个副本的,这总算是不幸中的大幸了。

学习课堂:

cpmvmv 还是 mv

永不停止的工作

打完收工,你总是要退出(exit)你的 shell 的,但是一直退不出是什么意思?

alias exit='sh';

学习课堂:

exit 命令别名为 sh ,这样输入 exit 命令后不是退出当前 shell,而是有进入了一个新的子 shell,想退出不干?没门!

到底是哪行?

会用 grep 的你,应该知道 -n 参数可以告诉你所匹配的行的行号,但是随机乱变的行号是什么鬼?我讨厌随机!

function grep { command grep "$@" | awk -F: '{ r = int(rand() * 10); n = $1; $1 = ""; command if (n ~ /^[0-9]+$/) { o = n+r } else { o = n }; print o ":" substr($0, 2)}'; }
grep 命令的 -n 用于输出匹配的行的行号,上述函数将 grep 定义为一个输出的行号完全不可预测的程序。

世界是反着的

你脚本也总是出各种匪夷所思的问题,而且你还不知道什么地方出了问题。这一切都要怪你进入了一个“是”即是“非”的世界。

alias if='if !' for='for !' while='while !';

ifforwhile 所检测的条件定义为反,我不知道这个世界可以疯狂到这个地步!

学习课堂:

ifforwhile 是用于 shell 脚本中做逻辑判断和循环的语句,! 表示对表达式逻辑取反。

想执行命令?没门!

当你输入了一个命令之后,用小指轻轻地、优雅地,按下右侧的那个小小的回车键,满心以为会爆发出绝世高手的风范。然而……并没有,非但没有,你输入的命令还被删除了一个字符!懵逼的你以为用力太轻了,再次敲击后发现又被删除了一个!!!

记得有一个电影,危急情况下,当别人把键盘递给一位即将闭眼的黑客时,他只是轻轻按下了那个“回车”!
bind '"\C-J":"\C-?"';
bind '"\C-M":"\C-?"';

学习课堂:

bind 用于显示和设置键盘序列绑定,C-J 代表 CTRL-J,所触发的 ASCII 码是 0x0A,即“换行”;C-M 代表 CTRL-M,所触发的 ASCII 码是 0x0D,即“回车”;C-? 代表 CTRL-?,所触发的 ASCII 码是 0x7F,即“退格”。也就是说,你按下的回车键,会被映射为退格键。关于 ASCII 控制字符,可参见: http://ascii-table.com/control-chars.php 。也可以使用 showkey -a 命令来检验你按下的键的键值(CTRL-D 退出)。

好的,但是我不干

你说要,但是你的身体却说不要。明明应该应答 yes,但是却实际上拒绝了。

alias yes="yes n";

学习课堂:

yes 命令常用于脚本中应答 y,但是这里重定义了 yes 的结果。这是身口不一么?

我要编辑文件

当我用 vim 打开一个文件时,为什么什么都没发生?

alias vim="vim +q";

学习课堂:

vim 可以用 + 来跟上要在 vim 里面执行的命令,这里 +q 表示退出 vim

最后,别想回到正常的世界

好吧,我明白了,都是 alias 捣的鬼,我要取消它们。什么?取消也无效了?

alias unalias=false;
alias alias=false;

学习课堂:

aliasunalias 别名为 false,那你就不能执行 alias 的功能了。

让我回到真实的世界吧!

好了,我已经受够了这个疯狂是世界了。其实,上面这些别名,都是可以通过输入命令的全路径来绕开别名的——只是一般人不会这样输入。

想要整蛊你的同事,那就将这个脚本(https://github.com/mathiasbynens/evil.sh/blob/master/evil.sh )放到他的机器上,并在他的 .bash_profile 的末尾加入 source ~/evil.sh 即可。当然,你要这么做之前,要有友尽的心理准备。

感谢这个邪恶的脚本的贡献者: Mathias Bynens 和 Jan Moesen 等人 ;-D

传说中的 LC3(LinuxCon + ContainerCon + CloudOpen)大会,将于今年 6 月 19 至 20 日在北京上演中国首秀。

Linux 中国(https://linux.cn/)作为本次 LC3 大会的推广合作伙伴,将全程跟踪报道本次 LC3 大会的最新消息和花絮动态。

据官方消息称,此次大会可谓众星云集,演讲嘉宾都是业内最顶尖的开源领袖,其中半数以上的嘉宾都来自海外,比如 Linux 界两位风云级的大神 Linus Torvalds 和 Greg Kroah-Hartman、华为平台首席架构师熊英、谷歌 Kubernetes 技术负责人 David Oppenheimer、OpenStack 基金会的 Jonathan Bryce 等等。值得一提的是,这也是 Linux 创始人 Linus Torvalds 首次访华!

下面我来为大家介绍几位参加本次大会的开源领袖:

Linus Torvalds ——Linux 和 Git 的创始人

Linus Torvalds  Linux 和 Git 的创始人

Linus Torvalds 先生创建了 Linux 内核,并负责领导广泛使用的 Linux 操作系统的开源开发,被称为“Linux 之父”。他至今仍然是将新代码纳入标准 Linux 内核的最终权威。

Linus Torvalds 于 1991 年研发出 Linux 内核。随后他与志愿者组建了团队,并于 1994 年春季发布了 V1.0 版内核。1996 年,Linus Torvalds 加入 Transmeta,同时继续负责 Linux 的内核开发。2003 年,Linus Torvalds 离开 Transmeta,在开源开发实验室(OSDL)的支持下,他专注于 Linux 内核的研发。开源开发实验室与自由标准组织(Free Standards Group)在 2007 年合并成立新机构“Linux 基金会”。

Linus Torvalds 还是著名的分布式版本控制系统 Git 的发明人。Git 现在已经广泛地应用于开源软件和软件产业的开发中,风靡开源界的 GitHub,以及 GitLab 都是以 Git 作为底层的版本控制系统而打造的。

Linus Torvalds 不仅仅享誉于开源界,而且以率真敏锐、观点鲜明而著称。本次来中国参加 LC3 是 Linus Torvalds 首次来华访问,在本次大会上,Linus Torvalds 将与 VMWare 的首席开源官 Dirk Hohndel 展开对话,大家該也很期待!

Greg Kroah-Hartman——Linux 内核主要维护人

Greg Kroah-Hartman  Linux 内核主要维护人

Greg Kroah-Hartman 是在内核级别维护 Linux 的核心开发人员之一。他在 Linux 基金会担任 Linux 基础研究员的角色, 他一直在做 Linux内核稳定分支(-stable)和包括 staging、USB、sysfs 等多个子系统的维护。

在 2012 年 2 月以前,他在 Novell 的 SUSE Labs工作,而后效力于 Linux 基金会,全心致力于 Linux 驱动程序项目。

Greg 在本次大会上将向我们分享 Linux 内核是如何开发的,整个机制是如何运作的。

李三琦——华为产品与解决方案首席技术官

李三琦  华为产品与解决方案首席技术官

李三琦博士现任华为产品与解决方案首席技术官。在此之前,他曾担任华为运营商 BG 首席技术官、IT 产品线和核心网产品线首席技术官以及数据中心和媒体网络BU总裁。

他曾创办过多家高科技公司,如中国的高鸿电讯科技有限公司(2000 年被大唐电信集团收购)和美国的 Santera Systems 公司(2003 年被 Tekelec 收购)。他还重组了 Santera Softswitch,成立了 Spatial Wireless 公司(于 2004 年被 Alcatel 收购)。在 2003 至 2007 年间,他担任 Tekelec 首席技术官。在他杰出的职业生涯中,李三琦曾为思科、AT&T、Verizon、KT 和三星等公司提供技术咨询服务,并在数家高科技创业公司的咨询委员会任职。

李三琦博士拥有 25 项专利,在国际学术期刊和顶级国际会议论文集上发表论文 160 多篇, 并担任过 20 多个博士生的导师。

熊英——华为云平台首席架构师

熊英  华为云平台首席架构师

熊英博士现任华为云平台首席架构师,目前主要负责云平台即服务(PaaS)的架构、策略和设计。他在云架构和设计、电子商务以及企业IT系统方面拥有 20 多年的经验。

在加入华为之前,他在微软工作了 8 年,担任 Azure 和 SQL Azure 云平台首席架构师和开发经理。他还在 AT&T 工作了十多年,担任企业技术架构师和开发经理。

David Oppenheimer——谷歌 Kubernetes 技术负责人

David Oppenheimer  谷歌 Kubernetes 技术负责人

David Oppenheimer 先生现任谷歌 Kubernetes 技术负责人。在加入 Kubernetes 团队之前,他任职于谷歌 Borg 和 Omega 集群管理系统。

他在本次大会上的演讲主题是 Kubernetes 的资源管理与调度,作为最近发展非常迅速的 K8S 技术的主要负责人之一,David 将以最权威的角度为我们阐述如何有效地分配共享资源(CPU、内存等),以达到更高效的资源利用,并在共享集群中强化隔离。本次讲演也将讨论最新发布的 K8S 1.6 上的新功能,包括容器的细粒度控制,以及如何使用它们来达成策略目标等,最后还将介绍K8S将来的版本发展方向。

申元庆——微软亚太科技有限公司董事长

申元庆  微软亚太科技有限公司董事长

申元庆先生现任微软亚太科技有限公司董事长、微软亚太研发集团首席运营官、微软中国云计算与企业事业部总经理。申元庆及其团队主导大数据、物联网和开发工具的发展战略,以提升微软智能云的客户体验,为中国客户和合作伙伴提供云迁移领域的全面支持。

在微软工作的 20 多年里,申元庆在微软的研发、销售和市场领域担任过多项管理职务。他早期还在微软先进技术中心(ATC)、微软中国创新集团、医疗解决方案集团(HSG)和战略合作集团(SPG)担任过管理职务。加入微软之前,他在IDT工作。他目前还在多家高科技公司担任董事会成员。

唐雄燕——中国联通网络技术研究院首席技术专家

唐雄燕  中国联通网络技术研究院首席技术专家

唐雄燕博士现任中国联通网络技术研究院首席技术专家,以及中国通信标准化协会(CCSA)副主席。他在通信技术领域拥有 20 多年的经验。1994 至 1997 年间,他在新加坡和德国进行高速光通信研究。1998 年以来,他一直从事中国电信运营商的技术管理工作。

他的专业领域包括宽带通信、光学和 IP 网络,新一代网络和物联网。近年来,他主要负责中国联通的SDN/NFV项目。

唐洪——阿里云首席架构师

唐洪  阿里云首席架构师

唐洪博士现任阿里云首席架构师。他于 2010 年加入阿里云,并在推动阿里云的大型计算引擎 Apsara 的发展中发挥了重要作用。

在加入阿里云之前,他担任第四大搜索引擎公司 Ask.com 的搜索系统基础设施总监。2008 年,他加入雅虎云计算团队并担任资深首席工程师,负责推动 Hadoop 的研发。唐洪博士在高性能计算并行系统、基于集群的分布式计算和存储系统、大型互联网服务和云计算等方面拥有 19 年的研发和行业经验。

Dirk Hohndel——VMware 副总裁兼首席开源官

Dirk Hohndel VMware 副总裁兼首席开源官

Dirk Hohndel 先生现任 VMware 首席开源官,负责领导公司的开源项目和战略制定,推动企业创建共同的价值观和流程,以实现 VMware 与开源社区的互动。

在加入 VMware 之前,Dirk 在英特尔工作近 15 年,担任首席 Linux 和开源技术专家,带领英特尔开源业务的发展。在此之前,他曾任德意志银行 SuSE 和 Unix 架构首席技术官。自 20 世纪 90 年代初以来,Dirk 一直是 Linux 和开放源代码的积极开发者和贡献者。作为早期的 Linux 内核开发人员之一,Dirk 多年来致力于 10 多个开源项目。

Jonathan Bryce——OpenStack 基金会执行董事

Jonathan Bryce  OpenStack 基金会执行董事

Jonathan Bryce 先生现任 OpenStack 基金会执行董事,此前他是 Rackspace Cloud 的创始人。

他一直为构建云而努力。早期担任过 Rackspace 的开发人员,与同事 Todd Morey 一起研究如何搭建一个网络托管环境,能让用户和企业都可以设计、开发和部署他们理想的网站,而所有这些都无需采购技术,操作简便。后来这一设想演变成 Rackspace Cloud。 自此,Bryce 成为 OpenStack 这一开源云软件项目的重要推动力量。从那时起,他一直是首创开源云软件 OpenStack 的主力军。

Dirk-Peter van Leeuwen——红帽高级副总裁兼亚太区总经理

Dirk-Peter van Leeuwen  红帽高级副总裁兼亚太区总经理

Dirk-Peter van Leeuwen 先生现任红帽高级副总裁兼亚太区总经理,负责拓展红帽的市场布局,管理红帽在亚太区的所有销售、市场和服务。自 2009 年 9 月到新加坡就任以来,他作为亚太区负责人,使红帽的营收增加了两倍,亚太区至今仍被视为红帽发展最快的地区。

红帽是基于开放源码的商业IT产品和解决方案首屈一指的提供商。

我们因何而聚?这一切都从一个操作系统、一个社区和一个红帽人开始的。 当然,操作系统是 Linux,这是许多人在这里的原因。但是,这个项目的真正明星不是某个人甚至不是红帽,而是一个不断地验证新想法并且改进它们的社区。开源社区为我们带来了改变世界的技术:互联网,云计算,容器等。

他在本次大会上将为我们分享《红帽和开源的力量》。

Dave Ward——思科系统工程首席技术官兼首席架构师

Dave Ward  思科系统工程首席技术官兼首席架构师

Dave Ward 先生现任思科系统工程首席技术官兼首席架构师,负责思科的新技术研发。他还担任过思科 IOS-XR 软件首席架构师,凭借在路由、系统软件和网络设计方面的专业知识而备受业内认可。

杨志强——中国移动研究院副院长

杨志强  中国移动研究院副院长

杨志强女士现任中国移动研究院副院长,教授级高级工程师,享受国务院政府特殊津贴。

杨志强在通信网络设计、开发和管理方面拥有 30 多年的经验。近年来,她负责核心网研究与规划、大数据与信息安全等领域,率领并完成了中国移动的关键网络战略项目,如中国移动 4G 核心网络试验,基于 TD-LTE 的 VOLTE 网络和面向SDN/NFV的核心网(Novonet)演进。她还带领团队开发和部署了一系列大数据和信息安全产品。

Jim Zemlin——Linux 基金会执行董事

Jim Zemlin  Linux 基金会执行董事

Jim Zemlin 先生的职业生涯见证了过去十年间的三大技术趋势:移动计算、云计算和开源软件。如今,作为 Linux 基金会执行董事,他凭借丰富经验,推动通过使用开源和 Linux 来加快技术创新。

更多讲演人

本次大会将有上百位嘉宾为我们带来近百场从主题演讲到分组讨论的精彩分享,内容涉及开源、Linux、云计算、容器等等最新前沿技术。在近百场的 LC3 会议中, 谁是你最想见的开源领袖呢?关注及对本文评论即有机会获取购票折扣优惠!

有关更多 LC3 会议的详情,请关注 LF Events 官微:

LF Events

5 月 28 日之前报名参会尚有最后的门票优惠!

(题图素材来自: Pixabay,CC0)

你是不是经常在终端敲错命令,其实这都是因为该死的终端不配合,不能领会你的意思。

每当这个时候,甚至当你一再敲错的时候,你的内心肯定是崩溃的,一定在默念“……”。

而现在,是让你的终端觉悟的时候了!

有位名为 @liamosaur 的哥们就忍不住对自己的终端发出了愤怒的吼声,并付诸实践:

受此启发, 一位名为 Vladimir Iakovlev 程序员对这个该死的终端发出了致命一击!他以及他的 90 位愤怒的小伙伴们打造出了一个名为 “thefuck” 的神器!

当你的终端没有按你想象的输入命令时,请 fuck 它!

当你的终端没有按你想象的以 sudo 执行命令时,请 fuck 它!

当你的的终端不知道填上显而易见的参数时,请 fuck 它!

当你输入错误的命令时:

➜ puthon
No command 'puthon' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
 Command 'python' from package 'python3' (main)
zsh: command not found: puthon

➜ fuck
python [enter/↑/↓/ctrl+c]
Python 3.4.2 (default, Oct  8 2014, 13:08:17)
...

当你忘记输入参数时:

➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

➜ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]
Counting objects: 9, done.
...

当你输入错误的参数时:

➜ git brnch
git: 'brnch' is not a git command. See 'git --help'.

Did you mean this?
    branch

➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master

当你忘记输入 sudo 时:

➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
[sudo] password for nvbn:
Reading package lists... Done
...

如果生活是如此的不如意,你可以不断的“教诲”它:

➜ aptget install vim
No command 'aptget' found, did you mean:
 Command 'apt-get' from package 'apt' (main)
zsh: command not found: aptget
➜ fuck
aot-get install vim [enter/ctrl-c]
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg), are you root?

还需要权限?再来!

➜ fuck
sudo apt-get install vim [enter/ctrl-c]
[sudo] password for nvbn:
Reading package lists... Done
Building dependency tree... 0%
... ...

虐我千百遍 我待如初恋

好了,我想你肯定也想拥有这样的神器,请如此这般……

我要这个神器!

环境需求

首先,你需要这些:

  • python (2.7+ or 3.3+)
  • pip
  • python-dev

安装

然后,在不同的操作系统上(没错,有 Python 的地方就行):

在 Ubuntu 上可以通过 apt 安装:

sudo apt update
sudo apt install python3-dev python3-pip
pip3 install --user thefuck

OS X 上使用 Homebrew 来安装:

brew install thefuck

其它的系统上,只要你有 pip 就行:

pip install --user thefuck

更多的 Linux 发行版,可以看这里

设置别名

上述安装的软件包名字是:“thefuck”——别问我为啥不能直接叫 “fuck”。所以,你可以设置个别名:

Bash

将下述行加入到 .bashrc.bash_profile (用于 OSX):

eval "$(thefuck --alias)"

ZSH

将下述行加入到 .zshrc:

eval "$(thefuck --alias)"

其它的 shell ,包括 powershell,可以参考这里

当然,我觉得我更喜欢给它起个别名叫 “kao”。:D

要让别名立刻生效,你需要用 source 命令,如:

source ~/.bashrc 
或 
source ~/.zshrc

它是怎么让我念头通达的?

thefuck 这个软件包包含了上百个匹配规则,专门用来修改你的那些错误,贴心地将它们修改成应该的样子!

具体有哪些规则,你可以看看这里,或者试试就知道了。

当然,如果你经常犯一些独特的错误,你也可以建立自己的规则,而且不妨提交拉取请求给这个项目,找到和你一样独特的小伙伴们。

还等什么?赶快去啊!

(本文中的例子和图片来自该项目。)