Archivi giornalieri: 13 gennaio 2008

VB 2005/2008: connessione a database con ADO.NET 2.0

Questo articolo è stato integrato con un secondo articolo: vedi link alla fine dell’articolo! 

Premessa
Questo articolo tratta un argomento fondamentale per la gestione dei dati: la connessione ai database.
Dapprima si proverà, in modo molto empirico e molto poco teorico, a creare, aprire e chiudere una connessione a un database. Saranno utilizzati un database Access e un database SQL Server per fornire delle linee guida adatte a entrambi i casi.
In seguito, verrà esposto un modo migliore per memorizzare la stringa di connessione. Verrà fatto qualche nuovo suggerimento e si considererà l’esigenza di svincolare il codice dalla stringa di connessione.
In questo articolo non si farà alcun uso effettivo delle connessioni: l’obiettivo è solamente quello di svelare un modo semplice per creare una connessione ai due DBMS Microsoft in commercio (Access e SQL Server).

ConnectionString
Prima di tutto è necessario avere a disposizione due database di prova per creare la stringa di connessione (ConnectionString) corretta.
Cos’è la “stringa di connessione”? E’ una stringa che raccoglie tutti i parametri necessari alla impostazione di una connessione, definiti dalla coppia “nome parametro”=”valore parametro”.
Nel seguito del presente articolo si potrà vedere un esempio concreto.
La procedura per creare una stringa di connessione a un database Access è la seguente:

  1. si crei un database Access vuoto di nome “DBprova.mdb” nella cartella C:\VB2005\ (una cartella di prova). All’interno di tale database potranno essere create una o più tabelle, ma in questo momento non è molto importante;
  2. in un’area vuota del desktop o in una cartella, fare clic con il tasto destro del mouse, scegliere “Nuovo” e poi “Documento di testo“. Verrà creato un file di nome “Nuovo documento di testo.txt“;
  3. rinominare il file assegnandogli il nome, per esempio, “DBprova.udl“. Non è necessario comunque utilizzare lo stesso nome del database: anche il nome “pippo.udl” va benissimo;
  4. con un doppio clic su tale file, verrà aperta una finestra di dialogo per l’impostazione della connessione. La finestra mostrerà automaticamente la scheda “Connessione“;
  5. spostarsi prima di tutto nella scheda “Provider” e scegliere la voce “Microsoft Jet 4.0 OLE DB Provider“;
  6. fare click sul pulsante “Avanti“; questo attiverà la scheda “Connessione“, nella quale bisognerà scegliere il database DBprova.mdb creato in precedenza;
  7. inserire il nome utente “Admin“, disattivare la casella di spunta “Nessuna password” e poi fare click sul pulsante “Verifica connessione“, per testare la connessione appena creata. Se tutto si è svolto correttamente, comparirà un messaggio “Verifica connessione effettuata“, altrimenti comparirà un messaggio di errore “Verifica connessione non riuscita” e altri elementi utili, come il percorso e il nome del file;
  8. confermare facendo click sul pulsante “OK“.

Ora che si dispone di un file .UDL, che a dispetto della sua estensione è un normale file di testo, si può procedere alternativamente come segue:

  • rinominare il file “DBprova.udl” in “DBprova.txt” e fare doppio click sull’icona del file;
  • fare click con il tasto destro del mouse sul nome “DBprova.udl” e scegliere “Apri con…“, selezionando poi il programma Notepad per aprire il file.

Il contenuto del file sarà pressappoco il seguente (potrà variare in qualche dettaglio, a seconda del nome e della posizione del database Access):

[oledb] ; Everything after this line is an OLE DB initstring 
Provider=Microsoft.Jet.OLEDB.4.0; 
Data Source=C:\VB2005\DBprova.mdb; 
Persist Security Info=False

I parametri, indicati secondo lo schema “chiave=valore”, sono i seguenti:

Provider=Microsoft.Jet.OLEDB.4.0 
Data Source=C:\VB2005\DBprova.mdb 
Persist Security Info=False

A questo punto il file DBprova.udl non è più necessario e può essere archiviato o cancellato. Ovviamente sarà necessario tenere nota di quanto indicato sopra per continuare l’esercizio.

Per ottenere una stringa di connessione per un database SQL Server si dovrà invece procedere come segue:

  1. creare un database SQL Server, indicando il nome “SQLprova” e una posizione per i file rispettivamente per i dati e per il log;
  2. procedere come ai punti 2, 3 e 4 dell’esempio precedente, creando (ad es.) il file “SQLprova.udl”;
  3. spostarsi nella scheda “Provider” e scegliere la voce “Microsoft OLE DB Provider for SQL Server”;
  4. fare click sul pulsante “Avanti”; questo attiverà la scheda “Connessione”, nella quale bisognerà indicare il server o il nome del PC sul quale è installato SQL Server;
  5. attivare la voce “utilizza password e nome utente specifici” e inserire le credenziali per l’accesso (utente/password), attivare la casella di spunta “consenti salvataggio password” (fortemente sconsigliato: qui viene fatto solo per verificare cosa viene inserito nel file .UDL) e selezionare il database al quale si desidera effettuare la connessione;
  6. fare click sul pulsante “Verifica connessione”, per testare la connessione appena creata. Come nell’esempio precedente, tutto si sarà svolto correttamente se comparirà un messaggio “Verifica connessione effettuata”;
  7. confermare facendo click sul pulsante “OK”.

Aprendo il file SQLprova.udl si troverà la seguente stringa di connessione:

[oledb]; Everything after this line is an OLE DB initstring 
Provider=SQLOLEDB.1; 
Password=miapassword; 
Persist Security Info=True; 
User ID=sa; 
Initial Catalog=SQLprova; 
Data Source=PC01

In questo caso i parametri sono i seguenti:

Provider=SQLOLEDB.1Password=miapassword 
Persist Security Info=True 
User ID=sa 
Initial Catalog=SQLprova 
Data Source=PC01

Ecco quindi il motivo per cui il salvataggio della password è fortemente sconsigliato: il file di testo contiene la password in chiaro e quindi perfettamente leggibile anche per chi non dovrebbe conoscerla.
Premesso che, per motivi di sicurezza, la password deve essere sempre richiesta all’utente tramite una form, si procederà in questo esempio senza applicare questa cautela solo per comodità espositiva.

Il progetto di esempio
A questo punto è possibile creare un progetto di esempio in Visual Basic 2005.
Sarà mostrato un programma molto semplice che mostrerà una form contenente tre pulsanti: uno per attivare una connessione al database Access, uno per la connessione al database SQL Server e uno per chiudere entrambe le connessioni.
Creare un nuovo progetto e inserire sulla form (dal nome di default Form1) tre pulsanti da ridenominare rispettivamente ApriDBAccess, ApriDBSQL e ChiudiDB.

Per procedere con questo esempio c’è la necessità di inserire due oggetti: OLEDBConnection e SQLConnection. Tali oggetti non sono presenti per default nella casella degli strumenti ed è quindi necessario aggiungerli con la seguente procedura:

  1. fare click con il tasto destro del mouse sulla casella degli strumenti (non importa se lo si fa su un componente o sul nome di un gruppo di componenti) e scegliere la voce “Scegli elementi…”;
  2. dopo qualche istante comparirà una finestra con l’elenco di tutti i componenti di .NET Framework, con le caselle di spunta attivate o disattivate per ciascun componente;
  3. cercare i componenti OLEDBConnection e SQLConnection e attivare per entrambi la casella: questa azione aggiungerà tali componenti alla casella degli strumenti;
  4. chiudere la finestra di selezione e fare doppio click una volta su OLEDBConnection e una volta su SQLConnection: i due componenti saranno inseriti nell’area dei componenti “non visuali” che si trova al di sotto del Form Designer.

A questo punto, fare doppio click su uno dei pulsanti e, all’interno della classe Form1, inserire il seguente codice:

 Public Class Form1 
    Private Sub ApriDBAccess_Click(ByVal sender As System.Object, _ 
            ByVal e As System.EventArgs) Handles ApriDBAccess.Click 
      Me.OleDbConnection1.ConnectionString = _ 
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
            "Data Source=C:\VB2005\DBprova.mdb;" & _ 
            "Persist Security Info=False" 
      Me.OleDbConnection1.Open() 
      MessageBox.Show("Database Access aperto!") 
    End Sub 
    Private Sub ApriDBSQL_Click(ByVal sender As System.Object, _ 
            ByVal e As System.EventArgs) Handles ApriDBSQL.Click 
      Me.SqlConnection1.ConnectionString = _ 
            "Password=miapassword;" & _ 
            "Persist Security Info=False;User ID=sa;" & _ 
            "Initial Catalog=SQLprova;Data Source=PC01" 
      Me.SqlConnection1.Open() 
      MessageBox.Show("Database SQL Server aperto!") 
    End Sub 
    Private Sub ChiudiDB_Click(ByVal sender As System.Object, _ 
            ByVal e As System.EventArgs) Handles ChiudiDB.Click       
       Dim messaggio As String = ""       
       Dim flag As Integer = 0 
       If Me.SqlConnection1.State = 0 _ 
             And Me.OleDbConnection1.State = 0 Then 
          ' Me.SqlConnection1.Close()   --> istruzione ignorata 
          ' Me.OleDbConnection1.Close() --> istruzione ignorata 
          messaggio = "Nessun database da chiudere!" 
       Else 
          messaggio = "Eseguita chiusura di " 
          If Me.SqlConnection1.State = 1 Then 
             Me.SqlConnection1.Close() 
             messaggio &= "Database SQL Server" 
             flag = 1     ' --> per composizione messaggio 
          End If 
          If Me.OleDbConnection1.State = 1 Then 
             Me.OleDbConnection1.Close() 
             If flag = 1 Then 
                messaggio &= ", " 
             End If 
             messaggio &= "Database Access" 
          End If 
       End If 
       MessageBox.Show(messaggio) 
    End Sub 
 End Class

E’ importante osservare che:

  • la stringa di connessione per il database SQL Server ha perso la prima parte (parametro Provider) in quanto, ovviamente, SqlConnection è già il provider predefinito per il collegamento ad una fonte dati SQL Server e quindi il parametro Provider della ConnectionString è implicito;
  • per il collegamento al database Access, invece, il parametro Provider è necessario per definire esattamente quale provider OLEDB è necessario utilizzare per connettersi correttamente al database;
  • le variabili messaggio e flag sono semplicemente un espediente per visualizzare un messaggio di conferma comprendente anche il database o i database che sono stati chiusi. Se non è necessario un messaggio dettagliato è possibile utilizzare direttamente le due istruzioni che nell’esempio sono state “commentate” [Me.SqlConnection1.Close() e Me.OleDbConnection1.Close()] perché anche nel caso in cui non vi fosse una connessione aperta non verrebbe comunque generata alcuna eccezione.

ConnectionString 2, la vendetta
Nella prima parte dell’articolo è stato esposto il modo più semplice per generare una stringa di connessione precisa, utilizzando un file .UDL. Sebbene questo sia il modo più semplice ed efficiente, non è l’unico metodo.

Gli sviluppatori più “arditi” possono anche scrivere direttamente la stringa di connessione, anche se non avranno a disposizione la comoda interfaccia grafica, né la possibilità di testare immediatamente la connessione.

Per ottenere un elenco di “template” di stringhe di connessione per i più diffusi DBMS, è possibile visitare il sito http://www.connectionstrings.com/. L’elenco di stringhe di connessione che vi si possono trovare è veramente impressionante. Tutti i template forniti devono poi essere opportunamente adattati in base alla specificità della connessione da attivare: nome del server, del database, utente e password ecc. sono tutti parametri indispensabili che devono essere indicati correttamente, pena un mancato funzionamento della connessione.

Dove salvare la stringa di connessione?
Ad un occhio attento, il programma di esempio presentato nella prima parte ha un difetto o perlomeno una limitazione: la stringa di connessione è memorizzata direttamente nel codice. Ne consegue che è sufficiente installare il nostro programma (e relativo database, Access per esempio) in una posizione diversa da quella prevista, per far sì che non funzioni più alcunché. Basti pensare all’installazione del database sul disco D: oppure una modifica al nome del server sul quale è installato SQL Server.

Un metodo migliore è sicuramente quello di memorizzare la stringa di connessione esternamente al codice, in un “contenitore” più facilmente modificabile anche dall’esterno. Ecco quindi che in passato sono state utilizzate varie alternative: file .INI, voci nel registro di sistema o file di testo.

Con Visual Studio 2005 la posizione più naturale per salvare questo tipo di informazioni è il file di configurazione dell’applicazione, normalmente denominato app.config.
E’ possibile accedere al file di configurazione in due modi:

  • in modalità design: selezionare il menu Progetto > Proprietà di > scheda Impostazioni;
  • in esecuzione: utilizzando My.Setting (oppure la classe Settings in C#).

In questo esempio proveremo a memorizzare la proprietà ConnectionString direttamente nel file di configurazione dell’applicazione, utilizzando la finestra Proprietà.

Riprendiamo quindi l’esempio, semplificando un po’ il progetto per evidenziare meglio le peculiarità delle modifiche che saranno fatte in seguito: nella figura si può vedere il form con i soli pulsanti di apertura e chiusura del database Access e, nel seguito, anche il codice sottostante, dal quale partiremo per effettuare le modifiche previste.

  Public Class Form1 
    Private Sub ApriDBAccess_Click(ByVal sender As System.Object, _ 
            ByVal e As System.EventArgs) Handles ApriDBAccess.Click 
      Me.OleDbConnection1.ConnectionString = _ 
            "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
            "Data Source=C:\VB2005\DBprova.mdb;" & _ 
            "Persist Security Info=False" 
      Me.OleDbConnection1.Open() 
      MessageBox.Show("Database Access aperto!") 
    End Sub 
    Private Sub ChiudiDB_Click(ByVal sender As System.Object, _ 
            ByVal e As System.EventArgs) Handles ChiudiDB.Click 
      If Me.OleDbConnection1.State = 0 Then 
        MessageBox.Show("Nessun database da chiudere!") 
      Else 
        Me.OleDbConnection1.Close() 
        MessageBox.Show("Eseguita chiusura di Database Access") 
      End If 
    End Sub 
  End Class

La procedura per memorizzare la ConnectionString nel file di configurazione dell’applicazione è la seguente:

  1. selezionare il controllo OleDbConnection1 presente nella barra dei componenti del Form Designer;
  2. selezionare tutta la stringa di connessione presente nel codice di cui sopra (cioè tutto quanto è contenuto tra i doppi apici, alla riga che contiene l’istruzione Me.OleDbConnection1.ConnectionString = “Provider=…”) e copiarla negli appunti con la combinazione CTRL+C;
  3. eliminare o commentare (inserendo un singolo apice all’inizio della riga) l’intera istruzione che assegna la stringa di connessione alla proprietà ConnectionString;
  4. sempre nella finestra delle proprietà, espandere la sezione ApplicationSettings, cliccare su PropertyBinding e ancora sul pulsante coi tre puntini;
  5. visualizzare l’elenco ConnectionString e cliccare su Nuova…;
  6. quando apparirà la finestra “Nuova impostazione applicazione“, inserire nella cella DevaultValue la stringa di connessione (con la combinazione CTRL+V);
  7. inserire nella cella Name il nome OleDbConnectionString e confermare con OK sia la finestra “Nuova impostazione applicazione” che la finestra “Impostazioni applicazione“;
  8. avviando l’applicazione con F5 si potrà constatare che funziona correttamente.

Il particolare più interessante di questa procedura è che il file app.config è un semplice file di testo (scritto in XML) che è possibile aprire e modificare con Notepad o altri editor similari.
Dove si trova questo file? Il file si chiama “Settings.settings” e si trova nella sottocartella “My project” della cartella principale del progetto. L’estensione “settings” non è riconosciuta da Windows e, pertanto, sarà necessario scegliere dall’elenco delle applicazioni disponibili (“Apri con...”) un editor di testo a propria scelta.
Il contenuto di Settings.settings, nel caso specifico, è il seguente (per esigenze espositive, alcune righe troppo lunghe sono mandate a capo):

<?xml version='1.0' encoding='utf-8'?> 
<SettingsFile xmlns=http://schemas.microsoft.com/VisualStudio/2004/01/settings 
   CurrentProfile="(Default)" 
   GeneratedClassNamespace="My" 
   GeneratedClassName="MySettings" 
   UseMySettingsClassName="true"> 
   <Profiles /> 
   <Settings> 
      <Setting Name="OleDbConnectionString" Type="System.String" Scope="User"> 
         <Value Profile="(Default)" 
            Provider=Microsoft.Jet.OLEDB.4.0; 
            Data Source=C:\VB2005\DBprova.mdb; 
            Persist Security Info=False 
         </Value> 
      </Setting> 
   </Settings> 
</SettingsFile>

A questo punto, se si dovesse rendere necessario modificare la stringa di connessione, lo si potrebbe fare direttamente su questo file, senza modificare il progetto e ricompilarlo.

Conclusioni
In questo articolo abbiamo illustrato un modo semplice per ottenere una stringa di connessione e una soluzione professionale per svincolare questo dato dal codice.

AGGIORNAMENTO: Articolo integrativo QUI!

Nell’articolo integrativo ho precisato meglio dove trovare il file delle impostazioni dell’applicazione (che nel progetto si chiama Settings.settings, mentre compilato si chiama “qualcosa di diverso”  :-) ). Inoltre, con tale articolo integrativo ho fornito anche un file compresso con il progetto di esempio scaricabile, valido anche per questo articolo.

[SQL Server 2000] Tool per creare la documentazione automatica di un database

Su CodeProject c’è un sorgente corredato dall’articolo “DBdoc: automated CHM documentation for a SQL Server 2000 database” che spiega come utilizzare il tool DBdoc per documentare un database di SQL Server 2000, generando un help file in formato CHM.

[Access] Diagrammi di Gantt con Access per la pianificazione di progetti

Sul sito Microsoft (portale per le PMI) è disponibile un articolo che spiega come è possibile creare diagrammi di Gantt con Access per la pianificazione di progetti. Dalla stessa pagina è possibile scaricare un file PDF con l’intero articolo e un file .zip con il database Access di esempio.

Blue Screen of Death: ecco il salvaschermo per i nostalgici!

Punto Informatico segnala, alla pagina http://punto-informatico.it/p.aspx?id=1749788, che è possibile scaricare un salvaschermo che riproduce la schermata blu, tanto odiata dai programmatori e dagli utenti di Windows in quanto appariva soprattutto con le “vecchie” versioni di Windows al momento di un errore fatale (malfunzionamenti dell’hardware o driver scritti male) che quasi sempre comportava lo spegnimento del computer.

Sembra infatti che qualcuno abbia nostalgia di quella schermata…

[Delphi.NET] Download prodotti Borland (free)

Alla pagina http://www.turboexplorer.com/mirror è possibile scaricare gratuitamente i seguenti prodotti free (soltanto nelle localizzazioni inglese, tedesco, francese e giapponese):

  • Turbo C#
  • Turbo C++
  • Turbo Delphi
  • Turbo Delphi.NET

Nella stessa pagina è possibile trovare un eseguibile per installare le componenti che costituiscono i prerequisiti:

  • Microsoft .NET Framework v1.1 Redistributable
  • Microsoft .NET Framework v1.1 SP1
  • Microsoft .NET SDK v1.1
  • Microsoft Internet Explorer 6 SP1
  • Microsoft Visual J# v1.1 Redistributable
  • Microsoft XML Core Services (MSXML) v4.0 SP2

A questo punto si noterà che i prodotti Turbo si basano sul Framework .NET 1.1… Ne consegue che è improbabile che qualcuno scarichi l’ambiente di sviluppo Borland per programmare in C#, ad esempio, dato che la versione 2005 Express di Microsoft è scaricabile liberamente. Potrebbe però essere un’opportunità per provare Turbo Delphi e soprattutto Turbo Delphi.NET, visto che questi due prodotti sembrano riscuotere molto successo presso ampie comunità di sviluppatori.

[eBook] Nuovo libro free Microsoft: “A Jump Start to SQL Server BI”

A questo link è possibile scaricare, previa registrazione gratuita, un nuovo ebook Microsoft riguardante la Business Intelligence e precisamente “A Jump Start to SQL Server BI”.

Il libro tratta gli argomenti tipici della Business Intelligence: creazione di un DataWareHouse, utilizzo del DTS, concetti su MDX, OLAP, Analisys System, Data Mining e creazione di report con Reporting Services.

Il tutto con un occhio di riguardo a SQL Server 2005 e alle novità introdotte con quest’ultima versione.

[RegEx] Tutorial su espressioni regolari

 Segnalo che su Code Project c’è un interessante tutorial sulle espressioni regolari (RegEx) che potrà interessare sicuramente qualcuno.

In fondo all’articolo c’è anche un link per poter scaricare una copia del tool Expresso per sviluppare e testare espressioni regolari.

[SICUREZZA] Un articolo sulla “Code Injection” (non-solo-SQL)

Ecco qui un articolo interessante su Code Project dal titolo “Malicious Code Injection: It’s Not Just for SQL Anymore“.Molti (?) conoscono i problemi di sicurezza che derivano dall’uso maligno delle tecniche di SQL injection, ma molti non conoscono le tecniche della Code Injection. Questa è l’occasione buona per imparare nuove tecniche per scrivere del codice più sicuro.

[ASP.NET 2.0] Tutorial sulla gestione dati

Segnalo la pagina di http://www.asp.net/ dalla quale possono essere scaricati vari tutorial sulla gestione dati con ASP.NET 2.0. I tutorial, disponibili sia per VB che per C#, possono essere consultati on-line o scaricati in comodi PDF (compressi), già pronti per la stampa.

Working with Data in ASP.NET 2.0
http://www.asp.net/Learn/DataAccess/default.aspx?tabid=63

Un “must” per chi vuole cimentarsi sulla gestione dati in ASP.NET 2.0.

Creare il file per la funzione di Autoplay del CD-ROM

Talvolta è necessario creare un CD-ROM autoinstallante, cioè un CD-ROM nella cui “radice” (root) viene posto un file “autorun.inf” contenente le informazioni utili all’avvio del programma che ci interessa, quale potrebbe essere un’installazione di un software oppure il browser per mostrare una pagina HTML.

Un file “minimale” deve contenere almeno queste informazioni:

[autorun] 
OPEN=setup.exe 
ICON=setup.ICO

dove [autorun] è fisso e deve essere la prima riga del file, “OPEN=” indica il file da eseguire e “ICON=” indica il file di icona del programma.

Per aprire il browser Internet con una pagina HTML, si può utilizzare il seguente testo:

OPEN=start.exe index.html

dove “start.exe” avvia l’applicazione predefinita che viene utilizzata per leggere i file .html.

Una piccola, ma valida, guida che spiega in modo dettagliato le varie opzioni e alcune situazioni particolari, può essere trovata alla pagina seguente:

http://www.megalab.it/articoli.php?id=363

Migrare o non migrare da VB6 a VB 2005? Questo è il dilemma…

Premessa
Alla domanda “conviene migrare da VB6 a VB 2005?” oppure “quando migrare?” o ancora “perché migrare?“, posta a 100 programmatori diversi, riceverete 100 risposte diverse e forse anche di più. Sono domande che spesso compaiono nei forum, nei newsgroup e nelle mailing list fin dal primo momento in cui è comparsa la prima versione di VB.NET e che, dopo il rilascio di varie versioni fino all’attuale versione 2005, sono ancora qui a disturbare i nostri sonni e le nostre giornate lavorative.

Le valutazioni “pro” e “contro” su VB.NET e sul framework .NET sono le più svariate e spesso in contrasto tra di loro, in funzione della preparazione tecnica di chi le esprime e delle preferenze di ognuno. Infatti, pur esistendo delle motivazioni tecniche reali che spingono verso i “pro”, ci sono anche molte motivazioni soggettive altrettanto reali che spingono verso i “contro” e viceversa.

Con questo articolo vorrei esprimere in modo possibilmente completo il mio pensiero su questo problema per cercare di mettere ordine ai vari “pro” e “contro”, alla ricerca di argomenti oggettivi che possano orientare il potenziale programmatore “migratore”.

Questo articolo è anche un articolo “anomalo”, rispetto agli standard degli altri articoli pubblicati sul sito http://www.visual-basic.it. Infatti non contiene una-dico-una riga di codice in qualsivoglia linguaggio di programmazione.
Non ho la presunzione di riuscire a proporre un testo “definitivo”, riassuntivo di tutte le voci che ne parlano, né di scrivere qualcosa che possa rispecchiare il pensiero di tutti.
Questo articolo è semplicemente il mio pensiero e vuole essere una base per una utile riflessione che ciascuno può esercitare privatamente, come compito per casa, o pubblicamente nelle liste tecniche.

(sottotitolo: Un monologo esistenziale dovuto (forse) ad un eccesso di caffè?)

La volpe e l’uva
Partiamo dalla prima domanda: “conviene migrare da VB6 a VB 2005?“. La risposta è: dipende. Potrà sembrare semplicistica come risposta, ma ad una domanda del genere non si può rispondere sì o no in modo assoluto, bisogna valutare tutti gli aspetti della questione.

Prima di tutto, un po’ di storia personale. Mi viene in mente la mia carriera di programmatore, a partire da quando ancora non osavo nemmeno dire che ero un programmatore, dato che non ero in grado di esserlo. Nel 1984 ho comprato il mio primo Commodore VIC-20. Ancora oggi ricordo con orgoglio la prima accensione di quel piccolo “mostro”:

  • 3,5 kb (si, avete letto bene, circa 3.500 BYTE!) di RAM
  • registratore a cassette nastro (i floppy erano ancora un sogno)
  • niente monitor (si collegava alla TV)
  • interfaccia a caratteri (se non ricordo male 22 caratteri per 25 righe)
  • linguaggio Commodore Basic incorporato

Al termine del servizio militare (nell’86) ormai i 3500 byte mi stavano stretti e quindi ho deciso di sostituire quella piccola creatura con qualcosa di più: un Commodore 128-D. Allora non mi ero posto il problema se conveniva migrare dal VIC-20 al C-128-D, era ovvio che fosse qualcosa da fare. Le caratteristiche del nuovo mostro erano:

  • 128 kb di RAM (siamo ancora sotto il Megabyte…)
  • monitor a doppia modalità (a colori o a fosfori verdi)
  • unità floppy disk da 5,25 pollici
  • interfaccia a caratteri (40 x 25 che poteva diventare 80 x 25)
  • linguaggio Commodore Basic incorporato
  • software per videoscrittura integrato su un espansione hardware

E’ stato un grosso passo in avanti, poi, quando nell’87 ho potuto mettere le mani su un PC compatibile, perché l’Ente dove avevo iniziato a lavorare aveva deciso di comprarne uno, ero il primo, nell’Ente, ad essere il felice utilizzatore di un Olivetti M-24 del costo approssimativo (a quei tempi) di circa 7 milioni di Lire…

Da allora ne è passata tanta di acqua sotto i ponti, così come è stata grande la mia scalata ad hardware e software di maggiore potenza. Ad ogni cambiamento non ho mai pensato “conviene farlo?”. Non ho mai messo in dubbio la sostituzione di hardware vecchio con hardware più potente.

Non ho dubitato di fare la cosa giusta quando ho iniziato ad abbandonare la vecchia interfaccia a caratteri di MS-DOS per quella più gradevole di Windows 3.1. Eppure il “salto” tecnologico anche allora è stato drammatico. Ci si cominciava a scontrare con un tipo di programmazione diversa, non più programmazione di tipo “spaghetti-code” oppure “programmazione strutturata” ma “programmazione ad eventi” con “Visual Basic 1.0 per MS-DOS” (versione a caratteri) e con “Visual Basic per Windows” (versione grafica).

E’ allora che ho cominciato a capire quale fosse la mia vera vocazione: da grande volevo fare il programmatore!

Via via che passava il tempo, la tecnologia ha continuato ad avanzare in modo sempre più veloce e frenetico. Le reti diventavano sempre più grandi, i software più complessi, le macchine più potenti, Internet che iniziava ad espandersi, tutto diventava sempre più complicato.

La passione, però, mi ha sempre spinto avanti ad imparare cose nuove, ad abbandonare tecnologie o tecniche vecchie per quelle nuove, senza mai un dubbio o un ripensamento.

Ora si presenta un altro “salto tecnologico”: la vera programmazione orientata agli oggetti (OOP) viene offerta in grande scala a tutti i programmatori, anche a chi proviene da linguaggi non-C++.

Improvvisamente la grande massa critica di programmatori dell’intero mondo si interroga: faccio la cosa giusta? Devo imparare di nuovo tutto da zero? Devo spendere dei soldi (tanti soldi) per provare una tecnologia che non so se mi sarà congeniale? E se non riesco a capire l’OOP, ho speso i soldi per niente? Adesso che ho lavorato tanto per crearmi tutte le mie applicazioni commerciali, le mie librerie di codice e la mia base di conoscenza, devo ricominciare da capo e buttare via tutto il lavoro fatto? Ma chi si crede di essere la Microsoft per essere così prepotente nei miei confronti? Non le sono stato forse un programmatore fedele fino ad oggi? Devo forse cambiare linguaggio, cambiare lavoro?

E’ difficile dare una risposta chiara a tutte queste domande, perché non esiste una risposta che possa soddisfare chiunque. Le motivazioni per adottare o per ripudiare il nuovo mondo .NET sono tante e sarà possibile citarne solo alcune. Cominciamo a ragionare sulle domande e a cercare di trovare una risposta.

Devo imparare di nuovo tutto da zero?
In effetti c’è molto da imparare da zero:

  • prima di tutto il nuovo paradigma di programmazione ad oggetti, che ai programmatori VB6 era conosciuto solo in minima parte e con le forti limitazioni imposte da VB6. Il salto è concettuale e non si tratta di imparare solo una tecnologia ma un diverso modo di pensare. L’attenzione è spostata in gran misura dal flusso del programma al comportamento di un “oggetto”. Un oggetto “è dotato di vita propria” (se mi concedete la licenza poetica), lo si deve conoscere e rispettare. Solo allora l’Oggetto ci ricambierà con le azioni utili che saprà fare per noi.
  • l’intero framework .NET è fatto di migliaia di “namespace”, “classi”, “metodi” e “attributi”. Difficile farli entrare tutti in testa contemporaneamente. Conviene iniziare a capire la struttura generale ed esplorare via via le sole cose che ci interessano. La conoscenza richiede una buona infarinatura generale che può venire da un buon libro, o meglio da uno o più buoni libri, da corsi specializzati di buon livello, dalla frequentazione di liste tecniche e forum e così via. Sapere “DOVE” cercare è più importante di “SAPERE TUTTO”. Dopo tutto, è per questo che esistono i libri e le comunità tecniche, no?

Per il resto, l’esperienza nella programmazione fatta in precedenza non è mai da buttare via e non richiede di iniziare di nuovo da zero all’arrivo di una nuova tecnologia o di un nuovo linguaggio. Questo pensiero lo condividono molti studiosi di lingue straniere: è difficile imparare la prima lingua straniera, ma quando ne conosci 2 o 3, la quarta è più facile da imparare.

Devo spendere dei soldi (tanti soldi) per provare una tecnologia che non so se mi sarà congeniale?
Questa domanda sta iniziando a vacillare, dato che la Microsoft ha dato una grande svolta alla propria politica commerciale: ha reso disponibili gli ambienti di sviluppo .NET gratuitamente per permettere un più facile avvicinamento di programmatori indecisi. Le limitazioni imposte dai software gratuiti sono ampiamente tollerabili e ripagate dal costo zero e dalla possibilità di “mettere mano” ai nuovi linguaggi .NET.

E se non riesco a capire l’OOP, ho speso i soldi per niente?
Con le nuove versioni Express, gratuite, anche questa domanda non ha più senso. Forse andrebbe riproposta diversamente, cioè: “E se non riesco a capire l’OOP, ho perso TEMPO per niente?”. Il tempo è denaro e quindi la domanda è ancora sensata…

La capacità di comprensione, ovviamente, dipende dalle capacità mentali dei singoli soggetti e quindi non è prevedibile quantificare il grado di successo di ciascuno. La comprensione, però, dipende anche fortemente dalla volontà e dall’impegno profuso da ciascuno nello studiare e nel capire questa nuova realtà. Non c’è molto spazio all’improvvisazione, cosa che c’era invece nei vecchi linguaggi (es. Commodore Basic, GW Basic ecc.).

Forse l’impegno che richiede questo nuovo “salto” permetterà una maggiore selezione dei migliori programmatori sul mercato. Non c’è molto spazio per i programmatori improvvisati.

Adesso che ho lavorato tanto per crearmi tutte le mie applicazioni commerciali, le mie librerie di codice e la mia base di conoscenza, devo ricominciare da capo e buttare via tutto il lavoro fatto?
Questa è una delle parti più spinose della questione. Il lavoro dedicato negli anni a creare le proprie librerie, le proprie applicazioni, viene brutalmente messo in discussione e soffre di una grave perdita di valore.

Il fatto che la Microsoft abbia fatto di tutto per creare strumenti di conversione da VB6 a VB.NET (conversione automatica dei progetti, namespace Microsoft.VisualBasic, ecc.), per fornire le conoscenze, per incentivare la migrazione in molte maniere (fornendo software gratuito, seminari tecnici gratuiti, documentazione on line ecc.), allevia leggermente il danno ma non risolve completamente il problema.

In effetti la “reingegnerizzazione” delle nostre librerie potrebbe però portare ad un beneficio reale. Infatti, si può ragionevolmente pensare che le nostre nuove librerie saranno costruite con una caratteristica che le vecchie librerie non avevano: il codice sarà ampiamente riutilizzabile per evitare di reinventare sempre “l’acqua calda”.

Questo lavoro di rifacimento, quindi, può essere visto come una perdita di tempo e di denaro, ma può anche essere visto come un’opportunità per costruirci degli strumenti che ci possono realmente far fare un grosso salto di qualità al nostro software.

Ma chi si crede di essere la Microsoft per essere così prepotente nei miei confronti? Non le sono stato forse un programmatore fedele fino ad oggi? Devo forse cambiare linguaggio, cambiare lavoro?
Questo è un atteggiamento vittimistico che poco ha a che fare con la passione del programmatore, con lo spirito di innovazione che dovrebbe avere un tecnico il cui primo pensiero dovrebbe essere “l’innovazione” e il “miglioramento”.

Ovviamente Microsoft è un’azienda, e come tale deve raggiungere un utile per “sopravvivere” (e far sopravvivere i propri dipendenti). Non le si può quindi imputare una colpa se per prima tende ad una innovazione generale dei propri prodotti.

Certo, Microsoft può anche aver fatto qualche errore di valutazione, ma nessuno è perfetto.

Conclusione
Alla domanda: “faccio la cosa giusta?” ognuno avrà una sua risposta personale, dal “si assoluto” al “no assoluto” con le migliaia di sfumature intermedie. Per orientare la propria risposta un po’ più verso il “si”, bisognerebbe fare alcune considerazioni:

  • la Microsoft non tornerà indietro, questo è certo. Anzi, la spinta verso .NET sarà sempre più forte e coinvolgerà tutte le realtà mondiali, dai grandi produttori di hardware/software agli utenti. Quindi anche i programmatori. Perché rischiare di essere fuori dal mercato?
  • le offerte di lavoro che vengono pubblicate da un po’ di tempo ormai chiedono sempre più spesso programmatori .NET (VB.NET e C# soprattutto, ma anche molti per web). La migrazione al mondo .NET quindi è anche un’opportunità che un programmatore attento non può farsi sfuggire. Ormai .NET è sul mercato da alcuni anni e non si può più affermare ragionevolmente che “è una moda passeggera”.

[VB6] Code Advisor: uno strumento per la migrazione da VB6 a VB 2005

Premessa
Pur programmando da diversi anni con VB e con VBA (soprattutto con Access) riesco comunque a cogliere le opportunità che si prospettano con i nuovi linguaggi che implementano il paradigma della programmazione orientata agli oggetti (OOP). Nei miei studi universitari ho avuto anche a che fare con JAVA e quindi anche in questo caso con la programmazione ad oggetti (nota: C# ha una sintassi molto simile a quella di JAVA). Ho studiato, ho sperimentato e mi sono impegnato parecchio anche nelle mailing list nel cercare di capire questo nuovo modo di programmare.

Nonostante tutto l’interesse, tutta la passione e tutto l’impegno profuso per padroneggiare questo nuovo mondo, non sono ancora riuscito ad avere la “situazione in pugno”. Mi sento ancora come una vecchia locomotiva che non riesce ad andare in pressione e quindi ad iniziare il suo viaggio lungo i binari sicuri della programmazione ad oggetti.

A questo punto non resta che esplorare altre possibilità e cioè utilizzare degli strumenti che almeno mi permettano di capire quali sono le parti di codice che fanno parte del “passato” VB6 e che non hanno una corrispondenza diretta nel nuovo VB.NET.

VB6 Code Advisor: download e installazione
Prima di tutto è necessario scaricare dal sito Microsoft questo “add-in” per l’IDE di VB6. L’indirizzo esatto da cui è possibile scaricarlo è il seguente:

http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=a656371a-b5c0-4d40-b015-0caa02634fae

Una volta scaricato il file “Code Advisor for Visual Basic 6_ITA.msi” è possibile avviarlo per far partire l’installazione. Le prime opzioni potranno essere tutte confermate così come sono.

Appena comparirà la seguente schermata, invece, consiglio di scegliere l’opzione “Completa“, perché così installerete anche la documentazione e gli altri componenti necessari per estendere “Code Advisor“.

Infatti “Code Advisor” è un prodotto estendibile con nuove regole per avere ulteriori consigli sul codice che non erano previsti nella versione iniziale del prodotto. Alcune di queste nuove regole sono pubblicate anche su articoli MSDN.
Dopo un altro paio di click di conferma, avrete l’add-in installato. A questo punto facciamo partire VB6.

Nell’IDE di VB6 troviamo già un paio di differenze: nel menu “Aggiunte” c’è il nuovo menu “Code Advisor” e tra le barre strumenti ce ne sarà una nuova di nome “Code Advisor per Visual Basic 6“. Entrambe presentano alcune voci identiche e quindi siamo liberi di utilizzare l’una o l’altra modalità, a nostra preferenza.
Le voci sono:

  • Aggiungi FixIt
  • Rimuovi FixIt
  • Trova FixIt successivo
  • Filtra regole FixIt
  • Definizione ambito (con le scelte “Ambito: progetto attivo” oppure “Ambito: file attivo“)

Nel menu, poi, c’è anche la voce “Visualizza report FixIt” che però al momento è disattivata, non avendo ancora utilizzato le funzionalità di questo add-in.

Gettiamo carbone nella caldaia della locomotiva…
A questo punto apriamo un progetto VB6, uno qualsiasi, per fare una prima prova “al volo” delle funzionalità offerte dall’add-in.

Per iniziare l’analisi del nostro progetto, scegliamo la voce “Aggiungi FixIt“. Diventerà subito visibile una barra di avanzamento per farci capire a che punto è l’analisi del codice. Al termine dell’analisi, nel lato destro della barra degli strumenti di “Code Advisor” comparirà un pulsantino con l’unica funzione di indicarci quanti sono i “FixIt“, cioè i suggerimenti inseriti nel codice (nel mio caso sono stati 13, molti dei quali dello stesso tipo).

I suggerimenti (FixIt) sono inseriti come commenti nel codice, secondo il seguente schema:

  'FIXIT: questo è un suggerimento

Premendo il pulsante “Rimuovi FixIt“, tutti i suggerimenti saranno rimossi dal codice come se non fossero mai stati inseriti.

Il pulsante “Trova FixIt successivo” serve a spostarsi “in avanti”, da un suggerimento all’altro. Questa funzionalità permette di trovare subito i suggerimenti senza dover guardare tutto il codice.

Il pulsante “Filtri FixIt” svolge un’importante funzione: apre una finestra di dialogo dalla quale è possibile selezionare sia la versione VB.NET alla quale vogliamo migrare, sia i singoli suggerimenti, uno per uno, che vogliamo attivare o disattivare. Riporto qui di seguito un’immagine che può chiarire il concetto.

Il pulsante “Visualizza Report FixIt“, che è diventato attivo dopo l’aggiunta dei suggerimenti, apre il browser Internet per mostrare un report piuttosto dettagliato e contenente:

  • alcune statistiche del progetto (numero regole, numero componenti, numero problemi, ecc.);
  • tutti i “problemi” riscontrati, con il nome del modulo che contiene il codice, la relativa sezione e la riga dove si trova il “problema”;
  • l’elenco dei componenti che hanno riportato almeno un problema;
  • l’elenco delle regole applicate con il conteggio delle occorrenze di ognuna.

Il report si presenta in questa forma:

Il pulsante “Guida in linea di Code Advisor” apre appunto la guida in linea, mentre l’ultimo pulsante “Definizione ambito“, che può assimere due diversi valori (“Ambito: progetto attivo” oppure “Ambito: file attivo“) specifica appunto se le regole vanno applicate all’intero progetto o al solo file attivo. In quest’ultimo caso, i suggerimenti vengono applicati solo al file attivo e anche il “Report” viene prodotto solo sulla base dei risultati ottenuti dall’analisi del file attivo.

Una nota a margine: utilizzando questo add-in, improvvisamente mi è comparsa questa finestra di avviso di Norton AntiVirus:

IMMAGINE 4

Norton AntiVirus ha interpretato le azioni di questo script come quelle di uno “script maligno”. Ritenendo che non ci fossero particolari dubbi sul fatto che fosse il NAV ad aver avuto un “abbaglio”, ho scelto la voce “Autorizza questo script“, ho confermato e ho quindi potuto continuare il lavoro ;-)

Come ultima parte di questo articolo e ad esemplificazione dei suggerimenti che questo add-in produce, ne riporto uno auto-esplicativo:

  Utilizzare Option Explicit per impedire la creazione implicita di variabili di tipo Variant.

Conclusione
Non è tra gli obiettivi di questo articolo elencare e spiegare per filo e per segno tutti i “problemi” riscontrati nell’esperimento. L’obiettivo, infatti, era quello di fornire uno sprone all’uso di uno strumento che può aiutarci nel capire meglio come migliorare il nostro codice e i nostri progetti per prepararli adeguatamente nell’ottica di una migrazione a VB.NET / VB 2005.

#1 Convertire un orario (hh.mm.ss) in un numero di tipo Double

(Tip per VB6):

Talvolta occorre convertire un orario espresso nel formato “hh:mm:ss” in un numero di tipo Double, specialmente nel caso in cui tale numero sia da utilizzare in calcoli (es. tariffe orarie calcolate su un periodo frazionato).

Per semplificare la conversione è possibile utilizzare la seguente funzione:

Function Ore2Double(tempo As Date) As Double 
	' il parametro di input tempo contiene ad esempio "10:20:30" 
	Dim risultato As Double 
	risultato = Val(DatePart("h", tempo)) 
	risultato = risultato + Val(DatePart("n", tempo)) / 60 
	risultato = risultato + Val(DatePart("s", tempo)) / 3600 
	Ore2Double = risultato 
End Function

Tale funzione può essere richiamata in modo molto semplice:

Dim tempo As Date 
tempo = "10:20:30"        ' conversione implicita 
MsgBox Ore2Double(tempo)  ' restituisce un Double

Compressione di file con “7zip”

Angolo Informatico (a cura di ing.iunior M.De Ghetto)

In questo nuovo appuntamento vedremo un altro software utile a chiunque volesse inviare un documento allegato a un’e-mail: un programma per comprimere e decomprimere file.

Compressione di file con “7zip”

A cosa serve un programma di questo genere? Semplice: permette di comprimere uno o più file in un file unico e, al momento opportuno, di decomprimere tale file per ottenere i file originari senza alcuna perdita di informazioni.

Il file ottenuto con la compressione sarà, spesso, notevolmente più piccolo della dimensione dei file originari. Il grado di compressione dipende, però, dal tipo dei file che devono essere compressi. Per esempio, da un file di testo semplice (estensione .txt) potremo ottenere un file compresso estremamente piccolo, spesso anche meno del 30% della dimensione del file originario.

Se tentassimo di comprimere un’immagine potremmo avere una sorpresa: infatti, il file compresso potrebbe avere una dimensione leggermente più grande di quella del file originario.

Questo fatto dipende strettamente dal tipo di immagine: se l’immagine ha ampie aree contenenti lo stesso colore (per esempio un grande contorno bianco) la compressione potrà portare l’effetto sperato, ma se l’immagine contiene tutte zone non omogenee, la compressione non potrà avvenire.

Perché, allora, un file immagine compresso può diventare più grande? La compressione aggiunge informazioni relativamente a sequenze di byte uguali, elimina le ripetizioni e quindi fa risparmiare spazio solo se nel file originario esistono effettivamente delle ripetizioni. Nel caso di un’immagine complessa e disomogenea le ripetizioni sono in numero troppo limitato e le informazioni aggiunte dal software di compressione aumentano la dimensione del file finale.

Per comprendere questo concetto, proviamo a fare un semplice esempio, indicando tra parentesi le informazioni aggiunte ai fini della compressione. Ovviamente le tecniche per comprimere degli schemi ridondanti sono più complesse di quelle semplificate che mostreremo. Supponiamo di avere un file contenente un testo come il seguente:

Questo è un testo semplice. Questo è un testo molto semplice, così semplice da risultare quasi banale. E’ banale perché deve risultare semplice.

Proviamo ora a creare una tabella di elementi ripetuti:

Simbolo

Testo

(1)

Questo è un testo

(2)

semplice

(3)

banale

(4)

risultare

Infine creiamo il file compresso:

(1) (2). (1) molto (2), così (2) da (4) quasi (3). E’ (3) perché deve (4) (2).

(1=Questo è un testo)(2=semplice)(3=banale)(4=risultare)

Il testo originario è composto da 144 caratteri, mentre il testo compresso ne ha 134. Teniamo però conto che i meccanismi di compressione sono più sofisticati e non utilizzano parentesi e segni di eguaglianza, quindi il fattore di compressione sarà maggiore di quello ottenuto in questo esempio.

Inoltre, più è grande il file di testo originario e più è probabile trovare parole o frasi ripetute, rendendo la compressione molto più efficace.

La decompressione è effettuata sostituendo tutti i “tag” con i corrispondenti valori della tabella di compressione. Ecco quindi il motivo per il quale non c’è alcuna perdita di informazione.

Ben diversa è la tecnica che rende più efficace la compressione di immagini. Per questo tipo di compressione non è possibile utilizzare un prodotto come 7-zip (WinZip, PkZip e così via) ma è necessario utilizzare un software per il fotoritocco o per la gestione di immagini. L’operazione di compressione eseguita con questi programmi è realizzata eliminando  o fondendo gruppi di punti dell’immagine e quindi riducendo la definizione dell’immagine stessa. Questo tipo di compressione comporta necessariamente una perdita di informazioni, in quanto da un file immagine compresso non è possibile risalire al file immagine non compresso.

I vantaggi della compressione sono molteplici, dato che possiamo:

  • allegare un unico file a un’e-mail, con una dimensione minore di quella totale dei file originari;
  • raggruppare tutti i file di un unico progetto nello stesso file, ai fini dell’archiviazione;
  • ridurre le dimensioni dei file “storici” per effettuare il backup in un unico supporto;
  • trasportare più file in una chiavetta USB;
  • archiviare i file in un file compresso dotato di password, per evitare che persone non autorizzate possano visionare i file stessi.

7-zip è un software open source, scaricabile gratuitamente dal sito http://www.7-zip.org/.

Solitamente le versioni disponibili sono molteplici, ma il consiglio che possiamo dare è quello di evitare le versioni “beta”, in quanto sono versioni ancora in fase di sviluppo e quindi non ancora ben stabilizzate, e di evitare le versioni “x64″ a meno che non abbiate installato un sistema operativo a 64 bit. Generalmente la versione a 32 bit è quella ottimale.

Chi volesse ottenere informazioni in merito agli argomenti presentati in questa rubrica, oppure proporre argomenti da trattare nei prossimi appuntamenti, può farlo inviando una richiesta all’indirizzo e-mail mario@deghetto.it oppure alla Segreteria dell’Ordine.

Antivirus “NOD32″

Angolo informatico (a cura di ing.iunior Mario De Ghetto)

Chiunque utilizzi un computer conosce sicuramente anche i rischi in cui incorre se non provvede a installare un buon antivirus. Con il D. Lgs. 196/2003, poi, i rischi diventano anche di tipo legale, dato che ognuno è tenuto ad assicurare almeno i requisiti minimi di sicurezza, nell’uso di strumenti informatici.

Infatti, con il citato D. Lgs. vengono date disposizioni per la corretta gestione dei dati personali e dei dati sensibili ma anche per evitare il rischio di perdite parziali o totali di dati. Queste perdite di dati possono avvenire, sì, per la rottura dell’hard disk (e in questo caso ci servirà adottare una procedura di backup periodico), ma anche per agenti esterni: virus, worm e altro software “malevolo” (c.d. “malware”).

In questo nuovo appuntamento vedremo quindi la recensione di un buon antivirus, indispensabile per difenderci quanto meno da virus e da altri programmi aggressivi.

ANTIVIRUS “NOD32″

Di software antivirus ne esistono molti: alcuni commerciali, altri scaricabili gratuitamente da Internet, altri ancora forniti in prova per un periodo limitato.

Tra tutti questi ne emerge uno in particolare. NOD32, infatti, è scaricabile gratuitamente da Internet ma è fornito per 30 giorni in prova. Al termine dei 30 giorni si dovrà procedere alla disinstallazione del prodotto e, poi, a una delle seguenti azioni:

  • installazione di un’altra versione di prova, valida per altri 30 giorni;
  • acquisto e installazione della versione commerciale, esente dalla limitazione di tempo.

La cosa interessante è data dal fatto che il prodotto può essere disinstallato e reinstallato ogni 30 giorni senza problemi, permettendo così di utilizzare il prodotto in prova senza doverlo acquistare. Ovviamente il prezzo da pagare, in questo caso, è il fastidio di dover procedere sempre a una disinstallazione del prodotto (con conseguente riavvio del sistema) e alla sua reinstallazione (con ulteriore riavvio del sistema). Chi volesse, però, accettare questa limitazione, può avere un software antivirus estremamente professionale, sicuro, leggero e assolutamente non invadente.

Per correttezza non ci permettiamo di citare altri software “blasonati” che ci hanno dato problemi. Questi programmi commerciali, però, peraltro tra i più costosi, non sono sicuramente perfetti: alcuni si appropriano di una grande quantità di memoria e di risorse del computer, rendendo quasi impossibile lavorare (in un caso c’è stata la necessità di formattare il disco fisso e reinstallare tutto), mentre altri segnalano anche dei virus che non ci sono, i cosiddetti “falsi positivi”.

E’ il caso di software che utilizzano, a richiesta, la ricerca euristica per individuare azioni pericolose del software, anche in assenza di una “firma” di riconoscimento del virus. Questa tecnica permette di individuare eventuali virus non ancora noti o per i quali non è ancora stato trovato un metodo efficace di disinfezione. Talvolta, però, segnala la presenza di virus anche in software commerciali “puliti”, solo perché questi ultimi eseguono operazioni che, secondo l’antivirus, sono simili ad alcune operazioni solitamente effettuate dai virus.

NOD32 non segnala falsi positivi e, invece, viene aggiornato quotidianamente sulla base della conoscenza di nuovi virus. I servizi di NOD32 si avviano con l’avvio del sistema operativo e rimangono in attesa di una connessione Internet attiva, dopo di che si collegano al server per scaricare gli aggiornamenti, senza alcun disturbo per l’utente.

Per scaricare NOD32 è possibile collegarsi al sito ufficiale http://www.nod32.it/.  

Dopo aver fatto click sulla voce “download”, è necessario compilare un modulo di informazioni con i seguenti dati: lingua, versione del sistema operativo, indirizzo e-mail, nome completo dell’utente e Paese.

Completando l’invio del modulo con un click sul pulsante “Submit”, si riceverà un’e-mail sulla propria casella di posta elettronica con il link al programma da scaricare e installare.

Attenzione al fatto che, prima di reinstallare una nuova versione bimestrale del prodotto, è sempre necessario disinstallare la versione precedente.

Chi invece volesse acquistare il prodotto commerciale senza scadenza, può fare click sulla voce “Acquista” e poi su “Utenti privati”, “Piccole e medie imprese” oppure “Enterprise”.

Per utenti con partita IVA il prezzo è di 67,20 € nel caso di primo acquisto e di 53,76 € nel caso di rinnovo, pagabili con carta di credito o bonifico bancario (prezzi da verificare sul sito Internet al momento dell’acquisto). Tutto sommato un prezzo più che accettabile per chi volesse installare l’antivirus e poi dimenticarsene.

Creare file PDF

 

Angolo informatico (a cura di ing.iunior Mario De Ghetto)

“L’angolo di Mister Bit” è una nuova rubrica del Notiziario, nella quale ci ripromettiamo di iniziare un discorso abbastanza pratico sull’informatica in generale.

In questa rubrica potranno trovare posto recensioni di programmi, libri e siti Internet, news dal mondo dell’Information Technology, tecniche e spiegazioni sull’uso di software in grado di risolvere problemi comuni del professionista.

Esiste molto software gratuito ben fatto, magari con qualche limitazione in particolari ambiti, ma che è in grado di risolvere tutte le esigenze comuni.

Infatti, ricordiamo che l’utente medio utilizza circa il 15-20% delle funzionalità offerte da un software commerciale di ampia distribuzione, mentre solo una piccola percentuale di utenti evoluti è in grado di sfruttare gran parte delle altre funzioni.

CREARE FILE PDF

In questa prima puntata di questa rubrica inizieremo a trattare un problema comune a molti utenti e soprattutto a molti professionisti: convertire un proprio documento, non importa se da Word, Excel o AutoCAD, in un documento in formato PDF.

Esistono molti motivi per i quali si vuole creare un file PDF: è ormai uno standard riconosciuto, un file PDF può essere inviato allegato ad un’e-mail, stampato, archiviato, riletto sullo schermo del computer e così via. I vantaggi, quindi, sono innumerevoli.

Non tutti sanno però quali documenti possono essere convertiti in PDF e come si può ottenere un documento PDF.

In commercio esistono molti programmi che permettono di effettuare questa operazione, ma Internet offre anche molti programmi scaricabili gratuitamente, in perfetta legalità.

Alcuni programmi sono gratuiti ma hanno alcune limitazioni, introdotte appositamente per indurre l’utente ad acquistare il programma completo (a pagamento). Queste limitazioni possono riguardare la dimensione del file PDF finale oppure continui collegamenti ad una pagina pubblicitaria su Internet o, ancora, la comparsa di finestre di avviso con i recapiti dell’azienda produttrice del software. Altri programmi sono molto difficili da installare e configurare.

Nel tempo, però, si sono resi disponibili alcuni programmi veramente gratuiti, facili da installare e privi di “molestie” più o meno invasive nei confronti dell’utente.

Citiamo i due più diffusi:

PDFCreator 0.9.3

http://sourceforge.net/projects/pdfcreator/

PrimoPDF 3.1

http://www.primopdf.com/

Come funzionano? E’ semplice: entrambi installano una stampante virtuale (di nome “PDFCreator” in un caso e “PrimoPDF” nell’altro) che permette di “stampare” su file, anziché su carta, creando direttamente un file PDF.

In entrambi i casi, nel momento della stampa appare una finestra di dialogo che permette di scegliere le varie opzioni di stampa (es. a colori o monocromatico), la posizione su disco e il nome del file da creare.

Per creare un file PDF è sufficiente pertanto che il programma con cui è stato creato il documento (es. Word) sia in grado di stampare. A tutto il resto ci pensa la “stampante virtuale” (PDFCreator o PrimoPDF).

PrimoPDF ha un vantaggio rispetto a PDFCreator: permette di impostare alcuni parametri di sicurezza, come la password di apertura, e i permessi utente, come la concessione della possibilità o impossibilità di stampare il documento.

Per contro, PDFCreator è interfacciabile ai nostri programmi a livello di codice sorgente (ad esempio in Visual Basic), per fornire funzionalità di gestione di

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 846 follower