使用 Helm 管理开发环境

添加负载均衡

在云端,这个通常是由云服务商提供的,但由于我们是本地。所以需要自己添加,traefik 是目前最主流的

1
2
3
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik

运行下面命令,可以在 http://127.0.0.1:9000/dashboard/ 查看仪表

1
kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000

Nacos

Nacos 是 Spring Cloud 最好的服务发现与配置中心,我仍然使用了它的 k8s operator

首先安装 operator

1
2
3
git clone https://github.com/nacos-group/nacos-k8s.git
cd operator
helm install nacos-operator ./chart/nacos-operator

其次安装 nacos

1
2
helm repo add jiangtj https://jiangtj.github.io/helm-charts
helm install nacos jiangtj/nacos-simple

nacos-simple 包含了一个 nacos.yaml 定义nacos服务和一个 ingress.yaml 定义转发,详见GitHub

总结

k8s 能定义一系列的服务,对于一个复杂开发环境来说,会比 docker 更加简单,比如同时需要redis rabbitmq mysql等等,尤其还能通过 helm 同步定义,当然简单的环境,还是 docker 吧

linux 代理

env

1
2
export http_proxy=http://192.168.1.20:7890
export https_proxy=http://192.168.1.20:7890

profile

~/.profile 持久化当前用户的代理,全局在 /etc/profile

1
2
export http_proxy=http://192.168.1.20:7890
export https_proxy=http://192.168.1.20:7890

wget

修改 ~/.wgetrc 创建 wget 代理

1
2
3
4
5
6
7
8
#You can set the default proxies for Wget to use for http, https, and ftp.
# They will override the value in the environment.
https_proxy = http://192.168.1.20:7890
http_proxy = http://192.168.1.20:7890
ftp_proxy = http://192.168.1.20:7890

# If you do not want to use proxy at all, set this to off.
use_proxy = on

为 Spring WebFlux 提供 'ApplicationEventPublisher'

在 Spring 中提供了 ApplicationEventPublisher,用于发布事件,这在一些场景下十分有用,比如,当我创建一个货物,而另一个服务监听货物的创建并为其创建库存。所以在Spring MVC中很实用,我也常常用它来解耦,但是当我切换为 WebFlux 时,就尴尬了。因为 ApplicationEventPublisher 是同步操作,它并不支持响应式,即流操作。

所以,我在 WebFlux 中实现一个类似的发布订阅模式,以替代 ApplicationEventPublisher

WinGet Windows官方的包管理工具

WinGet 是官方推出的包管理工具,它目前支持以下命令

1
2
3
4
5
6
7
8
9
10
winget  install   安装给定的程序包
winget show 显示有关程序包的信息
winget source 管理程序包的来源
winget search 查找并显示程序包的基本信息
winget hash 哈希安装程序的帮助程序
winget validate 验证清单文件
winget settings 打开设置
winget features 显示实验性功能的状态
winget export 导出已安装程序包的列表
winget import 安装文件中的所有程序包

大部分命令都是很常见的,相对于Linux来说,WinGet的安装方式是下载exe mis等文件,直接运行安装,在体验上有些怪怪的。而且,从我个人使用来看,目前 WinGet 最适合的场景就是重装完系统,快速安装软件

R2DBC-传统数据库也能响应式编程

R2DBC 是 Reactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写,最近在项目中尝试 Webflux,被迫,使用 R2DBC 进行数据库操作(我还是更喜欢关系型数据库而不是文档型)。当然在实际使用后,发现这个框架虽然有些不足,但这才是我喜欢的DB框架

这里零散的记录下我遇到的一些问题,或者钟爱的一些特性,或者自己写的小工具

Spring Boot 2.4 新的配置文件处理方式

配置文件是 Spring Boot 的一个核心特性,自正式版发布以来,几乎未改动过,而在2.4中,Spring 官方调整了配置文件的处理逻辑

  • 外部配置文件优先于内部 Profile 配置
  • 重命名 spring.profilesspring.config.activate.on-profile
  • 新增 Profile 组

NPM 包代理

在国外,最简单的是安装,在国内,最难得就是安装,太难了

下面是一份我正在用的.yarnrc的配置

1
2
3
4
5
6
7
8
9
10
11
disable-self-update-check true
registry "https://registry.npm.taobao.org"
phantomjs_cdnurl "https://npm.taobao.org/dist/phantomjs/"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
electron_builder_binaries_mirror "https://npm.taobao.org/mirrors/electron-builder-binaries/"
sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
operadriver_cdnurl "http://npm.taobao.org/mirrors/operadriver"
node_sqlite3_binary_host_mirror "http://npm.taobao.org/mirrors"
python_mirror "http://npm.taobao.org/mirrors/python"

Flutter 环境搭建注意事项

国内无法访问谷歌的服务,所以参考这篇 Using Flutter in China 官方的文档,进行配置

Flutter的中文社区为: https://flutter.cn

SDK下载

使用 https://storage.flutter-io.cn/ 代替 https://storage.googleapis.com/ ,下载对应的SDK,例如

或者使用迅雷下载,迅雷P2P加速可以绕过(迅雷11内测版下载)

Android Studio

Jetbrains 的下载工具已经支持下载 Android Studio, 可以通过它下载

Android SDK 现在似乎不被屏蔽了。。。

使用镜像

Flutter 依赖于 Dart 的依赖环境,在国内需要通过镜像访问。所以在在运行Fltter命令之前,需要设置两个环境变量:PUB_HOSTORD_URLFALTER_STORKER_BASE_URL

MacOS/Linux 用户

1
2
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

Windows 用户

电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 中修改

下载 Gradle

Gradle 没被墙,但是下载很慢,如果不手动下载,可能长时间卡在这一步

当你创建一个新项目时,会生成一些文件,其中有个${project}/android/gradle/wrapper/gradle-wrapper.properties

1
2
3
4
5
6
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

这个文件描述了 Gradle 下载的位置,以及它的分发地址(我这需要下载bin归档,不知道是我环境问题还是什么,即https://services.gradle.org/distributions/gradle-5.6.2-bin.zip)

存放的位置很奇怪,是${GRADLE_USER_HOME}/wrapper/dists/gradle-S{version}-all/${sha}/,比较简单的方法是先运行下,再去找这个目录,把已经下好的 gradle 归档文件直接丢进去,不需要减压或重命名

暂时就这些,如果还有以后补充

Hexo 5.0.0 正式发布

Node.js 上最快的静态站点生成器 Hexo 发布了 5.0.0 版本。作为 Hexo 核心团队成员,让我为大家介绍一下 Hexo 5.0.0 中的新特性,以及如何从 Hexo 4.x 版本升级到 Hexo 5.0.0。