do more with less

Formazione gratuita grazie a Microsoft e-Learning

Qualcuno di voi già li utilizzerà mentre altri magari non conoscono ancora i servizi di formazione Microsoft. Penso che non faccia male ricordare che Microsoft e-learning offre spesso dei corsi gratuiti che si possono seguire online o offline con l'opportuno tool (scaricabile da qui: E-Learning Offline Player). Comunque, ecco il link ai corsi gratuiti attualmente a catalogo. Volendo potete anche sottoscrivere il feed che vi tiene aggiornati su nuovi corsi e promozioni.

Dimenticavo, se avete Windows Vista e vi trovate in difficoltà ad installare il player, ecco il link ad un mio post in cui trovate come risolvere il problema: E-Learning Offline Player e Windows Vista.

Technorati Tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

How To: Configurare Hyper-V Remote Management

Continua lo sforzo per predisporre il mio server per la virtualizzazione. Anche per la configurazione di Hyper-V ho avuto la fortuna di trovare una serie di utili post che mi hanno aiutato nella configurazione della gestione remota di Hyper-V. Nel mio caso sia il client che il server appartengono ad un gruppo di lavoro e non sono inseriti in alcun dominio. Aggiungo che ho installato Windows Server 2008 Server Core e che quindi la configurazione da riga di comando potrebbe risultare abbastanza ostica senza gli opportuni suggerimenti. Per ridurre al minimo il tempo necessario per questo lungo processo, fatevi quidare dai post di John Howard che trovate qui:

Hyper-V Remote Management - Part 1
Hyper-V Remote Management - Part 2
Hyper-V Remote Management - Part 3
Hyper-V Remote Management - Part 4
Hyper-V Remote Management - Part 5

Ogni sezione segue una parte particolare delle possibili configurazioni e quindi dovrete prima di tutto identificare il vostro scenario e quindi seguire i post relativi alla vostra particolare configurazione. Armatevi di pazienza e buona configurazione.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

How To: da dove iniziare per installare e configurare Windows Server 2008 Server Core

Dopo una lunga meditazione e grazie alle incompatibilità tra il mio Dell Optiplex 755 e VMWare ESX 3.5, ho deciso di installare Windows Server 2008 con Hyper-V per gestire le mie macchine virtuali. Ho quindi pensato di utilizzare una delle nuove possibilità di installazione fornite da Windows Server 2008 e quindi, al fine di ridurre al minimo lo spreco di risorse per il sistema host, ho optato per Windows Server 2008 Server Core. Ok, scelta fatta ma.... da dove inizio? Per fortuna la risposta alla mia domanda è arrivata con una semplice ricerca tramite google. Ho trovato degli screencast di Giorgio Malusardi (risorse in italiano) e un sito molto ben fornito (in inglese). Quindi, per chi volesse cimentarsi in questa cosa, ecco alcuni link utili:

Installare e configurare "Server Core"
Windows Server 2008 Server Core: Remote Management

Windows Server 2008 Tips and Tricks

Buona installazione e preparatevi ad usare la cmd come ai vecchi tempi.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ineta: una nuova sfida per fare community

Qualche giorno fa mi è stato confermato che sostituirò l'amico Lorenzo Barbieri in Ineta come Country Lead per l'Italia. Una nuova sfida per aiutare le community a crescere e per proseguire la via tracciata da chi mi ha preceduto. Quindi non mi resta che rimboccarmi le maniche per apportare un utile contributo all'ecosistema degli User Group italiani cercando di dare continuità al lavoro che Lorenzo ha magnificamente svolto in questi anni. Nei prossimi giorni mi aspettano i primi impegni ufficiali per organizzare e pianificare le attività dei prossimi mesi. Bene ora sapete chi contattare se state pensando di avviare uno User Group che ruoti intorno alla tecnologia .NET, se già ne gestite uno o se avete qualsiasi curiosità su cosa sia Ineta.

Technorati Tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Microsoft SQL 2005: quando un certificato può fare la differenza

Qualche volta la soluzione ad un nostro problema è quella che scartiamo perché la meno probabile. E' quello che è capitato oggi ad un collega che improvvisamente non riusciva più a connettersi al suo SQL Server 2005. Dopo qualche verifica e un pò di tempo perso, Luca ha risolto il suo problema proprio seguendo la strada che aveva inizialmente scartato. Ecco il link al post dove descrive il problema ed indica come risolverlo: SQL Server HowTo: Quando è impossibile connettersi al proprio SQL Server 2005....

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

User Group Television (UGTV): nuova iniziativa rivolta al mondo community

clip_image002

Le iniziative per il mondo community non si fermano mai. Ora è il momento del lancio di ugtv, uno show per dare voce alle community e pensato appositamente per questo. Ora tocca a voi. Se volete essere coinvolti proponendo contenuti o pubblicizando questa iniziativa, ecco cosa potete fare:

Video interviste: contattate ugtv per dettagli e linee guida.
How To: demo tecniche per sviluppatori che volete raggiungano le community: inviatele a ugtvidea.
Divulgare: bloggate gli episodi correnti in modo che le vostre community possano trovarli rapidamente.
Incoraggiare: suggerite ai membri della vostra community la possibilità di fare dei video interviste o date evidenza di come facciano attività pro-community.

Partecipate numerosi, occasioni come queste non si possono far scappare !

Technorati Tags: ,,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Settimana della sicurezza in rete: proteggete la vostra identità digitale

Il 7 giugno è iniziata la settimana della sicurezza. Nell'ambito di questa iniziativa, ho avuto il piacere di realizzare un breve video tips su come evitare il furto del proprio account di Windows Live ID. Il video mostra come alcuni siti, approffittando della buona fede degli utenti, catturarino in modo illecito le loro credenziali digitali. Il risultato spesso è la perdita del controllo del proprio account di Windows Live ID che viene utilizzato, per esempio, per fare spamming o altre azioni simili. Il video nasce in seguito alla segnalazione di alcuni utenti che mi hanno chiesto aiuto per tornare in posssesso delle loro credenziali. Se avete 5 minuti, guardate il video, potrebbe esservi utile per non cadere in trappola.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Visual Studio 2008: Internet Explorer 7 e il webserver integrato

In questi giorni ho combattuto con un problema che limitava le capacità di debug, di un'applicazione web, utilizzando il WebServer integrato in Visual Studio 2008. Ho trovato una soluzione ma non sono ancora certo delle cause che hanno portato al malfunzionamento ed al mio successivo workaround. Ecco la descrizione del problema e di come applicare il workaround.

Sistema operativo
Microsoft Windows Vista Business 32bit in inglese

Problema
Lanciando il debug di un'applicazione web da Visual Studio 2008 Team Suite, impostata per utilizzare il web server integrato nell'ambiente di sviluppo, ottenevo il seguente errore: Internet Explorer cannot display the webpage (vedi immagine).

image image

Facendo vari test ho scoperto che:

  • modificando l'url da http://localhost:8088/ in http://127.0.0.1:8088/, la pagina funzionava correttamente e io potevo continuare il debug senza problemi.
  • il problema si presentava anche avviando l'applicazione di configuratione ASP.NET Configuration.
  • utilizzando Firefox il problema non si presentava anche utilizzando l'url http://localhost:8088.

La prima cosa che mi è venuta in mente è stato verificare il file di hosts del mio computer che però ritenevo corretto visto che Firefox eseguiva la risoluzione del nome in ip in modo corretto e che, se usavo IIS, il problema non si presentava anche sotto IE7. Questa convinzione era avvalorata anche dal fatto che, quanto presente nel mio file di hosts, era identica a quella di altri computer in cui il problema non si presentava.

Analizzando le varie possibilità; leggendo un numero spropositato di articoli e post; testando n soluzioni; rompendo le scatole ad amici, evangelist Microsoft, ecc; alla fine ho trovato come risolvere il problema anche se non sono certo che la causa scatenante sia quella che indico qui.

Causa ipotizzata
Presenza del servizio Eset HTTP Server (anche se stoppato) installato con ESET NOD32 Antivirus 3.0.621.0.

Soluzione 1: utente senza diritti amministrativi con Firefox installato
Se non avete diritti amministrativi sul PC che utilizzate ed avete Firefox installato, l'unica soluzione che potete utilizzare per ovviare al problema è impostarle Firefox come browser di default in modo che sia il browser chiamato anche dal webserver integrato in fase di debug. Per farlo utilizzate le opzioni di Firefox per abilitare il controllo del fatto che sia il default browser. Avviate Firefox e quindi confermate la seguente schermata:

image

Soluzione 2: utente con diritti amministrativi e file host con record ::1 localhost
Avviate notepad con diritti amministrativi (Run as administrator). Quindi aprite il file hosts che si trova al seguente indirizzo: C:\Windows\System32\drivers\etc . Il vostro file, salvo che non lo abbiate precedentemente modificato, dovrebba apparire simile a questo:

# Copyright (c) 1993-2006 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost ::1 localhost

Commentate la riga del record ::1 localhost come indicato qui:

# Copyright (c) 1993-2006 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost #::1 localhost

Questo è stato sufficiente, nel mio caso, per risolvere il problema.

Sarò grato a chiunque che riscontrando lo stesso problema o, a parita di configurazione, non riscontrandolo volesse commentare questo post con la sua esperienza diretta in modo da rendere statisticamente più precisa la determinazione della causa che genera il problema qui indicato.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Come faccio ad inserire uno script javascript da una pagina ASP.NET ?

Per registrare uno script da una pagina ASP.NET possono utilizzare il metodo RegisterClientScriptBlock appartenente all'oggetto System.Web.UI.Page.

Viene utilizzato per inserire nella nostra pagina renderizzata uno script lato client che può essere richiamato da un'evento client di uno o più controlli presenti nella pagina. Eccone un semplice esempio:

if (!this.IsClientScriptBlockRegistered("MsgBox")) { string script = "<script language='JavaScript'>" + "function showMessage(msg){alert(msg);}" + "</script>"; RegisterClientScriptBlock("MsgBox", script); }

Per evitare di registrare più volte lo stesso blocco di codice è possibile utilizzare il metodo

public bool IsClientScriptBlockRegistered(string key);

dove key rappresenta la chiave univoca che identifica lo script nella pagina.

Technorati tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Creare dinamicamente immagini in pagine ASP.NET - caricamento da file

Creando le nostre pagine ASP.NET non possiamo prescindere dalla presenza d'immagini per rendere il look & feel delle nostre web application più accattivante. Normalmente usiamo immagini statiche presenti in una cartella della nostra applicazione. In alcuni casi però questo non è sufficiente a soddisfare le nostre esigenze e ci troviamo quindi a dover caricare dinamicamente le immagini da altre risorse. Le possibilità sono molte ed in questo breve articolo cercherò di illustrarne una tra le più usate: il caricamento da file tramite una pagina aspx di servizio.

Questa tecnica è certamente una delle più usate. Probabilmente i fattori che la fanno risultare la più scelta dipende dal fatto che era una tecnica già praticabile con le tecnologie precedenti e che permette una rapida implementazione senza dover approfondire funzionalità avanzate quali possono essere quelle usate con altre tecniche (vedi HttpHandler).
Come prima cosa creiamo una web form che chiameremo Default.aspx. Rappresenterà la nostra pagina principale, pagina che utilizzeremo per inserire il controllo immagine che visualizzerà l'output fornito dalla pagina di servizio (web form che fornisce le immagini). La pagina creata è la seguente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <head> <title>Caricamento da una pagina aspx</title> <meta content="Microsoft Visual Studio .NET 7.1" name=GENERATOR> <meta content=C# name=CODE_LANGUAGE> <meta content=JavaScript name=vs_defaultClientScript> <meta content=http://schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema> </head> <body> <form id=MainForm method=post runat="server"> <img alt="" src="GetPicture.aspx?Name=MobileAdvice.gif"> </form> </body> </html>

Non abbiamo, in questo caso, bisogno di creare alcuna riga di codice nel file di code behind oltre a quanto generato in automatico da Visual Studio. Come potete notare nella pagina Default.aspx è presente un tag html di tipo img. Vediamo in dettaglio come è stato valorizzato l'attributo src per richiamare la nostra pagina di servizio:

<img alt="" src="GetPicture.aspx?Name=MobileAdvice.gif">

Come potete notare la pagina richiamata si chiama GetPicture.aspx e richiede un parametro Name in query string indicante il nome del file che si intende visualizzare.
Ora non ci resta che preparare la nostra pagina di servizio e chiamarla GetPicture.aspx. Questa pagina non avrà alcuna interfaccia grafica e quindi ne analizzeremo esclusivamente il code behind . La prima cosa da fare è creare una funzione in grado di leggere il file richiesto predisposta anche per gestire le eventuali eccezioni che dovessero verificarsi. Il codice del metodo creato a questo scopo è il seguente:

 

private Bitmap GetImage(string name) { try { Bitmap img = new Bitmap(Server.MapPath("images/" + name)); return img; } catch (Exception ex) { return this.GetErrorImage(ex.Message); } }

All'interno del blocco try è presente la creazione dell'istanza di un oggetto Bitmap utilizzando il costruttore che prevede l'indicazione del file da aprire. Il nome del file viene determinato utilizzando il parametro name fornito al nostro metodo. Qualora questo caricamento generasse un'eccezione, il codice all'interno del blocco catch si preocuperà di chiamare il metodo GetErrorImage che è in grado di generare un'immagine riportante la descrizione dell'errore verificatosi.

 

private Bitmap GetErrorImage(string error) { Bitmap img = new Bitmap(200, 60); Graphics g = Graphics.FromImage(img); g.DrawString(error, new Font("Tahoma", 12, FontStyle.Bold, GraphicsUnit.Pixel), SystemBrushes.Window, new Point(20, 20)); g.Dispose(); return img; }

Le nostre procedure di creazione dell'immagine iniziano al caricamento della pagina, tramite il metodo  Page_Load delegato a gestire tale evento, attivando il processo di creazione dell'immagine richiesta.

 

private void Page_Load(object sender, System.EventArgs e) { if (Request["Name"] != null && Request["Name"] != string.Empty) this.FlushImage(this.GetImage(Request["Name"])); else this.FlushImage(this.GetErrorImage("Nome file non indicato")); }

La prima verifica effettuata in questa funzione è quella di controllare la presenza della variabile Request["Name"] per capire se saremo in grado di avviare il metodo di caricamento dell'immagine. Qualora questa variabile (passata in query string alla nostra pagina) non fosse presente, viene richiamato il metodo di generazione di un'immagine di errore passando come parametro il testo da inserire nel contenuto da renderizzare. In entrambi i casi, l'immagine risultate da uno dei due metodi viene inviata alla funzione FlushImage incaricata di predisporre l'output all'entità richiedente.

private void FlushImage(Bitmap img) { if (img.RawFormat.Equals(ImageFormat.Jpeg)) { Response.ContentType = "image/jpeg"; img.Save(Response.OutputStream, ImageFormat.Jpeg); } else if (img.RawFormat.Equals(ImageFormat.Png)) { Response.ContentType = "image/png"; img.Save(Response.OutputStream, ImageFormat.Png); } else { Response.ContentType = "image/gif"; img.Save(Response.OutputStream, ImageFormat.Gif); } img.Dispose(); Response.End(); }

Questo metodo, dopo aver verificato il corretto formato dell'immagine, imposta il ContentType e l'OutputStream della Response da inviare in risposta alla Request ricevuta.

Come si può notare, con poche righe di codice, siamo in grado di richiamare un'immagine in modo dinamico. Immagine il cui nome potrebbe essere impostato a runtime in base a criteri specifici della nostra web application.

Technorati tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5