Microsoft ha finalmente rilasciato l’agognato Keyboard Layout Creator compatibile con Vista!

Supponiamo che dobbiate fare uno script in Perl (ActiveState ActivePerl gira benissimo su Vista) e dobbiate usare uno di quei caratteri dispettosi come ~ (tilde) o ` (apice inverso). Ovviamente siete in Italia e avete a disposizione una bella tastiera italiana (la 141, quella di default). I caratteri tilde e apice inverso non ci sono. Solitamente si preme ALT seguito dai tasti numerici sul tastierino numerico del codice del carattere desiderato e si ottiene il carattere desiderato.

Tutto questo funziona molto male se avete un portatile visto che il tastierino numerico non c’è.

Per risolvere il problema con il tool in questione ho creato un layout di tastiera dove il carattere tilde è mappato sulla combinazione AltGr+ì e il carattere apice inverso sulla combinazione AltGr+’  (sono i tasti sopra le parentesi quadre). A questo punto installo questo layout e lo utilizzo al posto di quello standard.

I questo modo programmare in Perl diventa molto più semplice! ;-)

Per i più giocosi lo strumento può anche essere utile per fare simpatici scherzi (declino ogni responsabilità per le eventuali reazioni violente da parte del bersaglio dello scherzo).

P.S.: tra le altre cose da oggi si può acquistare Vista in negozio.

Alcune delle domande effettuate durante il webcast con le relative risposte. Risponderò prossimamente alle altre. In ogni caso vi rimando ai siti di Microsoft per ottenere informazioni dettagliate.

D: Quali specifiche di processore esige Vista?

R: Una risposta universale a questa domanda non esiste perché dipende dall’uso che se ne vuole fare. Ovviamente se necessitano grandi capacità di calcolo è meglio orientarsi alle CPU più recenti (multicore a 64 bit). Microsoft dichiara che serve un processore con un clock minimo di 800 MHz per la versione Home Basic.  Ci sono poi altri aspetti da considerare come la quantità di RAM, la velocità dei bus e così via.

D: Di quanta RAM di sistema è necessario disporre per poter eseguire vista in modo agevole?

R: Come sopra la risposta dipende dall’uso che se ne vuole fare. La RAM minima richiesta è di 512 MB. Se si acquista una macchina nuova il mio personale consiglio è di prendere molta RAM perché, insieme al processore, è il componente che diventa più rapidamente obsoleto e in futuro sarà probabilmente difficile da reperire. Avere molta RAM in generale rende più longeva la macchina.

D: Vista funziona su un Pentium 4?

R: Sì.

D: Saranno modificate anche le periferiche standard (es.: tastiera, mouse) per l’utilizzo di Vista?

R: Vista usa delle normali tastiere e dei normali mouse. Però i produttori stanno creando tastiere con qualche tasto e funzione specializzati ma sono solo aggiunte comode ma non necessarie.

D: Quale è la compatibilità con tutti i programmi nati per XP?

R: la compatibilità è molto buona ma non completa. In generale i programmi scritti bene girano su Vista. Il problema è che esistono programmi, anche di aziende famose, non scritti bene. Vista ha un meccanismo di compatibilità per risolvere molti di questi problemi. Personalmente ho trovato diversi programmi con installatori obsoleti che non si comportano bene. Alcuni dispositivi hanno a volte driver non compatibili. I programmi che lavorano a livello di sistema potrebbero soffrire di incompatibilità: ad esempio per gli antivirus si richiede una versione specifica (quasi tutti i produttori hanno rilasciato aggiornamenti o stanno per rilasciare aggiornamenti per Vista).

D: I software gestionali attualmente usati sono tutti compatibili?

R: No! Ma ho ci sono programmi che ancora oggi non sono compatibili neppure con XP! Altri invece si comportano egregiamente. E’ necessario chiedere al fornitore quale supporto diano. Per esperienza personale di solito questi fornitori tendono a scoraggiare l’utente con varie motivazioni più o meno valide.

Vista e DRM

29 Gennaio 2007

Dopo aver tenuto il webcast su Vista insieme allo IAL sto analizzando le domande arrivate in chat e sto preparando delle risposte più articolate. E’ interessante notare che alcune delle domande riflettono la particolare disinformazione che circonda alcuni aspetti del sistema. Mi riferisco in particolare al DRM e al TPM. In questo post voglio accennare al DRM (sul TPM tornerò in seguito).

Intanto occorre dire che, compatibilità a parte, su Vista si può fare quello che si fa su XP con lo stesso livello di libertà. In altri termini su Vista potete far girare tutti i contenuti e i tool che giravano su XP (sempre che non abbiano problemi di compatibilità tecnica con il sistema operativo).

Oltre a questo Vista supporta i contenuti ad alta definizione (HD). Gli standard HD hanno una serie di protezioni come il DVD ha il suo. Le stesse protezioni le trovate in dispositivi riproduttori di natura diversa (penso ai lettori di dischi e agli home theatre).  

Quindi le favole che riguardano il DRM sono frutto della scarsa conoscenza o della mala fede.

Vi rimando ad un post (in inglese) di Chris Lanier sull’argomento: mi sembra molto esplicito.

Passato e presente

29 Gennaio 2007

IERI

 

OGGI

 

IERI E OGGI!?!

Ahead ha rilasciato l’ultima versione (7.7.5.1) di Nero 7 Premium con il logo Windows Vista Ready. Fiducioso come il solito l’ho installato su un paio di macchine Vista Ultimate che contenevano unaversione precedente (7.5.9.0A).  

Questa operazione ha provocato il disastro!

In pratica non vengono più create le icone in base al contenuto dei file.

Nella figura si può notare l’icona generata prima dell’aggiornamento e quella generata dopo. Il fatto è abbastanza grave perchè con il media center non si riescono a vedere le preview delle foto (e se ne avete migliaia è seccante).

Ho effettuato un ripristino ma secondo me la situazione era già compromessa dalla vecchia versione. Analizzando più a fondo il problema sembra che vengano tolte delle informazioni riguardanti la registrazione della estensione del file dal registry. Per esempio nel caso di un file GIF nel registry dovrebbe esserci una cosa del genere (presa da un altro PC con Vista installato):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif]
Content Type“=”image/gif
@=”
PerceivedType“=”image
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\OpenWithList]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\OpenWithList\CoverDes.exe]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\OpenWithList\ois.exe]
@=”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\OpenWithList\PhotoSnapViewer.exe]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\OpenWithProgids]
giffile“=”
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gif\PersistentHandler]
@=”{098f2470-bae0-11cd-b579-08002b30bfeb}

Invece non c’è nulla.

Ora questo magari è dovuto alla configurazione dei miei due sistemi. Siccome la prudenza non è mai troppa il mio consiglio comunque è questo:

  1. Eseguite un salvataggio dello stato del sistema creando un Restore Point prima di installare Nero 7 (si apre dal Control Panel il pannello System e si clicca sulla voce System Protection presente a sinistra del pannello. Si clicca sul pulsante Create e si procede).
  2. Installate Nero 7
  3. Verificate da Windows Explorer che dopo l’aggiunta di file multimediali vengano create le icone con il contenuto e che vengano anche aggiornate le icone delle cartelle . Utilizzate file video e foto con varie estensioni.
  4. Come sopra ma da Media Center. Ricordate anche di registrare qualcosa dalla TV.

Se funziona siete a posto. Se non funziona potete sempre ripristinare il sistema allo stato corretto. In questo secondo caso avvertite pure il produttore. Se invece funziona allora la colpa è delle mie due macchine e del software installato precedentemente. In ogni caso fatemi sapere come va lasciandomi un commento.

Vi segnalo questo primo articolo di Mark Russinovich sul kernel di Vista.

http://www.microsoft.com/technet/technetmag/issues/2007/02/VistaKernel/default.aspx

E’ un articolo breve ma interessante. Ne dovrebbe seguire un’altro.

Russinovich è un conoscitore del kernel Windows ed è anche il signore che ha esaminato a fondo il root kit che Sony ha utilizzato per “proteggere” i suoi CD musicali. Insomma non è certo un dilettante.

Backup

16 Gennaio 2007

Di solito i miei post nel blog sono di carattere generico o filosofico. Ultimamente poi ne è comparso uno di carattere tecnico su XAML (e probabilmente ne seguiranno altri man mano che andrò avanti nello sviluppo di una applicazione concreta e incontrerò aspetti particolari). Difficilmente parlo di funzionalità del sistema operativo visibili all’utente finale in modo specifico o delle ultime novità: ci sono altri siti e altri blog (anche in italiano) che lo fanno meglio di me.

Però stavolta voglio parlare del backup integrato in Vista (ma non preoccupatevi: la filosofia torna in fondo al post). Come tutti saprete il file system di Vista somiglia a quello di 2003: possiede le Shadow Copy, un meccanismo che crea una sorta di snapshot dei file in modo da poter recuperare le precedenti versioni o poter effettuare un backup a caldo. E in effetti il backup di Windows Vista lo utilizza.

Tempo fa ho deciso di provare ad effettuare il backup di uno dei miei portatili usando proprio lo strumento fornito dal sistema per questo. Devo ammettere che mi sono avvicinato con una certa aria di sufficienza, abituato come sono a soluzioni di classe enterprise di diversi produttori (due a caso: IBM e Symantec).

Invece quale sorpresa! :-o

Il backup di Vista funziona su dischi anche esterni e di rete. Lo si configura in pochi secondi. Non serve dirgli cosa backuppare ma solo selezionare le categorie dei file da salvare. O di fare il salvataggio di tutto il sistema. Non serve ricordarsi di farlo o di schedularlo visto che fa tutto lui (e al limite ti avverte che non è riuscito a fare il backup: mi capita quando non collego nel giorno e nell’ora previsto il dispositivo di backup). Il restore di un file (comprese le sue ACL) è semplicissimo e usa come interfaccia un wizard con i nuovi dialoghi di selezione dei file (in pratica come Windows Explorer). 

Insomma non ha sicuramente quelle funzioni presenti in un backup di tipo enterprise ma per salvare i dati dei propri PC casalinghi o dei portatili degli utenti che spesso non sono i sede è l’ideale: non serve spiegarlo all’utente (non più che tanto, almeno). Insieme con i file offline gestiti dal Sync Center possono essere una ottima soluzione da impiegarsi anche in azienda per certe tipologie di utente.

Dateci un’occhiata e non sottovalutatelo.

E ora la filosofia. Il Backup And Restore è una funzionalità di Windows che combina diverse tecnologie sempre molto complesse per l’utente finale e le rende accessibili. In Vista questo motivo (o dovrei dire pattern) si ritrova. Per esempio nel Network Sharing Center che propone una gestione delle condivisioni di rete e delle ACL umananamente gestibile (per i non informatici, intendo).

Evidentemente anche i miei programmi dovranno usare un approccio simile.  

This is the result of a discussion that I had in a MSDN Forum devoted to WPF development.

I have a XAML page with many fields bounded to the fields of a typed DataRow (PersonDataSet.PersonRow). This PersonRow is generated by Visual Studio and have many fields like Name, Phone, Mobile, Address, SSN, etc.

In the page every field is defined with some XAML code similar to this snippet:

  <TextBox
     Name="Name"
     Text="{Binding Path=Name, UpdateSourceTrigger=Explicit}">
  </TextBox>

I have different types of controls like TextBox or ComboBox. I used explicit update because I want to save modifications only when the user press a Save button. In the code I defined

  PersonDataSet.PersonRow personRow;

and I used this variable as page DataContext object. The variable references to an instance contained in a PersonDataSet object (results of a query on a SQL Server db).

Basically I have tWo event handlers: SaveData e UndoData. The first is called when the user clicks a save button, the second when the user clicks an undo button.

 
public void SaveData(object sendere, RoutedEventArgs args)
{
  BindingExpression exprName =
           Name.GetBindingExpression(TextBox.TextProperty);
  exprName.UpdateSource();
  …
  … many lines of code similar to the two lines above
  … 
  // save the data into the db.
  using (PersonDataSetTableAdapters.PersonTableAdapter ta =
           new PersonDataSetTableAdapters.PersonTableAdapter())
  {
    ta.Update(personRow);
  }
}

public void UndoData(object sendere, RoutedEventArgs args)
{
  BindingExpression exprName =
        Name.GetBindingExpression(TextBox.TextProperty);
  exprName.UpdateTarget();
  …
  … many lines of code similar to the two lines above
  …
}

The code is working well but if I have 50 fields I need to write 200 lines of code. I can use some scripting or macros but I’m worried if there is a more efficient way to have the same behavior.

After a brief discussion I decided that a bit of recursive code that visits the object tree can solve the problem. The code below implements a more generic undo function.

public void RecurseUndoData(UIElement element)
{
  if (element is Panel)
  {
    foreach (UIElement childElement in ((Panel)element).Children)
    {
    RecurseUndoData(childElement);
    }
  }
  else
  {
    BindingExpression bindExpr = null;
    if (element is TextBox)
    {
      bindExpr = ((TextBox)element)
            
.GetBindingExpression(TextBox.TextProperty);
    }
    else if (element is ComboBox)
    {
      bindExpr = ((ComboBox)element)
            .GetBindingExpression(ComboBox.SelectedValueProperty);
    }
    else if (element is DatePicker)
    {
      bindExpr = ((DatePicker)element)
            .GetBindingExpression(DatePicker.ValueProperty);
    }
    if (bindExpr != null)
    {
      bindExpr.UpdateTarget();
    }
  }
}
 

The RecurseSaveData is similar. The problem with this approach is that you need to know which type of controls you are using. Note that I wrote 

  if (element is TextBox)

and the other similars statements because GetBindingExpression function require the bounded dependency property. If you introduce more control types, you need to expand these functions adding more if clauses. 

I decided to centralize the logic to better manage the changes and I build an helper class with (a more complex version of) the two functions. 

Have some better ideas?

Grafica vettoriale

15 Gennaio 2007

Questa è una delle cose che rendono WPF e Vista così interessanti.

Se osservate ci sono due finestre affiancate di due applicazioni diverse. La prima è una tradizionale applicazione GDI che sfrutta il “vecchio” sistema grafico di Windows. La seconda è una applicazione WPF su cui sto lavorando. La porzione di schermo è stata presa dal Magnifier di Windows Vista. 

Nel primo caso il magnifier ha eseguito un normale zoom usando il normale blitter. Nel secondo caso il magnifier ha lavorato al livello di grafica vettoriale. Infatti nel primo caso si notano i pixel ingranditi mentre nel secondo no: la scritta e anche il resto hanno una qualità elevata con tanto di antialiasing e supporto ClearType.

Questa funzionalità potrebbe essere attiva anche remotamente. In pratica il rendering dei programmi WPF verrebbe effettuato solamente nel client locale e sulla rete transiterebbero solo i comandi relativi agli oggetti grafici. Con poco sforzo si potrebbe costruire un sistema di terminale Windows molto efficiente. E in effetti Microsoft sta lavorando su una cosa che si chiama WPF Remoting e che dovrebbe fare proprio questo. E sembra che sia il gruppo del Terminal Server (TS) a lavorarci sopra. Questo dovrebbe essere disponibile con il server Longhorn (vi rimando alla chat del 1o Agosto 2006 su TS in Longhorn).

WPF supporta anche programmi WPF ospitati nel browser e sta anche lavorando anche su WPF/E, un plugin per vari browser (IE, Firefox e Safari) multipiattaforma (Windows e Mac OSX al momento) in grado di ospitare programmi WPF semplificati. Notare che in WPF/La E sta per EveryWhere e, in parole povere, WPF/E è il Flash di Microsoft.

Combinando le due cose, i nostri amici di Redmond potrebbero ottenere risultati ancora più interessanti.

Il nuovo messenger di Yahoo! è fatto sfruttando WPF e Vista. E’ una applicazione molto appariscente ma interessante. Mostra alcuni aspetti che, conoscendo l’architettura di WPF, sono quasi “banali” (dopo che li hai visti in azione però). Da guardare.

Mentre questo tipo di approccio è adatto al pubblico di Yahoo!, io non adotterei questo stile nelle applicazioni aziendali su cui noi solitamente operiamo. Io sono per un approccio minimalista senza fronzoli. In altre parole semplicità e linearità. Però anche in questo caso WPF può dare moltissimo. E in effetti i nostri primi risultati sono, secondo me, notevoli. E anche i clienti sembrano apprezzare.