martedì 17 febbraio 2009

Azure all'opera


Ho creato la mia prima applicazione su Microsoft Azure la piattaforma per applicazioni Cloud di Microsoft.

Due considerazione sopra a tutte :
1) Ha un potenziale esplosivo. Rispetto alle AppEngine di Google ha dalla sua l'integrazione con i tools di sviluppo di Microsoft che rendono estremamente più produttivo il lavoro.
2) In questa prima prova la lentezza dei sistemi è però stata terribile: diversi minuti di attesa per poter vedere pubblicata una banale pagina.


Dovrebbe funzionare a questo indirizzo :
http://cinghiale.cloudapp.net/

Ma al momento è attiva solo sull'ambiente di test:
http://57fd3bdb-1bd1-427b-a7e6-2c96a28c09fe.cloudapp.net/Default.aspx


Qui ci sono una serie di video per imparare a creare la prima applicazione:
http://msdn.microsoft.com/en-us/azure/dd439432.aspx

http://blogs.msdn.com/cloud/archive/2009/02/12/windows-azure-how-do-i-videos.aspx

le Tables di Azure

Mi aspettavo di trovare in Azure un qualche tipo di connessione agli SDS (SQL Data Services).
Invece per gestire i dati in tabelle bisogna utilizzare le "Tables".
Il cui principio di utilizzo è molto simile alle Entities di Gooogle Appengine.
Così come in qualche modo simile è l'idea di uno storage locale per l'ambiente di sviluppo sul PC (anche se poi qui le tabelle finiscono su SQL Express).

Queste Tables sono importanti (in negativo) in quanto impongono di scrivere il codice per il loro utilizzo e non permettono l'uso degli strumenti visual presenti in Visual Web Developer.
In questo modo limitano molto un ipotetico vantaggio che gli ambienti di sviluppo Microsoft avrebbero apportato ad Azure rispetto ad Appengine.

martedì 3 febbraio 2009

controllare i cambiamenti del files system

FileSystemWatcher è un controllo di Visual Basic utile a controllare le modifiche a cartelle o file sotto un percorso definito.

lunedì 26 gennaio 2009

posizionare un ContextMenuStrip in una form

Private Sub Form3_MouseClick(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseClick

ContextMenuStrip1.Show(PointToScreen(e.Location))


End Sub

domenica 25 gennaio 2009

Esempio inserimento dati in MS-Access con parametro


Imports System.Data.OleDb

Dim cn As OleDbConnection
Dim cmd As OleDbCommand



Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\programmazione.mdb")
'stringa accesso dati
cn.Open()
cmd = New OleDbCommand("insert into tabella1 (a,b) values('prova',?) ", cn)
cmd.Parameters.Add("@b", OleDbType.Char).Value = TextBox4.Text
cmd.ExecuteNonQuery()


Catch
End Try

cn.Close()

Nota.
Si differenzia rispetto ad SQL (che vuole i nomi @nomi e non il ?)

Esempio inserimento dati in MS-SQL con parametro

Imports System.Data.Sql

Dim cn As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Try
cn = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename= " & Chr(34) & "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\vb.mdf" & Chr(34) & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cn.Open()
cmd = New SqlClient.SqlCommand("insert into table1 (a,b) values('ii',@b) ", cn)
cmd.Parameters.Add("@b", SqlDbType.Char).Value = TextBox3.Text
cmd.ExecuteNonQuery()

Catch
End Try

cn.Close()
Me.Table1TableAdapter.Fill(Me.VbDataSet.Table1)

Note.
Si differenzia rispetto all'insert dei dati in access (che richiede il ?).

Esempio lettura dati da MS-SQL

Imports System.Data.Sql

Dim cn As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Dim dr As SqlClient.SqlDataReader
Try
cn = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename= " & Chr(34) & "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\vb.mdf" & Chr(34) & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cn.Open()
cmd = New SqlClient.SqlCommand("select * from table1 ", cn)
dr = cmd.ExecuteReader()
While dr.Read()
TextBox1.Text = dr(0)
TextBox2.Text = dr(1)
TextBox3.Text = dr(2)
' lettura dati
End While
Catch
End Try

cn.Close()

Esempio inserimento dati in MS-SQL

Imports System.Data.Sql

Dim cn As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Try
cn = New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename= " & Chr(34) & "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\vb.mdf" & Chr(34) & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cn.Open()
cmd = New SqlClient.SqlCommand("insert into table1 (a,b) values('RRR','RRR') ", cn)
cmd.ExecuteNonQuery()

Catch
End Try

cn.Close()

Esempio inserimento dati in MS-Access

Imports System.Data.OleDb

Dim cn As OleDbConnection
Dim cmd As OleDbCommand



Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\programmazione.mdb")
'stringa accesso dati
cn.Open()
cmd = New OleDbCommand("insert into tabella1 (a,b) values('RRR','RRR') ", cn)
cmd.ExecuteNonQuery()

Catch
End Try

cn.Close()

Esempio lettura dati da MS-Access

Imports System.Data.OleDb

Dim cn As OleDbConnection
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader


Try
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\programmazione.mdb")
'stringa accesso dati
cn.Open()
cmd = New OleDbCommand("select * from tabella1", cn)
dr = cmd.ExecuteReader
While dr.Read()
TextBox1.Text = dr(0)
TextBox2.Text = dr(1)
TextBox3.Text = dr(2)
' lettura dati
End While
Catch
End Try
dr.Close()
cn.Close()

martedì 13 gennaio 2009

il browsing delle directory su IIS 7

Mi rendo conto che si tratta di un appunto banale, ma ogni volta divento matto a ritrovarlo.
Per abilitare il browsing delle directory su IIS 7 occorre attivare la funzionalità installando l'apposito il componente di Windows.

sabato 10 gennaio 2009

robocopy il successore di xcopy

E' già tempo in circolazione, ma io ero affezionato a xcopy e per le mie copy di backup continuavo ad utilizzare i miei vecchi comandi batch.
Ora su Vista xcopy è espressamente definito obsoleto quindi mi sono aggiornato.
Questo è il comando per copiare nella cartella di destinazione solo i file modificati più di recente.

  • robocopy c:\origine c:\destinazione /e /xo

robocopy, fa molte cose in più di xcopy, ad esempio gestisce anche i percorsi di rete UNC, quindi è possibile copiare tramite pc differenti (xcopy mi pare che copiasse solo fino a 2 GB).

tools per App Engine

Giorni fa è stata rilasciata la versione 1.1 di App Engine Site Creator un tools per creare pagine web sulle App di Google.

Di fatto è una applicazione in Python che per funzionare deve essere caricata su appspot.com oppure sul runtime in locale.

Lo strumento ha al momento solo funzionalità essenziali, ma può essere personalizzato.

Le pagine e la loro struttura sono salvate nelle tabelle del Datastore.
Questo comporta un limite per chi lavora in locale: una volta create sul datastore locale le pagine non possono essere esportate, ma vanno ricreate ex-novo, anche sul datastore di Appspot.com.

mercoledì 7 gennaio 2009

Creare grafici con Python e le Google Chart

In questa pagina http://pygooglechart.slowchop.com ci sono alcune interessanti info su come creare grafici con Python utilizzando le Google Chart.

Sono scaricabili alcuni utili esempi.
Il codice crea in locale le immagini dei grafici in formato .png