Carlo's profileBlog semiserio di CarloPhotosBlogListsMore Tools Help

Blog


    July 30

    VMManager ovvero "ciò che manca a VMWare Player per diventire VMWare": questo ed altre divagazioni sul mondo dell'emulazione di sistemi operativi

    Ormai VMWare è conosciuto da tutti e, nonostante vi siano alternative valide sul mercato (che vedremo poi nel seguito) rimane il mio favorito.

    Come tutti sapranno VMWare Workstation è a pagamento (è comunque possibile scaricare il software all'indirizzo http://www.vmware.com/download/ws/eval.html dopo essersi registrati ed aver ricevuto via email una Key di installazione che rende il software attivo per 30 giorni). Tuttavia è totalmente free e libera da scaricare (senza scandenze nel suo utilizzo), la versione Player (che è inclusa nella versione completa) all'indirizzo http://www.vmware.com/download/player/. La versione Player come dice il nome stesso consente unicamente di eseguire macchine virtuali già create ma non di crearne nuove tanto meno di modificare quelle esistenti. Dall'uscita della versione Player c'è stato parecchio movimento relativamente all'obiettivo di creare un programma che consentisse tali operazioni. Uno dei siti più interessanti al riguardo è il seguente

    http://www.sanbarrow.com

    Tra le tante cose interessanti (tra le quali spicca il progetto MOA ossia un pacchetto di Plugins per BartPE con l'obiettivo di creare una versione Live di Windows basata su Windows 2003 SP1 o superiori con installato VMWare Workstation 5.5.3) vi è una sezione totalmente dedicata alla spiegazione dettagliata dei vari parametri da usare all'interno di un file ".vmx":

    http://sanbarrow.com/vmx.html

    un file ".vmx" è essenzialmente un file di testo che rappresenta il cuore di una VMWare Virtual Machine: al suo interno si trovano tutte le caratteristiche della macchina virtuale come ad esempio i vari lettori CD collegati, gli Hard Disk presenti , etc... con le caratteristiche dettagliate di ognuno.

    L'altro concetto importante di una VMWare Virtual Machine è quello di Virtual Hard Disk: gli hard disk che compongono una macchina virtuale sono file con estensione VMDK (VMWare Virtual Hard Disk)

    Per quanto riguarda la creazione di file ".vmx", già da tempo è disponibile un servizio online di creazione al seguente indirizzo

    http://www.easyvmx.com/easyvmx.shtml

    Per quanto riguarda la creazione completa di una macchina virtuale ossia la creazione del file ".vmx" ed i vari file ".vmdk" già da tempo è disponibile un pacchetto di applicativi (tra l'altro Open Source con sorgenti in Visual Basic) all'indirizzo

    http://petruska.stardock.net/Software/VMware.html

    Tuttavia la scelta migliore è l'utilizzo di un software che è giunto alla ribalta di recente: si tratta di VMManager

    http://vmmanager.sourceforge.net/

    E' anch'esso Open Source (con sorgenti in Delphi) e nel sito si può trovare la documentazione e vari filmati che ne evidenziano le potenzialità. Il software è un applicativo Win32 scritto in Delphi 2005, ma sono riuscito a compilaro e buildarlo anche nel buon vecchio Delphi 7 (dopo aver opportunamente eliminato dai file .dfm alcune proprietà dei controlli tipiche delle versioni successive di Delphi). Dopo aver fatto alcune prove si può proprio dire che vale l'uguaglianza seguente

    VMManager + VMWare Player = VMWare Workstation
    (FreeWare)    (Freeware)          (a pagamento)

     

    Per finire direi che è opportuno fare una carrellata di quelle che sono le principali opportunità presenti sul mercato in ambito di emulazione di sistemi operativi

    VMWare Workstation
    http://www.vmware.com

    A mio parere la soluzione più performante; disponibile da sempre nelle 2 versioni per Windows e Linux e in fase di completamento (attualmente la RC1) anche la versione denominata Fusion destinata ai sistemi operativi Mac. Supporta l'esecuzione di macchine virtuali basate su Microsoft Windows, Linux, Novel Netware e Sun Solaris (oltre ad altri sistemi tipo ad esempio Ms-DOS e FreeBSD). L'esecuzione di macchine virtuali basate su sistemi operativi Mac non è ufficialmente supportata tuttavia è possibile reperire in rete varie documentazioni al riguardo ed anche macchine virtuali complete dalla rete torrent: in ogni caso bisogna prendere il tutto con la dovuta cautela considerando che il risultato finale è ben lontano dalla perfezione (la Virtual Machine viene eseguita ma con diverse problematiche)

    Microsoft Virtual PC  

    Disponibile nella versione per Windows (
    Virtual PC 2007) e nella versione per Mac (Virtual PC 7). Come si può notare, Virtual PC 2007 è freeware. Virtual PC supporta l'esecuzione di macchine virtuali basate su Microsoft Windows, MS-DOS e OS/2. In ogni caso si può sperimentare l'installazione di altri sistemi operativi come ad esempio Linux 

    Parallels
    http://www.parallels.com/

    Disponibile principalmente nella versione per Windows e Linux (Parallels Workstation) e nella versione per Mac (Parallels Desktop). Supporta l'esecuzione di macchine virtuali basate sulla quasi totalità dei sistemi operativi esistenti

    VirtualBox
    http://www.virtualbox.org

    Notevole software Open Source (sorgenti in C/C++) di recente sviluppo (aggiornato di frequente) disponibile per Windows, Linux e Mac. Supporta l'esecuzione di macchine virtuali basate su un ampio range di sistemi operativi (l'elenco dei sistemi operativi guest supportati è disponibile all'indirizzo http://www.virtualbox.org/wiki/Guest_OSes e come si può notare i sistemi operativi Mac non sono supportati). Lasciano di stucco le sue performance che si avvicinano (ed a volte superano) quelle del blasonato VMWare (anche se comunque non ha tutte le funzionalità e la stabilità di VMWare ... comunque promette davvero bene tenendo conto poi che è anche Open Source) 

       

    July 20

    Graphviz

     

    Graphviz è un ottimo software per la generazione di diagrammi

    http://www.graphviz.org/

    Dato un file di testo coi dati opportunamente elencati (il cosidetto "dot file"), il software restituisce un bel grafico 

    (N.B. il testo nei nodi fa cagare ma è solo perchè ho dovuto ridimensionare l'immagine per farla rientrare nel layout del sito; l'immagine originale restituita da Graphviz è perfetta)

    Il grafico sopra è stato generato da Graphviz partendo dal seguente file di testo

    /* courtesy Ian Darwin and Geoff Collyer, Softquad Inc. */
    digraph unix {
    	size="6,6";
    	node [color=lightblue2, style=filled];
    	"5th Edition" -> "6th Edition";
    	"5th Edition" -> "PWB 1.0";
    	"6th Edition" -> "LSX";
    	"6th Edition" -> "1 BSD";
    	"6th Edition" -> "Mini Unix";
    	"6th Edition" -> "Wollongong";
    	"6th Edition" -> "Interdata";
    	"Interdata" -> "Unix/TS 3.0";
    	"Interdata" -> "PWB 2.0";
    	"Interdata" -> "7th Edition";
    	"7th Edition" -> "8th Edition";
    	"7th Edition" -> "32V";
    	"7th Edition" -> "V7M";
    	"7th Edition" -> "Ultrix-11";
    	"7th Edition" -> "Xenix";
    	"7th Edition" -> "UniPlus+";
    	"V7M" -> "Ultrix-11";
    	"8th Edition" -> "9th Edition";
    	"1 BSD" -> "2 BSD";
    	"2 BSD" -> "2.8 BSD";
    	"2.8 BSD" -> "Ultrix-11";
    	"2.8 BSD" -> "2.9 BSD";
    	"32V" -> "3 BSD";
    	"3 BSD" -> "4 BSD";
    	"4 BSD" -> "4.1 BSD";
    	"4.1 BSD" -> "4.2 BSD";
    	"4.1 BSD" -> "2.8 BSD";
    	"4.1 BSD" -> "8th Edition";
    	"4.2 BSD" -> "4.3 BSD";
    	"4.2 BSD" -> "Ultrix-32";
    	"PWB 1.0" -> "PWB 1.2";
    	"PWB 1.0" -> "USG 1.0";
    	"PWB 1.2" -> "PWB 2.0";
    	"USG 1.0" -> "CB Unix 1";
    	"USG 1.0" -> "USG 2.0";
    	"CB Unix 1" -> "CB Unix 2";
    	"CB Unix 2" -> "CB Unix 3";
    	"CB Unix 3" -> "Unix/TS++";
    	"CB Unix 3" -> "PDP-11 Sys V";
    	"USG 2.0" -> "USG 3.0";
    	"USG 3.0" -> "Unix/TS 3.0";
    	"PWB 2.0" -> "Unix/TS 3.0";
    	"Unix/TS 1.0" -> "Unix/TS 3.0";
    	"Unix/TS 3.0" -> "TS 4.0";
    	"Unix/TS++" -> "TS 4.0";
    	"CB Unix 3" -> "TS 4.0";
    	"TS 4.0" -> "System V.0";
    	"System V.0" -> "System V.2";
    	"System V.2" -> "System V.3";
    }
    

    Vengono supportati svariati formati per l'immagine in output tra cui SVG (Scalable Vector Graphics) : SVG è un linguaggio per descrivere grafici bidimensionali in XML. I file SVG sono compatti e consentono una grafica di alta qualità sul Web e su dispositivi palmari a bassa disponibilità di risorse. Inoltre, SVG supporta scripting ed animazioni, ed è quindi ideale per grafici interattivi: si pensi ad esempio alla possibilità di clicckare su un nodo del diagramma in questione e poter gestire tale evento (ad esempio visualizzando un tooltip informativo oppure mettendo il nodo in questione ingrandito in primo piano, etc...). Altra nota importante è che SVG ha delle ottime capacità di zoom: infatti essendo un formato vettoriale, la chiarezza dell'output grafico rimane costante indipendentemente dal livello di zoom scelto. Per visualizzare file grafici in qesto formato (che in pratica poi significa restituire la rappresentazione grafica dell' XML nel file) si può usare Adobe SVG Viewer , un pacchetto di componenti che è liberamente scaricabile e fornisce integrazione con tutti i Browser tramite appositi plug-in: consente di interagire con immagini SVG ed è richiesto appunto per visualizzare contenuto Web che include SVG; inoltre includendo un controllo ActiveX consente la visualizzazione di file SVG all'interno di qualsiasi applicazione (non solo quindi tramite un Browser).

    Tornando a Graphviz, il software è Open Source e multipiattaforma; il programma si basa su una serie di exe, principalmente i seguenti:

    dot.exe

    neato.exe e fdp.exe

    twopi.exe

    circo.exe

    rimando all'homepage del progetto ed alla sua sezione Documentazione per approfondimenti; stesso discorso vale per il formato "dot" con il quale vanno composti i file di testo da usare come input per la creazione dell'immagine del diagramma corrispondente.

    C'è chi ha pensato bene di creare un oggetto COM per consentire agli sviluppatori Windows di integrare rapidamente nelle proprie applicazioni le funzionalità di generazione di diagrammi fornite da Graphviz: si chiama WinGraphviz ed è anch'esso OpenSource

    http://wingraphviz.sourceforge.net/wingraphviz/

    un ottimo esempio di utilizzo è all'indirizzo seguente:

    http://www.codeproject.com/database/DatabaseVisualization.asp (C++)

    e di seguito anche un bell'esempino in Delphi

    http://kylecordes.com/2003/11/24/graphviz-delphi/

    Vari sono anche gli applicativi disponibili sul Web che usufruiscono di Graphviz: ad esempio questi 3

    QuickGraph
    Si tratta di una libreria in C# per la gestione dei grafi: implementa strutture dati ed algoritmi relativi alla teoria dei grafi; ad esempio "depth first seach", "breath first search", "shortest path", "maximum flow of a capacitated network",  etc... (chi ha fatto un pò di Ricerca Operativa o Teoria dei grafi sa bene di cosa parlo). Usa 2 librerie per la rappresentazione grafica dei grafi: Graphviz appunto e la GLEE (Graph Layout Execution Engine), libreria in C# sviluppata in Microsoft Research; il progetto di QuickGraph nacque a suo tempo con l'obiettivo di convertire in C# la Boost Graph Library (BGL) scritta in C++ (anch'essa dedita a strutture dati ed algoritmi inerenti al teoria dei grafi).

    LINK: http://www.codeplex.com/quickgraph

    ZGRViewer
    Si tratta di un applicativo Java basato sulla ZVTM (Zoomable Virtual Transformation Machine) che prende in input un file con all'interno del testo in formato "dot" (ossia l'input per Graphviz) e ne visualizza la rappresentazione grafica: richiede l'installazione di Graphviz in quanto andrà a chiamare i suoi exe per la creazione di un SVG che poi andrà a visualizzare tramite la ZVTM.

    LINK: http://zvtm.sourceforge.net/zgrviewer.html  

    Doxygen
    Famoso software per la generazione di documentazioni basate sul codice: Open Source e multipiattaforma

    LINK: http://www.stack.nl/~dimitri/doxygen/

    Altre documentazioni al riguardo:

    http://www.codeguru.com/cpp/cpp/algorithms/general/article.php/c12539__1/

     

    Per quanto riguarda documentazioni inerenti la realizzazione di programmi che usano Graphviz per integrare al loro interno funzionalità di generazione di diagrammi:

    Codeproject : pagina di ricerca di Codeproject; inserire "Graphviz" come keywords

    GraphViz Java API: da Java 
    http://www.loria.fr/~szathmar/off/projects/java/GraphVizAPI/index.php

     

    Poi chiaramente basta usare Google (o Yahoo o altro ...) per trovare riferimenti relativi ad un linguaggio o ambiente specifico

     

    Utile anche la seguente pagina da Wikipedia:

    http://en.wikipedia.org/wiki/Graphviz

     

    D'obbligo infine un cenno ad altre librerie per la realizzazione di diagrammi:

    AGD: http://www.ads.tuwien.ac.at/AGD/

    per Linux e Windows; liberamente scaricabile ma senza sorgenti (almeno non mi sembra che siano disponibili i sorgenti)

    GLE (Graph Layout Execution Engine): http://research.microsoft.com/users/levnach/GLEEWebPage.htm

    Open Source in C#, come già detto in precedenza viene usata da QuickGraph come engine grafica assieme a Graphviz

     

    Per finire definitivamente, bisogna ricordare la GoDiagram , a pagamento (disponibile versione trial): 3 versioni principali rispettivamente per .Net, Java ed C++/MFC; è decisamente avanzata quindi un occhio tocca buttarglielo per forza. Per un esempio di come usare la versione per .Net all'interno di Delphi (chiaramente le versioni di Delphi che supportano .Net) si può fare riferimento al codice allegato al numero 111 della rivista e scaricabile (in uno zip assieme agli esempi relativi agli altri articoli presenti in quel numero) al seguente indirizzo

    http://www.thedelphimagazine.com/disks/dmag111.zip

     

    Behh, adesso direi che è proprio la FINE

    July 10

    Il p2p per lo scambio delle CPU

    E' proprio questa la definizione migliore per GPU ossia Global Processing Unit. Un software che fonda le sue radici sul protocollo GNUTELLA e che si pone come obiettivo quello di condividere la CPU. In questo modo ogni utente mette in condivisione con gli altri la propria CPU ed usufruisce di quella degli altri. Invece di downloadare files si usufruisce delle CPU degli altri utenti, invece di uploadare file propri messi in condivisione (ossia farli scaricare ad altri utenti) si da in utilizzo la propria CPU. In parole povere un sistema di calcolo distribuito.

    http://sourceforge.net/projects/gpu

    3D Network Mapper displays connection traffic

     

    Stefano Godenzi while upgrading spartacus node on Whiteboard

     

    Main GPU application while computing with graphics output

     

    Terragen frontend displays computed virtual landscapes

     

    Chat window of GPU where developers and users meet

     

    Distributed Search Engine crawls the internet

    July 03

    Holy_Father Mirror

    Questa mattina sveglia alle 5, doccia, piatto di pasta al pomodoro, un pò di succo di frutta e poi alle 6:00 sono uscito in Mountain Byke e mi sono fatto un centinaio di Km su strada piana. Nel tragitto mi sono fermato una mezzoretta al porto di Bellaria a prendere un pò di sole mattutino sugli scogli, poi di nuovo in sella ed alle 10:30 di nuovo a casa. Altra doccia e poi, dopo mezzo litro di latte e mezzo litro di succo ACE, mi sono messo davanti al portatile ed ho raccolto in una pagina web tutto il materiale presente nel sito ormai defunto di Holy_Father. Alle 12:00 mi chiamano al cell. e rinvio il publishing del materiale per cause di forza maggiore. Ebbene ora sono le 22:30 ed ho inserito sul mio sito links, sorgenti e documentazioni, così non rischio di rimanere senza e nel caso qualcuno fosse interessato può downloadare.

     

    Holy_Father Mirror

    July 02

    Arieccomi

    Uhmmm ... ne è passato di tempo dall'ultimo post. Devo ammetterlo: non ho mai fatto un diario in vita mia, anche quando andavo a scuola non ne avevo uno e scrivevo i compiti dove capitava; ad essere sincero mi ritrovavo sempre con una agenda presa da chissà dove ma alla fine finivo sempre per scrivere sul quaderno o su fogli vari; il mio motto è sempre stato: meglio il mio disordine ordinato che un ordine forzato in cui non trovo mai nulla. Behh, che dire ... d'ora in poi cambierà tutto (ehh le ultime parole famose) e ogni santo giorno scriverò qualcosa. Come? Cosa sto facendo adesso? Mahh sto scartabellando tra i vari file. A breve aggiungerò al mio sito una pagina totalmente dedicata ai sorgenti ed alle documentazione del buon Holy_Father il cui sito oramai è morto e sempolto. Quindi i vari Morphine, Delphi Driver Development Kit, Hacker Defender, "Invisibility on NT Boxes", etc.... Poi anche tutto il materiale di Aphex più una organizzazione per argomenti dei sorgenti presenti su TheDelphiMagazine. Più una bella sezione con tutto il materiale di hacking che ho salvato ed una bella sezione links. Ultimamente sto testando un pò di software. Ad esempio sto usando assieme i seguenti Browser Web

    Internet Explorer 7

    Mozilla Firefox

    K-Meleon

    Opera

    Netscape Navigator

    Mozilla Firefox, K-Meleon e Netscape Navigator usano tutti la Gecko Engine. Behh che dire, è inevitabile che Internet Explorer 7 è decisamente il più pesante di tutti. Il più leggero è sicuramente K-Meleon, la panacea per chi usa linee a bassa velocità. I suoi fratelli Mozilla Firefox e Netscape Navigator sono meno veloci ma entrambi sono ugualmente ben performanti (a livello di performance non si notano differenze). Opera si mantiene al medesimo livello di Firefox e Navigator.

    Altre comparazioni le aggiungerò nei prossimo post (ora che ho ufficialmente promesso di postare tutti i giorni). Ahh questo post l'ho sto scrivendo con Windows Live Writer 

    Ho in progetto di creare Blog su tutte le principali piattaforme disponibili per vedere complessivamente quale può essere in contesto migliore. Penso che userò Blogspot per creare un Blog con tutti gli album di musica metal usciti nel 2007 e 2006.

    Sto programmando in VB.NET (.net 2.0) con SharpDevelop e devo dire che SharpDevelop è veramente degno di nota, ... vabè questa però è un'altra storia