This is a test with Word.

Solitamente non do molta importanza alle catene di mail che arrivano tramite MSN, perchè spesso non fanno altro che arrecare fastidio e parlare di tematiche davvero stupide e insignificanti. Delle volte però, qualche mail è interessante e degna di nota, sopratutto per l’importanza che porta con se. Mi è capitato infatti, di ricevere mail sulla catastrofe che è sempre più viva in certi paesi dove uccidono animali in via di estinzione solo per scopi di lucro; credo che sia giusto denunciare questi fatti, al quanto crudeli e ingiusti. Grazie alla rete possiamo farci un’unica voce, portante di notizie e di informazione. E’ l’informazione che può salvare il nostro paese, ma anche il mondo intero, però solo quella vera, solo la vera informazione.

Quello di cui voglio parlare in questo articolo riguarda una verità molto attuale, a cui sono riuscito a dare più importanza dopo aver letto una mail, proprio una arrivatami tramite MSN. La mail, in parole povere, parla della storia di una ranocchia, che messa in un pentolone d’acqua da degli uomini, è rimasta la a bollire. Chiaramente l’acqua andava riscaldandosi lentamente, e fino ad un certo punto la rana quasi che provava piacere al riscaldamento dell’acqua; man mano che l’acqua andava riscaldando però, la rana perdeva le forze e non si accorgeva di cosa stava accadendo, fino al punto di bollire e morire. Se la rana fosse stata messa d’impatto nell’acqua bollente, con un balzo tipico delle sue caratteristiche, sarebbe riuscita a uscirne fuori e salvarsi.

Quello che si vuole sottolineare, è di come l’umanità si stia piano piano facendo incantesimare da una serie di fattori e di modi di vivere, a cui non si da più peso, perchè facenti parte della nostra vita. Il punto centale da sottolineare però, è che non riusciamo a dare importanza a certe cose solo perchè i cambiamenti, o le eventuali cause, sono molto lente e decisamente piccole che non riusciamo a scindere l’importanza e la loro gravità. Alcune cose che in passato potevano portate scandalo e sdegno adesso vengono accettate come se niente fosse. Accettiamo anche tutte le cose negative che ogni giorni i media ci sbattono in faccia grazie ai TG, i giornali e gli altri mezzi di informazioni. Questo tartassamento di notize ci lavano il cervello, e non facciamo altro che prepararci a un mondo peggiore, che già abbiamo cominciato a vivere. E’ decisamente un cammino lento e inosservato, verso la deriva.. verso la fine della rana!

Daltronde, anche il grande Eintain diceva che l’uomo avrebbe fatto la fine che si sarebbe meritato.

In questo post creiamo una semplice applicazione in C++ sfruttando le librerie del framework Qt. Precisiamo che le interfaccie grafiche possono essere create per mezzo dell’ausilio dell’apposito Qt Designer, fornito sempre dalla trolltech, ma noi realizziamo tutto via codice, in maniera comunque semplice e veloce. La prima cosa da fare è includere tutti i file di header di cui si serve la nostra applicazione

#include <QApplication> //Classe per l’applicazzione, necessaria in qualsiasi programma

#include <QPushButton> //Classe per il bottone della finestra

#include <QWidget> //Classe per la form


Dopodiché andiamo a creare la nostra funzione principale main, il classico punto di ingresso del nostro programma.

int main(int argc, char *argv[])

{

Dentro alla funziona main, creiamo un’istanza della classe QApplication, che rappresenta la nostra applicazione, e che è sempre necessaria in qualsiasi programma realizzato con Qt. Come parametri di ingresso, passiamo gli stessi parametri che riceviamo tramite la funzione main, ovvero argc e argv.

QApplication a(argc, argv);

A questo punto creiamo la nostra form, ovvero l’interfaccia grafica (la finestra) che rappresenta la nostra applicazione e che conterrà i vari widgets (bottoni, label, etc…). Inoltre diamo alla form una dimensione in pixel di 200×200.

QWidget w;

w.resize(200, 200);

A tal punto, creiamo un bottone, che ci servirà come metto per chiudere la nostra applicazione. Per farlo instanziamo la classe QPushButton. Instanziando la classe, diamo come parametri al suo costruttore il nome che sarà visualizzato nel tasto (primo parametro) e l’indirizzo dell’oggetto che ospita il nostro bottone, ovvero la form (secondo parametro). Poi, diamo anche le dimensioni di larghezza e altezza del tasto (primo e secondo parametro) e la posizione sulla form (terzo e quarto parametro); il tutto grazie alla funzione setGeometry(…);

QPushButton btn(“Esci”, &w);

btn.setGeometry(50, 50, 85, 85);

Adesso, non ci resta che rendere visibile la nostra interfaccia grafica, associare un’azione al bottone (ovvero quella di chiudere l’applicazione) e infine mandiamo in esecuzione l’applicazione, ovvero l’oggetto a, instanziato all’inizio dalla classe QApplication.

QObject::connect(&btn, SIGNAL(clicked()), &a, SLOT(quit()));

return a.exec();

}

L’azione al bottone, come potete vedere dal codice soprastante, viene data per mezzo l’uso dei SIGNALS e SLOTS, che per spiegarli in maniera efficiente avremmo bisogno di un altro articolo abbastanza lungo. In poche parole vi basta sapere che in quel caso, il segnale è mandato dal bottone, e lo slot ricevente è l’applicazione, che è proprio colei che riceve il segnale di chiusura.

Provate quindi a unire tutte le righe di codice in un unico file .cpp ed eseguirlo tramite con Ctrl+R se state usando QT Creator IDE, oppure lanciate i seguenti comandi una volta posizionati dentro la cartella del progetto:

qmake -project

qmake

make


Quindi, lanciate l’applicazione, e notate l’effetto finale ;)

Come forse molti di voi sapranno è da un bel pò di tempo uscita una nuova versione del famoso framework di librerie per lo sviluppo di applicativi multipiattaforma. Sto parlando di Qt giunto alla versione 4.4 che ha portato molte migliorie e sopratutto novità! Non sto ad entrare nei dettagli tecnici ma passo subito al dunque; molti neofiti del settore possono scoraggiarsi nell’usare queste librerie assieme al linguaggio C++ per il semplice motivo che raggiungere un buon prodotto finale risulta più faticoso rispetto a quanto possa esserlo usando Visual Studio e linguaggio come il Visual Basic. Ma non scoraggiatevi con Qt avete ormai a disposizione tutto quello di cui c’è bisogno. Esiste la versione Open Source, che vi permette di sfruttare tutta la potenza di tali librerie a costo 0, con la sola imposizione di creare software esclusivamente Open Source e non commerciale, per quello bisogna comprarle. Inoltre il framework vi offre tante funzioni e comodità che aiutano nello sviluppo di software. Per sviluppare con Qt potete godere di questi componenti:

  1. Librerie Qt (per Windows, Linux o MacOS) scaricabili dal sito ufficiale
  2. Qt Designer (incluso nell’istaller per Windows e separatamente per altri OS) scaricabile sempre dal sito ufficiale.
  3. Qt Assistant (incluso nell’istaller per Windows e separatamente per altri OS) che vi aiuterà come riferimento al framework, diciamo una sorta di MSDN.
  4. Qt Creator è un IDE (es. Visual Studio, per capirci) che ci permette di sviluppare con più comodità, evitando di lavoare quasi esclusivamenet solo via codice, come avveniva fino a tempo fa. La versione è ancora ALPHA, e la release ufficiale stabile è prevista con l’uscita di Qt 4.5; è disponibile anche una versione di un IDE chiamato QDevelop che non è creato dalla società che ha sviluppato Qt, ma che risulta comunque valido (non l’ho mai provato).

Chi usa Qt?
Bene, questa domanda ha una risposta che a molti lettori dovrebbe dare una certa fiducia. Qt è usato da: Adobe, Skype Limited, Firefox (in furuto), VCL Media Player (partendo dall’ultima versione), Tor, KDE (l’intero ambiente desktop di molte distro Linux), e altri ancora…

Inoltre..
Qt è disponibile per qualsiasi piattaforma dekstop come Windows, Linux e MacOS. Le applicazioni finali per cui, saranno facilmente trasportabili da una piattaforma all’altra con poche modifiche. In più, la nuova versione è approdata anche su dispositivi mobili, come cellulari che usano Symbian come OS.

Una notazione importantissima: già dalle ultime versioni di Qt, arrivando all’attuale 4.4 è possibile utilizzarle con tanti linguaggi di programmazione, senza soffermarci per forza al C++. Infatti, Qt è interfacciabile anche con Java, Python e Ruby (se non erro).

Tale framework è oggi giorno sponsorizzato da tanti grossi del settore come: Epson, Google, AMD, Volvo, Philips…

Curiosità: la versione Estesa di Qt (quella commerciale) permette anche l’interfacciamente con Visual Studio).

Non sarà la perfezione, non saranno veloci come la luce, ma non si può dire che siano un cattivo prodotto

Il sito ufficiale: http://trolltech.com/products

Sanihelp.it (fonte) – Chi passa ore in ufficio davanti al pc non sarà felice di sentire la dichiarazione di Giulio Basoccu, chirurgo estetico e docente a La Sapienza di Roma: «Il computer, se usato tutti i giorni e per molte ore, invecchia il viso. Fa venire le borse sotto gli occhi, spegne il colorito della pelle e i segni dell’invecchiamento sono più visibili».

«Dall’osservazione di un campione di 300 donne tra i 30 e i 40 anni che si sono rivolte al nostro studio abbiamo notato che due su tre passavano ogni giorno dalle cinque alle otto ore fisse davanti a un pc. E tutte lamentavano gli stessi problemi. Profonde occhiaie, rughe più accentuate intorno e tra gli occhi, pelle disidratata, colorito giallastro».

«Trascorrere molte ore davanti a un computerrappresenta comunque uno stress fisico, anche se si sta seduti. Gli occhi si stancano, c’è bisogno di concentrazione e quindi si assumono involontariamente posizioni di alcune parti del viso che contribuiscono a segnare la pelle. Quando ci concentriamo aggrottiamo la fronte e, senza volerlo, forziamo le rughe tra gli occhi e quelle della fronte stessa. Il fatto di stare a lungo in un luogo chiuso, d’estate con aria condizionata e d’inverno con il riscaldamento, aumenta la disidratazione della pelle».

Volevo postare questa intervista fatta a Dario Fo da beppegrillo.it. L’intervista parla prevalentemente della scuola, della situazione unviersitaria e del governo attuale.

Eccoci con un altro post sul linguaggio C++. In questo articolo parlerò degli indirizzi e dei parametri delle funzioni. Come credo sapete, il C++ come il C permette due metodi per passare dei parametri a una funzione: per valore e per indirizzo. Il passaggio di parametri per valore, crea una copia del dato che si sta passando come parametro, di conseguenza non si agisce effettiamente sull’indirizzo in cui risidere il dato. Il passaggio per indirizzo invece, fa lavorare la funzione direttamente sull’indirizzo dove risidere il dato. Il C metteva a disposizione un metodo per far ciò, che era più manuale. Ma il C++, oltre a supportare quella metodologia, usa anche una nuova pratica, che risulta anche meno complessa, più automatica, elegante e semplice. Vediamole con un esempio, l’utilizzo. Non spiego altro, perchè già questo argomento è indirizzato non ai soli principianti, ma agli utenti medi, o comunque a gente che studia seriamente il C++, per cui il codice assortito di commenti dovrebbe bastare a rendere l’idea ;)

#include <cstdlib>
#include <iostream>

using namespace std;

void Swap(int &i, int &j);
void SSwap(int *p);

int main(int argc, char *argv[])
{
int a, b, c, d, e;

a = 1;
b = 2;
c = 3;
d = 4;

//Usiamo la funzione Swap() – Stile C++
cout << “A e B: “ << a << ” “ << b << endl;
Swap(a, b);
cout << “A e B con Swap: “ << a << ” “ << b << “\n\n”;

cout << “C e D: ” << a << ” ” << b << endl;
Swap(c, d);
cout << “C e D con Swap: “ << c << ” “ << d << “\n\n” << “* * *” << “\n\n”;

//Usiamo la funzione SSwap() – Veccio stile C manuale
e = 5;
cout << “E: ” << e << endl;
SSwap(&e);
cout << “E con SSwap: “ << e << endl;

getchar();
return EXIT_SUCCESS;
}

void Swap(int &i, int &j)
{

//esegue un’inversione dei valori tra le variabili
int t;
t = i;
i = j;
j = t;

/* Nello stile C++ non abbiamo bisogno di usare l’operatore *, basta dichiarare
i parametri con l’operatore &, e quindi diamo come parametri direttamente gli
indirizzi. */

}

void SSwap(int *p)
{

//Esegue un’inversione di segno della variabile
*p = -*p;
/* Si noti che in questa funzione dobbiamo dire che come parametro accettiamo
un puntatore. Nell’operare con i dati, abbiamo bisogno di usare l’operatore
*, che indica “all’indirizzo di”, quindi agisce sul valore contenuto dall’indirizzo.
Questo è il contrario di quanto avviene sopra, nello stile del C++ */

}

Si provi a compilare e eseguire il codice ;)

Molto spesso il problema di una piccola o grande azienda è sempre la scelta di una buona sicurezza, che non potrà mai essere al 100% affidabile, ma che conta molto sul piano difensivo dei sistemi informatici. Questo problema oggi giorno, è molto importante anche per un privato, dato che i virus e i software maligni sono sempre in continuo aumento. Per cui è buona norma usare sempre e comunque un buon antivirus. In questo post citerò i 4 migliori antivirus a mio parere. Il giudizio è dato da:

  1. Pareri personali
  2. Classifiche varie e statistiche
  3. Diffusione nei sistemi

Ecco quindi i primi due Antivirus:

  1. Kaspersky Antivirus: da molti è definito il migliore, e anche in questo post come potrete vedere èal primo posto. E’ distribuito in licenza shareware
  2. NOD32: Al secondo posto abbiamo questo ottimo antivirus. Veloce, leggero, potente.. costituisce uno dei migliori antivirus in tutto e per tutto, che ha ricevuto molti titoli di riconoscimenti nel 2007. Anch’esso è shareware.
  3. Ed ecco gli ultimi tre tutti a pari livello, senza contare i puntini sulle i. Parliamo di Avast, AVG e Avira AntiVir 8. Sono tutti freeware e danno un’ottima difesa di base sui maggiori pericoli di malware.

Spero di aver reso l’idea ;)

In questo articolo illustriamo un esempio e una spiegazione esaustiva ma concisa sulle funzioni inline in C++. Partò dalla presupposizione che sappiate già le basi del C e del C++, per cui vado subito all’esempio pratico, per descriverne le caratteristiche e varie:

//—————————————————————————

/* Funzioni inline */

//—————————————————————————

#include <stdio.h>
#include <iostream>

using namespace std;

inline int max(int a, int b)
{
return a > b ? a : b;
}

int main(int argc, char* argv[])
{
cout << max(10, 20);
cout << ” ” << max(99, 88);

getchar();
return 0;
}
//—————————————————————————

La funzione inline si dichiara antecedendo appunto la parola chiave inline che non fa altro che effettuare una richiesta al processore, che può anche teoricamente non accettare tale richiesta. La richiesta chiede appunto, come fa register un trattamento speciale. La funzione viene eseguita ogni volta che è necessario e non richiamata, quindi evitiamo tante operazioni e uso di memoria eccessivo. Le funzioni inline possono essere anche membri di classi. Consiglio comunque di usare tale tipologia di funzioni solo in casi in cui le funzioni sono molto concise o comunque al posto di normali funzione che rallentano di molti le prestazioni del software. C’è da annotare che alcuni compilatori non accetteranno sempre e comunque tutte le funzioni inline, per via di certe eccezzioni, in tal caso, il compilatore tratterà la funzione come una normale funzione!

Lo sviluppo di software è un arte molto complicata, raffinata e affascinante. Sin da sempre sono stati progettati nuovi stili di programmazione atti a garantire una maggiore flessibilità del linguaggio e una gestione del codice ottimale. Pensiamo al progresso dal linguaggio macchina, all’assembly, al codice strutturato sino alla OOP. Però, man mano che i tempo vanno cambiando, corre sempre di più il bisogno di creare software non a livello console, bensì grafico. Malgrado sia possibile creare un software con la grafica più svariata che vogliamo, e in tanti linguaggi di programmazione (sempre per mezzo di librerie grafiche) in questo articolo parliamo dei software grafici in C e C++, introducento i vari framework principali per il software grafico, su Windows e su Linux.

Iniziamo col dire che in C è possibile scrivere GUI (Grapich User Interface) ma non è consigliato, perchè la maggior parte delle librerie in circolazione è disponibile solo per C++ e non per il C, dato che sono destinate a essere usate per la programmazione OOP. Di conseguenza, se siete su Windows per esempio, e volete creare finestre grafiche potete affidarvi alle API o comunque gestire tutto a manina. Potreste anche trovare librerie o robe simili, ma il linguaggio ottimale è il C++, perchè è un linguaggio OOP.

Infatti, ci sarà pure un motivo per cui sia stata inventata la OOP. Parlando a livello molto basso, comprnesibile da tutti, possiamo dire che essa ci permette di pensare “tutto” come oggetti, e di conseguenza anche i vari componenti di una finestra grafica. In questo modo, grazie alle classi che sono le astrazioni degli oggetti, possiamo gestire al meglio il codice.

Ma non soffermiamoci troppo sulla teoria, quella è qualcosa che dobbiamo studiare da noi, parliamo invece di ciò che tratta il post, i framework disonibli! Anticipiano comunque che tutti i framework hanno degli stili di default per creare finestre, quindi non potrete farle di forme a vostro piacimento, se non con modifiche varie al codice.

Ecco i principali framework:

  • Qt - Qt è uuna grande libreria che permette di creare interfaccia utente tramite dei widgets, che sono quelli che compongono essenzialmente anche le altre librerie che vedremo in seguito. Esistono due versione del framework Qt: una opensoruce e un’altra shareware. La prima può essere usata solo per sviluppare software open, la seconda per qualsiasi utilizzo. Il framework di Qt offre anche un Designer per creare le finestre in maniera visuale, ed evitare la fatica del codice. Punto di forza è che sono molto potenti, e sopratutto multipiattaforma, ovvero sono disponibili sia per Windows che per Linux. Esistono anche altre versione per altri OS, come per Mac OS. Sono semplici da usare, ma per un principiante non sono il massimo!
  • Visual C++ – E’ un IDE offerto dalla Microsoft sotto due licenze: una freeware (limitata) e una sharewre (completa). Esso permette di creare software, compilarlo (ha un compilatore interno di proprietà della Microsoft) e tanto altro. Il framework che usa per creare le interfaccie grafiche è componeto dalle librerie MFC che includono tutte le funzioni delle API. Di conseguenza dobbiamo dire però, che l’uso non è affatto scemplice, e le applicazioni uscenti saranno solo eseguibili su sistemi Windows. Inoltre le ultime versioni permettono di creare anche applicazioni C++/CLI ovvero sfruttando il .NET Framework di Microsoft. Ciò può aiutare la portabilità del softwre finale anche su Linux, dove esiste Mono che è un porting del .NET Framework. Attualmente è supportato fino alla versione 2.0!
  • CodeGear C++ Builder 2007 – Questo ambiente è sviluppato dalla Borland Software Corporation ed è adatto per sviluppare GUI sotto Windows XP/Vista. Esiste la versione precedente che supporta anche Windows 98. E’ importante dire che questo ambiente semplifica molto la gestione e la creazione di GUI sotto Windows rispetto a Visual C++ e le MFC, che richiedono tempo e compotenza! E’ veloce, ma non è freeware. L’unica versione è commerciale. Possiede un compilatore proprio, sempre sviluppato dalla Borland. E’ possibile utilizzare due librerie: una integra le API di Windows e altre funzionalità, l’altra include la funzionalità con Linux, per cui sarà possibilità di esportare il prodotto finale.

Esistono anche altri prodotti che permettono di creare GUI, ma questo sono a mio parere i migliori e i più gettonati. Il primo utile per la portatilità del codice, il secondo per ambienti Windows, e il terzo per avere tempo di sviluppo e un ottima gestionabilità dei progetti (sempre per Windows).

Questi di default permettono di creare finestre nello stesso stile di cui sono le finestre del sistema operativo, se si vuole, si potrebbe grazie ad altre librerie creare softwre grafico personalizzato.

Per informazioni o chiarimenti o critiche sull’articolo, lasciate pure un commento!

Post più letti

Blog Stats

  • 1,458 hits

 

Novembre: 2009
L M M G V S D
« Dic    
 1
2345678
9101112131415
16171819202122
23242526272829
30