June 2007 Blog Posts
Profile API ASP.NET: disabilitare LastActivityDate, quando non serve

Le Profile API sono una feature di ASP.NET che conosco in quanto è uno degli argomenti che tratto durante i corsi che tengo, ma in realtà non la uso mai perchè preferisco creare domain model ad-hoc.
In un progetto che sto seguendo ho voluto affidarmi temporaneamente all'utilizzo di questa funzionalità, che ci ha fatto risparmiare un po' di tempo.
Il fatto è che ha creato un problema di riflesso, era ovvio :-); interrogando le proprietà del profilo viene anche aggiornata la proprietà LastActivityDate dell'utente a cui è associato, usando l'SqlMembershipProvider.
In questo modo, ciclando sugli utenti per visualizzarli in un GridView ad esempio, appaiono tutti online :-D.

La proprietà MembershipUser.IsOnline infatti viene calcolata facendo la differenza tra la Membership.UserIsOnlineTimeWindow e LastActivityDate appunto.
La soluzione a questo problema la trovate qui:
http://www.dotnet-friends.com/fastcode/sql/fastcodeinsqld7f4ebfa-dcc1-4f18-a073-3f3d10885207.aspx

Attenzione anche al metodo Membership.GetUser(username) o Membership.GetUser(providerUserKey), entrambi hanno un overload che consente di specificare se aggiornare LastActivityDate passando un bool userIsOnline.

Matteo Migliore.

[OT] Auto elettrica, si può

Nell'ultima puntata tramessa del programma Gaia è stato trattato un tema che trovo tra i più interessanti in questo momento e cioè l'energia e le fonti rinnovabili, o più correttamente fonti rinnovabili a breve termine.

L'egemonia degli estrattori e commercianti di petrolio ha fatto sì che nell'ultimo secolo il tempo, dal punto di vista delle fonti energetiche, si sia fermato.
Continuiamo a dipendere da un sistema che ha creato uno dei più grossi problemi dei nostri tempi: l'inquinamento. E' uno dei sistemi più inefficienti che si possa concepire, soprattutto per come viene utilizzato.

[Update]
L'energia richiesta per l'utilizzo del prodotto finito e lo "smaltimento" del prodotto di scarto è altissima, 4 o 5 volte superiore a quella ottenuta, considerando tutti i passaggi.

Niente di nuovo direte, avete ragione, ma stiamo andando troppo a rilento parlare dell'energia eolica, dell'idrogeno e delle celle fotovoltaiche può essere piacevole e addirittura divertente, ma ormai non può più essere solo un argomento sul quale intrattenere un'interessante discussione.

Al protocollo di Kioto purtroppo non ha aderito uno tra i maggiori produttori di gas serra, neanche a dirlo, gli Stati Uniti. La verità è che le tecnologie ci sono, alcune come l'idrogeno addirittura dagli anni '30, ma sono rimaste lì dove sono state inventate, nei laboratori. Se volete farvi un'idea di cosa si sia raggiunto nel campo delle auto ad energia elettrica qui c'è un ottimo esempio: Tesla motors.

L'auto presentata ha poco da invidiare alle fuoriserie a combustibile fossile,
cit. Beppe Grillo: "450cv per portare una persona, 1 mulo ne porta 10"


Concludo il post con questi dati sempre su Tesla motors:
- da 0 a 97 km/h in 4 secondi
- velocità massima 209km/h
- autonomia 322km
- consumo per 322km €0,20
- tempo massimo di ricarica (alla rete elettrica) 3,5 ore

Un "particolare" divertente: è possibile prenotare e acquistare l'auto online, come se fosse un qualsiasi articolo, dubito di riuscire a pagarla con PayPal però, visto che il conto con qualche optional come il GPS, il BlueTooth e un sistema per la ricarica del cellulare è arrivato a più di $100.000 :-D.

Matteo Migliore.

Filed Under [ OT - Out of topic ]
Google Streeth Viewer

Si può ancora uscire di casa o rischiamo di essere immortalati per poi essere pubblicati sul Web dalla grande G?

Ovviamente quasi tutte le nuove tecnologie che si stanno sviluppando portano grandi benefici ma si sa, la nostra privacy
sta sfuggendo, sta diventando qualcosa di astratto che si ricorda con nostalgia.

Non riusciamo a controllarla, forse non ci siamo mai riusciti. E se è vero che avere pubblicata una propria
foto a nostra insaputa da qualche parte su Internet non è un grosso problema per i più, rimane
invece la dilagante e incessante raccolta di dati che ci riguardano, a partire da Google Web History, che tiene traccia
di tutte le nostre ricerche, ovviamente bisogna essere loggati e si può comunque disabilitarla.

Tutto questo per dire che è arrivato un nuovo servizio, Google Streeth Viewer,
al momento funzionante solo su San Francisco, New York, Las Vegas, Denver e Miami:
Google Maps - San Francisco

Beh, speriamo bene :-).

Fonte: http://news.com.com/Google+Maps+takes+it+to+the+streets/2100-1038_3-6187254.html

Matteo Migliore.

Un nuovo, semplice CMS in ASP.NET 2.0, Open ovviamente

SampleCMS

SampleCMS: un semplice CMS per beginners.

Questa notte, a seguito di varie richieste sul NG di ASP.NET a cui mi stò dedicando parecchio ultimamente, ho sviluppato un piccolo, anzi micro :-), CMS
che dovrebbe permettere ai beginners di capire quali sono le basi, il funzionamento così da poter iniziare a sviluppare una soluzione in, quasi, completa autonomia.

Sarei tentanto di iniziare a farcire il progetto di funzionlità, come un editor per la creazione dinamica di layout, ma questo stravolgerebbe la natura del progetto, che vorrei mantenere semplice, senza installazioni e configurazioni complesse come per i suoi fratelli "molto" maggiori: DotNetNuke, Umbraco.

E' possibile stabilire per ogni sezione se usare il layout di default oppure
una nuova pagina ASPX che utilizza una MasterPage.
Per la gestione dei contenuti ho creato un meccanismo a provider come per le Membership API, attualmente ce ne sono 2: un fake provider che restituisce un contenuto statico e un xml provider che persiste i contenuti in file xml. 

Ogni commento è ben accetto ovviamente.

Lo trovate su CodePlex: http://www.codeplex.com/SampleCMS.


Technorati Tags: ,
2 Comments Filed Under [ ASP.NET ]
Modulo per l'impostazione della culture

Di seguito riporto un HttpModule che consente di impostare la culture del thread corrente,
consentendo così di localizzare data e ora, currency etc...:

   1:  /// <summary>
   2:  /// Set current thread culture based on 
   3:  /// browser settings. If client send a request
   4:  /// using a not supported culture the English culture
   5:  /// is selected.
   6:  /// </summary>
   7:  public class CultureModule : IHttpModule
   8:  {
   9:   
  10:      #region IHttpModule Members
  11:   
  12:      void IHttpModule.Dispose() { }
  13:   
  14:      void IHttpModule.Init(HttpApplication context)
  15:      {
  16:          context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
  17:      }
  18:   
  19:      void context_PreRequestHandlerExecute(object sender, EventArgs e)
  20:      {
  21:   
  22:          HttpContext context = HttpContext.Current;
  23:          const string defaultLanguage = "en";
  24:          string culture = defaultLanguage;
  25:          if (context.Request.UserLanguages.Length > 0)
  26:              culture = context.Request.UserLanguages[0];
  27:   
  28:          CultureInfo ci;
  29:          try
  30:          {
  31:              ci = CultureInfo.CreateSpecificCulture(culture);
  32:          }
  33:          catch
  34:          {
  35:              ci = CultureInfo.CreateSpecificCulture(defaultLanguage);
  36:          }
  37:   
  38:          Thread.CurrentThread.CurrentCulture = ci;
  39:          Thread.CurrentThread.CurrentUICulture = ci;
  40:      }
  41:   
  42:      #endregion
  43:  }


Matteo Migliore.