Skip to content

【问答】五年职业规划

2017年3月1日

请问八哥五年内的职业规划是什么?(来自小密圈)

这个问题让我犹豫了好久好久啊。因为5年确实很难预料会发生什么。先回顾一下过去的几年职业路径吧。

工作前两年基本在学习,怒补基本功,以及作为一个工程师,在职场上的职责是什么,怎么样去参与项目做事情。

接下来几年有幸开始慢慢主导一些项目的开发工作,慢慢学会了如何以产品思维来思考技术工作,明白技术为产品服务。这期间也有去充当一半产品经理的角色,去参与需求的规划,去关注用户的反馈,去解答用户的疑问。当然期间也在一直在补充前端技术并开始接触新技术和开源社区,对前端的知识体系有了更深刻的认知。

如果说工作到现在学到了什么核心竞争力的话,可能是两个方面。一方面是清楚地知道前端的能力、职责和限制,有什么需求能清楚知道能不能做,以及如何做,代价如何。另一方面则是积累了一些产品研发全流程的经验,知道研发过程各个角色的立场和思维模式,尤其是产品思维。

ES2015 WeakMap的学习和使用

2017年2月27日

ES2015(ES6)中新增了几种数据类型,包括Map WeakMap Set WeakSet等。其中Map可以与我们熟悉的对象Object进行对照,他们的功能都是提供一个键值对集合,主要的区别在于Object的key只能是字符串,而Map的key可以是任意类型。关于Map的大致用法可以参考MDN,我在前一篇文章《也谈JavaScript数组去重》中也有提及。

今天要讨论的主角是WeakMap。

按照MDN上的说明

WeakMap 对象是键/值对的集合,且其中的键是弱引用的。其键只能是对象,而值则可以是任意的。

从这段描述来看,我们可以大致推断出,WeakMap与Map的主要区别在于两点:

  1. WeakMap对key的引用是弱引用
  2. WeakMap的key只能是对象

这两点意味着什么呢?反正我第一眼看到的时候不是拉格良日懵就是三元二次懵的状态。于是围绕WeakMap去查阅了一些资料,渐渐地有了一些更深入的认识,记录成本文。

To A Dark Futuer

2017年2月24日

开年来真的有点忙,好不容易写起来的公众号又好久没拔草了。

最近忙的其中一件事是写一个slides,也就是传说中的PPT。(明明用的是keynote,你才PPT,你全家都PPT!)写的是web前端的一些普及性的介绍。

在写的过程中,发现越写越悲观,写到最后竟然隐隐觉得web要完。当然,这是一件政治极其不正确的事情,所以也不敢到处乱发,只能当成呓语在公众号写一写,给为数不多的朋友诉一诉这其中的一些想法。

标准的危机

曾经有几年,大家是非常热衷于web标准的。但是如果问一问现在来面试的朋友,估计应该没有多少人还在意web标准这件事情。大家会关注 Angular / React / Vue ,会关注 AR / VR ,但是真的没有人关注web标准。

那我们关注一下可好?

唉,算了。反正大概的感觉就是真正需要成为标准的东西一直拖拖拉拉,比如像 web components 至今没有定稿,导致至今没有一个像样的组件方案。最后靠框架来填补这块空白。而像 web bluetooth / web usb / web vr 这类的东西倒是层出不穷。

除了标准本身外,厂商的跟进也是个大问题。一方面厂商对标准越来越不上心,爱理不理,另一方面,又为了各自的利益,先做非标准实现,再回头去影响标准。

总而言之,标准现在就是一锅粥。

新年好!

2017年2月3日

眼睛一闭一睁,一个春节过去了哈?各位吃好玩好睡好了吗?听说今天很多人开工啦,于是我终于知道了原来我初八上班是很晚的,感谢公司,感谢郭嘉,感谢MTV。

新年新气象,希望大家抓紧时间吹吹牛,然后用剩下的一年,哦不对,是90%年,去实现自己吹过的牛。

不过新年新气象倒并不是促使我想发点东西的原因,想发文章最主要的原因还是因为昨天晚上到今天又被Docker折腾到半死。

事情是这样:手上有一个小站,用Docker部署在阿里云上,操作系统选用的是无比拉风的CoreOS,就是传说中那个用Docker构建,内置Docker的系统,这个系统还有一个很NB的功能,就是会自己升级……自动升级……自动……升级。

前天晚上收到告警,网站down了。不过彼时正处在调整堵车9小时后万念俱灰的情绪中,所以没有管它。昨天回深后到晚上才又想起来这事,奇怪的是所有的服务都在跑,但是容器之前的网络都不通了。于是找资料,升级docker composer,升级composer的配置文件版本,折腾Docker新的网络模型……

【问答】什么阶段考虑进入创业公司

2017年2月3日

什么阶段考虑进入创业公司?

其实我并没有认真的思考过这个问题。职业发展是一个涉及到很多方面的问题,包括职业方向上的规划、薪资水平、工作环境、团队氛围等很多方面。

因为标的公司是创业公司,一般来说,从薪资、工作环境上不会有明显优势,因此个人觉得主要考虑点在于个人成长和团队氛围上。

【问答】小程序上线后市场反应如何

2017年1月19日

来自知乎问题小程序上线后市场反应如何

尘归尘,土归土。正在回归正常。

小程序一直在强调自己线下场景的定位,奈何开发者、媒体总是不信邪,非要赌小程序会有流量红利,会给自己带来线上流量。甚至在微信明确说微信中没有入口,没有应用商店之后,仍然有一大波人围着不愿散去。

现在打脸了吧。线上流量红利真的一点没给。于是这波围观的人一哄而散,甚至还会留下一堆唱衰的评价,“你看,我就说这玩意没鸟用吧”,殊不知,正是自己的期望过高导致现在的巨大落差。

回归到小程序自己的定位来说,其实非常明确,就是线下场景。具体的微信公开课Pro上已经详细阐述过,这里就不复制了,有兴趣的自己找。

【问答】为什么小程序自己做了一套开发体系

2017年1月13日

来自知乎问题微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道?

引子

假设我们把问题稍微改一下哈:

iOS应用为什么不用HTML5、CSS,自己搞了个OC / swift / autolayout / storyboard,很多框架用不了,好处一点不知道,以前项目根本没法移植,而且我们习惯的jquery、auicss、图标等完全用不了,也没见OC / swift / autolayout / storyboard有什么好处,完全理解不了。。。

嗯。我只是改一下题目,不回答。可自行思考。

用web做小程序的可能性和限制

为什么没有人问上面改过的问题,而小程序就有人问呢?只是因为小程序和web长得很像,所以就觉得要用web来做吗?那长得像的话是不是就能直接用web做呢?

答案是,大部分是可以的。比如文本、图片、输入框等等,都可以。

但是,也有一部分小程序的功能是web完全不具备的,例如扫码、获取设备信息、获取罗盘信息、等等。

此外,还有一小部分是web做起来很困难的。比如上面有人提到的地图、fixed的文本输入、视频相关、sticky定位等。

除了能力上的限制以外,还有相当一部分是来自于性能上的限制,也即虽然很多东西用web确实可以做,但是性能是很差的。

也谈JavaScript数组去重

2017年1月5日

JavaScript的数组去重是一个老生常谈的话题了。随便搜一搜就能找到非常多不同版本的解法。

昨天在微博上看到一篇文章,也写数组去重,主要推崇的方法是将利用数组元素当作对象key来去重。我在微博转发了“用对象key去重不是个好办法…”然后作者问什么才是推荐的方法。

细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少,于是诞生此文。

定义重复(相等)

要去重,首先得定义,什么叫作“重复”,即具体到代码而言,两个数据在什么情况下可以算是相等的。这并不是一个很容易的问题。

对于原始值而言,我们很容易想到11是相等的,'1''1'也是相等的。那么,1'1'是相等的么?

如果这个问题还好说,只要回答“是”或者“不是”即可。那么下面这些情况就没那么容易了。

小程序接入OAuth

2016年12月29日

人性的一道裂缝

2016年11月8日

cover

如何使用web录制视频

2016年9月25日

cover

Node.js中低成本实现错误告警

2016年1月27日

相比其他语言(特指PHP)而言,Node.js应用更需要关注出错信息,因为一旦处理不慎,就会导致应用crash。

一种偷懒的方法是使用PM2之类的进程管理软件来启动Node.js进程,从而达到出错crash后自动重新启动应用的目的。

当然更好的办法则是手工捕获错误,然后进行适当的处理,防止应用产生未被接住的错误导致crash。

在捕获到Node.js产生的错误后,下一步自然是记录到错误日志中,以便日后可以进行分析,并针对性地排查修改。本文要说的,即是对错误日志的处理方式之一——告警。

告警是运维工作中非常重要的一个环节,它能让开发者(维护者)及时获知应用出错状态和详情,及早介入处理,将线上故障的影响降低到最低。而要实现告警功能,则需要从两方面入手,一方面是对错误信息进行集中处理(分类、分级、合并、限流等),另一方面需要将这些错误信息及时推送出去。