febbraio 2005 Blog Posts
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
posted @ lunedì 28 febbraio 2005 14:24 |
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
posted @ venerdì 25 febbraio 2005 14:51 |
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...
posted @ venerdì 25 febbraio 2005 10:30 |
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
posted @ mercoledì 23 febbraio 2005 20:35 |
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
posted @ lunedì 21 febbraio 2005 19:47 |
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
posted @ mercoledì 16 febbraio 2005 17:23 |
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
posted @ mercoledì 16 febbraio 2005 11:51 |
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...
posted @ martedì 15 febbraio 2005 23:35 |
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
posted @ venerdì 11 febbraio 2005 12:46 |
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
posted @ venerdì 11 febbraio 2005 09:27 |
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
posted @ mercoledì 9 febbraio 2005 13:29 |
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...
posted @ martedì 8 febbraio 2005 16:29 |
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
posted @ martedì 8 febbraio 2005 14:48 |
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 > $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 è...
posted @ martedì 8 febbraio 2005 10:38 |
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
posted @ giovedì 3 febbraio 2005 14:39 |
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...
posted @ giovedì 3 febbraio 2005 10:38 |
Segnalo la recente apertura del Blog di Beppe
Grillo ...userà anche lui IMHO?
powered by IMHO 1.2 with Emoticon Formatter
posted @ mercoledì 2 febbraio 2005 10:03 |
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
posted @ martedì 1 febbraio 2005 09:22 |