我希望在Rails关闭时运行一些清理代码 - 这可能吗?我的情况是我在后台有一些线程(我正在使用jruby并调用java),这些线程一直存在于进程的生命中,我需要让他们知道关闭自己
谢谢!
我正在编写一个Cocoa OS X(Leopard 10.5+)最终用户程序,该程序使用时间戳来计算屏幕上显示内容的统计信息.使用重复的NSTimer运行程序时,会定期计算时间. [NSDate date]用于捕获时间戳,开始和结束.以秒为单位计算两个日期之间的差异是微不足道的.
如果最终用户或ntp更改系统时钟,则会出现问题. [NSDate date]依赖于系统时钟,因此如果它被改变,Finish变量将相对于Start变形,从而显着地搞乱了时间计算.我的问题:
1. 即使系统时钟在中途改变,如何准确计算开始和结束之间的时间(以秒为单位)?
我想我需要一个不变的参考时间点,所以我可以计算从那以后经过了多少秒.例如,系统正常运行时间.具有10.6 - (NSTimeInterval)systemUptime的一部分NSProcessInfo,它提供了系统正常运行时间.但是,这不起作用,因为我的应用程序必须在10.5中工作.
我尝试使用NSTimer创建时间计数器,但这不准确.NSTimer有几种不同的运行模式,一次只能运行一种.NSTimer(默认情况下)进入默认运行模式.如果用户开始操作UI足够长的时间,这将进入NSEventTrackingRunLoopMode并跳过默认运行模式,这可能导致跳过NSTimer激活,使其成为计算秒数的不准确方式.
我还考虑过创建一个单独的线程(NSRunLoop)来运行NSTimer秒计数器,使其远离UI交互.但我对多线程非常陌生,如果可能的话,我想远离它.此外,我不确定这是否会在CPU被另一个应用程序(Photoshop渲染大图像等等)绑定的情况下准确工作,导致我的NSRunLoop被搁置足够长的时间以使其陷入困境的NSTimer.
我感谢任何帮助.:)
在这样的界面中:
@interface MyClass : NSObject
{
bool PlainOldBool;
}
@end
Run Code Online (Sandbox Code Playgroud)
...确实PlainOldBool自动初始化为false,或者是否有必要使用init方法明确地执行此操作?
我正在尝试使用Facebook共享按钮为链接创建共享按钮:
http://www.facebook.com/facebook-widgets/share.php http://wiki.developers.facebook.com/index.php/Facebook_Share
但是,当我尝试使用t我的URL中的值时,它们不起作用.
我甚至尝试在API页面上使用该示例:
http://www.facebook.com/sharer.php?u=http%3A%2F%2Fdevelopers.facebook.com%2F&t=Facebook%20Developers
并且它不起作用......它将标题设置为developers.facebook.com不是Facebook DevelopersURL指定的
有谁知道我怎么能正常工作?
我希望我的共享链接显示为......'标题我正在分享'然后...直接到该项目的URL.
有没有办法在模拟对象中设置类级变量?
我有类似于这样的模拟对象:
$stub = $this->getMock('SokmeClass', array('method'));
$stub->expects($this->once())
->method('method')
->with($this->equalTo($arg1));
Run Code Online (Sandbox Code Playgroud)
赢得真正的类有一个变量需要设置才能正常工作.如何在模拟对象中设置该变量?
我可以访问并显示self.view并在日志中查看框架,但是当我尝试访问self.view.frame时,我得到null.下面是日志输出
NSLog(@"Show self.view:%@",self.view);
NSLog(@"Show self.view.frame:%@",self.view.frame);
Run Code Online (Sandbox Code Playgroud)
-
2010-03-28 11:08:43.373 vivmed_CD_Tab[20356:207] Show self.view:<UITableView: 0x4001600; frame = (0 0; 320 583); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x3b21270>>
2010-03-28 11:08:43.373 vivmed_CD_Tab[20356:207] Show self.view.frame:(null)
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么self.view.frame是null却self.view显示帧?我的目标是改变框架大小.
干杯,格兰特
我正在寻找Ruby on Rails中的一些不良实践示例,以便演示不该做什么.
我最大的就是在模型after_save hook上使用update_attribute.
Object.update_attribute(:only_one_field, "Some Value")
Run Code Online (Sandbox Code Playgroud)
由于这是一个非常开放的问题,我将等待一周或两周,然后选择最有投票答案的答案.
玩得开心!
这应该是一个非常简单的运行,但由于某种原因它不适用于我的Mercurial存储库.我想要的只是远程仓库hg update在有人推送时自动运行.所以我在.hg/hgrc文件中有这个:
[hook]
changegroup = hg update
Run Code Online (Sandbox Code Playgroud)
简单吧?但由于某种原因,这永远不会执行.我也尝试编写一个执行此操作的shell脚本..hg/hgrc看起来像这样:
[hooks]
changegroup = /home/marc/bin/hg-update
Run Code Online (Sandbox Code Playgroud)
和hg-update看起来像这样:
#!/bin/sh
hg help >> /home/marc/works.txt;
hg update >> /home/marc/works.txt;
exit 0;
Run Code Online (Sandbox Code Playgroud)
但同样,这不会更新.hg help写出来的内容works.txt,但没有写出来hg update.有什么明显的东西我在这里不见了吗?这一直困扰着我好几天,我似乎无法让它发挥作用.
更新
好的,再次,使用-v我的工作站命令行上的开关推送到远程仓库,即使我有这些echo行,也不打印任何详细消息.hg/hgrc.但是,当我从同一文件系统上的repo克隆推送(我通过SSH登录)时,这就是我得到的:
bash-3.00$ hg -v push ../test-repo/ pushing to ../test-repo/ searching for changes 1 changesets found running hook prechangegroup: echo "Remote repo is at `hg tip -q`" echo "Remote repo wdir is at `hg parents -q`" Remote repo is …
如果用户当前在我的编辑视图控制器中,我希望能够在用户关闭我的应用程序时保存更改.为此,我正在观察UIApplicationWillTerminateNotification共享应用程序.在我的app委托中,我使用该applicationWillTerminate:方法关闭并释放所有核心数据上下文.
我发现的问题是在任何观察者对通知作出反应之前applicationWillTerminate:,app委托中的方法被调用.这意味着在我的编辑视图控制器有机会保存任何内容之前,我的核心数据堆栈已经发布并关闭!UIApplicationWillTerminateNotification
这通常是如何克服的,因为我看不到方法!
非常感谢,
迈克尔
有没有人知道任何允许使用OCUnit测试异步代码的现有库?我正在考虑类似GHAsyncTestCase但是从中传递的东西SenTestCase.
我问,因为如果我找不到任何我将要移植GHAsyncTestCase到OCUnit,但我不想复制其他人已完成的工作.