爱情到底是什么的什么

【4024】闲扯到底什么是“竞品” | 人人都是产品经理——iamsujie
在别处:,
微信公众号的二维码
想看什么自己选
最新文章,趁热看
本站图片的那点破事
早期图片在Picasa里,然后挂了,想看的同学,抱歉~~~
后来又有一段时间用flickr,然后也挂了(部分farm),再次抱歉~~~
2010 年3月,我换成了的付费服务,希望好运~~~
人人都是产品经理
做产品,你不是一个人在战斗
朋友们的窝窝
经常出没的地儿,先乱着
一些可能有用的信息
有人回复时邮件通知我那个叫“BIM”的东西究竟是什么?
时至今日,大部分干这行的地球人好像都知道BIM是什么了,不就是Building Information
Modeling或者建筑信息模型吗?您说的没错。
BIM的定义网上都有,查BIM, Building Information
Modeling或建筑信息模型都能找到,维基百科、百度百科应有尽有,说法五花八门,但都有一个共同的特点,一个字,玄。三个字,相当玄。越看越不知道这个东西能帮您干嘛,可能唯一容易理解的是要用新的软件,诸如Autodesk
Revit, Bentley Architecture, Graphisoft ArchiCAD和Digital
Project等。
然后就有人去用了,然后大家又都不用了,道理很简单,好像还不如AutoCAD来得快。
但BIM却没有因此退出历史舞台,反而越来越热闹,在发源地美国热闹得不亦乐乎,连美国的国家BIM标准都弄出来了。而且百尺竿头,同所有山姆大叔好的和不好的东西一样,非得冲出美国,走向世界。
香港一直是亚洲的潮流风向标,BIM也不例外,这几年,用BIM的项目大大小小早就超过100个了,看样子可以用一句话形容:一发不可收拾。
香港是一国两制的地区,最大的特点是那里的业主们一定是无利不起早的,这么看来,BIM一定是为香港的业主带来了利益了。
BIM可能真是个好东西!
这么说来,国内干这行的地球人好像还没完全弄明白这回事,但有一点是尝试过了,BIM不是简单地换一个软件。
那BIM是什么呢?要回答这个问题,咱们得先一起来瞧瞧房子是怎么造出来的。
房子是怎么造出来的?
人类一发问,上帝就发笑。当然人类是在下,干这行的地球人都是上帝。
l& 业主/投资商 & 出钱
l& 设计师 & 画图
l& 发展商 & 照图卖房
l& 工料测量师 & 照图算钱
l& 发展商 - 照图招投标
l& 施工企业 & 照图砌砖
l& 物业管理 & 照图管理
太简单了!连不干这行的地球人也知道!于是人类也发笑了。
除此之外,大凡跟房子有过亲密接触的干这行和不干这行的地球人还知道另外一些事情:
l& 装修的时候总是要钻断电线、打穿水管
l& 豪华酒店、写字楼总有些地方挂着 “请勿碰头”、“注意脚下”的牌子
l& 总是有些房间冻死、有些房间热死
l& 总是看到有些刚造好的地方砸了又重来
l& 水管爆裂总是要大半天以后才能找到阀门把它关上
l& “胡子工程、豆腐渣工程、钓鱼工程”的说法又生动又形象
l& “错漏碰缺”听起来很专业,改起来很花钱
l& “设计变更”变一次花一次钱
l& 该留洞口的的地方没留,或者留的不够大。怎么办?雇人砸。
不可预见费。注意这可不是不可抗力如地震海啸引起的,是在什么都正常的情况下发生的费用。
我想大家都看明白了,不是看图的人看错了,就是图纸本身出错了。恭喜您,答对了!
您拿到的图纸是错的
说这句话,设计师肯定不会跟我玩儿命,因为我说的是事实。
也绝对不是设计师不专业、不认真、不敬业,这对绝大部分设计师来说也是事实。
难道是设计师故意的,这句不是我说的,是您说的。
图纸出错的原因很多,大致有几个方面:
首先是各行其是。
设计至少有建筑、结构、水道、暖通、电气、概预算等专业,还有数据、通讯、安全、节能等等,这些专业之间分工是清晰的,合作是模糊的,每个专业的图纸都是对的,合在一起是一定有问题的。没有一个专门的职位负责多专业协调,有的只是专业协调会,开会的时候大家还是盯着自己的图纸,特专业、特认真、特敬业。其结果就是每套项目图纸都有问题,不是不同专业的内容互相打架,就是造好以后等您进来了撞您脑袋。
请记住是每套,不是几乎每套。
其次叫做纸上谈兵。
这个更好理解,设计和施工学校里学的是两个专业,出来干的是两个活,一个是脑力劳动,一个是体力劳动;设计师认为施工人员理论水平欠缺,施工人员认为设计师是纸上谈兵,第一个说法本人没找到有力证据,第二个说法很不幸,是事实。具体表现为,设计师的图纸有些内容在施工的时候是做不出来的,或者即使能做出来也得花吃奶的力气。
这时候就得请设计师改图纸,施工人员告诉设计师应该怎么改,改好了施工人员再按新的图纸施工。
您猜对了,每个项目的图纸都碰到这个问题。
第三称之为变更频繁。
大家都知道大款娶人造美女生出小丑女索赔的事情。所谓变更就是在原始的图纸上整容,整好了必须记住那里是修正过的,哪里是原装的,否则后果很严重,业主只能很生气。
干这行的地球人都知道,竣工图是怎样练成的。
而物业管理公司是按照竣工图去运行和维护物业的。
剩下的问题大家都会回答了,例如:水管是怎样打穿的?
图纸和实物没对上呗,地球人都知道……
我们被电脑效果忽悠了
干电脑效果图这行的专业叫法不少,可视化(Visualization)、CG (Computer
Graphics)、虚拟现实(Virtual Reality)等,明白是干什么的了吗?
没错,演戏的。戏说房子。
人类有史以来的绝大部分时间里,绝大多数人是文盲,戏是容易看懂的,所以可以起到教化民众、传承文明的作用。
造房子的过程中,一套项目图纸有十几个甚至几十个专业的成百上千以致上万张图纸,而项目的参与人员也成百上千乃至上万,是不是图盲都力不从心,电脑效果图、动画或虚拟现实可以达到沟通信息、辅助理解的作用。
不同的是,戏中人物与原型有差距也许还可以起到更好的教化作用,但是如果电脑效果中的房子和实际的房子不一样的话,就不是有问题了,而是有很严重的问题。
事实如何呢?
房子是根据图纸造出来的,图纸是不断地在变更的。
问:效果图也在不断变更吗?
答:不是。
结论已经有了。
没错,问题确实很严重!
业主是个冤大头
前提一:业主花钱请设计师做设计,设计师把图纸交给业主;
前提二:施工过程中,发现机电和土建打架了。接下来就是:施工暂停,等设计师修改图纸,工料测量师重新计价,业主追加投资,施工重新开始;
设计师损失了什么?图纸、墨水。
承包商损失了什么?没找到。也许可以多挣钱。
业主损失了什么?金钱、工期。
推理:业主是个冤大头。
前提一:业主花了九牛二虎之力,照图招投标,按照质高价低者得的原则确定了项目承包方;
前提二:施工开始,发现有几处地方图纸上忘记画了。接下来:业主请设计师补充图纸,重新计价,追加投资,继续施工。
这个时候,不能再招标了吧?您答对了!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
设计师损失了什么?图纸、墨水。
承包商损失了什么?您说呢?
业主损失了什么?金钱、工期、质量……
推理:业主是个冤大头。
那个叫BIM的东西究竟是什么?
作为业主,
您想造出来的房子得到市场认可不断升值吗?
您想大大减少追加预算吗?
您想保证项目按时建成吗?
您想把设计图纸的错误在招标以前都找出来修改好吗?
你想把承包商提供的施工方案照实际情况(不是戏说)都模拟出来吗?
您想把不可行或不合理的施工方案都预先侦查出来并且在施工开始前调整修改好吗?
您想快速甚至实时得到任何一个变更对成本的影响吗?
您想动态记录所有变更,得到一个和实际建筑物一致的建筑信息模型用于今后数十年的运营维护吗?
您想对采购、运输、安装过程和和每天的施工计划进行动态集成管理和跟踪吗?
您想在不同阶段随时对投资方和客户进行项目的可视化介绍和分析吗?
您想您看到的效果图、动画、虚拟现实不再是忽悠而是真实情况的真实反映吗?
写到这里,是不是地球人可能都知道我要说什么了。
是的是的,对于业主而言,BIM就是能帮助您实现上述目标的那个东西。
BIM是软件吗?
其实您已经知道答案了,软件只是BIM的一种工具,例如螺丝刀。当然只有螺丝刀是造不出汽车的。
BIM是建筑物的那个信息模型吗?
当然也不是,信息模型只是BIM的结果。而且大多数人做出的这个结果还是错的。
估计地球人已经要骂我了,扯那么多干啥,你说BIM是什么?
我的答案是:BIM是BIM咨询师。
证明如下:
BIM = 让业主看见项目未来的水晶球 = 省钱 + 省时间 + 高质量。
要实现上述目标,没有BIM工具(软件)很难做到,没有BIM专业人士肯定做不到。
BIM = BIM专业人士 + BIM工具。
BIM专业人士肯定会使用BIM专业工具。
BIM = BIM专业人士。
我们把BIM专业人士称之为BIM咨询师。
BIM = BIM咨询师。
证明完毕。
请设计师做BIM咨询师行码?
既然BIM = BIM咨询师,那什么人可以做BIM咨询师呢?
答案很简单:BIM咨询师 = 懂专业的 + 懂BIM的。
不懂BIM的人当然做不了BIM咨询师,而不懂专业的人会把BIM做成可视化,变成
戏说建筑。
BIM可以做CAD做的事情,但是BIM不是CAD。
BIM可以做可视化做的事情,但是BIM不是可视化。
估计您看明白一点了:设计师学会BIM就可以做BIM咨询师了!
非常正确!如果纯粹从技术层面来说的话。但是,设计师不能做BIM咨询师。
道理很简单:
因为,BIM咨询师的其中一个重要工作是找出设计图纸的错误,所以,如果设计师是BIM咨询师,后果您自己知道。
就好像会计和审计是一家的情况下会出现的后果一样。
BIM咨询应该是业主在聘请策划、设计、施工、工料测量、节能、建筑智能、销售、物业管理等服务以外的另外一个独立的咨询服务供应商。
BIM咨询的任务就是帮业主从施工垃圾堆里把浪费的钱捡回来,从而保证工期、保证质量、保证性能、保证造出来的房子是客户要的房子。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如今网络无时无刻不在影响着我们的生活,电子商务随之也蓬勃发展,所以就引申出今天这篇文章,来谈谈开网店的一些问题。首先一般想开网店的新手都是那类人?我认为大多是上班族、学生、在家待业或者是实体店受到冲击的店主等等,想必主要都是集中在这些人群,总有人问我开网店卖什么好?卖什么赚钱?卖什么比较火?今天就借此文来谈下本人的观点吧!
首先对于这类问题我一般的回答都是:&卖你自己喜欢的东西就好,或者你比较熟悉比较有优势的东西就行了&。但是对于新手来讲他就觉得不理解,这是什么逻辑,我问你卖什么好,你就直接告诉我卖什么东西就可以了,你这样说不是等于没说?其实不是我不想说,我说下理由:1.这世界上卖什么都能赚大钱,比如有人卖猪粪都能赚到很多钱,如果我告诉你卖猪粪,你一定说扯淡。2.卖什么好?卖什么火?卖什么赚钱?好,现在我告诉你卖减肥产品很火很赚钱,你快去卖吧,结果呢,人人都去卖了,你现在到淘宝上看看,有多大的竞争?到处都是卖减肥产品,你一盒都卖不出去啊?3.前段时间我看到一个卖牛仔裤的,一个月赚了几万块,另外我还看到一个卖牛仔裤他还赔钱,一分钱都赚不到,所以卖什么能赚钱一方面还取决于做事的人。
综上因素,本人真没法给这些新手答案,不过,新手问这样的问题一般都情有可原,因为很多人都是想做网店,但是对这方面一点不懂,非常的迷茫,才会问出这样的问题。这边给大家提供一些类型的产品作为参考吧。另外不懂的也可以找我交流。
第一:服装、皮鞋、饰品类。这类商品在淘宝网的搜索率是比较高的,做起来比较容易一些。当你进货的时候就要仔细的看看款式,比如今年比较流行什么款式,那你就去找相应的货源。千万切记找货源的时候一定要提前去找,因为当今的市场竞争相当的激烈,所以要想赚钱就要比别人提前这样才能够找到好的货源,在找货源的前提是款式要有创意,这样才能吸引更多的客户来买你的商品。
第二:化妆品类。女人爱漂亮,所以卖化妆品也是一个比较不错的选择。目前市场上比较好卖的化妆品大概有欧莱雅、白大夫、活泉补水、雅诗兰黛等等,都是市场反响不错的产品,这些产品每款都有每款不同的特质,只要价格卖的合理,服务态度够好的话,相信买的客户还是会有的。
第三:女式箱包类。箱包的制作成本低,利润空间大,但关键就是看你怎么进货,最好是物品要足够多,要有新鲜感,这样才更能够让客户才能够有种想买的冲动,还有一点就是隔一段时间要跟新货源。这样客户每次逛你的网店才会感到款式多,当然来买的人也会更多,回头客也会更多。
第四:老年人类。人老容易生病,老年人的相关产品需求旺盛。老年人用品类如老年人手机,老年人电脑,老年人健身器材,老年人食品类如保健品,功能食品等等都是很多人老年人需要的,有这方面资源的朋友可以去尝试一二。
第五:儿童类。为了孩子的健康成长,再苦再累投资再大,父母都不会说二话。在儿童类产品方面,可以从孩子的衣食住行考虑,如儿童衣服,婴儿服,儿童健康食品,儿童早教,儿童智力开发等等。
上面的几大类大家都可以参考下,看自己选择卖什么。另外我觉得作为新手来讲,应该不要去太考虑卖什么好,而是应该考虑卖什么比较合适自己,因为在没有任何经验的情况下,是很难去跟老店家竞争的,应该要抱着一个学习的心态去做一件事情,慢慢来,想想欲速则不达。作为我个人,我还是推荐大家考虑做实物代销以及虚拟网店方面,投资相对小、有人教比较适合新手。
以上是本人的一些思路,在如今的创业浪潮下,选择比努力更重要。选择的方向错了,却会浪费我们大量的时间和精力,却得不偿失。所以,大家在这方面应该慎重考虑,应该找准方向,坚持到底!
开网店方面有什么不懂的可以拿出手机加微信号&wangdianshuo&或者扫一扫下面的微信二维码,添加关注即可学习网店知识。
本文系站长之家用户投稿,本文涉及的内容和服务商联系方式,并不代表站长之家认同与认证,请用户自行核对查实服务商诚信度及信息
编辑:nakake
猜你喜欢:
最新图文资讯
站长之家专栏推荐
增值电信业务经营许可证: 闽B2-号 - 北京公安局网监中心备案号: 95号 -
(C)CopyRight 2002- Inc All Rights Reserved. 站长之家 版权所有Google 到底看中了 Magic Leap 的什么? | 36氪
今年三月份,Facebook 对外宣布了,如果说2014年还有什么新闻能让给我同样的震撼,那一定就是。
是一个及其低调又隐蔽的项目,除了获得 5000 万美金早期投资的消息,很少有消息见诸报道。最绝的是,连官网都神秘到不肯告诉你他们做的是什么的。消息出来,问了好多国内外做VR、AR的创业者,大家对于这家公司也是知之甚少。
估计所有人心里都有一个疑问,这到底是一家什么样的神奇公司,能让巨头如此青睐。本着八卦的心态,我也搜集了一些资料并整理了出来抛砖引玉。当然啦,作为一个技术白,估计此文还有很多不准确或者有误的地方,欢迎知情人士各种拍砖、剧透 ()。
类Avegant的虚拟视网膜技术
Magic Leap说他们生产能够产生“Cinematic Reality”效果的软硬套件,能呈现比 Oculus Rift 更具现实感的 3D 体验,这种体验如同建立在真实世界之上。当你调整 焦点时会有不同的角度和深度随之转换,正如光场相机的效果一般。Magic Leap称“ 这种体验既不是虚拟现实,也不是增强现实,而是一种30-40年后的计算技术”。
从以及来看,Magic Leap的成像技术可能和 Avegant 类似。Avegant的成像原理与Oculus完全不同,采用一种叫作VRD虚拟视网膜技术(Virtual Retinal Display),可以在没有实体“显示设备”的情况下,将图像直接投射到用户的视网膜上。
对滴,写到这里你一定觉得这就是AR增强现实技术。Magic Leap及他们的Cinematic Reality 还是与传统的AR技术有一些区别的,区别主要是在呈现的效果上。传统的AR技术中,文字、图像以及其他虚拟元素会层层堆积在现实世界之上,让人觉得他们是漂浮在实景世界之上的。而 Magic Leap 和 Avegant Glyph 所产生的画面会更加真实,虚拟部分与现实部分会结合在一起,共同成为你视觉的一部分。所以正式因为这个原因,Magic Leap 把他们的技术定义成了“Cinematic Reality ” ,如同电影般的现实。事实上,福布斯的专栏作家在体验Avegant Glyph的产品时,就是,“给人的印象就是在一家小型影院里通过电影放映窗在看电影”。
这种成像技术的另一个好处就是成像更加“真实”,不会产生“晕3D”的问题了。关于虚拟视网膜技术,,也发布过类似的产品和方案,相关的原件都有大规模商业生产的可能性。
Magic Leap在做的事情
回到正题,那么Magic Leap到底是通过什么设备成像的呢?Magic Leap 官方没有说,国内外的报道也没有说。我们就来从现有的一些报道里找些蛛丝马迹吧。
纽约时报的编辑John Markoff 在今年7月的报道里,没有提及他们使用了何种设备,只是说。
作为一家能被Google看中的公司,自然是一家“技术流”公司。我查了下,大概包括了:、符合人体工程学的、、紧凑型成像系统、可让用户互动的“大型同步远程数字存在技术”。因此,很可能是通过符合人体工程学的头戴显示设备显示,通过触觉手套交互。
从符合人体工程学的头戴显示设备这项专利来看,Magic Leap使用的设备很可能具有眼镜状的外观,内置自由形式的光学系统。从上图中可以看出,设备中很可能包含了一个波导棱镜,有多个自由折射和反射表面,作为导光装置。光线从图像显示单元发出,经由棱镜的第一折射面,注入到波导棱镜。所注入的光线经由多重反射(通常为3个或更多)的波导棱镜,经由棱镜的第二折射面继续传播,直达用户的视网膜。
从触觉手套的专利描述来看,这是一个动作捕捉的输入设备,可以用来对眼前的图片交互。也许,未来很可能是这个样子的:Magic Leap在你眼前呈现了一个键盘,你动动手指,就真的操作了它,不仅有实质上的输出,很可能还会有实际的手感。
输入、输出都有了,Magic Leap就像是一个体系、一个系统了。事实上,他们也在这么做,他们的专利中还有一项就是,展示的是一个与虚拟出来的现实世界展示、交互的装置和方法。
为什么Google愿意参投Magic Leap
写到这里,为啥Google愿意参投 Magic Leap 就显而易见了吧。Google Glass虽然不会像Oculus一样,让用户产生眩晕。但它也有大硬伤,那就是不能产生3D的视觉效果。
目前的Google Glass与Moto 360本质上都一样,都是手机的外设,都是现有设备的延伸。但加上Magic Leap ,也许就是下一个计算平台了,像当年的PC和手机一样,能够同时满足办公与娱乐的需求。而随着生产力的发展与物质的富足,娱乐显然是大势。
今年3月,Facebook收购Oculus的时候,我还在遗憾,为啥不是Google提前买下未来的无限可能和抵御Facebook的护城河。现在想想,Google选了另一条路。在VR与AR之间,Google很一开始就选择了AR。Google Glass是第一步,Magic Leap则是第二步,也许未来加上Google的人工智能技术和智能机器人,也许会在现实的世界“虚拟”出一个平行的“现实世界”,我想见的人随时随地以幻像的形式出现在我的世界,还能与我有互动;游戏不再仅仅是2D、3D的,而是像《彩虹尽头》里描述的那样,以实体的游戏场出现,允许我在其中“真实”的格斗、探险……
下一代计算平台
在《》中有这样一段话,我印象特别深刻:
想想看,如果十年内 Oculus VR能做到太阳镜大小,戴上它,你的视界中出现了一层新的计算界面,可以同现实世界并行不悖,也可以选择完全沉浸式体验也就是抹掉外界信息。
事实上,Magic Leap现在就在做这件事了。目前猜测,应该做的还不错。据说他们计划明年推出开发者套件,两年内有可能推出500美元的消费者版本。
像Oculus 和Magic Leap做的事情,之所以恐怖就在于他们创造了一个新的平台,创造了新的人机交互,创造了新的媒介。历史上,每一次新平台的诞生,都促进了新的领域、行业的诞生;每一次人机交互的创新,都会改写人类的行为习惯;而每一次新媒介的出现,都会或多或少的改写人类历史的发展和走向。
而在未来,VR与AR能够带给人的,肯定不仅仅是虚构一个游戏的世界、幻化一个逼真的任务、打造一个仿真的体验,很可能将是“铸造”全新的世界与认知。一两百年前,人们已经完成了声音的虚拟化,现在以Oculus 和Magic Leap为代表的产品正在进行第二步,虚拟现实人们的视觉,未来加上Ophone这样能够虚拟现实嗅觉体验的产品:一个看似更加真实的虚拟世界正在向我们挥手。
比新的计算平台更重要的是新的“Reality”
“Reality”是什么?我们会翻译成现实、实体的东西,认为一切我们感知到的实体都可能是现实。当未来像Oculus 和Magic Leap这样的公司可以把VR和AR做到足够“真实”,可以以假乱真的时候,你还能分得清哪是现实、哪是虚构么?
也许是时候去想一想,新的“Reality”是什么了。
中国人数学好、擅长制作,在硬件复兴的时代,看起来具有天然的优势。为什么还没有颠覆性的、革命性的产品和技术呢?除了浮躁,也许就是我们对于技术本身的认知还存在问题。不知道是偶然还是必然,国外的很多大牛在讲硬件的时候,总会从大脑、从神经讲起,让这些技术看起来玄之又玄,看似多余的背后也许是另一种技术的理念。技术真正牛X的地方,也许并不至于可以实现什么样的功能,而在于如何。
自时代起,科学的所有进步都在于更好地确定“生存”、“境遇”和“意识”之间的边界。人类的特征就是拒绝有限性,想要确保“意识”对“生存”、“境遇”的控制,不断地突破那些将它封闭在空间、时间和精神之中的界限,也就是说,勇敢面对无限。而Magic Leap所想要做的,正是重新融合这三者,消除这些边界,这就是人类未来的命运。
[36氪原创文章,作者: 小石头]
/ breaking
/ breaking
/ us-startups
无需注册,直接使用社交账号登录
没有帐号?
已有帐号?
右键另存为下载到本地
分享到微博
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
单击提交则表示您同意developerWorks
的条款和条件。 .
所有提交的信息确保安全。
developerWorks 社区:
我的概要信息
选择语言:
Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。
, 自由程序员, Freelancer
在 Michael Abernethy 的 13 年技术生涯中,他与各种不同的技术和客户打交道。他目前是一名自由程序员,擅长 Java 高可用性和 jQuery。他现在专注于富 Internet 应用程序,试图同时实现应用程序的复杂性和简单性。他空闲时常常去打高尔夫球,更确切地说,是在灌木丛中寻找他打飞的高尔夫球。
简介如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页之后,您甚至可能还是 不明白 Node 为何物?Node 肯定不适合每个程序员,但它可能是某些程序员一直苦苦追寻的东西。为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的 Node 教程。阅读本文应该有助于您决定是否应该继续学习 Node,以便将其用于您的业务。Node 旨在解决什么问题?Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。当前的服务器程序有什么问题?我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。当然,这会增加服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。鉴于上述所有原因,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。Node 解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。现在您有了一个能处理数万个并发连接的程序,那么您能通过 Node 实际构建什么呢?如果您有一个 Web 应用程序需要处理这么多连接,那将是一件很 “恐怖” 的事!那是一种 “如果您有这个问题,那么它根本不是问题” 的问题。在回答上面的问题之前,我们先看看 Node 的工作原理以及它的设计运行方式。Node 肯定不是什么?没错,Node 是一个服务器程序。但是,基础 Node 产品肯定不 像 Apache 或 Tomcat。本质上,那些服务器 “安装就绪型” 服
务器产品,支持立即部署应用程序。通过这些产品,您可以在一分钟内启动并运行一个服务器。Node 肯定不是这种产品。Apache 能通过添加一个 PHP 模块来允许开发人员创建动态 Web 页,添加一个 SSL 模块来实现安全连接,与此类似,Node 也有模块概念,允许向 Node 内核添加模块。实际上,可供选择的用于 Node 的模块有数百个之多,社区在创建、发布和更新模块方面非常活跃,一天甚至可以处理数十个模块。本文后面将讨论 Node 的整个模块部分。Node
如何工作?Node 本身运行 V8 JavaScript。等等,服务器上的 JavaScript?没错,您没有看错。对于只在客户机上使用 JavaScript 的程序员而言,服务器端 JavaScript 可能是一个新概念,但这个概念本身并非遥不可及,因此为何不能在服务器上使用客户机上使用的编程语言?什么是 V8?V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。很少有人考虑 JavaScript 在客户机上实际做了些什么?实际上,JavaScript 引擎负责解释并执行代码。Google 使用 V8 创建了一个用 C++ 编写的超快解释器,该解释器拥有另一个独特特征;您可以下载该引擎并将其嵌入任何 应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。太完美了!既然已经有一个不错的解决方案可用,为何还要创建一种新语言呢?事件驱动编程许多程序员接受的教育使他们认为,面向对象编程是完美的编程设计,这使得他们对其他编程方法不屑一顾。Node 使用了一个所谓的事件驱动编程模型。清单 1. 客户端上使用 jQuery 的事件驱动编程// jQuery code on the client-side showing how Event-Driven programming works
// When a button is pressed, an Event occurs - deal with it
// directly right here in an anonymous function, where all the
// necessary variables are present and can be referenced directly
$("#myButton").click(function(){
if ($("#myTextField").val() != $(this).val())
alert("Field must match button text");
});实际上,服务器端和客户端没有任何区别。没错,这没有按钮点击操作,也没有向文本字段键入的操作,但在一个更高的层面上,事件正在 发生。一个连接被建立,这是一个事件!数据通过连接进行接收,这也是一个事件!数据通过连接停止,这还是一个事件!为什么这种设置类型对 Node 很理想?JavaScript 是一种很棒的事件驱动编程语言,因为它允许使用匿名函数和闭包,更重要的是,任何写过代码的人都熟悉它的语法。事件发生时调用的回调函数可以在捕获事件处进行编写。这样可以使代码容易编写和维护,没有复杂的面向对象框架,没有接口,没有过度设计的可能性。只需监听事件,编写一个回调函数,其他事情都可以交给系统处理!示例 Node 应用程序最后,我们来看一些代码!让我们将讨论过的所有内容汇总起来,从而创建我们的第一个 Node 应用程序。我们已经知道,Node 对于处理高流量应用程序很理想,所以我们将创建一个非常简单的 Web 应用程序,一个为实现最快速度而构建的应用程序。下面是 “老板” 交代的关于我们的样例应用程序的具体要求:创建一个随机数字生成器 RESTful API。这个应用程序应该接受一个输入:一个名为 “number” 的参数。然后,应用程序返回一个介于 0 和该参数之间的随机数字,并将生成的数字返回给调用者。由于 “老板” 希望该应用程序成为一个广泛流行的应用程序,因此它应该能处理 50,000 个并发用户。我们来看看以下代码:清单 2. Node 随机数字生成器// these modules need to be imported in order to use them.
// Node has several modules.
They are like any #include
// or import statement in other languages
var http = require("http");
var url = require("url");
// The most important line in any Node file.
This function
// does the actual process of creating the server.
Technically,
// Node tells the underlying operating system that whenever a
// connection is made, this particular callback function should be
// executed.
Since we're creating a web service with REST API,
// we want an HTTP server, which requires the http variable
// we created in the lines above.
// Finally, you can see that the callback method receives a 'request'
// and 'response' object automatically.
This should be familiar
// to any PHP or Java programmer.
http.createServer(function(request, response) {
// The response needs to handle all the headers, and the return codes
// These types of things are handled automatically in server programs
// like Apache and Tomcat, but Node requires everything to be done yourself
response.writeHead(200, {"Content-Type": "text/plain"});
// Here is some unique-looking code.
This is how Node retrives
// parameters passed in from client requests.
The url module
// handles all these functions.
The parse function
// deconstructs the URL, and places the query key-values in the
// query object.
We can find the value for the "number" key
// by referencing it directly - the beauty of JavaScript.
var params = url.parse(request.url, true).
var input = params.
// These are the generic JavaScript methods that will create
// our random number that gets passed back to the caller
var numInput = new Number(input);
var numOutput = new Number(Math.random() * numInput).toFixed(0);
// Write the random number to response
response.write(numOutput);
// Node requires us to explicitly end this connection.
This is because
// Node allows you to keep a connection open and pass data back and forth,
// though that advanced topic isn't discussed in this article.
response.end();
// When we create the server, we have to explicitly connect the HTTP server to
// a port.
Standard HTTP port is 80, so we'll connect it to that one.
}).listen(80);
// Output a String to the console once the server starts up, letting us know everything
// starts up correctly
console.log("Random Number Generator Running...");启动应用程序将上面的代码放入一个名为 “random.js” 的文件中。现在,要启动这个应用程序并运行它(以便创建 HTTP 服务器并监听端口 80 上的连接),只需在您的命令提示中输入以下命令:% node random.js。下面是服务器已经启动并运行时看起来的样子:root@ubuntu:/home/moila/ws/mike# node random.js
Random Number Generator Running...访问应用程序应用程序已经启动并运行。Node 正在监听所有连接,我们来测试一下。由于我们创建了一个简单的 RESTful API,所以可以使用 Web 浏览器来访问这个应用程序。键入以下地址(确保您已完成了上面的步骤):http://localhost/?number=27。 您的浏览器窗口将更改到一个介于 0 到 27 之间的随机数字。单击浏览器上的 “重新载入” 按钮,您会得到另一个随机数字。就是这样,这就是您的第一个 Node 应用程序!Node 对什么有好处?到此为止,您可能能够回答 “Node 是什么” 这个问题了,但您可能还有一个问题:“Node 有什么用途?” 这是一个需要提出的重要问题,因为肯定有些东西能受益于 Node。它对什么有好处?正如您此前所看到的,Node 非常适合以下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。Node 表现出众的典型示例包括:RESTful API提供 RESTful API 的 Web 服务接收几个参数,解析它们,组合一个响应,并返回一个响应(通常是较少的文本)给用户。这是适合 Node 的理想情况,因为您可以构建它来处理数万条连接。它仍然不需要大量逻辑;它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的 API 需求。Twitter 队列想像一下像 Twitter 这样的公司,它必须接收 tweets 并将其写入数据库。实际上,每秒几乎有数千条 tweet 达到,数据库不可能及时处理高峰时段所需的写入数量。Node 成为这个问题的解决方案的重要一环。如您所见,Node 能处理数万条入站 tweet。它能快速而又轻松地将它们写入一个内存排队机制(例如 memcached),另一个单独进程可以从那里将它们写入数据库。Node 在这里的角色是迅速收集 tweet,并将这个信息传递给另一个负责写入的进程。想象一下另一种设计(常规 PHP 服务器会自己尝试处理对数据库本身的写入):每个 tweet 都会在写入数据库时导致一个短暂的延迟,因为数据库调用正在阻塞通道。由于数据库延迟,一台这样设计的机器每秒可能只能处理 2000 条入站 tweet。每秒处理 100 万条 tweet 则需要 500 个服务器。相反,Node 能处理每个连接而不会阻塞通道,从而能够捕获尽可能多的 tweets。一个能处理 50,000 条 tweet 的 Node 机器仅需 20 台服务器即可。电子游戏统计数据如果您在线玩过《使命召唤》这款游戏,当您查看游戏统计数据时,就会立即意识到一个问题:要生成那种级别的统计数据,必须跟踪海量信息。这样,如果有数百万玩家同时在线玩游戏,而且他们处于游戏中的不同位置,那么很快就会生成海量信息。Node 是这种场景的一种很好的解决方案,因为它能采集游戏生成的数据,对数据进行最少的合并,然后对数据进行排队,以便将它们写入数据库。使用整个服务器来跟踪玩家在游戏中发射了多少子弹看起来很愚蠢,如果您使用 Apache 这样的服务器,可能会
有一些有用的限制;但相反,如果您专门使用一个服务器来跟踪一个游戏的所有统计数据,就像使用运行 Node 的服务器所做的那样,那看起来似乎是一种明智之举。Node 模块尽管不是本文最初计划讨论的主题,但应广大读者要求,本文已经扩展为包含一个 Node Modules 和 Node Package Manager 简介。正如已经习惯使用 Apache 的开发人员那样,您也可以通过安装模块来扩展 Node 的功能。但是,可用于 Node 的模块极大地 增强了这个产品,那些模块非常有用,将使用 Node 的开发人员通常会安装几个模块。因此,模块也就变得越来越重要,甚至成为整个产品的一个关键部分。在 “参考资料” 部分,我提供了一个指向模块页面的链接,该页面列示了所有可用模块。为了展示模块能够提供的可能性,我在数十个可用模块中包含了以下几个模块:一个用于编写动态创建的页面(比如 PHP),一个用于简化 MySQL 使用,一个用于帮助使用 WebSockets,还有一个用来协助文本和参数解析的模块。我不会详细介绍这些模块,这是因为这篇概述文章旨在帮助您了解 Node 并确定是否需要深入学习(再次重申),如果需要,那么您肯定有机会用到这些可用模块。另外,Node 的一个特性是 Node Package Module,这是一个内置功能,用于安装和管理 Node 模块。它自动处理依赖项,因此您可以确定:您想要安装的任何模块都将正确安装并包含必要的依赖项。它还支持将您自己的模块发布到 Node 社区,假如您选择加入社区并编写自己的模块的话。您可以将 NPM 视为一种允许轻松扩展 Node 功能的方法,不必担心这会破坏您的 Node 安装。同样,如果您选择深入学习 Node,那么 NPM 将是您的 Node 解决方案的一个重要组成部分。结束语阅读本文之后,您在本文开头遇到的问题 “Node.js 究竟是什么东西?” 应该已经得到了解答,您应该能通过几个清晰简洁的句子回答这个问题。如果这样,那么您已经走到了许多程序员的前面。我和许多人都谈论过 Node,但他们对 Node 究竟用于做什么一直很迷惑。可以理解,他们具有的是 Apache 的思维方式,认为服务器就是一个应用程序,将 HTML 文件放入其中,一切就会正常运转。由于大多数程序员都熟悉 Apache 及其用途,因此,描述 Node 的最简单方法就是将它与 Apache 进行比较。Node 是一个程序,能够完成 Apache 能够完成的所有任务(借助一些模块),而且,作为一个可以将其作为基础进行构建的可扩展 JavaScript 平台,Node 还能完成更多的任务。从本文可以看出,Node 完成了它提供高度可伸缩服务器的目标。它使用了 Google 的一个非常快速的 JavaScript 引擎,即 V8 引擎。它使用一个事件驱动设计来保持代码最小且易于阅读。所有这些因素促成了 Node 的理想目标,即编写一个高度可伸缩的解决方案变得比较容易。
与理解 Node 是 什么同样重要的是,理解它不是 什么。Node 并不只是 Apache 的一个替代品,它旨在使 PHP Web 应用程序更容易伸缩。事实远非如此。尽管 Node 还处于初始阶段,但它发展得非常迅速,社区参与度非常高,社区成员创建了大量优秀模块,一年之内,这个不断发展的产品就有可能出现在您的企业中。
是了解这个应用程序的切入点。。您还将需要 。浏览 。注意,不同发布的语法可能不同,因此,请仔细检查您已下载的版本和正在浏览的 API。参见 ,该页列出了所有可用于 Node 中的模块。搜索 ,轻松扩展您的 Node 安装的功能。随时关注 developerWorks 和。
访问 developerWorks 获得丰富的 how-to 信息、工具和项目更新以及,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。
查看免费的 ,观看并了解 IBM 及开源技术和产品功能。参见 Wikipedia 上不断变化的 。
改进您的下一个开源开发项目,这些软件可以通过下载获得。。帮助构建 developerWorks 社区中的
讨论组。加入 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。加入 ,参与在线交流。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Open sourceArticleID=680425ArticleTitle=Node.js 究竟是什么?publish-date=

我要回帖

更多关于 爱情到底是什么 的文章

 

随机推荐