Posts
163
Comments
179
Trackbacks
5
marzo 2007 Blog Posts
ASP.NET cache in un'applicazione Windows Form

Sto sviluppando un'applicazione Windows Form ed è nata la necessità di utilizzare una piccola cache interna per mantere tutti quei dati "costanti" o che cambiano con frequenza molto bassa. Banalmente devo poter inserire un oggetto nella cache per X secondi e recuperarlo successivamente. Non ho necessità di avere cache condivisa tra più applicazioni ne ho necessità di altre funzionalità più complesse.

In rete ho trovato questo articolo che illustra brevemente come utilizzare la cache ASP.NET da una Windows Form. Rispetto al codice dell'esempio e prendendo spunto da uno dei commenti, ho notato che è possibile utilizzare direttamente l'oggetto HttpRuntime.Cache dato che è statico.

Qualcuno sa se questo sistema sia affidabile o se dia problemi di qualche tipo? 

posted @ mercoledì 14 marzo 2007 13:48 | Feedback (8)
Scrittura su disco di una stringa di caratteri ASCII

Cosa c'e' di più semplice di salvare una stringa di caratteri su un file di testo? Usiamo uno StreamWriter, richiamiamo il metodo Write passandogli la stringa. Fine.
Effettivamente così funziona. Ma iniziamo ad inserire qualche vincolo in più. Supponiamo che la stringa di input sia una stringa ASCII generata casualmente e il codice dei caratteri ASCII presenti vada da 0 a 255 (quindi viene utilizzata anche la tabella estesa). Supponiamo inoltre che il file debba avere una lunghezza prefissata, pari al numero di caratteri della stringa di input. Infine supponiamo che questo file debba essere elaborato da un vecchio programma che non può essere modificato.

Se passiamo il file generato dallo StreamWriter precedente otterremo un errore. Andando a spulciare la documentazione si può notare che l'oggetto StreamWriter utilizza come codifica predefinita l'UTF-8, che nel caso specifico non viene interpretata corettattamente dal vecchio programma.

L'oggetto StreamWriter mette a disposizione anche una serie overload, in cui è possibile specificare, anche la codifica da utilizzare. Possiamo quindi specificare la codifica ASCII e il gioco è fatto. Il codice seguente mostra un esempio di utilizzo:

  Public Sub WriteASCIIFile(ByVal fileName As String, ByVal content As String)
    Using sw As StreamWriter = New StreamWriter(fileName, False, Encoding.ASCII)
      sw.Write(content)
      sw.Close()
    End Using
  End Sub


Andando a verificare il file ottenuto, la dimensione è quella corretta e tutto sembra a posto. In realtà andando a guardare bene i lfile ottento, tutti i caratteri della tabella ASCII estesa sono stati sostituiti con dei punti interrogativi. Questo perchè la codifica ASCII utilizza 7 bit e quindi gestisce solo i caratteri con codici che vanno da 0 a 127.
La soluzione è quella di utilizzare l'encoding di default, che recupera la tabella dei codici ANSI definita nelle impostazioni internazionali, oppure utilizzare il metodo System.Text.Enconding.GetEncoding per recuperare una tabella di codici di decodifica specifica (l'elenco di tutte le codifiche disponibili nel sistema si ottiene chiamando il metodo System.Text.Enconding.GetEncodings).
Il codice precedente diventa quindi:

  Public Sub WriteASCIIFile(ByVal fileName As String, ByVal content As String)
    Using sw As StreamWriter = New StreamWriter(fileName, False, Encoding.Default)
      sw.Write(content)
      sw.Close()
    End Using
  End Sub
posted @ venerdì 9 marzo 2007 10:20 | Feedback (3)
Eliminare le cartelle di sistema di Vista da XP

Mi è capitato, durante i miei test, di voler eliminare un'installazione di Vista da Windows XP con i due sistemi operativi in dual boot.
Provando ad eliminare una delle directory di sistema, il messaggio che viene restituito è un errore di Accesso Negato. Il problema risiede nel fatto che l'owner dei file di sistema di Vista è un utente di sistema con un SID non riconosciuto da Windows XP.
La soluzione è quella di prendere l'ownership delle directory e di cambiare le permission. Riporto i passi da eseguire (presi dalla KB 308421):

Se XP non è in dominio potrebbe essere necessario disabilitare il Simple File Sharing:

  1. Click Start, and then click My Computer.
  2. On the Tools menu, click Folder Options, and then click the View tab.
  3. Under Advanced Settings, click to clear the Use simple file sharing (Recommended) check box, and then click OK.

Prendere l'ownership di una cartella

  1. Right-click the folder that you want to take ownership of, and then click Properties.
  2. Click the Security tab, and then click OK on the Security message (if one appears).
  3. Click Advanced, and then click the Owner tab.
  4. In the Name list, click your user name, or click Administrator if you are logged in as Administrator, or click the Administrators group. If you want to take ownership of the contents of that folder, select the Replace owner on subcontainers and objects check box.
  5. Click OK, and then click Yes when you receive the following message:
  6. You do not have permission to read the contents of directory folder name. Do you want to replace the directory permissions with permissions granting you Full Control?
    All permissions will be replaced if you press Yes.

    Note folder name is the name of the folder that you want to take ownership of.

  7. Click OK, and then reapply the permissions and security settings that you want for the folder and its contents.
posted @ venerdì 2 marzo 2007 09:52 | Feedback (1)
Passato anche l'esame beta 71-540!

Questa volta mi hanno fatto attendere più del dovuto! Dopo più di 5 mesi, oggi spulciando sul sito della PearsonVue, ho scoperto di aver passato anche l'esame  70-540 "TS: Microsoft Windows Mobile 5.0 - Application Development che avevo dato in beta.
Devo dire che è stato l'esame più difficile che mi sia capitato di dare, vuoi perchè per lavoro non sto ancora sviluppando su palmari, vuoi perchè c'era molta carne al fuoco. Nel rispetto dell'NDA, l'unico suggerimento che mi sento di dare a chi vuole cimentarsi con questo esame, è quello di studiarsi bene la parte di accesso ai dati, l'RDA, il merge replication, l'interoperabilità e la gestione dell'oggetto OutlookSession. Chiaramente rimane un requisito fondamentale la buona conoscenza del Framework .NET 2.0.

posted @ giovedì 1 marzo 2007 20:03 | Feedback (0)
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS