上次采访介绍了可爱的依云酱和记忆传送门。不知道看了之前采访的小伙伴们对依云酱有什么印象。清正只有一个印象:可爱。可爱的人和事物总是受到大家的欢迎。比如可爱的Gakki就被SF前端小姐姐亲切的称为老婆。当然,喜欢萌物的不只是前端小姐姐,清正认识的其他程序员也一样——豪先生、传奇先生等,今天采访的社区网友们也都喜欢萌物,而且是混进二次元,给他一个称号:二次元界最好的开发者,码字界最好的二次元。来打架。欢迎本期嘉宾:mcfog?放宽个人部分作为本期嘉宾,mcfog兄弟会经历一个过程,先自我介绍一下。|动漫|游戏}宅本身就是全栈工程师,这两年主要做后端方向。与解决纯技术问题相比,他们更善于把握业务与技术的结合。语言方面,根据个人经验和水平排名:PHP>=JavaScript>CSS>others。清正认识几个程序员,都有自己的二次元。属性,mcfog的个人主页好像也有acg标签,最近有新的吗?有什么推荐吗?随着年龄的增长,我已经从追新剧变成了追剧。今年一月的质量太高了,看四月的时候挑不出几个有意思的。Jan.向可爱的豪猪推荐《龙女仆》和向不可爱的海豚推荐《昭和》(没看过第一季的一定要补上)和《兽母动物园》。这里简单介绍一下《龙女仆》,全称是《小林家的龙女仆》,为什么要介绍这部剧呢?因为SF的设计狮——颜值同学也安利了这个。简介:身穿女仆装的美少女托尔突然出现在单身疲惫的小林(强调:程序员)身边。有角有尾巴,有着龙女一般的身材。据说被喝醉的小林请到他家的托尔,开始在小林家当了一段时间的女仆……不知道mcfog有没有人偶合集,能不能放几张照片要蒸舔屏?人偶坑太大太深,我根本没胆子跳坑里……一般都是弄个周边的小房子,比如这间,简直天天舔。我们公司的前端小姐姐最近吸毒上瘾了。不知道你是不是也中了农药的毒,mcfog?除了杀虫剂,你更喜欢玩什么游戏?啊,同事已经开了农药联盟,前两天被带去下载了demo,已经卸载了。从分类上来说,我就算不是核心玩家,但至少也是最接近核心的类型之一。如果一款游戏没有背后的世界观和文化背景,同时又没有真正的竞技价值,我就完全没有动力了。.哦,只有有竞争力的,因为我手残,买不起。而且,我的狩猎范围还蛮广的。我基本上玩各种控制台和掌上游戏。据MRU称,它是最近使用频率最高的。我可能在家里玩过Ass和FIFA,在路上玩过FireEmblem和Zelda。正经的文字部分,浏览了你的个人主站,首页效果很炫酷。您在建立个人主站的过程中使用了哪些技术?只是impress.js,不见了。当我看到这个库时,我感到很感兴趣,所以我用它来创建一个关于页面。最后进入和退出#/overview时,radial-gradient加上transition的效果我还是比较满意的。我发现我没有贴出源代码。最近有空更新一波,顺便传一下源码。如果您有兴趣,请关注mcfog@github。在问题:如何衡量前端的水平,你说编码是我们最不重要的工作。思考、归纳、演绎是我的工作。这句话应该怎么理解?台上三分钟,台下十年功。无论是作家将稿子写在纸上,歌手在台上唱歌,还是程序员将程序敲入电脑编译调试,都只是产生最终结果的那一刻。一个作家写得好不好,取决于他在写书之前的素材、灵感积累和写作技巧。一个歌手唱得好不好,取决于他在台下的排练练习和试音。程序员也是如此。归纳和解释这些任务是日常工作。如果你看别人,如果你只看计算机编程水平和代码写得又快又好,就像你一样,一个门外汉,看到的是作者写的感人的书,歌手唱的缠绵的歌。外行看热闹而已。最近有个小话题【十年老代码,你敢碰吗?】,mcfog,你怎么看待这个问题?你认为什么样的代码是优雅的?我其实在一次团队分享中谈到了如何处理旧代码,但那次的路径是相反的。先说说好的代码长什么样子,最后说的老代码怎么办。我来说说我的观点。“代码是给人看的”这句话的潜台词其实就是代码需要包含足够的机器之外的信息才能运行起来满足要求,比如技术方面,你的整体架构,你的模块粒度,解耦的边界,包括业务方面,哪些东西是经常变化的业务规则(夏季大促满100减25),哪些东西是偶尔变化的参数配置(类别树),哪些东西是业务的核心不会变((订单金额-凭证)*优惠规则+运费+支付手续费=支付金额)优雅的代码是这些信息的高效和定期的收集,我知道我想看你如何进行高并发可以直接看在从数据层到最终落地存储的过程中。如果想看订单业务逻辑,可以看下订单服务的验证方法、下单方法等,所以我觉得最优雅的代码也能做的很好。明确分为三部分:第一部分:“业务逻辑层”中的代码,懂英文的人都可以看懂,需求文档的描述,唯一不同的是真正可以运行第二部分:“规则引擎层”负责实现上层的东西,提供业务DSL能力。第三部分:基础设施层抽象硬件的能力,比如存储模块抽象DB和缓存的存储能力,路由模块抽象网卡的分发能力,又比如前端组件化之后,前端组件对客户端的交互能力等进行抽象,基本可以满足提升并发能力等“技术需求”。只有第三部分,“业务需求”在不突破原有DSL限制的情况下才能实现。只改变第一部分,如果有突破,那么先增强第二部分的DSL能力,然后在第一部分描述。我称这种理想状态为“CODEASPRD”。代码是需求文档。我可以跟上你修改的速度,而不需要考虑你的产品如何变化。如果我跟不上,我就输了;当我拿我的项目时,我会告诉你这些类别是需求文档。至于他为什么能跑,trace,期间,如果交接不顺利,我就输了。(好像有点扯远了)最后,关于老代码的处理问题,我有三个策略,一个核心重点:下策略是宽容,中策略应该不用解释滴水和岩石。大致掌握了需求和系统的全貌,以后选择一个点分解,比如先重构用户系统,然后先把非用户系统的需求搁置在原系统中,并构建一个新的、好的新模块来替换用户系统。一种常见的安全方式是先不移动数据结构和写逻辑,先接管读逻辑,然后再一点点重写数据逻辑,因为读逻辑已经连起来了,改变数据结构的风险在同时比较少。.最好的策略是自动化测试。大部分伤害你的代码都没有完善的测试覆盖率,所以你不敢改,所以你应该先实现一个自动化测试系统。这使您即使由于项目时间压力而无法进行大规模重构,也可以拥有基本的安全绳。这样你就不会掉下悬崖。只要是测试基本覆盖的模块,重构的负担自然小很多。结合中台策略和分步业务拆分,结合SOA微服务设计思想,一夜之间跨入现代不是梦。核心焦点:你必须在最坏的情况下接受旧代码重要优势:它有效。虽然是老代码,但是是经过生产磨练的老代码。在做任何事情之前与您的QA部门进行沟通和计划。专业的程序员绝对不会号称“重构基础设施”而造成一堆生产问题。mcfog的前任老板ifacclub,专注于金融产品。能谈谈你加入团队的初衷吗?以及产品开发过程中使用的技术栈?本科加入腾讯,初始职级太低(后来升职),升级之路太远。前任老板让我创业。项目当时好像有一个很好的机会,于是就去...技术栈,标准的LNMP除了Redis,消息队列我们选择了RabbitMQ。除了活性、生态、性能等因素外,我们主要看重其在数据一致性方面的相对可靠性。金融产品非常注重数据的安全性和可靠性。您的团队如何确保数据安全?从编码的角度来看,做好两件事:实施防御性编程风格,并在任何副作用(无论是写入数据还是请求外部接口)发生之前彻底检查所有先决条件。完善日志系统,确保所有关键节点的日志,做好日志收集、归纳等自动化工作,不断优化告警系统,注意告警数量不要超过一定范围,经常组织尽快报警。从QA角度支持,完备的监控告警系统、备份系统、测试用例覆盖和自动化测试等。当然,线上问题是防不胜防的,“补救工作”也是很重要的一个环节。综上所述,发现相似问题,重构系统,也是我们让整个系统越来越好的重要途径。在PHP开发中,选择合适的框架有助于加快软件开发速度,而你在文章【如何选择PHP框架?】提到要从团队、项目和框架本身三个方面考虑,能不能从框架本身的基本素质来谈Yii和Laravel?从我个人的角度来看,展望未来,Yii2和Laravel都将成为过时的框架。你可能觉得我有点狂妄,但我是基于非常理性的总结得出这个结论的。请大家想一想,如果ComposerforPHP是后期的NPM,那么Node生态对应的web框架谁才是赢家?它有什么特点?如果我们认同像Composer这样的包管理依赖管理是先进的,那么未来框架的演进方向一定是远离Yii2和Laravel这种“包罗万象”的框架。php框架需要支持的场景会越来越差异化。API项目不需要路由和模板渲染,中端和前端项目不需要DB访问抽象,框架入口从FPM和Crontab扩展到队列Consumer、Thrift等RPC服务入口等,单一单一的框架势必越来越无法满足这样的差异化。当然我不是说Yii2和Laravel就挂了。其实Yii从1到2已经跨越了一代,但是相对于Yii1来说,是2008年的东西了,我相信到了2027年,当我们回过头来看现在的Yii2和现在的Laravel4、5,我们一定有与我们现在看CI2和Yii1的心情和观点相同。如果我们比较Laravel和Yii2,我们首先会考虑社区生态,也就是说,Laravel胜出(只有Symfony社区可比),这让Laravel在外围扩展和模块方面占据上风。Laravel的问题在于它堆砌了很多概念,其中一些确实很好,但也有花哨的。如果你要用,请带上你的思路,记得生搬硬套。Yii的核心应该是简洁明了,这让Yii更加适度,是一个非常稳妥的选择。在我看来,未来的PHP“框架”在概念上肯定和现在的框架不同(现在的两代大致是按namespace和composer划分的,概念上没有本质区别),不再是“家族框架””。不再是桶式单框,而是走向差异化。大致可以分为三类。一种是提供技术上的基本能力(而不是语法糖或约定级别)。比如Swoole提供了异步和协程的能力,比如Zephir(Phalcon的底层)。另一类易于整合系统底层能力和PHP上层能力的中间语言是真正类似于Express和Koa的框架生态群,核心中间件协议+大量外围中间件.目前看来ZF的Zend-expressive在这方面稍微领先一些。另一个我不得不提的是StackPHP。它们运行得太早而且比PSR快,所以现在它们面临永远使用适配器继续坚持symfony/http-kernel系统,或者切换到PSR系统和zend-expressive的竞争。目前看来,这样的转变还需要一些时间,我想大家也可以和我一起关注一下这个趋势。顺便说一句,我觉得虽然这波趋势很明显很像Express,但是死记硬背的效果未必好。毕竟和JS相比,PHP在语言层面一直更接近于“动态Java”。第三类是Drupal、Wordpress等,是的,具备基本功能实现的“框架”,可以快速支持相对标准需求的实现。对于这类框架(系统),Composer的出现是一个很好的契机,通过Packagist可以快速形成社区生态(不需要Drupal、Wordpress之类的商业公司运营维护生态),这就是同样是“跨越牛市与熊市”的范畴,无论PHP如何演进,它都将继续存在。当然,PHP生态进化的速度其实并不快(我觉得还算中等,Laravel这个速度已经够快的了,现在很多社区跑的比Laravel还快,开发者追得太猛了),所以目前选择单一框架还是很现实的选择,在我心目中是一流的选择,除了Laravel和Yii2,还向大家推荐Symfony2和Slim3,哦,提到Slim3还应该加上Silex和Lumen,S和L派生出来的小兄弟。突然招人。不知道mcfog的新东家怎么样,新东家是不是还在招人?其实在接到面试的这两天,我就已经敲定了辞职和新雇主的事情。AminoApps是一家海外业务、中国研发中心的移动社交兴趣公司。36氪报道说我们在招高级前端和全栈(语言不限,嗯,这两天一直在做python,哈哈),我们走的是精英小团队的路线,你有有足够的技术能力和责任感独自承担一条线。简历请发至bWNmb2d3QGdtYWlsLmNvbQ==(补充说明:邮箱地址说明请参考本文剧场版硬播时间)封面设计采访小花絮小剧场(蒸):(认真咨询)你有什么想法吗,是的,你的封面图片?每次采访都会设计一张封面图(mcfog):我没有什么特别的想法……(清正解读:总觉得这个省略号隐藏了一些信息……)(清正):嗯,我可以用Ace的返回作为元素?(mcfog):什么是王牌(蒸):--。海贼兄弟(mcfog):【捂脸】海贼王不算动漫(steam):(╯‵′)╯︵┻━┻海贼怎么了(mcfog):死海和柯南不算(steam):(勉强保持微笑)请举例说明为什么它们不适合动漫123(mcfog):(一个词不适合链接)MigrantMan(Steam):(一个词不符合需求)写给设计师妹纸有个设计需求。小剧场时间(蒸):mcfog哥,我们给你留了一个广告位,你需要吗?啤酒花和花生随便卖(mcfog)感想(蒸):别浪费了,你看你看隔壁的男孩,卖床招人,现在有免费广告位给你预留,珍惜(mcfog)招聘,眼睛亮了(mcfog):那就给新东家阿米诺招人,发简历到:bWNmb2d3QGdtYWlsLmNvbQ==(蒸)糊涂:这个邮箱是对的吗?(mcfog):邮件没错,不懂的程序员不要[傲娇脸]以上就是邮件的解释,大家看看,珍惜吧,祝你好运~为什么mcfog的语录突然加了这么一句一块内容?因为清正对mcfog大哥的一些言论深表认同。我特别想说一下“文章”和“笔记”的区别,前者是你表达一个观点,描述一种思想,“一门手艺的结晶”,后者只是一个某些知识点的记录。(摘自:如何衡量前端的水平)想清楚学习的目的,避免为了学习而学习。比如高并发、秒杀、架构,往往是现有业务接触不到的东西。学习的目的一般有两个:要么是为了面试,要么是为了以后的业务发展,需要的时候可以补充(知识储备)技术上不知道怎么突破,希望大神们推荐几本书,谢谢!)文末接下来的采访是认识coding时间最长的清正的采访之一程序员:@边城,据说他是1997年开始写代码的,20年的码龄,看看他是如何码字二十年,学习二十年的。本次专访到此结束,下期见~
