-
使用相机自拍而而不是使用镜子
大致挑选的时候可以使用镜子,当要实际对比的时候使用相机自拍对比。
由于我近视程度比较深,带上样式眼镜没法看清自己的样子,只能模糊看到,不能精细的对比,最好就是来个正面角度的自拍,然后带上眼镜查看。同时这样非常方便不同店铺留档查看 -
朋友要选对
带个审美要靠得住的朋友,最好是女生,主要是因为女生的一般都比较在线,同时在一个异性的角度看会好很多。 -
多选择
去不同的店多尝试,如果没有找到非常合适的,千万不能将就,眼镜算是一个大头商品,而且换的周期非常长,基本决定了你一年的样子 -
价格选择
去货源地,也就是越秀区,可以找到比较便宜的眼镜,外面几千的镜片和镜架可以做到一千多。我这个钛合金镜架加上最薄的明xxx镜片,外面不上千下不来。
分类:分享
Docker 网络调试工具
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
,apply
和 also
。
takeIf
和takeUnless
不属于这个类别
typescript
作为前端的希望,不好意思,它没有这个东西😀
禁止 macOS 的更新提示
终端中敲入
sudo softwareupdate --ignore "macOS Catalina"
如果需要开启则通过这个
sudo softwareupdate --reset-ignored
本地搭建代理代理 v2ray 协议猜想
用途
因为每个人配置v2ray 其实比较麻烦,如果每个人直接使用 proxy-switchyomega
这个插件就会简单很多。目标是实现所有人简单的上网。
部署条件
- 需要有公网IP
- 内网需要有一台机器跑 v2ray 和 nginx
拓扑图
描述
- 用户通过
proxy-switchyomega
设置https
代理 - 本地由
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
都会生效
Groovy 输出命令信息到控制台
如果直接用以下这个
pngquantCmd.consumeProcessOutput(System.out, System.err)
会创建一个线程执行命令,命令行会跳过。
如果使用下面这个
pngquantCmd.waitForProcessOutput(System.out, System.err)
就会等到执行完成执行下一句,平常应该使用下面这个
mac 中快速使用 Android Studio 打开某个目录
使用 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