venerdì 8 aprile 2016

From 4P to 4C

In summary social, mobile and big data require businesses to shift their marketing focus from the traditional four Ps of marketing to four Cs of social:

Product
Place
Price
Promotion

to

Content
Connecting
Community
Curating

martedì 24 novembre 2015

Netflix stack

http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html

very interesting article

giovedì 29 gennaio 2015

Asp.Net WebApi 2 and Enum

By default, Web API serializes ENUM data types to the numeric value but humans don't like code, we prefer string description.

So we need to add a Media Type Formatter. In Web API, the media type determines how to serialize the data with a built-in support for JSON, XML and form-urlencoded.

 The following helper method handles the configuration of the media formatter setting. This code should be added in the global.asax.cs file.

using Newtonsoft.Json;

protected void Application_Start()
{
   SerializeSettings(GlobalConfiguration.Configuration);                
}

void SerializeSettings(HttpConfiguration config)
{
   JsonSerializerSettings jsonSetting = new JsonSerializerSettings();
   jsonSetting.Converters.Add(new Converters.StringEnumConverter());
   config.Formatters.JsonFormatter.SerializerSettings = jsonSetting;
}

venerdì 2 gennaio 2015

Tool for testing website performance

8% of potential buyers cite extremely slow loading web pages as primary reason for abadoning their purchase. It does not seem a big number but for Amazon or other big ones it means milions of dollar.

I found some tools for testing the sites that I develop.

Pingdom Tools
Web Page Analyzer
WebSitePulse
GTmetrix
WebPagetest
YSlow
Pagespeed Insights

In light of the fact that page weight is increasing every year, I hope this post will give you enough ammunition to be better prepared to tackle the performance challenge on your own projects.

martedì 23 dicembre 2014

Mean is the new Lamp

Mean (MongoDb, Express, Angularjs, Nodejs) is the new full stack for web application development.

MongoDB – MongoDB is what's known as a NoSQL database. It can be thought of as a database of documents, rather than consisting of rows, columns, and tables. The primary use case is storing JSON data; a perfect fit when writing applications with JavaScript. What it may lack in relations and a draconian adherence to schema, it makes up for in speed, scalability, and ease-of-use.

Express – Express is a thin web server framework designed to make building web servers with Node easier and more maintainable. It is an unopinionated framework which provides developers a high level of customizability but is "low-level" enough to still have access to the underlying Node framework it's built on. Express provides an easy to use request router, cookie management, a static file server, and many other HTTP building blocks needed to create enterprise-grade web servers.

AngularJS – Angular is a feature-rich client side MVC JavaScript framework. It can be used to make robust and complex single-page web applications. It has built in two-way data binding and its own HTML-based templating language. It also has a feature called "directives" that allow you to extend HTML with new attributes, and even new elements. Angular is also highly testable, which may not be the most interesting facet of development, but it is often the most important and is frequently overlooked with client side code. Finally, it provides conventions and best practices to help developers structure client side solutions.

Node – Node is a JavaScript runtime used to build server and networking applications. It provides all the JavaScript features found in the browser with additions for file and network I/O. It uses Google's V8 engine (the same one used in Google Chrome) to execute JavaScript. It also boasts a very active community of developers and ecosystem of Node modules (Express is one such module). While there have been other server side implementations of JavaScript, Node is, by far, the most successful in terms of development and adoption by both enthusiasts and large corporations as well.

Not for enterprise applications but really good for modern website and single page applications or restful web services.

venerdì 21 novembre 2014

IIS Express and json mimeType

In order to add JSON mime type to IIS Express, perform the following:
  1. Open a console application with administrator privilages.
  2. Navigation to the IIS Express directory. This lives under Program Files or Program Files (x86)
  3. Run the command: 
appcmd set config /section:staticContent /+[fileExtension='JSON',mimeType='application/json']

lunedì 27 ottobre 2014

technicolor tg587n v3 fastweb e windows 8.1

Grazie Fastweb non mi hai fatto annoiare nella prima domenica post cambio dell'ora... Pensavo di passarla steso sul divano a guardare la luce andare via dietro ai palazzi e invece.

La notizia è che il modem-router in oggetto non funziona correttamente con Windows 8.1 il sintomo è l'impossibilità a navigare con la presa ethernet mentre tutto è normale usando la connessione wi-fi.

La soluzione è cambiare i dns usando quelli di google dns primario 8.8.8.8 e dns secondario 8.8.4.4

Grazie Fastweb per aver scelto un apparato così efficace.

martedì 21 ottobre 2014

Why People hate ASP.NET

La risposta più comune è: "Non vogliamo usare asp.net perchè preferiamo prodotti opensource".

Asp.net è un prodotto Microsoft e come tutte le grandi aziende a volte fa scelte criticabili. 

Facciamo però chiarezza: asp.net è un prodotto opensource ed è possibile trovare tutto il framework su github. E' possibile sviluppare anche in ambiente mac. La prossima versione non avrà più bisogno di IIS.


venerdì 17 ottobre 2014

Modern Web Development

I buoni propositi per questo nuovo anno di lavoro:

1) Abbandonare definitivamente tricks per funzionare le mie pagine su Internet Explorer 6 o 7, le percentuali di visitatori che ancora usano queste due versioni di Internet Explorer ormai sono infinitesimali inutile e costoso continuare a considerarle. I browser moderni sono veloci nell'interpretare l'html e ancora di più il javascript

2) Html5 e Css3 sono largamente supportati e tante cose che tempo fa richiedevano righe di codice javascript si possono risolvere usando esclusivamente html5 e css3 e se proprio non vengono supportate considerare scenari di degradazione.

3) Per rendere scalabili e riutilizzabili i css ricordare l'esistenza di preprocessori come Less, Sass e Stylus.

4) Utilizzare framework quali Foundation o Bootstrap per realizzare il front end. Garantiscono uniformità visuale e la soluzione semplice ai problemi della responsività della pagina. Usare sempre l'approccio mobile-first.

5) Javascript è diventato il linguaggio imprescindibile per le web application e allora vale la pena implementare soluzioni basate su librerie come Angular o su pattern MVVM con Knockout

6) Non trascurare i sistemi per gestire il versioning e la fase di delivery il classico ftp non basta più.

7) Node.js

8) Infine asp.net vnext se mantiene quello che promette non vorrò più sentire qualcuno che mi parla di php ...

giovedì 26 giugno 2014

Unable to launch the IIS Express Web Server

Un problema che può capitare al lancio di IIS Express.
La causa è la porta utilizzata da un altro processo, per scoprire quale:

netstat -aon | find ":<numerodellaporta>"

L'ultimo numero sulla riga risultante è l'id del processo che sta utilizzando la porta richiesta da IIS.

giovedì 23 gennaio 2014

martedì 31 dicembre 2013

L'html non è un linguaggio di programmazione

Ci si chiede come mai in Italia non nascano idee come Facebook o Google... A parte ovvie questioni dovute alle infrastrutture, alle metodologie di studio universitarie e alle condizioni del sistema bancario che mai finanzierebbe un diciottenne senza babbo plurimiliardario. Poi ci sono gli imprenditori che spesso dimostrano una ignoranza fuori dal comune: "Mio nipote mi ha detto ..."
La formazione via nipote.

giovedì 12 settembre 2013

Interpretazioni

Solo dopo 5 anni l'autore di questa foto ha reso pubblico lo scatto.


Thomas Hoepker è uno dei tanti fotografi presenti a New York l'11 settembre del 2001. Ha raccontato di aver provato ad avvicinarsi a Ground Zero ma bloccato dalla confusione ebbe l'intuizione di dirigersi verso Brooklyn. Andando vide questa immagine e scattò tre foto.

La foto non venne pubblicata nell'immediatezza, considerata ambigua. Cosa rappresenta? Un gruppo di giovani incuranti di quello che succede alle loro spalle?

In una intervista successiva alla pubblicazione uno dei giovani ritratti disse che erano talmente sconvolti che si erano girati per discutere di quello che stava accadendo.

Un tipico esempio della possibilità dell'immagine di rappresentare avvenimenti, non sappiamo cosa è successo prima né cosa accadrà subito dopo. E tanto meno sappiamo cosa pensano i protagonisti della foto. L'immagine ha però una sua forza e uno stile quasi pittorico che ne fa una delle immagini simbolo dell'11 settembre.

giovedì 8 agosto 2013

Stars and stripes

Ho appena finito un corso su Coursera.org
Il titolo del corso era "The camera never lies" e cercava di analizzare il modo in cui si può rappresentare la storia attraverso le immagini e quanto queste siano attendibili come documenti storici.
Partendo dall'utilizzo dell'immagine fatto da Hitler passando alla manipolazione delle immagini per manipolare la storia fatta da Stalin.
Non poteva mancare l'analisi di una delle foto più famose della storia recente, la foto della bandiera alzata sul monte Suribachi storia poi rappresentata nel film "Flags of our father" di C.Eastwood.


Si vedono 5 marines, 4 in primo piano, non si vedono le facce e quindi è impossibile riconoscere i singoli, la foto non ci permette di sapere cosa è successo prima e cosa succederà dopo sembra rappresentare il momento della vittoria e invece la battaglia durerà altri 35 giorni.
Nonostante questo la foto è diventata un'icona della vittoria, del gruppo che porta a termine la missione, e della vittoria raggiunta da eroi anonimi.
Questa immagine fu usata per raccogliere fondi per finanziare lo sforzo bellico, la campagna con maggior successo in termini di raccolta. E' entrata nell'immaginario collettivo degli americani tanto da ritrovarla come monumento, nei poster, sui francobolli, nelle foto dei presidenti...



Un'immagine simile all'ombra dei resti delle Torri gemelle, anche questa volta la bandiera ma non più simbolo di vittoria ma della volontà di ricominciare, se la bandiera sul monte Suribachi fu il simbolo della vittoria, quella a New York rappresenta la voglia di ricominciare anche di fronte alla più grande tragedia americana

mercoledì 17 luglio 2013

Aggiornare complex type in entity framework 4

1) Caricare il file .edmx nel solution explorer
2) cliccare con il tasto destro in una parte vuota del modello edmx e scegliere aggiorna dal database e infine cliccare su finish
3) aprire il model browser
4) aprire la voce function import
5) selezionare le stored procedure da aggiornare
6) cliccare sul tasto destro e poi edit
7) cliccare su  "Get Column Information" e seezionare il complex type da aggiornare e infine cliccare su update....

Tanto per ricordare la cosa la prossima volta

lunedì 28 gennaio 2013

Ritorno al futuro

Oggi leggo un annuncio di lavoro: programmatore senior android, 4 anni di esperienza nel ruolo...
Dato che i primi cellulari con android sono del 2009, e android è del 2008, l'esperienza di 4 anni è stata fatta indietro nel futuro o avanti nel passato.

L'altra ipotesi è che chi fa queste richieste non sa cosa scrive e mi pare decisamente più probabile.


venerdì 25 gennaio 2013

Lavori in corso

Dopo un pò di tempo si ritorna.

I lavori che sto seguendo sono l'aggiornamento del portale alla versione 4 di asp.net mvc. Con l'occasione tutta l'interfaccia del backoffice verrà rinnovata con un ampio uso di javascript e ajax. Altra innovazione sarà l'implementazione di messaggi flash con l'uso di SignalR.
Il secondo progetto invece è una piattaforma di cms basata su codeigniter, il php è sempre divertente da usare.

Devo riprendere un pò di discorsi.

lunedì 24 settembre 2012

Capra e cavoli

Non è possibile, inutile tentativo che porta a perdere sempre inevitabilmente l'intera posta.

"Ho riflettuto molto sulla nostra rigida ricerca, mi ha dimostrato come ogni cosa sia illuminata dalla luce del passato… dall'interno guarda l'esterno, come dici tu alla rovescia… in questo modo io sarò sempre lungo il fianco della tua vita e tu sarai sempre lungo il fianco della mia vita."

lunedì 18 giugno 2012

Dependency Injection

"E' un pattern che permette di eseguire la scelta di un componente a run-time invece che nella compilazione. Un tipico utilizzo è quello del caricamento dinamico di un plugin o per effettuare il caricamento di oggetti sostitutivi in ambiente di test al posto di quelli che verrebbero caricati nell'ambiente di produzione".

E questa è più o meno la definizione. Vediamo un esempio.


Supponiamo di avere una classe Auto e una classe derivata Fiat.


class AutoSelector {
        Auto fiatAuto = null;
        public AutoSelector() {}



il reference fiatAuto è la dependency (dipendenza)



class AutoSelector {
        Auto fiatAuto = null;
        public AutoSelector(Fiat fiat) 
        {
             fiatAuto=fiat;
         }
}


ecco che abbiamo effettuato una dependency injection sull'istanza della variabile fiatAuto.


Abbiamo creato un forte accoppiamento tra il nostro codice e la classe Fiat...  E se noi volessi creare un sistema per scegliere quale classe di auto utilizzare?
La soluzione è accoppiare la Dependency Injection al pattern Factory e utilizzare un file di config. Quindi utilizzare un componente esterno che tramite un file di config va a costruire gli oggetti e le dipendenze.