Mario De Ghetto

Microsoft MVP – Visual Basic (VB.NET: Programmare che passione!)

Archivio per 19 Gennaio 2008

[Sicurezza] Una nuova rivista on line molto interessante

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

La sicurezza informatica è sempre un ambito critico per il nostro lavoro: tutti ne parlano e pochi ne sanno abbastanza. Anch’io sento molto l’importanza di questo argomento e ne vorrei sapere molto di più, tanto che ho accolto con vero piacere una nuova iniziativa editoriale on line.

Ho infatti avuto il privilegio di essere contattato da uno dei fondatori di questa nuova rivista, Security System, che si propone di trattare vari argomenti sulla sicurezza sia in ambiente Windows sia in Linux.

Il saggio, scaricabile gratuitamente, è un “Focus on” riguardante il Kernel 2.6 di Linux e le tecnologie anti overflow.

Personalmente ho utilizzato e fatto qualche esperimento con Linux circa una decina di anni fa e poi, per varie ragioni (soprattutto il poco tempo disponibile), l’ho abbandonato.

Il primo “Focus on”, quindi, per me è leggermente difficile da seguire, proprio per la mia inesperienza su questo ambiente.

A parte questo mio “handicap” tecnologico, certamente non ho alcun dubbio dell’alta qualità dell’articolo, visti gli ottimi contenuti sia in termini di spiegazione sia dal punto di vista delle tabelle e dei riquadri di approfondimento.

Ritengo quindi che questa nuova rivista sia estremamente interessante, per i contenuti ma anche per il formato “elettronico”.

Augurando, quindi, a Security System e ai suoi fondatori un grande successo, riporto qui di seguito il comunicato stampa ufficiale.

Siracusa, 5 Novembre 2007 – Nasce Security System, la prima rivista italiana di sicurezza informatica completamente distribuita in formato elettronico.

Il progetto che orbita attorno al sito http://www.segfault.it/, nasce in Italia da un’iniziativa personale di cinque membri, autogestita ed autofinanziata. Con l’ausilio unicamente di Internet e delle nuove tecnologie Web 2.0, avvalendosi della vetrina e dello store di lulu.com, lo staff ha messo in piedi l’intera l’iniziativa in meno di tre mesi, rilasciando il primo numero della rivista proprio oggi.

Con una chiara impronta underground che la redazione promette di mantenere nel tempo ma destinato a crescere anche in direzione dell’interesse aziendale, Security System si rivolge tanto ai sistemisti ed ai programmatori esperti, quanto agli utenti che hanno semplicemente desiderio di conoscere questo mondo o che vogliono intraprendere una professione nel settore. La filosofia del progetto è orientata all’apertura più totale verso la comunità globale della rete. Ciascun rilascio della rivista rimarrà infatti a pagamento per quattro mesi, trascorsi i quali sarà reso accessibile al download gratuito a tutti gli utenti.

Il numero 0 di Security System può essere acquistato e scaricato dal sito http://www.segfault.it/bill.html (ulteriori informazioni sulle modalità di pagamento direttamente su http://www.segfault.it/). Per migliorare la qualità delle uscite nel tempo, la redazione invita ad inviare suggerimenti di qualsiasi natura (sull’impostazione grafica, sui contenuti o altro) all’indirizzo parlalarete@segfault.it.

Nel primo numero:

  • Kernel 2.6 e tecnologie Anti Overflow
  • Stack Overflow Vanilla: il caso mod_jk
  • Bypassare Exec-Shield su Fedora e Red Hat Linux
  • SAOR: Attacco al TCP
  • Filter Driver: costruire rootkit a basso sforzo sfruttando il modello driver stratificato di Windows
  • Racconti Underground: la vera storia dell’Unicode Bug

ed altro ancora…

Un articolo di saggio è disponibile su http://www.segfault.it/saggio/focus_on.pdf

Pubblicato su Sicurezza | Contrassegnato da tag: | Lascia un commento »

[LINQ] Tecniche spiegate dal VB Team

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

Segnalo questa pagina presente sul blog del Team Microsoft di Visual Basic che si rivela estremamente interessante.

Si tratta di (al momento) 12 tecniche di utilizzo del nuovo LINQ, con codice di esempio, che possono essere la base da cui partire per iniziare a comprendere questa nuova tecnologia. Gli esempi trattati riguardano:

  1. modifica del font di tutte le label presenti sul form [LINQ e Objects] [LINQ e WinForms] [LINQ e controlli, Label]
  2. trovare tutte le parole con iniziale maiuscola e ordinarle per lunghezza [LINQ to Objects] [LINQ e stringhe] [LINQ e WinForms]
  3. trovare tutti i numeri primi in un dato intervallo [LINQ to Objects]
  4. trovare tutti i tipi complessi in un assembly (per tipo complesso si intende in questo caso una classe con più di 10 metodi pubblici, dei quali almeno uno ha più di 3 argomenti) [LINQ to Objects] [LINQ e tipi][LINQ e WinForms]
  5. concatenare le stringhe selezionate da un controllo CheckedListBox [LINQ to Objects] [LINQ e WinForms]
  6. la prima applicazione LINQ utilizzando NorthWind [LINQ to SQL] [LINQ e WinForms]
  7. selezionare pagine di dati da NorthWind [LINQ to Objects] [LINQ to SQL]
  8. interrogare XML con LINQ [LINQ to XML]
  9. ordinamento dinamico [LINQ to XML]
  10. query precompilate per migliorare leprestazioni [LINQ to SQL]
  11. funzioni aggregate per eseguire calcoli su set di dati [LINQ to DataSet]
  12. funzioni aggregate standard per eseguire calcoli [LINQ to Objects]

Ottimo riferimento per cominciare a prendere un po’ confidenza con questa nuova “creatura” Microsoft!

Pubblicato su LINQ | Contrassegnato da tag: | Lascia un commento »

[VB.NET] Finestra di dialogo per scelta e salvataggio della stringa di connessione

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

Su CodeProject c’è un articolo interessante, corredato dal codice sorgente, che definisce una finestra di dialogo per consentire la composizione e il salvataggio della connection string:

http://www.codeproject.com/useritems/SQL_Connection_Dialog.asp 

Non male, davvero!

Pubblicato su ADO.NET | Contrassegnato da tag: , | Lascia un commento »

[LINQ] Video scaricabili di un percorso formativo

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

In uno scambio di e-mail avuto un po’ di tempo fa, Pietro Brambati – Developer Evangelist di Microsoft (blogger anche in MSDN Italia http://blogs.msdn.com/italy/) – mi ha comunicato la realizzazione di un percorso formativo su LINQ per Visual Basic e C#.

I video si trovano in questa pagina.


Il primo dei video può essere solo visto online per un problema che i tecnici Microsoft stanno tentando di risolvere (verificato oggi), il secondo era una intervista a Luca Bolognese (italiano a Redmond!), mentre gli altri sono godibili sia online che offline, con la procedura di registrazione e di download dei singoli video.

Nei webcast ho visto tantissimi esempi di codice, quindi è un’ottima opportunità per avere una spiegazione passo-passo, in lingua italiana, di che cos’è LINQ e come si usa.

Pubblicato su LINQ | Contrassegnato da tag: | Lascia un commento »

#13 Inversione di una stringa

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

La funzione restituisce la stringa invertita passatagli come parametro.

Public Function ReverseString(ByVal stringToReverse As String) As String
    ' dichiarazione variabili
    Dim i As Long
    Dim tmpString As String = ""
    Dim lunghezza As Long = 0
    If stringToReverse = "" Then
        ' se stringa vuota restituiscila
        tmpString = ""
    Else
        ' altrimenti esegui l'inversione della stringa
        lunghezza = stringToReverse.Length
        For i = (lunghezza - 1) To 0 Step -1
            tmpString = String.Concat(tmpString, _
                stringToReverse.Substring(i, 1))
        Next
    End If
    Return (tmpString)
End Function

Pubblicato su Tips | Contrassegnato da tag: | Lascia un commento »

#12 Ripete una stringa

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

La funzione e’ simile alla String() nativa di VB, con in piu’ la possibilita’ di definire una stringa (e non un carattere) da ripetere.

Public Function RepeatString(ByVal repetitions As Long, _
        ByVal stringToRepeat As String) As String
    ' dichiarazione variabili
    Dim i As Long
    Dim tmpString As String = ""
    If repetitions <= 0 Then
       ' se numero ripetizioni inferiore a 1 (zero o negativo)
       ' restituisci stringa vuota
       tmpString = ""
    ElseIf repetitions = 1 Then
       ' se numero ripetizioni = 1 restituisci la stringa stessa
       tmpString = stringToRepeat
    Else
       ' altrimenti esegui la ripetizione della stringa
       For i = 0 To repetitions - 1
          tmpString = String.Concat(tmpString, stringToRepeat)
       Next
    End If
    Return (tmpString)
End Function

Per testare questa funzione, creare un form con 3 textbox e un pulsante (rispettivamente denominati TextBox1, TextBox2, TextBox3 e Button1) e inserire il seguente codice nell’evento Click di Button1:

Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    ' dichiarazione variabili
    Dim stringaDaRipetere As String = ""
    Dim ripetizioni As Long = 0
    Dim stringaFinale As String = ""
    ' lettura TextBox1 con stringa da ripetere (es.: "ABC")
    stringaDaRipetere = Me.TextBox1.Text
    ' lettura numero ripetizioni da campo TextBox2 (es.: 3)
    ' N.B.: solitamente l'input numerico va controllato
    ripetizioni = Long.Parse(Me.TextBox2.Text)
    ' esecuzione della funzione di ripetizione stringa
    stringaFinale = RepeatString(ripetizioni, stringaDaRipetere)
    ' risultato nella TextBox3 (es.: "ABCABCABC")
    Me.TextBox3.Text = stringaFinale
End Sub

Pubblicato su Tips | Contrassegnato da tag: | Lascia un commento »

#11 Leggere il nome del file in uno “Shortcut” (file .LNK)

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

In un nuovo progetto, aggiungere il riferimento alla libreria COM (unmanaged) “Windows Script Host Object Model“.

Nella sezione del codice del form (Form1.vb) inserire questo esempio:

  Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
           ByVal As System.EventArgs) Handles Button1.Click
        MessageBox.Show(ReadShortcut("C:\prova2.lnk"))
    End Sub

    Public Function ReadShortcut(ByVal FilePath As StringAs String
        If System.IO.File.Exists(FilePath) Then
            Dim theShell As New IWshRuntimeLibrary.WshShell()
            Dim theShortcut As IWshRuntimeLibrary.WshShortcut _
                   theShell.CreateShortcut(FilePath)
            Return theShortcut.TargetPath
        Else
            Return "Il file non esiste."
        End If
    End Function
  End Class

Come si può vedere, ReadShortcut è una funzione che richiede il nome completo del file .LNK (compreso path) e restituisce il nome completo del file collegato.

Pubblicato su Tips | Contrassegnato da tag: | Lascia un commento »

#10 Convertire una data dal formato “yyyymmdd” a DateTime

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

Questo semplice codice permette di convertire una data dal formato “yyyymmdd” (ad es. “20081102″) e trasformarla in un’istanza di DateTime:

Private Function ToDateTime(ByVal dataYyyyMmDd _
            As String) As DateTime
    Dim myCultureInfo As _
        New System.Globalization.CultureInfo("it-IT", True)
    Dim formato As String = "yyyyMMdd"
    Return System.DateTime.ParseExact(dataYyyyMmDd, _
        formato, myCultureInfo)
End Function

Pubblicato su Tips | Contrassegnato da tag: | Lascia un commento »

#9 Conversione decimale-esadecimale con formato “0x…”

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

Il problema è questo: vogliamo convertire un numero decimale in esadecimale, rappresentandolo con il prefisso “0x”.

Creiamo quindi un nuovo progetto VB 2005 e al Form1 che viene incluso di default al progetto aggiungiamo una TextBox, un Button e una Label, lasciando tutti con il nome predefinito. Incolliamo poi il seguente codice nell’evento Click del pulsante:

  Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    Me.Label1.Text = String.Format("0x{0}", _
        Integer.Parse(TextBox1.Text).ToString("x").PadLeft(5, "0"c))
  End Sub

Ad esempio, inserendo 255 nella TextBox e premendo il pulsante, otterremo “0×000ff” nella Label.

Pubblicato su Tips | Contrassegnato da tag: | Lascia un commento »

#8 Leggere un singolo valore con una query

Pubblicato da Mario De Ghetto su 19 Gennaio 2008

In certe occasioni è necessario leggere un singolo valore da una tabella o comunque ottenere un singolo valore calcolato da una query.

Prima di vedere in pratica questa semplice tecnica, sono opportune due precisazioni:

  1.  bisogna importare il namespace Imports System.Data.Oledb
  2.  per quanto riguarda le tecniche di connessione ad un database si faccia riferimento al mio articolo su ADO.NET 2.0.

Ecco finalmente il codice:

     Dim stringaConnessione As String = "una stringa di connessione valida"
     ' apertura connessione
     Dim Cn As New Data.OleDb.OleDbConnection(stringaConnessione)
     Cn.Open()
     ' preparazione ed esecuzione della richiesta
     Dim SQL As String = "SELECT CodiceFiscale FROM Anagrafica " & _
         "WHERE IDcliente = 'PK425';"
     Dim comando As New Data.OleDb.OleDbCommand(Sql, Cn)
     Dim ID As Integer = comando.ExecuteScalar()
     ' chiusura connessione
     Cn.Close()   

Pubblicato su ADO.NET, Tips | Contrassegnato da tag: | 2 Commenti »