You are currently browsing the category archive for the ‘Uncategorized’ category.

Studiare le basi della programmazione ad oggetti.

Grazie ad Antonio per questi spunti.

Annunci

Ci sono parecchi framework per il testing di codice javascript in giro ma la maggior parte richiedono un browser per poter eseguire i test.
Dato che ho necessità di testare delle classi che utilizzo per scriptare Photoshop ne ho dovuto cercare uno che potesse funzionare anche senza browser.

La scelta è caduta su jsUnity.
Purtroppo non ho potuto utilizzarlo così com’è ma è stato necessario fare qualche piccola modifica per farlo funzionare correttamente.

In particolare ho dovuto modificare il metodo splitFunction in questo modo:

function splitFunction(fn) {
var fnSource = fn.toSource();
var re = 0;
re = new RegExp();
var regExString = “”;

regExString = “^\\(function\\s*([^\\(\\s]*?)\\s*\\(.*\\)”;
re.compile(regExString);
var tokens = re.exec(fnSource);

if (!tokens) {
throw “Invalid function.”;
}
var fnName = tokens[1].length ? tokens[1] : undefined;

regExString = “\\s?\\{(.*)\\)?\\}\\)?$”;
re.compile(regExString);
var tokens = re.exec(fnSource);
if (!tokens) {
throw “Invalid function.”;
}

var fnBody = tokens[1];
return {
name: fnName,
body: fnBody
};
}

So che la regular expression per estrazione del codice è abbastanza diversa da quella usata nel codice originario ma al momento non ho notato effetti collaterali nella mia modifica.

Dopo averci penato su un po’ di ore sono riuscito a scrivere un paio di test che sfruttano la simulazione di eventi di mouse.

Probabilmente se la nostra applicazione si limitasse ad usare oggetti derivati da QWidget tutto sarebbe andato liscio al primo colpo ma sarebbe stato troppo facile 😀

Tutti il nostro framework si basa infatti su oggetti completamente custom quindi l’approccio documentato non si può seguire completamente. Ho dovuto quindi modificare questo file h per poter gestire anche eventi di tipo QGraphicsSceneMouseEvent.
Per fortuna non è stato difficile: ho aggiunto un altro metodo statico analogo a quello esistente che accetta un QObject anzichè un QWidget e fatto qualche altra modifica per inviare i messaggi di tipo adatto (QGraphicsSceneQUALCOSAEvent).

La parte rognosa è stato convincere il mio oggetto a gestire gli eventi simulati che gli mandavo. L’unico modo che ho trovato è stato di fare implementare il metodo Event() per la classe base da cui derivano i nostri oggetti grafici.

Non sono sicuro che sia il modo corretto di procedere ma la mia conoscenza del framework è al momento troppo superficiale per fare di più. Mi riservo di chedere lumi alla community QT: ho idea che non sono in tanti ad aver provato a scrivere test su questi oggetti.
Per fortuna non mi spaventa percorrere strade (relativamente) nuove! 😉

Oggi ho scoperto che le QT hanno un proprio framework di test.
Dato che i progetti su cui sto lavorando ultimamente si basano proprio su questo framework grafico ho provato a fare qualche prova per poter valutare se vale la pena proporne l’adozione al mio gruppo di lavoro.

Devo dire che è stato abbastanza semplice scrivere un test banale e questo mi ha piacevolmente sorpreso dato che mi aspettavo un setup complesso del progetto.

Per avere un’idea di ciò che c’è da fare si può dare uno sguardo qui dove viene mostrato del codice preso dalla documentazione ufficiale online. Esiste anche una funzionalità analoga al rowtest di MBUnit! 😀

Appena possibile verificherò anche le funzionalità di test più orientate all’interazione con la gui e il supporto ai benchmark (da non trascurare in ambente embedded).

gtest001

Certo… l’integrazione col VS lascia un po’ a desiderare ma sempre meglio di niente! 😉

Voglio provare il framework di google su uno degli esempi presi dalle QT library.

Dopo aver compilato sia il progetto dei framework di test e di mock ho copiato gtestd.lib e gmock.lib in una cartella apposita ($(ProjectDir)lib) definita in “Configuration Properties->Linker->Input->Additional Dependencies”.
Ho poi aggiunto il path della cartella dove ho copiato i file include di gTest e gMock in ($(ProjectDir)lib) definita in “Configuration Properties->C/C++->General->AdditionalIncludeDirectories).

La compilazione falliva a causa di una serie di problemi di linking.
Ho risolto seguendo le indicazioni che ho trovato qui, cambiando Configuration Properties->C/C++->Code Generation->Runtime Library” da
Multi-threaded Debug DLL (/MDd) a Multi-threaded Debug DLL (/MDd).

Domani speriamo di riuscire a fare qualche prova!

Dopo l’addio di (ormai) un mese fa, oggi ho iniziato a lavorare in un nuovo gruppo.
Devo dire che il supporto dei colleghi che si sono occupati del mio cambio d’ufficio (stessa azienda ma differente area ed edificio) è stato encomiabile: dopo meno di 3 ore dalla mia richiesta ero già operativo nel mio nuovo open space.

L’operatività per ora si traduce nel dover leggere un documento sull’architettura del sistema sul quale dovrò mettere le mani ma spero di riuscire al più presto a vedere il codice! 😀

Certo almeno per un po’ dovrò dire addio a C# e affini ( si lavora in C++ ANSI per questioni di portabilità) ma va bene così!

Per ora ho messo da parte il mio pomodoro-anguria per non disturbare i miei (silenziosissimi!) compagni e ho optato per Focus Booster come sostituto temporaneo… datemi il tempo di prendere un po’ più di confidenza prima di farlo ticchettare per tutto il giorno 😀

p.s.

Domi, Aldo e Nicola: grazie ancora e di cuore, è stata per me una grande esperienza passare una discreta parte della mia vita con voi 😀

 

Ho installato l’ultima beta di R# 5.0 e l’ultima versione di Gallio uscita proprio oggi ma l’integrazione col test runner di R# è saltata :(.

L’ho potuta ripristinare ricopiando la parte evidenziata di questo percorso

[…]\JetBrains\ReSharper\v4.5\Bin\Plugins\Gallio\Gallio.ReSharperRunner45.dll

sotto la cartella […]\JetBrains\ReSharper\v5.0\

Un problemino che sto riscontrando è che non sembra più andare l’integrazione con NBehave da R# (ma in TestDFriven va…) 😦

Provate e fatemi sapere (link)

Stavolta è il mio turno di salutare quelli che restano.

Dopo quattro anni ho dovuto lasciare il gruppo con il quale ho vissuto la mia esperienza professionale (finora ;-)) più stimolante e arricchente anche dal punto di vista umano.

Durante questo tempo ho conosciuto grandi professionisti, dei veri esperti nel loro campo; ho avuto modo di lavorare con loro e imparare molto da loro. Grazie ragazzi! Di cuore! … e questo in particolare a quelli che mi hanno dovuto sopportare ogni giorno 😉

Dei quattro quest’ultimo anno è stato probabilmente il più difficile soprattutto per l’aggravarsi della malattia di Eros e per aver dovuto dare l’ultimo saluto al compagno con il quale, su suo invito, avevo cominciato quest’avventura.

E ora… si riparte, cogliendo l’opportunità di capire sempre meglio cosa voglio ottenere in questa vita per me, per la mia famiglia e come dicono dei mie cari amici, per tutti gli esseri.

E sono sempre più convinto che gli  strumenti per fare questo siano essenzialmente 2:
1. la meditazione
2. il confronto con il mondo 🙂

… e mi sto sforzando di usarli entrambi 😀

I miei bookmark

Timeline