小编tre*_*der的帖子

使用 REST 获取多个资源(批量获取)的正确方法是什么?

是吗:

GET api/stuff?ids[]=123&ids[]=456&ids[]=789&ids[]=101112&etc...
Run Code Online (Sandbox Code Playgroud)

是吗:

POST api/stuff/batch
  body: ids: [123, 456, 789, 101112, etc]
Run Code Online (Sandbox Code Playgroud)

?

第一个在语义上似乎是正确的,但除了有一个令人难以置信的粗俗 url,还有消息来源说 get 的长度可能有限制,那么如果我有无数个 id 怎么办?

第二个似乎更好,因为没有粗略的 url,但我对休息的理解是 POST 应该进行更改,而不是幂等的。

那么这纯粹是一个语义问题,没有真正的“正确”方式吗?

rest api-design

8
推荐指数
3
解决办法
5660
查看次数

Java:是CountDownLatch线程安全

文档CountDownLatch我看到类似的东西:

public void run() {
      try {
        startSignal.await();
        doWork();
        doneSignal.countDown();
      } catch (InterruptedException ex) {} // return;
}

这里startSignaldoneSignalCountDownLatch对象.

文档没有提到关于类是否是线程安全的.

java thread-safety countdownlatch

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

了解Python Web应用程序部署

我想我并不完全了解部署过程.这就是我所知道的:

  • 当我们需要进行热部署时 - 意味着我们需要更改现场代码 - 我们可以通过重新加载模块来实现,但是
  • imp.reload 是一个坏主意,我们应该重新启动应用程序,而不是重新加载已更改的模块
  • 理想情况下,运行代码应该是代码存储库的克隆,并且只要需要部署,就可以进行更改

现在,假设我有wsgi一个在反向代理后运行的应用程序的多个实例nginx(如8011,8012等端口).而且,我们还假设我5每秒都会收到请求.

现在在这种情况下,我应该如何在应用程序的所有正在运行的实例中更新我的代码.

  • 如果我停止所有实例,然后更新所有实例,然后重新启动它们 - 我肯定会丢失一些请求
  • 如果我逐个更新每个实例 - 那么实例将处于不一致状态(一些将运行旧代码,一些新代码),直到所有实例都更新.现在,如果请求命中更新的实例,然后后续(和相关)请求命中较旧的实例(尚未更新),那么我将得到错误的结果.

有人可以彻底解释这样繁忙的应用程序是如何热部署的吗?

python deployment web-applications

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

是否应该在每个响应中设置cookie标头?

假设您正在实施会话.

您检查浏览器是否显示会话cookie.如果是,则验证cookie并找到与会话关联的用户,然后继续处理请求.

如果您没有找到会话cookie,则创建一个新会话并将cookie发送到您希望在后续请求中收到的浏览器.

现在我的问题是:如果您确实在请求中找到了会话cookie,您是否会在响应中重新发送相同的cookie.在什么情况下这是对的?

注意:我认为这是一个Pyramid(Python)程序员,因为Pyramid实现在每个响应上无条件地发送会话cookie.(转到代码)

python session http pyramid

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

从自我管理的 Let's Encrypt 到 AWS Certificate Manager

我一直在为一个域管理 Let's Encrypt 的 SSL 证书。

现在我正在转向 Amazon API 网关。我将使用 AWS Certificate Manager 为根域和一堆子域生成 HTTPS 证书。

如果我进行了转移,与我的域关联的当前 HTTPS 证书会发生什么变化。如果浏览器突然开始看到一个域的新 HTTPS 证书,而到目前为止他们一直在为该域获得不同的 HTTPS 证书,这会是一个问题吗?

另外,一旦我进行了转变,我该如何处理我当前(手动管理的)Let's Encrypt 证书?有没有办法永久取消它?

https lets-encrypt aws-certificate-manager

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

python是否有像C这样的逗号运算符

在C(和C语言族)中,表达式(4+7, 5+2)返回7.但Python中的相同表达式会导致元组(11, 7)

那么python有一个像C这样的逗号运算符吗?

python

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

可编辑div中的HTML

我有一个contentEditablediv,我需要允许用户编辑HTML。

我需要清理用户在该div中编写的HTML吗?

我的意思是,当我从该div检索HTML时,它已经被清除了。例如,如果我<>在div内写了类似的东西,然后将其取回,我会得到&lt;&gt;

在这里测试:http : //jsfiddle.net/mByWT/

我的另一个问题是:此行为是否是标准行为,我是否可以在所有浏览器中依赖它?

编辑

我现在可以得出结论,这是一种通用模式:

  • element.innerHTML返回转义的HTML-转义<>amd &但不加引号
  • element.innerTextelement.textContent返回原义HTML而不转义

看到这个:http : //jsfiddle.net/2CmjG/

html contenteditable

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

JavaScript:将52位整数转换为20位和32位整数

在其他可以代表64位整数的语言中,可以很容易地做到这一点......

如何在两个32位整数中存储64位整数并再次转换回来

如何在Ruby中以两个32位整数存储64位整数

// convert 64-bit n to two 32-bit x and y
x = (n & 0xFFFFFFFF00000000) >> 32
y =  n & 0xFFFFFFFF
Run Code Online (Sandbox Code Playgroud)

但JavaScript不能代表64位整数.它只能代表52位整数而不会出现问题.

现在这意味着无法将64位整数转换为两个32位整数,因为它甚至不可能首先具有64位整数.

但是,我们还有52位.我的问题是:如何在JavaScript中将这个52位整数分成两个32位整数(20个高位和32个低位)

有人建议像上面的位操作代码在JavaScript中进行20位和32位拆分吗?

相关: 由位操作产生的32位JavaScript数如何转换回64位数

javascript bit-manipulation

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

Python:将函数作为类的方法调用

让我们从一些代码开始:

def func(*x):
    print('func:', x)


class ABC:
    def __init__(self, f):
        self.f1 = f

    def f2(*x):
        print('f2:', x)
Run Code Online (Sandbox Code Playgroud)

现在我们做一些测试:

>>> a = ABC(func)
>>> a.f1(10)
func: (10,)
>>> a.f2(10)
f2: (<__main__.ABC object at 0xb75381cc>, 10)
>>> a.f3 = func
>>> a.f3(10)
func: (10,)
>>> a.f1
<function func at 0xb74911ec>
>>> a.f2
<bound method ABC.f2 of <__main__.ABC object at 0xb75381cc>>
>>> a.f3
<function func at 0xb74911ec>
Run Code Online (Sandbox Code Playgroud)

请注意,这func是一个正常的函数,我们正在使它成为f1类的一个方法.

我们可以看到,f2是获得类实例作为第一个参数,但f1f3没有,即使所有功能都被称为类方法.我们还可以看到,如果我们将普通函数称为类的方法,Python就不会从中创建绑定方法.

那么,即使我们将它作为一个类的方法调用它,为什么f1还是f3 …

python

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

金字塔:多个资源工厂 - 如何

我有一个简单的根资源工厂:

class Root:
    __acl__ = [
        (Allow, Authenticated, 'edit')
    ]
Run Code Online (Sandbox Code Playgroud)

现在对于一些"特殊"路线,我需要创建另一个资源工厂

config.add_route('special', '/special/test', factory=SpecialFactory)

class SpecialFactory:
    __acl__ = [
        (Allow, Authenticated, 'special_edit')
    ]
Run Code Online (Sandbox Code Playgroud)

现在,我想做Root父母SpecialFactory- 我该怎么做?

这是正确的方式......

class SpecialFactory:
    def __init__(self, request):
        self.request = request
        self.__parent__ = Root(request)
        self.__name__ = 'special'

    __acl__ = [
        (Allow, Authenticated, 'special_edit')
    ]
Run Code Online (Sandbox Code Playgroud)

我也完全不了解它的目的__name__和应该设置的目的.

此外,什么时候金字塔会遍历__parent__链条而不是?对于这样的视图配置:

@view_config(route_name='special', permission='special_edit')
def something(req):
    pass
Run Code Online (Sandbox Code Playgroud)

金字塔会'收集'两个权限(special_editedit)还是只有一个(special_edit)?

请详细说明计算权限的"流程".

python pyramid

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