Tag: implementazione

Tutorial postgresql: gestione rapida

Posted by – December 2, 2006

Una volta installato Postgresql (installazione dipendente dal sistema operativo e dal gestore dei pacchetti) il numero dei comandi che si possono impartire alla nostra base di dati è enorme.
Prima di tutto, se non è stato già fatto durante l’installazione, bisogna creare l’utente che accederà direttamente alla base di dati per evitare che lo faccia root, con ovvi rischi di sicurezza.

Le operazioni che seguono vengono solitamente effettuate durante l’installazione.
E’ bene fare un controllo prima di proseguire.

Creiamo l’utente con
$ adduser postgres

Creiamo la directory data, la directory dove Postgresql memorizzerà le tabelle

$ mkdir /usr/local/pgsql/data
Quindi assegniamo i permessi all’utente appena creato
$ chown postgres /usr/local/pgsql/data

Le operazioni che seguono invece sono tipicamente eseguite dopo l’installazione standard

Loggarsi come utente postgres, che in realtà è il root del database ed inizializziamo la directory “data” appena creata
$ su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

ATTENZIONE: se la fase di installazione ha già creato questa directory, il sistema ritorna un errore quando si cercherà di re-inizializzarla. Se si vogliono fare le cose in modo pulito dovremmo rimuovere il contenuto della /usr/local/pgsql/data e ripetere initdb come nell’ultimo comando.

Per avviare il database all’avvio del sistema consultare la documentazione del proprio sistema operativo o distribuzione GNU/Linux.

Database di test
Una volta installato è saggio creare un database di prova per controllare che tutto sia al posto giusto


$ su - postgres
$ /usr/local/pgsql/bin/createdb test
$ /usr/local/pgsql/bin/psql test
Welcome to psql 8.1.3, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
test=#

Un modo per controllare la base di dati senza ricorrere alla shell interattiva o al php via web consiste nell’installare pgadmin, un magnifico gestore per postgresql.

Creare utenti
Per creare utenti per il DBMS è necessario lanciare un createuser da postgres in modo che il nuovo utenti potrà creare database ma non creare nuovi utenti.

postgres@localhost:~$ createuser nuovoutente
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
postgres@localhost:~$

Cambiare la password
Se ci colleghiamo al database come utente postgres, possiamo modificare la password di accesso dell’utente proprietario del database:

postgres@localhost:~$ psql nomedatabase
Welcome to psql 7.4.8, the PostgreSQL interactive terminal.
...
nomedatabase=# alter user nomeutente password 'nuovapassword';
ALTER USER
nomedatabase=#

In questo modo nuovoutente può essere utilizzato da script accessibili da Internet. Per permettere connessioni TCP/IP bisogna modificare pg_hba.conf e riavviare il PostgreSQL server per attivare le modifiche:


#TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host web webuser 127.0.0.1 255.255.255.255 md5

Creare un db al volo
Per creare una base di dati da linea di comando

postgres@localhost:~$ createdb -h localhost -U utenteweb -W base-dati-web

Con l’opzione -W si forza la richiesta della password
con l’opzione -h si forza l’utilizzo di una connessione TCP/IP.

Connessione
Per connettersi alla base di dati appena creata:

utente@localhost:~$ psql nome-database nome-utente

Dump del database
pg_dump dbname > file.dmp

I dump creati con pg_dump sono consistenti.
Tutti gli aggiornamenti della base di dati durante l’esecuzione di pg_dump non saranno memorizzati nel file.dmp creato.
pg_dump non blocca le altre operazioni in esecuzione sul database, ad eccezione delle operazioni che devono operare in modalità esclusiva, come per esempio il VACUUM FULL per la manutenzione).

Restore del database
psql nomedatabase < infile

nomedatabase non viene creato. Bisogna crearlo prima di fare il restore (per esempio con createdb -T template0 nomedatabase)

Una volta eseguito il restore si consiglia di eseguire un ANALYZE su ogni database in modo che l’optimizer abbia statistiche valide.
Eseguire quindi vacuumdb -a -z to VACUUM ANALYZE all databases; oppure manualmente VACUUM ANALYZE.

E’ possibile anche fare il dump di un database remoto, da una macchina all’altra con
pg_dump -h host1 dbname | psql -h host2 dbname
(esegue il dump del dbname sull’host1 sull’host2).

Per fare il backup dell’intero cluster si usa il comando
pg_dumpall > cluster.dmp

e per il restore dell’intero cluster
psql -f cluster.dmp template1

Ovviamente bisogna essere il superuser del database dovendo fare il dump di tutti i db e di tutti gli utenti ad essi associati.

Usare dump compressi
Per comprimere il dump di un database molto grande
pg_dump dbname | gzip > data.dmp.gz

e il comando duale per ricaricare (dopo aver creato il database)
createdb dbname
gunzip -c data.dmp.gz | psql dbname oppure cat data.dmp.gz | gunzip | psql dbname

Implementazione dell’ MDCT (Modified Discrete Cosine Transform) secondo l’algoritmo Vorbis in linguaggio VHDL

Posted by – November 9, 2004

Progetto della laurea di I livello in Ingegneria Informatica presso il Politecnico di Milano(Reti Logiche).

Il maggior numero di calcoli che occorrono per la decodifica del
segnale OggVorbis si occupano della MDCT, trasformata discreta in
soli coseni, modificata per l’algoritmo usato dal Vorbis.

La proposta del relatore prevedeva l’implementazione dell’ algoritmo di mp3 (Mpeg Layer III).
La scelta successiva e’ ricaduta invece su un algoritmo completamente libero (free) come OggVorbis 1.0.

L’algoritmo, reperibile direttamente dai sorgenti delle libvorbis (non
esiste al momento una documentazione esauriente
dell’argomento), e’ stato implementato in linguaggio
VHDL.

Il VHDL e’ un linguaggio per progettazione hardware.
Si rimanda al sito di supporto per delucidazioni sul linguaggio.

Documentazione

La documentazione di supporto al progetto descrive nei dettagli un algoritmo che ottimizza al meglio le risorse di una piattaforma generica, visto che non ne e’ stata scelta una a priori (esula dalle richieste di progetto).

[progetto.pdf]

Documentazione dell’intero progetto
[mdct_source.tar.gz] Sorgenti in vhdl e C (di supporto) dell’intero progetto
[docum_source.tar.gz] Sorgenti della documentazione in formato TeX
[irc_chat.tar.gz]

File di log di alcune chat irc che ho seguito durante il progetto

[support.tar.gz] Documentazione di supporto al progetto (lettura consigliata prima di immergersi nel codice

Happy Hacking!

Progettazione e realizzazione di un robot esapode dotato di visione

Posted by – September 5, 2004

Atty the walker

Nome ufficiale : AttyTheWalker dal tipico comportamento che il veicolo assume se all’interno di un’arena o una semplice stanza.

Descrizione:
Il progetto AttyTheWalker e’ composto da due sottoprogetti:

    realizzazione fisica
    implementazione del software di visione e controllo ad alto livello

L’obiettivo da raggiungere era permettere al veicolo di aggirarsi all’interno di un’arena evitando ostacoli eventualmente presenti.

Requisiti: per compilare correttamente il codice sorgente si richiede l’installazione della libreria Gandalf, una libreria di calcolo numerico che consente l’utilizzo della memoria in modo ottimizzato oltre agli algoritmi standard per computer vision, reperibile su sourceforge.net.

Stato del progetto: il progetto e’ sicuramente da ottimizzare. L’implementazione del codice e’ molto spesso superficiale e ruba cicli di clock inutili non tanto nell’analisi delle immagini quanto nella generazione dei comandi di driving da spedire alla scheda di controllo per via seriale.
Allo stato attuale il software riesce a generare comandi tali da orientare il veicolo all’interno di un’arena, su pavimento a sfondo omogeneo e con buona luminosita’, requisito fondamentale della telecamera di cui e’ dotato.

Autori:

    Francesco Gadaleta – visione, comandi di driving ad alto livello e interfaccia per pilotare il veicolo.
    Simone Laurenzano – realizzazione fisica del veicolo e programmazione a livello di giunti su microcontrollore

L’intero progetto e’ reperibile su sourceforge oppure http://attysoft.sourceforge.net.
Il progetto e’ stato terminato il 1 ottobre 2004 e pubblicato come tesi di laurea di I livello in Ingegneria Informatica presso il Politecnico di Milano.
Documentazione

  • Report per la realizzazione fisica di robot a zampe [report_costr.pdf]
  • Report finale dell’intero progetto [final_report.pdf]
  • Slide di presentazione realizzate in OpenOffice reperibili qui[*attenzione* 14 Mb]
  • Fotografie
    Tutte (quasi) le foto relative al progetto sono reperibili qui
    Video
    Video girati durante le fasi piu’ … oscure della progettazione (video seri e non)
    Qui

    Video della prima versione di AttyTheWalker, comandata manualmente (via seriale), senza sensori ne’ telecamera
    [old_version.avi]

    Todos

  • Implementazione di un filtro per evitare i deadlocks mediante analizzatore di stringhe
  • Visione stereoscopica per mezzo di sensori CCD piu’ affidabili (precisi) di quello corrente
  • Ogni suggerimento, commento o critica e’ ben accetto su francesco at gadaleta period org.