小编sie*_*z0r的帖子

适用于p:selectManyCheckbox的Primefaces工具提示

我想为a中的每个元素添加一个工具提示p:selectManyCheckBox.但是我无法想出解决方案.

我有一个Role有3个属性的类,"id"(长),"name"(字符串)和"description"(字符串).显示名称,我希望将描述作为工具提示.

这是一段有效的代码:

<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <f:selectItems value="#{roleBean.roles}" var="role" itemLabel="#{role.name}" itemValue="#{role}"/>
</p:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)

roleConverter是一个FacesConverter转换Role为id,反之亦然.

我想出了这个:

<p:selectManyCheckbox layout="pageDirection" value="#{roleBean.selectedRoles}" converter="roleConverter">
    <c:forEach var="role" items="#{roleBean.roles}">
        <f:selectItem id="role#{role.id}" itemLabel="#{role.name}" itemValue="#{role}" />
        <p:tooltip for="role#{role.id}" value="#{role.description}"/>
    </c:forEach>
</p:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用.

jsf tooltip primefaces

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

在base64字符串中每76个字符后插入换行符

我试图将位图图像转换为base64字符串,然后将其作为二进制blob插入数据库.base64字符串需要以每76个字符后的新行字符进行编码.这样做的最好的pythonic方法是什么?

python base64

8
推荐指数
2
解决办法
8403
查看次数

列出命名空间包中的模块

我正在尝试让Python列出命名空间包中的所有模块.

我有以下文件结构:

cwd
|--a
|  `--ns
|     |--__init__.py
|     `--amod.py
|--b
|  `--ns
|     |--__init__.py
|     `--bmod.py
`--c
   `--ns
      |--__init__.py
      `--cmod.py
Run Code Online (Sandbox Code Playgroud)

每个都__init__.py通过以下行将它的包定义为命名空间包:

__import__('pkg_resources').declare_namespace(__name__)
Run Code Online (Sandbox Code Playgroud)

amod模块包含一个类A,bmod包含另一个类Bcmod包含C该类.

拥有干净的环境时会发生以下情况:

>>> import inspect, sys, glob
>>> sys.path += glob.glob('*')
>>> import ns
>>> inspect.getmembers(ns, inspect.ismodule)
[]
Run Code Online (Sandbox Code Playgroud)

如您所见,未列出模块.

现在,当我手动导入模块然后再次调用inspect时:

>>> inspect.getmembers(ns, inspect.ismodule)
[('amod', <module 'ns.amod' from 'a/ns/amod.pyc'>), ('bmod', <module 'ns.bmod' from 'b/ns/bmod.pyc'>), ('cmod', <module 'ns.cmod' from 'c/ns/cmod.pyc'>)]
Run Code Online (Sandbox Code Playgroud)

现在我想要在inspect不手动导入模块的情况下调用工作,那么我该如何实现呢?

python namespaces module package inspect

8
推荐指数
0
解决办法
1104
查看次数

模块函数的Python单元测试命名约定

在编写测试时,我通常将前面的模块命名test_spam.pytest_spam.py.这使得查找测试变得容易.在模块中测试类时,我创建了unittest.TestCase一个类似于类名的派生,后缀为Test.例如Spam变成SpamTest(不像TestSpam这听起来像是测试实现Spam).然后通过带有前缀test_和后缀_testcondition或其他描述性后缀的测试函数来测试类函数.我发现这很有效,因为包含了原始对象名称.

当我想测试模块级功能时会出现问题.遵循我的常规结构,我将创建一个unittest.TestCase与函数同名的衍生物,后缀为Test.这样做的问题是类名称是驼峰式的,函数名称是低位的,带有下划线来分隔单词.忽略的命名约定some_function变成SomeFunctionTest.我忍不住觉得这很难看.

什么会更合适?什么是常见做法?是否有类似pep8的'标准'?你用什么?

python unit-testing naming-conventions

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

为什么Python中的08或09无效?

在Python解释器,08并且09似乎无效.例:

>>> 01
1
>>> 02
2
>>> 03
3
>>> 04
4
>>> 05
5
>>> 06
6
>>> 07
7
>>> 08
  File "<stdin>", line 1
    08
     ^
SyntaxError: invalid token
>>> 09
  File "<stdin>", line 1
    09
     ^
SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,只是似乎0809没有起作用.这些特殊价值观还是什么?

python python-2.7

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

使用cgi.FieldStorage解析multipart/form-data; 无钥匙

以下代码应该能够在Python 2.7和Python 3.x中运行.

from __future__ import unicode_literals
from __future__ import print_function

import cgi
try:
    from StringIO import StringIO as IO
except ImportError:
    from io import BytesIO as IO

body = """
--spam
Content-Disposition: form-data; name="param1"; filename=blob
Content-Type: binary/octet-stream

value1
--spam--
"""

parsed = cgi.FieldStorage(
    IO(body.encode('utf-8')),
    headers={'content-type': 'multipart/form-data; boundary=spam'},
    environ={'REQUEST_METHOD': 'POST'})

print([key for key in parsed])
Run Code Online (Sandbox Code Playgroud)

在Python 2.7中它运行正常并输出['param1'].然而,在Python 3.4中,它输出[None].

我无法FieldStorage在Python 3中获得可用的结果.我怀疑内部发生了一些变化,我现在正在使用它.但是我似乎无法弄清楚是什么.任何帮助表示赞赏.

python cgi multipartform-data python-3.x

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

Sphinx graphviz 继承图增加节点大小

我正在尝试使用sphinx.ext.inheritance_diagram扩展在 Sphinx 中生成一个继承图。这使用 Graphviz 来绘制图表。

这不是一个巨大的图表,似乎有足够的空间来增加节点的大小,因此它们是可读的。但是我无法让 Graphviz 这样做。我试过增加/减少字体大小、宽度、高度、大小等,但我的努力没有使图表可读。

在我的conf.py我有:

inheritance_graph_attrs = dict(rankdir="TB", ratio='fill')
Run Code Online (Sandbox Code Playgroud)

为了生成一个模块的继承图,我在适当的rst文件中包含了以下指令:

.. inheritance-diagram:: package.module
Run Code Online (Sandbox Code Playgroud)

这给了我下图:

生成图

我认为增加节点的大小应该可以解决问题,但我不知道该怎么做。

python diagram graphviz python-sphinx

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

Python asyncio强制超时

使用asyncio可以在超时时执行协程,以便在超时后取消:

@asyncio.coroutine
def coro():
    yield from asyncio.sleep(10)

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(coro(), 5))
Run Code Online (Sandbox Code Playgroud)

上面的示例按预期工作(它在5秒后超时).

但是,当协程不使用asyncio.sleep()(或其他asyncio协同程序)时,它似乎没有超时.例:

@asyncio.coroutine
def coro():
    import time
    time.sleep(10)

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait_for(coro(), 1))
Run Code Online (Sandbox Code Playgroud)

运行时间超过10秒,因为time.sleep(10)未取消.在这种情况下是否可以强制取消协程?

如果应该使用asyncio来解决这个问题,我该怎么做?

python python-asyncio

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

XMLSerializer保持集合中的项目大写

我需要在驼峰套管中导出一组物品,为此我使用了一个包装.

班级本身:

[XmlRoot("example")]
public class Example
{
    [XmlElement("exampleText")]
    public string ExampleText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这序列化很好:

<example>
    <exampleText>Some text</exampleText>
</example>
Run Code Online (Sandbox Code Playgroud)

包装:

[XmlRoot("examples")]
public class ExampleWrapper : ICollection<Example>
{
    [XmlElement("example")]
    public List<Example> innerList;

    //Implementation of ICollection using innerList
}
Run Code Online (Sandbox Code Playgroud)

然而,Example由于某种原因,这会将包裹的s 大写,我试图用它来覆盖它,XmlElement但这似乎没有达到预期的效果:

<examples>
    <Example>
        <exampleText>Some text</exampleText>
    </Example>
    <Example>
        <exampleText>Another text</exampleText>
    </Example>
</examples>
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么或者有更简单的方法?

c# collections camelcasing xml-serialization wrapper

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

URL,正文或标题中的RESTful API子类型?

我对哪个RESTful设计更好而感到困惑.

对于API我有三种类型; Question,AnswerStudent.该Question类型有两种亚型; MultipleChoiceOpen.该Question类型将来可能会有更多的子类型.请注意,子类型具有公共和不同(可选)属性.Answer适用于所有问题.

我已经看到过类似的问题(REST Api中的建模对象继承,如何使用继承建模RESTful API?),给定的答案指向使用通用URL并指定正文中的类型.但是,我不觉得答案是否具有权威性(没有提及最佳实践,也没有提及很多赞成等).

我正在寻找基于事实而非意见的权威,可靠的答案.

我将在下面解释可能的设计.

输入网址

可以使用请求所有问题的列表GET /questions.这将返回包含问题摘要的JSON列表:

[
  {
    "url": "http://example.com/questions/multiplechoice/1",
    "name": "example question"
  },
  {
    "url": "http://example.com/questions/open/2",
    "name": "another question"
  }
]
Run Code Online (Sandbox Code Playgroud)

可以使用请求一系列多项选择题GET /questions/multiplechoice.

使用可以创建新的多项选择题 POST /questions/multiplechoice

服务器端这些URL映射到不同的请求处理程序.这样做的好处是没有必要检查来检查要创建/返回的类型,它隐含在URL中.

这种方法的缺点(我认为)是当学生提交答案时,URL会因问题而异.POST /questions/multiplechoice/1/answersPOST /questions/open/2/answers.

输入正文

请求所有问题的列表保持不变,GET /question.输出也是一样的.

请求一个多项选择题列表意味着过滤所以这将是GET /questions?type=multiplechoice.

创建新的多重选择问题也意味着发布类型.POST数据将是:

{
  "type": "multiplechoice",
  "name": "example question"
} …
Run Code Online (Sandbox Code Playgroud)

rest restful-url

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