我有以下logback模式:
<pattern>
{"hostname": "${HOSTNAME}",
"level": "%p",
"method": "%M",
"process_id": "${process}",
"thread_id": "%t",
"timestamp": "%d{Y-M-d}T%d{H:M:S.s}",
"mesg":"%msg"}%n
</pattern>
Run Code Online (Sandbox Code Playgroud)
不幸的是,当实际生成日志消息时,我看到: "process_id": "process_IS_UNDEFINED"
是否有任何自动设置的进程ID变量,例如主机名是什么?我在logback文档中找到这种自动设置变量的文档列表时遇到了很多麻烦,有没有人知道更好的文档源?
编辑:我知道映射诊断上下文,但希望内置解决方案不需要这样的设置,就像主机名如何工作.
我想设置一个S3存储桶策略,以便上传到该存储桶的所有请求都将使用服务器端加密,即使请求标头中未指定.
我看过这篇文章(亚马逊S3服务器端加密存储桶策略问题),有人设法设置了一个存储桶策略,拒绝所有不指定服务器端加密的放置请求,但我不想否认,我想要成功但使用服务器端加密.
我的问题是将输出从EMR流式传输到我的S3存储桶,我不控制发出请求的代码,在我看来,必须在每个请求的基础上指定服务器端加密.
我有一个已分配EC2 IAM角色的实例.我无法使用具有角色分配实例的临时凭证从此实例创建EMR作业流,我从API获得以下响应:
<Error>
<Type>Sender</Type>
<Code>ValidationError</Code>
<Message>Service role and InstanceProfile are required for calls made with temporary credentials provided by STS</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)
谷歌搜索此错误消息绝对没有透露.无论是使用AWS CLI还是boto直接使用,我都会从API获得相同的响应.为了尝试遵循此错误消息的建议,我尝试传递{InstanceProfile: <instance_profile_name>}给boto中api_params的run_jobflow方法的参数,但仍然得到相同的错误.我也试过使用service_role参数run_jobflow,也失败了.将两者一起传递也失败了.
根据亚马逊文档的这个页面,EMR应该支持STS和EC2 IAM角色,所以想知道是否有人以前有这个工作.
假设你有一个定义的类__enter__和__exit__类似的方法:
class MyClass:
def f(self):
raise Exception
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
pass
Run Code Online (Sandbox Code Playgroud)
如果在with块内引发异常,如下所示:
with MyClass() as ins:
ins.f()
Run Code Online (Sandbox Code Playgroud)
该__exit__方法将被隐式调用,这是非常好的.
但是如果你的班级是这样的:
class MyClass:
def __init__(self):
self.f()
def f(self):
raise Exception
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
pass
Run Code Online (Sandbox Code Playgroud)
你像这样实例化它:
with MyClass() as ins:
pass
Run Code Online (Sandbox Code Playgroud)
当在__init__方法内部引发异常时,__enter__还没有被调用,并且也没有被调用__exit__,这不是那么好.解决这个问题的最佳方法是什么?
在mockito中,我们可以捕获可能被多次调用的方法的参数,如下所示:
verify(mocked, atLeastOnce())
.myMethod(myCaptor.capture());
Run Code Online (Sandbox Code Playgroud)
然后
myCaptor.getAllValues()
Run Code Online (Sandbox Code Playgroud)
但是,然后我需要筛选所有捕获的值以找到我感兴趣的值进行验证。
我想做的是这样的:
private class IsMySpecialArg extends ArgumentMatcher<Object> {
public boolean matches(Object other) {
// Matching condition
}
}
Run Code Online (Sandbox Code Playgroud)
...
verify(mocked, atLeastOnce())
.myMethod(myCaptor.capture(argThat(new IsMySpecialArg()));
Run Code Online (Sandbox Code Playgroud)
这样我就可以简单地打电话myCaptor.getValue()并确保它指的是我真正有兴趣捕获的论点。实现这一目标的最佳方法是什么mockito?它是否受支持,或者我的测试策略是否存在根本性错误?
我试图解释通过指定-Xprof标志产生的分析输出.
对于我的应用程序,我得到这样的分析输出:
Flat profile of 8.34 secs (775 total ticks): main
Interpreted + native Method
10.4% 66 + 12 java.lang.ClassLoader.defineClass1
3.6% 27 + 0 java.nio.HeapCharBuffer.<init>
2.5% 1 + 18 java.io.UnixFileSystem.getBooleanAttributes0
...
74.4% 380 + 179 Total interpreted (including elided)
Compiled + native Method
0.3% 0 + 2 java.util.jar.JarFile$1.hasMoreElements
0.3% 0 + 2 org.reflections.vfs.ZipDir$1$1.computeNext
0.1% 0 + 1 java.lang.Object.<init>
...
1.7% 3 + 10 Total compiled
Stub + native Method
7.5% 0 + 56 java.util.zip.ZipFile.getEntry
4.7% 0 + 35 …Run Code Online (Sandbox Code Playgroud) 在itertools的python文档中,它为推进迭代器n步骤提供了以下"配方":
def consume(iterator, n):
"Advance the iterator n-steps ahead. If n is none, consume entirely."
# Use functions that consume iterators at C speed.
if n is None:
# feed the entire iterator into a zero-length deque
collections.deque(iterator, maxlen=0)
else:
# advance to the empty slice starting at position n
next(islice(iterator, n, n), None)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这个配方与这样的东西根本不同(除了消耗整个迭代器的处理):
def other_consume(iterable, n):
for i in xrange(n):
next(iterable, None)
Run Code Online (Sandbox Code Playgroud)
我曾经timeit证实,正如预期的那样,上述方法要慢得多.配方中有什么可以实现这种卓越的性能?我得到它使用islice,但看islice,它看起来与上面的代码基本相同:
def islice(iterable, *args):
s = slice(*args)
it = iter(xrange(s.start …Run Code Online (Sandbox Code Playgroud) 是否可以在AWS批处理上运行docker-in-docker?
我尝试过通过容器属性安装docker套接字的方法:
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["docker", "run", "my container"],
"image": "docker/compose",
"jobRoleArn": "my-role",
"memory": 2000,
"vcpus": 1,
"privileged": true,
"mountPoints": [
{
"sourceVolume": "/var/run/docker.sock",
"containerPath": "/var/run/docker.sock",
"readOnly": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,在具有默认配置的 SPOT 计算环境中运行此批处理作业会产生一个立即转换为 FAILED 状态的作业,状态转换原因如下:
Status reason
Unknown volume '/var/run/docker.sock'.
Run Code Online (Sandbox Code Playgroud) 我想制作一个如下所示的列表:
\n\n\n\n我不确定这种类型的设计是否有一个名称,但“层次结构列表”在谷歌上返回的结果看起来像我想要的,所以我在这里称之为它。例如,它本质上与文件系统浏览器中看到的 UI 模式相同(但这不是我的用例)。
\n\n我相信我可以用 SVG 来实现这一点,但我想知道是否有一种使用纯 CSS 的方法?
\n\n我尝试过的一件事是将嵌套的<ul>s 与before包含 unicode 框绘图字符(如 )的伪元素一起使用\xe2\x94\x96。到目前为止我所拥有的是这样的:
ul {\r\n position: relative;\r\n}\r\n\r\nli {\r\n list-style: none;\r\n}\r\n\r\nli.child::before {\r\n content: "\xe2\x94\x96";\r\n transform: scale(1, 1.8);\r\n position: absolute;\r\n left: 1em;\r\n}Run Code Online (Sandbox Code Playgroud)\r\n<ul>\r\n <li>Root</li>\r\n <ul>\r\n <li class="child">Child Lv. 1</li>\r\n <ul>\r\n <li class="child">Child Lv. 2</li>\r\n </ul>\r\n <li class="child">Child Lv. 1</li>\r\n <ul>\r\n <li class="child">Child Lv. 2</li>\r\n <li class="child">Child Lv. 2</li>\r\n </ul>\r\n </ul>\r\n</ul>Run Code Online (Sandbox Code Playgroud)\r\n它看起来很糟糕,而且我想不出任何方法可以像我在图像示例中所做的那样,真正拥有连接项目的垂直线。希望有任何可以帮助我最接近我的图像示例的技巧。
\n\nSVG …
java ×3
python ×2
python-2.7 ×2
amazon-emr ×1
amazon-s3 ×1
aws-batch ×1
css ×1
docker ×1
emr ×1
encryption ×1
html ×1
logback ×1
mockito ×1
profiler ×1