问题列表 - 第15584页

Django ORM:优化涉及多对多关系的查询

我有以下模型结构:

class Container(models.Model):
    pass

class Generic(models.Model):
    name = models.CharacterField(unique=True)
    cont = models.ManyToManyField(Container, null=True)
    # It is possible to have a Generic object not associated with any container, 
    # thats why null=True

class Specific1(Generic):
    ...

class Specific2(Generic):
    ...

...

class SpecificN(Generic):
    ...
Run Code Online (Sandbox Code Playgroud)

比如说,我需要检索Specific与特定Container有关系的所有类型的模型.

用于此的SQL或多或少是微不足道的,但这不是问题.不幸的是,我在使用ORM(特别是Django的ORM)方面不是很有经验,所以我可能在这里错过了一个模式.

当以蛮力的方式完成时, -

c = Container.objects.get(name='somename') # this gets me the container
items = c.generic_set.all() 
# this gets me all Generic objects, that are related to the container
# Now what? I need to get to …
Run Code Online (Sandbox Code Playgroud)

django orm many-to-many django-models django-queryset

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

Evernote导出格式(ENEX)到HTML,包括图片?

@解决了

我创建的两个子问题已经解决了(可以解决这个问题!),这个问题就解决了.我会将复选标记给samjudson,因为他的答案是最接近的.但是,对于实际工作的解决方案,请参阅以下子问题; 我实施的解决方案和检查的答案.

@Deprecated

我将这个问题分成两个单独的问题,因为这是一个相当复杂的问题.答案仍然是受欢迎的.

这些问题是:

  1. XSLT:将base64数据转换为图像文件
  2. XSLT:获取或匹配base64编码数据的哈希值

嗨,只是想知道是否有人在将Evernote的导出格式(即XML)转换为HTML(包括图片)方面取得了成功.我知道Evernote有一个导出到HTML功能,但是我最终想用它来做更多花哨的东西.

我设法只使用以下XSLT获取文本:

示例代码已删除

查看实施解决方案的子问题.

但是,这只是忽略了任何图片,这就是我需要帮助的地方.

绊脚石#1:Evernote将其图片存储为GIF或PNG,并在导出时,使用看似base64(我可能错误)将这些GIF和PNG直接嵌入XML中.我需要能够重建图片.如果您在文本编辑器中打开文件,请在中查找大量数据**//note/resource/data**.例如(手动添加缩进):

<resource>
<data encoding="base64">
R0lGODlhEAAQAPMAMcDAwP/crv/erbigfVdLOyslHQAAAAECAwECAwECAwECAwECAwECAwECAwEC
AwECAyH/C01TT0ZGSUNFOS4wGAAAAAxtc09QTVNPRkZJQ0U5LjAHgfNAGQAh/wtNU09GRklDRTku
MBUAAAAJcEhZcwAACxMAAAsTAQCanBgAIf8LTVNPRkZJQ0U5LjATAAAAB3RJTUUH1AkWBTYSQXe8
fQAh+QQBAAAAACwAAAAAEAAQAAADSQhgpv7OlDGYstCIMqsZAXYJJEdRQRWRrHk2I9t28CLfX63d
ZEXovJ7htwr6dIQB7/hgJGXMzFApOBYgl6n1il0Mv5xuhBEGJAAAOw==
</data>
<mime>image/gif</mime>
<resource-attributes>
    <file-name>clip_image001.gif</file-name>
</resource-attributes>
</resource>
Run Code Online (Sandbox Code Playgroud)

绊脚石#2:Evernote将每个图片的文件名存储在资源节点
**//note/resource/resource-attributes/file-name**
下,但是,在它引用图片的实际注释中,它不是通过文件名引用图片,而是通过其哈希引用图片,例如:

<en-media hash="4aaafc3e14314027bb1d89cf7d59a06c" type="image/gif" border="0" width="16" height="16" alt="Alt Text"/>
Run Code Online (Sandbox Code Playgroud)

任何人都可以阐明如何在XML中处理(base64)编码的二进制数据?

编辑

我从评论和答案中了解到,简单的'XSLT将无法完成处理图像的工作.我使用的XSLT处理器是Xalan,但是,如果这对于图像处理或base64来说还不够好,那么我建议你做一个这样做!

此外,根据要求,这是一个示例Evernote导出文件.上面的代码片段仅仅是其中的一部分.我已将其剥离,使其仅包含一个注释并编辑其中的大部分文本,并为了清晰起见添加了缩进.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export.dtd">
<en-export export-date="20091029T063411Z" application="Evernote/Windows" version="3.0">

<note>
    <title>A title here</title>
    <content><![CDATA[
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml.dtd">
        <en-note bgcolor="#FFFFFF"> …
Run Code Online (Sandbox Code Playgroud)

xslt hash file-io image-processing evernote

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

[Aptana/Eclipse]:哪一个更好?

我想知道哪一个稳定,快速且易于使用?

aptana eclipse

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

在Java中动态创建异步消息队列

我需要在Java中动态创建异步消息队列.我的用例是通过多个SMTP服务器发送电子邮件:我需要按顺序强制执行相同SMTP服务器的电子邮件,但可以同时处理发送到不同SMTP服务器的电子邮件.我以前使用过JMS,但据我所知它只允许编译时队列创建,而我需要在运行时创建队列(每个SMTP服务器一个队列).

我是否遗漏了有关JMS的内容,或者是否有其他工具/建议我应该查看一下?

java asynchronous jms message-queue jboss-mdb

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

Linux:如何获取刚刚从构造函数加载的共享对象的全名?

在Windows上,几个参数传递给DllMain构造函数:

BOOL WINAPI DllMain(  
  __in  HINSTANCE hinstDLL,  
  __in  DWORD fdwReason,  
  __in  LPVOID lpvReserved  
);
Run Code Online (Sandbox Code Playgroud)

从hinstDLL我可以使用GetModuleFileName()获取DLL本身的完全限定文件名:

LPTSTR str = new TCHAR[256];  
int libNameLength = GetModuleFileName(hinstDLL, str, 256);  
delete[] str;  
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,str现在包含刚加载的DLL的全名,例如C:\ Windows\System32\MyFile.dll.

在Linux上,没有参数传递给共享对象构造函数:

void `__attribute__` ((constructor)) on_load(void);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何获取DLL的全名?如果您的解决方案也适用于Mac,则可获得额外的荣 :-)

linux dll constructor shared object

8
推荐指数
1
解决办法
3067
查看次数

通过PHP将查询结果导出为CSV

假设我在一个名为$ query的变量中存储了一个查询.我想在结果页面上创建一个名为"export as CSV"的小超链接.我该怎么做呢?

php mysql csv export-to-excel

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

用于在有向图中找到不同路径的数量的算法

可能重复:
图算法查找两个任意顶点之间的所有连接

我有一个有向图,我可以使用什么算法来查找2个特定顶点之间的不同非循环路径的数量,并计算在这些不同路径中使用任何路径的最大次数?如果它们访问不同数量的顶点或以不同的顺序访问顶点,则两条路径是不同的.

algorithm graph

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

如何使用mySQL SELECT IF语句行来加入另一个表?

我在mySQL SELECT语句中使用IF语句,并且根据IF语句的返回结果,我想加入另一个表.

例如.SELECT name,IF(apple ='brown',color1,color2)AS成熟度来自苹果JOIN apple_type ON apple_type.color =成熟度

我的问题是我收到错误消息:'on子句'中的未知列'成熟'.有没有人知道如何根据Select子句中的IF/ELSE结果加入另一个表?

mysql sql join

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

在Java中使用分隔符连接值列表的最优雅方法是什么?

我从来没有找到一种干净利落的方式来做到以下几点.

假设我有一个列表/数组字符串.

abc
def
ghi
jkl
Run Code Online (Sandbox Code Playgroud)

我想将它们连接成一个由逗号分隔的单个字符串,如下所示:

abc,def,ghi,jkl
Run Code Online (Sandbox Code Playgroud)

在Java中,如果我写这样的东西(请原谅语法),

String[] list = new String[] {"abc","def","ghi","jkl"};
String str = null;
for (String s : list)
{
   str = str + s + "," ;
}

System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

我去拿

abc,def,ghi,jkl,  //Notice the comma in the end
Run Code Online (Sandbox Code Playgroud)

所以我必须重写上面的for循环,如下所示

...
for (int i = 0; i < list.length; i++)
{
   str = str + list[i];
   if (i != list.length - 1)
   {
     str = str + ",";
   }
}
...
Run Code Online (Sandbox Code Playgroud)

这可以在Java中以更优雅的方式完成吗?

我肯定会使用StringBuilder/Buffer来提高效率,但我想说明这个案例而不是太冗长.优雅,我的意思是一个避免if在循环内部进行丑陋(?)检查的解决方案.

java string

10
推荐指数
2
解决办法
5684
查看次数

Javascript原型是否具有与Lua的__index和__newindex等效的东西?

我想在引用的属性/方法不存在时启动的Javascript对象上定义一种行为。在Lua中,您可以使用元表和__index & __newindex方法来执行此操作。

--Lua code
o = setmetatable({},{__index=function(self,key)
  print("tried to undefined key",key)
  return nil
end
})
Run Code Online (Sandbox Code Playgroud)

所以我想知道javascript中是否有类似的东西。

我要实现的是一个通用的RPC接口,其工作方式如下(无效的Javascript):

function RPC(url)
{
    this.url = url;
}

RPC.prototype.__index=function(methodname) //imagine that prototype.__index exists
{ 
    AJAX.get(this.url+"?call="+ methodname);
}

var proxy = RPC("http://example.com/rpcinterface");
proxy.ServerMethodA(1,2,3);
proxy.ServerMethodB("abc");
Run Code Online (Sandbox Code Playgroud)

那我该怎么做呢?

可以做到吗?

javascript lua prototype

4
推荐指数
2
解决办法
1668
查看次数