小编pom*_*nto的帖子

C python扩展中的分段错误

我正在为python3.7写一个C扩展模块。我有一个简单的结构作为PyObject:

typedef struct {
    PyObject_HEAD
    double attacker;
    double victim;
    double game_hardness;
    int inflation;
} RatingSystem;
Run Code Online (Sandbox Code Playgroud)

和初始化器:

static int 
RatingSystem_init(RatingSystem *self, PyObject *args, PyObject *kwargs) {
    double kek;
    static char *kwargs_list[] = {"attacker", "victim", "game_hardness", "inflation"};
    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|$dddi", kwargs_list,
                                      &self->attacker, &self->victim,
                                      &self->game_hardness, &self->inflation)) {
        return -1;
    }

    printf("Success\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我在python 3.7.3下的Mac OS上运行它,一切正常,但是如果我切换到alpine 3.10 python docker image(python:3.7-alpine),请执行以下初始化:

import rating_system
rs = rating_system.RatingSystem(attacker=1000.0, victim=1000.0, game_hardness=1300.0, inflation=1)
Run Code Online (Sandbox Code Playgroud)

我懂了Segmentation fault。在gdb下运行显示以下内容:

Program received signal SIGSEGV, Segmentation fault.
vgetargskeywords (args=0x7f87284f0050, kwargs=0x7f87284e0a00, …
Run Code Online (Sandbox Code Playgroud)

c python python-extensions docker alpine-linux

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

识别是否用鼠标右键快速按下ns按钮

我有许多以编程方式制作的NSButton,我需要识别,如果用鼠标右键按下其中一个按钮.有没有办法在swift中做到这一点?

创建按钮的代码:

var height = 0
var width = 0

var ar : Array<NSButton> = []

var storage = NSUserDefaults.standardUserDefaults()

height = storage.integerForKey("mwHeight")
width = storage.integerForKey("mwWidth")

var x = 0
    var y = 0
    var k = 1
    for i in 1...height {
        for j in 1...width {
            var but = NSButton(frame: NSRect(x: x, y: y + 78, width: 30, height: 30))
            but.tag = k
            but.title = ""
            but.action = Selector("buttonPressed:")
            but.target = self
            but.bezelStyle = NSBezelStyle(rawValue: 6)!
            ar.append(but)
            self.view.addSubview(but) …
Run Code Online (Sandbox Code Playgroud)

right-click nsbutton swift

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

Swift字符串变量本地化

我有一个大项目,在storyboard和变量中的标签中都存储了大量文本.我知道如何在标签中本地化文本,但不知道如何本地化字符串变量.你能解释一下吗或给出指南的链接.我正在使用Xcode 6.2版

macos cocoa localization swift xcode6

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

识别用户在编辑 NSTextField swift 时是否按下了箭头键

我有很多 NSTextFields,我想知道,如果用户在编辑其中一个时按下了其中一个箭头键。功能

override func keyDown(theEvent: NSEvent) {
    switch theEvent.character {
    case NSRightArrowFunctionKey:
        println(1)
        moveGor(NSRightArrowFunctionKey)
    case NSLeftArrowFunctionKey:
        moveGor(NSLeftArrowFunctionKey)
    case NSUpArrowFunctionKey:
        moveVert(NSUpArrowFunctionKey)
    case NSDownArrowFunctionKey:
        moveVert(NSDownArrowFunctionKey)
    default:
        super.keyDown(theEvent)
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。有没有其他方法可以快速做到这一点?

编辑:

我有以下扩展名NSEvent

extension NSEvent {
    var character: Int {
        let str = charactersIgnoringModifiers!.utf16
        return Int(str[str.startIndex])
    }
}
Run Code Online (Sandbox Code Playgroud)

我在之前的函数中使用的

macos keydown nstextfield swift

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

求大数除法的模

我必须找到这些数字的除法模数:

239^(10^9) 和 10^9 + 13

239^(10^9) 和 10^9 + 15

... 等等,最多 1001;

在 C++ 中仅使用本机库。怎么做?如您所见,第一个数字大约是 30 亿个符号。

我试图找到模周期的长度,但它们比 10 还要长,甚至unsigned long long int无法处理这么大的数字 (239^10)。另外我认为“大数字”算法(将数字存储为数组)对我也不起作用(500 * 10 ^ 9)是太多操作。

顺便说一句,这应该比 5 小时内更有效。

c++ algorithm modulo

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

keyDown 不能快速工作

那是我的代码:

override func keyDown(theEvent: NSEvent) {
    super.keyDown(theEvent)
    switch theEvent.character {
    case NSLeftArrowFunctionKey:
        println(1)
    case NSRightArrowFunctionKey:
        println(2)
    case NSDownArrowFunctionKey:
        println(3)
    case NSUpArrowFunctionKey:
        println(4)
    default:
        break
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我尝试识别是否按下了其中一个箭头按钮,但它始终不起作用。甚至函数 keyDown 似乎也从未被调用过。

这就是 中所写的viewDidAppear,如果这可以帮助您提供答案:

override func viewDidAppear() {
    super.viewDidAppear()
    self.view.window?.styleMask = NSClosableWindowMask | NSMiniaturizableWindowMask | NSTitledWindowMask
    var frame = self.view.window?.frame
    var newHeight = CGFloat(438)
    var newWidth = CGFloat(415)
    frame?.size = NSMakeSize(newWidth, newHeight)
    self.view.window?.setFrame(frame!, display: true)
    self.view.window?.backgroundColor = NSColor.darkGrayColor()
}
Run Code Online (Sandbox Code Playgroud)

viewDidLoad我只是添加一些不可选择和不可编辑的 NSTextFields 像这样:

var x = CGFloat(0)
    var y = …
Run Code Online (Sandbox Code Playgroud)

macos cocoa event-handling keydown swift

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