我正在尝试找出服务帐户将文件写入 GCS 存储桶所需的最小权限集。我以为我可以使用 storage.objectAdmin,但是使用为 Python SDK 提供的示例代码会失败并出现错误:my-service-account@my-project.googleapis.com does not have storage.buckets.get access to my-bucket
client = _get_storage_client()
bucket = client.bucket(current_app.config['CLOUD_STORAGE_BUCKET'])
blob = bucket.blob(filename)
blob.upload_from_string(
file_stream,
content_type=content_type)
Run Code Online (Sandbox Code Playgroud)
这是因为 client.bucket 调用实际上从存储桶中读取元数据,而 storage.objectAdmin 不授予该元数据。当我使用 storage.admin 权限时,它会自行修复,但这也允许该帐户删除整个存储桶,这是我不希望的。添加 storage.legacyBucketReader 也可以,但是我使用的是旧角色,我不确定我应该再这样做。
这里的最佳实践是什么?
当我向https://graph.facebook.com/me提出请求时- 我得到一个包含大量好数据的大型JSON对象.
但是,我还要获取用户的封面照片(如果存在).有没有办法做到这一点,同时还保留默认字段?
例如:https://graph.facebook.com/me?fields = cover - 只返回封面图片.
如果我使用一个字段,是否需要准确指定我需要的其他字段?
我一直在使用HTML5的按钮表单属性让我的提交按钮显示在表单之外,仍然触发我的提交.
我的表单看起来像这样:
<article>
<header>This is my form</header>
<section>
<p>Something explaining what is happening on this form.</p>
<form id="myform" action="/submit" name="myform">
<input type="text" name="thing">
</form>
</section>
<footer>
<button type="submit" form="myform">Submit</button>
</footer>
</article>
Run Code Online (Sandbox Code Playgroud)
我在Chrome/Firefox/Safari中运行良好,但我今天在IE10中测试它并且表单没有提交!
除了重新设计我的所有页面以不使用form =属性,有没有人知道如何解决这个问题?我希望它像表单中的普通提交按钮一样工作,在文本字段中按Enter键将提交表单以及单击按钮.
我想避免添加点击事件并监听输入文本字段,以便在可能的情况下触发JavaScript提交.
假设我想要一个指令,它接受用户在输入中键入的内容并将其转换为小写。
所以我想出了一个这样的指令(在这个 Plunker http://plnkr.co/edit/jnE3s8MRr1tFCX0WVYel?p=preview):
app.directive('lowerCaseInput', function() {
return {
restrict: 'E',
template:'<input ng-model="vm.input" />',
scope: {},
require: ['ngModel', 'lowerCaseInput'],
controller:function() {},
link: function(scope, el, attrs, ctrls) {
var ngModel = ctrls[0], vm = ctrls[1];
ngModel.$render = render;
// view-> model
ngModel.$parsers.push(function(value) {
return toLowerCase(value);
});
// model->view
ngModel.$formatters.push(function(value) {
return value;
});
function render() {
vm.input = ngModel.$viewValue;
}
// view -> model && model-> view
function toLowerCase(value) {
return value && value.toLowerCase();
}
scope.$watch('vm.input', function(newVal, oldVal) {
if(newVal …Run Code Online (Sandbox Code Playgroud) 我正在考虑使用 Redis 作为一些高度瞬态数据的存储(我们说它在被驱逐之前一次可能会存在 30 秒)。我知道,当启用持久性时,Redis 会经常生成一个工作程序来持久保存到磁盘。如果我禁用持久性机制,这会给系统的其余部分带来什么样的性能优势。
另外,有人看到这有什么缺点吗——因为如果数据丢失,恢复它是毫无意义的,因为它可能已经过期了?