堡垒机连接
- 堡垒机连接 #快捷命令
ssh username@目标机器IP -p 22 -J username@跳板机IP:22
- 多个堡垒机,使用空格分割
文件夹大小排序
- 文件夹大小排序 #快捷命令
du -sh ./* | sort -rn
使用默认应用打开
see index.html
查看文件MIME类型
file --mime-type (file-name)
修改文件默认打开方式
alias open='xdg-open'
mimetype filename
- 加到~/.config/mimeapps.list
[Default Applications]
inode/directory=nautilus.desktop
video/x-matroska=mpv.desktop
mdbook
#!/usr/bin/env python3
# coding=utf-8
#!/usr/bin/python3
# coding=utf-8
import os
import sys
result = "#Summary\n\n"
is_sort = True
def createBook(file, tab, path):
global result
if is_sort:
file.sort()
for name in file:
temp = os.path.splitext(os.path.basename(name))[0]
dirname = path+name
if os.path.isdir(dirname):
base = path+name+"/README.md"
if os.path.isfile(base) == False:
base = ""
if os.path.isfile(dirname+".md"):
base = dirname+".md"
result = result+tab+"- ["+temp+"]("+base+")\n"
createBook(os.listdir(dirname), tab+"\t", path+name+"/")
else:
if name == "README.md" or name == "SUMMARY.md":
continue
# 获取文件的非后缀部分
file_path = os.path.splitext(dirname)[0]
if os.path.isdir(file_path):
continue
# 获取文件的后缀
file_ext = os.path.splitext(dirname)[1]
if file_ext != ".md":
print("Warning:", dirname, "is not md file,ignore")
continue
base = path+name
result = result+tab+"- ["+temp+"]("+base+")\n"
def main():
global result
if len(sys.argv) == 1:
print("Usage: python3 update.py {dir_path}")
return
dir_path = sys.argv[1]
if os.path.isdir(dir_path) == False:
print("dir is not exist")
return
os.chdir(dir_path)
if os.path.isfile("./SUMMARY.md"):
os.remove("./SUMMARY.md")
if os.path.isfile("./README.md"):
result = result+"- [README](./README.md)\n"
createBook(os.listdir("."), "", "./")
f = open("./SUMMARY.md", "w+")
f.write(result)
f.close()
os.chdir("..")
print(" create ok")
if __name__ == "__main__":
main()
磁盘挂载
垃圾ibus
- ibus-daemon -r -d -x## fcitx词库
- https://zhuanlan.zhihu.com/p/508797663
fcitx ctrl-;
- https://zhuanlan.zhihu.com/p/113980639
fcitx候选词调整
- 配置 -> 双击 ->候选词顺序全部调整为快速
fcitx全角半角
sudo apt-get install fcitx-ui*
然后重启打开输入法就可以看到选项了- 傻逼fcitx如果需要设置的话需要在输入法中设置
拼音
这个输入法进行设置,右键点击,需要出现大一点的画面才能进行设计,太愚蠢了,其他的输入法无法进行设置,推荐默认半角,全角都是傻逼
bashrc和profile
~/.bash_profile
是交互式、login 方式进入 bash 运行的~/.bashrc
是交互式 non-login 方式进入 bash 运行的
如果只需要执行一次,推荐放入profile,否则通通放入bashrc login方式使用的是登录系统获得的顶层shell no-login使用套娃的shell
mint开机错误
vim /etc/default/grub
- 修改
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3"
sudo update-grub
mint非显卡驱动问题
sudo apt dist-upgrade
sudo apt upgrade
>upgrade:系统将现有的 Package 升级,如果有相依性的问题,而此相依性需要安装其它新的 Package 戒影响到其它 Package 的相依性时,此 Package 就丌会被升级,会保留下来. dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的 Package,就会试着去安装/移除它. (所以通常 dist-upgrade 会被认为是有点风险的升级)
key证书生成pem证书
openssl rsa -in (key name).key -out (new name).pem
自签名证书 openssl 生成
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout privkey.pem -out cacert.pem -days 3650
[!tip] 参考 openssl生成pem数字证书_openssl使用tls1.2生成pem-CSDN博客 Openssl生成自签名证书,简单步骤 - 凝雨 - Yun
stderr和stdout区别
- stderr不缓存,直接输出到屏幕
- stdout行缓冲,等一行再输出
禁用密码登录
- 修改SSH的配置文件/etc/ssh/sshd_config
- 将
PasswordAuthentication yes
修改为PasswordAuthentication no
查询进程的完整路径
- 获取进程的pid,可以使用
lsof
,ps aux|grep {name}
等方式 - 运行
ls -l /proc/{pid}/exe
将docker容器日志保存
docker logs 容器id &> $(date '+%Y%m%d%H%M%S').log
1> 或 > :把STDOUT重定向到文件
2> :把STDERR重定向到文件
&> :把标准输出和错误都重定向
>& :和上面功能一样,建议使用上面方式
source和直接运行区别
- 直接执行脚本文件:当直接执行脚本文件时,操作系统会新建一个子进程来运行脚本文件,这个子进程将作为父进程的一个子进程存在。因此,父进程无法访问子进程中定义的变量和函数。而且,子进程中对环境变量、当前目录等的修改也不会影响到父进程。
- 使用source命令调用脚本文件:当使用source命令调用脚本文件时,脚本文件中定义的变量和函数将在当前shell环境中生效,而不是在一个新的子进程中被执行。因此,通过source命令调用脚本文件可以实现在当前shell环境中定义变量、函数等操作,同时也可以访问在其他地方定义的变量和函数。
xmodmap使用
按键重新映射
1. 获取键码
- xev
2. 获取按键名字
- xmodmap -pke | grep 键码 (所有键码)
- xmodmap -p 获取修饰按键信息
3. 设置按键映射
remove lock = Caps_Lock # 将产生lock的按键列表中除去caplock按键
add control = Caps_Lock # 将ctrl按键列表中添加Caps_Lock按键
keycode 66 = Control_L # 将66(原来是caplock)映射按键名字为Control_L
firefox阅读模式
- 我平等的鄙视csdn和已经所有现在还在csdn上发文的人
about:config
后reader.parse-on-load.enabled
则只为true- 网页url前加上
about:reader?url=
firefox阻止不安全混合
- https网页中相互先有http请求的内容自动拦截,解决办法
将caplock映射为中英文切换
- 将caplock设置为menu按键(使用系统设置或者xmodmap)
- 将menu按键设置为中英文切换按键(使用输入法设置)
触控板设置mac类似手势
#cmd
# libinput-gestures-setup start|stop|restart|autostart|autostop|status|remove
#install
# sudo gpasswd -a $USER input(remember to boot)
# git clone https://github.com/bulletmark/libinput-gestures.git
# cd libinput-gestures
# sudo ./libinput-gestures-setup install
#uninstall
# libinput-gestures-setup stop autostop
# sudo libinput-gestures-setup uninstall
#update config
# libinput-gesture-setup restart
#doc
# https://github.com/bulletmark/libinput-gestures
gesture swipe up 3 xdotool key Ctrl+Alt+Down(这部分快捷键根据键盘设置的快捷键进行)
gesture swipe left 3 xdotool key Ctrl+Alt+Tab
gesture swipe right 3 xdotool key Shift+Ctrl+Alt+Tab
ssh长时间无操作自动断开
以下操作只需要执行一个
客户端
vim ~/.ssh/config
Host *
ServerAliveInterval 30
ServerAliveCountMax 2
- 重新启动终端ssh
服务器
- sudo vim /etc/ssh/sshd_config
- 查找以下注释字段取消注释或直接添加至文件
ClientAliveInterval 60
ClientAliveCountMax 3
zotero黑暗模式设置
- 插件链接,步骤参考
- 如果找不到pdf的按钮可以通过
alt+shift+c
去快速切换模式(zoter-dark-7插件有):7.0.0-beta.65+b047f3d90 (64-bit) 0.1.0-2
zotero同步设置
- 参考【工程笔记】搭建Zotero同步服务器 - 知乎
- 搭建webdev参考docker > docker安装脚本
批量替换文件内容
mac 需要
brew install gnu-sed
然后用gsed
- sed+grep
sed -i "s/{查找内容}/{替换内容}/g" \`grep "{查找内容}" -rl ./ --exclude-dir=".git"\`
- sed+find
#!/bin/bash
# 检查参数数量
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <old_string> <new_string>"
exit 1
fi
# 在当前目录及其所有子目录中查找并替换目标字符串
# 根据操作系统设置sed命令参数
if [[ "$OSTYPE" == "darwin"* ]]; then
# 如果是Mac,使用空字符串作为备份后缀
find . -path './.git' -prune -o -type f -exec sed -i '' "s|$1|$2|g" {} +
else
# 如果是Linux,省略备份参数
find . -path './.git' -prune -o -type f -exec sed -i "s|$1|$2|g" {} +
fi
echo "String replacement completed."
为clash默哀
- https://clashxhub.com/clash-backup-download/
- CharlesWolff6/airport: 翻墙机场推荐 (github.com)
clash linux设置
- 解压后运行,将链接放到
clash ->profiles
中并点击download - 默认绑定顶端口为7890,这个可以自己设置,在
clash->general
第一个设置就是,用lsof -i:8889
看一下是否更改成功 - 在
网络设置-> 网络代理 -> 设置为手动设置并且全部更改为127.0.0.1:8089
- 退出clash的时候记得关闭网络代理
html格式化
#!/bin/bash
clear
echo $1
cat $1 > HTML
echo -n "cat HTML " > CMD
#eval $(cat CMD)
TAGS=$(cat HTML |sed 's/</\n</g' |awk -F " " '{print $1}' |grep -v "</\|?\|&&\|!" |awk -F "<|>" '{print $2}' | sort -u |xargs);
echo $TAGS;
for tag in ${TAGS[@]}; do cmd="|sed 's/<$tag/\n<$tag/g'"; echo -n $cmd >> CMD; done;
#cat CMD;
eval $(cat CMD) | tee -a HTML
rm CMD
rm HTML
打包下载gitlab库
- token需要去setting生成
#!/usr/bin/env python3
# coding=utf-8
import requests
import os
from urllib.parse import urlparse
base_url=input("Enter Gitlab Group Url: ")
parsed_url = urlparse(base_url)
domain = parsed_url.netloc
group = parsed_url.path.strip('/').split('/')[-1]
base_url = f"https://{domain}/api/v4/"
token=input("Enter Gitlab Access Token: ")
param=input("Enter Git Clone Param (optional): ")
def gitlab_api_request(endpoint, params=None):
# base_url = "https://gitlab.demo.cn/api/v4/" # 请替换为你的 GitLab 实例 URL
# token = "demo" # 请替换为你的 GitLab 私有访问令牌
headers = {"PRIVATE-TOKEN": token}
response = requests.get(base_url + endpoint, headers=headers, params=params)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"GitLab API request failed with status code {response.status_code}: {response.text}")
def clone_project(project, path='.'):
project_path = os.path.join(path, project['path_with_namespace'])
project_url = project['ssh_url_to_repo'] # 使用 SSH 克隆链接
# Clone the project
os.system(f"git clone {param} {project_url} {project_path}")
def clone_group_recursive(group_id, path='.'):
group_info = gitlab_api_request(f"groups/{group_id}")
group_name = group_info['name']
group_path = os.path.join(path, group_name)
os.makedirs(group_path, exist_ok=True)
# Clone projects in the group
projects = gitlab_api_request(f"groups/{group_id}/projects")
for project in projects:
clone_project(project, group_path)
# Recursively clone subgroups
subgroups = gitlab_api_request(f"groups/{group_id}/subgroups")
for subgroup in subgroups:
subgroup_id = subgroup['id']
clone_group_recursive(subgroup_id, group_path)
if __name__ == "__main__":
# group_id = input("Enter GitLab Group ID: ")
destination_path = input("Enter Destination Path (default is current directory): ") or '.'
clone_group_recursive(group, destination_path)
print(f"Cloning of GitLab Group {group} and its subgroups completed.")
agent refused operation
- 出现这个问题看一下私钥是不是600的权限,大部分是.ssh权限的设置出问题了
termux
- ubuntu系统搭建参考
- root用户
termux-chroot
命令 - 电脑远程连接手机termux参考
pkg install openssh
sshd # 开启ssh连接
- 复制ssh密钥
ssh -p 8022 <user>@<IP地址>
- termux访问手机文件夹,参考文章
pkg install termux-api
termux-setup-storage
cd ~/storage
linux文件目录
系统目录作用
.
├── bin -> usr/bin # 可执行文件的文件夹
├── boot # 这个目录用来存放系统启动所需文件、内核, 开机菜单以及所需配置的文件等
├── dev # 存放外设,例如串口等
├── etc # 配置目录,例如nginx
├── home # 家目录
├── lib -> usr/lib # 存放着系统最基本的动态连接共享库
├── lib32 -> usr/lib32 # 32位动态库
├── lib64 -> usr/lib64 # 64位动态库
├── libx32 -> usr/libx32
├── lost+found # 一般情况下是空的,当系统非法关机后,这里就存放了一些文件
├── media # 自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
├── mnt # 挂载目录
├── opt # 给主机额外安装软件所摆放的目录
├── proc # 存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射
├── root # root用户默认目录
├── run # 临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
├── sbin -> usr/sbin # root使用的bin
├── srv # 存放一些服务启动之后需要提取的数据。
├── swapfile # 交换文件
├── sys
├── tmp
├── usr # usr 是 unix shared resources(共享资源) 的缩写
└── var # var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- 用户自定义desktop地址
~/.local/share/applications/
ssh github无法连接
- 首先检查ssh时能能通,参考常用命令 > DNS
- 尝试使用443端口进行push
- 编辑~/.ssh/config
- 插入代码
- 再次尝试是否能push
Host github.com
Hostname ssh.github.com
Port 443
User git
- 如果还有问题开梯子之后设置git代理,这部分参考gitothers > git 设置代理
有时,防火墙会完全拒绝允许 SSH 连接。 如果无法选择使用具有凭据缓存的 HTTPS 克隆,可以尝试使用通过 HTTPS 端口建立的 SSH 连接克隆。 大多数防火墙规则应允许此操作,但代理服务器可能会干扰。
ssh免密登录失败
- 大概是权限问题,排查思路参考解决SSH免密登录配置成功后不生效问题-百度开发者中心
- 主要通过
/var/log/auth.log
查看问题
Clash 终端代理
- 一次性设置,关闭终端自动取消
export https_proxy=http://127.0.0.1:8889;
export http_proxy=http://127.0.0.1:8889;
export all_proxy=socks5://127.0.0.1:8889;
- 删除变量用unset
unset https_proxy
unset http_proxy
unset ftp_proxy
unset all_proxy
[!tip] 参考 https://docs.github.com/zh/authentication/troubleshooting-ssh/using-ssh-over-the-https-port
npm
查看包的所有历史版本
- 运行
npm view <包名> versions
yarn/npm install 下载不了
- 把 yarn.lock 直接删掉或者将其里面的链接替换成国内镜像的
- 具体参考 使用yarn安装依赖包出现“There appears to be trouble with your network connection. Retrying...”超时的提醒 - Qubernet - 博客园
OCR
- 安装:
sudo apt install tesseract-ocr
,安装语言包sudo apt-get install tesseract-ocr-chi-sim
- 使用
tesseract <需要ocr的图片> stdout -l chi_sim
jsDelivr失效问题
- 静态连接中的cdn.jsdelivr.net/npm 换成 unpkg.com 仅限npm部分,或者改成fastly.jsdelivr.net/npm 也可以
- unpkg.com 速度还是很慢, unpkg.com 换成 s4.zstatic.net/npm 参考CDNJS/UNPKG/JSDelivr 太慢用不了,换成这些国内高速镜像-阿里云开发者社区
- 其他的考虑更换其他的cdn
博客跨域图片问题
- html中加上
<meta name="referrer" content="never">
[!tip] 参考 隐藏来源 禁用Referrer 的方法 - 枫若 - 博客园
kill
- #快捷命令 kill快速杀死某个进程
kill -9 `ps aux |grep mirrormaker|awk '{print $2}'`
软件收集
- #推荐软件/linux
- 浏览器插件:
查看程序占用哪几个端口
- #快捷命令 查看程序占用哪几个端口
lsof -i -P | grep ssh
/lib64/libstdc++.so.6: version 'CXXABI_1.3.8‘ not found
- libstdc++库的问题,找到正确的so文件
mkdir -p ~/.local/lib64;cp <right so file> ~/.local/lib64
创建文件夹export LD_LIBRARY_PATH=$HOME/lib64:$LD_LIBRARY_PATH
设置环境变量,推荐加入~/.bashrc之后source立刻生效
/libc.so.6: version GLIBC_2.34' not found
sudo vi /etc/apt/sources.list
- 添加
deb http://th.archive.ubuntu.com/ubuntu jammy main #添加该行到文件
- 运行升级
sudo apt update
sudo apt install libc6
[!tip] 参考 version `GLIBC_2.34‘ not found简单有效解决方法_glibc 2.34 not found-CSDN博客
ras密钥生成
- #快捷命令
ssh-keygen -t rsa
生成ras公私钥
Bad owner or permissions on .ssh/config
chmod 600 ~/.ssh/config
ssh远程执行命令
- 使用
ssh <name>@<ip> "要执行的bash命令"
gitbook下载
- 使用工具fuergaosi233/gitbook2pdf: Grab the contents of the gitbook document and convert it to pdf (github.com)
- ps:似乎有的没办法生成,只有旧版的支持
docker部署
推荐使用这种
本地部署
一大堆问题,不推荐
pip install -r requirements.txt && python3 gitbook.py <url>
- 错误解决:
fatal error: ffi.h: No such file or directory
ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.
OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2 / cairo.so.2
OSError: cannot load library 'pango-1.0':
- 其他的安装依赖包基本上差不多,缺什么就apt 安什么
- 中文pdf乱码的问题
- 中文全部乱码 · Issue #71 · fuergaosi233/gitbook2pdf (github.com)
apt-get install fonts-wqy-zenhei language-pack-zh-hans
- 中文全部乱码 · Issue #71 · fuergaosi233/gitbook2pdf (github.com)
正则表达式
前瞻,后顾,负前瞻,负后顾
// 前瞻:
exp1(?=exp2) exp1后边是exp2就匹配
// 后顾:
(?<=exp2)exp1 exp1前边是exp2就匹配
// 负前瞻:
exp1(?!exp2) exp1后边不是exp2就匹配
// 负后顾:
(?<!exp2)exp1 exp1前边不是exp2就匹配
查找上次内存吃太多的命令
sudo cat /var/log/syslog | grep -i "out of memory"
rust
cargo加速
- 编辑
$HOME/.cargo/config
- 修改为
[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
rust-analyzer Fetching metadata
- 运行
rm -rf ~/.cargo/.package-cache
bing Access Denied
- windows 下参考 https://answers.microsoft.com/zh-hans/microsoftedge/forum/all/bing%E4%B8%BB%E9%A1%B5%E6%89%80%E6%9C%89%E6%90%9C/5a7036e7-e5e8-433c-8363-38c42e12d8e7
Snap卸载
apt remove --autoremove snapd
- 如何在Ubuntu中完全移除Snap-腾讯云开发者社区-腾讯云
apt出现restart选项
- 编辑
/etc/needrestart/needrestart.conf
文件 - 找到下面这行, i 代表交互式重启 a 代表自动重启, l 代表列出,直接改成 l
#$nrconf{restart} = 'i';
日志清理
- 通过下面的命令实现,具体参考Linux /var/log/日志文件太大,清理journal就行_/var/log很大,能删除吗-CSDN博客
journalctl --vacuum-time=2d
journalctl --vacuum-size=500M
快速配置nginx的https证书
certbot
使用的是let's encrypt 和 certbot,目前只支持nginx和apache
- 安装
apt install certbot python3-certbot-nginx
- 使用
certbot --nginx
按照提示进行填写 - 运行
crontab -e
然后添加0 0 1 * * /usr/bin/certbot renew --quiet
,这样每个月第一天都会尝试进行更新
acme.sh
使用的是let's encrypt 和 acme.sh
- 下载
curl https://get.acme.sh | sh
,不推荐,因为服务器难连github,推荐方式git clone https://gitee.com/neilpang/acme.sh.git;cd acme.sh;./acme.sh --install -m <自己的邮箱>
- 参考创建阿里云AccessKey_访问控制(RAM)-阿里云帮助中心获取阿里云的secret id和key,如果没有用户首先创建用户,然后对用户进行授权,搜索权限dns全部选择
export Ali_Key="xxx" && export Ali_Secret="xxx"
设置环境变量,然后设置./acme.sh --issue --dns dns_ali -d example.com -d *.example.com
获取证书- 安装证书(证书的默认位置在
/root/.acme.sh/<域名>
),更新证书用--renew
,pem文件本质是通用的
./acme.sh --installcert -d <domain>.com --key-file /etc/nginx/ssl/<domain>.key --fullchain-file /etc/nginx/ssl/fullchain.cer --reloadcmd "service nginx force-reload"
- 参考
run.sh
export Ali_Key=""
export Ali_Secret=""
domain=""
mkdir ~/cert
./acme.sh --issue --dns dns_ali -d $domain -d *.$domain
./acme.sh --installcert -d $domain --key-file ~/cert/$domain.key --fullchain-file ~/cert/$domain.cert
[!tip] 参考 acme.sh使用阿里云DNS申请Let’s Encrypt的https证书_acme.sh 阿里云-CSDN博客
证书管理
- 非交互式
certbot \
--non-interactive \
--standalone \
--email mymail@provider.com \
--agree-tos \
--no-eff-email \
--domains mydomain.com \
--installer nginx
- 展示证书
certbot certificates
- 更新证书
certbot renew
- 撤销证书
certbot revoke --cert-name <证书名字>
[!tip] 参考 如何使用 Let's Encrypt 和 Certbot 获取免费的 SSL/TLS 证书 在 Ubuntu 22.04 上使用 Let‘s Encrypt 配置 Nginx SSL 证书_ubuntu let's encrypt-CSDN博客
clash server服务器配置
- 上 Release 1.18 · Kuingsmile/clash-core · GitHub 下载最新的 clash-core(gitee上有这两个文件的压缩包)
- 从 Country.mmdb 下载文件,放到
~/.config/clash/
(没有就创建这个文件夹) - 创建
~/.config/clash/config.yml
,将自己的clash的配置文件(某个长长profile粘贴进入) - 运行二进制文件,配置终端代理如下,参考Clash 终端代理
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
PhantomJS部署
无头浏览器截图神器, 用于直接保存网络快照
- 下载二进制文件下载 | PhantomJS或者 gitee
- 注意以下,运行二进制之前需要添加
export OPENSSL_CONF=/dev/null
- 网页截图参考下面js,将js文件作为参数传入二进制就可以了
var page = require('webpage').create();
page.open('https://www.gov.cn/', function() {
page.render('result.png');
phantom.exit();
});
- 总结shell脚本
#!/bin/bash
export OPENSSL_CONF=/dev/null
# read url from first argument,if not set ,exit and print usage
# read result name from second argument,if not set,use result.png
if [ -z $1 ]; then
echo -e "Usage: $0 <url> <result_name>\n\turl: the url to capture\n\tresult_name: the name of the result file\n
Snapshot the website from url and save it as a png file\n"
exit 1
fi
if [ -z $2 ]; then
result_name="result.png"
else
result_name=$2
fi
url=$1
tmp_file=`mktemp`
echo -e "var page = require('webpage').create();page.open('$url', function() { page.render('$result_name'); phantom.exit(); });" > $tmp_file
~/file/app/others/phantomjs-2.1.1-linux-x86_64/bin/phantomjs $tmp_file
Obs
扩展屏录制
- 来源那里双击屏幕捕捉,设置就可以了
画质设置
- 文件 -> 设置 -> 视频 -> 输出分辨率
KeeWeb
手机端推荐使用keepass2android
webdev同步指南
- 坚果云获取帐号密码, more -> webdev
- 设置 -> 存储 -> 点击始终重新加载文件,保存方式为 以PUT方式覆盖文件
- 主界面输入信息
- 然后回到主界面是让你输密码的,而不知报错返回的
- 调整为中文(通过插件那里下载plugin)
markdown
- github 插入视频的方法为
<video src="" controls="controls" width="500" height="300"></video>
记得前面后面空一行,参考 使用Markdown语言在博客的文章中添加视频 · GitHub
输入法
- linux 下 sunpinyin是最好用的,以及需要使用fictx框架进行安装
chrome
安装
sudo apt install chromium-browser
直接安装
黑暗模式
- 参考 zhuanlan.zhihu.com/p/494984745
- 打开
chrome://flags/
然后搜索darkmode就可以了
存储限制
- 需要将“关闭所有窗口时清除 Cookie 及网站数据”开关关闭
[!tip] 参考 chrome浏览器存储空间只有300MB左右的解决方法
服务器问题
no route to host 无法连接
- 防火墙的问题
sudo systemctl stop firewalld.service
关闭就可以了
github
github 真的是太好用了. 真的是赛博活佛, 不得不说这玩意比gitee那种纯垃圾好用多了
在线编辑器
- 在 仓库 界面 按下
.
自动打开类似vscode的界面, 在线编辑更改小细节更加简单
codespace
- 更加炸裂的功能, 基本上就是云上开发机器, 对某个仓库
Code
->CodeSpace
打开, 直接一分钟初始化一个环境出来, 可以直接运行并下载文件, 可以绑定端口进行转发- 意味着未提供可执行文件的仓库完全可以在codespace直接编译, 完全不需要在本地仓库进行编译(特别是前端的项目)
- 以后如果要改造github项目直接fork然后创建space的了,不需要弄麻烦的本地编译环境了
- 免费额度是15 GB/月存储 120 每月核心小时数
[!tip] 参考 GitHub Codespaces 快速入门 - GitHub 文档 关于 GitHub Codespaces 的计费 - GitHub 文档
CICD
最新的 release链接
- 类似
https://github.com/<username>/<reponame>/releases/latest/download/<assetname>
excalidraw
支持latex 和中文 搭建
- 仓库链接 GitHub - chenxuan520/excalidraw: excalidraw 中文支持latex 公式版 可以直接通过这个链接下载release成品
- latex:
- 通过原仓库的 GitHub - excalidraw/excalidraw at danieljgeiger-mathjax 分支部署实现
- 中文:
- 参考 使用excalidraw搭建自己的中文手写画板_excalidraw教程-CSDN博客 中的方式, 如果shabicsdn变成vip了可以直接参考 result.png
- 或者直接参考 feat:add chinese fonts · chenxuan520/excalidraw@ad4a3bf · GitHub 这个提交的改动
- 需要注意的是, 如果要 修改 icon 上 Remix Icon - Open source icon library 选择喜欢的icon, 选择copy svg , 将 path 里面的部分copy 放到icon的path中 参考 feat: add icon · chenxuan520/excalidraw@49f4729 · GitHub
- 修改这种仓库的代码最好的方式是使用 codespace
[!tip] 相关网站 Excalidraw | Hand-drawn look & feel • Collaborative • Secure Remix Icon - Open source icon library
卸载 deb包
apt list --installed | grep -i chrome
查询, 然后apt remove
卸载掉
[!tip] 参考 zhuanlan.zhihu.com/p/548692652
ping: Temporary failure in name resolution
- dns 解析的问题, 在
/etc/resolv.conf
最后加上nameserver 8.8.8.8
即可
查询进程的父进程
通常用于某个傻逼进程开了守护进程, 杀了自动重启的问题
ps -ef
第三列就是父进程pid, 第二列是本身的pid