小编Sha*_*obe的帖子

需要有关涉及PDO事务的嵌套原子操作的帮助

我有两个可以独立使用的不同模块,但Module2依赖于Module1.

Module2有一个需要原子的操作,它调用Module1中也需要是原子的操作.

假设我已经设置PDO :: ATTR_ERRMODE到PDO:ERRMODE_EXCEPTION,以下严重genericised和剪断代码可以产生这样的:PHP的致命错误:有消息"已经有一个活跃的交易"未捕获的异常"PDOException"

模块1:

<?php
class Module1
{
    ...
    public function atomicOperation($stuff)
    {
        $this->pdo->beginTransaction();
        try {
            $stmt = $this->pdo->prepare(...);
            ...
            $this->pdo->commit();
        }
        catch (Exception $ex) {
            $this->pdo->rollBack();
            throw $ex;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

模块2:

<?php
class Module2
{
    public $module1;
    ...
    public function atomicOperation($stuff)
    {
        $this->pdo->beginTransaction();
        try {
            $stmt = $this->pdo->prepare(...);
            ...
            $this->module1->atomicOperation($stuff);
            ...
            $this->pdo->commit();
        }
        catch (Exception $ex) {
            $this->pdo->rollBack();
            throw $ex;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定最好的方法 - 嵌套操作肯定会被独立调用,并且在自己调用时绝对必须是原子的.将onus放在类'user上以管理事务并保持原子性是不可取的,因为我确信该类的用户永远不会强制执行它.

php pdo

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

分发iPhone证书私钥?

我工作的公司已经将iPhone应用程序的开发外包给另一家公司.他们希望用我们的证书签署二进制文件以进行分发,但他们要求我将用于创建证书的私钥(certificates.p12)传递给另一家公司.我非常担心将我们的申请签署给另一家公司的能力.

我怎么能说服我的老板这是一个非常糟糕的主意?我可以向他建议哪些替代解决方案?我已经让他从他们那里得到消息来源,所以我们可以自己签名并提交,但是没有能力最终说明给他们证书是一个坏主意,我有点陷入"只是调查它我"冷静.

iphone app-store

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

如何在没有自动释放的情况下管理在iPhone上发布实例方法中创建的对象?

我对iPhone的开发还很陌生,我对内存管理的理解遇到了障碍.我已经阅读了Cocoa内存管理指南,并在SO上阅读了很多很多问题和答案,但还没有找到完整的答案.

如果我有一个创建对象的实例方法,我看到的每个例子似乎都使用自动释放调用:

-(NSArray *)findThings {
    NSArray* things = [[[NSArray alloc] init] autorelease];
    // add some lovely things to my shiny new array
    return things;
}
Run Code Online (Sandbox Code Playgroud)

忘了这个人为的例子,我读到的关于iPhone开发最佳实践的一切都说不鼓励使用自动释放池,但是如何在没有自动释放池的情况下实现上述示例呢?如果这种方法被多次调用,我觉得我冒着堵塞iPhone自动释放池的风险,好吧,"事情",这似乎与在这样一个受约束的平台上将资源使用保持在最低限度的需要相悖.

我考虑过以下几点:

-(NSArray *)findThings {
    NSArray* things = [[NSArray alloc] init];
    // add some lovely things to my shiny new array
    [things release];
    return things;
}
Run Code Online (Sandbox Code Playgroud)

但是'thing'在传递给调用方法之前会有一个保留计数为零,所以我觉得在调用[things release]和调用findThings实际使用的方法之间释放对象存在很大的风险.结果.

我对"内存管理指南"中的规则感到有些困惑,该规则指出:

通常保证接收到的对象在接收到的方法中保持有效.(...)该方法也可以安全地将对象返回给它的调用者.

我不确定这是否意味着作为实例方法的编写者,我可以安全地执行发布,而不会在调用方法的范围结束之前释放对象的风险,或者是否作为Apple提供的框架中的类的用户可以假设我不必担心从这些类中收到的对象的保留/释放/等等,只要该方法的名称中没有new/init/alloc/copy /.

总结一下,

  • 我可以在返回对象而不是自动释放之前使用release来避免在iPhone上使用自动释放池吗?
  • 如果没有,是否有更好的模式,不涉及自动释放池?
  • 我错过了一些基本的东西吗?似乎文档中有一个漏洞.

提前致谢

iphone cocoa-touch memory-management objective-c

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

如何让mercurial发出冲突文件的基本修订以及修改后的版本?

我正在尝试使用mercurial合并两个分支,并且存在一些冲突.在Subversion中工作时,合并冲突会导致冲突的文件被统一的diff替换,我自己的文件版本添加了".mine"扩展名,以及文件的最后一个签入版本的".rxxx" "扩展补充​​说.

使用mercurial,我只获得统一差异以及添加了".orig"扩展名的我自己的版本.

我习惯于在eclipse中使用"Compare With> Each"命令或使用FileMerge自行编辑合并,但由于基本修订版本无法在没有手动进行和获取的情况下无法使用我无法以这种方式工作更多.

我不想在hg merge命令期间执行合并 - 我更喜欢在我自己的时间执行此操作.

我可以使用设置或扩展来实现此目的吗?

mercurial

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

如何在python 2.4中设置smtplib发送超时?

当电子邮件发送失败时,我遇到了smtplib捆绑我的程序的问题,因为永远不会引发超时.我正在使用的服务器没有,并且永远不会有大于2.4的python,所以我不能在更高版本的python中使用SMTP构造函数的超时参数.

Python 2.4的文档显示SMTP类没有'timeout'参数:

class SMTP([host[, port[, local_hostname]]])
Run Code Online (Sandbox Code Playgroud)

那么我该如何模拟这个功能呢?

python python-2.4 smtplib

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

Actionscript中的相对URL 3

我有一个使用Actionscript 3的flash电影,其中包含一些打开新页面链接的按钮.这是我重定向到新页面的代码:

myButton.addEventListener(MouseEvent.CLICK, function(e:MounseEvent) {
    var request:URLRequest = new URLRequest('http://www.example.com/page2.html');
    navigateToURL(request, "_top");
});
Run Code Online (Sandbox Code Playgroud)

它在我的生产服务器上运行良好,包含域名的完整URL,但当我将其更改为:

var request:URLRequest = new URLRequest('page2.html');
Run Code Online (Sandbox Code Playgroud)

它不再适用于生产.我在这里错过了什么?我不想将整个URL编码到电影中.

flash actionscript-3

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

CGFloat导致iPhone Unit Testing Bundle失败

当它引用的代码使用CGFloats时,我在编译iPhone单元测试包时遇到问题.如果我没记错的话,CGFloat只是一个预处理器宏,所以我猜它没有得到正确的替换,但由于我对这款iPhone的相对较新,我不知道从哪里开始寻找它.我已经比较了应用程序目标和测试包的Info页面中的值,它们似乎大致相同.

以下是在Xcode 3.2.1和Xcode 3.1.4中复制的步骤:

创建新项目>基于视图的应用程序创建新目标>单元测试包Ctrl +单击测试目标>获取信息将"CoreGraphics.framework"添加到链接库添加新的Objective-C类,确保两个目标都已勾选

// SomeClass.h
#import <Foundation/Foundation.h>

@interface SomeClass : NSObject {

}
-(CGFloat)doStuff;
@end

// SomeClass.m
#import "SomeClass.h"

@implementation SomeClass
-(CGFloat)doStuff {
    return 9.9;
}
@end
Run Code Online (Sandbox Code Playgroud)

Ctrl +单击测试目标>构建"测试"

在引用CGFloat的任何位置的"构建结果"窗口中都会出现以下错误:

/Users/shabbyrobe/Code/Tests/StupidCGFloat/Classes/SomeClass.h:15:0 /Users/shabbyrobe/Code/Tests/StupidCGFloat/Classes/SomeClass.h:15:错误:预期')'在'CGFloat'之前

iphone xcode unit-testing xcode3.2

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

如何签署第三方提供的发布iphone二进制文件?

我收到了为我为外包公司工作的公司开发的iPhone应用程序.我无权访问源代码,只能访问已编译的二进制文件.我希望能够使用我们的证书,配置信息等对其进行签名,以便我可以将其提交到应用商店.我该怎么做呢?我知道它的存在,codesign但不能真正了解如何从手册页中正确使用它.

iphone app-store

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