小编sap*_*api的帖子

如何抑制vim-latex中的警告?

我想在vim-latex中隐藏一些有问题的警告,但我似乎无法弄清楚语法.

我目前有:

let g:tex_IgnoredWarnings = 
    \'Underfull'."\n".
    \'Overfull'."\n".
    \'specifier changed to'."\n".
    \'You have requested'."\n".
    \'Missing number, treated as zero.'."\n".
    \'There were undefined references'."\n".
    \'Citation %.%# undefined'."\n".
    \'Double space found.'."\n"
let g:Tex_IgnoreLevel = 8
Run Code Online (Sandbox Code Playgroud)

对我来说,根据文档看起来是正确,但仍然出现"发现双重空间"警告(澄清,"仍然出现"我的意思是它在屏幕的左侧突出显示S>).

有任何想法吗?

vim latex

10
推荐指数
1
解决办法
3184
查看次数

如何在可能处于通用模式的文件流中使用io原语(搜索,读取)?

我有一个file可以在通用模式下打开或不打开的对象.(file.mode如果有帮助,我可以访问此模式).

我想使用标准io方法处理这个文件:readseek.

如果我以非通用模式打开文件,一切都很好:

In [1]: f = open('example', 'r')

In [2]: f.read()
Out[2]: 'Line1\r\nLine2\r\n' # uhoh, this file has carriage returns

In [3]: f.seek(0)

In [4]: f.read(8)
Out[4]: 'Line1\r\nL'

In [5]: f.seek(-8, 1)

In [6]: f.read(8)
Out[6]: 'Line1\r\nL' # as expected, this is the same as before

In [7]: f.close()
Run Code Online (Sandbox Code Playgroud)

但是,如果我以通用模式打开文件,我们遇到了一个问题:

In [8]: f = open('example', 'rU')

In [9]: f.read()
Out[9]: 'Line1\nLine2\n' # no carriage returns - thanks, 'U'!

In …
Run Code Online (Sandbox Code Playgroud)

python io file-io

9
推荐指数
1
解决办法
424
查看次数

如何将类对象转换为符合协议

我试图将 Class 对象转换为某个协议,该协议定义了该类实现的类方法 (+)。

我知道如何使用 (id<protocol>) 执行此操作,如本问题所述,但我似乎无法找出 Class 对象的正确方法。

基本场景如下。

我有一个协议:

@protocol Protocol <NSObject>
+ (id)classMethod:(id)arg;
@end
Run Code Online (Sandbox Code Playgroud)

然后,我有一个接受 Class 对象的函数,它知道该对象有时符合基于另一个参数的协议(这显然非常简单):

- (id)someMethodWithClass:(Class)cls andUseArg:(BOOL)arg
{
    id instance;
    if (arg != nil) {
        instance = [(Class<Protocol>)cls classMethod:arg];
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我没有收到任何关于此的警告,而且它对我来说看起来是正确的。(在任何情况下我都不会看到任何错误,因为我可以保证如果 arg != nil 那么该类就符合。)

但是,我没有在 Xcode 中获得自动完成功能,这让我想知道这是否是正确的方法。有什么想法吗?(请注意,我对 id<Protocol> 的实例不感兴趣。)

objective-c ios

7
推荐指数
1
解决办法
2444
查看次数

django防止删除模型实例

我有一个models.Model子类,它代表我的mysql数据库上的一个View(即managed = False).

但是,在运行我的单元测试时,我得到:

DatabaseError:(1288,'DELETE的目标表my_view_table不可更新')

该删除请求的来源是(间接)通过外键.我有(简化):

class MyViewModel(models.Model):
    problematic_field = models.ForeignKey(ActualTableModel) # specifying on_delete=models.SET_NULL simply replaces the DELETE error with an UPDATE one
Run Code Online (Sandbox Code Playgroud)

在我的测试的tearDown期间,我正在删除ActualTableModel实例,并且看起来django正在遵循记录的行为:

当Django删除一个对象时,它会模拟SQL约束ON DELETE CASCADE的行为 - 换句话说,任何具有指向要删除的对象的外键的对象都将随之删除.

当应用于(managed = False)视图时,这似乎会导致问题.

我试过覆盖删除方法以防止删除:

class MyViewModel(models.Model):
    ...
    def delete(self, *args, **kwargs):
        pass # deletion of a view row is never valid
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题.

我该如何防止这种行为?

python django django-models

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

OpenCV Perspective Transform给出了意想不到的结果

我试图从梯形(在第一个图像中)转换为矩形(在第二个图像中),但得到一个奇怪的结果(在第三个图像中).

在此输入图像描述

我的计划是使用透视变换,由梯形的四个角点和矩形的四个角点定义.

在这个例子中,对于梯形,它们是:

ptsTrap = [[  50.          100.        ]
           [  50.          200.        ]
           [ 250.           64.73460388]
           [ 250.          235.26539612]]
Run Code Online (Sandbox Code Playgroud)

对于矩形:

ptsRect = [[  50.  100.]
           [  50.  200.]
           [ 250.  100.]
           [ 250.  200.]]
Run Code Online (Sandbox Code Playgroud)

我从这些点获得了一个透视变换:

T = cv2.getPerspectiveTransform(ptsTrap, ptsRect)
Run Code Online (Sandbox Code Playgroud)

然后从中构建图像:

arrTrapToRect = cv2.warpPerspective(arrTrap, T, arrTrap.shape[:2])
Run Code Online (Sandbox Code Playgroud)

但是,正如您从图像中看到的那样,这并未给出预期的转换.

我似乎无法弄清楚为什么即使定义变换的点也没有根据它进行投影.有任何想法吗?

python opencv transformation

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

Python:带有'.join'的Munging数据(TypeError:序列项0:期望字符串,找到元组)

我有以下格式的数据:

[('A', 'B', 'C'),
 ('B', 'C', 'A'),
 ('C', 'B', 'B')]
Run Code Online (Sandbox Code Playgroud)

我想要得到这个:

ABC
BCA
CBB
Run Code Online (Sandbox Code Playgroud)

我当时能够转换一个元组:

>> "".join(data[0])
.. 'ABC'
Run Code Online (Sandbox Code Playgroud)

但是,当我试图转换整个列表时,Python给了我一个错误:

>> "".join(data[:])
.. TypeError: sequence item 0: expected string, tuple found
Run Code Online (Sandbox Code Playgroud)

任何建议我将如何能够转换整个列表?

谢谢!

python string tuples

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

如何在 Excel VSTO 加载项中为 OnUndo 调用 C# 方法?

我目前正在用 C# 为 Excel 编写 VSTO 加载项,但无法使撤消功能正常工作。

据我从文档中可以看出,您打算Application.OnUndo用来注册撤消回调。但是,我不清楚Procedure参数是否可以引用 C# 方法。


理想情况下,我想将撤消回调设置为实例方法,例如:

this.Application = Globals.ThisAddIn.Application;
// ...
this.Application.OnUndo("Undo color change", "this.UndoTextColorChange");
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然这会注册撤消,但实际上在 Excel 中单击“撤消”会出现错误:

无法运行宏“this.UndoTextColorChange”。宏在此工作簿中可能不可用,或者可能禁用了所有宏。

对我来说,这几乎表明Procedure参数必须是 VB 宏(而不是 C# 方法)。但是,也有可能我无法计算出在.OnUndo调用中使用的完全限定的过程名称。


是否可以Application.OnUndo调用 C# 方法? 如果是这样,我应该使用什么作为 的论点Procedure?如果不是,撤消功能通常如何在 C# VSTO 插件中实现?

c# excel vsto

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

对于多个并发用户,在TempData中存储值是否安全?

我一直在使用TempData在页面请求之间保留我的模型,否则我将无法访问我需要的模型中的类的特定属性.

(这是一个轻微的题外话和简化,但基本上我有一个具有.name和.active属性的对象列表.我有一个CheckBoxFor .active属性,并且保留,但.name属性设置为null提交表单时;我也需要访问该属性,所以我一直在TempData中存储旧模型,然后在需要时复制该属性.有没有更好的方法呢?我很惊讶我正在使用的对象的属性将被取消.)

当用户选中复选框时,模型存储在TempData中,从而提交表单.当用户单击按钮时,稍后会读取TempData.(没有干预请求.)

以这种方式使用TempData对多个用户安全吗?换句话说,每个客户端是否都有自己的TempData副本?我担心的情况大致如下:

  1. 用户1单击复选框,将其模型保存到TempData
  2. 用户2单击复选框,将她的模型保存到TempData
  3. 用户1单击按钮,提交表单并从TempData读取模型

我不确定的是用户1将获得哪种型号.有人可以请我加油吗?

c# asp.net-mvc razor

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

你能以与字节无关的方式获得指向低位字节的指针吗?

我有一个16位变量data,即:

volatile uint16_t data;
Run Code Online (Sandbox Code Playgroud)

我需要根据外部传感器上两个8位寄存器的内容填充该值.这些通过I2C/TWI访问.

我的TWI例程是async*,并且有签名:

bool twi_read_register(uint8_t sla, uint8_t reg, uint8_t *data, void (*callback)(void));
Run Code Online (Sandbox Code Playgroud)

这读取的价值regsla*data,然后调用callback().

如果我知道它uint16_t被安排在记忆中,比如说MSB LSB,那么我可以这样做:

twi_read_register(SLA, REG_MSB, (uint8_t *)&data, NULL);
twi_read_register(SLA, REG_LSB, (uint8_t *)&data + 1, NULL);
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢将endian依赖到我的代码中.有没有办法以与endian无关的方式实现这一目标?

(旁注:我目前的实际解决方法是使用结构,即:

typedef struct {
    uint8_t msb;
    uint8_t lsb;
} SensorReading;
Run Code Online (Sandbox Code Playgroud)

但我很好奇,如果我能用一个简单的方法做到这一点uint16_t)

编辑

(*async我的意思是分裂阶段,*data即将在未来的某个时间点设置,此时callback如果请求,将通过函数通知被调用者)

c embedded endianness

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

嵌套类实例的有用默认__repr__

我有一个表示接口的抽象基类.此类的子类存储为此类的其他子类的属性.

例如:

class AbstractBase(object):
    pass

class Child(AbstractBase):
    def __init__(self, cls1, cls2):
        assert isinstance(cls1, AbstractBase)
        assert isinstance(cls2, AbstractBase) # just to show they're instances

        self.cls1 = cls1
        self.cls2 = cls2
Run Code Online (Sandbox Code Playgroud)

层次结构的深度和布局不能提前知道,但不会递归.

我能提出的__repr__AbstractBase,让我看到每个子类的性质研究的一个有用的方法是什么?

我目前的做法是:

from pprint import pformat

class AbstractBase(object):
    def __repr__(self):
        return self.__class__.__name__ + '\n' \ 
                + pformat({k:v for k,v in self.__dict__.iteritems()
                           if not '__' in k})
Run Code Online (Sandbox Code Playgroud)

对于基类(没有属性是子类AbstractBase,这会输出一些可读的内容,例如:

MyClass
{'var1': 1,
 'var2': 2}
Run Code Online (Sandbox Code Playgroud)

但是,对于具有AbstractBase子类的类,它会中断,因为很难判断父类的起始位置和另一个结束的位置(假设__repr__上面没有给出进一步缩进的更多嵌套级别).

我会对下面的内容感到满意,想象cls1cls2拥有一个int属性var: …

python class

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

如果在Swift中可选的向下转换失败,你能继续循环吗?

如果元素上的某些条件失败,那么继续循环是一种非常常见的习惯用法.

假设我们想对某种类型的所有子视图做一些事情(并且出于某种原因,不想躲避类型的事情).理想情况下,我们会写:

for view in self.subviews as [NSView] { // cast required in beta 6
    if (let specificView = view as? SpecificView) == nil { // <- Error here
        continue
    }

    // Do things at a sensible indentation level
}
Run Code Online (Sandbox Code Playgroud)

上面的代码失败,"模式变量绑定不能出现在表达式中",就像在这个问题中一样.

但是,这似乎是一种常见的模式,必须有一种方法可以在Swift中实现.我错过了什么吗?


编辑:现在我考虑一下,这似乎与if let语句的范围规则相冲突,这些规则只将变量范围限定在内部块中.

考虑到这一点,我想稍微扩大一下这个问题:人们如何在Swift中普遍应用这种模式?

optional swift

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

你可以使用map来创建没有包装器的实例吗?

在Python中,您可以将类的名称作为参数map,以便创建该类的实例:

class Point(object):
    def __init__(self, (x, y)):
        self.x = x
        self.y = y

coords = [(1., 2.), (3., 4.)]
pts = map(Point, coords)
Run Code Online (Sandbox Code Playgroud)

这经常被证明是一个方便的模式,所以我想在Swift中尝试相同的东西.


首先,我们建立了我们的Point课程:

import Cocoa

class Point
{
    var x: Float
    var y: Float

    init(x: Float, y: Float) {
        self.x = x
        self.y = y
    }
}

var pt = Point(x: 1, y: 2) // works fine
Run Code Online (Sandbox Code Playgroud)

但是当我们尝试使用.map创建实例时,我们会收到错误:

let coords: (Float,Float)[] = [(1, 2), (3, 4)]

// (Point).Type is not convertible to …
Run Code Online (Sandbox Code Playgroud)

map swift

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

使用NSLayoutConstraints调整当前视图的大小

我正在尝试使用NSLayoutConstraints 设置视图的布局.

我可以在视图中正确设置,但是如果约束需要,我还需要能够调整当前视图(我正在设置约束的视图).换句话说,我想用灵活的窗口设置固定的内容大小,而不是反过来.

基本上,我有:

NSDictionary *views = [NSDictionary dictionaryWithObjectsAndKeys:self.v1, @"v1",
                       self.v2, @"v2",
                       nil];
// Set horizontal constraints
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[v1]-|"
                                                             options:0
                                                             metrics:nil
                                                               views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[v2]-|"
                                                             options:0
                                                             metrics:nil
                                                               views:views]];
// Set vertical constraints
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[v1]-[v2]-|"
                                                             options:0
                                                             metrics:nil
                                                               views:views]];
// Initialise height constraint for v1
self.v1Height = [NSLayoutConstraint constraintWithItem:self.v1
                                                attribute:NSLayoutAttributeHeight
                                                relatedBy:NSLayoutRelationEqual
                                                   toItem:nil
                                                attribute:NSLayoutAttributeNotAnAttribute
                                               multiplier:1
                                                 constant:50];
Run Code Online (Sandbox Code Playgroud)

如果我稍后更改self.v1Height(通过删除它,重新创建它,然后读取它),我希望框架self扩展(或收缩)以适应更改的高度.

我不确定它是否相关(因为我比iOS更熟悉iOS),但这是一个内容视图NSPopover.

为实现这一目标,我需要添加什么约束?

cocoa objective-c autolayout nslayoutconstraint

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