logo

Pagina iniziale / Photo Album / Statistiche / Contattami / Login

Cercavo informazioni su «il fatto» e sono venuto arrivato sul sito «io gioco pulito» per sapere qualcosa di più. Dopo aver letto l'articolo sull'ultima puntata di AnnoZero sono andato a vedere la puntata in questione, nonostante sia uno che la tv non la guarda mai, anzi, non ne possiedo neppure una.

Vorrei però dire la mia su quella puntata: mi è parsa veramente tempo perso. Da una parte avevamo due politici che sanno cosa sia la dialettica, e dall'altra avevamo due giornalisti poco loquaci e un magistrato che evidentemente non sa nulla di dialettica.

Dalla parte che più mi interessa ho visto: De Magistris che in realtà non era preparato neppure quando gli è stato detto che poteva parlare di quello che voleva (ha tentato di parlare di rifiuti, ma non ha saputo rispondere alla domanda di Castelli sul dove andrebbero a finire quelli non riciclabili); Travaglio che ha sicuramente detto qualcosa di interessante, ma che poi si è trincerato in un silenzio lungo e ha fatto la scena della fedina penale nulla; Padellaro, che ho visto per la prima volta e che non conosco, che ha cercato di fare capire che la nuova legislazione sulle intercettazioni sia in pratica un stop alle indagini e alla stampa. Complimenti, tra l'altro, a Padellaro, che ha fatto ammettere a Ghedini che la modifica dei limiti di multa serve anche a fare in modo che la stampa stia zitta.


by giuseppe
Monday, 29 Giugno,2009, 22:17
commenta commenta   |  [ 0 trackbacks ]  |  
( 0 / 0 )

Computer
Django!

Ho letto il libro di Marco Beri e ho deciso che Django va assolutamente provato. Per giocarci un po' ho pensato di realizzare un piccolo sito che riporta alcune segnalazioni sul libro in questione, ma ho una difficoltà sulla quale vorrei una mano.

Nel mio schema ho un modello che rappresenta la singola segnalazione, con una sua descrizione, la pagina alla quale si applica, la
tipologia, eccetera. Vorrei che nella pagina di dettaglio della segnalazione fossero presenti anche un bottone "precedente" e "successivo" che permettessero di navigare tra le sole segnalazioni della stessa tipologia.

Il codice attuale, per cercare l'id delle due segnalazioni limitrofe, è il seguente:

def errore(request, id):
   errore = get_object_or_404(Errore, pk=id)
   errori = Errore.objects.filter(tipologia=errore.tipologia).order_by('id')
   i=0
   if errori[i].pk == errore.pk:
      precedente = ''
   else:
      while errori[i].pk != errore.pk:
         precedente = errori[i].pk
         i = i+1
   if (i+1) == len(errori):
      successivo = ''
   else:
      successivo = errori[i+1].pk
   return render_to_response('errore.html',
                {'errore': errore, 'precedente': precedente, 'successivo': successivo})

ma non mi va di effettuare la query completa e scorrerla a mano ogni
volta per trovare il precedente o il successivo.

Una delle proposte che mi sono state fatte è di cambiarlo in:

def errore(request, id):
    errore = get_object_or_404(Errore, pk=id)
    try:
        precedente = Errore.objects.filter(tipologia=errore.tipologia
                      ).exclude(pk__gte=id).order_by('-id')[0]
    except IndexError:
        precedente = ''
    try:
        successivo = Errore.objects.filter(tipologia=errore.tipologia
                      ).exclude(pk__lte=id).order_by('id')[0]
    except IndexError:
        successivo = ''
    return render_to_response('errore.html',
                 {'errore': errore, 'precedente': precedente,
                  'successivo': successivo})


ma questo implica fare due query che restituiscono molti record per
poi prenderne solo uno da ciascuna query. Io invece vorrei riuscire a
scrivere in python una query tipo questa:

   select 'MAX', max(id)
   from errori_errore
   where
     id < id_corrente and tipologia_id = tipologia_corrente
   union select 'MIN', min(id)
   from errori_errore
   where
     id > id_corrente and tipologia_id = tipologia_corrente

in questo modo farei una query che mi restituisce sempre due record. Il primo ha la chiave da usare come precedente, il secondo quella da usare come successivo. I campi costante con il testo MIN e MAX, mi permettono di identificare se l'id di quel record si riferisce al precedente o al successivo nel caso che uno dei due non esistesse. (Anche se forse potrei farne a meno confrontando la chiave con quella corrente.)

Domanda: come si fa a gestire questa query con l'ORM di Django? Devo per forza inserire la query tramite l'«extra» del QuerySet?


by giuseppe
Thursday, 7 Maggio,2009, 13:43
commenta commenta ( 1Visita )  |  [ 0 trackbacks ]  |  
( 0 / 0 )

Computer, SysAdmin
roundcube vulnerabile

Pare proprio che la mia macchina web sia stata attaccata da qualcuno di malizioso, che l'ha poi utilizzata per cercare di attaccare altri sistemi.

Il bug sfruttato sta nel programma chiamato roundcube da me utilizzato per la posta elettronica. Una volta che dall'esterno sono riusciti ad entrare, hanno lanciato un programma chiamato httpdse che si presenta così:

giuseppe@rays:~$ sudo lsof -p1634
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
perl 1634 www-data cwd DIR 3,1 102400 229377 /tmp
perl 1634 www-data rtd DIR 3,1 4096 2 /
perl 1634 www-data txt REG 3,1 5900 606696 /usr/bin/perl
perl 1634 www-data mem REG 3,1 144876 902424 /lib/ld-2.7.so
perl 1634 www-data mem REG 3,1 20576 1130533 /usr/lib/perl/5.10.0/auto/IO/IO.so
perl 1634 www-data mem REG 3,1 1632016 606701 /usr/lib/libperl.so.5.10.0
perl 1634 www-data mem REG 3,1 14728 902430 /lib/libdl-2.7.so
perl 1634 www-data mem REG 3,1 553844 902431 /lib/libm-2.7.so
perl 1634 www-data mem REG 3,1 134451 902441 /lib/libpthread-2.7.so
perl 1634 www-data mem REG 3,1 1547744 902427 /lib/libc-2.7.so
perl 1634 www-data mem REG 3,1 39640 902429 /lib/libcrypt-2.7.so
perl 1634 www-data mem REG 3,1 21768 1130538 /usr/lib/perl/5.10.0/auto/Socket/Socket.so
perl 1634 www-data mem REG 3,1 53540 902436 /lib/libnss_files-2.7.so
perl 1634 www-data mem REG 3,1 18340 902435 /lib/libnss_dns-2.7.so
perl 1634 www-data mem REG 3,1 75504 902442 /lib/libresolv-2.7.so
perl 1634 www-data 0u unix 0x980000002ac8c840 3636699 /tmp/php.socket-1
perl 1634 www-data 1w FIFO 0,5 4082882 pipe
perl 1634 www-data 2w REG 3,1 3836 1000057 /var/log/lighttpd/error.log
perl 1634 www-data 3u unix 0x980000002ac8f540 4066176 /tmp/php.socket-1
perl 1634 www-data 4u IPv4 27129768 TCP rays:51740->rom068.server4you.de:http-alt (ESTABLISHED)

Ovviamente la patch è stata già rilasciata, quindi: aggiornate tutti roundcube!


by giuseppe
Saturday, 11 Aprile,2009, 01:39
commenta commenta   |  [ 0 trackbacks ]  |  
( 0 / 0 )

Ieri ho assistito alla libreria massena28 alla presentazione/spettacolo di un libro edito da 9muse. La presentazione è stata tenuta da una delle scrittrici, Silvia Désirée Icardi, accompagnata dal musico Alberto De Lillo.
Ho scattato qualche foto.

Naturalmente ero in ritardo e mi sono perso l'inizio, ma ho avuto l'onore di essere tra quelli che hanno fatto cigolare la porta d'ingresso durante lo spettacolo...

La presentazione è stata bella: i brani del libro intriganti e la musica adeguata (anche se si intuisce che De Lillo suona altri generi). Ultima parte dello spettacolo: una performance di cabaret della nostra scrittice sull'annoso tema dell'attenzione femminile per il proprio corpo.

Foto della scrittriceSilvia Désirée Icardi
by giuseppe
Sunday, 5 Aprile,2009, 11:44
commenta commenta   |  [ 0 trackbacks ]  |  
( 5 / 1 )

Da qualche anno utilizzo Java come linguaggio di programma per un progetto lavorativo. Si tratta di una applicazione che sta crescendo col tempo e che adesso è abbastanza sofisticata.

Man mano che andiamo avanti con lo sviluppo cominicio a rilevare alcuni problemi legati al linguaggio scelto. Provo qui di seguito a elencare i principali:

  • Mancanza di una compilazione condizionale.

    Quello che mi piacerebbe fare, per migliorare la qualità del debug, è di includere in maniera condizionata una serie di metodi che stampano lo stato del sistema o che riportano il tempo speso in alcune operazioni.

    Ovviamente questo codice va incluso ed eseguito solo se ne sto facendo il debug, mentre non va incluso nella versione di prosuzione del prodotto.

  • Mancanza di parametri opzionali

    Quello che succede è che a volte si fanno metodi che possono richiedere due o tre o quattro argomenti, ma dei quali il terzo e/o quarto possono essere facoltativi a seconda dei primi argomenti.

    In questo caso sono costretto da Java a creare lo stesso metodo più volte, nel quale il metodo con meno argomenti chiama quello che ne richiede di più aggiungendo gli argomenti opzionali con un valore predefinito

  • assert!

    Pare proprio che chi ha inventato Java non sapesse cosa siano gli assert perché ad ogni nuova versione del linguaggio ne viene cambiata la sintassi.

    Un altro problema degli assert in Java è che la loro abilitazione avviene da tramite le opzioni che vengono utilizzate nel lancio della JVM, vale a dire che non è possibile fare in modo che il programmatore lasci degli assert attivi o meno.

A questo punto mi chiedo: altri recenti linguaggi di programmazione a oggetti e (abbastanza) portabili, come fanno? Che fanno ad esempio python e C#?


by giuseppe
Thursday, 26 Marzo,2009, 15:08
commenta commenta   |  [ 0 trackbacks ]  |  
( 0 / 0 )


Altre notizie

powered by pppBLOG v 0.3.11