Archive for the 'Source Code' Category

.NET, C, Source Code, UDP Communication

UDPSender: Inviare messaggi udp in c#

Questo post fa parte della sezione Comunicazione UDP, e tratterà l’utilizzo di una semplice classe per inviare messaggi dalla propria applicazione c# utilizzando il protocollo udp.

Header UDP

La classe si chiama UDPSender e, per comodità, implementa un’interfaccia denominata INetworkSender.

public interface INetworkSender
{
	void SendMessage(string address, byte[] message);
}

In più in caso di errore la classe genera una eccezione del tipo UDPSenderException che contiene la descrizione dell’errore, la causa dell’eccezione (innerException), e l’oggetto UDPSender che ha generato l’eccezione.
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, C, Source Code

Calcolo del CRC in C#

Questo è un post veloce sul calcolo del codice CRC(Cyclic Redundancy Check) in C#. Per lavoro mi serviva una classe che mi calcolasse il crc-12, e non vi nascondo che ho avuto un poco di difficoltà nel trovare le specifiche dato che, di solito, gli standard più usati sono crc-8, crc16 e crc32.

binary matrix

Alla fine ho trovato una classe che mi permettava di calcolare il crc di ordine variabile da 1 a 32, ho inserito lo standard crc-12, ho aggiunto una classe per semplificare l’inserimento dei valori (CRCSettings) e una funzione per generare altri polinomi oltre quelli standard. Infine ho ripulito la struttura della classe principale.
Continue Reading »

MySQL, Source Code, Web, php

Backup di un database mysql da php

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 »

C, Source Code, Windows

Come ricavare la lettera di un pendrive usb

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 »

C, Source Code, Windows

Intercettare il collegamento e la rimozione di una periferica USB

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 »

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 »

Source Code, php

Immagine Random in php

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 »

.NET, C, Source Code

Accesso ottimizzato alle Bitmap

Se bisogna fare elaborazione delle immagini in c#, il metodo più immediato per un programmatore di accedere ai pixel di una Bitmap è quello di utilizzare i metodi SetPixel() e GetPixel() forniti dal .NET. Purtroppo il metodo più veloce per il programmatore, spesso non corrisponde al metodo più veloce per il programma: considerando che queste due funzioni sono MOLTO lente, se il vostro scopo è quello di analizzare tutti i pixel di un immagine o, ancora peggio, di fare elaborazione di tante immagini in sequenza, è fortemente sconsigliato utilizzarle. Per fortuna il c# è un linguaggio molto flessibile, che permette di fare cose ad altissimo livello ma che comunque ci lascia sempre la possibilità di scendere a basso livello quando è necessario.

In questo articolo per semplicità tratterò soltanto le immagini a 8bpp (8 bit per pixel), ovvero a 256 colori.

Per riuscire a lavorare con i dati di un immagine in maniera veloce la soluzione è solo una: utilizzare il puntatore ai dati dell’immagine! Lavorare con i puntatori ad immagini è un pò come lavorare con i puntatori a char (le stringhe in c++): Il puntatore punterà al primo indirizzo di memoria dei dati della bitmap, dove sarà contenuto il primo pixel. Incrementando il puntatore andremmo ottenendo via via i valori degli altri pixel.
Puntatore a bitmap
Continue Reading »

« Prev - Next »