“我”为什么做测试 本篇所指的“我”,其实不光是作者本人,而是大多数从业软件测试的人员。 什么是测试?其实关于测试的名词解释,作者不再进行阐述。...为什么做测试?...也有一些是因为不满足当前自身行业的发展,被迫或主动的选择了测试,比如之前是做开发的,但是由于自己的开发能力不足或是不想天天加班等,才会转到测试。...,如何做的等。...本篇其实没有所谓的指导思想,看似说了一些,但好像什么都没有说,只是单纯的聊聊一些感受,也是想让同行反思一下,为什么要做测试,如何让自己的测试职业发展更好。为什么说如何让自己发展更好?
书接上文:当我做 hackathon 时我在做什么(1)。 前文中提到,我做的第二个项目是个可视化的项目,名字叫 deneb。deneb 是天鹅座的一等星,也是夏季大三角和北十字两个星群的端点之一。...嗯,deneb - vega - altair,聪明的你一定想到了我为什么起这样一个名字: ? 为什么是 vega-lite? 在数据可视化这块,我自己走了不少弯路。...如果你需要能够对可视化的图表做简单的动画,plotly 也能胜任。 我一度以为 plotly 是我的真命天子,直到有一天我敲开了 altair [4] 这个潘多拉魔盒。...第五次撞墙:IElixir 和 jupyter notebook 完成 ex_polars 就像打完我自己的淮海战役一样,做 deneb 的过程是摧枯拉朽,几乎不费太大的力气。...最后,我成功解决了问题,并给 IElixir 的作者提交了一个 PR(还有什么比一个对已有开源项目的 PR 更能彰显 OSS-a-thon 的意义的?): ?
我本来计划为 quenya 项目支持 GRPC backend,之前已经有了思路,但一直没时间做。...当我写到 groupby_apply 时,我发现:额错了,额真滴错了。...这是个非常合理的需求,然而 rustler 并不允许我这么做。...(s_eq_u8, u8, eq); 然而,rust 编译器又一次让我撞墙。编译器给出的错误信息不够直白,说的净是那些什么 TokenStream 啦,什么 Group 啦,之乎者也让人看不懂的错误。...我这辈子也没写过这么多无趣的代码。什么 TMD 叫搬砖,这 TMD 就叫 TMD 搬砖。
我的方法论 清晰可见的目标 我喜欢在做一件事情前把目标能够表达清楚,然后脑海里有一个当我成功达到后这东西该长什么样的草图。...我的开发工具箱 所谓「工欲善其事,必先利其器」,好的工具是提升效率的保证。 Marp 这两年我做 slides,基本都是使用 Marp。...那位问了,这么简陋的工具,能画什么样的图形?...比如我做的这个: ? 工具本身并没有限制我。...其实像 excalidraw 这样的好工具反而能解放我的大脑,因为我不再需要焦虑用什么样的图形才能更好地表达(使用 visio 或者类似工具时我总有类似焦虑),我也不再需要焦虑该为图形配什么样的颜色,因为
首先,互联网上有很多镜像,我给他们定义了2种分类: 1. 操作系统镜像(包括常见的Centos,Ubuntu,Debian,Alpine,Busybox等)。.../bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB 总结来看,就是直接把文件追加到容器里面,然后一个CMD里面加了个bash,至于这个文件里面有什么内容呢...其次我们可以分析那些中间件镜像是如何做的。...然后其他中间件镜像,是不是可以在这个操作系统镜像基础上接着做呢?...2.这个是虚拟机生成的镜像,所以和标准的Centos7.9(200M)的差距还是很大的,当然我这个操作系统里面自带的东西也比标准的镜像更多。
我非常擅长电脑编程,我童年的逃避最终成为了我职业生涯的基石。在某种程度上,编程给了我一种掌控感,就像是我的生活中所缺少的。 灵感来自一位火箭科学家 我九岁的时候,我的世界彻底改变了。...我记得我问,“你在玩什么游戏?” “我还没给它起过什么名字呢,”他回答。我不明白他的意思。 他为什么要叫它什么呢?然后他解释说,这是他自己用BASIC语言写的。 我的大脑爆炸。...我喜欢软件工程师的工作,但我的劳动成果是公司的。我不像我朋友的父亲那样,把我置于他的庇护之下。 我不高兴,但与此同时,我的岳父一直告诉我,如果我百分之百地喜欢我的工作,我就会付钱在那里工作。...他告诉我,除了经济上的回报,工作不需要提供任何东西,我的经历也证实了他的观点。 我的雇主在推销产品,让股东和董事会成员满意。这就是世界的方式。为更大的善做贡献是你在业余时间或退休后做的事。...问问你能做什么。 我绕了一圈。这个从火箭科学家那里学会了编程的男孩现在是一名高级软件工程师,他正在帮助年轻人学习编程的诀窍,以便他们能够挑战计算机科学的边界。
这种似乎失控的编码方式,让我想到了邪恶的“GoTo”语法,很多编程语言里都有它, 但是都不建议你用它。因为邪恶的不是GoTo本身,而是滥用GoTo的我们。...题眼基本表达了我的论点,随着本文的深入会对该论点做加一个约束条件。现在容我开始论证它~ 都说抛异常很重,到底重在哪里? 不整虚的,我们用测试数据来说话。...当接口应答只是true/false的时候,抛异常会是个很匪夷所思的设计; 当下层方法不断的抛出各种异常,然后汇总到拦截器里处理时,或者需要对异常拆开做判断,再自定义成合理的应答话术;或者将好不容易区分开的不同异常...我的态度 任何的系统架构设计,都是在不断的在做天人交战,利弊权衡。鲜有绝对的对与错,只有在当前组织环境内相对的合理与不合理。对于异常用作流程控制这件事,我是投反对票。
com后缀的优势: 历史最悠久 2、全世界通用,热度最高 3、热度最高也就意味着大众识别度高 4、做好了就是自己的流量,不至于为他人做嫁衣,如果你用top,做好了会导流到com和cn,得不偿失。
你要感知到这个情况,告诉调用方“嘿,哥们,你传个null给我做甚"。...这种情况下,null是个”看上去“合理的值,例如,我查询数据库,某个查询条件下,就是没有对应值,此时null算是表达了“空”的概念。...(什么?想调用这个方法时,不记得之前实现该方法有没按照这个原则?所以说,代码习惯很重要!...解决这个问题的一个方式,就是使用Null Object pattern(空对象模式) 我们来改造一下 类定义如下,这样定义findAction方法后,确保无论用户输入什么,都不会返回null对象 public...{ action.doSomething();} 2、精简 ParserFactory.getParser().findAction(someInput).doSomething(); 因为无论什么情况
这也是我最近遇到的问题,这两个月做了两次技术分享,第一次就遇到上面的情况,有的点因为紧张怎么都想不起来,只能尴尬的说,我回头再重新捋一下发给大家。 为了避免每次遇到这种问题,我得想办法解决。...再从大脑结构来说,你可以理解它们分布在这个位置: 从距离上说,本能脑和情绪脑距离心脏更近,一旦出现紧急情况,它们就会优先得到供血,这就是为什么我紧张的时候会感觉大脑空白,因为最上方的理智脑供血不足了。...而且因为它年龄小,在遇到危险的时候,本身也竞争不过其他两重脑,所以就能解释,为什么人在遇到危险的时候都靠本能反应而不是靠理智。 02 那怎么解决这个问题呢? 其实很简单,就是打稿子,然后自己多练。...我虽然没有连麦经验,但是我感觉分享形式都是相通的,所以我建议她先把要分享的内容打稿,并熟读几遍,这样就算连麦紧张,还有稿子可以提醒,阿常的执行力真的太强了,当天晚上稿子就出来了。...昨天我看了阿常和小林的连麦,非常稳,这也是我要继续学习的方向。 好了今天的分享就到这里。 今日鸡汤: 自信人生二百年,会当击水三千里。
现在回想起来,有很多朋友都开始后悔她们当初做的决定,要是当年认真考虑一下就好了。而我却恰恰相反,我觉得自己做了一个无比英明的决定,折腾数据真是太有意思了。...为什么我会这样热爱这份工作,总结了一下,原因有三。 编程就像在玩解谜游戏 打小我就特别爱玩解谜游戏,上学的时候我又特别喜爱数学,这门学科富有逻辑性,特别适合我。现在做的工作也让我有相同的感觉。...你的朋友们经常夸你是个天才 前面我说过,身边的朋友们都没有技术背景,她们根本不明白我在捣鼓什么。相信我,我已经向她们解释过无数次了,可是到最后都被她们当成了耳边风,她们始终以为在电脑面前我无所不能。...这也是为什么如此热衷于我的工作,我要向他们显示在这个男性主导的科技领域,女性也可以做的很好。 跟我不一样,有很多女性非常惧怕这个领域。...现代社会虽然性别的界限变得越来越模糊,但是总会有些工作特别适合女性或者男性来做。从小到大,我们的大脑都养成了一种惯性思维。如果我们要去理发,理发师肯定是个女的(我们中国人正好相反^_^)。
作为一名前端工程师,选择合适的技术栈对项目的成功至关重要,我最近一个星期尝试了下这两个技术栈的组合,大概在一个星期就写了一个小 SAAS,总共 10 多个页面。...在本文中,我将分享为什么我选择Next.js 14和Supabase作为全栈开发的首选组合,并通过最新的代码示例和比较数据,直观地展示这个选择带来的诸多优势。
本篇文章,我将以数组为基础,探索“在线洗牌”的原理。同时,我会以多种方式编写这个原理的代码。...还等什么,继续往下看~ 方法一:Fisher-Yates 算法 Fisher-Yates 算法的基本前提是遍历条目,将数组中的每个元素与从数组中剩余的未洗牌部分随机选择的元素进行交换。...为什么要从 Math.random() 的结果中减去 0.5 ? 通过从 Math.random() 的结果中减去 0.5,将会引入一个介于 -0.5 和 0.5 之间的随机值。..., "elderberry"]; const shuffledArray = shuffle(myArray); console.log(shuffledArray); 不过,经过使用上面三种方法,我还是推荐
Redis监控体系应该细化到什么程度? 为什么使用ELK构建监控体系?...解决方案 为什么会选择Elastic-Stack技术栈呢?...下面详细聊聊我们具体怎么做的,做了哪些工作?...Q2:直播中讲到的大key,hash要改成什么?分片吗?...A:1、没有深度使用过MongoDB;2、基于Elastic-Stack做慢查询报表平台思路与Redis一样的,不管什么指标+日志全部都采集到ES完事。
这是一篇做LncRNA的文章,题目是“STAT5A induced LINC01198 promotes proliferation of glioma cells through stabilizing...有没有什么发现?小编猜想,作者可能有些强迫症,小鼠的姿势,以及各个小鼠之间的间距竟然如此“相似”!我们利用Photoshop把左右两幅图进行差值比对,发现除了肿瘤部分,其他部分基本完全重合!
这个时候程序员会怎么做? 答:100遍print('媳妇儿,我错了') 思考:复制粘贴100次吗? 答:重复执行100次一样的代码,程序中循环即可 循环的作用:让代码更高效的重复执行。...分析:初始值是0次,终点是5次,重复做的事情输出“媳妇儿, 我错了”。...重复打印5行 # 重复打印5行星星 j = 0 while j <= 4: # 一行星星的打印 i = 0 while i <= 4: # 一行内的星星不能换行,取消...8.1 while...else 需求:女朋友生气了,要惩罚:连续说5遍“媳妇儿,我错了”,如果道歉正常完毕女朋友就原谅我了,这个程序怎么写?...') i += 1 else: print('媳妇原谅我了,真开心,哈哈哈哈') 8.1.3 退出循环的方式 需求:女朋友生气,要求道歉5遍:媳妇儿,我错了。
分析:初始值是0次,终点是6次,重复做的事情输出“记得转向要打方向灯”。...while 条件: print('媳妇儿, 我错了')print('刷晚饭的碗')但如果女朋友还是生气,把这套惩罚要连续3天都执行,有如何书写程序?...1、while...else 需求:女朋友生气了,要惩罚:连续说5遍“媳妇儿,我错了”,如果道歉正常完毕⼥朋友就原谅我了,这个程序怎么写?...i = 1while i 我错了') i += 1 print('媳妇⼉原谅我了...') 思考: 这个print是不是没有循环也能执行?...: print('媳妇原谅我了,真开⼼,哈哈哈哈')退出循环的方式 需求:⼥朋友生气,要求道歉5遍:媳妇儿,我错了。
并且尽量使用长缓存(「使用时间戳更新缓存」) 缓存一切可缓存的资源 使用长缓存 使用外联的样式和脚本 「压缩代码」:减少资源大小可加快网页显示速度,对代码进行压缩,并在服务器端设置GZip 压缩代码(多余的缩进...「无阻塞」:头部内联的样式和脚本会阻塞页面的渲染,样式放在头部并使用link方式引入,脚本放在尾部并使用异步方式加载 「首屏加载」:首屏快速显示可大大提升用户对页面速度的感知,应尽量针对首屏的快速显示做优化
今天在剧瘾上头前看了一上午的论文,意外的看到一个13 年的讲NotePad++的文档我看了一会儿感觉不错,顺手下载下来操作一下>.< ?...安装了一个Python 的缩进插件 ? 使用一下招牌的插件,二进制 ? ? 内部的一些设置 ? 字体上面的微调 ? 这个是一些复制格式上面的选项 ? 这个简单的说一下,就是完整的复制 ?...看错了,是这个插件 ? 使用效果,shift+()(注意这个括号是一对的),你看光标位置 ? 设置上面并没有太多的设置,刚好够用吧 ? ? 这个插件自带的市场没有,可能要去上面我提供的地址去下载 ?...够用了,我看错了 ? 这个地方是新建问价默认的字符 ? SciTe的底层来实现zzshi正则式 ? 摁住Alt键的列编辑模式,自己体验 ?...xxx ---- 当然这是粗浅的一点点编辑器使用.更多高级功能我也没有讲.我后面再写,比如正则式这个东西
media (max-width: 800px) { .screen,.controls { width: 90%; } } 媒体查询,当小于800px的时候都是90% 取消.../*举个例子把.好吧.假如00:01/00:50=1/50=0.02;0.02*100=2%.假如这个进度条有200px;200*2/100=4px就行了啊.4px就是总时间为50秒的1秒;慢慢来哈,我说的是对的...String(mins);//转换为字符串 } // 获取秒数 let secs=Math.floor(video.currentTime%60);//必须是开始的秒钟哈,结束没什么鸟用
领取专属 10元无门槛券
手把手带您无忧上云