一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

2013 年 6 月 RedMonk 编程语言排行榜

RedMonk 发布 2013年6月的编程语言排行榜,平时我们很少见这个编程语言的排行榜。 下图是 2013年6月的排行榜图表(点击图片查看大图) 下面是前 20 名的编程语言列表: Java * JavaScript * PHP * Python * Ruby * C# * C++ * C * Objective-C * Shell * Perl * Scala Assembly Haskell ASP R CoffeeScript Groovy Matlab Visual Basic (* 表示一级编程语言) 更多关于 RedMonk 编程语言排行榜的介绍请看这里。 RedMonk 编程语言排行榜数据来自 Github 和 Stackoverflow 上对编程语言的热门程度进行了比较。其中 Github 的排名是基于 Github 自己的语言统计,而 Stackoverflow 则是基于标签的关联。 转自:http://www.oschina.net/news/42738/redmonk-language-rankings-6-13

龙生   30 Jul 2013
View Details

提升你开发技能的 8 个提示

许多前端工程师,他们拥有客户所寻找的创造能力和技术能力,但是他们没有机会向客户展示他们的能力。这种,客户直接找到他们所需求的前端工程师的情况却很少发生。 让你的能力出名的方法,有一个很好的方法,建立起声誉,并且收集一个对你的特殊技能感兴趣的客户的名单。这不仅仅对一个自由作家是一个好办法,这也能使你脱离仅仅对一个特殊职位的竞争。作为一个开发者,你或许不知道如何开始营销自己,遵循这些技巧,你可以有效的表现出你的能力去赢得客户的注意。 1、找准定位 有时候我们喜欢什么技术都学一点,似乎这样能让自己无所不能,但在实际工作中我们让自己成为某一方面的专家会更好一些(毕竟你自己不能干完所有的事)。集中你的精力在某一方面,例如电子商务,博客,或者移动应用设计,然后坚持学习与之相关的东西,并且实际的来做一些东西,这样你在不知不觉之中就会成为这方面的专家,同时可以积累一些相关经验,甚至寻找到潜在的客户。你在这个领域的专家身份也会提升你的需求,工作流程的领先,可以让您选择更好的项目。 2、分享经验 提升自己专业能力的另一个办法就是写一些文章或关于此领域的一些案例分析。开始的时候可以将文章贴在博客或网站上,然后可以考虑交由SmashingMagazine 或 e-book publishing networks之类的网站来传播。或者像Addy Osmani does那样以html电子书的形式在网站上发布。这样可以提升你在此领域的专家声望。在社区里提供一些有用资源引起注意之后,可能会受到一些会议发言的邀请,与其他社区成员进行交流或类似顾问的工作。 3. 加入在线社区 你可以通过加入像Stackoverflow和Quora等社区赢得自己的声望。它不仅仅可以让你和其它开发者相互联系,而且还可公众展示自己解决问题的能力。而且通过像Github等开源软件平台,你可以发布自己的项目以及可以邀请社区很多其它开发者参与。当与他人交流你的专业意见和建立自己的网络时,通过这些社区有了强大的基础这是无价的呀。[@Lesus 注:当然语言障碍为题,在中国,也有这样的综合性的平台,如oschina] 4. 创建一个小型网站 单个页面的网站是最好的平台来展示你的技能。特别是对于面向非盈利的目的的设计,而且它具有创造性,完美的设计以及包含有趣的内容。这些有些和别人分享的网站,而且它是重要的方式来获得免费的快速的曝光。不用怕,疯狂起来吧,像视差卷动,非主流网格以及滑动特效等特性来充分展示你的能力。另一方面,同时它对展示了你技能的广度是很重要,像Ipod visualization 或者this one只有几个简单页面可以走得更远。这是重要方式让你的潜在用户(或者你的面试官)别小瞧了,而且能够和你创建的东西更好的交谈。 对SimpliSafe的家安全指南,它充满了创造性,高质量的内容,它是很好的你可以和人们就谈的项目的榜样。这个网通过熟练的比较这个城堡保卫系统和虚拟的视觉差滚动的增强引导用户保卫家。 Layered Defense 5. 开发在线工具 你是否想过有那么一个为特定的目的工具来帮助你的工作,考虑一下自己做一个。赞助者为这样一个事实感到惊奇:其它开发者使用的是你开发的工具或应用。有时那些最简单的想法是最有帮助的,所以简化你的想法让它们看起来十分容易。 CodePen 就是这样的一个对前端开发者有极大的帮助的在线工具的榜样。你创建的工具可以从这个在浏览器代码编辑器上获得灵感。 CodePen 6. 开发免费的资源或者插件 另外一个有效方向就是使你的个人项目适合开发者从网页上免费可下载的资源。考虑一下能够从使用者那里反馈它们的性能,那么你可以专注于下面的开发和提升你的项目。你甚至可以把它们提交给像Design Instruct这样的站点来获得更多的发布曝光。 这个UI设计者设计了一个素描和线框的工具集来为他的读者提供一个方便有用的界面和线框的元素。很容易地在他的站点上访问到,而且他也提供了很多种下载格式和一个用户反馈机会。 Wireframing Kit 7. 使用社交网络 社交网络可以说是最高效的免费广告方式。 因为社交用户和他们的网络口碑的助燃作用,你的名字和工作很容易被传播,这就是为什么这是一个值得你花费时间的营销策略。 您可以使用像Facebook、Twitter和Pinterest这样的网站来贡献高质量的帖子给公众,并将它们链接回你的博客,其内容应该缩窄范围来进一步适合您的特定受众定位。互联网用户和客户们可能会期望你在所有这些社交网站上都有账户,但通过在你的博客或网站中的社交媒体链接来访问会更容易,书写作品和所有其他你创建的营销元素。 8. 连接你所有的工作 通过把你所有的工作和媒体网站互相保持链接并使你所有的内容一致,你就把你自己从一名自由职业者(或求职者)改变成一个品牌,这会更容易有市场。你会建立一群跟随的读者和客户,它们可以给别人反馈和建议,这样你的客户基础就会不断增长。你的工作已经发展成向潜在客户进行展示,这会把你放到更进一步超越你的竞争对手的位置,你可以预测你的工作需求会增加。所以不要等待客户来找你,使用这些自信的策略来展示你的技能吧。 转自:http://www.oschina.net/translate/8-tips-for-promoting-your-dev-skills

龙生   26 Jul 2013
View Details

8 款开源的云计算环境管理工具

云计算设计以一种高性价比的方式利用强大的计算机和通信网络功能,云计算系统可以让企业低价使用巨大的计算、存储和网络资源。我们大多数人都以这种 或那种方式使用着云计算,如果你有Gmail、Yahoo! Mail或Hotmail的电邮帐号,那么你就有了云计算前端的使用经验。而在云计算系统的后端,则分布着不同的计算机、服务器和数据存储系统,它们创建 了云计算服务,但用户眼里看不到它们。有大量开源云管理工具可供选择以帮助自动化、监控、备份、跟踪和调整云计算基础设施。 其中包括: Juju 用于诸如横跨多个云的业务部署和流程控制、大型裸机虚拟化部署和基于工作站的服务原型设计等。 Deltacloud 用于将基于云的工作负载在不同的IaaS供应商之间迁移,如Amazon和Rackspace。 jclouds jclouds 是一个开源的Java类库,用来帮你开始云计算应用开发,并可重用已有的Java和Clojure技能。 Libcloud libcloud 是一个访问云计算服务的统一接口,该项目已经成为 Apache 组织的顶级项目,采用 Python 开发。 Ganeti Ganeti是基于Xen虚拟机管理器和其他开源软件的虚拟服务器管理软件工具。 Chef Chef 是一个系统集成框架,为整个架构提供配置管理功能 Puppet Puppet,您可以集中管理每一个重要方面,您的系统使用的是跨平台的规范语言,管理所有的单独的元素通常聚集在不同的文件,如用户, CRON作业,和主机一起显然离散元素,如包装,服务和文件。 Scalr Automation framework and web interface for managing infrastructure 转自:http://www.oschina.net/news/42569/opensource-cloud-manage-tools

龙生   25 Jul 2013
View Details

编码规范是技术上的遮羞布

每个程序员都知道,在一个软件公司里,你需要有一套严谨的编码规范。每个程序员也都知道,为了能按自己的编程习惯制订这套规范,每个程序员都在而抗争。刚进入一个新公司时,每个程序员都会内心里绝望,对那套由某些强势架构师独断指定的编码规范恐惧不已。 扔掉编码规范吧,让程序员自由发挥,你会得到更多的好处。从加强代码统一性上获得的这点胜利根本解决不了问题。编码规范就是技术上的遮羞布。在 nearForm 公司,我从来没有想过要制定一个这样的规范,因为我希望每个人都只需按照自己喜欢的方式编程。 这世界太吵闹了。JavaScript的复兴要为此负全责。尤其有一个“特征”:可有可无的分号。无数的主张,猜想和反对声铺天盖地。停止,去实际写些代码好吗。你知道我在说谁。 本意是好的,各路程序员大仙发布各种JavaScript编码规范和风格指导。你们全错了。请停止这种要去拯救这个世界的行为。 编码规范从何来?过程是这样的:在你开始编码时,你跟本不知道会做出什么。这充满乐趣,这是一场游戏,直到你弄瞎一只眼睛。一旦你被自己垃圾的代码伤了太多次,你开始知道你是个菜鸟。于是你开始走上了通往编程大师的道路,你贪婪的咀嚼《代码大全》, 《程序员修炼之道》,当然,还有 Joel。 之后,事情开始发生了。在通往朝圣的路上,你参透了真经。满腹的技艺让你成为了编程巨星。你的开发效率整整翻了一倍。现在,你要向世界传播。让你有今天成就 的知识也同样能拯救他人。你笼络人心,你传道,你纠缠不休。你训导你的老板要采用最好的实践方法和开发规范。而最不可饶恕的,你竟然开始写博客了。 大多数程序员从来不发声。那些喜欢弄出声响的,都晋升了。你晋升了。你把你绝顶聪明的想法强加给他人。你编写了一套编码规范,你让它成为了法律。 可之后,一切如旧。同样苦干,同样最后期限迫在眉睫,同样bug无数,同样悲惨结局。银弹跟本不存在。 几年后,你不再编码,你成为了管理者。你仍然认定编码规范,条律,制度的至关重要。关键就在于正确的实施。你从来都没有真正的做到过,但你坚持要实现这个目标。不仅如此,你变本加厉。代码量化标准!作为一个管理者,你成了痛苦的化身。 也许事情可能会向另外一个方向发展。也许你重新回去编程,或从未离去。经过一段时间,你发现自己如此无知,所有你的梦想都建立在沙滩上。你放弃了,你放弃了给程序员制订枷锁。这是另一层次的参悟。 至此,你认识到,人不是机器。人需要把智慧发挥到极致。你应该丢掉枷锁,获取最大创造。 可为什么那些最聪明的程序员的做法却完全的相反?为什么他们喜欢控制其它程序员?是什么让他们如此独裁? 首先,你想把你的经验传授给他人。但并非每个人的思维都跟你一样。人的大脑是十分怪异的。 第二,控制别人的感觉良好。但这不可能真正有效的。你不能命令程序员去做什么。猫不是圈养出来的。 第三,你逃避责任。团队中的所有人都这样。我们遵守了规范!项目失败了。没错,可是我们是遵守了规范! 第四,好的意愿;最佳实践;很专业;很技术——诱人的开发过程。你仍在追逐你8岁时想摘到的那颗星星。但是,编程大师如何判断一件事的成败?看结果,这是唯一的标准。 第五,理想主义,你认为你理解整个世界,整个世界要尊崇你的意志。我们人类有些事情非常的在行….但那是在一万次的失败之后,一万次重复的失败。软件工程就是其中之一,不是有了规范就万事大吉的。 而最糟糕的不是这些。万恶之首是,只要你具有上面的任何一点,你最终就会制定出一套编码规范。 编码规范真正的罪恶在于,它们在伤你的心,伤整个团队的心。它们是一种耳语在说你不够优秀。他们不信任你。没有监管,你会搞的一团糟。 一年前我们开创 nearForm 公司,我们最在意的一件事就是要为客户写出最优秀的程序。在早先,我们尝试过所有的开发过程、方法、制度规范。所有都让人讨厌。没有一样真正起到作用。 于是我们开始实施这样的原则:相信我们的程序员是最有智慧的。这起作用了。 我希望所有人都能写出整洁优秀的代码。你自己判断这指的是什么。如果在代码脏乱、变量名不一致的情况下你还能安稳的睡大觉,这你自己决定。但你知道,也许这只是一个100行的用node.js写微型server,无关紧要。这你自己决定。 这你的责任,因为你一名程序员。 [英文原文:Why I Have Given Up on Coding Standards ] 转自: 每个程序员都知道,在一个软件公司里,你需要有一套严谨的编码规范。每个程序员也都知道,为了能按自己的编程习惯制订这套规范,每个程序员都在而抗争。刚进入一个新公司时,每个程序员都会内心里绝望,对那套由某些强势架构师独断指定的编码规范恐惧不已。 扔掉编码规范吧,让程序员自由发挥,你会得到更多的好处。从加强代码统一性上获得的这点胜利根本解决不了问题。编码规范就是技术上的遮羞布。在 nearForm 公司,我从来没有想过要制定一个这样的规范,因为我希望每个人都只需按照自己喜欢的方式编程。 这世界太吵闹了。JavaScript的复兴要为此负全责。尤其有一个“特征”:可有可无的分号。无数的主张,猜想和反对声铺天盖地。停止,去实际写些代码好吗。你知道我在说谁。 本意是好的,各路程序员大仙发布各种JavaScript编码规范和风格指导。你们全错了。请停止这种要去拯救这个世界的行为。 编码规范从何来?过程是这样的:在你开始编码时,你跟本不知道会做出什么。这充满乐趣,这是一场游戏,直到你弄瞎一只眼睛。一旦你被自己垃圾的代码伤了太多次,你开始知道你是个菜鸟。于是你开始走上了通往编程大师的道路,你贪婪的咀嚼《代码大全》, 《程序员修炼之道》,当然,还有 Joel。 之后,事情开始发生了。在通往朝圣的路上,你参透了真经。满腹的技艺让你成为了编程巨星。你的开发效率整整翻了一倍。现在,你要向世界传播。让你有今天成就 的知识也同样能拯救他人。你笼络人心,你传道,你纠缠不休。你训导你的老板要采用最好的实践方法和开发规范。而最不可饶恕的,你竟然开始写博客了。 大多数程序员从来不发声。那些喜欢弄出声响的,都晋升了。你晋升了。你把你绝顶聪明的想法强加给他人。你编写了一套编码规范,你让它成为了法律。 可之后,一切如旧。同样苦干,同样最后期限迫在眉睫,同样bug无数,同样悲惨结局。银弹跟本不存在。 几年后,你不再编码,你成为了管理者。你仍然认定编码规范,条律,制度的至关重要。关键就在于正确的实施。你从来都没有真正的做到过,但你坚持要实现这个目标。不仅如此,你变本加厉。代码量化标准!作为一个管理者,你成了痛苦的化身。 也许事情可能会向另外一个方向发展。也许你重新回去编程,或从未离去。经过一段时间,你发现自己如此无知,所有你的梦想都建立在沙滩上。你放弃了,你放弃了给程序员制订枷锁。这是另一层次的参悟。 至此,你认识到,人不是机器。人需要把智慧发挥到极致。你应该丢掉枷锁,获取最大创造。 可为什么那些最聪明的程序员的做法却完全的相反?为什么他们喜欢控制其它程序员?是什么让他们如此独裁? 首先,你想把你的经验传授给他人。但并非每个人的思维都跟你一样。人的大脑是十分怪异的。 第二,控制别人的感觉良好。但这不可能真正有效的。你不能命令程序员去做什么。猫不是圈养出来的。 第三,你逃避责任。团队中的所有人都这样。我们遵守了规范!项目失败了。没错,可是我们是遵守了规范! 第四,好的意愿;最佳实践;很专业;很技术——诱人的开发过程。你仍在追逐你8岁时想摘到的那颗星星。但是,编程大师如何判断一件事的成败?看结果,这是唯一的标准。 第五,理想主义,你认为你理解整个世界,整个世界要尊崇你的意志。我们人类有些事情非常的在行….但那是在一万次的失败之后,一万次重复的失败。软件工程就是其中之一,不是有了规范就万事大吉的。 而最糟糕的不是这些。万恶之首是,只要你具有上面的任何一点,你最终就会制定出一套编码规范。 编码规范真正的罪恶在于,它们在伤你的心,伤整个团队的心。它们是一种耳语在说你不够优秀。他们不信任你。没有监管,你会搞的一团糟。 一年前我们开创 nearForm 公司,我们最在意的一件事就是要为客户写出最优秀的程序。在早先,我们尝试过所有的开发过程、方法、制度规范。所有都让人讨厌。没有一样真正起到作用。 于是我们开始实施这样的原则:相信我们的程序员是最有智慧的。这起作用了。 我希望所有人都能写出整洁优秀的代码。你自己判断这指的是什么。如果在代码脏乱、变量名不一致的情况下你还能安稳的睡大觉,这你自己决定。但你知道,也许这只是一个100行的用node.js写微型server,无关紧要。这你自己决定。 这你的责任,因为你一名程序员。 [英文原文:Why I Have Given Up on Coding Standards ] 转自:http://www.oschina.net/news/42154/why-i-have-given-up-on-coding-standards

龙生   10 Jul 2013
View Details

安装程序无法复制一个或多个文件。特定错误码是0x4b8

esentutl /p %windir%/security/database/secedit.sdb 故障现象安装IIS的时候一直提示如下错误,IIS无法正常安装。提示:安装程序无法复制一个或多个文件。特定错误码是 0x4b8。按“确定”以继续;或者按“取消”,停止安装并且再试一次。如果继续,组件可能无法正常运行。解决方案(1) 开始 > 运行 > 输入 CMD >再输入以下命令:esentutl /p %windir%/security/database/secedit.sdb,然后再安装一次,就搞定了。修复了安装IIS组件需要的系统数据库。这里的esentutl是一个系统的修复工具。主要用于修复系统的数据库。在Windows系统中,包含了多个数据库,最主要的数据库就是注册表,还包含了很多其他的数据库,他们都以系统数据库文件的形式保存,其后缀名为SDB。ESEnTUtl运行有几种模式。每种模式对SDB文件执行不同的任务。这里是每种模式的语法:Defragmentation  :  ESEnTUtl /d <database name> [options]碎片整理模式        :  ESEnTUtl /d <数据库文件名> [选项]Recovery      :      ESEnTUtl /r [options]恢复模式        :      ESEnTUtl /r [选项]Integrity        :      ESEnTUtl /g <database name> [options]完整性检查模式 :      ESEnTUtl /g <数据库文件名> [选项]Repair         :      ESEnTUtl /p <database name> [options]修复模式       :      ESEnTUtl /p <数据库文件名> [选项]Checksum       […]

龙生   10 Jul 2013
View Details

Visual Studio 2012 Ultimate旗舰版序列号

Visual Studio 2012 Ultimate旗舰版序列号: YKCW6-BPFPF-BT8C9-7DCTH-QXGWC RBCXF-CVBGR-382MK-DFHJ4-C69G8 YQ7PR-QTHDM-HCBCV-9GKGG-TB2TM 点击帮助(help)-注册产品(Register Product)-输入Key就可以了

龙生   09 Jul 2013
View Details

开始3D编程前需注意的十件事

开始3D编程不是一件容易完成的任务。这里有很多新的东西可以发挥作用,从选择语言到选择合适的3d建模软件。当这10个事情完成时,无论你选择何种语言,使用何种建模软件,你都可以认为自己是这方面的半个专家了。 #1:建立自己的图形初始化函数 现在有种类繁多的3d引擎和平台,所以这个任务一般交给它们来完成。我还记得以前的事情,你必须使用windows函数来初始化OpenGL,并管理窗口句柄和资源的加载。了解事情是如何进行内部管理的会让你更深刻理解你现在在干什么,这是非常有用的。 我建议从NEHE的教程开始。在教程的第一章中包含了一个C语言编写的利用Windows API的图形初始化函数。如果这里有很多东西需要你控制,你可以试试C++的相对的函数,或者使用托管语言,像C#、Java或者Python。在网络中有很多例子。 #2:实现自己的相机 您可以从互联网上复制和粘贴摄像头的代码,使用它并没有大的问题, 但它不是自己的相机,直到你从头开始,充分了解一些概念,如向量处理,矩阵变化,角度转换等等。你应该先从一个FPS(第一人称射击)的摄像头开始,它会给你需要的一切并让你为接下来的学习做好准备。 如果你以后想构建自己的游戏,你不能使用它。我建议你阅读这篇文章,以找出最适合您的需求类型的相机。 #3:了解初级的3D概念 当我开始,我就开始听到了很多新词,如抗锯齿,各向异性过滤,阻塞测试,Z-缓冲,alpha测试,着色器语言,凹凸贴图等。如果你是一个玩家,也许你已经在配置游戏的图形设置时看过它们了。请确保你花费一些时间来阅读相关内容,因为这将会给你一个3D编程的概述。 #4:学习所有向量和矩阵的知识 这始终被低估。我强烈建议,为了正确地管理如相机,光线追踪,地形跟踪的东西,你应该知道关于这个的一切。当然,你也需要学会最基础的三角知识。现在我才明白,如果我愿意花几分钟研究这个问题,我的生活本应该很轻松。 #5:编写你自己的3D模型加载器 我建议从使用OBJ文件或STL文件开始,因为他们用一个ASCII格式表示。之后你可以迁移到其他根伟复杂的格式上,比如3DS格式。有了这个,你不仅将了解如何保存3D模型,你还会理解如何绘制三角形,然后你就会明白图形引擎是如何绘制一切的。 #6:成功实现自己的碰撞算法 一个事情是绘制世界,另外一个是管理其他中几何形状。在一个虚拟的3D世界中,这里没有物理定律,所以你必须创建它们。如果你想要一个对象不能穿越墙壁,那么你必须在墙壁中创建一个几何图形并计算所有东西。有几种方法来管理碰撞,我建议从在一个迷宫项目实现两体碰撞开始。试试这个链接,了解更多信息。 #7:实现一个小的粒子引擎 当我发现3D游戏中火焰、烟雾、照明和一些其他令人惊艳的效果是由粒子组成,而那些粒子是由相机面前的贴图组成。你添加更多的粒子,效果看起来更加逼真,但是性能就有所损失了。我的第一个粒子引擎是为火箭的烟雾制作的,而且我这样做的时候还没有不参看粒子引擎教程。后来我意识到了,我已经改造了车轮。通过实现这些东西,你会明白一些诸如粒子发射器、粒子行为等想法。 # 8:了解一个3D建模软件的基本知识 为了修改在你的应用中使用的3D模型,你应该知道基本的操作,比如平移,缩放,旋转,变形,导出为其他格式,并制作简单的模型。如果你不这样做,你在制作第一个游戏时遇到事事依赖别人的情况。我曾用过几个建模软件,我强烈推荐3D MAX或Maya。 #9 :加载和播放动画 我做过的最困难的事情是加载并正确播放动画。我不得不对3D max的XAF文件进行大量的逆向。我不得不学习骨骼层次,矩阵插值等东西。在最后,看到自己的模型自行移动是一件让人相当高兴的事情。我建议从一个机器人动画开始,因为动物模型什么的还需要一种名为蒙皮的技术。 #10 编写2D自定义GUI控件 当我开始使用XNA时,由于XNA没有实现窗体控件,我不得不构建自己的图形用户接口。这也导致了两件事: 第一:我有了构建自定义的GUI控件的能力。 第二:我懂得了一些重要的概念,如事件控制和事件捕捉。 这不是容易的事,我实现的最难的一个控件是listbox,但是一旦做出来了,就可以在很多地方使用了。 结论 在这个过程中你将会遇到很多问题。你不得不花费很多时间来使你的代码可以正常工作,即使你很聪明。但是我可以告诉你的是,从一个程序猿的角度来说,没有什么快乐比的上你看着你的代码能顺利的工作。我仍然不能忘记当我第一次编出OBJ模块加载器时的喜悦。当时,我想要加载个人脸图像,然后数个小时过去了,在凌晨3:50时,突然一个非常诡异的人脸出现在我的屏幕,真是吓死爹了,每当我想起这件事时,就哈哈大笑.. 我确信当你设法完成这10件事后,你可以说你已经了解了3D编程的基础。我写篇文章是因为我花了很多时间来完成它(指走了弯路了),所以我希望每个开始接触3D编程的人,能有一个小小的指南。我的建议是开始做一个小小的游戏,并不断的完善它。我觉得这是一个很好的方式,因为如果只是单纯的去学习而看不到实际的效果的话,积极性不高。一段时间之后,你会觉得游戏对你来说不一样了,因为你会花很多时间来想它们是怎么解决你曾经碰到的技术难点的。以上,我试图使这篇文章结构保持清晰和易懂,如果你喜欢,你可以访问我的 博客来获取更多的这方面的内容。 转自:http://www.oschina.net/translate/ten-things-to-achieve-when-starting-3d-programming

龙生   08 Jul 2013
View Details

Mozilla的编程语言 Rust

Mozilla 目前正在开发一个新的编程语言,名为“Rust”,由web语言的领军人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力开发。 创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。 Rust 最早是在今年7月的Mozilla的社区峰会上公之于众的,当时就有人问以后是否会用Rust重写Firefox,Brenda说希望如此。Rust目前还处于初期的开发阶段,开发团队目前并不想花太多的时间在语法上,不过他们还是提供了一小段代码: iter pairs() -> tup(int,int) { let int i = 0; let int j = 0;  while (i < 10) {    put tup(i, j);    i += 1;    j += i;  } } fn main() {  let int i = 10;  let int j = 0;  for each (tup(int,int) p in pairs()) {      log p._0;      log p._1;      check (p._0 + 10 == i);      i += 1;      j = […]

龙生   05 Jul 2013
View Details

永远不要再犯的 5 个编程错误

当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯。 作为一名程序员,犯错误不可避免,这是你学习编程课程中的一部分。在你的职业生涯中你会犯很多错误 – 有的特别、有的普遍 – 通过这些错误你可以学习如何避免在将来再犯同样的错误。 但是如果你是一个初学者,你犯的错误可能会比其他人更频繁。那么如何才能避免大部分程序员每天都犯的这些普遍的错误呢? 想要避免错误,就要对它有所了解。这也是为什么我要和大家分享一些在我们的程序员生涯中阻碍我们成长的普遍错误。 在开始之前,你可能想知道为什么我知道这些是错误,不是最佳的方法? 有一个简单的回答就是 – 在我的职业生涯中,所有这些情况我都遇到过。有些情况经常遇到,有些只遇到过几次。每次犯错之后,我都后悔莫及。 最坏的情况是我根本你不知道我在做错的东西。一旦我意识到我在做错事,我就开始避免这些失误。至少,我现在写的代码比以前写的要好多了。 现在你们也可以避免这些错误。首先要知道你现在在做的是错误的。我知道大部门程序员都不会做任何错事,因为他们认为那是正确的,所以他们的行为会对程序和程序员的职业成长产生不利影响。 绝大部分的不良编程习惯都源于无知,而没有任何其他原因。 要成为一个好的程序员,我们必须一个一个的去掉这些无知。这也是那些好的编程书籍所尽力展示给我们的。 我们犯这些错误的部分原因在于它们确实完成了工作。并不是我们要做的 – 让我们的程序运行起来,完成我们日常的工作。 但是让什么好用只是你工作的一部分。如果想要让你的应用程序好用,你将不得不定期更新,修复任何新的bug,这些将有可能变得很频繁。这样一来能让你的工作变得比较容易的方法就是遵循好的编程实践。 另外,即使你在小型程序中能够摆脱这些错误,在大型程序中你也可能碰到他们。 如果你仍然犯这些错误,可能你的程序依然正常运行,能够完成需要的任务,但是它会变得易出bug,充满低效率的代码,难于维护。并且,当你很长时间后再来看它的代码的时候,你会发现代码很难理解。 作为程序员,我们的工作不仅仅是让我们的程序工作,而让用户来处理bug。我们的工作是确保用户即使输入错误也不会得到意外的结果。 所以要创建高品质的应用程序,请确保你不会在编程的时候犯下面的这些普遍的错误: 不加理解的拷贝代码 你经常会发现你需要的代码在一些别的程序里面有。整段的拷贝代码并且就这么使用它而不去烦恼于理解每一行代码是很诱人的。 有时候你拷贝的代码可能太大了以至于没有时间去完全理解它。如果你拷贝任何代码都像这样,就会有让你的程序变得脆弱易出bug等风险。 这样可能让工作完成,但是如果这段代码在某种情况下产生了一些意外的行为将会怎么样?如果使你的程序变慢或者有恶意行为将会怎么样?因此需要恰当的理解这些代码,或者需要绝对的确信你拷贝的代码的出处。 如果以后产生了bug,你会发现很难理解这些代码,因为你从来没有写过它。甚至于你会发现很难去找出bug并且修复它,特别是如果拷贝了很多代码在程序的不同地方。 所以当拷贝代码的时候要小心,即使很少的代码。确保你完全理解它了。如果你以前用过一段代码并且可以百分之百的保证它可以工作,那么它是安全可用的。但是如果不是的话,就要当心了。 每次都从头开始 这和我之前说完全相反,但是这确实是初学者容易犯的另外一个错误。 也许你认为每次都从头开始会很好,但是实际上它浪费了太多资源--时间,精力和思维,你可以更好的在其他方面使用它们。 如果你需要的东西已经存在了,那么使用它们。不要反复重复最基础的东西。 你可以使用这些时间让你的应用在其他方面更加优秀。 如果一个API、框架或者游戏引擎让你的任务更加轻松,你没有理由不适用它们。你的目标不是展示你有多么的优秀,也不是证明你可以独立完成任何任务。你的目标是保证你的应用完美工作,并且尽可能少花费一些资源去创造它们。 如果你这样做,你可以用更少的时间去完成同样地工作。时间就是金钱,即使是你为你自己工作,你也应该试着在同样的时间赚更多的钱。 没自己尝试就开始Google 很多次,出于习惯,每次出现新的问题,你都会通过Google来找找解决方案。对于程序来说,这不是个好办法。如果你总是没有自己试一试就通过外部方法来搜索答案,那么你的思维永远都不会受到挑战。 当你的思维停止挑战,你自身的编程技能就会停止增长。把你自己的任何技能都练得很棒,你就可以自己解决问题,这也适用于程序开发。 你是创建一个已经存在的东西,你从来不进行原创。这真是你想要做的吗? 搜寻存在的解决方案看起来很聪明,但是这会蒙蔽你的双眼,你的懒惰会阻止你成为一个好的程序员。如果你真的你想要搜寻一个解决方案,至少,开始的时候你在这个问题上先花一点事件思考一下。 也许你自己不花多少事件就能解决掉它。也许你会有比其他人更好的解决它。也许你的解决方案比其他人的更加精确。 如果你不尝试,你永远都不知道。 忽略警告 这是一个早期我进行程序开发时犯的另一个错误。我不能告诉你当你的程序中出现几百个警号和一次都不出现有什么大的不同-最重要的是忽略掉它就出现新的问题。 警告通常是你做的东西可能不是每次都能正常工作的一个标志。有时,忽略这些警告会造成很大的安全问题。但是真正的问题通常是出现在程序出现几百个警告,或者程序不能正常工作时。 很难确定到底是什么原因造成了那个错误,你必须花更很多的时间来分析每一个警告来找出造成问题发生的根本原因。相反,你可以在警告发生的时候就处理掉它。 通常你仅仅需要使用正确的变量或者正确的函数来处理这些警告。不会花你几小时,只需要几分钟遇到它们就把它们处理掉。 要尽早的处理警告。干净的代码看起来舒服工作起来也会很高。记住- 对待警告和对待错误一样 . 快速修复而不是永久性解决 是的,我对这样做感到愧疚。我不为此而自豪。但通常,我们仅仅是草草的修复一下,很少会去从根本上解决这个问题。 它能正常工作了,问题也处理掉了。但是如果你一不小心,问题又会以不同的方式重新出现。 无论你怎么修复一个问题,都应确保你不会把整个系统破坏掉。修复应该提升整个系统的运行状况,而不是让它更慢或更笨重。 同时,进行一个修复要能永久性的解决这个问题。要长期,不要短期。有时,由于懒惰和无知,我们通常喜欢快速的把问题解决掉,而不想在上面花太多时间。这就是为什么我们的写的代码能正常的工作,但是却不是在所有情况下都能工作。 如果你在工作的时候把它忽略掉,你会在后面花更多的时间。 了解上面这些错误能有助于你避免它们。如果你知道你所做的是错误的,一般来说你就不会去做。 为了把工作干好你应该热爱你所做的。如果因为某些原因你不喜欢编程了那么你几乎不会花额外的功夫来编写好的可维护的程序。 如果你打算写一手好程序那么你就应该 改变你对编程的看法。 你要把编程看成一门艺术而你自己则是一个艺术家。那么你就不会因为懒惰和不小心而犯错。 作家会把一篇未完成的文章发表么?画家会把未完成的画作拿来出售么?歌手会在他的歌中唱没有用的歌词么? 绝不会。 对编程来说也一样。任何情况下,都别编写未经测试的半吊子代码。在你的程序未写完前,不要发布它。别编写不会使用的无用代码。 这都是一些我们犯的一般性错误,因为我们喜欢在工作花更少的时间而去干其他事情。但这是不行的,迟早你都会为确保你的代码不出问题而负责。 越早的练习正确的编程方法,就对你的用户和自己越好。有时成为一个好的程序员意味着你不会犯糟糕程序员同样的错误。 谢谢大家的阅读。如果你知道谁不知道这些编程技巧的,请你把这篇文章发给他们,以便让他们成为好的程序员。 转自:http://www.oschina.net/translate/5-programming-mistakes-you-should-stop

龙生   05 Jul 2013
View Details

windows安装hadoop

在Windows下利用cygwin仿unix环境安装配置Hadoop。 子猴也是刚接触到hadoop,对其的配置第一次按照网上的一些说明配置成功了,但有些东西感到不是很清晰,所以又重新把整个过程跑了一遍并记录下来,也是想对整个过程有个清晰的脉络,不正确之处请指教。 1、  所需软件 1.1、Cygwin(截至到目前最新版本是2.685) 下载地址:http://www.cygwin.com/setup.exe 1.2、JDK 1.6.x 1.3、hadoop-0.20.1 下载地址:http://apache.freelamp.com/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz 2、  安装 2.1、Cygwin安装说明见文章:http://hi.baidu.com/xiaoduo170/blog/item/9a21e38269a89ea46e81196f.html 补充:cygwin的bash是无法复制粘贴的,很不方便,所以可采用putty,下载地址是: http://www.linuxboy.net/linux/rc/puttycyg.zip ,将puttycyg.zip解压后的三个exe文件放到Cygwin安装目录HOME_PATH下bin目录下,然后修改HOME_PATH下的Cygwin.bat文件,建议用记事本打开,然后将bash –login –i注释掉,在前面加rem,也就是rem bash –login –i,或者:: bash –login –i,加入 start putty -cygterm – 即可。 这样一来就可以复制粘贴了,但注意的是默认的根目录是Cygwin的HOME_PATH,如果要切换到其他主目录,但如果你想要进入到其他根目录,但如果你想要进入到其他根目录,需要通过系统根目录,子猴这里的是/cygdrive,比如要进入到e盘,则为/cygdrive/e。 2.2、JDK的安装省略了 2.3、hadoop-0.20.1安装 将hadoop-0.20.1.tar.gz解压,解压后的目录如hadoop-0.20.1,假设是放在E盘: E:\hadoop-0.20.1,修改conf/hadoop-env.sh文件,将export JAVA_HOME的值修改为你机上的jdk安装目录,比如/cygdrive/d/tools/jdk1.6.0_03,/cygdrive是Cygwin安装成功后系统的根目录 3、  安装和配置ssh 3.1、安装 在Cygwin的根目录下分别运行: $ chmod +r /etc/group$ chmod +r /etc/passwd$ chmod +rwx /var$ ssh-host-config*** Info: Generating /etc/ssh_host_key*** Info: Generating /etc/ssh_host_rsa_key*** Info: Generating /etc/ssh_host_dsa_key*** Info: Creating default /etc/ssh_config file*** Info: Creating default /etc/sshd_config file*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.*** Info: However, this requires a non-privileged account […]

龙生   04 Jul 2013
View Details
1 240 241 242 280