Author Archive

MySQL, Source Code, Web, php

Interfaccia alla classe MySQLDump per il backup

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

Dopo il successo dell’articolo Backup di un database mysql da php, ho deciso di scrivere un piccolo post su un file che può ritornare utile per scaricare il backup del db di un sito o di un blog wordpress direttamente dal browser.
Per usare lo script, basta semplicemente scaricarlo e modificare le prime linee, dove è contenuta la configurazione:

// Configurazione del DB
$server = "IP del server (localhost dovrebbe andare bene nella maggior parte dei casi=";
$username = "Nome utente del db";
$password = "Password del db";
$dbToDump = "Nome del db di cui fare il dump";
// password per accedere alla pagina php. Ricordati di cambiare la password di default!!!
$backupPassword = "UltraSecretKeyThatYouMUSTInsertHere";
// nome del file in cui salvare il backup
$filename = "backup.sql.gz";

Dopo ciò, si può uploadare il file nel server, nella stessa cartella dove è presente la classe MySQLDump.
Per accedere allo script bisogna specificare due parametri: la password per accedere allo script (pass), e un altro parametro (t) che se è 1 separerà le SQL insert ogni 100 righe.
Per esempio, se si è uploadato il file nella directory principale del sito, basta scrivere nella barra degli indirizzi del browser:

http://www.iltuosito.it/backup.php?pass=UltraSecretKeyThatYouMUSTInsertHere&t=1

…e il browser aprirà la finestra di dialogo per scaricare il file con il backup del db!

Download MySqlDump Interface.php. Downloads: 496

Per ulteriori informazioni sulla classe MySQLDump, leggere l’articolo originale, o scaricare il sorgente da qui:

Download MySQLDump. Downloads: 2087

C, Source Code

Stringa auto-dimensionante in c

In questo articolo spiegherò come creare una struttura con relative funzioni associate per permettere di utilizzare una stringa che incrementi la sua dimensione appena lo spazio allocato non basta più per conservare i caratteri, utilizzando soltanto le caratteristiche del linguaggio c (niente classi quindi).
Una stringa del genere è molto utile nei casi dobbiamo lavorare con stringhe di cui non si conosce a priori la lunghezza (per es. una stringa letta da un file xml): possiamo quindi leggere i caratteri ad uno ad uno fino a quando non arriviamo alla fine della stringa, senza preoccuparci dell’allocazione della memoria.
Innanzitutto analizziamo la struttura dati che definisce la stringa autoincrementante:

// Struct containing the growing string
typedef struct
{
	// stringa
	char * text;
	// lunghezza della stringa (comprensiva dello zero terminatore)
	int length;
	// capacità della stringa
	int capacity;
} growing_string;

La variabile text sarà il posto dove effettivamente andremo ad allocare la stringa, length indicherà la lunghezza della stringa corrente mentre capacity la memoria allocata per la stringa.
Per capire meglio la differenza tra length e capacity guardiamo la prossima immagine:

Capacity-Length

Capacity rappresenta quindi lo spazio allocato in memoria per la stringa, mentre length rappresenta il numero di caratteri effettivamente occupati (comprensivo di zero terminatore). Si capisce facilmente che se si aggiungono abbastastanza caratteri da fare in modo che length sia maggiore di capacity, allora bisogna riallocare lo spazio di memoria in modo da far entrare più caratteri.
Continue Reading »

C

Thread in C# utilizzando i metodi anonimi

Per creare un Thread in C# solitamente si usa scrivere un metodo con all’interno il codice che il Thread deve eseguire, per poi creare il Thread settandogli come delegate il metodo appena creato:

public void FaiQualcosaDiUtile()
{
	for (int i = 0; i < 100; i++)
	{
		// faccio qualcosa...
		Thread.Sleep(500);
	}
}

static void Main()
{
	// qui creo il thread passandogli il delegate del metodo creato pocanzi
	Thread t = new Thread(FaiQualcosaDiUtile);
	t.Name = "Thread di prova";
	t.Start();
}

dual core

Per creare i Thread, il C# dà l’opportunità di utilizzare i metodi anonimi. Per utilizzarli, basta scrivere il codice da eseguire nel Thread all’interno del codice della creazione dell’oggetto Thread, offrendo quindi la possibilità di non scrivere il metodo:
Continue Reading »

C, Source Code, Windows

Spegnere o riavviare il pc

Piccolo post per una funzione che spegne o riavvia il pc su Windows in c++.
La funzione viene chiamata con il parametro false se si vuole spegnere il pc, con true se invece si vuole riavviare, e ritorna false nel caso in cui per qualche motivo la procedura di spegnimento non sia andata in porto (per es. qualche processo ha negato lo shutdown).

Shut Down

Per spegnere il pc basta quindi invocare la funzione nel seguente modo:

if (!ShutDown(false))
{
	// spegnimento non riuscito
}

Parte del codice sorgente è di seguito:
Continue Reading »

C, Source Code

Modificare gli elementi di un form da un thread

Scenario:
Si vuole eseguire al clic di un certo elemento di un Form un’operazione abbastanza lunga, come per esempio lo scaricamento di alcuni files da internet, ma durante l’operazione l’utente deve poter avere il controllo del programma e avere un feedback visivo della percentuale di completamento dell’operazione.
Soluzione non funzionante:
Ci si rende conto subito che per risolvere un problema del genere è necessario utilizzare un Thread che esegua l’operazione in un contesto separato da quello del Form principale, altrimenti il programma si bloccherà in attesa della fine dell’operazione senza possibilità di ricevere input dall’utente. Il vero problema adesso si crea quando si cerca di aggiornare i componenti del Form dal Thread:

private void button1_Click(object sender, EventArgs e)
{
    testThread = new Thread(threadProc);
    testThread.Start();
}

public void threadProc()
{
    // wast a lot of time...
    for (int i = 1; i <= 10; i++)
    {
        Thread.Sleep(250);
        progressBar.Value = i * 10;
    }
    MessageBox.Show("Operation Completed!");
}

Purtroppo, all’esecuzione della riga di codice dove viene assegnato il valore alla progressBar si otterrà un messaggio di errore simile al seguente:
“Operazione cross-thread non valida: è stato eseguito l’accesso al controllo ‘progressBar1′ da un thread diverso da quello da cui è stata eseguita la creazione.”

lock

Continue Reading »

C, Source Code, UDP Communication

UDPListener: Classe che riceve messaggi UDP

Questo post fa parte della sezione Comunicazione UDP, dove vengono raccolti gli articoli inerenti la programmazione dei socket UDP in C#.

UDP - User Datagram Protocol

La classe in questo post permette in maniera facile e veloce di ricevere messaggi UDP con poche righe di codice e senza scendere nei dettagli dell’implementazione. Un esempio di utilizzo della classe è il seguente:

private void InitConnection()
{
	m_udpListener = new UDPListener(m_port, new byte[4] { 0, 0, 0, 0 });
	m_udpListener.MessageReceived += new UDPMessageReceivedDelegate(udpListener_MessageReceived);
}

Continue Reading »

C, Source Code, Windows

Classe timer in c++

Partendo dall’articolo sui timer in c++, abbiamo creato una semplice classe che fa da wrapper alle funzioni di Windows e che permette facilmente di fare partire un nuovo timer, stopparlo, e decidere quale funzione chiamare quando il tempo del timer è scaduto.

Timer

Un semplice esempio di utilizzo della classe è il seguente:
Continue Reading »

.NET, Web

Raccolta Code Snippets per il Visual Studio

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:

C, MySQL, Source Code

Trasformare un oggetto C# in stringa SQL

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 »

.NET, C

Utilizzare gli Snippets in Visual Studio

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 »

« Prev - Next »