浅显易懂的AnjularJS文章

AngularJS的官方文档看起来总是比较晦涩,理解起来也觉得AngularJS并不是那么容易理解。这里推荐几篇小的文章,可以试着重新阅读以下,轻松愉快的写作风格能够让你很容易的理解它。

AngularJS的基本组件及工作原理:Why does AngularJS rocks

在实际工作中,写AngularJS的程序并不是太难,难就难在如何用TDD驱动出来。甚至一些比较复杂的directive,你会发现写测试是那么的困难。TDD其实要求熟悉如何测试被测对象,下面几篇小文能够帮你从最简单的单元测试开始,详细讲解如何一步一步的写各种测试。

总目录* Introduction:简介,介绍了Jasmine如何工作的

  • Spies:介绍Spy是如何工作的,为后续mock更复杂的对象打下基础
  • Filters:测试最简单的AngularJS模块
  • Services:测试复杂一点的Service,依赖的处理
  • Controllers:测试Controller,依赖的处理
  • Directives:最为复杂的Directives
  • Conclusions:总结

Angular Tips网站还有其他的一些AngularJS的文章做参考,大家可以看看。

shadowsocks更适合搭建在DigitalOcean上

科学上网这个活,得要靠点技术。从最GoAgent、独立VPN,到SSH翻墙,现在用上好用好快的shadowsocks。但公用的shadowsocks服务器可能涉及到安全问题,谁知道后面有没有人持续的抓包呢?所以还是自己搭建一个靠谱。

我用的是成都的电信的光网,所以下面的经历可能和其他的网络有差别。之前选择用了Linode,优点是内存比较大,速度也比较快,有日本的线路,应该比较适合翻墙。但用过一段时间以后你会发现,其实无论哪里的Linode,搭建shadowsocks翻墙的速度还是可以的,http浏览完全不成问题,网页载入也很快。但持续下载的时候,你会发现刚开始几秒钟,可能有上百k的速度,但是过一段时间就掉了下来,到大概10kb左右。甚至后面就干脆停掉了。这样的速度,即便是用迅雷这种多线程的工具也只能跑上几十kb。我猜测,要么是Linode自身做了QOS,要么是伟大的墙做了手脚。

一般来说shadowsocks隐藏了一些特征,我一个人用基本上墙也不care我。改端口一般会解决墙的问题,随后试过808. 44. 2. 22等端口,一样的情况。好吧,莫非是机房的原因?换到Linode的美国节点,速度一样的慢。无语了。

好吧,那看看DigitalOcean

其实一年多前我就在用DigitalOcean,原因是5美元的价格非常的便宜,但是512的内存就比较慢了,优化起来也比较吃力。开了1G的swap,幸亏是SSD,还能撑一段时间。我就重新在DigitalOcean上,申请了SFO的机房,用docker的shadowsocks的images,分分钟装完shadowsocks,一试,吓我一大跳。

虽然SFO的ping比日本的ping要高一些,但整个翻墙速度没有明显的区别,youtube的1080P的也能流畅的播放。看流量能够知道shadowsocks能够持续的以400多k的速度下载,甚至有些时候能够跑满10M的带宽。我又试了用sockets代理来下载战地4的最新更新,速度也非常满意,几乎80%的速度都是1.2M/s的下载,说明shadowsocks并不是被墙了,而是Linode做了限制。

所以,对于我的电信线路,DigitalOcean的SFO能够提供非常好的质量,非常推荐大家也试用一下。更好的话,请大家用我的一个referal链接,这样大家都能得到一些额外的优惠。

悉尼——都市初印象

我住的公寓在靠近中国城的Hyde Park旁边,生活很方便。走路两三分钟可以到World Square Shopping Centre,底下有coles超市,还有一家华人的超市可以购买到很多的中国食品。去Darling Harbour也10分钟路程,

第一天到,早上睡了一大觉把时差倒回来了,中午和新认识的7楼的女孩一起在World Square出去吃饭,一顿简单的中式快餐面,15澳元,折合人民币80多块钱了。说到这里广大男人就只有羡慕的份了,刚到我就能认识一个新的异性朋友。至于如何认识的,给大家一个想象空间吧。

下午出去逛了一圈,顺便熟悉了一下环境。第一天由于没有拿到4G卡,不敢到处乱走,就在公寓下好了Google离线地图,然后出去瞎逛。悉尼CBD虽然属于比较现代感的地方,但到处还是可以看到很多古老的建筑,

街景
20140831-20140831_172421

纪念碑
20140831-20140831_172427

购物街
20140831-20140831_173537

20140901-20140901_184623

20140901-20140901_184658

可能是由于空气质量很好,到处干干净净,但街道上也能看到一些纸屑烟头啥的。天非常地蓝,阳光刺眼。庆幸的是我运气比较好,在我来之前的两周,悉尼一直在下雨,搞得同事James都没法出去。气温也很冷,我一到,就把成都的夏天带到了悉尼,只是没有了成都的可怕的雾霾。

悉尼CBD区域街道不大,双向四车道,但没有国内的那么宽,机动车和非机动车都混行。汽车开得很快,甚至一看到绿灯轰的一下就出去了。红绿灯井然有序。过街的红路灯灯杆上还有一个按钮,过街的时候需要按一下,特别是在晚上,否则即便车停下来等红灯,但人行道的灯不会变绿。

图为网上找的,就这个样。
549300-53310f00-29a8-11e4-8aa3-c8bd07392c82

这个按钮还会发出“呱呱呱呱”的声音,当绿灯一亮的时候,就会发出“噌”的一声,然后人就冲出去了。别说我夸张,早上上班的时候,有些路口红绿灯时间很短,很多人还真是“冲”出去的。等“噌”以后,这个玩意儿就变成了,“啪啪啪啪啪”的声音,很好玩。

骑车在这里我想有点折腾。我之前本想过来租个自行车的,网上查了一下价格在50澳元左右,太贵了,国内都可以买个车了。在这里骑车还需要装配齐全——头盔、电筒、闪光灯啥的必须齐备,并且在在机动车道上骑车不能闹着玩,得跑得很快才行,否则后面的车骂死你。

还有一点,这里的街道上上下下的,有时候有比较陡的坡道,在客户公司居然Lobby到7楼,就一层楼。汽车都要费很大的劲才能上去,骑车的自然就很折腾了。

悉尼的商业街集中在Westfield。那里有Sydney Tower可以看到悉尼全景,但要收费的所以我没上去过。

Sydney Tower
20140902-20140902_174758

步行街不大,两分钟走完,比起成都的春熙路那简直是是不能比啊。

20140902-20140902_174611

20140902-20140902_174726

晚上出去逛了一趟超市,James教我怎么用超市的自助结账机。超市下班的时候比较热闹,人比较多,排队等结账的现象还是有的。人工服务不用自己操心,速度也比较快,但如果仅仅买了一两样东西的,还是自助结账机比较迅速,扫扫条码分分钟搞定。

20140901-20140901_182706

当买了水果之内的需要称重的东西,那就没办法扫描了。在台子中间有一个板,其实是一个称,放上水果之后屏幕上会显示重量,然后选择对应的水果就好了。当然这里的选项比较多,好多时候不知道水果叫什么名字,就只有寻求help了。

等所有的东西都放到塑料袋中,然后就塞钱走人,也没人查你。

注意,第一天我用的招行的信用卡刷卡的。刷卡当然一次性搞定,也不用输入密码,但后来我查账的时候才发现,居然收我的6.1的汇率,当时的汇率其实才5.7。后来才知道,原来在不支持银联的机器上刷卡,会另外收取什么费用。还好我就刷过一两次,损失不大。

成都银行的金卡(其实很惭愧上面就几千块钱)在异地刷卡取现是免手续费的,非常给力。就在我楼下的nab银行ATM取现,确实不收手续费,非常方便实惠。所以后续我在悉尼一直用的是现金了,从不刷卡了。

但有些银行可能会提示收费,例如汇丰银行,有一次取现20澳元,居然提示说要收2澳元手续费。另外得鄙视一下汇丰的反人类的ATM机,居然卡只能插入一半多一些,然后就插不进去了。正确的流程是插进去一半,等一下,然后再取出来,然后再交易,幸好和做会计的小妹一起出去的,否则我还真搞不懂。

除了纸币,确切的说应该是塑料的钱,这里用硬币的机会很多。令人头痛的是最大最重的硬币居然是50分的,然后2澳元的居然比1澳元的还小。感兴趣的可以看看这里。有时候满满一钱包都是硬币,很不方便。

晚上回家,跑楼下的健身房游了个泳,免费的,但比较小,水质只能说将就。第二天,舒舒服服的去上班了。

悉尼——出发

年中一直谈论出国的事情,但由于在节骨眼上临时抽调去支持一个项目,所以给搞黄了。运气比较好的是,第二个项目也才刚开始,8月份需要出差过去参加Initialize Workshop。公司7月份就开始申请的VISA的事情拖到8月底才尘埃落定,虽然已经错过了Initialize Workshop,但还好处在项目的初期过去,也能起到很大的作用。

机票定在8月30号,在广州中转。我把老婆儿子的机票也买了,一起回婆婆家。儿子推着自己的箱子,兴奋地不得了。这次坐的是787梦想飞机。新的大飞机果然不错,每个座位都有多媒体,给丁仔放熊出没看他就安静了,只是仰着个头不是太舒服,还不如用iPad放。

20140830-20140830_131203

20140830-20140830_155643

20140830-20140830_185239

两个小时的行程到达广州。我们一家人在中转口分开,妈妈和丁仔拿行李,爸爸走二楼中转。由于我两个航班都是南航的,所以可以在成都申请直接到悉尼提取,这样方便快捷省得去排队了。

20140830-20140830_191117

但这次行李等了太久,大概等了有40分钟的样子,似乎故意不怎么想让我们分开。我在楼上没走,陪着他们直到拿到行李。拿到行李后,丁仔和爸爸很高兴的说再见,一点都不留恋,和妈妈一起出去坐车了。

20140830-20140830_194248

之前我以为不用过安检了,所以预留的时间不多。结果发现坐了车到了国际中转还是要安检。结果在安检的时候,出人意料的事情发生了。还在安检站呢,等小妹扫描完没问题去拿东西的时候,我发现护照、手机、钱包不见了!这什么世道!我立刻问安检的工作人员,她说是前面那个人拿走了,然后那人把钱包、护照退给我了,说是拿错了。我清理好包包,装好电脑再检查,手机呢?安检人员说还是在他那里,靠,那人还在和他的同伴说着啥,我说我的手机你拿了哇?他慌张的从裤包里面拿出来,给我说拿错了,说是半天没打通。我黑了他一眼,彻底怀疑你这是不是在偷东西!所以以后安检的时候,要特别的小心自己的东西,别被人偷了。

过了安检过边检,盖着章表示可以出国了。整个过程还是比较快的。对于晚到的旅客还有一个特殊通道可以用,不用排队,还算人性化。

20140830-20140830_202049

半小时后,上飞机了。空客A320,当初我还担心飞机上没有玩的,下载了好几部电影。结果每个座位上都有多媒体的播放器,我下的电影都有,算是白下了。

20140830-20140830_202447

20140830-20140830_202456

飞机晚上9点起飞,到悉尼是早上8点,总共9个小时的飞行。坐上飞机的时候已经有点累了,看了一部极品飞车,11点过准备睡会儿了。这时候才觉得长途飞机上睡觉有多么的折腾。

我旁边的那哥们儿,一上飞机就睡了两三个小时,这下等我要睡觉了,好了,他开始看电影了,而且一看就看到第二天天亮,精神也太好了吧。他看电影倒好,昏暗的机舱里,他的显示屏一晃一晃的,弄得我很难睡着。怎么办呢?上机的时候拿了一份报纸这时候管用了,拿了两三张一头压在后脑勺,一头盖在脸上,好了很多。

飞机的噪音是第二个问题,把入耳式耳塞塞到耳朵里面,解决。

第三个问题是空调,实在是太冷了。头上吹下来的冷气搞得头顶发凉,而且还没有调节的地方。身上裹了毛毯还算稍微暖和,但脚下穿的冬天的皮的运动鞋都不管用,像是泡在冰水里面一样。最终我只解决了头顶空调的问题,只需要把报纸搭在头上就好了。

就这样折腾折腾一晚上,坐着的姿势搞得腰酸背痛,根本无法睡着。就这样半清醒的状态直到第二天早上6点(悉尼时间),其实只睡了4个小时,然后空姐开灯发早餐了。外面阳光明媚啊,赶紧调了手表,纪念我失去的两个小时。吃了早饭后,这下睡不着了,到处的舷窗都打开了,阳光格外刺眼。虽然很困,坚持着看会儿电影,终于到了悉尼。

悉尼机场还有很多中文标示,一般来讲走不错。

20140831-20140831_084413

20140831-20140831_084652

20140831-20140831_084743

出了机场,麻烦的事情又来了,司机呢?之前邮件里面说好的提前一点在机场等我的,怎么一个影子都没有呢?打个电话问问吧。

我以为我很聪明,当初在国内的时候,给skype冲了1欧元,想着过去可以用网络电话。连上机场的Free Sydney,结果弄死打不开网页,Skype也连不上,有这么差劲么?

折腾了10分钟,不想搞了。在出机场的门口,有一个Help Desk,有一个新加坡籍的老人家帮我打了电话。结果是司机说没有收到通知,不知道要过来,立马安排过来接。这样就在机场孤孤零零的等了半个多小时,终于来了。

20140831-20140831_094754

20140831-20140831_095303

半个小时后 ,到达公寓。公寓在Hyde公园旁边,离中国城很近,附近也有很多韩日的餐馆,很方便。我住在12楼,公司的租的房间还很大,两居室的,生活用具齐全,非常不错。我以为接下来的几周可能会share房间,后来证明是想多了。略微收拾一下,赶紧躺床上睡一觉,累死了。

20140831-20140831_101805

20140831-20140831_101817

20140831-20140831_101827

20140831-20140831_101831

20140831-20140831_101812

Ways to improve offshore and onshore communication

I’m working in a China/Australia delivery team for 2 years. The top challenge for offshore/onshore delivery team is the communication. Language, culture, timezone, location are the main barriers between these two countries. As a team, we are continually improving the communication skills and quality. Today I will share these stories.

English warm up

I have never worked in a foreign company before joining ThoughtWorks 2 years ago. The first week was a nightmare to me. I didn’t understand what teammates were talking about in the stand up. I couldn’t follow the meeting and got completely lost very quickly. I was sad and I knew that I need a change.

One effective way I tried was that every morning when I was driving my car to company, I listened to the English materials. Although I may lost the content, it built an English environment and help me to warm up. You may say that it is because you get familiar with the stand up. Yes, I agree. This is one reason, but my way plays an important role. I tried not listen to the materials sometimes and I found I could hardly know the conversation at the beginning.

Ask questions

I notice that China team is a bit shy to ask questions while Australia team ask a lot. It is quite an interesting thing. I believe culture difference is one of the reasons.

In Chinese culture, it is shame if you don’t know. Chinese people keep silence to protect themselves when they don’t know. They may struggle to think if it is a stupid question to ask. Also, they say “no questions” or “I’m fine” even when they totally get lost. Finally, they do not usually ask experienced people or managers challenging questions.

In my opinion, to break these culture obstacle, both of the sides need to know the culture differences and make sure they are safe to ask any questions. When people feel it is not safe to ask, you should try to talk to individuals offline on your initiative. Sometimes online chat is better than face-to-face talk, which makes both side feel comfortable.

Debriefing is invaluable

Debriefing after a meeting or a task will greatly improve the understanding. Even you are quite sure you know, I believe that it is better to exchange your understanding with the whole team. This helps other guys to check their understanding and it is good for you to know that people are on the same page. It is even more helpful when team members are using English as second language.

Use video and whiteboard as much as you can

Obviously, video is better than audio, we can see each other’s body language and their mouth.

On the other hand, the whiteboard is another powerful tool. If you do not have one, notepad is another choice. It is quite quite hard to know each other accurately when both side are non-English speaking. We tried to type some words into the whiteboard/notepad and draw some pictures. By doing this, we can read from the screen multiple times and we can explain our thinking with picture which is easier than talking.

Core working hours

Time difference is usually a blocker to move things go quickly. China starts to work at 9AM while Australia starts at 11AM (or 12AM after daylight saving). So the overlap time is about 4 hours per day. If China team can come 1 hour ahead, we can win another 1 hour overlap.

Be prepared for meeting, don’t be late

Since overlap time is short, the a more effective meeting is quite important. Facilitators should prepare the meeting at least 5 minutes ahead, including the video, audio, screen sharing, whiteboard and powerpoint. Participators should join the meeting on time and be prepared for discussion.

Here are some tips for facilitating a successful meeting:* Send meeting presentation or materials and let people to have a look at first. This gives context for participating.

  • Collect ideas from individuals before discussion. It helps you organise and control the discussion.
  • Keep the meeting short. The suggestion is that 30 minutes for knowledge sharing and 45 minutes for discussion. Do not have a meeting longer than 1 hour. People cannot concentrate for a long time. Short meeting helps facilitator focus on the topic and it is also easier to book. People are happy to join short meetings.
  • Keep asking questions to make sure everyone understand.
  • Prepare a clock to control the time. You can download some tiny top-most clock to use.

Rotation

Furthermore, it is great if rotation is possible. Keeping one more persons in Australia is valuable. He or she can act as a bridge between the two countries.