Python Hacking: “高级”偏函数
本文讲解了一个需求的解决方案,而这个奇葩需求你在 99.93% 场景下都不会遇到,就算遇到了,也一定有其它更简单的解决方案。 0. 引言 >>> print((lambda x:None).__code__.__doc__) code(argcount, kwonlyargcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab[, freevars[, cellvars]]) Create a code object. Not for the faint of heart. 1. 需求 mock.patch 对象在..
更多《Prometheus Book》阅读笔记
看了一本在线的小书,叫《Prometheus Book》,做了一点摘抄和笔记。 第 1 章:天降奇兵 第一章对 Prometheus 的架构和用法做了简单的介绍。 基本介绍 通过建立完善的监控体系,我们可以达到以下目的:长期趋势分析、对照分析、告警、故障分析与定位、数据可视化。 Prometheus是一个开源的完整监控解决方案,其对传统监控系统的测试和告警模型进行了彻底的颠覆,形成了基于中央化的规则计算、统一分析和告警的新模型。 个人理解,这里的中央化主要是指数据存储中央化:各个数据源将指标暴露出来,由 Prometheus 服务器采集后统一存储、统一分析,方便聚合查询。 Prometheus 的基本结构如图所示: 其中 Prometheus Server 是整个组件中的核心部分,负责实现对监控数..
更多Python 函数式编程:不可变数据结构
本文原载于 opensource.com,由本人翻译,翻译作品原载于 linux.cn。翻译及转载基于 CC-BY-NC-SA 协议。具体创作参与信息可见文章最后部分。 不可变性可以帮助我们更好地理解我们的代码。下面我将讲述如何在不牺牲性能的条件下来实现它。 在这个由两篇文章构成的系列中,我将讨论如何将函数式编程方法论中的思想引入至 Python 中,来充分发挥这两个领域的优势。 本文(也就是第一篇文章)中,我们将探讨不可变数据结构的优势。第二部分会探讨如何在 toolz 库的帮助下,用 Python 实现高层次的函数式编程理念。 为什么要用函数式编程?因为变化的东西更难推理。如果你已经确信变化会带来麻烦,那很棒。如果你还没有被说服,在文章结束时,你会明白这一点的。 我们从思考正方形和矩形开始。..
更多《Docker 实践》阅读笔记
这几天看了《Docker 实践》,写了一点自己不知道或者想记录下来的内容。这是一份笔记,但不是一份基础教程。 1. 第一部分:Docker 基础 Docker 的优势 通过将环境打包成镜像的方式来标准化系统环境,需要使用这个环境的人可以直接使用镜像,无须重头配置环境。所以,Docker 在很多情况下可以作为虚拟机的替代使用。 对 Linux 用户而言,Docker 镜像没有依赖,所以非常适合用于打包软件。 关键概念:镜像和容器 简而言之,容器运行着由镜像定义的系统,而镜像本质上是一个文件系统,由一个或多个层加上一些 Docker 的元数据组成。 我们可以从一个镜像中生成多个容器,这些容器完全隔离,其行为不会相互影响。 一个巧妙的类比:镜像和容器的关系,就相当于类和对象的关系。 创建 Docke..
更多GitLab CI/CD: 辅助工具
本文会讲一些在 GitLab CI/CD 中可能会用到的辅助工具,包括隐藏任务、依赖缓存、定时任务以及部署环境。 0. TL;DR Hidden keys (jobs) Cache dependencies in GitLab CI/CD Pipeline Schedules Introduction to environments and deployments 1. 隐藏任务 先讲个简单的。 有的时候我们需要在 Pipeline 中跳过某些任务,通常情况下我们可以用任务定义中的 when 和 except 属性来控制任务是否显示。但是如果我们想暂时删掉这个任务怎么办? 一种方法,是在 .gitlab-ci.yml 中删掉或注释掉这个任务;另一种做法是,直接在任务定义的 key 中加个点号(...
更多Vim 修炼秘籍之语法篇
欲练此功,必先自宫。前言少年,我看你骨骼精奇,是万中无一的武学奇才,维护世界和平就靠你了,我这有本秘籍《Vim 修炼秘籍》,见与你有缘,就十块卖给你了! —— 本秘籍建议零售价:10 元如果你是一名 Vimer,那么恭喜你,你的 Vim 技能马上要升级了 😈!如果你之前不了解过 Vim ,那么也没关系,本文就当成学英语语法了!好,废话不多说,秘籍送上。ps: 建议先熟悉一遍 Vim 修炼秘籍之命令篇,本秘籍食用更佳正文核心秘诀Vim 功法之究极总结: (操作次数)+ 操作行为 + 操作范围 下面,我会将此秘诀 亲自传授于你。秘诀解析先列一些常用的 Vim 招式给你瞧瞧,看你是否是传说的练武奇才:123456c2w —— 删除当前光标后紧邻的两个单词,并转换为普通模式dip ——..
更多使用telegram bot实现的报警工具
个人的程序的报警很多人都用的 server 酱 之前我也是用这个的 个人使用的时候确实非常方便 但是因为 server 酱是基于微信公众号的 所以如果要发送个多人 或者分组发送消息 还是不是很方便 于是自己开始准备用 wepy 来做这个工具 结果发现貌似itchat接口被封掉了 issues 不得不寻求其他的方法最终找到了telegram 不得不说 虽然是聊天工具 但是对开发者还是相当友好的 各种接口都有提供 而且提供了一个非常强大的机器人系统 可以进行各种操作 而且流程非常简单 创建自己的机器人搜索BotFather 这个帐号 然后发送/start开始对话 BotFather是telegram的一个机器人帐号 用来管理所有用户创建的机器人 开始对话之后 会提示你进行各种操作 来创建和管..
更多你有所不知的 margin 属性
你真的了解的 margin 属性吗?前言致谢本文总结于 张鑫旭老师的 CSS 深入理解之 margin 课程,感谢张老师的辛苦付出!难学的 CSS作为前端狗的我们,每天都要和网页打交道。当 UI 将设计稿发给你时,CSS 的知识便显得尤为重要。而 CSS 这一标记性的语言,却时常让我很头疼:毫无逻辑性,并充满了各种坑爹的潜规则 ,以至于每次做项目时,大部分时间精力都浪费在了调整布局与样式上,详情可点击知乎上的为什么 CSS 这么难学?问题,道出了我的心声 :(但谁叫我们是吃这碗饭的呢,不管怎样,有困难必须迎面解决,学好 CSS ,向张老师看齐!正文margin 算是性格刚烈的属性了,下面,我将从各个方面讲解 margin 的可怕之处。元素尺寸的影响通常一个元素的尺寸可分为:可视尺寸 与 占据尺寸可视尺寸 ..
更多Git 修炼手册
Git 命令大汇总。入门配置用户信息git config –global user.name Simon设置自己的用户名git config –global user.email jinmaup@gmail.com设置自己的邮箱查看配置git config –list查看自己 git 的配置信息设置编辑器git config –global core.editor vim当你用 git 编辑文件时,编辑文件的文本编辑器会默认调用 vim文本着色git config –global color.ui true可为大部分 git 的代码布上颜色基础命令建立版本库git init当前路径文件 初始化为 Git 仓库(可以发现 当前路径增加了.git 文件夹)git init 文件夹名新建一个文件夹,并将其初始化..
更多js的GPU计算2之webgl
上篇讲了个如何使用gpu.js这个库来进行简单的gpu计算 虽然简单易用 但是本身的局限也很多 目前这个库也不是非常完善 有待改进 那咱就从原理开始 来自己搞一个吧 当然 并不是指实现一个这个的通用的库 而是使用相关原理 完成一个是用GPU计算的demo 当然还是矩阵的乘法前端使用GPU的能力是通过webgl实现的 更加广泛的理解的可以认为是通过canvas来说实现的 canvas估计对大多数前端来说并不陌生 canvas有许多个像素组成 每个像素的颜色可以有RGBA四个维度表示 每个维度范围为0-255 既8位 把RGBA表示成数值的话 那每个像素可以存32位 这就是前端使用gpu计算最为核心的一点 每个像素可以存储一个32位的值, 刚刚好就是一个int或者uint0...
更多