windows+Python+virtualenv环境配置

python安装

建议官网下载,因为可能会缺少pipeasy_install,没有这两个,需要耗时安装二者之一(由于2.7版本和3.X版本有一些区别,3.X有些库不支持,这里配置的是2.7.10)

python安装按提示进行,然后更改环境变量path即可

然后运行cmd输入python即能测试是否成功

官网文件会自动安装pipeasy_install,没有则需要手动安装其中之一,因为安装它们可以更加便捷的去安装更多的python第三方库。

这里也需要将script文件目录增至path环境变量

Read More

关于flexigrid的初识

对比了一下jquery表格框架flexigridjqgrid,个人认为flexigrid表格框架其实要比jqgrid用着要舒坦
样式也比jqgrid的好看,二者有很大相似也有很大不同。
在这里笔者说一下flexigrid,因为国内demo比较少
希望能对大家有点帮助。
引用:

1
2
3
4
<script src=".jquery.js"></script>
<link rel="stylesheet" href=".styleII.css" />
<link rel="stylesheet" type="text/css" href="./flexigrid.css">
<script type="text/javascript" src="./flexigrid.js"></script>

Read More

MemCache及phpApi缓存浅谈

Memcache是什么?

Memcachemysql一样,是一款服务端C/S管理软件,有ip和有端口(C/S需要客户端才能访问,B/S无需第三方软件应用即可访问)

为什么用Memcache

mysql通过客户端发送硬盘数据

Memcache通过内存发送数据,读取速度快

不过服务如果关闭,数据则会清除,属于临时文件存储所

Read More

如何解决jquery的$符号冲突

在调用js的时候,如果其他JavaScript库为它的函数使用 $ 时,这就涉及到需要解决变量$的冲突
方法为:
(1)使用 noConflict() 方法为 jQuery 可以为初始变量$规定新的名称

1
var jq=$.noConflict();

所以之前的$(“#test”)…样式将变成为
$(“#test”)… => jq(“#test”)…

(2)用完之后便可以还原jquery初始变量,removeAll的值为bool值,用作指示是否允许彻底将 jQuery 变量还原。

1
jQuery.noConflict(removeAll)

(3) $.noConflict() 如果出现冲突,jquery至于其后,采用$.noConflict()可以返回冲突js库的$控制权

(4) .ready()给对象取别名,可以与3联合使用
如下:

1
2
3
4
5
6
7
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
// 使用 jQuery $ 的代码
});
// 使用其他库的 $ 的代码
</script>

Read More

关于mysql数据库rollback浅谈

由于公司新项目开启,数据库搜索引擎从myisam改成了innodb,于是便也能支持了事务,由于需要笔者今儿写了一个function,可是在回滚的时候却出现了问题,耗了些时间才找出原因,于是决定需要写个文档,以便自己或者同行朋友免得走了弯路。废话不说,不喜勿喷,代码如下:
mysql数据库rollback需要具备以下几个条件:
1:数据库:ENGINE=InnoDB 判断搜索引擎为InnoDB,default是否开启(Yes)因为只有Innodb才能支持事务。

1
2
mysql> show engines;
mysql> show variables like '%storage_engine%';

2: 数据表:ENGINE=InnoDB 笔者在这遇到了一些问题,只是看了数据库ENGINE是否是InnoDB,而为了省事儿没看数据表的存储引擎,事务支持需要库和表ENGINE都是InnoDB。

1
2
mysql> show create table 表名;
mysql> alter table 表名 engine=innodb;

Read More

smarty模板机制数据显示原理

smartyassign和display的源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class MyMiniSmarty{
//模版文件的存放路径
var $template_dir="./templates/";
//编译文件的存放路径 ,编译文件的名称格式暂定为:com_对应的tpl.php
var $complie_dir="./templates_c";
//模版变量数组:存放所有模版变量的值
var $tpl_vars=array();
//这里我们主要模拟两个方法
//参数1-模版变量 参数2:模版变量的值
function assign($tpl_var,$val=null){
if($tpl_var!=''){
$this->tpl_vars[$tpl_var]=$var;
}
}
//这里编写display
//参数1-要显示的模版文件名
function display($tpl_file){
//模版文件的路径
$tpl_file_path=$this->template_dir.$tpl_file;
//编译文件的命名及路径
$complie_file_path=$this->complie_dir."com_".$tpl_file.".php";
//判断当前模版文件是否存在
if(!file_exists($tpl_file_path)){
//如果当前模版文件不存在,则返回false
return false;
}
//查看是否有编译文件,如果没有编译文件,或者说模版文件的修改时间大于编译文件的生成时间,则需要重新编译
if(!file_exists($comlie_file_path) ||filemtime($tpl_file_path)>filemtime($complie_file_path)){
//获取模版文件的内容
$tpl_file_content=file_get_contents($tpl_file_path);
//这里我们的核心是怎样把tpl转化为php文件
$pattern=array(
//1.\{ - 转义{ 左括号 2.\s* - 代表一个或多个空格 3.\$ - 转义$符号 4.\} - 转义 } 右括号
'/\{\s*\$([a-zA-Z][a-zA-Z0-9]*)\s*\}/i'
);
$replace=array(
'<?php echo $this->tpl_vars["${1}"] ?>'
);
//将类似 {$title}替换为<?php echo $this->tpl_vars["title"] ? >,返回替换后的字符串
$new_str=preg_replace($pattern,$replace,$tpl_file_content);
//编译文件的生成:将正则替换后的模版文件中的内容写入到编译文件
file_put_contents($complie_file_path,$new_str);
}
//如果存在编译文件并且模版文件没有改动,则直接引入编译文件
include $complie_file_path;
}
}
?>