关于我们┊AboutMe

昵称:Hopol(■童■)

联系:QQ:18883

邮箱:info(at)18883.com

主页:www.18883.com

手机浏览 日志归档 RSS 2.0 订阅
Register | Login

浏览模式: 标准 | 列表全部文章

[置顶] 征集友情连接ING...

博客升级ING...

» 阅读全文

Tags: blog

[置顶] 私人小书签 - 随处捡垃圾的我

这篇日志被加密了,请输入密码后查看。

[置顶] CSS无所不能 【不能不看】

URL: http://www.cssplay.co.uk/menu/index.html

这些效果让人惊叹 !!!

Tags: css

[置顶] AJAX开发技术在PHP开发过程中的简单应用技巧

  AJAX无疑是2005年炒的最热的Web开发技术之一,当然,这个功劳离不开Google。我只是一个普通开发者,使用AJAX的地方不是特别多,我就简单的把我使用的心得说一下。(本文假设用户已经具有JavaScript、HTML、CSS等基本的Web开发能力)

  [AJAX介绍]

  Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。

  异步JavaScript和XML(AJAX)不是什么新技术,而是使用几种现有技术——包括级联样式表(CSS)、JavaScript、XHTML、XML和可扩展样式语言转换(XSLT),开发外观及操作类似桌面软件的Web应用软件。

  [AJAX执行原理]

  一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法(GET或 POST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。

  当你发送HTTP请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向 XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。

  [AJAX实际应用]

  1. 初始化Ajax

  Ajax实际上就是调用了XMLHttpRequest对象,那么首先我们的就必须调用这个对象,我们构建一个初始化Ajax的函数:

/**
* 初始化一个xmlhttp对象
*/
function InitAjax()
{
 var ajax=false;
 try {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   ajax = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   ajax = false;
  }
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') {
  ajax = new XMLHttpRequest();
 }
 return ajax;
}

  你也许会说,这个代码因为要调用XMLHTTP组件,是不是只有IE浏览器能使,不是的经我试验,Firefox也是能使用的。
那么我们在执行任何Ajax操作之前,都必须先调用我们的InitAjax()函数来实例化一个Ajax对象。

  2. 使用Get方式

  现在我们第一步来执行一个Get请求,加入我们需要获取 /show.php?id=1的数据,那么我们应该怎么做呢?

  假设有一个链接:<a href="/show.php?id=1">新闻1</a>,我点该链接的时候,不想任何刷新就能够看到链接的内容,那么我们该怎么做呢?

//将链接改为:
<a href="#" onClick="getNews(1)">新闻1</a>

//并且设置一个接收新闻的层,并且设置为不显示:
<div id="show_news"></div>

  同时构造相应的JavaScript函数:

function getNews(newsID)
{
 //如果没有把参数newsID传进来
 if (typeof(newsID) == 'undefined')
 {
  return false;
 }
 //需要进行Ajax的URL地址
 var url = "/show.php?id="+ newsID;

 //获取新闻显示层的位置
 var show = document.getElementById("show_news");

 //实例化Ajax对象
 var ajax = InitAjax();

 //使用Get方式进行请求
 ajax.open("GET", url, true);

 //获取执行状态
 ajax.onreadystatechange = function() {
  //如果执行是状态正常,那么就把返回的内容赋值给上面指定的层
  if (ajax.readyState == 4 && ajax.status == 200) {
   show.innerHTML = ajax.responseText;
  }
 }
 //发送空
 ajax.send(null);

  那么当,当用户点击“新闻1”这个链接的时候,在下面对应的层将显示获取的内容,而且页面没有任何刷新。当然,我们上面省略了show.php这个文件,我们只是假设show.php文件存在,并且能够正常工作的从数据库中把id为1的新闻提取出来。

  这种方式适应于页面中任何元素,包括表单等等,其实在应用中,对表单的操作是比较多的,针对表单,更多使用的是POST方式,这个下面将讲述。

  3. 使用POST方式

  其实POST方式跟Get方式是比较类似的,只是在执行Ajax的时候稍有不同,我们简单讲述一下。

  假设有一个用户输入资料的表单,我们在无刷新的情况下把用户资料保存到数据库中,同时给用户一个成功的提示。

//构建一个表单,表单中不需要action、method之类的属性,全部由ajax来搞定了。
<form name="user_info">
姓名:<input type="text" name="user_name" /><br />
年龄:<input type="text" name="user_age" /><br />
性别:<input type="text" name="user_sex" /><br />

<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
//构建一个接受返回信息的层:
<div id="msg"></div>


  我们看到上面的form表单里没有需要提交目标等信息,并且提交按钮的类型也只是button,那么所有操作都是靠onClick事件中的saveUserInfo()函数来执行了。我们描述一下这个函数:

 

function saveUserInfo()
{
 //获取接受返回信息层
 var msg = document.getElementById("msg");

 //获取表单对象和用户信息值
 var f = document.user_info;
 var userName = f.user_name.value;
 var userAge = f.user_age.value;
 var userSex = f.user_sex.value;

 //接收表单的URL地址
 var url = "/save_info.php";

 //需要POST的值,把每个变量都通过&来联接
 var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

 //实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open("POST", url, true);

 //定义传输的文件HTTP头信息
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

 //发送POST数据
 ajax.send(postStr);

 //获取执行状态
 ajax.onreadystatechange = function() {
  //如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) {
   msg.innerHTML = ajax.responseText;
  }
 }
}

  大致使用POST方式的过程就是这样,当然,实际开发情况可能会更复杂,这就需要开发者去慢慢琢磨。

  4. 异步回调(伪Ajax方式)

  一般情况下,使用Get、Post方式的Ajax我们都能够解决目前问题,只是应用复杂程度,当然,在开发中我们也许会碰到无法使用Ajax的时候,但是我们又需要模拟Ajax的效果,那么就可以使用伪Ajax的方式来实现我们的需求。

  伪Ajax大致原理就是说我们还是普通的表单提交,或者别的什么的,但是我们却是把提交的值目标是一个浮动框架,这样页面就不刷新了,但是呢,我们又需要看到我们的执行结果,当然可以使用JavaScript来模拟提示信息,但是,这不是真实的,所以我们就需要我们的执行结果来异步回调,告诉我们执行结果是怎么样的。

  假设我们的需求是需要上传一张图片,并且,需要知道图片上传后的状态,比如,是否上传成功、文件格式是否正确、文件大小是否正确等等。那么我们就需要我们的目标窗口把执行结果返回来给我们的窗口,这样就能够顺利的模拟一次Ajax调用的过程。

  以下代码稍微多一点, 并且涉及Smarty模板技术,如果不太了解,请阅读相关技术资料。

  上传文件:upload.html

//上传表单,指定target属性为浮动框架iframe1
<form action="/upload.php" method="post" enctype="multipart/form-data" name="upload_img" target="iframe1">
选择要上传的图片:<input type="file" name="image"><br />
<input type="submit" value="上传图片">
</form>
//显示提示信息的层
<div id="message" style="display:none"></div>

//用来做目标窗口的浮动框架
<iframe name="iframe1" width="0" height="0" scrolling="no"></iframe>

  处理上传的PHP文件:upload.php

<?php

/* 定义常量 */

//定义允许上传的MIME格式
define("UPLOAD_IMAGE_MIME", "image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png");
//图片允许大小,字节
define("UPLOAD_IMAGE_SIZE", 102400);
//图片大小用KB为单位来表示
define("UPLOAD_IMAGE_SIZE_KB", 100);
//图片上传的路径
define("UPLOAD_IMAGE_PATH", "./upload/");

//获取允许的图像格式
$mime = explode(",", USER_FACE_MIME);
$is_vaild = 0;

//遍历所有允许格式
foreach ($mime as $type)
{
 if ($_FILES['image']['type'] == $type)
 {
  $is_vaild = 1;
 }
}

//如果格式正确,并且没有超过大小就上传上去
if ($is_vaild && $_FILES['image']['size']<=USER_FACE_SIZE && $_FILES['image']['size']>0)
{
 if (move_uploaded_file($_FILES['image']['tmp_name'], USER_IMAGE_PATH . $_FILES['image']['name']))
 {
  $upload_msg ="上传图片成功!";
 }
 else
 {
  $upload_msg = "上传图片文件失败";
 }
}
else
{
 $upload_msg = "上传图片失败,可能是文件超过". USER_FACE_SIZE_KB ."KB、或者图片文件为空、或文件格式不正确";
}

//解析模板文件
$smarty->assign("upload_msg", $upload_msg);
$smarty->display("upload.tpl");

?>

模板文件:upload.tpl

{if $upload_msg != ""}
callbackMessage("{$upload_msg}");
{/if}

//回调的JavaScript函数,用来在父窗口显示信息
function callbackMessage(msg)
{
 //把父窗口显示消息的层打开
 parent.document.getElementById("message").style.display = "block";
 //把本窗口获取的消息写上去
 parent.document.getElementById("message").innerHTML = msg;
 //并且设置为3秒后自动关闭父窗口的消息显示
 setTimeout("parent.document.getElementById('message').style.display = 'none'", 3000);
}


  使用异步回调的方式过程有点复杂,但是基本实现了Ajax、以及信息提示的功能,如果接受模板的信息提示比较多,那么还可以通过设置层的方式来处理,这个随机应变吧。

  [结束语]

  这是一种非常良好的Web开发技术,虽然出现时间比较长,但是到现在才慢慢火起来,也希望带给Web开发界一次变革,让我们朝RIA(富客户端)的开发迈进,当然,任何东西有利也有弊端,如果过多的使用JavaScript,那么客户端将非常臃肿,不利于用户的浏览体验,如何在做到快速的亲前提下,还能够做到好的用户体验,这就需要Web开发者共同努力了。

 

Tags: ajax, 开发技术, php, 应用技巧

[置顶] PHP的十个高级技巧

全球超过300万个互联网网站的管理员都在使用PHP,使得它成为最为普及的服务器端脚本语言之一。其特点是运行速度快、稳定可靠、跨平台,而且是开放源代码软件。随你使用的水平不同,PHP可以很简单,也可以很复杂,可以只使用它发送HTML表格元素,还可以在PHP应用程序中集成Java和XML。  

  如果你对PHP有一定的了解或者看过一些初步的教材,这些技巧可以扩展你对PHP的认识,使你掌握一些常见的和高级的PHP功能。  

一、把PHP安装为Apache的DSO  
  PHP在Linux/Unix平台上经常与Apache搭配使用,在安装PHP时,有三种安装方式可供选择:静态模式、动态模式(DSO)、CGI二进制模式。  

  由于易于维护和升级,我强烈建议以DSO方式安装PHP。例如,初次安装时如果安装的PHP仅支持数据库,随后希望再安装支持加密的模块,只要运行“make clean”,添加新的配置选项,然后再运行“make”和“make install”即可,一个新的PHP模块就会安装在Apache中适当的位置上,然后重新启动Apache,而无需重新编译Apache。  

  下面的步骤将安装一个全新的Apache,并以DSO方式安装PHP:  

  1、从Apache软件基金会得到最新版本的Apache源代码;  

  2、把得到的源代码放到/usr/local/或者/opt/目录下,或者你指定的任意目录中;  

  3、运行Gunzip对文件进行解压缩,得到后缀为.tar的文件;  

  4、运行下面的命令,把文件安装到apache_[version]目录中:  

   tar -xvf apache_[version].tar  

  5、进入/usr/local/apache_[version]目录(或者在步骤4中安装压缩文件的目录);  

  6、键入下面的命令为编译Apache作准备,用你自己的路径替换其中的[path],例如,/usr/local/apache[version],现在已经设置了mod_so的新值,它将允许Apache使用DSO模块;  

  7、回到提示符状态后键入make,并等待再次回到提示符状态;  

  8、执行“make install”命令。  

  至此,Apache已经安装完毕,系统将重回到提示符状态。接下来我们开始安装PHP:  

  1、在PHP主页的下载区中找到最新版本的链接;  

  2、把文件下载到一个适当的目录中,例如/usr/local/或/opt/或者你指定的任意目录中;  

  3、运行Gunzip对文件进行解压缩,得到后缀为.tar的文件;  

  4、执行下面的命令把文件安装在php-[version]目录中:  

   tar -xvf php-[version]  

  5、进入/usr/local/php-[version]目录或在步骤4中指定的目录;  

  至此,已经作好了以DSO方式安装PHP的准备工作,唯一需要修改的配置选项是with-apxs(这是Apache的bin目录中的一个文件)。为了得到较高的性能,我没有安装对MySQL的支持模块。  

  ./configure --with-mysql=/[path to mysql] --with-apxs=/[path to apxs]  

  6、回到提示符状态后执行make命令,等待重新返回到提示符状态;  

  7、执行make install命令。  

  至此,系统以DSO方式在Apache的模块目录中安装了PHP,并对Apache的httpd.conf文件作适当的修改后返回到提示符状态。回到提示符状态后,你还需要对Apache的httpd.conf文件作一些修改。  

  1、找到包含有ServerAdmin的一行,添加你的电子邮件地址,如下所示:  

   ServerAdmin you@yourdomain.com  

  2、找到以ServerName开头的行,把它改为真正的值,例如:  

   ServerName localhost  

  3、找到内容如下所示的小节:  

  # And for PHP 4.x, use:  

  #  

  #AddType application/x-httpd-php .php  

  #AddType application/x-httpd-php-source .phps  

  修改这些行的内容,使PHP 4.0的AddType不再成为注释,并添加希望在PHP中使用的文件后缀名,上面的内容变为如下所示的内容:  

  # And for PHP 4.x, use:  

  #  

  AddType application/x-httpd-php .php .phtml  

  AddType application/x-httpd-php-source .phps  

  保存文件,回到上一级目录,执行下面的命令重新启动Apache:  

  ./bin/apachectl start  

  如果在启动时没有出现错误提示信息,就可以通过创建一个名为phpinfo.php的只有如下所示一行内容的文件,对安装的Apache、PHP进行测试:  

  <? phpinfo() ?>  

  把这个文件保存到Apache的文档根目录(htdocs)中,然后开启浏览器,键入http://localhost/phpinfo.php地址,屏幕上就会出现许多的变量和它们的值。  

  如果要重新配置PHP,需要再次运行make clean命令,然后执行带有一系列选项的./configure命令,然后再执行make和make install命令,Apache的目录模块中就会出现一个新的模块,只要再重新启动Apache加载这个新的模块,就一切OK了。  

二、使用PHP本身的对话  
  PHP 4.0中最令人期待的特性应该是对对话的支持,PHP 3.0的用户必须使用第三方的软件否则就不能使用对话,不支持对话一直是PHP最大的缺憾之一。  

  只要用户在浏览你的网站,你就可以利用对话维护与特定用户有关的变量,而无需建立多个cookie、使用隐藏表格字段或将信息存储在数据库中。  

  在一个网页上启动一个对话,就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话:  

session_start();  

  启动一个对话将通过cookie向用户发送一个识别字符串(例如940f8b05a40d5119c030c9c7745aead9),在服务器端,会创建一个与识别字符串匹配的临时文件,例如sess_940f8b05a40d5119c030c9c7745aead9,这个文件中包含注册的对话变量以及它们的值。  

  用来显示对话的作用的最常见的例子是访问计数器。启动PHP模块,确保PHP代码是文件的第一行,在PHP代码之前不要有空格、HTML代码和其他的代码。因为对话会发送一个头部,因此如果在session_start()之前有空格和HTML代码,就会得到一个出错信息。  

  <?  

  // 如果还不存在一个针对某用户的用户,则启动一个对话:  

  session_start();  

  然后注册一个名字为count的变量:  

  session_register(’count’);  

  注册一个对话变量后,只要对话存在,名字为count的变量也就存在。现在,count变量还没有被赋值,如果对它执行加1操作,它的值就变为了1。  

  $count++;  

  把上述内容综合在一块儿,如果还没有启动一个对话,就会启动一个对话;如果不存在一个对话id,就为用户指定一个好了,注册一个名字为$count的变量,对$count执行加1操作表示用户已经首次访问了该网页。  

  要知道用户在当前的对话中访问本页面的次数,只要显示$count变量的值即可:  

  echo "<P>You’ve been here $count times.</p>";  

  全部的访问计数器代码如下所示:  

  <?  

  session_start();  

  session_register(’count’);  

  $count++;  

  echo "<P>You’ve been here $count times.</p>";  

  ?>

Tags: php, 高级技巧

PHP在图片上写上中文[备份]

大小: 262.2 K
尺寸: 143 x 150
浏览: 0 次
点击打开新窗口浏览全图

下载地址:chinese.7z

TEMP 目录权限 777

HTTP://WWW.XXX.COM/PIC.PHP?t=这里输入文字





另一版本:

暂不支持中文

下载地址:property.rar

 

Tags: php, 图片, 中文, 源码

迅闪2008Bata2FAQ(最后整理时间080822)

一.常规知识


  • 我的迅闪2008服务端是最旧的版本.我升级发现为什么不一个一个版本升级?
    :只要你打开检查升级,系统自动升级到最新版本.无须担心遗漏.
  • 全新安装迅闪2008,启动游戏菜单,系统托盘还原按钮显示红色"X".
    :请确定您安装迅闪后正确设置了服务端\share\client.ini和客户端client.ini文件中的IP地址为你迅闪服务器IP.同时请ping测试网络环境是否畅通.
  • 迅闪2008安装后,为什么不用设置共享,客户机也可以访问?
    :迅闪2008B2已改变了原来的共享方式更新,改为TCP方式
  • 如何批量修改客户机中游戏路径?
    :在游戏分类列表中,多选您要修改路径的游戏,鼠标右键”批量修改”,按照说明修改.
  • 服务器菜单信息更新后,为什么不能立即客户端刷新出现?
    :服务器更新游戏后,菜单刷新出游戏有所延迟(节约网络资源),客户机重启会自动获取不影响使用,每次实时获取会影响服务器和网络性能,并影响菜单打开速度.
  • 如何查看客户机上网历史记录?
    :客户机上网记录保存在服务端目录下.可以使用HintUrlClient.exe(服务端目录下)工具查询用户上网记录.数据库为HintUrl.MDB,请注意备份保存数据库以备行政部门查询.
  • CGO2043虚拟磁盘映射在服务器上无法三层下载游戏
    :首先排除软件BUG,卸载相关安全软件,网络监控软件后.如果还有问题.我们可以把服务端搭建在任何一台其它电脑测试,如果正常设置下载,可以判断原服务器系统存在问题,建议重做系统.
  • 客户机提示未分组,但是服务已经分组了怎么回事?
    :发现部分用户使用双网卡绑定一起使用,解除绑定问题消失.还有部分用户使用批量生成客户机组造成问题,可以尝试把机器列表全部删除,重新连接添加同样解决问题.
  • 如何为已存在的游戏添加另一个图标?比如热血传奇,和传奇私服.
    :就拿刚才传奇所示,官方游戏直接搜索或者直接从迅闪下载.自动创建图标,传奇私服,我们可以创建快捷方式拖拽到游戏添加列表,名称不能与第一次添加名称相同即可.
  • 服务器没有的游戏,”生成图标,图标变成文件夹图标?
    :此问题在Build 0807212300版本已经解决.您可以把没有图标的游戏,至少编辑一次图标,系统自动生成服务端IconCache目录下,默认没有这个文件夹.
  • 为什么服务端ARP显示”未安装”?
    答(最先请确认网络连接属性是否有Hint Arp驱动)如果您已经安装过其它ARP保护软件,请卸载.同时我们发现如果安装过巡路ARP免疫墙,即使卸载安装一样报错.安装迅闪前,请用户一定排除以上问题.
  • 如何让菜单打开后显示指定菜单分类?
    答:您可以创建一个XsMenu.exe快捷方式放到桌面,修改快捷方式”目标位置”,添加参数/GameType:N其中N代表游戏菜单分类次序.例如想打开菜单第一个显示网络游戏如下: "D:\Program Files\HintSoft\XsServer\Share\XsMenu.exe" /GameType:1
  • 如何让桌面游戏快捷方式打开直接就更新游戏?
    答:您可以创建一个XsMenu.exe快捷方式保存到桌面,重命名成游戏名称,修改快捷方式”目标位置”,添加参数/Game:N 其中N代表游戏菜单中游戏名称.例如想打开桌面游戏”热血传奇”后直接更新游戏,如下格式"D:\Program Files\HintSoft\XsServer\Share\XsMenu.exe" /Game:热血传奇
  • 单机游戏没有注册表,不能运行,如何解决?
    答:迅闪软件已经实现注册表自动导入功能,如果网吧早期下载游戏没有注册表,请三层修复后再使用游戏.如果特殊游戏我们没有添加注册表,也可以手动在游戏编辑窗口添加.
  • 客户端使用个人磁盘功能,显示设备未就绪?
    :确认服务端是否正确设置存储文件夹,文件夹是否具备写权限等


二.两层更新

  • 为何游戏对比更新时会出现更新中断现象?
    :此问题我们应该从网络设置方面出发解决.点击网卡的属性,在高级选项里找到相关设置关闭.offload tcp largesend, Flow Control, checksum offload设置disabled.同时请确定您的系统未安装支持网络监控类的防火墙和杀毒软件,NOD32(文件实时监控和网络监控会误认病毒而篡改部分游戏传输的数据)
  • 游戏已经从官方更新到最新版本,可是三层更新的时候,依然需要大量更新数据?
    :某些游戏,在不同的终端上安装并更新后,其文件并不是完全一致的。例如完美世界最大的模型文件models.pck,在迅闪中心为682M,而用户自行升级的版本,则可能为760M。这种情况导致了更新量大。当用户持续从三层升级游戏,其更新量就会少很多。
  • 为什么最近有些游戏在服务器上能玩,更新到客户机后,却不能使用,甚至游戏数据大小也有差别.
    :如果您是迅闪2008 Bata2 Build 0806202220以前版本,或许出现过这样的Bug,我们已经在此版本解决.强烈建议你在线升级到最新. 同时对于已经损坏的游戏,用迅闪菜单强制修复游戏处理.
  • 为什么要索引文件?
    :迅闪2008提供了先进的索引算法对比更新游戏,网吧第一次安装迅闪服务端时,建议空闲时段索引所有游戏.否则只能按照普通的快照更新.无法体现快速更新.
  • 游戏索引文件存放在什么位置?
    : 游戏文件夹中的SpeedCopySnap.txtSpeedCopyDuce.dat文件既是游戏的索引文件!
  • 客户机游戏更新时,出现错误提示"TS更新失败,错误原因:得到要拷贝的文件数据时候异常".
    :请更新相关游戏索引即可解决问题.
  • 为什么客户机更新出现"更新失败:错误原因,创建套接口错误"
    :服务端未正常启动工作状态(speedserver.exe必须启动),或者客户机没有正常连接服务器.同时判断网络是否存在问题(注意关闭相关网络监控类杀毒软件和防火墙)
  • 迅闪两层更新速度很慢?
    答:先需要我们参照两层更新第1个问题排除,其次有些路由或交换机(比如TL-R4148),具备端口限速设置,请关闭限速功能.(并且我们必须排除共享拷贝本身慢,更细大量小文件,以及太多机器同时更新).
  • 客户机使用了压缩驱动器有什么后果?
    答:如果需要使用迅闪做穿透更新游戏,一定不能使用压缩驱动器,否则会导致穿透后文件损坏。
  • 为什么游戏ID0?
    :如果你是把游戏快捷方式拖拽到游戏添加类表中,ID0,建议使用搜索功能添加新游戏,这样如果官方已存在的游戏,会直接关联添加.并支持三层更新.


三.三层更新

  • svsXSDOWN服务无法启动,如何处理?
    :首先确定此服务端口8578未被其它软件占用,同时删除downlond下的XML里面的两个XML文件, (如果内存中有XSDOWNSVS.exe,请结束任务)重启服务.
  • xsCoreServer服务无法启动,如何处理?
    :首先确定XsCoreServer服务是否在系统中存在异常日志,如果有B1版本请卸载干净,同时关闭360,瑞星卡卡等安全工具. (如果内存中有CoreServer.exe,请结束任务)重启服务.
  • 下载日志显示“扫描本地文件变更错误”,如何处理?
    答:当用户手动更新了游戏内容并生成索引,三层判断出任务状态与上次不一致,会自动对此游戏进行环境清理,同时将此任务的更新延后到下一次刷新中心。这是一个常规提示性错误,不影响游戏更新。
  • 为什么三层更新所有游戏都下载到虚拟磁盘?
    :如果您设置了虚拟磁盘,游戏数据默认都下载到虚拟磁盘.我们需要保证虚拟磁盘游戏都是最新的.如果您有特殊需求,请手工修改成您需要的路径.
  • 三层更新几分钟后就自动断开或者显示负百分比也或者列表空白,日志中报错如何解决?
    :我们发现个别客户相关下载目录everyone用户没有权限.添加好权限后问题解决.同时游戏客户端本地路径一定要真实存在否则显示负百分比(-160%),也曾发现客户设置了不存在的物理盘符为虚拟磁盘.一一排除以上问题可以解决.
  • 升级到0807281530三层更新速度为0B/s 或者服务自动停止?
    : 请先按照以下步骤先排除.因为的确有部分用户有以下因素导致.必须先确定是最新把本.版本号 0807300250
    A.确定磁盘everyone是否开启完全权限(临时下载目录和保存目录)
    B.确定未安装第三方网络监控类安全软件
    C.删除download\xml\*.xml
    D.虚拟磁盘必须有真实存在的盘符
  • 三层下载列表为空?
    :我先排除是软件bug前提后,我们需要查看用户是否远程桌面打开了多个桌面.如果开启多个桌面,同时软件被启动多次,的确有下载报错或者列表为空.更有部分网吧会出现数据库损坏.

四.虚拟磁盘

  • Windows虚拟磁盘无法出盘?
    :请在系统设置\虚拟磁盘指定要虚拟的物理盘符和IP地址.如果您是Beta 2 Build 0807111226之前版本,请升级到最新.
  • CGO其它版本支持迅闪2008B2?
    :迅闪2008B2只支持2043版本,其他版本请把出盘程序覆盖服务器安装目录share\cgo\loadcgo.exe


五.迅闪还原

  • 在客户机手动安装还原后,游戏穿透不成功?
    :保持客户机和服务器还原设置密码一致.
  • 安装还原时报错(#1,#4).
    :安装还原出现错误,必须确认排除以下原因:
    A.不要使用MAXDOS7版本.
    B.不能有FAT32分区或FAT32分区转换成NTFS分区形式,绝对只能NTFS分区.
    C.磁盘空间保持1.5G以上,绝对不能低于1G.
    D.磁盘分区根目录必须有everyone写权限
    E.磁盘未使用压缩驱动器
    F.第三方机器狗或安全软件.
    G.其它还原软件
  • 游戏穿透还原更新后,文件一致,但是游戏无法打开或者运行?
    答:格式化硬盘时选择分配单元大小(簇),必须是4096字节


    六.安全中心
  • 迅闪2008Client.exe进程被非法结束后,系统是否有影响
    :即使Client.exe进程被结束,系统安全中心一样运行于后台保护系统,只是消息不会上报中心.
  • 为什么我的视频和U盘等外接设备在安装迅闪2008后不能使用?
    :请自己在安全中心,驱动防火墙处添加白名单列表.
  • 为什么安装迅闪2008客户端后,出现蓝屏现象.日志中显示hintroot.sys错误信息(英文)?
    :首先此问题牵涉到同类软件不兼容的问题.您可以检查机器是否安装了第三方ARP保护或安全防护软件.建议卸载后安装.同时修改一下注册表:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NwlnkNb]
    "Start"=dword:00000004
  • 在非迅闪2008B2版本中为什么也有难屏现象?
    :首先确认是否符合第3,同时确定是否出现硬件相关驱动不兼容问题.
  • 服务端安全中心中一直提示“保护进程被关闭”
    : 找个新按装的服务端中的servercfg.ini文件替换当前服务端bin\data\servercfg.ini,
    share\data\servercfg.ini
    路径下的文件,然后客户机重启!
  • 打开安全中心,系统提示” Create TCP Listen Socket Failed!”
    :问题是你多次启动了安全中心,请打开任务管理器查看用户登陆系统数量.

七.其它问题

  • 部分游戏杀毒软件误报列表
    答: 天机Online\tianjiprotector.exe
        侠义道\atl71.dll
        盛大富翁\sndafwSmall.ico
  • 部分用户魔兽世界正常更新后不能游戏?
    答:请确认魔兽世界文件名大小写。
  • 穿越火线游戏有卡机现象?
    答:请参照两层更新第1项修改网卡设置,同时修改XP系统默认连接数至1024以上.
  • 劲舞团有些机器可以玩,有些机器不能玩,而且肯定已经导入过注册表?
    答:请修改不能玩的游戏的兼容性模式,可以是兼容2000

Tags: 迅闪, 2008, faq, 知识库, 游戏菜单

用VirtualDubMod压制AVI格式电影或MV[手机电影]

一.前言

关于片源
想压制一部质量较好的电影或MV,片源是最重要的部分,没有好的片源,就算你有专业级的工具和超高水平的技术,压出来的效果也好不了多少,所以尽量找一些质量比较好的片源来压制!

关于制作标准

码率:
电影:动作大片码率统一用348kbps,剧情片码率统一用308kbps
MV:动态场景太多的MV码率用380kbps-580kbps,动态场景较少的MV码率用280kbps-380kbps
音质:
电影:统一用MPEG Audio Layer 3 24000Hz 立体声 64Kbps
MV:统一用MPEG Audio Layer 3 44100Hz 立体声 128Kbps

二.压制工作前的软件准备

1,阿飛㊣影音工具包下载
下载>>>㊣阿飛㊣影音工具包(AvPack-2007ATM0728版) 【百度随便都能找到】

2,VirtualDubMod下载
下载 :virtualdubmod.1.5.10.1.zip
解压密码:留E-MAIL
VirtualDubMod(简称vdm)已经包含字幕插件,解压后把PlugIns目录里的Vobsub.dll拷贝到windows\system32目录下!  [或者双击 绿色.BAT]

三.压制电影的实例应用
1.用VirtualDubMod(以下简称VDM)打开一个视频文件,点击[文件]-[文件信息]中查看视频文件的基本信息,可以看到即将转换的文件大小为640X272 Xvid压缩,音频部分为2声道立体声 采样48000Hz
大小: 50.09 K
尺寸: 150 x 143
浏览: 0 次
点击打开新窗口浏览全图

2.视频处理
(1).调整分辨率的大小
点击[视频]-[完全处理模式]
点击[视频]-[滤镜]
添加一个滤镜resize,这个滤镜就是用来调节视频画面大小的 
大小: 35.46 K
尺寸: 150 x 99
浏览: 0 次
点击打开新窗口浏览全图

A.不损失画面
PPC分辨率是320*240,如果你不想损失画面可以按照下面的公式简单的推算:转换后的高度=源文件的高度*320/源文件的宽度。
记得刚才看到的源文件的大小了么?转换后的的大小就是320*136
填好新的宽度和高度以后勾上[扩展框及字母框图像],填入320*240 
大小: 24 K
尺寸: 150 x 123
浏览: 0 次
点击打开新窗口浏览全图

B.损失画面
损失画面就是剪辑左右二边画面,画面大小重新调整为320X180,可以按照下面的公式简单的推算:左右二边剪辑宽度=(源文件的宽度-源文件的高度X320/180)/2
记得刚才看到的源文件的大小了么?左右二边剪辑宽度就是78
点击[视频]-[滤镜]
点击[剪辑]进入后在X1 X2处输入78 
大小: 57.89 K
尺寸: 150 x 88
浏览: 0 次
点击打开新窗口浏览全图

resize滤镜的画面大小需要重新调整为320X180 
大小: 62.28 K
尺寸: 150 x 78
浏览: 0 次
点击打开新窗口浏览全图

3.添加字幕
仍然是在滤镜中,字幕文件一般都是Srt文字字幕,选择TextSub 2.23滤镜,在弹出的对话框中打开需要压入的Srt字幕文件,然后打开样式,修改字幕字体大小、字幕位置等等,将字体下面的编码选为GB2312
大小: 36.32 K
尺寸: 150 x 112
浏览: 0 次
点击打开新窗口浏览全图

大小: 51.26 K
尺寸: 150 x 143
浏览: 0 次
点击打开新窗口浏览全图

4.压缩参数
下面给出压缩的一些基本参数(基于Xvid压缩),帧速最好不改变,动作大片码率统一用348kbps,剧情片码率统一用308kbps
压缩编码选择:[视频]-[压缩]-选择[Xvid Mpeg-4 Codec],点击右边的[配置],在弹出的对话框中修改码率为348,然后进入下面的[Quality preset],点击右边的[more]将VQH Mode选为4-wide search 
大小: 37.28 K
尺寸: 116 x 150
浏览: 0 次
点击打开新窗口浏览全图

大小: 29.11 K
尺寸: 125 x 150
浏览: 0 次
点击打开新窗口浏览全图

5.音频压缩处理

音频压缩参数,建议大家压缩格式为MP3,64Kbit/s 24000Hz Stereo
选择[流]-[流列表],可以看到该文件的音频信息,在上面点击右键选中[完全处理模式]。选中后一些选项就能看到了,选择[压缩]-选中[Mpeg Layer-3]并勾上显示所有格式,找到64Kbit/s 24000Hz Stereo并选择。选择[转换]将音频转换为采样频率为24000Hz ,选择[音量]将其放大到200%~400% 
大小: 42.83 K
尺寸: 150 x 100
浏览: 0 次
点击打开新窗口浏览全图

大小: 67.25 K
尺寸: 150 x 107
浏览: 0 次
点击打开新窗口浏览全图

大小: 27.04 K
尺寸: 150 x 122
浏览: 0 次
点击打开新窗口浏览全图

大小: 13.38 K
尺寸: 150 x 59
浏览: 0 次
点击打开新窗口浏览全图

6.正式压制
所有的参数都已经设置好了。点击[文件]-[另存为AVI]或者直接按F7均可开始转换!
大小: 30.37 K
尺寸: 144 x 150
浏览: 0 次
点击打开新窗口浏览全图

四.压制MV的实例应用
压制MV的方法和压电影的方法基本相同,不同之处在于剪裁黑边,因为大部分MV片源的黑边都没有剪裁干净,影响观看,我们就要动手剪裁!
下图是原始图片 
大小: 41.05 K
尺寸: 150 x 116
浏览: 0 次
点击打开新窗口浏览全图

剪裁黑边后
大小: 40.97 K
尺寸: 150 x 116
浏览: 0 次
点击打开新窗口浏览全图

调整分辨率的大小不能用压电影的公式,因为MV片源的分辨率不标准,这就要靠自己的经验调整到合适的分辨率(画面不变形)
大小: 69.97 K
尺寸: 150 x 84
浏览: 0 次
点击打开新窗口浏览全图

Tags: 压制, avi, 电影, mv, 手机电影

Records:47012345678910»