小编rob*_*cox的帖子

Interface Builder:UIView的iOS 6/7 Deltas布局是什么?

我刚刚注意到在UIView的结构布局下找到的iOS 6/7 Delta属性.

这是什么以及为什么AutoLayout缺少这个?

在此输入图像描述

layout uiview ios xcode5

111
推荐指数
4
解决办法
5万
查看次数

Django-获取外键模型

我如何获得外键模型类型?

例如:

class Category(models.Model):
    name = models.CharField(max_length = 100)

class SubCategory(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length = 100)
Run Code Online (Sandbox Code Playgroud)

我想在SubCategory中获取类别模型.

我该怎么做?

django django-models django-forms django-admin

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

Django脆皮形式分裂场布局

我们有一个脆弱的形式,我们希望能够在表单HTML模板的不同部分呈现不同的字段,但是我们在Crispy文档中找不到这样做的方法.下面是一些稍微简化的代码,用于说明我们要做的事情:

forms.py

helper = FormHelper()
helper.layout_1 = Layout(
    Div(
        Field('field_1a'),
        Field('field_1b')
    )
)
helper.layout_2 = Layout(
    Div(
        Field('field_2a'),
        Field('field_2b')
    )
)
Run Code Online (Sandbox Code Playgroud)

template.html

<body>
    {% crispy form layout_1 %}
    <!-- A big bunch of other html -->
    {% crispy form layout_2 %}
</body>
Run Code Online (Sandbox Code Playgroud)

有谁知道实现这一目标的干净方法?


到目前为止我们已经看过的方法必须排除:

  • 我们可以在HTML中手动添加字段,而不是为我们提供crispy渲染.但是,这看起来是不可取的,因为我们有许多choice字段,其选项以编程方式确定.
  • 我们可以编写一个令人毛骨悚然的布局,它使用一个crispy.forms.layout.HTML对象来包含HTML,它将我们布局的两个不同部分分开.但是,有很多HTML,如果我们将它直接嵌入到python中,将很难维护.
  • 我们可以编写一个自定义布局对象来为我们这样做,但是我们预测这将是非常复杂的,并且想要将此视为最后的手段.
  • 我们可以不使用crispy,而是寻找方法以外的方法实现这一点,但是然后我们将失去与我们的应用程序中的所有其他形式的一致性.

python django layout django-forms django-crispy-forms

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

Bootstrap 3响应式面板布局,具有不同的高度

我们正在尝试使用bootstrap 3面板来创建响应式网格布局,但是我们无法确定如何以我们想要的方式显示它们.下面显示了我们到目前为止的一个例子:

在此输入图像描述

生成布局的django/bootstrap代码(indicents只是我们在incident_panel.html每个列表项中显示一个对象的列表):

{% for incident in incidents %}
    <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
        {% include 'incident_panel.html' %}
    </div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

问题是由于面板#5,#6和#8的高度不同造成的,这意味着我们在它们下方没有完整的排列.理想情况下,我们希望布局执行以下操作:

在此输入图像描述

我们正在寻找一种基于CSS的解决方案,如果可能的话,这将保持根据屏幕宽度将不同数量的列铺设出来的响应行为.我们考虑过几种解决方案,但它们都不是特别好:

  • 对每个面板应用最小高度 - 困难在于最小高度没有合理的价值,并且我们最终会导致高值导致面板内部浪费大量空间,或者低值无法完全解决这个问题问题.
  • 将网格布局的定义移动到我们的视图代码中(创建事件的2D数组),然后将每行包装在一个<div class="row-fluid">元素中.这是更优雅的,但是要保持我们在页面上布局3个不同网格的响应行为,我们根据屏幕宽度显示/隐藏这些网格.

css django twitter-bootstrap-3

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

Django:AppConfig就绪功能中使用的覆盖设置

我们正在尝试为AppConfig.ready函数的行为编写一个自动化测试,我们将其用作Django应用程序加载时运行代码的初始化挂钩.我们的ready方法实现使用我们需要在测试中覆盖的Django设置,当然我们正在尝试使用override_settings装饰器来实现这一点.

但是有一个障碍 - 当测试运行时,在ready执行该功能的时候,设置覆盖没有启动(它仍然使用原始值settings.py).是否有一种方法可以在ready调用函数时以覆盖方式应用的方式覆盖设置?

一些代码来演示此行为:

settings.py

MY_SETTING = 'original value'
Run Code Online (Sandbox Code Playgroud)

dummy_app/__ init__.py

default_app_config = 'dummy_app.apps.DummyAppConfig'
Run Code Online (Sandbox Code Playgroud)

dummy_app/apps.py

from django.apps import AppConfig
from django.conf import settings


class DummyAppConfig(AppConfig):
    name = 'dummy_app'

    def ready(self):
        print('settings.MY_SETTING in app config ready function: {0}'.format(settings.MY_SETTING))
Run Code Online (Sandbox Code Playgroud)

dummy_app/tests.py

from django.conf import settings
from django.test import TestCase
from django.test.utils import override_settings


@override_settings(MY_SETTING='overridden value')
@override_settings(INSTALLED_APPS=('dummy_app',))
class AppConfigTests(TestCase):

    def test_to_see_where_overridden_settings_value_is_available(self):
        print('settings.MY_SETTING in test function: '.format(settings.MY_SETTING))
        self.fail('Trigger test output')
Run Code Online (Sandbox Code Playgroud)

产量

====================================================================== …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing startup

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

如何并行运行不同的方法

我有一个java方法,它包含5种不同的内部方法.为了提高性能,我想平行地调用这些方法.

例如,使用线程运行method1,method2,... method5并行.

private void getInformation() throws SQLException,
            ClassNotFoundException, NamingException {
    method1();
    method2();
    method3();
    method4();
    method5();
}
Run Code Online (Sandbox Code Playgroud)

但所有这5种方法都有不同的业务逻辑.

java parallel-processing multithreading

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

使用子进程模块在python中发送电子邮件

我写了一个脚本来从网站上检索天气报告,并在早上将其发送给我的女朋友。

使用 Gmail。当然,我可以使用我的 Postfix 服务器发送它。这是脚本。

什么我不知道是如何使用POPEN()函数的情况有这么多的争论。

我可以使用命令发送邮件。

$ mail -s "??????????" abc@gmail.com < foo

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib2
import subprocess

weather_url = "http://www.weather.com.cn/weather/101020100.shtml"
f=urllib2.urlopen(weather_url)
html = f.read()
soup = BeautifulSoup(html)

content = soup.title.string

with open("foo","w") as mail:
    mail.write(content.encode('utf-8'))

command_line = 'mail -s "??????????" abc@gmail.com < foo'

li = command_line.split()

process = subprocess.Popen(li, shell=True)

returncode = process.wait()
Run Code Online (Sandbox Code Playgroud)

天气报告的内容在foo文件中。有人能告诉我如何使用Popen()这么多参数吗?

我尝试了很多。

这个脚本似乎不起作用。

python subprocess postfix-mta

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

更改 VLC 流的每秒帧数

我们目前正在尝试使用 VLC 流式传输连接到我们的一台 Linux 服务器 (Ubuntu 12.04) 的网络摄像头,虽然我们能够成功地流式传输视频并远程查看它,但我们需要更改每秒的帧数(这是默认为 24​​)。我们目前正在使用以下命令来创建流:

vlc v4l2:// :v4l2-dev=/dev/video0 \
            :v4l2-width=640 \
            :v4l2-height=480 -- \
            sout="#transcode{vcodec=theo,vb=256}:standard{access=http,mux=ogg,dst=:8090}" \
            -I dummy
Run Code Online (Sandbox Code Playgroud)

有人能告诉我们如何修改它以改变每秒的帧数吗?我们在网上搜索并浏览了 VLC 文档,但一直无法找到解决方案。

更新

fps参数已向我们指出,但遗憾的是这并没有解决问题 - 运行下面显示的命令的输出(其中还有一些其他错误,但尽管有这些错误,但流运行良好,我们只是专注于更改帧现在的速度)。

$ vlc -v v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{vcodec=theo,vb=256,fps=1}:standard{access=http,mux=ogg,dst=:8090}" -I dummy
VLC media player 2.0.8 Twoflower (revision 2.0.8a-0-g68cf50b)
[0x14d0758] inhibit interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[0x14d0758] main interface error: no suitable interface module
[0x14d0758] main …
Run Code Online (Sandbox Code Playgroud)

video ubuntu frame-rate vlc video-streaming

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

使用Akka TestProbe接收消息的顺序

我们有一个演员,我们正在编写单元测试,作为测试的一部分,我们想断言某些消息按特定顺序发送给另一个演员.在我们的单元测试中,接收消息的actor由Akka表示,Akka TestProbe在创建时被注入到被测试的actor中.

断言消息被发送到测试探针是没有问题的,但是我们一直在努力设法断言它们是以正确的顺序发送的(我们在文档中找不到任何合适的方法) .我们是如何实现这一目标的?

下面是一个突出问题的最小实现.

履行

case class Message(message: String)
case class ForwardedMessage(message: String)

class ForwardingActor(forwardTo: ActorRef) extends Actor {
  def receive = {
    case Message(message) =>
      forwardTo ! ForwardedMessage(message)
  }
}
Run Code Online (Sandbox Code Playgroud)

单元测试

class ForwardMessagesInOrderTest extends TestKit(ActorSystem("testSystem"))
                                 with WordSpecLike
                                 with MustMatchers {

  "A forwarding actor" must {
    val forwardingReceiver = TestProbe()
    val forwardingActor = system.actorOf(Props(new ForwardingActor(forwardingReceiver.ref)))

    "forward messages in the order they are received" in {
      forwardingActor ! Message("First message")
      forwardingActor ! Message("Second message")

      // This is …
Run Code Online (Sandbox Code Playgroud)

unit-testing scala actor akka

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

Django 预取与最大值过滤相关

我们有一对看起来(大致)像这样的模型:

class Machine(models.Model):
    machine_id = models.CharField(max_length=10)
    # Other irrelevant fields

    @property
    def latest_update(self):
        if self.machineupdate_set.count() == 0:
            return None
        return self.machineupdate_set.order_by('-update_time')[:1].get()

class MachineUpdate(models.Model):
    machine = models.ForeignKey(Machine)
    update_time = models.DateTimeField(auto_now_add=True)
    # Other irrelevant fields
Run Code Online (Sandbox Code Playgroud)

Machine每当我们从数据库加载s 时,我们总是最终使用latest_update该机器的 。当我们第一次实现这一点时,我们有很多机器,每台机器的更新数量相当少,因此为了提高性能(通过减少查询计数),我们向模型管理器添加了一个简单的默认预取Machine

class MachineManager(models.Manager):

    def get_queryset(self):
        return super(MachineManager, self).get_queryset().prefetch_related('machineupdate_set')
Run Code Online (Sandbox Code Playgroud)

然而,情况发生了变化,现在我们有大量与每台机器相关的更新,预取查询开始成为一个问题(无论是查询执行时间长还是内存消耗)。

我们正在寻找一种更智能的方式来预取所需数据,因为我们真正需要预取的是每台机器的最新更新,而不是全部。查看了Django prefetch_lated 文档后,我们似乎可以将get_queryset其更改MachineManager为如下所示:

def get_queryset(self):
    latest_update_query = MachineUpdate.objects.order_by('-update_time')[:1]
    latest_update_prefetch = models.Prefetch('machineupdate_set', queryset=latest_update_query, to_attr='_latest_update')
    return super(MachineManager, self).get_queryset().prefetch_related(latest_update_prefetch)
Run Code Online (Sandbox Code Playgroud)

然后修改latest_update以使用预取填充的新属性。然而,这不起作用,因为每当我们Machine使用它过滤查询时,我们都会收到错误:AssertionError: Cannot …

python django django-queryset database-performance

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