2009年08月20日

在线定制进度条

Filed under: 未分类 — cmpan @ 2009-08-20 15:17:32

可以在线制作几种风格的进度条.

http://preloaders.net/en/rectangular

国内也有人做:http://ajaxload.info/只是更能比较少

2009年08月19日

让你的Windows Media Player支持播放FLV格式

Filed under: 未分类 — 标签:, , — cmpan @ 2009-08-19 23:27:53

到 http://sourceforge.net/projects/guliverkli/files/FLV%20Splitter/ 下载
也可以在这里下载我打好包并写好bat文件的FLVSplitter

然后解压运行如下命令,你的Windows Media Player即可支持flv格式的文件。

@ECHO OFF
echo 正在复制文件到系统文件夹……
copy FLVSplitter.ax %SystemRoot%\System32 /y
echo 正在注册文件到系统注册表……
regsvr32 /s %SystemRoot%\System32\FLVSplitter.ax
echo 安装结束!
echo.
pause

2009年08月18日

SyntaxHighlighter 很不错的js版的代码高亮显示工具

Filed under: JS — 标签:, — cmpan @ 2009-08-18 14:01:36

SyntaxHighlighter is a fully functional self-contained code syntax highlighter developed in JavaScript. To get an idea of what SyntaxHighlighter is capable of, have a look at the demo page.

The project was started in 2004 and since then has gained a lot of acceptance. Version 2.0 is the new page in history of the project representing a near complete rewrite, clean up, optimization, standard compliance and new features.

项目地址http://alexgorbatchev.com/wiki/SyntaxHighlighter

(全文 …)

2009年08月17日

让IE支持 position: fixed;

Filed under: CSS — 标签: — cmpan @ 2009-08-17 02:39:43

IE默认不支持 position: fixed;的样式,我们需要通过hack来实现该功能。
fixed在左上角的层的样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<style type="text/css">
#fixme {
    /* Netscape 4, IE 4.x-5.0/Win and other lesser browsers will use this */
  position: absolute; left: 20px; top: 10px;
}
body > div#fixme {
  /* used by Opera 5+, Netscape6+/Mozilla, Konqueror, Safari, OmniWeb 4.5+, iCab, ICEbrowser */
  position: fixed;
}
</style>
<!--[if gte IE 5.5]>
<![if lt IE 7]>
<style type="text/css">
div#fixme {
  /* IE5.5+/Win - this is more specific than the IE 5.0 version */
  left: expression( ( 20 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
  top: expression( ( 10 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
}
</style>
<![endif]>
<![endif]-->

固定在右下角的层的样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<style type="text/css">
#fixme {
  /* Netscape 4, IE 4.x-5.0/Win and other lesser browsers will use this */
  position: absolute; right: 20px; bottom: 10px;
}
body > div#fixme {
  /* used by Opera 5+, Netscape6+/Mozilla, Konqueror, Safari, OmniWeb 4.5+, iCab, ICEbrowser */
  position: fixed;
}
</style>
<!--[if gte IE 5.5]>
<![if lt IE 7]>
<style type="text/css">
div#fixme {
  /* IE5.5+/Win - this is more specific than the IE 5.0 version */
  right: auto; bottom: auto;
  left: expression( ( -20 - fixme.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
  top: expression( ( -10 - fixme.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
}
</style>
<![endif]>
<![endif]-->

也可以写成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<style type="text/css">
#fixme {
  /* used by Opera 5+, Netscape6+/Mozilla, Konqueror, Safari, OmniWeb 4.5+, iCab, ICEbrowser,IE7 */
  position: fixed;
  right: 20px;
  bottom: 10px;

  /* IE 4.x-6.x,ie8 will use this */
  _position: absolute;
  _right: auto;
  _bottom: auto;
  _left: expression( ( -20 - fixme.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
  _top: expression( ( -10 - fixme.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
}
</style>

2009年08月14日

一些常用兼容性CSS技巧记录

1
2
/* 1 鼠标经过指针显示为手型 */
cursor:pointer;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* 2 透明层里的层都透明,要把不透明的层放在透明层外 */
.opaque {
/* for IE8 */
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
/* for IE5-7 */
filter: alpha(opacity=50);
/* for all other browsers */
opacity: .5;
}
/* 3 长单词自动换行(没有任何空格的英文字符和半角标点符号串) */
* {word-wrap:break-word; word-break:break-all;}
/* IE6下对多有标签起作用,ff3.5下只在定宽容器标签中(比如p、div)有效,
而非容器标签或非定宽容器标签中无作用 */


/* 4 li在ie和firefox下的兼容性问题 */
/*
两点因素:
1).在ie下如果为li指定高度可能会出现排版错位,用line-height即可。
2).ie下list-style-position默认为inside,firefox默认为outside,css中指定为outside即可解决兼容性问题。
*/


/* 5 IE加注释段尾重影bug */
在段末加入
<p style="padding: 0; margin: 0;">&nbsp;</p>

/* 6 使链接点击没有边框 */
a:focus {outline:none}  /* ie8+, 其他浏览器 */
<a href=”#” hidefocus=”true” >hidefocus</a>  /* ie6/7 */
/* 不要使用<a href="#"  onfocus="this.blur()">this blur</a>,
否则按Tab键到该链接光标将跳回到第一个链接,影响盲人阅读 */

 

层垂直居中于浏览器窗口

Filed under: CSS — 标签: — cmpan @ 2009-08-14 10:01:08

思路:首们需要position:absolute;绝对定位。而层的定位点,使用margin负值的方法。负值的大小为层自身宽度高度除以二。
  如:一个层宽度是400,高度是300。使用绝对定位距离上部与左部都设置成50%。而margin-top的值为-150。margin-left的值为-200。这样我们就实现了层垂直居中于浏览器的样式编写。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>mb5u.com</title>
<style type="text/css">

div {
    position:absolute;
    top:50%;
    left:50%;
    margin:-150px 0 0 -200px;
    width:400px;
    height:300px;
    border:1px solid red;
    }

</style>
</head>
<body>
<div>mb5u.com - Div CSS布局 常见问题</div>
</body>
</html>

兼容各浏览器的透明效果

Filed under: CSS — 标签:, — cmpan @ 2009-08-14 09:30:27
1
2
3
4
5
.opaque {
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";  /* for IE8 */
    filter: alpha(opacity=50);  /* for IE5-7 */
    opacity: .5;  /* for all other browsers */
}

IE下高度100%的绝对定位自适应布局

Filed under: CSS — cmpan @ 2009-08-14 09:19:24

把body看作是一个容器,做为内部对象的上层标签,他的高度设置为100%是关键。
#box 高度100%的样式
html,body { height:100%;}
#box { position: absolute; height:100%; background:#000;}

2009年08月13日

让FCKEditor 2.6.4.1 能插入 视频和音频

Filed under: JS » 未分类 — 标签:, — cmpan @ 2009-08-13 14:17:10
一、分别打开:editor/js/fckeditorcode_ie_1.js和/editor/js/fckeditorcode_gecko_1.js
找到程序代码 .swf
改成 .(swf|mov|qt|avi|wmv|asf|wma|mid|mp3|mpg|rm|ra|rmvb|ram)

二、打开/editor/dialog/fck_flash/fck_flash.js

1、增加程序代码

// DP 20090813
function WinPlayer(url){
    var r, re;
    re = /.(avi|wmv|asf|wma|mid|mp3|mpg)$/i;
    r = url.match(re);
    return r;
}

function RealPlayer(url){
    var r, re;
    re = /.(rm|ra|rmvb|ram)$/i;
    r = url.match(re);
    return r;
}

function QuickTime(url){
    var r, re;
    re = /.(mov|qt)$/i;
    r = url.match(re);
    return r;
}

function FlashPlayer(url){
    var r, re;
    re = /.swf$/i;
    r = url.match(re);
    return r;
}

2、替换程序代码
	SetAttribute( e, 'type'			, 'application/x-shockwave-flash' ) ;
	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
为

	if(WinPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'		, 'application/x-mplayer2' ) ;
		SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
	}
	if(RealPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'		, 'audio/x-pn-realaudio-plugin' ) ;
		SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
	}
	if(QuickTime(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'		, 'video/quicktime' ) ;
		SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
	}
	if(FlashPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'	, 'application/x-shockwave-flash' ) ;
		SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
		SetAttribute( e, 'menu',  GetE('chkMenu').checked ? 'true' : 'false' );
		SetAttribute( e, 'play',  GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
		SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
	}

替换程序代码
	SetAttribute( e, 'type'		, 'application/x-shockwave-flash' ) ;
为

	if(WinPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'	, 'application/x-mplayer2' ) ;
	}
	if(RealPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'	, 'audio/x-pn-realaudio-plugin' ) ;
	}
	if(QuickTime(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'	, 'video/quicktime' ) ;
	}

	if(FlashPlayer(GetE('txtUrl').value)!=null){
		SetAttribute( e, 'type'	, 'application/x-shockwave-flash' ) ;
	} 

三、修改D:\yulans\web\js\fckeditor\editor\filemanager\connectors\php\config.php

$Config['AllowedExtensions']['Flash']	= array('swf','flv') ;

改成

$Config['AllowedExtensions']['Flash']	= array('swf','flv','mov','qt','avi','wmv','asf','wma','mid','mp3','mpg','rm','ra','rmvb','ram') ;

2009年08月5日

PHP框架深度解析

Filed under: PHP — 标签:, , — cmpan @ 2009-08-05 21:33:54

PHP成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP 框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。

PHP框架是什么?

PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速应用开发( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的数据库交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的代码。

通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自工作。从本质上讲,这使得用PHP编码更快更简单。

为什么要使用PHP框架?

开发人员使用PHP框架的好处很多,其中之一是加快开发进程。在类似项目中重用代码将为开发者节省大量的时间和精力。框架为执行繁琐的代码任务提供预建模块,因此,开发人员可以把时间花在实际应用的开发上,而不是每一个项目都重新构建基础功能。

稳定是开发者使用框架的另一个重要原因。虽然简单是PHP最大的优点,很多人也因为这一点喜欢使用这个脚本语言,但它同时也是PHP最大的缺点。一些开发者尤其是初学者很容易写出低劣的代码,而自己却没有意识到。使用PHP,应用往往会将静态工作加倍,不知不觉中您可能已经在编码时打开了一个大的安全漏洞,因此可能会受到攻击。重要的是要记住,PHP是一个非常宽容的语言,因此,更重要的是在编程时确保封闭任何漏洞,即便应用看起来可以正常工作。

最后,PHP框架的使用是非常广泛的,而且有许多不同的框架可供选择。许多开发者会选择知名的框架,是因为它的知名度、其开发团队的巨大支持,而且他们可以通过论坛/社区来与其他使用相同框架的开发者交流,当然你也可以开发自己的框架。这里提醒一下,首先应该检查你的项目来决定是否应该使用一个框架。你应该问自己:它会节省你和其他使用者的时间和精力么?应用程序的性能会更好么?是否会提高稳定性?如果这些问题你的回答都是是,那么你就该为你的项目选择一个合适的框架了。

何时使用PHP框架?

这是一个无论有经验的开发者还是初级开发者都共有的问题,而且这个问题也确实没有直接的回答。对于许多初学者来说,一个框架将提供很多简便和稳定,因此应该尽可能地使用PHP框架。这将有助于减少或消除不良编码,加快开发进程。

另一方面,许多有经验的PHP程序员将框架视为不知道如何写出好的、干净的代码的低级程序员的工具。姑且不论这一点的真假,起码毋庸置疑的是PHP框架是一个可以用来节省时间并强化自己编码的工具。

当工作的项目时间紧迫时,使用PHP框架就有很多好处,可以大大加快编码进程,因此所以如果你时间紧迫,使用PHP框架就是很好的选择。另一个例子是,当你所做的项目有大量代码时,也应当考虑使用PHP框架,因为这将有助于减少工作的繁琐度。

寻找一个什么样的PHP框架?

有许多可供开发者选择的PHP框架,甚至还可以创建自己的框架,尽管只建议PHP专家级这样做。当寻找你最需要的PHP框架时,重要的是要搞清楚谁将自始至终使用或修改你的应用,如果是有很多人做这件事情,那么最好使用流行的PHP框架,这样大部分开发者都不会陌生。另一方面,如果你想构建Web应用程序为你个人使用,那就最好选择令你满意的PHP框架,而不在乎它在开发者社区中是否流行。

选择PHP框架的参考因素有很多,包括:容易使用、快速开发、性能、开发者中的流行程度、强大的功能,技术支持、论坛等。当你第一次选择PHP框架时,为了找到一个适合你需求的最佳选择,建议多尝试几个。每个框架都有所不同,并有不同的长处和短处。例如Zend框架由于V3和多样的功能、并且有一个广泛的支持系统,因而它流行了这么久。相反, CakePHP是另一个晚于Zend框架的PHP框架,相应的支持系统也比较少,但更方便和易于使用。

正如你所看到的,每种类型的PHP框架都有自己的优点,因此,最好反复试验以找出其中哪个最适合你的需要。另一个选择PHP框架的有效方式是咨询你的同事,看看开发社区里选择哪个。那些真正使用过具体框架的能够明确地告诉你它的易用性、功能、支持可用性、社区内的情况,当然可能还有不足。

使用PHP框架最常见的错误

任何类型的编程中都可能有错误,但是PHP框架有助于显著限制这些错误。重复编码似乎加剧了这种错误,而框架则解决了这一问题。尽管如此,在使用任何PHP框架时仍要注意。例如,除非你是一位PHP编程的专家,否则你应该总是选择使用流行的框架,有大量的支持和积极的用户群。很多框架的支持很少甚至没有,它们可能是被PHP知识有限的个别开发者所创建的。这些类型的框架,可能会使你的应用程序无法正常运行,更糟糕的是,可能会给你的网站带来灾难性的安全问题。

另一些常见的错误是,不能确保你的数据库和Web服务器符合特定框架。例如,Seagull PHP Framework建议如下配置:

* PHP :最低是PHP 4.3.0,PHP 5.1.1或者更高版本更佳,避免任何5.0.x版本中的东西;

* MySQL的:支持MySQL的4.0.x,4.1.x和5.0.x,也可以使用3.23.x;

* Apache:Seagull支持1.3.x以及Apache的2.x系列。

如果你没有满足这些要求,您将无法在你所选的框架中看到最好的性能。即使你是PHP的专家,你也应该经常复习框架的说明文档,确认兼容性后再尝试。

类似于前面提到的常见的错误,不遵循建议的安装进程的话,你的PHP框架也可以给你带来一些令人头疼的问题。以Seagull 为例,在Seagull的wiki有一个详细的框架安装过程,其中有几个关键步骤,很容易被不小心或不知情的开发者忽视。因此你要花费时间来安装框架并遵循安装说明。

最好的PHP框架有哪些?

过去的几年中,因为PHP已发展成为大多数开发者选择的脚本语言,因而也产生了大量的PHP框架。什么是最好的PHP框架,仁者见仁智者见智,因为并非每一个框架都能够适合每一个人。以下是5个最佳和最流行的PHP框架选择:

The Zend Framework

Zend Framework在开发者社区中很有人气,其重点是Web 2.0风格的应用程序。由于其大量的党羽、广泛的支持和积极的用户群,Zend被称为PHP Company。Zend即使不是当今最流行的PHP框架,也绝对是之一。它强大的功能能够满足企业级的需求,当然它的使用也需要具备广泛的PHP知识。

CakePHP

从初学者到高级PHP开发者,CakePHP都是一个很棒的选择。它与 Ruby on Rails设计的原则基本相同,主要集中在快速开发方面使其成为一个快速应用开发的优良框架。其迅速增长的支持系统、简单和可扩展性使CakePHP成为当今最热门的PHP框架。

Symfony

Symfony针对的更多的是高级开发者,也即创建企业级应用的开发者,尤其是Askeet和Yahoo! Bookmarks。这个开源的PHP框架功能全面,但它的主要缺点是速度慢于其他框架。

CodeIgniter

CodeIgniter以其易用性、性能和速度而闻名。不同于Symfony,CodeIgniter主要针对的是与人共享主机的开发者,或者为小型设备寻找PHP框架的开发者。它提供简单的解决办法,而且有一个扩展库包括视频教程、论坛、用户指南和wiki。初学者应该考虑使用 CodeIgniter 。

Seagull

Seagull是一个稳定的用于构建web、命令行和GUI应用的PHP框架。这是一个非常易于使用的框架,非常适合初学者到高级程序员。对于初学者,Seagull有一个范例应用库,可以自己设定后满足自身需求;对于高级开发者,Seagull提供了众多选择包括最佳实践、标准、模块化的代码基,这些都可以帮助快速简单地构建Web应用程序。Seagull有一个活跃的开发者社区,内有大量的支持性文档和说明。

概括

PHP框架为各种技术等级的开发者减少了重复编码的需求、加快了开发进程,并在创建web应用时确保正确的编码。这不仅加快了富应用开发的进程,同时也通过减少代码的安全漏洞而增强了PHP的安全性。

虽然一些专家级PHP程序员觉得没有必要使用框架开发Web应用程序,但PHP框架仍然可以是快速开发的优秀解决方案,比如在工期很紧的情况下。从初级到中级开发者,框架可以提高PHP的学习,同时促进良好的代码编写和减少坏代码。

今天有很多的PHP框架可用,因此开发者肯定能从中找到一个适合自己的框架:功能、支持、速度、可扩展性等。开发者广泛使用的一些顶尖的PHP开发框架包括: Zend Framework,CakePHP,Symfony,Codeigniter以及Seagull。

转自http://yinxlscut.blogbus.com/logs/43513030.html

Copyright © 2009 流水孟春 版权所有
Web技术,LAMP,Nginx,Web2.0,前端技术
Powered by WordPress & UI Designed by 流水孟春