Tuesday, August 28, 2007

Hackers@microsoft

. Tuesday, August 28, 2007
0 commenti

Hackers@microsoft un blog da tenere d'occhio, aperto da Microsoft all'interno di blogs.msdn.com.

Read More »»

Passaggio a VB.NET

.
0 commenti

Mi reputo un "csharpista" ma attualmente mi ritrovo a dover iniziare diversi progetti in VB.NET.
Ho sempre pensato che C# fosse più "elegante" come linguaggio rispetto a VB.NET adesso nè sono pienamente convinto...
Ad ogni modo due link che sto trovando molto utili in questa fase:

Read More »»

Sunday, August 26, 2007

Corso SharePoint 2007

. Sunday, August 26, 2007
0 commenti

Per chi mastica un pò di spagnolo esiste un corso online su SharePont 2007 realizzato da Gustavo Velez, con diversi video all'interno.
Può essere un buon modo per iniziare.

Read More »»

SDK MOSS 2007 e WSS3

.
0 commenti

Rilasciato nei giorni scorsi il nuovo SDK per MOSS2007.
Le novità si possono direttamente consultare sul blog msdn di Microsoft SharePoint.
Per quanto riguarda le estensioni di VS 2005 per WSS3 qui si possono scaricare le ultime.

Read More »»

Saturday, August 25, 2007

Properazzi per cercare casa

. Saturday, August 25, 2007
0 commenti

Properazzi è un motore di ricerca per individuare abitazioni in affitto o in vendita.
E' possibile effettuare tutta una serie di filtri come per esempio per prezzo, numero di stanze, zona e diverse feature come la presenza di balconi, di ascensore, garage ecc.
Sono presenti 4 milioni di immobili, sparsi in 49 nazioni.

Read More »»

Flight Search

.
1 commenti

Come primo messaggio post ferie, ho pensato di indicare una serie di siti che possono ritornare utili a chi viaggia( già penso alle prossime ferie :D).
Trovare biglietti aerei al minor prezzo richiede spesso del tempo, esitono però siti che agevolano la ricerca:

  1. Vayama
    Si tratta di un sito web pensato per la ricerca di biglietti aerei. E' possibile tramite una modalità di ricerca tradizionale indicare gli aeroporti di partenza e destinazione, oppure ricercare il tutto in modalità visuale, zoomando su di una cartina.
  2. Skyscanner
    Altro motore di ricerca. E' possibile conoscere le mete più convenienti oppure tenere traccia delle nuove offerte tramite rss.
    Si può scegliere la valuta ed inoltre ottenere grafici sulle tariffe piu’ convenienti.
  3. Farecast
    A differenza dei due siti precedenti, oltre alla ricerca delle tariffe, Farecast prevede( attualmente solo per alcune città americane) l'andamento dei prezzi aerei.

Read More »»

Friday, August 10, 2007

Chiuso per ferie

. Friday, August 10, 2007
0 commenti

Era ora!!!!....Finalmente sono arrivate le ferie.
Per 15 giorni stacco completamente, ci si rilegge il 27!!!

Buone Vacanze!!!!

<= Sto arrivando :D

Read More »»

Le Tappe del Beagle

.
0 commenti

Sulle orme del naturalista Darwin, spinto dalle prime due puntate della trasmissione Evoluti per caso, ho deciso di fare un semplice esperimento con Virtual Earth indicando sulla mappa le tappe del  brigantino inglese, il Beagle.
Nella V5 delle Virtual Earth API esiste il supporto per GeoRSS, si tratta di un formato basato su XML avente lo scopo di georeferire RSS.
Se esiste il supporto allora si può dare in pasto a Virtual Earth :D.
Nel caso specifico l'XML è costituito da una serie di item ognuno composto da un titolo, una descrizione e un georss point contenente le coordinate di latitudine longitudine.

<item>
<title>Cape de Verd Islands</title>
<description>Tappa 1: Cape de Verd Islands</description>
<georss:point>14.916667 -23.516667</georss:point>
</item>

Per dare in pasto l'XML con le tappe del Beagle:

<script>
var map = null;
function GetMap()
{
map
= new VEMap( 'myMap');
map.LoadMap();
var geoRss = new VEShapeLayer();
var geoRss = new VEShapeSourceSpecification( VEDataType.GeoRSS, "Tappe.xml", geoRss);
map.ImportShapeLayerData( geoRss, LoadShape,
true);
}
function LoadShape( layer)
{
var numShapes = layer.GetShapeCount();
for(var i=0; i < numShapes; ++i)
{
var s = layer.GetShapeByIndex(i);
s.SetCustomIcon(
"images/beagle.gif");
}
}
</script>

L'oggetto VEShapeSourceSpecification definisce le specifiche di importazione dell'oggetto VEShapeLayer.
Il costruttore accetta tre parametri il dataType attraverso l'enumeratore VEDataType: GeoRSS o VECollection, quest'ultimo per importazione da Live Search Maps.
Il secondo parametro è il dataSource, che nel caso di GeoRSS Feed è rappresentato da un URL, infine l'ultimo parametro è il referimento all'oggetto VEShapeLayer.
Il metodo ImportShapeLayerData è autoesplicativo, l'unica nota da evidenziare è il booleano con valore true passato come terzo parametro, che consente di "centrare" la visuale della mappa sugli shape importati.
Con la funzione LoadShape andiamo a personalizzare gli shape importati, nel caso specifico l'immagine del pushpin.
Alcune immagini a lavoro finito:

Read More »»

Windows Live SkyDrive

.
0 commenti

Windows Live SkyDrive è il nuovo nome del precedente servizio di storage online denominato Windows Live Folders.
Ovviamente non si tratta solo di un semplice cambiamento di nome, infatti è stata rivoluzionata l'interfaccia grafica, permettendo per esempio il drag and drop, inserendo la funzione di thumbnail per le immagini, oltre alla possibilità di archiviare files e cartelle nel proprio blog.
Il servizio è appena arrivato nella fase di beta pubblica, ma ahimè non è attivo per il nostro paese.


Demo: Windows Live SkyDrive:

Read More »»

Wednesday, August 8, 2007

Analisi ViewState

. Wednesday, August 8, 2007
0 commenti

Alcuni tool per analizzare il contenuto del ViewState:

  • ASP.NET ViewState Helper
    Compatibile con Internet Explorer 6.0 e 7.0
    E' possibile analizzare pagine ASP.NET 1.0, 1.1, 2.0

  • Web Development Helper
    Si tratta di un'estensione per Explorer utile in fase di debug e trace di applicazioni ASP.NET, supporta solo il Framework 2.0

  • View State Decoder 2.2
    Si tratta di un'applicazione Windows simile ad ASP.NET ViewState Helper.
    La versione 2.2 supporta pagine scritte in ASP.NET 2.0, mentre per ASP.NET 1.0, 1.1 esiste View State Decoder 1.0

  • ViewStateAnalyzer 2.0.0
    Un client-utility che permette l'analisi del codice di markup e del viewstate usati in pagine ASP.NET 2.0, realizzato da Cristian Civera

Read More »»

Virtual Earth: Find Route con Latitudine e Longitudine

.
0 commenti

Attraverso la funzione GetRoute Virtual Earth disegna sulla mappa un percorso data una location di partenza e una di arrivo.
Le due location possono essere indicate sia come stringa quindi un indirizzo, oppure attraverso l'oggetto VELatLong.
Ho pensato quindi di usare la funzione GetRoute per risalire all'indirizzo di una via conoscendo solo le coordinate di latitudine e longitudine.
Per prima cosa mi son costruito una semplice interfaccia web in cui ho inserito i seguenti controlli:
1)un controllo TextBox con id txtLatitudine in cui vado ad indicare le coordinate di latitudine;
2)un controllo TextBox con id txtLongitudine in cui vado ad indicare le coordinate di longitudine;
3)un Input Button con id btnSearch che richiama la funzione di ricerca della route;
4)un controllo Label con id lblResult che prenderà come risultato l'indirizzo della strada trovata.
Il codice dell'interfaccia è il seguente:

<body onload="GetMap();">
<form id="form1" runat="server">
<div>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<asp:Label ID="lblLatitudine" runat="server" Text="Latitudine:"></asp:Label>
<asp:TextBox ID="txtLatitudine" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblLongitudine" runat="server" Text="Longitudine:"></asp:Label>
<asp:TextBox ID="txtLongitudine" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td align="center">
<input id="btnSearch" type="button" value="Cerca" onclick='SearchRoute();' />
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblRoute" runat="server" Text="Via:"></asp:Label>
<asp:Label ID="lblResult" runat="server"></asp:Label>
</td>
</tr>
</table>
</td>
<td valign="top" align="left" width="100%">
<div id="myMap" style="position: absolute; width: 800; height: 600">
</div>
</td>
</tr>
</table>
</div>
</form>
</body>
Dal punto di vista grafico:


La parte più interessante è sicuramente la sezione di script:
<head runat="server">
<title>GetRoute</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=5"></script>

<script>
var map = null;
function GetMap()
{
map
= new VEMap( 'myMap');
map.LoadMap();
}

function SearchRoute()
{
var latLong = null;
if( document.getElementById( 'txtLatitudine').value != '' && document.getElementById( 'txtLongitudine').value != '')
{
latLong
= new VELatLong( document.getElementById( 'txtLatitudine').value, document.getElementById( 'txtLongitudine').value);
map.GetRoute( latLong,
latLong,
VEDistanceUnit.Kilometers,
VERouteType.Shortest,
getDescriptionRoute);
}
}

function getDescriptionRoute( route)
{
var len = route.Itinerary.Segments.length;
if( len > 0)
document.getElementById(
'lblResult').innerText = route.Itinerary.Segments[1].Instruction;
map.DeleteRoute();
}
</script>

</head>
La funzione SearchRoute non fa altro che richiamare la funzione GetRoute.
I parametri che vengono passati alla funzione sono l'oggetto VELatLong, che nel caso specifico costituisce sia la location di partenza sia la location di arrivo, dato che l'intento è quello di conoscere l'indirizzo data la longitudine e la latitudine.
Il terzo parametro indica l'unità di misura del persorso attraverso l'enumeratore VEDistanceUnit i cui valori sono: Miles o Kilometers.
Il quarto parametro indica la tipologia di itinerario attraverso l'enumeratore VERouteType i cui valori sono: Shortest (itinerario breve) o Quickest (itinerario rapido).
Infine l'ultimo parametro è la funzione getDescriptionRoute che prenderà in input l'oggetto VERoute restituito.
L'oggetto VERoute contiene il dettaglio della strada disegnata sulla mappa, in particolare attraverso la property VERoute.Itinerary è possibile conoscere le informazioni sull'itinerario.
Parte di queste informazioni sono contenute nell'array Segments, ed attraverso la property Instruction posso risalire al nome della strada.
Nel caso specifico il segmento è composto da tre elementi, il primo e il terzo sono rispettivamente il punto di partenza e il punto di arrivo, anche se sinceramente mi sarei aspettato un unico punto dato che la latitudine e longitudine coincidono.
Il secondo elemento contiene proprio l'informazione che mi serve.
Per esempio se indichiamo come latitudine 45.471064 e come longitudine 9.187596 otteniamo Via Brera a Milano oppure indicando 45.480566 e 9.210663 otteniamo Corso Buenos Aires sempre a Milano.

Read More »»

Tuesday, August 7, 2007

Virtual Earth, Google Maps e Yahoo Maps messi a confronto

. Tuesday, August 7, 2007
0 commenti

Un interessante articolo sul blog di Niall Kennedy, in cui mostra i risultati delle performance delle Map API.
Buona lettura!!!

Read More »»

FolderShare

.
0 commenti

Se avete la necessità di dover sincronizzare file tra diversi computer, condividere file con i vostri colleghi allora FolderShare(un servizio Microsoft in beta) può essere un'ottima soluzione.
Tutta la gestione di condivisione e sincronizzazione avviene tramite browser Web.
Per iniziare è necessario però scaricare FolderShare Satellite(ahimè da installare su tutte le macchine client) che si occupa appunto della sincronizzazione delle risorse, lavorando in background quando i file vengono aggiornati allora FolderShare Satellite aggiorna automaticamente i file sulle diverse periferiche.
Ovviamente solo l'utente e i membri invitati possono visualizzare o modificare i file presenti nella libreria creata.
Inoltre tutte le comunicazioni sono autenticate tramite RSA e codificate tramite AES su SSL.
L'installazione può avvenire sia su macchine Windows( 2000, Xp, 2003) ma anche su Mac( OS X 10.3.8 o successivo).

Read More »»

Monday, August 6, 2007

NASA using Photosynth

. Monday, August 6, 2007
0 commenti

La NASA ha stretto una collaborazione nell'uso della tecnologia Photosynth, permettendo così ai visitatori l'esplorazione di ambienti poco conosciuti come quelli di preparazione per il lancio, intorno al veicolo e nell'area di assemblaggio.
Un tour senza precedenti.

Read More »»

Sunday, August 5, 2007

Virtual Earth. Primi passi

. Sunday, August 5, 2007
0 commenti

Per caricare la mappa di default di Virtual Earth nella nostra pagina .aspx bastano pochissime righe di codice:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina di test Virtual Earth</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=5"></script>
<script>
var map = null;
function GetMap()
{
map
= new VEMap( 'myMapDefault');
map.LoadMap();
}
</script>
</head>
<body onload="GetMap();">
<form id="form1" runat="server">
<div id="myMapDefault" style="position:absolute; width: 100%; height: 100%">
</div>
</form>
</body>
</html>

La mappa di default centrata sugli Stati Uniti viene caricata nel nostro div con id myMapDefault.
Ma partiamo con ordine, come prima cosa è fondamentale inserire un tag meta con attributo charset impostato su UTF-8, questo perchè avremo il giusto supporto di tutti i caratteri.
In seguito è necessario inserire una sezione di script in cui indicare l'url del map control.
Infine sempre nella sezione di script si crea un nuovo oggetto VEMap su cui richiamare il metodo LoadMap il quale si occupa di caricare la mappa di default questo perchè non abbiamo specificato alcun parametro.
Questo è il risultato:


Per rendere il tutto più interessante ho aggiunto tre controlli:
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="center"><b>Lista città :</b> <asp:DropDownList ID="ddlCity" runat="server" Width="200px">
<asp:ListItem Value="1.2903767630848437,103.85227918624878">Singapore</asp:ListItem>
<asp:ListItem Value="38.72535854643843,-9.15037751197815">Lisbona</asp:ListItem>
</asp:DropDownList><b>Zoom:</b>
<asp:DropDownList ID="ddlZoom" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
<asp:ListItem Selected="True">8</asp:ListItem>
<asp:ListItem>9</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>12</asp:ListItem>
<asp:ListItem>13</asp:ListItem>
<asp:ListItem>14</asp:ListItem>
<asp:ListItem>15</asp:ListItem>
<asp:ListItem>16</asp:ListItem>
<asp:ListItem>17</asp:ListItem>
<asp:ListItem>18</asp:ListItem>
<asp:ListItem>19</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnView" runat="server" Text="Carica mappa" /></td>
</tr>
</table>

1)DropDownList con id ddlCity che contiene la città di Lisbona e Singapore con i dati riguardanti le coordinate di latitudine/longitudine,
2)DropDownList con id ddlZoom per effettuare lo zoom sulla mappa. Il range di valori validi vanno da 1 a 19. Il valore di default è 4.
3)Un button con id btnView per caricare la mappa.
Lo scopo è appunto quello di caricare una mappa diversa da quella di default selezionando la città da una lista.
L'unica sezione da modificare è quella script:
<script>
var map = null;
function GetMap()
{
var latitudine = null;
var longitudine = null;
var itemCity = document.getElementById( 'ddlCity').value;
latitudine
= itemCity.split(',')[0];
longitudine
= itemCity.split(',')[1];
map
= new VEMap( 'myMapDefault');
map.LoadMap(
new VELatLong( latitudine, longitudine), document.getElementById('ddlZoom').value, 'r', false, VEMapMode.Mode2D);
}
</script>
Da sottolineare i parametri passati al metodo LoadMap.
Il primo parametro è un nuovo oggetto di tipo VELatLong che rappresenta il centro della mappa da visualizzare tramite le coordinate di latitudine/longitudine che recupero dal controllo ddlCity.
Secondo parametro il livello di zoom.
Terzo parametro è una lettera che può essere:

1)r per mappe stradali
2)a per mappe satellitari
3)h ibrida

Quarto parametro un booleano per indicare il lock o meno della mappa(significa che la mappa non sarà interattiva con valore true), ed infine il quinto parametro la modalità di visualizzazione; tramite l'enumeratore VEMapMode possiamo indicare una modalità di visualizzazione 2D o 3D.

Read More »»

Saturday, August 4, 2007

Nibbles Tutorial: WPF, Silverlight e Blend

. Saturday, August 4, 2007
0 commenti

Su Nibbles una raccolta di tutorial su WPF, Silverlight e Blend da non perdere.
I tutorial sono correlati degli script ed ovviamente si possono scaricare tramite file .zip.
Per rimanere sempre aggiornati sul materiale pubblicato, esiste il blog personale di Celso Gomes( autore del sito ) uno dei top designers del team di sviluppo in Redmond.
Per visionare il sito è necessario installare, se non l'avete ancora fatto, Silverlight.

Read More »»

PriceFad

.
0 commenti



PriceFad è un nuovo sito che mostra la tendenza dei prezzi di un particolare prodotto( al momento però non ci sono tantissimi articoli da consultare ) nell'arco del tempo.

E' possibile modificare il range di giorni da visualizzare o conoscere il dettaglio di un particolare giorno, oppure conoscere le variazioni di prezzo attraverso vari allarmi: email e rss.

Read More »»

Friday, August 3, 2007

Azzerare campo contatore

. Friday, August 3, 2007
0 commenti

Per resettare il contenuto di una tabella ed in modo particolare il campo contatore che funge da colonna chiave è possibile procedere in questi modi:

  1. Uso del comando TRUNCATE TABLE,
  2. Uso del comando DELETE combinato con il comando DBCC CHECKIDENT

Nel primo caso:

TRUNCATE TABLE TestTable

Questo comando più rapido rispetto alla DELETE, non può essere usato nel caso di tabella referenziata da una foreign key o che partecipa in una vista indicizzata.
Inoltre dal punto di vista delle autorizzazioni bisogna appartenere ad uno dei seguenti ruoli:

  1. db_owner
  2. db_ddladmin
  3. sysadmin

Nel secondo caso:

DELETE FROM TestTable
DBCC CHECKIDENT('TestTable', reseed, 0)

Il comando DBCC CHECKIDENT serve ad impostare un nuovo valore di inizializzazione per la colonna identity.
Anche in questo caso per lanciare il comando servono le stesse autorizzazioni viste per la truncate.

Read More »»

Wednesday, August 1, 2007

Backup Db con SQLDMO

. Wednesday, August 1, 2007
0 commenti

Se si ha la necessità di accedere agli oggetti di SQL Server a livello di programmazione è possibile utilizzare la libreria COM: SQLDMO.dll.

Per utilizzarla è necessario:

  •  avere SQL SERVER 2000 o MSDE installato,
  •  aggiungere la reference al progetto.


using SqlDmoApp = SQLDMO;

Se per esempio vogliamo eseguire un backup bastano pochissime righe di codice:

SqlDmoApp.SQLServer sqlServer = new SqlDmoApp.SQLServerClass();
//Connessione al DB
sqlServer.Connect( "Nome server", "login", "password");
SqlDmoApp.Backup backup
= new SqlDmoApp.BackupClass();
backup.Devices
= backup.Files;
//Path in cui copiare il file di backup
backup.Files = @"C:\backup.bak";
//Nome del Database da recuperare
backup.Database = "None db";
//Eseguo il backup
backup.SQLBackup( sqlServer);

Read More »»