小编Luk*_*pan的帖子

Angular Directive刷新参数更改

我有一个角度指令,初始化如下:

<conversation style="height:300px" type="convo" type-id="{{some_prop}}"></conversation>
Run Code Online (Sandbox Code Playgroud)

我希望它足够聪明,可以在$scope.some_prop更改时刷新指令,因为这意味着它应该显示完全不同的内容.

我已经测试了它,没有任何反应,连接函数甚至在$scope.some_prop更改时都没有被调用.有没有办法让这种情况发生?

javascript angularjs angularjs-directive angularjs-scope

72
推荐指数
2
解决办法
12万
查看次数

使用带有componentWillMount的redux时,防止反应组件呈现两次

我有一个React组件,它在其componentWillMount函数中调度redux状态更改.原因是当组件被加载时,它需要id从url(powered by react-router)获取,并触发一个用该id数据设置状态的动作.

这是组件:

class Editor extends React.Component {

    componentWillMount() {
        const { dispatch, params } = this.props
        dispatch(editItem(params.id))
    }

    render() {
        const item = this.props.item
        console.log("Editing", item)
    }
}

export default connect(state => ({item: state.item}))(Editor)
Run Code Online (Sandbox Code Playgroud)

这是捕获:render被叫两次.item在第一次调用时未定义,在第二次调用时有效.理想情况下,只应在this.props.item实际存在之后调用它(在editItem调度和运行操作之后).

根据React文档:"如果你setState在这个方法中调用,render()将会看到更新的状态,并且只会在状态发生变化时执行一次."

在redux中,dispatch相当于调用setState,因为它会导致状态改变.但是,我猜测connect工作仍然导致render被调用两次.

有没有办法解决这个问题,除了添加像这样的线路if (!item) return;

reactjs redux

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

Python在保留顺序的同时分别从子进程stdout和stderr读取

我有一个python子进程,我正在尝试从中读取输出和错误流.目前我有它的工作,但我只能在读完stderr之后阅读stdout.这是它的样子:

process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout_iterator = iter(process.stdout.readline, b"")
stderr_iterator = iter(process.stderr.readline, b"")

for line in stdout_iterator:
    # Do stuff with line
    print line

for line in stderr_iterator:
    # Do stuff with line
    print line
Run Code Online (Sandbox Code Playgroud)

如您所见,stderrfor循环在stdout循环完成之前无法启动.如何修改它以便能够以正确的顺序读取这两行?

澄清:我仍然需要能够判断一条线是否来自stdout或者stderr因为我的代码中它们的处理方式不同.

python subprocess stdout stderr

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

列出PostgreSQL中物化视图的授予和权限

我需要确定当前为我的数据库中的某些物化视图授予的权限.

对表或标准视图执行此操作的查询非常简单:

SELECT grantee, string_agg(privilege_type, ', ') AS privileges
FROM information_schema.table_privileges
WHERE table_schema = 'some_schema' AND table_name = 'some_table'
GROUP by grantee;
Run Code Online (Sandbox Code Playgroud)

也就是说,物化视图似乎没有类似的表格.PostgreSQL在哪里存储这些信息?

postgresql privileges materialized-views information-schema

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

Django手动检查CSRF令牌

我正在实现一个API,它既可以使用API​​密钥,也可以使用CSRF令牌.目标是通过Web应用程序(受CSRF保护)或第三方应用程序(受API密钥保护)使用它.

基本上每个请求(都通过POST),我检查是否有API密钥.如果有一个有效的,那就好了.如果没有,我想回到验证CSRF.

我可以打电话来验证CSRF吗?视图本身是@csrf_exempt因为API密钥需要工作.

django django-csrf csrf-protection

10
推荐指数
3
解决办法
4333
查看次数

可重复使用的redux存储数据计算的最佳实践

我刚刚完成了一个redux应用程序的连接,到目前为止它真是太棒了.但是,由于状态存储在巨型商店中,因此您没有任何要访问数据的模型.

假设我有一个模型类,它存储有关用户的一些信息.我通常会在被调用的类中添加一个函数display_name,它可以智能地组合其名称的不同部分.有了它,我的不同观点可以简单地调用,display_name而不是他们需要知道如何自己计算它.

Redux明确表示不要在状态中存储计算值,这样就可以在组件中定义它.这可能不是正确的,因为那样你最终会在需要它的每个组件中复制这个代码.

存储这种逻辑的适当位置在哪里?

model reactjs redux

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

index_together的顺序在Django模型中是否重要?

在使用index_together Meta属性定义模型时,列的顺序是否重要?

换句话说,两者之间是否存在差异

Class myModel(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    favorite_color = models.CharField(max_length=20)

    class Meta:
        index_together = ('name', 'address', 'favorite_color')
Run Code Online (Sandbox Code Playgroud)

VS

Class myModel(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    favorite_color = models.CharField(max_length=20)

    class Meta:
        index_together = ('favorite_color', 'name', 'address')
Run Code Online (Sandbox Code Playgroud)

我只是问,因为我注意到在查看表的结构时,键中的每一列都有一个"key in key"属性.MySQL/PostgreSQL是否希望按顺序查询列?

除此之外,将列一起索引与单独索引之间是否存在很大差异?

mysql sql django postgresql

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

在使用Docker Swarm进行部署时,是否应将nginx打包到与Django相同的容器中?

我们希望将当前的Nginx/Gunicorn/Django堆栈移植到Docker中,并使用Docker Swarm将其部署为高可用性.我们一直在努力的决定之一是将Nginx放在与Gunicorn/Django相同的容器中.以下是场景以及我们如何查看它们:

场景1:将Nginx放在应用程序的容器中.这违反了"每个服务都有自己的容器"方法,但它允许Nginx直接通过unix socket而不是端口与Gunicorn进行通信.这显然不是很大,但值得一提.主要优点如下.这里的一个潜在缺点是从太多的Nginx实例中获得额外的开销(请加以考虑).

场景2:将Nginx放在自己的容器中.虽然这遵循上述方法,但似乎更有缺陷.在Docker Swarm场景中,Nginx和App容器的分布可能不一致.一些节点最终可能有更多Nginx容器,而其他节点有更多的app容器(甚至可能有0个Nginx容器).这意味着Nginx最终会完全反向代理不同主机上的应用容器.

现在我确定Docker Swarm支持特殊配置,这些配置说每个节点上必须至少运行一个Nginx容器,但这让我觉得它是反模式.即使在那种情况下,是否值得在场景1中付出努力?

django nginx docker docker-swarm

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

在Swift 2中设置多个类属性时保护

做这样的事情是微不足道的:

class Collection {
    init(json: [String: AnyObject]){
        guard let id = json["id"] as? Int, name = json["name"] as? String else {
            print("Oh noes, bad JSON!")
            return
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在那种情况下,我们let用来初始化局部变量.但是,将其修改为使用类属性会导致它失败:

class Collection {

    let id: Int
    let name: String

    init(json: [String: AnyObject]){
        guard id = json["id"] as? Int, name = json["name"] as? String else {
            print("Oh noes, bad JSON!")
            return
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

它抱怨letvar需要使用,但显然情况并非如此.在Swift 2中执行此操作的正确方法是什么?

swift swift2 guard-statement

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

如何在Django中执行表/行锁

在Django在Apache上运行或与多个Gunicorn工作器一起运行的生产环境中,它存在并发问题的风险.

因此,我很惊讶地发现Django的ORM没有明确支持表/行锁定.它非常支持事务,但这只解决了一半的并发问题.

使用MySQL后端,在Django中执行锁定的正确方法是什么?或者在Django的框架中还有其他什么东西可以使它们变得不必要吗?

python mysql django locking

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