远程桌面软件 RustDesk
远程办公是近几年比较流行的办公方式,这大多是由于疫情的影响。比较流行的远程桌面控制软件有中国的向日葵、德国的 Teamviewer、中国的 ToDesk、中国的 RustDesk。本篇介绍 RustDesk,不仅是因为它是国产软件,更重要它是开源的,并且能够使用自建中继服务器,这给用户保留了更好的定制性和隐私性。本篇以 Debian 10 为例演示。
安装RustDesk 提供了各平台的版本,如 Windows, Mac, Ubuntu, fedora, Android, iOS, Web 等。安装非常简单,直接从 github rustdesk下载对应的版本就好。
安装后会自动分配一个 ID 和密码,作为唯一标识。当别的客户端连接本电脑时,需要输入该 ID 和密码。
自建中继服务器默认的软件已经提供免费的中继服务器,但带宽有限,缺乏隐私性。因此,RustDesk 提供了可自建中继服务器的方法,使用自己的服务器作为桥梁连接自己的电脑,获得可控的网速以及更高的安全性。
假设你已经有了一台具有公网 IP 的 vps 服务器(硬件要求很低,最低配置的云服务器就可以了,CPU 和内存要求都 ...
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 ...