0%

前两年做过一些微信公众号相关的开发。最近这两年自从微信小程序问世之后,公众号开发慢慢的淡出了视野。这段时间做了一个活动页,用到了微信网页授权登录的相关接口,坑点还是蛮多的,正好整理总结一下如何通过微信网页授权获取用户的基本信息。

阅读全文 »

通常情况下,图片的生成应当在客户端去实现。但是当我们必须在服务端去生成图片时 Barby Gem 是一个非常不错的选择。它是一个用来生成各种标准的条形码,以及二维码的库。Barby 的代码结构可以大致分为 生成器输出。输出器的功能非常全面,可以输出 Base64、PNG、PDF 等等,甚至我们可以基于 Barby 添加自己的输出器。

阅读全文 »

虽然下载文件有 Rails 默认的 send_datasend_file 方法,还有像 axlsx_rails 这样的第三方库。但是我仍然比较倾向于使用 Spreedsheet XML 的方式去开发下载文件的功能。

阅读全文 »

添加依赖

1
2
3
4
5
6
7

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
阅读全文 »

查看证书有效期

Let’s Encrypt 默认情况下只提供三个月的有效期,在有效期剩余半个月的时候,Let’s Encrypt 会发送邮件给你,提醒你需要做证书的续期操作。或者我们也可以通过以下命令查看证书的剩余有效期限:

1
2
3
4
5
6
7
8
9
10
11
$ ./certbot-auto certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: example.com
Domains: *.example.com example.com
Expiry Date: 2019-06-19 09:37:01+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
阅读全文 »

简单校验

在后端开发的过程中,验证前端参数的合法性是一个必不可少的步骤。但是参数验证会产生大量的样板代码,导致代码可读性差。使用 validator-api 可以简洁优雅的验证参数。我们来看一段代码:

1
2
3
4
5
6
7
@GetMapping
public ResponseEntity index(@RequestParam("userOrderId") String userOrderId) {
// 对订单ID做非空校验
if (null == userOrderId || "".equals(userOrderId))
return ResponseEntity.badRequest().build();
return ResponseEntity.ok().build();
}
阅读全文 »

Let’s Encrypt 证书不仅是免费的,而且支持通配符证书,通配符证书指的是一个可以被多个子域名使用的公钥证书,多个子域名使用起来十分方便。申请和配置的流程都非常简单,虽然每次的有效期为 90 天,但可以通过脚本去更新证书,只要配置好了,几乎可以一劳永逸。而市场上其他的通配符证书都比较昂贵,个人开发者平时做个小东西玩玩,Let’s Encrypt 应该是最好的选择了。

阅读全文 »

什么是面向切面编程

AOP 是一种编程范式,并非是 Spring 的独创,它与语言无关,是一种编程思想。AOP 可以帮助我们将通用的逻辑从业务逻辑中分离出来。从项目角度来讲,有一些逻辑散布于程序的各个地方,但它们的逻辑又是千篇一律的相同。比如:我们需要打印每个请求的 URL、请求参数、IP地址,最简单的做法是在每一个 Controller 中去打印出这些信息。如果使用 AOP,我们能够更加轻松的处理这些问题。打印日志并不是使用 AOP 的唯一场景,我们还可以通过切面去统一处理 声明式事务、缓存、应用安全 等等。

阅读全文 »