Apr 30, 2009
如果您是第一次读我的文章,你可能想订阅到我的 RSS feed. 多谢您的光顾!CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明。
CSS技巧
1.div的垂直居中问题
vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
2. margin加倍的问题
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline;
例如:
<#div id=”imfloat”>
相应的css为
#imfloat{
float:left;
margin:5px;/*IE下理解为10px*/
display:inline;/*IE下再理解为5px*/}
3.浮动ie产生的双倍距离
#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}
这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);
#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table;
4 IE与宽度和高度的问题
IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。
比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:
#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
5.页面的最小宽度
min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到 <body> 标签下,然后为div指定一个类,然后CSS这样设计:
#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? “600px”: “auto” );}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。
6.DIV浮动IE文本产生3象素的bug
左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
#box{ float:left; width:800px;}
#left{ [...]
Apr 29, 2009
1 df一下,看系统装在哪块盘上
2 /usr/sbin/debugfs 盘块
3 lsdel找到需要恢复的文件
4 dump <nodeid> 位置
OK文件恢复了.
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 29, 2009
在utuntu服务器上装mysql似乎很简单,就一行命令:
apt-get install mysql-server
然而当我想使用远程用户登录这个mysql服务器的时候,耗了老力气了。
思路:新建一个用户
GRANT ALL *.* TO aaa@% IDENTIFIED BY ‘bbb’ WIDTH GRANT OPTION;
用户建好了,远程试一下吧:
mysql -u -h -P -p…
链接报错。
脑子猛然一闪,忘了flush privileges了:)
flush privileges 顺利执行,try again
结果还是不成。难道是网络不通?
telnet host port
网络果真不通,为什么呢?
查看一下mysql的配置吧…..
在my.cnf找到了这么一行
bind-address = 127.0.0.1
难道他只针对本机开放?于是改成了线上服务ip.
try again: telnet host port
通了,
mysql -u -h -P -p也成了。
O ye!
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 29, 2009
碰到这样一件怪事,使用php来处理文件,见如下代码:
$fp = fopen(’aaa’, ‘r’);
while (!feof($fp)) {
$line = fgets($fp);
preg_match($pattern, $line, $arr_output);
//print the some fields of output.
……..
}
执行效果完全错乱了,什么原因?
一开始想到的是不是.链接有问题(field1 . fieldn);
于是改成了sprintf,可效果依旧错乱。
打开文件也没有发现什么异常。
经过几番努力,最终发现了症节所在,原来在各个系统上换行不一致\r\n或\r\r\n或\n,
实际这种各个系统间的不一致现象是普遍存在的,所以对文件处理要格外注意。
正是因为这些换行不一致引起了打印错乱。
最终对该文件做了一遍换行处理,问题解决。
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 29, 2009
看了wordpress后,有一些感想。平时只注意到网站架构的水平切分,如css(样式) + smarty(前端页面)+ lighttpd + apache + php + memcached + server + mysql,这样的确方便了系统的任务划分;但是看了wordpress后,觉得又有了新的发现,在结构上可以从新考虑一下网站的架构。
在编程上,c => c++/java => 构件思想 => aop标志着人们对程序理解的进步,另一方面,人们对于做网页方面html=> dhtml + javascript => css + html + script …也标志着对于网页制作方面的进步。但是,有心的人可以发现对于网页/网站的进步远没有达到c=>aop高度。因为各种架构容易受分层思想的限制。
如果能将分层和构件化思想并行使用的化,效果将是另一番模样。
页面每一个模块(div)作为一个独立的构件存在,整个页面是一个容器,然后再在构件的基础上进行分层设计,这样无论对于大小系统都将是一个挑战性的突破
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 28, 2009
在前面两篇文章讨论了VirtualHost相关配置,实际上当脚本程序(php, cgi等)采用cgi服务形势运行的时候,
虚拟主机的多服务并行同样适用。
只需要在对应VirtualHost内部添加FastCGIExtenalServer项即可。
<VirtualHost *:80>
ServerAdmin webmaster@jiuansafe.cn
….
FastCGIExternalServer /home/blog/blog/index.php -host 127.0.0.1:8080
</VirtualHost>
即可使用,多个虚拟主机,同样配置。
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 27, 2009
见如下代码:
grep uri:.*total.* */log/aaa.log.20090331* | sed -n ’s/^\(.*\):NOTICE.*logid:\([0-9]*\).*total:\([0-9]*\).*$/\3\t\2\t\1/p’ | sort -n
说明:
grep: 将aaa.log.20090331文件的含有total字段的行拉出来
sed: 将logid和total个数取出来,放在管道中,传给sort使用,这里要特别注意\1, \2的使用。
sort: 将sed数据结果进行排序,其中-n是按数字排序。如果加个-u选项,则加上了除重功能。
多谢
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 25, 2009
对于一个网站来讲,如果能实现url自已管理是十分有意义的,比如:
/bbs对应~/jiuanblog/bbs/index.php是十分有意思的,一方面可以对外隐藏实现,
即使用网站的用户不知道您的网站是php还是jsp、asp等具体实现,这样对安全是十分有益的。
比如我们想对资源文件不进行重定向,但对实际页面请求就对其进行重定向,则我们可以用如下配置:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^.*$ /bbs
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg|\.psd)
RewriteRule ^/(.*)$ $1/index.php
说明:
RewriteEngin on打开Rewrite引擎
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^.*$ /bbs下然后继续后续配匹
对于主页的访问,重定向到bbs下的
RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg|\.psd)
RewriteRule ^/(.*)$ $1/index.php
对于非资源文件,则映射到该路径下对应的php文件。
另外还有-f -d等参数,可以判断文件是否存在等。
相关参考:
http://blog.csdn.net/zfrong/archive/2008/11/06/3237190.aspx
http://blog.csdn.net/zfrong/archive/2008/11/06/3237190.aspx
thx
张久安
If you enjoyed this post, make sure you subscribe to my RSS feed!
Apr 25, 2009
自已租了一台主机,装了一个apache,但问题也随之页来?如何让我的一个主机对外提供多个服务呢?首先我想到的是端口,比如有两个blog: blogA; blogB,一个blogA监听80端口,另一个blogB则监听8080端口,这样的确是一个不错的办法,我也轻页易举的实现了这样的配置。如下:
NameVirtualHost *:80
Listen 80
NameVirtualHost *:8080
Listen 8080
<VirtualHost *:80>
ServerAdmin webmaster@jiuansafe.cn
DocumentRoot /home/blog/blog
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /home/blog/blog>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values [...]