GitLab/ArgoCD/Jenkins CI/CD方案梳理和对比
CI/CD的概述良好的CI/CD应该拥有哪些功能自动化构建 自动化构建触发:每次代码提交、合并请求、或其他触发事件时,自动启动构建过程。 依赖管理:自动处理项目依赖,确保构建环境的一致性。 可复用的构建脚本:使用脚本或配置文件(如Makefile、Gradle、Maven等)来定义构建过程,确保构建步骤的一致性和可复用性。 版本控制:构建过程中自动生成版本号或构建标签,以便于版本管理和追踪。 自动化测试自动化测试是CI/CD系统确保代码质量的重要功能,通过自动化测试,开发团队可以快速发现和修复问题。 单元测试:每次构建后自动运行单元测试,确保代码功能的正确性。 集成测试:在代码合并到主分支前运行集成测试,验证不同模块的协同工作。 端到端测试:模拟用户行为,验证应用的整体功能和性能。 代码覆盖率:生成代..
更多一日一技:如何正确保护Python代码
去年我写过一篇文章《一日一技:如何对Python代码进行混淆》介绍过一个混淆Python代码的工具,叫做pyminifier,这个东西混淆出来的代码,咋看起来有模有样,但仔细一看,本质上就是变量名替换而已,只要耐下心来就能看懂,如下图所示:而我今天要介绍另一个工具,叫做pyarmor。pyminifier跟它比起来,就跟玩具一样。pyarmor使用pip就可以安装:pip install pyarmor。pyarmor是一个收费工具,但免费也能使用。免费版有绝大部分功能,加密小的脚本足够了。我们今天要测试的脚本如下图所示:运行以后如下图所示:现在,执行命令pyarmor g json_path_finder.py。对这个脚本进行加密,会在dist文件夹中生成加密后的文件,如下图所示:加密后的文件打开以后长..
更多一日一技:真正的自然语言编程
在之前的文章《一次性数据抓取的万能方法,半自动抓取任意异步加载网站》中,我讲到一个万能的爬虫开发方法。从浏览器保存HAR文件,然后写Python代码解析HAR文件来抓取数据。但可能有同学连Python代码都不想写,他觉得还要学习haralyzer太累了,有没有什么办法,只需要说自然语言,就能解析HAR文件?最近我在测试open-interpreter,发现借助它,基本上已经可以实现自然语言编程的效果了。今天我们用小红书为例来介绍这个方法。如下图所示,我现在要抓取小红书首页游戏频道的帖子。通过不停往下滑动页面,我已经抓到了不少数据包。现在,把所有数据包保存为xiaohongshu.har文件(方法看我上一篇文章)。接下来,我们来安装open-interpreter,使用pip进行安装就可以了:pip ins..
更多When tailscale subnet router meet fake IP
我非常喜欢 Tailscale 这个组网工具,但在移动端设备上,通常只能开启一个 VPN。虽然 Tailscale 可以配置 Exit-nodes,但这样会接管全部流量,这显然不太理想。 Tailscale 能够自动接管设备的 DNS,并配置上游以支持其 Magic DNS 功能,同时,Tailscale 还支持 advertise-routes。利用这两个功能,再结合 FakeDNS (FakeIP) 功能,可以将国外网站的 DNS 指向 FakeDNS 的 CIDR,并将这个 CIDR 宣告到 Tailscale 的某个节点。然后,在这个节点上运行代理程序,就能实现所有 Tailscale 节点的透明代理。 我用 mosDNS + clash 实现了上述思路,目前运行体验非常好,配置并不算复杂,捋一遍..
更多一次性数据抓取的万能方法,半自动抓取任意异步加载网站
我们有时候临时需要抓取一批数据,数据不多,可能就几页,几百条数据。手动复制粘贴太麻烦,但目标网站又有比较强的反爬虫,请求有防重放的验证,写代码抓取也不方便。用模拟浏览器又觉得没必要,只用一次的爬虫,写起来很麻烦。例如,我经常逛色魔张大妈的精选好价页面。这个页面会列出各种折扣的信息。但它只能按大类筛选,无法用关键词搜索。如下图所示我打算只看前 10 页内容就好了。但一页一页看太麻烦了。有没有什么快速爬虫,把这个列表页的内容抓取下来呢?其实这种需求,使用半自动爬虫是最简单的。不需要考虑网站反爬虫的问题,因为你使用的就是真实的浏览器,不会通过代码来发起请求。而且这个列表页的内容都是异步加载的,直接在开发者工具可以看到数据包,数据包里面就有当前页面的全部内容。如下图所示:有没有什么办法,快速把这些数据包弄下来处理..
更多Jenkins迁移
Foreword 迁移Jenkins 腾讯云镜像导出 如果腾讯云镜像是windows,无法下载到本地,无论怎么弄都不行,所以只能手动迁移 如果腾讯云轻量镜像是Linux,可以通过几个间接的办法把整个镜像下载下来 选择轻量服务器,制作镜像 轻量服务器的镜像菜单中的共享镜像,共享给云服务器CVM 进入云服务器的镜像菜单,同地域复制,随便复制到一个地方,它就变成了自定义镜像 此时就可以通过自定义镜像进行下载 Windows Jenkins迁移 首先确保Jenkins版本一致,如果不一致迁移会导致很多错误,还不如直接重建 强烈建议每次保存一下Jenkins等相关环境的安装包,下次再迁移的时候可以直接安一样的版本 版本一致以后,看一下老的Jenkins存储路..
更多Valid HTTP verbs
从这里 想到,fetch/xhr 可以发起哪些 http verb 呢? python -m http.server 随手测试了下,发现连 !,$ 这种符号都可以作为 http verb,比如 fetch('/asdf', {method:"$"}) 这样的请求是能发起的。于是去 chromium 搜了下 "is not a valid HTTP method" 相关的解析放在 blink/renderer/platform/network/http_parsers.cc // See RFC 7230, Section 3.2.6. bool IsValidHTTPToken(const String& characters) { if (characters.empty()) re..
更多graphviz-networkx-画图
1. graphviz docker12345678910FROM ubuntu:18.04ENV LANG C.UTF-8WORKDIR /codeCOPY . .RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \ sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \ apt-get clean && apt-get update && apt-get install -y python3-pip python3-dev bui..
更多Cappy in a Haystack locations
For the mission from the beloved Fallout 4 Nuka-World DLC coc DLC04KiddieKingdomFunHouse01; player.moveto 06015A94 coc NukaWorldWildWestExt02; player.moveto 06015A8A coc DLC04BottlingPlant01; player.moveto 060445DF coc DLC04BottlingPlant01; player.moveto 0604A812 coc DLC04GalacticZoneExt04; player.moveto 06015A8E coc DLC04GalacticZoneExt04; player.moveto ..
更多FreeRTOS深入理解优先级翻转
Foreword 深入理解FreeRTOS中的互斥量、信号量、优先级反转、优先级继承等概念 理解基础 有一些知识基础才能看明白下为什么这么设计,这么说 中断不应该被阻塞 操作系统相关优先级远低于硬件中断,仅仅讨论操作系统内的情况,不考虑中断介入的更复杂情况 优先级翻转 假设: 系统中有3个任务Task1,Task2和Task3,优先级分别为3,2,1,也就是Task1的优先级最高 任务Task1和Task3互斥访问串口打印printf,采用二值信号实现互斥访问。 起初Task3通过二值信号量正在调用printf,被任务Task1抢占,开始执行任务Task1。 问题产生: 任务Task1运行的过程需要调用..
更多