软件工程

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

4
零知识代码托管?[关闭]
鉴于最近有关政府对在线服务提供商存储的数据进行广泛监视的启示,零知识服务现在非常流行。 零知识服务是其中所有数据都以未存储在服务器上的密钥加密存储的服务。加密和解密完全在客户端进行,并且服务器永远不会看到纯文本数据或密钥。结果,服务提供商无法解密,也无法将数据提供给第三方。 举个例子:SpiderOak可以被视为Dropbox的零知识版本。 作为程序员,我们高度依赖于我们最敏感的数据(我们的代码),并将它们信任特定种类的在线服务提供商:代码托管提供商(如Bitbucket,Assembla等)。我当然在这里谈论私有存储库-零知识的概念对于公共存储库没有意义。 我的问题是: 创建零知识代码托管服务是否存在任何技术障碍?例如,关于流行的版本控制系统(例如SVN,Mercurial或Git)使用的网络协议是否存在某些问题,这将使(或不可能)实现一种方案,其中使用服务器不知道的密钥? 当今是否存在零知识代码托管服务?

3
在属性设置器中添加逻辑是否被认为是不好的做法?
我跳入一个项目,发现其他开发人员在综合属性的设置器中添加了很多逻辑。我了解这是如何工作的,但我认为这很难理解程序的流程。在阅读代码时,每当看到时self.something = whatever,我总是检查somethingsetter是否被覆盖。 您对此主题有何看法?您认为这是体系结构不良或解决方案完善的标志吗? 如果您有相关的链接/源,我将很高兴阅读更多有关此的内容,很难获得良好的Google搜索结果,因此我也决定在此询问。 感谢您提供任何答案,并请注意,如果您没有看到标签,我在说的是目标C(即使我猜这不是特定于语言的问题)。

5
一个团队进行设计,另一个团队进行编码
我将参与一个项目,该项目的所有软件设计均由本地团队进行,然后将这些设计发送给离岸团队进行编码。 这是我第一次面对具有这种特征的项目,这对我来说有点奇怪:经理们希望我们制定非常详细的设计文件,因此离岸团队没有错误的余地。从我的角度来看,它们使我们可以在纸上进行编码,而我们可以在IDE中进行编码。 所以,我的问题是这种方法是好的还是正确的?我们的软件流程要在项目中取得成功,必须考虑哪些主要考虑因素?

8
使用过时的技术进行开发有什么优势?[关闭]
一点背景: 我在一家大公司工作,使用Windows XP并在VB6 / VB.Net中编码Winforms,在VB.Net中编码一些WebForms(95%维护代码)。我有一个4:3 19英寸的屏幕。Windows即将推出更现代的版本,它的声音也没有任何新的领域! 当我加入公司时,没有人告诉我任何这些信息,我误以为我会使用更多的最新技术和框架。 我在以前的工作中拥有更多的最新经验,包括使用更现代的框架和其他编程语言,并且在与其他公司的开发人员朋友见面时,我所听到的是他们如何使用最新的ASP MVC框架,或者Vagrant / Ruby on Rails / etc,我的眼睛越来越绿! 我可以很快地完成另一份工作,但我觉得我应该再给这个机会。 问题: 我试图说服自己,我目前的工作还不错。那么,这种角色有什么优势呢?使用过时的技术是否有优势?也许我不愿意使用一些更现代的技术?还是这是职业消亡的地方,我应该在仍然有灵魂的时候走出去?
28 skills  legacy 


11
当我测试C中移位和乘法之间的时间差异时,没有差异。为什么?
有人告诉我,二进制移位比乘以2 ^ k要有效得多。因此,我想尝试一下,并使用以下代码对此进行了测试: #include <time.h> #include <stdio.h> int main() { clock_t launch = clock(); int test = 0x01; int runs; //simple loop that oscillates between int 1 and int 2 for (runs = 0; runs < 100000000; runs++) { // I first compiled + ran it a few times with …

1
帧指针说明
在MIPS程序集中,有一个寄存器用于堆栈指针,另一个寄存器用于帧指针。什么是帧指针,其目的是什么?它与堆栈指针有何不同?
28 assembly  stack 

10
大学级和企业级编程之间有什么区别?[关闭]
我刚刚完成了IT领域的学士学位课程。我对编码非常感兴趣,并且真的想成为一名专业人士。现在,除了大学课程外,我还自己学习编程(C#)(大学级编程太基础了)。现在我觉得我需要更多时间来接近专业程序员。但是我的一些前辈说,公司世界编程与书呆子编程有很大不同,因此浪费时间没有任何意义。(他们本身不是程序员,这可能是他们听到的)。 通过提高C#的水平会受益吗?还是由于中等水平足以打破面试,对公司而言,较高的水平并不重要,因为它们纯粹依靠培训来教授企业环境中的工作方式,而学到更多对我没有多大帮助?请问是否有一些专业的程序员可以提供帮助,我保证这是每个对编程感兴趣的学生都想在我的阶段提出的问题。“您实际上如何从编程领域的学习者变成专业人士?” -不断学习直到您变得完美为止,或者一旦涵盖了基础知识就必须加入一家公司?

6
是否有一种设计模式可以消除检查标志的需要?
我将在数据库中保存一些字符串有效负载。我有两个全局配置: 加密 压缩 可以使用配置启用或禁用这些功能,方法是仅启用其中一个,两个都启用或两个都禁用。 我当前的实现是这样的: if (encryptionEnable && !compressEnable) { encrypt(data); } else if (!encryptionEnable && compressEnable) { compress(data); } else if (encryptionEnable && compressEnable) { encrypt(compress(data)); } else { data; } 我在考虑装饰器模式。是正确的选择,还是有更好的选择?


4
编程语言如何定义函数?
编程语言如何定义和保存函数/方法?我正在用Ruby创建一种解释型编程语言,并且试图弄清楚如何实现函数声明。 我的第一个想法是将声明的内容保存在地图中。例如,如果我做了类似的事情 def a() { callSomething(); x += 5; } 然后,我要在地图中添加一个条目: { 'a' => 'callSomething(); x += 5;' } 这样做的问题是它将变得递归,因为我必须parse在字符串上调用我的方法,该方法在parse遇到字符串时会再次调用doSomething,然后最终将耗尽堆栈空间。 那么,解释型语言如何处理呢?

3
为什么Java布尔原始类型名称不是'bool'?
Java有 int 和 Integer boolean 和 Boolean 这似乎有点不一致,为什么不 bool与Boolean使用已建立的较短名称作为原始类型? 要么 integer与Integer保持类型名称一致? 我认为 C ++决定bool比Java决定使用很多时间boolean,也许还有一些(当时是非标准的)C扩展,所以对于来说,C会有历史优先权bool。我注意到我经常本能地一开始尝试使用bool(现代编辑器很快就发现了这一点,而无需进行额外的编译),因此很高兴知道当前事务状态的基本原理。 如果有人记得故事的一部分,甚至可以找到并链接到网络上相关的历史讨论,那将是很棒的。
28 java  history  boolean 

4
如何证明从Java 6迁移到Java 7的合理性?
我们正在从Java 6迁移到Java 7。该项目落后于进度,有被放弃的风险,在这种情况下,它将继续使用Java 6。 Java 7有哪些具体改进,我们可以与我们的经理一起使用,并说服他使用JDK 7是重要的?寻找我可以在Oracle Java 7(相对于Java 6)中突出显示的错误修复程序。就我而言,在安全性,性能,Java 2D /打印等方面的修复将更加畅销。例如,编译器修复不会有太大用处。 [我正在浏览许多站点,例如Oracle采用指南,错误数据库,有关Stack Overflow的问题 ]。 更新:感谢您的回答。我们将更新重新计划为下一个版本。我们最接近的是安全性。接受投票最高的答案。
28 java  migration 

6
唯一的开发人员离开后,维护Web应用程序
我患有晚期疾病,极有可能在今年年底不再出现在这个世界上。 我已经开发了一个Web应用程序,该应用程序广泛用于我的家人的业务(一家小型美发店)。我的家庭成员没有编程技能和系统管理技能。我既没有这些技能的好朋友。 该业务每年的净利润最多为1万。实际上,营业利润只能支付其3名员工(父亲,母亲和妹妹)的薪水,而这些薪水很低,并且每年由于金融危机而减少。实际上,我不是家族企业的雇员,我在一家常规软件开发公司工作。我在业余时间开发了该应用程序,以帮助他们。 到目前为止,我不在乎其他企业是否也在使用我的应用程序,甚至该应用程序本身也失去了我的所有权。我只希望家人的业务可以继续使用它,这意味着如果出现问题,将为系统管理提供支持,并开发新功能/错误。 我想问一下您是否可以给我您认为可以采取的措施,以尽可能保证应用程序的连续性。 该应用程序的技术是: 平台:Tomcat(Java),MySQL和Linux 框架:主要是JPA和ZK

3
“诱骗”功能或故意错误的术语是什么?[关闭]
我忘记了programming语编程术语。这是故意的错误或诱骗功能,可分散注意力。用法示例,“今天质量检查人员,嘿,鲍勃(QA)正在审查。将a $THING放到模块中,这样他们实际上很难找到问题”。 可以否定地使用它,因为它有一个非常明显的故意缺陷,可发现它是对实际问题的干扰。 这也可以肯定地使用。就像您在搜寻灾区时总是让救援犬“找到”受害者一样。它也可以用来验证质量检查流程是否确实存在缺陷。 我要寻找的术语是什么?

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.