心 的个人资料真心的家照片日志列表 工具 帮助
3月31日

纯sql实现24算法

set nocount off
declare @a decimal(10,6),
@b decimal(10,6),
@c decimal(10,6),
@d decimal(10,6)
select @a=1,@b=5,@c=5,@d=9---给出四个数字,列出加减乘除后结果为24的算式!
declare @t table(id int identity,num decimal(10,2))
insert @t select @a union all select @b union all select @c union all select @d
declare @result table(str1 varchar(100),str2 varchar(100),result decimal(10,6))
insert @result select rtrim(id)+'#'+rtrim(cast(num as int)),rtrim(cast(num as int)),num from @t
declare @i int
set @i=1
while @i<4
begin
insert @result select distinct A.str1+'+'+rtrim(id)+'#'+rtrim(cast(num as int)),A.str2+'+'+rtrim(cast(num as int)),result+num from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0
and not (num+result<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
/*
and not exists (select 1 from @result where str2=A.str2+'+'+rtrim(cast(B.num as int)))
and not exists (select 1 from @result where str2=rtrim(cast(num as int))+'+'+A.str2 )
*/
insert @result select distinct A.str1+'-'+rtrim(id)+'#'+rtrim(cast(num as int)),A.str2+'-'+rtrim(cast(num as int)),result-num from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0
and not (result-num<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
insert @result select distinct case when charindex('-',str2)>0
                           then  rtrim(id)+'#'+rtrim(cast(num as int))+'-('+A.str1+')'
                           else rtrim(id)+'#'+rtrim(cast(num as int))+'-'+A.str1
                           end,
                      case when charindex('-',str2)>0
                           then rtrim(cast(num as int))+'-('+A.str2+')'
                           else rtrim(cast(num as int))+'-'+A.str2
                           end
,num-result from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0  and not (num-result<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
insert @result select distinct
   case when charindex('+',A.str1)>0 or charindex('-',A.str1)>0
        then '('+A.str1+')*'+rtrim(id)+'#'+rtrim(cast(num as int))
        else  A.str1+'*'+rtrim(id)+'#'+rtrim(cast(num as int))
        end,
   case when charindex('+',A.str2)>0 or charindex('-',A.str2)>0 
        then '('+A.str2+')*'+rtrim(cast(num as int))
        else A.str2+'*'+rtrim(cast(num as int))
        end,
result*num from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0  and not (num*result<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
/*
and not exists (select 1 from @result where str2=(case when charindex('+',A.str2)>0 or charindex('-',A.str2)>0 
        then '('+A.str2+')*'+rtrim(cast(B.num as int))
        else A.str2+'*'+rtrim(cast(B.num as int))
        end))
and not exists (select 1 from @result where str2=(case when charindex('+',A.str2)>0 or charindex('-',A.str2)>0 
        then rtrim(cast(B.num as int))+'*('+A.str2+')'
        else rtrim(cast(B.num as int))+'*'+A.str2
        end) )
*/
insert @result select distinct
   case when (charindex('+',A.str1)>0 or charindex('-',A.str1)>0) and charindex('(',str1)=0
        then '('+A.str1+')/'+rtrim(id)+'#'+rtrim(cast(num as int))
        else  A.str1+'/'+rtrim(id)+'#'+rtrim(cast(num as int))
        end,
   case when charindex('+',A.str2)>0 or charindex('-',A.str2)>0  and charindex('(',str2)=0 
        then '('+A.str2+')/'+rtrim(cast(num as int))
        else A.str2+'/'+rtrim(cast(num as int))
        end,
result/num from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0 and num<>0  and not (result/num<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
insert @result select distinct
   case when (charindex('+',A.str1)>0 or charindex('-',A.str1)>0) and charindex('(',str1)=0
        then rtrim(id)+'#'+rtrim(cast(num as int))+'/('+A.str1+')'
        else rtrim(id)+'#'+rtrim(cast(num as int))+'/'+A.str1
        end,
   case when ((charindex('+',A.str2)>0 or charindex('-',A.str2)>0)  and charindex('(',str2)=0) or charindex('/',str2)>0 or charindex('*',str2)>0
        then rtrim(cast(num as int))+'/('+A.str2+')'
        else rtrim(cast(num as int))+'/'+A.str2
        end,
num/result from @result A,@t B where charindex(rtrim(id)+'#'+rtrim(cast(num as int)),str1)=0 and result<>0  and not (num/result<>24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=2)
set @i=@i+1
end
--select cast(rtrim(str2) as varchar(20)) 计算公式 from @result order by cast(rtrim(str2) as varchar(20))
select distinct cast(rtrim(str2) as varchar(20)) 计算公式 from @result where  result=24 and len(str2)-len(replace(replace(replace(replace(str2,'+',''),'-',''),'*',''),'/',''))=3

BugFree 1.0 使用MySQL 5 乱码的最终完美解决方案

安装MySql时选择的默认字符集为UTF8
1.先用下列语句导出数据
mysqldump -uroot -p --default-character-set=latin1 --skip-opt bugfree > test.sql
此时在Test.sql语句中即可以看到中文的数据库内容
2.在数据库中将BugFree删除,并重新用以下语句重建一个新库
mysql> CREATE DATABASE `Bugfree` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3.然后用下列语句将前边导出的数据导入到新建的库中
C:\MySQL5\bin>mysql -uroot -p BugFree<test.sql
这时候可用PhpMyadmin查看数据库内容,即可看到中文的内容
4.在SetupBug.inc.php文件的第60行插入$MyDB->Query("Set Names 'utf8'");
即将
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
改为
$MyDB->Connect($BugConfig["BugDB"]["Host"],$BugConfig["BugDB"]["User"],$BugConfig["BugDB"]["Password"],$BugConfig["BugDB"]["Database"]);
$MyDB->Query("Set Names 'utf8'");
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

我的运行环境:Win2003 Standand Sp1,Apache 2.0.55,Php 5.1.2 ,Mysql 5.0.18,BugFree 1.0,phpMyAdmin 2.7.0-pl2
3月23日

cvs2svn

c:\Python24\python.exe c:\cvs2svn-1.3.0\cvs2svn -s c:\svndata  --use-cvs --encoding=gb2312 c:\newcvsrepo

 
c:\newcvsrepo 为CVS中的项目单独复制一份,另内部需建一个CVSRoot空目录即可骗过Cvs2svn
 
 
到http://unxutils.sourceforge.net/下载取得sort.exe
3月17日

Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置

 
 
第一步: 安装apache 并配置支持PHP

点击安装文件apache_2.0.50-win32-x86-no_ssl.msi
将apache安装在 D:\apache2 目录(随自己喜好)下
将php-5.0.0-Win32.zip 里内容解压到 D:\php 里
找到 php目录里的 php.ini-dist 重命名为 php.ini 并拷到 windows目录里(win2k 里为winnt)
如我的php.ini是拷到 D:\windows目录
再将php目录里的 php5ts.dll,libmysql.dll 拷到 系统目录(system/system32) 如我的是D:\windows\system里


配置apache里的httpd.conf
打开 D:\Apache2\conf\httpd.conf 这个文件
找到 AddDefaultCharset ISO-8859-1 将其改为 AddDefaultCharset GB2312 (让默认语言编码为简体中文)
找到 DocumentRoot "D:/Apache2/htdocs" 将其改为你的WEB目录(可不改)如我的为 DocumentRoot "D:/website"
找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php

选择安装模式: 模块化模式安装 或 CGI模式安装 (选一样即可)

--------------模块化安装配置------------------------------------
找到 #LoadModule ssl_module modules/mod_ssl.so 这行,在此行后加入一行
LoadModule php5_module d:/php/php5apache2.dll
其中d:/php/php5apache2.dll 为你php目录中php5apache2.dll所在的位置
找到 AddType application/x-gzip .gz .tgz 这行,在此行后加入一行
AddType application/x-httpd-php .php
---------------------------------------------------------------

--------------CGI安装配置--------------------------------------
找到 AddType application/x-gzip .gz .tgz 这行,加入如下即可
ScriptAlias /php/ "d:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"
---------------------------------------------------------------

此时PHP环境基本已经配置成功
在WEB根目录(如我的D:\website)里建一个名为test.php的文件内容如下
<? echo phpinfo(); ?>
重新启动apache服务
用浏览器打开 http://localhost/test.php
如果可以看到php配置输出信息就OK了

第二步 安装mysql

将mysql安装到指定目录,如我的是d:/mysql 如下载的是非安装的mysql压缩包,直接解压到指定目录就可以了
然后点击D:\mysql\bin\winmysqladmin.exe这个文件 其中D:\mysql是你的mysql安装目录
输入winmysqladmin的初始用户、密码 (注:这不是mysql里的用户、密码)随便填不必在意
确定之后你的右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务
再左击这个图标->winnt->start the service 启动mysql服务

修改mysql数据库的root密码
用cmd进入命今行模式输入如下命令: ( 注: d:\mysql 为mysql安装目录)
cd d:\mysql\bin
mysqladmin -u root -p password 123456
回车出现
Enter password: ( 注:这是叫你输入原密码. 刚安装时密码为空,所以直接回车即可)
此时mysql 中账号 root 的密码 被改为 123456 安装完毕

三、配置php.ini并测试mysql(php.ini为 d:\windows下的 php.ini)

找到extension_dir = "./" 改为 extension_dir = "d:/php/ext"
找到
;extension=php_mysql.dll
将';'去掉改为
extension=php_mysql.dll
找到
;session.save_path = "/tmp"
将';'去掉 设置你保存session的目录,如
session.save_path = "D:/php/session_temp";

重启apache服务
在Web根目录下(如 D:\website)建立testdb.php文件内容如下:
<?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
用浏览器打开http://localhost/testdb.php 如果输出success就OK了

四、phpmyadmin的安装配置

将phpMyAdmin-2.5.7.zip解压到WEB根目录中去,重命名文件夹为phpmyadmin或其它
打开phpmyadmin 目录中的 config.inc.php
找到
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
分别填上你mysql的用户和密码即可

如不是本地使用,最好加上验证

不知道写得对不对!不过我基本上就是这样配的! 对于学习来讲应该差不多了吧?

有什么错误或漏掉的地方望大家指出批评!----by luck_mlc
3月6日

CVSNT的用户验证方式

转自: http://edu.tmn.cn/html/5/47/185/2005210/104247.htm 

先说下CVSNT的用户验证方式,CVSNT的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户 单一验证方式,默认工作在混合验证方式下,当然使用单一验证方式对用户的管理肯定比较方便一点,因此下面的配置就是围绕该方式进行的。各个资源库所使用的 验证方式及用户配置由其目录下CVSROOT里的配置文件决定,其中有几个比较重要的文件。


1、config文件

控制CVSNT的验证工作方式的就是config文件,注意该文件最前面的两行:

#Set this to `no" if pserver shouldn"t check system users/passwords
#SystemAuth=yes

第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no:

yes:pserver将使用Windows系统用户和CVSNT用户来共同验证(若CVSNT用户未定义,则用Windows系统用户来进行验证),默认为yes,CVSNT用户在后面将要介绍的passwd文件中定义。

no:只使用CVSNT用户来进行验证。

该文件可以在客户端进行修改,因此我们可以将其checkout出来将第二行改为SystemAuth=no,并commit到CVSNT上就可以启用单一验证方式了,注意启用单一验证方式后原来的Windows系统用户将变为无效,因此要注意执行该步骤的时机。

2、 admin文件

该文件保存CVSNT管理员用户列表,内容很简单,形式如下:
User1
User2
User3
每一行定义一个管理 员用户,默认时没有该文件,但你可以在客户端自己添加并add上去,再commit到CVSNT上,但是光有这个文件还是不会生效的,还要将其添加到 checklist文件中,使CVSNT能够读取该文件的内容,在checklist中添加文件列表的格式为:

 [空格]文件名 出错信息

其中文件名前的空格必须要有的,不然会出错。
我们可以先添加admin文件到CVSNT中,再修改checklist文件commit,就可以使admin文件生效了。

3、passwd文件

服务器工作在CVSNT用户单一验证方式下的时候,这个文件定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。

添加用户的命令的示例:

cvs passwd –r administrator –a cvsadmin

之后系统提示输入密码,输入后服务器会新建一个passwd文件。

该文件的内容很简单,形式如下:

cvsadmin:fqr1fS4gDghrt:administrator
kid:aTXRfS31Bm6JA
mystique:Yna4QcXz9dEqd

以第一行为例:cvsadmin为用户名,fqr1fS4gDghrt为CVS使用UNIX标准加密函数对密码进行加密后的结果,administrator为该用户的别名,当使用混合验证方式时对应Windows系统用户名。

注意:这个文件是不能在客户端进行修改的,不能checkout出来。

4、group文件

该文件定义CVSNT中组信息,同组里的用户拥有一样的权限,对组权限的修改和对用户权限的修改一样。

group文件的内容为

administrators:cvsadmin kid mystique
users:User1 User2 User3

可以看到该文件的内容也很简单,组名:用户名,多个用户名之间用空格隔开。

Group文件可以在客户端修改,不用修改checkoutlist这个文件,系统会自动使其生效。

作为组里面的特定成员可以赋给特定的权限。

了解了以上内容,下面我说一下我自己的配置步骤,我没有使用WinCVS进行操作,是直接使用命令行进行修改的,觉得这样思路比较清晰:

1、添加系统变量CVSROOT=E:/CVSNT/Repository,并把E:\CVSNT加入到系统Path路径。

2、进入命令提示符,因为此时为混合验证模式,可以不用不用登陆直接进行checkout。可以建立一个工作目录,在该目录下进行操作,我这里为E:/CVSNT/Works。

 检出CVSROOT目录:
 
 cvs co CVSROOT

3、添加CVSNT系统管理员用户,此时会提示设置用户密码:

 cvs passwd –r administrator –a cvsadmin

4、修改CVSROOT访问权限:

 cd CVSROOT
 cvs chown cvsadmin   //更改所有者为cvsadmin
 cvs chacl default:n   //默认权限为n
 cvs chacl cvsadmin:rwc  //添加cvsadmin

5、修改config文件,按上面的方法修改后commit:

 cvs ci

6、此时单一验证方式已经启用了,也就是只能使用刚才添加的cvsadmin进行登录,此时可以把CVSNT控制面板上的Use local users for pserver authentication instead of domain users关掉。登录前还要改一下系统变量CVSROOT,关闭命令提示符窗口,修改CVSROOT为:

 :pserver:cvsadmin@192.168.0.1:4021/CVSNT/Repository

这里的192.168.0.1是服务器的IP地址,/CVSNT/Repository就是前面设置Repository时设置的Name,可以改为你机器上的配置。修改系统变量之后以下的步骤在任何与服务器相连的机器上进行,当然该机器上应该有CVSNT的可执行文件。

7、如果为了避免出现错误,先重启一下CVSNT服务器,再启动命令提示符来到E:/CVSNT/Works,因为已经启用单一验证方式,先要进行登录。

 cvs login
 
 输入密码,此时就是以cvsadmin登录了。
 
8、添加admin文件,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为
 
 cvsadmin
 
 执行命令:
 
 cvs add admin
 cvs ci
 
9、修改checklist文件,在该文件末尾添加一行:

 [空格]admin  error message
 
 注意:admin前的空格不能少。
 
 执行命令:
 
 cvs ci
 
经过以上步骤,可以说用户配置已经基本完成了,CVSNT可以很好的工作在单一验证方式下。进一步的管理可使用以下命令:

添加用户: cvs passwd -a username,使用时不必理会需要添加别名的提示。

修改用户权限:cvs chacl username:r|w|c|n,(r:Read w:write c:control n:none)

要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。

如果还有不清楚的可以看看自带的文档,说得还是比较详细的。

ok,差不多就是这些,有错还请各位帮忙指出,还在学习ING