跳至主要內容

通识

大约 13 分钟

通识


Programming

行尾序列

  • LF - 换行 - Unix/macOS(\n)
  • CR 回车 - Classic MacOS(\r)
  • CRLF 回车换行 - Windows(\r\n)

CLion 编辑代码保存时会自动替换行尾为当前行尾序列。

20211221092252
在 Windows 下使用 CLion, 使用回车换行作为行尾可以正常编译运行代码

20211221092905

20211221092951

单独使用回车或换行作为行尾时会编译出错


配置文件

toml

TOML:Tom 的(语义) 明显、(配置) 最小化的语言open in new window


在 python 中,该选择哪个 toml 包呢? - 知乎 (zhihu.com)open in new window

TOML 教程 - 可能是目前最好的配置文件格式 - 知乎 (zhihu.com)open in new window

常用配置文件-toml 文件_玉米丛里吃过亏的博客-CSDN 博客_toml 文件open in new window

虽然 在 python 中,该选择哪个 toml 包呢? - 知乎 (zhihu.com)open in new window 提到在 Python 中 rtoml 的兼容性和速度都要优于 toml 库, 但是实际使用中并未能正确加载 toml 文件, 因此使用了 toml 库, 后续有待进一步考证其实用性
PS: 20230118 更新, rtoml 确实挺好用的


YAML

一文看懂 YAML - 知乎 (zhihu.com)open in new window


开发环境相关

Visual Studio


快捷键相关

Ctrl + M + O: 折叠所有方法
Ctrl + M + M: 折叠或者展开当前方法
Ctrl + M + L: 展开所有方法

Ctrl+Shift+P 不可用

热键冲突, 和 PicGo 冲了, 把 PicGo 快捷上传的热键改成其他的就行了

解决 VSCode Ctrl Shift P 快捷键不可用_团子大圆帅的博客-CSDN 博客open in new window


编码相关

  • 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 ---- 流程图绘制

20210522214659

  • 官网open in new window
  • PlantUML 是一个开源项目,支持快速绘制:
    • 时序图
    • 用例图
    • 类图
    • 对象图
    • 活动图
    • 组件图
    • 部署图
    • 状态图
    • 定时图
  • 同时还支持以下非 UML 图:
    • JSON 数据
    • YAML 数据
    • 网络图 (nwdiag)
    • 线框图形界面
    • 架构图
    • 规范和描述语言 (SDL)
    • Ditaa 图
    • 甘特图
    • 思维导图
    • WBS 工作分解图
    • 以 AsciiMath 或 JLaTeXMath 符号的数学公式
    • 实体关系图

Markdown Preview Enhanced

20210522215021



clang-format

Clang 13 documentationopen in new window
clang-format 使用介绍 - 掘金 (juejin.cn)open in new window
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.open in new window

【VScode】统一代码格式规范之 Clang-format 格式化 C++ 代码(亲测可行) _【欢迎关注,一起学习,共同进步!】-CSDN 博客_clang-format.executableopen in new window

该程序能够自动化格式 C/C++/Obj-C 代码,支持多种代码风格:Google, Chromium, LLVM, Mozilla, WebKit,也支持自定义 style(通过编写 .clang-format 文件) 。

windows 安装包open in new window

安装时选择添加 path

安装完后可以打开 cmd 检查下 clang-format 版本

clang-format.exe --version

VSCode 扩展商店中安装 clang-format 扩展

20211208194743-clang-fromat-VSCode扩展界面

  • settings.json中的 [markdown.extension.clang-format] 配置

    "editor.formatOnSave": true   // 是否在保存时自动格式化
    
  • 在插件设置中配置 clang-fromat.exe 文件路径
    20211208212248-在插件设置中配置 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)open in new window

先按照提示把 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 issueopen in new window里有 4 年前的解决方案, 尝试无果, 只好先导出 HTML 再打印 PDF

尝试注释掉了所有图片再导出 PDF, 发现还有个问题在于中文字体不能正常显示, 那么倒不如先导出 HTML 再打印 PDF


宝塔

宝塔面板下载,免费全能的服务器运维软件 (bt.cn)open in new window


安装

  • 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 模式、路由模式、桥接模式的区别 - 知乎 (zhihu.com)open in new window

  • 在 NAT 模式下,虚拟机的 IP 地址是由虚拟机网卡模拟的,虚拟机与物理机之间是通过主机 NAT 网络进行通信。NAT 网络会分配一个私有 IP 地址给虚拟机,并将虚拟机发送的数据包进行地址转换,从而实现虚拟机与外网的通信。

    NAT 模式的优点是可以方便地与外网通信,因为 NAT 网络已经对虚拟机进行了地址转换,使得虚拟机看起来像是一个普通的主机,可以通过外网访问虚拟机提供的服务。

  • 在桥接模式下,虚拟机与物理机在同一网段,它们共享同一个网络地址。虚拟机可以直接访问物理网络中的其他主机,并且其他主机也可以直接访问虚拟机。桥接模式需要主机中的一个网络接口作为虚拟机网卡的桥接接口,虚拟机网卡会与桥接接口绑定,从而实现虚拟机与物理机的通信。

    桥接模式的优点是虚拟机可以直接访问物理网络中的其他主机,这样可以方便地进行网络测试和开发。另外,虚拟机与物理机在同一网段,也可以使得虚拟机的网络设置更加灵活。


VMWare 虚拟机有时候会识别不到网卡

TODO: 目前还没有定论, 但是这次打开服务启动了这俩服务, 把虚拟机配成了 NAT模式解决了问题, 后续再遇到的时候再看看

image-20231107235911185

后来发现之所以这两个要手动启用, 是因为我在启动项里把他们关了(

image-20231228000626268

把他们启用后就没再出现过这个问题了


NUM Lock 不一致

在鼠标移入移出虚拟机的时候总会出现下面这两个弹窗, 提示小键盘锁不一致

image-20231228002606292

image-20231228002616436

因为我用的键盘是 75 键的, 没有小键盘, 虚拟机里默认关闭小键盘锁, 所以会不一致, 此时需要到虚拟机中把小键盘锁打开

搜索屏幕键盘并打开

image-20231228002752564

不过打开后可能屏幕键盘也没有小键盘

image-20231228002910116

此时需要在 选项 中打开小键盘

image-20231228002940081

然后点下 NumLock 打开小键盘锁就和主机同步了

image-20231228003038306


ESXI

导出 OVF

  • 对于 ESXI 7.0 及以上, 可以直接使用 ESXI Web 控制台中的导出选项将虚拟机关机然后导出为 OVF 模板

    image-20230703153012501

    image-20230703154108407

  • 对于ESXI 6.7 而言直接导出映像似乎会失败, 可以使用 OVFTOOL 来导出

    OVFTool.7zopen in new window

    导出前需要先关闭虚拟机再导出, 时间比较慢,可以把控制台的快速编辑模式关闭以免误触导致程序挂起

    命令:

    ./ovftool.exe --noSSLVerify vi://root@192.168.1.6/kali_16 D\\kali_16
    

    上述命令中的 kali_16 指的是 EXSI 页面中显示的虚拟机的名称, 即下图中的上面红框中的内容(ps: 后面改成了 kali_16_52 因此和上面的命令截图对不上了)


扩容Kali虚拟机硬盘空间

image-20231219141205354

最近发现之前在 ESXI 上分配给这台 kali 主机的磁盘空间几乎要满了, 于是打算扩容一下硬盘, 如下为行之有效的流程

首先需要将这台虚拟机上的快照全部删除, 否则无法修改磁盘分配空间

image-20231219143304203

image-20231219143329048

然后就可以重新分配磁盘空间了:

image-20231219143608659

然后启动虚拟机, 在命令行中通过 fdisk -l 命令可以看到当前 /dev/sda 已经是 300G了

image-20231219150122288

不过目前 /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 以保存并退出

image-20231219152134319

虽然这里报了错, 但是我重新运行了下 fdisk -l 查看分区

image-20231219152259847

发现实际上后面两个分区已经成功删除掉了


接下来扩展 /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

image-20231219152922733

这里报了检测到了 ext4 签名, 这个签名是用来防止意外覆盖已存在的文件系统和数据的, 这里可以选择 N 以保留签名

接下来需要设置 /dev/sda1 为启动分区, 输入 a 并选择 1 以设置分区号1为启动标志(这里只有一个分区, 因此输入a后会默认选择1)

image-20231219153610025

输入 w 以保存并退出 fdisk

image-20231219153639670

这里因为内核仍然在使用旧的分区信息, 这些更改尚未被系统识别, 因此会报上述错误, 之后重启即可解决

可以使用 fdisk -l 看下当前分区信息:

image-20231219154012798

可以看到 /dev/sda1 已经成功获得了 300G 的大小

在进行下一步前请确认自己还记得当前主机的账密或者密钥, 建议备好账密以防止 ssh 服务没起来用不了密钥

接下来需要 reboot 重启下系统

重启完后可以确认一下分区大小

  • fdisk -l: 查看系统中所有可识别磁盘的分区表信息

  • df -h: 查看系统中所有可识别磁盘的分区使用情况

    -h: 使用人类可读的格式显示(例如 1K 234M 2G), 而非以字节为单位显示

image-20231219155541692

这里可以看到 /dev/sda1 已经扩容到了 300G, 但是分区使用情况中只用了 97G

这需要我们运行 resize2fs /dev/sda1 来将文件系统扩展到整个分区

image-20231219160011338

可以看到这里已经完成了分区大小的调整以及文件系统的扩展

至此, ESXI 上 Kali 虚拟机的硬盘空间扩容完成


域名

Let's Encrypt - 免费的SSL/TLS证书 (letsencrypt.org)open in new window

免费和付费域名 (freenom.com)open in new window

2023年最好的免费域名注册平台网站大全(长期更新,建议收藏) - 一灯不是和尚 (iyideng.net)open in new window


浏览器扩展

JSON Formatteropen in new window

美化 JSON, 测试 api 的时候比较好用

image-20220429150907866

image-20220429150945870

或者也可以直接用 Apipost-API 文档、调试、Mock、测试一体化协作平台open in new window

image-20220429152405796