Posts Tagged “Programmazione”

Poco tempo fa ho parlato di come effettuare l'operazione di Wake On LAN via Fing su smartphone Android. Oggi invece vi voglio far vedere come effettuare la medesima operazione su Windows.

Ho da poco cablato l'intera casa su rete Gigabit, e il WOL ( Wake On LAN per gli amici ) torna davvero utile, soprattutto se su tutti i computer della casa è presente VNC. L'avvio da LAN avviene per mezzo dei cosiddetti Magic Packet, uno speciale frame che quando rilevato dalla scheda di rete fa accendere il computer. Per inviare questi pacchetti esistono molteplici soluzioni. Una ad esempio è mc-wol. Inizialmente la mia idea era di usare questa integrandola con un semplice script VbScript, poi ho semplicemente pensato: "Posso scriverla io?". La risposta era ovviamente Sì. Mi sono quindi messo a cercare in cosa consistono fisicamente questi magic packet e ho scoperto che sono dei semplicissimi pacchetti costituiti dalla seguente struttura:

Ossia da FF FF FF FF FF FF seguiti da 16 volte il MAC Address della macchina da avviare. Ora qualcuno si chiederà perchè il MAC Address debba essere ripetuto per ben 16 volte. E' semplicemente un metodo di sicurezza per evitare che accidentalmente durante, ad esempio, un download il computer possa accendersi. Infatti è possibile che sequenza FFFFFFFFFFFF seguita dal MAC Address possa essere contenuta per sbaglio in un altro pacchetto. Ripetendo il valore del Mac Address per ben 16 volte si evita questo problema.

Il mio programma, scritto in C#, necessita la presenza del .Net Framework alla sua versione 4 ( se per caso non la avete, meglio. Così vi obbligo a scaricarla =) ). Il funzionamento è molto semplice. Oltre all'exe è richiesta la presenza di un file MAClist.txt che contiene la lista dei possibili PC da avviare. Per aggiungere un elemento basterà editare il file con un semplice notepad e scrivere le voci con questa sintassi:

NomePC,MAC Address del PC

La virgola funge da separatore nella stringa. Potete aggiungere quanti elementi desideriate.

Per funzionare il programma necessita solo del MAC Address del computer bersaglio da avviare. Questo indirizzo sarà broadcastato in tutta la rete e sarà inviato via protocollo UDP, che non garantisce la consegna del pacchetto. Ovviamente a questo livello l'indirizzo IP della macchina da accendere serve a ben poco, dato che la macchina è spenta e quindi non possiede un indirizzo IP. Per recuperare il MAC Address di un PC potete seguire la mia vecchia guida.

Il download dell'eseguibile e del txt è disponibile qui sotto:
Wake On LAN - File .rar di dimensioni 5.09 kB e scaricato 13 volte.

Come prima cosa dovete aggiungere al file MAClist.txt una stringa nel formato: "descrizione,MAC Address" (senza virgolette).

Ed ecco i sorgenti del progetto, sviluppato con Visual Studio:
Wake On LAN C# src - File .rar di dimensioni 73.71 kB e scaricato 11 volte.

Se avete consigli o critiche sentitivi liberi di aggiungere un commento. ;)
Buon Download ;)

Comments Nessun Commento »

Questo post è diretta conseguenza della mia pignoleria. Come scritto in precedenza sono un accanito cinefilo e amo tenere in ordine la mia collezione privata. Proprio per questo utilizzo GCstar per gestirla e GCweb per visualizzarla da browser.

Però con le funzioni avanzate messe a disposizione da GCstar e qualche "magheggio" in GCweb è possibile creare del campi personalizzati e poi visualizzarli: ad esempio la posizione fisica del film nella libreria o qualsiasi altra cosa che più preferite. Fortunatamente lo sviluppatore di GCstar ha previsto questa opzione e creare un campo personalizzato è estremamente semplice ( o come direbbero gli americani "piece of cake" ;) ). Invece per adattare GCweb bisogna mettere mano al codice PHP e aggiungere delle righe.

Passiamo quindi alla pratica. Aprite GCstar andate in Modifica -> Cambia campi della collezione e aggiungete i campi che più preferite, io ad esempio ho inserito il campo "posizione". Dovo aver dato un etichetta al campo definite il tipo di dato che il campo dovrà contenere ( numero, stringa, bool, ecc. ), lasciate "User fields" come gruppo. Potrete inserire dei parametri aggiuntivi e opzionali che varieranno a seconda del tipo di dato. Ad esempio con un numero potrete scegliere a priori il valore di default o impostare un range di validità. Ovviamente tutte queste opzioni dipendono dalla tipologia di informazione che volete salvare nel campo.

Ora nella scheda di ogni elemento potrete trovare sotto la tab User Fields i campi da voi aggiunti.

Adesso un po' di spiegazioni su come GCstar archivia le informazioni. Sfortunatamente questo programma non fa uso di un database, ad esempio SQLlite, per memorizzare le informazioni a livello fisico. Utilizza semplicemente un file di testo, che ha una struttura molto simile ad un file XML. Questo significa che tutte le informazioni salvate sono disposte tra due tag. GCweb quindi non fa altro che "strippare" i tag e si crea degli array in cui è contenuta l'informazione. Quindi per visualizzare i nuovi campi inseriti su GCweb dovremmo inserire il nome del campo nell'array, in modo che l'informazione contenuta nel campo possa essere salvata nell'array e poi visualizzata.

Il nome del campo tuttavia non è uguale al nome dell'etichetta che diamo al campo stesso. Questo si chiamerà "gcfieldX", dove con la X si indica un numero progressivo. Per trovare il nome effettivo corrispondente all'etichetta inserita dovrete aprire il file .gc ( ossia il file della collezione ) e alla riga 12 troverete tutti i campi personali inseriti. Alla voce "displayedname" si trova il nome dell'etichetta da voi inserito, mentre alla voce "value" si trova il nome effettivo del campo. Segnatevi quest'ultimo ed aggiungetelo al file filetype.php, che trovate nella cartella /conf di GCweb. Andate nel blocco GCfilm, se state lavorando con una collezione di film, altrimenti trovate il blocco corrispondente al tipo di collezione in cui volete inserire i campi personalizzate. Qui inserite il nome del campo ( quindi gcfield1 ad esempio ) nell'array corrispondente al tipo di dato alla quale il campo fa riferimento. Se si tratta di un numero scrivete gcfieldX in numeric, se stringa in string, e così via. Salvate e chiudete il file.

Ora per ogni elemento delle collezione il programma non dovrà far altro che trovare il tag del campo personalizzato, catturare il valore memorizzato ( c'è giù una procedura che fa questo :D ), inserirlo nell'array e poi visualizzare il campo nelle informazioni relative all'elemento selezionato. Ecco un esempio:

Campi personali in GCweb

Ora però bisogna sporcarsi le mani, ed aggiungere un paio di righe nei file php adibiti a visualizzare le informazioni ( quindi sappiamo già che dovremmo piazzare qualche echo ). :D

Per prima cosa posizionatevi nella cartella /templates/default/, sempre se utilizzate il tema di default.

Apriamo nel nostro editor di testo i file item_GCfilms.php e list_GCfilms.php. Nel primo file andiamo alla riga 92 e notiamo che le righe che seguiranno saranno quelle responsabili alla visualizzazione delle informazioni sull'elemento. Ora aggiungiamo una cosa simile a questa ( io la ho piazzata alla riga 116 ):

if (test($item['gcsfield4']))        echo '<br><li><span>'.__('Raccoglitore').' :        </span><span>'.filter('gcsfield4==',$item['gcsfield4']).'</span></li>';
if (test($item['gcsfield3']))        echo '<li><span>'.__('Posizione').' :        </span><span>'.$item['gcsfield3'].'</span></li><br>';

Queste due righe vengono visualizzate in due modi distinti. La prima visualizza una stringa che indica il raccoglitore in cui si trova il DVD, ma nello stesso tempo è un link che, se premuto, visualizza tutti i film nello stesso raccoglitore. La seconda riga invece visualizza solo la posizione, e non fornisce nessun link.

Andate poi nel secondo file ( list_GCfilms.php ) e aggiungete le stesse righe ( io le ho aggiunte alla riga 60 ):

<?php if (test($item['gcsfield4']))     {?> <li><span><?php echo __('Raccoglitore') ?> :</span>      <span><?php aff_filter('gcsfield4==',$item['gcsfield4']) ?></span></li><?php } ?>
<?php if (test($item['gcsfield3']))     {?> <li><span><?php echo __('Posizione') ?> :</span>      <span><?php echo $item['gcsfield3'] ?></span></li><?php } ?>

Allo stesso modo potrete aggiungere qualsiasi campo personale da voi creato. ;) Ovviamente questo lo potete fare per ogni tipologia di collezione: videogiochi, libri, film. Dovrete solo editare i file corretti. ;)

Comments Nessun Commento »

Vorrei tornare a parlare delle Canon SDK ( o EDSDK ), un potente strumento che Canon mette a disposizione dei suoi consumatori. Scrissi qualcosa a riguardo in questo post, ora vi vorrei dare qualche dettaglio in più in merito agli strumenti a disposizione. Una volta aperto il pacchetto delle SDK ( versione per Windows, esiste pure una versione per Mac ) ci troveremo davanti a tre cartelle: Document, EDSDK e Sample. Nella prima troviamo il vademecum del programmatore, con le sue 150 pagine di references. In EDSDK troviamo il fulcro delle SDK, ossia le DLL, le librerie e headers, senza di queste il vostro lavoro non può nemmeno cominciare. Nell'ultima cartella invece troviamo degli esempi, creati da Canon, con lo scopo di darci degli indizi sulla tecnica di programmazione necessaria per controllare da PC la nostra DLSR e capire come utilizzare le API disponibili.

Le attuali EDSDK ci permetto di iniziare a lavorare immediatamente con i seguenti tre linguaggi: C++, Visual Basic .NET e C#. Di questi abbiamo già i wrapper pronti all'uso, dovremmo solo scrivere il nostro codice e fare la chiamata ai metodi ( possibilmente con i parametri giusti :D ). Se invece vogliamo agire fuori dagli schemi, ad esempio creando un applicazione in Java per controllare la camera, avremmo bisogno di creare un wrapper seguendo le specifiche del JNI ( Java Native Interface ), questo permetterà all'applicazione Java di utilizzare le DLL senza problemi. Però il wrapper dovremmo crearcelo noi, una bella seccatura, sempre se non ci ha pensato qualcun altro. Per Java esiste questo progetto, ormai morto, ma chissà, forse si riesce comunque a cavarci fuori qualcosa.

Io personalmente ho optato per la strada più semplice, vado di C# ( o, ironicamente, C Cancelletto :D ). C# è un linguaggio molti simile a Java, anche se ci sono delle belle differenze e non è portabile quanto il fratello. C# infatti è sviluppato da Microsoft e rigorosamente per sistemi Microsoft, tuttavia grazie al progetto Momo, il codice C# può essere reso disponibile per altre piattaforme molto semplicemente. Dato che il mio progettino non prevede l'utilizzo di librerie grafiche il porting dovrebbe essere piuttosto indolore ( fiuuu :D ).

Se nel frattempo vi siete un po' arrugginiti in materia C# vi consiglio di dare una letta a queste guide: Guida C# da html.com, C# Language da redhost.net ed ovviamente non poteva mancare la MSDN.

Per i più curiosi uploado il file EDSDK.cs che è il wrapper utilizzato per dialogare con le dll. Queste ultime però non posso metterle a disposizione, stando alla licenza, dovrete richiederle a Canon ( vd. link alla prima riga ).

EDSDK - File .zip di dimensioni 17.59 kB e scaricato 214 volte.

Al momento però il mio progetto va un po' a rilento, da una parte perchè sto "rispolverando" C# ( grande balla, lo sto imparando :D , non ho mai usato C# ) e da un'altra perchè per ora non posseggo una DSLR Canon EOS, quindi devo "andare a scrocco" per testare l'applicazione. :D 1

Come ultima cosa torno a ribadire un concetto già espresso nel precedete post. E' davvero un peccato che con tutti gli strumenti che Canon mette a disposizione non ci sia nessuna comunità di sviluppatori ben radicata.

  1. Tornerò presto su questo argomento ;) []

Comments Nessun Commento »


Un mese fa parlai a riguardo di GCweb, una semplice interfaccia web per GCstar. Ora sono qui per dirvi che queste "semplici righe di codice php" hanno superato la prova del nove, tutto sommato GCweb mi ha convinto. Ormai che ci siamo diciamo la verità, anche se fosse stato il programma peggiore della Terra lo avrei comunque usato, dato che è l'unico in grado di visualizzare le entry di GCstar su web. :D

Fortunatamente il caso non è questo, l'interfaccia si è comportata benone. Non ha un vero e proprio backend, tutta la configurazione è salvata su un file php. Tutto questo però non è un problema, GCweb nasce da un progetto personale, non ha un team di sviluppo ne un team di tester ed oltre tutto ha un utilizzo abbastanza circoscritto a pochi individui. Quindi partendo da questi presupposti posso affermare che per il suo genere GCweb è un ottima applicazione, il suo "sporco lavoro" lo fa come si deve.

Passiamo quindi all'installazione. Scaricate il pacchetto a questo indirizzo e scompattatelo. A questo punto se volete installarlo su XAMPP dovrete copiare la cartella gcweb all'interno della cartella "C:\xampp\htcdoc" ( qua trovate come realizzare un web server con XAMPP ).

Se invece volete installarlo sul server web del vostro QNAP dovrete eseguire questi passi:

  • Loggatevi nel pannello di amministrazione del vostro QNAP Turbo NAS
  • Dal menù a sinistra selezionate Servizio di rete -> Server web
  • Mettete la spunta su "Attiva server web" e ormai che ci siete anche su "Abilitare connessione sicura (SSL)", potete lasciare la porta 80 ma se preferite, per ragioni di sicurezza, potete cambiarla

Con questi semplici passaggi avete attivato il server web sul QNAP, ora vi basterà copiare la cartella di gcweb all'interno di "//<IP vostro QNAP>/Web".

Ora prima di procedere con la configurazione dell'interfaccia dovrete esportare la vostra collezione GCstar, per fare questo potete andare nel programma e fare esporta -> External Disk, oppure più semplicemente andare nella cartella dove salvate la collezione e copiare il file .gcs e la cartella contenente le locandine dei film nella cartella "//<IP vostro QNAP>/Web/gcweb/collections/".

Aprite il browser e digitate <IP del vostro QNAP>/gcweb, dovrebbe aprirsi una pagina di configurazione, voi compilatela. Inserire il nuovo nome da dare al file di configurazione ( per ragioni di sicurezza ), username ( inserite un valore numerico, es. 1 ), la password, il nome della vostra collezione e dai menù a tendina selezionate la cartelle delle locandine appena copiata. Selezionate infine la lingua di default in inglese ( eng, sempre se non volete l'interfaccia in francese o tedesco ).1 Le altre opzioni ( quelle più avanzate ) le potete lasciare di default. Confermate e la vostra collezione sarà importata. Ora dovreste vedere qualcosa di simile ( sempre che nella vostra collezione siamo presenti dei film :D ):

Clickate sul link my_collection ( nel mio caso ) e potrete accedere all'intera collezione:

Ecco. questo è tutto. Ovviamente, le stesse operazioni si applicano anche su XAMPP ( l'unica cosa che varia sono i path e l'indirizzo del server, che sarà localhost ).

Ora però c'è da risolvere il problema più grande,  dato che GCweb si comporta come un'interfaccia web, GCstar e GCweb non dialogano tra di loro, quindi sarà impossibile tenere aggiornata la nostra collezione sul server web a meno di non intervenire manualmente ogni volta che si aggiunge un elemento alla collezione, una cosa improponibile a mio avviso. :D

La soluzione è molto semplice, creare uno script che copia le locandine aggiunte e sovrascrive il file .gcs sul server. Un gioco da ragazzi. :D A tal proposito ho creato uno scriptino veloce in C# ( il mio nuovo amore :D ), per copiare cartella e immagini. Ve lo allego qua sotto:

GcWebCopyScript - File .zip di dimensioni 15.23 kB e scaricato 67 volte.

Dovrete solo aprire il file Program.cs e modificare il path della cartella che contiene le locandine e il file .gcs, in entrambe le direzioni: sorgente e destinazione. Le righe da modificare sono le: 14-15 e 22-23. Poi compilatelo per generare l'exe. Se avete Visual Studio bene, altrimenti usate Mono. Generato l'exe non dovrete far altro che aggiungerlo all'elenco delle operazioni pianificate, ad esempio io faccio eseguire l'exe una volta ogni 2 giorni. Lo script è molto rozzo, e semplice, infatti non fa altro che copiare, non gestisce eccezione e nient'altro. Già se lo avviate e il NAS è staccato vi darà sicuramente errore.

Se non siete pratici di compilazione e non sapete nemmeno cosa sia il C#, evitate di utilizzare lo script, e ogni tanto sovrascrivete il file .gcs e la cartella delle locandine.

P.S.

So di andare un po' off-topic e oltretutto controcorrente con quello che ho scritto nel post. Recentemente però ho scoperto l'esistenza di un buon software open-source per la catalogazione di film, giochi, libri, ecc.. Sto parlando di Tellico, disponibile però solo per piattaforma Linux, al massimo lo potete far girare su una macchina virtuale se utilizzate Windows come "primary OS". ;)

UPDATE 2011/03/19

Se non voglio passare per un perfetto idiota forse è meglio che dica questa cosa. :D Io sopra vi ho postato uno script che serve per sincronizzare la collezione, immagini e gcs, tra computer locale e server ( nel mio caso un NAS QNAP ). Mi sono però dimenticato di dire, da perfetto "fool", che potete utilizzare la collezione presente sul server come collezione principale. Questo significa che GCstar andrà a lavorare direttamente sui file presenti sul server web, non sarà più necessario quindi copiare file per mantenere up to date la versione locale e quella web.

Io, d'altro canto, ho preferito fare lo script perchè voglio mantenere la collezione ( quella principale ) sul mio laptop, e non sul NAS. Tutto qua. ;)

  1. Nel post citato all'inizio avevo promesso di localizzare GCweb in lingua italiana, questo però non è semplicissimo, proprio per la natura del sistema di localizzazione, alcune stringhe vengono correttamente sostituite altre invece no. Credo di aver individuato il problema nello script di conversione scritto in Python. A causa però degli impegni momentanei dovrò rimandare il lavoro di traduzione indeterminatamente. :D []

Comments Nessun Commento »

Pochi giorni fa è stato rilascio il primo Service Pack per Visual Studio 2010. A questo indirizzo trovate il web installer ( qui invece la iso da 1,5GB ). Quelli che hanno installato la beta del SP1 possono tranquillamente fare l'upgrade senza rimuovere la versione precedente.

Il changelog è disponibile a questo indirizzo.

 

Il web installer ci mette tantino a scaricare i 600MB necessari ed in più la procedura di upgrade è piuttosto lenta.

Comments Nessun Commento »

Ebbene sì, tra le mie tante passione c'è un posticino riservato alla fotografia. Oggi vi voglio parlare delle SDK ( Software Development Kit) per fotocamere DSLR Canon EOS. Questo kit contiene tonnellate su tonnellate di API utilizzabili per controllare la reflex Canon EOS da un pc tramite cavo USB. Nel mondo pratico, Canon mette a disposizione miglia di blocchetti LEGO che possono essere combinati dal programmatore per realizzare qualsiasi cosa voglia.

Fortunatamente, Canon non ha fatto la bravata di distribuire queste SDK o ED-SDK ( come le chiamano loro, sono come i francesi voglion cambiare nome a tutto :D ) a pagamento, o limitarne la distribuzione solo a personale autorizzato. Per entrarne in possesso vi basterà compilare un piccolo modulo di richiesta sul sito DIDP di Canon. Compilate la richiesta con attenzione ed in lingua inglese, poi dovrete aspettare qualche giorno ( 2 giorni nel mio casi ) per l'attivazione dell'account.

La documentazione allegata al pacchetto è OTTIMA, sono circa 160 pagine in cui viene spiegato tutto esaustivamente. Troveremo quindi la definizione di tutte le API, di tutti gli errori e di tutti i settaggi della DSLR. In poche parole la BIBBIA del programmatore, in gergo il malloppo vien chiamato "Programming Reference".

C'è però il rovescio della medaglia. Da quel che vedo il servizio non è sfruttatissimo, infatti non esiste nessuna community di sviluppatori Canon, e questo mi lascia un po' perplesso. Sono dell'idea che quando una società rilascia le SDK per un proprio prodotto un nuovo mondo si apra, un mondo di possibilità inesplorate.

Probabilmente molti pensano che tutto il software necessario sia incorporato nella fotocamera, ma io mi chiedo perchè accontentarsi! Quando si può avere di più. Cioè lo dice pure lo slogan, "With Canon, You can".

Ora nei momenti morti, in treno, mi sto leggendo attentamente la documentazione per un futuro progetto ( spero non troppo futuro :D ). Vi dico solo che il tutto verterà sull'astrofotografia. Una sorta di progetto personale e per la Rheticus ( associazione astronomica feltrina e fieramente ne faccio parte, troverete il link a destra della pagina ).

Comments 1 Commento »

Devo proprio dirlo, VBScript è un linguaggio di scripting veramente potente, offre moltissime classe che possono manipolare le impostazioni avanzate del sistema operativo. Oggi ho creato un piccolo VBScript che attiva e disattiva il servizio di Hamachi e la scheda di rete virtuale che crea. Il solito prerequisito è che il servizio "Hamachi2Svc" e la scheda di rete "Hamachi Network Interface" siano disattivi.
Lo script è scaricabile a questo indirizzo.

Comments Nessun Commento »

PunkBuster è un sistema anti-cheating che protegge i giocatori in modalità multiplayer da possibili utenti disonesti che altrimenti userebbero dei bot, aimbot, ecc. Il brutto di questo sistema è che i servizi PnkBstrA e B che permettono il corretto funzionamento del programma restano sempre attivi, e quindi ci troveremmo con due processi inutili nel caso non volessimo giocare a niente. Secondo voi io potevo sprecare ben 4MB di RAM per tale motivo? Ovviamente no.

Proprio per questo motivo ho realizzato 2 piccoli script in VBScript. Il primo avvia i due servizi di PunkBuster, avvia il gioco ( nel mio caso Call of Duty: Modern Warfare ) e quando la sessione di gioco è terminata disattiva i servizi. I prerequisiti per questo plugin sono due. Per prima cosa i servizi PnkBstrA e PnkBstrB devono essere impostati su avvio manuale. Per fare questo andare sui servizi di Windows e cambiate l'avvio dei due servizi da automatico a manuale. Poi dovete editare lo script, modificando il path ( inserendo quello della cartella dove avete installato il gioco ) e modificare il nome dell'exe di avvio del gioco.

Il secondo script ( quello che uso io ) è molto più semplice e attiva o disattiva i due servizi con un semplice click. Anche questo necessita che i servizi siano impostati su avvio manuale.

Gli script sono liberamente consultabili e modificabili. Forse non sono perfetti, ma funzionano. Inoltre questa è la prima volta che mi cimento con VBScript. =)

Ecco gli indirizzi per il download. ;)

VBScript-punkbuster-1.1 (13/02/2010)

VBScript-punkbuster-1.0 (15/02/2010)

UPDATE 2010/02/15

Ho modificato leggermente gli script. Ho notato che il servizio PunkBusterB dopo essere spento ritorna in modalità automatica, quindo questo nuovo script lo utilizza e poi lo rimette in modalità manuale. Inoltre ho aggiunto 2 popup, in modo che l'utente sappia cosa sta realmente facendo lo script. Ecco qua la nuova versione.

Comments Nessun Commento »

Evidentemente non ho niente di meglio da fare nel giorno di natale. :) Vediamo un po' a cosa serve questo algoritmo.
Se avete un po' di basi di programmazione sapreste che scambiare il valore contenuto in due variabili è un operazione comunissima. Il modo più semplice per effettuare questa operazione è di usare una variabile d'appoggio per contenere uno dei due valori e poi fare lo scambio.

tmp := A
A := B
B := tmp

Direi quasi banale, no? Senonché questo modo prevede la creazione di una variabile temporanea. Esiste tuttavia un algoritmo che fa lo stesso lavoro e non richiede nessuna variabile temporanea. Sto parlando dello Xor Swap, il nome deriva appunto da scambio con OR esclusive ( operazione bit a bit XOR ). Vediamo l'algoritmo:

X := X XOR Y
Y := X XOR Y
X := X XOR Y

Il bello di questo algoritmo è l'efficienza e la facilità nel ricordarlo. Vediamone un'implementazione in Java ed in C.

public static void main(String[] args)
{
	int x = 10;
	int y = 20;
	System.out.println("x = " + x + " y = " + y);

	x = x^y;
	y = x^y;
	x = x^y;

	System.out.println("x = " + x + " y = " + y);
} //[main]
void xorSwap (int *x, int *y)
 {
	 *x ^= *y;
	 *y ^= *x;
	 *x ^= *y;
 }

Comments Nessun Commento »

Le operazioni che coinvolgono i file sul C ogni tanto possono dare qualche problemuccio, ho quindi realizzato questa interfaccia, con lo scopo di facilitare la gestione dei file. Ovviamente se siete dei guru in C questa interfaccia non vi servirà praticamente a niente :D

Per poterla utilizzare basterà copiare il file .c e .h nella cartella in cui si troveranno i file che utilizzeranno le funzioni messe a disposizione dall'interfaccia. Basterà poi includere il file .h nel vostro progetto e potrete usare tutte le funzioni qui elencate:

int FI_INIT ( FI_FILE *file, char *fname, long size );
int FI_OPEN ( FI_FILE *file );
int FI_CLOSE ( FI_FILE *file );
int FI_WRITE ( FI_FILE *file , void *userData );
int FI_READ ( FI_FILE *file , void *userData );
int FI_SEEK ( FI_FILE *file , long rec, int pos );
int FI_EOF ( FI_FILE *file );

Nel file FInt.h ( FInt = File Interface =D ) troverete la spiegazione ed un esempio di cosa fa ciascuna funzione.

Ultima cosa, io l'interfaccia la ho realizzata utilizzando il Dev-c++, dovrebbe andare anche con gcc e altri compilatori.

rar_icon FInt.rar

Comments Nessun Commento »