Reducer

Where there is a will, there is a way.


  • 首页

  • 分类

  • 归档

  • 标签

Webpack + Gulp + Babel, No React!

发表于 2016-01-07 | 分类于 前端工程化

前端自动化构建一直很火热, 各种工具也层出不穷, 开始有点不以为然, 但使用之后发现确实很方便, 也整理出了一套自己感觉不错的搭配组合, 用 Webpack 来处理js, 用 Gulp 来编译与压缩sass, 检查与压缩js, 处理图片等等, 用 Babel 来讲es2015转化为es5. 每次 Babel 与 Webpack 组合时, 网上资料无不扯上 React, 我感觉这一块一直是一个小痛点吧。当然基于 Babel + Webpack + ES6+ 的 React 确实很优雅, 最近正在努力学习, 下一篇博文分享吧。

阅读全文 »

2个场景, 回调不再是黑洞!

发表于 2015-08-19 | 分类于 Node

在我看来,异步的控制主要分为两类:

无依赖的异步执行,各个操作之间没有相互依赖,均为独立,需要所有操作都执行结束后返回值.

例如场景1: 有3份txt数据文件, 要求读取这3份数据文件, 并按读取顺序依次输出文件内容.

若直接回调, 不采用任何异步控制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//已经嵌套了3次了哟, 黑洞已经出现了!
fs.readFile('1.txt', 'utf8', function (err, data) {
if (err) throw err;
console.log(data);
fs.readFile('2.txt', 'utf8', function (err, data) {
if (err) throw err;
console.log(data);
fs.readFile('3.txt', 'utf8', function (err, data) {
if (err) throw err;
console.log(data);
console.timeEnd("test");
});
});
});

有相互依赖的异步执行,下一个操作需要用到上一个操作的执行结果,相当于需要顺序执行,不能并发.

例如场景2: 让我们来模拟一个真实的mongodb场景, 相对于我这样的初学者而言, 在编写应用时, 数据库CRUD中最易出现回调嵌套, 因为我们往往要利用上一步查询的结果来继续下一步.

现在我们有一份学生考试信息的文档, 记录学生的考试号、姓名、密码、分数等信息, 具体如下

{ examid: 1, username: ‘Tom’, password: md5(‘good’), score: [84, 79, 91, 90] };
{ examid: 1, username: ‘Ross’, password: md5(‘both’), score: [81, 73, 67, 78] };
{ examid: 2, username: ‘Alisa’, password: md5(‘great’), score: [78, 69, 87, 71] };
{ examid: 2, username: ‘Joan’, password: md5(‘root’), score: [98, 76, 89, 90] };
{ examid: 3, username: ‘Mike’, password: md5(‘true’), score: [56, 23, 88, 10] };

需要求出Tom所在考场的学生名单, 我们也是直接回调, 先不采用任何异步控制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var findDocuments = function(db, collectName, queryCondition, callback) {
var collection = db.collection(collectName);
collection.find(queryCondition).toArray(function(err, docs) {
callback(null, docs);
});
}
//同样嵌套了3次, 出现黑洞!
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
findDocuments(db, 'students', {username: 'Tom'}, function (err, result){
findDocuments(db, 'students', {examid: result[0].examid}, function (err, result){
console.log(result);
db.close();
});
});
});
阅读全文 »

关于MongoDB数据库未授权访问漏洞的解决方案

发表于 2015-08-13 | 分类于 数据库

前两天云盾给了我一个漏洞警告,表示在服务器上的MongodDB存在未授权访问的漏洞。主要原因是因为默认安装完MongoDB后,都有一个空的admin数据库,即使启动时添加认证参数,也不存在任何权限验证,登录的用户可以通过MongodDB的默认端口无需密码对数据库任意操作,包括远程访问数据库,存在较大的安全隐患。

阅读全文 »

我需要改变

发表于 2015-08-09 | 分类于 生活札记

转眼搭建完这个博客已经有4天了,却一直没有时间来写一篇开博纪念,本想把整个博客建站的技术过程详细叙述一下,但这几天瞄了几眼CNODE的nodejs源码,方才感觉自己写得实在太。。。low(lan)了,根本不值一提。nodejs还不怎么懂,路由没有写好,“回调金字塔”出现于我的代码当中,几个查询我傻傻地就嵌套在了一起,OMG。。。直到前天看到《深入浅出nodejs》异步编程那一章才发现自己是多么愚蠢。。。

阅读全文 »

php.ini中常会触及到的'限制'

发表于 2015-08-06 | 分类于 后端

max_execution_time

php最大执行时间,php.ini中默认数值为30,即在页面执行30s后,服务器会直接强制终止页面的执行。

对于一般的页面,30s足够了,但对于有些需要直接利用php执行进行大量数据分析的页面,你就需要根据页面执行的效率,调整 max_execution_time 的值,当然尽可能改善你的算法,获得最佳页面执行效率。

阅读全文 »
1…45
淡苍

淡苍

在寻找大神的路上让自己成为大神

29 日志
10 分类
19 标签
RSS
GitHub 微博 知乎
© 2015 - 2017 淡苍
由 Hexo 强力驱动
主题 - NexT.Pisces