<style>
#img {
max-height:100px;
height:100px;
overflow:hidden;
}
#img1 {
position: relative;
}
</style>
<script type="text/javascript" src="/js/jquery.js"></script>
<script>
$(document).ready(function(){
var theImage = new Image();
theImage.src = $( '#img1').attr( "src");
//alert( "Height: " + theImage.height);
$("#img").on('mouseover',function(){
$("#img1").animate({top: -150}, 1000);
});
$("#img").on('mouseleave',function(){
$("#img1").animate({top: 0}, 100);
})
})
</script>
<div id="img">
<img id="img1" style="" src="/aa.png" />
</div>
寻到一个基于CI的cms
想学习一下基于CI的CMS,下面是网络上网友收集的基于CI的CMS
1、ExpressionEngine 简称EE
开发CI的公司开发的产品
官方网址:http://expressionengine.com/
演示地址:不知道
2、MaxSite CMS
类似wordpress的博客CMS,俄国人写的。
官方网址:http://max-3000.com/
官方网站就是用自己的系统搭的
3、ExiteCMS
官方网址:http://www.exitecms.org/
demo:http://exitecms8.exitecms.org/en/homepage.html
4、pyrocms
模块化的开源CMS
官方网址:http://pyrocms.com/
demo:网址是http://pyrocms.com/demo,不过demo被删除了,链接还在。
5、ionize
强大友好的CMS
官方网址:http://ionizecms.com/
demo地址:http://demo.ionizecms.com/
后台demo:http://demo.ionizecms.com/en/admin/user/login 用户名/密码:demo/demo
6、CI-CMS
官方网址:http://solaitra.tuxfamily.org/
demo地址:This is no longer a demo site
7、Vunsy
这应该不算是CMS,官方说:这是一个网站的内核,提供基础的功能。可能跟BackendPro有点儿类似,不过最近用了一下BackendPro,不是很喜欢,不知道这个怎么样。
网址:http://www.blazeboy.com/wordpress/2010/03/20/vunsy/
###################### 下面是我的一些 心得 ###################
1、ExpressionEngine 简称EE,貌似只有商业版,pass
5、ionize 界面不错,不过前端用的不是我熟悉的jquery,pass。
最后我的选择:
4、pyrocms,理由:有繁体中文版,安装很人性化,前端基于Jquery.
php生成图表类pChart
把firePHP集成到codeigniter调试程序
1, 在火狐插件里找寻firephp并安装。
2,下载php的firePHP类库:http://www.firephp.org/HQ/Install.htm
3,复制其中的FirePHP.class.php和fb.php到application/library/下并重命名成Firephp.php和Fb.php.
4,如下调试代码,好处,静默调试,不影响网页的正常输出,更多的功能估计要详细看官方文档!
$this->load->library(‘Firephp’);
$a = array(‘name’=>’gaorong’,'age’=>27);
$this->firephp->info($a)
学习一个基于CI的CMS和网站管理后台
官方的CI的cms:http://expressionengine.com/ 不过好像没有免费的
又找了一个貌似也不错:http://ionizecms.com/,不过没中文
国人开发的基于CI的管理后台:http://www.dilicms.com/
json在php5.1下的安装
现在很多服务器的版本都是RHEL5系列,默认安装的php版本是5.1,而我们现在坐web开发经常会用到json_encode,json_decode函数,这两个函数默认值在5.2里才加到php里。所以在RHEL5中,要买升级php,要买安装json的扩展,我选择了后者
# yum install -y php-devel php-pear
# pecl install json
对js语言的一个小理解
在做项目的时候,发现在js函数里的ajax的的返回不能返回给主体函数,一直搞也搞不了,用了全局变量也不行,其实这里本身就犯了根本性的错误。在js的ajax中,ajax默认是异步的,什么是异步,异步就是在执行ajax请求的时候,不必等ajax的返回,直接再执行函数的下面步骤,所以js返回的时候,也许ajax还在请求呢,异步的这种特性就是非阻塞。如果硬要等待ajax的返回,那只能把async的属性设置成false,这样js函数在执行过程就就必须等待ajax的返回才能继续下去。
我再用生活中的例子来说明同步和异步的概念。我想喝茶,但是既没有茶叶也没有开水。所以我要做两件事,买茶叶和烧开水。同步就是:我先烧开水,等开水烧好了,我把开水灌起来,再去买茶叶,买完回来,再用开水跑茶叶。异步就是:我烧开水,我烧的时候,我就不等了,直接去买茶叶,买完茶叶可能水烧好了,也可能没烧好,取决于买茶叶的路程,烧水量和火的大小。不过有一点是肯定的,异步的效率更高,我能更快的喝到茶叶了。
其实,js语言和php(我比较熟悉)在函数上很大的区别就是同步(阻塞)和异步(非阻塞)的区别,所以,在调试上js这种异步的机制也比较难调试。
随便说下,node.js现在蛮火的,用的就是google的chrome浏览器v8引擎写的js的服务端,以后看来可以用js来写服务端语言了!
下面的代码注释掉 async: false,会得到截然不同的结果。
<html>
<head>
<title>Upload Form</title>
<script src="/js/jquery.js"></script>
<script>
function aa() {
var bol = 11111;
$.ajax({
type : 'get',
url : 'aa.php',
async : false,
success : function(msg) {
bol = 22222;
}
})
return bol;
}
</script>
</head>
<body>
<input type="button" value="submit" onclick="alert(aa());">
</body>
</html>
我用的几个php框架的个人感受
学习和用过几个php的框架,zend framework, yii,thinkphp,codeigniter。
用的最多的还是ci,简易,易上手,文档齐全,扩展性也不错。如今的php框架可以说让人看花眼,但思想上好像都差不多,单一入口,初始化一大堆东西,然后加载控制器,取数据,渲染模板。zend framework, yii学习的曲线都比较长。我觉得做web开发还是效率为王,兼顾性能,同时易扩展,这点ci还是很能满足我的需求,thinkphp也不错,有在框架上对数据的读写分离进行集成。不过用得还是没有ci顺手。
有一点要说明下,原来我觉得框架一定要建立model,所有的数据库操作都在model实现,这个在ci里就是这么体现的,但有时候这么做会会影响开发的效率,毕竟不是什么表都要建立model的,thinkphp直接可以在控制器里操作数据,这样就提高了效率,但我不知道的是,两种做法各有利弊,一个追求效率,一个保证了代码的优雅和整体的一直。反正各取所需吧,在如今网站开发中,js和ajax的大量运用,调试其实占用了更大的时间。
外键约束导致的mysql数据的无法导入,errno: 150
我在用mysqldump回复mysql数据库的时候无法成功,抛出errno: 150的错误,仔细发现,中断的那个表创建失败,失败的原因是那个表关联了很多外键,很依赖这个外键的表还没有创建,mysqldump导出的时候是按照字母的顺序导入,而没有检查依赖关系,所以在恢复的时候如果被依赖的表的字母顺序在后而没有先导入的话,就会引起错误和中断。我想了办法 只能把那个表最后导出,放在导出的sql的最后。下面是脚本:
#!/bin/sh mysql -uroot -pxxx -hxxx -e "lock table mall.ma_order_divideup_log write" mysqldump -uroot -pxxx -hxxx --default-character=utf8 --master-data mall --ignore-table=mall.ma_order_divideup_log > mall.sql mysqldump -uroot -pxxx -hxxx --default-character=utf8 mall ma_order_divideup_log >> mall.sql mysql -uroot -pxxx -hxxx -e "unlock tables"
sysbench对硬盘的随机IO的读取
# 建立测试文件,最好是内存的2倍大小,rndrw,随机读写,rndwr顺序读写
# sysbench –test=fileio –num-threads=4 –file-total-size=64G –file-test-mode=rndrw prepare
# sysbench –test=fileio –num-threads=4 –file-total-size=64G –file-test-mode=rndrw run
在服务器(sas300G*4,32G,raid5),pc机(1TG,2G内存)的两次测试
Running the test with following options:
Number of threads: 4
Extra file open flags: 0
128 files, 512Mb each
64Gb total file size
Block size 16Kb
Number of random requests for random IO: 10000
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Done.
Operations performed: 6002 Read, 3999 Write, 12801 Other = 22802 Total
Read 93.781Mb Written 62.484Mb Total transferred 156.27Mb (27.788Mb/sec)
1778.44 Requests/sec executed
Test execution summary:
total time: 5.6235s
total number of events: 10001
total time taken by event execution: 21.5261
per-request statistics:
min: 0.01ms
avg: 2.15ms
max: 48.84ms
approx. 95 percentile: 9.17ms
Threads fairness:
events (avg/stddev): 2500.2500/52.15
execution time (avg/stddev): 5.3815/0.01
===================================
Running the test with following options:
Number of threads: 4
Extra file open flags: 0
128 files, 512Mb each
64Gb total file size
Block size 16Kb
Number of random requests for random IO: 10000
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Threads started!
Done.
Operations performed: 6001 Read, 3999 Write, 12800 Other = 22800 Total
Read 93.766Mb Written 62.484Mb Total transferred 156.25Mb (1.9127Mb/sec)
122.41 Requests/sec executed
Test execution summary:
total time: 81.6893s
total number of events: 10000
total time taken by event execution: 164.0390
per-request statistics:
min: 0.00ms
avg: 16.40ms
max: 372.16ms
approx. 95 percentile: 62.64ms
Threads fairness:
events (avg/stddev): 2500.0000/29.23
execution time (avg/stddev): 41.0098/0.30
结果:真是差很多啊。
服务器:
Operations performed: 6002 Read, 3999 Write, 12801 Other = 22802 Total
Read 93.781Mb Written 62.484Mb Total transferred 156.27Mb (27.788Mb/sec)
1778.44 Requests/sec executed
PC机:
Operations performed: 6001 Read, 3999 Write, 12800 Other = 22800 Total
Read 93.766Mb Written 62.484Mb Total transferred 156.25Mb (1.9127Mb/sec)
122.41 Requests/sec executed