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

技术文章

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

技术文章精选

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

最新文章

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

IT 视觉设计/ 2012-06-03 14:10:43 / 累计浏览 1,867

信息图形中的颜色探讨—面向色盲人士友好的设计解决方案

颜色可以用来区分信息图形上的数据类别和维度,是数据可视化中最常用的视觉变量之一。然而,世界上有超过8%的男性和0.4%的女性都被色觉障碍的问题困扰——他们在识别部分或者全部颜色时有困难。我们通常笼统的称这类人群为“色盲(Color Blindness)”(也称为道尔顿症、色觉缺失、色觉辨认障碍、色弱等)。面对如此庞大的特殊受众,设计师理应关注他们的需求。信息图形设计本是以向用户传递精准数据为目标,也不能忽视了这部分群体。 一. 了解色盲   “色盲能看到颜色吗?”“他们只能看到黑、白吗?”——人们常误以为色盲视觉所见的景象只有灰阶分布,其实不是的。色盲并不意味着色觉的完全丧失,而是指部分色觉受损,因此无法正确感知和分辨某些区域的颜色。

IT 系统架构/ 2012-06-03 14:10:01 / 累计浏览 3,549

一个DBA眼中的HBase

HBase的优点:分布式,易扩展,高性价比,运维成本低都是它的优点。HBase可以支持海量数据,单张表的数据量不上T,都不好意思出来打招呼。甚至可以拿很烂的SATA盘来作为存储,由于依赖底层的HDFS。新装的机器甚至可以不用做硬RAID。

IT 其他/ 2012-06-03 14:07:08 / 累计浏览 4,987

业务流程图的绘制流程分享(一)

近来一段时间,忙于整理业务流程图,期间,关于流程图的绘制方法和工具也与内部团队和外部做了心得交流,恰好,个人生活也牵涉在买房,婚礼,户口迁移等流程中。不知不觉,伴随着实践与反思,个人所得的系统知识趋于完整,今儿天气极好,坐在飘窗一隅,听着间或几声鸟鸣歌唱,偶尔瞥一眼窗外的遍地绿荫,真真觉得是个写点什么的日子。所以就整理成文,如果恰好对你有所帮助,那是真真好的。真实整理的流程牵涉到公司未公布的计划,不好公开,所以在本文中会借助一个简单的案例替代(这个案例呢,也就是计划写本文前30分分钟才想到的,如有考虑不周,请各位见谅),但是仅传达概念和方法,倒也足够了。恩,甄環体告一段落,

IT 信息和交互/ 2012-06-03 14:06:30 / 累计浏览 1,967

儿童移动应用的界面设计基础知识

\最近处于项目需要,开始研究儿童产品的界面设计。在此之前,对儿童如何使用移动产品和如何设计知之甚少。优质的移动应用,为儿童带来乐趣的同时可以帮助儿童认知事物。越来越多的儿童使用移动设备,接触虚拟社区的时间甚至早于真实世界,如何设计儿童产品是一个非常值得深入研究的课题。 本文简单地从视觉、界面层级关系和交互等方面分析儿童与成人界面之间的差异性。 颜色 细心的朋友会发现儿童家具明显有别于其他家具,最明显的特征就是颜色,这是因为儿童视力到8岁才能发育完全,对色彩的认知也是从简单的三原色开始,儿童偏向于喜欢高纯度和高明度的原色。 iPad版奇艺动画片的启动界面以品牌绿为主,配合多种红蓝黄等颜色,整体写实蓝天绿草地的真实意境,营造轻松有趣的氛围。 线条 儿童家具一般有保护措施,避免儿童在缺乏自我保护意识的情况下被误伤,界面设计同样如此。

IT 奋斗/ 2012-05-28 13:34:20 / 累计浏览 3,226

如何熟悉一个开源项目?

你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。2.阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。3.如果该项目有提供现成的example工程,首先尝试按照开始文档的介绍运行example,如果运行顺利,那么恭喜你顺利开了个好头;如果遇到问题,首先尝试在项目的FAQ等文档里查找答案,再次,可以将问题(例如异常信息)当成关键词去搜索,查找相关的解决办法,你遇到了,别人一般也会遇到,热心的朋友会记录下解决的过程;最后,可以将问题提交到项目的邮件列表,请大家帮你看看。

IT 算法/ 2012-05-28 13:33:53 / 累计浏览 2,348

Huffman 编码压缩算法

前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。你应该听说过 David Huffman 和他的经典的压缩算法—— Huffman Code,这是一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树。但是网上查了一下,中文社区内好像没有把这个算法说得很清楚的文章,尤其是树的构造,而正好看到一篇国外的文章《A Simple Example of Huffman Code on a String》,其中的例子浅显易懂,相当不错,我就转了过来。注意,我没有对此文完全翻译。

IT 信息和交互/ 2012-05-28 13:33:26 / 累计浏览 2,625

从排队等待谈进度条设计

  排队等待是一种日常中常见的现象,例如新年领开工利是、去排队购买首发的苹果产品、每天中午去食堂排队购买午餐。排队等待在我们的生活中无处不在且看似是一个简单的现象。即使是种简单的存在,但也有其复杂的一面,当存在着很多条队列时,确定每条队列是做什么的就变得困难了;在加入队列后,人们会产生:大概要等多久?为什么队伍很久没有往前移动?等诸多疑问。无法解释的等待是令人烦躁的,不公平的等待则可能引发人们的怒火。   经历过领开工利是的同学应该对于当天排队等待的回忆不会很糟,甚至觉得还不错,是一个值得回忆的经历,明年应该还会去参加。但经历过去火车站购买车票的同学多半会不愿意再去第二次了。不管痛苦还是愉快也好,排队等待有时是不可避免的,那有没有办法可以降低其中的痛苦程度呢?有心理学家曾对如何提升排队等待过程的愉悦感做过研究并提出了一些解决方法。

IT MySQL/ 2012-05-28 13:32:30 / 累计浏览 2,027

MariaDB与Percona XtraDB的Group Commit实现原理分析

MySQL数据库InnoDB存储引擎一直有一个Bug,就是当开启binlog时,无法进行group commit。究其原因,是为了保证InnoDB存储引擎的事务日志与mysqlbinlog日志的顺序一致性。 在prepare前需要获取mutex,直到commit完成之后释放,这也禁用了group commit的功能。

IT Oracle/ 2012-05-28 13:30:22 / 累计浏览 3,067

全表扫描却产生大量db file sequential read一例

有一条SQL,这个表上建billing_nbr和start_date的复合索引,这条SQL就能很快执行完(实际上最后也建了索引)。但是这里我们要探讨的是,为什么这么一条简单的SQL语句,执行了超过1小时还没有结果。MOBILE_CALL_1204_OLD这张表的大小约为12GB,以系统的IO能力,正常情况下不会执行这么长的时间。简单地看了一下,系统的CPU以及IO压力都不高。假设单进程全表扫描表,每秒扫描50MB大小(这实际上是一个很保守的扫描速度了),那么只需要245秒就可以完成扫描。

IT 编程语言/ 2012-05-28 13:27:35 / 累计浏览 3,830

从Go看,语言设计(二)

书接上文,继续从Go看语言设计。并发编程从多核CPU进入人们的生活,并发编程就成为编程中的新热点。在许多语言里,并发是由库提供的,而对于Go语言,并发则是语言的一部分。曾经,一说到并发编程,就会让人想到多线程/多进程、共享内存等等。Erlang改变了许多人关于并发编程的认识,基于消息的通信模式如今已逐渐成为新的标配,Go语言选择的也是这种模式。

IT 编程语言/ 2012-05-28 13:26:40 / 累计浏览 6,052

从Go看,语言设计(一)

Go语言发了正式版,终于像一个正经的东西了,不再需要每次从版本控制里面拿代码编译了。拿来把玩一番,看到了一些有趣的东西,记录一下。作为一门现代程序设计语言,Go语言从语言设计上反应出现代程序设计语言一些重要变化。函数成为第一类对象函数式编程已经无可阻挡地成为程序设计语言发展的重要趋势,只要是还在演进之中的程序设计语言,函数式编程都已经成为其重要的一部分,即便是Java这个笨重的大象,也会在Java 8中引入lambda。函数式编程的第一步, 就是让函数成为第一类对象,也就是可以把函数作为参数和返回值传递。然后,才会有高阶函数,以及后面的一系列变化。

IT 设计思想/ 2012-05-28 13:25:50 / 累计浏览 2,592

豆瓣东西上线,及谈谈签到、评论等产品的设计

豆瓣自己的架构都做不好电视剧. 那么除了电视剧之外,其它东西用豆瓣的架构来做,会怎么样呢?记住我说的豆瓣的架构,你可以认为是沉淀某个物的产品架构,豆瓣的产品架构和大众点评的产品架构都是沉底物的[但大众点评和豆瓣又有区别,大众点评属于小众个性化+精英化主流思想+地理位置+价位的综合体点评机制].

IT MySQL/ 2012-05-28 13:24:33 / 累计浏览 1,464

MySQL driver(驱动) liblbmysql for Go1

Go语言1.0出来之后,原来可用的MySQL驱动在新版本上基本不可用了,于是这几天自己写了个简单的MySQL的驱动,暂不支持prepare,没有implement sql/driver. 或许有能用的上的朋友,所以分享出来. 先介绍用法,后面提供下载链接.

IT 网络系统/ 2012-05-28 13:24:10 / 累计浏览 3,190

利用tcpcopy引流做模拟在线测试

一、工具介绍 Tcpcopy是一个分布式在线压力测试工具,可以将线上流量拷贝到测试机器,实时的模拟线上环境,达到在程序不上线的情况下实时承担线上流量的效果,尽早发现bug,增加上线信心。 Tcpcopy是由网易技术部于2011年9月开源的一个项目,现在已经更新到0.4版本。与传统的压力测试工具(如:abench)相比,tcpcopy的最大优势在于其实时及真实性,除了少量的丢包,完全拷贝线上流量到测试机器,真实的模拟线上流量的变化规律。二、Tcpcopy的原理 1.流程现在以nginx作为前端说明tcpcopy的原理: 上图中左边是线上前端机,右边是测试前端机。线上前端机开启tcpcopy客户端(tcpcopy进程),测试前端机开启tcpcopy服务端(interception进程),且两台机器上都启动了nginx服务。

IT 其他/ 2012-05-28 13:23:26 / 累计浏览 2,091

为什么TDD?

1. 反映真实需求 这里存在先写测试和后写测试的区别。 先说后写测试。根据很多经验,在直接写产品实现代码时,需要考虑需求,同时需要兼顾实现的细节,用什么算法和语法。在对需求和考虑和实现细节间来回,很容易让人产生对其中一方的疏忽,遗漏掉一些需求方面,甚至在实现上存在缺陷。 有人会说我可以通过后写测试来保证。第一经验是,很多人都不会在实现完成后,补充测试,因为还有更多的工作和需求需要实现。第二是开发人员很容易在后补的测试中,只是试图去测试他已有的实现,而不是需求本身,很容易遗漏掉一些边界检查之类,在测试时,已有的实现细节会在脑子里面先入为主,即使实现存在问题或有漏洞,也很难在后补的测试中测出来。我阅读过很多面试者的测试代码,很明显都是后补的,因为一些很明显的问题没有测出来,甚至已经实现的逻辑也是只测试了一部分。而这些面试者都承认。

IT Oracle/ 2012-05-28 13:21:29 / 累计浏览 2,124

使用exp/imp 导入11g数据到9i

现在有个需求,需要使用exp/imp导入11g的数据库数据到9i中,解决这个问题一般来说想到三种方法思路,一个个尝试(其实从高版本服务端支持低版本客户端的原则,可以大概的猜测出使用9i的客户端处理该问题) 方法1:导出导入都使用11g客户端 这个错误是版本不兼容导致:PLS-00302: component ‘SET_NO_OUTLINES’ must be declared 方法2:11g客户端导出,9i客户端导入 方法3:9i客户端导出,9i客户端导入 解决setSegmentation fault异常终止 通过一系列的实验证明,需要把11g的数据导入到9i中,需要使用9i的客户端进行,其中exu9defpswitches视图需要重建,否则会出现setSegmentation fault异常,导致导入失败.

IT 编程语言/ 2012-05-28 13:21:05 / 累计浏览 2,106

构造函数沉思录

缘起构造函数,是由C++引入主流程序世界的,其用意是在《C++语言的设计与演化》如是表达: 它建立起其它成员函数进行操作的环境基础。在很早的一篇blog《对象的声明》中,我曾探讨过构造函数的来龙去脉。对于面向对语言而言,构造函数似乎是标配。一个语言特性,一旦被扔到真实世界,随之而来的是,其使用往往会超出其设计者的初衷,构造函数亦是如此。事实上,通过前面C++之父的描述,我们依然很难定位构造函数的准确用法。所以,我们常常看到许多人把诸多操作强塞入构造函数,造成构造函数极为复杂,进而关于导致了一些复杂的语法讨论,比如如何处理构造函数抛出的异常。这里要讨论的是构造函数的另一个常见问题。重载构造函数同样是在《C++语言的设计与演化》里,有这样一段描述: 观察发现,允许定义多个构造函数很有价值,因此这也就成了C++重载机制的一个重要应用方面。是的,我要说的就是构造函数重载。

IT 系统运维/ 2012-05-28 13:20:39 / 累计浏览 3,670

Django的静态文件服务 总结

在django1.3+,内置了stataic 模块,只需要在INSTALL_APPS里注释掉相关代码即可,对于1.3以下版本可以使用pip install django-staticfiles ,并把staticfiles添加到INSTALL_APP 配置 ...

IT 设计思想/ 2012-05-28 13:19:34 / 累计浏览 2,451

走进工具型网站——释义及典型案例

  提到工具型网站,我们首先会有个疑问:大千网络网站众生,究竟什么样的网站才算是工具型网站?它的特征是什么,与其他网站有什么不同? 从网上搜索相关信息,了解到关于该名词的具体解释并没有明确的说法。   为了方便后续的研究,在此先结合之前同学们的研究成果,综合整理一下,提供工具型网站的定义版本,供参考:   ——所谓工具型网站,顾名思义就是构筑在互联网上的工具,是指为帮助人们完成某一特定领域的目标需求而提供的、具有一定操作流程、以完成该目标任务为主要目的、基于网络应用的工具手段。   它的主要特征在于:   – 以完成一项或多项任务为目的   – 注重操作流程引导   – 强调快速完成任务   – 非完成目标的唯一手段,只是协助用户更高效完成该目标   同时,很多工具型网站还特别配备一个独立门户,该门户以信息展现为主,用来专门介绍工具的价值、动态等,并提供登录或下载入口。

IT 系统架构/ 2012-05-28 13:19:14 / 累计浏览 2,531

即时流式数据 MapReduce

传统的 MapReduce 如 Hadoop, 是以任务的形式进行的 — 获取一批数据, 提交给系统, 然后获取结果. 但是, 有一些统计的需求是即时的, 统计任务需要持续的运行, 一旦数据生成, 便立即发给统计任务处理, 生成的结果”推”给接收者. 以一个网站用户在线时长统计的需求为例子, 那么系统就有这几个部分: 数据接收接收 Web Server(如 Apache/Nginx) 的 log, 例如使用 syslog. Mapper(格式转换) 依次输入以行为单位的原始的 Apache log, 输出一条或者多条结构化的数据. 这个输出将出 Reducer 进行下一步处理. Reducer(统计器) 不同的精度用不同的统计器, 因为统计结果必须在要求的精度时间内进行输出. 例如当精度要求是小时, 用户连续在线1个小时, 并且横跨在2个自然小时上,......