小编dap*_*azz的帖子

Django Atomic Transaction会锁定数据库吗?

当你这样做时:

@transaction.atomic
def update_db():
    do_bulk_update()
Run Code Online (Sandbox Code Playgroud)

在函数运行时,是否锁定数据库?

我问的是关于django的原子事务:https: //docs.djangoproject.com/en/1.10/topics/db/transactions/#autocommit-details

database django locking atomic

16
推荐指数
2
解决办法
4755
查看次数

在 useRef() 中存储回调

下面是一个可变 ref 的示例,该示例存储来自Overreacted 博客的当前回调:

function useInterval(callback, delay) {
  const savedCallback = useRef();

  // update ref before 2nd effect
  useEffect(() => {
    savedCallback.current = callback; // save the callback in a mutable ref
  });

  useEffect(() => {
    function tick() {
      // can always access the most recent callback value without callback dep 
      savedCallback.current(); 
    }

    let id = setInterval(tick, delay);
    return () => clearInterval(id);
  }, [delay]);
}
Run Code Online (Sandbox Code Playgroud)

然而,React Hook FAQ 指出不推荐使用该模式:

另请注意,此模式可能会导致并发模式出现问题。[...]

在任何一种情况下,我们都不推荐这种模式,只是为了完整起见在这里展示它。

我发现这种模式对于回调非常有用,但我不明白为什么它会在 FAQ 中出现危险信号。例如,客户端组件可以使用 …

javascript reactjs react-ref react-hooks react-concurrent

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

chown命令返回不允许操作

我正在使用覆盆子pi,并且很难使用以下教程为我安装的外部硬盘驱动器授予权限:

http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/

我现在已经在该外部硬盘驱动器上创建了文件夹,当我执行ls -l命令时,我返回以下内容:

drwxr-xr-x 2 root root 512 Aug 28 23:24 test
Run Code Online (Sandbox Code Playgroud)

它位于: /media/USBHDD1/shares

现在我试图给它所有写入读取和执行权限,甚至将所有者和组更改为pi:pi

但是,chmod 777不起作用 - 它不会返回错误,只是似乎没有效果

当我使用时

sudo chown -R pi:pi test/
Run Code Online (Sandbox Code Playgroud)

我收到了错误

chown: changing ownership of `test/': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

这是一个linux问题,但我认为有背景和使用树莓派知识的人可以帮助我.

所需的额外信息:

当我运行pi@raspberrypi /media $ grep USBHDD1 /etc/mtab 它时返回:

/dev/sda1 /media/USBHDD1 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
Run Code Online (Sandbox Code Playgroud)

linux usb-drive fat chown raspberry-pi

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

Jquery在右键单击菜单项上获取唯一的css选择器或单击dom元素

我试图在右键单击dom元素时提示正确的css选择器和xpath.我可以在右键单击显示一个菜单,但我阻止了获取css选择器和xpath值.代码的输入将是任何网站源代码(右键单击站点,查看源代码)或示例具有一些类名的html代码.我在这里引用了拉独特的css选择器

有关如何在右键单击任何dom元素上获取唯一css选择器和xpath的任何指针?

我的小提琴在这里

<h2>Copy paste source code</h2>
<textarea id="txtSrcCode"></textarea>
<input type="button" value="Load Page" id="btnLoadPage" />
<div id="divToBindSrcCode">

</div>

<ul class='custom-menu'>
  <li data-action="first">First thing</li>
  <li data-action="second">Second thing</li>
  <li data-action="third">Third thing</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Jquery代码

$('#btnLoadPage').click(function() {
  $('#divToBindSrcCode').html($('#txtSrcCode').val()); // Laod dom on to the page
});

$(document).bind("contextmenu", function(event) {

  // Avoid the real one
  event.preventDefault();
  // Show contextmenu
  $(".custom-menu").finish().toggle(100).

  // In the right position (the mouse)
  css({
    top: event.pageY + "px",
    left: event.pageX + "px"
  });
});


// If the document …
Run Code Online (Sandbox Code Playgroud)

javascript jquery xpath css-selectors

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

如何在iOS 10中安装自签名证书

Apple似乎已经删除了信任在iOS 10中自签名的SSL证书的功能.

我创建了自己的自签名证书,并拥有一个使用我的证书签名的本地Web服务器.我必须在iOS上安装我的证书才能在本地进行测试,因为我开发了一个需要信任我的证书的iOS应用程序.

如何安装自签名证书?

self-signed ssl-certificate ios

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

在Python中从kd-Tree中删除root

对于刚接触python的人,我不明白如何从递归函数中删除类的实例.

考虑一下kd树的代码:

def remove(self, bin, targetAxis=0, parent=None):
  if not self:
    return None
  elif self.data.x == bin.x and self.data.y == bin.y: 
    if self.rightNode:
      self.data = self.rightNode.findMin((targetAxis+1)% KdSearch.DIMENSION)
      self.rightNode = self.rightNode.remove(self.data, (targetAxis+1)% KdSearch.DIMENSION,self)
    elif self.leftNode:
      self.data = self.leftNode.findMin((targetAxis+1)% KdSearch.DIMENSION)
      self.rightNode = self.leftNode.remove(self.data, (targetAxis+1)% KdSearch.DIMENSION,self)
    else:
      if not parent is None:
        #get direction if child....
        if not parent.leftNode is None:
          if parent.leftNode.data.x == bin.x and parent.leftNode.data.y == bin.y:
            parent.leftNode=None

        if not parent.rightNode is None:
          if parent.rightNode.data.x == bin.x and parent.rightNode.data.y == …
Run Code Online (Sandbox Code Playgroud)

python kdtree

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

pytest不会将日期字段转换为Django中的datetime.date对象

我有这个用Django编写的简单查询,我想用pytest运行我的测试.

results = (self.base_query
                   .order_by('service_date')
                   .extra({'sd': "date(service_date)"})
                   .values('sd')
                   .annotate(created_count=Sum('pax_number')))

print 'RESULTS: ', results
Run Code Online (Sandbox Code Playgroud)

当我使用Django的测试运行器运行测试时python manage.py test,我得到了预期的结果:

RESULTS:  <QuerySet [{'created_count': 14, 'sd': datetime.date(2017, 2, 24)}]>
Run Code Online (Sandbox Code Playgroud)

但当我这样做时pytest -s,我得到:

RESULTS:  <QuerySet [{'created_count': 14, 'sd': u'2017-02-24'}]>
Run Code Online (Sandbox Code Playgroud)

为什么pytest转换日期不像Django的测试运行器?

python django pytest

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

jest是否保证它会按顺序在单个文件中运行测试?

我对观察中的开玩笑的理解是,它通过产生辅助进程提供并发执行测试,并将测试文件分发给工作程序,以便在完成当前测试文件时执行.

这告诉我,jest不会尝试同时在单个测试文件中执行测试.所以我希望以下测试总是通过(无需传递--runInBand):

describe('counting test', () => {
  let variable = 0;

  it('should start as 1', () => {
    variable += 1;
    expect(variable).toEqual(1);
  });
  it('should change to 2', () => {
    variable += 1;
    expect(variable).toEqual(2);
  });
});
Run Code Online (Sandbox Code Playgroud)

即第二次测试总是在第一次测试完成后运行.这样安全,是否有某个官方文档指明了这种行为?我找不到一个.

javascript jestjs

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

如何将 gitlab 作业令牌传递到 docker 构建而不导致缓存丢失?

我们正在使用 gitlab 部署中内置的 PyPI 存储库来与多个内部项目共享我们的内部包。当我们构建 Docker 镜像时,我们需要安装这些软件包作为镜像创建的一部分。然而,我们用来访问 gitlab PyPI 存储库的gitlab CI 令牌是一次性令牌,因此每次运行构建时都是不同的。

我们的 Dockerfile 的开头是这样的:

FROM python:3.9

WORKDIR /project

COPY poetry.lock pyproject.toml
RUN pip install poetry

ARG CI_JOB_TOKEN
RUN poetry config http-basic.gitlab-pypi-repo gitlab-ci-token ${CI_JOB_TOKEN}
RUN poetry install --no-interaction
Run Code Online (Sandbox Code Playgroud)

现在因为我们正在使用诗歌并且版本被锁定poetry.lock,当我们到达诗歌步骤时,我们不需要重新安装诗歌,除非文件poetry.lock已更改,但由于总是CI_JOB_TOKEN不同,我们总是会错过缓存并必须重建诗歌和下游的一切(实际上这是大部分工作所在的地方)。

那么有没有一种方法可以传递CI_JOB_TOKEN到 docker 构建中,但为了缓存的目的而被忽略呢?或者也许还有另一种方法可以实现这一目标?

gitlab docker

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

pytest-django 数据库初始化似乎没有重新加载数据库

我们将情况归纳为以下几点:

import pytest
from django.core.management import call_command
from foo import bar

@pytest.fixture(scope='session')
def django_db_setup(django_db_setup, django_db_blocker):
    LOGGER.info('ran call_command')
    with django_db_blocker.unblock():
        call_command('loaddata', 'XXX.json')

@pytest.mark.django_db(transaction=True)
def test_t1():
    assert len(bar.objects.all())

@pytest.mark.django_db(transaction=True)
def test_t2():
    assert len(bar.objects.all())
Run Code Online (Sandbox Code Playgroud)

测试夹具 XXX.json 包括一个栏。第一个测试 (test_t1) 成功。第二个测试 (test_t2) 失败。似乎 transaction=True 属性不会导致使用来自测试装置的数据重新初始化数据库。

如果改为使用来自 unittest 的 TransactionTestCase,则初始化发生在类中的每个测试用例之前,并且所有测试都成功。

from django.test import TransactionTestCase

from foo import bar

class TestOne(TransactionTestCase):

    fixtures = ['XXX.json']

    def test_tc1(self):
        assert len(bar.objects.all())

    def test_tc2(self):
        assert len(bar.objects.all())
        objs = bar.objects.all()
        for bar in objs:
            bar.delete()

    def test_tc3(self):
        assert len(bar.objects.all())
Run Code Online (Sandbox Code Playgroud)

对于为什么 pytest 示例不会为第二个测试用例重新初始化数据库的任何观点,我将不胜感激。

python pytest django-unittest pytest-django

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