Sunday, December 30, 2007

Pointui: interfaccia iPhone style

. Sunday, December 30, 2007
0 commenti

logo_pointui Pointui è una nuova interfaccia style iPhone per palmari che "montano" Windows Mobile.
Attualmente sono stati rilasciati degli screenshot della versione beta assieme ad un interessante video:

Fonte: blog Jason Langridge's

Read More »»

Saturday, December 29, 2007

Sql Server Tools

. Saturday, December 29, 2007
0 commenti

Una lista di vari tools sia free che commerciali, documentazione e tanto altro per Sql Server divisi per categoria sul blog di Mladen Prajdić:

  • SQL Server Management Studio Add-in's
  • Administration
  • Best practices, analysis, health and performance
  • Database Publishing to hosted servers
  • Upgrade and Migration
  • SQL Server Analysis Services
  • SQL Server Integration Services
  • SQL Server 2005 BI Development Studio (BIDS)
  • Samples
  • Non MS stuff
  • SQL and other code Formatting

Read More »»

Monday, December 24, 2007

ListItemCollection e gli Attributes

. Monday, December 24, 2007
0 commenti

I controlli in ASP.NET come per esempio DropDownList, RadioButtonList, ListBox e CheckBoxList ereditano da System.Web.UI.WebControls.ListControl, quindi espongono il contenuto attraverso una collection Items.
In generale se si vuole modificare lo stile dei vari item si fa uso della collection Attributes, peccato che in ASP.NET 1.1 tali attributi non vengano renderizzati, si tratta di un bug.
Ovviamente in ASP.NET 2.0 tale problema non si "manifesta" (è fondamentale sottolineare come sia necessario eseguire l'add ad ogni postback, questo perchè sia in Asp.Net 1.x che in 2.0 la collezione degli attributes dei ListItem contenuti nel controllo non vengono salvati nel ViewState), infatti se per esempio vogliamo modificare l'attributo background dei singoli elementi che compongono il controllo RadioButtonList(rbList) basta valorizzare la chiave style nel seguente modo:

   1: rbList.Items[0].Attributes.Add("style", "background-color:red");
   2: rbList.Items[1].Attributes.Add("style", "background-color:DeepPink");


Se vogliamo ottenere lo stesso risultato anche in ASP.NET 1.1?
Nel caso specifico una possibile soluzione è quella di creare il proprio controllo ereditando da RadioButtonList ed effetturare l'override del metodo Render:


   1: public class RadioButtonListPlus : RadioButtonList
   2: {
   3:   protected override void Render(HtmlTextWriter writer)
   4:   {
   5:     ListItemCollection items = this.Items;
   6:     if (items.Count > 0)
   7:     {
   8:       for (int i=0; i<items.Count; i++)
   9:       {
  10:         ListItem item = items[i];
  11:         //Creazione del tag span
  12:         writer.WriteBeginTag("span");
  13:         AttributeCollection attrs = item.Attributes;
  14:         foreach (string key in attrs.Keys)
  15:           //Add dello stile
  16:           writer.WriteAttribute( key, attrs[key]);
  17:         writer.Write( ">");
  18:         //Creazione del controllo radio
  19:         writer.WriteBeginTag("input");
  20:         writer.WriteAttribute( "id", this.ClientID + "_" + i.ToString());
  21:         writer.WriteAttribute("type", "radio");
  22:         writer.WriteAttribute("name", this.UniqueID);
  23:         writer.WriteAttribute("value", item.Value);
  24:         if( item.Selected)
  25:           writer.WriteAttribute("checked", "checked");
  26:         if( this.AutoPostBack)
  27:         {
  28:           RadioButton rb = new RadioButton();
  29:           rb.ID = this.ClientID + "_" + i.ToString();
  30:           writer.WriteAttribute( "onclick", Page.GetPostBackClientEvent( rb, string.Empty));
  31:         }
  32:         writer.Write( ">");
  33:         //Creazione del controllo label contenente il testo da visualizzare accanto al RadioButton
  34:         if( item.Text.Length > 0)
  35:         {
  36:           writer.Write( "<label");
  37:           writer.WriteAttribute( "for", this.ClientID + "_" + i.ToString());
  38:           writer.Write( ">");
  39:           writer.Write( item.Text);
  40:           writer.WriteEndTag( "label");
  41:         }
  42:         writer.WriteEndTag("input");
  43:         writer.WriteEndTag("span");
  44:       }
  45:     }
  46:   }
  47: }


In sostanza nel metodo Render vado a creare e manipolare l'HTML del controllo RadioButtonList, in modo da aggiungere un tag span, che fa da contenitore al controllo RadioButton e al controllo Label.
Infine nella nostra pagina aspx è necessario registrare il nuovo controllo:


   1: <%@ Register TagPrefix="cc1" Namespace="namespace" Assembly="assembly" %>

ed inserirlo nel form:


   1: <cc1:RadioButtonListPlus runat="server" id="rbListPlus">
   2:   <asp:ListItem Value="1" Selected="True">test1</asp:ListItem>
   3:   <asp:ListItem Value="2">test2</asp:ListItem>
   4: </cc1:RadioButtonListPlus>

Per chi è interessato trova un'ulteriore soluzione in questo interessante articolo in lingua inglese.

Read More »»

Thursday, December 20, 2007

Tafiti: codice sorgente

. Thursday, December 20, 2007
0 commenti

FirstUX_logo Dal blog si Giuseppe Guerrasio apprendo che è stato rilasciato sul sito delle Windows Live Quick Apps il codice sorgente di Tafiti, un'applicazione che mostra le potenzialità di Silverlight e di Windows Live Search.

Read More »»

Tuesday, December 18, 2007

Debug o Release?

. Tuesday, December 18, 2007
0 commenti

Tramite la reflection è possibile conoscere se un determinato assembly è stato compilato in modalità debug o release, andando a spulciare nella lista degli attributi:

   1: Private Function VerifyDebug() As Boolean
   2:   Dim assembly As Assembly = Reflection.Assembly.LoadFile("path assembly")
   3:   Dim attributes() As Object = assembly.GetCustomAttributes(True)
   4:   If Not (attributes Is Nothing) AndAlso (attributes.Length > 0) Then
   5:     For i As Integer = 0 To attributes.Length - 1
   6:       If (attributes(i).GetType() Is GetType(System.Diagnostics.DebuggableAttribute)) Then
   7:         Return True
   8:       End If
   9:     Next
  10:   End If
  11:   Return False
  12: End Function

Con il ciclo sugli attributi vado a verificare se è presente l'attributo DebuggableAttribute, attributo non presente se l'assembly è stato generato in modalità release.

Read More »»

Saturday, December 15, 2007

MasterPage e Url

. Saturday, December 15, 2007
0 commenti

In determinati scenari ci si può imbattare in un "particolare problema" che interessa le masterpage e gli url relativi.
In pratica se la masterpage e la pagina dei contenuti(aspx) si trovano nella stessa folder un codice come il seguente:

   1: <IMG SRC="../test/images/in1.JPG" />
funziona perfettamente.
Ma supponiamo di avere una struttura di cartelle simile a quella indicata nell'immagine qui in basso:
masterpage1 in cui la pagina dei contenuti si trova in una folder diversa da quella della masterpage, in tal caso l'immagine non viene visualizzata.
Questo perchè il browser cerca l'immagine in un cartella superiore:
http://localhost:1146/WebTestPort/folderTest/test/images/in1.JPG
Per evitare ciò si può procedere in diversi modi, il più semplice è quello di indicare un url assoluto alla risorsa:


   1: <IMG SRC="http://localhost:1146/WebTestPort/test/images/in1.JPG" />
Oppure si può sostituire il controllo HTML image con un controllo server-side:


   1: <asp:Image ID="img" runat="server" ImageUrl="../test/images/in1.JPG" />
In quest'ultimo caso interviene ASP.NET a risolvere il tutto, "rimappando" a runtime(URL rebasing).
Altro modo per risolvere il problema è l'uso di un nuovo metodo messo a disposizione dal Framework 2.0: ResolveClientUrl per restituire un url idoneo, utile al client per accedere alle risorse del server web(immagini, link ad altre pagine):


   1: <IMG src="<%= ResolveClientUrl("../test/images/in1.JPG")%>" />

Read More »»

Wednesday, December 12, 2007

I-Load per l'upload di immagini

. Wednesday, December 12, 2007
0 commenti

Dal nuovo blog/sito di Alberto Falossi son venuto a conoscenza di un ottimo controllo ASP.NET (non free) per la gestione delle immagini e dell'upload.
Il controllo I-Load della RadActive compatibile sia con la versione 1.1 che con la 2.0 del framework permette di caricare, ritagliare, ridimensionare le immagini, con funzionalità di zoom, anteprima ecc.
E' possibile fare qualche esperimento direttamente online.

Read More »»

Monday, December 10, 2007

ASPhere per i web.config

. Monday, December 10, 2007
0 commenti

ASPhere ASPhere è un tool che permette di creare e modificare i files web.config.
Rispetto all'ambiente Visual Studio, in ASPhere è possibile eseguire le modifiche o la creazione del file di configurazione sia nella classica modalità testuale ma anche in modo visuale rendendo tutto molto più semplice ed intuitivo.

Read More »»

ASP.NET 3.5: preview extensions

.
0 commenti

E' possibile scaricare una preview delle extensions per ASP.NET 3.5 che comprende:

  • Silverlight Controls for ASP.NET
  • ADO.NET Entity Framework
  • ASP.NET MVC
  • ASP.NET Dynamic Data
  • ASP.NET AJAX
  • ADO.NET Data Services

Per quanto riguarda il quickstart lo trovate qui.

Read More »»

Saturday, December 8, 2007

TIFF Multipage

. Saturday, December 8, 2007
0 commenti

Tramite alcuni metodi della classe System.Drawing.Image è possibile estrapolare/salvare le immagini contenute in un TIFF, tale formato infatti, può essre costituito da più immagini divise su più pagine.
In Vb.Net:

   1: Private Sub SaveTIFFMultipage(ByVal imageType As String, ByVal pathImageTIFF As String)
   2:   Dim file As FileInfo = New FileInfo(pathImageTIFF)
   3:   If (file.Exists) Then
   4:     Using img As System.Drawing.Image = System.Drawing.Image.FromFile(pathImageTIFF)
   5:       'Recupero il numero di pagine che costituiscono il TIFF
   6:       Dim countPages As Integer = img.GetFrameCount( _
   7:       New System.Drawing.Imaging.FrameDimension(img.FrameDimensionsList(0)))
   8:       For i As Integer = 0 To countPages - 1
   9:         img.SelectActiveFrame(New System.Drawing.Imaging.FrameDimension( _
  10:         img.FrameDimensionsList(0)), i)
  11:         Dim imageThumb As System.Drawing.Image = img.GetThumbnailImage( _
  12:         300, 300, Nothing, Nothing)
  13:         'Salvo le immagini
  14:         imageThumb.Save(String.Format("c:\{0}.{1}", _
  15:         file.Name.Replace(file.Extension, String.Empty) + i.ToString(), imageType))
  16:       Next
  17:     End Using
  18:   End If
  19: End Sub
In C#:

private void SaveTIFFMultipage(string imageType, string pathImageTIFF)
{
FileInfo file = new FileInfo( pathImageTIFF);
if( file.Exists)
{
using( System.Drawing.Image img = System.Drawing.Image.FromFile(pathImageTIFF))
{
//Recupero il numero di pagine che costituiscono il TIFF
int countPages = img.GetFrameCount(
new System.Drawing.Imaging.FrameDimension( img.FrameDimensionsList[0]));
for( int i=0; i<countPages; i++)
{
img.SelectActiveFrame(new System.Drawing.Imaging.FrameDimension(
img.FrameDimensionsList[0]), i);
System.Drawing.Image imageThumb = img.GetThumbnailImage( 300, 300, null, IntPtr.Zero);
imageThumb.Save(string.Format(@"c:\prova\{0}.{1}", file.Name.Replace(file.Extension, string.Empty) +
i.ToString(), imageType));
}
}
}
}


I due metodi fondamentali usati allo scopo di "estrapolare" le varie immagini contenute nel TIFF sono senza ombra di dubbio GetFrameCount e SelectActiveFrame.
Tramite il primo metodo GetFrameCount sappiamo il numeto totale di frame presenti nell'immagine, mentre il metodo SelectActiveFrame seleziona e rende attivo un determinato frame all’interno dell’immagine.
Nel caso specifico utilizzo anche GetThumbnailImage per ottenere  la miniatura(300X 300) dell'immagine da salvare su disco per poi visualizzarle tramite il controllo Repeater:


<asp:Repeater ID="repImage" runat="server">
<ItemTemplate>
<asp:Image ID="img" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem, "src")%>'/>
</ItemTemplate>
</asp:Repeater>
 

Read More »»

Wednesday, December 5, 2007

Volta technology

. Wednesday, December 5, 2007
0 commenti

logo-volta Oggi è stata presentata la tecnologia Volta che dovrebbe aiutare lo sviluppatore nella costruzione di applicazioni web multi-tier usando Visual Studio 2008 e il .Net Framework 3.5.

Read More »»

Monday, December 3, 2007

TouchPal

. Monday, December 3, 2007
0 commenti

TouchPal è un software creato dalla CooTek e permette di aver sul proprio dispositivo mobile una tastiera virtuale "simile" a quella dell'iPhone.
Tra i prerequisiti Windows Mobile 5.0/6.0 e solo per i dispositivi dotati di touch screen QVGA (320X240) o VGA (640X480).
Fino all'8 Dicembre è possibile scaricarlo gratis.

Read More »»

Friday, November 30, 2007

Silverlight 1.1 Tools Alpha per VS 2008

. Friday, November 30, 2007
0 commenti

Notizia di qualche giorno fa, è possibile scaricare da questo indirizzo l'estensioni per lo sviluppo Silverlight 1.1 con Visual Studio 2008 versione finale.

Read More »»

Tuesday, November 27, 2007

Debug CSS e DOM

. Tuesday, November 27, 2007
0 commenti

v5b1 Il francese Jean-Fabrice Rabaute ha realizzato DebugBar, un plugin per il browser Internet Explorer che consente di effettuare debug del DOM.
Se vogliamo fare paragoni è simile a Firebug (ottima estensione per Firefox).
Il tool è orientato soprattutto per il debug del DOM e dei CSS, e supporta dalla versione 5 alla 7 di IE.
Altro plugin interessante, creato dallo stesso autore è Companion.JS dedicato invece per il debugger di javascript.

Read More »»

Sunday, November 25, 2007

Grafici flash in Asp.Net 2.0

. Sunday, November 25, 2007
16 commenti

Se si vogliono inserire nelle proprie pagine asp.net grafici flash, esistono diverse library free e non. Fra le tante segnalo:

  • FusionCharts Free: può essere usata con diversi linguaggi, non solo con Asp.Net, ma anche ASP, PHP, JSP, Ruby on Rails, con la possibilità di generare grafici a barre, linee, torta, aree.
  • amCharts: 4 tipi di grafici: torta, linee & area, barre, bolle. Costo della licenza: da 85 a 275 euro.
  • Open Flash Chart: 35 tipi differenti, con una serie di effetti di mouse-over applicati sul grafico flash. Il progetto è rilasciato in GNU General Public License.

Ho fatto qualche esperimento usando proprio Open Flash Chart.
Per implementare il tutto basta:

  1. Scaricare la library.
  2. Compilare il progetto contenuto nella cartella dot-net-ofc-library.
  3. Referenziare la OpenFlashChart.dll generata con il passo 2.
  4. Nella vostra applicazione web creare una cartella aspnet_client, con una sottodirectory OpenFlashChart, in cui bisogna copiare il file open-flash-chart.swf e la cartella js( si trovano al seguente path: dot-net-ofc-library\WebTest\aspnet_client\OpenFlashChart).

Adesso si può iniziare a scrivere un pò di codice.
Per usare OFC.NET bisogna registrare la library attraverso il comando:

<%@Register TagPrefix="ofc" Namespace="OpenFlashChart" Assembly="OpenFlashChart" %>

e creare il controllo chart tramite il tag:



   1: <ofc:Chart Width="200" Height="200" Url="pageData.aspx" runat="Server" />

Il parametro più importante è senza ombra di dubbio Url che indica la risorsa dati per il grafico. Può essere sia un file html statico oppure generare il tutto dinamicamente tramite la library.
Nel caso specifico la pagina pageData.aspx contiene il codice per generare un chart a barre 3D:


   1: Dim graph As OpenFlashChart.Graph = New OpenFlashChart.Graph()
   2: graph.LegendX = New LegendX("Chart Test", 12, "#FF0000")
   3: graph.StepsY = 5
   4: graph.MaxY = 50
   5: Dim chart As OpenFlashChart.Charts.Bar3D = _
      New OpenFlashChart.Charts.Bar3D(10, "#001100", "Legend", 10)
   6: chart.Data.Add(20)
   7: chart.Data.Add(30)
   8: chart.Data.Add(40)
   9: chart.Data.Add(10)
  10: graph.Data.Add(chart)
  11: Response.Write(graph.ToString())
  12: Response.End()


Il codice è molto semplice, infatti tramite l'uso della library possiamo settare una serie di property per definire l'aspetto grafico del controllo chart, settare testo e formattazione di varie etichette, ecc.
Ora possiamo compilare ed osservare il risultato, ma qui son sorti i primi problemi.
Se visualizzo il tutto con Firefox, nessun problema ma se provo a lanciare la pagina aspx con il browser Internet Explorer 6 SP2(con la versione 7 non ho ancora avuto modo di fare un test a proposito) il grafico viene generato ma compare un errore javascript:
ofc1Ho pensato banalmente di aver dimenticato di settare la property ID del controllo chart.
Il risultato con mia grande sorpresa non cambia, ma peggiora Angry.
Sono così andato a spulciare il codice della library, in particolar modo la classe Chart.cs che contiene il metodo RenderContents attraverso il quale viene appunto renderizzato il controllo nella pagina aspx.
Dall'analisi del codice, si può notare che se si tratta di un SWFObject(di default è true) viene iniettato nella pagina uno script.
Perchè l'inserimento di questo script nella pagina?
Lo script SWFObject consente di rilevare il plugin flash, quindi ci consente di aggiungere contenuto flash con pochissime righe di codice, ma soprattutto evita sul browser Internet Explorer l'attivazione dei controlli ActiveX.
Proprio in questa porzione di codice ho fatto una "piccola modifica" cioè:


  1. l'id del div contenitore è dato da ClientID del controllo chart più il carattere "_" più il valore della property SequenceId
  2. l'id passato a new SWFObject è dato dal value della property ClientID( non ofc annegato nel codice).

In questo modo l'errore javascript non compare più e gira perfettamente anche su Internet Explorer:
ofc2

Read More »»

Saturday, November 24, 2007

Button della dialog box di File Download

. Saturday, November 24, 2007
0 commenti

Dalla versione 6 di Internet Explorer SP2 e successiva è possibile disattivare i button della dialog box di File Download:
FileDownload

Più precisamente è possibile non visualizzare il button Open o Save, inserendo un meta tag nell'head della pagina.
Nel caso del button Open:

   1: <head>
   2:     <META name="DownloadOptions" content="noopen">
   3:     <title>Pagina senza titolo</title>
   4: </head>

Nel caso del button Save:



   1: <head>
   2:     <META name="DownloadOptions" content="nosave">
   3:     <title>Pagina senza titolo</title>
   4: </head>

Read More »»

Thursday, November 22, 2007

VBMigration

. Thursday, November 22, 2007
2 commenti

vbmigration Pochi minuti fa son venuto a conoscenza che Francesco Balena ha aperto il sito/blog sul tool VB Migration Partner.
Di cosa si tratta?
Di un tool che permette di convertire applicazioni scritte in VB6 in applicazione VB.NET.
Per cercare di partecipare alla fase beta del programma non vi resta che leggere le FAQ.

Read More »»

Label verticali

.
0 commenti

Un mio collega mi ha mostrato una classe css che permette di posizionare il testo in verticale(non sapevo fosse possibile):

vertical1

   1: .labelVertical
   2: {
   3:     writing-mode:tb-rl;
   4: }

 


Se invece si desidera visualizzare il contenuto dell'oggetto ruotato lungo l'asse orizzontale:

vertical2



   1: .labelVertical
   2: {
   3:     writing-mode:tb-rl;
   4:     filter:flipv fliph;
   5: }



Tali attributi sono supportati solo su Internet Explorer(essendo frutto di casa Microsoft) almeno fino al rilascio del CSS 3.0.

Read More »»

Tuesday, November 20, 2007

Breakpoints condizionali

. Tuesday, November 20, 2007
0 commenti

In Visual Studio 2005 come nel 2008 è possibile inserire dei breakpoints condizionali:

break

  • F9 per inserire il breakpoint,
  • Tasto destro sul break,
  • Selezionare la voce Condizione,
  • A questo punto compare una dialog box in cui definire la condizione.

 


Nel caso di Visual Studio 2003 la procedura di inserimento è leggermente diversa:

break1

  • Tasto destro sulla riga di codice su cui è stato inserito il breakpoint,
  • Selezionare la voce Proprietà punto di interruzione,
  • Selezionare la voce Condizione.

 

 

Read More »»

Monday, November 19, 2007

Visual Studio 2008 RTM ed Express

. Monday, November 19, 2007
0 commenti

La notizia del giorno è ovviamente il lancio di Visual Studio 2008.
Per chi possiede un abbonamento ad MSDN può effettuare il download delle varie immagini ISO di Visual Studio 2008 Team Suite in lingua inglese, per tutti gli altri è possibile scaricare le versioni Express.
Oppure è sempre possibile la versione trial di Visual Studio 2008 Team Suite a 90 giorni.

Read More »»

Saturday, November 17, 2007

SpaceTime

. Saturday, November 17, 2007
0 commenti

SpacetimeSpacetime è un browser 3D molto particolare, nel senso che ogni pagina aperta viene trattata come un unico oggetto.
Interessante anche la modalità di ricerca su siti come ebay, Yahoo, Google, flickr, amazon e YouTube.
E' possibile farsi un'idea provandolo in versione beta oppure guardando i vari filmati sulla home.

Read More »»