Ieri lavorando con i temi di ASP.NET 2.0 mi sono imbattuto nell'esigenza di impostare una immagine all'interno della pagina mediante il file skin del tema. La cosa di per se banale, ha molte diverse soluzioni. Quella che di primo acchito viene in mente è di usare un controllo impostandone lo SkinId e in seguito referenziarlo nel file della skin. Questo però è un approccio che può andare bene solo se le immagini nella pagina sono decisamente poche, altrimenti il numero di controlli web presenti che il runtime dovrà elaborare aumenta vertiginosamente. Alla fine ho scelto una soluzione, basata sull'uso dei css che mi è parsa degna di essere segnalata perchè nel mio caso mi ha esonerato dall'appensantire eccessivamente la pagina. L'idea è di usare un div al posto di un tag img e di impostarne il background via css.

<div id="myImage"></div>

Poi nel file css è sufficiente impostare il background del div come segue

div#myImage
{
    background-imageurl(images/my_image.gif);
    width:25px;
    height:25px;
}

In questo modo una immagine delle dimensioni di 25x25 pixels il cui vantaggio è di aver specificato l'url in uno stile. In questo modo è possibile usare un css all'interno di un tema di ASP.NET e soprattutto di evitare l'uso di innumerevoli webcontrol. Si tratta di un accorgimento banale, ma il risultato è degno di nota, anche poichè questa tecnica è valida con tutti i browser esistenti.

powered by IMHO 1.3


"Ci ho buttato quasi una notte intera, e un pezzetto di questo pomeriggio, ma alla fine ne sono uscito vivo". Così comincia l'articolo che ho appena postato a testimonianza delle difficoltà che ho incontrato per completare la configurazione di ADAM, la versione applicativa di Active Directory e il provider per Active directory di ASP.NET. Ho deciso di mettere tutto assieme in un unico articolo perchè nele ricerche in rete non ho trovato una sola fonte che spiegasse la cosa nella sua interezza.

Link: http://blog.boschin.it/articles/aspnetadam.aspx


Nel numero di ottobre di Computer Programming sarà pubblicato il primo articolo di una serie dedicata a ASP.NET 2.0. L'argomento della prima puntata saranno le Membership API con un esempio di creazione di Custom Membership Provider e Role Provider. Nei mesi prossimi la serie continuerà toccando altri argomenti di ASP.NET 2.0 come le MasterPages, i Temi, e i nuovi WebControls. Curiosamente in questi giorni è uscito un analogo articolo di Andrea Saltarello, ma per chi non mastica bene l'inglese, oppure, come me, non ama scervellarsi a tentare di comprendere un testo in tale lingua, il mio articolo sarà sicuramente gradito.

Buona lettura!

powered by IMHO 1.3


Per la gioia di chi si è accorto che il precedente controllo hip soffriva di alcuni problemini fastidiosi, ecco online la nuova release. Essa introduce i seguenti miglioramenti:

  1. Timeout della HIP generata portato da 120 secondi a 600 secondi così anche i commentatori più lenti potranno scrivere con tutto comodo
  2. Generazione di un parola della lingua italiana estratta da un dizionario di 16000 lemmi invece di una combinazione casuale di lettere e numeri per migliorare la mnemonicità della combinazione. In questo modo non è più richiesto lo staccare lo sguardo dalla casella di testo in cui si digita

L'installazione richiede la sostituzione dei seguenti file

  • Controls/Hip.ascx
  • bin/Hip.dll

inoltre occorre modificare ulteriormente il Web.Config come indicato in quello presente nello zip e aggiungere il file words.txt che contiene i lemmi. Se trovate termini "poco consoni", basta che li togliate da questo file (non mi sono guardato tutte le 16000 parole... non so se mi spiego).

La licenza è sempre la stessa... D.W.Y.W.B.P.A.L.T.T.P.
(for english people: please link this post if you use this control. thank you)

download: http://www.boschin.it/imho/dottext_hip.zip

demo online: http://blog.imhoproject.org

powered by IMHO 1.2


Visto che sta per arrivare il tempo nel quale le nostre applicazioni potranno sfruttare le MasterPages, di ASP.NET 2.0, cercando in rete ho scoperto un sitarello interessante che spiega come ottenere con l'uso di css e DIV i più disparati layout, certi anche di essere compatibili con Firefox, Opera e Netscape oltre che con Internet Explorer.

Vado a provare...

Link: Little Boxes

powered by IMHO 1.2

 


Non è molto che ho scoperto, con somma gioia, l'uso dei soli "div" e degli stili nella realizzazione di pagine web, grazie a Giulio, un collega grafico che ha fatto di questa tecnica un'arte. Questa sera, mentre imbellettavo la form di login di .TRAQ, che usa il controllo Login di ASP.NET 2.0 e le (quasi) favolose Membership API, eccomi nuovamente alle prese con le tabelle.

I controlli ASP.NET dedicati all'autenticazione a a quant'altro vi gravita attorno, hanno una caratteristica molto interessante, ovvero la possibilità di diventare "template", consentendo così la customizzazione spinta del loro aspetto. E così ho fatto, cliccato l'apposita voce nel menu mi sono dato da fare per ripulire il codice dalla tabella che il controllo genera autonomamente e poi a ricostruirlo del tutto con dei blocchi opportunamente dimensionati.

Tutto è filato liscio, la compatibilità con Firefox è arrivata in un baleno ma poi mi sono perso una buona ora a cercare di capire perchè non mi riusciva di centrare il box. Se non fossi stato tratto in inganno, dalla parola "template", probabilmente l'arcano sarebbe stato scoperto molto più rapidamente, ma alla fine eccolo spuntare andando a sbirciare nel sorgente generato.

Il controllo Login, in versione "template" racchiude il tutto in una bella (si fa per dire) tabellona di una riga per una cella, perciò quello che tipicamente si metterà all'interno dei tags <LayoutTemplate> deve essere sempre considerato racchiuso in un guscio protettivo costituito da table, tr e td.

Sinceramente, con tutta la buona volontà non sono riuscito a trovare una buona e soprattutto valida giustificazione per questo comportamento. Se di template parliamo lascia che mi arrangi fino in fondo dico io. Comunque tant'è. Scoperto l'inganno la soluzione è stata semplice, ma la questione rimane.

Perchè devo agire sotto tutela?

powered by IMHO


Credo di essere sulla via buona, stavolta, per unire l'utile ed il dilettevole. E' un piano di lavoro che ha preso forma alcuni mesi orsono quando, lo scorso Novembre, ho per la prima volta accennato alla mia volontà di impegnarmi a scrivere un "progetto web" che mi consentisse di impratichirmi con le novità del Framework 2.0 nella sua espressione peculiare del web che è l'ASP.NET.

Quell'idea è diventata, a furor di blog, il progetto .TRAQ, che pur apparentemente latitante, in questi giorni comincia a vedere le prime righe di codice, in puro ASP.NET 2.0. Letture, pensieri, e soprattutto molto ascolto ai weblog nell'ugi e un po' in giro, sono stati la mia principale attività ma in questi giorni ho avuto la conferma della possibilità di realizzare una serie di articoli su ASP.NET 2.0 su una nota rivista (non faccio nomi, ma quest'oggi qualcuno l'ha già fatto...).

Ecco quindi che l'utile sta per toccare il dilettevole, dato che lo sviluppo che sto affrontando per .TRAQ sarà senza ombra di dubbio la linea guida di questi articoli, nella speranza di poter da un lato dare una visione diversa, più pratica, di quanto il Framework 2.0 sta apportando alla programmazione in ambito web, e dall'altro perchè no, anche l'occasione di dare un po' di visibilità al progetto.

Ora quindi lo sviluppo deve diventare la parte predominante del progetto .TRAQ anche se in effetti quanto ho scritto nel documento che ho reso pubblico ancora non è esaustivo. Mi sto focalizzando per il momento su aspetti che in parte esulano dall'obbiettivo del software, come ad esempio l'autenticazione/profilazione (Membership API?) e spero al più presto di approntare un ambiente nel quale chiunque possa accedere per prendere visione dei progressi.

powered by IMHO


Chi ha provato a scrivere un'applicazione ASP.NET 1.0 globalizzata, ovvero che preleva le risorse testuali per il rendering della pagina da degli appositi file, si sarà reso conto che la questione è tuttaltro che semplice e lineare.

Ho appena scoperto che ASP.NET 2.0 introduce una nuova sintassi nei codeblock che risolve questo genere di problema piuttosto elegantemente.

<asp:Literal Runat="server"
  
Text="<%$ Resources:MyResources, MyText %>"/>

Questa riga è in grado di leggere una stringa dalle risorse ed assegnarla ad un Literal.

L'espressione <%$...%> supporta anche altre "keywords" oltre a resources: ConnectionStrings legge una stringa di connessione dalla configurazione, AppSettings legge una chiave dall'omonima sezione del web.config infine Version legge una parte del numero di versione dell'applicazione.

powered by IMHO 1.2


Le WebParts che faranno parte della prossima versione di ASP.NET 2.0, offrono l'occasione di implementare un framework di connessione cross-page che consenta a delle WebParts Consumer, di condividere informazioni provenienti da un Producer. L'articolo che segnalo è una lettura interessante in merito, con tanto di codice di esempio.

Fonte: WebParts and Cross-Page Connections

Interessante notare che in fondo alla pagina di queso post si può vedere implementato un eccellente metodo anti-spam che fa uso delle HIP.

powered by IMHO