在许多应用程序中,我们为文件下载,压缩任务,搜索等提供了一些进度条.我们经常使用进度条让用户知道正在发生的事情.如果我们知道一些细节,例如已完成了多少工作以及剩下多少工作,我们甚至可以通过推断从达到当前进度水平所需的时间来估算时间.
压缩ETA截图http://jameslao.com/wp-content/uploads/2008/01/winrar-progress-bar.png
但我们也看到这个时间留下"ETA"显示的程序只是滑稽的坏.它声称文件副本将在20秒内完成,然后一秒后它会说需要4天,然后再次闪烁20分钟.它不仅无益,而且令人困惑!ETA变化如此之大的原因是进度本身可能会有所不同,程序员的数学运算可能过于敏感.
苹果公司通过避免任何准确的预测并仅仅给出模糊估计来回避这一点! Apple的模糊逃避http://download.autodesk.com/esd/mudbox/help2009/images/MED/DaliSP1/English/Install_licensing/install_progress_MAC.png
这也很烦人,我有时间快速休息,还是我的任务将在2秒内完成?如果预测太模糊,那么完全做出任何预测毫无意义.
简单但错误的方法
作为第一次通过ETA计算,可能我们都只是做一个函数,如果p是已经完成的小数百分比,t是到目前为止所用的时间,我们输出t*(1-p)/ p作为估计完成需要多长时间.这个简单的比例可以"正常",但它也很糟糕,特别是在计算结束时.如果你的缓慢下载速度让副本慢慢地在一夜之间发生,最后在早上,一些东西开始运行,副本开始全速前进,速度提高了100倍,你完成90%的ETA可能会说"1小时",10秒之后你会达到95%而且ETA会说"30分钟",这显然是一个令人难以置信的糟糕猜测.在这种情况下,"10秒"是一个非常好的估计.
当发生这种情况时,您可能会考虑更改计算以使用最近的速度而不是平均速度来估算ETA.您可以获取过去10秒内的平均下载速率或完成率,并使用该速率来预测完成时间.这在之前的一夜之间下载过程中表现相当不错,因为它将在最后给出非常好的最终完成估算.但是这仍然存在很大问题..当你的速率在很短的时间内快速变化时,它会导致你的ETA大幅反弹,你会得到"在20秒内完成,在2小时内完成,在2秒内完成,在30秒内完成"分钟"快速显示编程耻辱.
实际问题:
在给定计算的时间历史的情况下,计算任务完成的估计时间的最佳方法是什么?我不是在寻找GUI工具包或Qt库的链接.我问的算法是生成最理智和准确的完成时间估计.
你有数学公式的成功吗?某种平均值,可能是使用超过10秒的速率平均值,速率超过1分钟,速率超过1小时?某种人工过滤,例如"如果我的新估计值与之前的估计值相差太大,请将其调低,不要让它反弹太多"?某种奇特的历史分析,您可以将进度与时间进度相结合,找到速率的标准偏差,以便在完成时给出统计误差指标?
你尝试了什么,什么效果最好?
在App.xaml中,我有以下代码:
<Application.Resources>
<Style x:Key="LabelTemplate" TargetType="{x:Type Label}">
<Setter Property="Height" Value="53" />
<Setter Property="Width" Value="130" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="99,71,0,0" />
<Setter Property="VerticalAlignment" Value= "Top" />
<Setter Property="Foreground" Value="#FFE75959" />
<Setter Property="FontFamily" Value="Calibri" />
<Setter Property="FontSize" Value="40" />
</Style>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
这是为了为我的标签提供通用模板.
在主要的XAML代码中,我有以下代码行:
<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />
Run Code Online (Sandbox Code Playgroud)
但是,我想通过代码初始化Style属性.我试过了:
label1.Style = new Style("{StaticResource LabelTemplate}");
Run Code Online (Sandbox Code Playgroud)
和
label1.Style = "{StaticResource LabelTemplate}";
Run Code Online (Sandbox Code Playgroud)
两种解决方案都无效.
任何帮助,将不胜感激 :).
是否可以在为用户界面使用HTML和CSS时开发C++程序?我知道使用Webkit容器使用Javascript进行编程,但我对C++开发很感兴趣.
当我在Windows下开发时,我感觉爱上了C#WPF,但是现在我转向Linux并且我没有找到一个使用标记接口的好工具.为此,我想混合HTML和CSS,它们非常轻巧,易于使用,使用C++代码,比如WPF.
哦,还有一件事:我正在寻找桌面开发,而不是网络.
动机
我想找到一种方法来采取任意颜色并使其变暗一些阴影,这样我就可以以编程方式创建从一种颜色到较轻版本的漂亮渐变.渐变将用作UI中的背景.
可能性1
显然,我可以将RGB值分开并逐个增加一定量.这实际上是我想要的吗?
可能性2
我的第二个想法是将RGB转换为HSV/HSB/HSL(色调,饱和度,值/亮度/亮度),稍微增加亮度,稍微降低饱和度,然后将其转换回RGB.这一般会产生预期的效果吗?
如何以编程方式更改EditText's 光标的颜色?
在android 4.0及以上版本中,光标颜色为白色.如果EditTexts背景也是白色,则它变得不可见.
我寻求有关使用WPF实现控制台日志查看器的最佳方法的建议.
它应符合以下标准:
总的来说,我有一些想法,如FireBug和Chrome的控制台窗口.
我玩这个但是我没有取得多大进展,因为...... - 数据网格无法处理不同的项目高度 - 滚动位置仅在释放滚动条后更新(这是完全不可接受的).
我很确定,我需要某种形式的虚拟化,并希望遵循MVVM模式.
欢迎任何帮助或指示.
我有jquery ui sortables正常工作但我的可排序元素中有其他的交互元素.为了防止在与可排序div中的元素交互时意外排序,我想以某种方式使得可排序的拖动运动仅在拖动可排序的某个元素时发生,例如可能存在的"移动"图标在每个可排序的左上角.这可能是通用的jqui,还是我需要编写自己的钩子?
我想在我的应用程序中创建一个工具栏,我想知道android中工具栏的标准高度是多少?
我希望它对手指来说足够大,但不是很大.有标准尺寸吗?
GUI,无论是用WinForms还是XAML编写,似乎在我看到的项目之间具有最广泛的命名约定.对于一个TextBox人的名字的简单,我已经看到了各种命名约定:
TextBox tbName // Hungarian notation
TextBox txtName // Alternative Hungarian
TextBox NameTextBox // Not even camelCase
TextBox nameTextBox // Field after field with TextBox on the end
TextBox TextBoxName // Suggested in an answer...
TextBox textBoxName // Suggested in an answer...
TextBox uxName // Suggested in an answer...
TextBox name // Deceptive since you need name.Text to get the real value
TextBox textBox1 // Default name, as bad as you can get
Run Code Online (Sandbox Code Playgroud)
我通常会遵守所有.cs文件的StyleCop规则,并且看到其他人也这样做,但GUI往往会违反这些规则或变化很大.我没有看到任何专门引用GUI元素的Microsoft指南,而不仅仅是普通变量,甚至是在控制台应用程序之外应用的示例.
在GUI中命名元素的最佳实践是什么?
适当的,我的意思是:
没有特别的顺序.
哪些GUI工具包满足哪些条件?