未来往事
当你站在今天,是否能看到明天、明年、乃至下一个三年的你? [2017年 第26周/共52周]

VMware Workstation v8.0.3 正式版(附注册码)

VMware Workstation v8.0.3 官方正式版下载:
VMWare可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX等操作系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。

......
+阅读全文

Word2003/2007/2010单页面横排设置方法

本文阐述了在Office Word 2003/2007/2010应用下如何设置单页面横排或第一页竖排第二页横排的效果。

假设Word文档中已经有三页纸以上,操作步骤如下:
1、光标停在第二页的最前面,单击“插入”菜单下的“分隔符”的“分节符类型”-“连续”,然后进行页面设置,设置横排,这样从第二页开始之后的页都会变成横排

2、然后你在第三页的最前面单击“插入”菜单下的“分隔符”的“分节符类型”-“连续”再把页面设置成竖排

至此,操作完毕。


......
+阅读全文

Windows7删除文件文件夹时提示需要来自system的权限解决方法

今天重装Win7后预删除一些没用的文件及文件夹,却收到系统提示:您需要权限来进行操作,您需要来自SYSTEM的权限才能对此文件夹进行更改。 本文列出了一些经过博主实践后的解决方法供大家参考:

在无法删除的文件夹目录上右键属性,点安全选项卡,进入“高级”设置,点“所有者”选项卡,将所有者编辑更换为当前用户,并勾选“替换子容器和对象的所有者”,完全确定后,再重新点右键选择属性,给当前用户赋予完全控制的权限。并且勾选属性常规选项卡,取消只读属性。再尝试删除操作。如果还是不行,请尝试使用软件unlocker删除。

Unlocker1.9.1 For X86_X64下载地址:
+阅读全文

UCS使用SAS接口硬盘 RAID阵列卡 连接线说明

......
+阅读全文

安居客网站系统架构案例分享简报

本文为分享的安居客网站系统架构、web系统架构简报,简报加载速度依据你网速的快慢而受影响。
+阅读全文

Dell PowerEdge R710安装Windows2003系统

Dell PowerEdge R710安装Windows Server 2003 X86系统,并保留除C盘以外所有的数据,不全盘格式化
我们知道类似于IBM serverguid安装系统,如果使用服务器引导盘安装系统,磁盘将会被全盘格式化。本文介绍基于Dell PowerEdge R710 Server安装Windows Server 2003 X86系统并只格式化C盘数据保留其余所有数据。

第一步:根据自己机器实际的阵列卡型号选择相关的阵列卡驱动并下载,然后用U盘加载硬盘控制卡驱动,制作方法参考官方:
U盘加载硬盘控制卡驱动 安装2003

第二步:放入2003系统光盘到光驱,同时把带有阵列卡驱动的U盘也插到机器上(使用U盘载入阵列卡驱动,需要对U盘进行特殊处理,参考第一步);

第三步:重启机器,按“F11 = Bios Boot Manager”选择从光驱引导--“SATA Optical Drive”,如图:

点击在新窗口中浏览此图片



在屏幕的底部出现信息:Press F6 if you need to install a third party SCSI or RAID driver 时,及时按下“F6”键以加载U盘中的硬盘阵列卡驱动,如图:

点击在新窗口中浏览此图片



按完"F6",后,安装程序会继续加载模块。这是正常的。过一会儿后,您将会看到以下信息:Setup could not determine the type of one or more mass storage devices installed in your system, or you have chosen to manually specify an adaptor.

按下“S = Specify Additional Device”,出现U盘中的驱动程序名称,如果没有则表示没有成功加载到U盘中的阵列卡驱动。这里我们显示了驱动程序名称“Dell PERC5 and PERC6/CERC6 RAID Controller Driver (Server 2003 32 bit)”表示已经加载到驱动程序,敲回车确认载入驱动,回车继续安装。如图:

点击在新窗口中浏览此图片


点击在新窗口中浏览此图片


接下来的安装步骤和单机安装Windows Server 2003系统一样,这里不再赘述。

补充说明:
通过该方式安装完成的windows server2003系统可能会缺少如下驱动程序,请根据自己的实际情况选择下载安装:
Dell R710 windows 2003 32 bit 芯片驱动(如果设备管理器中有“系统中断控制器”呈现问号,请安装该芯片组驱动)
Dell R710 windows 2003 32 bit 网卡驱动
Dell R710 windows 2003 32 bit 显卡驱动
+阅读全文

Discuz UCenter通信原理与数据自动同步免用户激活

Discuz UCenter通信原理与用户免激活同步登录
本文阐述了Discuz UCenter用户中心数据自动同步其他通信应用 免去用户激活 批量激活站点整合用户相关的原理与实现方法。

最后更新:2013/04/08
新版本可以论坛程序后台——ucenter中设置直接激活即可(但不能数据同步)。


本文档基于DiscuzX2.0环境所写。原则上兼容X1.5/X2.5版本的Discuz!X,毕竟这里本人未对其他版本进行测试,如用于X2.0之外的其他版本,请谨慎操作,以免造成不可能挽回的结果。

Ucenter通信原理:
1、用户登录bbs,通过logging.php文件中,使用函数uc_user_login验证,如果验证成功,将调用函数uc_user_synlogin(位于uc_client下的client.php文件中), 在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid));之后向UC_API.'/index.php'传递了数据;这里的UC_API就是在 config.inc.php中的定义的uc_server之URL地址

2、uc_server的index.php接受参数数据,获得model为user,action为synlogin,就调用control目录下的 user.php类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中的应用同步登录;即通过 get方式传递给应用目录中api下的uc.php一些数据;

3、uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie;

4、各个应用在适当的文件中用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过;
点击在新窗口中浏览此图片

以discuz举例:
一、用户登录检查与用户登录验证logging.php
在bbs的logging.php中如下代码段
  1. elseif($action == 'login') {  
  2.   
  3.  if($discuz_uid) {  
  4.   
  5.     $ucsynlogin = '';  
  6.   
  7.     showmessage('login_succeed'$indexname);  
  8.   
  9.  }  

检查用户id变量$discuz_uid是否为空来判断,用户是否登录(包括从别的应用登录。)
如果用户从bbs登录,则在登录验证成功后通过如下代码:
$ucsynlogin = $allowsynlogin ? uc_user_synlogin($discuz_uid) : '';

通知其它应用----“用户已从bbs登录,请通知其它应用设置cookie”
(uc_server通过javascript调用方式向其它应用的api/uc.php传递数据)
可以在uc应用目录下新建一个名为test.php的文件,来模拟登录成功,请求uc_server通知其它应用。文件内容为:
  1. < ?php  
  2.   
  3.  include_once "config.inc.php";  
  4.   
  5.  include_once "./uc_client/client.php";  
  6.   
  7.  echo uc_user_synlogin(1);  
  8.   
  9.  echo "<pre>";  
  10.   
  11.  var_dump($_COOKIE);  
  12.   
  13.  echo "</pre>";  
  14.   
  15.  ?>  
  16.    
  17. <script type="text/javascript">  
  18.   
  19.  var obj=document.getElementsByTagName("script");  
  20.   
  21.  for(var i=0;i<obj.length-1;i++) {  
  22.   
  23.     document.write("<a href=\""+obj.src+"\">"+obj.src+"</a><hr>");  
  24.   
  25.  }  
  26.   
  27.  </script>  

PS:这段测试代码还可以测试同步登录不好使的情况,具体使用方法,你可以思考一下(本文后面也有介绍),有问题可以在此文结尾发表评论与我讨论。
运行后,查看源代码即可看到javascript;
这里要注意了:这些javascript的通知中是不包含用户登录的应用的。也就是说只"通知"用户未登录的应用,因为用户通过uc_server登录成功的当前应用,当然不需要uc_server再通知了。具体代码请参看:webroot\uc_server\control\user.php中的onsynlogin函数的这句:
if($app['synlogin'] && $app['appid'] != $this->app['appid'])
代码解释:
$app['synlogin']是uc应用是否允许同步登录
而且应用id不等于用户当前登录的应用id
$app数组就是uc_server\data\cache\apps.php中的数组$_CACHE['apps'];
$this->app就是用户登录的应用

二、接受其它应用的同步登录通知:
在discuz的api目录下的uc.php中的函数synlogin,在这里接受uc_server发送过来的“同步登录通知”,并设置discuz的cookie,在这个函数中你可以查看到cookie的加密密钥的“算法”;
如果你想看看uc_server发送过的的“通知”是什么数据,你可以这么做:
1、修改要接受通知的应用目录下的api\uc.php,在$action = $get['action'];代码下面添加如下代码:
echo "<pre>";var_dump($get);echo "</pre>";die("<hr>api\uc.php");

2、将上面建立的test.php文件放置在其它允许同步登录的应用目录下,并在浏览器中运行,然后点击页面中对应第一步的应用链接,即可看到uc_server“通知”给改应用的数据;
  1. function synlogin($get$post)  
  2.   
  3. 在这个函数中通过_authcode函数,以密钥$discuz_auth_key加密了cookie;  
  4.   
  5. 在这里为了避免cookie名称冲突,在cookie名称(一般为:auth)前加了前缀($cookiepre),这个前缀也就是在config.inc.php中设置的那个cookie前缀值;  
  6.   
  7. 请看设置cookie的函数_setcookie:  
  8.   
  9. (通过参数$prefix来判断是否对cookie名称添加前缀$cookiepre)  
  10.   
  11. function _setcookie($var$value$life = 0, $prefix = 1) {  
  12.   
  13. lobal $cookiepre$cookiedomain$cookiepath$timestamp$_SERVER;  
  14.   
  15. setcookie(($prefix ? $cookiepre : '').$var$value,  
  16.   
  17. $life ? $timestamp + $life : 0, $cookiepath,  
  18.   
  19. $cookiedomain$_SERVER['SERVER_PORT'] == 443 ? 1 : 0);  
  20.   
  21.  }  
  22.   
  23. --------------------------------------------------------------------------  
  24. 密钥“算法”:   
  25.   
  26. $discuz_auth_key= md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);  
  27.   
  28. 也就是不同用户加密cookie的密钥可能不同;  

三、检查用户是否已登录(无论是那个应用下登录):
discuz的include目录中common.inc.php中有这样的代码:
  1. $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);  
  2.   
  3. list($discuz_pw$discuz_secques$discuz_uid) =  
  4.   
  5. emptyempty($_DCOOKIE['auth']) ? array('''', 0) : daddslashes(explode("\t", authcode($_DCOOKIE['auth'], 'DECODE')), 1);  

这段代码就是解码在uc.php中用密钥($discuz_auth_key)加密的cookie值,以获得用户id($discuz_uid)
这里的解密函数位于bbs\include\global.func.php中,虽然未给函数传递cookie密钥,但函数中通过全局变量$GLOBALS['discuz_auth_key'])获得密钥。

Ucenter App通信详细过程如图:
+阅读全文

禁止Apache在缺少默认文档页面时列出目录文件内容列表

如你所知,缺省条件下Apache服务器允许用户浏览目录的内容。如果你的网站根目录下有一个club的子目录,如果该目录下缺少定义的默认文档页面,当用户访问http://yourdomain/club/时apache会把此目录下的内容全列出来。这里就有些使用Apache的网友询问如何禁止Apache服务器列出目录内容?我们可以通过修改Apache配置文件httpd.conf中Options Indexes FollowSymLinks实现:

<Directory />
    Options Indexes Follo
......
+阅读全文

VMware厚置备延迟置零,厚置备置零,精简置备详解

本文详细介绍VMware厚置备延迟置零,厚置备置零,精简置备的概念及选择使用
1、厚置备延迟置零(zeroed thick)
以默认的厚格式创建虚拟磁盘。创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零。
简单的说就是立刻分配指定大小的空间,空间内数据暂时不清空,以后按需清空。

2、厚置备置零(eager zeroed thick)
......
+阅读全文