金山网络CEO 傅盛 以前我当产品经理的时候,经常因为“逻辑”跟工程师吵得一塌糊涂。 那个时候的工程师们都喜欢树型结构。虽然今天已经销声匿迹了,但他们仍然喜欢把“逻辑”挂在嘴边。他们会在产品上花很多心血,很多功能都舍不得扔掉,却不知道用户能接受的其实只是最简单的点。 我讲个例子。有一天,太太跟我说家里电脑太暗了,我一看是因为出差前我调成了最暗,回来后忘记设置了。遇到这种情况你的第一反应会是什么?我首先想到的 是找设置,于是点到控面板,打开有很多分类,在硬件里没找到,再去显示器设置里面找还是不行。最后谁知道在哪?在个性化里面!我找了三天才找到,那两天忍 着眼要瞎的感觉,屏幕非常暗,文字基本看不清。 当时我就想:微软看着我那么暗地用电脑,为什么不提示我一次呢?一个屏幕亮度设置需要这么复杂吗? 我想说,简单是世界上最了不起的能力了。这个世界经济体系很复杂,马克思写了一千多页《资本论》,里面用了一个最简单的词——“剩余价值”囊括了所有; 市场变化很复杂,包括各种各样的机构,最后亚当斯密用了一句话说明——“看不见的手”;相对论很复杂,最后就是一个公式,虽然我们都不知道什么意思。这些 无一例外地都使用了一种极简的表达,你会发现在这个世界上真正能走下去的东西都是“大道至简”,而不是靠复杂取胜。 到今天,过去那种繁复的计算机思维仍在隐秘地发挥作用,虽未被人们觉察,但它已经成为“让产品变轻”的最大绊脚石。 问题究竟出在哪儿? 大家都知道,一些IT行业巨头如微软和谷歌都是工程师文化。工程师文化的本质特点是什么?就是特别喜欢强调逻辑性。 我记得,以前学校开设类似图书管理和信息分类的专业课,大部分的内容都是关于“逻辑分类”。例如大家要学习windows的分类方式,一定要在开始菜单放程序,我的电脑里放文件,桌面上放快捷方式,全部分好类后,里面还有各种各样的分类。 但是,本质上用户的脑海里没有任何逻辑,用户脑海里有什么?只有用还是不用,常用还是不常用。所以你看苹果的整个逻辑就是这样,没有回收站,没有很深的 目录。从来不会说这一排应该是打电话的,不该放音乐。换作一般工程师肯定抓狂,这不合逻辑啊,怎么能这样呢?程序、文档、视频不是应该归类吗?后来发现苹 果的第一页既有日历,也有短信,还有摄像。用工程师的观点看,整个都是杂乱无章,毫无美感。 当然,如果你受过专业训练,没问题,可以按照逻辑分类,但老百姓没这个概念,他只知道他要用什么,把常用的放在第一页,不常用的就拖过去。需要去分类吗?根本不需要!所以,“逻辑分类”是我们脑海里一个根深蒂固的东西。 后来为了跟身边的同事说明这个问题,我还一直给他们讲百度首页的例子。百度是一个搜索网站,但是搜索栏上面放的是什么?新闻、网页、贴吧、音乐、图片等等。你想进贴吧的时候根本不必使用搜索功能,你只需在搜索框里输入想要看的贴吧内容,一点贴吧就直接进去了。 如果按照“工程师逻辑”,网页旁边怎么可能是贴吧呢?应该是垂直搜索才对。如果垂直再分类的话,又是什么衣食住行,琴棋书画,生老病死,基本上就是这些“逻辑分类”。我推测百度是把用户最需要的放出来,用户上来想找什么,就把谁放上去,没有“逻辑分类”。 关键在于:最早接触计算机的这一群人都是我们这种所谓学过程序的人,“逻辑分类”的思维根深蒂固,大家从接触这一行开始就觉得,一定要显得有逻辑,但事实上它并不重要。 我们要知道,互联网的整个逻辑在今天已经变了! 转自:http://www.oschina.net/news/44513/engineer-logic
View DetailsWin8 在性能尤其是开机速度等多个方面都超过了Win7(且看 Win8 RP和Win7性能全面测试:Win8快一倍),很多人受不了 Windows8 这个诱惑,信誓旦旦的准备用那个传说中最具革命性的OS,结果安装后性能咋比 Windows7 还不给力,打开文件夹还会卡顿,启动后硬盘读个不停,CPU占用碉堡了!这是在坑爹么? 其实深入了解下Win8,上面出现的问题,统统不是问题,围观下面的安装好Win8后必做的优化。 安装好Win8后必做的优化: 1.关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态 关闭方法:Win+C – 设置 – 更改电脑设置 – 家庭组 – 离开 如果用不到家庭组可以直接把家庭组服务也给关闭了:控制面板 – 管理工具 – 服务 – HomeGroup Listener 和 HomeGroup Provider 禁用 2.Windows Defender 全盘扫描下系统,否则打开文件夹会卡顿。 然后可以排除信任的EXE程序,建议排除explorer.exe(资源管理器进程),如果你不用系统自带的杀毒软件,也可以直接关闭它。 Win+X – 控制面板 – Windows Defender – 设置 – 实施保护 -去掉勾 和 管理员 – 启用 Windows Defender – 去掉勾。 控制面板 – 管理工具 – 服务 – Windows Defender Service 禁用。 3.用好索引选项,减少硬盘压力。 控制面板 – 索引选项 – 选中索引项 – 修改 – 取消不想索引的位置。(索引服务对系统性能的影响) 如果习惯用 everything 这款神器来搜索文件,可以关闭索引功能。控制面板 – 管理工具 – 服务 – Windows Search 禁用。 4.关闭磁盘碎片整理计划 用好磁盘碎片整理可以提高磁盘性能,如果习惯手动整理,可以关闭整理计划,避免在你工作的时候自动整理,影响性能。 资源管理器,选中磁盘 – 属性 – 工具 – 对驱动器进行优化和碎片整理 – 优化 – 更改设置 – 取消选择按计划运行 5.设置好 Superfetch 服务 控制面板 – 管理工具 – 服务 – Superfetch – 启动类型 – 自动(延迟启动),可以避免刚启动好Win8对硬盘的频繁访问。 6.如果覆盖或者升级安装Win8,需要清理产生的Windows.old文件夹,腾出C盘空间。 方法1:快捷键Win+X – 命令提示符 – 输入 rd X:windows.old /s (X代表盘符) 方法2(推荐):C盘 – 右键 – 属性 – 磁盘清理 – 选中 以前的 Windows 安装 复选框 – 确定清理。 7.设置Win8 自动登陆,省去输入密码步骤,开机更快 快捷键Win+R – 输入 netplwiz – 取消使用计算机必须输入用户名和密码的选项 – 然后双击需要自动登录的账户 – 输入你的密码。 8.关闭ipv6 部分网卡驱动开启 ipv6会导致开机系统未响应,假死。如果你不是ipv6用户建议关闭,否则就更新网卡驱动试试看。 网络共享中心 – 网络连接 – 以太网 – 属性 – 取消 ipv6 。 9.开启 Hybrid Boot Win8启动飞快 。默认是启动的,如果没有启动,可以到控制面板 – 电源选项 – 选择电源按钮的功能 – 更改当前不可用的设置 – 关机设置 – 勾上启用快速启动。 如果没有看到这功能,请先开启休眠:Win+X – 命令提示符 – 输入 powercfg -h on 10.关闭性能特效 系统属性 – 高级 – 性能 – 设置 – 关闭淡出淡入效果。打开文件夹,小软件之类的,唰唰的快!反正Win8都反璞归真,取消了Aero磨砂效果,不在乎这点特效 了,直接关闭吧。 通过以上的优化设置后,Win8飞一般的感觉,还可以关闭你不需要用的系统服务,这里就不介绍了,过度优化会出现各种毛病,需谨慎! 兼容软件方面,常用软件基本没问题。 平反:Win8不兼容腾讯网游?别开玩笑了 …… 是腾讯的网游不兼容Win8,腾讯的游戏有TP保护功能,据说是为了防止外挂、木马… 转自:http://www.ithome.com/html/win8/25805.htm
View Details这些年,许多人问过我下面相同的问题: 我开始了一个新项目,你认为我该使用什么技术呢? 通常,这些人属于下面两类中的一类: 已经做出决定的技术人员 需要鼓励支持的非技术人员 在一天结束的时候,我怀疑这些人是否真正关心我的答案。或许他们只是想知道我们是否面对相同的问题或只是需要鼓励支持。 坦白的说,作为一名工程师,我信奉这个说法:伟大的想法可由几乎任何技术构建。它们都有自己的优点和缺点。无论你选择什么技术,你都要为它带来的风险买单。但真的,你项目的成功与否更多的取决于愿景、领导团队、执行和市场,而并非技术的选择。 现在,我是一个负责人,我每天做技术上的决断。当我选择了一个特定技术时,我要能够证明这个决定,向我自己、我的合合伙人/员工和潜在的投资者。我根据项目及公司愿景做技术选择。 项目要成功你必须有一个坚定的愿景。如果你能将你的愿景转化成一组衡量你每个决定的值,你的前进道路会更清晰,也更容易找到合适的加入你的人。 除了愿景,许多初创公司专注于文化。人们都说文化是由创始人、最初的几个员工及产品本身确立的,然而,技术抉择对公司文化有直接影响这个说法却没怎么被提到。 你的项目初创可能基于J2EE、Oracle、Perl、PHP、Rails、Node.js或.NET,随之而来你的团队工程师将有不同的期望,不同的价值观,和不同的关注点。这些技术没有本质上是坏的。伟大的事情都有各自不凡的所在。它们伴随而来的是一种文化。 几年前,我遇到一位负责人选择使用Node.js来搭建自己的应用。出于好奇,我问他为什么选择Node。他的回答很简单:基础的工程师对Node.js很兴奋,所以我可以更容易招募到愿意免费贡献的人,因为他们希望积累相关经验。 这个决定显式地定义了工程师文化和团队成员——那些能够在这个项目中工作或感兴趣这个项目上工作的人。 问一个不一样的问题 那么我们不应该问什么技术是我们需要使用的, 我们应该问我们自己: 这个技术符合我们公司的核心价值观吗? 这显然是个更为之困然的问题,因为你需要切切实实地了解你公司的核心价值观。这将是创建一个成功项目的关键。 你不能盲目地套用技术就像你不用套用别人的商业计划那样。这是公司身份的一部分,你的核心价值观,你的目标,你的团队,你的期望都是跟别人不一样的。 关于“这技术在某某公司用得适合啊”这样的论据是很少有效的。例如Facebook使用PHP,它“在Facebook公司用得很适合”,但是这意味着我们选都应该使用PHP吗? 技术文化联盟 要具体描述这些技术社区的特性是很困难的,但我会个你分享我在不同选择上的观点与看法。请自由在评论里分享自己的看法,也可以包括关于其他技术社区的。 古典学校: 这里有些是“经典“的语言:他们已经被使用很长的一段时间,并且被证明他们的价值。他们的使用范围已经很广泛,但却引不起别人更大的激情。 注意:我在这没有提及Perl,因为我并不知道有哪个创业项目是以Perl作为核心技术来创建的(6?)。 PHP 理念: 功能都实现出来,这非常重要 就像互联网的基础一般 只要有一个方法去实现它,那么就不会被破坏 只要它运行起来并且速度很快,那么其他东西都是没有意义的 不要太理论化了,我们的语言是非常通熟易懂的,任何人一眨眼的功夫就能上手了。你可以用Java做同样的事情看看! 面向对象是种落后的想法 常见的使用例子: (在2013年中期) 你的第一个web app WordPress/Drupal的扩展 个人观点: PHP拥有它光荣的日子。它真的让web开发更加简单,容易上手. 但是, 大概因为大量新的程序员开始使用PHP并且它拥有个不是那么地坚持自己观点的社区,所以只有少数人能写出漂亮的PHP代码。 良好的拥有规范的代码例子是很难找到的,并且我甚至不敢肯定PHP拥有自身的规范。这导致了PHP社区以糟糕的代码质量,缺乏测试,安全问题如同梦魇和像在2000年代初期般的落后品味而著名。 拥有良好规范约定,开发流程和指南的强大的PHP团队,是可以完成伟大的事情的,但这样团队很稀少。 Java 理念: 可移植性 像C/C++般的能力和表现,但却能够自动管理内存 更多地关注面向对象 IDE是必须有得 我们要消耗所有的内存,因为它们是一文不值的 线程处理是个好方法! 不要提起Java applets 看看我可爱的JVM! 开源(但拥有者为Oracle) 缓慢但更为安全的开发流程 个人观点: Java是非常有趣的。在几年前很多开发者已经厌倦了Java,他们找到了其他新大陆。他们开始转向一些脚本语言,像PHP,Pyhton,Ruby或者一些更加难懂小众的语言像Erlang。 尽管如此,Google通过Android展示了Java并不像我们脑海里的那么糟糕(只要你并不是使用J2EE或者Swing)。现在有一种”赶时髦“的趋势视乎暗示着Java再次变得酷起来了。这些大多建立在两件事情上: JVM 让人难以置信高质量的代码库 即便如此,对于我们来说,花一整天来编写Java程序看起来并不是一件吸引人的事。如果你打算依靠Java的堆栈,那么有一系列的其他JVM语言供你选择,他们成熟而且兼容Java扩展的库(例如:Scala, Groovy, JRuby, Clojure),你总是可以混搭使用它们。 自从大量毕业生学习Java后,聘请Java程序员并非一件难事,但是要找那些前期创业公司,高水准的工程师并且对写Java程序感兴趣是一件极具挑战性的事情。 另外注意:如果你的目标是Android,那么不用想得太复杂,即使你认为其他JVM语言更好,你也要坚持使用官方的堆栈。 我们仍然有许多的原因在你的创业项目里使用Java技术,但你可能会想同时使用一些的”更快,更灵活“的解决方案(Ruby, Python, Node…)。对于公司跟工程师来说,一个多语言环境带来了大量的价值,这就是为什么Java社区看起来节奏很慢,但却肯定是活跃的。 Java绝大部分是吸引了那些受到了传统的训练的工程师,他们向往舒适,有重复性,总所周知的编程模式。他们习惯关于使用这种语言,这种工具,这种自然的节奏。或许他们并不是最具有求知欲的开发者,但是他们却是很可靠的(当然,你要挑选了正确的人)。 C#/.NET 理念: 是更加好的Java 最初是为了桌面与嵌入式软件设计的 我们比开发Java的小伙伴们拥有更好的IDE 虽然是企业级般的重量了,但是我们提供了大部分Rails很酷的特性 我们有矛盾的开源版本 缓慢但更为安全的开发流程 个人观点: 当我回顾C#在发布C#5的时候,我不得不惊叹,我真的对该语言新的特性留下了深刻的印象。单从纯粹的语言设计角度来看,C#是有一丁点的领先于Java。在Visual Studio里写Javascript时的欣悦感让我感到很惊喜(自从我用VS主要为了C++后,我真的再也没有期待过什么了)。 另一件让我印象很深的是:C#可利用的文档的质量非常显著!但是C#并不是开源的,和Visual Studio + MSDN 非常昂贵,并且整个环境都因为licenses跟内存损耗而变得很糟糕,这些事实多少让这个好印象打折扣了。 […]
View Details“这代码真垃圾”,当我们翻查一些代码寻找一个特别讨厌的bug时,同事大声这样说。“是吗”,我回答到。 像 这样的谴责,以及其它一些类似的话,在办公室里经常会听到,而且频率在增加。而最令人不安的是,这代码并不是特别的糟糕。我这话是什么意思?不能把它们写 的更好吗?当然!大多数的代码都有改善的空间——只要有足够的时间和资源。垃圾代码确实有,我们都看得见,而且都是我们自己写的,但这并不是问题。 问题是我们有一个不良的“这代码真垃圾”文化。 这是一种我感觉在web开发社区中越来越常见的文化。接着上面的例子,我请同事解释一下,解释为什么这代码很垃圾,我得不到一个直接的答复。 “这还不垃圾,你看这代码”,他回答说,那种趾高气扬我需要仰头才能看到他,紧邹的眉头就好象是说,如果不能看出这代码有多烂,那就是个傻子。结果你知道怎么着?我开始感觉有点傻了。我差点就忍不住开始跟着他一起嘲笑,认定这代码真的有多烂,多糟糕。 在 我继续下面的内容之前,我发现上面的内容并没有在最好的光线下描绘我的同事。所以,让我弥补一下。他是个非常好的小伙。坦白的说,他是我见过的最和善的小 伙之一。他友善,有一个他很爱的家庭,他跑马拉松,乐于助人,聪明,等等等等。还有一点要说明:他是一个经验不多的新手。他还在学一些基础的开发知识。这 没什么好羞愧的,我们都经历过这个阶段。那么,为什么这样一个友善、聪明的小伙,在他参与的第一个大型web项目上,他的第一反应就是去指责一些代码很垃 圾?——他甚至还没有真正的去理解它。 生活规律:垃圾往下倒。 这个问题并不单独出现在程序员新手中。很多精明人士都有这 习惯。你也许是一个奇才,一个久经考验的程序员,但如果有这样一种习惯,整个团队和项目都会受到负面影响。因为新手们把你当作知识和经验的源泉。越多的人 拥抱这种“这代码真垃圾”文化,这种文化就会越被认可,越成为模仿的对象。很快,程序员开始变的不是积极在项目上出力,而是去贬低别人在项目上的贡献。最 大嘴、最反面的程序员很快就成了最受尊敬的人。所有人都受折磨,项目受影响,而一部分人却能能得到赞美,为倒是都是垃圾而感到心满意足。 我们应该怎么做? 没有人想显得愚蠢,没有人想自己的工作被认为劣质。一旦“这代码真垃圾”文化开始传播,唯一能确保自己在别人之上的办法就是贬低别人。最终,这变成了一种负能量,而不是想着去解决问题。 那 么,对这样的一种特殊现象有什么解决方法?阻止它。不要不加思索的否定别人的代码——在没有原因、没有理解的情况下。有很多的方式可以处理那些看起来有问 题的代码。如果发现代码中有异味,想办法改进它。从理解这些代码开始,在此基础上修正。如果你发现项目中有一些不良风气,不要跟随。如果有人对你说“这代 码真垃圾”,问他为什么,然后了解查明,去做一些事情让它变的不垃圾。向最初写这些代码的人了解,也许他们这样写代码是有原因的。帮助他们,而不是诋毁他 们。 下一次,当我发现从显示器里飘出可疑的异味时,我会转身问我的同事,“我们如何改进这段它?”因为,我们要面对它们,有时候代码会很垃圾,但这不意味着我们也去变成垃圾。 [英文原文: Code culture problem ] 转自:http://www.oschina.net/news/44112/code-culture-problem
View Details项目管理对一个项目的设计和开发起着至关重要的作用;因此选择一个项目管理工具有时候是非常讲究的。它完全取决于你的需求,你是需要任何时候都可以提供在线方案,或只是一个本地应用。 项目管理是管理该项目计划,定义,监控,控制以及交付的过程,因此它的优势是大家公认的。项目是即时的,唯一的,是极力的去完成某一既定目标的。项目管理是为不断变化的项目提供专业的管理。 whats_java 翻译于 昨天(10:59) 0人顶 顶 翻译的不错哦! 它不仅包含技术还有工具的使用来描述,管理,发布一系列活动成果,预算及时限。你需要的工具是一个能满足你所有关于项目管理的需求。 随着不同地域的软件产业提出越来越多的明确需求,需要一个更好的免费的项目管理工具来管理越来越高效的软件。一个高效的好的项目管理必须是健壮的快速的且必须包含以下几个特点: 项目时间点安排 成本控制 资源分配 预算管理 文档管理 通力协作 沟通交流 在这篇文章里,我们将特别讨论10个最佳的免费项目管理工具,这将会对你的项目管理有所帮助。 whats_java 翻译于 昨天(11:20) 0人顶 顶 翻译的不错哦! OpenProj 这是一款免费并且开源的桌面应用用于替代到微软的项目中。OpenProj为桌面应用项目的管理人员提供了完美的解决方案,并且它在Unix,Linux,Windows甚至是Mac上都是相当可靠的。他是所有微软项目桌面应用的替代品,甚至可以打开本地的项目文件。它分享了业界许多基于项目需求的高质量的时间调度引擎。该方案具有成本核算,网络图(PERT图),Gantt图表,RBS、WBS报表,等等。 GanttProject 这是一款非常容易上手使用的,基于Gantt图表的项目时间调度和管理的免费工具。主要功能包括任务的分配和层级的划分,Gantt图表,生成PERT图表,资源负荷图表,HTML和PDF报告,MS项目的导出/导入,还有基于WebDAV的工作组管理。 DotProject 这是一款支持在线,多语言,多用户的项目管理解决方案。它是开源免费的,并且有开源社区的志愿者们在不断的维护更新。它主要的特点如下: 任务和项目管理 公司,联系人和部门管理 资源分配 待办事项 论坛功能 日历功能 横道图功能 报告功能 whats_java 翻译于 昨天(12:25) 0人顶 顶 翻译的不错哦! TaskJuggler 这是一款功能非常强大的现代化的,开源免费的项目管理工具。它采用了全新的方式来规划和跟踪项目,它是一个更好、更灵活地编辑一贯使用的横道图的工具。它总是被成功地应用在许多项目中,其中也包括一些有许多资源和任务比例的小项目。这成为了高级项目经理的解决方案。这涵盖了完整的项目管理开始从最初的想法到完成项目任务的整个过程。它在项目范围内的收支计划、资源调配、沟通交流和风险管理给你提供帮助。 TaskJuggler可以提供最优的时间调度,计算出你项目的时间线,资源分配,基于你给出的项目大纲和一些限制条件。内置的一致性检查和资源平衡卸载使你不需要担心不恰当的细节和警告,如果项目顺利进展,你可以腾出手来。灵活的"根据实际的需要"的方法,提供尽可能多的细节让你规划你的项目,它也非常适合新颖的管理策略,例如轻量级的项目管理和极限情况下的规划。 whats_java 翻译于 昨天(12:52) 0人顶 顶 翻译的不错哦! PHProjekt 这也是一款开源免费的模块化应用,用于协调工作组的活动,通过网络分享文档好信息。构成PHP项目的是组员日程,时间片系统,项目管理,文件管理,邮件客户端,与管理者接触,当然还有很多就不一一列举了。 ConsultComm 这是一款轻量级的,小型化的,独立的开发平台使用java语言编写的,可以让任何人同时管理多个项目,任务,客户,可以高效地跟踪在每个项目上花费的确切时间。关键特征包含如下: 轻松集成在现有的计费系统或时间管理,还包括JDBC支持,瞬间让你可以上传你的项目和所需的时间到大多数ODBC和JDBC兼容数据库。 作为一个开源免费的项目,让你不必担心专用化或供应商锁定问题。 跨平台,这样你就能联合你的Windows,OS X,Solaris和Linux工作站去处理同一个应用。 可以利用标准的JavaBean框架创建的组件迅速拓展功能,用户和其他的开发人员可以很轻松地创建他们自己的插件,快速的添加自定义功能。 定制适合你的独特的风格偏好。 whats_java 翻译于 昨天(13:21) 0人顶 顶 翻译的不错哦! ProjectPier 这也是一款自己管理PHP的,开源免费的项目管理工具,用于管理任务,团队和项目,通过自带的Web接口。这将有助于您的公司沟通,携手共进,完成既定的任务。事实上它的功能类似于其他的商业项目管理产品,不同点是可拓展性和允许自托管。 OpenGoo 它是一个完整的基于Web的解决方案,致力于提升您的团队的生产力,协作,管理和沟通。主要功能包括: 管理任务,联系人,文档,日历,电子邮件。 管理项目的进展情况,为你的客户制定账单,并跟踪时间段。 访问优雅和简洁的仪表板的信息。 与供应商,客户和同事沟通。 whats_java 翻译于 昨天(13:32) 0人顶 顶 翻译的不错哦! Collabtive 这是另一种现代化风格的Web应用程序,它使得项目团队共同努力,管理文件、项目节点和任务,并发送即时消息给对方。它支持多语言,甚至超过20种语言。它使用XML API集成了其他的Web服务。它提供的导入功能也可以从其他应用程序导入数据。 Redmine 这是一个开源的,灵活的项目管理的在线解决方案。使用的Ruby on Rails框架写的,它是跨数据库和跨平台。主要功能包括: 基于灵活的访问控制 多个项目支持 灵活的问题跟踪系统 横道图 […]
View DetailsPHP是在实践中发展迅速并被最多使用的脚本语言;包含了诸如详细的文档、庞大的社区、无数可使用的脚本及支持框架等许多特性。PHP提供的这些特性使得它比Python或Ruby等脚本语言更容易上手。 为构建极具创新乐趣的Web应用,PHP开发人员持续搜寻着有用的工具。在这篇文章中,我收集了开发人员的12个PHP调试工具,它们将有助于开发人员轻松找出并调试应用程序及脚本中的错误。下面的PHP调试工具支持Ajax请求,并包含通用数据采集器和基于堆栈的错误处理器。我希望你能在未来的项目中体会到这个列表的方便和有用之处。 1. Kint 当调试PHP代码时,var_dump()、print_r()和debug_backtrace()是我们最常用的工具。Kint,一个开源软件,一个不需安装的替代者,它提供了更好的调试体验。它巧妙地检测几乎不可读的数据,并将它们定制成规则的输出显示。变量名、文件、行号及包装的函数它全能提示出来。 源码 2. DebugBar DebugBar是一个自由开源软件,它可以被集成到任何PHP项目用来收集和定位数据。它没有第三方依赖,支持Ajax请求,包含通用数据收集器且集成常见的库。生成的bar是100% JavaScript实现的并被放置在页面底部(像开发工具一样)。新的收集器和视图可以被轻松的添加,并且可以保存或重新运行以前的请求。 源码 3. Pinba Pinba是一个可作为PHP统计服务使用的开源MySQL存储引擎。它使用收到的数据来分析PHP应用性能并快速定位任何问题。 源码 4. PHPMD PHPMD是一个易于配置,对PHP原始依赖指标友好的前端。它在你的代码中的寻找多种潜在问题,包括可能的bug、不适合的代码、未使用的参数等。 源码 5. Xde Bug Xdebug是一个自由开源的用于调试和分析PHP脚本细节的PHP扩展。由于它是一个扩展,所以使用起来很方便,且在编码端只需要很少的设置。它可以提供错误信息中堆栈跟踪和函数跟踪的所有数据,包括用户定义函数的所有参数、函数名、文件名以及行标志。Xdebug还可以提供内存分配、分析信息和代码覆盖率分析的数据。 源码 6. Whoops Whoops是一个使错误处理和调试更容易的PHP库。这个库提供基于堆栈的错误处理,并且有一个好看的界面。它有一个处理异常的简单API,能够跟踪帧及它们的数据,并可以与任何框架整合(end和Silex已经内置集成)。 源码 7. Krumo 很多PHP开发者使用print_r()和var_dump()对输出难读或未格式化的结果进行调试。Krumo是这些函数的一个替代者,它可以显示任何PHP变量的结构化信息。Krumo运行后,输出会显示成一个围绕PHP变量的可折叠的DHTML树结构。同时,它通过自身把调试过程“关掉”而不是禁用代码里的所有追溯路径的能力加快了调试过程。 源码 8. Php Debugger 调试是发现并修复bug的过程,PHP Debugger是帮助你快速的找到错误并将它们从你的PHP程序中移除的最好的工具。你可以在PHPEd中设置远程调试,通过Wizardand DBG向导中的PHP调试设置开启。 源码 9. Php Debug PHP_Debug的基本目的是在调试PHP代码时提供援助。 源码 10. Webgrind Xdebug是最受欢迎的PHP调试扩展之一。它提供了许多有用数据来帮助你在源码中查找bug。 源码 11. PHP_Dyn PHP_Dyn是有一个优秀的开源PHP调试工具。你可以跟踪函数执行并得到函数参数和返回值的一个输出。 源码 12. MacGDBp MacGDBp是一个MAC OS上的PHP调试器。它有你所期望的所有特性,是一个包含逐句运行及设置断点等功能的全功能调试器。 源码 转自:http://www.oschina.net/translate/12-php-debugging-tools-for-developers
View Details【IT经理网点评】大多数成功的IT项目和产品背后都有一个说一不二的技术领袖,他们不是传统意义上的管理者,而是让团队成员保持最佳状态和效率,朝着正确方向前进的"牧羊犬",他们是合理分配团队资源和处理能力的差速锁,他们是脑子和手一样快的四分卫。伟大的技术领袖关心的不是人,而是代码,因此他们再忙也会“发明时间”为团队写点代码;他们用案例说事,用手为团队选择方向而不是用嘴描述方向;他们是团队前进道路上的清道夫和保护伞…现在,你明白为什么伟大的技术领袖如此珍稀了吧。 最近,曾经就职于Google、Square等公司的软件工程师兼博客作者David Byttow认为,虽然不同的企业文化各异,面临的挑战不同,但是优秀的技术领袖通常具备相似的特征、特质和方法。Byttow在VB撰文总结了伟大的技术领袖在推动项目前进时需要亲力亲为的三十二件事,对于那些可望"从优秀到卓越"的企业的技术管理者来说,有很多可以借鉴参考的地方 : 创建和维护项目启动、测试和发布计划。 主持高效率的工程师团队会议。 确保会议尽可能的简短有效。 帮助创建和排布项目的优先级事项。 经常对新的或不需要的功能说不。 为所关注的问题定义最佳实践。 成立专门的攻坚或调试团队。 维护跨职能关系。 设定目标里程碑日期。 了解最新的优秀工具的动态 担当团队里工程师的"教练"。 从其他团队招揽工程师。 关照实习生,帮他们成功。 仔细阅读代码并给出具体有用的反馈。 阅读、撰写并反馈设计文档。 在正确的时间写正确的代码。 必要时在管理层面前保护你的工程师。 与其他工程团队协作。 发现"技术债务"。 解释决策背后的原因。 为正确的设计决策而战斗。 为"技术债务"的解决挤出时间。 实现团队工作的负载均衡。 为团队物色新的人选,并帮助新工程师入职。 必要的时候对工期和时间节点进行调节。 定义项目的MVP人选,并维护其地位。 评估架构决策和相关影响。 确保对核心功能进行测试。 维持在岗工作流程的正常运转。 必要时屏蔽更多议题。 为产品的隐私和安全问题把关。 时不时蹦出点牛逼的想法和解决方案。 文章来自IT经理网
View Details近年来风险投资和天使投资人似乎非常偏爱开发者工具,根据最新的报告,2012年投资者在开发工具上投入了6.46亿美元,这使得开发工具成立最热门的创业领域之一。 在资本的趋势下大批公司投身开发开发者工具,很多新产品非常优秀也卖得不错,但是也有不少产品噱头大过功能,很快被用户束之高阁。随之而来的问题是,面对如雨后春笋般冒出来的新开发工具,除非你是技术专家并花费大把时间试用新产品,否则你很难区分这些开发工具的优劣。 最近,帮助投资人筛选创业公司的投资研究机构Mattermark,分析了各开发工具的用户增长势头,给出了20个发展最快的前端和后端开发者工具的列表。其中一些开发工具已经拿到了风险投资,所有上榜开发工具的用户数最低不少于1万。 Mattermark制作开发工具排行榜的数据来源很多,包括新闻报道、AngelList、App Store排名、Alexa排名等。 以下是Mattermark给出的顶级开发工具公司排名: 10大前端软件开发工具 Ink Mobility -让智能手机应用之间通讯互动的工具 Bootstraptor-为Web开发者准备的Twitter Bootstrap模板 Macaw-支持语义HTML和简洁CSS的web开发工具 XingCloud-“一键”本地化你的网站 FlauntResponsive-自适应设计的转化工具 Statuspage.io-简单的宕机沟通工具(刚刚在Y Combinator上发布) GrowthGiant-不间断的A/B测试工具(beta内测,尚未正式发布) Spinnakr-A/B测试内容工具,为不同用户显示不同信息 Dakwak-能为访客显示本地化网站版本的工具 Nitrous.IO-快速开发环境管理与代码协作 10大后端开发工具 Bitnami-在亚马逊、Azure和VMware上运行的服务器软件的应用商店 Flywheel-为设计师准备的WordPress托管和管理服务 Pivotal-企业PaaS云计算服务(来自EMC和VMware) Salt Stack-为DevOps组织提供的系统与配置管理 KnackHQ-在云端管理数据库 HortonWorks-Apache Hadoop商业版本发行商,用于大数据存储 Digital Ocean-面向开发者的云托管服务 Fastly-下一代内容分发网络(CDN) Honeybadger-Rails的错误管理服务 Mean.io-MongoDB、Node.js、Express和AngularJS应用的样板 转自:http://www.oschina.net/news/43791/top-developer-tools
View Details在应用程序中的服务器错误"<application name >" ——————————————————————————-- HTTP 错误 404.8 – HIDDEN_NAMESPACE HRESULT: 0 HRESULT 的说明 # 操作成功完成。 要解决此问题,请按下列步骤操作:单击 开始 、 在 开始搜索 框中键入 记事本 右键单击 记事本 ,然后单击 以管理员身份运行 。 请注意 如果将提示您输入管理员密码或进行确认,键入该的密码,或单击 继续 。 在 文件 菜单上单击 打开 ,在 文件名 框中键入 %windir%\System32\inetsrv\config\applicationHost.config 然后再单击 打开 。 在该 ApplicationHost.config 文件中找到在 <requestfiltering>元素,然后找到该 <hiddensegments>元素。 在该 <hiddensegments>元素,删除与所请求的 URL 中指定的目录匹配的条目。 在 文件 菜单中上, 单击 保存 。 退出记事本。 本文所有权归作者,欢迎转载,但是请指明出处 :http://www.cnblogs.com/fly871117 ,严谨用于商业用途
View Details这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考。这是为了确保在编码过程中,大部分通用编码指导原则都能注意到。对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助。 清单 1. 确保没有任何警告(warnings)。 2.如果先执行Code Analysis(启用所有Microsoft Rules)再消除所有警告就更好了。 3. 去掉所有没有用到的usings。编码过程中去掉多余代码是个好习惯。(参考:msdn) 4. 在合理的地方检查对象是否为’null’,避免运行的时候出现Null Reference Exception。 5. 始终遵循命名规范。一般而言变量参数使用驼峰命名法,方法名和类名使用Pascal命名法。(参考:msdn) 6. 请确保你了解SOLID原则。 根据维基百科定义:在程序设计领域,SOLID (单一功能、开闭原则、里氏替换、接口隔离以及依赖反转) 是由罗伯特·C·马丁在21世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个 程序员开发一个容易进行软件维护和扩展的系统变得更加可能。SOLID所包含的原则是通过引发编程者进行软件源代码的代码重构进行软件的代码异味清扫,从而使得软件清晰可读以及可扩展时可以应用的指南。SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分。参考:wiki/SOLID_(面向对象设计) 7. 代码可重用性:如果一块代码已经被使用超过一次,或者你希望将来使用它,请提取成一个方法。将重复的工作做成通用的方法放在相关的类中,这样一旦你完成别人就可以使用了。将常用功能开发成用户控件,这样可以跨项目重用它们。(参考:① 、 ②) 8. 代码一致性:比方说,Int32写成int,String写成string,应该在代码里保持统一形式。不能一会二写成int一会儿写成Int32。 9. 代码可读性:代码应该是可维护的,便于其他开发者理解。(参考:msdn) 10. 释放非托管资源,比如文件I/O,网络资源等。一旦使用结束就应该释放它们。如果你想一旦超出使用范围就自动释放对象,可以使用usings将非托管代码括起来。参考:msdn 11. 合理实现异常处理(try/catch和finally块)和异常记录。参考:msdn 12. 确保代码中方法的行数不要过多,不超过30到40行。 13. 及时用代码管理工具check-in/check-out代码。(比如TFS) 参考:codeproject.com 14. 相互审查代码:和你的同事交换代码,实现内部审查。 15. 单元测试:编写开发测试用例完成单元测试,确保代码被送到QA以前,基本测试完成。参考:msdn 16. 尽量避免for/foreach循环嵌套和if条件嵌套。 17. 如果代码只会使用一次,请使用匿名类型。参考:msdn 18. 尽量使用LINQ查询和Lambda表达式,增加可读性。参考:msdn 19. 合理使用var、object和dynamic关键字。由于很多开发者会感到困惑或者知道的很少,会觉得它们有些相似,故而交换使用,这是要避免的。参考:blogs.msdn 20. 使用访问限定符(private, public, protected, internal, protected internal)限定每个方法、类或变量的需要范围。比方说如果一个类只会在程序集内使用,那么定义成internal就足够了。参考:msdn 21. 在需要保持解耦的地方使用接口,有些设计模式的出现也是由于接口的使用。参考:msdn 22. 按照用法和需要将类定义为sealed、static或abstract。参考:msdn 23. 如果需要多次串联,请使用Stringbuilder代替string,这可以节省堆内存。 24. 检查是否有不可能执行的代码,如果有,请修改。 25. 在每个方法前注释,说明它的用法、输入类型和返回值类型信息。 26. 使用类似Silverlight Spy的工具,检查和操控Silverlight应用在运行时对XMAL的渲染,以此来改善效率。这可以在设计执行XAML时,节省大量退回和来回修改的时间。 27. 使用filddler工具通过检查HTTP/网络流量和带宽,来跟踪web应用和服务的性能。 28. 如果你想确认Visual Studio以外的方法,请使用WCFTestClient.exe工具,或者装载它的进程到Visual Studio来进行调试。 29. 在任何合理的地方使用constants和readonly。参考:/msdn、msdn 30. 尽量避免强制转换和类型转换,因为会造成性能损失。参考:msdn 31. 对于你想提供自定义信息的类,请重载ToString(来自Object类)。参考:msdn 32. 避免直接从其他代码中ctrl+c/ctrl+v。一直建议还是自己用手敲,即使你已经找到相关代码。这样可以锻炼自己写代码能力,还能正确理解那段代码的用法。最终你永远都不会忘记那段代码。 33. 保持阅读书籍和文章的良好习惯,遵循大神们的实践指导。(比如微软专家和一些著名的专家,Martin Fowler, Kent Beck, Jeffrey Ritcher, Ward […]
View Details