看Linus骂人,真解气

感受下Linus骂人的感觉吧, 这样你会觉得工作中遇到的那些不愉快就算个鸟事

背景

一个Linux主线的内核维护者提交了一份patch,并说明问题产生的原因是因为应用传的音频有问题。

Linus回复如下

你他娘的给老子闭嘴!这是一个内核bug好不好,你搞内核主线维护多长时间了?你还没学习过内核主线维护的规则?

如果一个用户程序导致了内核挂壁,这他娘的肯定是内核的问题,我们绝对不能因此责怪用户,这点很难去理解吗?

解释patch 巴拉巴拉……

Mauro 是一个人的名字,这次Linus发飙主要就是针对他的

你他丫的给我闭嘴,我再严肃的说一次,我再也不想看到这种白痴的行为发生在一个内核维护者身上。

解释让人合入bug patch,又说自己很忙巴拉巴拉……

WE DO NOT BREAK USERSPACE! 内核是不可能破坏应用空间的任何东西的。

我很严肃的说,理解这条规则很难吗?特别是,我们不应该用一个垃圾打断用户空间, I'm angry「我非常生气」,因为你整个邮件表现出如此可怕的错误,用一些垃圾代码来修补问题。你写的那个补丁就是一坨屎。增加了一个错误代码(ENOENT),脑子锈透了,这代码的漏洞是使用的 「?:」,这样如果想修改代码的判断逻辑就非常麻烦。

Fix your f*cking "compliance tool", because it is obviously broken. And fix your approach to kernel programming.

修好你这个该死的问题吧,它的错误太明显了,还有,修复你进入内核的代码吧。

原文如下:
https://lkml.org/lkml/2012/12/23/75

On Sun, Dec 23, 2012 at 6:08 AM, Mauro Carvalho Chehab
<mchehab@redhat.com> wrote:
>
> Are you saying that pulseaudio is entering on some weird loop if the
> returned value is not -EINVAL? That seems a bug at pulseaudio.Mauro, SHUT THE FUCK UP!It's a bug alright - in the kernel. How long have you been a
maintainer? And you *still* haven't learnt the first rule of kernel
maintenance?If a change results in user programs breaking, it's a bug in the
kernel. We never EVER blame the user programs. How hard can this be to
understand?To make matters worse, commit f0ed2ce840b3 is clearly total and utter
CRAP even if it didn't break applications. ENOENT is not a valid error
return from an ioctl. Never has been, never will be. ENOENT means "No
such file and directory", and is for path operations. ioctl's are done
on files that have already been opened, there's no way in hell that
ENOENT would ever be valid.> So, on a first glance, this doesn't sound like a regression,
> but, instead, it looks tha pulseaudio/tumbleweed has some serious
> bugs and/or regressions.Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious
garbage and idiocy from a kernel maintainer again. Seriously.I'd wait for Rafael's patch to go through you, but I have another
error report in my mailbox of all KDE media applications being broken
by v3.8-rc1, and I bet it's the same kernel bug. And you've shown
yourself to not be competent in this issue, so I'll apply it directly
and immediately myself.WE DO NOT BREAK USERSPACE!Seriously. How hard is this rule to understand? We particularly don't
break user space with TOTAL CRAP. I'm angry, because your whole email
was so _horribly_ wrong, and the patch that broke things was so
obviously crap. The whole patch is incredibly broken shit. It adds an
insane error code (ENOENT), and then because it's so insane, it adds a
few places to fix it up ("ret == -ENOENT ? -EINVAL : ret").The fact that you then try to make *excuses* for breaking user space,
and blaming some external program that *used* to work, is just
shameful. It's not how we work.Fix your f*cking "compliance tool", because it is obviously broken.
And fix your approach to kernel programming.Linus

Linux内核源码下,Linus大神骂人的注释

因为代码不规范骂人

Linus在很多地方说明了,不要随意使用换行,如果换行不正确,那么使用grep搜索关键字的时候显示会很不友好。

后话

代码规范是一个非常严肃的事情,我们在写代码的时候,不要只认为完成功能了就可以了。说一个比较基础的事情,我们在一个「.c」文件里面,有的人喜欢用空格,有的人喜欢用tab键,那我们在修改别人的代码的时候要怎么办呢?

这时候说到一个最基础的原则,遵守原来的规范,原来是用空格的,我们就用空格,原来用tab的,我们就使用tab,不要标新立异,不要觉得自己可以另类。

看了Linus 骂人,感觉自己在工作的时候遇到的那些事情都算屁大点事了,而且我遇到很多技术大牛,脾气都非常好,而很多脾气不好的,技术也是水的一逼。

再回头看看最近几年Linus大神的动态,感觉脾气已经没有那么大了,估计也是年轻气盛吧,谁不是想在年轻的时候轻狂一下,等经历了很多事情,再遇到一样的事情,觉得已经不是那么在乎了。

Linux的每个规范都使得Linux越来越强大,每个开发者认可这样的规范,并且这样的规范使得Linux越来越健壮,我们可能遇到很多其他的内核,不管是什么内核,都需要很多很多开发者共同努力,才可能达到一定的生态,Linus大神厉害的不是创造了Linux内核,而是他规范了很多约束调节和工具,比如GNU,比如开发了Git。

看这些大神的提交和邮件,不管是谁翻译,总是差点意思,我们要尝试去读英文翻译,去推敲里面的意思,品味他们骂人的韵味,领悟他们说话的含义,那样才更有意思。

以上是我的拙见,请轻拍~

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

嵌入式Linux

微信扫描二维码,关注我的公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不就是要个30K的薪资,他还问我Nginx调优

我是一个运维“老鸟”&#xff0c;目前在到处找工作阶段。周三刚面试完一家公司&#xff0c;还是非常中意的公司。结果是我中意公司&#xff0c;公司不中意我&#xff0c;妥妥的黄了。面试完我才知道&#xff0c;Linux云计算工程师必须能精通20多个企业级服务器优化。我之前不是…

android导出apk文件_Android测试工具入门介绍(三)

介绍一款牛逼的测试框架Drozer&#xff0c;一款可以检测Android一些公共漏洞的工具&#xff08;可能远不止这些、还可以继续挖掘&#xff09;&#xff0c;还可以生成shellcode&#xff0c;进行安卓设备的远程exploit。附下载地址&#xff1a;https://github.com/mwrlabs/drozer…

bomb炸弹

今天看到的一个Linux shell命令&#xff0c;但是我先说下&#xff0c;这个命令是危险的&#xff0c;所以没事的时候不要随便执行&#xff0c;出现了各种危险不要怪我没有提前告诉你哈。DANGER!命令代码:(){ :|: & };:命令解析1:() 意思是定义了一个函数&#xff0c;这个函数…

kindle的xray怎么用_Xray简单使用教程

Xray简单使用教程0X00下载xray 为单文件二进制文件&#xff0c;无依赖&#xff0c;也无需安装&#xff0c;下载后直接使用。下载地址为&#xff1a;注意&#xff1a; 不要直接 clone 仓库&#xff0c;xray 并不开源&#xff0c;仓库内不含源代码&#xff0c;直接下载构建的二进…

文件方式实现完整的英文词频统计实例(9.27)

1.读入待分析的字符串 2.分解提取单词 3.计数字典 4.排除语法型词汇 5.排序 6.输出TOP(20) 文本代码如下&#xff1a; girlRemembering me, Discover and see All over the world, Shes known as a girl To those who a free, The mind shall be key Forgotten as the past Ca…

UNUSED参数,这个宏,很秀

前言你们有没有在写代码的时候&#xff0c;遇到有的参数&#xff0c;从函数体里面传进来&#xff0c;但是又用不上&#xff0c;所以就不引用&#xff0c;但是不引用&#xff0c;在编译的时候&#xff0c;就会提示错误。是不是很尴尬&#xff0c;我们不使用&#xff0c;并不是错…

利用Python对文件进行批量重命名——以图片文件为例

效果如下&#xff1a;0001号用户的第 i 张图片 代码&#xff1a; import osclass ImageRename():def __init__(self):self.path C:/Users/lbpeng/Desktop/test/chictopia2/images1/fashioninmysoul/fulldef rename(self):filelist os.listdir(self.path)totalnum len(fileli…

mysql双重分组没有值也要显示_mysql 统计数据,按照日期分组,把没有数据的日期也展示出来...

因为业务需求&#xff0c;要统计每天的新增用户并且要用折线图的方式展示。如果其中有一天没有新增用户的话&#xff0c;这一天就是空缺的&#xff0c;在绘制折线图的时候是不允许的&#xff0c;所有要求把没有数据的日期也要在图表显示。查询2019-01-10------2019-01-20日的新…

我一个专科生,还有未来吗?

今天分享一个星球里面的讨论你好&#xff0c;我加入这个星球也算比较久了在此之前也一直都是在观望&#xff0c;我是一个19年因为高考失利而没有选择复读的专科生&#xff0c;我选择的专业是嵌入式技术与应用&#xff0c;最近不知道为什么特别迷茫&#xff0c;在选择读专科之前…

mysql查询数据库第一条记录_SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...

Sqlserver 获取每组中的第一条记录在日常生活方面&#xff0c;我们经常需要记录一些操作&#xff0c;类似于日志的操作&#xff0c;最后的记录才是有效数据&#xff0c;而且可能它们属于不同的方面、功能下面&#xff0c;从数据库的术语来说&#xff0c;就是查找出每组中的一条…

Linux select/poll机制原理分析

转载一篇文章&#xff0c;讲解select和poll机制的&#xff0c;分享给大家。前言Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基1. 概述Linux系统在访问设备的时候&#xff0c;存在以下几种IO模型&#xff1a;Blocking IO Model&am…

SSM框架的搭建学习(1)---MyBatis的环境搭建

SSM(SpringSpringMVCMyBatis)框架为当今最为流行的WEB开发框架之一,基本上涉及数据库的一些增删改查操作都可以借用此框架,本尊此前接的一个小公司关于楼宇空调监控指标的项目就是基于此框架,只不过当时框架已经被别人搭建好,只等我去添砖加瓦,并没有从头开始对此框架进行着手搭…

argv python 提示输入_Python解释器

一、Python解释器我们编写的Python代码都要放在Python解释器上运行&#xff0c;解释器是代码与计算机硬件之间的软件逻辑层。当我们在操作系统上安装好Python之后&#xff0c;它就包含了保证Python运行的最小化组件&#xff1a;解释器 和 标准库。根据选用的Python版本的不同&a…

高阶篇:8.1)开模前评审及提交资料;

本章目的&#xff1a;明确开模前需要提交的资料&#xff0c;确保开模一次性成功。 在现有机械行业制作技术的大环境下&#xff0c;除却必要的机加工零件之外&#xff0c;大部分的零件量产都需要开模制作。如塑胶、钣金、压铸、粉末冶金、锻造等。 但是模具是很贵的&#xff08;…

Android系统充电系统介绍-预防手机充电爆炸

1、锂电池介绍锂离子电池由日本索尼公司于1990年最先开发成功。它是把锂离子嵌入碳&#xff08;石油焦炭和石墨&#xff09;中形成负极&#xff08;传统锂电池用锂或锂合金作负极&#xff09;。正极材料常用LixCoO2 ,也用 LixNiO2 &#xff0c;和LixMnO4 &#xff0c;电解液用L…

Linux物理内存初始化

背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明&#xff1a;Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio1. 介绍让我们思考…

mysql中%3c%3e和=_Grafana+Prometheus 监控 MySQL

架构图环境IP环境需装软件192.168.0.237mysql-5.7.20node_exporter-0.15.2.linux-amd64.tar.gzmysqld_exporter-0.10.0.linux-amd64.tar.gz192.168.0.248grafanaprometheusprometheus-2.1.0.linux-amd64.tar.gznode_exporter-0.15.2.linux-amd64.tar.gzgrafana-4.6.3.linux-x64…

Linux CentOS7.0 (01)在Vmvare Workstation上 安装配置

一、新建虚拟机 1、创建新的虚拟机 -》 默认典型 -》选择安装介质 2、指定虚拟机名称、安装目录、磁盘容量大小 点击 “完成”&#xff0c;创建虚拟机&#xff01; 随后虚拟机将自动启动安装过程。 二、安装linux 1、选择 English、English&#xff08;United States&#xff0…

i=1,为什么 (++i)+(++i)=6?

源码#include "stdio.h"int main(void) {int i 1;printf("%d\n",(i) (i));return 0; }执行weiqifabsp-ubuntu1804:~/c/undif$ gcc g.c && ./a.out 6 weiqifabsp-ubuntu1804:~/c/undif$为什么出现这个鬼现象&#xff1f;原因很简单&#xff0c;C语…

Android-HIDL实例解析

HIDL 简介“HAL interface definition language or HIDL (pronounced “hide-l”) is an interface description language (IDL) to specify the interface between a HAL and its users. It allows specifying types and method calls, collected into interfaces and package…