2014年3月18日
今天正好碰巧看到一份关于SeLinux的资料,解决了一个困扰我多时的问题。
我有一台CentOS的服务器,运行着基于Apache的PHP系统,但是这些系统无法访问诸如/home,/usr等目录,即使我将这些目录chown成apache:apache,并且chmod成0777,也显示Permission Denied。百思不得其解后,我只能放弃那些计划好的数据分区,将这些数据文件挤在/var/目录下了。原来0777也不是万能的,真是毁三观,哈哈。
原来,此问题的发生是因为SeLinux。这是一个安全控制系统,简单理解就是它提供了更精确的权限控制,使我们的Linux更安全。
解决办法有2种,最快速的就是将SeLinux直接Disable掉,当然,这个你需要看场合,大多数场合都不适合这样rough的操作。最好的办法,就是正确设置SeLinux针对apache的权限。
下面给出解决的方法:
比如,你想让PHP系统能访问/home/folder/目录,那么你只需要运行命令:
chcon -R -h -t httpd_sys_content_t /home/folder/
这样,SeLinux就不会阻止你的程序访问啦。
Ferris
2014/03/18
2013年8月20日
步骤如下(实践可行):
1:进入C:\Windows\System32\Drivers\目录下
2:找到ProtectorA.sys文件,将它移动到D盘(万一不正常,还可以恢复过去,如果正常了,到时候再把这个文件删除即可)。
3:重启计算机,看看是否可以正常使用网银了。
注意:需要成功安装了中国银行“网上登陆安全控件”以后,再进行上述步骤。
Ferris
2012年9月3日
今天用PHP来执行mysql dump程序,测试了一下,在PHP5.3的Windows机器上成功,但在PHP5.2的Windows机器上得到如下错误
'C:\Program' 不是内部或外部命令,也不是可运行的程序或批处理文件。
<?php
$cmd = '"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -u..';
exec ( $cmd );
?> 修改成以下代码后,在PHP5.2的Windows机器上能运行了,但在PHP5.3的Windows机器却报错了
<?php
$cmd = '""C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -u.."';
exec ( $cmd );
?> 终极版解决方法,通过判断PHP的版本解决该问题
<?php
$cmd = '"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -u..';
if( PHP_OS=='WINNT' && version_compare(PHP_VERSION, '5.3.0', '<') ){
$cmd = '"'.$cmd.'"';
}
exec ( $cmd );
?>
Ferris
2012年8月8日
MongoDB的设计思想很适用于非事务型的Web系统,初始MongoDB的时候,我觉得这就是我想要的数据库系统,它比MySQL要轻量级,提供简单的查询,支持索引,高效的插入数据,更好的支持分布式,更方便的支持Master/Slave,这些都是MySQL没有的优点。但作为一个新兴事物,是否要应用到生产环境中,需要谨慎决策。查询了一些资料,得知MongoDB已有一些在正式环境下的上亿级数据管理的应用,同时看到一篇文章《Do not use mongoDB》,然后作者证实这篇文章是恶作剧,于是我相信MongoDB至少是稳定的产品,于是运用到自己的生产环境中。
于是,问题就来了。
1:MongoDB占用的空间巨大无比。
我用MongoDB Dump整个数据库,输出的bson文件共1.1个G,但这个数据库在MongoDB的Data目录下竟然占用了30G的空间。
2:真的会丢数据
某日,我的服务器在没有任何问题的情况下,MongoDB突然就不能读取和写入了,所有的查询都返回Transport endpoint is not connected. 很莫名。于是,我用正常的方式重启MongoDB(不是kill进程),之前的错误没有了,但明显发现查询失败率提高了,更要命的是,有一部分数据丢失了,数据库好像回到几天前一样。于是我用--repair命令尝试修复数据库,更离奇的事情发生了,30G的物理文件,修复完成以后变成7G了,这下MongoDB的所有数据都查询不出来了。幸好我在repair前留了个心眼,备份了30G的文件,又dump了bson文件,不然真要哭死了。
后来我查了资料,发现MongoDB有Lazy Write的机制。但是我认为即使有这个机制,也不应该在正常操作的情况下丢失数据,而且这个机制是针对意外关闭的情况,但我的服务器又没有突然重启,又没有kill操作,就不应该随便丢数据。之后的--repair为什么会丢数据就不知道了,我也无意去研究,因为我感觉MongoDB太不成熟了,可靠性方面和MySQL没得比。于是我写了程序,将MongoDB的数据导入MySQL,然后将网站的数据库层改成基于MySQL的...MongoDB太坑爹了。
3:查询不够稳定
MongoDB查询的时候,有时会查询莫名出错。这个概率不大,但相对于MySQL,就大多了。
虽然《Do not use mongoDB》的作者证实是恶作剧,但是我觉得作者是真的遇到了类似的问题,才会恼火写这篇文章的。这些问题是客观存在的,至少我遇到了。我也很恼火。
经过实践,我建议目前数据库还是用MySQL。分布式还是用程序实现比较稳当。MySQL也支持Master Slave,另外,MyISAM引擎的插入效率也不低,虽然没法和MongoDB的速度比,但为了这点速度的提升而牺牲了可靠性,就相当不值得了。MongoDB有着很好的设计思想,但是目前稳定性和可靠性都不够,等到MongoDB再成熟一些,再考虑使用吧。
Ferris
2012年2月17日
今天我朋友找我帮忙,因为他在Excel中按方向键,出现了类似滚动条的效果,即按下,表格就往下滚了一格。正常的情况应该是选中的单元格往下移动一格。其实这是一个很正常的情况,只要按一下Scroll Lock键就可以了,但是这款联想ThinkPad笔记本竟然没有Scroll Lock键。
不过通过猜测和网友的帮助,大家可以试试:
Fn+C 或者 Fn+Shift
Ferris
2011年12月7日
由于Firefox的升级速度过快,导致了大量的扩展组件在升级到新版本以后无法兼容,但实际上这些组件还是可以运行的,虽然Firefox的版本号升的很快,但是并不表示Firefox进行了很多改动。所以我们可以尝试修改扩展组件内含的安装配置信息来使其能兼容高版本的Firefox。
我下面以Screengrab这款插件来说明如何让它兼容Firefox 8.0。
1:进入Screengrab的下载页面
https://addons.mozilla.org/en-US/firefox/addon/screengrab/
将screengrab的xpi文件下载到你的电脑里。我下载下来的文件名是addon-1146-latest.xpi
2:将后缀名xpi改成zip,然后解压出来
3:解压好以后,应该有2个文件和3个文件夹。找到其中的install.rdf,用记事本打开
4:找到其中的 <em:maxVersion>3.6.*</em:maxVersion> ,将其中的3.6.*改成8.*,如<em:maxVersion>8.*</em:maxVersion>,然后保存该文件
5:用WinRAR或其他ZIP压缩文件,将这5个文件再次打包成标准的zip文件。
6:再将生成的zip文件的扩展名修改成xpi,用Firefox打开它,就可以安装了。这时,由于我们在第4步中修改了安装配置文件install.rfd里的支持的最高版本号,现在用Firefox8.0打开就不会提示兼容性问题了。
注:以上操作的目的是为了强制让高版本的Firefox安装一些低版本的扩展组件。因为大部分组件其实还是能在高版本Firefox运行的,只是因为这些组件的作者未能及时更新安装配置信息,导致其安装被高版本的Firefox浏览器拒绝了。当然,也有一些组件实际上是不支持高版本的Firefox的,遇到此类扩展组件,即使你用上述方法安装成功了,也不一定就能正常使用哦。
Ferris
2011年11月17日
mysql -u root -p
use db2;
create table copy like db1.people;
insert into copy select * from db1.people;
Ferris
2011年9月19日
今天在搜狐首页上看到“国家队员曝女足丑闻”,我很气愤,如下图
首先,这件事情在几天前已经澄清了,搜狐再拿出来报道就是不道德的。但是搜狐不但不道德,而且还相当
缺德。他们截了一张韩端在下场时和李霄鹏拥抱的照片,配上文字竟然是“陪酒陪睡换奖金”,我擦!像搜狐这种媒体就是唯恐天下不乱,如果不给他们一点惩罚,这个社会怎么和谐?!
Ferris
2011年9月2日
hmailserver安装在64位的系统上会出错,原因就是hmailserver需要.net运行环境的支持。如果系统没有装.net运行环境,则hmailserver的安装向导会帮我们下载并安装,很方便。不过有一个问题就是hmailserver下载的是32位的.net运行环境,所以导致了通过hmailserver的安装向导是无法安装到64位操作系统上去的。
因此解决方法也很简单,先去微软网站下载64位的.net运行环境并安装,然后再安装hmailserver即可。
64位.net下载地址:
http://www.microsoft.com/download/en/confirmation.aspx?id=6523
Ferris
2011年8月29日
近期遇到个DW CS4的问题,我在首选项中指定了默认以UTF-8格式打开代码文件,但是DW还是会以GB2312的编码打开文件,每次我都要重新用UTF-8编码加载,太不方便了,还好,找到一个另类的解决方法,方法很简单,就是在代码文件的开头,写一个带中文字的注释就可以了,例如:
//中文注释,随便什么都可以
function jsFunction() Ferris