软件工程

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

3
如何将TFS映射到两个本地目录
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我正在使用TFS使用Web应用程序。每次我构建站点时,重新启动都将花费很长的时间。我想在c驱动器上有该站点的第二个映射,在那里我只会获取最新信息并每天构建一次,因此该版本始终会很快。这就像一个“只读”目录,因为我个人不会对其进行任何编辑。 如果可以的话,或者如果您有其他选择,请告诉我。

5
基类作为工厂?
我在周末写一些代码,发现自己想写一个工厂作为基类中的静态方法。 我的问题只是想知道这是否是ac#惯用语方法? 我认为可能不是因为基类具有派生类的知识。 也就是说,我不确定要获得相同结果的简单方法。整个其他工厂类(至少对我而言)似乎不需要的复杂性(?) 就像是: class Animal { public static Animal CreateAnimal(string name) { switch(name) { case "Shark": return new SeaAnimal(); break; case "Dog": return new LandAnimal(); break; default: throw new Exception("unknown animal"); } } } class LandAnimal : Animal { } class SeaAnimal : Animal { }
14 c#  class-design 


3
Github组织存储库,问题,多个开发人员和分支-最佳工作流程实践
奇怪的标题,是的,但是我认为我有足够的基础要掩饰。 我们在github上有一个带有专用存储库的组织帐户。我们要使用github的本机问题/拉动请求功能(就代码审查和功能讨论而言,拉动请求基本上正是我们想要的)。我们通过defunkt找到了工具中心,它具有一个很酷的小功能,它能够将现有问题转换为请求请求,并自动将当前分支与其关联。 我想知道是否最好的办法是让组织中的每个开发人员都分叉组织的存储库来完成其功能工作/错误修复等。这似乎是一个相当可靠的工作流程(基本上,这是github上每个开源项目所做的工作),但是我们希望确保我们可以跟踪问题并从组织存储库ONE来源提取请求。 所以我有几个问题: 在这种情况下,按开发人员分叉的方法是否合适?看来这可能有点过大。我不确定我们是否需要为每个开发人员准备一个分支,除非我们介绍没有直接推送访问权限并且需要审查其所有代码的开发人员。在这种情况下,我们只想针对那些开发人员制定这样的政策。那么,哪个更好?所有开发人员都在一个存储库中,还是每个人的叉子? 是否有人对集线器工具(特别是拉动请求功能)有经验?如果我们按开发人员分叉(甚至针对特权较低的开发人员),那么集线器的请求请求功能将对上游主存储库(组织的存储库?)的拉取请求进行操作,还是有不同的行为? 编辑 我对问题,分支和请求请求进行了一些测试,发现了这一点。如果在组织的存储库上创建问题,则将存储库从组织存储到您自己的github帐户,进行一些更改,并合并到存储库的master分支。尝试运行hub -i <issue #>时,出现错误User is not authorized to modify the issue。因此,显然,工作流程将行不通。

1
使用JavaScript商标的法律后果?
众所周知,“ JavaScript”是Oracle的商标(以前是Sun的商标,以前是Netscape的商标)。 但是,使用JavaScript商标的其他人似乎没有问题。Google将其用于V8,Mozilla将其用于SpiderMonkey以及其他各种地方,等等。Mozilla是似乎唯一尝试将商标归其所有者(本页底部)的人。在本文中,它被错误地归因于Sun而不是Oracle。 长期以来,Microsoft使用“ JScript”作为其ECMAScript实现的名称,而不是“ JavaScript”,以免侵犯商标。最近(我不确定何时),Microsoft似乎已从“ JScript”名称切换为“ JavaScript”。 根据版本历史,我的理解是他们编写了一个新的ECMAScript实现并将其命名为“ JavaScript”,而将旧的命名为“ JScript”(而不是将“ JScript”重命名为“ JavaScript”)。 我的问题是:既然JavaScript是商标,那么在未经许可的情况下将其与产品或技术名称(例如“ Microsoft JavaScript”)结合使用是否侵权?如果是这样,我在哪里可以找到与Oracle / Sun / Netscape的协议记录,允许第三方使用该商标?我认为这些文件会在某个地方公开列出,但我不知道在哪里可以找到它们。最后,如果商标再次易手,先前达成的协议是否仍然有效,还是需要与当前商标持有者重新伪造? 我问的原因是因为我想知道是否可以在未经显式许可的情况下在产品标题(例如JavaScript库)中使用“ JavaScript”一词,以及是否需要提供免责声明以表明JavaScript是Oracle的商标。 。

5
技术面试和程序员能力
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我要说的本质上可能有点争议,但是今天我很沮丧-所以我会问这个。 我刚刚接受了一家大型技术公司的实习职位面试,并被问到了很多典型的面向算法的面试问题。现在,考虑到我的背景,我认为自己在算法方面很强(我在研究生级别的算法上也取得了不错的成绩-涉及NP完全性和超越(近似和随机算法)的东西,但是不幸的是,我未能通过面试。想想一种在大约10分钟内解决字符串问题的非常有效的方法,面试结束后,我喝了一杯水,吃了一根香蕉,放松了一会儿,然后再次尝试该问题。我可以在5分钟内到达,最糟糕的是-我确实在那条路上,面试官确实暗示了这一点,但是压力太大让我无法接受。我的整个经历使我开始思考技术面试。我有一些问题,我想在这个论坛上提出他们- 真的可以在半小时内判断某人的技术能力吗?老实说 还是只是掷骰子? 技术面试问题是否衡量解决问题的能力?这点很值得商??作为一名博士生,我知道数学问题解决涉及解决以前从未听说过的问题。另一方面,一旦有人事先知道解决方案或解决了问题,诸如-按排序顺序合并两个链表,或在第k级打印二叉树的所有元素之类的问题就变成了“纯粹的练习”? 在这些面试中脱颖而出的人会继续成为优秀的程序员吗?他们是否继续设计时尚的游戏引擎,图形库,编写快速的fork-join框架?有没有证据表明在技术面试中表现出色与实际编程能力之间存在正相关关系?还是这些采访更适合于寻找“完成工作”类型的人(Spolsky)? 我敢打赌,许多发表创新思想的学者-ICML,VLDB,Mobicom-都会使这些采访失败。但我可以向您保证,他们是您将在这个星球上找到的最聪明的人。 我主要在学术界(研究生)学习-因此,我将不胜感激栅栏另一侧的人提供的感知能力。实际进行这些采访的人是谁? [大家好。感谢您的所有体贴和体贴的回答。由于我不想再问其他问题,因此请您为我回答这个问题。 假设候选人X拥有良好的公开作品集,并且他在某个已知的开源项目中做出了贡献-您实际上可以去验证他的补丁,验证他已经关闭的错误并查看他创建的设计。在那种情况下,问题是您愿意给他的公开/可验证的工作以多大的权重,以及他在不到15分钟的时间内回答一些非常人为的二叉树面试问题的能力如何?]
14 interview 

5
提出词法分析器标记
我正在为我创建的标记语言编写一个解析器(用python编写,但这与这个问题并不相关-实际上,如果这似乎是一个坏主意,我希望有一个更好的建议) 。 我在这里了解有关解析器的信息:http : //www.ferg.org/parsing/index.html,并且我正在编写词法分析器,如果我理解正确的话,应将内容拆分为标记。我无法理解的是我应该使用哪种令牌类型或如何创建它们。例如,我链接到的示例中的令牌类型为: 串 识别码 数 白空间 评论 紧急行动 许多符号,例如{和(算作自己的标记类型 我遇到的问题是,更通用的令牌类型对我来说似乎有些武断。例如,为什么要STRING自己使用单独的令牌类型,而不要使用IDENTIFIER。字符串可以表示为STRING_START +(IDENTIFIER | WHITESPACE)+ STRING_START。 这也可能与我的语言困难有关。例如,变量声明编写为,{var-name var value}并使用进行部署{var-name}。看起来'{'并且'}'应该是它们自己的令牌,但是VAR_NAME和VAR_VALUE是否符合令牌类型,或者这两者都属于IDENTIFIER吗?而且,VAR_VALUE实际上可以包含空格。after后面的空格var-name用于表示声明中值的开始。其他任何空格都是该值的一部分。这个空格会成为自己的令牌吗?在这种情况下,空白仅具有该含义。而且,{可能不是变量声明的开始..它取决于上下文(再次有该词!)。 {:开始一个名称声明,然后{ 甚至可以用作某些价值的一部分。 我的语言与Python类似,因为代码块是使用缩进创建的。我正在阅读有关Python如何使用词法分析器创建INDENT和DEDENT令牌的信息(它们或多或少的作用{以及}在许多其他语言中的作用)。Python声称是无上下文的,这对我来说意味着,至少词法分析器在创建令牌时不必关心它在流中的位置。Python的词法分析器如何在不知道先前字符的情况下就知道要构建特定长度的INDENT令牌(例如,上一行是换行符,因此开始为INDENT创建空间)?我问,因为我也需要知道这一点。 我的最后一个问题是最愚蠢的问题:为什么一个词法分析器甚至是必要的?在我看来,解析器可以逐个字符地找出它在哪里以及它期望什么。词法分析器是否增加了简单性的好处?
14 python  parsing  lexer 

4
在C#中使用动态类型的缺点
我最近一直在研究C#中的动态类型。通过一些示例,我理解代码一旦编译,就无需再次重新编译,而是可以直接执行。 我觉得关键字提供的灵活性实际上可以随意更改数据类型是一个很大的优势。 题, 除了错误的动态方法调用之外,是否存在任何其他特定缺陷,这些错误会引发开发人员在开始执行之前必须知道的运行时异常。

5
如果无法使用事务,如何在企业环境中有效地使用Web服务?
我正在工作的地方正在尝试建立一些基本规则,而我们现在正在争论的是本地库与Web服务之间的代码重用。Web服务似乎是大多数公司中的热门选择,这就是大多数开发人员都倾向于的。 我只是看不到如何有效地将Web服务用于任何严肃的工作。如果无法使用事务,如何安全地执行多个服务调用? 假设我有一个Cron工作,它从我们的数据库中获取满足一定条件的客户,这些客户需要通知他们。将向他们发送传真,电子邮件并创建票证以在内部跟踪问题。在for循环中,每个客户将发生3个不同的服务调用。 如果那里的任何地方发生错误,则可能会例如将传真和电子邮件发送给客户,但不会创建故障单。或更糟糕的是,此Cron作业可能包含一个错误,导致每次都在同一时间失败,并反复向同一位客户发送电子邮件。如果所有库都是本地的,则所有内容都可以包装在事务中,而不会发生任何事情。但是在此示例中,我们使用的是Web服务。 请注意,电子邮件和传真方法实际上将数据插入到数据库支持的队列表中,而这些表又由单独的cron作业进程处理。因此,如果需要,可以免费中止对“发送电子邮件”和“发送传真”服务方法的调用。 一种选择是将整个代码块放在Web服务本身中,以便Web服务本身将在事务中调用电子邮件,传真和票证创建方法。但是随后我们创建了一个仅用于事务处理的Web服务方法。没有确凿的理由,我们实际上需要从该cron脚本之外的任何地方调用此方法。 您通常将如何处理此方法?

4
内部代码是否应与组织中的非开发人员共享?
在我工作的地方,我们有很多开发人员,并且有大量代码在运行我们的员工和客户使用的专有应用程序。 我们也有很多聪明的支持人员,他们希望了解我们系统的内部工作原理,以便更好地为客户提供支持,甚至不时提交补丁。 我们是否应该开放我们的代码以供非开发人员阅读?做出此决定时,应考虑哪些因素?我以各种方式遇到了很多论点和反论点,并希望根据他人的经验以及容易理解的风险来做出决定。 迄今为止的一些争论: VCS中的密码是公开的(解决方案:删除密码-不应从那里开始) 代码对白盒安全攻击开放(反参数:这只能阻止诚实/懒惰的攻击者) 支持人员可以询问开发人员“工作”的方式(计数器:教男人钓鱼等) 是否有人向其组织的员工开放代码?有什么问题吗?

7
为什么SQL被称为基于关系/功能的语言?
我们了解到,大多数语言都被分类为“基于关系的”或“高级”这两种语言。我以前从未使用过SQL,但是通过阅读其语法,它似乎更像是命令式/高级语法,而不是基于函数/关系的(Lisp,Haskell)? 或者可能是我对我的教授的讲义的解释是错误的...但是它确实将SQL列为基于关系的语言之一(与高级语言相对),并且将基于关系的语言等同于功能性的语言...或者也许是我不明白为什么SQL处理关系数据库这一事实使函数语言成为应实现的方式?(为什么在对编程语言进行分类时,“基于关系的”等同于“功能的”?) 谢谢 :)

13
面试中应使用哪些样本工作来源?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我的一位朋友被解雇了。当我与他交谈时,他说他们没有让他复制他所做的任何事情。当他在面试中被问到如何向其他雇主展示他的工作时,被告知他将需要做一些解释。 作为程序员,我们是否应该被允许从以前的工作人员那里取样过去的工作?我们应该在采访中展示哪些代码来源?当几乎每个雇主都要求提供样品工作时,我们如何证明可以发送的样品是合理的?在整个工作期间维护下班后的项目是我们的责任,以便我们拥有可以合法地向下一位雇主展示的代码吗?
14 interview 

3
招聘过程中编程挑战的效率如何?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我认为我们公司可以创造挑战,以寻找符合以下条件的软件工程师候选人: 擅长解决问题,不擅长招募人员。 更有可能害怕参加我们的职业博览会。 他们在当前的编程工作中使用率较低的可能性更大,但内向而又无能为力。 有关示例,请参见本文,其中讨论Facebook使用Piet在图像中隐藏电子邮件地址。 我只是找不到关于此方法是否有效的任何研究或硬数据。
14 skills 

4
在哪里可以获取各种示例文本?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我正在尝试收集有关在软件项目中使用的英语字符或单词序列的统计信息。 在哪里可以获得大量(涵盖多个GB的)涵盖不同主题的英文纯文本?

6
我如何理解javascript框架的爆炸式增长?我应该全部学习吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 对于仍在以常规方式进行Web开发(服务器端为PHP / J2EE / Struts,客户端端为HTML / CSS / Javascript)的初学者Web开发人员,最近的Trello技术堆栈博客文章使我大失所望。 我不由得对本文中提到的新技术和框架列表感到不知所措,尤其是Javascript框架的普遍存在。 我的问题是,这是网络开发的未来吗?是否有任何文章,网站或资源可以帮助我理解这些新框架在现代Web应用程序中的适合位置?

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.