Tauon Barcadero

Archive for the ‘computer’ Category

Ip pubblico con fastweb (metter su un server)

with 34 comments

Il triste passato

Noi utenti fastweb siamo da sempre stati costretti a dimenticarci della possibilità di metter su un piccolo server web  o ftp, o di giocare a svariati giochi multiplayer, se non affidandoci a software di tunneling come hamachi, remobo ecc… e di usare decentemente i vari programmi di file sharing. Questo per colpa del modo in cui era, ed è ancora organizzata per la maggior parte, la rete fastweb, che non collega direttamente i nostri computer a internet (come fanno gli altri provider) attraverso un ip pubblico ma li “rinchiude” invece in una MAN e attraverso una tecnica chiamata NAT permette la comunicazione con internet. Risultato è che noi possiamo tranquillamente collegarci a qualsiasi computer su internet ma un computer collegato a internet non può collegarsi direttamente al nostro.  Questo fino ad ora.

Fastweb oggi

I nuovi clienti e in genere anche quelli che hanno cambiato il proprio HAG fastweb da poco non sono più connessi alla vecchia rete di fastweb, ma il loro HAG(che funziona anche da router) riceve un indirizzo ip esterno, cioè è collegato direttamente a internet. Il nostro computer non è comunque collegato a internet direttamente, infatti i programmi che prima non funzionavano continueranno a non funzionare, questo perchè è necessario eseguire un port forwarding sull HAG. In parole povere dobbiamo dire all HAG di lasciare aperte determinate porte in modo che il traffico da e verso internet che arriva su quelle porte venga spedito al nostro pc, il risultato è che il nostro computer è direttamente collegato a internet su quelle porte(il router dell HAG si occupa infatti di tutto il routing dei pacchetti da internet al nostro pc).

Leggi il seguito di questo post »

Written by barcadero

22 ottobre 2012 at 7:00 pm

Automi cellulari unidimensionali

with 3 comments

Automi di Wolfram

Gli automi cellulari unidimensionali sono uno degli esempi più ecclatanti di quanto delle regole di base molto semplici possano portare alla costruzione di pattern anche molto complicati, in special modo qui si parlerà degli automi studiati da Stephen Wolfram intorno agli inizi degli anni 80.

Regola 129

Gli automi sono distribuiti su una riga, da cui la classificazione di automi monodimensionali, e ognuno di essi può assumere due stati differenti rappresentabili con 1 e 0(bianco e nero). Data una configurazione di partenza della riga, la generazione successiva viene calcolata in modo dipendente dalla riga precedente attraverso le regole mostrate nell’immagine:

spiegazione regole generazione successiva Leggi il seguito di questo post »

Written by barcadero

8 agosto 2011 at 2:56 pm

La formica di Langton

leave a comment »

Un’altro automa cellulare

Come Life di Conway, anche la formica di Langton è un automa cellulare a stati finiti, ovvero possiamo immaginarlo come un “essere vivente” che segue alcune regole preimpostate e in base a queste si evolve. In questo caso particolare, la formica si trova su di una griglia bidimensionale(una matrice) in cui ogni casella(elemento della matrice) può assumere i valori “1” o bianco e “0” o nero. Essa può girarsi di 90 gradi per volta a sinistra o a destra e può avanzare di una casella per iterazione.

Immagine della formica di langton

Formica di Langton

Leggi il seguito di questo post »

Written by barcadero

15 marzo 2011 at 6:32 pm

Programmare il gioco della vita di Conway

with 2 comments

L’automa cellulare di Conway

Il gioco della vita è un famosissimo automa cellulare elaborato dal matematico John Conway negli anni sessanta;  si tratta sostanzialmente di una griglia costituita da celle e ognuna di esse può essere o viva o morta(piena o vuota). Data una situazione iniziale della griglia, le successive iterazioni dell’algoritmo seguono delle regole semplicissime per decidere quali celle si devono accendere( nascere o continuare a vivere ) e quali spegnere( morire ), a seconda del numero di “vicini” che si trovano nel quadrato 3×3 con centro nella cella considerata.

  • Una cella vuota diventa piena( nasce ) se  ha 3 vicini
  • Una cella piena sopravvive se ha 2 o 3 vicini, altrimenti muore per solitudine o sovrappopolazione.

Glider Cannon image

(Un cannone di “glider” di Gosper)

L’implementazione

L’implementazione è scritta in C++ e per la parte grafica, che comprende la creazione della finestra, il disegno della griglia e delle celle, è stata usata la libreria SDL.

Per tracciare le linee della griglia è stata usata SDL_gfx, un’estensione di SDL che permette il disegno di primitive 2D ben più complesse delle semplici linee.

Il codice sorgente può essere scaricato QUI. Un binario per linux compilato con CodeBlocks può essere scaricato QUI.

Leggi il seguito di questo post »

Written by barcadero

6 marzo 2011 at 10:58 pm

Un semplice algoritmo genetico

with 2 comments

Cosa è un algoritmo genetico?

Un algoritmo genetico è, nella sua definizione più generica, un metodo di ricerca euristico di una soluzione a un dato problema usando tecniche che si ispirano a quelle della selezione naturale e dell’evoluzione darwiniane.

Si parte creando una popolazione di individui, ciascuno di questi rappresenta una soluzione al problema da risolvere codificata in una stringa, detta gene; nella prima generazione i geni vengono generati in modo casuale. A ogni iterazione dell’algoritmo si rimescolano i geni tra i vari individui e definita una funzione detta fitness(), che restituisce la bontà di un certo individuo, ovvero un valore numerico che misura la sua capacità di risolvere il dato problema, si selezionano ad ogni iterazione gli individui migliori ed i loro geni vengono mescolati a quelli di nuovi individui generati dalla funzione che si occupa del crossing-over, ovvero del rimescolamento casuale dei geni di individui già esistenti per crearne di nuovi. Questo procedimento porta, in genere, a ottenere un’individuo con valore di fitness molto alto e quindi capace di risolvere in modo “ottimizzato” il dato problema. Non trattandosi di un procedimento strettamente rigoroso non sempre questo succede, ma si tratta sicuramente di un metodo interessante e potente che rivela le sue capacità soprattutto nell’ottimizzazione per esempio delle interfacce grafiche, dei modelli che operano all’interno di simulazioni fisiche e naturalmente nella programmazione genetica.

Un problema semplice semplice da risolvere

Ora vediamo una mia implementazione in C++ di questo algoritmo per un problema banale come trovare 4 numeri compresi tra 0 e 10 che abbiano somma massima, si lo so, non serve una algoritmo genetico per capirlo, la combinazione giusta è 10 + 10 + 10 + 10 = 40, ma volete mettere il fatto di arrivarci in un modo completamente fuori dal comune?

L’implementazione

Per scarica l’intero sorgente fare click QUI.

Definiamo subito alcune costanti globali dentro a un namespace anonimo, in modo da limitarne la visibilità al solo file in questione:

namespace {
 const int GENE_DIM = 4;                //numero di geni
 const int POPULATION_DIM = 50;        //numero di individui della popolazione
 const int MAX_FITNESS = 40;         //fitness da raggiungere per fermare algoritmo
}

Iniziamo col definire una struttura C++ che rappresenti il singolo individuo:

struct Individuo {

int gene[ GENE_DIM ];

 //costruttore: azzera i geni
 Individuo();

 //assegna valori casuali a gene
 void ramdomize_gene();

 //funzione che misura la bontà di un individuo
 int fitness() const;

 //stampa il gene
 void print() const;

};

Leggi il seguito di questo post »

Written by barcadero

3 marzo 2011 at 10:44 pm

Html 5 – Le novità

leave a comment »

Di HTML 5 se ne sente parlare da parecchio tempo, lo standard non è ancora stato completato e i siti che lo adoperano sono ancora pochi, escludendo quei pochi innovatori/artisti/coder ch hanno creato applicazioni dimostrative che fanno uso delle “capacità” di questo linguaggio di markup, che si distanzia notevolmente da  HTML4.

Il lavoro di revisione, anche se è più opportuno dire riprogettazione, è portato avanti dal WHATWG(Web Hypertext Application Technology Working Group) e dal W3C(WWW Consortium).

I due gruppi che stanno creando il futuro del web si sono fusi nel 2006: il primo, fondata da Apple, Mozilla ed Opera, si occupava di form e applicazione web, il secondo invece diede forma a XHTML, un’evoluzione del HTML basato sul linguaggio Xml, e ad’oggi il linguaggio più usato dai webmaster professionisti.

Leggi il seguito di questo post »

Written by barcadero

16 dicembre 2010 at 7:56 pm

Pubblicato su computer, html css php

Tagged with