Ricerca tra la vecchia roba

Genetic Programming

Posted: Gennaio 11th, 2010 | Author: | Filed under: Ci, genetica, Programmazione | 2 Comments »

Succede che giri per la rete e vedi una cosa figa, succede che senti il bisogno impellente di riuscire a farlo anche tu (non sto parlando di fare un figlio con jessica alba) e quindi ti prodighi nel compiere il tuo destino.

Orbene, ho visto questo post in cui l’autore utilizzando algoritmi genetici riesce a riprodurre un disegno della monna lisa usando solo poligoni; non ho guardato il suo codice ma mi pare di aver capito che lo ha fatto in .NET, io l’ho scritto direttamente in C, con interfaccia creata tramite librerie cairo (in realtà uso una mia libreria che infatti va compilata a parte).

Read the rest of this entry »


Comunicazione fra processi e “non aprite quello STREAM”

Posted: Agosto 30th, 2008 | Author: | Filed under: Ci, Programmazione | Commenti disabilitati su Comunicazione fra processi e “non aprite quello STREAM”

Quello che segue è un esempio di codice in cui viene utilizzato l’output di un programma come input di quello principale; viene utilizzato un sistema di pipe(7) per far comunicare la coppia di processi che si originano in seguito ad una fork(2): in particolare questo programma prende come argomento il nome di un file e ne restituisce il checksum effettuatto attraverso il commando da shell md5sum(1). Il codice lo trovate qui.

Quest’altro invece mette in risalto una caratteristica di un sistema operativo nel trattare i file descriptor, cioè gli indici che internamente vengono usati per tenere conto dei file aperti; i file descriptor sono molto importanti siccome nella filosofia degli Unix è che ogni cosa è vista come un file ed in particolare ogni programma al suo avvio ha almeno tre file descriptor (o stream nella terminologia dell’ANSI C) lo standard input, output ed error. Il problema che si può avere è che chiudendo questi file descriptor all’avvio del programma, un eventuale successiva apertura di un file andrebbe ad occupare quelli che precedentemente erano collegato con gli stream standard citati precedentemente (il sistema restituisce il primo file descriptor libero) e se magari avete una routine di logging che cerca di scrivere su qualche stream che pensa aperto, le conseguenze potrebbero essere belle bastarde. Il codice può farvi capire quello che sto cercando di spiegare.