米米的博客

做了一点微小的工作

在使用 VPS 时,如果出现内存不够用的情况,可能会产生各种奇怪的问题。这个时候,增加 Swap 空间,就可以起到救急的作用。下面就来看看具体步骤。

创建 Swap 文件

检查 Swap 空间

先检查一下系统里有没有既存的 Swap 文件:

1
swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

创建 Swap

使用 fallocate 为 Swap 文件预分配空间:

1
fallocate -l 1G /swapfile

如果 fallocate 分配空间不成功的话,可以用 dd 命令代替:

1
dd if=/dev/zero of=/swapfile bs=1024 count=1048576 #分配1G的Swap空间

参数说明:

  • if=input file:输入文件名,缺省为标准输入。即指定源文件。
  • of=output file:输出文件名,缺省为标准输出。即指定目的文件。
  • bs=bytes:同时设置读入 / 输出的块大小为 bytes 个字节,取为 1024。
  • count=blocks:拷贝的块数,块大小等于 bs 指定的字节数。将前面算出的数字填入即可。

我们需要根据需求(即要分配的 Swap 文件的大小)来计算出参数。上面示范的做法是,每次读写 1KiB,重复 N 次,这样可以兼顾内存消耗和读写次数。因此,如果以 MiB 为单位计算你要分配的 Swap 文件的大小,那么读写次数(拷贝的块数)就是将该值乘以 1024 得到结果。例如,块大小为 1KiB 时,64MiB 的 Swap 文件拷贝的块数是 65536,而 1GiB 的 Swap 文件则是 1048576。

这里的 if=/dev/zero 意味着向 /swapfile 填满空字符。经笔者测试,将它换成 /dev/urandom,也可以正常初始化。

阅读全文 »

科幻大片里的电路背景看上去是非常复杂的也是非常炫酷的,不过用滤镜来制作却不是很复杂。先把一些纹理处理成网格效果,然后用查找边缘等滤镜加强网络的边缘线条,后期细化一下线条,调整一下颜色即可。

科幻电路板效果

阅读全文 »

「表情包」是一种利用图片来表示感情的方式。在各种社交软件的带动下,「表情包」已经形成了一种流行文化。互联网上,基本人人都会发表情;很多实时通讯软件中,「斗图」成为了一种活跃气氛的常见方式。不知你是否曾有过找不到表情包去应对别人的时候?
今天笔者分享用 Python 开发个人专属的表情包网站的方法,想用什么表情包搜一下就有了!
目标:获取海量表情包,存入数据库,然后搭建简单网站,通过输入关键字获取对应的的表情包。

创建数据库

首先,我们要从这个网站爬取表情包:斗图啦
我们先来分析一下这个网页的源代码:

检查元素

通过源码,我们可以发现需要获取的内容包括每个 <img> 标签的 data-originalalt 属性。通过爬虫获取网页,用正则表达式提取内容,然后存入数据库即可。
这里用到的数据库是 MySQL。如果还没有安装的话,不妨参考前面的文章 MySQL 8.0 的安装和使用

安装完成后,你可以用 root,也可以创建一个新用户,来新建数据库和数据表,用来存放表情包:

1
2
3
4
5
6
7
8
9
10
#建立数据库images
CREATE DATABASE images;
USE images;
#然后在该数据库中新建一个表,并添加相应的name和imageUrl
CREATE TABLE images (
id int(10) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
name varchar(1000),
imageUrl varchar(200)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
QUIT;

至此数据库方面的工作就完成了。

安装依赖

依赖包是 requestsmysql-connector-pythonFlask。使用 pip 进行安装即可。

阅读全文 »

在前面的文章 NGINX 配置 SSL 中,提到了关于创建 Crontab 定时任务的内容。事实上,在使用 Linux 系统时(特别是在服务器上),经常会碰到需要在某个特定时间执行某些任务的情况。笔者近期研究了 Crontab 的机制,并对常见的 Crontab 用法做了一个总结,收集了一些关于计划任务的实例,现把相关内容分享出来,同时也给自己一个备忘。

Crontab 使用方式

1
2
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

各参数为:

  • -u user:用来设定某个用户的 crontab 服务。
  • file:file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件并载入 crontab。如果在命令行中没有指定这个文件,crontab 将接受从标准输入(如键盘)中键入的命令,并将它们载入 crontab 任务列表。
  • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
  • -l:显示某个用户的 crontab 文件内容。如果不指定用户,则表示显示当前用户的 crontab 文件内容。
  • -r:从 /var/spool/cron 目录中删除某个用户的 crontab 文件。如果不指定用户,则默认删除当前用户的 crontab 文件。
  • -i:在删除用户的 crontab 文件时给确认提示。

Crontab 文件格式

用户所建立的 crontab 文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

1
2
minute hour day month week command
分  时  日  月  周  命令

具体来说,每一列的内容分别是:

  • 分钟,可以是从 0 到 59 之间的任何整数。
  • 小时,可以是从 0 到 23 之间的任何整数(0 表示 0 点)。
  • 日期,可以是从 1 到 31 之间的任何整数。
  • 月份,可以是从 1 到 12 之间的任何整数。
  • 星期几,可以是从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日。
  • 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

Crontab格式说明

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如 1,2,5,7,8,9
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如 2-6 表示 2,3,4,5,6
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如 0-23/2 表示每两小时执行一次。

同时正斜线可以和星号一起使用,例如 */10,如果用在 minute 字段,表示每十分钟执行一次。又如,每分钟可以用 * 或者 */1 表示。

阅读全文 »
0%