Mysql: query con selezione casuale e ordine nei raggruppamenti

Mysql mette a disposizione la funzione rand() la quele genera un valore in virgola mobile con risultati che possono variare da 0 a 1.

La funzione può essere utilizzata anche per fare estrarre a una SELECT dei record in ordine casuale.

Nel seguente esempio abbiamo una tabella con la seguente struttura:

CREATE TABLE `province_comuni` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`provincia` VARCHAR( 2 ) NOT NULL ,
`comune` VARCHAR( 50 ) NOT NULL
)

da cui vogliamo estrarre 10 comuni casualmente e lo faremo con la seguente query:

SELECT comune
FROM province_comuni
  ORDER BY rand( )
  LIMIT 10

Volendo estrarre casualmente 10 comuni di 10 province diverse anch’esse estratte accaso potremo pensare erroneamente che la seguente query possa funzionare:

SELECT comune, provincia
  FROM province_comuni
  GROUP BY provincia
  ORDER BY rand( )
  LIMIT 10

questa raggruppa per provincia le quali vengono estratte a caso ma i comuni di ognuna d essa manterranno un ordinamento non casuale, questo perché nella SELECT viene eseguito prima il GROUP BY e soltanto dopo l’ORDER BY.
Il problema si risolve facendo prima una SELECT ordinata a due livelli, per provincia e per caso (ORDER BY provincia, rand() )  sulla quale poi eseguiremo un’ulteriore SELECT raggruppando il tutto per provincia e ordinando in modo random:

SELECT *
  FROM (
    SELECT *
      FROM province_comuni
      ORDER BY provincia, rand( )
    ) AS tmp_rand
  GROUP BY provincia
  ORDER BY rand( )
  LIMIT 10

Debian Lenny: tenere la data e l’ora di sistema aggiornata

Per fare in modo che la nosta Debian tenga la data e l’ora di sistema aggiornata correttamente ci viene in aiuto il demone ntp. Possiamo installarlo da root semplicemente con il comando:

apt-get install ntp

in questo modo il sistema è già pronto per tenere sincronizzata l’ora di sistema.
Volendo aggiungere altri time server da fare utilizzare al demone ntp basterà aggiungerli al file di configurazione /etc/ntp.conf.

Debian Lenny: abilitare Logwatch

Logwatch è un comoda utiliy di sistema che ogni notte analizza i log della giornata li elabora restituendo un report con gli aventi di sistema più interessanti inviandoli via mail a root o ai suoi alias.

E’ possibile installarlo semplicemente digitando da root il seguente comando:

apt-get install logwatch

Continue reading “Debian Lenny: abilitare Logwatch”

Debian Lenny: forward messaggi di sistema verso e-mail esterna con exim

eximUn piccolo appunto su come configurare Debian Lenny per fare in modo che i messaggi di sistema diretti verso root vengano inviati verso un indirizzo mail esterno.

Da root eseguire i seguenti passi:

  • Definire il destinatario dei messaggi nel file /etc/aliases andando ad aggiungere alla riga che inizia per root: l’indirizzo mail desiderato, se è presente gia uno separarli da una virgola. Esempio:
    root: david, pinco.pallino@gmail.com
  • Eseguire il comando newaliases
  • Riavviare exim con il comando
    /etc/init.d/exim4 restart

Se i messaggi non dovessero essere recapitati, riconfigurare exim con il comando

dpkg-reconfigure exim4-config

e scegliere la configurazione del tipo “sito internet; posta inviata e ricevuta direttamente con SMTP“.

Installare Debian Lenny in modalità netinstall da penna usb

Creare una partizione FAT16 sulla penna usb e renderla attiva, formattare la partizione con:

mkfs.msdos /dev/sdd1

Creiamo la cartella e scarichiamo ciò che ci interessa:

mkdir debian
cd debian
wget http://chuangtzu.acc.umu.se/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-netinst.iso
wget ftp://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz
wget ftp://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/initrd.gz
wget ftp://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/vmlinuz

Copiamo sulla penna usb il contenuto di boot.img.gz, il kernel, l’immagine iso del cd da installare e infine smontiamo la penna usb:

sudo mkdir /mnt/sdd1
sudo mkdir /mnt/loop
sudo mount /dev/sdd1 /mnt/sdd1
gzip -d boot.img.gz
sudo mount -o loop boot.img /mnt/loop
sudo cp -rv /mnt/loop/* /mnt/sdd1/
sudo cp vmlinuz /mnt/sdd1/
sudo cp debian-503-i386-netinst.iso /mnt/sdd1/
sudo umount /mnt/sdd1 /mnt/loop

Installiamo syslinux:

sudo syslinux -sf /dev/sdd1

A questo punto possiamo eseguire il boot da penna usb. Se il pc non si avviasse (il bios deve supportare il boot da usb) possiamo a reinstallare il master boot record sulla penna:

install-mbr /dev/sdd1

Il comando install-mbr è presente nel pacchetto mbr.

Cups su Debian: abilitare interfaccia di configurazione sulla rete locale

cups
Editare il file /etc/cups/cupsd.conf e variare la riga

Listen localhost:631

in

Listen *:631

per fare in modo che cups sia in ascolto su tutte le interfacce di rete del sistema.

Aggiungere

Allow @LOCAL

in tutti i nodi

<Location />

Asus WL500gP v2 …… addio !!!

wl-500gpv2Questo post penso sia l’ultimo della serie dedicata a questo fantastico router. In seguito al crash dell’hard disk usb che vi avevo collegato ho deciso di mettere l’oggetto in disuso e optare per qualcosa di più performante. Si perchè nonostante il WL500gP sia il coltellino svizzero dei router e possa essere utilizzato con una moltitudine di servizzi, per l’uso che ne devo fare io pecca di due grossi difetti: poca ram (appena 16MB) e l’usb stralenta.

Dato quindi che non usavo le funzionalità per cui è nato (intefaccia wireless e router) ma solo come mini server di rete a basso consumo ho deciso di staccarvi la spina e passare a un altro oggetto sempre a basso consumo a cui davo la caccia da diverso tempo ma la cui reperibiltà qui in Italia ( a qunto ne so) aveva dei costi un po’ troppo alti. E invece recentemente sono riuscito ad aggiudicarmelo su ebay ad un prezzo decisamente interessante.

Se ho stuzzicato la curiosità di qualcuno…. be aspettate qualche giorno e sicuramente quando mi arriverà l’oggetto seguiranno alcuni post in merito.

Comunque sia l’Asus WL500gP v2 ha avuto una gloriosa carriera quindi riepilogo qui sotto i post ad esso dedicato con le funzioni che copriva presso la mia abitazione:

Per tutti coloro che sono sempre interessati a questo router e hanno domande o suggerimenti da porre i posts rimangono sempre aperti ai commenti e quindi siete invitati a postare quello che vi passa per la testa.