三种东西永远不要放到数据库里

我已经在很多演讲里说过,改进你的系统的最好的方法是先避免做“蠢事”。我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含 的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好 的结果的。

图片,文件,二进制数据

既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的!别的先不提,在很多数据库语言里,处理大字段都不是很容易。

把文件存放在数据库里有很多问题:

  • 对数据库的读/写的速度永远都赶不上文件系统处理的速度
  • 数据库备份变的巨大,越来越耗时间
  • 对文件的访问需要穿越你的应用层和数据库层

这后两个是真正的杀手。把图片缩略图存到数据库里?很好,那你就不能使用nginx或其它类型的轻量级服务器来处理它们了。

给自己行个方便吧,在数据库里只简单的存放一个磁盘上你的文件的相对路径,或者使用S3或CDN之类的服务。

短生命期数据

使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redisstatsd/graphiteRiak,它们都是干这种事情更合适的工具。这建议也适用于对于收集那些短生命期的数据。

当然,用挖土机在后花园里种土豆也是可行的,但相比起从储物间里拿出一把铲子,你预约一台挖土机、等它赶到你的园子里挖坑,这显然更慢。你要选择合适的工具来处理手头上的事。

日志文件

把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”,这样的话很得人心。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。

也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。如果你的日志级别设置为verbose或debug,那等着看你的数据库着火吧。

你应该使用一些比如Splunk Loggly或纯文本文件来存放你的日志数据。这样去查看它们也许会不方便,但这样的时候不多,甚至有时候你需要写出一些代码来分析出你想要的答案,但总的来说是值得的。

可是稍等一下,你是那片不一样的雪花,你遇到的问题会如此的不同,所以,如果你把上面提到的三种东西中的某一种放到了数据库里也不会有问题。不,你错了,不,你不特殊。相信我。

[本文英文原文链接:Three things you should never put in your database ]

22 个免费的图表、流程图工具

饼图、柱状图、线图和许多其他的图形是非常重要的用来表示数据和沟通的信息,并可展示两个实体之间的关系。而这些图形如果用在 Web 上则有助于吸引访客的注意力,并有效地解释相关数据。 在这里我们推荐一些很棒的工具,你可以通过点击创建非常直观的设计流程图和图表。

Gliffy

使用 Gliffy 可创建非常漂亮的各种图表、流程图、平面图和技术图纸等等。

Gliffy

Highcharts

Highcharts是一个制作图表的纯Javascript类库,主要特性如下:

  • 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等;
  • 对个人用户完全免费;
  • 纯JS,无BS;
  • 支持大部分的图表类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图;
  • 跨语言:不管是PHP、Asp.net还是Java都可以使用,它只需要三个文件:一个是Highcharts的核心文件highcharts.js,还有a canvas emulator for IE和Jquery类库或者MooTools类库;
  • 提示功能:鼠标移动到图表的某一点上有提示信息;
  • 放大功能:选中图表部分放大,近距离观察图表;
  • 易用性:无需要特殊的开发技能,只需要设置一下选项就可以制作适合自己的图表;
  • 时间轴:可以精确到毫秒;

Highcharts

Barchart

这是一个用来创建柱状图的工具。

Barchart

CSS Chart Generator

完全使用 Flash 和 XML 构建的图表生成工具。

CSS Chart Generator

Grapher

非常易用,可点击箭头来创建列,点击标题和数字来修改标题和单位,可右键打印图表。

Grapher

Hohli Charts

生成动态图表

Hohli Charts

MGraph

Ajax MGraph 基于 Prototype.js 的 Ajax 图表库,纯 XHTML 和 CSS 实现。

MGraph

Flowchart

Flowchart.com 是一个在线多用户、实时协作的流程图服务

Flowchart

Online Chart Generator

这是一个最棒的在线图表生成工具,支持三维的图表

Online Chart Generator

DIY Chart

DIY (Do it yourself) Chart 是一个基于 Web 的简单但强大的在线工具,用来创建交互式的 Web 图表。

DIY Chart

Xml/Swf Charts

XML/SWF Charts 是一个简单但很强大的创建各种吸引人的图表的工具,使用 XML 作为数据传输,使用 Flash 做图表展示。

XML/SWF Charts

Cacoo

Cacoo 是一个用户友好的在线图形绘制工具,可创建各种 UML、线框以及网络图。可免费使用!

Cacoo

ChartDemo

这里包含很多种形式的图表,无需附加插件,无需图片支持。

ChartDemo

ChartGizmo

你可通过 ChartGizmo 的免费帐号为网站创建各种图表。

ChartGizmo

CreateAGraph

CreateAGraph

DrawAnywhere

Draw Anywhere 提供在线的组织结构图、调度和展示图的绘制工具

DrawAnywhere

Piecolor

一个简单的工具用来创建各种效果的饼图

Piecolor

Online chart tool

Online chart tool

YEd Graph Editor

yed 是一个画流程图的工具,不是开源软件,但是可以让你摆脱 Microsoft Office Visio  ,也有linux下的版本,整个程序是java开发的,确实比较强大。

YEd Graph Editor

Pie Chart Maker

Pie Chart Maker 是一个免费的构建饼图的工具

Pie Chart Maker

Fooplot

Plot and graph equations online; lines, circles, parabolas, cubics.

Fooplot

SmartDraw

SmartDraw 是一个桌面软件用来绘制各种图表、UML图等。

SmartDraw

via smashinghub

Nginx 路线图 —— 1.3.0 版本将支持 SPDY

Nginx 官方发布下一个版本 1.3.0 的路线图,该版本将包含如下几个方面的改进:

1.3.x 计划的特性和改进:

  1. 支持 Google SPDY draft 2, draft 3
    • draft 2 plus SSL, end of May 2012
  2. IPv6 代码清理
  3. Upstream 代码清理
  4. 新的运行状态模块
  5. Chunked encoding on input
  6. 支持 If-Modified-Since to upstream servers
  7. 支持 Websockets
  8. 支持 ETAG headers
  9. [TBD]

20 个免费的、很有用的工具提示插件

工具提示是当鼠标在某特定区域上停留时显示的一个矩形窗口.工具提示窗口包含一些编程者想要显示的文本.在这点上,工具提示同状态栏的作用是一样的,所不同的是工具提示当单击或者远离指定区域的时候就会消逝,你可能熟悉与工具栏相关联的工具提示,那些”提示”是工具栏控件提供的便利.如果你想要在其它窗口、控件中显示工具提示的话,就不得不自己创建他们.

本文介绍 20 个免费的 jQuery 的工具提示插件:

TipTip

( Demo | Download )

TipTip 是一个非常轻量级和智能的 jQuery 的工具提示插件,无需图片,可通过 CSS 进行定制,压缩后只有 3.5K

TipTip

Build a Better Tooltip with jQuery Awesomeness

( Demo | Download )

通过这个智能的jQuery插件可用来替换浏览器默认的工具提示

Build a Better Tooltip with jQuery Awesomeness

jQuery (MB) Tooltip

( Demo | Download )

同上

jQuery & CSS Tooltip

( Demo | Download )

该代码可非常简单的创建外观很好看的工具提示。

jQuery & CSS Tooltip

Sticky Tooltip

( Demo | Download )

支持超文本的工具提示,包括可在提示中显示图片。

Sticky Tooltip

jQuery Tooltip Plugin

( Demo | Download )

jQuery Tooltip Plugin

jQuery Image Tooltips

( Demo | Download )

当用户鼠标放在缩略图上,便会出现一个提示框用来显示对应的大图,并支持显示和隐藏的动画特效。

jQuery Image Tooltips

DHTML Tooltips

( Demo | Download )

支持格式化和超文本的工具提示效果

DHTML Tooltips

Prototip 2

( Demo | Download )

Prototip 可以让你创建图片和文本混合的工具提示,这是一个 Prototype 插件,而非 jQuery。

Prototip 2

Mobile Tooltip Widget for GWT

( Demo | Download )

Mobile Tooltip Widget for GWT

ClueTip

( Demo | Download )

ClueTip

EZPZ Tooltip

( Demo | Download )

EZPZ 工具提示又是一款 jQuery 的 Tooltip 插件。

EZPZ Tooltip

Balloon Tooltip Demonstration

( Demo | Download )

圆角效果的工具提示插件

Balloon Tooltip Demonstration

ToolTip MooTools

( Demo | Download )

这是 MooTools 的工具提示插件。

ToolTip_MooTools

MooTools Tooltip

( Demo | Download )

同上

MooTools Tooltip

Tooltip.js

( Demo | Download )

Tooltip.js 是一个基于 PrototypeScript.aculo.us 构建的工具提示插件

Tooltip.js

Advanced Tooltips

( Demo | Download )

高级工具提示,带有标题栏、内容和底栏

Advanced Tooltips

qTip2

( Demo | Download )

qTip2 提供多种不同风格的工具提示

qTip2

tipsy

( Demo | Download )

类似 Facebook 的工具提示插件。

tipsy

Cool DHTML Tooltip

( Demo | Download )

一个简洁的工具提示插件

Cool DHTML Tooltip

via smashinghub