使用消息队列的 10 个理由

过去几年中,我们一直在使用、构建和宣传消息队列,我们认为它们是很令人敬畏的,这也不是什么秘密。我们相信对任何架构或应用来说,消息队列都是一个至关重要的组件,下面是十个理由:

1. 解耦

在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

2. 冗余

有时在处理数据的时候处理过程会失败。除非数据被持久化,否则将永远丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在被许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理过程明确的指出该消息已经被处理完毕,确保你的数据被安全的保存直到你使用完毕。
继续阅读

如何识别高级的验证码

==Ph4nt0m Security Team==

Issue 0x02, Phile #0x09 of 0x0A

|=—————————————————————————=|
|=———————–=[ 如何识别高级的验证码 ]=————————=|
|=—————————————————————————=|
|=—————————————————————————=|
|=———————-=[ By moonblue333 ]=————————=|
|=——————-=[ <moonblue333_at_hotmail.com> ]=——————–=|
|=—————————————————————————=|

一、验证码的基本知识

1. 验证码的主要目的是强制人机交互来抵御机器自动化攻击的。

2. 大部分的验证码设计者并不得要领,不了解图像处理,机器视觉,模式识别,人工智能的基本概念。

3. 利用验证码,可以发财,当然要犯罪:比如招商银行密码只有6位,验证码形同虚设,计算机很快就能破解一个有钱的账户,很多帐户是可以网上交易的。

4. 也有设计的比较好的,比如Yahoo,Google,Microsoft等。而国内Tencent的中文验证码虽然难,但算不上好。

二、人工智能,模式识别,机器视觉,图像处理的基本知识

1)主要流程:

比如我们要从一副图片中,识别出验证码;比如我们要从一副图片中,检测并识别出一张人脸。 大概有哪些步骤呢?

1.图像采集:验证码呢,就直接通过HTTP抓HTML,然后分析出图片的url,然后下载保存就可以了。 如果是人脸检测识别,一般要通过视屏采集设备,采集回来,通过A/D转操作,存为数字图片或者视频频。

2.预处理:检测是正确的图像格式,转换到合适的格式,压缩,剪切出ROI,去除噪音,灰度化,转换色彩空间这些。

3.检测:车牌检测识别系统要先找到车牌的大概位置,人脸检测系统要找出图片中所有的人脸(包括疑似人脸);验证码识别呢,主要是找出文字所在的主要区域。

4.前处理:人脸检测和识别,会对人脸在识别前作一些校正,比如面内面外的旋转,扭曲等。我这里的验证码识别,“一般”要做文字的切割

5.训练:通过各种模式识别,机器学习算法,来挑选和训练合适数量的训练集。不是训练的样本越多越好。过学习,泛化能力差的问题可能在这里出现。这一步不是必须的,有些识别算法是不需要训练的。

6.识别:输入待识别的处理后的图片,转换成分类器需要的输入格式,然后通过输出的类和置信度,来判断大概可能是哪个字母。识别本质上就是分类。

2)关键概念:

图像处理:一般指针对数字图像的某种数学处理。比如投影,钝化,锐化,细化,边缘检测,二值化,压缩,各种数据变换等等。

1.二值化:一般图片都是彩色的,按照逼真程度,可能很多级别。为了降低计算复杂度,方便后续的处理,如果在不损失关键信息的情况下,能将图片处理成黑白两种颜色,那就最好不过了。

2.细化:找出图像的骨架,图像线条可能是很宽的,通过细化将宽度将为1,某些地方可能大于1。不同的细化算法,可能有不同的差异,比如是否更靠近线条中间,比如是否保持联通行等。

3.边缘检测:主要是理解边缘的概念。边缘实际上是图像中图像像素属性变化剧烈的地方。可能通过一个固定的门限值来判断,也可能是自适应的。门限可能是图像全局的,也可能是局部的。不能说那个就一定好,不过大部分时候,自适应的局部的门限可能要好点。被分析的,可能是颜色,也可能是灰度图像的灰度。

机器视觉:利用计算机来模式实现人的视觉。 比如物体检测,定位,识别。按照对图像理解的层次的差别,分高阶和低阶的理解。

模式识别:对事物或者现象的某种表示方式(数值,文字,我们这里主要想说的是数值),通过一些处理和分析,来描述,归类,理解,解释这些事物,现象及其某种抽象。

人工智能:这种概念比较宽,上面这些都属于人工智能这个大的方向。简单点不要过分学院派的理解就是,把人类的很“智能”的东西给模拟出来协助生物的人来处理问题,特别是在计算机里面。

继续阅读

把域名的DNS服务指向了dnspod

最近不知道不是因为国内网络原因,好多朋友反映进不到我godaddy解释的域名

但自己还是正常访问,可以是因为自己的电脑的DNS服务指向了 8.8.8.8 才可以解释。

受不了这样的情况,不禁觉得生于此地感到很杯具,网络被管这个鸟样了。

我真想问候那些人的全家。

于是,决定把域名服务指向dnspod, 这样的问题就解决了。

哎~~~~~~~~~~~~~~
继续阅读

我在Facebook工作的十大经验分享

本文作者曾在Facebook从事4年多的开发工作,这一段宝贵的工作经历汇聚成为10条人生箴言,希望每一位开发者阅读本文后,都能够从中获益。

1.坚持你的远景,但要对细节灵活

作为一个领导者,你需要依赖你自己的远景(至少在你负责的业务领域内)而那些和你一起或为你工作的人将依赖你的远见。什么是远景?就是对最终状态的一种描述。是你需要你的团队着陆的地方。是生效之后的新生活。它是北极星,和方向。这里有一个例子,当我启动支付风险团队的时候,我们只有规则引擎。规则是人写的。一条规则只是一个拥有非常有限变量的简单逻辑,例如“如果注册日期少于30天并且支出大于100美元并且是首次支付并且用户来自印度尼西亚,则拒绝交易”

人类难以有效的处理10个以上的变量。我们需要更加的可测量化。我们想要使很多机器比人更擅长的事情自动化。从而我们树立了一个远景,将我们主要的规则置换为机器学习模型。这一远景驱使我们增加了一位机器学习领域的博士和另一位在加入facebook以前有类似实操经验的工程师。赌注巨大,但是未来需要这个。

但你需要对细节灵活,因为条条大路通罗马。你需要给你的团队以足够的余地空间(wiggle
room),只要你的团队是朝着正确的方向以合适的速度前进。另一个故事:一度我对决策树的兴趣比回归要大。但是实验算法的工程师告诉我在选择算法的时候他们只有可以忽略的区别。我可以坚持己见(这确实是当时我真实的想法)但我信任他并让他放手去选合适的算法。同设计者合作的过程中也有趣事发生,他们对于字体,颜色,行距及其他都有着吹毛求疵的偏好。我通常让他们由着性子只要对最终结果有益就行。我们想要选择正确的战场开战,这样的战场必须关乎全局,而不是纠缠于局部战斗。

2.只和最好的人合作

牛人只想和牛人一起工作。他们聚在一起就更牛逼。一流的人通常无法容忍二流货色。什么决定了“最好的人”?我的理解是那些能够快速尽其所知,学其所不能,从而完成事情并远超期望。他们的本能是超越期望,甚至他们自己的期望。对他们来说,足够好本身从来都不够好。
只拥有最好的人在团队中有很多好处。

继续阅读

扎克伯格信件:Facebook拥有五大核心价值观

北京时间2月2日消息,据国外媒体报道,Facebook于当地时间周三向美国证券交易委员会提交上市申请文件,正式启动IPO(首次公开招股),最多融资50亿美元。

Facebook联合创始人兼CEO马克·扎克伯格(Mark Zuckerberg)也同时发布了一封信,详细阐述了Facebook的社交使命,以及Facebook所形成的独特的管理风格。

以下为扎克伯格的信件全文:

Facebook当初并不是作为一家公司来创立,而是为了实现一个社交使命:令全世界更加开放,保持连接。
我们认为,每个投身于Facebook的人都理解这项使命对我们意味着什么、我们如何决策、为何要这么做,这很重要。我会尽量在这封信里描绘我们的方式。

在Facebook,我们被那些变革了人们如何传播和消费信息的技术所鼓舞。我们经常谈论一些发明,例如印刷媒体与电视使沟通更加有效,这些发明完全转变了社会的很多重要方面,它们给予更多的发言权,鼓励进步。它们改变了社会的组织,使我们更加密切地联系在一起。

今天,我们的社会已经到达另一个颠覆点。我们生活的这个时代,世界大多数人可以连接互联网或使用手机,这是必要的工具,可以用来与任何人分享他们所想、所感和所做。Facebook鼓励创造这种服务,使人们可以与他人分享,并帮助他们再次变革我们的很多核心体制和产业。

现在有极大的需求和绝好的机遇使世界上所有人保持连接,为所有人提供发言权,帮助他们在未来改变社会。我们面临着史无前例的必备技术和基础架构,我们坚信这将是我们需要解决的最重要问题。
我们希望加强人们之间的相互联系。
继续阅读

同是80后程序员 为什么差距却如此大

1. Jake Mintz(28岁)、David Lieb(30岁)

当他们还在就读芝加哥大学时,David Lieb提出一个想法:要是两支手机触碰一下,就可以交换信息该有多好,因此发展出Bump App,现在已经有3,200万次下载量。获得Andreessen Horowitz、红杉资本、Y Combinator和多位天使投资人的2000万美元资金。

同是80后 为什么程序员之间的差距那么大呢?

2. Alex Rampell(29岁)

2006年创办TrialPay,「你买东西我出钱」的概念,该公司从中赚取佣金,现在有120名员工,今年收入将超过5000万美元。获得Battery Ventures、Index Ventures和其他投资者的3000万美元资金。

同是80后 为什么程序员之间的差距那么大呢?

3. Adam D’Angelo(26岁)、Charlie Cheever(29岁)

他们曾在Facebook当同事,Adam D’Angelo是Facebook的CTO,Charlie Cheever则是负责Facebook Connect服务,他们携手在2009年创办问答网站Quora。从Benchmark Capital获得资金,不过并未公开金额。

同是80后 为什么程序员之间的差距那么大呢?

继续阅读

不错的JS日期控件(My97 DatePicker)

官方推荐优点如下:
==============
更人性化,更全面的功能
==============
强大的日期范围限制功能
==============
自定义事件和丰富的API库
==============
多语言支持和自定义皮肤支持
==============
跨无限级框架显示和自动选择显示位置

官方demo和文档
http://www.my97.net/dp/demo/index.htm

继续阅读