Crea sito
Category Archives: Lezioni di informatica
Vulnerabilità in Adobe Flash Player: “0-day, ecco come risolvere!”
Flash2

Dopo aver attaccato con successo i server di Hacking Team, alcuni esperti del settore della sicurezza informatica, hanno notato che nel materiale confiscato erano presenti delle BugList di Adobe Flash Player, infrazione che hanno immediatamente passato alla software house statunitense, che ha riscontrato la presenza di un “0-day”.

L’ Adobe Systema ha immediatamente provveduto ad aggiornare il plugin eliminando questa falla, e per questo consigliamo a tutti voi di scaricare l’ ultima versione di Adobe Flash Player, da alcune ore disponibile al download dal sito della casa produttrice (v.18.0..203):

Adobe-Flash-PlayerClicca sul’ immagine per scaricare l’ ultima versione.

Per gli utenti Linux che hanno scelto di installare Adobe preferendolo ad altre alternative opensource propongo di disabilitare temporaneamente il PLUGIN e di aspettare la revisione di sicurezza della versione 12, che arriverà credo nel giro di un paio di settimane, oppure di installare FLOWPlayer, un player Flash completamente opensource.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
ScummVM : “Avventure grafiche su ogni piattaforma!”

Per chi come me, è legato ai tanti amati videogiochi del passato, che riguardano principalmente le avventure grafiche (Punta e clicca), e vuole rispolverare qualche vecchio capitolo che ancora oggi si sa far valere, non può non avere installato sul proprio PC il software ScummVM che voglio illustrarvi in questo articolo.

ScummVM-by-godprobe

ScummVM è un software opensource sviluppato dal omonimo Team, e ha come funzione principale, l’ emulazione del’ ambiente software sulla quale giravano questi vecchi videogiochi. Questo software è necessario, poiché la maggior parte dei sistemi operativi moderni nonostante sia possibile impostare la retro-compatibilità dei software, in molti di essi le librerie che utilizza il gioco sono proprio incompatibili.

Questo software è compatibile per la maggior parte dei sistemi operativi anche Mobile!

Addirittura è stato scritto il porting anche per i sistemi Sony Play Station 3.

Per poter scaricare il software adatto per il vostro sistema operativo basta collegarvi a questa pagina e selezionare quello desiderato. Anche se per gli utenti GNU/Linux consiglio di scaricarlo direttamente dal vostro gestore dei pacchetti (APT, YUM ecc.) poiché in molte distribuzioni fa già parte dei Repository ufficiali.

Ma ora vediamo come si presenta il software!

Schermata da 2015-02-06 18:00:49

 

 

 

 

 

 

Come potete vedere il software grazie alla GUI già integrata nel pacchetto principale, è molto intuitivo, dato che per aggiungere un gioco basta scompattare il contenuto del CD/DVD al’ interno di una cartella e dargli il percorso dal Bottone “Aggiungi gioco” e anche se possiede un SETUP, il gioco si avvierà senza bisogno di installarlo! “Come potete vedere dalla immagine io ho testato il software con il primo capitolo della saga di BrokenSword”

L’ ambiente è anche molto configurabile, anche se per quanto riguarda la maggior parte dei giochi io suggerisco di selezionare la piattaforma “Windows” come emulazione software dal Bottone “Opzioni”, poiché la maggior parte di questi giochi sono scritti per essere eseguiti su Windows.

Schermata da 2015-02-06 18:05:07

 

 

 

 

 

 

Una volta avviato il gioco si presenta nella seguente maniere, ma c’è anche la possibilità di eseguirlo a schermo intero spuntando la voce nel menù Opzioni!

Detto questo spero che la guida vi sia stata utile… Al prossimo articolo!

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Creare APP Android : “DI cosa ho bisogno?”

Premettendo che esistono svariati Tools e siti web che permettono di creare APP per questo sistema operativo mobile, però consentono di sviluppare Applicazioni molto limitate, sfruttando spesso Template di applicazioni molto famose sullo store di Google.

Android Setup

Ma se volessimo sviluppare un Applicazione innovativa partendo da zero, implementando funzioni completamente personalizzate e via dicendo?

La risposta è: Non è semplice, soprattutto per chi non si è mai dilettato nella programmazione!

Quindi prima d’ iniziare assicuriamoci di possedere almeno alcuni dei seguenti prerequisiti:

  • Minima conoscenza del sistema operativo Android;
  • Conoscenza del linguaggio di programmazione JAVA;
  • Familiarità con l’ ambiente di sviluppo ECLIPSE;
  • Conoscere almeno teoricamente cosa è la JVM (Java Virtual Machine);
  • Computer per la compliazione con una buona capacità di RAM (Almeno 2GB, ne consiglio 8);

Premetto che questa guida è stata Testata su sistemi operativi che fanno parte della famiglia LINUX, ma anche su Windows ho notato che i passaggi sono completamente gli stessi bisogna solo scaricare i pacchetti apositi per quel sistema operativo!!!

Di cosa abbiamo bisogno:

  1. Scaricare ed installare Java Development Kit (JDE) per il nostro sistema operativo (Se avete RED HAT scaricate i file con estenzione .RPM per altri Linux .TAR.GZ);
  2. Scaricare l’ SDK (Software Development Kit per il nostro sistema operativo (Comprende Eclipse e l’ SDK Manager);
  3. Avviare l’ SDK Manager ed installare tutti i pacchetti di qui abbiamo bisogno (Io consiglio Android 5.0 e 4.2)

L’ ultimo passagio è fandamentale, poichè ho notato che nonostante ECLIPSE integri già completamente tutti i PLUGIN di cui abbiamo bisogno per sviluppare le nostre APP andorid, nel software che lancia l’ emulazione del dispositivo Andorid, se non sono stati scaricati i pacchetti appositi, non viene caricata l’ emulazione software della CPU, rendendo impossibile il DEBUG del software.

Ora creiamo il disositivo sulla quale testare i nostri software:

  1. Avviare ECLIPSE;
  2. Andare su FILE e selezionare NEW ANDROID APPLICATION;
  3. Compliare tutti i campi e selezioniamo uno dei sistemi operativi di cui abbiamo scaricato tutti i pacchetti dall’ SDK MANAGER;
  4. Completare il WIZARD;
  5. Cliccare su WINDOWS e ANDROID VIRTUAL DEVICE MANAGER;
  6. Compliare i campi come illustrato di seguito:1
  7. Scrivere la nostra applicazione e testarla tramite (RUN > DEBUG);

ATTENZIONE: La macchina sulla quale è stata testata la guida monta un sistema operativo a 64BIT con ben 8 GB di RAM di cui (1GB dedicato completamente al dispositivo da emulare), ma nonostante questo l’ emulazione del Dispositivo Andorid richiede molto tempo per avviarsi (4-6 Minuti), dopo di chè l’ ho anche testa su macchine meno performanti da 4GB di RAM è i tempi si sono molto allungati!

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Linguaggio C (scrittura del primo programma “Hello World”)

Prima videolezione sulla programmazione strutturata in linguaggio C. In questo video, vedremo come si scrive un programma che stampa a schermo la scritta Hello World.

Nel prossimo video, vedremmo più approfonditamente, la sintassi e la semantica del linguaggio C.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Cosa è una variabile (basi teoriche per la programmazione 4)

Dopo avervi spiegato cos’è un algoritmo e come formalizzarlo, voglio darvi un altro concetto alla base di qualsiasi linguaggio di programmazione, cioè “LA VARIABILE”.

Detta in parole povere, noi possiamo immaginare una variabile come un contenitore, nel quale possiamo mettere “qualsiasi” cosa, però dove ogni volta che immettiamo un nuovo dato quello che c’ era prima viene perso o eliminato.

variabili

Adesso entiamo un po’ nel dettaglio per quanto riguarda il nostro linguaggio di programmazione C:

In questo linguaggio, per poter utilizzare una variabile, essa deve venire dichiarata, ciò significa che noi dobbiamo dire al computer che ad esempio la variabile X è desitanata a contenere un certo tipo di dato.

I tipi di dato elementari del C sono:

  • char (singolo carattere) 8 bit;
  • integer o int in C (numero intero) 32 bit;
  • float (numero reale) 32 bit;
  • double (numero reale a doppia precisione) 64 bit;

quindi da questo possiamo dedurre che per poter dichiarare una variabile di nome A e che possa memorizzare numeri interi, in C dovremmo scrivere “int A”;

A livello informatico, sulle variabili possiamo eseguire una lettura o una scrittura, meglio nota come assegnamento.

Il primo assegnamento di una variabile viene chiamato Inizzializzazione, infatti dall’ esempio che segue possiamo vedere come si dichiara e si inizzializza una variabile allo stesso tempo:

int A=0;

Qui non abbiamo fatto nient’ altro se non dichiarare la variabile A di tipo intero e le abbiamo assegnato il valore zero.

Ora voglio spiegarvi un po’ più nel dettaglio a livello di macchina cosa succede quando si dichiara una variabile;

Il nome di una variabile, non è nint’ altro se non l’ etichetta di una o più locazioni di memoria nell’ interno della RAM (Random Access Memory). Il settore di memoria dove si utilizzano le variabili si chiama “Area di Stack”.

Detto questo non voglio dilungarmi più di tanto, poichè molte cose le spiegerò quando avremmo la necessita di utilizzarle.

Nella prossima lezione spiegerò la costante in informatica.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Teorema di Bohm-Jacopini (basi teoriche per la programmazione 3)

boehm_corrado

Semplicemente conosciuto come teorema di Jacopini, è un teorema alla base dei linguaggi di programmazione struttutara come il C e Pascal.

Questo teorema afferma, che qualsiasi algoritmo, può essere convertito in codice sorgente (linguaggio di programmazione), pseudo-codice e diagramma di flusso, che abbiamo visto nelle precedenti lezioni, mediante il semplice utilizzo di tre strutture, quali la sequenza, l’ alternativa ed il ciclo.

Adesso vediamo più approfonditamente queste tre strutture:

  • La sequenza è un susseguirsi di istruzioni, che verranno eseguite dal calcolatore in maniera sequenziale;
  • L’ alternativa o selezione, è il punto nel quale viene deciso in base a determinate condizioni, se eseguire un istruzione o un altra, ad esempio: 1. Inserisci I | 2. Se I=0 stampa “Uguale zero”; 3. | Se I != 0 stampa “Diverso da zero”
  • Il ciclo, non è nient’ altro se non la ripetizione di istruzioni, finchè non si ferifica una determinata condizione ad esempio: 1. I=0;
    2. Ripeti finchè I < 10 | Stampa I | i=i+1;
    Questo piccolo algoritmo, implementato in codice sorgente, permette di creare un  programma che stampa i primi dieci numeri interi 0,1,2,3,4,5,6,7,8,9;

Un altra cosa importantissima di questo teorema, è che esso cerca di limitare al massimo l’ uso di salti nel codice sorgente di un programma, difatti in molti linguaggi esiste l’ istruzione GO-TO, che permette di saltare in qualsiasi riga o etichetta del codice sorgente.

es;

  1. I=0;
  2. Stampa I;
  3. I=I+1;
  4. Se I<10 Salta a Riga 2;
  5. Altrimenti Esci dal programma;

Questo tecnicamente dovrebbe comportarsi nella stessa maniera del programma che stampa i primi 10 numeri interi, ma mentre nel primo una volta implementato in codice sorgente, andremmo a costruire un ciclo While, nel secondo faremmo ripetere l’ istruzione di stampa e incremento della variabile I, mediante l’ utilizzo di un Salto (GO-TO, in Assembly JMP), che è molto meno pratico.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Diagramma di flusso e pseudo-codifica (basi teoriche per la programmazione 2)

Per motivi di problemi con le immagini, questa lezione ho preferito scriverla in PDF;

algoritmo_600x350

Apri questa lazione

Scusate per il disagio buona visione…

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Algoritmi (basi teoriche per la programmazione 1)

Con questo articolo voglio iniziare una serie di lezioni orientate verso l’ apprendimento della programmazione strutturata, ma in futuro tratteremo anche quella orientata agli oggetti quindi le prime lezioni saranno orientate verso le basi teoriche della programmazione.Nonostante queste lezioni, saranno molto semplificate e mirate conuque alcuni concetti verranno compresi meglio se si hanno delle basi quantomeno sul sistema di numerazione binario, qunindi il mio consiglio è quello di andarsi a studiare questo semplicissimo argomento.

algoritmo

Fatta questa premessa iniziamo questa lezione.

Un algoritmo è una serie finita di passi che occorrono per risolvere un determinato problema detto problema coputabile, che sono quella serie di problemi con cui hanno a che fare di solito i programmatori informatici, ma non solo.

Una delle proprietà di un algoritmo è dettata dal fatto che esso deve essere sviluppato mediante dei passaggi elementari è non deve contenere ambiguità nel linguaggio.

Un esempio banalissimo di algoritmo è la somma di due numeri.

es. di algoritmo per la somma:

  1. Dammi il primo numero;
  2. Dammi il secondo numero;
  3. Esegui la somma tra il primo e il secondo numero;
  4. Scrivi su un fogliettino il risultato;

Adesso andando ad analizzare questo algoritmo, possiamo dedurre che il primo e il secondo numero sono dei parametri di input, cioè qualcosa che viene definito dall’ utente, che sono valori indipendenti dall’ algoritmo, mentre la somma è un parametro di output, cioè un qualcosa che l’ utente vede solamente, senza poter modificare, nel nostro caso un fogliettino sul quale è scritta la somma.

Una cosa importantissima da apprendere sono i metodi che occorrono per formalizzare un algoritmo, che può essere un diagramma di flusso (flow-chart), o tramite la stesura di pseudo-codice, questi sono due argomenti che tratteremo nella lezione successiva, in questo ho deciso solemente di anticipare le loro caratteristiche fondamentali.

Un diagramma di flusso è un linguaggio grafico, che permette di rappresentare il flusso di un algoritmo in modo schematico, tramite l’ utilizzo di figure preimpostate per ogni operazione da eseguire tipo (input, output, iterazioni e calcoli).

Mentre la pseudocodifica, consiste nella stesura di un codice (pseudo-codice), che si interpone tra l’ algoritmo è un codice sorgente di qualsivoglia linguaggio di programmazione.

Ed è di solito scritto nella propria lingua, senza l’ utilizzo di figure convenzionali, ma solo traducendo nella propria lingua i vari cicli o iterazioni presenti in qualsivoglia linguaggio di programmazione.

Es. l’ istruzione While in pseudo codice diventerebbe Esegui finchè.

Spero che questa prima lezione l’ abbiate trovata interessante, nella prossima parleremo dei diarammi a blocchi e della pseudocodifica.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Programma Visuale per la simulazione del Flag Zero

Dopo l’ articolo sulla simulazine del flag zero del microprocessore Intel 8086 scritto in C++, come già anticipato, ho ritenuto opportuno, scrivere anche un programmino in “Forma Visuale”, ed ho scelto il linguaggio Visual C#, sfruttando l’ ambiente di sviluppo Microsoft Visual Studio 2013.

Ecco un esempio sul funzionamento del Software (per poter scaricare il codice sorgente, aprite il video in Youtube, e nella descrizione ho inserito il link del file compresso contentente la cartella del progetto)

Dopo di che per ho anche preferito far vedere anche una simulazione, utilizzando proprio un software che permette di emulare il comportamento del Microprocessore Intel8086, utilizzando il linguaggio Assembly 8086/8088:

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
Simulazione del Flag Zero di un microprocessore

Oggi voglio mostrarvi come simulare un flag in un linguaggio di programmazione ad alto livello.

Il flag che andermmo a simualre è il Flag Zero del microprocessore Intel 8086, che ha il compito di controllare se il risultato di una sottrazione o di una comparazione è uguale a zero.

Nel caso è uguale a zero il flag zero verrà impostato ad 1 altrimenti a 0.

Un esempio in linguaggio Assembly per Intel 8086/8088 e il seguente:

mov ax,1

mov bx,1

cmp ax,bx

ret

in questo caso il flag viene impostato al valore 1.

Adesso partendo dal presupposto che questo flag di default ha il valore di 0, scriviamo il seguente codice c++ (io ho utilizzato il GO-TO per maggiore semplicità, ma consiglio l’ uso del DO-While, poichè utilizzare questo salto è sinonimo di malaprogrammazione):

#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
    loop: //label per il GO-TO
        system(“CLS”);
    bool flag=0; //flag zero
    int a,b;
    cout<<“\t\tInserisci numeri da comparare\n”;
    cout<<“\t\tPer uscire digita primo -0 (meno zero) \n”;
    cout<<“Primo : “;
    cin>>a;
    if(a==-0) return 0; //esce dal programma
    cout<<“Secondo : “;
    cin>>b;
    if(a-b == 0) flag=1; //modifica flag = 1
    if(a-b != 0) flag=0; //modifica flag = 2
    cout<<flag<<endl;
    system(“pause”);
    goto loop; //ritorna alla label LOOP
}

e il risulatato è il seguente:

Programma

io ho utilizzato il linguaggio di programmazione C++, poichè da la possibilità di utilizzare delle variabili Booleane, ma con le dovute accortezze può essere scritto anche in C.

Poi quando avrò un po’ di tempo, scriverò anche una versione Visuale, o con il Visual Basic o con il C#.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

ChatClicca per chattare!+