谈谈技术转管理的一些过程
前面一篇文章提到:“在周围的人群中,相信有很大一批同学都和我一样,作为IT行业里的码农,干久了,有一些迷茫,有一些惆怅,不知道自己是继续做技术,还是转行当管理,不知道自己以后的路如何更好的走下去。”这篇文章,从我的角度来谈谈一个程序员从技术转管理的过程,不一定适合你,但是肯定有可以借鉴的地方。其实我不太喜欢用「管理者」这个词,在我看来,大家都是一个团队的,只是分工不同,没有存在着职位的上下级关系,你是团队中的一员,他也是团队中的一员,职责不同,仅此而已。所以后面我更多的称自己为TL(teamleader),做的是大部分工作偏管理而已。先说一下我从一个工程师到TL的转变过程。刚开始的时候,公司10+人,那时候的管理成本是比较低的。作为一家创业公司,初期的人员本身就是CEO亲自挑选面试的,这批人都是和公司目标和使命一致的人。一旦目标一致,大方向不错,管理者就不需要经常去修正目标。慢慢的,公司逐渐的扩张,人员从10+个变成了100+,公司的场地也从一个复式的小民房变成了上千平的写字楼。一个管理者最佳
翻译:Clean Swift iOS Architecture for Fixing Massive View Controller (二)
节选翻译来自CleanSwiftiOSArchitectureforFixingMassiveViewController系列第二篇。原作者:Raymond翻译者:RocZhang第一次尝试翻译,如有任何问题还请留言指出。E-mail:roczhang9673@gmail.comWeibo:@张鹏roczhangTwitter:@Lighters9673本文接CleanSwiftiOSArchitectureforFixingMassiveViewController翻译系列第一篇继续。2.InteractorInteractor包括了你App中的业务逻辑。用户在UI上点击与滑动是为了和你的App进行交互。ViewController从用户界面中收集用户的输入并将其传给interactor,然后检索一些模型并要求一些workers来完成工作。importUIKitprotocolCreateOrderInteractorInpu
PHP、MySQL,IP 轉整數存資料庫
INT:0~4294967295mysql>SELECTINET_ATON("0.0.0.0");#0mysql>SELECTINET_ATON("255.255.255.255");#4294967295mysql>SELECTINET_NTOA("0");#0.0.0.0mysql>SELECTINET_NTOA("4294967295");#255.255.255.255註:INET_ATON=AddresstonumberINET_NTOA=NumbertoAddress
MySQL 時間函數 NOW() 和 SYSDATE() 的差異
NOW():返回該句SQL(或storedfunction、trigger)開始執行的時間。SYSDATE():返回執時到此函式的時間。所以,一句SQL有多個NOW(),返回值一定相同;一句SQL有多個SYSDATE(),返回值不一定相同,會受執行花費時間影響。NOW()不管在何處,返回時間都一樣。mysql>SELECTNOW(),SLEEP(2),NOW();+---------------------+----------+---------------------+|NOW()|SLEEP(2)|NOW()|+---------------------+----------+---------------------+|2006-04-1213:47:36|0|2006-04-1213:47:36|+---------------------+----------+--------
面向对象的设计原则
前面的话面向对象的设计原则,可以说每种设计模式都是为了让代码迎合其中一个或多个原则而出现的,它们本身已经融入了设计模式之中,给面向对象编程指明了方向。适合javascript开发的设计原则包括是单一职责原则、最少知识原则和开放封闭原则。本文将详细介绍面向对象的设计原则单一职责原则就一个类而言,应该仅有一个引起它变化的原因。在javascript中,需要用到类的场景并不太多,单一职责原则更多地是被运用在对象或者方法级别上单一职责原则(SRP)的职责被定义为“引起变化的原因”。如果有两个动机去改写一个方法,那么这个方法就具有两个职责。每个职责都是变化的一个轴线,如果一个方法承担了过多的职责,那么在需求的变迁过程中,需要改写这个方法的可能性就越大。此时,这个方法通常是一个不稳定的方法,修改代码总是一件危险的事情,特别是当两个职责耦合在一起的时候,一个职责发生变化可能会影响到其他职责的实现,造成意想不到的破坏,这种耦合性得到的是低内聚和脆弱的设计。因此,SRP原则体现为:一个对象(方法)只做一件事情SRP原则在很多设计模式中都有着广泛
10个常见的JavaScript BUG
译者按:安全起见,在开发中我基本不用==。原文:10COMMONJAVASCRIPTBUGSANDHOWTOAVOIDTHEM译者:Fundebug为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。就算最牛的JavaScript开发者也会犯错。有时候导致程序的执行结果和预期不一样,有时候根本无法运行。这里我总结了10个常见的错误,我相信不管是初级还是资深开发者都可能遇到。相等混淆x是否和y相等?x是否为真?在JavaScript中,如何正确地做相等判断很重要,但似乎很多人搞不清楚。简单概括一下,主要是下面三种情况:条件判断(if,&&,etc.),相等操作符(==),和严格相等操作符(===)。甚至,有的时候会不小心把赋值(=)当做相等操作符使用,千万不要搞错了!避免使用赋值(=)赋值(=)将右边的表达式赋值给左边的变量,例如:vara=3;该语句声明了一个新的变量a,值为3。表达式可以是程序中的任何东西,想象把它类比为语言中的名词,操作符(+,-,*,
PS教程!让你学会图层样式9大技能
一个以实例作为分析的教程学习,适合提升和零基础的朋友学习。如果你的基础不是很好,如果你需要很多的学习,如果你想要一些设计资源软件,如果你本身就需要转行了解,如果你需要发展,那么请加学习ui群:514985251来交流并且学习更多的UI设计知识。练习重点:通过练习,了解各种图层样式的用法和技巧。我们先把这个案例做出来,对比参数变化所达到不同的效果,边做边了解图层样式。开始之前先分析一下这个按钮的结构,总共分为5层,从里到外依次命名椭圆1~椭圆5。步骤一:制作主体部分1.打开你的AdobePhotoshop,创建一个新文档。宽度2000PX高度1300PX分辨率72DPI将背景图层填充数值调为0,调节图层样式。(本篇所有填充数值都为0)图层样式:渐变叠加混合模式:柔光不透明度:100%样式:线性角度0缩放:100%渐变颜色:#edecec~#afc2c2【注意点1】:混合模式此处不多介绍,详细教程戳→带你认识混合模式【注意点2】:使用图层样式时,记
C# Value type vs Reference type
[MYNOTE][转载请注明出处]ReferenceSource:http://www.albahari.com/valuevsreftypes.aspxhttp://www.c-sharpcorner.com/article/C-Sharp-heaping-vs-stacking-in-net-part-i/https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/passing-reference-type-parameters#passing-reference-types-by-value注:下面的示意图主要是为了辅助理解,不代表内存真实情况。Introduction类型基础是C#的基础概念,了解类型基础及背后的工作原理更有助于我们在coding的时候明白数据在内存中的分配与传递,以及解决一些不明原因的bug和写出效率更高的程序。C#提供了值类型和引用类型,值类型如struct,
现场决策中异构数据异常检测的沉浸式可视化(Immersive Visualization for Abnormal Detection in...
随着混合现实的发展,HoloLens等头显设备为我们提供的在现实世界中探索数据的能力对可视化交互和分析越发重要。对于安全可视化,混合现实可以产生桌面可视化难以实现的效果,能够满足无需上下文转换的数据探索和物理操作,并支持多人协同探索,在许多安全领域应用中有实际意义,涉及范围涵盖从基础设施安全和应急响应到对可疑行为的日常监控。研究如何利用MR在真实物理环境中有效地可视化抽象数据并利用声音和姿势与之交互具有创新的意义。本文使用VASTChallenge2016的数据集,以复杂的多维时序传感器数据中隐含的安全事件作为研究对象,提出了异常检测的方法,设计了一套沉浸式可视分析系统,能够将二维图表信息和三维平面图信息紧密结合,并提供了语音、凝视和手势等交互。异常是指数据中不普遍或不符合明确正常行为的模式,在安全领域,异常通常与入侵者、恶意攻击或安全威胁有关。VASTChallenge2016提供了一个三层公司大楼中,空气成分、温度、湿度、电力等各项常规指标的多传感器数据和员工经过不同区域或被机器人检测记录到的时间与位置数据,希望参赛者从中挖掘员工
优秀的程序员都是不用 IDE 的
这几年,在北上广闯来闯去,原本内向型人格的我,做事风格也逐渐变得风风火火,在高强度快节奏下像个工作机器,不带一丝情感绝对执行工作计划。无论是BAT这样的大公司,还是一些小的初创公司,这两圈子的码农几乎个个都能独当一面,久而久之,我认识了太多优秀的码农,然后,我发现一个残酷的共同点——他们都不用IDE。工资不高吗?最低的月薪都有10K+,还有公司期权和股票。技术不行吗?前后端样样精通,整个一多面手。我问过其中一个:我看你整天用记事本编程很累啊,你想用IDE吗?他说:废话,肯定想啊。我问:那为什么不买个IDE呢?JetBrains家的也不贵啊。他叹气:不,太忙。他意味深长道:优秀的程序员都是不用IDE的。跟我聊天的这个人,本身就是个大神,大学里两年修完了四年CS的学分,连老师都感到惊叹。入职后,在工作之余,他还独立开发了几个App,收入也很可观。他先前去美国读研,在美国工作了几年,回国后,并没有拿家里的钱,拿着在美国工作存下的积蓄,自己跑到北京创业。最开始半年,几乎把钱赔光了,死咬着
中兴程序员跳楼 | 如何逼死一个程序员?
12月10日上午,程序员欧某从中兴通讯的大楼顶上一跃而下,留下四位老人和一对年幼的儿女,结束了42岁的生命。网上盛传,是裁员的焦虑和公司的内斗逼死了他。伴随这个噩耗而来的,是铺天盖地的对家属的同情与对肇事公司的谴责。事情经过如下:2017年12月1日这天,欧某的直接领导婉转提出要将欧某裁员,欧某难以接受这个突如其来的打击。12月10日上午,欧某对妻子说道:“我们公司有内部矛盾,我很可能成为牺牲品”。据欧某的妻子描述,在中兴工作的六年多来,丈夫尽心尽力,为人也忠厚老实,从不与人为难,不但是同事眼中的好员工,也是家人眼中的好儿子、好丈夫、好爸爸。真相果真如此么?几乎就在新闻爆炸性扩散的同时,程序员群里有人发了这样一条消息:
《大型网站技术架构》笔记
其实这是一本2012年的老书,5年的时间对于互联网技术来说,已经可以是另一个纪元了。但是当我重新翻看这本小书的时候,发现作者对概念的梳理,是很有借鉴之处的。去年有一段时间有事没事就会在youtube上看systemdesign的视频,怎么设计shorturl,怎么设计Twitter,怎么设计Uber。现在重读这本书的时候我翻出那些视频,发现这本5年前的“老”书里,其实就有几乎所有这类问题的答案和思路。考虑到成书需要的时间,也许我可以很有把握的做结论,中国互联网企业的技术应用、解决一线问题的能力,其实是非常优秀的。在这里把这本书的笔记写一写,与各位同仁共勉。为了理顺逻辑,我调整了一下知识点的顺序。另:本文中使用的图片均为原书截图,如果你喜欢请购买原版图书支持作者。我买的就是正版!关于大型网站大型网站是相当于企业级应用来说的,特点有高并发,大流量Google每天需要处理35亿条搜索淘宝双十一第一分钟的独立访问用户就是千万级别高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣大型网站追求的性能指标可用性availabilit
【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。API网关名词解释APIGateway(APIGW/API网关),顾名思义,是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是企业IT系统的边界。在微服务流行之前,APIGW的实体就已经诞生了,这时的主要应用场景是OpenAPI,也就是开放平台,面向的是企业外部合作伙伴,对于这个应用场景,相信接触的人会比较多。当在微服务概念流行起来之后,API网关似乎成了在上层应用层集成的标配组件。SpringCloudZuul简介Zuul是Netflix提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。也有很多公司使用它来作为网关的重要组成部分。Spri
微服务架构中整合网关、权限服务
前言:之前的文章有讲过微服务的权限系列和网关实现,都是孤立存在,本文将整合后端服务与网关、权限系统。安全权限部分的实现还讲解了基于前置验证的方式实现,但是由于与业务联系比较紧密,没有具体的示例。业务权限与业务联系非常密切,本次的整合项目将会把这部分的操作权限校验实现基于具体的业务服务。1.前文回顾与整合设计在认证鉴权与API权限控制在微服务架构中的设计与实现系列文章中,讲解了在微服务架构中Auth系统的授权认证和鉴权。在微服务网关中,讲解了基于netflix-zuul组件实现的微服务网关。下面我们看一下这次整合的架构图。整个流程分为两类:用户尚未登录。客户端(web和移动端)发起登录请求,网关对于登录请求直接转发到auth服务,auth服务对用户身份信息进行校验(整合项目省略用户系统,读者可自行实现,直接硬编码返回用户信息),最终将身份合法的token返回给客户端。用户已登录,请求其他服务。这种情况,客户端的请求到达网关,网关会调用auth系统进行请求身份合法性的验证,验证不通则直接拒绝,并返回401;如果通过验证,则转发到
第一章:JavaScript简介
JavaScript诞生原因:简单的数据验证,js诞生之前,必须把表单数据提交到服务器端,才能确定用户是否填写了某个必填的域。每一次数据交换都非常耗时,于是诞生JavaScript来解决这个问题,后来js与浏览器窗口及其内容等几乎所有方面交互的能力。JavaScript组成:ECMAScript,DOM,BOMECMAScript:ECMAScript-262定义的ECMAScript跟web浏览器没有依赖关系,ECMAScript-262定义的只是这门语言的基础,web浏览器只是ECMAScript实现的可能宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也提供了语言的扩展,以便语言和环境的对接。这些扩展如DOM,利用ECMAScript核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。DOM:文档对象模型,是针对XML但经过扩展,用于HTML应用程序编程接口。DOM把整个页面映射为一个多层节点结构。HTML或者XML每个组成部分都是某种类型的节点,这些节点又包含不同类型的数据。BOM:浏览器对象模型
underscore源码解析(一)
留存root//Establishtherootobject,`window`(`self`)inthebrowser,`global`//ontheserver,or`this`insomevirtualmachines.Weuse`self`//insteadof`window`for`WebWorker`support.varroot=typeofself=='object'&&self.self===self&&self||typeofglobal=='object'&&global.global===global&&global||this||{};//Savethepreviousvalueofthe`_`variable.varpreviousUnderscore=root._;//......._.noConflict=function(){root._=previousUnderscore;r
RxWX使用教程
之前写过一个开源项目RxWX,将RxJS移植到微信小程序(以下简称”小程序“)中。RxWX项目地址和介绍:https://github.com/yalishizhude/RxWX关于RxJS的介绍,读者可以去看官方说明或者关注公众号“Web学习社”的后续文章介绍,这篇文章主要讲解RxWX的几个使用场景。微信小程序SDK版本:1.7.0微信开发者工具版本:1.01演示项目下载地址:https://github.com/yalishizhude/RxWX/tree/master/exampleGetstarted按照RxWX说明,把Rx.js和RxWX.js文件放入到utils目录下。其中Rx.js是可运行在小程序中的Rx.js模块,RxWX.js是利用Rx.js对小程序API进行的封装,封装后API函数将返回Observable对象,属性值不变。使用时必须引入该文件,比如importrxwxfrom'../../utils/RxWX.js'同步API与异步API//原写法try{l
第二章:在HTML中使用JavaScript
本章内容:使用script元素嵌入脚本与外部脚本文档模式对JavaScript的影响禁用JavaScript的场景script元素6个属性:async:可选,立刻下载脚本,但不妨碍页面中其他操作,比如下载其他字眼或等待加载其他脚本。只对外部脚本有效。defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本有效。src:包含言之行的代码的外部文件。type:就是类型的意思,一般是text/javascript。charset、language忽略。script的使用方法:方法1、内:直接在页面中使用script标签,然后在其中写上JavaScript代码。方法2、外:通过src属性,引用外界的JavaScript代码。所以src可以加载同一服务器上的文件,也可以是其他域的js文件。注意:方法1中,script代码加载完毕前,页面其余部分不会被浏览器加载或显示,且代码中不用出现,除非加一个\转义。方法2中,如果是符合XML标准的XHTML文档,可以省略后面的
页脚紧贴页面底部(sticky footer)实现方法汇总
页脚紧贴页面底部相信我们前端经常要使用,这里自己总结了下各个方法并简单介绍了下原理及注意点,大家可根据各优缺点进行取舍: