Archivio Articoli della Categoria 'Programmazione'

Pagina 404 in stile 2.0: funziona!

Programmazione Nessun Commento »

La pagina di errore 404, il famelico errore di pagina non trovata (page not found) in stile web 2.0: chiedere agli utenti di aiutarci a mantenere i link dei nostri siti sempre aggiornati e funzionali. Questa guida funziona su IIS per Windows, ma anche su Apache per i server Linux: dovete solo sapere dove posizionare la pagina, con che nome salvarla o come far riconoscere la stessa al server come pagine di errore 404 principale.

Personalizzare la pagina di errore 404

La pagina di erorre 404, almeno sui server Windows su cui sono solito lavorare, deve necessariamente essere una pagina statica, in formato .htm o .html, incapace di essere processata e quindi di eseguire delle operazioni automaticamente. Ecco allora che, durante la ristrutturazione delle nostre macchine, ne ho approfittato per creare una 404 “collaborativa”, tipo Users Generate Contents: questa sarà però solo Users Advise Errors.

Dopo aver disegnato una grafica “personale”, attraverso la scrittura di codice JS, cerchiamo di capire se

  • l’utente ha seguito un link trovato su qualunque pagina (anche motori di ricerca)
  • l’utente ha digitato male un indirizzo

L’unica differenza tra queste due modalità si riconosce, banalmente, attraverso la verifica dell’HTTP Referrer. Se quest ultimo è presente, significa che esiste un referente per la nostra pagina, quindi un sito che presenta un vecchio o errato collegamento.

Il codice JS

Sfortunatamente, tutti i contenuti della pagina andranno disegnati in JS.

Il codice JS che trovate qui in seguito va inserito all’interno dei tag <body> della vostra pagina 404.

<script>
<!--
// verifica referrer
var strReferrer=document.referrer.toLowerCase();
if (location.href.indexOf("noreferrer=true")>=0) strReferrer="";

//no referrer!
var str='';
str+='<div><p><a href="/" title="Vai alla Home Page">Home Page<\/a><\/p><\/div>';
str+='<div><p><strong>La pagina che stai cercando potrebbe non essere visibile a causa di:<\/strong><\/p>';
str+='<ol type="a">';
str+='  <li>un <strong>vecchio segnalibro<\/strong><\/li>';
str+='  <li>un motore di ricerca con un <strong>vecchio collegamento<\/strong><\/li>';
str+='  <li>un <strong>indirizzo mal digitato<\/strong><\/li>';
str+='<\/ol><\/div>';
document.write(str);

var blnInsiteReferral = false;
var strSite = "";
//si referrer!
if (strReferrer.length!=0) {
	//verifico la possibile provenienza dallo stesso sito
	blnInsiteReferral = (strReferrer.indexOf(location.href)>=0)

	str='<div><h3>Aiutaci ad aiutarti...</h3>';
	//stesso sito
	if (blnInsiteReferral){
		str+='<p>Sembra che qualcuno dei nostri link sia rovinato. Tutto quello che ti chiediamo di fare per darci una mano &egrave; di premere il bottone in seguito.<\/p>';
	} else {
		str+='<p>Per migliorare i nostri servizi, ti chiediamo di informarci sui link scorretti. Ci occuperemo noi di informare chi di dovere per modificare il link.<br />Premi <strong>Invia<\/strong>!<\/p>';
	}

	//form per l'invio delle informazioni
	str+='<form method="post" action="http:\/\/www.mysite.com\/send404.asp">';
	str+='<input type="hidden" name="referring" value="' + strReferrer + '" \/>';
	str+='<input type="hidden" name="page" value="' + location.href + '" \/>';
	str+='<input type="submit" name="cmdSubmit" class="button" value="Invia" \/>';
	str+='<\/form>';
	str+='<\/div>';
	document.write(str);
}
-->

Io invio email, tu?

Come potete vedere, il form disegnato dal JS viene mandato ad una pagina di nome send404.asp, pagina che si incaricherà di inviare un’email ad uno dei nostri account di posta per informarlo del link rovinato. Non sto a riportarvi anche il codice del form, potete facilmente ritrovarlo anche voi facendo una semplice ricerca su Google!

Conclusioni

A differenza di quanto credevo e potevo aspettarmi, la pagina ha riscosso parecchio successo e molte delle persone che, navigando finivano su uno di quei pochi link “rovinati” e di conseguenza sulla nostra nuova pagina 404, cliccavano sul bottone e…ecco arrivare una bella email nella nostra casella di posta che ci informa di referrer e indirizzo della pagina non trovata! Che ne dite?

dateAdd in Javascript

Programmazione, Sviluppo Siti 1 Commento »

Mi sono scontrato con una funziona banale, conosciuta in ASP (VBScript), ma comoda, funzione che in JS non ho mai visto e trovato (magari ne ho anche fatte poche ricerche). DateAdd permette di sommare ad una data un valore qualsiasi di un intervallo dato (secondi, minuti, ore, giorni, mesi e anni).

Potete scaricare qui la mia funzione dateAdd in JS.

Funzionamento

Utilizzare la funzione è semplicissimo: a seguito alcuni esempi.

/* Sommare 10 ore all'ora di oggi */
ora_nuova = addInterval(new Date(), 'h', 10);

/* Sommare 300 secondi all'ora di prima */
ora_nuova2 = addInterval(ora_nuova, 's', 300);

Semplice, non credete?

Abilitare cURL su EasyPHP

Programmazione 1 Commento »

Probabilmente sono rimasto uno dei pochi che utilizzano ancora EasyPHP al posto dei tanti XAMPP o simili, ma EasyPHP l’ho visto crescere e, a parte qualche difetto nella versione 1.8 (molto meglio la versione 1.7), ora che è giunto ad una versione 2.0beta è diventato per me un pacchetto standard, tanto da averlo installato anche sul gioiellino che vi ho descritto l’altro giorno, il mio nuovo Samsung NC10.

Per chi non lo conosce, EasyPHP è un piccolo programma che racchiude Apache, MySQL e PHP e permette una semplice configurazione di tutti questi pacchetti per il web.

Abilitare cURL

Se avete provato a decommentare la linea che porta così ad abilitare l’estensione cURL di PHP vi sarete trovati di fronte ad un piccolo errore di Windows che appare ogni volta che PHP cerca di caricare questa estensione. Infatti, per poter utilizzare cURL, è necessario fare una copia di due DLL di PHP all’interno della cartella di sistema di Windows (system32).

Per abilitare questo modulo in ambiente Windows, occorre copiare libeay32.dll e ssleay32.dll dalla cartella delle DLL del pacchetto PHP/Win32 nella cartella SYSTEM32 della propria macchina Windows. (Es: C:\WINNT\SYSTEM32 o C:\WINDOWS\SYSTEM)

Altro? ;)

VB.NET: disabilitare beep di sistema sul KeyDown del tasto Invio

Programmazione 1 Commento »
Return (red circle) and Enter (green circle) b...

Image via Wikipedia

Vi capiterà certamente di creare applicativi con Visual Studio che richiedono il minor uso del mouse possibile e che vi permettano così, attraverso il solo utilizzo della tastiera, di passare da un campo all’altro, sia in avanti che all’indietro. Intercettare la pressione dei tasti è cosa molto semplice grazie agli eventi KeyPress, KeyDown e KeyUp (fortunatamente nulla è cambiato dalla vecchia versione VB6).

Il problema che però potreste incontrare è quello di sentire un “beep” (che beep non è visto che è il segnale di errore) alla pressione del tasto Invio (Enter) all’interno di una TextBox. Per ora mi è capitato solo su una TextBox e non su altri elementi dei Form (come per esempio sui ComboBox).

Leggi il resto dell’articolo »

Quale linguaggio per applicazioni desktop?

Programmazione 6 Commenti »

Mi hanno chiesto di sviluppare (migliorandolo) un applicativo che potrebbe essere distribuito su un grande numero di piattaforme. La mia prima idea, causa deformazione professionale attuale, è stata quella di creare un applicativo web distribuibile, in ASP o PHP.

Scendendo nei dettagli, però, l’applicativo richiesto dovrà essere quasi completamente utilizzabile tramite tastiera, effettuando quindi un riconoscimento dei tasti premuti per continuare, annullare e effettuare scelte operative.
Questo fatto mi ha fatto abbandonare la scelta dell’applicativo web per dedicarmi ad un applicativo stand-alone, desktop, da distrbiuire su piattaforme Windows (questò è uno dei requisiti).

Quando ero giovane ( :-)scusatemi) programmavo parecchio in Visual Basic (allora alla verisone 6). Qualche tempo fa sono migrato alla versione 2008, versione che sfutta ora il framework .NET, senza mai avere l’opportunità di usarlo e approfondirlo nei dettagi.

Ora mi chiedo: sarà Visual Basic uno dei linguaggi di programmazione migliori per sviluppare applicativi Windows? Voi cosa usate?

Altre scelte a cui mi sono ritrovato di fronte sono (tutte di casa Microsoft):

Voi che dite?
Per favore, datemi una mano…

Upgrade a Page Analyzer

Programmazione Nessun Commento »

In questi giorni ho apportato alcuni piccoli upgrade al mio SEO Analyzer, aggiungendo e migliorando alcuni controlli.

Website Analyzer dovrebbe essere diventato leggermente più veloce durante l’esecuzione dello script di analisi ed esegue ora un check più preciso del file robots.txt e verifica la possibilità da parte dei crawler (o robots) di indicizzare la pagina passata come argomento (altro step da aggiungere sarà la lettura del meta robots, complementare al file robots.txt).

Come avevo annunciato a Maggio, dovrò migliorare ancora tante piccole cose, come la corretta verifica del title tag. E come al solito, se avete consigli e/o suggerimenti, fatemi sapere.