模板引擎很多时候还是很有用的,无论是后端渲染网页还是生成一些文本,其中以Jinja比较出名,而本文的Rust库askama正是Jinja的Rust版实现,如果你对Jinja的语法比较熟悉的话,使用askama应该不会太难上手。 本文Cargo.toml所有代码的依赖 [dependencies] askama = "0.12.1" axum = "0.7.4"
虚假的全栈开发,前端后端分离然后分别使用不同的编程语言来开发前后端,真实的全栈开发,前后端全用Rust编程语言,无需打开两个项目分别维护,本文使用的技术栈是Leptos, tailwindcss, trunk。 <!--more--> Cargo.toml的依赖如下: [dependencies] leptos = { version = "0.5.4", feat
Rust支持两种宏,一种是声明宏,一种是过程宏,前者相较于后者还是比较简单的。本文主要是讲解Rust元编程里的声明宏,通过声明宏可以减少一些样板代码,它是一个用代码生成代码的技术。 <!--more--> 声明宏的主要原理是通过匹配传入的代码然后替换成指定的代码,因为替换是发生在编译器,所以rust的宏编程没有任何运行时的开销,可以放心的用,不用担心性能 :)。 快速入门 声明宏不像过
编程过程中有许多类型的数据要处理,其中文本处理必不可少,本文主要是记录在使用Rust开发的过程中处理文本相关数据的一些代码,而文本可以分为结构化和非结构化的文本,比如JSON和小说文本(没有固定格式的文本)。 <!--more--> 这里以两种格式文本为例 Nginx的访问日志 Caddy的访问日志 为了不使文章过于冗长,大家可以根据自己需要将下面的数据复制成多行,然后自行测试,
本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。 往期文章: https://youerning.top/post/axum/quickstart-1 https://youerning.top/post/axum/quickstart-2 https://youerning.t
本文主要讨论axum的中间件,这也是axum与其他rust web框架极大的不同点,其他框架都定义了自己的接口,而axum直接使用tower的Servvice和layer的概念, 而tower已经存在一大堆通用的中间件了,所以axum也就自带了一大堆开箱即用的中间件。 <!--more--> 往期文章: https://youerning.top/post/axum/quicksta
本文主要讨论`axum`的路由,通过路由我们可以灵活的来将不同的请求路径路由到不同的handler,也能自由的组合不同的路由对象来处理请求。
本文主要讨论`axum`的状态共享,通过状态共享我们可以减少不必要的对象反复创建以及状态共享,共享状态的一个常用场景是共享数据库连接,通过复用数据库的连接对象可以极大的提升数据库操作效率。
上一篇文章讨论了axum如何获取参数,这一节看看axum是怎么构造响应内容的,如果你还不知道如何处理axum的请求参数,可以阅读我之前的文章: https://youerning.top/post/axum/quickstart-1。 一般来说,现在常见的响应内容有两类,HTML和JSON, 其对应的Content-Type是text/html和application/json,前者是直接渲染前端
rust的tokio是一个很棒的异步运行时,所以tokio出品的axum大概率也是个很棒的框架,出于对异步编程和tokio的喜欢,所以我打算以后都使用axum作为web开发的首选框架。
这篇文章主要是收集了reqwest一些常用的代码片段,便于以后直接复制使用,对标之前go语言的net/http客户端的快速入门教程。
虽然前端的工具在不断的迭代并尝试让工具的配置尽可能的简单,但是还是太重了,在开发一些简单的页面的时候我根本就不要什么虚拟DOM, 什么MVVC, 最重要的是,我不想要单独维护一个代码仓库, 所以对应简单的页面,我决定重新走后端渲染前端页面的老路。 值得注意的是,我并不是要否定前端框架的必要性,我只是不想写一个简单的页面还需要单独维护一个前端项目,或者说前后端分离。对于前后端分离有必要的项目,我还
个人认为kube-apiserver是k8s中最核心的组件,承上启下,无论是k8s其他组件还是是外部客户端都需要跟kube-apiserver组件进行交互,kube-apiserver负责接受请求并将数据持久化到后端存储(一般来说就是etcd.)。
BFE是一个非常强大的七层负载均衡, 与其他负载均衡存在一些显著的差异(Product, GSLB等概念),也因为这些差异所以对于没有阅读其代码的用户在入门阶段非常的不友好,再者就是官方文档仅是一个查阅文档,这个查阅文档会的看得懂,不会的看不懂,对于教会用户怎么用实在是没有太多的帮助,所以笔者为了搞懂BFE的使用和原理只能通过查看阅读代码的方式学习,如果大家有一定的Golang编程基础,笔者推荐大
client-go是kubernetes官方维护的一个go语言客户端,用于与k8s集群交互,使用client-go可以很方便的完成k8s的二次开发(似乎也必不可少),无论是稳定性还是健壮性都有充分的保障。 client-go代码版本: v0.20.2 个人水平有些,一定会出现不严谨或者错误的地方,如有错误麻烦评论指正,谢谢 版本选择 kubernetes差不多是6个月左右发布一个版本,然后持续
都2023年了,搭建个网站绝不是太复杂的事情,重点是如何选择而已。 建站一般有四个选择。 使用现成的CMS(内容管理系统)软件直接初始化,比如超级出名的WordPress 自己写。 改开源的个人站项目(其实自己写差不多)。 如果非说还有第四个选择,那就是花钱雇人^_^。各大购物平台搜索"建站"都可以找到。 这篇文章介绍的是如何使用hugo搭建自己的个人博客网站, 在线预览:
创建SSL证书是一个很无聊的过程,偏偏有时候它又很重要,但是无聊的事情实在让人乏味,以后一定会忘记,那就写一篇比较完全的文章留作以后复制粘贴吧。虽然TLS跟SSL不是同一个东西,但是就当下的语境而言,两者基本没有什么区别。CA证书为了保证数据的完整性,加密性,所以设计了对称加密,对称加密虽然可以加密,但是密钥泄露了就全部暴露了,并且还要保证这个密钥的传输是可靠的,怎么保证密钥的传输是可靠呢?再次生
如果你对自己的DNS有更高的要求那么你或许可以打造一个专属于自己的DNS,并且利用这个DNS做一些反广告的操作,又因为这个DNS是用的DNSOverTLS(DOT)协议,所以可以反毒化,因为TLS的加密特性可以防止数据在传输过程中被篡改.打造自己的DNS有两种办法,一是做一个公网可访问的DNS服务器,二是仅局域网可访问的DNS服务器。第一种方法需要一个域名,一个公网云主机。第二种方法需要一个本地的
本文实现的apix网关代码结构基本上是借鉴了APISIX的源代码,可以看做APISIX的一个极度缩减版本。本文的实现只依赖openresty镜像已有的库,不依赖额外的库,所以路由的实现非常简陋,也没有实现路由的持久化,但是大致实现了动态路由更新和转发,插件机制。如果你认真计算代码行数之后会发现代码行数超过了500行,但是笔者认为去掉注释,以及将一些代码压缩之后是可以降到500行以内的,之所以取这个
如果你厌倦了那些老古董的DNS服务,那么可以试试Coredns,因为Caddy出色的插件设计,所以Coredns的骨架基于caddy构建,也就继承了良好的扩展性,又因为Go语言是一门开发效率比较高的语言,所以开发一个自定义的插件是比较简单的事情,但是大多数使用都不需要自己编写插件,因为默认的插件以及外部的插件足够大多数场景了。本文主要分为四个部分源码阅读自定义插件编写一些非常有用的工具函数源码阅读
apisix主要是lua脚本跟openresty(或者说nginx)的组合,流量具体转发由nginx承载,但是按照什么规则转发用lua脚本定义.apisix在nginx之上封装了非常多功能强大有用的特性,提供丰富的流量管理功能,比如态调整upstream,灰度发布,流量熔断,认证,观测性等。代码可分为两个部分启动前启动前主要是检查环境是否符合要求(比如openresty版本,luajit版本),加
如果你厌倦了多线程,不妨试试python的异步编程,再引入async,await关键字之后语法变得更加简洁和直观,又经过几年的生态发展,现在是一个很不错的并发模型。下面介绍一下python异步编程的方方面面。在python异步编程中,可能出现很多其他的对象,比如Future,Task,后者继承自前者,但是为了统一,无论是Future还是Task,本文中统一称呼为协程。与多线程的比较因为GIL的存在
分享一些用Python处理yaml和嵌套数据结构的的一些技巧,首先从修改yaml格式文件的问题出发,演变出了各个解决办法,又从最后的解决办法中引申出了普适性更强的嵌套数据结构的定位方法。1.保留注释修改yaml文件2.定位嵌套数据结构3.定位嵌套数据结构2保留注释修改yaml文件yaml比之json文件的其中一个区别就是可以注释,这些注释有时候是很重要的内容,就像代码中的注释一样,如果是手动编辑自
kubernetes源代码版本:1.22commit:fba7198a2cc81c4602f358c7b77ee4e733d20aa2阅读一个项目的源代码带着问题去阅读是一个不错的选择,下面是我之前存在的问题,答案在最后。为什么理论上ipvs的转发性能高于iptables却默认是iptables而不是ipvs?kubeproxy怎么保持规则的同步和生成对应的规则,第一次全量数据是怎么拿到的?ipt
本章的任务主线任务如下1.kubectl怎么启动2.kubectlapplyfdeployement.yaml发送了什么3.kubectllogsfdeplyment/redisleader发生了什么4.kubectlexecitredisleaderxxxxyyyy发生了什么5.kubectldescribedeployment/redisleader发生了什么25暂时不展开了其实kubectl
在k8s集群内部,或者说在集群的任一节点上执行命令,访问任何资源都是没什么障碍的,但是,在集群外部呢?我们并不能直接访问pod的IP,或者service的IP,这些IP是一些内部地址,一般在外部是不会设置路由的,那么如何在集群外部访问这些资源呢?最简单的解决方式是hostPort及nodePort,通过hostPort可以在运行pod的节点监听指定接口,好处是没有端口限制,但是外部访问需要知道po
做一个视频网站应该最终要的就是视频源,至于视频源从哪里来这是一个问题,不过这里提供一个很小的数据集,不要问我怎么来的,问就是网上来的所有资源来源于网路,仅做技术交流,如有侵权,请联系我删除。技术栈如下:后端:Python+FastAPI前端:uniapp+videojs部署:deta/dockercompose+traefik在线地址:https://u8hfyf.deta.devhttps://
研究了一下搜索引擎的大概原理,一个可以商用的搜索引擎是比较复杂的,但是搜索引擎的内核(自认为的)还是可以写写的。 > What i cannot create, i do not understand 一个全文搜索引擎应该至少解决两个问题: 1. 快速的定位到有关键字的内容(比如说网页,比如说文章文本) 2. 将定位到的文章排序,与关键字相关性最高的文章应该排在最前面(最相关的不应该是谁出钱最高嘛\doge 也许会有人说 :) )
想尝试写一个web框架,不是因为Django, Flask, Sanic, tornado等web框架不香, 而是尝试造一个轮子会对框架的认识更深,为了认识更深自然不应该依赖第三方库(仅使用内置库)。
吾生也有涯,而知也无涯。以有涯随无涯,殆已!入市有风险,投资需谨慎,本文不作为任何投资参考依据。前面通过形态和一些基本面的数据进行了选股,这篇文章就来研究一下相似度选股以及趋势选股吧。相似度我们一般比较在意股票的收盘价,比如均线或者各种指标如果需要计算一段序列值,我们一般选择收盘价作为序列中的值,就像5日均线计算的是五日的收盘价的均值一样。那么每天的收盘价就是一个个数字,一年的收盘价就是一串大概2
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号