小编Luc*_*asi的帖子

PyInstaller加密 - 密钥

我试图理解为什么PyInstaller文档声明可以轻松提取加密Python源代码的--key参数:

此外,通过在PyInstaller的命令行上指定加密密钥,可以使用AES256对Python字节码进行模糊处理.请注意,提取密钥并获取原始字节代码仍然非常容易,但它应该可以防止大多数形式的"随意"篡改.

我对AES-256的基本理解是,如果没有人拥有你指定的加密密钥,他们就无法"轻松"提取它.

有没有人有更好的理解?

python pyinstaller

7
推荐指数
2
解决办法
4808
查看次数

Angular 6 - 使用 Chrome 缓慢打开 Mat-Dialog

我正在使用来自 Angular Material(6.0.1 版本)的 Mat-Dialog 组件。

使用 Chrome 浏览器打开对话框时,打开动画很慢。

当我使用 Firefox、Safari、MS Edge 时,打开动画很好。

我已经记录了性能配置文件,这似乎表明在打开对话框时播放动画时出现缓慢:

在此处输入图片说明

我可以在 Stackoverflow 上看到另一个主题,但也有类似的问题:为什么 Angular 5 with Angular Material Dialog 很慢?

除了禁用动画之外,还有什么办法可以解决这个问题吗?

谢谢

angular-material angular-material2 angular

6
推荐指数
0
解决办法
3581
查看次数

Prometheus query.lookback-delta推荐值

我在这里阅读并理解了 Prometheus 2.0 涉及的陈旧概念

在我正在开发的导出器中,指标由远程设备作为 gRPC 流推送,因此我使用 prometheus.NewMetricWithTimestamp 动态创建指标并实现 Collector 接口。

每当远程设备停止发出指标时,这些指标就不再在 Prom 客户端 HTTP 端点中公开。但是, query.lookback-delta标志的默认值(5 分钟)使 Prometheus 将该指标标记为过时 5 分钟。因此,当发送 PromQL 查询时,我们仍然看到最后一个被抓取的值。

我确实将标志设置为 30 秒,因此从仪表板的角度来看,最终用户不必等待 5 分钟即可看到指标消失。

因此,我想知道 30s 是否是合理的值,如果不是,有何影响?

提前致谢。

prometheus

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

文件流 - ValueError:嵌入空字节

我正在尝试通过 HTTP 请求下载 .png 图像,并通过 HTTP 将其上传到另一个位置。我的目标是避免将文件保存在磁盘上,以便在内存中处理。

我有下面的代码:

  1. 下载文件并将其转换为字节数组:
resp = requests.get(
    'http://www.personal.psu.edu/crd5112/photos/PNG%20Example.png',
    stream=True)

img = BytesIO(resp.content)
Run Code Online (Sandbox Code Playgroud)
  1. 将文件上传到远程 HTTP 存储库
data=open(img.getvalue()).read()

r = requests.post(url=url, data=data, headers=headers, auth=HTTPBasicAuth('user', 'user'))
Run Code Online (Sandbox Code Playgroud)

读取字节数组时,我收到 ValueError 异常“嵌入空字节”。

如果我将文件保存到磁盘上并按如下方式加载,则不会出现错误:

data=open(img.getvalue()).read()

r = requests.post(url=url, data=data, headers=headers, auth=HTTPBasicAuth('user', 'user'))
Run Code Online (Sandbox Code Playgroud)

关于如何在不将文件保存在磁盘上的情况下实现它的任何建议?

python python-3.x

3
推荐指数
1
解决办法
2万
查看次数

反应式表单数组 - 推送新元素时避免验证错误

我有一个由单个表单数组组成的表单组:

ngOnInit() {
    this.deviceDetailsFormGroup = this._formBuilder.group({
        deviceDetails: this._formBuilder.array([
            this.buildDeviceDetailsForm()
        ])
    });
}
Run Code Online (Sandbox Code Playgroud)

Form Array 中的每个控件都需要验证器:

buildDeviceDetailsForm(): FormGroup {
    return this._formBuilder.group({
        ipAddressCtrl: [
            "",
            [Validators.pattern(ipaddressPattern), Validators.required]
        ],
        hostnameCtrl: [
            "",
            [
                Validators.required,
                Validators.maxLength(30),
                Validators.minLength(5)
            ]
        ]
    });
}
Run Code Online (Sandbox Code Playgroud)

下面是我对 Form Array 的 push 和 remove 函数:

addNewDevice() {
    this.deviceItems = this.deviceDetailsFormGroup.get(
        "deviceDetails"
    ) as FormArray;

    if (this.deviceItems.length > MAX_DEVICES) {
        this.toastNotif.errorToastNotif(
            `A maximum of ${MAX_DEVICES} devices can be selected for a single job scan`,
            "Too many devices selected"
        );
        return;
    } …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms

3
推荐指数
2
解决办法
2550
查看次数

Prometheus Exporter - 直接检测与自定义收集器

我目前正在为遥测网络应用程序编写 Prometheus 导出器。

我已经阅读了此处的文档编写导出器,虽然我了解实现自定义收集器以避免竞争条件的用例,但我不确定我的用例是否适合直接检测。

基本上,网络指标由网络设备通过 gRPC 流式传输,因此我的出口商只需接收它们而不必有效地抓取它们。

我使用了以下代码的直接检测:

  • 我使用 promauto 包声明我的指标以保持代码紧凑:
package metrics

import (
    "github.com/lucabrasi83/prom-high-obs/proto/telemetry"
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promauto"
)

var (
    cpu5Sec = promauto.NewGaugeVec(

        prometheus.GaugeOpts{
            Name: "cisco_iosxe_iosd_cpu_busy_5_sec_percentage",
            Help: "The IOSd daemon CPU busy percentage over the last 5 seconds",
        },
        []string{"node"},
    )
Run Code Online (Sandbox Code Playgroud)
  • 下面是我如何从 gRPC 协议缓冲区解码的消息中简单地设置度量值:
cpu5Sec.WithLabelValues(msg.GetNodeIdStr()).Set(float64(val))
Run Code Online (Sandbox Code Playgroud)
  • 最后,这是我的主循环,它基本上处理我感兴趣的指标的遥测 gRPC 流:
for {

        req, err := stream.Recv()
        if err == io.EOF {
            return nil
        }
        if err != nil {
            logging.PeppaMonLog(
                "error",
                fmt.Sprintf("Error while reading client %v stream: …
Run Code Online (Sandbox Code Playgroud)

go prometheus

2
推荐指数
1
解决办法
1379
查看次数