四个新的 HTTP 状态码

RFC 6585 最近刚刚发布,该文档描述了 4 个新的 HTTP 状态码。

HTTP 协议还在变化?是的,HTTP 协议一直在演变,新的状态码对于开发 REST 服务或者说是基于 HTTP 的服务非常有用,下面我们为你详细介绍这四个新的状态码以及是否应该使用。

428 Precondition Required (要求先决条件)

先决条件是客户端发送 HTTP 请求时,如果想要请求能成功必须满足一些预设的条件。

一个好的例子就是 If-None-Match 头,经常在 GET 请求中使用,如果指定了 If-None-Match ,那么客户端只在响应中的 ETag 改变后才会重新接收回应。

先决条件的另外一个例子就是 If-Match 头,这个一般用在 PUT 请求上用于指示只更新没被改变的资源,这在多个客户端使用 HTTP 服务时用来防止彼此间不会覆盖相同内容。

当服务器端使用 428 Precondition Required 状态码时,表示客户端必须发送上述的请求头才能执行请求,这个方法为服务器提供一种有效的方法来阻止 ‘lost update’ 问题。

429 Too Many Requests (太多请求)

当你需要限制客户端请求某个服务数量时,该状态码就很有用,也就是请求速度限制。

在此之前,有一些类似的状态码,例如 ‘509 Bandwidth Limit Exceeded’. Twitter 使用 420 (这不是HTTP定义的状态码)

如果你希望限制客户端对服务的请求数,可使用 429 状态码,同时包含一个 Retry-After 响应头用于告诉客户端多长时间后可以再次请求服务。

431 Request Header Fields Too Large (请求头字段太大)

某些情况下,客户端发送 HTTP 请求头会变得很大,那么服务器可发送 431 Request Header Fields Too Large 来指明该问题。

我不太清楚为什么没有 430 状态码,而是直接从 429 跳到 431,我尝试搜索但没有结果。唯一的猜测是 430 Forbidden 跟 403 Forbidden 太像了,为了避免混淆才这么做的,天知道!

511 Network Authentication Required (要求网络认证)

对我来说这个状态码很有趣,如果你在开发一个 HTTP 服务器,你不一定需要处理该状态码,但如果你在编写 HTTP 客户端,那这个状态码就非常重要。

如果你频繁使用笔记本和智能手机,你可能会注意到大量的公用 WIFI 服务要求你必须接受一些协议或者必须登录后才能使用。

这是通过拦截HTTP流量,当用户试图访问网络返回一个重定向和登录,这很讨厌,但是实际情况就是这样的。

使用这些“拦截”客户端,会有一些讨厌的副作用。在 RFC 中有提到这两个的例子:

  • 如果你在登录WIFI前访问某个网站,网络设备将会拦截首个请求,这些设备往往也有自己的网站图标 ‘favicon.ico’。登录后您会发现,有一段时间内你访问的网站图标一直是WIFI登录网站的图标。
  • 如果客户端使用HTTP请求来查找文档(可能是JSON),网络将会响应一个登录页,这样你的客户端就会解析错误并导致客户端运行异常,在现实中这种问题非常常见。

因此 511 状态码的提出就是为了解决这个问题。

如果你正在编写 HTTP 的客户端,你最好还是检查 511 状态码以确认是否需要认证后才能访问。

英文原文OSCHINA原创翻译

Evernote估值10亿美元背后那些鲜为人知的故事

昨天,云笔记和储存应用Evernote获得7000万美元投资,估值高达10亿美元。从目前来看,Evernote算是一款非常成功的笔记本,而估值10亿美元的背后又有着怎样的故事呢?

不久前,Evernote CEO Phil Libin在一次采访中向我们讲述了公司发展过程中鲜为人知的故事。和如今的很多公司不同的是,Evernote从一开始就有着非常清晰的定位,包括产品和商业模式。

在 采访的过程中,Libin就这样调侃如今的很多创业公司:“在很多创业公司看来,不转型三四次貌似是找不到正确的商业模式的。”然而对于Libin来说, 他从2007年Evernote创办伊始就清楚地知道公司是干什么的,并坚持认为免费增值模式是符合Evernote的商业模式。

Libin 也曾多次说到,Evernote想为每个人提供一个额外的“记忆大脑”,因为每个人都觉得自己的大脑不够用。然而一个好的产品想法和商业模式是远远不够 的。到2008年夏天,那时Evernote用户还不是很多,公司的一轮融资协议已经敲定,计划完成融资的那天也正是Merrill Lynch破产的那天,投资方告诉Libin说Merrill Lynch的破产使得他们亏损60%,因此便决定撤出对Evernote的投资。

那 时Evernote的资金已经不多,只能维持公司4周的正常运转。因此Libin便开始寻找新的投资方。一些投资者表示,如果Evernote将免费增值 的商业模式转变成利用用户的兴趣出售广告的话,那么他们就会考虑投资。当时Libin稍稍考虑了投资者的意见,但对他们的意见并不满意,认为利用用户的兴 趣来出售广告会损害用户对Evernote的信任,因此便拒绝了。Libin说道:“我宁愿将公司关了也不会这么做的。”其他的一些投资者建议 Evernote专门开发出一款企业级产品,但Libin认为这实在令人难以理解,因为Evernote本来是既可以供专业使用也可以供个人使用的。

到 那时,公司的资金只能维持公司运转3周,如果再融不到资,公司就不得不关门歇业。然而令人意想不到的事发生了。在查看邮件时,Libin看到了一封陌生人 发来的邮件,打开一看是一位Evernote的瑞典用户发来的,这位用户在邮件中表达了自己对Evernote的喜爱,并询问Evernote是否需要外 部融资。20分钟后,Libin就用Skype与这位用户聊了起来,两周后,Evernote就收到了这位用户50万美元的投资。由于这位投资者要求匿 名,因此外界至今不知道这位为Everntoe雪中送炭的投资者到底是谁,而Libin和这位投资者也从未谋过面。

这位神秘投资者的投资的 确帮助Evernote度过了难关,几个月后,各项数据显示,Evernote的产品和商业模式是可行的,并在不久后顺利从Troika Ventures获得了一轮投资。Libin事后回忆道:“如果那封邮件迟发过来几分钟,我可能就看不到了。”在一定程度上说,就是那位喜爱 Everntoe的用户拯救了Evernote。

在面临被迫关闭边缘,是什么使得Libin宁愿将公司关了也不愿靠转变商业模式来获得投资呢?Libin表示主要有以下两个原因:

第一,Evernote在开发自己的分析工具上花了很多功夫,因此Libin清楚地知道能够衡量公司模式是否正确的指标是什么。“在我看来,最重要的莫过于我们有一套自己的衡量标准和指标,因此我们不会盲目地转变公司发展方向。”

第 二,Everntoe并不是Libin创办的第一家公司,他之前已经出售过两家公司,因此他对自己充满自信,对公司的模式也很有信心,他也完全有理由按照 自己的想法做事。“如果Evernote是我创办的第一家公司的话,为获得融资,我当时可能就会听那些投资者的话,从而转变公司的商业模式。”

文章来自 36氪

Spring MVC 3.2 将支持 Servlet 3 异步请求

来自 Spring 官方博客的消息:

Spring MVC 3.2 M1 将引入对异步请求处理的支持,基于 Servlet 3.0 规范。尽管该版本还没发布,你可以在这里看到包含的改进。

简单预览一下:

一个控制器方法可通过返回 Callable 来完成异步处理:

@RequestMapping(method=RequestMethod.POST)public Callable<String> processUpload(final MultipartFile file) {   return new Callable<String>() {    public Object call() throws Exception {      // ...      return "someView";    }  };}

或者控制器方法返回 DeferredResult (new in Spring 3.2 M1) 来完成处理

@RequestMapping("/quotes")@ResponseBodypublic DeferredResult quotes() {  DeferredResult deferredResult = new DeferredResult();  // Add deferredResult to a Queue or a Map...  return deferredResult;} // In some other thread..// Set the return value on the deferredResult deferredResult.set(data);

 

更多关于 Spring MVC 3.2 新特性以及详细说明请看这里

ZIP, 一个没落天才的故事

新闻来源:citydog

ZIP,一个没落天才的故事,Phil Katz不愿意为一个压缩软件付钱,就索性自己写了一个更好的算法,然后无偿公开。2000年4月14日,他被发现死于一家汽车旅馆,年仅37岁,死时手中握着一个空酒瓶。他留下了zip算法,却没有留下一张像样的照片。 久违了的zip在你的脑海里还能占据多少空间?或许,你跟本就把它忘记了。

记得刚上大学的2001年,在电脑报上看到过一篇介绍Philip Katz的文章,那时,我才知道,原来zip是曾经是那么的“不可一世”,那么广泛的被使用着。

Winzip的创始人是Philip Katz。用Ultraedit打开任一个zip文件,可以看到文件最前面PK两个字母,这便是zip文件格式的创始人Philip Katz的名字缩写。

在19年前,也就是公元1988年,那时候互联网还刚刚开始有了雏形,而最流行的是一种使用电话线拨号登陆别人在家里搭建的服务平台——交换信息的电 子公告牌(BBS)系统。这种系统有些类似现在的论坛和新闻组,由于站长之间互相转信也成为了一个庞大的信息网络(惠多网)。

老一点的网虫可能都有印象,在没有 Internet的年代,中国大地上也曾有几十个这样的BBS存在,著名的字处理软件WPS的作者求伯君和CCED的作者朱崇君当年都是非常有名的个人站长。

由于电话线的接入速度慢的可怜,通过BBS传输较大文件实在是叫人痛苦的一件事。于是,使用文件压缩技术减小文件的体积并将多个文件压缩到一个封包中 就成为了BBS用户的一项必须掌握的技巧。当时的美国BBS上,比较流行的是一种叫做ARC的压缩技术,由于它是一家商业公司开发的压缩技术,使用这种软 件进行工作是需要付费的。那时候的菲利普·卡兹是一个沉迷于BBS 上的毛头小伙,由于经常混迹于BBS上,对于ARC的收费非常不满的他自己开发了一个程序叫PKARC,这个程序与ARC完全兼容,可以压缩和解压缩 ARC文件。这样一来,大批的ARC用户自然转而使用菲利普·卡兹的免费软件。ARC的制作公司一怒之下将菲利普·卡兹告上了法庭,法庭自然判决菲利普· 卡兹禁止继续开发和传播PKARC。这种判决并没有磨灭菲利普·卡兹的斗志,而是激起了他要与ARC斗争到底的决心。在虚拟的世界中,自由、平等永远是真 正的程序员永久的追求。

他放弃了PKARC的开发,发誓要写出一款比ARC更好的压缩软件来打败ARC。这一场官司造就了一名编程天才的横空出世,也造就了一个后来在互联网 时代的文件标准。几周以后,后来统治整个BBS世界乃至Internet世界的ZIP在菲利普·卡兹手中发出了第一声响亮的啼哭!

不名则已,一鸣惊人,这种名为PKZIP的程序可以将一个或多个文件压缩到一个后缀为“.zip”的文件中,无论从压缩比、压缩速度方面都超过了商业 软件 ARC。卡兹将PKZIP作为自由软件免费发放,使其如同草原上的星星之火般在全美的各大BBS上蔓延开来,用户以几何级数的增长,各大BBS的站长自发 将原来使用ARC格式压缩的文件转换成ZIP格式,卡兹用他天才的头脑和顽强的毅力堂堂正正的击败了ARC,ARC的制作公司在PKZIP的强大攻势下很 快就消声匿迹了。用自由软件打败商业公司的传奇故事很快传遍了整个BBS世界,疾恶如仇而又身手不凡的菲利普·卡兹如同数字世界的大侠般仗剑江湖,劫富济 贫,以一人之力擎起了压缩软件的大旗。

此后卡兹一直继续着对 PKZIP的开发和维护工作,PKZIP建立和统治了DOS时代的压缩标准。直到Windows的诞生,使用卡兹创造的压缩算法的软件Winzip的出现更使ZIP格式成为Internet的传输标准,ZIP压缩格式也成为压缩文档的事实标准。

PKZIP及其“克隆”作品Winzip成为Internet历史上最有名的共享软件之一,ZIP压缩格式也成为压缩文档的事实标准,建立起一个统治 Internet的“ZIP王朝”。菲利普·卡兹为世界贡献了一个伟大的共享软件,而他自己却几乎没有从中获得任何好处!因为从一开始,ZIP就是为了反 抗收费的PKARC“而生”的。

但是,不良的生活习惯,长期巨大的精神压力,导致了潦倒无助的他在2000年的4月14号,死在了美国威斯康星州密尔沃基的一家汽车旅馆里,死时,手里还紧握着一个烈性酒的酒瓶。

Philip Katz从未在ZIP身上得到半点好处,坚持信念的结果往往是潦倒的生活,糟糕的个人生活和长期编写软件的巨大压力使卡兹染上了酗酒的恶习,最终断送了他 那年轻的生命。他为世界贡献了一个伟大的免费软件,更为重要的是他缔造了一种大众化的压缩格式,然而却过早地离开了这个世界。

就在Philip Katz去世的前后,ZIP的最大对手:WINRAR,正在悄然崛起。当时Winzip早已稳坐压缩界头把交椅,但随着2.7版本的出现,Wrar却日益 壮大,两者斗争得异常激烈(注:与Winzip一样,其实早在DOS时代,就存在RAR的DOS版本,只是RAR在DOS时代敌不过只能用命令行的 ARJ,到了Windows时代又招架不住WinZip的进攻,皆因RAR压缩率低和速度慢,并且RAR压缩格式以前一直缺少其它软件的支持,导致 WinRAR都未能广泛流行)。

就当时两者的性能而言,Winzip压缩只支持ZIP格式,解压缩支持ZIP、CAB,还有TAR、GZip、UUencode、XXencode、 BinHex、MIME等几种Internet常用格式(可以看出WinZip的重心之所在),ARJ、LHA和ARC则需要相应的外挂程序。但 WinZip跟Windows资源管理器结合得很紧密,最常用的压缩和解压缩操作已集成到鼠标右键菜单中,点按右键即可轻松完成压缩解压缩。并且增加了不 少人性化的功能如E-mail功能,分卷压缩,密码加密等;那Winrar又凭什么与其争锋呢?答案是格式支持与功能!WinRAR压缩格式支持自家的 RAR和ZIP(即可“兼容”ZIP),解压缩支持RAR、ZIP、CAB、ACE、ARJ、LHA、TAR、GZip、UUE,基本上常用的都有了。 WinRAR在界面上类似WinZip在功能上基本是WinZip有的它都有,甚至有好多比WinZip还更好更强大。如有特色的”Repair archive”功能甚至可以修复损坏的zip文件;”Convert archive to SFX”功能把RAR和ZIP文件转换成自解压文件,同WinZip不同的是,在压缩时就可以直接存为自解压文件…取对手之精华,并改进之,这就是 Winrar敢于与压缩界龙头叫板的原因。

或许到了这里,你会问:为什么zip不去支持rar呢?这样竞争不就“公平”了吗?但我告诉你的是:zip格式是开放的,任何压缩软件都可以免费使 用,RAR是RARLab的专利算法,其它软件要想提供对Rar格式支持必须交纳费用以获得授权,如果winzip想要支持zip,就必须向rarlab 付费,这根本就是拿自己的血汗去喂饱对手。我们须明白:winzip和winrar都是共享软件,中国人用惯了盗版的winrar,以为rar才是压缩格 式的王道,如果自以为全天下的压缩软件都应该支持rar格式,那么只能说这是一种极其荒谬的认知。

虽然ZIP仍然是压缩文件的标准格式,但随着WinRAR的功能越来越强大,并且对ZIP的兼容性和ISO镜像文件的支持,固步自封的WinZip已 经逐渐开始被网民们所遗忘。面临被打倒,昔日的强者做出了最后的反击–Winzip9.0。2004年发布的Winzip9.0是Winzip公司在 02年后两年内第一次发布的Winzip软件更新,可见这次Winzip反击的决心。本版本的Winzip带来了很多新的功能特性,如:加密标准提高,支 持符合AES技术的128位和256位的高级加密标准;支持64位扩展技术;内置了先进的“真空”压缩算法(Enhanced Deflate)等。这一切都是针对WinRAR 3.30,誓求夺回压缩界的王座。

可惜就像乔丹的最后出场一样,也许真的是老了,我们再难看到英雄昔日的光彩。

WinZip 9.0对压缩格式的支持并没有什么增加,支持原有的18种压缩格式,但仍然不支持ISO这一非常流行的镜像文件格式,并且最大的问题是不兼容RAR,这就令许多用户敬而远之了;相对而言,WinRAR 3.30目前的压缩格式虽然只有15种,但由于兼容ZIP和支持ISO,仅仅这两条就使不少WinZip的老用户心动神移了。

随着绝唱反击的失败,于2005年7月,WinZip被Vector Capital收购。

也许在天之灵的Philip Katz并没有想到有这一天,作为下载量达到1亿4000万次,成就压缩标准zip的Winzip计算公司好象没有考虑过用其技术来赚钱的事(实际上很少 有人会在WinZip试用期过后支付29美元购买正版授权,因此WinZip至今都没有获得太多利润)。它为大家提供一款如此经典的压缩软件,曾经,它是 何等辉煌,但如今却威风难再。或者正如歌词所说:”想回到过去,试着让故事继续,至少不再让你离我而去…”

20 个免费好用的 WordPress 插件

Peter’s Collaboration E-mails

这个插件加强了电子邮件协作功能。 

EDITORIAL CALENDAR

这个插件能让你通过在日历上拖拽的方式控制你的每个博文什么时候发布。

Content Audit

这个插件可以创建WordPress编辑屏幕右边的内容,可以标记内容为多余的、过时的、琐碎的或者为SEO做风格优化,只有管理员可以看到。

Edit Flow

Edit Flow能够让你的编辑团队在WordPress内协同工作。

Codepress Admin Columns

通过拖拽自定义管理界面的的管理功能列表

WordPress Tweaks

一个很强大的插件,可以让你很方便的对WordPress进行各方面的设置。

Event Organiser

这个插件可以为你的WordPress网站增加事件管理功能。

Custom Admin Branding

这个插件允许你自定义用户或自己的WordPress管理界面,可以自定义登录界面的样式。

Private Messages For WordPress

站内消息插件。

Dashboard Notepad

记事本插件。可以设置哪些角色可以编辑,哪些角色只读记事本。

Pricing Table

显示页面或文章内容的价格

Email Address Encoder WordPress Plugin

电子邮件地址编码插件

User Spam Remover

自动管理并删除哪些老的、从不使用的账户。它保留了备份,删除后还可以恢复。

WP-CMS Post Control

完全控制各种用户/角色的发布权限。

User Role Editor

编辑用户角色

ThreeWP Activity Monitor

显示用户动作和网站情况,让管理员知道博客或网站是否正常运行。

WP-DBManager

数据库优化、修复、备份、恢复、删除备份、删除/清空表和执行查询,支持计划任务。

W3 Total Cache

缓存插件,可以提高网站的性能。

Simple:Press

论坛功能插件

User Switching

用户切换插件。点击按钮后你会被立刻注销并登陆为你设置的用户。

 

原文链接/OsChina.NET编译