martedì 29 ottobre 2013

Free ebook Introducing Windows 8.1 for IT Professionals


Introducing Windows 8.1 for IT Professionals Technical Overview cover
















Come riportato in questo blog http://blogs.msdn.com/b/microsoft_press/archive/2013/10/14/free-ebook-introducing-windows-8-1-for-it-professionals.aspx la possibilità di scaricare gratuitamente un ebook in lingua inglese sull'utilizzo di Windows 8.1 indicato per i professionisti IT.

Il formato dell'ebook è pdf, epub e mobi per Kindle.


lunedì 28 ottobre 2013

C# Dynamic Multi File AppSettings

Nel caso che si vuole gestire più file di configurazione,  e precisamente i file di tipo appsetings, utilizzando il metodo openMappedExeconfiguration possiamo  gestire i vari file di configurazione in maniera dinamica.

Qui di seguito un frammento di codic in C#.

 NomeFileConfigurazione ;
                    ExeConfigurationFileMap  ExeconfigFileMap =        new ExeConfigurationFileMap();
                    ExeconfigFileMap.ExeConfigFilename = "NomeFileConfigurazione"


                    Configuration  config =  ConfigurationManager.OpenMappedExeConfiguration(ExeconfigFileMap, ConfigurationUserLevel.None);


 string Valore = config.AppSettings.Settings["NOMECHIAVE"].Value;



domenica 27 ottobre 2013

download visual studio 2013

Da qualche giorno è disponibile il download della versione finale, non beta, di Visual Studio 2013.
Qui http://www.microsoft.com/visualstudio/ita/downloads la pagina del download (versione gratuita per la Express, limitata nel tempo per le altre).

sabato 26 ottobre 2013

Silverlight GIS la gestione delle mappe tramite controllo Esri VB.Net e C# parte 4

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/tutorial-gis-silverlight/art_gestione-delle-mappe_1313.aspx

Introduzione

Continua lo studio sulla gestione delle mappe, in questa parte vedremo come integrare nella nostra mappa, la possibilità di visualizzare nella stessa la situazione dei terremoti nel mondo.
Utilizzeremo il servizio gratuito di esempio che mette a disposizione Esri, inoltre utilizzeremo il progetto precedente.

Configurazione della mappa

Aprite il progetto utilizzato nel precedente articolo, selezionate il controllo mappa e nella finestra delle proprietà facciamo click sul pulsante delle voce “Layers” come riportato in figura 1.


Figura 1 – la finestra delle proprietà

A questo punto si aprirà una finestra (figura 2) nella quale dobbiamo aggiungere l’elemento “ArcGisDynamicMapServiceLayer”  il quale ci permette di inserire una tipologia di mappa sovrapposta a quella che già stiamo utilizzando.
Dopo aver selezionato tale voce, facciamo click sul pulsante “Aggiungi” in modo che verrà inserito nella lista degli elementi tale voce.


Figura 2 – La finestra per impostare gli elementi di layers

Ora non ci resta che impostare la proprietà Url, questa voce, come vista nell’articolo precedente, ci permette di impostare il sito di riferimento per rilevare le mappe.
Nel nostro caso, essendo un tutorial, faremo uso del servizio di esempio, che è il seguente http://sampleserver3.arcgisonline.com “ in cui troviamo diverse mappe a disposizione.
Una volta fatto click sul pulsante, verrà aperta una finestra (Figura 3) a questo punto, nella casella “Service Broswer” dobbiamo inserire il seguente link http://sampleserver3.arcgisonline.com
E fare click sulla voce “Add Server”.


Figura 3 – La selezione della mappa dei terremoti


Dopo aver fatto click sul pulsante “Add Server” verranno visualizzate diverse catgorie, tra queste utilizzeremo una per la visualizzazione dei terremoti nel mondo.
Facciamo click sulla voce “Earhquakes” e tra le varie voci che vengono visualizzate fare clic sulla voce “EarthquakesFromLastSevenDays” il tutto come mostrato in figura 3.
Se facciamo click su tale voce, nella parte inferiore verrà visualizzata una mappa, mentre nella parte a sinistra una descrizione.
Dopo aver selezionato tale mappa, confermiamo il tutto tramite il pulsante “OK”.
Dopo aver confermato tutte le finestre, verrà visualizzata l’anteprima con i punti indicante i terremoti (figura 4).


Figura 4 – l’anteprima della nostra cartina



Siamo quasi giunti alla fine di questo articolo, dovremmo scrivere il codice, nell’eventualità che l’avvio non vada a buon fine.
Nella parte XAML o nella finestra delle proprietà, dovremmo gestire l’evento “InitializationFailed” per gli elementi ArcGISTiledMapServiceLayer e ArcGISDynamicMapServiceLayer.
Si riporta il codice XAML



<Grid x:Name="LayoutRoot" Background="White">
        <esri:Map Background="White" HorizontalAlignment="Left" Name="map1" VerticalAlignment="Top"   WrapAround="True" Height="288" Width="400" MouseMove="map1_MouseMove" IsLogoVisible="False">
            <esri:Map.Layers>
                <esri:LayerCollection>
                    <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" InitializationFailed="mappa_InitializationFailed" />
                    <esri:ArcGISDynamicMapServiceLayer Url="http://sampleserver3.arcgisonline.com:80/arcgis/rest/services/Earthquakes/EarthquakesFromLastSevenDays/MapServer" InitializationFailed="mappa_InitializationFailed" />
                </esri:LayerCollection>
            </esri:Map.Layers>
        </esri:Map>
        <StackPanel Height="69" HorizontalAlignment="Left" Margin="12,204,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="376">
            <sdk:Label Height="28" Name="lblScreenCoordinate" Width="364" />
            <sdk:Label Height="28" Name="lblMapCoordinate" Width="366" />
        </StackPanel>
    </Grid>





Mentre qui di seguito riportiamo il codice VB.Net e C# per la gestione dell'evento "InitializationFailed" da notare che per utilizzare la classe “Layer” dobbiamo aggiungere lo spazio dei nomi  “Imports ESRI.ArcGIS.Client”
Qui di seguito si riporta l’esempio per entrambi i linguaggi di programmazione.



VB.Net

Spazio dei nomi
Imports ESRI.ArcGIS.Client

Codice
Private Sub mappa_InitializationFailed(sender As System.Object, e As System.EventArgs)
        Dim layer As Layer = TryCast(sender, Layer)
        If layer.InitializationFailure IsNot Nothing Then
            MessageBox.Show(layer.ID & ":" & layer.InitializationFailure.ToString())
        End If

    End Sub

C#
Spazio dei nomi
using ESRI.ArcGIS.Client;

Codice
  private void mappa_InitializationFailed(object sender, EventArgs e)
        {
            Layer layer = sender as Layer;
            if (layer.InitializationFailure != null)
            {
                MessageBox.Show(layer.ID + ":" + layer.InitializationFailure.ToString());
            }

        }



L’oggetto Layer, permette di gestire le informazioni relative all’elemento che visualizza le informazioni, i due elementi visto nella finestra delle impostazioni.
Se la proprietà “InitializationFailure” è diverso da null, vuol dire che è stata sollevata un eccezione durante l’elaborazione della grafica e dei dati.

Conclusioni
L’articolo ha fornito le basi per utilizzare al meglio alcuni servizi web offerti da Esri per gestire il posizionamento di alcuni elementi (nel nostro caso terremoti) su una determinata carta.







Tutorial 3 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-gis-parte-3-la.html

Tutorial 2 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis-il-controllo.html
Tutorial 1 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis.html

venerdì 25 ottobre 2013

Free software per creare video giochi

Se state cercando un software gratuito per la creazione di video giochi, il programma Stencyl    qui http://www.stencyl.com/  il sito, permette la creazione di video giochi.
Un software bene fatto, che offre la possibilità di creare video giochi per più piattaforme.

        

giovedì 24 ottobre 2013

Oracle paging speed

Qui di seguito si riporta una tecnica di come ottimizzare una query con paginazione.
In particolare il tempo di esecuzione è veloce.
Il parametro 1*20 indica la pagina (1) per il numero dei record (20 per ogni estrapolazione) mentre la parte 1-1 il numero della pagina in cui si trova.




SELECT * FROM
(
    SELECT a.*, rownum r
    FROM
    (
    SELECT * FROM NomeTabella WHERE Campo = 'valore' order by campo desc
     
    ) a
    WHERE rownum < ((1 * 20) + 1 )
)
WHERE r >= (((1-1) * 20) + 1)

mercoledì 23 ottobre 2013

C# Starting and stopping a process

Nel caso che si vuole avviare un processo (esempio internet Explorer) e dopo n secondi chiuderlo, il frammento qui di seguito illustra tale tecnica.

                    Process proc = new Process();

                    proc.StartInfo.FileName = "iexplore.exe";

                    proc.StartInfo.Arguments = "www.sito.it";

                    proc.Start();

                    System.Threading.Thread.Sleep(4000);

                    proc.Kill(); 

martedì 22 ottobre 2013

Tutorial Silverlight Gis parte 3 la posizione

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/tutorial-gis-silverlight/art_gestione-della-posizione_1311.aspx

Introduzione
Continua il nostro tutorial dedicato al mondo GIS, alla cartografia, in particolare con i controlli ArcGis di Esri, utilizzando la tecnologia Silverlight.
In questo nuovo articolo vedremo come rilevare il posizionamento del mouse nella mappa, sia le coordinate del mouse che della mappa.
Possiamo utilizzare il progetto precedente oppure creare un nuovo progetto, si consiglia di creare un nuovo progetto.

Stesura layout
Una volta creato il nuovo progetto o utilizzato uno già  presente trasciniamo nella finestra il controllo map, a seguire inseriamo il controllo StackPanel e due controlli label che riporteranno le indicazioni del nostro muose.
Il tutto come mostrato in figura 1.






Figura 1 – Il posizionamento dei controlli.

Una volta posizionati i controlli dobbiamo assegnare ai controlli label il nome “lblScreenCoordinate” e “lblMapCoordinate” il primo indicherà le informazioni del posizionamento del mouse, il secondo della mappa.
Il codice XAML sarà come riportato qui di seguito.



<Grid x:Name="LayoutRoot" Background="White">
        <esri:Map Background="White" HorizontalAlignment="Left" Name="map1" VerticalAlignment="Top"   WrapAround="True" Height="288" Width="400" MouseMove="map1_MouseMove" IsLogoVisible="False">
            <esri:Map.Layers>
                <esri:LayerCollection>
                    <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
                </esri:LayerCollection>
            </esri:Map.Layers>
        </esri:Map>
        <StackPanel Height="69" HorizontalAlignment="Left" Margin="12,204,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="376">
            <sdk:Label Height="28" Name="lblScreenCoordinate" Width="364" />
            <sdk:Label Height="28" Name="lblMapCoordinate" Width="366" />
        </StackPanel>
    </Grid>



Stesura del codice
Ora non ci resta che scrivere il codice .Net, C# o VB.Net a seconda delle proprie esigenze.
Facciamo click sul controllo “Map” e nella finestra delle proprietà (figura 2) facciamo click sulla voce “Eventi” e selezioniamo la voce “Mouse Move”.


Figura 2 – impostare l’evento Mouse Move.

A questo punto, dopo aver fatto doppio click nella casella relativa all’evento “MouseMove” verrà visualizzata la finestra del codice.
Qui di seguito si riporta il codice per il linguaggio VB.Net e C#, relativo alla gestione del posizionamento.




VB.Net

    Private Sub Map1_MouseMove(sender As System.Object, e As System.Windows.Input.MouseEventArgs) Handles Map1.MouseMove
        If Map1.Extent IsNot Nothing Then
            Dim pointPosizione As System.Windows.Point = e.GetPosition(Map1)
            lblScreenCoordinate.Content = String.Format("Coordinate screen: X = {0}, Y = {1}", pointPosizione.X, pointPosizione.Y)
            Dim mapPoint As ESRI.ArcGIS.Client.Geometry.MapPoint = Map1.ScreenToMap(pointPosizione)
            If Map1.WrapAroundIsActive Then
                mapPoint = TryCast(ESRI.ArcGIS.Client.Geometry.Geometry.NormalizeCentralMeridian(mapPoint), ESRI.ArcGIS.Client.Geometry.MapPoint)
            End If
            lblMapCoordinate.Content = String.Format("Coordinate Mappa: X = {0}, Y = {1}", Math.Round(mapPoint.X, 4), Math.Round(mapPoint.Y, 4))
        End If
    End Sub


C#
private void map1_MouseMove(object sender, MouseEventArgs e)
        {
            if (map1.Extent != null)
            {
                System.Windows.Point pointPosizione = e.GetPosition(map1);
                lblScreenCoordinate.Content = string.Format("Coordinate screen: X = {0}, Y = {1}",
                    pointPosizione.X, pointPosizione.Y);
                ESRI.ArcGIS.Client.Geometry.MapPoint mapPoint = map1.ScreenToMap(pointPosizione);
                if (map1.WrapAroundIsActive)
                    mapPoint = ESRI.ArcGIS.Client.Geometry.Geometry.NormalizeCentralMeridian(mapPoint) as ESRI.ArcGIS.Client.Geometry.MapPoint;
                lblMapCoordinate.Content = string.Format("Coordinate Mappa: X = {0}, Y = {1}",
                    Math.Round(mapPoint.X, 4), Math.Round(mapPoint.Y, 4));
            }
        }







Come si vede dal codice, tramite il metodo GetPosizion otteniemo informazioni relative alla posizione del mouse nella mappa. Mentre il metodo ScreenToMap, la posizione effettiva della mappa, le coordinate.

Ora non ci resta che avviare il nostro programma per vedere il risultato.



Figura 3 – Le coordinate che vengono visualizzate

Conclusioni

L’articolo ha voluto introdurre la gestione dei riferimenti sulla posizione e gestione delle varie aree di una mappa, tecnica che può tornare utile in diversi contesti operativi, e precisamente nel individuare sulla mappa determinate situazioni. 

Tutorial 2 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis-il-controllo.html
Tutorial 1 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis.html