用AI挣钱之AI建站:二维码生成器工具

我想着网站越多应该越能挣到钱,然后悲剧了。

2025/9/15
articleCard.readMore

用AI挣钱之AI建站:https://markdowntopdf.top

最近在B站看了一个大佬分享自己网站收益的视频,总共4个网站,一个月总收益是160刀左右,然后我大为触动,虽然大佬觉得不多(我觉得是自谦),但是我觉得超级多了,相较于我自己的技术博客网站(现在每个月收益0.06刀),那简直是一个天上一个地下。

2025/9/14
articleCard.readMore

Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案

之前的文章: Cloudflare workers不完全指南" Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust 前面几篇文章,咱们研究了Workers的各种功能。今天,我要跟你聊点更实用的——用Cloudflare Workers的Static Assets功能来托管网站。你可能会想:“托管网站?这不是有GitHub Pages、Vercel这些免费方案吗?” 莫急,听我娓娓道来,告诉你为啥Workers + Static Assets可能是你见过最香的免费托管方案!

2025/7/26
articleCard.readMore

Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust

之前的文章: Cloudflare workers不完全指南" Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(四):托管和分发静态文件 如果你看过这个系列的其他文章那么基本上可以玩转workers,唯一的痛点可能是你不擅长或者不喜欢javascript,不喜欢javascript也没关系,只有用其他编程语言呗,如果你喜欢python和rust的话!

2025/7/23
articleCard.readMore

Cloudflare Workers实战(四):托管和分发静态文件

之前的文章: Cloudflare workers不完全指南" Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(三):实现认证、重定向与缓存 前面几篇,咱们把Workers当成了一个“动态处理器”,玩转了请求,响应,缓存,认证,重定向等。但如果我告诉你,Workers还能当个静态文件服务器用,你信吗?没错,这货还能干Web Server的活儿!

2025/7/21
articleCard.readMore

Cloudflare Workers实战(三):实现认证、重定向与缓存

之前的文章: Cloudflare workers不完全指南" Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare Workers实战(二):动态修改后端响应 咱们前面两篇,把请求和响应这两大块给盘得明明白白了。现在,是时候发散一下想像力了!今天我们来看看怎么用Cloudflare Workers实现认证、重定向和缓存这三大金刚。

2025/7/19
articleCard.readMore

Cloudflare Workers实战(二):动态修改后端响应

之前的文章: Cloudflare workers不完全指南" Cloudflare Workers实战(一):随心所欲操作客户端请求 书接上回,在上一篇文章里,咱们聊了怎么在请求到达服务器之前,像个“中间人”一样对它“动手动脚”。这次,咱们把视角翻转一下,看看当服务器把响应(Response)辛辛苦苦准备好,准备发回给浏览器时,我们又能怎么在半路上把它截胡,然后来一波骚操作。有了它,你就能对响应内容进行实时、动态的修改。想想看,这意味着什么?

2025/7/17
articleCard.readMore

Cloudflare Workers实战(一):随心所欲操作客户端请求

之前的文章: Cloudflare workers不完全指南" 首先来看看Cloudflare Workers最基础也最强大的能力之一:处理客户端请求。在请求到达源服务器之前,对客户端发起的HTTP请求进行全面的“增删改查”操作。这让我们可以在网络边缘(Edge)(不知道啥叫网络边缘也没关系,反正就是在后端之前的一个代理)处理流量的超能力,无需改动任何后端代码,就能实现许多非常复杂的功能。

2025/7/15
articleCard.readMore

Cloudflare workers不完全指南

众所周知的是互联网山有一个超级知名的大善人,此人被世人尊称为赛博佛祖,你只需要自己拥有一个域名就能在上面解锁很多强大的功能,包括但不限于防火墙,workers,域名解析,邮件服务等。

2025/7/13
articleCard.readMore

使用n8n创作短篇小说

需要提前说明的是,本人不会使用本工作流用来写小说并投稿只是用于研究目的,因为写小说这个工作流感觉不简单也不算太复杂,适合用来深入n8n的使用。

2025/5/20
articleCard.readMore

水果风波:信任的代价

内容由AI生成…

2025/5/20
articleCard.readMore

用Python将PDF文件转换成图片

这个问题其实不是太复杂,可以通过在线的工具或者付费的工具完成,但是在线服务需要将文件上传到别人手里,而付费工具一般需要买会员,仅仅用一下就开个会员实在麻烦,再者批量搞起来也不方便,所以搜索了一下相关代码,代码是Python语言。

2024/6/8
articleCard.readMore

rust网络框架Pingora源码阅读3

这应该是Pingora源码阅读的最后一篇文章,之前介绍了Pingora中两个比较重要的概念, Server和Service, 本篇文章着重于监听服务的钩子函数, 这也是我们主要写业务代码的地方。

2024/4/6
articleCard.readMore

rust网络框架Pingora源码阅读2

上次主要阅读了Pingora的Server部分的代码, 本文阅读Pingora另一个比较重要的部分Service, Pingora内置两种服务background(后台)和Listening(监听), 本文着重后者。

2024/3/30
articleCard.readMore

rust网络框架Pingora源码阅读1

要想深入Pingora应该是需要阅读源代码的,所以分析一下源代码,虽然Pingora没有提供丰富的示例,但是提供了一些不错的文档,比如它的internals.md文档,提供了很多细节和示意图,本系列文章会引用很多其中的示意图,Pingora的源码分析应该会分为2篇文章或更多。

2024/3/23
articleCard.readMore

Pingora快速入门教程1之总览

Pingora一直是我比较期待的项目,所以写个入门系列教程吧。之前研究过一些其他产品,比如nginx, nginx-ingress, apisix, bfe等, 前三者植入业务基本靠lua或者说openresty 而bfe的社区实在是一言难尽, 所以我认为Pingora会成为Rust的明星项目,虽然没达到预期,但至少提供了一个框架,一个社区。

2024/3/16
articleCard.readMore

Rust模板引擎askama快速入门引擎

模板引擎很多时候还是很有用的,无论是后端渲染网页还是生成一些文本,其中以Jinja比较出名,而本文的Rust库askama正是Jinja的Rust版实现,如果你对Jinja的语法比较熟悉的话,使用askama应该不会太难上手。

2024/2/17
articleCard.readMore

使用Loco快速搭建自己的后台系统

除非是为了学习,不然数据的增删改查写起来是很无聊的,所以出现了相关的代码库,将这些操作给封装起来,Rust也是有类似的框架的,而且不止于此,比如本文的Loco.rs它提供类似Ruby on Rails的相关功能,可以很快的搭建起来一个后台。

2024/2/10
articleCard.readMore

用Rust发一封图文并茂的邮件

这篇文章的内容其实和之前的文章《用Python发一封图文并茂的邮件》差不多,跟之前不同之处在于之前是使用Python来完成邮件的发送任务,而本文使用Rust发送邮件而已。

2024/2/3
articleCard.readMore

Rust小项目: 写一个简单的恶意流量阻断器

当服务暴露在公网的时候,要时刻注意安全,因为会有各种爆破工具在网上不间断的无差别攻击,所以需要做一定的防护措施,比如使用fail2ban这样的服务来屏蔽一些恶意流量,而fail2ban的逻辑并不复杂,所以用Rust写一个玩玩,就当练练手了。

2024/1/27
articleCard.readMore

Rust小项目: 写一个简单的网页爬虫

本文主要是对之前reqwest库的一个简单的扩展,通过写一个简单的爬虫项目来练习练习Rust, 爬虫有用也有趣,但是不要给目标网站造成过大的压力,否则可能会触犯法律,切记切记。

2024/1/20
articleCard.readMore

Rust命令行库Clap快速入门教程

几乎所有编程语言都是支持命令行库, Rust自然也不例外, 不过Rust标准库不支持,而是第三方库支持,比较常用和主流的是Clap这个库, 通过它可以很简单的组建自己的命令行工具,这样就不用花太多时间放在参数处理上了。

2024/1/17
articleCard.readMore

Rust小项目:用Rust写一个端口扫描器

Rust作为一门通用编程语言,系统级的编程语言写个端口扫描器并不是太复杂,所以本文也会将太多的精力放在怎么扫描上,而是更多的时间放在如何利用Rust快速的扫描和探测端口,即尽可能高并发的完成这个任务,本文从单线程到多线程,最后到异步,算是一个练手项目吧。

2024/1/13
articleCard.readMore

Rust真全栈开发快速入门

虚假的全栈开发,前端后端分离然后分别使用不同的编程语言来开发前后端,真实的全栈开发,前后端全用Rust编程语言,无需打开两个项目分别维护,本文使用的技术栈是Leptos, tailwindcss, trunk。

2024/1/6
articleCard.readMore

rust声明宏快速入门教程

Rust支持两种宏,一种是声明宏,一种是过程宏,前者相较于后者还是比较简单的。本文主要是讲解Rust元编程里的声明宏,通过声明宏可以减少一些样板代码,它是一个用代码生成代码的技术。

2024/1/6
articleCard.readMore

Rust文本处理快速入门教程

编程过程中有许多类型的数据要处理,其中文本处理必不可少,本文主要是记录在使用Rust开发的过程中处理文本相关数据的一些代码,而文本可以分为结构化和非结构化的文本,比如JSON和小说文本(没有固定格式的文本)。

2023/12/31
articleCard.readMore

RUST web框架axum快速入门教程6之测试

本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。

2023/12/30
articleCard.readMore

白嫖免费的Rust在线运行时shuttle

一个总是在线的服务还是很有吸引力的, 通过shuttle可以托管自己的rust应用, 对于资源要求不多的应用或者仅仅简单的测试还是很有用的。

2023/12/24
articleCard.readMore

RUST web框架axum快速入门教程5之中间件

本文主要讨论axum的中间件,这也是axum与其他rust web框架极大的不同点,其他框架都定义了自己的接口,而axum直接使用tower的Servvice和layer的概念, 而tower已经存在一大堆通用的中间件了,所以axum也就自带了一大堆开箱即用的中间件。

2023/12/23
articleCard.readMore

用Rust来做以太坊开发5之事件日志及签名

本系列文章主要是用Rust的ethers-rs来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。

2023/12/17
articleCard.readMore

《英语语法分解大全》读后感

本文主要是《英语语法分解大全》的学习总结,这本书感觉适合有一定英语基础,但是英文水平不上不下的读者,比如我自己,我的英文水平绝对不好(现在也不是非常好), 但是也不算太差,不好是因为我不太敢说和写,原因在于我无法确定自己说的句子是语法正确的,不算太差是在于大多数英文的编程资料(仅限于编程资料)即使不依靠翻译软件我也能看懂个七七八八,还有一两成在于复杂的句子看不懂,也没有思路,而这本书让我有了说和写的自信(虽然我还是不太敢说和写),以及在自己词汇量的范围内应该可以读懂个八九不离十了,至于自信的用英文交谈和读写估计需要大量的练习。

2023/12/16
articleCard.readMore

RUST web框架axum快速入门教程4之路由

本文主要讨论axum的路由,通过路由我们可以灵活的来将不同的请求路径路由到不同的handler,也能自由的组合不同的路由对象来处理请求。

2023/12/16
articleCard.readMore

用Rust来做以太坊开发4之智能合约

本系列文章主要是用Rust的ethers-rs来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。

2023/12/10
articleCard.readMore

RUST web框架axum快速入门教程3之状态共享

本文主要讨论axum的状态共享,通过状态共享我们可以减少不必要的对象反复创建以及状态共享,共享状态的一个常用场景是共享数据库连接,通过复用数据库的连接对象可以极大的提升数据库操作效率。

2023/12/9
articleCard.readMore

用Rust来做以太坊开发3之交易

本系列文章主要是用Rust的ethers-rs来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 算是ethers-rs的快速入门教程, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。

2023/12/3
articleCard.readMore

RUST web框架axum快速入门教程2之响应构造 n

上一篇文章讨论了axum如何获取参数,这一节看看axum是怎么构造响应内容的,如果你还不知道如何处理axum的请求参数,可以阅读我之前的文章: https://youerning.top/post/axum/quickstart-1。

2023/12/2
articleCard.readMore

用Rust来做以太坊开发2之账户

本系列文章主要是用Rust的ethers-rs来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 算是ethers-rs的快速入门教程, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。

2023/11/26
articleCard.readMore

RUST web框架axum快速入门教程1之参数获取

rust的tokio是一个很棒的异步运行时,所以tokio出品的axum大概率也是个很棒的框架,处于对异步编程和tokio的喜欢,所以我打算以后都使用axum作为web开发的首选框架。

2023/11/25
articleCard.readMore

用Rust来做以太坊开发1之客户端

本系列文章主要是用Rust的ethers-rs来复刻《用Go来做以太坊开发》这本书本的内容,所以本系列文章的标题叫做《用Rust来做以太坊开发》, 算是ethers-rs的快速入门教程, 因为原书写得足够好了,所以本系列更多的只是代码层面的复刻,不会说明太多相关的基础知识。

2023/11/19
articleCard.readMore

我受够了前端的复杂性了

虽然前端的工具在不断的迭代并尝试让工具的配置尽可能的简单,但是还是太重了,在开发一些简单的页面的时候我根本就不要什么虚拟DOM, 什么MVVC, 最重要的是,我不想要单独维护一个代码仓库, 所以对应简单的页面,我决定重新走后端渲染前端页面的老路。

2023/11/18
articleCard.readMore

go-ethereum开发之RPC调用教程

如果只是简单的获取ethereum节点的数据那么go-ethereum提供的ethclient完全足够了,可是如果涉及一些更自定义,更独特的接口,比如debug_traceBlock等以debug开头的rpc方法,那么只能自己构造请求和解析响应了。

2023/11/11
articleCard.readMore

RUST异步数据库工具库sqlx快速入门教程

数据最终还是要落到某个地方的,很多时候都是关系型数据库,所以数据库的学习是必不可少的, 本教程主要记录sqlx的一些常用代码片段,便于快速掌握sqlx的增删改查操作(CRUD)。

2023/11/4
articleCard.readMore

Rust HTTP客户端reqwest源码阅读

这篇文章主要是阅读reqwest的源代码, 而底层关于hyper的实现这篇文章浅尝辄止, 仅仅只是过一下hyper请求的大致流程,以后对rust的掌握程度更高之后在看hyper的源代码。

2023/10/28
articleCard.readMore

Rust HTTP客户端reqwest快速入门教程

reqwest是rust中比较知名和流行的一个http客户端, 这篇教程主要是收集了reqwest一些常用的代码片段,便于以后直接复制使用,文章结构主要是对标之前go语言的net/http客户端的快速入门教程。

2023/10/21
articleCard.readMore

kubernetes kube-apiserver源码阅读8之Hook

阅读kube-apiserver的过程中,会发现很多的AddPostStartHook的代码,这部分代码用于执行kube-apiserver启动之后的逻辑,因为他们放在启动后执行更适合,所以就提供了两种钩子(Hook), PostStartHook和PreShutdownHook。这里只看PostStartHook,并且只看bootstrap-controller对应的钩子函数。

2023/10/14
articleCard.readMore

kubernetes kube-apiserver源码阅读7之服务发现

从前文我们已经了解到kube-apiserver内部有三个组件,分别是apiExtensionsServer,kubeAPIServer,aggregatorServer, 为了方便用户扩展,所以存在apiExtensionsServer, 因为k8s有自己的核心资源,所以需要kubeAPIServer, 为了将两者结合起来所以需要aggregatorServer, 那么aggregatorServer怎么两者的资源集中在一起并提供给用户查询呢? 本文尝试从k8s的源代码中找到问题的答案。

2023/10/7
articleCard.readMore

kubernetes kube-apiserver源码阅读6之准入控制

之前看过kube-apiserver请求处理链的相关内容,知道一些通用逻辑,如认证,鉴权,审计之类的内容都以一种链条的方式组合在一起依次调用,但是这些处理函数中并不包含准入的业务逻辑,之所以这样,我想是因为准入只针对修改请求,所以放在通用的处理链中会不太和谐,再者就是准入是比较重要的抽象,所以单独抽离出来了。

2023/9/30
articleCard.readMore

将静态网站上传到IPFS网络

很早就想将自己的网站上传到IPFS上了,但是将网站上传到IPFS网络容易,让它一直存在却不容易,因为IPFS网络并不会永远保存上传的数据,只有热点数据才有可能一直被IPFS网络保存,最近搞了一个便宜的服务器可以运行IPFS服务,所以才有了这篇文章。

2023/9/30
articleCard.readMore

kubernetes kube-apiserver源码阅读5之路由

这里一节主要看kube-apiserver的路由注册和最终映射到后端存储的处理函数是怎么构造的,kube-apiserver中一共有三个组件,apiExtensionsServer,kubeAPIServer, aggregatorServer,每个组件都有路由注册,但其实核心逻辑是差不多的。

2023/9/23
articleCard.readMore

kubernetes kube-apiserver源码阅读4之鉴权

如果认证成功,那么客户端的可以标识成了一个用户了,而这个用户一般至少拥有两个信息,用户和用户组。通过这两个信息就可以给用户鉴权了。

2023/9/16
articleCard.readMore

kubernetes kube-apiserver源码阅读3之认证

kubernetes代码版本: v1.20.2 从前文我们知道,认证,鉴权,审计等操作的并没有集成在GenericServer里面,所以本文看看这个请求链是怎么工作的。

2023/9/9
articleCard.readMore

百度开源网关BFE源代码阅读4之模块

据我所知,所有开源负载均衡都会提供至少一种扩展机制,BFE也不例外,BFE通过模块的选择可以更精细的控制BFE在处理请求中的各个阶段。如果内置模块不能满足自己需求,那么可以自己开发模块,而BFE是用Golang写的,所以开发效率很高。

2023/9/8
articleCard.readMore

百度开源网关FE源代码阅读3之路由实战

如果你还是不懂怎么配置BFE的路由,个人觉得,这是正常的,但是如果之前的文章让你有了Host, HostTag, Product, Cluster的概念就够了。本文尝试配置一些示例配置文件的来继续讲解BFE的路由机制。

2023/9/7
articleCard.readMore

百度开源网关BFE源代码阅读2之路由

前文了解了BFE的启动流程,本文深入一下BFE的路由部分,当我们了解了BFE路由机制,就可以理解BFE的配置文件,也就可以使用BFE了。但是说实话,BFE的路由规则相对于其他产品有点反直觉,因为我使用的还不多,姑且这么说吧。

2023/9/6
articleCard.readMore

百度开源网关BFE源代码阅读1之启动

BFE是一个功能强大的网关。 因为BFE是用Golang写的,所以值得一看,但是它的用户体验实在是一言难尽。

2023/9/5
articleCard.readMore

go-ethereum开发之获取交易中的From字段

go-ethereum版本: v1.12.2 由于以太坊(ethereum)在不断的发展, 所以协议也在不断的改进,如果你看过《用Go来做以太坊开发》,你会发现其中关于查询交易的那一节中的获取交易的发送者From这部分代码在最新版本中已经失效了,本文主要演示当前以太坊(ethereum)最新版本获取的获取方式。

2023/9/3
articleCard.readMore

kubernetes kube-apiserver源码阅读2之GenericAPIServer

kubernetes代码版本: v1.20.2 前一节大致看了一下apiserver 的启动流程,以及组成kube-apiserver的三个组件,这一节看看三个组件都会用到的一个非常重要的对象GenericAPIServer, 它是一个HTTP Server的抽象, 虽然这么说很抽象。它会提供注册路由的入口以及各种钩子函数的注册入口。

2023/9/2
articleCard.readMore

kubernetes kube-apiserver源码阅读1启动流程

kubernetes代码版本: v1.20.2 个人认为kube-apiserver是k8s中最核心的组件,承上启下,无论是k8s其他组件还是是外部客户端都需要跟kube-apiserver组件进行交互,kube-apiserver负责接受请求并将数据持久化到后端存储(一般来说就是etcd.)。

2023/8/26
articleCard.readMore

Kubernetes系列

Kubernetes系列 如果文章中出现错误还请留言指正 Kubernetes官方组件 kubectl: Kubectl源码阅读0 Kubectl源码阅读1 Kubectl源码阅读2 kube-apiserver: kube-apiserver源码阅读1启动流程 待更新 kube-apiserver源码阅读2之GenericAPIServer 待更新 kube-apiserver源码阅读3之认证 待更新 kube-apiserver源码阅读4之鉴权 待更新 kube-apiserver源码阅读5之路由 kube-proxy: kube-proxy保姆级别源码阅读 Kubernetes扩展组件 ingress: ingress-nginx 保姆级别源码阅读 client-go文章列表: 快速入门client-go源代码之总纲 快速入门 client-go源代码之配置加 快速入门client-go源代码之静态客户端 快速入门client-go源代码之动态客户端 快速入门client-go源码之RESTClient 快速入门client-go源码之Scheme编解码 快速入门client-go源码之发现客户端 快速入门client-go源码之RESTMapper 快速入门client-go源码之选举 快速入门client-go源码之Informer

2023/8/26
articleCard.readMore

kubectl源码阅读2

书接上回,继续看kubectl 删除, 更新, 查询操作的源代码。因为之前已经介绍了kubectl一些常用的设计模式和代码结构,所以本文会比较快的阅读其他操作的代码。

2023/8/19
articleCard.readMore

Kubectl源码阅读

如果不知道怎么用client-go,那就看看kubectl的代码吧,kubectl除了是一个比较优秀的命令行工具之外,还提供了比较好的代码实现,通过看kubectl的代码我们可以抄到很多有用的代码片段。

2023/8/12
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之Informer

只要读k8s源代码一定会读informer的代码的,因为informer相当优秀,大多数分布式项目(比如OpenStack)在解决组件间通信的问题时都会选择如kafka,rabbitmaq之类的消息队列,但是k8s不走寻常路,选择了自己解决,解决的方案是informer。

2023/8/5
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之选举

client-go提供了许多有用的工具,其中就包括选举,通过选举的功能,我们可以同时运行多个业务实例,多个实例之间互为备份,并且同一时刻只有一个实例运行。

2023/7/29
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之RESTMapper

虽然k8s的发现客户端可以实时的获取k8s集群的所有资源,但是并不是直接面向用户的接口,因为解析这些资源组版本是一个乏味和无趣的过程,所以在此基础上client-go提供了RESTMapper来帮助用户映射和发现要找的资源。

2023/7/22
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之发现客户端

之前介绍了client-go的静态客户端,动态客户端,本文主要讲解一下发现客户端的源代码,发现客户端用于发现k8s集群现有的资源,包括但不限于内置资源,可以获取当时k8s集群中的所有资源,通过发现客户端我们可以确定当前器群存在哪些资源及其对应的版本。

2023/7/15
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之Scheme编解码

本文主要讲解k8s源码中基于Scheme的编解码机制, Scheme就像一个类型大管家,内部注册了各种GVK, 所以使用静态客户端的时候,我们才能无感的直接得到静态类型的指定对象,而不是像动态客户端得到一个Unstructured。

2023/7/8
articleCard.readMore

golang net/http源代码阅读

golang的net/http包同时支持客户端和服务端,而本文主要分析客户端的代码,通过查看源代码可以更好的理解net/http的使用,也能好好的学习一下golang官方的代码风格。

2023/7/1
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之RESTClient

之前无论是讲解静态客户端还是动态客户端都可以略过了client-go底层的RESTClient的构造过程,这篇文章主要分析RESTClient的构造和请求过程,k8s的API都遵循RESTFul规范,所以客户端自然可以以对应的约定形式构造,所以叫做RESTClient。

2023/7/1
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之动态客户端

与client-go静态客户端相对应的自然就是动态客户端了,动态客户端的价值在于灵活,不用重新生成客户端代码就能访问k8s集群中的所有资源,即使是非内置资源。

2023/6/24
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之静态客户端

client-go的客户端可以分为两类,一类称为静态客户端,另一类称为动态客户端,前者的好处在接口已经固定,在写代码的时候有很好的提示,坏处是无法访问非k8s内置资源,后者的好处是够灵活,但是需要使用者知道GVK/GVR等前置知识。两者各有好处,需要根据自己需要选择。

2023/6/17
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之配置加载

从上一篇文章,我们知道使用client-go操作k8s的资源基本分为三步,1. 配置加载,2. 创建客户端,3. 使用接口,这一篇文章主要专注于使用client-go时的配置加载, 而配置加载,主要是加载认证和连接信息。

2023/6/10
articleCard.readMore

打造自己的New Bing AI对话机器人

虽然New Bing是免费的,但是国内访问还是存在一些问题的,所以有大佬做了一个类似于代理New Bing的项目来使用New Bing Ai, 当New Bing可以在国内使用的时候,这个项目就会失去活力,但是对于想马上无痛使用New Bing的童鞋,可以自己搭建或者直接使用演示站点。

2023/6/8
articleCard.readMore

k8s client-go快速入门教程及源代码阅读之总纲

client-go是kubernetes官方维护的一个go语言客户端,用于与k8s集群交互,使用client-go可以很方便的完成k8s的二次开发(似乎也必不可少),无论是稳定性还是健壮性都有充分的保障。

2023/6/3
articleCard.readMore

Golang net/http 客户端快速入门

golang内置了非常多优秀的库,net/http是其中之一,net/http不只是一个http客户端,它还实现了服务端,鉴于它非常贴心的设计,基于net/http做一个web server是一件非常容易的事情,但是本文主要聚焦于http客户端相关的功能。

2023/5/27
articleCard.readMore

Golang配置管理viper快速入门教程

几乎所有程序都是可以配置的,这些配置信息一般以配置文件的方式存在,各编程语言有自己的配置管理方案,而Golang的一个非常流行和强大的配置管理库是viper, 是cobra作者写来跟cobra一起配合使用而编写的。

2023/5/20
articleCard.readMore

golang命令行cobra 快速入门教程

cobra也许是go语言现有最好的命令行框架了,在各大项目中皆有使用,比如最出名的kubernetes, 所以要写一个稍微复杂的命令行工具,使用cobra还是不错的,cobra内置了非常多有用的功能,包括但不限于,自动生成帮助文档, 生成命令行代码的脚手架工具, 智能提示等等。

2023/5/20
articleCard.readMore

python命令行typer 快速入门教程

typer的作者与著名项目FastAPI是同一个作者,作者擅长在已有库的基础上大幅度的提升用户体验,typer自然也不例外, 因为作者也大力提倡python的类型标注,所以typer的使用在Python 3.6+才能获得最佳体验。

2023/5/15
articleCard.readMore

网站流量分析

网站搭建起来之后,总是要维护的,而网站的流量分析是其中一项比较重要的任务,通过网站的流量分析我们可以得到诸如"每天多少人访问?",“哪个页面访问的最多?”, “某个页面访问了多久?",“PC端多还是手机端多?“的答案。

2023/5/11
articleCard.readMore

使用hugo搭建自己的网站

都2023年了,搭建个网站绝不是太复杂的事情,重点是如何选择而已。 建站一般有四个选择。

2023/5/8
articleCard.readMore

使用golang和bluge打造自己的全文搜索引擎

全文搜索引擎有许多,其中最出名的是elasticsearch, 无论是性能还是体验都是最顶尖的,但是对小应用来不友好,因为小应用的硬件资源比较少,所以能够通过库/模块的方式内置在应用中会是比较好的选择,就像sqlite3一样。

2023/2/22
articleCard.readMore

casbin权限模型推演

无论什么项目只要涉及到多个用户的操作都会开始考虑权限控制, 权限管理是一个很常见部分,所以出现了单独处理这个部分的开源项目,即本文要介绍的casbin项目。 casbin支持很多的编程语言, 本文选择golang作为使用语言。

2023/1/17
articleCard.readMore

一文搞定SSL证书的所有创建问题

创建SSL证书是一个很无聊的过程, 偏偏有时候它又很重要, 但是无聊的事情实在让人乏味, 以后一定会忘记, 那就写一篇比较完全的文章来说明SSL证书创建问题留作以后复制粘贴吧。 虽然TLS跟SSL不是同一个东西, 但是就当下的语境而言, 两者基本没有什么区别。

2022/12/3
articleCard.readMore

打造自己的私人DNS, 反毒化, 反广告, 加速(也许)

如果你对自己的DNS有更高的要求那么你或许可以打造一个专属于自己的DNS, 并且利用这个DNS做一些反广告的操作,又因为这个DNS是用的DNS-Over-TLS(DOT)协议, 所以可以反毒化, 因为TLS的加密特性可以防止数据在传输过程中被篡改.

2022/11/19
articleCard.readMore

500行以内写一个API网关

本文实现的apix网关代码结构基本上是借鉴了APISIX的源代码, 可以看做APISIX的一个极度缩减版本。本文的实现只依赖openresty镜像已有的库,不依赖额外的库,所以路由的实现非常简陋,也没有实现路由的持久化,但是大致实现了动态路由更新和转发, 插件机制。

2022/10/2
articleCard.readMore

APISIX源代码阅读

apisix主要是lua脚本跟openresty(或者说nginx)的组合, 流量具体转发由nginx承载, 但是按照什么规则转发用lua脚本定义. apisix在nginx之上封装了非常多功能强大有用的特性, 提供丰富的流量管理功能,比如态调整upstream, 灰度发布, 流量熔断, 认证, 观测性等。

2022/8/31
articleCard.readMore

CoreDNS源代码粗解

本文通过阅读CoreDNS的源代码来了解CoreDNS的内部机制, 通过对源代码的阅读可以让我们更好的理解并使用CoreDNS,之所以被称为粗解,是因为阅读的程度并没有太深,忽略了一些细节。

2022/8/31
articleCard.readMore

打造属于自己的IPTV直播源

免责声明: 所有资源来源于网络,并不实际存储任何资源,也不参与任何与该片相关的视频录制、剪辑、上传。若无意中触及到了版权方利益,请及时给本文留言,笔者会及时删除相关资源。

2022/8/31
articleCard.readMore

数据流可视化

这里的数据流指数据从前端流向后端的过程中途径的所有组件或者说服务,比如用户的http请求先到Nginx, 再到后端服务1, 再到发现服务,再到缓存服务,再到后端服务2, 然后是数据库,以及其他调用,总的来说就是一个请求进入的路径,如果将这样的一个过程可视化出来,我想是不错的,而这样的一个可视化也就可以做成一个监控的可视化,监控测试的连接是否可以完成的完成相应以及发现那个组件出现了问题。

2022/8/31
articleCard.readMore

Python异步编程全攻略

如果你厌倦了多线程,不妨试试python的异步编程,在引入async, await关键字之后语法变得更加简洁和直观,又经过几年的生态发展,现在是一个很不错的并发模型。

2022/7/12
articleCard.readMore

Python处理yaml和嵌套数据结构的一些技巧

分享一些用Python处理yaml和嵌套数据结构的的一些技巧,首先从修改yaml格式文件的问题出发,演变出了各个解决办法,又从最后的解决办法中引申出了普适性更强的嵌套数据结构的定位方法。

2022/6/11
articleCard.readMore

ingress-nginx 保姆级别源码阅读

ingress-nginx用于将集群内部的服务暴露给外部调用, 鉴于nginx的出色表现,所以nginx-ingress也是一个高性能的网关, 通过阅读ingress-nginx-controller的源代码可以更好的理解并使用ingress-nginx, 在理解源代码之后也可以更容易的扩展ingress-nginx. 在k8s集群内部,或者说在集群的任一节点上执行命令,访问任何资源都是没什么障碍的,但是,在集群外部呢?我们并不能直接访问pod的IP,或者service的IP,这些IP是一些内部地址,一般在外部是不会设置路由的,那么如何在集群外部访问这些资源呢?最简单的解决方式是hostPort及nodePort,通过hostPort可以在运行pod的节点监听指定接口,好处是没有端口限制,但是外部访问需要知道pod运行在哪个节点,可能会存在单点故障(当然了,你也可以每个节点都运行hostport,但是太浪费端口了),如果只有一个pod运行的话,相对于hostPort, nodePort可以在所有节点监听一个指定的端口,这样访问集群的任一节点都可以访问到所需资源,好处是不需要关心pod运行在哪个节点,但是有端口限制。除了这些限制以外,最痛苦的是每个接口一个端口,或者说一个域名一个端口,如果有一个统一的端口并且可以动态的关联配置的服务该多好。

2022/5/14
articleCard.readMore

kube-proxy保姆级别源码阅读

kube-proxy在kubernetes中扮演的角色是主机间网络流量的协同者, kube-proxy通过实时监听网络变化来管理转发和路由, 但是根据所选的cni不通以及网络类型的选择(iptables, ipvs)不同会有不同的效果

2022/5/14
articleCard.readMore

Kubernetes源码阅读大纲

保姆级别的源码阅读,死扣各个细节和代码。 代码版本: release-1.22(b68064208b29e5956cdff79a94831b52dc50d89a) 本系列主要围绕k8s的各个部分的源码来阅读。适合深入k8s内部原理的童鞋阅读,暂时没有介绍基础概念及使用的打算。

2022/5/14
articleCard.readMore

一天用Go快速搭建一个运维管理后台

只要运维成了一定的规模就一定需要一个平台来集成自己的工具链以及自己的管理方法,将自己的经验全部抽离出来变成一个个接口,方便自己也方便他人,可以更便捷的管理自己的工作,管理的东西有很多,比如资产管理(或者说CMDB), 比如运维自动化平台的封装,比如监控,比如日志平台,如果我们做了一个完整的平台往回看,会发现很多东西是比较通用的,并且在编写代码的过程中发现很多没有意思的事情,那就是数据的增删改查,用户权限管理等,这些自然是可以从头写的,但是,也许没多大必要,因为这些东西写起来实在是让人无聊和乏味。那么怎么办呢?如何将这些无聊的工作抽离出来让其他工具或框架完成?答案我想有很多,这篇文章写的一个答案是Gin-Vue-Admin。

2022/5/14
articleCard.readMore

Kubectl源码阅读

本章的任务主线任务如下 kubectl怎么启动 kubectl apply -f deployement.yaml发送了什么 kubectl logs -f deplyment/redis-leader发生了什么

2022/1/15
articleCard.readMore

写一个h5视频网站

做一个h5视频网站应该最重要的就是视频源,至于视频源从哪里来这是一个问题,不过这里提供一个很小的数据集,不要问我怎么来的,问就是网上来的^_^。

2021/9/7
articleCard.readMore

写一个全文搜索引擎(Python)

研究了一下搜索引擎的大概原理,一个可以商用的搜索引擎是比较复杂的,但是搜索引擎的内核(自认为的)还是可以写写的。本文使用Python来编写全文搜索引擎。

2021/9/5
articleCard.readMore

《趋势永存》-《海龟交易法则》读后感

虽然任何标的的市场趋势无法预测,但我坚信,一定存在趋势,无论看不看图表它都存在,只要是人参与的市场。

2021/8/20
articleCard.readMore

从tcp开始,用Python写一个web框架1

想尝试写一个web框架,不是因为Django, Flask, Sanic, tornado等web框架不香, 而是尝试造一个轮子会对框架的认识更深,为了认识更深自然不应该依赖第三方库(仅使用内置库)。

2020/6/11
articleCard.readMore

用Python选一个自己的股票池2

人的精力是有限的,所以将目光聚焦在更小的范围内,也许能够得到性价比最高的效果,基于这个目的,我们可以通过Python等编程语言来寻找股票市场中符合自己选择意向的股票列表, 即本文所说的股票池, 在这个Python构造的股票池中我们可以将更多的精力用在合适的标的上。 吾生也有涯,而知也无涯。以有涯随无涯,殆已!

2020/6/1
articleCard.readMore

用Python选一个自己的股票池1

人的精力是有限的,所以将目光聚焦在更小的范围内,也许能够得到性价比最高的效果,基于这个目的,我们可以通过Python等编程语言来寻找股票市场中符合自己选择意向的股票列表, 即本文所说的股票池, 在这个Python构造的股票池中我们可以将更多的精力用在合适的标的上。

2020/5/31
articleCard.readMore

用Python发一封图文并茂的邮件

最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱。比如没有更丰富的版本方式。当然了,并不是说表现形式越棒就是越好的通知手段,这个依个人情况而定,而我恰恰需要比较丰富的表现形式,最终还是回到了邮件,邮件真香!

2020/5/21
articleCard.readMore

从无到有用Python创造一门属于自己的编程语言1

如果你会编译原理,对其中的词法分析算法,语法分析算法足够了解,那么用什么语言来做这样的一件事情都是可以的,之所以使用Python只是因为本人会的编程语言中, Python的使用时间最长,也最得心应手。所谓性能什么的不在本文的考虑范围内, 本文主要重点是语法分析的表达式的解析,语法解析使用的是普拉特分析法,一种自顶向下的语法解析方法。

2020/2/17
articleCard.readMore

一个完整的量化交易策略

一个完整的量化交易策略指考虑到交易的方方面面,但是能不能赚钱,谁知道呢 :) 但是一个量化交易可以通过回测系统建立信心然后让其一如既往的运行,以达到让钱生钱的目的,并且是自动的。

2019/8/10
articleCard.readMore

用Python徒手撸一个股票回测框架

通过纯Python完成股票回测框架的搭建。 什么是回测框架? 无论是传统股票交易还是量化交易,无法避免的一个问题是我们需要检验自己的交易策略是否可行,而最简单的方式就是利用历史数据检验交易策略,而回测框架就是提供这样的一个平台让交易策略在历史数据中不断交易,并生成最终结果,通过查看结果的策略收益,年化收益,最大回测等用以评估交易策略的可行性。

2019/8/3
articleCard.readMore

python股票市场数据探索指北

前言 虽然同花顺之类的金融理财应用的数据足够好了,但还是有通过Python定制股票数据指标的冲动, 数据自然不会不会比前者好很多,但是按照自己的想法来定制还是不错的。

2019/7/27
articleCard.readMore

旧手机威力之看门狗

不知道大家是否有关门后又回到门口检查门是否关了的经历,反正我有,作为一个懒人应该采取一些措施,在不往回跑的前提下检查门是否关了, 而一个旧手机能够完成这个任务,本文通过将旧手机打造成看门狗的方式来解决这个问题。当然了,大多数人应该是并不需要的^_^

2019/5/18
articleCard.readMore

股市投机迷思

这里的投机主要是指通过技术分析手段发现股市中投机的机会, 基本面分析不在其中, 那么投机套利的假设在于, 股市数据(open, close, high, low, volume)能够反应出股价内在价值, 当价格在价值以下或者内在价值存在上升空间的时机即是投机的时机.

2018/8/31
articleCard.readMore

数据挖掘指南之推荐系统读书笔记

推荐系统 通过协同过滤的方式推荐相关内容.

2018/8/24
articleCard.readMore

PyalgoTrade源码阅读完结篇

PyalgoTrade的源代码阅读笔记,通过阅读源代码深入理解PyalgoTrade的回测逻辑和核心概念。 前言 本文着重于回测相关得模块。

2018/8/22
articleCard.readMore

Python高并发之asyncio

Python的asyncio经过这么长时间的发展已经趋于稳定, 能够比较好的承载高并发的需求, 并且随着时间的发展也出现了越来越多的异步库, 这些异步库如aiohttp, fastapi, asyncpg等构建了一个很好地asyncio编程生态。

2018/8/17
articleCard.readMore

pandas从入门到上楼

这是一篇介绍pandas基础概念和使用的文章,帮助初学者可以快速的理解并使用pandas, pandas是一个非常棒的数据分析工具。 数据对象 pandas主要有两种数据对象

2018/8/8
articleCard.readMore

d3从入门到出门

D3JS的一个简单的入门教程, 通过展示D3JS的基本概念和用法帮助初学者学习D3JS 基于d3js 5.5版本基础教程

2018/7/30
articleCard.readMore

minikube环境安装

记录k8s实验过程, 分享一些碰到的问题以及解决方案

2018/7/17
articleCard.readMore

穷人的分布式网络

前言: 穷人指没钱或者不愿花太多钱(我既属于前者也属于后者T_T),分布式网络主要指主机网络环境分布在不同的地理环境比如不同省或者不同国家(谁还没有一个比较便宜的国外vps不是~_~)

2018/4/13
articleCard.readMore

面子工程之IP数据可视化

我很在意的一件事情是好看,嗯,好看.以及是否有趣.虽然不一定有用. 下面是效果图,由于数据量有限,所以还不够眼花缭乱.

2018/3/28
articleCard.readMore

一个旧手机的威力

大家都知道安卓机用的是Linux内核,所以理论上Linux可做的事情,手机都能做,旧手机自然也是天然的Linux服务器, 下面列举一些有意思的事情。这里的手机主要指安卓机。

2018/3/15
articleCard.readMore

数据分析之A股市场技术分析是否可行

这里并不是为了说明技术分析可行,也不是为了说明技术分析不可行,仅是以我浅薄的知识验证一些事情,测试方法及测试结果都会公布如下.

2018/3/14
articleCard.readMore

百万级别长连接,并发测试指南

都说haproxy很牛x, 可是测试的结果实在是不算满意, 越测试越失望,无论是长连接还是并发, 但是测试的流程以及工具倒是可以分享分享。也望指出不足之处。

2018/3/12
articleCard.readMore

用python炒股

由于笔者并无深厚的数学功底也无深厚的金融知识, 所以不会在本文中引用各种高深的投资模型或数学模型,参考书籍主要是《海龟交易法则》《以交易为生》

2018/3/7
articleCard.readMore