Submitted by gouki on 2009, November 25, 11:21 AM
群内突然有人【桔子】提问:
然后自问自答,说这些是他同事写的:
PHP代码
-
- $str = '001020';
- echo strlen(str_replace((int)$str, '', $str));
-
-
- $text = '0001';
- $zero = strlen($text) - strlen(ltrim($text, '0'));
- return $zero;
然后说了他自己写的:
PHP代码
- $string = '000 012012';
- $string = str_replace(' ', '', $string);
- $length = strlen($string);
-
- $x = 0;
- for ($i = 0; $i < $length; $i++)
- {
- $currentStr = $string{$i};
- if ($currentStr != 0)
- {
- break;
- }
- $x++;
- }
- echo $x;
最后我也写了两个,一个正则,一个是利用现有函数:
PHP代码
- $str = '00 0 000100002000';
- preg_match( "/^0{0,}/", str_replace( " ", "", $str ), $out );
- echo( $out[0] );
-
- $str = '00 0 000100002000';
- $tt = str_word_count(str_replace( " ", "", $str ),1,'0');
- echo( $tt[0] );
之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?
哈哈完事。。。
PHP | 评论:4
| 阅读:18928
Submitted by gouki on 2009, November 24, 9:23 AM
thinksns在整合ucenter的时候难度并不大。主要有几个思路,不要错过就行了
1、不要想着把thinkphp框架整合进去,那样只会让你效率大低
2、合理应用thinksns提供的API,在API里面有取得当前登录用户的资料等信息,而且也有一个比较完整的数据库操作类【主要是不需要再调用config等配置了】
3、利用ucenter整合的时候,只能利用thinksns的一个cookie: remembor【开始为了这个我折腾了半天,我一直都打成remember。。。。汗一下先】(由于现在我是在一台机器上试,对于$_SERVER['USER_AGENT']是否一致还没有完全测试。。。)
4、整合的两个重要环节就是同步登录和退出。登录的时候要注意一下,两边的密码机制不一样,第一次同步资料的时候需要注意一下,否则一旦整合就不能使用原来的密码了。
5、同步登录的时候,如果需要强制注册,则必须要调用$api->user_add($data)这样的方法,具体的变量参数可以参考thinksns的lib中的indexAction.class.php ,顺便说一下,它的代码,注册中的隐私,其实没有插数据库。。。。骗子啊
6、起初的时候,我考虑需要读系统配置,就调用了$api->option_get()结果出错,由于ucenter api的出错是不显示的。调试了半天,才发现。原来是option_get()调用的get方法中,居然有一个ts_cache函数,而这个函数却是在api的范围之外,即它是属于thinksns的common方法中,在api中并没有被包含进来。。导致无法执行出错。
其他就没啥了。。至于feed同步啥的,则需要一点点的测试和更新,以同步到thinksns的feed库中。是个劳心劳力的过程。
PS:我会把本文同步到http://www.ucapi.com/wiki/上
Tags: thinksns, ucenter
PHP | 评论:1
| 阅读:23232
Submitted by gouki on 2009, November 20, 4:19 PM
套用网上流行的一句:哥聊的不是天,哥聊的是寂寞,我也要在这里说,我讨论的不是wordpress,我讨论的是sablog
其实很有意思啦,明明是wordpress的新闻发布,结果评论却是sablog的拥护者在与wordpress拥护者火拼。偶尔也插上一个bo-blog用户的感慨
当然,这几个程序我都用过,最早在bo-blog出mysql版前,我也用过文本版的,那时候的程序很简单,安全性和实用性也一般。现在当然不一样了。
SAblog嘛,我就不说了,你看我的博客建立有多久,sablog就用了有多久。除了改过一些模版,程序我就几乎没有动过(当然前段时间sablog评论被攻击的时候,还是改了一下程序),虽然程序简单,但也毕竟几乎2年没有出过啥大漏洞。挺不错了除了模版是类似 phpwind 我不习惯外,其他都好
wordpress嘛。大而全,普通人上手也能用,后台也可以自动安装插件等,确实不错,只是后台嘛,略慢一点。别说我没有发言权,我在现在的服务器上有正好有三个BLOG,大家可以尝试一下
1、sablog ,就是本勃客啦。。。
2、bo-blog,http://www.fotonomad.org
3、wordpress,http://g.52cd.net
以下内容来自cnbeta。。。
WordPress 2.8.6安全更新刚刚几天,今天,11月16日,WordPress官方发布了WordPress 2.9的第一个测试版本:WordPress 2.9 beta 1。
beta版本都不太稳定,不喜欢折腾的朋友可以暂时不用升级,等正式版出来了再说;喜欢折腾的朋友,可以试试Wopus下面几篇文章中提到的新功能,特别 是WordPress 2.9提供的数据库修复、优化功能。现在WordPress官方还为在后台提示更新(目前的提示更新版本依然是:WordPress 2.8.6),所以需要测试的朋友,可以在文章最底下下载WordPress 2.9 beta 1,解压,上传覆盖。
两个老生常谈的问题:升级前请备份数据库;测试请尽量用官方英文版,请不要使用中文版。
WordPress 2.9对空间欢迎的要求:
数据库版本: MySQL 4.1.2 or 更高 (老版本只需要 4.0),之前Wopus也有过一篇文章:WordPress 2.9对空间环境要求更高:
WordPress 2.9对空间环境要求:
- PHP 5
- MySQL 4.1.2 or greater
- The mod_rewrite Apache module
WordPress 2.9新增功能:(功能详解请查看原文)
WordPress 2.9功能:在线编辑图片
WordPress 2.9新功能:回收站
WordPress 2.9新功能:批量升级插件
WordPress 2.9新功能:修复、优化数据库
除了Wopus列出来的,还有很多功能,但基本上我们都体会不到,也就没有再一一列举。除此之外,WordPress 2.9对主题和插件的函数也有改动。详细请查看这里。
比较引人瞩目的是,WordPress官方目前提供了两种下载格式,一种是IIS的,也就是Win系统服务器。现在加上伪静态的模块,Win系统服务器也可以完美的支持WordPress了。
WordPress 2.9 beta 1下载:
官方下载:Linux服务器版本 | IIS版本
地址为:http://www.cnbeta.com/articles/97982.htm
Tags: wordpress, sablog, bo-blog
PHP | 评论:1
| 阅读:20309
Submitted by gouki on 2009, November 10, 11:39 AM
这个,又是老王的文章,队列,确实还是需要用到的。不过,我倒真没有想过用专业的队列消息数据库等来处理。我最初只是想把一些要队列的信息用SQLITE来处理,一边是往里推,一边是往外拉。拉一条删除一条。等到数据量太大的时候,就清除掉。
老王还是有介绍的,我在PHPRPC群里也听缘起缘灭和廖羽雷他们谈过专业的队列处理,但,我目前做的事情,还是用不了专业的队列处理,所以也就没有放在心上,不过,既然老王有介绍,也可以稍看看【原本我计划做个短信定时发送也就是准备用队列处理的,但最后没做,因为139邮箱里居然有类似功能,NND,抢我饭碗】
Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update 之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。在Web2.0的时代,高并发的情况越来越常见,从而使消息 队列有成为居家必备的趋势,相应的也涌现出了很多实现方案,像Twitter以前就使用RabbitMQ实现消息队列服务,现在又转而使用Kestrel来实现消息队列服务,此外还有很多其他的选择,比如说:ActiveMQ,ZeroMQ等。
上述消息队列的软件中,大多为了实现AMQP,STOMP,XMPP之类的协议,变得极其重量级,但在很多Web应用中的实际情况是:我们只是想找到一个缓解高并发请求的解决方案,不需要杂七杂八的功能,一个轻量级的消息队列实现方式才是我们真正需要的。
第一感觉是能不能使用memcached来 实现消息队列?稍加考虑后就会发现它不合适,因为memcached仅仅支持键值方式的操作,没有排序之类的功能,所以如果要用它来实现消息队列,则必须 自己通过某个键来保存数组形式的队列,不过这样的话,在操作队列的时候很容易丢失数据,比如说我们要添加一个消息,则需先取出现有队列,然后把消息保存到 队列尾部,最后保存队列,单纯使用memcached的话,由于我们无法保证整个过程的原子性,所以当处理若干个并发请求时,各个请求间可能会互相覆盖, 丢失数据就在所难免。另外,memcached只是内存键值缓存而已,一旦宕机,数据就消失了。
memcacheq的出现解决了上面的问题,它在memcached的基础上实现了消息队列,以php客户端为例:
消息从尾部入栈:memcache_set
消息从头部出栈:memcache_get
memcacheq依附于memcached之上,所以你可以通过现有的memcached工具来操作它,这无疑是它的一大优势,但它也有一个很大的缺点,那就是memcacheq本身的开发维护似乎并不活跃,如果遇到问题的话,你很可能需要自己动手解决。
目前看来,我更推荐下面这种解决方案,那就是redis,如果不了解,可以参考我以前的文章,表面上看,redis和memcached差不多,也是键值操作,但是redis本身实现了list,相关操作也可以保证是原子的,所以可以很自然的通过list来实现消息队列:
消息从尾部入栈:RPUSH
消息从头部出栈:LPOP
redis本身虽然是一个新项目,但很有朝气,开发维护也很活跃,如果你的下一个Web应用里需要使用轻量级的消息队列,不妨使用它。
此外,还有不少其他的选择可供尝试,比如说MySQL第三方的Q4M引擎,通过扩展SQL语法来操作消息队列,也是一个不错的选择。
套用网络流行语:那些重量级软件实现的不是你要的功能,而只是独在高处不胜寒的寂寞,所以不必迷恋其中,它们只是传说而已。
--EOF--
原文链接:http://hi.baidu.com/thinkinginlamp/blog/item/27a18202578f3d054bfb511f.html
PHP | 评论:0
| 阅读:23453
Submitted by gouki on 2009, November 9, 11:35 AM
在一些PHP的群内,很多人在提问前,都说,我刚学PHP,遇到一点问题,能不能帮我解决,然后刷刷刷的就是几屏代码。
在这种情况下,如果有人有精力有欲望回答他们的问题,估计才真的是奇怪。
网上流传的那篇:《提问的艺术》,估计很多人看过,但有多少人是这样提问的呢?至少我在遇到自己不会的情况下,先找手册,然后问google、百度,最后才问群里或者MSN中的高手们,即使这样,我也很把我遇到的问题和解决的方式说出来,这样,他们在回答的时候,也不会多次尝试。当然或许我一 说出来,他们就知道问题的解决方案了。但你不能保证每个人都是这样的高手吧?
以上都是废话。但还是有点参考价值。以下才是肉戏。
1、IBM的网站,http://www.ibm.com/developerworks
2、ZEND的网站:http://devzone.zend.com/,这里还有为新手写的文章 :http://devzone.zend.com/tag/PHP101
3、PHP官方网站,如果遇到点问题,发现代码好象没问题,但结果就是不正确,很去搜索一下buglist,或许就是你发现了这个BUG也有可能啊?
4、曾经的PHPE.net,没落的网站
5、喜悦村,也在逐步走向没落,大多数情况下,也是被这种无聊的提问而使得很多人不愿意回答问题吧?
6、phpchina。知名PHP网站,可惜吵架贴远多于知识贴
7、PHP100,在开发工具上提供了一些便 利,还有一些视频可以参考
8、本人的网站,哇哈哈哈。其实本人网站真的只属于一般,但我会努力转贴,当然也不是随便就乱转了。。。技术型的,一般总要看一遍再转的。
其实,你还可以搜索google reader之类的订阅网站,然后以某个关键字为搜索,并订阅这些内容,恐怕也可以让你达到一些效果,但订阅这个玩意,还是以少而精为主,否则,你还是没有精力去一篇篇看,走马观花的,反而会让你错过很多。
PHP | 评论:1
| 阅读:17542