黄龙 于 1个月前发表 313 0 0
不清楚fis3是什么的可以先看这个链接 http://fis.baidu.com/ [http://fis.baidu.com/] 背景 从fis的官方文档上看,fis 除了deploy 插件是支持异步的其它都不支持。但是有好多node包 都是异步,怎么才能让fis支持异步插件呢? 举个例子 最近看到有一个 gulp-lzmajs [https://github.com/andot/gulp-lzmajs] 的插件,我尝试把它改成fis3插件。 接下来我们要思考下面几个问题 1. 做什么阶段的插件? 2. lzma库是异步调用的,怎么处理? 第一个问题:fis3把构建分成了三个阶段【编译】【打包】【发布】,当然我们只希望所有文件打包好之后再做js文件的lama压缩,所以做打包阶段的插件,扩展postpackager 第二个问题:我们需要一个很神奇的包 deasync DEASYNC github: https://github.com/abbr/deasync [https://github.com/abbr/deasync] 用法:
1个月前
构建工具
孙世吉 于 1个月前发表 439 0 0
1. 尾递归 说起 尾递归 就不能不提一下 尾调用(Tail Call) 。 尾调用:在函数的最后一步调用另外一个函数。 functionfunc(){ // ... other codereturn otherFunc();// 尾调用 } 尾递归:在函数的最后一步调用自身 functionfunc(){ // ... other codereturn func();// 尾递归 } 2. 尾调用和非尾调用 说到递归,那就必然要以斐波那契数列为例子 [http://7tszky.com1.z0.glb.clouddn.com/FnBilj1jvdqTOG8EkuDnazoeLKZg] 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 简单的说,斐波那契数列中的每一项都是前两项的和。
1个月前
javascript技术
coolriver 于 1个月前发表 768 0 1
1. 背景 产品需求来啦:点击页面上某个东西,要在新窗口中打开一个页面,注意!要在新窗口中打开。你呵呵一笑,太简单了: 1. 打开的页面地址是固定的?直接a标签加上 target="_blank" 属性搞定。 2. 打开的页面地址是动态计算的?使用js进行 window.open(url) 搞定。 如果你人品比较好,你的页面可以顺利地运行到下线为止。但如果你脸比较黑,可能会遇到以下问题: 1. 用户投诉:我在你们页面上进行的操作,怎么账号被盗了!! 2. 用户吐槽:页面卡得不行了。。。 WTF? 2. 来两个例子 2.1 例子1: 步骤: 1. 进入这个微博帖子页面: http://blog.sina.com.cn/s/blog_c3a321040102wdq4.html [http://blog.sina.com.cn/s/blog_c3a321040102wdq4.html] 2. 点击正文的”点击有惊喜哦“链接。 3. 看了下新打开的页面,什么惊喜都没有啊。。。回到上一个刚才的页面窗口。 4. 嗯?登录态丢了,重新登录一下吧。 5. 靠,中招了!
1个月前
浏览器
黎清龙 于 1个月前发表 413 0 0
代码覆盖率工具 ISTANBUL 1. 代码覆盖率 在测试时,我们的用例把所有代码都覆盖了吗? 对于这个问题引出了代码覆盖率的测试指标,一共有以下4种: * 行覆盖率(line coverage):是否每一行都执行了? * 函数覆盖率(function coverage):是否每个函数都调用了? * 分支覆盖率(branch coverage):是否每个if代码块都执行了? * 语句覆盖率(statement coverage):是否每个语句都执行了? istanbul 是一个代码覆盖工具 它可以帮助我们检查代码的覆盖率 在一个项目中,可以通过 istanbul 设定某些覆盖率阈值来保证测试用例的齐全完整程度,用来保证代码质量 下面是对 istanbul 的使用&学习所得 2. 安装 需要安装 mocha,should,istanbul $ npm install mocha $ npm install should $ npm install istanbul mocha 是测试框架,should 是断言库 3. 初探代码覆盖 先来看看我们的测试文件:
1个月前
nodeJS全栈
孙世吉 于 1个月前发表 490 2 0
1. GRAPHQL来啦! 当Facebook构建移动应用的时候,它需要的是一个强大的数据获取API: * 足够强大,满足Facebook自身复杂业务的需求; * 足够简单,对开发者和使用者来说很容易上手与使用; [http://7tszky.com1.z0.glb.clouddn.com/FoB9iZ8vEeqLToGG_Yky-0-Duljt] GraphQL就是为了满足这一个需求而产生的,Facebook从2012年开始完善,与2015年展开GraphQL的开源的进程,并形成一个 围绕GraphQL的社区 [http://graphql.org] 。 GraphQL每天都为Fackbook接收、处理着上百亿的请求,为Fackbook提供了强大的基础数据平台的支持,滋养大量业务与产品。 2. 为什么是GRAPHQL?
1个月前
基础库
kinkahuang 于 1个月前发表 304 0 0
MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。 而我却拿MQTT来做实时日志系统。 主要基于这几个点,轻量,实现简单,支持QoS,支持TLS,是个发布/订阅协议,支持消息推送。 其实公司日志系统那么多,像ULS,nlog什么的,为什么又又又要造轮子呀?因为要么接入麻烦,要么语言不支持,要么需要资源,要么支持不到位,要么丢消息等。而我的需求背景是,有几台服务器,目前的日志是打印到本地文件中,每次要查日志都要登录运营机器,而且还要登录两台,不大方便。因此,我想要的就是,只在一处地方统一实时查看所有日志,而且对现有系统最小的改动。 而了解到MQTT也实在是偶然,在一个ruff的群里有人基于MQTT对物联设备做实时控制,而线上的机器完全也可以当作一个物联设备,我用MQTT来做远程控制,控制内容就是把写到文件的日志直接转发到中心服务器就可以了。架构图长这样子:
1个月前
工具建设
kinkahuang 于 1个月前发表 595 0 0
我们有个内部运营系统,是基于keenthemes的一个主题进行开发的,而这个主题就是基于jQuery+bootstrap+jQueryPlugins 进行的定制主题,用于显示各种图表和曲线。所以,这个系统的特点就是,加载了一堆js和css进行堆砌组合,以及内容被一层层的标签和样式包围。长这个样子: 混乱重复的演示 [http://7tszky.com1.z0.glb.clouddn.com/Fp4hlPNcE8G4nKobqt46vaJv6wUS]混乱重复的演示 [http://7tszky.com1.z0.glb.clouddn.com/FotxjNSUG9qMZMMZm7r_GyXob7ZM]混乱重复的演示 [http://7tszky.com1.z0.glb.clouddn.com/FhkJMXtTuF-OX9iguBcEBQb8qfNU] 这种写多了确实就是体力活,一般的开发过程也就是复制粘贴,而且为了不出意外的问题,有用的没用的js script和css link都是直接复制的,反正放内部用一般忽略加载的延迟。
1个月前
开发模式
陈映平 于 1个月前发表 359 0 0
本文摘录自个人总结《Nodejs学习笔记》,更多章节及更新,请访问 github主页地址 [https://github.com/chyingp/nodejs-learning-guide] 。欢迎加群交流,群号 197339705 [http://shang.qq.com/wpa/qunwpa?idkey=7e4f670e1cd9278f30003965a1cc068a4f30d8c73aa071c8da189f4842dbbee6] 。 模块概览 在node中,child_process这个模块非常重要。掌握了它,等于在node的世界开启了一扇新的大门。熟悉shell脚本的同学,可以用它来完成很多有意思的事情,比如文件压缩、增量部署等,感兴趣的同学,看文本文后可以尝试下。 举个简单的例子: const spawn = require('child_process').spawn; const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => {
1个月前
nodeJS全栈
ShiJianwen 于 1个月前发表 226 0 0
hexo 是一个优秀的静态博客工具,唯一的不足就是源文件无法同步,让人几乎只能在一台电脑上写博客,为了解决这个问题,我们可以使用 Github 来管理我们的 hexo 源文件,具体思路就是:在我们博客的远程仓库中新建一个分支,用这个分支来存储博客的源文件,这样我们每次在更新博客并部署之后可以顺手多执行两条命令将源文件同步到远程分支中去,不需要做任何环境切换的操作,还可以将部署和同步操作写成一个命令脚本,自动执行以上命令。建立同步的过程很简单: 初始化版本库&建立仓库关联(已与远程仓库关联的可忽略这一步) 一般根据 hexo 教程一步步建立起来的博客都没有跟自己的远程仓库建立关联,查看是否关联的方法是输入 git remote 看是否有关联的远程仓库: [http://7tszky.com1.z0.glb.clouddn.com/FtxueLTZmK2wcld6Id7DAu6-24k_]
1个月前
工具建设
ShiJianwen 于 1个月前发表 267 0 0
原文链接: https://dotdev.co/clean-up-your-vue-modules-with-es6-arrow-functions-2ef65e348d41#.vkndfgci3 [https://dotdev.co/clean-up-your-vue-modules-with-es6-arrow-functions-2ef65e348d41#.vkndfgci3] 众成翻译地址: http://www.zcfy.cc/article/clean-up-your-vue-modules-with-es6-arrow-functions-dotdev-1872.html [http://www.zcfy.cc/article/clean-up-your-vue-modules-with-es6-arrow-functions-dotdev-1872.html] 最近在重构一个用 Vue1.0 写的项目,我通过使用 ES6 的箭头函数来让代码在不升级 Vue2.0
1个月前
javascript技术
ShiJianwen 于 1个月前发表 290 2 0
问题描述 在开发中,我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于12px的字体使用 line-height 属性进行垂直居中的时候,渲染出来的效果并不是文字垂直居中,而是会偏上一些。举两个代码示例如下: 1. 大于12px html <span>testtesttest</span> css span{ display: inline-block; height:16px; background-color: gray; line-height:16px; font-size:12px; } <!-- more -->显示效果 [http://7tszky.com1.z0.glb.clouddn.com/Fjxba0fqcxW5gDXF9DW1IMRoHh5I] 2. 小于12px html <span>testtesttest</span> css span{ display: inline-block; height:16px;
1个月前
CSS/重构
yisbug 于 1个月前发表 261 0 0
本文内容大部分来自 https://www.joyent.com/node-js/production/design/errors [https://www.joyent.com/node-js/production/design/errors] ,原文比较长,感觉也有点啰嗦,所以根据个人理解猜测梳理出本文,如果有错误欢迎指出,谢谢! 很多人其实不是很重视错误处理,但对于构建一个健壮的nodejs应用,错误处理是非常重要的一件事情,希望本文可以给你一些启发。 先抛出几个问题: 1. 应该用哪种方式暴露错误? throw 、 callback(err, result) 、 Event Emitter 或者其他方式? 2. 如何假设函数的参数?是否应该检测类型正确?非null,IP,QQ号码? 3. 函数参数不符合预期该怎么处理? 4. 应该如何区分不同类型的错误?例如 Bad Request 、 Service Unavailable 5. 应该如何提供有用的错误信息? 6. 应该如何捕获错误?使用 try/catch ,还是 domains 或者其他方式? 一些基础知识
1个月前
nodeJS全栈