<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>daniele WebLog</title>
        <link>http://blogs.ugidotnet.org/danielemulas/Default.aspx</link>
        <description>.NET Corner</description>
        <language>it-IT</language>
        <copyright>Daniele Mulas</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <image>
            <title>daniele WebLog</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/danielemulas/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Message box</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/15/message-box.aspx</link>
            <description>&lt;p&gt;Dopo una giornata passata allo sviluppo di una applicazione, mi sono accorto di una mia particolarità.    &lt;br /&gt;Spesso mi capita di fermarmi anche svariati minuti a pensare alla frase da inserire nella classica     &lt;br /&gt;message box che segnala all'utente un messaggio di qualche exception o di qualche scelta che l'utente deve compiere.     &lt;br /&gt;Credo che segnalare bene ciò che stà succedendo sia un dovere da parte del programmatore per aiutare l'utente     &lt;br /&gt;a prendere la decisione giusta in questi momenti. Ma a volte trovo veramente difficoltoso trovare le parole giuste...     &lt;br /&gt;    &lt;br /&gt;Per velocizzare questa mia fase mentale, stavo seriamente pensando di crearmi delle frasi pre confezionate da adattare a diverse     &lt;br /&gt;situazioni. Voi avete adottato qualche stratagemma a riguardo ?    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e7759ac5-2849-404a-92bb-985ccbc83d8a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/MessageBox" rel="tag"&gt;MessageBox&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/94947.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/15/message-box.aspx</guid>
            <pubDate>Mon, 15 Dec 2008 21:12:25 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/15/message-box.aspx#feedback</comments>
            <slash:comments>508</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/94947.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/94947.aspx</trackback:ping>
        </item>
        <item>
            <title>WPF - RIbbon toolbar</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-toolbar.aspx</link>
            <description>&lt;p&gt;In questo fine settimana mi sono dedicato allo studio della WPF ribbon toolbar, con lo scopo chiaramente di cercare di riutilizzarla per le UI delle mie applicazioni. &lt;/p&gt;  &lt;p&gt;Ho scritto un breve post che ne illustra alcune funzionalità, tratte dal'HandOnlab che si trova sul sito di windowsClient.net.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx"&gt;WPF - Ribbon Toolbar&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Ciao a tutti e forza Cagliari ( che sfiga oggi ! )   &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7ecdf7b8-7948-48a9-a070-9ec02502b9a3" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/WPF" rel="tag"&gt;WPF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ribbon%20Toolbar" rel="tag"&gt;Ribbon Toolbar&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/94929.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-toolbar.aspx</guid>
            <pubDate>Sun, 14 Dec 2008 20:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-toolbar.aspx#feedback</comments>
            <slash:comments>284</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/94929.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/94929.aspx</trackback:ping>
        </item>
        <item>
            <title>WPF - Ribbon preview</title>
            <category>windowsClient</category>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx</link>
            <description>&lt;p&gt;In questo fine settimana ho deciso di approfondire la Ribbon toolbar di Office, per poterla riutilizzare nelle mie interfaccie.&lt;/p&gt;  &lt;p&gt;Primo passo scaricare la ribbon toolbar disponibile su codeplex a questo indirizzo : &lt;a href="http://www.codeplex.com/wpf/Wiki/View.aspx?title=WPF%20Ribbon%20Preview"&gt;WPF Ribbon Preview&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Secondo passo da compiere è sicuramente scaricare l' handsOnLab presente nel sito dedicato al mondo client di microsoft(&lt;a href="http://www.windowsClient.net"&gt;www.windowsClient.net&lt;/a&gt;) nella sezione learn che illustra,oltre alla Ribbon anche le nuove features del WPF Toolkit ed in particolare del Datagrid. &lt;/p&gt;  &lt;p&gt;Iniziamo a capire il suo funzionamento.&lt;/p&gt;  &lt;p&gt;Prima di tutto è necessario dire che la Ribbon è governata attraverso i Ribbon Command che permettono di impostare per ogni sua sezione   &lt;br /&gt;delle caratteristiche comuni.  &lt;br /&gt;Le RibbonCommand sono composte da :&lt;/p&gt;  &lt;ul&gt;   &lt;p&gt;a) &lt;b&gt;LabelTitle&lt;/b&gt;       &lt;br /&gt;b) &lt;b&gt;LabelDescription&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;c) &lt;b&gt;ToolTipTitle&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;d) &lt;b&gt;ToolTipDescription&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;e) &lt;b&gt;ToolTipImageSource&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;f) &lt;b&gt;SmallImageSource&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;g) &lt;b&gt;LargeImageSource&lt;/b&gt; &lt;/p&gt;    &lt;p&gt;h) &lt;b&gt;ToolTipFooterTitle&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;i) &lt;b&gt;ToolTipFooterDescription&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;l) &lt;b&gt;ToolTipFooterImageSource&lt;/b&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt; &lt;/ul&gt;  &lt;p&gt;Iniziamo ad analizzare le varie sezioni della Ribbon attraverso il suo codice XAML.   &lt;br /&gt;    &lt;br /&gt;Istanziamo una nuova ribbon toolbar all'interno della nostra applicazione :    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#800000"&gt;&amp;lt;r:Ribbon &amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:Ribbon&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Una prima sezione è sicuramente la Application Menu , ovvero il pulsante dove sono possibili compiere le principali operazioni come il salvataggio del documento, la stampa ecc..   &lt;br /&gt;Vediamo come configurarla attraverso il codice :    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#800000"&gt;&amp;lt;r:Ribbon.ApplicationMenu&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonApplicationMenu&amp;gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Definizione dei command per la Application Menu&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonApplicationMenu.Command&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonCommand&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;Executed="OnCloseApplication"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;LabelTitle="Application Button"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;LabelDescription="Close the application."&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;SmallImageSource="images/Coins.png"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;LargeImageSource="images/Coins.png"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;ToolTipTitle="Personal Finance Manager"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;ToolTipDescription="Click here to open or save a checkbook register." /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonApplicationMenu.Command&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonApplicationMenu&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:Ribbon.ApplicationMenu&amp;gt;&lt;/font&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Come detto in precedenza ogni sezione della Ribbon viene configurata attraverso i RibbonComand che ne permettono una ampia personalizzazione.   &lt;br /&gt;    &lt;br /&gt;Una volta definito l'aspetto del pulsante è necessario inserire al suo interno i vari Items che andranno a comporre il menù.&lt;/p&gt;  &lt;p&gt;Per fare questo è necessario definire un &lt;b&gt;RibbonApplicationMenuItem&lt;/b&gt; per ogni elemento del menù, ed attraverso i suoi RibbonCommand definirne il    &lt;br /&gt;suo aspetto.    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonApplicationMenuItem&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonApplicationMenuItem.Command&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonCommand&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;LabelTitle="_Close"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;LabelDescription="Close the Application"&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;Executed="OnCloseApplication" /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonApplicationMenuItem.Command&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonApplicationMenuItem&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Definito il menù principale, passiamo a definire la vera RibbonToolbar. La Toolbar si divide in &lt;strong&gt;Tabs - Group - Controls&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;Le Tabs vengono utilizzate per inserire delle funzionalità comuni ( come era per le voci File,Modifica,Visualizza dei vecchi menù)    &lt;br /&gt;I Groups vengono usati all'interno delle tabs per suddividere controlli che sono similiari nelle loro funzioni    &lt;br /&gt;Controls sono i veri e propri pulsanti che vengono visualizzati.    &lt;br /&gt;    &lt;br /&gt;I Controls possono essere di diverso tipo :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;RibbonButton&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonCheckBox&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonToggleButton&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonDropDownButton&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonSplitButton&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonComboBox&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonTextBox&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonLabel&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonSeparator&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;RibbonToolTip&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I quali permettono di costruire delle Toolbar con il Look&amp;amp;Feel stile Office 2007 di alta qualità.   &lt;br /&gt;    &lt;br /&gt;Come esempio andiamo ad inserire un RibbonButton all'interno della nostra ToolBar.    &lt;br /&gt;    &lt;br /&gt;Per prima cosa è necessario creare un Tab    &lt;br /&gt;&lt;font color="#800000"&gt;     &lt;br /&gt;&amp;lt;r:RibbonTab Label="Banking"&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonTab&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;All'interno del Tab inseriamo il nostro Group    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonTab Label="Banking"&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonTab.Groups&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonGroup&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonGroup&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;/r:RibbonTab.Groups&amp;gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;I ribbon Group, possono essere formattati attraverso delle proprietà che ne consentono di definire come i controlli verranno      &lt;br /&gt;visualizzati al suo interno. Questo può essere effettuato attraverso la definizione dei &lt;strong&gt;GroupSizeDefinitions.       &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;A questo punto inseriamo il nostro RibbonButton :    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#800000"&gt;&amp;lt;r:RibbonButton Name="RibbonButton1" &amp;gt;     &lt;br /&gt;                                &amp;lt;r:RibbonButton.Command&amp;gt;      &lt;br /&gt;                                    &amp;lt;r:RibbonCommand       &lt;br /&gt;                                        LargeImageSource="/img/softwareD_32x32.png"      &lt;br /&gt;                                        LabelTitle="Help"      &lt;br /&gt;                                        &amp;gt;      &lt;br /&gt;            &amp;lt;/r:RibbonCommand&amp;gt;      &lt;br /&gt;         &amp;lt;/r:RibbonButton.Command&amp;gt;      &lt;br /&gt;&amp;lt;/r:RibbonButton&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Così faccendo possiamo andare a costruirci la nostra Ribbon Toolbar che ci consente di dare un aspetto molto professionali alle nostre applicazioni.    &lt;br /&gt;    &lt;br /&gt;Per  maggiori informazioni rimando al sito di windowsclient.net dove, come detto in precedenza, è possibile scaricare un piccolo Hands-On Lab e il suo     &lt;br /&gt;sorgente dove vengono descritte tutti i passaggi su come configurare il WPF Toolkit e la RibbonToolbar.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx"&gt;What’s Coming in WPF: Datagrid, Ribbon, and VSM&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/94928.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx</guid>
            <pubDate>Sun, 14 Dec 2008 20:31:54 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx#feedback</comments>
            <slash:comments>552</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/94928.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/94928.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] DotNet Sardegna, perch&amp;egrave; no ?</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/08/ot-dotnet-sardegna-perchegrave-no.aspx</link>
            <description>&lt;p&gt;Amo la mia terra e non la cambierei con nulla al mondo...ma per certe cose è veramente una condanna. &lt;/p&gt;  &lt;p&gt;Tante volte leggendo i post di eventi, manifestazioni, ecc.. mi accorgo che per noi che abitiamo in un'isola è spesso molto difficile partecipare.    &lt;br /&gt;A parte i costi ( che comunque esistono...) molto spesso a frenare la voglia di fare è il fatto che devi sempre prevedere almeno un paio di giorni di trasferta e causa impegni lavorativi non è sempre possibile.    &lt;br /&gt;    &lt;br /&gt;A questo punto l'idea... perchè non creare un gruppo di persone appasionate di queste tecnologie che abitino in Sardegna in modo da potersi confrontare, scambiare idee e cercare di migliorare la nostra situazione ?    &lt;br /&gt;    &lt;br /&gt;Io ho buttato una pietrolina in un mare sperando che da questo possa nascere qualcosa.     &lt;br /&gt;    &lt;br /&gt;Rimango in attesa di feedback...    &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/94877.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/08/ot-dotnet-sardegna-perchegrave-no.aspx</guid>
            <pubDate>Mon, 08 Dec 2008 19:35:22 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/08/ot-dotnet-sardegna-perchegrave-no.aspx#feedback</comments>
            <slash:comments>1046</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/94877.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/94877.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] ugi &amp; flickr</title>
            <category>hobbies</category>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/06/27/ot--ugi--flickr.aspx</link>
            <description>&lt;p&gt;Visto che ci sono degli hobbisti della fotografia, ho deciso di creare un gruppo tutto nostro... &lt;br /&gt;
Se volete postare alcuni vostri capolavori ( e non ) siete i benvenuti...&lt;br /&gt;
&lt;br /&gt;
Nome gruppo : &lt;a href="http://www.flickr.com/groups/755737@N25/"&gt;flickr.net&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;io ho iniziato con alcune foto della mia meravigliosa terra...&lt;br /&gt;
&lt;br /&gt;
Buon post....&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/93199.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/06/27/ot--ugi--flickr.aspx</guid>
            <pubDate>Fri, 27 Jun 2008 19:36:24 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/06/27/ot--ugi--flickr.aspx#feedback</comments>
            <slash:comments>1830</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/93199.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/93199.aspx</trackback:ping>
        </item>
        <item>
            <title>Ftp Attivo</title>
            <category>windowsClient</category>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx</link>
            <description>Per un progetto di cui mi sono occupato in azienda ho avuto la necessità di interfacciare la mia applicazione con un dispositivo elettronico, il quale comunica con l'esterno tramite un server FTP.&lt;br /&gt;
&lt;br /&gt;
Com'è noto il protocollo comuica con la porta 21 e la prima operazione da compiere è l'autenticazione. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Private &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;tpTcpClient &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TcpClient&lt;br /&gt;
            &lt;/font&gt; &lt;font size="2"&gt;ftpTcpClient = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TcpClient(strftpLogin, 21)&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
A questo punto dobbiamo inviare dei comandi con i quali comunichiamo le nostre credenziali di accesso :&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;ResponseStream = ftpTcpClient.GetStream&lt;br /&gt;
            strCommand = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;"USER "&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; + strName + vbCrLf&lt;br /&gt;
            bteSendBytes = Encoding.ASCII.GetBytes(strCommand)&lt;br /&gt;
            ResponseStream.Write(bteSendBytes, 0, bteSendBytes.Length)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Per permettere al server FTP di darci una risposta al comando dobbiamo attedere una frazione di secondo prima dell'invio della password&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;
            &lt;p&gt;&lt;font color="#000000"&gt;Threading.Thread.Sleep(500)&lt;/font&gt;&lt;/p&gt;
            &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
Ripetiamo le operazioni per la Password &lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;strCommand = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;"PASS "&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; + strPWD + vbCrLf&lt;br /&gt;
            Array.Clear(bteSendBytes, 0, bteSendBytes.Length)&lt;br /&gt;
            bteSendBytes = Encoding.ASCII.GetBytes(strCommand)&lt;br /&gt;
            ResponseStream.Write(bteSendBytes, 0, bteSendBytes.Length)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
A questo punto se tutto è andato a buon fine dovremmo essere connessi al dispositivo che rimane in attesa di un nostro comando.&lt;br /&gt;
&lt;br /&gt;
Il protocollo FTP ha due metodi comunicazione attivo e passivo. &lt;br /&gt;
&lt;br /&gt;
La differenza fondamentale è che nel caso di comunicazione passiva è il server a comunicare al client attraverso il comando PASV la porta di comunicazione nel quale verrà instaruata la comunicazione, mentre nel caso di ftp attivo è il client ad indicare al server attraverso il comando PORT la porta di comunicazione che rimane in ascolto in attesa di una connessione da parte del server FTP.&lt;br /&gt;
&lt;br /&gt;
Tipicamente le porte di comunicazione devono essere  &amp;gt; 1023.&lt;br /&gt;
&lt;br /&gt;
Il disposito lavora con un FTP di tipo attivo quindi sarà nostro compito indircargli a quale porta attendiamo la comunicazione :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ipLocale &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; = Dns.GetHostEntry(Dns.GetHostName).AddressList(0).ToString()&lt;br /&gt;
            &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Listener &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TcpListener(IPAddress.Parse(ipLocale), myPortOpen)&lt;br /&gt;
            Listener.Start()&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
Inviamo i comandi per richiedere il file desiderato :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;FTPCommands(ftpStream, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;"TYPE I"&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, returnMessage)&lt;br /&gt;
            FTPCommands(ftpStream, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;"PORT 192,168,0,3,7,35"&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, returnMessage)&lt;br /&gt;
            FTPCommands(ftpStream, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;"RETR "&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; + strFilePath, returnMessage)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
A questo punto non ci resta che attendere che il server faccia la sua richiesta di comunicazione alla porta indicata&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" bgcolor="#efefef" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;If &lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;Listener.Pending &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Then&lt;br /&gt;
            &lt;br /&gt;
            &lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;dataClient = Listener.AcceptTcpClient()&lt;br /&gt;
            DownloadStream = dataClient.GetStream&lt;br /&gt;
            &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;ReDim&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; bytDwFile(1024)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Do&lt;br /&gt;
            &lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;lngFileLength = DownloadStream.Read(bytDwFile, 0, 1024)&lt;br /&gt;
            DwFile.Write(bytDwFile, 0, lngFileLength)&lt;br /&gt;
            &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Loop&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;While&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; lngFileLength &amp;gt; 0&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            Listener.Stop()&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
A questo punto abbiamo concluso le operazioni di download non ci resta che salvare il file sul nostro pc.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/92601.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx</guid>
            <pubDate>Sat, 10 May 2008 13:28:55 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx#feedback</comments>
            <slash:comments>1385</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/92601.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/92601.aspx</trackback:ping>
        </item>
        <item>
            <title>.net VS others</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/17/.net-vs-others.aspx</link>
            <description>&lt;p&gt;L'altro giorno riflettevo sulla convenienza di dedicarsi anima e corpo solo ad una singola tecnologia.&lt;br /&gt;
&lt;br /&gt;
Il mondo .NET è un mondo straordinario ricco di tante possibilità che permette di poter integrare all'interno di un'unica&lt;br /&gt;
soluzione tanti mondi ( webApplication, desktopApplication, ecc.. ) , ma spesso nella vita lavorativa ci si trova di fronte a non poter fare delle scelte libere ma spesso condizionate dal tipo di reltà già esistente.&lt;br /&gt;
&lt;br /&gt;
Per esempio se il vostro committente ha a disposizione un server Linux e chiede a voi di realizzargli una applicazione che si integri con una già esistente realizzata con php e mysql, come vi comportereste ?&lt;br /&gt;
&lt;br /&gt;
Prendete il lavoro e lo realizzate con la tecnologia esistente o cercate di tirare verso la vostra tecnologia preferita ?&lt;br /&gt;
&lt;br /&gt;
Per quanto mi riguarda ho sempre dedicato un pò del mio tempo allo studio di diverse tecnologie per non restare tagliato fuori da mondi diversi ( che poi tanto diversi non sono... ), ma chiaramente dedicando un buon 70% al mondo .NET e cercando nel limite del possibile di portare sempre più lavori verso questo tipo di tecnologie.&lt;br /&gt;
&lt;br /&gt;
Ciao Daniele&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/91216.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/17/.net-vs-others.aspx</guid>
            <pubDate>Sun, 17 Feb 2008 13:21:40 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/17/.net-vs-others.aspx#feedback</comments>
            <slash:comments>436</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/91216.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/91216.aspx</trackback:ping>
        </item>
        <item>
            <title>The First Post</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/14/the-first-post.aspx</link>
            <description>&lt;p&gt;Ciao a tutti,&lt;/p&gt;
&lt;p&gt;dopo una lunga frequentazione come lurker dei blogs di Ugi ho deciso di diventare parte attiva di questa community.&lt;br /&gt;
&lt;br /&gt;
Come buona norma di chi arriva è necessario presentarsi :&lt;br /&gt;
&lt;br /&gt;
mi chiamo Daniele Mulas, nato a Cagliari e residente in Quartu Sant Elena ( CA ), laureato presso il Politecnico di Torino in Ingegneria Informatica ma sopratutto appassionato di informatica a 360 gradi.&lt;br /&gt;
&lt;br /&gt;
Hobbies principali, calcio ( forza Cagliari sempre.. ),  calcio a5, fotografia ( a livelli amatoriali ) . &lt;br /&gt;
&lt;br /&gt;
Bene dopo le presentazioni, si inizia a postare...&lt;br /&gt;
&lt;br /&gt;
a presto &lt;br /&gt;
&lt;br /&gt;
Daniele&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/91186.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/14/the-first-post.aspx</guid>
            <pubDate>Thu, 14 Feb 2008 18:37:23 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/02/14/the-first-post.aspx#feedback</comments>
            <slash:comments>2243</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/91186.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/91186.aspx</trackback:ping>
        </item>
    </channel>
</rss>