Backup di un database mysql da php

Categories: MySQL, Source Code, Web, php

Tags:

La classe MySQLDump è stata aggiornata a una nuova versione e questo articolo contiene informazioni obsolete. Per informazioni sulla nuova versione controllare l’articolo sulla nuova versione

In questi giorni ho deciso di scrivermi uno script su linux, per aggiornare automaticamente la mia copia in locale di questo “FANTASTICO” sito, in modo da potere smanettare sul css e sulle pagine, senza disturbare i lettori. Sinceramente mi sembrava una cosa veloce, infatti dovevo semplicemente fare il dump del database mysql di aruba, riversare il tutto nel mio db locale e opzionalmente scaricare l’intero sito via ftp. Senonché ho, tristemente, scoperto che aruba non dota i suoi “hosting server” del comando “mysqldump” (ottima utility che consente velocemente di fare il dump completo di un db mysql).

Lamp

A questo punto ho deciso di sbracciarmi le maniche e ho capito che avrei dovuto mettere mano al php. Per evitare di iniziare da zero, ho cercato qualcosa di più o meno pronto da modificare il meno possibile.

Continue Reading »

Raccolta Code Snippets per il Visual Studio

Categories: .NET, Web

Tags:

Got Code Snippets
Gotcodesnippets.net
è un ottimo sito che raccoglie Code Snippets da utilizzare nel Visual Studio. E’ possibile uploadare le proprie snippet personalizzate o scaricare quelle create dagli altri utenti nel giro di poche attimi.

Prima di scaricare gli snippet possiamo personalizzarli scegliendo una scorciatoia personalizzata. Un’altra funzionalità interessante è che gli snippet vengono scaricati nel formato Visual Studio Community Content Installer e quindi basterà un doppio clic per ritrovarsi lo snippet perfettamente integrato nel Visual Studio! Facile e veloce…! :D
Il video seguente di Michael Palermo spiega in maniera abbastanza chiara come usare le snippets scaricate dal sito e i vantaggi che se ne possono ricavare:

Come ricavare la lettera di un pendrive usb

Categories: C, Source Code, Windows

Tags:

Nell’articolo “Intercettare il collegamento e la rimozione di una periferica USB” avevo mostrato un piccolo esempio che indicava come eseguire del codice al collegamento, e alla rimozione di una periferica usb. Se volessimo eseguire un programma dalla penna usb, avremmo bisogno di:

Penna usb

  1. intercettare l’inserimento della penna;
  2. essere sicuri che la periferica inserita sia una “mass storage device”, e che contenga un”volume”;
  3. conoscere la lettera dell’unità del volume.

Continue Reading »

Intercettare il collegamento e la rimozione di una periferica USB

Categories: C, Source Code, Windows

Tags:

Qualche mesetto fa mi sono chiesto se non ci fosse una maniera per lanciare automaticamente il mio MozUp quando inserivo il mio pendrive nel pc, un pò come succede quando inserisci un cd ed il sistema automaticamente legge il file autorun.inf e fa il suo mestiere… .

Logo usb

Naturalmente, anche se sul MozUp c’é un’opzione per generare il file autorun.ini,

Continue Reading »

Trasformare un oggetto C# in stringa SQL

Categories: C, MySQL, Source Code

Tags:

Il post seguente fa parte del progetto SQLStringBuilder. Per le ultime versioni del codice sorgente si consiglia di prelevare il codice dal CVS.

Ogni volta che dobbiamo creare delle query SQL in un linguaggio di programmazione spesso si fa qualcosa che ho sempre reputato sporco, del tipo:

int id = GetTableID();
string place = GetPlace();
DateTime timestamp = GetLastActionDate();
string strTimestamp = Utils.GetSQLDate(DateTime.Now);
string sql = "INSERT INTO table VALUES(" + id + ",'" + place + "'," + timestamp + "')";

Nella creazione della stringa bisogna stare attentissimi alle sequenze di virgolette, virgole e apici vari, e basta sgarrare uno di questi elementi per sminchiare completamente la query! Lo scopo di questo articolo è quello di creare un metodo che prenda in ingresso un oggetto c# qualsiasi e restituisca una stringa formattata nel modo corretto. L’intestazione del metodo è la seguente:

public static string GetSQLObject(object value)

Continue Reading »

Utilizzare gli Snippets in Visual Studio

Categories: .NET, C

Tags:

Una comodissima funzionalità presente nel Visual Studio è la possibilità di inserire degli Snippets di codice in maniera veloce e intuitiva. Gli snippets di codice sono dei blocchi di codice che possono essere ripetuti con uno schema fisso, e che è sempre noioso per un programmatore riscrivere. Supponiamo di voler scrivere una classe con diverse variabili private e rispettive property get e set: in pratica per ogni variabile dobbiamo scrivere la relativa property, oppure andare di copia incolla dopo aver scritto la prima variabile e cambiare i nomi alle variabili successive.

Scrivere una property utilizzando gli snippet è invece immediato, la procedura che descrivo qui di seguito è composta da sette immagini perchè sono uno sborone per natura :P, ma in realtà si esegue nel giro di un secondo e mezzo. :)
Per iniziare scriviamo prop nel punto del codice dove volete creare la vostra Property, che è la parola chiave che identifica questo Snippet di codice:

snippet property 1

Continue Reading »

Immagine Random in php

Categories: Source Code, php

Tags:

Se volete visualizzare nel vostro sito un immagine casuale, un ottimo modo di fare questo è attraverso uno script php.
Un modo semplice di visualizzare un immagine casuale in php è quello di fare qualcosa del tipo: genera un numero casuale, se questo è 1 allora manda in eco l’immagine 1, se questo è 2 manda in eco l’immagine 2 etc… Il problema di questo metodo è che l’output prodotto non è un immagine ma del codice html con il tag img. Ecchissenefrega, tanto alla fine l’immagine casuale viene comunque disegnata, direte voi! Certo, ma in alcuni casi è necessario che il codice php generi direttamente un immagine, e che quindi dirigendo il browser all’indirizzo della pagina php venga visualizzata l’immagine senza che ci sia nessun sorgente HTML della pagina. A me per esempio è servito per specificare delle immagini random che vengono richiamate dal foglio di stile del sito: il css non può interpretare il php visto che è letto in locale dal browser, quindi l’immagine a cui punta il css deve essere una vera e propria immagine, altrimenti questa non verrà visualizzata.
Bando alle ciance quindi.
Un esempio di immagine casuale è quella qui sotto :)
Immagine random

Preferite i cani, il gatto o il criceto molto fortunato? :D (refresh per randomizzare un’altra immagine)
Continue Reading »

Errore Designer Visual Studio

Categories: .NET, C

Tags:

Piccolo post per un problema del Visual Studio .NET 2005 riscontrato oggi a lavoro, che spero possa aiutare qualcuno con lo stesso problema.

Mentre lavoravo su un progetto, aprendo un form che includeva al suo interno diversi User Control creati da me mi è comparsa una schermata simile alla seguente al posto del Designer:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.

Non potevo più editare il form nel designer, ma stranamente il codice veniva compilato ed eseguito correttamente. Provando a fare Clean Solution e Build Solution l’errore permaneva. Ho provato quindi a controllare il codice generato dal designer, temendo che avesse combinato qualche disastro, ma neanche qui niente di strano. Quando iniziavo a temere il peggio, cercando su internet con un mio collega abbiamo trovato la soluzione: bisogna cancellare le directory /bin e /obj del progetto e fare il rebuild del progetto per fare tornare le cose alla normalità. Ho sempre reputato il Visual Studio un ottimo prodotto, ma questo bug è abbastanza antipatico: mi ha fatto perdere un pò di tempo e adesso mi si ripropone in continuazione, costringendomi a cancellare le directory da Explorer e a rifare il rebuild… :f7:

Non capisco sinceramente perchè facendo il Clean Solution più il Build Solution la cosa non si risolva da sola, visto che in teoria il compito del rebuild dovrebbe essere proprio quello di cancellare tutti i file temporanei creati!

Ottenere una stringa pulita SQL

Categories: C, MySQL, php

Tags:

Il post seguente fa parte del progetto SQLStringBuilder. Per le ultime versioni del codice sorgente si consiglia di prelevare il codice dal CVS.

Se dobbiamo lavorare con delle stringhe SQL in un ambiente in cui la sicurezza è fondamentale, non possiamo assolutamente permetterci di mandare in pasto al MySQL stringhe senza prima averle ripulite per bene. Quella che può sembrare un esagerazione di un programmatore pazzo invece si reputa un enorme falla di sicurezza se non implementata
Se per esempio diamo in pasto la seguente SQL al db: string sql = "INSERT INTO table VALUES('" + textBoxNomeCliente.Text + "')";

dove textBoxNomeCliente è il text box riempito dall’utente, i rischi di sicurezza sono praticamente enormi. Cosa succederebbe se per esempio il cliente nel textbox scrivesse:

Ti sto per fottere il DB...'); DROP TABLE "tabellaConDatiImportantissimi"; INSERT INTO table VALUES('ti ho fottuto il DB haha!

La query in pratica diventerebbe:

INSERT INTO table VALUES('Ti sto per fottere il DB...'); DROP TABLE "tabellaConDatiImportantissimi"; INSERT INTO table VALUES('ti ho fottuto il DB haha!')

Bello vero?? In pratica l’utente malintenzionato può facilmente eseguire tutte le query che vuole, in questo caso cancellando completamente una tabella.
Continue Reading »

Metodi deprecati

Categories: C

Tags:

Piccolo post per una cosa facile e veloce: Se volete che in c# un metodo sia visto dall’Intellisense come deprecato (non come depravato :f7: ) basta aggiungere l’attributo Obsolete all’intestazione del metodo.

[Obsolete("Questo metodo non si dovrebbe usare! ")]
public void MetodoDepravato()
{
MessageBox.Show(”Sono un metodo depravato! Sbav, sbav…”);
}

stop

Il bello di dichiarare un metodo come deprecato è che durante la compilazione verrete avvertiti con un Warning o addirittura con un Error se dichiarate l’attributo con il parametro true alla fine:

[Obsolete("Questo metodo non si può usare. Utilizzare Metodo2()", true)]
public void Metodo1()
{  ….  }
public void Metodo2()
{  ….  }

« Prev - Next »