GaoWhen高H温

「文不能测字 武不能防身」

离家有多远

有时候从地铁出来,偶尔碰到同事同行去公司的时候,会找点儿话题打发那段不长不短的尴尬时间。说到住哪里的时候,不可避免的要问到「离家有多远」。

开始

「离家有多远?」

「一个半到两个小时。」

闷头走路…

闷头走路…

闷头走路…

到达公司…

IE下img多余5像素空白

IE下img多余5像素空白

版权所有,转载请注明出处,多谢!

嗯,开场先胡扯几句不相关地感言。最近的工作让我有了很多实践的机会,同时也让我收获颇丰。在群里聊天的时候也提到过,所有的学习过程,最好是理论-实践-再理论-再实践。。。的一个循环往复的过程。这里说的理论是个比较宽泛地概念,其中包括书本理论,也包括对实践地总结。只有理论没有实践,往往造成眼高手低,想得好,做得差;只一味地实践却不通过理论地学习和总结,看起来好像忙忙碌碌,到头来会两手空空。

最近地实践中,越来越觉得 li 元素中包含 a img 元素的时候会比较麻烦,需要注意,当然,问题还是一如既往的出现在 IE 下。以下为其中一例:

html


css
ul{
    width: 280px;
}
ul li{
    display:block;
    height:57px;
    width:277px;
}
其中 temp.jpg 尺寸为 277×57 Firefox 下的正常表现: ![demo-ff](/images/) IE6 下的非正常表现: ![demo-ie](/images/) 很明显地可以看到 IE 中,li 的表现高度,并非我们设定的 57px,而是比其要高,这是因为 img 下面多出了 5px 的空白。 ## 解决方法 一 使 li 浮动,并设置 img 为块级元素
ul{
    width: 280px;
}
ul li{
    float:left;
    display:block;
    height:57px;
    width:277px;
}
img{
    display: block;
}

解决方法 二

设置 ul 的 font-size:0;

ul{
    width: 280px;
    font-size: 0;
}
ul li{
    display:block;
    height:57px;
    width:277px;
}

解决方法 三

设置 img 的 vertical-align: bottom;

ul{
    width: 280px;
    font-size: 0;
}
ul li{
    display:block;
    height:57px;
    width:277px;
}
img{
    vertical-align:bottom;
}

解决方法 四

设置 img 的 margin-bottom: -5px;

ul{
    width: 280px;
    font-size: 0;
}
ul li{
    display:block;
    height:57px;
    width:277px;
}
img{
    margin-bottom: -5px;
}
可以下载 demo 来看

Mercurial Hg 的配置文件 hgrc

其实 hgrc 里面的配置选项是有很多的,这里只列出了目前我配置到的一些选项。

环境

这里默认说的都是 Mac 环境。

简介

用过 vi/vim 的大概一看就知道这是 Hg 的配置文件。

文件

  • 每个系统的配置文件

    • 路径 <install-root>/etc/mercurial/hgrc 或 <install-root>/etc/mercurial/hgrc.d/*.rc
  • 每个用户的配置文件

    • 路径 $HOME/.hgrc
    • 每个项目的配置文件

    • 路径 <repo>/.hg/hgrc

    • 每个项目自己的配置文件里面的配置会覆盖掉以上两个的配置。
    • 这个文件不在版本控制之内,不会随 clone 操作被传送出去,因此里面的配置信息(尤其是密码)是安全的。

##

Javascript的私有成员

对象

Javascript 根本上是和对象相关的。数组是对象。函数是对象。对象是对象。那什么是对象呢?对象是名-值对的集合。名是字符串,值可以是字符串,数字,布尔值或者对象(包括数组和函数)。通常对象是像哈希表一样执行地,这样便于值地快速检索。

如果值是函数,我们可以认为这是一个方法。当一个对象地方法被调用的时候,this 变量就设置为这个对象。方法就可以通过 this 变量来访问实例变量。

对象可以由用来初始化对象的构造函数生成。构造函数提供了其他语言中类所提供的特性,包括静态变量和方法。 公共

对象的成员全部是公共成员。任何函数都可以访问、修改或者删除这些成员,或者增加新成员。有两种向新对象中添加成员的方法: 在构造函数中添加

这个技术通常用于初始化公共实例变量。使用构造函数的 this 变量向对象中添加成员。

这样,如果我们创建一个新对象:

<textarea class="code" rows="10" cols="50">var&nbsp;myContainer&nbsp;=&nbsp;new&nbsp;Container('abc');</textarea>

这样 myContainer.member 就包含 ‘abc’ 了。 在原型中添加

这个技术通常用于添加公共方法。当一个成员被检索并且没能在对象本身里面找到时,就要从对象的构造函数的原型成员里面寻找。原型机制是用于继承的。也用于节省内存。向一个构造函数生成的所有对象中添加一个方法,只需要向构造函数原型中添加一个函数:

<textarea class="code" rows="10" cols="50">Container.prototype.stamp&nbsp;=&nbsp;function(string){

    return this.member + string;   }

因此,我们可以调用这个方法:

<textarea class="code" rows="10" cols="50">myContainer.stamp('def')</textarea>

结果为 ‘abcdef’。 私有

私有成员是由构造函数生成的。一般构造函数的变量和参数都是私有成员。

<textarea class="code" rows="10" cols="50">function&nbsp;Container(param){

    this.member = param;     var secret = 3;     var that = this;   }

这个构造函数生成了3个私有实例变量:param,secret 和 that。它们和对象相关联,但是它们不仅在函数外边不可访问,而且对对象自身的公共方法来说也是不可访问的。它们只可以被私有方法访问。私有方法是构造函数的内部函数。

私有方法 dec 检查 secret 实例变量。如果它大于零,将其减一并返回 true。否则返回 false。它可以用作限定对象使用3次。

按照习惯,我们设置了一个私有的 that 参数。它使得这个对象对于私有方法使可见的。在 ECMAScript 语言规范中,这是一个可行的错误,它使得 this 对于内部函数被不正确地设置。(This is a workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions.)

私有方法不能被公共方法调用。要想使得私有方法有用,需要介绍一下特权方法。 特权

特权方法可以访问私有变量和方法,并且其自身对于公共方法和对象外部都是可访问地。可以删除或者替换一个特权方法,但是不能改变它,或者强迫它泄密。

特权方法是在构造函数内使用 this 指定地。

service 就是特权方法。前三次调用 myContainer.service() 时会返回 ‘abc’。之后返回空(null)。service 调用了可访问私有变量 secret 的私有方法 dec。service 对其他对象和方法都是可见的,但是不能直接访问私有成员。 闭包

由于 Javascript 有闭包,因此这种公共,私有和特权成员模型时可以的。这意味着内部函数总是可以访问它外部函数的变量和参数,甚至在外部函数返回后也可以。这是这个语言一个非常有用的特性。目前没有任何关于 Javascript 编程的书描述了如何利用它。大部分甚至都不提及它。(糖伴西红柿说,这是2001年的文章,当时估计还没有这方面的研究文章。现在来说,犀牛书等都有涉及,javascript 的难点之一啊。)

私有和特权成员只在对象被创建时生成。公共成员可以随时添加。 模式 公共

私有

注意:函数语句

的缩写。 特权

糖伴西红柿说:

好久没露面,本来就没人记得我,这次更无名了。最近从高丽迁移回了天朝,嗯。而且正在为了工作进行最后的充电活动。生活中同时也遭遇到电视剧情节,还是高丽电视剧。这两天在主攻 Javascript 中几个比较难的知识点,闭包算是其中之一。两天看了好多关于闭包的文章,才有点开窍,这篇文章属于其中之一。算是个额外的参考资料,主要的是另一篇英文文章,有打算全篇翻译。

原文地址:http://www.crockford.com/javascript/private.html 译文地址:http://www.qianduan.net/?p=6580

记一件有意义的事

果然只能说今年犯太岁啊,最近陆续几次在凌晨的时候感到莫名的腹痛。疼痛一次比一次略重,因为我一贯吃较凉或者较辣的食物都会肠胃不舒服,而且症状很快也就消失了,所以起初一直以为是吃的不太合适。

直到周六早上5点不到,再次腹痛不止,而且比较清晰地感到不太像是肠胃问题的时候,觉得很可能问题比较严重,于是有了以下遇到的一些事情,和一些想法。