[译]Google+提升网页性能的5个小秘密

Posted in 学习笔记 on 一月 4th, 2012 by 亚楠兄 – 我来抢沙发

原文地址: https://plus.google.com/115060278409766341143/posts/ViaVbBMpSVG

1.使用Closure

我们使用Closure库、模版以及编译器来渲染Google+里每一个页面的每一个节点——甚至包括掌控页面的Javascript脚本。以下几点有助于加速网页的显示:

-Closure模版可以在服务器端用Java渲染,也可以在浏览器里用JS生成。这样的话,我们需要的内容总是能立即获取到;同时,我们也可以在”后台”( 指浏览器中的异步加载 )中载入javaScript(就像“装饰”一个网页,在主干之上,不断给各节点增加事件的响应)

-同时,Closure套件为JS提供了许多新特性:强类型、更强的错误检测、“死代码”预估、跨模块的通信以及很多的优化手段。

(欲了解更多的Closure套件细节,访问 http://code.google.com/closure/ )

2.总是在最适当的时候,书写最恰当的JS代码

我们将JS代码分割程序多小的模块,并能被异步加载,从而更方便的管理Google+中的JS脚本。而用户只需要按需下载最少的JS脚本。我们依照两个规则来进行设计:

-客户端必须包含一个核心的代码,它通过历史标记(也就是记录浏览器地址栏中的地址)来判断加载需要的模块。

-如果需要的JS模块没有加载完全,我们会阻塞页面所有的操作,直到加载完毕。

3.无刷新实现页面间的跳转

一旦JS脚本载入完毕,我们将脱离服务器,在本地渲染所有的内容,因此可以达到很快的速度。我们设置了一个全局的事件监听器——它监听页面上所有的锚点的单击事件。我们尽可能将单击事件转换为页面内的跳转。然而,对于不能在客户端渲染,或是用户单击鼠标中键或者按住CTRL键的情况下,将打开一个新的页面。

在这种情况下,浏览器中的地址可以代表当前页面的状态,所以我们可以复制/分享这个地址以分享当前页面。

4.刷新输出数据块

为了让数据下载完就立刻呈现出来,我们使用刷新输出数据块的技术(flushing chunks),这样用户就不需要等待整个页面载入完成。

我们的实现方法是:
-最开始只载入最精简的数据,剩下的交由异步请求去获取。
-仅当需要的数据没有下载完全的时候才阻塞页面的渲染。

这个系统也可以让我们更快的加载CSS,JS,图像等等资源,并让这个网站显得更快且响应更加及时。

5.使用IFRAME

突破浏览器并行加载JS脚本的限制(参见 http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/),[一般浏览器在一个页面中最多会并行加载3个JS脚本或是其他资源文件]——我们在页面的BODY的最前面加上一个IFRAME。其间的具体实现比较复杂,但是幸好我们还有Closure套件,实现此类功能非常方便。总而言之,相较网页速度的提升,这些努力都是值得的。

同时,你可能发现了我们通过XHR而非<style>标签来加载CSS样式表——这个设定并非为了优化,只是为了突破IE浏览器中一个样式表内选择器个数的限制。

最后的话

略。。。。

[译]关于Android图形系统的一些事实真相

Posted in 学习笔记 on 十二月 8th, 2011 by 亚楠兄 – 我要抢地板

原文地址:https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s

(作者更新:后面的很多评论认为我写这个只是为Android不如IOS流畅乱找借口或是不体贴用户等等,我在这里需要澄清一下:之所以写这篇文章,仅仅是为了纠正网上传播的关于Android的各种错误认知。我并非是为了解释什么,只不过是想给那些关注Android却又被网上各种错误认知困扰的童鞋提供参考)

现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽,下面给大家一些关于Android硬件渲染的事实真相:

1. Android 一直在使用硬件加速。实际上从1.0版本之后,所有的窗口元素的合成与显示都是通过硬件完成的。

2.这意味着许多你所看见的动画都是被加速过的:按钮的显示、通知栏下拉的阴影、不同Activity之间的切换动画、弹出窗口以及提示框的显示和隐藏等等等等。

3.Android以前使用软件方式(与硬件加速相对应)来控制各个窗口元素的渲染,例如下图的UI,其中包括四个窗口组件:状态条、壁纸、桌面上的的启动器、以及菜单。如果其中一个元素更改了自身的内容,例如一个菜单条目被高亮,那么在3.0之前的版本中,系统会使用软件方式来绘制新的内容。不过此时,并非所有的元素都需要被重新绘制,而各个窗口元素的拼接也是通过硬件方式完成的。类似的,任何窗口的移动:例如菜单的上下运动是完全通过硬件方式渲染的。

4. 现在我们来关注窗口元素的内部渲染过程:实际上为了达到每秒60帧的FPS,你并不一定非得要硬件加速。帧速取决于要显示的像素的数量和CPU的速度。比如说,二儿子(Nexus S)完全可以以60FPS的速度在它800*480分辨率的屏幕上完成任何普通的原生UI动画,类似列表的滚动等,完全没有问题。而最初的Droid系列却很难达到这样的速度。

5.在Android3.0中可以实现窗口元素”完全”的硬件加速绘制,而Android 4.0也基本上与3.0相同。 从3.0开始,如果你在应用中设置了一个标志允许硬件加速,那么此时所有的窗口的绘制都会交给GPU来完成。而在Android 4.0中最主要的改变就是:在面向Android 4.0或更高版本的应用中,硬件加速是被默认开启的,因而再也不需要在配置文件中设置 android:handwareAccelerated=”true”. (注意,我们之所以不允许面向之前版本的应用默认打开硬件加速,是因为光靠硬件加速,无法很好的完成某些旧版本的绘制操作;同时在应用需要其中一部分UI更新的时候,会影响其的一些表现。对于目前现有的很多应用,强制开启硬件加速,会明显的感觉到卡顿)

6.硬件加速并不如大家所认为的那样完美。例如在基于PVR驱动的设备上(比如二儿子跟三儿子),光是在进程中开启OpenGL就得占用8M的RAM——对比一般进程的2M的开销实在是巨大。大家都知道,RAM是有限的,如果一大部分被拿去绘制,那么其他正在运行的进程就会因为缺少内存而出问题,比如严重拖缓应用间切换的速度。

7.由于OpenGL的额外开销,一般情况下,我们最好不要过多的使用其进行绘制。我们现在就在做一些工作,让Android 4.0能在不开启硬件加速的情况下流畅的在二儿子上使用:这样我们就不需要在系统进程中浪费8MB的内存用,也不需要在手机进程中浪费额外的8M内存,或者是在系统UI进程中的8MB内存 等等等等。相信我,你一般会忽略——用OpenGL来绘制一些类似状态栏的更新或是某些动画是完全没有好处的。

8.硬件加速并非流畅UI的“解药”。事实上,我们为了让UI更流畅,尝试了很多不同的方法,比如说:在1.6中引入了对前台/后台进程的调度策略,在2.3中对输入系统的重写,而后”严厉模式”的使用,并发的垃圾回收机制,载入器等等。如果你想达到60fps的帧速,你只有20毫秒的时间来处理每帧的内容。这时间实在太短,光是在UI进程中读取存储卡的操作产生的延时就会大于这个时限,尤其是在写操作的时候。

9.举些最近发现的影响UI流畅度的例子:我们注意到在二儿子上,使用4.0时列表的滚动就不如使用2.3时流畅。而导致这个现象的原因则是计时器的轻微漂移:有些时候应用正在接收触摸事件并在屏幕上绘制,而在上一个动作还没完成的的时候,就接受到下一个事件并开始绘制,导致它丢失了当前这帧。尽管发生这种现象的时候,帧速能达到稳定的60FPS.(当然,这个问题已经修正)

10.当人们比较Android跟IOS上浏览器的滚动流畅度的时候,他们所看见的差别实际上并不是开没开启硬件加速所致。 最初的时候,Android使用了一种完全不同的渲染策略,并做了一些折中:网页被转换成一个”显示列表“,并持续的在屏幕上进行绘制——而非使用块(Tiles)的形式。它有一个优点:就是在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象(译者注:早期的IOS上这种现象非常明显,快速滚动到底部时要等一会网页才会一块一块的绘制出来)。 而这个方法的不给力之处就在于页面复杂的时候,帧速就明显低了。而在Android3.0中,浏览器开始使用块的方式进行渲染,于是它可以在滚动或是放大的时候保持一个稳定的帧速,自然也会出现新的块没有被立即渲染出来的情况。 与此同时,每个块都是以软件方式绘制的,我相信在iOS中也是这样的。(在3.0之前的版本中,即便没有开启硬件加速,基于块的策略也可以使用。而且如我之前提到的,二儿子可以很容易的达到60FPS)

11.硬件加速并不能如大家所想奇迹般的让绘制的问题统统消失。GPU的性能就是一个很重要的限制。最近一个很有趣的例子:基于英伟达的Tegra2的平板可以很容易的以60FPS的速度访问2.5次1280*800分辨率的屏幕中的任何一个像素点。现在考虑到在Android 3.0中切换到所有应用列表的情形:你需要绘制背景(1x 所有的像素)、接着是启动器和桌面小工具(假设内容不多,花费0.5x),接着是所有应用的黑色背景(1x),再接着是所有应用的ICON(0.5x)。显然,到这一步我们就已经超过了原先的预算了,而此时我们还没完成各个独立窗口元素的拼接并做最后的显示。想要取得帧速60FPS的动画效果,Android 3.0以及后续版本使用了一系列的小技巧。 其中主要的一个就是: 它将所有的窗口元素平铺在一个层中,而不是挨个拷贝到GPU的缓存中。然而即便这样,我们已然超出预算,幸好我们还有另一个策略:因Android中的背景是一个独立的窗口元素,我们可以将它设置的比屏幕更大来放置整幅位图。假设用户开始滑动,背景会跟着运动,此时却并不需要任何特殊的绘制,仅仅是移动窗口即可,而由于这个窗口是在一个平铺层上,我们甚至不需要用GPU来将这个窗口元素组织到屏幕中输出。

12.随着屏幕分辨率的不断升高,能否达到60FPS跟GPU的速度尤其是内存总线带宽息息相关。事实上,如果你想要提升硬件的效力,特别注意得提升内存总线的带宽。很多时候CPU(特别是带有完美的NEON指令集的CPU)会比内存总线块的多。

作者更新:下面居然有这么多讨论,但是我木有能力解释清楚相关的所有问题了。不过我会尽力在这里提供一些我认为比较有趣的观点。

有些人认为盖世兔(Galaxy S2)已经有了一个非常流畅的UI,并指出他们已然超越三儿子(Galaxy Nexus)并做了相当多的提升。事实上,大家忽略了很多设备上的差异,比如盖世兔的屏幕是480*800而三儿子是720*1280,如果二儿子在它480*800的屏幕上都能达到60FPS,那么拥有更NB的CPU的盖世兔必须得同样流畅嘛。

而两者之间最大的差别就是三儿子需要同时绘制2.4倍于盖世兔的像素。这相当于在单核上提升到2.4倍的速度。(需要指出 在UI渲染的时候,多核是没有意义的,因为最终的渲染必须要在一个主UI线程中完成,无法并行)

这就是为什么硬件加速非常重要:随着像素的提升,GPU通常能更好的处理图像相关的运算。事实上,这是我们在Android中引入硬件加速的最大动力。在720*1280的屏幕上,现有的ARM CPU达到60FPS很吃力,但是通过GPU渲染就不同了。同样,在与盖世兔的比较中,同时打开没有硬件加速的应用,在三儿子中无法达到盖世兔同样的60FPS,是因为它得渲染2.4倍于盖世兔的像素。

在最后,还得提及GPU的另外一个优势:GPU的引入让许多绘制效果变得更加容易。比如你要以软件形式绘制一个位图,你除了设置一个偏移量,不能做任何事。仅仅是放大/缩小这个位图就得花上相当多的时间进行渲染。而在GPU中,此类转换则相当容易。这就是为神马新的默认主题Holo使用硬件加速绘制背景。而在没有开启硬件加速的应用中,此类背景会自动去掉~

[摄影]单反、手机、与卡片机推荐

Posted in 时代 on 十二月 4th, 2011 by 亚楠兄 – 我来抢沙发

看到一份统计,图片EXIF设备参数排行,不禁感觉佳能真心霸气啊(至少在国内范围的)。而统计一下不同设备的使用率,也可以大概知道什么档次的摄影需求可以购入什么型号的机子了~

分析

1. 5D Mark II作为高端单反,真心是一代神机啊,大家的选择还是不错的~

2. 接下来是入门单反了,佳能的三位数大军很给力,600D,550D,500D,450D都有很多的使用者。作为入门单反,也是极具性价比的。在目前看来,600D跟550D都是很不错的选择。

3.尼康的D90和D80作为中端单反,使用者还是非常多的。而且两个型号其实拍照差不多,D90在D80的基础上只是进行了功能上的升级,唯一一点就是D80停产,基本买不到正品了把。

4.卡片机:进入排行榜的卡片机就佳能的IXUS系50,95 IS,200 IS 和 A1100 IS了,再加上 SONY家的DSC-W310,感觉这个跟市面上的推荐都差不多,都是千元及以下的口碑货~可惜都停产了啊

5.手机: iPhone 4 虽然很装B,但是拍照真心不错,而且最主要是方便,能够拍完就分享到各种SNS微博上,毕竟是街机嘛~ 而诺基亚的 5230与5233也证明了底端机市场诺记的强大~虽然大家都在唱衰塞班,但是至少在低端机器上的表现还是很不错的,各种应用也能轻松的分享身边精彩,而且诺基亚的镜头比同档次手机还是好很多的说~

基本上这就是通过统计数据得到的推荐了~大家可以作为参考~~

附排行如下:
阅读更多 »

Android拾遗

Posted in 学习笔记 on 十一月 30th, 2011 by 亚楠兄 – 我来抢沙发

学习&实践Android开发之中,发现了好多恶心问题啊 Mark一下~

Tread 的 Run 与 Start
在写ListView的时候,想通过新建一个线程来更新Adapter的数据,让此线程sleep 3000ms,再通过Handler返回UI线程进行更新,结果发现主UI线程也被睡了。。。研究了一晚上,终于发现我建立线程的时候,调用的是 Thread.run(); 此时主线程会等到新的线程执行完才会继续执行,囧。
应该调用Thread.start() 才对,这样会新开一个线程。

透明颜色
类似 AARRGGBB 的写法,我一直使用的是

@color/transparent = #00ffffff

设置了一个背景图,然后在ListView之中设定其

Divider = @color/transparent, CacheHintColor = @color/transparent,

结果发现在拖动的时候还是会有黑影出现,于是把颜色改成

@color/transparent = #00000000

这时候,拖动的时候倒没阴影了,但是Divider显示却出问题了,变成了后面ImageView的内容,最后只好折中,设置

Divider = #00ffffff, CacheHintColor = #00000000,

结果。。。奇迹般的没有问题了。。。。真心诡异啊

LayoutAnimation
在第一次给ListView设置Adapter时,可以设定LayoutAnimation给每个View进入加入一个动画。但是在之后,增加列表数据,并调用notifyDatasetChanged更新显示的时候,新加入的条目是不会以动画的形式加入的,实在无奈,只能自己写一个动画管理器了。
实现的思路是:ListView作为ViewGroup,取得其中的每一个View,而后设定Animation…..当然,这样有一个好处,就是可以控制每一个动画播放的时差,可以让动画越来越快~~

ListView中条目动画形式飞出
在设置了Animation之后,每一个条目会依据动画飞出,但是在动画结束之后,会原样重现在原先的列表中,没有办法,只能对每一个动画加载一个监听器,动画结束之后,调用 setVisibility(View.INVISIBLE),此时不能用View.GONE哦~GONE会释放这个列表所占用的位置,使得后面的列表项向前移一格

ListView的缓冲
Android默认的ListView居然没有缓动,也就是移到顶部或尾部的时候不会跟iOS一样象征性的继续滚动然后弹性恢复,而是直接就停住了。用户体验非常不爽,不过网上关于这个的教程也蛮多的~我就不啰嗦了~自行百度把

。。。。继续整理 挖掘Android的恶心问题。。。。。

2011GDD(谷歌开发者日)大会

Posted in 时代 on 十月 27th, 2011 by 亚楠兄 – 我来抢沙发

好久木有更新了 果断写篇游记凑个数啊哈哈

拿到了邀请函,今天去鸟巢边上的国际会议中心参加谷歌开放者日技术大会,开始还以为跟百度世界大会一样是在郭嘉会议中心呢,百度大会没去实在是失策啊失策。

早早的就到了会场,然后吃吃零食看看合作公司的小展台,就等待入场了,不过时间太早,很多公司的展台都还没布置好的说~

进了主会场就开始了各种主题演讲~一开始的Chrome广告以及配合Chrome展示的舞蹈感觉超赞啊~动作跟视频还是蛮同步的!一阵中文寒暄讲解创新之后,各位谷歌的Boss就上场了,不过接下来的都是英文的 = = 还好说的蛮标准的 表示经过HowIMetYourMother的磨练没有压力。

先是Google Map的创始人Michael Jones上台讲述GoogleMap给咱带来的改变以及新的技术~几个例子印象蛮深刻的:
  一是利用Google Map API实现的GTA里的Liberty City的街景地图,这个以前就有了~看过
  二是大家利用开放的地图编辑功能去完善自己身边的地图,并给出了一个中国周边的世界地图,展示用户创建地图的热点图,可惜 中国那就是一片空白,深意啊深意
  三是使用MapsGL进行的加速 非常流畅!
  四是通过GoogleMap的接口确定海上每条船的位置和方向,在有人遇难的时候,寻找周围最近的船只及时去营救,这个还是非常赞的!以前也看过~
  再就是介绍Google新出的基于Google Map的 Fusion Tables了~通过用户输入数据,快速在地图上呈现出来,并能进行类似SQL的筛选等等,反正功能貌似蛮多,但总觉得没啥用。专门用中国的网络覆盖率来作演示(其中提到了internet penetration我一直在想是网络入侵 到后来才想起来是网络覆盖率。。。)后来专门去听了Mano Marks的专题演讲,还是觉得Fusion Table跟我们没啥关系。。。只适合做统计报表的把。。。。
  期间还展示了google地图中的鸟巢 从2002-2008 每一年的变化,后来又讲了世界上只有22%的人能够接入网络,而科技就是为了让更多的人去接触网络神马的~而且科技就是要将人的IQ提高20,这个要赞啊哈哈

阅读更多 »

AJAX跨域请求的实现

Posted in 学习笔记 on 七月 20th, 2011 by 亚楠兄 – 我来抢沙发

跨域就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。例如 http://www.a.com/a.js 与以下同域:

  • http://www.a.com/b.js
  • http://www.a.com/script/b.js

与以下域名不同域:

  • http://www.a.com:8080/a.js //端口不同
  • https://www.a.com/b.js //协议不同
  • http://70.32.92.74/b.js //对应IP 依旧不同域
  • http://script.a.com/b.js //子域不同
  • http://a.com/b.js //子域不同

即:域仅仅是通过“URL的首部”来识别,即window.location.protocol +window.location.host,也就是说域名, 协议与端口三者都相同才算是一个域。

跨域调用的方法

主要有以下几种:

  • 利用FLASH ,即JS传递数据到FLASH,由FLASH进行提交,参考这里
  • 同主域时候使用document.domain,但是有安全隐患,参考这里
  • 不同主域的时候使用Iframe,其中又有location.hash(参考这里),window.name(参考这里)或是代理iframe(后面有说明)几种方式实现数据交互
  • JSONP – 即动态加载<script>标签,达到模拟GET请求的目的,同时反馈回来的数据可以直接被执行 参考这里
  • HTML5 postMessage接口 它可以在指定的iframe和window之间实现消息的传递 可以参考这里
  • HTML5 webSocket 也可以实现跨域调用,可以参考 http://html5demos.com/web-socket

阅读更多 »

BGM推荐~~~

Posted in 小玩意 on 四月 20th, 2011 by 亚楠兄 – 我要抢地板

反正就是各种音乐了 管它游戏动漫的 都很给力就对了

P.S 以下曲目播放地址皆盗链。。哥哥姐姐叔叔阿姨弟弟妹妹不要怪我。。。。。

以下是情绪比较稳定的

[超越时代之幻想I&II]
犬夜叉里的BGM首首经典啊!!!当然跟俺Blog的副标题是不是很像???你懂的!!!

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

[悲运の巫女]
犬夜叉里的BGM首首经典啊!!!最喜欢桔梗~~~

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

[the legend of ashitaka]
幽灵公主的主题曲之一 绝对的经典啊。。。。太霸气了

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

[overworld]
黄金太阳世界BGM 很大气!!!

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

以下是爆燃的

[热烈的决斗者]
第一代游戏王战斗BGM 绝对的激燃!!!还有《神の怒》和《千年の力》 都超级经典!!!

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

[Venus Lighthouse]
黄金太阳经典曲目 激动!!!

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

[Holy Orders(Be Just Or Be Dead)]
罪恶装备BGM神曲之一 Ky’s Theme

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

演唱版的看这里

[Writhe in Pain]
罪恶装备BGM神曲之一 Millia’s Theme

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

演唱版的看这里

防止沉迷!!!拒绝堕落!!!

Posted in 小玩意 on 四月 6th, 2011 by 亚楠兄 – 我来抢沙发

是不是感觉天天刷微博刷人人挂百合玩网游很浪费时间,然而却欲罢不能?

一打开电脑,鼠标不自觉就点开网游或人人,结果发现一天时间就被浪费掉了?

好不容易狠下心来 决定不再上线 可惜没过几天又忍不住了 努力白费?

那不如就改掉密码吧!

下定狠心 把害你沉迷帐号的密码给改掉!!!

把密码改的连自己都记不到 然后密码就不用保存在自己电脑上了,交由咱帮你托管!!!

同时设定一个期限:到期之前,系统是绝不会轻易把密码透露你的!

想不想试一下?从今天开始,拒绝堕落!!!

由于采用Google App Engine搭建,所以保证了数据的安全和隐私,可以访问
http://stopfallen.appspot.com

可惜由于某种原因appspot在国内无法被正常访问 所以打不开上面网址的童鞋可以点开中转
http://stopme.co.cc

[一起看电影] 之 猫头鹰王国

Posted in 电影 on 三月 18th, 2011 by 亚楠兄 – 我要抢板凳

片名:猫头鹰王国:守卫者传奇
英文名:Legend of the Guardians: The Owls of Ga’Hoole
类型: 动画 / 奇幻 / 冒险
画面指数:★ ★ ★ ★ ☆ (画面非常绚丽!可是总觉得怪怪的)
剧情指数:★ ★ ☆ ☆ ☆ (真的是儿童片喔)
配乐指数:★ ★ ★ ☆ ☆ (总是没神马感觉啊)
听力指数:★ ★ ★ ☆ ☆ (不用字幕肯定没问题啊哈哈)
总结:鸟版魔界 还是尼玛的儿童片!!!

作为斯巴达300的导演,Zack Snyder居然会想到去拍动画片!!!

而且还是尼玛的儿童片!!!

是不是为了个3D效果主角一定要能飞!!!鸟啊恐龙啊飞机啊都演过了,这次居然拿尼玛猫头鹰来充数了有木有!!!

华丽的开场!!!主角惊天动地的登场!!!看见那忧郁的眼神有木有!!!

1

阅读更多 »

[一起看电影] 之 超级大坏蛋

Posted in 电影 on 三月 17th, 2011 by 亚楠兄 – 我要抢地板

片名:超级大坏蛋
英文名:Megamind
类型: 喜剧 / 动作 / 动画
画面指数:★ ★ ★ ★ ★ (非常有个性!)
剧情指数:★ ★ ★ ★ ☆
配乐指数:★ ★ ★ ★ ★(“loving you”能不能不要这么淡定)
听力指数:★ ★ ★ ☆ ☆(不用字幕肯定没问题啊哈哈)
总结:好人与坏人只是一线之间

倒序的开始,来讲述我的故事吧。

阅读更多 »


无觅相关文章插件,快速提升流量