non meno disordinata di quella reale ;-)
Icona RSS Icona email Icona home
  • OSMQuake

    Pubblicato il luglio 23rd, 2009 sdonk Nessun commento

    OSMQuake è un software Open Source, scritto in python, che permette di mostrare gli eventi sismici dell’Istituto Nazionale di Geofisica e Vulcanologia sulle mappe del progetto OpenStreetMap.
    Gli eventi possono essere filtrati in base a parametri personalizzati come profondità, magnitudo, distanza da un punto e regione italiana.
    Il software inoltre permette di selezionare il tipo di mappa e lo zoom da applicare.

    Attualmente è in stato di (lento) sviluppo e qualsiasi tipo contributo è ben accetto.

    Il codice sorgente si trova qui, mentre qui c’è la pagina di presentazione.

  • OSMQuake

    Pubblicato il luglio 23rd, 2009 sdonk Nessun commento

    A quasi tre mesi dalla presentazione ufficiale ad OSMit, pubblico finalmente il codice di OSMQuake purtroppo ancora incompleto e con il codice ancora molto sporco e incasinato (l’ho scritto in tre ritagli di tempo la sera tardi).

    Ho aspettato così tanto perché mi sarebbe piaciuto completare alcune parti del software che avevo implementato soltanto in parte purtroppo però in questo periodo non ho molto tempo e preferisco pubblicare il codice in modo che chiunque voglia contribuire (anche per disegnare un logo ad esempio) possa farlo.

    Il codice sorgente si trova attualmente qui, se qualcuno volesse collaborare posso metterlo su google code e usare svn per la gestione della versione.

    Questo è il risultato dell’elaborazione di stamattina sull’Italia centrale.

    mappa terremoti luglio 2009 Italia centrale

    mappa terremoti luglio 2009 Italia centrale

    Già dalla mappa è possibile vedere cosa manca:

    • Il raggio del marker è direttamente proporzionale alla magnitudo ma il colore dovrebbe essere inversamente proporzionale al tempo, cosicchè i terremoti più recenti siano di un rosos più intenso.
    • Sarebbe bello avere una didascalia con qualche indicazione riguardo i range di dimensioni e di colori e delle statistiche generate automaticamente

    Per generare la mappa precedente basta avviare OSMQuake e poi premere sul tasto “Scarica” per effettuare il parsing della pagina e salvare gli eventi in un database sqlite (notare in basso a sinistra il numero degli eventi scaricati):

    Interfaccia grafica OSMQuake

    Interfaccia grafica OSMQuake

    A questo punto si possono scegliere i parametri di filtraggio, lo zoom della mappa e il tipo di mappa (Mapnik, Osmarender e OpenArial) e si clicca su Genera mappa. A questo punto il software mostra le tile da scaricare e le dimensioni della mappa in pixel e inizia a scaricare le tile necessarie. Dopo di che le unisce e disegna sopra la mappa i marker calcolando dinamicamente il raggio.

    Il risultato finale è una nuova finestra con la mappa:

    Mappa finale

    Mappa finale

    Mappa finale2

    Mappa finale2

    Cosa funziona in OSMQuake:

    • Parsing della pagina
    • Riempimento del database con gli eventi
    • Filtraggio per magnitudo
    • Filtraggio per profondità
    • Scelta dello zoom
    • Scelta del server
    • Calcolo delle tile da scaricare
    • Calcolo delle dimensioni della mappa in pixel

    Cosa non funziona (ancora!) in OSMQuake:

    • Filtraggio degli eventi in base alla distanza da un punto geografico
    • Calcolo dell’area coperta dalla mappa
    • Filtraggio in base alla regione (ho già i bbox delle regioni italiane che mi ha dato Niccolò Rigacci ma non ho avuto il tempo di creare un dizionario con i bbox)
    • Per generare una nuova mappa con la stessa istanza è necessario cancellare a mano le tile (io uso uno script in bash)
    • Prima di scaricare di nuovo gli eventi è necessario cancellare il file del database (il file prova)

    Cosa sarebbe mi piacerebbe implementare in OSMQuake:

    • Riscrivere il codice ad oggetti
    • Implementare il threading per lo scaricamento delle tile (la policy del tile server di OpenStreetMap permette solo due thread)
    • Permettere di mantenere un database storico degli eventi e di filtrarli anche per periodo per creare delle mappe mensili o settimanali di una determinata zona
    • Permettere l’esportazione deglio eventi sismici in KML

    Qualsiasi contributo è benaccetto!

  • OpenMoko FreeRunner: guida completa passo-passo (parte 2)

    Pubblicato il ottobre 15th, 2008 sdonk 9 commenti

    Con estremo ritardo :-( continuo la guida passo-passo per OpenMoko su FreeRunner, potete trovare la prima parte qui.

    Dopo TangoGps, continuiamo l’installazione di software gps utile al mapping.

    Per avere un po’ di informazioni utili durante il mapping come la disposizione dei satelliti, la qualità del segnale e altro possiamo installare agpsgui, semplicemente digitando:

    #: opkg install openmoko-agpsui

    Tra i browser disponibili per OpenMoko c’è n’è anche uno basato su Mozilla Firefox: Minimo.

    Per installare Minimo abbiamo bisogno della libreria libfreetype6 versione 2.3.6, sfortunatamente la versione fornita da OM è inferiore ed è necessario installare la libreria dai repository Angstrom:

    N.B. Aggiungere i repository di Angstrom alla lista di quelli usati da Assassin potrebbe rendere molto instabile il sistema, per cui scarichiamo solo la libreria che ci interessa.

    #: wget http://www.angstrom-distribution.org/feeds/2008/ipk/glibc/armv4t/base/libfreetype6_2.3.6-r0.1_armv4t.ipk

    #: opkg install libfreetype6_2.3.6-r0_armv4t.ipk

    A questo punto ci basta installare Minimo:

    #: wget http://www.ginguppin.de/files/minimo.tar.bz2
    
    #: tar -xjf minimo.tar.bz2
    
    #: opkg install minimo_*

    I repository di OpenMoko sono ricchi di software installabile con pochi comandi (o click se usate Assassin), tra i tanti meritano di essere segnalati:

    Terminale (non esiste distribuzione senza terminale :-D )

    #: opkg install openmoko-terminal2

    Screenshot catcher

    #: opkg install gpe-scap

    Per usare il programma  è necessario creare uno script per avviare il programma con un ritardo di qualche secondo sufficiente a far apparire a schermo la finestra da fotografare:

    #: cd /usr/share/bin
    
    #: vi gper

    Premiamo i per entrare in modalità editing e scriviamo queste due righe ne file:

    sleep 8
    gpe-scap

    Premiamo esc e poi :wq per salvare ed uscire da vi.

    Rendiamo il file eseguibile:

    #: chmod gper chmod +x

    Adesso apriamo il file /usr/share/applications/gpe-scap.desktop

    #: vi /usr/share/applications/gpe-scap.desktop

    e modifichiamo la righe Exec=gpe-scap in Exec=gper salviamo e chiudiamo vi.

    Adesso alla pressione dell’icona lo screenshot sarà scattato dopo 8 secondi.

    Per avviare il programma da ssh invece basta digitare:

    #: DISPLAY=:0 gpe-scap

    File-manager

    #: opkg install gpe-filemanager

    Visualizzatore di immagini

    #: opkg install omview

    Planetario

    Orrery è una specie di astrolabio virtuale che fa vedere il cielo come lo vedremmo veramente nella posizione in cui ci troviamo (si basa sul gps)

    #: opkg install orrery

    Giochi

    OpenMoko mette a disposizione anche qualche gioco per divertirsi con la propria saponetta (attenti alla batteria), vediamo come installarne qualcuno:

    Numptyphysics

    Lo scopo del gioco è quello di far rotolare un sasso su di una stella, seguendo un certo percorso e disegnando degli oggetti sullo schermo che si comporteranno seguendo le regole della fisica! Per installarlo digitiamo:

    #: opkg install libsdl-1.2-0 libsdl-image-1.2-0
    
    #: opkg install -force-depends http://wwwpub.zih.tu-dresden.de/~mkluge/numptyphysics_0.2_armv4t.ipk

    Per giocare basta disegnare sullo schermo, usando lo stylus, delle linee che “convoglino” il masso verso la stella. Con la tastiera è possibile accedere alle funzioni avanzate del gioco, in particolare:

    Spazio: elimina/avvia la pausa

    Esc (in basso a destra sulla tastiera Terminal di Illume): elimina l’ultima linea

    Freccia a destra e freccia a sinistra: permettono rispettivamente di avanzare o retrocedere di livello

    Freccia in alto: resetta il livello corrente

    Duke Nukem 3D

    Agli appassionati del genere sparatutto farà piacere sapere che da qualche giorno è disponibile il porting su OpenMoko del gioco Duke Nukem 3D e che si gioca sfruttando gli accelerometri!
    In questi casi un video è migliore delle parole:

    Per installarlo basta digitare:

    #: wget http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk
    
    #: opkg install duke3d_0.1.1_armv4t.ipk

    A questo indirizzo potete vedere lo schema per giocarci e… buon divertimento.

    Il progetto OpenMoko e la sua comunità sono in rapido cambiamento per cui la guida non può essere esaustiva e puo’ darsi che molte cose, benché le abbia controllate al momento della stesura della guida, siano già datate tra pochi giorni.

    Per informazioni aggiornate potete rifarvi ai due siti da cui ho preso le informazioni per la guida:

    Se volete seguire gli sviluppi in real time potete iscrivervi ad una delle mailing list di OpenMoko.

  • OpenMoko FreeRunner: guida completa passo-passo (parte 1)

    Pubblicato il settembre 12th, 2008 sdonk 16 commenti

    Finalmente dopo qualche giorno di attesa ho ricevuto anche io il mio FreeRunner e la prima cosa che ho fatto è stata personalizzare ed aggiornare il software in dotazione.
    Dopo aver girato in lungo e in largo su internet e aver seguito varie guide ho deciso di raccoglierle tutte in una mega-guida da seguire passo passo.

    N.B. La procedura è valida per qualsiasi distribuzione linux ma è dedicata alla distribuzione Ubuntu Hardy 8.04

    Preparativi

    Inseriamo la sim, la microSD e la batteria in dotazione seguendo la guida ufficiale del wiki e carichiamo completamente la batteria per la prima volta.

    Flashing dell’immagine e del kernel

    L’immagine e il kernel preinstallati saranno sicuramente obsoleti per cui sarà necessario aggiornarli, attraverso una procedura chiamata flashing.
    Scarichiamo l’immagine ufficiale aggiornata da questo indirizzo, dobbiamo scaricare il file che è contraddistinto dalla notazione:

    Om2008.8-gta02-aaaammgg.rootfs.jffs2

    dove aaaa, mm e gg stanno rispettivamente per anno, mese e giorno di rilascio.
    Dallo stesso link è possibile scaricare anche il kernel ufficiale aggiornato, contraddistinto dalla notazione

    Om2008.8-gta02-aaaammgg.uImage.bin

    dove aaaa, mm e gg hanno lo stesso significato precedente. Esiste anche un kernel non ufficiale, mantenuto da mwester, che sembra allungare decisamente la vita della batteria senza preguidicare il funzionamento del telefono, quest’ultimo è scaricabile da questo indirizzo.
    Infine scarichiamo dfu-util dai repository di Intrepid, cliccando su questo link e scegliendo un server, e lo installiamo digitando da un terminale:

    $: sudo dpkg -i dfu-util_0.0+r4067-3.1_i386.deb

    Adesso siamo pronti per aggiornare, apriamo un terminale e spostiamoci nella cartella in cui abbiamo scaricato il kernel e il rootfs, premiamo il tasto AUX (quello in alto a destra) e il tasto Power del FreeRunner fino a quando comparirà il boot menù NOR.
    Colleghiamo velocemente il cavetto usb in dotazione al FreeRunner al computer e da un terminale digitiamo:

    $: sudo dfu-util -a kernel -R -D nome_immagine_kernel

    Attendiamo qualche minuto e il nuovo kernel sarà installato sulla nostra mitica saponetta.

    A questo punto è necessario installare il nuovo rootfs, semplicemente digitando da un terminale

    $: sudo dfu-util -a rootfs -R -D nome_immagine_rootfs

    Se entrambe le operazioni sono andate a buon fine, la seconda richiede diversi minuti, sul FreeRunner sarà installata l’ultima versione del kernel e del rootfs.

    n.b. se si collega il cavetto prima di aver acceso il FreeRunner, l’alimentazione del cavetto farà accedere l’OpenMoko per sarà necessario aspettare termini il boot per poi spegnerlo, per cui PRIMA accediamo al boot menù e poi colleghiamo il cavetto!

    Collegare il FreeRunner al pc e ad Internet

    Modifichiamo, con i privilegi da amministratore, il file /etc/network/interfaces

    $: sudo gedit /etc/network/interfaces

    Aggiungendo queste righe in fondo:

    # FreeRunner
    auto usb0
    iface usb0 inet static
    address 192.168.0.200
    netmask 255.255.255.0
    network 192.168.0.0
    up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &
    up echo 1 > /proc/sys/net/ipv4/ip_forward &
    up iptables -P FORWARD ACCEPT &
    down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &

    Modifichiamo, con i privilegi da amministratore, il file /etc/hosts

    $: sudo gedit /etc/hosts

    aggiungendo in alto questa riga:

    192.168.0.202 openmoko (possiamo sostituire openmoko con un altro nome)

    Modifichiamo, sempre con i privilegi da amministratore, il file /etc/udev/rules.d/85-ifupdown.rules

    $: sudo gedit /etc/udev/rules.d/85-ifupdown.rules

    in modo che la riga LABEL=”net_end” si trovi prima della riga che comincia con ACTION==”remove”

    Riavviamo il demone che gestisce il networking:

    $: sudo /etc/init.d/networking restart

    Se (e solo se!) il pc è dietro una rete con intervallo di indirizzi 192.168.0.x (dietro un router, ad esempio) digitiamo questo comando in un terminale:

    $: sudo route add -host 192.168.0.202 dev usb0

    Infine possiamo collegarci alla saponetta semplicemente digitando:

    $: ssh root@openmoko (sostituire openmoko con l'eventuale nome scelto in precedenza)

    Alla richiesta della password premiamo semplicemente invio e saremo collegati sia ssh al FreeRunner!

    N.B. da ora in poi le istruzioni da digitare su terminale root (contraddistinte da #:) vanno digitate sul terminale collegato al FreeRunner via ssh

    La prima cosa da fare è impostare una password semplicemente digitando:

    #: passwd

    e digitate due volte la password.

    Infine, per collegare l’openmoko ad Internet attraverso l’usb, dobbiamo modificare il file /etc/network/interfaces del FreeRunner, digitando:

    #: vi /etc/network/interfaces

    Adesso premiamo i per entrare nella modalità editing di vi e modifichiamo la porzione di file relativa ad usb0 in modo che risulti uguale a questa (solitamente è necessario modificare solo le ultime due righe):

    iface usb0 inet static
    address 192.168.0.202
    netmask 255.255.255.0
    network 192.168.0.0
    gateway 192.168.0.200
    up echo nameserver 208.67.222.222 > /etc/resolv.conf
    up echo nameserver 208.67.220.220 >> /etc/resolv.conf

    Premiamo esc per uscire dalla modalità editing di vi e poi digitiamo :wq  (i caratteri compariranno in basso a sinistra) e diamo invio per salvare ed uscire da vi.

    Riavviamo i servizi di rete del FreeRunner:

    #: /etc/rc0.d/K40networking restart

    Adesso il FreeRunner è collegato alla rete!

    Aggiornare e personalizzare il software base

    Dopo aver collegato l’OpenMoko ad internet aggiorniamo i pacchetti utilizzando opkg, il gestore di pacchetti di OpenMoko:

    #: opkg update
    
    #: opkg upgrade

    Attenzione: se stai usando OM 2008.12 e vuoi cambiare la tastiera e il tema di OM allora devi seguire questa guida più aggiornata.

    La tastiera standard di OpenMoko è pienamente utilizzabile con le dita, ma la tastiera di Rasterman è più completa e semplice da utilizzare. Per installarla è sufficiente digitare questi comandi:

    #: opkg install illume-config

    Adesso disabilitiamo la tastiera di default di Qtopia, modificando il file /etc/X11/Xsession.d/89qtopia

    #: vi /etc/X11/Xsession.d/89qtopia

    Premiamo i per entrare i modalità editing e inseriamo questa riga nel file:

    export QTOPIA_NO_VIRTUAL_KEYBOARD=1

    Premiamo il tasto esc e poi digitiamo :wq per salvare e uscire da vi, a questo punto installiamo il pacchetto opkg install illume-config-illume:

    #: opkg install illume-config-illume

    puliamo la cache di Enlightenment:

     #: rm -rf ~/.e/e/config/illume

    e riavviamo X:

    #: /etc/init.d/xserver-nodm restart

    All’avvio modifichiamo le preferenze della tastiera di Illume premendo il triangolino capovolto che compare nella parte alta dello schermo al centro, poi la chiave inglese che sarà comparsa nell’angolo in alto a sinistra e infine premiamo (con le dita, of course) sulla scritta Keyboard e selezioniamo la voce Default.

    Installare software utile

    Il FreeRunner ha una vasto assortimento di software interessante, ufficiale e non, da installare per sfruttare appieno l’hardware e le potenzialità del dispositivo.

    Da buon mapper non posso che cominciare con un buon software di tracking: TangoGPS. :-P

    Prima di installare Tango è necessario far funzionare il gps, dal terminale digitiamo questi comandi:

    #: opkg install gpsd
    #: echo "GPS_DEV=\"/dev/ttySAC1\"" > /etc/default/gpsd

    Installiamo il pacchetto ufficiale (solitamente più aggiornato della versione dei repository multiverse di OpenMoko)

    #: opkg install tangogps

    La caratteristica di TangoGPS è quella di disegnare il tracking sulle mappe di OpenStreetMap in questo modo possiamo sapere cosa è già stato mappato e quanto è preciso!
    Per scaricare le mappe della zona interessata, dobbiamo collegare il FreeRunner ad Internet e avviare TangoGPS.

    Usando lo zoom (tasto + in alto) e le barre di scrolling visualizziamo la zona desiderata allo zoom desiderato, poi digitiamo su una zona qualunque della mappa e dal menù selezioniamo map download, poi i livelli di zoom da scaricare a partire da quello attuale (per cui se volete scaricare il massimo livello di zoom di un area dovete zommare fino a livello 11 e poi scelgere +6 nel menù di scelta dello zoom) e infine clicchiamo sul pulsante OK e dopo qualche minuto avremo le mappe scaricate in locale (è possibile controllare il downloading delle mappe nell’angolo in basso a sinistra, c’è un conto alla rovescia che indica i tiles che il programma dovrà ancora scaricare), pronte da usare per le uscite di mapping.

    N.B. Se il FreeRunner non è collegato alla rete può succedere che TangoGPS si impalli perché cerca di scaricare le mappe ma non riesce a collegarsi ai server di OpenStreetMap, per evitare questo incoveniente basta despuntare la casella Auto download map tiles dalla schermata Config (ultimo tasto in basso a destra).

    Continua…

  • Utilizzare sul proprio pc TangoGPS e le mappe di OpenStreetMap

    Pubblicato il agosto 18th, 2008 sdonk 2 commenti

    Se inserire le mappe di OpenStreetMap nel proprio sito/blog è una grande soddisfazione, soddisfazione ancora più grande è vedere le mappe di OpenStreetMap funzionanti su un navigatore GPS.

    Nella mailinglist italiana di OpenStreetMap si parlava di OpenMoko e di TangoGPS, il navigatore per palmari scritto in python :-D che utilizza le mappe di OSM, e ovviamente io non potevo resistere alla tentazione di provare il navigatore sul mio pc utilizzando l’antenna esterna che uso per raccogliere le tracce e una penna bluetooth da due soldi.

    Se usate Ubuntu (o Debian) è possibile scaricare il pacchetto .deb direttamente dal sito (link diretto) e poi da terminale digitare:

    $: sudo dpkg -i tangogps_0.9.2_i386.deb

    Una volta installato il software dobbiamo solo collegare l’antenna al demone che gestisce il gps (gpsd), per farlo ho seguito pedissequamente l’ottima guida del blog di michelem.

    Una volta configurato il tutto (basta seguire la guida che non riporterò qui) ho avviato TangoGps e mentre iniziavo a cercare il pulsante per scaricare le mappe il software si è agganciato all’antenna e ha scaricato automaticamente le mappe di OpenStreetMap, fenomenale!

    Ecco uno screenshot (click sull’immagine per ingrandire), il cerchietto blu è dove si trova la finestra della mia stanza… precisissimo!

    casa mia da tangogps

    Forza che aspettate, correte fuori di casa e mappate tutto quello che vi capita a tiro per avere la soddisfazione di utilizzare le mappe che avrete contribuito a creare.

  • Python

    Pubblicato il agosto 15th, 2008 sdonk Nessun commento

    In questa pagina (in continuo aggiornamento) , ci sono i link ai miei script e programmi open source scritti in python, non sono nulla di eccezionale ma svolgono egregiamente il loro lavoro e a volte sono anche carini.

    Ultimo aggiornamento: 04 maggio 2009

  • Salvare la banca dati Inran in un file sqlite3

    Pubblicato il aprile 29th, 2008 sdonk 2 commenti

    Giocherellando con i moduli di python per la gestione dei database sqlite3, per il parsing delle pagine web e con le espressioni regolari ho scritto un piccolo programmino che permette di effettuare l’html screen scraping delle pagine componenti la banca dati dell’Inran e di salvare i dati riguardanti la composizione nutrizionale di 790 alimenti in un database ordinato sqlite3.

    Ho pensato di pubblicare il programma, con licenza GPL3, pensando che possa essere utile a qualcuno, comunque ho già cominciato a scrivere l’interfaccia grafica per accedere ed elaborare i dati (una specie di calcolatore di calorie) sperando che possa tra qualche tempo entrare a far parte del programma per la gestione e l’archiviazione delle ricette che ho intenzione di scrivere.

    </p>
    
    <p style="text-align: left;">#! /usr/bin/python
    #-*- coding: utf-8 -*-
    # Script per effetuare il parsing delle pagine dati INRAN e per
    # salvare i dati in maniera ordinata in un database SQlite3
    # Copyright (C) 2008  Alessandro De Noia <alessandro .denoia@gmail.com>
    #
    # This program is free software; you can redistribute it and/or
    # modify it under the terms of the GNU General Public License
    # as published by the Free Software Foundation; either version 2
    # of the License, or (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    
    import re, sqlite3, string
    from BeautifulSoup import BeautifulSoup
    from time import time
    from urllib import urlopen
    
    def NormalizeStr(FoodStr):
    """Restituisce la stringa senza il commento tra parentesi quadre e senza apici
    Return a new string without the comment in the square brackets and without the apices  """
    if string.find(FoodStr, "[") == -1:
    NewFoodStr = FoodStr
    else:
    NewFoodStr = FoodStr[0:(string.find(FoodStr, "[")-1)]
    return string.join(string.split(NewFoodStr,'\''),"\\''")
    
    def NormalizeNum(DataNum):
    """Restituisce un numero float cambiando la virgola in punto o altrimenti cambia la stringa None nel valore NULL
    Return a float number turning the comma into a dot or else change the string None into the value NULL"""
    if string.find(DataNum, ",") != -1:
    NewDataNum = round(float(string.join(string.split(DataNum,","),".")),2)
    elif (DataNum == "None") or (DataNum == "tr") or (DataNum == " "):
    NewDataNum = -1.00
    else:
    NewDataNum = round(float(DataNum),2)
    return NewDataNum
    
    def Database():
    """Crea, popola e riempie il database con i dati acquisiti
    Create, populate and fill the database with the acquired data"""
    data = ['']*22
    rows = ('inran_id', 'pe', 'acqua', 'proteine', 'lipidi', 'carboidrati', 'amido', 'zucchero', 'fibra', 'energia_c', 'energia_j', 'sodio', 'potassio', 'ferro', 'calcio', 'fosforo', 'tiamina', 'riboflavina', 'niacina', 'vit_a', 'vit_c', 'vit_e')
    categories = ('cereali', 'legumi', 'verdure', 'frutta', 'carni_fresche', 'carni_trasformate', 'fast_food', 'frattaglie', 'pesca', 'latte', 'formaggi', 'uova', 'olii', 'dolci', 'vari', 'alcooliche')
    Nid = 0
    conn = sqlite3.connect("inran")
    cur = conn.cursor()
    cur.execute("""CREATE table inran (id INTEGER PRIMARY KEY,
    inran_id FLOAT,
    categoria VARCHAR NOT NULL,
    alimento VARCHAR NOT NULL,
    pe FLOAT DEFAULT 100,
    acqua FLOAT DEFAULT NULL,
    proteine FLOAT DEFAULT NULL,
    lipidi FLOAT DEFAULT NULL,
    carboidrati FLOAT DEFAULT NULL,
    amido FLOAT DEFAULT NULL,
    zucchero FLOAT DEFAULT NULL,
    fibra FLOAT DEFAULT NULL,
    energia_c FLOAT DEFAULT NULL,
    energia_j FLOAT DEFAULT NULL,
    sodio FLOAT DEFAULT NULL,
    potassio FLOAT DEFAULT NULL,
    ferro FLOAT DEFAULT NULL,
    calcio FLOAT DEFAULT NULL,
    fosforo FLOAT DEFAULT NULL,
    tiamina FLOAT DEFAULT NULL,
    riboflavina FLOAT DEFAULT NULL,
    niacina FLOAT DEFAULT NULL,
    vit_a FLOAT DEFAULT NULL,
    vit_c FLOAT DEFAULT NULL,
    vit_e FLOAT DEFAULT NULL)""")
    for category in categories:
    try:
    socket = urlopen('http://www.inran.it/servizi_cittadino/per_saperne_di_piu/tabelle_composizione_alimenti/composizione/'+category)
    except:
    print("Impossible to resolve the host, please check internet connection")
    exit()
    page = BeautifulSoup(socket.read())
    socket.close()
    food = page.findAll('td', {"class":re.compile("descrizione_[1-2]")})
    FoodData = page.findAll('td', {"class":re.compile("dato_[1-2]")})
    n = 0
    for i in food:
    StrSql = ("""INSERT INTO inran (id, categoria, alimento)
    VALUES (%d,'%s','%s')""") % (Nid, category, NormalizeStr(i.string))
    cur.execute(StrSql)
    data = FoodData[(22*n):(22*(n+1))]
    m = 0
    for k in data:
    StrSql2 = ("UPDATE inran SET %s=%f WHERE id=%d") % (rows[m], NormalizeNum(str(k.string)), Nid)
    cur.execute(StrSql2)
    m = m + 1
    n= n + 1
    Nid = Nid + 1
    cur.close()
    conn.commit()
    conn.close()
    
    time1 = time()
    print("-------------------------------------------------------------")
    print("Sto creando il database, attendere")
    print("-------------------------------------------------------------")
    Database()
    time2 = time()
    print("-------------------------------------------------------------")
    print("Database creato in %f secondi") % (time2 - time1)
    print("-------------------------------------------------------------")
    <p style="text-align: left;">

    Scaricate il file da qui e poi eseguitelo da un terminale semplicemente digitando (è necessario avere installato il modulo BeautifulSoup dai repository di Ubuntu):

    $: python iran.py

    Essendo scritto in python funziona su qualsiasi sistema operativo con python 2.5 e i relativi moduli installati.

  • Software libero:idee e prospettive

    Pubblicato il aprile 21st, 2008 sdonk Nessun commento

    Si terrà domani alle 9.30 nell’aula 4 al palazzo delle aule alla facoltà di scienze MM.FF.NN il seminario:

    Software libero:idee e prospettive

    L’opensource nella pubblica amministrazione e nell’università

    La WiFi nell’UNIBA su KDE

    Verrà fatta anche una dimostrazione di configurazione della rete WiFi dell’università e sarà presentato un software per gestire le reti WiFi scritto da due studenti del politecnico per il desktop environment KDE4.