淘宝网C2C急招前端开发工程师

前端开发工程师(非实习岗位)

要求:
1.已把前端作为自己的职业发展的方向;
2.精通各种Web前端技术,包括XHTML/XML/CSS/Javascript/ActionScript等(JS和AS之一即可);
3.有基于Ajax或Flash的RIA应用开发经验;
4.理解 Web 标准,对可用性、可访问性等相关知识有实际的了解和实践经验;
5.至少精通一门非Web前端脚本的语言(如Java/PHP/C++),并有项目经验;
6.个性乐观开朗,逻辑性强,对前端有自己的想法,善于和各种背景的人合作;

有意向的可以准备好简历发邮件到:zhanyan@taobao.com

杭州,搜道网,招聘前端开发工程师

杭州,搜道网,招聘前端开发工程师

岗位职责:
负责搜道网(http://www.sodao.com/)的前端代码实现及前端性能优化。
任职要求:
1.熟练编写结构良好的语义化的(x)HTML和浏览器兼容的CSS;
2.熟练使用javascript,编写高性能的javascript代码,以及浏览器兼容性经验,熟练使用jQuery框架;
3.了解HTML5和CSS3,能够并乐于把它们优雅降级地运用在实际项目中;
4.注重用户体验,喜欢不断重构优化你的代码,对可访问性有所了解;
5.有良好的团队合作精神。
简历发至:admin[a]css88.com,标题注明“应聘前端开发工程师”
简历请附您的作品或网址。

职责包括无线前端,HTML5,CSS3,还有web app开发

JavaScript闭包详解【1】

闭包就是一种在函数内访问和操作外部变量的方式,一般情况下,我们会在函数外部定义一些变量以供函数内部使用。

var a = 1;
function fn( arg ){
 var b =2;
 function fnInner ( arg ){
 console.log(a); //访问全局的变量
 console.log(b); //访问外部函数体内的变量
 console.log(arg); //访问函数自身的变量
 }
 fnInner(3);
}

fn函数的闭包引用了变量b,还有函数本身。fnInner函数引用了b,a,传递给它的参数。我们需要注意一点,虽然函数并没有特别创建一个变量来保存这些要引用的数据,但是要保存和引用这些变量还是会带来内存的消耗。

私有变量

JavaScript语言本身并没有提供创建私有变量的方式,但是我们知道,函数外的变量是无法访问函数内部的变量的,这意味着我们可以这样创建私有变量:

function(){
 this.public = 1; //public在函数外面可以访问
 var private = 1;//private变量在函数外部无法访问
}

回调函数和定时器

有时候我们会这样写一个回调函数

var a = 1;
jQuery.ajax({
 url : "test.html",
 success : function(html){
 console.log(a); 
 }
})

类似的的还有在设置定时器的时候,我们在1000ms后将一个函数插入队列等待执行

var a = 1;
setTimeout(function(){
 console.log(a);
},1000);
a = a + 1;

ajax回调里的结果可能比较容易猜到,匿名函数本身是一个闭包,保存了变量a的值,从而可以访问。而第二个定时器回调主要要说明的就是,闭包所引用的值是在执行期生成的,而我们虽然在a = a+1前面定义了匿名函数,但是执行的时候因为匿名函数被插入到执行队列的尾部,那么a = a +1会先执行,然后在执行匿名函数,也就是说这个例子返回的值为2。

改变闭包的context

有这么一段代码

var Button = {
  click: function(){
    console.log(this);
    this.clicked = true;
  }
};
var elem = document.querySelector("body");
elem.addEventListener("click", Button.click, false);

我们的目的是通过点击body来改变Button对象的clicked值,但是失败了

虽然我们在定义的时候试图让this指向了Button,但是在addEventListener之后,this又被指向到elem。

解决方法有很多。

在支持Function.prototype.bind方法的浏览器里,我们只需要简单地修改一下代码即可

var Button = {
  click: function(){
    console.log(this);
    this.clicked = true;
  }
};
var elem = document.querySelector("body");
elem.addEventListener("click", Button.click.bind(Button), false);

注:Function.prototype.bind方法参考ECMAScript 262 15.3.4.5中的说明,作用和apply类似,但是不会执行原函数

如果不支持Function.prototype.bind,那么,我们可以自己实现一个bind函数。

function bind(context, name){
  return function(){
    return context[name].apply(context, arguments);
  };
}
var Button = {
  click: function(){
    console.log(this);
    this.clicked = true;
  }
};
var elem = document.querySelector("body");
elem.addEventListener("click", bind(Button, "click"), false);

本文参考自John Resign的《secrets of the JavaScript ninjia》

重要么?不重要么?

“事情永远没有你想象的那么糟糕”

“当然,事情也没有你听到这句话后想的那么美好”

“关键是,花时间去考虑这个事情有多糟糕或者多美好,重要么”

很多人问我为什么不去淘宝,而是选择不被人看好的阿里云

人是一些因素,但在这两个地方,人的因素其实是对等的,展炎三七大蒜由校大豆

在做选择的那几天,我被自己给困住了

选择哪个并不显得那么重要,关键还是能否坚持做下去

团队氛围不好并不重要,作为团队的一员我完全可以把这个事情承担下来

为公司成就产品,为个人成就能力

是么?不是么?

未来才刚开始

20111207

node.js开发的桌面应用TermKit介绍

最近和团队翻译Node的书,《node web development》,同时也顺带好好学习了下nodejs。刚好展炎要搞个关于nodejs开发桌面应用的分享,就一起看了下相关的知识,那自然,就发现了TermKit这个标志性的应用。

TermKit介绍

【下面内容参考自http://acko.net/blog/on-termkit

长久以来,大家都习惯了在linux下使用terminal控制系统的方式

termkit 1 node.js开发的桌面应用TermKit介绍

像我这样的超级不专业linux人士,是这样的

1 node.js开发的桌面应用TermKit介绍

这个时候,steven wittens出现了,并为macox写了一个很有趣的东西,可以称之为下一代的富媒体终端。它可以在终端中用图形化元素来显示命令结果。

就像下面这样:

termkit 2 node.js开发的桌面应用TermKit介绍

带自动补全,还有各种看起来很舒服的图标。

termkit 5 node.js开发的桌面应用TermKit介绍

如何安装

在mac里怎么安装我就不介绍了,这里只介绍linux下的安装

首先,我们需要安装nodejs,这里要注意,推荐安装0.4.* stable版本,新版本可能会有不兼容的问题,不管你信不信,反正我装0.6.1的时候挂了。

还有就是connect的版本要在1.2.0到1.3.0之间,不包括1.3.0。

具体就是这样:

wget http://nodejs.org/dist/node-v0.4.8.tar.gz
cd node-v0.4.8
tar -xf node-v0.4.8
./configure
make && make install

安装好node之后安装npm

curl http://npmjs.org/install.sh|sh

之后就是下载termkit并安装

git clone https://github.com/Floby/TermKit.git --recursive
cd TermKit/
npm install

然后就可以启动了,这里要注意的是,我们需要在TermKit目录下进行启动操作:

node Node/nodekit.js

启动后terminal里会显示运行的log,然后就可以把注意力放到浏览器上了。

当然,因为客户端是浏览器,服务端是node的情况下,socket.io就是一个必不可少的模块了,这些在npm安装的时候会按照依赖关系自动加载好。而socket.io会优先选择websocket作为数据交换的通道,所以推荐大家使用chrome来作为终端。

整体架构是这样的

termkit 9 node.js开发的桌面应用TermKit介绍

更多内容可以看作者写的文章:http://acko.net/blog/on-termkit