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
Bryan Tan
Asked: 2025-04-02 07:34:05 +0800 CST

Como faço para corrigir comandos sed que ficam extremamente lentos quando a carga está alta?

  • 8

Tenho um script bash que pega um arquivo de propriedades simples e substitui os valores em outro arquivo. (O arquivo de propriedades é apenas linhas de propriedades do tipo 'foo=bar')

INPUT=`cat $INPUT_FILE`
while read line; do
   PROP_NAME=`echo $line | cut -f1 -d'='`
   PROP_VALUE=`echo $line | cut -f2- -d'=' | sed 's/\$/\\\$/g`
   time INPUT="$(echo "$INPUT" | sed "s\`${PROP_NAME}\b\`${PROP_VALUE}\`g")"
done <<<$(cat "$PROPERTIES_FILE")
# Do more stuff with INPUT

No entanto, quando minha máquina tem carga alta (mais de quarenta anos), tenho uma grande perda de tempo em meus seds

real  0m0.169s
user  0m0.001s
sys  0m0.006s

Baixa carga:

real  0m0.011s
user  0m0.002s
sys  0m0.004s

Normalmente, perder 0,1 segundo não é um grande problema, mas tanto o arquivo de propriedades quanto os arquivos de entrada têm centenas/milhares de linhas e esses 0,1 segundo somam mais de uma hora de tempo desperdiçado.

O que posso fazer para consertar isso? Preciso apenas de mais CPUs?

Propriedades de exemplo (as linhas começam com um caractere especial para criar uma maneira de indicar que algo na entrada está tentando acessar uma propriedade)

$foo=bar
$hello=world
^hello=goodbye

Entrada de amostra

This is a story about $hello. It starts at a $foo and ends in a park.

Bob said to Sally "^hello, see you soon"

Resultado esperado

This is a story about world. It starts at a bar and ends in a park.

Bob said to Sally "goodbye, see you soon"
linux
  • 7 respostas
  • 255 Views
Martin Hope
replicante
Asked: 2025-04-02 05:26:44 +0800 CST

Adicionar rótulos ao gráfico de distribuição normal usando ggplot2

  • 8

Tenho tentado produzir um gráfico semelhante a este usando ggplot2:

insira a descrição da imagem aqui

E este é meu código R:

df <- data.frame(
  tecnica = factor(rep(1:4, each = 4)),  # Repite cada tecnica 4 veces
  bloque = factor(rep(1:4, times = 4)),  # Iitera por cada bloque
  resistencia = c(3129, 3000, 2865, 2890,
                  3200, 3300, 2975, 3150,
                  2800, 2900, 2985, 3050,
                  2600, 2700, 2600, 2765)   # Observaciones en orden fila por fila
)


# Calcular la media y desviación estándar para la muestra.
media_resistencia <- mean(df$resistencia)
sd_resistencia <- sd(df$resistencia)

# Calcular la media por técnica y convertir los resultados en un dataframe
medias_df <- aggregate(resistencia ~ tecnica, data = df, mean)



ticks_values <- unlist(lapply(c(-3,-2,-1,0,1,2,3), function(x) round((x * sd_resistencia)+media_resistencia,2)))
ticks_values[[1]]<-ticks_values[[1]]-10
ticks_values[[length(ticks_values)]]<-ticks_values[[length(ticks_values)]]+10



library(ggplot2)

# Crear un data frame para la función de densidad
x_vals <- seq(min(ticks_values), max(ticks_values), length.out = 100)
density_vals <- data.frame(
  x = x_vals,
  y = dnorm(x_vals, mean = media_resistencia, sd = sd_resistencia)
)

# Crear la gráfica con ggplot2
ggplot(density_vals, aes(x = x, y = y)) +
  geom_line(size = 0.5) +  # Línea de la distribución normal
  geom_point(data = medias_df, aes(x = resistencia, y = 0, color = tecnica), size = 4) +
  geom_vline(xintercept = ticks_values[[4]], colour = "black", linetype=3, size = .5) +
  scale_x_continuous(breaks = ticks_values, labels = ticks_values) +  
  scale_y_continuous(limits = c(0, max(density_vals$y))) +
  theme_minimal() +  
  theme(axis.title.y = element_blank(),   
        axis.text.y = element_blank(),     
        axis.ticks.y = element_blank(),    
        panel.grid.major.y = element_blank(),   
        panel.grid.minor.y = element_blank(),
        axis.ticks.x = element_line(size = 0.7),   
        axis.ticks.length = unit(7, "pt"), 
        axis.line.x = element_line(size = 0.5, linetype=1),
        axis.text.x = element_text(size = 10, angle = 0, hjust = 0.5, vjust = 0.5)) +  # Rotar etiquetas X
  labs(x = "Resistencia", y = NULL)  # Etiqueta del eje X

E este é o meu resultado:

insira a descrição da imagem aqui

Como posso adicionar os valores do media_dfdata frame ao gráfico como rótulos para os pontos? Como posso ajustar a posição dos pontos no media_dfdata frame para que a linha do eixo x os cruze?

  • 2 respostas
  • 66 Views
Martin Hope
brads3290
Asked: 2025-04-02 05:23:02 +0800 CST

Por que Activator.CreateInstance aceita um argumento CultureInfo?

  • 8

Activator.CreateInstance recebe um CultureInfoargumento. Os documentos dão a seguinte descrição para esse argumento:

Informações específicas de cultura que governam a coerção de argspara os tipos formais declarados para o typeconstrutor. Se culturefor null, o CultureInfo para o thread atual é usado.

O que isso significa? Quais são alguns exemplos de quando alguém culturedaria um resultado diferente de um diferente culture?

c#
  • 1 respostas
  • 70 Views
Martin Hope
Michi
Asked: 2025-03-31 21:59:03 +0800 CST

Inserir data calculada - como uma nova linha - abaixo de outra data e não em uma coluna separada

  • 8

Fiddle de DB

CREATE TABLE vouchers (
    id SERIAL PRIMARY KEY,
    collected_date DATE,
    collected_volume INT
);

INSERT INTO vouchers
(collected_date, collected_volume
)
VALUES 
('2024-03-09', '900'),
('2024-04-20', '300'),
('2024-04-20', '800'),
('2024-05-24', '400'),
('2025-01-17', '200'),
('2025-02-15', '800'),
('2025-02-15', '150');

Resultado Esperado

data_coletada volume_coletado
2025-03-09 900
2024-03-09 -900
2025-04-20 1100
2024-04-20 -1100
2025-05-24 400
2025-05-24 -400
2026-01-17 200
2025-01-17 -200
2026-02-15 950
2026-02-15 -950

Para ir dos dados brutos aos resultados esperados, são necessárias estas etapas:

Etapa 1: Calcule um expire_dateque é sempre 12 meses após a collected_date
Etapa 2: Coloque o expire_datena linha abaixo do collected_date. Não em uma coluna separada!
Etapa 3: Coloque o total collected_volumepor collected_datecomo um número negativo na linha com o expire_date.


Até agora consegui desenvolver esta consulta:

select
collected_date as collected_date,
(collected_date + interval '12 months')::date as expire_date,
sum(collected_volume) as collected_volume
from vouchers
group by 1,2
order by 1,2;

No entanto, não tenho ideia do que preciso mudar para exibir expire_datecada um abaixo collected_datee não em uma coluna separada.

Você tem alguma ideia de como resolver isso?

sql
  • 2 respostas
  • 30 Views
Martin Hope
Peter
Asked: 2025-03-31 01:21:10 +0800 CST

Como restringir métodos de modelo para corresponder aos parâmetros de modelo de classe?

  • 8

Tenho a seguinte turma:

template<typename Population, typename... Operators> class GA
{
public:
    template<typename Evaluator,
             typename std::enable_if_t<
             std::is_same_v<Evaluator, Evaluator<Operators...>>>>
  void EvaluatePopulation(Evaluator& evaluator)
  {
    evaluator.Evaluate();
  }
};

Isso não compila devido a EvaluatePopulationuma declaração incorreta.

Como posso especificar que o EvaluatePopulationmétodo pode ser chamado somente com Evaluatoruma classe que foi inicializada com o mesmo Operators...nome da GAclasse?

c++
  • 1 respostas
  • 68 Views
Martin Hope
npt
Asked: 2025-03-30 07:39:09 +0800 CST

pergunta sobre namespace anônimo e ligação externa "C"

  • 8

Meu caso de uso é o seguinte para um projeto:

  • Arquivo de cabeçalho AC com algumas funções externas declaradas
  • Um arquivo de origem C++ com essas funções definidas
  • Compilar o código fonte C++ em uma biblioteca compartilhada
  • Em um arquivo de origem C, use as funções declaradas no cabeçalho C vinculando-as ao .so

Estou observando algo estranho enquanto faço do. As coisas começam a funcionar com namepsace sem nome.

Aqui está meu arquivo de exemplo:

c_sample.h:

#include "stddef.h"

extern void hello(void);
extern void bye(void);

cpp_sample.cc:

#include <iostream>
#include "c_sample.h"

extern "C" {
    void hello(void) { std::cout << "HI" << std::endl; }
    void bye(void) { std::cout << "BYE" << std::endl; }
}

Ao tentar construir uma biblioteca de compartilhamento, vejo o erro que é esperado, pois c_sample.h está incluído fora do extern "C"bloco.

g++ cpp_sample.cc -shared -o libcppsample.so     
cpp_sample.cc:5:7: error: declaration of 'hello' has a different language linkage
    5 |         void hello() { std::cout << "HI" << std::endl;}
      |              ^
./c_sample.h:3:13: note: previous declaration is here
    3 | extern void hello();
      |             ^
cpp_sample.cc:6:7: error: declaration of 'bye' has a different language linkage
    6 |         void bye() { std::cout << "BYE" << std::endl;}
      |              ^
./c_sample.h:4:13: note: previous declaration is here
    4 | extern void bye();
      |             ^
2 errors generated.

No entanto, a mágica acontece no momento em que envolvo isso em um namespace sem nome

cpp_sample.cc:

#include <iostream>
#include "c_sample.h"

extern "C" {
namespace {
    void hello(void) { std::cout << "HI" << std::endl; }
    void bye(void) { std::cout << "BYE" << std::endl; }
}
}

Isso foi compilado. E quando tentei usá-lo de outro arquivo de origem C, ele até funcionou

#include "stdio.h"
#include "c_sample.h"

int main() {
    hello();
}
$ gcc another.c -L/tmp -lcppsample -o another
$ ./another
HI

Como isso funciona apenas envolvendo-o dentro de um namespace? Como ele é capaz de vincular as funções declaradas com suas definições?

c++
  • 2 respostas
  • 103 Views
Martin Hope
user80346
Asked: 2025-03-30 01:16:53 +0800 CST

Definição de loop para cada VBA do Excel

  • 8

Estou olhando esta documentação , entendo o For Loops, entendo Counters, Steps, etc. Mas quando chego à seção VBA For Each Loop da página, não entendo muito bem.

O loop VBA For Each é um escopo que define uma lista de instruções que devem ser repetidas para todos os itens especificados dentro de uma certa coleção/matriz de itens. O loop For Each, em comparação com o loop For, não pode ser usado para iterar de um intervalo de valores especificados com um valor inicial e final.

Parecia que as palavras estavam pulando ao mesmo tempo. Eles me deram um exemplo que era um pouco mais complicado:

Dim x(3) as Long, xIterator as Variant
x(0) = 1: x(1) = 2: x(2) = 3
 
For Each xIterator in x
   Debug.Print x
Next xIterator
'Result: 1,2,3

Quero uma definição que seja fácil de entender com um exemplo. Por favor, saiba que sou novo em Excel/VBA

excel
  • 2 respostas
  • 94 Views
Martin Hope
mskim
Asked: 2025-03-29 20:56:22 +0800 CST

Por que o método contains(_:) do Array causa um erro ao comparar um valor opcional com um valor não opcional no Swift?

  • 8

Estou trabalhando com Swift e encontrei um problema ao usar o método contains em um array. O código a seguir funciona bem:

let result = ["hello", "world"].contains(Optional("hello")) // ✅ Works fine

Entretanto, quando tento usar o mesmo método contains com o array declarado em uma constante (ou variável) separada, recebo um erro de compilação:

let stringArray = ["hello", "world"]
let result = stringArray.contains(Optional("hello")) // ❌ Compile-time error

O compilador produz a seguinte mensagem de erro:

Cannot convert value of type 'Optional<String>' to expected argument type 'String'

Ambos os exemplos parecem conceitualmente semelhantes, mas o segundo causa um erro de compilação, enquanto o primeiro funciona bem.

Isso me confunde porque eu sei que o Swift promove automaticamente um valor não opcional para um opcional ao compará-lo com um valor opcional. Isso significa que "hello" deve ser convertido implicitamente para Optional("hello") para a comparação. ( 🔗 Referência )


O que entendi até agora:

  • O método contains(_:) é definido como:

    func contains(_ element: Self.Element) -> Bool
    

    Internamente, ele chama contains(where:), como visto no código-fonte do Swift:

    🔗 Referência

  • contains(where:)recebe um fechamento que aplica o ==operador para comparação.

  • Como o Swift permite comparar Stringe String?diretamente ( Stringé implicitamente promovido para String?quando comparado com um opcional), eu esperava contains(where:)que funcionasse da mesma maneira.


Minhas perguntas:

  1. Por que o primeiro exemplo funciona, mas o segundo falha com um erro de tempo de compilação?
  2. O que exatamente causa esse erro no segundo caso, mesmo que ambos os casos envolvam a comparação de um valor opcional com um valor não opcional?
  3. Comporta contains(_:)-se de forma diferente quando usado com uma variável de array explícita em vez de um literal de array direto? Se sim, por quê?

Sei que há diferentes maneiras de resolver isso, como usar coalescência nula ou vinculação opcional, mas o que realmente estou procurando é uma explicação detalhada do porquê esse problema ocorre no nível de tempo de compilação.

Alguém pode explicar a razão subjacente para esse comportamento?

arrays
  • 1 respostas
  • 52 Views
Martin Hope
GuidoG
Asked: 2025-03-29 18:56:12 +0800 CST

Como fazer hash de uma string Delphi usando SHA256 para corresponder a um hash de C#?

  • 8

Em C#, temos esta função:

public string GetStringSha256Hash(string text, Encoding coding)
{
    string result = "";
    if (text != null)
    {
        using (SHA256 sHA256Managed = SHA256.Create())
        {
            byte[] bytes = coding.GetBytes(text);
            byte[] array = sHA256Managed.ComputeHash(bytes);
            result = BitConverter.ToString(array).Replace("-", string.Empty);
        }
    }
     return result;
}

Estou tentando fazer o mesmo no Delphi, mas continuo obtendo resultados diferentes.

Algo tão simples como isto:

Result := THashSHA2.GetHashString(Text);

retorna um resultado diferente.

Suspeito que seja porque em C# sempre usamos UTF-8, mas não consigo descobrir como usar codificação em Delphi.

Eu tentei isso:

var
  Hash: TIdHashSHA256;
begin
  Hash := TIdHashSHA256.Create;

  try
    SHA256Hash := Hash.HashString(Text, TEncoding.UTF8);

mas dá erro de compilação

[Erro dcc32] Unit1.pas(216): E2010 Tipos incompatíveis: 'IIdTextEncoding' e 'TEncoding'

Qual é a maneira correta de fazer isso no Delphi?

O valor 12345retorna 1445217533E7D4D0CFFD9109C4EDB60D62A02C0F0DE9537BE44F5E00D348EB4Fem C#, mas 5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5em Delphi.

Quero que a versão Delphi retorne o mesmo valor que a versão C#.

delphi
  • 1 respostas
  • 145 Views
Martin Hope
NetRanger
Asked: 2025-03-29 00:40:20 +0800 CST

Adicionar um texto após uma vírgula em um arquivo csv usando o Linux bash em um loop

  • 8

Preciso modificar um arquivo csv usando o bash.

Entrada (um arquivo csv):

firstletter="s"
surname="houston"
emaildomain"@zzz.com"
input=$(cat 1.csv)

1.csv:

1,1,Susan houston,Director of Services,,
2,1,Christina Gonzalez,Director,,
3,2,Brenda brown,"Director, Second Career Services",,

Como posso adicionar um texto entre as últimas 2 vírgulas usando o Linux bash? Eu tentei algo como:

for i in $(cat $input);do
        sed -i "s/,$/${firstletter}${surname}${emaildomain},/g" $i;
done

No entanto, isso resulta em um erro: sed: -e expression #1, char 5: unterminated `s' command

Saída esperada:

1,1,Susan houston,Director of Services,[email protected],
2,1,Christina Gonzalez,Director,[email protected],
3,2,Brenda brown,"Director, Second Career Services",[email protected],
bash
  • 3 respostas
  • 79 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