2010年03月Archive for

开发的第一课 – License

许多开发者和设计者希望把他们的作品作为开源项目共享,他们希望其他人能够利用和共享他们的代码。 而各种开源社区就是因为这个原因而充满活力。开源软件可以用于你能想象得到的任何应用程序,许多web设计人员使用开源软件作为开发基础(例如WordPress,Drupal等等许多CMS系统都是开源的)。

但是许多开发者和设计者并没有对开源License有清楚的了解,不清楚当他们选择开发自己的源代码时,他们有什么权利。如果不知道明确的License的内容,他们就不知道如何做出最明智的选择,如何做对他们最有利。

对于中国的开发者来说,因为中国发达的盗版文化,泛滥的盗版软件,大部分人恐怕都完全没有License或者版权这个概念,都是奉行拿来主义。如果我们一直都是这样的话,中国软件何来进步。所以对于国内的开发者来说,第一课就是应该学习如何使用和遵守License。

什么是License

许多混乱就始于你不知道License到底是什么,到底有什么含义。当你对你的产品使用License时,并不意味着你放弃了任何权利,你依然对其拥有原著作权。License只是授予他们于特定权利来使用你的产品。

License只是把你的作品释放到公有领域,或者给各个拷贝赋予权限。也意味着你放弃了版权收入,别人也没有义务把你列为原作者或贡献者。

开放源代码许可协议更容易为他人作出贡献,而不必寻求特别的许可。它也可以保护你作为原创者的权利,至少确认了你的贡献。它还可以保证你的工作不为别人所剽窃。

GNU General Public License

GNU General Public License (GPL)的可能是开源项目最常用的许可证。GPL赋予和保证了开源项目开发者广泛的权利。基本上,它允许用户合法复制,分发和修改软件。 这意味着你可以:

  • 复制软件

    复制软件到自己的服务器,客户端的服务器,你自己的电脑,几乎任何你想要的地方,而且没有数量限制。

  • 发布软件

    发布你想要的软件,例如,在你的网站提供下载链接,刻成光盘,打印出来等等。

  • 收取费用

    如果你想在向别人提供软件时收费,如设置在别人的网站上或者其他用途时。GPL允许你这么做,但是你必须给客户提供一个GPL副本,告诉他们可以在其他地方得到免费版本。当然最好在此之前,告诉客户,你为什么收费。

  • 可以任意修改

    如果你想添加或删除功能,没问题。如果想在其他项目中使用部分代码,也是可以的,但是唯一的限制是此项目也必须按GPL发布。

商业软件不能使用GPL协议的代码。

GNU Lesser General Public License

CSS生成跨浏览器的阴影效果

阴影效果是web开发中一个头疼的问题,和生成圆角一样,都是web开发中经常用到的,虽然实现麻烦,但是效果不错,所以客户经常要求有阴影效果。

我做过各种各样的阴影效果,有给整个站点的body添加阴影效果的,有给某个div实现的,其大部分都是用图片生成的,很难定位,而且添加了不少的div专门用于添加图片,维护起来太麻烦了。经常是为了修改其他的layout问题,而把阴影效果弄的面目全非。

现在好了,我找到了一种简单的用CSS生成阴影的方法,大家看看下面的例子:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

简单地利用CSS实现立体效果

Hello

上面的例子只用了几行CSS就实现了3D的重影效果,简单高效,但是只有IE8,Firefox,Chrome支持它。

话说CSS的优先权

CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。

发现很多朋友对 CSS 的优先权不甚了解,规则很简单。需要说明的一点,如果你的样式管理需要深层判断 CSS 的优先权,更应反思自己的 CSS 代码,是否合理?是否优化?

CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。

Specificity 具体的计算规则:

  • 元素的 style 样式属性,加 1,0,0,0。