0%

现象

每当我通过扩展坞外接显示器,然后调整分辨率(修改DPI),再合上盖子或者重新启动,再次连接外接显示器就黑屏没反应,再也没有办法检测到显示器了。

研究

神奇的是我重装 macOS 就能恢复,经过一番研究(重装N次,时间机器恢复N次),发现是 macOS 在调整分辨率后会写入显示配置文件,然后系统就会触发这个Bug,显示器就再也识别不了了!

阅读全文 »

原生kubectl,在.bashrc中加入

1
source <(kubectl completion bash)

microk8s自带的kubectl,需要先设置别名

1
2
alias kubectl=microk8s.kubectl
source <(microk8s.kubectl completion bash)
阅读全文 »

https已经必不可少,经常部署vps手动申请部署证书很麻烦,证书会过期,需要定期更新,没这个精力,现在我们可以利用certbot自动申请ssl证书,非常方便。

certbot有很多种方式申请证书,具体可查看文档:https://certbot.eff.org/docs/,不同方式的用途不一样,如果只是静态网站,那么可以选择nginx插件部署,如果是科学上网,那么建议使用webroot更方便。

阅读全文 »

根据rxjs官网的说法,Observable是冷数据流,Subject是热数据流。

我的理解,从数据生成角度

  • Observable: 数据生成者,数据产生在内部
  • Subject:数据生成者和消费者,可以从外部接收数据

举个例子

1
2
3
4
5
6
7
8
9
import { Observable, Subject } from 'rxjs'

const observe$ = Observable.of(1, 2)
observe$.subscribe((a) => { console.log(a) }) // 1, 2

const subject = new Subject()
subject.subscribe((a) => { console.log(a) }) // 1, 2
subject.next(1)
subject.next(2)
阅读全文 »

初识docker

docker这么火,必须要了解一下了。

之前在别的部门接了个前端项目,做了个需求,是后台打印pdf文件,导出。找了很多方案,决定使用puppeteer无头chrome作为后端打印机用。本地开发没什么问题,但是到了线上问题就大了,在线编译无法通过,编译环境是centos环境,无法下载chrome,chrome的依赖也没有。做了很多额外的恶心的东西在里面。这时候,想到如果开发环境和部署环境一样的话,多好,完全没有这种问题。而docker就可以解决这些问题。

阅读全文 »

最近看了看koa的源码,源码很简洁,组织的很清爽。

这里面最重要的一块是中间件的实现,koa通过koa-compose串联到了一起。

koa-compose的设计目标: 每个中间件中的逻辑按照洋葱圈的方式执行。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const Koa = require('koa');

const app = new Koa();
const PORT = 3000;

// #1
app.use(async (ctx, next)=>{
console.log(1)
await next();
console.log(1)
});
// #2
app.use(async (ctx, next) => {
console.log(2)
await next();
console.log(2)
})

// #3
app.use(async (ctx, next) => {
console.log(3)
})

app.listen(PORT);
console.log(`http://localhost:${PORT}`);
阅读全文 »

前言

最近看依赖注入控制反转,javascript的实现借助了inversifyjs,而inversifyjs又用到了reflect-medadata,简单的研究了下reflect-metadata内部结构,想看看它是怎么存储元数据的。

正文

简单看一个api

1
Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
阅读全文 »

背景

需要一个方便部署应用的平台,搜索了以后选择主流的k8s。

k8s有很多安装方式,原生官方网站的安装方式很麻烦,组件众多,大多需要科学上网。于是开始寻找一种方便的安装方式,而且需要支持单机部署(master和worker节点在一个机器上),找到几个靠谱的方案。

  • minikube:它的好处是安装足够方便,指定docker国内镜像即可一路绿灯,安装完成。但是缺点是基本只能单机学习用,其master是安装在docker中的,对外发布的时候,不能像原生安装那样,设定一个port就能让集群外的人访问,只能本机访问,要对外发布的话,就有很大的成本,比较适合个人学习使用。

  • microk8s&k3s:这两个都是轻量级的k8s方案,安装较方便,内置了很多常用的插件和服务。但是同样的会遇到很多问题,不少问题都是他们自己封装的时候特有的,不方便排查。同时这两个都强制使用containerd作为驱动,作为容器标准化的产物,containerd相比少了一层交互,但是命令行完全没有docker用的舒服,同时令人费解的toml配置,很令人劝退。

  • 部署工具安装:这是最终使用的方案,kubeadm部署工具,因为microk8s和k3s也无法摆脱科学上网,同时还增加了更多的问题。那为什么不使用官网的方式安装呢?事实证明按照官网安装是坑最少的,官网中文教程非常详细,而且有各种国内源加速,问题解决方法容易搜索到。

阅读全文 »

安装redsocks

代码库redsocks,直接clone到本地。

前置条件:安装libevent和build-essential。

进入clone的目录,直接输入make命令编译,只要不是错误,警告消息可以忽略。在目录下会出现一个redsocks的可执行文件。

redsocks配置

在目录下新建一个配置文件redsocks.conf,目录下有个叫redsocks.conf.example的全量配置文件,复制它的内容到redsocks.conf,然后修改之,以下把很多注释的东西删除了,改动的地方已标明。

阅读全文 »

在内网环境安装yarn使用的时候,出现yarn一直没有响应的情况。

原因是yarn安装完成会做升级检查,内网环境无法访问外网请求。

只需要关闭yarn自升级检查即可。

1
2
npm i yarn -g
yarn config set disable-self-update-check true