<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>寂静的深海 &#187; 程序人生</title>
	<atom:link href="http://www.deepseath.com/?cat=1&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.deepseath.com</link>
	<description></description>
	<lastBuildDate>Mon, 29 Jan 2024 09:55:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>关于SQL注入的监测</title>
		<link>http://www.deepseath.com/?p=977</link>
		<comments>http://www.deepseath.com/?p=977#comments</comments>
		<pubDate>Mon, 26 Sep 2011 15:55:50 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[思路]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=977</guid>
		<description><![CDATA[网站被挂马，有一个方式就是对某个帐号进行提权操作，比如针对非管理用户提权至最高管理员的权限。 事后可以发现被提权的用户帐号，但检查经由哪个文件注入的是个麻烦的事情，特别是针对开源的文件结构比较复杂的程序来说。 以前有个思路，一直未实现，今天处理了一个，是针对Discuz!5.5（很老的一个版本了^^）的，处理思路就是事后诸葛亮。 对于此类的提权操作，其根本原因就是通过SQL去变更待提权的帐号的管理标识，如果程序对于涉及变更帐号权限的SQL查询都能有一个记录的话，这样日后一旦发现有未知的提权操作的时候便会相对容易的发现注入口是什么，大体也能进行应对处理，总比盲目的去查找注入文件要容易一些，当然，这个其实只是“事后诸葛亮”的做法，并不是根本的防御措施，真正想要防御其实还是程序开发的时候多考虑一些，比如，外部的输入要验证数据类型、进行字符转义等等，这不在本文讨论范围。 就Discuz!而言，所有的SQL操作都是经由数据类层进行操作的，这样就提供了一个比较方便的方式，我们可以在数据查询方法中加入一个判断，判断当前进行的操作是否是在更新用户表的权限字段，如果是，则记录下来相关的信息并保存到日志文件内，方便日后查询处理，针对Discuz!5.5我是按照如下的方式处理的，其实其他版本的Discuz!或者Discuz!X乃至其他类似的程序都可以利用这样的方式进行。 针对Discuz!5.5代码如下： &#60;?php /* @ By Deepseath 2011-09-26 @ 记录用户管理权限发生变动时的相关信息 */ if ( preg_match('/UPDATE\s+[`]*'.$GLOBALS['tablepre'].'members[`]*\s+SET(.+)/is',$sql,$match) &#38;amp;&#38;amp; preg_match('/[`]*\s*adminid[`]*\s*=\s*/is',$match[1],$m) ) { //判断当前执行语句是否为members表包含adminid的更新 $sql_md5 = md5($sql);//唯一查询md5值 $logfile = DISCUZ_ROOT.'./forumdata/log_adminid/'.$sql_md5.'.log';//日志储存的文件 if ( !file_exists($logfile) &#124;&#124; time() - filemtime($logfile) &#38;gt; 1800 ) { //如果查询日志文件不存在或者日志文件距离当前时间超过1800秒，则记录查询日志 if ( !is_dir(DISCUZ_ROOT.'./forumdata/log_adminid/') ) { //日志目录不存在则创建 @mkdir(DISCUZ_ROOT.'./forumdata/log_adminid/',0777,true); } if ( $fp = @fopen($logfile,'ab') ) [...]]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=977</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL报错Errcode: 28</title>
		<link>http://www.deepseath.com/?p=973</link>
		<comments>http://www.deepseath.com/?p=973#comments</comments>
		<pubDate>Fri, 23 Sep 2011 15:50:23 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[WinXP]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=973</guid>
		<description><![CDATA[在对大数据进行查询操作（比如，排序操作）时候，有时候会有类似：Error writing file &#8216;x:/tmp/xxxx.tmp&#8217; (Errcode: 28)的错误提示。 今天在对多达120W的数据表进行全表排序的时候报的类似这样的错误。X的磁盘分区的权限没有问题，读写都很正常，唯一觉得有点问题的是空间比较小。机器装的是4G的内存，但使用的是WinXP32位版本，因此浪费掉了1G，为了节省磁盘写入量，我将多出的那1G内存利用工具当做一个磁盘来使用，将系统临时文件目录以及浏览器缓存文件存放于这里。正常使用一般是没什么问题的。但做这个大表扫描的时候导致空间不足。 现在的解决办法要么就是清理一下磁盘，但由于表太大了，恐怕着1G的容量全部使用也不会够的。 要么就是将系统的临时目录更改到一个新的大容量分区内，不过，这样做有点背离我要利用空闲的那1G的内存了，再说，还要重启机器。 看了看mysql的环境变量，发现有一个变量的目录就是X:，于是，直接编辑MySQL的配置文件my.ini，加入一行： tmpdir=”F:/MySQL_Data/Tmp/” 这样的话就是告诉MySQL，临时文件存放的路径。MySQL的tmpdir变量如果没有设置的话会自动以当前操作系统的临时目录作为自己的暂存目录。 重启mysql后问题解决。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=973</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP的命令行执行方式</title>
		<link>http://www.deepseath.com/?p=969</link>
		<comments>http://www.deepseath.com/?p=969#comments</comments>
		<pubDate>Thu, 22 Sep 2011 13:05:37 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[经验]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=969</guid>
		<description><![CDATA[最近喜欢上了用PHP的命令行方式执行一些操作。 PHP的命令行方式详情可以看一下手册内容，写得很详细的。这里只说说自己在应用时的一些情况。 我主要是使用PHP5.2/5.3.x的Windows版本，默认情况下的php.exe就是CLI执行模式。php-win.exe是静默状态下的CLI，php-cgi.exe是CGI模式的执行，会有输出头信息。下面说的基本都是CLI模式进行执行的。 首先，相比而言，PHP的命令行方式执行PHP程序的效率要比以web方式执行要高一些，毕竟不经过web服务。而且对于持久执行时间的程序不需要加入时间限制函数set_time_limit()。另外，对于某些php.ini的配置选项也会强制被覆盖，比如： register_argc_argv始终为true，这样你可以为要执行的php程序传入一些参数，然后使用$arge[x]进行调用，其中x为参数的顺序号，第一个参数为1，第二个为2…… implicit_flush也为true，这样只要PHP输出了内容就会立即显示在命令行窗口内，对于某些需要做监视的操作，比如做一些邪恶的采集操作，你可以随时观看进度（当然前提是你得把程序内的调试输出写好，方便浏览） 需要注意的是，如果要写使用命令行方式执行的php程序，如果要调用其他php文件需要以绝对路径进行引用，其实，在web中执行的话也最好这样写，这是一个好习惯，可以避免一些意外的目录权限问题。 还有就是，一些预定义变量也是不存在的，比如$_SERVER['HTTP']、$_SERVER['REMOTE_ADDR']等一些依赖web服务的变量。将程序的错误报告完全打开，你会发现哪些变量是未定义的，便于调整。 以上就是在使用过程中总结的一些零零散散的经验。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=969</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP的Snoopy.class.php</title>
		<link>http://www.deepseath.com/?p=884</link>
		<comments>http://www.deepseath.com/?p=884#comments</comments>
		<pubDate>Wed, 17 Aug 2011 08:01:11 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTP协议]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snoopy]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=884</guid>
		<description><![CDATA[使用PHP读取HTTP页面基本使用Snoopy，使用简单方便易用。 最近在使用过程中发现一些问题，读取某些服务器的时候会发现获取不到页面内容。 留意Snoopy的Header请求头的时候发现，对于HOST请求是类似 HOST: hostname:port 看代码，只要端口存在，就使用该方式发送请求。 但观察浏览器请求时发现如果端口为80的时候，会省略掉端口号。 按这个方式改造一下Snoopy的代码，加入判断端口号，如果端口号为80的情况下，则直接使用 HOST: hostname 否则使用 HOST: hostname:port 这样改写代码后上面的问题就解决了。 问题的原因不太清楚，呵呵，对于HTTP协议始终就是模棱两可一知半解，实用至上主义，问题解决就不管了。 另外，还有一个问题就是，自官方下载到的Snoopy.class.php的编码问题，这个文件使用的是“阿拉伯语（Windows）”进行编码的，至少在这个编码下查看没有乱码。 为了方便日后改写代码，我是利用阿拉伯语（Windows）打开，然后Copy无乱码的代码另存为UTF-8编码，方便日后更改处理。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=884</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>分享一下近期在开发过程中用到的一些PHP库类</title>
		<link>http://www.deepseath.com/?p=873</link>
		<comments>http://www.deepseath.com/?p=873#comments</comments>
		<pubDate>Wed, 27 Jul 2011 16:55:30 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[开发]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=873</guid>
		<description><![CDATA[手里的项目进展还算顺利，即将进入一个新阶段，越来越感觉运营中的那句话“先开枪后瞄准”的确是进行一个商业计划（特别是比较新颖的）时，需要考虑的。技术人员不能眼里只有纯粹的技术，如若想要尽快的实现盈利，一些非关键性的功能和技术方面可以放到后面去考虑，目的是要尽快的确保项目能够稳定的运行且尽快的抢占市场赢得一些商机。 一直以来开发的程序都没有用过现成的框架，由于对面向对象开发还是有一些障碍（心理接受以及性能方面考虑等），但由于一些长期的运营项目涉及未来扩展和开发问题（面向过程开发在这方面还是很弱的），所以自己弄了一个面向过程开发的一个“框架”（只能算是一个雏形吧），虽然不能解决大问题，但最起码可以让新开发中减少很多重复性的操作。 说回到本文标题，其实这些库类一直都在使用着，用着虽然不是很精通，但好在一些文档比较清晰所以用起来还是很方便的。 1.PHP的图表类——pChart，这是一个很棒的使用PHP开发的用来生成图表文件的类库，可以生成包括且不限于柱状、表格、饼图等形式的图表，可控性很强，功能也很强大。对中文支持也很好（需要UTF-8编码且使用中文字体文件）。现在我用到的是2.1.1版本。 2.Excel读写类——PHPExcel，也是巨强悍的PHP读写Excel库类。涉及的操作很多很高级（合并表格、表格样式定义、插入图片等等），比较复杂，开发的时候一般都是有针对性的去看文档，呵呵。 3.Open Flash Chart的PHP库php-ofc-library，这个其实网上介绍挺多的，Flash的图表显示，对于这个库类的使用目前有一点点的犹豫，目前来说，如果对于实时性不是很强的情况下大体还是利用pChart生成图片文件缓存下来进行展示，好处是可以避免Flash显示问题。 4.javascript压缩库JavascriptPacker，由于现在前台利用到jQuery并且使用别人或者自己写的好多插件，为了减少浏览器的HTTP请求并减少下载容量，所以使用这个库类将多个js脚本进行压缩合并，然后利用PHP使用gzip压缩输出给浏览器，实际效果中大概接近340K左右的js经过这样的处理后浏览器下载时只有不到100K的大小。 其他诸如的模版处理、数据库操作等都是自己写的，因为一直在用所以自己觉得比较熟练和方便^_^ 另外，pChart使用过程遇到一个情况，就是对于X轴（X坐标）上的表述文字过长的情况下可能会有被覆盖而看不清楚的时候，可以考虑将文字做一些倾斜处理，可以自定义角度。在$myPicture->drawScale($setting)方法中，配置$setting中的LabelRotation值为一个角度就可以了。 比如： $Settings = array(“Pos”=>SCALE_POS_LEFTRIGHT, “Mode”=>SCALE_MODE_START0, “LabelingMethod”=>LABELING_DIFFERENT, “GridR”=>136, “GridG”=>136, “GridB”=>136, “GridAlpha”=>50, “TickR”=>0, “TickG”=>0, “TickB”=>0, “TickAlpha”=>50, “LabelRotation”=>45, “CycleBackground”=>1, “DrawArrows”=>1, “DrawXLines”=>1, “DrawSubTicks”=>1, “SubTickR”=>0, “SubTickG”=>0, “SubTickB”=>255, “SubTickAlpha”=>50, “DrawYLines”=>ALL); $myPicture->drawScale($Settings);]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=873</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几款比较实用的PHP库</title>
		<link>http://www.deepseath.com/?p=806</link>
		<comments>http://www.deepseath.com/?p=806#comments</comments>
		<pubDate>Thu, 11 Nov 2010 15:46:58 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=806</guid>
		<description><![CDATA[整理资料的时候看到的，不知道出处了。放博客上备忘一下^_^都是比较实用的。 1. ReCAPTCHA The reCAPTCHA 库让你可以为网站创建高级的 CAPTCHA 系统，这个系统其实是用来生成验证信息的，甚至包括语音验证。当然还有 reCAPTCHA 服务可以使用，其提供易用的免费 API，值得在你的网站试试。 下载 ReCAPTCHA &#124; 获得 API Key &#124; 文档 2. Akismet Akismet 是个供小站点使用的免费服务，用来修改规范将加入数据库的评论（防止恶意评论）。这个库一直在改善。 详细参考 Akismet 介绍 3. Services_JSON JSON 是人类能容易理解的信息传递格式。不过如果你并未使用 5.2.0 以后版本的 PHP（从那以后 PHP 有了 JSON 官方支持），那么就应该试试这个库。 查看 Services_JSON 4. Smarty Smarty就是鼎鼎大名的官方模版库了。它提供了不少有用的功能。其实使用 PHP 的人都该瞧瞧。 下载 Smarty &#124; 官方文档 5. pChart pChart 是极其有名的数据图形库。它能为数据展示提供各种美丽的图表。其实使用 PHP 的人都一定会碰到使用它的情况。 下载 [...]]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=806</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(转)基于jQuery的上下无缝滚动应用(单行或多行)</title>
		<link>http://www.deepseath.com/?p=763</link>
		<comments>http://www.deepseath.com/?p=763#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:59:36 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[无缝滚动]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=763</guid>
		<description><![CDATA[有时候能用得着，自己懒的写（估计写也不是很好，嘿嘿），看到一个插件。转自：http://mrthink.net/js-jq-autoscroll-updown/ &#60;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"&#62;&#60;/script&#62; &#60;style&#62; /*reset css*/ body{font-size:0.8em;letter-spacing:1px;font-family:"微软雅黑"; line-height:1.8em} div,h2,p,ul,li{margin:0;padding:0} h1{font-size:1em; font-weight:normal;} h1 a{background:#047; padding:2px 3px; color:#fff; text-decoration:none;} h1 a:hover{background:#a40000; color:#fff; text-decoration:underline} h3{color:#888; font-weight:bold;font-size:1em; margin:1em auto; position:relative} /*demo css*/ h2{background:#a40000; font-size:12px; color:#fff; font-weight:normal; text-align:center; width:100px; height:25px;line-height:25px; margin:30px 0 0 20px} ul.line,ul.mulitline{width:500px; height:30px; background:#eee; overflow:hidden;margin-bottom:20px;border:2px solid #a40000} ul.mulitline{height:90px} li{height:30px;text-indent:15px; font-size:12px; line-height:30px;list-style:none} &#60;/style&#62; &#60;script&#62; /******************************* * @author Mr.Think [...]]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=763</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>域名转移注册商操作完毕</title>
		<link>http://www.deepseath.com/?p=754</link>
		<comments>http://www.deepseath.com/?p=754#comments</comments>
		<pubDate>Wed, 28 Jul 2010 07:20:04 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[域名]]></category>
		<category><![CDATA[域名转移]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=754</guid>
		<description><![CDATA[2010年7月22日申请了eXinQing.net的域名转移注册商（http://www.deepseath.com/?p=731） 当日已经顺利进行确认信确认。 直到7月26日中午，突然发现域名DNS无法解析，询问后得知只能是等待，这状况一直持续到7月28日早上8点左右，发现域名已经完全转移完毕，且可以在新的注册商处进行管理。 只是仍旧无法进行DNS设置解析。联系客服后终于在11点的时候可以进行修改了。 经过设置后，根据网友的报告，大概在12点半左右国内已经陆续可以正常解析访问了。 通过本次域名转移注册商得到几个经验就是： 1.注册域名最好选择一些知名的有品牌的注册商，要考虑到日后维护、缴费、迁移等等问题的方便性以及代价（比如，我这个域名就交给之前注册商500元的手续费，TMD） 2.做域名迁移前一定要做好预案，万一无法解析的时候应该通过一些手段来避免用户无法访问。因为有时候域名迁移DNS会中断的，当然如果幸运其实整个过程DNS都是可以正常解析的。 原本其实还有备用域名的，可惜早先没想过这样的问题，只是将备用域名做了一个永久转向。 现在看来，得想个方式在未来能够尽量避免这样的问题。 始终对于多域名访问有一个困惑： 我想实现一种方式，平时只用一个域名访问（当然也包括这个域名的二级域名），其他域名只是转向。如果万一这个域名无法解析的时候，只要通过一些轻微（记住是轻微）的更改就可以轻易的切换到两个域名同时可以访问的状态。 自己琢磨了几个方案发现都不行:(原因是因为，几个栏目之间的应用其实还有一些内部通讯，如果要更换域名的代价太大了，操作非常多——特别是栏目和应用特别多的情况下。 不知道大家都有什么好办法？给个建议哦~~]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=754</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>由服务器想到的……</title>
		<link>http://www.deepseath.com/?p=703</link>
		<comments>http://www.deepseath.com/?p=703#comments</comments>
		<pubDate>Mon, 24 May 2010 02:17:26 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[硬盘]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=703</guid>
		<description><![CDATA[昨天夜里到今天上午，服务器由于第二块硬盘无法找到而停止运行。搞得心神不宁的…… 服务器已经3年多了，头一两年基本比较稳定，自从去年来，频繁死机，先是更换过内存条，然后春节前有更换了主板，虽然最近一个多月温度稍微高一些（CPU温度一般在55到59度之间），但也算比较稳定的运行了40天，前天正庆幸机器争气，结果昨天就出现了意外——第二块硬盘偶尔就找不到了:(由于数据库以及一些系统日志文件都写到了第二块硬盘，因此非常害怕出问题，经过检查发现，似乎硬盘没什么问题，很有可能是数据线或者接口的问题。凌晨的时候机房没人，所以到今天早上给机房打电话帮忙查看一下，因为机房也没有备用的数据线，所以只是更换了一个插口，恢复开机后，发现运行稳定，暂时处于观察期，但也不敢大意，先把数据库进行了备份，然后将系统日志都转移到主硬盘上了，数据库还是留在那块上，期望减少对这块硬盘的请求降低它的负载，期望不会再有问题了。唉，每次服务器有问题都会搞得头痛，类似那种偏头痛的感觉，睡觉也不踏实，神经衰弱…… 经过这个事情，目前考虑了一个新的架构。主要是针对投入有限的情况而且有期望性能有所提高的。 之前架构服务器的时候，为了节省资金获得最高的性价比，因此只用一台服务器进行架构，web+database，从数据库读写性能角度考虑，把数据库放到了第二块硬盘上，web服务和文件放在第一块硬盘（主硬盘） ，系统运行日志也放到第二块上了。其实这种架构应该说是最节省也是相对获得最大的性价比的方式，毕竟再花万把块钱实在是捉襟见肘了。不过，这次感觉这样的架构还是有点麻烦，数据库和系统日志都是频繁进行读写的，增加了系统的不稳定性，现在硬盘价格已经很便宜了，因此，考虑如果只用一台服务器架构web的话： 可以考虑将主硬盘只做操作系统、软件环境、然后单独划出一个分区作为整个系统的日志区， 第二块硬盘，作为web程序文件存放区，除此之外不再放其他文件。 第三块硬盘，作为数据库储存区，只放数据库文件。数据库日志不在此处，单独放到主硬盘的日志区内。 如果，还有可能的话，可以再加一块硬盘，单独作为备份盘使用，平时不做任何读写操作，纯粹做为数据库备份之用。 这样的架构，可以最大的降低磁盘磁头的读写频率，提高I/O性能，从而保护磁盘寿命。 PS：纯粹只是一台机器用的，如果有很多money，基本不太考虑这个了……穷啊……而且，这个服务器上的网站纯粹只是个人爱好而已，没有获得什么收入， 每年运行的费用虽然不多，可也不是个小数了……]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=703</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>关于验证码实现的另一个思路</title>
		<link>http://www.deepseath.com/?p=654</link>
		<comments>http://www.deepseath.com/?p=654#comments</comments>
		<pubDate>Sat, 01 May 2010 12:56:40 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[思路]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=654</guid>
		<description><![CDATA[最近在做一个项目。在涉及到关于忘记密码找回功能时，从用户体验角度去考虑，在申请找回密码表单中只有两个元素——Email输入文本框和一个提交按钮。应该说会很方便。 但在接下来测试的时候，突然发现，虽然方便一些，同时也有关于恶意动作的阻止策略，但某些意外因素仍旧无法避免。 因此考虑加上一个验证码，避免一些纯粹攻击性恶意申请动作（此类动作其实也可以用一个方式进行阻止，不过，因为某些原因在此不方便实现）。 原本验证码打算用一些比较成熟的开源的代码来实现（比如：Discuz!中的验证码类——/include/seccode.class.php就是一个不错的例子），但其实发现类似这些显示出的效果仍旧会出现“人”难识别的情况。 对于机器识别验证码图片字符的机理说实话了解不多，以我的知识，我觉得可能是利用图片色彩加上字库方式去分辨的。既然是这两个因素，那么图片色彩上如果过于复杂显然对于“人”也同样难以识别，这个因素可以大略不去考虑，从字库来说，我觉得如果验证码字符利用非常规字库去显示或许效果会很好——但我不清楚机器将什么字库作为“非常规”，因此，我决定利用图片组合的方式进行构建。 简单说，就是将事先做好的字符图片拼凑起来，字符图片可以使用多套然后随机选取，字符图片上的“字符”利用自己“个性设计”——比如，将常规的字库图形利用图片编辑软件加以变形、缩放等等。考虑到，字符涉及较多，因此设计遵循两个原则：一是要将某些模棱两可的字符排除掉（比如：L、1、i、0、O等），二是根据CSS Sprite的原理，将同类型的字符放到一个图片中——我自己称之为“字符库图片”。 经过设计，得到若干组的 字符库图片，然后再设计多种类型的“背景图片”，作为验证码的背景，略微增加一些识别干扰。设计的原则最重要的就是——易于人类识别。 由于字符是特定个数的（经过我的筛选剩余24个）字母和数字，因此很容易放到一个小的数组里，利用array_rand()函数以及shuffle()函数，很容易生成一个漂亮的随机字符串。利用字符串单元字符的特定“位置(其实与数组的键值是对应的)”可以很方便的在“字符库图片”中找到它的位置。利用imagecopymerge()函数轻松的将它们拼凑在一起。 这样最终就形成了一个验证码的显示。 配合验证码的验证，可以利用私有的加密函数将字符串原形加密后保存在cookie内，对用户提交后进行快速验证。 由于涉及到的数组、图片的数量都不大，因此对于压力负载情况很好。 组合图片不是这个思路的难处，难点在于如何设计“人类”能看懂的字符图形:)另外，对于字符图片的相对位置控制也是一个比较费思量的课题，好在通过一些位置上的计算也可以进行不规则的变化。 思路很简单，写了一个简单的应用类，设计了大概6组“字符库图片”和4组“背景图片”，加上测试也花了整整一个下午的时间，效果自认为还不错。 代码就不上了，其实代码很简单，每个人的算法都可能不一样，主要的难点在于“字符库图片”的设计和排序问题。 谁订阅了我的博客，有兴趣看代码的可以直接朝我要，不贴在这里了^_^ PS：最近做项目用最多的是jQuery，这个框架太爽了。通过这个了解到框架做事的确很轻松，可惜，接触PHP有年头了，某些观念和意识基本已经根深蒂固了，所以到现在还无法使用任何PHP的框架。同时对于面向对象的开发，我个人真的是不入门，我倒觉得面向过程也并非是网上说的一无是处——比如性能、比如理解力等等还是略胜上风的。呵呵，题外话，个人不喜欢（或不上路）并非宣传大家也不要用，事实上，我最近看到开源站最多的比如：ThinkPHP、CakePHP应该都还不错，否则也不会有人去用了（哈哈，我其实对于这两个真的一点都不了解~~）]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=654</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>页面嵌入JavaScript脚本的URL“and”符号</title>
		<link>http://www.deepseath.com/?p=599</link>
		<comments>http://www.deepseath.com/?p=599#comments</comments>
		<pubDate>Mon, 08 Feb 2010 12:38:18 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=599</guid>
		<description><![CDATA[在HTML页面中嵌入JavaScript脚本代码，如果代码内包含一些URL中的“and”符号（&#38;），或者包含HTML元符号（用于输出结构的），如果不对javascript代码区进行注释声明处理，那么就不符合W3C标准当然也就不能通过w3c检测。 比如： &#60;script type="text/javascript"&#62; var test='http://www.foudang.com/tag/?tag=%E5%81%87%E8%B4%A7&#38;p=2'; &#60;/script&#62; 是不可以的，但如果将 &#38; 替换为 &#38;amp; 是可以通过w3c验证的，不过，由于javascript处理URL会将&#38;认为是变量的间隔符，如果改为 &#38;amp; 那么实际上面的URL将会被处理为tag=xxx 和 amp;p=2。 这个时候可以使用注释声明： &#60;script type="text/javascript"&#62; /* &#60;![CDATA[ */ var test='http://www.foudang.com/tag/?tag=%E5%81%87%E8%B4%A7&#38;p=2'; /* ]]&#62; */ &#60;/script&#62; 或者： &#60;script type="text/javascript"&#62; //&#60;![CDATA[ var test='http://www.foudang.com/tag/?tag=%E5%81%87%E8%B4%A7&#38;p=2'; //]]&#62; &#60;/script&#62; 都可以。 PS：事实上，我之前也有过“另类”的一种解决方法，对于HTML标签字符，我写到外部的js文件内；对于URL我就使用一个函数去构造，用起来也倒很方便，但现在看来有点弱智，呵呵。因为很早之前刚接触W3C的时候一味追求通过验证，根本没仔细研究过，为了标准而标准来着，这是很不好的一个方式……]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=599</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>建议所有的程序开发者一起来保护MySQL——《拯救MySQL》</title>
		<link>http://www.deepseath.com/?p=584</link>
		<comments>http://www.deepseath.com/?p=584#comments</comments>
		<pubDate>Wed, 20 Jan 2010 02:45:09 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[拯救MySQL]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=584</guid>
		<description><![CDATA[对于其他程序不甚了解，但就PHP开发来说，估计99%的人都选择MySQL作为数据库，因为MySQL给大家的印象是轻巧、易用并且最重要的是它有一个免费的社区版本，这个版本同它收费版本是完全一样的区别仅在于它的商业版本提供技术服务而已。 作为一个PHPer来说，我自2000年接触PHP，因为没有任何程序语言基础，所以学习起来挺费劲，一直使用文本储存数据，但真的觉得既麻烦又不安全，然后2001年年初的时候第一次开始接触MySQL，对于我无任何数据库语言概念的人来说上手的确有一点点困难，但我清晰的记得，看完了几个例子以后，我便轻松的了解了MySQL知道了它的强大、易用，而且最主要的是它不像Orlce和SQL Server，它是免费的！！ 自那个时候起，我慢慢开始了解了这世上还有一些人，在维护着PHP、维护着MySQL、维护着Apache，我知道了一个名词“开源社区”，知道了还有一个免费的操作系统Linux ，知道这世界上还有一群具有创新、共享精神的人…… 到现在，熟练使用并在自己项目上应用部署MySQL已经有接近8年的时间了，从MySQL4.0用到MySQL5.1，这个过程是很奇妙的，我从未担心过什么，因为我知道MySQL精神会继续着 …… 突然有一天，我知道了那个卖得很贵的数据库Orcal的东家甲骨文开始“惦记”着MySQL了 ，就我个人的感觉来说，这不是什么好事，如果这个公司或者其他别有用心的公司去收购MySQL，那么可能会带来的两种情况就是：1.为了维护其自身收费的数据库产品，势必会打压MySQL的开发，致使MySQL慢慢落后于其他数据库，导致它的淘汰；2.将MySQL也变成一个完全收费的产品。我个人可能更容易想到第一种情况，如果是那样，那真的是一个灾难…… 为此，包括MySQL的创始人Michael Widenius在内的一些人组织了一个《拯救MySQL》的活动，请求所有MySQL的支持者支持和保护MySQL。 刚刚也在上面签名了，做为能力有限的支持者来说，我也许只能做到这些了。 希望支持MySQL的朋友们，一起来救救MySQL，点击进入这个链接填写表单就可以了：http://www.helpmysql.org/cn/petition 不要害怕E文，呵呵，是多语言的，我给的连接是中文版的^_^]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=584</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>看到一个人的博客想写的……</title>
		<link>http://www.deepseath.com/?p=581</link>
		<comments>http://www.deepseath.com/?p=581#comments</comments>
		<pubDate>Tue, 19 Jan 2010 14:34:25 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=581</guid>
		<description><![CDATA[先说一段引子吧，我特喜欢用Opera，虽然还有一些不尽如人意的地方，但越来越喜欢上这个浏览器了。最爱用的功能就是RSS（Opera叫做网摘订阅功能），我订阅了n多的RSS列表，呵呵，大多数都是技术类的，毕竟现在信息量太大找也不好找，而且有的时候忙着也没空满网络乱翻，订阅这个时不时阅读一下挺好的^_^ 话说，今儿读到一篇来自博客园的某位PHPer看样子应该是新注册博客园的，发了个博文具体名字不写了，反正是关于求3值最大数的函数的，不知道是自己写的还是转载的，反正函数是： function sum_3($a,$b,$c){ $a&#62;$b?$max=$a:$max=$b; return $max&#62;$c?$max:$c; } 虽然是小函数，可这样的写法实在…… 为什么不这样写？ function sum_3($a,$b,$c){ return max($a,$b,$c); } 即便不用内置的max函数，也可以这样： function sum_3($a,$b,$c){ return $c &#62;= ($tmp = ($a &#62;= $b) ? $a : $b) ? $c : $tmp; } 就我自身能力而言，就写代码来说，个人倾向于，尽最大可能使用内置函数避免走弯路也避免出bug。 闲来无事胡诌一番，实在是此人的博客无法评论，不吐不快于是自己发泄到自己的博客上来了，呵呵~~~]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=581</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx for Windows</title>
		<link>http://www.deepseath.com/?p=525</link>
		<comments>http://www.deepseath.com/?p=525#comments</comments>
		<pubDate>Wed, 27 May 2009 03:11:20 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=525</guid>
		<description><![CDATA[久闻Nginx的大名了，一直想弄着在Windows上玩玩的，可惜太懒了，实在不愿意去配置那么麻烦的脚本，哈哈。最近刚刚发现Nginx进行更新了，对Windows的支持似乎也趋近于稳定了。本想试着搞搞来玩的，还是懒。不过发现一个牛人高了个傻瓜的配置包(Nginx+PHP)，真的挺方便的。http://www.gracecode.com/archives/2961/]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=525</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>file_get_contents()函数也可以发送HTTP_REFERER</title>
		<link>http://www.deepseath.com/?p=522</link>
		<comments>http://www.deepseath.com/?p=522#comments</comments>
		<pubDate>Wed, 27 May 2009 02:31:02 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=522</guid>
		<description><![CDATA[有时候因为某些特殊原因，可能需要伪造浏览器发送的HTTP_REFERER信息，一直来对于这样的情况都使用PHP的一个CURL扩展，虽然功能不错，但某些时候有点不方便。这时候再去仔细研究手册，发现其中的奥妙…… 原来其实file_get_contents()函数也是可以伪造HTTP_REFERER信息的。利用它的第三个参数。要说明的是第三个参数是在PHP5.0.0以后才支持的，之前的版本没这个参数！ 利用file_get_contents()第三个参数模拟一个文件流进行发送，例如这样： $option = array( 'http' =&#62; array( 'header' =&#62; "Referer:$refer") ); //$refer就是伪造的HTTP_REFERER信息URL。 file_get_contents($url, false,stream_context_create($option)); 说实话，之前关于文件流函数库了解真不太多。其实里面还有很多好玩的东西。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=522</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>YSlow 2.0.0b3 For firefox 发布啦(提供下载)！</title>
		<link>http://www.deepseath.com/?p=474</link>
		<comments>http://www.deepseath.com/?p=474#comments</comments>
		<pubDate>Sat, 02 May 2009 09:30:50 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[xpi]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yslow]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[朋友]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=474</guid>
		<description><![CDATA[昨天打开Firefox就发现YSlow提示更新了，不过当时更新不了，因为忙也就没理会，今天刚刚抽空打算更新一下，郁闷，死活都下载不了。不过想了个办法终于下载到了yslow-2.0.0b3-fx.xpi文件，哈哈。 YSlow由1.0.2升级到2.0.0b3这个版本号的跨度可够汗的了，应该是有很大的结构性的更新吧，否则版本号不可能这么大的变动的，果然，安装后，发现新版的确变化很大的，而且增加了几个很有用的工具。 1.增加9条新的网站性能指标，加上原来的13条，共有22条指标 2.添加了一些网站的优化工具，比如Smush.it、JS Minified、 JS Beautified。 3.现在可以自定义设置评价的规则了。新版有三个内置的规则：V2、V1、小型站和博客。其中V2的指标最多，包括所有22项指标，而V1则只包括上一个版本的13条指标。 4.界面样式上的变动也挺大的。采用了比较舒服的颜色，还不错。 没太全面的用，还没发现什么问题。 不过，觉得新加入的Smush.it挺不错的，这个是Yahoo开发的一个图片优化工具（以前单独有这个扩展的好像），可以优化你的网站中使用的图片，将其优化并压缩，并支持打包下载。呵呵，设计好的图片放到网站上后，使用这个可以再次优化一下，打包下载后再上传到网站上^_^ 从版本号上的b3就能看得出来是一个Beta版的。不过暂时没什么问题，之前用英文的Google搜索下载文件的时候，好像有提到说是不能同Firebug 1.4beta一起使用，具体是否如此不太清楚，我的Firebug是1.3.3的。 这个扩展下载更新的时候颇费一番功夫，死活下不来，几番周折终于搞下来了，呵呵。不知道是否有如我那样很难下载更新的，我这里提供一下吧，有需要的朋友可以直接下载^_^ 点击下载：yslow-200b3-fx(流量有限请不要盗链，谢谢)。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=474</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从Windows98到Windows7</title>
		<link>http://www.deepseath.com/?p=471</link>
		<comments>http://www.deepseath.com/?p=471#comments</comments>
		<pubDate>Fri, 01 May 2009 09:50:48 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WinXP]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[朋友]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=471</guid>
		<description><![CDATA[我能清晰的记得第一次接触计算机和网络的时间，因为我有一个东东最早先的密码就是那天——2000年9月11日。那天是一个好朋友在玩，然后我在旁边看，还给我申请了个oicq（QQ早先的名字） 等到去哈尔滨上学后，第一次真正的自己摸计算机打开网页的时候真的被这花花绿绿的东西吸引了，觉得很好玩，当时还不知道我的未来就要靠它来吃饭了。 我接触的操作系统最开始就是Windows98，记得是学校机房和网吧，在网吧玩了小半年（通宵的琢磨网页是个啥东东并尝试学着做），然后觉得还是自己买一台会省很多也方便很多，跟老爸老妈商量着买一台，磨了1K多，然后自己偷偷借了1K多，找同学帮忙配置的兼容机（他的一个亲戚哥哥做装机），记得还是“分期”付款呢，哈哈。买来后，自己装了一阵98，后来有了Winme用了很久的Winme，其实一直觉得WinMe也挺好的，不像其他人说的那么一无是处。后来WinXP出来，当时的XP刚出来，的确非常不适应，加上机器配置不是很高，那种花哨的界面，令我很头痛（直到现在我的XP都是用的标准样式没有任何渲染）。然后慢慢喜欢上了XP，期间虽然有叛逃到Linux的时候不过最终还是一直用WinxP的。很庆幸自己的机器当时配置不高，加上就爱折腾，所以机器的优化做到了极限^_^ Windows Vista刚出来，用过一阵测试版的，实在不舒服，等正式版发布的时候也不中意，使用还是WindowsXP，到了去年年中，终于更换了新本，配置非常非常高^_^。还是WindowsXP，现在Windows７出来了，早在年初就在虚拟机上安装了测试版，用着还算可以，至少比Vista强一些。然后接下来的测试版接着试用，发现越来越成熟了。应该说，Windows7很多操作与WindowsXP不一样了，操作也许不适应，但总归有些地方其实还是很方便的，某些功能和附件也增强了不少，总得说来还是很期待的。 刚刚下载了Windows7的7100测试，还没安装，看新闻说Win7发布了最低配置 1GHz处理器（32位或64位） 512Mb RAM（家庭版），或1GB RAM（其他版本） 15GB可用硬盘空间 支持DirectX 9，带32MB显存（家庭版），或128MB显存并支持WDDM（其他版本） 据说，Win7的RC版也发布了，不知道中文有没有，好像到2010年6月1日都可以免费用^_^晚上先安装7100再说，尝尝鲜，希望乱码问题能够被解决了。以那个最低配置来说。装到虚拟机都绰绰有余，哈哈。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=471</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于IIS的一些优化</title>
		<link>http://www.deepseath.com/?p=464</link>
		<comments>http://www.deepseath.com/?p=464#comments</comments>
		<pubDate>Wed, 29 Apr 2009 09:12:29 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[否当]]></category>
		<category><![CDATA[服务]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=464</guid>
		<description><![CDATA[由于很多原因，服务器构架是Windows系统，Web Server用的自然是IIS。近期因为要做否当网的一些访问优化，所以开始琢磨这些涉及到IIS优化的问题。 1. 如果有涉及到静态的文件，那么就设置一下这个站点／目录的过期时间，我一般都设置为７天或者３０天。这样做可以节省一些流量。具体设置就是在站点或者目录上点击右键属性，在“HTTP头”选项卡内，启用“内容过期”，按需要进行设置即可。 2.如果打算去掉IIS的Etag功能的话，可以这样做，在站点属性上，选择“HTTP头”选项卡，在“自定义 HTTP 头”内，添加一组自定义 http 头，具体是，点击“添加”，“自定义 HTTP 头”填写“ETag”，“自定义 HTTP 头值”填写“”"”，确定即可。 3.对于纯静态文件目录或者站点，可以设置其不执行任何程序，最好可以新建一个应用程序池，所有执行静态的目录和站点都使用这个应用程序池。 4.为静态文件目录或站点设置HTTP压缩。在“网站”属性中，“服务”选项卡内，HTTP 压缩，钩选“压缩静态文件”，设置“临时目录”，建议目录设置到系统分区外，如果有第二块硬盘最好设置到第二块硬盘上；另外再设置一下“临时目录的最大容量”这个根据实际需要进行设置即可。 上面这些都是自己总结的一些经验，是在Windows 2003下的IIS6.0中进行的，其他版本不清楚是否一致。]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=464</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再遇MySQL4.0升级到MySQL5.1的时候</title>
		<link>http://www.deepseath.com/?p=459</link>
		<comments>http://www.deepseath.com/?p=459#comments</comments>
		<pubDate>Tue, 28 Apr 2009 03:33:51 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[backup file]]></category>
		<category><![CDATA[database name]]></category>
		<category><![CDATA[mydatabase]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[朋友]]></category>
		<category><![CDATA[服务]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=459</guid>
		<description><![CDATA[已经好久没搞过MySQL4.0升级到MySQL4.1/MySQL5.0/MySQL5.1的操作了。昨天晚上一个朋友的服务器有几个数据库需要做这样的操作。 冷不丁再遇到这样的情况的确有点楞，不过好在之前他打过招呼，我也测试过 ，所以升级过程没遇到大问题，比较成功。 发现记性不如以前那么好了，记下来操作过程留住备忘吧。 MySQL4.0升级到MySQL4.1+版本主要的情况其实就是字符集的问题，不能像原来的平行版本升级那样直接将数据库目录Copy就可以了。 首先要确认数据库的字符集是哪种，一般来说，就是考虑utf-8和非utf-8的情况。 无论哪种字符集，只要确定了，就在高版本mysql内 建立一个相应字符集的数据库。 在mysql4.0这边，直接使用mysqldump导出，数据多的话，最好选择扩展插入方式导出：mysqldump &#8211;opt -u[DB USER] -p[DB PASSWORD] [DATABASE NAME] &#62; [BACKUP FILE PATH] 比如： mysqldump &#8211;opt -u user -p password MyDATABASE &#62;f:/MyDATABASE_40.sql 这样就将mysql4.0的数据导出SQL文件了。 然后使用命令行方式登录mysql4.1+，进入要导入的数据库： use MyDATABASE; SET NAMES &#8216;你所设置的字符集&#8217;; source f:/MyDATABASE_40.sql 这样大体上就可以顺序导入了，字符集也没什么问题。不过实际运行中偶尔会出现某些表导入不成功的情况，原因没深究，因为发生的几率很小，涉及的数据也比较少，所以出错后，直接再把没导入的表重新导入就可以了^_^]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=459</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怕上当？来否当吧！</title>
		<link>http://www.deepseath.com/?p=445</link>
		<comments>http://www.deepseath.com/?p=445#comments</comments>
		<pubDate>Wed, 22 Apr 2009 05:17:20 +0000</pubDate>
		<dc:creator>Deepseath</dc:creator>
				<category><![CDATA[程序人生]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[否当]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.deepseath.com/?p=445</guid>
		<description><![CDATA[新近刚刚完成的一个小项目——否当。当(“上当”的“当”，四声) 主要是整理一些上当受骗的经历、假冒伪劣物品的识别以及一些正规厂商的公告什么的。应该说还是有实际意义的。希望朋友们能捧捧场，然后提提意见^_^可以点击这里访问，域名也很好记——拼音的否当 FouDang.com，同时Foudang.net、Foudang.cn都可以访问，主域名就是 www.foudang.com。 否当网站截图 整体架构使用的是早先的一个构想，就是前后端分离。这样的架构可以方便未来的压力分离同时安全性也会有一些保证。 内容页面采用的是自动静态页面的生成。首页以及列表页面都是动态的，但有基于文件的短时缓存。特别是列表页，原本想也做成完全静态的，不过考虑这样的静态意义不是特别大，所以还是利用动态，但如果想记住分类的页面也很简单的，地址很短，相信不会给访问者带来困惑。 后台发布是一个内部的系统，与前端是分离的，包括文件的上载数据的更新都是在发布端进行的。前端只负责处理页面表现属于一个只读操作（除了涉及到页面浏览数等统计操作以及未来考虑加入评论功能等） 前台整体采用符合W3C标准的XHTML过渡方案（XHTML 1.0 Transitional），页面编码上考虑未来扩展性以及维护性的需要同时也是个人的喜好所然使用的是UTF-8编码。就已经进行的浏览器兼容性方面，测试了包括IE6.0、IE7.0、Opeare 9.64、Firefox 3.08、Safari 3.2.2、Chrome 2.0、IE8.0（使用IETester浏览）等在Windows下浏览器。目前没发现太大的Bug。 站点投放了一些广告，应该不至于影响访客的浏览。希望有看到的朋友能够支持一下^_^提提建议:) 另外，如果各位不想随时关注的话，还提供了一个RSS订阅最新更新的功能，http://www.foudang.com/rss/访问就可以了。这是全部的最新更新，如果想看某个分类的更新，可以进入分类后点击页面上的RSS图标^_^]]></description>
		<wfw:commentRss>http://www.deepseath.com/?feed=rss2&#038;p=445</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
