前端工程师(javascript)
工作地点: 北京
性别:不限
要求:
精通HTML DOM对象的Javascript编程,熟悉对象化Javascript编程
有使用js框架经验,了解 不同浏览器之间的差异,写出的代码具有良好的兼容性
掌握XHTML、CSS, 对W3C有较深理解
了解web后端开发,熟悉 至少一门后端语言
熟练阅读英文技术文档
前端工程师(xhtml/css方向)
工作地点: 北京
性别:不限
要求:
精通各种Web前端 技术,包括XHTML/XML/CSS,了解不同浏览器之间的差异,写出的代码具有良好的兼容性(至少兼容3种以上浏览器内核)
深刻理解Web标 准,对可用性、可访问性等相关知识有实际的了解和实践经验
对各种前端技术有一 定了解和关注,并对前端开发工作有持续热情
熟练阅读英文技术文 档
如果你有js, flash等相关技术的开发经验或参与过大型web应用的开发,那么你在应聘时会占有很大优势
申请职位请发邮件到:bo.hu^_^renren-inc.com(^_^换成@)
QQ: 287759234
Posted on September 7, 2011
sudo ntpdate ph.pool.ntp.org
亚洲ntp server地址
Posted on August 10, 2011
我想我每次开始写博客的第一句话都会是:好久没有写博客了,写一个吧 – -!
最近写nodejs比较多,刚开始的时候碰到的异步的操作比较少,因为想做的东西比较简单,一查api有同步的,为了省事就直接用同步的搞了,慢慢发现这不是个事呀,好好的异步特性不用,非得用同步的,真囧,并且很多东西木有同步的api的。
好!写异步的,慢慢的出现了这种代码。。。
1
2
3
4
5
6
7
8
9
10
11
12
13
| mysql.query('xxxx').on('success', function(){
mysql.query('xxxx').on('success', function(){
mysql.query('xxxx').on('success', function(){
mysql.query('xxxx').on('success', function(){
mysql.query('xxxx').on('success', function(){
mysql.query('xxxx').on('success', function(){
//let's say fuck
});
});
});
});
});
}); |
恩,你也看到了,这样下去代码多丑,会像老太太的裹脚布一样了,于是就产生下面的异步操作管理器,小巧精致,嘿嘿,绝对够用,代码的事,用代码说话吧,直接亮代码,如码:
TODO:不够全面,比如说出错的就没有处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| /*
* 异步管理器
* author : jser.me
*
* 使用方法:
* var asyncMg = require('./AsyncManager');
* asyncMg
* .push(function( next ){
* some_aysnc_method().on('success'{
* ....
* next();
* })
* })
* .push(function( next ){
* other_aysnc_method().on('success'{
* ....
* next();
* })
* })
* .push( ... )
* .run() //执行
* .on('success', function(){
* allThings_is_down();
* });
*
* push方法接受数组
*/
function typeOf( obj ){
return Object.prototype.toString.call( obj ).match(/\[object ([^\]]*)\]/)[1];
}
function AsyncManager( arg ){
this.execArrys = [];
this.push( arg );
}
//使用系统带的继承方法
require('util').inherits( AsyncManager, require('events').EventEmitter );
//标记成功运行的函数数目
AsyncManager.prototype.succCount = 0;
//加入
AsyncManager.prototype.push = function( arg ) {
var This = this;
if( typeOf(arg) == 'Array' ){
arg.forEach( function(v,i){
This.execArrys.push( v );
});
} else {
This.execArrys.push( arg );
}
return this; //链一个
};
//执行
AsyncManager.prototype.run = function(){
var self = this;
if( this.succCount == this.execArrys.length ) {
//所有函数成功执行后触发事件
this.emit( 'success' );
} else {
this.execArrys[ this.succCount ]( self.run.bind( self ) );
}
this.succCount++;
return this; //链一个
};
exports = module.exports = function( arg ){
return new AsyncManager( arg );
} |
Posted on June 29, 2011
##2011.5.28更新
事实上可以直接用这个命令
1
| ssh -qTfNn -D 端口号 用户名@服务器地址 |
然后在浏览器里设置代理 127.0.0.1:端口号 就行了
######################################################
最近google频繁被墙,公司的代理还得vpn才能用,不能忍了,自己搞一个吧
这里介绍的方法前提是有一个国外的vps,便宜的国外vps还是挺多的,买一个平时当学习开发机也不错,搞点小站,还可以自己没事出墙瞅瞅,很赞哦~
window下有MyEnTunnel或者Tunnelier,相关教程网上到处都是,搜搜吧
ubuntu下也有一个类似的工具,可以直接apt-get
或者到这里下载源码,自己编译一下,11.04的ubuntu需要
1
| sudo apt-get install libgnomeui-dev |
安装后,打开gstm,新建一个tunnel,填上vps的一些信息,其实就是ssh的帐号,prot redirection选择dynamic,然后设置一个端口,大于1024即可,如7070
然后保存回主界面,start,浏览器代理里选socks代理,127.0.0.1 7070
有些软件只能用http代理,可以再装一个privoxy
1
| sudo apt-get install privoxy |
修改配置文件/etc/privoxy/config,
1
2
| listen-address localhost:7077
forward-socks5 / 127.0.0.1:7070 . |
重启一下 sudo /etc/init.d/privoxy restart
这样的话设置代理就是设置为 127.0.0.1 7077端口
浏览器再配上一个autoproxy就相当给力了
好,打完收功,唉哟,不错哟~~
Posted on May 22, 2011
这个系统不知道怎么回事,终端下面有些功能居然没有了,直接从一台机器上把home拷过来都没有用,一点一点的恢复吧,这里做个纪录
退格删除键变成了^H
恢复方法:
.profile里
stty erase ^H
^H输入方法是: ctrl+V+H
tab自动补全丢失了
好吧,是我无厘头了,查看了一下 /etc/passwd里关于当前登录用户的行,发现居然是 /bin/sh
改成了 /bin/bash, 重新登录一下,正常了!!!
Posted on April 18, 2011
写代码最重要的还是区分0o,li1这些,字体再好看点就更好了
目前我用的是Monaco感觉很不错哦
下载地址:http://www.gringod.com/wp-upload/MONACO.TTF (来源:http://www.gringod.com/2006/02/24/return-of-monacottf/)
安装
1
2
| cp MONACO.ttf /usr/share/fonts/truetype/
fc-cache -f -v |
这里有一个程序员喜欢的字体的大全 http://www.kuro5hin.org/story/2004/12/6/11739/5249
这是大图展示
Posted on April 13, 2011
在ubuntu下连接公司的vpn才发现我的火狐居然没有安装javaplugin
找了一会,找到解决方法,小纪录一下:
安装了jre之后,插件会在下面的路径里
1
| /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/i386/libnpjp2.so |
在火狐的插件目录里搞一个软链接就好啦
1
2
| cd ~/.mozllia
ln -s /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/i386/libnpjp2.so . |
重启火狐,在浏览器里输入 about:plugins,看到java插件的信息了
恩,可以正常使用vpn了
最后推荐一个GEEK写的文章: http://mad-scientist.us/juniper.html
Posted on April 13, 2011
页面性能评测还是时间第一,细化了可以分为下面的几个
I.加载时间
* 从在浏览器里按下回车键到页面开始出现的时间,相同站点在不同浏览器下这个时间会有所不同
* 触发浏览器onload事件的时间
* 所有资源下载完毕的时间
II.资源
* 所有的请求数
* 图片/css/javascript的大小
* 网页(html)的大小
* 异步请求的数量
* 坏请求的数量(重定向,服务器端错误等等)
III.网络
* DNS时间(查找域名对应的服务器IP耗费的时间)
* 连接时间 (向服务器发起连接时间)
* 服务器时间 (服务器端处理请求的耗费时间)
* 传输时间 (由服务器向客户端传输资源耗费时间)
* 等待时间 (同时向一个服务器请求的连接数量是有限制的,获取资源时的等待空闲连接的时间)
以上关键点互相之间相辅相成,二和三决定了一的时间,另外,交互复杂的网站,很多资源的请求是在用户操作的情况下发起的,这些单个的请求也同样可以用上样的关键点进行评测。
Posted on March 26, 2011
恩,RT,网页版,JS的,右键看一下源码就知道怎么回事了,纯属娱乐
http://jser.me/demos/js/pxt.html
Posted on March 11, 2011