我想要做类似的东西 这个
但是,我不希望迭代添加的元素.基本上我有一个底层的arraylist,我在arraylist上返回一个迭代器.在使用该迭代器进行迭代时,我想将元素添加到原始的arraylist中.我该怎么做呢?
编辑:这个问题是我需要迭代代码修改迭代器中的对象.我不认为克隆arraylist会起作用......
EDIT2:这是我的代码的精简版本.
public class Map {
// a bunch of code
private ArrayList<Robot> robots;
public Iterator<Robot> getRobots() {
return robots.iterator();
}
public void buildNewRobot(params) {
if(bunchOfConditions)
robots.add(new Robot(otherParams);
}
// a bunch more code
}
Run Code Online (Sandbox Code Playgroud)
这是在另一个类中使用的地图.
for(Iterator<Robot> it = map.iterator(); it.hasNext();){
Robot r = it.next();
// a bunch of stuff here
// some of this code modifies Robot r
if(condition)
map.buildNewRobot(params);
}
Run Code Online (Sandbox Code Playgroud) 我希望我的脚本提示输入密码,但我只希望它每次执行一次天会议(假设是半小时)。是否可以在脚本执行之间安全地保存用户的登录凭据?我需要这是一个 bash 脚本,因为它必须在几种不同类型的 UNIX 上运行,而我无权在这些 UNIX 上安装任何东西。
我正在考虑加密一个文本文件,我将在其中写入登录凭据,但是我将在哪里保存该文件的密码?看来我只是重新创建了问题。
我知道运行加密脚本的实用程序,并且我非常反对使用它们,因为我不喜欢在脚本中保留主密码的想法,人们稍后可能需要调试。
编辑:这不是服务器登录脚本,而是通过我无法控制的 Web 服务器进行身份验证。
编辑 2:编辑会话持续时间
是否可以取回为生成给定 docker 映像而运行的 docker 命令?由于 docker 文件的每一行都应映射到单个层,因此这似乎是可能的,但我在文档中没有看到任何内容。
在terraform中,长按键可以指定如下:
resource "aws_iam_role_policy" "foo-policy" {
role = "${aws_iam_role.foo-role.name}"
name = "foo-policy"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
EOF
}
Run Code Online (Sandbox Code Playgroud)
这是IAM策略文档的常见模式.此处记录了该方法,并且是在terraform上的AWS IAM角色策略页面中给出的示例.有没有办法从外部文件中读取文档?
这有很多好处:
我正在尝试使用flask-jwt-extended为我的flask API创建API令牌。我正在尝试初始化token_in_blacklist_loader但无法找出正确的方法来做到这一点。
问题在于它token_in_blacklist_loader是作为装饰器实现的。它应该按以下方式使用:
@jwt.token_in_blacklist_loader
def check_if_token_in_blacklist(decrypted_token):
jti = decrypted_token['jti']
return jti in blacklist
Run Code Online (Sandbox Code Playgroud)
其中jwt定义为:
jwt = JWTManager(app)
Run Code Online (Sandbox Code Playgroud)
但是如果使用create_app模式,则jwt变量隐藏在函数中,不能在装饰器的全局范围内使用。
解决此问题/解决此问题的正确方法是什么?
我很难调试我的 Firefox 扩展(弹出窗口)。每当我单击调试窗格时,弹出窗口就会关闭,调试窗格中的所有信息都会消失。当尝试检查网络请求、从控制台复制某些内容或查看检查器中的元素样式时,会发生这种情况。
我确信其他 Firefox 扩展开发人员也遇到过这个问题。你是怎么解决的?
我正在使用<link rel="preload" ...>技术使资源加载速度更快,但我没有看到对页面加载时间的可衡量影响。我不确定这是因为资源实际上没有被预加载,还是因为其他原因。
如果我使用 Firefox 进行调试,如何在 Firefox Developer Console 中确定资源是否已预加载?
如何使用 python 中的另一个函数来模拟一个函数,这也将提供一个模拟对象?
我有执行类似操作的代码:
def foo(arg1, arg2):
r = bar(arg1)
# does interesting things
Run Code Online (Sandbox Code Playgroud)
我想替换bar函数的实现,让它返回合理的值,并确保使用正确的参数调用它。
我试过这个,fake_bar我的简单替代品在哪里bar:
from unittest.mock import patch
def test_foo():
with patch("x.bar", fake_bar) as mock_bar:
actual = foo(arg1, arg2)
assert actual == expected
mock_bar.assert_called_once_with(arg1)
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
AttributeError: 'function' 对象没有属性 'assert_called_once'
我发现这个问题建议使用 create_autospec。但是, mock.create_autospec 不保留返回值。
在Python文档建议做这样的事情:
mock_function = create_autospec(function, return_value='fishy')
Run Code Online (Sandbox Code Playgroud)
但是,我的伪造版本bar计算出的返回值不是静态的,也不是那么容易放入内联 lambda 中。
我觉得我错过了一些明显的东西。有没有一种方法可以轻松地模拟一个函数并用比静态返回值更复杂的东西替换它的实现?
我正在使用 JDBC,并且正在运行查询。有没有办法从返回的 SQLException 对象中获取失败的原因?
特别是,我想知道我的查询是否违反了外键约束(以及哪个)或键约束。
这个结果是特定于供应商的吗?以防万一,我使用的是 postgresql-8.4-701.jdbc4.jar 驱动程序。如果它是特定于供应商的,我在哪里可以找到代码?
编辑:我想动态地做到这一点 - 即
if(violated foreign key constraint on attribute x) {
return 5;
} else if (violated primary key constraint) {
return 7;
} else {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西。
编辑:根据这篇文章,PostgreSQL JDBC 没有特定于供应商的错误代码。不知道这是否仍然有效。
假设我有一个将字典作为参数的函数:
def f(d: dict) -> None:
x = d["x"]
print(x)
Run Code Online (Sandbox Code Playgroud)
我可以指定这本字典必须有"x"mypy的键吗?我正在寻找类似于typescript 的 interface 的东西,而无需更改d为类。
我不想更改d为类的原因是因为我正在修改一个大型现有代码库以添加mypy类型检查并且该字典在许多地方使用。如果我必须将所有实例更改为d["x"],我将不得不修改大量代码d.x。
python ×3
java ×2
bash ×1
docker ×1
firefox-addon-webextensions ×1
flask ×1
iterator ×1
jdbc ×1
jwt ×1
mocking ×1
mypy ×1
preload ×1
python-3.x ×1
security ×1
sh ×1
shell ×1
sqlexception ×1
terraform ×1
type-hinting ×1
unit-testing ×1