使用PHP进行异步HTTP请求

Gavin [默认分类]

2011.07.20

使用PHP进行异步HTTP请求

使用JavaScript/Ajax可轻松实现异步HTTP请求,本文介绍使用PHP进行异步HTTP请求。所谓异步HTTP请求是指:HTTP协议基于TCP且是基于状态的,client和server建立连接后发送请求需要等到server处理结束并返回后才可以断开连接。某些情况下,client端只需要发出自己的请求即可,不需要知道server端的响应,这个时候即需要实现client端发出异步HTTP请求。另外,在长耗时应用中(请求的server端任务比较耗时,超过HTTP timeout时间甚至更长),也可以考虑使用异步HTTP请求出发该任务。关于长耗时应用也可以参考该文。


阅读全文»


Linux configure 参数解释

Gavin [Unix/Linux]

2011.07.08

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后再安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
  
  与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成为高手,对基础的熟悉不能超越哦。
  
  为此我转载了一篇关于Configure选项配置的详细介绍,供大家参考。

阅读全文»


JavaScript的DOM属性和方法

Gavin [Web前端技术]

2010.11.17

DOM属性和方法:

document方法:
getElementById(id) 返回指定结点的引用
getElementsByTagName(name) 返回文档中所有匹配的元素的集合
createElement(name) 创建指定类型的新结点
createTextNode(text) 创建一个纯文本结点

element方法:
getAttribute(id) 返回指定属性的值
setAttribute(id,value) 给属性赋值
removeAttribute(id) 移除指定属性和它的值
getElementsByTagName(name) 返回结点内所有匹配的元素的集合

node方法:
appendChild(child) 给指定结点添加一个新的子结点
removeChild(child) 移除指定结点的子结点
replaceChild(newChild,oldChild) 替换指定结点的子结点
insertBefore(newChild,refChild) 在同一层级的结点前面插入新结点
hasChildNodes() 如果结点有子结点则返回true


阅读全文»


jQuery性能优化实践

Gavin [Web前端技术, 默认分类]

2010.10.31

代码优化分多个方面,而性能是主要的优化目标。本文将从对象缓存、DOM操作等14个方面讲解如何优化jQuery代码的执行效率,从而总体提升代码性能。

原文(英文)链接:http://www.artzstudio.com/2009/04/jquery-performance-rules/

1、总是从ID选择器开始继承

在jQuery中最快的选择器是ID选择器,因为它直接来自 于JavaScript的getElementById()方法。
例如有一段HTML代码:

1
2
3
4
5
6
7
8
9
10
11
<div id="content">
  <form method="post" action="#"> 
    <h2>交通信号灯</h2> 
    <ul id="traffic_light"> 
      <li><input type="radio" class="on" name="light" value="red" /> 红色</li> 
      <li><input type="radio" class="off" name="light" value="yellow" /> 黄色</li> 
      <li><input type="radio" class="off" name="light" value="green" /> 绿色</li> 
    </ul> 
    <input class="button" id="traffic_button" type="submit" value="Go" /> 
  </form>
</div>

如果采用下面的选择器,那么效率是低效的。

var traffic_button = $(“#content .button”);
因为button已经有ID了,我们可以直接使用ID选择器。如下所示:

var traffic_button = $(“#traffic_button”);
当然 这只是对于单一的元素来讲。如果你需要选择多个元素,这必然会涉及到 DOM遍历和循环,为了提高性能,建议从最近的ID开始继承。

如下所示:

var traffic_lights = $(“#traffic_light input”);

2、在class前使用tag(标签名)

在jQuery中第二快的选择器是tag(标签)选择器比 如:

$(“head”)
跟ID选择器累时,因为它来自原生的getElementsByTagName() 方法。继续看刚才那段HTML代码:

1
2
3
4
5
6
7
8
9
10
11
<div id="content"> 
  <form method="post" action="#"> 
  <h2>交通信号灯</h2> 
  <ul id="traffic_light"> 
    <li><input type="radio" class="on" name="light" value="red" /> 红色</li> 
    <li><input type="radio" class="off" name="light" value="yellow" /> 黄色</li> 
    <li><input type="radio" class="off" name="light" value="green" /> 绿色</li> 
  </ul> 
  <input class="button" id="traffic_button" type="submit" value="Go" /> 
  </form> 
</div>

比如需要选择红绿单选框,那么可以使用一个tag name来限制(修饰)class ,如下所示:

var active_light = $(“input.on”);
当然也可以结合 就近的ID,如下所示:

var active_light = $(“#traffic_light input.on”);
在使用tag来修饰class的时候,我们需要注意以下几点:
(1) 不要使用tag来修饰ID,如下所示:
var content = $(“div#content”);
这样一来,选择器会先遍历所有的div元素,然后匹配#content。

(2)不要画蛇添足的使用ID来修饰ID,如下所示:
var traffic_light = $(“#content #traffic_light”);


阅读全文»


大小不固定的图片和多行文字的垂直水平居中

Gavin [Web前端技术, 默认分类]

2010.10.13

大小不固定的图片和多行文字的垂直水平居中

一、大小不固定,多行文字的垂直居中

① 单行文字

可能很多人都知道如何让单行文字垂直居中显示,就是使用line-height,将line-height值与外部标签盒子的高度值设置成一致就可以了。例如:
单行文字居中显示测试,css样式为:height:3em; line-height:3em;……

② 多行文字

但是对于外框高度固定,文字大小个数不固定的多行文字呢?
文字可能一行显示,也有可能多行显示;文字可能是小号字体,也有可能是大号的。这时候如何让其垂直居中显示呢?看下面!
这里的文字用来做多行文字垂直居中对齐的测试。
这是第二行文字,您还可以再添加一行文字做测试!
这是隐藏的第三行文字,注意到文字的变化没,依旧垂直居中。




Linux系统信息查看命令大全

Gavin [默认分类]

2010.08.24

最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。想起以前写过的一篇其实Linux这样用更简单,发现这些系统信息查看命令也可以总结出一篇小小的东西来了。

另外这里还有非常多的命令,可以作为参考。

系统

1
2
3
4
5
6
7
8
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量


阅读全文»


Nginx Rewrite 参数和例子

Gavin [默认分类]

2010.08.24

推荐参考地址:
Mailing list ARChives 官方讨论区
http://marc.info/?l=nginx

Nginx 常见应用技术指南[Nginx Tips]
http://bbs.linuxtone.org/thread-1685-1-1.html

本日志内容来自互联网和平日使用经验,整理一下方便日后参考。

正则表达式匹配,其中:

    * ~ 为区分大小写匹配
  • * ~* 为不区分大小写匹配
  • * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
  • 文件及目录匹配,其中:

      * -f和!-f用来判断是否存在文件

    1. * -d和!-d用来判断是否存在目录
    2. * -e和!-e用来判断是否存在文件或目录
    3. * -x和!-x用来判断文件是否可执行

    flag标记有:

      * last 相当于Apache里的[L]标记,表示完成rewrite

    1. * break 终止匹配, 不再匹配后面的规则
    2. * redirect 返回302临时重定向 地址栏会显示跳转后的地址
    3. * permanent 返回301永久重定向 地址栏会显示跳转后的地址

    一些可用的全局变量有,可以用做条件判断(待补全)

    阅读全文»


    [转]JavaScript字符串函数大全

    Gavin [Web前端技术]

    2010.06.11

    经常忘记一些常用的JS函数,干脆保存下来了,便于自己查找,^_^

    JS自带函数

    concat

    将两个或多个字符的文本组合起来,返回一个新的字符串。
    var a = “hello”;
    var b = “,world”;
    var c = a.concat(b);
    alert(c);
    //c = “hello,world”

    indexOf

    返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。

    var index1 = a.indexOf(“l”);
    //index1 = 2
    var index2 = a.indexOf(“l”,3);
    //index2 = 3

    阅读全文»


    浪莎B2C商城:“会员制运营”辟新径

    Gavin [电子商务]

    2009.09.19

    在成立仅一年的时间里,浪莎商城已从成立之初的默默无闻一举成为当前针织品B2C的领先者。目前,浪莎商城已拥有数万名的金领会员及五百名加盟客户,数千家联盟客户,为自身发展奠定了坚实的基础。

    提及国内B2C领域的行业翘楚,人们会自然联想到京东商城、当当、凡客等割据一方的行业大腕们,他们身后的大背景、大资金、大营销、大业绩往往是业内关注的重点话题。然而,在B2C行业巨头们大手笔运作的背后,却也有不少在投入产出与经营规模上难以望其项背的B2C小门小户,依然通过自身的创新经营开拓出了属于自己的市场空间。其中,专注于袜子专卖的浪莎B2C商城,便是一支在细分市场强势崛起的新力量。在成立仅一年的时间里,浪莎商城已从成立之初的默默无闻一举成为当前针织品B2C的领先者。目前,浪莎商城已拥有数万名的金领会员及五百名加盟客户,数千家联盟客户,为自身发展奠定了坚实的基础。


    阅读全文»


    Gilt.com:会员制奢侈品折扣网站

    Gavin [电子商务]

    2009.09.19

    gilt

    gilt

    互联网上,电子商务,一向标榜的主题在于便宜、方便,只是不知何时开始,珠宝、服装为代表的奢侈品纷纷登录互联网,即便是面对少数受众,但也引起购买与消费的热潮,比如我们曾经介绍过的时尚租赁网站BagBorrowOrSteal.com,让你平价享受奢华感觉。当然,这其中也有折扣价格带来的便宜诱惑,也有会员制模式引领的忠实消费,当这二者结合到一起,就是【酷站商业模式】所介绍的Gilt.com——采用会员制模式的奢侈品折扣网站。


    阅读全文»