Archivio Articoli della Categoria 'Programmazione'

Website Page Analyzer: da oggi versione 0.93

Programmazione 1 Commento »

Ho appena terminato una tornata di aggiornamenti al mio basic SEO tool Website Page Analyzer. Da oggi diventa un pochino più tecnico ed è in grado di analizzare in modo più approfondito alcune aree delle vostre pagine web che fino ad oggi erano rimaste scoperte. Se avete consiglie e/o suggerimenti, fatemi sapere! ;-)

PS: colgo l’occasione per farmi gli auguri e ringraziare coloro che ci hanno già pensato!

Russia: Festa del Programmatore

Programmazione Nessun Commento »

Sono arrivato un po’ tardi, ma l’anno prossimo di certo non me la farò scappare: è la festa del programmatore, nata in Russia, ma che piano piano si sta espandendo in tutti i continenti.

Per maggiori info: http://programmazione.it/index.php?entity=eitem&idItem=42769

Symfony: configurazione di apache su EasyPHP

Programmazione Nessun Commento »

Oggi, un po’ per passione e un po’ per divertimento, ho deciso di configurare EasyPHP 3.0, un “famoso” software di tipo WAMP (Windows, Apache, MySQL, PHP) per poter programmare e divertirmi un po’ con l’ultima versione di Symfony, Symfony 1.2, un ottimo framework per la programmazione con PHP 5.

Ho deciso di installare Symfony utilizzando PEAR, semplificando tutta la procedura.

La mia configurazione computer

Il mio netbook (Samsung NC10 – che tra l’altro fino a ieri non funzionava!) è la macchina su cui mi diverto a sperimentare e giocare programmando, davanti alla televisione, le notti fino a tardi.

Ho deciso di usare la doppia partizione per salvare sul “disco” D: tutti i documenti e, con essi, anche le pagine web e gli script dei siti internet.

Come ho detto, le installazioni di EasyPHP e Symfony seguono due procedure semplicissime:

  • il primo, EasyPHP, va semplicemente scaricato e installato
  • il secondo, Symfony, si può installare comodamente grazie a PEAR, componente di PHP (prima però bisogna installare PEAR!)

Configurazione di Apache

La configurazione di Apache potrebbe essere uno scoglio per chi è solito programmare ma non ha mai utilizzato un server web, che sia Apache o IIS. E Apache, come tutti i software open source, potrebbe apparire un po’ complicato da configurare (ragazzi, siamo un po’ troppo abituati alle interfacce UI), ma ci permette di fare veramente quello che più vogliamo.

Per una configurazione “di base”, aprite dal menu contestuale di EasyPHP la Configurazione di Apache Server, andate sul fondo e incollare il seguente stralcio di codice.

NameVirtualHost *:80

#area base per i siti web
<VirtualHost *:80>
  ServerName web
  DocumentRoot "D:\web"
</VirtualHost>

#area per i siti PHP
<VirtualHost *:80>
  ServerName localhost
  DocumentRoot "D:\localhost"
</VirtualHost>

#concessione autorizzazioni alla cartella condivisa SF di Symfony
<Directory "C:\Program Files\xampp\php\pear\data\symfony\web\sf">
  Allow from All
</Directory>

#virtual directory per un progetto symfony
<VirtualHost *:80>
  ServerName symfony
  DocumentRoot "C:\web\symfony\web"
  DirectoryIndex index.php
  Alias /sf "C:\Programmi\EasyPHP 3.0\php\data\symfony\web\sf"

  <Directory "D:\web\symfony\web">
   AllowOverride All
   Order allow,deny
   Allow from All
  </Directory>
</VirtualHost>

Fatto questo, salvate e riavviate Apache Server (modificate i puntamenti ai folder secondo le vostre specifiche e/o comodità).

E ora non vi resta che configurare il file HOSTS di Windows (C:\WINDOWS\system32\drivers\etc\hosts), file che funziona da domain name server e che vi può servire a dichiarare “domain name” per i vostri progetti locali. Anche questo file è molto semplice da modificare: inserite l’indirizzo IP, tabulate e inserite il nome a dominio, come da esempio.

127.0.0.1    localhost
127.0.0.1    symfony
127.0.0.1    web

Queste ultime direttive inserite nel file HOSTS dichiarano 3 nuovi domini, chiamati localhost, symfony e web che puntano a cartelle differenti. Tutti i miei progetti puntatno alla cartella D:\Web, ma voi potete configurarli come più preferite.

E ora… divertitevi con Symfony!!!

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 Nessun 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? ;)