Fran Rojas pagina web personale


APPLICAZIONI

QUESTA PAGINA HA BISOGNO DI JAVASCRIPT ALLA FUNZIONE

Multiprecision calculator


v1.0.2



v1.1



v1.2


Effetto lente


v1.1


v1.2


v1.3


Encoder (Java File Encoder)


v1.0


v1.1


v1.2


v1.3



v1.4



v1.5


Sincronizzazione sottotitoli


v1.0


v1.1


Sincronizzazione audio


v0.5


Filtraggio di Google Sheets


v0.5


Chess PDF Browser

( ChessPdfBrowser sito web )

v1.0



v1.1



v1.11



v1.20



v1.26


pdf2pgn


v1.20


v1.26


Crittografia del testo TextCrypt


v1.0


v1.0.2


v1.3


v1.4



v1.5



v1.6


Instrumental Music


v1.0



v1.1



v1.2


Librerie di piattaforme


v1.0



v1.1



v1.2



v1.3



v1.4


Icone


v1.0


PDF Inspector


v1.0


Donut


v1.0


Lettore musicale


v1.0


Morphing Editor


v1.0



v1.1


Fractal Image Compression


v1.0


Copiare le immagini in base al colore


v1.0



Palla di colore


v1.0



Radici di polinomi


v1.0



Lavorare con i codici QR


v1.0



Chiacchierare con A.I.


v1.0



Libreria Java per estrarre tabelle da PDF


v1.0





Questa è una delle mie prime grandi applicazioni programmate in Java.

Per questa applicazione, ho creato una libreria che ha eseguito calcoli di precisione configurabili utilizzando BigDecimal.In particolare, la libreria implementa le principali funzioni matematiche accettando il tipo di numeri BigDecimal e la precisione desiderata.

L'applicazione finale visualizza una casella di testo in cui è possibile immettere le operazioni che si desidera calcolare.È inoltre possibile memorizzare funzioni e variabili.

L'interfaccia utente è rudimentale e ha alcuni bug che lo rendono un po 'noioso per utilizzare l'applicazione.Ho intenzione di progettare una nuova versione sperando che migliorerà questo difetto.

L'applicazione funziona internamente analizzando l'operazione immessa dall'utente e memorizzandola in memoria sotto forma di albero.In questo modo, è possibile memorizzare le formule poiché è possibile salvare l'albero in funzione di una o più variabili.Dopo aver ottenuto l'albero dell'operazione, il risultato viene rivalutato e dopo il completamento viene visualizzato il risultato totale.

Si tratta di una nuova versione del calcolatore multi-precisione.

Obiettivi:

Il motivo principale di questa nuova versione è quello di implementare una derivazione algebrica.

L'idea di questa capacità è nata nel liceo quando uno degli insegnanti ha suggerito che la classe partecipasse al concorso annuale di software presentando un'applicazione che potesse derivare.

A quel tempo, non abbiamo fatto molti progressi sul progetto, ma quasi 30 anni dopo, è finalmente arrivata un'applicazione che può derivare :-).


AEsiste un manuale completo Questo spiega come funziona l’applicazione.

Nuova versione del calcolatore multi-precisione.

Obiettivi:


AEsiste un manuale completo Questo spiega come funziona l’applicazione.

Il piccolo effetto della lente di applicazione è stato il sottoprodotto di una pausa primaverile senza piani.

A quel tempo, stavo finendo di programmare la prima versione dell'encoder (File Encoder Application), e avevo bisogno di qualcosa di accattivante per la About...

L'idea originale non è mia, ma l'ho implementata sulla base di un effetto che avevo visto in una di quelle iconiche demo DOS.

Ho deciso di incapsulare l'effetto all'interno di un Java Swing JPanel per il mio progetto.

Tutto all'interno del pannello può essere ingrandito utilizzando una lente di ingrandimento posizionata alle coordinate scelte.

È stato particolarmente difficile garantire che il raffreddamento dei componenti del testo, specialmente quando si modifica la posizione del testo selezionato, non influenzasse negativamente l'aspetto visivo.

Quando si crea il LensJPanel, il contenuto del JPanel viene applicato all'elemento che subirà l'effetto di ingrandimento. È possibile specificare il raggio della lente di ingrandimento e se ingrandirà o diminuirà il contenuto.

Quando si ha il raggio e si determina se la lente di ingrandimento ingrandirà o restringerà il contenuto, viene creata una matrice quadrata bidimensionale con un elemento per ogni pixel quadrato contenente la lente di ingrandimento.
L'algoritmo calcola le coordinate del pixel sorgente corrispondente nell'immagine originale per ogni pixel di destinazione per determinare il colore quando si applica la trasformazione.
La trasformazione comporta una semplice trasformazione delle coordinate polari, motivo per cui viene utilizzata una lente di ingrandimento:
Un pixel viene calcolato da una posizione specifica del telaio dell'obiettivo e viene utilizzato per determinare il colore quando viene applicata la trasformazione.Il pixel sarà anche all'interno della cornice dell'obiettivo.Inoltre, viene calcolato il raggio dal centro dell'obiettivo all'angolo per un determinato pixel.Il pixel "origine" per il pixel che stiamo calcolando sarà alla stessa angolazione, ma il raggio cambierà.Il raggio va dallo 0% al 100% per i pixel “target” e “source”, con il 100% che rappresenta la lunghezza del raggio dell’obiettivo.Il pixel di origine viene calcolato per ogni pixel di destinazione mantenendo il suo angolo e trasformando il raggio utilizzando una funzione con una derivata monotonamente crescente. Questa trasformazione si verifica nell'intervallo tra 0 e 1, dove f(0) è uguale a 0 e f(1) è uguale 1. Qui, 0 rappresenta lo 0% del raggio dell'obiettivo e 1 rappresenta il 100% del raggio dell'obiettivo.Ciò significa che i raggi prenderanno il loro pixel sorgente da un raggio più piccolo, che espanderà il cerchio dell'obiettivo.Al di fuori del cerchio dell'obiettivo, la trasformazione sarà l'identità, il che significa che il pixel di origine non cambierà.


La spiegazione è un po 'confuso, ma se siete interessati a saperne di più sull'argomento, non esitate a contattarmi.

Spero che qualcuno lo trovi utile :-).

La nuova versione dell'applicazione presenta una finestra grafica circolare con un obiettivo mobile che può essere controllato facendo clic e trascinando con il mouse.
È possibile uscire dall'applicazione premendo ESC.

Un paio di problemi sono evidenti:

La nuova versione dell'applicazione risolve un bug di trasparenza che si è verificato sui sistemi operativi Mac e Linux.

L'ultima versione risolve anche il problema di pixelazione trovato nelle versioni precedenti.

Ciò si ottiene applicando un filtro di levigatura gaussiano all'immagine dell'obiettivo, creando un effetto sfocato che riduce la pixelazione causata dall'ingrandimento.

L'ultima versione disponibile di questa versione funziona sia con Java-8 che con Java-11.

Lo sviluppo di questa applicazione derivava dalla necessità di crittografare i file utilizzando un metodo personalizzato.

L'applicazione consente una facile crittografia dei file, utilizzando metodi di crittografia / decrittografia che rendono gli attacchi di forza bruta meno difficili ed è adatto per la crittografia di piccoli file.

C'è unManuale utente completo che spiega i dettagli dell'operazione sia per gli utenti che per l'uso interno dell'applicazione.

Questa versione dell'applicazione è stata creata in risposta ai problemi causati dalla nuova versione JRE, che ha interessato l'aspetto visivo dell'applicazione originale v1.0. La versione 1.1 è stata sviluppata per risolvere questi problemi.

Il manuale utente non è cambiato con questa versione e rimane lo stesso del manuale utente della versione precedente.

Un paio di modifiche sono state apportate in questa versione:

Una specificamanuale utente di questa versione esiste che spiega tutti i dettagli.

Ci sono stati diversi cambiamenti in questa versione:

C'è unspecifico manuale utente per questa versione che spiega tutti i dettagli.

Questa versione è stata sviluppata per correggere un bug che si è verificato durante l'interazione con una nuova funzionalità Java-9 che si occupa di schermi ad alta densità di pixel.

È incluso anche il supporto di Maven.

C'è unspecifico manuale utente per questa versione che spiega tutti i dettagli.

L'obiettivo di questa versione è quello di aggiungere la nuova query di versione per ottenere un feedback su quante persone utilizzano l'applicazione.

È stata aggiunta anche l'opzione modalità scura.

C'è unspecifico manuale utente per questa versione che fornisce spiegazioni dettagliate.

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

L'applicazione rileva automaticamente il set di caratteri del file di sottotitoli. Consente di scegliere un set di caratteri per generare il file di output o utilizzare il codice rilevato durante la lettura.

Alcuni elementi sono stati aggiunti in questa versione:

Ciò consente di sincronizzare perfettamente il video e i sottotitoli conoscendo in anticipo i valori di ritardo e fattore.

Questa applicazione di interfaccia di comando, scritta in C++, consente l'applicazione di un fattore di tempo ai file audio.

Questa operazione significa che i file audio in ingresso e in uscita avranno lunghezze e dimensioni diverse.

Il processo prevede l'interpolazione dei segnali digitali per creare la trasformazione.

C'è unGuida dettagliata per far funzionare l’applicazione e comprenderne i meccanismi interni.

Applicazione sviluppata in Java che consente di connettersi a Google Drive e accedere a un foglio di calcolo.

Dopo questo, l'applicazione popola un JTable con i dati e consente di filtrarlo.

C'è unManuale completo in spagnolo, che spiega come configurare l'applicazione passo dopo passo.

Il Chess PDF Browser è un'applicazione programmata in Java che consente di sfogliare i libri di scacchi in formato PDF.

Consente inoltre di lavorare con i file di gioco in formato.pgn.

Visualizza una scacchiera dove è possibile sfogliare diversi giochi.

Consente di aprire libri di scacchi PDF ed estrarre i giochi da salvare in formato.pgn.

Consente di modificare le varianti dei giochi memorizzati in memoria, siano esse lette da.pgn, estratte da un PDF o create direttamente spostando i pezzi sulla scheda.

C'è unManuale completo che descrive in dettaglio come funziona l'applicazione.

Sono stati corretti diversi bug e sono state aggiunte nuove funzionalità nell'ultima versione dell'applicazione:

C'è unGuida completa Questo spiega come funziona l’applicazione.

Le guide utente sono state aggiornate con la nuova versione dell'applicazione.

C'è unGuida completa Questo spiega come funziona l’applicazione.

Con l'ultima versione dell'applicazione, sono state aggiunte numerose nuove funzionalità:

C'è unGuida completa Questo spiega come funziona l’applicazione.

La nuova versione dell'applicazione può ora estrarre le mosse di gioco dai PDF utilizzando la notazione algebrica delle figurine.

Cosa c'è di nuovo in questa versione:


C'è unGuida completa Questo spiega come funziona l’applicazione.


Puoi vedere un video della nuova funzione Demo video

ChessPdfBrowser plugin per applicazioni

Introduzione di un'applicazione di interfaccia di comando che consente di estrarre i giochigiochi da libri di scacchi PDF e salvarli in formato.pgn.

L'applicazione accetta diversi parametri, consentendo di:


Esistono script di base per diversi ambienti che eseguono la chiamata Java e passano i parametri all'applicazione:

Aggiornamento alla versione online di ChessPdfBrowser

È stato aggiunto uno script bash per semplificare l'elaborazione di tutti i PDF in una directory.

Attualmente, la versione online non è in grado di elaborare PDF in notazione algebrica figurina, ma è stato aggiornato per includere le nuove funzionalità dell'applicazione.

TextCrypt è una piccola applicazione Java che consente di crittografare e decrittografare il testo normale.

Il testo è sempre criptato e non viene mai salvato non crittografato sul disco rigido.

L'applicazione può creare un file crittografato compatibile con l'applicazione Java File Encoder semplicemente cambiando l'estensione del file nel formato appropriato.

Questo aggiornamento risolve diversi bug della versione precedente.

Questo aggiornamento risolve diversi bug della versione precedente.

Questa versione include diverse nuove funzionalità:

Questa versione dell'applicazione mira a prevenire un bug che è risultato dall'interazione con una nuova funzionalità Java-9, che gestisce automaticamente schermi ad alta densità di pixel (dpi).

Inoltre, è stato aggiunto il supporto per Maven.

È stata aggiunta una nuova versione di query in questo aggiornamento dell'applicazione.

È stata aggiunta l'opzione Modalità scura.


Questo codificatore di testo ha ulteriori caratteristiche desiderabili:

Instrumental music è una piccola applicazione programmata in Java che permette di ascoltare musica da un microfono.

Consente inoltre di elaborare l'input catturato e determinare la nota predominante in tempo reale.

Testare l'applicazione fischiando le note e quindi impostandola per riprodurre la nota rilevata in MIDI.

Questa applicazione rende semplice l'intrattenimento.

La versione delle librerie della piattaforma è stata aggiornata in questa versione:

Ora è anche possibile impostare la soglia di ampiezza per rilevare una nota.

Questa versione dell'applicazione deriva dal tempo libero extra che ho avuto a causa del divieto di entrare in bar e ristoranti in Catalogna senza un certificato COVID durante il Natale del 2021.

La nuova caratteristica più notevole è cambiare il tono della voce da inferiore a superiore utilizzando un cursore.

Demo video

Questo modulo include le librerie con classi presenti in tutte le applicazioni che ho sviluppato.

Sono organizzati in due sottobiblioteche:

Il libGeneric include classi che non dipendono dall'ambiente e che, in teoria, possono essere utilizzate in applicazioni in qualsiasi ambiente, incluso Android.


Il libGenericDesktop include classi più dipendenti da uno swing (ambiente desktop standard Java). Include:

Questo modulo compromette le librerie con classi presenti in tutte le applicazioni che ho sviluppato.

Per quanto riguarda la versione precedente, è stato aggiunto quanto segue:

Questo modulo include le librerie con classi presenti in tutte le applicazioni che ho sviluppato.

Rispetto alla versione precedente, sono state apportate le seguenti aggiunte:

Questo modulo contiene le librerie con le classi utilizzate in tutte le mie applicazioni.

Questa nuova versione presenta:

Questo modulo contiene le librerie con le classi utilizzate in tutte le applicazioni che ho sviluppato.

Questa nuova versione presenta:

Nuove librerie esterne sono state incluse per la facilità di compilazione e separate in due gruppi in base alle loro licenze (lgpl e gpl):


Caratteristiche della libreria

Questa applicazione permette di creare icone ridimensionando un'immagine di input a varie dimensioni delle icone di Windows standard:

Consente inoltre di ridimensionare l'immagine in ingresso a una dimensione personalizzabile, che può essere diversa dalle dimensioni precedenti.

Hai la possibilità di trasformare un colore specifico in un altro colore durante il processo di ridimensionamento. Ad esempio, questo può essere utilizzato per cambiare il colore di sfondo, che potrebbe essere trasparente, in bianco.

Puoi anche usarlo per regolare il componente alfa (trasparenza) dei pixel rimanenti.

Nuova opzione modalità scura

Questa applicazione consente di aprire libri PDF e visualizzare le loro immagini e testo.

Si tratta di un semplice esempio che mostra le capacità della libreria pdfbox.

Nuova opzione modalità scura

L'applicazione presenta un tridimensionale Donut, consentendo rotazioni su entrambi gli assi.


È un semplice esempio di ciò che può essere raggiunto con le librerie di piattaforme.


Capacità di libreria

Questa applicazione è un lettore musicale.

Funziona con playlist.m3u, che possono essere create trascinando e rilasciando file musicali dall'esploratore di file.


Demo video

L'ispirazione per questa applicazione è nata molto tempo fa.

La mia passione per il coding è iniziata durante la mia giovinezza quando mi sono divertito a guardare le dimostrazioni presentate da vari team di coding nelle competizioni di tutto il mondo.

Gli effetti mostrati in queste dimostrazioni sono stati particolarmente impressionanti, soprattutto considerando le limitate capacità dei computer in quel momento.

Ricordo di essere stato affascinato da una dimostrazione di un gruppo spagnolo che ha mostrato un effetto morphing:Durante la dimostrazione, i componenti subirono una serie di trasformazioni, culminando nella trasformazione della componente finale in un iguana (questo legato al loro gruppo è chiamato "Iguana").

E' stato un effetto impressionante.

Ho riflettuto su come ricreare questo effetto nel corso degli anni. Ora, sto introducendo questa applicazione come soluzione che propongo.

C'è unguida utente che spiega in dettaglio come funziona l'applicazione.

Video dimostrativo:

Video creato con l'applicazione

Ora sono interessato a integrare gli elementi AI nel mio progetto personale dopo aver completato un master in Intelligenza Artificiale.

Questa volta, ci sarà una libreria per rilevare i volti più vecchi.


Con questa nuova versione, abbiamo mirato a semplificare il compito dell'utente aggiungendo strumenti per la creazione di griglie più facilmente.

In particolare, include una libreria che rileva i volti nelle immagini utilizzando i punti di riferimento del volto dlib-68, che fornisce 68 vertici per ogni volto rilevato.


Con queste nuove informazioni, l'applicazione ora consente:


Questo miglioramento consente di creare progetti Morphing in modo più efficiente.

Ad esempio, è possibile creare un effetto interessante utilizzando quattro foto in meno di 20 minuti, mentre con la versione precedente,Potrebbe aver impiegato almeno due ore.


C'è unguida utentede usuarioche spiega in dettaglio come utilizzare l'applicazione.

Video dimostrativo

Video creato con l'applicazione

L'applicazione implementa un algoritmo fractal image compression descritto in un documento IEEE dai miei giorni universitari. Si basa sulla triangolazione Delaunay e sulla codifica a blocchi.

Ho collaborato con un compagno di classe universitario per sviluppare la versione iniziale di questo algoritmo durante uno stage per l'ultimo corso di Teleco Television (piano 64 di Barcellona).

Internet era ancora nelle sue fasi iniziali, e qualsiasi progresso si basava quasi interamente sugli sforzi individuali e sui documenti fisici.

Ricordo che abbiamo sviluppato una triangolazione Delaunay abbastanza buona e implementato con successo l'approccio split and merge. Ciò ha comportato il calcolo dei triangoli più rappresentativi e la ricerca delle mappe ottimali durante il processo di codifica. Tuttavia, nonostante tre mesi di sviluppo intensivo, non abbiamo mai completato l'applicazione.

Ora, 25 anni dopo, vi presento questa nuova implementazione dell’algoritmo, completamente sviluppata e completata in un tempo record di due settimane.

Ovviamente, qualcosa sarà migliorato 25 anni dopo. Inoltre, questa volta con il supporto funzione aggiunto per gestire i triangoli, che avevo già programmato per l'applicazione effetto Morphing.

Questa volta utilizzando una libreria di triangolazione Delaunay programmata da professionisti.

È evidente che quando non devi fare i mattoni da solo, più velocemente puoi costruire le pareti...


Video dimostrativo

L'applicazione, anch'essa scritta in Java, è stata introdotta durante la presentazione della Tesi del Maestro dell'Intelligenza Artificiale (2022/2023).

Il modello di PowerPoint che abbiamo ricevuto aveva un tema arancione, che riflette i colori della scuola della VIU University.

Sembra una buona idea creare immagini che corrispondano a quella gamma di colori. Propongo di creare un'applicazione a riga di comando per copiare le immagini in base alla tonalità di colore.

La libreria "Apache Commons CLI" viene utilizzata per analizzare i parametri di input per la riga di comando, fornendo una nuova funzionalità.

L'opzione di logback slf4j è anche una nuova funzionalità.

L'applicazione colorBall è stata creata come forma di intrattenimento tra i progetti. È stata sviluppata dopo aver terminato la versione v1.1 del Morphing Editor e prima di iniziare a lavorare sulla nuova versione dell'applicazione scacchistica.

Il software utilizza Painter per programmare il ImageJPanel. Questo consente di dipingere sopra l'immagine visualizzata. Utilizza anche KeyColorImage, che consente di colorare i pixel con una tonalità selezionata utilizzando JColorChoover.

In questo modo, l'app sovrappone una palla di dimensioni selezionabili, sottilmente colorata con la tonalità scelta, in cima all'immagine visualizzata.


Il JColorChooser è stato integrato nelle librerie attraverso l'applicazione, rendendolo disponibile per tutte le applicazioni:

Video dimostrativo

I calcolatori di radici polinomiali sono un punto fermo nel campo delle carriere in informatica.

Contribuisco con la mia versione della soluzione al problema.

Non è una soluzione molto efficiente poiché la complessità computazionale nel peggiore dei casi è O(G2), dove G rappresenta il grado polinomiale.

Tuttavia, penso che si ottiene il lavoro fatto in modo efficace


L'algoritmo si basa sul calcolo delle radici di un polinomio, supponendo che le radici della sua funzione derivata siano note.

In base a questa ipotesi, è semplice calcolare le radici perché possiamo determinare il limite di intervallo delle radici.(Vedi:Proprietà delle radici polinomiali)

In questo modo, possiamo determinare l'intervallo di ogni radice potenziale utilizzando le radici della funzione derivata e possiamo calcolare gli zeri applicando il teorema di Bolzano.

Ma... abbiamo bisogno della funzione per calcolare le radici della funzione derivata!

Nessun problema. Usiamo la ricorsione per calcolare le radici di un polinomio. La funzione ricorsiva ha un caso di terminazione per lo scenario di un polinomio di grado zero (una costante), che riteniamo non abbia radici.

Poiché la funzione derivata ha un grado in meno rispetto al polinomio originale, utilizzando la ricorsione, possiamo calcolare le radici di un polinomio a zero gradi, rendendolo un semplice problema da risolvere.


Questo modo di procedere può richiedere precisione nei nostri calcoli, ma questo non è un problema se usiamo la classe Java BigDecimal.

Applicazione combinata Java desktop (stampa QR) e Android (lettura QR)

Questo è il risultato della copia e incolla delle informazioni da Internet che spiega la funzionalità della libreria Zxing per l'elaborazione del codice QR.

C'è anche un'applicazione a riga di comando in cui è possibile creare immagini QR.

Questa applicazione è nata dal desiderio di integrare funzionalità avanzate di A.I., come ad esempio:


Con esso, puoi conversare con un'IA generativa: Llama3.

Parlando al microfono (il riconoscimento vocale non è perfetto, ma riconosce alcune parti)

Modificare il testo da inviare all'A.I. e inviarlo

Visualizzazione della risposta dell'A.I. in tempo reale e ascolto attraverso l'altoparlante

Video dimostrativo

Approfittando delle classi programmate per l'applicazione ChessPdfBrowser, che è un'applicazione che scansiona ed estrae i giochi di scacchi dai PDF, ho creato una versione beta della libreria per estrarre testo dai PDF, inclusi gli elementi tabulari

La libreria esegue la scansione delle pagine specificate ed estrae il loro testo. Mentre estrae il testo, cerca i modelli tabulari e li estrae in un formato di matrice rettangolare

Spero che questo possa essere utile a qualcuno