2011年11月6日星期日

阮一峰的网络日志

阮一峰的网络日志


天使湾创业之夏Demo Day见闻

Posted: 06 Nov 2011 12:27 AM PDT

今年5月,我对天使湾创投的庞小伟,做过一个访谈

当时,他正在筹备"创业之夏"活动,准备模仿美国的Y Combinator,资助15个创业团队,在杭州集中开发3个月。现在,3个月过去了,"创业之夏"已经结束,到了15个创业团队拿出Demo的时候了。

昨天,就是天使湾举办的Demo Day,让创业团队与风险投资家直接见面,展示自己取得了怎样的成果。非常感谢庞兄,邀请我观摩这个活动。

下面就是我昨天在杭州的见闻。

===========================================

会场在西湖南麓、凤凰山下的万松书院内,要从万松岭路进去,这是一条幽静的小马路。

万松书院是明清两代杭州最大的文人读书讲学的场所,现在成了公园。大门口是一个大型浮雕,传说梁山伯和祝英台在此相遇。

从大门进去,沿着台阶往山上走,然后右拐100米,就到了正谊堂。

这座小楼是2009年重建的,远看像是古建筑,底下还有石砌平台,其实是一个现代化的讲课、开会的场所。

会场内已经架设了投影,这是庞小伟正在发言。

接下来的两个多小时,就是15个创业团队的项目展示,我先说一下我的感想。

  (1)所有的团队都非常年轻,大部分人都是85年后出生,还有几个90后团队。但是,所有人在开发上都很成熟,至少没有一个产品让我觉得幼稚,这表明中国互联网开发的新生力量非常强大,未来可期。

  (2)每个团队有8分钟的展示时间,实事求是地说,我觉得有些团队的展示不是很理想,听了以后,抓不住重点,不知道产品和团队的卖点在哪里。建议这些年轻的朋友,多向乔布斯和奥巴马学习公开讲演的技巧。

  (3)15个产品当中,有6、7个是纯粹的手机App(应用程序),剩下来的项目也全部打算开发手机端。几乎所有人都把手机应用,当做自己项目的重点。虽然我也认同移动互联网的广阔未来,但是太关注手机端,会不会是一种局限,我个人觉得有一个好的API(应用程序接口)意义可能更大一些。

  (4)这些产品大部分都是针对个人的生活需求,针对企业商业需求的产品太少。

  (5)从创意到成品,三个月的时间,还是太短了。大部分项目的完成度不高,有好几个只是刚刚能够在本机上运行,只能做到让你看懂他的想法,距离真正可以上线的Demo还要一段时间。不过,所有团队都拿出了自己的作品,这一点很不容易。

  (6)最后一点感想,是关于我自己的。我发现,我与风险投资家(尤其是不懂技术的风险投资家)沟通起来很不顺畅,共同语言比较少,聊了一会就找不到话题了,远不如我与工程师聊天那样自如。我还是不适应这种社交场合。

=============================================

接着,我就来介绍一下这15个项目(按昨天的出场顺序)。

我只介绍项目的基本情况,不做评论,也不涉及开发团队,因为我对他们本人都不熟悉。我根据的是自己对产品的理解,可能不是很准确。一些项目的网站还没有完成,也就不提供网址了。

1. 会云

网址:http://www.confone.com

【简介】

会议管理工具。

会议组合者可以在网站上,注册一个会议,然后这个会议就有一个自己的主页(示例)。通过这个主页,你可以邀请会议参加者、发布会议消息和FAQ、增加参会人员的互动等等。

2. 乐帮

网址:http://whohelp.me/

【简介】

基于LBS的移动帮助应用。

生活中,我们经常遇到麻烦事,比如电脑蓝屏了、下雨没带伞、宠物走丢了......这时,你会希望身边有人可以帮你。"乐帮"使你可以向3000米以内的其他用户求援,他们打开手机,看到周围有哪些需要帮助的事情,再决定是否给你发短信或打电话。

3. 木耳

【简介】

个人信息展示平台。

木耳允许用户自定义个人主页,用户把任何想要展示的内容(图片、文本、音乐等等),拖动到页面上就可以了。页面的布局和内容,完全自定义,所有操作只需要鼠标就能完成。

4. 百里挑一

网址:http://www.bailty.com

【简介】

随身的商品口碑和购物决策助手。

当你看到琳琅满目的商品,是否觉得无从下手?你只要拿出手机,拍摄商品的条形码,"百里挑一"就会返回商品的基本信息,以及其他消费者对该商品的评价。

5. 错落

网址:http://cuoluo.com

【简介】

随机生成器。

生活中有很多场合,需要得到随机结果。比如,你想随机看一张照片、随机听一首歌、随机阅读一段文字、随机生成一段密码、随机选择一个彩票号码、随机为来宾抽奖......"错落"就是一个随机生成器,为你返回一个随机结果。

6. 有鱼

网址:http://youyur.com/

【简介】

项目外包平台。

项目主在"有鱼"上面发布工作,自由职业者在上面找工作,双方约定完成日期和薪酬。

7. 觅乎

网址:http://www.miihuu.com

【简介】

个人信息的搜索工具。

"觅乎"允许用户将自己的个人信息(比如浏览历史、电子邮件、微博发言、个人网志等等)汇集在一个地方,然后统一进行搜索。

8. 聚朋

网址:http://www.juupoo.com

【简介】

聚会管理工具。

你可以发起一个聚会,然后通过网页,自动短信通知所有参加人员。(抱歉,这个项目是下半场的第一个项目,我进会场晚了,有一些介绍没有听到。)

9. 52赫兹

网址:http://www.52hz.com/

【简介】

网页推荐引擎。

根据用户收藏的网页,向他推荐个性化的相关网页,与美国网站StumbleUpon类似。

10. Timap

网址:http://timap.me/

【简介】

基于LBS的日程管理工具。

用户可以用自然语言输入日程(比如"明天下午1点与张先生在xx饭馆吃饭"),Timap会自动分析语义,得到时间、地点(结合用户的当前位置)、事项,并向用户推荐最优日常安排。

11. 小恩爱

网址:http://www.xiaoenai.com

【简介】

情侣应用。

"小恩爱"必须情侣两人共同使用,供双方进行各种特殊沟通。留言的时候,可以设置规则(比如,男生收信后,倒计时8小时才能打开);女生还可以向男生出选择题("我最喜欢以下哪一种口味的冰激凌?"),并设置奖励和惩罚。

12. 琥珀

【简介】

基于LBS的校园社交应用。

主要是四大功能:发送匿名情书;实时抓拍并分享校园八卦;校园雷达,3D显示校园各个位置最新发生的事件;校园密友,显示你关注的人现在的动态。

13. 饭有引力

网址:http://www.fanyor.com/

【简介】

社会化的聚餐平台。

它让你通过聚餐,结识新朋友。你可以在"饭有引力"上,浏览新发起的聚餐,找到自己感兴趣的人和食品,然后申请加入;你也可以自己发起聚餐,等待别人申请加入。所有聚餐的人,还可以一起在网上发言讨论。

14. 同行

网址:http://itongxing.com/

【简介】

基于LBS的拼车应用。

当你想在附近找人拼车、或找到想搭你的车的人,"同行"会告诉你有没有这样的人,你也可以发出这样的消息,"同行"会帮你自动推送到周围的用户,并转发到社交网站上。

15. 马蹄

【简介】

自助游行程的制定和管理工具。

用户确定旅游目的地和游玩天数之后,"马蹄"会帮助用户制定一个合理的行程和路线,并在旅行过程中,不断帮助用户实施这份行程,还可以根据用户现在所处的位置,实时推荐周围的景点。

==================================

如果你是投资者,对上述项目感兴趣的话,可以通过天使湾联系开发者。

如果你是普通用户,欢迎积极使用这些产品,为创业团队提供鼓励和建议。

如果你是创业者,欢迎向天使湾申请风投,也欢迎在11月底报名参加明年3月~5月举办的第二期创业训练营。

(完)

文档信息

2011年10月15日星期六

阮一峰的网络日志

阮一峰的网络日志


usenet下载最简教程

Posted: 14 Oct 2011 08:49 AM PDT

上周,美国的Giganews公司来信。

他们推出了两个新业务----VPN服务VyprVPN和在线存储服务Dump Truck----想让我帮忙宣传。

我毫不怀疑这两个服务的优异品质,但是也坦率地告诉他们,现在的价格在中国市场不可能有任何竞争力。VPN和网盘,国内市场竞争很激烈,美国的价格直接拿过来,就好像天文数字一样。

Giganews最有竞争力的产品,其实是它的主业usenet。它是全美最大的usenet服务商,在这个领域实力很强。(不了解usenet的朋友,可以看一下我刚刚整理好的系列文章《usenet使用指南》。)

usenet堪称"下载宝库",资源之多难以想象。喜欢高清影视和电子游戏的朋友,其实根本不必PT下载,只要上usenet,应有尽有。

usenet推广的最大困难有两个,一是没有中文内容,二是存在一定的使用门槛。如果有一个针对中国用户的usenet下载搜索引擎,我觉得它的国内市场需求会很大。国内至今没有任何一家公司,提供usenet相关服务,真是很遗憾。

====================================================

对于那些需要usenet下载的朋友,我下面用最简单的语言,告诉你怎么下载。

(1)软件

你首先需要一个下载客户端,可以使用免费软件Grabit教程)或sabnzbd,也可以使用商业软件Newsbin

(2)NZB搜索引擎

你通过nzb文件搜索,找到自己需要下载的文件。免费的搜索引擎有Binsearch.infonzbindex.nl,小额收费的搜索引擎有Nzbmatrix.comNZBsrus.com

Giganews本身有一个搜索引擎mimo,可惜只提供给钻石用户使用。另外,德国的UseNeXT公司有一个自带搜索引擎的客户端,非常易用,我很推荐。

(3)购买usenet账号

由于usenet下载流量非常巨大,所以不存在免费下载,必须付费使用。

Giganews的收费不便宜,最低价是4.99美元/每月,只能下载5GB。如果你想无限量下载,每月价格是24.99美元,大概只有下载发烧友和游戏发烧友才会购买吧。好在Giganews允许14天的免费试用期(下载量不超过10GB)。当你急需下载某个文件时,可以考虑先注册一个账户,然后在14天内注销(否则自动从信用卡扣款)。

写到这里,我帮自己打个广告。如果你点击下面的图片,购买Giganews的服务,我会得到一笔介绍费,欢迎点击。

Giganews Newsgroups

如果觉得Giganews太贵,还有一家Supernews可以考虑,它的价格就很好:每月11.99美元,提供无限量下载。但是,由于是廉价服务,它不提供试用,也不允许退款。

Supernews Newsgroups

(完)

文档信息

2011年10月8日星期六

阮一峰的网络日志

阮一峰的网络日志


乔布斯的告别

Posted: 07 Oct 2011 07:57 AM PDT

斯蒂夫·乔布斯活着的时候,对病情讳莫如深,外界对他的身体状态毫不知情。

现在他去世了,根据各方面透露的信息,我们终于可以还原他的病历,了解像他这样伟人怎样对待生与死。

1.

2000年5月,乔布斯在旧金山WWDC大会(苹果全球开发者大会)上,演示Mac OS X操作系统。这时,他的身体还是完全健康的。

2.

2002年7月17日,乔布斯光临位于纽约Soho的苹果商店。此时,距离他病情确诊还有一年。

3.

2003年1月,乔布斯在旧金山Macworld大会上,介绍新发布的17寸Powerbook。

同年10月,在一次CT检查中,医生发现乔布斯的胰腺有一个肿瘤,但是属于恶性程度较低的癌症:胰岛细胞神经内分泌肿瘤。起初,乔布斯不愿接受手术,想通过饮食调整来控制病情。

4.

2004年1月,乔布斯在旧金山Macworld大会上,介绍新型的iPod。此时,他已经知道自己患有胰腺癌,但是未对外界透露。

2004年7月,由于病情没有得到控制,在坚持饮食疗法9个月后,乔布斯终于接受手术,摘除了肿瘤。8月1日,他首次对外公布病情,表示手术很成功,也不需要化疗或者放疗(另一种说法是,乔布斯本人坚持不要化疗和放疗)。

5.

2004年10月,乔布斯与U2乐队成员Bono等人一起登台,庆祝苹果iPod发售。此时,他刚刚完成癌症手术三个月。

6.

2005年1月,手术后半年,乔布斯展示Mac Mini个人电脑。

7.

2006年8月,手术后两年,乔布斯在WWDC上发布演讲。苹果公司称,他的健康状况良好。

8.

2007年1月,手术后两年半,乔布斯发布iPhone。

9.

2008年6月,手术后第四年,乔布斯发布"全球最薄笔记本电脑"MacBook Air。他显得消瘦憔悴,但是苹果公司称,他只是受到"常见细菌"感染。事实上,现在我们知道,那时他的癌症已经复发,病情扩散到了肝脏。

10.

2009年1月,苹果公司宣布乔布斯患上了"荷尔蒙失衡症",将缺席本年度的WWDC。仅仅过了一周,乔布斯发表声明称,由于病情比原想的复杂,将病休5个月。事实上,此时他已经是重度癌症病人,肝脏布满了癌细胞。

2009年4月,乔布斯在孟菲斯的卫理公会大学附属医院接受肝脏移植手术。院方透露,乔布斯在轮候换肝名单上属病情最严重者,因此当有适合肝脏,便第一时间为他进行移植手术。并说,当乔布斯换肝时,他的肝脏病情已到末期。手术后,乔布斯康复情况良好。

11.

2010年1月27日,肝脏移植手术后九个月,乔布斯宣布推出平板电脑iPad。

12.

2010年6月7日,肝脏移植手术后一年,乔布斯宣布推出iPhone 4。

13.

2010年7月,乔布斯在新闻发布会上宣布,将免费提供胶套以解决iPhone 4信号接收问题。

14.

2010年9月,在旧金山的一个音乐主题媒体活动上,乔布斯面带笑容。

15.

2010年10月,乔布斯出席苹果公司活动时的照片,距离去世只剩一年。

2011年1月17日:乔布斯在一封发给公司员工的电子邮件中宣布因个人健康原因将再次休假。他说,"我是如此热爱苹果,我希望尽快返回公司。"

16.

2011年3月2日,正在休病假的乔布斯意外出席了iPad 2发布会,距离去世只剩半年。

17.

2011年6月6日,乔布斯在WWDC上发布iCloud服务,距离去世只剩4个月。这是乔布斯在公开场合的最后照片。

2011年8月,乔布斯宣布辞去苹果公司CEO。

2011年10月5日,乔布斯去世,终年56岁。

==================================

乔布斯去世后,《纽约时报》的报道,透露了他临终前的一些细节。他的癌症复发是在2010年底发现的,所以乔布斯在2011年1月宣布病休。

2011年2月,医生告诉乔布斯,已经没有治愈可能了,他的时间不多了。但是,乔布斯依然选择出席iPad 2和iCloud发布会,那时他其实已经知道自己将不久于人世。

也是从那时起,乔布斯开始为自己的后事做安排。他选择会见一些老朋友,与他们告别。

《华尔街日报》的莫博士,这样记录自己与乔布斯的会面

"我在他家待了三个小时,中间还到附近的公园走了一圈。虽然他的身体之差令我很担心,但是他坚持要去那里。"

"他说他每天都走路锻炼,而且每天为自己定一个更远一点的目标。今天,社区公园就是他的目标。我们边走边谈,他突然停下来,看上去很痛苦。我央求他回家,因为我根本不懂急救术,万一出事了,第二天报纸标题就是《束手无策的记者眼睁睁看着乔布斯在路边死去》。"

"乔布斯听了就笑了,拒绝回去。片刻之后,他继续向公园走去。我们坐在长椅上,谈起生活、家庭和各自的疾病(我几年前曾经突发心脏病)。他教导我健康的重要性。然后,我们就往回走了。"

2011年8月,乔布斯辞去苹果CEO的时候,他的身体已经彻底不行了,不可能有奇迹了。

生命的最后几个星期,乔布斯非常虚弱,躺在家里,走路也走不动。他最后一次请了几个朋友----Ornish医生、风险投资家John Doerr、苹果公司董事Bill Campbell、迪斯尼公司执行长Robert A. Iger----在Palo Alto的Jin Sho餐馆举行告别宴。在宴会上,他还给即将发布的iPhone 4S出主意。

Ornish医生回忆说:"我问他,养育了四个孩子,对这件事他是否感到满意。他说,这比我做过的任何事都好上10000倍。"

乔布斯还见了他的传记作者Isaacson。后者问他,你如此重视隐私,为什么会授权我写你的传记。乔布斯回答:"我希望我的孩子了解我。在他们成长过程中,我并没有一直在他们身边。我要他们知道为什么,并且理解我所做的事情。"

在他的弥留之际,他的妹妹Mona Simpson说:"最后,他的语调充满了温柔的歉意,为离开我们前走一步,感到非常抱歉。"

==================================

2005年,乔布斯在斯坦福大学毕业典礼上,曾经说过

"我深信,保持前进的唯一动力,就是我热爱自己所做的事。"(I'm convinced that the only thing that kept me going was that I loved what I did.)

他用自己的人生,实践了这句话。他生命的最后八年,是与癌症做斗争的八年,也是创造了惊人成果的八年。在这期间,他一手造就了创造历史的新产品----Macbook、iPhone和iPad----这使苹果公司从濒临破产,变成了世界市值最高的公司。

但是,如果你仔细想想,就会发现他完全没必要这么做,尤其在得了癌症的情况下。在重新入主苹果之前,他已经功成名就了。为什么他工作到生命的最后一刻,只有一个解释,那就是他真的热爱自己所做的一切。

乔布斯的一生是一个奇迹。他是一个弃儿,养父母都是蓝领,大学只读了六个月,曾经靠捡饮料瓶谋生。但就是这样一个人,创造了世界上第一台个人电脑,打造了全世界最辉煌的电脑公司,彻底改变了整个电子工业。他用自己的一生告诉我们,只要你敢于追求自己的梦想,热爱你所做的事情,nothing is impossible(一切皆有可能)。

只要有人记得,他就永不消逝。乔布斯并没有离开我们,未来的人们将永远记得他。因为乔布斯来过这个世界,我们所有人都有了更多希望。

(完)

文档信息

2011年10月3日星期一

阮一峰的网络日志

阮一峰的网络日志


Javascript文件加载:LABjs和RequireJS

Posted: 02 Oct 2011 08:51 PM PDT

传统上,加载Javascript文件都是使用<script>标签。

就像下面这样:

  <script type="text/javascript" src="example.js"></script>

<script>标签很方便,只要加入网页,浏览器就会读取并运行。但是,它存在一些严重的缺陷。

  (1)严格的读取顺序。由于浏览器按照<script>在网页中出现的顺序,读取Javascript文件,然后立即运行,导致在多个文件互相依赖的情况下,依赖性最小的文件必须放在最前面,依赖性最大的文件必须放在最后面,否则代码会报错。

  (2)性能问题。浏览器采用"同步模式"加载<script>标签,也就是说,页面会"堵塞"(blocking),等待javascript文件加载完成,然后再运行后面的HTML代码。当存在多个<script>标签时,浏览器无法同时读取,必须读取完一个再去读取另一个,造成读取时间大大延长,页面响应缓慢。

为了解决这些问题,可以使用DOM方法,动态加载Javascript文件。

  function loadScript(url){

    var script = document.createElement("script");

    script.type = "text/javascript";

    script.src = url;

    document.body.appendChild(script);

  }

这样做的原理是,浏览器即时创造出一个<script>标签,然后"异步"读取Javascript文件。这样不会造成页面堵塞,但会造成另外一个问题:这样加载的Javascript文件,不在原始的DOM结构之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回调函数对它无效。

外部函数库LABjsRequireJS,可以帮助我们更有效地管理Javascript加载。

下面根据ScriptJunkie的文章,举一个最简单的例子,来说明这两个函数库的基本用法。更高级的用法,请参阅它们的文档。

  <script src="script1.js"></script>

  <script src="script2-a.js"></script>

  <script src="script2-b.js"></script>

  <script type="text/javascript">

    initScript1();

    initScript2();

  </script>

  <script src="script3.js"></script>

  <script type="text/javascript">

    initScript3();

  </script>

上面这段代码,将依次加载4个javascript文件:script1.js、script2-a.js、script2-b.js和script3.js。在加载完前三个文件后,运行两个函数initScript1()和initScript2();加载完第四个文件后,再运行函数initScript3()。

下面,用LABjs对其进行改写:

  <script src="LAB.js"></script>

  <script type="text/javascript">

    $LAB

     .script("script1.js").wait()

     .script("script2-a.js")

     .script("script2-b.js")

     .wait(function(){

       initScript1();

       initScript2();

     })

     .script("script3.js")

     .wait(function(){

       initScript3();

     });

  </script>

首先,$LAB对象替代了<script>标签,然后.script()方法表示加载Javascript文件,不带参数的.wait()方法表示立即运行刚才加载的Javascript文件,带参数的.wait()方法也是立即运行刚才加载的Javascript文件,但是还运行参数中指定的函数。

这里需要注意的是,可以同时运行多条$LAB链,但是它们之间是完全独立的,不存在次序关系。如果你要确保一个Javascript文件在另一个文件之后运行,你只能把它们写在同一个链操作之中。只有当某些脚本是完全无关的时候,你才应该考虑把它们分成不同的$LAB链,表示它们之间不存在相关关系。

接下来是requireJS的改写:

  <script src="require.js"></script>

  <script type="text/javascript">

    require([

      "script1.js",
      "script2-a.js",
      "script2-b.js",
      "script3.js"

     ],

     function(){

      initScript1();
      initScript2();
      initScript3();

     }

    );

  </script>

require()接受两个参数,第一个数组表示所要加载的Javascript文件,第二个是加载完成后所要运行的回调函数。原生的require()不支持按次序加载,所以四个Javascript文件到底先加载哪个,无法事前知道,require()只保证这四个文件全部加载完成之后,才会运行所指定的回调函数。

如果按次序加载对你很重要,你可以使用官方提供的order插件

(完)

文档信息