EEDU Blog: 博客 ·  资讯 ·  论坛 ·  留言
登录 新用户? 注册   |  

ahaoxie's blog

订阅博客:

环境生态网站长

服务器应用

IIS 下实现 Drupal 简洁链接

推荐使用第三方程序 ISAPI。这个程序就是模拟 apache 下 rewrite 的功能,语法都完全一样。

首先去官网下载,当然是下载最新版的。其中,名称中有 _lite 的,是免费版本,另一个是收费版本。差别在于,收费版本支持每个目录一个配置文件,而免费版本,只有一个配置文件。

安装完成,打开 IIS 服务管理器,属性里查看 ISAPI 筛选器,不出意外,ISAPI 应该已经自动添加了。

如果没有,就点击添加,名称随意,可执行文件选择 ISAPI_Rewrite3 安装目录下的 dll 就行,例如:C:\Program Files\Helicon\ISAPI_Rewrite3\ISAPI_Rewrite.dll。

接下来就是设置伪静态规则了,直接从 Drupal 程序自带的 .htaccess 复制进来即可。复制关于简洁链接的那一段:

RewriteEngine on

#假设你的程序在根目录
RewriteBase /

#如果在子目录
#RewriteBase /drupal

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

新版本的 ISAPI_Rewrite,至少是 ISAPI_Rewrite3,是 httpd.conf 文件,直接在属性中打开编辑即可。

可能你的 IIS 下运行着很多网站,你只想针对某一个网站进行伪静态,那么最终的代码是这样的:

RewriteEngine on

#假设你的域名是 test.com,只想在这个域名下应用此静态规则。
#实际上里边的规则和 apache 下的 Rewrite 是一样的。
RewriteCond %{HTTP:Host} ^(?:www\.)?test\.com$

#假设你的程序在根目录
RewriteBase /

#如果在子目录
#RewriteBase /drupal

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

理论上,应该可以实现伪静态功能了。那么 IIS 7 呢?IIS 7已经自带类似的功能模块了。

来源:http://www.cmsns.com/group/node/26

发表于: 2010-10-29 00:06 | 全文(查看: 301) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: drupal  新知  

css之自动换行

作者:greengnn

自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法

对于div,p等块级元素
正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行
html
<div id="wrap">正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义</div>
css
#wrap{white-space:normal; width:200px; }

1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word-wrap : break-word ;或者word-break:break-all;实现强制断行

#wrap{word-break:break-all; width:200px;}
或者
#wrap{word-wrap:break-word; width:200px;}

<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

效果:可以实现换行

2.(Firefox浏览器)连续的英文字符和阿拉伯数字的断行,Firefox的所有版本的没有解决这个问题,我们只有让超出边界的字符隐藏或者,给容器添加滚动条

#wrap{word-break:break-all; width:200px; overflow:auto;}

<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

效果:容器正常,内容隐藏

对于table

1. (IE浏览器)使用 table-layout:fixed;强制table的宽度,多余内容隐藏

<table style="table-layout:fixed" width="200">
<tr>
<td>abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss
</td>
</tr>
</table>

效果:隐藏多余内容

2.(IE浏览器)使用 table-layout:fixed;强制table的宽度,内层td,th采用word-break : break-all;或者word-wrap : break-word ;换行

<table width="200" style="table-layout:fixed;">
<tr>
<td width="25%" style="word-break : break-all; ">abcdefghigklmnopqrstuvwxyz 1234567890
</td>
<td style="word-wrap : break-word ;">abcdefghigklmnopqrstuvwxyz 1234567890
</td>
</tr>
</table>

效果:可以换行

3. (IE浏览器)在td,th中嵌套div,p等采用上面提到的div,p的换行方法

4.(Firefox浏览器)使用 table-layout:fixed;强制table的宽度,内层td,th采用word-break : break-all;或者word-wrap : break-word ;换行,使用overflow:hidden;隐藏超出内容,这里overflow:auto;无法起作用

<table style="table-layout:fixed" width="200">
<tr>
<td width="25%"  style="word-break : break-all; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
<td width="75%" style="word-wrap : break-word; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>
</tr>
</table>

效果:隐藏多于内容

5.(Firefox浏览器) 在td,th中嵌套div,p等采用上面提到的对付Firefox的方法

发表于: 2010-10-26 17:37 | 全文(查看: 86) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: css  新知  

Drupal 可以制作的16种类型网站

一共可以做16种类型网站,其中包括电子商务,视频网站,交友网站。几乎涵盖了大多数的主流网站类型。当然能实现这些功能都需要相关功能模块,这也是Drupal这个程序的特点之一。

Drupal 是一个出色的 CMS (内容管理系统),然而,如果你只想做一个简单的传统站点,Drupal 就大材小用了,Drupal 是一个适合开发者使用的平台,它拥有众多模块,插件,扩展,API,以及庞大的开发社区,你可以使用 Drupal 实现几乎任何类型的站点,本文列举了16个著名的站点,这些站点都可以用 Drupal 实现。

1. Digg 站点

可以模仿 Digg 的程序多如牛毛,然而,Drupal 中,只需要一个单独的模块,就可以将 Digg 的所有功能实现,发布内容链接,对链接进行投票,这个模块叫 Drigg

digg

2. 博客站点

这是 Drupal 最基本的功能,Drupal 还包含众多模块,增强其博客功能。

3. 新闻门户

想做一个像 Yahoo! 那样的新闻站点并不是难事,Drupal 有一个非常出色的模块,Views,能轻松实现各种内容创建并在首页以各种方式显示,Views 是 Drupal 不可或缺的模块。

4. 用户社区类站点

在这方面Drupal 远远好过其它 CMS 系统。Drupal 的用户管理功能非常出色,甚至可以直接使用 OpenID,它还拥有多个模块可以连接 Twitter, Facebook

Drupal  还包含一个叫做 Organic Groups 的重要模块,可以实现圈子功能,每个圈子可以拥有自己的首页,模块,主题等。

5. 组织类站点

Drupal 可以轻松实现各种组织类站点,除了前面说过的 Organic Groups 模块,还有很多社区友好类功能,如 donation module 可以实现基于 Paypal 的捐赠功能。

CiviCRM (演示) 是一个用于管理选民关系的 Drupal 模块,特别适合选举类站点,超过 5000 个组织在使用这个模块。

Drupal 另一个重要的同类模块是 Connect,该模块很容易实现请愿,以及基于邮件或传真的竞选活动。

6. Twitter 类站点

虽然我们不需要第二个 Twitter,但 Twitter 一类的微博客应用正如雨后春笋般冒出来。使用 Drupal 的 Microblog 模块,我们可以轻松实现 Twitter 一类的站点。

7. 文件存储与共享站点

Drop.ioBox.net 类文件共享站点可以使用 Drupal 的 Media Mover 模块实现,该模块可以将文件上传到  Amazon S3 云存储。

8. Flickr 类图片共享站点

Flickr and Photobucket 类图片共享站点可以使用 Drupal 的 Image 模块和 View 模块实现,该模块可以让用户上传照片并生成缩略图和相册,用户还可以对照片进行评论。

9. Delicious 书签类站点

用 Drupal 实现 Delicious 书签类站点很简单,有多个模块可以让用户向他们的 Drupal 帐户提交书签。

10. YouTube 类视频站点

FlashVideo 模块可以将上传的文件转换成 Flash,并将它们转移到 Amazon S3 云存储,还可以将这些视频嵌入到页面中。

11. Amazon 类电子商务站点

Drupal 拥有多个电子商务模块,如 EcommerceUbercart。这些模块都很出色,可以实现很好的电子商务类站点。

12. Tumblr 社会媒体聚合类站点

Drupal 的 Activity Stream 模块可以轻松实现社会媒体的聚合,Activity Steam 可以聚合用户在各种社会网络,如 Facebook, Twitter, YouTube, Qik, StumbleUpon 的活动。

13. Blogger 类托管博客站点

如果你想实现诸如 Blogger 或  Wordpress.com 的托管类博客,Drupal 内置的博客模块可以让站点内所有用户都拥有自己的博客。

14. 博客网络

PerformancingWiseBread 一类的博客网络使用的就是 Drupal 的博客模块,并借助 Views 模块控制各个用户的博客展示方式。

15. 新闻聚合类站点

LifeRemix 是一个基于 Drupal 的新闻聚合类站点,可以将各个用户的博客自动聚合到一起。

16. Friendfeed 类站点

Drupal 的 Activity Stream 模块可以轻松实现 FriendFeed 类站点,Drupal 也内置了很好的用户系统。

发表于: 2010-10-21 08:43 | 全文(查看: 92) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: drupal  新知  

Drupal的几个IP限制模块

ipAuthenticator

下载地址http://drupal.org/project/ipAuthenticator

这个模块是将特定的IP或者特定范围的IP限定到特定的角色上,换句话说,只有符合IP规则的用户才具有特定的角色.

这个模块可以用来限定网站只在内部网,或者特定的组织内部的用户访问.能够很好的满足这个问题.

IP Login

下载地址http://drupal.org/project/ip_login

这个模块是根据IP来进行登录,它的原理是启用Profile模块,然后设置一个IP地址字段,最后管理员设置用户的IP.

当用户访问网站时,首先会根据会话或者Cookie里面的信息对ip地址进行检测,如果IP地址存在,那么就自动登录,否则,使用系统自带的登录功能。

这个模块并不能在系统自带的登录功能登陆的时候,加以限制,它只是在登录前首先对IP进行判断。

Login Security

下载地址  http://drupal.org/project/login_security

功能:它向登录功能添加了很多限制,包括限制登录失败的次数,时间等等,以及自动限制特定IP,账号.

发表于: 2010-10-13 22:47 | 全文(查看: 604) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: Drupal  ip  新知  

Drupal 在 IIS7 上的简洁链接配置

Windows 主机使用 IIS7 作为 Web 服务器,并安装有 URL Rewrite 组件,可以实现 Drupal 的简洁链接(Clean URLs)。

首先把 Drupal 的文件解压到主机中,如果不是根文件夹,为避免出错,推荐修改 Drupal 的站点配置文件「/drupaldir/sites/defualt/settings.php」中的「$base_url」一项的值为网站首页的 URL,例如:

$base_url = 'http://abc.com;

然后修改 web.config 文件,如果不存在则新建一个,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
 <!-- Don't show directory listings for  URLs which map to a directory. -->
 <directoryBrowse  enabled="false" />

 <!--
 Caching configuration  was not delegated by default. Some hosters may not delegate the caching
 configuration to site owners by default and that may cause errors when  users install. Uncomment
 this if you want to and are allowed  to enable caching
 -->
 <!--
 <caching>
 <profiles>
 <add extension=".php"  policy="DisableCache" kernelCachePolicy="DisableCache" />
 <add extension=".html" policy="CacheForTimePeriod"  kernelCachePolicy="CacheForTimePeriod" duration="14:00:00" />
 </profiles>
 </caching>
 -->

 <rewrite>
 <rules>
 <!-- rule  name="postinst-redirect" stopProcessing="true">
 <match url="." />
 <action type="Rewrite"  url="postinst.php"/>
 </rule -->

 <rule name="Protect files and directories from prying eyes"  stopProcessing="true">
 <match  url=".(engine|inc|info|install|module|profile|test|po|sh|.sql|postinst.1|theme|tpl(.php)?|xtmpl|svn-base)$|^(code-style.pl|Entries.|Repository|Root|Tag|Template|all-wcprops|entries|format)$"  />
 <action type="CustomResponse" statusCode="403"  subStatusCode="0" statusReason="Forbidden" statusDescription="Access is  forbidden." />
 </rule>
 <rule  name="Force simple error message for requests for non-existent  favicon.ico" stopProcessing="true">
 <match  url="favicon.ico" />
 <action type="CustomResponse"  statusCode="404" subStatusCode="1" statusReason="File Not Found"  statusDescription="The requested file favicon.ico was not found" />
 </rule>
 <!-- To redirect all users to  access the site WITH the 'www.' prefix,
 http://example.com/...  will be redirected to http://www.example.com/...)
 adapt and uncomment the following:   -->
 <!--
 <rule name="Redirect to add www" stopProcessing="true">
 <match url="^(.)$" ignoreCase="false" />
 <conditions>
 <add input="{HTTP_HOST}"  pattern="^example.com$" />
 </conditions>
 <action type="Redirect" redirectType="Permanent"  url="http://www.example.com/{R:1}" />
 </rule>
 -->
 <!-- To redirect all users to access the  site WITHOUT the 'www.' prefix,
 http://www.example.com/... will be redirected to http://example.com/...)
 adapt and uncomment the following:   -->
 <!--
 <rule name="Redirect to remove www" stopProcessing="true">
 <match url="^(.)$" ignoreCase="false" />
 <conditions>
 <add input="{HTTP_HOST}"  pattern="^www.example.com$" />
 </conditions>
 <action type="Redirect" redirectType="Permanent"  url="http://example.com/{R:1}" />
 </rule>
 -->
 <!-- Rewrite URLs of the form 'x' to the form  'index.php?q=x'. -->
 <rule name="Short URLS"  stopProcessing="true">
 <match url="^(.*)$"  ignoreCase="false" />
 <conditions>
 <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false"  negate="true" />
 <add input="{REQUEST_FILENAME}"  matchType="IsDirectory" ignoreCase="false" negate="true" />
 <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false"  negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php?q={R:1}"  appendQueryString="true" />
 </rule>
 </rules>
 </rewrite>

 <!-- httpErrors>
 <remove statusCode="404" subStatusCode="-1" />
 <error  statusCode="404" prefixLanguageFilePath="" path="/index.php"  responseMode="ExecuteURL" />
 </httpErrors -->

 <defaultDocument>
 <!-- Set the default document -->
 <files>
 <remove value="index.php" />
 <add value="index.php" />
 </files>
 </defaultDocument>
 </system.webServer>
</configuration>

以上配置有数个功能,有兴趣的可以研读一下它自带的说明。关于更多如何使用 URL Rewrite 组件的信息可以参考微软官方的文章 Using the URL Rewrite Module

最后再修改 Drupal 的站点配置文件中的「$conf['clean_url'];」一项,将其值设置为1,如果此项不存在,在文件的最后一行增加即可:

$conf['clean_url'] = 1;
发表于: 2010-10-07 23:16 | 全文(查看: 429) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: Drupal  Rewrite  新知  

整合iis和tomcat

需要使用tomcat的连接器,介绍见http://tomcat.apache.org/tomcat-4.1-doc/config/connectors.html

操作系统WindowsServeer2003,tomcat-5.0.28,j2sdk1.4.2_08

测试环境安装路径:

需要有连接器,在本机目录D:\01_XZY\01_StudyNotes\03_Java\03_JAVA常用类包\IIS+Tomcat连接器\JK-推荐

也可以从网上下载http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/ ,目前最新的是isapi_redirect-1.2.9.dll

这里要保证IIS和Tomcat独立都能正常运行,如IIS的http://127.0.0.1和tomcat的http://127.0.0.1:8080/jsp-examples/都能访问

本节不解释Tomcat的配置和运行。

1.在tomcat的bin目录下新建目录jk\
把isapi_redirect-1.2.9.dll拷贝到这个目录下
据网上说这个也可能有权限问题,不过我测试时没有给它设置特别的权限。

2.在tomcat的conf目录中创建2个文件
workers.properties
————————————————————————————————————————workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat 5.5
workers.java_home=C:\Program Files\Java\jdk1.5.0_14
ps=\
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
————————————————————————————————————————
uriworkermap.properties:说明了符合哪些条件的uri才能被转发到tomcat中
————————————————————————————————————————
/*=worker1  #所有访问都转发到tomcat中
/*.do=worker1  #所有*.jsp的才向tomcat转发
/*.jsp=worker1  #所有*.do的才向tomcat转发

可能的设置有:

/jsp-examples/*=worker1  #所有/jsp-examples/*的才向tomcat转发
!/*.gif=worker1 #所有的gif文件都不向tomcat转发,而由IIS处理,注意这表示是所有的而不仅仅是根下的

一个办法:可以把IIS的根和Tomcat的根指向同一个目录(如果有虚拟目录则IIS和Tomcat中都要建立上,并且指向相同的目录),只允许/*.jsp=worker1存在,这样就实现了,所有的*.jsp由tomcat处理,其它的都由IIS处理。
————————————————————————————————————————
3.导入注册表文件IIS.reg
C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5 改成你的 TOMCAT_HOME
内容如下:
————————————————————————————————————————
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect-1.2.9.dll"
"log_file"="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\logs\\isapi.log "
"worker_file"="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\conf\\workers.properties"
"worker_mount_file"="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\conf\\uriworkermap.properties"
"log_level"="realease"
————————————————————————————————————————
双击运行这个文件,导入注册表中
日志被存放在 ,如果把"log_level"="realease"改成"log_level"="debug"日志里会增长的很快,里面写了转发的情况

4.设置IIS默认网站的IsApi筛选器
指向文件C:\Program Files\Apache Software Foundation\Tomcat 5.5\jk\isapi_redirect-1.2.9.dll

确定后是这个样子
保存这些设置

5.在IIS中创建虚拟目录jakarta
jakarta是一个规定的名字,必须这么创建,这个虚拟目录要指向isapi_redirect-1.2.9.dll所在的目录,并且设置为可执行IsApi

6.在IIS的服务器扩展中添加允许isapi_redirect-1.2.9.dll执行
最后应为 允许执行

7.重启IIS和Tomcat进行测试
重启IIS和Tomcat。

这时先看看IIS默认网站的IsApi的tomcat是否为绿色

出处:http://blog.csdn.net/menzi521/archive/2010/03/24/5412817.aspx

发表于: 2010-10-02 00:19 | 全文(查看: 83) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: IIS  Tomcat  新知  

JS在firefox和IE下差异及解决方案

1.document.formName.item(itemName) 问题
说明:IE下,可以使用 document.formName.item(itemName)或 document.formName.elements[elementName];Firefox下,只能使用 document.formName.elements[elementName].
解决方法:统一使用document.formName.elements[elementName].
2.集合类对象问题
说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.
解决方法:统一使用[]获取集合类对象.
3.自定义属性问题
说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.
4.eval(idName)问题
说明:IE下,,可以使用eval(idName)或getElementById(idName)来取得id为idName的HTML对象;Firefox下只能使用getElementById(idName)来取得id为idName的HTML对象.
解决方法:统一用getElementById(idName)来取得id为idName的HTML对象.
5.变量名与某HTML对象ID相同的问题
说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。
解决方法:使用document.getElementById(idName)代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.
6.const问题
说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.
解决方法:统一使用var关键字来定义常量.
7.input.type属性问题
说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.
8.window.event问题
说明:window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用.
解决方法:
IE:

<input name="Button8_1" type="button" value="IE" 
onclick="javascript:gotoSubmit8_1()"/>
...
<script language="javascript">
function gotoSubmit8_1() {
...
alert(window.event); //use window.event
...
}
</script>
IE&Firefox:
<input name="Button8_2" type="button" value="IE" onclick="javascript:gotoSubmit8_2(event)"/>
...
<script language="javascript">
function gotoSubmit8_2(evt) {
...
evt=evt?evt:(window.event?window.event:null);
alert(evt); //use evt
...
}
</script>

9.event.x与event.y问题
说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性.
解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.
10.event.srcElement问题
说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性.
解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.

11.window.location.href问题
说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.
解决方法:使用window.location来代替window.location.href.
12.模态和非模态窗口问题
说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能.
解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口. 例如:var parWin = window.opener; parWin.document.getElementById(Aqing).value = Aqing;
13.frame问题
以下面的frame为例:

<frame src="xxx.html" id="frameId" name="frameName" />


(1)访问frame对象:
IE:使用window.frameId或者window.frameName来访问这个frame对象.
Firefox:只能使用window.frameName来访问这个frame对象.
另外,在IE和Firefox中都可以使用window.document.getElementById(frameId)来访问这个frame对象.
(2)切换frame内容:
在IE和Firefox中都可以使用window.document.getElementById(testFrame).src = xxx.html或window.frameName.location = xxx.html来切换frame的内容.
如果需要将frame中的参数传回父窗口,可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value=Aqing;
14.body问题
Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.
Firefox:

<body>
<script type="text/javascript">
document.body.onclick = function(evt){
evt = evt || window.event;
alert(evt);
}
</script>
</body>
IE&Firefox:
<body>
</body>
<script type="text/javascript">
document.body.onclick = function(evt){
evt = evt || window.event;
alert(evt);
} </script>

15. 事件委托方法
IE:document.body.onload = inject; //Function inject()在这之前已被实现
Firefox:document.body.onload = inject();
有人说标准是:
document.body.onload=new Function('inject()');
16. firefox与IE(parentElement)的父元素的区别
IE:obj.parentElement
firefox:obj.parentNode
解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.
17.cursor:hand VS cursor:pointer
firefox不支持hand,但ie支持pointer
解决方法: 统一使用pointer
18.innerText在IE中能正常工作,但是innerText在FireFox中却不行.
解决方法:
if(navigator.appName.indexOf(Explorer) > -1){
document.getElementById('element').innerText = my text;
} else{
document.getElementById('element').textContent = my text;
}
19. FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
obj.style.height = imgObj.height + 'px';
20. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。
解决方法:
//向table追加一个空行:
var row = otable.insertRow(-1);
var cell = document.createElement(td);
cell.innerHTML = ;
cell.className = XXXX;
row.appendChild(cell);
21. padding 问题
padding 5px 4px 3px 1px FireFox无法解释简写,必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;
22. 消除ul、ol等列表的缩进时
样式应写成:list-style:none;margin:0px;padding:0px;
其中margin属性对IE有效,padding属性对FireFox有效
23. CSS透明
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。
24. CSS圆角
IE:不支持圆角。
FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border- radius- bottomright:4px;。
25. CSS双线凹凸边框
IE:border:2px outset;。
FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;

发表于: 2010-10-01 21:35 | 全文(查看: 35) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: js  新知  

mysql优化入门

在整体的系统运行过程中,数据库服务器 MySQL 的压力是最大的,不仅占用很多的内存和 cpu 资源,而且占用着大部分的磁盘 io 资源,连 PHP 的官方都在声称,说 PHP 脚本 80% 的时间都在等待 MySQL 查询返回的结果。由此可见,提高系统的负载能力,降低 MySQL 的资源消耗迫在眉睫。

1、页面缓存功能:


页面缓存功能降低MySQL的资源消耗的(系统本身就已经考虑,采用生成HTML页面,大大降低了数据库的压力)。

2、mysql服务器的优化

  2.1、修改全站搜索
    修改my.ini(my.cnf) ,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql,再登录网站后台(模块管理->全站搜索)重建全文索引。 
  2.2、记录慢查询sql语句,修改my.ini(my.cnf),添加如下代码:
    #log-slow-queries
    long_query_time = 1 #是指执行超过多久的 sql 会被 log 下来
    log-slow-queries = E:/wamp/logs/slow.log #设置把日志写在那里,可以为空,系统会给一个缺省的文件
    #log-slow-queries = /var/youpath/slow.log linux下     host_name-slow.log
    log-queries-not-using-indexes
  2.3、mysql缓存的设置
   mysql>show variables like '%query_cache%';     mysql本身是有对sql语句缓存的机制的,合理设置我们的mysql缓存可以降低数据库的io资源。
    #query_cache_type= 查询缓存的方式(默认是 ON)
    query_cache_size 如果你希望禁用查询缓存,设置 query_cache_size=0。禁用了查询缓存,将没有明显的开销
    query_cache_limit 不缓存大于这个值的结果。(缺省为 1M)
   2.4、查询缓存的统计信息
   mysql> SHOW STATUS LIKE ‘qcache%’;
     Qcache_free_blocks 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。
    Qcache_free_memory 缓存中的空闲内存。
    Qcache_hits 每次查询在缓存中命中时就增大。
    Qcache_inserts 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。
    Qcache_lowmem_prunes 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。
    Qcache_not_cached 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。
    Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。
    Qcache_total_blocks 缓存中块的数量。通常,间隔几秒显示这些变量就可以看出区别,这可以帮助确定缓存是否正在有效地使用。运行 FLUSH STATUS 可以重置一些计数器,如果服务器已经运行了一段时间,这会非常有帮助。
   2.5、my.ini(my.conf)配置
    2.5.1、key_buffer_size = 256M
    # key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。     对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
    2.5.2、
    max_allowed_packet = 4M
    thread_stack = 256K
    table_cache = 128K
    sort_buffer_size = 6M
    查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
    2.5.3、
    read_buffer_size = 4M
    读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享!
    2.5.4、join_buffer_size = 8M
    联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享!
    2.5.5、
    myisam_sort_buffer_size = 64M
    table_cache = 512
    thread_cache_size = 64
    query_cache_size = 64M
    指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
    # > SHOW VARIABLES LIKE '%query_cache%';
    # > SHOW STATUS LIKE 'Qcache%';
    # 如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
    #如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;
    Qcache_free_blocks,如 果该值非常大,则表明缓冲区中碎片很多
    2.5.6、
    tmp_table_size = 256M
     max_connections = 768
    指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提示,则需要增大该参数值。
    2.5.7、
    max_connect_errors = 10000000
    wait_timeout = 10
    指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
    2.5.8、
    thread_concurrency = 8
    该参数取值为服务器逻辑CPU数量×2,如果服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8
     2.5.9、
    skip-networking
    开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
发表于: 2010-09-29 21:34 | 全文(查看: 47) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  优化  新知  

mojoPortal

mojoPortal 是一个由C# ASP.NET写成的可扩展的跨平台,跨数据库的内容管理系统和WEB应用程序框架。它含有诸如 Blogs, 论坛, 事件日历, Google Maps, 联系表单, ,投票, 调查, 电子商务等等特性。易于学习,易于使用,易于扩展. mojoPortal 注重符合WEB标准和可访问性。mojoPortal装载了30 多种漂亮的皮肤. 拥有html 和 css知识的人将会发现定制皮肤非常简单。

官方:http://www.mojoportal.com
下载:http://mojoportal.codeplex.com/releases/view/52633
发表于: 2010-09-26 15:26 | 全文(查看: 54) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: .net  新知  

Drupal 7.0 Alpha 7 released

Drupal 7.0 Alpha 7 released 已经出来了:

Drupal 7.0 Alpha 7 相关说明: http://drupal.org/drupal-7.0-alpha7

Drupal 7.0 Alpha 7 下载 : http://ftp.drupal.org/files/projects/drupal-7.0-alpha7.tar.gz

发表于: 2010-09-17 16:14 | 全文(查看: 53) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: Drupal  新知  
Page was generated in 22 milliseconds