迁移通知
后续请大家继续关注博客:
- 感谢这一年来
GitLab
的陪伴,并且为了在GitLab
上面管理博客我还专门开始了脚本diary.sh
. 但是由于GitLab
要强制迁移到极狐GitLab
, 并且后者是收费的,所以本博客不得不选择迁移回GitHub
. - 2025年01月10日, 计划删除博客
fengzhenhua-vip
, 仅维护前两个。
后续请大家继续关注博客:
GitLab
的陪伴,并且为了在GitLab
上面管理博客我还专门开始了脚本diary.sh
.
但是由于GitLab
要强制迁移到极狐GitLab
,
并且后者是收费的,所以本博客不得不选择迁移回GitHub
.fengzhenhua-vip
,
仅维护前两个。今天升级syndns.sh
脚本,升级为默认DNS
服务器为多个,当一个DNS
服务器探测失败后使用下一个DNS
服务器继续探测,从而大大提高了脚本的探测能力。在升级过程中,需要用到将默认DNS
服务器数组作为参数传递到函数的问题,于是有了本文。
$@
1 | #!/bin/bash |
在上述例子中,使用for
循环和$@
遍历传递给脚本的所有参数,并逐个输出这些参数。其优点在于简洁,但也存在缺点,即无法指定输出哪一个参数。所以,对于不需要识别参数具体位置的情况,使用变量$@
来遍历参数是个不错的方案。
$#
变量$#
返回参数的数量,使用它配合$@
可以指定输出确定位置的参数。例如
1 | test(){ |
${arr[@]}
或
${arr[*]}
在for
的展开位置,可以使用上述两条命令,来逐一调用数组变量。例如
1 | for ipc in ${SYN_IP[*]}; do |
需要注意的是,在将数组作为参数传递给函数时,参数形式只能使用"${Arr[*]}"
才行。例如
1 | SYN_DN2IP "${SYN_GITHUB[*]}" "$SYN_REC" |
syndns.sh
V2.11 | #! /bin/sh |
近日决定升级一下路由器,最初从京东自营店购买的TP-BE5100, 但是发现收到的货是二手的,所以果断决定退货。经过对比,选择了口碑良好的华硕TUF-GAMING 小旋风 WiFi7 BE3600, 以过一下午的使用发现这款路由器确实值得购买。
TUF-GAMING 配置了一个 USB3.0 接口,通过这个接口我们可以设置自己的网络硬盘,这是一个相当实用的功能。下面是其设置方法:
DDNS
,
然后输入一个主机名,如果没有被占用,则可以成功开启,如果被占用则要更改新的主机名。USB相关应用
→AiDisk
,
然后根据向导设置就可以了。设置完成的样子: 1 | 您曾经设置过AiDisk向导,现在可参考以下信息来访问硬盘: |
之后在文件管理器中输入上述 Internet
或LAN
的
ftp
地址,输入帐号名和密码就可以访问路由器U
盘接口上连接的U盘
了。
AiCloud
提供了外网通过浏览器访问U
盘接口上连接的U盘
的功能。直接点击AiCloud 2.0 个人云2.0 应用
根据提示设置就好。但是这里设置遇到了一些问题,比如
在 neovim 中编辑 LaTeX 使用 vim-latex 插件是一个绝佳选择。然而,有时候写论文需要使用官方的 LaTeX的模板,但是不同出版社的模板设置多少有些不符合 LaTeX 规范,于是就会有字体等 Warning 信息出现,但是这些信息又不是 LaTeX 必须处理的,它们是可以忽略的。如果不忽略它们,每次编译 quicfix 窗口都会弹出提示,这极大的影响的写作体验,为此本文提供屏蔽这些信息的方法。
1 | -- 控制统计过程中的警告信息 |
1 | " 控制编译过程中的警告信息 |
注意:如果您想追加需要过滤的消息,请按上述标格式对应添加到Tex_IgnoredWarnings
变量中即可,这样在nvim
或vim
中输入\ll
时,系统直接编译不再弹出quicfix
窗口。
Mbps
到MB/s
转换计算器允许用户将
Mbps
(兆位每秒)和MB/s
(兆字节每秒)这两个术语常用于计算和网络中描述数据传输速率。它们的区别在于测量单位:
1字节=8比特,这意味着从Mbps到MB/s的转换需要将Mbps值除以8。
此转换对于理解互联网速度、文件下载时间和网络设备的性能非常重要。例如,广告宣传的互联网速度为100 Mbps
,转换为12.5 MB/s
,这表明数据实际下载或上传的速度。
将Mbps
转换为MB/s
的公式很简单:
\[\begin{equation}\label{eq:translate} MB/s=\frac{Mbps}{8} \end{equation}\]
Mbps
是以兆位每秒为单位的数据速率.MB/s
是以兆字节每秒为单位的数据速率.最近使用 lugit.sh
取代了 zugit.sh
,
它可以把仓库建立在本地硬盘而不是像zugit.sh
那样把仓库建立在U盘
,
原因是U盘
的质量太差了,如果不小心U盘
丢失了,那所有的源文件就丢了。综合考虑后,还是将仓库建立在台式机本地硬盘,进一步将仓库镜像到U盘
,
可以实现不同电脑间的仓库离线同步。同时,对于保密性不太强的文件,完全可以直接使用网络仓库,如gitee
、gitlab
等。但是在同步的时候,需要修改一下远程仓库的默认分支,以实现每次本地仓库的同步都能只占一个分支,这样也可以节省远程仓库空间。
分支
左边的小箭头→管理
→右侧切换分支
(一个向左向右的前头图标)切换分支
下面的非默认分支是可以删除的。Settings
→Repository
→Branch defaults
,
修改为新的分支即可。Branch
,则非默认分支是可以删除的。bash 支持一维数组(不支持多维数组),并且没有限定数组的大小。类似 C 语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0.
数组的个数称为数组长度,获取数组长度的标准方法为:
1 | length=${#array_name[@]} # 取得数组元素的个数 |
在 Shell 脚本中经常需要添加前缀和后缀,如果使用循环的方式自然可以,但是从效率和规范上讲都不是最佳方式。本文记录标准添加前缀和后缀的方法。2024年12月14日星期六晴北京市
1 | PREFIX="rajiv" |
PREFIX
.tr -d
去除字符/
.services
的所有$PREFIX-
.services
的所有-$PREFIX
.services[@]
表示数组的所有元素,也可以用services[*]
表示.在数学物理学中,格拉斯曼数(又称反交换数)是一种用于狄拉克场路径积分表示的数学架构。格拉斯曼数是以德国学者赫尔曼·格拉斯曼命名的。取任意两个格拉斯曼代数\(\theta\)和\(\eta\), 则它们之间成反交换关系,即 \[\begin{equation} \theta\eta=-\eta\theta \label{eq:grassmann0} \end{equation}\] 同时格拉斯曼变量与一般的数\(x\)则为交换关系,即 \[\begin{equation} \theta x=x\theta \label{eq:grassmann1} \end{equation}\]
由于\(\theta^2=-\theta^2\), 所以有\(\theta^2=0\), 于是任意函数\(f(\theta)\)泰勒展开为 \[\begin{equation} f(\theta)=A+B\theta \label{eq:grassmann2} \end{equation}\] 既然函数\(f(\theta)\)是任意的,所以对于一个周期函数也必然成立,即 \[\begin{equation} \int f(\theta)d{\theta}=\int f(\theta+T)d{\theta} \label{eq:grassmann3} \end{equation}\] 把式\(\eqref{eq:grassmann2}\)代入到式\(\eqref{eq:grassmann3}\)可得 \[\begin{equation} \int A+B\theta d{\theta}=\int A+B\theta d{\theta}+BT\int 1 d{\theta} \label{eq:grassmann4} \end{equation}\] 由于对于任意的周期函数都成立,所以必然有 \[\begin{equation} \int 1d{\theta}=0 \label{eq:grassmann5} \end{equation}\] 对式\(\eqref{eq:grassmann2}\)积分得 \[\begin{equation} \int f(\theta)d{\theta}=B\int \theta d{\theta} \label{eq:grassmann6} \end{equation}\] 式\(\eqref{eq:grassmann6}\)中的积分不能对所有函数都是零,所认定义对\(\theta\)的积分为\(1\), 即 \[\begin{equation} \int \theta d{\theta}=1 \label{eq:grassmann7} \end{equation}\]