maggio 2005 Blog Posts
Ecco uno script in Perl in grado di calcolare il tempo di carica o scarica della/e batteria/e. Lo pubblico perchè lo trovo una buona dimostrazione delle possibilità offerte dal linguaggio Perl quando ci si trova a manipolare stream di testo (frequente in ambiente Unix). Ricordo la disponibiltà dell'interprete Perl (e molto altro) su piattaforma Windows grazie ai Services for Unix. Cliccate sul titolo per leggere l'intero post.
Vediamo il seguente codice. Viene definito un
reference type (typeid = Person), con un metodo publico,
ReadMessage. Al suo interno viene utilizzato in tre modi diversi un
oggetto di tipo System::IO::StreamReader, classe che implementa
System::IDisposable.
public ref class Person{public: Person (String^ name, String^ surname) { } void ReadMessage (String^ path) { Stream^ stream = (Person::typeid)->Assembly->GetManifestResourceStream (path);#ifdef MANUAL_DETERMINISTIC_CLEANUP // I manually call the distructor. StreamReader^ reader = gcnew StreamReader (stream); Console::WriteLine (reader->ReadLine ()); delete reader;#endif#ifdef AUTOMATIC_CLEANUP // Garabace collector will call the dispose methods before finalizing the reader. StreamReader^ reader = gcnew StreamReader (stream); Console::WriteLine (reader->ReadLine ());#endif#ifdef AUTOMATIC_DETERMINISTIC_CLEANUP // The compiler automatic inserts a method call to dispose. // The reference type instance has value semantic in this context. StreamReader reader (stream); Console::WriteLine (reader.ReadLine ());#endif }};
Decompiliamo con Reflector e
vediamo come apparirebbe, nei diversi casi, il metodo
ReadMessage se fosse scritto in C#.
Nel primo caso reader è stato dichiarato come un handle, al
quale abbiamo è stato assegnato un oggetto allocato sul managed
heap tramite l'operatore gcnew
. Dopo essere stato utilizzato, l'oggetto viene "distrutto" con l'operatore
delete. Tale
operatore viene sostanzialmente ...
Stasera ho un'esperienza positiva con la command line di Windows:
Funziona con partizioni formattate NTFS e le estende solo "verso l'alto". Nel mio caso non ho specificato la quantità di spazio da aggiungere alla partizione e l'ho estesa così a tutto lo spazio disponibile. In alternativa avrei potuto dare, come ultimo comando "extend size=n".
Ispirato e istruito dalla sessione di Andrea, spero di poter iniziare questa settimana questo piccolo progetto.
Si tratta innanzitutto di creare uno script per la creazione del database e poi codare il membership provider.
Appena lo comincio apro un nuovo workspace su GotDotNet!
Ho deciso di spostare il progetto su GotDotNet. Pubblicherò lì news (con feeds RSS!), nuove releases, etc.. Ci sono anche un forum e un bug tracker, che naturalmente potete utilizzare.
Ho già pubblicato le due "vecchie" releases (0.6 e 0.7.0) e i sorgenti sfruttando il sistema di source control (integrato tramite plugin in Visual Studio!).
Ora vorrei creare un installer (in bundle con l'Enterprise Library e il provider ADO.NET per Firebird). Devo soltanto trovare il tempo di leggere le licenze e realizzarlo.
Putroppo non sono ancora riuscito a fare una pagina di redirect sul vecchio sito perchè ho dimenticato la password... troverò un sistema per farlo (spero!).
Nome...