小编And*_*yko的帖子

如何设置 django 迁移始终是最后一个应用的

我有 Django 应用程序和迁移文件002_auto.py,它使用Django RunPython来更改数据库。我不知道将来会创建多少迁移文件,但我希望该文件002_auto.py作为迁移过程的最后一部分应用。

如何在执行 django 迁移时将迁移设置为最后一个执行,而无需每次我想执行migrate命令时执行任何手动步骤(或dependencies每次添加新迁移时更改变量)?

ps我查看了 django 迁移文档和其他文章,但没有成功。

python django django-migrations

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

Java Void类型 - 可能/允许的值?

1)在Java中,我可以这样做:

Void z = null;
Run Code Online (Sandbox Code Playgroud)

除了null我可以指定之外还有其他值z吗?

2)考虑以下代码剪切:

Callable<Void> v = () -> {
    System.out.println("zzz"); 
    Thread.sleep(1000);
    return null;
}; 
Run Code Online (Sandbox Code Playgroud)

这编译好了,但是如果我删除最后一个语句return null;则没有.为什么?毕竟,Void应该意味着没有回报价值.

java void

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

将赋值语句放在if语句的不良实践中?

基于下面的代码片段(为了清晰起见,它们已被缩短).

scoreBoardState方法的目的是用于确定minimax算法中叶节点处的游戏状态的分数,该算法将被传递以确定AI进行的最佳移动.

hasThreeInARowAndTwoOpenSpaces_Horizontal是通过scoreBoardState确定是否满足某些条件(例如连续3个令牌的玩家)调用的许多类似方法之一.如果为真,则返回满足该条件的玩家的数量,然后增加该玩家(人类玩家或AI)的得分.

需要在if语句中调用该方法以检查返回的值是否不为零(这意味着应该添加一些分数).我可以在if语句中设置方法返回的值(我在代码片段中做了),或者如果它不返回0,我可以再次调用该方法,然后将其设置为变量.显然,第二种方法效率较低,但它更易于人类阅读,更容易注意到正在发生的事情.

问题是,设置由if语句中调用的方法返回的变量被认为是不好的做法吗?或者它没关系,因为它更有效率?

注意:第二种方法的低效率增长相当快,因为​​它在for循环中,并且在测试每个条件时会出现这种情况很多次.它也是在minimax算法中为每个叶节点完成的(每个节点可以有7个分支)意味着深度只有3(我使用的最小值)有343个叶子节点和7个深度(目前我最高)使用)有近825,000个叶节点.

/* scores the board state of a root node in a minimax algorithm
 * @gameState a 2 dimensional array that stores values for each space on the 
 * board. Stores 0 for empty or 1 or 2 if position is taken by a player
 */
int scoreBoardState (int[][] boardState) {

    int aiScore = 0;
    int playerScore = 0;

    int player = -1;

    for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

java variable-assignment

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

动态选择变量

我有两个变量,如此

var variable_1 = "foo";
var variable_2 = "bar";
Run Code Online (Sandbox Code Playgroud)

我使用一个函数来获取复选框输入的值,对于每个选中的复选框,我想加载特定的变量,该变量取决于复选框的值.

$("input:checked").each(function() {
    $(div).append('variable_'+$(this).val());
}
Run Code Online (Sandbox Code Playgroud)

所以我将文本'variable_'与每个复选框的值连接起来.

谢谢!

javascript variables jquery

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

pip freeze 不显示包

例如,如果在使用 pip 安装 Tornado 之后,如下所示:

pip install tornado
Collecting tornado
...
Successfully installed backports-abc certifi singledispatch six tornado
Run Code Online (Sandbox Code Playgroud)

pip freeze 不返回列表中的龙卷风包,它只显示:

PyMySQL==0.7.2
Run Code Online (Sandbox Code Playgroud)

当我运行easy_install它时也返回:

error: bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from.  The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

    /lib/python2.7/site-packages/

and your PYTHONPATH environment variable currently contains:

    ''
Run Code Online (Sandbox Code Playgroud)

出了什么问题?

python pip

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

boto3的IO错误download_file

背景

我正在使用boto3代码从s3下载文件,这是以下代码。

for record in event['Records']:
    bucket = record['s3']['bucket']['name']
    key = record['s3']['object']['key']
    print (key)
    if key.find('/') < 0 :
    if len(key) > 4 and key[-5:].lower() == '.json': //File is uploaded outside any folder

        download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
    else:
        download_path = '/tmp/{}/{}'.format(uuid.uuid4(), key)//File is uploaded inside a folder
Run Code Online (Sandbox Code Playgroud)

如果在s3存储桶中上传了新文件,则会触发此代码,并且此代码会下载该新上传的文件。

将其上传到任何文件夹之外时,此代码可以正常工作。

但是,当我在目录中上载文件时,会发生IO错误。这是我遇到的IO错误的转储。

[Errno 2]没有这样的文件或目录: /tmp/316bbe85-fa21-463b-b965-9c12b0327f5d/test1/customer1.json.586ea9b8:IOError

test1是s3存储桶中的目录,其中上载了customer1.json。

询问

有什么想法,如何解决这个错误?

amazon-s3 python-2.7 boto3 aws-lambda

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

Docker-compose 错误:无法限制容器间通信

我尝试使用命令运行我的应用程序服务docker stack deploy。使用此命令我收到以下错误:

"starting container failed: error creating external connectivity network: cannot restrict inter-container communication: please ensure that br_netfilter kernel module is loaded"
Run Code Online (Sandbox Code Playgroud)

我的服务的 Docker-compose 文件如下,它只包含一项服务:

version: '3.1'

services:
  app_service:
    image: app-image:latest
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用 simple 来运行此服务docker run app-image:latest,那么它会正确运行。这里可能有什么问题?

以下是输出docker info

Containers: 44
 Running: 0
 Paused: 0
 Stopped: 44
Images: 11
Server Version: 18.06.0-ce
Storage Driver: vfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose docker-swarm

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

如何使用 unittest.mock.MagicMock 或 Mock 类模拟 `name` 属性?

我正在尝试使用模拟名称创建 MagicMock,它似乎不起作用,但适用于其他属性:

from unittest.mock import MagicMock

# Works
assert MagicMock(foo='bar').foo == 'bar'

# Don't work
assert MagicMock(name='bar').name == 'bar'

print(MagicMock(name='bar').name)
<MagicMock name=\'bar.name\' id=\'140031146167376\'>

Run Code Online (Sandbox Code Playgroud)

如何使用 MagicMock 模拟名称属性?

python unit-testing mocking

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

我<N + 1且i <= N不同吗?

我曾经知道i <= N和之间没有区别i < N+1
但是,当我进入6 6程序时.

如果i <= N那么它打印

1 6 6
6 1 1
2 3 3
3 2 2

除此以外

1 6 6
6 1 1
2 3 3
3 2 2
3 2 2
2 3 3


我无法弄清楚它为何会有所作为

#include <iostream>
#include <cmath>

using namespace std;

typedef long long LNT;

LNT gcd(LNT a, LNT b)
{
    if( b == 0)
        return a;

    return gcd(b, a%b);
}

int main()
{
    LNT …
Run Code Online (Sandbox Code Playgroud)

c c++ comparison for-loop

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

C - 跳过用户输入?

我想要一个菜单​​,你可以从中选择一些动作.

问题是,当我们选择一个,并按下"返回"键时,将跳过应该是下一步的用户输入命令.这是为什么 ?

代码是:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int choice;

    do
    {
     printf("Menu\n\n");
     printf("1. Do this\n");
     printf("2. Do that\n");
     printf("3. Leave\n");
     scanf("%d",&choice);

     switch (choice)
     {
        case 1:
            do_this();
            break;
        case 2:
            // do_that();
            break;
     }

    } while (choice != 3);

    return(0);
}

int do_this()
{
    char name[31];

    printf("Please enter a name (within 30 char) : \n");
    gets(name); // I know using gets is bad but I'm just using it

    // fgets(name,31,stdin); // gives the …
Run Code Online (Sandbox Code Playgroud)

c printf flush switch-statement

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