Archive for Febbraio, 2008

Mozilla Thunderbird 2.0.0.12

Logo di Thunderbird

Recentemente gli sviluppatori della Mozilla Foundation hanno rilasciato una nuova versione del loro buon programma di gestione della posta elettronica: hanno pubblicato Thunderbird 2.0.0.12! Il salto è stato dal “9″ al “12″ nell’ultima cifra del numero di versione, ma questo dipende dal fatto che i programmatori l’hanno fatto coincidere con quello dell’ultima release di Firefox.

La nuova versione corregge alcune importanti falle di sicurezza, più certi bug che causavano spiacevoli crash. Per ulteriori dettagli sulle modifiche apportate, vedi il changelog.

Cosa si può dire a fronte di questa notizia? Be’, se non avete mai usato un client di posta elettronica ma la gestite solo tramite il browser, forse potrebbe essere la volta buona per provare qualcosa di nuovo. Che ne dite? ;-)

Dj stupisce la folla con Star Wars

Un bel po’ di tempo fa pubblicai un articolo relativo ad un video che mostrava Darth Vader all’opera in qualità di direttore d’orchestra. Stasera ho pensato di portare alla vostra attenzione un altro video legato a Star Wars, ma questa volta non viene rappresentato alcun personaggio di quel brand. Tale filmato, riportato qui di seguito, mostra un abile dj che ha pensato bene di “citare” la nota serie cinematografica attraverso un mixaggio, per fare colpo sul suo pubblico. Eccolo qui:

Che ve ne pare? Non è spettacolare? Indipendentemente dai nostri gusti musicali, bisogna ammettere che questo dj ha avuto un’idea simpatica… :-D

I delegati e l’EventHandler

Un'aurora meravigliosa del Golfo Persico

Foto di Hamed Saber.

Oggi al lavoro ho avuto bisogno di lavorare con i delegati in ambiente ASP.NET. Stavo creando uno user control che era composto principalmente da alcuni controlli HTML anchor, adattati ad operare come controlli lato server. Il componente che stavo preparando avrebbe dovuto, una volta completato, costituire una sorta di bottone web, con alcune funzionalità aggiuntive rispetto a quelli standard.

Ma, sostanzialmente, cosa ci si aspetta da un pulsante? Come minimo dev’essere possibile gestire l’evento click attraverso una procedura (o Sub, se vogliamo restare nel contesto VB)! Qui si presenta il problema maggiore: come si fa a gestire il click su alcuni tag anchor (i classici “a href”, per capirci) con del codice VB “personalizzato”? Mi spiego meglio: se questo user control dovesse essere usato in n pagine diverse e più volte in una singola pagina, dovrebbe disporre di funzioni di gestione dell’evento click specifiche di ogni singola istanza.

Ora, come fa uno sviluppatore ad implementare tale oggetto custom in modo che riceva le funzioni di gestione dei click? Naturalmente con i delegati. Qui ho fatto un piccolo errore concettuale e ve ne parlo affinché non lo ripetiate pure voi: ho dichiarato un delegato con una firma simile alla seguente:

Public Delegate Sub dlClick(ByVal sender as Object, ByVal e as EventArgs)

Una volta fatto ciò, l’ho prontamente adoperato, scoprendo che l’istruzione AddHandler (la quale mi serviva per gestire gli eventi click) mi dava un’errore apparentemente strano: mi diceva che il delegato che stavo fornendo come secondo parametro non era corretto. La firma eppure è identica! Qual è la soluzione? È molto semplice:

Public Event dlClick

La riga scritta qui sopra è (quasi) equivalente al delegato mostrato prima, con la differenza che non dà errori di compilazione. In pratica, l’errore consiste nel fatto che, se si cerca di dichiarare un delegato con la stessa firma di un evento, il compilatore non capisce che sono “identici”, si crea un tipo a parte e perciò non lo accetta nelle chiamate AddHandler.

Mixaloo presenta Mix Search e altre novità

Mixaloo logo

In questi giorni coloro che sono registrati su Mixaloo hanno ricevuto una email che fa conoscere alcuni rilevanti aggiornamenti. Per essere più precisi, ora è possibile esplorare i vari mixes e ricercarli in base al nome dell’artista, alla descrizione o al titolo dell’album, per esempio. Questa nuova feature è detta Mix Search.

Una nuova caratteristica, tra l’altro di stampo prettamente “sociale” e da web 2.0, è la possibilità di scrivere i propri commenti ai vari mixes, in modo da esprimere il nostro punto di vista sulle abilità dell’autore. Questo permette a chi sta cercando una buona compilation da acquistare di avere più indizi, diciamo.

Per finire, quando visualizziamo la pagina di dettaglio di un mix specifico, adesso possiamo esaminare il box laterale, dotato di due schede piuttosto comode: una è quella dei “similar mixes” (ossia dei mix simili) e l’altra è nominata “more from this user”, la quale elenca ulteriori produzioni della stessa persona.

A questo punto, come da tradizione, vi chiedo: qual è il vostro parere su questi aggiornamenti? Sono una cosa positiva o no? Vi piacciono?

Introduzione alle Master Pages di ASP.NET 3.5

Codice morse con le gocce d'acqua

Foto di tanakawho.

Le Master pages, fornite da ASP.NET, sono un’ottima funzionalità per costruire un sito web dotato di elementi comuni, specialmente quelli grafici (header, footer ed eventualmente altre cose): offrono la possibilità di definire la struttura generale di un insieme di pagine. Tutte le pagine ASP.NET che avranno l’attributo MasterPageFile valorizzato in modo tale da ereditare dalla master page avranno un aspetto uniforme. Le master pages hanno la capacità di gestire dei cosiddetti content placeholders, che costituiscono le parti variabili delle pagine.

Questo cosa significa, in parole povere? Penso che questo argomento si capisca molto meglio descrivendo un caso realistico: ammettiamo di dover fare 5 pagine con un banner superiore, uno inferiore e la parte centrale deve avere dei contenuti che sono specifici delle singole pagine. Hanno molti elementi in comune, perciò si può creare una master page che definisca il codice di markup condiviso da tutte e 5. Il markup della pagina 3, per esempio, conterrà sostanzialmente degli oggetti asp:Content (corrispondenti ai vari asp:ContentPlaceHolder dichiarati e definiti nella master page) con i controlli - server o HTML - che interessano esclusivamente alla pagina 3. Non avremo più parti sostanziose di XHTML replicate n volte nel nostro sito. Questo rappresenta un grande vantaggio, anche in termini di flessibilità e velocità di sviluppo.

Qui di seguito vi mostro un esempio minimale che illustra in modo abbastanza intuitivo l’argomento appena trattato:

Master Page:

<%@ Master Language=”VB” AutoEventWireup=”false” CodeBehind=”MyMaster.master.vb” Inherits=”WebApplication1.MyMaster” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>Untitled Page</title>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>
<asp:ContentPlaceHolder ID=”ContentPlaceHolder1″ runat=”server”>
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

Default.aspx:

<%@ Page Language=”vb” AutoEventWireup=”false” MasterPageFile=”~/MyMaster.Master” CodeBehind=”Default.aspx.vb” Inherits=”WebApplication1._Default” %>

<asp:Content ID=”coreDefault” ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”server”>
Contenuto.
</asp:Content>

Il codice riportato qui sopra è stato testato su VS.NET 2008 e (ovviamente) con il Framework.NET 3.5, anche se dovrebbe andare bene anche sulla versione 2.0.