czp's blog

Spring-Boot-Jpa使用Google-Cloud-SQL

环境: Spring-Boot-Data-Jpa 2.0.5.RELEASE

编写使用 Google Cloud SQL 的应用时, 我们会发现一个问题. 当我们连接 Cloud SQL 时, 我们必须先知道 Cloud SQLIP, 同时还要到 Google Cloud Console 给自己的应用所部署的服务器加数据库白名单(如果是部署在同一项目下的 APP Engine 或者 Compute Engine 默认就有白名单).

一个应用还可以操作一下, 如果写的是微服务, 有几十个应用, 那简直是浑身爆炸.

于是我们想到, 有没有这么一种库, 可以帮我们自动寻找所需的 Cloud SQL 的真实地址并且自动完成身份验证呢.

秉承 ‘不写任何代码’ 的光荣传统, 我们找到了这个库 https://github.com/spring-cloud/spring-cloud-gcp/tree/master/spring-cloud-gcp-starters/spring-cloud-gcp-starter-sql-mysql

Read More

在Spring-Boot中正确注册Jackson-Module

环境: spring-boot 2.0.5.RELEASE

当我们在进行 Spring Boot 开发时, REST 接口的默认返回类型是 json, 使用的序列化库为 jackson.

Spring Boot 内部使用的 ObjectMapper 是在 MappingJackson2HttpMessageConverter 里被配置好的. 于是问题就来了, 我们想要使用更多的 Jackson Module 怎么办.

默认被配置的 Jackson ModuleJdk8Module, JavaTimeModule, JodaModule, KotlinModule. 这些 Module 是在哪里被注册的呢, 通过搜索大法, 我们发现是在这里 org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(ObjectMapper objectMapper)

1
2
3
4
5
6
7
8
9
10
Assert.notNull(objectMapper, "ObjectMapper must not be null");

if (this.findModulesViaServiceLoader) {
objectMapper.registerModules(ObjectMapper.findModules(this.moduleClassLoader));
}
else if (this.findWellKnownModules) {
registerWellKnownModulesIfAvailable(objectMapper);
}

...

Read More

Ubuntu下使用zsh

环境: Ubuntu 18.04 | zsh 5.4.2

久闻 zsh 大名, 但是一直没有用过, 因为听说配置起来很麻烦.

直到最近听说了 oh-my-zsh (早就有了), 据称它可以几乎零配置, 所以我们今天就来试一试它.

安装 zsh

oh-my-zsh 只是 zsh 的自动配置脚本, 我们得首先安装 zsh.

Read More

模拟超星网课Android客户端

本文撰写时的 学习通 版本 4.0.1

这个 超星 有好几个名字, 慕课, 尔雅通识课, 泛雅, Android APP 叫 学习通.

虽然这玩意有那么多名字, 但是有一件事情是亘古不变的, 那就是国内大量学校使用这个网课平台来填充学生的课程表. 而这家网课平台的课程质量普遍不佳, 分辨率低, 教师口音重, 教授内容废话连篇, 所以我们就想到了, 能不能不看这些网课呢.

这家网课平台的 Web 端的视频播放器是一个 Flash, 监听用户鼠标事件, 一旦用户鼠标移出 Flash 区域或者将浏览器最小化, 都将暂停视频直到鼠标重新放上. 而 Android 客户端就更是精彩绝伦, 视频播放的那个 Activity 直接是一个 WebView, 同样是通过 js 来监听切换到后台的事件, 令人啧啧称奇.

我们今天就来探究一下这个 超星 的 Android APP 是怎么运作的.

Read More