AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
Todd Blumer
Asked: 2024-09-22 03:13:41 +0800 CST

std::chrono now() induz desvio muito significativo com o Ubuntu 24.04 sob WSL2

  • 9

Tenho um algoritmo que uso há anos para emular um relógio em tempo real em um ambiente não real. Ele sempre funcionou excepcionalmente bem até ser usado no Ubuntu 24.04 no WSL2 no Windows 11. A lógica prevê no relógio do sistema quando cada próximo passo de tempo deve ocorrer e chama repetidamente now() do chrono em um loop até que esse ponto no tempo seja alcançado, então continua com a execução do próximo quadro. Quando configurado neste ambiente, o valor de retorno de now() ocasionalmente saltará uma quantidade significativa para a frente no tempo (por exemplo, ~25 segundos) entre chamadas sucessivas. Simplesmente observar a execução do aplicativo revela que não é uma questão de now() levar ~25 segundos para retornar um valor, pois todo o aplicativo será concluído em ~5 segundos, quando deveria ter levado ~30. A implicação é que chamar now() realmente alterou o tempo do relógio. Para verificar isso, envolvi meu código de amostra em um script bash onde eu poderia monitorar e ressincronizar o relógio do WSL... now() está de fato alterando o tempo do relógio.

O código de exemplo foi criado neste ambiente com g++ e clang++, C++17 e C++20. O mesmo efeito foi observado em todos os quatro casos.

Observou-se que o código de exemplo funciona corretamente sem alteração na hora do relógio em uma máquina executando Ubuntu-24.04 (h/w antigo) e no Windows11/WSL2/Ubuntu-22.04 (h/w idêntico).

Encontrei inúmeras postagens discutindo um problema de desvio de relógio do Linux ao executar sob WSL. A maioria alega ter "consertado" o problema ressincronizando com o relógio de hardware. Isso não "conserta" o problema de desvio, apenas o redefine. Há claramente um bug em algum lugar do sistema, isso pode estar relacionado? Now() em algumas configurações WSL está afetando o tempo e meu caso extremo de martelar now() em um loop é simplesmente pronunciar o problema. Como faço para consertar isso?

código de exemplo reproduzível:

#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <sstream>

void print(std::chrono::duration<long double> elapsed_seconds, 
    std::chrono::_V2::system_clock::time_point, 
    std::chrono::duration<long double> error);

int main() 
{
    std::cout << "commanded_elapsed_time, corresponding_measured_time_points, error" << std::endl; 
    using namespace std::chrono_literals;
    auto start_tp = std::chrono::system_clock::now();
    auto dt = 1.0s;
    auto elapsed = 0.0s;
    auto next_tp = start_tp + elapsed;
    std::chrono::_V2::system_clock::time_point now;
    print(elapsed, start_tp, start_tp - next_tp);
    for (int t = 1; t < 30; t++)
    {
        elapsed = dt * t;
        next_tp = start_tp + elapsed;
        while((now = std::chrono::system_clock::now()) < next_tp) {}
        print(elapsed, now, now - next_tp);
    }
    return 0;
}

void print(
    std::chrono::duration<long double> elapsed_seconds, 
    std::chrono::_V2::system_clock::time_point tp, 
    std::chrono::duration<long double> error)
{
    std::time_t currentTime = std::chrono::system_clock::to_time_t(tp);
    std::tm* localTime = std::localtime(&currentTime);
    std::stringstream ss;
    ss << std::fixed << std::setprecision(3) << std::setfill('0') << std::setw(6) << elapsed_seconds.count() << ", ";
    ss << std::put_time(localTime, "%H:%M:%S");
    auto nowInMicroseconds = std::chrono::time_point_cast<std::chrono::microseconds>(tp);
    auto epoch = nowInMicroseconds.time_since_epoch();
    auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>(epoch).count() % 1000000;
    ss << '.' << std::setfill('0') << std::setw(9) << microseconds * 1000 << ", ";
    ss << std::fixed << std::setprecision(9) << error.count();
    std::cout << ss.str() << std::endl;
}

script de teste:

#! /bin/bash
TRUE=0
FALSE=1
using_wsl=$FALSE
echo "kernel name:........" $(uname -s)
echo "kernel release:....." $(uname -r)
echo "kernel version:....." $(uname -v)
echo "machine:............" $(uname -m)
echo "processor:.........." $(uname -p)
echo "hardware platform..." $(uname -i)
echo "operating system...." $(uname -o)
if [ "$(systemd-detect-virt)" = "wsl" ]; then
    echo "running in wsl...... yes"
    using_wsl=$TRUE
    if ! command -v hwclock >/dev/null 2>&1; then
        echo ""
        echo "When running this script within WSL, the 'hwclock'"
        echo "command is used to sync the WSL clock with the"
        echo "host system's clock. 'hwclock' is not found on"
        echo "this system. Install and rerun test."
        exit 1
    fi
else
    echo "running in wsl...... no"
    using_wsl=$FALSE
fi
echo ""
if [ $using_wsl -eq $TRUE ]; then
    echo "WSL time before syncing with host...:" $(date +"%T.%6N")
    echo "syncing WSL clock with host ..."
    sudo hwclock -s
fi
start_time=$(date +"%s.%N")
echo "test system start time..............: $(date -d "@$start_time" +"%T.%6N")"
echo "test starting ..."
echo ""
./zero_drift_dt
end_test_time=$(date +"%s.%N")
echo ""
echo "... test complete"
echo "test system finish time............................: $(date -d "@$end_test_time" +"%T.%6N")"
if [ $using_wsl -eq $TRUE ]; then
    sudo hwclock -s
    echo "WSL time after syncing with host (again)...........:" $(date +"%T.%6N")
fi
final_time=$(date +"%s.%N")
expected_duration=$(awk "BEGIN {print $end_test_time - $start_time}")
actual_duration=$(awk "BEGIN {print $final_time - $start_time}")
error_duration=$(awk "BEGIN {print $end_test_time - $final_time}")
echo "Expected approximate test duration (s).............:" $expected_duration
echo "Measured test duration (s).........................:" $actual_duration
echo "During this test, now() moved clock forward (s)....:" $error_duration

Resultados no sistema problemático:

~/Projects/proving_grounds/now_error$ sudo ./test.sh
[sudo] password for blumert:
kernel name:........ Linux
kernel release:..... 5.15.153.1-microsoft-standard-WSL2
kernel version:..... #1 SMP Fri Mar 29 23:14:13 UTC 2024
machine:............ x86_64
processor:.......... x86_64
hardware platform... x86_64
operating system.... GNU/Linux
running in wsl...... yes

WSL time before syncing with host...: 13:39:30.320309
syncing WSL clock with host ...
test system start time..............: 13:39:31.001844
test starting ...

commanded_elapsed_time, corresponding_measured_time_points, error
00.000, 13:39:31.003072000, 0.000000000
01.000, 13:39:32.003072000, 0.000000070
02.000, 13:39:52.464335000, 19.461263572
03.000, 13:39:52.464537000, 18.461465685
04.000, 13:39:52.464569000, 17.461497372
05.000, 13:39:52.464573000, 16.461501714
06.000, 13:39:52.464575000, 15.461503561
07.000, 13:39:52.464577000, 14.461505319
08.000, 13:39:52.464579000, 13.461506932
09.000, 13:39:52.464580000, 12.461508617
10.000, 13:39:52.464582000, 11.461510324
11.000, 13:39:52.464584000, 10.461512480
12.000, 13:39:52.464586000, 9.461514319
13.000, 13:39:52.464588000, 8.461515990
14.000, 13:39:52.464589000, 7.461517739
15.000, 13:39:52.464591000, 6.461519320
16.000, 13:39:52.464593000, 5.461520922
17.000, 13:39:52.464594000, 4.461522511
18.000, 13:39:52.464596000, 3.461524055
19.000, 13:39:52.464597000, 2.461525592
20.000, 13:39:52.464599000, 1.461527167
21.000, 13:39:52.464600000, 0.461528720
22.000, 13:39:57.473118000, 4.470046550
23.000, 13:39:57.473178000, 3.470106269
24.000, 13:39:57.473182000, 2.470110610
25.000, 13:39:57.473184000, 1.470112218
26.000, 13:39:57.473185000, 0.470113725
27.000, 13:40:02.476388000, 4.473316514
28.000, 13:40:02.476452000, 3.473380680
29.000, 13:40:02.476457000, 2.473385528

... test complete
test system finish time............................: 13:40:02.477504
WSL time after syncing with host (again)...........: 13:39:43.002630
Expected approximate test duration (s).............: 31.4757
Measured test duration (s).........................: 12.0018
During this test, now() moved clock forward (s)....: 19.4738
  • Note que quando o relógio no final do teste, ele reinicia para trás no tempo. Se o sistema for deixado sozinho por um tempo, a primeira ressincronização exibirá esse comportamento também.
  • Pelo seu propósito definido, o aplicativo deveria ter levado um pouco mais de 30 segundos para ser executado. Conforme medido em relação aos tempos ressincronizados, levou apenas 12.
  • Em uma execução perfeita (como em todos os outros ambientes descritos acima), os pontos de tempo medidos correspondentes progridem em incrementos exatos de 1 segundo, e o erro raramente é maior do que algumas dezenas de nanossegundos (ou seja, como nas duas primeiras amostras).
  • Cada corrida é um pouco diferente, pois o primeiro grande salto pode aparentemente acontecer a qualquer momento nos primeiros 10 segundos ou mais, mas geralmente ocorre nos primeiros 3.
c++
  • 1 respostas
  • 76 Views
Martin Hope
Barry
Asked: 2024-09-21 21:05:38 +0800 CST

A macro de derivação de depuração adiciona "&" extra ao último campo

  • 9

Eu estava olhando a saída de #[derive(Debug)]um caso simples usando cargo expand, onde isto:

#[derive(Debug)]
struct Point {
    x: i32,
    y: i32,
}

emitido (os comentários adicionados são meus):

#[automatically_derived]
impl ::core::fmt::Debug for Point {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field2_finish(
            f,
            "Point",
            "x",
            &self.x,   // <== &
            "y",
            &&self.y,  // <== &&
        )
    }
}

Note que é &self.xmas &&self.y. Tentei com algumas outras situações e o último campo sempre parece obter um extra &. O valor parece que leva um &dyn Debug, então estou supondo que isso apenas é desreferenciado automaticamente (em algum lugar) e não importa?

Por que o extra &?

rust
  • 1 respostas
  • 63 Views
Martin Hope
Axel Andersen
Asked: 2024-09-21 19:08:44 +0800 CST

PSCustomObject com diferentes tipos de string

  • 9

Tenho um fluxo de trabalho que é bem exigente com os PSCustomObjects que recebe. Costumo usar Select-Objectpara obter as propriedades dos objetos que quero manter e, às vezes, preciso converter alguns dos valores para formatos mais utilizáveis. A maneira mais fácil de fazer isso é usar a @{Name='Name'; Expression = {'Expression'}}técnica.

MAS, essa técnica bagunça o PSCustomObject de uma forma que bloqueia meu fluxo de trabalho futuro.

O problema pode ser reproduzido assim:

$object = [pscustomobject]@{
        Text        = "This is a string"
    }

Na saída abaixo, a definição para string é 'string Text=This is a string'

$object | Select-Object * | Get-Member
<# Outputs
TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Text        NoteProperty string Text=This is a string
#>

Ao adicionar uma nova NoteProperty com a técnica Select-Object, a definição é 'System.String Text2=This is a string'

É isso que faz meu próximo cmdlet ser executado.

$WhatHappensToText = $object | Select-Object @{Name='Text'; Expression={$_.Text}} 
$WhatHappensToText | Get-Member
<# Outputs
TypeName: Selected.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Text        NoteProperty System.String Text=This is a string
#>

Ao remover o excedente como abaixo, a definição retorna para 'string Text2=This is a string'

Exportar para Clixml e reimportar faz o mesmo

$WhatHappensToText | ConvertTo-Json | ConvertFrom-Json | Get-Member
<# Outputs
TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Text        NoteProperty string Text=This is a string
#>

Se eu adicionar a nova NoteProperty assim, a definição será 'string Text2=This is a string' como eu gosto

$object2 = $object | Select-Object *
$object2 | foreach-object {$_ | Add-Member -MemberType NoteProperty -Name Text2 -Value $_.Text}
$object2 | Get-Member
<# Outputs
TypeName: Selected.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Text        NoteProperty string Text=This is a string
Text2       NoteProperty string Text2=This is a string
#>

Tenho as seguintes perguntas:

Por que a @{Name='Name'; Expression = {'Expression'}}técnica adiciona System.String à Definição e não string como no cenário Add-Member?

Existe uma maneira de fazer a @{Name='Name'; Expression = {'Expression'}}técnica adicionar uma string e não um System.String?

powershell
  • 1 respostas
  • 56 Views
Martin Hope
Kaveen Gayanga
Asked: 2024-09-21 00:05:22 +0800 CST

Por que adicionar @JsonIgnoreProperties(ignoreUnknown = true) resolve UnrecognizedPropertyException ao mapear DTO para Entity usando ObjectMapper?

  • 9

Tentei mapear um DTO (Student) para um DAO (StudentEntity) usando o método convertValue do ObjectMapper:

new ObjectMapper().convertValue(student, StudentEntity.class);

Entretanto, encontrei a seguinte exceção:

2024-09-20T20:48:01.063+05:30  INFO 10444 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-09-20T20:48:01.064+05:30  INFO 10444 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-09-20T20:48:01.065+05:30  INFO 10444 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
2024-09-20T20:48:01.210+05:30 ERROR 10444 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Unrecognized field "firstName" (class com.icet.dao.StudentEntity), not marked as ignorable (0 known properties: ])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.icet.dao.StudentEntity["firstName"])] with root cause

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "firstName" (class com.icet.dao.StudentEntity), not marked as ignorable (0 known properties: ])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.icet.dao.StudentEntity["firstName"])

Mas depois de adicionar a @JsonIgnoreProperties(ignoreUnknown = true)anotação à classe StudentEntity, a exceção não ocorreu.

Minha pergunta é: quais são as possíveis razões para essa exceção e por que adicionar @JsonIgnoreProperties(ignoreUnknown = true)resolve o problema?

Classe de entidade:

package com.icet.dao;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Builder
@Entity
@Table(name = "student")
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class StudentEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    Long id;


    private String firstName;
    private String lastName;
    private String address;
    private String phoneNumber;
    private String nic;
    private String email;
    private String batch;
    private String age;
}

Classe de Estudante:

package com.icet.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

@Data
@AllArgsConstructor
@Builder
public class Student {
    private String firstName;
    private String lastName;
    private String address;
    private String phoneNumber;
    private String nic;
    private String email;
    private String batch;
    private String age;
}

Método de classe de serviço que mapeou objeto:

public void registerStudent(Student student) {
        StudentEntity entity1 = new ObjectMapper()
                .convertValue(student,StudentEntity.class);

        //log.info(entity1.toString());
        repository.save(entity1);
    }

Rastreamento de pilha completa:

2024-09-20T20:48:01.063+05:30  INFO 10444 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-09-20T20:48:01.064+05:30  INFO 10444 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-09-20T20:48:01.065+05:30  INFO 10444 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
2024-09-20T20:48:01.210+05:30 ERROR 10444 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Unrecognized field "firstName" (class com.icet.dao.StudentEntity), not marked as ignorable (0 known properties: ])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.icet.dao.StudentEntity["firstName"])] with root cause

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "firstName" (class com.icet.dao.StudentEntity), not marked as ignorable (0 known properties: ])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.icet.dao.StudentEntity["firstName"])
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1153) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2241) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1793) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1771) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:316) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4619) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4555) ~[jackson-databind-2.17.2.jar:2.17.2]
    at com.icet.service.impl.StudentServiceImpl.registerStudent(StudentServiceImpl.java:27) ~[classes/:na]
    at com.icet.controller.StudentController.registerStudent(StudentController.java:20) ~[classes/:na]
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) ~[spring-web-6.1.12.jar:6.1.12]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) ~[spring-web-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.28.jar:6.0]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.1.12.jar:6.1.12]
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.28.jar:6.0]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.1.12.jar:6.1.12]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.12.jar:6.1.12]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.1.12.jar:6.1.12]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.12.jar:6.1.12]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.1.12.jar:6.1.12]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.12.jar:6.1.12]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:904) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.28.jar:10.1.28]
    at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]

java
  • 2 respostas
  • 70 Views
Martin Hope
Lennon Lee
Asked: 2024-09-20 21:38:04 +0800 CST

r dataframe e matriz resultam em nomes de linhas diferentes ao usar rbind

  • 9

Método 1:

df1<-data.frame(A=1:5,B=2:6)
df2<-data.frame(A=1:5,B=2:6)
df3<-rbind(df1,df2)
row.names(df3)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

Método 2:

df1<-data.frame(matrix(data = c(1:5,2:6),
                       nrow = 5,
                       dimnames = list(c(1:5),c("A","B"))))
df2<-data.frame(matrix(data = c(1:5,2:6),
                       nrow = 5,
                       dimnames = list(c(1:5),c("A","B"))))
df3<-rbind(df1,df2)
row.names(df3)
 [1] "1"  "2"  "3"  "4"  "5"  "11" "21" "31" "41" "51"

Entendo que os nomes das linhas devem ser valores únicos. Gostaria de saber por que o Mehtod1 e o Método 2 geram resultados diferentes nos nomes das linhas?

  • 3 respostas
  • 84 Views
Martin Hope
Eric Krantz
Asked: 2024-09-19 07:07:12 +0800 CST

Alterar dois pontos para ponto na legenda da figura no Quarto

  • 9

Ao referenciar uma figura em um documento Quarto e tricotar para HTML, dois pontos são colocados por padrão entre a palavra Figura e a legenda da figura. Eu gostaria que esses dois pontos fossem um ponto final.

Tentei um arquivo style.css com o seguinte, mas não funciona:

.figcaption::before {
content: "Figure " counter(fig): ". ";
}

Aqui está meu documento quarto:

---
title: "Periods are better than colons"
author: "Eric"
format:
  html:
    css: style.css
---

I'd like to replace the colon with a period in the caption for @fig-MyRLogo.

![RLogo](Rlogo.jpg){fig-align="left" #fig-MyRLogo}

E a saída que obtenho é:

Saída quarto

  • 1 respostas
  • 22 Views
Martin Hope
stack92
Asked: 2024-09-18 20:55:48 +0800 CST

Herança Python, não retornando nova classe

  • 9

Estou tendo problemas para entender por que a herança não está funcionando no exemplo a seguir:

import vlc

class CustomMediaPlayer(vlc.MediaPlayer):

    def __init__(self, *args):
        super().__init__(*args)

    def custom_method(self):
        print("EUREKA")

custom_mp = CustomMediaPlayer()
print(custom_mp)
custom_mp.custom_method()

Isso produz:

<vlc.MediaPlayer object at 0x7743d37db8f0>

AttributeError: 'MediaPlayer' object has no attribute 'custom_method'

em vez de um CustomMediaPlayerobjeto, com o custom_method.

Por que isso está acontecendo? É porque vlc.MediaPlayeré uma _Ctypeclasse?

python
  • 1 respostas
  • 45 Views
Martin Hope
Art Gertner
Asked: 2024-09-18 17:34:06 +0800 CST

Por que ocorre "TypeError: os índices de string devem ser inteiros" ao usar índices ou fatias negativas na formatação de strings?

  • 9

Gostaria de entender por que isso funciona bem:

>>> test_string = 'long brown fox jump over a lazy python'
>>> 'formatted "{test_string[0]}"'.format(test_string=test_string)
'formatted "l"'

Mas isso falha:

>>> 'formatted "{test_string[-1]}"'.format(test_string=test_string)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
>>> 'formatted "{test_string[11:14]}"'.format(test_string=test_string)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string indices must be integers

Eu sei que isso poderia ser usado:

'formatted "{test_string}"'.format(test_string=test_string[11:14])

...mas isso não é possível na minha situação.

Estou lidando com um ambiente tipo sandbox onde uma lista de variáveis ​​é passada para str.format()um dicionário de kwargs. Essas variáveis ​​estão fora do meu controle. Eu sei os nomes e tipos de variáveis ​​com antecedência e só posso passar a string do formatador. A string do formatador é minha única entrada. Tudo funciona bem quando preciso combinar algumas strings ou manipular números e sua precisão. Mas tudo desmorona quando preciso extrair uma substring.

python
  • 2 respostas
  • 62 Views
Martin Hope
Matteo Monti
Asked: 2024-09-17 19:20:03 +0800 CST

Problemas de visibilidade intrigantes com estruturas semelhantes a tuplas Rust

  • 9

Estou encontrando um erro intrigante ao criar uma estrutura semelhante a uma tupla em algum lugar no meu projeto Rust.

O erro

Resumi minha questão no seguinte trecho:

mod parent {
    pub struct X(u32);

    mod child {
        use crate::X;

        fn f() {
            let x = X(42);
        }
    }
}

use parent::X;

Na minha cabeça, esse snippet deve compilar perfeitamente. Xé público, e seu campo é visível dentro de parent, então todos os seus filhos (incluindo child::f) devem ser capazes de acessá-lo. No entanto, quando vou e compilo esse snippet, recebo

error[E0423]: expected function, tuple struct or tuple variant, found struct `X`
 --> src/main.rs:8:21
  |
8 |             let x = X(42);
  |                     ^

For more information about this error, try `rustc --explain E0423`.
error: could not compile `playground` (bin "playground" test) due to 1 previous error

Estranhamente, a mensagem de erro menciona que o compilador esperava uma "variante de tupla", mas encontrou Xem vez disso. Mas, X é uma variante de tupla!

Dependência do caminho

O problema desaparece quando eu use super::Xem vez de crate::X.

mod parent {
    pub struct X(u32);

    mod child {
        use super::X;

        fn f() {
            let x = X(42);
        }
    }
}

use parent::X;

Isso é ainda mais intrigante para mim. Por que a correção do meu snippet dependeria do caminho específico que eu uso para use X? Na minha mente, Xé X, de onde quer que eu o importe.

Com estruturas não-tuplas

O problema também desaparece quando dou Xcampos nomeados:

mod parent {
    pub struct X {
        x: u32,
    }

    mod child {
        use crate::X;

        fn f() {
            let x = X { x: 42 };
        }
    }
}

use parent::X;

Note que estou usando use crate::Xneste snippet, assim como no primeiro! Por que esse erro apareceria apenas com structs do tipo tupla? Estou muito confuso. Normalmente não sou alguém que duvida da correção do compilador Rust, mas tenho que admitir que hoje minha fé está sendo testada.

Alguma ideia do que posso estar perdendo?

rust
  • 1 respostas
  • 60 Views
Martin Hope
Paolo Lorenzini
Asked: 2024-09-17 18:51:40 +0800 CST

preenchendo uma matriz por linhas

  • 9

Gostaria de preencher uma matriz por linha com base em uma função que fornece a seq() de um número seq(1) 1 seq(2) 1 2 e assim por diante

    matrixinp = matrix(data=NA, nrow=6, ncol=6) 

> print(matrixinp) 
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   NA   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA
    
    # display matrix 
    print(matrixinp) 
    
    # fill the elements with some  
    # 90 in a matrix 
    for (i in 1:6){
      aaa<-seq(i)
      print(aaa)
      for(j in 1:6){ 
        matrixinp[j,] = aaa
      } 
    }

Isso me deu isto:

> print(matrixinp)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    1    2    3
[2,]    1    2    3    1    2    3
[3,]    1    2    3    1    2    3
[4,]    1    2    3    1    2    3
[5,]    1    2    3    1    2    3
[6,]    1    2    3    1    2    3

mas eu gostaria disto:

> print(matrixinp)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    NA   NA   NA   NA   NA
[2,]    1    2    NA   NA   NA   NA
[3,]    1    2    3    NA   NA   NA
[4,]    1    2    3    4    NA   NA
[5,]    1    2    3    4    5    NA
[6,]    1    2    3    4    5    6
  • 7 respostas
  • 80 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve