Vala toys for gEdit

Finalmente un nuovo rilascio di vala toys for gEdit che matura fino ad una insapettata vers. 0.4.0 0.4.1.

Le novità sono diverse, ma soprattutto c’è da salutare gnome-build framework che ormai incluso come dipendenza privata di Anjuta non era più una libreria utilizzabile.

Comunque l’annuncio completo al solito si puo’ trovare qui: http://groups.google.com/group/vtg-dev/browse_thread/thread/47776ed9b284a7d1

Inoltre è stata una gradita sorpresa che “solo” dopo poco tempo dalla pubblicazione già sono arrivati i primi downloads: qualcuno oltre a me sta usando vtg 😉

vtg googlecode downloads
vtg googlecode downloads

aggiornamento: ho appena rilasciato una bug fix release la 0.4.1 poiché a causa di un cambiamento dell’ultimo minuto vtg 0.4.0 andava in deadlock nel thread che eseguiva il parsing freezando del tutto anche gEdit!

Garbage collection e programmazione ad eventi: the hard way!

Attenzione, post ad alto delirio computeresco!

Prendiamo un linguaggio garbage collected tipo il C#…. fatto? Fatto!

Ora creiamo una collection di oggetti che per nostra sfortuna devono avere un riferimento al padre… fatto? Fatto!

La memoriziamo nel padre stesso (un bel riferimento circolare insomma)… fatto? Fatto!

Ora creiamo un nuovo event handler e gestiamo una qualche operazione, su un oggetto membro, tenendo traccia dell’avvenuta esecuzione… fatto? Fatto?

Creiamo una nuova collection ma che si riferisce agli stessi oggetti e ripetiamo il riferimento circolare… fatto? Fatto!

Impazziamo per un’intera giornata cercando di risolvere un problema che ha dell’assurdo: sembra che i riferimenti dell’oggetto membro siano duplicati nonostante il contenitore valido sia ovviamente uno ed uno solo quello di cui abbiamo il riferimento… fatto? FATTO!!!!

Continue reading “Garbage collection e programmazione ad eventi: the hard way!”

Naturali o surrogati?

Cercando informazioni su un problema avuto con NHibernate al lavoro, mi sono imbatutto nel più classico dei quesiti sul design di tabelle in un DB relazionale: le chiavi primarie devono essere definite su attributi che identificano univocamente l’entità che la tabella rappresenta “naturali” oppure possono essere il classico id automatico “surrogati”?

Ovviamente confrontare questi approcci ha un senso solo se la chiave “naturale” è una chiave composta da più campi e quindi più difficile da gestire rispetto all’equivalente “surrogato” che è sempre un singolo numero.
Non molti giorni fa avevo avuto una discussione proprio con Alessandro sullo stesso tema, quindi oggi ho deciso di approfondire un po’ la questione.

Il risultato come in tutte le cose non è una regola ferrea da seguire e come al solito ci sono fazioni che si scannano senza alcun senso proprio sull’argomento.

Sulla base dei commenti (n.b. commenti) di questo articolo Composite keys are evil e dell’autorità di chi ha scritto quest’altro primary keyvil mi sono fatto una prima idea sui pro e contro.

Le chiavi surrogate non hanno una “funzione descrittiva” dell’entità e ciò è male molto male, sono solo un espediente tecnico per rendere più facile (e sembra di molto) la vita di chi utilizza ORM tipo [N]Hibernate. I “surrogati” hanno un qualche vantaggio in prestazioni che però è tutto da verificare dato che per filtrare un qualsiasi dato in una query si è quasi sempre costretti ad eseguire join ulteriori.
E’ praticamente impossibile sostituire “logicamente” una chiave “naturale” con una “surrogata” pena bug difficili da tracciare ed una base dati “più fragile”, quindi alla fine, anche se non come chiave primaria, sarà sempre necessario definire la chiave “naturale” e probabilmente anche con l’attributo “unique”.

Ho quindi l’impressione che sia “giusto” ragionare sempre in termini di chiavi “naturali” e che sia invece “pratico” affrontare e risolvere alcuni problemi tecnici grazie all’utilizzo dei “surrogati”.

Rimane ora il dubbio: primary keys “surrogate” ed indici univoci “naturali” o viceversa?

Oppure niente “surrogati” in attesa che i vendor di RDBMS e che i vari ORM sistemino le loro magagne tecniche?

P.S.
Per quanto riguarda NHibernate gestire chiavi composite “naturali” mi è costato solo un’oretta per scrivere un paio di classi ed implementare due metodi, so che sono all’inizio, ma mi sto ancora chiedendo: qual’è la difficoltà nell’utilizzo di ORM e chiavi composite? Forse arriverà andando avanti…

Io l’avevo Vista!

Sono passati ben 9 giorni dal mio ultimo post e tutto sembrava andare per il meglio. Avevo appena installato windows Vista, mosso i primi passi nel fantastico mondo di Aero Glass, ma al momento dell’utilizzo serio e sul campo il sogno è magicamente svanito.

Non funziona nulla, nada, nothing!

E non mi sto riferendo a software vecchio ed obsoleto come Visual Basic 6! Ma a Visual Studio 2005 o Microsoft SQL Server 2005. Anche se installati da amministratore non funzionano, danno continuamente errori e problemi di accesso al registro. Il server web integrato in Visual Studio dà praticamente picche dopo pochi secondi dall’avvio e si ha la sensazione di un sistema fragile ed ancora immaturo. Non meraviglia il fatto che per l’ambiente di sviluppo il 6 Marzo sia già uscita una nuova service pack e proprio specifica per Vista!

Scordatevi quindi di usare Vista come utente normale poichè sarete trattati proprio da “unprivileged” user: a pesci in faccia!

Un ultimo consiglio, giusto per essere anche un po’ costruttivi: se proprio volete farci un giro, installate il vostro software come amministratori supremi ed intoccabili del sistema, disattivate l’U.A.C. (Ufficio Affari Complicati – User Account Control) e per non farvi mancare nulla eseguite i setup cliccando col dx del mouse e selezionando “Esegui come amministratore”.

Io ho installato tutto il mio software partendo da utente non privilegiato ed eseguendo i setup “come amministratore” (del resto sono abituato a fare così da anni con Linux), quindi senza appartenere effettivamente al gruppo Administrators e con l’UAC attivo. Il risultato è stato un obrobrio con il registro mezzo sputtanato che alla fine mi ha costretto ad una bella formattazione e reinstallazione di Windows XP.

L’unica cosa che mi consola è che non sono solo:

Non voglio essere definitivo e come molti aspetterò o la Service Pack 1, oppure di avere un po’ di tempo per ritentare un’installazione come SUPERAMMINISTRATOREGLOBALEDELMONDOINTERO, ma per ora basta dato che non è Microsoft a pagarmi lo stipendio.

P.S.
E’ ovvio che i problemi non sono imputabili a Vista per se, ma al software che non è proprio “Vista ready”, ma alla fine il risultato è lo stesso: un computer con software Microsoft totalmente inutilizzabile…

Finestre con Vista

Dopo due giorni di tricchete e tracchete nel mio nuovo portatile ho installato Uindouvs Vista con tutto il pane e companatico che mi serve per lavorare.

Le prime impressioni:

  • Positivo tutto il tram tram di lavorare senza privilegi, come utente normale (meglio tardi che mai…)
  • Positiva ma insufficiente l’integrazione della finestra di dialogo per passare ai privilegi di amministratore
  • Caruccio aero ed i nuovi effetti
  • Utile la casella di ricerca in “start”

Tuttavia proprio nella gestione dell’utente senza privilegi ho riscontrato diverse carenze…
Manca e spero sia rilasciata a stretto giro di aggiornamento la gestione del “portachiavi” alla Mac OS X o Gnome o KDE. Giuro che ho digitato cosi’ tante volte la password dell’amministratore che ormai per decifrarla basta vedere quali sono i tasti consumati!

Infine, come in tutte le installazioni di un nuovo s.o. targato Microsoft, mi diverto a scoprire se si sono accorti che la finestra di dialogo del installa/rimuovi font viene direttamente da windows 3.1. Ebbene siori e siore eccola in tutto il suo splendore:

Vista add/remove fonts from the outer space

Dopo 22 anni dall’uscita del primo windows la Microsoft batte l’ennesimo primato: la prima finestra “fossile” mai inclusa in un sistema operativo!

Concludendo: bene la base l’avete fatta, ora dovete solo pareggiare i conti con la concorrenza… avete tutto l’anno davanti a voi per rilasciare patch ed aggiungere qualche funzionalità che vi è proprio sfuggita.

Non pensavate mica di incantarmi solo con qualche ombreggiatura e animazione 3D fatta con aero vero?!?!

La storia degli sfigati ed del gambero

Sono ancora al lavoro, ma oggi ho (abbiamo) sbottato!

Dopo mesi e mesi di test, chiamate alla Microsoft, litigi coi clienti e figuracce con i distributori, a causa di un’infinità di problemi (memory leak) con il Microsoft Compact Framework 2.0 per Windows Mobile, sconfitti e sconsolati decidiamo di fare il backporting ti tutte le modifiche fatte al nostro software (da marzo ad oggi) e tornare al Compact Framework 1.1.

Fino a ieri tutto sembrava funzionare a dovere, ma oggi è apparso uno strano errore (codice 0xC0000005 Access Violation)… una mattinata e quasi un pomeriggio intero di debug, prove, controprove, nulla da fare….

Poi un fulmine al ciel sereno da ieri ad oggi l’unica cosa che avevamo cambiato (anzi l’ambiente di sviluppo aveva deciso di cambiare al posto nostro) era l’engine SQL CE 2.0, che dalla versione 2.0.4415 era stato aggiornato alla 2.0.7109…

Reinstalliamo le VECCHIA versione e magicamente tutto torna a funzionare….

Ora non mi rimane che abituarmi all’idea che il mondo va cosi’:

Compact Framework 1.0 -> 1.1 -> 1.1 fino al service pack 3 -> Compact Framework 2.0 -> fino al service pack 1

Noi andiamo cosi’

Compact Framework 1.1 -> 1.1 fino al service pack 3 -> Compact Framework 2.0 -> fino al service pack 1 -> (si retrocede!) Compact Framework 1.1 sp3

Il mondo continua in questo modo:

Sql CE 1.0 -> 1.1 -> 2.0.4415.0,1,2,3,4 -> 2.0.7109 -> SQL CE 3.0

Ma noi no:

? -> 2.0.7109 -> SQL CE 3.0 -> (inizia la retrocessione al….) 2.0.7109 -> 2.0.4415.0 (caduta libera!!!!)

Ovviamente tutte queste cose non emergono mai finchè giochi con i palmari e anche ai seminari, in verità, si giochicchia, ma quando l’applicazione inizia a diventare utile (e quindi piu’ tosta).

Quindi o alla Microsoft giocano con le loro tecnologie oppure ci stanno prendendo in giro!

Frustrazione++

(E dopo 10 mesi che sbattiamo la testa contro il muro sono stato anche troppo politically correct)

Cheggiornata!

Stress + natale = ultimi giorni di lavoro.

Pessima giornata in ufficio, ma ci sto facendo il callo dato che ormai è lo stesso da quasi due settimane… e anche se il piano “lotta contro i mulini a vento” sta avendo l’effetto desiderato, purtroppo la strada è ancora tutta in salita!

Ma tornato a casa che ti trovo? E’ uscito gstreamer plugin bad con il supporto per jack, il che rende inutile Pulse Audio (un po’ d’aria per il mio povero PC) e soprattutto hanno trasmesso l’episodio 10 della terza stagione di Dr. House … e felice anno nuovo!

Ora devo solo trovare il nome in codice della nuova versione del nostro prodotto di punta (rimango sul vago per ovvi motivi) e direi che un omaggio a Splendid ci sta tutto.

Dll hell

Sto cercando di distribuire un’applicazione .Net basata su una decina di dll (Framework di prensentazione, accesso ai dati, componenti UI specializzati), il risultato? Un disastro!
Fra Visual Studio che non aggiorna sempre correttamente le dipendenze di un progetto, che propaga il ‘copia locale’ dalla prima dipendenza fino all’eseguibile senza nemmeno avvertirti ed Install shield Express che è solo buono per un buon espresso, ho dovuto proprio faticare!
Un consiglio sempre valido: coerenza o tutto in ‘copia locale’ o tutto in GAC. Inoltre meglio abbandonare la versione express di Install Shield.
Comunque devo approfondire come effettuare il versioning delle dll e NON credo che Microsoft abbia mantenuto le sue promesse: mi trovo nella stessa situazione di COM, solo che ora a far casino ci si mette pure l’ambiente di sviluppo!

Ultimi ritocchi

Sto terminando con gli ultimi ritocchi la configurazione di questo blog: è l’ora dell’italiano.

Per installare il supporto della lingua italiana basta scaricarlo da http://www.wordpress-it.it/wiki/Main/WordPressInItaliano e seguire più o meno le instruzioni che stanno lì.

Dico più o meno perchè nella (mia) debian il mantainer ha modificato lo schema dei file di configurazione, quindi secondo la sua visione il file da configurare con la costante WPLANG è in  /etc/wordpress/config-<nome host>.php.

Apex: c’ho rinunciato, mannaggia!