pandoc 标记语言转换工具
Pandoc 是使用 Haskell 语言编写的一款跨平台、自由开源及命令行界面的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。本篇以 Ubuntu 18.04 为例进行演示。
安装安装 pandoc 可以通过如下方法
12sudo apt updatesudo apt install pandoc
示例使用 pandoc 可以进行很多种文本格式的转换,如 docx, markdown, textile, pdf 等等。下表更详细的列出:
Pandoc 可读取的源格式
Pandoc 可生成的目标格式
Markdown
HTML格式:包括XHTML,HTML5及HTML slide
reStructuredText
文字处理软件格式:包括docx、odt、OpenDocument XML
Textile
电子书格式:包括EPUB(第2版及第3版)、FictionBook2
HTML
技术文档格式:包括DocBook、GNU TexInfo、Groff manpages、Haddock
DocBook
页面布局格式:In ...
python 中的小数舍入方法
数学中,四舍五入是我们经常使用的,用来对小数保留有效位精度,得到近似值,节省书写,如 $3.141592653589793… \approx 3.14$,这同样也方便记忆一些无理数的近似值,当计算时也比较方便。但除了四舍五入,还存在一些其他的小数舍入方法,如“四舍六入五成双”等。Python 中内置的 round 函数采用哪种舍入方法呢?
四舍五入四舍五入是我们小学时就学习的一种小数舍入方法。如
13.141592653589793...
保留 3 位小数,则为
13.142
因为,第 4 位是数值 5,根据四舍五入原则(小于等于 4 的舍去,大于等于 5 的舍入进 1),因此,进行舍入进 1.
四舍六入五成双四舍六入五成双和四舍五入的区别就是,当舍入位后没有数值,且舍入位是 5 时,需要根据舍入位前面一位的数值奇偶性进行舍入。
基本原则是:
当舍入位小于等于 4 时,舍去;
当舍入位大于等于 6 时,舍入进 1;
当舍入位等于 5 时,分两种情况:1)舍入位 5 后面有数值,则舍入进 1;2)舍入位 5 后面没有数值,看舍入位 5 前面的数值,当其是奇数时,舍入进 1,当其 ...
linux 中利用 cpulimit 限制 CPU 使用率
CPU 的使用率过高会影响 Linux 系统的使用体验,如导致 CPU 温度过高,影响使用寿命等。本篇介绍如何限制 CPU 使用率,保持 Linux 系统的正常、稳定运行。以 Ubuntu 18.04 为例,所有命令以普通用户运行。
安装 cpulimitUbuntu/Debian 系统安装方法如下:
12sudo apt updatesudo apt install cpulimit
Centos/RedHat 系统安装方法如下:
1sudo yum install cpulimit
使用方法123# NUM 为整数值,默认为对 1 个 CPU的限制,多个 CPU 时可以累计,如 NUM * CPU_NUM# PID 为进程 ID,限制该进程的 CPU 使用率为 NUM%cpulimit -l NUM -p PID
常用参数:
-e 按照程序名限制;
-P 按照程序绝对路径限制;
-b 后台运行 cpulimit;
-f 前台运行;
-l 允许的CPU百分比,最低为1%.
注意:
更多参数可通过 man ...
http 状态码
在进行网站开发中,总会遇到状态码解读问题,本篇梳理各种状态码的意义。
http 状态码分类
分类
分类描述
1**
请求已被接受,需要继续处理
2**
成功,操作被成功接收并处理
3**
重定向,需要进一步的操作以完成请求
4**
客户端错误,请求包含语法错误或无法完成请求
5**
服务器错误,服务器在处理请求的过程中发生了错误
http 状态码意义
状态码
状态码意义
100
这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
101
服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
102
由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
200
请求成功。一般用于GET与POST请求,出现此状态码是表示正常状态。
201
已创建。成功请求并创建了新的资源
202
已接受。已经接受请求,但未处理完成
203
服务器已成功处理了请求,但返回的实体头部元信息不是在原 ...
python 正则表达式
Python 中一类主要的处理对象就是字符串,如何从字符串中筛选特定模式的子字符串就需要正则表达式。使用正则表达式的模式和字符串既可以是 Unicode 字符串(str),也可以是 8 为字节串(bytes)。本节介绍如何在 Python 中使用正则表达式。
正则表达式调用格式123456789101112import rere_exp = re.compile(r'xxx', flags=flag)re_exp.match(str_instance)re_exp.findall(str_instance)re_exp.search(str_instance)re_exp.split(str_instance)# or (除了上面编译后在匹配,还可以采用下面的合成形式,实际上内部是采用上面的步骤)re.match(r'xxx', str_instance, flags=flag)re.findall(r'xxx', str_instance, flags=flag)...
其中,re 是 python 内置的正则表达式模 ...
python 中 import 介绍
Python 中从其他模块或库中导入方法或模块的方法是利用 import 关键字,但是,当工程比较复杂时,比如分成多个类别的库;当代码需要在 jupyter 中调用工程中的模块时,工程中各模块的互相引用就显得非常重要,如果导入模块的姿势不对,将导致程序无法运行。本篇总结常用的导入方法,对 import 关键字进行介绍。
import 常规的导入方法这里不再重复,直接介绍复杂工程中或多种运行方式(命令行、ipython、jupyter 等)下模块的导入。
工程结构我这里创建了一个测试工程,目录结构如下:
123456789101112$ tree mytestmytest├── p1│ ├── __init__.py│ └── q1.py└── p2 ├── __init__.py ├── q2.py ├── q3.py └── q4.py2 directories, 6 files
其中,mytest 是工程名字,p1 和 p2 分别是两个库,里面分别有模块 q1,q2 和 q3,这里给出他们的内容:
12345678910111213141516 ...
deeplabcut 位姿标注软件的安装与使用
深度学习模型需要大量的训练数据,特别是标注数据。数据的标注非常重要,这对标注软件提出了很高的要求,易用、免费、高效的标注软件是深度学习从业人员的必备工具。deeplabcut 是一款面向位姿识别的标注软件(也可以进行模型训练),它开源、高效、易用,本篇介绍该软件的安装与简单使用。
deeplabcut 的安装假设已经按照好了 miniconda,下面介绍安装 deeplabcut
12345678git clone https://github.com/DeepLabCut/DeepLabCut.gitcd DeepLabCut/conda-environments# 如果不想克隆源代码仓库,可以直接从官网下载配置文件wget http://www.mackenziemathislab.org/s/DEEPLABCUT.yamlconda env create -f DEEPLABCUT.yaml
deeplabcut 的使用123456conda env listconda activate DEEPLABCUTpythonw -m deeplabcut# 或者,会将后台信息打 ...
Linux shell 编程基础
shell 是一个用 C 编写的程序,是用户与系统内核之间的桥梁。其提供了一个界面,用户通过该界面访问操作系统的内核服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。其实,shell 也是一种解释性的程序设计语言,用户通过编写 shell 脚本在 Linux 上进行自动运维等。常见的 Linux shell 种类很多,如 Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等,国内常用的是 /bin/bash,也是大多数 Linux 系统默认的 shell。在一般情况下,人们并不区分 Bourne Shell 和 Bou ...
linux 利用 top 命令进行动态监控
Linux 系统在运行中可能会出现各种情况,如内存占用过多、cpu 占用过大等,这些都会影响 Linux 系统的运行,导致用户体验降低,如何查看、监控 Linux 系统中的程序运行情况,并停止内存占用多、cpu 占用大的进程。本篇介绍 top 命令(类似于 Windows 中的任务管理器),实现此目的。
top 命令介绍简单的在命令后输入 top 命令查看当前系统进程情况。
1234567top - 15:32:30 up 4 days, 58 min, 2 users, load average: 1.15, 1.28, 1.31Tasks: 959 total, 3 running, 611 sleeping, 0 stopped, 0 zombie%Cpu(s): 1.4 us, 0.1 sy, 0.3 ni, 97.8 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 stKiB Mem : 97398976 total, 81255760 free, 3827788 used, 12315424 buff/cacheKiB S ...
ubuntu 安装 tcping
ping 命令能够帮助我们测试两台主机之间的网络是否畅通。但是,当目标主机的 ICMP 协议端口都关闭的时候,无法通过 ping 命令达到目标。一台主机只要是需要连接服务,那么它一定会开启 tcp 协议的某个端口,因此,我们可以通过基于 tcp 协议的 ping 命令 tcping 来获知两台主机是否网络联通。本篇以 Ubuntu 18.04 为例介绍如何安装 TCPing,以及如何使用它探测网络是否联通。
安装 TCPing12345sudo apt update# centos 可以使用 yum 包管理工具安装sudo apt install tcptraceroute wget bcsudo wget http://www.vdberg.org/\~richard/tcpping -O /usr/bin/tcpingsudo chmod +x /usr/bin/tcping
使用 TCPing使用方法:
12345678Usage: tcping [-d] [-c] [-C] [-w sec] [-r secs] [-q num] [-x count] ipaddress ...
汉宁窗和汉明窗
窗函数在信号处理中是指一种除在给定区间之外取值均为 0 的实函数。任何函数与窗函数之积仍为窗函数,相乘的结果就像透过窗口”看“其他函数一样。常见的窗函数有矩形窗、汉宁窗(Hann window)和汉明窗(Hamming window),这在目标跟踪中也有相应的应用,如在孪生网络相应图中约束目标出现的位置。
Hann 窗和 Hamming 窗可以用如下的公式统一表示:$$w(n) = a_0 - (1 - a_0) \cdot \cos(\frac{2 \pi n}{N - 1}), 0 \leq n \leq N - 1$$当 $a_0 = 0.5$ 时,叫作 Hann 窗;当 $a_0 = 0.53836$ (更精确来说是 $25/46$)时,称作 Hamming 窗。
Hann 窗汉宁窗公式如下:$$w(n) = 0.5(1 - \cos(\frac{2 \pi n}{N - 1}))$$汉宁窗(Julius von Hann)有时也称为”Hanning“窗、余弦窗。从减小泄漏观点出发,汉宁窗优于矩形窗。但汉宁窗主瓣加宽,相当于 ...