iframe 自适应高度

今天碰到一个客户要求在他网站上添加背景音乐,还是要求切换栏目的时候不间断那种。囧……我最讨厌就是浏览有背景音乐的网站了,但好像国内的小企业客户就喜欢这样来。没办法,要不间断播放我只能想到用框架大法了。

但是,用iframe的时候却碰到了个问题:

<iframe src="source.html" width="100%" scrolling="auto" frameborder="0" height="100%">
</iframe>

这样设置的时候,在FF下是OK的,但是在IE下,却是有两个滚动条,这并不是我想要的效果。

最后,在网上找了一段JS代码,将iframe的高度自动设置,问题得到解决。

<script type="text/javascript">
 function SetCwinHeight(){
  var iframeid=document.getElementById("web"); //iframe id
  if (document.getElementById){
   if (iframeid && !window.opera){
    if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight){
     iframeid.height = iframeid.contentDocument.body.offsetHeight;
    }else if(iframeid.Document && iframeid.Document.body.scrollHeight){
     iframeid.height = iframeid.Document.body.scrollHeight;
    }
   }
  }
 }
</script>
<iframe id="web" onload="Javascript:SetCwinHeight()" src="source.html" width="100%" scrolling="no" frameborder="0" height="87">
</iframe>

CHMSEE打开.chm文件显示空白问题的解决

Chmsee是Linux下用来查看chm帮助文件的一个软件,虽然同类的软件有不少,比如Xchm、Gnochm等,但在中文支持方面,Chmsee无疑是我用过的chm阅读器里做的最好的一个。自从不知道什么时候开始,我系统里的Chmsee打开.chm文件时,总是显示不了文件的内容,只是显示一片空白,偶尔还可以看得到目录,但点进去的时候还是空白。因为一直没有什么时间折腾,也没有频繁阅读chm文档,就算偶尔要看,还可以临时用户Xchm来应付着。

但是,昨天碰到一个问题,虽然以前知道在一个chm的电子书里有看到过解决的方法,但用Xchm打开的时候,中文全部成了乱码,根本看不了。只好求助于Google,结果是没有结果!就在我放弃的时候,ls 家目录的时候,看到了一个.chmsee的文件夹,敏感的神经使我感觉到问题可能就在这里,于是决定rm -r .chmsee 。完成后重新打开chm文档,可爱的文字终于出现了,看来真的是人品大爆发了!!

现在想想应该是Chmsee升级到某一个版本之后处理数据的方式发生了变化,但是我家目录.chmsee 下的Chmsee配置和缓存还是使用以前版本的内容,所以导致这个问题的出现,删掉后重新生成就OK了。

升级mpfr3.0和libpng1.4碰到的问题

有一两个月没有升级过系统了,昨天想升级一下,居然有一百多个包要升级!想想反正这两天可以先用公司的电脑来做事,再加上办公室里也有空调,本本应该可以撑得过去,于是就开着机让它自行升级,我就一边做我的事去。结果到到了下班发现还有GCC这个超巨型的没有升级,因为赶着回家,就Ctrl-C中止后把本本带回家了。

margin-top 在Firefox和IE8下的问题

最近,在写CSS样式的时候总碰到一个问题(其实也不是最近才碰到,只不过是最近才比较在意而已),那就是当我对一个层用了margin-top这个属性的时候,这个层本身并没有如预期一样起作用,反而是它的父级应用了这个属性!如下图:

firefox-margin-top-bug

Gentoo下安装与配置Nginx

####1、安装Nginx

为Nginx加入fastcgi(用来支持PHP)和ssl(支持https加密链接)USE标记:

echo "www-servers/nginx fastcgi ssl" >> /etc/portage/package.use

然后emerge nginx:

emerge -av nginx

####2、配置Nginx

Nginx的配置文件位于 /etc/nginx/下。(/etc/nginx/nginx.conf是主要的配置文件)

通常需要修改的是服务器配置部分:

/etc/nginx/nginx.conf

server {
listen          80;
server_name     www.example.com;
access_log      /var/log/nginx/www.example.com.access_log main;
error_log       /var/log/nginx/www.example.com.error_log info;
root /var/www/www.example.com/htdocs;
}

####配置 Fast CGI

如果站点是只有html的静态文件,可以不用CGI支持,如果你想使用动态脚本(如PHP),则要通过CGI来实现。Nginx并不直接支持CGI,因此需要安装一个辅助程序将CGI的输出结果返回给Nginx,这里使用spawn-fcgi。

spawn-fcgi还未进入稳定分支,因此要先加入keywords

echo www-servers/spawn-fcgi ~amd64 >> /etc/portage/package.keywords

然后就可以emerge它了:

emerge spawn-fcgi

安装PHP并加入cgi和force-cgi-redirect支持。

echo dev-lang/php cgi force-cgi-redirect >> /etc/portage/package.use
emerge php

为Spawn-fcgi创建一个启动脚本链接

ln -sf /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi.php

创建spawn-fcgi.php配置文件:

cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.php

配置文件内容:

/etc/conf.d/spawn-fcgi.php

# Copyright 1999-2004 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/spawn-fcgi.confd,v 1.1 2005/02/14 11:39:01 ka0ttic Exp
# $Configuration file for the FCGI-Part of /etc/init.d/lighttpd

## Set this to "yes" to enable SPAWNFCGI
ENABLE_SPAWNFCGI="yes"

## ABSOLUTE path to the spawn-fcgi binary
SPAWNFCGI="/usr/bin/spawn-fcgi"

## ABSOLUTE path to the PHP binary
FCGI_PROGRAM="/usr/bin/php-cgi"

## bind to tcp-port on localhost
FCGI_PORT="65532"

## number of PHP childs to spawn
PHP_FCGI_CHILDREN=5

## number of request server by a single php-process until is will be restarted
PHP_FCGI_MAX_REQUESTS=1000

## IP adresses where PHP should access server connections from
FCGI_WEB_SERVER_ADDRS="127.0.0.1"

# allowed environment variables sperated by spaces
ALLOWED_ENV="PATH USER"

# do NOT change line below
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"

## if this script is run as root switch to the following user
USERID=nginx
GROUPID=nginx

通常要配置的选项是 FCGI_PROGRAM, FCGI_PORT, USERID and GROUPID。

FCGI_PROGRAM : CGI程序的绝对路径。

FCGI_PORT : Nginx监听的端口,可以随便定义,注意不要和其它服务有冲突。

USERID 和 GROUPID :以什么用户和用户组来运行。

配置好后就可以启动这个服务和把它加入到开机自动运行。

/etc/init.d/spawn-fcgi.php start
rc-update add spawn-fcgi default

在Nginx的配置文件加入fastcgi支持,加入以下内容:

/etc/nginx/nginx.conf

index index.php index.html index.htm default.html default.htm
location ~ .*.php$ {
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass  127.0.0.1:65532;
    fastcgi_index index.php;
}

fastcgi_pass 是设置监听 spawn-fcgi 的地址和端口,注意这里的端口应该跟刚才在/etc/conf.d/spawn-fcgi.php里设置的一致。

启动Nginx服务:

/etc/init.d/nginx start

或者把Nginx加入开机启动:

rc-update add nginx default

至此,Nginx的安装完成。

参考:
Gentoo wiki

网站上线了

一直以来,都想有一个真正属于自己的站,用来记录自己的点点滴滴和实验一些自己的想法,但一直都没有成形。以前是因为还有如Blogger等一些很好的Blog服务可以用,可是现在的网络环境已经不允许了,所以,梦想今天实现了,梦想终于今天也开始了!

接下来的日子里,我将会坚持记录自己学习生活中的点点滴滴,或许,N年后再回头看看自己一路走来,会无悔于自己的选择。今天,只是一个开始,路漫漫其修远兮,吾将上下而求索,加油啦!