用git hooks自动化部署hexo
背景
hexo是知名的博客部署框架,采用SSG(Static Site Generation)的方式生成静态页面,结合使用github等托管平台可以快速部署我们的站点。hexo也给我们提供了支持部署的插件,安装完成以后我们可以使用hexo deploy推送内容到托管平台。
虽然hexo已经给我们提供了一套方便的部署方案,但是使用hexo最大的痛点之一就是当我们要换设备时无法方便的迁移。因为hexo deploy只负责把hexo生成的静态页面,也就是public目录下的内容推送到托管平台,我们如果要迁移我们的文章到另一台机器,只能把文件夹拷贝过去,非常的不方便,如果我们意外丢失这个文件夹,那么我们原来的markdown文章都会丢失。
今天要介绍的git hooks就是解决问题的一套方案,我们用git维护我们的hexo文件,不仅方便迁移,而且增加了维护历史版本的功能。
git hooks
开始之前还是先简单的介绍一下git hooks
钩子
可以简单的理解为在特定时机触发的程序。我们用git hooks来举一个简单的例子
123$ git init git-hooks-test$ c ...
从github page到github action
Github Pages和Github Actions
github pages是github给我们提供了托管静态网站的强大功能,让我们可以快速部署自己的一些应用。
github actions是github的一个CI/CD平台,可以帮助我们自动化测试,构建和部署项目,也拥有着十分强大的功能。
看似两者之间没有直接的联系,但是实际上,它们之间的关系比我们想的亲密多了,下面我们就从github pages开始一步一步讲述它们之间的联系。
如果对Github Actions还没有基本的认识,建议可以先去了解相关内容或者阅读我的博客
传送门:github-action简明教程
再认识Github Pages
我们先回到一个熟悉的界面,下面是github pages的配置界面
我们再来看看配置github pages的方式
发现是有两种的,这个时候我们就发现了一个选项——Github Actions,从这里就看出了一些端倪,我们由两种方式去部署github pages,其中一个就是借由Github Actions,下面开始逐个介绍这两种方法。
Deploy from a branch是 ...
cas认证流程简介
CAS是什么
在认识CAS之前,我们先认识一下SSO。
SSO是Single Sign On的缩写,意为单点登录,是一种应用架构,用户只需要登录一次就可以访问所有相互信任的应用。
SSO只是一种架构,而CAS就是实现SSO的一套方案,CAS是Central Authentication Service的简称。
了解CAS
我们先来用一个奇怪的游乐场模拟一下CAS整个运作的流程
在这个游乐场中,我们只需要去授权中心买一次票就可以在全场畅玩。每个游乐设施都需要自己它们自己单独的票据,但是我们不需要在每个地点购买票据,只要有游乐场的通票,我们可以用这个通票让游乐设施的售票处找游乐场授权中心验证(防止通票伪造),验证通过以后售票处会给我们票据,拿着对应的票据我们就可以在对应的游乐设施快乐的玩耍了。
在实际CAS实现中,对应关系如下
游客——浏览器
游乐场授权中心——cas server授权认证中心
游乐设施——多个APP
通票——TGC(Ticket Grangting Ticket)
游乐设施专门的票据——app对应cookie
关系图如下(限于CAS的流程实在比较繁琐,所以下面 ...
swaggo的使用
swag是一个为Go语言生成文档的框架,主要有两个部分组成
swag命令行工具,用于把Go注释生成为对应的Swagger2.0文档
为多种流行框架准备的插件,可以帮助我们快速嵌入Swag
快速开始(以gin为例)
下载和使用swag命令行工具
1$ go install github.com/swaggo/swag/cmd/swag@latest
如果不能使用记得检查一下你的${GOPATH}/bin目录是否加入了环境变量,接下来我们加上Go注释,main()函数中的内容我们暂且不需要管,在你的main.go中加入上面的注释部分就可以了,如果你不想把注释放在main.go的位置,后面使用swag命令行工具的过程中需要带上相关的参数
1234567891011121314151617181920212223242526272829303132333435363738// @title Swagger Example API// @version 1.0// @description This is a sample ...
hexo部署到自己的云服务器
开始之前
本文不会涉及hexo的使用,请先去了解hexo的基本使用和部署,也可以参考我的文章hexo建站简明教程。
本教程基于Centos7.6,如果是其它linux发行版请自行修改相应命令。
构建服务器环境
安装git和nginx
12345yum install gityum install nginx# ubuntuapt install gitapt install nginx
配置git仓库
下面的用户和目录都可以自己定义,但注意要保持上下文统一
123456789useradd hexo # 添加一个用户,其实也不是必须的chown -R hexo:hexo /home/hexo # 把目录的归属权交给hexo用户cd homechmod o+x hexo # 默认创建的hexo文件夹只有hexo有执行权限,nginx用户没有执行权限,将会导致403cd hexomkdir -p /home/hexo/www/blog # 创建博客部署目录git init --bare blog.git # 裸仓库,没有工作空间cd /home/hexo/blog.git/hook ...
github-action简明教程
Github Actions是什么
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。简单地说,就是通过编写符合Github Actions要求的"脚本",让Github来执行这一的"脚本"。
在开始之前,还是有必要简单的介绍一下持续集成。
持续集成指的是,频繁地(一天多次)将代码集成到主干。
它的好处主要有两个。
**(1)快速发现错误。**每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
**(2)防止分支大幅偏离主干。**如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
**持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。**它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
理解Github Actions工作流
上文中我们提到的脚本在具体的实现中就是一个工作流文件,该文件采用yaml编写,文件的命名没有要求,放置在代码仓库的.github/workflows文件夹下 ...
大学物理光学笔记
简谐振动
简谐振动的微分方程:d2xdt2+w2x=0简谐振动的微分方程:\\
\frac{d^2x}{dt^2}+w^2x=0
简谐振动的微分方程:dt2d2x+w2x=0
简谐振动方程:x=Acos(wt+φ)简谐振动方程:\\
x=Acos(wt+\varphi)
简谐振动方程:x=Acos(wt+φ)
质点运动的速度:v=dxdt=−Awsin(wt+φ)质点运动的速度:\\
v=\frac{dx}{dt}=-Awsin(wt+\varphi)
质点运动的速度:v=dtdx=−Awsin(wt+φ)
如果已知初始条件:t=0x=x0v=v0{x0=Acosφv0=−wAsinφ⟹{A=x02+v02w2tanφ=−v0wx0如果已知初始条件:\\
t = 0\quad x = x_0\quad v=v_0\\
\begin{cases}
x_0=Acos\varphi\\
v_0=-wAsin\varphi
\end{cases}
\Longrightarrow
\begin{cases}
A=\sqrt{x_0^2+\frac{v_0^2}{w^2}}
\\
tan\ ...
hexo建站简明教程
安装node.js
前往官网下载长期稳定版的node.js
Node.js
下载完成以后检查一下能否打印出版本,正常打印就表示下载成功
12npm -vnode -v
安装hexo
我们用npm在全局安装hexo
1npm install -g hexo-cli
检查一下是否下载成功
1hexo -v
初始化博客
找到你想要放置博客的目录,在当前目录下执行初始化命令,后面跟着你想给博客目录取的名字
1hexo init <dir-name>
现在你可以看到当前目录下多出了my-blog目录,我们进入到这个文件夹中
1cd myblog
你看到目录结构大概是这样的,作为使用者,我们不需要了解每个目录的作用,我们着重需要关注的是下面这些文件
source——保存你的博客文章的源文件,也就是以后你写的文章都会在这个目录里面
点开source,我们会发现一个_post目录,这是存在已发布文章的目录,你可以看见这里面已经有一篇helloworld了
_config.yml——博客的配置文件
运行你的博客
接下来我们将运行你的博客
123npm install ...
『mysql』mysql语法速记
一、数据定义
主要使用DDL,用于定义数据对象(数据库,数据表,视图,索引等)
数据库(DATABASE)
创建数据库
1create DATABASE test;
删除数据库
1DROP DATABASE test
选择数据库
1USE test;
数据表(TABLE)
数据表的创建与删除
创建数据表
123456CREATE TABLE user ( id int(10) unsigned NOT NULL COMMENT 'Id', username varchar(64) NOT NULL DEFAULT 'default' COMMENT '用户名', password varchar(64) NOT NULL DEFAULT 'default' COMMENT '密码', email varchar(64) NOT NULL DEFAULT 'default' COMMENT '邮箱') COMMENT= ...
『mysql』mysql快速入门
一、基本概念
数据库术语
数据库(database)-保存有组织的数据的容器
数据表(table)-某种特定数据类型的结构化清单
模式(schema)-关于数据库和数据表的特性信息
列(column):表中的一个字段
行(row)表中的一个记录
主键(primary key):一个特殊的列,可以唯一的标识数据表中的一行数据
SQL语法
SQL即Structed Query Language,在此基础上每个数据库都有对自己SQL的实现
SQL语法结构
SQL语法要点
SQL不区分大小写
SQL之间必须要以分号隔开
SQL处理时所有中间的空格都会被忽略,SQL可以写成一行,也可以写成多行
SQL的三种注释方法
123# 注释1-- 注释2/* 注释3 */
SQL分类
数据定义语言(DDL)
什么是DDL
数据定义语言(Data Definition Language)是SQL语言集中负责数据结构定义和数据对象定义的语言。
核心功能
定义数据库对象
核心指令
CREATE
ALTER
DROP
数据操纵语言(DML)
什么是DML
数据操纵语 ...