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

技术文章

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

技术文章精选

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

最新文章

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

IT JavaScript/ 2012-10-14 22:19:09 / 累计浏览 3,755

构建前端 DSL

目前在传统的软件开发领域 DSL 已经比较普遍, 特别是 Martin Fowler 的突出贡献。 而在前端领域尚较少涉及,而如果在前端开发中合理使用 DSL 同样也可以有效得减少代码数量,提高可读性,常见的一个应用场景即前端模板的构建。 本质上说模板也是一个微型语言,因此可以从DSL的角度着手,使用工具快速构建一个适合于特定前端框架的模板引擎。 本文将以 KISSY XTemplate 为例介绍如何构建前端的 DSL。

IT 算法/ 2012-10-14 22:17:41 / 累计浏览 2,383

用词典查找代替VLOOKUP

用 Python 的着眼点主要是 VLOOKUP 公式太慢了,所以关键是要找到一种更高效的算法或数据结构定位数据。VLOOKUP 要求对列进行排序,内部应该是对列内数据进行二分查找,算法上不好再优化了,那就只好更换一种数据结构。搜索了一下,VBA 提供了 Scripting.Dictionary 这一词典结构,而且有文章说内部是哈希表实现,那就正是我要的东西了。

IT 奋斗/ 2012-10-14 22:14:11 / 累计浏览 3,771

能力的向下兼容

设计专业的学生都知道这样一句话:建筑设计师可以做工业和平面设计,工业设计师可以做平面设计,但是反之不成立。究其原因,建筑的课程体系更为成熟,而平面设计师的三维思考能力较差。无意贬低,但是可以看出,具备更强能力的人可以做更多的事情。 回想起自己09年学习移动端交互设计时,无人指点,资料寥寥无几,只找到一本书《移动设备交互设计》有相关设计,怎么办呢?凭着直觉,如何没有相关理论,干脆自己探索吧,或许我可以把网页的交互的理论引用到移动端。于是工作的第一年,翻阅了所有能找到的网页设计书籍和UCDchina等网站的博文,之后开始把一些成熟的方法用到移动应用设计。 这对个人交互思维的形成有非常大的帮助,相比较而言,网页设计的理论方法更为成熟,知识和能力是可以触类旁通的。

IT 其他/ 2012-10-14 22:13:39 / 累计浏览 4,167

百度站内应用开发体验及demo代码

笔者在腾讯主要负责开放平台openapi的工作,由于工作关系,这几天遍历了 百度、人人、新浪、淘宝 4个平台,研究了一下他们对于站内应用、网站登录、移动应用的整合方式,并开发了一个百度站内应用的demo。

IT 互联网/ 2012-10-14 22:07:41 / 累计浏览 1,767

微博强媒体与生态平衡

大约从2011年中开始,差不多每个月,我都会听到有人说“新浪微博不行了”。何出此言呢?他们说,我关注的人的活跃度明显下降了,信息流的速度和质量都滑坡了,难道还不是“新浪微博不行了”的铁证么?有趣的是,这个观点几乎每个月都能听到,唱衰声持续了一年多。按此来说,新浪微博简直就快要跌落到谷底了,只是百足之虫死而不僵。来来来,说说我的看法。如果是一个有着内容创造力的人,刚遇到微博这般强互动的媒体,往往会兴奋起来。兴奋过后又会进入三种反弹状态:1、兴奋度下降,活跃度降低2、干货入不敷出,只好灌水刷存在感或活跃度降低3、发现微博上是非真多,一气退出或活跃度降低接下来,一部分人进入高潮消退后的稳定期,另一部分则渐渐淡出。在我的身边,达到平衡状态的人比淡出的更多得多,但这不是关键,关键是随着朋友圈、名人、有趣的人、段子与鸡汤号不断地加入关注列表,便能够保持信息流的活力。

IT Apache/ 2012-10-14 22:06:44 / 累计浏览 6,670

近期Imgsrc一处内存泄露问题的查找和解决

简要说明一下,imgsrc上部署的是apache模块,cdn通过其来访问tfs,并且做一些图像处理工作。有内存泄露是在线上发现的,内存不停的在涨。要找到问题所在,首先需要能够在线下重现,知道在什么情况下会泄露。线上系统当然不可能用valgrind来跑啦,还好我们有tcpcopy(赞一下网易的 @wangbin579 同学,真是个好东西),我们可以将线上流量镜像到跑着valgrind的机器上来,从而重现问题。跑了一晚上之后问题重现了,这时候需要做的是找到具体能触发问题的http请求。在访问日志和错误日志的帮助下,可以重放这些请求,这样就可以随时重现。一个晚上的访问日志有80多万条之多,我注意到其中有43条是在做图像处理时失败的。这些请求的原图往往都是一些不合法的或已损坏的图。先从这43个请求入手,运气不错,问题已经重现了。这告诉我们多注意一下不法分子总是好的。接下来就是使用2分法来找到具体的某一个访问,可以用脚本来干。最终确定是一个png图片。

IT 系统架构/ 2012-09-30 16:02:53 / 累计浏览 4,667

关于 12306 网站设计的一点信息收集

铁道部 12306 网站的设计最近颇招非议,除了成本高昂之外,设计不透明,交付产品看起来粗糙,订票流程问题多多,铺天盖地的非议就出来了。但是我们可以想象,即便是再糟糕的一个系统,也一定有大量的人员在投入探讨他们的解决方案。在 ITPUB 论坛上,看到一个业内人士的记录,可以一窥这个网站背后的一些思路。

IT 网络系统/ 2012-09-30 15:54:39 / 累计浏览 7,712

计算机网络协议包头赏析-TCP

仍然先把TCP报文段的格式放在这里,然后我们看图说话: TCP报文段也分为首部和数据两部分,首部默认情况下一般是20字节长度,但在一些需求情况下,会使用“可选字段”,这时,首部长度会有所增加。 下面,我们仍然延续讲解IP协议的思路,针对不同的域,分别进行讲解: 【源端口】- 16bit 来源处的端口号; 【目的端口】- 16bit 目的处的端口号; 【序号】- 32bit 每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

IT 其他/ 2012-09-30 15:49:19 / 累计浏览 5,367

晒晒我们的开源项目

我们的研发团队是一支mini型研发团队,目前共有研发人员13人。由于网站产品维护的历史原因,这13人的研发团队分为4支小组,分别是:Ruby研发小组5人;PHP研发小组4人;.net研发小组2人,Java搜索小组2人。 别看我们研发人员这么少,但是我们研发人员战斗力很强,我们维护和开发着十多条产品线。在我们开发自身产品的过程中,也积累了一些比较通用的组件,一些对大家来说有用的工具。因此从今年下半年开始,我们陆续将一些组件和工具开源出来,哪怕这些项目的质量并不是那么高,也希望能够给社区带来一点点自己的贡献。 以下简要介绍一下我们已经开源的项目,今后我们还会努力开源更多的东西和大家交流和分享....

IT 信息和交互/ 2012-09-30 15:47:12 / 累计浏览 4,180

iPhone 5/iOS 6前端开发指南

iPhone5和iOS 6已经发布好几天了,相信很多童鞋都已经刷上了iOS 6。我们在之前就发表过《iOS 6中Safari对HTML5的支持》,但是除此之外,实际上市的iOS 6具体支持还有哪些新功能?让我们一起看下...

IT 信息和交互/ 2012-09-30 15:45:12 / 累计浏览 3,690

响应式Web设计

响应式Web设计(Responsive Web design)的理念是页面的设计与开发应当根据设备环境(屏幕尺寸、屏幕定向、系统平台等)以及用户行为(改变窗口大小等)进行相应的响应和调整。具体的实践方式由多方面组成,包括弹性网格和布局、图片、CSS media query的使用等。无论用户正在使用pc、平板电脑,或者手机,无论是全屏显示还是非全屏的情况,无论屏幕是横向还是竖向,页面都应该能够自动切换分辨率、图片尺寸及相关脚本功能等,以适应不同设备。

IT 奋斗/ 2012-09-30 15:34:50 / 累计浏览 3,489

设计师的逆袭

“苦逼”这个词,很多设计师喜欢这么称呼自己,因为在工作中经常遇到改来改去的事情,有时候甚至只是产品的一个实现工具。为什么设计师会遇到这些窘境?其实不管什么职业被动了都会有这样那样的苦逼,因此设计师在整个过程中主动是必不可少的。   领导能力与管理能力有所不同,管理是每个人公司赋予的职责,而领导力是潜意识所形成的并且能够影响和带动整个团队的能力。设计师不一定有管理职责,但拥有领导力是摆脱“苦逼”现状的最好办法,简单点说就是成为整个项目的owner。    用心,你对项目团队有多用心,项目团队就对你有多用心。    

IT 系统架构/ 2012-09-30 15:34:18 / 累计浏览 3,346

【译】无附加模块实现Drupal的多子域名下的单点登录

现在市面上有太多的Drupal单点登录模块,以至于我们很容易就忽略了Drupal本身内建单点登录的事实。不需要任何模块,不需要任何设置,短短的20行settings.php中的代码就可以实现。这个办法在很多人那里可以使用,但是什么时候使用这个办法,还是有一些具体的要求,例如: - 这些共享一次登录的网站,在同一个主目录下,如: - www.colblog.net - forums.colblog.net - subsite.colblog.net - 必须使用mysql - 你的网站必须在同一个物理集群上,可以互相访问数据库。如果你的网站达到了这些要求,你马上就可以享受到简单、高效的单点登录了!可以使用这个办法单点登录的依据在于,Drupal有内建的机制可以使用表前缀,这样就可以让你的多个Drupal网站运行在一个MySQL的数据库中(,使用不同的表前缀来区分不同的网站)。

IT MySQL/ 2012-09-30 15:32:37 / 累计浏览 6,208

MySQL中like语句及相关优化器tips

like用的是 ‘%xx%’, 不符合前缀匹配的规则,因此用不上索引title,只能作全表扫描。以上为官方回答。但是如果是在 InnoDB这种聚集索引组织的表中,假设这个表单行很大,比如后面还有若干个类似memo的字段。 这样聚集索引会很大,导致全表扫描需要读更多的磁盘。而理想情况应该是这个流程 1) 遍历title索引,从中读取和过滤所有title中匹配like条件的id 2) 用id到聚簇索引中读数据。在单行很大,而like能够过滤掉比较多语句的情况下,上面的流程肯定比全表扫描更快,也更省资源。

IT 奋斗/ 2012-09-30 15:31:14 / 累计浏览 3,303

时光荏苒,五年陈酿

这一天,终于成为了阿里巴巴五年陈。从进入淘宝的第一天,一年香,三年醇,五年陈的说法就一直萦绕在耳边。还记得一年香的时候礼物是一个印着小蚂蚁的杯子,貌似当年的蚂蚁已经进化成了如今的淘公仔,蚂蚁标记已经从各种地方慢慢消失。其实当年经常唱响的一首小蚂蚁大淘宝的歌依然还在记忆深处吟唱,那时候的淘宝真的非常草根,而今这种感觉可能随着时间感觉已经冲淡了不少。那时候的淘宝DBA团队,兵少而精,数据库都跑在高富帅的IOE(IBM小型机/Oracle数据库/EMC存储)上,现在回首整个就是一青葱岁月,但第一年的收获真的非常大,也经历过至今想起来还浑身冒冷汗的故障。

IT 奋斗/ 2012-09-30 15:26:14 / 累计浏览 3,387

纸上读来不觉浅

先提出创意,再开发产品,然后内测公测,最后正式发布。在不少公司里,这是再正常不过的流程;每一天,它都在无数地方重演。至于发布之后会怎么样,就撞大运吧,反正之前已经按部就班跑完了整个流程,换句话说,能做的,已经都做了。 但我分明又看到,无数的产品(尤其是新产品),无数的公司(尤其是创业公司),就这样看似正常地落难了,而且让人百思不得其解——创意、开发、测试、发布,每一步都走得稳稳的,到头来,为什么落得一败涂地呢? 按照《四步创业法》的作者Steven Gary Blank的分析,用这种方法开发产品,尤其是创业公司用这种办法开发产品,必然是一条不归路。

IT 系统架构/ 2012-09-30 15:25:24 / 累计浏览 5,886

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

客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling;如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling。 注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹。 先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示: 因为服务端不会主动告诉客户端它是否有新数据,所以Polling的实时性较差。虽然可以通过加快轮询频率的方式来缓解这个问题,但相应付出的代价也不小:一来会使负载居高不下,二来也会让带宽捉襟见肘。 再来说说Long Polling,如果使用传统的LAMP技术去实现的话,大致如下所示: 客户端不会频繁的轮询服务端,而是对服务端发起一个长连接,服务端通过轮询数据库来确定是否有新数据,一旦发现新数据便给客户端发出响应,这次交互便结束了。

IT 其他/ 2012-09-30 15:17:40 / 累计浏览 2,305

回忆Windows开发中的古老概念

以前在Windows上面做过一些工作,那个时候还没有维基百科全书,很多计算机相关的概念由于是刚刚发展出来,身处其外的人往往不知道正确的含义。微软的技术那时候是最受开发人员关注的,当时也只有在Windows上做一些软件才可以赚钱,回想一下,微软没有推出App Store绝对是个极大的失策。微软的各种技术图书和开发工具涉及到很多的原创缩写词汇,让人不知所以,现在有个WIKI的归类总结我们才能真正的理解这些名词。下面列举一些例子: VBX:这个是我们在早期的VB乃至Delphi上面设计GUI的时候使用的控制。基于控件开发是当时的热潮,有公司专门出售这些控件,也有盗版光盘包含了很多的控件集合。试用各种控件也是学校生活的一部分。记得毕业实习的时候,用VB开发一个企业管理软件,有些高级表格需求windows自带控件无法实现,公司也是满世界去找。

IT 系统运维/ 2012-09-30 15:17:19 / 累计浏览 3,770

ulimit -t 引起的kill血案

问题: 某台机器的ulimit -t 不知道为啥是300, 这是不是意味着程序占用CPU 300秒后会收到SIGKILL ? 我用gdb跑mysqld 跑了一会,收到SIGKILL信号,没有配置cgroup,也没啥后台脚本,看了下,就ulimit -t 比较诡异,其他机器都是unlimited。 简单的man ulimit下手册说: -t The maximum amount of cpu time in seconds 貌似限制的是CPU最大执行时间,以秒为单位。 为了验证上面的说法,我特地设计了以下的场景:我们首先运行一个死循环程序消耗CPU时间,同时把进程的最大CPU消耗时间设定在180秒,期待在这个时间点进程会被杀掉。

IT 互联网/ 2012-09-30 15:16:16 / 累计浏览 3,388

二维码的未来

所谓二维码,基本上就可以理解为更加复杂的条形码(这只是一种比较简单的理解,事实上二维码也是一种条形码)。条形码今天的应用相当广泛,但凡一个正规的商品都会印有一个条形码。不过所包含的信息远远不如二维码的。不过,我们还是可以用条形码的发展来预测一下二维码未来会不会成为“线上线下关键入口”,以及如何才能成为。