记录我的学习与生活
玩踢猴子的一个约瑟夫算法
七 19th
首先就给出题目了,大家先看看
一群猴子排成一圈,按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;
}
算法简化了很多,我还没有消化掉。
暂时无业中
七 17th
从今天开始无业状态中,今天原来老板给介绍了一个公司,待遇可以,但是没有什么挑战性,我说周日给他答复
这两天那位达人有好的工作给介绍下,就不去那里了
本人大专毕业,具体学校就不说了,不好意思说
熟悉PHP,JavaScript,Css,php框架也懂点
会一点点python
熟悉Ecshop
了解Drupal,曾做过几个网站
现在幸存的有www.songyefang.com
工作经验:两年
希望从事PHP,或前端设计工作
如果你愿意招收Python新手,也可以从事Python开发
如果有人给介绍个工作不胜感激
在此谢过
被点名了,Orz
七 15th
看到众人被点名,心里就有点怕,终究还是逃不过这个劫。
也是写博客第一次啊
我的第一次…………..
游戏规则:
1.增加一个你想增加的问题,然后去掉一个不喜欢的问题,然后传给朋友
2.点名人数5~10个内
3.被点到的人必须遵守规则完成
文本编辑器:Scite
七 15th
编程的童鞋们都有自己喜欢的文本编辑器,现在我的就是Scite,以前我一直使用EditPlus,很好用,但是收费,用盗版用了好长时间,机缘巧合让我遇到了Scite,从此“爱”上了她。
1. Scite是一款小巧、开源、免费、自定义强悍和跨平台,支持Windows、Linux。
2. 支持多语言(包括中文),自定义快捷键,支持30多种编程语言,语法高亮,自定义语法高亮,代码折叠等等
3. 甚至可以配置文本的选中颜色和选中背景颜色,还有很多很强大的自定义配置,包括使用习惯和外观颜色
4. 默认打开的窗口大小,是否最小化到托盘,菜单栏、工具栏的显示,全屏等
5. 代码提示和函数提示,安装相应的api文件后可以进行语法提示
当你输入一个函数的第一个括号时会进行语法提示,很不错吧。
6. 自动完成,当autocompleteword.automatic=1的时候,当你输入一个词的一部分时,如果文档里面已经有的话,会自动完成这个词,有时候会有点麻烦,但是我感觉方便大于麻烦。
7. 缩略语,输入缩略语,然后按Ctrl+B就定义的完整语句替换缩略语
还有好多好多,达人们就自己去挖掘吧,我现在常用的也就一少部分功能罢了,这里就简单介绍推荐一下
汉化和配置网上已经很多了,Google一下就可以了
推荐两篇关于Scite的文章
http://www.phpchina.com/index.php?uid/30501/action/viewspace/itemid/8794/php/1
http://www.lostk.com/blog/scite_settings/
官方
www.scintilla.org/SciTE.html
由于Scite的配置确实需要一番功夫
也可以使用Notepad++,和Scite一样的内核
PS:这是我的配置文件,下载保存到User Options里面就可以使用了,至于php的扩展,就自己下吧!
仙剑奇侠传三
七 11th
我终于看完了《仙剑奇侠传三》,说真的我没玩过剑三,但是我依然被那每一点触情感动着,甚至无法释怀。
我比较熟悉的事剑四了,虽然没有始终,但是也玩了一大半,由于知道最终的结局,现在一直没有继续玩下去,我还保留着存档。
剑一主要是靠电视剧,知道很不靠谱,但是还是被感动着。
剑的主要讲究的事一个“道”字,这个道字真的不好说,一直蜀山的“道”,与剑讲述的道,蜀山讲述的道一直都是片面的道,而整个剑讲述的道确实真正的道。
我熟悉只是剑一、三和四,一和三主要靠电视剧得知,真正的游戏玩家就不要拍了,我知道拍的电视剧和游戏是无法比拟的,四就靠我玩游戏得知了。
整个剑终究讲述了一个”道“字,可是终究明白这个字的含义的,能有几个,每一部的几个主人公其实是道的表现者,他们一直体现整个”道“的含义。
真是这个”道“字,怎么能说清那,只是被这个道字上面的情感动着。
剑上面的不管是仙、人、妖、魔,都是爱的那么的彻底,还不是那种敢爱敢恨的那种,他们只爱,没有恨。
他们终究为了苍生,而自己和相爱的人,惨淡了场。
添加博客收藏插件
七 9th
看到银月酒馆的代推网的收藏插件很不错,我就也想往博客上也添加这种插件,这样当有人在读我们的文章时喜欢那篇文章就可以收藏或者是推送的Twitter、饭否、嘀咕等微博客。
我找了一下,国外的有一个AddThis,这个应该是鼻祖把,支持多语言,但是本土化严重不足,国内常用的收藏工具一个都没有。
代推支持的的功能比较单一,定制性不强,不支持自定义收藏文章按钮,不支持常用RSS阅读器订阅按钮,但是操作极为简单,只要到他的首页点击“获取按钮”,然后把得到的代码粘贴到你博客想要显示的位置就ok了。
分享家跟AddThis学的很像,支持自定义收藏按钮,也可以把国内用户常用的订阅器链接按钮放到自己的博客上。
支持的挺多的是吧,是吧,有很多我都没听说过,这下见识了。
它还支持国内常用订阅器订阅,把这些常用的订阅按钮放到博客上,用户点击自己使用的订阅器,如果登录了,就可以直接订阅这个博客了,如果没有登录,只需登录就可以了。
官方网站有开发指南,这样我就就可以自己添加按钮和移动按钮的位置了。
想测试现在就可以在我网站上测试了。
还有的就是这篇文章我是使用Windows Writer写的,还挺好用的,推荐没有用的可以尝试一下。
Google App Engine 301 永久重定向
七 7th
由于我想把my2first.appspot.com的流量都转移到www.ddig.info上,也有搜索引擎方面的原因,所以我想把my2first.appspot.com上的内容重定向到www.ddig.info上。
1. class MainPage的get方法第一行添加
if self.request.headers["Host"] == ‘my2first.appspot.com’:
self.redirect(”http://www.ddig.info/”)
self.response.set_status(301)
2. class SinglePost的get方法
if not entries or len(entries) == 0:
return self.error(404)
的下面添加
if self.request.headers["Host"] == ‘my2first.appspot.com’:
self.redirect(”http://www.ddig.info/”+slug)
self.response.set_status(301)
3. class SitemapHandler的get方法下第一行添加
if self.request.headers["Host"] == ‘my2first.appspot.com’:
self.redirect(”http://www.ddig.info/sitemap”)
self.response.set_status(301)
上边其实也可以不加self.response.set_status(301),self.redirect方法加上第二个参数True也可以,这样是Google推荐的方法。
if self.request.headers["Host"] == ‘my2first.appspot.com’:
self.redirect(”http://www.ddig.info/sitemap”, True)
4. 注意清楚缓存和代码缩进,tinymce的空格问题真麻烦 已经解决,我换了最新版的Tinymce已经不存在这个问题。
这样基本就差不多了
以上实例只限Micolog程序。
我可不赞成这样pr作弊!
IE-Cookie跨域问题
七 6th
我需要通过网站的后台嵌入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就不必为跨域而烦恼了。
但是这样又为安全问题带来的隐患,使跨站攻击变的更加容易,虽然可以通过一些手段限制可以跨站的域,但是不是万不得已或者这个页面不会带来负面影响最好不要这样做。
博客换新主题
七 2nd
经过好几个小时的努力,我把WordPress主题 deniart 换成了Micolog下可以使用的主题
这是效果图

评论Ajax提交,不过Chrome下有问题,这个和xuming主题是一样的,有时间了再修正。
如果你也想修改主题的话,主题文件最好使用不带bom的utf8格式的,带bom的话页面有可能会变形。
喜欢的朋友可以发回复索要,我看到会尽快发邮件给你。
原始主题没有通过W3C验证,我修改了一下,现在可以通过W3C验证,如果你测试我的博客,会发现一条没有通过验证,那是因为Akon这篇文章里面使用了flash播放器,为了兼容ie,所出现了一条错误。
8月2日更新,主题做了些优化,现在提供下载
火狐3.5正式版发布
六 30th
盼望已久的FireFox3.5正式版终于出来了
RC版一直没用,等到正式版出来了几个小时才找到链接,⊙﹏⊙b汗

很是激动啊,添加了很多特性,界面也做了不少的调整
支持audio和vidio标签,可以直接播放ogg文件
使用了新的引擎 Gecko ,对css更多特性的支持等
貌似对css支持最好的是使用WebKit 引擎的Chrome和Safari
估计Firefox这方面还是赶不上Chrome和Safari的。
对3.0版本的插件大多不兼容
对于迅雷下载的兼容性,可以配合Firefox的FlashGot组件来实现迅雷下载。
自动更新了firebug新版本,旧的版本已经不兼容,界面上美化了很多。
更多的用了就知道了
中文版的下载地址:ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.5/win32/zh-CN//Firefox%20Setup%203.5.exe
英文版的:ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.5/win32/en-US/Firefox%20Setup%203.5.exe
我下的时候不用迅雷下不动,估计官方服务器压力太大了,用迅雷就可以分流了
ps:http://www.infoq.com/cn/news/2009/07/Firefox-3.5 这里的介绍更为详细