by Andrea
30 July 2007 22:07
Ho visto questo video nel post
Semplicemente geniale… di
Matteo Flora e l'ho trovato veramente stupendo.
Guardatelo e poi ditemi se
questa non
è comunicazione ;)
Technorati tags: YouTube, communication, wind power
ea20c2c0-7c33-429e-9d0a-403dfcd253d3|0|.0
Tags:
Internet
by Andrea
25 July 2007 19:07
Alcuni di voi non se ne saranno accorti, ma a questo link “How Do I?” with ASP.NET AJAX sono disponibili (già da parecchio tempo) una serie di video che introducono e approfondiscono l'uso di ASP.NET AJAX e di alcuni dei controlli contenuti in AJAX Control Toolkit.
Credo che l'idea di questi video (e quindi di questo tipo di risorse) sia davvero ottima perché fa capire quanto semplice sia l’utilizzo di questi controlli, e permettono di guidare passo passo lo sviluppatore con semplici esempi.
E quindi thanks to Joe Stagner per questi video
Technorati tags:
ASP.NET AJAX,
video
2cd02613-2fca-4a31-8470-18f2f4bd75b1|0|.0
Tags:
ASP.NET AJAX
by Andrea
24 July 2007 23:07
Da qualche giorno stò provando un add-on per IE7 davvero interessante e ben fatto che proprio non conoscevo.
Si tratta di IE7Pro (http://www.ie7pro.com/), un add-on che aggiunge svariate funzionalità ad Internet Explorer (a di alcune se ne sentiva proprio la mancanza):
- Tabbed Browsing Management
- Spell Check
- Inline Search
- Super Drag Drop
- Crash Recovery
- Proxy Switcher
- Mouse Gesture
- Tab History Browser
- Web Accelerator
- User Agent Switcher
- Webpage Capturer
- AD Blocker
- Flash Block
- ...
e molte altre ancora.
Vi assicuro che di alcune di queste funzionalità (Mouse Gesture, Super Drag Drop...), una volta presa confidenza, non ne farete più a meno. 
Technorati tags:
IE7Pro,
IE7,
add-on
by Andrea
24 July 2007 21:07
Una delle novità introdotte con ASP.NET AJAX è la possibilità di interagire con estrema facilità con le Profile API di ASP.NET permettendoci di leggere e salvare dalle proprietà del profilo dell'utente corrente.
La possibilità di leggere e scrivere dal profilo è una funzionalità che di default è disabilitata. Per abilitarla dobbiamo modificare il web.config settando a true l'attributo enable dell'elemento profileService.
<system.web.extensions>
<scripting>
<webServices>
<profileService enabled="true" />
</webServices>
</scripting>
</system.web.extensions>
Inoltre si dovranno speficare le proprietà che vorremmo leggere e/o scrivere nel profilo specificandole negli attributi readAccessProperties per quelle in letture e in writeAccessProperties per quelle in scrittura.
<profileService enabled="true"
readAccessProperties="Nome,Cognome"
writeAccessProperties=" Nome,Cognome"/>
Nella sezione profile, infine, dovremmo specificare il tipo e il defaultValue di queste proprietà.
<profile enabled="true">
<properties>
<add name="Nome"
type="System.String"
defaultValue="Nome"/>
<add name="Cognome"
type="System.String"
defaultValue="Cognome"/>
</properties>
</profile>
Dopo aver eseguito questi semplici passi sarà possibile utilizzare le proprietà specificate in configurazione direttamente negli script lato client utilizzando le funzioni dateci da ASP.NET AJAX presenti in Sys.Services.ProfileService.
Per salvare i dati nelle proprietà dal profilo:
function editProfile()
{ // Scrivo i dati nelle propretà del profilo
Sys.Services.ProfileService.properties.Nome = 'Andrea';
Sys.Services.ProfileService.properties.Cognome = 'Dottor';
// Salvo i dati nel profilo
Sys.Services.ProfileService.save(null, OnSaveCompleted, OnProfileFailed, null);
}
// Funzione che verrà richiamato in caso di salvataggio riuscito del profilo
function OnSaveCompleted(numProperties, userContext, methodName)
{...
}
// Funzione chiamata in caso di errore nel salvataggio del profilo
function OnProfileFailed(error_object, userContext, methodName)
{...
}
Per leggere dalle proprietà del profilo:
function LoadProfile()
{ // Chiamo il caricamento del profilo
Sys.Services.ProfileService.load(null, OnLoadCompleted, OnProfileFailed, null);
}
// Funzione che verrà richiamato in caso di caricamento riuscito del profilo
function OnLoadCompleted(numProperties, userContext, methodName)
{ var _nome = Sys.Services.ProfileService.properties.Nome;
var _cognome = Sys.Services.ProfileService.properties.Cognome;
...
}
// Funzione chiamata in caso di errore nel salvataggio del profilo
function OnProfileFailed(error_object, userContext, methodName)
{...
}
Come si nota, con poche e semplice righe possiamo interagire con le Profile API di ASP.NET direttamente dagli script lato client, potendo così arricchire la UI di una nuova interazione con l'utente, ed il tutto con una facilità estrema.
Potete trovare un tutorial sull'uso del Profile direttamente a questo link: http://ajax.asp.net/docs/tutorials/UsingProfileInformationTutorial.aspx
Technorati tags:
ASP.NET AJAX,
Profile
56474b5e-5a49-413d-8508-29b8e415254e|0|.0
Tags:
ASP.NET AJAX
by Andrea
18 July 2007 23:07
A questo indirizzo Community Meeting: ASP.NET AJAX 1.0 trovate disponibili per il download se slide e il codice di esempio utilizzate nel meeting che ho tenuto con Davide Vernole su ASP.NET AJAX.
Per quanto riguarda il codice vi consiglio di utilizzare il database SQL che trovate all'interno dello zip prima di lanciare lo starter kit. Questo perchè lo starter kit, se non trova il db, vi chiede di creare quello di default (che comunque funziona), ma usando quello nello zip, e modificando adeguatamente la ConnectionString nel web.config vi troverete con caricati gli stessi prodotti, immagini e testi visti negli esempi. :D
Per i link comunicati/visti durante il meeting vi rimando a questo post.
Per eventuali domande, non dovete fare altro che scrivere ;)
by Andrea
10 July 2007 15:07
E' proprio vero, non si finisce mai di imparare!!
Avevo un label e successivamente un tag BR (per il ritorno a capo), e nella label, in un determinato tema, è applicato uno style "display:none". Questo però causava il problema di avere graficamente una riga vuota.
Mi sono detto, ma se provo ad applicare il "display: none" anche al BR? Ebbene, a mia sorpresa, funziona e quindi non viene visualizzato evitando così quel ritorno a capo in più. :D
Questa proprio non l'evrei mai pensata...
Quindi, se volete nascondere un tag BR usate tranquillamente gli stili!
+1 per i CSS ;)
Technorati tags:
ASP.NET,
BR,
CSS
by Andrea
06 July 2007 11:07
Da un post fatto nei newsgroup sono venuto a conoscenza di uno strano comportamento che affligge i TabPanel del controllo Tabs degli AJAX Control Toolkit e ho trovato un semplice workaround.
![CropperCapture[5]](http://images.dottor.net/AjaxControlToolkitTabsestranocomportamen_A4DF/CropperCapture5.jpg)
Infatti, se dovete nascondere un tab, viene spontaneo usare la proprietà Visible del TabPanel da nascondere ( e direi che la cosa, a mio avviso, sarebbe una cosa ovvia) ma non è così.
Impostando a false la proprietà Visible del primo TabPanel (per esempio), il tab viene correttamente nascosto, ma rimane visibile il testo contenuto nel HeaderText.
TabPippo.Visible = false;
![CropperCapture[6]](http://images.dottor.net/AjaxControlToolkitTabsestranocomportamen_A4DF/CropperCapture6.jpg)
Per risolvere questo inconveniente, al posto di utilizzare la proprietà Visible usate la proprietà Enabled, che farà nascondere completamente il tab in questione.
TabPippo.Enabled = false;
Il perchè di questi comportamenti non me lo spiego... Quello che mi sarei aspettato invece è che la proprietà Visible, se impostata a False, nascondesse completamente il tab, mentre l'Enabled a True che mi disabilitasse il click in modo da non poter abilitare quel TabPanel (e il tab dovrebbe rimanere visibile), ma forse sarebbero stati dei comportamenti troppo normali.
...ma l'importante è conoscerli ed eventualmente trovare dei workaround come questo (in tempi brevi).... ;)
by Andrea
06 July 2007 08:07
A volte ci si mette subito a scrivere codice per creare un HttpModule o chissà cosa in modo da eseguire un redirect 301, e spesso ci dimentichiamo che se vogliamo redirigere tutto un dominio su di un'altro è sufficiente modificare/settare un'impostazione su IIS.
Per fare ciò si deve selezionare la voce Reindirizzamento a un URL nel tab Directory virtuale, impostare l'URL del reindirizzamento e selezionare il flag Reindirizzamento permanente per la risorsa.
Facile, no?

Technorati tags:
Redirect 301,
IIS
by Andrea
04 July 2007 12:07
In un progettino che stò sviluppando avevo la necessità di fare l'upload e scompattare un archivio zip. Per fare ciò mi sono appoggiato alla liberia #ziplib che si è dimostrata di una facilità estrema, infatti con poche righe di codice sono riuscito nel mio intento:
/// <summary>
/// Unzip the zip file.
/// </summary>
/// <param name="fileZipPath">The path of file zip.</param>
private void UnZipFile(string fileZipPath)
{ using (ZipInputStream s = new ZipInputStream(File.OpenRead(fileZipPath)))
{ ZipEntry entry;
while ((entry = s.GetNextEntry()) != null)
{ // Prelevo solo il nome del file all'interno dello zip
string fileName = Path.GetFileName(entry.Name);
// Combino il path su disco con quello che il file ha all'interno del file zip
string filePath = Path.Combine(Path.GetDirectoryName(fileZipPath), entry.Name);
// Se la directory non esiste la creo
if (!Directory.Exists(Path.GetDirectoryName(filePath)))
Directory.CreateDirectory(filePath);
if (fileName != String.Empty)
using (FileStream streamWriter = File.Create(filePath))
{ int size = 2048;
byte[] data = new byte[2048];
while (true)
{ size = s.Read(data, 0, data.Length);
if (size > 0)
{ streamWriter.Write(data, 0, size);
}
else
{ break;
}
}
}
}
}
}
Credo (appena avrò tempo) di approfondire un pò meglio questa libreria perchè mi sembra proprio fatta bene.
Ecco il link alla pagina di downlad.
Technorati tags:
#ziplib,
Zip,
UnZip
037b17a4-c041-45ee-b2b5-0575363f1f30|0|.0
Tags:
.NET