Fabio Carucci's WebLogs

"...You may say I'm a dreamer, but I'm not the only one..." (Imagine)
posts - 52, comments - 41, trackbacks - 18

My Links

News


Leggi i miei articoli su Programmazione.IT
Sono disponibile ad erogare consulenze Scrivi su "CONTACT" per maggiori informazioni

Contattami se sono online!

This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights. The views expressed on this weblog are mine alone and do not necessarily reflect the views of my employer.








View Fabio Carucci's profile on LinkedIn

Vuoi ricevere i miei post nella tua email? Iscriviti

Add to Technorati Favorites



http://www.csthota.com/blogmap/



Locations of visitors to this page





Tag Cloud

Archives

Post Categories

1 - Pubblicazioni

2 - Conferenze

3 - Links

4 - Blogs

venerdì 5 giugno 2009

Sincronizzare LINQ to SQL

Chi lavora con il suddetto nel titolo sa bene che non non è prevista, di base, la sincronizzazione dello schema del database con il modello; nei giorni passati ho trovato un tool a linea di comando chiamato LINQ to SQL Database Synchronizer comprensivo di sorgenti di cui ho scritto un brevissimo “pezzo” su Programmazione.it.

Il tool può essere interessante.

 

posted @ venerdì 5 giugno 2009 15.26 | Feedback (0) |

martedì 2 dicembre 2008

L’arte del bilanciare: fare coesione e disaccoppiare

Leggete un mio articolo, di 3 puntate, su Programmazione.It relativo a riflessioni e suggerimenti sul bilanciamento tra l’alta coesione e il disaccoppiamento delle classi in fase di design. E siccome mi interessa, fatemi sapere le vostre riflessioni sull’argomento.

posted @ martedì 2 dicembre 2008 13.12 | Feedback (2) | Filed Under [ .NET Framework Visual C# SOA ]

mercoledì 19 novembre 2008

L’arte di lavorare con Microsoft Robotics Studio

image Nel numero 133 di Dicembre di IoProgrammo, attualmente in edicola, c’è un mio articolo introduttivo riguardo la piattaforma di sviluppo Microsoft Robotics Studio.
Buona lettura.

posted @ mercoledì 19 novembre 2008 12.08 | Feedback (0) | Filed Under [ .NET Framework Visual C# SOA ]

lunedì 20 ottobre 2008

L'arte di lavorare con Workflow Foundation - #3

Tempo fa scrissi un articolo dal titolo “Simulare un operatore di call center con Windows Workflow Foundation”.

Da un paio di settimane, a puntate (ben 7), l’articolo è visibile su Programmazione.IT

Buona lettura.

 

posted @ lunedì 20 ottobre 2008 11.53 | Feedback (0) | Filed Under [ .NET Framework Visual C# Workflow Foundation ]

giovedì 25 settembre 2008

[OT] Per tutti i colleghi e amici di Naples (e dintorni)

Ho scoperto l’esistenza di Wikipedia in napoletano, semplicemente fantastica. Riporto la “paggena prencepale”:

http://nap.wikipedia.org

 

 

posted @ giovedì 25 settembre 2008 12.16 | Feedback (0) | Filed Under [ Others ]

domenica 29 giugno 2008

Che Bravi!

Mi ero preparato un po’ di esempi di codice in ausilio ad una giornata di corso sui design patterns, poi però ho pensato che forse, per un fine didattico, la cosa migliore che potessi fare era di “raccontare” ai partecipanti una serie di scenari in cui poter applicare, per ciascuno, uno specifico pattern e lasciare a loro il compito di trovare un modo per risolvere il problema; dopodichè gli avrei presentato il pattern e illustrato il mio esempio di implementazione.

Mi ha meravigliato che, per un buon 70% ci sono sempre andati vicino, segno che i patterns sono soluzioni comunque vicine alla logica umana piuttosto che a quella di un guru dell’IT e, probabilmente, segno che le attività dei labs svolte negli incontri passati sono state utili per far passare le loro “menti” da un approccio procedurale ad uno object oriented.

Bravi…

Technorati Tags: ,,

posted @ domenica 29 giugno 2008 13.48 | Feedback (0) | Filed Under [ Others ]

domenica 22 giugno 2008

Appello ai Signori Clienti

Questo è un appello rivolto a qualsiasi categoria di azienda italiana che fa uso di tecnologia software e si avvale della consulenza di aziende IT per svilupparlo.

Cari Clienti, vi prego, fate capire in modo chiaro quali sono le vostre necessità e, se pensate di sapere esattamente cosa volete, se decidete quindi di scrivere da voi un documento dei requisiti, fatelo pure ma che sia solo un aiuto ulteriore per migliorare la comunicazione fra voi e i vostri consulenti IT; non fatelo solo perchè non avete voglia e tempo di “parlare”, è un grande errore perchè il risultato potrebbe non essere ciò che immaginavate.

Magari accade di rado, ma se i vostri consulenti vi forniscono dei suggerimenti sull’approccio al ciclo di sviluppo del software diversi da quelli che avete sempre utilizzato, fate il favore, rimettevi in gioco, datevi una alternativa, in fondo state pagando qualcuno per aiutarvi.

Ricordatevi che il mondo dell’IT è in continua evoluzione e qualcuno nel mondo cerca di trovare nuove pratiche che aiutino a comprendervi e sviluppare al meglio il sistema di cui avete bisogno, quindi non è detto che quello che avete imparato dieci anni fa sia la perfezione, provate il CAMBIAMENTO!

Questo appello non è a titolo personale, bensì frutto di alcune chiacchierate con persone che partecipano all’erogazione di miei corsi.

Ed è solo l’inizio…

posted @ domenica 22 giugno 2008 11.48 | Feedback (4) | Filed Under [ Others ]

sabato 12 gennaio 2008

[OT] stefanoefabiola.org

Sono amici di un caro vecchio amico, si erano appena sposati ed erano sull'aereo caduto il 4 gennaio scorso in Venezuela.

Il titolo del post corrisponde ad un sito: stefanoefabiola.org, costruito per dare e soprattutto ricevere possibili notizie in merito alla scomparsa dell'aereo, dato che non si trovano rottami. Forse si è inabissato nel punto in cui dovrebbe esser caduto, circa 1200 metri di profondità, o forse è caduto su un'isola. Non lo sappiamo.

State ascoltando o vedendo nei TG vari le novità su questa tragedia? No, ed è per questo che serve tener viva la voce, altrimenti c'è il rischio che vengano abbandonate le ricerche per sempre.

Chissà se qualche amico che legge questo blog, magari dagli USA (visto che ricevo visite anche da là), può in qualche modo parlare con quelli di TerraServer per dare una mano agli amici e ai familiari che cercano queste persone a metter su qualcosa sulla falsa riga di ciò che è stato fatto per Jim Gray un anno fa?

Leggete il sito, grazie a tutti.

posted @ sabato 12 gennaio 2008 19.00 | Feedback (0) | Filed Under [ Others ]

lunedì 15 ottobre 2007

[OT] Bloggare a 86 anni

Bello questo blog, parole semplici ma piene di esperienza. E' il blog di una nonna, e non è nè una battuta nè un insulto, chi lo riempie ogni giorno è una signora di ottantasei anni, della Toscana, una insegnante in pensione, che accudisce il marito malato e si sente sola, o meglio forse si sentiva sola, poi due anni fa ha iniziato a scrivere e, qualche giorno fa, è stata intervistata da Repubblica.

Andate a vedere quanti commenti, peccato che non ha un RSS attivo...forse non sa cos'è. Però è forte lo stesso. Leggetelo.

L'eredità di Nedda

posted @ lunedì 15 ottobre 2007 20.49 | Feedback (1) | Filed Under [ Others ]

L'arte di lavorare con SOA e... WCF - #1

Abbiamo la necessità di implementare un client WCF che sia in grado di effettuare il download automatico dei metadati del servizio remoto e configurare un proxy che sia in grado di stabilire una comunicazione?

Utilizziamo le classi MetadataExchangeClient, MetadataSet, WsdlImporter e ServiceEndpointCollection

MetadataExchangeClient

creiamo un oggetto MetadataExchangeClient nel quale definiamo la URI del servizio remoto e specifichiamo di voler richiedere il documento WSDL di descrizione del servizio

 

 MetadataExchangeClient metadataExchange = new MetadataExchangeClient

 (new Uri("http://localhost:8000/ServizioRemoto/?wsdl"),
 MetadataExchangeClientMode.HttpGet);

 

poi creiamo un oggetto MetadataSet in cui scarichiamo i metadati utilizzando il metodo GetMetadata() della classe MetadataExchangeClient

 

 MetadataSet metadataSet = metadataExchange.GetMetadata();

 

 creiamo un oggetto WsdlImporter dal MetadataSet che contiene il documento WSDL comprensivo degli endpoints

 

 WsdlImporter importer = new WsdlImporter(metadataSet);

 

e inseriamo gli endpoints nell'apposita collection ServiceEndpointCollection mediante il metodo ImportAllEndpoints() della classe WsdlImporter

 ServiceEndpointCollection endpoints = importer.ImportAllEndpoints();

 

 infine, all'interno di un ciclo For..Each configuriamo una variabile proxy per ogni endpoint trovato

 

 foreach (ServiceEndpoint ep in endpoints)

{
 IInterfacciaServizio proxy = new ChannelFactory<IInterfacciaServizio>(ep.Binding, ep.Address).CreateChannel();
 ((IChannel) proxy).Open();
 // codice di elaborazione del servizio
 ((IChannel) proxy).Close();
 

da notare che ChannelFactory è in grado di generare il proxy basandosi in maniera identica a ciò che riflette il contratto del servizio remoto, quindi se un metodo è dichiarato sincrono l'oggetto proxy avrà la stessa identica implementazione del metodo.

 

Technorati Tag: , ,

 

posted @ lunedì 15 ottobre 2007 15.51 | Feedback (0) | Filed Under [ .NET Framework SOA WCF ]

giovedì 5 luglio 2007

Meglio Moss2007 oppure Groove...?

Questo post nasce da una domanda posta da un mio PartnerClienteCollega.

Il titolo è provocatorio, non credo sia possibile metterli a confronto, credo invece più adeguato valutare le esigenze e decidere, conoscendone i vantaggi e i limiti, di adottare l'uno anzichè l'altro.

MOSS 2007 è un ambiente Web-based dotato di un backend scalabile in cui è possibile effettuare ricerche di informazioni, quindi ideale per condividere in azienda;

Groove 2007 è un rich client, installato su ogni pc, per piccoli team, quindi ideale per decentralizzare la collaborazione.

MOSS 2007 permette di sviluppare applicazioni con workflow mediante Windows Workflow Foundation;

Groove 2007 facilita la comunicazione diretta per la maggior parte mediante il peer-to-peer (si, esatto), permette di lavorare disconessi per poi riconnettersi in un secondo momento e sincronizzare il lavoro eseguito offline.

MOSS 2007 va utilizzato da aziende che devono fare attività di searching di dati condivisi, deploy di portali, sviluppo di business forms e processi di workflow;

Groove 2007 va utilizzato da team che hanno bisogno di condividere non un portale ma un banco di lavoro per frequenti scambi di informazioni.

Ora però, anche per rispondere al mio PartnerClienteCollega, vediamo alcuni limiti di Groove rispetto a MOSS.

La fonte dei dati seguenti è un post pubblicato sul blog del team TechNet di Groove: http://blogs.technet.com/groove/default.aspx

Maximum individual file size (in a Files tool or otherwise): 2Gb
Maximum total content size that can be serialized to others during invitation 2Gb
Maximum total File size in a SharePoint Files Tool 1Gb
Maximum total File and Folder count in a SharePoint Files Tool 5,000
Meetings Tool limits text input to:
Meeting title to 256 chars
  Meeting location to 256 chars
  Action item names to 256 chars
  Agenda item names to 256 chars
  Agenda item duration to 24 hours
Account Configuration limits text input to:
Key field to 37 chars
  Account name to 256 chars
  Account name to 256 chars
  Password limits text input to 256 chars
  Calendar subject limits text input to 256 chars
In Forms we only allow 1 attachments field per Form  
Maximum Total File Size in a Folder Sharing workspace 2Gb (can be overriden)
Maximum Total File and Folder count in a Folder Sharing Workspace 5,000 (can be overriden)
Maximum Number of Members in a Workspace 100 (can be overriden)

posted @ giovedì 5 luglio 2007 11.57 | Feedback (9) | Filed Under [ .NET Framework Others Visual C# Workflow Foundation ]

lunedì 14 maggio 2007

L'arte di lavorare con Caching Application Block - #1

Sono passati diverse settimane da quando ho scritto l'ultimo post del mio blog, finalmente ho trovato un attimo di tempo; durante la scrittura di quel post pensavo di mettermi a scrivere una activity che potesse far navigare la user interface di un software, fortunatamente qualcuno mi ha fermato dicendomi che era già stato scritto e in effetti, facendo una breve ricerca ho trovato una serie di link a codice simile a ciò che avevo in mente, quindi lungi da me clonare l'acqua calda.

Giro pagina. Per un mio cliente ho consigliato di implementare (e lo sto facendo), in un prodotto, la gestione della cache e ho scelto l'application block scritto in oggetto del post; in rete ho trovato diversi siti e blog che parlano di ciò, non credo che ai miei lettori possa interessare la "mia" introduzione o la "mia" spiegazione perciò mi limiterò a descrivere dettagli tecnici secondo la mia esperienza in proposito.

Nel già citato application block vi è, tra le altre, una classe denominata ExpirationTask che, una volta istanziata, rappresenta un singolo task per gestire ciò che, inserito in cache, è scaduto.

Se si vuole dare una occhiata all'interno della nostra cache e rimuovere tutti gli elementi scaduti è possibile invocare il metodo SweepExpiredItemsFromCache passandogli come parametro un HashTable di oggetti CacheItems da rimuovere.

Occorre però prima aver marcato come expired gli elementi nella HashTable, quindi MarkAsExpired(HashTable object).

 

posted @ lunedì 14 maggio 2007 0.06 | Feedback (1) |

martedì 27 febbraio 2007

L'arte di lavorare con Workflow Foundation - #2

Molto tempo fa scrissi un articolo sullo User Interface Application Block in cui parlai di grafi navigazionali, dare la possibilità ad un applicativo di "guidare" e mostrare la propria interfaccia utente mediante l'uso di un file xml dotato di un apposito schema in cui potevo scrivere il percorso delle transizione che le singole forms della mia applicazione potevano fare secondo ciò che l'utente sceglieva di volta in volta. Bello.

Mi rendo conto solo ora che ciò è possibile anche con WF.

Posso progettare e implementare una activity che funga da navigatore del mio grafo. Molto bello.

Mi occorrono fondamentalmente tre cose: il punto di partenza, il punto di arrivo e una "memoria storica" dei percorsi precedenti, una sorta di segnalibri; penso quindi, in maniera semplificata, ad una classe NavigationManager di tipo CompositeActivity e a due property TheFirstIs e TheNextIs - la raccolta di segnalibri, poi, non è altro che una collection di Activities. Bellissimo.

Ora penso al #3 di questo post.

 

posted @ martedì 27 febbraio 2007 2.19 | Feedback (2) | Filed Under [ ASP.NET 2.0 Workflow Foundation ]

venerdì 16 febbraio 2007

Mono - una nuova community

A chi nutre interesse per Mono segnalo l'apertura di una nuova community avente nome "Community Asp.NET | Mono", dedicata alla possibile congiunzione dei due ambienti.

A tal proposito chiedo ai miei lettori se possa essere di interesse qualche post su Mono & i suoi derivati.

posted @ venerdì 16 febbraio 2007 11.19 | Feedback (6) | Filed Under [ Mono ]

lunedì 5 febbraio 2007

[OT] Non superare la linea gialla

Non so se è il primo, forse è l'unico o forse no, ma qui potete leggere il blog dei clochard della stazione di Milano Centrale.

Sono voci molto interessanti di una piccolissima parte degli "invisibili" del mondo. Leggetele quando avete un po' di tempo...e quando vi sentite depressi e il mondo vi crolla addosso...starete meglio.

posted @ lunedì 5 febbraio 2007 7.40 | Feedback (0) |

giovedì 1 febbraio 2007

L'arte di lavorare con le WebPart - #15

Lavorando con la funzionalità di esportazione di webpart, e collegandomi al mio precedente post #9, potrebbe capitare il caso in cui un utente provi ad esportare una webpart che contiene una parte dei suoi dati contrassegnati come sensibili; quindi, per riassumere, significa che la webpart ha l'attributo

[Personalizable(PersonalizationScope.User, true)]

nella situazione suddetta possiamo mostrare all'utente un avviso che lo informa di annullare l'operazione perchè non consentita.

L'oggetto che gestisce ciò è il WebPartManager e la property è ExportSensitiveDataWarning.

<asp:WebPartManager ID="myWPM" runat="server" ExportSensitiveDataWarning="Attenzione! impossibile esportare dati sensibili" />

posted @ giovedì 1 febbraio 2007 16.10 | Feedback (2) | Filed Under [ ASP.NET 2.0 WebPart ]

mercoledì 31 gennaio 2007

L'arte di lavorare con le WebPart - #14

Può essere necessario, a volte, inibire ad un utente la possibilità di effettuare il drag'n'drop di una webpart da una zona ad un'altra.

Possiamo farlo mediante la classe WebPartZoneBase e, in particolare, utilizzando la property DragDropEnabled(True|False) che passa il valore alla omonima property della classe WebPartChrome.

posted @ mercoledì 31 gennaio 2007 1.04 | Feedback (5) | Filed Under [ ASP.NET 2.0 WebPart ]

L'arte di lavorare con le WebPart - #13

Uno dei metodi canonici che il WebPart Framework mette a disposizione per disabilitare verbi è quello di utilizzare l'override sul metodo FilterWebPartVerbs e passargli la collection di verbi che si vuole abilitare/disabilitare unitamente alla webpart:

protected override WebPartVerbCollection FilterWebPartVerbs(WebPartVerbCollection verbs, WebPart webPart) { WebPartVerbCollection wpvc = base.FilterWebPartVerbs(verbs, webPart); foreach (WebPartVerb verb in wpvc) { if (verb == this.Zone.EditVerb) verb.Enabled = webPart.AllowEdit; } return wpvc; }

ciò che probabilmente non riusciremo a fare, però, è nascondere il verbo "Edit" per una serie di motivi, primo fra tutti WebPartChrome.ShouldRenderVerb che sembra "ignorare" l' AllowEdit=False soltanto per il verbo "Edit".

Per suggerire un possibile workaround rimando al mio post #3 fermo restando il valido uso del codice suddetto per i restanti verbi.

posted @ mercoledì 31 gennaio 2007 0.42 | Feedback (0) | Filed Under [ ASP.NET 2.0 WebPart ]

martedì 30 gennaio 2007

L'arte di lavorare con le WebPart - #12

Quando creiamo verbi custom potremmo avere la necessità di associare azioni particolari, come ad esempio la funzione di narrazione del testo per utenti disabili, che non prevede form di dialogo o da compilare ma soltanto una attivazione o disattivazione della suddetta funzionalità.

Ebbene, ciò significa che accanto al verbo, nel menù a tendina, dovrebbe comparire anche un simbolo di spunta o un checkbox da selezionare/deselezionare; come fare?

Utilizzando la property WebPartVerb.Checked (true|false) possiamo giungere al nostro obiettivo. Quando il suo valore è true accanto al nome del verbo apparirà una checkbox.

Da ricordare, però, che tale proprietà funziona solo con verbi custom.

posted @ martedì 30 gennaio 2007 2.55 | Feedback (0) | Filed Under [ ASP.NET 2.0 WebPart ]

Recensione: "Essential Windows Workflow Foundation"

Link al libro su Amazon

Scritto a quattro mani da un architetto e da un progettista di WF (Shukla & Schmidt), consiglio la lettura di questo libro a chi desidera acquisire i concetti che sono alla base di quello che considero essere un "framework nel framework".

L'obiettivo del libro non è quello di elencare e disquisire a 360° sui 350 e passa tipi presenti nei tre assemblies che costituiscono il Windows Workflow Foundation, infatti il libro non è un manuale o una reference guide, bensì si pone come spunto di riflessione sui concetti e principi che hanno spinto i due autori a dedicarsi alla progettazione di WF, e lo fa anche con una moltitudine di esempi di codice sparsi nel libro.

Il primo capitolo è dedicato alla descrizione di concetti, quasi astratti, del modello di programmazione di WF;

Nel secondo capitolo si inizia a parlare di activities, cosa sono nel mondo reale, come si implementano nel codice, come si creano workflows composti da activities e come si esegue una applicazione "pilotata" da workflows.

I capitoli 3 e 4 descrivono le features interne delle activities, come si aggiungono activities durante l'esecuzione di un programma, come si gestiscono le exceptions, cosa è la compensation, insomma il ciclo di vita di una activity.

Il capitolo 5 spiega come costruire applicazioni che fungono da hosting per il runtime di WF, mentre nel capitolo 6 si affronta in dettaglio come sia possibile gestire le transazioni in un ambiente come quello di WF.

Infine i rimanenti 2 capitoli danno una idea delle potenzialità di estensione del WF e dei suoi workflows.

A complemento del libro vi sono due appendici molto utili poichè elencano una serie di porzioni di codice relative ai diversi tipi di workflow e alle activity composite.

In conclusione, "Essential Windows Workflow Foundation" è un testo adatto a coloro che vogliono iniziare un percorso di studio su WF ma che hanno necessariamente basi consolidate di .NET e C# 2.0.

 

posted @ martedì 30 gennaio 2007 2.27 | Feedback (0) | Filed Under [ ASP.NET 2.0 Workflow Foundation ]

Powered by: