失败意味着剥光所有无关紧要的东西

    我失败后,我不再假装我是某种其实我不是的人,而开始将我的精力投入于我真正在乎的工作。人生的谷底,变成我重建人生的坚实基石。所以不要畏惧失败;只要活着就必然要面对失败,除非你小心翼翼到仿佛一生都没有活过。如果这样,你的失败将来自于放弃生活。(via:JK 罗琳)

失败意味着剥光所有无关紧要的东西 - 小男生 - 小男生的博客

 

比亚迪

“一种新产品的开发,实际上60%来自文献,30%来自样品,5%来自原材料等因素,自身的研究实际上也就5%左右。”——–王传福

“汽车的外观专利有五幅照片,前面、后面、侧面、正上方和斜上方,这五个面都是相似的,就可能是侵权的,但只要其中有一幅照片风格完全不一样,其余的完全一样也不侵权。”———比亚迪首席设计师廉玉波

敢于蔑视商业模式和游戏规则,认为创新来自于整合,这种思维解放了比亚迪的思想,并从竞争激烈的市场中杀出一条血路。

比亚迪依然稚嫩,真正属于自己的技术并不多,而它对游戏规则的漠视,也将树敌更多。

给新手程序员的一封信

 首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。

  “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。” – WhyTheLuckyStiff

  对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。

  仅仅是因为爱好开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打开你的编辑器开始写代码吧。

  下面是一些很重要的建议,虽然有人并不认同,但我保证你看完我的分析以后会站在我这一边。一开始,先不要管算法和数据结构。大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后找一些相关的论文去理解算法并动手编程实践。如果没有现成的函数库(其他程序员提供的可重用代码),你用自己喜欢的编程语言来实现它。

给新手程序员的一封信 - 小男生 - 小男生的博客

 

  0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。

  不要选择C语言作为你第一门编程语言。也许选择C语言会给你一种过时的满足感。虽然它比早期的汇编语言提供了更好语法描述,但是今天C(或者C++)不是能够快速编写软件的语言。毫不偏袒的说,我建议你学习一种动态语言。选择一种你觉得语法(文档)让你使用起来更舒服的编程。为此,你可能需要花费一些时间来在几种不同的语言之间进行比较。这么做目的不是为了让你感觉更好或者让编程更容易。更快地完成自己的作品并且能够看到成果,才是激励你编程的源动力。不要选择一门需要某种重量级的IDE(IDE是一种能够帮助你编写并运行代码的工具)才能轻松编程的语言。你所需要的仅仅是一个文本编辑器。(注:原文并没有标号,是我们加上的,请大家别忘记了哦,我们是从零开始数数的。:) )

  1. 选择一个好的编辑器。

  编辑器对程序员而言,就是像是弓对弓箭手一样重要。这里有一些推荐的编辑器:

  • SublimeText 2 – 如果你刚开始编程,推荐使用SublimeText 2
  • Emacs – 学习曲线陡峭,快捷键复杂。如果你想定制自己的使用习惯,需要学习Emacs Lisp.
  • Vim – 不仅操作简洁而且它默认包含在linux的发行版中,所以深受大家欢迎。我开始使用了2年Emacs。由于Emacs的快捷键操作过于复杂,我的双手开始经常疼痛,这迫使我转向了Vim阵营。了解Vim的快捷键是非常有必要的。当你在远程的服务器上编辑代码时,你唯一不需要安装的编辑器就是Vim。

  注意!Emacs和Vim可能已经成为成为古董了。但是,它们都具备一些现代编辑器多不具备的功能。

  2. 选择一个你可以从中学到东西的操作系统

  Windows不会教会你任何东西。使用Windows你唯一学会的就是打开一个exe(可执行)文件来安装软件和使用它。可能刚开始的时候你会觉得很酷,但是长远来看,如果你立志成为一个web开发人员,可能还是要具备基本的linux知识,尤其是当你要发布程序的时候。Linux也允许你根据自己的要求来定制程序。Macs也很酷,但是我认为你现在经济上还负担不起。

  3. 不要通过复制粘贴来做备份

  一个新手程序员通常会把文件复制粘贴到一个临时目录下面来进行备份。这也许也是他们唯一知道的方法。不要那么做!你需要使用版本控制软件。我强烈推荐使用Git,它是个目前很流行的版本控制工具,而且使用起来非常简单。对一个Git新手,有一个良好的社区和很多参考资源来学习。(除了Git之外,还有mercurial, darcs, fossil等等。但是我还是建议从Git开始,我有很多的理由来支持Git,这里就不多费口舌了。)

  4. 知道去哪里寻求帮助

  参加一个和你相关的(你使用编程工具相关的)程序员社区。比如StackOverflow就是程序员的Facebook。那里没有消息状态和回复,取而代之的是问题和答案。除此之外还要学会使用IRC。IRC是一种老式的聊天室,现在还在被大多数开发人员用来分享技术信息和帮助解决问题。

  5. 培养你的礼仪

  知道什么时候问问题。你遇到的大多数问题都是别人碰到过并且在Internet上能够找到解答的。在IRC或者任何论坛里发问之前,先搜索一下google(或者blekko)来看看是不是有现成的答案。在IRC上问问题需要有耐心。永远记住,人们只是处于好心来免费帮助你。有时你发问以后需要几个小时才能有回复。所以,耐心等待。除此之外,记得问问题的时候要礼貌。世界很小,你怎么对待别人,别人就会怎么对待你。

  6. 结交朋友,技术书籍只能教你解决常见的问题(他们说:书是死的)

  当你在捣鼓一些程序或者从程序的作者那里学习,你能学到一些书本上没有的东西。当你散步的时候,请和遇到的朋友打招呼。你肯定不是唯一的程序员。和其他的程序员一起交朋友一起工作。你会注意到,当一群技术爱好者在一起的时候,不论话题是从什么地方开始,最后总是以技术话题收尾。这是必然的现象。所以你可以尽情参与。在你的黄金年龄努力编程,我能告诉你的是,我在开始6年前寻找朋友并开始讨论编程,从那时起才学到那些书本和文章不会我的东西。所以我总是说,我的编程经验有6年,因为只有那个时候开始,我才开始与人交流并开始感觉真正地开始学习编程。

  7. 参加开源项目

  为开源项目编写代码能带来回报。这不仅仅是帮助别人,你留下的代码会被其他人使用或(可能)改进。当别人给你的代码添加功能或者提出修改意见时,也是在提高你的编程水平。开源软件项目不一定要是一个大工程,编写一个下载youtube视频的小程序也是很有用的。更重要的是,你会惊奇地发现你编写的代码会成为与他人有效沟通的桥梁。

  最后,若干年之后如果本文的内容曾经对你有一点点的帮助,作为回报请写一封类似的信给希望开始编程并不知如何入手的朋友,有可能的话请纠正本文中过时的内容。

  智者说过,掌握某个东西需要10年或10000个小时,也就是汉语中的“十年磨一剑”,所以不用着急。

  英文原文:An open letter to those who want to start programming

易CEO丁磊:我从来没有远大的理想

总是碰到许多大学生问我毕业以后怎么取得成功的,我说很遗憾,我大学选的专业并不是自己喜欢的。我很喜欢电脑,高中时就在苹果电脑上写游戏,自学完了BASIC语言。1989年我选择大学专业的时候,很想选计算机专业,但因父母说计算机辐射大,对健康有害,我就填了成都电子科技大学的通讯专业,被分到了全校最小的系——微波通讯,一个系只有30个人。据说这个系历来是最难分配的,而且会被分配到山沟沟里去,所以我大一挺郁闷的。

没人教你读书

但是当我到了学校以后,我想这是人生很重要的一步,它现在就这个样子了,你还有什么可以选择的呢?不如读下去。

不过我一直没有放弃辅修计算机,我那时经常跑到图书馆去看计算机方面的书,还去计算机系蹭课旁听。我第一个困惑是书本上的知识为什么要老师教才会?第二,这么多的学生,七点半起床,八点上课,很多人眼睛还没睁开,这样听课是不是有效率?这两个问题折磨我一阵子后,我毅然决定每天从第二堂开始上起。

因为我没有听第一堂课,又不得不做作业,所以我会努力去看老师上一堂讲的东西,也会很努力去想老师想给我传达什么信息。很快我掌握了一种思考的技巧:我完全可以不听别人讲,就看书本写的,竟然可以在两三个星期内掌握一门功课。

后来接触到Internet的时候,我才知道这种技巧对我是多么重要。我从1997年开始搞互联网,那时没有几个人能教你互联网是什么,关于互联网的书也非常少,要请别人吃饭才能借到,而且看书的时候要不停做笔记。所以那时候我每天去网上输入各种各样的关键字查找,然后把这些信息打印出来,放在脑袋里去组合,去搅拌。

大学的学习过程对我后来创业影响非常大。我可以坦诚地说,我在大学学到的知识在我后来的工作中基本从来没有用到过,但我在大学四年学到了思考的能力和学习的能力。我现在看书很快,一般都从后面往前看,看关键字,不懂就到前面去看这个关键字的描述。

大学毕业后我被分配到宁波电信局,在那里度过了将近两年时光,我不喜欢电信局的环境,论资排辈很严重,年轻人没有什么机会,每天做的工作重复又很枯燥,没有一点创新性、开拓性。1995年,我一个人离开宁波去了广州。

没人教你创业

到广州后,我在一个美国的数据库公司找了份编程的工作。工作之余,我开始寻思创业的问题。当时没有人可以教我怎么创业,也没有一本书教你怎么当个老板。尽管我在大学毕业的时候就一直想开一个公司,但人生太难了,要做一件事情碰到太多的挑战,这是当时的客观情况。不过,我还是决定尝试一下,我把我毕业以后写软件赚的50万元拿去创办了网易。

创业之初,有点辛苦。我们在一个只有8平方米的很小的房间工作,没空调,夏天很热。但想起大学四年,每年两次往返宁波和成都,都坐72个小时的火车硬座,又脏又挤,都熬过来了,创业时遇到点困难算什么?

成立网易后,先是帮人家写软件以求生存,后来我和同事商量,做互联网一定要找到一个好的商业模式。我们就用我们9个G的电脑硬盘,推出了20M的免费个人主页业务。

没想到有2万多人,包括国外的人,来申请我们的免费个人主页。结果,我们在CNNIC的年度最佳网站排名,一下子排到了第一名。

然后,华尔街的投资人就在我们门口排队了,香港过来的投资银行的人,也抢着要给我们钱。从1999年年初到2000年6月30日在美国上市,18个月时间我们一共融资了1.15亿美元。我作为公司的领导,不知道那么多钱怎么用,感到很困惑。千万不要以为我是抱着一个伟大的理想去创办一个伟大的公司,我从来没有远大的理想,也没有想要成为一个很有钱的人。创办网易时我只是想做一个小老板,就想有个房子有辆汽车,不用准时上班,可以睡懒觉,有钱可以出去旅游。

2000年以后,网易面临一个非常大的挑战,除了经济衰退、网络广告大滑坡,公司内部也出现严重的问题。

我那时很苦闷,但我苦闷的时候不是每天闷在办公室里,而是亲自跑下去做市场调查。调查了好多行业,调查人家怎么赢利,后来发现了短信业务,利用自己巨大的用户资源和移动的接入平台,我们从阴影中走了出来。

后来我自己也在思考,为什么我的创业能成功,我想有一点可以肯定——你一定要做你喜欢做的事情,不要勉强自己去干一件自己不喜欢的事情。当你喜欢做一件事情的时候,你一定很愿意把它做好,一定会钻进去,成为一个领域的专家。我从大学到现在,根本没有离开过计算机相关专业领域,一个像我这样专注于一个行业几十年的人,自然会成为一个专家。所以喜欢一件事的时候,一定要深入下去,不要浅尝辄止。

回首自己走过的路,不管是学习还是创业,都没有人教,但是我很感谢大学时代培养起来的思考的方法与学习能力。

在中国创业,你觉得最需要有的素质是什么?

第一,要了解自己的兴趣。

第二,要了解自己的处境;

第三,要了解自己的优势劣势。

了解自己的兴趣是和第二点分不开的,有时候处境决定自己过什么样的生活,做什么工作,首先要知道自己想要什么,这点很重要。大学刚毕业的时候,不是想做什么就能做什么,是由处境决定的。所以要对自己的处境做一个冷静的分析。一个阶段只能实现一个方向嘛。另外,当你知道自己的优势和劣势,这样才能放大优势缩小劣势。还有就是很强的执行力。不要太长时间专注在一件事上。很多时候实践中的学习是最重要的。唯有实践中碰到的事才是真正学习到本领的时候。

徐静蕾的话,转载而来!

Google Gravity JS代码

体验:http://mrdoob.com/projects/chromeexperiments/google_gravity/

  1. var canvas;
  2. var delta = [0,0];
  3. var stage = [window.screenX,window.screenY,window.innerWidth,window.innerHeight];
  4. getBrowserDimensions();
  5. var isRunning = false;
  6. var isMouseDown = false;
  7. var worldAABB;
  8. var world;
  9. var iterations = 1;
  10. var timeStep = 1/25; 
  11. var walls = new Array();
  12. var wall_thickness = 200;
  13. var wallsSetted = false;
  14. var mouseJoint;
  15. var mouseX = 0;
  16. var mouseY = 0;
  17. var mouseOnClick = new Array();
  18. var timer = 0;
  19. var elements = new Array();
  20. var bodies = new Array();
  21. var properties = new Array();
  22. var gWebSearch;
  23. var imFeelingLuckyMode = false;
  24. var resultBodies = new Array();
  25. var orientation = { x: 0, y: 1 };
  26. init();
  27. if (location.search != "")
  28. {
  29.         var params = location.search.substr(1).split("&")
  30.         for (var i = 0; i < params.length; i++)
  31.         {
  32.                 var param = params[i].split("=");
  33.                 if (param[0] == "q")
  34.                 {
  35.                         document.getElementById(‘q’).value = param[1];
  36.                         run();
  37.                         break;
  38.                 }
  39.         }
  40. }
  41. // GOOGLE API
  42. function onLoad()
  43. {
  44.         gWebSearch = new GwebSearch();
  45.         gWebSearch.setResultSetSize(GSearch.SMALL_RESULTSET);
  46.         gWebSearch.setSearchCompleteCallback(null, onWebSearch);
  47.         if (document.getElementById(‘q’).value != ”)
  48.                 search();
  49. }
  50. function onWebSearch()
  51. {
  52.         if(imFeelingLuckyMode)
  53.         {
  54.                 location.href = gWebSearch.results[0].unescapedUrl;
  55.                 return;
  56.         }
  57.         
  58.         for (var i = 0; i < gWebSearch.results.length; i++)
  59.                 addResult(gWebSearch.results[i]);
  60. }
  61. //
  62. function init()
  63. {
  64.         canvas = document.getElementById(‘canvas’);
  65.         
  66.         document.onmousedown = onDocumentMouseDown;
  67.         document.onmouseup = onDocumentMouseUp;
  68.         document.onmousemove = onDocumentMouseMove;
  69.         document.ondblclick = onDocumentDoubleClick;
  70.         
  71.         document.onkeypress = onDocumentKeyPress;
  72.         document.addEventListener(‘touchstart’, onDocumentTouchStart, false);
  73.         document.addEventListener(‘touchmove’, onDocumentTouchMove, false);
  74.         document.addEventListener(‘touchend’, onDocumentTouchEnd, false);
  75.         window.addEventListener( ‘deviceorientation’, onWindowDeviceOrientation, false );
  76.         // init box2d
  77.         
  78.         worldAABB = new b2AABB();
  79.         worldAABB.minVertex.Set(-200, -200);
  80.         worldAABB.maxVertex.Set( screen.width + 200, screen.height + 200);
  81.         world = new b2World(worldAABB, new b2Vec2(0, 0), true);
  82.         
  83.         // walls        
  84.         setWalls();
  85.         // Get box2d elements
  86.         
  87.         elements = getElementsByClass("box2d");
  88.                 
  89.         for (i = 0; i < elements.length; i++) {
  90.                 var element = elements[i];
  91.                 properties[i] = findPos(element);
  92.                 properties[i][2] = element.offsetWidth;
  93.                 properties[i][3] = element.offsetHeight;
  94.         }
  95.         
  96.         for (i = 0; i < elements.length; i++) {
  97.                 var element = elements[i];
  98.                 element.style.position = ‘absolute’;
  99.                 element.style.left = properties[i][0] + ‘px’;
  100.                 element.style.top = properties[i][1] + ‘px’;
  101.                 // element.style.backgroundColor = ‘#ffff00’;
  102.                 element.onmousedown = onElementMouseDown;
  103.                 element.onmouseup = onElementMouseUp;
  104.                 element.onclick = onElementClick;
  105.                 
  106.                 bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false);                
  107.         }
  108. }
  109. function run() {
  110.         isRunning = true;
  111.         setInterval(loop, 25);        
  112. }
  113. //
  114. function onDocumentMouseDown() {
  115.         isMouseDown = true;
  116.         return false;
  117. }
  118. function onDocumentMouseUp() {
  119.         isMouseDown = false;
  120.         return false;
  121. }
  122. function onDocumentMouseMove() {
  123.         if (!isRunning)
  124.                 run();
  125.         mouseX = window.event.clientX;
  126.         mouseY = window.event.clientY;
  127. }
  128. function onDocumentDoubleClick() {
  129.         reset();
  130. }
  131. function onDocumentKeyPress(event) {
  132.         if (event.charCode == 13)
  133.                 search();
  134. }
  135. function onDocumentTouchStart( event ) {
  136.         if(event.touches.length == 1) {
  137.                 event.preventDefault();
  138.                 if (!isRunning)
  139.                         run();
  140.                 // Faking double click for touch devices
  141.                 var now = new Date().getTime();
  142.                 if (now – timeOfLastTouch  < 250) {
  143.                         reset();
  144.                         return;
  145.                 }
  146.                 timeOfLastTouch = now;
  147.                 mouseX = event.touches[0].pageX;
  148.                 mouseY = event.touches[0].pageY;
  149.                 isMouseDown = true;
  150.         }
  151. }
  152. function onDocumentTouchMove( event ) {
  153.         if(event.touches.length == 1) {
  154.                 event.preventDefault();
  155.                 mouseX = event.touches[0].pageX;
  156.                 mouseY = event.touches[0].pageY;
  157.         }
  158. }
  159. function onDocumentTouchEnd( event ) {
  160.         if(event.touches.length == 0) {
  161.                 event.preventDefault();
  162.                 isMouseDown = false;
  163.         }
  164. }
  165. function onWindowDeviceOrientation( event ) {
  166.         if ( event.beta ) {
  167.                 orientation.x = Math.sin( event.gamma * Math.PI / 180 );
  168.                 orientation.y = Math.sin( ( Math.PI / 4 ) + event.beta * Math.PI / 180 );
  169.         }
  170. }
  171. //
  172. function onElementMouseDown() {
  173.         mouseOnClick[0] = window.event.clientX;
  174.         mouseOnClick[1] = window.event.clientY;        
  175.         return false;
  176. }
  177. function onElementMouseUp() {
  178.         return false;
  179. }
  180. function onElementClick() {
  181.         var range = 5;
  182.         
  183.         if (mouseOnClick[0] > window.event.clientX + range || mouseOnClick[0] < window.event.clientX – range && mouseOnClick[1] > window.event.clientY + range || mouseOnClick[1] < window.event.clientY – range)
  184.                 return false;
  185.         
  186.         if (this == document.getElementById(‘btnG’)) search();
  187.         if (this == document.getElementById(‘btnI’)) imFeelingLucky();
  188.         if (this == document.getElementById(‘q’)) document.f.q.focus();
  189. }
  190. // API STUFF
  191. function search() {
  192.         if (!isRunning)
  193.                 run();
  194.         
  195.         onDocumentDoubleClick(); // clean
  196.         gWebSearch.execute(document.getElementById(‘q’).value);
  197.         return false;
  198. }
  199. function imFeelingLucky() {
  200.         imFeelingLuckyMode = true;
  201.         gWebSearch.execute(document.getElementById(‘q’).value);
  202.         return false;        
  203. }
  204. function addResult(data) {
  205.         var element = document.createElement(‘div’);
  206.         element.innerHTML = ‘<div><h3 class=r><a href="’ + data.unescapedUrl + ‘" class=l onmousedown="return clk(this.href,\’\’,\’\’,\’res\’,\’1\’,\’&amp;sig2=3Ti89FTuSYfE6a-5k1jjKQ\’)">’ + data.title + ‘</a></h3><span style=display:inline-block><button class=w10 title="Promote"></button><button class=w20 title="Remove"></button></span><div class="s">’ + data.content + ‘<br><cite>’ + data.visibleUrl + ‘</cite></div>’;
  207.         
  208.         canvas.appendChild(element);
  209.         properties.push([Math.random() * (window.innerWidth / 2),-200,600,element.offsetHeight]);
  210.         
  211.         var i = properties.length – 1;
  212.         element.style.position = ‘absolute’;
  213.         element.style.left = 0 + ‘px’;
  214.         element.style.top = -100 + ‘px’;
  215.         element.style.backgroundColor = ‘#ffffff’;
  216.         element.onmousedown = onElementMouseDown;
  217.         element.onmouseup = onElementMouseUp;
  218.         element.onclick = onElementClick;
  219.         elements[i] = element;
  220.         resultBodies.push( bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false, element) );
  221.         
  222. }
  223. function reset() {
  224.         for (i = 0; i < resultBodies.length; i++) {
  225.                 var body = resultBodies[i]
  226.                 canvas.removeChild( body.GetUserData().element );
  227.                 world.DestroyBody(body);
  228.                 body = null;
  229.         }
  230.         
  231.         resultBodies = new Array();
  232. }
  233. //
  234. function loop() {
  235.         if (getBrowserDimensions())
  236.                 setWalls();
  237.         delta[0] += (0 – delta[0]) * .5;
  238.         delta[1] += (0 – delta[1]) * .5;
  239.         
  240.         world.m_gravity.x = orientation.x * 350 + delta[0];
  241.         world.m_gravity.y = orientation.y * 350 + delta[1];
  242.         mouseDrag();
  243.         world.Step(timeStep, iterations);        
  244.         
  245.         for (i = 0; i < elements.length; i++) {
  246.                 var body = bodies[i];
  247.                 var element = elements[i];
  248.                 
  249.                 element.style.left = (body.m_position0.x – (properties[i][2] >> 1)) + ‘px’;
  250.                 element.style.top = (body.m_position0.y – (properties[i][3] >> 1)) + ‘px’;
  251.                 var rotationStyle = ‘rotate(‘ + (body.m_rotation0 * 57.2957795) + ‘deg)’;
  252.                 element.style.WebkitTransform = rotationStyle;
  253.                 element.style.MozTransform = rotationStyle;
  254.                 element.style.OTransform = rotationStyle;
  255.         }
  256. }
  257. // .. BOX2D UTILS
  258. function createBox(world, x, y, width, height, fixed, element) {
  259.         if (typeof(fixed) == ‘undefined’)
  260.                 fixed = true;
  261.         var boxSd = new b2BoxDef();
  262.         if (!fixed)
  263.                 boxSd.density = 1.0;
  264.         boxSd.extents.Set(width, height);
  265.         var boxBd = new b2BodyDef();
  266.         boxBd.AddShape(boxSd);
  267.         boxBd.position.Set(x,y);
  268.         boxBd.userData = {element: element};
  269.         return world.CreateBody(boxBd)
  270. }
  271. function mouseDrag() {
  272.         // mouse press
  273.         if (isMouseDown && !mouseJoint) {
  274.                 var body = getBodyAtMouse();
  275.                 
  276.                 if (body) {
  277.                         var md = new b2MouseJointDef();
  278.                         md.body1 = world.m_groundBody;
  279.                         md.body2 = body;
  280.                         md.target.Set(mouseX, mouseY);
  281.                         md.maxForce = 30000.0 * body.m_mass;
  282.                         md.timeStep = timeStep;
  283.                         mouseJoint = world.CreateJoint(md);
  284.                         body.WakeUp();
  285.                 }
  286.         }
  287.         
  288.         // mouse release
  289.         if (!isMouseDown) {
  290.                 if (mouseJoint) {
  291.                         world.DestroyJoint(mouseJoint);
  292.                         mouseJoint = null;
  293.                 }
  294.         }
  295.         
  296.         // mouse move
  297.         if (mouseJoint) {
  298.                 var p2 = new b2Vec2(mouseX, mouseY);
  299.                 mouseJoint.SetTarget(p2);
  300.         }
  301. }
  302. function getBodyAtMouse() {
  303.         // Make a small box.
  304.         var mousePVec = new b2Vec2();
  305.         mousePVec.Set(mouseX, mouseY);
  306.         
  307.         var aabb = new b2AABB();
  308.         aabb.minVertex.Set(mouseX – 1, mouseY – 1);
  309.         aabb.maxVertex.Set(mouseX + 1, mouseY + 1);
  310.         // Query the world for overlapping shapes.
  311.         var k_maxCount = 10;
  312.         var shapes = new Array();
  313.         var count = world.Query(aabb, shapes, k_maxCount);
  314.         var body = null;
  315.         
  316.         for (var i = 0; i < count; ++i) {
  317.                 if (shapes[i].m_body.IsStatic() == false) {
  318.                         if ( shapes[i].TestPoint(mousePVec) ) {
  319.                                 body = shapes[i].m_body;
  320.                                 break;
  321.                         }
  322.                 }
  323.         }
  324.         return body;
  325. }
  326. function setWalls() {
  327.         if (wallsSetted) {
  328.                 world.DestroyBody(walls[0]);
  329.                 world.DestroyBody(walls[1]);
  330.                 world.DestroyBody(walls[2]);
  331.                 world.DestroyBody(walls[3]);
  332.                 
  333.                 walls[0] = null; 
  334.                 walls[1] = null;
  335.                 walls[2] = null;
  336.                 walls[3] = null;
  337.         }
  338.         
  339.         walls[0] = createBox(world, stage[2] / 2, – wall_thickness, stage[2], wall_thickness);
  340.         walls[1] = createBox(world, stage[2] / 2, stage[3] + wall_thickness, stage[2], wall_thickness);
  341.         walls[2] = createBox(world, – wall_thickness, stage[3] / 2, wall_thickness, stage[3]);
  342.         walls[3] = createBox(world, stage[2] + wall_thickness, stage[3] / 2, wall_thickness, stage[3]);        
  343.         
  344.         wallsSetted = true;
  345. }
  346. // .. UTILS
  347. function getElementsByClass( searchClass ) {
  348.         var classElements = new Array();
  349.         var els = document.getElementsByTagName(‘*’);
  350.         var elsLen = els.length
  351.         for (i = 0, j = 0; i < elsLen; i++) {
  352.                 var classes = els[i].className.split(‘ ‘);
  353.                 for (k = 0; k < classes.length; k++)
  354.                         if ( classes[k] == searchClass )
  355.                                 classElements[j++] = els[i];
  356.         }
  357.         return classElements;
  358. }
  359. function findPos(obj) {
  360.         var curleft = curtop = 0;
  361.         if (obj.offsetParent) {
  362.                 do {
  363.                         curleft += obj.offsetLeft;
  364.                         curtop += obj.offsetTop;
  365.                 } while (obj = obj.offsetParent);
  366.         }
  367.         return [curleft,curtop];
  368. }
  369. function getBrowserDimensions() {
  370.         var changed = false;
  371.                 
  372.         if (stage[0] != window.screenX) {
  373.                 delta[0] = (window.screenX – stage[0]) * 50;
  374.                 stage[0] = window.screenX;
  375.                 changed = true;
  376.         }
  377.         
  378.         if (stage[1] != window.screenY) {
  379.                 delta[1] = (window.screenY – stage[1]) * 50;
  380.                 stage[1] = window.screenY;
  381.                 changed = true;
  382.         }
  383.         
  384.         if (stage[2] != window.innerWidth) {
  385.                 stage[2] = window.innerWidth;
  386.                 changed = true;
  387.         }
  388.         
  389.         if (stage[3] != window.innerHeight) {
  390.                 stage[3] = window.innerHeight;
  391.                 changed = true;
  392.         }
  393.         
  394.         return changed;
  395. }

复制代码 直接地址:
http://mrdoob.com/projects/chrom … _gravity/js/Main.js

奥斯卡经典电影

一、感动全球的经典爱情电影
1 《罗密欧与朱丽叶》(140分钟)
2 《费城故事》(112分钟)
3 《一夜风流》(105分钟)
4 《魂断蓝桥》(100分钟)
5 《卡门》(105分钟)
6 《与我同行》(126分钟)
7 《简爱》(96分钟)
8 《茶花女》(108分钟)
9 《忠魂鹊血离恨天》(86分钟)
10 《夏夜情挑》(68分钟)
11 《美人如玉剑如虹》(114分钟)
12 《罗马假日》(118分钟)
13 《傲慢与偏见》(117分钟)
14 《相逢圣路易》(114分钟)
15 《卡萨布兰卡》(北非谍影,103分钟)
16 《侠骨柔情》(102分钟)
17 《卖花女》(89分钟)
18 《街角的商店》(99分钟)
19 《一曲难忘》(112分钟)
10 《金石盟》(11分钟)
21 《乱世佳人》(102分钟)
22 《国王与我》(133分钟)
23 《罗马之恋》(102分钟)
24 《蚂蚁雄兵》(95分钟)
25 《剑侠唐璜》(110分钟)
26 《马蒂》(88分钟)
27 《鸳梦重温》(86分钟)
28 《卿何薄命》(126分钟)
29 《相见恨晚》(104分钟)
30 《大江东去》(90分钟)
31 《愿嫁金龟婿》(95分钟)
32 《绅士喜爱金发女郎》(95分钟)
33 《爱巢》(84分钟)
二、希区柯克悬疑惊悚电影
34 《美人计》(103分钟)
35 《爱德华大夫》(117分钟)
36 《知情太多的人》(76分钟)
37 《破坏》(75分钟)
38 《深闺疑云》(98分钟)
39 《后窗》(112分钟)
40 《夺魂索》(80分钟)
41 《间谍末日》(86分钟)
42 《迷魂记》(129分钟)
43 《鸟》(119分钟)
44 《擒凶记》(119分钟)
45 《蝴蝶梦》(130分钟)
46 《辣手摧花》(108分钟)
47 《惊魂记》(147分钟)
48 《电话谋杀案》(104分钟)
49 《救生艇》(96分钟)
50 《忏情记》(94分钟)
51 《面子游戏》(骗局,78分钟)
52 《国防大机密》(三十九级台阶,82分钟)
53 《奇怪的富翁》(82分钟)
54 《牙买加旅店》(90分钟)
55 《天真与无知》(82分钟)
56 《海外特派员》(120分钟)
57 《伸冤记》(105分钟)
58 《欲海惊魂》(82分钟)
三、奥斯卡经典名著电影
59 《战地钟声》(上下164分钟)
60 《咆哮山庄》(103分钟)
61 《小妇人》(115分钟)
62 《巨人》(上、下197分钟)
63 《环游世界八十天》(163分钟)
64 《金银岛》(94分钟)
65 《老人与海》(84分钟)
66 《鲁宾逊漂流记》(89分钟)
67 《失落的地平线》(131分钟)
68 《贝多芬传》(115分钟)
69 《左拉传》(129分钟)
70 《翡翠谷》(119分钟)
71 《孤星泪》(118分钟)
72 《怒火之花》(129分钟)
73 《大地》(137分钟)
74 战争与和平(207分钟)
75 《汤姆历险记》(90分钟)
76 《雾都孤儿》(115分钟)
四、奥斯卡经典歌舞电影
77 《红磨坊》(118分钟)
78 《失去的周末》(100分钟)
79 《百老汇之歌》(100分钟)
80 《歌剧魅影》(92分钟)
81 《小夜曲》(124分钟)
82 《绿野仙踪》(101分钟)
83 《风流寡妇》
84 《歌舞大王齐格飞》(上、下、175分钟)
85 《苏利文的旅行》(90分钟)
86 《葛伦米勒传》(112分钟)
87 《戏王之王》(152分钟)
88 《英俊少年》(91分钟)
89 《黄金时代》(上、下、169分钟)
五、奥斯卡经典传奇电影
90 《埃及艳后》(上、下,246分钟)
91 《亚历山大大帝》(135分钟)
92 《出埃及记》(上、下207分钟)
93 《巴格达大盗》(月宫宝盒,105分钟)
94 《阿里巴巴和四十大盗》(85分钟)
95 《罗马帝国沦亡录》(179分钟)
96 《所罗门王宝藏》(102分钟)
97 《亨利五世》(136分钟)
98 《侠盗罗宾汉》(99分钟)
99 《壮志千秋》(121分钟)
100 《王子复仇记》(153分钟)
101 《宾汉》(上、下,222分钟)
102 《万世流芳》(195分钟)
103 《十诫》(上、下、219分钟)
104 《天方夜谭》(85分钟)
105 《乱世忠魂》(117分钟)
106 《暴君焚城录》(60分钟)
107 《亨利八世》(上、下,93分钟)
六、奥斯卡经典西部电影
108 《西部开拓史》(157分钟)
109 《红河谷》(132分钟)
110 《碧血金沙》(126分钟)
111 《岸上风云》(107分钟)
112 《荡寇志》(杰西兄弟传奇 105分钟)
113 《枭巢喋血战》(100分钟)
114 《驿马车》(95分钟)
七、前苏联经典电影
115 《莫斯科保卫战》(349分钟)
116 《斯大林格勒战役》(79分钟)
117 《安娜,卡列妮娜》(92分钟)
118 《波坦金战舰》(74分钟)
119 《伟大的转折》(72分钟)
120 《列宁在1918》(105分钟)
121 《列宁在十月》(106分钟)
122 《山地大战》(86分钟)
123 《保卫寨里潭》(101分钟)
八、奥斯卡经典战争电影
124 《叛舰喋血记》(174分钟)
125 《巴坦战役》(94分钟)
126 《撒哈拉沙漠》(97分钟)
127 《潜艇迷航大作战》(134分钟)
128 《摩洛哥》(87分钟)
129 《气壮山河》(134分钟)
130 《菲律宾浴血战》(134分钟)
131 《忠勇之家》(133分钟)
132 《傲世军魂》(108分钟)
133 《飞虎群英》(104分钟)
134 《西线无战事》(131分钟)
135 《铁翼雄风》(138分钟)
136 《太平洋航空作战》(102分钟)
137 《英伦浩劫》(89分钟)
138 《要塞风云》(125分钟)
139 《将军号》(75分钟)
140 《太平洋战争》(92分钟)
141 《红色勇敢勋章》(98分钟)
142 《马耳他攻防战》(99分钟)
143 《大幻影》(114分钟)
144 《紧急下潜》(106分钟)
145 《战地军魂》(120分钟)
146 《老莱哈台从军记》(76分钟)
九、奥斯卡世纪经典电影
147 《鹿苑长春》(128分钟)
148 《霸王妖姬》(127分钟)
149 《浮生若梦》(126分钟)
150 《玉女神驹》
151 《天伦梦觉》(114分钟)
152 《罗兰秘记》(87分钟)
153 《隐形人》(71分钟)
154 《真假公主》(105分钟)
155 《当代奸雄》(109分钟)
156 《煤气灯下》(113分钟)
157 《剃刀边缘》(72分钟)
158 《公民凯恩》(117分钟)
159 《搜索者》(119分钟)
160 《慧星美人》(138分钟)
161 《养子不教谁之过》(111分钟)
162 《大馆店》(112分钟)
163 《双重保险》(107分钟)
164 《化身博士》(84分钟)
165 《随心所欲》(96分钟)
166 《君子协定》(118分钟)
167 《群众》(103分钟)
168 《大金刚》(96分钟)
169 《海盗》(115分钟)
170 《梵谷传》(121分钟)
171 《钥匙》(136分钟)
172 《游戏规则》(102分钟)
173 《毒龙潭》(108分钟)
174 《肉体与恶魔》(112分钟)
175 《育婴奇谭》(102分钟)
176 《大力士》(97分钟)
177 《居里夫人》(122分钟)
178 《螺旋楼梯》(83分钟)
179 《蛮宫艳侠》(94分钟)
180 《灵犬莱西》(87分钟)
181 《劫后英雄传》(106分钟)
182 《正午》(84分钟)
183 《男儿本色》(87分钟)
184 《原野奇侠》(118分钟)
185 《风云人物》(130分钟)
186 《一世之雄》(97分钟)
187 《拿破仑情史》(110分钟)
188 《欲望号街车》(124分钟)
189 《主教之妻》(108分钟)
190 《失踪的女人》(94分钟)
191 《科学怪人的新娘》(74分钟)
192 《狼人》(69分钟)
193 《黑湖妖潭》(79分钟)
194 《M就是凶手》(110分钟)
195 《三剑客》(125分钟)
196 《林肯总统》(92分钟)
197 《伊凡雷帝Ⅰ》(99分钟)
198 《伊凡雷帝Ⅱ》(85分钟)
199 《巴黎圣母院》(109分钟)
200 《禁忌的游戏》(81分钟)

80后一定要记住的10个人生底线

不知道还有多少人怀揣着年少时为自己定下的目标,梦想着30岁,能够无怨无悔?推荐80后一定要牢记的10个人生底线。

   1. 一定要相信30岁很快就会到来,无论你是在魔兽、cs还是蹦迪泡吧,就算装得再嫩,岁月总会在你的心里留下烙印,掩饰永远都不能改变事实,办法只有一个:提前做好准备,即使你现在只有18岁,脸皮还能掐出水来。30岁一过,一样是人老珠黄一根草而已,所以要是不能提前装填自己的心理内涵,等着人见人烦吧。 
   2. 勿以善小而不为,勿以恶小而为之。不管你对生活已经有了多深的认识,在许多方面最好听听父母的建议,甚至最好完全按照他们的吩咐去做,抛开老祖宗遗留下来的传统以外,他们毕竟比我们早活了几十年,对这个残酷社会的认识远远超过我们,哪怕大字认不了几筐。30岁一过,你看任何事和他们当年看你是基本一致的,那时候肠子悔青都已经无济于事。 
   3. 一定要知道自己有几个朋友是能帮助自己的,有几个朋友只是混吃混喝的,还有几个朋友是可有可无的,还有几个朋友是要小心提防的,最好搞清楚他(她)们的家人是干吗的,因为不管是什么样的朋友,你总有用得着的一天。30岁以后你会发现,那些成功人士,身边都会有一个或者一批很大的关系网,而维系它们的几乎都是朋友。 
   4. 30岁以前的未婚男人可以多交几个女朋友,这样你可以学到许多东西。但是关系一定要保持稳定,同一个月的几个周末的晚上,在你身边的最好不要出现不同的女人,不要认为男人的名声就不重要,香蕉要是烂了,和苹果一个德行。等人尽皆知的时候,你会后悔生在这个城市或者国家(女人同上)。 
   5.初恋永远都是最好的。所以不管你的初恋有多么多么的不堪,不管对方有多么多么的青涩,哪怕是鼻涕已经过了黄河,记住一定不要伤害他(她),哪怕最后还是要分手,30岁以后他(她)将是你心中那条唯一清澈见底的溪流。而你的伤害往往会左右了一个人今后的交友取向。 
   6. 第一次亲密接触最好不要看得太重。这是很难做到但必须做到的,这并不是告诉你你可以乱来,原因可以参看第4条,说这句话主要是这个世界诱惑实在太多,而你又实在太年轻,很可能会在第二天醒来的时候发现身边躺着的不是最爱的人,这个醒来的时间可能会延迟很久,假如你不懂得及时看清现实,非要计较自己的第一次给了谁,当第二次来的时候,等待你的将是更大的伤害。这一条你可以理解为把第一次留给最爱你的人(请注意:不是你最爱的人)。 
   7. 30岁以前一定要在家庭和自己条件允许并且有节制的情况下,尽可能地多花点钱,尽可能地多了解点这世上的新鲜事,尽可能地多买点书,尽可能地多吃点各式各样的食物,尽可能地多为自己添置点衣服,说这一点不是告诉你可以穷奢极欲,30岁以后你会发现钱多少都不够,会发现这世界你不懂的东西实在太多太多,你会后悔书读得太少,你会发现对许多食物已经没有胃口,你会发现你已经穿不上很多看上去非常好看的衣服。
   8. 30岁以前这个世上最可能不会背叛你的就是你自己的身体,而30岁以后最可能会背叛你的也是你自己的身体。30岁以前你可以胡吃海喝,可以灯红酒绿,可以坐在电脑前cs一宿不睡把眼珠子熬得通红。30岁以后,你的身体就会用各种疾病告诉你,当年一定是脑子被驴踢了,才会那么折腾自己。 
   9. 一定要学会做饭,一定要学会洗衣服,一定要学会自己照顾自己,一定要学会最起码的生存之道,在这方面父母是最好的老师,他们也会非常乐意地教导你这些,最好清楚男人和女人最基本的卫生和健康之道,最好知道几条生活中的小窍门,最好掌握一个或者几个拿手菜。谁都有独自面对生活的那一天。30岁以后,要是你连个袜子都不会洗,做的菜连猪都能咸死的话,除非比尔·盖茨是你干爹,否则你再有钱也一样会被人鄙视(总有一天)。 
   10.遇到自己爱的人一定要勇敢的去争取,假如他(她)真的值得你去争取,到手了不要把他(她) 揣兜里时间太长,经常拿出来在阳光底下晾一晾,此举不仅能昭告天下名花有主,更可以对你们的爱情进行一番考验,不要把爱情谈得太久,不要等对对方的身体熟悉到屁股上有几个痦子都清楚的地步,在没达到最热烈的时候该结婚就结婚,豆腐都是好豆腐,时间长了一样变质,王致和虽然味道不错,但毕竟不是人人都能接受的,什么单身主义,什么惧怕围城,30岁以后,你会发现哪怕是年少时那个留着清鼻涕蹲在你家楼后面痴痴等你一宿的傻东西向你求婚,你都愿意答应他,你会发现条件会越来越低,有时你的念头会让自己都看不起自己,有时你会痛哭这世界真变态,连个值得爱的人都找不到。酒是陈的香,可是相信我,你绝对成不了法国庄园里的波尔多。 
   人生如一盘棋,执黑执白都无所谓,能一举成名的是极个别的少数,许多人都在半截了了账,每一步都是选择,只不过有些无关痛痒,有些却马虎不得,一着失误,满盘皆输的人比比皆是,等某一天你对身边围着的人说:我这一盘棋终于下完了,而自我感觉没有什么遗憾的时候,那么恭喜你,你赢了。
   30而立,对有些人来说,30岁以前向左,30岁以后向右。30而立,对有些人来说,30岁以前是因,30岁以后是果。

全民忽悠(大家一起来忽悠)

    一朋友在建设银行工作,她亲身经历的一个事:一天中午银行储蓄大厅里没有顾客,我正坐在存取柜台的窗口内发呆,这时一个女顾客走进大厅,来到我的窗口,她递给我一张纸条说是要取钱。我接过纸条一看,上面写着:兹派 xx 同志前往贵银行提取人民币十万元。下面落款是中共中央办公厅。看着这极不规范的手写纸条,我立马肯定这是个骗局,只是觉得这个骗局也太“小儿科”了。我正在犹豫是否要报警,突然发现这位女子的脸上神情恍惚,穿着也很凌乱。我意识到她可能是一个精神病患者,所以,我打消了报警的念头,把她交给了大堂的保安。大堂保安听我介绍完情况,就对那位女子说:你这张条子要提款,得先去街对面的派出所,找所长给你盖个章。那女子听了保安的话,想都没想就奔街对面的派出所去了。

    看到这一幕,我是打心眼里佩服这位保安,心里想:就冲他这聪明劲,没准哪天我就会嫁给他呢。 

    过了午饭时间,大厅里开始忙起来,这时那女子又兴冲冲的走了进来,我和那个保安看了直感到诧异,要知道如今这派出所可是好进不好出啊。我们俩人赶紧问这位女子是怎么回事,那女子高兴的说,值班的警察告诉她,如今为了方便群众,办公手续简化了,你这条子不用派出所盖章就可以取钱。听了这女子的话,我不得不佩服这位警察大哥,谁说现在的警察素质差?你看这位警察大哥手法多纯熟,一个官腔就把这麻烦又给我们忽悠回来了,唉,不服不行。

    这下我和那位大堂保安都没辄了,只好把这位女子交给了大堂的主管,大堂主管弄清楚了事情的来龙去迈后就问这女子:你取钱干啥?那女子说:买好吃的,好穿的。听了她的话大堂主管说:我们这是建设银行,在这取的钱只能用来盖房子,吃的东西是粮食做的,所以,买好吃的钱得去隔壁的农行去取,买衣服的钱要到对面的工商银行去取。听了大堂主管的话,这位女子又兴冲冲的走了。看着她离去的背影,我把我们大堂主管佩服的是五体投地。

    又过了好一会,我们都快把这事给忘了,那女子又回来了。看着她,我和大堂保安还有主管全傻眼了,这真神了!我们问这女子怎么回事,她说农行的人告诉她,只有农民才能在农行取钱,她是城市户口,不能取。后来她又去了工商银行,在哪人家告诉她,这里是公行,你是母的不能取。最后人家还说,就你这贱人,只能去建行取钱。所以,她又回来了。

    就在我们傻眼时行长来了,行长接过纸条看了看对我们说了声"瞎胡闹"。然后转过身对那女的和蔼地说,“同志,不是我们不接待,你是中央派来的我们级别不够,要取还得到央行去 ” 

    偶滴那神!如今这社会,一个神经病就硬是被他们忽悠的跑了几条大街啊!

转载自:逛我吧 http://www.guang58.com/