Domande sul ModuloQuattro

Usate la form in fondo per aggiungere commenti.

Come al solito, spostate le chiacchiere su OffTopic smile




Guida sulla manipolazione di Directories e Files

http://users.actcom.co.il/~choo/lupg/tutorials/handling-files/handling-files.html#directory

Ho trovato questo tutorial sulle funzioni per la manipolazione delle directiories, spero possa essere utile smile

-- Comment added by RiccardoVona on 20 May 2005


EVVAI

Modulo4!!! iniziavano a prudermi le mani per l'inattività... smile
e a prima vista sembra un modulo molto interessante smile

-- Comment added by AlbertoLaRocca on 20 May 2005


Errore di "include" in testModulo4.h

Professore, credo nel file testModulo4.h, dovrebbe essere incluso testModulo1.h?

-- Comment added by MarcoEsposito on 21 May 2005


Dizionario.h

Scusate se chiedo una cosa probabilmente già discussa in aula, ma il dizionario.h può essere rivisto nel modulo4? e quindi riconsegnato...

-- Comment added by AlessandroGrottoli on 21 May 2005


Errore di "include" in testModulo4.h

si il prof si è scordato di mettere l' include "testModulo1.h" o meglio a messo l' include "modulo4.c" invece di quella, comunque basta cambiarla

-- Comment added by TizianoFranchi on 21 May 2005


voce in prossimaChiave()

Nella funzione prossimaChiave() c'è un riferimento ad un argomento voce che però non viene passato

-- Comment added by MassimilianoNatale on 21 May 2005


manipolazione directory

Per la manipolazione delle directory dovrebbero andar bene le system calls opendir() e readdir()

-- Comment added by MassimilianoNatale on 21 May 2005


funzione leggiFiles()

Nella bozza relativa al quarto modulo leggo e non comprendo: "Usate il campo valore delle voci del dizionario per memorizzare il numero di occorrenze totali di ciascun token nei files". Chi mi fa capire il senso di questa specifica?

-- Comment added by MassimilianoNatale on 22 May 2005


funzione leggiFiles()

Si, in pratica vuol dire che devi usare il campo dove memorizzavi il peso del token come contatore di occorrenze. Il fatto che le chiama voci è perchè quando il professore ci ha mostrato a lezione il modulo, originariamente dovevamo modificare la struttura dizionario del modulo 3 aggiungendo un altra struttura dati (voce appunto). Ma di comune accordo, per non modificare il codice del modulo 3 si è deciso di non inserire questa struttura.

-- Comment added by RiccardoVona on 22 May 2005


dizionario.h

volevo sapere se il dizionario per il quarto modulo andava riconsegnato o se per la compilazione usava quello del modulo 3.

-- Comment added by TizianoFranchi on 22 May 2005


calcolaPesoEmail()

nelle specifiche il prof ha scritto che prima di ordinare i tokens bisogna modificare il calcolo del peso del token tenendo conto dell'occorrenze. Ma quindi non bisogna ordinarli come nel modulo 3 ovvero per distanza maggiore da 0.5???

-- Comment added by TizianoFranchi on 22 May 2005


ancora su leggiFiles()

Quindi, se ho ben capito, io inizio a lavorare sui token contenuti nei files utilizzando il campo valore del token per inserirvi il numero di occorrenze del token stesso. Piccola precisazione: il numero di occorrenze o il peso parziale (ossia il prodotto tra il suo peso iniziale con il numero di occorrenze trovate) ? Grazie per la risposta

-- Comment added by MassimilianoNatale on 22 May 2005


RE: Errore di include

Credo che tu abbia ragione, ho aggiornato il file.

-- Comment added by AndreaSterbini on 22 May 2005


test per la funzione leggiFiles()

Per quanto riguarda il test della funzione leggiFiles() (ma di ogni altra funzione in genere che manipola directory) è possibile assumere directory standard (visto che verrano poi testate sul suo pc) ?

-- Comment added by MassimilianoNatale on 23 May 2005


chiarimenti su prossimaChiave()

Ho alcuni dubbi sulla funzione prossimaChiave(). In particolare: avendo implementato il dizionario tramite hash table, per prossima chiave si intende quella che segue la chiave citata su quel particolare bucket? E perchè viene passato un puntatore doppio **next?

-- Comment added by MassimilianoNatale on 24 May 2005


Senza titolo?

CIAO

-- Comment added by AndreaBartoli on 24 May 2005


Senza titolo?

CIAO A TUTTI HO UN PROBLEMA CON LA LIBRERIA SAM153.DDL CHE VA A CERCARE UN FILE DI DEBUGGER CHE PERMETTE LA VISUALIZZAZIONE E LÁVVIO DEL SISTEMA OPERATIVO MEDIANTE UN PROCESSO DI ARCHIAVIAZIONE DEVIATO SU MACCHINE REMOTE. QUESTO NON MI PERMETTE LO SCORRIMENTO DEL BUGGER.DLL PER LA COMPILAZIONE (GCC E MAKE) DEI FILE C C COME POSSO FARE? TUTTI I CONSIGLI SONO ACCETTATI GRAZIE. P.S pER IL NUOVO MODULO E NECESSARIO AVVIARE UN TAVOLA HASH CHE PERMETTE LA MEMORIZZAZIONE E LA LETTURA DELLE PAROLE MEDIANTE UN USO DI PUNTATORI A PUNTATORI NON ALLOCATI DINAMICAMNETE GRAZIE.

-- Comment added by AndreaBartoli on 24 May 2005


RE: chiarimenti su prossimaChiave()

La funzione prossimaChiave serve a enumerare tutte le chiavi contenute nel dizionario.
  • Si inizia passando NULL (e si torna la prima chiave).
  • Si continua passando la chiave appena letta (e ottenendo quella successiva)
  • alla fine si torna il codice NO_MORE_ELEMENTS

La variabile char ** next serve a passare un puntatore ad una variabile stringa e quindi a permettere di comunicare la chiave all'esterno.

-- Comment added by AndreaSterbini on 24 May 2005


prossimaChiave

anche per questa funzione l'ordine con cui vengono rstituite le chiavi non importa??

-- Comment added by TizianoFranchi on 24 May 2005


x AndreaBartoli

togli quel caps lock, è inutile che strilli, ci hai assordati tutti :|
e comunque quello che hai scritto non ha senso :|
almeno dicci come si chiama la DLL (sempre che non ci stai prendendo in giro...)

-- Comment added by AlbertoLaRocca on 24 May 2005


**next ed ordine delle chiavi

Dunque nella funzione prossimaChiave() il puntatore doppio **next deve puntatore a memoria allocata all'interno della funzione? Un assegnamento semplice dà luogo a segmentation fault dunque è da escludere. Per quanto riguarda l'ordine delle chiavi, volendo scrivere dei test concreti, essi saranno validi soltanto per quel dato programma. Esempio: il programma del professore compilato con i miei test non ne passerebbe nemmeno uno (a meno che, cosa poco probabile, il prof. non abbia utilizzato la mia stessa identica soluzione)

-- Comment added by MassimilianoNatale on 24 May 2005


[OT, perdonatemelo] prenotazione all'esonero di Arch II

prof. Sterbini, la prego di notare che un certo Marco Guerra (credo che il nome sia inventato) cerca continuamente di cancellare la mia prenotazione agli esoneri di Architetture II scrivendo il suo nome al posto del mio: l'ha fatto anche nella pagina di prenotazioni del primo esonero (guardi "See diffs"); la prima volta che ho visto la sostituzione ho riscritto il mio nome e aggiunto il suo in fondo; poi lui ha ricancellato il mio, e allora io l'ho riscritto aggiungendoci anche un DENYTOPICCHANGE settato sul suo nome; ora ha di nuovo sostituito la mia prenotazione alla pagina del secondo esonero, e siccome mi sto stancando de sti giochetti cretini, tenga presente per favore che io mi sono prenotato anche se poi mi hanno cancellato (temo che Marco Guerra, o chiunque sia, riproverà a cancellarmi con un altro account se dovessi riscrivere il DENYTOPICCHANGE). grazie smile

-- Comment added by AlbertoLaRocca on 24 May 2005


[Post cancellato]

-- Comment added by AndreaBartoli on 25 May 2005

Ho cancellato il post perchè offensivo

-- Comment added by AndreaSterbini on 25 May 2005


X Massimiliano riguardo a **next

Beh, next è una stringa, quindi un puntatore a carattere (ossia un char *). Il secondo puntatore serve a far si che le eventuali modifiche vengano "salvate", ossia non vengano perse all'uscita dalla funzione "prossimaChiave". Ovviamente, però, essendo una stringa, se tu non le allochi della memoria, quando nella funzione prossimaChiave ci andrai a scrivere qualcosa, chissà dove diamine andrai a scrivere (la legge di Murphy asserisce che andrai a scrivere nel punto che più ti serviva o in qualche area protetta). Per questo ti da segmentation fault. Devi fare una malloc prima di passare il parametro, altrimenti la funzione scriverà in qualche posto della memoria poco consono.

-- Comment added by EnricoMontesi on 25 May 2005


Smettetela subito

AndreaBartoli e AlbertoLaRocca, vi prego di calmarvi immediatamente e di discutere fuori da questa o da altre pagine di twiki.

[Andrea, effettivamente Alberto non ha torto, devi sapere che il CAPS LOCK viene normalmente usato per "alzare la voce" e quindi chi frequenta normalmente newsgroups e forums riceve immediatamente l'impressione di aver letto un post arrabbiatissimo. Se puoi, quindi, evita di usare le maiuscole se non è necessario]

PS. Se desideri una risposta a proposito della dll devi darmi più informazioni su cosa stai cercando di fare, di quale dll si tratta, quali comandi stai usando e quali sono i messaggi di errore che ti vengono (visto che non sono al tuo fianco mentre programmi a sbirciare il tuo schermo smile ).

PPS. smettila di modificare le pagine dei tuoi compagni che altrimenti ti disattivo.

RE: riguardo al **next

Facciamola corta, la funzione è pensata per essere chiamata in questo modo:
char * questachiave = "pippo";
char * proxchiave;
prossimaChiave(questachiave, diz, &proxchiave);

E quindi serve un doppio puntatore per passare alla funzione l'indirizzo della variabile (di tipo * char) in cui la funzione deve mettere il puntatore alla prossima chiave.

-- Comment added by AndreaSterbini on 25 May 2005

Disattivazione

Andrea, ti ho disattivato perchè fai post offensivi.

-- Comment added by AndreaSterbini on 25 May 2005


Esempi di SPAM e HAM

Ho messo in attachmenta al ModuloQuattro un file zippato contenente due directory che potete usare come esempi di SPAM e HAM per i vostri test.

Io farò i miei test SOLO con queste due directory o con i file in esse contenuti.

-- Comment added by AndreaSterbini on 25 May 2005


Per quanto riguarda i double

Ragazzi ho un dubbio. Quando devo copiare su file il dizionario (in scriviDizionario) come copio i "double"? Non sono un char*, quindi se li provo a passare a "fputs" o "fputc" mi da ovviamente errore. Voi cosa utilizzate?

-- Comment added by EnricoMontesi on 25 May 2005


Senza titolo?

grazie

-- Comment added by AndreaBartoli on 25 May 2005


calcolaPesoEmail e valori maggiori di uno

come si deve comportare la funzione calcolaPesoEmail quando incontra 2 o più occorrenze di un valore maggiore di 0.5?

per il valore BAD non ci son problemi, ma quando si va a calcolare il valore GOOD con il prodotto dei (1 - Wi), si ottengono numeri negativi..

-- Comment added by MarcelloLagana on 25 May 2005


AGGIORNAMENTO PER LE OCCORRENZE

ATTENZIONE: ho aggiornato il calcolo per tenere conto delle occorrenze.

La modifica va fatta DOPO aver scelto i 20 token diversi a distanza maggiore da 0.5.

Quello che modifichiamo è il CALCOLO DELLE PRODUTTORIE

bad_i = Prod( w_i * occ_i)
good_i = Prod( (1 - w_i) * occ_i)

-- Comment added by AndreaSterbini on 25 May 2005


per Enrico Montesi (per quanto riguarda i double)

La soluzione che ho adottato è (penso) la più semplice: fprintf("%s %f\n", chiave, valore). Va alla grande!!!

-- Comment added by MassimilianoNatale on 25 May 2005


correzione (ovvia)

Alla fprintf devi ovviamente passato un puntatore FILE *fp che punta ad un file aperto in modalità "w" (primo argomento)

-- Comment added by MassimilianoNatale on 25 May 2005


token nelle email

Nelle email ci stanno parecchie combinazioni di caratteri strani, virgole, punti, asterischi (e via discorrendo). I caratteri che ci interessano per le chiavi sarebbero i caratteri ischar() ? Oppure copiamo una chiave sino a quando non incontriamo un carattere bianco ('\n', ' ', '\t') ?

-- Comment added by MassimilianoNatale on 26 May 2005


Carattere strano in email4.txt

Ho notato che nal file email4.txt (contenuto nella directory ham) vi è una stringa (che poi stringa non è) che viene trattata come carattere singolo e che dà, inserendola nel dizionario, segmentation fault. Questo carattere (stringa) è \226, provando a stamparla viene stampata come la stringa vuota, ma ha lunghezza 1 e il test per vedere se è una stringa vuota mi resituisce FALSE. Risultato: ogni volta che la inserisco nel dizionario ho segmentation fault. Davvero curiosa come cosa...

-- Comment added by MassimilianoNatale on 26 May 2005


calcolaPesoEmail

dall'ultima lezione siamo rimasti che le occorrenze vanno moltiplicate senza modificare il peso dei token, quindi anche nell'ordinamento rimaniamo come il modulo 3, ovvere il peso senza occorrenza - 0.5??

-- Comment added by TizianoFranchi on 26 May 2005


RE: token nelle email

Usa le funzioni del modulo 1 per tokenizzare le email

RE: calcolaPesoEmail

Esatto, resta tutto uguale tranne il calcolo dei prodotti

-- Comment added by AndreaSterbini on 27 May 2005


modificaValore(...) e calcolaPesoEmail(...)

Professore, ma modificaValore(...) non dovrebbe solamente incrementare l'occorrenza di una certa chiave (se c'è) o inserirla nel dizionario (se non c'è) (se ho capito COSA fa questa funzione)? Dunque mi domando a cosa serva il parametro 'double valore'... Inoltre, professore, mi stavo domandando un'altra cosa. In calcolaPesoEmail(...) bisogna tener conto delle occorrenze di una chiave SOLO nel conteggio delle produttorie, il resto resta invariato...bene: ma allora non dovrei avere un altro campo nella struttura del dizionario per ricordarmi il numero di occorrenze della chiave? (o forse questo è solo il frutto dell'essere arrivato al modulo IV???) smile

-- Comment added by DavidBenedetti on 27 May 2005


modificaValore(...) e calcolaPesoEmail(...)

modificaValore non deve incrementare, ma modificare il valore della chiave con quello passato come argomento...

calcolaPesoEmail va a leggere il dizionario solo per attribuire un valore ai token. Non dovrebbe andare a modificarlo... Per ricordarti le occorrenze puoi usare molti altri modi come array, liste (come ho fatto io) ecc ecc..

-- Comment added by MarcelloLagana on 27 May 2005


Peso senza occorrenza

Scusate un attimo, non potendo seguire le lezioni e non avendo letto nulla a riguardo chiedo conferma (viste le affermazioni di Tiziano Franchi). Peso senza occorrenza = -0.5 OVVERO??? Inoltre: il peso di un token non presente nel dizionario è sempre = 0.4?

-- Comment added by MassimilianoNatale on 27 May 2005


modificaValore(...) e calcolaPesoEmail(...)

Si, è vero per quanto riguarda calcolaPesoEmail(...), hai ragione Marcello...non ci avevo pensato al momento del post!!! GRAZIE! (nonostante questo, mentre scrivo mi stanno venendo l'ira un bel pò di dubbi...vabè...!!!) smile

-- Comment added by DavidBenedetti on 27 May 2005


RE: Peso_senza_occorrenza

Se manca la occorrenza vuol dire che il token ha il suo peso (ovvero che il numero di occorrenze è 1).

Se il token non è nel dizionario il suo peso è 0.4

-- Comment added by AndreaSterbini on 27 May 2005


prossimaChiave

la memoria per la stringa next è già stata allocata prima di chiamare prossimaChiave giusto??non è prossimaChiave che si occupa di allocarla!!

-- Comment added by TizianoFranchi on 28 May 2005


leggiFIles e tokenizzaEmail

per tokenizzare i file dentro le directory devo usare tokenizzaEmail o una nuova funzione? Nei file di esempio le email mi sembra non abbiano headers validi, quindi la funzione del modulo1 tornerebbe sempre errore...

-- Comment added by MarcelloLagana on 28 May 2005


conversione dati

qualcuno sà come posso convertire un double in stringa???

-- Comment added by TizianoFranchi on 28 May 2005


Risolto

-- Comment added by TizianoFranchi on 28 May 2005


RE: prossimaChiave

Perchè non torni direttamente il puntatore alla chiave che sta nel dizionario?

RE: leggiFIles e tokenizzaEmail

certamente ci vuole tokenizzaEmail, ma dopo aver applicato al testo le trasformazioni del modulo 2

Riguardo i file di esempio e li aggiorno se necessario

-- Comment added by AndreaSterbini on 28 May 2005


leggiFiles

nella directory dirname che file ci sono...?

-- Comment added by TizianoFranchi on 28 May 2005


Peso email

Potrebbe fare un'esempio di un peso di un'email data con un vocabolario dato, per controllare che le produttorie siano corrette?

-- Comment added by AlessandroGrottoli on 28 May 2005


modulo4-leggiFiles

dato che questa funzione deve contare le occorrenze dei token per creare il dizionario dobbiamo usare anche le funzione del primo e secondo modulo visto che i files sono email non tokenizzate..!quindi li dobbiamo includere anche i primi due oltre al terzo???

-- Comment added by TizianoFranchi on 29 May 2005


RE: Peso_email

Purtroppo no

RE: modulo4-leggiFiles

Potete usare il mio codice ... è online nei test

-- Comment added by AndreaSterbini on 30 May 2005


[OT] risultati esonero

prof., scusi l'OT, ma quando avremo i risultati del secondo esonero di architettura 2? è possibile averli prima dello scritto? perché se c'è gente che non è soddisfatta del voto potrebbe voler fare lo scritto parziale... grazie.

-- Comment added by AlbertoLaRocca on 30 May 2005


modulo4-leggiFiles

I moduli precedenti l'ho fatti quindi vorrei usare i miei..solo volevo sapere se le funzione le devo trascrivere nel modulo4 o se facevamo come per il modulo3, ovvero lo riconsegnamo??

-- Comment added by TizianoFranchi on 30 May 2005


scrivere un double su un file..

ragà ma per scrivere un double(valore) su un file che funzione và usata??.. io leggevo di una funzione chiamata "fcvt" che converte in una stringa un valore in virgola mobile, nella funzione stessa è possibile specificare anke il numero di cifre dopo la virgola..oppure stavo facendo un pensierino anke fprintf per la scrittura direttamente nel file..ditemi la vostra..fatemi sapere.. Cordiali Saluti..

-- Comment added by DavideFacente on 30 May 2005


RE: risultati esonero

Li sto correggendo ora. Li pubblicherò stasera.

RE: modulo4-leggiFiles

Non li riconsegnate.

RE: Scrivere un double su un file

Leggi la pagina del manuale della funzione printf

-- Comment added by AndreaSterbini on 30 May 2005


Scrivere un double su un file

si usa la fprintf(file, "%f", double);

-- Comment added by TizianoFranchi on 30 May 2005


modulo4-leggiFiles

allora le riscrivo mantenendo i nomi originali tanto sono inclusi solo i .h giusto??

-- Comment added by TizianoFranchi on 30 May 2005


Headers Inesistenti

Professore, nel tokenizzare le email presenti nelle directory HAM e SPAM, utilizzando la funzione tokenizzaEmail, questa non tokenizza nulla perchè, non è un'email corretta, poichè senza Headers...sbaglio io qualcosa?

-- Comment added by AlessandroGrottoli on 30 May 2005


Headers Inesistenti

mi accodo alla domanda!!non potrebbe usare delle email che rispettano le specifiche che ha dato???sennò uno deve rifarsi le funzione del primo modulo e non mi sembra possibile!

-- Comment added by TizianoFranchi on 30 May 2005


Riconsegna Modulo3

Prof. Ho notato di aver messo i buffer troppo piccoli nel modulo1(e và sempre in seg fault), si può cambiare anche il modulo1 senza che venga rivalutato(come il modulo3). Ho visto che anche cambiando questi parametri tokenizzando alcune email, queste vanno in loop...(domanda ovvia, ma ci provo) userà le nostre funzioni per tokenizzare le email che ha dato?Perchè credo che come me altri siano nella mia stessa situazione...cioè rifare il modulo da capo

-- Comment added by SimoneMurzilli on 30 May 2005


Usare il suo codice

Sto prendendo in considerazione di usare il suo codice dei moduli passati, come lei ha proposto. Quando farà i test linkerà il mio modulo4 e il mio modulo3 con i suoi modulo1 e modulo2, giusto? Oppure li linkerà comunque con le mie funzioni, ahimè non proprio corrette (e quindi i miei errori negli altri moduli si propagheranno anche al modulo4)?

-- Comment added by GiovanniColombi on 30 May 2005


RE: usare i miei modulo2 e modulo1

Quando farò i test linkerò con i miei modulo1 e modulo2

RE: Scrivere un double su un file

Non esattamente ... %f non basta per un double ... scavate ... scavate ... smile

RE: problemi con le email

Mi sono dimenticato di controllarle, lo faccio domani (martedì)

-- Comment added by AndreaSterbini on 31 May 2005


Scrivere un double su un file

a quanto pare bisogna usare "%e":
link :P

-- Comment added by AlbertoLaRocca on 31 May 2005


o forse è "%g"...? non capisco...

-- Comment added by AlbertoLaRocca on 31 May 2005


usare i miei modulo2 e modulo1

E chi volesse usare il proprio codice come fa visto che linca i suoi moduli??

-- Comment added by TizianoFranchi on 31 May 2005


Scrivere un double su un file

ok si usa %g come parametro per la fprintf()...giusto??

-- Comment added by TizianoFranchi on 31 May 2005


Per i moduli precedenti

sono presenti nel file modulo2.h i due vettori di SearchReplace per le lettere e i tagInvisibili??

-- Comment added by TizianoFranchi on 31 May 2005


Per i moduli precedenti

No, si era deciso di mettere i due vettori nel nostro main.

-- Comment added by GiovanniColombi on 31 May 2005


Scrivere un double su un file

Ehm scusi professore O_o come c'è dell'altro? Sul D&D c'è scritto che per la printf la specifica di conversione per un double è %f (mentre per la scanf è %lf, ecco perchè tutti avevano i problemi usando %f stick out tongue )

-- Comment added by RiccardoVona on 31 May 2005


Scrivere un double su un file

Io uso fprintf con conversione %f e funziona. O sono io che mi illudo?

-- Comment added by MassimilianoNatale on 31 May 2005


Scrivere un double su un file

con %f ti mette sul file, ad esempio se il peso è 0.3, il valore 0.3000000. Usando %g invece ti mette tutti i numeri esclusi gli zeri finali, quindi ad esempio: 0.321 invece che 0.3210000

-- Comment added by TizianoFranchi on 01 Jun 2005


Per i moduli precedenti

si ma il main non lo consegnamo, quindi volevo sapere dal prof se sul modulo2.h ci sono i due vettori, se è me li metto sul dizionario.h ma devo esse sicuro che non ci stanno nel modulo2.h

-- Comment added by TizianoFranchi on 01 Jun 2005


Per i moduli precedenti

Forse il prof metterá sul suo main i due vettori????????

-- Comment added by DavidBenedetti on 01 Jun 2005


b > 1.0 e g > 1.0

nelle specifiche ha detto che se queste due probabilità sono maggiori di 1.0 bisogna ridurle a 1.0, però nel modulo3 eravamo rimasti d'accordo che i pesi dei token dovevano essere diversi da 0.0 e 1.0 perchè sennò il calcolo dell'email veniva errato, o mi sbaglio??

-- Comment added by TizianoFranchi on 01 Jun 2005


RE: Scrivere un double su un file

Scusate se ho creato rumore inutile, quando vi ho risposto prima stavo pensando alla scanf.

Va benissimo "%f" per scrivere nel file.

RE: files di esempio delle email

Ho visto le email, avete ragione, mancano gli headers. Le sistemo al più presto (per stanotte).

-- Comment added by AndreaSterbini on 01 Jun 2005


Codice Prof. Modulo1 e 2

Prof. clikkando sul link nella parte dove ci sono i nostri test col suo codice...mi apre il link con i suoi test, è sbagliato il link, oppure non ho trovato il link giusto?

-- Comment added by SimoneMurzilli on 01 Jun 2005


Vettori Search

Ma a cosa vi servono in questo modulo?

-- Comment added by AlessandroGrottoli on 01 Jun 2005


Vettori Search

mi servono per pulire l'email spam prima di tokenizzarla

-- Comment added by TizianoFranchi on 01 Jun 2005


pagina di consegna

ma la pagina di consegna del Modulo4 manca o sono io che non ho capito qualcosa?

-- Comment added by AlbertoLaRocca on 01 Jun 2005


Vettori Search

Ma se hai già una funzione che lo fa, perchè inserire nuovamente il vettore?

-- Comment added by AlessandroGrottoli on 01 Jun 2005


RE: pagina di consegna

Ora c'e' fatemi sapere se NON funziona.

Ho aggiornato i files

Ho aggiornato il file files.zip con gli esempi di HAM e SPAM, ora gli headers ci sono.

-- Comment added by AndreaSterbini on 02 Jun 2005


Ho aggiornato i files

...le email HAM non vengono considerate valide dal modulo1 (TokanizzaEmail) perchè contengono un'header con sistassi(secondo le specifiche del modulo1) errata, X-Spam-Level: penultimo header, dopo il contesto c'è uno spazio e poi accapo...Non credevo poter di essere così pignolo wink

-- Comment added by AlessandroGrottoli on 02 Jun 2005


LeggiFiles e tokenizzaEmail

LeggiFiles deve applicare solamente la pulisciTestoSemplice o anche la pulisciTestoRE (e relativa parseEspressioniRegolari)?

e nel caso che l'email abbia qualche errore di header/body/ecc, si deve fermare o saltare il file?

-- Comment added by MarcelloLagana on 02 Jun 2005


tokenizzaEmail... BODY_NOT_FOUND

Delle nuove email, non me ne tokenizza nemmeno una! tutte mi restituiscono BODY_NOT_FOUND. Uso il modulo1 e modulo2 del Professore....

-- Comment added by MarcoEsposito on 02 Jun 2005


Errore nelle email HAM e SPAM

-- Comment added by MarcoEsposito on 02 Jun 2005


Errore nelle email HAM e SPAM

HO CAPITO!! Stavo diventando matto...
ogni linea della email non termina con
"\n"

ma termina con
"\r\n"

-- Comment added by MarcoEsposito on 02 Jun 2005


Errore nelle email HAM e SPAM

Sembra che sto facendo un monologo... però ho trovato la soluzione usando il programma "dos2unix"
E infatti come dice "AlessandroGrottoli", mi restituisce BAD_HEADER

-- Comment added by MarcoEsposito on 02 Jun 2005


test_scriviDizionario --> FILE_UNWRITABLE

Prof., ovviamente lei metterà un file "file-unwritable" nelle cartelle in cui eseguirà i test, giusto?

-- Comment added by GiovanniColombi on 02 Jun 2005


RE: Errore nelle email HAM e SPAM

OK, passo tutto attraverso dos2unix e controllo i files entro stasera.

RE: FILE_UNWRITABLE

certo

-- Comment added by AndreaSterbini on 02 Jun 2005


Ma perchè twiki "scapoccia"?

Perchè sopra, l'indice delle domande arriva fino ad un certo punto e non ci sono le ultime Domande/Risposte?

-- Comment added by MarcoEsposito on 02 Jun 2005


AGGIORNAMENTO di files.zip

Ho controllato i files HAM/SPAM.
  • andavano trasformati in unix (con dos2unix)
  • i 5 in HAM avevano un header vuoto (tolti)

Ora sono a posto e passano la (mia) tokenizzazione

RE: Ma perchè twiki "scapoccia"?

Non usate tags nei titoli

-- Comment added by AndreaSterbini on 02 Jun 2005


CHE FINE HA FATTO **FRANCO***????

Scusate per l'ot, il nostro prof. Franco Liberati di Architettura 2 sembra scompareso, sono settimane che non aggiorna il suo sito e non risponde alle mail. Lei, prof. Sterbini, ne sa qualcosa???? E' urgente perche vorremmo sapere i voti dell'esame.

GRAZIE

-- Comment added by GaiaProvvidenti on 03 Jun 2005


RE: Franco Liberati

Franco ha avuto un problema e si è dovuto trattenere in ospedale per accertamentei. Farà un nuovo appello scritto di ASM probabilmente dopo il 10 giugno. Purtroppo non è riuscito ad avvertirvi, si scusa.

-- Comment added by AndreaSterbini on 03 Jun 2005


RE: Franco Liberati

E per quanto riguarda gli orali del 9 giugno ?? Non sappiamo ancora i risultati del secondo esonero e chi e' stato ammesso... Come facciamo ??

-- Comment added by GaiaProvvidenti on 03 Jun 2005


Ham e Spam

professore a me le sue email non le tokenizza e mi sembra strano che a lei lo fa..visto che nella prima ham c'è un primo_header che inizia con un tab prima del tipo e invece le specifiche erano che lo spazio o il tab poteva stare solo tra il tipo e il valore, mentre nella prima delle spam c' questa cosa: Return-Path: '<'pmadmin@di.uniroma1.it'>' dove il valore contenuto nel tag viene eliminato dalla pulisciTestoSemplice dando poi un errori di BAD_HEADER. O mi sbaglio??

-- Comment added by TizianoFranchi on 03 Jun 2005


Ham e Spam

No, le email (a me con il mio e con quello del prof) TokenizzaEmail() va alla grande, PulisciTesto() ha un bel gran BUG prof che ci era sfuggito, perchè come dice Tiziano quando va a pulire un'email, nel pulire gli headers, elimina parte di unì'header contenente un'indirizzo email rendendo l'header errato per TokanizzaEmail...credo che dovrà mettere on-line nuove email a prova di BUG!!! big grin

-- Comment added by AlessandroGrottoli on 03 Jun 2005


Dizionario.txt

Appena verranno messe on-line email corrette, chi vuole scambiare il propio dizionario.txt creato per trovare eventuali divergenze?

-- Comment added by AlessandroGrottoli on 03 Jun 2005


Ancora problema con tokenizza email....

La cosa che mi chiedo è se la ripulitura del testo và fatta solo sul body dell'email.
Perchè se viene fatta una ripulitura totale dell'email compresi gli headers, alcuni header diventano non validi.

-- Comment added by MarcoEsposito on 03 Jun 2005


Ham e Spam

no infatti poi mi sono accorto che per le ham non c'era nessun problema, era solo la prima spam a creare problemi. comunque per il dizionario.txt ce lo possiamo scambiare, anche ora tanto basta che togli < > e lo metti cosi: pmadmin@diNOSPAM.uniroma1.it e poi tokenizza!!

-- Comment added by TizianoFranchi on 03 Jun 2005


Ham e Spam

Ok, ora modifico le emails, avvio e te lo invio per posta...se è valido il tuo indirizzo...

-- Comment added by AlessandroGrottoli on 03 Jun 2005


errore insolito nel modulo1.c del professore

QUando vado a compilare il mio progetto il compilatore mi da un errore insolito. Mi dice che nel file "modulo1.c" (sto usando quello del professore, quindi in teoria quello che usate anche voi) c'è un errore. Per l'esattezza afferma che alle righe 31, 36 e 43 stiamo passando alla "close" un puntatore invece di un intero. Dato che il parametro passato era un puntatore a FILE, ho sostituito "close" con "fclose", e l'errore è sparito. Volevo sapere, ora, questo errore lo da solo a me? In teoria il file del professore dovrebbe essere uguale per tutti...quindi avrebbe dovuto dare lo stesso errore anche a voi. Qualcuno può illuminarmi?

-- Comment added by EnricoMontesi on 03 Jun 2005


errore insolito nel modulo1.c del professore

A me non da nessun problema. Forse dipende dalla versione del compilatore...

-- Comment added by GiovanniColombi on 03 Jun 2005


Correzione del modulo 3

Volevo chiedere al professore se fosse possibile correggere il terzo modulo anche con i casi RESULT_OK entro Domenica...non per altro, ma visto che dobbiamo usare i nostri modulo3.c, vorrei sapere per tempo se ci sono errori che devo sistemare (magari incomprensioni su alcune specifiche che rischiamo di portarci dietro anche nel modulo 4 o altro ancora).

-- Comment added by EnricoMontesi on 03 Jun 2005


RE: Correzione modulo 3

Ho messo online la correzione più recente del modulo 3

RE: pulitura + tokenizzazione

Se ci riesco riguardo le email (le avevo solo tokenizzate ma non ripulite).

RE: Franco Liberati

Non ne so nulla ... guardate sulla sua pagina web (che non so quale sia frown )

-- Comment added by AndreaSterbini on 04 Jun 2005


modulo1 e modulo2

senta professore dato che io sto usando i miei moduli e ho ricopiato le funzioni nel modulo4.c volevo sapere se davano problemi quando lei li compilava visto che li compila insieme ai suoi..

-- Comment added by TizianoFranchi on 04 Jun 2005


RE: modulo1 e modulo2

Probabilmente sì ... proverò a linkare con l'opzione -z muldefs in modo da far accettare definizioni multiple delle funzioni (il sistema dovrebbe scegliere la prima ovvero la vostra)

-- Comment added by AndreaSterbini on 04 Jun 2005


leaks modulo3

professore, ho visto in linea i nuovi risultati del modulo3, ma non trovo più le pagine dei memory leaks (o meglio, ci stanno ma sono vuote).

-- Comment added by AlbertoLaRocca on 04 Jun 2005


eliminaTags

Per eliminare i tags quali funzioni dobbiamo usare? tutte quelle del modulo2.c? Solo pulisciTestoRe? o solo quelle senza espressioni regolari? Ma soprattutto, lettereDaRimpiazzare e tagsInvisibili chi li mette? decommentiamo quelli che sono presenti nel modulo2.h? Ne creiamo alcuni noi? Oppure evitiamo di usare il modulo2 in questo modulo finale? (mi sa che quest'ultima opzione non sarà molto presa in considerazione, vero? ^^)

-- Comment added by EnricoMontesi on 04 Jun 2005


eliminaTags

Puoi usare o pulisciTestoSemplice o pulisciTestoRE. Per i vettori credo che bisogna fare come per il modulo2, cioè metterli nel proprio main. Non si possono utilizzare quelli che stanno in modulo2.h per il motivo che si diceva in DomandeSulModuloDue. Vedi la risposta del prof: COL CAVOLO! (simboli multipli).

-- Comment added by GiovanniColombi on 05 Jun 2005


RE: eliminaTags

Metti nel tuo main le due liste del modulo 2 e usa pulisciTestoSemplice.

-- Comment added by AndreaSterbini on 05 Jun 2005


timeout

professore volevo sapere quanto tempo dava alle nostre funzioni per l'esecuzione??

-- Comment added by TizianoFranchi on 05 Jun 2005


tests per leggiFiles

Per fare i tests della funzione leggiFiles necessitiamo di due directory da visitare. Tenendo conto che ovviamente i file da visitare li creiamo noi, potrebbe dirci, professore, i nomi di due directory standard vuote che lei metterà a disposizione dei nostri tests, che le riempiranno con i nostri files di testing?

-- Comment added by EnricoMontesi on 05 Jun 2005


Directory

Ovviamente le dir HAM e SPAM ci saranno!?!

-- Comment added by TizianoFranchi on 05 Jun 2005


errori nel modulo3.c

Professore, nei suoi tests risulta che ho fatto 2 errori nella funzione "leggiTokens" del modulo3.c Dato che questa funzione devo riciclarla per il quarto modulo, si potrebbero avere maggiori informazioni sul modo in cui ha fatto i tests? Dai risultati messi in rete non si capisce che cosa non andava, poiché non si sa che cosa lei ha passato alla mia funzione.

-- Comment added by EnricoMontesi on 05 Jun 2005


RE: errori nel modulo3.c

Il mio codice è on-line, quindi si vede bene cosa ho passato.

RE: Directory

Ovviamente ci saranno le due directory HAM e SPAM.

RE: pulisciTestoSemplice

Ho provato a processare le email di SPAM e HAM per essere sicuro che non aveste problemi:
  • ho usato il mio codice di modulo1.c e modulo2.c
  1. ho letto i files delle directory HAM e SPAM
  2. li ho ripuliti con pulisciTestoSemplice (con parametro max=1)
  3. li ho tokenizzati

Tutte le email vengono tokenizzate senza errori

-- Comment added by AndreaSterbini on 05 Jun 2005


pulisciTestoSemplice

Professore, utilizzando i suoi moduli (1 e 2), se passo a pulisciTestoSemplice un testo che contiene un'header,
Return-Path: <pmadmin@di.uniroma1.it>, esempio preso dal primo header dell'email SPAM/email1.eml,
secondo le specifiche della funzione eliminaTagsHtml, quando poi viene passato a pharseHeader, il valore di quell'header non esiste più, rendendo l'header un BAD_HEADER, errore n 11, ovvero quello che la funzione dei suoi moduli mi ritorna dopo che gli passo un testo che è stato analizzato, nell'ordine, da
leggiFile(), pulisciTestoSemplice(), tokenizzaEmail()

-- Comment added by AlessandroGrottoli on 05 Jun 2005


ops

L'header di esempio è
Return-Path: <pmadmin@di.uniroma1.it>
. non so se si vedrà correttamente, comunque, dopo Return-Path:, c'è un'indirizzo email, tra un minore e un maggiore...:-)

-- Comment added by AlessandroGrottoli on 05 Jun 2005


pulisciTestoSemplice

Prof. io non riesco a tokenizzare le email. Uso il suo codice. Il problema è che pulisciTestoSemplice pulisce anche gli headers e in alcuni casi elimina il valore dell'header facendo poi restituire a tokenizzaEmail BAD_HEADER. Ad esempio in HAM/email1.txt.eml ci sono diversi hyperlink che causano valori dell'header vuoti. A questo punto credo che bisogna passare a pulisciTestoSemplice solo il body dell'email. Però per come è stato impostato il progetto non mi sembra proprio la scelta più azzeccata... Prof. potrebbe darmi qualche indicazione?

-- Comment added by GiovanniColombi on 05 Jun 2005


pulisciTestoSemplice

...e invece no, una soluzione c'è, ma non so quanto possa essere valida...sbaglio o nel modulo 1 c'è una funzione che estrae gli headers, se venissero eliminati prima di passare l'email a pulisciTesto e tokenizza, sarebbe un'errore?

-- Comment added by AlessandroGrottoli on 05 Jun 2005


pulisciTestoSemplice

Non passare gli headers a tokenizzaEmail direi che è un errore. La mia ipotesi è invece quella di passare solo il body a pulisciTestoSemplice e poi passare headers---+ body pulito a tokenizzaEmail. Tanto tokenizzaEmail non considera eventuali porcherie negli header e quindi tokenizza solo le parole (saltando ad esempio < e >).

-- Comment added by GiovanniColombi on 06 Jun 2005


errori nelle directory.,,

Professore, come ci dobbiamo comportare nel caso in cui vi siano degli errori riguardanti le directory? O meglio, lei farà test in cui le directory ad esempio sono vuote, oppure delle quali non si ha il permesso di accesso, ecc.???

-- Comment added by DavidBenedetti on 06 Jun 2005


scrittura dizionario

C'è un nome standard ke dobbiamo dare al file da scrivere contenente il dizionario?

-- Comment added by DavidBenedetti on 06 Jun 2005


pulisciTestoSemplice

Forse non hai capito, in quasi tutte le email, in vari campi degli headers, è possibile trovare un'header che contenga un'indirizzo email, tra i due simboli incriminati; una volta passato un testo di quel genere alla pulisciTestoSemplice, elimina l'indirizzo, lasciando solo il contesto dell'header seguiti da spazio e accapo. Poi che vorrebbe dire che tokenizzaEmail non considera le porcherie degli headers :-O ???????????????? ma quale modulo1 hai fatto tu?????? dentro a tokenizzaEmail, si una la pharseHeader che DEVE conoscere la corretta sintassi degli headers...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


problema della pulisciTestoSemplice

Non vorrei sembrare un po' troppo disfatista, ma il fatto che la pulisciTestoSemplice dia tutti questi problemi a 2 giorni dalla consegna (ammetto che non l'ho ancora provata, io, poiché sto facendo i tests sulle altre funzioni) crea non pochi problemi. Da quanto aveva scritto il prof pensavo che il problema non sussistesse più...evidentemente non era proprio così (mi sembra strano che tutti quanti abbiano scritto senza provare i nuovi files messi dal professore). A questo punto vorrei chiedere una cosa. Dato che la pulisciTestoSemplice era l'obiettivo di un altro modulo (che fu strage, tra l'altro ^^) e che tutto sommato non va a scombussolare la parte di programmazione di questo modulo, non si potrebbe evitare di utilizzarla? E' vero che può sembrare una richiesta un pochino da svogliato...ma i tempi si stringono (e l'8 iniziano scritti ed orali di varie altre materie...).

-- Comment added by EnricoMontesi on 06 Jun 2005


Problemi TokenizzaEmail

a me veramente utilizzando le funzioni del prof non funziona bene neanche la tokenizza email, non tokenizza tutto il testo...a voi?

-- Comment added by SimoneMurzilli on 06 Jun 2005


pulisciTestoSemplice

Nei miei post ho scritto esattamente la stessa cosa (cioè che alcuni valori degli headers , gli indirizzi email, vengano eliminati da pulisciTestoSemplice lasciando solo il tipo e facendo tornare a tokenizzaEmail BAD_HEADER). Riguardo a tokenizzaEmail intendevo dire che primaParola cmq elimina tutto ciò che non è di interesse per il filtro e che forse di roba da pulire negli headers ce n'è ben poca. Infine ho espresso la mia idea che non passare gli headers a tokenizzaEmail è sbagliato (mi era sembrato di capire che tu chiedessi un parere a riguardo). Il modulo1 che ho fatto io sta online con gli altri. Non è un gran che e per questo uso quello del Prof.

-- Comment added by GiovanniColombi on 06 Jun 2005


tokenizzazione emails

Non è di molto buon auspicio che abbiamo tutti questi problemi a due giorni dalla consegna e sui moduli passati...!!! PS = Ce li ho ank'io i vostri stessi problemi!!!

-- Comment added by DavidBenedetti on 06 Jun 2005


tokenizzazione emails

In effetti l'applicazione della pulisciTestoSemplice trasforma le email, e fa resituire a tokenizzaEmail BAD_HEADER...ke pasticcio...

-- Comment added by DavidBenedetti on 06 Jun 2005


tokenizzazione emails

L'idea di passare a tokenizzaEmail solo il body dell'email non è molto sbagliata, ma mi sorge allora spontanea una domanda: ke l'abbiamo fatti a fare i primi due moduli se poi dobbiamo praticamente rielaborare il loro lavoro??? Ke senso ha allora utilizzarli comodamente su questo modulo con due semplici chiamate a pulisciTestoSemplice e tokenizzaEmail??? Professore, ci illumini!!!!!!!

-- Comment added by DavidBenedetti on 06 Jun 2005


IDEA!

Perché non scriviamo 1000 email da soli (ke rispettino le specifiche del primo e secondo modulo) e poi le processiamo con il quarto modulo??? Sul numero di email da scrivere scherzavo, però è quello ke sto facendo per vedere se almeno il resto mi funziona.....ve lo consiglio...poi, certo, ognuno la pensi come vuole!!! smile

-- Comment added by DavidBenedetti on 06 Jun 2005


Tokenizzazione email

Secondo me, non c'è nessun problema, l'accoppiata pulisciTesto e tokanizzaEmail, nel mondo reale
[cit]
, non funziona. Siccome al modulo 4 non deve interessarsi della corretta sintassi di un'email, le chiamate sono giuste, l'unica cosa da fare sarebbe, migliorare l'accoppiata PULISCI/TOKANIZZA , o eliminare gli "errori" dalle email per fare la correzione...io per vedere se tutto mi funziona ho sostituito
 i < e i > contenuti negli headers con le virgolette.

PS David non hai chiuso il pre...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


AGGIORNAMENTO di files.zip

Mi ero sbagliato a controllare i files, ora ho tolto gli headers sbagliati ed ho re-zippato i files.

Trovate la versione giusta dei file di esempio in attachment al ModuloQuattro

-- Comment added by AndreaSterbini on 06 Jun 2005


ehm...

Veramente non l'ho nemmeno aperto!!! smile

-- Comment added by DavidBenedetti on 06 Jun 2005


YAHOO (non il motore di ricerca!)

Ora sembra funzionare tutto a dovere...GRAZIE PROFESSORE!!!

-- Comment added by DavidBenedetti on 06 Jun 2005


Directory

Per ogni errore riguardanti le directory
(EMPTY, UNREADABLE, MISSING
, ritornamo UNKOWN_ERROR?

-- Comment added by AlessandroGrottoli on 06 Jun 2005


scrittura dizionario

David qual'è il terzo argomento della funzione processDirs? wink con il caldo iniziamo a fondere il cervello...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


test FILE_EMPTY, FILE_UNREADABLE...e scrittura file dizionario

Professore, come possiamo fare i test per questi errori? Mi sembra di aver capito ke lei metterà i famosi file "file-empty" e "file-unreadable", ma come possiamo fare i test su RESULT_OK e su un errore se stanno tutti in una stessa directory (cioè, sia file 'buoni' ke file 'cattivi')??? Per quanto riguarda l'errore FILE_UNWRITABLE penso non sia invece troppo difficile.....Ah, una cosa: quando uso la processDirs(...) mi sposto nelle directory indicate impostandole come directory di lavoro. Quindi il file dizionario viene creato nell'ultima directory in cui mi trovo. Questo può creare problemi? Oppure bisogna scrivere il file in una directory ben precisa??? GRAZIE!

-- Comment added by DavidBenedetti on 06 Jun 2005


sempre per i test...

Quando facciamo i test, quali sono le directory ke dobbiamo indicare alla processDirs(...), professore? Ad esempio: "HAM", oppure "D:\UnPercorsoDaLeiScelto\HAM" ???

-- Comment added by DavidBenedetti on 06 Jun 2005


sempre per i test...

Nei test, proprio perché ad ogni chiamata a leggiFiles(...) mi sposto su una nuova directory di lavoro (e cioè quella dove leggiFiles analizza i files), devo ripristinare la directory di lavoro di partenza???

-- Comment added by DavidBenedetti on 06 Jun 2005


processDir

Ma cosa intende per legge e tokenizza tutte le email contenute in hamdir e spam dir?

-- Comment added by AlessandroGrottoli on 06 Jun 2005


processDirs(...)

Nel senso ke kiama leggiFiles, prima passandogli hamdir e poi spamdir. In questo modo la leggiFiles(...) legge tutti i file contenuti nella directory in entrata, li pulisce, li tokenizza, e poi, per ognunom, carica il dizionario con i token estratti dal file (email)!!!

-- Comment added by DavidBenedetti on 06 Jun 2005


Valori delle email

Ma a voi che valore di SPAM/HAM vi restituisce per le email? a me per tutte quelle SPAM 1.0 e per le ham 0.0...mi sembra un pochino strano...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


Valori delle email

Ke intendi Alessandro? I valori del dizionario scritti poi nel file da scriviDizionario(...) o il peso uscente da calcolaPesoEmail(...)???

-- Comment added by DavidBenedetti on 06 Jun 2005


Valori delle email

Peso complessivo di ogni singola email...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


Valori delle email

esattamente, per tutte le email SPAM il peso è 1.0, per le HAM è 0.000000000000000000000000000000000000000122263...è vero che i valori del dizionario di SPAM e HAM sono presi da queste email, ma mi sembra un pochino strano che siano tutti uguali i risultati...ho ricontrollato tutto svariate volte...

-- Comment added by AlessandroGrottoli on 06 Jun 2005


Valori delle email...

A me sembra abbastanza logico ke siano così i risultati...proprio xké i pesi delle chiavi sono stati stabiliti da quelle stesse email di cui poi vai a stabilire il peso...cmq per carità...può anke nn essere.......

-- Comment added by DavidBenedetti on 06 Jun 2005


errore inspiegabile...

Professore, ho notato un errore inspiegabile nel fare i test. Per fare i test su RESULT_OK di calcolaDizionario(...) utilizzo leggiFiles(...) per caricare i dizionari (da passare poi alla funzione suddetta). Quando faccio i test sul primo e secondo argomento va tutto bene: legge, pulisce e tokenizza con successo tutti i file senza fare storie. Come però faccio il test di RESULT_OK sul terzo argomento, legge tutti i file di HAM, ma come prova a tokenizzare il primo file di SPAM da errore, ma non un errore di quelli definiti (almeno capivo che ca...volo avesse), ma un errore che blocca il processo e ke windows interrompe senza dare (ovviamente, come sua abitudine) una spiegazione. Mi sto scervellando da ore senza capire x quale arcano motivo per due volte consecutive NON DA ALCUN ERRORE, e poi di punto in bianco se ne esce con un ERRORE ASSURDO...lei ha una qualke idea di cosa potrebbe provare tale comportamento altamente anomalo???

-- Comment added by DavidBenedetti on 07 Jun 2005


errore inspiegabile...

provare = provocare!!! scusi!

-- Comment added by DavidBenedetti on 07 Jun 2005


X David

Gli errori peggiori che può dare windows sono 2, uno è dato da una fantastica finestra che si apre dicendoti che c'è stato un errore e chiedendoti se vuoi inviarlo alla Microsoft...questo tipo di errore in realtà non è altro che il fantastico "segmentation fault"...che windows trasforma in questo delirio. Un altro brutto errore che può dare windows, invece, è quello di prendere ed uscire semplicemente dal programma, senza dire nulla. Questo può succedere quando finisce la memoria o in altre occasioni improbabili che la Microsoft non ha calcolato. Per quanto riguarda il fatto che funzioni solo le prime due volte, è perché evidentemente al terzo passaggio che fai accade qualche caso particolare che il tuo programma non gestisce (magari una costruzione particolare dell'albero o altro), oppure più semplicemente se non deallochi bene la memoria, potresti banalmente averla finita.

-- Comment added by EnricoMontesi on 07 Jun 2005


x Enrico...

Grazie Enrico...Ora il mio programma ha generato altri errori assurdi. Fino a ierisera, compilando con i MIEI moduli e lanciando sia la sola processDirs su un main a parte ke i test (esclusi i test per processDirs) funzionava tutto benissimo.....mi accorgo di dover fare i test di processDirs (e lì c'è stato un esodo dal cielo verso casa mia!) e li faccio...ma, a sorpresa: NON FUNZIONA---+ UN CAKKIO!!! Cioè, i test delle funzioni vanno, ma quando arrivo ai test della calcolaDizionario, poi leggiFiles, e ancora processDirs mi succede, da quanto ho capito, ke mi si alloppa il programma...e non solo. Se adesso faccio partire la processDirs da sola, mi da BUFFER_TOO_SMALL la tokenizzaEmail appena prova a tokenizzare la prima email HAM.....cosa alquanto strana visto ke il modulo I non l'ho proprio cambiato...e nemmeno le email sono cambiate!!!!!Mi sa ke proverò con i moduli del prof...!!!

-- Comment added by DavidBenedetti on 07 Jun 2005


Risposte

RE: sempre per i test...

I test vengono eseguiti in una directory nuova in cui sono presenti:
  • i files file-unreadable, file-unwritable ecc...
  • le due directory HAM e SPAM con le email
  • lì va creato il file del dizionario o altri files temporanei

-- Comment added by AndreaSterbini on 07 Jun 2005


sempre per i test...

Quindi la directory che devo passare per i test (a leggiFiles o processDirs è semplicemente "HAM", giusto professore???

-- Comment added by DavidBenedetti on 07 Jun 2005


nomi dei file fondamentali

Ho una domanda abbastanza importante (visto tra l'altro che non è rimasto molto tempo per consegnare):

Tutti gli errori sulle directory li contiamo come se fossero errori su file (visto tra l'altro che sotto Linux le directory sono file)? Per fare un esempio, in assenza di directory HAM, teniamo conto che si sta parlando dell'errore FILE_MISSING o dell'errore UNKNOWN_ERROR?

-- Comment added by EnricoMontesi on 07 Jun 2005


dove va usato pulisciTestoSemplice?

A me sembra che l'unica posizione possibile per pulisciTestoSemplice sia in leggiFiles, dopo ogni tokenizzazione dei files estratti dalla directory passata. Qualcuno di voi ha in mente altre posizioni? Più che altro perché, dato che il mio pc sembra refrattario all'uso della libreria pcre.h, non posso fare le prove con la pulisciTestoSemplice. Standardizziamo quindi la sua posizione, evitando così spiacevoli problemi in fase di testing?

-- Comment added by EnricoMontesi on 07 Jun 2005


timeout

La domanda rimane sempre la stessa!!!quanto tempo ha una funzione per terminare correttamente??lo chiedo perchè questo modulo è un pò più lento rispetto a quelli precedenti

-- Comment added by TizianoFranchi on 07 Jun 2005


Consegna del modulo3

Ho visto che nella form di consegna viene anche richiesto di inviare il file modulo3.c. Qualcuno può spiegarmi il perchè di questa richiesta?

-- Comment added by MassimilianoNatale on 07 Jun 2005


Consegna del modulo3

Alcune funzioni del modulo 3 devono essere modificate per poter essere utilizzate nel modulo 4. Ad es. la inserisciValore prima accettava solo valori compresi tra 0 e 1, adesso deve accettarne anche di più grandi.

-- Comment added by AndreaMantoni on 07 Jun 2005


dubbio sugli includes

Per usare le funzioni del modulo X e' sufficiente che includiamo il file "moduloX.h"?

-- Comment added by AndreaMantoni on 07 Jun 2005


Dizionario vuoto

Bisognerebbe introdurre un altro codice d'errore da far ritornare alle funzioni del modulo 4 se il dizionario passatogli e' vuoto...

Ad es. nella scriviDizionario sono indeciso se fargli ritornare EMPTY_FILE o NO_MORE_ELEMENTS in questa evenienza.

-- Comment added by AndreaMantoni on 07 Jun 2005


Consegna del modulo 3

E non solo!!!Anke le funzioni ke manipolano la struttura del dizionario (se l'hai cambiata per l'ordine delle kiavi) devono essere cambiate!!!

-- Comment added by DavidBenedetti on 07 Jun 2005


email e moduli del professore....

Professore, ho linkato i suoi moduli per l'operazione di pulitura e tokenizzazione dei files ke ha pubblicato....ma ho notato ke alcuni di essi creano problemi anke con i suoi moduli.....!!!

-- Comment added by DavidBenedetti on 07 Jun 2005


Consegna del modulo 3

Cioè che significa??? Non ci sto capendo---+ nulla. Io ci ho messo il modulo che avevo già inviato nella precedente consegna. Che vuol dire ciò che tu affermi (David Benedetti) ?

-- Comment added by MassimilianoNatale on 07 Jun 2005


modulo 3 e vecchi moduli

Beh, la riconsegna del modulo3.c può divenire seriamente un problema nel momento in cui i tests su tale modulo siano andati molto male. La riconsegna credo non sia dovuta tanto al fatto di dover cambiare alcune funzioni (io non ne ho cambiata nessuna...quando devo utilizzare numeri superiori a 1.0 utilizzo "modificaValore" invece di "inserisciValore"...e credo che questa fosse l'idea del professore) tanto più che io non ho cambiato praticamente nulla, ma quanto nel fatto che dopo aver visto i tests del modulo3.c uno può correggere gli errori commessi. Questo perché il modulo4.c utilizza alcune funzioni del modulo3.c che non possono essere implementate con quelle del professore, dato che il prof non sa quale struttura dati avete utilizzato, quindi non può usare le proprie funzioni con i vostri dizionari. Questo lo obbliga (e obbliga noi) a dover utilizzare le funzioni del nostro modulo3.c ...ma ovviamente sapendo come sono andati i tests del modulo3.c possiamo correggere il modulo (tra l'altro sono abbastanza convinto che ci sia una piccola inesattezza nei tests, come ho già scritto nei topic appositi, che fa perdere qualche punto).

-- Comment added by EnricoMontesi on 07 Jun 2005


RE: timeout

Finora ho usato 5 o 10 secondi, ma posso aumentare se serve.

-- Comment added by AndreaSterbini on 07 Jun 2005


timeout

mi farebbe un piacere prof perchè mi sono accorto che la processDirs e quasi tutti i test ci mettono un pò, sui 12-15 secondi a seconda del numero di email..intorno a un secondo a email!!grazie

-- Comment added by TizianoFranchi on 07 Jun 2005


calcolaDizionario(): per quanto riguarda i token

Nella funzione calcolaDizionario() basta esplorare uno dei due dizionari (HAM o SPAM) per sapere quali sono TUTTI i token da considerare? O può capitare che per alcuni token la voce è presente soltanto in uno dei 2 dizionari (e dunque bisogna esplorarli entrambi?). Faccio un esempio: io esploro solo il dizionario HAM e per ogni voce trovata vado a cercare il valore della stessa chiave però presente nel dizionario SPAM. Però mi viene il dubbio che ci siano voci presenti UNICAMENTE in uno soltanto dei dizionari.

-- Comment added by MassimilianoNatale on 08 Jun 2005


calcolaDizionario

Ci saranno voci presnti in HAM ma non in SPAM e viceversa, quindi devi controllare entrambi i dizionari.

-- Comment added by EnricoMontesi on 08 Jun 2005


processDirs()

all'interno di processDirs se ho capito bene bisogna creare tre dizionari (quello di ham, quello di spam, e quello finale da far compilare alla calcolaDizionario), quindi io ho usato la nuovoDizionario, ma che dimensione devo passargli? una a mia scelta sufficientemente grande? 1000 elementi va bene? (scusate se la domanda è già stata fatta ed è ripetitiva, ma ogni volta i forum diventano di una lunghezza ingestibile ^_^')

-- Comment added by AlbertoLaRocca on 08 Jun 2005


processDirs()

Io ho messo 50000...basteranno? big grin

-- Comment added by AlessandroGrottoli on 08 Jun 2005


processDirs()

LOL big grin
cmq hai fatto bene, alla fine tanto vale esagerare, tanto non si tratta di un "commit", ma di un "reserve" (per così dire :P ) mo ci metto un milione big grin

-- Comment added by AlbertoLaRocca on 08 Jun 2005


processDirs()

anzi, ci metto proprio 0x7FFFFFFF, il massimo memorizzabile in un int big grin tanto è solo un "reserve", no? smile

-- Comment added by AlbertoLaRocca on 08 Jun 2005


processDirs()

...per come l'ho implementato io no, io le inizializzo subito... frown

-- Comment added by AlessandroGrottoli on 08 Jun 2005


consegna modulo3

professore, ma se uno non ha fatto nessuna modifica al modulo3 e a dizionario.h non c'è bisogno che li riconsegna, no?

-- Comment added by AlbertoLaRocca on 08 Jun 2005


come non detto, ho visto che la consegna del modulo3 e del dizionario è necessaria

-- Comment added by AlbertoLaRocca on 08 Jun 2005


risultati modulo 4

ora che il prof. è fuori Roma (almeno così è scritto nella pagina iniziale) quand'è che avremo i risultati del modulo 4? non dovremo mica aspettare fino a luglio!?

-- Comment added by AlbertoLaRocca on 10 Jun 2005


X Alberto

mmm...eh...ehm...credo proprio di si...

-- Comment added by EnricoMontesi on 11 Jun 2005


Aspettando.. si scongiura..

dico solo una cosa.. ALMENO 18!!!(per la serie chi si accontenta gode) visto che ho perso(PIACEVOLMENTE) svariate ore di sonno... abbi pietà di noi.. poveri studenti.. ..come sempre Cordiali Saluti

-- Comment added by DavideFacente on 11 Jun 2005


RE: risultati modulo 4

Come minimo ... smile

No, me ne occupo anche qui in "trasferta" al mare coi bambini ... smile

-- Comment added by AndreaSterbini on 12 Jun 2005


risultati modulo 4

...la moglie sicuramente ci vorrà molto bene per questo...^^

-- Comment added by EnricoMontesi on 15 Jun 2005


risultati modulo 4

Mi sa che ha dato priorità alla moglie frown

-- Comment added by MassimilianoNatale on 25 Jun 2005


risultati modulo 4

come dargli torto? ^^ comunque entro il 5 luglio (incluso) sapremo... (rattle-rattle-rattle! O___O)

-- Comment added by AlbertoLaRocca on 25 Jun 2005


RE: risultati modulo 4

Ho pubblicato una primissima bozza con i primi TestsModuloQuattro.

-- Comment added by AndreaSterbini on 26 Jun 2005


RE: risultati modulo 4

Ed ecco la prima versione completa dei TestsModuloQuattro

-- Comment added by AndreaSterbini on 19 Jul 2005


No such template def TMPL:DEF{PROMPT:thread}

-- AndreaSterbini - 20 May 2005


This topic: Labprog2eo > DateEScadenze > ModuloQuattro > DomandeSulModuloQuattro
Topic revision: r172 - 2005-08-21 - AndreaSterbini
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback