Archive for October, 2008

朱敏谈互联网创业

Wednesday, October 29th, 2008

摘自朱敏谈互联网创业
最终,互联网会跟通信完全融合在一起,这会比我们现在做的事情大100倍、1000倍。

过去几十年,硬件时代已经结束了,软件时代也快结束了。未来的趋势是:软件、服务、互联网结合在一起。

你先把本土市场拿下来,第二步是把第三世界拿下,第三步你再把创造加进去,最后你再渗透到第一世界去。

你看马云和任正非有非常大的不同,任正非是那个时代艰苦创业出来的,他和李东升理解的国际化是中国企业到全世界去打败别人,最后做出一个老大出来。但将来,更多的企业需要靠融合外面的资源,逐渐变成一家世界级的公司。下一代的国际化观念又会不一样,这就是中国前进的过程

中国学生的综合素质比美国学生要延迟5、6年,美国学生学生22岁可以创业,中国学生27、28岁比较合适。如果你拿两个斯坦福大学二年级的人,再拿浙江大学最好的两个二年级学生比一下,会觉得后者太嫩了。他们的演讲能力、思考能力、推销自己的能力都差了很多档次。

计算机科学系该教些什么

Wednesday, October 29th, 2008

原文来自yeeyan
每周我们都会收到大量简历,相当一部分来自计算机科学系的毕业生。

我检查了他们的学习内容,尽管听起来迫有趣,却似乎和就业市场无关: 神经网络, 计算机视觉,人工智能,机器人技术,编译工程,机器学习,量子计算,贝叶斯网络,嵌入式系统 … 这些毕业生中有多少会经常使用这类知识? 这些课程可不是骗人的,而是来自英国前5位的计算机科学系(根据一家有名的国内报纸的排名)。

这种不协调(教育和技能)部分是被一个观点误导了: “计算机科学”毕业生不必去搞软件, 所以应该多教点科学而非职业上的方法。可是,我所认识的计算机科学毕业生都没去搞科学,而是去搞软件编程了。有意思的是,我随机抽取了大约10-15所大学的课程,只有2所教软件工程。

还有相当奇怪的是,只有一个课程涉及XML, 还是可选部分。而在当代软件中还有不用XML的吗? 那为什么计算机科学毕业生不能说出何时用SAX何时用DOM呢 ?

那么,哪些内容应当包含在当代计算机科学/软件开发专业的课程中呢? 我粗略地写在了下面( 顺序没有考虑,只是按照意思流来的…):

  • 编程基础(变量,数据类型,引用,指针,作用域,错误处理,迭代,核心算法-搜索,排序等)虽然本人不是计算机科班出身,不过自学的时候在这些东东上还是花了不少心思,就是对指针一直以来没机会多多实践,处理编程实例的效率比较低
  • 基础数学,基础统计学 本科学的是工程管理,对这两门课的要求与“基础”也挺匹配
  • 模式和反模式(真实世界的例子,不只是理论)当前看到模式和反模式的时候,奉为解决实际问题的至宝,可面对真实案例,只有少数模式才会被用到,底层的SDK封装的实在太好了,FLEX,.NET……
  • 现实世界中的数据库(正规化和反向规格化, SQL,索引)第一个学的数据库是VF x,与SQL语言初次相识,下来便是ACCESS,因为想用DW做一个简单的网站,之后很长的时间内与MS SQL打交道,期间又认识了ORACLE DB2 SQLITE MYSQL等等,这么多数据库,头有点大~
  • 良好的代码架构基础:松耦合等 最好的学习方法就是参考别人的架构,GREAT!
  • 面向对象的设计,接口等 多多实践才是王道
  • 规划的重要性和工具: Spec’ing,UML等 了解不多,虽然尝试用VISIO画过UML图,但是最终认识到小项目用UML纯粹是自讨没趣
  • 架构:C/S,SOA,P2P等 作为WEB程序员,接触最多的自然是B/S,对C/S,SOA,P2P还算有了解吧,毕竟WINFORM,WEB SERVICE,PEER TO PEER还是知道的
  • 一两个’大’语言(Java, C#,C/C++)感觉VB比较丑,所以专精了C#,之后又把心思放在了ACTIONSCRIPT 3上,感觉JAVA是C# 和 AS3结合的产物-_! ,C/C++还是会的,不熟练而已
  • 一两个’脚本语言或’敏捷’的语言( PHP,Perl, Python,Ruby)PHP,JAVASCRIPT,VBSCRIPT,对JS熟悉,其他两位同志就得花不少时间重新认识一下了
  • XML (DOM/SAX, XSLT/XPath, 等)做WEB的很少没用过XML,不用DOM的;至于SAX,XSLT/XPATH,有所接触
  • 经济学,商学,成本项目,商业压力 宏观和微观都没怎么认真学,有时间再看看,其他的也找时间看看吧
  • 版权,隐私,数据保护 了解不多
  • 项目管理/时间管理 本科学的就是这
  • 国际化,本地化,编码, Unicode 没感觉有什么难的,毕竟FLEX
    SDK已经给出了现成的解决方案,就是每次都RESOURCE感觉有点麻烦。
  • 语法,标点符号,简洁和明确的书写 高中文科学的不错,代码也一直追求完美,无论从格式还是效率(前者实现起来相对简单些)
  • 界面设计,易用性,可获取性,人机交互 读过《交互式设计精髓》,大概有个了解,不过一直都忙于码代码,是时候考虑一下这些问题了
  • 安全 加密,加密,加密,解密,解密,解密
  • 代码阅读
    最害怕的是读汇编,其他的只要注释及命名规范就OK
  • 常见协议( TCP/IP,HTTP,SMTP,FTP )通常都使用现成的类库来搞定它们
  • 测试,调试,性能,重构 这是基本功,程序员必须掌握
  • 问题分析 没搞过数学建模,脑子时刻保持清醒,把握问题核心就没什么问题了
  • 代码控制,变更管理 工具加一个简便的规范便OK了,不过CHECK IN,CHECK OUT有时比较噩梦,尤其是两个或两个以上的人做同一个模块的时候,WBS是伟大的
  • 典型的软件生命周期 基本功,在工作过程中慢慢就理解为什么那么多牛人没事儿非得整个这是为什么了
  • 元数据,信息架构等 了解不多 SCHEMA?
  • 地理信息系统基础 晓得,但没接触过,最多玩玩GOOGLE MAP
  • 触摸输入
    对硬件了解不多,仅限于PC的几个主要部件。这个看起来很酷的样子
  • 健康和安全(营养?) 老外的书比较变态,谁没事儿拿个秤看自己今天摄入了多少多少维生素!不过对中医养生还是比较看重。还有,有点懒,好久没打太极了,检讨一下!

( Dan Zambonini 作为技术总监服务于Box:一家英国Internet开发和咨询公司. 作为语义web和XML技术的倡导者,他的工作领域包括XML, XSL, RDF, SVG, P3P, OWL, XHTML, CSS, XForms和其它一大堆缩写的技术 )

PS:神经网络, 计算机视觉,人工智能,机器人技术,编译工程,机器学习,量子计算,贝叶斯网络,嵌入式系统,这可是我都想学习的啊,还要加上光学工程
计算机科学系该教些什么 - hydra1983 - 远古的迷茫

另:这篇文章也值得读一读 Joel Spolsky在耶鲁大学的演讲

使用FlexMonkey测试Flex

Wednesday, October 29th, 2008

原文来自InfoQ

在这篇新闻中,InfoQ.com与FlexMonkey项目创建者、来自Gorilla Logic的Stu Stern一起讨论了FlexMonkey。FlexMonkey是一个用来测试Flex应用的开源工具,它采用记录/回放模式。

Stern首先对FlexMonkey进行了概要性描述:

FlexMonkey是一个开源的Flex应用和库,可以记录和回放用户界面的交互并生成可重复使用的测试用例,你可以在持续集成框架(如Cruise Control)中运行这些测试用例。

接下来InfoQ问询了FlexMonkey与其他Flex测试工具有何区别:

我们注意到FlexMonkey是唯一一个完全基于Flex的记录/回放工具。它无需浏览器插件(当然除了Flashplayer以外),也用不着特殊的脚本语言。记录下来的UI场景可以作为ActionScript的源代码,它们既可读又可编辑。甚至不需要使用记录工具就可以轻松创建测试,因为利用FlexMonkey API,我们没必要直接在ActionScript中指定大多数的UI操作。

如果你了解Flex,那么你对FlexMonkey的使用就几乎没有任何问题,能运行Flex的地方就能运行FlexMonkey(也就是说几乎任何平台都可以)。

接下来,Stern谈到了许可协议:

FlexMonkey本身基于Apache 2许可,这意味着你可以修改其源代码,并将其作为其它开源或商业产品的一部分。很显然,Gorilla Logic认为将FlexMonkey放出价值更大,而并不是将其作为一个产品来卖!

但我们应该注意到FlexMonkey依赖于Adobe的Flex AutomationAPI,它位于FlexBuilder专业版中。FlexBuilder标准版包含了AutomationAPI的试用版,这限制了应用每次加载时所允许的重放次数。你可以通过FlexBuilder标准版来试用FlexMonkey,如果觉得满意再升级到专业版。我们希望Adobe将AutomationAPI加到大多数已开源的Flex平台中,但现在你不得不使用FlexBuilder专业版。专业版还可以进行性能与内存分析,因此如果你正在进行要求严格的企业级开发,那么无论如何也要升级到专业版。

InfoQ谈到了测试异步功能所面临的挑战:

FlexMonkey所生成的每个UI事件都是异步的,而且FlexMonkey都会在生成每个后续事件前暂停(默认暂停500毫秒)。如果你有一个运行时间很长的数据库查询(比如由按钮点击所触发),那么在按钮事件产生后你可以增加延迟时间。

像FlexUnit这样的测试运行框架也需要针对异步操作进行特殊的处理。FlexMonkeyAPI本身就是异步的,因此你需要通过某种手段告诉运行器测试何时完成。当FlexMonkey在一个测试用例中处理完所有的事件时它会产生一个READY_FOR_VALIDATION事件。如果使用FlexUnit,你需要在调用下一个测试用例前使用FlexUnit的addAsync方法来告诉FlexUnit等待这个事件完成。

我还要补充一下,尽管FlexUnit是当前唯一一个直接集成到FlexMonkey中的xUnit框架,但你仍然可以将其他针对Flex的xUnit框架与FlexMonkey搭配使用。我再强调一次,FlexMonkey测试其实就是ActionScript。此外,你可以直接将其他任何xUnit框架集成到FlexMonkey中并生成代码,就像我们对FlexUnit所做的一样(请放心大胆地去做吧)。

InfoQ紧接着问道,FlexMonkey是如何使用Flex Automation框架的:

当你运行一个使用了AutomationAPI的应用时,每个UI事件(如按钮或者鼠标点击)都会生成一个“automation事件”来描述相应的UI事件。这种包含在automation事件中的信息可以反馈到AutomationAPI中并产生一个假的按钮点击,而Flex对其的响应就好像它是原生的UI事件一样。正如我之前所提到的,通过使用FlexMonkeyAPI,你可以创建一个此前并没有被Automation API记录下来的事件。我们可以使用FlexMonkey记录并回放几乎任何FlexUI事件,包括相关的“exotic”操作,比如某个DataGrid里的itemEditor是一个ComboBox,那么我们就可以从中选择一个条目。

最后,InfoQ问Stern,读者还需了解什么:

尽管我们的开源项目还是个新兵,但FlexMonkey却相当稳定。它有丰富的文档。大多数人能在不到一小时内就成功运行起来。

你可以运行http://keystone.gorillalogic.com/~sstern/MonkeyContacts.html上的这个示例应用来快速了解FlexMonkey。如果你运行这个示例,你会看到记录并回放UI场景是多么的简单,你还能看到生成的ActionScript是什么样子的。

该项目本身位于http://flexmonkey.googlecode.com。我们希望看过这篇新闻的每个人都能加入我们这个快速发展的社区!

Flex Builder 插件:IDE Factory

Sunday, October 26th, 2008

原文来自杜增强
今天我给大家推荐一个FlexBuilder的插件:IDE Factory

其中我最喜欢的就是格式化AS/MXML这个功能.
IDE Factory
官方下载
本地下载

Flex中采用中文编程?

Wednesday, October 22nd, 2008

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”

creationComplete=”一个简单的测试()”>

<mx:Script>

<![CDATA[

private var 变量:String = "我是变量";

private function 一个简单的测试():void

{

trace("一个简单的测试");

trace(变量);

}

]]>

</mx:Script>
</mx:Application>