Esta é uma das minhas primeiras aplicações programadas em Java.
Para esta aplicação, criei uma biblioteca que fez cálculos de precisão configuráveis usando o BigDecimal.Em particular, a biblioteca implementa as principais funções matemáticas, aceitando o tipo BigDecimal de números e a precisão desejada.
O aplicativo final exibe uma caixa de texto onde você pode inserir as operações que deseja calcular.Você também pode armazenar funções e variáveis.
A interface do usuário é rudimentar e tem alguns bugs que tornam um pouco tedioso usar o aplicativo.Eu planejo projetar uma nova versão na esperança de que ela melhore essa falha.
O aplicativo funciona internamente através da análise da operação inserida pelo usuário e armazená-lo na memória em forma de árvore.Ao fazer isso, você pode armazenar fórmulas, pois pode salvar a árvore em função de uma ou mais variáveis.Após a árvore de operação ter sido obtida, o resultado é reavaliado e, após a conclusão, o resultado total é exibido.
É uma nova versão da calculadora de precisão múltipla.
Objectivos:
- Melhorar a estrutura de classe da aplicação..
- Capacidade de calcular funções derivadas.
- Melhore a interface do usuário.
- Melhore a ajuda.
O principal motivo desta nova versão é implementar uma derivação algébrica.
A ideia para essa capacidade se originou no ensino médio quando um dos professores sugeriu que a turma participasse do concurso anual de software apresentando um aplicativo que poderia derivar.
Naquela época, não fizemos muito progresso no projeto, mas quase 30 anos depois, uma aplicação que pode derivar finalmente chegou :-).
EExiste um manual abrangente Isso explica como o aplicativo funciona.
Nova versão da calculadora de multi-precisão.
Objectivos:
- Adicione a nova versão da consulta durante a inicialização para ter uma contagem de quantas pessoas usam o aplicativo.
- Opção de humor escuro
EExiste um manual abrangente Isso explica como o aplicativo funciona.
O pequeno efeito da lente de aplicação foi o subproduto de uma pausa de primavera sem planos.
Naquela época, eu estava terminando de programar a primeira versão do codificador (File Encoder Application), e eu precisava de algo atraente para o About...
A ideia original não é minha, mas eu a implementei com base em um efeito que eu tinha visto em uma daquelas demos icônicas do DOS.
Eu decidi encapsular o efeito dentro de um Java Swing JPanel para o meu projeto.
Tudo dentro do painel pode ser ampliado usando uma lupa posicionada em suas coordenadas escolhidas.
Foi especialmente desafiador garantir que a atualização dos componentes do texto, especialmente ao modificar a localização do texto selecionado, não afetasse negativamente a aparência visual.
Quando você cria o LensJPanel, o conteúdo do JPanel é aplicado ao elemento que sofrerá o efeito de aumento. Você pode especificar o raio da lupa e se ele ampliará ou diminuirá o conteúdo.
Quando você tem o raio e determina se a lupa ampliará ou diminuirá o conteúdo, uma matriz quadrada bidimensional é criada com um elemento para cada pixel quadrado contendo a lupa.
O algoritmo calcula as coordenadas do pixel de origem correspondente na imagem original para cada pixel de destino para determinar a cor ao aplicar a transformação.
A transformação envolve uma simples transformação de coordenadas polares, razão pela qual uma lente de aumento é utilizada:
Um pixel é calculado a partir de uma posição específica do quadro da lente e é usado para determinar a cor quando a transformação é aplicada.O pixel também estará dentro do quadro da lente.Além disso, o raio do centro da lente para o ângulo de um determinado pixel é calculado.O pixel de "origem" para o pixel que estamos calculando estará no mesmo ângulo, mas o raio mudará.O raio se estende de 0% a 100% para os pixels “alvo” e “fonte”, com 100% representando o comprimento do raio da lente.O pixel de origem é calculado para cada pixel alvo mantendo seu ângulo e transformando o raio usando uma função com um derivado monotonicamente crescente. Essa transformação ocorre no intervalo entre 0 e 1, onde f(0) é igual a 0 e f(1) é igual a 1. Aqui, 0 representa 0% do raio da lente e 1 representa 100% do raio da lente.Isso significa que os raios tirarão seu pixel de origem de um raio menor, o que expandirá o círculo da lente.Fora do círculo da lente, a transformação será a identidade, o que significa que o pixel de origem não mudará.
A explicação é um pouco confusa, mas se você estiver interessado em aprender mais sobre o assunto, sinta-se à vontade para entrar em contato comigo.
Espero que alguém ache útil :-).
A nova versão do aplicativo apresenta uma janela gráfica circular com uma lente móvel que pode ser controlada clicando e arrastando com o mouse.
Você pode sair da aplicação pressionando ESC.
Alguns problemas são evidentes:
- É impossível atualizar frequentemente o fundo ampliado, já que, para tirar uma captura de tela, você tem que definir a janela como transparente, o que causa uma cintilação irritante.
- A imagem é bastante pixelizada, especialmente na parte central da lupa.
A nova versão do aplicativo aborda um bug de transparência que ocorreu nos sistemas operacionais Mac e Linux.
A última versão também aborda o problema de pixelação encontrado nas versões anteriores.
Isto é conseguido através da aplicação de um filtro de alisamento gaussiano na imagem da lente, criando um efeito de desfocagem que reduz a pixelação causada pela ampliação.
A última subversão disponível desta versão funciona com Java-8 e Java-11.
O desenvolvimento deste aplicativo resultou da necessidade de criptografar arquivos usando um método personalizado.
O aplicativo permite criptografia de arquivos fácil, utilizando métodos de criptografia / descriptografia que economizam tempo, o que torna os ataques de força bruta menos difíceis e é adequado para criptografar arquivos pequenos.
Há umaManual do usuário abrangente que explica os detalhes da operação tanto para os usuários quanto para o uso interno da aplicação.
Esta versão da aplicação foi criada em resposta a problemas causados pela nova versão JRE, que afetou o aspecto visual da aplicação original v1.0. A versão 1.1 foi desenvolvida para resolver esses problemas.
O manual do usuário não mudou com esta versão e permanece o mesmo que o manual do usuário da versão anterior.
Algumas mudanças foram feitas nesta versão:
- Corrigido um bug no gerador pseudo-aleatório personalizado usado em versões anteriores.
- Novos métodos de criptografia projetados especificamente para uso com arquivos grandes foram desenvolvidos para aumentar a velocidade e a robustez da criptografia.
Uma específicamanual do usuário desta versão Existe que explica todos os detalhes.
Houve várias mudanças nesta versão:
- Novo método de criptografia otimizado para arquivos grandes usando vários threads.
- Novo método de criptografia que divide arquivos criptografados em volumes quando há limitações de tamanho de arquivo.
- O fator de ampliação ajusta a tela da janela para acomodar diferentes densidades de pixels do dispositivo.
Há umaespecífico manual do usuário para esta versão que explica todos os detalhes.
Esta versão foi desenvolvida para corrigir um bug que ocorreu ao interagir com um novo recurso Java-9 que lida com telas de alta densidade de pixels.
O apoio do Maven também está incluído.
Há umaespecífico manual do usuário para esta versão que explica todos os detalhes.
O objetivo desta versão é adicionar a nova consulta de versão para obter feedback sobre quantas pessoas estão usando o aplicativo.
A opção de modo escuro também foi adicionada.
Há umaespecífico manual do usuário para esta versão que fornece explicações detalhadas.
Esta es la primeira versión de una pequea aplicación en Java que permissía ayudar a sincronizar subtítulos aplicando un factor temporal a los ficheros de subtítulos de tipo (.srt).
O aplicativo detecta automaticamente o conjunto de caracteres do arquivo de legenda. Ele permite que você escolha um conjunto de caracteres para gerar o arquivo de saída ou use o código detectado durante a leitura.
Alguns itens foram adicionados nesta versão:
- Janela de Ajuda
- Suporte para espanhol e inglês.
- Suporte para tipos de arquivos (.saa) foi adicionado, além dos arquivos (.srt) já suportados na versão anterior.
- A capacidade de aplicar um atraso em milissegundos a legendas foi adicionada, além do fator na versão anterior.
Isso torna possível sincronizar perfeitamente o vídeo e as legendas, conhecendo os valores de atraso e fator de antemão.
Este aplicativo de interface de comando, escrito em C++, permite a aplicação de um fator de tempo para arquivos de áudio.
Esta operação significa que os arquivos de entrada e saída de áudio terão diferentes comprimentos e tamanhos.
O processo envolve a interpolação de sinais digitais para criar a transformação.
Há umaguia detalhado para operar a aplicação e entender seus mecanismos internos.
Aplicativo desenvolvido em Java que permite que você se conecte ao Google Drive e acesse uma planilha.
Depois disso, o aplicativo preenche uma JTable com os dados e permite que você filtrá-lo.
Há umamanual abrangente em espanhol, o que explica como configurar o aplicativo passo a passo.
O Chess PDF Browser é um aplicativo programado em Java que permite que você navegue em livros de xadrez em formato PDF.
Ele também permite trabalhar com arquivos de jogo em formato.pgn.
Veja um tabuleiro de xadrez onde você pode navegar por diferentes jogos.
Permite abrir livros de xadrez PDF e extrair jogos para economizar em formato.pgn.
Permite editar as variantes dos jogos armazenados na memória, quer sejam lidos a partir de.pgn, extraídos de um PDF ou criados diretamente movendo as peças no tabuleiro.
Há umamanual abrangente que detalha como o aplicativo funciona.
Vários bugs foram corrigidos e novos recursos foram adicionados na versão mais recente do aplicativo:
- Novo extrator de jogo experimental.
- Mark move-se como novidades. (Novelty).
- O suporte linguístico em russo foi adicionado.
Há umaguia abrangente Isso explica como o aplicativo funciona.
Os guias do usuário foram atualizados com a nova versão do aplicativo.
Há umaguia abrangente Isso explica como o aplicativo funciona.
Com a versão mais recente do aplicativo, vários novos recursos foram adicionados:
- O extrator de itens de linha experimental foi substituído por um novo extrator que agora leva em conta colchetes e colchetes.
- O sistema agora tem a capacidade de extrair dados de jogos, incluindo nomes de jogadores e rankings ELO.
- A capacidade de ver os movimentos em um jogo em notação algébrica.
- Um OCR foi implementado para reconhecer as posições do tabuleiro e adicioná-las aos jogos que não começam a partir da posição inicial padrão.
- Agora você pode jogar jogos contra outra pessoa ou um motor ou jogar dois motores uns contra os outros.
- Conectividade aprimorada aos motores UCI:
- Modifique as configurações do motor, por exemplo, diminuindo o nível para jogar contra um nível menor do que o máximo.
- Análise de posições.
- Análise completa do jogo.
- Você pode usar um motor como um jogador em um jogo.
- Opção de modo escuro
Há umaguia abrangente Isso explica como o aplicativo funciona.
A nova versão do aplicativo agora pode extrair movimentos de jogos de PDFs usando notação algébrica de estatueta.
O que há de novo nesta versão:
- O software permite a extração de jogos em notação algébrica figura, notando os movimentos das peças.
- Reconhecimento melhorado da posição da placa usando o reconhecimento óptico de caracteres (OCR).
- Alguns bugs foram corrigidos.
Há umaguia abrangente Isso explica como o aplicativo funciona.
Você pode ver um vídeo do novo recurso vídeo de demonstração
ChessPdfBrowser plugin de aplicação
Apresentando um aplicativo de interface de comando que permite extrair jogosjogos de livros de xadrez PDF e salvá-los em formato.pgn.
A aplicação aceita parâmetros diferentes, permitindo que você:
- Especifique o nome do arquivo de entrada (livro PDF)
- Definir o nome do arquivo de saída (arquivo.pgn)
- Escolha o idioma dos jogos em PDF.
- Escolha quais páginas para extrair os jogos de
Existem scripts básicos para diferentes ambientes que executam a chamada Java e passam os parâmetros para a aplicação:
- .bat script para Windows
- .sh script para ambientes Unix
Atualização para a versão online do ChessPdfBrowser
Um script bash foi adicionado para simplificar o processamento de todos os PDFs em um diretório.
Atualmente, a versão online é incapaz de processar PDFs em notação algébrica de figura, mas foi atualizada para incluir a nova funcionalidade do aplicativo.
TextCrypt é uma pequena aplicação Java que permite criptografar e descriptografar texto simples.
O texto é sempre criptografado e nunca salvo sem criptografia no disco rígido.
O aplicativo pode criar um arquivo criptografado compatível com o aplicativo Java File Encoder simplesmente alterando a extensão do arquivo para o formato apropriado.
Esta atualização aborda vários bugs da versão anterior.
Esta atualização aborda vários bugs da versão anterior.
Esta versão inclui várias novas funcionalidades:
- Editar texto e facilmente desfazer ou refazer alterações.
- Copie e cole texto.
- Uma opção para procurar e substituir texto, que também pode ser usado para expressões.
- A capacidade de redimensionar a janela do aplicativo.
- O aplicativo agora é capaz de reconhecer links do site e endereços de e-mail.
Esta versão do aplicativo tem como objetivo evitar um bug que resultou da interação com um novo recurso Java-9, que lida automaticamente com telas de alta densidade de pixels (dpi).
Além disso, o apoio ao Maven foi adicionado.
Uma nova versão de consulta foi adicionada nesta atualização do aplicativo.
A opção Dark Mode foi adicionada.
Este codificador de texto tem características adicionais desejáveis:
- A criptografia é realizada usando um gerador pseudo-aleatório caótico com XOR e reordenação de caracteres.Este é um método de criptografia não padrão que eu mesmo programei.Isso significa que, se alguém tentar descriptografar um arquivo através de um ataque de força bruta sem a senha, terá que lidar com o código.
- Se o tamanho do arquivo exceder 16 KB, ele se torna resistente a ataques de força bruta devido à reordenação de caracteres, o que leva muito tempo para rejeitar uma senha incorreta.
- Para evitar que o arquivo criptografado seja corrompido, ele é primeiro salvo em um arquivo temporário e depois renomeado para o nome do arquivo real.
- Uma cópia de backup do arquivo anterior também é salva ao salvar o texto.
- O texto é sempre criptografado no disco rígido.
- Procure e substitua a janela.
- Selecione o nível de zoom para as janelas.
- Modo escuro.
Instrumental music é uma pequena aplicação programada em Java que permite ouvir música a partir de um microfone.
Ele também permite que você processe a entrada capturada e determine a nota predominante em tempo real.
Teste o aplicativo assobiando notas e, em seguida, configurá-lo para reproduzir a nota detectada em MIDI.
Esta aplicação faz para o entretenimento simples.
A versão das bibliotecas da plataforma foi atualizada nesta versão:
- Você pode alterar o nível de zoom da aplicação.
- Uma nova consulta de versão para obter as estatísticas sobre quantas pessoas usam o aplicativo.
- Opção de modo escuro
Agora você também pode definir o limite de amplitude para detectar uma nota.
Esta versão de aplicação resulta do tempo livre extra que tive devido à proibição de entrar em bares e restaurantes na Catalunha sem um certificado COVID durante o Natal em 2021.
O novo recurso mais notável é mudar o tom de voz de inferior para superior usando um controle deslizante.
- Novas classes que facilitam a criação de produtores e consumidores.
- Novas classes permitem que as mordidas de áudio sejam consumidas e processadas no domínio da frequência aplicando um STFT.
- Várias melhorias na estrutura da classe e interface do usuário.
- Compatibilidade com JDK-17
vídeo de demonstração
Esta aplicação permite que você crie ícones redimensionando uma imagem de entrada para vários tamanhos de ícones padrão do Windows:
- 16 x 16 x 16
- 32 x 32 32 x 32
- 64 x 64 64 x 64 64 x 64 64
- 128 x 128 x 128 x 128
Também permite redimensionar a imagem de entrada para um tamanho personalizável, que pode ser diferente dos tamanhos anteriores.
Você tem a opção de transformar uma cor específica em outra cor durante o processo de redimensionamento. Por exemplo, isso pode ser usado para alterar a cor de fundo, que pode ser transparente, para branca.
Você também pode usá-lo para ajustar o componente alfa (transparência) dos pixels restantes.
Nova opção de modo escuro
Esta aplicação permite-lhe abrir livros PDF e ver as suas imagens e texto.
É um exemplo simples mostrando as capacidades da biblioteca pdfbox.
Nova opção de modo escuro
A aplicação apresenta uma tridimensional Donut, permitindo rotações em ambos os eixos.
É um exemplo simples do que pode ser alcançado com bibliotecas de plataforma.
Recursos da biblioteca
- Suporte multi-idioma
- zoom dos componentes visuais
- Opção de modo escuro
- desfazer/refazer automaticamente para componentes de texto, com um menu de contexto incluído
- Janela de pesquisa/substituição de texto pronta para uso.
- Componentes básicos para janelas de auto-compleção.
- Reposicionamento de componentes após o redimensionamento da janela.
- Aulas básicas para formatação de texto on-the-fly no JTextPanes.
- JFileChooker Melhorado
- funções básicas de todos os tipos:
- redimensionamento preciso da imagem
- processamento de imagem, traduzindo pixels de imagem com uma função direta de tradução de cores.
- Classes para facilitar o processamento com arquivos XML (sem validação)
- ............
Esta aplicação é um leitor de música.
Funciona com playlists.m3u, que podem ser criadas arrastando e soltando arquivos de música do explorador de arquivos.
- Formatos suportados:
- Equalizador de 5 bandas de 0 dB a -20 dB
- equalizador gráfico de 5 bandas
- Opção de modo aleatório.
- Opção de reprodução contínua.
- Capacidade de parar automaticamente a reprodução no final da música atual.
- Navegador de canções
vídeo de demonstração
A inspiração para esta aplicação originou-se há muito tempo.
Meu fascínio com a codificação começou durante a minha juventude, quando eu gostava de assistir demonstrações apresentadas por várias equipes de codificação em competições em todo o mundo.
Os efeitos apresentados nessas demonstrações foram particularmente impressionantes, especialmente considerando as capacidades limitadas dos computadores naquela época.
Lembro-me de ser cativado por uma demonstração de um grupo espanhol que mostrou um efeito morphing:Durante a demonstração, os componentes passaram por uma série de transformações, culminando com o componente final sendo transformado em uma iguana (isso amarrado em seu grupo sendo chamado de "Iguana").
Foi um efeito impressionante.
Tenho ponderado como recriar este efeito ao longo dos anos. Agora, estou introduzindo esta aplicação como a solução que proponho.
Há umaguia do usuário Isso explica em detalhes como o aplicativo funciona.
Vídeo de demonstração:
Vídeo criado com a aplicação
Agora estou interessado em integrar elementos de IA em meu projeto pessoal depois de concluir um mestrado em Inteligência Artificial.
Desta vez, haverá uma biblioteca para detectar rostos mais velhos.
Com esta nova versão, pretendemos simplificar a tarefa do usuário adicionando ferramentas para criar grades mais facilmente.
Mais especificamente, inclui uma biblioteca que detecta rostos em imagens usando marcos de face dlib-68, que fornece 68 vértices para cada rosto detectado.
Com esta nova informação, o aplicativo agora permite:
- inserir os 68 vértices detectados com um único clique
- Posicionar com mais precisão os vértices nos novos rostos
Esta melhoria permite que você crie projetos de Morphing de forma mais eficiente.
Por exemplo, você pode criar um efeito interessante usando quatro fotos em menos de 20 minutos, enquanto que com a versão anterior,Poderia ter levado pelo menos duas horas.
Há umguia do usuáriode usuarioIsso explica em detalhes como usar o aplicativo.
Vídeo de demonstração
Vídeo criado com a aplicação
O aplicativo implementa um algoritmo fractal image compression descrito em um artigo IEEE dos meus dias universitários. É baseado na triangulação Delaunay e codificação de blocos.
Colaborei com um colega universitário para desenvolver a versão inicial deste algoritmo durante um estágio para o último curso da Teleco Television (plano 64 de Barcelona).
A internet ainda estava em seus estágios iniciais, e qualquer progresso dependia quase inteiramente de esforços individuais e documentos físicos.
Lembro-me que desenvolvemos uma triangulação Delaunay bastante boa e implementamos com sucesso a abordagem de divisão e fusão. Isso envolveu calcular os triângulos mais representativos e encontrar os mapeamentos ideais durante o processo de codificação. No entanto, apesar de três meses de desenvolvimento intensivo, nunca concluímos o aplicativo.
Agora, 25 anos depois, apresento-lhe esta nova implementação do algoritmo, totalmente desenvolvido e concluído em um tempo recorde de duas semanas.
Obviamente, algo será melhorado 25 anos depois. Além disso, desta vez com suporte de função adicional para lidar com triângulos, que eu já tinha programado para a aplicação do efeito Morphing.
Desta vez usando uma biblioteca de triangulação Delaunay programada por profissionais.
É evidente que quando você não tem que fazer os tijolos você mesmo, mais rápido você pode construir as paredes...
Vídeo de demonstração
A aplicação, também escrita em Java, foi introduzida durante a apresentação da Tese de Mestrado em Inteligência Artificial (2022/2023).
O modelo de PowerPoint que recebemos tinha um tema laranja, refletindo as cores escolares da VIU University.
Parece uma boa ideia criar imagens que correspondam a essa gama de cores. Proponho criar um aplicativo de linha de comando para copiar imagens com base na tonalidade de cor.
A biblioteca "Apache Commons CLI" é usada para analisar parâmetros de entrada para a linha de comando, fornecendo uma nova capacidade.
A opção de logback slf4j também é um novo recurso.
O aplicativo colorBall foi criado como uma forma de entretenimento entre os projetos. Foi desenvolvido após o término da versão v1.1 do Morphing Editor e antes de começar a trabalhar na nova versão do aplicativo de xadrez.
O software usa o Painter para programar o ImageJPanel. Isso permite que você pinte sobre a imagem exibida. Ele também utiliza KeyColorImage, que permite colorir pixels com um tom selecionado usando o JColorChooker.
Desta forma, o aplicativo sobrepõe uma bola de tamanho selecionável, sutilmente colorida com a tonalidade escolhida, em cima da imagem exibida.
O JColorChooker foi integrado nas bibliotecas através do aplicativo, tornando-o disponível para todas as aplicações:
- Multi-precisão
- modo escuro
- Lembre-se das últimas cores selecionadas
Vídeo de demonstração
As calculadoras de raiz polinomiais são um grampo no campo das carreiras de ciência da computação.
Contribuo com a minha versão da solução para o problema.
Não é uma solução muito eficiente, uma vez que a complexidade computacional no pior caso é O(G2), onde G representa o grau polinomial
No entanto, acho que o trabalho é feito de forma eficaz
O algoritmo é baseado no cálculo das raízes de um polinômio, assumindo que as raízes de sua função derivada são conhecidas.
Sob essa suposição, é simples calcular as raízes porque podemos determinar o limite de alcance das raízes.(Ver:Propriedades das raízes polinomiais)
Desta forma, podemos determinar o alcance de cada raiz potencial usando as raízes da função derivada, e podemos calcular os zeros aplicando o teorema de Bolzano.
Mas... precisamos da função para calcular as raízes da função derivada!
Não há problema. Usamos recursão para calcular as raízes de um polinômio. A função recursiva tem um caso de terminação para o cenário de um polinômio de grau zero (uma constante), que assumimos não tem raízes.
Uma vez que a função derivada tem um grau menor do que o polinômio original, usando recursão, podemos calcular as raízes de um polinômio em zero graus, tornando-se um problema simples de resolver.
Essa maneira de proceder pode exigir precisão em nossos cálculos, mas isso não é um problema se usarmos a classe Java BigDecimal.
Aplicação combinada de desktop Java (impressão QR) e Android (leitura QR)
Este é o resultado de copiar e colar informações da internet que explica a funcionalidade da biblioteca Zxing para processamento de código QR.
Há também uma aplicação de linha de comando onde você pode criar imagens QR.
Esta aplicação nasceu de um desejo de integrar capacidades avançadas de IA, tais como:
- Reconhecimento de fala em tempo real
- Conversão Text-to-speech
- Interação com a linguagem natural generativa A.I.
Com ele, você pode conversar com uma IA generativa: Llama3.
Falar no microfone (o reconhecimento de voz não é perfeito, mas reconhece algumas partes)
editando o texto para enviar à I.A., e enviando-o
Ver a resposta da IA em tempo real e ouvi-la através do alto-falante
Vídeo de demonstração
O gerador de super pojo nasceu da necessidade de unificar diferentes versões de modelos pojo, a fim de tentar oferecer uma lógica comum a todas as versões.
Você pode ver mais detalhes sobre o aplicativo e a biblioteca associada noprojeto superpojo-modelo no github