最新 | 最热门 | 最高评价

+0  下一站:HandlerSocket!

Tag: Technical | HandlerSocket | MySQL
老王 发于 2011年04月10日 20:48 | 点击: 1695 | 展开摘要
目前使用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 | 点击: 1775 | 展开摘要
同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 | 点击: 1507 | 展开摘要
代码重构(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 | 点击: 2333 | 展开摘要
本文所说的整数问题,其实并不是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 | 点击: 1477 | 展开摘要
玩过单反相机的人应该都知道图像直方图(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 | 点击: 1207 | 展开摘要
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 | 点击: 1541 | 展开摘要
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 | 点击: 1508 | 展开摘要
假设我们正在运营一个手机相关的网站,用户可以通过指定若干参数(如操作系统,屏幕分辨率,摄像头像素等等)来筛选自己想要的手机。不过由于手机的参数多,且不同的手机其参数差异大,所以参数表结构通常是纵表(一个参数是一行),而不是横表(一个参数是一列),此时使用若干参数来取结果,通常就是把每个单独参数来取结果,再一起取交集。

假定每个参数会包含一千个左右的产品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 | 点击: 5285 | 展开摘要
最近,国内主要门户网站相继开放了微博平台,对开发者而言这无疑是个利好消息,不过在实际使用中却发现平台质量良莠不齐,有很多不完善的地方,就拿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 | 点击: 1757 | 展开摘要
在自然界之中,蛇的眼睛有夜视功能,即便是茫茫黑夜,它也能轻而易举的找到猎物,这是因为任何物体都会辐射热红外,且辐射的高低和温度成正比,由于生命体的体温会明显高于周围环境的温度,所以在蛇眼面前便无处遁形。热红外成像被广泛应用于军事领域,比如士兵带上能识别热红外的眼镜后,就能轻而易举的发现藏匿的敌人,如下图所示:

热红外成像

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

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

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

Tag: Technical | GIF | ImageMagick | Imagick | PHP
老王 发于 2010年12月26日 14:35 | 点击: 2256 | 展开摘要
缩略图是个很常用的功能。它的实现并不复杂,但如果原图是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

+0  Umask补习班

Tag: Technical | Linux | Shell
老王 发于 2010年12月11日 16:13 | 点击: 1319 | 展开摘要
说起来umask是个很常见的命令,用在创建文件或目录时设置权限掩码,通常是0022:

shell> umask
0022

注:0022等价于022,0022中第一个0用于sticky-bit,本文不做讨论,有兴趣的请自查。

为了稍后演示的方便性,先在Windows上用7-zip创建两个文件:

foo.zip(包括:目录foo_dir,文件foo_file)

bar.tar(包括:目录bar_dir,文件bar_file)

当然,你可以不用Windows,我之

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