Fran Rojas's personal page


APPLICATIONS

CETTE PAGE A BESOIN DE JAVASCRIPT POUR FONCTIONNER

Multiprecision calculator


v1.0.2



v1.1



v1.2


Effet de lentille


v1.1


v1.2


v1.3


Encodeur (Java File Encoder)


v1.0


v1.1


v1.2


v1.3



v1.4



v1.5


Synchronisation des sous-titres


v1.0


v1.1


Synchronisation audio


v0.5


Filtrer Google Sheets


v0.5


Chess PDF Browser

( ChessPdfBrowser site web )

v1.0



v1.1



v1.11



v1.20



v1.26


pdf2pgn


v1.20


v1.26


Chiffrement de texte (TextCrypt)


v1.0


v1.0.2


v1.3


v1.4



v1.5



v1.6


Instrumental Music


v1.0



v1.1



v1.2


Bibliothèques de plate-forme


v1.0



v1.1



v1.2



v1.3



v1.4


Icônes


v1.0


PDF Inspector


v1.0


Donut


v1.0


Lecteur de musique


v1.0


Éditeur Morphing


v1.0



v1.1


Fractal Image Compression


v1.0


Copier des images en fonction de la couleur


v1.0



Boule de couleur


v1.0



Racines de polynômes


v1.0



Travailler avec les QR codes


v1.0



Discuter avec A.I.


v1.0



Bibliothèque Java pour extraire des tables à partir de PDF


v1.0



Générateur de super pojo


v1.0





C'est l'une de mes premières applications majeures programmées en Java.

Pour cette application, j'ai créé une bibliothèque qui a fait des calculs de précision configurables en utilisant BigDecimal.En particulier, la bibliothèque implémente les principales fonctions mathématiques en acceptant le type de nombres BigDecimal et la précision souhaitée.

L'application finale affiche une zone de texte dans laquelle vous pouvez entrer les opérations que vous souhaitez calculer.Vous pouvez également stocker des fonctions et des variables.

L'interface utilisateur est rudimentaire et comporte quelques bugs qui rendent l'utilisation de l'application un peu fastidieuse.Je prévois de concevoir une nouvelle version en espérant que cela améliorera cette lacune.

L'application fonctionne en interne en analysant l'opération saisie par l'utilisateur et en la stockant en mémoire sous forme d'arbre.Ce faisant, vous pouvez stocker des formules puisque vous pouvez enregistrer l'arbre en fonction d'une ou plusieurs variables.Une fois l'arbre d'opération obtenu, le résultat est réévalué et, une fois terminé, le résultat total est affiché.

Il s'agit d'une nouvelle version de la calculatrice multi-précision.

Objectifs:

Le motif principal de cette nouvelle version est de mettre en œuvre une dérivation algébrique.

L'idée de cette capacité est née au lycée lorsque l'un des enseignants a suggéré que la classe participe au concours annuel de logiciels en présentant une application qui pourrait en découler.

A l'époque, nous n'avons pas fait beaucoup de progrès sur le projet, mais près de 30 ans plus tard, une application qui peut en découler est enfin arrivée :-).


AUn manuel complet existe qui explique le fonctionnement de l'application.

Nouvelle version de la calculatrice multi-précision.

Objectifs:


AUn manuel complet existe qui explique le fonctionnement de l'application.

L'effet de petite lentille d'application était le sous-produit d'une pause printanière sans plan.

À ce moment-là, je finissais la programmation de la première version de l'encodeur (File Encoder Application), et j'avais besoin de quelque chose d'accrocheur pour le About...

L'idée originale n'est pas la mienne, mais je l'ai implémentée sur la base d'un effet que j'avais vu dans l'une de ces démos emblématiques de DOS.

J'ai décidé d'encapsuler l'effet dans un Java Swing JPanel pour mon projet.

Tout dans le panneau peut être agrandi à l'aide d'une loupe positionnée à vos coordonnées choisies.

Il était particulièrement difficile de s'assurer que le rafraîchissement des composants du texte, en particulier lors de la modification de l'emplacement du texte sélectionné, n'affectait pas l'apparence visuelle.

Lorsque vous créez le LensJPanel, le contenu du JPanel est appliqué à l'élément qui subira l'effet de grossissement. Vous pouvez spécifier le rayon de la loupe et si elle agrandira ou diminuera le contenu.

Lorsque vous avez le rayon et déterminez si la loupe agrandira ou rétrécira le contenu, une matrice carrée bidimensionnelle est créée avec un élément pour chaque pixel carré contenant la loupe.
L'algorithme calcule les coordonnées du pixel source correspondant dans l'image d'origine pour chaque pixel de destination afin de déterminer la couleur lors de l'application de la transformation.
La transformation implique une simple transformation des coordonnées polaires, c'est pourquoi une loupe est utilisée:
Un pixel est calculé à partir d'une position spécifique de la monture de la lentille et est utilisé pour déterminer la couleur lorsque la transformation est appliquée.Le pixel sera également dans le cadre de l'objectif.De plus, on calcule le rayon du centre de la lentille à l'angle pour un pixel donné.Le pixel "origine" pour le pixel que nous calculons sera au même angle, mais le rayon changera.Le rayon s'étend de 0% à 100% pour les pixels «cible» et «source», avec 100% représentant la longueur du rayon de la lentille.Le pixel source est calculé pour chaque pixel cible en maintenant son angle et en transformant le rayon à l'aide d'une fonction à dérivée croissante monotonement. Cette transformation se produit dans l'intervalle compris entre 0 et 1, où f(0) est égal à 0 et f(1) est égal à 1. Ici, 0 représente 0 % du rayon de la lentille, et 1 représente 100 % du rayon de la lentille.Cela signifie que les rayons prendront leur pixel source à partir d'un rayon plus petit, ce qui élargira le cercle de l'objectif.En dehors du cercle de la lentille, la transformation sera l'identité, ce qui signifie que le pixel source ne changera pas.


L'explication est un peu confuse, mais si vous êtes intéressé à en apprendre davantage sur le sujet, n'hésitez pas à me contacter.

J'espère que quelqu'un trouvera ça utile :-)

La nouvelle version de l'application dispose d'une fenêtre graphique circulaire avec un objectif mobile qui peut être contrôlé en cliquant et en faisant glisser avec votre souris.
Vous pouvez quitter l'application en appuyant sur ESC.

Quelques problèmes sont évidents :

La nouvelle version de l'application corrige un bug de transparence qui s'est produit sur les systèmes d'exploitation Mac et Linux.

La dernière version résout également le problème de pixellisation trouvé dans les versions précédentes.

Ceci est accompli en appliquant un filtre de lissage gaussien à l'image de l'objectif, créant un effet de flou qui réduit la pixelisation causée par le grossissement.

La dernière version disponible de cette version fonctionne à la fois avec Java-8 et Java-11.

Le développement de cette application découle de la nécessité de chiffrer les fichiers en utilisant une méthode personnalisée.

L'application permet un cryptage facile des fichiers, en utilisant des méthodes de cryptage / déchiffrement qui rendent les attaques par force brute moins difficiles et convient au cryptage de petits fichiers.

Il y a unemanuel d'utilisation complet qui explique les détails de l'opération pour les utilisateurs et l'utilisation de l'application interne.

Cette version d'application a été créée en réponse à des problèmes causés par la nouvelle version de JRE, qui a affecté l'aspect visuel de l'application originale v1.0. La version 1.1 a été développée pour résoudre ces problèmes.

Le manuel d'utilisation n'a pas changé avec cette version et reste le même que le manuel d'utilisation de la version précédente.

Quelques modifications ont été apportées à cette version :

A spécifiqueManuel d'utilisation de cette version existe qui explique tous les détails.

Il y a eu plusieurs changements dans cette version :

Il y a unespécifiques manuel d'utilisation de cette version qui explique tous les détails.

Cette version a été développée pour corriger un bug qui s'est produit lors de l'interaction avec une nouvelle fonctionnalité Java-9 traitant des écrans à haute densité de pixels.

Le soutien de Maven est également inclus.

Il y a unespécifiques manuel d'utilisation de cette version qui explique tous les détails.

L'objectif de cette version est d'ajouter la nouvelle requête de version pour obtenir des commentaires sur le nombre de personnes qui utilisent l'application.

L'option mode sombre a également été ajoutée.

Il y a unespécifiques manuel d'utilisation de cette version qui fournit des explications détaillées.

Esta es la primera versin de una pequea aplicacin en Java que permita a sincronizar subttulos aplicando un factor temporal a los ficheros de subttulos de tipo (.srt).

L'application détecte automatiquement le jeu de caractères du fichier de sous-titres. Elle vous permet de choisir un jeu de caractères pour générer le fichier de sortie, ou d'utiliser le code détecté pendant la lecture.

Quelques éléments ont été ajoutés dans cette version :

Cela permet de synchroniser parfaitement la vidéo et les sous-titres en connaissant au préalable les valeurs de retard et de facteur.

Cette application d'interface de commande, écrite en C++, permet l'application d'un facteur temps aux fichiers audio.

Cette opération signifie que les fichiers audio d'entrée et de sortie auront des longueurs et des tailles différentes.

Le processus consiste à interpoler les signaux numériques pour créer la transformation.

Il y a uneguide détaillé pour faire fonctionner l'application et comprendre ses mécanismes internes.

Application développée en Java qui vous permet de vous connecter à Google Drive et d'accéder à une feuille de calcul.

Après cela, l'application remplit un JTable avec les données et vous permet de le filtrer.

Il y a unemanuel complet en espagnol, qui explique comment configurer l'application étape par étape.

Le Chess PDF Browser est une application programmée en Java qui vous permet de parcourir les livres d'échecs au format PDF.

Il permet également de travailler avec des fichiers de jeu au format.pgn.

Voir un échiquier où vous pouvez naviguer à travers différents jeux.

Vous permet d'ouvrir des livres d'échecs PDF et d'extraire des jeux à enregistrer au format.pgn.

Vous permet d'éditer les variantes des jeux stockés en mémoire, qu'elles soient lues à partir de.pgn, extraites d'un PDF, ou créées directement en déplaçant les pièces sur le plateau.

Il y a unemanuel complet qui détaille le fonctionnement de l'application.

Plusieurs bugs ont été corrigés, et de nouvelles fonctionnalités ont été ajoutées dans la dernière version de l'application :

Il y a uneguide complet qui explique le fonctionnement de l'application.

Les guides de l'utilisateur ont été mis à jour avec la nouvelle version de l'application.

Il y a uneguide complet qui explique le fonctionnement de l'application.

Avec la dernière version de l'application, de nombreuses nouvelles fonctionnalités ont été ajoutées:

Il y a uneguide complet qui explique le fonctionnement de l'application.

La nouvelle version de l'application peut maintenant extraire des mouvements de jeu à partir de PDF en utilisant la notation algébrique de figurines.

Quoi de neuf dans cette version :


Il y a uneguide complet qui explique le fonctionnement de l'application.


Vous pouvez voir une vidéo de la nouvelle fonctionnalité Vidéo de démonstration

ChessPdfBrowser plugin d'application

Présentation d'une application d'interface de commande qui vous permet d'extraire des jeuxjeux à partir de livres d'échecs PDF et les enregistrer au format.pgn.

L'application accepte différents paramètres, vous permettant de:


Il existe des scripts de base pour différents environnements qui exécutent l'appel Java et transmettent les paramètres à l'application :

Mise à jour de la version en ligne de ChessPdfBrowser

Un script bash a été ajouté pour simplifier le traitement de tous les PDF dans un répertoire.

Actuellement, la version en ligne est incapable de traiter les PDF en notation algébrique de figurines, mais elle a été mise à jour pour inclure la nouvelle fonctionnalité de l'application.

TextCrypt est une petite application Java qui vous permet de chiffrer et de déchiffrer du texte brut.

Le texte est toujours crypté et jamais enregistré en clair sur le disque dur.

L'application peut créer un fichier crypté qui est compatible avec l'application Java File Encoder en changeant simplement l'extension de fichier au format approprié.

Cette mise à jour corrige plusieurs bogues de la version précédente.

Cette mise à jour corrige plusieurs bogues de la version précédente.

Cette version inclut plusieurs nouvelles fonctionnalités :

Cette version de l'application vise à empêcher un bogue résultant d'une interaction avec une nouvelle fonctionnalité Java-9, qui gère automatiquement les écrans à haute densité de pixels (dpi).

De plus, le support de Maven a été ajouté.

Une nouvelle version de requête a été ajoutée dans cette mise à jour de l'application.

L'option mode sombre a été ajoutée.


Ce chiffreur de texte a des caractéristiques supplémentaires souhaitables:

Instrumental music est une petite application programmée en Java qui vous permet d'écouter de la musique à partir d'un microphone.

Il vous permet également de traiter l'entrée capturée et de déterminer la note prédominante en temps réel.

Testez l'application en sifflant des notes, puis en le configurant pour jouer la note détectée en MIDI.

Cette application permet un divertissement simple.

La version des bibliothèques de la plateforme a été mise à jour dans cette version :

Vous pouvez maintenant définir le seuil d'amplitude pour la détection d'une note.

Cette version de l'application résulte du temps libre supplémentaire que j'ai eu en raison de l'interdiction d'entrer dans les bars et restaurants en Catalogne sans certificat COVID pendant Noël 2021.

La nouvelle fonctionnalité la plus notable est de changer la hauteur de la voix de bas en haut à l'aide d'un curseur.

Vidéo de démonstration

Ce module inclut les bibliothèques avec les classes présentées dans toutes les applications que j'ai développées.

Ils sont organisés en deux sous-bibliothèques :

La libGeneric inclut des classes qui ne dépendent pas de l'environnement et qui, en théorie, peuvent être utilisées dans des applications sous n'importe quel environnement, y compris Android.


Le libGenericDesktop inclut des classes plus dépendantes d'un swing (environnement Java de bureau standard). Il comprend :

Ce module compromet les bibliothèques avec des classes figurant dans toutes les applications que j'ai développées.

En ce qui concerne la version précédente, le texte suivant a été ajouté:

Ce module inclut les bibliothèques avec les classes présentées dans toutes les applications que j'ai développées.

Par rapport à la version précédente, les ajouts suivants ont été effectués:

Ce module contient les bibliothèques avec les classes utilisées dans toutes mes applications.

Cette nouvelle version propose :

Ce module contient les bibliothèques avec les classes utilisées dans toutes les applications que j'ai développées.

Cette nouvelle version propose :

De nouvelles bibliothèques externes ont été incluses pour faciliter la compilation et séparées en deux groupes en fonction de leurs licences (lgpl et gpl):


Fonctionnalités de la bibliothèque

Cette application vous permet de créer des icônes en redimensionnant une image d'entrée à différentes tailles d'icônes Windows standard:

Il vous permet également de redimensionner l'image d'entrée à une taille personnalisable, qui peut être différente des tailles précédentes.

Vous avez la possibilité de transformer une couleur spécifique en une autre couleur pendant le processus de redimensionnement. Par exemple, cela peut être utilisé pour changer la couleur d'arrière-plan, qui peut être transparente, en blanc.

Vous pouvez également l'utiliser pour ajuster la composante alpha (transparence) des pixels restants.

Nouvelle option en mode sombre

Cette application vous permet d'ouvrir des livres PDF et d'afficher leurs images et leur texte.

C'est un exemple simple montrant les capacités de la bibliothèque pdfbox.

Nouvelle option en mode sombre

L'application présente un Donut tridimensionnel, permettant des rotations sur les deux axes.


C'est un exemple simple de ce qui peut être réalisé avec les bibliothèques de plate-forme.


Capacités de la bibliothèque

Cette application est un lecteur de musique.

Il fonctionne avec les listes de lecture.m3u, qui peuvent être créées en faisant glisser et en déposant des fichiers musicaux à partir de l'explorateur de fichiers.


Vidéo de démonstration

L'inspiration pour cette application est née il y a longtemps.

Ma fascination pour le codage a commencé dans ma jeunesse lorsque j’ai aimé regarder des démonstrations présentées par diverses équipes de codage lors de compétitions dans le monde entier.

Les effets présentés dans ces démonstrations étaient particulièrement impressionnants, surtout compte tenu des capacités limitées des ordinateurs à l'époque.

Je me souviens d'avoir été captivé par une démonstration d'un groupe espagnol qui présentait un effet de morphing:Au cours de la démonstration, les composants ont subi une série de transformations, aboutissant à la transformation du composant final en iguane (lié à leur groupe appelé "Iguane").

C'était un effet impressionnant.

J'ai réfléchi à la façon de recréer cet effet au fil des ans. Maintenant, je présente cette application comme la solution que je propose.

Il y a uneguide de l'utilisateur qui explique en détail le fonctionnement de l'application.

Vidéo de démonstration :

Vidéo créée avec l'application

Je suis maintenant intéressé à intégrer des éléments d'IA dans mon projet personnel après avoir terminé une maîtrise en intelligence artificielle.

Cette fois, il y aura une bibliothèque pour détecter les visages plus âgés.


Avec cette nouvelle version, nous avons cherché à simplifier la tâche de l'utilisateur en ajoutant des outils pour créer des grilles plus facilement.

Plus précisément, il comprend une bibliothèque qui détecte les visages dans les images à l'aide de repères de visage dlib-68, ce qui fournit 68 sommets pour chaque visage détecté.


Grâce à ces nouvelles informations, l’application permet désormais :


Cette amélioration vous permet de créer des projets Morphing plus efficacement.

Par exemple, vous pouvez créer un effet intéressant en utilisant quatre photos en moins de 20 minutes, alors qu'avec la version précédente,Cela aurait pu vous prendre au moins deux heures.


Il y a uneguide de l'utilisateurde usuarioqui explique en détail comment utiliser l'application.

Vidéo de démonstration

Vidéo créée avec l'application

L'application met en oeuvre un algorithme fractal image compression décrit dans un article de l'IEEE de mon temps universitaire. Il est basé sur la triangulation de Delaunay et le codage par blocs.

J'ai collaboré avec un camarade de classe universitaire pour développer la version initiale de cet algorithme lors d'un stage pour le dernier cours de Teleco Television (plan 64 de Barcelone).

Internet en était encore à ses débuts, et tout progrès reposait presque entièrement sur des efforts individuels et des documents physiques.

Je me souviens que nous avons développé une assez bonne triangulation Delaunay et mis en œuvre avec succès l’approche split and merge. Cela impliquait de calculer les triangles les plus représentatifs et de trouver les cartographies optimales pendant le processus de codage. Cependant, malgré trois mois de développement intensif, nous n’avons jamais terminé l'application.

Maintenant, 25 ans plus tard, je vous présente cette nouvelle implémentation de l’algorithme, entièrement développée et complétée en un temps record de deux semaines.

Évidemment, quelque chose sera amélioré 25 ans plus tard. De plus, cette fois-ci, avec un support de fonction supplémentaire pour gérer les triangles, que j'avais déjà programmés pour l'application d'effet Morphing.

Cette fois en utilisant une bibliothèque de triangulation Delaunay programmée par des professionnels.

Il est évident que lorsque vous n'avez pas à faire les briques vous-même, plus vite vous pouvez construire les murs...


Vidéo de démonstration

L'application, également écrite en Java, a été introduite lors de la présentation de la thèse de maîtrise en intelligence artificielle (2022/2023).

Le modèle PowerPoint que nous avons reçu avait un thème orange, reflétant les couleurs de l'école de l'Université VIU.

Il semble être une bonne idée de créer des images qui correspondent à cette gamme de couleurs. Je propose de créer une application en ligne de commande pour copier des images basées sur la teinte de couleur.

La bibliothèque "Apache Commons CLI" est utilisée pour analyser les paramètres d'entrée de la ligne de commande, fournissant une nouvelle capacité.

L'option slf4j logback est également une nouvelle fonctionnalité.

L'application colorBall a été créée comme une forme de divertissement entre les projets. Elle a été développée après avoir terminé la version v1.1 de l'éditeur Morphing et avant de commencer à travailler sur la nouvelle version de l'application d'échecs.

Le logiciel utilise Painter pour programmer l'imageJPanel. Cela vous permet de peindre sur l'image affichée. Il utilise également KeyColorImage, qui vous permet de colorer des pixels avec une teinte sélectionnée à l'aide de JColorChooser.

De cette façon, l'application superpose une boule de taille sélectionnable, subtilement colorée avec la teinte choisie, au-dessus de l'image affichée.


Le JColorChooser a été intégré dans les bibliothèques via l'application, ce qui le rend disponible pour toutes les applications:

Vidéo de démonstration

Les calculatrices racines polynomiales sont un aliment de base dans le domaine des carrières en informatique.

J'apporte ma version de la solution au problème.

Ce n'est pas une solution très efficace puisque la complexité de calcul dans le pire des cas est O(G2), où G représente le degré polynomial

Cependant, je pense qu'il obtient le travail fait efficacement


L'algorithme est basé sur le calcul des racines d'un polynôme, en supposant que les racines de sa fonction dérivée sont connues.

Dans cette hypothèse, il est simple de calculer les racines, car nous pouvons déterminer la limite de la plage des racines.(Voir:Propriétés des racines polynomiales)

De cette façon, nous pouvons déterminer la plage de chaque racine potentielle en utilisant les racines de la fonction dérivée, et nous pouvons calculer les zéros en appliquant le théorème de Bolzano.

Mais... nous avons besoin de la fonction pour calculer les racines de la fonction dérivée!

Aucun problème. Nous utilisons la récursion pour calculer les racines d'un polynôme. La fonction récursive a un cas de terminaison pour le scénario d'un polynôme de degré zéro (une constante), que nous supposons n'a pas de racines.

Puisque la fonction dérivée a un degré de moins que le polynôme d'origine, en utilisant la récursion, nous pouvons calculer les racines d'un polynôme à zéro degré, ce qui en fait un problème simple à résoudre.


Cette façon de procéder peut nécessiter de la précision dans nos calculs, mais ce n'est pas un problème si nous utilisons la classe Java BigDecimal.

Application de bureau Java combinée (impression QR) et Android (lecture QR)

C'est le résultat de la copie et du collage d'informations à partir d'Internet qui explique la fonctionnalité de la bibliothèque Zxing pour le traitement du code QR.

Il existe également une application en ligne de commande où vous pouvez créer des images QR.

Cette application est née d'une volonté d'intégrer des capacités avancées d'IA, telles que:


Avec elle, vous pouvez converser avec un A.I. génératif: Llama3.

Parler dans le microphone (la reconnaissance vocale n'est pas parfaite, mais elle reconnaît certaines parties)

Modifier le texte à envoyer à l'I.A., et l'envoyer

Voir la réponse de l'IA en temps réel et l'écouter par l'intermédiaire de l'orateur

Vidéo de démonstration

Profitant des classes programmées pour l'application ChessPdfBrowser, qui est une application qui scanne et extrait les jeux d'échecs à partir de PDF, j'ai créé une version bêta de la bibliothèque pour extraire du texte à partir de PDF, y compris des éléments tabulaires.

La bibliothèque scanne les pages spécifiées et extrait leur texte. Lors de l'extraction du texte, elle recherche des motifs tabulaires et les extrait dans un format de tableau rectangulaire

J'espère que cela sera utile à quelqu'un

Le générateur de super pojo est né de la nécessité d'unifier différentes versions de modèles de pojo, afin d'essayer d'offrir une logique commune à toutes les versions.

Vous pouvez voir plus de détails sur l'application et la bibliothèque associée dans leprojet superpojo-model sur github