最新 | 最热门 | 最高评价

+0  MVC演化史

Tag: Technical | MVC | MVP
老王 发于 2011年05月02日 21:49 | 点击: 3423 | 展开摘要
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

+0  神奇的Fastcgi_Finish_Request

Tag: Technical | Performance | PHP
老王 发于 2011年04月12日 22:14 | 点击: 1874 | 展开摘要
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。

听起来可能有些茫然,我们通过几个例子来说明一下:

<?php

echo '例子:';

fastcgi_finish_request();

echo 'To be, or not to be, that is the question.';

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

+0  下一站:HandlerSocket!

Tag: Technical | HandlerSocket | MySQL
老王 发于 2011年04月10日 20:48 | 点击: 1716 | 展开摘要
目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源:

Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成数据不一致。这在强调即时性的Web2.0时代,不可取。

Memcache崩溃后的雪崩效应:作为缓存的Memcache一旦崩溃,MySQL很可能在短时间内承受高负载而宕机。据说前段时间新浪微博就遭遇了

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

+0  MySQL复制的概述、安装、故障、技巧、工具

Tag: Technical | MySQL | Replication
老王 发于 2011年04月05日 10:26 | 点击: 1794 | 展开摘要
同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!

概述

首先主服务器把数据变化记录到主日志,然后从服务器通过I/O线程读取主服务器上的主日志,并且把它写入到从服务器的中继日志中,接着SQL线程读取中继日志,并且在从服务器上重放,从而实现MySQL复制。具体如下图所示:

MySQL复制

整个过程反映到从服务器上,对应三套日志信息,可在从服务器上用如下命令查看:

mysql> SHOW SLAVE STATUS;

&nb

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

+0  说说Shell在代码重构中的应用

Tag: Technical | AWK | Grep | Linux | Sed | Shell
老王 发于 2011年03月18日 18:09 | 点击: 1519 | 展开摘要
代码重构(Code refactoring)有时是很枯燥的,字符串替换之类的操作不仅乏味,而且还容易出错,好在有一些工具可用,以PHP为例,如:Rephactor,Scisr等等,不过现成的工具往往意味着不够灵活,所以今天我要说说Shell在代码重构中的应用。

先来个简单的,假设我们要把PHP文件中的foo_bar全都替换成fooBar,那么可以如下:

方法一,使用Sed:

shell> find /path -name "*.php" -print0 | xar

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

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

Tag: Technical | MongoDB | PHP
老王 发于 2011年03月13日 16:34 | 点击: 2356 | 展开摘要
本文所说的整数问题,其实并不是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  使用Imagick实现图像直方图

Tag: Technical | Imagick | PHP
老王 发于 2011年03月05日 16:38 | 点击: 1491 | 展开摘要
玩过单反相机的人应该都知道图像直方图(Image Histogram),简单点说,它通过计算每个色阶在总像素中所占的比例来反映图像的曝光情况。我并不打算详细解释专业名词,有兴趣的读者可以查阅文章结尾处的参考链接,那里有通俗易懂的解释:

我们先找一个例子图像(用Canon 550D拍的):

例子图片:butterfly.jpg

下面看看如何使用Imagick实现图像直方图:

<?php

$file = 'butterfly.jpg';

$size = arra

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

+0  Javascript中的函数声明和函数表达式

Tag: Technical | Javascript
老王 发于 2011年03月02日 12:45 | 点击: 1220 | 展开摘要
Javascript有很多有趣的用法,在Google Code Search里能找到不少,举一个例子:

<script>
~function() {
alert("hello, world.");
}();
</script>

试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符『~』乍一看让人摸不到头脑,如果去掉它再运行则会报错:Synta

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

+0  在MongoDB中模拟Auto Increment

Tag: Technical | MongoDB | PHP
老王 发于 2011年02月09日 16:33 | 点击: 1556 | 展开摘要
MySQL用户多半都有Auto Increment情结,不过MongoDB缺省并没有实现,所以需要模拟一下,编程语言以PHP为例,代码大致如下所示:

<?php

function generate_auto_increment_id($namespace, array $option = array())
{
$option += array(
'init' => 1,
'step' => 1,
);

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

+0  PHP数组交集的优化

Tag: Technical | PHP
老王 发于 2011年01月30日 17:52 | 点击: 1521 | 展开摘要
假设我们正在运营一个手机相关的网站,用户可以通过指定若干参数(如操作系统,屏幕分辨率,摄像头像素等等)来筛选自己想要的手机。不过由于手机的参数多,且不同的手机其参数差异大,所以参数表结构通常是纵表(一个参数是一行),而不是横表(一个参数是一列),此时使用若干参数来取结果,通常就是把每个单独参数来取结果,再一起取交集。

假定每个参数会包含一千个左右的产品ID(int),以此为前提来模拟生成一些数据:

<?php

$rand = function() {
$r

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

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

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

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

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

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

+0  浅谈Heatmap

Tag: Technical | AWK | Heatmap | Imagick | Javascript | PHP | Shell
老王 发于 2011年01月04日 14:51 | 点击: 1776 | 展开摘要
在自然界之中,蛇的眼睛有夜视功能,即便是茫茫黑夜,它也能轻而易举的找到猎物,这是因为任何物体都会辐射热红外,且辐射的高低和温度成正比,由于生命体的体温会明显高于周围环境的温度,所以在蛇眼面前便无处遁形。热红外成像被广泛应用于军事领域,比如士兵带上能识别热红外的眼镜后,就能轻而易举的发现藏匿的敌人,如下图所示:

热红外成像

唠叨了半天,听上去似乎有点跑题了,其实不然,对互联网从业者而言,同样需要有火眼金睛,以便识别网友的喜好,此时的衡量标准是点击,点击越多则表示越喜欢,此技

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