itaeng

Blog

Pubblicato in:null

Le tempistiche...

05APR2011

The Brads - Mute button

Pubblicato in:js trucchi

Un semplicissimo antispam con jQuery

22MAR2011

Recentemente mi è capitato di dover implementare un semplice antispam su un mio sito, che riceveva quantità enormi di post spazzatura. Non volevo appesantire il tutto e non volevo usare script presi chissàddove, così, ricordando che la maggior parte dei bot non sa interpretare javascript, ho deciso di usare questo linguaggio come difesa; tantopiù che gli utenti senza javascript abilitato sono meno dell'1%, percentuale del tutto trascurabile (anzi, magari quell'1% è composto proprio dal bot :))

Per farla breve, ecco la ricetta del mio script:

Prima di tutto modifico l'action del mio form, da (per esempio) post/add a post/antispam_add

	<form action="/post/antispam_add" id="idDelMioForm" method="post">

Aggiungo un pizzico di jquery:

	$(document).ready(function(){
		$('.submit input').click(function() {
			action = $('#idDelMioForm').attr('action');
			newaction = action.replace('antispam_', '')
			$('#idDelMioForm').attr('action', newaction);
			return true;
		});
	})

Scritto... e filtrato!

Semplice, no? :) In questo modo non c'è bisogno di utilizzare orribili captcha, che sono l'antitesi dell'usabilità, l'utente non si accorge di nulla ed otteniamo un buon risultato... sperando che i bot continuino a non interpretare codice javascript :)

Pubblicato in:

Yahoo pubblica una guida sulle "best practices" per la scrittura sul web

18GEN2011

Scopro or ora che Yahoo ha creato una guida sulle "best practices" per la scrittura sul web. Merita più di un'occhiata, ho scovato alcuni consigli molto interessanti ed utili.

http://styleguide.yahoo.com/

Per esempio, lo sapevate che googlare è un verbo il cui uso è sconsigliato? Strano che lo dica Yahoo... laugh

Pubblicato in:trucchi

Importare il dump di un database enorme in mysql

26NOV2010

Mi è appena capitato di dover caricare il dump di un database di grosse dimensioni (oltre il centinaio di MB) su MySQL. Il tool di importazione di PhpMyAdmin supporta fino a 8MB e tool come bigdump non mi sono serviti a nulla...

Ma per fortuna che c'è la shell e che sono su linux!

Questo è il comando che mi ha salvato:

mysql -u utenteDiMySQL -p nomedeldatabase < dump.sql

 

Pubblicato in:

CSS3 Finalize: un plugin per jquery che...

22NOV2010

... che si occupa di leggere tutti i tag css3 presenti nei fogli di stile e nel codice css3 inline (orrore e sdegno), e gli aggiunge il relativo prefisso -moz, -webkit o quello che gli serve. Non sono riuscito a capire se si preoccupa anche di verificare se  è necessario inserire il prefisso (in base alla versione del browser), ma mi pare di no. Non l'ho ancora testato, anche perchè... stavo facendo un plugin simile per conto mio, diamine! smiley

Battuto sul tempo!

Pubblicato in:trucchi cakephp

Integrazione di YoxView con CakePHP

09NOV2010

Quando dico niente di più semplice, credimi, intendo davvero niente di più semplice.

Vuoi implementare una lightbox basata su jquery, che sia veloce, funzionale, semplicissima da installare e che permetta di avere uno slideshow? Beh YoxView è tutto questo e molto altro.

L'installazione è banale: basta scaricare il pacchetto e scompattarlo in ./app/webroot/js, nella directory yoxview.

Poi devi creare un element chiamato yoxview.ctp e mettici dentro questa roba:

<?php
echo $this->Html->css('../js/yoxview/yoxview');
echo $this->Html->script('yoxview/jquery.yoxview-2.15.min');
echo $this->Html->script('yoxview/yoxview-init');
$initJs = "
  $(document).ready(function(){
       $('#content').yoxview({   //sostituisci #content con l'id di ciò che contiene le immagini
      lang: 'it'
    });
  }); 
  ";
echo $this->Html->scriptBlock($initJs);
?>

Beh... sei libero di non crederci, ma l'integrazione è già fatta. Semplice vero?

Se vuoi vedere come funziona, dai un'occhiata in qualche pagina nella galleria o in slideshow...

Pubblicato in:ubuntu

Velocizzare flash su linux

27OTT2010

Come risaputo, flash su linux è decisamente più lento rispetto alla versione per windows... pare però che, con un piccolissimo file di configurazione, la situazione migliori parecchio.

Nel mio caso in effetti sono passato ad avere difficoltà a visualizzare un filmato a 720 di youtube in fullscree a visualizzarne senza problemi uno di 1080...

Ecco le istruzioni:

sudo mkdir /etc/adobe
echo "OverrideGPUValidation=true" > /tmp/mms.cfg
sudo mv /tmp/mms.cfg /etc/adobe/
Pubblicato in:cakephp

Come integrare Elrte con CakePHP?

26OTT2010

Premessa:

Gli editor WYSIWYG sono una figata, e sono anche un ottimo strumento da dare in mano ad un cliente affinchè possa creare una pagina sapendo, almeno per sommi capi, cosa sta facendo.

Il problema sorge quando si inizia a testarli, questi editor, e personalmente mi sono imbattuto in:

TinyMCE: un editor semplice da usare, abbastanza funzionale, ma in generale lo trovo... scomodo. La licenza professionale ha un costo ma non so di quanto sia.

Ckeditor: più carino esteticamente (a mio gusto). Funzionale al punto giusto, ha un solo grande difetto per me: la licenza costa decisamente troppo per un progetto come il mio, dovrei ricaricare troppo sui clienti e questo non mi va.

Recentemente mi sono imbattuto in elRTE, un progetto open source basato su jQuery (il che da solo me lo fa preferire ad altri editor). È anche fornito di un ottimo file manager, molto potente e molto personalizzabile.

Ok, proviamolo

Siccome sono tremendamente curioso e mi piace provare tutto ciò che ha la parvenza di essere usabile, ho deciso subito di provarlo.

L'installazione su CakePHP non è difficile, ma non essendoci ancora documentazione in giro su come ottenerne l'integrazione ho avuto alcune difficoltà. Questi sono i passaggi che devi fare:

  1. Scarica elRTE e elFinder e scompatta entrambi in .app/webroot/js/elrte/
  2. Scarica il file .zip che ho allegato in fondo a questa pagina, e poi salva il file elrte.ctp in .app/views/elements/ e il file connector.php in .app/webroot/js/elrte/elfinder-1.1/connectors/php/
  3. Richiama l'element nel layout o dove preferisci, di default è configurato per trasformare tutte le textbox.
  4. Modifica secondo le tue necessità il file del connector (io ho impostato il tutto in sola lettura, visto che gli upload li gestisco altrove)
  5. Et voilà! Les jeux sont fait.

Semplice vero? Io ci ho messo tutta la giornata per riuscire a far funzionare il tutto... per ora però ritengo di poter essere più che soddisfatto! smile

Pubblicato in:

Suggerimenti su come scegliere una password sicura diversa per ogni sito

21OTT2010

Mozilla ha realizzato questo simpatico video che spiega come scegliere una password sicura e soprattutto diversa per ogni sito... molto utile!

 

Pubblicato in:null

Le mie impressioni sul Sony Ericsson Xperia X10 Mini Pro

06SET2010

Da tempo desideravo cambiare il mio bel Samsung SGH Z240, con cui mi sono trovato tutto sommato bene per alcuni anni, ma avevo delle necessità ben precise che mi impedivano di trovarne uno che potesse fare al caso mio:

  • prezzo non indecente
  • gps
  • wifi
  • tastiera qwerty
  • dimensioni contenute
  • sistema operativo passabile (odio quello dei nokia, troppo incasinato) - leggi: facile da usare
  • fotocamera almeno passabile

... di solito i cellulari con le caratteristiche due e tre non rispettavano la prima, o viceversa. Il Sony Ericsson Xperia X10 Mini Pro, a parte il nome lunghissimo, le rispettava tutte e sembrava pure carino esteticamente, così non appena è uscito nel primo negozio della mia zona l'ho comprato. 269 Euro. Ok il primo punto non è stato rispettato perfettamente, ma erano mesi che cercavo qualcosa di almeno un po' abbordabile e questo mi è sembrato il primo.

Devo fare alcune precisazioni: sono un utente pigro. Lavoro con il computer già troppo tempo ed avere un cellulare che richiede troppo impegno o studio non fa per me. Non sempre posso mettere il cellulare sotto carica, faccio parecchi sport e non voglio qualcosa di troppo ingombrante o troppo fragile.

Insomma:

Ecco il Sony Ericsson Xperia X10 Mini Pro (da ora in poi solo "lui") ha nelle dimensioni ridotte il suo punto di forza: posso tenerlo in tasca o nel borsello della mountain bike senza problemi, vivaddio.

Il sistema operativo è un android 1.6 (ancora per qualche giorno, poi diventerà 2.1 appena SE rilascerà l'aggiornamento) personalizzato, con cui devo dire che mi trovo molto bene. Il market è ottimamente fornito ed ho già scaricato un sacco di applicazioni utili e/o comode e/o fighe di cui ora non potrei più fare a meno (stupisco tutti con la livella).

La tastiera è piccola ma tutto sommato comoda e mi permette di scrivere sms in tempi ragionevoli.

Il gps prende il segnale in fretta.

Il wifi è piuttosto funzionale, si aggancia bene ed ha una buona ricezione, a quanto ho potuto vedere.

La batteria, di cui tanti si lamentano, a me dura comodamente tre giorni... devo ammettere che non ne faccio un uso particolarmente intenso: qualche sms, qualche telefonata, qualche connessione wifi ogni tanto. Ci sono delle applicazioni fighissime sul market che ne permettono una gestione ottimale, fra cui una che mette il cellulare in modalità aereo (senza connessioni) automaticamente quando non c'è segnale, per poi ripristinarla quando torna. Comodo! Poi ho disabilitato il traffico 3g, visto che non lo uso, in favore di un più parsimonioso 2g, attivo wifi e gps solo quando servono... insomma me lo sono ritagliato su misura, android insieme al suo market sono una vera figata.

Conclusioni

Mi piace un casino.

Ma

Il Sagem MyX5-2 è stato il cellulare più figo che abbia mai avuto, anche se appartiene ad un'altra epoca.

Pubblicato in:

Ma quei link che si usano per la paginazione dei risultati, tipo su google... come li posso ricreare?

18LUG2010

Leggendo qua e la mi sono imbattuto in una richiesta di qualcuno che aveva necessità di creare questo genere di link, ma cercando su internet non riusciva a trovare nulla di interessante...

Visto che tempo fa ho dovuto creare qualcosa di simile per DelightCMS (che poi è anche la piattaforma che sta sotto la pagina che state leggendo), lo riporto qua sperando possa essere utile a qualcuno:

<?php
// $numChildren è il numero di record totali, quelli che vogliamo suddividere in più pagine 
// $baseLink è l'indirizzo assoluto della pagina
$blogPostPerPage = 25;
$pageCount = ceil($numChildren / $blogPostPerPage);
$jump = false;

echo "<div id='paginator'>";

	// inseriamo prima di tutto il bottone per tornare indietro di una pagina, se siamo dalla seconda in poi
	if ($pageNum > 1) {
		echo $html->link('<< ', $baseLink . ($pageNum-1));
	}

	// qua inizia il lavoro sporco
	if ($pageCount > 1) {
		for ($i = 1; $i <= $pageCount; $i++) {
		// visualizzo i 7 link delle pagine intorno al numero di pagina che sto visualizzando, più il primo e l'ultimo (ok è una spiegazione di merda ma se provi capisci cosa intendo)
			if (($i <= $pageNum + 7) and ($i >= $pageNum - 7) or ($i == 1) or ($i == $pageCount)) {
				if ($pageNum == $i) {
					echo $i;
				} else {
					echo $html->link($i, $baseLink . $i);
				}
				$jump = false;
			// non sono nelle condizioni che dicevo prima, quindi metto i puntini e non visualizzo la pagina finchè non si verifica una delle condizioni di cui sopra
			} else {
				if ($jump != true) {
					echo "...";
					$jump = true;
				}
			}
			echo " ";
		}

		// se non sono all'ultima pagina, visualizzo il link per tornare indietro di una
		if ($pageNum < $pageCount) {
			echo $html->link('>>', $baseLink . ($pageNum+1));
		}
	}

echo "</div>";
?>
Pubblicato in:trucchi

Sottolineare parte di un testo con jQuery, senza plugins

23GIU2010

Poco prima di scrivere questo post avevo una necessità: sottolineare alcune parole all'interno di un testo in base a ciò che avevo cercato tramite l'apposita funzione di ricerca.

Ho trovato diversi plugin per farlo, alcuni più pesanti, altri più leggeri... ma a me bastava una cosa semplice, magari senza dover caricare altri plugin!

Beh, cercando qua e la sono riuscito ad ottenere questo:

$.extend($.expr[":"], {
	"containsNC": function(elem, i, match, array) {
		return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
	}
});

questo codice estende la funzione :contains di jQuery rendendola case insensitive (la funzione diventerà :containsNC)

$("p:containsNC('"+search+"')").addClass("highlight"); 

e quest'altro ricerca la parola e applica la classe "highlight" al paragrafo che contiene la parola. Naturalmente questo è ciò che serviva a me, ma dovrebbe essere semplice sottolineare solo la parola.

Pubblicato in:segnalazioni

Html5: chi supporta cosa, con tanto di esempi

17MAG2010

Mi sono imbattuto per caso in questo interessante sito...

HTML5 Demos and Examples

Parecchio interessante e comodo per chi sta pensando, come me, di iniziare a lavorare seriamente in HTML5...

Pubblicato in:trucchi

Far funzionare la proprietà css "display: inline-block" su internet explorer

09APR2010

Mi piacciono i misteri, soprattutto se servono a risolvere problemi complicati (o frustranti) in modo semplice  e veloce.

In questi giorni stavo litigando con un layout scritto per un cliente, con delle icone posizionate una a fianco all'altra tramite una favolosa proprietà css: display: inline-block;

Ho testato tutto sugli ultimi browser e funziona perfettamente, mi permette di evitare gli amati/odiati float e il mio umore ne giova particolarmente.

I problemi sono inaspettatamente ( -_- ) giunti quando ho testato il tutto con internet explorer 6 e 7: semplicemente, non conoscono quella proprietà e la ignorano. Gli elementi se ne stavano tutti tristi uno sotto l'altro, e il mio umore era sotto di loro a reggerne il peso.

Insomma per farla breve, vagando su internet ho scoperto che con un piccolissimo ritocco ai miei css potevo far funzionare tutto, con un semplice (ed usuale, purtroppo) commento condizionale posizionato al fondo di tutti gli altri css:

<!--[if lt IE 8]>
<style type='text/css'>
* html #menu li { display:inline; }  /* hack per IE 6 */
* + html #menu li { display:inline; }  /* hack per IE 7 */
</style>
<![endif]-->

Capito? Neanche io! Però funziona e tanto mi basta, in attesa che queste carrette del web facciano finalmente la fine che meritano.

Naturalmente, #menu li è quello che nel mio codice sfrutta la proprietà display: inline-block.

Inoltre, per chi ne avesse la necessità segnalo che è possibile far funzionare questa proprietà anche su firefox 2, tramite un semplice (e hackoso) display: -moz-inline-box;

Il mio umore è nuovamente alto.

Pubblicato in:null

Internet/ Firefox a rischio attacchi hacker, in Germania allarme

23MAR2010

Nota di ToX: che un browser sia vulnerabile genericamente "agli attacchi informatici" potrebbe essere quasi naturale, per il principio che nessun software è perfetto, ma non riesco a trovare nessuna informazione aggiuntiva... seguiranno dettagli

Roma, 23 mar. (Apcom) - Vulnerabile agli attacchi informatici il browser Firefox, uno dei più popolari programmi utilizzati per navigare su internet, tanto da spingere le autorità della Germania a diffondere comunicati ufficiali per mettere in guardia gli utenti. Era stata la stessa casa produttrice, Mozilla, a riconoscere la scorsa settimana l'esistenza di falle, riporta la Bbc. A rischio è l'ultima versione di Firefox, la 3.6, proprio quella lanciata dal assieme a calde raccomandazioni di effettuare l'aggiornamento per questioni di sicurezza. Il gruppo corre ai ripari e entro fine mese mettere a diposizione un aggiornamento pienamente testato che chiuderà queste falle, che possono essere sfruttate dagli hacker per introdurre programmi non desiderati nei computer di utenti ignari, prosegue l'emittente Gb. Sul web è gia disponibile un aggiornamento preliminare, Firefox 3.6.2, che tuttavia non è stato pienamente sperimentato. Ma la questione della vulnerabilità dei browser internet non si limita all'ultima versione di Firefox. La versione precedente aveva altre falle, e cambiare browser del tutto può nascondere altre insidie, avverte Graham Cluley, tecnico della Sophos: precipitarsi a utilizzare un altro browser meno conosciuto, che può contenere a sua volta rischi, potrebbe causare più problemi che benefici.

Fonte: APCOM

Pubblicato in:

Ah, la Thailandia...

20MAR2010

Ho pubblicato già da qualche giorno le foto del mio ultimo viaggio, in Thailandia... ho potuto restarci solo due settimane, viaggiando zaino in spalla e senza alcun tipo di organizzazione o di prenotazione, solo io e morosa...

Un viaggio bellissimo, un caldo pazzesco (soprattutto dal momento che alla partenza ed al ritorno c'erano 40 gradi in meno), abbiamo visto un sacco di posti magnifici, abbiamo cavalcato gli elefanti ed accarezzato le tigri, fatto il bagno nei caldi mari tropicali e "gustato" l'orrendo odore di smog e durian di Bangkok...

Ho messo le foto qua, ma è meglio se non le guardo troppo... la voglia di tornarci è troppo forte! smiley

Pubblicato in:segnalazioni

Anche Digg dice addio a Mysql

19MAR2010

Dopo twitter, anche Digg ha deciso di migrare i propri dati da MySQL a Cassandra, un database non relazionale open source di seconda generazione, realizzato inizialmente da Facebook.

Il motivo principale della scelta, secondo quanto scritto sul blog di John Quinn è principalmente la difficoltà di gestire una infrastruttura ad alte prestazioni con enormi quantità di dati in veloce crescita come quella di un social network come Digg.

Cassandra offre una struttura più scalabile e più elastica, distribuita su più macchine e meno legata ad uno schema rigido di campi e tabelle.

Che siano le prime avvisaglie del declino per i database relazionali, almeno per le grosse applicazioni?

Pubblicato in:null

Google non supporterà più Internet Explorer 6. E qualcuno gli fa il funerale

23FEB2010

Sembra incredibile pensare ad un funerale per un browser, eppure è ciò che stanno organizzando quei matti di ie6funeral.

Il 4 marzo 2010 infatti Google (seguendo l'esempio di molte altre aziende) cesserà il supporto a questo browser, ormai obsoleto, per poter lavorare su supporti più moderni.

Nel bene e nel male (soprattutto nel male) questo browser rimane un pezzo di storia nel mondo del web, ma per dirla fuori dai denti... non mi mancherà affatto.

Il Re è morto, viva il Re!

Pubblicato in:segnalazioni

[Segnalazione] Domande e risposte su CakePHP

16FEB2010

Girovagando per la rete mi sono imbattuto in questo simpaticissimo sito: All questions at CakePHP Questions.

È un luogo in cui, in modo molto semplice, chi ha bisogno di aiuto può fare la propria domanda, per poi attendere eventualmente la risposta dagli altri.

Molto utile!

Pubblicato in:

Bob Marley - Don't worry, be happy

31GEN2010

Don't worry, be happy!