Posts tagged PHP

新生的开源PHPCMS-Arlicle

Arlicle是一个基于Arlicle 是开源并基于GNU GENERAL PUBLIC LICENSE Version 2协议发布的.它需要PHP5或者更高版本和Mysql数据库4.1以上版本, 同时需要PHP的GD2.0库(不用当心,一般的PHP服务器上都已经都有配置). ——引自Arlicle的介绍。

机缘巧合遇到的aricle,是我在googlecode里面搜索phpcms搜索到的,基于GPL2.0协议,实在是难得,看到国内越来越多的真正开源的代码,感觉真的不错。大家可以参观下老鬼的这篇文件:国内这些开源的程序真的是开源了吗?

svn checkout http://arlicle.googlecode.com/svn/trunk/

官方主页:www.arlicle.com文档说明:www.arlicle.com/docs

对程序的认识还很少,我用过改过一点东西,简单易用,最主要的是比较灵活,大家看一下官方简介。

QQ官方群:2303653群主就是作者,很热情

玩踢猴子的一个约瑟夫算法

首先就给出题目了,大家先看看

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,
从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,
直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,
输出最后那个大王的编号

这个题目是我面试的公司给出的一个题目,不要标准答案,要求有自己的想法,还允许有错误,\(^o^)/~

这道题杀死我N个脑细胞,刚开始写了一种算法,在一些特定的条件下总是导致踢猴子位置的获取错误

最终还是解决了,函数如下

function getKing($n, $m){
//强制转换为数值型
$n = intval($n);
$m = intval($m);

//让猴子排好队
for($i=0; $i < $n; $i++){
$monkeys[$i] = $i+1;
}

$start = 0;//初始化开始位置
$step = $m – 1;
for($i=0; $i < $n; $i++){
//判断猴子的个数,如果只剩一个就直接返回这只猴子
$num_monkey = count($monkeys);
if($num_monkey === 1) return $monkeys[0];

//如果这一圈找不到要踢的猴子,就在下一圈找到要踢的猴子
if($start + $step >= $num_monkey){
$start = ($step+$start)%$num_monkey;
}
else{ //这一圈找到就直接踢它
$start = $start + $step;
}

unset($monkeys[$start]);    //踢猴子
sort($monkeys);        //让猴子重新站好
}
}

算法的思想就是,循环链表,但是我始终让猴子永远排成一横队,这样觉得更容易理解一点

猴子始终排成整齐的一排,中间不允许有空余的位置。

如果不用回头就能找到可以踢走的猴子,那就不回头一直在这一排往下踢

如果找了好长时间,找不到可以踢的猴子,我们还是不回头

而是重新开始从这排猴子的第一个开始找,这时候重要的是,这时候踢哪一个?

我们上次找猴子虽然没有找到,但是我们的花的功夫可不能白搭是吧,我们接着上次在找,我们知道还有几个猴子没有点名就行了,接着上一轮继续点,找到猴子,把它踢出去。

就是这样,一直循环下去,我踢踢踢,国王是不能踢的,等到踢不动了,就找到猴王了。

网上看到牛人写的算法,佩服

function kickMonkey ($n,$m) {
$s = 0;
for ($i=2; $i <=$n; $i++) {
$s = ($s+$m)%$i;
}
$win = $s+1;
return $win;
}

算法简化了很多,我还没有消化掉。

IE-Cookie跨域问题

我需要通过网站的后台嵌入iframe访问另一个网站的后台,但是两个网站的后台肯定都需要Session验证权限,Session又是基于Cookie实现的,在IE浏览器下是这样是不允许访问第三方Cookie的。

IE处于安全性和隐私考虑,默认情况下是禁止访问第三方Cookie的,我们可以通过ie浏览器的Internet 选项来设置是否允许访问第三方Cookie,但是这样只对自己有效,在别人的浏览器上就不一定行的通了。

现在介绍一种一劳永逸的方法,支持IE8。

在你创建Cookie或Session的PHP文件最上面加上

header(’P3P: CP=CAO PSA OUR’);
header(’XDomainRequestAllowed: 1′);

这是在向客户端浏览器发送两条头信息

P3P:Platform for Privacy Preferences

这样我们就可以替用户设置本页面Cookie的隐私权限了,其实和用户自己设置IE的隐私权限是一样的。

XDomainRequestAllowed:IE8新支持的特性,XDomainRequestAllowed设置为1可以实现跨域请求,这样开发Ajax就不必为跨域而烦恼了。

但是这样又为安全问题带来的隐患,使跨站攻击变的更加容易,虽然可以通过一些手段限制可以跨站的域,但是不是万不得已或者这个页面不会带来负面影响最好不要这样做。

瞧瞧大蟒吧

一个在家确实无聊,好的电影也看的差不多了,最近心血来潮有空再看python,说它好的很多,说它差的很少,相比php是无法比的,说php不是的一搜要多少有多少。

但是相比之下,php的成功案例还是最多的

维基百科

facebook

实在举不胜数,其实优点还是很多滴

还有做为呈现结果和接受用户的旨意也是很方便的。

但我还是想要学一下python,因为我想要再学习一门语言。

ror能做什么?企业站,算了吧!

Java?很好!但是要花费太大的精力,等学会了py再说吧

.net?NO!我不喜欢,因为我希望夸平台。

那就抄起家伙,来学python吧!