0%

前言

VuePress v1.x 博客建议安装 vuepress-plugin-readmore-popular 插件,将 TechGrow 的免费微信公众号导流工具整合到博客中,用户扫码关注微信公众号后可以解锁全站文章,让微信公众号的粉丝数躺着增长。

提示

  1. TechGrow 开放平台的 官方文档
  2. vuepress-plugin-readmore-popular 插件只支持 VuePress v1.x,不支持 VuePress v2.x
  3. 若希望实现 VuePress v2.x 的公众号导流,建议使用 vuepress-plugin-readmore-popular-next 插件

特色功能

  • 支持随机为博客添加导流功能
  • 支持关闭某篇文章的导流功能
  • 支持查询用户解锁文章的历史记录
  • 支持自定义 CSS 样式,轻松适配不同风格的博客
阅读全文 »

前言

Rsync 是一个增量备份工具,可压缩数据传输,速度快且增量备份,占用流量少。

准备工作

创建用户

1
2
3
4
5
# 创建用户组
# groupadd www

# 创建用户
# useradd -g www www -s /bin/false
阅读全文 »

前言

博客将流量导向微信公众号很简单,可以使用 TechGrow 的免费导流工具实现,用户扫码关注微信公众号后可以解锁全站文章,让微信公众号的粉丝数躺着增长。整个过程只需六步就可以搞定,适用于各类主流的博客,本文以 Hexo 的 NexT 主题博客举例。

提示

  1. TechGrow 开放平台的 官方文档
  2. 若使用的是 Hexo 静态博客,建议直接安装 hexo-readmore 插件,详细教程可点击这里
  3. 若使用的是 VuePress v1.x 静态博客,建议直接安装 vuepress-plugin-readmore-popular 插件,详细教程可点击这里

特色功能

  • 兼容主流的博客框架
  • 支持随机为博客添加引流功能
  • 支持查询用户解锁文章的历史记录
  • 支持自定义 CSS 样式,轻松适配不同风格的博客

第一步:注册博客

浏览器访问 TechGrow 的官网 ,注册并登录账号后,进入博客的后台管理页面。首先点击左侧的菜单 博客注册,然后点击 新增 按钮,添加自己博客的信息。博客注册成功后,记录下 博客 ID,后面的步骤会使用到

阅读全文 »

前言

如何在 Vue 中读取项目本地的 MarkDown 文件并展示在网页上呢?查阅资料后发现,一般的方案是在 Vue 页面中引入 Markdown 编辑器,然后利用编辑器的预览功能来展示 MarkDown 文件的内容。推荐使用开源的 MarkDown 编辑器 mavonEditor 或者 vue-meditor

vue-meditor 介绍

简介

阅读全文 »

构建 Frps 镜像

  • Dockerfile 编写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FROM amd64/alpine:3.10

LABEL maintainer="snowdream <sn0wdr1am@icloud.com>"

ENV FRP_VERSION 0.38.0

RUN cd /root \
&& wget --no-check-certificate -c https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \
&& tar zxvf frp_${FRP_VERSION}_linux_amd64.tar.gz \
&& cd frp_${FRP_VERSION}_linux_amd64/ \
&& cp frps /usr/bin/ \
&& mkdir -p /etc/frp \
&& cp frps.ini /etc/frp \
&& cd /root \
&& rm frp_${FRP_VERSION}_linux_amd64.tar.gz \
&& rm -rf frp_${FRP_VERSION}_linux_amd64/

ENTRYPOINT /usr/bin/frps -c /etc/frp/frps.ini
阅读全文 »

前言

CMake 是一个跨平台的 C/C++ 项目组织管理工具,虽然许多 IDE 都有私有的项目管理工具,但是在现在各大 IDE 基本都支持使用 CMake 管理项目,所以如果有跨平台的需求,使用 CMake 管理是最方便的。值得一提的是,CMake 支持 gtestcppunit 等单元测试框架,当然也可以使用断言自定义单元测试。

创建简单的带单元测试的项目

创建项目工程

下载代码

点击下载 完整的案例代码,项目的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
minder-test
├── CMakeLists.txt
├── include
│ └── datetime.h
├── src
│ ├── datetime.cpp
│ └── main.cpp
└── test
├── CMakeLists.txt
├── include
│ └── strUtil.h
└── src
└── main.cpp
阅读全文 »

前言

Linux 中没有 Windows 系统中的 CreateEvent()WaitEvent()SetEvent()ResetEvent() 等函数,本文将介绍如何使用 pevents 替代 Linux 缺失的函数。

pevents 介绍

阅读全文 »

conio.h 头文件

移植简述

conio.h 不是 C 标准库中的头文件,在 ISO 和 POSIX 标准中均没有定义。conio 是 Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如 getch() 函数等等。大部分 DOS、Windows、Phar Lap、DOSX,OS/2 等平台上的 C 编译器提供了此头文件,UNIX 和 Linux 平台的 C 编译器本身通常不包含此头文件。另外在项目开发中,平时主要是使用 conio.h 这个头文件中的 getch() 函数,即读取键盘字符但是不显示出来(without echo),但是含有 conio.h 的代码在 Linux 下无法直接编译通过,因为 Linux 没有这个头文件。但 Linux 平台下完全可以使用 ncurses 替代 conio.h 头文件,ncurses 支持的 API 可以阅读 官方文档。值得一提的是,ncurses 在 Linux 平台实现了 getch()scanw()getstr() 等函数。

阅读全文 »

string 容器的概念

string 是 STL 的字符串类型,通常用来表示字符串。而在使用 string 之前,字符串通常是用 char* 表示的。stringchar* 都可以用来表示字符串,两者的区别如下:

  • string 是一个类,char* 是一个指向字符的指针
  • string 封装了 char* 来管理字符串,本质是一个 char* 类型的容器
  • string 不用考虑内存释放和越界的问题
  • string 负责管理 char* 所分配的内存。每一次 string 的复制,取值都由 string 类负责维护,不用担心复制越界和取值越界等问题
  • string 提供了一系列的字符串操作函数,例如:查找(find)、拷贝(copy)、删除(erase)、替换(replace)、插入(insert)
阅读全文 »