Sito realizzato con DelightCMS. Contattami per informazioni

Blog


Come ti faccio un backup automatico dei database e lo salvo su dropbox

Pubblicato in Script, Ubuntu, 5 mesi fa , Commenti | Lascia un commento

In questo fine settimana mi sono posto un problema non da poco per un webcoso freelance come me: e se il pc si rompe?

Faccio (quasi) abitualmente il backup dei dati che mi servono, ma il salvataggio dei database è sempre una rottura di scatole e lo faccio... solo quando mi ricordo di farlo. Questo non va bene perchè è un'operazione tediosa e troppo spesso finivo per trascurarla, così dopo aver scritto un piccolo script in bash per un altro motivo, ho deciso di sfruttare la comodità di questo strumento insieme alla figosità di Dropbox per avere un comando che faccia il lavoro sporco per me, lo faccia in automatico e lo faccia in modo sicuro, salvandolo anche online.

In sostanza, quello che fa questo script è effettuare il dump di tutti i database presenti sul mio mysql, eccetto le tabelle "sue", come information_schema, phpmyadmin e mysql, comprimerle tramite bzip2, controllare (basandosi sulla dimensione del file compresso) se ci sono stati dei cambiamenti dall'ultimo salvataggio ed eventualmente salvare il nuovo backup nella mia cartella su dropbox... poca spesa, tanta resa!

Ecco il codice:

 

#!/bin/bash

##################################
# Mysql backup automatizzato con salvataggio dove ti pare (io uso dropbox).
# Di Emanuele "ToX" Toscano - http://emanuele.itoscano.com/vedi/95

# Requisiti: linux o qualche adattamento per farlo funzionare su windows, non ho idea di come si faccia per mac
# Consigliabile usare dropbox per salvare il file...

Leggi il resto del post

Un semplicissimo antispam con jQuery

Pubblicato in Script, 11 mesi fa , Commenti | Lascia un commento

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 :)


Leggi il resto del post

Importare il dump di un database enorme in mysql

Pubblicato in Segnalazioni, Script, 1 anno fa , Commenti | Lascia un commento

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

 

CSS3 Finalize: un plugin per jquery che...

Pubblicato in Segnalazioni, Script, 1 anno fa , Commenti | Lascia un commento

... 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!

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

Pubblicato in Script, 2 anni fa , Commenti | Lascia un commento

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...

Leggi il resto del post

Sottolineare parte di un testo con jQuery, senza plugins

Pubblicato in Script, 2 anni fa , Commenti | Lascia un commento

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.

Script per il backup di database e webroot

Pubblicato in Script, 2 anni fa , Commenti | Lascia un commento

Da tempo ero alla ricerca di uno script semplice e funzionale per effettuare i backup dei propri siti internet in modo automatizzato, che non desse lavoro una volta installato (tipo "installa e dimentica"). Alla fine mi sono imbattuto in questo vecchio post e nel bellissimo script che ancora adesso potete ammirare su quelle pagine. 

Naturalmente dovevo modificarlo per le mie necessità, cioè renderlo agnostico riguardo alla directory in cui è installato (basta creare una directory qualunque, buttarci dentro i due file qua sotto e al resto pensa lui) ed effettuare il dump dei database...

Ma bando alle ciance:

#!/bin/bash
CURPATH=$( cd $( dirname $0 ) ; pwd )

DIR_BKP="$CURPATH"
# ========== CONFIGURATION ============
# file con i pattern da escludere dal backup
EXCLUDES="$CURPATH/excludes"
# nr di giorni da consevare
NDAY=14

# prefisso della directory del backup
PRE="backup_dati"
# directory da backuppare
TARGET="$CURPATH/../"

# configurazione dati di accesso al database
DBUSERNAME="username"
DBPASSWORD="password"
DBHOST="host.com"

# ====================================
echo "=> Fase 0 ($(date '+%d-%m-%Y %H:%M')): Backup database"
mysqldump --opt --user="$DBUSERNAME" --password="$DBPASSWORD" --host="$DBHOST" --all-database | gzip -v >  "$DIR_BKP/database.tar.gz"

# ====================================
echo "=> Fase 1 ($(date '+%d-%m-%Y %H:%M')): Cambio \
permessi e rimozione del backup piu' vecchio <="
# cambio permessi
chmod -R...

Leggi il resto del post