我有一个角度指令,初始化如下:
<conversation style="height:300px" type="convo" type-id="{{some_prop}}"></conversation>
Run Code Online (Sandbox Code Playgroud)
我希望它足够聪明,可以在$scope.some_prop更改时刷新指令,因为这意味着它应该显示完全不同的内容.
我已经测试了它,没有任何反应,连接函数甚至在$scope.some_prop更改时都没有被调用.有没有办法让这种情况发生?
我有一个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;?
我有一个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因为我的代码中它们的处理方式不同.
我需要确定当前为我的数据库中的某些物化视图授予的权限.
对表或标准视图执行此操作的查询非常简单:
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在哪里存储这些信息?
我正在实现一个API,它既可以使用API密钥,也可以使用CSRF令牌.目标是通过Web应用程序(受CSRF保护)或第三方应用程序(受API密钥保护)使用它.
基本上每个请求(都通过POST),我检查是否有API密钥.如果有一个有效的,那就好了.如果没有,我想回到验证CSRF.
我可以打电话来验证CSRF吗?视图本身是@csrf_exempt因为API密钥需要工作.
我刚刚完成了一个redux应用程序的连接,到目前为止它真是太棒了.但是,由于状态存储在巨型商店中,因此您没有任何要访问数据的模型.
假设我有一个模型类,它存储有关用户的一些信息.我通常会在被调用的类中添加一个函数display_name,它可以智能地组合其名称的不同部分.有了它,我的不同观点可以简单地调用,display_name而不是他们需要知道如何自己计算它.
Redux明确表示不要在状态中存储计算值,这样就可以在组件中定义它.这可能不是正确的,因为那样你最终会在需要它的每个组件中复制这个代码.
存储这种逻辑的适当位置在哪里?
在使用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是否希望按顺序查询列?
除此之外,将列一起索引与单独索引之间是否存在很大差异?
我们希望将当前的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中付出努力?
做这样的事情是微不足道的:
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)
它抱怨let或var需要使用,但显然情况并非如此.在Swift 2中执行此操作的正确方法是什么?
在Django在Apache上运行或与多个Gunicorn工作器一起运行的生产环境中,它存在并发问题的风险.
因此,我很惊讶地发现Django的ORM没有明确支持表/行锁定.它非常支持事务,但这只解决了一半的并发问题.
使用MySQL后端,在Django中执行锁定的正确方法是什么?或者在Django的框架中还有其他什么东西可以使它们变得不必要吗?
django ×4
mysql ×2
postgresql ×2
python ×2
reactjs ×2
redux ×2
angularjs ×1
django-csrf ×1
docker ×1
docker-swarm ×1
javascript ×1
locking ×1
model ×1
nginx ×1
privileges ×1
sql ×1
stderr ×1
stdout ×1
subprocess ×1
swift ×1
swift2 ×1