仔细设定Mysql用户权限。提高查询速度!
之前一直是将用户权限设定为全权,包括结构及和文件及
最近看了篇文章于是测试了下
只给数据及权限 果然查询速度提高 40% 多
humen1 Tech
之前一直是将用户权限设定为全权,包括结构及和文件及
最近看了篇文章于是测试了下
只给数据及权限 果然查询速度提高 40% 多
humen1 Tech
define(“ROOT_PATH”,“/xxx/yyy/zzz/”);
function A (){
$this->rootPath = ROOT_PATH;
$this->file = __FILE__;
return $this->classRoot = basename(str_replace(“/”,“.”,str_replace(“$this->rootPath” ,“”, $this->file)),“.php”);
}
humen1 Tech
- Dr. Watson’s site validation check
Dr. Watson 是一个免费的网页分析服务,你只需提交你的URL ,Watson 就可以直接从WEB服务器提取到相关的检测报告。Watson 还能检查你网站的其它方面,包括链接的有效性,下载速度,搜索引擎兼容性,链接的友好性等。它将很多检验工具集合为一体,下面是简单列表:
页面加载时间检测
语法和风格分析
字数统计
拼写检查
链接检查
搜索引擎优化检测
引入链接检测
源代码检测
- W3C Markup validation Service
检测标记、源代码、HTML/XHTML等语法错误并提出修改建议。它来自于 W#C 集团,所以其检查比较严厉,文档检测标准独特,一些其他的相关检测网站均不具备,
- SEO Consultants Validator
这是一个HTML/XHTML/CSS有效性检测工具,当检查出错误时,提供更改的建议,包括语法风格检查和源代码检查。
这个工具用来检测你的XML文件是否有效,检查范围包括空格和语法错误,当检查出错误时会用指出错误产生的行号,方便你的修正。
这个工具主要检查 Robots.txt 文件。当你拿不准你的 Robots.txt 是否有效或是否能被搜索引擎错误识别时,你最好先用它来检查一下,因为 Robots.txt 一旦出了问题对你的搜索收录存在很大的问题。
你想知道在世界各地打开你的网站的加载时间吗?这个工具就为你提供了可以世界各地打开你网页的时间同时给出处理的文档大小。
- All in One website validation check
XML/HTML 有效性、CSS、链接和结构合理性检测工具
检查你的RSS是否合乎标准,如果你的FEED需要修正,它会在相关错误处提示警告信息。
想知道你的站点是否还有可改善之处吗?可以用它来做一下所有的常规检测。
- Quality and Accessibility check
检测内容比较广泛,如易用性、页面内容、元数据、链接、浏览器兼容、搜索和导航、W3C网页内容指导等方面,它能够给你提供一个具体的错误细节报告和解决思路。
humen1 Tech
要使用本函数库要先准备 mcrypt 程序,可以到 ftp://argeas.cs-net.gr/pub/unix/mcrypt 下载这个程序 libmcrypt-x.x.tar.gz。同时在编译 php 程序时需要加入 --with-mcrypt 的选项,俾使本函数库能顺利运作。
本函数提供的编码方式有 des、tripledes、blowfish (默认值)、3-way、safer-sk64、safer-sk128、twofish、tea、rc2 及使用 cbc, ofb, cfb, ecb 作为密码检索的 gost。此外还有 rc6 及 idea 等非免费的编码方式。
见下面列示为已定义的密码:
mcrypt_blowfish
mcrypt_des
mcrypt_tripledes
mcrypt_threeway
mcrypt_gost
mcrypt_crypt
mcrypt_des_compat
mcrypt_safer64
mcrypt_safer128
mcrypt_cast128
mcrypt_tean
mcrypt_rc2
mcrypt_twofish (mcrypt 2.x 前的版本用)
mcrypt_twofish128 (mcrypt 2.x 后的版本用)
mcrypt_twofish192
mcrypt_twofish256
mcrypt_rc6
mcrypt_idea
在密码检索本 (cipher) 方面,本函库支持 cbc、ofb、cfb 与 ecb 四种密码检索本。这四种密码检索本的简单叙述如下,更详细的信息请参考 schneier 所着作的 applied cryptography (isbn: 0-471-11709-9):
ecb (electronic codebook): 适合随机的资料,例如使用另外的密钥。若资料量少且随机时,使用 ecb 较不适合。
cbc (cipher block chaining): 适合文件的加密,安全性较 ecb 好。
cfb (cipher feedback): 适合对位组资料流中的某段独立位组资料 (single bytes) 加密。
ofb (output feedback): 与 cfb 相容,尤其适合在无法忍受错误波及的应用上。
目前 php 仍无法对单位 (bit) 的熵值做加密解密的步骤,目前只适合对字符串作密码处理。
在使用 cfb 及 ofb 二种模式时,必须要向量初始化 (initialization vector, iv),cbc 模式也可以使用向量初始化。
向量初始化的值在加解密时必须是独一无二的,同时也要保持相同。当加密后的资料输出时,也可同时输出密码钥匙 (例如存在文件中);或者也可以将向量初始化的值与加密后的资料一起输出。
mcrypt_get_cipher_name: 取得编码方式的名称。
mcrypt_get_block_size: 取得编码方式的区块大小。
mcrypt_get_key_size: 取得编码钥匙大小。
mcrypt_create_iv: 从随机源将向量初始化。
mcrypt_cbc: 使用 cbc 将资料加/解密。
mcrypt_cfb: 使用 cfb 将资料加/解密。
mcrypt_ecb: 使用 ecb 将资料加/解密。
mcrypt_ofb: 使用 ofb 将资料加/解密。
mcrypt_get_cipher_name
取得编码方式的名称。
语法: string mcrypt_get_cipher_name(int cipher);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数用来取得编码方式的名称。返回值为名称字符串,若没有指定的编码方式则返回 false 或输入的名称。
使用范例
下例会输出 tripledes 字符串。
$cipher = mcrypt_tripledes;
print mcrypt_get_cipher_name($cipher);
?>
mcrypt_get_block_size
取得编码方式的区块大小。
语法: int mcrypt_get_block_size(int cipher);
返回值: 整数
函数种类: 编码处理
内容说明: 本函数用来取得编码方式的区块大小。参数为编码名称,返回整数单位为位组 (byte)。
mcrypt_get_key_size
取得编码钥匙大小。
语法: int mcrypt_get_key_size(int cipher);
返回值: 整数
函数种类: 编码处理
内容说明: 本函数用来取得编码钥匙的大小。参数为编码名称,返回整数治募�单位为位组 (byte)。
mcrypt_create_iv
从随机源将向量初始化。
语法: string mcrypt_create_iv(int size, int source);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数用来建立向量初始化 (initialization vector, iv) 的值。参数 size 为指定的向量初始化长度。
参数 source 为随机资料的来源,来源可以是 mcrypt_rand (系统产生的随机值)、mcrypt_dev_random (unix 系统中 /dev/random 的资料)、mcrypt_dev_urandom (unix 系统中 /dev/urandom 的资料),若使用 mcrypt_rand 当做随机源,记得先使用 srand() 产生乱数种子。
使用范例
$cipher = mcrypt_tripledes;
$block_size = mcrypt_get_block_size($cipher);
$iv = mcrypt_create_iv($block_size, mcrypt_dev_random);
?>
mcrypt_cbc
使用 cbc 将资料加/解密。
语法: string mcrypt_cbc(int cipher, string key, string data, int mode, string [iv]);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数使用 cbc 密码检索本 (cipher block chaining),将资料加密及解密。参数 cipher 为加/解密方式,例如 mcrypt_tripledes。参数 key 是密码钥匙,当然要注意保持它的机密性。欲加密或解密的字符串就放在参数 data 之中。参数 mode 表示加密 mcrypt_encrypt 或是解密 mcrypt_decrypt。参数 iv 是可省略的参数,代表向量初始化 (initialization vector, iv)。
mcrypt_cfb
使用 cfb 将资料加/解密。
语法: string mcrypt_cfb(int cipher, string key, string data, int mode, string iv);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数使用 cfb 密码检索本 (cipher feedback),将资料加密及解密。参数 cipher 为加/解密方式,例如 mcrypt_tripledes。参数 key 是密码钥匙,当然要注意保持它的机密性。欲加密或解密的字符串就放在参数 data 之中。参数 mode 表示加密 mcrypt_encrypt 或是解密 mcrypt_decrypt。参数 iv 是代表向量初始化 (initialization vector, iv)。
mcrypt_ecb
使用 ecb 将资料加/解密。
语法: string mcrypt_ecb(int cipher, string key, string data, int mode);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数使用 ecb 密码检索本 (electronic codebook),将资料加密及解密。参数 cipher 为加/解密方式,例如 mcrypt_tripledes。参数 key 是密码钥匙,当然要注意保持它的机密性。欲加密或解密的字符串就放在参数 data 之中。参数 mode 表示加密 mcrypt_encrypt 或是解密 mcrypt_decrypt。
mcrypt_ofb
使用 ofb 将资料加/解密。
语法: string mcrypt_ofb(int cipher, string key, string data, int mode, string iv);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数使用 ofb 密码检索本 (output feedback),将资料加密及解密。参数 cipher 为加/解密方式,例如 mcrypt_tripledes。参数 key 是密码钥匙,当然要注意保持它的机密性。欲加密或解密的字符串就放在参数 data
humen1 Tech
#cat /proc/cpuinfo
#cat /proc/meminfo
#fdisk -l
#lspci
humen1 Tech
mcrypt被用来实现可逆加密
默认没有装这里我要装一下
有个依赖库libmcrypt 要先装
位置/usr/ports/security/libmcrypt
然后装mcrypt
/usr/ports/security/php5-mcrypt
根据提示要在/usr/local/etc/php/extensions.ini
中+上
这句
但是装好默认就+上了
所以 apachectl restart
OK~
humen1 Tech
最近在移动硬盘上多了2个文件夹,名字很长(数字字母),怎么也删不掉
估计是借给别人时,在移动硬盘里直接运行安装程序造成的缓存文件
尝试了网上所有的办法,除了格式化
硬盘没那么大,都是重要的资料,其实放着也不唉事但就是看着不爽
根据提示看来是应为没有文件夹的宿主权限
然后我尝试了一下改变文件夹宿主的操作,结果问题得到了解决
具体操作如下
右键不能删除的文件夹,属性-》安全-》高级
选择 所有者 标签
选择当前用户
勾选复选框 替换子容器及对象的所有者
确定
然后就可以删除了~~
网上的各种做法是在是让我无言。。。。。
humen1 Tech
1. 下载及安装
用ports 安装cvsd,位于 /usr/ports/devel/cvsd
用ports 安装cvs,位于 /usr/ports/devel/cvs ipv6
创建 cvsd 用户(#useradd)。
2. 修改配置
指定虚拟根目录的实际路径,在RootJail命令后设置
/usr/local/etc/cvsd/cvsd.conf
# RootJail
# This is the location of the chroot jail
# cvs should be run in.
# Specify @#none@# (without quotes) to not use
# a chroot jail.
# This directory should be initialized with
# the cvsd-buildroot script.
RootJail /home/soft/cvsd
创建 /home/soft/cvsd,
使用命令行 /usr/local/sbin/cvsd-buildroot /home/soft/cvsd/ 初始化虚根目录
创建cvsroot 目录 : mkdir /home/soft/cvsd/cvsroot
用命令 cvs -d /home/soft/cvsd/cvsroot init 初始化cvs目录
用命令建立cvs用户:
cvsd-passwd /home/soft/cvsd/cvsroot/ cvsuser:cvsd
上面的命令建立cvsuer 这个帐号,它和系统的 cvsd用户挂接。注意,cvsd是操作系统的用户名,是第一步操作中建立的。
你还可以使用该命令建立其它帐号.
将cvsroot 加入/usr/local/etc/cvsd/cvsd.conf的最后一行,如下面
Repos /cvsroot
此句指明要使用虚拟根下的 “cvsroot” 这个仓库。
3 设置启动脚本
#echo cvsd_enable=“YES” >> /etc/rc.conf
#reboot
4.注意事项
cvsd只是cvs的一个外壳程序,将cvs运行在虚拟根环境下,提高系统的安全性。你在安装cvsd后还必须安装cvs程序。
不要跨分区建立仓库,否则会提示找不到用户.
我的/home 和/ 是两个不同的分区.我开始在home下创建仓库,在var下创建虚根目录,作了符号链接后不能读取文件.
声明:
转载此文请保留此声明信息。
驱动开发网 华语地区核心层开发专业网站 http://www.driverdevelop.com
软件创造价值,驱动提供力量!
humen1 Tech
iframe自适应高度和宽度,在页面标签内写入如下。
function SetWinHeight(obj)
{
var win=obj;
if (document.getElementById)
{
if (win && !window.opera)
{
if (win.contentDocument && win.contentDocument.body.offsetHeight)
{
win.height = win.contentDocument.body.offsetHeight;
win.width =win.contentDocument.body.offsetWidth;
}
else if(win.Document && win.Document.body.scrollHeight)
{
win.height = win.Document.body.scrollHeight;
win.width=win.Document.body.scrollWidth;
}
}
}
}
然后在里面写入如下
humen1 Tech
############################################################
# What’s this . This is a PHP5 CLASS to provide access utility
# for MySQL database.
# AUTHOR :: Humen1
# WEB SITE :: http://www.humen1.net
# Vision :: 1.0
############################################################
class mydb{
///start of the CLASS
private $host;
private $usr;
private $pwd;
private $db;
private $charset = NULL;
private $charsetArray = Array(“utf8”,“big5”,“gb2312”,“gbk”,“latin1”);
private $link;
private $result;
private $error = Array();
/**
#ERROR = Array(
# [0]=>,
#
# )
**/
###construct
function mydb($DB_host,$DB_user,$DB_passwd,$DB_name = “”){
$this->host = $DB_host;
$this->usr = $DB_user;
$this->pwd = $DB_passwd;
$this->db = $DB_name;
}
###set database name
function set_db($DB_name){
$this->db = $DB_name;
}
###get connection flag
function connection(){
///get connection
$this->link = @mysql_connect($this->host,$this->usr,$this->pwd);
if(!$this->link){
$this->error[0] = sprintf(“Error connecting to host %s by user %s”, $this->host,$this->usr);
}
///select db
if(!mysql_select_db($this->db,$this->link)){
$this->error[1] = sprintf(“Error in selecting %s database.\n mysql errno is %d and error message is %s”,$this->db,mysql_errno($this->link),mysql_error($this->link));
}
}
###set query charset
function set_charset($Charset){
if(in_array($Charset,$this->charsetArray)){
$this->charset = $Charset;
}
}
###Quick execute the statement
function query($SQL){
$this->connection();
if($this->charset !== NULL){
mysql_query("SET NAMES ".$this->charset , $this->link);
}
$this->result = mysql_query($SQL , $this->link);
if(!$this->result){
$this->error[2] = sprintf(“Error query in %s database.\n mysql errno is %d and error message is %s”,$this->db,mysql_errno($this->link),mysql_error($this->link));
}else{
return $this->result;
}
}
###fetch the result as array
function fetch($result_type = MYSQL_BOTH){
///MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH
if($result_type == “1”) $result_type = MYSQL_NUM;
if($result_type == “A”) $result_type = MYSQL_ASSOC;
if(!$this->result){
$this->error[3] = “Error fetch array in %s database.There is no Result”;
}else{
return mysql_fetch_array($this->result,$result_type);
}
}
###fetch the result as object
function fetch_obj(){
return ($this->result) ? @mysql_fetch_object($this->result) : false;
}
###return the next id
function next_id(){
return ($this->link) ? @mysql_insert_id($this->link) : false;
}
###return the affectde rows
function affected_rows(){
return ($this->link) ? @mysql_affected_rows($this->link) : false;
}
###return the rows number from result
function num_rows(){
return ($this->result) ? @mysql_num_rows($this->result) : false;
}
###return the fields number from result
function num_fields(){
return ($this->result) ? @mysql_num_fields($this->result) : false;
}
###free the result
function free(){
return ($this->result) ? @mysql_free_result($this->result) : false;
}
/****************Advanced Plus************************/
###get one record only
function getOne($SQL){
$SQL .= " LIMIT 1";
$this->query($SQL);
return ($this->result) ? @mysql_fetch_row($this->result) : false;
}
///End of the CLASS
}
?>
humen1 Tech