结构化思维

结构化思维是什么

结构化思维有的时候又可以称为金字塔原理,在一些国际顶级咨询公司他们多年积累的一套方法论称为金字塔原理,在一些公职人员考试面试中称为结构化思维,其实他们想表达的思维模式总得来说都是同一个概念,主要是为了培养人形成一定的思维思考的模式,通过对问题的正确界定,在对相关因素合理分类整理,对重点进行分析,形成一套思考问题的树状结构,由于像金字塔,所以称为金字塔原理,这样比喻也更形象,更容易让人理解。

结构化思维的作用

结构化思维本身其实就是逻辑思维,它是将零散的思维,知识,灵感,想法,信息,数据等通过一种思维的框架收拢起来,让复杂的事情简化,并获得一种分析的方法,甚至是量化的工具,使我们能够透过事物表层看到本质。要形成良好的结构化思维还需要长期的训练,不断的训练就可以提高我们系统分析问题以及解决问题的能力,使我们的思维及表达更加缜密,有条理。结构化思维适用于各个地方,不论是技术难题,还是开会演讲,以及汇报工作,又或是总结规划,都有用武之地,是人们更深层的思维逻辑的演化,因此对于工作中的人们是比较有帮助的。下面来看两个简单的的例子,形象的说明结构化思维能带给我们的帮助。

举个例子

这样的例子,在日常生活中也经常发生..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
小明今天周末在家待着,觉着天气炎热想出门买点饮料,小红是小明的妻子,下面于是有了这样的对话:

> 小明:我这回要出去买点喝的,还需要顺便带点啥嘛?
> 小红:哦,对了,家里牛奶和鸡蛋没了,你待会出去别忘了带回来。

小明于是去换衣服,期间~

> 小红: 我好久没吃葡萄了哦,对了待会午饭炒菜需要点大葱,家里的貌似也没有了。

小明换好了衣服,正在出门穿鞋,小红又说话了~

> 小红:孩子想吃苹果了,一会别忘了再买点苹果,对了还有酸奶,孩子也要喝!

小明刚出门,发现手机忘带了,没带手机怎么支付呀,于是重新返回家拿手机,拿了手机刚要出门,小红的声音再次响起~

> 小红:一会别忘了再买点西红柿!中午饭给你们做一个西红柿炒鸡蛋!
> 小明:你咋这么啰嗦呢!!为啥之前不一次给我说完呢!
> 小红:对了再买点咸鸭蛋哈~
> 小明:好!好!好!

小明气冲冲的出了家门..

从上面的对话中来看,小红一共让小明带的东西,按照对话顺序来看有这些(共8个):

牛奶🐂,鸡蛋🐔,葡萄🍇,大葱,苹果🍎,酸奶,西红柿🍅,咸鸭蛋

根据一些研究数据表明,人最多同时可以记住7个事情,超出7个一般都会忘记一些,当只有一个东西的话,是最不容易忘记的,当数量为三个的时候是比较推荐的(当然个别人可能记忆力超强也能同时记住更多的事情的除外),但只是上面这8个东西,去了超市,如果小明不用手机备忘记住的话,只是依靠头脑记的话,很有可能在逛超市的时候很把其中的某几个样忘记。

对了别忘了!除了上面这8个,他还要买他自己最想喝的饮料!

人类大脑在处理信息的时候,有两个规律:第一,不能一次太多,太多信息会让我们的大脑觉得负荷过大;第二,喜欢有规律的信息。

那么如果按照顺序来记忆这些东西比较容易遗忘,那么是否我们需要换一种思路,利用结构化的思维来看看,看怎么样构建金字塔:
购买商品金字塔

那么我们会很容易的发现,当你在头脑中构建出这样的金字塔结构后,小红交代需要买的东西,很容易的就记下来了,那么拆分下来的子项如何更好的记忆呢,可以找出一些逻辑关联方便记忆,例如:牛奶&酸奶、鸡蛋&咸鸭蛋,小红想吃葡萄,孩子想吃苹果,西红柿炒鸡蛋,炒菜需要葱花..等

通过上面这个🌰,可以得出我所想表达的观点:

人类的大脑更倾向于去理解和明白具有结构化的事物或者问题,不是我们故意构造出结构化的思维的方法论为了让人类去学习或者提高记忆。

工作中我们会遇到各种各样的问题,而在日常沟通中如果让你描述一个问题,没有很清晰的结构化的思路来表达你所想表达的问题的时候,经常会让对方造成不同意思的解读,假如还是通过通讯工具来沟通并非面对面聊天的话,甚至还会容易引发误会和冲突。

接下来那么我们下来找一个技术相关的例子,看如何进行结构化的拆分。

技术的例子

计算机网络里面HTTP相关知识比较重要的一章节,这部分也是知识点比较零散,东西较多的一块,那么我们看针对HTTP如何进行知识体系的结构化拆分:

Http结构化思维图

由于空间的有限,虽然不是标准的金字塔结构,但是也能基本勾勒出HTTP整个知识体系的结构,对于想深入学习HTTP相关知识的同学还是比较有帮助的,查缺补漏看看哪部分是你的知识体系中需要加强深入学习的。

结构化思维的训练

如果你只是知道结构化思维这样的名词是远远不够的,要将它变成自己的思维方式,能够做到不加思考地习惯性应用,还需要刻意的去练习。如果现在你已经形成了对结构化思维的认识,那么在未来的工作中就应该尽量按照这样思维方式来思考,如果能从现在开始努力坚持三个月的思考,那么结构化的思维能力肯定就会有所提升,如果能坚持半年,那么基本就已经变成你自己的习惯了。当然如果有同伴也一直能这样在练习,对你也会有一定的影响和帮助。那么在工作中遇到哪些问题的时候,都可以采用这样的思维方式来思考呢?

  • 写代码时

  • 跨团队沟通问题时

  • 写总结计划文档时

  • 汇报工作开会时

  • 技术分享时

  • 职级晋升答辩时

如果在这些时候你能坚持使用结构化思维去思考问题,那么通过一段时间坚持不断的训练,你将会对这些事情更加游刃有余。那么在结构化拆分的时候应该遵循什么原则呢?很久之前一个著名的咨询顾问提出的MECE的分析法则,作为金字塔原理的重要指导原则。什么是MECE分析法则呢?

MECE分析法则

MECE,英文是Mutually Exclusive Collectively Exhaustive的缩写,中文意思是“相互独立,完全穷尽”。 也就是对于一个需要解决的问题,能够做到不重叠、不遗漏的分类,而且能够有效把握问题的核心,并解决问题的方法。MECE即把一个项目分解为若干个更细的工作任务的方法,它主要有两条原则:

  • 一是独立性,强调了每项之间要独立,每项之间不要有交叉重叠

  • 二是完整性,说的是分解的过程中不要漏掉某项,要保证完整性

除了坚持这两条原则外,当遇到不是很好拆分的问题,可以尝试否定法和抽象法或者画鱼骨图的方式来进行推动拆分,例如:

1
2
3
4
5
6
7
8
9
# 否定法 #

问:老罗的锤子🔨手机📱卖的是什么呢?
答:老罗的🔨不仅是卖的手机📱,还卖的是老罗的“情怀”..

# 抽象法 #

问:那么锤子🔨手机📱有什么功能呢?
答:🔨📱除了正常智能手机📱都具备的功能以外,它自身还有很多特色功能,例如:Big Bang、One Step等新功能.

在使用MECE法则的时候应该还要注意一下几点:

  • 要做到全方位、多角度地考虑问题

  • 尽可能多的收集材料和事实依据

  • 利用已有的数据图表来分析问题

只要能在坚持这两条原则以及注意这几点的情况下,采用MECE分析法不断训练结构化的思维方式才能不断的提升这方面的思维能力。

写在最后

结构化思维(金字塔原理)是逻辑思维的方法论,是把复杂问题变得可以量化的工具,也是国际上的顶级的咨询公司一直推崇的方法,他们旨在帮助各种企业解决复杂的商业问题,给出建设性的建议。同样对工作中的人们也会有帮助,帮助他们更好的去演讲,汇报,在职场中得到提升。最后留一道题目给大家思考🤔:

北京市有多少只鸟?

据说是之前一个咨询公司曾经出过的题目,值得一提的是这道题目的结果并不是面试官最关心的,而他们更希望看到的是你的思维过程,可能思维过程远比最后得出的结果要重要。

完..

参加Velocity-2016感受和收获

Velocity会议是干什么的?

自2008年以来Velocity会议持续不断汇集了不同行业背景的人才,他们在Web性能、运维、开发运维方面做出了令人惊奇的工作,通过不断的分享,给其他的企业和开发者带来福音,刚开始的前几届都是在国外举办,Velocity能走进中国,离不开阿里巴巴做出的努力,阿里的同学第一次国外参加Velocity之后,收益良多,于是通过一些资金上的赞助和支持,把Velocity引入了中国,并且中国的大会也不断的有很多优秀的中国互联网公司的同学去当讲师,分享他们在工作中做出优秀的技术贡献和解决方案。

Velocity

参加Velocity-2016的感受

第一次参加Velocity,其实还是收获挺多的,两天不间断的分享,分享后的头脑风暴,不断的让我去思考自己在工作中对技术层面的认知,真切的让我们感受到这几年中国互联网公司的崛起,以BAT为代表的大公司不断的引进国外的先进技术,结合公司自己业务的实际情况,进行改造在创新,比如阿里巴巴的Weex,手机百度在RN上的实践等,基本上已经不再只是拿来主义,都会根据自己的业务使用当中遇到的问题进行优化再创新,尤其是阿里的Weex,双11天猫App从主会场到各个分会场3000+的活动,全部已经是拿Weex实现了,在开发原生App和H5&Webview内嵌之间寻找最优性能体验和开发效率的平衡点,其实对于这样运营活动是在合适不过的解决方案了。

2016Velocity大会大致有国人场和老外场两种,其实最后听下来还是国人的分享比较实在,相对分享的干货比较多,也能感觉到国内互联网公司很多的进步,反倒是一些老外的分享,以及一些国内的外企同学的分享,滥竽充数,到了提问环节不断被下面的同学进行质疑,问到打脸。😆

总体来说我听的基本都是前端领域的分享,从技术角度讲,但大致分为两大类:

  • 第一类是某种技术框架在实际业务中的运用结合着性能优化;
  • 第二类是服务质量图表数据上报的重新思考.

第一类就是我刚才提到的阿里Weex结合双11的性能优化,手百的RN性能优化,QQ空间H5Webview的性能优化,构建下一代移动网页应用(PWA),百度搜索MIP容器(搜索全链路性能体验优化)等,第二类是重新思考服务质量,性能魔方的应用性能数据可视化等。仔细想来,其实这两类事情是相辅相成互相结合的,只有第二种数据上报监控做好了,才能结合详细的数据图表做更针对的性能优化,一些具体的技术细节我就不再这里单独详细写了,后续可能会做个分享在大组内进行分享,如果哪位同学想看之后我分享的幻灯片,可以私聊我。

总结

总得来说Velocity2016还是挺不错的,两天听下来,干货挺多真的很累,比上班还累,一天听8~9个分享,一直都在集中精力听不断的去消化思考和反思,可能这样的过程就是一种进步吧😀

完…

关于微信小程序的思考

引言

好久不写文章了,手都有点生了😄,距离上一篇文章时隔一个月多了,原因有两个:一.八月份的确业务多,实在太忙;二.九月份又忙着职级答辩,毕竟答辩还是比博客重要的嘛,哈哈哈😁。9月底微信出了一个新的功能:微信小程序,引爆各大互联网媒体渠道,分析的文章一篇接一篇,大多数人都是觉得,哇塞这是颠覆性的东西呀,有了APP的功能而且用JS就能开发了,再加上微信的流量,简直是各种骗点击啊,周围的人各种在分享,唱衰的几乎没有,冷静能独立来思考的不多,推荐一个微信公众号:“独立思考”,里面那位同学写的关于小程序的思考, 还是比较客观公正的,在这个基础上,我自己也站在产品技术层面进行了深入的思考,公司其他部门,尤其是猫眼电影,大老板From腾讯,我们还是得到了不少关于小程序的信息,总体来说和我分析一些还是相互印证,下面就来讲讲我自己在微信小程序上的看法和认识😂,在这里献丑了…

对于微信的思考

下面我用总结的四句话来概括一下:

  • 我们和微信斗争多年
  • 常年在博弈中度日
  • 人们经常想从微信中收益

一切的最终解释权归微信…

自从微信用户量破了几亿之后,越来越多的人都想从微信这个渠道获取新的用户,新的流量,想尽一切办法和手段去牟利,而微信一直想保持自己“纯洁”的净土,这些年也是不断的和推广者之间进行博弈,举几个我自身遇到的🌰,之前在猫眼做分享电影红包,渠道就是通过微信来传播,刚上线,各种转发,没过多久,超过微信的分享转发的阈值,URL无法访问,后续微信还出过更绝的办法,你分享成功后,你自己可以看见,其他好友看不见,有一段时间滴滴专车券也被弄了,大客户该跪也得跪😂,最开始人们还以为是分组可见呢,呵呵呵🙄,微信这么任性,我也真是醉了..

于是:

  • 微信公众号刷阅读量封号❌
  • 分享数量过大❌
  • 诱导分享❌
  • 内容违法❌

    微信内嵌H5用户体验差推出了小程序

那么疑问就来了:

  • 我们照搬外卖APP的功能赶第一波红利,微信审核通不过怎么办?
  • 那么我们真的要把全部APP的功能搬上去吗?

如果想不清楚这些问题,不妨站在微信的产品设计思路去想想,微信的产品设计原则,大概可以从下面四点来概括:

  • 极简
  • 极致体验
  • 安全
  • 严格审核

微信功能很多,但是仍然很简单易用,并且体验好,很少出现安全隐患,内容审核严格。

目标:只有站在微信产品的角度去思考设计我们的产品,才能获得微信的青睐。

对于产品层面的思考

据传言说微信APP会在游戏的下方开一个入口,那于是我们可以参考当时游戏的情况,曾经🔥到不行的打✈️游戏,如今还有谁在玩,现在看一下游戏首页的游戏,经典的开心消消乐,并且以前是独立APP有群众基础的保卫萝卜,一句话概括可以说明:

“红利过后,片甲不留..”

那么于是反思我们的目标:

外卖的目标:为用户持续提供高品质且稳定的外卖配送服务。
外卖小程序的目标:我们需要通过不断的思考优化做出一个微信都能认可的精品。

反思出我们的目标之后,是否就应该想想,我们通过微信会带来一些用户,其中一部分是重叠用户,还有一部分待挖掘用户,那么这部分待挖掘的用户,如何在微信里面释放他们的潜力,让他们转化成我们忠实的用户,这也是值得思考的一个问题。微信的小程序可以算的上一个平台,一个独立于原生APP,独立于H5的一个平台,那么这样一个新平台和老平台之前从用户体验、获取新客成本、用户留存、开发速度这四个方面应该是怎么样的呢?看下下面的表格,这是我根据经验得出的大致判断:

手机APP 微信小程序 移动H5站
用户体验 最好 较差
新客成本 最高 最低
用户留存 最高 较低? 较差
开发速度 较慢

待定的技术层面

待完善…

几个前端H5定位组件的对比

HTML5 定位

HTML5的标准也出来很久了,定位已经不是什么新鲜的技术了。之所以写这个文章,主要是想将你直接调原生H5的方式和腾讯、高德定位组件进行一个对比,对比一下各自的优缺点,给广大使用者一个简单的参考,让你在在项目开发中更容易选择到合适自己的组件。😄

现状

如果想使用H5定位有三种可以选择:

  • 原生H5 API Geolocation
    原生的方式只要在支持的浏览器里面基本上能拿到经纬度,但是如果想拿到地理位置街道信息,就得配合自己公司提供的地理逆解析服务,我团也有这样的服务,其实就是个接口,经纬度传过去,返回对应的地理位置信息,但是总体来说逆解析的接到信息不够精确,偏差会有一些,第一次进来一般都会有一个弹窗,让你选择是否允许使用地理位置信息。

  • 腾讯H5定位组件
    腾讯的定位可以移步这里,腾讯地图开放平台,里面讲解了如何接入的方式,需要申请一个key和referer,如果key的调用量比较大,需要单独给腾讯地图团队发送邮件申请扩容,通过iframe的放入插入到页面中,更像一个黑盒,不需要了解里面太多的实现方式,也不需要写太多JS就能直接拿到一个返回对象,里面包括了经纬度,地址,城市,行政区id等,而且腾讯的定位和地图组件等针对手Q和微信做了针对性的优化,明显定位速度和精准度要比原生和高德好很多,demo地址可以移步这里,腾讯定位demo异步引入腾讯定位demo,一定要在手机上看,PC上腾讯定位是不成功的。

  • 高德定位组件
    高德定位组件的官方接入文档,可以移步这里高德开放平台,至于接入教程,我这里不想过多的讲解,而且网上一搜一大把,或者你按照官方文档做,就很容易实现了,主要想说一下高德的和腾讯的实现方式的区别,腾讯的一次返回经纬度街道信息,高德是先拿到经纬度,然后又在单独拿JS去调用他们的地理逆解析服务,分两步走,但是高德的JS包整体体积较大,开发者写代码较多,高德的选点组件也是如此,总体给人臃肿性能差的特点,但是PC上高德的要比腾讯的优势明显,腾讯的在PC上基本跪了100%拿不到定位信息。

经纬度坐标类型

摘自腾讯地图选点组件的官方文档
coordtype有下面这几种,腾讯地图接入默认等于5:

  1. GPS坐标
  2. sogou经纬度
  3. baidu经纬度
  4. mapbar经纬度
  5. [默认]腾讯、google、高德坐标
  6. sogou墨卡托

这里要提这件事情的原因是,如果你之前接的baidu,sougou地图的话,已经有些地址信息以经纬度存到数据库,从其他地图迁移高德或者腾讯地图的话,他们的坐标会有一个换算关系,所以选择接入的时候要考虑好,建议最好选择第五种腾讯、谷歌、高德这一类的。

对比

名称 PC端 移动端 速度 地理逆解析 允许弹窗 体积 社交app内嵌优化 学习成本 key&referer
原生定位 × × 经常有 ×
腾讯定位 × √(一次返回) 一天一次 较小(20k) 较小 需要申请
高德定位 略满 √( 二次调用) 偶尔会有 较大(80k) √(偶尔会有失败) 较大 需要申请

总结

优缺点也很容易从上面的表格中对比看出来,所以挑适合自己项目情况的使用吧,我们这边最终还是从高德迁移到的腾讯,主要出发点还是从性能角度考虑的,高德的定位包太大,而且开发者自己还得写不少代码,同样的地图选点组件也是,总的来说不如腾讯的省心,但是之前腾讯的有些bug,比如JS动态插入会有问题,每次定位显示弹窗,后我们这边提了一些反馈给他们后,还是修复的很快的,现在这些问题已经解决了。

不过还有一点是值得注意的,页面里多次调用只会返回最后一次的callback,你也可以针对这里自己处理一下,最后需要注意的还是,一定要记得申请Key容量和配额,否则访问量上来之后会使用不了的,提前要做好估量。

后续如果你在使用腾讯地图的各种组件中发现bug,可以联系微博私信反馈给我. 😄

完…

Redis在Nodejs中的应用

什么是Redis?

Redis是一个开源的拿C语言编写的可持久化的日志型、Key-value的数据库,提供多种语言的API,Nodejs可以以很容易的使用。类似的还有Memcached,Redis和Memcached有一样的地方也有不一样的地方,一样的地方比如:他们都是将数据存到内存中,提高读写速度,避免直接对数据组直接进行读写操作,不一样的地方有很多:Memcached是多线程非阻塞I/O模型,Redis是单线程的I/O复用模型,对于单线程可以将速度优势发挥到最大,实现了epoll,Nodejs的V8核心其实也是epoll,这点上来说两者有着共同的东西,具体Redis和Memcached之间的区别可以移步,Redis与Memcached的区别。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,貌似是性能最快的Key-Value DB.NodeRedis

安装Redis

下载安装

可以先去中文官网下载压缩包Redis官网,也可以用命令来下载安装,命令如下:

1
2
3
4
5
6
7
$ wget http://download.redis.io/releases/redis-3.0.6.tar.gz 
$ tar xzf redis-3.0.5.tar.gz
$ mv redis-3.0.5 redis
$ cd redis
$ make
$ make test
$ make install

配置Redis.conf

redis解压目录里有一个配置文件redis.conf ,编辑此配置文件,找到dir ./这一行,Redis会将数据写入文件中,而这里配置的就是将指定数据保存到对应路径,我本机的指定目录是:

1
$ dir /Users/{用户名}/redis_data/

编辑过后,将配置文件移动到 /usr/local/etc 目录下:

1
$ sudo mv redis.conf /usr/local/etc

启动Redis

命令行输入:

1
$ /usr/local/bin/redis-server /usr/local/etc/redis.conf

启动成功画面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
13417:M 10 Jul 16:52:00.552 * Increased maximum number of open files to 10032 (it was originally set to 256).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.6 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 13417

`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'

|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'

`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

13417:M 10 Jul 16:52:00.553 # Server started, Redis version 3.0.6
13417:M 10 Jul 16:52:00.554 * The server is now ready to accept connections on port 6379

如果你有写入操作,控制台就会出现信息,类似于:

1
2
3
4
5
6
13417:M 10 Jul 16:52:00.553 # Server started, Redis version 3.0.6
13417:M 10 Jul 16:52:00.554 * The server is now ready to accept connections on port 6379
13417:M 10 Jul 17:00:33.754 * 10 changes in 300 seconds. Saving...
13417:M 10 Jul 17:00:33.754 * Background saving started by pid 13458
13458:C 10 Jul 17:00:33.756 * DB saved on disk
13417:M 10 Jul 17:00:33.856 * Background saving terminated with success

Nodejs安装Node_Redis

安装

1
$ npm install redis --save

使用教程

Nodejs for Redis 专门有一个官方文档,查询使用方法可以移步到Nodejs版Redis使用文档.

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var redis = require("redis"),
option = {},
client = redis.createClient(option);
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});

上面是一个简单的demo,大概意思就是新建一个Redis的client,默认的这个Nodejs的client会去连接本地127.0.0.1:6379是否有Redis服务,如果连接成功,则可以往上面配置的指定路径中写入dump.rdb文件,数据文件一般存放在内存中,只要不断开连接,随时可以进行读写,最下面的那个forEach大概意思就是把Redis中Key是”hash key”的字段全部遍历出来。

Nodejs执行之后,控制台会打出这样的结果:

1
2
3
4
5
6
Reply: OK
Reply: 0
Reply: 0
2 replies:
0: hashtest 1
1: hashtest 2

未完待续

后续可以关注Codefilled Demo,会在这里完成一个Redis的Demo,大概思路是一个可视化的界面,实现Redis的各种操作。

结语

既然Nodejs其实已经算是后端语言了,即便被后端开发多么看不上,但是Nodejs定位已经如此了,还是尽量的能做更多的事情比较好,否则只做个控制器这么薄薄一层就显得像一个玩具了,如果选用了Nodejs作为技术栈还是希望能把离前端最近的那一层给干掉比较合适,否则各大公司天天喊着要前后端分离的意义就不是特别大了。后续会陆续推出一些后端技术相关的文章,消息队列,Nodejs use kafka,RPC(node_thrift),zookeeper等..

完..

搭建Codefilled下的demo服务

引言

有时候光写文章贴代码其实是一个挺烦的事情,贴了代码上去,读者不一定愿意看,而且还比较占篇幅,一篇文章可能往下滚半天才能看完,还是需要一个存放Demo的路径比较合适,其实早都想这样弄了,刚好接着捣鼓定位Demo的契机,把demo.codefilled.com搭建起来,这样我的这台服务器上现在有三个Nodejs的服务同时在跑,一个主页的Hexo,一个聊天室m.codefilled.com,还有demo.codefilled.com.

内容

现在只放了两个Demo扔在上面,以后随着边写文章,需要配合Demo一起的展示的,都丢到demo.codefilled.com上面去。

结语

HTML5的那个🔋Demo 纯是为了玩,定位这个是腾讯这边对H5 GeoLocation做了优化改进的定位组件,比较适合移动H5开发,针对经常会在微信、手Q里面使用定位功能的场景,做了专门针对腾讯系列社交app内嵌的优化。

完…