Página pessoal da Web Fran Rojas


APLICICAES

ESTA PÁGINA PRECISA DE JAVASCRIPT PARA FUNO

Multiprecision calculator


v1.0.2



v1.1



v1.2


Efeito da lente


v1.1


v1.2


v1.3


Codificador (Java File Encoder)


v1.0


v1.1


v1.2


v1.3



v1.4



v1.5


Sincronização de legendas


v1.0


v1.1


Sincronização de áudio


v0.5


Google Planilhas Filtragem


v0.5


Chess PDF Browser

( ChessPdfBrowser website )

v1.0



v1.1



v1.11



v1.20



v1.26


pdf2pgn


v1.20


v1.26


Criptografia de texto (TextCrypt


v1.0


v1.0.2


v1.3


v1.4



v1.5



v1.6


Instrumental Music


v1.0



v1.1



v1.2


Bibliotecas de plataformas


v1.0



v1.1



v1.2



v1.3



v1.4


cones


v1.0


PDF Inspector


v1.0


Donut


v1.0


leitor de música


v1.0


Morphing Editor


v1.0



v1.1


Fractal Image Compression


v1.0


Copiar imagens com base na cor


v1.0



Bola de cor


v1.0



Raízes dos polinômios


v1.0



Trabalhando com códigos QR


v1.0



Conversando com A.I.


v1.0



Biblioteca Java para extração de tabelas de PDFs


v1.0





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:

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:


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:

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:

Uma específicamanual do usuário desta versão Existe que explica todos os detalhes.

Houve várias mudanças nesta versão:

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:

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:

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:

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:


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ê:


Existem scripts básicos para diferentes ambientes que executam a chamada Java e passam os parâmetros para a aplicação:

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:

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:

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:

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.

vídeo de demonstração

Este módulo inclui as bibliotecas com classes em destaque em todas as aplicações que tenho vindo a desenvolver.

Eles são organizados em duas subbibliotecas:

O libGeneric inclui classes que não são dependentes do ambiente e que, em teoria, podem ser usadas em aplicativos em qualquer ambiente, incluindo o Android.


O libGenericDesktop inclui classes mais dependentes de um swing (ambiente Java de desktop padrão). Inclui:

Este módulo compromete as bibliotecas com classes apresentadas em todas as aplicações que tenho vindo a desenvolver.

No que diz respeito à versão anterior, foi aditado o seguinte:

Este módulo inclui as bibliotecas com classes em destaque em todas as aplicações que tenho vindo a desenvolver.

Em comparação com a versão anterior, as seguintes adições foram feitas:

Este módulo contém as bibliotecas com classes usadas em todas as minhas aplicações.

Esta nova versão apresenta:

Este módulo contém as bibliotecas com classes usadas em todas as aplicações que desenvolvi.

Esta nova versão apresenta:

Novas bibliotecas externas foram incluídas para conveniência de compilação e separadas em dois grupos de acordo com suas licenças (lgpl e gpl):


Funcionalidades da biblioteca

Esta aplicação permite que você crie ícones redimensionando uma imagem de entrada para vários tamanhos de ícones padrão do Windows:

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

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.


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:


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:

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:


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

Aproveitando as aulas programadas para o aplicativo ChessPdfBrowser, que é um aplicativo que escaneia e extrai jogos de xadrez de PDFs, criei uma versão beta da biblioteca para extrair texto de PDFs, incluindo elementos tabulares

A biblioteca escaneia as páginas especificadas e extrai seu texto. Ao extrair o texto, ele procura padrões tabulares e os extrai em um formato de matriz retangular

Espero que isso seja útil para alguém