阿里巴巴式程序员:超能力者为何在一行代码中写下阶层恶意?
虾米Mac客户端里的代码注释来源:V2EX同样是程序员出身,我国互联网公司和扎克伯格的差别从一开始就决定了。年少轻狂的Facebook创始人会直截了当地在名片上印上I'mCEO,Bitch,而虾米的程序员却只能在产品的代码中暗搓搓地骂上一句而已。V2EX社区里的用户无意间发现,虾米Mac客户端的代码注释中包含着对兑换获得VIP资格的用户的嘲讽(上图),虽然大家也向来以此自嘲,但是,当有大公司真得把如此残酷地说出来的收,终究还是引起了一片风波。距离互联网进入中国至今不过二十多年,但是,在官僚和政客之外,终于有了另外一个职业可以具有如此高的优越感,并如此诚实表露对普通人的睥睨和居高临下。说到程序员群体,让更多人联想到的可能是“加班狗”这个词的存在以及互联网热潮中水涨船高的价码。然而,讽刺的是,这个向来以弱势群体自居的群体,最后却把矛头直剌剌地指向了更多更普通的在更大的体制下被压榨的用户。如果以薪酬计算的话,程序员的薪水自然毫无疑问地超过了绝大多数行业的平均收入,他们从某种角度而言,程序员实际上可以算
为创业我做了十年的程序员,你告诉我“程序员不适合创业”?!
今天啥事都不做了,一定要好好的怼一怼这家伙!为了创业,我一个文科生,一个包工头,27岁学编程,转行做程序员,跳进这坑里已经十年了……十年啊!人生有多少个十年?然后你告诉我程序员不适合创业?我……我先点个反对再说。然后,然后……然后觉得好像说得有那么一点点的道理?但是,注意这个但是,有一点点的道理我就不怼你了吗?哈哈哈……tooyoungtoosimple,你这个标题党!让你抢风头!哼哼╭(╯^╰)╮讲道理,没有任何一种职业的人就“适合”创业。然而,程序员创业(这里特指软件/互联网等编程相关领域,如果你是去开餐馆,当我没说)是最有优势的。不然,为什么这句话这么经典:就差一个程序员了!程序员对这句话各种调侃,看不到“非程序员”创业的艰辛。我“零基础”课程QQ群里有一个网友,像个傻子一样(原谅我这样说他吧)花了几万块钱,买回来一套屁用没有的程序源代码,折腾了好久,现在老老实实的学技术。很多程序员超级不满他们的领导,“外行领导内行”,整个就一超级大傻逼!对,他就是一傻逼,但你以为他想当傻逼啊?那他不
致程序员的一封信:去你的“油腻中年”!
油腻程序员的一生第一阶段代码水平不高的时候,天天加班也干不完,还说其实是喜欢。随着代码水平的提高,注释写的越来越少,话也越来越少了。话说得少了,觉得办公室气氛变得有点压抑,于是离职换了一家公司。第二阶段在新的公司还是那么忙,于是经常幻想老了就可以轻松点,却发现脑门子越来越大,眼睛看不清楚了,胳膊腿儿越来越细,肚子越来越大,原来已经提前老了,但是还要加加班。终于有一天升职,来了几个帮手,可是他们水平不高,天天加班也干不完,还说其实是喜欢。这些新来的下属们加班总是帮倒忙,引入的Bug比解决的Bug多多了。于是每天劳心劳力的去帮助他们,要求他们代码写好,那样可以少写注释。终于发现他们的水平逐步提高了,注释写的越来越少,但是话也越来越少。话说的少了,似乎办公室气氛变得有点压抑,终于下属告诉我已经辞职下月离职,这陌生的感觉仿佛换了一家公司。第三阶段于是更加忙了,总是幻想老了就可以轻松点,却发现脑门子越来越大,眼睛看不清楚了,胳膊腿儿越来越细,肚子越来越大,原来已经提前老了,但是还要加加班……Then404NotFo
虾米音乐代码曝光:程序员吐槽赠送的VIP是“穷X”
我们都知道,因为版权之争,虾米、腾讯和网易在音乐领域争得你死我活,而各个平台会对不同的VIP客户进行不同的分类。同时,各个平台也会经常做一些优惠活动,送出一些短期VIP优惠券,吸引用户使用自己的APP。一旦领取了免费的VIP优惠,看上去就跟花钱购买的VIP享受同等的待遇了。殊不知,这些免费的VIP用户,暗地里却被虾米的程序员骂成了“穷X”。而在虾米音乐MAC客户端里,一位程序员小哥就顺手给这些短期VIP用户起了一个名字,叫做“穷Xvip”,英文是Beggarvip(注:意为乞丐vip),还标注了“搞活动送的”等字样……很快,虾米音乐App前员工八座在知乎上道歉了:“对不住各位,本人就是那位始作俑者程序员。今后我老老实实写代码,正正经经写注释”。八座表示,本意并没有任何歧视意思,只是想吐槽一些活动规则的复杂,但是不管如何,错了就是错了。据了解,这是由于代码检查不到位导致的不当用语外露。这位程序员在道歉信中表示,在自以为是的“吐槽”中丧失了对客户的敬畏,对所有虾米用户,以及互联网用户表示道歉。虾
程序员必须要会算法吗
程序员很多人可能是好莱坞大片看多了,以为计算机神通广大,但事实不是这样的。计算机其实是一种很傻的工具,傻到几乎没有智商,它可以连续几年做同一件事情而毫无怨言,但是如果你不告诉他怎么做,他什么事情也不会做。最有创造性的活动其实是由一种被称为“程序员”的人做的,计算机做的只不过是人类不愿意做的体力活而已。比如图像识别技术,需要一个字节一个字节地处理数据,提取数据的特征值,然后在海量的数据中比较,匹配这些特征值。计算机愿意做,但前提是你要告诉他怎么做。算法可以理解为这样一种技术,他将告诉计算机怎么做。有人将编程理解为搭积木,直接用别人开发好的组件,库,甚至是类或API就行了,并且美其名曰“不用重复发明轮子”。我认为这其实就是所谓的系统集成,如果一个程序员每天的工作就是搭积木,那将是令人十分羡慕的事情,但是我知道事实并不是这样的。这样搭积木式的编程计算机就可以做,没有必要让人来做,因为人工的成本高于计算机。我遇到的更多的是在论坛里发帖求助的人,比如“求代码,把一个固定格式的文本文件读入内存”,再比如“谁能帮我把这个结构数组排序啊,书上的例子都是整数数组排
面试旁听小记
最近旁听了两场面试,有一些体会,简单地记录一下。面试旁听其实是一件挺有趣的事,因为可以站在面试官和面试者之外的角度进行观察,进行自己的分析和判断。对于像我这样既缺乏面试经验,又缺乏面试官经验的刚毕业没多久的“雏鹰”(哈哈,公司这么叫的)来说,这样面试旁听、观察学习,是一件非常有趣且有意义的事,以下是一些我旁听过程中的体会。面试官篇充分的准备旁听前或者旁听过程中,面试官都会给我一份简历,我发现面试官在简历上都提前做了标记或是写下了问题。在旁听过程中,面试官一般会针对提前做好的标注进行提问。如果有不了解的内容,也会提前查阅一些资料。这让我意识到了作为面试官准备工作的重要性,因为只有你以专业的态度去面对面试者,才是对他最大的尊重。这让我想起了我来到酷家乐时的面试官景天,我面试前准备其实并不充分,但是相反景天的准备是相当充分的,他把我简历上的GitHub项目、我的每一篇博客都大致看了一下。当时面试完,感觉情况比较糟,但是觉得不过也没关系,因为面试官的充足的准备以及专业的态度,让我意识到自己的不足、以及感受到了面试官的尊重。
和BAT的几个朋友一起做了份面试指南(Android的)
各位童鞋晚上好,今晚为大家推荐在小专栏平台一个《Android面试指南》专栏,这个专栏由我的好朋友王子童鞋发起,组织了微信、阿里、酷狗、聚美(BAT就差百度,原谅我的标题)等若干位工程师(也有我)一起编写的。偶尔会在微信或公号后台收到其他童鞋提问关于面试和选择offer的问题,我个人很难一一去回复,而且有时我的答案可能也不全面,这个专栏可以说集合了其他各位大佬的智慧,对于面试和offer选择有所困惑的同学这里衷心推荐一下。为了避免浪费不喜欢付费阅读的童鞋的时间,提前说明一下,这个专栏是付费的(99元一次性订阅),目前已经有263个同学订阅了。很少在晚上推文章,因为我明天一大早要飞去成都玩几天,所以大晚上的先推荐一下。唠叨了这么多,感兴趣的同学可以直接进入正文了。每个公司都会因为产品形态不一样,对工程师的技术要求的侧重点会不一样,Android面试指南是来自一线互联网公司工程师对自己部门的面试题深度剖析,帮助读者可以更好认识到自己不足,补足短板面试成功。《Android面试指南》除了对Android面试心得面试题的解析之外
Java高并发高性能分布式框架从无到有微服务架构设计
微服务架构模式(MicroserviceArchitectPattern)。近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。微服务架构优势首先简单介绍了微服务(Microservices)的内涵及优势,微服务架构的本质,是用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。微服务架构将服务拆分,分别采用相对独立的服务对各方面进行管理,彼此之间使用统一的接口来进行交流,架构变得复杂,优势也很明显:复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注
架构设计思路
前言我们一般在做架构设计的时候,会经历过三个阶段:需求分析、概要设计和详细设计。需求分析阶段:主要梳理所有用例(Usecase)和场景,并抽象出面向系统的用户与角色,梳理出需求提供哪些功能与非功能的需求给这些用户。概要设计阶段:根据需求分析的产物:核心需求,对整个系统进行模块划分,并定义好模块之间的交互关系。详细设计阶段:通过多个视图来描述系统的架构,包括但不局限于:逻辑系统、物理视图、数据视图、物理视图非功能需求非功能的需求主要体现在高性能、高可用、可伸缩、可扩展、安全性等维度。非功能指标描述高性能运行效率高、响应速度快、吞吐量高可用性缩短宕机时间、出错恢复、SLA在线可用时间
软件架构模式-第二章事件驱动架构(下)
原文地址译者:克里斯托刘经纪人拓扑结构(BrokerTopology)经纪人拓扑结构和调度员拓扑结构不同点在于,没有中央事件调度员,而是:消息执行流程沿着类似链条连接的各个事件处理模块,通过轻量级的消息经纪人(比如AcitveMQ,HornetQ)实现。这样的拓扑结构,在你只需要处理一个相对简单的事件处理流程,同时不想要中央事件调度员时候,特别适用。在经纪人拓扑结构中,有两种主要的模块:经纪人模块和事件处理模块。经纪人模块可以是集中的,包含所有的用于事件处理流程的事件通道(eventchannel),该事件通道可以做成消息队列或者消息主题(messagetopics),或者两种的结合。该拓扑结构如图2-3所示。从图中,你可看到,它没有中央事件调度员控制和编排初始事件。每个事件处理模块负责响应一个事件并会发布出新的小事件(该小事件就是它执行过的事件)。例如,一个负责平衡股票投资组合的事件处理模块可能会收到一个股票分离的初始事件消息。基于这个初始事件,该事件处理模块会做一些平衡股票投资组合的操作,然后发布一个新的称为重
云集的全链路压测之路
《云集的全链路压测之路》其实说句实话,我们的全链路压测之路走的还是比较艰辛的,从最初纠结用什么压测工具开始,到压框架、压单接口、压压测环境,到线上环境一步步摸索,并结合其它友商的经验和方案,直至今天,将近耗时一年多的漫长时间,我们才最终在黑暗中摸索出了一条属于我们鸡场人自己的全链路压测之路,我们就是在不停的试错过程中逐步成长和成熟起来的。一、究竟什么是全链路压测流量不大的时候,开发人员、测试人员随便在线下做一把功能测试,只要功能能够正常跑通就行了,但随着用户规模线性上涨,流量越来越大,我们逐渐会意识到,光靠常规的功能测试似乎是远远不够的,流量上来了,必须重视系统性能了,毕竟谁也不希望自己的系统被流量无情击垮,要做到心中有数(清楚系统的容量水位,有指导的进行容量规划)。因此到了这个阶段,大多数企业都会选择在线下对框架、中间件、存储层实施压测,明确其吞吐量,但是这样的压测结果数据,离线上还是有很大差距,毕竟绝大多数企业的压测环境并不会与生产环境1:1(至今我也未曾见过这
全面云化的时代,不了解TA们怎么行…
全面云化的时代,不了解TA们怎么行…随着云技术的快速发展和迭代各行各业都在云中快速成长,全面云化的时代已悄然来袭作为一名有激情,爱学习,能熬夜的程序猿要想立技术潮头,玩转云计算你一定需要TA们的帮助传说中的微服务话说大约在公元2012年,微服务概念问世因软件作者MartinFowler而流行短短几年,微服务架构就因超高的灵活度等众优点加身,迅速成为敏捷部署以及复杂企业应用上云选型的重要考量但是你知道TA适用于哪些场景么?你知道TA到底应该怎么用么?人见人爱的中间件数据并发与日俱增需求场景日新月异是谁成就了电商平台的超级承载力?是谁实现了系统的场景级水平扩展?TA们是分布式消息中间件、缓存中间件、数据库中间件…将为系统架构师和程序员提供自建和摸索之外的更优选择到哪才能感受到TA们的强大实力?11月18日北京市海淀区中关村3W咖啡华为云技术私享会——微服务与云中间件专场不谈大而泛的宏观趋势只有实战积累的海量干货面对面专家交流、
从在CSDN发博失败说开去
作者:风静縠纹平如题,本来我的开博随笔是在CSDN里写的,也准备发到CSDN里去,然而昨天一早提交发布很快审核通过之后,在【我的CSDN】主页和CSDN的App里都看不到文章,在CSDN网站也搜索不到。最开始我以为这仅仅是个数据同步问题。CSDN的文章管理是一个单独的域名,后台多半是个独立的应用,我们姑且称之为应用1;【我的CSDN】应该是个针对用户/博主的用来管理文章和发布设置的独立系统,我们称之为应用2;【blog.csdn.net】这是面向所有用户的用来展示文章的门户前端,我们称之为应用3;CSDN的App,我们称之为应用4。那么,在应用1里,某博主写了一篇文章,提交审核;在应用1的后台,会有网站的编辑先审稿,审核通过之后,就可以把新文章发布到剩下的3个前端展示系统里去了,我猜测大致应该是这样的。那在一般的网站或者业务系统里,如何在这种场景下处理数据呢?方案一、4个应用共用一个数据库就好了,这样所有修改都能实时查询到。但因为应用3、4要应对可能的高并发访问,应用1、2则属于低频的业务数据产生来源,所以可以用轻量级数据库(比如
京东虚拟商品系统的高可用架构设计
电商的双11技术,往往代表了互联网企业的最高水平,也代表了顶尖技术人一年来所有的努力。今天双11零点战争开启,截至凌晨2点,京东累计下单金额突破950亿元,在高流量高并发的情况下,电商系统如何做好技术攻关?各互联网企业又是如何做好容量评估、性能优化、稳定性等方面的?2017年12月8-11日,由InfoQ举办的[ArchSummit全球架构师峰会]将于北京举行,此次大会策划了双11架构专场,并邀请了顶级技术专家担任出品人设置了“新一代DevOps”、“人工智能与业务应用”、“业务系统架构的蜕变与进化”等17个热门话题。在“业务系统架构的蜕变与进化”话题下,我们邀请了京东商城研发部架构师周光前来分享《京东虚拟商品系统的高可用架构设计》,并借此机会采访了周光老师,他为我们解读了京东虚拟商品系统的双11运作,希望可以给大家带来启发。如果读者想了解更多京东的高可用架构设计,欢迎报名参加ArchSummit北京站并与周光老师进一步交流。受访嘉宾介绍周光,京东商城研发部架构师14年软件开发相关工作经验,8年以上软件架构设计经验。擅
消费者驱动的微服务契约测试套件Spring Cloud Contract
在微服务架构下,你的服务可能由不同的团队提供和维护,在这种情况下,接口的开发和维护可能会带来一些问题,比如服务端调整架构或接口调整而对消费者不透明,导致接口调用失败。为解决这些问题,IanRobinson提出了一个以服务消费者定义契约为驱动的开发模式:“Consumer-DriverContracts(CDC)”,就是:消费者驱动契约。通常我们开发中主要由服务提供方约定接口,虽然提供方架构调整或改变接口之前通常会通知消费者,但可能还存在上述风险,如果上线出现问题就GG了,而CDC则是以消费者提出接口契约,交由服务提供方实现,并以测试用例对契约进行产生约束,所以服务提供方在满足测试用例的情况下可以自行更改接口或架构实现而不影响消费者。消费者驱动的契约测试(Consumer-DrivenContracts,简称CDC),是指从消费者业务实现的角度出发,驱动出契约,再基于契约,对提供者验证的一种测试方式。如果你目前使用SpringCloud作为微服务基础环境,那么集成SpringCloudContracts也是比较好的选择。
美国US-CERT发布朝鲜黑客组织HIDDEN COBRA网络攻击架构中涉及中国IP地址
近期,美国计算机应急响应中心US-CERT叕发布了DHS和FBI针对朝鲜政府黑客组织HIDDENCOBRA的联合技术分析预警(TA17-318A),预警中详细披露了HIDDENCOBRA用于网络渗透攻击的远控工具-FALLCHILL。US-CERT称,DHS和FBI与其它美国政府机构联合分析,通过网络IP地址和相关入侵指标(IOC)共同识别出了FALLCHILL利用的网络攻击架构。经初步分析,DHS和FBI识别的FALLCHILL网络攻击架构中包含了5个注册地为中国的IP地址,以及一个.gov.cn的网站。预警概述FBI高度确信入侵指标文件(IOC.csv)中提及的87个IP地址为HIDDENCOBRA的网络攻击架构,HIDDENCOBRA利用这些IP地址对受害系统进行远控管理,并计划开展针对其它目标的网络攻击。DHS和FBI及时公布这些IP地址旨在希望社会实体组织加强网络防御,避免遭受朝鲜政府黑客组织的网络攻击。预警入侵指标文件(IOC.csv)中包含的IP地址多为HIDDENCOBRA的跳转主机
ELSE 技术周刊(2017.11.20期)
FireFox发布重大更新,“新版本建立在一个全新的的引擎Quantum之上,速度是6个月前的两倍”。这篇文章介绍为什么FireFox可以变得这么快。昨天V8开发者@hashseedNode.js提交了一个issue:RFC:speedingupNode.jsstartupusingV8snapshot#17058,旨在通过使用V8snapshot让Node.js的启动的更快,issue中给出了作者的设计文档,据简单估计大概可以提升8倍,值得期待。前端开发下面是10个提高效率的步骤,虽然不能保证解决你在开发中的所有问题,但至少是非常实用的,可以简化你的Web开发流程,使开发的每一个环节快速、流畅。还可以帮助你节省大量的时间,以便开发更多、更好的项目作者提供了在JavaScript循环中处理async/await的解决方案,可以参考参考。在现代站点越来越依赖于JavaScript时,了解应用在哪些地方消耗的资源就变得尤为重要。这篇文章主要
Mongodb架构设计浅谈
Mongodb是文档型数据库,由于其不属于关系型数据库,不必遵守三大范式,而且也没有Join关键字来支持表连接,所以Mongodb的表结构设计跟Oracle、MySQL很不一样。下面针对几种不同的表设计结构分别举例:1对1关系模型在关系型数据库中,1对1关系模型通常是通过外键的形式进行处理。我们以作家跟地址来举例,假设这两个实体的关系是1对1,那么我们可能会像下面这样子建表
理想中的架构
前言:架构是达成商业目标的一种解决方案,达成商业目标可以有多种解决方案,也就可以有多种架构,但是什么样才是实现这个商业目标最理想的架构呢?什么是架构:什么是架构,从不同的用户角度看会得到不同的答案。1、从客户的角度来看:什么架构都无所谓,只要能提供给我“好快省”的系统用就可以。2、从产品开发人员的角度看:架构让系统容易理解、修改、替换以及有统一的语言,能够让开发人员都遵循统一的约定、规则和约束。3、从产品运维人员的角度看:架构让系统容易部署、扩展、监控以及能快速从失败中恢复,能够有效地降低运维成本。4、从项目经理的角度看:架构让系统开发效率和质量高,能够保证版本按时按质发布。5、从测试人员的角度看:架构让系统容易测试,能够保证新增的功能不会影响已有的功能,修改某一个功能不会影响和它无关的功能。不同的用户有不同的关注点,不同的用户关注架构给提供给他们的不同的能力。总的来说:架构是一个系统的核心,架构的目标是要平衡系统所有用户的关注点。一个系统的用户一般有客户、产品运营人员、产品开发人员、产品运维人员、项目经理、测试人
普元微服务架构稳定支撑“双十一”海关通关交易
原标题:普元微服务架构稳定支撑“双十一”海关通关交易2017年,一路狂奔的海外购在“双十一”飙出了历史最高值:11月11日当天,对接天猫、京东、唯品会等全国1000多家电商企业的海关统计数据显示,验放商品跨越护肤品、婴幼儿奶粉、食品、婴幼儿纸尿裤、化妆品等众多品类,通关总业务量超过1600万、峰值超过40000票/分钟,是去年同期的4倍。基于普元微服务架构的海关“跨境电子商务进口统一版信息化系统”,在“双十一”经受住天量商品通关考验,顺利地保证了1000多家电商企业完成海外购订单交易。跨境电子商务进口统一版信息化系统微服务架构支撑40000票/分钟通关峰值海关的通关过程需要电商、物流、支付等信息与口岸管理部门进行互联互通,与普通的网上购物相比,业务流程的复杂度更高,涉及的业务环节多出一倍以上,单笔交易的数据量也更大,任何环节出现差池,都会影响整个通关进度。为保障双十一如此大的业务量安全高效通行,保障清关工作的有条不紊无误差,跨境电子商务进口统一版信息化系统必须解决高吞吐量、高并发、大数据量、业务可靠性等技术难题,普元技术团队基于微