JAVA – Convertire un InputStream in un oggetto Document

Funzione di conversione di un oggetto InputStream (e tutte le sue sottoclassi) in un oggetto Document W3C su cui è possibile effettuare la lettura/manipolazione dei nodi XML.

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public static Document toDocument(InputStream is) throws ParserConfigurationException,IOException , SAXException{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
Document doc = db.parse(is);

return doc;

}

Analisi delle statistiche di accesso al sito 2010

Analisi delle statistiche di accesso al sito Vincenzo Scognamiglio per l’anno 2010 elaborate dai dati di Google Analytics.

Il sito ha totalizzato 35411 page view e 28763 visite uniche.

La fotogallery è statala sezione più visitata con 14368 page view.
I cinque contenuti più visitati sono stati:

Pagina
P. View
V. uniche
Sezione
3419
3207
Phoenix81
2068
2041
VS
1345
1296
Phoenix81
731
663
Phoenix81
730
665
Phoenix81
Il sito ha totalizzato i seguenti punteggi:

Sezione

Page View

Uniche

% uniche

Fotogallery 14368 11047 38.41
Phoenix81 8741 7944 27.62
VincenzoScognamiglio.it 4531 3273 11.38
F1 4045 3691 12.83
Viaggio in Egitto 2395 1754 6.1
Forum 978 795 2.76
Sala giochi 197 152 0.53
Matrimonio 156 106 0.37
TOTALE 35411 28763 100
Grafico delle visite 2010

Grafico delle visite 2010

I dati fanno emergere un forte e variegato interesse per il blog Phoenix81, da evidenziare che l’articolo “Il mio ereader: il Trekstor Player 7” è stato pubblicato il 30 Novembre, quindi ha raggiunto un numero di visite impressionanti in poco più di un mese.

Confermato l’enorme numero di visite del 2009  per l’articolo “Traduzione O’ mia bela Madunina” mentre i contenuti non più aggiornati del forum sono quasi fuori dai radar.

La fotogallery, anche essendo la sezione più visitata, non piazza nessun contenuto nella TOP 5, il primo contenuto diverso dalla home page di sezione è Festa di San Ciro a Portici al 30° posto con 161 page view e 70 accessi unici.

Per un errore nell’impostazione del codice, la Sala Giochi  è stata monitorata dal 12 giugno 2010.

Il blog Viaggio in Egitto e Matrimonio sono tutt’oggi in fase di lavorazione.

Le query più ricercate sono state:
o mia bela madunina traduzione (2144), perplime (1191), vincenzo scognamiglio (609), trekstor ebook player 7 (303), fotogallery sirmione (285).
/index.php 3422
/phoenix81/dalla-madunina-di-milano/index.php 1157
/f1/java-j2ee 405
/f1/blog-categoria/52-velocita-telefonino-gprs-umts-edge-hsdpa 400
/vsForum/viewtopic.php?t=43 387

Analisi delle statistiche di accesso al sito 2009

Analisi delle statistiche di accesso al sito Vincenzo Scognamiglio per l’anno 2009 elaborate dai dati di Google Analytics.

Il sito ha totalizzato 14678 page view e 11929 visite uniche.

La sezione principale del sito (VincenzoScognamiglio.it) è stata la più visitata con 4598 page view.
I cinque contenuti più visitati sono stati:

Pagina
P. View
V. uniche
Sezione
3422
2754
VS
1157
1083
Phoenix81
405
356
Helpdesk
400
381
Helpdesk
387
337
Forum

Il sito ha totalizzato i seguenti punteggi:

Sezione

Page View

Uniche

% uniche

VincenzoScognamiglio.it 4598 3724 31.21804
Fotogallery 3282 2324 19.48193
Phoenix81 2582 2316 19.41487
F1 2853 2493 20.89865
Forum 1363 1072 8.986503
TOTALE 14678 11929 100
Grafico visite 2009

Grafico visite 2009

L’andamento dell’anno mostra un forte incremento delle page views per la fotogallery mentre mostra un continuo declino del forum.

In nettissimo aumento le visite al blog Phoenix81 soprattutto grazie alla traduzione della canzone “O’ mia bella madunina”.

Per un errore nell’impostazione del codice, la Sala Giochi non è stata monitorata durante il 2009.

Le query più ricercate sono state:
vincenzo scognamiglio (344), o mia bela madunina traduzione (320), album castiglione del lago (236), fotogallery venezia (221), simboli rom (77).
Il documento completo delle statistiche è scaricabile:

VincenzoScognamiglio.it – Statistiche accessi anno 2009

/index.php 3422
/phoenix81/dalla-madunina-di-milano/index.php 1157
/f1/java-j2ee 405
/f1/blog-categoria/52-velocita-telefonino-gprs-umts-edge-hsdpa 400
/vsForum/viewtopic.php?t=43 387

Samsung Omnia i900: i codici segreti

Samsung Omnia i900

Samsung Omnia i900

Non c’è dispositivo  che non abbia i suoi segreti.

L’Omnia i900 è stato uno dei primi contendenti del iPhone con il suo Windows Mobile 6.1

I codici vanno digitati sul tastierino numerico virtuale per visualizzare informazioni e menù nascosti del telefonino.

Ecco la lista per accedere ai menù segreti:

  • *#0228# Mostra il monitor GSM con tutte le informazioni tipo (Antenna RSSI, tacchette, cella di servizio, tipo batteria etc.
  • *#1546792*# Permettte l’accesso al pannello di amministrazione (meglio non toccare nulla)
  • *#0002*28346# Menù di configurazione Audio
  • *#1472365# Configurazione Gps e monitoraggio satelliti
  • *#197328640# Menù di test del GSM
  • *#7465625# Mostra lo stato di lock (Lock Status Information) della rete, i servizi del provider e lo stato della sim
  • *#92782# Mostra i profili UA dello smartphone
  • *#32489# Ulteriore menù di test del GSM
  • *#2263# Permette la selezione della banda da utilizzare
  • *#1234# Mostra le versioni del PDA e del telefono
  • *#0782# Mostra gli allarmi del orologio
  • *#0842# Testa il vibratore e la retro illuminazione di display/tasti
  • *#06# Mostra il codice IMEI univoco del telefonino come descritto in questo articolo.

Attenzione, qualsiasi cosa modificate la fate a vostro rischio e pericolo.

Il codice IMEI del telefonino: composizione e come visualizzarlo

Nel caso un telefonino venga trafugato è da un po’ di tempo possibile bloccare il proprio telefonino.
Il blocco è realizzabile mediante il codice IMEI, i gestori telefonici italiani hanno un database unico di questi codici.
Il codice IMEI viene inviato al gestore di cui si sta usando la scheda telefonica all’accensione del cellulare e ad ogni accesso alla rete.
Pertanto, se il codice IMEI è inserito in una “black list” degli operatori telefonici, è possibile inibire l’uso del telefonino per qualsiasi utilizzo della rete.
Il blocco del telefonino è possibile effettuarlo tramite modulistica reperibile da qualsiasi centro d’assistenza di un operatore italiano, al pari di quello della scheda.
L’IMEI è l’abbreviativo di International Mobile Equipment Identity, è un numero univoco che identifica ogni singolo telefono cellulare. Questo codice non è modificabile dall’utente.
Il codice IMEI è scritto sulla batteria o comunque sulla confezione del telefonino.
E’ anche possibile visualizzarlo su qualsiasi telefonino digitando *#06#.

A seconda del vostro cellulare, questo codice può avere due formati diversi, quello vecchio (antecedente aprile 2004) e quello nuovo.
IMEI vechio:
– aabbbb-cc-dddddd-e
IMEI nuovo:
– xxxxxxxx-dddddd-e

IMEI vecchio (antecedente aprile 2004)

Il formato aabbbb-cc-dddddd-e era in uso fino al 1° aprile 2004. Andava interpretato così:
aabbbb è il Type Approval Code (TAC). Le prime 2 cifre (aa) rappresentano il codice del paese.

– il secondo gruppo di cifre (cc) è il Final Assembly Code (FAC), identifica il produttore:
AEG (01,02,65)
Alcatel (60)
Bosch (50)
Dancall (75)
Ericsson (30,61,51)
Motorola (07,40)
Nokia (10,20)
Panasonic (85)
Philips (80)
Sagem (70)
Siemens (40,41,44,51)
Sony (51)

dddddd rappresenta il device serial number (SNR)

– L’ultima cifra (e) è una cifra di controllo (solitamente settata a 0).

Il nuovo formato IMEI

Il nuovo formato xxxxxxxx-dddddd-e è in utilizzo dal 1° gennaio 2004. Il valore di FAC è scomparso e il Type Approval Code è stato sostituito dal Type Allocation Code (TAC in entrambi i casi):
– xxxxxxxx è il codice di 8 cifre che indica il Type Allocation Code.
– dddddd e e hanno lo stesso significato che avevano nel vecchio formato.
Il formato IMEISV

Potreste avere 2 cifre extra alla fine dell’IMEI. In questo caso, le ultime 2 cifre indicano la versione del software installata sul vostro cellulare.
Potete controllare le specifiche ETSI 02.16 e 03.03 se avete bisogno di maggiori dettagli.

Telefonia mobile – Conoscere l’operatore mobile del numero chiamato

Con la possibilità di cambiare operatore telefonico e in concomitanza con tariffe e promozioni che favoriscono  chi chiama lo stesso operatore della propria SIM diventa assolutamente necessario sapere a quale operatore appartiene la SIM di chi si sta chiamando.

Per conoscere l’operatore del ricevente bisogna anteporre il prefisso 456 al numero, quindi:

456<Numero chiamato>

Variabili d’ambiente Apache ed estensioni SSI

Variabili d’ambiente di Apache

Ecco un elenco delle variabili d’ambiente Apache (Environmental Variables) e delle relative estensioni SSI (Server Side Includes).

Le variabili sono visualizzabili col comando echo di Apache o #printev di PHP.

Attenzione, i nomi delle varibili sono case sensitive.

GATEWAY_INTERFACE

Versione e revisione delle specifiche CGI che il server supporta.

Esempio: 
GATEWAY_INTERFACE=CGI/1.1 

PATH

I percorsi disponibili sul server per il sito web di riferimento

Esempio: 
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin 

QUERY_STRING

Le eventuali informazioni inviate in querystring.

Esempio: 
chiamando h**ttp://ilmiosito.it?parola=ciao&valore=10 si ha
QUERY_STRING=parola=ciao&valore=10 si ha

REMOTE_ADDR

Restituisce l’indirizzo IP dell’host che sta realizzando la richiesta.

Esempio: 
REMOTE_ADDR=207.35.76.27 

REMOTE_PORT

Il numero di porta usato dall’host remoto che realizza la richiesta

Esempio:

REMOTE_PORT=4325 

REQUEST_METHOD

Il metodo usato dall’host remoto che realizza la richiesta (GET, HEAD, POST)

Esempio:

REQUEST_METHOD=POST 

REQUEST_URI

La URI della richiesta (relativamente alla DOCUMENT_ROOT)

Esempio: 
REQUEST_URI=/vs/web/variabili.htm 

SCRIPT_FILENAME

Il percorso dello script in esecuzione(relativamente alla DOCUMENT_ROOT)

Esempio:

SCRIPT_FILENAME=/tech/web/ssi.htm 

SCRIPT_NAME

Il nome dello script in esecuzione(relativamente alla DOCUMENT_ROOT)

Esempio:

SCRIPT_NAME=/tech/web/ssi.htm 

SERVER_ADDR

L’indirizzo IP del server dell’URL chiamato

Esempio: 

SERVER_ADDR=207.35.76.24

SERVER_ADMIN

L’indirizzo email dell’amministratore del server

Esempio:  
SERVER_ADMIN=webmaster@zytrax.com 

SERVER_NAME

The servers host name, DNS alias or IP address. For Apache the name appearing on the relevant ServerName directive (may be in the general section or a <virtualhost> section e.g.

SERVER_NAME=www.zytrax.com

SERVER_PORT

The port number on this server to which this request was directed e.g.

SERVER_PORT=80

SERVER_PROTOCOL

The name and revision of the protocol that delivered the current request e.g.

SERVER_PROTOCOL=HTTP/1.1

SERVER_SIGNATURE

The HTML string that may be embedded in the page to identify this host e.g.

SERVER_SIGNATURE=<ADDRESS>Apache/1.3.14 Server at www.zytrax.com Port 80</ADDRESS>

SERVER_SOFTWARE

The name and version of the information server answering the query e.g.

SERVER_SOFTWARE=Apache/1.3.14 (Unix) (Red-Hat/Linux) PHP/4.0.3pl1

HTTP Header Variables

The following variables are constructed from the HTTP header information supplied by the requestor.

HTTP_ACCEPT

The MIME types the requestor will accept as defined in the HTTP header e.g.

HTTP_ACCEPT=*/*

HTTP_ACCEPT_ENCODING

The MIME types the requestor will accept as defined in the HTTP header e.g.

HTTP_ACCEPT_ENCODING=gzip, deflate

HTTP_ACCEPT_LANGUAGE

The LANGUAGE types the server is requested to accept as defined in the HTTP header and typically used for content negotiation e.g.

HTTP_ACCEPT_LANGUAGE=en-us

HTTP_CONNECTION

The type of connection as defined in the HTTP header e.g.

HTTP_CONNECTION=Keep-Alive

HTTP_COOKIE

The value of any cookie in the HTTP header. Standard cookie formats are defined by RFC 2965 (Set-Cookie2 header) and the older (non-standard) netscape cookie format.

HTTP_HOST

The base URL of the host e.g.

HTTP_HOST=www.zytrax.com

HTTP_REFERER

The URL of the page that made this request. If linked from e-mail or manually entered this value is NULL.

HTTP_REFERER=http://www.zytrax.com/tech/web/

HTTP_USER_AGENT

The browser id or user-agent string identifying the browser (nominally defined by RFC 1945 and RFC 2068). See here for our current list.

HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)

SSI Extensions

This section defines the additional variables made available by SSI.

DATE_GMT

The current date and time in Greenwich Mean Time (now Unviversal Co-ordinated Time (UCT) in the default or #config defined format).

DATE_GMT=Thursday, 03-May-2001 21:18:54 GMT

DATE_LOCAL

The current date and time in the local (server) timezone (in the default or #config defined format).

DATE_LOCAL=Thursday, 03-May-2001 17:18:54 EDT

DOCUMENT_ROOT

The root directory of this site defined by the ‘DocumentRoot’ directive in the General Section or a <virtualhost> section e.g.

DOCUMENT_ROOT=/var/www/zytrax

DOCUMENT_NAME

The file name (excludes directories) of the document requested by the user e.g.

DOCUMENT_NAME=ssi.htm

DOCUMENT_PATH_INFO

Not well documented but it seems that if there is query string information following the URL (starts with a ‘?’), for instance, ../index.html?x=a, the data (x=a) is placed in QUERY_STRING. If the additional data starts with a /, for instance, ../index.html/path?x=a the data (path?x=a) is placed in the DOCUMENT_INFO_PATH variable. Apache 2.x allows the behaviour to be controlled using the AcceptPathInfo directive

DOCUMENT_PATH_INFO=

DOCUMENT_URI

The URL path of the document requested by the user e.g.

DOCUMENT_URI=/tech/web/ssi.htm

LAST_MODIFIED

The last modification date of the document (file) requested by the user (in the default or #config defined format). This variable is not changed for SSI included files.

LAST_MODIFIED=Thursday, 03-May-2001 17:18:45 EDT

USER_NAME

The user name of the web site in which this web site runs e.g.

USER_NAME=zytrax

PHP – Modificare l’header anche dopo l’inizio dell’invio della risposta

Man mano che il server elabora la risposta HTML comincia ad inviare le informazioni di intestazione, ovvero l’header del protocollo HTTP che contiene informazioni come per, esempio , il content-type e la codifica.

Una volta iniziato l’invio dell’header, tendenzialmente, non si possono aggiungere o modificare le intestazioni neanche con la funzione header() del PHP.

Per esempio non possiamo cambiare la location (effettuando un redirect) col seguente codice:

if($_POST[‘nomeVar’] == “sposta”)

{

echo “Adesso ti sposto”;
header(“location: daunaltraparte.php”);

}

Quindi la soluzione più valida è sicuramente quella di modificare opportunamente il codice per avere gli header tutti in testa (come suggerisce il nome), oppure abilitare il buffering direttamente da codice con le opportune funzioni PHP (il funzionamento dipende anche dall’hosting).

Ecco tre soluzioni alternative per abilitare il buffering:

  1. Nel php.iniabilitare l’opzione output_buffering = On.
  2. Abilitare nel codice ini_set(‘output_buffering’, ‘On’);
  3. Usare le funzioni ob_start(), ob_end_flush();

Il buffering inevitabilmente porterà una risposta HTTP inviata leggermente in ritardo al client, solitamente l’utente non ha alcuna percezione di questi tempi.

Modificare dinamicamente il Content Type di una JSP

Lavorando con il web capita non raramente di dover settare il valore del content-type all’interno dell’header di risposta.

In alcuni casi, addirittura può essere utile settare il content type dinamicamente a seconda della risposta che si sta esibendo.

Per settare il valore del content-type in una Java Server Page si può usare il seguente codice.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" %>

Ill valore dell’attributo contentType può specificare il formato (es. text/html, text/xml) e/o il charset (es. ISO-8859-1, UTF-8).

Si può anche scrivere direttamente il codice scriptlet modificando la response:

<% response.setContentType(“text/html; charset=ISO-8859-1”); %>

La comodità di questa soluzione è permette anche di utlizzare come valore di questo attributo una variabile, magari reperibile dalla request:

<% String r=(String)request.getAttribute(“responseType”);response.setContentType(r); %>

Javascript – Funzione di arrotondamento (Round) in javascript

In javascript (1.2)  non esiste una funzione di arrotondamento integrata capace di gestire i decimali.

Esiste una funzione round nella libreria Math che effettua il troncamento a un intero:

Math.round(x)

Usando questa funzione si ottiene l’intero più vicino, ad esempio:

Math.round(44.9) //Ritorna 45

Math.round(45.2) //Ritorna 45

Math.round(-7.58) //Ritorna -8

Ecco il codice per una funzione round personalizzata che realizza effettivamente l’arrotondamento con numeri decimali:

function round(valore, posizioniDecimali)
{
var ris = valore * Math.pow(10,posizioniDecimali);
ris = Math.round(ris);
return ris / Math.pow(10,posizioniDecimali
);
}