Entries in the ‘Uncategories’ Category:

360杀毒软件的快速崛起 告诉我们的一些道理

原文http://hi.baidu.com/loxtfire/blog/item/a599dea299c8f0a7cbefd011.html
这段时间最牛逼的产品之一是360安全卫士旗下刚刚推出的360杀毒,这个“借壳上市”的杀毒软件9月30日发布,到今天不满两个月时间。按照艾瑞的iUserTracker统计,11月2日到11月8日的日均覆盖率已经达到了2680.7万,在所有软件中排第12位,超过了QQ游戏大厅、 Maxthon、PPstream、暴风影音这些广大人民群众耳熟能详的老牌互联网软件,超过360一手捧起来的NOD32和卡巴斯基,跻身杀毒软件第二位,猛烈的摇晃着瑞星的统治地位。
这样的一个推广速度超过了以前任何一个产品的推广,即便是QQ系产品也都经过了多产品矩阵式的关联推广和时间的累积。有了360杀毒,QQ拼音一年6000万覆盖的新闻就已经不再那么令人震惊了。
这个案例告诉我们一些道理:

Comments (2)

揭示PHP成功背后的秘密:PHP创始人访谈录

本文来源:51CTO
Rasmus Lerdorf可能是格陵兰最著名的电脑牛人,他1995年创建了PHP脚本语言,并成功应用到他的网站中,在他的一手栽培下,PHP已变成一个强大的,完全成熟的语言,目前世界各地已有数百万PHP应用案例。
 
PHP创始人Rasmus Lerdorf
Linux Format杂志对Rasmus Lerdorf做了一次专访,为我们揭开Rasmus Lerdorf现在在PHP社区的地位,以及早期他是如何决策的,才让PHP实现了今天的巨大成功。

Tags:

Leave a Comment

MySQL权限详解

一.权限表
mysql数据库中的3个权限表:user 、db、 host
权限表的存取过程是:
1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;
2) 通过权限验证,进行权限分配时,按照user?db?tables_priv?columns_priv的顺序进行分配。即先检查全局权限表 user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检 查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。
二.MySQL各种权限(共27个)
(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)
1. usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。
mysql> grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;

Tags:

Comments (1)

MySQL编码机制

大家都知道从 MySQL4.1 版本开始,支持多种编码,包括我们熟知的 latin1、gbk、utf8、big5 等等,还有一些我们闻所未闻的。
在使用 PHP 连接 MySQL 查询出来的数据有的时候居然会是乱码,关于乱码的解决首先我们要了解 MySQL 的编码机制。
拿 Discuz! 论坛为例,Discuz! 论坛在连接 MySQL 后会立即执行一个设定(见include/db_mysql.class.php ):
@mysql_query(”SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary”, $this->link);
此三处的字符设定很大程度上会解决乱码问题,那么这三个设定具体有什么作用呢?如果我们了解了 MySQL 的编码机制,就可以避免在安装插件及平时的操作过程中产生乱码,还可以自行对论坛的数据进行转码。

Tags:

Leave a Comment

uchome源码解读之配置表缓存

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://remindme.blogbus.com/logs/30433431.html
做为sns站点,相比cms站点,动态性要求高,生成静态页面价值不是太大,变更因素太多,因此uchome的缓存一方面是view的缓存,也就是template的缓存,一方面则对每个页面都需要的配置文件做了缓存,减小数据库服务器的负荷.
在home/common.php中,对配置的读取是这样的:
//配置文件
if(!@include_once(S_ROOT.’./data/data_config.php’)) {
include_once(S_ROOT.’./source/function_cache.php’);
config_cache();
}
data/data_config.php文件是通过config_cache()来生成的,看看function_cahce.php文件中的具体实现:
//更新配置文件
function config_cache($updatedata=true) {
global $_SGLOBAL, $_SCONFIG;
$_SCONFIG = array();
$query = $_SGLOBAL['db']->query(’SELECT * FROM ‘.tname(’config’));
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
if($value['var'] == ‘privacy’) {
$value['datavalue'] = empty($value['datavalue'])?array():unserialize($value['datavalue']);
}
$_SCONFIG[$value['var']] = $value['datavalue'];
}
cache_write(’config’, ‘_SCONFIG’, $_SCONFIG);
…..略去部分
}

Tags:

Leave a Comment

浅析Discuz,uchome中模板实现原理

Dizcuz模板和uc home 中的模板是一样的,由 parse_template函数实现(比起smarty可真是超轻量级了).
解析过程并不复杂,主要是读取模板文件(.htm),用规则表达式替换标记为PHP标准语法,最终生成一个标准的PHP文件,保存到缓存目录。而在主文件(.php)中获取数据,最后有个调用 include(template(”*.htm”))
template 调 用 parse_template 将模板缓存为 .php文件,返回文件名给 include()函数,include可以动态包含文件,所以得到了完整的.php. 如果缓存中已经有该文件,直接从缓存读取,所以修改了模板,就要 清除缓存,重新生成,否则,还会显示原来的。
Asp中的 include 不可以动态包含,所以通常是将模板文件解析成块,通过替换该块,实现的。当然有的模板比如kudzu Asp引擎,是将模板解析为节点树,每种节点都有相应的处理插件,从根节点开始执行,遍历节点树,最后生成静态内容,保存到文件后直接输出。

Tags:

Leave a Comment