Questions tagged «web-development»

Web开发是为World Wide Web或Intranet开发网站所涉及的工作的广义术语。

4
TDD-由内而外由内而外
使用TDD 构建应用程序Inside In与使用Inside Out构建应用程序有什么区别? 这些是我阅读的有关TDD和单元测试的书: 测试驱动开发:示例 测试驱动开发:实用指南:实用指南在Microsoft中开发 高质量PHP框架和应用程序的实际解决方案 。 NET xUnit测试模式:重构测试代码 单元测试的技巧:以.Net为例 ,以测试为指导的不断增长的面向对象软件中的示例 --->因为JAVA不是我的主要语言,所以这真的很难理解:) 通常,几乎所有的人都解释了TDD的基础知识和单元测试,但是很少提及构建应用程序的不同方式。 我注意到的另一件事是,这些书中的大多数(如果不是全部)在编写应用程序时都会忽略设计阶段。他们更多地专注于快速编写测试用例并让设计自行出现。 但是,我遇到了xUnit测试模式中的一段,该段讨论了人们处理TDD的方式。有2所学校在外面,在内部与内部。 遗憾的是,这本书没有对此进行详细说明。我想知道这两个案例的主要区别是什么。 什么时候应该使用它们中的每一个? 对于TDD初学者来说,哪个更容易掌握? 每种方法的缺点是什么? 有没有专门讨论该主题的材料?

19
在大型站点上服务后台任务
我们正在处理StackOverflow上一个有趣的问题。 我们有一堆小的“需要尽快完成的任务”。一个示例是更新“相关问题”列表。过去我们所做的是将这些任务附加到某些用户的页面加载中。 这从来都不是理想的,但并不是很明显。现在,SO已经超过了1,000,000个问号,那些不幸的用户开始感觉到它。 自然的解决方案是将这些任务实际推入后台。我正在考虑有两种广泛的方法可以做到这一点。 1.在IIS中作为自定义线程池/工作队列 基本上,我们启动了几个(非ThreadPool,以便不干扰IIS)线程,并使它们服务于我们将Funcs推入的某些集合。 这里的最大优点是简单性。我们不必担心会封送任何东西,也不必确保某些外部服务正常运行并做出响应。 我们还可以访问所有通用代码。 缺点是,我们不应该使用后台线程。我知道的反对意见都集中在饥饿的IIS(如果使用ThreadPool)和线程随机死亡(由于AppPool回收)的问题上。 我们已经有了现有的基础架构来使随机线程死亡成为非问题(基本上可以放弃检测任务的可能性),并且限制线程数量(并使用非ThreadPool线程)也不难。 我是否在IIS进程线程池/工作队列中缺少其他任何反对意见? 已移至StackOverflow,因为此处未真正解决。 2.作为服务 某些第三方解决方案或定制解决方案。 基本上,我们会将任务跨流程边界编组到某个服务,而不必理会它。大概我们是在某些代码中链接原始代码,或者将它们限制为原始SQL +连接字符串。 优点是这样做的“正确方法”。 缺点是我们要么只能做有限的工作,要么必须制定一些系统来使该服务与我们的代码库保持同步。我们还需要以某种方式挂钩所有监视和错误日志记录,这些都是通过“ In IIS”选项免费获得的。 服务方法还有其他好处或问题吗? 简而言之,是否存在无法预见和无法克服的问题,从而使方法1变得不可行,如果是的话,我们是否应该寻求方法2的良好第三方服务?

6
隐藏的AJAX请求伪造性能有多安全?
什么是隐藏的AJAX请求? 我注意到,旨在使用户操作立即发生的隐藏AJAX请求的使用率有所增加。我将这种类型的AJAX请求称为非阻塞。这是一个AJAX请求,用户没有意识到它正在发生,它是在后台执行的,它的操作是无声的(没有冗长的指示AJAX调用已成功完成)。目的是使操作看起来确实在尚未真正完成时立即发生。 这是非阻塞AJAX请求的示例; 用户单击电子邮件集合上的删除。这些项目会立即从其收件箱中消失,并且可以继续进行其他操作。同时,AJAX请求正在后台处理项目的删除。 用户填写新记录表格。单击保存。新项目将立即显示在列表中。用户可以继续添加新记录。 为了澄清起见,下面是阻止AJAX请求的示例; 用户单击电子邮件集合上的删除。出现沙漏光标。发出AJAX请求,并在响应时关闭沙漏光标。用户必须等待一秒钟才能完成操作。 用户填写新记录表格。单击保存。带有AJAX加载程序动画的表格会变成灰色。显示一条消息“您的数据已保存”,新记录出现在列表中。 上述两种情况之间的区别在于,非阻塞AJAX设置不提供操作执行的反馈,而阻塞AJAX设置提供。 隐藏的AJAX请求的风险 此类AJAX请求的最大风险是,当AJAX请求失败时,Web应用程序可能处于完全不同的状态。 例如,一个非阻塞示例; 用户选择一堆电子邮件。单击删除按钮。该操作似乎立即发生(项目从列表中消失)。然后,用户单击“撰写”按钮,并开始输入新电子邮件。这时JavaScript代码发现AJAX请求失败。该脚本可能会显示错误消息,但目前确实没有意义。 或者,一个阻塞的例子; 用户选择一堆电子邮件。单击删除按钮。看到一个沙漏,但是操作失败。他们收到一条错误消息,说“错误。等等等等”。它们将返回到电子邮件列表,并且仍然具有要删除的电子邮件。他们可以尝试再次删除它们。 执行非阻塞AJAX请求还存在其他技术风险。用户可以关闭浏览器,可以导航到另一个网站,并且他们可以导航到当前网络中的另一个位置,这使得任何错误响应的上下文都变得毫无意义。 那么为什么它变得如此受欢迎? Facebook,Google,Microsoft等。等等。所有这些大型域越来越多地使用非阻塞AJAX请求来使操作看起来像是立即执行的。我还看到没有保存或提交按钮的表单编辑器有所增加。离开字段或按Enter键。该值已保存。没有您的个人资料已更新消息或保存步骤。 AJAX请求不是确定的,在完成之前不应被视为成功,但是许多主要的Web应用程序正像这样运行。 这些使用非阻塞性AJAX调用来模拟响应式应用程序的网站是否冒着快速出现的代价冒着不必要的风险? 为了保持竞争力,我们所有人都应该遵循这种设计模式吗?


6
我如何学习从零到Web开发的Python?[关闭]
我正在研究用于网络开发的Python。 假设我已经具备Java(JSP / Servlets)的一些基本的Web开发经验,我已经熟悉Web设计(HTML,CSS,JS),基本的编程概念,并且我对Python完全陌生,那么我该怎么做以结构化的方式学习Python,最终将引导我使用Python和Django进行Web开发吗? 我并不急于用Python制作Web应用程序,因此我真的很想彻底学习它,以免在我对涉及Python中的Web开发的技术的了解上保持任何差距。有书籍,资源或技巧可以帮助我吗?我应该按什么顺序阅读它们? 更新: 当我说以结构化的方式学习时,我的意思是从基础开始,然后学习高级内容,而又不离开Python必须提供的一些重要细节/功能。我想知道如何将我在编程中已经知道的东西应用于Python。

5
什么时候使用PHP或ASP.NET?[关闭]
我已经在使用PHP和ASP.NET开发Web应用程序方面进行了广泛的工作,但是客户经常问我的问题之一是要继续开发php网站还是asp.net网站。 所以自然而然地想到的第一件事就是回答这样的问题: PHP是开源的,而ASP.NET是Microsoft的。 通常说完这样的话,客户的脸上就会一片空白。显然,一个是开放源代码而另一个不是开放源代码的事实并没有真正使它们困惑。这是有充分理由的,因为当我第一次听到它的时候,并没有告诉我太多。 通过与两家公司的合作,我知道在网站开发方面各有千秋。 我的问题是,到目前为止,ASP.NET和PHP有何区别? 特征 安全 可扩展性 构架 平均开发时间 我正在尝试汇总事实清单,以便与客户进行比较,以便可以在适当的开发平台上做出明智的选择。


3
在MVC设计中将业务逻辑放在哪里?
我创建了一个简单的MVC Java应用程序,该应用程序通过数据表单将记录添加到数据库中。 我的应用程序收集数据,还对其进行验证和存储。这是因为数据是从其他用户在线获取的。数据本质上大部分是数字。 现在,在要存储到数据库(SQL Server)中的数字数据上,我希望我的应用执行计算并显示结果。用户对如何完成计算不感兴趣,因此必须将其封装。用户必须只能查看简单的计算数据(例如,A列数据减去B列数据除以C列数据)。我知道如何编写存储过程,但是我想要一个三层应用程序。 我希望通过对数据库进行计算来处理作为记录放入数据库中的数据。原始数据应保持不受影响,而新数据(计算后)必须作为新实体记录存储到数据库中。 我应该在哪里编写该后台计算代码?因为它是规则和业务逻辑,所以我应该将其放在新的JavaBeans文件中吗?

7
在面试中如何评估应试者对HTML / CSS的了解?[关闭]
我正在尝试确定一些不错的面试问题,以评估人们从事Html / CSS工作的能力,但是该主题涉及面非常广泛,我不确定我可以问什么样的问题来正确评估某人的HTML / CSS知识。 在面试过程中,我可以问什么样的问题来评估候选人的HTML / CSS能力? 理想情况下,我想问几个问题,然后给他们一个真实的场景来应对。

13
让应聘者写一个链表实现是不好的面试做法吗?[关闭]
通过阅读本网站和SO,我看到了许多关于采访问题和答案的故事,这些故事都说候选人必须从头开始实现链接列表。通常,这是对候选人编程(例如编写FizzBu​​zz)进行的“技巧”练习。这个想法是,如果候选人不能做到这一点,他们就不能编程,应该几乎立即被拒绝。 但是,由于以下原因,我不禁认为这可能是一个不好的做法: 诸如C#和Python之类的现代高级语言在本地广泛使用列表。仅在特殊情况下甚至可能不明智的情况下,才需要编写自己的链表对象。 像C ++这样的低级语言具有带有迭代器/列表容器和对象的标准库。 根据前两点,编码人员可以花很多年甚至不用考虑自己实现列表(链接,双向链接等)。自大学时代以来,有些人甚至可能还没有真正看到过这种东西。 计算能力也不是几年前的因素,因此通过指针进行的效率不是(通常)曾经存在的问题。 一个简单的网络搜索,例如“链表示例”,将带来大量代码示例,这些代码示例只能被记住并吐出来,而不能真正表明申请人的真正能力。 我应该说,使用链表引发对候选人的问题解决能力/批判性思维能力的开放式提问/讨论最有可能是一种非常好的面试习惯。面试官可以通过任何方式真正看到申请人的身分,以及他们认为如何从中受益。 我认为对于在台式机或Web应用程序上工作的程序员来说,这种“无链表代码,无工作”的二进制方法有点过时了。这也可能非常有害;如果一个候选人不记得如何正确地处理列表的开头,那么他本来就是一个出色的编码人员和同事,但却迷失了自己。有什么想法吗? 编辑:有很多(好)评论表明这是一个要问的好还是坏的问题,取决于工作的上下文。我完全同意,所以让我改一下这个问题:对于许多编码工作,实现链接列表是常见的面试问题,类似于FizzBu​​zz之类的问题或编写用于计算阶乘的递归函数的问题。这个问题是否具有足够的实用性,可以普遍用于全面评估编程候选人?还是应该问一个不好的问题,除了“高级开发人员,嵌入式链表团队”职位以外?

7
引用外部JavaScript与托管我自己的副本
假设我有一个使用jQuery的网络应用。更好的做法是将必要的javascript文件与网站文件一起托管在我自己的服务器上,还是在jQuery的CDN上引用它们(例如:http : //code.jquery.com/jquery-1.7.1.min.js) ? 我可以看到双方的优点: 如果是在我的服务器上,那就少了一个外部依赖性。如果jQuery崩溃或更改了其托管结构或类似的东西,那么我的应用程序就会崩溃。但是我觉得这种情况不会经常发生。必须有许多小型站点这样做,并且jQuery团队将希望避免破坏它们。 如果是在我的服务器上,那是一个比别人少的外部参考,有人可以称之为安全问题 如果它是从外部引用的,那么我不必担心为文件提供服务的带宽(尽管我知道不是很多)。 如果从外部引用它,而我正在将该网站部署到许多需要拥有所有文件副本的服务器上,那么我要记住要复制/更新的文件要少一个。

6
与图形设计师合作的正确方法是什么?[关闭]
最近,我们与一位图形设计师(由客户安排)合作,为我们构建的Django + Bootstrap应用程序提供了外观。设计师提供了新布局的一系列静态图像,以及描述一些技术属性(字体大小,颜色,一些尺寸等)的文档。 事实证明,实现此目标非常耗时。尽管整个站点基本上都是首页,索引页和六个详细页面,但我花了至少5天时间才实现CSS和HTML更改。所以我会弯腰称这为错误的方式。 我的基本方法是: 比较静态图像和当前渲染,并注意差异。 猜猜在CSS / HTML中需要进行哪些更改 做出改变 转到步骤1。 我不了解某些特殊问题,因为该设计包括将8列更改为12列,某些图像格式错误(.png在不同的浏览器/平台组合上可能呈现不同的图像),麻烦于尝试撤消Bootstrap的样式,通常的CSS角力,以达到像素完美的渲染等效果。有时,我不得不重新组织HTML模板以获得某种行为。 正确的方法是什么?

3
如何为当今(复杂的)Web环境培训初级程序员?
目前,我们公司主要在Ruby on Rails Web服务器和大量不同的REST客户端中开发应用程序,从Java的信息亭系统到C / C ++的嵌入式设备(标准Web浏览器的接口除外)。我们需要扩展我们的团队,但由于未能找到优秀的高级程序员,我们决定付出一些努力来培训与公司一起成长的初级程序员。 我们已经给了他们一些Ruby和Rails书籍,并要求他们构建一些玩具程序,但是我现在意识到对于Web编程当前状态的学习曲线有多陡峭。 15年前,当我开始编程时,我仅使用Delphi和Source Safe,并且能够从一开始就生产可用的软件。它们都是简单的工具,很容易探究环境的内部运作。慢慢地,我开始使用第三方框架,切换到CVS,SVN,最后是Git,学习了构成当今Web的内容,例如HTTP,JavaScript,CSS,REST等。今天,即使经过多年的经验,我也不知道关于Ruby on Rails的内部工作原理与过去有关Delphi的工作一样重要,对我而言,这很重要,因此我可以将基本的学习模块与所使用的工具连接起来。 在我看来,我正在招聘的程序员将需要很长时间才能与团队整合并产生有用的东西,因为要使用单一框架(Rails)需要学习很多东西:Ruby,HTML,CSS,JavaScript, REST,测试用例,数据库访问(在框架内神奇地构建了SQL!),MVC,三种不同的程序包管理器(适用于Ubuntu,gem和bundler用于Ruby),ssh,git,Apache和Phusion Passenger进行部署等。 因为这是我第一次直接与初级程序员打交道,所以我感到迷茫。如果选择太多,什么是培训初级程序员采用当今Web开发最佳实践的最佳方法?

4
记录失败的登录尝试会泄露密码
我开始在网站上记录失败的登录尝试,并显示以下消息 Failed login attempt by qntmfred 我注意到其中一些日志看起来像 Failed login attempt by qntmfredmypassword 我猜有些人登录失败,因为他们在用户名字段中输入了用户名和密码。密码在数据库中进行了哈希处理,但是,如果数据库因某种原因受到损害,这些日志消息可能是攻击者找出密码的方法,无论有多少人最终登录失败,这种密码都是如此。 有没有更好的方法来解决这个问题?我还要担心这种可能性吗?

12
资深程序员使用了最差的编程实践
我知道说起来似乎很奇怪,但是工作中的一名程序员故意使用了一些不良的编程实践!我会解释。首先,我要说他是一个有才华的人,大部分时间他都会编写可理解的代码。 他被要求在以Java编写的Web应用程序项目上实施许可。由于它是Java,因此如果真的愿意,人们可能会黑客打开罐子并读取其中编写的类和方法的名称。他对这个问题的解决方案是,从字面上说来笨拙地调用不太明显的名称和变量,并将它们植入已经拥挤的类中,而不是生成新类。 他的理由是,如果黑客想要切换某些类以绕过许可检查(并因此获得产品的免费副本),那么如果不清楚哪种方法,他将花费更多的时间。执行这些特定任务。只有在他完成之后,我才与他面对面,这表明我们也许可以购买某种混淆器库来为我们做,同时保持良好的编程习惯。他声称没有时间或资源来寻找这种解决方案。 ..这让我陷入了困境。我是否正在寻找Java中的混淆器库并修复他的旧代码(对于重塑他的代码可能有些麻烦),还是我将其保留下来,以至于让我感到无休止?

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.