danny-cohen-has-died

近日,著名计算机科学家 Danny Cohen 病逝,享年 81 岁。

Danny Cohen,计算机科学家,1937 年 12 月 9 日—2019 年 8 月 12 日。

Danny Cohen 为计算机科学做出了巨大的贡献,他参与了 ARPAnet 项目,并帮助开发了互联网的各种基础应用程序;他率先提出字节序(endianness)的概念;其开创性工作为现代 VOIP 服务开辟了一条道路;Danny 还开发出首批的集群计算部署系统,为现代云技术铺平了道路;此外他还开发出了第一个可视化飞行模拟器。

Danny 最为人所知的事迹是在 1980 年通过其具有重大影响的论文《论圣战以及对和平的祈祷》(On holy wars and a plea for peace),为计算机科学界引入了字节序的概念,IETF 保存了该论文。Danny 将字节序归结为一个异常简单的问题:消息中正确的字节顺序是什么?并用外行人听得懂的浅显语言解释了这个问题,逐层解读,这一具有深远意义的贡献使他在现代计算历史长河中拥有一席之地。

Danny 在 1978 年对他所谓的“数字语音电话会议”开展了一番早期工作,数字语音电话会议是现代 VoIP 技术的基本理念,从 Skype 到基于无线数字应用软件和套件的语音呼叫都依赖于该技术提供支持。

2012 年,互联网名人堂将 Danny Cohen 列入名录,以表彰这位先驱。

关于 Danny Cohen 的更多信息,查看:

bash-step-to-step

bash 跟着敲

前言:本文不单单是介绍常用的命令,还融入了bash语法,每个知识点都有浅显的例子配合,让你很容易消化并吸收,最后还有一个boss任务等你挑战,耐心学完的同学肯定会有很大的收获的。

查看原文:https://github.com/cookieY/bash-step-to-step#export

prodigal son turned back

浪子回头

原唱:茄子蛋乐队。
《浪子回头》是茄子蛋乐队发行于2013年的歌曲,演唱语言为闽南语。相信不少人对歌词一头雾水,但还是能听到一些情怀与沧桑。
这是描述一个年少轻狂的、关于友情的故事,如果可以,推荐你们去看一看这首歌的MV,满满的回忆感。

茄子蛋《浪子回头》歌词音译
浪子回头(歌词音译)

烟一支一支一支地点
婚~叽 gī 叽 gī 叽 gī 爹 diang
酒一杯一杯一杯地干
就~叽 boy 叽 boy 叽 boy 爹 荡
请你要体谅我
呛 哩 爱咿 体 谅 哇
我酒量不好别给我挖坑
哇 酒 量 波 候 麦 嘎 卧 葱 坑
时间一天一天一天的走
西干-叽 刚 叽 刚 叽 刚 爹 走~乌
汗一滴一滴一滴的流
锅~叽 滴 叽 滴 叽 滴 爹 老~嗷~乌
有一天我们都老
乌叽刚-囊隆老
带妻子一起
cua 波 gian 到 丁
浪子回头
隆 子 were 涛
亲爱的 可爱的 英俊的 朋友
亲爱爹 阔爱爹 颠多爹~扁优
垃圾的 没品的 没出息的 朋友
公扫爹 摸拼爹 摸多优泥~扁优
在坎坷的路骑我二流摩托车
滴 康 K 诶 哆 咔 哇 luang 嘭 O 哆 哇 咿
反正我的人生像是狗屎
怀 滴 歪 井 熊 刚 那 搞 赛
我没钱没妻没子只有一条命
瓦 波 七 波 窝 波 giang 刚 那 几 掉 命
朋友阿
扁 优 哇
一起来赌吧
到 丁 来 boy 啊
烟一支一支一支地点
婚~叽 gī 叽 gī 叽 gī 爹 diang
酒一杯一杯一杯地干
就~叽 boy 叽 boy 叽 boy 爹 荡
请你要体谅我
呛 哩 爱咿 体 谅 哇
我酒量不好别给我挖坑
哇 酒 量 波 候 麦 嘎 卧 葱 坑
时间一天一天一天的走
西干-叽 刚 叽 刚 叽 刚 爹 走~乌
汗一滴一滴一滴的流
锅~叽 滴 叽 滴 叽 滴 爹老~嗷~乌
有一天我们都老
乌叽刚-囊隆老
带妻子一起
cua 波 gian 到 丁
浪子回头 隆 子 were 涛

在坎坷的路骑我二流摩托车
滴 康 K 诶 哆 咔 哇 luang 嘭 O 哆 哇 咿
反正我的人生像是狗屎
怀 滴 歪 井 熊 刚 那 搞 赛
我没钱没妻没子只有一条命
瓦 波 七 波 窝 波 giang 刚 那 几 掉 命
朋友阿
扁 优 哇
一起来赌吧
到 丁 来 boy 啊
烟一支一支一支地点
婚~叽 gī 叽 gī 叽 gī 爹 diang
酒一杯一杯一杯地干
就~叽 boy 叽 boy 叽 boy 爹 荡
请你要体谅我
呛 哩 爱咿 体 谅 哇
我酒量不好别给我挖坑
哇 酒 量 波 候 麦 嘎 卧 葱 坑
时间一天一天一天的走
西干-叽 刚 叽 刚 叽 刚 爹 走~乌
汗一滴一滴一滴的流
锅~叽 滴 叽 滴 叽 滴 爹老~嗷~乌
有一天我们都老
乌叽刚-囊隆老
带妻子一起
cua 波 gian 到 丁
带妻子一起
cua 波 gian 到 丁
带妻子一起
cua 波 gian 到 丁
浪子回头

月薪3K与3W网络工程师差距

  1. 很幽默。
  2. 培训体系给我们灌输了很多内容,比如STP/VTP/RIP/OSPF/BGP/MPLS/路由重分发等,但实际项目中用得最多的往往是VLAN,很多项目OSPF都不需要,直接一条静态路由搞定。
  3. 在这个基础网络同质化的年代,卖交换机不得不谈点高大上的方案与技术,什么敏捷交付/策略随行/业务编排、什么SDN/VXLAN,至于用不用另说。(试问买顶配车型的土豪们,所有功能你们都用到了吗?)

如果你工作了好几年,还是只会划个VLAN,配条静态路由,插上console干完通了就走,又能怨谁 月薪3K呢?这种工作,找个高中生培训2个星期CCNA,他也会干,你的核心竞争力在哪儿?

网络上经常有人讨论 网络工程师与程序员,其实也不得不承认,网工平均待遇比程序员低,因为存在太多低级 “操作工” 。但高级网络工程师待遇真不一定比同等资历的程序员低,何为高级? 反正高级网工基本不敲命令行了,高级程序员也不写代码了。

当然,初入社会的小菜鸟,谁都难避免 “操作工”阶段,但你要学习,要成长呀,人往高处走,水往低处流!

谈谈高薪 网络工程师能力

1. 整体架构能力

经过几十年发展,网络早已经不只有交换机、路由器,安全也不仅仅有最初的防火墙、入侵检测。平时我们谈网络其实早已 泛网络化,包含:路由交换、安全、无线、网络优化、存储、数据中心、容灾备份、云计算等等。整体架构能力就是熟悉这些产品、技术和方案,能够结合客户场景/业务 合理规划设计,能做超大项目整体架构设计的人,其实是超越了售前/售后的另一类人。

2. 技术细节

很多人的学习是停留在表面的,包括我,就像年轻医生,一般问题都能解决,但遇到十年一遇的疑难杂症,还是得要老专家出马。听完培训课程,敲敲实验,大部分项目做起来没压力,但要想成为车小胖那样的“老专家”,有时间还是老老实实看 TCP/IP卷一、路由卷一卷二、RFC文档。

3. 排错思路

原厂售后是很稀缺的资源,主要在做 大项目售前测试和高等级故障处理。大部分项目售后实施人员都是 外包公司或集成商,一个优秀网络工程师不在于你命令敲定多666,也不在你能记住多少厂商的命令行,这都是在配置手册里面复制粘贴的事情。重点是排错、解决问题的思路。

4. 经验

刚考完CCIE的应届毕业生,技术原理/命令非常6,但待遇还差得远。

分享一个大家常见售前坑售后的故事:某项目实施阶段,交换机不支持某招标要求的功能,售后小菜鸟直接跟甲方负责人说,这个功能我们不支持,甲方非常生气,后果很严重。 如果是售后老鸟肯定不会直接跟甲方“坦白”。问题出了,现在关键是解决问题,把情况同步相关售前、销售,让他们想办法解决: 是找替代解决方案,是找研发开发新版本,还是去做客户商务关系。这本不是售后的责任,如果你不说或者直接跟客户说,这就是售后的问题了。

时间沉淀

寻找正确的“甩锅”方式,不甩烫死你,甩错了烫死别人,你也得负责。这就是经验。

5. 其他软实力

软实力非常多,诸如:沟通交流、言谈举止、演讲呈现、坚韧不拔、勤奋好学等等,你人帅人美也算,每个人的软实力是不一样的,发现它,发挥到极致,记住“弥补缺点永远比发扬优点困难”。

6. 机遇与平台

一次好的机遇,一个好的平台,能让你少奋斗十年。

人生几十年,你总不会一直点背,机遇总留给有准备的人。

当然,几乎没人能具备所有能力,也不是每个人运气都很好,但只要不断学习,提升自己,明天就会有希望,祝好!

来源:https://blog.51cto.com/weilan2222/1978735

wordpress 自动升级失败地解决方案

因多种原因导致下载失败,超时等多种问题,使用手动麻烦,容易出错

现在找出一种方案,实现半自动方式:

手动下载,需要的版本文件
https://downloads.wordpress.org/release/zh_CN/wordpress-xxx.zip
一定要选择 zip 地,要不可能解压不了

把下载地文件放到 wp-content/temp 文件夹下,并设置服务用户(如 www)可写

并更改后缀为 tmp,获取更改后文件绝对路径;/…../wp-content/temp/wordpress-xxx.tmp

修改文件:vim wp-admin/update-core.php 大约在559行,下载前位置,添加下面代码,保存;
$update->packages->full=$update->download=”$webroot/wp-content/temp/wordpress-xxx.tmp”;

在界面上点自动更新,OK enjoy.

初级、中级和高级开发人员之间的差异 The Differences Between a Junior, Mid-Level, and Senior Developer

作者:Daan
翻译:Sambodhi

有一句话在开发人员圈子广为流传:“初级开发人员的标志就是需要在中级和高级开发人员的指导下完成工作。”所以,我们不要苛刻初级开发人员写的代码对错严谨,毕竟每个开发人员都有这样的一个过程。据译者观察,初级开发人员往往认为自己写的代码都是高质量的;而中级开发人员认识到了软件知识会影响代码质量;中高级开发人员则认识到硬件知识会影响到代码质量;高级开发人员反而认为自己写的部分代码质量不够高,需要恶补硬件知识和编译器等相关知识……至于骨灰级开发人员,可以写出高质量代码,并能够充分考虑各种情况。本文,后端开发者 Daan 讲述了初级、中级和高级开发人员之间的区别。

作为初级、中级或高级开发人员,并不仅仅跟多少年的编程经验相关。初级开发人员甚至可以比高级开发人员年龄要大。这一切都取决于技能。不过,这并不意味着高级开发人员必须是所有方面的专家,但可以肯定地说,高级开发人员要比初级、中级开发人员熟练得多。

既然高级开发人员与初级、中级开发人员的区别不仅在于编程技能,那么到底有什么区别呢?

知识

很显然,高级开发人员比初级、中级开发人员掌握更多的知识。了解设计模式、架构、自动化测试、性能、安全性等,这是初级开发人员缩小与中级、高级开发人员之间的知识差距的好方法。

了解软件开发中的事情应该如何进行是很重要的。但是,仅仅知道这些知识并不能让你成为高级开发人员。知识并不是开发人员之间最大的区别,它只是其中的一个因素。

编程

不管大多数人是怎么想的,编程并不是与计算机进行通信。编程是关于与人类交流指导的计算机。最终,代码被编译并转为一连串的 0 和 1。

代码必须对将来使用它的其他开发人员有意义。一个以前从未见过代码的新团队应该能够阅读代码并开始研究新功能或进行 bug 修复。这就是初级和高级开发人员之间的巨大差异所在。

在这一比较中,我将把中级开发人员排除在外,因为,在编程技能方面,中级开发人员处于一个灰色地带。显然,中级开发人员介于初级和高级开发人员之间,他们可能更倾向于高级开发人员。这主要与经验有关,因为中级开发人员可能至少经历过一次整个开发周期。他们犯过许多最简单的错误,并从中汲取了教训。

如何识别初级开发人员?

初级开发人员缺乏经验。有些人刚刚毕业,正在开始他们的第一份全职工作。初级开发人员的心态通常是能够让代码工作就万事大吉了。工作软件和良好的软件对他们来说,没什么不同。

编写简单的代码其实是一件很困难的事情,这恰恰就是初级开发人员不擅长的事情。初级开发人员倾向编写花哨的代码。你可以通过古怪的代码、过于复杂的抽象来识别出初级开发人员。这就是初级开发人员炫耀的方式,好让其他开发人员知道他们编写的代码有多牛逼。其实,他们这一做法是错误的。

初级开发人员只专注于代码的计算机方面,而忽视了人性方面。

那么,高级开发人员呢?

当你查看高级开发人员编写的代码时,你心里可能会嘀咕:就这些吗?代码的其余部分在哪里呢?高级开发人员编写的代码,看上去简洁、直接了当,甚至还可能让人觉得很愚蠢。而这正是开发人员在编程时可以拥有的最大品质之一。高级开发人员遵循的是 KISS 原则:保持简洁,愚蠢。

译注:KISS 是英文 “Keep it Simple and Stupid” 的首字母缩写,意思是 “保持简单和愚蠢”,其中 “愚蠢” 不是 “傻”,它还有 “迟钝”、“不敏感”、“乏味”、“无价值” 等综合含义。另一种对 KISS 的解释是:“Keep It Simple,Stupid” 由于中间加了逗号,意思就变成了 “保持简单,傻瓜”,是一种祈使语态,带有调侃的色彩。

好的目标不是越复杂越好,反而是越简洁越好。这就是 KISS 原则。符合 KISS 原则的目标都是关键的,而非包罗万象;目标必须确定优先顺序,而关键的目标则是资源和努力的重心。总结开发人员在编程过程中的经验,大多数应用程序的设计应保持简洁和单纯,而不掺入非必要的复杂性,这样的应用运作成效会取得最优;因此简单性应该是软件开发中的关键目标,尽量避免不必要的复杂性。

高级开发人员以不同于初级开发人员的方式思考他们的代码。高级开发人员编写的代码会考虑到可维护性和可扩展性。这与初级开发人员的思维方式完全不同:高级开发人员考虑的是必须与代码打交道的人,而初级开发人员只是考虑如何让代码在计算机上工作。

不仅仅是编程技能的问题

除了编程技能外,还有一些其他因素可以告诉你谁是哪种类型的开发人员。

一般来说,初级开发人员执行最简单的任务或影响较小的任务。他们不参与任何架构设计。中级开发人员也不负责设计解决方案,他们只是执行任务。与初级开发人员的不同之处在于,只要分配给他们相对常规的任务,他们就会执行这些任务,而无需过多的监督。而高级开发人员则完全可以自己开发应用程序。

但这并不意味着高级开发人员在开发过程中没有任何问题。实际上,每个开发人员每天都会遇到很多问题,这点是不会改变的。对于高级开发人员来说,也是概莫能外。

区别在于高级开发人员知道如何提出正确的问题,以及如何处理这些问题。当涉及到相对常规的任务时,中级开发人员可以提出正确的问题,但在更复杂的任务上就力有未逮,需要高级开发人员的帮助了。

高级开发人员永远不会迷失方向,他们知道如何以正确的行动来跟进问题。但是,这并不意味着高级开发人员不能向其他开发人员寻求帮助。有时,最好的方法就是向其他在该领域有经验的开发人员寻求帮助。

中级开发人员也应该能够提出正确的问题,只要他没有被分配到需要深入知识层面的高度复杂的任务。

你不应该指望初级开发人员能够立即提出正确的问题。由于初级开发人员缺乏经验,他们需要更有经验的开发人员的指导。初级开发人员需要获得必要的资源,或向正确的方向大力推进。

晋升下一个层次

作为开发人员,我们都想提高自己,变得更好。但是,你可以采取哪些步骤来晋升到下一个层次呢?

从初级开发人员到中级开发人员

由于初级开发人员缺乏经验,因此至少要经历几次整个开发周期,这一点是很重要的。这样一来,你会掉进很多陷阱中,并学会如何在下一次避免它们。

说到编程,你应该学习如何编写简单的代码。想想下一个将要处理这段代码的人。你还应该学习如何调试,因为这将使你能够更好地理解这一过程中发生的事情。

此外,你应该熟悉最佳实践,并了解架构、性能、安全性等。缩小到达中级水平所需的知识差距。

从中级开发人员到高级开发人员

从中级开发人员到高级开发人员可能会相当困难。有些开发人员在整个职业生涯中,始终处于中级水平。

高级开发人员知道什么可以走捷径,什么永远不可以走捷径。这些都是从过去所犯的错误中汲取的教训。

如果你想要成为高级开发人员,就必须准备好接受没有人知道如何解决的任务。但你应该知道的不仅仅是如何完成工作。

作为高级开发人员,你的工作还包括帮助经验较少的开发人员。当他们不知道如何做某些事情时,你就是他们的后备力量。

高级开发人员掌握了他们的技术栈,这可能不会让你感到惊讶。记着,成为高级开发人员可不仅仅是编程技能,还要了解你所在公司中使用的所有工具和应用程序。

结论

初级、中级和高级开发人员之间的区别并不全在于有多少年的经验。当然,可以肯定地说,高级开发人员比初级、中级开发人员更熟练,但知识并不是最重要的因素。

与初级开发人员相比,高级开发人员编写的代码更简单,并且思维模式也不同。但这不仅仅是编程技能。知道要问什么问题,以及如何跟进这些问题是至关重要的。只有那些拥有丰富经验的高级开发人员,才知道在如何在任何情况下做到这一点。

作为一个初级开发人员,你应该专注于如何编写简单的代码,并经历多个开发周期。要从中级开发人员晋升到高级开发人员,你应该专注于学习,而不仅仅是解决常规任务。你应该愿意承担最艰巨的任务,成为技术栈的大师。高级开发人员的另一个职责是为经验不足的开发人员提供后援力量。

我将引用 Martin Fowler 的一句话作为结束语:“任何傻瓜都可以写出计算机能理解的代码,而优秀程序员可以写出人能读懂的代码。”(Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

作者介绍:

Daan,荷兰的后端开发者,密码学爱好者。

原文链接:

The Differences Between a Junior, Mid-Level, and Senior Developer