Posts
103
Comments
238
Trackbacks
4
ottobre 2005 Blog Posts
[OT] Scusate la tastiera...

Altre immagini: http://www.artlebedev.com/portfolio/optimus/

powered by IMHO 1.3

posted @ lunedì 17 ottobre 2005 12:24 | Feedback (1)
[OT] L'evoluzione dell'uomo

Source: http://www.sellsbrothers.com/tools/default.aspx

powered by IMHO 1.3

posted @ lunedì 17 ottobre 2005 02:00 | Feedback (0)
DataBinding Performance 1.1 vs. 2.0

UPDATE 10/03/2006: Ultimi test con .NET 2.0 e sintassi specifica 2.0

UPDATE 05/12/2005: uscita la release ufficiale del framework 2.0 ho rieseguito il test: in questo post i risultati.

Avevo già fatto un post relativo a questo argomento, ora però ho appena installato la beta 2 del framework, e per curiosità ho provato a rilanciare l'applicazione ASP.NET che esegue una sorta di benchmarking per evidenziare le differenze di performance tra il DataBinding eseguito tramite DataBinder.Eval e quello "fortemente tipizzato".

Il codice che ho utilizzato è sempre lo stesso, ma la cosa nuova è che le performance sono diversissime, vale a dire che, sebbene la differenza percentuale tra i due metodi rimanga grossomodo invariata, le performance singole sono diminuite MOLTO NOTEVOLMENTE, e questo a mio parere è abbastanza inspegabile, anche se sarei contento di essere smentito.

Di seguito ho riportato due esempi di output forniti dal codice sulla mia macchina, anche se devo dire che ad ogni esecuzione si notano delle differenze abbastanza sensbili, ma che tuttavia mettono sempre in evidenza quanto l'applicazione fatta girare sul 2.0 sia molto meno performante.

  • Framework 1.1

    DataBinder: 156
    StrongType: 125
    Diff: 19,8718%
  • Framework 2.0

    DataBinder: 406
    StrongType: 320
    Diff: 21,18227%
Mi farebbe piacere sapere se succede anche a voi... poi se qualcuno avesse anche una spiegazione...

powered by IMHO 1.3

posted @ sabato 15 ottobre 2005 19:09 | Feedback (6)
[OT] Ansia da workshop?

Ok domani è il mio primo workshop, non conosco nessuno e sarà già molto se riuscirò ad arrivare a Milano, ma è un motivo valido per non riuscire a dormire?! Sono già le due... unica soddisfazione, sono il primo dopo Boschin a usare il nuovo IMHO  A Domani!

powered by IMHO 1.3

posted @ giovedì 13 ottobre 2005 02:54 | Feedback (3)
RSS Aggregators, Online oppure Offline?

Incuriosito da un post di Scott Mitchell, The Future of Third-Party Offline Aggregators? Is RssBandit and its Kin Dead Weight?, mi sono messo a spulciare vari online aggregators alla ricerca di qualcosa di interessante...

Io ho sempre utilizzato RSSBandit e, speranzoso di trovare qualche feature intrigante, mi sono iscritto ad un pò di questi aggiungendo le mie feeds tramite OPML (praticamente tutti supportano l'importazione).
Ciò che mi aspettavo era inizialmente la possibilità di:

  • avere sempre le mie news a portata di mano,
  • non impegnare memoria RAM (in questo momento il bandito occupa 70 MB )

ma soprattutto speravo di trovare un sistema di organizzazione più efficiente delle news, come ad esempio poter fare rientrare ogni feed o addirittura ogni post in diverse categorie, in modo che l'appartenenza ad una categoria non escludesse quella ad un'altra categoria, qualcosa di un pò fantascientifico insomma, senza perdere la grafica e la linearità di RSSBandit, che mi ha sempre permesso di destreggiarmi bene in mezzo a tutte le notizie.

Per riassumere:

  • Findory è decisamente interessante e si differenzia dagli altri perchè non è proprio un aggregator, ma in base ai tuoi interessi, di cui tiene traccia tramite gli articoli che leggi, le ricerche che fai e i blog che aggiungi tra i preferiti, ti mostra le cose che suppone possano interessarti di più. Tuttavia proprio per questa caratteristica è un pò dispersivo;
  • NewsGator è carino, l'interfaccia, pure se web, è simile a quella di RSSBandit; caratteristiche interessanti consente di votare ogni singola entry e di inviarla direttamente a un indirizzo email;
  • Per Bloglines valgono grossomodo le considerazioni fatte per NewsGator, cosa positiva è anche in italiano;
  • Infine c'è il nuovo Google Reader, che, seppur ancora in BETA, si dimostra molto accattivante dal punto di vista dell'interfaccia grafica, e che secondo il mio parere è il più promettente.

Di online aggregators ne esistono tanti altri, ma l'esperienza con quelli appena citati mi ha dissuaso dal cercare ancora perchè non ho trovato qualcosa che potesse davvero sostituire il buon vecchio bandito. Google Reader è interessante, ma ancora un pò troppo in beta. In generale sono tutti poco user friendly secondo me, o forse sono abituato troppo bene . Per non parlare degli errori Javascript, che - non l'ho detto? - dato che praticamente tutti usano più o meno massiciamente AJAX, sono presenti in abbondanza e un pò fastidiosi soprattuto per chi, avendo bisogno di debuggare Javascript, ha l'opzione attivata su Internet Explorer.

La conclusione quindi è abbastanza ovvia... per ora resto col Bandito!

powered by IMHO 1.2

posted @ mercoledì 12 ottobre 2005 03:41 | Feedback (5)
Building a Better Busy Box - Ver 1.2 (Processing… Please Wait)

Summary: We often need to provide a user message informing the user that their request is “processing”.  Like the hour-glass mouse pointer lets the Windows user know the system is busy processing their last request, I have a simple, clean, and effect solution to providing this on web pages.

Source: http://blogs.crsw.com/mark/articles/642.aspx

Demo: http://blogs.crsw.com/mark/samples/BusyBoxDemo/Default.aspx

Source code: http://blogs.crsw.com/mark/files/BusyBox-1.2-Demo.zip

Mi è tornato utile modificare lo script di Mark Wagner per risolvere questo problema. In altre parole, quando la Response viene reindirizzata dal code behind, ad esempio per creare un documento di Excel, il BusyBox non scompare, perchè l'unload della pagina aspx (dove viene chiamata la funzione javascript che visualizza il busybox) effettivamente non termina mai.

Per ovviarvi ho creato una nuova funzione javascript che consenta di specificare un timeout, scaduto il quale il busybox viene automaticamente nascosto. Non è stato un grande sforzo, dato che l'idea me l'ha data un commento al post, dove un lettore aveva avuto l'idea di creare una funzione che consentisse di mostrare il busybox dopo un certo tempo dalla chiamata alla funzione, in modo che il busy box venisse visualizzato solo se veramente necessario, e non ad ogni richiesta che partiva da quella pagina.

La funzione originale, da aggiungere allo script del busybox, è la seguente:

// Example:
//        <body onbeforeunload="busyBox.ShowAfterDelay(1000);" >
BusyBox.prototype.ShowAfterDelay = function(inDelay)
{
    
if( !this.Enabled )
        
return;
    
ifthis.IsAnimating() || this.IsVisible() )
        
return;
    window.setTimeout(
this.VarName + ".Show();", inDelay);
}

Mentre quella da me creata è questa:

// ShowAfterDelayAndHideAfterDelay:
// This function displays the busy box to the user after inDelay milliseconds
// and hides it after outDelay milliseconds. This function centers the 
// busy dialog box, makes it visible, and starts the animation.  This function 
// will typically be called by the body unload event.
//
// Example:
// <body onbeforeunload="busyBox.ShowAfterDelayAndHideAfterDelay(1000, 10000);" >
BusyBox.prototype.ShowAfterDelayAndHideAfterDelay = function(inDelay, outDelay)
{
    
if(inDelay >= outDelay)
        
return;
    
if( !this.Enabled )
        
return;
    
ifthis.IsAnimating() || this.IsVisible() )
        
return;
    window.setTimeout(
this.VarName + ".Show();", inDelay);
    window.setTimeout(
this.VarName + ".Hide();", outDelay);
}

Mark Wagner inizialmente aveva annunciato di voler creare un controllo server che consentisse di includere questa funzionalità, ma al momento niente è stato fatto. Se qualcuno fosse interessato mi piacerebbe provare a sviluppare un controllo di questo tipo... Fatemi sapere!

powered by IMHO 1.2

posted @ venerdì 7 ottobre 2005 16:16 | Feedback (0)
Ajax lookup server control

Ajax mi ha sempre interessato molto, appena ne ho sentito parlare ne sono stato entusiasta perchè quasi non credevo possibile ottenere dati dal server web in modo asincrono ed aggiornare una pagina con questi dati. Quando poi ho visto in funzione Google suggest non mi sembrava vero, ed ho subito provato ad implementarlo ricreando le sue funzionalità in un webcontrol.

Per un pò di tempo ho provato quindi a creare un componente che aggregasse le funzionalità di Google Suggest per riempire dinamicamente una sorta di dropdownlist in base ai caratteri inseriti nella textbox principale.

Esistono diversi framework che consentono di implementare AJAX in applicazioni web, ma quello più conosciuto e che mi piace di più è quello di Michael Schwarz, che ne ha rilasciato ultimamente anche una versione "Professional", ma che pare diventerà presto a pagamento.

Il problema tuttavia era avere uno script javascript che consentisse tutte le funzionalità di Google Suggest, come lo scorrimento dei risultati tramite le frecce della tastiera, il sottolineamento della selezione ecc, il che non era facile, data la difficoltà (almeno per me) nel cercare di comprendere il codice javascript utilizzato da google suggest: http://www.google.com/ac.js.
Tentativi di decriptare quel codice ne sono stati fatti, e sicuramente il primo di questi è stato quello di Chris Justus.

Anche se aver riscritto tutto quel codice offuscato in maniera più comprensibile mi è stato enormemente di aiuto, forse anche per la mia poca esperienza con javascript dopo alcuni tentativi ho smesso di provarci perchè non sono riuscito a capire come evitare che alla selezione di una delle scelte che comparivano nella tendina venisse effettuata una richiesta a una nuova pagina, come accade appunto in google suggest.

Su CodeProject finalmente ho trovato un componente che estende il controllo TextBox e che aggrega queste funzionalità utilizzando codice javascript elaborato da Julian Robichaux, che sulla base di quello utilizzato da google suggest ne ha creato uno ad hoc e ne ha realizzato un esempio online: Zip Code Lookup Test.
Per l'implementazione di Ajax, invece, il controllo utilizza il framework di Michael Schwarz.

L'articolo che descrive questo controllo si intitola Implementing Ajax.NET-based Lookup Server Control. Per me è davvero comodo.

powered by IMHO 1.2

posted @ domenica 2 ottobre 2005 02:47 | Feedback (3)
News

Scopri CS2, il mio progetto universitario per l'indicizzazione e la ricerca di codice sorgente personale costruito su Lucene.Net.

Windows Developer Power Tools

Potete trovare il mio progetto BusyBoxDotNet nel libro Windows Developer Power Tools, pubblicato da O'Reilly, per il quale ho scritto l'intero capito dedicato.

Sono stato nominato dVP 2008, un riconoscimento per l'apporto fornito alla comunità del progetto db4o.