存档

作者存档

CSS隐藏文字

2010年9月9日 admin 没有评论

(1)
text-indent:-9999px;
定义
text-indent 属性规定文本块中首行文本的缩进。
注释:允许使用负值。如果使用负值,那么首行会被缩进到左边。
注意:在 CSS 2.1 之前,text-indent 总是继承计算值,而不是声明值。
使用text-indent:-9999px; 可以偏移掉文本,但是这个属性只支持block块级元素,而我们想要偏移掉a上的文字时就不行了,当然,你也可以
a{display:block} 但是 a 后的元素就被换成下一行了,更当然,也可以继续转换,但是就有些’冗余’了。
(2)
line-height:0;
font-size:0;
overflow:hidden;
能够很好的隐藏掉文字。
(3)
display:none;
当然,这要给文字加个额外的标签了。

分类: WEB标准 标签: ,

PHP数组函数in_array与array_diff

2010年7月27日 admin 2 条评论

in_array — 检查数组中是否存在某个值
例子:

1
2
3
4
5
6
7
8
9
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
例子:

1
2
3
4
5
6
7
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
 
print_r($result);
?>

用处
判断变量是否在数组中( in_array )
对不在其一数组中的键值进行操作:
例:

1
2
3
4
5
6
7
8
$subArr=array('0'=>'isTitle','1'=>'isUrl','2'=>'isIntro','3'=>'isAuthor','4'=>'isPub_Date','5'=>'isPub_Time', );
$notSelect = array_diff($subArr,$data); //取数组交集,判断没有选中的对象
foreach($notSelect AS $key=>$val)
    {
      $queryNo[]=$val.'=0';
	}
$queryNo=implode(',',$queryNo);
$queryNo= " UPDATE ......   ";
分类: PHP 标签: , , ,

[转]PHP程序61条面向对象分析设计的经验原则

2010年7月14日 admin 没有评论

你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起 。 —– Arthur J.Riel

  (1)所有数据都应该隐藏在所在的类的内部。

  (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。

  (3)尽量减少类的协议中的消息。

  (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。

  (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。

  如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。

  (6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。

  (7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。

  (8)类应该只表示一个关键抽象。

  包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响 .

  (9)把相关的数据和行为集中放置。

  设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。

  (10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。

  朝着稳定的方向进行依赖.
阅读全文…

分类: PHP 标签: ,

Memcached在大型网站中应用

2010年7月11日 admin 没有评论

原文链接:http://tomore.myoow.com/showlog351.html
===================================================
memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端, 同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcached作者对分布式cache的理解和解决方案。memcached完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。
阅读全文…

分类: PHP 标签: ,

高效整洁CSS代码原则 [转]

2010年7月5日 admin 没有评论

CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则:
1. 使用Reset但并非全局Reset
  不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容。但需要注意的是,请不要使用全局Reset:
view sourceprint?*{ margin:0; padding:0; }

  这不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距。在此建议参考YUI Reset和Eric Meyer的做法。我跟Eric Meyer的观点相同,Reset并不是一成不变的,具体还需要根据项目的不同需求做适当的修改,以达到浏览器的兼容和操作上的便利性。我使用的Reset如下:

阅读全文…

分类: WEB标准 标签: ,

XP+Ubuntu双系统重新安装GRUB

2010年7月2日 admin 没有评论

前几天打雷把电脑给”震惊”了。
一个响雷,电脑直接蓝屏,按重启后,电脑进不去系统,由于我装的是XP+Ubuntu8.10双系统, 进去后都没有引导选项,出现 grub error 15 xx错误, 直接泪崩,下午还要进行试答辩,现在进不去系统,着急的不行。
慢慢安静下来分析了下。
不能进入安全模式(自检到23%就死机)
硬件没问题,就是进入不了系统。
好,应该是引导项文件损坏了。重新装一下:
1.找来ubuntu的Live CD.
2.试用Ubuntu而不改变计算机中的任何内容
3.打开终端,用超级用户登录
4.输入”grub”,会出现GRUB命令提示。
5.输入”find /boot/grub/stage1″。(或者 find /grub/stage1 视情况而定)会出现如同”(hd0)”样的结果,在我的电脑上是”(hd0,7)”。在下面的命令中使用您电脑中得到的结果。
6.输入”root (hd0,7)”。
7.输入”setup (hd0,7)”。
8.退出,重启。 OK
终于看到了熟悉的 Grub,鸡动.

分类: 网络资源 标签: ,

毕业设计顺利完成

2010年6月28日 admin 1 条评论

感谢国家。
感谢指导老师郭老师的帮助,我的毕业设计< 教学质量测评系统的设计与实现 >获得了优秀的成绩,而且作为系里公开答辩的论文,我很欣慰,上午郭老师又打电话来推荐我的毕业设计为院级优秀毕业论文,十分感谢老师。
6月28日1:52分,等会要有阿根廷的比赛。
在过几个钟头就要举行毕业典礼,学位授予仪式了,我要毕业了。
我要毕业了。这次是真的毕业了。
十几年的学生生涯结束了。
以后我不在是学生,我要独立了,我该自己撑起我的一片天。
我毕业了。
感谢老师。

ThinkPHP导入Excel

2010年6月22日 admin 2 条评论

前面写过一篇PHP读取EXCEL插入Mysql数据库中,应用phpExcelReader导入, 这次做毕业设计时用的ThinkPHP,有个上传学生信息(excel)插入数据库的功能,其实原理一样,先是上传,然后读取内容,然后根据phpExcelReader的read读取各sheet值然后插入数据库。其代码为:
import.html

1
2
3
4
5
6
7
<form method="post" action="__URL__/import" name="form1" enctype="multipart/form-data">
                <table cellspacing="0" cellpadding="0" border="1">
                    <tr>
		<td ><input type="file" name="myfile" /> <input type="submit" class="mybutton" name="import" value="导入" ></td>
                    </tr>
                </table>
	</form>

StudentsAction.class.php

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class StudentsAction extends Action
{
public function import()
	{   
		 header("Content-Type:text/html; charset=utf-8");
		 Vendor('Excel.reader'); // 加载reader类。
        if(!$this->isPost())
    	{
    		$this->display();
    	}
    	else
    	{
        if($_FILES['myfile']['name']!='')
	     {
			$tmp_file=$_FILES['myfile']['tmp_name'];
			$file_types=explode(".",$_FILES['myfile']['name']);
			$file_type=$file_types[count($file_types)-1];
			if(strtolower($file_type)!="xls"){
				//  echo "<span style=\"color:red;line-height: 25px;\">格式错误 <a href=\"#\" onclick=history.go(-1);>请返回</a> </span>";
			 $this->assign('jumpUrl',__URL__/import);
    		        $msg="格式错误,请重新上传";
    		        $this->success($msg);
			}
			$savePath="Excel/xls/";
			$str = date('Ymdhis');
			$file_name=$str.".".$file_type;
			if(!copy($tmp_file,$savePath.$file_name)){
				//echo "<span style=\"color:red;line-height: 25px;\">上传错误请重试!!<a href=# onclick=history.go(-1);>[返回]</a></span>";
				$this->assign('jumpUrl',__URL__/import);
    		        $msg="上传错误,请重新上传";
    		        $this->success($msg);
 
			}else{
			    $data = new Spreadsheet_Excel_Reader();
				$data->setOutputEncoding('utf-8');
		$data->read("Excel/xls/".$file_name);
					for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) { 
                                    $number=$data->sheets[0]['cells'][$i][1];                               $passwd=$data->sheets[0]['cells'][$i][1];	                       $name=$data->sheets[0]['cells'][$i][2]; 
                                    $catid=$data->sheets[0]['cells'][$i][3];
                                    $sex=$data->sheets[0]['cells'][$i][4];
                                    $tel=$data->sheets[0]['cells'][$i][5];
                                    $home=$data->sheets[0]['cells'][$i][6];
                                    $minzu=$data->sheets[0]['cells'][$i][7];
                                    $Students=D("Students");
				 $info=array(
            	                                               'number'=>$number,
				         'passwd'=>$passwd,
				         'name'=>$name,
				         'catid'=>$catid,
				         'sex'=>$sex,
				         'tel'=>$tel,
				         'home'=>$home,
            	                                                'minzu'=>$minzu,
                                                             );
		           $Students->create($info);
    		            $Students->add();
                   }
		       $this->assign('jumpUrl',__URL__);
    		        $msg="学生信息导入成功";
    		        $this->success($msg);
              	}
	     }
	  }
	}
}
分类: PHP 标签: ,

mysql表类型MyISAM和InnoDB区别

2010年6月15日 admin 没有评论

mysql表类型MyISAM和InnoDB区别

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
1. 4.0以上mysqld都支持事务,包括非max版本。3.23的需要max版本mysqld才能支持事务。

2. 创建表时如果不指定type则默认为myisam,不支持事务。
可以用 show create table tablename 命令看表的类型。

阅读全文…

分类: 随便写写 标签: , ,

编写跨浏览器兼容的 CSS 代码的金科玉律

2010年6月14日 admin 没有评论

作为 Web 设计师,你的网站在各种浏览器中有完全一样的表现是很多人的目标,然而这是一个永远无法真正实现的目标,很多人认为,完美的跨 浏览器兼容并不必要,这样说虽然没错,但在很多情形,一种近似的兼容还是很容易实现的,本文讲的是各种跨浏览器兼容的 CSS 编码准则和技巧。
css
理解 CSS 盒子模型
如果你想实现不需要很多奇巧淫技的跨浏览器兼容的 CSS 代码,透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE 浏览器。

CSS 盒子模型负责处理以下事情:
# 一个 blcok (区块)级对象占据多大的空间
# 该对象的边界,留白
# 盒子的尺寸
# 盒子与页面其它元素的相对位置

CSS 盒子模型有以下准则:
# Block (区块)对象都是矩形 (事实上所有对象都如此)
# 其尺寸由 width, height, padding, borders, 以及 margins 决定
# 如果不设置高度,该盒子的高度将自动适应其包含的内容,加上留白等(除非使用了 float)
# 如果不设置宽度,一个非 float 型盒子水平上将充满其父容器(扣除父容器的留白)

处理 block 级对象时,必须注意以下事项:
# 如果一个盒子的宽度设置为 100%,它就不能再设置 margins, padding, 和 borders,否则会撑破其父容器
# 垂直毗邻的 margin 会引起复杂的坍塌问题,导致布局问题(比如两个垂直毗邻的 Block 对象,上面的对象的 bottom-margin 为 40,下面的对象的 top-margin 为 20,则两个对象的间距将是 40,而不是 60 )
# 拥有相对位置和绝对位置的对象,拥有不同的行为
css box
在 Firefox 的 Firebug 中显示的盒子模型
阅读全文…

分类: WEB标准 标签: , ,