|
settembre 2005 Blog Posts
Da qualche sessione, il byte ci stava prendendo gusto. Lo onorava far parte
di questo sistema, sempre attivo, sempre con qualcosa da fare. C'era sempre
qualche processo a livello più o meno basso che aveva bisogno di lui, per
leggere o scrivere dati che sarebbero serviti a qualcun'altro.Il byte, man mano che passava il tempo, aveva sempre più
coscienza di sè. Cominciava a comprendere il proprio ruolo e ad intuirne le
potenzialità. Girava spesso da un punto all'altro della mainboard. Capiva di
più il suo mondo. Trasmettendo con altri bytes aveva sentito parlare di dispositivi di
I/O, quelli in periferia, che...
Questo deve essere un post OT, come da tradizione.
C'è una cosa che non riesco a capire. Mi sta venendo la nausea.Mi
spiegate perchè sempre più spesso vediamo in TV donne disinibite anche nei
momenti più assurdi?E' proprio una cosa che non riesco più a sopportare.
Donne travestite da uomini e uomini trasvestiti da donna per reclamizzare un
alcolico...Donne voluttuose nelle pubblicità di una marca di mobili
antichi...Ragazze che ballano provocanti quando il Treviso segna un
gol...Mi spiegate a cosa serve la "Scossa", che ogni sera mi viene
somministrata su Rai Uno?
Sono a stretto contatto con molte persone che lavorano nel settore:...
Lasciate che racconti una storia.
Prima del Febbraio 2004, lavoravo presso una piccola software-house a
Milano, che sviluppava software per la pubblica amministrazione (PA): ASL,
comuni, scuole, asili e cose del genere. Il titolare era alla continua ricerca di
nuovi programmatori; un giorno arrivò un russo, Oleg, che aveva un curriculum di
tutto rispetto. Laureato in matematica, parecchi anni di esperienza con Oracle e
Visual Basic, etc. etc. Un giorno, mentre lavoravamo, si girò verso di noi, e ci
chiese qual'era la proprietà della Label che serve ad indicare il testo della
Label stessa. Non...
La classe SqlCommand
dispone del metodo Prepare per ottimizzarne l'esecuzione?E che prima di
chiamarlo dobbiamo settare i data-type di tutti i parametri, soprattutto la
proprietà Size per tutti quei parametri che hanno una lunghezza
variabile?
Esiste la keywork checked che serve a controllare gli
overflow nelle espressioni?
Esiste la keyword using che serve (anche) ad
iniziare blocchi di codice al termine dei quali viene fatta automaticamente
la Dispose dell'oggetto indicato al momento della sua
dichiarazione?
Lo strumento più corretto per distribuire un assembly nella GAC di
un cliente non è gacutil, ma Windows
Installer! Perchè? Perchè gacutil non incrementa il reference
counter dell'assembly: gacutil va usato solo in ambiente...
Erano parecchi milioni di cicli di clock che al
byte le cose non andavano bene. Era continuamente sbattuto da una parte
all'altra, correndo e raccogliendo dati ed informazioni che, lo sapeva bene,
servivano e contribuivano al buon funzionamento del sistema.
Era stufo, stanco e stressato. Sempre più spesso gli capitava di
incontrare altri bytes come lui, lungo i bus di sistema e i condotti di
memoria RAM. Gli raccontavano che c'era un posto dove ci si poteva
riposare, dove si faceva vacanza. C'erano posti dove ci si fermava per secondi
interi, a volte anche minuti, senza che nessuno battesse ciglio.
Il byte sognava questi posti, li...
Negli ultimi post abbiamo divagato, ma mi è piaciuto
veramente far vedere a me e agli altri cosa sono riuscito a combinare con il
Setup Project di VS.NET. Credo che siano state un po' OT rispetto
al percorso richiesto dalla certificazione MCAD, però è sempre comodo
sapere qualcosa in più, piuttosto che qualcosa in meno. Con il post di oggi
chiudiamo il discorso dedicato alla creazione dei setup, vedendo un attimo quali
formati di files possiamo generare, che differenze ci sono, come possiamo
distribuirli e così via.
IntroduzioneInnanzitutto, ho riaperto la solution che
abbiamo avuto tra le mani fino a ieri. Clicchiamo...
Nel posto dove lavoro io, una parte del progetto per
un cliente consiste nel realizzare stored-procedure e file batch che poi
una volta in produzione gireranno di notte per consentire agli impiegati di
ritrovarsi nelle applicazioni i dati che vogliono vedere.
Questo pomeriggio mi chiama un collega, mi dice che presso il cliente
XYZ c'è un grosso problema che è irrisolto da 4 giorni. Gli chiedo di
spiegarmi. Mi dice che c'è un file batch, schedulato ogni giorno alle 7:00 del
mattino, che parte ma non si chiude mai. La finestra di MS-DOS rimane aperta,
appesa, non si chiude mai, insomma. Solitamente, i file batch richiamano...
Se le custom dialog preconfezionate non ci soddisfano,
se le launch conditions dovrebbero essere un po' più complesse, se abbiamo la
necessità di creare un qualcosa che non è possibile creare con le
caratteristiche base di Windows Installer, possiamo coprire questo gap
semplicemente sfruttando come si deve il nostro amico framework. Creando una nuova
Class Library e creando
una classe che eredita da System.Configuration.Install.Installer possiamo
piegare ai nostri scopi e fare tutto quello che vogliamo. La cosa magari non è
semplicissima, ma per me è stato talmente tanto divertente ed appagante che
voglio raccontare quello che ho fatto.
Creare una Class Library ed...
Io sono indeciso fra il Performance
Monitor di SQL Server 2000 (volendo ragionarci su, mica tanto strano
non è) e GTO, acronimo di "Game Times Online", che è un
piccolo tool che finisce nella traybar e che serve per uploadare i record delle
piste di Colin Mc Rally 2005.
Qual'è per voi?
powered by IMHO 1.2
Nel mio ultimo post [MCAD.38] abbiamo parlato delle Launch Conditions. Come
ho detto, si tratta di condizioni che devono essere soddisfatte affinchè il
setup possa procedere regolarmente. Concettualmente, possiamo attivare una
Launch Condition secondo 3 modalità: il valore di una chiave nel registry,
la presenza di un file sul FS dell'utente finale e la presenza di un componente
COM installato tramite MSI. Queste 3 modalità attivano o meno la condition, che
fa apparire un messaggio all'utente comunicandogli l'impossibilità di installare
l'applicazione. Opzionalmente, possiamo indicare anche un URL, che l'utente può
visitare per avere maggiori informazioni.
Le possibilità offerte dal Setup Project di...
Un giorno, qualche anno fa, ero da solo in casa, mi
volevo far da mangiare e non ero capace. Preso da indecisione, chiamai mia madre
al telefono, la quale mi disse: "Fai così...fatti un uovo strapazzato, è facile.
Prendi una padella, un uovo, qualche minuto ed è fatta."
Ok, così mi decisi.Presi la padella, presi un uovo dal
frigorifero.Accesi il fornello, misi la padella sopra, ruppi l'uovo e la
misi nella padella.Più o meno 10-11 secondi dopo, l'uovo era completamente
disintegrato, non ce n'era più traccia.
Non ho messo l'olio....che ne so io?
Perchè nessuno me l'ha detto?
Morale: quando spieghiamo qualcosa a
qualcuno,...
Nel post precedente abbiamo visto brevemente come creare un
setup (semplice semplice) per fare il deploy della nostra applicazione. Con
"semplice semplice" intendo dire che facciamo la copia dei files inclusi nel
progetto sul PC dell'utente finale, senza fare nulla di particolare. Abbiamo
visto che le dipendenze non sono più così importanti come nell'era DLL/OCX pre
.NET. Gli assembly devono/possono essere copiati nella
directory dell'applicazione stessa, oppure installati nella GAC se vogliamo che siano condivise fra
più di una applicazione. Facciamo questa operazione aggiungendo banalmente i files nel
nodo Application Folder.
Nel folder User's Desktop e in User's Programs Menu
mettiamo...
Nei (numerosi) post precedenti, abbiamo creato
pian pianino un'applicazione Age, giusto per verificare
passo passo tutte le classi/componenti/funzionalità che ho voluto trattare
per prepararmi all'esame. La mia applicazione sul mio PC è funzionante, e mi
diverte anche usarla - ho provato ad usarla adesso, e grazie alla stored
procedure che abbiamo creato qua, mi dice che il prossimo compleanno è quello di
mio papà!
Quello che voglio fare è creare un setup per rendere distribuibile l'applicazione
anche in giro, magari per mettere il download sul mio sito o...
Questa mattina sono reduce da un bel piatto di
kebab con mio fratello Omar, il mio amico Fabio e la nostra coppia di amici
(neo-sposi) Claudio & Emi. Sto parlando della cena di ieri sera, non della
colazione di stamattina, sia chiaro. Accompagnati da un bel boccale di
birra che non bevevo da un po'.
Questa sera devo pagare l'assicurazione per la mia macchina (sapevo l'importo, ma ho preferito dimenticarlo), ma poi me ne
vado in quel di Miradolo Terme (per cui non lo sapesse, è il paese di Gerry Scotti -
così questa notte potete dormire più tranquilli) con un po' di amici....
public Minister GetEconomyMinistry(){ Minister ministro = World.Europe.Italy.Politics.Government.GetCurrent(TypeMinister.Economy); try { ministro.Brindisi(); } catch (NullReferenceException errore) { MessageBox.Show("Il ministro dell'economia non è stato definito!"); }}
Sono in Italia succedono queste cose.
http://www.repubblica.it/2005/i/sezioni/economia/finanziaria/visi/visi.htmlhttp://www.corriere.it/Primo_Piano/Politica/2005/09_Settembre/22/siniscalco.shtmlhttp://www.lastampa.it/redazione/Interni/siniscalco.asphttp://ilrestodelcarlino.quotidiano.net/art/2005/09/22/5386932
powered by IMHO 1.2
Guardate un po' queste linee di codice in C# (che
chiameremo CodiceSemplice ):
daLettura = new System.Data.SqlClient.SqlDataAdapter("SELECT * FROM TabellaGigante", cnnLocale);DataSet ds = new DataSet();DataTable dt = new DataTable();ds.Tables.Add(dt);this.txtInizio.Text = DateTime.Now.ToString();cnnLocale.Open();daLettura.Fill(ds);cnnLocale.Close();this.txtFine.Text = DateTime.Now.ToString();TimeSpan ts = Convert.ToDateTime(this.txtFine.Text).Subtract(Convert.ToDateTime(this.txtInizio.Text));string msg = String.Format("Per caricare una tabella di {0} records ci ho messo {1} minuti!", ds.Tables[0].Rows.Count.ToString(), ts.ToString());this.textBox1.Text = msg;
Ho scritto una piccola applicazione Windows Forms per testare per bene
il caricamento di un DataSet da un sorgente dati come SQL Server. Ho letto
infatti alcune cose interessanti sulla property
EnforceConstraints del DataSet e sui metodi
BeginLoadData e EndLoadData
della classe DataTable. Ho voluto provare come si comportano, e ho ottenuto qualche
risultato.
Eseguiamo il codice, quanto tempo ci
metto? Il codice sopra
dichiara un SqlDataAdapter, un DataSet e una DataTable. In breve, popolo un DataSet
con una sola DataTable usando...
Stavo leggendo questo post sul blog di MSDN che parla del famigerato LINQ. Dopo aver
descritto e aver fatto esempi sulla sintassi del C# 3.0, fa una serie di
considerazioni: Why I like it, Why I do not like it. C'è una frase che mi ha
colpito e con la quale sono assolutamente d'accordo.
"I think that this might be used
in small projects but on large data-driven application it'll rarely be used.
People traditionally have separate data-tier with stored procedure and that
works out really well both in terms of performance, maintainability and
security"
Sono d'accordo. LINQ a me francamente sembra la solita...
Abbiamo parlato di caspol.exe, di sn.exe e di
gacutil.exe. Un altro tool incluso in .NET è ngen.exe.
Quest'ultimo permette di compilare un assembly in codice nativo, allo scopo di
(poterne) migliorarne le performance durante la sua esecuzione. Normalmente,
come ben sappiamo, tutte le volte che generiamo un assembly con .NET, il file
EXE o la DLL sono scritti in IL (intermediate
language), il quale viene a sua volta tradotto in codice x86 tramite il
meccanismo di compilazione JIT (just-in-time).
Quando un assembly viene eseguito,
quindi, il framework deve intervenire, per compilarlo e finalmente eseguirlo.
Ovviamente, le prestazioni potrebbero risentirne, dato...
Più di una volta avrete sentito della famigerata Global Assembly Cache, per gli amici
GAC. Di cosa si tratta? La GAC è una
sorta di raccoglitore di tutti gli assembly che noi vogliamo condividere
tra più di un'applicazione. Lo scopo della GAC è proprio questo: se noi
sviluppiamo un assembly DLL contenente classi che noi vogliamo utilizzare in diverse
applicazioni .NET, possiamo semplicemente installare questo assembly nella GAC e
il gioco è fatto. Per poter installare un assembly nella GAC, occorre innanzittutto firmarlo con uno strong
name
...
Voi mi conoscete da poco, ma ogni anno nella serata di
Miss Italia sono lì, bello pronto per aggiornare l'home-page del mio
sito , per salutare la neo-eletta. Credo di essere il sito italiano
più veloce nel pubblicare la notizia, dato che quando ci sono tre finaliste io
sono già pronto, con 3 home-page diverse a seconda di chi poi vincerà davvero.
Quest'anno ho fatto esattamente la stessa cosa, impastato davanti alla TV.Complimenti alla nuova Miss Italia,
allora, la bella piemontese Edelfa Chiara Masciotta, per aver conquistato il
tanto agognato scettro della più bella d'Italia. Sei tutti noi!!!
powered by IMHO 1.2
Dopo aver parlato, poco tempo fa, di caspol.exe e di come .NET implementa alcune
logiche di sicurezza, voglio descrivere un attimo una cosa che mi ha fatto
perdere parecchio tempo per evidente ignoranza della questione. Ovvero (può
sembrare
banale), come revocare permessi ad un'applicazione.
Lasciatemi descrivere lo scenario in cui voglio ambientare la mia
spiegazione. Supponiamo di prendere la nostra applicazione
ReadRegistry che abbiamo creato a suo tempo e di farla girare da una qualsiasi directory
del nostro PC. Abbiamo detto che trattandosi di un EXE eseguito da un disco
locale, questo assembly gira nella My_Computer_Zone. In questo
caso, quindi, l'assembly...
Circa 11 anni fa, eravamo più o meno nell'inverno del 1994, capitò una cosa straordinaria.
C'erano dei genitori che come lavoro spesso facevano anche i turni di notte e tornavano a casa la mattina stanchi e stra-cotti. Il papà e la mamma in questione avevano due figlie: Antonella, la più grande, e Sabrina. Quest'ultima, la più piccola, non aveva neanche un anno. Il lavoro occupava molto del loro tempo, ovviamente. Così, decisero di chiedere aiuto a qualche amica, a qualcuno che avrebbe potuto aiutarli, che avrebbe potuto occuparsi della loro figlia più piccola quando erano al lavoro, quando non c'erano, quando dormivano mentre Sabrina doveva svegliarsi o mangiare, oppure bisogna cambiarle il pannolino...
Dopo aver visto caspol.exe nel post [MCAD.31] di ieri, ho trovato utile passare direttamente
a vedere gli strong names e la relativa l'utility sn.exe. Questa volta ho utilizzato come spunto questo articolo su codeproject.com , che spiega a cosa
servono gli strong names, come si fa a firmare (sign) un assemby con
uno strong name e quali scopi pratici ha.
A cosa serve uno strong name? Versioning e
AuthenticationLo risposta è già nel titolo di questo paragrafo.
Uno strong name è un meccanismo tramite il
quale vengono firmati gli assembly....
Sono ansioso di vincere il secondo premio "Miglior
fumatore!" assegnatomi da Lorenzo!!! A nessun byte è stato fatto del male
durante la stesura del racconto!!!
Quando l'operatore arrivò in ufficio, era ancora mattina presto. Nel grande
open-space non c'era ancora nessuno, sarebbero arrivati tutti nell'arco della
mezz'ora successiva. Si sedette davanti al suo PC, assonnato ma ansioso di
mettersi al lavoro: voleva debuggare per bene quella stored-procedure
che ultimamente, dopo le modifiche alla struttura della database di un
suo collega, gli aveva dato più di un problema. Accese il PC e se ne andò a
prendere un caffè alla macchinetta.
Un attimo prima: nulla. Un...
Nel post di ieri ho fatto una breve panoramica sulle utility
della command-line di .NET. Preso dal panico dalla mia ignoranza in fatto di
security, e spinto anche dal fatto che ho incontrato diverse domande
sull'utility caspol.exe, ho
deciso di cominciare da quest'ultima. Ho sfogliato e stampato le pagine su MSDN dedicate a questo tool
,
e ho letto un articolo su www.15seconds.com che illustra in breve come funziona il nuovo
modello di security implementato da .NET.
In cosa consiste? Come funziona la nuova security...
Innanzitutto tranquilizzo tutti quanti su una cosa: il
mio IMHO ha
ripreso a funzionare. L'ho semplicemente reinstallato e adesso posso nuovamente
usare il Code Snippet Editor e posso selezionare le categorie,
elementi dell'IDE che venerdì pomeriggio mi avevano abbandonato. Ringrazio Andrea per
avermi contattato per aiutarmi a risolvere il problema: ho provato a
rispondergli, ma l'euforia pre-Ligabue ha fatto passare IMHO in secondo piano.
Torniamo a noi. Lorenzo ha (come al solito) ragione: una
certa parte dell'esame 70-316 che mi sto preparando ad affrontare prende in
considerazione le utility .NET dalla command-line. Utility che permettono di
lavorare sulla GAC, sulle impostazioni di...
E' stata una serata davvero particolare. Ad un'ora
dall'inizio si respirava un'aria di normalità, di tranquillità, come se nulla di
particolare dovesse succedere. Invece, man mano che i minuti passavano, l'attesa
si faceva febbrile, ansiosa e l'ansia di sentir esplodere la musica diventata
palpabile.
Ma quando dai megaschermi di Campo Volo è apparsa una Terra ruotante e la
scritta "Voi siete Qui!!" puntata su Reggio Emilia, soltanto allora, il primo
grido si è levato dai 160.000. E quando Liga ha esordito dicendo:
<cit author="Ligabue" datetime="2005-09-10
21:10" precision="85%">Ma allora non è una balla, c'era qualcuno che
diceva che non ci sareste stati, questa sera....
Avrei voluto postare questo mio ennesimo OT usando il mitico IMHO (leggesi 'aimo' o 'imo'? - io preferisco quest'ultimo!), però, chissà perchè, nella finestra per editare il post non vedo più la barra laterale a destra. Quindi, non posso selezionare la categoria e, nel caso dei post dedicati a MCAD, non posso attivare l'editor di codice C#. Mah, chissà cosa diavolo è successo al mio IMHO, proverò a reinstallarlo....
Questo weekend potrebbe riservare qualche sorpresa: domani vado a godermi il concerto di Ligabue a Reggio Emilia (www.campovolo.com), insieme ad altre 160mila altre persone. Purtroppo, in mezzo a queste 160mila, io sarò...
Facendo qualche test con i software Boson, mi è capitata qualche
domanda relativa all'IDE di Visual Studio: come configurare la tal opzione, come
attivare questo o quell'altro, a che serve la finestra Locals,
e così via. Non ho proprio la più pallida idea se poi all'esame ci saranno
domande di questo tipo, ma io mi sono fatto un giro comunque dentro l'IDE e un
po' su MSDN, per vedere di trovare pagine Web dedicate a questo argomento.
In questo post quindi non scriverò codice C#, ma farò una rapida carrellata
sull'ambiente di programmazione Visual Studio .NET.
Debugging in Visual Basic .NETHo trovato...
Oggi giorno, alla mia veneranda età, ci sono solo due
grandi tipologie di videogiochi che mi appassionano ancora: tutto quello che
riguarda Star Wars (mitico e veramente tanto divertente l'ultimo LEGO Star Wars) e la grande serie dedicata al più grande pilota di
rally di sempre: Colin Mc Rae Rally. Di quest'ultimo in particolare ho
acquistato nel corso degli anni tutte le versioni, dalla 1, passando per la 2.0,
la 3.0, la 4.0, fino ad arrivare alla 2005. E' già in cantiere la 2006, per
l'anno prossimo. SLURP
Beh, insomma, questa sera ho vinto il campionato del mondo di Colin Mc...
Quando sono arrivato a casa, l'orologio batteva
le 3:10, 5 minuti prima del tempo previsto. Il tempo per partire dagli
ananas (da qualche parte lungo Viale Fulvio Testi),
accompagnare i miei "passeggeri" (Davide, Simone e Carmine) e via veloce a
casetta. Gran serata, divertente, spassosa ed interessante. Traffico, zero. Una
bella mangiata di pizzoccheri (mi sono quasi mangiato
tre piatti), preparati dall'unico programmatore-cuoco .NET della Valtellina e
del Nord Italia . La serata è passata veloce veloce, tra un piatto di
affettati e gli innumerevoli aneddoti di Lorenzo. Io sono rimasto veramente
molto contento di aver conosciuto di persona Eleonora (alias Zephiross)...
Nel post [MCAD.26] abbiamo visto come creare un SqlCommand per
eseguire operazioni sul nostro database. Nel caso specifico, in quel post il
SqlCommand è stato definito per eseguire una INSERT INTO (per
aggiungere records alla tabella ListBirthdays) e una TRUNCATE
TABLE (per svuotare la tabella ListBirthdays prima di popolarla).
Ieri sera mi sono divertito a
guardare meglio il SqlCommand, soprattutto nell'ottica di richiamare una
stored-procedure che ritorni al chiamante uno o più parametri di
output
...
L'argomento ADO.NET porta via un sacco di tempo e
spazio, per questo motivo preferisco aprire una piccola parentesi sulle classi
Debug e Trace. A cosa servono? Dove vengono
utilizzate?
Cominciamo con la prima: la classe Debug permette di
inserire linee di codice per visualizzare (più avanti vedremo meglio nel
dettaglio cosa si intende) alcune informazioni che possono essere utili per
debuggare la nostra applicazione. La prima cosa da sapere è che tutte le
linee di codice che utilizzano la classe Debug vengono
semplicemente ignorate quando compiliamo la nostra applicazione in modalità
Release. Mi spiego meglio, perchè credo che sia una cosa che...
Siete tutti rientrati al lavoro? Ho visto una Milano
pian piano sempre più popolosa e sempre più animata: di solito la misuro con la
quantità di gente sui vagoni della metro. Il mio viaggio (San Donato -->
Duomo --> Villa S.G.) dura un bel po': aprofitto del tempo a disposizione per
finire di leggere "Harry Potter e l'Ordine della Fenice", qualche "pezzo"
di libro su .NET e un documento Word che mi sono scritto per riassumere in modo
molto ma molto conciso tutti i miei post su [MCAD.xyz]: nomi di classi, etc.
etc.
Questa sera, se tutto fila liscio, andrò a...
|