编程笔记

lifelong learning & practice makes perfect

IndexNow

使用IndexNow可能更加及时推送,也是Bing Webmaster现在推荐的方式

配置

使用github actions定时推送,配置如下,indexnow秘钥存储到github仓库的”Secrets and variables”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name: "IndexNow"
on:
schedule:
# Scheduled in UTC.
- cron: '0 0,12 * * *'

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
check-and-submit:
runs-on: ubuntu-latest
steps:
- name: indexnow-action
uses: bojieyang/indexnow-action@v2
with:
sitemap-location: "https://programnotes.cn/sitemap.xml"
since: 1
since-unit: "day"
key: ${{ secrets.INDEXNOW_KEY }}

参考

为什么迁移

在商店安装的子系统默认放C盘,磁盘剩余空间不多了

准备和验证

查询已安装的子系统

1
2
3
4
5
6
wsl -l

# 适用于 Linux 的 Windows 子系统分发:
# Ubuntu-24.04 (默认)
# docker-desktop
# docker-desktop-data

查询wsl安装的Ubuntu24磁盘位置, “Ubuntu-24.04”为需要查询的子系统版本

阅读全文 »

安装

使用docekr安装,默认为linux/x86_64

1
2
3
4
5
6
7
8
9
10
11
services:
coredns:
image: coredns/coredns:latest
ports:
- 53:53/udp
restart: always
command: -conf /root/Corefile
volumes:
- ./config:/root
hostname: coredns
container_name: coredns
阅读全文 »

redis为什么快

  1. 数据存储在内存中
    Redis完全基于内存存储数据,大部分请求是纯内存操作,速度极快。
    避免了传统磁盘文件数据存储的磁盘I/O开销。

  2. 高效的数据结构
    Redis有5种数据类型:String、List、Hash、Set、SortedSet。
    不同数据类型使用一个或多个底层数据结构支持,以实现更快的速度。

  3. 单线程架构
    单线程节省了上下文切换和CPU消耗的时间。
    没有竞态条件,无需考虑各种锁问题,避免了死锁导致的性能开销。
    允许使用各种“线程不安全”的命令,如Lpush。
    虽然是单线程,但Redis的其他功能(如持久化、异步删除、集群数据同步)由额外的线程执行。
    单线程易于实现,且CPU不会成为瓶颈,因此采用单线程方案。

阅读全文 »

配置nginx代理

1panel入口需要使命令获取

1
1panel user-info

nginx配置

阅读全文 »

用户配置

对象存储

支持s3协议存储,配置到”File system”下
sftpgo支持virtual folders,但是相同的配置,使用virtual folders时,”私有读写”的bucket无法使用(
只能获取文件列表,下载文件/上传文件均失败),在”Users”中配置到”File system”却可以正常工作

阅读全文 »

背景

项目要求使用国密加密算法保障安全性,go和java需要通过接口互通,请求时使用sm4加密数据,sm2加密sm4秘钥,必将加密数据和加密后的sm4秘钥发送到第三方接口,
响应用相反的方式解密数据.
java 使用hutool里的工具函数实现,go使用”github.com/tjfoc/gmsm”实现.

阅读全文 »

channel

打开企业微信三方应用报错,提示如图,检查了服务商后台和后端代码里的各项配置都没错,域名也通过了
验证

channel

最后发现是前端oauth时跳转配置里的appid填错了

1
2
3
// 第三方应用需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

参考文档:

部署Keycloak

使用dev模式启动,自定义配置可以放到conf下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: '3.9'
services:
keycloak:
image: quay.io/keycloak/keycloak:24.0.3
environment:
# KC_DB: mysql
# KC_DB_SCHEMA: keycloak
# KC_DB_USERNAME: kc
# KC_DB_PASSWORD: xxxxxx
# KC_DB_URL_HOST: xxx.xxx.xxx.xxx
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_PROXY: edge
KC_HOSTNAME_STRICT: false
KC_RUN_IN_CONTAINER: true
mem_limit: 500m
mem_reservation: 400m
command:
- start-dev
#- --optimized
container_name: keycloak
volumes:
- ./conf/:/opt/keycloak/conf
restart: always
ports:
- 8080:8080
阅读全文 »