Archive for category linuxing

django! si, django!

In questo post tento di riassumere (nella maniera piu’ semplice possibile) i passi che ho seguito per creare il primo progetto con django. Da non sviluppatore e abbastanza ignorante nel campo dei linguaggi di programmazione se dovessi definire django con un aggettivo direi: disarmante!

Si ispira al principio DRY (Don’t Repeat Yourself) e la migliore definizione di django che ho trovato è quella fornita da Marco Beri nel suo ottimo libro “Sviluppare applicazioni web con django”: “Django è un ottimo tavolo da lavoro, con tanto di strumenti, per costruire siti dinamici e applicazioni web“. E io aggiungo: le “gambe” del tavolo sono costituite da Python!

Utilizzando Debian troviamo django già pacchettizzato. Purtroppo la versione disponibile non è la piu’ recente; ma basta scaricare i sorgenti dal sito http://www.djangoproject.com/download/ e seguire i 3 (anzi 4) semplici passi indicati:

- si scarica;

- si decomprime il tar.gz;

- ci si sposta nella directory ottenuta dalla decompressione;

- si “suda” per installare il pacchetto: fatto!

E qui comincia il bello. Andiamo per fasi (step):

- si crea una directory di lavoro (la possiamo creare nella nostra home; poi vedremo come fare per renderla visibile al server web).

$ mkdir django_work

- ci spostiamo nella directory creata:

$ cd django_work

- richiamiamo il modulo per la creazione del “progetto” (con django si crea prima un “progetto” e poi “n” applicazioni. C’è molta documentazione in rete che riguarda la strutturazione del framewok):

$ django-admin startproject energia

Questo comando genera nella directory corrente una sottodirectory che ha il nome del progetto indicato (nel nostro caso “energia”) che contiene alcuni file: __init__.py, manage.py, settings.py, e urls.py

NB: con l’installazione di django è stato installato anche un server web (diciamo “provvisorio”) utilissimo per fare i test durante la creazione e implementazione del progetto. Questo server si avvia mediante il comando:

$ python manage.py runserver

Se tutto è ok compare un messaggio simile a questo:

Validating models…

0 errors found….. ecc

Quit the server with CTRL-C.

- Modificare il file settings.py e indicare i parametri alla voce “DATABASES“:

‘ENGINE’:  ‘postgresql_psycopg2″ (se si usa database Posgresql)

‘NAME’:  ‘energia’ (il db si puo’ creare dopo; l’importante è dare questo nome :-) )

‘USER’:  ‘sit’ (il proprietario del db creato)

‘HOST’: ‘localhost’

‘PORT’: ” (lasciare in bianco per assumere la porta configurata di default)

- Creare il nuovo database (con lo stesso nome indicato del file “settings.py“). PS: in questo post si assume di lavorare con DB Postgresql; per altre configurazioni (sqlite, mysql,…) vedere la ricca documentazione che si puo’ trovare in rete.

$ su

# su postgres

# psql

# CREATE DATABASE energia OWNER sit;

- lanciare il webserver (quello ausiliario fornito da django con il solo scopo di testare lo sviluppo dell’applicazione) posizionandosi all’interno della directory di lavoro.

$ ./manage.py runserver oppure

$ python manage.py runserver

Deve comparire un messaggio di “0 errors“.

- Puntare il browser alla pagina http://localhost:8000/

dovremmo ottenere una pagina con scritto “IT WORKED…..”

- Creare l’applicazione che chiameremo “manager“:

$ ./manager.py startapp manager

In questo modo viene creata la directory “manager”.

- Definire le tabelle del DB mediante il file “models.py“: le tabelle sono definite come classi python (vedi il tutorial on line)

- L’applicazione nuova chiamata “manager” deve essere attivata modificando il file “…../django_work/energia/settings.py” ed inserendo la voce ‘energia.manager’ nella sezione “INSTALLED_APPS

- Per applicare il modello appena definito cioé costruire la struttura del database lanciare il comando:

$ ./manage.py syncdb

Compare una sequenza di messaggi che indicano l’avvenuta creazione di alcune tabelle (comprese quelle di autenticazione) in quanto previste tra le “INSTALLED_APPS” del file “settings.py” (‘django.contrib.auth‘). Installando l’auth system viene chiesto se si vuole creare un superuser. Rispondere “yes“: viene proposto l’utente attivo. Dare” yes” e immettere un indirizzo e-mail e una password (l’email non è indispensabile).

- A questo punto si puo’ procedere al popolamento della/e tabella/e del db. Il tutorial propone di usare la shell di django ma si puo’ fare benissimo con vari client (io ho usato phppgadmin per Postgresql).

- Creazione delle “view“: si tratta delle viste ossia come devono essere presentati i dati. Prima di farlo definiamo gli URl delle varie pagine editando il file “…/django_work/energia/urls.py“.

Questi pattern associano le espressioni regolari ad un modulo python.

Le view vengono definite nel file “…/django_work/energia/manager/views.py” (sono tipiche dell’”applicazione”). Nelle view definite si fa riferimento a determinati template (file HTML).

- Definire la variabile ‘TEMPLATES_DIRS‘ all’interno del file “settings.py

Esempio: ABSOLUTE_PATH + ‘/home/sit/django_work/energia/manager/templates’

- Creare una directory “templates” all’interno di “manager” e procedere alla creazione dei template (base.html, index.html,…). Per una descrizione più dettagliata sui template si rimanda al tutorial on-line.

Supposto che tutto sia ok si puo’ passare alla pubblicazione vera e propria del nostro lavoro. Ricordiamoci che fino ad ora abbiamo lavorato “in casa” usando il server web ausiliario gentilmente offerto da django. Ma se dobbiamo “uscire” nel mondo dobbiamo usare un “vero” server web. Qui facciamo riferimento ad Apache.

- Nel file “settings.py” nella sezione “DATABASES” verificare che la voce ‘HOST‘ sia impostata a ‘localhost’.

- Modificare il file di configurazione di Apache che si trova in (debian :-) ) “/etc/apache2/apache2.conf” aggiungendo:

<Location “/energia/”>

SetHandler python-program

PythonHandler django.core.handlers.modpython

SetEnv DJANGO_SETTINGS_MODULE energia.settings

PythonPath “['/home/sit/django_wotk/','/home/sit/django_work/energia/'] + sys.path”

PythonOption django.root /energia

PythonDebug On

</Location>

<Location “/media”>

SetHandler None

</Location>

Alias /media /home/sit/src/Django-1.2.1/django/contrib/main/admin/media

Quest’ultimo alias è necessario per caricare i file CSS, JS (modificare i template HTML inserendo “/energia/” a monte di ogni HREF).

NB: ricordarsi di riavviare il server web dopo ogni modifica:

# /etc/init.d/apache2 restart

Spero sia tutto corretto. Commenti benvenuti.

Lascia un commento

il primo “Hello world” in C

Non sono un programmatore; non conosco nessun linguaggio di programmazione. Per questo, approfittando di una piccola necessita’ lavorativa, mi sono avvicinato al C.

Bazzicando in rete ho trovato alcuni “punti di partenza” molto ben fatti:

- introduzione alla programmazione in C;

- piccolo corso di programmazione in C;

E da qui ne e’ uscito un piccolo programmino per convertire le coordinate geografiche (lat/long) da DMS (Gradi Primi Secondi) a DD (Gradi decimali).

L’ho scritto usato l’editor “nano” (semplice quanto efficace editor che offre colorazione del testo ben fatta).

Una volta scritto il testo sottostante salvarlo con il nome di “primo_test.c” (i codici sorgente in C vengono contraddistinti dal suffisso .c).

#include <stdio.h>
float a,b,c,d;
main()
{
printf(“inserisci i gradi:  \n”);
scanf(“%f”, &a);
printf(“inserisci i primi: \n”);
scanf(“%f”, &b);
printf(“inserisci i secondi: \n”);
scanf(“%f”, &c);
d=a+(((c/60)+b)/60);
printf(“l’angolo in formato decimale e’ %f \n”, d);
}

Una volta salvato il codice deve essere compilato. Per fare questo ho usato il compilatore “gcc” mediante la seguente sintassi:

$ gcc primo_test.c -o primo_test.out

Viene creato un file eseguibile chiamato primo_test.out (nel caso non avessimo indicato il nome del file di outptu, gcc avrebbe nominato il file “a.out”).

Il programma si lancia con il comando

$ ./primo_test.out

Vediamo il codice. All’inizio del testo viene indicata la libreria da caricare per eseguire le operazioni (#include <stdio.h>).

Poi si passa al processo. Stampa a console la richiesta di inserire i valore dei gradi dell’angolo da convertire; fatto questo cattura il valore inserito e lo memorizza nella prima variabile dichiarata (di tipo float). Poi chiede di inserire il valore del primi e memorizza il valore nella seconda variabile. Infine richiede i secondi e li memorizza nella terza variabile.

Fatto questo esegue l’operazione di conversione e propone in output il valore dell’angolo calcolato.

,

1 commento

Screenshot con Nokia N810

Screenshot maemo mapper - 1

Avevo bisogno di recuperare alcuni screeshot del Nokia N810. Non esiste un programma pre-installato che consenta di farlo. Dopo avere cercato in rete ho trovato un how-to interessate che spiega vari metodi. Ne ho provato uno (anche perche’ per l’N810 non sono installabili alcuni pacchetti); ecco di cosa si tratta.

Installare prima il pacchetto “osso-screenshot-tool“. E’ un programmino da riga di comando che funzioona con la seguente sintassi.

$ osso-screenshot-tool nome_file.png

Questo crea una immagine della videata al momento del lancio del programma. Ma questo significa che crea una “fotografia” della shell :-) . Ci vorrebbe una opzione di “delay” (ritardo) che viene contemplata in un altro pacchetto chiamato “screenshot-tool” disponibile per maemo 5 (sul mio N810 e’ installato maemo 4).

Per ovviare a questo inconveniente ho installato (/in base alle indicazioni riportate nell’howto indicato sopra) il pacchetto “maemo-screen-grabber“. Una volta fatto troviamo una nuova voce in “Extra” chiamata “Maemo screengrabber”. Cliccando su di essa viene eseguito uno screenshot ritardato di 5 secondi; sono piu’ che sufficienti (il tempo di attesa puo’ essere modificato: devo ancora indagare sul come) per andare ad attivare la videata di interesse (magari preparata in precedenza).

Per avviare screenshot grabber: Extra -> Maemo Screengrabber

Otteniamo cosi’ un’ immagine (PNG) che viene salvata automaticamente all’interno della directory “Immagini”. Il nome e’ il TIMESTAMP dello screenshot. :-)

Un altro esempio con maemo mapper attivo:

Screenshot maemo mapper - 2

Lascia un commento

OCR con strumenti open source

Esistono strumenti open source per effettuare una ricognizione OCR di documenti. Ho provato il programma “tesseract“. E’ un programmino da riga di comando. Si installa via apt-get o synaptic. E’ necessario installare anche sane, sane-utils, imagemagick, unpaper, tesseract-ocr, e tesseract-ocr-eng oltre a tesseract-ocr-ita (per la lingua italiana).

Una volta installato effettuare la scansione della/e pagina/e volute (impostare una risoluzione di almeno 300 dpi per avere una buona qualità) quindi lanciare il programma, per es:

$ tesseract nome_file.tif nome_file_output -l ita

In questo modo viene processato il file nome_file.tif e viene prodotto in output nome_file_output.txt (l’estesnione .txt viene aggiunta dal software); il processamento avviene in lingua italiana. Possibilmente usare immagini in formato TIF.

Ottima questa guida in proposito.

,

Lascia un commento

Settimana del software libero a Vicenza

Dal 14 al 19 settembre si terra’ a Vicenza (Parco Citta’) la “settimana del software libero” organizzata dal LUG Vicenza (un grazie particolare a Luca!). Grazie alla disponibilita’ dei proprietari di “Parco Citta’”, che hanno messo a disposizone degli spazi, sara’ possibile toccare piu’ da vicino il pinguino.
Gli appuntamenti sono densi e ricchi. A questa pagina si trovano i dettagli di tutti gli eventi.
Mi permetto di segnalare gli incontri previsti per mercoledi’ 16 settembre. Si parlera’ di OSM. OpenStreetMap e’ un progetto mondiale che mira a creare una mappa (si, la mappa geografica e stradale) libera di tutto il mondo. Contribuire e’ semplice e non servono particolari skill o professionalita’……..Per chi e’ curioso di saperne di piu’, appuntamento a Parco Citta’. :-)

Settimana del software libero a Vicenza - Volantino by Andrea Lazzarotto

Settimana del software libero a Vicenza - Volantino by Andrea Lazzarotto

, ,

Lascia un commento

Seminario sul Pluralismo Informatico in Veneto

Si terra’ lunedi’ 30/3/09 a Feltre (BL) il seminario:
Il pluralismo informatico. La nuova legge della Regione Veneto

ore 10:00
Inizio lavori


ore 10:15
Saluto , Giovanni Villano, direttore della Fondazione per
l’Università e l’Alta Cultura in Provincia di Belluno


ore 10:30
Introduzione Gianvittore Vaccari, Sindaco di Feltre


ore 10:45
“Una legge per una Pubblica Amministrazione moderna”,
Bruno Salomoni, Regione Veneto


ore 11:15
“I formati aperti favoriscono innovazione, libero mercato
e servizi pubblici più efficienti”, Marco Fioretti, esperto di
formati e software liberi, rappresentante italiano della
OpenDocument Fellowship


ore 11:45 – Tavola rotonda e interventi del pubblico
Alberto Vettoretto, consigliere delegato e-government
Comune di Feltre
Giulio Tatto, resp. Sistema Informativo Comune di Feltre
Davide Dozza, Associazione PLIO (Progetto Linguistico
Italiano OpenOffice.org)
Pierluigi Valenti, Responsabile sviluppo offerta P.A.
Gruppo Infracom


ore 13:30 Conclusione lavori


Moderatore: Luca Menini. Italian Linux Society
In collaborazione con l’associazione “Italian Linux Society”

Diffondete la notizia!

,

1 commento

Debian | creare un live CD

Debian offre un favoloso tool per creare una distro live (ossia un CD contenente un sistema operativo Debian pienamente funzionante e senza necessità di installarlo sull’hard disk). Il tool si chiama “live-helper”. Esiste anche un wiki fatto davvero bene.

Installiamo il pacchetto con:

# apt-get install live-helper

Creiamo poi una directory di lavoro, per esempio:

$ mkdir /home/user/debianlive

Spostarsi della directory di lavoro appena creata:

$ cd /home/user/debianlive

Per un live CD minimale basta dare il seguente comando (da root):

# lh_config && lh_build

In questo modo si ottiene un’immagine chiamata “binary.iso” che può essere masterizzata (es. con k3b) oppure testata con l’emulatore “qemu”(per installarlo # apt-get install qemu). Per testare l’immagine prima di masterizzarla dare il seguente comando:

$ qemu -cdrom binary.iso

Il comando “lh_build” crea una distro minimale con lingua (inglese) e impostazioni di default. Se vogliamo personalizzare la distro aggiungendo pacchetti, dati e altre magie bisogna aggiungere alcune opzioni al comando “lh_config”.

Il comando “lh_config” può essere impartito da user (non root). In particolare, se vogliamo un ambiente grafico con xfce4, basta scrivere:

$ lh_config -p xfce-desktop

Per la configurazione della lingua:

$ lh_config –bootappend-live “locale=it”

Per indicare mirror locali:

$ lh_config –mirror-bootstrap “http://ftp.it.debian.org/debian/”

$ lh_config –mirror-binary “http://ftp.it.debian.org/debian/”

$ lh_config –packages “nome dei pacchetti separati da semplice spazio”

Nel mio caso avevo necessità di inserire anche il software gis (come qgis) che non si trova (aggiornato) nei repo ufficiali debian. Così ho copiato il pacchetto prelevato dal repo debian.gfoss.it all’interno della direcotry “…./config/chroot_local-packages/” assieme a tutti i pacchetti e dipendenze collegate come:

gdal-bin_1.5.2-3_i386.deb libqgis1-dev_1.0.0-gfossit20081222-2_i386.deb libqgis-core1_1.0.0-gfossit20081222-2_i386.deb libqgis-gui1_1.0.0-gfossit20081222-2_i386.deb python-qgis_1.0.0-gfossit20081222-2_i386.deb qgis_1.0.0-gfossit20081222-2_i386.deb qgis-plugin-grass_1.0.0-gfossit20081222-2_i386.deb

Il builder si preoccuperà di scaricare tutte le altre dipendenze non risolte.

Con lh_config” ho aggiunto anche una serie di pacchetti utili per avere un webgis funzionante:

$ lh_config –packages “apache2 mapserver-bin cgi-mapserver php5-mapscript php5 lynx locate gdal-bin openssh-client opnssh-server ssh”

Per il webgis avevo anche necessità di copiare i dati da consultare con l’applicativo pmapper preconfigurato. I dati personalizzati (file, directory) devono essere copiati in “…/config/chroot_local-includes/”. Questa directory corrisponde alla directory radice “/” della live distro. Pertanto, dovendo copiare file che andranno in “/var/www”, ossia nella directory pubblica del webserver apache, ho creato il seguente albero “…./config/chroot_local-includes/var/www/” all’interno del quale ho copiato i dati del webgis.

A questo punto si puo lanciare il builder per la creazione della ISO. Diventare root e dare:

# lh_build

Dopo alcuni minuti (dipende molto dalla velocità di connessione alla rete disponibile) troviamo l’immagine creata “binary.iso”.

Possiamo testare l’immagine creata mediante qemu:

$ qemu -cdrom binary.iso

Dopo qualche minuto (non è velocissimo, essendo un emulatore) ci appare il nostro desktop live funzionante.

Può essere comodo personalizzare l’aspetto del desktop, oppure impostare un programma che venga avviato automaticamente allo startup. Nel mio caso avevo necessità di avviare il browser iceweasel che puntasse ad una determinata pagina caricata in locale “localhost”.

Per fare ciò seguire i seguenti passaggi:

Nella VM (quella avviata con qemu) avviare una console e avviare il gestore degli startup chiamato xfce4-autostart-editor. Appare una finestra grafica in cui si possono togliere e/o aggiungere programmi all’avvio del PC. Io ho disabilitato il “tips & tricks” e aggiunto iceweasel. Chiudere tutto. In questo modo viene creato un file di configurazione chiamato “iceweasel-desktop” all’interno della directory nascosta “/home/user/.config/”. Apriamo poi il browser iceweasel e, dal menù preferenze,impostare la pagina che si vuole caricare all’avvio. Chiudere tutto. Tornare alla console e tramite SCP copiamo il contenuto di tutta la directory “/home/user” dalla VM al PC host. Il comando da dare è questo:

$ scp -r /home/user user_host_pc@10.0.0.13:/home/user_host_pc/directory_destinazione/

dove 10.0.0.13 è l’indirizzo IP del pc host (dal quale abbiamo avviato la VM). Viene richiesto se salvare la key e poi la password dell’utente del host PC.

Tutti i dati vengono copiati nel pc host nella directory “/home/user_host/pc/directory_destinazione”. Da qui li copiamo in “…./config/chroot_local-includes/etc/skel/”. Tutto quello che sta in “/etc/skel/ verrà caricato nella home directory quando il builder crea l’immagine. In questo modo salveremo tutte le impostazione del desktop settate dalla VM.

A questo punto possiamo ricreare l’immagine. Ricordarsi di ripulire la vecchia build con:

# lh-clean

e subito dopo ri-buildare con:

#lh_build

Fatto!

1 commento

cambiare password in Debian

Lanciare il comando (da root :-) ):

# passwd

Viene richiesto di inserire 2 volte la nuova password.

, ,

Lascia un commento

manutenzione Debian

# apt-get clean

Effettua una pulizia della directory “/var/…” in cui vengono scaricati i pacchetti prima dell’installazione

,

Lascia un commento

aggiornare data e ora di sistema su Debian

Per aggiornare data e ora di Debian è necessario installare il pacchetto “ntpdate”:
# apt-get install ntpdate
quindi, da root, lanciare:
#ntpdate ntp1.inrim.it
In questo modo si sincronizza con l’ora del server indicato (nel nostro caso “ntp1.inrim.it”).

Per modificare l’ora:
# date -s “9 FEB 2009 15:51:00″
Si invoca il comando date e si danno come parametri data e ora nella forma indicata sopra; tutto fra doppie apici.

, ,

1 commento

Iscriviti

Get every new post delivered to your Inbox.