sabato 7 luglio 2012
Da qualche mese sono finalmente MCT e mi appresto a tenere il mio primo corso MOC!
Problema: ho bisogno di installare la macchina virtuale del MOC sul mio portatile; la macchina virtuale è costituita da un vhd "base" e un altro vhd specifico che ha un link a quello base, il tutto "confezionato" per Hyper-V.
Visto che mi sembra una stortura installare Windows Server 2008 sul mio portatile, ho cercato tutte le soluzioni alternative (con grande fatica, visto che come "sistemista" sono proprio zero); in particolare pensavo di aver risolto installando Microsoft Hyper-V 2008 R2 (la versione standalone) in un vhd da cui fare il boot. Ho anche trovato una library per PowerShell per gestire la VM dal prompt dei comandi e riesco ad avviare la VM; il problema è che stasera ho scoperto che la VM si avvia, ma ci si può connettere ad essa solo da remoto!
Qualcuno sa darmi qualche dritta? Devo per forza installare un sistema server sul mio portatile? In particolare chiedo agli altri MCT che seguono UGI: come avete risolto questo problema?
Grazie!
venerdì 21 ottobre 2011
undefined è una variabile globale inizializzata al valore undefined; il problema è che tale variabile è accessibile in read/write.
E' quindi sufficiente sbagliare un confronto con un assegnamento (ed in Università vedo che è uno degli errori più frequenti degli studenti) per ridefinire undefined e influenzare tutto il resto del codice:
var x = 1;
if (undefined = x) ; //do something
x == undefined --> true
1 == undefined --> true
Questo comportamento molto pericoloso è stato finalmente risolto da ECMAScript 5.
mercoledì 5 ottobre 2011
Di questa caratteristica avevo già parlato in un post di qualche anno fa, ma proprio non la digerisco: getMonth è base 0, mentre getDate è base 1.
I miei amici sanno che "rompo" un pò sulla storia della base 0, di cui capisco benissimo l'origine legata agli indirizzi di memoria (visto che sono Ing. Elettronico qualcosa mi dice); però ritengo che un linguaggio di alto livello debba mascherare questo aspetto. Mi sta bene che un ciclo, concetto prettamente informatico, vada su base 0; ma che una funzione di una classe DateTime mi restituisca 1 per dire che siamo a Febbraio fatico a digerirlo. Quando poi penso che la funzione getDate è a base 1 e non c'è coerenza la fatica aumenta.
Questa caratteristica è banale e abbastanza innocua, ma secondo me tradisce l'origine del linguaggio: in Javascript (come in certe versioni del C mi sembra) si può omettere il ; di fine istruzione tra due istruzioni che stanno su due righe diverse oppure nelle istruzioni a fine programma o comunque seguite da una }
I problemi sono due: certe istruzioni vengono interpretate in modo "poco intuitivo" e inotre si crea una dipendenza tra le diverse istruzioni, nel senso che se aggiungo un'istruzione sotto a quella senza ; devo ricordarmi di correggere anche quella sopra. Ecco un esempio di interpretazione che potrebbe confondere:
var y = x + f
(a+b).toString()
viene interpretata come
var y = x + f(a+b).toString();
A questo punto mi chiedo: non sarebbe meglio rendere obbligatorio il ; a fine istruzione ed avere tanti ragionamenti in meno sia per me che per il parser? Con tutto il codice che scrivo non saranno mica proprio i ; finali a farmi venire l'artrite alle mani ... Mi sembra più una caratteristica messa lì da un programmatore che voleva dimostrare quanto è bravo a fare un parser ...
Vero è che basta non ricordarsi di questa cosa e usare sempre il ; per evitare problemi.
Premessa: ritengo che Javascript sia uno dei linguaggi che si DEVONO conoscere al giorno d'oggi se si vuole fare web (e magari anche mobile); il problema è che pur usandolo io mi ci sono sempre trovato a disagio. Parte di ciò è sicuramente dovuto al fatto che non ho mai approfondito per bene il linguaggio, per cui questi giorni ho iniziato la lettura di "Javascript: the Definitive Guide", che mi sembra ben scritto e approfondito. Un'altra parte del disagio è dovuto a caratteristiche del linguaggio che poco si sposano con la mia filosofia (ben poco geek lo so, ma penso che nell'informatica ci sia bisogno sia di geek che di non geek come me ...). Ho deciso di "esplicitare" queste caratteristiche a me antipatiche nella speranza di riuscire a "digerirle emotivamente" e così da ricordarmene e non incappare in errori banali.
Partiamo con la prima: in javascript i numeri non interi sono solo in notazione floating point; anche in ECMAScript 5 non esiste ancora nulla che assomigli ai numeri decimali. Questa secondo me è una grave mancanza, perchè ritengo che anche Javascript sia usato molto più spesso per fare calcoli con importi monetari piuttosto che con valori usati in ambito matematico/scientifico.
Mi sembra assurdo che un linguaggio di alto livello, nell'anno 2011, mi dica che 0.3 - 0.2 != 0.2 - 0.1 (provare per credere in qualsiasi browser!). Questa mi ci vorrà un pò a digerirla ...
giovedì 10 dicembre 2009
Generando un nodo vuoto nel modo seguente
XElement xml = new XElement("PROVA") si ottiene <PROVA />
se invece si specifica la stringa vuota come contenuto:
XElement xml = new XElement("PROVA", String.Empty) si ottiene <PROVA></PROVA>
lunedì 23 novembre 2009
Quando parlo di test unitari e mocking ai clienti che non ne hanno mai fatto uso (nemmeno personale ;-)) mi risulta difficile farne cogliere tutti i pregi; la prossima volta mi ricorderò del progetto di cui mi sto occupando questi giorni (o li dirigerò a questo post).
Si tratta di un programma che deve monitorare il flusso di alcune pratiche richieste agli istituti bancari dall’agenzia delle entrate. La richiesta viene ricevuta tramite PEC ed un sistema (esistente) ne interpreta le informazioni e gestisce tutto l’iter (abbastanza complesso). Il mio programma non deve “far altro” che verificare la coerenza di tutte le informazioni sparse tra database relazionali (quello principale e quello “di confronto” per controlli di quadratura) e file relativi alla richiesta presenti su file system locale o server remoti.
Io non dispongo ancora del sistema o di una sua simulazione (alcune parti sono ancora in fase di realizzazione); di fatto non ho né la terra sotto i piedi (db, cartelle, ecc.) né il cielo sopra la testa (l’interfaccia, che non ci sarà mai perché il mio programma sarà lanciato da riga di comando).
Nonostante questo, grazie ai test unitari e al mocking con cui sostituisco alle mie dipendenze esterne (db, file) degli oggetti “finti”, POSSO lavorare alla mia parte verificandone la logica che implemento e raffinando man mano il mio modello del dominio.
Mi sento un pò come se stessi creando un organo artificiale che poi andrò a impiantare nel paziente curandomi solo delle “cuciture”, perché il funzionamento interno l’avrò già provato senza paziente; molto meglio che dover provare l’organo per la prima volta sul paziente!
mercoledì 21 ottobre 2009
Ecco le prossime conference a cui intendo partecipare. Se qualcuno della mia zona (BS) si vuole aggregare per il viaggio si faccia sentire; per gli altri: ci vediamò là!
22 ottobre (giovedì) - Milano: Windows 7 e Windows Server 2008 R2: The “NEW” Efficiency – Smau
18 novembre (mercoledì) – Dalmine (BG): Community Tour: ALT.NET-web
20 novembre (venerdì) - Bologna: Italian Agile Day
4 dicembre (venerdì) – Firenze: Real Code Day 4.0: costruire applicazioni reali
23 gennaio (sabato) – Milano: V UgiALT.net Conference
giovedì 15 ottobre 2009
In Javascript basta istanziare un nuovo oggetto Date per ottenere la data corrente:
var myDate = new Date();
A questo punto basta fare:
myDate.getDate(); per avere il giorno (1-31): ma perché non chiamarlo getDay?
myDate.getDay(); per avere il giorno della settimana (0 = domenica, visto che non si lavora, 1 = lunedì, ecc.): ma perchè non chiamarlo getDayOfWeek?
myDate.getMonth(); per avere il numero del mese con, OVVIAMENTE, 0 = gennaio, 1 = febbraio, ecc.
A parte il fatto che usare lo zero per numeri di mese e giorno, che già hanno una loro numerazione, mi sembra “da programmatori mai usciti di casa che non hanno mai visto un calendario”; ma se per il giorno sono partiti da 1, perché per il mese sono partiti da 0? Almeno un pò di coerenza …
Scusate lo sfogo; spero qualcuno mi aiuti a capire (hanno progettato ste cose il giorno di Carnevale?), perché a me sembra proprio “poco pensato” (sono un gentiluomo ;-)).
lunedì 12 ottobre 2009
Ci sono anch’io!