假设我使用自己的(SQL Azure)数据库进行生产和登台部署.如果分段中的模式已更改并且需要部署到生产中,那么是否有定义的方法可以在生产数据库上实现数据库升级(无需停机)?
例如,如果我交换VIP staging < - > production(同时自动更改连接字符串),自动升级sql azure数据库的最佳过程是什么.
我的想法是发现RoleEnvironmentChanging中的环境变化(虽然不确定VIP交换甚至触发RoleEnvironmentChanginng)并且在那时针对要成为数据库(即prod)运行sql脚本,但是我需要确保脚本是只运行一次,将有多个实例转换.
我一直在使用Xcode一段时间了.总是让我感到困惑的一件事是它处理文件的方式.我喜欢将我的文件全部放在嵌套文件夹而不是一个大的物理文件夹中,但是当你在Xcode中创建一个组时,默认它不会创建一个文件夹只是项目中的虚拟文件夹.
我可以看到虚拟文件夹非常适合将任意位置的代码链接到您的项目中,但是一旦超出了几个类,我发现一个大文件夹方法真的很痛苦.然后,如果你稍后尝试修复它需要很长时间,并且很容易破坏你的构建.
是否可以更改此行为,以便默认情况下创建物理文件夹?或者我做错了,并试图坚持其他一些工作方式?其他人如何处理Xcode中的文件?
相当多的人似乎使用了诸如此类的宏
#define SAFE_RELEASE(X) [X release]; X = nil;
Run Code Online (Sandbox Code Playgroud)
(包括我自己).
我一直在重新评估我为什么要使用它并希望画出一些意见.
使用这个宏的目的(我认为)是这样的,如果你在释放后不小心使用你的对象,那么你就不会得到一个糟糕的访问异常,因为当对象为零时,objective-c会很乐意忽略它.
令我感到震惊的是,这有可能掩盖一些不起眼的错误.当你再次尝试使用X时,程序实际上可能会崩溃.在测试期间,您可以找到问题并改进代码.
这个宏是否鼓励懒惰编程?
思考?
我正在使用EF访问Sql azure.在一种情况下,我需要对两个数据库进行更改,通常我会使用TransactionScope,它会升级到MSDTC.现在Sql Azure不支持MSDTC,所以我不能使用TransactionScope.
还有另一种方法吗?(除了没有分布式事务并且不得不以某种方式手动回滚状态).
是否可以以编程方式更新存储在应用程序包中的文件?基本上我想获取一个远程文件并用它覆盖其中一个捆绑文件(实际上是一个 sqlite 数据库)。
这在模拟器上工作正常,但在设备上它不起作用,尽管它也不会出错(它似乎没有实际覆盖)。
我知道我可以通过将其复制到用户文件夹中来解决这个问题,然后在使用捆绑包之前获取代码来检查其第一个文件,但我很想知道是否可以更新捆绑包文件或我只是做错了什么吗?
谢谢
我需要以非常精确的计时运行我的游戏循环.我正在尝试使用NSTimer来做到这一点,而且我的结果还不错,但有一些偏差.当NSTimer触发时,下一次事件在处理程序完成时开始计数,或者它是否立即开始计数.如果前者对我来说是合理的,我可以使用setFireDate来尝试抵消下一次计时器的触发 - 当我尝试这个时,事情似乎更糟.
我的计时器设置为每44ms发射一次,我想阻止它漂移超过20ms.如果它确实漂移了,我想纠正下一场火灾.尝试使用NSTimer是否合理?
我对布尔逻辑有一个奇怪的问题.我必须做一些愚蠢的事,但我无法弄清楚.在下面的代码中,firstMeasure.isInvisibleArea为true,measureBuffer1为nil.即使test1由于某种原因正在评估NO,它仍然会进入我的if语句.如果我使用注释掉的行,它可以正常工作.知道为什么会这样吗?
BOOL firstVisible = firstMeasure.isInVisibleArea;
BOOL notFirstVisible = !(firstMeasure.isInVisibleArea);
BOOL measureBufferNil = measureBuffer1 == nil;
BOOL test1 = measureBuffer1 == nil && !firstMeasure.isInVisibleArea;
BOOL test2 = measureBufferNil && !firstVisible;
if (measureBuffer1 == nil && !firstMeasure.isInVisibleArea)
//if (measureBufferNil && !firstVisible)
{
//do some action
}
Run Code Online (Sandbox Code Playgroud)
更新1:
我将问题隔离到!firstMeasure.isInVisibleArea,因为我完全接受了measureBuffer位.里面的isInVisible区域是一个小的计算(它不会修改任何东西),但计算是使用self.view.frame.我也会把这个从等式中拿出来看看会发生什么.我的预感是self.view.frame正在两次调用isInVisibleArea之间切换.
更新2:这确实是问题所在.我在下面更详细地添加了答案