Usate la form
in fondo per aggiungere commenti.
Come al solito, spostate le chiacchiere su
OffTopic
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
-- Comment added by
RiccardoVona on 20 May 2005
EVVAI
Modulo4!!! iniziavano a prudermi le mani per l'inattività...
e a prima vista sembra un modulo molto interessante
-- 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
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
-- 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

).
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???)
-- 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è...!!!)
-- 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 ...
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

)
-- 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
-- Comment added by
AlessandroGrottoli on 02 Jun 2005
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!!!
-- 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

)
-- 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
- ho letto i files delle directory HAM e SPAM
- li ho ripuliti con pulisciTestoSemplice (con parametro max=1)
- 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
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!!!
-- 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!!!
-- 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?

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?
-- Comment added by
AlessandroGrottoli on 08 Jun 2005
processDirs()
LOL
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
-- Comment added by
AlbertoLaRocca on 08 Jun 2005
processDirs()
anzi, ci metto proprio 0x7FFFFFFF, il massimo memorizzabile in un int

tanto è solo un "reserve", no?
-- Comment added by
AlbertoLaRocca on 08 Jun 2005
processDirs()
...per come l'ho implementato io no, io le inizializzo subito...
-- 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 ...
No, me ne occupo anche qui in "trasferta" al mare coi bambini ...
-- 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
-- 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