批处理命令设置环境变量
set path=xxxx
js爬虫
1.js保存字符串到本地
1 | function saveShareContent (content, fileName) { |
2. 包含iframe/#document的文档
1 | var ifram = document.querySelector("#iframe") |
层层剥开,否则在iframe内部的元素会定位失败。在F12界面右键选择“复制js路径”可以获取 querySeletor
语句。
3.滚动至最低部
1 | var ele = document.documentElement; |
必要时可以增加 setTimeout
等待网页加载完毕。
4.逐步滚动
1 | var count = 0; |
electron-vue
如何引入.node文件
需要将.node文件放在public文件夹下,引用时可以用相对路径也可以用 __static
+文件名。
需要安装node-loader@1.0.3。太高的版本会导致问题。
1 | const addon = require("node-loader!../public/addon.node") |
在vue中使用ipcRenderer
主进程中引入ipcMain没啥大问题。
在vue文件中引入ipcRenderer,需要先在vue.config.js中配置
1 | nodeIntegration: true |
然后在各个vue文件中引入
1 | import { ipcRenderer } from 'electron' |
math
一个只跟a, b中最大的那一个有关的积分:
js 小技巧
可变定时检测
问:每隔10秒检测一次当前页面是否包含某字符串,如果包含,则 console.log,下次检测的时间变为 100 秒
答:为了实现这个功能,你可以使用 setInterval
函数来设置一个定期执行的任务。然而,因为你想在满足特定条件时改变间隔时间,你可能需要使用 setTimeout
来代替,因为 setInterval
的间隔时间一旦设定就无法改变。以下是如何实现这一逻辑的示例代码:
1 | function checkContentAndAdjustInterval(searchString, initialDelay, newDelay) { |
这段代码首先定义了一个 checkContentAndAdjustInterval
函数,它接受三个参数:要搜索的字符串 searchString
、初始的检查间隔时间 initialDelay
(以毫秒为单位)、以及在找到字符串后新的检查间隔时间 newDelay
。
在 checkContentAndAdjustInterval
函数内部,定义了另一个名为 checkAndSchedule
的函数。checkAndSchedule
函数首先检查当前页面的内容是否包含指定的字符串。如果包含,它将使用 console.log
输出一个消息,并使用新的延迟时间 newDelay
来安排下一次执行。如果不包含指定的字符串,它将继续使用初始的延迟时间 initialDelay
来安排下一次执行。
最后,checkContentAndAdjustInterval
函数通过调用 setTimeout
并传入 checkAndSchedule
函数和初始延迟时间 initialDelay
来启动整个检查流程。
这种方法的好处是你可以灵活地控制检查的间隔时间,而且它在满足特定条件后能够自动调整这个间隔,非常适合需要根据条件动态调整检查频率的场景。
NFS 常用指令
主要参考:如何在 Ubuntu 20.04 上安装和配置 NFS 服务器? - 知乎 (zhihu.com)
服务端绑定 NFS
直接绑定:
1 | sudo mount --bind /opt/backups /srv/nfs4/backups |
要在重新启动后使绑定挂载永久化,请打开/etc/fstab文件:
1 | sudo nano /etc/fstab |
并添加以下行:
1 | /etc/fstab |
/var/www
为本地需要绑定的文件夹,/srv/nfs4/www
为 NFS 管理的文件夹,必须以 /srv/nfs4
开头。
绑定后,服务端可以修改 /var/www
内的文件,会被自动同步到 NFS 绑定的目录下。
客户端绑定 NFS
为挂载点创建两个新目录:
1 | sudo mkdir -p /backups |
您可以在任何您想要的位置创建目录。
使用以下命令挂载导出的文件系统mount :
1 | sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups |
要在重新启动时永久挂载,请打开/etc/fstab文件并添加以下行:
1 | sudo nano /etc/fstab |
有关挂载 NFS 文件系统时可用选项的信息,请输入man nfs您的终端。
IP 检测
编辑配置文件
1 | sudo nano /etc/exports |
配置文件例子:
1 | /srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0) |
其中,192.168.33.0/24 等为需要过滤的 ip 规则。
应用 ip 设置
1 | sudo exportfs -ar |
查看 ip 检测
1 | sudo exportfs -v |
重启 NFS
1 | sudo /etc/init.d/nfs-kernel-server restart |
WSL 相关
WSL 寄了!
可能是因为配置 nfs 的原因吧,wsl 关掉之后就打不开了。
- wsl 无响应。
- 当 ubuntu 处于停止状态时,
wsl --list
,wsl --status
有响应;但我一旦尝试运行wsl
以启动 ubuntu,就无响应了。 wsl --help
一直没问题。
怀疑是配置 /etc/fstab
的时候出的问题,导致 wsl 无响应。
后来的解决方案:
- 把
ext4.vhdx
备份了一份。 - 卸载 ubuntu distro,重新安装了一遍 ubuntu 22.04。
wsl --mount --vhd
将ext4.vhdx
挂到新安装的 ubuntu wsl 上。
幸好 ext4.vhdx
还在。
另外,挂完 ext4.vhdx
后,我将存有 ext4.vhdx
的移动硬盘拔出,然后重新打开 wsl,发现出现了同样的问题。这样就验证了我的假说:
- 我设置了开机默认挂载 nfs 硬盘,连接远程的服务器。
- nfs 服务器因为一些原因没连上。
- wsl 文件系统因为挂载的硬盘找不到了,发生错误。
- wsl 在启动界面无响应。
重启了电脑,发现之前 wsl --mount
挂载的 ext4.vhdx
已经被清空了,证明 wsl –mount 命令的效果在重启之后清空了。
yarn add hasura-cli 安装失败
报错:
1 | Command: node dist/index.js |
解决方案:手动下载 hasura-cli 的二进制文件,并粘贴到 node_modules/hasura/
。
SSH 相关
服务器共用怎么设置自己的环境变量
在 vscode user settings 中添加:
1 | "terminal.integrated.env.linux": { |
在启动文件(例如 .bashrc
)中添加:
1 | # used for zzz's bash init if the env var below is defined |
ssh 服务器
使用 ssh-keygen
时最好设置一个口令,否则别人也能用这个密钥。
常用命令
ssh 反向代理(服务器端口映射到本地端口),挂在后台
1 | ssh -CqTfnN -R <remote_port>:localhost:<local_port> -v username@hostname -p <ssh_port> |
ssh 前向代理(本地端口映射到服务器端口)
1 | ssh -CqTfnN -L <local_port>:localhost:<remote_port> -v username@hostname -p <ssh_port> |
将请求转发到 github
1 | ssh -CqTfnN -L <local_port>:github.com:22 -v username@hostname -p <ssh_port> |
ssh agent
启动 ssh agent,并查看 pid
1 | eval $(ssh-agent -s) |
查看当前 agent 有哪些密钥
1 | ssh-add -l # 查看公钥的 sha256 |
添加密钥
1 | ssh-add <private_key_path> |
Node.js
listen EACCES: permission denied 0.0.0.0:3000
1、先判断是否是端口占用的问题导致的 netstat -ano| findstr 3000
关闭相关进程(cmd)
1 | taskkill /PID <process_id> /F |
发现并没有程序在使用这个端口
2、改用管理员再运行一遍
发现仍然不行
3、使用管理员权限运行以下命令
net stop winnat
net start winnat
Pytorch
Llama 架构
使用 Tensorboard
1 | from torch.utils.tensorboard import SummaryWriter |
记录神经元的激活值
1 | from torch import nn |