sabato 19 aprile 2008

Vmware ESX 3.5 - Un ottimo investimento

Oggi dopo una lunga meditazione vi parlo del regalo di natale del mio capo.
Certo il regalo non è stato fatto personalmente a me, ma a tutto il gruppo di lavoro. Dopo un esperienza di circa sei mesi con Vmware Server, abbiamo fatto il salto di qualità, acquisendo la licenza di uso di Vmware ESX 3.5 su un server di tutto rispetto, che oltretutto ci sta dando grosse soddisfazioni.

Fujitsu-Siemens RX300S3/X 5120, equipaggiato con:
- 2 CPU Intel Xeon DP 5120 2.66 GHz 4MB 1333 MHz;
- 16 GB PC2-5300 ECC RAM;
- 4 HD SAS 300 GB 15K;
- Raid controller SAS 256 MB iTBBU LSI;
- 4 interfacce di rete Gigabyte
- lettore DVD;
- Alimentazione ridondata;

Abbiamo configurato i dischi in RAID5, e installato ESX che non ci ha dato il minimo problema. Il primo accesso ci ha riservato la sorpresa di vedere una shell molto lenta e limitata ma poi abbiamo capito che la shell su ESX non serve e che era volutamente molto lenta e limitante.

Oggi dopo 3 mesi su server ci sono una ventina di ambienti di sviluppo/test, di cui contemporaneamente accesi più di dieci e la macchina non da segni di rallentamento o problemi.

Il tutto da la possibilità di mettere su un ambiente in pochi minuti, gestirlo facilmente e la possibilità di spegnere e congelare la virtual machine quando serve.

Virtualizzare è conveniente ed ecologico, un solo server 2U con un consumo certo non indifferente 600 Watt, sostituisce 25 PC da 200 Watt, e la macchina non ha per nulla raggiunto livelli critici quindi le virtual machine cresceranno ancora.

Le Virtual machine sono quasi tutte delle Ubuntu Server 6.06,
configurate con 1 GB di ram e Hard Disk virtuale da 8 GB.

Ovviamente esistono anche altre soluzioni per virtualizzare, anche molto interessanti, ma Vmware mette a disposizione un ambiente veramente potente, molto user-friendly e facile da usare, e le prestazioni sono ottime.

Dell D830 e Gutsy a 64 bit non vanno daccordo

Ho un nuovo portatile aziendale, un Dell D830 con 4Gb di RAM che appena arrivato e' stato ripulito da WinXP a 32 bit.

Essendo una macchina 64bit ed avendo 4Gb che Windows non vede per intero decido di installare Gutsy 64bit.

L'installazione procede bene tranne per la scheda nVidia Quadro NVS 135 che non va a 1280x800 ma solo ad un orribile 1024x768, continuo l'installazione fiducioso di risolvere il problema dopo ma...

...rimuovo i restricted drivers ed installo l'ultima versione scaricata da nVidia ma niente non cambia niente anzi la situazione peggiora perché lo schermo al boot rimane nero, i log sono omertosi.

Cerco su internet ma nessuna delle ricette funziona, ho poco tempo il PC mi serve per lavorare e non posso lasciarlo cosi'.

Applico patch metto le mani su xorg.conf, giro, salgo, scendo, faccio una danza propiziatoria ma niente, alla fine mi arrendo.

Rimetto WinXP pulito dalle mille porcherie installate di sistema e con molto dispiacere formatto le partizioni ext3 in NTFS.

Amareggiato aspetto Hardy Eron ma non credo che saro' piu' fortunato.

martedì 8 aprile 2008

Storia di un progetto

Ho trovato questa vignetta in questo documento, e devo dire che anche se i termini non sono proprio quelli di un progetto informatico la sostanza cambia poco.

1) il cliente probabilmente voleva qualcosa di semplice, funzionale e poco costoso;
2) il commerciale lavora per fare contratti e quindi ha messo nell'offerta di tutto di più;
3) la progettazione è stata affidata ad uno stagista che ci ha messo dentro tutta la sua laurea , anche se non c'entrava nulla;
4) la produzione è stata affidata ad un consulente super-impegnato che lavora 16 ore al giorno e che non ha il tempo di guardare i dettagli, compila? quindi funziona;
5) il sistemista si è inventato le cose più strane per fare partire l'applicazione, ma una minima modifica potrebbe far cadere il castello;
6) il cliente probabilmente non aveva idea dell'impatto dell'applicazione sulla sua organizzazione, e forse non ne aveva neppure bisogno;

Morale della favola: è forse sufficiente fare applicazioni semplici e funzionali? ma soprattutto non perdere mai di vista quello che realmente serve all'utente finale.

domenica 6 aprile 2008

Il pc? Un residuo dell’informatica del passato

Questo articolo apparso qualche giorno addietro pone un interessante questione, abbiamo cosi tanto bisogno di pc ultraperformanti o si potrebbe cominciare a un ritorno al passato con client molto leggeri. Certo non credo che sia il caso di tornare ai terminale 3270, ma in un ottica di risparmio energetico quanto si potrebbe andare a risparmiare usando sempre di più applicazioni online, anzichè applicazioni desktop.
Personalmente non uso più da tempo un client di posta elettronica e vi assicuro che non mi manca affatto, lo stesso si puo fare per tante altre applicazioni!!! Editor di documenti abbondano su internet e i servizi web2.0 sono sempre più maturi. Qualcuno comincia anche a pensare a Sistemi Operativi Web. Oggi ho provato Adobe Air un nuovo modo per interfacciare applicazioni web. Con uno sforzo di fantasia e reti di trasmissioni dati ultraveloci e pervasive, potremmo avere tra qualche anno un pc piccolo ecologico ultraportatile con tutto quello che ci serve disponibile in rete.
Da tre ore ascolto lastfm stasera, non mi manca per nulla un disco pieno di mp3, ho scritto acid jazz e questo utilissimo servizio mi fa ascoltare musica magari a me sconosciuta ma che in base alle direttive che io ho dato al programma rispecchia quello che stasera voglio ascoltare.
Per esempio io non ho un pc ultrapotente, ma ho concentrato la mia attenzione su una postazione dotata di diversi apparecchi in grado di consumare pochissima corrente elettrica. Il mio pc è basato su una scheda madre Intel D201GLY con processore Celeron 215, certo è lento ma basta sapere sciegliere cosa installare e le prestazioni sono a me pienamente soddisfacenti.
Tra poco usciranno diverse soluzioni per a basso consumo e low cost, come gli Asus EP20 la versione desktop del tanto discusso Asus EEE PC, e di questi giorni la notizia che MS sta cominciando a ripensare la sua decisione di dismettere Windows XP a meta 2009, anche MS forse inizia a capire che la gente non è poi cosi interessata a pc ultraveloci che girano a stento con Vista.
Spero solo che presto si passi a pensare ad un informatica sempre più web based abbandonando questa insensata corsa al pc dalle prestazioni estreme, che poi serve solo a giocarci qualche giochino. Speriamo solo che capiscano che il business del futuro è probabilmente la copertura wifi globale , h24 e ovunque.
Solo cosi sarà veramente possibile portare il PC nelle auto, pensate che potrebbe essere un pc che usa Google Earth per scaricare le mappe e portarci a destinazione, aggiornato in tempo reale.
Oppure un aggeggio alla EEE PC che potremmo usare sul treno la mattina per lavorare tranquillamente connessi alla rete aziendale.
Oppure telefonare con il VOIP anche quando siamo fuori dalle nostre case.
Sono cose già possibili ma tra poco diventeranno di ordinaria amministrazione.
Speriamo...

venerdì 4 aprile 2008

ORA-00257

Stamattina loggandomi ad Oracle 10g mi viene fuori questo errore per nulla rassicurante:
ORA-00257: archiver error. Connect internal only, until freed.
Un attimo di sgomento mi pervade, in tanti anni Oracle 9i non mi aveva mai restituito nulla del genere, un po di ricerche e il problema si presenta chiaro, l'istanza è stata creata in archivelog mode e la flash_recovery_area è di solo 2Gb e si è riempita senza aver fatto alcun operazione di manutenzione.

Che fare? A dire il vero non ho trovato molto conforto in giro quindi mi sono persuaso che l'unica alternativa era togliere la modalità archivelog, pertanto dopo aver provato inutilmente a stoppare con dbshut mi sono rassegnato a fare un rebbot della macchina.

Appena risalita ho dato come utente oracle:
$ lsnrctl start
$ sqlplus /nolog
> connect sys/password@dbname as sysdba;
> startup mount;
> alter database noarchivelog;
> alter database open;

Il db ora è in modalità noarchivelog e permette di loggarsi tranquillamente.

jboss heartbeat init script

Alcuni giorni fa ho installato Jboss 4 in un cluster attivo/passivo con heartbeat 2, ho avuto un pò di difficoltà a fare partire Jboss, in quanto ancora non vi è uno specifico agent predisposto e mantenuto dalla comunità heartbeat, pertanto è necessario predisporre in serivio con la sintassi si heartbeat versione 1, che appunto vuole indicato quale script di init avviare per startare in servizio.
Heartbeat per monitorare il servizio necessità che lo scrip di init sia scritto in modo da essere LSB compatibile, pertanto non avendo altre strade ho cerato un pò in giro fino a trovare uno script abbastanza completo per poi renderlo LSB compatibile, lo script funziona abbastanza ed è attualmente in pre-produzione su un cluster attivo/passivo di due server HP DL360G5 con Ubuntu 7.04 Server.
Pertanto andate sotto
$ cd /etc/init.d
$ touch jboss
$ chmoa a+x jboss

copiato sotto il file jboss i comandi di seguito riportati:
----------------------------------------------------------------------------------------------------------------------------------------
#!/bin/sh
#
# Lo script è rilasciato cosi com'è senza alcun tipo di garanzia
# usatelo a vostro rischio è pericolo
# lo script è per un jboss 4.0.3sp1 installato in /usr/local
#
# Source LSB function library.
[ -f /lib/lsb/init-functions ] && . /lib/lsb/init-functions

#---------------------------------------------
# Begin Java and Jboss trivial Confgiuration params
#---------------------------------------------
JBOSS_HOME=/usr/local/jboss-4.0.3SP1
JBOSS_USER="jboss"
JBOSS_CONFIGURATION="default"
JAVA_HOME=/usr/java/
JAVACMD="$JAVA_HOME/bin/java"
#JAVA_OPTS="-Xms64M -Xmx128M"
JAVAC_JAR="$JAVA_HOME/lib/tools.jar"
#---------------------------------------------
# End Java and Jboss trivial Confgiuration params
#---------------------------------------------

# Set some essential variables
JBOSS_BINDIR="$JBOSS_HOME/bin"
LOCKFILE=/var/lock/subsys/jboss
PIDFILE=/var/run/jboss.pid
TMPDIR=/var/cache/jboss

# Functions
start ()
{
if [ ! -f $LOCKFILE ]; then
# Check that JBOSS_USER exists
id $JBOSS_USER > /dev/null 2>&1
if [ $? -ne 0 -o -z "$JBOSS_USER" ]; then
echo "User $JBOSS_USER does not exist..."
RETVAL=1
return $RETVAL
fi

# echo "Starting jboss: "

touch $LOCKFILE

# Reset log to make sure we don't read old start message
rm $JBOSS_HOME/server/$JBOSS_CONFIGURATION/log/server.log
su $JBOSS_USER -c "touch $JBOSS_HOME/server/$JBOSS_CONFIGURATION/log/server.log" &

export JAVA_HOME JAVACMD JAVA_OPTS JBOSS_CONFIGURATION JAVAC_JAR

su $JBOSS_USER -c "$JBOSS_BINDIR/run.sh > $JBOSS_HOME/server/$JBOSS_CONFIGURATION/log/server.log" &

sleep=0
RETVAL=1
while [ $sleep -lt 180 -a $RETVAL -eq 1 ]; do
sleep 10
sleep=`expr $sleep + 10`
grep -q MicroKernel $JBOSS_HOME/server/$JBOSS_CONFIGURATION/log/server.log > /dev/null 2>&1
if [ $? -eq 0 ]; then
RETVAL=0
fi
done

# Uncomment if JBoss doesn't deploy everything in time
#sleep 60
if [ -f /lib/lsb/init-functions ]; then
[ $RETVAL -eq 0 ] && log_success_msg "jboss startup result: 0" || ( log_failure_msg "jboss startup result: 3" && rm -f $LOCKFILE )
echo ""
else
[ $RETVAL -eq 0 ] && echo "jboss startup succeeded result: 0" || ( echo "jboss startup failed resul: 3" && rm -f $LOCKFILE )
fi
else
echo "lockfile for jboss already exists...result: 0"
RETVAL=0
fi
return $RETVAL
}

stop ()
{
# echo -n "Shutting down jboss: "

# Don't stop it if it's not running..
status > /dev/null 2>&1
if [ $? -eq 3 ]; then
if [ -f /lib/lsb/init-functions ]; then
log_success_msg "jboss shutdown return: 0"
echo ""
else
echo "jboss shutdown succeeded return: 0"
fi
return 0
fi

export JAVA_HOME JAVACMD JAVA_OPTS JBOSS_CONFIGURATION JAVAC_JAR

su $JBOSS_USER -c "sh $JBOSS_BINDIR/shutdown.sh $JBOSS_SHUTDOWN_OPTIONS --" &

# Sleep every 10 seconds for up to 180 seconds, and check to see if
# jboss is still running
sleep=10
RETVAL=1
while [ $sleep -lt 180 -a $RETVAL -eq 1 ]; do
sleep 5
sleep=`expr $sleep + 10`
pslist=$( ps -af | grep java | grep $JBOSS_USER | awk '{print $2}' | tr '\n' ' ' | sed -e s/\ $// )
[ -z "$pslist" ]
if [ $? -eq 0 ]; then
RETVAL=0
fi
done
if [ -f /lib/lsb/init-functions ]; then
[ $RETVAL -eq 0 ] && ( log_success_msg "jboss shutdown return: 0" && rm -f $LOCKFILE ) || log_failure_msg "jboss shutdown return: 99"
echo ""
else
[ $RETVAL -eq 0 ] && ( echo "jboss shutdown succeeded return. 0" && rm -f $LOCKFILE ) || echo "jboss shutdown failed return: 99"
fi
return $RETVAL
}

status ()
{
pslist=$( ps -ef | grep java | grep $JBOSS_USER | awk '{print $2}' | tr '\n' ' ' | sed -e s/\ $// )
if [ -n "$pslist" ]; then
echo "jboss (pid $pslist) is running result: 0"
return 0
fi
if [ -f $PIDFILE ]; then
echo "jboss dead but pid file exists result: 1"
return 1
fi
if [ -f $LOCKFILE ]; then
echo "jboss dead but subsys locked result: 2"
return 2
fi
echo "jboss is stopped result: 3"
return 3
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
RETVAL=$?
;;
restart|reload|force-reload)
stop
start
;;
condrestart)
if [ -f $LOCKFILE ]; then
restart
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
exit 1
esac
----------------------------------------------------------------------------------------------------------------------------------------
Spero esser stato utile.

giovedì 3 aprile 2008

Oracle 10 e il debug da plsql

Se siete abituati a lavorare con Oracle 9i ma ora vi tocca lavorare con oracle 10g, troverete che il debug di plsql non ne vuole sapere di funzionare, tranquilli tutto si risolve con una grant all'utente che deve fare debug, quindi vi connetete come sys e date:

grant debug any procedure, debug connect session to "nome_utente";

Buon debug....