-
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.
-
Purtroppo certi theme sono molto belli... ma troncano il codice. Questo stile Simple è un po' scarno ma ha il vantaggio di facilitare la lettura.
-
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 ;-)
-
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.
-
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.
-
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.
.NET Framework 2.0
- Xml (XSL, XSD), protocolli HTTP, FTP, System.Configuration, insomma chi più ne ha più ne metta.
SQL Server 2005
Exchange 2007
- L'amministrazione della nuova versione di Exchange è stata un banco di prova per PowerShell
IIS 6
- Amministrabile mediante ADSI e WMI
IIS 7
SharePoint 2007
Virtual Server 2005
BizTalk 2006
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
-
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:
- Windows Powershell in Action di Bruce Payette
- Microsoft Windows PowerShell: TFM di Don Jones e Jeffery Hicks
- Microsoft Windows Powershell Programming for the Absolute Beginner di Jerry Lee Ford Jr.
- Monad: Introducing the New MSH Command Shell and Language for Windows di Andy Oakley and Jeffrey Snover
Più altri quattro in uscita
- Professional Windows PowerShell di Andrew Watt
- Windows® PowerShell Unleashed di Tyson Kopczynski
- Microsoft Windows PowerShell™ Step By Step di Ed Wilson
- 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.
-
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.
- 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
- 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.
- 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.
-
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.
-
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.
-
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 ;-)
-
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).
-
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.
-
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.
-
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.