我遇到了间歇性失败的单元测试,因为经过的时间不是我预期的.
此测试的示例如下:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
TimeSpan oneSecond = new TimeSpan(0, 0, 1);
for(int i=0; i<3; i++)
{
Thread.Sleep(oneSecond);
}
stopwatch.Stop();
Assert.GreaterOrEqual(stopwatch.ElapsedMilliseconds, 2999);
Run Code Online (Sandbox Code Playgroud)
这种情况大部分时间都过去了,但至少有一次失败,因为:
预期:大于或等于2999但是:2998
我不明白它怎么可能不到3秒钟.我不知道Thread.Sleep或者Stopwatch是否存在准确性问题?
正如以下一些问题的更新.正在进行单元测试的场景是一个类,它允许一个方法调用一个方法来执行某些操作,如果它失败则等待一秒并调用该方法.上面显示的测试只是对正在发生的事情的近似.
假设我想调用方法DoSomething()...但是如果DoSomething()抛出异常,我希望能够重试最多调用它3次,但每次尝试之间等待1秒.在这种情况下,单元测试的目的是验证当我们请求3次重试,每次重试之间等待1秒钟时,所花费的总时间大于3秒.
我的大部分Lisp经验都来自Elisp.因此,我发现自己只是偶尔编写Lisp.当我回到它时,我经常忘记和之间的区别car,cdr并且需要引用文档来慢慢记忆.
您使用什么样的聪明助记符来记住Lisp函数之间的区别,这些函数具有源自1954年代计算机体系结构(汽车,cdr,cadr,caar,cddr等)的命名根源?
此外,为什么还没有名称明确的别名,first并rest获得更多的牵引力作为惯用的替代品car和cdr?
更新:我所知道的实际定义car和cdr他们应该如何发音.请记住助记符.
完全披露:这个问题并不完全适合我.这是为了帮助其他Lisp新手克服一些最初的障碍.
这就是我今天在接受采访时提出的.
int is_little_endian(void)
{
union {
long l;
char c;
} u;
u.l = 1;
return u.c == 1;
}
Run Code Online (Sandbox Code Playgroud)
我的面试官坚持认为c并且l不能保证在同一地址开始,因此,应该改变联盟说,char c[sizeof(long)]并且应该将返回值更改为u.c[0] == 1.
工会成员可能不会在同一地址开始是否正确?
我试图设置StackPanel的填充,但没有这样的属性.我尝试过StackPanel.Border,但也没有这样的属性.
有任何想法吗?
我正在使用UITableViewCell和UITableViewCellStyleSubtitle.但是,由于我用于单元格的背景图像,我不喜欢detailTextLabel的去向.我想移动它并在单元格内调整大小,但我尝试的任何东西似乎都没有用.
CGRect currRect = cell.detailTextLabel.frame;
cell.detailTextLabel.frame = CGRectMake(currRect.origin.x + 20, currRect.origin.y, currRect.size.width - 40, currRect.size.height);
Run Code Online (Sandbox Code Playgroud)
我尝试将此代码放入tableView:cellForRowAtIndexPath和tableView:willDisplayCell:forRowAtIndexPath方法,但两者都不起作用.标签只是保持原样,大小相同.
调整标签的其他属性(textAlignment,backgroundColor,当然还有文本本身)可以正常工作.
如何让detailTextLabel移动到我需要的位置?
如果这很重要(虽然我不明白为什么它应该),这个特定的单元格也有imageView.image和backgroundImage属性设置.两个图像都正确显示.
Silverlight和XBAP有什么区别?你会在哪里使用一个与另一个?
几天前,我看到CoClassAttribute以我以前没有想到的方式使用.
[ComImport, CoClass(typeof(Foo)), Guid("787C1303-AE31-47a2-8E89-07C7257B1C43")]
interface IFoo {
void Bar();
}
class Foo : IFoo {
public void Bar() {
Console.WriteLine("Oh retado!");
}
}
Run Code Online (Sandbox Code Playgroud)
用作:
class CoClassDemo {
public static void Show() {
var a = new IFoo();
a.Bar();
}
}
Run Code Online (Sandbox Code Playgroud)
这应该不会让我感到惊讶,因为自.NET Framework早期以来,COM Interop正是这样做的.在.NET Reflector中挖掘COM Interop代码时,我根本没有那么多关注.
method public hidebysig static void Show() cil managed
{
.maxstack 1
.locals init (
[0] class ConsoleApplication1.IFoo a)
L_0000: nop
L_0001: newobj instance void ConsoleApplication1.Foo::.ctor()
L_0006: stloc.0
L_0007: ldloc.0
L_0008: callvirt instance void ConsoleApplication1.IFoo::Bar()
L_000d: …Run Code Online (Sandbox Code Playgroud) 使用iPhone 3.0 SDK中的MapKit,可以创建符合MKAnnotation协议的对象.将这些加载到MKMapView非常简单.但是,当用户滚动MKMapView时,是时候加载新的注释了.请求新对象的可能位置是mapView:regionDidChangeAnimated:在更改地图区域时调用,然后使用新注释添加/替换注释.
具体来说,我想查询Core Data以检索当前MKCoordinateRegion(mapView.region)中存在的所有对象,以便我只加载将在屏幕上显示的对象.Core Data中的对象具有纬度和经度属性(CLLocation属性在类'.m/.h中定义,我可以从中手动填充)并将其用于NSPredicate以查找附近的对象.
由于Core Data数据库中存在多少个对象的性质,我们不能将所有对象预加载为注释,否则我们将耗尽内存(并且它会非常慢).
如何仅检索当前mapview边界中具有位置的对象?
我的HTML文档中有一个iframe,我遇到了一些麻烦.
我还在页面顶部有一个URL栏(固定位置元素),当它们滚动时应该与用户保持一致.这很好.我希望iframe填充剩余的空间,但不会被URL栏覆盖.
这就是我所说的.http://s75582.gridserver.com/Ls
如何修复此问题,以便URL栏不会覆盖页面的一部分?当我尝试在体内设置填充时,它只会创建一个额外的,恼人的滚动条.
没有进入OpenGL(Quartz 2D就可以了):
假设我有一张图片,我希望以某种流畅的方式在地图上移动.例如,飞机在地图上"飞行"的图像.我已经能够使用MKAnnotation,NSTimer和摆弄纬度/经度变化率和定时器速率来做到这一点.但是,我认为这并不理想,虽然结果看起来相当不错.你能想到一个更好的方法吗?
现在让我们说我希望这个图像是动画的(想想:动画gif).我无法通常UIImageView使用一系列animationFrames因为我在MKAnnotationView中访问的所有内容都是一个UIImage.你们怎么解决这个问题?
我意识到可以使用包含animationImages的地图顶部的UIImageView来处理#2.然而,根据用户在现实世界中的移动或用户缩放(我的应用程序中不允许滚动),我必须手动处理平面或火箭的移动或者地图视图区域变化的任何内容.
你怎么看?
iphone ×3
c# ×2
wpf ×2
animation ×1
c ×1
cocoa-touch ×1
common-lisp ×1
core-data ×1
css ×1
elisp ×1
endianness ×1
html ×1
iframe ×1
layout ×1
lisp ×1
mapkit ×1
mapping ×1
mocking ×1
objective-c ×1
padding ×1
ria ×1
silverlight ×1
sleep ×1
stackpanel ×1
stopwatch ×1
uitableview ×1
xaml ×1
xbap ×1