4592
Commento:
|
8808
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 1: | Linea 1: |
Mi chiamo Antonio CHESSA nato a Cagliari il 13/06/1944 vivo a Roma dal 1958 per questo mi considero romano Sono impiegato presso le Ferrovie dello Stato dove dal 1980 ad oggi mi sono sempre occupato di informatica Ho imparato a programmare in - basic su sistema Apple II e successivamente su sistemi MS.DOS (anni 80-84) -in clipper linguaggio di programmazione e anche compilatore del DBIII sempre su P.C. con S.O. MS.DOS(anni 84-96) -in Apache PHP MYSQL sempre sotto P.C. e sotto piattaforma Windows (Anni 2000- 2002) -in Python WxPython MySQL ancora sotto P.C. e portatili con sistema operativo Windows xp (2004) Dall' anno scorso dopo aver installato sul mio portatile e fatto convivere con windows xp una distro linux (mandriva 10.2)sto cercando di entrare nel mondo linux e dell'open source anche se con risultati scarsi in quanto non sono riuscito a trasportare in linux il mio ambiente di sviluppo. 15 giorni orsono ho installato UBUNTU 6.06 e ho conosciuto la comuniti di questa distro. Forse è arrivata la volta buona per soddisfare questo mio desiderio di realizzare qualcosa che giri su più piattaforme. Sono qua per illustare come sia possibile, utilizzando python o qualsiasi altro linguaggio che possa gestire i file di testo,realizzare un semplice database o DB. In effetti se uno ci pensa bene basta un semplicissimo editor ma certol'immisione , ricerca, visualizzazione,cancellazione e stampa non sono cosi immediate come quando si usa un linguaggio di programmazione e poi certamente non si impara a gestire bene i file. |
Mi chiamo Antonio CHESSA, nato a Cagliari il 13/06/1944, vivo a Roma dal 1958 per questo mi considero romano. Sono impiegato presso le Ferrovie dello Stato dove dal 1980 ad oggi mi sono sempre occupato di informatica. Ho imparato a programmare in [[BR]] - basic su sistema Apple II e successivamente su sistemi MS.DOS (anni 80-84)[[BR]] -in clipper linguaggio di programmazione e anche compilatore del DBIII sempre su P.C. con S.O. MS.DOS(anni 84-96)[[BR]] -in Apache PHP MYSQL sempre sotto P.C. e sotto piattaforma Windows (Anni 2000- 2002)[[BR]] -in Python WxPython MySQL ancora sotto P.C. e portatili con sistema operativo Windows xp (2004).[[BR]] Dall' anno scorso, dopo aver installato sul mio portatile e fatto convivere con windows xp una distro linux (mandriva 10.2),sto cercando di entrare nel mondo linux e dell'open source anche se con risultati scarsi in quanto non sono riuscito a trasportare in linux il mio ambiente di sviluppo. [[BR]] 15 giorni orsono ho installato UBUNTU 6.06 ed ho conosciuto la comuniti di questa distro. Forse è arrivata la volta buona per soddisfare questo mio desiderio di realizzare qualcosa che giri su più piattaforme.[[BR]] Sono qua per illustare come sia possibile, utilizzando python o qualsiasi altro linguaggio che possa gestire i file di testo,realizzare un semplice database o DB. In effetti se uno ci pensa bene basta un semplicissimo editor ma certol'immisione ,la ricerca,la visualizzazione, la cancellazione e la stampa non sono cosi immediate come quando si usa un linguaggio di programmazione e poi certamente non si impara a gestire bene i file.[[BR]] |
Linea 12: | Linea 13: |
Un '''DB''' è uno spazio dell'HD dove vengono conservate in appositi contenitori le informazioni che poi dovranno essere fornite al momento che verranno richieste dall'utente. IL '''DB''' vero e proprio è il primo contenitore che noi individuiamo con un nome esattamente come una '''Directory o cartella''' al suo interno trovano posto alcune '''Tabelle o file''' | Un '''DB''' è uno spazio dell'HD dove vengono conservate in appositi contenitori le informazioni che poi dovranno essere fornite al momento che verranno richieste dall'utente. IL '''DB''' vero e proprio è il primo contenitore che noi individuiamo con un nome esattamente come fi fa per una '''Directory o cartella'''; al suo interno trovano posto alcune '''Tabelle o file''' |
Linea 15: | Linea 16: |
il nome delle '''Tabelle''' sarà ''' 1) Strurub.txt 2)Rubrica.txt ''' | il nome delle '''Tabelle''' sarà ''' 1) Strurub.txt 2)Rubrica.txt '''[[BR]] |
Linea 17: | Linea 18: |
Per le '''Tabelle o file''' vediamo invece come devono essere inserite le informazioni per poter essere riprese in maniera altrettanto semplice e facile: vediamo una '''Tabella esempio''' | per le '''Tabelle o file''' vediamo invece come devono essere inserite le informazioni per poter essere riprese in maniera altrettanto semplice e facile: vediamo una '''Tabella esempio''' |
Linea 26: | Linea 27: |
'''Cognome,Nome,Indirizzo,Cap,Citta,Prov,Tel Fisso,Tel Mobile o Cell1,Cell2 '''; per distinguere una riga da un' altra useremo un codice composto da 4 caratteri numerici (es 0001, 0100, 8500 sono tutti identificativi di riga possibili).Il piu alto Identificativo sarà '''9999''', il piu basso sarà '''0000'''; vanno considerati come stringhe o caratteri alfanumerici anche se appaiono come cifre. | '''Cognome,Nome,Indirizzo,Cap,Citta,Prov,Tel Fisso,Tel Mobile o Cell1,Cell2 '''.[[BR]] Per distinguere una riga da un' altra useremo un codice composto da 4 caratteri numerici (es 0001, 0100, 8500 sono tutti identificativi di riga possibili).Il più alto Identificativo sarà '''9999''', il piu basso sarà '''0000'''; vanno considerati come stringhe o caratteri alfanumerici anche se appaiono come cifre. |
Linea 28: | Linea 30: |
Per quanto sopra la '''Tabella Rubrica.txt ''' conterrà: Id_record: '''0101''' Cognome: '''Rossi''' Nome: '''Natale''' Indirizzo: '''Via della Vittoria 35''' Cap: '''20100''' Città: '''Barletta''' Prov: '''Ba''' Tel_Fisso: '''0567232417''' 1_Cell: '''3283525716''' 2_Cell: '''3384037936''' |
Per quanto sopra la '''Tabella Rubrica.txt ''' conterrà: [ [BR]] Id_record: '''0101'''[[BR]] Cognome: '''Rossi''' [[BR]] Nome: '''Natale'''[[BR]] Indirizzo: '''Via della Vittoria 35'''[[BR]] Cap: '''20100'''[[BR]] Città: '''Barletta'''[[BR]] Prov: '''Ba'''[[BR]] Tel_Fisso: '''0567232417'''[[BR]] 1_Cell: '''3283525716'''[[BR]] 2_Cell: '''3384037936''' [[BR]] |
Linea 41: | Linea 45: |
ciò ha un duplice inconveniente la lunghezza della riga varia in continuazione come pure l'ampiezza di ogni singola cella e ciò dipende dalle informazioni che andranno a contenere. | ciò ha un duplice inconveniente la lunghezza della riga varia in continuazione come pure l'ampiezza di ogni singola cella e ciò dipende dalle informazioni che andranno a contenere.[[BR]] |
Linea 43: | Linea 47: |
e l'ampiezza delle colonne e cioè : | e l'ampiezza delle colonne e cioè :[[BR]] |
Linea 45: | Linea 49: |
Id_record: 4 caratteri di tipo alfanumerico Cognome: 20 caratteri di tipo alfanumerico Nome: 20 caratteri di tipo alfanumerico Indirizzo: 40 caratteri di tipo alfanumerico Cap: 5 caratteri di tipo alfanumerico Città: 20 caratteri di tipo alfanumerico Prov: 2 caratteri di tipo alfanumerico Tel_Fisso: 14 caratteri di tipo alfanumerico 1_Cell: 12 caratteri di tipo alfanumerico 2_Cell: 12 caratteri di tipo alfanumerico |
Id_record: '''4 caratteri di tipo alfanumerico '''[[BR]] Cognome: '''20 caratteri di tipo alfanumerico''' [[BR]] Nome: '''20 caratteri di tipo alfanumerico '''[[BR]] Indirizzo: '''40 caratteri di tipo alfanumerico''' [[BR]] Cap: '''5 caratteri di tipo alfanumerico''' [[BR]] Città: '''20 caratteri di tipo alfanumerico ''' [[BR]] Prov: '''2 caratteri di tipo alfanumerico''' [[BR]] Tel_Fisso: '''14 caratteri di tipo alfanumerico''' [[BR]] 1_Cell: '''12 caratteri di tipo alfanumerico'''[[BR]] 2_Cell:''' 12 caratteri di tipo alfanumerico'''[[BR]] Abbiamo cosi disposto che le celle avranno in qualunque riga la stessa ampiezza, o meglio metteranno a disposizione per contenere le informazioni sempre gli stessi spazi ma nella immissione delle informazioni alcune celle saranno completamente piene altre no.[[BR]] Per esempio le celle intestate con Id_record saranno sempre piene con uno dei valori compresi tra '''0000''' e '''9999''' e cosi pure saranno piene le celle che conterranno i valori del Cap e della Prov. Mentre le altre saranno riempite con le infermazioni che noi immetteremo: per esempio a Cognome potremmo immettere '''Rossi''' che occupa solo 5 caratteri oppure a Nome ''' Marcello''' che occupa solo 8 caratteri. Per riempire tutta la colonna possiamo aggiungere il carattere '''§''' che sicuramnente non viene mai usato nelle nostre indiformazioni perchè non esiste nell'alfabeto sia Italiano che internazionale ovviamente ripetuto tante volte quante ne mancano per riempire la cella cosi '''Cognome''' conterrà '''Rossi''' + '''§§§§§§§§§§§§§§§'''. Aggiungiamo[,] un carattere di separazione delle celle e poi i 2 caratteri [\n] per indicare il fine riga. In questo modo abbiamo progettato che tutte le righe avranno lunghezza pari a tutte le ampiezze + tutti i separatori di cella piu il fine riga e cioe 149 +10+2 = 161[[BR]] Abbiamo completato cosi il progetto della tabella '''Rubrica.txt''' ma per fare in modo che non dimentichiamo questo progetto lo memorizzeremo sulla tabella '''Strurub.txt''' Strurub sta per Struttura Rubrica. ora progettiamo con le stesse regole '''Strurub.txt'''[[BR]] Id_record:''' 4 caratteri alfanumerici'''[[BR]] Nome_colonna: '''20 caratteri alfanumerici '''[[BR]] Tipo dell'informazione:''' 1 carattere alafanumerico''' [[BR]] ''''''potra contenere '''''' '''A''' per alfanumerico '''N''' per numerico, in questo caso nella lunghezza saranno compresi anche i decimali; vediamo poi meglio nell'esempio sotto. riepilogando e facendo riferimento al progetto della tabella rubrica la nostra tabella '''Strurub.txt''' conterrà i seguenti dati: Id_record: '''0000''' come per gli indici degli array il primo elemento ha valore 0 [[BR]] Nome Colonna: '''"Id_Record"''' Lunghezza: ''' 20 ''' tipo:'''A''' ora la tabella '''Strurub.txt''' conterrà ||0000,Id_record§§§§§§§§§§§,4§,A,§,\n|| ||0001,Cognome§§§§§§§§§§§§§,20,A,§,\n|| ||0002,Nome§§§§§§§§§§§§§§§§,20,A,§,\n|| ||0003,Indirizzo§§§§§§§§§§§,40,A,§,\n|| ||0004,Cap§§§§§§§§§§§§§§§§§,5§,A,§,\n|| ||0005,Citta§§§§§§§§§§§§§§§,20,A,§,\n|| ||0006,Prov§§§§§§§§§§§§§§§§,2§,A,§,\n|| ||0007,Tel_Fisso§§§§§§§§§§§,14,N,0,\n|| ||0008,Cell1§§§§§§§§§§§§§§§,12,N,0,\n|| ||0009,Cell2§§§§§§§§§§§§§§§,12,N,0,\n|| =N.B.= Ho volutamente inserito nella tabella '''Strurub.txt''' il tipo di dato per Tel_fisso e Cell1 come numerico per dimostrare come si inseriscono i dati di tipo numerico nella casella dove ora appare lo zero potevano essere indicati i decimali cosa che per i numeri telefonici non esistono.[[BR]] Ora con la stessa logica simuliamo il riempimento della tabella '''Rubrica.txt''' per questioni di spazio mettero i dati su due righe ma voi immaginateli sulla stessa riga come appaiono nella tabella realmente[[BR]] ||0000,Rossi§§§§§§§§§§§§§§§,Gerardo§§§§§§§§§§§§§,Via delle favole di Esopo 24§§§§§§§§§§§|| ||20210,Milano§§§§§§§§§§§§§§,MI,02234567899§§§,3283435711§§,3383435711§§,\n|| ||0001,Bianchi§§§§§§§§§§§§§,Menelao§§§§§§§§§§§§§,Via delle favole di Fedro 88§§§§§§§§§§§|| ||00158,Roma§§§§§§§§§§§§§§§§,RM,06764567899§§§,3283438812§§,3393537711§§,\n|| |
Mi chiamo Antonio CHESSA, nato a Cagliari il 13/06/1944, vivo a Roma dal 1958 per questo mi considero romano. Sono impiegato presso le Ferrovie dello Stato dove dal 1980 ad oggi mi sono sempre occupato di informatica. Ho imparato a programmare in BR - basic su sistema Apple II e successivamente su sistemi MS.DOS (anni 80-84)BR -in clipper linguaggio di programmazione e anche compilatore del DBIII sempre su P.C. con S.O. MS.DOS(anni 84-96)BR -in Apache PHP MYSQL sempre sotto P.C. e sotto piattaforma Windows (Anni 2000- 2002)BR -in Python WxPython MySQL ancora sotto P.C. e portatili con sistema operativo Windows xp (2004).BR Dall' anno scorso, dopo aver installato sul mio portatile e fatto convivere con windows xp una distro linux (mandriva 10.2),sto cercando di entrare nel mondo linux e dell'open source anche se con risultati scarsi in quanto non sono riuscito a trasportare in linux il mio ambiente di sviluppo. BR 15 giorni orsono ho installato UBUNTU 6.06 ed ho conosciuto la comuniti di questa distro. Forse è arrivata la volta buona per soddisfare questo mio desiderio di realizzare qualcosa che giri su più piattaforme.BR Sono qua per illustare come sia possibile, utilizzando python o qualsiasi altro linguaggio che possa gestire i file di testo,realizzare un semplice database o DB. In effetti se uno ci pensa bene basta un semplicissimo editor ma certol'immisione ,la ricerca,la visualizzazione, la cancellazione e la stampa non sono cosi immediate come quando si usa un linguaggio di programmazione e poi certamente non si impara a gestire bene i file.BR
Dunque vediamo che cosa è un '''DataBases'''
Un DB è uno spazio dell'HD dove vengono conservate in appositi contenitori le informazioni che poi dovranno essere fornite al momento che verranno richieste dall'utente. IL DB vero e proprio è il primo contenitore che noi individuiamo con un nome esattamente come fi fa per una Directory o cartella; al suo interno trovano posto alcune Tabelle o file con un loro preciso nome e una estensione che nel nostro caso sarà txt. Facciamo un esempio il nome del DB sarà Roma il nome delle Tabelle sarà 1) Strurub.txt 2)Rubrica.txt BR Mentre per il DB non c'è nulla da dire se non che è esattamente una Directory o cartella con le medesime regole; per le Tabelle o file vediamo invece come devono essere inserite le informazioni per poter essere riprese in maniera altrettanto semplice e facile: vediamo una Tabella esempio
Tabella esempio
pensiamo ad un foglio composto in righe e colonne simile ad un foglio di excel :
le colonne saranno intestate qui a solo titolo di esempio per comprenderene la necessita di dimensionarle in funzione dei dati che dovranno contenere. Le righe invece conterranno tutte le informazioni inerenti una persona.
Per memoria ricordo che stiamo costruendo una tabella che dovrà fungere da rubrica telefonica e che dovrà contenere:
Cognome,Nome,Indirizzo,Cap,Citta,Prov,Tel Fisso,Tel Mobile o Cell1,Cell2 .BR Per distinguere una riga da un' altra useremo un codice composto da 4 caratteri numerici (es 0001, 0100, 8500 sono tutti identificativi di riga possibili).Il più alto Identificativo sarà 9999, il piu basso sarà 0000; vanno considerati come stringhe o caratteri alfanumerici anche se appaiono come cifre.
Per quanto sopra la Tabella Rubrica.txt conterrà: [ [BR]]
Id_record: 0101BR Cognome: Rossi BR Nome: NataleBR Indirizzo: Via della Vittoria 35BR Cap: 20100BR Città: BarlettaBR Prov: BaBR Tel_Fisso: 0567232417BR 1_Cell: 3283525716BR 2_Cell: 3384037936 BR
Queste informazioni che qui sono messe una di seguito all'altra su disco vengono memorizzate una accanto all'altra; ciò ha un duplice inconveniente la lunghezza della riga varia in continuazione come pure l'ampiezza di ogni singola cella e ciò dipende dalle informazioni che andranno a contenere.BR Per eliminare questi inconvenienti riprogettiamo la nostra tabella in modo da avere costanti la lunghezza delle righe e l'ampiezza delle colonne e cioè :BR
Id_record: 4 caratteri di tipo alfanumerico BR Cognome: 20 caratteri di tipo alfanumerico BR Nome: 20 caratteri di tipo alfanumerico BR Indirizzo: 40 caratteri di tipo alfanumerico BR Cap: 5 caratteri di tipo alfanumerico BR Città: 20 caratteri di tipo alfanumerico BR Prov: 2 caratteri di tipo alfanumerico BR Tel_Fisso: 14 caratteri di tipo alfanumerico BR 1_Cell: 12 caratteri di tipo alfanumericoBR 2_Cell: 12 caratteri di tipo alfanumericoBR
Abbiamo cosi disposto che le celle avranno in qualunque riga la stessa ampiezza, o meglio metteranno a disposizione per contenere le informazioni sempre gli stessi spazi ma nella immissione delle informazioni alcune celle saranno completamente piene altre no.BR Per esempio le celle intestate con Id_record saranno sempre piene con uno dei valori compresi tra 0000 e 9999 e cosi pure saranno piene le celle che conterranno i valori del Cap e della Prov. Mentre le altre saranno riempite con le infermazioni che noi immetteremo: per esempio a Cognome potremmo immettere Rossi che occupa solo 5 caratteri oppure a Nome Marcello che occupa solo 8 caratteri. Per riempire tutta la colonna possiamo aggiungere il carattere § che sicuramnente non viene mai usato nelle nostre indiformazioni perchè non esiste nell'alfabeto sia Italiano che internazionale ovviamente ripetuto tante volte quante ne mancano per riempire la cella cosi Cognome conterrà Rossi + §§§§§§§§§§§§§§§. Aggiungiamo[,] un carattere di separazione delle celle e poi i 2 caratteri [\n] per indicare il fine riga. In questo modo abbiamo progettato che tutte le righe avranno lunghezza pari a tutte le ampiezze + tutti i separatori di cella piu il fine riga e cioe 149 +10+2 = 161BR
Abbiamo completato cosi il progetto della tabella Rubrica.txt ma per fare in modo che non dimentichiamo questo progetto lo memorizzeremo sulla tabella Strurub.txt Strurub sta per Struttura Rubrica. ora progettiamo con le stesse regole Strurub.txtBR Id_record: 4 caratteri alfanumericiBR Nome_colonna: 20 caratteri alfanumerici BR Tipo dell'informazione: 1 carattere alafanumerico BR potra contenere A per alfanumerico N per numerico, in questo caso nella lunghezza saranno compresi anche i decimali; vediamo poi meglio nell'esempio sotto. riepilogando e facendo riferimento al progetto della tabella rubrica la nostra tabella Strurub.txt conterrà i seguenti dati: Id_record: 0000 come per gli indici degli array il primo elemento ha valore 0 BR Nome Colonna: "Id_Record" Lunghezza: 20 tipo:A ora la tabella Strurub.txt conterrà
0000,Id_record§§§§§§§§§§§,4§,A,§,\n |
0001,Cognome§§§§§§§§§§§§§,20,A,§,\n |
0002,Nome§§§§§§§§§§§§§§§§,20,A,§,\n |
0003,Indirizzo§§§§§§§§§§§,40,A,§,\n |
0004,Cap§§§§§§§§§§§§§§§§§,5§,A,§,\n |
0005,Citta§§§§§§§§§§§§§§§,20,A,§,\n |
0006,Prov§§§§§§§§§§§§§§§§,2§,A,§,\n |
0007,Tel_Fisso§§§§§§§§§§§,14,N,0,\n |
0008,Cell1§§§§§§§§§§§§§§§,12,N,0,\n |
0009,Cell2§§§§§§§§§§§§§§§,12,N,0,\n |
=N.B.= Ho volutamente inserito nella tabella Strurub.txt il tipo di dato per Tel_fisso e Cell1 come numerico per dimostrare come si inseriscono i dati di tipo numerico nella casella dove ora appare lo zero potevano essere indicati i decimali cosa che per i numeri telefonici non esistono.BR
Ora con la stessa logica simuliamo il riempimento della tabella Rubrica.txt per questioni di spazio mettero i dati su due righe ma voi immaginateli sulla stessa riga come appaiono nella tabella realmenteBR
0000,Rossi§§§§§§§§§§§§§§§,Gerardo§§§§§§§§§§§§§,Via delle favole di Esopo 24§§§§§§§§§§§ |
20210,Milano§§§§§§§§§§§§§§,MI,02234567899§§§,3283435711§§,3383435711§§,\n |
0001,Bianchi§§§§§§§§§§§§§,Menelao§§§§§§§§§§§§§,Via delle favole di Fedro 88§§§§§§§§§§§ |
00158,Roma§§§§§§§§§§§§§§§§,RM,06764567899§§§,3283438812§§,3393537711§§,\n |