小编Dan*_*ats的帖子

迭代时修改Java ArrayList

我想要做类似的东西 这个

但是,我不希望迭代添加的元素.基本上我有一个底层的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)

java iterator

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

在 bash 脚本执行之间保存密码

我希望我的脚本提示输入密码,但我只希望它每次执行一次会议(假设是半小时)。是否可以在脚本执行之间安全地保存用户的登录凭据?我需要这是一个 bash 脚本,因为它必须在几种不同类型的 UNIX 上运行,而我无权在这些 UNIX 上安装任何东西。

我正在考虑加密一个文本文件,我将在其中写入登录凭据,但是我将在哪里保存该文件的密码?看来我只是重新创建了问题。

我知道运行加密脚本的实用程序,并且我非常反对使用它们,因为我不喜欢在脚本中保留主密码的想法,人们稍后可能需要调试。

编辑:这不是服务器登录脚本,而是通过我无法控制的 Web 服务器进行身份验证。

编辑 2:编辑会话持续时间

security bash shell sh

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

从 docker 镜像获取 dockerfile / docker 命令

是否可以取回为生成给定 docker 映像而运行的 docker 命令?由于 docker 文件的每一行都应映射到单个层,因此这似乎是可能的,但我在文档中没有看到任何内容。

docker

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

从文件中读取terraform变量

在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角色策略页面中给出的示例.有没有办法从外部文件中读取文档?

这有很多好处:

  • 您可以使用工具生成策略
  • 您可以使用linting工具来验证策略JSON.此外,编辑器语法突出显示将起作用,显示JSON错误,如尾随逗号.
  • 您可以使用更高级的工具来验证策略文档语法

amazon-web-services terraform

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

在flask-restful 和create_app 中使用flask-jwt-extended 回调

我正在尝试使用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变量隐藏在函数中,不能在装饰器的全局范围内使用。

解决此问题/解决此问题的正确方法是什么?

python flask jwt flask-restful flask-jwt-extended

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

单击检查器窗口时如何防止 Firefox Web 扩展弹出窗口关闭

我很难调试我的 Firefox 扩展(弹出窗口)。每当我单击调试窗格时,弹出窗口就会关闭,调试窗格中的所有信息都会消失。当尝试检查网络请求、从控制台复制某些内容或查看检查器中的元素样式时,会发生这种情况。

我确信其他 Firefox 扩展开发人员也遇到过这个问题。你是怎么解决的?

firefox-addon-webextensions

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

如何判断浏览器开发者控制台中是否预加载了资源

我正在使用<link rel="preload" ...>技术使资源加载速度更快,但我没有看到对页面加载时间的可衡量影响。我不确定这是因为资源实际上没有被预加载,还是因为其他原因。

如果我使用 Firefox 进行调试,如何在 Firefox Developer Console 中确定资源是否已预加载?

preload firefox-developer-tools

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

Python3 模拟用另一个函数替换函数

如何使用 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 中。

我觉得我错过了一些明显的东西。有没有一种方法可以轻松地模拟一个函数并用比静态返回值更复杂的东西替换它的实现?

python unit-testing mocking

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

如何从 SQLException 对象中获取 SQLException 原因

我正在使用 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 没有特定于供应商的错误代码。不知道这是否仍然有效。

java jdbc sqlexception

4
推荐指数
1
解决办法
3878
查看次数

mypy 设置字典键/接口

假设我有一个将字典作为参数的函数:

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 type-hinting python-3.x mypy

4
推荐指数
1
解决办法
1210
查看次数