Riepilogo post nella categoria Internet e Web 2.0
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2021, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

E' stata una bella avventura. Dal lontano 2016, quando MetaDB era solo un'idea, ad oggi, che il risultato di tanto lavoro e tanta dedizione è diventato realtà.

Sono elettrizzato nell'annunciare che il nostro progetto MetaDB, rilasciato al pubblico con licenza d'uso dei dati CC BY-NC-SA 4.0, è finalmente online, funzionante e soprattutto pieno di informazioni utilissime per tutti gli esperti nel settore web, e in generale per tutti i Nerd come noi!

MetaDB è un progetto lanciato in produzione nel Gennaio 2021, interamente seguito da me in prima persona, con l'ausilio del team Polarity Bit con il quale collaboro, che pone l'analisi "statica" dei siti web sotto un punto di vista differente e innovativo.

Siamo infatti abituati a tool online di ogni tipo ( solo per citarne alcuni ... seochecker, builtwith, ahrefs, shodan ) che effettuano analisi on-page per domini singoli, e popolano statistiche o dati in riferimento al sito stesso ed eventualmente al sito target confrontandolo con altri siti web.

MetaDB è invece un sistema di analisi statistica e censimento dei siti web, che pone il focus sull'analisi aggregata di "tutti i siti" al posto che sulla analisi del singolo dominio.

La cosa interessante di MetaDB è l'approccio alla analisi di "tutti i siti". Infatti, come si crea un database di tutti i nomi a dominio, per poter effettuare l'analisi del (eventuale) sito web collegato? (non tutti i domini sono registrati per "rispondere" ad una richiesta HTTP, alcuni vengono usati ad esempio solo per la parte email)

MetaDB effettua la scansione partendo da un sottoinsieme di siti web iniziale, una specie di "seed", ed effettua quello che in gergo tecnico si chiama Snowball Sampling. Il seed iniziale viene posto in una coda FIFO, e il codice HTML di ogni sito viene sottoposto a scansione. La scansione del codice HTML riguarda anche tutti i tag <a href>, e quindi tutti i link che puntano a "domini esterni" rispetto al dominio in questione vengono inseriti in coda per l'analisi.

Questa tecnica permette, dopo un numero abbastanza alto di scansioni, di creare una mappa di relazioni piuttosto vasta tra i siti. Ovviamente, per logica, usando questa tecnica non è possibile raggiungere tutti i siti web (e quindi i domini registrati), ma è possibile solo costruire il grafo ad albero di tutti i domini che si referenziano tra loro. Più è vasto il seed iniziale, e più sarà grande il grafo finale.

MetaDB analizza parecchi aspetti dei siti web analizzati, offrendo la possibilità di filtrare i risultati per TLD (estensione del dominio) e lingua del sito. Gli aspetti analizzati includono:

  • Tecnologie utilizzate per la costruzione e il funzionamento del sito (come, ad esempio, PHP - jQuery - Bootstrap - React - Ecommerce)
  • Server di hosting e provider di connettività dell'hosting (Autonomous System Network)
  • Tipi di server web e relative versioni utilizzate (Apache, Nginx, etc)
  • Insight sull'utlizzo di Template e Plugin di Wordpress
  • Codici di errore HTTP più frequenti sui siti offline
  • Utilizzo HTTPS / Linearizzazione www.*
  • Siti web più referenziati (link in ingresso)
  • Text-to-html ratio e suddivisione tra siti che usano un T2HTML ratio sufficiente (>8%) e non (<8%)
  • Insight sull'uso dei tag H1 -> H4 con focus particolare sui siti più popolari, e quelli più referenziati

Una curiosità: sapevate che la maggior parte dei siti web iniziano con la lettera S, con il 9,38% sul totale dei nomi a dominio?


Altro dato, un pò meno eclatante: il 39,19% di tutti i siti web analizzati ha almeno un link verso Facebook, e il 22,87% verso Twitter.

Un dato che mi ha lasciato perplesso è quello relativo all'auto-redirect verso il protocollo sicuro https.

Vero, se un utente raggiunge un sito web è molto probabile lo faccia tramite un motore di ricerca. Ma se lo stesso utente dovesse scrivere a mano il dominio sulla barra degli indirizzi, è incredibile sapere che solo il 31,89% dei siti web effettua un redirect automatico verso https.

Ora, la curiosità passa a Voi lettori. Vi consiglio di andare subito su https://metadb.co e navigare il sito. Troverete molti spunti interessanti per creare contenuti di gradimento per il Vostro pubblico (mi riferisco soprattutto ai Blog di settore), e per condividere qualche informazione utile sui canali social.

Abbiamo dedicato parecchie ore di sviluppo per creare un tool di esportazione dei grafici in formato PNG direttamente sulla GUI del sito. Con un semplice click potrete scaricare i grafici, e ri-pubblicarli su tutti i canali di vostro gradimento.

Nel caso in cui abbiate bisogno di qualche dato specifico e molto settoriale, e possibile estrapolare dati custom dalla base di dati che compone MetaDB. Il posto giusto per effettuare richieste è tramite il modulo di contatto predisposto su MetaDB.

MetaDB è solo all'inizio del suo percorso. Attendiamo con molta curiosità il feedback che arriverà dalla rete, e faremo il nostro meglio per soddisfare le richieste.

Buona navigazione su MetaDB. Speriamo vivamente che possa essere un ottimo spunto per molti Internet Enthusiast, per gli sviluppatori, e per tutte le persone che rendono possibile il funzionamento del web.

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2016, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Purtroppo sta circolando in questi giorni su WhatsApp un tentativo di phishing che potrebbe essere tranquillamente scambiato per una richiesta veritiera da tutti quegli utenti che utilizzano la nota applicazione di messaging. Purtroppo, l'hacker che ha creato questo ingegnoso meccanismo ha imbastito un sistema nel quale moltissimi utenti potrebbero cascarci., perchè ad un primo colpo d'occhio sembrerebbe una richiesta legale di pagamento. Ad ogni modo, leggete questa guida per capire com'è fatto questo tentativo di phishing e come fare per evitarlo.

La frode comincia con un messaggio in arrivo sul vostro cellulare, all'interno dell'applicazione di WhatsApp, da un numero probabilmente a voi sconosciuto, che non è nella vostra rubrica.

Il messaggio recita così:

Salve,
Per rinnovare WhatsApp al costo di 0,89 EUR bastera cliccare questo link.
http:// ket - ids .com / Whatsapp / IT
o vostro Whatsapp verra disattivato.

Ecco una immagine reale di un tentativo di phishing che mi è stato segnalato:

Procedendo sul link all'interno del messaggio, l'utente viene reindirizzato su una pagina di pagamento, che può facilmente essere scambiata per reale e ufficiale, dove gli verranno chiesti i dati della carta di credito, compresa scadenza, CVV2, e anche il codice Mastercard SecureCode ( per chi non lo sapesse, il SecureCode è una password di secondo livello che serve per "vidimare" i pagamenti )

Ecco un esempio di pagina di pagamento. Ricordiamo che è una truffa, anche se sembra davvero reale.

Inseriti i dati per il pagamento, l'utente viene purtroppo reindirizzato sul sito ufficiale di whatsapp web https://web.whatsapp.com. Sul cellulare, l'utente verrà invece renidirizzato sull'applicazione di WhatsApp. L'intero procedimento, quindi, sembrerà davvero reale perchè si conclude con una apertura dell'applicazione ufficiale di WhatsApp.

Come fare per evitare questi tentativi di frode: bisogna essere sempre diffidenti, prima di cliccare o tappare da qualche parte bisogna leggere attentamente, e controllare due, tre, quattro volte l'indirizzo delle pagine di pagamento ( ovvero, quello che sta dopo il http:// o il https:// ): se è una richiesta reale, lo capirete da questi fattori:
1) L'indirizzo comincerà sempre con https://, che non è da confondere con http:// ( c'è una "s" in più, che vuol dire connessione http sicura )
2) L'indirizzo dovrà contenere una parola che si riferisce a chi vi sta chiedendo un pagamento ( nel caso di WhatsApp, probabilmente l'indirizzo deve contenere almeno una volta la parola "whatsapp" al suo interno ), oppure una parola che richiama un circuito di pagamento, come ad esempio Mastercard, Visa, Maestro, etc.
3) Non ci saranno errori grammaticali all'interno della pagina di pagamento: gli hacker, infatti, quando costruiscono le pagine "truffa" di pagamento, non conoscono tutte le lingue, e useranno quindi un traduttore automatico
4) Ci deve essere di sicuro un link o un bottone che serva ad annullare la transazione, e ci devono essere per forza dei link a pagine che richiamano termini legali, condizioni d'uso, etc

In definitiva, controllare sempre molto attentamente quello che si sta facendo: in caso di dubbio, mandate uno screenshot al vostro amico esperto di informatica e chiedetegli se potete procedere. Un minuto in più di pignoleria vi eviterà delle bruttissime sorprese sul conto bancario.

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2010, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Some time ago we talked about a real good italian Web Proxy, www.senzafiltri.it, that continued to be the best-on-the-web proxy ever, having the only real proxyfier engine capable of being youtube.com and facebook.com compatible.

Some days ago, surfing the web, I've noticed the Italian Technical Staff of www.senzafiltri.it have created a new site, localized in english, called www.zerofilters.info

The proxyfier engine is the same as the one of senzafiltri.it, and this enables users to have a 100% success rate of proxifying their favourite websites.

What is a web proxy? Well, this is a very common service on the web. Technically speaking, a web proxy is merely an application that put herself on the middle, between the request of the user and the response of the "wanted" server, being able to intercept the data that the server "shall" send to the client, but making the magic to let it be shown from another domain, resulting in full access to the blacklisted domain. Very often, in fact, apart from keyword-based firewall filters, system administrators only specify some domains to be blacklisted. This is when a web proxy occurs, being able to effectively bypass the firewall rules.

So, if you are at school - college - work, and you ask yourself "how to unblock facebook", "how to unblock youtube", "how to unblock blocked websites"... well, the answer is www.zerofilters.info

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Quello che vedete sulla destra di questo sito è un calendario particolare, nel senso che è progettato per il funzionamento asincrono tramite ajax. In questa maniera si può facilmente integrare un modulo calendario in qualsiasi sito con pochissime modifiche e separando nettamente la parte "intelligente" del programma, cioè la creazione dei giorni a partire da un dato mese/anno, dalla parte "meno intelligente", quella di output verso il browser.

Ecco quindi spiegato il funzionamento, separato in:

  • Script PHP Server-Side che crea l'xml con i dati del mese/anno
  • Script client-side in Javascript per iniettare il markup del calendario verso il browser
  • Un esempio di markup HTML per rendere funzionante il tutto

Codice PHP server-side (Creazione dell'xml della coppia mese/anno richiesta)

<?php
	$mese = $_GET['month'];
	$anno = $_GET['year'];
	
	$primoGiornoMese = date( "w", mktime (0, 0, 0, $mese, 1, $anno) );
	
	if( $primoGiornoMese != 1 ) {
		if( $primoGiornoMese == 0 ) $counter = 6;
		else $counter = $primoGiornoMese - 1;
		
		if( $mese == 1 ) { $vecchioMese = 12; $vecchioAnno = $anno - 1; } else { $vecchioMese = $mese -1; $vecchioAnno = $anno; }
		
		$giorniMesePrecedente = date( "t", mktime(0, 0, 0, $vecchioMese, 1, $vecchioAnno) );
		for($i = $counter - 1; $i >= 0; $i--) {
			$curr = mktime(0, 0, 0, $vecchioMese, $giorniMesePrecedente - $i, $vecchioAnno);
			$tArr = Array('mod' => 'oldmonth', 'day' => $giorniMesePrecedente - $i, 'changeRow' => false);
			$calendario[] = $tArr;
		}
	}
	
	$curr = mktime(0, 0, 0, $mese, 1, $anno);
	$continua = true;
	$k = 0;
	while( $continua ) {
		$flagStile = $cambiaRiga = false;
		
		$giornoCorrente = date( "w", $curr );
		$numeroCorrente = date( "d", $curr );
		if( $curr == mktime(0, 0, 0, date("m"), date("d"), date("Y")) ) $flagStile = 'currentDay';
		else {
			if( $giornoCorrente != 6 && $giornoCorrente != 0 ) $flagStile = 'normalDay';
			else $flagStile = 'weekendDay';
		}
		
		if( $giornoCorrente == 0 ) $cambiaRiga = true;
		
		$tArr = Array('mod' => $flagStile, 'day' => $numeroCorrente, 'changeRow' => $cambiaRiga);
		$calendario[] = $tArr;
		
		$curr = mktime(0, 0, 0, $mese, date("d", $curr) + 1, $anno);
		
		if( date("m", $curr) > $mese || ( date("m", $curr) == 1 && $mese == 12 ) || $k >= 50) $continua = false;
		$k++;
	}
	$giorniCodestoMese = date("t", mktime(0, 0, 0, $mese, 1, $anno));
	if( ( $giornoFinaleMese = date("w", mktime(0, 0, 0, $mese, $giorniCodestoMese, $anno)) ) != 0 ) {
		for($i = 1; $i <= (7 - $giornoFinaleMese); $i++) {
			$tArr = Array('mod' => 'oldmonth', 'day' => $i);
			$calendario[] = $tArr;
		}
	}
	
	header('Content-Type:text/xml');
	echo '<?xml version="1.0" encoding="UTF-8" ?>' . chr(10);
	echo '<root>' . chr(10);
	echo '<monthInfo><month>' . substr( ucfirst(itdate("F", mktime(0, 0, 0, $mese, 1, $anno))), 0, 3 ) . '</month><year>' . $anno . '</year></monthInfo>' . chr(10);
	
	foreach( $calendario as $giorno => $valoriGiorno ) {
		$mod = $valoriGiorno['mod'];
		$day = number_format($valoriGiorno['day'], 0, "", "");
		$alt = $valoriGiorno['alt'];
		$title = $valoriGiorno['title'];
		$link = $valoriGiorno['link'];
		$changeRow = ( $valoriGiorno['changeRow'] == false ) ? 0 : 1;
		
		echo '<giorno mod="' . $valoriGiorno['mod'] . '" day="' . number_format($valoriGiorno['day'], 0, "", "") . '" changeRow="' . $changeRow . '"></giorno>' . chr(10);
	}
	echo '</root>' . chr(10);
	
	function itdate ($date_format="l j F Y - H:i:s", $time=0) {//, $date_format="l j F Y - H:i:s", $lang=it 

		$hourdiff = "0";
		$timeadjust = ($hourdiff * 60 * 60);

		if (! $time) $time = time()+$timeadjust;
		if (! $lang) $lang = "It";
		if (! $date_format) 
		{ 
			$date_format = "l j F Y - H:i:s"; 
		}

		$week_days_long = array('Sunday' => 'Domenica', 'Monday' => 'Lunedì ', 'Tuesday' => 'Martedì',
			'Wednesday' => 'Mercoledì', 'Thursday' => 'Giovedì', 'Friday' => 'Venerdì',
			'Saturday' => 'Sabato');
		$months_long = array('January' => 'Gennaio', 'February' => 'Febbraio',
			'March' => 'Marzo', 'April' => 'Aprile','May' => 'Maggio', 'June' => 'Giugno',
			'July' => 'Luglio', 'August' => 'Agosto', 'September' => 'Settembre',
			'October' => 'Ottobre', 'November' => 'Novembre', 'December' => 'Dicembre');
		$week_days_short = array('Sun' => 'Dom', 'Mon' => 'Lun', 'Tue' => 'Mar', 'Wed'=>'Mer',
			'Thu' => 'Gio', 'Fri' => 'Ven', 'Sat' => 'Sab');
		$months_short = array('Jan' => 'Gen', 'Feb' => 'Feb', 'Mar' => 'Mar', 'Apr' => 'Apr',
			'May' => 'Mag', 'Jun' => 'Giu', 'Jul' => 'Lug', 'Aug' => 'Ago',
			'Sep' => 'Set', 'Oct' => 'Ott', 'Nov' => 'Nov', 'Dec' => 'Dic');

		$clock = date($date_format, $time);
		
		if(preg_match("/F/", $date_format) && ($lang != "En")) {
			$model = date("F", $time);
			$replace = $months_long[date("F", $time)];
			$clock = preg_replace("/$model/", $replace, $clock);
		}
		if(preg_match("/l/", $date_format) && ($lang != "En")) {
			$model = date("l", $time);
			$replace = $week_days_long[date("l", $time)];
			$clock = preg_replace("/$model/", $replace, $clock);
		}
		if(preg_match("/M/", $date_format) && ($lang != "En")) {
			$model = date("M", $time);
			$replace = $months_short[date("M", $time)];
			$clock = preg_replace("/$model/", $replace, $clock);
		}
		if(preg_match("/D/", $date_format) && ($lang != "En")) {
			$model = date("D", $time);
			$replace = $week_days_short[date("D", $time)];
			$clock = preg_replace("/$model/", $replace, $clock);
		}
		
		return strtolower($clock);
	}
?>

Codice Javascript per l'iniettamento del markup del calendario verso il browser

/* Calendar Handler JS client-side script v1.1 */

/* 

CONFIGURAZIONE:

Cambiare i valori delle variabili di configurazione, sapendo che:
_id_contenitore_calendario = ID del contenitore che andrà a contenere il calendario. E' un div che conterrà solo una tabella. SPECIFICARE IL # prima dell'id.
_id_contenitore_header_mese_anno = ID del contenitore che conterrà la coppia mese-anno sopra la tabella del mese.
_classe_cella_mesenoncorrente = classe css da applicare alle celle che NON sono del mese corrente, ma che mandiamo in output per completezza
_classe_cella_mesecorrente = classe css da applicare alle celle che sono del mese corrente
_classe_cella_weekend = classe css da applicare alle celle che sono sabato o domenica del mese corrente
_classe_cella_giornocorrente = classe css da applicare nel caso in cui una cella-giorno del calendario corrisponda al giorno corrente

ESEMPIO MARKUP HTML PER RENDERE FUNZIONANTE IL MODULO CALENDARIO: 
<div id="contenitore_tabella_calendario">
	<p id="header_tabella_calendario"></p>
	<table>
		<tbody></tbody>
	</table>
</div>

*/
	// Inizializzazione variabili
	_id_contenitore_calendario = '#contenitore_tabella_calendario';
	_id_contenitore_header_mese_anno = '#header_tabella_calendario';
	_classe_cella_mesenoncorrente = 'oldmonth';
	_classe_cella_mesecorrente = 'normalmonth';
	_classe_cella_weekend = 'weekendday';
	_classe_cella_giornocorrente = 'currentday';
	
	//Gestione Data Odierna
	var today = new Date();
	var mese = today.getMonth() + 1;
	var anno =  today.getFullYear();
	
	// Trigger delle funzioni da far partire all'avvio
	$(document).ready(function() {
		$.ajax({
			type: "GET",
			url: "xml_calendar_creator.php",
			data: "month=" + mese + "&year=" + anno,
			dataType: 'xml', 
			success: parseXmlCalendario, 
			error: function (a, b, e) {
				throw(e);
			}
		});
	});
	
	parseXmlCalendario = function(xml) {
		// Variabile della classe delle celle per la tabella del calendario
		var cellClass = "";
		
		// Iniettamento del titolo del calendario (Mese e Anno)
		$(_id_contenitore_header_mese_anno).html( $(xml).find('monthInfo month').text() + " " + $(xml).find('monthInfo year').text());
		
		// Iniettamento del codice html completo per il calendario
		
		var htmlCalendario = '<tr>';
		$(xml).find('giorno').each(function() {
			var mod = $(this).attr('mod');
			var giorno = $(this).attr('day');
			var cambiaRiga = $(this).attr('changeRow');
			
			switch ( mod ) {
				case 'oldmonth':
					cellClass = _classe_cella_mesenoncorrente;
					break;
				case 'normalDay':
					cellClass = _classe_cella_mesecorrente;
					break;
				case 'currentDay':
					cellClass = _classe_cella_giornocorrente;
					break;
				case 'weekendDay':
					cellClass = _classe_cella_weekend;
					break;
				default: break;
			}
			
			htmlCalendario +=  '<td class="' + cellClass + '" align="center">' + giorno + '</td>';
			if ( cambiaRiga == 1 ) htmlCalendario += '</tr><tr>';
		});
		htmlCalendario += '</tr>';
		
		$(_id_contenitore_calendario + ' tbody').html(htmlCalendario);
	}

Esempio di markup HTML per rendere il tutto funzionante

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Prova</title>
	<script type="text/javascript" src="jquery.js"></script>
	<script type="text/javascript" src="calendar_js.js"></script>
</head>
<body>
	<div id="contenitore_tabella_calendario">
		<p id="header_tabella_calendario"></p>
		<table>
			<tbody></tbody>
		</table>
	</div>
</body>
</html>
Mischiare il tutto

Il codice PHP può essere salvato con un nome qualsiasi, solo bisogna ricordarsi di andare a modificare il file javascript e, sotto la parte di creazione della richiesta ajax, andare a modificare il nome della variabile che contiene le impostazioni della richiesta.

Ricordo che questo sistema implica forzatamente l'utilizzo della libreria jQuery per poter funzionare. E' chiaramente visibile nel terzo snippet di codice HTML, dove è specificato il richiamo del file jquery.js

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

A quanti di voi è capitato di arrivare un giorno a lavoro, digitare www.youtube.com per vedervi un paio di filmati umoristici per iniziare bene la giornata, ma vedere il browser bloccato - piantato - sulla bruttissima pagina di errore di connessione?

"Ma come?" - vi sarete chiesti - "il sito aziendale lo vedo benissimo. Riesco a collegarmi anche con tutti i servizi Web del nostro framework ... sarà un problema di Youtube..." ...

E invece no, il vostro amministratore di sistema ha appena finito di Metter Fine alle visualizzazioni di Youtube, Facebook, Myspace, e tutta un'altra serie di siti "potenzialmente dannosi" per la vostra produttività.
Ovvero, in poche parole, siete stati vittime delle famigerate restrizioni sulla vostra rete.

"Come faccio ora?" - vi starete chiedendo adesso - "E' tutto bloccato, non posso fare più niente?"
No! A tutto c'è una soluzione!

Se con il vostro browser provate a visitare questo sito www.senzafiltri.it - proxy web avrete la chiave della vostra ritrovata libertà in ambito lavorativo. La vostra pausa-navigazione non avrà più nessun ostacolo!
Quello che fa www.senzafiltri.it è una sorta di passaggio intermedio fra voi e il sito che volete visualizzare. Se provate infatti a digitare nella barra degli indirizzi di senzafiltri.it l'url che volete visualizzare, ad esempio www.youtube.com, vedrete la pagina di youtube come di consueto, come siete abituati, ma l'url non sarà quella di youtube, bensì quella di senzafiltri.it

In gerco prettamente tecnico, www.senzafiltri.it è un proxy web che vi permette di bypassare ed evitare le restrizioni che gli amministratori di rete hanno imposto sulla vostra connessione, proxy web che vi consentirà quindi di accedere a tutti i siti che volete, fermo restando che un giorno quando l'amministratore di rete si renderà conto del fatto che ci sono troppi accessi al sito www.senzafiltri.it, bloccherà anche quello! Quindi sarà vostro compito cercare di mantenere l'uso di questo sito ragionevolmente basso.

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.
Questo non è nè il primo nè l'ultimo sito di ottimizzazione che la rete offre.
Ma quello che mi ha subito incuriosito di builtwith.com è il peso dei servizi offerti...
Con una rapida immissione di una url nella homepage del sito, è possibile dare un'occhiata veloce ai framework utilizzati per la creazione di quel sito, alle partnership con i sistemi di advertising, ai metodi di tracciamento degli utenti, e altre informazioni come la codifica utilizzata o l'utilzzo o meno dei commenti condizionali per i fogli di stile CSS... insomma, una serie di dati molto utile che permette di risparmare parecchio tempo in analisi di sorgenti e richieste HTTP.
Registrandosi, inoltre, è possibile ottenere preziose informazioni sul posizionamento e l'ottimizzazione del vostro sito.
Ovviamente non aspettatevi programmi miracolosi, o salti in prima pagina nella serp di google, sappiamo bene che il lavoro di SEO è un agglomerato quasi infinito di trucchi, know-how, competenze, e furbizia.
Date inoltre un'occhiata al blog istituzionale di BuiltWith, raggiungibile da qui: blog.builtwith.com
Buon lavoro!
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.
Google ha rilasciato una nuova versione stabile del proprio browser Chrome. Stando ai test effettuati, nell'esecuzione del codice JavaScript Chrome risulta il 30% più veloce rispetto alla precedente versione.
In questo aggiornamento sono contenute anche numerose novità, già disponibili agli utilizzatori delle versioni beta di Chrome, come l'autocompletamento dei moduli, la possibilità di rimuovere una o più miniature dalla pagina iniziale e la visualizzazione in modalità full screen. Ecco un video che mostra le nuove funzionalità del browser di Google:
Google ha inoltre dichiarato che in questa nuova versione sono stati corretti più di 300 bug. Per gli utenti attuali di Chrome, l'aggiornamento è automatico. Tutti coloro che invece desiderano provare questo browser, lo possono scaricare dal sito google.com/chrome
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.
Utilizzare Photoshop mette sempre un pò di timore reverenziale, se non si è particolarmente sciolti e confident nell'utilizzo del notissimo programma di grafica e fotoritocco di casa Adobe.
Per fortuna ormai grazie all'avvento del meraviglioso e fantastico mondo del Web 2.0, Internet ci viene in aiuto proponendoci giorno dopo giorno dei fantastici tool che permettono di fare ormai più o meno tutto quanto!
Oggi vi suggerisco un ottimo tool online per la creazione di bottoni direttamente online, operazione completabile in pochissimi minuti con altrettanti pochissimi click.
Il sito di riferimento è questo: buttonator.com
Buon divertimento e buon lavoro! ;-)
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2009, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.
Avete appena bevuto l'ultima tazza di caffè e la vostra applicazione Ajax funziona come deve. Avete appena finito di mettere su gli ultimi controlli di sicurezza di base per l'SQL Injection. Tutto bello ma... la grafica?
Quella è un pò il tallone d'achille per tutti gli sviluppatori web che non sono talentuosi artisti con Photoshop...
Quindi a questo punto state cercando di creare quel bellissimo effetto di div a scomparsa con la simpaticissima animazione rotante di attesa... e vi si presentano 2 strade:
  • Scervellarsi per ricordare "quel sito da cui copiarla"
  • Scaricare un manuale, e farla da soli
Ovviamente la seconda strada, una volta completato il lavoro, è sicuramente la più appagante... ma scartata la prima, e similmente la seconda per ovvi motivi di tempo... che fare?
Fortunatamente anche in questo caso ci viene in aiuto lo sconfinato mondo di Internet, con un bellissimo sito in puro stile 2.0 che permette la creazione di gif animate di attesa con 2 soli click e 2 codici esadecimali per la scelta dei colori.
Mi riferisco a Ajaxload.info, che vi toglierà non pochi problemi e grattacapi quando si tratterà di finire una grafica allettante di attesa dinamica in pochi minuti!
Buon lavoro!