ios快捷指令实现自动钉钉打卡
注: 仅用于技术分享,切勿滥用
我的实现方案是将 iPad 放在需要打卡的位置实现定位,例如工位/实验室,并通过 “快捷指令” 创建自动打卡脚本实现自动化,具体操作如下:
首先需要关闭iPad的锁屏,这样就避免了运行快捷指令时的手动解锁屏幕
然后需要将 iPad 的 “自动锁定” 时间设置为 10 分钟,这是为了在随机等待时间 (2~6分钟) 中,防止 iPad 自动锁屏而中断快捷指令脚本
此外需要在钉钉 App 中打开 “极速打卡” 功能,这样就能在打开 App 时自动进行打卡,而不需要手动操作
最关键的部分,需要创建一个 “快捷指令” 的脚本用于钉钉打卡,可以参考一下我的实现。我在其中加入了随机等待时间的功能,注意其中等待时间的单位是秒,表示随机等待 120s~360s 再运行 “打开钉钉”,这样避免了每天都在同一时间打卡
注意:其中的 “等待” 指令中的 “#随机数” 需要长按才能设置
需要特别注意的是 “快捷指令/钉钉/考勤打卡” 这个指令只是打开钉钉考勤打卡的界面,而!!!不触发打卡!!!,请不要用这个指令来进行打卡,它需要额外 ...
最大公约数的性质及应用
最大公约数的定义
最大公因数 | wikipedia
最大公约数 (gcd, greatest common divisor) 或者最大公因数 (hcf, highest common factor) 指能够整除多个非零整数的最大正整数.
整数序列 a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1,a2,⋯,an 的最大公约数记为 gcd(a1,a2,⋯ ,an)\gcd(a_1, a_2, \cdots, a_n)gcd(a1,a2,⋯,an), 在不引起歧义的情况下也可以记作 (a1,a2,⋯ ,an)(a_1, a_2, \cdots, a_n)(a1,a2,⋯,an).
最大公约数的性质
任意 a 和 b 的公因数都是 gcd(a, b) 的约数
证明: 设 d = gcd(a, b), 根据贝祖定理 (线性数论定理), 存在整数 x 和 y 使得 xa + yb = d.
对于 a 和 b 的任意公约数 c 满足 c|a 并且 c|b, 由整除的线性性可以得到 c | (xa + yb) 即 c | gcd(a, b)
gcd ...
内存对齐
参考
C/C++内存对齐详解 | zhihu
【到底为什么要内存对齐?】| bilibili
为什么要进行内存对齐
尽管内存是以字节为单位进行划分的, 但是大部分处理器并不是按字节块来存取内存的. 它一般会以 2字节, 4字节, 8字节, 16字节甚至32字节为单位来存取内存, 我们将上述这些存取单位称为内存存取粒度.
内存存取粒度的大小取决于存储字长和寻址方式. 存储字长即存储体中一个存储单元所包含的存储元数量, 寻址方式通常包括: 1.按字节寻址, 2.按字寻址, 3.按半字寻址, 4.按双字寻址. (一个 word 的大小取决于存储字长)
现在考虑4字节存取粒度的处理器取int类型变量(32位系统), 该处理器只能从地址为4的倍数的内存开始读取数据.
假如没有内存对齐机制, 数据可以任意存放, 现在一个int变量存放在从地址1开始的连续4个字节地址中, 该处理器去取数据时, 要先从0地址开始读取第一个4字节块, 剔除不想要的字节(0地址), 然后从地址4开始读取下一个4字节块, 同样剔除不要的数据(5,6,7地址), 最后留下的两块数据合并放入寄存器. 相比于将int变量存放 ...
内网服务器通过代理连接外网
参考
内网服务器如何设置代理访问外网
描述
公司的服务器通常只能连接公司内网, 不能访问互联网, 这对配置 conda/docker 环境来说比较不方便. 如果有一台可以访问公司外网的服务器, 可以在外网服务器上配置 squid 代理服务, 再让内网服务器通过外网服务器的代理端口连接外网.
配置外网服务器
安装 squid 软件
12# 安装 squid (这里采用 yum 安装)$ yum install -y squid
修改 squid 配置文件
123456# CD 到配置文件目录下$ cd /etc/squid/# 备份原始配置文件$ cp squid.conf squid.conf_bak# 修改配置文件$ vim squid.conf
12345# 将 http_access deny all 注释修改为 http_access allow all# http_access deny allhttp_access allow all# 修改端口为代理的端口http_port 10022
启动 squid 服务
12345678# 检查语法$ squid -k parse ...
RISCV汇编指令
参考
技术规范 Specifications
Volume 1, Unprivileged Specification version 20240411 (非特权指令规范)
The RISC-V Instruction Set Manual Volume I Unprivileged Architecture Version 20240411
Volume 2, Privileged Specification version 20240411 (特权指令规范)
The RISC-V Instruction Set Manual: Volume II Privileged Architecture Version 20240411
旧版规范 (20191213, 汪辰老师所用版本)
RISC-V Technical Specifications Archive
参考手册
The RISC-V Reader: An Open Architecture Atlas Authored by David Patterson, Andrew Waterman Edition: 1st
一个可 ...
Vim使用笔记
练习
Interactive Vim tutorial
Vim的工作模式
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffff',
'primaryTextColor': '#000f',
'primaryBorderColor': '#000f',
'lineColor': '#000f',
'secondaryColor': '#0000',
'tertiaryColor': '#0000'
}
}
}%%
graph TB
command["命令模式Command"]
insert["插入模式Insert"]
replace(["取代模式Replace"])
visual(["可视模式Visual"])
lastline["底线命令模式Last Line"]
command--"i,a,o"--> insert
insert --"Esc"--> command
comman ...
RISC-V 操作系统
参考
循序渐进,学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春
riscv-operating-system-mooc | Gitub
riscv-operating-system-mooc | Gitee
环境配置
建议使用 docker 容器来配置环境
12# 拉取 github 仓库git clone git@github.com:plctlab/riscv-operating-system-mooc.git
1234567# 从 dockerhub 拉取 ubuntu:20.04 镜像# https://hub.docker.com/layers/library/ubuntu/24.04/images/sha256-3963c438d67a34318a3672faa6debd1dfff48e5d52de54305988b932c61514cadocker pull ubuntu:20.04# 通过镜像创建 docker 容器, 并将 github 仓库对应的目录挂载到容器中docker run -dit --privileged=true --name risc ...
Large Language Model
关于 HuggingFace 和 ModelScope
HuggingFace 是一个模型和数据集的托管平台, 其中托管了大量的用于机器学习的开源模型和数据集, 你可以将其视为针对 Machine Learning 的 Github.
ModelScope 是一个由阿里达摩院推出的开源模型服务平台, 可以视为中国版的 HuggingFace.
关于 HuggingFace 的使用
Use the CLI | docs
关于 ModelScope 的使用
模型的下载 | docs
例如下载 Qwen2-0.5B-Instruct 模型
12# pip install modelscopemodelscope download --model qwen/Qwen2-0.5B-Instruct --local_dir /root/qwen/Qwen2-0.5B-Instruct
使用 vllm 的 api_server 在本地运行模型的一个服务
1python -m vllm.entrypoints.openai.api_server --model /root/qwen/Qwen2-0.5 ...
深入理解GPT
GPT的结构
首先我们需要了解 GPT 的结构. 例如下图是一个 GPT-1 的结构图, 中间的蓝色框选部分对应 n 个 Transformer 的 Block, 左边为输入和 Embedding 层, 右边为输出预测以及 Loss.
关于输入
原始的输入为一个 [Batch_size, Time_step] 大小的矩阵. 例如字符级别的生成(预测), 输入为 "To be or not to be", 算上空格这是一个 Batch_size=1, Time_steps = 18 的输入.
如何对输入字符进行编码
例如针对 tinyshakespeare 这个文本, 我们统计出其中有 65 种字符, 并按照 ASCII 码的值对它们进行排序
1234567891011with open('input.txt', 'r', encoding='utf-8') as f: text = f.read()chars = sorted(list(set(text))) # len = 65# here ar ...
VSCode&Docker
关于如何让保障机连公司外网下载 VsCode 插件的操作
目前我们有一台公用的可以连公司外网的服务器, IP地址是 172.xx.x.xx, 我在上面挂载了一个 Squid 代理, 端口号为 10022. 现在大家只需要在自己的保障机 (不能连外网) 上配置代理地址为 http://172.xx.x.xx:10022 即可通过代理访问外网, 具体操作如下
123456789101112# 1. 连接保障机ssh yourserver# 2. 在 /etc/profile.d/proxy.sh 中添加配置vim /etc/profile.d/proxy.sh# 添加如下内容, :wqexport http_proxy=http://172.xx.x.xx:10022export https_proxy=http://172.xx.x.xx:10022export no_proxy="localhost"# 3. source执行profilesource /etc/profile# 4. 测试wget baidu.com
之后可以正常通过 VsCode 的 Remot ...