Tag: 维护

有没有办法避免多年来的意大利面代码?

我有几个编程工作。 每个人有20-50个开发者,项目持续3 – 5年。 每一次都是一样的 一些程序员是光明的,有些是平均的。 每个人都有自己的CS学位,每个人都读devise模式。 意图是好的,人们正在努力编写好的代码,但在几年后,代码变成意大利面。 模块A中的变化突然中断了模块B.除了写它的人之外,总是有这些代码部分是人们无法理解的。 改变基础设施是不可能的,向后兼容性问题阻碍了良好function的进入。一半时间你只是想从头开始重写所有的东西。 比我更有经验的人把这视为正常。 是吗? 它必须是? 我可以做些什么来避免这种情况,或者我应该接受它作为生活的事实? 编辑:伙计们,我对这里的回应的数量和质量印象深刻。 这个网站和它的社区摇滚!

你的networking应用程序或网站有健康检查吗?

过去,我已经为几个项目构build了基于PHP的“健康检查”脚本,但是它们总是为这个场合定制的,而不是作为独立产品的抽象。 我想知道这样的解决scheme是否存在。 我所说的“健康检查”是一个受保护的网页,其function非常类似于一套unit testing,但在更多的操作层面上,显示红/黄/绿等状态 caching目录是否可写? PHP版本是否正确,是否需要安装扩展? 数据库服务器是否可达? 数据库中是否存在必要的表格? 有足够的磁盘空间可用吗? 该网站的首页是否可以访问并完全呈现(=没有PHP错误)? 该项目的图书馆的MD5校验和是否与原来的相匹配? 首页的输出是否通过了W3Cvalidation器? 你是否在应用程序和网站上这样做 – 或者其中的一部分? 是否有任何标准化的工具,带来所有的function来执行testing(理想的插件),只需要相应的configuration? 我正在谈论的是一个轻量级的解决scheme,即使在最小的基于PHP的Web包中也可以运行,没有扩展和服务器访问。 有没有,也许,有一种方法来设置这个使用unit testing框架可用于PHP(最好是PHPUnit)之一? 如果是这样,你知道任何资源/教程概述如何? 更新:似乎没有一个stream行的现成解决scheme,否则,有100多个意见,我相信会有一些提及它。 看到build立这样的工具作为一个开源项目有一些初步的兴趣,请随时发布一个理想的解决scheme,你会看起来像什么,它将具有什么function。

ResultSet:按索引检索列值与按标签检索

在使用JDBC的时候,我经常碰到类似的构造 ResultSet rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt(1); // Some other actions } 我问自己(还有代码的作者)为什么不使用标签来检索列值: int id = rs.getInt("CUSTOMER_ID"); 我听到的最好的解释是有关性能。 但实际上,它是否使处理速度非常快? 我不这么认为,尽pipe我从来没有做过测量。 即使通过标签检索会慢一点,但是,在我看来,它提供了更好的可读性和灵活性。 那么有人可以给我一个很好的解释,避免检索列索引,而不是列标签? 这两种方法的优点和缺点是什么(也许,关于某些DBMS)?

inheritance一个PHP的恶梦,从哪里开始?

我inheritance了一个PHP项目,这是一个噩梦。 以下是要点: 所有的原始开发者都离开了 该代码没有版本控制 所有的开发和testing都是通过重命名和编辑PHP文件在活动服务器上完成的。 有每个文件index.php,index2.php,index3.php等的多个副本,并不清楚哪些文件真正被使用 每个文件中包含多个包含其他文件(包括其他文件等)的文件 项目中有多个开发人员,每个人都有自己的做事方式。 例如,有一个JavaScript框架大杂烩,一些数据库查询使用SQL,其他一些XML接口和其他人调用数据库中的程序function。 由于所有这些问题,发展速度令人沮丧。 除了发泄我堆叠溢出的挫折,任何build议如何开始这个混乱? 我自己对PHP开发相当陌生,但似乎设置了某种开发环境,以便在不破坏活动服务器的情况下testing更改是第一步。 有关如何从这里开始的任何提示? 什么是testing的典型方法? 在我的桌面上设置本地版本的网站似乎很多工作(服务器是Linux,但这里的桌面是Windows)。 我可以在现场服务器上创build一个子目录进行testing吗? 数据库呢? 其次,是否有某种types的configuration文件可以用来跟踪服务器上的哪些文件实际上正在使用? 我想删除那些实际上没有包含的东西的重命名副本。 更好的是,有没有办法告诉一个文件的哪个部分没有被执行? 有很多复制function和垃圾,我怀疑还没有被使用。 同样,对于包括,在理清乱七八糟的任何提示? 那么,我会停止在这里发泄,把自己摆在这里的每个人的怜悯。 🙂

在MySQL中删除数百万行

我最近发现并修复了一个我正在处理的网站中的一个错误,这个错误导致了表中数百万重复的数据行,即使没有它们(仍然是数百万),这些数据行也相当大。 我可以很容易地find这些重复的行,并可以运行一个删除查询来杀死他们。 问题是试图一次性删除这么多行就locking了很长一段时间,如果可能,我想尽量避免。 我可以看到摆脱这些行的唯一途径,而不是取消网站(通过locking表): 编写一个脚本,在一个循环中执行数千个较小的删除查询。 这将理论上解决locking表问题,因为其他查询将能够进入队列并在删除之间运行。 但是它仍然会对数据库造成很大的负担,并且需要很长时间才能运行。 重命名表并重新创build现有的表(它现在将是空的)。 然后在重命名的表上进行清理。 重新命名新表,将旧名重新命名并将新行合并到已重命名的表中。 这是需要相当多的步骤,但应该完成的工作与最小的中断。 这里唯一棘手的部分就是所讨论的表格是一个报表,所以一旦它被重新命名,而空的表格被放置到位,那么所有的历史报告都会消失,直到我把它放回原处。 另外,由于存储数据的types,合并过程可能会有点痛苦。 总的来说,这是我现在可能的select。 我只是想知道是否有其他人之前有过这个问题,如果是的话,你怎么处理它,而不会取消网站,并希望尽可能减less,如果有任何中断用户? 如果我采用2号或者其他类似的方法,我可以把这些东西安排在深夜运行,并在第二天早些时候进行合并,让用户提前知道,这不是什么大问题。 我只是想看看有没有人有更好或更简单的方法来做清理的想法。

在Java中pipe理高度重复的代码和文档

高度重复的代码通常是一件坏事,并有devise模式,可以帮助最大限度地减less这一点。 但是,由于语言本身的限制,有时候这是不可避免的。 从java.util.Arrays获取以下示例: /** * Assigns the specified long value to each element of the specified * range of the specified array of longs. The range to be filled * extends from index <tt>fromIndex</tt>, inclusive, to index * <tt>toIndex</tt>, exclusive. (If <tt>fromIndex==toIndex</tt>, the * range to be filled is empty.) * * @param a the […]

在git中列出每个分支及其最后修订的date

我需要从我们的远程回购中删除旧的和无人维护的分支。 我试图find一种方式来列出远程分支的最后修改date,我不能。 有人知道用这种方法列出远程分支的简单方法吗?

最好的私人维基托pipe维基解决scheme?

我以前问过人们如何组织他们的在线资源和研究数据 ,其中一个build议的工具是使用私人wiki。 我想尝试这个,因此我正在寻找一个托pipe的wiki,我可以存储我的想法,想法和项目文档。 我的要求是: 必须由第三方托pipe。 必须是免费的或便宜的。 必须允许私人维基。 必须提供一些方法来备份我的数据,最好是完整的修订历史logging。 应该有一个很好的维基实现,易于编辑,易于组织和具有足够的search能力。 如果wiki实现是一个标准,那么这将是一个奖励,所以我可以将我的数据在将来迁移到另一个站点或自托pipe版本。 如果主机还提供了公共维基(具有访问控制)并映射了我自己的wiki的域名,这也是有用的。 这不是我的私人维基的要求,但是如果他们提供的话,我可以在我的公共或开源项目上使用同一个公共维基的主机。 那么,有没有提供这个网站?

Visual Studio安装问题 – “加载安装程序组件时遇到问题。 取消设置。

我的Visual Studio 2008安装程序有一个严重的问题。 我收到一个非常有用的错误“加载安装程序组件时遇到问题。 取消设置。 每当我尝试卸载,重新安装或修复Visual Studio 2008(团队系统版本)。 如果我无法解决这个问题,我别无select,只能完全擦拭我的电脑,重新开始,这将需要整天! 我最近收到很奇怪的错误,当试图构build内存不足的组件的项目时(尽pipe当时有2GB的物理内存空间),这使得我当前的VS安装无用。 注意我安装了VS2008后,为了获得对SQL Server 2005 Reporting Servicesdevise器的访问权(在VS2008中这是莫名其妙地不可用的),我在VS2008中安装了VS2005 shell版本,使用SQL Server文件夹中的vs_setup.msi文件。 有没有人有任何解决这个问题? PS :我知道这与编程没有直接关系,但是我觉得这是适合于SO的,因为它直接关系到我的编程能力 ! 注意 :一位同事find了解决这个问题的办法,希望这可以帮助其他人解决这个问题。

如何处理一个11000行C ++源文件?

所以我们有这个巨大的(是11000行巨大?)mainmodule.cpp源文件在我们的项目中,每当我碰它时我都畏缩。 由于这个文件如此重要,它不断累积越来越多的代码,我想不出一个好办法让它真正开始缩小。 该文件在我们的产品的几个(> 10)维护版本中被使用和主动更改,因此很难对其进行重构。 如果我只是简单地把它分解成3个文件,那么从维护版本合并更改将成为一个噩梦。 而且,如果你将这个历史悠久而丰富的文件分割开来,跟踪和检查SCC历史上的旧的变化突然变得更加困难。 该文件基本上包含了我们程序的“主要类”(主要内部工作调度和协调),所以每次添加一个function时,它也影响到这个文件,每次增长。 🙁 在这个情况下,你会怎么做? 有关如何将新function移动到单独的源文件而不搞乱SCC工作stream程的任何想法? (关于工具的注意事项:我们在Visual Studio使用C ++;我们使用AccuRev作为SCC但是我认为SCC的types在这里并不重要;我们使用Araxis Merge来进行文件的实际比较和合并)