William Chan
William Chan
目标是实现 shadowsocks 负载均衡 晚些在写 结合阿里云 DDNS 已稳定运行
由于众所周知的原因,程序员一般需要自己的科学上网方式,除大厂的基础建设外,我们普通程序员有时候也需要会使用自己的科学上网方式。 今天就来介绍一下使用 nginx 来搭建 shadowsocks 集群。 当然我们也可以使用 HAProxy 来搭建,目前最新消息 HAProxy2 已经支持 Lua + UDP 啦,后面我会单独写一篇 HAProxy 的配置方式。 ## 机场采购 首选既然是集群,必须要有一个好的机场,自费的话成本太高,那么建议采购一些还不错的机场。 目前我个人使用的还不错 可以发给大家做参考 https://wmsxwd888.men/auth/register?code=QpBC ## 配置 nginx 编译时一定要加入`--with-stream`参数来确保支持 stream 转发。 配置可以参考下方的配置方式。...
很久没写lua了,最近在学习王争的`设计模式之美`,所以还是补一下功课。 非面向对象语言利用语言特性实现面向对象的部分特性。 ```lua local _class = {} function class(super) local class_type = {} class_type.ctor = false class_type.super = super class_type.new = function(...) local obj = {} do local create create...
由于众所周知的原因,国内有时候必须科学上网才可以友好的进行日常劳作。 http 和 https 协议在 terminal 中的使用方式 配合 Shadowsocks 等软件开放 http 转发 ``` export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087; ``` 针对 github 如果使用 ssh 协议 可以在 ~/.ssh/config 中加入 ``` Host github.com HostName github.com...
最近在家里越发懒得打开笔记本了,但是没有`Mac`有时候工作不方便,于是就安装了黑苹果。 ### 懒人版安装过程简述 黑苹果安装过程就不详细阐述了,可以关注远景论坛或者其他黑苹果社区,安装其实也挺简单的,主要的步骤就是先空出一个盘符利用一些磁盘工具转成 Apple HFS 格式,下载最新的 DMG 镜像写入,使用Clover EFI bootloaderI 引导启动,针对不同的配置详调,这里不再详细叙述,最终进入系统后配置对应的驱动和参数,现在大部分论坛都有大礼包,一般情况下 Intel 大佬加上 Nvidia 基本都可以无痛驱动,当然从10.14开始必须是AMD卡才行了。 ### 解决普通鼠标滚轮不平滑的问题 一般非苹果自家鼠标,都有滚轮不平滑的问题,苹果的 Magic Mouse 又存在公认的手感问题,当然其实我个人还是比较习惯的,无奈 PC 没有蓝牙,也不想为了这个去买一个外置的,那么就想办法解决,在 GitHub 搜索一圈还是有帮助的, GitHub 地址:https://github.com/Caldis/Mos 尝试用了一下。基本上可以上解决了80%的问题,虽然和自家的 Magic...
在一个月前遇到了一个棘手的问题,起因大概是这样的,由于我自己希望了解全部的生态,所以我一直都是使用自己的脚手架,而不是Vue或者React官方的提供的脚手架,虽然诸如umi,vue-cli,create-react-app他们做的都很优秀,但是我还是想从中知道每一个plugin,每一个loader都做了什么事情。 在最近的一次升级中,我使用了最新的babel7,并且使用了core-js@3版本,但在过程中遇到了一些问题。 ## 问题 先来看一下我遇到的问题,我使用了`ant-design-vue`这个UI库,他依赖了`[email protected]`,从编译后的代码可以看到存在着诸如许多`import _extends from 'babel-runtime/helpers/extends';`这样的代码。 然后我们再来看一下`[email protected]`这个库,他依赖了`core-js@2`的版本,主要是提供运行时的新 API 转换,例如 babel 不能转换的一些新的 API,他会提供一些 polyfill 级别的解决方案,当然与`babel-polyfill`是有本质差异的,`babel-polyfill`更多是偏向业务层面的东西,他所支持的语法更多,毕竟`babel-runtime`只支持到 static 语法,并不能对`[1, 2, 3].includes(1)`进行处理,这里不展开,后面会有篇幅重点介绍。 那么现在依赖关系就是我依赖了`ant-design-vue`和`core-js@3`,但是`ant-design-vue`依赖了`core-js@2`,看了 core-js 2和3版本,发现差异还是非常大的,连目录结构都不同了,我仔细查看了依赖结构,实际上其实是不应该有问题的,我把依赖结构写在下面,为了清晰表达省略一些内容。 ``` test ├─┬ [email protected] │ ├── [email protected]...
## 前言 面向对象程序设计(Object Oriented Programming),是目前比较流行的程序设计方法,当然与之对应的还有面向过程。 JavaScript可以通过原型继承的方式来实现,许多人还没有认识到JavaScript支持继承。 但当开始写面向对象的代码时,它能给你很强大的能量,也可以使用它写出高可复用,可封装的代码。 但较于面向过程来说,他可能需要一些更深层次的抽象理解,这也是许多新手无法彻底掌握的原因。 当然其实JavaScript还有另外一种概念叫面向原型,这个和本文说的并不冲突。 ## 一、什么是面向对象编程? 在了解什么是面向对象编程之前,我们来看看语言的分类。 总体可以分为三类:面向机器、面向过程还有面向对象。 面向对象的语言主要有C++、Java、PHP等。 ### 1.面向过程与面向对象 * 面向过程:面向过程专注于如何去解决一个问题的`过程步骤`。编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念。 * 面向对象:专注于由`哪一个对象`来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。 * 对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。 ### 2.面向对象的三大特征 * 面向对象的三大特征是`继承、封装、多态`。JavaScript可以模拟实现继承和封装,但是`无法很好的模拟实现多态`,所以我们说JavaScript是一门基于对象的语言,而非是面向对象的语言。 * 当然在TypeScript可以实现多态,后面会有实例讲到。 ### 3.类和对象...
为方便第一时间获取家里的IP地址,故使用此方式,不太喜欢 3322 之类的 DDNS 服务商,所以打算使用阿里云自建一个。 尝试简单搜索,最终找到可用的项目 https://github.com/chenhw2/luci-app-aliddns ## 配置 安装后进行配置,需要阿里云的 AccessKey 和 Access Key Secret 实际上只是调用阿里云的 API 对域名动态设置解析记录而已 项目依赖 curl 和 openssl 对 Secret 进行加密以及发送请求 根据阿里云的提示,现在推荐使用 RAW 访问控制,给予一个最小权限。 申请一个新的用户,给予 API...
随手写的,从脚手架创建到写完不到两个小时,用了`TypeScript`,后期需要进行整理,现在没时间,路由和状态管理也没用上,主要是用上了 `Motion Design`,不得不佩服蚂蚁金服的设计,很厉害。
最近又有一些新的感悟,对于程序的`框架模式`以及`拼装码农`的一些见解,看到了许多码农习以为常的拼装代码,想对这种错误进行一个简单的矫正,从最简单的MVC模式开始说起。 ## 拼装代码 新手写代码往往会存在一个误区,使用框架只使用它最基础的`UrlRule`部分,为什么这么说呢? 因为现在无论何种框架,前后端也好,它教你的写一个`Hello World`一定是告诉你如何在屏幕上输出一段你想要的东西,这一段东西在哪里修改,为了展现框架的优雅,往往只有一行代码或者少许代码来演示这个Demo,那么新手使用者也会跟随者一起进入一个误区,觉得这个框架很完美,实现非常优雅,然后就依样画葫芦的进行开发,并没有去了解框架的架构模式,并且也没有心思去完整阅读框架的文档,更不用说源代码了。 这样写出来的代码,往往只是拼装而已,使用最基础的函数,如果有重复的逻辑就封装函数,互相调用,然后达到最终的目的,输出想要的结果, 再高一层次的,可能使用了以前自己完全没有接触过的领域,例如`Message Queue`、`WebSocket`,就认为这是使用了框架的高级功能,使用它会显得非常优雅。 或者在某些可以进行Hook的部分注册一段代码,称之为`middleware`。 却不知这只是皮毛而已,因为这只是停留在最浅的那一层,这一层大部分人都捅不破,一直在摸爬滚打。 当你完整的阅读过`apue`,`unp`系列丛书的时候,你可能会有更广阔的思维。 切记不要局限于一个框架如何使用,一门语言语法或者一个圈子(泛指web前端和后端),这是新手编程时最大的忌讳。 ## MVC框架模式 注意:MVC仅仅是一种框架模式,它并不是一种设计模式,如果非要说它是一种设计模式,那么也只能说它是一种复合型的设计模式,因为他可能包含了许多的经典设计模式。 这个问题其实本身很简单,主要是同一个词用在不同语境下,所以造成了表达不清。MVC 三者中,Model 是核心。 MVC已经流行了非常之久,大部分框架也是以此设计的,不过因为近几年前端的巨变,MVC中的`View`已经被分摊到了前端,并且前端也衍生出了许多优秀的框架。 ### View 视图 自从前端ajax开始流行后angularjs、react、vue等框架流行后开始,渐渐的Web应用的View层被慢慢的剥离出去,这一层其实很好理解,`这是你真正看到的内容,而不是你想象当中的 Model`。 ### Controller 控制器 顾名思义,它掌握着整个应用的流程控制,它负责从模型中获取数据,转换格式,做验证,提交数据等等,它所做的事情,其实就是起到了一个向导员的作用,只负责指路,引路而已。 ###...