jQuery插件一枚-tooltips

昨晚上闲来无事,花了十分钟写了个jQuery的tooltips插件,也就是鼠标移到元素上时显示提示信息(tips)。没错,确实是十分钟,因为一来这个插件很简单,二来之前也写过类似的逻辑,只是没整理成插件而已。

先看下demo吧:demo, 对应的插件文件:tooltips.js

配置参数只有三个,鼠标移入移出时tips切换的速度,以及tips距离鼠标当前位置的xy距离。

注意的几个问题是:

  • 如果要显示tips的元素有title属性的话,应当设置为空,因为有tips的话就不需要再显示title
  • 一开始tips应当是隐藏的, 而且应该是绝对定位的,这个应当是写在css中的,但是为了容错性在插件内也重置了一遍
  • tips虽然也可以是多个元素,但是因为位置一样的话后面的会覆盖前面的,不推荐

别的没什么可说的了,也就是无法确定当前有没有调用noConflict(),所以要使用jQuery,但是在闭包内仍然可以使用$.

转-字符编码那点事儿

到了人民群众喜闻乐见的科普文了,这是winter大神的一篇博客,原文地址:字符编码那点事,原文内容如下

那时,天下人的口音、言语,都是一样。他们往东边迁移的时候,在示拿地遇见一片平原,就住在那里。他们彼此商量说:“来吧!我们要作砖,把砖烧透了。”他们就拿砖当石头,又拿石漆当灰泥。他们说:“来吧!我们要建造一座城和一座塔,塔顶通天,为要传扬我们的名,免得我们分散在全地上。”耶和华降临,要看看世人所建造的城和塔。耶和华说:“看哪!他们成为一样的人民,都是一样的言语,如今既作起这事来,以后他们所要作的事,就没有不成就的了。我们下去,在那里变乱他们的口音,使他们的言语彼此不通。”于是,耶和华使他们从那里分散在全地上;他们就停工不造那城了。因为耶和华在那里变乱天下人的言语,使众人分散在全地上,所以那城名叫巴别。

——《创世记》

Read More

超文本传输协议的翻译错误

HTTP 1.0协议(RFC1945)是在1996年5月发布的,其中文名“超文本传输协议”估计大约也是在1996年左右诞生的。从此以后,这个名称就被固定了下来,一直沿用到今天。

但非常遗憾,这是一个错误的翻译,而且错误的性质很严重。具体来说,就是将“Hypertext Transfer Protocol”其中的“transfer”翻译错了。不应该将“transfer”翻译为“传输”,而应该翻译为“转移”或者“传递”。“传输”的英文单词应该是“transport”,而不是“transfer”。其实如果最初的译者确实曾经认真读过一些互联网协议,例如HTTP协议、FTP协议等等,就会很容易地发现,在这些协议中,“transfer”和“transport”的含义有明显的区别,根本无法混用。虽然IETF的RFC在格式上比ITU-T的那些规范要自由地多,但是RFC的作者都是非常严谨的,在术语的使用上面很少出现因混用导致的歧义。

在IETF的RFC中,“transport”(传输)的含义是指:从端到端(例如从ip1:port1到ip2:port2)可靠地搬运比特,也就是TCP/IP协议栈中的第3层传输层(transport layer)协议所做的那些事情。将“transport”翻译为“传输”,100%正确!

而“transfer”的含义是:通过在客户端-服务器端之间转移一些带有操作语义的操作原语,来执行某种操作。“transfer”是TCP/IP协议栈中的第4层应用层的概念,而不是第3层传输层的概念。“transfer”所转移的是带有明确操作语义的操作原语,而不是没有操作语义的比特流。

了澄清这个问题,HTTP 1.1协议的主要作者Roy Fielding在其2000年发表的博士论文《Architectural Styles and the Design of Network-based Software Architectures》(中文版名为《架构风格与基于网络的软件架构设计》)的6.5.3小节中专门强调:HTTP并不是一种传输协议,其具体内容是:

HTTP并不是被设计为一种传输协议(transport protocol),它是一种转移协议(transfer protocol)。在HTTP协议中,消息通过在那些资源的表述上的转移和操作,来对资源执一些动作,从而反映出Web架构的语义。使用这个非常简单的接口来获得广泛的功能是完全有可能的,但是必须要遵循这个接口,以便HTTP的语义被保持为对于中间组件是可见的。

这就是为何HTTP可以穿越防火墙的原因。大多数当前提议的对于HTTP的扩展,除了WebDAV以外,仅仅使用HTTP作为一种使其他的应用协议穿越防火墙的方法,这从根本上来说是一种有误导性的想法。不仅仅是因为这种扩展方式挫败了拥有一个防火墙的目的,而且从长远来看它将无法工作,因为防火墙的厂商将会不得不执行额外的协议过滤。因此这种扩展方式对于那些在HTTP之上的扩展而言是没有意义的,因为在这种情况下HTTP所完成的唯一的事情就是添加了来自一个遗留语法的负载(译者注:即添加了额外的 HTTP 协议负载)。一个真正的HTTP应用应该将协议用户的动作映射到能够使用HTTP语义来表达的某个事物,以这种方式创建一个基于网络的API来提供服务,能够被用户代理和中间组件所理解,而不需要知道关于应用的任何知识。

BFC-块格式化上下文

Block Formatting Context(块格式化上下文)是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。

在创建了 Block Formatting Context 的元素中,其子元素会一个接一个地放置。垂直方向上他们的起点是一个包含块的顶部,两个相邻的元素之间的垂直距离取决于 ‘margin’ 特性。在 Block Formatting Context 中相邻的块级元素的垂直边距会折叠(collapse)。

在 Block Formatting Context 中,每一个元素左外边与包含块的左边相接触(对于从右到左的格式化,右外边接触右边), 即使存在浮动也是如此(尽管一个元素的内容区域会由于浮动而压缩),除非这个元素也创建了一个新的 Block Formatting Context 。

这是W3C关于BFC的一个解释,看起来比较蛋疼是吧,另一个通俗点的解释是:在普通流中的 Box(框) 属于一种 formatting context(格式化上下文) ,类型可以是 block ,或者是 inline ,但不能同时属于这两者。并且, Block boxes(块框) 在 block formatting context(块格式化上下文) 里格式化, Inline boxes(块内框) 则在 inline formatting context(行内格式化上下文) 里格式化。任何被渲染的元素都属于一个 box ,并且不是 block ,就是 inline 。即使是未被任何元素包裹的文本,根据不同的情况,也会属于匿名的 block boxes 或者 inline boxes。所以上面的描述,即是把所有的元素划分到对应的 formatting context 里。

那BFC到底是啥?就是一个作用范围。可以把它理解成是一个独立的容器,并且这个容器的里box的布局,与这个容器外的毫不相干。

看看BFC的触发条件

  • float不为none
  • overflow不为visible (IE6无效)
  • “display”的值是”table-cell”,”table-caption”,或”inline-block”
  • “position”的值既不是”static”也不是”relative”
  • IE的hasLayout会触发一个新的block formatting context

而BFC的特性是

  • 不存在collapsing margins问题
  • 边缘不会和float box重叠

Read More

互联网如何毒化了我们的大脑

互联网吸引我们的注意力,只是为了分散我们的注意力

“正当我们在新闻网站上浏览最新焦点新闻时,突然收到一条信息,提醒我们有新邮件到达。几秒钟之后,RSS阅读器又告诉我们,自己最喜爱的博主刚刚上传了一篇新博文。没过一会儿,手机铃声又响起了,原来有短信送达。与此同时,Facebook和Twitter网站的用户头像也在不停地闪烁。除了通过网络传输获得的各种内容,我们还可以随时在自己的电脑上运行其他的软件程序 这些东西也在争先恐后地抢占我们的注意力。”

这是《互联网如何毒化了我们的大脑》这本书里的一段话,这段话放到天朝估计也一样适用,而且天朝的网站给我们的干扰不止于此,我想大家都是有所体会的。传媒即信息,媒介的技术性变革会决定性地改变人的思维方式,互联网带给了我们新的思维方式

作者的感觉,凡是使用互联网的人都有:“以前我很容易就会沉浸在一本书或者一篇长文当中。观点的论证时而平铺直叙,时而急转直下,二者交织推进,把我的思绪紧紧抓住。即使是索然无味的长篇大论,我也能花上几个小时徜徉其间。但现在这种情形已经很少见了。现在看上两三页,注意力就开始游移不定,我就会感到心绪不宁,思路不清,于是开始找点别的事做。我感觉就像拼命把自己天马行空的思绪拉回到文本上来一样。过去那种自然而然的精读如今已经变成了费力挣扎的苦差事。”

至少从我的角度来看,作者的看法是非常准确的,现在觉得自己的注意力越来越难以集中了,总是想同时做很多事情,越来越想速成,尤其是学技术的时候,感觉自己太浮躁了。以前我们需要知识,可以去图书馆呆上一天,翻阅各种书籍,现在只需要搜索引擎打上关键字,久而久之,我们开始丧失我们的人性,思维的深度甚至无法超过围脖的140个字

“人的大脑是高度可塑的”,当然,这种可塑性,人自身是察觉不到的。不过今天,你终于“察觉”到了:你时常会觉得耳鸣、目涩,注意力无法集中;你懒于记忆,习惯于张口就问;你不喜欢冗长的陈述和表白,喜欢直奔主题和搜寻答案。平心静气,全神贯注,聚精会神,这样的线性思维正在被一种新的思维模式取代,这种新模式希望也需要以简短、杂乱而且经常是爆炸性的方式收发信息,其遵循的原则是越快越好。

我失去了以前的大脑。或许我同时也得到了一些东西,但是我还是抗拒这些改变,虽然很难,但我还想深深沉浸到一本书,一首歌,或者一段代码中

第 1 页,共 8 页12345...最旧 »
返回
顶部