小记JavaScript享元模式

最下面是周五懒懒分享的PPT,不得不承认,强大如斯的keynote,也能让我做出这么丑的PPT。。

09年就买了《JavaScript设计模式》,前后看了几次(是“次”,不是“遍”),刚开始看没什么收获,后来随着编码经验、遇到的问题越来越多,看这本书也越来越觉得好。现在都快当成了工具书,遇到难题就去翻翻,常看常新。

设计模式是编码的最佳实践,它应用在两个层次:解决特定编码问题、设计程序架构

简单记录一下“享元模式”及其在解决特定问题上的应用。

应用场景

阅读全文 »

HTML邮件编码禁忌

今天做了两个HTML邮件模板,记录一下所得:

禁忌

1. 结构尽量简单,最好使用table布局

可以保证在CSS样式失效、或者html被禁用的情况下最大程度的还原布局和样式。

2. 不要使用<head>标签

一般会被过滤掉。

3. 不要使用JavaScript和Flash

正常情况下这个是绝对被过滤的。。

4. 使用内联CSS样式,不要引入外部CSS文件,不要使用<style>标签

Gmail等不支持style标签。

5. CSS禁忌:不要使用绝对定位,不要使用背景图片,不要使用半透明,不要使用IE滤镜和CSS表达式,不要使用CSS3属性……

6. 图片要添加alt属性,保证在禁用图片的情况下传递有效信息

7. 图片添加宽高属性

8. 不要试图使用iframe引入外部页面

9. 尽量精简代码,减少图片数量和体积

10. 一般使用UTF-8编码

邮件客户端/服务商对CSS支持情况

阅读全文 »

使用OpenCV开发iOS图像处理应用(To be continued..)

呃,OpenCV(中文)是Intel主导的开源图像处理函数库,基于C语言编写,是图像处理领域居家旅行必备、男女老少咸宜的开发库。

上学的时候用OpenCV做过图像处理方面的开发,现在刚接触iOS,了解了一下OpenCV在iOS平台的配置和开发方法,配置过程和遇到的问题简单做一下记录。

环境配置

OpenCV src

首先把最新版本的OpenCV代码下载或co到本地,比如我把OpenCV-2.1.0.tar.bz2解压到本地目录/work/src/OpenCV。

Xcode工程配置

阅读全文 »

“最被误解的语言”正焕发全新活力

这些内容最早出自6月份的一次团队内分享,后来圆心推荐发表在了8月的《程序员》杂志上。遗憾的是编辑自行作了很多删改,原文发在这里。

Douglas Crockford曾称JavaScript是“世界上最被误解的语言”。确实,很长一段时间里,JavaScript都曾是泛滥的网页特效和弹窗广告的代名词。近些年来,随着Ajax应用的流行和前端框架的发展,JavaScript已经越来越严格和标准化。同时,在前端领域之外,JavaScript 也正被越来越广泛的使用。下面我们通过几个简单的JavaScript语句,一起来了解这些领域的应用。

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8080, "127.0.0.1");

这几句代码大体可以看出,它们的作用为:在本地的8080端口监听请求,返回浏览器响应──没错,这是基于JavaScript的服务器程序 node.js( http://nodejs.org/)的一段控制语句。
node.js基于V8引擎(Chrome浏览器使用的JS解析器),它继承了 JavaScript的诸多特性,具备比Apache等传统服务端程序更好的性能和特性:I/O读写都经由V8引擎来处理,避免不良代码造成的死锁;更节省内存开支;处理并发请求效率更高;等等……

{"id": "036378",  "name": "etai", "job": "F2E" }

这是一句简单的JavaScript专用数据格式——JSON语句,但确切的说,它一种基于JSON的数据库存储格式——BSON,是最近流行的NOSQL(非关系型数据库)的一种存储形式,非关系数据库多采用kay-value形式,具备比关系型数据库更强的扩展性和可操作性,并且在海量存储、高并发读写方面有绝佳的表现。

var t = db.things.findOne( { name : “etai” } );

这句JavaScript语句的作用为:在以BSON存储的数据库中取得一条记录。它是著名的非关系数据库——MongoDB的一条查询语句。MongoDB基于C++开发,使用二进制格式存储BSON数据,可以对BSON中每个字段进行索引,具备极高的处理海量数据的能力。让人惊讶的是,它分别提供了基于十几种语言的查询语句和服务端、客户端,其中就包含对JavaScript的完美支持——MongoDB提供了基于Node.js的数据库服务器、基于SpiderMonkey的数据库客户端,以及JavaScript查询语句,并且提供了全功能的Web Shell。

JavaScript在这些领域的应用,已经不单单是停留在实验和玩票的性质,它们在国内外已经开始了大规模的使用。可以预见,在不久的将来,会出现这样的网站:它的前端使用JavaScript实现网页特效和交互,服务端运行的是基于JavaScript的Web服务器和数据库服务器,数据库使用JSON/BSON存储数据。

作为前端工作者,看到我们最熟悉的语言正在被这么多人、在这么多领域研究和使用,兴奋之余也倍感压力——越来越多的研究和关注,必然会促进这门语言更快的发展,同时也会变得更严格和严谨。这对前端工作者提出了更高的要求和挑战——与时俱进,不断超越!

IE6的position:fixed

手头一个项目中,要实现把一个浮层控制在浏览器窗口右下角,用”position:fixed”来控制最合适不过了。

但万恶的IE6不支持这个属性,之前采用过的方法有:将滚动条转移到body上,使用绝对定位控制浮层位置;使用JS实时判断滚动并设置浮层位置。

第一种方法局限性太大,页面中有其他绝对定位元素会受到影响;第二种方法需要在页面里加定时器,资源开销和时间成本都有点高。

后来在同事小卓的启发下,使用CSS表达式完成了IE6的兼容,代码如下:

_position:absolute;
_top:expression(document.documentElement.clientHeight - 213 + (e=document.documentElement.scrollTop) +'px');
/*
document.documentElement.clientHeight : 浏览器串口高度
200 : 浮层高度
(e=document.documentElement.scrollTop) : 滚动条高度
 */

CSS表达式虽然方便,但浏览器资源损耗仍然很大,要根据具体应用场合决定,“一切皆权衡”,哈~

Google App Engine、Twitter API Proxy、Mixero搭建Twitter环境

以前用Twitter都是通过代理访问网页或者使用第三方网站,今天安装了一个桌面客户端──Mixero,使用Google App Engine架设了一个Twitter API代理,就可以在桌面上随时看推发推了。网上一些假设教程不大准确或已过期,这里记录一下自己的操作过程。这些操作都是在MacOS下进行的,在Windows和Linux下也都类似。

Mixero

Mixero是一个优秀的Twitter客户端,基于Adobe Air,支持各种操作系统,并且有中文版本。

由于众所周知的原因,Mixero必须通过代理才能与Twitter连线,下面的繁琐的步骤都是拜GFW所赐,Let’s Fuck Them!

阅读全文 »

我的淘宝花名

很早就听说过淘宝的花名传统,阿里的一些牛人也顶着花名扬名立万。今天,我也在释然师兄的帮助下选取了自己的花名,过程有些遗憾,结果更多的是兴奋和期待。

一直以来都没有一个固定的网名,QQ上叫虫子,很多朋友叫我啊花,自己还常用j5726等。

接到淘宝的offer后,就开始考虑花名的事情。最先想到的是鱼同,《书剑恩仇录》中的余鱼同,是一个很纠结的人物,潇洒但专情、任性却正义。同《卧虎藏龙》中的玉娇龙一样,是一个有血有肉,让人又恨又爱的形象。很幸运,这个名字没有被占用,但又很不幸,系统中存在同音字,所以拼音ID冲突,不能使用。。

接下来,又让师兄帮忙试了我熟悉的几个人物,都被占用了。群里的朋友也帮着我出谋划策,结果一个个闪亮的名号都被无情的扼杀。

最后的最后,从系统推荐的名字中选了这个 ── 当当当当,“额台”!

速别额台,又称速不台,是成吉思汗时期蒙古的杰出军事家、战略家,曾攻陷莫斯科,占领匈牙利,戎马一生,直至老死在军营里。

八百年后的今天,在前端行业里也会出现这样一个“额台”,希望能像先人一样,矢志不渝,终生奋斗,在行业中留下自己的一笔。

以上自勉。

豆瓣,可以成为值得我们尊敬的互联网公司吗?

按照某种不成文的惯例,在开始之前,我不得不要再次论述一下 什么是豆瓣。当然,如果你自信足够了解,可以跳过下面的一小段引用文字。

豆瓣网成立于2005年3月26日,是一个典型的Web 2.0 网站。它提供社交服务和在线的音乐、书籍和电影数据库。在2008年,它拥有将近 1,200,000 名用户,并被  Alexa Internet 列入中国百家最受欢迎的网站之一(排名第74名)。  豆瓣允许用户为电影、图书和音乐评级。它的用户评选出的最受欢迎的图书常常被中国的一些顶尖媒体引用。

——引用自 kngine.com

一、写在前面

在众多的网络公司之中,大部分人都不得不提到其中一家最为著名、也是最为成功的公司—— Google 。没错,Google 作为最受欢迎的搜索引擎公司,它在其他领域的影响力也不可小视。当然,中国的互联网网站能够从它身上学到大量的东西。我个人认为, Google 成功的原因来自于以下三个方面:专注、开放、创新。

阅读全文 »

小白磨合 - 求职这些天的所思所得

终于娶回了梦寐以求的小白,用上了传说中程序员必用的MacOS。

好久没写东西了,打点字,顺带磨合一下新机器。

出来找工作好多天了,交流中、面试中遇到的很多问题都是自己从未考虑过的,从中想到了不少,学到了不少。

关于视野与极限

阅读全文 »