Olá, pessoal. Muitas vezes, nossos programas acabam usando muita memória da máquina. Ao abrir um arquivo grande, por exemplo. O programa irá automaticamente lidar com a limpeza de memória, já que prisma possui gerenciamento automático de memória. No entanto, essa limpeza pode demorar, ou até não ser feita em algumas situações. Porém, há uma maneira…
Continue readingpmd5 – 1.2 atualização
MD5 – algoritmo criptográfico que gera uma chave 128bits, útil para guardar senhas, ou para verificar a integridade de arquivos. (para mais detalhes de uma busca pela net) Prisma já tinha uma biblioteca md5 feita em prisma puro. Como seu desempenho não era bom com arquivos grandes, acabei portando uma da linguagem C: a pmd5.,…
Continue readingmki – criando arquivos *.run
Baixar: instalador do mki / fontes Você já deve ter visto ou usado um instalador com extensão *.run em Linux. Basta executá-lo no terminal que a mágica acontece: ele é extraído e executa um instalador. O que talvez vc não saiba é que esse arquivo é um auto-extraível, um script shell com um arquivo compactado…
Continue readingpzip – biblioteca para arquivos *.zip em Prisma
ZIP é um formato de compressão de arquivos muito utilizado e uma ferramenta dessas não deve faltar em uma linguagem de programação. Pzip é uma biblioteca Prisma que cumpre tal tarefa, feita em C ela é rápida e eficiente. Com funções básicas é possível criar e manipular arquivos zip, inclusive descompactá-los. Baixar pzip – (linux…
Continue readingpmicrotar – biblioteca para arquivos *.tar
BAIXAR pmicrotar-0.4 Quem é do mundo *nix já deve conhecer o formato *.tar, muitas vezes confundido com um tipo de compressão de arquivo. Na verdade, trata-se de um formato de empacotamento, apenas une vários arquivos ou, até mesmo, diretórios. O formato TAR pode ser usado em conjunto com bibliotecas de compressão de dados dando assim…
Continue readingBiblioteca jpginfo.pris
Essa biblioteca é feita puramente em Prisma, não há outras dependências nem código em C. Com ela é possível extrair informações de imagens jpg, como a altura, largura, tipo de canal de cor etc. Há apenas duas funções, segue um exemplo de uso:
1 2 3 4 5 6 7 8 9 10 11 12 |
local jpg = inclua'jpginfo' local info = jpg.info('p4.jpg'); se nao info entao imprima(jpg.erro()); sis.saia(1); fim imprima('Dimensão[larg x alt]:',info.larg .. ' x '.. info.alt); imprima('Canal:', info.cs); imprima('bits por componentes:', info.bpc); imprima('Decoder:', info.f); imprima('Id:', info.id); imprima("Tam:", info.tam); imprima('versao', info.versao); //versão do jpeg; imprima('versão maior:', info.versao_maior); imprima('versão menor:', info.versao_menor); |
clique aqui para Baixar;
Continue readingMonitor de bateria em Prisma (Linux)
Uma boa função em Prisma é a es.pabra() que chama um programa externo capturando sua saída. Aproveitando isso criei um simples script que monitora a bateria, mostrando uma mensagem quando estiver descarregando. Segue o código para análise, bons estudos. Qualquer dúvida posta nos comentários!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
/* * Monitor de bateria simples em Prisma usando es.pabra() com o programa upower (linux); * e xmessage para a mensagem. */ //Sem licença (use como bem entender - o autor não será responsabilizado!) //2017 - 12 Adalberto Amorim Felipe // linguagemprisma@gmail.com //Biblioteca para permitir o uso de acentos e alguns caracteres especiais no cmd e gui do windows. //Não converte todos os tipos de utf8, basico pt-br //estou criando em C uma biblioteca mais completa para esta funcionalidade. //ATENÇÃO este arquivo deverá ser salvo no formato utf8 funcao parse(s) local tmp; a = s:analise('\n'); local info = {}; para i,v em pares(a) inicio se v <> '\n' entao tmp = v:analise(':'); se tipo(tmp)=='tabela' entao se tmp[1] e tmp[3] entao info[tmp[1]:apare()] = tmp[3]:apare(); fim fim fim // -- imprima(i,v); fim retorne info; fim//fim funcao local term = inclua'terminal'; local funcao mensagem(titulo,txt, ...) local botoes = {...}; local bts = ''; para i,v em ipares(botoes) inicio bts = bts .. '"' .. v .. '",' fim bts = bts:corte(1,-2); local cmd = 'xmessage -title ' .. titulo .. ' "' .. txt .. '" -center -buttons ' .. bts .. ' "$@" "" ;' // imprima(cmd); local ret,_,num = sis.execute(cmd); se num entao retorne convnumero(num); senao retorne falso; fim fim local cmd = 'upower -i /org/freedesktop/UPower/devices/battery_BAT0'; local a; local cont = 1; local info; enquanto 1 inicio term.defCorletra(term.verde); a, err = es.pabra(cmd); se a entao info = a:leia'*t'; a:feche(); info = parse(info); se info.present == 'yes' entao info.present = verdadeiro; senao info.present = falso; fim imprima('bateria presente?',info.present); se info.state == 'charging' entao info.state = 'carregando'; senaose info.state=='discharging' entao info.state='descarregando'; fim imprima('Estado:', (info.state:troque('charging','carregando'))); imprima('Porcentagem:',info.percentage); local perc = convnumero(info.percentage:corte(1,info.percentage:procure('%%') -1 )); // imprima(perc); se perc < 13 e info.state == 'descarregando' entao local aviso = string.formate('Bateria em estado critico, conecte o carregador agora!\n\ndescarregando: %0.2f%%',perc); imprima('Aviso::',aviso); mensagem("Aviso", aviso, ' ok '); fim senao imprima('Erro', err); fim sis.durma(1000); //term.limpeTela(); term.cursorInicio(); local alt,larg = term.tamanho(); para i = 1,alt inicio es.escreva((' '):nconcat(larg)); fim term.cursorInicio(); imprima('------['..cont..']------'); cont=cont+1; fim term.defPadrao(); |
Por enquanto é isso, até mais!
Continue readingXmessage – Linux
Cria uma caixa de mensagem sem a necessidade de biblioteca gráfica Prisma, funciona apenas em Linux. Para quem é do mundo Linux talvez deva saber o que é Xmessage, Zenity e tantos outros diálogos para linha de comando. Esses programas acima são chamados por scripts sh em linux produzindo uma caixa de mensagem para uma interação…
Continue readingGui básico em terminal | guiterminal.pris
Fiz uma correção na mensagem questão (botões) e reupei:(4/11/2017) Muitas vezes por algum motivo é necessário abrir mão da interface gráfica e usar apenas o terminal de comandos, seja por questão de memória, seja em um servidor etc. Que tal unir um pouco dos dois mundos, criando mensagens box, diálogos e listagem no terminal, usando…
Continue readingExtrair iso com Prisma em Linux
Uma vez tive que montar e copiar os arquivos de uma *.iso, pensei então em automatizar o processo com um script prisma bem simples, funciona somente em linux: (não é difícil de implementar para windows, basta saber os comandos de montagem); Segue o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
//extrair iso em linux. local sudo = nulo; //só para teste; local pasta_tmp = '/tmp/'; funcao monte_iso(iso,dest) local sudo = sudo ou ''; local cmd = sudo .. "mount -o loop "; //destino é a pasta onde aparecerá os arquivos. //se o comando de cima nao funcionar tente(basta tirar as duas barras do comentário: //cmd = 'mount -o loop -t iso9660 '; local str_mkdir = sudo .. 'mkdir ' .. dest; cmd = cmd .. iso .. ' ' .. dest; sis.execute(mkdir); local ret,s,num = sis.execute(cmd); se nao ret entao retorne falso,"Erro ao montar arquivo " .. s .. ': ' .. num, num; fim retorne verdadeiro; fim funcao desmonte_iso(dest) //deve ser destino do arquivo montado. local sudo = sudo ou ''; local umount = sudo .. "umount " .. dest; se sis.execute(umount) entao sis.remova(dest); retorne verdadeiro; senao retorne falso, 'Erro ao desmontar a imagem iso'; fim fim funcao extraia_iso(iso,dest_copia) local sudo = sudo ou ''; local _,arq,_ = sis.nome_arquivo(iso); //pega o nome sem extensão em arq sis.execute( sudo .. 'mkdir ' .. pasta_tmp .. arq); local ret, err, num = monte_iso(iso, pasta_tmp .. arq); se nao ret e num <> 32 entao desmonte_iso( pasta_tmp .. arq); retorne falso, err; fim local copia_cmd = 'cp -r ' .. pasta_tmp .. arq .. '/* ' .. dest_copia; sis.execute( 'mkdir ' .. dest_copia); poe'\n\nAguarde o processo de cópia, pode levar vários minutos...\n\n'; local ret,s,num = sis.execute(copia_cmd); se nao ret entao desmonte_iso(sudo .. pasta_tmp .. arq); retorne falso, 'Erro ao copiar conteúdo da pasta montada ' .. s .. ': ' .. num; fim desmonte_iso( pasta_tmp .. arq); retorne verdadeiro; fim //================================================================================= //teste: //* local ret, err = extraia_iso( '/home/user/Downloads/arq.iso', //imagem iso alvo '/home/user/Downloads/arq' //local onde os arquivos serão extraídos ); se nao ret entao imprima(err); senao imprima('Processo terminado com sucesso\n\n'); fim // */ |
Funções: monte_iso(iso,dest); iso – “arquivo.iso” (caminho completo); dest –…
Continue reading