Newsgroup: it.comp.lang.visual-basic
Titolo: [Quasi Joke] .. Creazione vocabolario

Siccome sono piu' delle sei, e non mi va , oggi di farmi tutto il soltio
traffico, ho voluto rimanere in ufficio e aspettare che il traffico
diminuisca.
Per ammazzare il tempo ho iniziando aprendo un nuovo progettino che fa lo
stesso effetto del t9 di telefonini appoggiandmo a un database access.
Poi l'idea del vocabolario.
una funzione che crea stringhe/parole che vanno dai 4 ai 15 caratteri
randomici (numeri inclusi) e li inserisce in una tabella.
poi pero' mi sono accorto,
che il db si riempie di parole doppiate.
e allora ho fatto una funzione che cerca nel database
se la parola appena generata è gia presente, altrimenti prova un altra
parola.
Questo va bene...
solo che quando le parole iniziano a diventare 20, 25 mila... "vedo" che il
programma soffre un po'...
Cioè è normale...
dato che uso una select distinct per trovare se la parol è doppia o meno...
insomma, la domanda è
come procedereste voi per fare in modo piu' snello possibile, una sub che
crei e inserisca tante parole una diversa dall'altra ?

 crei e inserisca tante parole una diversa dall'altra ?
il software sta ancora girando, in questo momento,
ci sono 51mila parole.
Una domanda:
Quanti record formato stringa puo' contenere un db access in una sola
tabella ?

Beh io ho una tabella anagrafica moooooooolto povera e sono piů di 
179.000 record (comprese altre colonne), e non dŕ segni di cedimento.
Ovviamente quel database non lo stresso e quando devo farlo ne faccio 
sempre una copia (non mi affido mai seriamente ad Access), ma questo per 
dirti che per ora non credo tu abbia problemi con 50.000 record.
Per la creazione delle parole io proverei in un modo un tantino diverso: 
cercherei un vocabolario in formato database su internet (chessň, un 
elenco dei vocaboli italiani) e mi costruirei un algoritmo che associ ad 
ogni parola il codice numerico relativo al T9...
Ora non mi va di soffermarmi tanto sulla questione algoritmo perchč 
dovrei fare delle cosine prima di smontare da lavoro, ma forse cosě il 
tuo pc e il database soffrono di meno ;)
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa.

 179.000 record (comprese altre colonne), e non dà segni di cedimento.
in questo momento sono a 80mila...
Vedi: dai miei post
dalle 18:13  alle 18:53 (50 minuti) ho inserito 51mila parole.
Dalle 18:53 alle 19:49  (quasi un ora...) solo 30.000
Si vede che è un algoritmo che soffre....
Chiedo ancora se qualcuno ha qualche idea su come sviluppare un algortimo
snello e veloce per questo tipo di inserimento :)


Non e' un problema di numero di record ma di size database.
Se hai una tabella sola vai tranquillo sino a 1Gb o 2Gb a seconda
della versione.
Ciao
Lorenzo

"Akuma" <Antispa...@Chiedete.la> ha scritto nel messaggio
news:B4qQd.47540$2h5....@tornado.fastwebnet.it...

Magari è una cosa scontata che hai già valutato:
Il campo di ricerca è indicizzato...?
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

"Akuma" <Antispa...@Chiedete.la> ha scritto nel messaggio
news:RvrQd.47740$2h5....@tornado.fastwebnet.it...

Perchè invece di un SELECT DISTINCT non provi un
SELECT COUNT(*) AS RecFind FROM NomeTabella WHERE [NomeCampo]......
Abitualmente è più veloce per ricerche di questo tipo su campi indicizzati.


 snello e veloce per questo tipo di inserimento :)
Google -> Soundex
Andrea

"Akuma" <Antispa...@Chiedete.la> ha scritto

in _questo_ caso, per una cosa del genere, su un pc locale, con dao, index e
seek.
ne feci una simile intorno al 1991 in clipper, e con 100k record su un 286
il seek era _istantaneo_.
poi e' da vedere come se la sbriga l'mdb a crescere, ma se hai solo quella
tabella non dovrebbe essere pesante.
ciao, j.

"Akuma" <Antispa...@Chiedete.la> ha scritto

stai tranquillo, hai margine :)
il limite teorico non lo so. con access97 sono arrivato a 4 milioni di righe
di questa tabella:
TABLE: file
---FLD: DiskNum (n-longint, Size: 4, Req.: True)
---FLD: DirNum (n-longint, Size: 4, Req.: False)
---FLD: FilNum (n-longint, Size: 4, Req.: False)
---FLD: ZipNum (n-integer, Size: 2, Req.: False)
---FLD: FilName (text, Size: 255, Req.: False)
---FLD: FilExt (text, Size: 255, Req.: False)
---FLD: FilDate (date/time, Size: 8, Req.: False)
---FLD: FilSize (n-longint, Size: 4, Req.: False)
---FLD: FilAttr (n-byte, Size: 1, Req.: False)
---FLD: FilZip (boolean, Size: 1, Req.: False)
------IDX: DirNum (DirNum, DiskNum, FilNum)
------IDX: DiskNum (DiskNum, DirNum, FilNum)
------IDX: FilName (FilName, FilDate, DiskNum)


abbi pazienza ma al di la della implementazione tecnica....
GENERA parole di 5 lettere
RAGNO
BAGNO
...
FAGNO (???)
TAGNO(?????)
HAGNO(?????????)
che fai poi...una volta generate ti metti a "scremarle"?
NAAAAAAAA!
Wodka says:
1) Scarica un vocabolario della lingua italiana
2) In subordine....prendi tutte le lettere dell'ufficio e cataloga le
parole...sperando che la segretaria sappia l'italiano
3) Extrema ratio: scaricati i promessi sposi...o un libro di faletti....o di
umberto eco.....convertilo in doc o txt...e cataloga le parole
la 3 e la 2 sono forti...ho fatto roba simile quando lavoravo con un
filologo!
:-)

 :-)
e cosa *li* dicevi di bello, al filologo ? :P


LI?...uh....dove ho sba*li*ato?....sai il sonno!
Beh spetta!
http://www.unisi.it/ricerca/centri/cislab/ritmi/dbr.htm
sezione DBR
"....
The DBR (Rhythms Database) is a piece of software initiated in 1999 by
Giacomo Desideri and his GDC (alpha version), and brought to fruition (Beta
version) by Marco Meucci at MARTEK in 2002 according to a project of mine
...."
:-)...io parlo male itagliano...ma che vordě...mica io so fillocoso...
Non lavori te con parolle?
Scherzi a parte, (che schifo di trasmissione)....
Saluti!
(con tutte le s e tutte le t)
bai bai!
-- 
------------------------------------------------
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)


Hey Wodkino secondo me si riferisce ai tuoi post di risposta a "sfogo verso
tutti coloro che mi hanno attaccato".... li ce ne sono parecchi di LI ;-))
Cmq stò ancora ridendo da ieri per quel post... sei stato troppo forte!
Ciao, Vincenzo

 
http://www.unisi.it/ricerca/centri/cislab/ritmi/dbr.htm
http://www.unisi.it/ricerca/centri/cislab/ritmi/mss.htm
UN DATACONTROL ! HA ! NON SONO IL SOLO :)
sembra un bel lavoro davvero, wodka, complimenti.
ciao, j.

 crei e inserisca tante parole una diversa dall'altra ?
Campo indicizzato non duplicato (Primary Key ???), inserimenti (con addnew e 
non con la insert) brutali senza controlli, intercetto l'errore chiave 
duplicata e gli dico di fregarsene (on error resume next)
Ciao,
Federico 

> inserimenti (con addnew e non con la insert)
[SNIP]
Perchč?
Non č piů lenta la coppia addnew/update rispetto all'INSERT?



Oppure, ancora meglio, inserisci tutto a brutto grugno, senza alcun tipo di 
controllo, parole singole e anche duplicate.
Poi, alla fine, un select distinct.
Per quanto tempo possa impiegare, sempre minore che un controllo ad ogni 
singolo insert.
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

 ciao, j.
Siete in buonissima compagnia... io porto il vino... !

 singolo insert.
ma visto che sta cosa sta andando avanti a creare parole random da 4 a 20
char alfanumerici...
A CHE CACCHIO SERVE IL CONTROLLO ? ^__^
Basta inserirle in ordine da "aaaa" a "99999999999999999" e sei a posto !
Ti crei un charset tipo
"abcdefg...zABCD...Z012...89"
poi inizi a creare le voci da 4 finche' non arrivi a 9999
poi passi a 5 fino a 99999 ...
non noti una certa relazione ?
con un paio di cicletti for e if te la cavi , poi lanci il programma e vai a
casina... domattina avra' finito di sicuro :p
PS: io di solito se debbo uscire alle 6 esco alle 6-15 per evitare il
traffico, ma MAI dopo :p


Uhm..tutto sta a capire bene il "dopo" :)
il mio _dopo_, ieri, è stato le 21 di sera :)

 Non è più lenta la coppia addnew/update rispetto all'INSERT?
No, perchè la update la fai solo ogni tot cicli (tipo 1000 o 2000), un 
doevents a ogni ciclo e vai una scheggia!!!
Ciao,
Federico 

 Basta inserirle in ordine da "aaaa" a "99999999999999999" e sei a posto !
esatto. il mio clipper faceva esattamente cosi', ruotando una stringa 0-z di
un carattere per volta, e a creare 100k record ci metteva proprio niente,
mica enne minuti.
ma mi dispiaceva rovinare l'attesa all'op:)
ciao, j.
ragazzi, mi spiace. in questa cosa usare sql e' *ridicolo*. lo vieteranno
come i suv :PP

 ha scritto nel
messaggio 
news:37glu5F...@individual.net

Beh insomma bello no!
Son intervenuto su un lavoro giŕ iniziato da un mio(allora) amico....poi
scomparso nel nulla!(ebbi da ridire con la sua signora segretaria
assolutamente  terribile
 da un cliente...e sai come sono le donne....tira piů un pelo di fi%%...e
l'amicizio fu persa!)
Insomma .....se ti lamenti per un datacontrol.......
ne ho fatti vedere uno...ma sapessi quanti ce ne sono nascosti!
E' fatto in DAO....
siccome erano ricercatori ogni mese c'era il summit e mi cambiavano
tabelle....ma i dati andavano salvaguardati...anche perchč una parte li
metteva uno spagnolo...un altra un inglese...etc etc
Pensa che melassa č il database!
Arrivati a fare il cd ...se lo son fatti per cazzi sua (non volevano
spendere per il lavoro finale).
Io ho scritto che arrivati ad un punto "Stabile" del database...andrebbe
rifatto in ADO +msde e riscritto alla luce delle loro scoperte!
Ma sai come sono i prof Universitari.....non se ne č fatto di nulla!(perň il
rifinanziamento se lo son beccato)
E in pratica č una cosa che per loro č il massimo....in realtŕ andrebbe
ottimizzato e riscritto tutto!
Hanno fatto come Mamma Microsoft....arrivati alla versione
finale.....distribuiscono la beta!...e investono in altro!
Evvabbč
Se vi interessa qualcosa di simile (uguale no...il codice č di loro...) a
voi bibliotecari....son qui!
;-)
Saluti...anche a java!
Bau!
-- 
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Demo classe vb.NET :
WodkaThumb 
www.villaceleste.it
  click su "spippolando e
Programmando"

"Akuma" <Antispa...@Chiedete.la> ha scritto nel
messaggio news:SjJQd.49355$
2h5...@tornado.fastwebnet.it

Io contino a pensare che parole random non ha senso
ANZI
definirle parole, javalab dammi la definizione, non è corretto!
TU GENERI
Sequenze alfanumeriche...che per caso ogni tanto...chissà come ...son
parole!
Utilità a fini di un T9 ....ZERO!
ripeto: Cataloga le parole di un romanzo...una volta per tutte....se prendi
un saggio contemporaneo ci sono il 90% delle parole di uso comune!
e poi cmq...l'utonto si può inserire le sue "custom" no?
Le sequenze alfanumeriche al limite ti possono servire per un generatore di
password.....calcolando l'entropia etc etc .....
-- 
Il Wodkino Nazionale è a : 
www.martek.it


 Sequenze alfanumeriche
si' anche a me sembra piu' corretta questa definizione.
una 'parola' di solito ha un senso.
oddio, abbiamo una classe politica che fa del suo meglio per dimostrare il
contrario.. 'unione' quando sono divisi, 'situazione scorrevole' quando la
sa-rc e' murata di ghiaccio e tir... vabbe', facciamo che non contano :)

 posto !
Facendo così non sono più veramente random, e mi sembrava uno dei 
presupposti.
Inserisci mille parole col tuo metodo.
Poi, visto che ti avanza tempo, inseriscine altre mille.
Poi altre mille.
Sei già finito.
Ancora peggio se imponiamo, ad esempio, che l'iniziale sia una lettera a 
turno.
In questo modo, imponiamo che ogni lettera abbia da un minimo ad un massimo 
di parole che iniziano con lei, e questo preclude il fatto che la 
distribuzione sia casuale.


 presupposti.
Giuro che avevo scritto da qualche parte "...e poi mischiali ..."
ma evidentemente l'ho zappata via :-/
io genererei cmq prima tutte le combinazioni ( o permutazioni? )
e poi le mischierei. sicuramente ci metti meno tempo che a creare random e
controllarle...
ad esempio :
apri un file di testo in scrittura e scrivi in append tutte le parole.
(l'append mi pare sia molto veloce come metodo)
poi apri un secondo file in scrittura e il primo in lettura
leggi una riga a caso e la scrivi nel secondo randomizzato.
Se la capienza lo permette puoi lavorare direttamente in Var allocate in
memoria che riducono ancora i tempi. Poi prendi il tuo array mischiato e lo
schiaffi nel tuo db.
Credo che sia molto molto veloce.
Ci sono poi altri 20modi per ottimizzare la creazione e la "michiatura"
degli array e la scrittura nel db...
Termopeloso c'e' pane per i tuo denti.
-- 
[Gigio2k]
http://www.g2kweb.it
[ it-alt.comp.hardware.modding ] - 
http://www.g2kweb.it/ichm

 random e controllarle...
Intendevo che non sono piů random quantitativamente, non per il sort.
L'OP voleva una massa di parole random, non tutte le parole in ordine 
random.
Ciao
Alberto 

 Alberto
Frena!
Calma e gesso
Riassumiamo:
Akuma ha detto che vuole fare una cosa tipo T9....
e poi ha detto che vuole generare parole random...
io vi ho lasciato fare ma è un bel po di post che parlate NON di parole ma
di sequenze alfanumeriche!!!
c'è una bella differenza
Prova a generare 10 sequenze alfanumeriche di 5 lettere
e 10 parole di 5 lettere....
secondo voi è la solita cosa?
e qual è enormemente più difficile da fare NON appoggiandosi su un database
come fa il T9 dei cellulari?
Io non vedo nesuna utilità "T9esca" (e nessuna utilità pratica) nel generare
"AUUHA" "SDREM"  "JUKKOL" e via andare....a meno di non parlare Klingon!
Saluti!
