配置Mac os终端下vi的配色

Mac下的vim/vi home目录为:/usr/share/vim.
切到该目录下,执行sudo vi vimrc ,加入我以前的配置内容,参见:
https://raw.githubusercontent.com/tofishes/Vim/master/_vimrc

然后切换目录到配色: cd vim73/colors

然后下载以前用的一个配色方案到该目录:

wget https://raw.githubusercontent.com/tofishes/Vim/master/vimfiles/colors/molokai.vim

至此就OK了。

PS. 最新的mac osx系统启用了Rootless机制,即使是root账号也无法对/usr目录进行写操作。那么可以把vimrc文件放到 ~/.vim 下,同时molokai.vim主题放到 ~/.vim/colors 目录就可以了。

继续阅读~ 参与评论~

js getter setter和defineProperty兼容情况

测试数据源于: http://robertnyman.com/javascript/javascript-getters-setters.html

兼容ie9+及其他标准浏览器的写法有二:

1、

var lost = {
	loc : "Island",
	get location () {
		return this.loc;
	},
	set location(val) {
		this.loc = val;
	}
};
lost.location = "Another island";

2、

var lost = {
	loc : "Island"
};	
Object.defineProperty(lost, "location", {
	get : function () {
		return this.loc;
	},
	set : function (val) {
		this.loc = val;
	}
});
lost.location = "Another island";

继续阅读~ 参与评论~

YUI声明停止继续开发 – 一代“天骄”步入迟暮

http://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui
雅虎的工程师于8月29号声明:因为各类新技术,新js库的兴起(新东西层出不穷),浏览器将越来越标准化,像YUI这样大型的库已经越来越不被关注,社区也越来越不活跃,收到的issues也越来越少,所以我们做出一个艰难的决定,那就是 将停止继续开发YUI。
而这个声明基本可以认为是YUI的生命终结了,因为随着时间流逝,YUI终将淘汰并成为历史。曾经辉煌的YUI看来是快要落幕了,真是缅怀啊!

继续阅读~ 参与评论~

ToFishes系列jQuery插件 – Dropdown下拉列表

之前有发过一套插件jcuteForm中包含一个下拉列表的实现,相比之前的作品,此次的实现更加简洁和优雅(自认的)。

而以前的jCuteForm的demo页因为使用的Google jscdn 引入的jQuery挂了已经不能正常在线查看,不过还是可以下载的。

而这次的提升还是很不错的,需要的请自行:查看DEMO

源码里面有个注释,去掉就可以实现一个页面多个dropdown的显示互斥(点一个下拉,则其他打开的下拉就恢复原状,源码内的注释没解释清楚,恐误解),因为莫名的想法我给注释掉了,需要的请自行取消。

继续阅读~ 参与评论~

jQuery表单方法糖serializeArray

jQuery.serializeArray()和jQuery.param()两个表单相关的方法不知道用的人多不多,这两个是获取表单参数的最方便方法。

serializeArray()返回的是一个数组,数组由简单的“名称-值对”对象组成,可以直接当做jQuery.ajax各api方法的data参数穿进去。

例如

var params = $('form').serializeArray();// 返回类似: [{name: 'title', value: '标题'},  {name: 'content', value: '内容值'}]
$.post(url, params, function(){});

不过,在实际项目中可能有些变故,比如说我们项目后端要求 对同名参数的多个值是用逗号间隔合并一起的字符串,像checkbox类型,获取多个input[type=checkbox name=”hobby”], 使用serailizeArray会返回这样的值:
params = [{ name: “hobby”, value: “one” }, { name: “hobby”, value: “two” }, { name: “hobby”, value: “three” }]

直接用于ajax方法,传参会是这样的: hobby=one&hobby=two&hobby=three
而我们后端要求应该是这样传: hobby=one,two,three

因此直接使用serializeArray不能满足我们的需求,总不能放弃这么好的“方法糖”不吃吧?解决方法简单,我拿serializeArray封装一下,做了另外一个插件,满足了自己的需求,也没增加多少复杂度,具体代码如下:

// @tofishes
// var params = $('form').paramMap();  就可以获得整个表单的所有参数
$.fn.paramMap = function (opts) {
    opts = $.extend({
        'separator': ',' // 同名参数的分隔符,多用于checkbox的值
    })

    var params = this.serializeArray()
    ,   paramMap = {}

    ,   i = 0
    ,   l = params.length
    ,   param;

    for (; i < l; i++) {
        param = params[i];

        if (paramMap[param.name]) {
            paramMap[param.name] += opts.separator + param.value;
        } else {
            paramMap[param.name] = param.value;
        }
    };

    return paramMap;
};

善用方法,可以让自己的工作变简单很多。

继续阅读~ 参与评论~

HTML5表单验证有效状态对象

HTML5增加对表单内容类型验证的支持,而通过js获取验证有效状态的API就是ValidityState对象。

获取该对象方法:

var input = document.createElement('input');
console.info(input.validity)

浏览器支持度见: http://caniuse.com/#feat=form-validation

那么由此我们就可以写出更简单的验证框架。该对象拥有的属性如下:

继续阅读~ 参与评论~

JavaScript实现一个单程双向工作流

初衷源于项目中上一步,下一步这种交互需求,而每一步有可能或全部是异步操作,而且会有数据临时存储与获取的需要。

考虑了一些方案,受requirejs,seajs实现的启发,最终实现了这个单程双向工作流对象,而其源码看似相当简单。

那么怎么使用呢?当var flow = new Flow()实例化一个工作流以后,可以调用如下API实现:

1、流程添加API 3个:

// 参数action是一个function回调,比如
// function(i, data) {}
// i是当前步骤的索引,从0开始
// data是所有步骤存储的数据数组,因为本工作流提供数据存储,也自然提供获取
// data[i]即 第i步的数据
// action中的this指向为flow实例对象
flow.start(action); // start其实内部实现为调用next方法,因此start等同于next,其存在价值大概是为了语义
flow.next(action);  // next,添加下一步action
flow.done(action);  // done,完成所有步骤,该方法也是启动整个工作流的必须方法,也必须是最后调用。

继续阅读~ 参与评论~

1 2 3 4 5 6 7 8 9 26 27

全部分类
Books(4)code(7)database(6)html&css(24)java(11)JavaScript(48)jQuery(24)linux(20)python(1)React(1)share(1)soft(4)solution(53)thinking(17)vim(9)WordPress(8)前端优化(12)拓展(33)服务器(31)移动开发(4)自然(22)