转发了微软中国MSDN的微博:#Connect# 跨平台Linux、iOS、Windows,.NET程序员雄起!微软兑现其支持跨平台开发的承诺,今天宣布全部.NET服务器端框架将走向开源,包括ASP.NET、.NET编译器、.NET核心运行环境、框架和库,让开发者能够使用.NET技术在Windows、Mac和Linux上开发应用!(发表于11月14日 20:59,来自Robbie Mosaic的微博评论(1) 转发

GDG DevFest

2013 GDG DevFest。上海东软件园二楼。主持人陆康,也就是交大BBS上大家所熟知的康爷(areyoulookon),他曾经是Google板的板主。

进入会场之前,原本以为需要签到,但实际上却是直接领资料和礼品卡,还有餐券和饮用水,还送一个袋子。实是非常体贴。会场很大,和大的电影院差不多,容纳400人没问题。我八点半到的,Yves当时还在东昌路。

GDG DevFest

开场主持人袁yi,播放了一段预先录制的视频,内容是栾跃对大家的欢迎和祝词。主持人介绍道,活动白金赞助商谷歌,然后是七牛云存储,博文视点,接下来还有好多,包括创智天地,创智空间。接下来是陆康发言。陆康说到七周七语言活动,交50块钱,给三道题,如果做出来,那么就把钱还给你,否则就吞了发给做得出题的人。Google I/O Extended。

Tony Chan(香港人?)讲Modern Android Design。怎样在Google Play上面做一个好的应用。竞争越来越大。质量和功能如何可以组合得更完美。相关网站Android Design in action。developer.google.com/design。Action Bar下面弹出的Navigation Drawer,类似于主菜单,用于在应用内导航。Combination。不要放两个应用在Google Play上面,一个手机版,一个平板版。用Fragment,自适应不同设备的屏幕大小,对于手机则显示两个屏幕,而在平板上则可以合并在一个屏幕上。或者使用SlidingPaneLayout。通常要考虑手机、7寸平板、10寸平板。还有一种办法是,micro reflow,比如,在平板上显示两列,在手机上显示一列。或者在平板上,每个项用大图标,手机上用小图标。或者在平板上文本大一些(考虑到年纪大的用户)。res/layout/*.xml可以用来配置不同设备上的布局参数,比如margin和文本大小等。不同移动平台的设计应该根据目标平台做优化,比如用Android平台,就最好用Android的原生控件,就算是从另一个平台移植过来的程序也是这样。

怎样的应用没有办法被Google Play推荐:没有feature graphics、logo’s rounded corner超过5%、使用其他平台的图标(比如苹果iOS的Share icon)、在UI里面有back button(iOS按钮)、退出的时候询问用户是否要退出应用(不符合Android生命周期模型;游戏里面back按钮应该和暂停按钮效果一样)。微信、新浪微博等应用就很follow iOS的设计,所以它们不会被Google Play推荐。但是人家是大厂,耍大腕,有啥办法捏?

许式伟,Go语言布道师,两年来讲了几十场Go语言,讲思维而不讲语法。最小心智负担原则:最少特性,最少惊异,最少犯错机会。Go, Next Java? No, Next C! less is exponentially more. 最对胃口的并行支持。类型系统的纲:interface。OOP:可以为struct定义方法,简化的符号访问权限控制(大写表示公开,小写表示私有),显式的this指针,包内可以访问私有成员(类似于C#)。函数多返回值(类似于ABAP;Go使用最后一个返回值代表错误对象),内置error类型、defer。功能内聚,强大的组合(composition,而不是继承)能力。消除了堆和栈的边界(自动分配)。最友善的C语言支持(类似于C#的p-invoke,go还可以内嵌C代码)。完整的演示文稿下载:http://open.qiniudn.com/where-can-you-use-golang.pdf

Go语言支持连接,使用Pipeline,组件与组件之间的连接方式。以软件工程为目的的语言设计,有那么一点点痞子气(并不怎么遵守学术派观点)。主战场实际上是服务端开发。将来会蚕食其他方面。C语言因为Unix而兴起,Go语言因为云计算而兴起。

云计算:服务外包代替技术外包。互联网服务的技术挑战越来越大。联网的人越来越多,人均的上网时间也越来越长。服务器压力今非昔比。富媒体越来越取代文字来成为表达的手段。运维难度也越来越大。竞争越来越激烈,巨头横行,大量的同质化产品(一堆公司会做同一个有用的点子),如何让自己跑得比别人快,创业者需要善假于物。所以我们需要强悍的服务器!(2007年用过Erlang,云计算刚刚兴起)。

服务器的核心问题:高并发(如何提高I/O并发,如何降低锁粒度)。一、异步回调模型。例子:Node.js。二、轻量级进程模型(提高I/O的方法就是让更多人干活,也就是多个轻量级进程,让设备忙起来)。例子:Golang。三、混合型。例子:Erlang,一开始以为它是轻量级进程模型,但发现它在高并发场合需要异步回调才能充分利用硬件。

锁。Erlang为什么不需要锁?不是因为函数式编程语言没有变量,而是因为,它串行化处理。go语言的goroutine不是串行化执行的--即使设置最大线程数为1也不能避免用户模式下goroutine的并发(多任务调度),所以仍然需要锁,不过是用户模式的锁。锁最大的问题是难以控制,不小心就忘记解锁。次要问题就是,它是性能杀手,因为加了锁了就串行化了。但是,相对于消息等其他通信原语来说,要快得多。就算是原子操作(interlocked sth.)也只比锁快一点。网上有人用go语言的channel来实现锁,这是很错误的做法。

sync.RWMutex(读写锁)。[]sync.Mutex(锁数组,适合数据分区)。除了七牛之外,现在豆瓣用go。美团用go。

go和其他语言不一样的地方是,goroutine实际上是线程池加上协程的模型。这样它的可伸缩性更加好。一般操作系统能支持几百个线程已经有点累了,几千个则是极限了。所以增加协程,在用户模式调度。它的实现会有I/O被动调度和抢占式调度两种。

午饭四菜一汤,咖喱牛肉很多,鱼也不少,青菜,木耳炒山药,酸辣汤,还有酸奶和香蕉。真的很不错哦~~

午饭遇到两个老兄在聊天,一个是VMware的,一个是国有银行金融类企业的(怎么听着名字叫摩根???),做产品设计。VMware老兄说他那边是工程师文化,我问他是否认识一位叫高博的同事,他说不认识(悲哀~~)。国企也加班,有一次搞到凌晨二点,而且,大领导说要做什么就得做什么,直接越级要求做某些功能,发布日期随心定,不顾客观规律,有一次把发布日期定在5月28日,说是黄道吉日,而这产品不仅要演示,还要让记者们实际操作一下,这么一来,基本的功能就必须做好,但是根本来不及,最后只能延期两次,到七月才做好。一些八卦:VMware兄认出对面那国企帅哥的时候,错把他当作另一个人了,原来那人也在同一家公司工作过,而且这两人是兄弟,长得很像。另外,国企哥说,张江高斯路附近有一个核物理加速器,底楼住户会受到影响。

外面有些赞助公司的推广,包括slideidea(www.sld.im)和触宝垃圾电话识别软件和手机输入法。

王淮做主持人。庞小伟,e都市的CEO,被投资人弄得不爽了,就不干了。产品和技术是核心。王建硕,2005年创办客齐集(2008改名为百姓网)。平时就拿代码来娱乐,有时把开源的一些代码当小说来读。创业的比喻:一开始就像火车站旁边开饭店,不需要太关注质量,但到后来就接近小区模式,需要回头客。比如说,流氓软件越来越少了,就算有也比较高级了,需要把功能做好了,不像以前用户很容易被骗。产品在早期最好就引入用户,这样可以让产品反馈的链条缩短。

创业的时候需要评估生意到底有多大。要和合伙人一起讨论到底要投资哪个方向。投资其实是很平等的过程。如果谈判了很多投资人,但大家都没啥兴趣,那么就是项目的问题。反过来,项目是好项目,那么就得选投资者。选的时候要注意,不要只是看谁给的钱多,就像结婚一样,找了钱最多的,期望很大,要是结了婚不幸福了,那就反而失望很大。如果投资人问出来的问题都不对路,那就不要谈了。最好的老婆对你的事业上会有很大帮助,中等的老婆不过问但也不添乱,差的老婆就给你添乱,投资者也是这样。投资人要有一个真正当好老婆的心态。王建硕说,VC要有服务精神,而不是像上级一样判断公司做得是好还是不好。

伟大的产品经理并不只是思考产品的交互和功能,还要考虑产品的市场将会是怎样。有时听到创业公司说,他们找不到人,但我(庞小伟)觉得关键是你花了多少时间,多么疯狂地去招人。(王建硕)技术人员和非技术人员的沟通会有障碍,因为技术人员的思路问题。但是要考虑我们的公司到底要做几年,到底我们公司是人心本善还是人心本恶,什么的,找合伙人的话,一定要长远目标要一致,小地方的看法则越不一样越好。(王淮)合伙人要日久生情而不要一见钟情。(王建硕)我非常认同这个观点,可能你的合伙人一开始是技术最牛的,但是公司运营长了以后总会招到技术更牛的人。

庞小伟:创始人可能是多个,而时间久了以后,CEO的地位会越来越重要,而第二、第三个合伙人则知道CEO的所有弱点,要是他们对这种情况反感的话,公司就会有危险。所以这个关过了,公司才会长久地发展下去。

王建硕:大公司要能持续地做出好的产品,才能战胜小公司。否则,他们就必须去买那些做得更好的小公司(让我想起了SAP和SuccessFactors)。

初创的公司怎样提高影响力:(王建硕)首先要问自己,为什么需要影响力。有一些媒体,小的时候需要影响力。但有的比如说做企业级应用的,关键则要把产品做好。如果真的需要,那么就可以通过推广啊、广告什么的来做推广。庞小伟:与其天天不断地去检查page rank,不如问自己是否做出来的东西解决了用户的问题,是否满足用户的需求。另外就是用户群在哪里,就去哪里推广。

像百姓网这样,王建硕需要花相当一部分时间来思考半年内公司应该怎样来发展。庞小伟:创始人时刻要关心竞争对手的动向,新的技术、新的功能等等。另外就是要想应该怎样管理,固然网上能找到很多这方面的资料,但是信息过多以后就形成了很多噪声,所以要形成自己的方法,慢慢建立起来自我。王淮:我两周读一本书,而不是碎片化的阅读。因为碎片化的阅读无法引发深度的思考。

14:30茶歇时间,有蛋糕、小番茄、薯片、提子等小食,以及可乐、雪碧等汽水。和王建硕先生稍微聊了两句。我还记得2001年他来交大Microsoft Club讲.NET,播放了一段有关smart phone的搞笑视频,美国大街,某人摔倒了,骨折了,他马上在地面上用smart phone通过.NET平台联系了他的私人医生。私人医生很快把他救了,然后通过.NET平台查到了他的历史病历。最后经过好久,出院了,刚一出院,到了大街上又摔倒了。。。还说到西雅图地震,那年西雅图地震,甚至有的服务器摔到地上。但硬盘居然没坏(让我对硬盘的抗震性能又刮目相看)。。。还说到UTF-8,之所以用UTF-8而不是UCS-2的原因是,UTF-8里面一个英文字母占一个字节,而UCS-2(或UTF-16)里面一个英文字符占两个字节,所以西方人觉得不合算。最后我还提了个问题,便得到了一套Visual Studio .NET Beta 1光盘(第一版.NET的前身哦~~)和DevDays 2000光盘,在那上面认识了Steve Ballmer。。。

接下来是快速演讲。第一个题目:关于App KPI那点儿事。Testin云测试真不错,帮助App开发者确定应用闪退、崩溃的场景,修复之后第二日用户留存率从32%上升到45%。一、有30%的游戏在第一次上线就无法成功运行。二、资源包下载失败。比如假定超过30秒就判断超时,但有些地方的手机网络的确速度很慢,要兼容更长的超时时间才行;另一方面,用户却没有等待超过8秒的耐心。所以要从下载速度和容错两方面来提高。三、留存率低。虽然其他因素总会导致低的留存率,但是否满足用户需求,并且质量足够好,则是首要的两个条件。要主动探求用户的感受。

第二个题目:Smali Injection可以用于反编译一个Android程序并在框架层注入代码。一个应用场景是,改造一个应用的Action Bar。

第三个题目:英语流利说App推广:这个应用的特色是它有打分功能。现在已有数百万用户。还有词典功能,采用英国剑桥大学官方提供的词典。

第四个题目:Angular框架。www.angulargirl.com。可以用于验证一个人是不是男的?当然不是啦,而是可用来绑定数据到网页,以及验证用户的输入。主要是javascript实现的,但实际上是一个后台和前台组合的框架。做了演示,效果不错。还能自定义指令。

第五个:xx酒店特价(没有PPT,没听清是什么名字)。Tip:当你有一个好的想法的时候,就一定要去验证它。

第六个:火花电视创始人。火花追剧神器。要讨论API设计。API一旦上线就无法再调整(就是嘛,想当年Windows API花了多少年还不能摆脱非Unicode程序)。只能重构实现,不能修改接口。必须兼容这个设计,即使糟糕。所以设计的规范和原则很重要。RESTful API:GET /series,GET /series/:seriesId/;PUT;DELETE。实际场景下可能会有嵌套的资源等更复杂的情况。为什么选择RESTful,因为这保证API是从资源出发而不是纯粹从需求出发设计的API。Single Responsibility;拒绝页面粒度的API(而拆分得更明确;比如返回帖子,就只返回帖子正文;至于帖子上的回复则通过别的API来获取);Batch Request(用来提高性能,同时解决拆分API带来的性能问题)。TDD(测试驱动开发),能验证设计的合理性,而且可以move fast, don’t break things(借鉴FaceBook)。CoralAPI: unstable => StoneAPI: stable,实际上维护的是两套API,先测试(可能包括公测),等到接口稳定了再整合到稳定API。

第七个:Ucloud。腾讯、百度、阿里等自建云,七牛、又拍等云存储,以及一些其他云厂商提供的公有云。或者私有云,习惯用OpenStack。Ucloud提供云服务宿纳以及运维服务。现在有一些明星用户,包括英语流利说和蜻蜓Fm还有36Kr。

第八个:SlideIdea的Echo。SlideIdea changes the way you create and demonstrate slides. PowerPoint and KeyNote is not designed to take advantage of mobile technology, or cloud technology (but now SkyDrive is emerging). SlideIdea–you can use your phone to interact with my presentation. You can ask questions, interact with your tablet, etc. www.sld.im/64659. There can be a conversation between the speaker and the audience. Also “Vote” feature. You no longer need to use e-mail to share a slide. Fast and Easy slide creation. On a tablet, if you use PPT, you’ll take 2-3 minutes to create a slide, but with SlideIdea you will use only 30secs (experience optimized for tablet).

第九个:触宝的王jian先生。触宝输入法会在手机连接到热点的时候抓紧更新词库,以优化用户体验。后来的热词更新功能能更快地推送热词,数据量小而频度很高,比完整的词库更新要更快更省流量。再后来就做了云输入功能,让输入结果更准确。

微博互动抽奖!

猎豹浏览器的曾崴先生带来“移动浏览器视频的挑战”。他曾经是金山毒霸的参与者之一。Robbie身边就有两个人用猎豹浏览器,看上去是IE和FireFox双核心,而且还有很多自己的特色,远不止是一个IE的外壳,不过这次讲的是手机版。市面上手机的浏览器:UC(塞班时代、省流量)、QQ(阅读)、海豚(社交)、百度(资源整合)、Chrome(功能强大、性能优异、通用性强)。用户场景:应急搜索、资讯、阅读、图片浏览。手机体验不够完美:性能弱,屏幕小,速度慢,网络不稳定,专门适配手机的网站:稀少。有一些浏览器有文本阅读模式,能对网页做一些优化。用户才不理会技术限制,他们需要和PC上一样好的体验。更进一步,想要有炫的效果,还要完成网上支付、能够在线看视频。目前用户经常是从电脑上下载视频,然后再拷到手机上,再看。所以手机上直接看视频的功能,用户希望有,金山希望做。挑战:1. 格式众多;不像视频网站自己开发的应用,可以为自己的视频做优化,通用播放器很难做;2. 专门为PC做的网页上面的播放按钮等做得在手机上看起来很小。各网站为了差异化,各种奇葩调用(有的是为了避免用户自行下载视频)。不同于视频App,浏览器没有视频的元数据,很难实现剧集、连播、清晰度切换等特性。Android又原生不支持Flash(Surface RT倒支持)。

方案:剧集的连续播放:先播放剧集,同时在后台查询剧集信息,如果查到,那么就显示剧集播放面板。而这个剧集分析引擎,有两套路子:一是本地分析,通过分析目标网站的信息;二是云端分析,在金山的服务器上分析,好处在于分析程序更新快,一旦目标网站改版,能较快地调整和适应。最后合并结果,展示尽可能全的信息。云端分析引擎还能查找同一连续剧在不同网站之间的信息,这样可以在当前网站没有最新的集数的时候,可以找到别的拥有同样电视剧且有下一集的网站。

清晰度:平时可能手机配置比较好,连接到WiFi的时候希望看高清乃至超清,但是连接到3G网络时一般希望流畅。一般如果只是拿到Flash播放器的地址,则没有视频源,所以需要找到视频源信息。同样经过本地和云端两个分析引擎。

猎豹在加载视频网页时,会自动检查视频信息,并自动生成大菜单(方便触摸的大小,而不是原网页缩小后在手机屏上看起来很小很小的按钮),以方便用户。而且,针对没有版权的影片,还提供离线缓存机制。

视频前通常会有广告,而采用猎豹浏览器之后,广告将不再显示,这会影响视频网站的收入。金山也在和各个视频网站联系,以合作解决这个问题。猎豹固然也有其他特色,比如抢火车票,但是视频是最大的切入点。