Certbot 为你的HTTP服务加一层SSL协议

谷歌Chrome安全产品经理艾米丽·谢克特(Emily Schechter)发表博文,证实当该公司在7月发布Chrome 68浏览器时,该浏览器将把所有未采用HTTPS(安全套接字层超文本传输协议)加密的网站都标记为“不安全”网站。

Chrome作为浏览器界的巨头,做出如此的决定,将极大的推进HTTPS的进程,我们自然也应该跟进,一同建立更安全的网络环境。但一般证书都是较为昂贵的,因此互联网安全研究小组Internet Security Research Group(ISRG)以及Linux基金会等,提供了公益的项目,用于加速HTTPS的发展

Spring Boot使用GitLab CI自动部署

定义场景

spring boot应用在手动部署过程中主要分为两步,打包编译与上传部署(也可能存在测试环境,但由于该项目目前只有我开发,并未写测试用例)。同样的在gitlab-ci文件中也定义相应的两步骤

1
2
3
stages:
- build
- deploy

Spring Boot 自动重启脚本

一个脚本,自动从GitLab上下载jar,同时重启服务。为后续的CI自动部署做准备

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
#defined
echo "通过GitLab-CI下载jar"
wget -O bill-server.jar "https://gitlab.com/dream-room/bill-server/-/jobs/artifacts/$1/raw/target/bill-server.jar?job=release-build"
echo "查询已存在进程"
pgrep -af bill-server
echo "结束已存在进程"
pkill -f bill-server
echo "开始运行$1"
nohup java -jar bill-server.jar &
echo "更新结束"

运行

1
sh bill-start.sh release-0.0.3

测试驱动开发(TDD)的实践

测试驱动开发(TDD)是一种很好的方法论,虽然在国内并不被重视。但仍然想抽时间写一篇关于测试驱动开发的文档。

OK,最好的描述方式应该分为三部分吧,是什么?为什么?怎么做?那么就从这三部分,分别的描述测试驱动开发方法论。

GitLab Pages 搭建Hexo教程

大部分情况下,都是github pages与hexo组合搭建静态博客。但不可否认的是,这样存在一些问题。比如,每次文章写完都需要要编译,才能上传,如果我仅仅想写个博客,这样的操作显得繁琐。又比如,你拥有多台电脑的情况,你需要在每台电脑上都配置一样的环境。

所以通过持续集成CI/CD的方式,让编译自动化,是一种很不错的解决方案。这里将介绍gitlab-ci来简化环境的搭建与编译过程。当然静态资源将托管在gitlab-pages上。

There is also a tutorial in English

Dart之环境搭建

Dart 是一种易学习、易扩展、跨平台的编程语言。

  • 易学习:语法感觉很熟悉,语义是干净和一致的。是Java与Javascript的结合体。
  • 易扩展:仅谷歌就有超过200万行的生产Dart代码。应用程序可以达到数十万行代码。
  • 跨平台:Dart可以在每一个现代浏览器、命令行、服务器和移动设备上快速运行。

Google 在大型项目中部署使用 Dart。例如,下一代的AdWords (谷歌最重要的赚钱应用)运行在Dart上。

Java ProjectReactor框架之Flux篇

Spring5现处在第四个预发布版,正式版将要发布了,它带来的一大特性就是响应式框架Spring WebFlux。默认使用ProjectReactor框架。因此。本文通过ProjectReactor中的Flux,来学习使用该框架,以及了解其传递的思想。

本文基于Reactor3.1 rc1

Reactor官方地址http://projectreactor.io/,官方文档写的十分详细,如果您有不错的英文能力,建议直接阅读官方文档。

Spring Data Jpa与Mybatis的选择

看了会jpa的文档,感觉挺不错的,如果都是增删改和简单查询,那基本就不用写sql,同时数据库也交由jpa管理,省心。
当然jpa也绝对不全是优点,当默认的规范生成sql不能满足我们的业务的时候。mybatis直接写sql更简单,更易实现。而且,我们也可以更好的调整sql以提升性能(sql的调优后,性能成倍提高的)。

那么,他们之间改怎么选择呢

Shiro拦截器与过滤器

这篇是对 开涛的《跟我学shiro》 的部分章节补充,更详细的探讨shiro的过滤器和拦截器

拦截器与过滤器定义

  • 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。它依赖于servlet容器。
  • 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

在shiro中存在下图关系
shiro