本文列出了程序员在修复 bug 时可能会说的一些话或者想法。我敢说很多程序员都曾经历过编程的艰辛,但在事后都会一笑而过。 1....“我不知道该把它删掉还是该重写” 看着旧代码,你总有一种想要重写它们的冲动。丑陋的逻辑语句和啰嗦的语法极大降低了代码可读性!但是,如果代码跑得好好的,为什么要去修改它们呢?...开发者们加入这个网站,给已有的项目拉取分支,在 wiki 上讨论,或者创建自己的代码库。网站提供了很多很好的插件和模板,可以被用在各种各样的项目中。 3. “为什么这个脚本要用这么多库?”...“我要在谷歌上搜一下这个错误消息” 在做了多年 PHP 开发之后,我不得不说谷歌是我的好朋友。...“我多么希望给数据库做过备份……” 在开发和调试代码时,我并不总是会想到给数据库做备份。但是,数据备份提供了一个保障,在做出某些变更之前可以及时回退。
最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。 争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火。...对于这个答案中的第二次输出结果,有人生出了疑惑:为什么 parent 事件触发时,e.target.id 的结果为 child呢?不应该是 parent 吗?...在冒泡阶段,恰恰相反: 浏览器检查实际点击的元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它 然后它移动到下一个直接的祖先元素,并做同样的事情,然后是下一个,等等,直到它到达<...,所以,不仅会执行 function2,之后还会执行 function1,这样的结果可能不是我们所期望的,我们更希望它们的点击事件之间互不影响。...主流浏览器都默认在冒泡阶段进行事件注册,所以,只有阻止冒泡的方法而没有阻止捕获的方法。
你能教我写代码,并帮助我找工作吗: 对于那些想要学习新技能从而改善生活的人来说,这样的想法无可厚非,我也表示支持。但老实说,没有人有时间和耐心去免费教那些完全是一张白纸的人。...所以对于客户来说, 只管提出想法即可,不要轻易评估实现这个想法的难度,评估的工作还是交给我们专业的开发人员吧。 噢!你是程序员?你能帮我修一下打印机吗?: 请记住,程序员不是电子设备修理工!...二、 我的日常生活中充满了各种令人无语的话题,包括发生在普通人中的、父母亲人中的…… 情景1:不懂编程的普通人和程序员 普通人:我的系统扬声器出了点问题,有一侧的音频无法工作了。你能帮我修一下吗?...为了实现这个庞大的逻辑体,需要花费大量的时间和精力来思考和实现。如果你对编程没有基本的理解,请不要提这个问题。 女生也能当程序员? 醒醒吧,现在已经是21世纪了!...很多非专业人士过度关注界面效果,而不在意系统性能。实际上,给前端界面添加动画效果是很容易但是并没有太大用处的事情。正如我的一位程序员朋友所说:“有些人不理解系统后端,只关注客户端效果。
C++代码来,但在前端很难发生这种事情,稍微勤快点的应届生毕业半年就不该再写有语法错误的前端代码了,有bug基本上也都是业务逻辑bug,一个五年工作经验的C++程序员和一个只有一年工作经验的C++程序员...,然而在这种环境下,反而加速提升了我对于业务的理解,也明白了为什么之前那么多人跟我说业务很重要,但没有一个人能教会我到底什么是业务,因为这个东西真的很难说清楚,或者换句话说,其实每天都有人跟你说什么是业务...),都是业务能力 前端如何赋能业务 肯定有人会吐槽我说了半天还是啥都没说,没错,确实是这样,对始终不明白业务是什么的人来说,别人说得再多也很难理解,对于已经理解的人来说,业务就是业务,根本没什么可说的,...量化一点地说,就是网上正常场景下的任意前端面试题,你有 80% 以上的把握能答出来,可以实现工作上提出来的任意前端需求,能够保证自己所写代码项目的稳定性和可扩展性,前端领域新出现的技术你都能快速上手并且理解其原理...所以,一定要多跟外界进行交流,一方面是为了能从外界获取更多的信息,另外一方面则是让其他人知道你在做什么事情 ~(至于为什么要让其他人知道你在做什么事情,这个各位自行领悟)~ 用数据说话 作为前端,你可以提需求
我想说的是,很多研究人员都知道这个,但可能不是每个人都知道Alex的结果和Ilya之前在ImageNet图像识别竞赛上的工作相比错误率降低了一半。...你需要对科学有信念,愿意去研究那些显然正确的东西,即使其他所有人都说那是胡说八道,而且事实上并非所有人都那么认为。在70年代初,研究AI的几乎所有人都认为(我做的东西)是胡说八道。...而不朽的代价是巨大的,因为这意味着不同位的硬件必须做完全相同的事情,这显然是在做完所有错误校正之后的零点校正。...打个比喻,如果你有一棵盆栽植物,你把它从花盆里拔出来,会得到一团球状的根部,这正是花盆的形状,所以所有不同的盆栽植物都有相同形状的根部,而根系的细节都不一样,但它们都在做同样的事情,它们从土壤中提取养分...所以它们会更容易犯和我们一样的错误,而不会犯那些不同寻常的错误。举个例子,如果你有一辆自动驾驶汽车,它犯了一个任何正常人类司机都会犯的错误,这似乎比犯一个非常愚蠢的错误更容易被接受。
希望能帮你梳理清楚他们各自的工作职责,以及是因为什么需求导致了它们的出现。...让View接替Window的工作,把Window所做的事情都封装到View里面不好嘛?(至少免去了我们去理解抽象的Window,,,,O__O "…)。...或许又有人说,View负责绘制显示内容,Window负责管理View,各自的工作职责不同。可是我想说,Window所做的大部分工作,View里面都有同样(或类似)的处理。这依然无法说服我!...既然如此,Window(以及View)能处理点击事件以及封装各种逻辑,那为啥还需要Activity呢?...无需关注其他细节,默认都帮我们写好了,针对需要定制的部分我们重写(设计模式为:模板方法模式)。 最后,如果有理解上的错误,也欢迎大家纠正。我会针对大家的意见,不断更新修改。
,这让我想起了之前看到的一篇文章,我觉得它把为什么不用僵尸代码几个点总结的非常好,我在此基础上作了一些修改分享给大家 所谓僵尸代码是指很多被注释的代码,为什么称它们为僵尸代码?...这有助于人们理解程序,更快的阅读代码,防止我们因为误解而写出有问题的代码。僵尸代码直接的对抗代码的可理解性。它拖延我们阅读和维护代码的速度,因为它使我们在屏幕上看到更少的有效代码。...试想一下,你是一个来维护程序的程序员,突然看到了一片注释掉的代码,而程序就在这附近出了问题。这个程序员的任务会变得更棘手。他需要阅读和理解这些注释掉的代码,了解注释它们带来的影响。...然而,当一个类或方法包含有大量的僵尸代码时,事情就不好处理了。如果重构这段程序,我是否还要参考注释掉的代码?它们近期将会被重新使用吗?它会影响我的新版的实现吗?...当你再想把注释掉的代码复活时,它们很可能根本不能编译。 有例外吗? 没有。很明确。有人会说“我现在注释它们是因为我过会儿就要恢复它们。”
有人认为“问责”是指因为错误的决定而受到惩罚,或者是必须面对自己行为的后果。Brush 则认为,“问责”是组织保证你会被根据自己为所负责的事情而做出的相关行为,所产生的后果进行评估。...为了保证这类事件不再发生,企业把工作任务交给背锅的人,让他们写报告,把所有事情都承包了。很多时候,除了这些工作,企业还会再加上一些可怕的流程,比如到领导面前解释发生的一切,可能还会再挨上两句骂。...这本书中,还探讨了人们会因为什么才会更快乐。人们不会因为升职加薪或是其他什么原因而更快乐,因为这类事情发生的频率太低了,所以它们不是个好的激励因素。...或许企业会以为这样能激励工程师,给大家一个强烈的目标和使命,大家就会自然而然地做正确的事。但这实际上,这样的方式非常打消大家的积极性。...一些组织花费了大价钱编写培训内容并让所有员工都去上课,祈祷着人们能记住教训,并在下次同样的事情发生时能长记性,但同样的事并不会再次发生。不要指望通过培训让人们掌握所有知识并做出正确的决策。
后者是一种捕捉共识的基本细节的方法。 这种方法运用系统的逻辑、 开发、 过程和物理视角(即 "4+1"中的 "4")将用例作为它们之间的 “胶水”,并描述架构 (即 "4+1"中的 "1")。...有人散布了谣言吗? 是不是有些信息没能传达到那些需要它们的人手里? 找到这些问题的根源, 有助于你为下一个项目做出更周全的准备。 从错误和失败中尽可能地学到东西。 不要让负面的经历再次发生。...我会考虑使用 Philippe Kruchten的 "4+1''架构视角模型,作为要展示信息的基础。我在工作中,会将演示内容村简到10张幻灯片, 其中包含了一系列图片和图表, 我会口头地说明它们。...作为架构师,你能做的最重要的一件事情就是理解工作时的政治环境。在真实意义上,它让你知道处于商业中复合环境的哪个位置。理解这个环境会简化你的决策操作,引导你为项目建立起政治上可行的认知。...这能改进客户对你产品的体验吗? 5.3.5 不关我的事 我将这种处境称为 “不关我的事" (Not My Problem, NMP)。 我不能搞定这个世界上的所有问题。
来到现在的公司基本还是做同样的事情,只是项目规模不一样。...五、工作重点、目标不明确 有些经理太过关注当下急需解决的事情,而缺乏远虑和远见。每天都在忙于处理各种突发紧急问题,做的都是紧急不重要的事情。...如果他能这样回答,就好很多,也体现了作为一个领导的担当: “领导,这次的问题都是我对项目风险预估不足,中间出了些问题,好在我们团队的人都非常给力,连续加了好几天班,大家一起处理好了,已经及时上线了,延期了几天上线...好的领导我认为一般具备以下几个特点: 能力、技术水平极为突出 情商非常高,有亲和力,所有人和他相处都感觉很舒服 帮助团队成员成长 非常有担当 做事条理清晰、逻辑思维缜密 良好的心态 很少有负面情绪 员工心里面喜欢什么样的领导...: 1.能帮我解决我碰到的技术难点 2.能给我的工作提供思路和方法的 3.跟着他可以学习提高我的技术 4.能帮我争取涨工资的 5.出了问题可以帮我顶雷的 所以综上总结:团队建设最核心的两点我认为是尊重和帮助他们成长
因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替你修改要明智得多。...---------------- 去除无意义的疑问 ---------------- 别用无意义的话结束提问,例如“有人能帮我吗?”或者“有答案吗?”。...首先:如果你对问题的描述不很合适,这样问更是画蛇添足。其次:由于这样问是画蛇添足,黑客们会很厌烦你--而且通常会用逻辑上正确的回答来表示他们的蔑视,例如:“没错,有人能帮你”或者“不,没答案”。...在看到这问题的时候,我的反应通常不外如下三种: 1. 你还有什么要补充的吗? 2. 真糟糕,希望你能搞定。 3. 这跟我有什么鸟相关? 提问:我的Windows有问题,你能帮我吗?...; 所报告的问题是由于网络错误而产生的; 这便是为什么“技术支持”被认为是一件可怕的工作,因为有拙劣的bug报告需要处理。
关于代码的一切尽在「代码随想录」 一些同学对计算机运行的速度没有概念 可能就是感觉计算机运行速度应该会很快 但我们在做算法题目的时候为什么会超时呢? 我们的计算机究竟1s可以计算多少次呢?...超时是怎么回事 大家刷leetcode时候应该都遇到过知一种错误是超时 也就是说程序运行的时间超过了规定的时间,而leetcode并没说程序运行了多久超时,也没有说超时时间具体是多少 一般现在判题系统的超时时间就是...1s,其他OJ呢,例如POJ 或者ZOJ 超时时间都基本上都是1s 也就是用例数据输入后最多要1s内得到结果,leetcode 应该也是1s左右(leetcode上可能每道题限制会有所不同)。...下文为了方便讲解,暂定超时时间就是1s 接下来我们要知道我们的代码为什么会超时的 也就是如果我们写出了一个O(n)的算法 ,我们其实可以估算出来n是多大的时候,我们算法的执行之间就会超过1s 如果知道n...27亿次 再加上双核所以就是理论上我的计算机1s可以运行54亿次 但是不要以为计算机的cpu 1s运行54亿运算都用到了我们自己写的程序上 这里面水分很多的,首先不是CPU每次运行都能实现一次运算,有时候大概运行十几次才能完成一次运算
第9章 我们怎样进行sprint演示 sprint演示(有人也叫它sprint回顾)是Scrum中很重要的一环,却常为人们低估 ---- 为什么我们坚持所有的sprint都结束于演示 一次做得不错的演示...这很有意义 做演示会迫使团队真正完成一些工作,进行发布(即使是只在测试环境中)。如果没有演示,我们就会总是得到些99%完成的工作。有了演示以后,也许我们完成的事情会变少,但它们是真正完成的。...团队在做演示的时候会结结巴巴,之后的掌声也会显得勉勉强强。有人会为团队感到有点儿难过,也有人感到很不爽,因为他觉得宝贵时间被浪费在了一场很烂 的演示上 这会伤害一些人。但它是苦口良药。...等到下一个sprint,这个团队就会真得试着做完一些事情!他们会想:“也许我们下个sprint可以只演示2个功能 ,而不是5个。但这次这些该死的功能一宿地正常工作!”...你可以自己看,报告上都有怎么配置测试环境,发出了多少个请求!“ ScrumMaster:”那太好了!那就是你的‘演示’啊!给大家看看你的报告就行了。这比什么都没有强,不是吗?“ 团队成员:”哦?
「当时如果我们做了什么,是否可以更快的恢复?」 这是对运维对每次故障的总结,目的是为了我们后续不会再犯同样的错误,或者是出现类似的错误时,我们能更好的应对。...---- 或许很多人都还没认识到复盘的威力,我们再看一下身边常见的案例。 为什么有的人仅工作5年就能比得上别人工作10年的经验?...为什么我们一直在重复做着相似的事,同样的错误犯下N遍也不知道,更无法察觉和改正?...平时我们整理文件、用印象笔记、记账、思维导图等都是结构化思维在生活的应用。总的来说,结构化思维对生活最大的影响是提高效率,帮我们高效处理事情。 就比如,深度思考、利用好碎片化时间能大大提升工作效率。...我:"还有吗?" "没有了就这些"。 估计大多人回家可能只买了奶茶和葡萄。 利用归类分组进行金字塔搭建: 你能得到有逻辑关系的金字塔结构。
那么我们可以先来审视一下,View真的是好好的吗?...它的工作流程有点像是刷新网页一样。即我们仍然正常地去描述一个控件,但这次要附带上它的状态。...而如果加载过程中遇到了一些问题,比如说用户的手机没网,这个时候就展示一个错误页面给用户。 这是一个非常常见的需求,那么长久以来我们都是如何实现这个功能的呢?...为什么使用Compose来实现同样的功能逻辑会变得这么简单?因为这就是声明式UI的特点。当HomePage()函数传入的参数发生变化时,这个函数就会触发重组,从而对界面内容进行刷新。...这样,我们就通过一个非常简单的例子比较直观地理解了Compose的优越性,希望这能回答许多人心中的“为什么要学习Compose”的疑问。
如果别人之后需要查看这些代码,将无法理解为什么要按照当时的方式来完成这个变更。有些缺陷非常微妙,而且很容易重复出现。只看简短的、非描述性的提交消息,不一定有人能知道在什么条件下会出现错误。...如果我们讨论的是一个 bug,我就会知道它出现在哪些系统,发生在什么条件下,为什么没有影响到其他的系统,以及我应该做些什么来避免再次犯同样的错误。...这引出了我下面的观点…… 但是我也希望 Linux 圈外的人能够理解:Linux 所遵循的过程有着切实的优势。没有一种工具能完全胜任这项任务。...现代开发工具使许多事情变得更容易:你可以触发动作、集成 CI/CD 流水线、给变更的相关人员发通知等等。但在客观上,它们使得我们更难拆分工作了。...我不知道这样的工具会是什么样的。但也许我可以大胆地设想一下: Git 是一个源代码控制系统,本质上源代码控制系统希望添加历史,而不是重写历史。
; return { title }; } }; 虽然能正常运行,但是title属性并不是响应式数据。...Ref vs Reactive的方式,但我希望收到您的答复,你在做类似的事情吗?...这种方法是错误的吗?请在下面给我一些反馈。...上述所研究的案例可能会存在一些差错,但是希望有人告诉我一些更好的方式。我希望我能帮助您解决一些问题,并希望在下面听到您的反馈。感谢您的阅读,我一如既往的朋友......而reactive()只能接收一个对象,我们可以把一些相关联的数据都放在这个对象里,可以提高代码的可读性。 如果逻辑可以复用可以使用组合式函数,这样其他组件也可以使用这个逻辑。
这就是我们在计算机科学中一直在做的事情。我们使用低级抽象,并在其上构建更多的抽象。我们应该更多考虑的是,我们的软件应该如何运行,而不是怎么让它运行,这样的话,才能更高效。...这个革命性发展同样也暴露出了我们需要解决的问题。比如,渐进式 web 应用(PWA),它们之所以存在不是因为它们很炫酷,不是因为作为程序员的我们乐于写 PWA。...我们现在可用的技术其实在过去都早已被发明出来了。当然,它们特性不同,名字不同,但是,本质上它们都是相同的。...那么我们为什么不去尝试着自己来实现或者去 GitHub 上阅读代码库理解它们的原理来实现这些东西呢?我确定你一定能够发现很多有用的知识。评论和 demo 也许会撒谎,也许会误导,但是代码不会。...我们一直在为不到一百年前的计算机开发我们所知的计算机软件,而竞技场都存在大约两千年了。 还记得最近一次看到一座桥坍塌是什么时候吗?还记得最近一次你的手机或浏览器奔溃是什么时候吗?
这种情况多发生在刚刚入门的同学身上,但也不全是,有些工作了好几年的同学也好不到哪里去。问题都提不好,我也不认为代码能好到哪里去。...记得,有一次,微信一下子弹出了好几条消息,正好挡住了我正要操作的内容,本来就心生不爽,点进去发现是一个同学正在群里问问题,5、6条消息发出来,仍然看的人一头雾水,不知所云。...,你遇到的所有问题几乎都有其他的人遇到过,除非你是在做一个从来没有人碰过的领域。...禁忌 1、如果有问题,直接按照上面说的方法把你的问题发出来就好,不要上来说一些无关痛痒的话,比如: 有人能帮我解决一个问题吗? ==> 对不起,没有 有大佬在吗?...==> 对不起,不在 这个问题不光在提问的时候适用,在其他场合下同样适用,有事情说事情。不然除了浪费双方的时间外,没有任何好处。
领取专属 10元无门槛券
手把手带您无忧上云