July 2008 Blog Posts
Friendly Url con SubText

Molti blog non hanno attivata la funzione “Friendly Url” di SubText che è molto utile perchè permette di utilizzare le parole contenute nel titolo del post per creare l’url della pagina. Così chi cerca su Google o Live sarà agevolato ed il post sarà più utile. Non è la scoperta dell’acqua calda :-).

SubText: Friendly Url

Matteo Migliore.

How I Got Started in Software Development

 Il mitico Gianlu mi ha taggato...

How old were you when you started programming?
A quale età hai cominciato a programmare?

A 8 anni, come tutti :-). Non c’era molto di meglio da fare, se non navigare
su Internet… ah no, non c’era ancora :-D.

How did you get started in programming?
Come hai cominciato a programmare?

Schiacciando i tasti della tastiera :-D... dell’MSX Toshiba. Per caricare un gioco dall’audio cassetta ci si impiegavano circa 30 minuti, se tutto andava buon fine, altrimenti bisognava riavvolgerla tramite il registratore collegato e attendere molto pazientemente (ma chi l’aveva pensato quel sistema????). Era un ottimo deterrente contro la pigrizia e spronava piuttosto a dare sfogo alla creatività e a fare proprio quel misterioso cursore lampeggiante su sfondo blu :-D.

What was your first language?
Qual’è stato il tuo primo linguaggio di programmazione?

Ovviamente il Basic, che preferisco tuttora  a VB.NET :-).

What was the first real program you wrote?
Qual’è stato il primo programma vero che hai scritto?

Come per molti, il calcolo della tabellina dato un numero, con progressione infinita, vale a dire fino al “Runtime Error” dell’applicazione.

What languages have you used since you started programming?
Quali linguaggi hai usato da quando hai cominciato a programmare?

In ordine di apparizione: Basic, Tarta, Batch, Turbo Pascal 6.0, Borland C++, Delphi, Assemly x86, VC++, Java, Visual Basic .NET,  C#.

What was your first professional programming gig?
Quando è stato il tuo primo vero lavoro da programmatore?

Perchè programmare è un lavoro? :-D
L’unico momento in cui sudo è quando devo gestire la parte amministrativa :-D

Ho sviluppato con il mio socio storico (sono più di 8 anni che lavoriamo insieme) un gestionale per centri di assistenza, a 17 anni, in VB6. Ma quello che realmente mi ha dato soddisfazione è stato un sistema di Text To Speech con animazione di Avatar per l’assistenza clienti nei Totem nei C&C, so good! Ah, nella prima applicazione ho imparato ad odiare SQL ed i doppi apici, viva i Parameters!!! :-D

If you knew then what you know now, would you have started programming?
Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?

Cit. “Se mia nonna avesse le ruote, sarebbe una cariola” :-D.
Vedo davvero molti pro, i contro che vivo, li avrei in qualsiasi altro lavoro penso, perchè dipendono dal mio (a volte) pessimo carattere :-).

If there is one thing you learned along the way that you would tell new developers, what would it be?
Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?

1) L’inglese è la lingua ufficiale dell’informatica (e non solo), niente testi in italiano!
2) Avere una vita sociale non serve, tanto il PC fa *quasi* tutto :-D
3) L’impegno viene *sempre* premiato, quindi fatevi un’ottima cultura su qualcosa di specifico, i tuttologi non servono

Tutto IMHO ovviamente :-).

What's the most fun you've ever had ... programming?
Qual’è la cosa più divertente che hai programmato?

La cosa che mi appassiona di più tutt’ora: la Visione Artificiale! Da quando avevo 18 anni sto sviluppando un software anti-intrusione che fa elaborazione real-time di flussi video ed è veramente fantastico perchè si riesce a coniugare l’astrazione dell’informatica con la pragmaticità di un senso che appartiene agli esseri viventi. Wonderful!!! 

Now, let’s tag someone else...
Adesso è l’ora di taggare qualcun’altro...

Andrea
Davide
Gab 
Marco
Mauro
Roberto

Matteo Migliore.

[OT] Foto Los Angeles 052008

Finalmente ho avuto il tempo di pubblicare le foto che ho fatto a Los Angeles a maggio. La qualità non è eccezionale, le ho scattate con il TyTN II, ora rimpiazzato dal Diamond :-).

A tutti i "malati" USA come me, buona visione: http://picasaweb.google.it/matteo.migliore/LosAngeles052008.

Una tra tutte:
Los Angeles: Santa Monica

Matteo Migliore.

2 Comments Filed Under [ OT - Out of topic ]
[ASP.NET] Sistema realtime di rilevamento degli utenti connessi
Conoscere il numero preciso di utenti connessi in un’applicazione ASP.NET non è possibile, sfruttando ad esempio le Membership API è possibile ottenere il numero di utenti connessi usando come criterio discriminante il timeout della Session (Membership.GetNumberOfUsersOnline()). In questo modo però è possibile monitorare solamente gli utenti loggati e comunque il numero rimane piuttosto approssimato.

Personalmente non ho mai avuto la necessità di tenere una traccia più accurata a scopo statistico, ma vediamo comunque come risolvere il problema :-).

Ah, il famigerato evento Session.End *non* è deterministico, quindi non lo si può sfruttare per questo obiettivo.

La soluzione è piuttosto semplice:
- un WebService che i client chiamano ciclicamente
- un timer Javascript che richiama il WebService 
Web server structure


1) L’attributo ScriptService permette di chiamare il web service tramite AJAX.
[WebService(Namespace = "http://eyeopen.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class AliveService : WebService
{
    [WebMethod]
    public void SendAlive()
    {
        ////string sessionId = HttpContext.Current.Request.Params["ASP.NET_SessionId"];
        string sessionId = HttpContext.Current.Request.UserHostAddress;
        UsersManager.RegisterUser(sessionId);
   }
}

2) Il file Javascript necessario a chiamare il web service:

function SendAlive() {
    EyeOpen.UsersMonitor.Web.AliveService.SendAlive();
}

function AliveTimerTick() {
    SendAlive();
    setTimeout(AliveTimerTick, 1000);
}

if (typeof (Sys) !== "undefined") {
    Sys.Application.notifyScriptLoaded();
}

setTimeout(AliveTimerTick, 1000);

 


3) Infine la reference al file Javascript tramite lo ScriptManager
e la reference al web service:

<asp:ScriptManager ID="scriptManager" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Js/Alive.js" />
    </Scripts>
    <Services>
        <asp:ServiceReference Path="~/Core/AliveService.asmx" />
    </Services>
</asp:ScriptManager

 


La rappresentazione della classe di supporto al web service: 
Classe di supporto al web service

In sostanza il web service lato server viene chiamato da un timer javascript ogni secondo, con un basso carico di rete e sul server, segnalando la presenza dell’utente, nel momento in cui vengono chiuse tutte le pagine che richiamano il servizio entro 10 secondi (il tempo di timeout si gestisce tramite web.config) l’utente viene cancellato dalla lista degli utenti connessi.

E’ sufficiente inserire lo ScriptManager in tutte le pagine (ad esempio tramite MasterPage o da codice) e il sistema viene esteso a tutta l’applicazione web.

Qui si trova il progetto di esempio: EyeOpen.UsersMonitor.Web.

Matteo Migliore.
7 Comments Filed Under [ ASP.NET ]
[OT] Assistenza HP
Questo pomeriggio ho deciso di contattare l'assistenza HP per chiedere i drivers aggiornati della scheda video del mio notebook.
Ho trovato quelli per XP ma non per Vista.

Questa è parte della conversazione:
Matteo Migliore: I cannot install the drivers
Aniyah: Please let me know what happens when you try to install the drivers.
Matteo Migliore: I received this error: "The system does not meet the minimum requirements."
Aniyah: Thank you for the information.
Aniyah: I suggest you to purchase a new Notebook the pair costs nearly the costs of teh new Notebook.
Aniyah: Am I clear to you?


Ahahahahah, avranno fumato qualcosa?

Matteo Migliore.