Come creare un progetto ASP.NET Web Application con Umbraco 7.1.4

Alcuni giorni fa ho cominciato a dare un’occhiata ad Umbraco, un CMS che esiste ormai da svariati anni e che alcuni siti usano con soddisfazione, e dato che devo rifare il mio sito personale, ho pensato che potesse essere una valida alternativa, anche perchè è open-source, è scritto in C#, e mi sembra abbastanza ben strutturato.

In termini numerici non è un CMS molto utilizzato, specialmente se paragonato ad altri (ad es. JOOMLA) che ormai a livello mondiale hanno una diffusione nettamente superiore, ma per le mie necessità questo sembra più che sufficiente.

Dalla versione 6 in poi (al momento in cui scrivo siamo alla 7.1.4) questo CMS basato su ASP.NET ha “svoltato” passando dalle “vecchie” webform ad MVC, e con esso ha introdotto anche la possibilità di esporre delle funzionalità REST tramite le Web API di Microsoft.

Per capirne meglio il funzionamento, sono ricorso ai video a pagamento disponibili sul sito di Umbraco.tv (eh si, quando è necessario bisogna spenderlo qualche soldino) e quello che viene spiegato è che, per installare Umbraco, la via più semplice è quella di utilizzare WebMatrix 3, uno strumento di Microsoft che consente l’installazione e l’editing di siti web anche a partire da piattaforme esistenti.

Effettivamente è così, l’utilizzo di WebMatrix 3 rende tutto più semplice, solo che il progetto creato è un web site e non una web application, e non pare sia possibile scegliere altrimenti.

Chi sviluppa con ASP.NET sa che ci sono differenze sostanziali tra queste due tipologie di progetto, anche se poi il risultato per l’utente finale non cambia niente. Il problema è che però, dai video di esempio di Umbraco.TV l’esposizione di Web API viene fatta sempre tramite l’utilizzo di web application e non web site. Sfortunatamente tra i tantissimi video presenti, non ce ne era alcuno che mostrasse come installare Umbraco in modalità web application.

Avevo tentato anche di esporre delle chiamate con Web API sul web site ma avevo avuto diversi problemi con controller e model per la mancanza di namespace nel codice. E poi personalmente i web site mi sono sempre stati antipatici, per tutta una serie di motivi che non sto qui ad elencare, per cui mi sono messo letteralmente a smanettare e sono riuscito alla fine a trovare un modo per creare un progetto di tipo web application con Umbraco, capace quindi di poter “ospitare” agevolmente dei servizi REST con Web API. Per farlo sono ricorso all’utilizzo di NuGet.

Di seguito vi elenco tutti i passaggi, nel caso possano essere utili a qualcun altro.

Per lo scopo può essere utilizzato sia Visual Studio 2012 che Visual Studio 2013, per l’esempio di seguito io ho usato il 2013.

  • da Visual Studio, andate nel menù File > New > Project 

    Untitled1

  • scegliete in alto il .NET Framework 4.5.1 e quindi selezionate il template di progetto da Web > Visual Studio 2012 > ASP.NET MVC 4 Web Application e alla successiva richiesta, scegliete la tipologia Empty project 
  • una volta creato il progetto, da Visual Studio andate nel menù Tools > NuGet Package Manager > Manage NuGet Packages for Solution… 

    Untitled2

  • andate su Online e poi in alto a destra nella casella search inserite  umbraco , dall’elenco proposto scegliete  Umbraco CMS e quindi procedete con Install 
  • vi verrà chiesto su quale progetto installare il pacchetto, scegliete il progetto che avete creato (nell’esempio proposto l’avevo chiamato UmbracoWebApp)
  • durante il download e installazione dei pacchetti vi verranno indicati due file come esistenti, il file Web.Config e il gile Global.asax, e vi verrà proposto di sovrascriverli, voi acconsentite con “Yes”, ma rispondete singolarmente alle due domande, non usate il pulsante “Yes To all” 
  • quando il pacchetto sarà installato vedrete un segno di spunta vicino alla voce “Umbraco CMS”, a quel punto premete Close per uscire da NuGet

A questo punto avrete un progetto ASP.NET MVC di tipo web application con Umbraco, non vi resta che premere F5 e divertirvi!

 

Continua a leggere “Come creare un progetto ASP.NET Web Application con Umbraco 7.1.4”

Annunci
Come creare un progetto ASP.NET Web Application con Umbraco 7.1.4

Using Keepass synced between computers using OneDrive

If you, like me, cannot live without Keepass, well, you maybe need a sync mechanism to always have updated password db over two or more computers.

Since I was not able to find a plug-in to make this sync automatic (I refer to a few years ago, actually I don’t know if there is something new that I could use), I settled the tool to use “triggers” (that is a feature available to execute actions) to implement this sync mechanism.

The sequence of action that I created was:

  • Keepass use a local password db
  • when Keepass opens the local db, first of all sync it with a cloud-based password db copy (in this example I use OneDrive, but you can use Dropbox, Sugarsync, Google Drive, or your favorite cloud space)
  • when Keepass save the local db, it sync again with the could-based copy

To implement this sequence I used Keepass triggers, as I said before.

All steps to reproduce it are explained in the next lines. I would like to share for whom it may be useful.

Files involved are:

  • local_file.kdbx: file to sync on local machine (e.g. C:\CRYPT\MyKeePassFile.kdbx)
  • sync_file.kdbx: file located in a share folder or cloud drive, in a synced local folder on the machine (e.g. C:\User\<username>\OneDrive\MyKeePassFile.kdbx)

Go to Tools > Triggers

  • Enable trigger system => <checked>
  • Add (trigger)
    • Properties
      • Name => “trig-first-open-sync”
      • Enabled => <checked>
      • Initially on => <checked>
      • Turn off after executing action (run once) => <checked>
    • Events
      • Add
        • Event => Opened database file
        • File/URL – Comparison => Equals
        • File/URL – Filter => <local_file.kdbx>
    • Conditions
      • Add
        • Not => <not checked>
        • Condition => File exists
        • File => <sync_file.kdbx>
    • Actions
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-saved-file-sync”
        • New state => Off
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-first-open-sync”
        • New state => Off
      • Add
        • Action => Synchronize active database with a file/URL
        • File/URL => <sync_file.kdbx>
        • IO Connection – User Name => <blank> or username when required
        • IO Connection – Password => <blank> or password when required
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-first-open-sync”
        • New state => On
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-saved-file-sync”
        • New state => On
  • Add (trigger)
    • Properties
      • Name => “trig-saved-file-sync”
      • Enabled => <checked>
      • Initially on => <checked>
      • Turn off after executing action (run once) => <not checked>
    • Events
      • Add
        • Event => Saved database file
        • File/URL – Comparison => Equals
        • File/URL – Filter => <local_file.kdbx>
    • Conditions
      • Add
        • Not => <not checked>
        • Condition => File exists
        • File => <sync_file.kdbx>
    • Actions
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-saved-file-sync”
        • New state => Off
      • Add
        • Action => Synchronize active database with a file/URL
        • File/URL => <sync_file.kdbx>
        • IO Connection – User Name => <blank> or username when required
        • IO Connection – Password => <blank> or password when required
      • Add
        • Action => Change trigger on/off state
        • Trigger name => “trig-saved-file-sync”
        • New state => On

That’s it. Have fun with Keepass 🙂 

Using Keepass synced between computers using OneDrive

Primi test con il Robot Beginner Kit – Netduino 2 (C#)

Qualche giorno fa ho partecipato all’evento IoT organizzato dalla community DomusDotNet. È stato un evento molto interessante, con sessioni tenute da speaker con grandi competenze in materia, in cui l’argomento era appunto l’IoT, ovvero la Internet of Things, cioè l’Internet delle cose .

Personalmente è stata una bella giornata perchè, oltre alle sessioni tutte interessanti e istruttive, ho avuto la fortuna di essere il fortunato vincitore del set Robot Beginner Kit – Netduino 2 (C#) gentilmente offero dai gestori del sito Robot Domestici, cosa che mi ha dato la possibilità già dalla sera stessa ad approcciare a questo mondo per me quasi completamente sconosciuto.

Come potete vedere dalla foto, si tratta di un kit molto ricco (almeno per chi come me è alle prime armi) dato che al suo interno contiene:

  • 1 Netduino 2 (la scheda elettronica nera con i pin blu)
  • 2 motori (quelli gialli)
  • 1 scheda per il controllo motori (la schedina piccola rossa)
  • 1 sensore a infrarossi (sotto la scheda controllo motori)
  • 1 pacco batterie
  • 1 cacciavite calamitato
  • 1 chassis completo di viti e istruzioni per il montaggio
  • 2 ruote grandi
  • 1 ruota a sfera
  • Vari cavi, pin (gli spillini) e connettori

Le istruzioni per il montaggio dello chassis erano molto semplici e ci hanno consentito di montare facilmente lo stesso con i motori, il pacco batterie e le ruote. Sembrava (ed effettivamente lo è stato) talmente facile che mio figlio che non ha ancora compiuto nove anni ha voluto montarlo lui e ci ha messo più o meno un quarto d’ora, e devo dire che si è anche molto divertito J

 

Una volta assemblato lo chassis con i motori e le ruote, ho cominciato a vedere il Netduino. Per uno come me, che non ha mai avuto la possibilità (e devo confessare, la curiosità) di comprare una scheda del genere, è stata una vera sorpresa. Erano anni che sentivo parlare di Arduino e non pensavo avrei mai approcciato questo “mondo”, ma complice il Netduino (che è in pratica una versione della scheda Arduino che ha un suo framework ed è programmabile con il linguaggio C# e Visual Studio di Microsoft) ho capito che si tratta di una cosa interessante e più semplice del previsto.

Sono partito dalla pagina del kit nella quale ho trovato la Guida alla realizzazione, essenziale per la pinnatura e per le istruzioni passo passo per i collegamenti e la programmazione di Netduino.

{ Io in tutta onestà, facendo di mestiere lo sviluppatore, ed essendo ovviamente molto curioso di “capirci qualcosa”, prima di partire con il montaggio dello chassis mi ero già attrezzato per dare un’occhiata al Netduino andando sul sito ufficiale dove avevo trovato degli esempi di codice, che seppur banali erano stati per me molto indicativi di come procedere nella programmazione della scheda. }

Tornando al kit, nel pdf ci sono tutte le istruzioni passo passo, sebbene trattandosi di un documento che faceva riferimento (probabilmente) alla versione 1 del Netduino, non era stato aggiornato in alcuni punti per quello che riguarda Netduino 2. Possono sembrare banalità, ma per me che ero (e sono) alle prime armi, hanno creato qualche dubbio, per cui li elenco qui:

  • nel documento si fa cenno al saldatore che servirà per i pin da saldare sulla schedina di controllo motori, ora fermo restando che un saldatore ci vuole sempre per chi voglia in qualche modo divertirsi a programmare questo tipo di schede, nel kit che ho ricevuto c’erano dei pin “solderless”, cioè senza necessità di saldatura, per cui ad incastro hanno funzionato alla grande; peccato averlo capito qualche giorno dopo J infatti non avendo capito che i pin in dotazione non necessitavano di saldatura ho aspettato qualche giorno perchè volevo prima comprare un saldatore; capito che non ce n’era bisogno ho proceduto senza problemi; un consiglio: i pin sono in 2 strisce da 10, sulla schedina di controllo motori ce ne sono 8 per lato, io ho tolto due pin dalle estremità della striscia e ho inserito i pin con tutta la striscia di plastica nera che li tiene, per farlo ho usato una pinzetta e molta cautela, perchè è comunque una operazione molto pericolosa e potrebbe rovinare la scheda di controllo motori o piegare qualche pin; se volete potete anche procedere con i pin singolarmente, perdete più tempo ma se vi facilita va bene lo stesso, l’unico problema è che poi i pin “escono” troppo sotto, dovrebbero funzinare lo stesso, per quanto mi riguarda il risultato che ho ottenuto (tenendo la striscia nera dei pin) è stato quello che vedete in foto
  • per l’alimentazione della scheda motori viene detto di “tagliare il filo che proviene dal pacco batterie” e collegarli in un certo modo tenendo presente che il rosso va col rosso e il nero col nero… bene nel mio pacco batterie i fili erano entrambi neri e quindi non capivo come procedere, poi ho inteso che il filo rosso e quello nero stanno per il positivo e il negativo e allora ho utilizzato un tester per verificare (con le batterie inserite) quale fosse il “rosso” (positivo) e il “nero” (negativo), potete farlo collegando il filo rosso del tester ad uno dei due fili del pacco batterie (già tagliati ovviamente) e quello nero all’altro, se il risultato è maggiore di zero, il cavo “rosso” (positivo) sarà quello collegato al rosso del tester, altrimenti è l’altro; ovviamente essendo io una capra per tutto quanto riguarda l’elettronica (incluso l’uso di un “banale” tester) non mi soprenderebbe che questo procedimento sia sbagliato, in ogni caso io ho fatto così J se volete procedete diversamente, non mi assumo responsabilità se saltate in aria J
  • il codice linkato sul pdf (che è poi lo stesso presente nella scheda del kit) è risultato non compilabile, perchè fa riferimento ad una versione 4.1.7 del Micro framework di Microsoft, mentre al momento in cui ho provato io a fare il tutto avevo scaricato ed installato la versione 4.2; nessuna paura, sempre nella pagina della scheda del kit, nel tab “File aggiuntivi” vi è il link al codice giusto Robot Beginner Kit – Netduino 2 (C#) (138,05 KB), con questo non avrete problemi di compilazione

     

     

Una volta completati tutti i passaggi indicati potete collegare il pacco batterie al Netduino e vederlo in funzione. Io personalmente ho avuto un “problema” J ovvero il mio robottino andava all’indietro, probabilmente ho sbagliato qualche passaggio nonostante la guida passo passo fosse a prova di stupido (ma non avevano conosciuto ancora me J), in ogni caso ho preferito modificare il codice sorgente per far “invertire” il funzionamento del motore, cioè dove andava avanti ora va all’indietro e dove va all’indietro va in avanti, risultato: ora va benissimo.

A quel punto, visto che c’ero, ho modificato il codice per ottenere il seguente comportamento:

  • al collegamento del pacco batterie al Netduino non parte
  • premendo il pulsante sulla scheda partono i motori
  • premendo nuovamente il pulsante sulla scheda si fermano i motori

Se volete utilizzare il codice che ho fatto io lo trovate qui, ricordatevi solo di mettere a false la variabile INVERTI_MOTORI
in bella evidenza in testa alla classe Program, sempre che non serva anche a voi invertire la direzione di marcia!

 

Il risultato finale è questo:


 

Voglio ancora ringraziare gli amici di DomusDotNet per l’ottimo evento e gli sponsor del sito Robot Domestici che hanno messo in palio questo splendido kit. Non mi fermerò qui, ho già intenzione di fare nuove cose. J

 


Primi test con il Robot Beginner Kit – Netduino 2 (C#)

Evento: DomusDotNet – IoT@Work “Internet of Things”

Il prossimo venerdì 6 giugno 2014, ci sarà un interessantissimo evento ospitato alla sede di Roma della Microsoft, organizzata dalla fantastica community romana DomusDotNet,

Si tratta di un evento in cui si discuterà dell’IoT (Internet of Things) ovvero delle possibili evoluzioni nell’uso della rete, che passa ormai inesorabilmente attraverso device sempre più “intelligenti” e capaci di scambiarsi dati in maniera programmatica.

Si va verso un futuro in cui la tecnologia ci renderà sempre più semplici le operazioni della quotidianità e allo stesso tempo si evolverà per comprendere meglio le nuove evoluzioni che necessitano per operare sempre al meglio.

Non perdete quindi questo evento, utilizzate subito questo link per avere maggiori informazioni, vedere l’agenda della giornata e iscrivervi al più presto!

Evento: DomusDotNet – IoT@Work “Internet of Things”