为文章生成一个唯一的ID
前言在我使用halo写文章时,为文章命名后,同时要设置一个文章别名用来访问,而默认生成的是以标题拼音命名,这样地址栏中会不美观,所以需要为文章生成一个唯一的ID。 实现方法这里我参考了hexo-abbrlink这个项目,首先对文章标题进行一次CRC16/CRC32加密处理,生成一个ID,同时可选择是否以十六进制的形式显示。这里我用PHP进行编写,其中PHP自带了crc32()的函数,而crc16()需要自己实现,可以参考我的另一篇文章: 使用PHP实现CRC16算法 CRC16: 123456789101112131415function crc16($str): int { $crc = 0xffff; for ($i = 0; $i < strlen($str); $i++) { $crc = ($crc >> 8) ^ ord($str[$i]); for ($j = 0; $j < 8; ++$j) { if (($crc & 0x0001) =...
记录轻量云服务器安装ArchLinux
简介本人使用腾讯的轻量云服务器,但是发现选择轻量云的最低配置时,使用常用的发行版作为服务器时,系统服务较多会导致资源占用较大,而Archlinux可以高度自定义,只安装自己需要的组件,不需要的组件就不安装,尽可能的减小系统资源占用。并且在系统出现Kernel Panic的情况,可以保留所有数据修复系统,其他发行版可能就需要重装系统。但是腾讯轻量云默认没有提供Archlinux的系统,所以我尝试自己安装Archlinux,并且记录完整的流程 要求要求服务器平台必须支持VNC控制,例如腾讯云支持VNC控制,如图:阿里的轻量云服务器的VNC控制的位置和腾讯云不同,阿里的VNC叫作“救援模式”,并且需要先设置VNC密码,由于本人现在没有阿里云的服务器,就不展开讲了。如果是使用其他厂家的服务器,只要可以连接VNC控制服务器也可以进行这个操作系统建议Ubuntu或Debian,在大部分的厂家都会提供这两个系统,我测试过多次使用CentOS在调整分区时会出现问题,所以建议使用这两个系统。 原理修改硬盘分区,在原有硬盘的后方加上一个分区,用来存放Archlinux Live系统的文件,重启后通过...
IPv4缩写规则
前言今天在ping一个v4的IP时,漏写了两段数字,执行后发现也能ping而不是提示错误的参数,我执行了ping 127.1命令,实际上是对127.0.0.1这个IP进行了ping操作;对此,我进行了研究,看看为什么可以进行缩写 IPv4组成通常情况下,一个IPv4的地址由4个0~255之间的整数组成,并且每个数字之间通过一个点“.”连接,例如127.0.0.1;在计算机中,数据都使用二进制进行存储,IP也是同理,127.0.0.1这个IP用二进制表示就是:11111111 00000000 0000000 00000001。 允许缩写的原因上面提到,IPv4地址本质上是一个32位的二进制数据,在十进制下通过点分隔开的每一位数字都对应一个8位的二进制数字;但是理论上每一位十进制数字都应该小于256(即0~255),那么如果超过255,这个数字就无法使用8位二进制进行表示,就会变为一个16位的二进制数,可以同时表示两段数字;还有另一种情况,就是我开头提到的情况,在少写两段数字的情况也能找到IP,这个就是IPv4的补位,在IP的位数不足时,会将最后一段二进制进行补位,使整个IP的二进...
深入浅出valine(三)编写代码
前言如果前面的步骤你已经完成了,那么在这个PHP项目中,你已经安装了LeanCloud的SDK,这篇文章将开始编写PHP的代码 拓展检查在编写代码之前,需要检查一些拓展是否启用,编辑php的配置文件,如果你不知道配置文件的位置,先执行这个命令 Windows1php -i | findstr php.ini Linux1php -i | grep php.ini 其中有个Loaded Configuration File,后面的路径就是配置文件,编辑这个文件,向下翻可以找到很多extension开头的行将curl取消注释,Windows系统中还需要将openssl取消注释 创建文件在项目中创建一个php文件,可以命名为main.php或index.php,这里我命名为main.php,在文件中加入基本标志 1<?php 接下来让composer装的包能够自动加载 1include "vendor/autoload.php"; 初始化客户端使用LeanCloud的SDK之前,需要先初始化LeanCloud的客户端 12use \LeanCloud\Clie...
深入浅出valine(二)配置SDK
前言这篇教程将讲解如何配置LeanCloud的SDK,用于编写Valine管理接口,安装SDK需要依赖Composer。如果你还没有安装Composer,可以参考教程:安装Composer教程 创建项目为了更方便的开发,我们需要使用PHPstorm创建一个项目,我将其命名为Valine-API下方的Add 'composer.json'复选框可选可不选,在安装SDK时会自动创建这个文件创建完成后,项目目录下打开终端,执行命令: 1composer require leancloud/leancloud-sdk 安装完成后,项目目录中会出现vendor文件夹,这个就是所有composer包安装的位置,同时还会出现composer.json文件,这个文件定义了当前项目需要依赖哪些包。接下来就可以愉快的开发了 结尾这篇教程到这里就结束了,感谢您的耐心阅读,如果你在安装的过程中遇到问题,可以在下方评论区中留言。
深入浅出valine(一)准备
介绍有一个非常有名的评论功能,叫做valine,在这篇文章底部使用的评论系统就是valine,他的功能非常强大,可以记录IP,分析设备类型,根据昵称显示对应头像(gravatar)等,这个功能的数据存储在Leancloud中,那么这篇文章将讲解对这个Leancloud平台的数据库操作并操作valine的评论,这篇内容可能比较长,希望你能耐心看完,有问题可以在下方评论区中留言。 登录Leancloud平台如果你也是hexo使用者并且也使用valine这个评论系统,那么你一定已经注册了Leancloud账号 注册账号如果你还没有注册账号,那么可以点击这个注册链接:https://console.leancloud.cn/register 去注册,注册需要使用邮箱和手机号,注册完成之后就可以去登录了。 登录账号点击这个链接:https://console.leancloud.cn/login 去登录,登录之后就会进入控制台。 如果你是第一次使用这个平台,那么登录之后会提示你需要实名认证,这个实名认证一定要完成,不然后续无法继续操作。 进行相关设置并获取信息创建应用点击导航栏中的lo...
使用PHP实现CRC16算法
简介Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。 计算流程 预置1个16位的寄存器为十六进制0xFFFF;称此寄存器为CRC寄存器 实现代码: 1$crc = 0xFFFF; 把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,结果放入CRC寄存器中 实现代码: 1$crc=($crc>>8) ^ ord($str[$i]); 把CRC寄存器的内容右移一位(朝低位)用0填补,并检查右移后的移除位 实现代码: 1($crc & 0x0001) == 0 如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与0xA001进行异或 实现代码: 123456if (($crc & 0x0001) == 0) { $crc >>= 1;} else { $crc >>= 1; $crc ^= 0xa001;} ...
使用PHP快速导出Halo文章为Markdown
前言Halo是一个非常不错的博客程序,使用起来非常方便,但是在里面写的文章却不能导出为Markdown文件,那么我就实现了一个导出Halo文章为Markdown的程序 安装依赖这个功能中,需要将HTML转换为Markdown,所以需要安装转换工具库,这个库的名称为league/html-to- markdown,使用命令安装这个库 1composer require league/html-to-markdown 分析如果你的博客使用了MySQL作为数据库,那么就可以比较方便的读取数据,如果是使用了默认的H2数据库,就需要导入到MySQL中。Halo的数据在数据库中存储比较特殊,采用了blob格式,我们能轻松读取数据,但是却难以修改,导出文章只要获取数据就足够了。Halo的数据全部存储于一张表:extension,每一行数据有name、data、version三个字段,其中name和data是我们要用到的字段。文章的name一般为:/registry/content.halo.run/posts/······,文章的data是一个...
配置Frp映射教程
前言在公网中访问自己的私有设备会有一定的难度,一般可以通过第三方软件进行远程控制(Todesk、TeamViewer、向日葵等),但是这样需要安装软件,换到新的设备上还需要安装对应的软件;另外一种方案就是通过端口映射实现,将内网主机的端口映射到公网上,这篇教程将使用frp完成端口映射。 安装frp首先需要获取frp,下载地址:fatedier/frp找到对应的压缩包,Windows使用frp_0.xx.x_windows_amd64.zip,Linux使用frp_0.51.3_linux_arm64.tar.gz,点击下载,下载完成后解压解压后可以看到这些文件 文件名 描述 frpc.exe frp映射客户端程序 frpc.ini frp映射客户端配置文件 frpc_full.ini frp客户端配置文件示例 frps.exe frp服务端程序 frps.ini frp服务端配置文件 frps_full.ini frp服务端配置文件示例 配置服务端编辑frps.ini文件,在common段中有一些属性 属性名 属性描述 参考属性...
从宝塔获取网站访问统计
介绍突然在宝塔中发现了一个非常不错的功能:没错,这个就是宝塔的网站监控,这个功能可用直接统计网站的访问量信息,相对准确很多,网上提供的接口可能会因为请求问题导致记录数量丢失,而宝塔的网站监控就可以从根源上进行记录请求,但是这个功能虽然很好,可是没有提供接口给我们使用,于是我决定研究并开发出一个获取其数据的接口。 寻找数据存放位置经过一番查找,我发现宝塔统计数据就存放在这里: 1/www/server/total/logs/站点名称 观察数据结构这个路径中,有一些.db文件,这些就是存储了统计信息的数据文件。其中用日期命名的是每天的访问记录,而我们需要的是总统计数据,所以需要total.db这个文件不难知道,这些是sqlite数据库的文件,我将total.db文件下载下来,并通过软件打开。 数据表于是发现这个数据库的结构是这样的 client_stat 客户端统计 用于记录访问过的客户端信息 ip_stat IP统计 用于记录访问过的IP地址 referer2_stat 来源统计 用于记录访问来源信息 request_stat 请求统计 用于记录请求 spider_stat 蜘蛛...










