工作日志
使用font-family实现HTML奇妙的文字图形
把FONT-FAMILY属性值设置为Webdings时,对于不同的ASCII对象将会有怎样的字符显示呢,且看看(请使用以IE为内核的浏览器,其它浏览器的有效性并未验证):
<p><FONT color=”#008000″ style=”FONT-SIZE: 120pt; FONT-FAMILY: Webdings”>$</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>%</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>&</font></p>
<p><FONT color=”#666666″ style=”FONT-SIZE: 120pt; FONT-FAMILY: Webdings”>’</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>(</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>)</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>*</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings”>+</FONT></p>
<p><FONT color=”#FF0000″ style=”FONT-SIZE: 120pt; FONT-FAMILY: Webdings”>,</FONT></p>
<p><FONT style=”FONT-SIZE: 120pt; COLOR: [...]
在HTML中使用frameset
框架便是网页画面分成几个框窗,同时取得多个URL。只需要<FRAMESET><FRAME>即可,面所有框架标记需要放在一个总起的html 档,这个档案只记录了该框架如何分割 ,不会显示任何资料,所以不必放入<BODY>标记,浏览这框架必须读取这档案面不是其他框窗的档案。<FRAMESET>是用来划分框窗,每一窗框由一个<FRAME>标记所标示,<FRAME>必须在<FRAMESET>范围中使用。
<FRAME>
用法:定义一个帧
开始/结束标识:必须/非法
属性:name=”…”定义帧的名字
scr=”…”定义在帧中显示的内容的来源
frameborder=”…”定义帧之间的边界(0或1)
margwidth=”…”设置帧的边界和其中内容之间的间距
margheight=”…”设置帧的边界和其中内容之间的间距化
noresize=”…”使帧的尺寸不能变
scrolling=”…”设置滚动条的表示方式(auto,yes,no)
空:不允许
?
<FRAMESET>…</FRAMESET>
用法:定义在一个窗口中帧的布局
开始/结束标识:必须/必须
属性:rows=”…”设定行的数目
cols=”…”设定列的数目
onload=”…”当载入文档时的内部事件触发器
onunload=”…”当卸载文档时的内部事件触发器
空:不允许
注释:FRAMESET可以嵌套
参数:
COLS=”90,*”
垂直切割画面(如分左右两个画面),接受整数值、百分数,*则代表占用剩余的空间。数值的个数代表分成的视窗数目且以逗号分隔。例如COLS=”30,*,50%”可以切成三个视窗,第一个视窗是30pixels的宽度,为一绝对分割,第二个视窗是当分配完第一及第三个视窗后剩下的空间,第三个视窗则占整个视窗画面的50%宽度为一相对分割。你可自己调整数字。
ROWS=”120,*”
这是横向切割,将画面上下分开,数值设定同上。COLS与ROWS两参数尽量不要放在同一个<FRAMESET>标记中,因Netacape偶然不能显示这类型的框架,尽量采用多重分割,如以上各例。
frameborder=”0″
设定框架的边框,其值只有0和1,0表示不要边框,1表示要显示边框。
border=”0″
设定框架的边框厚度,以pixels为单位。
bordercolor=”#008000″
设定框架的边框颜色。
framespacing=”5″
表示框架与框架间保留的空白的距离。
标记:<FRAME>
功能:设定每一个框窗内的参数属性。
参数:
SRC=”a.html”
设定此框窗中要显示的网页档案名称,每个框窗一定要对应一个网页档案。
NAME=”top”
设定这个框窗的名称,这样才能指定框架来作链接,必须但任意命名。
frameborder=0
设定框架的边框,其值只有0和1,0表示不要边框,1表示要边框。
framespacing=”6″
表示框架与框架间的保留的空白的距离。
bordercolor=”#008000″
设定框架的边框颜色。
scrolling=”Auto”
设定是否要显示卷轴,YES表示要显示卷轴,NO表示无论如何都不要显示卷轴,AUTO视情况而定。
noresize
设定不让使用者可以改变这个框框的大小,如没有设定此参数,使用者可随意地拉动框架改变其大小。
marginhight=5
表示框架高度部分边缘所保留的空间。
marginwidth=5
表示框架宽度部分边缘所保留的空间。
高效的文件自动备份发布-mogilefs
MogileFS由3个部分组成:
第1个部分是server端,包括mogilefsd和mogstored两个程序。前者即是mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等。后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
第2个部分是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。
第3个部分是客户端API,目前只有Perl API(MogileFS.pm),用这个模块可以编写客户端程序,实现文件的备份管理功能。
Linux下GD的安装和配置
GD的主要文件有gd.h, libgd.a等。获取GD源码的地址为:http://www.boutell.com/gd/,获取文件为gd-1.8.3.tar.gz,放于/usr/src目录下。该版本的GD不支持GIF
进入/usr/src:cd /usr/src
解开压缩文件:tar xzvf gd-1.8.3.tar.gz
命令完成后多了一个子目录gd-1.8.3,GD的源码文件就在其中
进入该子目录:cd gd-1.8.3
缺省情况下,GD库编译时并不加入JPEG支持,得修改Makefile文件。修改Makefile文件,使得:
CFLAGS=-O -DHAVE_XPM -DHAVE_JPEG -DHAVE_LIBTTF
LIBS=-lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11
此后,编译并安装:
make
make install
命令完成后,gd.h被拷到/usr/local/include目录下,libgd.a被拷到/usr/local/lib目录下。
如何使用PHP的glob函数管理文件
glob()函数的作用是:以数组的形式返回与指定模式相匹配的文件名或目录。
如果函数执行成功,将以数组的形式返回文件名或目录;如果执行失败,将返回False。
具体形式:glob(pattern,flags)
flags:可用值:
GLOB_MARK - Adds a slash to each item returned?
GLOB_MARK – 给每一个返回的项填加一条斜杠(“/”)[slash]
GLOB_NOSORT - Return files as they appear in the directory (unsorted)
GLOB_NOSORT – 返回目录中的文件[不进行排序]
GLOB_NOCHECK - Returns the search pattern if no match were found
GLOB_NOCHECK – 如果没有与指定的模式向匹配的项,那么就返回这个样式
GLOB_NOESCAPE - Backslashes do not quote metacharacters
GLOB_NOESCAPE – 使用反斜杠(“\”),不将元字符[metacharacter]放入引号内进行引证。
GLOB_BRACE - Expands {a,b,c} to match ‘a’, ‘b’, or ‘c’
GLOB_BRACE – 使{a,b,c}与’a’, ‘b’, [...]
解决一个php下mysql的No database selected问题
最近在修改一个webgame,它的数据库连接很简单,当我将它很Ucenter合并的时候发现,数据库的连接经常出现No database selected,一系列的调试还是找不出眉目,最后查找php手册,发现mysql_select_db和mysql_query的方法
我们常用的连接方式是:
$link = mysql_connect($dbsettings["server"], $dbsettings["user"], $dbsettings["pass"]) or $debug->error(mysql_error().”<br />$sql”,”SQL Error”);
$is_db_selected = mysql_select_db($dbsettings["name"]) or $debug->error(mysql_error().”<br />$sql”,”SQL Error”);
$sqlquery = mysql_query($sql) or print(mysql_error().”<br />$sql<br />”);
这其中的mysql_select_db和mysql_query都没有指定连接,这就是No database selected的问题所在
好的解决办法是
$is_db_selected = mysql_select_db($dbsettings["name"],$link)
$sqlquery = mysql_query($sql,$link)
如何使用php导出XLS文件并提示下载另存
PHP导出Excel格式文件(xls),只需给PHP文件加一个文件头,filename 就是导出的xls文件名,当你点击这个文件的URL时,就会提示你下载xls文件了
header(“Pragma: public“);
header(“Expires: 0“);
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0“);
header(“Content-Type: application/force-download“);
header(“Content-Type: application/download“);
header(“Content-Disposition: attachment;filename=$filename“);
header(“Content-Transfer-Encoding: binary “);
或者
header(“Pragma: public“);
header(“Expires: 0“);
header(“Content-Type: application/force-download“);
header(“Content-Type: application/download“);
header(“Content-Disposition: attachment;filename=$fn“);
header(“Content-Transfer-Encoding: binary “);//二进制
解决discuz论坛无法显示短消息及Access denied for agent changed
discuz论坛无法显示Access denied for agent changed了,登录的时候也提示了这个错误。到disucz上查看帮助,原来是通讯密钥的关系。我重新安装的时候,通信密钥改掉了,恢复后,数据库中的密钥和配置文件中的密钥不同。此时,将应用中的密钥和配置文件中的密钥同步一下就可以了。再查看短消息,OK了!
Access denied for agent changed解决方法:
1.检查DZ目录下config.inc.php文件中define(’UC_KEY’,’通讯密码’)的通讯密码。这里的通讯密码要和UC中的密码一致。
2.检查config.inc.php里define(’UC_APPID’, ‘1′)里的ID。这个ID表明在uc里指定应用程序的应用id为1,uc使用应用来整合各个产品.把这个ID值和UC中的ID值保持一致。
修改了这两处后,Access denied for agent changed提示就消失了。
编译式安装的标准流程
编译式安装的标准流程分为以下四个步骤:
(1) 软件解压 (2)检测环境 (3)编译软件 (4)安装软件
1>解压软件压缩包;
在linux环境中常见的压缩文件格式为bz 与gz ,既可以通过命令行方式,也可以使用图形界面方式解压文件.
2> 检测环境
检测软件的安装环境需要使用以下命令:?
./configure
在检测过程中程序会根据” configure “ 这个可执行脚本预设的步骤检测用户是否安装了编译器 ,支持软件的开发库及文件等, 并在检测结束后生成 ” makefie “文件,为编译做好准备工作,.
由于检测使用的程序不同,其检测结果也不完全相同.一般情况下.检测完毕如发现,便会提示”configure finshed ”表示检测完成. 如果发现未能满足的条件, 程序将会检测出来的问题汇集到一起,步兵报告给用户,
为了避免软件有特殊的要求,在执行 ./configure 命令前,建议先浏览 “ install.txt ” 与 “ readme.txt ” 两个文件的内容, 简单了解软件的特点以及如何配置 configure 以便更好的定制软件,
3>编辑软件
完成检测后,说名系统已经达到软件安装的要求,接下来,需要将源代码编译成可执行程序,
编译时,应执行以下命令 ;
make clean
make
第一行命令用于清除以前编译时留下的垃圾文件. 为了避免因垃圾文件而引起的问题,建议在正式编译前先执行次命令.
第二行命令为编译命令,他会调用检测环境流程中生成的 “makefile” 文件,使用指定的编译器对源程序进行编译,从而产生程序及附属二进制文件.
4 安装软件
软件完成编译后,为了让这些程序存放在系统常用的程序目录里,并且完成添加启动链接等,工作 ,还需要执行以下安装命令,
make install
到此为止,编译式安装终于大功告成了,软件已经安装到指定的目录,在 软件应用 菜单中可以找到已经安装的程序.
使用array_key_exists检查键名或索引是否存在于数组
array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。
key 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。
<?php
$search_array = array(’first’ => 1, ’second’ => 4);
if (array_key_exists(’first’, $search_array)) {
echo “The ‘first’ element is in the array”;
}
?>
array_key_exists() 与 isset() 对比
isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
<?php
$search_array = array(’first’ => null, ’second’ => 4);
// returns false
isset($search_array['first']);
// returns true
array_key_exists(’first’, $search_array);
?>

