我有一个自定义控件,它有一个ContentPresenter,它将内容设置为任意对象.此对象对其类型没有任何约束,因此我希望此控件基于应用程序或Generic.xaml中定义的数据模板定义的任何数据模板显示其内容.如果在应用程序中我定义了一些数据模板(没有键,因为我希望它自动应用于该类型的对象),并且我使用绑定到该类型对象的自定义控件,数据模板将自动应用.但我在generic.xaml中为某些类型定义了一些数据模板,我在其中定义了自定义控件样式,并且这些模板未自动应用.这是generic.xaml:
<DataTemplate DataType="{x:Type PredefinedType>
<!-- template definition -->
<DataTemplate>
<Style TargetType="{x:Type CustomControl}">
<!-- control style -->
</Style>
Run Code Online (Sandbox Code Playgroud)
如果我将"PredefinedType"类型的对象设置为contentpresenter中的内容,则不会应用数据模板.但是,如果我在app.xaml中为使用自定义控件的应用程序定义数据模板,则它可以正常工作.
有人有线索吗?我真的不能假设控件的用户将定义这个数据模板,所以我需要一些方法来将它与自定义控件联系起来.
来自维基百科
我需要以与使用python 3.x中的'nonlocal'关键字类似的方式访问外部函数变量.有没有办法在python 2.6中做到这一点?(不一定使用nonlocal关键字)
我有一个requeriment使用django在数据库中存储图像,为此我创建了一个自定义字段:
from django.db import models
class BlobField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self, connection):
#TODO handle other db engines
backend = connection.settings_dict['ENGINE']
if backend == 'django.db.backends.postgresql':
return 'bytea'
elif backend == 'django.db.backends.sqlite3':
return 'blob'
else:
raise Exception('unsuported db')
def to_python(self, value):
#TODO
return value
def get_db_prep_value(self, value, connection, prepared=False):
#TODO
return value
Run Code Online (Sandbox Code Playgroud)
我已经实现了一个自定义存储系统来使用自定义模型(包含上面的BlobField)来处理图像的存储/检索.'get_db_prep_value'方法中的'value'参数是包含图像二进制数据的'StringIO'对象.问题是我不知道在'get_db_prep_value'方法中返回什么,因为'StringIO'对象肯定会包含不可打印的字符.
我对这个问题有一些疑问:
我想从stdin中删除固定数量的一些退格字符ocurrences(\ b).到目前为止,我试过这个:
echo -e "1234\b\b\b56" | sed 's/\b{3}//'
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如何使用sed或其他一些unix shell工具实现这一目的?
我正在处理的项目要求我将javascript数字(这是双打)存储为数据库表中的BLOB主键(不能使用数据库本机浮点数据类型).所以基本上我需要将数字序列化为字节数组,方式如下:
1 - 字节数组的长度为8(这是序列化双精度通常所需的)
2 - 字节数组必须保持自然顺序,以便数据库透明地对索引b-tree中的行进行排序.
一个简单的函数,它接受一个数字并返回一个表示字节的数字数组,这正是我所寻求的.我更喜欢用javascript编写函数,但是java,C,C#,C++或python中的答案也会被接受.
我有一个调用的类型A,我想创建多个实例,std::unique_ptr<A, void(*)(A *ptr)>而不是每次都显式传递自定义删除器.这就是我想出的:
void ADeleter(A *ptr) {
// custom deletion logic
}
class APtr : public std::unique_ptr<A, void(*)(A *ptr)> {
APtr() : APtr(nullptr) {}
APtr(A *ptr) : std::unique_ptr<A, void(*)(A *ptr)>(ptr, ADeleter) {}
};
Run Code Online (Sandbox Code Playgroud)
std::unique_ptr为了使用自定义删除器抽象构造,继承(或其他智能指针类)是安全的(甚至是一种好的做法)吗?
我不得不将.NET 3.5迁移到4.0,但有些dll没有加载,谷歌搜索后我发现创建app.config会解决它:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我想在不使用配置文件的情况下设置这些选项,是否可能?
在几个地方我必须从dict中检索一些值,但需要检查该值的键是否存在,如果不存在,我使用一些默认值:
if self.data and self.data.has_key('key'):
value = self.data['key']
else:
value = self.default
....
Run Code Online (Sandbox Code Playgroud)
我喜欢python的一件事是,和/或布尔运算符返回其中一个操作数.我不确定,但如果异常评估为false,则上述代码可以重写如下:
value = self.data['key'] or self.default
Run Code Online (Sandbox Code Playgroud)
我认为直观的错误应该评估为false(比如在bash编程中).python将异常视为真是否有任何特殊原因?
编辑:
我只想表明我对"异常处理"主题的看法.来自维基百科:
"从例程的作者的角度来看,引发异常是一种有用的方式来表示例程无法正常执行.例如,当输入参数无效时(例如,除法中的零分母)或者它所依赖的资源是不可用的(如丢失的文件或硬盘错误).在没有例外的系统中,例程需要返回一些特殊的错误代码.但是,这有时会因半无差别问题而变得复杂,其中用户是例程需要编写额外的代码来区分正常的返回值和错误的返回值."
正如我所说,提出异常只是从函数返回的一种奇特方式."异常对象"只是指向数据结构的指针,该数据结构包含有关错误的信息以及如何在高级语言上处理错误仅取决于VM的实现.我决定通过查看'dis'模块的输出来了解python 2.6.6如何处理异常:
>>> import dis
>>> def raise_exception():
... raise Exception('some error')
...
>>> dis.dis(raise_exception)
2 0 LOAD_GLOBAL 0 (Exception)
3 LOAD_CONST 1 ('some error')
6 CALL_FUNCTION 1
9 RAISE_VARARGS 1
12 LOAD_CONST 0 (None)
15 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
很明显python在字节码级别有异常概念,但即使它没有,它仍然可以使异常处理结构表现得像它们那样.采取以下功能:
def raise_exception():
... return Exception('some error')
...
>>> dis.dis(raise_exception)
2 0 LOAD_GLOBAL 0 (Exception)
3 LOAD_CONST 1 …Run Code Online (Sandbox Code Playgroud) 在函数实现上方的注释中(https://golang.org/src/strings/builder.go),我们看到:“返回的错误始终为零。”。这同样适用于写入字符串生成器的所有其他变体。
在内部,如果内部缓冲区已满并且操作系统拒绝重新分配所需的内存,则此类函数可能会失败,但显然在实现中没有处理这一点。
该 API 的用户是否应该考虑 Write* 在标准库的未来版本中返回错误的可能性?如果不是,为什么会返回错误?
他们使用像Mono的PInvoke这样的东西吗?或者更像是在运行时启动之前注册的内部调用?java有一个基本库来处理像mscorlib.dll这样的本机调用吗?如果我想在C代码中调用JVM,它库是否会查找.so/.dll文件?如果我静态链接所有JRE本机库,它会对Java标准库产生影响吗?
我有下表:
CREATE TABLE "posting" (
"id" integer NOT NULL PRIMARY KEY,
"amount" real NOT NULL,
"balance" real NOT NULL,
"account_id" integer NOT NULL REFERENCES "account" ("id"),
"asset_type_id" integer NOT NULL REFERENCES "asset_type" ("id")
)
Run Code Online (Sandbox Code Playgroud)
对于此表,我以无间隙的方式手动生成ID(无法删除记录).保证以下声明将返回最新记录:
SELECT * FROM posting ORDER BY id DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)
问题是,现在我需要不仅检索"account_id"和"asset_type_id"的每个组合的最后一条记录,而且还要检索最后一条记录.例如,假设我有两个'帐户'和两个'asset_types'(都带有ID 1和2)和以下记录(省略金额和余额):
id | account_id | asset_type_id
1 | 1 | 1
2 | 2 | 1
3 | 1 | 2
4 | 2 | 1
5 | 2 | 2
6 | 2 …Run Code Online (Sandbox Code Playgroud) python ×4
c# ×2
django ×2
wpf ×2
.net ×1
app-config ×1
bash ×1
c ×1
c++ ×1
c++11 ×1
datatemplate ×1
go ×1
java ×1
javascript ×1
jvm ×1
jvm-hotspot ×1
linux ×1
natural-sort ×1
postgresql ×1
python-2.6 ×1
python-3.x ×1
sed ×1
shell ×1
sql ×1
xaml ×1