小编Jee*_*eef的帖子

非常慢的Objc迁移到快速代码

在我编写的应用程序中,我有一个从Core-Data解析大量数据并将其显示到图形的过程.在进行此处理时,我最终还是将数据写入CSV文件.我创建了一个名为CSVLine的单独类,它可以帮助创建CSV文件.
对于140k记录的测试用例,我的Objective-C代码需要大约12秒才能运行.将类"迁移"到swift后现在需要280-360秒才能运行.显然我做了一些可怕的事情.

使用仪器我能够识别"慢"方法,我想知道我是否在SWIFT中做了一些明确的事情来解决问题.

Objc

- (void)newLine {
//    NSLog(@"Appending %@", self.csvString);

    [outData appendData:[self csvData] ];
    [self clear];
}

- (void)clear {

    // Erase every single value

    for (NSUInteger i = 0; i < [values count]; i ++) {
        values[i] = @"";
    }
}
Run Code Online (Sandbox Code Playgroud)

迅速

func newLine() {
    outData.appendData(csvData())
    clear()
}


// Clear out the Array
func clear() {
    for (var i = 0; i < values.count; i++) {
        values[i] = ""
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用各种类型的数据,这些数据都写入单个CSV文件,因此有许多空白行.为了适应这个,我设计了这个类,使它有一个数组keys和一个数组values.该 …

objective-c ios swift

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

模拟CLLocationManager(swift)进行测试

问题1

在我真正开始写一些东西之前,我是否有将CLLocationManager包装到模拟框架中的现有框架(obj-c或swift)?

问题2

制作模拟位置管理器的最佳方法是什么?

  • 创建一个包装CLLocationManager的类,对该类的任何调用都将返回测试数据或实际的CLLocation数据,具体取决于我们运行的"模式"

  • 扩展CLLocationManager并覆盖我想要"muck"的所有调用

  • 有没有我想到的第三种选择?

大多数情况下,我想知道每种方法的优点/缺点是假设没有任何可用的东西

[编辑]

虽然XCode中有一个模拟位置功能但它并不能完全满足我的需求.如果我没记错,它就不会标题,它们必须进行插值.此外,我可能最终修改此类以从飞行模拟器驱动CLLocationManager

unit-testing mocking objective-c core-location swift

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

在swift中重载Single Equals

我有一个奇怪的情况,我似乎无法让单一等于超载

这很好用:

public func /=<T: ConvertibleUnit>(inout left: T, right: Int) {
    left.value = (left.value / Double(right))
}
Run Code Online (Sandbox Code Playgroud)

一旦我改为:

public func =<T: ConvertibleUnit>(inout left: T, right: Int) {
    left.value = Double(right)
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

运算符实现没有匹配运算符声明

我有什么疯狂的东西吗?

我玩中缀并没有做太多.我假设其解释=错误?

operator-overloading ios swift

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

Xcode命令行测试执行问题

我在一个奇怪的情况下,我可以xctool运行我的测试,但我无法找出相同的命令行来获得xcodebuild和/或fastlane scan运行我的测试.我有一个只有iPad的应用程序,有一个方案和两个目标(otto和ottoTests)

使用XCTool命令行

xctool -scheme otto \
       -sdk iphonesimulator \
        CODE_SIGN_IDENTITY=""\
        CODE_SIGNING_REQUIRED=NO \
       -reporter pretty\
       -reporter junit:./test-reports/otto.xml\
        build test
Run Code Online (Sandbox Code Playgroud)

Xcodebuild - 失败

xcodebuild -sdk iphonesimulator \
           -scheme otto \
      test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Run Code Online (Sandbox Code Playgroud)

我得到这个错误

仅构建设备不能用于运行此目标

在此输入图像描述

所以我在这里完全不知道正在运行的是xcodebuild什么xctool.

xcode unit-testing xcodebuild ios xctool

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

让摩纳哥与Vuejs和电子合作

我有兴趣在Vue.js支持的Electron项目中使用Monaco编辑器.

迄今:

微软提供了一个电子样本(我已经运行并正常工作)

摩纳哥有各种各样的vue.js npm回购 - 但它们似乎都没有完全支持Electron开箱即用.

看起来最有希望的是vue-monaco,但我遇到了正确整合它的问题.

AMD要求?

这是Microsoft示例中与Electron一起使用的代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Monaco Editor!</title>
    </head>
    <body>
        <h1>Monaco Editor in Electron!</h1>
        <div id="container" style="width:500px;height:300px;border:1px solid #ccc"></div>
    </body>

    <script>
        // Monaco uses a custom amd loader that overrides node's require.
        // Keep a reference to node's require so we can restore it after executing the amd loader file.
        var nodeRequire = global.require;
    </script>
    <script src="../node_modules/monaco-editor/min/vs/loader.js"></script> …
Run Code Online (Sandbox Code Playgroud)

javascript amd vue.js electron monaco-editor

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

展开segue到最后一个视图控制器

从我看到的示例中,展开segue需要一个视图控制器来展开.如果我只想在我的故事板中返回一个控制器,那么有一个简单的命令吗?

objective-c ios segue

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

如何将计算值转换为文字以进行枚举初始化

我的枚举遇到了一个问题,因为我想将case初始化为double值PI / 180。有没有办法通过常量或一些时髦的魔术来获取此计算值并将其转换为文字,以便我可以初始化枚举?

我宁愿不必做3.14....-我宁愿使用实际的编译器和硬件对此值的表示形式。

所以我的第一个尝试是:

public enum ANGLE_TYPE : Double {

    case DEGREES = Double(CGFloat(M_PI / 180.0))
    case RADIANS = 1.0
}
Run Code Online (Sandbox Code Playgroud)

我不断收到错误枚举大小写的原始值必须是文字

第二次尝试是:

public enum ANGLE_TYPE : Double {
  let d : Double = Double(CGFloat(M_PI / 180.0))

case DEGRESS = d
}
Run Code Online (Sandbox Code Playgroud)

和我得到同样的错误。

有人可以告诉我如何进行此操作。

enums swift

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

git pull / push支持颜色吗

当我这样做时git status,我的显示屏上会出现漂亮的漂亮颜色。

但是git push/pull/fetch只是单色无聊

我将:git config color.ui always设置为开,但是除了状态外,我什么也看不到。

我想念什么吗?

如果某件事被拒绝,我希望看到一条红色消息弹出。也许有一种方法可以将git输出包装在颜色处理器中?

https://git-scm.com/book/zh/v2/Customizing-Git-Git-Configuration似乎没有谈论推/拉

即我想在这里用红色将错误行涂成红色:

To ssh://<REPO ADDRESS>
 ! [rejected]        develop -> develop (fetch first)
error: failed to push some refs to 'ssh://<REPO ADDRESS>'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') …
Run Code Online (Sandbox Code Playgroud)

git bash

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

通过SSH代理主机的git clone问题

我有一个设置,在其中我们使用堡垒/跳转主机访问远程服务器,并且在执行git clone时遇到问题。

在我的git配置中,我有以下设置:

本地.ssh / config

Host *.remotedomain.org
   ProxyCommand ssh -l username jumphost nc %h 22`
   LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)

远程.ssh / config

LogLevel DEBUG1
Run Code Online (Sandbox Code Playgroud)

所以如果我这样做 ssh remoteDevel.remotedomain.org,它将通过此​​代理主机路由我,一切都很好。

情况1-远端复制

#Log into remote machine via SSH
ssh remoteDevel

#Clone repo
git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
Run Code Online (Sandbox Code Playgroud)

我注意到的是SSH调试“东西”打印出了这一行

Initialized empty Git repository in /home/USER/disjockey/.git/
debug1: Executing proxy command: exec /usr/bin/sss_ssh_knownhostsproxy -p 7999 stash.remotedomain.org
Run Code Online (Sandbox Code Playgroud)

在我看来,这就像它成为Atlassian Stash服务器的代理以拉下git repo(很好)

情况2-通过代理本地

当我在本地尝试相同的命令时,出现问题

git clone ssh://git@stash.remotedomain.org:7999/mirror/disjockey.git
Run Code Online (Sandbox Code Playgroud)

首先,我看到它试图通过最跳越

debug1: Executing proxy command: exec ssh -l USERNAME jumphost nc stash.remotedomain.org 22
....
#Lots …
Run Code Online (Sandbox Code Playgroud)

git ssh proxy

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

Avro 生成的 json 转换类问题 [kotlin]

我在编组/解组avro生成的类时遇到了一个奇怪的问题。我得到的错误是抛出一个不是枚举错误 - 除了我的类中没有任何枚举。

错误具体是这样的:

com.fasterxml.jackson.databind.JsonMappingException:不是枚举:{"type":"record","name":"TimeUpdateTopic","namespace":"org.company.mmd.time","fields":[ {"name":"time","type":"double"}]}(通过参考链:org.company.mmd.time.TimeUpdateTopic["schema"]->org.apache.avro.Schema$RecordSchema[ "enumDefault"])

测试用例

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import org.junit.Test

class TimeUpdateTopicTest {
    val objectMapper = ObjectMapper().registerModule(JavaTimeModule())

    @Test
    fun decode() {
        val t = TimeUpdateTopic(1.0)
        objectMapper.writeValueAsString(t)
    }
}
Run Code Online (Sandbox Code Playgroud)

AVDL

@namespace("org.company.mmd.time")
protocol TimeMonitor {

  record TimeUpdateTopic {
    double time;
  }
}
Run Code Online (Sandbox Code Playgroud)

avro 任务生成的 Java 类

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import org.junit.Test

class TimeUpdateTopicTest {
    val objectMapper = ObjectMapper().registerModule(JavaTimeModule())

    @Test
    fun decode() {
        val t = TimeUpdateTopic(1.0)
        objectMapper.writeValueAsString(t)
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里做一些愚蠢和/或错误的事情吗?或者这是一个实际的错误

更新

我可以使用此函数获取 JSON: …

java jackson avro kotlin

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