博客园 - cpselvis
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=96235
2018-04-18T05:14:30Z
cpselvis
https://www.cnblogs.com/cpselvis/
feed.cnblogs.com
https://www.cnblogs.com/cpselvis/p/8874081.html
Semver(语义化版本号)扫盲 - cpselvis
最近Github 10周年在朋友圈里沸沸扬扬刷屏,小编在工作中却惊讶的发现不少同事对版本号中的beta和rc没有概念,使用 npm install package@next 时,也不清楚next代表的含义。于是,决定写一篇文章科普一下由 Github 起草的Semver(语义化版本)的相关知识。 实
2018-04-18T05:10:00Z
2018-04-18T05:10:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】最近Github 10周年在朋友圈里沸沸扬扬刷屏,小编在工作中却惊讶的发现不少同事对版本号中的beta和rc没有概念,使用 npm install package@next 时,也不清楚next代表的含义。于是,决定写一篇文章科普一下由 Github 起草的Semver(语义化版本)的相关知识。 实 <a href="https://www.cnblogs.com/cpselvis/p/8874081.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/8644799.html
webpack4新特性介绍 - cpselvis
导语: webpack是一个JS应用打包器, 它将应用中的各个模块打成一个或者多个bundle文件。借助loaders和plugins,它可以改变、压缩和优化各种各样的文件。它的输入是不同的资源,比如:js、css、图片、字体和html文件等等,然后将它们输出成浏览器可以正常解析的文件。 当下最流行
2018-03-25T07:14:00Z
2018-03-25T07:14:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】导语: webpack是一个JS应用打包器, 它将应用中的各个模块打成一个或者多个bundle文件。借助loaders和plugins,它可以改变、压缩和优化各种各样的文件。它的输入是不同的资源,比如:js、css、图片、字体和html文件等等,然后将它们输出成浏览器可以正常解析的文件。 当下最流行 <a href="https://www.cnblogs.com/cpselvis/p/8644799.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/8467206.html
腾讯IVWEB前端工程化工具feflow思考与实践 - cpselvis
本篇文章主要介绍 "腾讯IVWEB团队" 从0到1在工程化的思考和实践。 "feflow" 的全称是Front end flow(前端工作流),致力于提升研发效率和规范的工程化解决方案。愿景是通过feflow,可以使项目创建、开发、构建、规范检查到最终项目上线的整个过程更加自动化和标准化。 要解决的
2018-02-24T09:51:00Z
2018-02-24T09:51:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】本篇文章主要介绍 "腾讯IVWEB团队" 从0到1在工程化的思考和实践。 "feflow" 的全称是Front end flow(前端工作流),致力于提升研发效率和规范的工程化解决方案。愿景是通过feflow,可以使项目创建、开发、构建、规范检查到最终项目上线的整个过程更加自动化和标准化。 要解决的 <a href="https://www.cnblogs.com/cpselvis/p/8467206.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/7859665.html
Fis3构建迁移Webpack之路 - cpselvis
Webpack从2015年9月第一个版本横空初始至今已逾2载。它的出现,颠覆了一大批主流构建如Ant、Grunt和Gulp等等。腾讯NOW直播 "IVWEB团队" 之前一直采用Fis构建,本篇文章主要介绍从Fis迁移到webpack遇到的问题和背后的黑科技,内容包括inline resource、多
2017-11-19T06:08:00Z
2017-11-19T06:08:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】Webpack从2015年9月第一个版本横空初始至今已逾2载。它的出现,颠覆了一大批主流构建如Ant、Grunt和Gulp等等。腾讯NOW直播 "IVWEB团队" 之前一直采用Fis构建,本篇文章主要介绍从Fis迁移到webpack遇到的问题和背后的黑科技,内容包括inline resource、多 <a href="https://www.cnblogs.com/cpselvis/p/7859665.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/7649294.html
ESLint可共享配置发布,团队自定义ESLint规则新鲜出炉 - cpselvis
"ESLint" 于2013年6月份推出,至今4个年头,最新版本v4.8.0。它是目前主流的用于Javascript和JSX代码规范检查的利器,很多大公司比如 "Airbnb" 和 "Google" 均有一套自己的Javascript编码规范,而规范的实施背后离不开ESLint的支持。比如大名顶顶的
2017-10-11T02:50:00Z
2017-10-11T02:50:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】"ESLint" 于2013年6月份推出,至今4个年头,最新版本v4.8.0。它是目前主流的用于Javascript和JSX代码规范检查的利器,很多大公司比如 "Airbnb" 和 "Google" 均有一套自己的Javascript编码规范,而规范的实施背后离不开ESLint的支持。比如大名顶顶的 <a href="https://www.cnblogs.com/cpselvis/p/7649294.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/7594630.html
《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结 - cpselvis
背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同。常见的类型有组件类、活动类、基于React+redux的业务项目、RN项目、Node.js项目等等。如果想要对每个项目进行一些规范的约束比如Git提交规范、Javascript规范简直难于
2017-09-25T16:09:00Z
2017-09-25T16:09:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同。常见的类型有组件类、活动类、基于React+redux的业务项目、RN项目、Node.js项目等等。如果想要对每个项目进行一些规范的约束比如Git提交规范、Javascript规范简直难于 <a href="https://www.cnblogs.com/cpselvis/p/7594630.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/7306076.html
CLI子命令扩展-插件机制实现 - cpselvis
开发CLI工具过程中,为了便于扩展,将CLI的实现分为基础功能和扩展功能。基础功能包括init、build、lint、publish等伴随工程从初始化到最终发布到生产环境,也即为CLI 的core。扩展功能包括规范检测、代码生成、图片上传等和多个平台集成的开发配套服务设施。本篇文章将会叙述如何优雅的
2017-08-08T03:50:00Z
2017-08-08T03:50:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】开发CLI工具过程中,为了便于扩展,将CLI的实现分为基础功能和扩展功能。基础功能包括init、build、lint、publish等伴随工程从初始化到最终发布到生产环境,也即为CLI 的core。扩展功能包括规范检测、代码生成、图片上传等和多个平台集成的开发配套服务设施。本篇文章将会叙述如何优雅的 <a href="https://www.cnblogs.com/cpselvis/p/7306076.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/7001137.html
python编写知乎爬虫实践 - cpselvis
爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子URL 将种子URL加入任务队列 从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。 分析已抓取URL队列中的U
2017-06-13T08:18:00Z
2017-06-13T08:18:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子URL 将种子URL加入任务队列 从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。 分析已抓取URL队列中的U <a href="https://www.cnblogs.com/cpselvis/p/7001137.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6926157.html
编写原生的Node.js模块 - cpselvis
导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了。 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项目中进行使用。下面有个列表,你可能对它们的名字很熟悉: "node sass" 将sass文件编译成
2017-05-31T14:13:00Z
2017-05-31T14:13:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了。 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项目中进行使用。下面有个列表,你可能对它们的名字很熟悉: "node sass" 将sass文件编译成 <a href="https://www.cnblogs.com/cpselvis/p/6926157.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6852858.html
Node.js编写CLI的实践 - cpselvis
导语:通常而言,Node.js的应用场景有前后端分离、海量web页面渲染服务、命令行工具和桌面端应用等等。本篇文章选取CLI(Command Line Tools)子领域,来谈谈Node.js编写CLI的实践,让CLI切实解决实际工程问题。 Why Node.js? 常用的用来编写CLI的语言有 p
2017-05-14T08:26:00Z
2017-05-14T08:26:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】导语:通常而言,Node.js的应用场景有前后端分离、海量web页面渲染服务、命令行工具和桌面端应用等等。本篇文章选取CLI(Command Line Tools)子领域,来谈谈Node.js编写CLI的实践,让CLI切实解决实际工程问题。 Why Node.js? 常用的用来编写CLI的语言有 p <a href="https://www.cnblogs.com/cpselvis/p/6852858.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6629462.html
使用Yeoman generator来规范工程的初始化 - cpselvis
前言 随着开发团队不断发展壮大,在人员增加的同时也带来了协作成本的增加;业务项目越来越多,类型也各不相同。常见的类型有基础组件、业务组件、基于React的业务项目、基于Vue的业务项目等等。如果想要对每个项目进行一些规范上的约束比如Git提交规范、Javascript规范简直难于登天。所有的这些,只
2017-03-27T15:25:00Z
2017-03-27T15:25:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】前言 随着开发团队不断发展壮大,在人员增加的同时也带来了协作成本的增加;业务项目越来越多,类型也各不相同。常见的类型有基础组件、业务组件、基于React的业务项目、基于Vue的业务项目等等。如果想要对每个项目进行一些规范上的约束比如Git提交规范、Javascript规范简直难于登天。所有的这些,只 <a href="https://www.cnblogs.com/cpselvis/p/6629462.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6501485.html
Git commit message和工作流规范 - cpselvis
目的 统一团队Git commit日志标准,便于后续代码review,版本发布以及日志自动化生成等等。 统一团队的Git工作流,包括分支使用、tag规范、issue等 Git commit日志参考案例 "angular" "commit message test project" "babel pl
2017-03-04T07:33:00Z
2017-03-04T07:33:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】目的 统一团队Git commit日志标准,便于后续代码review,版本发布以及日志自动化生成等等。 统一团队的Git工作流,包括分支使用、tag规范、issue等 Git commit日志参考案例 "angular" "commit message test project" "babel pl <a href="https://www.cnblogs.com/cpselvis/p/6501485.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6423874.html
如何写好 Git commit messages - cpselvis
导语:任何软件项目都是一个协作项目,它至少需要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月之后,项目步入正规。不过他们或者后续的开发人员仍然需要经常提交一些代码去修复bug或者实现新的feature。我们经常有这种感受:当一个项目时间过了很久之后,我们对于项目里面的文件和函数功能渐
2017-02-21T06:09:00Z
2017-02-21T06:09:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】导语:任何软件项目都是一个协作项目,它至少需要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月之后,项目步入正规。不过他们或者后续的开发人员仍然需要经常提交一些代码去修复bug或者实现新的feature。我们经常有这种感受:当一个项目时间过了很久之后,我们对于项目里面的文件和函数功能渐 <a href="https://www.cnblogs.com/cpselvis/p/6423874.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6344122.html
Javascript中的async await - cpselvis
async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。目前,async / await这个特性已经是 "stage 3" 的建议,可以看看 "TC39的进度" ,本篇文章将分享async / await是如何工作的,阅读本文前,希望你具备Promise、genera
2017-01-23T09:52:00Z
2017-01-23T09:52:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。目前,async / await这个特性已经是 "stage 3" 的建议,可以看看 "TC39的进度" ,本篇文章将分享async / await是如何工作的,阅读本文前,希望你具备Promise、genera <a href="https://www.cnblogs.com/cpselvis/p/6344122.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6294986.html
在Node.js中使用RabbitMQ系列二 任务队列 - cpselvis
在上一篇文章 "在Node.js中使用RabbitMQ系列一 Hello world" 我有使用一个任务队列,不过当时的场景是将消息发送给一个消费者,本篇文章我将讨论有多个消费者的场景。 其实,任务队列最核心解决的问题是避免立即处理那些耗时的任务,也就是避免请求 响应的这种同步模式。取而代之的是我们
2017-01-17T16:28:00Z
2017-01-17T16:28:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】在上一篇文章 "在Node.js中使用RabbitMQ系列一 Hello world" 我有使用一个任务队列,不过当时的场景是将消息发送给一个消费者,本篇文章我将讨论有多个消费者的场景。 其实,任务队列最核心解决的问题是避免立即处理那些耗时的任务,也就是避免请求 响应的这种同步模式。取而代之的是我们 <a href="https://www.cnblogs.com/cpselvis/p/6294986.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6288330.html
在Node.js中使用RabbitMQ系列一 Hello world - cpselvis
在前一篇文章中 "可伸缩架构简短系列" 中提到过关于异步的问题。当时推荐使用RabbitMQ来做任务队列的实现方案。本篇文章以Node.js为例子,来实际操作如何和RabbitMQ进行交互。 介绍 RabbitMQ是一个消息代理。它最初的思想特别简单:接受并且转发消息。你可以将它想象为邮局:当你将邮
2017-01-16T03:46:00Z
2017-01-16T03:46:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】在前一篇文章中 "可伸缩架构简短系列" 中提到过关于异步的问题。当时推荐使用RabbitMQ来做任务队列的实现方案。本篇文章以Node.js为例子,来实际操作如何和RabbitMQ进行交互。 介绍 RabbitMQ是一个消息代理。它最初的思想特别简单:接受并且转发消息。你可以将它想象为邮局:当你将邮 <a href="https://www.cnblogs.com/cpselvis/p/6288330.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6287991.html
可伸缩架构简短系列 - cpselvis
采取什么办法可以让一个Web服务可大规模可扩展?相信你会对这个问题感兴趣。 克隆 通常来说,公共服务器上的一个可伸缩的web服务总是隐藏在一个Load Balancer(负载均衡器)之后。这个负载均衡器会将负载(来自用户的请求)均匀的分配到一组服务器或者服务器集群。那意味着什么?举个例子:某个用户访
2017-01-15T13:53:00Z
2017-01-15T13:53:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】采取什么办法可以让一个Web服务可大规模可扩展?相信你会对这个问题感兴趣。 克隆 通常来说,公共服务器上的一个可伸缩的web服务总是隐藏在一个Load Balancer(负载均衡器)之后。这个负载均衡器会将负载(来自用户的请求)均匀的分配到一组服务器或者服务器集群。那意味着什么?举个例子:某个用户访 <a href="https://www.cnblogs.com/cpselvis/p/6287991.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6276789.html
理解Javascript的状态容器Redux - cpselvis
Redux要解决什么问题? 随着 JavaScript 单页应用开发日趋复杂, JavaScript 需要管理比任何时候都要多的 state (状态) 。 这些 state 可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动
2017-01-12T01:16:00Z
2017-01-12T01:16:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】Redux要解决什么问题? 随着 JavaScript 单页应用开发日趋复杂, JavaScript 需要管理比任何时候都要多的 state (状态) 。 这些 state 可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动 <a href="https://www.cnblogs.com/cpselvis/p/6276789.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6272096.html
常见缓存算法和LRU的c++实现 - cpselvis
对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的缓
2017-01-11T00:14:00Z
2017-01-11T00:14:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的缓 <a href="https://www.cnblogs.com/cpselvis/p/6272096.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cpselvis/p/6271008.html
理解函数式编程 - cpselvis
相信大家平时或多或少听过不少关于“函数式编程” (FP)相关的词语,有些Geek经常吹捧函数式的优点或者特性比如:纯函数无副作用、不变的数据、高阶函数、流计算模式、尾递归、柯里化等等,再加上目前的函数式理论越来越多的应用于工程中,OCaml,clojure, scala等FP语言日渐火爆。本编文章,
2017-01-10T14:05:00Z
2017-01-10T14:05:00Z
cpselvis
https://www.cnblogs.com/cpselvis/
【摘要】相信大家平时或多或少听过不少关于“函数式编程” (FP)相关的词语,有些Geek经常吹捧函数式的优点或者特性比如:纯函数无副作用、不变的数据、高阶函数、流计算模式、尾递归、柯里化等等,再加上目前的函数式理论越来越多的应用于工程中,OCaml,clojure, scala等FP语言日渐火爆。本编文章, <a href="https://www.cnblogs.com/cpselvis/p/6271008.html" target="_blank">阅读全文</a>