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

技术文章

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

技术文章精选

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

最新文章

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

IT 系统架构/ 2012-03-04 17:43:46 / 累计浏览 3,455

技术方案评审

新年开始,大部分公司都在启动大量新功能的规划及设计、技术人员同时在设计对应实现方案、架构师或者技术主管则需要一天内穿梭在多个技术讨论中,评审并达成成熟稳定的设计方案。从架构师的角度来考虑,如何衡量一个技术方案的优劣呢?一、评审点从总体上讲,技术方案是衡量一个团队的开发成熟度重要一方面。技术设计是否围绕核心需求key features?模块依赖关系、兼容性是否得到充分清晰的描述及共识;设计上不同的方案是否得到了充分考虑比较?是否有正反的激烈的碰撞还是行政上的领导说了算?另外代码实现是否正确执行设计,还是代码实现边走边看,与设计方案基本脱节?从细节上来看,在软件企业内经常有不同形式的方案review,架构师在做review时候需要要考察哪些环节?从互联网系统设计的角度,总结到以下几点。简洁及可维护性从工程角度来看,避免难懂的方案。技术方案尽量象PPT那样,越傻瓜的方案越有生命力。当然

IT 系统架构/ 2012-03-04 17:43:27 / 累计浏览 3,476

Tumblr架构 – 页面浏览量150亿/月并且比Twitter更难拓展

    注:一些内容不熟悉,所以没有翻译。原文地址在这里     Tumblr每个月增长30% , 一天5亿网页浏览,40K/sec , 每天3TB的数据存储在1000+的服务器上。最开始只有4名工程师来处理所有事情,当有20多个工程师的时候,才有实力出一些有趣的解决方案。     Tumblr最开始是典型的大型LAMP应用,现在的分布式服务模型使用了Scala, HBase, Redis, Kafka , Finagle等,现在在处理PHP应用的问题,开始走向面向服务的设计。     分布式系统工程师 Blank Matheny讲述Tumblr的架构 现状 每天5亿PV ~20 工程师平均每秒4W请求每天1+ TB 数据写入到Hadoop集群每天更多TB的数据写入到 MySQ

IT 系统架构/ 2012-03-04 17:42:50 / 累计浏览 2,492

妄谈时间序列表格型大数据系统设计

一直在特定领域的分布式系统一线摸爬滚打,曾取得一些微不足道的成绩,也犯过一些相当低级的错误。回头一看,每一个成绩和错误都是醉人的一课,让我在兴奋和懊恼的沉迷中成长。自己是个幸运儿,作为一个 freshman 就能够有机会承担许多 old guy 才能够有的职责。战战兢兢、如履薄冰的同时,在一线的实作和思考也让我获得了一些珍贵的经验,却直至今日才够胆量写出来一晒。这篇文章标题前面是“妄谈”两字,所持观点未必正确,我姑妄言之,有缘之人姑听之。若有些友好的讨论,亦我所愿也。 我做的虽然也是分布式系统,却不够胆去讨论通用分布式系统的设计原则。

IT JavaScript/ 2012-03-04 17:40:56 / 累计浏览 2,980

再谈javascript面向对象编程

前言:虽有陈皓《Javascript 面向对象编程》珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力。另外这篇文章是一篇入门文章,我也是才开始学习Javascript,有一点心得,才想写一篇这样文章,文章中难免有错误的地方,还请各位不吝吐槽指正 吐槽Javascript 初次接触Javascript,这门语言的确会让很多正规军感到诸多的不适,这种不适来自于Javascript的语法的简练和不严谨,这种不适也来自Javascript这个悲催的名称,我在想网景公司的Javascript设计者在给他起名称那天一定是脑壳进水了,让Javascript这么多年来受了这么多不白之冤,人们都认为他是Java的附属物,一个WEB玩具语言。因此才会有些人会对Javascript不屑,认为Javascript不是一门真正的语言,但是这此他们真的错了。Javascr

IT 奋斗/ 2012-03-04 17:40:24 / 累计浏览 2,345

闲谈跨界

我的朋友韩磊曾说:跨界(工作)真是一件刺激好玩的事情。彼时我还无法体会这句话的真义,直到去年因缘际会自己也投身跨界,终于有机会切身体会到其中的滋味,所以有这篇文章。 其实在此之前,我一直混迹于互联网的圈子,自认为接触过一些真正的东西,比如大规模数据的抓取,海量数据的存储和处理,在线系统的维护……客服、文案等等工作也有涉及。我想,太阳底下没有新鲜事,跨界虽然是在不同的领域,做的事情大抵还是这些。但是真正投身实业,才发现事实远非自己想象的那样。 这方面突出的例子之一,就是虚拟世界和现实世界的交流。从某种方面来说,互联网或者纯软件开发,更像在理想的虚拟世界中进行,可以脱开现实的束缚,只关心核心的模型。“发一条确认的消息”是非常普通而且常用的操作,你用Java也好,C#也好,PHP也好,只要按照约定发送这条消息,结果都不会有多大差别;落实到现实世界中,情况要复杂许多:消息必须有实际的载体,有发送的

IT 其他/ 2012-03-04 17:39:11 / 累计浏览 4,156

python十分钟入门

【简介】 Python(蟒蛇)是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用。【特点】 1 Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。 2 Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、接口等面向对象的元素。 3 Python代码块使用空格或制表符缩进的方式分隔代码。 4 Python仅有31个保留字,而且没有分号、begin、end等标记。 5 Python是强类型语言,变量创建后会对应一种数据类型,出现在统一表

IT 信息和交互/ 2012-03-04 17:38:15 / 累计浏览 2,130

浅析产品新手引导设计

  引导设计,现在也是大家比较热衷讨论的话题,各类的web产品也都纷纷效仿起移动端的引导方式,那么我先问一下,究竟什么是引导设计呢? 什么是引导设计?   我们把它拆开为“引导”和“设计”,那什么是引导呢?我们可以回归到生活中去寻找答案,导游带领游客参观景点,帮助安排食宿,让游客们轻松愉快地完成他们的旅程;老师教学生更快更深入地学习知识,学以致用;路边的醒目的箭头路标指引我们更快地找到地铁,这些都是引导在生活中的例子。   所以可以概括,引导是带领既定的目标对象更快速更愉悦地达到目标的过程,引导设计则是这一过程的设计。在互联网产品的范畴中,新手引导设计是引导新手用户更快速更愉悦地学习使用产品这一过程的设计,它力图像导游、老师、路标一样带领新手用户快速地熟悉产品的整体功能,在用户操作遇到障碍之前给予及时的帮助。   但是,新手引导设计是不是就完全是为了引导新手用户学习使用产品的设计呢?这么说

IT 设计思想/ 2012-03-04 17:36:59 / 累计浏览 2,009

主题论坛的一些想法

虽然现在 twitter google+ facebook (你也可以把前面的产品换成新浪微博,人人)已经成为网上公众信息交流的主流工具了。但论坛这一形式始终有它存在的价值。至少,在 mailling list 无法成为主流的状态下,产品在网上发布,大多还是需要一个类似论坛的形式为用户提供服务的。当然,google groups 本质上是一个邮件列表,它也把自己称为“网上论坛”的。我说的这个东西,应该大体上归类于 forum 。但 forum 这个词大多数中国人拼不清楚,大家更习惯称之为 bbs (我知道 forum 和 bbs 其实是有差别的)。 当年 ROR 正火爆的时候,有人说用 ROR 搭建一个网站只需要几行代码,没有更简单的了。有人回,不,用 Discuz 搭建一个论坛更简单。 以为然。 但是我始终不喜欢 Discuz 形式的论坛,尤其是它之后的发展。过于花哨繁杂了。我更喜

IT 系统运维/ 2012-03-04 17:36:36 / 累计浏览 1,673

blktrace未公开选项网络保存截取数据

我们透过blktrace来观察io行为的时候,第一件事情需要选择目标设备,以便分析该设备的io行为。具体使用可以参考我之前写的几篇:这里 这里 这里 blktrace分为内核部分和应用部分,应用部分收到我们要捕捉的设备名单,传给内核。内核分布在block层的各个tracepoint就会开始工作,把相关的数据透过relayfs传递到blktrace的应用部分,应用部分把这些数据记到磁盘,以便后续分析。

IT 系统运维/ 2012-03-04 17:36:06 / 累计浏览 2,953

hwconfig查看硬件信息

最近经常要测试新硬件,了解硬件的具体型号和参数就非常重要,过去经常透过lspci -vvv等命令来了解,貌似比较不准确。 今天看到阮军同学用的hwconfig感觉信息很专业,推荐给大家。标准的发布版都带的,所以简单的yum install hwconfig就可以使用了。

IT JavaScript/ 2012-03-04 17:33:21 / 累计浏览 2,208

Javascript 静态类的实现

早些天写过了类的实现,接着我们看看的静态类的实现。这东西在Javascript里用得会非常的频繁,因为针对现在的网页,多个基于同一个类对象的页面不多,往往不同块对象的交互就可以解决问题了,这就需要在JS针对元素定义几个静态类就可以完事了,进入正题。

IT 其他/ 2012-03-04 17:32:39 / 累计浏览 3,085

序列化格式YAML初探

YAML,是一个可读性高,用来表达资料序列的编程语言。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式。目YAML是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。 YAML的功能 YAML的语法和其他高阶语言类似,并且可以简单表达清单、杂凑表,标量等资料形态。它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。尽管它比较适合用来表达阶层式(hierarchical model)的数据结

IT 安全/ 2012-03-04 17:27:02 / 累计浏览 3,388

wget 自动发送用户名密码

有个 Server 需要 Basic Auth 认证,但是我发现在它自己上面有一个任务会通过 wget 访问一个自己的 URL,调用的过程并没有提供用户名和密码,竟然可以成功访问!一开始我以为是 Apache 里面配置的访问规则是对本地访问不需要认证,但是并非如此。bash alias? 也不是。加上 --debug 参数调用 wget,发现它确实在访问本机的这个域名时会加上 Authorization 这个 header, 而访问其它域名的时候则不加。最终通过 strace 发现它会打开 $HOME/.netrc 文件,原来秘密就在里面。中间看了半天 manual,只看到它会读取 /etc/wgetrc, $HOME/.wgetrc, 没注意到还会读这个文件。我不太喜欢这种做法——谈不上安全,又不容易维护。

IT MySQL/ 2012-03-04 17:22:24 / 累计浏览 36,296

MySQL数据库在实际应用一些方面的介绍

此篇文章主要介绍的是MySQL数据库实际应用方面的操作。但是你必须要先登录到 MySQL数据库中,下面的操作是在MySQL数据库的实际提示符之下进行的,同时也要求每个相关命令以分号结束。 一、操作技巧 1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。 也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。 2、你可以使用光标上下键调出以前的命令。 二、显示命令 1、显示当前MySQL数据库服务器中的数据库列表: MySQL> SHOW DATABASES; 注意:MySQL库里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 2、显示MySQL数据库中的数据表: MySQL> USE 库名; MySQL> SHOW TABLES; 3、显示数据表的结构: MySQL> DE

IT 视觉设计/ 2012-02-26 23:34:32 / 累计浏览 2,431

工具型网站首页的设计思考

什么是工具型网站 我们先从wikipedia上了解三组概念: 工具:是指能够方便人们完成工作的器具。 application:用来帮助用户完成某个单独的或是一组相关的工作的计算机软件。 web application:指通过使用Web和Web浏览器技术,跨越网络完成一个或多个任务的应用程序,通常需要使用Web浏览器。 由此可见,应用就是计算机领域的工具,工具型网站可定义为承载了一个或多个网页应用的网站。它专注于让用户完成一系列的任务,如注册、支付等。   首页的用户需求 首页的用户大体说来可分为三类:不了解的新用户、有兴趣的新用户、老用户。 对于新用户而言,他们势必会问到这些问题: 我在这能做些什么? 这个网站能提供哪些对我很重要的东西? 对于已经有兴趣的用户也会有些其他的疑问: 我应该怎么开始? 我是否必须注册?如果是,应该怎样注册? 总得来说,首页应该解答新用户的疑惑并且帮助他们找到功

IT 系统运维/ 2012-02-26 23:33:04 / 累计浏览 4,094

puppet使用rsync来同步文件教程

[导读] 大家都知道,puppet 同步文件都需要使用puppet 文件服务器,且同步大文件的效率比我们运维经常 使用到的rsync效率低且puppet 文件服务器只支持http和puppet 文件传输协议,幸运的是老外给我

IT 信息和交互/ 2012-02-26 23:31:56 / 累计浏览 2,009

Avinash:关于网站分析的3个忠告

在网站分析领域,Avinash是被大家顶礼膜拜的对象。对于网站分析,没有人能比Avinash更好地把它阐述得简洁有力,没有人比Avinash更理解互联网的用户行为,Avinash多年不懈的努力帮我们揭开了网站分析的神秘面纱。 上一篇博文分享了Avinash关于如何正确启动网站分析的观点,今天继续分享他的一些观点,确切说是一些忠告。为了赢得网站分析的胜利,Avinash的身上可谓伤痕累累,下面就是他在网站分析前线战斗多年后,分享给同行的3个重要忠告。

IT 系统运维/ 2012-02-26 23:27:43 / 累计浏览 2,646

Linux系统内存相关信息获取

大型的服务器,特别是数据库服务器的主要瓶颈主要在内存,CPU,以及IO上。CPU是可再生资源,不够用等等就有了;内存和土地一样是不可再生资源,被占用了,后续的使用必须等到该资源释放.而IO也非常依赖于内存的使用情况,故内存的倒腾效率会大大影响服务器的效率,那么了解服务器内存的使用情况就非常重要。 Linux内核的内存相关的信息主要有下面几个获取管道,这里我们主要讨论的是系统级别的,没具体到各个进程级别: 1. 内核启动时候,VM内存相关模块初始化信息,透过dmesg查看。

IT CSS/HTML/ 2012-02-26 23:26:00 / 累计浏览 2,853

Clojure世界:XML处理

XML处理也是个常见的编程工作,虽然说在Clojure里你很少使用XML做配置文件,但是跟遗留系统集成或者处理和其他系统通讯,可能都需要处理XML。 Clojure的标准库clojure.xml就是用来干这个事情的。一个简单的例子如下,首先我们要解析的是下面这个简单的XML:MichaelFogus/ChrisHouseStuartHalloway

IT 系统运维/ 2012-02-26 23:23:20 / 累计浏览 3,309

puppet运维之使用自定义函数

[导读] 上一篇puppet rsync使用教程,sky提到自定义函数,以及自定义provider和fact.本小节主要是介绍在puppet 下如何编写自定义函数,自定义函数在puppet 使用过程中有什么需要注意的地方,以及puppet 自定义函数是