-
Posts
217 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Kamuri
-
-
@Swalls consegue enviar esses códigos funcionando? Vai ficar mais fácil pra testar sem eu alterar algo que deveria fazer parte deles.
Testei o copyfile do shutil:
Um arquivo .zip de 114GiB demorou 22 minutos para ser copiado de um HDD para outro
-
Interessante, vou fazer uns testes quando tiver tempo, é um comportamento bem estranho.
- 1
-
A primeira vai depender do algoritmo implementado por cada sistema, já que você está chamando comandos do sistema. Na minha opinião ela deve ser a mais rápida, já que a segunda é implementada apenas em Python e a linguagem é conhecida por ser lenta.
Se você quiser, pode usar também a função copy da lib shutil. Ou olhar a implementação: https://github.com/python/cpython/blob/main/Lib/shutil.py#L230
- 1
-
2 horas atrás, Arthur Guillermo disse:
assim não teria que ficar executando toda vez o client
Nesse caso, só separando seu código em vários pedaços independentes. Isso que você quer é chamado de "hot reload" ou "hot replacement".
Você pode tentar algumas coisas:
Separar seu projeto em varios pedaços, ou seja, um servidor rodando seu Client expondo a API para ser acesso por outros.
Ou tentar integrar o node-hot-loader no seu projeto.
- 1
- 1
-
Tem uma ferramenta muito boa chamada Nodemon, também feita em NodeJS.
npm install --save-dev nodemon
Exemplo:
nodemon ./server.js localhost 8080
Então toda vez que algum arquivo .js fosse modificado, o nodemon iria parar e rodar o codigo novamente.
- 1
- 1
-
Em 22/02/2024 às 13:54, thiago.jj disse:
para usar o letz é tudo via comando linux?
Na maioria das vezes sim, a não ser que sua hospedagem tenha alguma opção na interface.
- 1
-
Bom dia! Aqui você pega o "value" do elemento selecionado, que retorna uma string:
Em 24/01/2024 às 11:25, Davi7 disse:let numero = (document.querySelector("#numero") as HTMLInputElement).value
Mas o constructor da sua class espera um HTMLInputElement, por isso o erro. Então ou você muda o tipo no constructor pra string, ou não pega o value do HTMLInputElement antes de passar pro constructor.
- 1
-
Bom dia! Consegue sim!
Use o certbot para adicionar seus subdominios e compartilhe o certificado entre seus servidores, ex:sudo certbot certonly --standalone -d test.com -d test.test.com -d abc.test.com --non-interactive --agree-tos --email [email protected]
Ou você pode gerar um certificado pra cada subdominio separadamente, vai do que você achar mais fácil.
- 1
-
Em 29/01/2024 às 19:38, ca_mauricio disse:
Quanto menos variáveis usar menor memória utiliza
Não é verdade! Você precisa entender antes como a linguagem e o ambiente de exeução lidam com as variáveis. Em linguagens compiladas, o compilador geralmente é esperto o suficiente para retirar as variáveis inúteis, por ex.
Em Python, as vezes as variáveis compartilham o mesmo endereço em memória pra um valor, por ex, todos os números de -5 a 256 já estão em memória. Quando você usa algum número nesse intervalo o interpretador do CPython já pega um valor alocado. Todavia, para números maiores, ele cria um novo objeto.
O mesmo com strings, tipo, se você definir duas variáveis com strings iguais o endereço de memória delas vão ser o mesmo! Então independente de quantas variáveis você criar, o uso de memória permanece o mesmo.Fora que é boa prática evitar "valores mágicos", isso atrapalha o desenvolvimento, principalmente se mais de uma pessoa estiver trabalhando no projeto. Você sempre pode adicionar comentário, mas na minha opinião é melhor ter um código claro e limpo do que um código cheio de comentários para explicar coisas simples.
- 1
- 1
-
É complicado, se tiver obfuscada já não seria uma boa ideia instalar, já que a pessoa quer esconder algo. Sobre verificar libs muito grandes, você poderia criar um script pra identificar potenciais riscos, como URLs, one-liners, etc e, caso desconfie de algo, rode dentro de um sandbox como uma VM.
-
@SwallsRealmente, o PyPDF2 é melhor pra editar PDF, pra criar você precisa de conhecimento prévio de como PDFs funcionam. Você pode tentar usar o reportlab, outro modulo pra criação de PDF, tipo:
import os from reportlab.lib.pagesizes import A2 from reportlab.pdfgen import canvas def convert_to_pdf(folder_path): arquivos = [os.path.join(folder_path, nome) for nome in os.listdir(folder_path)] arquivos = sorted([x for x in arquivos if "para_pdf" in x]) for arquivo in arquivos: output_name = arquivo[:-4] + ".pdf" pdf_path = os.path.join(folder_path, output_name) c = canvas.Canvas(pdf_path, pagesize=A2) with open(os.path.join(folder_path, arquivo), 'r', encoding='utf-8') as file: content = file.read() c.setFont("Helvetica", 12) lines = content.splitlines() y = 750 for line in lines: c.drawString(30, y, line) y -= 20 c.showPage() c.save() print(f"PDF file saved at {pdf_path}") convert_to_pdf(".")
- 1
-
Deixa eu ver se entendi:
Você quer um script que receba um caminho como argumento e apague o arquivo?
Se for, é fácil:
(_os := __import__("os")) and (_sys := __import__('sys')) and (filename := _sys.argv.pop(-1)) and (exit(1) if filename == _os.path.basename(__file__) else "") or (_os.remove(filename) if _os.path.isfile(filename) else print("Arquivo não existe"))
Resultado:
❯ echo "test" > /tmp/test ❯ cat /tmp/test test ❯ python test.py /tmp/test ❯ cat /tmp/test cat: /tmp/test: Arquivo ou diretório inexistente
Codigo legivel:
import os import sys filename = sys.argv.pop(-1) if filename == os.path.basename(__file__): exit(1) if os.path.isfile(filename): os.remove(filename) else: print("Arquivo não existe")
voce consegue expandir isso pra qualquer pasta ou arquivo.
- 1
-
Não consegui identificar o erro, sem uma amostra dos arquivos fica difícil simular o erro. Todavia, você pode testar o seguinte:
- Use o PyPDF2 ao invés do FPDF. Tem 6 anos desde a ultima commit no FPDF, enquanto a ultima commit no PyPDF2 foi semana passada, o que mostra que o projeto está ativo e sendo constantemente melhorado.
Se não conseguir, tenta criar alguns arquivos de teste pra facilitar.
Ps: texto = "".join(f.readlines()) pode ser substituido por f.read()
Edit:Usando uns arquivos aqui, o que consegui foi uma linha por página. O problema está na linha 14 (pdf.multi_cell(10,10,texto,border=True)). A distancia de linha para linha é muito grande. Se o arquivo tiver varias linhas em branco você vai ter muitas paginas em branco.
Tenta:pdf.multi_cell(15, 0.2, texto, border=True)
- 1
-
Você precisa dar permissão ao seu host no banco de dados criando um usuário global ou especificando o host. Ex:
-- Mysql >= 8 CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALTER ROUTINE, ALTER, SHOW VIEW, SHOW DATABASES, SELECT, PROCESS, EXECUTE ON . TO 'root'@'%'; -- Mysql < 8 ou MariaDB 10.X GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Isso vai criar um usuario global com permissão de acesso de qualquer host.
- 1
-
print(m['entry'][0]['changes'][0]['value']['messages'][0]['text']['body'])
- 1
-
Seu arquivo se chama whois.py. Em python cada arquivo é um módulo. Renomeie seu arquivo para algo diferente de whois e tente novamente.
- 1
-
print(" Você digitou {0}, seu sucessor é {1} e o antecessor é {2} ".format(numero := int( input( "Digite um número: ")), numero + 1, numero - 1))
(Python 3.8+)
- 1
- 1
-
São várias perguntas em uma. Vamos com calma.
Em Python, listas são definidas como:
typedef struct { PyObject_HEAD Py_ssize_t ob_size; /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ PyObject **ob_item; /* ob_item contains space for 'allocated' elements. The number * currently in use is ob_size. * Invariants: * 0 <= ob_size <= allocated * len(list) == ob_size * ob_item == NULL implies ob_size == allocated == 0 */ Py_ssize_t allocated; } PyListObject;
No caso, listas em python são arrays com tamanho dinâmico, quando um objeto é adicionado na lista, internamente um pointer (referencia para objeto) é criado nessa lista apontando para o objeto.
Quando você aplica o método str(), você está chamando a função __str__ da classe, caso ela não tenha, ele tenta usar o __repr__. Ou seja, a classe não está sendo convertida para string, ela está enviando para o método o modo como ela é representada (isso cabe ao programador decidir). Dá print em [3].__str__() e você vai ter como resultado '[3]'.
Sobre referenciar objetos com outras variaveis, Python já faz isso naturalmente.
Ex:
>>> x = 3 >>> y = 3 >>> id(x) 140389809553712 >>> id(y) 140389809553712
O endereço dos dois objetos são o mesmo, ambos são os mesmos objetos, isso é parte da definição do Python. E se você incluir qualquer um dos dois objetos acima, eles continuarão tendo o mesmo endereço, pois a lista vai apenas apontar para eles.
Já tipos imutáveis, como tuplas e strings, ocorre algo diferente. O endereço deles sempre vai mudar para evitar que o valor seja alterado. Ex:>>> id("ax") 140389808254128 >>> id("ax") 140389808254256
E como são objetos imutáveis, não há como pegar o endereço deles e usar em outra parte. Deve ate ter algum método obscuro, mas no mínimo você vai acabar tendo um undefined beheavior.
Ps: Para fazer cópias de objetos mutáveis como listas, use o copy.deepcopy.
- 1
-
Tenta chamar pelo cmd. Se for, o path fo pycharm está apresentando problemas. Se não for, o path do python está apresentando problemas.
Também roda isso e manda o resultado:
import sys print(sys.path)
-
@Swalls Ele fez um match pra valores na string. Por exemplo:
21 horas atrás, Swalls disse:&records="^2256$|^2257$|^2258$|^2259$|^2260$|^2261$|^2262$|^2263$|^2264$|^2265$|^2266$|^2267";
Verifica se a string é exatamente um numero entre 2256 e 2267.
Isso pode ate ser diminuido para algo como:
^22[5-6][0-7]$
Que faz a mesma coisa.
Regex (regular expression, expressão regular) é uma sequencia de caracteres usada pra identificar um padrão num texto. não e especifico de uma unica linguagem, pode ser usada com Python pelo modulo re, por exemplo. Ja no NodeJS, regex faz parte da definiçao da lingaugem e pode ser usado nativamente sem nenhum modulo.
Quando eu tava iniciando com regex, usei o https://regexr.com/, tem varios exemplos bons la você ainda pode testar seus regex.
- 1
-
Mostre o que você ja tentou fazer.
Ou me chama no email oferecendo algum valor para negociarmos /jk.- 1
-
3 horas atrás, Swalls disse:
é exatamente isso, se é possível um "match" reconhecer vários valores em uma única váriavel e se existir entre esses valores alguma correspondência retornar True se existir.
Agora entendi.
Você pode usar isso:
/(pessoa|person|人間|ningen|human)/gi
É um set que vai capturar grupos de caracteres com e no final as flags g (global) para pesquisar no texto inteiro e i para tornar a pesquisa case insensitive (tanto faz maiusculas e minusculas)
> x = /(pessoa|person|人間|ningen|human)/gi /(pessoa|person|人間|ningen|human)/gi > x.test("pessoa") true > x.test("aogioanpessoa") true
Teste feito com nodejs
-
11 horas atrás, Swalls disse:
uma variável possuir vários valores em um usando regex
Isso ficou bem difícil de entender. Poderia esclarescer melhor? Qual exatamente o resultado que você espera?
- 1
-
Você pode usar as variáveis dentro da string:
cd .. read -p 'Prefix: ' prefix read -p 'Token: ' token echo -e "{ \"prefix\": \"$prefix\", \"token\": \"$token\" }" > ./config.json
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Método de cópia mais rápido para ambos os S.O?
em Programação - outros
Postado
@Swalls Rodando aqui levou cerca de 28 minutos, o que não é muito diferente do copyfile da shutil. Não notei nenhum dos problemas que você mencionou .
Mesmo arquivo, de um HDD para outro.