terça-feira, 13 de junho de 2017

Classe para manipular XML

Classe para manipular facilmente documentos XML

Não precisa de anotações nem classes para representar tags, somente do documento XML, preenchido ou não (os atributos, se vazios, devem estar com ="" ou ='');
Dá pra fazer praticamente tudo com ela;
A classe salva os XMLs editados numa pasta designada nomeando-os de acordo com a data e horário e cria um arquivo .txt contendo uma lista dos nomes dos arquivos XML salvos;
Atenção! A classe só consegue ler arquivos de texto simples em formatação UTF-8.

BAIXAR

Exemplos:

Observação: tanto atributos como conteúdos entre tags (<a>conteúdo</a>) são considerados campos. Os métodos que recebem a posição do campo alvo não diferenciam um do outro, sendo o conteúdo entre tags os últimos campos de suas respectivas tags.

//Insere o conteúdo literal (sem escapar caracteres especiais) da String no corpo (<a>corpo</a>) da 3ª tag aluno, sem retirar o conteúdo presente anteriormente
xmle.insertXML("aluno", 3, String);


//Extrai todo o conteúdo do corpo da 10ª tag aluno, deletando-o do XML
xmle.extractXML("aluno", 10, true);


//Extrai todo o conteúdo do corpo da 10ª tag aluno, sem deleta-lo do XML
xmle.extractXML("aluno", 10, false);


//Insere o conteúdo da String no 1º campo da 3ª tag dtNascimento, de forma literal
xmle.insert("dtNascimento", 3, 1, String, true);


//Insere o conteúdo da String no 1º campo da 3ª tag dtNascimento, escapando os caracteres especiais
xmle.insert("dtNascimento", 3, 1, String, false);


//Insere o conteúdo da String no 2º campo de todas as tags aluno
xmle.multInsert("aluno", 2, String, false);


//Insere o conteúdo da String[] no 2º campo de todas as tags aluno, consecutivamente ao índice do vetor.
xmle.multInsert("aluno", 2, String[], false);


//Extrai o 3º campo da 3ª tag aluno (sem retirá-lo do XML)
xmle.extract("aluno", 3, 3);


//Extrai os primeiros campos de todas as tags nome (sem retirá-los do XML), retornando um vetor String
xmle.multExtract("nome", 1);

segunda-feira, 22 de maio de 2017

App de votação

Aplicativo simples de votação.

BAIXAR



Descrição:

Não é possível registrar votos antes de iniciar o cronômetro;

A contagem dos votos é feita em tempo real e pode ser conferida a qualquer momento;

A lista de votantes deve ser salva em arquivo .txt (bloco de notas) com codificação UTF-8 e deve estar na mesma pasta que a urna;
Os nomes da lista de votantes devem ser separados por ";", mas esse caractere não deve estar presente antes do primeiro nome ou depois do último;
A lista não pode ter quebras de linha;
As mesmas especificações se aplicam à lista de chapas/candidatos;

Salve um arquivo .txt em utf-8 para o título da urna;

A lista de votantes (e a lista de chapas) é carregada antes da janela da urna ser aberta, portanto, alterar o arquivo .txt depois de iniciar o app não influencia a votação. É recomendável excluir o arquivo da lista depois que o cronômetro da urna for iniciado, para evitar que as chapas ou candidatos concorrentes fraudem o processo ao votar no lugar de terceiros;

Para evitar encerramento por acaso da urna, a única maneira de fechá-la é através do gerenciador de tarefas.

terça-feira, 16 de maio de 2017

App de criptografia muito rápido e seguro (chave de 256 caracteres)

App de criptografia mais rápido que conheço. Criptografa 1GB em 15 segundos no meu PC.
Configurações do meu PC: Processador i3 de 3ª geração e HD de 7200 RPM (comum).


BAIXAR

Esse app foi desenvolvido por mim.

Essa criptografia funciona assim: Para cada byte do arquivo original soma-se um byte da chave. As posições não são somadas consecutivamente, mas de acordo com o conteúdo da própria chave. Isto é, é impossível saber, a menos que se tenha a chave, qual byte da chave é somado a qual byte do arquivo.

O app carrega na memória RAM pedaços de 64 MB do arquivo por vez. Portanto, não requer muita memória.


OBSERVAÇÕES:

ATENÇÃO: O algoritmo de criptografia foi atualizado (versão 2). Portanto, NÃO É COMPATÍVEL com a versão anterior;

ATENÇÃO: Essa nova versão EXCLUI PERMANENTEMENTE os arquivos originais;

ATENÇÃO: Você deve guardar num arquivo de texto simples (.txt) as chaves que usará para criptografar seus arquivos. Se você perdê-las, PERDERÁ PARA SEMPRE seus respectivos arquivos;

Ao realizar uma nova ação, clique no botão "limpar seleção", para que o app não faça ações indevidas com arquivos selecionados em ações anteriores. Caso isso ocorra, clique no botão reverso ("criptografar"/"descriptografar") para desfazer a ação;

NÃO ME RESPONSABILIZO POR MÁ UTILIZAÇÃO DO APP ;

Curiosidades: É possível descriptografar um arquivo não criptografado. Neste caso, o arquivo estará criptografado, mas de modo inverso. Para descriptografá-lo basta usar a função criptografar. Também é possível criptografar/descriptografar um mesmo arquivo várias vezes, apesar de não ser necessário, pois o app garante grande segurança num só processo;

Em caso de bugs, envie no meu e-mail: lucasnick33@gmail.com.