程序员的暴力美学
调试程序是件闹心的事。尤其是你坐在那里几乎不动,在屏幕上苦苦工作了好几个小时,才发现这狗日的内存泄漏不是你的问题,而是某个浏览器(或者别的什么应用)。为了形象一些,我们暂且当这个浏览器是firefox
(sorry firefox),你是不是有抄起一把AK47,把它打成筛子的冲动?
神马,手上没有武器?那就温柔一点,爆爆粗口?于是你在shell上敲了如下脏话:
fuck you - you ruined my day, firefox
可是shell温柔地回复你:"zsh: command not found: fuck"。郁闷!
前几天,我关注的大神mttn fork了robotlolita的一个repo:fuck-you。使用如下:
安装很简单:npm install -g fuck-you
,然后就可以随心所欲地对着你不爽的进程,发出最狠毒的谴责。
$ fuck you - you ruined my day, firefox
(╯°□°)╯︵xoɟǝɹıɟ (x1)
受此启发,mttn搞了个 go to hell <process_name>
。玩fuck you
玩到厌倦了,可以这么跟你的应用程序唠唠嗑:
go to hell iTunes go to hell bastard rabbitmq
有时候其实不全是应用程序的错。干活干累了,你自己的手脚都不太听大脑的指挥,本来是要敲git push
,结果一不小心敲成了gti push
,结果还得浪费时间重敲一次,是不是很想扇自己一耳光?
先别忙扇耳光,rwos的神器gti前来救驾:
看到这里,你可能会想,程序员们是一群什么样的家伙啊!
呵呵。
怎么说呢?作为程序员,我们很可怜,可怜到只能用飞速敲击的命令和冰冷的机器抗争;我们也很可爱,写出来的注释满满的都是爱。我们用自己独特的方式诠释着程序员的暴力美学。
看看这些奇葩的代码注释。
看过vsprintf.c的人想必都对这句注释有印象:
/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. / /
- Wirzenius wrote this portably, Torvalds fucked it up :-) */
写代码写成了童话/科幻故事:
long long ago; /* in a galaxy far far away */
这段代码需要上帝保佑:
//When I wrote this, only God and I understood what I was doing
//Now, God only knows
请叫我傻瓜:
//This code sucks, you know it and I know it.
//Move on and call me an idiot later.
没事干点恶作剧:
#define TRUE FALSE
//Happy debugging suckers
谨以此代码献给我老婆:
// I dedicate all this code, all my work, to my wife, Darlene, who will
// have to support me and our three children and the dog once it gets
// released into the public.
我很可怕,但我速度很快:
/* These loops are O(scary), but seems quick enough in practice. */
代码读不下去了,可生活还得继续:
/*
* You may think you know what the following code does.
* But you dont. Trust me.
* Fiddle with it, and youll spend many a sleepless
* night cursing the moment you thought youd be clever
* enough to "optimize" the code below.
* Now close this file and go play with something else.
*/
这代码我不负责,那些坏蛋逼我写的:
// I am not responsible of this code.
// They made me write it, against my will.
写给未来的自己的忏悔书:
//Dear future me. Please forgive me.
//I can't even begin to express how sorry I am.
臣妾做不到啊:
// I have to find a better job
最后,我最喜欢的一条:
// hack for ie browser (assuming that ie is a browser)
谨以此文献给程序员们的另一半,他们的工作真心不容易,需要你的关心和呵护。:)
- 如何在5分钟内做出你的第一个开源贡献
- [喵咪大数据]HUE大数据管理工具
- Dubbo源码解析 —— Zookeeper 订阅
- 注册中心 Eureka 源码解析 —— 项目结构简介
- 【平台】Seldon.io发布新开源平台,用于Kubernetes上的机器学习
- 分布式事务 TCC-Transaction 源码分析 —— TCC 实现
- 了解学习速率以及它如何提高深度学习的表现
- 分布式消息队列 RocketMQ源码解析:事务消息
- WordPress用Windows主机设置伪静态方法
- PHP页面跳转代码
- 分布式事务 TCC-Transaction 源码解析 —— 调试环境搭建
- 机器学习入门——使用python进行监督学习
- 推荐算法的介绍,第一部分——协同过滤与奇异值分解
- 在ASP中实现UNIX时间戳
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python教程 | 最标准的地图调用方式(国家测绘局提供数据)
- Kubernetes K8S之资源控制器StatefulSets详解
- Kubernetes K8S之资源控制器Daemonset详解
- Kubernetes K8S之资源控制器Job和CronJob详解
- Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理
- Kubernetes K8S之Pod跨namespace名称空间访问Service服务
- Kubernetes K8S之Service服务详解与示例
- Kubernetes K8S之Ingress详解与示例
- Kubernetes K8S之存储Secret详解
- 在K8s上轻松部署Tungsten Fabric的两种方式
- Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务
- Servlet执行流程
- 最新的spring boot技术实现登录、列表、分页、上传等功能
- 谈谈我对Vue钩子函数、生命周期的理解
- 浅谈Apache Shiro权限模块及数据库设计