IT技术博客大学习 共学习 共进步

技术文章

精选技术长文、实践记录与系统化阅读

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT 奋斗/ 2012-06-19 23:51:28 / 累计浏览 1,967

说说我理解的职业开发人员

应人民邮电出版社图灵公司的邀请,我有幸参与了Bob大叔所著Clean Coder的翻译。 与前作Clean Code不同,这本书着重讲述的是开发人员的“职业素养”,也即职业开发人员应当如何做事。在阅读中,我时常会忍俊不禁,也会拍案叫绝,感叹Bob大叔把深刻的道理讲得这样通透。我虽然没有Bob大叔那样好的文笔,不过对“开发人员的职业素养”这个话题,仍然有很多话想说,索性分几个方面写下来。 学习 开发人员在工作之前,一般都已经经过大学阶段的专业学习。众所周知,大学的很多课程已经相当落后,教材也非常保守,所以我见过的好开发人员,不少都是自学成才。但是,这些问题并不能否认通过专业课程学习知识的意义,职业开发人员理解的“学习”,应当明确地区分知识、课程、教材:知识是重要的、稳定的,课程和教材是不那么重要的、变化的。

IT 互联网/ 2012-06-19 23:50:49 / 累计浏览 3,392

韩国实名制的破产

大部分人在网上如果被人恶言相向,可能都会这样的念头:这家伙究竟是谁?大部分人在看着例如BBS里的污言秽语时,可能都会这样想:如果这些人是实名的,大概就不会那么放肆了吧?实名制的起源,基本上就在这两个想法中产生。 韩国是一个互联网渗透率高达7成以上的国家,可见它的网络社会之发达。它也是全球第一个推行实名制且推行的最彻底的国家。早在02年,它的15个政府部门就开始实施实名制,到了05年的狗屎女事件(一女子由于未清理宠物狗在地铁里的排泄物而遭网民人肉与攻击,导致此女患精神疾病),实名制推向民间开始进入立法阶段。07年,信息通信部正式出台与网络实名制有关的法案。而韩国人气女星崔真实自杀,更是使得此项法案的支持率大升。从时间顺序上,我们可以看到,网络实名制并不是仓促之间拍拍脑袋的想法。必须承认的是,韩国政府也是小心翼翼的:从02年的政府先行,一直到07年才开始立法。

IT 系统架构/ 2012-06-19 23:50:03 / 累计浏览 9,678

Instagram的技术架构

Instagram 被 Facebook 以10亿美金收购。团队规模:13 人。而在被Facebook收购前的一个月,整个团队才7名员工。 2010年: 2位工程师 2011年: 3 位工程师 2012年: 5 位工程师 制胜法宝: 广泛的单元测试和功能测试 坚持DRY(Don’t Repeat Yourself)原则 使用通知/信号机制实现解耦 我们大部分工作使用Python来完成,只有逼不得已的时候,才会用C 频繁的代码复查,尽量保持“智慧共享”。(frequent code reviews, pull requests to keep things in the ‘shared brain’) 广泛的系统监控 Instagram的两个创始人 Mike Kriegerr:之前是一个颇为低调的工程师和用户体验设计师,他在一家名叫Meebo的创业公司工作了1年半。

IT 信息和交互/ 2012-06-19 23:47:44 / 累计浏览 2,851

信息可视化研究范畴及案例

  最近在研究“信息可视化”,因此首先需要定义研究范畴。   信息可视化的定义之前有同事研究过,本文只简单摘录wiki的定义:   信息可视化(英文:Information visualization)是一个跨学科领域,旨在研究大规模非数值型信息资源的视觉呈现,如软件系统之中众多的文件或者一行行的程序代码,以及利用图形图像方面的技术与方法,帮助人们理解和分析数据。与科学可视化相比,信息可视化则侧重于抽象数据集,如非结构化文本或者高维空间当中的点(这些点并不具有固有的二维或三维几何结构)。        特别区别一下“信息可视化”和“科学可视化”概念。在一些书籍中,这两类可视化设计都是未经过区分的。   

IT 系统运维/ 2012-06-19 23:47:09 / 累计浏览 3,968

锁是怎么实现的?

这是一个同事问我的问题。我并非专家,只是有基本的原理理解。首先排除上层的各种花里胡哨的锁的机制,基本的锁应该有如下的几种实现方式。 1.OS提供的内核对象方式提供的异步锁实现这种方式下,锁的实现是内核对象,对外提供API,之所以说是异步是因为试图加锁的进程如果无法获取这个锁,内核的操作方式是将进程加入这个锁的等待队列之中。当该锁被释放之后,OS对于等待队列中的进程进行唤醒。 2.对于单CPU的IntMask方式的同步的锁实现之所以说是同步是因为这种方式关中断,停止CPU的任务调度,这样我们可以保证互斥操作。 3.对于多CPU的处理器,多个CPU之间的Spin Lock 每个CPU只能关自己的中断,因此这个时候关中断无法保证全局互斥,需要找到一个全局的统一互斥点。我们依赖的是总线,各个CPU通过锁总线来进行竞争(据说Intel多核CPU提供了避免锁总线的机器指令)。

IT 系统架构/ 2012-06-17 17:58:24 / 累计浏览 4,410

HTTP Server开发相关学习资料整理推介

本文整理了我在学习过程中接触到的一些与HTTP Server有关的资料、文章及书籍,在这里分享给大家,希望对大家有所帮助。 RFC及标准性文档 RFC2616 – Hypertext Transfer Protocol — HTTP/1.1 HTTP协议标准文档,所有从事HTTP相关开发的人员必备参考资料,建议仔细研读。 RFC793 – TRANSMISSION CONTROL PROTOCOL TCP协议标准文档。 The WWW Common Gateway Interface Version 1.1 CGI1.1协议标准文档,描述了Web Server与CGI Application通过CGI协议进行交互的所有细节。

IT PHP/ 2012-06-17 17:58:00 / 累计浏览 6,553

PHP Extension开发基础

这篇文章主要用示例方法介绍PHP Extension的开发基础。在PHP的使用中,也许是因为需要支持新的组件(如新的数据库),又或是业务需要或性能需要,几乎都会遇到需要开发PHP扩展的地方。后续如果有机会,我会写文章介绍一些关于扩展开发较为深入的东西,如扩展模块生命周期、INI使用以及编写面向对象的扩展模块等等。

IT PHP/ 2012-06-17 17:57:04 / 累计浏览 6,095

如何使用PHP编写daemon process

今天下午在segmentfault.com看到一个提问,提问标题是“PHP怎么做服务化”,其中问道php是不是只能以web方式调用。其实很多人对PHP的使用场景都有误解,认为php只能用于编写web脚本,实际上,从PHP4开始,php的使用场景早已不限于处理web请求。 从php的架构体系来说,php分为三个层次:sapi、php core和zend engine。php core本身和web没有任何耦合,php通过sapi与其它应用程序通信,例如mod_php就是为apache编写的sapi实现,同样,fpm是一个基于fastcgi协议的sapi实现,这些sapi都是与web server配合用于处理web请求的。但是也有许多sapi与web无关,例如cli sapi可以使得在命令行环境下直接执行php,embed sapi可以将php嵌入其它语言(如Lua)那样。

IT 系统架构/ 2012-06-17 17:56:45 / 累计浏览 3,042

使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制

为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcache是使用非常广泛的一个分布式缓存系统。众所周知,LAMP是非常经典的Web架构方式,但是随着Nginx的成熟,越来越多的系统开始转型为LNMP(Linux+Nginx+MySQL+PHP with fpm),这是因为Nginx采用基于事件机制的I/O多路复用思想设计,在高并发情况下其性能远远优于默认采用prefork模式的Apache,另外,相对于Apache,Nginx更轻量,同时拥有大量优秀的扩展模块,使得在Nginx上可以实现一些美妙的功能。

IT PHP/ 2012-06-17 17:56:11 / 累计浏览 5,268

深入研究PHP及Zend Engine的线程安全模型

在阅读PHP源码和学习PHP扩展开发的过程中,我接触到大量含有“TSRM”字眼的宏。通过查阅资料,知道这些宏与Zend的线程安全机制有关,而绝大多数资料中都建议按照既定规则使用这些宏就可以,而没有说明这些宏的具体作用。不知道怎么回事总是令人不舒服的,因此我通过阅读源码和查阅有限的资料简要了解一下相关机制,本文是我对研究内容的总结。 本文首先解释了线程安全的概念及PHP中线程安全的背景,然后详细研究了PHP的线程安全机制ZTS(Zend Thread Safety)及具体的实现TSRM,研究内容包括相关数据结构、实现细节及运行机制,最后研究了Zend对于单线程和多线程环境的选择性编译问题。 线程安全 线程安全问题,一言以蔽之就是多线程环境下如何安全存取公共资源。我们知道,每个线程只拥有一个私有栈,共享所属进程的堆。

IT JavaScript/ 2012-06-17 17:54:54 / 累计浏览 3,990

高性能JavaScript模板引擎原理解析

  随着 web 发展,前端应用变得越来越复杂,基于后端的 javascript(Node.js) 也开始崭露头角,此时 javascript 被寄予了更大的期望,与此同时 javascript MVC 思想也开始流行起来。javascript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注,近一年来在开源社区中更是百花齐放,在 Twitter、淘宝网、新浪浪微博、腾讯QQ空间、腾讯微博等大型网站中均能看到它们的身影。 本文将用最简单的示例代码描述现有的 javascript 模板引擎的原理,包括新一代 javascript 模板引擎 artTemplate 的特性实现原理,欢迎共同探讨。

IT 设计思想/ 2012-06-17 17:53:16 / 累计浏览 2,367

产品经理的杂念

洗澡时想起一个听来的段子。本世纪初,某大城市某日报因为某个原因,卖房地产广告从不给回扣。一开始生意很不好做,但随着这事儿名声在外……奇迹发生了。当地所有房地产公司打广告都会算它一份,市场总监藉此向老板自证清白:“我们不拿回扣,这么刚直不阿的报纸我们也会投的”。中午和老友吃饭,听到一个段子。业内某大公司内部奉行扁平化管理,头衔也相当扁平。PM给别人递名片,一旦听到对方小声嘀咕“产品经理……”立刻会补充一句,相当于产品总监,产品总监。有的还额外加一句,有可能很快升VP,升VP。老友评价说,有些人是先有创业冲动,再去找一个“有搞头”的细分领域。另一些人则是先有一个实际的产品需求(愿景),为了实现它而选择创业。二者未必有高下之分,不过在国内,前者的数量远远大于后者。

IT 系统运维/ 2012-06-17 17:50:00 / 累计浏览 3,132

关于PHP加速器APC的使用

PHP加速器APC除了缓存字节码,还有一个很重要的应用就是 apc_store, 通常会将配置信息使用apc 缓存起来,更多时候是我们发现配置信息的数组太大了,才考虑将整个数组使用apc缓存起来。下面我们明确一点基本的知识: apc缓存PHP的数组是序列化之后存储的,下面我们做一个测试.......

IT MySQL/ 2012-06-17 17:47:14 / 累计浏览 1,864

数据库数字参考表的妙用

今天的主角就是数字参考表,什么是数字参考表?一个表中,存放了从1开始连续到很大值的数字的表,我们称为数字参考表。

IT 系统架构/ 2012-06-17 17:46:44 / 累计浏览 11,972

知乎技术方案初探

知乎的整个网站架构图如下: 知乎是国内很少的使用Python开发的一个网站,也很多值得我们学习的地方,从知乎让我们也可以了解到一些新的WEB技术。 一、Python框架 知乎目前使用的是Tornado 框架。Tornado 全称Tornado Web Server,是一个用Python 语言写成的Web 服务器兼Web 应用框架,由 FriendFeed 公司在自己的网站FriendFeed 中使用,被facebook 收购以后框架以开源软件形式开放给大众。 参考链接:http://zh.wikipedia.org/wiki/Tornado 学习文档:http://www.tornadoweb.cn/documentation 二、数据库 目前知乎采用的是MySQL作为主要的存储,使用SqlAlchemy 为ORM进行数据库的建模或者映射。

IT 设计思想/ 2012-06-14 14:02:50 / 累计浏览 2,291

网盘背后的数据消费需求

网盘的需求背后是对数据的需求。网盘的产品形态对用户并不重要,这类产品之所以存在,大部分原因是因为操作系统之前没有面向多设备和云端设计。随着时间的推移,网盘这个行业会慢慢走向基础层,最后还原成云存储API(比如iCloud)。而Dropbox正是看到这点,将自己嵌入到了系统中去。这造就了Dropbox的成功,但也注定了Dropbox的结局(如果不调整的话)。

IT 互联网/ 2012-06-14 14:01:39 / 累计浏览 7,651

腾讯抄你肿么办

我还在网易的时候,Boss也问我,腾讯抄你怎么办?此时屡屡有一股邪火在胸口燃烧着,想大吼一声:腾讯抄我怎么办?老子跳槽去腾讯!最后我还是选择了创业。我在网易5年,一直带业务部门,从内容总监转职产品总监,算得上资深中层吧。网易做产品的环境,放在业内大约是中等偏上,它的好处别家未必有,弊端则是寰球同此凉热。年初跟VC谈天使融资的时候,对方大统领换了一个问法:如果网易抄你怎么办?我很吃惊地回答,如果留在网易就能把这个项目做出来,我还创什么业?难道你以为我创业是为了发财、专权,或者给自己戴上SB风格的CEO头衔?那么大公司到底是真老虎还是纸老虎喃?我得从大公司业务运作的常识说起。

IT 算法/ 2012-06-14 13:59:03 / 累计浏览 1,445

浅析点对点(End-to-End)的场景文字识别

随着智能手机的广泛普及和移动互联网的迅速发展,通过手机等移动终端的摄像头获取、检索和分享资讯已经逐步成为一种生活方式。基于摄像头的(Camera-based)的应用更加强调对拍摄场景的理解。通常,在文字和其他物体并存的场景,用户往往首先更关注场景中的文字信息,因而如何能够正确识别场景中的文字,对用户拍摄意图会有更深入的理解。一般意义上,基于图像的文字识别包括基于扫描文字的光学字符识别(Optical Character Recognition, OCR) 和广泛用于网站注册验证的CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试)。