服务器关机自动发送通知邮件
我这里有个需求,就是服务器会因为不知道的原因(排除断电)导致关机,这种情况下,如果不能及时知道何时关机将会导致不能及时进行重启,并进行安全检查。这里通过撰写 Python 代码并设置服务,监测服务器是否关机并自动邮件通知。本篇以 Ubuntu 为例。
编写 python 代码编写 /home/jinzhongxu/shutdown_msg.py 模块
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : Jinzhong Xu# @Contact : jinzhongxu@csu.ac.cn# @Time : 2021/11/23 17:45# @File : shutdown_msg.py# @Software: PyCharmdef ...
把 Python 的 print 函数输出到文件
利用 Python 的 print 函数可以方便的打印输出,但是,这些输出不能够很好的给别人传看,特别是打印行数较多,又不便更改原模块的代码时。这里,给出一个方法,不动原模块,将打印输出到文件中。
所有打印都输入文件假设,我们打印输出的模块是 main.py 里的 inspect 函数。这里创建 test.py 模块
123456import sysfrom main import inspectsys.stdout = open('output.txt', 'w')inspect(ids_dir)sys.stdout.close()
或者
12345678import sysfrom main import inspectoriginal_stdout = sys.stdoutwith open('output.txt', 'w') as f: sys.stdout = f # Change the standard output to the file we created. insp ...
利用 PyQt5 开发 Python 图形用户程序
Python 作为一种高级编程语言,简洁高效,开发效率高。将 Python 与 JupyterLab 结合使用非常方便,也是我之前常采用的形式。但本篇主要介绍用 Python 开发桌面等应用程序,利用图形界面实现与用户交互。本篇将包含 Miniconda, PyQt5, pyqt5-tools, Qt Designer, pyinstaller 等。
安装需要的包首先,从官网下载 Miniconda,配置好开发环境,这时就可以使用 Python 了。
其次,从 Python packages 官网 安装 PyQt5 和 pyqt5-tools(PyQt6 在 2021年1月份已经发布,截止本篇文章,已经到 6.2.1,大家可以自己选择使用)。
12pip install PyQt5pip install pyqt5-tools
到目前,所安装的包已经足够开发 Python 图形用户程序,但设计图形界面不是那么直观,可利用下面的 Qt Designer 进行图形设计界面。打开方式:
1qt5-tools designer
另一种方式是,从网址 fman build system ...
反常积分与柯西主值
在讨论定积分时有两个默认的限制条件:一是积分区间有穷,二是被积函数有界。在实际问题中往往需要突破这些限制,如需要在无穷区间上进行积分,或求无解函数的积分(函数在积分区间的某点上无界)。此时,研究的积分称为反常积分(improper integral,或称为非正常积分,广义积分。原有的定积分为Riemann积分,或常义积分,记作$f\in R[a,b]$,表示函数$f$ 在闭区间$[a,b]$上黎曼可积)。在研究反常积分时常常研究其收敛性或发散性,这一点与数项级数一致。更进一步,含参量反常积分和函数项级数研究一致收敛性和发散性。
两类反常积分无穷积分无穷积分是第一类反常积分,指积分区间的上限或下限为无穷的积分。
设函数$f$定义在无穷区间$[a,+\infty]$上,且在任何有限区间$[a,u]$上可积。如果存在极限$$\lim_{u\to +\infty}\int^u_a f(x) \mathrm{d}x = J,$$则称此极限$J$为函数$f$在$[a,+\infty]$上的无穷限反常积分(简称无穷积分),记作$$J = \int^{+\infty}_a f( ...
Hexo 大括号渲染
Hexo 生成 markdown 撰写的博文中含有公式大括号 $\lbrace$ 和 $\rbrace$ 时,发布网站上大括号消失。本篇给出可能的原因,和解决方法。
可能原因在使用公式编辑大括号时,采用了如下的形式
1$ E = \min_{v \in V} \{u \in V | w(u,v) > 0\} $
$$E = \min_{v \in V} {u \in V | w(u,v) > 0}$$
解决方法把
1\{ \}
替换为
1\lbrace \rbrace
结果示例
1$ E = \min_{v \in V} \lbrace u \in V | w(u,v) > 0\rbrace $
$$E = \min_{v \in V} \lbrace u \in V | w(u,v) > 0\rbrace$$
参考链接
Hexo Next主题Mathjax 大括号渲染错误
匈牙利匹配算法
匈牙利匹配算法(Hungarian Matching Algorithm),也称为 Kuhn-Munkres 算法,是一个 $O\big(|V|^3\big)$ ($V$ 表示二分图的顶点集)算法,可用于在二分图中找到最大权重匹配,有时称为分配问题。匈牙利算法被文章 End-to-End Object Detection with Transformers 中提出 DETR 算法中所采用,用于匹配预测目标框与真实目标框。除此之外,该算法也在多目标跟踪、实例分割、多人3D位姿估计等领域中发挥作用。本篇对匈牙利算法进行简单讲解。
历史匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法。美国数学家哈罗德·库恩于 1955 年提出该算法。此算法之所以被称作匈牙利算法,是因为算法很大一部分是基于以前匈牙利数学家 Dénes Kőnig 和 Jenő Egerváry 的工作之上创建起来的。
詹姆士·芒克勒斯在 1957 年回顾了该算法,并发现(强)多项式时间的复杂度。此后该算法被称为 Kuhn–Munkres 算法或 Munkres 分配算法。原始算法的 ...
深度学习中常用的正则化
Normalization 在深度学习中常被使用,它能够正则化神经网络中的输出数据,一定程度上消除内部协变量偏移(Internal Covariate Shift),加速网络训练,为初始化网络参数松绑,提高模型精度等。本篇介绍在深度学习中常用的正则化方法。
Batch NormalizationBatch Normalization 是对输入的的多个向量(即一批向量 $x_i,i=1,⋯,m$),对每个维度(特征)上进行正则化,也即每个神经元单独进行一批数据(分量)的正则化。首先计算该维度上的均值和标准差,然后该维度上各个分量减去均值再除以标准差。下面公式都是按照逐元素操作的。说白了,批正则化是针对每个神经元进行批次正则化。均值分母是批次大小。$$\mu_{\mathcal{B}} \leftarrow \frac{1}{m}\sum^m_{i=1} x_i$$
$$\sigma^2_{\mathcal B} \leftarrow \frac{1}{m}\sum^m_{i=1}(x_i - \mu_{\mathcal B})^2$$
$$\hat x_ ...
Jupyterlab Code Formatter 的快捷键 Keyboard Shortcuts 设置
Jupyterlab Code Formatter 能够在 notebook 中对代码进行格式化,安装成功后,只需要点击代码格式化按钮。那么如何像在 pycharm 中一样使用快捷键对代码进行格式化呢,本篇记录一下。
安装格式化包
安装插件
1pip install jupyterlab_code_formatter
安装格式化支持
1pip install black isort
重启 Jupyterlab
设置快捷键打开 Jupyterlab,点击 settings -> Advanced Settings Editor -> Keyboard Shortcuts
在 User Preferences 中输入(下面是针对单个单元格进行格式化)
123456789"shortcuts": [ { "command": "jupyterlab_code_formatter:black", "keys": [ &qu ...
关于 HEXO 博客搜索功能不稳定问题
Hexo + GitHub (or VPS) + Markdown 搭配完成博文撰写与发布,记录个人每天学习到的知识以及产生的灵感,是非常方便的。但是,最近发现我的博客出现搜索功能紊乱的问题,有些博文明明存在却搜索不到。因此,经过长时间的探索发现一种解决方法。特此记录下来。
问题描述在登录到博客网站后,想要通过关键字搜索某篇博文,搜索不到,但是确信博文是存在的。经过一页一页翻找,确实找到了博文。断定搜索功能失效。
尝试,在本地重新生成和部署
1234cd bloghexo cleanhexo generate hexo deploy
再重新打开博文进行搜索,发现可以使用。但是,写完博文后再次生成部署,发现搜索功能又失效。
定位问题通过网站直接访问搜索网页: https://xujinzh.github.io/search.xml
发现在顶部有红色错误提示,第$i$行和第$j$列,字符编码错误。
在本地打开 public/search.xml 的第 $i$ 行和第 $j$ 列,看看它属于哪篇博文。
在博文中检查是否有不合法的字符出现。清除掉它们。
重新生成和部署清理完所有非法字符后 ...
旋转曲面的面积
定积分的所有应用一般总可以安装“分割, 近似求和, 去极限”三个步骤导出所求量的积分形式. 但为简便实用起见, 也常采用本篇介绍的“微元法”. 其实在求旋转体的体积时我们采用微小区间上柱体近似旋转体体积, 但是在求旋转曲面的面积时却不能用旋转体的侧面积近似旋转曲面的侧面积. 就像求弧长时需要用微小区间的弦长近似弧长, 不能用弦长直角边近似一样, 求旋转曲面的表面积不能用圆柱侧面积需要用圆台侧面积近似.
微元法在上一篇中我们知道, 若令 $\Phi(x) = \int^x_a f(t) \mathrm{d}t$, 则当 $f$ 为连续函数时, $\Phi^{\prime}(x) = f(x)$, 或 $\mathrm{d}\Phi = f(x)\mathrm{d}x$, 且$$\Phi(a) = 0, \Phi(b) = \int^b_a f(x) \mathrm{d}x.$$现在问题恰好反过来: 如果所求量 $\Phi$ 是某区间 $[a, x]$ 上的,或者说它是该区间端点 $x$ 的函数, 即 $\Phi = \Ph ...
服务器开机或IP改变自动发送通知邮件
我这里有个需求,就是服务器会因为断电等原因关机、重启,导致 IP 地址更改,无法通过 SSH 连接,也不能及时知道电脑何时开机。这里通过撰写 Python 代码,自动检测 IP、开机自动邮件通知。本篇以 Ubuntu 为例。
编写 Python 代码在目录 /home/jinzhongxu/PythonProjects 下编写 Python 模块 send_message.py
因为在 Ubuntu 系统下,当电脑重启时,目录 /tmp 下的文件会清空
在 Mail 函数中,sender 为 qq 邮箱,即发送给你通知信息的邮箱;recipients 为接收信息的邮箱,可以通过该登录该邮箱查看收到的通知信息,如 IP 更改、服务器重启等;password 为 qq 邮箱的授权码,smtp_server、port 等都需要到 QQ 邮箱进行认证获取;subject 为邮件主题;text 为邮件内容;attachment 为附件,比如图像、文件等。
简单通知信息12345678910111213141516171819202122232425262728293031323334353 ...