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
Bear Bile Farming is Torture
Asked: 2025-04-02 18:00:52 +0800 CST

Como os aplicativos Android ou iOS conseguem ser lançados apenas em cidades específicas?

  • 4

Tanto o Android quanto o iOS permitem que os desenvolvedores publiquem seus aplicativos em países selecionados, se não globalmente.

Até onde eu sei, nem o Android nem o iOS permitem que aplicativos sejam publicados apenas para estados ou cidades específicos.

Por exemplo, muitos aplicativos de namoro, quando são lançados, o fazem apenas em cidades específicas, como Nova York.

Como eles conseguem configurar isso?

  • 1 respostas
  • 50 Views
Martin Hope
RoXTar
Asked: 2025-04-02 17:51:24 +0800 CST

Possível vazamento de memória no meu Blob Service / Blazor Server .NET

  • 6

Adicionei um novo recurso a um dos meus aplicativos Blazor. Isso permite o upload de arquivos para o armazenamento de blobs em blocos. Isso funciona muito bem. Dei uma olhada para processar memória no Visual Studio. Onde meu aplicativo tinha o tempo todo 80 MB, com todas as suas coisas. Mas quando inicio um upload, vejo que o consumo de memória aumenta em 10-20 MB e não volta. Também aumenta a cada upload de um arquivo. Observe que eu carrego arquivos em blocos de 10 MB, antes eu tinha 100 MB e aumentou 100-200 MB. Então agora não tenho certeza se é vazamento de memória (acho que é) ou se o gc demora muito.

aqui minha função de dentro do serviço para referência

public async Task UploadFileToBlobStorage(Stream stream, string fileName, string containerName,string contentType,IProgress<long> progress,CancellationToken cancellationToken)
{
    _logger.LogInformation($"Uploading file {fileName} to container {containerName}");
    var blobServiceClient = new BlobServiceClient(new Uri($"https://{accountName}.blob.core.windows.net"), new DefaultAzureCredential());
    var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
    await containerClient.CreateIfNotExistsAsync(cancellationToken:cancellationToken);
    var blockblobClient = containerClient.GetBlockBlobClient(fileName);

    var blockIds = new List<string>();
    var buffer = new byte[10 * 1024 * 1024]; // 10 MB
    int bytesRead;
    int blockNumber = 0;
    long totalBytesRead = 0;
               

    var blobHttpHeader = new BlobHttpHeaders
    {
        ContentType = contentType,
        ContentDisposition = $"attachment; filename={fileName}",              

    };

    while ((bytesRead = await stream.ReadAsync(buffer.AsMemory( 0, buffer.Length), cancellationToken)) > 0)            
    {
        var blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(blockNumber.ToString("d6")));
        blockIds.Add(blockId);

        using (var blockStream = new MemoryStream(buffer, 0, bytesRead))
        {
            await blockblobClient.StageBlockAsync(blockId, blockStream,cancellationToken: cancellationToken);
        }
        totalBytesRead += bytesRead;
        progress?.Report(totalBytesRead);
        blockNumber++;
    }

    await blockblobClient.CommitBlockListAsync(blockIds,httpHeaders:blobHttpHeader,cancellationToken:cancellationToken);            
    _logger.LogInformation($"File {fileName} uploaded to container {containerName} successfull");
}

O fluxo variável que é passado para a função é um ibrowserfile que foi criado usando

using var stream = _selectedFile.OpenReadStream(maxAllowedSize: long.MaxValue);

Ficarei feliz em receber dicas.

  • Alguém vê algum erro grave?
  • Talvez não haja engano e minha interpretação esteja errada?

Muito obrigado

  • 2 respostas
  • 90 Views
Martin Hope
user944513
Asked: 2025-04-02 17:49:45 +0800 CST

filtro usando o formulário de hook do React não está funcionando?

  • 5

Estou criando uma pequena lista usando React Hook Form com useFieldArray. Quero filtrar a lista quando o usuário digitar qualquer coisa no campo de pesquisa. No entanto, a filtragem não está funcionando.

Abaixo está meu código:

https://playcode.io/2322411

import React from 'react';
import { useForm, useFieldArray, Controller, useWatch } from 'react-hook-form';
import ReactDOM from 'react-dom';

let renderCount = 0;

export function App() {
  const { register, control, handleSubmit, reset, watch } = useForm({
    defaultValues: {
      test: [
        { firstName: 'Bill 1', lastName: 'Luo' },
        { firstName: 'hello2', lastName: 'Luo' },
        { firstName: 'test 3', lastName: 'Luo' },
        { firstName: 'test 4', lastName: 'Luo' },
      ],
    },
  });
  const { fields, append, prepend, remove, swap, move, insert, replace } =
    useFieldArray({
      control,
      name: 'test',
    });

  const onSubmit = data => console.log('data', data);

  const [searchQuery, setSearchQuery] = React.useState('');

  const handleSearchChange = event => {
    setSearchQuery(event.target.value);
  };

  const filteredRows = fields.filter(row =>
    row.firstName.toLowerCase().includes(searchQuery.toLowerCase())
  );

  console.log(JSON.stringify(filteredRows));
  return (
    <>
      <input onChange={handleSearchChange} value={searchQuery} />

      <form onSubmit={handleSubmit(onSubmit)}>
        <ul>
          {filteredRows.map((item, index) => {
            return (
              <li key={item.id}>
                <input
                  {...register(`test.${index}.firstName`, { required: true })}
                />

                <Controller
                  render={({ field }) => <input {...field} />}
                  name={`test.${index}.lastName`}
                  control={control}
                />
              </li>
            );
          })}
        </ul>
      </form>
    </>
  );
}

// Log to console
console.log('Hello console');

quando procuro "teste" ele mostra as duas primeiras linhas em vez das duas últimas. Por quê?

javascript
  • 1 respostas
  • 65 Views
Martin Hope
RfDzDeveloper
Asked: 2025-04-02 17:46:44 +0800 CST

Fyne, como esticar abas com tabela para preencher a tela inteira do aplicativo?

  • 7

Tentei muitas maneiras diferentes de estender minha mesa para o restante do espaço livre do aplicativo.

A maneira mais simples de reproduzir meu problema é:

package main

import (
    "fmt"
    "strconv"
    "time"

    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/container"
    "fyne.io/fyne/v2/dialog"
    "fyne.io/fyne/v2/theme"
    "fyne.io/fyne/v2/widget"
)

type Reminders struct {
    ID        int64
    EventName string
    EventDay  time.Time
}

func getReminderSlice() [][]any {
    var slice [][]any

    reminders := []Reminders{{ID: 0, EventName: "First Event Name", EventDay: time.Now()},
        {ID: 1, EventName: "Second Name", EventDay: time.Now()}}

    slice = append(slice, []any{
        "ID",
        "Event Name",
        "Event Day",
        // "Start At",
        // "End At",
        // "Event Duration",
        // "Event Place",
        // "Priority",
        // "Description",
        "Delete?",
    })

    for _, r := range reminders {
        var currentRow []any

        currentRow = append(currentRow, strconv.FormatInt(r.ID, 10))
        currentRow = append(currentRow, r.EventName)
        currentRow = append(currentRow, r.EventDay.Format("2006-01-02"))
        // currentRow = append(currentRow, r.EventStartHour.Format("15:04"))
        // currentRow = append(currentRow, r.EventEndHour.Format("15:04"))
        // currentRow = append(currentRow, strconv.FormatFloat(r.EventDuration, 'f', -1, 64))
        // currentRow = append(currentRow, r.EventPlace)
        // currentRow = append(currentRow, strconv.Itoa(int(r.Priority)))
        // currentRow = append(currentRow, r.Description)
        // currentRow = append(currentRow, widget.NewButton("Delete", func() {}))

        slice = append(slice, currentRow)
    }
    return slice
}

func main() {
    data := getReminderSlice()

    myApp := app.New()
    myWindow := myApp.NewWindow("Table Widget")
    myWindow.Resize(fyne.NewSize(850, 530))

    // Create a table
    list := widget.NewTable(
        func() (int, int) {
            return len(data), len(data[0])
        },
        func() fyne.CanvasObject {
            container := container.NewVBox(widget.NewLabel(""))
            return container
        },
        func(i widget.TableCellID, o fyne.CanvasObject) {
            if i.Col == (len(data[0])-1) && i.Row != 0 {
                // last cell, put in a button
                w := widget.NewButtonWithIcon("Delete", theme.DeleteIcon(),
                    func() {
                        dialog.ShowConfirm("Delete?", "This will delete Event",
                            func(delete bool) {
                                if delete {
                                    fmt.Println("Deleted")

                                }
                                // refresh the reminders table
                                // refreshRemindersTable(db, uimanager)
                            }, myWindow)
                    })
                w.Importance = widget.HighImportance
                o.(*fyne.Container).Objects = []fyne.CanvasObject{
                    w,
                }
            } else {
                o.(*fyne.Container).Objects = []fyne.CanvasObject{
                    widget.NewLabel(data[i.Row][i.Col].(string)),
                }
            }
        })

    // trying to streach up table
    remindersContainer := container.NewBorder(
        nil,
        nil,
        nil,
        nil,
        container.NewAdaptiveGrid(1, list))
    colWidths := []float32{50, 150, 150, 150, 150, 150, 150, 150, 150}
    for i := range colWidths {
        list.SetColumnWidth(i, colWidths[i])
    }

    // tabs

    tabs := container.NewAppTabs(
        container.NewTabItemWithIcon("Reminders", theme.HomeIcon(), remindersContainer),
        // here will be the second tab
        // container.NewTabItemWithIcon("ToDo!", theme.ListIcon(), remindersContainer),
    )

    tabs.SetTabLocation(container.TabLocationLeading)

    // create toolbar

    toolbar := widget.NewToolbar(
        widget.NewToolbarSpacer(),
        widget.NewToolbarAction(theme.DocumentCreateIcon(), func() {
        }),
        widget.NewToolbarAction(theme.ViewRefreshIcon(), func() {}),
        widget.NewToolbarAction(theme.SettingsIcon(), func() {}),
    )

    // Creating finaly looking container
    finalContent := container.NewVBox(toolbar, tabs)
    myWindow.SetContent(finalContent)
    myWindow.ShowAndRun()
}


Depois de montar as partes do contêiner final para NewVBox(toolbar, tabs, table of a content) a tabela ficará pequena. Na posição horizontal não pode esticar bem. No caso de usar apenas tabs com tabela, tudo parece bom.

Eu tentei várias maneiras diferentes de consertar isso, mas não consigo descobrir o que está errado. Quero que o finalContent ocupe todo o espaço livre abaixo.

Espero ter expressado meus pensamentos de forma clara.

go
  • 1 respostas
  • 37 Views
Martin Hope
Yehui He
Asked: 2025-04-02 17:44:51 +0800 CST

Descritores Python em atributos somente leitura

  • 6

Quero refatorar uma grande parte do meu código em um descritor genérico para acesso de atributo somente leitura. O seguinte é um exemplo de implementação baseada em propriedade

class A:
    def __init__(self, n):
        self._n = n
        self._top = -1

    @property
    def n(self):
        return self._n

    @property
    def top(self):
        return self._top

    def increase(self):
        self._top += 1

você vê que eu posso inicializar minha classe A e aumentar, self._topmas não deixar o usuário definir a.topomitindo o método definidor de propriedade

a = A(7)
a.top
Out[25]: -1
a.increase()
a.top
Out[27]: 0

se eu fizer isso a.top = 4, vai me dar um erro

AttributeError: property 'top' of 'A' object has no setter

o que é esperado. Agora, quero refatorar essa lógica em um descritor

class ReadOnly:

    def __init__(self):
        self._name = None

    def __set_name__(self, owner, name):
        self._name = name

    def __get__(self, instance, owner):
        if instance is None:
            return self
        return instance.__dict__[self._name]

    def __set__(self, instance, value):
        raise AttributeError("Can't set attribute")

    def __delete__(self, instance):
        raise AttributeError("Can't delete attribute")

class A:
    n = ReadOnly()
    top = ReadOnly()

    def __init__(self, n):
        self.n = n
        self.top = -1

    def increase(self):
        self.top += 1

Bem, isso não funciona. Não consigo nem inicializar Amais a classe, porque __init__ela define n e top imediatamente e impede minha inicialização.

Como escrever essa lógica da propriedade no descritor?

PS

Obrigado @chepner por esta solução. É isso que estou procurando. Eu fiz funcionar. Uma última coisa, se eu tiver um atributo é uma lista, digamos

class Stack:
    S = ReadOnly()
    n = ReadOnly()
    top = ReadOnly()

    def __init__(self, n):
        self._S = [None] * n
        self._n = n
        self._top = -1  # python offset 1

Agora não posso mais alterar self.top

>>> s = Stack(4)
>>> s.S
[None, None, None, None]

Nem eu posso mudar isso

>>> s.S = [1, 3]  # not allowed anymore. Great!
But I can still change an element in the list
>>> s.S[3] = 3
[None, None, None, 3]

Como posso evitar alterações nos elementos da lista?

python
  • 1 respostas
  • 53 Views
Martin Hope
Patterson
Asked: 2025-04-02 17:43:41 +0800 CST

Não é possível conectar ao banco de dados mestre após criar um banco de dados SQL no Azure Fabric

  • 5

Criei um banco de dados chamado 'fbr_configDB' no Azure Fabric, que inclui o banco de dados padrão do sistema 'Master'. Embora eu consiga conectar com sucesso ao 'fbr_configDB' usando SSMS, não consigo conectar ao 'Master'. Alguém pode explicar por que isso está acontecendo?

  • 1 respostas
  • 47 Views
Martin Hope
lonewsk
Asked: 2025-04-02 17:40:46 +0800 CST

Como carregar um PDF de bytes em vez de um arquivo no Pyside6?

  • 6

Estou tentando exibir um PDF que criei (usando fpdf2) em um aplicativo Pyside6.

Parece haver dois caminhos lá:

  1. Posso usar o QWebEngineView com plugins habilitados, nos quais posso injetar os bytes brutos do PDF, o que funciona. Não é o ideal para mim, pois há muita UI envolvida; gostaria de algo mais limpo.

  2. Ou posso usar QPdfView. Esse widget pega um objeto QPdfDocument do qual ele lê. Infelizmente, QPdfDocument só tem uma função .load() que pega um nome de arquivo. Como estou procurando evitar gravações de disco lá, não estou interessado em salvar temporariamente o arquivo no disco para mostrá-lo na GUI.

Há duas assinaturas na função .load():

Supported signatures:
PySide6.QtPdf.QPdfDocument.load(PySide6.QtCore.QIODevice, /)
PySide6.QtPdf.QPdfDocument.load(str, /)

O problema é o seguinte: não consigo instanciar um QIODevice do Python, então não consigo alimentá-lo com bytes de PDF como um buffer (há uma função .write() que parece interessante). Tentei usar BytesIO (do pacote io), mas não tive sorte.

Existe uma maneira de criar um objeto QPdfDocument a partir de bytes de um arquivo PDF?

Obrigado pela ajuda!

python
  • 1 respostas
  • 29 Views
Martin Hope
Pawel Pabian bbkr
Asked: 2025-04-02 17:32:41 +0800 CST

Use gather/take com raça

  • 8

Posso paralelizar a execução usando o Hyper e funciona:

$ raku -e 'race for (^8).race(batch => 1, degree => 4) {sleep rand; .say}'
0
3
5
2
1
7
4
6

Mas como posso adicionar comportamento gather/take a esse loop?

Nessa abordagem, take não detectará que está encapsulado no contexto gather:

$ raku -e '
    my @x = gather race for (^8).race(batch => 1, degree => 4) {
        sleep rand;
        take $_;
    };
    @x.say
'

Died at:
    take without gather

Nessa abordagem, o gather consumirá o HyperSeq sem realmente "hiper" sobre ele:

$ raku -e '
    my @x = race gather for (^8).race(batch => 1, degree => 4) {
        sleep rand;
        take $_;
    };
    @x.say
'

[0 1 2 3 4 5 6 7]
raku
  • 3 respostas
  • 48 Views
Martin Hope
張俊芝
Asked: 2025-04-02 17:23:10 +0800 CST

Nova linha final não contribui para a altura da caixa em <pre>

  • 7

Testei o seguinte trecho de código no Chrome e no Firefox:

<pre style="border: solid">Test me <!-- One \n: -->
</pre>

Notei que o <pre>elemento mostra apenas uma altura de linha em vez de duas (o que significa que a quebra de linha não aumenta a altura do elemento). Para obter duas linhas de altura, preciso adicionar uma quebra de linha extra:

<pre style="border: solid">Test me <!-- First \n: -->
<!-- Second \n: -->
</pre>

Em outras palavras, os navegadores sempre ignoram uma quebra de linha final - esse comportamento é consistente tanto no Chrome quanto no Firefox. Minha pergunta é: esse comportamento é especificado em algum padrão? Ou é apenas uma escolha de implementação coincidente de ambos os navegadores?

html
  • 2 respostas
  • 73 Views
Martin Hope
ericg67
Asked: 2025-04-02 17:17:08 +0800 CST

ligação wpf simples com datatemplate de acordo com o tipo de dados

  • 5

Tenho o que parece ser uma pergunta muito fácil sobre WPF para algumas pessoas. Não sou totalmente novato em WPF, mas também não sou profissional.

Tentando vincular um contentcontrol ao item selecionado de uma treeview. Pesquisei muitas postagens, e foi isso que pareceu funcionar para outras pessoas, mas não consigo fazer o datatemplate mostrar algo de acordo com o tipo de dado.

<ContentControl  Grid.Column="1" Grid.RowSpan="3" Grid.ColumnSpan="2" DataContext="{Binding SelectedItem, ElementName=DataManagerTreeView, Mode=OneWay}">
            <ContentControl.Resources>
                <DataTemplate DataType="{x:Type daq:DAQChartChannel}">
                    <StackPanel Orientation="Vertical">
                        <Label>Name</Label>
                        <Label Content="{Binding Name}"></Label>
                        <Label>AxisX</Label>
                        <Label Content="{Binding AxisX}"></Label>
                        <Label>AxisY</Label>
                        <Label Content="{Binding AxisY}"></Label>
                    </StackPanel>
                </DataTemplate>
                <DataTemplate DataType="{x:Type daq:DAQChart}">
                    <StackPanel Orientation="Vertical">
                        <Label>Name</Label>
                        <Label Content="{Binding Name}"></Label>
                    </StackPanel>
                </DataTemplate>
                <DataTemplate DataType="{x:Type daq:DAQChartsCollection}">
                    <StackPanel Orientation="Vertical">
                        <Label>Name</Label>
                        <Label Content="{Binding Name}"></Label>
                    </StackPanel>
                </DataTemplate>
            </ContentControl.Resources>
        </ContentControl>

Se colocar um único stackpanel diretamente dentro do meu ContentControl, ele mostra os dados do item selecionado atual corretamente (pelo menos o nome que é o único presente em todos os tipos de itens), então a vinculação está correta. Mas quando tento usar o ContentControl.Resources para mostrar dados de acordo com o tipo de fonte com DataTemplates, não obtenho nenhuma saída. Estou esquecendo de algo aqui?

Não há outra solução alternativa além de usar um DataTemplateSelector? Obrigado pela ajuda

wpf
  • 1 respostas
  • 26 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