<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post/244/</link>
<title><![CDATA[解决WIN7以上系统远程桌面RDP刻录光驱问题]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Sun, 05 Jun 2016 07:17:53 +0000</pubDate> 
<guid>//gm.angeldm.com/post/244/</guid> 
<description>
<![CDATA[ 
	对于USB外置刻录机/光驱，远程桌面无法正常识别(例如提示找不到此格式的光盘)，需要启用以下设置才能使用：<br/><br/>1.打开组策略管理器<br/><br/>2.计算机配置->管理模板->系统->可移动存储访问->所有可移动存储: 允许在远程会话中直接访问->已启用。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/243/</link>
<title><![CDATA[x264中SAR参数解析]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Sat, 19 Dec 2015 03:04:04 +0000</pubDate> 
<guid>//gm.angeldm.com/post/243/</guid> 
<description>
<![CDATA[ 
	引用:<br/>1. Sample Aspect Ratio<br/><br/>* What is it?<br/><br/>The Sample Aspect Ratio (SAR) (sometimes called Pixel Aspect Ratio or just<br/>Pel Aspect Ratio) is defined as the ratio of the width of the sample to the<br/>height of the sample. While pixels on a computer monitor generally are<br/>"square" meaning that their SAR is 1:1, digitized video usually has rather<br/>odd SARs. Playback of material with a particular SAR on a system with<br/>a different SAR will result in a stretched/squashed image. A correction is<br/>necessary that relies on the knowledge of both SARs.<br/><br/>* How do I use it?<br/><br/>You can derive the SAR of an image from the width, height and the<br/>display aspect ratio (DAR) of the image as follows:<br/><div class="code"><br/>SAR_x&nbsp;&nbsp;&nbsp;&nbsp; DAR_x * height<br/>-------- = --------------------<br/>SAR_y&nbsp;&nbsp;&nbsp;&nbsp; DAR_y * width<br/></div><br/>for example:<br/><div class="code"><br/>width x height = 704x576, DAR = 4:3 ==&gt; SAR = 2304:2112 or 12:11<br/></div><br/><br/>Please note that if your material is a digitized analog signal, you should<br/>not use this equation to calculate the SAR.<br/><br/>* Should I use this option?<br/><br/>In one word: yes. Most decoders/ media players nowadays support automatic<br/>correction of aspect ratios, and there are just few exceptions. You should<br/>even use it, if the SAR of your material is 1:1, as the default of x264 is<br/>"SAR not defined".<br/><br/>译文：<br/>引用:<br/><br/>1. Sample Aspect Ratio （参照长宽比 or 样本长宽比 - -!用中文真不好表达...）<br/><br/>* sar是什么？<br/><br/>Sample Aspect Ratio (SAR)(有时被称为Pixel Aspect Ratio或 just Pel Aspect Ratio)定义了样本(sample)的宽相对于高的比值，而电脑显示器中的像素(Pixel)往往是“正方形”的(我们的显示器是由点阵组成的，1024x768相当于横向有1024个点，纵向有768个点，所以说，图像的分辨率越高，画面越细腻，原因就是点变小了，我们的眼睛感觉不到它的存在了)，它们的sar是1:1，而数据化的视频往往有一个odd sar，在一个系统上，素材的播放是根据特定的sar来的，不同的sar会导致图像的拉伸或者挤压，一个校正值是必须的，它依赖于两者的SAR必须是已知的(就是说，必须知道原始SAR和目标SAR，才能计算这个校正值)<br/><br/>* 我该怎么使用它?<br/><br/>你可以根据图像的宽，高以及display aspect ratio (DAR)[显示长宽比，就是你想让它在播放的时候有效图像显示的长宽比]来计算出sar，参考以下公式:<br/><br/><div class="code"><br/>SAR_x&nbsp;&nbsp;&nbsp;&nbsp; DAR_x * height<br/>-------- = --------------------<br/>SAR_y&nbsp;&nbsp;&nbsp;&nbsp; DAR_y * width<br/></div><br/><br/>举个例子:<br/><div class="code"><br/>宽（横向） x 高（纵向） = 704x576, DAR = 4:3 ==&gt; SAR = 2304:2112 or 12:11<br/></div><br/><br/>注意，如果你的素材是一个数字化的模拟信号，你不应该使用这个公式去计算sar<br/><br/>* 我该如何去使用这个选项?<br/><br/>引用一句话：是的。大部分的解码器/播放器 都支持自动校正长宽比，但也有少数例外。你甚至可以这样使用它，如果你的素材SAR是1:1,用x264默认值"SAR not defined"(- -!补上X264命令行用法--sar x:y )<br/><br/><br/>OK，看完以上理论，你应该大致明白sar的计算方法了，下面来说说16:9DVD RIP成4:3后还原为16:9的方法<br/><br/>假如我把正统的可变形DVD 720x480 RIP成640x480，而我在播放的时候想重新拉伸成16:9<br/><br/>代入公式：<br/><div class="code"><br/>SAR_x&nbsp;&nbsp; 16 * 480&nbsp;&nbsp;&nbsp;&nbsp; 4<br/>----- = -------------- = ----- = 1.33333333333333...<br/>SAR_y&nbsp;&nbsp; 9&nbsp;&nbsp;* 640&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br/></div><br/><br/>公式解释：<br/><div class="code"><br/>输出高X比例宽&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 480X16<br/>------------------ =sar值&nbsp;&nbsp;&nbsp;&nbsp; 例如转一个720X480的16：9的视屏，根据公式得sar=----------=32：27<br/>输出宽X比例高&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;720X9<br/></div><br/><br/>为什么psp中的480P的sar为40：33？原因psp只能显示704x480的视屏，720中的16像素被sony裁去，所以要以704X480代入公式计算，最后得出sar为40：33
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/242/</link>
<title><![CDATA[DVDRIP 切边与Resize（或SAR）]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Sat, 19 Dec 2015 03:03:28 +0000</pubDate> 
<guid>//gm.angeldm.com/post/242/</guid> 
<description>
<![CDATA[ 
	首先科普下何为DVDRIP，所谓DVDRIP，就是以DVD为片源，通过各种编码压制后，便于播放存储的文件。很多时候你在网上下载到的DVDISO镜像文件，你还要蛋疼的装各种虚拟光驱软件载入播放，非常的不便，DVDRIP就应运而生了。现在主流的编码都是x264，封装格式大多是MKV及MP4。DVDRIP的目标是尽量还原片源的质量，并且在容量上缩小体积，而且有良好的通用性。<br/><br/>可是DVD是给电视看的，跟电脑上的分辨率有很大差异，你可能会说我电脑播DVDISO一切正常，那是因为处理分辨率的问题都给播放器处理了，但如果要自己DVDRIP，播放器可不会帮你的，因此需要对视频的分辨率比例进行手动修正来适应电脑，这就是本文主要说的东西。<br/><br/>这里谈及的DVD片源都是NTSC制式。现在的主流基本都是1280x720、1920x1080等16:9的分辨率，因此这里就不说有关4:3的了，有兴趣的朋友可以移步这里。<br/><br/>先说说一个重要的概念，AE（Aspect Error），可以理解为屏幕比误差值，任何东西都不是完美的，DVDRIP也是，修正的过程，无论如何都会出现损耗误差（如果电视电脑标准一样就好了），这就是AE，越接近0，也就越“完美”，AE计算非常高深，这里也就不谈了。<br/><br/><strong>切边+Resize法</strong><br/><br/>原理：720*480的片源->左右共切掉9点变成711*480->Resize成864*480<br/><br/>AVS实现方法：LanczosrResize(864,480,4,0,-5,0)<br/><br/>到此已经可以了，不过如果还有黑边，可以继续左右切8点变为856*480，或者再继续左右切8点变为848*480。<br/><br/>856既不严格等于16：9，也不是16mod，算是个折中的东西。因此864或848较好。<br/><br/>优点：AE=0，因为只扩大不缩小，切得比较少，又没有动纵向分辨率，宽高又都是16mod，所以是最理想的一种做法。<br/><br/>缺点：不是纯16：9分辨率，如果在16：9的设备上播放，上下会有那么一点点黑边。另外播放器播放时其实做了两次Resize（压制和播放），相对会有点失真。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;实际压制中可能会碰到不能切奇数的问题，如上面所说的5。这种情况我是切少1点的，不知道是对是错，心想这点误差对用户体验来说应该影响不大。<br/><br/><strong>SAR法</strong><br/><br/>原理：通过压制时添加SAR值来使到播放器自动调整分辨率<br/><br/>实现方法：有黑边就统一切到704x480，没黑边不用切。压制时添加SAR值：40:33（如果目标是4:3则为10:11）<br/><br/>优点：只切边（或没切），不Resize。只在播放过程中Resize一次，可以将失真降到最低。<br/><br/>缺点：不一定所有解码器都支持根据数据流（或容器）中的SAR信息来调整画面。因此可能在某些比较老版本的播放器环境中出现不变形的问题。此外，根据播放环境的不容，缩放时使用的算法不一定相同。缩放质量就成了播放过程中的问题，就意味着其品质成为非压制环节可控因素。<br/><br/>======<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;如果想追求绝对的16：9的比例，无论有无黑边都是需要先切到704再设置SAR 40:33才能出来16：9的比例的。如果不切边直接设置40：33，出来的比例虽然也是正确的，但就不是16：9了。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/241/</link>
<title><![CDATA[Foobar2000 WASAPI提示无法打开设备解决方法]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Wed, 07 Oct 2015 07:26:36 +0000</pubDate> 
<guid>//gm.angeldm.com/post/241/</guid> 
<description>
<![CDATA[ 
	如果出现提示无法打开设备 (88890020)，把缓冲设置到500毫秒或以下就可以用了。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/240/</link>
<title><![CDATA[DirectAdmin安装Ioncube/Zend Optimizer/Zend Guard组件]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[网络应用]]></category>
<pubDate>Sat, 29 Nov 2014 12:26:41 +0000</pubDate> 
<guid>//gm.angeldm.com/post/240/</guid> 
<description>
<![CDATA[ 
	安装Zend，输入<br/><div class="code"><br/>cd /usr/local/directadmin/custombuild<br/>./build set zend yes<br/>./build zend<br/></div><br/><br/>执行这个命令会自动安装对应版本的Zend (Optimizer/Guard)，如果当前PHP版本没有Zend可用，就会出现一个提示。<br/><br/>安装Ioncube，输入<br/><div class="code"><br/>cd /usr/local/directadmin/custombuild<br/>./build set ioncube yes<br/>./build ioncube<br/></div><br/><br/>“./build set”命令的意思是修改options.conf配置文件的选项，设定为Yes再执行build脚本可以单独增加对应的功能。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/239/</link>
<title><![CDATA[xen/ovz利用QEMU虚拟windwos教程]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Thu, 02 Jan 2014 14:53:03 +0000</pubDate> 
<guid>//gm.angeldm.com/post/239/</guid> 
<description>
<![CDATA[ 
	首先，vps要ovz或者xen<br/><br/>以下例子为centos 5.X&nbsp;&nbsp;32/64系统，其它系统需要对应修改。<br/><br/>1.清理不必要的文件和关闭不必要的服务提升效率<br/><div class="code"><br/>yum -y remove httpd<br/><br/>yum -y remove Deployment_Guide-en-US finger cups-libs cups bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools <br/><br/>service&nbsp;&nbsp; acpid&nbsp;&nbsp;off<br/>service&nbsp;&nbsp; atd&nbsp;&nbsp;&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; auditd stop<br/>service&nbsp;&nbsp; avahi-daemon stop<br/>service&nbsp;&nbsp; avahi-dnsconfd stop<br/>service&nbsp;&nbsp; bluetooth&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; conman stop<br/>service&nbsp;&nbsp; cpuspeed&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; cups stop<br/>service&nbsp;&nbsp; dnsmasq stop<br/>service&nbsp;&nbsp; dund stop<br/>service&nbsp;&nbsp; firstboot&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; hidd stop<br/>service&nbsp;&nbsp; httpd&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; ibmasm stop<br/>service&nbsp;&nbsp; ip6tables stop<br/>service&nbsp;&nbsp; iptables stop<br/>service&nbsp;&nbsp; irda stop<br/>service&nbsp;&nbsp; kdump stop<br/>service&nbsp;&nbsp; lm_sensors stop<br/>service&nbsp;&nbsp; mcstrans stop<br/>service&nbsp;&nbsp; messagebus stop<br/>service&nbsp;&nbsp; microcode_ctl&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; netconsole stop<br/>service&nbsp;&nbsp; netfs&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; netplugd stop<br/>service&nbsp;&nbsp; nfs stop<br/>service&nbsp;&nbsp; nfslock stop<br/>service&nbsp;&nbsp; nscd stop <br/>service&nbsp;&nbsp; ntpd&nbsp;&nbsp;stop <br/>service&nbsp;&nbsp; oddjobd stop <br/>service&nbsp;&nbsp; pand stop <br/>service&nbsp;&nbsp; pcscd stop <br/>service&nbsp;&nbsp; portmap stop <br/>service&nbsp;&nbsp; psacct stop <br/>service&nbsp;&nbsp; rdisc stop <br/>service&nbsp;&nbsp; restorecond stop <br/>service&nbsp;&nbsp; rpcgssd&nbsp;&nbsp;stop <br/>service&nbsp;&nbsp; rpcidmapd stop <br/>service&nbsp;&nbsp; rpcsvcgssd stop <br/>service&nbsp;&nbsp; saslauthd stop <br/>service&nbsp;&nbsp; sendmail&nbsp;&nbsp;stop <br/>service&nbsp;&nbsp; setroubleshoot&nbsp;&nbsp;stop <br/>service&nbsp;&nbsp; smb stop <br/>service&nbsp;&nbsp; vncserver stop<br/>service&nbsp;&nbsp; winbind&nbsp;&nbsp;stop<br/>service&nbsp;&nbsp; wpa_supplicant stop<br/>service&nbsp;&nbsp; xfs stop<br/>service&nbsp;&nbsp; ypbind stop<br/>service&nbsp;&nbsp; yum-updatesd stop<br/>chkconfig&nbsp;&nbsp; acpid&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; atd&nbsp;&nbsp;&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; auditd off<br/>chkconfig&nbsp;&nbsp; avahi-daemon off<br/>chkconfig&nbsp;&nbsp; avahi-dnsconfd off<br/>chkconfig&nbsp;&nbsp; bluetooth&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; conman off<br/>chkconfig&nbsp;&nbsp; cpuspeed&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; cups off<br/>chkconfig&nbsp;&nbsp; dnsmasq off<br/>chkconfig&nbsp;&nbsp; dund off<br/>chkconfig&nbsp;&nbsp; firstboot&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; hidd off<br/>chkconfig&nbsp;&nbsp; httpd&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; ibmasm off<br/>chkconfig&nbsp;&nbsp; ip6tables off<br/>chkconfig&nbsp;&nbsp; iptables off<br/>chkconfig&nbsp;&nbsp; irda off<br/>chkconfig&nbsp;&nbsp; kdump off<br/>chkconfig&nbsp;&nbsp; lm_sensors off<br/>chkconfig&nbsp;&nbsp; mcstrans off<br/>chkconfig&nbsp;&nbsp; messagebus off<br/>chkconfig&nbsp;&nbsp; microcode_ctl&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; netconsole off<br/>chkconfig&nbsp;&nbsp; netfs&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; netplugd off<br/>chkconfig&nbsp;&nbsp; nfs off<br/>chkconfig&nbsp;&nbsp; nfslock off<br/>chkconfig&nbsp;&nbsp; nscd off <br/>chkconfig&nbsp;&nbsp; ntpd&nbsp;&nbsp;off <br/>chkconfig&nbsp;&nbsp; oddjobd off <br/>chkconfig&nbsp;&nbsp; pand off <br/>chkconfig&nbsp;&nbsp; pcscd off <br/>chkconfig&nbsp;&nbsp; portmap off <br/>chkconfig&nbsp;&nbsp; psacct off <br/>chkconfig&nbsp;&nbsp; rdisc off <br/>chkconfig&nbsp;&nbsp; restorecond off <br/>chkconfig&nbsp;&nbsp; rpcgssd&nbsp;&nbsp;off <br/>chkconfig&nbsp;&nbsp; rpcidmapd off <br/>chkconfig&nbsp;&nbsp; rpcsvcgssd off <br/>chkconfig&nbsp;&nbsp; saslauthd off <br/>chkconfig&nbsp;&nbsp; sendmail&nbsp;&nbsp;off <br/>chkconfig&nbsp;&nbsp; setroubleshoot&nbsp;&nbsp;off <br/>chkconfig&nbsp;&nbsp; smb off <br/>chkconfig&nbsp;&nbsp; vncserver off<br/>chkconfig&nbsp;&nbsp; winbind&nbsp;&nbsp;off<br/>chkconfig&nbsp;&nbsp; wpa_supplicant off<br/>chkconfig&nbsp;&nbsp; xfs off<br/>chkconfig&nbsp;&nbsp; ypbind off<br/>chkconfig&nbsp;&nbsp; yum-updatesd off <br/>yum clean all<br/></div><br/><br/>2.安装Linux GUI图形界面(这里以GNOME为例，也可以装KDE等等)<br/><div class="code"><br/>yum -y groupremove &quot;GNOME Desktop Environment&quot;<br/>yum -y update<br/>yum clean all <br/></div><br/><br/>3.安装VNCSERVER，让Linux可以远程连接图形界面<br/><div class="code"><br/>这里省略，详情参考 CentOS安装轻量级桌面Fluxbox+VNC<br/></div><br/><br/>4.安装QEMU虚拟机(CentOS5.X以外的系统建议直接下载所需的rpm，再根据提示补完组件。)<br/><div class="code"><br/>#安装所需的组件<br/>yum install libICE.so.6 libImlib.so.1 libORBit-2.so.0 libSM.so.6 libX11.so.6 libXext.so.6 libXft.so.2 libXinerama.so.1 libXrandr.so.2 libXrender.so.1 libart_lgpl_2.so.2 libatk-1.0.so.0 libbonobo-2.so.0 libbonobo-activation.so.4 libbonoboui-2.so.0 libcairo.so.2 libfontconfig.so.1 libfreetype.so.6 libgconf-2.so.4 libgdk-x11-2.0.so.0 libgdk_pixbuf-2.0.so.0 libgnome-2.so.0 libgnome-desktop-2.so.2 libgnome-keyring.so.0 libgnomecanvas-2.so.0 libgnomeui-2.so.0 libgnomevfs-2.so.0 libgtk-x11-2.0.so.0 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libstartup-notification-1.so.0 libungif.so.4 gtk+ libgdk-1.2.so.0 libglib-1.2.so.0 libgmodule-1.2.so.0 libgtk-1.2.so.0 libSDL-1.2.so.0 libX11.so.6 libasound.so.2 libbluetooth.so.2 libesd.so.0 curl ncurses -y<br/><br/>#安装QEMU所需RPM包<br/>wget http://pkgs.repoforge.org/qemu/qemu-0.14.1-2.el5.rfx.i386.rpm<br/>wget&nbsp;&nbsp;http://pkgs.repoforge.org/qemu/qemu-img-0.14.1-2.el5.rfx.i386.rpm<br/>wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/imlib-1.9.13-1.el5.rf.i386.rpm<br/><br/>rpm -i imlib-1.9.13-1.el5.rf.i386.rpm<br/>rpm -i qemu-img-0.14.1-2.el5.rfx.i386.rpm<br/>rpm -i qemu-0.14.1-2.el5.rfx.i386.rpm<br/></div><br/><br/>5.创建虚拟机镜像文件<br/><div class="code"><br/>#2k3.img为镜像文件名称，10G为镜像文件大小<br/>qemu-img create -f qcow 2k3.img 10G<br/></div><br/><br/>6.启动VNC(已启动可以跳过此步)<br/><div class="code"><br/>vncserver<br/></div><br/><br/>7.连接VNC<br/><br/>8.加载ISO文件到虚拟光驱并启动镜像<br/><div class="code"><br/>#system.iso为ISO文件名，2k3.img为虚拟机镜像文件<br/>qemu -cdrom system.iso -m 512M -boot d 2k3.img<br/></div><br/><br/>安装完成之后，就可以使用了。<br/><br/>这个是直接启动虚拟机的命令<br/><div class="code"><br/>#启动虚拟机，禁用usb，转发3389端口到宿主系统;389为主机端口，3389为虚拟机端口<br/>qemu -hda 2k3.img -boot c -m 512M -k de -usb -redir tcp:389::3389<br/></div><br/><br/>
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/238/</link>
<title><![CDATA[Centos下yum安装GNOME和KDE桌面]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Thu, 02 Jan 2014 04:56:50 +0000</pubDate> 
<guid>//gm.angeldm.com/post/238/</guid> 
<description>
<![CDATA[ 
	显示系统已经安装的组件，和可以安装的组件:<br/>#yum grouplist<br/><br/>如果系统安装之初采用最小化安装，没有安装xwindow，那么先安装：<br/>#yum groupinstall “X Window System”<br/><br/>安装GNOME桌面环境(名称可能不一样，需要查看grouplist里面的名称)<br/>yum groupinstall “GNOME Desktop Environment”<br/><br/>安装KDE桌面环境(名称可能不一样，需要查看grouplist里面的名称)<br/>yum groupinstall “KDE (K Desktop Environment)”<br/><br/>卸载GNOME桌面环境<br/>yum groupremove “GNOME Desktop Environment”<br/><br/>卸载KDE桌面环境<br/>yum groupremove “KDE (K Desktop Environment)”
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/237/</link>
<title><![CDATA[nginx - 缓存过期影响因素优先级分析]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[网络应用]]></category>
<pubDate>Mon, 16 Dec 2013 03:44:38 +0000</pubDate> 
<guid>//gm.angeldm.com/post/237/</guid> 
<description>
<![CDATA[ 
	首先对测试环境进行说明<br/><br/>测试的架构如图所示：<br/><br/>client端&nbsp;&nbsp;<------------------>&nbsp;&nbsp; nginx cache <------------------>源服务器<br/><br/>经过大量测试发现：nginx的过期顺序是有一个优先级的。下面首先说明各个影响缓存过期的因素：<br/><br/>（1）inactive:在proxy_cache_path配置项中进行配置，说明某个缓存在inactive指定的时间内如果不访问，将会从缓存中删除。<br/><br/>（2）源服务器php页面中生成的响应头中的Expires，生成语句为：<br/><br/>header("Expires: Fri, 07 Sep 2013 08:05:18 GMT");<br/><br/>（3）源服务器php页面生成的max-age，生成语句为：<br/><br/>header("Cache-Control: max-age=60");<br/><br/>（4）nginx的配置项 proxy_cache_valid:配置nginx cache中的缓存文件的缓存时间，如果配置项为：proxy_cache_valid 200 304 2m;说明对于状态为200和304的缓存文件的缓存时间是2分钟，两分钟之后再访问该缓存文件时，文件会过期，从而去源服务器重新取数据。<br/><br/>其次对需要注意的一点：源服务器的expires和nginx cache的expires配置项的冲突进行说明，场景如下<br/><br/>（1）源服务器端有php文件ta1.php内容如下：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2013 08:05:18 GMT&quot;);<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=60&quot;);<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>（2）在nginx cache服务器端的配置信息如下：<br/><div class="code"><br/>......<br/><br/>proxy_cache_path&nbsp;&nbsp;/data0/proxy_cache_dir&nbsp;&nbsp;levels=1:2&nbsp;&nbsp; keys_zone=cache_one:200m inactive=5s max_size=30g;<br/><br/>......<br/><br/>location ~ .*&#92;.(php&#124;jsp&#124;cgi)$<br/><br/>&nbsp;&nbsp;&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_read_timeout 10s;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_connect_timeout 10s;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header Host $host;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_cache_use_stale updating;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_cache_key $host$uri$is_args$args;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_cache cache_one;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; #proxy_ignore_headers &quot;Cache-Control&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#proxy_hide_header &quot;Cache-Control&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#proxy_ignore_headers &quot;Expires&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#proxy_hide_header &quot;Expires&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_hide_header &quot;Set-Cookie&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_ignore_headers &quot;Set-Cookie&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; #add_header Cache-Control max-age=60;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;add_header X-Cache &#039;$upstream_cache_status from $server_addr&#039;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_cache_valid 200 304 2m;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; #proxy_cache_valid any 0m;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass http://backend_server;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expires 30s;<br/><br/>&nbsp;&nbsp;&#125;<br/><br/>.......<br/></div><br/>从上面两项可以看出nginx cache 服务器中expires的配置是30s，该expires的值直接决定了在浏览器端看到的max-age以及expires的值。而源服务器断的代码中设置的响应头中的max-age为60，expires为Fri, 07 Sep 2013 08:05:18 GMT。这是源服务器的设置于nginx-cache的设置冲突了，那么着两个属性应该怎么设置呢？<br/><br/>这时client端的max-age与expires的值按照nginx cache中的expires配置项的设置，即:<br/><br/>Expires&nbsp;&nbsp;Fri, 07 Sep 2012 08:59:16 GMT<br/><br/>Cache-Controlmax-age=30<br/><br/>而nginx cache端的缓存的max-age与expire的值按照源服务器上的代码的设置。即：<br/><br/>Expires&nbsp;&nbsp;Fri, 07 Sep 2013 08:05:18 GMT<br/><br/>Cache-Controlmax-age=60<br/><br/>现在步入正题：<br/><br/>经过大量测试发现：对缓存的过期与清除起作用的因素的优先级从高到低一次为：<br/><br/>inactive配置项、源服务器设置的Expires、源服务器设置的Max-Age、proxy_cache_valid配置项<br/><br/>下面通过几个实例对这几个优先级进行说明<br/><br/>实例1：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2012 08:03:18 GMT&quot;);//其实是3分钟之后<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=180&quot;);//2分钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 4m//4分钟<br/><br/>proxy_cache_valid 1m//1分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>1分钟之后 ：&nbsp;&nbsp;&nbsp;&nbsp;HIT//这说明valid没有起作用<br/><br/>2分钟之后 ：&nbsp;&nbsp;&nbsp;&nbsp;HIT//这说明 源服务器设置的max-age没有起作用<br/><br/>3分钟之后：&nbsp;&nbsp;&nbsp;&nbsp; MISS//这说明源服务器设置的Expires起作用了<br/><br/>4分钟之后：&nbsp;&nbsp;&nbsp;&nbsp; MISS//这说明inactive起作用了<br/><br/>实例2：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2012 08:03:18 GMT&quot;);//3分钟之后<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=180&quot;);//2分钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 10s//10秒钟<br/><br/>proxy_cache_valid 1m//1分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>5秒后访问：HIT<br/><br/>10秒后访问: MISS<br/><br/>15秒后访问：HIT<br/><br/>20秒后访问:MISS<br/><br/>通过实例1和实例2综合分析：如果inactive已经进行了设置，则缓存的过期时间以inactive设置的值为准。<br/><br/>实例3：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 1977 08:03:18 GMT&quot;);//直接过期<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=120&quot;);//2分钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 4m//4分钟<br/><br/>proxy_cache_valid 1m//1分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>每隔一秒访问一次：MISS//这说明源服务器端设置的Expires屏蔽了nginx的valide和源服务器端设置的max-age的作用<br/><br/>实例4：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2012 08:03:18 GMT&quot;);//3分钟之后<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=120&quot;);//2分钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 4m//4分钟<br/><br/>proxy_cache_valid 1m//1分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>1分钟之后 ：&nbsp;&nbsp; HIT//这说明valid没有起作用，因为源服务器设置的Expires将valid的效果屏蔽了<br/><br/>2分钟之后 ：&nbsp;&nbsp; HIT//这说明 源服务器设置的max-age没有起作用，因为源服务器设置的Expires将max-age屏蔽了<br/><br/>3分钟之后：&nbsp;&nbsp;&nbsp;&nbsp;MISS//这说明服务器端设置的expires起作用了<br/><br/>通过实例2和实例3的现象说明：如果inactive设置的比较大，在inactive到期之前，如果valid、服务器端设置的expires、服务器端设置的max-age都进行了设置，则以服务器端设置的expires为准。<br/><br/>实例5：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2012 08:03:18 GMT&quot;);//3分钟之后<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=120&quot;);//2分钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 4m//4分钟<br/><br/>#下面两行用于消除服务器端配置的Expires响应头的影响<br/><br/>proxy_ignore_headers "Expires";<br/><br/>proxy_hide_header "Expires";<br/><br/>proxy_cache_valid 1m//1分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>1分钟之后&nbsp;&nbsp; HIT //这说明valid的作用已经被服务器端的max-age屏蔽<br/><br/>2分钟之后&nbsp;&nbsp; MISS//服务器端设置的max-age起作用<br/><br/>实例6：<br/><br/>服务器端php代码：<br/><div class="code"><br/>&lt;?php<br/><br/>header(&quot;Expires: Fri, 07 Sep 2012 08:03:18 GMT&quot;);//3分钟之后<br/><br/>header(&quot;Last-Modified: &quot; . gmdate(&quot;D, d M Y H:i:s&quot;) . &quot; GMT&quot;);<br/><br/>header(&quot;Cache-Control: max-age=50&quot;);//50秒钟<br/><br/>//header(&quot;Cache-Control: post-check=0, pre-check=0&quot;, false);<br/><br/>echo &quot;ta1&quot;;<br/><br/>?&gt;<br/></div><br/>nginx cache 配置项<br/><br/>inactive 4m//4分钟<br/><br/>#下面两行用于消除服务器端配置的Expires响应头的影响<br/><br/>proxy_ignore_headers "Expires";<br/><br/>proxy_hide_header "Expires";<br/><br/>proxy_cache_valid 2m//2分钟<br/><br/>现象：第一次访问页面ta1.php之后，各个时间的访问结果：<br/><br/>50秒钟之后 ：&nbsp;&nbsp; MISS//这说明服务器端配置的max-age起作用<br/><br/>1分钟之后 ：&nbsp;&nbsp; HIT//<br/><br/>100秒钟之后：&nbsp;&nbsp; MISS//这说明服务器端设置的max-age起作用了<br/><br/>通过实例5和实例6的现象说明：如果inactive设置的比较大，而且在nginx配置文件中取消服务器端Expires对缓存的影响。在同时设置了proxy_cache_valid和服务器端设置了max-age响应头字段的情况下，以服务器端设置的max-age的值为标准进行缓存过期处理。<br/><br/>综上所述：<br/><br/>（1）在同时设置了源服务器端Expires、源服务器端max-age和nginx cahe端的proxy_cache_valid的情况下，以源服务器端设置的Expires的值为标准进行缓存的过期处理<br/><br/>（2）若在nginx中配置了相关配置项，取消原服务器端Expires对缓存的影响，在同时设置了源服务器端Expires、源服务器端max-age和nginx cahe端的proxy_cache_valid的情况下，以源服务器端max-age的值为标准进行缓存的过期处理<br/><br/>（3）若同时取消源服务器端Expires和源服务器端max-age对缓存的影响，则以proxy_cache_valid设置的值为标准进行缓存的过期处理<br/><br/>（4）Inactive的值不受上述三个因素的影响，即第一次请求页面之后，每经过inactvie指定的时间，都要强制进行相应的缓存清理。因此inactive的优先级最高。<br/><br/>（5）所以对缓存过期影响的优先级进行排序为：inactvie、源服务器端Expires、源服务器端max-age、proxy_cache_valid。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/236/</link>
<title><![CDATA[Linux Centos修改启动项命令]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Wed, 04 Dec 2013 01:46:58 +0000</pubDate> 
<guid>//gm.angeldm.com/post/236/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>ntsysv<br/></div><br/><br/>此命令提供简单界面，可以不需要额外的命令修改启动项。<br/>
]]>
</description>
</item><item>
<link>//gm.angeldm.com/post/235/</link>
<title><![CDATA[Linux禁止提示You have new mail in /var/spool/mail/root]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[系统&amp;软件]]></category>
<pubDate>Wed, 04 Dec 2013 01:38:07 +0000</pubDate> 
<guid>//gm.angeldm.com/post/235/</guid> 
<description>
<![CDATA[ 
	有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root<br/><br/><strong>如果想禁止，则修改以下配置：</strong><br/>需要修改系统配置文件，告诉系统不要去检查邮箱<br/><div class="code"><br/>echo &quot;unset MAILCHECK&quot; &gt;&gt; /etc/profile<br/></div><br/>其实就是把unset MAILCHECK加到文件/etc/profile 的尾部即可。<br/>然后重新登陆控制台就没有这个提示了。<br/><br/><strong>如果想把这封信邮件发到自己的邮箱看，则修改以下配置：</strong><br/><br/>修改/usr/share/logwatch/default.conf/logwatch.conf配置文件<br/><br/>MailTo更改为想要输送的邮件人地地址就可以了<br/><br/>收到那一封信,内容分为：<br/>Named（一些不可链接的对象）<br/>pam_unix（一些验证对象,比如sshd）<br/><br/>sendmail<br/>sendmail - largeboxes（大型邮件spool文件）<br/>SSHD（sshd的次数,一下描述信息）<br/>磁盘空间（挂载,空间使用情况）等信息
]]>
</description>
</item>
</channel>
</rss>