小编Rob*_*ser的帖子

任务的进度条可能会花费不确定的时间吗?

另一个随机问题打击了我(我在过去的5个小时内喝了9杯咖啡,很抱歉......) - 你会向用户展示什么样的进度条让你不知道需要多长时间,但你对"平均"时间有一个很好的了解.例如,一项通常需要大约30秒的任务,但您无法知道进度(除非它仍在进行或只是失败).什么是最好的用户体验?:

  • 一个快进和慢速开始的进度条(可能是一个1/x样式的渐近曲线)在平均任务时间内达到50%(日食风格指南建议这样).
  • 一个进度条,以缓慢的速度,以恒定的速率前进,并且可以达到15%的"平均时间"或某些东西(IE/Firefox在最初查找域时执行此操作)
  • 不确定的波浪吧(苹果电脑拥有这一切的地方,较新的Windows版本有它,太)只是表明某种运动没有暗示任何进展,旋,或一些动画,只是通知的东西是怎么回事用户.

如果平均时间是10分钟而不是30秒,答案会有所不同吗?

谢谢,罗伯特

编辑:

为了清楚起见,问题是关于进度条,你不知道/指示需要多长时间(例如,在远程机器上执行任务).如果你确实有一些进展的迹象,那通常很好用.

user-interface progress-bar

5
推荐指数
2
解决办法
2572
查看次数

AI:选择立即加速/旋转以达到最终点

我正在开发一款游戏,每次更新游戏循环时都会运行AI.在此更新期间,我有机会转动AI控制的实体和/或使其在其面向的方向上加速.我希望它到达最终位置(在合理范围内)并且在该位置具有特定的速度和方向(同样不需要精确)即,给定当前:

  • P 0(x,y) =当前位置矢量
  • V 0(x,y) =当前速度矢量(单位/秒)
  • θ 0 =当前方向(弧度)
  • τ 最大值 =最大转弯速度(弧度/秒)
  • α 最大 =最大加速度(单位/秒^ 2)
  • | V | max =绝对最大速度(单位/秒)
  • P f(x,y) =目标位置矢量
  • V f(x,y) =目标速度矢量(单位/秒)
  • θ ˚F =目标的旋转(弧度)

立即选择:

  • τ内= A转速度[-τ 最大最大值 ]
  • α = [0,αmax ] 内的加速度标量(必须在当前面向的方向上加速)

使这些最小化:

  • t =移动到目的地的总时间
  • | P t -P f | =距离目标位置的距离
  • | V t -V f | =最终偏离目标速度
  • ˚F | =结束时与目标旋转的偏差(包裹到(-π,π))

可以在游戏循环的每次迭代期间重新计算参数.一张图片说1000字,所以例如当前状态为蓝色花花公子,在尽可能短的时间内达到大约红色花花公子的状态(箭头是速度): …

puzzle algorithm math artificial-intelligence

5
推荐指数
1
解决办法
426
查看次数

demeter的包装/法则似乎是一种反模式

我一直在阅读这个"德米特定律"的东西,它(和一般的纯粹的"包装"类)似乎通常都是反模式.考虑一个实现类:

class FluidSimulator {
    void reset() { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)

现在考虑另一个类的两种不同实现:

class ScreenSpaceEffects1 {
    private FluidSimulator _fluidDynamics;
    public FluidSimulator getFluidSimulator() { return _fluidDynamics; }
}

class ScreenSpaceEffects2 {
    private FluidSimulator _fluidDynamics;
    public void resetFluidSimulation() { _fluidDynamics.reset(); }
}
Run Code Online (Sandbox Code Playgroud)

以及调用所述方法的方法:

callingMethod() {
   effects1.getFluidSimulator().reset(); // Version 1
   effects2.resetFluidSimulation();      // Version 2
}
Run Code Online (Sandbox Code Playgroud)

乍一看,版本2看起来有点简单,遵循"Demeter规则",隐藏Foo的实现等等.但这会将FluidSimulator中的任何更改与ScreenSpaceEffects联系起来.例如,如果添加一个参数来重置,那么我们有:

class FluidSimulator {
    void reset(bool recreateRenderTargets) { /* ... */ }
}

class ScreenSpaceEffects1 {
    private FluidSimulator _fluidDynamics;
    public FluidSimulator getFluidSimulator() { return _fluidDynamics; }
}

class …
Run Code Online (Sandbox Code Playgroud)

oop design-patterns anti-patterns law-of-demeter

5
推荐指数
1
解决办法
980
查看次数

用于代码生成的Visual Studio自定义工具...如何找出问题所在?

我正在尝试在Visual Studio 2010中创建用于代码生成的自定义工具.首先我注册它:

"$(FrameworkSDKDir)Bin\NETFX 4.0 Tools\gacutil.exe" /if "$(TargetPath)"
Run Code Online (Sandbox Code Playgroud)

然后我通过reg键添加它:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\CLSID\{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}]
"RuntimeVersion"="v4.0.30319"
"Class"="MapBuildTool.MapFileGenerator"
"Assembly"="MapBuildTool, Version=1.0.0.0, Culture=en-US, PublicKeyToken=7d8abca94a1e38ae"
"ThreadingModel"="Both"
"InprocServer32"="C:\\Windows\\SysWOW64\\mscoree.dll"
@="MapBuildTool"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\MapBuildTool]
"CLSID"="{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}"
"GeneratesDesignTimeSource"=dword:00000001
@="MapBuildTool"
Run Code Online (Sandbox Code Playgroud)

然后visual studio说:

Cannot find custom tool 'MapBuildTool' on this system.
Run Code Online (Sandbox Code Playgroud)

好的......现在怎么样?它找不到自定义工具注册表项吗?它是否找到了钥匙,但装卸组件有困难?它是否加载了程序集但是在实例化类时遇到了麻烦......?哪些日志/地方在那里我可以找出哪些错误?

code-generation visual-studio-2010 customtool visual-studio visual-studio-2010-sp1

5
推荐指数
3
解决办法
5076
查看次数

在没有汇编前缀的.NET程序集中嵌入资源?

使用Visual Studio将资源嵌入.NET程序集时,它以程序集名称为前缀.但是,程序集可以具有不是以程序集名称为前缀的嵌入资源.我能看到这样做的唯一方法是使用ILDASM反汇编程序集,然后重新组装它,添加新资源 - 这有效,但是......我真的需要完成那句话吗?

(Desktop .NET Framework 3.5,Visual Studio 2008 SP1,C#,Windows 7 Enterprise x64.)

.net resources visual-studio-2008-sp1 embedded-resource visual-studio

4
推荐指数
1
解决办法
2161
查看次数

C#:在终结器中,如何确定应用程序是否正在关闭?

我有一个终结器似乎总是在应用程序关闭期间失败.我认为这是因为它持有一些在那时不再有效的本地资源.有没有办法在析构函数/终结器中告诉它是否因应用程序关闭而被调用?

谢谢!

.net c# destructor finalizer application-shutdown

4
推荐指数
1
解决办法
1281
查看次数

GCC:在每条指令后强制执行函数调用(用于多线程测试)?

我正在尝试在我的程序中测试一个相当线程敏感的区域,并且想知道是否有一种方法可以强制gcc在每次发出的指令后插入一个调用,以便我可以手动屈服于另一个线程?

谢谢,罗伯特

c multithreading gcc synchronization context-switch

3
推荐指数
1
解决办法
276
查看次数

在C#中使用@keyword - 坏主意?

在我的命名约定中,我使用_name作为私有成员变量.我注意到如果我使用ReSharper自动生成构造函数,如果该成员是关键字,它将生成一个转义关键字.例如:

class IntrinsicFunctionCall
{
    private Parameter[] _params;
    public IntrinsicFunctionCall(Parameter[] @params)
    {
        _params = @params;
    }
}
Run Code Online (Sandbox Code Playgroud)

这通常被认为是不好的做法还是可以的?它经常发生在@params和@interface上.

编辑:这实际上并没有为变量名添加前缀.如果从不同的.NET语言(即F#)访问该变量,它就是params.事实上,在C#中,如果你写@x它完全等同于x.

.net c# naming-conventions keyword

3
推荐指数
1
解决办法
732
查看次数

Java中的Date.parse()是否可以安全使用,即使它已被弃用?如果没有,是否有可行的替代方案?

我经常使用Date.parse(String)来解析未知格式的日期.到目前为止,我的用例似乎工作正常,但我想知道为什么它被弃用了,我是否应该避免它?文档只是说:

As of JDK version 1.1, replaced by DateFormat.parse(String s)
Run Code Online (Sandbox Code Playgroud)

但是,DateFormat中没有静态解析方法,只是一个实例方法,它需要一个DateFormat对象,对于未知的日期格式,我不会这样做.

所以,我想知道......

  • Java设计师是否有任何关于他们为何选择弃用它的官方声明?
  • 如果这个方法到目前为止对我的用例工作正常,我可以依赖Java的未来版本中可用的这个功能吗?
  • 是否有一个可行的替代方法,不会因为解析多种可能的常见日期格式之一的字符串而弃用?

java string date standard-library deprecated

3
推荐指数
2
解决办法
1608
查看次数

如果只从一个地方调用一个函数,那么内联它是否总是更好?

如果一个函数只在一个地方使用,而某些分析表明它没有被内联,那么在强制编译器内联它时总会有性能优势吗?

显然是"轮廓和看"(在有问题的功能的情况下,它确实证明是一个小的性能提升).我大多数时候都是出于好奇而问 - 有一个相当聪明的编译器,这有什么性能上的缺点吗?

c c++ optimization performance micro-optimization

2
推荐指数
1
解决办法
599
查看次数

动态添加子域名?

我想知道是否可以动态添加指向动态IP地址的子域,以及我将如何做到这一点?换句话说,"如何实现dyndns/no-ip":-)?(我没有得到的部分是添加/更改DNS条目......我理解客户端每隔几分钟发送一个数据包-___-).当然,我可以告诉我的所有用户只使用DynDNS/No-IP,但是将它与应用程序集成会更酷.

谢谢,罗伯特

subdomain dns ip-address domain-name dyndns

1
推荐指数
1
解决办法
2755
查看次数

使System.Array成为对象[]的最佳方法

这可能是这样的:

public static object[] untypedToObjectArray(Array arr)
{
    int len = arr.Length;
    object[] res = new object[len];
    for(int i = 0; i < len; i++)
        res[i] = arr.GetValue(i);
    return res;
}
Run Code Online (Sandbox Code Playgroud)

有更好的(更高效的)方式吗?对于值类型,每个元素都需要明显加框,这可能很慢.

c# arrays

0
推荐指数
1
解决办法
119
查看次数