最新 | 最热门 | 最高评价

+0  Memcached二三事儿

Tag: Technical | Memcached
老王 发于 2012年12月30日 19:43 | 点击: 6981 | 展开摘要
Memcached绝对称得上是NoSQL老兵!可惜随着时间的推移,Redis等后起之秀羽翼渐丰,Memcached相比之下已呈颓势。那我们还用不用学习它?答案是肯定的!毕竟仍然有很多项目依赖着它,如果忽视它,一旦出了问题就只有干瞪眼的份儿了。

网络上关于Memcached的资料可以说是浩如烟海,其中不乏一些精彩之作,比如说由爱好者翻译的「Memcached全面剖析」系列文章,在中文社区广为流传,虽然已经是几年前的文章了,但是即便现在读起来,依然感觉收获良多,推荐大家多看几遍

查看全文: http://www.udpwork.com/item/8946.html

+0  PHP与Recursion

Tag: Technical | PHP | Recursion
老王 发于 2012年06月25日 18:13 | 点击: 5739 | 展开摘要
在程序设计中,递归(Recursion)是一个很常见的概念,合理使用递归,可以提升代码的可读性,但同时也可能会带来一些问题。

下面以阶乘(Factorial)为例来说明一下递归的用法,实现语言是PHP:

<?php

function factorial($n) {
if ($n == 0) {
return 1;
}

return factorial($n - 1) * $n;
}

var_dump(factorial(

查看全文: http://www.udpwork.com/item/7577.html

+0  跟我学Rsyslog

Tag: Technical | Rsyslog
老王 发于 2014年05月09日 11:34 | 点击: 5402 | 展开摘要
在数据为王的时代,日志管理是一个绕不开的话题,相应的开源软件有不少,比如热门的三件套:Logstash、ElasticSearch、Kibana,可惜我对这些高大上的东西往往心存敬畏,不敢轻易触碰,相比较而言,我更喜欢能够快速上手的东西。

对于日志管理,老版本的Linux缺省使用Syslog,其配置大致如下所示:

shell> cat /etc/syslog.conf

# Log all kernel messages to the console.
# Logg

查看全文: http://www.udpwork.com/item/12231.html

+0  基于PECL OAuth打造微博应用

Tag: Technical | OAuth | PHP
老王 发于 2011年01月16日 16:26 | 点击: 5205 | 展开摘要
最近,国内主要门户网站相继开放了微博平台,对开发者而言这无疑是个利好消息,不过在实际使用中却发现平台质量良莠不齐,有很多不完善的地方,就拿PHP版SDK来说吧,多半都是用TwitterOAuth改的,一旦多平台集成,很容易出现命名冲突之类的问题。

既然官方SDK不给力,那我们只能发扬自力更生的革命精神了!好消息是PHP本身已经有了一个标准的OAuth实现:PECL OAuth!下面以此为例来讲解一下如何实现微博应用:

说明:首先需要对OAuth概念有一定的了解,如不清楚可

查看全文: http://www.udpwork.com/item/4679.html

+0  记我配置Nginx代理的遭遇

Tag: Technical | Nginx
老王 发于 2014年05月27日 17:14 | 点击: 4123 | 展开摘要
我一直觉得自己的Nginx知识还算过得去,可是我错了,配置Nginx代理的遭遇让我苦不堪言,即便如此,我还是挣扎着记录一二,以便让后来者能够踩着我的足迹继续前进。

说起来非常简单:某项目的搜索功能升级了,需要把请求从旧的服务代理到新的服务上面去,其中有点儿不一样的地方是参数的传递形式发生的变化,例子如下:

旧:http://www.old.com/query/lamp

新:http://www.new.com/search?q=lamp

第一次尝试:

locatio

查看全文: http://www.udpwork.com/item/12552.html

+0  MVC演化史

Tag: Technical | MVC | MVP
老王 发于 2011年05月02日 21:49 | 点击: 3099 | 展开摘要
Martin Fowler在他所写的《企业应用架构模式》一书中感慨道:MVC已经成为我们最常误用的模式。人们之所以常常误用MVC,很大程度上是因为混淆了不同的MVC变体。

Classic MVC

大概上世纪七十年代,Xerox PARC的Trygve提出了MVC的概念,并应用在Smalltalk系统中,为了和其它类型的MVC加以区分,历史上习惯的称之为Classic MVC。

Model:封装领域数据及逻辑

View:查询领域数据并展现给用户

Conctroller

查看全文: http://www.udpwork.com/item/4969.html

+1  Nginx与Lua

Tag: Technical | Lua | Nginx
老王 发于 2012年08月31日 17:05 | 点击: 2872 | 展开摘要
火云邪神语录:天下武功,无坚不破,唯快不破!Nginx的看家本领就是速度,Lua的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。

最先将Nginx,Lua组合到一起的是OpenResty,它有一个ngx_lua模块,将Lua嵌入到了Nginx里面;随后Tengine也包含了ngx_lua模块。至于二者的区别:OpenResty是Nginx的Bundle;而Tengine则是Nginx的Fork。值得一提的是,OpenResty和Tengine均是国人自己创建的项

查看全文: http://www.udpwork.com/item/8037.html

+0  Nginx缓存解决方案:SRCache

Tag: Technical | Lua | Nginx
老王 发于 2014年06月20日 15:10 | 点击: 2675 | 展开摘要
前些天帮别人优化PHP程序,搞得灰头土脸,最后黔驴技穷开启了FastCGI Cache,算是勉强应付过去了吧。不过FastCGI Cache不支持分布式缓存,当服务器很多的时候,冗余的浪费将非常严重,此外还有数据一致性问题,所以它只是一个粗线条的解决方案。

对此类问题而言,SRCache是一个细粒度的解决方案。其工作原理大致如下:

SRCache工作原理

当问题比较简单的时候,通常SRCache和Memc模块一起搭配使用。网上能搜索到一些相关的例子,大家可以参考,这里就

查看全文: http://www.udpwork.com/item/12651.html

+0  Linux运维利器之ClusterShell

Tag: Technical | Linux
老王 发于 2011年11月12日 22:17 | 点击: 2554 | 展开摘要
如果你有若干台数据库服务器,突然你想知道它们当前的即时负载情况,你会怎么办?挨个登录上去uptime一下?感觉有点傻,写个shell?浪费时间,直接用ClusterShell吧!

ClusterShell的安装与配置

ClusterShell的安装很Easy,如果使用APT或YUM包管理方式的话,基本就是一条命令的事儿,我就不说了,这里说一下如何从源代码安装,需要在源代码目录执行如下命令:

shell> python setup.py install

为了使用的

查看全文: http://www.udpwork.com/item/6266.html

+1  实现一个简单的服务端推方案

Tag: Technical | Lua | Nginx
老王 发于 2012年09月28日 16:34 | 点击: 2358 | 展开摘要
客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling;如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling。

注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹。

先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示:

Polling

因为服务端不会主动告诉客户端它是否有新数据,所以Polling的实时性较差。虽然可以通过加快轮询频率的方式来

查看全文: http://www.udpwork.com/item/8177.html

+0  PHP操作MongoDB时的整数问题及对策

Tag: Technical | MongoDB | PHP
老王 发于 2011年03月13日 16:34 | 点击: 2250 | 展开摘要
本文所说的整数问题,其实并不是MongoDB的问题,而是PHP驱动的问题:MongoDB本身有两种整数类型,分别是:32位整数和64位整数,但旧版的PHP驱动不管操作系统是32位还是64位,把所有整数都当做32位整数处理,结果导致64位整数被截断。为了在尽可能保持兼容性的前提下解决这个问题,新版PHP驱动加入了mongo.native-long选项,以期在64位操作系统中把整数都当做64位来处理,有兴趣的可参考:64-bit integers in MongoDB。

那么P

查看全文: http://www.udpwork.com/item/4674.html

+0  完美实现GIF动画缩略图

Tag: Technical | GIF | ImageMagick | Imagick | PHP
老王 发于 2010年12月26日 14:35 | 点击: 2181 | 展开摘要
缩略图是个很常用的功能。它的实现并不复杂,但如果原图是GIF动画的话,问题就会变得繁琐一点,下面通过一个取自CS警匪游戏的GIF动画来说明问题:

GIF动画图片:old.gif

为了让问题更加清晰,我们先还原动画各帧:

选择一:用PHP中的Imagick模块:

<?php

$image = new Imagick('old.gif');

$i = 0;

foreach ($image as $frame) {
$frame->writeIma

查看全文: http://www.udpwork.com/item/4681.html
|<<<1234567>>>| 一共12页, 133条记录