Browsing the archives for the .Net category.


Dynamic, Dynamic, Dynamic

.Net

Riprendo alcune informazioni diffuse attraverso i talk del PDC2008 che la Microsoft ha furbescamente distribuito gratuitamente al popolo di internet. Ho trovato molto interessanti quelli relativi alla programmazione dinamica in C#4 (che debutterà ufficialmente nel 2010 ma che è disponibile in CTP - come immagine Virtual PC - già adesso) ma sono rimasto deluso per non aver trovato (almeno, io non l’ho ancora trovato) il giusto approfondimento sui costrutti per la programmazione parallela.

Per quelli che avessero difficoltà a seguirmi riepilogo brevemente gli argomenti di cui sto parlando:

  • Programmazione dinamica: si tratta di un costrutto con cui possiamo dichiarare una variabile di tipo dynamic: fatto questo possiamo chiamare metodi e attributi di questa variabile anche se a compile-time questi non erano presenti;
  • Programmazione parallela: il nuovo C# introdurrà dei costrutti per semplificare la scrittura di algoritmi paralleli.

Sulla programmazione dinamica, nel talk di Jim Hugunin (TL10) ed in quello del mitico Anders Hejlsberg (TL16), si è fatto la dovuta distinzione che un oggetto dynamic non è un object ma una variabile su cui si possono effettuare chiamate di tipo dinamico su cui, cioè, il compilatore non effettuerà controlli sull’esistenza di metodi e attributi. Il tutto può essere utile laddove vogliamo avere la massima flessibilità nel funzionamento delle nostre classi: metodi ed attributi possono essere creati e chiamati dinamicamente in funzione di input esterni al software ed adattarsi in funzione di queste esigenze.

Per far questo possiamo utilizzare diverse strade. La più semplice è quella di poter accedere a variabili dinamiche richiamando i loro metodi senza passare dai metodi Invoke (che voi che smanazzate con la reflection conoscete a memoria).

La seconda è quella di crearsi una classe derivata da IDynamicObject che consente l’aggiunta di metodi ed attributi a run-time. Il tutto viene ottenuto sovrascrivendo i metodi GetMember, SetMember ed InvokeMember:

  • GetMember: indicherà cosa fare quando richiediamo un membro di una classe (che ovviamente potrebbe non esistere);
  • SetMember: indicherà cosa fare quando aggiungiamo un membro ad una classe;
  • InvokeMember: indicherà cosa fare quando richiamiamo un membro con un certo set di parametri.

Quindi, in realtà il dinamismo visto nelle presentazioni, è leggermente meno flessibile di quello visto in Python o in Ruby in cui, qualsiasi object è anche dynamic. Qui si è fatto il tentativo di portare il dinamismo all’interno di un linguaggio essenzialmente statico senza stravolgerne l’architettura. In realtà anche così il sistema offre le stesse potenzialità all’utente ma, soprattutto, consente una migliore integrazione con IronPython ed IronRuby che, a partire da questo PDC diventano fratelli di latte con C#, Visual Basic e C++. Ora classi python, ruby e .net vengono eseguite nello stesso spazio e, quindi, accedono le une alle altre senza alcun limite.

Supponiamo di avere il seguente file Calculator.py

def GetCalculator():
    return Calculator()
	
class Calculator(object):
    def Add(self,x,y)
        return x+y

ed ora scriviamo il nostro codice C#:

using System;
using IronPython.Hosting;
	
class Program
{
    static void Main(string[] args)
    {
        dynamic python = Python.CreateRuntime().UseFile("Calculator.py");
        dynamic calc = python.GetCalculator();
        calc.Add(100,5);
    }
}

L’esempio ci fa capire che l’embedding ora avviene in modo molto semplice rispetto a prima ed il suo utilizzo risultà molto più intuitivo ed efficace.
Il sistema di chiamate dinamiche consentirà inoltre di avere un dialogo più immediato con i Web Service (un pò come vedemmo in Groovy tempo fa): avendo una variabile di tipo dynamic che punta all’istanza di un web service, potremo chiamare un suo metodo senza costrutti strani ma semplicemente considerando la variabile come istanza di un oggetto che quei metodi ce li ha già.
Vedremo cosa sapremo tirar fuori da C# con queste nuove possibilità.

Zac

No Comments

Mono e PDC2008

.Net, Mono

La scorsa settimana si è tenuta a Los Angeles la Professional Developer Conference di Microsoft, conferenza dedicata interamente ai tool di sviluppo per Windows o di tecnologie ad esso riconducibili. Una delle novità è stata la presenza di Miguel de Icaza che ha tenuto una presentazione sullo “Stato della Nazione” di Mono e dei progetti ad esso affini.

La novità è di rilievo se si pensa che Mono è il presunto cavallo di troia all’interno dei nostri PC con GNU/Linux installato sopra, ma anche che Microsoft presenta al suo pubblico di sviluppatori un progetto Open Source che rende libero ed accessibile il codice relativo a .Net e potenzialmente li spinge pensare alle loro applicazioni anche su sistemi non-Windows come Linux e Mac OS X. Tenuto conto che Mono è ormai compatibile al 100% con le WinForms 2.0 e con LinQ e che presenta dei tool che .Net ancora non ha, il keynote di Miguel è stato un fatto che mi ha piacevolmente sorpreso.

Tra le novità presentate in questo keynote citiamo:

  • Mono è l’ambiente di riferimento per chi voglia portare applicazioni .Net su piattaforme non Windows
  • Mono supporta pienamente i maggiori standard legati a .Net
  • Mono è calibrato per essere portato anche su dispotivi embedded (Console come Wii e iPhone ad esempio) e a tale scopo si può sfruttare l’ottimo Mono Linker che consente di estrarre da librerie esistenti solo il minimo indispensabile per quello che ci serve, senza portarci appresso codice inutile
  • Mono ora supporta una procedura di SIMD (Single Instruction Multiple Data) che consente di velocizzare di molto i calcoli matriciali e, di fatto, rende Mono adatto anche per lo sviluppo di video games
  • per la prima volta si introduce gsharp, una shell per C# che, al pari di quelle esistenti per Python e Ruby, consente di eseguire codice .Net al volo con tanto di output grafico. Ha inoltre la capacità di agganciarsi ad un processo Mono in esecuzione e di variarne il comportamento a Run-Time
  • non ci ho capito molto ma mi è sembrato di capire che ora Mono presenta anche un compilatore AOT: non vorrei sbagliare ma, al pari dell’analogo per Java non presenta una migliore efficienza nell’esecuzione del codice
  • viene introdotto il Mono Debugger, che fino ad ora mancava all’intera suite.

Le novità sono davvero tante e, per quanto gli “You Know” di Miguel non diventeranno mai famosi come le triplette di un certo Steve o come gli “huuuge” di un altro Steve, vale la pena guardare anche il video (wmv) del keynote per imparare a conoscere un personaggio che già fa, e in futuro lo farà ancora di più, parlare di se.

Al solito non vedo di buon occhio il fatto che Mig indichi Visual Studio come ambiente di sviluppo per Mono e ancor meno capisco la necessità di scrivere MonoDevelop quando si poteva scrivere un plugin per Eclipse/Netbeans. Ma fino a che le buone idee dietro la piattaforma .Net si diffonderanno come Open Source ben venga Miguel e tutto il suo entourage, ma state attenti che la Microsoft è sempre in agguato dietro le sue spalle ed il rischio di avere un Linux che gira alla velocità di Windows Vista è qualcosa da evitare come la peste.

Zac

No Comments

La programmazione prossima ventura…

.Net, Idee, Java

Non sono un estimatore della Microsoft, lo sapete, ma ho molta stima nel gruppo di lavoro che la Microsoft ha messo in piedi per realizzare l’architettura .Net. Per quanto inizialmente fosse la copia di tutte le idee sviluppate da Sun, negli ultimi due anni .Net è riuscita a far mangiare un pò di polvere a James Gosling e soci.

In un video presentato su Channel9 (purtroppo occore Silverlight per poterlo vedere), Anders Hejlsberg ci illumina su quelle che saranno le direttrici del C# 4:

  • più costrutti dichiarativi sullo stile di LINQ, raro esempio di innovazione targata Microsoft;
  • Dynamic vs Static, anzi Dynamic and Static (nel video queste due parole rappresentato circa l’80% dei termini pronunciati);
  • Parallel processing.

Queste direttrici saranno ampiamente svelate nella conferenza PDC 2008 ma per ora, il gruppo di lavoro, si è divertito a darci una anticipazione sui temi che vi verranno trattati in modo che noi, che di programmazione non ne capiamo niente, possiamo andare a cercarli e studiarli: ad esempio quanti di voi sanno cos’è la metaprogrammazione, cos’è la programmazione parallela, cos’è LINQ etc etc? Sicuramente tantissimi, ma quelli di M$ l’hanno scoperto ora e, a modo loro (abbastanza bene fino ad ora), cercheranno di rendere questi concetti accessibili alle masse.

Guardando il video, ma sapendo che alcuni dei cavalli di battaglia di Visual Studio sono i progetti open source IronPython e http://www.ironruby.net/, sembra strano vedere omini microsoft parlare bene di progetti che non appartengono alla loro casa madre: anche loro, come molti negli anni passati, sono rimasti folgorati dalle avanzate potenzialità di Python e dalle “evil features” di Ruby on Rails (tra cui l’alto grado di metaprogramming) e, facendo leva su questi mostri sacri dello scripting, annunciano che il “dinamismo” sarà alla base del prossimo .Net Framework.

Anche C#, mantenendo la sua natura di linguaggio “statico”, trarrà enormi vantaggi dai nuovi costrutti che, come LINQ, consentiranno di manifestare più facilmente i desideri dei programmatori. L’unica piccola parentesi, che i moschettieri si pigliano per parlare di J2EE, la aprono per denigrare quanto J2EE sia complesso, pesante e quanto invece Ruby e Python siano snelli e facili. Un pò hanno ragione ma comunque nessuno di questi tre prodotti è robba loro.

Tra i nuovi costrutti che verranno introdotti, PLINQ, la versione parallela di LINQ, di cui ne andiamo parlando da un bel pò, consentirà di sviluppare, facilmente, algoritmi che sfruttano la potenza dei processori multi-core. Ormai sappiamo già che questa tecnica non offrirà vantaggi rispetto alla gestione con i thread ma la semplicità di scrittura del codice ne risulterà notevolmente semplificata. E con essa anche l’adattamento di molti degli algoritmi già esistenti (in realtà non mi è sembrato che la scrittura di codice con un Parallel.For o con un .AsParallel() sarà poi così semplice come dicono). Il prossimo passo sarà quello di coinvolgere anche le GPU e le PPU nei calcoli dei nostri algoritmi paralleli.

Insomma mentre il java community process si arrabbatta per decidere se inserire o meno i closures nella prossima versione di Java, la Microsoft cerca di mantenere le distanze.

Vedremo se la comunità open source saprà, spero presto, prendersi la sua bella rivincita.

Zac

No Comments

MonoDevelop 1.0 è uscito

.Net, Mono

Diamo il benvenuto ad un altro possibile protagonista della scena Open Source ed ovvero MonoDevelop, l’ambiente di sviluppo targato Novell sviluppato da una comunità di sviluppatori di cui ho spesso ammirato la creatività ed altre volte criticato la loro strana tendenza a difendere le posizioni di Microsoft. Com’è come non è adesso MonoDevelop ha raggiunto il suo primo stadio ed è anch’esso un prodotto open source da cui tutti potremo imparare qualcosa (anche quelli che non vogliono exe nella propria Linux Box).

Il progetto, capitanato da Miguel de Icaza, si è distinto negli anni per aver proposto in ambiente Linux (e in tempi recenti anche Windows e Mac OS X) metodologie e strumenti di sviluppo propri dell’ambiente Windows; quanto questo sia in grado di spostare i pigri sviluppatori .Net a Mono, se non addirittura a Linux, e qualcosa che spero di avere il piacere di osservare.

Inoltre auguro al progetto di diventare a breve uno strumento di sviluppo all’altezza di mostri sacri quali NetBeans, Eclipse o IntelliJ IDEA (scusate ma conosco solo questi). Per ora è un prodotto calibrato su C# con un supporto iniziale ad altri linguaggi come Visual Basic.Net, C++, Java e Boo.

Complimenti a tutta la comunità di Mono. Anche se non siete ben visti da molti pinguini “della curva” è ammirevole l’impegno (interessato?) che ci mettete nelle cose che fate.

In bocca al lupo

Sandro Zacchino

2 Comments

Il futuro non è più quello di una volta…

.Net, Gnu/Linux, Java, Mono, Windows

Fino a poco tempo fa pensavo che .Net (in quanto prodotto Microsoft) stava avanzando così tanto da buttare fuori di scena tutti gli altri modelli di sviluppo presenti sulla scena. In realtà per come la Microsoft sta giocando la sua partita .Net avrà senso solo finché Windows manterrà la sua quota di mercato. Ma forse bisogna guardare con più attenzione ai seguenti fatti:

  • sui desktop, Windows è ancora la scelta obbligata dato che le aziende che producono software e periferiche offrono quasi sempre soluzioni per Windows
  • il web, di contro, è permeato ancora di PHP, JSP di Apache e MySQL, per quanto, a livello enterprise ASP.NET, IIS e SQL Server, per via della loro stretta integrazione e user-friendliness (apparente), non sono certo una realtà minore
  • rispetto a qualche anno fa, esistono molte più piattaforme non-windows con cui fare i conti: lato mobile gli attori protagonisti sono Nokia, BlackBerry e iPhone; Microsoft dice che loro hanno un quota di mercato rilevante ma il dato, secondo la mia opinione, riguarda solo gli utenti di tipo aziendale (e tra questi manager e rappresentanti); mi sembra che tra i normali consumatori la piattaforma di riferimento sia Nokia
  • Java si è giocata la carta dell’open source e si contende, insieme a Mono, lo scettro di ambiente di sviluppo multipiattaforma per eccellenza: basta vedere la corsa ai nuovi ambienti di sviluppo per iPhone che, nonostante le limitazioni della licenza dell’SDK, è appena iniziata; guardate qui e qui
  • Java, dopo un periodo di sonnolenza, sembra aver ripreso la voglia di essere un competitor serio anche per le applicazioni desktop: ultimamente librerie come SwingX, Timing Framework o Jgoodies e ambienti di sviluppo maturi come NetBeans ed Eclipse dimostrano che lo sviluppo con Java non ha nulla da invidiare a .Net o Flash; inoltre il JCP, ovvero la comunità Java che decide come orientare le novità del linguaggio, è attiva più che mai per renderlo un linguaggio al passo coi tempi: sulla scena i linguaggi “minori” come Python, Ruby, Groovy e Javascript dimostrano giorno per giorno le loro indubbie qualità (type inference, definizione dinamica di metodi ed attributi, estensioni delle classi, presenza dei closures) e la capacità di Java di integrarli per ora lo sta salvando dal confronto diretto con il più giovane e performante C#; i grandi nomi dietro a Java dicono che non è possibile mantenere Java un linguaggio così semplice: è vero che le cose che fa C# si possono ottenere lo stesso ma la complessità necessaria per farlo scoraggia i più; Microsoft ha dimostrato che ha conoscenza ed esperienza da vendere nell’ambito dei linguaggi di sviluppo: LINQ, Parallel FX, e altri progetti dell’area Research stanno lì a dimostrarlo; di certo Java non può rimanere a guardare (e per fortuna non lo fa)
  • a proposito di Flash, va ribadito che ormai sono molti i progetti open source il cui output è un file Flash; la stessa Adobe inoltre ha da poco rilasciato la suite Air, che consente di portare le applicazioni flash sul desktop
  • Internet Explorer, sebbene sia il browser più diffuso, se la deve vedere con Firefox, Safari e all’orizzonte appaiono progetti come questo, molto interessante per le opportunità che presenta
  • non ultimo, il sistema operativo: Windows Vista ha avuto il grandissimo merito di dirottare molti utenti verso altri sistemi operativi ed ha convinto molti governi a scegliere alternative open source ai suoi prodotti; da questo punto di vista possiamo certamente dire che Microsoft è stata un grosso sponsor per il movimento del Software Libero; inoltre sulla scena, Apple si fa sempre più presente grazie alla riconosciuta qualità del suo sistema operativo e alla bellezza dei suoi prodotti: riuscendo inoltre ad attingere a piene mani da tutti i progressi del mondo Gnu/Linux e FreeBSD, Mac OS X sembra sempre più la piattaforma di sviluppo ideale per tutti i progetti non .Net (ricordo che da poco è stato rilasciato anche MonoDevelop per Mac OS X)

Insomma, sul palcoscenico ci sono molti attori e, forse, rispetto a qualche anno fa, la conoscenza diffusa delle alternative possibili rende i grossi nomi meno capaci di dirottare le scelte del mercato con semplici strategie di FUD (ossia instillare il dubbio che scegliere prodotti alternativi produca perdite, disastri e cataclismi di varia natura). Il modello di sviluppo open source risulta vincente a tal punto che grosse compagnie decidono di acquistarli in blocco piuttosto che derivarne lo sviluppo.

Vedremo cosa ci riserverà questo incerto futuro.

Qualche dettaglio: per chi non lo sapesse Lobo Browser è un browser web open source scritto interamente in Java. Nell’ultima release integra il rendering di applet JavaFX, ossia il nuovo concorrente di Flash nell’ambito Web.

Zac

2 Comments

Il bello delle idee libere…

.Net, Gnu/Linux, Mono

…è che se ne arricchiscono tutti quanti. Leggevo oggi delle interessanti evoluzioni sullo sviluppo di LinQ, il language integrated query, vera innovazione della Microsoft nel suo nuovo .Net. Ora il LinQ approda anche sulla piattaforma Mono, il porting multipiattaforma di .Net, distribuito con licenza GPL/LGPL, vuoi perché la maggior parte dei suoi sviluppatori lavora in Novell, vuoi perché le librerie .Net si decompilano in modo semplicissimo (ma no, quelli di Mono queste cose non le fanno!). La Microsoft consente, attraverso le sue librerie, di utilizzare il LinQ su collezioni, file di testo, file XML e Database; in quest’ultimo caso il compilatore si preoccupa di tradurre le query LinQ in query SQL. Per quanto strano l’approccio funziona, ed anche bene, ma l’unico difetto è che l’unica piattaforma di database supportata è, ovviamente, SQL Server.

I Mono-Guys hanno iniziato la scrittura di una libreria, chiamata DBLinQ, che consentirà di sfruttare LinQ anche su altri database (e sopratutto su quelli open source). Questo è ovviamente una bella iniezione di fiducia nei confronti di un progetto che, dopo lo scellerato accordo Novell-Microsoft, ha gettato un’ombra pesante anche sul progetto Mono, che da Novell è sponsorizzato. Ma, come se non bastasse, l’articoletto mi ha fatto scoprire una estensione di LinQ che non immaginavo nemmeno: perché non sfruttare la potenza dell’accesso ai dati offerto da queste query integrate per eseguire codice parallelo su macchine Multi-Core? Già, perché? Ed infatti ci sono diversi gruppi di lavoro che hanno pensato di progettare delle estensioni per eseguire codice su dati distrbuiti su più core o addirittura per lavorare su framework per il grid computing: i due progetti si chiamano PLinQ e GridLinq (decisamente originali i nomi). Vi lascio ai vari LinQ per scoprire i dettagli di queste novità.

Zac

2 Comments

.NET diventa open source?

.Net, Open Source

Se ne parlerà molto ed è giusto che kit lo riporti… Pare che Microsoft abbia deciso di aprire un po’ il codice di alcune librerie di .NET, nel senso che verrà svelato il loro codice, ma non potrà essere modificato e redistribuito… In altre parole se qualcuno trova un bug lo potrà correggere, ma non potrà diffondere la patch di suo pugno, ma dovrà consegnarla a Microsoft che la rigirerà al mondo se meritevole.
Ovviamente questo non è per nulla open source. La licenza usata manca di alcuni aspetti fondamentali (si veda la definizione ufficiale). Tuttavia questa mossa è interessante perché è un riconoscimento da parte di Microsoft che la comunità degli sviluppatori disseminati nel mondo è in grado di aggiungere valore ai suoi prodotti.

1 Comment

IronRuby per .Net e Mono

.Net, Mono

Seguendo il successo del fratello IronPython, arriva alle ultime fasi di sviluppo IronRuby, che porta il linguaggio più celebre del Web 2.0 nella ricca collezione dell’ambiente .Net. Nonostante sia stato sviluppato da Microsoft, IronRuby è distribuito con la Microsoft Permissive License (^_^”) che consente una fruizione completa dei sorgenti senza null’altro a pretendere da parte di Microsoft stessa (se non, forse, il fatto che nessuno brevetti questo lavoro). IronRuby si poggia sul DLR (Dynamic Language Runtime) che è quella porzione della virtual machine che consente l’esistenza, all’interno di .Net, di tutte quelle funzioni che consentono la generazione dinamica di variabili, gestione dinamica dei metodi e tutte le altre delizie a cui i linguaggi moderni ci stanno abituando. Grazie al DLR pare che le performance siano superiori a quelle di Ruby 1.8.6.

La mossa della Microsoft non va sottovalutata in quanto la gestione dei linguaggi in .Net ne sta decretando la sempre più capillare diffusione negli ambienti di sviluppo anche a discapito di Java. Inoltre i Mono-guys stanno tenendosi al passo con tutte le novità dell’ambiente .Net, offrendo anche una valida alternativa Open Source a tutto ciò. Sun dovrebbe darsi una svegliata ed iniziare qualche contromossa prima che sia troppo tardi: non basteranno certo OpenJava o JavaFX a destare preoccupazioni alla Microsoft: occorre che Java cominci a snellirsi sul lato virtual machine e ad accelerarsi sul lato delle performance.

La mia l’ho detta.

Zac

3 Comments

1,2,3…casinoooo!

.Net, Mono

Vi segnalo rapidamente questo link per l’ennesima innovazione nell’ambito dello sviluppo .Net/Mono: il DLR (Dynamic Language Runtime). Ossia programmate come vi pare, in qualsiasi linguaggio vi pare…

Seguiranno maggiori delucidazioni…sappiate solo che questo progetto arriva insieme al nuovissimo Iron Ruby!!! Wow…

A presto.

No Comments

Extension Methods in C# 3.0

.Net, Mono

Visto che la maggior parte di voi parla sempre di Java, colgo l’occasione per parlare anche del suo fratellino minore C#. Mi piacerebbe anche sapere da qualcuno di voi se le feature in questione esistono in Java. Quando ho letto di questa caratteristica, appena introdotta nell’ultima fork di Mono, mi sono chiesto che fine avesse fatto l’ereditarietà per questi signori, ma soprattutto se ciò non avrebbe portato a codice difficilmente manutenibile.

Gli Extension Methods sono dei metodi, definiti in una classe A che estendono le funzionalità di una classe B. Per loro natura devono essere metodi statici e possono essere invocati a partire da qualsiasi istanza della classe B.

Un esempio aiuta a capire più di 1000 tesi di laurea:

static class MyExtension
{
  public static string Prefix (this string s, string prefix)
  {
    return prefix + s;
  }
}
	
class M
{
  public static void Main ()
  {
    string s = "abc".Prefix ("1");
  }
}

Un extension method ha come primo parametro un’istanza della classe da estendere preceduta da “this” (oh mein gott). Il senso del codice adesso appare chiaro. Possiamo estendere le classi a nostro piacimento, oltre che a nostro rischio e pericolo, senza doverne ereditare interfacce e scrivere classi ereditate. Il problema nasce nel momento in cui ci sono più extension per la stessa classe, con lo stesso nome. In questo caso si mette in moto un gestore dei nomi che utilizza l’albero dei namespace per trovare l’extension più vicina. Un pò ingarbugliato ma potrebbe rivelare scenari interessanti.

La cosa divertente è che gli sviluppatori consigliano di usarli solo se strettamente necessario…mi sa che quelli di Mono si stanno avvicinando un pò troppo alla mentalità di M$. :D

Zac

2 Comments
« Older Posts


  • Google Adsense

  • MiniBlog

    Banner Javaday Roma III Edizione >>

    Adobe ha appena sfornato il Flash player nella versione 10, stavolta anche per Linux da subito! Incredibile >>

    When the source code to Quake was leaked and circulated among the Quake community underground in 1996, a programmer unaffiliated with id Software used it to port Quake to Linux, and subsequently sent the patches to Carmack. Instead of pursuing legal action, id Software, at Carmack’s behest, used the patches as the foundation for a company-sanctioned Linux port. id Software has since publicly released the source code to Quake, Quake 2 and most recently Quake 3, all under the GNU General Public License (GPL). >>

    Ganymede Donate, please ;) >>

    Download Day 2008 >>

    Scusa Ameri, Sun s’è comprata MySQL e Oracle s’è pappata BEA. >>

    Chi ha bisogno di un Mac quando con Linux abbiamo Compiz, Open Office, Inkscape, Scribus, Eclipse, Tracker, ed ora anche una Time Machine per recuperare al volo vecchi backup? Per ora manca lo sberluccichio di casa Apple ma il funzionamento è analogo: si chiama FlyBack! >>

    Giusto per ricordarvi che una delle distribuzioni Linux più diffuse sta per raggiungere le nostre scrivanie :D

    >>

    Anche se me ne vergogno come un ladro non posso esimermi dal pubblico ludibrio consentendovi di ritrovare tracce di me nella storia di Internet: era il 6 Ottobre 1995 ed il 4 Novembre 1995. E come non ricordare la mia prima Home Page>>

    Assegnati gli Ig Nobel per la ricerca improbabile qui e, appena possibile, qui. >>

  • Categories