Nginx
通用配置
server {
listen 80;
client_max_body_size 4G;
server_name example.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://uvicorn;
}
location /static {
# path for static files
root /path/to/app/static;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream uvicorn {
server unix:/tmp/uvicorn.sock;
}
网络相关
https
mkcert 生成本地证书
资源
工具
博客
其他
产品
图标
- simpleicons 3198 Free SVG icons for popular brands
- uilogos
前端资源
React
Remix
tailwind
- tailwind-generator
- tails-components
- TailwindCSS page generator
- Pine Tailwind and Alpine
- 9 Tailwind CSS Hover Effects Examples 2024
- merakiui
- 梯度渐变背景
- tailwind 工具
UI
- The Largest Library of Open-Source UI
- story UI
- Frontend Libraries for Your Next Project
- UI library for Design Engineers
- flyonui
- 生成代码图片
练习
NextJs
CSS
模板
字体
书
前端参考网站
Saas
AI
chat
http://192.168.0.102:11231/
AI绘画
容器
- docker
- podman
OS
配置透明代理(网关)
k8s
install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
docker
代理
/etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://192.168.0.100:10809",
"https-proxy": "http://192.168.0.100:10809",
"no-proxy": "localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,ingress-nginx.svc,default.svc"
}
}
部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: <my-deployment>
spec:
replicas: 3 # 部署3个Pod
selector:
matchLabels:
app: <my-app>
template:
metadata:
labels:
app: <my-app>
spec:
containers:
- name: <my-container>
image: nginx:latest # 使用nginx镜像作为示例
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: <my-service>
spec:
selector:
app: <my-app> # 与Pod的标签匹配
ports:
- protocol: TCP
port: 80 # Service暴露的端口
targetPort: 80 # Pod的目标端口
type: ClusterIP # Service类型,ClusterIP是默认类型,只在集群内部暴露
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <example-ingress>
spec:
rules:
- host: service-b.example.com # 匹配另一个域名,可以忽略
http:
paths:
- pathType: Prefix
path: /foo
backend:
service:
name: foo-service
port:
number: 8080
- pathType: Prefix
path: /bar
backend:
service:
name: bar-service
port:
number: 8080
---
minikube
init
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
# minikube start --bind-address="192.168.0.211"
minikube start
kubectl get po -A
service 启动
[Unit]
Description=minikube
After=network.target
[Service]
Type=idle
Restart=on-failure
User=vagrant
ExecStart=/bin/bash -c 'minikube start'
[Install]
WantedBy=multi-user.target
隧道
minikube tunnel --bind-address="192.168.0.211"
流程
minikube 启动后,启动 ingress,部署一个ingress controller
k0s
ssh -NL 45919:127.0.0.1:36635 ubuntu 反向代理
安装
curl --proto '=https' --tlsv1.2 -sSf https://get.k0s.sh | sudo sh
sudo k0s install controller --single
sudo vim /etc/systemd/system/k0scontroller.service
sudo systemctl daemon-reload
sudo k0s stop && sudo k0s start
sudo k0s status
sudo k0s kubectl get nodes
Environment="HTTP_PROXY=http://192.168.0.100:10809"
Environment="HTTPS_PROXY=http://192.168.0.100:10809"
Environment="NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,ingress-nginx.svc,default.svc"
helm
sudo cp /var/lib/k0s/pki/admin.conf ~/admin.conf
export KUBECONFIG=~/admin.conf
echo "export KUBECONFIG=~/admin.conf" >> ~/.bashrc
sudo chown k0s:k0s ~/admin.conf
chmod g-r ~/admin.conf
重置
sudo umount `sudo mount | grep k0s | grep pods | awk 'NR==1{print $3}'| xargs `
nerdctl
nerdctl --address=$NERDCTL_PLUGINS images
部署工具
- pulumi 基础设施即代码
数据库
postgresql
免费云:
FAQ
只安装客户端
ubuntu: sudo apt-get install -y postgresql-client
显示表存储大小
SELECT pg_size_pretty( pg_total_relation_size('tablename') )
What's the default superuser username/password for postgres after a new install?
https://serverfault.com/questions/110154/whats-the-default-superuser-username-password-for-postgres-after-a-new-install
Postgresql
配置文件位置: /etc/postgresql/16/main/pg_hba.conf
FAQ
重载配置
连接到数据库
SELECT pg_reload_conf();
云服务
数据库
Serverless
aws-lambda
100000 请求 30s/per
AWS Lambda 免费套餐包括每月 100 万次免费请求和 400000 GB 秒的计算时间,可用于由 x86、Graviton2 处理器或两者整合提供支持的函数。 此外,免费套餐包括每月 100GiB 的 HTTP 响应流,不包括每个请求的前 6MB(免费)
安装
- 安装 aws
- 配置 aws
aws configure - 验证是否登录成功
aws lambda list-functions
客户端
nodejs
pnpm add @aws-sdk/client-lambda
import { InvokeCommand, InvokeCommandInput, LambdaClient, ListLayersCommand } from "@aws-sdk/client-lambda";
const config = {
region: "ap-east-1"
}
const client = new LambdaClient(config);
export interface IGetDnsBody {
domains: string[],
dnsServers: string[]
}
//数据在 response.payload
async function getDns(body: IGetDnsBody) {
const input = { // InvocationRequest
FunctionName: "getDns", // required
Payload: new TextEncoder().encode(JSON.stringify(body))
};
const command = new InvokeCommand(input);
const response = await client.send(command);
//response body
return response.Payload;
}
云原生
win
ssh 服务
系统 功能,open server 服务开启 开启服务
修改 C:\ProgramData\ssh\administrators_authorized_keys ,注意用管理员模式
一定要修改权限
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
文件夹链接
mklink /D "link目录" "target实际目录"
mklink /D "C:\Users\jason\.vscode-server" "d:\.vscode-server"
网络
重启网络适配器
netsh interface show interface
netsh interface set interface "Your Network Adapter Name" admin=disable
netsh interface set interface "Your Network Adapter Name" admin=enable
vagrant
setx VAGRANT_HOME d:\.vagrant.d
Wsl
自动启动
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Debian", 0
端口转发
netsh interface portproxy show all # 显示所有的转发
netsh interface portproxy add v4tov4 listenport=5432 listenaddress=0.0.0.0 connectport=5432 connectaddress=172.18.15.75 # 添加端口转发
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8080 # 删除端口转发
虚拟机
vagrant
debian
FAQ
- 如果出现桥接网络无法启动
sudo systemctl restart networking # 可能管用
Linux
shell
当前目录
function cur(){
FOLDER_TMP=$(dirname "$(readlink -f "$0")")
WORK_DIR=$(dirname "$FOLDER_TMP")
echo $WORK_DIR
cd "$WORK_DIR"
}
根据参数执行命令模板
#!/bin/bash
# 检查参数数量
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <command>"
exit 1
fi
# 根据参数执行不同的命令
case "$1" in
start)
echo "Starting the service..."
# 这里添加启动服务的命令
;;
stop)
echo "Stopping the service..."
# 这里添加停止服务的命令
;;
restart)
echo "Restarting the service..."
# 这里添加重启服务的命令
;;
status)
echo "Checking the service status..."
# 这里添加检查服务状态的命令
;;
*)
echo "Invalid command: $1"
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
添加新用户
UN=k0s
sudo useradd -d /home/$UN -G docker,sudo -s /bin/bash $UN
sudo mkdir /home/$UN
sudo chown k0s:k0s /home/$UN
sudo passwd $UN
# pass
# suders
透明代理
参考 透明代理
docker 启动
docker run -it --rm --net=br0 --name ttproxy ubuntu
- 安装 v2ray
mkdir v2ray
cd v2ray
wget https://github.com/v2fly/v2ray-core/releases/download/v5.19.0/v2ray-linux-64.zip
unzip v2ray-linux-64.zip
Mac
软件工具
- Phoenix 自定义很多快捷键
虚拟桌面
词汇
- Roadmap
投资
参考网站
翻译
开源
pip install libretranslate
pip install numpy==1.26.4
libretranslate --load-only zh,en --host 0.0.0.0
FAQ
- numpy 问题
pip install numpy==1.26.4
有用的第三方服务
- xata postgres
- neo postgres
- sentry web 监控
- pulumi 平台即代码
学习语言的项目
初学者练习项目
-
简易博客系统:
- 实现文章的增删改查功能
- 支持 Markdown 格式文章
- 提供用户注册、登录功能
- 可选:添加评论功能、分类功能
-
任务管理工具:
- 创建、编辑、删除任务
- 设置任务优先级、截止日期
- 支持任务列表、看板等视图
- 可选:集成日历功能、团队协作功能
-
个人笔记应用:
- 支持富文本编辑
- 标签分类
- 搜索功能
- 云端同步
-
简易论坛:
用户注册、登录 发帖、回复 分类板块 搜索功能
进阶练习项目
-
在线商城:
商品展示、搜索 购物车功能 订单管理 支付集成 用户管理
-
社交网络: 用户注册、登录 好友系统 动态发布 消息系统 社交图谱
-
实时聊天应用: 实时消息推送 群聊、私聊 表情、图片发送 在线状态显示
-
在线文档协作工具:
实时文档编辑 版本控制 权限管理 协作功能
挑战性项目
-
区块链浏览器:
展示区块链信息 支持多种区块链 提供交易查询、地址查询等功能
-
游戏服务器: 实现简单的多人在线游戏 处理玩家连接、数据同步、游戏逻辑等
网络相关
- 网络聊天室: 多个用户通过网络实时聊天。
- 文件传输: 在不同设备之间传输文件
- 远程控制: 控制远程计算机
- 网络游戏: 实现多人在线游戏。
- 分布式系统: 构建分布式的应用程序
登录
不同语言的登录框架
python
- oauthlib 只是实现了 oauth 协议
SSO 单点登录
docker run \
--rm \
-e driverName=mysql \
-e dataSourceName='root:root@tcp(192.168.0.102:3307)/' \
-p 8001:8000 \
casbin/casdoor:latest
性能测试
硬盘
工具
juicefs
测试结果
宿主机 win10
vmware win10
BlockSize: 1.0 MiB, BigFileSize: 1.0 GiB, SmallFileSize: 128 KiB, SmallFileCount: 100, NumThreads: 4
+------------------+-----------------+--------------+
| ITEM | VALUE | COST |
+------------------+-----------------+--------------+
| Write big file | 176.67 MiB/s | 23.18 s/file |
| Read big file | 912.52 MiB/s | 4.49 s/file |
| Write small file | 1953.0 files/s | 2.05 ms/file |
| Read small file | 12159.1 files/s | 0.33 ms/file |
| Stat file | 97320.0 files/s | 0.04 ms/file |
+------------------+-----------------+--------------+