Nostalgia del passato o futuro che avanza?
24 May 07 08:52 AM
APL per Visual Studio, 100% managed code! Per APL si può davvero parlare di mito: le sue origini sono alla fine degli anni '50... 1950.
Postedby giuliov | 0 Comments    
Ritorno alle origini
16 May 07 09:52 AM

Purtroppo certi theme sono molto belli... ma troncano il codice. Questo stile Simple è un po' scarno ma ha il vantaggio di facilitare la lettura.

Postedby giuliov | 1 Comments    
Nuovo backup
16 May 07 08:24 AM

Da anni ho l'abitudine di lanciare un backup notturno sul disco esterno (una volta lo scambiavo con il lettore DVD ora è un drive USB). Ieri ho applicato due importanti modifiche.

Anzitutto ho scoperto che Vista ha una versione aggiornata di ROBOCOPY, di cui segnalo l'opzione /MIR che copia rimuovendo i file in più trovati nella destinazione.

La seconda scoperta, grazie ad Adi è che le funzionalità di Shadow Copy non sono una faccenda esoterica per server con uno storage attaccato ma posso usarla anche sul mio piccolo notebook per i backup. Per farla breve c'è il programmino VSHADOW, contenuto ora nell'SDK di Vista (la versione ISO son 1,15GB), che permette di controllare le shadow copy; in pratica creo delle istantanee di un disco di cui voglio fare il backup, assegno un drive (S:) alla fotografia e posso farne il backup senza problemi di lock... database SQL, OST/PST di Outlook, anche il registry!

Ecco l'estratto del mio script UserBackup.cmd, come vedete mi piace avere un log di quanto succede.


@echo off

echo Vuoi davvero cominciare il backup?
pause

pushd
setlocal


set SYS_DRIVE=C:
set DATA_DRIVE=D:

set DEST_DRIVE=F:\BACKUP

REM use Vista version
set ROBOCOPY=ROBOCOPY
set VSHADOW=d:\bin\vshadow.exe

set LOG_DIR=BackupLogs
set LOG_PATH=%SYS_DRIVE%\%LOG_DIR%

REM Backup counter
if exist %LOG_PATH%\lastnum.cmd  call %LOG_PATH%\lastnum.cmd
set /a N+=1
echo set N=%N% > %LOG_PATH%\lastnum.cmd

set COPY_OPT=/MIR /ZB /R:1 /W:1 /XJ /EFSRAW
set LOG_OPT=/NP /TEE /LOG+:%LOG_PATH%\robocopy%N%.log


title BACKUP RUN #%N% TO %DEST_DRIVE% 

cls
%SYS_DRIVE%
cd \

echo Checking environment
if not exist %LOG_PATH% md %LOG_PATH%

REM	echo Defragmenting destination (%DEST_DRIVE%)
REM	defrag %DEST_DRIVE% -f -v >> %LOG_PATH%\d-defrag%N%.log

REM >>> DATA VOL

%VSHADOW% -p -script=%TEMP%\SetVShadowVars.cmd %DATA_DRIVE% >> %LOG_PATH%\shadow%N%.log
call %TEMP%\SetVShadowVars.cmd
%VSHADOW% -el=%SHADOW_ID_1%,S: >> %LOG_PATH%\shadow%N%.log

set F=Archive
echo *** Backup %F% ********************************
%ROBOCOPY% "S:\%F%" "%DEST_DRIVE%\%F%" %COPY_OPT% %LOG_OPT%

REM eccetera eccetera

%VSHADOW% -dx=%SHADOW_SET_ID% >> %LOG_PATH%\shadow%N%.log
del %TEMP%\SetVShadowVars.cmd

REM >>> SYSTEM VOL

%VSHADOW% -p -script=%TEMP%\SetVShadowVars.cmd %SYS_DRIVE% >> %LOG_PATH%\shadow%N%.log
call %TEMP%\SetVShadowVars.cmd
%VSHADOW% -el=%SHADOW_ID_1%,S: >> %LOG_PATH%\shadow%N%.log

set F=%USERPROFILE%
echo *** Backup %F% ********************************
%ROBOCOPY% "S:\%F%" "%DEST_DRIVE%\%F%" /XD "Temp" /XD "Temporary Internet Files" %COPY_OPT% %LOG_OPT%

%VSHADOW% -dx=%SHADOW_SET_ID% >> %LOG_PATH%\shadow%N%.log
del %TEMP%\SetVShadowVars.cmd

REM	echo Defragmenting source (%SYS_DRIVE%)
REM	defrag %SYS_DRIVE% -w -f -v >> %LOG_PATH%\defrag%N%.log
REM	echo Defragmenting source (%DATA_DRIVE%)
REM	defrag %DATA_DRIVE% -f -v >> %LOG_PATH%\defrag%N%.log

xcopy %LOG_PATH%\*.log %DEST_DRIVE%\%LOG_DIR%\ /M /C /R /K /Y

echo Backup complete.

echo Script complete.

pause
goto bye

:usage
echo Usage: %0

:bye
endlocal
popd

Attenzione che funziona esclusivamente con Vista, per usarlo su XP o 2003 son necessari degli adattamenti.

Ovviamente non ci sono garanzie o responsabilità se volete usarlo ;-)

Postedby giuliov | 0 Comments    
Filed under:
Ricerca e innovazione
10 May 07 11:46 PM

Una puntata interessante della trasmissione 8 e mezzo su questo tema si può ascoltare qui la prima parte e qui la seconda.

Certo che il podcasting (o come lo vogliate chiamare) sta cambiando il modo di fruire l'informazione.

Postedby giuliov | 0 Comments    
Evoluzione
09 May 07 10:49 AM

Scott Hanselman ha un interessante post http://www.hanselman.com/blog/PuttingMixSilverlightTheCoreCLRAndTheDLRIntoContext.aspx che merita di essere letto e considerato.

In particolare ha realizzato un grazioso schema sulle relazioni tra le varianti e le versioni di .NET... purtroppo ne mancano alcune: Shared Source CLI (Rotor) e Compact Framework.

Postedby giuliov | 0 Comments    
PowerShell: Verdi praterie
03 April 07 11:18 PM

Una caratteristica di PS è la vastità di aree Windows che copre. In pratica se un framework, una applicazione o un sottosistema espone un modello (a oggetti) amministrativo in termini di classi .NET, oggetti COM o classi WMI, esso diventa banalmente controllabili da PS. Vediamo una panoramica di simili oggetti.

Sembrano mancare alcune voci importanti: ADO.NET, ADSI. La ragione è che PS offre un supporto specifico per questi oggetti, ma merita un approfondimento separato.

Accenno solo brevemente al fatto che stanno uscendo librerie di terze parti a supporto di PS, le più notorie sono PowerGadgets e /n software NetCmdlets.

Bye

Postedby giuliov | 1 Comments    
Powershell: Installazione e documentazione
29 March 07 10:53 PM

Su questa pagina si trovano tutti i link per le varianti di PowerShell sulle diverse piattaforme, e comunque in inglese.

Le versioni in Italiano sono:

Una volta installato la documentazione si trova sotto %SystemRoot%\System32\WindowsPowerShell\v1.0\Documents\<language tag>\. Son quattro file RTF che si aprono con WordPad. Son giusto per iniziare perché non rendono giustizia alle potenzialità di PowerShell.

In italiano è possibile leggera la traduzione della rubrica di Don Jones sul TechNet Magazine iniziata nel dicembre 2006 (http://www.microsoft.com/technet/technetmag/issues/2006/12/PowerShell/?loc=it).

A oggi son già usciti quattro volumi su PowerShell… ovviamente tutti in inglese:

  1. Windows Powershell in Action di Bruce Payette
  2. Microsoft Windows PowerShell: TFM di Don Jones e Jeffery Hicks
  3. Microsoft Windows Powershell Programming for the Absolute Beginner di Jerry Lee Ford Jr.
  4. Monad: Introducing the New MSH Command Shell and Language for Windows di Andy Oakley and Jeffrey Snover

Più altri quattro in uscita

  1. Professional Windows PowerShell di Andrew Watt
  2. Windows® PowerShell Unleashed di Tyson Kopczynski
  3. Microsoft Windows PowerShell™ Step By Step di Ed Wilson
  4. Professional Windows PowerShell Programming: Snapins, Cmdlets, Hosts and Providers di A. Kumaravel

Il libro di Payette è particolarmente interessante per un sviluppatore in quanto sviscera il linguaggio (è uno dei creatori).

Altri riferimenti e qualche esempio prossimamente, comunque sempre con un taglio da sviluppatori ;-)

Ah, in questi giorni è uscita la notizia che PowerShell sarà incluso nella prossima versione di Windows Server (noto come Longhorn) e per chi non se ne fosse accorto PowerShell è considerato, da Windows Update, come un aggiornamento del sistema operativo, non come un pacchetto applicativo, se così si può dire.

Postedby giuliov | 0 Comments    
Filed under:
PowerShell si inizia
28 March 07 07:42 AM

Da qualche tempo mi sono “intrippato” di PowerShell e mi sembra che in Italia non ci sia ancora la percezione del valore contenuto in PowerShell.
Come sviluppatore ho una prospettiva diversa da quella di un sistemista, come può averla http://www.pulsarit.net/cs/blogs/claudiog/ e cercherò di accentuarla.

Per chi non lo conosce diamo una prima definizione: PowerShell è una nuova shell per Windows. Una shell cioè un interprete di comandi, come cmd.exe o bash eccetera.

Cosa ha di nuovo rispetto altri interpreti di comandi? Diversi aspetti, alcuni generali, altri specifici della piattaforma Windows.

  1. Il concetto di tipo: a differenza di ksh, bash o anche cmd.exe, l'input e l'output di un comando non è un flusso indifferenziato di caratteri ma è un flusso di oggetti tipizzati
  2. L'idea di parser: i comandi vengono interpretati dalla shell e non dal comando stesso. Difatti un comando è, di norma, una classe .NET derivata da System.Management.Automation.PSCmdlet che ridefinisce il metodo ProcessRecord.
  3. L'integrazione: eseguibili esistenti, oggetti COM, classi WMI e classi .NET possono essere utilizzate da uno script PowerShell senza modifiche.

Che cos'ha di comune? Alcune deliberate scelte di compatibilità o di somiglianza con shell e linguaggi di programmazione esistenti. Il concetto di pipeline ha molto in comune con LINQ (o con SSIS se vogliamo): i comandi vengono istanziati e combinati insieme prima di essere eseguiti. Gli alias, strutture gerarchiche viste come filesystem virtuali, strutture dati primitive al linguaggio.

L'obiettivo di realizzare una shell interattiva spiega alcune peculiarità rispetto ad un linguaggio di programmazione interpretato come Python o Ruby, ad esempio il carattere $ che prefissa le variabili.

La prossima volta come si installa e alcuni esempi delle sue capacità per stimolare l'interesse.

Postedby giuliov | 0 Comments    
Filed under:
Imparare le lingue con i podcast
21 March 07 07:04 PM

Da diversi mesi sto ascoltando con una certa regolarità alcuni podcast in lingue straniere e ne constato il beneficio. Certo non viene esercitata la capacità di leggere e scrivere ma di sicuro mi ha permesso di sentire la pronuncia di diverse parole solamente lette e abiturarsi alla velocità di un madrelingua.

Consiglio in particolare http://eslpod.com/ per l'Inglese Americano e http://ssl4you.blogspot.com/ per lo Spagnolo.

Postedby giuliov | 0 Comments    
Filed under:
Lanciare il debugger
23 May 06 09:37 AM

Quando è difficile impostare un breakpoint si può ricorrere all'equivalente della API DebugBreak()

System.Diagnostics.Debugger.Launch()

OK per tutte le versioni del Framework .NET.

Postedby giuliov | 0 Comments    
Ultraleggeri
10 March 06 12:18 AM

Stiamo andando nella giusta direzione: tra qualche anno potrà esser veramente comodo leggere riviste e libri tecnici sul computer. L'annuncio dell'Ultra-Mobile PC è in questa direzione (http://msdn.microsoft.com/mobility/tabletpc/umpc/default.aspx).

Sperando che siano veramente leggeri, freschi, silenziosi, economici e... impermeabili ;-)

Postedby giuliov | 0 Comments    
Del software "libero" che mi piace sul serio!
09 March 06 11:43 PM

Beh, posso proprio dire di essere contento di vedere come viene usato Visual C# Express.

Richard Wilson nel suo sito sulla Bibbia ha deciso di scrivere la nuova versione del suo magnifico programma in C# 2.0(http://www.laparola.net/programma/beta7.php).

 

Postedby giuliov | 0 Comments    
Due cose sulla configurazione in Whidbey
08 March 06 07:06 PM

Per leggere la configurazione da un assembly DLL la risposta è su http://blogs.msdn.com/rprabhu/articles/433979.aspx alla domanda
Q: Is there a way to access settings from the configuration files if I don't have a reference to the settings class that owns them?
Il trucco è apporre l'attributo SettingsGroupNameAttribute alle classi sosia preparate nella DLL.

Nel mentre ho trovato un simpatico esempio Client Settings Web Services Sample (http://msdn2.microsoft.com/en-us/library/ms180994.aspx). Attenzione così com'è è sconsigliabile per un sistema enterprise (difetta in gestione degli errori, sicurezza, tracciamento, ...) ma è un'idea su cui ricamare sopra.

Postedby giuliov | 0 Comments    
A volte ritornano
08 March 06 10:00 AM

Guarda guarda, segnalata da scottgu c'è una soluzione per uno splash screen ASP.Net... ed è identica a quella che ho realizzato...hmmm.... secondo il mio archivio nel 2003!

A chi interessa è descritta qui: http://www.lennybacon.com/PleaseWaitBuildingAWaitScreenControlForASPNET.aspx.

Benché sia tuttora in produzione su un cliente importante, fu una scelta sofferta che oggi sconsiglierei. Allora sentivamo importante la necessità di ridurre al minimo i round-trip e le redirect, ma questa tecnica fa' in modo che la pagina dia sempre, a livello HTTP, 200 OK. Se nel seguito dell'elaborazione la pagina ha un errore, questo non viene registrato nel log di IIS, né viene rilevato tra i performance counters.

Postedby giuliov | 0 Comments    
Mi ha imbarazzato
07 March 06 07:19 PM

Stamattina ascoltavo in macchina il podcast di Ron Jacobs e... toh fa' il mio nome.

http://channel9.msdn.com/Showpost.aspx?postid=167581

Thanks Ron, you embarassed me a bit.

Postedby giuliov | 0 Comments    

This Blog

Syndication

Page view tracker