通识
通识
Programming
行尾序列
LF
- 换行 - Unix/macOS(\n)CR
回车 - Classic MacOS(\r)CRLF
回车换行 - Windows(\r\n)
CLion 编辑代码保存时会自动替换行尾为当前行尾序列。
在 Windows 下使用 CLion, 使用回车换行作为行尾可以正常编译运行代码
单独使用回车或换行作为行尾时会编译出错
配置文件
toml
在 python 中,该选择哪个 toml 包呢? - 知乎 (zhihu.com)
虽然 在 python 中,该选择哪个 toml 包呢? - 知乎 (zhihu.com) 提到在 Python 中
rtoml
的兼容性和速度都要优于toml
库, 但是实际使用中并未能正确加载 toml 文件, 因此使用了toml
库, 后续有待进一步考证其实用性
PS: 20230118 更新, rtoml 确实挺好用的
YAML
开发环境相关
Visual Studio
快捷键相关
Ctrl + M + O: 折叠所有方法
Ctrl + M + M: 折叠或者展开当前方法
Ctrl + M + L: 展开所有方法
Ctrl+Shift+P 不可用
热键冲突, 和 PicGo 冲了, 把 PicGo 快捷上传的热键改成其他的就行了
编码相关
- vs 将默认编码调成 UTF-8 : vs 默认编码非 UTF-8,可以通过如下扩展更改默认编码为 UTF-8
- 拓展——>联机——>force UTF-8(No BOM)
VSCode
快捷键相关
Ctrl+K, Ctrl+J : 展开所有方法
Ctrl+K, Ctrl+0 : 折叠所有方法
命令行
- 命令行中使用
code .
命令可以新建一个以当前命令行作用目录为根目录的 VSCode 窗口, 相应的.\
,..
等相对路径的使用方式不再赘述
扩展相关
PlantUML
---- 流程图绘制
- 官网
- PlantUML 是一个开源项目,支持快速绘制:
- 时序图
- 用例图
- 类图
- 对象图
- 活动图
- 组件图
- 部署图
- 状态图
- 定时图
- 同时还支持以下非 UML 图:
- JSON 数据
- YAML 数据
- 网络图 (nwdiag)
- 线框图形界面
- 架构图
- 规范和描述语言 (SDL)
- Ditaa 图
- 甘特图
- 思维导图
- WBS 工作分解图
- 以 AsciiMath 或 JLaTeXMath 符号的数学公式
- 实体关系图
Markdown Preview Enhanced
- 可以用来绘制流程图
- 官网文档
flow
代码块中的代码会被flowchart.js渲染- 参考链接
clang-format
Clang 13 documentation
clang-format 使用介绍 - 掘金 (juejin.cn)
llvm/llvm-project: The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org.【VScode】统一代码格式规范之 Clang-format 格式化 C++ 代码(亲测可行) _【欢迎关注,一起学习,共同进步!】-CSDN 博客_clang-format.executable
该程序能够自动化格式 C/C++/Obj-C 代码,支持多种代码风格:Google, Chromium, LLVM, Mozilla, WebKit,也支持自定义 style(通过编写 .clang-format 文件) 。
安装时选择添加 path
安装完后可以打开 cmd 检查下 clang-format 版本
clang-format.exe --version
VSCode 扩展商店中安装 clang-format 扩展
settings.json
中的[markdown.extension.clang-format]
配置"editor.formatOnSave": true // 是否在保存时自动格式化
在插件设置中配置 clang-fromat.exe 文件路径
默认 2 格缩进, 如果想改 4 格缩进请打开
LLVM
安装目录下的bin
文件夹然后在此处打开powershell
并执行:clang-format -style=llvm -dump-config > .clang-format
打开生成的
.clang-format
文件, 找到IndentWidth
并将其改为 4
Jupyter
####### Jupyter 导出 PDF 报错
结论: 先导出 HTML 再导出 PDF
jupyter kernal keeps dying · Issue #1892 · jupyter/notebook (github.com)
先按照提示把 MikTex
装了然后再尝试导出下 PDF
不行的话先清除 conda cahce
conda clean -tipsy
卸载并重装以下包
- ipykernel
- ipython
- jupyter_client
- jupyter_core
- traitlets
- ipython_genutils
conda uninstall ipykernel, ipython, jupyter_client, jupyter_core, traitlets, ipython_genutils -y
conda install ipykernel ipython jupyter_client jupyter_core traitlets ipython_genutils -y
然后再尝试导出下 PDF
后续根据报错可能还需要安装一些包
conda install Jupyter nbconvert, yaml, pyyaml -y
内嵌图片总是会报错, 目前还没有找到适合我的解决方案, 找到一个相关的github issue里有 4 年前的解决方案, 尝试无果, 只好先导出 HTML 再打印 PDF
尝试注释掉了所有图片再导出 PDF, 发现还有个问题在于中文字体不能正常显示, 那么倒不如先导出 HTML 再打印 PDF
宝塔
安装
ubuntu
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
常用命令
# 启动
/etc/init.d/bt start
# 关闭
/etc/init.d/bt stop
# 重启
/etc/init.d/bt restart
# 卸载
/etc/init.d/bt stop && chkconfig --del bt && rm -f /etc/init.d/bt && rm -rf /www/server/panel
# 查看当前面板端口
cat /www/server/panel/data/port.pl
#
虚拟机
NAT 和桥接模式的区别
在 NAT 模式下,虚拟机的 IP 地址是由虚拟机网卡模拟的,虚拟机与物理机之间是通过主机 NAT 网络进行通信。NAT 网络会分配一个私有 IP 地址给虚拟机,并将虚拟机发送的数据包进行地址转换,从而实现虚拟机与外网的通信。
NAT 模式的优点是可以方便地与外网通信,因为 NAT 网络已经对虚拟机进行了地址转换,使得虚拟机看起来像是一个普通的主机,可以通过外网访问虚拟机提供的服务。
在桥接模式下,虚拟机与物理机在同一网段,它们共享同一个网络地址。虚拟机可以直接访问物理网络中的其他主机,并且其他主机也可以直接访问虚拟机。桥接模式需要主机中的一个网络接口作为虚拟机网卡的桥接接口,虚拟机网卡会与桥接接口绑定,从而实现虚拟机与物理机的通信。
桥接模式的优点是虚拟机可以直接访问物理网络中的其他主机,这样可以方便地进行网络测试和开发。另外,虚拟机与物理机在同一网段,也可以使得虚拟机的网络设置更加灵活。
VMWare 虚拟机有时候会识别不到网卡
TODO: 目前还没有定论, 但是这次打开服务启动了这俩服务, 把虚拟机配成了 NAT模式解决了问题, 后续再遇到的时候再看看
后来发现之所以这两个要手动启用, 是因为我在启动项里把他们关了(
把他们启用后就没再出现过这个问题了
NUM Lock 不一致
在鼠标移入移出虚拟机的时候总会出现下面这两个弹窗, 提示小键盘锁不一致
因为我用的键盘是 75 键的, 没有小键盘, 虚拟机里默认关闭小键盘锁, 所以会不一致, 此时需要到虚拟机中把小键盘锁打开
搜索屏幕键盘并打开
不过打开后可能屏幕键盘也没有小键盘
此时需要在 选项
中打开小键盘
然后点下 NumLock 打开小键盘锁就和主机同步了
ESXI
导出 OVF
对于 ESXI 7.0 及以上, 可以直接使用 ESXI Web 控制台中的导出选项将虚拟机关机然后导出为 OVF 模板
对于ESXI 6.7 而言直接导出映像似乎会失败, 可以使用 OVFTOOL 来导出
导出前需要先关闭虚拟机再导出, 时间比较慢,可以把控制台的快速编辑模式关闭以免误触导致程序挂起
命令:
./ovftool.exe --noSSLVerify vi://root@192.168.1.6/kali_16 D\\kali_16
上述命令中的
kali_16
指的是 EXSI 页面中显示的虚拟机的名称, 即下图中的上面红框中的内容(ps: 后面改成了 kali_16_52 因此和上面的命令截图对不上了)
扩容Kali虚拟机硬盘空间
最近发现之前在 ESXI 上分配给这台 kali 主机的磁盘空间几乎要满了, 于是打算扩容一下硬盘, 如下为行之有效的流程
首先需要将这台虚拟机上的快照全部删除, 否则无法修改磁盘分配空间
然后就可以重新分配磁盘空间了:
然后启动虚拟机, 在命令行中通过 fdisk -l
命令可以看到当前 /dev/sda
已经是 300G了
不过目前 /dev/sda1
还是 99G, 需要扩展一下
/dev/sda2
- Extended, 这是个扩展分区, 允许用户在主分区数量的限制之外创建更多分区扩展分区不直接存储数据, 而是作为容纳逻辑分区的容器
在上图中该扩展分区包含了下面的交换分区
/dev/sda5
/dev/sda5
- swap, 这是个交换分区, 是一个用于支持虚拟内存的特殊类型分区, 当物理内存(RAM) 不足时, 系统可以使用交换空间作为临时存储
**主分区(Primary Partitions) **:
最基本的磁盘分区类型。在传统的 MBR(Master Boot Record) 分区表中,一个硬盘最多只能有四个主分区。主分区可以包含操作系统,并且可以被设置为可引导(bootable) 。
**扩展分区(Extended Partitions) **:
由于 MBR 分区表的限制,硬盘只能包含最多四个主分区,扩展分区被引入作为一种解决方案。
一个扩展分区占用一个主分区的位置,但它可以包含多个逻辑分区。
扩展分区本身不存储数据;相反,它作为一个容器来包含逻辑分区。
**逻辑分区(Logical Partitions) **:
逻辑分区存在于扩展分区内部。当需要在硬盘上创建四个以上的分区时, 可以创建一个扩展分区,然后在其中创建多个逻辑分区。
逻辑分区可以用于存储数据、安装额外的操作系统等目的
由于这里 /dev/sda1
主分区后面还有个扩展和逻辑分区, 磁盘上的分区是按顺序连续排列的, 要扩展 /dev/sda1
需要选删除后面的分区
输入 sudo fdisk /dev/sda
以启动交互式调整分区 /dev/sda
输入 d
以选择删除分区
从后向前进行分区删除, 输入 5
以删除 /dev/sda5
输入 d
以继续删除分区
输入 2
以删除 /dev/sda2
输入 w
以保存并退出
虽然这里报了错, 但是我重新运行了下 fdisk -l
查看分区
发现实际上后面两个分区已经成功删除掉了
接下来扩展 /dev/sda1
扩展的第一步就是删除分区, 虽然理论上不会丢数据, 但是最好还是先备份一下
输入 sudo fdisk /dev/sda
命令以开始调整 /dev/sda
磁盘的分区
输入 d
以删除分区, 由于这里只剩下 1 了, 所以输入 d
后直接就将 /dev/sda1
删掉了
PS: 这里不会删除数据, 只是删除了分区表项
然后重新创建 /dev/sda1
分区, 输入 n
然后选择 p
以新建一个主分区, 输入 1
以设置分区号为 1
保持起止位置为默认即可确保使用 /dev/sda1
分区相同的起始扇区以及使用所有可用的未分配空间
PS: 这里结束符也保持默认的话会分配全部的可用空间给
/dev/sda1
, 由于我没有创建多个分区的目的, 并且内存空间可以随时分配也没有创建交换分区的必要, 所以选择了保持默认, 分配全部的空间给/dev/sda1
这里报了检测到了 ext4
签名, 这个签名是用来防止意外覆盖已存在的文件系统和数据的, 这里可以选择 N
以保留签名
接下来需要设置 /dev/sda1
为启动分区, 输入 a
并选择 1
以设置分区号1为启动标志(这里只有一个分区, 因此输入a后会默认选择1)
输入 w
以保存并退出 fdisk
这里因为内核仍然在使用旧的分区信息, 这些更改尚未被系统识别, 因此会报上述错误, 之后重启即可解决
可以使用 fdisk -l
看下当前分区信息:
可以看到 /dev/sda1
已经成功获得了 300G 的大小
在进行下一步前请确认自己还记得当前主机的账密或者密钥, 建议备好账密以防止 ssh 服务没起来用不了密钥
接下来需要 reboot
重启下系统
重启完后可以确认一下分区大小
fdisk -l
: 查看系统中所有可识别磁盘的分区表信息df -h
: 查看系统中所有可识别磁盘的分区使用情况-h
: 使用人类可读的格式显示(例如 1K 234M 2G), 而非以字节为单位显示
这里可以看到 /dev/sda1
已经扩容到了 300G, 但是分区使用情况中只用了 97G
这需要我们运行 resize2fs /dev/sda1
来将文件系统扩展到整个分区
可以看到这里已经完成了分区大小的调整以及文件系统的扩展
至此, ESXI 上 Kali 虚拟机的硬盘空间扩容完成
域名
浏览器扩展
JSON Formatter
美化 JSON, 测试 api 的时候比较好用
或者也可以直接用 Apipost-API 文档、调试、Mock、测试一体化协作平台