Terzo rapporto sul mercato del lavoro della Provincia di Roma

E’ stato pubblicato il terzo rapporto sul mercato del lavoro della Provincia di Roma, al quale ho contribuito scrivendo il capitolo dedicato al collocamento obbligatorio dei diversamente abili e delle categorie protette ex. art. 18 L.68/99. E’ possibile scaricare l’intera pubblicazione utilizzando questo link

Annunci

Non c’entra niente con l’informatica…

…ma linko qui un post interessante del blog That’s the end of the world as we know it. Leggendolo, mi viene in mente che l’ovvio è spesso il metodo migliore per fare le cose…

Contare il numero di campi di una tabella SQL Server

A volte può essere utile conoscere il numero di campi di una tabella di un nostro DB su SQL SERVER. Senza perder tempo a contare i campi a mano (cosa spesso complicata quando la tabella è particolarmente ampia) è possibile utilizzare le tabelle di sistema per farci restituire tale valore tramite una query. E’ sufficiente interrogare le tabelle sysobjects e syscolumns del nostro db attraverso il seguente codice SQL:

use nome_del_database

SELECT     COUNT(*) AS Numero_campi_della_tabella
FROM         dbo.syscolumns INNER JOIN
                      dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
WHERE     (dbo.sysobjects.name = ‘nome_della_tabella‘)

Tale interrogazione funziona anche su SQL Server 2005 in cui, anche se alcune tabelle di sistema sono state sostituite, sono presenti le corrispondenti query di back-compatibility

C# Space Invaders

Screenshot del gioco
Per divertimento, ho voluto ricreare il mitico Space Invaders in C# utilizzando solo oggetti WinForms. La navetta, gli invasori, i proiettili sono realizzati utilizzando le labels; i bunker sono oggetti pictures; per il movimento ho utilizzato due panels. Sul mio portatile (T7300 2GB scheda grafica X3100), il risultato è soddisfacente. Per ottenere un vero space invaders, manca ancora l’astronave a passaggio casuale ed i suoni; inoltre, i bunkers non scompaiono quando gli invasori ci passano sopra. Per il resto, ci potete giocare con gusto! Cliccate qui per scaricare i sorgenti.

Un parser HTML in VB.NET

Ho creato una classe VB.NET in grado di fare il parsing di una stringa contenente codice HTML; la stringa può eventualmente essere caricata da un URL attraverso uno specifico metodo della classe stessa. Il codice può essere scaricato da questo link

La Provincia di Roma in Second Life/2

Ecco qui in allegato la presentazione del progetto dell’agorà virtuale della Provincia di Roma e la sintesi del convegno tenuto al Forum PA

Pivot Table in SQL Server/1

La creazione di Tabelle Pivot in SQL Server non è mai stato un compito particolarmente agevole; fino alla versione 2000 l’unica possibilità era quella di utilizzare le istruzioni T-SQL case-when con la funzione di aggregazione GROUP BY, mentre dalla versione 2005 è stata introdotta la clausola PIVOT che, se non altro, evita la necessità di indicare i campi da aggregare.
Per velocizzare il lavoro, ho creato una classe C# (Clicca qui per scaricarla) che, a partire da una connessione SQLConnection e da una serie di parametri specifici (campi da inserire sulle righe, campo da inserire sulle colonne, tipo di valore da aggregare), restituisce la stringa T-SQL in grado di visualizzare la tabella pivot richiesta. Tale stringa non utilizza l’istruzione PIVOT ed è pertanto utilizzabile anche con le versioni precedenti di SQL Server. Per creare il risultato, la classe in C# utilizza la classe in VB.NET per il parsing delle stringhe SQL che ho presentato in un post precedente; quindi, è necessario scaricare anch’essa, creare la relativa dll e utilizzarne il riferimento.

La Provincia di Roma in Second Life

Lunedì 12 maggio alle ore 16 al forum PA io e Cecilia Santoni (funzionario responsabile del Servizio 3 Dipartimento XI della Provincia di Roma) terremo un mini convegno relativo all’Isola del lavoro della Provincia in Second Life (Visualizza la scheda del convegno sul sito del Forum PA). Siete tutti invitati a partecipare.

Grafi e cammino minimo

Cos’è un grafo? In realtà, non è niente di più di un insieme di elementi collegati fra loro: ognuno degli elementi è detto “nodo”, ed i collegamenti sono detti “archi”. Esiste una ben precisa teoria matematica, la “teoria dei grafi”, che si occupa di studiare le proprietà e gli algoritmi che riguardano tale struttura. Quando un navigatore satellitare calcola il tragitto migliore per arrivare alla meta, sta in realtà applicando un algoritmo di “cammino minimo” fra due nodi di un grafo. Ho quindi costruito una classe in VB.Net (Clicca qui per scaricarla) che si occupa di memorizzare e di manipolare un grafo, nonchè di calcolare il cammino minimo fra due nodi utilizzando l’algoritmo di Dijkstra

Una classe VB.NET per il parsing delle stringhe SQL

Ho creato una classe in VB.NET che incapsula una stringa SELECT di SQL e la suddivide nelle sue componenti (elenco dei campi della clausola SELECT, elenco delle tabelle della clausola FROM, stringhe delle clausole WHERE, GROUP BY, ORDER BY ecc.). La classe controlla la correttezza semantica delle varie clausole SQL, ma non effettua alcun controllo sui parametri restituiti (ad esempio: controlla che FROM venga dopo SELECT e prima di WHERE, ma non se l’elenco dei campi della SELECT sia corretto sintatticamente). Cliccando qui potete scaricare la classe VB.NET con un relativo progetto di esempio (non esaustivo nell’illustrare tutti i metodi: la scoperta delle modalità di utilizzo di quelli non inclusi la lascio a voi). Ho cercato anche di generalizzare, per quanto possibile, la sintassi SQL: ho incluso quindi anche la gestione delle clausole LIMIT e TOP.

Tenete presente che la classe è stata sviluppata per uso personale, e non gestisce quindi tutte le reali necessità di parsing ma solo quelle a me necessarie; contiene comunque anche tutta una serie di metodi di manipolazione, come quelle ad esempio per rimuovere le clausole WHERE, ORDER BY ecc.