Gestione degli errori 400 e 500 col Server Apache

In caso di errori si possono definire dei comportamenti per il server Apache, in particolare per gli errori della famiglia HTTP 4xx e 5xx.

Prima di tutto va attivata la direttiva errorlog anche se solitamente viene preconfigurata durante l’installazione di apache.

Il valore standard solitamente è: ErrorLog logs/error.log

Di default, se viene generato un errore,i appare un messaggio del server tipo:

“500 – Internal Server Error” oppure il classico “404 page not found”

Che informa di un errore del server che può essere dovuto a molti fattori oppure, nel secondo caso, che si sta cercando una risorsa che non esiste.

Si può modificare tale messaggio mediante la direttiva ServerSignature scegliendo tra una delle tre opzioni a disposizione: On/Off/Email.

Di default è impostata su On restituendo a fine pagina la versione del server ecc;

Mettendo Off invece si disabilita l’informazione a piè di pagina

In fine con EMail si attiva il link sul nome del server che riporta alla Email configurata in ServerAdimin.

Questo metodo è piuttosto tecnico e non garantisce un elevato livello di user-friendly.

Una scelta migliore è quella di definire una pagina di errore creata ad hoc per informare l’utente di cosa è successo, lasciandogli così una sensazione di minore gravità e la possibilità di continuare a navigare sereno nel sito.

Gli errori più frequenti sono della famiglia 4xx (risorsa non disponibile):

400: La richiesta non può essere soddisfatta dal server per via di un errore di sintassi.
401: Errore di sintassi o richiesta impossibile da soddisfare perché è stata richiesta l’autenticazione
dell’utente.
402: E’ richiesto un pagamento al fine di soddisfare tale richiesta.
403: La richiesta effettuata è proibita oppure non hai i permessi idonei per tale richiesta.
404: La richiesta non può essere soddisfatta in quanto il file richiesto non esiste.

Gli errori più frequenti sono della famiglia 5xx (errore interno del server):

500: Il server ha incontrato una condizione inaspettata.
501: Il server non sopporta il servizio richiesto.
502: Il server è temporaneamente sovraccarico di richieste da parte di altri utenti, provate a collegarvi tra qualche minuto.
503: Il server tentando di accedere ad altri servizi non ottiene alcuna risposta.

Gli errori elencati coprono la quasi totalità di quelli che si incontrano fruendo un sito web.

Un buon sito dovrebbe avere una pagina di errore ad hoc almeno per una delle due tipologie di errore.

Arriviamo al concreto, la sintassi per associare una pagina di cortesia ad un errore rilevato da Apache è la seguente:

ErrorDocument 400 http://tuoHost/errore/400.html
ErrorDocument 402 http://tuoHost/errore/402.html
ErrorDocument 403 http://tuoHost/errore/403.html
ErrorDocument 404 http://tuoHost/errore/404.html
ErrorDocument 500 http://tuoHost/errore/500.html
ErrorDocument 501 http://tuoHost/errore/501.html
ErrorDocument 502 http://tuoHost/errore/502.html
ErrorDocument 503 http://tuoHost/errore/503.html

PNG in Internet Explorer 5.5 e 6

Ci sono problemi di visualizzazione di alcuni formati PNG per Internet Explorer 5.5 e 6.

Il formato PNG prevede un canale alpha (ovvero la gestione della trasparenza). Questo formato è nato esplicitamente per il web ma le versioni Microsoft Internet Explorer precedenti alla 7.0 non lo supportano completamente.
infatti se si usa un’immagine PNG con trasparenza ci si può trovare con l’area trasparente sostituita da uno sfondo azzurro.
Ci sono vari modi per evitare questo problema:

1. Convertire i PNG in GIF
2. Usare delle patch Javascript
3. Cambiare il formato delle PNG in 128 Not Interlaced (consigliato)

1. Convertire i PNG in GIF
Convertire le PNG in GIF può essere comodo e risolve il problema della trasparenza.
Aldilà delle differenze legate strettamente alle dimensioni dei file nei due formati, le GIF sono molto meno adatte ad essere scalate (ovvero mostrate nell’HTML in dimensioni diverse da quelle del file originale), quindi se si pensa di usare la stesse immagini in diverse proporzioni conviene scartare questo metodo.

2. Usare delle patch Javascript
Ci sono vari siti che descrivono l’utilizzo di script Javascript per risolvere il problema (sono disponibili anche in pacchetti distribuiti per Joomla). Non ne ho testato nessuno perchè ritengo questa soluzione poco pratica.

3. Cambiare il formato delle PNG in 128 Not Interlaced

Ho testato questa soluzione su IE 6, IE 7 e FireFox.
Convertendo le PNG che davano questo problema in PNG a 128 Bit Not Interlaced la trasparenza ha funzionato perfettamente su tutti i browser testati.

Inviare FAX gratis

Mi sono messo alla ricerca di servizi per inviare fax gratis.

Ne ho provati tre o quattro, tutti funzionanti limitatamente a FAX nazionali.
Alla fine quello che è risultato più efficiente e semplice è stato:
faxator.com

Dopo l’iscrizione mi è arrivata una mail, ho mandato un SMS al numero di telefono che mi hanno indicato e mi è stato inviato un “certificato di sicurezza” alla mia mail.
Dopo 2 minuti ero attivo per inviare fax, ho testato il servizio ed è molto efficiente.

Per inviare un fax basta mandare una mail all’indirizzo di Faxator.com, scrivere come oggetto il numero di fax di destinazione e allegare il documento da faxare più il certificato di sicurezza.

Unica pecca, il servizio funziona solo negli orari lavorativi (da lunedì a venerdì, dalle 8:00 alle 20:00), però ha una coda schedulazione, cioè una richiesta di fax effetuata fuori dagli orari previsti viene servita appena “riapre” il servizio.

Ottimo.

Velocità connessoni telefonino (GPRS, UMTS, EDGE, HSDPA)

Come noto è possibile utilizzare i telefonini e le ormai diffusissime chiavette Internet per la connessione a Internet.

Le possibili velocità (sempre teoriche) a seconda della connessione, sono   le seguenti:

Tecnologia

Velocità teorica

Velocità effettiva

GPRS 171,2 Kbps 25-40 Kbps
EDGE 384 Kbps 80-180 Kbps
UMTS 2 Mbps 200-300 Kbps
HSDPA o ADSM 7.2 Mbit/s in downlink e 2.0 Mbit/s in uplink 385 Kbps

le velocità sono indicative e dipendono anche dallo stato di congestione della rete.

GPRS è l’acronimo di General Packet Radio Service, una tecnologia per l’invio di pacchetti dati a media velocità sfruttando i canali TDMA della rete GSM (ovvero canali accesso multiplo a ripartizione nel tempo – Time Division Multiple Access).

EDGE è l’acronimo di Enhanced Data rates for GSM Evolution, cioè un evoluzione tecnologica del GPRS che in Italia risulta utilizzata solo da TIM.

UMTS è l’acronimo Universal Mobile Telecommunications System, è la tecnologia di telefonia di terza generazione (il famoso 3G che a volte compare sui telefonini) e ha una banda sufficiente da permettere le videochiamate.

HSDPA è l’acronimo inglese di High Speed Downlink Packet Acces e rientra nel protocollo UMTS. Al momento è la massima tecnologia utilizzata dalle chiavette Internet e alcuni telefonini avanzati.

JAVA – Ottenere il primo giorno della settimana

Ottenere il primo giorno della settimana

Nel caso serva ottenere il primo giorno della settimana in riferimento a un giorno specifico, la funzione per ottenere questo risultato è la seguente:
Codice:
/**
** IN: Date today – giorno di riferimento all’interno della settimana du cui si vuole conoscere il primo giorno
**/
public static Date getCurrentMonday(Date today)
{
Date monday = null;
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(today);
int day = rightNow.get(Calendar.DAY_OF_WEEK);
int distance = 0;
if (day == Calendar.MONDAY)
{
monday = rightNow.getTime();
}
else
{
distance = day – Calendar.MONDAY;
if (distance == -1)
distance = 6;
monday = (Date) (rightNow.getTime());
monday.setTime(monday.getTime() – 1000 * 60 * 60 * 24 * (distance));
}
return monday;
}
Ad esempio quand’è lunedì nella settimana contenente il 25-07-2008? (risp. 21-07-2008)

La funzione ha impostato come primo giorno della settimana il lunedì, in caso si voglia cambiare il giorno di rifermento va cambiato nel codice Calendar.MONDAY con la costante del giorno che interessa (definita nella classe Calendar)

JAVA – Come ottenere l’anno corrente in Java

Come mostrare correttamente l’anno corrente in Java (senza usare il metodo Date.getYear)
Fino alla versione del JDK 1.1 veniva abitualmente usato il metodo java.util.Date.getYear()!
Questo metodo è deprecato dalla JDK 1.2 in poi in quanto, per gli anni successi al 1999 restituiva il numero di anni passati dal 1900.
Per ottenere correttamente l’anno in corso si può utilizzare il seguente codice:
Calendar calendar = GregorianCalendar.getInstance();
System.out.printl(“ANNO CORRENTE:” + calendar.get( Calendar.YEAR ));

invece di:

Date d = new Date();
Systtem.out.printl(“ANNO CORRENTE:” + d.getYear());

Che invece mostrerebbe come risultato (nel 2009):
ANNO CORRENTE:109