Tag Archives: 贝塔技术沙龙

Beta技术沙龙:Go语言

  大半年折腾,好久没参加啥公共场合的活动了。这期的Beta技术沙龙Googol LeeGo语言,所以一定要去参加。

  Googol Lee讲得很清晰,我就不重复具体内容了,视频和ppt会很快放出来。与并发编程有关的goroutine和channel部分最吸引我,听到兴奋处,不禁抓耳挠腮胡思乱想,居然比较起goroutine和CUDA block的异同来了。

  Q&A环节,我问了个关于多语言粘合的问题。Go语言支持C的粘合,也就意味着支持与大多数语言相互调用。实际想问的是,有没有混合编程的成熟案例,不过Go推出不长。有个外国工程师(普通话真流利)问Go语言自带的Web app framework如何,Googol Lee认为架构和风格上很接近django

  参加沙龙的lvscar用Go语言和HTML5 websocket开发了一个实时web的demo。他拿上来show了一把。果然很酷。以前对HTML5没深入玩过,websocket果然比AJAX顺眼多了。lvscar认为随着HTML5的推广,实时交互的web应用成为主流,Go语言非常适合开发这种维护对话上下文的重负载Http Server端。

  现在看来,相对D语言,Go更有希望继承C/C++的衣钵,成为下一代主流“硬核”(系统级语言)。从设计哲学上来说,D语言很像“更好的C++”,而Go的负责人是Ken Thompson,风格简洁明快,有很多C的痕迹,例如OO with struct。

  搜索了一下,GNU刚宣布允许gccgo增加到gcc主分支,计划在GCC4.5之后的版本中体现。也就是说将来Go语言将是Linux和MinGW的标配。

  八卦1:看到霍炬,嗯,听说在上海呀。ppt听完就走了。朱朱还怪他不主动和大家多交流呢。

  八卦2:Ken Thompson老爷子是少数几个获得图灵奖的软件工程师(而不是计算机科学家)之一,原因是创造了C语言和UNIX。他投奔Google以后,一举一动都是技术社区的八卦话题。例如最初他没通过Google内部的编程考试,所以无权向源码库提交补丁。再如,有粉丝从google code里搜索到了他提交的补丁,给CREAT加了一个E,弥补了几十年前的遗憾(终于知道很多代码写错这个拼写的源头了)。

参加Beta技术沙龙,主题是推荐系统

  周日去奇遇花园参加Beta技术沙龙,这次主题是“推荐系统在大型网站中的应用”,是和Resys合办的(说起来俺也起了点儿牵线搭桥的作用,哈)。推荐系统果然很热门,参与的人比以前都多。

  第一个主讲人是dangdang网的技术总监王洪涛。从产品经理的角度介绍了dangdang的推荐系统。从业务需求的视点去看,实现什么算法反而不那么重要了,关键在于整体把握。网站做到什么程度需要引入哪一类的推荐系统?如何评价系统的效果?另外对用户体验的拿捏也是个重要问题,必须既给用户惊喜,又不讨人烦。

  接着讲座的是付超群,以前在新浪音乐开发推荐系统。他从技术上介绍了推荐算法和工程实现。主要涉及了关联分析、slope one和SVD三种算法,内容很足,言简意赅没废话,我个人很喜欢这个报告。

  国内评价和推荐做得最好的应该是豆瓣。有人问dangdang是否考虑在书评挖掘方面深入做些事。我想,豆瓣的领先地位,除了源于技术,更重要的是来自 “第三方”的超然位置所带来的高质量评价内容,以及这些评价数据背后的深度参与人群。王洪涛回答时也说,dangdang上的书评,很多是抱怨送货和售后服务的,而豆瓣就没有这个包袱了。其实单个企业很难全面覆盖产业链条,合作共赢才是正理。

  顺便提一下,企业的技术形象很重要。dangdang站内搜索的口碑不好。结果每次圈子里交流,他们的工程师总是有点尴尬,心虚郁闷的样子,忍受周围的朋友拿各种雷人的搜索结果开涮。物质待遇以外,工程师还很需要专业上的自豪感和认同感。

Beta技术沙龙:利用SNMP进行服务监控

  昨天参加Beta技术沙龙霍炬银杏搜索利用SNMP作服务监控的系统实现

  架构很简洁清楚,容易理解。上层包装也有不少好玩的,例如直连GTalk,无论管理人员的物理位置在哪里,都能实时监控服务状态,进一步手机短信也不难了。

  报告摘要里,对需求的解释很到位:“运营大规模SAAS,对所有服务的状态进行管理和监控是难点之一……”。这正是我感兴趣的原因。日后pFind提供在线云计算服务,必然要考虑这方面的基础设施。其他听众包括,鲜果有道,还有做安全检测的,看来都是有目的而来。

  (顺便提一下,查了查我BLOG的订阅分布:Google Reader、鲜果、抓虾、豆瓣九点……Google Reader还是占压倒性优势)

  银杏主要针对十几种服务进行监控。我想,也许还能支持更细粒度的监控。例如在大规模集群环境中,监控每个节点上的计算进程,以保证MapReduce形式的大规模云计算服务的可靠性。会后交流时,我就此问了霍炬的想法,他没有明确的同意或反对。

  这是第一次见到霍炬真人版。果然是好工程师。逻辑清晰,思路活跃,解决方案明快有效,没有拖泥带水的废话和掩饰。

  会后又和tinyfoolnzinfo聊天(主要是他们说,俺听)。nzinfo第一次见,大侠居然在自己的iPhone上安装gcc和vi,更过分的是还装git版本管理。这么牛,怪不得有资格做tinyfool的竞争对手。nzinfo演示了几种iPhone上最著名的金融终端,包括布隆伯格(Bloomberg)的,各种分析工具还真挺全面。

  tinyfool刚发了一篇BLOG,谈谈对双人编程、单元测试、重构的理解,说得很到位,推荐。

  奇怪,这帮注重实战的工程师,全都开始踅摸起数学、折腾起matlab。难道是传说中的天下武学殊途同归。

贝塔技术沙龙:iPhone开发

  参加贝塔技术沙龙,活动位置在西直门奇遇花园,参加的工程师很多,不少牛人,比如《走出软件作坊》的作者阿朱,抓虾的徐易容,sohu论坛的架构师钱宏武等。

  TinyfoolRobin Lu先后讲PPT,由浅到深介绍iPhone开发。Tinyfool上来不废话,敲键盘写demo,实际Run出一个hello world。然后Robin Lu再给出更系统性的介绍,比如常用的设计模式等等。对于我这种不熟悉Apple开发环境的菜鸟来说,学习曲线刚刚好。

  像Tinyfool说的,Object-C语法的确有些怪。但对于接触过多种编程语言,尤其是了解动态语言特征(比如消息映射、委托、依赖注入)的程序员来说,只要把概念对应到具体实现方式,剩下就是Goolge文档、照方抓药了。

  随后的提问讨论也很精彩,而且涉及到技术以外的内容,例如App Store的商业模式等等。有个在Google实习做Android研发的清华学生提了不少好问题,包括iPhone和Android的对比。他每提一个问题,我就暗自点头:“对,我也正想知道。”

  大家的共识是,应用平台的成功取决于能否建立良好的生态体系,让消费者、第三方的开发者都遵守规则,分享收益。当然,一旦领先者找到聚宝盆大赚特赚,而竞争对手却无法从模仿其商业模式中获利,就会有破坏性创新出来搅局。个人觉得Android的开放机制对iPhone的App Store封闭模式有威胁。当年,就是土气但开放的PC战胜了高贵而封闭的MAC。

  96年看比尔盖茨的《未来之路》,预言到2010年,普通消费者就可以用手机从网络上购买游戏和音乐,查询和预订周围好吃的馆子。现在支付宝、点评网、App Store都很普及,一旦3G搬到手机上,Big G的预言就算实现了。只可惜MS并没有在这波竞争中取得优势。

  最后抽奖,我幸运得到了一本《iPhone开发基础教程》,内容的确不错。