di .NET e di altre amenità

Live Search Box e altre amenità

Raggruppo in un singolo post due cose che mi hanno consentito di migliorare il mio weblog. Innanzitutto la version Portable di Windows Live Writer, segnalata da Igor che mi sono naturalmente affrettato ad aggiungere alle applicazioni che sono presenti nella mia chiavetta USB.

In secondo luogo, stasera mi sono imbattuto nella Live Search Box, che mi sono affrettato a sostituire a quella di google nell'angolo in alto a destra della pagina. L'ho fatto perchè innanzitutto ho riscontrato che non ci sono sostanziali differenze nelle ricerche con l'una o con l'altra, ma soprattutto perchè mi sembra molto efficace e comodo avere i risultati in popup sulla pagina.

Provatela e vedrete che vi piacerà.

La trovate qui:

http://search.live.com/siteowner

ASP.NET 2.0: ExpressionBuilder reloaded (about Themes)

Stamane nei newsgroup è rispuntata una delle questioni ricorrenti che riguardano i temi. Mi riferisco alla possibilità di referenziare le immagini presenti in un tema direttamente dalla pagina aspx. Tempo fa avevo dato una che si basava sull'uso di CSS e DIV che con un po' di furbizia può diventare ospite di una immagine presa dalla cartella del tema corrente.

Pare però che a qualcuno questa soluzione non sia sufficiente e quindi ho tirato fuori dal cilindro un'altra possibilità interessante. Si tratta di scriversi un piccolo ExpressionBuilder che effettui la mappatura dell'immagine alla cartella del tema desunta dalla proprietà Page.Theme. Massimo, che ha posto la domanda ha scritto il codice secondo le mie indicazioni e lo ha postato nel suo weblog perciò mi limito a linkarlo anche se è scritto in vb.net.

La soluzione consente di scrivere il seguente codice:

<asp:Image runat="server" ImageUrl="<%$ ThemedImage:images/pippo.jpg %>" />

L'uso dell'ExpressionBuilder permette di rendere più scorrevole la scrittura del codice riunendo in un solo file il markup dell'immagine e il suo url a differenza di quello che succedeva con la mia precedente soluzione. L'unica obiezione che qualcuno potrebbe sollevare è che si dovrà riportare hard-coded la cartella del tema ~/App_Themes ma occorre tenere presente che nel framework stesso la situazione è analoga.

Technorati tags: , ,

Silverlight Playground 1.0.2703 BETA 1

Stasera ho pubblicato la versione beta del mio editor per Silverlight. Con l'occasione ho anche provveduto a cambiargli il nome da SilverlightPad a Silverlight Playground 1.0. Si tratta - come avevo già anticipato in un mio precedente post - di un editor che consente la lavorazione di scene Silverlight mediante l'integrazione di un webserver embedded all'interno dell'applicazione stessa.

Grazie a ciò è possibile vedere la preview funzionante del codice appena scritto, direttamente nella form di editing, avvantaggiandosi anche della colorazione della sintassi per il codice da scrivere.

Ho pensato di introdurre un paradigma simile al codebehind di ASP.NET. Infatti ad ogni scena sarà sempre disponibile anche un file JS nel quale gestire gli eventi generati dall'interazione con l'interfaccia utente. Inoltre è possibile scrivere del codice in file separati e vederlo incluso al momento del runtime.

Trovate il progetto su codeplex: http://www.codeplex.com/silverlight

La mia nuova scrivania...

Nella nuova casa in cui abito ho una studio tutto per me e devo scegliere una scrivania. Dite che questa sia troppo impegnativa? 

 

 

Technorati tags: , ,

APO USB Autorun

Sto lentamente diventando schiavo della mia chiavetta USB da 1 GB ove ho oramai accentrato tutte le applicazioni portabili che rivestono una qualche utilità per me. Quello che mi dava ancora un po' fastidio era di dover aprire la chiavetta e avviare ogni volta il launcher che come un secondo menù di avvio mi rende disponibili tutte le applicazioni al bisogno.

Cercando un po' in rete ho trovato APO USB Autorun che installato nel pc si incarica di eseguite il contenuto di un file autorun.inf salvato nella chiavetta.

E ora ancora mi stupisco ogni volta che inserisco il plug nella porta USB e pochi istanti dopo il menù si mostra in tutta la sua bellezza... :)

Link:

Accesso web per Newsgroup Italiani

Vi giro la notizia che finalmente sul sito web Microsoft Italia è disponibile l'accesso web ai newsgroup Italiani dedicati a tutto lo scibile Microsoft.

http://www.microsoft.com/italy/communities/newsgroups/default.mspx

Speriamo che questo dia un po' di nuove presenze a questi gruppi di discussione che possono essere di grande aiuto a chi lavora con queste tecnologie e si trova a combattere con la carenza di documentazione cronica...

Se volete mi trovate qui:

Disk Cleanup... 6GB di file temporanei

Che sia il caso di farla un po più spesso?

Service Pack 1 per Flight Simulator X

Visto l'inatteso successo del mio su Flight Simulator X, non posso esimermi dal segnalare che è stata pubblicata la Service Pack 1 dell'apprezzato software di simulazione. L'aggiornamento è disponibile in 7 lingue.

Link:

L'update è disponibile anche per l'SDK

Link:

Silverlight: Problemi di compatibilità con ASP.NET AJAX

A quanto pare ci sono dei problemi ad includere il nuovo file silverlight.js, introdotto dalla beta 1 all'interno di progetti che contengano uno ScriptManager di ASP.NET AJAX. I problemi devo dire sono intermittenti nel senso che esiste almeno una combinazione di questi elementi che funziona, ma in realtà ancora non sono riuscito a capire esattamente quale. Il problema deriva da una doppia dichiarazione del namespace SYS per cui se includete silverlight.js, ASP.NET AJAX non sarà più in grado di trovare il proprio.

Stamattina ho trovato un sul forum di Silverlight. In buona sostanza pare che il problema si risolva dichiarando il file js all'interno dello ScriptManager stesso:

   1: <asp:ScriptManager ID="sm" runat="server">
   2:     <Scripts>
   3:          <asp:ScriptReference Path="silverlight.js" />
   4:     </Scripts> 
   5: </asp:ScriptManager>

In tutta sincerità la soluzione è piuttosto semplice, ma confesso di non averci pensato. Stasera provo a vedere se è davvero così semplice.

Technorati tags: , , ,

ThickBox 3.0

Ho scoperto l'ennesimo modal popup basato su IFRAME. Thickbox 3.0 che fa uso di una libreria javascript chiamata , a prima vista pare fatto bene. Devo provarlo un po' più a fondo e magari potrà tornarmi utile in qualche progetto:

Link: http://jquery.com/demo/thickbox/

Technorati tags: , ,

BeeTagg Mobile RSS Reader

Chi di voi come me ha un palmare dell'ultima generazione o uno smartphone, sa bene quali e quante siano le difficoltà di scrivere su quelle tastiere ridotte ai minimi termini. Se poi si tratta di annotarsi l'url di un feed allora l'operazione è ancora più complicata.

Oggi per un puro caso ho scoperto l'esistenza di , un interessante software gratuito che si installa sul palmare e fa uso della fotocamera per fare la scansione di una speciale etichetta a nido d'ape che si può facilmente generare sul suo sito web.

Quella che vedete qui di fianco ad esempio è l'etichetta del mio weblog. Se avete uno smartphone a portata di mano non avete che a , avviarlo, poi puntate la fotocamera sull'etichetta, fotografarla e magicamente troverete il mio feed iscritto nel vostro blogroll personale.

La trovo davvero una bella idea, sempre che diventi un po' nota potrebbe essere molto efficace. Sul sito di BeeTagg si trovano anche dei  con alcuni feed tematici inclusi.

RegularExpressions: Non-Greedy Matching

Chi si è cimentato nel parsing di HTML mediante regular expressione probabilmente ha sbattuto contro il seguente problema:

Poniamo ad esempio di fare il match di una coppia <td></td> in una tabella come la seguente:

   1: <table>
   2:     <tr>
   3:         <td>Cella1</td>
   4:         <td>Cella2</td>
   5:     </tr>
   6: </table>

Potremmo usare una regular expression siffatta:

MatchCollection matches = Regex.Matches(@"<td>.*</td>");

Purtroppo il risultato è diverso da quello che ci si può aspettare. Infatti il motore di risoluzione delle regular-expressions in .NET così come in molti altri linguaggi è ottimistico e tenta sempre di effettuare il match più largo possibile. Perciò il risultato del precedente pattern è:

1: <td>Cella1</td><td>Cella2</td>

(il numero indica la quantità di match in MatchCollection)

Per ottenere un matching "non-greedy" (letteralmente non-ingordo) cioe esattamente quello che ci si sarebbe aspettato è necessario modificare il pattern introducendo un ? dopo il carattere che quantifica le ripetizioni:

MatchCollection matches = Regex.Matches(@"<td>.*?</td>");

Ed ecco che il risultato diventa

1: <td>Cella1</td>
2: <td>Cella2</td>

Fonte: