本文转载自码农故事汇 会讲故事的程序媛 长按二维码关注我 在自我介绍之前,先向大家简单介绍一下我目前工作的城市和单位。 我工作的地方位于中国西北部的一座城市,陕西榆林。...我也是被这家大型国企所养活的众多员工之一,可我既不挖煤也不采矿,我的工作性质是一名程序员,我在矿上写代码。...01 工作内容 在正式去公司报道之前,我曾对自己即将进行的工作充满了憧憬和向往——去矿上敲代码写程序,为公司实现自动化挖煤采矿进城添砖加瓦,贡献自己的一份力量。...想象中的自动化挖煤与我们的工作相去甚远。 ? 下班途中捡起的煤块 尽管我的工作与黑漆漆的煤炭没有实质性的接触,然而见到它们的机会还是非常多的。上下班的途中,常可见装满煤块的大车一辆接着一辆行驶在路上。...另外还有羊杂碎、粉浆饭、拼三鲜、黄酒、麻汤饭等都是在别处难以吃到的。 不看薪水待遇,光就吃这件事,让我留在矿上写代码我写心甘情愿。
我经常被问的一句话就是:为什么代码无法运行?然后细看有些问题,真是让我哭笑不得,比如no module name pygame…… ?...今天来谈谈运行代码遇到问题时,怎样做才是最好的解决方案吧~授人以鱼不如授人以渔! 大家关注公众号下载代码运行,肯定是出于各种各样目的。...针对各类情景,我做了个分析和总结,大家可以根据自己的场景选择合适的解决方案。 情景1:我只是为了完成老师或者boss的一个作业,仅此而已。...这种情景就非常简单了,只是完成任务的话,直接花点钱去某宝买个现成的就行了。也没必要用代码来折磨自己,把时间花在更重要的地方~ 情景2:我是小白,刚接触编程,跟着文章一步一步操作最后也没成功。...这些基础问题基本上你都能找到手把手的教程教你怎么去解决。再者,学会查看报错信息也是一个重要的技能。 我发现很多小伙伴遇到错误根本不看输出的错误信息一眼,对,一眼他都不看的。
反馈则是在开发中的任何环节,包括代码质量、自动化测试、部署、项目进度、需求变更、客户验收等,而且反馈越快越好。...TDD,即测试驱动开发,强调的是测试先行。TDD是一个存在争议的主题,因为在一个连测试的没有的代码库中(多数客户也不关心测试代码,他们通常只想要看得到的功能),它的立身之本就不复存在了。...我也经历过客户要求测试覆盖率的项目,有专门的测试覆盖率工具(coveralls)来检测代码库,有的甚至集成在CI上作为一个硬性指标。 所以,TDD必须在一个有测试的项目中去讲。...开发人员每天都在代码库提交代码,版本控制工具(比如Git)在提交前必须更新代码库最新的代码(解决冲突,代码合并,应用更改),然后将代码提交到代码库中。...CI通过自动化,将一些需要重复执行的操作(代码审查、编译、测试、构建、部署)自动化管理起来,大大减少了重复的过程,节省了大量的时间。 降低风险。
JavaScript是一门单线程,解释型,弱类型的动态语言,解释一行执行一行。 JavaScript执行过程首先先语法分析,就是分析一遍代码有没有语法错误,解析期间不会执行代码。...接着就开始预编译,预编译完了就开始一行一行执行代码。 预编译过程会创建两个对象,一个是全局的Global Object对象,简写GO,另一个是函数的Activation Object对象,简写AO。...有个点要注意,JavaScript在预编译阶段, 会解释函数声明, 但却会忽略表式。...函数参数你可以看作在函数里面隐式的声明了一个变量a: function fn(a) { var a; console.log(a);//3 } fn(3) 而且函数参数里面在预编译过程中,会形成一个临时作用域...,在预编译完了之后会消失: function fn(a, b = function () {a = 5}) { console.log(a);//3 b(); console.log(a);
我的代码日程 强烈推介IDEA2020.2破解激活,IntelliJ IDEA...打印100~200 之间的素数 2. 输出乘法口诀表 3....判断1000年---2000年之间的闰年 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 。。。
0x01 techio 这是我第一个用的在线代码编译器,为什么是第一个,因为好多人在推荐......在线网址:https://tech.io/snippet 唯一让我不爽的是,它的初始化界面是 Java,就凭这它在我这就只能打 99 分,看来它是不知道我 C 出身的野路子...(逃 ?...当然它不只是做 IDE,还包括前端技术、文件编辑还有大量计算机方面的课程(当然收费),鉴于本篇文章只是介绍在线编译器,所以其余的功能有兴趣的可以自行探索。 ?...写好代码,然后点击 Execute 即可运行: ? 结果会在右侧显示: ? 初次以外,在界面的右上角还有一排菜单栏,可以进行 fork 操作,新建工程,编辑代码等: ?...这个只是拿来应急和玩儿的,比如帮别人看看代码,自己突然想写点代码但是电脑上没有编辑器,诸如这种有这俩其实就够用了。
#和##对于大部分C语言玩得还算比较溜的朋友并不是很陌生,不过能把这两个知识点游刃有余的应用到所在代码中的每个角落,似乎并没有几个人能够做到,学的时候朗朗上口,而编码的时候却抛之脑后。...但是今天bug菌还是想重新介绍这两个“兄弟”,希望大家能够写出"秀"一点的代码~ 1 #和##基础 对于这两个语法的功能都比较简单,且都是在预处理阶段做一些工作 : #主要是将宏参数转化为字符串 ##主要是将两个标识符拼接成一个标识符...首先要知道原因 : 进行宏定义嵌套的情况,#或者##仅在当前宏有效,嵌套宏中不会再次展开,既然当前宏无法展开,那么我只能再加一级宏定义作为转换宏进行展开,看能不能解决该问题: #include <stdio.h...1、在结构体定义中的妙用 下面是bug菌经常在项目代码中用到的##结构体定义法,也是非常多开源代码中惯用的做法,相比常规的结构体定义法,确实省去很多重复的代码。...bug菌在代码中跟大家都标注了,相信大家一眼就能看懂,似乎并没有想象中那么难。
那么假如我编写的代码依赖了系统底层平台或处理器架构特性的Go包时,比如说我上周在文章《Go服务迁到K8s后老抽风重启?...所以在上篇文章说的那个为了追踪在Kubernetes上服务老重启的问题,用syscall.Dup2重定向标准输出的解决方案是有副作用的,我贴一下之前这个功能的代码。...return nil } 天真的用了一个runtime.GOOS == "windows"的判断,我还想着能在代码里根据内核的不同执行不同的代码,但是Go的软件包是先编译成可执行文件再执行的,这个判断根本没啥用...,从公司基础设施建设层面,统一化收集所有rpc服务的错误日志,这样所有服务的代码都不用改,比我自己在项目里加代码不强吗?你们觉得我说的对不对(是不是能少干活...)。...条件编译 我发现在go的每个内置库里都有很多以不停系统名结尾的文件。下面是Go的os[1]内置库源代码的部分截图: ?
说是管理其实就是把常用的一些JS方法,自己保存下来,这样的以后的工作中可以比较方便的使用。 哪些方法可以、或是说值得保存呢?...还有一些是扩展型的函数,例如,判断数组,增加、删除数组什么的, 还有一些工具类的,什么复制属性啊,字数判断啊,DOM节点操作啊,轮播广告啊,日期操作 总之,上面列出的那些内容的JS代码都是与具体业务逻辑无关的...============= 我写这些东西基本都是“思路或方法”的占多数,我觉得思维在层次上是高于具体实现的。...这也是我为什么很少写JS的具体实现的原因,我总觉得应该给我的粉丝们一些不一样的东西,一些别的地方得不到的东西。因为网上JS教程很多,我又写不好JS教程,我没耐心一步一步的详细写。...要看JS教程有很多地方可以看到很好的教程。 我希望关注我的朋友们,看我的微信公众号,能够体会一种“变通”的能力。不要我说一就是一,要懂得举一反三啊。 我再三提醒啊,不要僵化的去看待文中的内容。
加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。 那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。...在x86环境下通过FS:[0x30]获取PEB的值; 在X64环境下通过GS:[0x60]获取PEB值; 当这个值等于0的情况下,表示没被调试,否则就处于调试状态。...CloseHandle 检测 利用异常捕获机制,给CloseHandle函数一个无效的句柄作为输入参数,在程序在没有被调试时,将会返回一个错误代码;而程序被调试器调试时,将会触发一个EXCEPTION_INVALID_HANDLE...父进程反调试检测 在window系统中explorer是程序管理器或者文件管理器,一般双击运行的进程,它的父进程就都是explorer程序,如果是被调试进程启动的话那么父进程是调速器进程。...在32位寄存器中Dr0-Dr3是保存断点地址,只要识别Dr0-Dr3寄存器的值不为0,那么就属于调试状态。
而组合的 type alias 不能在其他交集的部分中显示。interface 之间的类型关系也会被缓存,而不是作为一个整体的组合类型。...在某种程度上,这是因为命名类型往往比匿名类型更紧凑(编译器可能会更容易推断出匿名类型),这减少了花费在读取和写入声明文件上的时间(例如用于增量构建)。...项目引用 使用 TypeScript 构建一个比较庞大的项目时,将代码库组织成几个独立的项目会很有用。每个项目都有自己的 tsconfig.json ,可能它会对其他项目有依赖性。...这有益于避免在一次编译中导入太多文件,也使某些代码库布局策略更容易地放在一起。 有一些非常基本的方法将一个代码库分解成多个项目。...官方 wiki 你的【阅读、点赞、在看】都是对我最大的鼓励 感谢支持❤️
其中一段情节讲述了,一位来自英国的肚皮舞娘和住在迈阿密的小伙在虚拟现实中相识,然后在一起的故事。 在元宇宙中的恋爱,你尝试过吗?...你和伴侣可以在宁静海湾享受永无止境的海滩日落,可以在一个有魔法、移动的城堡世界里玩游戏,或者在一个被巨大外星水母包围的水下巢穴里调情。 当前,许多APP/平台为人们提供了在元宇宙中约会的条件。...Blue回忆说,在他们开始约会之前,有一次他和Karapetian互相拍着对方的头,她抚摸着我的脸,我觉得,这真是太亲密了。...受访的600多名用户里,他们中的很多人都表示在虚拟世界里受到过性骚扰、暴力威胁甚至种族歧视,而在全体女性用户中,有近一半人都表示自己受到过性骚扰或类似的不当行为。...今年1月, Meta匿名员工在内部报告称,有人在社交社交VR应用Rec Room高呼种族歧视,但无法识别举报他们。 面对性骚扰问题,Meta还推出了「私人边界」功能。
b = true } else { b = false } // good b = a === 'a' 2.在if中判断数组长度不为零的正确姿势 // bad if (arr.length...== 0) { // todo } // good if (arr.length) { // todo } 3.同理,在if中判断数组长度为零的正确姿势 // bad if (arr.length...(value in obj) { keys.push(value) } // good let keys = Object.keys(obj) // ['a', 'b'] 巧用解构简化代码...,我叫${person.name},我今年${person.age}了`) } // best function sayHi ({name, age}) { console.log(`大家好,...我叫${name},我今年${age}了`) } 19.函数使用箭头函数 let arr [18, 19, 20, 21, 22] // bad function findStudentByAge
一份整洁的代码对于一个系统是多么重要。如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控。很有可能会毁掉这个系统。 什么才是整洁的代码?...: (1) theList中是什么类型的东西?...不过我会配上一套单元测试,覆盖每行丑陋的代码。 然后我打磨这些代码,分解函数、修改名称、消除重复。我缩短和重新安置方法有时我还拆散类。同时保持测试通过。...最后,遵循本章列出的规则,我组装好这些函数我并不从一开始就按照规则写函数。我想没人做得到 ❞ 就像写作文一样,好的代码也不是一次性写出来的,需要反复琢磨。...逐步改进 系统需要要迭进,在迭进过程中生成干净整洁的代码。这里涉及到重构代码,去除重复性代码。 关于重构,你可以特意留意命名方式,函数大小,代码格式。 ❝代码能工作还不够。能工作的代码经常会严重崩溃。
代码仓库 代码是运行互联网项目的核心。在快速迭代的互联网项目开发中,最常见的便是多人共同协作开发场景。将代码托管至云端并使用优秀的代码管理系统,对于开发人员是至关重要的。...CODING DevOps的代码托管服务,除了基本的代码版本管理能力之外,还提供质量门禁、代码扫描等能力,能够帮助开发者规避本地代码管理的局限与安全性障碍,回归开发本身,赋能云端协作,实现快速迭代。...每当我们开发一个小小的功能,很可能都需要依赖10个微服务,这使得我们在本地的调试变得非常不方便。...其次,微服务架构下的自测反馈流程实在太长了,每次写完代码要想自测一下,我们都需要经过编译-打包-推送仓库-部署的整个流程才能看到结果。...再次,本地环境、测试环境、线上环境很可能差别极大,在本地调试没问题的程序员,换个环境说不定就会出大问题。因此经常听到程序员抱怨:“这段代码在我本地是没问题的啊?”
昨天我在逛知乎的时候,看到了这么一个问题: 我看到了三个非常有意思的回答,分享给大家一看。...有个人分析了Unix的代码之后,找到了后门,重新编译部署了Uinx,但是让他们崩溃的事情再次发生,Ken还是能黑进他们的账户,这个事情让他们百思不得其解。...一直到1983年,Ken获得图灵奖,在大会上解开了这个秘密,原来这个密码后门是通过他写的一个C编译器植入的,而当时那台Unix的机器必须通过这个C编译器编译之后才能运行,所以不管unix怎么修改都没有用...这就是为啥有的单位,人家不连外网,因为根本不知道装的系统有没有别人留下的漏洞。 低级的代码层次 中级的在工具链上 高级的在编译器层次 终极的在机器内部,这个根本防不胜防。 所以对程序员好一点。...各位铁汁们,你们有过在代码里藏后门的经验吗,评论区说说看呢?
” 昨天我在逛知乎的时候,看到了这么一个问题: 我看到了三个非常有意思的回答,分享给大家一看。...有个人分析了Unix的代码之后,找到了后门,重新编译部署了Uinx,但是让他们崩溃的事情再次发生,Ken还是能黑进他们的账户,这个事情让他们百思不得其解。...一直到1983年,Ken获得图灵奖,在大会上解开了这个秘密,原来这个密码后门是通过他写的一个C编译器植入的,而当时那台Unix的机器必须通过这个C编译器编译之后才能运行,所以不管unix怎么修改都没有用...这就是为啥有的单位,人家不连外网,因为根本不知道装的系统有没有别人留下的漏洞。 低级的代码层次 中级的在工具链上 高级的在编译器层次 终极的在机器内部,这个根本防不胜防。 所以对程序员好一点。...Python 之父 Guido 的推荐,目前本书正在七折促销中!
自己辛辛苦苦写出来的代码,被别人无情的反编译了怎么办? 一、背景 Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储于class文件中。...由于跨平台的需要,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。...自己辛辛苦苦写出来的代码,被别人无情的反编译了怎么办?下面教会大家使用工具对自己心爱的代码进行加密。...如下图: 我个人认为,其实图形界面主要是为了得到.pro的代码压缩、优化、混淆的配置文件。...如下图所示: 3、进入【压缩】选项 此选项卡是对工程进行压缩,我在测试中未使用此功能。
昨天我在逛知乎的时候,看到了这么一个问题: 我看到了三个非常有意思的回答,分享给大家一看。...有个人分析了Unix的代码之后,找到了后门,重新编译部署了Uinx,但是让他们崩溃的事情再次发生,Ken还是能黑进他们的账户,这个事情让他们百思不得其解。...一直到1983年,Ken获得图灵奖,在大会上解开了这个秘密,原来这个密码后门是通过他写的一个C编译器植入的,而当时那台Unix的机器必须通过这个C编译器编译之后才能运行,所以不管unix怎么修改都没有用...这就是为啥有的单位,人家不连外网,因为根本不知道装的系统有没有别人留下的漏洞。 低级的代码层次 中级的在工具链上 高级的在编译器层次 终极的在机器内部,这个根本防不胜防。 所以对程序员好一点。...各位铁汁们,你们有过在Python代码里藏后门的经验吗,评论区说说看呢?
领取专属 10元无门槛券
手把手带您无忧上云