Logo

site iconJasonkayZK | 张小凯

本科就读于HPU电气工程,玩过ACM、嵌入式、投稿过B站鬼畜、参加过歌唱比赛、考过托福、自学日语、Java
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

JasonkayZK | 张小凯 RSS 预览

Excel通过身份证号列计算性别

2024-09-11 10:28:56

Excel统计信息中有身份证号,可以通过身份证号直接生成性别列;


Excel通过身份证号列计算性别

例如,B2 列为身份证号所在列,则可以在性别列(如D2列)填写:

=IF(MOD(MID(B2, 17, 1), 2) = 1, "男", "女")

输入后回车计算结果即为性别;

可以下拉直接生成全部结果!


参考:


开源的个人书籍管理系统Talebook

2024-08-22 10:19:57

我平时看的都是PDF电子书籍,但是之前没有用书籍管理,所以书籍比较乱;

比较有名的书籍管理系统有Calibre,但是Talebook支持OPDS,同时能从豆瓣导入信息,比较好用;

本文介绍了如何部署和配置Talebook;

源代码:


开源的个人书籍管理系统Talebook

部署

项目地址如下:

DockerHub地址:

B站上也有UP主对Talebook做了介绍:

部署起来也是非常简单,先把镜像拉下来,然后 docker-compose 就行:

docker-compose.yml

version: "3"services:  talebook:    container_name: talebook    image: talebook/talebook:v3.8.1    volumes:      - /data/talebook:/data    ports:       - "80:80"       - "443:443"    environment:      - PUID=1000      - PGID=1000      - TZ=Asia/Shanghai      # 调整为『SSR=ON』可开启「服务器端渲染」模式,对于搜索引擎更友好,同时更消耗服务器性能      - SSR=OFF    depends_on:      - douban-rs-api    restart: always  douban-rs-api:    container_name: douban-rs-api    # https://github.com/cxfksword/douban-api-rs    image: ghcr.io/cxfksword/douban-api-rs:latest    restart: always

配置都比较简单,目录挂载、端口映射直接根据自己的需求修改即可!


配置

基本的配置,上面的B站UP基本上都讲了;

需要注意的是:

配置豆瓣的时候,url 结尾的 / 要删除!否则会无法使用!

参考:


其他

支持 OPDS 的 APP 推荐:

  • 安卓:静读天下
  • iOS、MacOS:Yomu、KyBook

参考:

需要注意的是:

如果要使用 OPDS,需要配置:

  • 关闭「私人图书馆」模式。
  • 打开「允许任意下载」(访客无需注册或登录)

参考:

Enjoy!


附录

源代码:

参考:


2024年安装Docker的方法

2024-08-22 10:00:43

阿里云的Docker源没了,本文写了在2024年如何安装Docker、配置DockerHub源;

PS:没想到2024年了,还在写Docker安装的教程…


2024年安装Docker的方法

安装Docker

目前(2024年8月22日),阿里云已不再提供 Docker 源的安装(404了);

腾讯云目前还是提供的,安装教程如下:

Ubuntu的安装如下:

sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyrings# Debian系统将ubuntu改为debian!sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc# Debian系统将ubuntu改为debian!echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |   sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update

需要注意的是:如果是Debian系统,需要将上面的ubuntu改为debian即可!

安装:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker镜像源

众所周知,由于不可抗因素,国内是无法在 DockerHub 上 pull 镜像的,Github 的 ghcr.io 也不行;

下面的网址提供了一些目前可用的镜像站:

以及使用 CF 搭建镜像站的教程:


附录

参考:


Python项目Linter、Formatter和Github-Actions配置

2024-08-21 15:26:53

关于Python项目的一些配置问题,包括:

  • Linter
  • Formatter
  • Github-Actions配置;

源代码:


Python项目Linter、Formatter和Github-Actions配置

Linter

Linter 使用的是 PyCharm 自带的,符合 PEP8 规范;

也可以使用:

  • flake8
  • pylint

Formatter

直接用 isort 和 black 就可以了:


项目配置

Pre-Commit:

.pre-commit-config.yaml

repos:  - repo: https://github.com/psf/black    rev: 23.1.0    hooks:      - id: black  - repo: https://github.com/pycqa/isort    rev: 5.12.0    hooks:      - id: isort

PyProject:

pyproject.toml

[tool.isort]profile = "black"

依赖配置:

requirements.txt

-e .[all]...

requirements-dev.txt

-r requirements.txt# Ciblackisort

Github Actions:

.github/workflows/ci.yaml

name: CIon:  workflow_dispatch:  push:  pull_request:jobs:  lint_and_test:    runs-on: ubuntu-latest    strategy:      max-parallel: 4      matrix:        python-version: ['3.10', '3.11', '3.12']    steps:      - uses: actions/checkout@v4      - name: Set up Python ${{ matrix.python-version }}        id: setup_python        uses: actions/setup-python@v5        with:          python-version: ${{ matrix.python-version }}          cache: 'pip'          cache-dependency-path: 'requirements-dev.txt'      - name: Install dependencies        run: |          pip install -r requirements-dev.txt      - name: Run lint        uses: pre-commit/[email protected]

附录

源代码:

参考:


Zerotier配置内网流量转发

2024-08-21 09:51:01

在上一篇文章《简单易用的内网穿透组网工具ZeroTier》中,简单介绍了组网工具Zerotier;

实际上,我们可以通过Ip Forward的方式来访问组网设备内网下的其他设备!


Zerotier配置内网流量转发

首先,在这台机器上配置 IP 转发:

sudo sysctl -w net.ipv4.ip_forward=1sudo sysctl -p

查看网卡配置:

ip aens33: 192.168.117.0/24ztnfanm5kw: 192.168.196.220

在zerotier网站设置转发规则:

alipay

在这台流量转发机器上设置环境变量:

export PHY_IFACE=ens33 # 物理网卡export ZT_IFACE=ztnfanm5kw # Zerotier虚拟网卡

添加规则到iptables:

sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADEsudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPTsudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

这三条 iptables 规则用于配置网络地址转换(NAT)和数据包转发;

含义如下:

  1. 规则 1: sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE

    这条规则在 nat 表的 POSTROUTING 链中添加了一条规则。-o $PHY_IFACE 表示这条规则适用于所有通过 $PHY_IFACE 这个网络接口(通常是物理接口)出去的数据包。-j MASQUERADE 指定了 NAT 操作中的伪装(masquerading)。这意味着,当数据包从 $PHY_IFACE 发送出去时,其源 IP 地址会被替换为 $PHY_IFACE 的 IP 地址。这通常用于允许内部网络通过一个公共 IP 地址进行外部通信;

  2. 规则 2: sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT

    这条规则在 filter 表的 FORWARD 链中添加了一条规则。-i $PHY_IFACE 表示适用于从 $PHY_IFACE 这个接口进入的数据包,-o $ZT_IFACE 表示这些数据包要转发到 $ZT_IFACE 这个接口。-m state --state RELATED,ESTABLISHED 指定了只有那些与已有连接相关或已经建立的连接的数据包才被接受(ACCEPT)。这个规则通常用于允许来自外部网络的返回流量进入内部网络,从而支持诸如 HTTP 会话等;

  3. 规则 3: sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

    这条规则在 filter 表的 FORWARD 链中添加了一条规则。-i $ZT_IFACE 表示适用于从 $ZT_IFACE 这个接口进入的数据包,-o $PHY_IFACE 表示这些数据包要转发到 $PHY_IFACE 这个接口。-j ACCEPT 表示这些数据包会被接受并转发。这条规则允许来自 $ZT_IFACE 的流量经过路由器转发到 $PHY_IFACE,从而实现网络之间的数据传输;

    总结:

  • 第一条规则用于设置源地址伪装,允许内部网络设备通过一个公共 IP 地址进行外部通信;
  • 第二条规则允许返回流量和已经建立的连接的数据包从外部网络进入内部网络;
  • 第三条规则允许来自内部网络的数据包被转发到外部网络;

保存配置到文件:

iptables-save

此时就可以用另一台加入了此Zerotier网络的机器访问内网机器的其他电脑了!


附录

文章参考: