住房一二事

2010-10-30 评论(6) 分类:生活 Tags:

安定

来北京两个多星期了,基本上适应这里的生活了,只要住房定下来,生活就安定了。

想来住房真是一件烦心事,在我刚来孤身一人不熟悉环境的情况下再加上住房的烦恼,就变得很郁闷,现在就好了。

折腾

这个房子是安定下来了,但由于这房子是刚弄好的,所以很多东西需要折腾,这两个星期为充燃气和充电费折腾了很久,得到比较远的北京银行才能充。充电本来不太麻烦,只要在附近的银行充就行了,结果被告知还没开户,需要某张单才能开户,于是暂时没充,结果到了上周六停电了,不得不老远跑到租房的那个公司去拿单再去充电费再跑到物业去找人帮忙充电,总之,折腾死了。

现状

由于房子里没有网络,所以这两个星期一般都9点多回去,头几天因为没法上网没事做很早就睡了,后来有了娱乐活动:看海贼王漫画,结果就越来越晚了。海贼王果然很好看,看漫画时间过得特快,感觉过得还挺快活的,呵。不过已经快看完了,接下来要另找节目了。

这间八个房间的房子从我刚搬进去时的3个人,现在增加到5个人了,四男一女,挺佩服那个女的有勇气租这种合租的刚建成的房子。五个人年龄都差不多,大家交流得还挺好,只是早上厕所吃紧了点。

由于房子里没有热水,这两个星期来的洗澡都是用电热棒烧水洗,不过加起来好像也就洗了四次那样,冬天有个好处就是在条件不利的情况下不用天天洗澡,呵。貌似一般偏北方的人大都三天到一星期才洗一次澡,男女都一样。昨天第一次尝试在公司里洗澡,效果还不错,就是换衣服的地方有点麻烦,地板很脏我又没拖鞋。公司有洗澡的地方是因为有健身房,都挺齐全的,睡觉的地方也有,都可以把公司当家了,不过我没进去过睡眠室~

另外这房子还有一点不好的就是,房间是用很薄的木板隔开房间的,隔音效果几乎没有,一点点小动静隔壁都能听到,独立性就大大降低了。

百度宿舍

其实百度有那么大的地,为什么不建一栋员工宿舍呢?建了可以有诸多好处,特别是对于刚毕业的或者来这里实习的人。例如:

1.直接给双外(户口 学校所在地都不是北京)的实习生分配一小间足够睡觉的房子,成本肯定比给实习生的住房补贴低,实习生也不用烦恼住房的事,安心工作。
2.住宿离公司近,每天自愿花在工作上的时间就变多了。
3.对于应届毕业生来说在北京提供临时居住的地方是很有吸引力的,省了一堆麻烦事,降低了招聘的难度。
4.整栋楼都是百度的员工,比较安全,探讨和交流很方便。

另外百度大可把建房子分配房子等这些工作外包给其他公司去做,投入也不会很多,产生的效果应该不错。为什么不这么做呢?

北漂第一周

2010-10-17 评论(22) 分类:生活 Tags:

到北京

来北京百度实习,12号早上10点的飞机,过程还挺顺利,可惜这次坐飞机坐在正中间,左边一情侣,右边一外国佬,没法坐窗边看风景。到了北京后转了几次地铁到了西二旗,走路到百度,师兄就开始带着我逛百度大厦了,外部看上去挺宏伟的,面积十分大,整一迷宫,装修是挺豪华,但有些空间十分浪费,例如正门的两条大道,有些空间的使用也不合理,例如为啥要在室外那么大一空地弄乒乓球呢,这不是室内运动来着吗。

接下来几天晚上住在师兄家,师兄提供了地铺,棉被,枕头,一套齐全,十分周全,很感谢师兄的招待,不然刚到这里还没找到租房的这几天就不知道该上哪睡了。

入职

13号早上入职。本来我不晓得为啥一定要13号早上9点半正准时到达才能入职,到了后就明白了,因为入职的人太多了,得一群一群来。那天入职的正式员工和实习生加起来近百人,这算比较少的一周。接着捣鼓统一入职程序弄了一个早上,到了中午带着去见我的经理和导师。接着新人导师经理一起吃了个饭,气氛挺融洽的。后来再见到一面我的同事,非常热情,接下来几天组里的人一直一起吃饭,感觉他们都很好相处~玩玩三国杀打打乒乓球,大家就熟了~这里上下级的意识完全没有,经理经常被人拿来开刷,挺好的~

这里上班十分自由,上班时间是弹性的,不过一般人都早上10点-10点半到,工作时间貌似也可以到处神游,把工作做完开会的时候到场有问题的时候找得到人,就可以了。

租房

这差不多一周时间里最烦的就是租房的事,到北京的头一天晚上就去看了一处房子,还可以,但由于月租1500,还必须租4个月,所以当晚没马上决定,第二天再问已经被租出去。

接着在网上找了处房子,也去看了,后来才知道网上找的都是中介,需要交中介费一个月房租,对我这种短租的人来说十分不值,网上找房子这条路也行不通。

后来1000租下了一处刚装修完的房子,他们是把一间大房子隔成8个房间分别出租,共用一个厕所,我租了其中一间,里面的装修是挺粗糙,用木板隔开房间。那个小区很多还在建设和装修,没多少人入住,不过我入住时有3个人在了,还好。到目前为止厕所的马桶还没有水可以充,自来水一股味道,房子也有一点味道,环境不怎样,还没有网络,不过三个月的先凑合着过吧。这样的房子一个月1000,北京房子贵到离谱,五环以外一平米两万多到三万多,是广州市中心的两倍。

租这房间的时候很不爽,交了定金后像被牵着鼻子走,什么条件都得答应,租房是个很麻烦的事,特别是急着要租的,越急就越容易被坑。而且房子是卖方市场,对方态度极差,忍了忍了。

租房子是踏出社会的第二步,这一步这几天走得挺艰难的~

还好现在同租的两个人都挺好的,一个同事,青岛来的,描述他在青岛的美好生活,租了间非常好的房子跟女友一起住,晚上回家女友还做好饭给他吃,哇靠太幸福了,要啥有啥,他自己说来北京受苦来了,咱们真是孤苦伶仃啊~~另一个是广西的,也是来这里附近一家公司实习,虽说是广西的,但那个儿化音那个重啊,太绕了。在房间的时候弹弹吉他,挺有情趣的。

吃饭

百度食堂饭菜相当贵,一个没有肉的青菜加蛋10块。这里面的东西吃几天的话觉得还不错,如果是天天吃就有问题了,因为里面菜式固定,很多都是北方菜辣的,排除了辣的东西后,我能选择的就很少了。不过附近也有挺多餐馆的,实在受不了可以找别的。

感觉

我忘了当时我刚上大学时心情是怎样,那时候好像没有“一个人”的感觉,但我现在就有“一个人”的感觉,刚来还没租到房子的时候感觉比较差,现在租好房子安顿下来了,感觉会好一点,这需要一段适应的时间吧。这也不算吃苦,只是要适应一个全新的环境,有一点困难~

经历一些困难可以理解一些事情,也可以知道原本那些平凡的幸福是多么难得~

网易邮箱的两个体验缺陷

2010-9-25 评论(7) 分类:互联网 Tags:

历史记录/刷新

网易邮箱的内容区不是iframe,而是一个普通div,点左侧的导航栏按钮后通过js动态向这个div插入内容,有的直接是内容有的是iframe。

这里用js控制了页面内容的跳转,但跳转后页面的网址没有任何改变,后果就是:一,无论去到那里,刷新后都是回到首页。二,无历史记录,无法使用前进后退。

Q邮箱内容区是iframe,导航栏是普通链接,自然没有这些问题。gmail是通过hash值记录所在的页面(QQ阅读也是),通过改变hash值就产生了历史(IE需要hack),刷新功能也可用。

作为一个web应用直接忽视掉历史记录体验不太好,不过Q空间、google calendar也是这样,不知是不是觉得没必要?但我用这两个东西时还是会在想返回的时候去点击后退按钮,点完发现去到一个不知名的地方,很茫然和不爽

ipad细节

网易邮箱ipad版是模仿gmail的,但有些细节模仿得不到位。

ipad上webapp性能是很差的,要想一个像邮箱这样比较复杂的应用很好的运行在ipad上,得处处针对它做好优化。

在网易邮箱ipad版上快速地点击各个邮件标题,点多几次就会发现页面直接卡死了,有时十几秒才缓过来。邮件的上下翻页也一样,快速点击翻页,它也会因为反应不过来而卡死。主要原因应该是在切换邮件时不断的插入删除DOM,或者不断发送ajax请求,导致ipad反应不过来。

再看看gmail怎么处理这个问题。gmail点击一封邮件时不管它之前是否已经打开过,都会先显示一个loading图标,load完再出现内容。这样快速点击时就不会太频繁地添加删除dom,不会出现卡死。而上下翻邮件的按键那里,gmail每点一次都把按钮disable,内容显示出来后才恢复可点状态,这样就防止了快速点击,很聪明啊~

关于《什么是重要的》

2010-9-23 评论(13) 分类:随记 Tags:

先看看这篇文章,《什么是重要的》,大意就是说HTML5没什么了不起,不过是多几个API,搞这些只能给你虚荣水平没有提高,不如多去学学底层的图形学数据库等东西。

我在这篇文章留了言,不知为啥没通过审核,没显示出来,我大概说:这跟大学老师的说法是一样的,各人的学习方式不一样,应该自己选择怎样的学习方式。

确实这篇文章的论调跟大学老师是完全一样的,学好数据结构算法,学好底层编程,还怕学不会那些高层的东西?这是有道理的,而且这还是经验之谈,学编程到了一定阶段肯定会有这样的感悟,高层的语言没什么,重要的是底层的知识。但实际上这可能给你的学习指了一条艰难的道路。

“对于程序员,真正的核心竞争力是基本功。”这话显然没错,但还有更重要的,那就是兴趣。

没有兴趣的学习是痛苦的,有兴趣的学习往往是不痛苦甚至是快乐的。

我学习的第一门语言是AS,因为它可以很容易跟图形配合做出一个成品一个游戏。我为什么喜欢做前端技术,因为你可以看到用它做出来的与界面相结合的交互效果,看着自己做出来的东西感觉很爽,这是兴趣所在,我才能不断深入去学习。一开始就捣鼓能实现绚丽效果的语言并不代表以后都只停留在这一层面上,你会想为什么它能做到这样,jquery用多了你会去看它的源码,再去看看别的框架的源码,学习它的架构,最后去看浏览器的源码,层层向下深入理解,这个过程是兴趣驱动的。

而如果是自底向上的学习就不一样了,在实验室里用C++编出来的控制台里对一个数组排序,或者输出一个日历,这样的东西恐怕难以让人提起兴趣。我就是因为这样一直对C++不怀好感,但是最近我开始在补C++的知识,因为我看到chrome这么快这么爽,有兴趣去了解它的实现。

当然各人的兴趣是不一样的,有人更愿意从底层开始学起,这样感觉踏实。看过一些所谓“忠告”会说大学期间不要去接触那些太高层的语言,学好那些基础课程才最重要,甚至连JAVA的那些框架都不要去碰,这个忠告有点傻,自底向上的学习和自顶向下的学习方式都是没问题的,看个人喜好去选择。其实我之前写的《关于学习》已经写得够多了,不再重复了。

所以捣鼓HTML5这些新东西是没问题的,它绚丽的效果会提升你深入了解相关知识的兴趣。只要你不完全停留在“顶”上,捣鼓那些新技术捣鼓了几年都还停留在那个层面,就完全没有问题。

P.S 其实很多新演示产生绚丽效果的是CSS3,跟HTML5没啥关系,不过把HTML5当HTML5和CSS3这一代的统称也没啥问题~

QQ阅读上线

2010-9-10 评论(14) 分类:互联网 Tags:

reader

QQ阅读终于在今天上线了 http://reader.qq.com

就不介绍它是什么,上去看看就知道了。写写整个开发过程中的事情~

完美实习时间

我觉得我的实习时间挺完美,新版QQ阅读一个半月的开发时间,刚好在我两个月实习的中间,让我可以刚进来有一个星期的时间缓冲习惯,接着参与整个新产品的开发过程,上线后还有一个星期时间收尾,运气非常好。而且QQ阅读这个新产品做起来也很爽,本来我一进来导师问我希望参与哪块的开发,我就说是阅读空间,这也是我自己感兴趣的一个产品,一直感觉自己非常幸运。

历程

QQ阅读本来不是做成这种杂志的模样的,一开始是设计成google reader那样,后来开发一个星期后allen要试试把好友日志、热文和广播变成像flipboard那样杂志的形式试试看效果如何,打算自己订阅的rss还是传统阅读方式,而这三个栏目是新的阅读方式。后来做出来了,觉得这种杂志阅读方式效果很不错,于是全部抛弃之前做的,把整个QQ阅读都做成杂志的形式,重新定义产品了。

开发

本来在原来的分工里我只负责导航栏模块,做完后再做各个订阅模块的,这个倒挺轻松。后来尝试杂志形式时就先让我实现杂志这块,再到后来全部变成杂志形式,主要的杂志渲染翻页还有打开的文章那个模块还是让我继续负责做了,这块逻辑和细节很多,做起来有时感觉挺吃力,对整个代码没有了如指掌的感觉,因为急于做出效果和代码架构能力的不足,代码写得黏性十足,一坨一坨的。

某天突然来了一个需求,翻页的形式需要改变,然后发现我当时的代码根本没法实现那样的需求,而且代码这么乱也是得梳理一下了,于是把一部分代码重构了一下,花了两天的时间终于把整个流程写得更清晰一点了,这个重构太费脑了,过程比较艰难,重构后看着有把握的代码感觉还是挺好的。但到后来这些代码随着功能和细节的不断增加现在也还是变得挺难看了。接下来得看看能怎么整理一下。

不给力的firefox

在给杂志加动画效果时,firefox让人抓狂,在IE6-8、chrome、safari下翻页都不会卡,性能没有问题,但在firefox下就卡得要命,这点我研究了挺多,是不是框架的动画函数有问题,自己用了setInterval让它做最简单的动画去动,还试了用-moz-transform属性去移动,还是一样卡,再想是不是插入dom消耗的性能多,于是延迟了1秒确保它插完dom再做动画,还是一样。后来通过firebug逐步排查才发现做动画的那个外壳去掉阴影-moz-box-shadow和圆角-moz-border-radius后动画立马就跟chrome一样顺畅了,原来是这原因。解决了这个问题感觉真爽哈。

另外firefox下还有个问题,文章的滚动条很卡,后来在群上讨论后一刚进来的帅哥说滚动条的问题背景加个颜色background:#fff就快很多了,一试还真是,firefox这什么bug来着,firefox太不给力了,接二连三出现这样的性能问题,css的-moz私有属性要慎用。

团队开发

第一次体验到团队开发,还挺顺畅的,团队开发感觉也比个人开发轻松很多,例如我不需要管js如何跟后台交互,这一块全部由yiheng负责,我只需要调用他的接口就行了。另外我也不需要管后台,不需要设计,HTML跟CSS也不用写,做好我自己那些的逻辑就行了。但这样也少了很多跟后台那些人交流的机会,而且他们都坐得很近交流很方便,我的座位离他们很远,各种不方便,导致跟后台开发的人几乎没交流,不熟悉,而且也导致我对后台的实现一无所知,无从学起~

另外美工方面,杂志的外观从一开始一变再变,挺佩服alex的,我每次都觉得,都做得很好了,不需要再修改了吧,但还是持续不断地变动,跟最初的模样差别挺大了,我觉得现在的QQ阅读UI是很漂亮的。

上线&产品定义

今天上线后大家马上在微博上跟踪反馈,大多数反响很不错,看着这么个新生儿横空出世,大家也挺激动的,包括我~哈~我自己挺喜欢这个产品,用来快速浏览无目的地看东西挺爽的,深度阅读可能不那么合适。这样的阅读方式没有了未读数,鼓励娱乐式的阅读,消除信息焦虑。它跟传统RSS阅读器定位不一样,它本身就想消除”rss”这个概念,所以如果想像RSS阅读器那样追踪某一个博客,QQ阅读并不合适,就我来说如果想随便逛逛看点东西会用QQ阅读,如果是学习性地获取资讯我还是会用GR。

接下来

接下来大家当然会致力于把QQ阅读做得更好,后台向“您的个性化杂志”这个目标前进,通过各种数据筛选出对自己权重更高的文章。前端则致力于提供更好的用户体验,现在这个版本,可优化的空间还是非常多的。

iQuery实现CSS3 transition动画接口

2010-8-24 评论(2) 分类:技术文章 Tags:

给iquery加了跟jquery差不多的动画接口animate,不过实现上是通过CSS3的transition。

效果点这里 (桌面浏览器只支持webkit内核,如chrome/safari)

iQuery源码

(更多…)

简化代码学习jquery动画源码

2010-8-18 评论(4) 分类:技术文章 Tags:

效果见这里:http://bangswork.googlecode.com/svn/trunk/lab/effect/index.html

jquery的动画总体思路是:

有一个fx类专门处理动画,fx的各个实例共享一个timers数组和一个setInterval。对每个传进来的dom的每个属性值都新建一个fx实例去处理,一个fx实例对应一个dom的一个属性的变化。fx里有个step函数,可以计算出当前这个时刻这个属性要达到什么值。

这个step会通过共用的一个setInterval每13毫秒执行一次,这就可以使得它行成动画。另外如果浏览器速度太慢无法达到13毫秒执行一次step,动画也会按时完成,因为是根据当前系统时间计算属性要达到的值的。

每一个fx实例的step都会放进timers数组,实际上setInterval是持续执行timers里的每一个函数,这样只用一个setInterval就让众多属性“一起动”了。step里判断到超过了动画运行的时间,就会返回false让它从timers里移除,timers为空时clearInterval。

下面简单实现这整个过程:
(更多…)

javascript关于数组的几个常用伎俩

2010-8-16 评论(1) 分类:技术文章 Tags:

1.把对象变成类数组

var a = { name : "jquery" },
b = ["elem1", "elem2", "elem3"];
Array.prototype.push.apply(a, b);
alert(a)	//[Object object]

//可以像遍历数组一样遍历这个对象
for ( var i = 0; i < a.length; i ++ ) {
	alert(a[i])
}

jquery就是用这种方法把jquery对象变成类数组的,效率还很高。

2.去掉一层嵌套数组

var a = [[1,2], 3, [4,5,6]];
var b = Array.prototype.concat.apply([], a);
console.info(b) 	//1,2,3,4,5,6

concat方法:

arrayObject.concat(arrayX,arrayX,……,arrayX)
concat() 方法用于连接两个或多个数组。arrayX为n个数组or元素参数
console.info([1].concat([2,3], 4)) //1,2,3,4

apply方法:

fn.apply(obj, args)
在obj的作用域下调用函数fn,并把数组args里的第i个元素作为第i个参数传给fn
例如
fn.apply(window, [1,2,3]) 等于 fn(1,2,3) (直接调用一个函数作用域就是window)

合起来就有上面那个效果了。

3.复制数组

利用Array.splice(0)可以快速复制一个数组

var a = [1,2,3],
b = a.splice(0);
alert(b)//1,2,3
alert(a==b)//false

4.高效合并字符串

var a = [“<div>”,”<span>”,”</span>”,”</div>”];
alert(a.join(“”)) //”<div><span></span></div>”

通过这种方式合并字符串效率比 + 号高了近七八倍,因为js的机制导致每次给字符串追加内容都是抛弃原有字符串新建另一个追加后的字符串,所以效率会低。

在firefox下测试:

var a = []
for (var i = 0; i &lt; 100000; i++) {
	a.push("&lt;div&gt;");
}
console.time("arr");
a.join("");
console.timeEnd("arr");console.time("str");

var b = "";
for (var i = 0; i &lt; 100000; i++) {
	b += "&lt;div&gt;";
}
console.timeEnd("str");
//arr:19ms
//str:141ms

通过PHP curl向腾讯微博发送广播全过程

2010-8-15 评论(26) 分类:技术文章 Tags:

效果见这里:http://cnbang.net/lab/txwb/

由于朋友分布在不同的微博,我希望有个同步到twitter、新浪微博、腾讯微博的工具,但等这么久都没出现这样的工具,微博通似乎停工了,也不支持twitter和腾讯微博,于是想自己做个。

新浪微博和twitter都开放API,要实现同步发送很简单,腾讯微博未开放,就需要hack一下了。这次把研究过程都记录下来了,写得很长~实际上在curl实现那部分我花的时间比较多,走的弯路也多,但由于篇幅原因那部分都简省了~

(更多…)

新浪微博版twitese

2010-8-14 评论(10) 分类:作品 Tags:

sina_twitese

架设网址:http://cnbang.net/sinatwitese

项目主页:http://code.google.com/p/sinatwitese/

几个月前新浪微博找我做个实现微博所有功能的开源PHP客户端,换句话说就是把twitese改成用于新浪微博,但这样似乎没什么用,新浪微博又不用翻墙上,何必用到第三方网页客户端呢,想想可能是因为要有个微博应用的代码示例。

结果我花了点时间做出来,比较麻烦的是新浪微博的评论,下了挺多功夫的,其他都差不多,当时做到基本可以用了:

后来新浪的人有尝试修改一下外观,然后又很长一段时间毫无动静,我问了后才被告知他们不用这个了,打算自己写一个了,可能发现太难修改界面了,代码里还残留有很多twitter的东西,还不如自己写个效率高。于是我这个东西就无声无息地被埋葬了,现在掘出来晒晒太阳。