预览模式: 普通 | 列表

人人都能用的10条网站易用性技巧

嗯,WebAIM团队博客的一篇关于网站易用性的文章,比较基础,简单翻译一下:

1. 给你的logo添加替代文本

这样有两个好处:屏幕阅读器能识别logo图片代表的含义,图片未加载到时,也能告诉非视障用户那里是你的logo。

几种方法:

1  
<img src="logo.png" alt="前端界">

或者,你用背景图来实现logo的话,也可以添加title属性来实现:

1  2  
<span title="前端界"></span>  </code>

查看更多...

分类:智慧人生 | 固定链接 | 评论: 0 | 查看次数: 3128

GCC 命令行详解 

 1。gcc包含的c/c++编译器
gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什
么意思:))一般c程序就用gcc编译,c++程序就用g++编译

2。gcc的基本用法
gcc test.c这样将编译出一个名为a.out的程序
gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 4934

下载chrome代码并编译

做好发掘工作的第一步就是获取代码并能成功编译调试,我这里只谈在windows环境下的编译,我的操作系统是Windows Server 2008 企业版,其他windows 环境应该没有什么大的区别。其实我写此文的目的可能更多的是加深印象,做个备忘,因为官方描述的编译过程已经比较清楚了,如果你对官方的文档描述更感兴趣,请参考这里

查看更多...

分类:c/c++ | 固定链接 | 评论: 0 | 查看次数: 7222

sed命令详解

 sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。

sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

查看更多...

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 4686

Linux环境变量配置文件

查看系统当前的环境变量:env
查看变量的值:echo $变量名
   设置环境变量: export 变量名=”Hello!”
    清除环境变量:unset $变量名
   常用预定义环境变量:
PATH 当前用户的主目录
HOME 当前用户的可执行文件搜索路径
LANG 系统使用的默认语言
SHELL 系统默认的shell。
 
环境变量设置文件
 
   全局环境变量,对所有Linux用户有效,设置文件:/etc/profile、/etc/bashrc(bash,ksh对应的文件为/etc/kshrc)
   用户环境变量,只对当前用户有效,设置文件为当前用户主目录(~)下的:.profile、.bash_profile、.bashrc(bash,ksh对应的文件为.ksh_profile、.kshrc)
登录shell:作为Linux用户登录到Linux操作系统,或者用su - username切换到其他用户,都为登录shell,环境变量也同时切换。
非登录shell,用su  username,即为非登录shell,环境变量仍为当前用户的环境变量。
    根据是否为登录shell,读取环境变量配置文件是不同的。
登录shell读取环境变量顺序:
/etc/profile —> /etc/profile.d/*.sh —> ~/.bash_profile —> ~/.bashrc —> /etc/bashrc
   非登录shell读取环境变量顺序:
~/.bashrc —> /etc/bashrc —> /etc/profile.d/*.sh 
 
 
环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:source .bash_profile 或者 . .bash_profile
分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 3955

Js异步协作

文档  http://html5ify.com/eventproxy/api.html

先上上段代码

var EventProxy = require("./eventproxy');
 var proxy = new EventProxy();
 var add= function (v1, v2, v3){
       console.log(v1+v2+v3+'');
    };
proxy.assign("v1", "v2", "v3", add);
    clinet1.get("key1", function (err, data) {
        //do something
        proxy.trigger("v1", data);
    });
   clinet2.get("data", function (err, data) {
        //do something
        proxy.trigger("v2", data);
    });
    clinet3.get("l10n", function (err, data) {
        //do something
        proxy.trigger("v3", data);
    });

在JS的编程中经常会有这样的需要: 需要生成一个页面,数据是ajax的,模板也是ajax获取,通常的做法是先发一个ajax请求取数据,等永请求完成再发一个ajax请求取模板,最后再来渲染。

实际上请求数据和请求模板这两个请求同时发起,等两个都返回的时候就可以渲染了。这个eventproxy就是为方便这样做事而写的一个东西。

查看更多...

Tags: js 异步

分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 3646

javascript 函数嵌套调用的效率测试

Javascript中函数嵌套定义给我们开发带来了很多便利,但是他的效率怎么样呢? 我做了一个简单的测试。

//test

function func1(a, b) {
	return (function(a, b){
		return (function(a, b){return a+b})();
	})();
}

function func2(a, b)
{
	var nest1 = function(a, b)
	{
		var nest11 = function(){
			return a+b;
		}
		return nest11(a+b);
	}
	return nest1(a,b);
}


function func3(a, b) {
	function nest1(a, b){
		function nest11(a, b){
			return a+b;
		}
		return nest11(a, b);
	}
	
	return nest1(a, b);
}

function nest44(a, b){
	return a+b;
}

function nest4(a, b){
	return nest44(a, b);
}

function func4(a, b) {
	return nest4(a, b);
}

console.time("start1");
for(var i=0; i<1000000; i++) {
	func1(1,1);
}
console.timeEnd("start1");

console.time("start2");
for(var i=0; i<1000000; i++) {
	func2(1,1);
}
console.timeEnd("start2");

console.time("start3");
for(var i=0; i<1000000; i++) {
	func3(1,1);
}
console.timeEnd("start3");

console.time("start4");
for(var i=0; i<1000000; i++) {
	func4(1,1);
}
console.timeEnd("start4");

本代码用nodejs看执行,得到如下的结果:

# node test2.js 

start1: 190ms

查看更多...

分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 3489

npm常用命令

 npm install <name>安装nodejs的依赖包

例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6

npm install <name> -g  将包安装到全局环境中

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install <name> --save  安装的同时,将信息写入package.json中

项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包

这样代码提交到github时,就不用提交node_modules这个文件夹了。

npm init  会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

npm remove <name>移除

npm update <name>更新

npm ls 列出当前安装的了所有包

npm root 查看当前的安装路径

npm root -g  查看全局的包的安装路径

npm help  帮助,如果要单独查看install命令的帮助,可以使用的npm help install

https://npmjs.org/doc

分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 4376

PHPCMS乱解读之 pc标签的实现

标 题: PHPCMS乱解读之 pc标签的实现
作 者: web开发网[http://www.zeroplace.cn]
时 间: 2013/07/31 12:15:00
链 接: http://www.zeroplace.cn/article.asp?id=855
说 明: 转载请保留本段文字 

最近电脑硬件出了点问题,现正在修理中呀,敢问各位有没有会修主板那种电路的...

 前面在写 PHPCMSV9 乱解读 之 PHPCMS V9的MVC 的时候有写到phpcms模板解析引擎的部分,但只是解释了一下模板是怎么编译的,没有具体讲其中的每个标签的实现细节。实际上多数的标签都很常规,并没有什么好说的。这里我来写写PC这个标签的实现方法。

 首先还是看到libs/classes/template_cache.class.php这个文件中template_parse这个方法,发现里面有一句代码是用来编译pc这个标签的

$str = preg_replace("/\{pc:(\w+)\s+([^}]+)\}/ie", "self::pc_tag("$1','$2', '$0')", $str);

查看更多...

Tags: phpcms

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 7112

Sublime Text2.0.2破解

直接输入注册码就可以了

 

----- BEGIN LICENSE -----

Andrew Weber

查看更多...

分类:破解调试 | 固定链接 | 评论: 0 | 查看次数: 4007

PHPCMS乱解读之phpcmsv9中的缓存

 在 PHPCMSV9 乱解读 之 PHPCMS V9的MVC 这篇文章中有看到一组global.func.php中的函数,但是那时候没有细讲。

/**
 * 写入缓存,默认为文件缓存,不加载缓存配置。
 * @param $name 缓存名称
 * @param $data 缓存数据
 * @param $filepath 数据路径(模块名称) caches/cache_$filepath/
 * @param $type 缓存类型[file,memcache,apc]
 * @param $config 配置名称
 * @param $timeout 过期时间
 */
function setcache($name, $data, $filepath="', $type='file', $config='', $timeout=0) {
	pc_base::load_sys_class('cache_factory','',0);
	if($config) {
		$cacheconfig = pc_base::load_config('cache');
		$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
	} else {
		$cache = cache_factory::get_instance()->get_cache($type);
	}

	return $cache->set($name, $data, $timeout, '', $filepath);
}

/**
 * 读取缓存,默认为文件缓存,不加载缓存配置。
 * @param string $name 缓存名称
 * @param $filepath 数据路径(模块名称) caches/cache_$filepath/
 * @param string $config 配置名称
 */
function getcache($name, $filepath='', $type='file', $config='') {
	pc_base::load_sys_class('cache_factory','',0);
	if($config) {
		$cacheconfig = pc_base::load_config('cache');
		$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
	} else {
		$cache = cache_factory::get_instance()->get_cache($type);
	}
	return $cache->get($name, '', '', $filepath);
}

 

查看更多...

Tags: v9 phpcms 缓存

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 11657

PHPCMSV9 乱解读 之 PHPCMS V9的MVC 

现在的程序设计基本上都讲求MVC,数据与模板分离,单一入口。

这篇文章准先写一写PHPCMSV9的运行和它的MVC是怎么实现的!
 
(习惯问题我喜欢将所有的方法称之为函数,所以下面我如果提到函数的话很可能就是某个类的一个方法)
 

查看更多...

Tags: phpcms v9 php mvc

分类:PHPCMS | 固定链接 | 评论: 0 | 查看次数: 8692

nginx location 不详解

文档地址 

http://nginx.org/en/docs/http/ngx_http_core_module.html#location

 

语法规则: location [=|~|~*|^~] /uri/ { … }

查看更多...

分类:WEB服务器 | 固定链接 | 评论: 0 | 查看次数: 3894

针对JS对象数组的Array排序实现

 这里只实现了冒泡排序和快速排序,一般来说也够用了

 点击下载此文件

/*
 * 对Array进行排序
 */
 
var CMPMETHOD = {
  btTimeCmp: function(a, b) {
    a=a.replace("天", "");
    b=b.replace("天", "");
    var as = a.split("年");
    var bs = b.split("年"); 

    var ayear = as.length > 1 ? as[0] : 0;
    var aday  = as.length > 1 ? as[1] : parseInt(as[0]);

    var byear = bs.length > 1 ? bs[0] : 0;
    var bday  = bs.length > 1 ? bs[1] : parseInt(bs[0]);

    var va = ayear * 365 + parseInt(aday);
    var vb = byear * 365 + parseInt(bday);
    
    if (va > vb ) return 1;
    if (va < vb ) return -1;
    if (va == vb) return 0;
  },
  numberCmp: function(a, b) {
    a = parseFloat(a);
    b = parseFloat(b);
    return CMPMETHOD.commonCmp(a, b);
  },
  commonCmp: function(a, b){
    if (a < b) return -1;
    if (a == b) return 0;
    if (a > b) return 1;
  }
}

Array.prototype.swap = function(i, j) {
  var temp = this[i];
  this[i]  = this[j];
  this[j]  = temp;
}

Array.prototype.quickSort = function() {
  var s=null, e=null, k=null, cmp=CMPMETHOD.commonCmp;
  if (arguments.length == 1) {
    s = null; e = null; k =arguments[0];
  }

  if (arguments.length == 2 ) {
    s = arguments[0];
    e = arguments[1];
  }

  if (arguments.length == 3) {
    s = arguments[0];
    e = arguments[1];
    k = arguments[2];
  }

  if (arguments.length == 4) {
    s = arguments[0];
    e = arguments[1];
    k = arguments[2];
    cmp = arguments[3];
  }

  if (s == null ) s = 0;
  if (e == null ) e = this.length-1;
  if (s >= e) return ;
  var x = s;    //基准索引
  var i, j;

  i = s; j = e;
  while(j > i) {
    for(; j>i; j--) {
      if (cmp(this[j][k], this[x][k]) < 0) {
        this.swap(j, x);
        x = j;
        break;
      }
    }

    for(; i
分类:网络安全 | 固定链接 | 评论: 0 | 查看次数: 5682

一个JS的MD5加密函数

 网上转的,上个月公司的网络好像一直有问题,没能发成博客,今天来发的时候都忘记这个代码是出自哪是的了

 

var hex_chr = "0123456789abcdef";

function rhex(num) {
	str = "";
	for (j = 0; j <= 3; j++)
		str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) +
			hex_chr.charAt((num >> (j * 8)) & 0x0F);
	return str;
}

function str2blks_MD5(str) {
	nblk = ((str.length + 8) >> 6) + 1;
	blks = new Array(nblk * 16);
	for (i = 0; i < nblk * 16; i++) blks[i] = 0;
	for (i = 0; i < str.length; i++)
		blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
	blks[i >> 2] |= 0x80 << ((i % 4) * 8);
	blks[nblk * 16 - 2] = str.length * 8;
	return blks;
}

function add(x, y) {
	var lsw = (x & 0xFFFF) + (y & 0xFFFF);
	var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
	return (msw << 16) | (lsw & 0xFFFF);
}

function rol(num, cnt) {
	return (num << cnt) | (num >>> (32 - cnt));
}

function cmn(q, a, b, x, s, t) {
	return add(rol(add(add(a, q), add(x, t)), s), b);
}

function ff(a, b, c, d, x, s, t) {
	return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}

function gg(a, b, c, d, x, s, t) {
	return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}

function hh(a, b, c, d, x, s, t) {
	return cmn(b ^ c ^ d, a, b, x, s, t);
}

function ii(a, b, c, d, x, s, t) {
	return cmn(c ^ (b | (~d)), a, b, x, s, t);
}

function MD5(str) {
	x = str2blks_MD5(str);
	var a = 1732584193;
	var b = -271733879;
	var c = -1732584194;
	var d = 271733878;
	for (i = 0; i < x.length; i += 16) {
		var olda = a;
		var oldb = b;
		var oldc = c;
		var oldd = d;
		a = ff(a, b, c, d, x[i + 0], 7, -680876936);
		d = ff(d, a, b, c, x[i + 1], 12, -389564586);
		c = ff(c, d, a, b, x[i + 2], 17, 606105819);
		b = ff(b, c, d, a, x[i + 3], 22, -1044525330);
		a = ff(a, b, c, d, x[i + 4], 7, -176418897);
		d = ff(d, a, b, c, x[i + 5], 12, 1200080426);
		c = ff(c, d, a, b, x[i + 6], 17, -1473231341);
		b = ff(b, c, d, a, x[i + 7], 22, -45705983);
		a = ff(a, b, c, d, x[i + 8], 7, 1770035416);
		d = ff(d, a, b, c, x[i + 9], 12, -1958414417);
		c = ff(c, d, a, b, x[i + 10], 17, -42063);
		b = ff(b, c, d, a, x[i + 11], 22, -1990404162);
		a = ff(a, b, c, d, x[i + 12], 7, 1804603682);
		d = ff(d, a, b, c, x[i + 13], 12, -40341101);
		c = ff(c, d, a, b, x[i + 14], 17, -1502002290);
		b = ff(b, c, d, a, x[i + 15], 22, 1236535329);
		a = gg(a, b, c, d, x[i + 1], 5, -165796510);
		d = gg(d, a, b, c, x[i + 6], 9, -1069501632);
		c = gg(c, d, a, b, x[i + 11], 14, 643717713);
		b = gg(b, c, d, a, x[i + 0], 20, -373897302);
		a = gg(a, b, c, d, x[i + 5], 5, -701558691);
		d = gg(d, a, b, c, x[i + 10], 9, 38016083);
		c = gg(c, d, a, b, x[i + 15], 14, -660478335);
		b = gg(b, c, d, a, x[i + 4], 20, -405537848);
		a = gg(a, b, c, d, x[i + 9], 5, 568446438);
		d = gg(d, a, b, c, x[i + 14], 9, -1019803690);
		c = gg(c, d, a, b, x[i + 3], 14, -187363961);
		b = gg(b, c, d, a, x[i + 8], 20, 1163531501);
		a = gg(a, b, c, d, x[i + 13], 5, -1444681467);
		d = gg(d, a, b, c, x[i + 2], 9, -51403784);
		c = gg(c, d, a, b, x[i + 7], 14, 1735328473);
		b = gg(b, c, d, a, x[i + 12], 20, -1926607734);
		a = hh(a, b, c, d, x[i + 5], 4, -378558);
		d = hh(d, a, b, c, x[i + 8], 11, -2022574463);
		c = hh(c, d, a, b, x[i + 11], 16, 1839030562);
		b = hh(b, c, d, a, x[i + 14], 23, -35309556);
		a = hh(a, b, c, d, x[i + 1], 4, -1530992060);
		d = hh(d, a, b, c, x[i + 4], 11, 1272893353);
		c = hh(c, d, a, b, x[i + 7], 16, -155497632);
		b = hh(b, c, d, a, x[i + 10], 23, -1094730640);
		a = hh(a, b, c, d, x[i + 13], 4, 681279174);
		d = hh(d, a, b, c, x[i + 0], 11, -358537222);
		c = hh(c, d, a, b, x[i + 3], 16, -722521979);
		b = hh(b, c, d, a, x[i + 6], 23, 76029189);
		a = hh(a, b, c, d, x[i + 9], 4, -640364487);
		d = hh(d, a, b, c, x[i + 12], 11, -421815835);
		c = hh(c, d, a, b, x[i + 15], 16, 530742520);
		b = hh(b, c, d, a, x[i + 2], 23, -995338651);
		a = ii(a, b, c, d, x[i + 0], 6, -198630844);
		d = ii(d, a, b, c, x[i + 7], 10, 1126891415);
		c = ii(c, d, a, b, x[i + 14], 15, -1416354905);
		b = ii(b, c, d, a, x[i + 5], 21, -57434055);
		a = ii(a, b, c, d, x[i + 12], 6, 1700485571);
		d = ii(d, a, b, c, x[i + 3], 10, -1894986606);
		c = ii(c, d, a, b, x[i + 10], 15, -1051523);
		b = ii(b, c, d, a, x[i + 1], 21, -2054922799);
		a = ii(a, b, c, d, x[i + 8], 6, 1873313359);
		d = ii(d, a, b, c, x[i + 15], 10, -30611744);
		c = ii(c, d, a, b, x[i + 6], 15, -1560198380);
		b = ii(b, c, d, a, x[i + 13], 21, 1309151649);
		a = ii(a, b, c, d, x[i + 4], 6, -145523070);
		d = ii(d, a, b, c, x[i + 11], 10, -1120210379);
		c = ii(c, d, a, b, x[i + 2], 15, 718787259);
		b = ii(b, c, d, a, x[i + 9], 21, -343485551);
		a = add(a, olda);
		b = add(b, oldb);
		c = add(c, oldc);
		d = add(d, oldd);
	}
	return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}

 

分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 6295

一个简单的js模板引擎

自己写来快速生成html代码用的, 因为要求比较简单,也就没用网上的模板解析引擎了

 

//charset gbk

/* 快速模板处理
 * author: gaohuia 2013.06.05
 */

function Render(html, config) {
	/* 模板 */
	this.html = html;

	/* 对默认值进行覆盖 */
	if (config) {
		for (var key in config) {
			this.config[key] = config[key];
		}
	}
}
Render.prototype = {
	/* 配置 */
	config: {
		allowEmpty: false /*设置值是否为空字符*/
	},

	html: "',
	htmlCollection: [],
	varCollection: [],
	onRenderTag: function(tag, rowData) {},
	/*
	 * 渲染所有数据,data被视为一个行数据的集合,如果data是一个对象,则自动作为一个行对象来渲染
	 */
	renderData: function(data) {
		/*
		 * 分析html文本, 提取变量
		 */
		this.prepareHtml();

		if (data instanceof Array) {
			var htmls = [];
			for (var i = 0; i < data.length; i++) {
				htmls.push(this.fetchRow(data[i]));
			}
			return htmls.join('');
		} else if (data instanceof Object) {
			return this.fetchRow(data);
		} else {
			throw "data必需是一个Object或Array的一个实例";
		}
	},
	/*
	 * 将一行视为一个模板渲染的对象
	 */
	fetchRow: function(rowData) {
		var htmlCollection = this.htmlCollection;
		var varCollection = this.varCollection;

		/**/

		var htmls = [];
		for (var i = 0; i < varCollection.length; i++) {
			var varTag = varCollection[i];

			/*
			 * 变量在字典中存在的情况
			 */

			if (rowData.hasOwnProperty(varTag.varName) && rowData[varTag.varName] != null && (rowData[varTag.varName] != '' || this.config['allowEmpty'])) {
				varTag.varValue = rowData[varTag.varName];
				this.onRenderTag(varTag, rowData);
			} else {
				if (varTag.varAttr.hasOwnProperty('default')) {
					varTag.varValue = varTag.varAttr['default'];
				} else {
					varTag.varValue = '';
				}
			}

			htmls.push(htmlCollection[i]);
			htmls.push(varTag.varValue);
		}

		htmls.push(htmlCollection[i]);
		return htmls.join('');
	},
	prepareHtml: function() {
		var html = this.html;
		if (html.length == 0) return;
		var exp = /\{\$(.*?)\}/g;
		var varCollection = [];
		var htmlCollection = [];

		var arr = null;
		var lastIndex = 0;
		while ((arr = exp.exec(html)) != null) {
			var varAttr = {};
			var varFull = arr[1];
			var tagFull = arr[0];

			/*
			 * 对多于空格进替换,方便后面提取标签属性
			 */
			varFull = varFull.replace(/\s+/g, " ");

			var tmp = varFull.split(' ');
			var varName = tmp[0];
			for (var i = 1; i < tmp.length; i++) {
				var attrPair = tmp[i].split('=');
				var attrName = attrPair[0];
				var attrValue = attrPair[1].replace(/[\"\']/g, "");
				varAttr[attrName] = attrValue;
			}

			/*
			 * 一个单独的标签, 用户可以根据标签的属性对标签的值做不同的处理
			 */
			var varSingle = {
				tagFull: tagFull,
				varName: varName,
				varFull: varFull,
				varValue: '',
				varAttr: varAttr
			}

			/* 为变量设置默认值 */
			if (varSingle.varAttr.hasOwnProperty('default')) {
				varSingle.varValue = varSingle.varAttr['default'];
			}

			varCollection.push(varSingle);
			var htmlPiece = html.substr(lastIndex, arr.index - lastIndex);
			htmlCollection.push(htmlPiece);

			/*
			 * 准备下一次标签寻找
			 */
			lastIndex = arr.index + arr[0].length;
		}

		htmlPiece = html.substr(lastIndex);
		htmlCollection.push(htmlPiece);

		this.htmlCollection = htmlCollection;
		this.varCollection = varCollection;
	}
}
分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 4283

清除浮动的简单CSS

 

.clearfix{zoom:1}
.clearfix:before,.clearfix:after{content:"";display:table}
.clearfix:after{clear:both;overflow:hidden}

通常情况下可以使用,有特殊需要的时候不建议

 

分类:web前端 | 固定链接 | 评论: 0 | 查看次数: 3432

各省高校名数据库

这个数据是以 json形式保存的,如果需要导入mysql等其它数据库,需要自行编写导入代码

点击下载此文件

分类:下载专区 | 固定链接 | 评论: 0 | 查看次数: 4345

Linux下chkconfig命令详解[转]

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

使用语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。

参数用法:
 

查看更多...

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 4953

万网的域名查询接口

 万网的东东,速度挺快的,并发也高,支持jsonp。不多说拉,直接上地址

http://pandavip.www.net.cn/check/check_ac1.cgi?domain=wdddfj.com&callback=callback

分类:智慧人生 | 固定链接 | 评论: 0 | 查看次数: 4007
博主QQ: 友情链接请找我
QQ群: 灰色档案
返回顶部 关闭