跨域的N种方法实践

CORS(Cross-Origin Resource Sharing)

服务端设置跨域资源共享,比如nodejs

//设置允许的域
res.header('Access-Control-Allow-Origin', req.headers.origin); //其值为*或具体域
//设置允许的Header(如果有自定义的头则会发送预请求)
res.header('Access-Control-Allow-Headers', 'X-Requested-With'); //x-requested-with XMLHttpRequest

1
2
3
4
5
6
7
8
9
10
11
12
//服务端设置
setHeaderRest: function(req, res, next){
//https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
res.header('Access-Control-Allow-Origin', req.headers.origin); //origin参数指定一个允许向该服务器提交请求的URI.对于一个不带有credentials的请求,可以指定为'*',表示允许来自所有域的请求.
res.header('Access-Control-Allow-Credentials', 'true'); //带上认证信息(如 cookie)
res.header('Access-Control-Allow-Headers', 'X-Requested-With'); //x-requested-with XMLHttpRequest`, 表明是AJax异步
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS');
res.header('Access-Control-Max-Age', '86400'); // 预请求的结果的有效期
res.header('X-Powered-By', 'R_E_S_T'); //个人标记,用以区分是否resturl
res.header('Content-Type', 'application/json;charset=utf-8');
next();
}

You Dont Need jQuery

This Content is Come From http://blog.garstasio.com/you-dont-need-jquery/

在这里仅仅是翻译或是总结下常归的方法:

你不再需要jQuery

在许多方面很多开发者非常依赖jQuery, jQuery在保证浏览器兼容性和优雅的Api让javascript更易用,但是如果没有jQuery,一切也不会显示那么糟糕!以下是一些常见的替代方法,这更有助于理解原生的Javascript

元素选择

1
$ => document.querySelectorAll //IE8+

Classes,Tag,属性,伪元素

jquery

1
$('selector');

passport-local基于connect的验证流程解析

概要

之所以是passport-local基于connect的验证流程解析,是因为个人实例时没有用到express框架,但用到了TJ大神的node-connect。 个人的MVC框架是基于自然映射,也用到了connect去引入中间件,所以passport-local基于connect的 原理与流程在此大致梳理一下。

passport-local代码及运转流程解析

首先定义local验证的策略

本地验证需要二个字段usernameField, passwordField,其值为你想定义的验证字段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var CB = function(name, pwd, done) {
// asynchronous verification, for effect...
process.nextTick(function () {
user.findOne({
name: name
}, function(error, user){
if(!user){
return done(null, false, { message: '用户名或邮箱 ' + name + ' 不存在'});
}
if(user.password !== pwd){
return done(null, false, { message: '密码不匹配' });
}else{
return done(null, user, info);
}
});
});
};
passport.use(new LocalStrategy({
// options参数,用来设置你要验证的字段名称,即usernameField
usernameField: 'name', //如果用邮箱验证,则需要改成邮箱字段
passwordField: 'pwd'
}, CB));

一个极简但实用的MVC nodejs框架

jc-mvc

仅具基本模型,尚在完善中……

个人觉得有以下特点或优点:

  • 采取自然映射,无需配置路由及手动路由,模块或目录结构的组织即路由。
    1. mvc —> ctrl/action/param
    2. rest —> restUriPrefix/resource/param [GET, POST, PUT, DELETE]
  • 无需处理除数据外的其它动作。
    1. model自动promise化
    2. mvc自动渲染页面,rest自动渲染json,仅需要在ctrl里组织装好数据,ctrl自动处理与model及view/json的联结。
  • mvc与rest轻松结合, Ctrl/Action 与 Resource/Method约定相结合。
  • 与express相同的中间件处理方式

依赖:

  • DB驱动 “mongoskin”
  • 模板引擎 “dot”
  • 中间件 “connect”

《大圣归来》观感

大圣归来
最近几日在知乎,新闻,及影评等各处资讯受到狂轰滥炸,都指向了国产动画《大圣归来》,居说是国产动画崛起之作,良心之作。让我也产生了一种不得不看的冲动。要知道我自从老婆怀孕后到如今,已经两年多没有机会和老婆走进影院的我;害怕人家情侣冷眼从来没有独自一人去看电影的我;从小对动画无感,觉着没真人的电影及剧集没有感情不爱看的我;至今还记得我小时候妈妈想换台形容动画的土话:别看这种木鬼子戏在电视里晃来晃去连个人都没有,所以至今也没有认真看过一集动画的我,居然放着老婆孩子,自己一人预订了一张仅剩下首排最边的座,默默地去看了。

ES6相关及 Thunk Generator Promise Co 相关概念解析

Thunk

Thunk是一种临时function, 被当作参数传递进另一个function, 实现function的引用传参,而不是传值传参。
其应用之一如下:
把形如 fs.readFile(fileName, callback); 转化为 Thunk(fileName)(callback), 这样就避免了多重嵌套回调, 增加可读性与代码的组织性。

实现原理:

1
2
3
4
5
var Thunk = function (fileName){
return function (callback){
return fs.readFile(fileName, callback);
};
};

根据此原理,可以将任何函数Thunk化。

构建基于MVC架构的NodeJs应用

npm build
一个Nodejs MVC框架,可以用来开发MVC模式的Web应用或者作为前端的html,css,js,img等的模块化管理提供一个环境

引入依赖jcmvc npm install jcmvc
jcmvc的example的使用实例: jc-mvc

个人觉得有以下特点或优点:

  • 采取自然映射,无需配置路由及手动路由,模块或目录结构的组织即路由。

    1. mvc —> ctrl/action/param
    2. rest —> restUriPrefix/resource/param [GET, POST, PUT, DELETE]
      在缺省ctrl时,会依据view的结构生成路由,意义在于为重构者或美工提供一个纯表现与结构的模块化管理
  • 无需处理除数据外的其它动作。

    1. model自动promise化
    2. mvc自动渲染页面,rest自动渲染json,仅需要在ctrl里组织装好数据,ctrl自动处理与model及view/json的联结。
  • mvc与rest轻松结合, Ctrl/Action 与 Resource/Method约定相结合。

  • 与express相同的中间件处理方式

  • 多web化管理,可以指定多个前端目录,管理多个前端项目。
    相当于提供多web服务,在webs目录里可以新建项目,指定配置文件即可新开一个web服务,且,可以对视图进行最便捷且基础mvc路由与对结构层进行doT模板引擎的模块化管理。
    (难道你的开发模式还停留在手动在本地浏览且不停的COPY重复的东东……)

半年非技术类总结...

想不到在Github这个讨论技术的地方,我的第一篇文章是相关投资理财的半年度总结。
从2015年1月1日第一天买入基金开始,半个月之后又进入了股票交易,我就开始了这辈子的理财之路,有关理财的重要性没人怀疑,但很多人对投资股市有着根深蒂固的消极思想,特别是近三周上证综指直接由约5200至3600点更是验证了他们的想法。现在我没有足够的知识储备去说明一些道理,仅对半年的操作错误历程作个总结。

期望与趋势的背离

在每日接收到的资讯中,每个人会对每日走势作了判断,那么请相信自己的独立判断,但是要分清楚自己的这个判断是主观性趋势抑或是客观性趋势。即是当前接受到的资讯是否支撑期望性的得到那个理想的结果。

对每日的趋势作个判断.

需要对来日的趋势作个总结性判断然后去执行,中间不能因为任何的盘中变化而改变。除非是重大消息引起的趋势性改变。

相信技术指标

不论何种原因的技术指标的破位应该相信且迅速离场,不能一厢情愿的认为其它外因是多么的不合理。 要看固定的几种而不是太多的技术线指标,并作深刻理解

(BOLL, MACD, 均线)