我经常发现自己正在与过度工程作斗争 - 负责设计软件的人提出了一种过于复杂的架构.
拥有用户永远不会知道的所有深奥功能,并且当你正在做一些所有杂志文章告诉你的东西是最新的,很酷的东西时,这一切都很好,但我们会花钱我们工作时间的一半是在这个纪念碑上我们的聪明,而不是,你知道,我们的用户需要的实际产品和高层管理人员希望在合理或至少有限的时间范围内完成.
当你开始没时间的时候,也就是说,如果你有机会,你可能只需要回到更简单的解决方案.
我们都听过这句话:Keep It Simple,Stupid™.
你如何在你的团队中过度复杂地战斗?
我最近不得不反复使用的一个例子是,当决定进入完全非规范化的数据库设计而不是RDBMS时."因为它更快!" 完全非规范化的数据库确实难以正确,并且仅适用于Flickr或ebay等真正专业的数据问题,而且相对于开发的其他部分而言,开发人员的时间可能非常昂贵.
Eclipse + Subversive插件
在提交与SVN不同步的目录时,会弹出一条消息:
Merge conflict during commit
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating
Run Code Online (Sandbox Code Playgroud)
试图从Eclipse Navigator视图更新整个项目(右键单击>刷新或F5),问题仍然存在.
在这种情况下有什么可以做的吗?
我正在努力获得一种可靠的方法来捕获Visual Studio(2005或2008)下的浮点异常.默认情况下,在visual studio下,浮点异常没有被捕获,并且它们很难捕获(主要是因为它们中的大多数是硬件信号,需要转换为异常)
这是我做的:
- 打开SEH异常处理
(属性/代码生成/启用C++异常:是的SEH异常)
- 使用_controlfp激活浮点异常
我现在抓住异常(如下面的例子中所示,简单的除零除外).但是,一旦我捕获到这个异常,似乎程序被无可挽回地破坏了(因为简单的float初始化,以及std :: cout将不起作用!).
我已经构建了一个简单的演示程序,显示了这种相当奇怪的行为.
注意:此行为已在多台计算机上重现.
#include "stdafx.h"
#include <math.h>
#include <float.h>
#include <iostream>
using namespace std;
//cf http://www.fortran-2000.com/ArnaudRecipes/CompilerTricks.html#x86_FP
//cf also the "Numerical Recipes" book, which gives the same advice
//on how to activate fp exceptions
void TurnOnFloatingExceptions()
{
unsigned int cw;
// Note : same result with controlfp
cw = _control87(0,0) & MCW_EM;
cw &= ~(_EM_INVALID|_EM_ZERODIVIDE|_EM_OVERFLOW);
_control87(cw,MCW_EM);
}
//Simple check to ensure that floating points math are still working
void CheckFloats() …Run Code Online (Sandbox Code Playgroud) 我是Oracle的新手.如何设置此变量并显示其值?
declare nextId number;
begin
select HIBERNATE_SEQUENCE.nextval into nextId from dual;
select nextId from dual;
end;
Run Code Online (Sandbox Code Playgroud)
它抱怨在这个SELECT语句中需要一个INTO子句.
我正在尝试对包含外部的文件夹进行稀疏检查,但没有任何外部检查.这个问题似乎表明这种行为可能是设计的,或者至少是不清楚行为应该是什么.从我的观点来看,显而易见的行为是外部被视为与任何其他目录一样,并且遵循相同的稀疏结账规则进行检查.
有没有办法解决这个问题,除了手动检查外部?
#include<stdio.h>
void function(int);
int main()
{
int x;
printf("Enter x:");
scanf("%d", &x);
function(x);
return 0;
}
void function(int x)
{
float fx;
fx=10/x;
if(10 is divided by zero)// I dont know what to put here please help
printf("division by zero is not allowed");
else
printf("f(x) is: %.5f",fx);
}
Run Code Online (Sandbox Code Playgroud) 如果我想检查正浮点数A是否小于另一个正浮点数B的倒数平方(在C99中),如果B非常小,可能会出错吗?
我可以想象检查它
if(A<1/(B*B))
Run Code Online (Sandbox Code Playgroud)
但如果B足够小,这可能会导致无穷大吗?如果发生这种情况,代码是否仍能在所有情况下正常工作?
我也许会这样做
if(1/A>B*B)
Run Code Online (Sandbox Code Playgroud)
...这可能会稍微好些,因为如果B很小,B*B可能为零(这是真的吗?)
最后,我无法想象的解决方案是
if(sqrt(1/A)>B)
Run Code Online (Sandbox Code Playgroud)
我认为这不会导致零分割,但如果A接近于零,仍可能存在问题.
所以基本上,我的问题是:
编辑:对于那些想知道的人,我最终做了
if(B*A*B<1)
Run Code Online (Sandbox Code Playgroud)
我按顺序做了,因为它在视觉上是明确的,首先发生乘法.
在我的机器上,以下每个代码片段抛出异常而不是打印到标准输出"1"和"2"为什么异常没有被捕获?
try {
[int]$a = 1/0
}
catch {
write 1
}
finally {
write 2
}
try {
[int]$a = 1/0
}
catch [System.Exception] {
write 1
}
finally {
write 2
}
Run Code Online (Sandbox Code Playgroud) .net powershell exception-handling divide-by-zero powershell-2.0
我编写了一个AppWidget,它从ContentProvider中显示ListView中的一些数据,但是我无法更新它.当我第一次创建窗口小部件时,它会正确填充,但在AlarmManager的PendingIntent到达后,ListView上不会发生更新.这是代码:
Intent update = new Intent(context, MenuWidgetProvider.class);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pIUpdate = PendingIntent.getBroadcast(context, 0, update, 0);
((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).
set(AlarmManager.RTC, nextTime.toMillis(false), pIUpdate);
Log.d(TAG, "updating: " + dmt.mealName);
for (int i = 0; i < appWidgetIds.length; ++i) {
int widgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_menu);
// meal name
views.setTextViewText(R.id.widget_locname, prefs.getString(PREF_WIDGET_LOCNAME, ""));
// adapter
Intent adapter = new Intent(context, MenuWidgetAdapterService.class);
adapter.putExtra(EXTRA_LOCATIONID, prefs.getInt(PREF_WIDGET_LOCID, -1));
adapter.putExtra(EXTRA_MEALNAME, dmt.mealName);
adapter.putExtra(EXTRA_DATE, dmt.date.toString());
views.setRemoteAdapter(R.id.widget_list, adapter);
// update
manager.updateAppWidget(widgetId, views);
}
super.onUpdate(context, manager, appWidgetIds);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当更新发生时,onUpdate()方法运行 - …
编辑:问题解决了.你需要做的就是移除turbolinks.
使用Rails4应用程序使用ember-rails 0.13.0我们遇到了无法使用浏览器后退按钮的问题.每次使用后退按钮返回上一个路径时,应用程序都会因此类错误而崩溃:
在Firefox 24.0a2上:
TypeError: Class.PrototypeMixin.applyPartial is not a function @ http://localhost:3000/assets/ember.js?body=1:11933
Run Code Online (Sandbox Code Playgroud)
在Chromium 28上:
Uncaught Error: jquery-ujs has already been loaded! jquery.js?body=1:517I
DEBUG: ------------------------------- ember.js?body=1:364
DEBUG: Ember.VERSION : 1.0.0-rc.6.1 ember.js?body=1:364
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:364
DEBUG: jQuery.VERSION : 1.10.2 ember.js?body=1:364
DEBUG: -------------------------------
Run Code Online (Sandbox Code Playgroud)
看起来整个应用程序堆栈再次加载,结束时没有功能代码库.无论如何,相同的应用程序与Rails3完美配合.
来自其他人的报告与ember.js以及turbolinks有关:
Cannot perform operations on a Metamorph that is not in the DOM
Run Code Online (Sandbox Code Playgroud) c ×2
svn ×2
.net ×1
android ×1
conflict ×1
division ×1
eclipse ×1
ember-rails ×1
ember.js ×1
exception ×1
listview ×1
oracle ×1
powershell ×1
select ×1
select-into ×1
sql ×1
subversive ×1
svn-merge ×1
turbolinks ×1
visual-c++ ×1
widget ×1