TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

La Baionetta Reader #1

Closed ghost closed 7 years ago

ghost commented 7 years ago

Studente proponente

s182412 Fabio Molinaris

Titolo della proposta

La Baionetta Reader

Descrizione del problema proposto

Il progetto fa riferimento, nello specifico, ad un blog (labaionetta.blogspot.it). Ho pensato al blog in quanto essendo io e alcuni amici ad averlo creato, a gestirlo e a crearne il contenuto non vi è alcun problema di licenze e ridistribuzione dei contenuti; e perché vi è una discreta quantità di dati organizzati in modo abbastanza coerente e realistico. Ci si pone il problema di ricevere sull'applicativo desktop tutti gli aggiornamenti e organizzare i dati in modo tale da facilitarne la ricerca, la visualizzazione e la lettura. Il database si aggiornerà quindi con il passare del tempo, e sarà composto principalmente da articoli e autori. Il problema che si andrà a risolvere è quello di organizzare tutte le informazioni e i criteri di ricerca tipici dell’organizzazione di database con alcune caratteristiche tipiche nella gestione di questo tipo di informazione, come per esempio se un articolo è già stato letto o no dall'utente. La parte di ricerca dovrà dare la possibilità di filtrare per autore, data, parola chiave ecc…

Descrizione della rilevanza gestionale del problema

La creazione di applicativi che rendono user-frendly l’interazione con database e criteri di ricerca è parte integrante del lavoro di un gestionale dell’informazione. La necessità di rendere trasparente la creazione e gestione di banche dati è un problema non solo più aziendale ma anche di piccoli gruppi di lavoro come un giornale o un blog.

Descrizione dei data-set per la valutazione

I dati che si andranno a realizzare sono Articoli caratterizzati da Titolo, Tag, Autore, link e data di pubblicazione; gli autori saranno caratterizzati da Nome, Cognome.

Descrizione preliminare degli algoritmi coinvolti

Il database sarà in SQL e richiederà delle query per recuperare e salvare le informazioni. L’applicativo desktop sarà sviluppati in Java. Per la gestione degli RSS sarà necessario recuperare il file XML ed estrapolarne le informazioni. Sarà necessario introdurre algoritmi di ricerca che ricevano in input uno o più dei parametri che caratterizzano l'articolo e restituisca l'elenco di risultati richiesti dall'utente. Sarà necessaria la creazione di un software che controlli gli RSS e aggioni automaticamente il database al quale l'app principale farà le richieste per ovviare il problema che l'RSS restituisce solo gli ultimi 25 articoli. All'avvio dell'applicativo saranno presentati tutti gli articoli con evidenza per i non letti, cliccando su un titolo si aprirà una nuova finestra che presenterà il sito tramite il link recuperato dalle informazioni dell'articolo.

Descrizione preliminare delle funzionalità previste per l’applicazione software

L’utente potrà riconoscere subito gli articoli non ancora letti e leggerli direttamente dentro l'applicazione; potrà ricercare tra tutti gli articoli disponibili, combinando uno o più campi, secondo parole chiave, autore, tag e data di pubblicazione. In ogni momento l'utente potrà navigare tra i titoli presentati a video in ordine decrescente di data di pubblicazione.

fulcorno commented 7 years ago

Alcuni commenti e domande:

ghost commented 7 years ago

Il database avrà tre tabelle e quindi ci saranno tre classi Bean in Java, una "Articolo", una relativa al tag che verrà chiamata "Mostrina" per essere coerente con il blog e una relativa all'autore che sarà "Penna". Articolo è caratterizzato da titolo, Mostrina, Penna, link (che sarà chiave primaria) e data; Mostrina e Penna sono semplici stringhe. Ad ogni articolo corrisponde una penna ed eventualmente una mostrina (ovviamente ad ogni penna e mostrina corrispondono n articoli). Il corpo del testo è volutamente ignorato perché al momento della lettura dell'articolo si apre una nuova finestra utilizzando il WebEngine di JavaFX che caricherà la pagina web al link dell'articolo scelto.

Il recupero dell'RSS non è competenza dell'utente, l'app che avrà l'utente si collega ad un database, il database è mantenuto aggiornato da un app java che gira sullo stesso server remoto in cui vi è il database (o su un altro ma non sulla macchina dell'utente). Per recuperare tutti i dati si userà XMLEventReader e il link fornito da blogger (https://labaionetta.blogspot.com/feeds/posts/default?alt=rss). Quest'operazione dovrà quindi essere fatta in modo automatico e a cadenza prestabilita

Per quanto riguarda l'algoritmo al momento non saprei come rendere utile l'utilizzo di un grafo o altro.

fulcorno commented 7 years ago

Quindi ci sono 2 applicazioni Java. Una che si occupa di aggiornare un database. E l'altra che consente agli utenti di ricercare gli articoli. Non ho capito come fanno queste 2 applicazioni a condividere il database (a meno che non si pensi di metterli sulla stessa macchina, ovviamente).

Riguardo agli algoritmi, si potrebbe pensare di fornire una funzionalità di "articoli correlati", in cui dato un articolo si identificano i 3-5 più simili. Questo si può fare cercando di ottimizzare una funzione di similarità che tenga conto di autori comuni, tag comuni, parole comuni nel titolo (e magari anche nel testo), opportunamente pesati. Se pensi che si possa implementare questo, per me la proposta è completa.

Ultimo suggerimento: perché non considerare anche i commenti ricevuti? mi pare che via RSS si possano ottenere anche i commenti.

ghost commented 7 years ago

Si le applicazioni sono 2. Durante lo sviluppo di questo progetto le applicazioni e il database saranno sulla stessa macchina; se si immagina la distribuzione e l'utilizzo finale, il database e l'app che lo aggiorna saranno su una macchina centrale ed unici, mentre l'applicativo dell'utente sarà moltiplicato per il numero di utenti che lo utilizzano e si dovrà collegare con il database e avere la possibilità di fare solo query di ricerca.

La funzionalità "articoli correlati" mi piace molto; si potrebbe aggiungere un campo all'Articolo in cui si memorizzano le parole chiave generate dall'analisi del titolo e del testo che viene fatta al momento dell'aggiunta al database, e dare la possibilità all'utente tramite un apposito bottone disponibile dopo l'apertura dell'articolo di ricevere un elenco di articoli simili.

I commenti sono recuperabili tramite RSS con un link apposito in cui sono raccolti, non li ho presi in considerazioni in quanto al momento della lettura dell'articolo viene caricata la pagina web corrispondente e sono quindi già disponibili all'interno della pagina ed è possibile leggerli e aggiungerne di nuovi senza preoccupazioni.

fulcorno commented 7 years ago

l'idea dei commenti era per avere un altro elemento su cui calcolare gli articoli correlati, ma è opzionale.

Da parte mia la proposta è accettata, ti ho creato il repository e puoi iniziare a lavorarci.