软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

6
如何鼓励采用版本控制
我最近开始在没有版本控制的团队中工作。大多数团队成员都不习惯任何版本控制。我一直在私下使用Mercury跟踪我的工作。我想鼓励其他人采用它,并且至少在开发变更时开始对他们的代码进行版本控制。任何人都可以给我一些建议,以鼓励我采用诸如Mercurial这样的分布式版本控制。任何有关如何赢得包括DVCS经理在内的人员的建议,将不胜感激。

4
github团队工作流程-分叉与否?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我们是一个由Web开发人员组成的小组,目前正在使用Subversion,但是很快我们将切换到github。 我正在查看不同类型的github工作流,但我们不确定github中针对每个开发人员的整个派生概念是否对我们来说是一个好主意。 如果我们使用fork,我知道每个开发人员都会拥有自己的私有远程和本地存储库。我担心这将使变更集变得困难而又过于复杂。另外,我最大的担心是,它将迫使每个开发人员拥有2个远程控制器:origin(远程分支)和上游(用于“同步”来自主存储库的更改)。不知道这是做事的简便方法。 这类似于此处说明的工作流程:https : //github.com/usm-data-analysis/usm-data-analysis.github.com/wiki/Git-workflow 如果我们不使用派生,则可以使用中央存储库为正在处理的每个任务创建一个分支,然后将它们合并到同一存储库中的development分支中,这样可以很好地解决问题。这意味着我们将无法限制分支的合并,并且在中央存储库中有很多分支可能有些混乱。 尝试过两种工作流程的团队有何建议?
21 git  github 

10
您如何通过代码更改来更新实时网站?
我知道这是一个非常基本的问题。如果有人能使我幽默并告诉我他们将如何处理,我将不胜感激。 我决定发布此内容,因为我将要安装SynchToy来解决以下问题,并且使用“ Toy”感到有点不专业,但是我想不出更好的方法。 当我处于这种情况下,我发现很多时候,我都缺少一些痛苦而明显的做事方法-这是因为它是公司中唯一的开发人员。 在计算机上工作时开发的ASP.NET Web应用程序 解决方案有2个项目: 网站(文件) WebsiteLib(C#/ dll) 使用Git存储库 部署在GoGrid 2008R2 Web服务器上 部署: 进行代码更改。 推送到Git。 远程桌面到服务器。 从Git中拉出。 通过使用Windows资源管理器拖放来覆盖实时文件。 在第5步中,我从网站根目录中删除所有文件。这不是一件好事。这就是为什么我要安装SynchToy ... 更新:感谢所有有用的回复。我无法选择哪个人来标记答案-在使用Web部署之间-看来我有几个有用的建议: Web Project =将整个站点打包到一个DLL中-对我来说,我无法进行简单的更新-作为50个公司的开发人员,这有时会更简单。 从SCM直接拉到站点的Web根-我最初并不是这样做,因为我担心我的SCM隐藏目录可能最终被暴露出来,但是这里的答案帮助我克服了这一点(尽管我仍然不喜欢拥有一个还有更多的事情需要担心忘记以确保随着时间的推移仍然是正确的) 使用Web场并系统地部署到节点-这是零停机的理想解决方案,这实际上是我关心的问题,因为该站点实质上是我公司的实时收入来源-我可能很难说服他们服务器成本却翻了一番。 ->最后,重申基本原则,即需要对站点进行一次单击部署,否则可能会出错,这是我从答案中得到的最有用的东西。 更新2:我以为我会回到此位置,并使用已经存在了几个月并且可以正常使用的实际解决方案进行更新(对于我的单个Web服务器解决方案)。 我使用的过程是: 进行代码更改 推到Git 远程桌面到服务器 从Git拉 运行以下批处理脚本: cd C:\ Users \ Administrator %systemroot%\ system32 \ inetsrv \ appcmd.exe停止站点“ /site.name:默认网站” robocopy文档\代码\ da …

8
在编程时增加逻辑的技术
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我从最近三年开始从事编程工作。但是我似乎迷失了。即使我每天编写代码,我也无法擅长。 假设我解决了一个问题,我将在解决方案之间徘徊,并实施其他解决方案。我不能集中精神。我编写的代码有很多缺陷。我害怕编写代码,我不知道为什么不按时完成我的老板会解雇我等等。我喜欢编写代码,但并非一直如此。如何增加耐心? 我一直想知道如何像许多杰出的程序员一样成为最好的程序员。我知道这听起来很主观,但是我认为这将有助于程序员社区尤其是像我这样的普通人或初学者。
21 logic 

7
为什么XML不称为EML?
来自维基百科 可扩展标记语言(XML)是用于以机器可读形式对文档进行编码的一组规则。它在W3C制定的XML 1.0 Specification [4]和其他几个相关规范中定义,所有这些都是免费的开放标准。[5] 调用简写XML而不是更自然的EML的历史原因是什么?
21 naming  xml  etymology 

4
程序员如何利用网络在60年代和70年代共享昂贵的计算机资源?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我还很年轻,在60年代和70年代还没有活着,无法像以前那样体验网络和编程。我一直在观看Van Jacobson关于内容中心网络的一些演讲,他在这些演讲中提供了历史观点,指出在60年代和70年代,网络旨在解决资源共享问题,例如访问稀缺的读卡器。或高速磁带机。然后,他继续说,这个时代的数据很少,而且数据“不存在于计算机上”,这是您随身携带的东西,例如在磁带或打印输出上。 我对此有两个问题: 1)人们如何“远程”使用读卡器之类的东西?当然,必须在某些时候将物理卡传送到计算机所在的任何位置。如果您在100英里外,这是否意味着他们提前将卡发布了,然后仅使用网络来执行运行这些卡座所需的命令? 2)人们通常如何获得其计划的结果?它是通过导线发送回去的,还是在程序运行回远程研究人员之后张贴了打印输出/胶带等? 如我所说,如果我把自己的时代弄混了,我深表歉意,当时我还活着。 谢谢。

3
LISP的宏在哪些方面比Ruby的创建DSL的“能力”更好?
使Ruby发光的一件事是能够更好地创建特定于域的语言,例如 西纳特拉 规格 耙 Ruby on Rails的ActiveRecord 尽管可以通过宏在LISP中复制这些库,但我认为Ruby的实现更为优雅。尽管如此,我认为在某些情况下LISP的宏可以比Ruby的宏更好,尽管我想不到。 那么,LISP的宏在哪一个领域比Ruby创建DSL的“能力”(如果有)更好? 更新 我之所以这样问,是因为现代编程语言正在接近LISP的奇点,例如 C获得了宏扩展预处理器,尽管非常原始并且容易出错 C#具有属性(尽管这是只读的),通过反射公开 Python增加了装饰器,尽管感觉很有限,但它可以修改函数的行为(以及v 3.0的类)。 Ruby TMTOWTDI,如果应用得当,则可以使用Ruby方式制作精美的DSL。 我想知道LISP的宏是否仅适用于特殊情况,而其他编程语言功能是否强大到足以提高抽象度来应对当今软件开发中的挑战。
21 ruby  lisp  dsl 

13
当您无法避免打扰时,快速隐藏您的认知状态的最佳方法
我什至不知道这个问题是否有道理...但是我让你来看看... 想象... 您完全沉迷于某种编程思想/观念/概念,您的大脑处于最活跃的状态,正在思考解决问题的方法,或者如Joel Spolsky 所说的那样-您深陷“领域” “-而且,突然之间某人或某件事破坏了您的专心-您无法避免的事情,您必须注意的事情。 ...想象力完整..回到现实 可能会破坏您的注意力的东西可能是... 你被召集参加紧急会议 您的代码破坏了日常构建,而您的同事正在打电话给您 您刚刚想起了您必须做的事情,却忘记了做 您的队友有一些令人振奋的消息要打破,并坚持要您听 你的女友(或男友)刚过来 现在假设您只有5 到 10分钟的时间才能离开自己所处的深处,并进行娱乐。 我的问题是-当转移发生时,您如何迅速“保存”您所处的心理状态。您是以“某种形式”将其写在纸或计算机上,还是只是以某种方式“记住”它。您如何在5到10分钟内挽救那些确切的想法,以便以后回来时可以从左边的“点”赶上来。 我经常发生这种情况,以至于我无法回忆起打击之前我一直在思考的确切想法,而且我觉得我已经失去了解决问题的好主意或解决方案。我试图回想起来,努力达到那种使我兴奋的想法-同样的认知状态,但是我对无法“到达那里”感到沮丧。 这样的事情发生在您身上吗?您如何从中“恢复”? 我主要关心的不是代码,而是那些还没有转换为我需要以某种方式“保存”的代码的“抽象思想”。 -更新- 这些年来,我可以自信地说,没有可能的方法。在纸上随意书写您的认知状态不会让您完全恢复原状。当涉及到它在任何时间点上活跃地掌握的信息时,我们的大脑比一小段摘要的价值要复杂得多。 最好的方法是避免分心,无论多么重要,除非这是生死攸关的情况。没有什么比在区域中并完成它更重要了。 如果您的工作场所过于幼稚而不能欣赏某人的“存在于该区域”,那么就该找一个新的工作场所了。YMMV虽然。有了人际关系,社交技能和清晰的口才可以造就美好的世界。

1
最好的Ruby Git库?
Ruby中最好使用哪个Git库? Git,沙砾,坚固,其他? 背景:我是TicGit-ng的当前维护者,这是一个基于git构建的分布式脱机票务系统,而且我一遍又一遍地听到并听到,Grit是我应该使用的,因为它取代了Git gem,但是似乎缺少文档或缺少功能是因为我自己和其他人未能尝试从已弃用但功能正常的Git切换到较新的Grit宝石。
21 ruby  git 

9
LINQ样式首选项[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我每天都在编程中经常使用LINQ。实际上,我很少(如果有的话)使用显式循环。但是,我发现我不再使用类似SQL的语法。我只是使用扩展功能。所以宁愿说: from x in y select datatransform where filter 我用: x.Where(c => filter).Select(c => datatransform) 您更喜欢哪种LINQ风格,团队中的其他人对此感到满意?
21 c#  coding-style  linq 


15
对高级开发人员的技术测试
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我有两难选择。我有一名高级软件开发人员职位的候选人。 这个人似乎在与他的第一次谈话中胜任,他回答了精确地提出的问题,并向我证明了他的工作。此外,他还受到一些值得信赖的同事的高度推荐。 在这种情况下,我很想跳过人力资源部门要求的技术测试,因为我需要尽快填补空缺。请分享您的经验。 编辑: 根据更好的判断,我进行了测试。在几乎所有问题上都得分最高,即使在他没有夸耀的话题上也是如此。但是,当他看到考试的问题时,我非常支持他。 因此,我们提出了要约。 谢谢大家的见解。

4
预测PHP的rand()的输出
我已经读过很多资料,PHP的rand()的输出作为PRNG是可以预测的,我之所以接受它是因为,因为我在很多地方都看过它。 我对概念验证很感兴趣:如何预测rand()的输出?通过阅读本文,我了解到随机数是从指针(种子)开始的列表中返回的数字,但是我无法想象这是如何可预测的。 有人可以合理地找出在几千个猜测中的给定时间点通过rand()生成了什么随机数吗?甚至一万个猜测?怎么样? 这是因为我看到了一个使用rand()为丢失密码的用户生成令牌的auth库,并且我认为这是一个潜在的安全漏洞。从那以后,我已经用哈希openssl_random_pseudo_bytes(),原始哈希密码和microtime 的混合哈希代替了该方法。完成此操作后,我意识到,如果我在外面看,即使知道它是rand()的md5,也不知道如何猜测该令牌。
21 security  random 

3
如何存储有生效日期的价格?
我有一个产品清单。每个都由N个提供者提供。 每个提供商都为我们提供特定日期的价格。该价格一直有效,直到该提供商决定设置新价格。在这种情况下,提供商将使用新日期给出新价格。 MySQL表标头当前看起来像: provider_id, product_id, price, date_price_effective 每隔一天,我们会汇总当天有效的产品/价格列表。对于每种产品,该列表包含具有该特定产品的提供者的排序列表。这样,我们可以从碰巧提供最佳价格的任何人那里订购某些产品。 为了获得有效的价格,我有一条SQL语句返回所有具有的行date_price_effective >= NOW()。该结果集由ruby脚本处理,该脚本进行必要的排序和过滤以获取如下所示的文件: product_id_1,provider_1,provider_3,provider8,provider_10... product_id_2,provider_3,provider_2,provider1,provider_10... 对于我们的目的来说,这很好用,但是我仍然觉得SQL表可能不是存储此类信息的最佳方法。我感到这种问题以前已经以其他更具创造性的方式解决了。 除了在SQL中,还有其他更好的方法来存储此信息吗?或者,如果使用SQL,是否有比我正在使用的方法更好的方法?

13
仅针对生产代码的Subversion /源代码控制?
我一年前毕业于计算机科学学院,现在在一家小型Web开发公司(我和另一个开发人员,加上经理,客户服务和测试人员)工作。直到我开始之前,还没有源代码控制系统。我们现在正在缓慢地开始实现SVN,但是另一位(高级)开发人员(此后称为Joe)坚持认为,应该提交给我们的SVN存储库的唯一代码是经过测试并被批准可以投入生产的代码。这意味着,在较大的项目中,可能一次甚至几周都没有提交。 这是正常的做法吗?在我看来,我们失去了很多源代码控制的好处,包括: 细粒度跟踪项目进度 跟踪出现和解决的问题 轻松回滚错误 轻松备份代码,因此如果工作站发生故障,我们也不会损失太多 更容易识别到底是什么代码运行在生产基地,假设我们盖章的版本到可执行文件所描述的在这里 轻松的协作(尽管我们不做任何团队合作;这都是个项目) 等等。 编辑:我应该强调,从历史上看,这家公司没有真正的团队合作;只有两个开发人员从事不同的项目。另外,许多项目规模很小,因此可以在几周内完成。该公司已经经营了十多年,并且在没有源代码控制的情况下相处得很好。项目通常在其估计的时间范围内完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.