Discussion:
[ot] impazzire con AJAX e javascript
(too old to reply)
Andrea Rossato
2005-12-03 11:44:53 UTC
Permalink
ciao ciao,
sto letteralmente impazzendo e non so dove chiedere...
il tutto dipende, evidentemente, dal fatto che il javascript funziona in
modo per me incomprensibile...

qualcuno può darmi una mano, magari indicandomi bibliografia e risorse?
vedo che ci sono esperti in materia, qui...

questo il mio problema: sto scrivendo un editor wisiwyg per il mio wiki,
e mi serve un po' di ajax per ottenere dati dal server (il contenuto di
una pagina e la sua id).
la cosa non presenta problemi, specialmente usando prototype[1]:

var url = 'http://localhost/wakka/HomePage/ajax.xml';
var pars = 'action=getPage';
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );

l'oggetto con la risposta (XMLHttpRequest.responseXML) viene processato
con la funzione di callback parseResponse:

function parseResponse(originalRequest)
{

alert(originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);

}
ed infatti cosí ottengo un alert con l'id della pagina.

ora viene il problema. non riesco a far si di settarre, da questa
funzione, una variabile globale che possa essere utilizzata in altre
funzioni. inoltre da myAjax non sono in grado di accedere alla proprietà
che mi interessa: myAjax.transport.responseXML mi risulta nulla.

evidentemente qualcosa mi sufgge. da notare che il tutto avviene in un
window.onload = function() {
//ajax stuff
}

qualcuno può darmi qualche dritta, please?
mille grazie.
ciao
andrea

[1] http://prototype.conio.net/ con qui un po' di documentazione:
http://www.sergiopereira.com/articles/prototype.js.html
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Guido
2005-12-03 11:38:38 UTC
Permalink
Post by Andrea Rossato
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );
Prova con window.myAjax = new Ajax.Request( ....... );

funziona però solo nei più recenti browser che permettono di "attaccare"
attributi e metodi a qualunque oggetto DOM.

ciao
Guido
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Mario
2005-12-03 13:02:04 UTC
Permalink
Post by Andrea Rossato
ciao ciao,
sto letteralmente impazzendo e non so dove chiedere...
il tutto dipende, evidentemente, dal fatto che il javascript funziona in
modo per me incomprensibile...
qualcuno può darmi una mano, magari indicandomi bibliografia e risorse?
vedo che ci sono esperti in materia, qui...
Su javascript io ho sempre trovato abbastanza comodo :
http://www.devguru.com/technologies/javascript/home.asp

Ma ci sono comunque diversi libri on-line che sono utili :

http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/

Poi c'è la parte relativa all'interfaccia DOM che è molto interessante :
http://developer.mozilla.org/en/docs/The_DOM_and_JavaScript

Ovviamente alcune cose non funzionano o funzionano diversamente per I.
Explorer.
Post by Andrea Rossato
questo il mio problema: sto scrivendo un editor wisiwyg per il mio wiki,
e mi serve un po' di ajax per ottenere dati dal server (il contenuto di
una pagina e la sua id).
var url = 'http://localhost/wakka/HomePage/ajax.xml';
var pars = 'action=getPage';
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );
l'oggetto con la risposta (XMLHttpRequest.responseXML) viene processato
function parseResponse(originalRequest)
{
alert(originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);
Post by Andrea Rossato
}
ed infatti cosí ottengo un alert con l'id della pagina.
Personalmente ti consiglierei di incapsulare tutto in classi e di
passere oggetti.

In javascript se riesci a passare il "nome" dell'istanza puoi chiamare
tutti i metodi o attributi in qualunque parte tu voglia.

Come approccio lo vedo più sicuro e flessibile.
Post by Andrea Rossato
ora viene il problema. non riesco a far si di settarre, da questa
funzione, una variabile globale che possa essere utilizzata in altre
funzioni. inoltre da myAjax non sono in grado di accedere alla proprietà
che mi interessa: myAjax.transport.responseXML mi risulta nulla.
Questo perché credo sia possbile accedervi solo tramite callback.
Mi pare che tu non dica al Request di procedere in maniera sincrona,
percui devi fare un ciclo d'attesa che la richiesta sia soddisfatta.

Infatti il programma procede mentre la richiesta viene inoltrata in
background.
Per questo chiede una callback, che invece viene chiamanta appena la
richiesta è completata.
Post by Andrea Rossato
evidentemente qualcosa mi sufgge. da notare che il tutto avviene in un
window.onload = function() {
//ajax stuff
}
qualcuno può darmi qualche dritta, please?
mille grazie.
ciao
andrea
http://www.sergiopereira.com/articles/prototype.js.html
Mi sa che ci vorrebbe un bel corso perché tante cose sfuggono pure a me.

Guido, che ne dici?
--
Ciao,
Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Andrea Rossato
2005-12-03 14:43:15 UTC
Permalink
Post by Mario
Questo perché credo sia possbile accedervi solo tramite callback.
Mi pare che tu non dica al Request di procedere in maniera sincrona,
percui devi fare un ciclo d'attesa che la richiesta sia soddisfatta.
Infatti il programma procede mentre la richiesta viene inoltrata in
background.
Per questo chiede una callback, che invece viene chiamanta appena la
richiesta è completata.
ora la cosa mi è chiara e comprendo perche tentando di accedervi
dall'oggetto (myAjax.transport.responseXML) ricevo un null.
Post by Mario
Personalmente ti consiglierei di incapsulare tutto in classi e di
passere oggetti.
In javascript se riesci a passare il "nome" dell'istanza puoi chiamare
tutti i metodi o attributi in qualunque parte tu voglia.
la mia idea era di fare cosí:

var pageData = new Object();
var url = 'http://localhost/wakka/HomePage/ajax.xml';
var pars = 'action=getPage';
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );
function parseResponse(originalRequest)
{
pageData.body =
originalRequest.responseXML.getElementsByTagName("page")[0].firstChild.nodeValue);
pagaData.id =
originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);

}

per poi accedervi da pageData.id o pageData.body, che, ovviamente, mi
tornano undefined...

alludevi ad un approccio del genere? o cos'altro?

inoltre... mi sono fatto fregare, un'altra volta! dunque: non avevo
ancora iniziato a sviluppare un editor ajax per il mio wiki per via del
fatto che esso è servito come application/xhtml+xml, il che fa lavorare
i browser con il dom XML, per il quale non esiste innerHTML, largamente
usato in tutte le librerie ajax.
l'altro giorno avevo trovato un editor[1] che pareva funzionare con il
dom xml. ma ora mi accorgo che dipende solo dal fatto che sto usando
firefox-1.5, che deve aver adottato l'approccio di opera e permette ora
di usare innerHTML....[2] che casino.

francamente mi domando cosa possa succedere ali standard se tutta sta
bella roba ajax comincerà a proliferare...
ad ogni buon conto ora non so bene che fare....

ciao e grazie per l'attenzione.
andrea

[1] http://www.wikiwyg.net/
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=155723 e
http://www.squarefree.com/burningedge/releases/1.5b1.html
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Guido
2005-12-03 16:30:40 UTC
Permalink
Post by Mario
Mi sa che ci vorrebbe un bel corso perché tante cose sfuggono pure a me.
Guido, che ne dici?
Sviluppare il Javascript richiede esperienza, nel senso che ciascuno di
noi, a forza di sbattere la testa si è costruito il proprio piccolo
mondo, il proprio modo di sviluppare.

Quindi più che un corso sulla programmazione javascript, che comunque
andrebbe fatto nelle prime lezioni per dare le basi, c'è da mostrare un
po' di piccoli trucchi e del codice funzionante.

Purtroppo con il DOM dei browser si è costretti a provare prima di poter
affermare che funziona; provare non solo su un browser a caso, ma su
tutti quelli con i quali si vuol potersi vantare di essere compatibili :-(

Per mostrare del codice sul quale poi poterci fare delle lezioni si deve
poter costruire dei "dimostratori" in quanto mostrare il codice di un
prodotto finito, spesso è il miscuglio di tante cose che a livello
didattico generano tanta confusione.

Alla biblioteca si era parlato di questo, come un modo possibile, se non
l'unico modo possibile per poter sperimentare programmazione AJAX & Co.;
mi sono promesso di fare qualcosa, anche perchè mi serve per il lavoro
uno strumento di test per verificare ad ogni rilascio di nuove release
dei browser.

Se si confezionano dei "dimostratori" per ciascuna tecnica è possibile
rapidamente fare una serie di test e verificare se qualche verifica dà
risultati negativi o cumunque differenti dal previsto.

Non sarebbe la prima volta che una applicazione smette di funzionare o
si comporta in modo "bizzarro" cambiando release del browser e si sudano
7 camicie per isolare il problema.

Purtroppo il tempo è avaro ed a dicembre tutti corrono ai ripari; si
lavora come matti e non c'è tempo per gli investimenti; quindi per
un'idea di corso su Ajax e dintorni dobbiamo rimandare al prossimo anno
... anche perchè c'è in ballo il corso Sysadmin fino a gennaio.

bye
Guido
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Mario
2005-12-03 13:02:11 UTC
Permalink
Post by Andrea Rossato
ciao ciao,
sto letteralmente impazzendo e non so dove chiedere...
il tutto dipende, evidentemente, dal fatto che il javascript funziona in
modo per me incomprensibile...
qualcuno può darmi una mano, magari indicandomi bibliografia e risorse?
vedo che ci sono esperti in materia, qui...
Su javascript io ho sempre trovato abbastanza comodo :
http://www.devguru.com/technologies/javascript/home.asp

Ma ci sono comunque diversi libri on-line che sono utili :

http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/

Poi c'è la parte relativa all'interfaccia DOM che è molto interessante :
http://developer.mozilla.org/en/docs/The_DOM_and_JavaScript

Ovviamente alcune cose non funzionano o funzionano diversamente per I.
Explorer.
Post by Andrea Rossato
questo il mio problema: sto scrivendo un editor wisiwyg per il mio wiki,
e mi serve un po' di ajax per ottenere dati dal server (il contenuto di
una pagina e la sua id).
var url = 'http://localhost/wakka/HomePage/ajax.xml';
var pars = 'action=getPage';
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );
l'oggetto con la risposta (XMLHttpRequest.responseXML) viene processato
function parseResponse(originalRequest)
{
alert(originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);
Post by Andrea Rossato
}
ed infatti cosí ottengo un alert con l'id della pagina.
Personalmente ti consiglierei di incapsulare tutto in classi e di
passere oggetti.

In javascript se riesci a passare il "nome" dell'istanza puoi chiamare
tutti i metodi o attributi in qualunque parte tu voglia.

Come approccio lo vedo più sicuro e flessibile.
Post by Andrea Rossato
ora viene il problema. non riesco a far si di settarre, da questa
funzione, una variabile globale che possa essere utilizzata in altre
funzioni. inoltre da myAjax non sono in grado di accedere alla proprietà
che mi interessa: myAjax.transport.responseXML mi risulta nulla.
Questo perché credo sia possbile accedervi solo tramite callback.
Mi pare che tu non dica al Request di procedere in maniera sincrona,
percui devi fare un ciclo d'attesa che la richiesta sia soddisfatta.

Infatti il programma procede mentre la richiesta viene inoltrata in
background.
Per questo chiede una callback, che invece viene chiamanta appena la
richiesta è completata.
Post by Andrea Rossato
evidentemente qualcosa mi sufgge. da notare che il tutto avviene in un
window.onload = function() {
//ajax stuff
}
qualcuno può darmi qualche dritta, please?
mille grazie.
ciao
andrea
http://www.sergiopereira.com/articles/prototype.js.html
Mi sa che ci vorrebbe un bel corso perché tante cose sfuggono pure a me.

Guido, che ne dici?
--
Ciao,
Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Mario
2005-12-03 15:58:41 UTC
Permalink
Post by Andrea Rossato
var pageData = new Object();
var url = 'http://localhost/wakka/HomePage/ajax.xml';
var pars = 'action=getPage';
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onComplete: parseResponse} );
function parseResponse(originalRequest)
{
pageData.body =
originalRequest.responseXML.getElementsByTagName("page")[0].firstChild.nodeValue);
Post by Andrea Rossato
pagaData.id =
originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);
Post by Andrea Rossato
}
per poi accedervi da pageData.id o pageData.body, che, ovviamente, mi
tornano undefined...
Il probema è quando accedi a pageData, appunto.
Prova a settare un valore di default.
Ad esempio :

var pageDate = new Object();
pageData.body = 'NO_BODY';
pageData.id = 'NO_ID';

In questo modo puoi capire se il valore non è cambiato oppure se viene
cambiato nel frattempo o se addirittura utilizzi un altra variabile (ad
esempio locale).

Comunque dovrei vedere anche il resto del codice per capire come
utilizzi i valori.
Post by Andrea Rossato
alludevi ad un approccio del genere? o cos'altro?
Alludevo ad un approccio ad oggetti per quanto riguarda il tuo codice,
nel senso di progettarlo con le classi.

In sostanza farei :

function getEditorObject() {

if(!this.editor) this.editor = new myEditor(options);

return this.editor;

}

function myEditor() {

this.pageData = undefined;
this.pageId = undefined;
this.url = 'url';
this.myAjax = new Ajax.Request( url, {method: 'get',
parameters: pars, onComplete: getEditorObject() + '.parseResponse'} );

this.parseResponse = function(originalReques) {

this.pageData.body
originalRequest.responseXML.getElementsByTagName("page")[0].firstChild.nodeValue);

this.pagaData.id =
originalRequest.responseXML.getElementsByTagName("page_id")[0].firstChild.nodeValue);

}

....
....
}


Poi ci aggiungi il resto del codice e alla fine istanzi un oggetto per
usare l'editor :

var e = getEditorObject();

e.draw();
Post by Andrea Rossato
inoltre... mi sono fatto fregare, un'altra volta! dunque: non avevo
ancora iniziato a sviluppare un editor ajax per il mio wiki per via del
fatto che esso è servito come application/xhtml+xml, il che fa lavorare
i browser con il dom XML, per il quale non esiste innerHTML, largamente
usato in tutte le librerie ajax.
l'altro giorno avevo trovato un editor[1] che pareva funzionare con il
dom xml. ma ora mi accorgo che dipende solo dal fatto che sto usando
firefox-1.5, che deve aver adottato l'approccio di opera e permette ora
di usare innerHTML....[2] che casino.
In realtà non dovresti aver problemi ad utilizzare innerHTML, solo che
devi fare attenzione con IE, il quale ha qualche difficoltà in merito.

innerHTML non contiene altro che un ramo/albero DOM in formato stringa.

Che problemi hai riscontrato?

Hai provato : http://kupu.oscom.org/

E' l'editor utilizzato da plone.
Post by Andrea Rossato
francamente mi domando cosa possa succedere ali standard se tutta sta
bella roba ajax comincerà a proliferare...
ad ogni buon conto ora non so bene che fare....
Tempo fa ho visto un articolo che trattava l'argomento.
La voglia di utilizzare questi strumenti è tanta, molta di più di quella
di mettersi a tavolino a realizzare uno standard.
Post by Andrea Rossato
ciao e grazie per l'attenzione.
andrea
[1] http://www.wikiwyg.net/
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=155723 e
http://www.squarefree.com/burningedge/releases/1.5b1.html
Sì, conoscevo il problema della textarea.
Ma puoi girarci attorno con una input opportunamente modificata.
--
Ciao,
Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Andrea Rossato
2005-12-04 09:50:28 UTC
Permalink
Post by Mario
Alludevo ad un approccio ad oggetti per quanto riguarda il tuo codice,
nel senso di progettarlo con le classi.
function getEditorObject() {
}
function myEditor() {
}
Poi ci aggiungi il resto del codice e alla fine istanzi un oggetto per
var e = getEditorObject();
e.draw();
caro mario ti ringrazio molto dell'esempio, che mi apre gli occhi su
come strutturare la cosa. ora mi metto a sperimentare.
qui si nota la mia difficoltà ad ambientarmi nella programmazione OO, e
la tendenza ad utilizzare oggetti e metodi come fossero funzioni in un
linguaggio procedurale...
avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per
cercare di formarsi una "sensibilità" orientata agli oggetti?

per il javascript ciò che mi ha dato una visione generale del liiguaggio
è stato questo:
http://javascript-reference.info/
un cheat sheet!
Post by Mario
In realtà non dovresti aver problemi ad utilizzare innerHTML, solo che
devi fare attenzione con IE, il quale ha qualche difficoltà in merito.
innerHTML non contiene altro che un ramo/albero DOM in formato stringa.
Che problemi hai riscontrato?
il problema è che viene usato come proprietà sia per leggere ma anche
settare un ramo/albero del DOM, pur non facendone ufficialmente parte,
secondo gli standard. si tratta infatti di un'estensione proprietaria
introdotta da microsoft.[1]
da quanto leggo l'operazione di settaggio non dovrebbe essere fatta con
il dom di un documento xml (quindi in una pagina xhtml servita come
andreabbe servita: application/xhtml+xml), il dom dovrebbe essere
modificato con metodi del dom stesso.

quindi, ad esempio:
var div = document.getElementById('page');
div.innerHTML = "Ciao! <b>Io sono un pezzo di HTML</b>";

in firefox-1.5 funziona

in firefox-1.0.7 e precedenti ciò dà un errore:
Error: uncaught exception: [Exception... "Component returned failure
code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]"
nsresult: "0x80004005 (NS_ERROR_FAILURE)"

ovviamente la cosa ha molto senso e firefox-1.0.7 faceva bene a non
permetterlo: il browser fa prima un parsing del docuemnto xhtml+xml (che
è appunto xml), ma poi puoi modificare il dom con innerHTML inserendogli
una normalissima stringa. boh.
Post by Mario
Hai provato : http://kupu.oscom.org/
stessi problemi dovuti al largo di innerHTML per creare vaste porzioni
del dom.


ciao e ancora grazie.
andrea

[1]http://domscripting.com/blog/display/35 si veda anche qui per una
discussione in tema:
http://www.developer-x.com/content/innerhtml/default.html
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Nivox
2005-12-04 11:08:22 UTC
Permalink
Once upon a time Andrea Rossato wrote:
[CUT]
qui si nota la mia difficoltà ad ambientarmi nella programmazione OO, e
la tendenza ad utilizzare oggetti e metodi come fossero funzioni in un
linguaggio procedurale...
avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per
cercare di formarsi una "sensibilità" orientata agli oggetti?
Per quanto riguarda un introduzione alla programmazione object
oriented (apparte i 1000 risultati di google ricercando "object
oriented programming introduction") mi sento di consigliarti il
capitolo "Introduction to Objects" in "Thinking in C++" o
"Thinking in Java" (non ne sono certo ma credo sia quasi identico nei
due libri) di Bruce Eckel.
Tra l'altro questi entrambi sono disponibili per il download
direttamente dal [1]sito dell'autore.

[CUT]
ciao e ancora grazie.
andrea
Ciao Andrea

[1]:http://mindview.net/Books
--
Nivox

Linux Registered User #290686
Powered by: Debian Testing/Unstable
JABBER: nivox-6VaHXZgVb86aHsy+***@public.gmane.org
GPG Key ID: 0xC6A50D8D (info: www.gnupg.org)
GPG Keyserver: http://keyserver.linux.it
Vincenzo D'Andrea
2005-12-06 23:37:44 UTC
Permalink
On 12/4/05, Andrea Rossato <mailing_list-YRegFyF+hu3f3GFSK7Owkdi2O/***@public.gmane.org> wrote:
...
Post by Andrea Rossato
caro mario ti ringrazio molto dell'esempio, che mi apre gli occhi su
come strutturare la cosa. ora mi metto a sperimentare.
qui si nota la mia difficoltà ad ambientarmi nella programmazione OO, e
la tendenza ad utilizzare oggetti e metodi come fossero funzioni in un
linguaggio procedurale...
avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per
cercare di formarsi una "sensibilità" orientata agli oggetti?
il mio preferito:

Tim Budd, An Introduction to Object-Oriented Programming, 3rd edition
Addison-Wesley, 2002
ISBN: 0-201-76031-2

i primi 7 capitoli sono sul suo sito
http://web.engr.oregonstate.edu/~budd/Books/oopintro3e/
se ti piace, te lo presto per finirtelo di leggere

il punto di forza di questo libro secondo me è il fatto che si rifiuta
di insegnare la programmazione ad oggetti usando un solo linguaggio -
da un capitolo all'altro cambia linguaggio per gli esempi e ne usa una
decinai, anche se mi pare manchi Javascript.

ciao
v.
Luca Manini
2005-12-07 07:25:00 UTC
Permalink
Andrea> avresti (tu o altri) qualche lettura, anche di una certa
Andrea> tecnicità, per cercare di formarsi una "sensibilità"
Andrea> orientata agli oggetti?

Vincenzo> il mio preferito:

Vincenzo> Tim Budd, An Introduction to Object-Oriented
Vincenzo> Programming, 3rd edition Addison-Wesley, 2002 ISBN:
Vincenzo> 0-201-76031-2

Gran bel libro (io ricordo una versione precedente).
Ottimo consiglio Vinc.
--
bye, Luca

PS: Se poi (ri)trovo qualche "lettura" contro la OOP ve lo faccio
sapere: il problema della OOP è che è (di solito) troppo invitante
e un po' perché è (era?) di moda un po' perché sembra tutto "più
bello" si può tendere al over/mis-use.
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Andrea Rossato
2005-12-07 10:40:55 UTC
Permalink
Post by Vincenzo D'Andrea
Post by Andrea Rossato
avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per
cercare di formarsi una "sensibilità" orientata agli oggetti?
Tim Budd, An Introduction to Object-Oriented Programming, 3rd edition
Addison-Wesley, 2002
ISBN: 0-201-76031-2
grazie per la segnalazione. grazie anche agli altri.

ad ogni buon conto se prima guardavo con un certo sospetto il javacript,
imparando a conoscerlo lo trovo un gran bel linguaggio: una volta mi ero
messo a studiare scheme (uso lillypond che usa guile per avere scheme
come scripting language), e vi ritrovo questa impronta in js.[1]
anzi, si potrebbe usare un interprete scheme in javascript[2] per
scrivere codice scheme nelle pagine html... che prospettive si aprono
alla fantasia: ASAX!
;-)

ciao ciao
andrea
[1] http://www.crockford.com/javascript/little.html
[2] http://www.crockford.com/javascript/little.js
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Andrea Rossato
2005-12-05 18:59:33 UTC
Permalink
Post by Mario
Post by Andrea Rossato
francamente mi domando cosa possa succedere ali standard se tutta sta
bella roba ajax comincerà a proliferare...
ad ogni buon conto ora non so bene che fare....
Tempo fa ho visto un articolo che trattava l'argomento.
La voglia di utilizzare questi strumenti è tanta, molta di più di quella
di mettersi a tavolino a realizzare uno standard.
ho risolto parte dei miei problemi. ho mollato prototype, anche per via
del fatto che ne usavo solo la parte ajax, dal momento che quella dhtml
fa largo uso del sistema m$ di inserire nel dom elementi tratti da mere
stringhe (via innerHTML).
sono passato a sarisse (sarisse.sf.net), sotto gpl, e uno vero
gioiellino: da accesso diretto ad un oggetto simil XMLHttpRequest, con
la possibilità di usarne direttamente l'evento .onreadystatechange per
settare la mia variabile globale... inoltre consente di creare documenti
xml, trasformarli con il processore xslt, fare query con xpath,
serializzarli in stringhe (e fare un parsing delle stringhe per creare
un oggetto dom xml)... una vera figata, direi!

comunque sono depresso e sconcertato dalle tecnologie ajax.
forse sono io che non ci arrivo ma... con firefox-1.5 è possibile
inserire, in un documento passato come application/xhtml-xml (quindi
xml!), un iframe e manipolare questo con un altro metodo inventato di m$
(.execCommand) creando cosí un documento HTML in un documento XML! se
poi vuoi inserire il primo nel documento principale, ovviamente non puoi
perché l'innerHTML di firefox-1.5 funziona con un dom xml (ironico il
nome), ma vuole solo stringhe che siano xml ben formato.
ha senso? ha senso mandare ad un browser un documento xml ben formato e
valido (xhtml-1.1), con tanto di dichiarazione dtd, e puoi venirne fuori
con roba, magari ben formata, ma invalida? se poi devi processarla con
xslt sul lato client cosa ti ritrovi in mano?
questa però è la pratica comune di chi fa ajax interattivo, se ben
capisco. tanto i validator non possono beccarti...

ciao
andrea
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Daniele P.
2005-12-06 09:10:22 UTC
Permalink
Post by Andrea Rossato
questa però è la pratica comune di chi fa ajax interattivo, se ben
capisco. tanto i validator non possono beccarti...
Veramente con un po' di manualità si può controllare pure quello, ok,
non è molto comodo, ma una validazione ogni tanto si può fare:
Firefox, menu File Save Generated Page, probabilmente solo se hai un
estensione tipo view formatted source o più probabilmente view rendered
source.

Ciao,
Daniele P.
Mario
2005-12-04 11:07:26 UTC
Permalink
Post by Andrea Rossato
caro mario ti ringrazio molto dell'esempio, che mi apre gli occhi su
come strutturare la cosa. ora mi metto a sperimentare.
qui si nota la mia difficoltà ad ambientarmi nella programmazione OO, e
la tendenza ad utilizzare oggetti e metodi come fossero funzioni in un
linguaggio procedurale...
avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per
cercare di formarsi una "sensibilità" orientata agli oggetti?
Direi che i tasselli che mancano sono sostanzialmente 2.

Il primo è la programmazione a eventi, che non è propria dell'ambiente Web.

Il secondo è appunto l'approccio OO.

In merito al secondo dovrebbero esserci abbondanti documenti in rete.

Questa mi pare una bella guida introduttiva alla teoria, quindi senza
esempi di codice :
http://www.accu.org/acornsig/public/articles/ood_intro.html

Per quanto riguarda le applicazioni nei vari linguaggi c'è il mitico
Bruce Eckel, un programmatore di ottima esperienza OO che è anche un
ottimo scrittore.

Ti consiglio il suo : Thinking in patterns

http://www.mindview.net/

Trovi tutti i suoi libri in pdf, ha scritto guide object oriented per
diversi linguaggi (Java, C++, python...)

In javascript non ha fatto nulla, ma l'applicazione dei concetti risulta
più semplice dopo averne preso confidenza su altri linguaggi.

L'OO presenta alcune parti importanti oltre alla teoria di base :

1 design patterns, ovvero strutture già confezionate per risolvere
alcuni problemi, sono concetti di design, quindi il codice è da
scrivere, ma sono paradigmi interessanti perché permettono di dare la
soluzione migliore a certi problemi.

2 extreme programming, un approccio alla programmazione che punta a
ottenere un codice di alta qualità attraverso l'impiego di uno schema
preciso di lavoro.

3 paradigma a framework, ma questo è utile soltanto se si è intenzionati
a realizzare qualcosa che può essere impiegato in varie situazioni con
piccoli aggiustamenti.
Post by Andrea Rossato
per il javascript ciò che mi ha dato una visione generale del liiguaggio
http://javascript-reference.info/
un cheat sheet!
Come diceva anche Guido javascript è più una acquisizione di esperienza
attraverso l'utilizzo di trucchi che non imparare il linguaggio di per se.
Questo perché la struttura del linguaggio è molto semplice ed il limite
consiste solo nella conoscenza che il programmatore ha del mondo Web.

Fra gli esempi di codice interessante che ho visto ultimamente c'è
http://www.tiddlywiki.com/

Forse potresti cannibbalizzare diverse parti per utilizzarle sul tuo editor.
Post by Andrea Rossato
il problema è che viene usato come proprietà sia per leggere ma anche
settare un ramo/albero del DOM, pur non facendone ufficialmente parte,
secondo gli standard. si tratta infatti di un'estensione proprietaria
introdotta da microsoft.[1]
da quanto leggo l'operazione di settaggio non dovrebbe essere fatta con
il dom di un documento xml (quindi in una pagina xhtml servita come
andreabbe servita: application/xhtml+xml), il dom dovrebbe essere
modificato con metodi del dom stesso.
var div = document.getElementById('page');
div.innerHTML = "Ciao! <b>Io sono un pezzo di HTML</b>";
in firefox-1.5 funziona
Error: uncaught exception: [Exception... "Component returned failure
code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]"
nsresult: "0x80004005 (NS_ERROR_FAILURE)"
ovviamente la cosa ha molto senso e firefox-1.0.7 faceva bene a non
permetterlo: il browser fa prima un parsing del docuemnto xhtml+xml (che
è appunto xml), ma poi puoi modificare il dom con innerHTML inserendogli
una normalissima stringa. boh.
Capisco.
Potresti implementare comunque in questo modo le varie parti, mettendo
il tutto in un catch[1], e in caso di eccezione implementare una
truttura via dom, vale a dire utlizzando appendChild e
createElement/createTextNode ricorsivo.
Post by Andrea Rossato
ciao e ancora grazie.
andrea
Figurati, anzi la cosa mi interessa e se ti serve una mano sarei felice
di dartela.

[1] In javascript è possibile utilizzare la gestione degli errori con la
seguente sintassi :

try {
// code
} catch(error) {
// code on error
}

E' utilissiomo per debuggare i problemi su explorer.
Inoltre con throw puoi anche scatenare eccezioni che quindi ti aiutano a
individuare dove si scatena il problema.

Lo riporto perché è una parte recente in javascript, forse non tutti i
browser lo supportano (Mozilla 1.1 >/Firefox 1.0 > /IE 6.0 > sì da
quello che ho provato).
--
Ciao,
Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Mario
2005-12-04 11:29:27 UTC
Permalink
Post by Guido
Sviluppare il Javascript richiede esperienza, nel senso che ciascuno di
noi, a forza di sbattere la testa si è costruito il proprio piccolo
mondo, il proprio modo di sviluppare.
Quindi più che un corso sulla programmazione javascript, che comunque
andrebbe fatto nelle prime lezioni per dare le basi, c'è da mostrare un
po' di piccoli trucchi e del codice funzionante.
Appunto, ma credo si possano dare anche delle indicazioni di massima
sull'approccio a certi problemi.
Post by Guido
Purtroppo con il DOM dei browser si è costretti a provare prima di poter
affermare che funziona; provare non solo su un browser a caso, ma su
tutti quelli con i quali si vuol potersi vantare di essere compatibili :-(
Per mostrare del codice sul quale poi poterci fare delle lezioni si deve
poter costruire dei "dimostratori" in quanto mostrare il codice di un
prodotto finito, spesso è il miscuglio di tante cose che a livello
didattico generano tanta confusione.
GIà, mischiare php|perl|python|... con HTML/XHTML/XML con CSS/XSLT con
Javascript non semplifica di molto.

Meglio stare su esempi out of the box.
Post by Guido
Alla biblioteca si era parlato di questo, come un modo possibile, se non
l'unico modo possibile per poter sperimentare programmazione AJAX & Co.;
mi sono promesso di fare qualcosa, anche perchè mi serve per il lavoro
uno strumento di test per verificare ad ogni rilascio di nuove release
dei browser.
Ho visto che il progetto mozilla ha una serie di testcase per javascript
già realizzato.
E' una quantità mastodontica di codice, ma forse puoi farci un giro per
capire se l'approccio che utilizzano è recuperabile al tuo scopo.
Post by Guido
Se si confezionano dei "dimostratori" per ciascuna tecnica è possibile
rapidamente fare una serie di test e verificare se qualche verifica dà
risultati negativi o cumunque differenti dal previsto.
Già, credo che il problema sia che scrivere codice multibrowser sia un
problema a se rispetto alla programmazione normale.
Negli altri linguaggi il problema è vissuto in maniera meno traumatica.
Post by Guido
Non sarebbe la prima volta che una applicazione smette di funzionare o
si comporta in modo "bizzarro" cambiando release del browser e si sudano
7 camicie per isolare il problema.
Purtroppo il tempo è avaro ed a dicembre tutti corrono ai ripari; si
lavora come matti e non c'è tempo per gli investimenti; quindi per
un'idea di corso su Ajax e dintorni dobbiamo rimandare al prossimo anno
... anche perchè c'è in ballo il corso Sysadmin fino a gennaio.
bye
Guido
Comunque se vuoi calcolami come volontario per il progetto "Corso
javascript" (al momento non mi viene in mente un altra etichetta).

Magari potremmo lanciare una e-mail. nel frattempo, e vedere quanto
interesse c'è alla cosa.
--
Ciao,
Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Continue reading on narkive:
Loading...