越秀配镜之旅

IMG_0500

  1. 使用相机自拍而而不是使用镜子
    大致挑选的时候可以使用镜子,当要实际对比的时候使用相机自拍对比。
    由于我近视程度比较深,带上样式眼镜没法看清自己的样子,只能模糊看到,不能精细的对比,最好就是来个正面角度的自拍,然后带上眼镜查看。同时这样非常方便不同店铺留档查看

  2. 朋友要选对
    带个审美要靠得住的朋友,最好是女生,主要是因为女生的一般都比较在线,同时在一个异性的角度看会好很多。

  3. 多选择
    去不同的店多尝试,如果没有找到非常合适的,千万不能将就,眼镜算是一个大头商品,而且换的周期非常长,基本决定了你一年的样子

  4. 价格选择
    去货源地,也就是越秀区,可以找到比较便宜的眼镜,外面几千的镜片和镜架可以做到一千多。我这个钛合金镜架加上最薄的明xxx镜片,外面不上千下不来。

3. swift & kotlin 的 Optional

swift

swift 中的 Optional 定义是这样的

let str : String? = nil

拆开就是这样拆开

print(str!)

同时语言级别提供几个语法糖,比如可以这样

if let myStr = str {
    // 这里就不用解开了,相当于 let 给你解开了
    print(myStr.count)
}

实际上的实现呢是通过系统官方的一个 Optional 类来实现的,加上 ? 号只是方便定义而已,比如一开始的代码也可以这样写

let str : Optional<String> = "112"

有没有发现这个和 Java 的 Optional 巨相识

后面的操作其实也就是隐式调用这个类的方法而已,不展开了,具体自己看源码。

kotlin

回到 kotlin 这里,kotlin 其实也有类似的定义,也不能说类似,几乎差不多,但是更强大

定义:

val str: String? = "11"
if (str != null){
    // 注意这里是不需要像swift那么麻烦的,需要赋值,这里kt会自动推断,不需要自己拆包
    print(str.lenght)
}

拆包:

// 嗯,kt 的拆包是两个叹号,比 swift 多一个
println(str!!.length)

高级组合拳:
kotlin 可以使用各种作用域函数进行快速的操作,这点比 swift 要强很多

根据 kotlin 的源码实现,其实 swift 其实也是可以实现这样的方法的,但是官方就是没有,我觉得很诡异

// 通过这个方式,就能直接把一个可选的值变成非空的it,然后进行操作,这边要比 swfit 强
str?.let{ println(it) }

而且这样的快速操作方法,kotlin 有五个,分别是 let,run,with,applyalso

takeIftakeUnless 不属于这个类别

typescript作为前端的希望,不好意思,它没有这个东西😀

继续阅读“3. swift & kotlin 的 Optional”

本地搭建代理代理 v2ray 协议猜想

用途

因为每个人配置v2ray 其实比较麻烦,如果每个人直接使用 proxy-switchyomega 这个插件就会简单很多。目标是实现所有人简单的上网。

部署条件

  1. 需要有公网IP
  2. 内网需要有一台机器跑 v2ray 和 nginx

拓扑图

描述

  1. 用户通过 proxy-switchyomega 设置 https 代理
  2. 本地由 caddy 或者 nginx接受到代理,直接代理到本地的 v2ray 上的 http 协议

一定是要 https 代理,这样才能保护数据和账号密码
本地代理可以增加路径认证,因为https是抓不到路径的,所以路径上加账号密码即可

Gitlab Ci 的 CI_DEBUG_TRACE

这个东西的作用是在 GitlabCi 的日志输出界面输出更多用于方便调试的日志。

官方建议是写在 .gitlab.yml 上, 如下

variable:
    CI_DEBUG_TRACE: true

这样就会导致一个问题,每次当你想要调试的时候,你都要提交一个代码把这个东西打开,这样有点蛋疼。
后面我发现https://gitlab.com/{namespace}/{project}/-/settings/ci_cd 这个地方的也是可以设置Variable的。实验了以下,这个地方也是有效的,只要在这里

填上这个 CI_DEBUG_TRACE就能直接显示所有调试内容了,这样做就不需要每次都提交代码才能显示调试的内容。

这货有个小缺点,就是所有的 ci/cd 都会生效

使用 Docker Swarm 搭建 WordPress

起因

我曾经把 wordpress 搭建在 Vultr 上,但是因为众所周知的原因,这个地方访问越来越慢。再后来我选择了新浪云,新浪云的确够便宜,也很不错,但是要备案,还有评论功能估计要阉割,想想还是算了,找个香港的主机搭建 wordpress 即可。

购买主机

我这里选择的是阿里云的轻量应用服务器,这个主机的好处就是便宜,够用。
比如我选择的香港的主机,一个月只需要 24 块钱,一核心一G内存,网速为 30Mbps,磁盘空间 25GB,月流量 1TB。

配置如下图

初始化 docker 环境

虽然上面有一件安装wordpress的功能,但是我不推荐,因为配置都太老了

最终我选择的是 ubuntu18.04 系统,直接用下面的命令即可完成安装 docker 并且初始化 docker swarm

curl -o- -L https://gist.githubusercontent.com/hangox/e679464f35dc2a78920e6249a21d7958/raw/c5541e38979dca1e3e1e9704ad171ed2f0556fa1/ubunut-install-docker.sh | bash

继续阅读“使用 Docker Swarm 搭建 WordPress”