HighDots Forums  

Oggetto XHR globale

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Oggetto XHR globale in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Ugo
 
Posts: n/a

Default Oggetto XHR globale - 11-24-2007 , 03:18 AM






Ciao a tutti,

mi sto domandando: ho dei vantaggi "prestazionali" a dichiarare solo una
volta un oggetto XHR globale e utilizarne il riferimento ogni qualvolta io
debba fare un richiesta al server, o no?

Una differenza che ci sarebbe nel dichiarlo globale, sarebbe l'impedimento
di richieste sovrapposte (in quato dovrebbe gestire e "mandare in
esecuzione" solo l'ultima), ci sono altri motivi? considerando che non
faccio richieste ogni 10 millisecondi bensì nell'ordine del minuto?

Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-26-2007 , 03:03 AM






On Sat, 24 Nov 2007 10:18:40 +0100, Ugo wrote:

Quote:
mi sto domandando: ho dei vantaggi "prestazionali" a dichiarare solo una
volta un oggetto XHR globale e utilizarne il riferimento ogni qualvolta io
debba fare un richiesta al server, o no?
"E' una domanda a trucco"? (cit)
Te la rigiro: ci sono dei vantaggi "prestazionali" a dichiarare ogni
santa volta un nuovo oggetto XHR per ogni richiesta? (laddove, va da
se, non vi sono richieste connessioni in parallelo)

--
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)



Reply With Quote
  #3  
Old   
Ugo
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-26-2007 , 04:41 PM



Quote:
mi sto domandando: ho dei vantaggi "prestazionali" a dichiarare solo una
volta un oggetto XHR globale e utilizarne il riferimento ogni qualvolta io
debba fare un richiesta al server, o no?

"E' una domanda a trucco"? (cit)
Te la rigiro: ci sono dei vantaggi "prestazionali" a dichiarare ogni
santa volta un nuovo oggetto XHR per ogni richiesta? (laddove, va da
se, non vi sono richieste connessioni in parallelo)
Provo a riformulare, vale la pena e/o c'è qualche motivo per cui istanziare
una volta sola e in maniera globale un oggetto XHR?
Perchè per "pulizia" di codice e se il browser non impiega 55 minuti a
farlo ogni volta, mi piacerebbe non utilizzare una variabile globale (nel
mio contesto)
Va da se che non ci sono richieste di connessioni in parallelo


Reply With Quote
  #4  
Old   
ZER0
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-27-2007 , 02:49 AM



On Mon, 26 Nov 2007 23:41:52 +0100, Ugo wrote:

Quote:
"E' una domanda a trucco"? (cit)
Te la rigiro: ci sono dei vantaggi "prestazionali" a dichiarare ogni
santa volta un nuovo oggetto XHR per ogni richiesta? (laddove, va da
se, non vi sono richieste connessioni in parallelo)

Provo a riformulare, vale la pena e/o c'è qualche motivo per cui istanziare
una volta sola e in maniera globale un oggetto XHR?
Te la riformulo pure io se vuoi, fintanto che non mi rispondi
"Vale la pena e/o c'è qualche motivo per cui istanziare tutte le sante
volte un nuovo oggetto XHR per ogni richiesta?"

Quote:
Perchè per "pulizia" di codice e se il browser non impiega 55 minuti a
farlo ogni volta, mi piacerebbe non utilizzare una variabile globale (nel
mio contesto)
Nessuno ti ha detto di usare una "variabile globale". E' da più di una
dozzina d'anni che sono noti approcci di sviluppo per evitarle. Ma qui
si sta parlando di un'altra cosa, concentrati sulla prima parte.

--
~ "Ho avuto la fortuna di unire mestiere e passione,
che secondo Stendhal equivale alla felicità."
(Roland Barthes)



Reply With Quote
  #5  
Old   
Ugo
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-27-2007 , 05:30 PM



Quote:
"E' una domanda a trucco"? (cit)
Te la rigiro: ci sono dei vantaggi "prestazionali" a dichiarare ogni
santa volta un nuovo oggetto XHR per ogni richiesta? (laddove, va da
se, non vi sono richieste connessioni in parallelo)

Provo a riformulare, vale la pena e/o c'è qualche motivo per cui istanziare
una volta sola e in maniera globale un oggetto XHR?

Te la riformulo pure io se vuoi, fintanto che non mi rispondi
proverò a fare del mio meglio

Quote:
"Vale la pena e/o c'è qualche motivo per cui istanziare tutte le sante
volte un nuovo oggetto XHR per ogni richiesta?"
per quanto riguarda il "valere la pena", non lo so' ed è l'inverso di
quello che sto chiedendo a voi e quindi se lo sapessi non continuerei a
chiedere nell'altro modo...
per quanto riguarda i motivi, io ne ho solo uno ed è quello di non
istanziare un oggetto globale, ma volevo limitarmi a richiamare una
funzione che ricevesse come parametro il nome della funzione di callback
Quindi mi sarebbe interessato il parere vostro, di chi ha più esperienza di
me, facendomi capire se ci sono dei pro o dei contro o comunque che
possibilità ci posso essere, dal momento che mi sembra che possano
prospettare altri "metodi"

Quote:
Perchè per "pulizia" di codice e se il browser non impiega 55 minuti a
farlo ogni volta, mi piacerebbe non utilizzare una variabile globale (nel
mio contesto)

Nessuno ti ha detto di usare una "variabile globale".
Io conosco solo questi 2 modi, o variabile globale (che poi diventi una
proprietà di window è un'altro discorso...) o locale con scope
limitatamente al blocco in cui è definita (che in questo caso la farei
diventare una "chiusura" definendone l'"onreadystatechange" che richiama la
funzione di cui prima che a sua volta ne richiama il riferimento)

Quote:
E' da più di una
dozzina d'anni che sono noti approcci di sviluppo per evitarle.
wow

Quote:
Ma qui
si sta parlando di un'altra cosa, concentrati sulla prima parte.
mah, a dire il vero, forse il punto o cmq quello che mi interessa è proprio
questo...
Hai tempo/voglia di illumonarmi un po'?


Reply With Quote
  #6  
Old   
ZER0
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-28-2007 , 04:48 AM



On Wed, 28 Nov 2007 00:30:48 +0100, Ugo wrote:

Quote:
"Vale la pena e/o c'è qualche motivo per cui istanziare tutte le sante
volte un nuovo oggetto XHR per ogni richiesta?"

per quanto riguarda il "valere la pena", non lo so' ed è l'inverso di
quello che sto chiedendo a voi e quindi se lo sapessi non continuerei a
chiedere nell'altro modo...
per quanto riguarda i motivi, io ne ho solo uno ed è quello di non
istanziare un oggetto globale,
Stai in pratica dicendo che, piuttosto che utilizzare una variabile
globale istanziando una sola e singola volta un oggetto, preferisci
di gran lunga istanziarlo un numero imprecisato di volte, pari alle
volte che devi usare tale oggetto.

Se è solo questo l'unico motivo, ti sembra sensato?
Non parlo solo di XHR, ma in generale di un qualsiasi oggetto.

Quote:
Nessuno ti ha detto di usare una "variabile globale".

Io conosco solo questi 2 modi, o variabile globale (che poi diventi una
proprietà di window è un'altro discorso...)
Sto parlando di approcci alla programmazione in generis, non in JS.

Quote:
E' da più di una
dozzina d'anni che sono noti approcci di sviluppo per evitarle.

wow
Come sarebbe a dire "wow"? Dove sei stato negli ultimi dodici anni?
:P

Quote:
Ma qui
si sta parlando di un'altra cosa, concentrati sulla prima parte.

mah, a dire il vero, forse il punto o cmq quello che mi interessa è proprio
questo...
Hai tempo/voglia di illumonarmi un po'?
Una parola sola: Singleton.
Ne abbiamo già discusso nel newsgroup altre volte. I Design Pattern
dovrebbero essere approcci ormai noti a chi sviluppa, almeno quelli
fondamentali.

--
~ "La fantasia è come la marmellata,
bisogna spalmarla su un solido pezzo di pane."
(Gore Vidal)



Reply With Quote
  #7  
Old   
Ugo
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-28-2007 , 05:21 PM



Quote:
Stai in pratica dicendo che, piuttosto che utilizzare una variabile
globale istanziando una sola e singola volta un oggetto, preferisci
di gran lunga istanziarlo un numero imprecisato di volte, pari alle
volte che devi usare tale oggetto.
detta così mi sento un po' scemo al solo averlo pensato

Quote:
Se è solo questo l'unico motivo, ti sembra sensato?
effetivamente non più tanto....

Quote:
Non parlo solo di XHR, ma in generale di un qualsiasi oggetto.
sì sì...

Quote:
Nessuno ti ha detto di usare una "variabile globale".

Io conosco solo questi 2 modi, o variabile globale (che poi diventi una
proprietà di window è un'altro discorso...)

Sto parlando di approcci alla programmazione in generis, non in JS.
già

Quote:
E' da più di una
dozzina d'anni che sono noti approcci di sviluppo per evitarle.

wow

Come sarebbe a dire "wow"? Dove sei stato negli ultimi dodici anni?
:P
a grattarmelo

Quote:
Ma qui
si sta parlando di un'altra cosa, concentrati sulla prima parte.

mah, a dire il vero, forse il punto o cmq quello che mi interessa è proprio
questo...
Hai tempo/voglia di illumonarmi un po'?

Una parola sola: Singleton.
ahh

Quote:
Ne abbiamo già discusso nel newsgroup altre volte. I Design Pattern
dovrebbero essere approcci ormai noti a chi sviluppa, almeno quelli
fondamentali.
mi farò una cultura prima o poi...

cmq in questo caso come la vedi a dichiarare una variabile globale
all'interno della funzione ommettendo var, e controllare se è già definita
e in caso contrario istanziarla e poi riusare quella.
Ad es.:

function getXmlHttpRequest( )
{
var xmlhttp = null;

if( typeof window.XMLHttpRequest != "undefined" )
{
xmlhttp = new XMLHttpRequest( );
}
else if( typeof window.ActiveXObject != "undefined" )
{
/*@cc_on
@if( @_win32 )
{
xmlhttp = new ActiveXObject( 'Microsoft.XMLHTTP' );
}
@end
@*/
}
else if( typeof window.createRequest != "undefined" )
{
xmlhttp = window.createRequest( );
}

return xmlhttp;
}
function async_get_request( query, callback )
{
if( typeof xmlhttp != "undefined" )
xmlhttp = getXmlHttpRequest( );

if( xmlhttp && query )
{
xmlhttp.open( "GET", 'index.php?s=' + ( new Date( ) ).getTime( ) +
Math.random( ) + '&' + query, true );
xmlhttp.setRequestHeader( "If-Modified-Since", "Sat, 11 Jan 1977
00:00:00 GMT" );
xmlhttp.onreadystatechange = function( evt )
{
if( xmlhttp.readyState == 4 )
{
if( xmlhttp.status == 200 )
callback( xmlhttp.responseText );
else
alert( "Error; status = " + xmlhttp.status );
}
}
xmlhttp.send( );
}
}


Reply With Quote
  #8  
Old   
ZER0
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-29-2007 , 03:35 AM



On Thu, 29 Nov 2007 00:21:51 +0100, Ugo wrote:

Quote:
Stai in pratica dicendo che, piuttosto che utilizzare una variabile
globale istanziando una sola e singola volta un oggetto, preferisci
di gran lunga istanziarlo un numero imprecisato di volte, pari alle
volte che devi usare tale oggetto.

detta così mi sento un po' scemo al solo averlo pensato
Se ho cercato di farti rispondere da solo, un motivo ci sarà..

Quote:
Ne abbiamo già discusso nel newsgroup altre volte. I Design Pattern
dovrebbero essere approcci ormai noti a chi sviluppa, almeno quelli
fondamentali.

mi farò una cultura prima o poi...
Dovresti fartela prima, che poi. Se fossi stato un architetto, avresti
prima iniziato a progettare case, o a studiare architettura?

Quote:
cmq in questo caso come la vedi a dichiarare una variabile globale
all'interno della funzione ommettendo var,
Allora non la stai dichiarando.
Se ci rifletti un attimo su, sono sicuro che ti renderai conto da solo
che quest'approccio non è dei migliori.
Non solo usi una "variabile globale" (cosa che volevi evitare), ma non
la stai neppure dichiarando!
E se usare "variabili globali" può non essere elegante o sbagliato dal
punto di vista della OOP; non dichiararle è indubbiamente peggio.

Quote:
else if( typeof window.createRequest != "undefined" )
{
xmlhttp = window.createRequest( );
}
Lo usi l'ICEBrowser? Altrimenti, ricordati di non fornire mai supporto
per qualcosa che non conosci e non sei disposto a testare, esattamente
come faresti per IE, Firefox, Safari e via dicendo.
Sai benissimo che ogni browser spesso e volentieri si comporta in modi
differenti e su più fronti (CSS, JS, DOM, HTML), e se non conosci bene
la piattaforma rischi errori o risultati anomali.
Di regola, s'implementa codice che segue gli standard e le "eccezioni"
che desideriamo supportare e conosciamo (e di norma, questo si traduce
nel supportare IE per un banale discorso di base installate).

--
~ L'ingegnere non vive, funziona.



Reply With Quote
  #9  
Old   
Ugo
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-29-2007 , 05:30 PM



Quote:
Ne abbiamo già discusso nel newsgroup altre volte. I Design Pattern
dovrebbero essere approcci ormai noti a chi sviluppa, almeno quelli
fondamentali.

mi farò una cultura prima o poi...

Dovresti fartela prima, che poi. Se fossi stato un architetto, avresti
prima iniziato a progettare case, o a studiare architettura?
Ma guarda, sono un po' come quelli che partecipano ai reality, non sanno
fare un caxxo e poi fanno TV (con il malumore degli adetti ai lavori)
Io, un giorno non troppo lontano ho scoperto l'informatica e da quasi
autodidatta mi sono inventato un lavoro e poi un altro e non ho ancora
capito come faccio ancora sd andare avanti...

Quote:
cmq in questo caso come la vedi a dichiarare una variabile globale
all'interno della funzione ommettendo var,

Allora non la stai dichiarando.
Se ci rifletti un attimo su, sono sicuro che ti renderai conto da solo
che quest'approccio non è dei migliori.
diciamo che forse è migliore del precedente, ma da quello che posso
immaginare è potenzialmente pericoloso perchè uno script "esterno" può
malauguratamente utilizzare una variabile globale con lo stesso nome (il
problema si sarebbe posto anche nell'altro modo, questo mi fa temere una
tua risposta del tipo: "ma infatti non è quello il problema"
alla quale ti anticipo già la mia (per evitare che passino altri 2 giorni -
riesco a scrivere solo in questi orari), ma allora qual è?

Quote:
Non solo usi una "variabile globale" (cosa che volevi evitare)
in effetti, ma più che altro, volevo evitare che si vedesse
l'inizializzazione

Quote:
, ma non la stai neppure dichiarando!
io pensavo di sì

Quote:
E se usare "variabili globali" può non essere elegante o sbagliato dal
punto di vista della OOP; non dichiararle è indubbiamente peggio.
ma se non si tratta di dichiarazione di variabile globale, allora cos'è?

Quote:
else if( typeof window.createRequest != "undefined" )
{
xmlhttp = window.createRequest( );
}

Lo usi l'ICEBrowser?
eccerto

Quote:
Altrimenti, ricordati di non fornire mai supporto
per qualcosa che non conosci e non sei disposto a testare, esattamente
come faresti per IE, Firefox, Safari e via dicendo.
ok

Quote:
Di regola, s'implementa codice che segue gli standard e le "eccezioni"
che desideriamo supportare e conosciamo (e di norma, questo si traduce
nel supportare IE per un banale discorso di base installate).
In conclusione, servirebbe un qualcosa che attraverso la chiamata di una
funzioni restituisca il riferimento di un oggetto di cui riesce a tenerne
copia da dopo la prima chiamata
Immagino che sia un qualche modo con le chiusure, ma come si possa fare
senza mai dichiarare una cavolo di variabile boh...

Sarebbe bello/interessante che mi potessi fare un'esempio

ciao e grazie


Reply With Quote
  #10  
Old   
ZER0
 
Posts: n/a

Default Re: Oggetto XHR globale - 11-30-2007 , 03:03 AM



On Fri, 30 Nov 2007 00:30:59 +0100, Ugo wrote:

[Design Pattern]
Quote:
mi farò una cultura prima o poi...

Dovresti fartela prima, che poi. Se fossi stato un architetto, avresti
prima iniziato a progettare case, o a studiare architettura?

Ma guarda, sono un po' come quelli che partecipano ai reality, non sanno
fare un caxxo e poi fanno TV (con il malumore degli adetti ai lavori)
Io, un giorno non troppo lontano ho scoperto l'informatica e da quasi
autodidatta mi sono inventato un lavoro e poi un altro e non ho ancora
capito come faccio ancora sd andare avanti...
Perfetto, ti seguo su questa metafora:
Nel momento in cui i partecipanti ai reality fanno TV, arriva un punto
in cui o sono dimenticati oppure riescono "ad andare avanti", anche se
magari loro stessi non capiscono il come.
Ma si rendono conto però, che arrivati a quel punto, se non si mettono
a fare qualcosa tipo studiare recitazione, rischiano di fare la stessa
fine dei loro compagni.

E' del tutto normale che s'inizi come te: di certo, quando ho studiato
io, il "web" non lo insegnavano. E neppure i Design Pattern. In questo
campo, qui dentro, credo che gli autodidatti spopolino.

Quote:
cmq in questo caso come la vedi a dichiarare una variabile globale
all'interno della funzione ommettendo var,

Allora non la stai dichiarando.
Se ci rifletti un attimo su, sono sicuro che ti renderai conto da solo
che quest'approccio non è dei migliori.

diciamo che forse è migliore del precedente,
Dal punto di vista di "buona pratica" di programmazione, è peggiore di
quello prima, direi!

Quote:
ma da quello che posso
immaginare è potenzialmente pericoloso
Non è solo una questione di "potenziale pericolosità", i problemi sono
quelli che ti ho elecato poi. Se le variabili globali sono da evitare,
in una buona programmazione, usarle senza dichiararle è DECISAMENTE la
cosa peggiore che puoi fare.

Quote:
perchè uno script "esterno" può
malauguratamente utilizzare una variabile globale con lo stesso nome (il
problema si sarebbe posto anche nell'altro modo,
Si, ma riflettici un poco. Se tu inizi a usare variabili globali senza
dichiararle, che succede? Succede che tra un mese, due, tre o quattro,
o anche un anno, magari dovrai mettere mano a quel codice, e dimmi: te
la senti di doverlo scorrere tutto per capire quali variabili sono del
tipo globale o locale?
E pensa se un povero cristo dovesse mettere mano al tuo codice, oppure
se TU dovessi mettere mano a un codice di terzi fatto in questo modo.

Con la "manutenibilità" che si rivolta metaforicamente nella tomba.

Quote:
tua risposta del tipo: "ma infatti non è quello il problema"
alla quale ti anticipo già la mia (per evitare che passino altri 2 giorni -
riesco a scrivere solo in questi orari), ma allora qual è?
Qual'è cosa? Il problema di un approccio come quello?
Te l'ho giò detto.. Se c'è qualcosa di peggiore di usare una variabile
globale, è quello di usarla senza dichiararla.

Quote:
Non solo usi una "variabile globale" (cosa che volevi evitare)

in effetti, ma più che altro, volevo evitare che si vedesse
l'inizializzazione
... Mi hai appena fatto cascare le braccia, lo sai vero?

Quote:
, ma non la stai neppure dichiarando!

io pensavo di sì
No, non la stai dichiarando. Una dichiarazione senza inizializzazione,
sarebbe:

var xmlhttp;

function ...

Mentre tu la usi direttamente, senza dichiararla. Il parser la vede, e
dice "che roba è questa? E' una variabile locale? No, non la vedo. Bòn
sarà una proprietà dell'oggetto globale" e va ad impostarla in window,
nel nostro caso, implicitamente.
Tant'è che una variabile globale così fatta, è leggermente differente,
da una dichiarata tramite var, comportandosi esattamente come se fosse
una proprietà dell'oggetto.

Quote:
E se usare "variabili globali" può non essere elegante o sbagliato dal
punto di vista della OOP; non dichiararle è indubbiamente peggio.

ma se non si tratta di dichiarazione di variabile globale, allora cos'è?
Come sarebbe a dire cos'è? Stai semplicemente usando una variabile non
dichiarandola. La dichiarazione viene fatta tramite lo statement "var"
e se non c'è tale statement tu non la stai dichiarando.

Sarebbe come in Visual Basic/VBScript, usare una variabile senza prima
dichiararla tramite il "DIM", e senza aver impostato l'Option Explicit
(che ti OBBLIGA a dichiarare le variabili che usi, come vuole la buona
programmazione).

Quote:
Lo usi l'ICEBrowser?

eccerto
Credo tu sia il primo che abbia mai incontrato.

Quote:
Altrimenti, ricordati di non fornire mai supporto
per qualcosa che non conosci e non sei disposto a testare, esattamente
come faresti per IE, Firefox, Safari e via dicendo.

ok
Anche perché l'ICEBrowser ha diverse "magagne", anche solo per ciò che
riguarda l'uso di XHR, si comporta diversamente dagli altri browser.
IMVHO, il gioco non vale la candela, poi vedi tu.

Quote:
Di regola, s'implementa codice che segue gli standard e le "eccezioni"
che desideriamo supportare e conosciamo (e di norma, questo si traduce
nel supportare IE per un banale discorso di base installate).

In conclusione, servirebbe un qualcosa che attraverso la chiamata di una
funzioni restituisca il riferimento di un oggetto di cui riesce a tenerne
copia da dopo la prima chiamata
Ni. Devi ragionare in termini di OOP, non di "funzioni" procedurali. I
Design Pattern (e quindi il Singleton) si applicano alla OOP.

Quote:
Immagino che sia un qualche modo con le chiusure,
Ma anche senza. Vi sono parecchi modi di implementare un Singleton, in
Javascript.

Quote:
Sarebbe bello/interessante che mi potessi fare un'esempio
Google it's your friend:

http://www.google.it/search?q=singleton+javascript

--
~ La realtà è un'illusione causata dall'assenza di alcool.



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.