febbraio 2005 Blog Posts

Jeff Raskin dies of cancer at 61

Sadly, we must now say good-bye to one of the most influential men that have worked for Apple. Jeff Raskin - the man who commited his time to making the Mac GUI we all know and love - passed away this last Saturday. Link: The Different District powered by IMHO 1.2 with Emoticon Formatter

Xslt: Righe di colore alternato in una tabella

Questa è banale ma ogni volta devo andare a riguardarmela. Inoltre avevo già scritto qualche cosa di analogo per reporting services, quindi ci stava bene anche per Xslt . Torniamo al problema: come alternare il colore delle righe di una tabella in Xslt? Prendiamo come esempio il solito xml: <?xml version="1.0" encoding="UTF-8"?><rubrica><persona>    <Nome>Mario</Nome>    <Cognome>Rossi</Cognome>    <Telefono>1213243252345</Telefono></persona><persona>    <Nome>Antonio</Nome>    <Cognome>Bianchi</Cognome>    <Telefono>1213243252345</Telefono></persona></rubrica> Ed ecco l'esempio in Xslt sfruttando il tag xsl:attribute: <xsl:stylesheet version="1.0"                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 xmlns:xs="http://www.w3.org/2001/XMLSchema"><xsl:template match="/"><html>    <body>    <xsl:for-each select="//rubrica">    <table border="1">        <xsl:for-each select="persona">            <tr>            <xsl:attribute name="style">                <xsl:choose>                <xsl:when test="position() mod 2 = 0">                    background-color:silver;                </xsl:when>                <xsl:otherwise>                    background-color:#EFEFEF;                </xsl:otherwise>                </xsl:choose>            </xsl:attribute>                <td><xsl:value-of select="Nome" /></td>                <td><xsl:value-of select="Cognome" /></td>                <td><xsl:value-of select="Telefono" /></td>            </tr>        </xsl:for-each>    </table>    </xsl:for-each>    </body></html></xsl:template></xsl:stylesheet> That's all folks  Google's Words: alternate color odd even background-color xslt powered by IMHO 1.2 with Emoticon Formatter

File di Trace in .Net

Ieri mi sono scontrato con il problema di generare un file di trace di un'applicazione. Il mio pensiero è subito volato verso le Enterprise Library, finalmente l'occasione di utilizzare questo gioiello della scienza e della tecnica. Durante il workshop del 2 dicembre (Architecture & Management) ero rimasto affascinato dagli Application Blocks, tanto (giustamente) decantati dal nostro Lorenzo. Dopo l'uscita della versione 1.0 delle EL non vedevo l'ora di avere l'occasione per buttarmici sopra. Ma con il senno di poi mi rendo conto che l'occasione non era questa. Infatti, man mano che approfondivo l'argomento mi rendevo sempre più conto che le EL sono eccezionali, ma nel mio...

Geniale: GoogleFight

Ogni volta le solite discussioni..  il mio è migliore del tuo. C# è meglio di vb! Bene, Google vi viene ancora una volta incontro (o scontro ). Qualche genio si è inventato un modo originale per utilizzare Google come giudice finale. Così le discussioni si chiudono una volta per tutte!! Spettacolare. Ovviamente va considerato solo come una curiosità! N.B. C'è ancora qualche piccolo baco... ad esempio per cercare C# dovete inserire C%23. Non vi dico il risultato per non rovinarvi la sorpresa!! (Link rapido). powered by IMHO 1.2 with Emoticon Formatter

MSN Messenger? Qualcuno potrebbe spiarvi

I messaggi inviati attraverso Msn Messenger viaggiano in chiaro attraverso la rete. Esistono degli sniffer creati appositamente per catturare i messaggi MSN inviati attraverso la rete. La soluzione esiste. E' freeware per uso personale.. non contiene spyware: SimpLite. La tecnica è quella del crypt dei messaggi con il meccanismo delle chiavi pubbliche/private. Solo il destinatario sarà in gradi di leggere i vostri messaggi (sempre che non abbiate un key logger installato sulla vostra macchina! ). Prodotto molto interessante. powered by IMHO 1.2 with Emoticon Formatter

Mamma Microsoft ci insegna ad essere creativi

Ricerca di idee di prodotto per Micro-ISV A parte la battuta ho trovato l'articolo molto interessante proprio per la semplicità con cui affronta l'argomento. Originale l'approccio iniziale utilizzando C# per descrivere l'algoritmo necessario per trovare un'idea. Quanti Micro-ISV ci sono all'ascolto? powered by IMHO 1.2 with Emoticon Formatter

Condizionamenti multimediali

Un bellissimo esempio di come manovrando opportunamente le informazioni sia possibile far credere qualunque cosa (gli spettatori del TG4 ne sanno qualche cosa ) http://www.pentagonstrike.co.uk/pentagon_it.swf Del solito Attivissimo la smentita scientifica di quanto mostrato nel video. Date un'occhiata al video perchè merita veramente. powered by IMHO 1.2 with Emoticon Formatter

Rintracciabilità delle informazioni

Nei giorni scorsi riflettevo circa la metodologia che utilizzo per cercare le soluzioni ai mille piccoli problemi che la programmazione mi (ci) porta ad affrontare. Generalmente parto da Google utilizzando parole chiave in inglese. Si sa, la lingua madre del web è l'inglese, e a maggior ragione per le problematiche tecnico/informatiche. La ricerca avviene sia nel web che nei gruppi dove spesso si trovano soluzioni interessanti e link azzeccati. Man mano si raffina la ricerca modificando le parole chiave fino ad arrivare vicini alla soluzione. A questo punto comincia la fase di test e si sperimentano variazioni. Al termine di questo processo, se...

Generare l'XSD dato l'XML

In caso di necessità di generare lo schema partendo da un'xml dato: DataSet ds = new DataSet();ds.ReadXml(@"c:\XmlOrigine.xml");ds.WriteXmlSchema(@"c:\Schema.xsd"); Molto banale. Ovviamente utilizzando i soliti memory stream è possibile fare il tutto in memoria senza passare per il file system. powered by IMHO 1.2 with Emoticon Formatter

Scarichiamoli!

i diritti esclusivi relativi ad un'opera dell'ingegno dovrebbero estinguersi nel momento in cui l'opera viene prodotta/riprodotta grazie ad un finanziamento pubblico. L'iniziativa di Creative Commons non è malvagia, le motivazioni mi sembrano più che valide... purtroppo gli interessi economici in gioco sono tanti, staremo a vedere. powered by IMHO 1.2 with Emoticon Formatter

Rss Reader... molto di più

Serence KlipFolio is an information awareness and notification application for Windows that saves you time and effort by intelligently monitoring remote data sources--like weather, stocks, Hotmail, news, RSS feeds and even auctions--right on your desktop. Piccolo ma potente. In poco spazio tengo d'occhio diversi siti (ovviamente per primo UgiDotNet ), il mio account su GMail (Google Mail Klip), la posta aziendale (Email Klip). Le funzionalità comunque sono molteplici (ad esempio FTP Monitor) ma per gli incontentabili esiste la possibilità di estenderle ulteriormente. Il tutto veramente poco invadente. Si capisce che il software in questione mi ha esaltato? powered by IMHO 1.2 with Emoticon Formatter

Confrontare versioni diverse dello stesso report Crystal

Oggi mi sono scontrato con lo stabilire le modifiche effettuate su un report Crystal. I file Crystal sono in formato binario proprietario, quindi impossibili da confrontare. Ma il trucco c'è. Nella barra degli strumenti standard di Seagate Crystal Reports (versione 8) è presente un icona che non corrisponde a nessuna voce di menu (Questo per semplificarci la vita come sempre ): Esporta Attraverso questo comando è possibile esportare il report completo in formato testuale (leggibile da essere umano), selezionando...

Microsoft Win32 to Microsoft .NET Framework API Map

Per chi è abituato ad utilizzare le Api segnalo un interessante articolo che mappa le funzioni offerte dalle api alle corrispondenti classi/metodi presenti nel framework (Se esistono). Fonte:Win32 API powered by IMHO 1.2 with Emoticon Formatter

Paginazione in Xslt

Supponiamo di avere l'esigenza di gestire la paginazione in fase di stampa attraverso un Xslt. Questo significa gestire il cambio pagina a seguito di un determinato numero di righe stampate. Per gestire questa funzionalità attraverso l'html dobbiamo utilizzare i fogli di stile per creare una classe che effettui il cambio pagina: @media print {.break {page-break-before:always;}} Qui viene il difficile: decidere quando è il momento di cambiare pagina. Dobbiamo utilizzare del javascript all'interno del nostro xslt che tenga traccia del numero di righe stampate: <msxsl:script language="JScript" implements-prefix="user"><![CDATA[    var counter = 0;    function resetCounter() {        counter = 0;        return true;    }    function incCounter(){        counter++        return true;    }    function getCounter(){        return counter;    }]]></msxsl:script> All'interno dell'xslt potremo prelevare/incrementare/resettare il contatore nel seguente modo: <xsl:variable name="counter"    select="user:getCounter()"/><xsl:variable name="incrementa" select="user:incCounter()"/><xsl:variable name="res"        select="user:resetCounter()"/> Quindi vediamo un esempio completo, l'xml da trasformare: <?xml version="1.0" encoding="UTF-8"?><rubrica><!-- Per verificare il corretto funzionamento della paginazione  -- creare più elementi persona --><persona>    <Nome>Mario</Nome>    <Cognome>Rossi</Cognome>    <Telefono>1213243252345</Telefono></persona></rubrica> L'xslt che gestisce la paginazione: <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0"                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 xmlns:xs="http://www.w3.org/2001/XMLSchema"                  xmlns:msxsl="urn:schemas-microsoft-com:xslt"                xmlns:user="urn:user-namespace-here">                              <msxsl:script language="JScript" implements-prefix="user"><![CDATA[    var counter = 0;    function resetCounter() {        counter = 0;        return true;    }    function incCounter(){        counter++        return true;    }    function getCounter(){        return counter;    }]]></msxsl:script>        <xsl:variable name="RowForPage">40</xsl:variable><xsl:template match="/"><html>    <body>    <head><style>    @media print {.break {page-break-before:always;}}                </style></head>    <xsl:for-each select="//rubrica">    <table border="1">        <xsl:for-each select="persona">            <xsl:variable name="counter" select="user:getCounter()"/>            <xsl:if test="$counter &gt; $RowForPage">                <xsl:variable name="res" select="user:resetCounter()"/>                <xsl:text disable-output-escaping="yes">                <![CDATA[                    </table><div class="break"></div><table  border="1">                ]]>                                </xsl:text>                                                </xsl:if>            <tr><td><xsl:value-of select="Nome" /></td>                <td><xsl:value-of select="Cognome" /></td>                <td><xsl:value-of select="Telefono" /></td>            </tr>            <xsl:variable name="incrementa" select="user:incCounter()"/>        </xsl:for-each>    </table>    </xsl:for-each>    </body></html></xsl:template></xsl:stylesheet> Questa è la soluzione che ho trovato. Non è...

Google Browser

Microsoft lancia MSN Search? Google risponde con il suo Web Browser... a me sembra fantapolitica, anche se non mi dispiacerebbe affatto vedere un GBrowser. powered by IMHO 1.2 with Emoticon Formatter

Stampare una pagina html

Come stampare una pagina html senza far apparire la finestra di selezione della stampante? La soluzione che ho adottato comporta l'inclusione dell'activeX di Internet Explorer nel codice (Componente COM Microsoft Web Browser). Altre soluzioni fanno sempre apparire quella dannata printer dialog. Siccome l'html viene generato dinamicamente navigo sull'about:blank: Object n = System.Reflection.Missing.Value;axWebBrowser1.Navigate("about:blank", ref n, ref n, ref n, ref n); Sull'evento NavigateComplete2 vado ad iniettare l'html dentro l'oggetto: private void axWebBrowser1_NavigateComplete2(object sender                    , AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e){    object[] psa = {this.Html}; // Variabile Stringa che contiene l'html    mshtml.IHTMLDocument2 hDoc2 = (mshtml.IHTMLDocument2)axWebBrowser1.Document;        hDoc2.clear(); // Pulisco la pagina    hDoc2.write(psa); // Scrivo il contenuto    hDoc2.close(); // Chiudo la pagina} A questo punto chiamo il seguente metodo per stampare la pagina senza richiesta di selezione da parte dell'utente (stampante di default). Il terzo parametro della ExecWB serve per far si che il thread resti in attesa fino a completamento della stampa, in questo modo siamo certi che...

Finalmente Blog

Segnalo la recente apertura del Blog di Beppe Grillo ...userà anche lui IMHO? powered by IMHO 1.2 with Emoticon Formatter

Grafologi all'attaco di...

Questa è da sbellicarsi, e permette di rivalutare positivamente il lavoro dei grafologi! "Non è un leader nato", tuonano i grafologi. Ma chi? powered by IMHO 1.2 with Emoticon Formatter

Copyright © Gabriele Gaggi

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski