December 2004 Blog Posts

FxCop non ne fa passare una!!

In un momento di pausa lavorativa, mi sono messo a cercare di capire come automatizzare la creazione di daily-builds... pensavo di usare CruiseControl.NET. Cmq, uno dei controlli che fa CC.NET è lanciare FxCop sugli assembly appena compilati, allora per curiosità ho provato ad installarlo e a farlo girare sulle dll dell'ultima class-library che abbiamo sviluppato in azienda (un CMS). Aggiungo le due dll come target dell'analsi, e... mi becco ben 1412 issues, 989 dei quali sono relativi alle regole di naming (io venendo da Java ho adottato la naming convention per la quale solo le classi devono avere iniziali Maiuscole, mentre le...

Bizza di VS.NET 2003

Posto il mio ultimo post della giornata e della settimana (5 post in un giorno, sto diventando blog...orroico pure io ) Me ne sono accorto questa mattina mentre testavo l'Emoticon Formatter... la solution che usavo era composta da 17 progetti, una era il setup: Se facevo "Build solution" mi compilava tutti e 16 i progetti Se facevo direttamente "Play" me ne compilava solo 13 (e non compilava il mio EmoticonFormatter) Sulle proprietà della solution non ho trovato delle impostazioni specifiche per quando si fa "play" e per quando si fa "Build Solution"... io ho sempre pensato che fosse...

Web Upload progress bar: aggiornamento

Come dicevo ieri, ho fixato il problema con il SlickUpload, cioè il fatto che non era possibile prendere i file dal nome del campo del form... E' un po' un'accrocchio, però funziona... in attesa che Chris Hynes inserisca il nome del campo tra le proprietà dall'UploadedFile. Inoltre ho implementato una bella progress bar che mostra l'avanzamento dell'upload, con velocità e tempo stimato. Scarica qui il file dell'applicativo powered by IMHO 1.1 with Emoticon Formatter

Emoticon Formatter: rilasciata la versione 1.1 beta (1.1.1819.21075)

Quasi due settimane fa avevo rilasciato la CTP, lasciando un po' di cose in sospeso, tra la quali anche il non funzionamento con la nuova versione 1.1 beta di IMHO... (ovviamente ora potrebbe non funzionare più con la 1.0) Ora è disponibile la versione 1.1 beta, sia come binario che come sorgente (se qualcuno vuole vedere). Installazione L'installazione rimane uguale a quella della volta scorsa, e ancora non c'è un readme.txt nel package Per installare il plugin è sufficiente estrarlo nella root della vostra installazione di IMHO, in modo che tutti i files vadano per conto loro nella loro cartella di destinazione Per chi...

Control.Invoke e "manipolazione" di controlli da thread differenti

Per l'Emoticonformatter per IMHO (del quale spero di rilasciare la versione nuova in giornata) stavo cercando di modificare una finestra (aggiungendo dei picturebox e ridimensionandola) alla fine dello scaricamento di tutte le icone. Questa volta ho aggiunto un bel thread per gestire lo scaricamento... ma il problema era proprio qui: l'handler dell'evento che alzavo alla fine dello scaricamento veniva eseguito nel thread usato per lo scaricamento, e non nel thread che disegnava la form e dal quale era stato lanciato lo scaricamento, quindi, veniva una bella eccezione "I controlli creati su un thread non possono avere come elemento padre un controllo...

Merry Christmas and Happy New Year

  Merry Christmas and Happy New Year I miei migliori auguri per un Felice Natale...

Web Upload Progress Bar

Mi sono imbattuto in una problematica interessante, cioè quella di realizzare un progress bar per indicare lo stato di avanzamento dell'upload via web. Sfortunatamente non è facile da implementare come in ASP e Java: il Framework nasconde completamente il processo di upload e di decodifica del post (quando arrivail Page_Load tutto il file è già in memoria del server) Per fare una cosa del genere bisogna creare un HttpHandler e salvare da qualche parte (in una hashtable o similare) lo stato di avanzamento dell'upload, in modo da poterlo leggere da una pagina che si aggiorna e scrive l'avanzamento. Avendo solo 2gg per implementare...

Se Homer Simpson sa usare un browser a schede, lo puoi fare anche tu!!!

Giusto per rimanere in tema di link su Firefox: Homer Simpson uses tabbed browsing powered by IMHO

Getter e Setters: che noia!!!

Come ben dice Andrea, una delle cose più noiose e ripetitive del C# (e forse anche di VB.NET, ma non so di per certo perchè non ho mai provato) è scrivere i banali accessors per i Transfer Objects e similari. #develop ha un'ottimo class wizard, che genera anche tutti i metodi accessors, ma purtroppo non ha il debugger, non permette di sviluppare per web. Ecco quindi un'altra Macro per VS.NET: crea una proprietà pubblica (con getter e setter) per ogni "field" privato definito nella classe. Imports EnvDTEImports System.DiagnosticsImports System.WindowsImports System.Windows.FormsImports SystemImports System.DrawingPublic Module WriteGetterAndSetter    Sub WriteGetterAndSetter()        Dim projitem As ProjectItem = DTE.ActiveDocument.ProjectItem        Dim filecm As FileCodeModel = projitem.FileCodeModel        Dim celt As CodeElement = filecm.CodeElements.Item(1)        Dim celttype As CodeType        If (TypeOf celt Is CodeNamespace) Then            celt = celt.members.item(1)        End If        If (TypeOf celt Is CodeType) Then            celttype = CType(celt, CodeType)        Else            Throw New Exception("Didn't find a type definition as first thing in file or find a namespace as the first thing with a type inside the namespace.")        End If        Dim ep As EditPoint = celttype.GetStartPoint(vsCMPart.vsCMPartHeader).CreateEditPoint()        Try            DTE.UndoContext.Open("Insert public Properties")            Dim objTextDoc As Window            Dim objMovePt As TextSelection            objTextDoc = DTE.ActiveDocument.ActiveWindow            objMovePt = objTextDoc.Selection            ep.MoveToPoint(objMovePt.TopPoint)            'ep.LineUp()            '' Do comment.            ep.Insert(Microsoft.VisualBasic.Constants.vbTab & "#region ""Properties""" & Microsoft.VisualBasic.Constants.vbCrLf)            '' Iterate over code elements emitting doc comments for functions.            For Each celt In celttype.Members                If (celt.Kind = vsCMElement.vsCMElementVariable) Then                    Dim codefun As CodeVariable = celt                    If (codefun.Access = vsCMAccess.vsCMAccessPrivate) Then                        ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & "public " & codefun.Type.AsString & " " & codefun.Name.Substring(1, codefun.Name.Length - 1))                        ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & "{")                        ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "get" & Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "{" & Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "return " & codefun.Name & ";" & Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "}" & Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "set" & Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "{" & Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & codefun.Name & " = value;" & Microsoft.VisualBasic.Constants.vbCrLf)                        ep.Insert(Microsoft.VisualBasic.Constants.vbTab & Microsoft.VisualBasic.Constants.vbTab & "}")                        ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & "}" & Microsoft.VisualBasic.Constants.vbCrLf)                    End If                End If            Next            ep.Insert(Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbCrLf & Microsoft.VisualBasic.Constants.vbTab & "#endregion")        Catch ex As Exception            MessageBox.Show(ex.Message)        Finally            DTE.UndoContext.Close()        End Try    End SubEnd Module Non è come avere il class builder, ma sempre meglio che niente powered by IMHO

Media portal: HTPC opensource in C#

Da un po' di tempo si parla di Win 2005 Media Edition (o come diavolo si chiama).. Ho trovato un splendito sostituto, realizzato in C#, che gira su Win XP con DirectX 9.0c... è Media Portal L'ho installato sul mio portatile per provarlo, in vista di metterlo sul PC che userò in soggiorno con il monitor al plasma, per vederci la TV (a dire il vero vedo solo Sex&the city e MTV) e i vari DVD e DivX. E' molto be fatto, è estendibile con vari plugins (tipo posta, MSN Messenger, ricette, allarmi, ecc...), si connettere a internet per scaricare la guida...

Firefox pubblicizzato sul New York Times

Oggi, 16 Dicembre, sul NYT è stato pubblicizzato Firefox con una pubblicità di due pagine intere.   Pure io avevo fatto una donazione... qui sotto cerchiato il mio nome (io e mia moglie per la precisione) Speriamo che il Panda ruggisca sempre di più!!!! powered by IMHO

ASP - ASP.NET: 0 - 10 !!!!

Oggi ho avuto la sfortuna di dover implementare delle funzionalità su un sito "vecchio" di qualche anno. Ovviamente questo sito era sviluppato ancora con ASP 3.0, in VBScript e qualche COMponente COM. Passata la prima mezz'ora a cercare tra i CD dell'MSDN una versione di VisualStudio 6, la seconda a installare VB6, mi sono trovato in mezzo a righe di codice di pagine da editare con Notepad (InterDev è stato sempre un tabu)... Ma come facevamo ad essere produttivi quando bisogna scrivere i nomi delle variabili di max 4 caratteri per non passare 2 ore a scriverli? e quando non esisteva l'intellisense? e...

Macro per VS.NET per creare le #region nel codice

Come sapete su VS.NET c'è la possibità di raggruppare delle aree di codice tra i tag #region e #endregion (o #Region e #End Region se parlate VB.NET).   Metterlo sempre a mano prima e dopo la zona di codice da racchiudere è un po' una palla, quindi ho cercato un po' e ho trovato questa macro per VS.NET che ho sistemato un po' perchè per come seleziono io il testo non sempre funzionava. ...

Emoticon Formatter: rilasciata la versione CTP (1.0.1807.200)

Siamo in periodo di CTP, quindi mi pare giusto rilasciare anche il mio plugin per IMHO in versione CTP Questo è il file zip contenente il plugin: Scarica Installazione Una veloce spiegaizone in attesa di un bel readme.txt dentro allo zip Per installare il plugin è sufficiente estrarlo nella root della vostra installazione di IMHO, in modo che tutti i files vadano per conto loro nella loro cartella di destinazione Per chi non si fidasse i file sono 3: com.piyosailing.IMHO.Emoticon.resources.dll: va nella cartella appdir\en-US ed è il satellite assembly con le risorse in inglese com.piyosailing.IMHO.Emoticon.EmoticonFormatter:...

Bizze di VS.NET: files di risorse "associati" a file .cs

Ho notato che i file di risorse collegati ad una classe non sempre vengono visti come file "nascosti e associati" ad essa (cioè visibili solo abilitando i file nascosti e navigando sotto al file principale... come nell'esempio qui a fianco tratto da un articolo sulla localizzazione degli applicativi WindowsForm pubblicato tra gli articoli UGIdotNET), ma ogni tanto vengono visti come file .resx autonomi (per lo meno in visualizzazione, perchè poi funziona tutto correttamente) Ho notato quanto segue: se si fa il file di risorse con un editor di testo (e col nome del file .cs con il quale lo...

Emoticon Formatter: "sul mio PC ora funziona"

Come annunciato oggi pomeriggio ho finito la realizzazione dell'Emoticon Formatter. Finito = sul mio PC, con VS.NET in debug mode, funziona Questo è uno screenshot del formatter in azione   Ora vedo di contattare Andrea per testare il plugin e rilasciare il file: anzi, se qualcuno volesse provarlo mi contatti pure, che gli mando l'assembly powered by IMHO

Emoticons con IMHO

Come potete notare anche io sono diventato subito un utente "affezionato" di IMHO, è molto comodo poter scrivere un messaggio senza dover andare sul sito. Io amo le emoticons, ma inserirle sono un casino, bisogna tenersi un elenco degli url delle immagini, e poi inserire le immagini in HTML (più veloce che inserirle con il bottone "Inserisci immagine") Allora mi sono detto: "Perchè non sviluppare un custom formatter per IMHO che permetta di inserive velocemente le icone?" Mi sono scaricato il codice, è ho iniziato a sviluppare questo plugin: è il mio primo progetto "WindowsForm" con .NET (ho sempre fatto solo i soliti applicativi web-based...

Workshop "Architecture & Management": slide e codice dove sono?

Volevo dare un'occhiata alle sessioni che mi ero perso perchè in contemporanea con altre, ma sul sito non trovo ancora nulla. Saranno rese disponibili come quelle delle altre volte? Inoltre, in "Designs Patterns applied" Andrea aveva fatto anche degli splendidi esempi, poi riutizzati sulla sessione di NUnit, sarebbe possibile avere anche quelli?. Grazie

WhatPulse: quanti tasti e click hai fatto oggi?

Per caso oggi sono incappato in questo sito: WhatPulse Un programmillo che aggiunge l'ennesima icona nella traybar tiene conto di quante volte "pigiate" un tasto della tastiera o cliccate col mouse da qualche parte.E ogni tanto invia questi dati sul server centrale per tenere le statistiche e per fare una classifica. Ovviamente io l'ho subito installato, è un buon modo per vedere quanto codice ho scritto oggi :-) Ho anche fatto un team di UGIdotNET (stats) visto che tutti noi scriviamo molto, penso che potremo fare molta strada nella classifica.

Design Patterns: GoF

Alla session di giovedì su Design Patterns tenuta da Andrea mi sono sentito un pesce fuor d'acqua per non aver, non solo mai letto,ma mai sentito parlare del libro sui Design Pattern della GoF. Oggi pomeriggio mi sono diretto alla Hoepli per rimediare, ma oltre al suddetto libro, ne ho trovato anche un'altro che mi pareva interessante e forse anche più utile a livello pratico: Pattern of Entraprise Application Architecture di Fowler. In un altro periodo dell'anno li avrei presi entrambi, ma con il Natale (e i regali di Natale da comprare) sono stato costretto a scegliere: Design patterns contiente le descrizioni...

Paginazione dati direttamente da query con SQL Server

MS SQL Server è un ottimo prodotto, ma secondo me ha una grande mancanza: manca la possibilità di specificare in una query che si vogliono solo le righe dalle 11 alla 20. Qualcuno potrebbe dire che basta fare un Select top 20 * from ... e poi saltare le prime 10 righe in visualizzazione: sfortunatamente il numero dopo il TOP non è parametrizzabile, quindi non si può fare passare ad una stored procedure. Ovviamente ci sono altri mille modi per fare paginazione - salvare la datatable nella session, magari anche nella cache se è una query generica (il comunissimo elenco news), ecc... - ma io dovevo per...

Mio primo entry sul Blog di UGI.NET

Chi sono e perchè posto

«December»
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678