小编Hou*_*man的帖子

鼻子中有self.assertNotEqual()的快捷方式吗?

_eq 似乎等于 self.assertEqual()

但是self.assertNotEqual()鼻子里还有吗?

谢谢

python unit-testing nose

6
推荐指数
1
解决办法
3202
查看次数

iOS:如何识别Xcode仪器的泄漏?

我利用分析器来查找内存泄漏并遇到了这个问题:

在此输入图像描述

我切换到呼叫树.

所以我可以点击它以了解更多信息:

在此输入图像描述

但它并没有真正给我任何线索.我怎么知道造成泄漏的原因?

在此输入图像描述

更新:

  • 显示系统库的调用树在上面更新.
  • 有关泄漏对象的信息:

在此输入图像描述

  • 您在应用程序中执行的重现此泄漏的一些描述:

我们的应用程序在应用程序启动(前景)时与我们的REST-API同步.这总是在我的iOS 7/iPhone 4S上运行.但是另一个开发者拥有iOS7/iPhone 5并且很少运行它不同步的问题.经过10天的观察和放置NSLogs,我们昨晚发现了这个:

Dec 15 03:18:58  appname[4801] <Warning>: A gateway to the host server is working via WWAN.
Dec 15 03:18:58  appname[4801] <Warning>: Syncing...
Dec 15 03:18:58  appname[4801] <Warning>: Eventname to be fired: f11-reachability
Dec 15 03:18:58  appname[4801] <Warning>: Sync event IOS_REACHABILITY reached.
Dec 15 03:18:58  appname[4801] <Warning>: Sync: IOS_SYNC_WITH_SERVER is true
Dec 15 03:18:58  appname[4801] <Warning>: Animating indicator...
Dec 15 03:18:58  appname[4801] <Warning>: Getting last timestamp: 1387003344.407783 then …
Run Code Online (Sandbox Code Playgroud)

xcode memory-leaks ios ios7

6
推荐指数
1
解决办法
1086
查看次数

如何在MEF中使用事件聚合器?

我正在运行最新的PRISM 4.2.不幸的是,文档中的Event Aggregator教程是通过Unity而不是MEF驱动的.我不能让它在MEF下运行.

App.xaml.cs

 public partial class App : Application
    {
        [Import]
        public IEventAggregator eventAggregator;

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            Bootstrapper bootstrapper = new Bootstrapper();
            bootstrapper.Run();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Bootstrapper.cs

public class Bootstrapper : MefBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return new MainWindow();
        }

        protected override void InitializeShell()
        {
            base.InitializeShell();
            App.Current.MainWindow = (Window)Shell;
            App.Current.MainWindow.Show();
        }

        protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();

            AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));
        }

        protected override IModuleCatalog CreateModuleCatalog()
        {
            ModuleCatalog moduleCatalog = new ModuleCatalog();

            return moduleCatalog;
        }

    } …
Run Code Online (Sandbox Code Playgroud)

.net c# prism mef prism-4

6
推荐指数
1
解决办法
2970
查看次数

如何为Factory Boy指定数据库?

FactoryBoy似乎总是在默认数据库中创建实例.但我有以下问题.

cpses = CanonPerson.objects.filter(persons__vpd=6,
                                   persons__country="United States").using("global")
Run Code Online (Sandbox Code Playgroud)

代码指向global数据库.我还没有找到在工厂中指定数据库的方法:

class CanonPersonFactory(django_factory.DjangoModelFactory):
    class Meta:
        model = CanonPerson
        django_get_or_create = ('name_first', 'p_id')
    p_id = 1
    name_first = factory.Sequence(lambda n: "name_first #%s" % n)

    @factory.post_generation
    def persons(self, create, extracted, **kwargs):
        if not create:
            # Simple build, do nothing.
            return

        if extracted:
            # A list of groups were passed in, use them
            for person in extracted:
                self.persons.add(person)
Run Code Online (Sandbox Code Playgroud)

python django factory-boy

6
推荐指数
1
解决办法
511
查看次数

如何在Firebase中使用通配符?

这是我的Firebase数据库结构:

ft-records
  userX@gmail_com
    2013-01-01 00:00:00 GMT
        addedByUser: "userX@gmail.com"
        notes: "Boooo"
        time: "2013-01-01 00:00:00 GMT"
    2013-01-02 10:00:00 GMT
        addedByUser: "userX@gmail.com"
        notes: "Yeaah"
        time: "2013-01-02 10:00:00 GMT"
  userY@gmail_com
    2013-01-01 03:00:00 GMT
        addedByUser: "userY@gmail.com"
        notes: "Ok"
        time: "2013-01-01 03:00:00 GMT"
Run Code Online (Sandbox Code Playgroud)

我可以为经过身份验证的用户查询此数据,例如userX @ gmail_com

let userRecords = self.ref.child(self.user.email.replacingOccurrences(of: ".", with: "_", options: .literal, range: nil))

userRecords.queryOrdered(byChild: "time").queryStarting(atValue: startOfDayDateString).queryEnding(atValue:endOfDayDateString).observe(FIRDataEventType.value, with: { snapshot in ... } )
Run Code Online (Sandbox Code Playgroud)

但是,如果我想查询所有用户在特定日期的所有笔记,我该如何实现?

我需要以某种方式使用通配符从根读取所有孩子,然后按每个孩子的时间查询.但我不知道该怎么做.

我可以这样做吗?

let ref = FIRDatabase.database().reference(withPath: "ft-records/*")
Run Code Online (Sandbox Code Playgroud)

ios firebase swift firebase-realtime-database

6
推荐指数
1
解决办法
809
查看次数

如何正确地对 Firebase (ios) 进行单元测试?

我对如何测试我保存和迁移数据的方法有些困惑。我为我的单元测试创​​建了第二个 Firebase 项目(尽管这并不理想)。

这是我的测试之一:

func testMigratenOfFiveEvents() {
        var done = false
        let ref = FIRDatabase.database().reference()
        createFTEvents(amount: 5)
        let events = MockDatastore.shared.eventsForLife()
        FIRUtil.migrateEventsToFirebase(ftevents: events!)
        let userRecords = ref.child("ft-records").child("test@gmail_com")
        userRecords.queryOrdered(byChild: "time").observe(FIRDataEventType.value, with: { snapshot in
            var i = 0
            for item in snapshot.children {
                i = i + 1
                let event = Event(snapshot: item as! FIRDataSnapshot)
                XCTAssertEqual(event.notes, "hello" + String(i))
            }
            done = true
        })
        waitUntil(timeout: 5, predicate: {done})
    }

    func waitUntil(timeout: TimeInterval, predicate:((Void) -> Bool)) {
        let timeoutTime = NSDate(timeIntervalSinceNow: timeout).timeIntervalSinceReferenceDate …
Run Code Online (Sandbox Code Playgroud)

unit-testing ios firebase firebase-realtime-database

6
推荐指数
0
解决办法
584
查看次数

处理恢复购买时如何处理旧交易?

我目前正在使用沙盒用户开发和测试我的应用.即使事务已经完成,当我尝试时Restore Purchases,我从队列中获得了多达32个旧事务.

基本上我想提醒它,Your purchase is being restored. Upon completion this dialog will close.并在它完成时解雇它.

private func showRestoreInProgressAlert() {
        let alert = UIAlertController(title: "Restoring Purchase", message: "Your purchase history is being restored. Upon completion this dialog will close.", preferredStyle: .alert)
        present(alert, animated: true, completion: nil)

        NotificationCenter.default.addObserver(self, selector: #selector(dismissRestoreInProgressAlert(notification:)), name: SubscriptionService.restoreSuccessfulNotification, object: nil)
    }
Run Code Online (Sandbox Code Playgroud)

您可以从下面识别此方法SKPaymentTransactionObserver.一旦.restoreSuccessfulNotification发送通知,警报将按预期被解除.但由于队列中有32个事务,弹出窗口不断出现并消失32次.

func handleRestoredState(for transaction: SKPaymentTransaction, in queue: SKPaymentQueue) {
        print("Purchase restored for product id: \(transaction.payment.productIdentifier)")
        queue.finishTransaction(transaction)
        SubscriptionService.shared.uploadReceipt { (success) in
            DispatchQueue.main.async …
Run Code Online (Sandbox Code Playgroud)

in-app-purchase ios swift

6
推荐指数
1
解决办法
815
查看次数

Kotlin:缺少为 kaptDebugKotlin 引发的 kotlin.jvm.internal.FunctionReferenceImpl

我是 Android 开发的新手,也许这很明显是我所缺少的。我已从 i7 切换到 Apple M1,并且在构建项目时出现错误:

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)
Run Code Online (Sandbox Code Playgroud)

我已经运行它然后./gradlew clean build似乎这是问题: java.lang.NoSuchMethodError: 'void kotlin.jvm.internal.FunctionReferenceImpl

通过安装的Javabrew install java是:

openjdk version "15.0.1" 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9)
OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

相同的设置似乎在 MacBook Pro i7 上运行良好。请问这是否与Apple M1 CPU有关?

构建.gradle:

buildscript {
    ext.kotlin_version = '1.4.21'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin

6
推荐指数
1
解决办法
1245
查看次数

如何为 OkHttp3 实现自定义 DNS

我想创建一个自定义 DNS,以将 CloudFlare 1.1.1.1 和 1.0.0.1 用于我的所有 RetroFit 连接。这应该取代系统 DNS。

所以我这样做了:

import okhttp3.Dns
import java.net.InetAddress

class CustomDns : Dns {
    override fun lookup(hostname: String): List<InetAddress> {
        TODO("Not yet implemented")
    }
}
Run Code Online (Sandbox Code Playgroud)

我对如何实现抽象查找功能有点迷失。

文档说:

返回主机名的 IP 地址,按照 OkHttp 尝试的顺序排列。如果与某个地址的连接失败,OkHttp 将重试与下一个地址的连接,直到建立连接、IP 地址集耗尽或超出限制。abstract fun Lookup(hostname:String):List

这是否意味着我创建了一个 HashMap。键将是我的 API 的域,值将包含我的 API 解析到的 IP 地址列表?对我来说似乎不太合适。

有没有办法在此实现中仅使用 1.1.1.1 作为 DNS 解析器?

dns android kotlin okhttp

6
推荐指数
1
解决办法
6563
查看次数

Firebase 不是在 M1 模拟器上构建的(无法在范围内找到“Analytics”)

自从我改用 M1 以来,事实证明在模拟器上运行该应用程序是不可能的。在设备本身上它工作正常。

我收到构建错误:Cannot find 'Analytics' in scope

import Firebase

class AlertService: AlertServiceBase, AlertServiceProtocol {

  func showWarningAlert(dict: NSDictionary) {
     ...
     Analytics.logEvent("blocked_no_more_warning", parameters: nil)
  }
}
Run Code Online (Sandbox Code Playgroud)

我与一位 Apple 工程师交谈,他说将所有 Pods 架构更改为Standard Architectures (arm64, armv7) - $(ARCHS_STANDARD).

它对进一步取得进展有所帮助,但随后在 Firebase 分析问题上失败了。他建议将问题发布到 SO 上。希望以前有人经历过这个。谢谢

ios firebase swift firebase-analytics

6
推荐指数
2
解决办法
5168
查看次数