William Chan
William Chan
在工作中,经常会遇到很多使用git新手提交的commit,把git当成一个历史提交工具或者干脆当成编辑器的save功能,这是非常有问题的,我们可以来对比下下面两个记录。 ``` * fix typo * update eslint config * add chinese note in issue template * improve add missing html and svg tag * Add types for vue-server-renderer (fix...
OpenWrt/LEDE是目前大部分联发科、博通、高通解决方案的路由器固件,可玩性较高,基于Linux,具体内容请各位自行查阅资料,这里主要记录个人的一些配置过程。 多线多拨主要是用于多运营商,目前由于我个人住所有移动和电信两条线路,电信的带宽较小,希望只用于游戏,移动的带宽可以拿来看视频或其他娱乐,希望通过MWAN3负载均衡来达到预期的效果。 接下来直接上配置过程,由于个人很少使用Luci,如果希望使用luci的同学也可以根据本文反推。 ## 安装mwan3 ```shell opkg update opkg install mwan3 # 使用luci的同学可以安装luci界面 opkg install luci-app-mwan3 ``` ## Switch配置 交换机配置这里,主要是将一个LAN口作为WAN使用,这样使路由器可以拥有两个WAN口,具体需要看各种解决方案提供的交换机方案,以下是NETGEAR R7800的配置,大部分联发科和此例有非常大的区别,建议新手通过luci观察后再进行配置。 配置文件路径`/etc/config/network` ``` config switch option name 'switch0' option reset...
前些时间不是入手了NETGEAR R7800么,在这之前我一直用的小米的mini,虽然说够用,MTK7620的吞吐量和配置已经远远跟不上我的需求了,所以还是换了。 ## 刷入LEDE 刷机方法非常简单只需要用TFTP协议上传文件就可以。 * 链接路由器LAN口,设置本机IP为192.168.1.10。 * 路由断电,按住reset不要松开,然后上电。 * 电源灯显示橘色,等待一会,到随即电源灯白色闪烁,即可松开reset。 * 打开terminal,使用`curl -T xxx.img tftp://192.168.1.1`即可上传文件自动开始刷机。 ## 安装必要的工具 LEDE稳定版都会自带luci,但是我不太常用图形界面面,所以直接ssh到路由器就可以开始安装工具了,默认密码是`admin`。 ### 安装必要组件和USB扩展 我使用硬盘是ext4文件系统,是已经格式化好的,如果没有格式化的硬盘,还需要格式化操作,注意映射的位置,先看一眼`ls /dev`。 ```shell opkg update opkg install libext2fs kmod-fs-ext4...
macrotasks -------- | func | Browser | Node | |------|---------|------| | I/O | √ | √ | | setTimeout | √ | √ | | setInterval | √ | √...
~~~ 内容不会提及任何新手应该如何入门的细节,请读者不要介意,这里主要是我的一些想法。 ~~~ 回顾2017年一整年,学习了非常多的知识,列一下的话应该主要是下面这些。 webpack webassembly nodejs vue react php7 yii2 码农,只要能顺利度过初期,就能快速成长,那些大神根本不是遥不可及,谁都是从一点点的积累过来的。 编程这一行业,在写业务逻辑上,在初期基本不可能遇到什么大的挑战,等业务真正起来了,那么整个逻辑会被拆的很细很细,不同的人会负责不同的业务节点,这时候压力已经不在于如何写业务逻辑,而是如何把负责的这一部分做到最优了。 举个例子就是,一家C/D轮公司看似没什么用的一个后台界面,只是b2b使用,一天登录不了几次,结果却有一个大佬带十几个人维护开发?因为公司赚钱了,我们可以降低每个人的工作负荷,可以多招实习生,往往也是因为要促成三个臭皮匠顶个诸葛亮的局面,毕竟厉害的人在这个行业里真的太少了,也要给新人机会,培养适合来接管大局的新人。 我学过这么多语言,其实对于编程语言来说,我更感兴趣的是他们的背后设计,可能初学者一直在纠结这门语言如何使用,语法是什么样的,这根本不是我关心的问题,不同的语言有不同的语法,这并不是一件奇怪的事情,但是他们具有非常多的共同性,所以上手的速度应该都会在一个月内,可能入行更久的只需要一星期,就可以上手写业务了。 所有的语言或者框架,官方的Doc那么详细,却有那么多新手去依赖百度搜索,一是因为这么多年,他们养成了一种百度搜索是最快的知识来源的习惯,二是因为,他们的英语水平和源码阅读能力真的不够,这两点造成的一个最直接结果是,安于现状,不再继续学习,因为我所有的业务逻辑我都可以完成呀。 英语在编程中起到的作用也实在太重要了,在有英语的基础上,学习新的语言或者框架,基本是事半功倍,最近刚学完php的yii2,根本不需要看文档,想知道怎么用直接追源码就行了,PHP是一门高级语言,他不像C/C++追一个类或者函数可能涉及各种奇怪的宏定义,硬件定义,系统定义,从源码中获取文档的速度绝对比看官方文档更快。并且官方文档也不是实时更新,也不会讲解高级的用法,作者xue qiang的在注解中写的英语水平非常不错,编码能力也实在让我着实佩服,架构就是这样,每一个函数都应该标注它的作用以及标准的doc解释,但往往大部分新手,写了那么久的yii,却还在问,这个应该怎么用,那个应该怎么用,而不考虑一个应用本身的架构应该怎么做,如何去扩展,能让我写更少的代码,用起来更顺畅,真是令人大跌眼镜。 新手的学习真的很容易进入误区,业务我能做,框架我会用,代码我会写,我已经入行了?北上广深2w+的工资证明我已经有足够的实力了?NO!这根本没有入行,或者说跟真正的程序员根本不是同一类人,充其量这只是一个重复劳动力,以后会被机器学习所取代的重复劳动力,看看阿里的鲁班已经可以用AI来做广告图了,一点都不担心自己被人工智能取代吗? 个人编码已经十余年,并且个人的兴趣爱好就在于此,不同于其他工程师,见过形形色色的人,也见过无数的代码,深知行业的现状以及一些对应方式,待人也非常诚恳,我也希望让他们成为我这样的人,在一天8小时的工作中,用1小时去写出高效的代码,7小时在娱乐,在思考。 编程其实只是把想说的话翻译给机器听而已,为什么会有这么多BUG? 那还不是根本没想清楚就开始写,理解业务逻辑,理解语言本身,真的很困难吗? 应该庆幸有我这样的 leader 什么时候我不再有这样的热情来待人,只做对自己有益的事的时候,可能真的是一个损失。
由于最近需要php解析lua,所以想到了laruence的php-lua扩展。 Pecl: http://pecl.php.net/package/lua **请注意,从 PHP 7 开始,需要使用2.0.0以上的版本,并且每个版本有最低的Lua版本限制,不可混用,最新版本 2.0.4 暂不支持 PHP 7.2。** 安装和编译 Lua 比较简单,但是注意要修改编译时的参数。 ```shell http://www.lua.org/ftp/lua-5.3.4.tar.gz tar zxvf lua-5.3.4.tar.gz cd lua-5.3.4/src ``` 修改Makefile,找到CFLAGS,添加-fPIC选项。 ``` CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) -fPIC...
话说这问题其实早在2016年末就已经遇到过了,没想到时隔接近一年,这次又重回微信开发,遇到了更坑爹的情况。 下文所有的情况都是基于`SPA html5 history`所讨论,其他情况不列入在内,比如终结方案就是不用 history 路由。 首先吐槽一下微信文档,我认为微信团队根本没把心思花在这个上面,包括小程序也是一样,不管API还是文档,都写的很烂。 ## 配置签名步骤 说实话配置签名还算是简单,不过官方给的demo质量也也太差了,相信大部分人都是复制粘贴的,下面贴一个质量稍微高一点的php签名算法。 客户端只需要把`window.location.href`发来即可。 ```php $sParams = [ 'noncestr' => uniqid('wjs_'), 'jsapi_ticket' => $jsapi_ticket, 'timestamp' => time(), 'url' => $url, ]; if (($pos...
## Auout Promise Promise 作为 ECMAScript 6 的异步规范,为我们解决了很多异步回调问题,Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来。需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是页面异步操作指数般增长,如果不能恰当的控制代码逻辑,我们就会陷入无穷的回调地狱中。 由于 JavaScript 的单线程性质,我们必须等待上一个事件执行完成才能处理下一步,下面是一个很经典的例子。 ```javascript $(function() { // 获取模板 $.get(url, function(tpl) { // 获取数据 $.get(url2, function(data) { // 构建 DOMString...
为了方便自己 抽空做了2个比较简单的脚手架 # [vue-template-ssr](https://github.com/luckyyyyy/vue-templates-ssr) SSR不用NUXT的原因是我还需要学习NUXT那一套,目前没这个必要,自己做了一个。 # [vue-mobile-boilerplate](https://github.com/luckyyyyy/vue-example) > This repo is a boilerplate for vue-mobile project. You could use it as a base to build your own web app. ##...