Sunday, September 30, 2007

Spot .Net Micro Framework

. Sunday, September 30, 2007
0 commenti


...tecnologia che mi "stuzzica" veramente tanto :)

Read More »»

Debug JScript con VS 2003 e VS 2005

.
0 commenti

Per il debug di script javascript ho sempre fatto affidamento all'estensione di Firefox: FireBug, ma è possibile farlo anche con solo VS 2003 o VS 2005.
Dopo aver attivato l'opzione su Internet Explorer: Debugging degli script( Strumenti => Opzioni Internet => Avanzate => Esplorazione), ed aver lanciato in modalità debug l'applicazione Asp.Net dall'ambiente di sviluppo VS 2003:


si può attivare Script Explorer( Ctrl+Alt+N):

e quindi poter inserire breakpoints nella sezione script:

Read More »»

Friday, September 28, 2007

AutoFocus e Asp.Net

. Friday, September 28, 2007
0 commenti

In Asp.Net 2.0 tra le tante novità c'è la possibilità di settare il focus di un determinato controllo da codice:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SetFocus(btnFocus)
End Sub

Se si analizza  il markup della pagina renderizzata, si può notare una serie di blocchi script che vengono innietati da Asp.Net(WebTestPort è il nome della mia web folder):

<script src="/WebTestPort/WebResource.axd?d=JOzeK6_XXttVr6DVBJy-NA2&amp;t=633240927615853308" type="text/javascript"></script>

inoltre prima della chiusura del tag form viene aggiunto un altro script per richiamare la funzione WebForm_AutoFocus:

<script type="text/javascript">
<!--
WebForm_AutoFocus(
'btnFocus');// -->
</script>

All'interno del file WebResource.axd troviamo la funzione javascript WebForm_AutoFocus  che ci permette di settare il focus del controllo:

function WebForm_AutoFocus(focusId) {
var targetControl;
if (__nonMSDOMBrowser) {
targetControl
= document.getElementById(focusId);
}
else {
targetControl
= document.all[focusId];
}
var focused = targetControl;
if (targetControl && (!WebForm_CanFocus(targetControl)) ) {
focused
= WebForm_FindFirstFocusableChild(targetControl);
}
if (focused) {
try {
focused.focus();
if (__nonMSDOMBrowser) {
focused.scrollIntoView(
false);
}
if (window.__smartNav) {
window.__smartNav.ae
= focused.id;
}
}
catch (e) {
}
}
}

Volendo possiamo implementare qualcosa di simile anche in Asp.Net 1.1:

private void AutoFocus( Control control)
{
System.Text.StringBuilder sb
= new System.Text.StringBuilder();
sb.Append(
"<script language='javascript'>{var element=document.getElementById('");
sb.Append( control.ClientID);
sb.Append(
"');if( element != null)element.focus();}</script>");
Page.RegisterStartupScript(
"AutoFocus", sb.ToString());
}

Read More »»

Thursday, September 27, 2007

Tooltips: Fade In and Out con CoolTips

. Thursday, September 27, 2007
0 commenti

CoolTips è uno script Javascript che fa uso dei framework Prototype e Scriptaculous, permette di sostituire i tooltips convenzionali.
Inoltre è possibile cambiare facilmente il layout dei tooltips tramite la modifca dei parametri del css.

Read More »»

FedEx e Virtual Earth

.
0 commenti

Federal Express ha lanciato un nuovo servizio basato su Virtual Earth, per rintracciare la posizione dei vari drop box. 
Per maggiori dettagli: blog.

Read More »»

Tuesday, September 25, 2007

DB2: Debugging stored procedures

. Tuesday, September 25, 2007
0 commenti

Dopo il precedente post ho notato che è possibile tramite il wizard Aggiungi nuova procedura SQL con Designer attivare il debug su stored procedure:

Dopo aver attivato la modalità si può lanciare la stored procedure direttamente dal wizard:

Nel caso specifico accetta un parametro di tipo VarChar:

adesso si può procedere con F10 e Watch per controllare il contenuto di una determinata variabile:

Read More »»

Saturday, September 22, 2007

DB2.NET Provider. Primi Passi

. Saturday, September 22, 2007
0 commenti

Ultimamente sto lavorando su un'applicazione web la cui base dati è rappresentata da DB2 v.8.1 su mainframe e la comunicazione avviene attraverso uno strato creato ad hoc.
Ho voluto però eseguire qualche esperimento con il data provider messo a disposizione per i sistemi di database DB2.
La virtual machine su cui ho effetuato i miei test è composta:
1)Windows XP Professional con SP2,
2)Framework 2.0,
3)Visual Studio 2005,
4)DB2 Server v.9.1 e DB2 Client che presenta tutta una serie di tool visuali per poter interagire con tabelle, stored procedures, indici, trigger, ecc ed inoltre comprende l'add-in per VS 2005.
Una volta installato il tutto si può far partire il Centro di controllo:

ed attraverso il wizard apposito ho creato la tabella TableTestDB2:

Il codice per recuperare tutti i record presenti in questa tabella:

Imports System.Data
Imports IBM.Data.DB2
.....
Public Function GetAllDati() As DataTable
Dim dt As DataTable = New DataTable
Dim con As DB2Connection
Try
con
= New DB2Connection()
con.ConnectionString
= "Database=DBPROVA;UID=username;PWD=password"
Dim command As DB2Command = New DB2Command("SELECT * FROM DB2.TABLETESTDB2", con)
Dim db2Da As DB2DataAdapter = New DB2DataAdapter(command)
db2Da.Fill(dt)
Catch ex As Exception
Throw ex
Finally
If Not (con Is System.DBNull.Value) Then
con.Close()
End If
End Try
Return dt
End Function
E per quanto riguarda l'uso delle stored procedures?
Il data provider ci permette da Visual Studio 2005 di collegarci al server DB2:

una volta eseguita la connessione, sotto la voce Procedure possiamo utilizzare il wizard Aggiungi nuova procedura
SQL con Designer
per generare stored procedures:

Il codice per richiamare una stored procedure:
Public Function GetFilter(ByVal valueParameter As String) As DataTable
Dim dt As DataTable = New DataTable
Dim con As DB2Connection
Try
con
= New DB2Connection()
con.ConnectionString
= "Database=DBPROVA;UID=username;PWD=password"
Dim command As DB2Command = New DB2Command("DB2.PROCEDURATEST", con)
command.CommandType = CommandType.StoredProcedure
'Definizione del parametro
Dim parameterDB2 As DB2Parameter = New DB2Parameter
parameterDB2.ParameterName
= "DESCRIZIONEVALUE"
parameterDB2.DbType
= DbType.String
parameterDB2.Value
= valueParameter
command.Parameters.Add(parameterDB2)
Dim db2Da As DB2DataAdapter = New DB2DataAdapter(command)
db2Da.Fill(dt)
Catch ex As Exception
Throw ex
Finally
If Not (con Is System.DBNull.Value) Then
con.Close()
End If
End Try

Return dt
End Function

Il metodo GetFilter esegue la stored procedure DB2.PROCEDURATEST che prende in input il parametro DescrizioneValue per filtrare sul campo Descrizione della tabella TableTestDB2.

Read More »»

Thursday, September 20, 2007

SQL Server 2005 Express Profiler

. Thursday, September 20, 2007
3 commenti

Si tratta di un progetto open source è permette di superare una delle limitazioni di Microsoft SQL Server 2005 Express Edition cioè l'assenza del profiler.
SQL Server Express Edition Profiler presenta la maggior parte delle funzionalità del profiler standard come per esempio la possibilità di inserire filtri, ecc.

Read More »»

Monday, September 17, 2007

Secondo video italiano su Channel 9

. Monday, September 17, 2007
0 commenti

Secondo video in italiano su Channel 9.
Dopo Mauro Ottaviani è la volta di Alessandro Catorcini che parla di CLR:
"si va dal positioning di Silverlight all’hosting del common language runtime in applicazioni ad altissima affidabilita’ come SQL Server."

Read More »»

MSDN Magazine in formato flash

.
0 commenti

La società NXTbook Media ha creato una versione in flash della famosa rivista MSDN Magazine.

Read More »»

Sunday, September 16, 2007

Highslide JS

. Sunday, September 16, 2007
0 commenti

Highslide JS è un plugin scritto in Javascript che permette di ottenere un effetto d'ingradimento delle immagini caricate su di un sito, con la possibilità di inserire una descrizione.
Meglio dare uno sguardo agli esempi.

Read More »»

Saturday, September 15, 2007

YouTube.Net

. Saturday, September 15, 2007
0 commenti

YouTube.Net API è una libreria scritta in C# che permette di interfacciarsi in modo estramemente semplice con le YouTube's API.
Come prima cosa è necessario registrarsi al sito YouTube per ottenere un ID sviluppatore:

Per eseguire per esempio, una ricerca dei video indicando un preciso tag:

Private Sub TestVideo()
Dim dtVideos As DataTable = New DataTable()
Dim rowVideo As DataRow
dtVideos.Columns.Add(
"Title", GetType(String))
dtVideos.Columns.Add(
"Url", GetType(String))

Dim youTube As YouTubeDotNet.YouTube = New YouTubeDotNet.YouTube()
youTube.DeveloperID
= "ID Sviluppatore"
Dim videos() As YouTubeDotNet.Video = youTube.GetTaggedVideos("Asp.Net")
For Each video As YouTubeDotNet.Video In videos
rowVideo
= dtVideos.NewRow()
rowVideo(
"Title") = video.Title
rowVideo(
"Url") = video.ThumbnailUrl
dtVideos.Rows.Add(rowVideo)
Next

dgrVideos.DataSource
= dtVideos
dgrVideos.DataBind()
End Sub

Il risultato:

Sul sito sono presenti tutta una serie di esempi.

Read More »»

Friday, September 14, 2007

Export DataTable in Excel

. Friday, September 14, 2007
0 commenti

Un'altra funzione che spesso ci viene chiesta da un cliente è quella di esportare dati da un'applicazione web in formato excel.
Supponendo di avere questi dati in una DataTable:

Dim dt As DataTable = New DataTable
dt.Columns.Add(
"Id", GetType(Integer))
dt.Columns.Add(
"Descrizione", GetType(String))
dt.Columns.Add(
"Data", GetType(DateTime))
Dim row As DataRow

Dim i As Integer = 0
For i = 0 To 10
row
= dt.NewRow()
row(
"Id") = i
row(
"Descrizione") = "Descrizione: " + i.ToString()
row(
"Data") = DateTime.Now.AddDays(i)
dt.Rows.Add(row)
Next

l'esportazione in excel, generando un html text:

Response.AddHeader("content-disposition", "attachment;filename=TestExportInHtml.xls")
Response.Charset
= String.Empty
Response.ContentType
= "application/vnd.xls"
Dim stringWrite As System.IO.StringWriter = New System.IO.StringWriter
Dim htmlWrite As System.Web.UI.Html32TextWriter = New System.Web.UI.Html32TextWriter(stringWrite)
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder

sb.Append(
"<table border=""1"">")
For Each rowInsert As DataRow In dt.Rows
sb.Append(
"<tr>")
For Each colInsert As DataColumn In dt.Columns
sb.Append(
"<td>" + rowInsert(colInsert).ToString() + "</td>")
Next
sb.Append(
"</tr>")
Next
sb.Append(
"</table")
htmlWrite.Write(sb)
Response.Write(stringWrite.ToString())
Response.End()

oppure si può generare un file .csv:
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder

For Each rowInsert As DataRow In dt.Rows
For Each col As DataColumn In dt.Columns
sb.Append(rowInsert(col).ToString()
+ ";")
Next
sb.Append(vbCrLf)
Next

Response.ContentType
= "text/csv"
Response.AppendHeader(
"content-disposition", "attachment; filename=TestExportInCsv.csv")
Response.Write(sb.ToString())
Response.End()

Read More »»

Tuesday, September 11, 2007

RealLive Moms

. Tuesday, September 11, 2007
0 commenti

Microsoft ha creato un nuovo servizio web denominato RealLive Moms, nel quale le mamme hanno la possibilità di creare uno spazio personalizzato nel quale includere slide show, blogs ecc.
Il servizio è perfettamente integrato con tutti i tools di Windows Live, poter usare messenger per chattare, Live Search Maps per la ricerca di posti carini dove portare i propri pargoli, Windows Live Spaces con possibilità di condividere foto, video ecc.

Read More »»

Monday, September 10, 2007

CLR Profiler e Asp.Net

. Monday, September 10, 2007
0 commenti

Può capitare che quando si esegue un'analisi con il CLR Profiler, quest'ultimo non riesca a connettersi all'applicazione ASP.NET, in questo caso basta modificare(per la sola fase di profile) nel machine.config la chiave ProcessModel indicando come utente: SYSTEM:

<processModel enable="true" .... userName=SYSTEM" password="AutoGenerate" ... />

Read More »»

Sunday, September 9, 2007

Windows Live Translator

. Sunday, September 9, 2007
0 commenti

Windows Live Translator è un nuovo servizio di casa Microsoft( attualmente in beta) che permette di effettuare traduzioni di un testo di max 500 parole o di un'intera pagina web da inglese a italiano, tedesco, coreano cinese, giapponese russo ecc.

Read More »»

Saturday, September 8, 2007

Controlli Compositi in Asp.Net

. Saturday, September 8, 2007
0 commenti

Il .Net Framework ci permette di creare controlli compositi, quindi possiamo assemblare più controlli in un uno.
Metodo fondamentale è CreateChildControls ereditato dalla classe base Control la cui funzione è quella di generare il markup del controllo composito.
Inoltre è necessario implementare l'interfaccia INamingContainer(un'interfaccia indicatore) per garantire l'univocità dell'attributo ID dei controlli figli.
Supponiamo, quindi, di voler generare un controllo unico composto dai seguenti tre controlli: Label, TextboxCalendar ed inoltre vogliamo che sull'evento SelectionChanged del Calendar la property Text del controllo TextBox venga settata con il giorno selezionato.
La classe LabelTextboxCalendar:

Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class LabelTextboxCalendar
Inherits Control
Implements INamingContainer

Protected _label As Label
Protected _textbox As TextBox
Protected _calendar As Calendar

Private _textLabel As String = String.Empty

Public Sub New()
MyBase.New()
End Sub

Public Property TextLabel() As String
Get
Return _textLabel
End Get
Set(ByVal Value As String)
_textLabel
= Value
End Set
End Property

Public ReadOnly Property DateSelected() As String
Get
Return _calendar.SelectedDate.ToString("dd/MM/yyyy")
End Get
End Property

Protected Overrides Sub CreateChildControls()
'Resetto la collection dei controls
Controls.Clear()
'Aggiungo il controllo label
_label = New Label
_label.Text
= TextLabel
Controls.Add(_label)
'Aggiungo uno spazio tra il controllo Label e il controllo TextBox
Controls.Add(New LiteralControl(" "))
'Aggiungo il controllo textbox
_textbox = New TextBox
_textbox.Enabled
= False
Controls.Add(_textbox)
'Aggiungo uno spazio
Controls.Add(New LiteralControl(" "))
'Aggiungo il controllo calendar
_calendar = New Calendar
_calendar.SelectedDate
= DateTime.Now
AddHandler _calendar.SelectionChanged, AddressOf SetDate
Controls.Add(_calendar)
End Sub

Private Sub SetDate(ByVal e As Object, ByVal sender As EventArgs)
_textbox.Text
= DateSelected
End Sub
End Class

A questo punto possiamo registrare il controllo nella toolbox di Visual Studio e trascianarlo sulla form web.

Come si può notare nel design di Visual Studio non viene renderizzato nulla che abbia l'aspetto di una label, più textbox, più calendar, per fare ciò creiamo la classe che si occuperà del rendering a design-time.

Imports System
Imports System.IO
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design

Public Class LblTxtCalDesign
Inherits System.Web.UI.Design.ControlDesigner

Public Overrides Function GetDesignTimeHtml() As String
Dim sw As StringWriter = New StringWriter
Dim htmlWriter As HtmlTextWriter = New HtmlTextWriter(sw)

Dim lb As Label = New Label
lb.Text
= "lblLabel"
lb.Width
= Unit.Pixel(70)
lb.Height
= Unit.Pixel(20)
Dim txt As TextBox = New TextBox
txt.Text
= String.Empty
txt.Width
= Unit.Pixel(100)
txt.Height
= Unit.Pixel(20)
Dim cal As Calendar = New Calendar
cal.Width
= Unit.Pixel(100)
cal.Height
= Unit.Pixel(100)
lb.RenderControl(htmlWriter)
txt.RenderControl(htmlWriter)
cal.RenderControl(htmlWriter)
Return sw.ToString()
End Function

End Class

Il metodo GetDesignTimeHtml torna una stringa HTML usata per la creazione del controllo composito a design-time.
A questo punto non ci resta che associare il controllo alla classe di DesignTime.

Imports System.ComponentModel

<Designer("ControlComposito.LblTxtCalDesign,ControlComposito")> _

Risultato finale:

Read More »»

HTC TyTN II

.
0 commenti

...spettacolare!!! (dovevo attendere ma due mesi fa non son riuscito a trattenermi davanti al S710)

Read More »»

Download File

.
0 commenti

Una delle funzioni più comuni che spesso un cliente chiede di implementare in applicazioni web è quella di consentire il download di files.
Tra i possibili modi:

using( System.IO.FileStream file = new System.IO.FileStream( @"PathFile", System.IO.FileMode.Open))
{
Response.ContentType
= "application/octet-stream";
Response.AddHeader(
"content-disposition", "attachment; filename=NameFile");
byte[] contentFile = new byte[ Convert.ToInt32( file.Length)];
file.Read( contentFile,
0, Convert.ToInt32( file.Length));
Response.BinaryWrite( contentFile);
}

Da sottolineare come l'utente con cui gira il processo di ASP.NET deve avere i privilegi di lettura/scrittura sulla cartella in cui il file si trova.

Read More »»

Thursday, September 6, 2007

Windows Live Suite

. Thursday, September 6, 2007
0 commenti

La suite include Windows Live Writer, Windows Live Mail, Windows Live Photo Gallery, Windows Live OneCare Family Safety e la nuova versione di Windows Live Messenger (8.5), il tutto scaricabile qui

Read More »»

Tuesday, September 4, 2007

Code error Sql Server 2000

. Tuesday, September 4, 2007
0 commenti

Meglio segnarselo può sempre tornar utile:
Resolving System Error Messages

Read More »»

AutoPinger automatico

.
0 commenti

Se si desidera pingare tutta una serie di servizi come Technorati, Google Blog Search, FeedBurner ecc in un sol colpo esiste un servizio Web 2.0 che permette l’invio di ping di aggiornamento per blog e podcast verso una serie di servizi in modo del tutto automatico, semplicemente indicando l'url del blog.
AutoPinger inoltre verifica ogni 30 minuti sul vostro blog la presenza di nuovi post, in caso affermativo invia il ping agli oltre 50 servizi( quest'ultima funzione è possibile solo previa registrazione )

Read More »»

Monday, September 3, 2007

WebBrowser con IStaySharp

. Monday, September 3, 2007
1 commenti

Per puro caso mi sono imbattuto in un Windows control IStaySharp.WebBrowser che ho subito messo alla prova, viste le diverse e non poche noie causatemi dal Microsoft WebBrowser( controllo che ci permette di navigare nelle pagine web all'interno di applicazioni Windows Form), soprattutto per quanto riguarda l'intenso consumo di risorse RAM.
Dopo aver scaricato la libreria è sufficente aggiungere la IStaySharp.WebBrowser.dll nella toolbox di Visual Studio, e trascinare il controllo sulla form.
Da sottolineare che tale libreria implementa funzionalità non solo di Internet Explorer ma anche di Mozilla(bisogna però installare il Mozilla ActiveX control) ed inoltre non dipende dalle due dll: AxInterop.SHDocVw.dll e SHDocVw.dll.
Supponiamo di voler eseguire una ricera su Google, i passi da eseguire sono:
1)Navigare nella home di Google:

Dim _busy As Boolean = True

Private Sub NavigatePage(ByVal url As String)
IeBrowser1.Navigate(url)
While (_busy)
Application.DoEvents()
End While
End Sub

Private Sub IeBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As IStaySharp.WebBrowser.DocumentCompleteEventArgs) Handles IeBrowser1.DocumentComplete
If (IeBrowser1.Url.AbsoluteUri <> "about:blank" And IeBrowser1.ReadyState = IStaySharp.WebBrowser.WebBrowserReadyState.Complete) Then
_busy
= False
End If
End Sub

L'evento DocumentComplete permette di capire quando la pagina è stata scaricata, verificando che lo stato sia di tipo Complete attraverso l'enumeratore WebBrowserReadyState.
2)Ricercare l'input box in cui indicare la parola da ricercare
3)Ricercare il pulsante "Cerca con Google" ed effettuare il submit
Per eseguire quest'ultimi passi ci affidiamo alla library MSHTML(Microsoft HTML Object Library):



Private Function Find()
Dim document As mshtml.HTMLDocumentClass = IeBrowser1.Document
'Find input box ricerca
Dim inputSearch As mshtml.HTMLInputElementClass = document.getElementsByName("q").item(0)
inputSearch.value
= "sign in blog"

'Find submit
Dim submitSearch As mshtml.HTMLInputElementClass = document.getElementsByName("btnG").item(0)
submitSearch.click()
End Function

A questo punto non ci resta che richiamare nell'ordine:


NavigatePage("http://www.google.it")
Find()

"Chissà come si potrebbe comportare in un vecchio progetto...mah non lo saprò mai :D"

Read More »»

Sunday, September 2, 2007

Tester Regular Expression

. Sunday, September 2, 2007
0 commenti

Esistono diversi strumenti che ci consentono di provare le nostre regular expression. Nè ho raccolto qualcuno suddividendoli tra quelli online e programmi freeware.
Online:

  • RegExLib, un sito in cui non solo troviamo tantissimo materiale sulle regular ma anche un tester online,
  • RegExPal

Freeware:

Read More »»

Saturday, September 1, 2007

Ajaxload: gif generator

. Saturday, September 1, 2007
0 commenti

Se avete bisogno di gif animate da inserire nelle vostre applicazioni realizzate con Ajax potete usare il servizio in puro stile web 2.0: Ajaxload.

Read More »»