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 / user-653457

Luke Vo's questions

Martin Hope
Luke Vo
Asked: 2025-03-22 10:44:03 +0800 CST

Índice composto na tabela Log do banco de dados: (Status, CreatedTime) ou (CreatedTime, Status)?

  • 6

Geralmente uso uma chave composta (CreatedTime, Status)para minha Logtabela, mas estou reconsiderando esse design. Como CreatedTimeé tipicamente muito única e Statustem apenas 3-5 valores possíveis, parece que isso Statuspode não adicionar muito à filtragem posterior CreatedTime.

A maioria das minhas consultas envolve recuperar logs para um intervalo de tempo específico, opcionalmente filtrando ou contando por Status. Conceitualmente, se eu estivesse trabalhando com um livro de registro físico classificado por tempo, identificar entradas com um específico Status(por exemplo, "Bem-sucedido") seria trabalhoso. Por outro lado, ter livros de registro separados para cada Status, todos classificados por tempo, poderia tornar a pesquisa mais eficiente — embora combinar e reclassificar resultados para todos Statusos valores possa complicar as coisas. O banco de dados otimiza para tais cenários?

Já perguntei a três IAs diferentes sobre isso, mas suas respostas foram vagas e contraditórias (e até mesmo a mesma IA dá respostas diferentes apenas perguntando de forma ligeiramente diferente), e não consigo encontrar muita coisa no Google e no SO. Alguém pode confirmar se minha intuição aqui está correta?

sql
  • 2 respostas
  • 53 Views
Martin Hope
Luke Vo
Asked: 2024-10-10 15:57:14 +0800 CST

Como acesso EnvironmentValues ​​(RequestReviewAction) no MAUI iOS (antigo Xamarin iOS)?

  • 4

Meu código para solicitar revisão está usando SKStoreReviewControllere está obsoleto no iOS 18.0. O novo guia me diz para usar RequestReviewAction, mas não tenho ideia de como acessá-lo, pois ele usa uma notação SwiftUI estranha que não conheço. Pedir à IA também não ajudou, embora pareça ter algo a ver com injeção.

Como posso traduzir esse código para MAUI C#?

@Environment(\.requestReview) private var requestReview
  • 1 respostas
  • 31 Views
Martin Hope
Luke Vo
Asked: 2024-08-28 04:41:58 +0800 CST

É possível encapsular (substituir) um serviço registrado pelo meu e ainda manter a instância antiga?

  • 6

Supondo que eu tenha este registro de serviço:

services.AddScoped<IFoo, Foo>();

Eu sei que você pode " Substituir o registro de serviço no contêiner DI interno do ASP.NET Core? ", mas é possível substituí-lo e ainda manter a instância anterior intacta dessa forma?

services.AddScoped<IFoo>(sp => new MyFooWrapper(/* I need the original Foo here */));

Isso seria útil caso eu estivesse realizando um teste de unidade onde eu pudesse decidir se queria substituir, por exemplo, uma chamada de API externa ou não:

public class MyFooWrapper(IFoo wrapped) : IFoo
{
    
    public void DoSomething()
    {
        if (TestingWithExternal)
        {
            wrapped.DoSomething(); // Original method that calls external HTTP API
        }
        else
        {
            FakeSomething();
        }
    }

}

Outro caso de uso é que eu quero encapsular o Blazor, IJSRuntimejá que a MS torna muito difícil mudar seus comportamentos como a implementação é, internale reimplementar tudo é muito difícil caso eles atualizem.


Graças à resposta, este é o código que pode substituir vários serviços também

// Replace with fakes
foreach (var s in services.ToList())
{
    // Other logic
    if (s.ServiceType == typeof(IOaApiService))
    {
        services.Remove(s);

        var implType = s.ImplementationType;
        ArgumentNullException.ThrowIfNull(implType);

        services.Add(new(implType, implType, s.Lifetime));
        services.Add(new(
            s.ServiceType,
            sp => new FakeOaAiService((IOaApiService)sp.GetRequiredService(implType)),
            s.Lifetime));
    }
}
c#
  • 1 respostas
  • 37 Views
Martin Hope
Luke Vo
Asked: 2024-07-24 02:32:14 +0800 CST

A ordem do índice composto do banco de dados é importante se a primeira coluna for consultada apenas com uma operação igual?

  • 4

Pergunta: supondo que eu tenha uma Orderstabela com um índice (UserId, CreatedTime), faz diferença se eu adicionar DESCse CreatedTimedesejo listar os pedidos de apenas um único usuário?

Por exemplo:

SELECT * 
FROM Orders -- Also potentially have row limit
WHERE UserId = @UserId
ORDER BY CreatedTime DESC; 

O que não entendo é que, se a resposta for sim, por que o banco de dados não pode simplesmente começar de baixo e subir, já que @UserIdjá conhece o intervalo?

Também trabalho com SQL Server e SQLite, então gostaria de saber se a resposta seria diferente para cada SGBD.

Ainda não entendi muito bem os índices do SQL Server - ascendentes ou descendentes, que diferença isso faz? e aparentemente no MongoDB isso não importa ( A ordem dos índices importa no MongoDB? ).

Voltando à consulta acima, mesmo que eu listasse todos os usuários e suas ordens correspondentes em ordem decrescente CreatedTime, por que o banco de dados não pode fazer isso:

  • Para o usuário nº 1, suas linhas vão de nº 1 a nº 10, portanto, busque as linhas de nº 1 a nº 10 na ordem inversa.
  • Para o usuário nº 2, suas linhas vão de 11 a 13, portanto, busque as linhas 11 a 13 na ordem inversa.
  • ...

Eu até perguntei à IA e ela simplesmente me disse que é mais lento buscar de baixo para cima sem maiores explicações, mesmo quando tentei pressioná-lo para obter uma.

sql-server
  • 1 respostas
  • 53 Views
Martin Hope
Luke Vo
Asked: 2024-06-25 02:39:05 +0800 CST

Posso fazer com que as setas de uma entrada de número HTML saltem de maneira diferente do atributo step?

  • 5

Eu tenho um <input type="number" step="1">elemento para escolher o tamanho da fonte. No entanto, dado o contexto de desenho em uma tela grande, alterar o número para 1 é quase imperceptível. Seria mais conveniente para os usuários se eles pudessem subir ou descer 5 ou 10 cada vez que clicassem na seta.

insira a descrição da imagem aqui

Ainda preciso manter o stepatributo em 1 porque a entrada deve permanecer válida mesmo com valores refinados. Existe uma maneira de conseguir esse comportamento, como o jumpatributo abaixo (pseudo). Também estou aberto a soluções Javascript, mas no AFAIK não existe tal evento para quando o usuário clica nas setas.

<input type="number" min="1" max="1000" step="1" jump="5" value="100" />

javascript
  • 1 respostas
  • 23 Views
Martin Hope
Luke Vo
Asked: 2023-11-14 07:52:50 +0800 CST

Quando NÃO devo chamar GC.SuppressFinalize(this) em Dispose?

  • 6

Eu tenho uma classe simples como esta que implementa IDisposablee é atingida por um CA1816: Call GC.SuppressFinalize corretamente :

public class A : IDisposable
{
    // ...
    int foo

    public A()
    {
        SomeObj.SomeEvent += DoSomething;
    }

    public void Dispose()
    {
        SomeObj.SomeEvent -= DoSomething;
    }
}

Altere A.Dispose() para chamar GC.SuppressFinalize(objeto). Isso evitará que tipos derivados que introduzem um finalizador precisem reimplementar 'IDisposable' para chamá-lo.

Agora eu li this , this e this mas ainda não entendi exatamente para que serve isso (mais explicações abaixo). Então minhas perguntas são :

  • Devo sempre adicionar algo GC.SuppressFinalize(object)ao meu Disposemétodo se não entender o que é?

  • Quando NÃO devo fazer isso e apenas suprimir o aviso?


Para adicionar mais contexto: ainda não entendo o que SuppressFinalizeestá acontecendo. Eu sei que já descartei alguns recursos Dispose(manipuladores de eventos no exemplo, ou IDisposablerecursos etc.), mas e variáveis ​​como int fooessa ainda precisam ser limpas? E quanto à parte de aviso de "Isso impedirá que tipos derivados que introduzem um finalizador precisem ser reimplementados"?

c#
  • 1 respostas
  • 68 Views
Martin Hope
Luke Vo
Asked: 2023-11-08 10:38:05 +0800 CST

TypeScript apresenta erro de compilação "O objeto é possivelmente 'indefinido'." mas apenas com variável de classe e não com variáveis ​​de escopo

  • 6

No TypeScript com stricthabilitado ( TypeScript playground ):

type Foo = { a: number; b: number; }

class Bar {

    #a?: Foo;

    bar() {
        const a = this.#a?.a;
        if (!a) {return;}

        // Error: Object is possibly 'undefined'.
        const b = this.#a.b;
    }

    bar2() {
        const obj = this.#getFoo();

        const a = obj?.a;
        if (!a) {return;}

        // No error:
        const b = obj.b;       
        console.log(b);
    }

    #getFoo() : Foo | undefined {
        return undefined;
    }

}

Por que TS entende corretamente que bar2()isso obj.bnão pode ser undefined; mas não this.#a.bem bar()? Existe um caso lógico que estou perdendo?

Em bar(), se eu atribuir, const tmp = this.#aele também será compilado com sucesso.


ATUALIZAÇÃO: aparentemente tem algo a ver com a mutabilidade de uma variável. Se eu usar , o erro também let obj = this.#getFoo()aparece .obj

typescript
  • 1 respostas
  • 32 Views
Martin Hope
Luke Vo
Asked: 2023-08-21 23:40:54 +0800 CST

Método de biblioteca C# com [Conditional("RELEASE")] ainda chamado na compilação de depuração

  • 5

Eu tenho o seguinte código em MyLib.dll:

    [Obsolete("This method is for debugging only. Remove all calls to this method once done.")]
    public void SetLaunchCount(int count)
    {
        ThrowOnReleaseBuild();
        launchEntry.Set(count);
    }

    [Conditional("RELEASE")]
    static void ThrowOnReleaseBuild()
    {
        throw new InvalidOperationException("This method must not be called outside of DEBUG build"); ;
    }

Quando testei usando um projeto (MAUI no meu caso) na mesma solução, funcionou bem. No entanto, ao empacotá-lo e carregá-lo no Nuget (por meio de nosso feed privado do Github Nuget), chamar SetLaunchCountsempre throw e o rastreamento de pilha mostra call to ThrowOnReleaseBuild.

Verifiquei duas vezes e a compilação de depuração realmente possui DEBUGsímbolo (e mais precisamente, nenhum RELEASEsímbolo):

insira a descrição da imagem aqui

Também tentei adicionar outro Debug.WriteLinemétodo para confirmar:

insira a descrição da imagem aqui

Por que não está funcionando? Verifiquei o código-fonte (descompilado), Debug.WriteLinepor exemplo, e ele está codificado exatamente como meu método:

        [Conditional("DEBUG")]
        public static void WriteLine(string? message) =>
            s_provider.WriteLine(message);

EDIT: adicionando mais algumas informações:

  • A biblioteca foi construída no perfil Release.

  • Veja esta resposta na minha pergunta anterior sobre o uso de Conditional. De alguma forma, não funciona agora.

c#
  • 1 respostas
  • 24 Views

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