-
Ente Certificatore : Microsoft
-
Nome Esame : 070-529 Microsoft .NET Framework 2.0 – Distributed Application Development
-
Costo : 140€
-
Modalità esame : presso un centro Prometric, 40 domande, 125 minuti, domande a risposta singola e multipla
-
Score minimo : 700 su 1000, ogni domanda ha un peso diverso
-
Certificazione conseguita : si (795/1000) -
Microsoft Certified Technology Specialist – .NET Framework 2.0 Distributed Applications Development
-
Livello di difficoltà (1-5) : 4.5
-
Utilità tecnica (1-5) : 3.5
-
Preparazione : 2 mesi circa
-
Ente Certificatore : Microsoft
-
Nome Esame : 070-528 Microsoft .NET Framework 2.0 – Web-Based Client Development
-
Costo : 140€
-
Modalità esame : presso un centro Prometric, 45 domande, 150 minuti, domande a risposta singola e multipla, possono esserci anche domande che richiedono drag&drop
-
Score minimo : 700 su 1000, ogni domanda ha un peso diverso
-
Certificazione conseguita : si (841/1000) -
Microsoft Certified Technology Specialist – .NET Framework 2.0 Web Applications
-
Livello di difficoltà (1-5) : 4
-
Utilità tecnica (1-5) :4
-
Preparazione : da 1 a 2 mesi
-
Ente Certificatore : Microsoft
-
Nome Esame : 070-526 Microsoft .NET Framework 2.0 – Windows-Based Client Development
-
Costo : 140€
-
Modalità esame : presso un centro Prometric, 41 domande, 125 minuti, domande a risposta singola e multipla, possono esserci anche domande che richiedono drag&drop
-
Score minimo : 700 su 1000, ogni domanda ha un peso diverso
-
Certificazione conseguita : si (840/1000) -
Microsoft Certified Technology Specialist – .NET Framework 2.0 Windows Applications
-
Livello di difficoltà (1-5) : 4
-
Utilità tecnica (1-5) :4
-
Preparazione : da 1 a 2 mesi
-
Ente Certificatore : Microsoft
-
Nome Esame : 070-536 Microsoft .NET Framework 2.0 – Application Development Foundation
-
Costo : 140€
-
Modalità esame : presso un centro Prometric, 40 domande, 2h15′, domande a risposta singola e multipla, possono esserci anche domande che richiedono drag&drop
-
Score minimo : 700 su 1000, ogni domanda ha un peso diverso
-
Certificazione conseguita : si (858/1000)
-
Livello di difficoltà (1-5) : 4
-
Utilità tecnica (1-5) :4
-
Annotazioni : è l’esame di base per ogni tipologia di certificazione MCTS per .NET; questo vuol dire che da solo non costituisce certificazione specifica MCTS.
-
Preparazione : da 2 a 4 mesi
MCP me too!
7/04/2008
Da oggi sono anche io un “MCP”.
Ho superato con 858/1000 l’esame 70-536 di Microsoft (TS Microsoft .NET 2.0 – Application Development Foundation).
Sono molto contento, mi sento bene ora. Nell’ultima settimana ero diventato come una trottola, ed ero estremamente nervoso.
Devo dire comunque che nonostante il buon punteggio (in cui non onestamente non speravo), l’esame è stato veramente stressante, e le due ore e un quarto (mi pare…) sono passate in un lampo per rispondere a 40 domande, alcune onestamente abbastanza difficili…
Ora mi aspetta il 70-526 per prendere la prima certificazione (formata appunto da due esami).
Ma di questo ne parleremo in un altro post (spero).
Multicast Delegate con C#
6/04/2008
Nella mia infinita, consapevole ignoranza, ho scoperto l’esistenza dei Multicast Delegate.
In pratica si traduce nella possibilità di sommare o sottrarre l’esecuzione di diversi metodi che siano conformi ad uno stesso delegate.
Questo comporta un’esecuzione in serie, secondo la somma (o la sottrazione) effettuata.
Mi spiego meglio con un esempio (liberamente tratto da questo esempio msdn):
namespace ConsoleApplication1
{
delegate int delegate1(string s);
class Class1
{
public static int Hello(string s)
{
Console.Write(“hello {0} “,s);
return s.Length;
}
public static int World(string s)
{
Console.Write(” world {0} “, s);
return s.Length;
}
public static int CarriageReturn(string s)
{
Console.WriteLine(” {0} “, s);
return s.Length;
}
public Class1()
{
delegate1 d1, d2, d3, d4;
d1 = Hello;
d2 = World;
d3 = CarriageReturn;
d4 = d1 + d2 + d3;
d4(“!”);
Console.ReadLine();
}
}
}
Questo comporta il seguente output :
hello ! world ! !
Quindi abbiamo eseguito i metodi nella sequenza identificata dalla somma. Come dicevo, si possono eseguire anche operazioni di sottrazione, corrispondenti alla fine ad una eliminazione dalla sequenza di esecuzione.
Quindi avremmo potuto scrivere (al posto della riga in rosso)
d4(“!”);
d4 -= d2;
d4(“!”);
e ottenere :
hello ! world ! !
hello ! !
Questo “sommatoria” si può eseguire come dicevo, solo se i metodi usati come addendi sono conformi ad uno stesso delegate. Lo stesso discorso non vale per un eventuale valore di
ritorno del metodo, che non corrisponde ad una “sommatoria dei valori di ritorno” dei metodi addendi.
In pratica se avessi scritto :
int i1 = d4(“!”);
Console.WriteLine(“Return : {0}”, i1);
d4 -= d2;
int i2 = d4(“!”);
Console.WriteLine(“Return : {0}”, i2);
avrei ottenuto come output :
hello ! world ! !
Return : 1
hello ! !
Return : 1
quindi è chiaro che il risultato è relativo solo all’ultimo metodo eseguito.
Questo si evidenzia ancora maggiormente se lanciamo un ILDASM sull’assembly, dove notiamo che i punti in cui eseguiamo il delegate d4, viene composto dalle chiamate in sequenza dei metodi che in quel momento lo compongono.
Il risultato di una sommatoria anche del valore di ritorno, si potrebbe comunque ottenere, se proprio necessario in uno scenario del genere, ricorrendo semplicemente (ad esempio) a delle variabili statiche con visibilità globale per la classe.
Simulare un wordwrap su listbox in C#
5/03/2008
Alcune volte è necessario inserire in una listbox delle righe (negli items) che vanno oltre la larghezza della listbox stessa.
Il controllo in sè non ha le proprietà, ma neanche le responsabilità, per decidere come e quando tagliare le righe inserite.
Ovviamente questo è un esempio e va preso così com’è. Modificatelo poi per il vostro caso specifico.
- innanzitutto la proprietà DrawMode della listbox va posta a OwnerDrawFixed;
- quindi si deve definire un gestore per l’evento DrawItem della stessa listbox, come di seguito indicato :
private void ListBoxcheckuser_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox myListbox = (ListBox)sender;
// disegna il background e definisco il brush
e.DrawBackground();
Brush myBrush = Brushes.Black;
// la stringa da mostrare nella riga
string sTextToDisplay =
myListbox.Items[e.Index].ToString();
// stabilisco la larghezza massima di ogni riga, in caratteri
int iLength = 50;
// se la lunghezza della stringa supera quella visibile, la taglio e
// faccio l'insert delle righe a seguire
if (sTextToDisplay.Length > iLength)
{
// ottengo il primo blocco (per la riga corrente)
string sFirstBlock = sTextToDisplay.Substring(0, iLength - 1);
// e quindi il secondo blocco (il rimanente della riga)
string sSecondBlock = sTextToDisplay.Remove(0, iLength - 1);
// assegno il primo blocco alla riga corrente (che ora
è stata modificata)
myListbox.Items[e.Index] = sFirstBlock; //
questa riga è fondamentale;
// inserisco la nuova riga all'indice successivo
// questo farà scattare nuovamente questo evento, per
la riga in questione
myListbox.Items.Insert(e.Index + 1, sSecondBlock);
// riporto il valore da stampare (disegnare)
sTextToDisplay = sFirstBlock;
}
// disegno il testo per la riga corrente (o quello che ne rimane)
e.Graphics.DrawString(sTextToDisplay, e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
// assegno il focus al rectangle se necessario
e.DrawFocusRectangle();
}
questo ti consente di determinare una lunghezza massima in caratteri del testo che viene inserito nella textbox;
l’unico svantaggio è che non è dinamico in base al font; a questo si può rimediare ragionando in termini di pixel, vedendo di volta in volta la larghezza della stringa da scrivere rispetto alla larghezza della listbox, tramite il metodo :
// ottengo il primo blocco (per la riga corrente)
int iPixel = TextRenderer.MeasureText(myString, myFont).Width;
ma è un’alternativa ancor più faticosa della prima, e poco gestibile (per il fatto che il DrawItem viene rilanciato ad ogni visualizzazione/refresh del controllo/della pagina)…
Pensavo che queste seghe mentali soluzioni geniali fossero solo un ricordo dell’epoca di Delphi…
L’opportunità che avevo già descritto in questo post è stata prolungata fino al 30/06/2008.
Pare la richiesta sia stata considerevole. Stavolta non me la lascio scappare.
Unified C# 3.0 Specification
29/11/2007
Se cercate le specifiche del C# 3.0 e non riuscite a scaricarle da MSDN, vi comunico che il link segnalato un pò in giro per i vari siti (anche della stessa MS) è sbagliato.
Quello corretto è questo.
Per quanto riguarda la mia assenza dal blog, ultimamente ho fatto dei gran botti sono stato molto molto molto impegnato per lavoro, spero di recuperare a breve.
riferimenti : link
Second shot per le certificazioni Microsoft
21/09/2007
Vi segnalo l’iniziativa di Microsoft per le certificazioni tecniche, che consente in caso di figuracce inconvenienti durante l’esame, di avere una seconda chance a prezzo zero.
Valida fino a fine gennaio 2008.
Io ne approfitterò sicuro. Ho in cantiere una MCTS, e di tasca mia 140€(x2 esami=280€) sono una cifra da non buttar via, per cui ben vengano queste iniziative.
Vi riporto il messaggio e il link relativo.
Coloro che prima di sostenere un esame aderiranno all’offerta Second Shot tra il 15 settembre 2007 e il 31 gennaio 2008, potranno ripeterlo gratuitamente se non è andato a buon fine al primo tentativo.
