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
codeaperature
Asked: 2025-04-30 01:33:49 +0800 CST

Correspondência de padrões Scala em função passada

  • 6

Como um padrão corresponde ao Sucesso ou ao Falha neste método:

trait FunctionApi:
     def computeTry(funct: Try[String] => Unit): Unit = ??? // some ops

def actUponTry(functionApi: FunctionApi): String = {

     // This below could be something other than match as 
     // long as `Success` or `Failure` is apparent)

     functionApi.computeTry(...) match
     // When Try is ... (get Try + exception or value)
     // Success(value) => // Act on Success & value
                  s"Success with $value" 
     // Failure(ex) =>    // Act on Failure & ex 
                  s"Failure with exception ${ex.getString}"

}

E se FunctionApihouver outro método chamado computeTry2is computeTry2(funct: Try[Long] => Unit): Unit, esse "teste de correspondência" pode ser mais genérico?

Não use bibliotecas externas.

Talvez Como fazer a correspondência de padrões de uma função em Scala? seja útil?

Talvez haja uma maneira de usar outra característica ou método wrapper para extrair os parâmetros de Sucesso/Falha?

EDIÇÃO ADICIONAL:

O objetivo final é atribuir uma Promessa para promulgar um Futuro. (Quero fazer essa parte sozinho.) O código de chamada poderia ser assim:

val success = Success("Some String")
val succeeding = new FunctionApi:
    def computeTry(continuation: Try[String] => Unit): Unit =
        continuation(success)
val wasSuccess = actUponTry(succeeding).computeTry()
    

EDIÇÃO #2: Consegui fazer isso funcionar. Vou fechar este problema conforme ele evoluiu.

  def actUponTry(functionApi: FunctionBasedApi): StringBasedApi = {
    class StringBasedApiX extends StringBasedApi {
      def computeTry(): String = {
        functionApi.computeTry {
          case Success(value) => s"Success with $value"
          case Failure(ex) => s"Failure with exception ${ex.getMessage}"
        }
      }
    }
    new StringBasedApiX
  }

/**
  * Dummy example of a callback-based API
  */

trait FunctionBasedApi:
  def computeTry(funct: Try[String] => String): String

  /**
   * API similar to [[CallbackBasedApi]], but based on `String` instead
   */
trait StringBasedApi:
  def computeTry(): String

com código de teste:

  test("test matching") {
    val success = Success("Some String")
    val stringBasedApi = new FunctionBasedApi:
      def computeTry(funct: Try[String] => String): String = funct(success)
    val wasSuccess = actUponTry(stringBasedApi).computeTry()
    assertEquals(wasSuccess,  s"Success with ${success.get}")
  }

Mas descobri que a maneira como eu estava tentando fazer isso com futuros funciona de forma diferente do código acima (acima... Não consegui fazer a correspondência do padrão).

scala
  • 1 respostas
  • 58 Views
Martin Hope
Jeremy Wasson
Asked: 2025-04-30 01:32:07 +0800 CST

: slice continua cortando o terceiro dígito. Por quê? Como corrijo isso?

  • 5

Estou trabalhando em uma tarefa em Python, na qual só consigo fatiar usando o :método slice (por exemplo, group= strg [:index]). Por algum motivo, o método slice se recusa a reconhecer qualquer coisa com mais de 2 dígitos quando se trata de números. Palavras funcionam bem, mas dígitos estão sendo cortados.

Aqui está meu código:

import sys 

# set up for for loop
length = len(sys.argv)

for i in range(1, length):
   strg = sys.argv[i]
   #finds name
   index = strg.find(':')
   name  = strg[:index]
   strg  = strg[index+1:]
   
   index = strg.find(',')
   total  = 0
   count  = 0
   while (index != -1):
       group = strg[:index]
       try:
           num = int(group)
       except:
           break
       else:       
           print(num)    
           total = total+num
           count = count+1
           strg = strg[index+1:]
       
   print(count)
   avg = total/count
   print(name+", average:", avg)

Entrada:Neda:90,80,70,90,50 John:80,100,30 Mary:20,100,90,80

Minha saída:

90
80
70
90
50
5
Neda, average: 76.0
80
10
2
John, average: 45.0
20
10
2
Mary, average: 15.0

Saída pretendida:

90
80
70
90
50
5
Neda, average: 76.0
80
100
30
3
John, average: 70.0
20
100
90
80
4
Mary, average: 72.5
python
  • 3 respostas
  • 88 Views
Martin Hope
Tom Hosker
Asked: 2025-04-30 01:17:44 +0800 CST

É necessário executar uma recuperação de ponto no tempo para um servidor de banco de dados original do Azure e seu complemento somente leitura?

  • 5

Dado que:

  1. Você tem uma assinatura do Azure .
  2. Dentro dessa assinatura, você tem um "servidor flexível do Banco de Dados do Azure para PostgreSQL" - chame-o de Servidor A.
  3. Dentro da mesma assinatura, você tem outro servidor de banco de dados - chamado de Servidor B - que é um complemento somente leitura do Servidor A, e cuja função diária é compartilhar parte da carga do Servidor A.
  4. Há custos financeiros substanciais para realizar uma Restauração de Ponto no Tempo para o Servidor A ou o Servidor B.

Suponha que algum tipo de catástrofe ocorresse e precisássemos realizar uma Restauração de Ponto no Tempo para os dados armazenados no sistema acima.

Seria então necessário, para manter todos os dados, restaurar ambos os servidores ou poderíamos restaurar apenas um deles?

  • 1 respostas
  • 31 Views
Martin Hope
droubi
Asked: 2025-04-30 00:36:56 +0800 CST

Programação funcional com data.table

  • 6

Quero criar uma função simples em R que funcione com data.frames/tibbles ou com data.table. Então, criei um novo método:

pesquisarComposicao <- function(BASE, ...) {
  UseMethod("pesquisarComposicao")
}

Então criei o método para data.frames, que demonstra uma função de busca bem simples. Funciona muito bem.

pesquisarComposicao.data.frame <- function(BASE, TERMO, CAMPO = DESCRICAO) {`

  BASE |>
    filter(grepl(pattern = {{TERMO}}, x = {{CAMPO}}))
}

Mas o método data.table abaixo não está funcionando (eu estava seguindo as instruções aqui ):

pesquisarComposicao.data.table <- function(BASE, TERMO,
                                           CAMPO = "DESCRICAO DA COMPOSICAO") {

  # filter_col <- NULL
  # filter_val <- NULL

  BASE[filter_col %like% filter_val,
     env = list(
       filter_col = CAMPO,
       filter_val = I(TERMO)
     ), verbose = FALSE]
}

Tentei inserir filter_col = NULLe filter_val = NULLpara evitar o seguinte erro:

Error in pesquisarComposicao.data.table(BASE = sinteticoSINAPI, TERMO = "PEITORIL") : object 'filter_col' not found

Mas então obtive outro erro:

Error in grepl(pattern, vector, ignore.case = ignore.case, fixed = fixed, : invalid 'pattern' argument

Acho estranho, porque quando eu ainda não usava métodos, mas programei uma função que deveria funcionar para data.tables e data.frames simples (verificando internamente se o objeto era de um tipo ou outro), este trecho de código acima funcionava bem (e eu não precisava do filter_col = NULLand filter_val = NULL). Por que funcionou para uma única função, mas não funcionou como um método?

  • 1 respostas
  • 82 Views
Martin Hope
Dimitrios Desyllas
Asked: 2025-04-30 00:08:50 +0800 CST

Como posso atualizar a interface do usuário em tempo real quando recebo uma solicitação no FastAPI?

  • 6

Eu tenho este script simples:

import os
import gradio as gr
from fastapi import FastAPI, Request
import uvicorn
import threading
from typing import List
from datetime import datetime

api = FastAPI()

# Shared logs

class Log():
    def __init__(self):
        self._logs: List[str] = []
        self.logstr=""
    
    def log_message(self,msg: str):
        timestamp = datetime.now().strftime("%H:%M:%S")
        self._logs.append(f"[{timestamp}] {msg}")
        self.logstr="\n".join(self._logs)


log = Log()
log_state=gr.State(log)

# === FastAPI Setup ===


@api.post("/log")
async def receive_log(request: Request):
    data = await request.body()
    msg = f"API received: {data}"
    log.log_message(msg)
    gr.update(value=log.logstr)
    return {"status": "logged", "message": msg}

def run_api():
    api_port = int(os.environ.get("API_PORT", 8000))
    uvicorn.run(api, host="0.0.0.0", port=api_port)

# === Gradio UI ===

with gr.Blocks() as ui:
    gr.Markdown("## 📝 Incoming HTTP Requests")
    log_box = gr.Textbox(label="Logs", inputs=log_state, lines=20)
    
    # Trigger the refresh when the log state is updated


def run_gradio():
    gradio_port = int(os.environ.get("GRADIO_PORT", 7860))
    ui.launch(server_port=gradio_port)

# === Start Both ===
if __name__ == "__main__":
    threading.Thread(target=run_api, daemon=True).start()
    run_gradio()


O que tento fazer é ter o FastAPI escutando uma porta e um painel que exibe em tempo real as solicitações recebidas:

POST /log -> FastAPI ->common_log -> Gradio

Mas não consigo alterar o conteúdo Textboxquando recebo solicitações de entrada no FastAPI. Como posso fazer isso?

python
  • 2 respostas
  • 42 Views
Martin Hope
nightfire36
Asked: 2025-04-30 00:02:48 +0800 CST

Existe uma maneira de contar instâncias de um número específico em várias fórmulas?

  • 7

Tenho ajudado meu departamento de contabilidade, e eles dão horas extras para quem trabalha em turnos extras. Se você trabalhar 5 ou 7 dias seguidos em um determinado turno, você ganha um número extra de horas além das horas trabalhadas. Então, você pode ganhar 5*10 mais 4 horas adicionais, totalizando 54 horas, em vez de 50.

O problema é que a planilha utilizada registra os turnos de cada mês e soma os dias. Basicamente, em julho, por exemplo, uma pessoa trabalhou 5 e 7, então a célula de julho é marcada como "=5+7". Precisamos saber tanto o número de dias no turno quanto quantas horas de bônus conceder ao longo do ano.

Sei que existe uma maneira melhor de contabilizar isso, mas estamos presos à planilha antiga porque é assim que a contabilidade exige. Existe uma maneira de contar as vezes que uma célula contém 7 ou 5 e adicionar isso a uma nova coluna?

Uma determinada linha pode ter uma aparência semelhante a esta para um funcionário:

Julho Agosto Setembro
=5+7 5 = 7+7

Então, para esse funcionário, eu gostaria de três colunas que exibissem o total de dias (31), o número de turnos de 5 dias consecutivos (2) e turnos de 7 dias consecutivos (3).

Atualmente, eles estão fazendo isso manualmente, mas é muita coisa para fazer manualmente para os mais de 100 funcionários, e erros são cometidos. Também ficou claro que eles querem fazer os cálculos dessa forma em cada célula, então não consigo contornar isso. Tentei usar a função Cell, mas não sei se funciona para várias células ao mesmo tempo. Acho que poderia fazer um countif e usar uma função cell para analisar todos os 12 meses, mas isso parece deselegante.

excel
  • 3 respostas
  • 50 Views
Martin Hope
Rohit
Asked: 2025-04-29 23:33:35 +0800 CST

Cargas unidas em várias tabelas

  • 5

Estou preso a cargas unidas em vários modelos. Tenho um projeto FastAPI e estou usando Jinja para servir algumas páginas HTML. Nessa página, preciso acessar o conteúdo unido de outras tabelas (parece que fazer o acesso no momento de não funciona no modelo Jinja? Continuo recebendo erros do Greenlet). Como certamente obterei esses dados, estou fazendo cargas unidas nas propriedades que mapeiam para os outros modelos:

statement = statement.options(
    joinedload(Item.purchases),
    joinedload(Item.purchases.receipt),
    joinedload(Item.purchases.receipt.store),
)

No entanto, recebo este erro:

    joinedload(Item.purchases.receipt),
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 474, in __getattr__
    raise AttributeError(
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Item.purchases has an attribute 'receipt'

Além disso, como estou unindo 4 tabelas, sinto que devo minimizar o número de colunas selecionadas nas junções, mas não sei como faria isso.

python
  • 1 respostas
  • 32 Views
Martin Hope
nickC
Asked: 2025-04-29 23:16:16 +0800 CST

Copiar e Colar em uma célula Comentário

  • 7

Existe uma maneira de copiar e colar em um comentário de célula? Só é possível fazer isso a partir da área de transferência, não de uma referência de célula ou intervalo. Ou existe uma maneira de usar o VBA para acessar as informações na área de transferência e depois colar?

Sub fillcomment()
    
    Sheets("Calendar").Select
    Application.Goto Reference:=Range(Range("Calendar!calendarRef").value)
    Application.CutCopyMode = False
    
    Sheets("FORMULAS").Select  'Surname
     Range("C8").Select
    Selection.Copy
    
    Sheets("Calendar").Select  'paste surname
    ActiveCell.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
      Application.CutCopyMode = False
   
  
    'select and paste comment
        Sheets("Calendar").Select
        ActiveCell.ClearComments
        ActiveCell.AddComment
        ActiveCell.Comment.Visible = False
        ActiveCell.Comment.Text Text:=Range(Range("FORMULAS!calcom").value)

End Sub

Preciso das informações da variável do intervalo chamado "calcom" ou, se for mais fácil, das células concatenadas no B6 e copiar e colar no comentário

excel
  • 1 respostas
  • 43 Views
Martin Hope
ALICEZzz
Asked: 2025-04-29 23:14:59 +0800 CST

Como funciona o escopo do bloco? Como o padrão explica isso?

  • 8

Por exemplo, temos o seguinte código:

#include <stdio.h>
int main(void)
{
    int n = 4;
    {
        n++;
    }
    printf("%d\n",n);
    return 0;
}

Como o bloco interno vê a variável n? Como o padrão da linguagem C explica isso? Há algum tempo venho procurando uma resposta para essa pergunta. Na minha opinião, a resposta é a seguinte: em C17, temos (6.8 #3):

Um bloco permite que um conjunto de declarações e instruções seja agrupado em uma unidade sintática. Os inicializadores de objetos com duração de armazenamento automática e os declaradores de array de comprimento variável de identificadores comuns com escopo de bloco são avaliados e os valores são armazenados nos objetos (incluindo o armazenamento de um valor indeterminado em objetos sem um inicializador) cada vez que a declaração é alcançada, na ordem de execução, como se fosse uma instrução, e dentro de cada declaração na ordem em que os declaradores aparecem.

Se você não considerar os inicializadores, descobrirá que um bloco é composto apenas de algumas instruções. Usamos um bloco para avaliar todos esses operadores como uma unidade sintática. Em outras palavras, se você remover os caracteres {} do bloco, esses serão os mesmos operadores e o resultado será exatamente o mesmo, mas esses operadores não serão avaliados em uma unidade sintática:

#include <stdio.h>
int main(void)
{
    int n = 4;
    
        n++; // same effect but without {}
    
    printf("%d\n",n);
    return 0;
}

Também temos (6.2.1 # 4):

Se o declarador ou especificador de tipo que declara o identificador aparecer dentro de um bloco ou dentro da lista de declarações de parâmetros em uma definição de função, o identificador terá escopo de bloco, que termina no final do bloco associado.

A partir disso entendemos que n tem um escopo de bloco.

Se combinarmos tudo isso, descobrimos que n é incrementado como se o operador de incremento nunca tivesse aparecido no bloco interno.

Esta resposta está correta? Se não, explique o porquê. E cite um parágrafo do padrão da linguagem C.

c
  • 3 respostas
  • 100 Views
Martin Hope
Nathan30
Asked: 2025-04-29 22:55:20 +0800 CST

Solicitação angular duplicada se o erro for gerado

  • 5

Tenho um comportamento estranho com minhas requisições. Se a requisição gerar um erro, uma segunda requisição será iniciada automaticamente.

insira a descrição da imagem aqui

Aqui está um exemplo da minha solicitação:

this.http.post(environment['url'] + '/ws/verifier/documents/list', {}, {headers}).pipe(
    tap((data: any) => {
        ....
    }),
    finalize(() => {
        ....
    }),
    catchError((err: any) => {
        console.debug(err);
        this.notify.handleErrors(err);
        return of(false);
    })
).subscribe();

Como posso fazer para evitar essa solicitação duplicada se um erro for gerado?

Obrigado

EDIT: Eu tenho este interceptador. Usado para atualizar o token se o erro 401 for gerado. Mas se for outro erro, a solicitação é reenviada. Existe alguma solução para evitar isso?

intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    return next.handle(request).pipe(
        catchError((err: any) => {
            if (err.status === 401) {
                return this.handle401Error(request, next);
            }
            return next.handle(request);
        })
    );
}
angular
  • 1 respostas
  • 55 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