L’importanza di chiamarsi… Framework

Ok, spero innanzitutto che Oscar Wilde non si stia troppo lamentando per la citazione a sproposito presente nel titolo :-) Ciò premesso, questo tip appena pubblicato su UGIdotNET mi ha riportato alla mente un episodio che descrissi in questo post: più che sull’argomento in sè ho riflettuto sul fatto che nell’anno 2000, quando mi trovai a dover risolvere il problema citato nel post, spesi svariate giornate per giungere alla soluzione ivi descritta perchè per scoprire l’esistenza di quella modalità di scrittura “non logged” di SQL Server dovetti spulciare la documentazione di SQL Server ed altrettanta ne spulciai per capire come, utilizzando le estensioni custom del suo driver ODBC, trarre vantaggio da quella tecnica.

Per certi versi si trattò di un interessante esercizio speculativo che mi lasciò in dote qualche conoscenza in più in merito ad alcuni internals di SQL Server, ma con il senno di poi penso che i servizi offerti dalla classe SqlBulkCopy sono un ottimo esempio di cosa dovrebbe fare un framework, ossia offrire delle primitive ad un (ragionevole) livello di astrazione che permetta allo sviluppatore di dedicare il proprio tempo alla soluzione della parte “pregiata” (si ok, si scrive “pregiata” ma si legge “domain”…) di un problema potendo far affidamento su un substrato tecnologico che sia in grado di sfruttare la tecnologia/piattaforma sottostante.

In questo senso, nonostante l’ipertrofia che ormai lo caratterizza, penso a quanto valore ci sia nel .NET Framework che ormai diamo per scontato e quanto avrei preferito, mentre nel 2000 dovevo risolvere da solo il problema in oggetto, aver a disposizione SqlBulkCopy potendo dedicare meno tempo al lavoro e magari usare il tempo risparmiato per un Mojito in buona compagnia… :-)

Upload di file in applicazioni ASP.NET MVC: un paio di approfondimenti

Mi riaggancio a questo mio tip pubblicato su UGIdotNET per fare un paio di approfondimenti:

  • Se usate l’attributo accept dell’elemento input e il browser protesta anche se il file che avete referenziato per il download è corretto, probabilmente siete incappati nello stesso bug di jQuery Validate che anche io ho potuto “gustare”: aggiornate la suddetta libreria all’ultima versione (va benissimo quella disponibile su NuGet) e il problema sarà risolto
  • Se il vostro server è a 64 bit e l’application pool è configurato per usare questa word length, ove voleste (come nel mio caso) effettuare l’upload di un file Excel ed effettuarne il parsing con ADO.NET, ricordate che per default il Jet Engine in versione x64 non è installato (e per ottimi motivi, visto che praticamente non è supportato negli scenari server side): potete scaricarlo qui ma attenzione alle release note che trovate nella sezione “Overview” della pagina perchè vi starete addentrando nel classico scenario “it works on my machine”. N.B., non fatevi ingannare dal fatto che sulla vostra devstation, che ovviamente è a 64 bit, funziona tutto alla perfezione mentre fate sviluppo & test: Visual Studio è a 32 bit e così anche Cassini, quindi state “funzionando” a 32 bit e in questo caso il problema non sussiste.

BTW, in realtà dopo qualche utilizzo del codice mostrato nel tip mi sono proprio stufato di non avere un migliore supporto a questa tipologia di scenario e quindi ho realizzato un helper method analogo a quelli disponibili out of the box per i data type supportati nativamente. Diciamo che ho un’idea per il prossimo tip :-)

Guisa1, ovvero “a volte ritornano”

Dopo una lunga (e fastidiosa, almeno per il sottoscritto) assenza, torna un evento organizzato dallo “user group dedicato ai perché oltre che al come”; in una parola: GUISA. Il format è (crediamo) davvero innovativo: né sessioni “full frontal” né “open” né, soprattutto, tecnologia fine a se stessa bensì solo casi reali. Ogni sessione, infatti, presenta per 60 minuti un progetto “real world” del quale verranno mostrate le scelte architetturali e tecnologiche, motivando le suddette scelte; e dopo i 60 minuti… 30 minuti di “open” nel quale metterle in discussione. Insieme. Ma sempre partendo dai requisiti, perché vogliamo parlare e discutere di scelte fatte con la testa e non con la “pancia”.

Questo è il primo giro e per “far bootstrap” le sessioni le abbiamo messe noi, dal prox giro ci sarà la CFP perché parlar di progetti ha tanto più senso quanto più eterogenei essi sono nella loro genesi. Ergo, preparatevi. :-)

Ah, si: c’è anche una (piccola" ?) eccezione (perché ogni buona regola generale ha delle altrettanto buone eccezioni): un “acceso” thread della scorsa settimana avvenuto su Twitter ci ha infatti convinto ad “infilare” in agenda una sessione con formato “open” dedicata ad Ubiquitous Language. Non l’avete vista fino ad ieri? Non mi stupisce: l’ho appena pubblicata. :-)

L’iscrizione è gratuita; per i dettagli logistici vi rimando al post del buon Mauro. L’hashtag dell’evento è #guisa1

Community Days, ma anche Community Dinner

Alla vigilia dell’inizio della bolgia, parliamo della parte veramente importante dell’agenda, ossia… La cena :-) Il baccanale avrà luogo presso l’Hosteria il Castelletto, dotata di 2 assett fondamentali:

  1. Si trova a Peschiera, quindi ad un tiro di schioppo dall’Innovation Campus di Microsoft
  2. Gnocco fritto, salumi, tigelle e Gutturnio

E a ben pensarci, “chissene” del primo punto perché il secondo è già una ragione più che sufficiente. :-) Poichè, oltre ad aver ridefinito il concetto di “limite di presenze permesso dalla omologazione dell’Innovation Campus”, rischiamo di dover fare override anche di quello della “Hosteria”, conviene prenotare. Ecco, insomma: chi volesse partecipare alla cena mi scriva e lo aggiungo alla prenotazione (fissata per domani sera alle 19:30).

Tag di Technorati: ,

Stay hungry, stay foolish.

Today I want to tell you three stories from my life. That's it. No big deal. Just three stories. The first story is about connecting the dots...

Acer Iconia Tab W500

Ho acquistato un Acer Iconia Tab W500: è brutto, grosso e pesante. Ciò nonostante, è più che sufficiente per mostrare che Windows 8 ha un potenziale *altissimo*. “Provare per credere” (cit.)

Tag di Technorati: ,,

AAA: cercasi web developer

Un nostro cliente (una società di servizi con sede operativa a Milano) cerca un web developer freelance per una collborazione di 6 mesi, potenzialmente estendibile (per intenderci: se il progetto va “lungo”, la collaborazione si allunga). Skill richiesti: ASP.NET web forms (v 1.1 e superiori), ADO.NET “Oracle oriented” (ergo, PL-SQL e tutti quei bei “:” nei named parameter), linguaggio VB e Silverlight 3.0.

Se qualcuno fosse interessato, faccia un fischio e lo metto in contatto con il cliente.

UGIdotNET: gli eventi “new wave”

Beh, visto che qualcuno ha già spifferato la notizia ai 4 venti… Parliamone. Nel prossimo mese e mezzo, UGIdotNET organizza una mini serie di 2 workshop “gemelli”, che abbiamo definito “New wave”. Qualche ben informato sospetta che il nome sia dovuto ai miei gusti musicali: lungi dal rinnegarli, in realtà volevamo solo riflettere il fatto che i temi affrontati non sono probabilmente relativi a tecnologie che useremmo “domani”, ma che ben presto potrebbero far parte della nostra vita (lavorativa) quotidiana. E’ il caso (guardando all’evento di settimana prossima) di HTML5: lo standard è ancora in beta e la RFC richiederà ancora tempo, ma l’argomento è sulla bocca di tutti (e, soprattutto, l’attuale beta è già utilizzata da vari siti/portali. E’ anche il caso di Silverlight, del quale offriremo una preview della versione 5 basandoci sulla beta attuale, e poi ci sono i device mobili e una preview di WCF vNext.

L’agenda del 6 giugno, invece, non è ancora completa (BTW, se avete delle proposte non esitate a comunicarcele), ma all’appello hanno già risposto NuGet (io non riuscirei più a farne a meno) e ASP.NET MVC, per il quale abbiamo messo in agenda una sessione di confronto di 2 view engine (per la precisione: Razor e Spark). Probabilmente, approfitterò dell’occasione per riproporre la sessione su Code Contracts/LINQ/Generics che ho erogato durante .NET Campus, che in 45 minuti era risultata un po’ “tirata” ma che in 75 dovrebbe essere maggiormente fruibile. E poi… Vedremo: le idee sono tante ma, ribadisco, anche le vostre proposte sono benvenute.

Le iscrizioni per entrambi gli eventi sono ancora aperte qui e qui.

Algoritmi di ordinamento… A passo di danza

FAN-TAS-TI-CO.

Keep It Simple, Stupid!

Programmers… often take refuge in an understandable, but disastrous, inclination towards complexity and ingenuity in their work. Forbidden to design anything larger than a program, they respond by making that program intricate enough to challenge their professional skill.
[“Principles of Program Design” - Michael A. Jackson]

«maggio»
domlunmarmergiovensab
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678