不同场景的 Docker 代理设置
在使用 Docker 的时候因为各种各样的原因经常会用到代理,但是有没有小伙伴在网上搜索发现代理设置了 Docker 不认呢,就让小编来带你看看怎么会事吧。
其实 Docker 的代理设置分为三种场景——CLI 下的、容器中的和构建时的。对应的具体使用场景分别是 docker pull、容器运行过程中以及 docker build 过程中。
Docker pullDocker CLI 的操作由 dockerd 执行,因此需要设置 systemd 的代理。
在文件 /etc/systemd/system/docker.service.d/proxy.conf 中写入:
1234[Service] ...
认识 WebAuthn 并开发一个简单 Demo
之前某个睡不着的晚上不知道为何想起关于非对称算法(或者叫公钥加密),突发奇想,用户是否能不用密码,通过一个公私钥对向服务器注册和证明自己呢?结果一搜发现还真有这样的技术,那就是 WebAuthn。
记得 今年 去年年中(怎么这篇博客写了一年啊喂!)写过一篇关于 Credential Management API 的博客,至于为什么先写了那篇文章,大概因为咱搜索知识的时候是深度优先的吧(逃)。看过 MDN 文档的小伙伴肯定发现了这个 API 与 WebAuthn API 都集成在了 CredentialsContainer 这个对象上,本文就来简单地讲讲关于 WebAuthn 以及如何实现一个简 ...
使用 Nest 构建基础的用户登录鉴权应用
初始化 Nest 项目使用 nest new <name> 创建一个新的 Nest 项目,然后根据自己的喜好进行一定的自定义。
用户实体本文使用 Prisma 作为 ORM 框架,因此要先安装 Prisma 并初始化 Prisma schema 文件:
1npm i prisma && npx prisma init
然后编写用户实体字段,这里以基础的 id、username 和 password 三个经典字段举例:
1234567891011121314generator client { provider = "prisma-client ...
Flutter - 用熟悉的 Dart 来构建吧!
前言在 Android 开发中经常会遇到需要打包多个架构的包,还需要另外打一个 universal 的包,咱还需要在构建的同时为不同的架构输出不同的文件名,那么在 Flutter 上应该怎么做呢?
网上搜了一番发现许多信息都是过时的版本上的方法了,于是记录一下目前最新版本的方法,以及提供一个方便自己控制的使用 Dart 来构建项目的方法。
下面先贴一下咱的版本,避免版本不对而造成没必要的踩坑。
1234567891011121314$ .\android\gradlew.bat -v-------------------------------------------------------- ...
使用 Credential Management API 构建丝滑登录的 WebApp
相信每一个经常使用浏览器互联网冲浪的小伙伴对浏览器提示是否要保存密码和自动填充密码的对话框不陌生,实际上浏览器还提供了这样一个 API 用来提供更丝滑的登录体验:Credential Management API。网上查了一圈发现很少有谈这个 API 的,于是写一篇 Blog 记录一下。
要学习这个浏览器给咱们提供的便捷 API,要先看一下浏览器的这部分设置,这里以 Chrome 为例:
当你在一个陌生网站首次注册或者登录的时候,Chrome 会提示你是否要保存该网站的密码,“罪魁祸首”就是第一个选项,如果你不想使用 Chrome 的密码保存,关掉这个就好。
而第二个选项就与 Credent ...
浅谈 Nuxt 中如何实现未认证自动跳转
TL; DR如果没有对后端的掌控,可以考虑使用状态保存是否认证,在执行完服务端请求后判断认证的状态并决定是否跳转;如果有对后端的掌控权,可以添加一个专门用于验证 token 的接口,在 Nuxt Middlware 中请求接口,并决定是否跳转。
最佳的用户体验Nuxt 由于 SSR 的特性,可以从 Nuxt 服务端获取数据,因此可以在用户获取到页面之前就提前得知用户是否有权限访问当前页面,也就可以像 PHP/JSP 等 SSR 技术一样,做到用户访问直接跳转到登录页面,而并非是进入页面后弹出一个无权限提示再跳转达到登录页面。
符合直觉的代码思考到上面的需求,便写了一段看起来最符合直 ...
因为一行打印语句而失去的一天
TL;DR不要打印 PrismaClient 对象。
纪念一下因为这件事失去的一天。
发现的过程起因是咱在 Nuxt 里用 middleware 往 event.context 里塞了一个 PrismaClient,然后在另一个地方又不小心打印了一下 event。导致只要请求发过来,到了打印的位置就直接卡死,刷新页面提示「Reloading server」。
刚开始在怀疑是不是 Nuxt 的某个 bug,后来建立了好几个空项目测试,一次卡死的情况都没有出现。于是又怀疑是不是自己在连接 PrismaClient 的时候写了什么问题,但对着那七八行初始化数据库的代码进行了手动测试之后发现自己被骗 ...
咱是如何配置 Clash for Windows 分流的
前言咱们平时在使用 CFW 上网时,直接 global 并不是一种好的做法,因为这会导致许多没有必要绕过的流量也过了一遍代理,不仅浪费代理流量,也影响了速度。因此除非你有特殊的需求,日常使用通常来讲都是需要配置分流的。
本文会介绍 CFW 的分流机制、简单的分流配置,以及咱最后灵活性更高一些的方式,还有在探索这个方式之中的一些踩坑。
CFW 分流机制Proxy从服务提供商处获取 Profile(配置文件)后,就可以在 CFW 中使用 Profile 中定义的 Proxy。这些 Proxy 需要配合规则进行使用,由规则匹配流量,最终决定要使用哪个 Proxy 代理这些流量,这就是 CFW 的基本 ...
Transmission 搭建记录
Transmission 安装Windows从官网下载官方 msi 安装包,运行后根据引导进行安装即可。
需要注意的是安装时的几个选项的意思:
Qt client:带 GUI 的客户端,用于连接 Transmission 服务。
Daemon:Transmission 的守护程序。
Command-line tools:Transmission 的命令行工具。
Web Interface:WebUI 客户端,作用与 Qt client 一样,不过是在浏览器中访问,会方便一点,使用体验上不如 Qt client。
安装完成后,打开 C:\Windows\ServiceProfiles\Loc ...
记录一次 ttrss 迁移
记录一次 ttrss 的迁移过程,包括 postgres 数据库备份与恢复,nginx 配置 https 站点等,参考了网上的另一篇迁移文章。其实当时在做的时候是完全按照这篇文章来的,但由于文章的时效性等等方面的问题导致实践中遇到了一些坑,于是对原文中的流程进行了一定更改,记录了咱自己的迁移过程。
备份先保证原机器上的 postgres 容器正在运行中,然后使用 pg_dump 工具来备份数据库:
1docker exec postgres pg_dump -c -U postgres -Fc ttrss > export.dmp
此处建议使用 -Fc 参数导出数据库备份文件,而不是默 ...
Pinia 快速上手
快速上手 Pinia 基础使用
SSH 太慢?Git HTTPS 多账户管理教程来辣!
之前有写过 一篇文章 讲如何在 Git 中配置 ssh 多密钥管理,达到方便地切换 Git 使用的 ssh 的目的。
但是相信你能明显感觉到 ssh 比 https 慢了许多倍,而 ssh 多密钥管理,只有修改 ssh 里的 host 为你的配置 host 才有效,显然不能在 https 协议的 url 下生效。
不过不用担心,因为咱们遇到的难题其实很早就有人解决过了,今天就让咱来分享一下如何在 Git 上使用 HTTPS 的多账户管理。
Windows由于咱只有 Windows 设备,所以只说 Windows 下的方法吧(如果以后有了别的设备可能会回来填坑?)。
安装在 Windows 下, ...
GitHub Pages 证书过期 Cloudflare SSL 握手失败解决方法
最近突然发现咱的博客打不开了,一个来自 Cloudflare 的大大的 SSL 握手失败糊在咱的脸上。(瞳孔地震)
不是说 Cloudflare 会自动续证书的喵???(小小的眼睛充满大大的疑惑)
两个证书咱直接爬起床打开 Cloudflare,研究了会儿,终于知道是什么情况。
由于咱的博客是部署在 GitHub Pages 上,Cloudflare 只是一层代理,用户访问的时候是访问到的 Cloudflare,实际是 Cloudflare 帮咱们访问了 GitHub Pages,不过 Cloudflare 会做一层缓存。
那么这个过程中其实存在两次访问:用户访问 Cloudflare,Clo ...
jsDelivr 被干 如何拯救你的 blog
干!众所周知最近 jsDelivr 被神秘力量屏蔽了,这可不得了了,因为有许多 blogger 都是直接用的 jsDelivr 的 CDN,而咱用的 butterfly 主题也是默认全部使用 jsDelivr 的 CDN。
先给大家伙康康咱的 blog 寄成什么样了。
简直惨不忍睹。
思!刚开始咱本来打算在 Vercel 上部署一个项目,当作 jsDelivr 的镜像,不定期同步一下,可以通过 Vercel 的链接来访问。
但是想想似乎太麻烦了,一是需要自己写个脚本来更新,二是写完之后还得自己去同步(当然也可以整个 GitHub Actions 来做自动化)。
后来突然想起来咱以前不是 ...
可以判断素数的正则表达式!
敲有意思最近在阮一峰老师的订阅上看到一篇文章,讲了一个特别有意思的验证素数的正则表达式。
^1?$|^(11+?)\1+$
用法刚看到这个正则表达式的时候真的令人惊讶:什么,就这两句就能囊括素数的规律吗?
其实并不是,在判断素数之前,咱们还得将要判断的这个数 $n$ 转换成由 $n$ 个特定字符组成的字符串。什么意思呢?举个栗子:
假设这个 特定字符 是 1 。
要判断 4 是否为素数,就向正则输入 1111 ;要判断 7,则输入 1111111 。
将表达式测试该字符串的结果取反,就表明这个数是否是素数。即:正则匹配成功为合数,匹配失败为素数。
解析没错,这个正则验证的并不是数本身,而 ...