Updates from 二月, 2013 Toggle Comment Threads | 键盘快捷键

  • Roger 11:11 am on February 2, 2013 固定链接 | 回复
    Tags: , ,   

    我的2012 

    去年放假时为我的2011一整年写了一篇回顾,今年也打算继续,希望以后每年坚持下来形成习惯。

    2012年的最大变化就是工作内容从外壳的GUI框架层转向内核的网页渲染:
    • 年初第一季度的研究重点是在Android 4.0系统浏览器的硬件加速AC渲染架构和整个适配层的架构;
    • 接下第二季度的工作是参考系统浏览器的渲染架构,在我们的浏览器上也实现多线程渲染架构,当时考虑4.0的渲染架构太过复杂,而且很多版本兼容性问题无法很好解决,所以还是以2.3的系统浏览器为主要参考对象;
    • 完成初始的预研工作,实现演示Demo后,项目这边决定第三季度在8.6上多线程渲染架构改造,不过后续的实际开发工作中碰到了很多困难,主要是因为程序从原来的单线程架构一下子改成多线程,需要重写的模块和修改的地方非常多,一些原来没有很好处理多线程的地方引发了大量的崩溃问题,并且多线程在低端机上的性能表现一开始不是很好,也花费了大量的时间去做性能分析跟优化;
    • 接下来的8.7版本我的主要工作是在8.6的基础上进一步优化一些基础渲染性能,如滑屏,缩放等,最终的表现也还算不错,渲染性能比起以前的版本改进很大,虽然还无法跟支持硬件加速的4.x系统浏览器相比,但是在还未支持硬件加速的情况下也基本上做到极致了;
    • 做完8.7后,8月下旬开始准备我们浏览器整个适配层的改造工作,在8.6,8.7多线程渲染架构改造的基础上,我们决定完全抛弃掉以前自己写的C++适配层和一套从塞班时代延续过来的自己开发的C++ GUI Toolkit,完全转向跟系统浏览器一样的Java和C++结合的适配层架构,跟Android SDK一样,内核为外壳提供一个标准的Android UI组件WebView,而外壳完全使用Android原生的UI组件进行开发。不过跟8.6,8.7时不太一样的地方在于,这次我主要负责前期技术研究和框架搭建的工作,在完成Demo,技术文档和培训与宣讲后,后续的主要工作就是协助其它同学对各自负责的模块进行设计与实现,只负责一些设计和代码Review的工作而不再直接参与8.8的项目工作;
    • 10月开始了硬件加速方面的研究,在之前工作的基础上,开始移植4.1系统浏览器的渲染架构代码(这时4.1已经发布了,并且4.1比起4.0又复杂了很多),初始的移植工作完成后,已经可以运行一个硬件加速AC的Demo,接下来的主要工作就是解决版本兼容性问题,我们不但需要解决2.x和4.x之间的版本兼容性问题,而且还要解决4.x不同版本之间的兼容性问题,版本兼容性问题的解决使得我们可以一个程序同时运行在2.x和4.x上面,支持非硬件加速和硬件加速两种不同的渲染路径,可以在运行时根据系统决定选择哪种渲染方式,最后因为4.2的发布,我们又把4.2的代码也同步了过来;
    • 前面的工作完成后就差不多到年底了,马不停蹄地又开始了硬件加速2D Canvas的研究,为此也学习了Android的OpenGL ES编程,加深对Android Native Window System,EGL,GLES的理解,另外还研究了Chrome for Android的2D Canvas实现,到目前为止,硬件加速2D Canvas已经基本实现,Demo初始的测试结果还不错,跑GUIMark 3的帧数比Chrome正式版(Chrome 18)要高,不过比Chrome Beta版(Chrome 25)要低,但是考虑到目前我们所使用的Skia的代码比较旧(来自Android 4.2 AOSP),而Chrome这几个版本还在不断优化Skia的性能,后续升级Skia后,相信性能还会再有所提高;
    2013年,最重要的工作就是在之前的硬件加速相关的研究工作的基础上,协助硬件加速AC,硬件加速2D Canvas顺利进入产品,从过往的经验也可以知道,从Demo到产品,后续要做的工作还很多。另外下半年也有可能会去研究WebGL(3D Canvas)。

    而对自己的职业发展的规划,主要的技术研究方向还是会集中在以下几个领域:
    1. 网页渲染相关的研究(CSS动画,Filter/Shader,2D/3D Canvas,Chrome的多进程渲染架构等等);
    2. Android图形子系统
    3. 2D/3D绘图(Skia,OpenGL ES等等);
    Advertisements
     
  • Roger 11:02 am on April 7, 2012 固定链接 | 回复
    Tags: Google, Personal Information   

    Google了解我多少? 

    Google CEO Larry Page在就职满周年后,发布了一篇周年回顾及展望未来的文章(2012 Update from CEO)。文中提到一个重要的观点是,通过了解您的身份和关系,为您输入的搜索词赋予一个可能的上下文语境,Google才能为您提供更精准的搜索结果,而不是一个仅仅通过Page Ranking得到的大众化的结果。

     

    Understanding identity and relationships can also help us improve search. Today, most search results are generic, so two strangers sitting next to each other in a café will get very similar answers. Yet everyone’s life experiences are unique. We are all knowledgeable about different things; we have different interests and our preferences—for music, food, vacations, sports, movies, TV shows, and especially people—vary enormously.

     

    Imagine how much better search would be if we added… you. Say you’ve been studying computer science for awhile like me, then the information you need won’t be that helpful to a relative novice and vice versa. If you’re searching for a particular person, you want the results for that person—not everyone else with the same name. These are hard problems to solve without knowing your identity, your interests, or the people you care about.

     

    那么,Google有多了解我的身份和关系呢?无可置疑,作为一个”狗粉“,我是一个重度的Google服务使用者。

     

    1. 使用Google搜索,Google知道我全部的搜索历史;
    2. 使用Chrome,Google知道我全部的浏览历史,包括3台PC,1台手机和1台平板,浏览历史在这5台设备中自动同步;
    3. 使用Gmail和通讯录,Google了解我的邮件,电话联系人关系,了解我邮件的内容;
    4. 使用Google+,Google了解我关注谁,谁关注我(在邮件和电话之外的社会关系),我最近的活动,我对哪些文章感兴趣(为哪些文章+1);
    5. 使用Google相册,Google知道我拍了哪些照片,如果照片附带地理位置标记和人物标记的话,它更知道我去了哪些地方,跟哪些人关系密切;
    6. 使用Google Map和定位服务,Google了解我的居住地,了解我的行踪;
    7. 使用Google Reader,Google了解我感兴趣的信息和专业方向;
    8. 使用Google Calendar,Google了解我的日程安排,哪些日子对我很重要(我的生日,家人的生日,结婚纪念日等等…)
    9. Google Profile里面记录了我的一些个人经历和信息;
    10. Google Play记录了我使用的Android应用的信息;
    11. 如果Google输入法足够”邪恶“的话,它甚至会知道我每时每刻输入的文字…
    12. 好吧,我的Blog从Bloger转到了WordPress…

    喔,如果Google拥有足够智能的数据分析和挖掘技术,它甚至可以做到比我自己还要了解我,毕竟每个人看待自己都是带有一定的主观看法。所以这也是为什么Google希望可以统一使用一个用户在不同服务中的数据,通过整合用户在不同服务的数据,得到一个更完整的用户身份和关系的认知。(如果我没有理解错误,Google新的隐私政策的目的就是允许Google统一使用用户分散在不同服务的数据)

     

    上面所述听起来似乎满恐怖,我应该为此感到担心甚至恐惧吗?我个人的看法是 —— 首先,其中一部分所谓的隐私实际对大部分人来说(包括我)并不重要,相反,更多的人乐意公开关于自己的更多信息从而在社交网络中获得更多的关注,要是真的担心这些信息的公开,那就根本不应该使用Facebook,Twitter,微博等服务了;其次,如果为了获得很方便的服务,而必须允许服务提供者获得我的更隐私的信息(这些信息不会在社交网络上公开,比如搜索历史,浏览历史,通讯录等),相比其它公司,我更愿意相信Google,相信它的职业操守和安全防护能力,所以Google提供更多服务,并且打通不同服务之间的障碍对我来说是一件更好的事情。

     
    • 红心地瓜 5:34 下午 on 四月 10, 2012 固定链接 | 回复

      谷歌同学,你太了解我了…..

      • 匿名 7:41 下午 on 六月 21, 2012 固定链接 | 回复

        那麼 google 會不會被政治手段給利用了…或是有心人事?

  • Roger 1:26 pm on January 19, 2012 固定链接 | 回复  

    我的2011 

    今天是放假的第一天,也可以坐下来回顾一下自己的2011,在展望一下新的一年。

    去年9月份的时候,我写一篇文章“新工作一年回顾”,回顾了加入UC后一年来自己的收获,最后写道:

    未来需要提高的部分:

    • GUI框架仍然是一个飞速发展的领域,特别是在以下两方面 —— 声明式UI(使用脚本描述界面,使用JavaScript处理事件),和GPU硬件加速。自己在这个领域仍然有很多需要学习的东西。

     

    • 浏览器核心,毋庸置疑,这部分技术价值含量高,而且发展十分迅猛,即使在实际工作中缺少机会,自己仍然需要更多利用业余时间进行学习和实践。

     

    在9月份后,虽然大部分时间还是参与项目的开发,完成UC8.1,8.2的部分功能。不过也抽出了一些时间去研究Android的GUI框架和图形子系统(Graphics System),特别是关注Android3.0开始支持2D硬件加速绘图后的系统演化。虽然仅仅是了解一些皮毛,但是还是收获了很多知识,并把了解到的部分整理成两份文档:

    新的一年,工作上也如自己所愿,转向了浏览器核心引擎的开发,根据自己以前所擅长的知识领域,首先把主要的工作方向定在页面渲染的部分,现代浏览器的页面渲染已经变得非常复杂,我想今年的目标就是能够把这一块完全吃透。

    加油吧,2012!!!

     
    • tomcat 5:00 下午 on 四月 6, 2012 固定链接 | 回复

      你的博客写得不错 对我很有帮助 我会经常上来逛的:D,想问你关于硬件加速的问题,我现在在做一个平板上面的蓝光碟播放器项目,底层是自己用C++实现的player而没有用android自带的player,播放其他格式的视频都还可以,可是播放蓝光数据的时候就卡了,估计是没有硬件加速的问题,请问像这种项目我应该如何调用android的硬件加速呢?

      • tomcat 5:03 下午 on 四月 6, 2012 固定链接 | 回复

        是不是加上android:hardwareAccelerated=”true” 这句代码的话,我在底层交给surfaceView的图像数据都是用硬件加速画到surface上?

    • Roger 5:22 下午 on 四月 6, 2012 固定链接 | 回复

      SurfaceView不是硬件加速的,4.0新增的TextureSurface才是硬件加速的,用于取代原来的SurfaceView和GLSurfaceView。

      • tomcat 5:40 下午 on 四月 6, 2012 固定链接 | 回复

        也就是说如果我在4.0以下环境开发的话,要实现硬件加速只能自己去实现一个类似TextureSurface的东西了?

    • tomcat 5:44 下午 on 四月 6, 2012 固定链接 | 回复

      也就是说如果在android4.0以下的环境开发,要实现视频播放的硬件加速只能去实现一个类似TextureSurface的东西吗?

      • Roger 5:45 下午 on 四月 6, 2012 固定链接 | 回复

        TextureSurface底层使用的其实就是SurfaceTexture和SurfaceTextureClient,SurfaceTextureClient是新增的Native Window,可以用于离屏绘图。

      • tomcat 6:10 下午 on 四月 6, 2012 固定链接 | 回复

        谢谢!,我去研究一下,有疑问再来请教:D

  • Roger 10:25 pm on September 26, 2011 固定链接 | 回复  

    带人,带项目和带团队 

    在国内的IT公司里面,从技术转向管理工作,一般都会先经历带人,带项目,带团队这3个初级阶段(晋升到中层管理后,一般都是负责一个部门和一个产品,包括多个团队)。

     

    在上一个公司,我大概也都经历过上述三个阶段,回想之前的这段经历,也不禁有些感慨。

     

    总的说来,带人的话感觉自己还是做得相当不错的,带出来的人成长的都很快,基础也打的比较扎实,最重要的是培养了对软件开发的正确理解,在分开后的一些闲暇接触中,他们大都很感谢我当时给予的指导和对他们职业生涯的帮助。

     

    带项目感觉自己做的也还行,带的几个项目最后都比较顺利完成,客户也没有太多挑剔,总的来说还是比较满意。这些项目在一开始都能够建立一个比较良好的系统基础,后续开发的分工合作,计划安排和质量都很好的控制在预设的范围之内。

     

    带团队我自己感觉就做的比较差强人意了,这里有主观的因素,也有客观的因素。主观的因素可能是我自己性格的原因,要带好一个团队,你需要关心每个成员工作上的事情,还有生活上的事情。他们生活是不是有什么苦恼,家庭有没有出现什么问题,心态是不是平稳,心思还稳不稳定,对公司满不满意,对当前的工作满不满意,对薪酬满不满意,这些一堆鸡毛蒜皮的事情都让我觉得相当的麻烦。其它的还有绩效评定时候需要做的平衡,协调跟其它团队之间的冲突等等更是让人头疼不已。想想当时自己面对这一堆问题,的确是有些驼鸟心态,能逃避就逃避。

     

    如果一个公司有比较成熟的管理制度,并且薪酬福利也比较让人满意,产品的前途光明,每位员工的士气都很高,那做为一个较为缺乏经验的初级管理者可能就容易的多。可惜当时的公司状况十分糟糕,刚好经历08年底的金融危机,公司在08,09年又是冻薪,又是不发奖金,很多部门还在裁员,员工的士气简直就是低落到谷底,加上当时部门的发展方向不明,新产品一直没有客户买单,更是让人人心惶惶。想想这些也是导致自己团队带的比较糟糕的客观原因了,这样倒是可以用“万方有罪,罪不在朕躬”来安慰一下自己。

     

    转到新公司之后,现在倒是什么管理工作都不需要做,只管做好技术相关的工作就够了,这样也比较符合自己的意愿,毕竟自己最擅长和喜欢的还是偏向研究性质的技术类工作,虽然工作很忙,但是性质还是比较单纯,算是脑累心不累了。

     

    不过单纯做技术,其实压力也不小,在国内的IT公司,单纯技术线的职业生涯发展并不算很光明,30多岁的老程序员总有老死在沙滩上的疑虑。不过自己对未来也还算比较有信心,一来随着竞争越来越激烈,产品对技术的要求也越来越高,也越来越多公司变得更加注重员工技术的发展和岗位的专业化,二来自己对自身的能力还是有相当的信心,凭借对技术的钻研和知识的积累,要死在沙滩上还是没那么容易 ^_^

     
  • Roger 10:26 pm on September 16, 2011 固定链接 | 回复
    Tags: ,   

    新工作一年回顾 

    不知不觉到新公司已经满一年了,回想一年前,自己的确做出了一个重大的决定,而从目前来看,这个决定还是相当正确的,当前的工作比较符合自己的期望,未来职业的发展也有更多空间。

     

    回顾这一年,自己在技术方面提高较多的方面包括:

    1. 对GUI框架设计和实现的理解 —— 在UC的这一年里面,大部分工作都跟GUI框架的设计和实现有关。刚进公司的第一件比较重要的工作就是为J2ME平台设计一个类似Android这样的现代GUI框架,虽然最后没有用于实际的产品,但是自己还是从中积累了很多经验,不但在设计和实现的过程中参考了Qt,Android,LWUIT等框架,同时也加入了很多特有的设计。在转到UCMobile后,大部分工作也是跟GUI框架里面的重要模块有关,包括动画框架,样式引擎,布局引擎等等。
    2. 对系统设计的理解 —— 因为有很多机会进行底层和中间层的系统和模块设计,感觉自己对系统设计的理解又提高到了一个新的层次。尤其是设计时需要考虑很多额外的约束,包括需要考虑J2ME平台本身的性能和内存耗费的限制,或者需要考虑兼容UCMobile原来的GUI框架等等,在这么多林林总总的约束下进行设计,迫使自己不得不绞尽脑汁如何在诸多因素中取得一个较好的平衡,从而极大锻炼了逻辑推理的能力,能够对一些设计中的细微之处把握的更精准,对模块之间依赖关系的掌控也更加得心应手。
    3. 对浏览器相关技术的掌握 —— 虽然自己一直在做浏览器产品的开发,但实际的工作跟浏览器核心的部分交集较少,不过也对相关的技术,包括HTTP协议,HTML规范,CSS规范,客户端JavaScript编程等多多少少有所了解,业余的时间也研究过一下WebKit的源码,特别是CSS的部分,因为实际的工作中实现过一个CSS解析器,所以这一部分了解比较深入。

    未来需要提高的部分:

    1. GUI框架仍然是一个飞速发展的领域,特别是在以下两方面 —— 声明式UI(使用脚本描述界面,使用JavaScript处理事件),和GPU硬件加速。自己在这个领域仍然有很多需要学习的东西。
    2. 浏览器核心,毋庸置疑,这部分技术价值含量高,而且发展十分迅猛,即使在实际工作中缺少机会,自己仍然需要更多利用业余时间进行学习和实践。
     
  • Roger 10:42 am on June 1, 2011 固定链接 | 回复  

    萱萱六一快乐 ^_^ 

    DSCN0620_conew1

    DSCN0687_conew1

     
  • Roger 3:56 am on May 8, 2011 固定链接 | 回复
    Tags: , 香港, iPad2, 平板   

    周末香港行 —— 奶粉,iPad2,XOOM 和 Android3.0 平板 

    110507A000

    iPad2的广告牌很显眼,但是所有苹果专卖都没货

     

    这个周末又去香港给女儿拉奶粉(一共拉了20罐,可以坚持大半年了^_^),顺便去逛了一下数码街,也看看能不能帮同事带一台iPad2。可是全部的苹果专卖统统没货,估计第一批货大半都被那些分销商瓜分干净了,在百老汇那边的商铺,一台iPad2被强制搭配超坑爹的皮套和贴膜各一枚,差不多要多出600~700港币的样子(皮套和贴膜看起来都很山寨,估计淘宝价200都有找…)。最后还是劝同事再等一段时间,等货源充足了就不会被坑这几百块钱。

     

    Android3.0的平板也纷纷上市,XOOM的32G 3G版本售价5380港币,Acer和Asus的16G Wifi版则都是3988,Asus的变形平板还可以接一个键盘底座,全套加起来一共4788港币,价格还算厚道。说起来目前出Android3平板的这几家都没有自己去客制化系统,一水儿的原生界面,不知道是懒得去搞了,还是为了抢时间上市来不及搞。

     

    有不少人觉得Android3.0平板取消了硬按键,有抄袭iPad的嫌疑,但实际上两者在发展方向上有很大的不同。iPad得益于大屏幕和分辨率带来的更好的视觉和阅读体验,但整个使用和操作上还是很像是大号的iPhone。而Android的平板系统更趋向于桌面操作系统化,底部的状态栏除了可以看到系统状态外,还可以切换程序和桌面,多个任务的预览和切换,后台通知的显示和呼叫,这跟桌面系统的任务栏非常相似。并且这种感觉在使用Asus的变形平板时更明显,接上键盘底座后,整个跟一上网本几乎没区别。由此可见,带有更大屏幕,更快CPU的Android平板会很快涌现,而适配键盘底座的机型也会成为主流。得益于台湾PC厂商进入平板市场,想必我们很快就会买到更便宜,功能更强的平板,而上网本这个市场会被进一步挤压以至于完全消失。

     

    如果Android的平板系统发展一如之前Android在手机的发展那样迅猛,这恐怕让Google的另一个OS ChromeOS有些情何以堪,毕竟两者重合的区域越来越大,未来两个系统会不会融合,还真的很难讲。

     

    最后不得不感慨一下人民币在大陆随着通胀而不断贬值,而在香港则因为汇率越来越低而升值(去年底还是0.86左右,这次去就差不多0.84了),去香港购物已经变成几乎买什么都比大陆便宜的地步,自己最喜欢的乐天熊仔饼200克大盒装在万宁特价21港币,而这边估计20多人民币都不止….

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
回复
e
编辑
o
Show/Hide comments
t
返回顶部
l
Go to login
h
Show/Hide help
shift + esc
取消