Libero professionista a tempo pieno

by Andrea 10 September 2011 04:05

logoEbbene si, da quasi un mese, sono libero professionista a tempo pieno. Una nuova sfida da affrontare.

Sono più di 3 anni che ho la partita iva, ma fino al mese scorso ho sempre lavorato come dipendete. Questo mi ha permesso di aver le spalle sempre coperte e riuscire al tempo stesso a confrontarmi con sempre nuove prove.
L’essere dipendete ha sicurametne molti vantaggi, ma al tempo stesso può essere (a volte) limitante. (per poter tenere un corso (come speaker) dovevo prendermi ferie…per clienti che mi richiedevano la presenza da loro, avevo principalmente solo il sabato…)

Ho scelto di fare un passo importante, di lanciarmi in una nuova sfida, e mettermi totalmente in gioco decidendo di intraprendere questa nuova strada.
Alcune persone mi hanno spinto in questa decisione, altre mi hanno fatto riflettere, specialmente a riguardo del periodo non proprio positivo, e ho tirato le somme.
Per me (e per mia moglie) questo era il momento giusto, ed ora non mi rimane altro che impegnarmi a pieno in questo nuovo obbiettivo e continuare a crederci fino in fondo.

Il tutto sembra esser iniziato proprio nel migliore dei modi Open-mouthed smile

Tags:

+1 | ASP .NET | Pensieri | Generale

Codice e slide della sessione Sviluppare con DotNetNuke. Un framework sul framework

by Andrea 01 June 2011 05:56
Ecco pronti al download le slide ed il codice della sessione Sviluppare con DotNetNuke. Un framework sul framework che ho tenuto al XeDotNet community meeting del 20 Maggio 2011.

Abstract: Sviluppare applicazioni, occupandosi delle sole funzionalità che vuole il cliente, senza doversi occupare anche del codice di infrastruttura può sembrare un'utopia, ma non è così. In questa sessione vedremo come DotNetNuke, che è un CMS (content management system) open source, permetta allo sviluppatore tutto ciò. DotNetNuke può essere visto come un framework sul framework, in grado di fornire allo sviluppatore funzionalità avanzate che permettono di aumentare la produttiva e al contempo di ridurne i tempi di sviluppo.

PS: Nello zip contenente il codice non è presente DotNetNuke. Per il suo donwload rimando al sito di riferimento www.dotnetnuke.com.

PPS: E aggiungo che Speaker Timer ha funzionato alla perfezione! Testato sia con la mia sessione, che con quella di Davide… Android rulez!

Tags: , , ,

ASP .NET | .NET | XeDotNet

XeDotNet community meeting: Programming DotNetNuke

by Andrea 18 May 2011 01:37

Venerdì 20/05/2011 si terrà presso il Novotel di Mestre un community meeting che parlerà totalmente di DotNetNuke. In compagnia di Davide Senatore, terremo 2 sessioni che non si limiteranno a introdurre questo CMS Open-Source, ma bensì faremo vedere le potenzialità che offre, ed i vantaggi che noi sviluppatori possiamo trarre dall'utilizzo di questa piattaforma.

La mia sessione: Sviluppare con DotNetNuke. Un framework sul framework

Sviluppare applicazioni, occupandosi delle sole funzionalità che vuole il cliente, senza doversi occupare anche del codice di infrastruttura può sembrare un'utopia, ma non è così. In questa sessione vedremo come DotNetNuke, che è un CMS (content management system) open source, permetta allo sviluppatore tutto ciò. DotNetNuke può essere visto come un framework sul framework, in grado di fornire allo sviluppatore funzionalità avanzate che permettono di aumentare la produttiva e al contempo di ridurne i tempi di sviluppo.

La sessione di Davide: Fast and Furious DotNetNuke: Web App Development at the speed of light.

DotNetNuke: semplicemente il CMS più diffuso al mondo con più di 6.000.000 di download totali e 600.000 siti in produzione. In questa sessione vedremo come si possa affrontare la sfida di creare web applications utilizzando DNN come piattaforma di sviluppo. Valuteremo come creare moduli, come integrarli all'interno del CMS e come sfuttare le caratteristiche native della piattaforma a nostro vantaggio. Analizzeremo le nuove caratteristiche, l'integrazione con JQuery e Google Analytics, la personalizzabilità estrema e la produttività straordinaria che questa piattaforma mette a disposizione.

Vi aspettiamo numerosi!

Per registrarsi: http://www.xedotnet.org/Home/Meeting/20110520

Tags: , ,

ASP .NET | XeDotNet

Creare un modulo per Orchard

by Andrea 21 April 2011 04:59

Chi già conosce le Aree di ASP.NET MVC non dovrà imparare nulla di nuovo. Creare un modulo per Orchard infatti è la medesima cosa di creare un'Area in un progetto ASP.NET MVC.
(Walkthrough: Organizing an ASP.NET MVC Application using Areas)

Iniziamo utilizzando il tool da command-line Orchard.exe che troviamo nella bin del progetto, avendo precedentemente abilitato il modulo 'Code Generation'.
Modules_projectAll'interno della console digitiamo 'codegen module Dottor.Articles'
in modo da far creare ad Orchard un progetto contenente tutta la struttura per un nuovo modulo, chiamato 'Dottor.Articles', e verrà creato all'interno della cartella Modules.

La struttura del progetto appena creato è molto simile a quella di un'area di ASP.NET MVC. Le cartelle presenti di default hanno dei nomi ben parlanti:

  • Controllers: per i controller che utilizzeremo all'interno del modulo
  • Model: per il model, e la parte di interazione con la base dati
  • Scripts: file javascript specifici del modulo da realizzare
  • Styles: fogli di stile
  • View: conterrà le View, cioè la parte di UI del modulo corrente

Pre prima cosa, personalizziamo il file Module.txt, modificandolo con le informazioni specifiche nel nuovo modulo.

Name: Dottor.Articles
AntiForgery: enabled
Author: Andrea Dottor
Website: http://www.dottor.net
Version: 1.0
OrchardVersion: 1.0
Description: Modulo per la visualizzazione di articoli
Features:
    Dottor.Articles:
        Description: Modulo per la visualizzazione di articoli

Avendo detto che il modulo è un'Area di ASP.NET MVC, lo andiamo subito a specializzare andando a specificare le eventuali regole di routing, creando un file Routes.cs nella root del nostro modulo.
Questo file conterrà una classe Routes che implementerà Orchard.Mvc.Routes.IRouteProvider. In questa classe andremo a specificare le regole di routing per indirizzare gli url verso le corrette action dei nostri controller.
Nel caso di questo modulo, avremmo solamente due url possibili:

  • /Articles -> che visualizzerà la lista di articoli
  • /Articles/{id}/{slug} -> che visualizzerà un preciso articolo

la classe sarà quindi la seguente:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.Mvc.Routes;
using System.Web.Routing;
using System.Web.Mvc;
 
namespace Dottor.Articles
{
    public class Routes : IRouteProvider
    {
        public void GetRoutes(ICollection<RouteDescriptor> routes)
        {
            foreach (var routeDescriptor in GetRoutes())
                routes.Add(routeDescriptor);
        }
 
        public IEnumerable<RouteDescriptor> GetRoutes()
        {
            return new[] {
                new RouteDescriptor {
                    Priority = 5,
                    Route = new Route(
                        "Articles",
                        new RouteValueDictionary {
                            {"area", "Dottor.Articles"},
                            {"controller", "Home"},
                            {"action", "List"}
                        },
                        new RouteValueDictionary(),
                        new RouteValueDictionary {
                            {"area", "Dottor.Articles"}
                        },
                        new MvcRouteHandler())
                },
                new RouteDescriptor {
                    Priority = 5,
                    Route = new Route(
                        "Articles/{id}/{slug}",
                        new RouteValueDictionary {
                            {"area", "Dottor.Articles"},
                            {"controller", "Home"},
                            {"action", "Details"}
                        },
                        new RouteValueDictionary{
                            {"id", "\\d+"}
                        },
                        new RouteValueDictionary {
                            {"area", "Dottor.Articles"}
                        },
                        new MvcRouteHandler())
                }
            };
        }
    }
}

Da questo punto in poi, nulla è diverso dalla normale programmazione ASP.NET MVC

  • Creare un controller HomeController.cs
    • Creare una action List() che ritorna una lista di articoli
    • Creare una action Details(int id, string slug) che ritorna il specifico articolo
  • Crare all'interno della cartella View, una cartella Home
    • Creare all'interno di Home una view List.cshtml che si occupa di renderizzare la lista di articoli, che avranno il link alla pagina di dettaglio
    • Creare all'interno di Home una view Details.cshtml che si occupa di renderizzare il singolo articolo

Modules_enableFinito lo sviluppo del modulo, dalla sezione Modules della dashoboard di Orchard sarà possibile abilitarlo.

Per accedere a questa nuova sezione/modulo, dovremmo (ma non è obbligatorio) creare una nuova voce di menù che ci permetta di accedere con facilità.
Quindi, dalla sezione Navigation della dashboard, aggiungiamo una nuova voce di menù, che abbia come url lo stesso impostato nelle regole di routing (/Articles).

Modules_navigation

Creata la voce di menù, saremo pronti a navigare utilizzando le funzionalità che il nuovo modulo metterà a disposizione.

Alcune considerazioni personali.
Lo sviluppo di un nuovo modulo ha una curva di apprendimento quasi pari a zero per una persona che già conosce ASP.NET MVC, e quindi direi che la cosa è del tutto positiva. Mentre, uno sviluppatore che conosca solo ASP.NET Web Form dovrà faticare un pò per entrare nell'ottica del nuovo pattern, e i tempi inizialmente si potranno dilungare, e anche di molto.

In questo esempio, ho recuperato la lista degli articoli da un database differente da quello utilizzato da Orchard, e quindi nulla di diverso da quello che viene fatto abitualmente.
Uno dei prossimi argomenti che vedremo, sarà il come utilizzare il database di Orchard per salvare tutte le informazioni del modulo, e avere quindi la possibilità di renderlo pubblico (e quindi utilizzabile in qualsiasi intallazione di Orchard).

Per approfondire l'argomento: http://www.orchardproject.net/docs/

Tags: , ,

ASP .NET | .NET | Microsoft

Creare child-theme in Orchard

by Andrea 20 April 2011 03:37

Uno dei vantaggi che ho trovato in Orchard, stà nella possibilità di creare dei child-theme, cioè temi che ereditano da un tema esistente. Questo è un grosso vantaggio in quanto permette di lasciare intatto il tema base, e lavorare nel nuovo tema andando a modificare solamente i file che differiscono.

Il metodo che più mi è piaciuto per realizzare child-theme è quello basato sulla Code Generation di Orchard (Command-Line Code Generation), che è un modulo che si trova nella gallery, e che possiamo tranquillamente utilizzare durante lo sviluppo di nuove funzionalità per questo CMS.

Ma vediamo cosa dobbiamo fare:

  • Abilitare il modulo 'Code Generation' dalla dashboard
  • Avviare l'applicativo Orchard.exe contenuto nella cartella bin del progetto Orchard
  • Nella console che si aprirà inserire la seguente riga:
    codegen theme TestTheme /BasedOn:TheThemeMachine /CreateProject:true

Theme_projectIn questo modo verrà creata una nuova cartella all'interno della cartella Themes, con il nome voluto, in questo caso TestTheme.
Avendo specificato CreateProject:true verrà anche creato un progetto che ci permetterà di aprire ed editare i file del tema direttamente da Visual Studio (immagine qui a destra).
Con BasedOn:TheThemeMachine si specifica di utilizzare un specifico tema, come tema base, dandoci la possibilità di scrivere solamente le view o altri file (fogli di stile, immagini) che differiscono dal tema base (invece che tutti i file).

La soluzione più semplice 'inizialmente' sarà quella di copiare dal tema base i soli file che si vogliono modificare e compiere le customizzazioni volute, velocizzando di gran lunga il processo di creazione del nostro tema.

Dopo aver creato il nuovo tema, uno dei primi file che andremo a modificare sarà Theme.txt, che è il manifest del tema, e contiene tutte le informazioni relative al tema presente in quella precisa cartella, quali autore, descrizione e come visto, il tema base da utilizzare.
Rimuovendo la riga che inizia con BaseTheme, si forzerà l'uso del solo tema corrente, senza quindi  ereditare da un tema esistente.

Name: TestTheme
Author: Andrea Dottor
Website: http://blog.dottor.net
Description: Description for the theme
Version: 1.0
BaseTheme: TheThemeMachine
# todo: provide tags
# Tags: Classic, Serif

Una volta assegnati nuovi valori al file Theme.txt si potrà procedere con la modifica degli stili nel file Style/Site.css oppure del layout, lavorando nel file Views/Layout.cshtml, oppure in una specifica view.
Avendo il grosso vantaggio di ereditare da un tema base, le modifiche che dovremmo compiere, ad esempio per modificare gli stili, sono ridotte al minimo:

  • Copiare il file Site.css dal tema base alla cartella Style del nuovo tema
  • Modificare gli stili voluti direttamente da Visual Studio

Terminata la modifica/creazione del nostro tema, non dovremo fare altro che abilitarlo diretamente dalla dashboard di Orchard nella sezione Themes.
Consiglio anche di fare uno screenshot del website con il nuovo tema e sostituirla al file Theme.png per facilitarne il riconoscimento dalla dashboard.

Per approfondire l'argomento: http://www.orchardproject.net/docs/

Technorati Tags: ,,

Tags: , , , ,

.NET | ASP .NET | Microsoft

Orchard Project

by Andrea 20 April 2011 03:25

OrchardLogo

Cos'è Orchard?

Copio dal sito:
"Orchard is a free, open source, community-focused project aimed at delivering applications and reusable components on the ASP.NET platform."

Orchard è il nuovo CMS Open Source di casa Microsoft sviluppato in ASP.NET MVC. Il progetto ha un proprio sito http://www.orchardproject.net dove potete trovare informazioni sul progetto e la relatia documentazione, mentre il codice è presente su codeplex http://orchard.codeplex.com/.

Il progetto è arrivato ora alla versione 1.1, e per colpa della sua giovinezza si notano alcune mancanze, visibili a chi utilizza già altri CMS ben più maturi.
Per noi sviluppatori, direi che l'uso di ASP.NET MVC è una delle principali motivazioni per l'utilizzo di questo CMS, che sarò gradito anche dai grafici vista la possibilità di avere in output un html davvero pulito. Devo ammettere però che la curva di apprendimento non è proprio banale a differenza di altri CMS.
La dashoboard è molto semplice e intuitiva, e questo direi essere una gran cosa in quanto è ciò che interessa all'utente finale.

A prima vista sembrerebbe che per progetti medio-piccoli possa essere il CMS ideale, ma ora non mi resta che sporcarmi un pò le mani, e capire per benino quali siano i casi limite di utilizzo, ma sopratutto capirne le tempistiche per l'implementazione di nuovi temi e nuovi moduli, che è ciò che interessa maggiormente.

Technorati Tags: ,,,

Tags: , , , ,

ASP .NET | .NET | Microsoft

DotNetNuke e un caso reale - Gymmit.com

by Andrea 18 April 2011 02:51

Non faccio solitamente pubblicità nel mio blog, ma qualche eccezzione ogni tanto ci vuole.

Volevo segnalarvi il portale gymmit.com, sviluppato da Davide Senatore.

link: www.gymmit.com
gymmit è il motore di ricerca e social network per centri sportivi, palestre, piscine e SPA. Iscriviti a gymmit per conoscere il "Social Wellness".
Be social. Be fit. Be gymmit!

La cosa interessante per noi sviluppatori, stà nel fatto che il portale utilizza la versione Community Edition di DotNetNuke, e quindi è un esempio reale di utilizzo di questo CMS open source, a costo zero.
Registrandosi, e dando uno sguardo alle molte funzionalità/moduli presenti, ci si rende subito conto di quanto lavoro sia stato fatto, e di come la piattaforma non abbia posto limiti allo sviluppo e alla crescita di questa piattaforma, ma anzi, di come ne abbia aiutato/agevolato il tutto, permettendo a Davide di concentrarsi nelle sole funzionalità.

Veniamo ad alcune delle funzionalità che il portale offre agli iscritti:

  • per gli utenti:
    • completa integrazione con Facebook, dalla registrazione, autenticazione, e aggiornamento degli status
    • pubblicazione dei propri interessi come attività sportive
    • ricerca di utenti/amici in base alle attività in comune, in modo da poter praticare sport in compagnia
    • ricerca degli utenti in base alla disponibilità di tempo nel praticare un preciso sport
    • ricerca cetri sportivi nelle vicinanze, con possibilità di feedback per aiutare/facilitare la scelta agli altri utenti
  • per i centri sportivi
    • pubblicazione/gestione descrizione, orari, informazioni del centro
    • galleria fotografica
    • calendario corsi

Se siete curiosi, la registrazione tramite Facebook richiede un solo click, e sono certo che Davide sarà felice di ricevere qualsiasi feedback vorrete dargli.

Vi segnalo che il 20 maggio 2011, io e Davide Senatore parleremo per l'appunto di DotNetNuke, e potrete assistere ad un'interessante sessione che vi permetterà di capire come sia facile realizzare applicazioni con questo CMS open-source.
Per registrarsi al community meeting: Programming DotNetNuke 5.0

Technorati Tags: ,,

Tags: , ,

ASP .NET | .NET | Internet

Prossimi appuntamenti, SMAU e community meeting

by Andrea 18 April 2011 02:23

Volevo segnalarvi i prossimi meeting che mi vedranno partecipe:

5 maggio 2011 - Community Tour SMAU Edition
link: http://www.xedotnet.org/Home/Meeting/20110505

ASP.NET Web Form vs ASP.NET MVC
Due tecnologie che condividono le stesse basi, ma che si differenziano di molto. ASP.NET MVC è ormai diventata una tecnologia matura, ed ecco che iniziano a sorgere i dubbi quando ci si trova di fronte all'analisi di nuovi progetti: "Uso Web Form o MVC?" "Quali vantaggi ho dall'uso di uno o dall'altro?" "E se volessi usare un CMS Open-Source?" In questa sessione vedremo lo stato dell'arte di queste tecnologie, e cercheremo di chiarire il ruolo di ognuna di esse, andando in dettaglio dei pro e contro che le caratterizzano.

20 Maggio 2011 - XeDotNet community meeting - Programming DotNetNuke 5.0
link: http://www.xedotnet.org/Home/Meeting/20110520

Sviluppare con DotNetNuke. Un framework sul framework
Sviluppare applicazioni, occupandosi delle sole funzionalità che vuole il cliente, senza doversi occupare anche del codice di infrastruttura può sembrare un'utopia, ma non è così. In questa sessione vedremo come DotNetNuke, che è un CMS (content management system) open source, permetta allo sviluppatore tutto ciò. DotNetNuke può essere visto come un framework sul framework, in grado di fornire allo sviluppatore funzionalità avanzate che permettono di aumentare la produttiva e al contempo di ridurne i tempi di sviluppo.

Per quanto riguarda il Community Meeting del 20 maggio, non mancate, in quanto con Davide Senatore stiamo cercando di preparare una sessione a 4 mani, dove se ne vedranno veramente delle belle. Spremeremo DotNetNuke per benino, in modo da farvi conoscere le reali possibilità/potenzialità di questo framework/applicazione.

Tags: , , , ,

.NET | ASP .NET | XeDotNet | Microsoft

Workaround per StackOverflowException quando si usa SlSvcUtil.exe

by Andrea 18 February 2011 05:25

Usando la console per generare un proxy di un web service per silverllight, facendo uso del tool SlSvcUtil.exe (versione 4.0) può capitare di ottenere questo errore (che nella versione 3.0 non accadeva):

Process is terminated due to StackOverflowException.

Cercando in rete, ho trovato la soluzione in questo post firmato da Christopher Scrosati, del Team di Silverlight WCF: Workaround for StackOverflowException when using SlSvcUtil.exe

Il workaround applicato consiste nel creare un file di configurazione con nome SlSvcUtil.exe.config e contenente la seguente configurazione:

<configuration>
  <satelliteassemblies>
    <assembly name="SlSvcUtil, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </satelliteassemblies>
</configuration>

Una volta aggiunta questa configurazione, il tutto funziona alla perfezione.

Tags: , ,

ASP .NET | .NET

Codice e slide della sessione Potenzialità e benefici di ASP.NET MVC

by Andrea 19 November 2010 05:30

Come promesso, ecco le slide e il codice della mia sessione Potenzialità e benefici di ASP.NET MVC tenuta al Community Tour del 17 Novembre 2010.

Il codice fa uso di ASP.NET MVC 3 RC.

All'interno dello zip non ho inserito le applicazioni NerdDinner e MvcMusicStore, in quanto le potete trovare direttamente su codeplex ai seguenti link:

Abstract: ASP.NET MVC è un framework sviluppato da Microsoft che permette lo sviluppo di applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern si propone di apportare alcuni benefici: maggiore controllo del markup della pagina, URL più leggibili, facilità di integrazione con librerie javascript, chiara separazione dei ruoli/responsabilità tra layer, testabilità e manutenzione del codice... In questa sessione cercheremo di capire quali siano gli effettivi vantaggi che ASP.NET MVC porta agli sviluppatori, e quindi capire, con un occhio pratico, quali reali benefici si abbiano nell'adottare questa tecnologia.

Tags: , , , ,

ASP .NET | XeDotNet | Microsoft