逸飞的技术日志

feed:https://yifei.me/feed
cron:8 20 * * 5
blog:https://yifei.me/
FastAPI 中的依赖注入和插件系统
published:Sat, 23 Apr 2022 01:06:29 GMT
依赖注入用于把一些可复用的逻辑抽离出来,减少代码重复。例如,返回列表的 API 中都会用到 page和 page_size 这几个参数,那么可以创建一个依赖来包含这两个参数。还可以使用依赖来做插件,如在依赖中做一些 Token 的验证等等。所以,在 FastAPI 中,不需要插件系统,只要把要复用的...
使用 multipass+autok3s 快速搭建本地 k3s 集群
published:Thu, 28 Apr 2022 03:56:40 GMT
最近要迁移一个老服务到 kubernetes 上,自然需要在本地先测试好,然后再部署到生产集群中。然而 Docker Desktop 性能实在太差,而且已经不再免费了,所以研究了下其他工具,遂有本文。用到的工具multipass 是 Ubuntu 背后的厂商 Canonical 推出的一款虚拟机工具...
Kubernetes is boring enough for me
published:Mon, 23 May 2022 01:44:05 GMT
Kubernetes is the new normal. Everyone knows and understands kubernetes, it's the defaultoption for now. Rolling out your own infra would be more expe...
迁移并升级 Elasticsearch 5.5 到 6.8
published:Mon, 23 May 2022 01:44:05 GMT
最近需要把一个 ES 5.5 的集群迁移到 K8S 上,因为目标环境中只有 ES 7 集群,所以在迁移过程中还需要升级下索引的版本。不过最终只升级到了 6.8。开始看到了一个 reindex 的 API,想着直接从老集群 reindex 过去就好了,结果发现不行。直接reindex 会丢掉类型信息。...
和风车决斗的堂吉诃德
published:Mon, 23 May 2022 15:41:15 GMT
今天不谈论代码了,写代码也救不了中国人。我们知道一个病毒的传播能力可以用 R0 来表示,即每个患者传染的新患者的数量。我们又知道,社会上除了占大多数的遵纪守法好公民,还有目无法纪的奸商、涣散烂漫的小市民和一小撮玩忽职守的领导干部。因此,当局制定的政策的传达效力是有限的,我们只能指望其中的好公民去 1...
单元测试的笔记和心得体会
published:Fri, 07 Oct 2022 16:01:40 GMT
编写优质测试的前提明确最小单元,以及单元的功能点都有哪些。如果在写代码之前都没有明确功能有哪些,或者编写 功能已经跑偏了,那么测试究竟测些什么呢?确定方案能够解决问题,然后再写测试,否则是徒劳的。编写测试的基本原则每一个测试单元必须完全独立。每一个必须能够独立运行,以及在其他的测试组中组合运行,不管...
kubectl 备忘录
published:Sat, 04 Jun 2022 08:20:08 GMT
查看集群资源获取各种资源列表:# -o 指定范围格式,-o wide​​ 用来显示更详细信息kubectl get node/pod/deploy/node/svc -o wide/yaml/name描述详细信息:# -n 指定命名空间kubectl describe node/pod/deploy...
curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库
published:Sat, 28 Jan 2023 10:08:05 GMT
越来越多的网站开始使用 TLS 指纹反爬虫,而 Python 中竟然没有任何方法解决这个问题。前一阵看到由国外大神写了一个 curl-impersonate 命令行工具,可以完美模拟主流浏览器的指纹,遂用cffi 封装成了 Python 库 curl_cffi,这样就可以继续愉快地写爬虫啦!TLS ...
useReducer + useContext = (Better) Redux
published:Mon, 31 Oct 2022 13:45:05 GMT
useState 是 React 开发中最常用的一个钩子。但当程序稍微复杂一些的时候,只依赖 useState 就显得有些力不从心了,这时候需要一个全局状态管理工具。在我刚接触 React 时,看到的教程一般都推荐 redux,在经历过无数次的尝试之后,我发现以我的智商理解不了 redux 神奇的设...
为什么不要加入创业公司
published:Sat, 19 Aug 2023 10:13:41 GMT
据统计,92% 的创业公司,活不过三年,一定不要盲选创业公司,为了创业而创业。你以为在中关村摆个柜台,十年之后就一定可以成为刘强东么?还有一个更搞笑的说法,说什么创业公司最大的财富都是在最后一个阶段产生的,所以任何时候上车都不晚,实际上这纯属扯淡。你在第一年加入,以后可能是一万倍的收益,而在最后一年...
FastAPI 使用路由模块化
published:Sat, 19 Aug 2023 12:12:30 GMT
FastAPI 中的 router 相当于 Flask 中的 Blueprint, 用来切分应用到不同的模块。# views/users.pyfrom fastapi import APIRouterrouter = APIRouter()@router.get("/me")def myinfo()...
GitHub Actions 的简单使用和调试
published:Sat, 19 Aug 2023 12:12:30 GMT
GitHub Actions 使用 yaml 配置,必须放置在 .github/workflows 目录。# 名字name: hello-world-example# 环境变量env: FOO: bar# 触发条件on: # 最常用的是 push 条件,如果留空,表示每次 push 都执行。 ...
just​​,一个现代版的 make​​
published:Sat, 19 Aug 2023 12:12:30 GMT
我们知道 make 包含了两个主要功能:构建 C 工程运行具有依赖关系的任务而由于 make 的时代太过久远,导致现在用起来会有几个坑爹之处:声明变量语法奇怪每次都加 .PHONY 很麻烦配置 SHELL 也很反直觉多行命令不在同一个 shell 中运行必须用 \t 缩进另一方面,我也只需要运行任务...
使用 SQLite 作为文档数据库
published:Sat, 19 Aug 2023 12:12:30 GMT
本文需要 SQLite = 3.31.0(2020-01-22)在 SQLite 的新版本中已经支持了 json 函数 (json_extract),我们完全可以把它当做一个文档数据库使用。而且更妙的是,还可以直接添加"合成列"(generated column), 也就是使用 json 中的字段作...
在子线程中 fork 会怎样?
published:Sat, 19 Aug 2023 12:12:30 GMT
按照 posix 的规范来说,fork 之后的进程中,应该只有调用 fork 的那个线程。但是实际上,所有线程都在,只是除了调用 fork 的线程以外,其他线程都被冻结了,并不会执行。一般来说,在 fork之后继续执行 exec* 的话,是不会有什么大问题的。fork 复制的是整个进程的空间,锁也会...
在 Python 中使用 SQLite
published:Sat, 19 Aug 2023 12:12:30 GMT
首先连接到数据库,获得 connection 对象,然后再获得 cursor,使用 cursor 来执行 sql 语句并获取结果。连接import sqlite3db = sqlite3.connect("database.db") # connectionsdb.execute("CREATE ...
代码大全阅读笔记(待续)
published:Sat, 19 Aug 2023 12:12:30 GMT
TODO: 总结作为技术员工,你的一部分工作就是培训周围的非技术人员,讲解开发过程。在软件开发过程中,如果需求被污染了,那么他就会污染架构,而架构又会污染构建。这样会导致程序员脾气暴躁、营养失调;开发出的程序具有放射性污染,而且周身都是缺陷。发现错误的时间要尽可能接近引入错误的时间。问题定义应该用客...
读书的乐趣
published:Sat, 19 Aug 2023 16:33:25 GMT
有一天,一个叫 Alice 的六岁小女孩打来电话问了一个问题。她问,我是个好孩子,我弟弟是个坏孩子。爸爸妈妈要求我们每晚 9 点上床睡觉,每一次我都很听话,按时上床。可弟弟却不听话,每次要一个苹果才肯上床,而他居然每次都能得逞。我也想要一个苹果,但父母从来不给我。为什么弟弟是个坏孩子,他总能得到苹果...
Podman 对比 Docker 使用笔记
published:Sat, 19 Aug 2023 12:12:30 GMT
podman 基本上和 docker 命令兼容没有 daemon,默认不使用 root可以导出 k8s 部署配置可以一键停止删除所有容器,stop -a, rm -a, rmi -a 等增加了 -l、--latest 选项,直接操作上一个 container,而不需要找到 id 然后再操作。Podm...
Linux 命令行压缩工具
published:Sat, 19 Aug 2023 12:12:30 GMT
压缩文件主要分四类:tar.gz 或者 tgz 文件zip 文件rar 文件,Linux 下几乎没有7z 文件tar.gz 文件压缩tar cvzf FILES...解压tar xvzf TARBALLzip 文件zip -r ZIPFILE DIRECTORY to zip a directory...