LoadRunner相关时间函数

[不指定 2006/11/30 16:02 | by ipaddr ]
将以下内容,写成ipaddrtime.h,放在LoadRunner目录,就可以在Scripts里面
#include "../ipaddrtime.h"
再调用这些函数.
[code]
typedef long time_t;
struct tm {
      int tm_sec; /* seconds after the minute - [0,59] */
      int tm_min; /* minutes after the hour - [0,59] */
      int tm_hour; /* hours since midnight - [0,23] */
      int tm_mday; /* day of the month - [1,31] */
      int tm_mon; /* months since January - [0,11] */
      int tm_year; /* years since 1900 */
      int tm_wday; /* days since Sunday - [0,6] */
      int tm_yday; /* days since January 1 - [0,365] */
      int tm_isdst; /* daylight savings time flag */
#ifdef LINUX
      int tm_gmtoff;
      const char *tm_zone;
#endif
};


struct tm *globalGmt;

//取得与当前日期相差tDays天数的日期,将日期以字符串的形式存入tDate
void getDate(char * tDate,int tDays)
{
  time_t tmpTime=0;
  //取得当前的时间截
  time(&tmpTime);
  //加上tDays天,tDays可以是负数
  tDays=tDays*24*60*60;
  tmpTime=tmpTime+tDays;
  //转成tm的格式
  globalGmt=(struct tm *)gmtime(&tmpTime);
  //输出
  sprintf(tDate,"%i-%02i-%02i",globalGmt->tm_year+1900,globalGmt->tm_mon+1,globalGmt->tm_mday);
}

//将时间截转换为字符串
genDate(char * tDate,time_t tTime)
{
  struct tm *tGmt;
  tGmt=(struct tm *)gmtime(&tTime);
  sprintf(tDate,"%i-%02i-%02i",tGmt->tm_year+1900,tGmt->tm_mon+1,tGmt->tm_mday);
}

//将时间inDate加上tDate,并将结果输出到outDate
copyDate(char * inDate,char * outDate,int tDate)
{
  char strTmp[50];
  int year=2006;
  int month=10;
  int day=1;

  struct tm date;
  time_t t;

  char * strSep="-";
  int tokenNum=0;
  char * token;

  //parse date
  strcpy(strTmp,inDate);
  token=(char *)strtok(strTmp,strSep);
  if(!token)
  {
    return 0;
  }
   while(token!= NULL)
  {
    if (tokenNum==0)
    {
      year=atoi(token);
    }
    if (tokenNum==1)
    {
      month=atoi(token);
    }
    if (tokenNum==2)
    {
      day=atoi(token);
    }

       token=(char *)strtok(NULL,strSep);
    tokenNum=tokenNum+1;
   }

  date.tm_year = year-1900;
  date.tm_mon = month-1;
  date.tm_mday = day;
  date.tm_hour = 10;
  date.tm_min = 0;
  date.tm_sec = 0;

  t = mktime(&date);
  t = t + 24*60*60*tDate;

  genDate(outDate,t);
}
//以上函数可改写成从字符串到t_time类型的转换函数.[/code]

Windows下的PHP开启DomXML

[不指定 2006/11/30 11:47 | by ipaddr ]
Windows下的PHP开启DomXML

DomXMl需要iconv的支持,所以,开启DomXML需要将PHP目录下的Dlls/iconv.dll拷到windows目录,再在php.ini里面打开
extension=php_domxml.dll

此外,开启PHP的iconv,也是同样道理,需要先将iconv.dll拷到windows目录.

CVSNT在Linux下面的安装和配置

[不指定 2006/11/25 12:56 | by ipaddr ]
CVSNT在Linux下面的安装和配置

CVSNT是一个非常不错的CVS软件,通常是在Windows平台下使用,但Linux,Soliras等平台下也可以使用,并且有完全可替找Linux平台下的cvs软件,同时,还有些特殊的功能.
本文主要讲述如何在Linux下安装CVSNT
CVSNT的rpm的安装包,您可以在这里下载:
http://www.march-hare.com/cvspro/
源码可在这里下载:
http://www.cvsnt.org/wiki/Download
另外,官方的Linux安装文档,可参考:
http://www.cvsnt.org/wiki/InstallationLinux
(ipaddr原创,转载请注明)

以下是在RedHat上源码安装和配置CVSNT的过程
首先,需要删除当前系统中的cvs
rpm -e cvs

1.从网站下载源码并解压
2
../configure
make
make install

3
在源码目录有几个程序可以使用,拷到对应目录即可:

cp redhat/cvslockd /etc/init.d/cvslockd
cp redhat/cvsnt-xinetd /etc/xinetd.d/cvsnt
由于源码安装在/usr/local/bin下面,所以,需要修改以上两个文件中,将所有/usr/bin/cvsnt改成/usr/local/bin/cvsnt,

将/usr/bin/cvslockd改为/usr/local/bin/cvslockd
或者用ln -s /usr/local/bin/cvsnt /usr/bin/cvsnt创建软链接.

cp redhat/cvsnt-pam /etc/pam.d/cvsnt
(注意,cvsnt-pam一定要改成cvsnt)

4.
设置自启动
chkconfig --add cvslockd
chkconfig cvslockd on
ntsysv
将xinetd,cvsnt设置为自启动

5.
启动cvslockd
/etc/init.d/cvslockd start

6.
mkdir /var/cvs/
mkdir /var/cvs/iManage

cvs -d :local:/var/cvs/iManage init
(需要先启动cvslockd)

修改/etc/cvsnt/PServer,将Repository0Name=/var/cvs/iManage改为/iManage,另外,可参考PServer.example增加一些配置.

7.
增加一个cvs组,增加多个用户,并设置用户属于cvs组
groupadd cvs
useradd cvs -g cvs
useradd tomzhou -g cvs
useradd readonly -g cvs
useradd ipaddr -g cvs

passwd & chsh cvs users

8.
chown -R cvs.cvs /var/cvs
chmod -R g+w /var/cvs

重启后,用户即可使用tomzhou,ipaddr,readonly之类的用户登录系统.

9.
如果使用虚拟用户的话,需要如下设置:
groupadd cvs
useradd cvs -g cvs
useradd cvsadmin -g cvs
passwd cvsadmin

chown -R cvs.cvs /var/cvs
chmod -R g+w /var/cvs

将cvsadmin加入到/var/cvs/iManage/CVSROOT/admin中(这个文件默认没有)
(在admin文件里面的用户,被当做这个Repository的管理员)

export CVSROOT=:pserver:cvsadmin@localhost:/iManage
cvs login
cvs co CVSROOT

cvs passwd -r cvs -a vitualUserOne
cvs passwd -r cvs -a VirualUserTwo
cvs passwd -r cvs -a cvsadmin

cd CVSROOT
将config中的UseSystemUser=no
提交修改到CVS
cvs ci

之后,只能用虚拟用户登录了,不可以用系统用户登录.虚拟用户使用系统用户cvs存取文件系统.

其它配置请参考CVSNT文档.

什么是 UpnP?

[不指定 2006/11/23 13:04 | by ipaddr ]
什么是 UpnP?
答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

UPnP 对消费者意味着什么?
答:简单、更多选择和更新颖的体验。包含通用即插即用技术的网络产品只需实际连到网络上,即可开始正常工作。实际上,UPnP 可以和任何网络媒体技术(有线或无线)协同使用。举例来说,这包括:Category 5 以太网电缆、Wi-Fi 或 802.11B 无线网络、IEEE 1394 ("Firewire")、电话线网络或电源线网络。当这些设备与 PC 互连时,用户即可充分利用各种具有创新性的服务和应用程序。

什么是 UPnP 论坛?
答:“通用即插即用论坛”是一个开放式业界协会,成立于 1999 年 6 月,旨在帮助定义 UPnP 标准以简化家庭(长远上讲则是企业)智能设备的联网。为实现上述目标,该论坛正在制定和公布 UPnP 设备控制协议及服务控制协议。截止到 2001 年 6 月初,已有 350 多家公司成为 UPnP 论坛的成员。UPnP 论坛受由 22 名成员组成的 UPnP Steering Committee(UPnP 指导委员会)的管理。此外还设立了技术委员会、市场推广委员会及各种工作委员会(分别面向某种特定的设备),旨在努力实现该机构的目标。有关论坛成员的列表及加入论坛的信息,请见论坛 Web 站点。

UPnP 的技术要素是什么?
答:UPnP 范围广泛,原因是它面向的是家庭网络、临近网络及小型企业和商住楼中的网络。在网络控制设备的管理下,它支持任何两个设备之间的数据通讯。UPnP 不依赖于特定的操作系统、编程语言或物理媒体。

UPnP 支持零配置网络及自动查找功能,这样以来,设备即可动态加入网络,获取 IP 地址,宣布自己的名称,根据需要提供功能,并了解其它设备的存在和功能。DHCP 和 DNS 服务器为可选项。只要在网络上可用,即可加以使用。此外,设备还可自动平稳地脱离网络,而不会遗留任何不必要的状态。

UPnP 汲取了 Internet 的成功之处并继承了它的组件,包括 IP、TCP、UDP、HTTP 及 XML。UPnP 中涉及了多供应商之间的协作,旨在建立标准的设备控制协议(DCP)。与 Internet 类似,这些协议以公告式线协议为基础,表示为 XML 形式,且通过 HTTP 进行通讯。
谈到Upnp在internet上的应用,也就产生下面的疑问??UPnP NAT Traversal (也就是路由器上的那个设置全称)
UPnP 支持零配置网络及自动查找功能,这样以来,设备即可动态加入网络,获取 IP 地址,宣布自己的名称,根据需要提供功能,并了解其它设备的存在和功能。DHCP 和 DNS 服务器为可选项。只要在网络上可用,即可加以使用。此外,设备还可自动平稳地脱离网络,而不会遗留任何不必要的状态。
UPnP 汲取了 Internet 的成功之处并继承了它的组件,包括 IP、TCP、UDP、HTTP 及 XML。UPnP 中涉及了多供应商之间的协作,旨在建立标准的设备控制协议 (DCP)。与 Internet 类似,这些协议以公告式线协议为基础,表示为 XML 形式,且通过 HTTP 进行通讯。
问:什么是 NAT?为什么使用它?
答:“网络地址转换”是一种 Internet Engineering Task Force (IETF) 标准,用于允许专用网络(使用专用地址范围,例如 10.0.x.x、192.168.x.x、172.x.x.x)上的多台 PC 机或设备共享单个、可全局路由的 IPv4 地址。经常使用 NAT 的一个主要原因就是 IPv4(最新一代 Internet)地址的资源日渐紧缺。
在构成公用 Internet 与专用局域网之间屏障的网关设备中,可以使用 NAT。当专用局域网的 IP 数据包经过网关时,NAT 将把专用 IP 地址和端口号转换为公用 IP 地址和端口号,从而跟踪这些转换以保持各个会话不变。Microsoft® Windows® XP 和 Windows Me 操作系统中的“Internet 连接共享”及许多 Internet 网关设备都使用 NAT,尤其是在通过 DSL 或电缆调制解调器连接宽带网的情况下。随着越来越多的家庭和小型企业将自己的 PC 机连接起来并共享 Internet 连接,NAT 的使用量正急剧增加。
问:NAT 的问题在哪?
答:简言之:NAT 会“瓦解”许多家庭或小型企业中日渐需要的最新型 PC 和家庭网络技术,例如多玩家游戏、实时通讯及其它对等服务。如果在公用 Internet 上使用专用地址或同时使用同一端口号,这些应用程序就会中止。应用程序必须使用公共地址,且每个会话都须使用唯一的端口号。大型机构有专门的 IT 人员来确保其公司应用程序在 NAT 上正常使用,但较小的机构和消费者却不具备这样奢侈的条件。UPnP NAT Traversal 可以自动解决 NAT 给应用程序带来的许多问题,使之成为小型企业和消费者理想的解决方案。
问:谁提出的 NAT Traversal 解决方案?
答:NAT Traversal 解决方案是 UPnP IGD Working Committee 为制定 Internet 网关设备 (IGD) 规范所从事工作的一部分。UPnP 的成员公司可以加入该委员会,也可以只选择跟踪其工作进展。委员会的主席是 Intel 公司的 Prakash Iyer (prakash.iyer@intel.com)。许多公司,包括 Microsoft,都在为此而努力。
问:是否有其它途径来解决 NAT Traversal 的问题?如果有,为什么将 UPnP 视为最佳选择?
答:是的,确实有其它途径来解决此问题,但目前还没有其它机制来作为解决该问题的业界标准,从而能对消费者自动实现,而对开发人员则普遍可行。其它方案或者要求用户进行人工干预,或者要求 Internet 网关设备制造商进行专门的开发,并要求软件开发人员处理 NAT Traversal 对特殊应用程序的需要。因此,只有 UPnP 能解决该重大问题。
用户的工作: NAT Traversal 的手工干预法要求用户使用浏览器(PC 机上一种基于图形用户界面的工具)或 PC 上的命令行界面工具来更改家中 Internet 网关设备上的某些设置。尽管有些热衷技术的用户不会有很大困难,但许多用户却感到困难重重。此外,许多用户甚至不知道 NAT Traversal 问题正对其 Internet 服务的使用造成干扰。用户可能想体验一种多玩家游戏或使用其它某些对等服务,却发现由于某种原因而无法连接。这会导致用户采取疑难解答步骤、寻求电话支持、感到不满,甚至以后不打算使用新的服务或不打算尝试新的技术感受。
开发人员的工作: 为避免要求用户手动解决此 NAT Traversal 问题,有些 Internet 网关设备制造商已编写出应用层网关支持,并将其包含到设备中。该应用层网关软件的设计思路是特殊的应用程序。换言之,设备制造商将编写和测试特殊的代码,自动使一个应用程序完成 NAT。如果该应用程序软件进行了更新,则设备制造商所编写的应用层代码将必须重新进行更新和测试。当只需要考虑几个对等或相关的应用程序时,这种一对一解决 NAT Traversal 问题的方式对于设备制造商而言是可管理的,但它无法对数百或数千个应用程序伸展自如,这时不仅开发成本高,并可能需要有关这些应用程序各自原理方面的知识。解决该问题较好的方法就是让设备制造商为设备添加能理解 UPnP 的软件或固件,然后让其它设备和软件能利用同一技术与 NAT 设备进行通讯。现在只有 UPnP 能够完成这种职责。
问:UPnP NAT Traversal 解决方案的作用是什么?
答:支持 UPnP 的 NAT Traversal 可确保下列情况的实现:
多玩家游戏
对等连接
实时通讯
远程协助(Windows XP 的功能之一)
对于 IHV 而言,该解决方案免去了编写和维护应用层网关 (ALG) 数据库以通过 NAT 的必要。它受 Windows XP 和 Direct Play(一种 Windows 编程资源)的支持,因此为 DPlay 编写的软件应用程序将能自动对 NAT Traversal 使用 UPnP 解决方案。
通过提供下列操作的方法,UPnP 论坛的 IGD 规范可进行自动 NAT Traversal:
了解公用 IP 地址
列举现有的端口映射
添加和删除端口映射
指定映射的租用期
问:哪些制造商在实施 UPnP NAT Traversal 解决方案?
答:目前,大多数大型网关(DSL/电缆路由器)制造商都宣布计划从 2001 年(不迟于 7 月份)在提供的产品中实施 UPnP NAT Traversal 解决方案。其中包括:Microsoft(WindowsXP 中)、Linksys、D-Link、Intel、Netgear and Buffalo Technology 及 Arescom。
其中的一些制造商已宣布将为已拥有其设备的用户提供固件或软件升级,从而为支持 UPnP 的 NAT Traversal 提供支持。
问:用户怎样才能知道哪些 Internet 网关设备支持 UPnP?
答:用户可以查阅 Internet 网关设备制造商的 Web 站点,或者阅读产品包装上的标签,以确定是否提供该功能。后面几个月内,有些零售商将会知道这个情况。在未来的几个月中,UPnP 论坛会提供一个 UPnP 徽标。制造商可以在自己的产品包装、营销资料或产品上包含该徽标,以表明该产品满足 UPnP 论坛的测试要求。
开启路由器的Upnp提高P2P速度的理论依据:
首先区别以下内网和外网。
什么是内网及外网呢?
区别方法很简单—使用56K、ISDN、ADSL等MODEM直接拨号上网的用户就是外网用户,其分配的IP地址就是ISP服务器分配的IP地址,这类用户目前很少存在ISP的限制,亦很少存在BT下载速度减慢的问题。而通过路由器(含ADSL路由器、宽带路由器、无线路由器等等)或交换机再接入宽带网络的用户就是内网(局域网内)用户,其单机分配的IP地址多为10.x.x.x、172.16.x.x至172.31.x.x、192.168.x.x。这类用户包含所有的通过宽带接入互联网络的有线局域网用户、无线网络用户,而如果您的无线网络又是通过FTTX+LAN将家用局域网再接入互联网络的话,那你就是内网中的内网用户。

   使用无线路由器后,由adsl接入,没有无线路由器之前,一直为外网,接了无线路由器建立家庭无线局域网以后,变为内网,内网的特点就是无法对外打开监听端口,因此会损失所有外部发起的连接。比如硬件路由器、Windows网络共享等等。外网用户和内网用户在使用BT下载时的区别是—外网用户的上网计算机得到的IP地址是Inetnet上的非保留地址,外网的计算机Internet上的其他计算机可随意互相访问;内网的计算机以NAT协议,通过一个公共的网关(就是上网计算机得到的Inetnet上的非保留地址)访问Internet,内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。这样内网用户在进行BT下载时便可能会出现无法下载或速度很慢的问题。
开启UPnP功能
 
什么是UPnP自动端口映射?
UPNP的全称是Universal Plug and Play。UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的新的Internet协议。UPnP已经在WindowsXP中得到了支持(见微软文档),并在MSN Messenger中得到了应用。目前支持UPnP的操作系统是WindosXP,网关设备包括WindowsX的Internet连接共享和防火墙及支持UPnP的DSL和Cable路由器。
   事实上,UPnP的制定正是希望未来所有联入Internet中的设备能够不受网关阻碍的相互通信,对于所有的P2P软件而言运用好“UPnP”协议可以提高上网速度,BT下载亦是如此。哪些用户需要开启UPnP功能?首先,外网用户(直接拨号上网的用户)不需要,内网用户必需。其次,对于内网用户而言,已手动为P2P下载软件进行了端口映射(例如在使用比特精灵下载时在“用户列表”中有“远程”字样,或者使用eMule连接服务器成功后显示为高ID等,都表示已成功进行了端口映射),也可不需要,但如果你有多款P2P软件在同时使用,建议您还是首选UPnP来自动端口映射,使用更方便更彻底。

Linux下批量修改文件编码

[不指定 2006/11/22 23:24 | by ipaddr ]

假设需要将所有ipaddr目录下的php文件,编码从gb2312转到utf8

[code]

cd ipaddr
find ./ -type f -name "*.php"|while read line;do
echo $line
iconv -f GB2312 -t UTF-8 $line > ${line}.utf8
mv $line ${line}.gb2312
mv ${line}.utf8 $line
done

[/code]

上面脚本将当前ipaddr目录下的所有php文件,从gb2312转到utf8,原文保存为*.php.gb2312。

如果需要删除原来的gb2312文件,只需执行:

[code]

find ./ -type f -name "*.utf8" -exec rm -f {} \;

[/code]
绝大多数版本的linux支持ipv6,可惜IPV6离我们还是很远,增加它,不但会影响我们的系统性能,如果你使用linux做桌面的话,它还会严重影响你的上网速度。
我个人感觉就是DNS解析起来非常得慢。
以下是如何禁用它的支持。
原文请看这里:
http://www.mjmwired.net/resources/mjm-fedora-fc6.html#ipv6
Disable IPv6 Features
18 October 2006

FC6 has the most IPv6 support than in previous releases. Most likely you do not use IPv6. If you wish to eliminate the slight extra resources consumed by enabling IPv6, then you may do the following steps.

This may speed up your DNS lookup times when using the internet.

Disable IPv6 Networking Support
支持网络支持

Edit /etc/sysconfig/network. (A reboot will be required)

[mirandam@charon ~]$ sudo gedit /etc/sysconfig/network

Change:
NETWORKING_IPV6=yes

To:
NETWORKING_IPV6=no

Disable IPv6 Protocol Stack for Kernel
禁止IPV6的内核模块。

Edit /etc/modprobe.conf.

[mirandam@charon ~]$ sudo gedit /etc/modprobe.conf

Add the following 2 lines: (A reboot will be required)

alias net-pf-10 off
alias ipv6 off

Disable IPv6 Firewall
禁止IPV6的防火墙。

Stop ipv6 firewall:

[mirandam@charon ~]$ sudo /etc/init.d/ip6tables stop
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading ip6tables modules:                               [  OK  ]

Turn ipv6 firewall off during future usage:

[mirandam@charon ~]$ sudo /sbin/chkconfig --level 35 ip6tables off

SideBySide Error

[不指定 2006/11/22 16:52 | by ipaddr ]
自从安装SnagIt之后,系统的日志里经常会有条SideBySide的错误,经过搜索资料,发现SnagIt使用VC2005(VC8)开发,而Windowsxp,windows2003系统的机器,使用VC8开发的软件时,都可能会有这个错误.

VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下,结果造成在这些系统上,直接拷贝exe文件,往往是不能运行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中报错。

解决方式:
方式一、在目标系统上安装2005版vcredist_x86.exe。(上微软官方网站下载)

方式二、直接拷贝VS8目录下的VC \ redist \ x86 \  目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version="8.0.50727.42",修改为version="8.0.50608.0"。


方式二的目录结构,在xp和2003下是没有问题的,但是在win98/win2000中,因为exe和dll不在同一目录下,就会出现找不到dll的问题。

有什么更好的解决呢?呵呵,国外的一个大牛找到一绝招:

方式三、
 1、首先编译myapp.exe的时候,在配置中,选择生成单独的manifest文件,如:myapp.exe.manifest。
 2、将myapp.exe、myapp.exe.manifest拷贝到一个目录下
 3、将Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个目录下的文件,都拷贝到myapp.exe所在的目录下。
 4、将Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改为version="8.0.50608.0"。
 5、编辑myapp.exe目录下的所有 .manifest文件,将文件中的publicKey键值删除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
 6、然后运行myapp.exe看看,嗯。


如果您使用的是Outlook, 当卸载了杀毒软件以后, 在启动Outlook时, 就会出现一条出错信息: 无法安装或装载加载项 ...\PAVExCli.DLL(这个是熊猫杀毒软件的, McAfee的是scanemal.dll".
开始安装的是熊猫杀毒的铂金版, 卸载以后, 安装了McAfee的VirusScan. 每次启动Outlook都会出现上面的提示. 在注册表里根本就找不到这个DLL文件名. 在卸载了VirusScan以后, 启动Outlook以后, 会出现2条信息. 一个是上面描述的, 另外一个是"scanemal.dll".

通过"scanemal.dll"这个关键字, 终于找到了解决办法:
要解决此问题,请从 Outlook 中删除 McAfee VirusScan 加载项:
1. 在 Outlook 中的工具菜单上,单击选项。
2. 单击其他选项卡,单击高级选项,然后单击加载项管理器。
3. 单击以清除 Exchange Scan(Exchange 扫描)复选框,单击确定,然后单击确定。(如果是Norton,去掉Norton的勾选即可)
4. 单击确定。

参考微软官方资料:
http://support.microsoft.com/?scid=kb;zh-cn;315046&spid=2559&sid=63.

CVSNT用户管理方案(转)

[不指定 2006/11/21 16:42 | by ipaddr ]
1、 CVSNT的用户验证方式

pserver方式下。

在CVSNT的文档中给出了两种验证方式,我总结了一下,可以这样称呼:Window和CVSNT混合验证方式,CVSNT独立验证方式。在前面的文章中,我们没有详细的给出这两种方式的内容,所讲述的启示就是混合验证方式。

决定CVSNT工作于何种验证方式是由CVS的管理文件来决定的,这些管理文件处在库的目录下的CVSROOT目录中,这里可以得出结论,对于不同的库,可以给不同的验证方式。所以,在每个库建立的时候要首先设定好这些前提。

下面的操作如果没有特殊指出则都是在客户端来进行管理的,下面首先是对一些控制原理和相关的文件做一些说明,如果你正在进行相关的模拟操作,请停下来暂时停止你的操作,因为这些操作的步骤是有先后的,如果你顺序不对,那么你可能就权限失效,进行不了下面的操作了。
1.1 config文件
在库建立好了以后,你还没有对控制文件进行修改之前,CVSNT是工作在混合验证方式之下的,这个时候,CVS服务器的管理员就是CVSNT的管理员,你以一个管理员身份登陆,检出你要操作的库的CVSROOT模块,看一下文件列表,控制CVSNT的验证工作方式的是config文件,你可以在文件列表中找到它,双击看看其中的内容,这里对我们最重要的就是第一个设置内容,你会看到下面的内容:
# Set this to `no' if pserver shouldn't check system users/passwords
#SystemAuth=yes
第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no
yes:pserver将使用系统用户数据库和passwd文件(这个文件后面会详细讲述)来共同验证(若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证)默认为yes
no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。
我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器,提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下,NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。

1.2 passwd文件
在讲述上面的时候提到了这个文件,在服务器工作在CVSNT验证模式下的时候,这个文件就可以称之为CVSNT的用户数据库,这个里面存储着用户列表,用户的密码,以及别名的一些信息。默认状态下这个文件是不存在的,所以,如果我们要在CVSNT验证模式下工作,必须建立这个文件。注意:这个文件是不能够在客户端进行修改的。这个文件的内容是相当简单的,就像下面:
bach:ULtgRLXo7NRxs
spwang:1sOp854gDF3DY
melissa:tGX1fS8sun6rY:pubcvs
qproj:XR4EZcEs0szik:pubcvs
这里分别拿第一个用户bach和第三个用户melissa来进行说明,每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户三部分之间使用冒号“:”来进行分割。
用户名:就是登陆CVS的用户名
密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码
本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其他关系,仅仅是别名的关系)
如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户,在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下:
cvs passwd –a bach
cvs passwd –r pubcvs –a melissa
在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行
cvsadmin:
这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户,就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。
在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个文件格式的,不要去随便修改,更加不要尝试在客户端进行修改!
1.3 admin文件
这个文件是指定CVSNT的管理员列表的文件,CVSNT会根据这个文件中的内容来判断一个用户是否是管理员。这个文件的内容很简单,是一个用户列表。类似下面
user1
user2
user3
这些代表user1,user2,user3都是管理员,当然,这些用户必须要存在才能够正确登陆系统来执行管理。
这个文件默认状态下是没有的,但是,可以在客户端进行添加,在你的客户端进行新建这个文件然后add上去再commit一下,这个文件就可以上传到服务器,但是这个时候还没有生效,请修改checkoutlist这个文件,加入admin这一行,checkoutlist也可以在客户端进行修改再提交,这个时候admin就可以被系统自动的build了。
Checkoutlist是维护的一个文件列表,可以放入系统自动build的用户自定义的系统文件列表,注意:对passwd没有用!!
1.4 group文件
这个文件是定义系统的组,我们可以将同样性质的用户归入一个组,然后用给用户赋权限的方式给组赋权限,这样,一个组的用户就会具有同样的权限。Group的内容如下:
group1:user1 user2 user3
group2:me you he
group3:tom honey
有上面可以看出来,这个文件的内容也是相当的简单,首先是组的名称然后是冒号,接着是用户名,多个用户名之间用空格来进行分割。
Group文件可以在客户端进行新建和修改,不用修改checkoutlist这个文件,系统会自动build这个文件并且使之生效。
作为组里面的特定成员还可以赋给特定的权限,权限分为两类c,w,r和n,否定权限是有高的优先级的。
好,上面已经介绍了本方案所涉及到的几个重要的文件以及修改方式。这里再强调一下,passwd只能够再服务器端进行建立和修改,不能够在客户端进行操作!
现在根据上面介绍的内容,可以开始你的操作了,下面给出修改顺序,库刚刚建立起来的时候,使用一个服务器上的本地管理员用户进行登陆检出CVSROOT模块。
1、 现在服务器端加上passwd文件,给一个初始的用户,比如cvsadmin:
2、 在客户端增加admin,将cvsadmin加入admin文件,作为出是管理员,并提交加入到库中。
3、 在修改checkoutlist文件,加入admin,使其能够自动build。
4、 最后修改config文件的SystemAuth=no,在提交之前要确认一下你上面的修改是否正确,如果提交了这个文件,CVSNT验证模式就开始生效了!
5、 好,现在请修改你的参数再重新进行的登陆吧。因为你的系统已经切换了工作模式,你当前的用户已经失效了。
完成了上面的步骤,整个服务器就会有效的工作在CVSNT验证模式下了。而group文件在你需要的任何时候可以加入。
在上面的文章关于CVSNT的用户的管理方案的,在这里做一点补充,在后面的操作中全部是针对在客户端使用WinCVS来进行的(出了增加passwd)文件,其实,在我的实践当中config,passwd,admin,checkoutlist,这些文件的起始修改(初始化)都可以在新建了库以后一起完成,然后再让相应的库的管理员来进行相关的操作。

男人十大土的掉渣的行为

[不指定 2006/11/19 18:46 | by ipaddr ]
1.照相时做V字形手势:天啊,救救这个老土的人吧!哪怕你站得像一截木桩呢。

2.偶像崇拜:已经没有偶像了,只有“呕吐的对象”。

3.千万不要用手绢,这比当街裸奔还丢人。有汗就往身上擦,不管多白多贵的衣服上去就往头上抹,动作要特飘逸。我们的口号就是:不求最NB,只要更NB!

4.千万别提着手提电脑到处现眼,保准立马被人识破。而且手提档次越高越丢人。这年头,明白电脑的可越来越多,除了盖茨外,谁拿手提出门都得被认成白痴,至于盖茨,他就是提饭盒出去人都当成是电子新概念

5.千万别在人多的时候掏出你的快译通或者类似的电子记事本。不幸掏出来的应该立刻找一条缝钻进去,人走光了再出来。人多的时候藏好快译通,不要露出马脚,记电话什么的立刻掏出笔记本和一管钢笔。遇到那些不识相的问为什么不用快译通,你就只用右眼扫他一下然后一声冷笑扬长而去,冷笑一定要到位,让人明白你不是用不起而是不屑一用。现在流行返朴归真,拿着根小棍乱点的时代过去了。

6.千万不要用钱包,兜里就那么几块钱根本不需要买钱包。最忌讳付帐的时候左掏右掏掏出个钱包前翻后翻翻出个十块;最欣赏的就是双手插兜,问多少钱,“八十”。
“八十?这是一百,不用找了。”从裤兜里像变魔术一样迅速掏出钞票递给服务生,记住,一定要大大方方地“递”给服务生,而且说话的声音要特自然,不能颤抖,临走还得深沉的微笑谢谢服务生的优质服务。绝对派!

7.千万别在意服饰的名牌和金货银货,我哥那大裤衩还是皮尔卡丹的,不翻出牌子看根本以为是抹布条儿拼成的。好男人不在乎穿什么,破破烂烂显真性,当然裤子拉链要弄牢。金货银货就是摆那里给民工抢的,李嘉诚就是戴个铁链子,别人也肯定认为是不知名的稀有金属。瞧见了没,真正的显摆不在这些装饰上!

8.千万别张口闭口我老婆如何,虽然你在家是怕老婆滴,但是不要再外面还带在嘴上,老婆是要怕滴,但是要在心里。

9.千万不要见面就说我的QQ是多少,这年头还在QQ聊天的男人多半都是上班没事做,下班没女人爱的失败男人。

10 千万别看贴不回贴,嘿嘿一乐,掉头走人;怎么着你也得回个“呵呵”、“嘿嘿”之类的吧,哪怕你骂我一句也成啊,现在见面不都流行这个嘛“今天您顶了没有?”
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]