软件工程

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

2
JavaScript中辅助函数的推荐方法是什么?
推荐的辅助功能方法是什么?我想选择一种技术,然后运行它来创建我的新“类”。 这是我所考虑的设计选项: 选项1:外部范围内的Helper函数,使用实例的上下文进行调用 function createPane (pane) { // logic to create pane var proto = Object.create(this.paneList); $.extend(paneProto, pane); return paneProto; } Panes.prototype.initialize = function (panes) { var _this = this; _.each(panes, function () { _this.panes.push(createPane.call(_this, this)); }); } 优点:简单的语法。createPane未在实例上发布。 缺点: createPane在其他范围内均可访问。 选项2:关闭时的Helper函数,使用实例的上下文进行调用 Panes.prototype.initialize = (function () { function createPane (pane) …

5
为什么HTTP标头不包含设备分辨率,像素密度等?
我目前正在使用CSS媒体查询开发一个响应式网站。如果服务器为每个视口返回不同的HTML / CSS,将会更加容易。 我想知道为什么客户端在请求HTML文件时不能包含其视口信息。使用Accept-Language标头以正确的语言返回网站时,这种行为已经很普遍。
10 http 

2
如何避免未经授权使用API​​?
我必须设计一个“小部件”,一个脚本,合作伙伴将其嵌入到他们的网站中以显示一些UI并调用我们的API。 基本上,它将根据API调用中提供的一些ID在这些网站上显示我们的数据。我们要避免的是有人滥用API并使用它来刮擦我们的整个目录。 嵌入脚本的每个合作伙伴都将获得一个公开密钥,在调用API时必须提供该公开密钥。一个想法是让他们在加载脚本时附加此密钥,例如: <script src="//initrode.com/widget/loader.js?key=xxxx"></script> 这样,对脚本的请求可用于注册密钥/源IP对,并仅在密钥/ IP对与已注册的密钥/源IP对匹配(生命周期有限且每天的请求受到限制)时才应答后续的API调用。 我不确定这是个好主意,因为通过混淆显然是安全的(有人重新加载脚本会完全绕过它);但我没有其他限制访问的方法。我不能为每个用户提供唯一的密钥,只能给合作伙伴提供。我不能使用私钥系统,因为任何人都可以使用所有代码。它基本上是限制对公共API的访问,即在定义上是矛盾的。 您如何看待该解决方案,您将如何应对这些约束?

3
当可以接受较大的延迟(小时)时进行“推送与轮询”
如今看来,轮询是一种不好的做法,而在开发需要不断从远程服务器接收数据的移动应用程序时,推送是必须走的路。 所有主要的移动商店都提供其推送通知服务的版本: 苹果推送通知服务 适用于Android的Google Cloud Messaging Microsoft推送通知服务 但是我想知道这个假设在多大程度上是正确的。我的意思是,如果我有一个应用程序一天只轮询几次远程服务器,并且不需要立即向其发送“通知”(可以接受较大的延迟),那么这将是一个不错的决定轮询而不是推送数据? 提前致谢!
10 mobile  push  polling 


1
为什么FRACTRAN完成巡回演出?
我试图用Google进行解释,但是大多数链接只说“ FRACTRAN正在完成。例如,让我们看一下乘法”。 我记得在xkcd论坛上看到一个帖子说FRACTRAN帮助发布者了解了图灵完整性。我正在寻找一个直观的解释,说明为什么这个esolang是图灵完整的,因为从语言机制上看不是很明显。

2
前端用后端语言编写![关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 6年前关闭。 根据我在Web开发中的经验,我知道PHP,Java,Python等语言用于后端开发(在服务器上运行的软件),对于前端语言,则使用JS / HTML / CSS。 但是我看到许多公司都说,例如,PHP用于前端开发,而python用于后端。 这是否意味着PHP是通过REST,RPC等调用使用其他语言编写的其他服务的前端?

1
在C#5.0中模糊异步和常规函数之间的界限
最近,我似乎对C#5.0 的惊人异步等待模式不够了解。我这辈子去哪了 我对简单的语法感到非常兴奋,但是我遇到了一个小困难。我的问题是异步函数的声明与常规函数完全不同。由于只有异步函数可以等待其他异步函数,因此当我尝试将一些旧的阻止代码移植到异步时,我产生了必须转换的函数的多米诺骨牌效应。 人们一直称其为僵尸大批出没。当异步在您的代码中被咬时,它将不断变得越来越大。移植过程并不困难,只需将其async放入声明中并用来包装返回值Task<>。但是在移植旧的同步代码时,一遍又一遍地执行此操作很烦人。 在我看来,如果两种函数类型(异步和普通旧同步)具有完全相同的语法,那将是自然得多的。如果是这种情况,移植将花费零的精力,我可以在两种形式之间轻松切换。 我认为如果遵循以下规则,这可能会起作用: 异步函数不再需要async声明。他们的返回类型不必包装Task<>。编译器将在编译期间自行识别异步函数,并根据需要自动执行Task <>包装。 不再需要对异步函数进行“一劳永逸”的调用。如果要调用异步函数,则需要等待它。无论如何,我几乎都不用一劳永逸,疯狂的比赛条件或僵局的所有例子似乎总是基于它们。我认为他们与我们试图利用的同步思维过于混乱和“脱节”。 如果您真的不能一劳永逸,那将有特殊的语法。无论如何,它不会成为我正在谈论的简单统一语法的一部分。 您需要表示异步调用的唯一关键字是await。如果您正在等待,则该调用是异步的。如果您不这样做,则该呼叫是普通的老式同步呼叫(请记住,我们不再具有即兴即弃的功能)。 编译器将自动识别异步函数(因为它们不再有特殊的声明了)。规则4使得此操作非常简单-如果函数await内部有调用,则它是异步的。 能行吗?还是我错过了什么?这种统一的语法更加流畅,可以完全解决僵尸的侵扰。 一些例子: // assume this is an async function (has await calls inside) int CalcRemoteBalanceAsync() { ... } // assume this is a regular sync function (has no await calls inside) int CalcRemoteBalance() { ... } // now …

6
超链接的外部化源代码文档
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 源代码为什么我们仍然嵌入自然语言描述(即,原因为何一行代码编写)的源代码中,而不是作为一个单独的文件? 鉴于为现代开发环境(高分辨率监视器,双监视器等)提供了广阔的房地产,IDE可以提供半锁式面板,其中源代码在视觉上与-而是与-内在链接其相应的注释。例如,开发人员可以使用超链接的标记语言(链接到其他软件要求)编写源代码注释,这将同时防止文档造成源代码混乱。 哪些缺点会抑制这种软件开发机制? 一个有助于澄清问题的模型: 当光标位于源代码中的特定行(上面以蓝色背景显示)时,与光标所在行相对应的文档将突出显示(即,与其他详细信息区分开)。正如问题中指出的那样,当光标在源代码中跳转时,文档将与源代码保持同步。热键可以在“文档模式”和“开发模式”之间切换。 潜在优势包括: 一次在屏幕上显示更多源代码和更多文档 能够独立于源代码编辑文档(无论语言如何?) 并行编写文档和源代码,而不会发生合并冲突 具有高级文本格式的实时超链接文档 准实时机器翻译成不同的自然语言 每行代码都可以清楚地链接到任务,业务需求等。 文档可能会在每行代码编写时自动加盖时间戳(指标) 动态包含架构图,解释关系的图像等。 单一来源的文档(例如,用于用户手册的标签代码段)。 注意: 文档窗口可以折叠 查看或比较源文件的工作流程不会受到影响 实施过程如何进行是一个细节。该文档可能是: 保存在源文件的末尾; 按约定(filename.c,filename.c.doc)分为两个文件;要么 完全由数据库驱动 通过超链接文档,我的意思是链接到外部源(例如StackOverflow或Wikipedia)和内部文档(即子域上的Wiki,可以交叉引用业务需求文档)和其他源文件(类似于JavaDocs)。 相关主题:业界对文档的厌恶是什么?

2
如Head First设计模式的Duck示例所示,上下文继承与策略模式无关吗?
在Head First Design Patterns中,它通过使用Duck示例讲授策略模式,其中可以在运行时为Duck的不同子类分配特定的行为。根据我的理解,策略模式的目的是在运行时更改单个对象的行为,但是他们使用Duck的继承来更改各种Duck的行为。 关联? Duck的上下文继承是否与策略模式无关,或者是改变Duck类型并改变其行为也是采用策略模式的充分理由吗?您需要同时改变两者的情况是否构成使用策略模式的充分理由?他们为何将其作为策略模式示例? 一个简单的例子 我是否可以仅使用Duck类(没有派生类)来进一步简化此示例?然后,在实现一个鸭子对象时,可以根据不依赖于其自身对象类型的某些情况为其分配不同的行为。例如:FlyBehavior根据天气而变化或QuackBehavior根据一天中的时间或鸭子的饥饿程度而变化。我意识到这将解决与书中提出的问题不同的问题,但是我正在寻找的是可以依靠的相关策略模式示例。 我上面的例子也会构成战略模式吗? 编辑: 我成功找到了两个更简单的策略模式示例,它们更严格地只是没有上下文继承的策略模式:Hunter.java和Solver.py。

4
后端开发者被用户故事所压倒
我计划将后端开发垂直切入用户故事。但是我们团队的一个后端家伙开始抱怨这使他们的工作变得无形。 我的答案是 在冲刺计划和审查会议上,我们在利益相关者面前讨论了后端任务,以便使其可见,并且 在项目过程中保持高质量将导致启动速度比其他团队慢,但是在项目过程中我们的速度将保持稳定。利益相关者非常清楚地看到速度。 他仍然坚持有这样的故事:“作为开发人员,我需要一个域层,以便我可以封装业务逻辑。” 在污染团队之前,我该如何解决? 问题的根源在于,我们的管理人员系统地将后端工作视为无形的工作,并召集了受支持的开发人员矿工或其他贬义术语。
10 agile  scrum  team  user-story 

4
在MVC中,在控制器类中具有私有的非动作功能是否被认为是一种好习惯?
有时,控制器类中的动作函数可能变得庞大而令人讨厌,使用许多行代码可以简单地控制从模型到视图的数据流。在某些时候,这些巨大的功能完全无法跟踪良好代码的基本原理,即仅做一件事,体积小,可读性强且易于管理等。 将这些巨大的动作函数分解为控制器类中较小的私有函数是否被视为一种好习惯,还是这种优化的需求意味着我们宁愿将它们添加到模型中? 我赞成在控制器中将较小的函数设为私有,以便它们与操作相关,但我听到有人争辩说,在模型变得庞大而笨拙时,控制器最好应该是简单的。只是想知道哪种方法是最可取的。
10 php  code-quality  mvc 

2
在REST API中自定义使用Authorization标头
我正在构建一个REST api,其中使用客户端证书对客户端进行身份验证。在这种情况下,客户端不是单个用户,而是某种表示层。使用自定义方法对用户进行身份验证,表示层有责任确保此方法正确完成(注意:我知道这不是正确的方法,但api不公开)。 我想传递每个请求的用户名(而不是密码),但是我不确定在哪里执行此操作。使用Authorization标头是个好主意吗?

1
doxygen是否支持HTML输出模板?
我已经为记录了代码doxygen,但是我不希望它提供默认的HTML。我知道我可以通过提供自定义CSS,页眉,页脚等(如GNOME一样)以及如何向文件中添加通用PHP代码并将其保存为来对其进行自定义.php,但这并不是我真正想要的。 我想要的是像MSDN这样的输出。我真的无法形容。我的问题是,使用doxygen和模板之类的东西是否有可能,还是我必须输出XML并用另一个程序解析(我不介意编写)?

4
术语:真正删除与设置IsDeleted(“软删除”)标志
我有一个普通用户可以删除记录的站点,发生的事情是IsDeleted设置了一个标志。在管理页面上,特权用户可以删除记录,而实际的SQL会DELETE永久删除这些记录。出于明显的原因,区别很重要,我想使用一致的术语来指代一种删除形式与另一种删除形式。我一直在玩的话Remove,Delete,Discard和可能Recycle,和Archive。 我的问题是:是否存在区分这两种行为的标准面向用户的术语?
10 terminology  data 

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.