L B T

记 录 过 去 的 经 验

环境信息

  • python 3.10
  • django 4.0

Python logging 模块说明

Django 使用 Python 内置的 logging 模块处理系统日志,一份 Python logging 配置由下面四个部分组成:

  • Loggers
  • Handlers
  • Filters
  • Formatters

Loggers

logger 是日志系统的入口。每个 logger 都是命名了的 bucket , 消息写入 bucket 以便进一步处理
logger 可以配置 日志级别 。日志级别描述了由该 logger 处理的消息的严重性。 Python 定义了下面几种日志级别:

  • DEBUG :排查故障时使用的低级别系统信息
  • INFO :一般的系统信息
  • WARNING :描述系统发生了一些小问题的信息
  • ERROR :描述系统发生了大问题的信息
  • CRITICAL :描述系统发生严重问题的信息

每一条写入 logger 的消息都是一条 日志记录 。每一条日志记录也包含 日志级别 ,代表对应消息的严重程度。日志记录还包含有用的元数据,来描述被记录了日志的事件细节,例如堆栈跟踪或者错误码。

logger 处理一条消息时,会将自己的 日志级别 和这条消息的 日志级别 做对比。如果消息的日志级别匹配或者高于 logger 的日志级别,它就会被进一步处理。否则这条消息就会被忽略掉。

logger 确定了一条消息需要处理之后,会把它传给 Handler

阅读全文 »

环境信息

  • Python 3.10

虚拟环境创建步骤

假定项目名为 project01 , 目录名为 project01

mkdir project01
cd project01
python3 -m venv .

以上命令会在目录 project01 中创建虚拟环境,查看当前目录,会产生以下目录和文件

$ ls
bin include lib lib64 pyvenv.cfg

观察 bin 目录的内容,里面有 python3pip3 等可执行文件,实际上是链接到 Python 系统目录的软链接。

$ ls -l bin/
total 36
-rw-r--r-- 1 root root 1991 Aug 16 17:35 activate
-rw-r--r-- 1 root root 917 Aug 16 17:35 activate.csh
-rw-r--r-- 1 root root 2059 Aug 16 17:35 activate.fish
-rw-r--r-- 1 root root 9033 Aug 16 17:35 Activate.ps1
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip3
-rwxr-xr-x 1 root root 234 Aug 16 17:35 pip3.10
lrwxrwxrwx 1 root root 10 Aug 16 17:35 python -> python3.10
lrwxrwxrwx 1 root root 10 Aug 16 17:35 python3 -> python3.10
lrwxrwxrwx 1 root root 25 Aug 16 17:35 python3.10 -> /usr/local/bin/python3.10

Linux 环境使用以下命令激活虚拟环境

$ source bin/activate
(project01) [root@localhost project01]#

命令提示符变了,有个 (project01) 前缀,表示当前环境是一个名为 project01 的 Python 环境。
在此虚拟环境中安装包,都会被安装到 (project01) 环境下,具体目录为 project01/lib/python3.10/site-packages/ ,系统 Python 环境不受任何影响,也就是说, project01 这个环境是专门针对 project01 应用(项目)创建的,和系统 python 环境或其他应用互不影响。

要退出当前虚拟环境,可以执行以下命令

deactivate

退出虚拟环境后,再执行如 pip3 install 命令安装的包,会安装到系统 Python 环境。
完全可以针对每个应用创建独立的 Python 运行环境,这样就可以对每个应用的 Python 环境进行隔离。

如果不再使用某个 venv ,例如 project01 ,删除它也很简单。首先确认该 venv 没有处于 激活 状态,然后直接把整个目录 project01 删掉就行。

环境信息

  • os: linux 3.10.0-1160.62.1.el7.x86_64 CentOS Linux 7 (Core)
  • hexo: 6.2.0
  • hexo-cli: 4.3.0
  • node: 16.16.0
  • Next 8.12.2

安装 canvas-nest

参考 canva-nest 官网 安装

npm
npm install --save canvas-nest.js

可选操作,主要是为了生成 canvas-nest.js 文件

配置 Next

编辑 next配置文件 ,新增以下配置

_config.next.yml
# background settings
# add canvas-nest effect
# see detail from https://github.com/hustcc/canvas-nest.js
canvas_nest:
enable: true
url: https://s.0920811.xyz/js/canvas-nest.js
color: 0,0,255
opacity: 0.7
zIndex: -2
count: 99

引入 canvas-nest.js

编辑文件 themes/next/layout/_layout.njk , 在 </body> 之前新增以下内容

themes/next/layout/_layout.njk
{% if theme.canvas_nest.enable %}
<script type="text/javascript" color="{{ theme.canvas_nest.color }}" opacity='{{ theme.canvas_nest.opacity }}' zIndex="{{ theme.canvas_nest.zIndex }}" count="{{ theme.canvas_nest.count }}" src="{{ theme.canvas_nest.url }}">
</script>
{% endif %}

awk 是一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是 linux/unix 下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk 有很多内建的功能,比如数组、函数等,这是它和 C 语言的相同之处,灵活性是 awk 最大的优势。

阅读全文 »

常用选项说明

-n    使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN (例如文件内容)的内容一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-i 直接修改读取的内容,而不是由屏幕输出。
-f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的sed 动作;
阅读全文 »

LVM 是 Logical Volume Manager(逻辑卷管理)的简写,LVM 将一个或多个硬盘或分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘或分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM 为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。

/boot 分区不可以在逻辑卷组上,否则 bootloader 会无法读取.

阅读全文 »

sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH 的一部分,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低得多,如果您对网络安全性要求更高时,可以使用 SFTP 代替 FTP。默认 ssh 启用了 sftp,只要可登陆系统的用户(/bin/bash)就可登陆,登陆后目录无限制,可任意切换其他目录。为了安全起见,可以配置 sshd 以限制 sftp 登录用户的权限。最好将登陆后用户限制在指定目录,无法切换到外部目录

阅读全文 »