Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

Gli sto dando un'occhiata ... l'intento è simile ma la struttura /
utilizzo totalmente differente, ACE ha meno "sbattimento" sia client che
server.

Se poi non interesserà a nessuno o nessuno lo userà pazienza, lo
sfrutterò solo io :P

Cmq ACE dovrebbe poter stare anche in Nevow ed altri, intanto lo finisco
per il mod_python poi vediamo :E


ACE? Ho come l'impressione che ogni tanto qualcuno cui non faccia
reply to all e ci si perda i pezzi nella ml :-)

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Manlio Perillo
Andrea Giammarchi ha scritto:
> Manlio Perillo ha scritto:
>> Nevow Athena.
> Gli sto dando un'occhiata ... l'intento è simile ma la struttura /
> utilizzo totalmente differente, ACE ha meno "sbattimento" sia client che
> server.
> 

Potresti almeno vedere come viene usato JSON.
Comunque (non l'ho mai usato) mi sembra che con Athena puoi dialogare in
entrambe le direzioni, non solo client -> server.

> Se poi non interesserà a nessuno o nessuno lo userà pazienza, lo
> sfrutterò solo io :P
> 

No, sembra interessante.

> Cmq ACE dovrebbe poter stare anche in Nevow ed altri, intanto lo finisco
> per il mod_python poi vediamo :E
> 

Tutta la parte di base è indipendente dal web server.

Quest'ultimo (e quindi Apache, Twisted Web) ti serve solo per ricevere
le varie richieste via HTTP.

Dai anche un occhio a come è sviluppato Twisted Perspective Broker,
perchè il modello che ti serve credo sia lo stesso.

Mi chiedo se sia possibile adattarlo per serializzare in JSON e far
passare le richieste via HTTP: chiedo nella mailing list di Twisted.

Infine c'è anche MochiKit (scritta da uno sviluppatore di Twisted, mi
sembra).



Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

Comunque (non l'ho mai usato) mi sembra che con Athena puoi dialogare in
entrambe le direzioni, non solo client -> server.


Yup


Infine c'è anche MochiKit (scritta da uno sviluppatore di Twisted, mi
sembra).


No, Ippolito non è uno sviluppatore di Twisted. E' il creatore di
PyObjC e altra roba

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Manlio Perillo
Lawrence Oluyede ha scritto:
>> Gli sto dando un'occhiata ... l'intento è simile ma la struttura /
>> utilizzo totalmente differente, ACE ha meno "sbattimento" sia client che
>> server.
>>
>> Se poi non interesserà a nessuno o nessuno lo userà pazienza, lo
>> sfrutterò solo io :P
>>
>> Cmq ACE dovrebbe poter stare anche in Nevow ed altri, intanto lo finisco
>> per il mod_python poi vediamo :E
> 
> ACE? Ho come l'impressione che ogni tanto qualcuno cui non faccia
> reply to all e ci si perda i pezzi nella ml :-)
> 

Allora è deciso, imposto l'header Reply-To in mailman ;-).
E' veramente un casino senza...


Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Marco Mariani
Andrea Giammarchi wrote:Manlio Perillo ha scritto:
> P.S. il progettino si chiama ACE, altro non è che una libreria
> trasparente per richiamare methodi di classi python sul server tramite
> JS (esempio: (new MyPyClass()).getUserList()) , "un'altra cavolatina
> ajax" insomma, ma non esistono progetti analoghi o almeno non ne conosco
http://zif.hill-street.net/jsonserver

> La lib non è ancora stata approvata su phpclasses.org ma è già
> ultimata ... per Python si parte dalla PHP_Serialize con classi e
> liste => array classi: http://www.devpro.it/code/131.html per avere un
> front-end JS portabile (1 front-end JS riutilizzabile su diversi
> back-end) ed uno scambio dati "nativo" ma non limitato come quello di JSON
Limitato, in che senso? Nel senso di "sicuro" ? :-)

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Carlo C8E Miron

On 8/18/06, Manlio Perillo <[EMAIL PROTECTED]> wrote:

Lawrence Oluyede ha scritto:
> ACE? Ho come l'impressione che ogni tanto qualcuno cui non faccia
> reply to all e ci si perda i pezzi nella ml :-)

Allora è deciso, imposto l'header Reply-To in mailman ;-).
E' veramente un casino senza...


Immagino si tratti di un joke. in caso contrario, sono assolutamente -1.
Eheheh, qualcuno ricorda la tipa che disse un sacco di cattiverie ad adeL
su questa lista, quando era ospitata sul suo dominio, convinta di star
rispondendo
in privato ad un altro tizio?
Meraviglia.

(c)

--
Carlo C8E Miron, ICQ #26429731
--
Disclaimer:
If I receive a message from you, you are agreeing that:
1. I am by definition, "the intended recipient".
2. All information in the email is mine to do with as I see fit and
make such financial profit, political mileage, or good joke as it
lends itself to. In particular, I may quote it on USENET or the WWW.
3. I may take the contents as representing the views of your company.
4. This overrides any disclaimer or statement of confidentiality that
may be included on your message.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Manlio Perillo
Carlo C8E Miron ha scritto:
> On 8/18/06, Manlio Perillo <[EMAIL PROTECTED]> wrote:
>> Lawrence Oluyede ha scritto:
>> > ACE? Ho come l'impressione che ogni tanto qualcuno cui non faccia
>> > reply to all e ci si perda i pezzi nella ml :-)
>>
>> Allora è deciso, imposto l'header Reply-To in mailman ;-).
>> E' veramente un casino senza...
> 
> Immagino si tratti di un joke. 

Non era mia intenzione ;-)

> in caso contrario, sono assolutamente -1.
> Eheheh, qualcuno ricorda la tipa che disse un sacco di cattiverie ad adeL
> su questa lista, quando era ospitata sul suo dominio, convinta di star
> rispondendo
> in privato ad un altro tizio?
> Meraviglia.
> 

Davvero?
Una tizia?

Questa mailing list è sempre stata ospitata sul dominio lists.python.it,
a cosa ti stai riferendo?



Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Carlo C8E Miron

On 8/18/06, Manlio Perillo <[EMAIL PROTECTED]> wrote:

Carlo C8E Miron ha scritto:
> On 8/18/06, Manlio Perillo <[EMAIL PROTECTED]> wrote:
>> Lawrence Oluyede ha scritto:
>> > ACE? Ho come l'impressione che ogni tanto qualcuno cui non faccia
>> > reply to all e ci si perda i pezzi nella ml :-)
>> Allora è deciso, imposto l'header Reply-To in mailman ;-).
>> E' veramente un casino senza...
> Immagino si tratti di un joke.

Non era mia intenzione ;-)


Mhm, famme` capi` il senso della faccina, allora...


> in caso contrario, sono assolutamente -1.
> Eheheh, qualcuno ricorda la tipa che disse un sacco di cattiverie ad adeL
> su questa lista, quando era ospitata sul suo dominio, convinta di star
> rispondendo
> in privato ad un altro tizio?
> Meraviglia.

Davvero?
Una tizia?


Si`. Non ricordo i dettagli, e non ho idea se ci siano ancora gli
archivi da qualche parte. Ma era spassosa. Puoi sempre chiedere a
Giuseppe, ma non credo lui la ricordi volentieri.. ;)


Questa mailing list è sempre stata ospitata sul dominio lists.python.it,
a cosa ti stai riferendo?


Uffa, Manlio, ma ci sei o ci fai? ;-)
Ok, allora era l'altra. Quella su zope.it, insomma. Ricordi?

--
Carlo C8E Miron, ICQ #26429731
--
Disclaimer:
If I receive a message from you, you are agreeing that:
1. I am by definition, "the intended recipient".
2. All information in the email is mine to do with as I see fit and
make such financial profit, political mileage, or good joke as it
lends itself to. In particular, I may quote it on USENET or the WWW.
3. I may take the contents as representing the views of your company.
4. This overrides any disclaimer or statement of confidentiality that
may be included on your message.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Marco Mariani ha scritto:

Limitato, in che senso? Nel senso di "sicuro" ? :-
più che sicuro, JSON trasporta solo parti di JS e non può fare, ad 
esempio, questo:

http://devpro.phpsoft.it/php_serializer/

Trasportare una classe da e verso il server.

Gli array in JS sono anche associativi (Array extends Object, quindi non 
esiste un vincolo sull'uso di array come associativi), molto simili a 
quelli PHP, improponibili ad esempio in Python (infatti la serializer 
sceglie se trasportare una dict o una list in automatico, cosa che il 
progetto ufficioso della python php serializer non fa), ma come per php 
può trasportare classi Python e sfruttarle, se presenti, anche in 
JavaScript, o crearle runtime e sfruttarle come oggetti normali.


In poche parole a parte la fagianata della strlen di php (numeri veri 
solo senza encoding diverso) il formato serializzato di php lo trovo 
assolutamente più efficace di quello JSON ed in php la fatica di 
conversione non è delegata al server (Pear, stra ottimizzata, stra lenta 
lostesso) ma al client (comunque rapidissimo su decine di migliaia di 
valori innestati o meno).


In python dovrei sfruttare una struct (della versione 2.5) oppure 
leggermi qualcosa su PyRex o fare un modulo in C così da colmare il gap 
in serializzazione / deserializzazione (ma su python non ha molto senso 
abilitare la conversione in utf8 quindi sia il JS che il python in quel 
caso sono rapidissimi).


Saluti,
   Andrea Giammarchi

P.S. JSON-RPC basato su XML tende anche ad aumentare la banda in scambio 
dati, serialize / unserialize ne prende poca in più di JSON normale (in 
realtà in certi casi molta di meno non avendo la sfilza di \xAB per ogni 
stringa unicode) e la serializzazione client mi sembra sia anche più 
veloce di quella ufficiale JSON per JS, unserialize ovviamente non regge 
il confronto, un eval post RegExp non ha equivalenti.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 14:40:07 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:
Gli array in JS sono anche associativi (Array extends Object, quindi non 
esiste un vincolo sull'uso di array come associativi), molto simili a quelli 
PHP, improponibili ad esempio in Python (infatti la serializer sceglie se 
trasportare una dict o una list in automatico, cosa che il progetto 
ufficioso della python php serializer non fa), ma come per php può 
trasportare classi Python e sfruttarle, se presenti, anche in JavaScript, o 
crearle runtime e sfruttarle come oggetti normali.


Non e` mai una buona idea questa ed e` colma di vari pericoli concernenti la 
sicurezza. Una soluzione a questo tipo di lavoro e` definire bene un protocollo 
per lo scambio di oggetti dove sia da python che da javascript vengono scritti 
serializer/unserializer per ogni nuovo oggetto che ha la necessita` di essere 
trasportato. A conti fatti questo e` abbastanza inutile perche` nessuno ha 
davvero bisogno di scambiare oggetti python con javascript vista sia l'enorme 
differenza di capacita` (javascript essendo sandboxed non puo` fare un milione 
di cose tipo aprire file sul filesystem, pertanto non ha senso serializzare una 
classe che ha un fd aperto ad esempio).

Che JSON poi non sia il massimo e` anche vero ma scambiando oggetti semplici 
comprensibili da javascript funziona benissimo e ci puoi scrivere applicazioni 
enormemente complesse con poca difficolta`.

In poche parole a parte la fagianata della strlen di php (numeri veri solo 
senza encoding diverso) il formato serializzato di php lo trovo 


Che significa numeri veri senza encoding diverso?

assolutamente più efficace di quello JSON ed in php la fatica di conversione 
non è delegata al server (Pear, stra ottimizzata, stra lenta lostesso) ma al 
client (comunque rapidissimo su decine di migliaia di valori innestati o 
meno).


Il server non serializza e sinceramente la vedo dura trasmettere dei dati su 
socket senza serializzare in qualche modo.

Quando il client trasmette serializza e il server deserializza e vice versa.
JSON comunque ha il vantaggio di avere il parser piu` veloce del mondo lato 
client... Il browser che fa eval().

In python dovrei sfruttare una struct (della versione 2.5) oppure leggermi 


Che hanno le struct della versione 2.5? E come le parsi lato javascript? Puoi 
fare packing/unpacking di binari in javascript con piu` facilita` che un eval?

qualcosa su PyRex o fare un modulo in C così da colmare il gap in 
serializzazione / deserializzazione (ma su python non ha molto senso 
abilitare la conversione in utf8 quindi sia il JS che il python in quel caso 
sono rapidissimi).


Non mi e` chiaro cosa abbia a che fare Pyrex con questo.

P.S. JSON-RPC basato su XML tende anche ad aumentare la banda in scambio 
dati, serialize / unserialize ne prende poca in più di JSON normale (in 
realtà in certi casi molta di meno non avendo la sfilza di \xAB per ogni 
stringa unicode) e la serializzazione client mi sembra sia anche più veloce 
di quella ufficiale JSON per JS, unserialize ovviamente non regge il 
confronto, un eval post RegExp non ha equivalenti.


Non esistono stringhe unicode che possano essere trasmesse su un socket. Il 
socket e` byte oriented e unicode no (non si possono trasmettere stringhe senza 
che vengano codificate in qualche modo).
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

On 8/18/06, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Marco Mariani ha scritto:
> Limitato, in che senso? Nel senso di "sicuro" ? :-
più che sicuro, JSON trasporta solo parti di JS e non può fare, ad
esempio, questo:
http://devpro.phpsoft.it/php_serializer/

Trasportare una classe da e verso il server.


Mi pare un buco di sicurezza grande come una casa, anche perchè
deseriallizare roba non trusted non  è mai geniale. Esempio:
http://jcalderone.livejournal.com/15864.html


Gli array in JS sono anche associativi (Array extends Object, quindi non
esiste un vincolo sull'uso di array come associativi),


Boh io uso JS da una settimana quindi non sono di certo esperto ma mi
sono sempre sentito dire di non usare gli Array come associativi, ma
usare gli Object appunto o la sintassi {}. Per motivi quali il
comportamento di for..in, della proprietà length e altre cose. Tra
l'altro né la Core Javascript Reference di Mozilla
(http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array)
né lo standard incoraggiano tale uso. Una spiegazione dettagliata la
trovi qui: 
http://www.andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/


molto simili a
quelli PHP,


e non è un pregio :-P


improponibili ad esempio in Python (infatti la serializer
sceglie se trasportare una dict o una list in automatico, cosa che il
progetto ufficioso della python php serializer non fa),


In Python esistono i dizionari e le liste e sono due tipi ben separati
proprio per questo, almeno da quanto ho capito di quello che hai
scritto.


ma come per php
può trasportare classi Python e sfruttarle, se presenti, anche in
JavaScript, o crearle runtime e sfruttarle come oggetti normali.


Mi domando perchè non usare semplicemente JSON per trasportare dati (o
XML se hai voglia di parsare)


In python dovrei sfruttare una struct (della versione 2.5) oppure
leggermi qualcosa su PyRex o fare un modulo in C così da colmare il gap
in serializzazione / deserializzazione (ma su python non ha molto senso
abilitare la conversione in utf8 quindi sia il JS che il python in quel
caso sono rapidissimi).


Sicuramente riguarda il fatto che mi son perso un pezzo della vostra
discussione... ma che stai cercando di fare in concreto :-) ?


il confronto, un eval post RegExp non ha equivalenti.


l'eval non mi pare mister sicurezza... anche dietro una regexp

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] richiesta cancellazione news-letters

2006-08-18 Per discussione Andrea Russo



Vorrei cancellarmi dall'iscrizione circa le news di 
python.it
Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] richiesta cancellazione news-letters

2006-08-18 Per discussione Lawrence Oluyede

Vorrei cancellarmi dall'iscrizione circa le news di python.it
Grazie



http://lists.python.it/mailman/listinfo/python


Usa questo link, in fondo alla pagina c'è un campo di testo in cui
mettere la tua mail e un pulsante con scritto "cancellati o modifica"

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Creazione modulo in PyRex

2006-08-18 Per discussione Andrea Giammarchi

Sera :D

... allora, ho scritto la PHP_Serializer per PyRex, l'ho "pyrexcata" da 
.pyx a .c ... zero errori, tutto ok, lancio il build ?


C:\Python24\SVILUPPO\PHP_Serializer>python build.py build
running build
running build_ext
error: The .NET Framework SDK needs to be installed before building 
extensions f

or Python.


Bene, io ho .NET Framework 1.1 hotfixed ed il .NET Framework 2 
aggiornato, ordunque, che posso fare ?


Questo il build.py

from distutils.core import setup, Extension
import os
os.system("python pyrexc.py PHP_Serializer.pyx")
xosdExtn = Extension("PHP_Serializer", ["PHP_Serializer.c"], 
libraries=["xosd"])

setup(name="PHP_Serializer", ext_modules=[xosdExtn])


Grazie,
   Andrea Giammarchi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Creazione modulo in PyRex

2006-08-18 Per discussione Lawrence Oluyede

Bene, io ho .NET Framework 1.1 hotfixed ed il .NET Framework 2
aggiornato, ordunque, che posso fare ?


Ti manca visual studio 2003 o il compiler toolkit. Se hai fortuna
fammi sapere come hai fatto. Io son mesi che tento di far andare sta
roba :D

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:
Non e` mai una buona idea questa ed e` colma di vari pericoli 
concernenti la sicurezza.
usato male anche JSON è pericoloso, tanto quanto qualunque chiamata via 
HTTP ...



Una soluzione a questo tipo di lavoro e` definire bene un protocollo 
per lo scambio di oggetti dove sia da python che da javascript vengono 
scritti serializer/unserializer per ogni nuovo oggetto che ha la 
necessita` di essere trasportato.

già definito dal PHP, formato serialize / unserialize di php


A conti fatti questo e` abbastanza inutile perche` nessuno ha davvero 
bisogno di scambiare oggetti python con javascript vista sia l'enorme 
differenza di capacita` (javascript essendo sandboxed non puo` fare un 
milione di cose tipo aprire file sul filesystem, pertanto non ha senso 
serializzare una classe che ha un fd aperto ad esempio).
bisogna avere un Q.I. molto basso per pensare di trasportare un oggetto 
che lavora su filesystem in javascript.
Detto questo, dite di apprezzare tanto l'astrazione e vi castrate con 
questa possibilità ?


Inviare un oggetto User, manipolarlo su ogni client, aggiornarlo e 
salvarlo sul db o su un cookie, ad esempio, credi sia così inutile sul web ?


Non parlo di new User().name e basta, parlo anche di metodi ben definiti 
anche sul client come un me.login() che se da un true autentica 
l'utente, programmazione ad oggetti client tanto quanto sul server, 
facile, sicuro, cos'altro dire ?





Che JSON poi non sia il massimo e` anche vero ma scambiando oggetti 
semplici comprensibili da javascript funziona benissimo e ci puoi 
scrivere applicazioni enormemente complesse con poca difficolta`.
no, non puoi, se vuoi avere anche la possibilità di manipolare oggetti a 
polimorfismo variabile client / server (non so cosa abbia appena detto 
ma è l'unica cosa che mi veniva da dire).


Le classi e la OOP la conoscete molto bene e non capisco questo 
accanimento contro il trasporto di oggetti.





Che significa numeri veri senza encoding diverso?
utf8 ... in php serializzare 'à' può produrre, in charset non UTF-8, 
s:1:"à";  in un charset UTF8 o con dati salvati in UTF8 produce 
invece s:2:"à";  il 2 non è la length della stringa, è il numero di 
bytes usati per essa. Questa caratteristica rallenta la riconversione in 
UTF8 ma solo col PHP, se JS è usato con Python o C# questa "features" 
non è necessaria, quindi nessun rallentamento.



Il server non serializza e sinceramente la vedo dura trasmettere dei 
dati su socket senza serializzare in qualche modo.
facciamo a capirci ... la classe Pear per "serializzare" e 
"deserializzare" JSON, per quanto ottimizzata, è un mostro di lentezza 
perchè deve fare un char by char con non so quante regexp per ogni 
stringa che incontra. La versione compilata non è quasi mai presente 
negli hosts e quindi usare quella classe è un suicidio per prestazioni e 
risorse.


serialize() ed unserialize() sono funzioni in-core, sempre presente, 
scritte in C, rapidissime  ergo il server lavora 1/20 ed usa 1/20 
delle risorse ed è molto più veloce.
Stando a questo, usare serialize invece di JSON premette veramente di 
creare applicativi enormenente complessi capaci di gestire una "enorme" 
utenza.




Quando il client trasmette serializza e il server deserializza e vice 
versa.
JSON comunque ha il vantaggio di avere il parser piu` veloce del mondo 
lato client... Il browser che fa eval().
si, lo so, ma la PHP_Serializer ha tutti i tricks possibili per far si 
che non si noti la differenza tra le due versioni e delega comunque il 
compito al client, nel caso di PHP.




Che hanno le struct della versione 2.5? E come le parsi lato 
javascript? Puoi fare packing/unpacking di binari in javascript con 
piu` facilita` che un eval?
non ho approfondito ma pare pseudo compilino e mettano in cache e siano 
più veloci di almeno un 20% rispetto le precedenti.
La facilità di un eval non mi interessa affatto quando il problema dei 
siti è sempre il server e raramente i calcoli sul client.




Non mi e` chiaro cosa abbia a che fare Pyrex con questo.
Un modulo in C sicuramente più veloce del solo Python per fare una 
PHP_Serializer per quest ultimo che non sprechi troppe risorse  cosa 
che ho già scritto, ma che non va per via di un.NET framework ...




Non esistono stringhe unicode che possano essere trasmesse su un 
socket. Il socket e` byte oriented e unicode no (non si possono 
trasmettere stringhe senza che vengano codificate in qualche modo).

Parlavo di UTF-8, errore mio.

Andrea Giammarchi

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi
Vorrei solodire che mi si era impallato l'host e mi sono perso 
probabilmente altri messaggi quindi mi scuso se non ho risposto anche 
agli altri.


Aggiungo che ACE utilizza una versione light del methodTable, sistema 
sfruttato dal progetto AMFPHP nonchè da quello analogo per Perl e Python.
Trattasi di Flash remoting, utilizzo di oggetti server sul client ed 
invio di oggetti client al server, disponibile ufficialmente anche per 
J2EE ed ASP.NET.
Quindi visto che tutti i linguaggi più note hanno da anni utilizzato il 
trasporto di oggetti da e verso il client, se esiste un filtro 
(methodTable) ed in questi anni nessuno s'è mai accanito sulla 
pericolosità dello scambio di oggetti attraverso questo filtro, presumo 
che ACE non debba preoccupare nessuno, salvo bugs miei sul codice, ma il 
sorgente è Open.


Unica accortezza che forse inserirò nelle F.A.Q. è la questione degli 
oggetti, che non è detto debbano essere disponibili (sul client sono 
creati runtime se non presenti, anche sul server in generale per 
permetterne la restituzione) perchè possono anche viaggiare 
tranquillamente per permettere di modificare solo qualche proprietà (una 
lista di informazioni assegnata a noti parametri) ed essere restituito 
senza richiamare alcun metodo ma con informazioni aggiornate.
A quel punto il client avrà l'oggetto aggiornato restituito dal server, 
poco consigliabile fare questa operazione al contrario.


In ultimo, se in Pippo(): def register(self, ClientObject): mi aspetto 
che ClientObject sia un'istanza esatta di un'altra classe già definita 
in Python sapete meglio di me come controllarlo e solo se tale allora 
userò il metodo che mi server, ma sono casi molto particolari, che 
starebbero meglio in un'area admin post autenticazione... ma non per 
questo non devono poter esistere (imho) visto che farlo è possibile.


ACE per python (PyACE ??? :P) crea la classe runtime solo se esistente, 
altrimenti restituisce un dict perche PyRex non supporta exec e non sono 
riuscito a trovare il modo nella serializer per PyRex di crere una 
classe runtime :-(
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 19:09:26 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:
usato male anche JSON è pericoloso, tanto quanto qualunque chiamata via HTTP 
...


Chiaro ma e` piu` difficile usare male qualcosa che usarlo e basta.


già definito dal PHP, formato serialize / unserialize di php


Trovo questo modo di introdurre una roba di php in python piuttosto 
discutibile, ad ogni modo: come funziona questo formato?

bisogna avere un Q.I. molto basso per pensare di trasportare un oggetto che 
lavora su filesystem in javascript.


Allora non capisco... Se il tuo 'oggetto' e` un contenitore di tipi builtin 
tutto quello che stai facendo e` assolutamente inutile. I metodi non li puoi 
trasferire da javascript a python, puoi semplicemente trasferire lo stato. In 
python pero` gli oggetti non sono altro che dizionari, allora perche` 
complicarsi la vita per scrivere tutto sto popo` di roba quando basta saper 
trasmettere dizionari?

Detto questo, dite di apprezzare tanto l'astrazione e vi castrate con questa 
possibilità ?


Castrare? Bisognerebbe conoscerlo python prima di avanzare ipotesi :).

Inviare un oggetto User, manipolarlo su ogni client, aggiornarlo e salvarlo 
sul db o su un cookie, ad esempio, credi sia così inutile sul web ?


Prima mi spieghi cosa significa quello che hai scritto. Mi riferisco a 
'manipolarlo su ogni client'. Senza contare la totale inutilita` del 
serializzare oggetti arbitrari quando quello che vuoi e` semplicemente inviare 
un dizionario. Che una volta chiamato user come variabile sul client puo` 
essere usato attraverso user.nomeutente come se fosse un oggetto.

Io questo non lo chiamerei castrare, lo chiamerei evitare di lavorare il doppio.

Non parlo di new User().name e basta, parlo anche di metodi ben definiti 
anche sul client come un me.login() che se da un true autentica l'utente, 
programmazione ad oggetti client tanto quanto sul server, facile, sicuro, 
cos'altro dire ?


Che io faccio gia` cosi` senza dover trasmettere oggetti. Pazienza eh :).

no, non puoi, se vuoi avere anche la possibilità di manipolare oggetti a 
polimorfismo variabile client / server (non so cosa abbia appena detto ma è 
l'unica cosa che mi veniva da dire).


Ma che dici? polimorfismo variabile client / server? 

Le classi e la OOP la conoscete molto bene e non capisco questo accanimento 
contro il trasporto di oggetti.

Che significa numeri veri senza encoding diverso?


utf8 ... in php serializzare 'à' può produrre, in charset non UTF-8, 
s:1:"à";  in un charset UTF8 o con dati salvati in UTF8 produce invece 
s:2:"à";  il 2 non è la length della stringa, è il numero di bytes usati 
per essa. Questa caratteristica rallenta la riconversione in UTF8 ma solo 
col PHP, se JS è usato con Python o C# questa "features" non è necessaria, 
quindi nessun rallentamento.


Decisamente non sai cosa siano gli encoding... E non ti biasimo venendo da php. 
Nel mondo esistono due tipi di stringhe. stringhe di bytes e stringhe di testo. 
Le stringhe di byte sono tali perche` codificate in un certo modo, la funzione 
len() su di esse ritorna appunto la lunghezza di tale stringa.
Le stringhe di testo invece sono in unicode e la funzione len() ritorna il 
numero di caratteri.
Perche` e` assurdo che la stringa di byte (ovvero una stringa di testo 
codificata in utf-8) debba ritornare i caratteri e non la lunghezza? Perche` se 
non gli dici che encoding usa non c'e` alcun modo per differenziare i caratteri 
che la compongono.

Noto tanta confusione riguardo alle stringhe dagli utenti php. Per quanto si 
puo` capire per PHP unicode e UTF-8 sono la stessa cosa, non mi stupisce dunque 
che il comportamento della len sia fuori dalla comprensione umana.

Per maggiori informazioni:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know 
About Unicode and Character Sets (No Excuses!)
http://www.joelonsoftware.com/articles/Unicode.html

facciamo a capirci ... la classe Pear per "serializzare" e "deserializzare" 
JSON, per quanto ottimizzata, è un mostro di lentezza perchè deve fare un 
char by char con non so quante regexp per ogni stringa che incontra. La 
versione compilata non è quasi mai presente negli hosts e quindi usare 
quella classe è un suicidio per prestazioni e risorse.


Ma stiamo usando python per cui mi sfugge il nesso.

Stando a questo, usare serialize invece di JSON premette veramente di creare 
applicativi enormenente complessi capaci di gestire una "enorme" utenza.


Io lo faccio gia` usando json, e lo fanno tantissimi altri developer python. 
Che ne dici di evitare di pensare a python come a quel accrocchio di php?

si, lo so, ma la PHP_Serializer ha tutti i tricks possibili per far si che 
non si noti la differenza tra le due versioni e delega comunque il compito 
al client, nel caso di PHP.


Come fa a delegare il compito al client? Inoltre PHP_serializer si chiama 
PHP_serializer, prima di implementarla, anche se utilissima, sarebbe bene 
imparare cio` che esiste g

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 19:26:17 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

ACE per python (PyACE ??? :P) crea la classe runtime solo se esistente, 
altrimenti restituisce un dict perche PyRex non supporta exec e non sono 
riuscito a trovare il modo nella serializer per PyRex di crere una classe 
runtime :-(


Lo sapevo io. exec e eval sono due modi _SICURI_ di avere problemi di QUALSIASI 
genere. Se l'architettura del tuo sistema parte da questo stai pur certo che 
_ha_ problemi di sicurezza e non sono dovuti allo scambio di dati ma proprio al 
tuo serializer/deserializer.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

già definito dal PHP, formato serialize / unserialize di php


Mi sfugge perchè fare il porting di sta cosa se esiste già JSON.
Sono andato a vedere la documentazione di serialize()/unserialize()

serialize() è uguale a dump() di cPickle e unserialize() è uguale (e
immagino altrettanto insicura) di load().
Magari non sapevi dell'esistenza di pickle in Python:
http://docs.python.org/lib/module-pickle.html


Inviare un oggetto User, manipolarlo su ogni client, aggiornarlo e
salvarlo sul db o su un cookie, ad esempio, credi sia così inutile sul web ?


Non lo è, ma per questo esistono i protocolli RPC, come pyro, soap,
xml-rpc, perspective broker.
Avrebbe senso implementarne uno se avessi provato quelli esistenti,
no? Almeno io di solito faccio cosi prima di reinventare l'acqua calda


no, non puoi, se vuoi avere anche la possibilità di manipolare oggetti a
polimorfismo variabile client / server (non so cosa abbia appena detto
ma è l'unica cosa che mi veniva da dire).


Beh non ha senso sta frase, almeno per me


Le classi e la OOP la conoscete molto bene e non capisco questo
accanimento contro il trasporto di oggetti.


OOP non c'entra una mazza con il trasporto di oggetti, e sinceramente
io non mi sto accanendo contro il remoting di oggetti. Sto cercando di
capire che piffero vuoi fare te con Python :-)


facciamo a capirci ... la classe Pear per "serializzare" e
"deserializzare" JSON, per quanto ottimizzata, è un mostro di lentezza
perchè deve fare un char by char con non so quante regexp per ogni
stringa che incontra. La versione compilata non è quasi mai presente
negli hosts e quindi usare quella classe è un suicidio per prestazioni e
risorse.


Ok ma questo sarà un problema di PHP no? Io non so quanto sia veloce o
lenta simple_json come libreria ma che senso ha implementare roba in
Python basandosi sulle performance delle robe in PHP?


serialize() ed unserialize() sono funzioni in-core, sempre presente,
scritte in C, rapidissime  ergo il server lavora 1/20 ed usa 1/20
delle risorse ed è molto più veloce.


Voglio proprio vederti a fare unserialize() in qualsiasi ambinente


Un modulo in C sicuramente più veloce del solo Python per fare una
PHP_Serializer per quest ultimo che non sprechi troppe risorse  cosa
che ho già scritto, ma che non va per via di un.NET framework ...


cPickle è in C, ma continuo a sconsigliarti di usarlo per fare
remoting di oggetti.


--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

Aggiungo che ACE utilizza una versione light del methodTable, sistema
sfruttato dal progetto AMFPHP nonchè da quello analogo per Perl e Python.
Trattasi di Flash remoting, utilizzo di oggetti server sul client ed
invio di oggetti client al server, disponibile ufficialmente anche per
J2EE ed ASP.NET.


Mi pare quello che stavo facendo proprio l'altro ieri con Nevow in Python :-)


Quindi visto che tutti i linguaggi più note hanno da anni utilizzato il
trasporto di oggetti da e verso il client, se esiste un filtro
(methodTable) ed in questi anni nessuno s'è mai accanito sulla
pericolosità dello scambio di oggetti attraverso questo filtro, presumo
che ACE non debba preoccupare nessuno, salvo bugs miei sul codice, ma il
sorgente è Open.


Mi pare che Flash giri in un ambiente "boxed" dove i danni che può
fare sono limitati. Solo ultimamente c'è la possibilità di fare
uploading e quindi in un certo qual modo accedere al server, ma magari
mi sbaglio (sulle possibilità del Flash player intendo)


In ultimo, se in Pippo(): def register(self, ClientObject): mi aspetto
che ClientObject sia un'istanza esatta di un'altra classe già definita
in Python sapete meglio di me come controllarlo e solo se tale allora
userò il metodo che mi server, ma sono casi molto particolari, che
starebbero meglio in un'area admin post autenticazione... ma non per
questo non devono poter esistere (imho) visto che farlo è possibile.


Se il tuo obiettivo è mandare oggetti python <-> python stai
reimplementando Twisted Perspective Broker, altrimenti se vuoi mandare
oggetti js <-> python stai reimplementando JSON :-P

Secondo me dovresti dare un'occhiata a Nevow Athena che fa proprio
quel che cerchi.


ACE per python (PyACE ??? :P) crea la classe runtime solo se esistente,
altrimenti restituisce un dict perche PyRex non supporta exec e non sono
riuscito a trovare il modo nella serializer per PyRex di crere una
classe runtime :-(


exec? Yeah, di all'attacker "questo sito è broken" sull'homepage che fai prima.
Comunque se vuoi creare classi a runtime puoi anche dare un'occhiata
al modulo new
http://docs.python.org/lib/module-new.html

Ma credo che il problema qui sia di tutt'altro genere




___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python






--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:
Trovo questo modo di introdurre una roba di php in python piuttosto 
discutibile,
io non introduco niente ... la libreria lavora in background, 
l'introduzione del formato serialize di PHP è lo stesso identico 
concetto di JSON, esistono versioni di serialize / unserialize per quasi 
lo stesso numero di linguaggi eh ... non è una novità e permetterebbe a 
tale libreria di lavorare su più linguggi server invece che su uno solo, 
tutto qua



ad ogni modo: come funziona questo formato?

int => i:N;
float => d:F;
bool => b:N; (dove N è 0 o 1 a seconda che sia True o False)
string => s:N:"stringa"; (dove N è la lunghezza della stringa solo se 
questa non è stata encodata in utf8 e non contiene caratteri multi-bytes)

array => a:N:{chiavi=>valori} (dove N è il numero di chiavi)
   chiavi possono essere int o stringa, i valori possono essere 
qualunque altro tipo serializzato, innestato o non
classi => O:N1:"ObjectName":N2:{parametri=>valori} (dove N1 è la lenght 
del nome o il totale dei bytes usati ed N2 è il numero di parametri)
   parametri=>valori sono come per gli array ad eccezione dei parametri 
che penso non possano essere di tipo int ma solo stringa
parametri privati o protected sono racchiusi  tra  \000 e \000 i 
protected hanno anche un asterisco se non erro


fine, manca solo "N;" che è il serializzato di un null




Allora non capisco... I metodi non li puoi trasferire da javascript a 
python, puoi semplicemente trasferire lo stato. 
e hai detto niente ... visto che lo stato ti permette di ricostruire, 
sul client se presente, o sul server, se presente, un'istanza aggiornata 
dell'oggetto.




In python pero` gli oggetti non sono altro che dizionari, allora 
perche` complicarsi la vita per scrivere tutto sto popo` di roba 
quando basta saper trasmettere dizionari?

perchè i dizionari non sono istanze di oggetti ma appunto dizionari ?
perchè non puoi usare o inviare classi client / server e gestirne lo stato ?




Castrare? Bisognerebbe conoscerlo python prima di avanzare ipotesi :).

...



Prima mi spieghi cosa significa quello che hai scritto. Mi riferisco a 
'manipolarlo su ogni client'.
significa che ogni client si gestisce la sua istanza delel sue classi, 
significa un approccio completamente OO anche sul client, usando anche 
classi e non solo {}



Senza contare la totale inutilita` del serializzare oggetti arbitrari 
quando quello che vuoi e` semplicemente inviare un dizionario.
prima dici del po po di roba, poi mi parli dell'inutilità di inviare 
stati di oggetti, quidi implementeresti un metodo dedicato che a seconda 
della classe assegna eventualmente quello o quell'altro parametro 
all'istanza dell'oggetto ??? ... io invio istanze, non devo fare altro, 
inutile eh ? per me non lo è mai stato, sarò io che ho i paraocchi bucati ?



Che una volta chiamato user come variabile sul client puo` essere 
usato attraverso user.nomeutente come se fosse un oggetto.

ma non puoi usare un metodo, come se fose istanza di classe ...


Io questo non lo chiamerei castrare, lo chiamerei evitare di lavorare 
il doppio.
e chi lavora il doppio ? lavoro per la lib, finita quella basta ... la 
lib è finita, mancano dettagli ...




Che io faccio gia` cosi` senza dover trasmettere oggetti. Pazienza eh :).
si, pazienza, tanto dato i tuoi discorsi lavori solo con dizionari, 
chissà quali "stratagemmi" per ricreare i metodi, stratagemmi inutili 
quando puoi inviare già un oggetto con quel metodo, poi l'invio di più 
oggetti non ne parliamo




Ma che dici? polimorfismo variabile client / server?
Intendo dire (in modo sicuramente ridicolo e mi ero scordato che qui non 
passava niente nemmeno se prontamente commentato) che una classe client 
può avere (come no) un riscontro con la classe server e vice-versa ma 
che le due classi si comportano in modo differente sul client e sul server.
Non è mica detto che la classe client debba avere il metodo fileWrite 
presente invece in quella server, è però vero che lo stato dell'istanza 
può viaggiare e permetterti di usare obj.fileWrite("test") sul server, 
ed obj.getText sul client, metodo che fa altro, inesistente sul server, 
come è inesistente fileWrite sul client (methodTable decide cosa 
trasportare e cosa no)
Stessa classe, stesso stato, metodi uguali con o senza lo stesso nome 
con possibilità di usare operazionidifferenti a seconda 
dell'utilizzatore, client o server.
Poi in realtà ACE permette anche questo ma si basa sulla semplicità ... 
quindi se vuoi mandargli un metodo della classe Pippo di nome sayHello 
in ACE senza alzare un dito avrai la possibilità di fare


var p = new Pippo();
p.sayHello.call();
p.sayHello.result = function(str){alert(str)}
fine, volendo hai anche
p.sayHello.progress = function(perc){alert(perc)}
per avere un riscontro in percentuale della ricezione dei dati


Decisamente non sai cosa siano gli encoding... 

... decisamente non ci capiamo ...

Perche` e` assurdo che la stringa di byte (ovvero 

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:
Lo sapevo io. exec e eval sono due modi _SICURI_ di avere problemi di 
QUALSIASI genere. Se l'architettura del tuo sistema parte da questo 
stai pur certo che _ha_ problemi di sicurezza e non sono dovuti allo 
scambio di dati ma proprio al tuo serializer/deserializer.

e cosa potrà mai accadere per una cosa tipo questa ?

exec "class " + nome + ": pass"

l'unica linea di codice tolta dalla verisone PyRex ?

Però hai ragione, devo aggiungere un controllo sul nome della classe.

con un controllo sulla stringa che accetta solo lettere ed undesrcore, 
quante possibilità ci sono di fare danni ?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Mi pare che Flash giri in un ambiente "boxed" dove i danni che può
fare sono limitati. Solo ultimamente c'è la possibilità di fare
uploading e quindi in un certo qual modo accedere al server, ma magari
mi sbaglio (sulle possibilità del Flash player intendo)
non c'è molto di boxed, un protocollo AMF replicabile, una methodTable, 
istanze di classi del server che "vanno avanti e indietro"





Se il tuo obiettivo è mandare oggetti python <-> python stai
reimplementando Twisted Perspective Broker, altrimenti se vuoi mandare
oggetti js <-> python stai reimplementando JSON :-P

no, il mio obiettivo è fare una lib per un client e diversi servers




Secondo me dovresti dare un'occhiata a Nevow Athena che fa proprio
quel che cerchi.

già visto, fa altro (di simile, ma troppo macchinoso)


exec? Yeah, di all'attacker "questo sito è broken" sull'homepage che 
fai prima.

ripongo il quesito ... quante possibilità ci sono che una stringa
pippo = "Pippo"
ed un exec "class " + pippo + ": pass"
possa far danni, ammesso che implementi un banale controllo sui 
caratteri della stringa pippo, ovvero solo [a-zA-Z_]+ ?





Comunque se vuoi creare classi a runtime puoi anche dare un'occhiata
al modulo new
http://docs.python.org/lib/module-new.html
ottimo, sono queste considerazioni / informazioni che mi servono  il 
resto lascia il tempo che trova.



Grazie,
   Andrea Giammarchi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Andrea Giammarchi ha scritto:

Comunque se vuoi creare classi a runtime puoi anche dare un'occhiata
al modulo new
http://docs.python.org/lib/module-new.html
ottimo, sono queste considerazioni / informazioni che mi servono  
il resto lascia il tempo che trova. 


aggiungo: quale modulo per verificare l'esistenza di una classe ?
Avessi un class_exsits sarei a cavallo, l'eval l'ho usato solo per 
quello (ma attendevo commenti proprio per migliorare quella classe)



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

io non introduco niente ... la libreria lavora in background,
l'introduzione del formato serialize di PHP è lo stesso identico
concetto di JSON, esistono versioni di serialize / unserialize per quasi
lo stesso numero di linguaggi eh ... non è una novità e permetterebbe a
tale libreria di lavorare su più linguggi server invece che su uno solo,
tutto qua


Perchè non usi semplicemente XML-RPC allora se ti interessa il cross language?


e hai detto niente ... visto che lo stato ti permette di ricostruire,
sul client se presente, o sul server, se presente, un'istanza aggiornata
dell'oggetto.


Beh se ti interessa passera dati rilancio xmlrpc che più standard non
si può :-)
Complicato capire cosa vuoi fare :P


> In python pero` gli oggetti non sono altro che dizionari, allora
> perche` complicarsi la vita per scrivere tutto sto popo` di roba
> quando basta saper trasmettere dizionari?
perchè i dizionari non sono istanze di oggetti ma appunto dizionari ?


A me pare che in Python un dizionario sia un oggetto, ignoro cosa sia
in PHP ma ti posso giurare che in Python un dizionario *è* un oggetto.
Ha un tipo (dict), ha una sintassi literal, ha dei metodi, uno stato.
E' un oggetto.


perchè non puoi usare o inviare classi client / server e gestirne lo stato ?


A te interessa solamente spostare informazioni dal pc X al pc Y. Passi
"dati", poi cosa ne fai è affar tuo


significa che ogni client si gestisce la sua istanza delel sue classi,


E questo mi sembra la cosa più normale del mondo dato che gli oggetti
su un client non sono quelli sull'altro.


significa un approccio completamente OO anche sul client, usando anche
classi e non solo {}


Mi sa che non hai approfondito molto Python prima di imbarcarti in
questo progetto perchè è scritto pure nel tutorial che i dizionari
sono oggetti.


prima dici del po po di roba, poi mi parli dell'inutilità di inviare
stati di oggetti, quidi implementeresti un metodo dedicato che a seconda
della classe assegna eventualmente quello o quell'altro parametro
all'istanza dell'oggetto ??? ... io invio istanze, non devo fare altro,
inutile eh ? per me non lo è mai stato, sarò io che ho i paraocchi bucati ?


Ma quanta roba devi passare da un server a un client, si può sapere?
Sembra che tu stia gestendo una foresta di dati supercomplessi di
megabyte di stato.


si, pazienza, tanto dato i tuoi discorsi lavori solo con dizionari,
chissà quali "stratagemmi" per ricreare i metodi, stratagemmi inutili
quando puoi inviare già un oggetto con quel metodo, poi l'invio di più
oggetti non ne parliamo


Sei al corrente vero che non c'è praticamente nessuna differenza tra
passare una oggetto senza metodi (quindi solo lo stato) e il
dizionario del suo stato?


Stessa classe, stesso stato, metodi uguali con o senza lo stesso nome
con possibilità di usare operazionidifferenti a seconda
dell'utilizzatore, client o server.


Mi sfugge perchè il server dovrebbe avere le stesse classi che ci sono
su N client. In tutta questa discussione il vero problema secondo me è
che non si è capito cosa stai realmente cercando di fare, a parte
tutti i termin di passare oggetti in giro. Cosa cerchi di ottenere in
soldoni?


> Perche` e` assurdo che la stringa di byte (ovvero una stringa di testo
> codificata in utf-8) debba ritornare i caratteri e non la lunghezza?
e chi l'ha mai detto ? Io ho solo detto che è una pecurialità di php e
php "soltanto" ed è la causa del rallentamento in serializzazione /
unserializzazione con JS o gli altri linguaggi quando devi interagire
con il formato serializzato di php abilitando il supporto UTF-8


Semplicemente perchè PHP ha un pessimo supporto per ciò che non è ASCII


Il nesso è la portabilità della lib, ma a quanto pare avete già
l'onnipotenza in materia e quindi una lib che con una sola scrittura del
client si porta anche in Python, oltre che PHP e C# non vi interessa.


Non è che non interessa. E' che, almeno io, non vedo il problema che
stai cercando di risolvere. Tutto qui. Non mi sembra di aver detto di
essere onnipotente o cose del genere. Ho tenuto un tono
tranquillissimo proprio perchè mi sembra che tu stia inventando
l'acqua calda e ci sono passato anche io in passato.


Strano, nell' era del "web js & ajax" avere librerie da non dover
riscrivere anche per il client dovrebbe muovere l'interesse collettivo,
proverò con gli altri linguaggi, abbandono il porting per Python ? Visto
che tutto è inutule e che non si capisce niente dell'intento o le
potenzialità della libreria devo proprio aver cannato linguaggio ...


Beh se tu stai reimplementando JSON non capisco perchè dovrebbe
esserci un interesse collettivo per una cosa che è già una RFC tra le
altre cose. Magari proponi a loro di migliorare le cose che non ti
piacciono, no?


Che ne dici di evitare di valutare ancora prima di conoscere ?


Sono tutt'orecchi, cosi finalmente capisco cosa stai realmente
cercando di implementare. Perchè questi ultimi post mi sono sembrati
un pò confusi


si, non è compatibile con le st

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

non c'è molto di boxed, un protocollo AMF replicabile, una methodTable,
istanze di classi del server che "vanno avanti e indietro"


Faccio finta di aver capito cosa è un protocollo AMF replicabile e una
methodTable :-(


no, il mio obiettivo è fare una lib per un client e diversi servers


Appunto, JSON è JS, gli altri linguaggi hanno lib. Non puoi fare una
lib multi linguaggio in un linguaggio solo, quindi se la implementi in
N linguaggi stai scrivendo librerie JSON per N linguaggi che immagino
ci siano già. Qui ci sono almeno una 15ina di linguaggi:
http://www.json.org/
Tra l'altro supporta anche UTF-8.


già visto, fa altro (di simile, ma troppo macchinoso)


Ok come non detto. In pratica la tua lib implementa l'HTTP Streaming
giusto? Tieni aperta una connessione XMLHTTPRequest e passi dati?


ripongo il quesito ... quante possibilità ci sono che una stringa
pippo = "Pippo"
ed un exec "class " + pippo + ": pass"
possa far danni, ammesso che implementi un banale controllo sui
caratteri della stringa pippo, ovvero solo [a-zA-Z_]+ ?


Ok.


ottimo, sono queste considerazioni / informazioni che mi servono  il
resto lascia il tempo che trova.


Come preferisci ma se non accetti alcun tipo di critica/considerazione
non vai lontano in una comunità. Io ne ho prese di legnate sui denti
:-)


--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

aggiungo: quale modulo per verificare l'esistenza di una classe ?
Avessi un class_exsits sarei a cavallo, l'eval l'ho usato solo per
quello (ma attendevo commenti proprio per migliorare quella classe)


Cosa vuol dire se esiste una classe? Se io scrivo "SuperPippo" in un
file Python e non è definito da nessuna parte avrai un NameError.

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:
Perchè non usi semplicemente XML-RPC allora se ti interessa il cross 
language?

perchè aumenta il consumo di banda e la latenza in risposta per il client



A me pare che in Python un dizionario sia un oggetto, ignoro cosa sia
in PHP ma ti posso giurare che in Python un dizionario *è* un oggetto.
Ha un tipo (dict), ha una sintassi literal, ha dei metodi, uno stato.
E' un oggetto.
... non passi istanze di classi , oggetti, stato di oggetti ... volevo 
dire questo ... (ramanzine altrui sul "mi sembra che invece" no, grazie)





A te interessa solamente spostare informazioni dal pc X al pc Y. Passi
"dati", poi cosa ne fai è affar tuo

buon giorno ajax





Mi sa che non hai approfondito molto Python prima di imbarcarti in
questo progetto perchè è scritto pure nel tutorial che i dizionari
sono oggetti.

ABBASTAA :CRY:




Ma quanta roba devi passare da un server a un client, si può sapere?

Tutta quella che mi pare




Sembra che tu stia gestendo una foresta di dati supercomplessi di
megabyte di stato.

no, ma se fosse ?




Sei al corrente vero che non c'è praticamente nessuna differenza tra
passare una oggetto senza metodi (quindi solo lo stato) e il
dizionario del suo stato?
la differenza sta tutta nel dovere fare altro che ricevere un'istanza 
invece di sprecare tempo per ogni tipo di dizionario di oggetto istanza 
di qualcosa che viaggia

Ovvero io scriverò meno codice di voi, più chiaro così ?




Mi sfugge perchè il server dovrebbe avere le stesse classi che ci sono
su N client.
Eh ??? ... guarda che il client lo scrivo sempre lo sviluppatore ... 
saprà quali classi far viaggiare e come e quali no.
Non sto basando la libreria su questo, HA ANCHE QUESTA POSSIBILITA' ... 
a me non sembra un concetto difficile da comprendere, visto che ce ne 
sono altre che fanno la stessa cosa in modo più macchinoso.



In tutta questa discussione il vero problema secondo me è
che non si è capito cosa stai realmente cercando di fare
Nevow Athena che bastano due righe (il modo più spicciolo per dirlo) ma 
è più leggero (sia sul client che sul server) e preformante e non sto 
cercando di farlo, ci sviluppo da tanti mesi in PHP.

Ora ho rivisto la lib in PHP che è già usata da diversi sviluppatori PHP.
La nuova versione vorrebbe poter girare anche su mod_python e forse 
altro, nonchè su C# per il quale ho già fatto la serialize ( in C# eval 
non esiste, quindi tutti tranquilli :ZIZI: )





Semplicemente perchè PHP ha un pessimo supporto per ciò che non è ASCII

appunto



Non è che non interessa. E' che, almeno io, non vedo il problema che
stai cercando di risolvere. Tutto qui. Non mi sembra di aver detto di
essere onnipotente o cose del genere. Ho tenuto un tono
tranquillissimo proprio perchè mi sembra che tu stia inventando
l'acqua calda e ci sono passato anche io in passato.
Io non cerco di risolvere problemi, cerco di imparare cose nuove su 
Python in ambito web, fare una lib come questa A ME svolterebbe 
enormemente, tutto il resto non è uguale, anche io in passato ho 
reinventato l'acqua calda, questo non è il caso.
Tutti potranno dire "ma anche con questa e quest'altra fai la stessa 
cosa" ... ebbene, no, non è così, la libreria che ho fatto è diversa, 
"tutte fanno ajax", questa lo farà a modo suo.




Beh se tu stai reimplementando JSON non capisco perchè dovrebbe
esserci un interesse collettivo per una cosa che è già una RFC tra le
altre cose. Magari proponi a loro di migliorare le cose che non ti
piacciono, no?
ho già detto cosa non mi piace di JSON e ho già detto che fare una lib 
per JSON significherebbe tagliare fuori PHP perchè la Pear ha 
prestazioni estremamente deludenti:

http://www.3site.it/blog/index.php/show/10/




Sono tutt'orecchi, cosi finalmente capisco cosa stai realmente
cercando di implementare. Perchè questi ultimi post mi sono sembrati
un pò confusi

anche a me



Cavoli, i dict SONO classi, almeno in Python. Ma anche in JS
ma non sono list ... invii una list, ti torna un dict ... con la mia 
versione 0.1beta invii una list, torna una list
le list sono classi ? i dict sono classi ? ... Python è tutto fatto di 
classi ? ... si, lo sanno tutti 





Non metto in dubbio che la cosa tu hai implementato abbia un senso e
una ragione di esistere ma mi pare la risoluzione di un problema che
ha PHP, o mi sbaglio?
come JSON trasforma tutto per JavaScript  sono problemi di 
conversione per JavaScript o sbaglio ?




___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 20:33:37 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Valentino Volonghi aka Dialtone ha scritto:
Trovo questo modo di introdurre una roba di php in python piuttosto 
discutibile,
io non introduco niente ... la libreria lavora in background, l'introduzione 
del formato serialize di PHP è lo stesso identico concetto di JSON, esistono 
versioni di serialize / unserialize per quasi lo stesso numero di linguaggi 
eh ... non è una novità e permetterebbe a tale libreria di lavorare su più 
linguggi server invece che su uno solo, tutto qua




ad ogni modo: come funziona questo formato?

int => i:N;
float => d:F;
bool => b:N; (dove N è 0 o 1 a seconda che sia True o False)
string => s:N:"stringa"; (dove N è la lunghezza della stringa solo se questa 
non è stata encodata in utf8 e non contiene caratteri multi-bytes)


E questo come e` possibile? Puoi inviare solo ascii? 

e hai detto niente ... visto che lo stato ti permette di ricostruire, sul 
client se presente, o sul server, se presente, un'istanza aggiornata 
dell'oggetto.


Si ho detto niente. Un oggetto e` stato e metodi assieme. Se hai solo stato
usare gli oggetti non e` un bene ma un male perche` introduci complessita`
senza motivo. Inoltre se il tuo sogno e` tenere aggiornate le istanzi degli
oggetti tra server e client vivrai una vita grama e ricca di spiacevoli 
sorprese.


perchè i dizionari non sono istanze di oggetti ma appunto dizionari ?


Embe`? L'object system di javascript e` comunque diverso da quello di python e
comunque devi riscrivere la classe sia in python che in javascript. Basta
passare gli argomenti per istanziarla lato javascript, tanto _NON_ devono fare
le stesse cose perche` _NON_ sono le stesse ed e` bene che _NON_ vengano neanche
lontanamente rese simili perche` confonderebbero lo sviluppo mischiando logica.


perchè non puoi usare o inviare classi client / server e gestirne lo stato ?


Perche` la tua frase sopra non ha senso. L'"e" e` assolutamente inutile perche`
per quello che fai e` la stessa cosa non una cosa in piu`.

significa che ogni client si gestisce la sua istanza delel sue classi, 
significa un approccio completamente OO anche sul client, usando anche 
classi e non solo {}


A parte che l'approcio completamente OO non significa nulla. Ma non vedo come
questo modo di serializzare de-serializzare oggetti possa far cambiare 
l'approcio.

Sono due cose _COMPLETAMENTE_ diverse. Uno e` la trasmissione di stato da un
server al client e l'altro e` un modello di sviluppo dei client. Sono due 
livelli
completamente separati.

prima dici del po po di roba, poi mi parli dell'inutilità di inviare stati 
di oggetti, quidi implementeresti un metodo dedicato che a seconda della 
classe assegna eventualmente quello o quell'altro parametro all'istanza 
dell'oggetto ??? ... io invio istanze, non devo fare altro, inutile eh ? per 
me non lo è mai stato, sarò io che ho i paraocchi bucati ?


Si. Faccio un esempio del codice javascript lato client su cui lavoro
abitualmente visto che probabilmente quello di cui parlo e` piu` complesso di
quello che sembra:

Wirc = {};

Wirc.Controller = Nevow.Athena.Widget.subclass('Wirc.Controller');

Wirc.Controller.methods(
   function connect(self, nickname) {
   self.nickname = nickname;
   self.callRemote('connect', nickname);
   },
   function disconnect(self) {
   self.callRemote('disconnect');
   },
   function send(self, line) {
   var action_index = line.indexOf("/action");
   var me_index = line.indexOf("/me");
   var me_pos = action_index > -1 ? action_index : me_index;
   
   if (me_pos > -1) {

   var arr = line.split(" ");
   var lst = MochiKit.Base.filter(function(elem) {
   if ((elem == "/action") || (elem == "/me")) {
   return false;
   } else {
   return true;
   }
   }, arr);
   line = lst.join(" ");
   self.callRemote("action", line);
   append_message("*", self.nickname + " " + line);
   } else {
   self.callRemote("send", line);
   append_message(self.nickname, line);
   }
   var node = MochiKit.DOM.getElement('inputForm');
   node.inputLine.value = "";
   },
   function receive(self, user, msg) {
   append_message(user, msg);
   },
   function updateTopic(self, message) {
   MochiKit.DOM.replaceChildNodes('topic', message);
   },
   function updateUsers(self, users) {
   var userlist = MochiKit.DOM.getElement('usersList');
   try {
   MochiKit.DOM.removeElement('to-remove');
   } catch (e) { /*I don't care */ }
   
   for (var i = 0; i < users.length; i++) {

   var li = MochiKit.DOM.LI({}, users[i]);
   userlist.appendChild(li);
   }
   },
   function info_joined(self, user) {
   append_message(user, user+' joined');
   self.updateUsers([user]);
   },
   function info_left(self, user ) {
   append_message(u

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

 ... quante possibilità ci sono che una stringa
pippo = "Pippo"
ed un exec "class " + pippo + ": pass"
possa far danni, ammesso che implementi un banale controllo sui
caratteri della stringa pippo, ovvero solo [a-zA-Z_]+ ?


Ok.
Ok cosa ? devo scrivere questo sito è bucabile anche con una stringa 
exec di quel tipo oppure non c'è ragione alcuna di allarmarsi ?



Lawrence Oluyede ha scritto:

aggiungo: quale modulo per verificare l'esistenza di una classe ?
Avessi un class_exsits sarei a cavallo, l'eval l'ho usato solo per
quello (ma attendevo commenti proprio per migliorare quella classe)


Cosa vuol dire se esiste una classe? Se io scrivo "SuperPippo" in un
file Python e non è definito da nessuna parte avrai un NameError.

runtime  ho una stringa

pippo = "Pippo"

come sapere se la classe Pippo è presente e già definita oppure no ?

class_exsists(pippo) ... esiste qualcosa del genere che restituisca un 
True o un False ?







Come preferisci ma se non accetti alcun tipo di critica/considerazione
non vai lontano in una comunità. 
20 Kb di "è tutto inutile, lascia perdere, tu non sai, io ti biasimo" 
... non le considero critiche ne considerazioni.

Il resto invece lo considero e come




Io ne ho prese di legnate sui denti
:-)


bene, allora quando finisce questa inizializzazione pitoniana ? lol

Andrea Giammarchi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

> Perchè non usi semplicemente XML-RPC allora se ti interessa il cross
> language?
perchè aumenta il consumo di banda e la latenza in risposta per il client


Vabbè ma quello che ti ho suggerito non è ok dato che a te interessa
comunicare python <-> Js


> A me pare che in Python un dizionario sia un oggetto, ignoro cosa sia
> in PHP ma ti posso giurare che in Python un dizionario *è* un oggetto.
> Ha un tipo (dict), ha una sintassi literal, ha dei metodi, uno stato.
> E' un oggetto.
... non passi istanze di classi , oggetti, stato di oggetti ... volevo
dire questo ... (ramanzine altrui sul "mi sembra che invece" no, grazie)


Ripeto, un dizionario è un oggetto. E una classe il suo stato lo tiene
in un dizionario.


class Foo(object):

... def __init__(self):
... self.x = 3
...

f = Foo()
print f.__dict__

{'x': 3}

Ora mi credi?


buon giorno ajax


E quindi? JSON è li apposta.


> Mi sa che non hai approfondito molto Python prima di imbarcarti in
> questo progetto perchè è scritto pure nel tutorial che i dizionari
> sono oggetti.
ABBASTAA :CRY:


Beh dato che ti ostini a dire che i dizionari non sono oggetti ho
anche paura di avere ragione :-)


> Ma quanta roba devi passare da un server a un client, si può sapere?
Tutta quella che mi pare


Vabbè a sto punto non ha nemmeno senso discutere


> Sembra che tu stia gestendo una foresta di dati supercomplessi di
> megabyte di stato.
no, ma se fosse ?


Non è AJAX quello che ti serve, molto semplice.


la differenza sta tutta nel dovere fare altro che ricevere un'istanza
invece di sprecare tempo per ogni tipo di dizionario di oggetto istanza
di qualcosa che viaggia
Ovvero io scriverò meno codice di voi, più chiaro così ?


Eh si molto meno codice:


print f.__dict__

{'x': 3}

f.__dict__.update(dict(x=4))
print f.__dict__

{'x': 4}

f.__dict__ = dict(y=8).copy()
print f.__dict__

{'y': 8}



Non sto basando la libreria su questo, HA ANCHE QUESTA POSSIBILITA' ...
a me non sembra un concetto difficile da comprendere, visto che ce ne
sono altre che fanno la stessa cosa in modo più macchinoso.


A me pare solo che tu non ti sia spiegato bene fino al penultimo post
più o meno. Tutto qui.


Nevow Athena che bastano due righe (il modo più spicciolo per dirlo) ma
è più leggero (sia sul client che sul server) e preformante e non sto
cercando di farlo, ci sviluppo da tanti mesi in PHP.


Una frase cosi avrebbe senso se tu avessi fatto test di performance di
Nevow Athena, ma immagino che tu abbia solo letto l'homepage (pure io
non sono andato molto in la del tutorial, ma evito di fare asserzioni
:-))


Ora ho rivisto la lib in PHP che è già usata da diversi sviluppatori PHP.


Il che non mi tranquillizza di certo :-)


La nuova versione vorrebbe poter girare anche su mod_python e forse
altro, nonchè su C# per il quale ho già fatto la serialize ( in C# eval
non esiste, quindi tutti tranquilli :ZIZI: )


Volendo c'è ma sono in pochi a saperlo. Più che dentro C# è dentro .NET


Io non cerco di risolvere problemi, cerco di imparare cose nuove su
Python in ambito web, fare una lib come questa A ME svolterebbe
enormemente, tutto il resto non è uguale, anche io in passato ho
reinventato l'acqua calda, questo non è il caso.


Ok


Tutti potranno dire "ma anche con questa e quest'altra fai la stessa
cosa" ... ebbene, no, non è così, la libreria che ho fatto è diversa,
"tutte fanno ajax", questa lo farà a modo suo.


Aspetto di vederla allora.


ho già detto cosa non mi piace di JSON e ho già detto che fare una lib
per JSON significherebbe tagliare fuori PHP perchè la Pear ha
prestazioni estremamente deludenti:
http://www.3site.it/blog/index.php/show/10/


E quindi? Esistono almeno 4 lib per usare JSON in PHP. Tu crei una lib
in Python perchè in PHP c'è una lib lenta? Davvero non capisco questo
ragionamento.


> Sono tutt'orecchi, cosi finalmente capisco cosa stai realmente
> cercando di implementare. Perchè questi ultimi post mi sono sembrati
> un pò confusi
anche a me


Cerco di seguire i tuoi ragionamenti :-)


ma non sono list ... invii una list, ti torna un dict ... con la mia
versione 0.1beta invii una list, torna una list


Sai quanto ci vuole vero a tirare fuori una lista da un dizionario in
Python? .values()


le list sono classi ? i dict sono classi ? ... Python è tutto fatto di
classi ? ... si, lo sanno tutti 


?? Stai parlando a te stesso ora?


> Non metto in dubbio che la cosa tu hai implementato abbia un senso e
> una ragione di esistere ma mi pare la risoluzione di un problema che
> ha PHP, o mi sbaglio?
come JSON trasforma tutto per JavaScript  sono problemi di
conversione per JavaScript o sbaglio ?


Ti rispondo con BOH perchè per me sta frase non ha davvero senso.

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Manlio Perillo
Andrea Giammarchi ha scritto:
> [...]
>> Cosa vuol dire se esiste una classe? Se io scrivo "SuperPippo" in un
>> file Python e non è definito da nessuna parte avrai un NameError.
> runtime  ho una stringa
> 
> pippo = "Pippo"
> 
> come sapere se la classe Pippo è presente e già definita oppure no ?
> 
> class_exsists(pippo) ... esiste qualcosa del genere che restituisca un
> True o un False ?
> 

L'object model di Python non è banale, ti conviene studiartelo meglio.

Una test può essere:

pippoObject = globals().get(pippo)
if pippoObject is not None and pippoObject.__class__ is not type:
  # probabilmente pippoObject è una classe


Questo vale per le classi nuovo stile.
Per quelle vecchio stile una classe non ha l'attributo __class__.

Nel modulo types è presente un ClassType, ma funziona solo per le classi
vecchio stile.


Comunque io non mi fiderei di questo codice.




Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 20:48:52 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

e cosa potrà mai accadere per una cosa tipo questa ?

exec "class " + nome + ": pass"

l'unica linea di codice tolta dalla verisone PyRex ?


Senza il controllo che fai sotto io posso fare:


foo("Pifferazzo(__import__('os').listdir('.'))")

Traceback (most recent call last):
 File "", line 1, in ?
 File "", line 2, in foo
 File "", line 1, in ?
TypeError: Error when calling the metaclass bases
   list() takes at most 1 argument (3 given)

Il che significa che l'espressione dentro Pifferazzo e` stata eseguita con 
successo e avrebbe potuto essere molto piu` distruttiva.


Però hai ragione, devo aggiungere un controllo sul nome della classe.

con un controllo sulla stringa che accetta solo lettere ed undesrcore, 
quante possibilità ci sono di fare danni ?


Un po` meno. Ma davvero poche in meno.


class Foo(object):

... ciao = 3
... 

Foo.ciao

3

exec "class Foo(object): pass"
Foo.ciao

Traceback (most recent call last):
 File "", line 1, in ?
AttributeError: type object 'Foo' has no attribute 'ciao'

Il vero danno e` sovrascrivere nomi gia` esistenti nella tua applicazione oltre 
ad altri che spendendo abbastanza tempo si potrebbero trovare (attachi analoghi 
all'SQL injection ma fatta col codice).

Non ne vale proprio la pena... Meglio evitare la exec del tutto e assieme a 
quella la eval().
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

Ok cosa ? devo scrivere questo sito è bucabile anche con una stringa
exec di quel tipo oppure non c'è ragione alcuna di allarmarsi ?


Ok come vuoi. Perchè devi creare una classe a runtime?


runtime  ho una stringa

pippo = "Pippo"

come sapere se la classe Pippo è presente e già definita oppure no ?


Pippo li è una stringa


class_exsists(pippo) ... esiste qualcosa del genere che restituisca un
True o un False ?


Esiste isclass() nel modulo inspect


bene, allora quando finisce questa inizializzazione pitoniana ? lol


Per me può anche finire ora.

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:

E questo come e` possibile? Puoi inviare solo ascii?

utf8_encode ... utf8_decode


Inoltre se il tuo sogno e` tenere aggiornate le istanzi degli
oggetti tra server e client vivrai una vita grama e ricca di 
spiacevoli sorprese.

soprese ancora niente, di sogno ben poco visto che lo faccio da tempo



Embe`? L'object system di javascript e` comunque diverso da quello di 
python e

comunque devi riscrivere la classe sia in python che in javascript.
ovvio, in python però puoi anche non farlo e gestire runtime classi JS 
ergo non scrivi sempre e comunque il codice 2 volte.
l'invio e la ricezione di oggetti, ribadisco, è un di più, non l'essenza 
della lib che fa tutto quello che fate voi oggi, ma da anche questa 
possibilità che a voi non interessa per alcun motivo (a me si)



A parte che l'approcio completamente OO non significa nulla. Ma non 
vedo come
questo modo di serializzare de-serializzare oggetti possa far cambiare 
l'approcio.
approccio a specchio, puoi gestie oggetti client e server allo stesso 
modo sul client come sul server




Si. Faccio un esempio del codice javascript lato client su cui lavoro
abitualmente visto che probabilmente quello di cui parlo e` piu` 
complesso di

quello che sembra: 

troppo ...


Io uso JSON e mi sembra di usare un approcio a oggetti piuttosto 
spinto lato
client. Giuro inoltre che potrei mostrarti una tonnellata di 
javascript molto

piu` complesso di questo che utilizza ancora JSON.
ne sono convinto, JSON è eccezionale, in PHP JSON è un ammazza risorse 
per via della lentezza orribile della conversione, PHP lo uso tuttora, 
non userei mai ne farei mai una libreria ajax per php con JSON di mezzo 
se non tramite il compilato che non è mai presente nei servers virtuali 
e non




Il metodo lo devi scrivere comunque in javascript quindi questo non 
c'entra niente.
scrivi una classe (funzione) fine, non devi poi rifare niente, ti 
ritrovi l'istanza malipolabile, inviabile, etc etc



Lavori il doppio perche` il tuo modello e` enormemente piu` complesso 
da gestire.
quello mio si, quello finale a livello di utilizzo non ha nulla di 
complesso, è a prova di niubbi, sai definire un dict statico di una 
classe ? (methodTable) sai fare interazioni avanzate in ajax con JS 
sapendo poco anche di JS.





non puoi inviare metodi con la serializzazione ma solo lo stato quindi 
i metodi

devi comunque scriverli per cui non mischiare troppi argomenti.
invii uno stato che ricrea l'oggetto ergo invii oggetti e non devi fare 
altro per usarli come tali





Come? E questo cosa ha a che fare col polimorfismo?

il polimorfismo non c'entrava niente , la frase era senza senso e commentata




Cosa c'entra? Non puoi trasportare i metodi. Devi scriverli i metodi.

bene


Permettimi ma non posso che dissentire, di semplice il modello non ha 
nulla.

modello di cosa ?



E` tremendo. Quindi io posso accedere a tutti gli oggetti che voglio lato
client facendo quello che desidero attraverso quegli oggetti? 

ma non diciamo cavolate, grazie




Che poi e` molto
poi semplice fare una cosa tipo:

callRemote("sayHello").addCallback(function(str) {alert(str)})

la callback semplifica ? callRemote è una sola funzione ?
devo farne una per ogni tipo di callRemote ???  e quando ti passa a te ?




oppure

function progress(perc) {alert(perc)}

perfetto

pippo.methodName.progress = progress;
che assegni a tutti i metodi che ti pare ... il progress non è una 
chiamata al server eh ... non facciamo confusione, il progress è lo 
stato di ricezione del client della stringa sul server.


Content-Length: 100Kb

il progress restituisce in automatico a readyState 3 la lenght della 
stringa / getHeader("Content.Length"), non fa nulla di asincrono via 
http, sempicemente da un riscontro quando serve.
Per un login un progress non servirà mai ad una fava, per un portale di 
informazioni magari si  altra cosa che io faccio da tempo e che 
altre lib non hanno (almeno in php e mi sembra nemmeno in .NET, non so 
in Python)







lasciando al server il compito di chiamare perc quando necessario 
senza scomodare

il client.

ah certo, tu scomodi il server ...



charcode non sara` mai piu` di 256 a meno che s non sia unicode 
perche` per ottenere
piu` di 256 ti serve un carattere multibyte che non otterrai mai senza 
usare unicode.

infatti lavora in multibyte ...

Ecco cosa tocca fare in JS come in Python (almeno credo sia così, 
illuminatemi altrimenti) per ritrovare la len "fasulla" del PHP

Non c'e` nessuna len fasulla.
credo ti sfugga il significato delle mie parole tra " e " che mi 
evitano, presumendo di avere a che fare non con un robot, di scrivere 
pile di caratteri ... riassumendo in modo semplice





Assolutamente sbagliato e questo perche` non conosci gli encoding.

bravo



Ma il problema non lo risolverete ancora :).

lo so bene, lo sanno tutti, il background del php è sempre più incazzato



Ora pero` sei obbligato a portelo perche` in python qu

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Manlio Perillo ha scritto:

Per creare classi così non usare exec ma usa type:

pippoType = type("Pippo", (), {})

type è la funziona chiamata dall'interprete quando valuta un class
statement.

Il secondo argomento indica le classi base, il terzo gli attributi della
classe).



Saluti  Manlio Perillo

Ed è più sicuro di eval
Devo comunque verificare i caratteri della stringa o posso evitare di farlo?

Cmq eccezionale questa cosa, la ignoravo completamente, grazie.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:

exec "class Foo(object): pass"
Foo.ciao

Traceback (most recent call last):
 File "", line 1, in ?
AttributeError: type object 'Foo' has no attribute 'ciao'

Il vero danno e` sovrascrivere nomi gia` esistenti nella tua 
applicazione oltre ad altri che spendendo abbastanza tempo si 
potrebbero trovare (attachi analoghi all'SQL injection ma fatta col 
codice).


Non ne vale proprio la pena... Meglio evitare la exec del tutto e 
assieme a quella la eval().


quella dell' object no ... se la classe non esiste viene creata base, 
senza niente come argomento, quindi su un controllo a-zA-Z_ dovrei stare 
tranquillo ma esiste un modo per evitare eval sono sempre pronto per 
sceglierlo, è che non sapevo ne di type("NomeClasse", (), {}) ne di 
inspect ... grazie a tutti, c'è da studiare qui.


Saluti,
   Andrea Giammarchi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

ovvio, in python però puoi anche non farlo e gestire runtime classi JS
ergo non scrivi sempre e comunque il codice 2 volte.
l'invio e la ricezione di oggetti, ribadisco, è un di più, non l'essenza
della lib che fa tutto quello che fate voi oggi, ma da anche questa
possibilità che a voi non interessa per alcun motivo (a me si)


Mi scrivi 5 righe della parte Python di gestione della roba JS con la
tua libreria?


approccio a specchio, puoi gestie oggetti client e server allo stesso
modo sul client come sul server


Non trovo un motivo valido per avere questa caratteristica
sinceramente, magari mi sbaglio


> Si. Faccio un esempio del codice javascript lato client su cui lavoro
> abitualmente visto che probabilmente quello di cui parlo e` piu`
> complesso di
> quello che sembra: 
troppo ...


E' troppo perchè sono varie funzioni.


ne sono convinto, JSON è eccezionale, in PHP JSON è un ammazza risorse
per via della lentezza orribile della conversione, PHP lo uso tuttora,
non userei mai ne farei mai una libreria ajax per php con JSON di mezzo
se non tramite il compilato che non è mai presente nei servers virtuali
e non


Quindi scrivi una lib in Python per risolvere un problema che ha solo
quella schifezza di PHP?


scrivi una classe (funzione) fine, non devi poi rifare niente, ti
ritrovi l'istanza malipolabile, inviabile, etc etc


fammi vedere un esempio :-)


quello mio si, quello finale a livello di utilizzo non ha nulla di
complesso, è a prova di niubbi, sai definire un dict statico di una
classe ? (methodTable) sai fare interazioni avanzate in ajax con JS
sapendo poco anche di JS.


Interazione avanzate in AJAX?


> callRemote("sayHello").addCallback(function(str) {alert(str)})
la callback semplifica ? callRemote è una sola funzione ?
devo farne una per ogni tipo di callRemote ???  e quando ti passa a te ?


Che vuol dire tipo di callRemote? La callRemot chiama una funzione e
piglia il valore di ritorno. Che c'è da riscrivere?


bene, quindi il web lavora tutto su u ? devo informarmi a riguardo


Tutto su che?


> Ma esiste gia` JSON, chissenefrega di una libreria usata in php perhe`
> in php
> JSON e` lento come la fame?
non condivido


L'hai detto tu che non usi JSON perchè non c'è una libreria in PHP
decente preinstallata. Tra l'altro non avrai lo stesso problema di
deployment con la tua libreria rispetto a quelle più performanti per
PHP ma non preinstallate?


anche la serialize è già scritta per tanti linguaggi ... ma se per
partito preso devi rinunciare a tutto quello che non è JSON io non posso
farci niente


Non è un partito preso, è un non reinventare la ruota


ma non è inventato ... è questo che tutti state dicendo: perchè se c'è
già JSON  ma cristoforo, c'era già anche la serialize, da anni per
tanti lignuaggi quasi quanti quelli per json ...


E quindi?


json in C mi sembra ci sia, json in PHP l'hanno fatto anche in C come
modulo per evitare che "i server saltassero per aria" ma non è presente
da nessuna parte, json in python non so quanto sia performante, ma se ha
i tempi della pear, sviluppate su applicativi che con tanti dati e due o
tre utenti in più fanno sudare qualunque server ...


La tua lib in pyrex sarà ancora meno portabile sui server che non
preinstallano le librerie JSON in PHP performanti, vero?

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Beh dato che ti ostini a dire che i dizionari non sono oggetti ho
anche paura di avere ragione :-)
dove ho scritto che i dict non sono oggetti ? io parlo di istanze di 
classi, quello che json no fa ... invia il dict dell'istanza ? ... bene, 
devi poi sbatterti per ricrearla ? ... bene lostesso, io vorrei evitare




Vabbè a sto punto non ha nemmeno senso discutere

non era uno scherzo, intendevo dire che non voglio porre limiti potenziali



Non è AJAX quello che ti serve, molto semplice.
ovvio, ma la lib fa ANCHE l'invio di istanze di classi, questo è un 
problema ? (una volta tolti i buchi introdotti dalla mia gofa conoscenza 
di python)





Eh si molto meno codice:

... mi mostri dict, dov'è il nome della classe o la sua istanza ?




Una frase cosi avrebbe senso se tu avessi fatto test di performance di
Nevow Athena, ma immagino che tu abbia solo letto l'homepage (pure io
non sono andato molto in la del tutorial, ma evito di fare asserzioni
:-))
mi è bastato guardare il source del JS per capire che pesa in Kb più di 
quello della mia lib (seppur packettizzata) e la serie di file .py che 
sono più di 2 .. o uno ... ed hanno sicuramente più codice, dato che la 
mia lib è anche molto semplice per certi versi e sicuramente Nevow avrà 
molte features tipiche o fantastiche, la mia deve solo inviare e 
ricevere, poco più



Il che non mi tranquillizza di certo :-)

...





Volendo c'è ma sono in pochi a saperlo. Più che dentro C# è dentro .NET

ho parlato di C#, non di JScript.NET :-)



Aspetto di vederla allora.
no, no ... nd' vai, sta qui che mi servono altre dritte per 
l'introspezione delle classi :D




E quindi? Esistono almeno 4 lib per usare JSON in PHP. Tu crei una lib
in Python perchè in PHP c'è una lib lenta? Davvero non capisco questo
ragionamento.
e mai lo capirai se continui a pensare alla lib per Python, la lib è 
"per tutti" e siccome PHP è il più usato, ammazzarlo a priori non mi 
sembra il modo migliore di fare una lib "per tutti"





Sai quanto ci vuole vero a tirare fuori una lista da un dizionario in
Python? .values()
in python tanto si fa in poco tempo ... ma se puoi farlo in ancora meno 
tempo ti fa schifo ?





Ti rispondo con BOH perchè per me sta frase non ha davvero senso.

JSON => JAVASCRIPT Object Notation

Tutte le implementazioni di JSON per gli altri linguaggi convertono tipi 
e dati compatibili con JavaScrip, il fatto che ci siano tante librerie 
lo rende abbastanza universale ma la base non cambia, è una stringa per 
JS ... eval(JSON);



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Creazione modulo in PyRex

2006-08-18 Per discussione Manlio Perillo
Lawrence Oluyede ha scritto:
>> Bene, io ho .NET Framework 1.1 hotfixed ed il .NET Framework 2
>> aggiornato, ordunque, che posso fare ?
> 
> Ti manca visual studio 2003 o il compiler toolkit. Se hai fortuna
> fammi sapere come hai fatto. Io son mesi che tento di far andare sta
> roba :D
> 

Io ci sono riuscito senza troppi intoppi, seguendo le istruzioni in
http://www.vrplumber.com/programming/mstoolkit/


Se ricordo bene, però, ho dovuto mettere mano a qualcosa.



Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Manlio Perillo
Andrea Giammarchi ha scritto:
> Manlio Perillo ha scritto:
>> Per creare classi così non usare exec ma usa type:
>>
>> pippoType = type("Pippo", (), {})
>>
>> type è la funziona chiamata dall'interprete quando valuta un class
>> statement.
>>
>> Il secondo argomento indica le classi base, il terzo gli attributi della
>> classe).
>>
>>
>>
>> Saluti  Manlio Perillo
> Ed è più sicuro di eval
> Devo comunque verificare i caratteri della stringa o posso evitare di
> farlo?
> 

Che io sappia il nome è usato solo per settare l'attributo __name__.

> Cmq eccezionale questa cosa, la ignoravo completamente, grazie.
> 

Python è un linguaggio dinamico, sul serio.


Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Mi scrivi 5 righe della parte Python di gestione della roba JS con la
tua libreria?
ti posto in fondo tutta la libreria .. che è ancora alpha e non è 
completa, ha diversi buchi, ma tutto sommato comincia a funzionare






Non trovo un motivo valido per avere questa caratteristica
sinceramente, magari mi sbaglio

esporti classi che hanno metodi utili per il JS
da JS usi queste classi, le istanzi, sfrutti gli oggetti già definiti 
dalla lib e per ogni oggetto hai già i metodi e per ogni metodo i tre 
metodi call, result, progress, puoi usarli tutti o nessuno
Questa è la parte che interessa il primo invio poi questi oggetti, visto 
che hai esportato delle classi presenti con il methodTable, puoi usarli 
sul client o sul server perchè sono già presenti, il caso di oggetti
non presenti e creati runtime è molto particolare e sono un pò stanco 
per spiegarlo bene.






E' troppo perchè sono varie funzioni.

appunto, io vorrei avere tutto disponibile subito



Quindi scrivi una lib in Python per risolvere un problema che ha solo
quella schifezza di PHP?
ho già risposto a questa domanda, scrivo una lib che non è per l'uno o 
per l'altro, ma che per avere senso a livello di portabilità del client 
deve basarsi o su JSON o su PHP_Serializer, io ho scelto la seconda per 
rispetto del predominante nel web, PHP





Interazione avanzate in AJAX?
si, se AHAH è l' abc , con altre lib puoi fare interazioni più 
complesse, quindi più avanzate







> callRemote("sayHello").addCallback(function(str) {alert(str)})
la callback semplifica ? callRemote è una sola funzione ?
devo farne una per ogni tipo di callRemote ???  e quando ti passa 
a te ?


Che vuol dire tipo di callRemote? La callRemot chiama una funzione e
piglia il valore di ritorno. Che c'è da riscrivere?

niente, avevo capito male ... però questo non è un approccio procedurale ?
io preferirei
myClassVar.sayHello.call();

e nel frattempo hai anche un'istanza di classe da gestire come vuoi




Tutto su che?

u ... unicode



L'hai detto tu che non usi JSON perchè non c'è una libreria in PHP
decente preinstallata. Tra l'altro non avrai lo stesso problema di
deployment con la tua libreria rispetto a quelle più performanti per
PHP ma non preinstallate?
molto meno, per il semplice fatto che non ci sono caratteri da 
modificare, solo length da sfruttare.
La serializzazione / unserializzazione di PHP è molto più semplice di 
quella json, sia in conversione che in riconversione, Python e C# se la 
cavano bene anche senza moduli dedicati.
Il problema della length per UTF-8, come ho detto, è pià per portabilità 
della classe PHP_Serializer che altro, perchè trattando stringhe come 
text (numero dei caratteri), non è necessario usare

UTF-8 con altri linguaggi diversi dal PHP, quindi è molto rapida.

Anzi ... a dirla tutta, in PyRex le uniche reali ottimizzazioni sono 
proprio per la __slen, che se "inusata", potrebbe avere poco senso di 
esistere.




Non è un partito preso, è un non reinventare la ruota

infatti non l'ho reinventata, l'ho solo aggiustata (male, datemi tempo)



La tua lib in pyrex sarà ancora meno portabile sui server che non
preinstallano le librerie JSON in PHP performanti, vero?

come sopra








ACE.py
import types, re, PHP_Serializer

HAND_RULES = {
   "DEBUG":False,
   "UTF8":False,
   "GZ":False
}


def in_list(value, values):
   result = False
   for i in range(0, len(values)):
   if value == values[i]:
   result = True
   break
   return result

class ACE:
  
   php = None# PHP_Serializer

   utf8 = False# is UTF8 enabled or not
   next = True# has any error
   gz = False# uses gz compression
   dodebug = False# creates a debug file
   debug = []# debug informations
   types = {# valid variable types
   "s":"string", "N":"null", "O":"Class", "b":"boolean", 
"i":"integer", "d":"float", "a":"array", "u":"undefined"

   }
  
   def __init__(self, settings):

   self.utf8 = settings["UTF8"]
   self.dodebug = settings["DEBUG"]
   self.gz = not self.dodebug and settings["GZ"]
   self.php = PHP_Serializer.PHP_Serializer(self.utf8)
  
   def getMethods(self, classDict):

   tmp = None
   result = []
   if classDict.has_key("methodTable") and 
type(classDict["methodTable"]) is types.DictType:

   for key in classDict["methodTable"]:
   tmp = classDict["methodTable"][key]
   if type(tmp) is types.DictType and (not 
tmp.has_key("access") or tmp["access"] == "remote"):

   result.append(key)
   return result
  
   def getMethodInformations(self, tmpclass, method):

   i = 0
   result = {}
   vars = tmpclass.__class__.__dict__["methodTable"][method]
   if vars.has_key("arguments") and type(vars["arguments"]):
   result = {"info":[], "required":0}
   if type(vars["arguments"]) is types.ListType:
   for key in ra

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Fri, 18 Aug 2006 22:06:18 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:
ovvio, in python però puoi anche non farlo e gestire runtime classi JS ergo 
non scrivi sempre e comunque il codice 2 volte.


Te lo ripeto: e` meglio evitare questa boiata.

l'invio e la ricezione di oggetti, ribadisco, è un di più, non l'essenza 
della lib che fa tutto quello che fate voi oggi, ma da anche questa 
possibilità che a voi non interessa per alcun motivo (a me si)


Allora... E` evidente che non ne sai molto neanche di OO perche` continui a 
parlarne. Non stai facendo nulla di 'OO' se invii il nome di una classe e il 
suo stato. Stai solo inviando una stringa e altre stringhe.

Per essere 'OO' (se mai questo fosse davvero la soluzione a tutto) serve che si 
sia anche l'ereditarieta` oltre che organizzare stato e metodi che agiscono su 
quello stato nella stessa struttura sintattica.

In quello che fai tu non c'e` _NULLA_ di OO, c'e` solo l'uso improprio di 
oggetti in javascript per evitare di passare un nome come parametro di una 
funzione, ben poco per dire di aver rivoluzionato e veramente compreso cosa 
significa OO.

approccio a specchio, puoi gestie oggetti client e server allo stesso modo 
sul client come sul server


Ascolta... Qua siamo piu` o meno tutti sviluppatori. Mi servono usecase, io non 
mi fido dei commerciali delle aziende mi serve capire il problema che risolve e 
perche` e` meglio risolverlo cosi`. Quanto mi hai scritto sopra ha ben poco di 
tecnico perche` l'approcio a specchio non ho idea di cosa sia e gestire oggetti 
client e server allo stesso modo e` assolutamente impossibile visto che il 
client e` javascript e il server e` python.


troppo ...


Sticazzi che e` troppo e` un client IRC via web completo.

Il metodo lo devi scrivere comunque in javascript quindi questo non c'entra 
niente.
scrivi una classe (funzione) fine, non devi poi rifare niente, ti ritrovi 
l'istanza malipolabile, inviabile, etc etc


Io non lo capisco... Mi arrendo. Che vantaggi ci sono?

Lavori il doppio perche` il tuo modello e` enormemente piu` complesso da 
gestire.
quello mio si, quello finale a livello di utilizzo non ha nulla di 
complesso, è a prova di niubbi, sai definire un dict statico di una classe ? 
(methodTable) sai fare interazioni avanzate in ajax con JS sapendo poco 
anche di JS.


Non so cosa sia un'interazione avanzata.

invii uno stato che ricrea l'oggetto ergo invii oggetti e non devi fare 


Invio uno stato e basta. Lo stato e` stato non ricrea.


E` tremendo. Quindi io posso accedere a tutti gli oggetti che voglio lato
client facendo quello che desidero attraverso quegli oggetti?

ma non diciamo cavolate, grazie


Se crei classi a runtime direi che ho ragione io non tu.


Che poi e` molto
poi semplice fare una cosa tipo:

callRemote("sayHello").addCallback(function(str) {alert(str)})

la callback semplifica ? callRemote è una sola funzione ?
devo farne una per ogni tipo di callRemote ???  e quando ti passa a te ?


callRemote e` una funzione e ne esiste una e basta.


oppure

function progress(perc) {alert(perc)}

perfetto

pippo.methodName.progress = progress;
che assegni a tutti i metodi che ti pare ... il progress non è una chiamata 
al server eh ... non facciamo confusione, il progress è lo stato di 
ricezione del client della stringa sul server.


E chi ha detto che la progress e` una chiama al server? Io ho detto che la 
chiama il server non il contrario.

Per un login un progress non servirà mai ad una fava, per un portale di 
informazioni magari si  altra cosa che io faccio da tempo e che altre 
lib non hanno (almeno in php e mi sembra nemmeno in .NET, non so in Python)


Ti svelo un segretone:
Io uso quello che ora chiamano ajax e quello che ora chiamano COMET da 2 anni 
prima che diventassero famosi con quei nomi.
Con il framework che sviluppo ci hanno scritto:
http://numbler.com/
http://snipshot.com/

Uno spreadsheet e un editor di fotografie dici che sono abbastanza complessi da 
poter essere definiti 'interazioni avanzate ajax' qualsiasi cosa questo 
significhi?

lasciando al server il compito di chiamare perc quando necessario senza 
scomodare

il client.

ah certo, tu scomodi il server ...


Non si tratta di scomodare il server. Si tratta di far fare a ognuno il suo 
lavoro.

charcode non sara` mai piu` di 256 a meno che s non sia unicode perche` per 
ottenere
piu` di 256 ti serve un carattere multibyte che non otterrai mai senza 
usare unicode.

infatti lavora in multibyte ...


Cosa significa? che s e` unicode? Altrimenti non stai lavorando in multibyte 
perche` s[indice] se s e` una stringa di byte non ritorna il carattere ma il 
byte e quindi non stai lavorando in multibyte.

credo ti sfugga il significato delle mie parole tra " e " che mi evitano, 
presumendo di avere a che fare non con un robot, di scrivere pile di 
caratteri ... riassumendo in modo semplice


Ma tu lo capisci che non basta mettere "foo" per fare in modo che io capisca 
cosa significa il fatto 

Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:
Allora... E` evidente che non ne sai molto neanche di OO perche` 
continui a parlarne. Non stai facendo nulla di 'OO' se invii il nome 
di una classe e il suo stato. Stai solo inviando una stringa e altre 
stringhe.

davvero ? ...

Per essere 'OO' (se mai questo fosse davvero la soluzione a tutto) 
serve che si sia anche l'ereditarieta` oltre che organizzare stato e 
metodi che agiscono su quello stato nella stessa struttura sintattica.


In quello che fai tu non c'e` _NULLA_ di OO, c'e` solo l'uso improprio 
di oggetti in javascript per evitare di passare un nome come parametro 
di una funzione, ben poco per dire di aver rivoluzionato e veramente 
compreso cosa significa OO.
di OO c'è che io non uso il nome di una funzione ma il metodo di 
un'istanza di una classe.
Di OO c'è che io non uso una funzione per richiamare un'altra funzione, 
uso un'istanza di una classe con un metodo ben definito e richiamo quel 
metodo che è un metodo altrettanto definito di un'altra istanza di una 
classe sul server.


Eccosa cosa c'è di OO rispetto 
callami("funzionePippo").addCallamiJS(pluto), sia client che server.




Ascolta... Qua siamo piu` o meno tutti sviluppatori. Quanto mi hai 
scritto sopra ha ben poco di tecnico perche` l'approcio a specchio non 
ho idea di cosa sia e gestire oggetti client e server allo stesso modo 
e` assolutamente impossibile visto che il client e` javascript e il 
server e` python.
allo stesso modo inteso come se fossero simili, oggetti con istanze 
identiche, che hanno metodi (JS solo alcuni) che fanno le stesse cose.

Chi ha mai parlato dell' uguaglianza tra i due linguaggi ?
A specchio

function MyClass(){} <=> class MyClass:





Sticazzi che e` troppo e` un client IRC via web completo.

richiede il codice (o classe) di gestione server e quel codice JS
ACE richiederebbe solo il codice (o classe) server, quindi il doppio 
debug client/server tipico di ajax verrebbe a mancare, faresti solo 
quello server, sounds cool ?




Io non lo capisco... Mi arrendo. Che vantaggi ci sono?
non ce ne sono, se mai ce ne fossero, potresti inviare anche stati di 
oggetti e sfruttarli, come sta a te





Non so cosa sia un'interazione avanzata.

una più complessa di un'interazione base




Invio uno stato e basta. Lo stato e` stato non ricrea.
lo stato no, il sistema si, poi che non sia la stessa istanza ma una 
diversa conta poco, se quello che interessa è lo stato di un oggetto





Se crei classi a runtime direi che ho ragione io non tu.
Tu hai scritto che io permettevo al client di modificare o usare classi 
servers come voleva ... su questo, non diciamo cavolate





callRemote e` una funzione e ne esiste una e basta.
come di classe ne esiste una e basta, ma ha tanti metodi che ti ritrovi 
... e di classi ne prendi quante ne vuoi senza avere overhead del file 
JS sono Fakes




E chi ha detto che la progress e` una chiama al server? Io ho detto 
che la chiama il server non il contrario.
e perchè mai il server dovrebbe richiamare un metodo del client se il 
client non ha chiesto niente ?





Ti svelo un segretone:
Io uso quello che ora chiamano ajax e quello che ora chiamano COMET da 
2 anni prima che diventassero famosi con quei nomi.

Con il framework che sviluppo ci hanno scritto:
http://numbler.com/
http://snipshot.com/

Uno spreadsheet e un editor di fotografie dici che sono abbastanza 
complessi da poter essere definiti 'interazioni avanzate ajax' 
qualsiasi cosa questo significhi?
si, sono interazioni avanzate per il significato che io do alla frase 
"interazione avanzata"





Non si tratta di scomodare il server. Si tratta di far fare a ognuno 
il suo lavoro.
appunto, il server deva fare solol quello che il client non è in grado 
di fare, è il client che si appoggia al server per quello che non può 
fare, non il contrario ... almeno di solito




Cosa significa? che s e` unicode? Altrimenti non stai lavorando in 
multibyte perche` s[indice] se s e` una stringa di byte non ritorna il 
carattere ma il byte e quindi non stai lavorando in multibyte.

mod_python lavora con stringhe di bytes di default ?
Lo scambio di stringhe di solito avviene per bytes o per caratteri ?



Ma tu lo capisci che non basta mettere "foo" per fare in modo che io 
capisca cosa significa il fatto che le hai messe tra virgolette? 
Oppure pensi che dato che scriviamo le stesse parole entrambi 
attribuiamo ad esse lo stesso significato all'interno di una frase?
penso che tendi a pesare troppo ogni singola parola ... se non è codice 
potresti anche avere una visione di insieme della frase. Detto questo 
sicuramente non sono un ACE (asso  rotfl) nell' esrpimermi, questo 
lo so da anni.



Il web lavora con stringhe che hanno un encoding e tu devi 
decodificarle e trattarle solo dopo averle decodificate. Cosi` si fa e 
chi non lo fa sbaglia.

ed in Python di solito che encoding si utilizza per la maggiore ?


Ma cosa c'e` di difficile nel rispondere a un quesito che riguarda i 

Re: [Python] Creazione modulo in PyRex

2006-08-18 Per discussione Lawrence Oluyede

Io ci sono riuscito senza troppi intoppi, seguendo le istruzioni in
http://www.vrplumber.com/programming/mstoolkit/


E' solo un giorno intero che ci provo :-(
Dopo ci guardo meglio con calma da capo

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

dove ho scritto che i dict non sono oggetti ? io parlo di istanze di
classi, quello che json no fa ... invia il dict dell'istanza ? ... bene,
devi poi sbatterti per ricrearla ? ... bene lostesso, io vorrei evitare


Ti ho mostrato esempi in cui devi semplicemente aggiornare il dict di
una classe. Se per te quello è "sbattersi". Se crei una libreria per
risparmiarti una istruzione direi che è stupido, no?


non era uno scherzo, intendevo dire che non voglio porre limiti potenziali


Vedremo


> Non è AJAX quello che ti serve, molto semplice.
ovvio, ma la lib fa ANCHE l'invio di istanze di classi, questo è un
problema ? (una volta tolti i buchi introdotti dalla mia gofa conoscenza
di python)


No non ci siamo proprio capiti. AJAX è bad performance se devi
continuare a trasferire dati continuamente come sembri voler fare tu
(ma magari mi sbaglio di nuovo). Devi usare altra roba proprio dal
punto di vista tecnologico, non di linguaggio o di lib


> Eh si molto meno codice:
... mi mostri dict, dov'è il nome della classe o la sua istanza ?


Ma che ti frega del nome della classe? Non capisco sta fissa. Tu passi
in giro dati. PUNTO. Che si chiama pippo o pluto che ti importa? Una
volta che contiene la tua "x" di valore "3"...


> Volendo c'è ma sono in pochi a saperlo. Più che dentro C# è dentro .NET
ho parlato di C#, non di JScript.NET :-)


Puoi usarlo anche da C#


> Aspetto di vederla allora.
no, no ... nd' vai, sta qui che mi servono altre dritte per
l'introspezione delle classi :D


Sinceramente non è che non ti voglio aiutare ma mi pare che tu stia
perdendo tempo. Non critico la tua lib o la sua implementazione. Dopo
50 post non siamo ancora arrivati ad una fine. Quindi le cose sono
due: o stai reinventando l'acqua calda o la tua è una idea geniale e
noi non riusciamo a capirlo.


e mai lo capirai se continui a pensare alla lib per Python, la lib è
"per tutti" e siccome PHP è il più usato, ammazzarlo a priori non mi
sembra il modo migliore di fare una lib "per tutti"


Lib per tutti non esiste. Ci sono sempre dei limiti e poi se è scritta
in Python dubito che ad un utente Erlang importi molto della tua lib.
Per questo esistono gli standard e guardacaso JSON è uno standard IETF
ora.


> Sai quanto ci vuole vero a tirare fuori una lista da un dizionario in
> Python? .values()
in python tanto si fa in poco tempo ... ma se puoi farlo in ancora meno
tempo ti fa schifo ?


Geniale scrivere una libreria per risparmiare una istruzione.


Tutte le implementazioni di JSON per gli altri linguaggi convertono tipi
e dati compatibili con JavaScrip, il fatto che ci siano tante librerie
lo rende abbastanza universale ma la base non cambia, è una stringa per
JS ... eval(JSON);


Appunto. Non vedo dove stia il problema allora. Anche perchè fino a
prova contraria JSON fa quello che vuoi fare tu. Ti da solo fastidio
che sui server da 5 euro l'anno non ci sia la versione di JSON
performante, è per questo che fai una lib from scratch?

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Creazione modulo in PyRex

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Io ci sono riuscito senza troppi intoppi, seguendo le istruzioni in
http://www.vrplumber.com/programming/mstoolkit/


E' solo un giorno intero che ci provo :-(
Dopo ci guardo meglio con calma da capo


Non va nemmeno a me dopo aver scaricato VC++ da M$ ... :-(
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

On 8/18/06, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Lawrence Oluyede ha scritto:
> Mi scrivi 5 righe della parte Python di gestione della roba JS con la
> tua libreria?
ti posto in fondo tutta la libreria .. che è ancora alpha e non è
completa, ha diversi buchi, ma tutto sommato comincia a funzionare


Veramente io volevo un esempio di come si usa, non di come è scritta.
Comunque guardo.

def in_list(value, values):
  result = False
  for i in range(0, len(values)):
  if value == values[i]:
  result = True
  break
  return result

Si fa in una linea di python: "value in values" ritorna True o False.
Scusa la battuta ma parli di performance e scrivi cose come questa?
:-) Continuo:

getMethods() è piena di bad practices. Non usare has_key ma usa in
semplicemente. Poi basta isinstance() senza scomodare il modulo types
per vedere se qualcosa è di un certo tipo.
Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile. Non te la prendere, ma se
studiassi un attimino di più Python magari faresti una lib
"performante". Sto ancora cercando di capire come quella tua lib
comunichi con JS.



esporti classi che hanno metodi utili per il JS
da JS usi queste classi, le istanzi, sfrutti gli oggetti già definiti
dalla lib e per ogni oggetto hai già i metodi e per ogni metodo i tre
metodi call, result, progress, puoi usarli tutti o nessuno
Questa è la parte che interessa il primo invio poi questi oggetti, visto
che hai esportato delle classi presenti con il methodTable, puoi usarli
sul client o sul server perchè sono già presenti, il caso di oggetti
non presenti e creati runtime è molto particolare e sono un pò stanco
per spiegarlo bene.


No problem, orma mi rassegno. Voglio vedere un esempio, anche non
funzionante. Insomma... fammi una demo tipo:

a = classe1
b = classe2
c = fai qualcosa con a e b

Tanto per capire come si usa.


> E' troppo perchè sono varie funzioni.
appunto, io vorrei avere tutto disponibile subito


Non hai capito. Sono varie funzioni perchè ogni funzione gestisce un
evento separato. Tipo il connect al server, il quit, ecc ecc. Ste cose
le avresti anche con la tua lib eh


ho già risposto a questa domanda, scrivo una lib che non è per l'uno o
per l'altro, ma che per avere senso a livello di portabilità del client
deve basarsi o su JSON o su PHP_Serializer, io ho scelto la seconda per
rispetto del predominante nel web, PHP


Ok allora lasciami dire che a me pare una scelta sbagliata.


> Interazione avanzate in AJAX?
si, se AHAH è l' abc , con altre lib puoi fare interazioni più
complesse, quindi più avanzate


Riformulo la domanda: che tipo di interazioni avanzate vuoi fare con AJAX?


> Che vuol dire tipo di callRemote? La callRemot chiama una funzione e
> piglia il valore di ritorno. Che c'è da riscrivere?
niente, avevo capito male ... però questo non è un approccio procedurale ?
io preferirei
myClassVar.sayHello.call();


Eh si sicuramente sayHello.call() non è un approccio procedurale.
Vediamo di chiarirci:

- procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
stai facendo tu.
- il tuo approccio è bloccante quindi se devi magicamente trasferire
mega byte di dati come dicevi la tua fantastica app si blocca.
callRemote() perlomeno è asincrono, come tutto in Nevow


e nel frattempo hai anche un'istanza di classe da gestire come vuoi


Cosa fondamentale. Scusa sto diventando sarcastico.


molto meno, per il semplice fatto che non ci sono caratteri da
modificare, solo length da sfruttare.


Mi sa che non hai capito la mia domanda. Vedo di semplificare. Se
centomila server PHP nel mondo non installano JSON per PHP scritta in
C, credi davvero che installeranno la tua libreria?


Il problema della length per UTF-8, come ho detto, è pià per portabilità
della classe PHP_Serializer che altro, perchè trattando stringhe come
text (numero dei caratteri), non è necessario usare
UTF-8 con altri linguaggi diversi dal PHP, quindi è molto rapida.


Non ho capito NULLA di quelle quattro righe :-(
Non puoi basare la tua lib sperando di avere in ingresso sempre e solo
UTF-8 perchè UTF8 non è l'unico. Rispondo questo perchè non ho ben
capito il resto.


> La tua lib in pyrex sarà ancora meno portabile sui server che non
> preinstallano le librerie JSON in PHP performanti, vero?
come sopra


Come sopra cosa? Son 3 post che cerco di farti notare che è meno
vendibile di quella JSON


Devo ancora lavorarci sopra ... anche e soprattutto per l'import
dinamico (ogni consiglio è bene accetto)


import dinamico? Ossignore :-)

Se vuoi ti dico qual è il meccanismo in Python per fare l'import
dinamico e quale modulo può farlo ma te lo lascio trovare da solo cosi
non mi sento responsabile per eventuali danni :-)

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Ti ho mostrato esempi in cui devi semplicemente aggiornare il dict di
una classe. Se per te quello è "sbattersi". Se crei una libreria per
risparmiarti una istruzione direi che è stupido, no?

non credo basti ... ma non lo so.

in php, (come in JS), puoi fare questo
$myarr = array();
$myarr[5] = 1;
la serializzata sarà

a:1:{i:5;i:1;}

in riconversione a lista non avrai (presumo) una

myarr
con
myarr[5] = 1

dovrebbe essere un outOfRange, quindi non replichi il dato.

In JSON avrai in automatico un [null,null,null,null,1]

la PHP_Serializer (che ho appena aggiornato: 
http://www.devpro.it/code/131.html con il fix per l'eval e la stringa 
col nome della classe) ricrea in automatico in modo analogo a JS la lista


myarr = [None,None,None,None,1]

son cavolatine ma siccome la volevo riscrivere per la mancata lista, la 
mancata classe e soprattutto la mancata compatibilità con le multibytes, 
tanto valeva metterci anche questa, no ?
Anche il modo di serializzare / unserializzare è diverso, di quella ho 
preso solo i types perchè facevo una cosa tipo


if type(var) == type([]) ... per esempio.





Vedremo

Speriamo


No non ci siamo proprio capiti. AJAX è bad performance se devi
continuare a trasferire dati continuamente come sembri voler fare tu
(ma magari mi sbaglio di nuovo). Devi usare altra roba proprio dal
punto di vista tecnologico, non di linguaggio o di lib
no no, niente dati di continuo, assolutamente no (ho scritto una guida 
su AJAX in html.it e li spiego anche cosa non è mai bene fare .. tipo 
scambiare continuamente i dati)
L'intento è proprio inviare o ricevere con una sola chiamata asincrona 
una serie molto consistente di informazioni di diversa natura e diverso 
tipo.
Con ajax se ricevi e invii stringhe è inutile che usi ajax, se ricevi ed 
invii dati consistenti tipo JSON o serialize fai meno chiamate per avere 
molte più informazioni (ovvio, solo se serve)





Ma che ti frega del nome della classe? Non capisco sta fissa. Tu passi
in giro dati. PUNTO. Che si chiama pippo o pluto che ti importa? Una
volta che contiene la tua "x" di valore "3"...
mi frega per creare un'istanza di quella classe, cmq nella PHP_Serialize 
dovrei aver risolto, salvo i limiti sulla costruzione finchè non mi 
studio meglio la inspect





Puoi usarlo anche da C#
un eval in C# ? ... e dire che avevo cercato tantissimo... preferisco 
aver risolto in altro modo (cmq link ? :D)





Sinceramente non è che non ti voglio aiutare ma mi pare che tu stia
perdendo tempo. Non critico la tua lib o la sua implementazione. Dopo
50 post non siamo ancora arrivati ad una fine. Quindi le cose sono
due: o stai reinventando l'acqua calda o la tua è una idea geniale e
noi non riusciamo a capirlo.
è una geniale acqua calda ? :D (ma la doc per PHP almeno l'avete vista ? 
http://www.3site.eu/jstests/ACE.html  ... no perchè quella dice 
praticamente tutto ...)






Appunto. Non vedo dove stia il problema allora. Anche perchè fino a
prova contraria JSON fa quello che vuoi fare tu. Ti da solo fastidio
che sui server da 5 euro l'anno non ci sia la versione di JSON
performante, è per questo che fai una lib from scratch?
dai 5 ai 500 ... e forse più. Sono libero professionista e non trovo 
mica sempre gente disposta a spendere mille o più per un server dedicato 
o uno pseudo virtuo da gestire come vogliono ... ma come, prima il 
modulo in PyRex avrebbe avuto lo stesso problema per i servers ed ora mi 
dici dei 5 euro ?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

On 8/18/06, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Valentino Volonghi aka Dialtone ha scritto:
> Allora... E` evidente che non ne sai molto neanche di OO perche`
> continui a parlarne. Non stai facendo nulla di 'OO' se invii il nome
> di una classe e il suo stato. Stai solo inviando una stringa e altre
> stringhe.
davvero ? ...


Concordo con Valentino. Non stai facendo nulla di object oriented.


di OO c'è che io non uso il nome di una funzione ma il metodo di
un'istanza di una classe.


Lo sai vero che non c'è granchè differenza tra:

foo(X)
e
X.foo()

dove X è una istanza? Ti prego non dirmi che stai scrivendo una lib
perchè non ti piace usare una funzione ma vuoi usare un metodo. Tra
l'altro in PHP le classi non le usa nessuno quindi non credo che sia
PHP ad averti insegnato sta roba.

In foo(X) passi l'istanza come argomento. Sorpresa! Lo fai anche in
X.foo(), in alcuni linguaggi implicitamente, in altri esplicitamente.
Python ha il self quindi mi pare abb. esplicito.


Di OO c'è che io non uso una funzione per richiamare un'altra funzione,
uso un'istanza di una classe con un metodo ben definito e richiamo quel
metodo che è un metodo altrettanto definito di un'altra istanza di una
classe sul server.


Ora si che sei OO


Eccosa cosa c'è di OO rispetto
callami("funzionePippo").addCallamiJS(pluto), sia client che server.


Facciamo finta ceh callRemote() non ritorni una istanza com un metodo
addCallback. Decisamente poco OO mettere in cascata due espressioni.


allo stesso modo inteso come se fossero simili, oggetti con istanze
identiche, che hanno metodi (JS solo alcuni) che fanno le stesse cose.
Chi ha mai parlato dell' uguaglianza tra i due linguaggi ?
A specchio

function MyClass(){} <=> class MyClass:


Mi domando per quale folle ragione hai intenzione di implementare due
type system cosi differenti per farli "specchiare"


richiede il codice (o classe) di gestione server e quel codice JS
ACE richiederebbe solo il codice (o classe) server, quindi il doppio
debug client/server tipico di ajax verrebbe a mancare, faresti solo
quello server, sounds cool ?


Sei forte eh. Se sul server io mando in giro dati del tipo
"INIZIO-dato-FINE" e non c'è nessun pistola che li legge o che sa ceh
"INIZIO-dato-FINE" significa che dato sta tra i due dash e non al
terzo carattere come fa la tua lib a servire a qualcosa? AJAX funziona
perchè da entrambe le parti c'è qualcuno. JSON esiste per quello,
perchè entrambe le parti parlano la stessa lingua.


non ce ne sono, se mai ce ne fossero, potresti inviare anche stati di
oggetti e sfruttarli, come sta a te


Ok appurato che non ci sono vantaggi la mia tesi di circa 32 post fa
era vera: stai riscrivendo cose già esistenti. Nessun problema, almeno
ora lo so.


e perchè mai il server dovrebbe richiamare un metodo del client se il
client non ha chiesto niente ?


Ok se hai fatto questa domanda decisamente la tua lib non serve a
nulla di più delle mille lib AJAX che ci sono in giro


appunto, il server deva fare solol quello che il client non è in grado
di fare, è il client che si appoggia al server per quello che non può
fare, non il contrario ... almeno di solito


Quindi ora sti implementando AJAX al contrario. Dove il server invece
che fare le computazioni e mandarle al client fa fare tutto al client?
A che serve il server allora? Mi son davvero perso

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

On 8/19/06, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

Lawrence Oluyede ha scritto:
> Ti ho mostrato esempi in cui devi semplicemente aggiornare il dict di
> una classe. Se per te quello è "sbattersi". Se crei una libreria per
> risparmiarti una istruzione direi che è stupido, no?
non credo basti ... ma non lo so.


NON LO SO! Vedi lo avevo capito subito. Scrivi una libreria senza
nemmeno indagare se c'è una reale necessità per tale libreria.
Incomincio a vedere tutto sto thread come una perdita di tempo non
costruttiva.


L'intento è proprio inviare o ricevere con una sola chiamata asincrona
una serie molto consistente di informazioni di diversa natura e diverso
tipo.
Con ajax se ricevi e invii stringhe è inutile che usi ajax, se ricevi ed
invii dati consistenti tipo JSON o serialize fai meno chiamate per avere
molte più informazioni (ovvio, solo se serve)


Ok quindi tutto sto casino per implementare *una* cosa che non ti
piace di JSON, i null aggiunti?


mi frega per creare un'istanza di quella classe, cmq nella PHP_Serialize
dovrei aver risolto, salvo i limiti sulla costruzione finchè non mi
studio meglio la inspect


Boh non commento più perchè tanto non leggi nulla di quello che scrivo :-)


> Puoi usarlo anche da C#
un eval in C# ? ... e dire che avevo cercato tantissimo... preferisco
aver risolto in altro modo (cmq link ? :D)


A parte che è la prima cosa che ho trovato su Google:
http://www.google.com/search?q=eval%20c%2


è una geniale acqua calda ? :D (ma la doc per PHP almeno l'avete vista ?
http://www.3site.eu/jstests/ACE.html  ... no perchè quella dice
praticamente tutto ...)


Ho leggiucchiato. E' ok, se sei su PHP. Ignorare che in altri
linguaggi il problema che si vuole risolvere magari non esiste non è
saggio.


dai 5 ai 500 ... e forse più. Sono libero professionista e non trovo
mica sempre gente disposta a spendere mille o più per un server dedicato
o uno pseudo virtuo da gestire come vogliono ... ma come, prima il
modulo in PyRex avrebbe avuto lo stesso problema per i servers ed ora mi
dici dei 5 euro ?


Il modulo pyrex va compilato e distribuito. Perchè questi simpatici
web hoster dovrebbero volere la tua lib e non una JSON? E' questo che
ti sto chiedendo ripetutamente da almeno 3 post

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Si fa in una linea di python: "value in values" ritorna True o False.
Scusa la battuta ma parli di performance e scrivi cose come questa?
credo sia il primo blocco che ho scritto ... poi dopo misono ricordato 
dell' in :E





getMethods() è piena di bad practices. Non usare has_key ma usa in
semplicemente. 

k



Poi basta isinstance() senza scomodare il modulo types
per vedere se qualcosa è di un certo tipo.

http://www.canonical.org/~kragen/isinstance/



Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile.

???
def parseType(self, value):
   stypes = {
   "string":"s",
   "int":"i", "integer":"i",
   "null":"N", "none":"N",
   "class":"O", "object":"O",
   "bool":"b", "boolean":"b",
   "array":"a", "list":"a", "dict":"a", "tuple":"a",
   "float":"d", "double":"d", "long":"d"
   }
   result = "u"
   vtype = ""
   if "type" in value:
   vtype = value["type"].lower()
   if vtype in stypes:
   result = stypes[vtype]
   return result


Non te la prendere, ma se
studiassi un attimino di più Python magari faresti una lib
"performante". Sto ancora cercando di capire come quella tua lib
comunichi con JS.
la classe per avere GET, POST serve a richiamare in GET il nome della 
classe da esportare durante la creazione della pagina



var mc = new MyClass();
onload = function(){
   document.getElementById("tasto").onclick = function() {
  mc.sayHello.result = function(s){alert(s)}
  mc.sayHello.call("Ciao");
   }
}

la POST per iniviare le variabili serializzate, la classe ACE per JS è 
su devpro





Non hai capito. Sono varie funzioni perchè ogni funzione gestisce un
evento separato. Tipo il connect al server, il quit, ecc ecc. Ste cose
le avresti anche con la tua lib eh

ovvio



Ok allora lasciami dire che a me pare una scelta sbagliata.

a me non troppo essendo piaccaparo :D


Riformulo la domanda: che tipo di interazioni avanzate vuoi fare con 
AJAX?
invio / ricezione di variabili complesse attraverso l'uso di metodi 
server al fine di togliere metà del debug sul client e dedicarsi al solo 
debug server





- procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
stai facendo tu.

attraverso un oggetto



- il tuo approccio è bloccante

eh ? ... e che asincrono sarebbe ?



quindi se devi magicamente trasferire
mega byte di dati come dicevi la tua fantastica app si blocca.
callRemote() perlomeno è asincrono, come tutto in Nevow

come tutto in ACE




Cosa fondamentale. Scusa sto diventando sarcastico.

k



Se centomila server PHP nel mondo non installano JSON per PHP scritta in
C, credi davvero che installeranno la tua libreria?
si perchè non si installa, ACE per PHP è un file ACE.php ed un file 
ACE.js  e dovrebbe diventare un file ACE.psp e lo stesso file 
ACE.js, per continuare con un file ACE.cs e sempre quello in JS





Non ho capito NULLA di quelle quattro righe :-(
Non puoi basare la tua lib sperando di avere in ingresso sempre e solo
UTF-8 perchè UTF8 non è l'unico. Rispondo questo perchè non ho ben
capito il resto.
UTF-8 è un modo php per dire che sfrutta la serializzazione / 
unserializzazione in multibytes ... in Python non esisterebbe UTF-8, 
anzi ... quella var la dovrei togliere ma la PHP_Serializer, per 
portabilità, deve poter supportare la modalità di php






Come sopra cosa? Son 3 post che cerco di farti notare che è meno
vendibile di quella JSON

ma ancora non hai capito bene cosa fa :D




import dinamico? Ossignore :-)

si si si ... lo faccio in C# è complicato in Python ? o_O



Se vuoi ti dico qual è il meccanismo in Python per fare l'import
dinamico e quale modulo può farlo ma te lo lascio trovare da solo cosi
non mi sento responsabile per eventuali danni :-)
quali danni potrebbe fare se sei tu a mettere i files sul server, sei 
"tu" che verifichi il path da richiamare e sei sempre "tu" a creare 
l'applicativo ed a parsare le sue informazioni ?
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Concordo con Valentino. Non stai facendo nulla di object oriented.

ok, usare classi per i pitoniani non significa fare qualcosa di OO



Lo sai vero che non c'è granchè differenza tra:

foo(X)
e
X.foo()

foo <= procedurale, uso funzioni
X.foo <= OO , uso metodi di oggetti

un pitoniano queste cose le sa molto meglio di me, quindi il 3D sta 
finendo a prese per il culo, l'inizializzazione del niubbo pitoniano 
procede come da manuale





Ora si che sei OO
appunto ... io spiego cosa intendo per approccio più OO, voi pur di dire 
che non capisco niente di python state dicendo che usare oggetti e 
metodi non è OO  c'è da ridere




Facciamo finta ceh callRemote() non ritorni una istanza com un metodo
addCallback. Decisamente poco OO mettere in cascata due espressioni.
non è poco OO ... non sono io a non leggere ... ho detto che avevo 
capito male e non ho mai detto fosse meno OO
l'approccio su istanze e metodi lo ritengo più OO di un approccio con 
chiamate a funzioni, a prescindere che queste tornino in dietro oggetti, 
istanze o altro con callBack aggiunta.






Mi domando per quale folle ragione hai intenzione di implementare due
type system cosi differenti per farli "specchiare"
guardati allo specchio ... quello sei tu ? no, è la tua immagine 
riflessa, fa quello che tu gli hai detto (o meglio dici) di fare.
Non esiste tra gli sviluppatori questo concetto ? ... bene, vi siete 
byteencodati anche la fantasia ?






Quindi ora sti implementando AJAX al contrario. Dove il server invece
che fare le computazioni e mandarle al client fa fare tutto al client?
dove il server fa le computazioni per il client e si alleggerisce il 
lavoro durante le interazioni





NON LO SO! Vedi lo avevo capito subito. Scrivi una libreria senza
nemmeno indagare se c'è una reale necessità per tale libreria.
c'è , è mia la reale necessità ... forse l'errore è stato pensarla 
OpenSource ed anche per altri che non hanno la vostra skill con python.

Di solito non lo reputo un errore.
Comunque sia
tmp = []
tmp[5] è aoutOfRange ... siccome l'altro non ha implementato questa 
cosa, l'ho fatta io ... un danno enorme eh ?





Incomincio a vedere tutto sto thread come una perdita di tempo non
costruttiva.

non per me




Ok quindi tutto sto casino per implementare *una* cosa che non ti
piace di JSON, i null aggiunti?
faccio finta che tu non abbia il morbo di alzaimer che ti ha fatto 
dimenticare anche le altre cose diverse che ho fatto e che di casino per 
la PHP_Serializer non ce n'è sato alcuno, l'ho scritta, mi sono 
aggiornato un pò col Python, ho aggiunto cose che l'altra non aveva.
Se vivete solo di codice altrui, visto che per ogni cosa c'è già, come 
avete fatto ad imparare python ?





A parte che è la prima cosa che ho trovato su Google:
http://www.google.com/search?q=eval%20c%2

a non leggere niente non sono certo io  il primo risultato parla di
JScript.NET to perform an Eval in C#

ed io ho scritto che parlavo di C#, non di JScript.NET ...
trovi tutto quello che ti pare su Eval con JScript.NET, quello che già 
conosco e che ho evitato avendo approfondito prima di te l'argomento




Ho leggiucchiato. E' ok, se sei su PHP. Ignorare che in altri
linguaggi il problema che si vuole risolvere magari non esiste non è
saggio.

ma io non sto risolvendo un problema, sto creando una lib portabile




Il modulo pyrex va compilato e distribuito. Perchè questi simpatici
web hoster dovrebbero volere la tua lib e non una JSON? E' questo che
ti sto chiedendo ripetutamente da almeno 3 post
infatti ho già scritto che visto che il supporto UTF-8 per ACE in python 
non serve, sta solo nella PHP_Serializer per portabilità (marò l'avrò 
scritto 10 volte), non farò nemmeno la versione PyRex della PHP_Serializer




A me sembra che partite tutti prevenuti, con un nonsocchè di presunzione 
e la voglia di criticare anche l'ovvio ... solo che io sto qui per 
imparare, altrimenti non chiedevo niente no ?


Buona notte pitoniani
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Sat, 19 Aug 2006 01:05:00 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:


Poi basta isinstance() senza scomodare il modulo types
per vedere se qualcosa è di un certo tipo.

http://www.canonical.org/~kragen/isinstance/


Guarda che qua dice robe abbastanza complesse che poco hanno a che fare con la 
funzione isinstance() ma piuttosto con cio` che fa isinstance(), non e` che se 
non la usi non sei caduto nella trappola :).


Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile.

???
def parseType(self, value):
   stypes = {
   "string":"s",
   "int":"i", "integer":"i",
   "null":"N", "none":"N",
   "class":"O", "object":"O",
   "bool":"b", "boolean":"b",
   "array":"a", "list":"a", "dict":"a", "tuple":"a",
   "float":"d", "double":"d", "long":"d"
   }
   result = "u"
   vtype = ""
   if "type" in value:
   vtype = value["type"].lower()
   if vtype in stypes:
   result = stypes[vtype]
   return result


def parseType(self, value):
   stypes = {...}
   type = value.get('type', '').lower()
   return stypes.get(type, 'u')

invio / ricezione di variabili complesse attraverso l'uso di metodi server 
al fine di togliere metà del debug sul client e dedicarsi al solo debug 
server


Non sacrificherei mai l'architettura alla mia comodita` di breve periodo, anche 
perche` poi una volta che e` stato sviluppato il tutto e` piu` comoda 
l'architettura ben fatta.


- procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
stai facendo tu.

attraverso un oggetto


No, non c'entra un tubo. send(state, 'method_name') e` una notazione 
perfettamente OO.

In common lisp (a mio parere l'object system piu` potente mai creato):

(defclass song ()
 ((name
   :initarg :name
   :initform (error "Ci vuole un nome")
   :accessor name
   :documentation "Il nome della traccia")
  (artist
   :initarg :artist
   :accessor artist)
  (duration
   :initarg :duration
   :accessor duration)))

(defmethod duration-in-minutes ((s song))
 (/ (duration s) 60.0))

(defmethod print-object ((s song) stream)
 (print-unreadable-object (s stream :type t :identity t)
   (format stream "~A - ~A" (name s) (artist s

(defparameter *song* (make-instance
 'song
 :name "My way"
 :artist "Frank Sinatra"
 :duration 180))

(princ-to-string (duration-in-minutes *song*))
(print-object *song* t)

La chiamata di metodo e`:

(duration-in-minutes *song*)

il che equivale a chiamare la funzione duration-in-minutes passando *song* come 
primo argomento su cui viene fatto il multiple dispatch per tipo (attraverso il 
quale vengono indicizzate le generic function agenti sugli stessi tipi in 
ingresso).

Il tipo di notazione che si usa ha ben poco a che fare con l'essere o meno OO. 
C'e` ben altro dietro.

UTF-8 è un modo php per dire che sfrutta la serializzazione / 
unserializzazione in multibytes ... in Python non esisterebbe UTF-8, anzi 
... quella var la dovrei togliere ma la PHP_Serializer, per portabilità, 
deve poter supportare la modalità di php


Provo a rispiegartelo:
Non esistono stringhe di cui non si conosce l'encoding. E non esistono stringhe 
di testo che non siano unicode e ti riconsiglio di leggere il link che ti ho 
gia` postato riguardo a unicode e` _DAVVERO_ il _MINIMO_ che si _DEVE_ 
assolutamente _SAPERE_.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

> Poi basta isinstance() senza scomodare il modulo types
> per vedere se qualcosa è di un certo tipo.
http://www.canonical.org/~kragen/isinstance/


Nessuno di quei casi mi pare si applichi all'uso che ne fai tu.


> Il resto è tutto più o meno uguale. parseType con un dizionario la fai
> in 3 righe ed è più facilmente manutenibile.
???
def parseType(self, value):
stypes = {
"string":"s",
"int":"i", "integer":"i",
"null":"N", "none":"N",
"class":"O", "object":"O",
"bool":"b", "boolean":"b",
"array":"a", "list":"a", "dict":"a", "tuple":"a",
"float":"d", "double":"d", "long":"d"
}
result = "u"
vtype = ""
if "type" in value:
vtype = value["type"].lower()
if vtype in stypes:
result = stypes[vtype]
return result


magari il dizionario definiscilo fuori dalla funzione cosi se un
giorno bisogna modificarlo il povero cristo non deve riscrivere la
funzione ma semplicemente aggiungere una coppia di valori



> Non hai capito. Sono varie funzioni perchè ogni funzione gestisce un
> evento separato. Tipo il connect al server, il quit, ecc ecc. Ste cose
> le avresti anche con la tua lib eh
ovvio


Quindi perchè Wirc era troppo?


> Ok allora lasciami dire che a me pare una scelta sbagliata.
a me non troppo essendo piaccaparo :D


Ok. Perchè se usi PHP e la fai per risolvere un problema di PHP la
scrivi in Python?


invio / ricezione di variabili complesse attraverso l'uso di metodi
server al fine di togliere metà del debug sul client e dedicarsi al solo
debug server


Cosa che puoi fare anche oggi. Vabbè ci rinuncio


> - procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
> stai facendo tu.
attraverso un oggetto


Mi sa che qui il problema sta nella tua lasca conoscenza
dell'orientazione agli oggetti. Tra l'altro per essere pignoli
callRemote() che ti ha fatto vedere valentino ritorna un oggetto, se
come come ci chiami la addCallback() ?


> - il tuo approccio è bloccante
eh ? ... e che asincrono sarebbe ?


mi sfugge dove finiscono i dati di sayHello.call() allora.


> Se centomila server PHP nel mondo non installano JSON per PHP scritta in
> C, credi davvero che installeranno la tua libreria?
si perchè non si installa, ACE per PHP è un file ACE.php ed un file
ACE.js  e dovrebbe diventare un file ACE.psp e lo stesso file
ACE.js, per continuare con un file ACE.cs e sempre quello in JS


A parte che di ACE.cs non te ne fai nulla perchè deve essere
compilato. Comunque ok. Rimango della mia idea in fondo però


UTF-8 è un modo php per dire che sfrutta la serializzazione /
unserializzazione in multibytes ... in Python non esisterebbe UTF-8,
anzi ... quella var la dovrei togliere ma la PHP_Serializer, per
portabilità, deve poter supportare la modalità di php


Siamo alla frutta. Fai una lib in Python con variabili per usarle in
PHP? Forse prima di pensare alla portabilità (inutile perchè tanto
ogni linguaggio si scrive in modi diversi) delle tue istruzioni ti
conviene implementare qualcosa di corretto in Python


> Come sopra cosa? Son 3 post che cerco di farti notare che è meno
> vendibile di quella JSON
ma ancora non hai capito bene cosa fa :D


Il che è tutto tranne che promettente, perchè se in 60 post non sei
riuscito a far capire perchè dovre usare la tua libreria e non JSON
scusami ma la tua libreria non la userò


> import dinamico? Ossignore :-)
si si si ... lo faccio in C# è complicato in Python ? o_O


Non è complicato, è una riga.


> Se vuoi ti dico qual è il meccanismo in Python per fare l'import
> dinamico e quale modulo può farlo ma te lo lascio trovare da solo cosi
> non mi sento responsabile per eventuali danni :-)
quali danni potrebbe fare se sei tu a mettere i files sul server, sei
"tu" che verifichi il path da richiamare e sei sempre "tu" a creare
l'applicativo ed a parsare le sue informazioni ?



Era una battuta, __import__ e il modulo imp sono le cose che devi imparare.

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Valentino Volonghi aka Dialtone ha scritto:
Guarda che qua dice robe abbastanza complesse che poco hanno a che 
fare con la funzione isinstance() ma piuttosto con cio` che fa 
isinstance(), non e` che se non la usi non sei caduto nella trappola :).

non l'ho commentato, aspettavo un riscontro


def parseType(self, value):
   stypes = {...}
   type = value.get('type', '').lower()
   return stypes.get(type, 'u')

quindi has_key non serve a un tubo, giusto ?


Non sacrificherei mai l'architettura alla mia comodita` di breve 
periodo, anche perche` poi una volta che e` stato sviluppato il tutto 
e` piu` comoda l'architettura ben fatta.
dipende, per fare cose veloci semplici e si spera indolori mi è comodo 
scrivere questa lib che userò "sempre e solo io"




No, non c'entra un tubo. send(state, 'method_name') e` una notazione 
perfettamente OO.

Vediamo se ci riesco una volta per tutte:

l'utilizzo di metodi di istanze di classi lo ritengo un modo OO, in 
senso assoluto, di scrivere codice, a livello di sintassi.


in C ho le funzioni, in C++ anche le classi  C++ lo ritengo un 
lignuaggio più Object Oriented (fanno cose diverse, non centra un tubo, 
etc etc ... parlo di scrittura)


pippo->pluto o pippo.pluto , approccio sintattico OO (metodi o parametri 
visibilmente appartenenti ad oggetti)


pluto(pippo) -> che il core lavori di istanze poco mi importa, approccio 
sintattico procedurale (richiamo di funzione con parametro)


IMHO




p per dire che sfrutta la serializzazione / unserializzazione in 
multibytes ... in Python non esisterebbe UTF-8, anzi ... quella var 
la dovrei togliere ma la PHP_Serializer, per portabilità, deve poter 
supportare la modalità di php

Provo a rispiegartelo:
Non esistono stringhe di cui non si conosce l'encoding. E non esistono 
stringhe di testo che non siano unicode e ti riconsiglio di leggere il 
link che ti ho gia` postato riguardo a unicode e` _DAVVERO_ il 
_MINIMO_ che si _DEVE_ assolutamente _SAPERE_.
per in Python non esisterebbe UTF-8 intendevo la variabile UTF8 per 
emulare la conversione col PHP ... ok, mannaggia a me e a quando ho 
chiamato quella var UTF8 (visto che in php la serialize / unserialize su 
multibytes lavorano con utf8_encode ed utf8_decode) ... e la classe è un 
porting di un formato serializzato per PHP ... mica facile spiegarmi qui 
... una sudata ogni mail 


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

ok, usare classi per i pitoniani non significa fare qualcosa di OO


Anche VB6 usa le classi ma non è OO, idem per PHP4. Forse è questo che
ti sfugge. Classe == object oriented non è una equazione.


> Lo sai vero che non c'è granchè differenza tra:
>
> foo(X)
> e
> X.foo()
foo <= procedurale, uso funzioni
X.foo <= OO , uso metodi di oggetti


un metodo è una funzione! L'unica differenza è che implicitamente
piglia un parametro che è la classe di cui modifica lo stato. Puoi
scrivere codice proceduralissimo anche con i metodi.


un pitoniano queste cose le sa molto meglio di me, quindi il 3D sta
finendo a prese per il culo, l'inizializzazione del niubbo pitoniano
procede come da manuale


Come ti pare, ti sto solo spiegando che tu di OO non stai facendo
nulla. Stai solo passando in giro istanze, come passeresti in giro
altro se fossi in VB6, come passeresti in giro dati se non avessi le
classi nel linguaggio XYZ. Il fatto che tu voglia passare in giro
istanze a tutti i costi non è indice di fare le cose OO, solo
cocciutaggine. Poi pensa quel che vuoi.


appunto ... io spiego cosa intendo per approccio più OO, voi pur di dire
che non capisco niente di python state dicendo che usare oggetti e
metodi non è OO  c'è da ridere


No Andrea, io sto dicendo che passare in giro classi come fai tu non
ha molto a che vedere con l'orientamento agli oggetti. Tu passi *DATI*
che per un caso fortuito dato che stai usando Python sono oggetti
sempre e comunque. Se stessi usando Java dove non tutto è un oggetto
faresti la medesima cosa. Se stessi usando un linguaggio dove non
esistono oggetti faresti la stessa cosa. Tu non stai facendo nulla di
OO. Stai solo spostando oggetti. Se non ti è chiaro continua pure a
ridere


l'approccio su istanze e metodi lo ritengo più OO di un approccio con
chiamate a funzioni, a prescindere che queste tornino in dietro oggetti,
istanze o altro con callBack aggiunta.


Ok quindi tutto il tuo problema sta nel fatto che davanti alla
callRemote() non c'è un nome con un dannato punto. Se non ricordo male
in JS dentro un browser le funzioni definite nel namespace globale
appartengono a window. Quindi cavoli, anche in JS tutto è un oggetto!
Dannazione è poco OO però :-(


guardati allo specchio ... quello sei tu ? no, è la tua immagine
riflessa, fa quello che tu gli hai detto (o meglio dici) di fare.
Non esiste tra gli sviluppatori questo concetto ? ... bene, vi siete
byteencodati anche la fantasia ?


Pensi di essere divertente? Ora stai solo mostrando ignoranza
presuntuosa. Per me non è un problema, io sto cercando di seguire i
tuoi ragionamenti da una 40ina di post. Ora so che è stata una perdita
di tempo.


> NON LO SO! Vedi lo avevo capito subito. Scrivi una libreria senza
> nemmeno indagare se c'è una reale necessità per tale libreria.
c'è , è mia la reale necessità ... forse l'errore è stato pensarla
OpenSource ed anche per altri che non hanno la vostra skill con python.
Di solito non lo reputo un errore.
Comunque sia
tmp = []
tmp[5] è aoutOfRange ... siccome l'altro non ha implementato questa
cosa, l'ho fatta io ... un danno enorme eh ?


Sei libero di scrivere quante linee vuoi solo per controllare l'out of
range ma magari bastava scriversi una funzioncina che faceva quel tipo
di check e lanciava una eccezione. Non fa niente,
mi sono piuttosto stufato dell'andazzo degli ultimi post. Mi sembrava
di essere stato abb. disponibile ma ho perso tempo. Buona fortuna.


Se vivete solo di codice altrui, visto che per ogni cosa c'è già, come
avete fatto ad imparare python ?


Incominciando a leggerlo il codice altrui prima di reimplementarlo.


> A parte che è la prima cosa che ho trovato su Google:
> http://www.google.com/search?q=eval%20c%2
a non leggere niente non sono certo io  il primo risultato parla di
JScript.NET to perform an Eval in C#


Dannazione ce la fai a leggere un articolo? Quell'articolo parla di
usare CodeDom per estrarre delle funzionalità dal namespace JS.NET e
sbatterla in C#. Piccola notizia: la CLR contiene i metodi per tutti i
linguaggi distribuiti da .NET ed è stata pensata proprio per questo
genere di interoperabilità


A me sembra che partite tutti prevenuti, con un nonsocchè di presunzione
e la voglia di criticare anche l'ovvio ... solo che io sto qui per
imparare, altrimenti non chiedevo niente no ?


Non sono le tue domande su Python per imparare che abbiamo criticato.

--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Ok  facciamo così:

1 - non so niente di OO (ho riletto anche il mio esempio di C e C++ e 
sicuro qualcuno tirerà fuori le structs ...)

2 - non ci faccio niente della mia lib per me che a me semplifica
3 - c'è già tutto, che razzo programmo a fare
4 - JSON è la via, serialize è una cagata anche se è indispensabile per 
fare questa lib client portabile A PARTIRE DA PHP anche in altri 
linguaggi server
5 - C# se non lo compili non lo puoi banalissimamente mettere nella 
cartella in Visual Web Developer 2005 ed usare tanto lo compila 
first-time lostesso (come i pyc o pyo) per poi metterlo online
6 - non so niente di Python ... e questo è l'unico punto parzialmente 
vero della diatriba, non ho mai approfondito molto, per fare programmi 
desktop mai avuto tutti sti problemi, è più di un anno che non uso 
Python, non ho mai usato troppo Python perchè ho sempre fatto 
soprattutto web
7 - non mi so spiegare e alcuni di voi hanno un modo di comprendere 
veramente poco flessibile, a dispetto del linguaggio e tutte le 
astrazioni davanti in mezzo e dietro


Vado a dormire, chiudo qui l'odissea di incomprensioni (io codice, doc 
ed altro l'ho messa subito ... almeno io c'ho provato a pieagare).


Ringrazio per i cosngili, gli aiuti, parti di codice.

Saluti,
   Andrea Giammarchi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Lawrence Oluyede ha scritto:

Ok quindi tutto il tuo problema sta nel fatto che davanti alla
callRemote() non c'è un nome con un dannato punto. Se non ricordo male
in JS dentro un browser le funzioni definite nel namespace globale
appartengono a window. Quindi cavoli, anche in JS tutto è un oggetto!
Dannazione è poco OO però :-(

questa è mia:
http://forum.html.it/forum/showthread.php?s=&threadid=1014613

leggi bene, dice anche delle globali e di windows

Solo per dire quanto non ci siamo mai capiti in questa ML, Ciao.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Valentino Volonghi aka Dialtone

On Sat, 19 Aug 2006 01:46:42 +0200, Andrea Giammarchi <[EMAIL PROTECTED]> wrote:

non l'ho commentato, aspettavo un riscontro


Avresti dovuto scriverlo. Se lo metti li` cosi` significa che quel link 
risponde per te e non lo fa, tra l'altro per capirlo a fondo bisogna masticare 
parecchio l'OO e, non ti offendere, ma non so quanto tu lo possa capire.


def parseType(self, value):
   stypes = {...}
   type = value.get('type', '').lower()
   return stypes.get(type, 'u')

quindi has_key non serve a un tubo, giusto ?


Non in questo caso e generalmente ci sono modi migliori di cavarsela.

Non sacrificherei mai l'architettura alla mia comodita` di breve periodo, 
anche perche` poi una volta che e` stato sviluppato il tutto e` piu` comoda 
l'architettura ben fatta.
dipende, per fare cose veloci semplici e si spera indolori mi è comodo 
scrivere questa lib che userò "sempre e solo io"


Non e` una risposta a quello che ho scritto :). Tu dicevi che volevi evitare il 
debug lato client il piu` possibile e io ti ho detto che non sacrificherei mai 
l'architettura della mia applicazione. La tua risposta e` assolutamente 
incomprensibile.

No, non c'entra un tubo. send(state, 'method_name') e` una notazione 
perfettamente OO.

Vediamo se ci riesco una volta per tutte:

l'utilizzo di metodi di istanze di classi lo ritengo un modo OO, in senso 
assoluto, di scrivere codice, a livello di sintassi.


Allora. Quello che ritieni tu ha poca importanza, non e` cosi` e basta. E se e` 
questo che hai imparato allora disimparalo perche` e` sbagliato.

in C ho le funzioni, in C++ anche le classi  C++ lo ritengo un 
lignuaggio più Object Oriented (fanno cose diverse, non centra un tubo, etc 
etc ... parlo di scrittura)


Si puo` fare object orientation anche in C.

pippo->pluto o pippo.pluto , approccio sintattico OO (metodi o parametri 
visibilmente appartenenti ad oggetti)


E` una tua invenzione. Il linguaggio a oggetti di chi ha inventato il termine 
object oriented fa [oggetto metodo] per indicare la chiamata del metodo.
Common Lisp come ti ho fatto vedere fa diversamente. Sono tutti OO. Invece in 
python itertools.imap() non e` OO perche` itertools e` un modulo e imap() e` 
cio` che di piu` funzionale non potrebbe esistere.

pluto(pippo) -> che il core lavori di istanze poco mi importa, approccio 
sintattico procedurale (richiamo di funzione con parametro)


Non e` cosi`. Cambia idea perche` e` sbagliata.

per in Python non esisterebbe UTF-8 intendevo la variabile UTF8 per emulare 
la conversione col PHP ... ok, mannaggia a me e a quando ho chiamato quella 
var UTF8 (visto che in php la serialize / unserialize su multibytes lavorano 
con utf8_encode ed utf8_decode) ... e la classe è un porting di un formato 
serializzato per PHP ... mica facile spiegarmi qui ... una sudata ogni mail 



E` una sudata ogni email perche` vieni dal php e sei PARECCHIO confuso su molte 
cose. Quello che ho scritto sopra non si traduce in questo che hai scritto 
comunque, solo che non capendo cosa intendi dire non riesco neanche a sistemare 
cio` che hai scritto.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Lawrence Oluyede

1 - non so niente di OO (ho riletto anche il mio esempio di C e C++ e
sicuro qualcuno tirerà fuori le structs ...)


Che esempio?


2 - non ci faccio niente della mia lib per me che a me semplifica


Puoi fare quel che ti pare della tua lib.


3 - c'è già tutto, che razzo programmo a fare


Veramente abbiamo parlato sempre e solo di una cosa.


4 - JSON è la via, serialize è una cagata anche se è indispensabile per
fare questa lib client portabile A PARTIRE DA PHP anche in altri
linguaggi server


Io ho detto più e più volte che JSON è uno standard, se non ti va bene
puoi partire da quello standard e magari migliorarlo. Le possibilità
che un tuo protocollo custom, nato per risolvere problemi che non
esistono o che comunque hanno solo gli utenti PHP, diventi usato da
tutti nei vari linguaggi sono piuttosto basse


5 - C# se non lo compili non lo puoi banalissimamente mettere nella
cartella in Visual Web Developer 2005 ed usare tanto lo compila
first-time lostesso (come i pyc o pyo) per poi metterlo online


Vero mi ero dimenticato di questa possibilità


7 - non mi so spiegare e alcuni di voi hanno un modo di comprendere
veramente poco flessibile, a dispetto del linguaggio e tutte le
astrazioni davanti in mezzo e dietro


Boh sarà che non parliamo la stessa "lingua". Per questo non ci capiamo


--
Lawrence
http://www.oluyede.org/blog
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] mod_python ed il giusto handler

2006-08-18 Per discussione Andrea Giammarchi

Allora, raccolgo le palpebre per questa ultima email spero chiarificatrice.

Valentino Volonghi aka Dialtone ha scritto:
Non e` una risposta a quello che ho scritto :). Tu dicevi che volevi 
evitare il debug lato client il piu` possibile
esatto ... e sai perchè ? perchè non devo scrivere due volte il codice 
per quelle classi, è già pronto, mi preoccupo del resto, la classe la 
sviluppo per il server, qualche metodo che mi serve sul client lo esporto.

Non c'è alcuna rinuncia, visto che l'architettura è sul server.

I frameworks / toolkit noti del php che ha molte più varianti di quelle 
per Python (pensate quanto sono malato ... il fatto è che le ho viste 
quasi tutte e gran parte mi ha deluso per una serie di problemi non da 
poco) ed alcune permettono di usare funzioni php (chiamatele come 
volete) e non oggetti, dichiarate nel server ed esportate a mano, sul 
client, creando in automatico porzioni di codice per il client per 
sfruttare queste funzioni.
Questo concetto, lo fanno anche diverse vostre lib Python (tutte quelle 
che ho visto sfruttano JS da includere, o metodi per esportare funzioni 
, classi o oggetti), ovvero creano il JS utile per sfruttare via JS il 
fw, che poi voi scriviate quello che vi pare nel JS è stranormale, lo si 
fa con tutte le lib (mochkit e athena compresi ma "quelli li adorate 
tutto il resto è inutile") .
Solo alcuni, in PHP, esportano anche metodi di classi o classi ... e 
fanno a grandi linee quello che ho già fatto io tanti mesi fa con AJSHP, 
solo che io l'ho automatizzato.
Sviluppo con ajax da anni, con ajshp da tanti mesi e sono abituato a 
scrivere sul server, sfruttare quanto mi serve sul client, dedicarmi 
solo al resto del client pur ricordandomi sempre che ho quella classe 
con quel metodo presa dal server che fa quello per me (anche voi ? bene).
A differenza di tante altre librerie in PHP, AJSHP non aveva problemi 
con le sessioni, con le chiamate multiple (può capitare di fare chiamate 
incrociate, un intervallo on-line-users mentre si fa un login, per 
esempio), era velocissima sul server proprio perchè non usava JSON ed 
era nativamente compatibile con le variabili di PHP grazie alla 
serializzata.
Io sono abituato così, poi un guorno arrivo ad interessarmidi mod_python 
e mi sento dare dell'incompetente, deficente ... etc etc ... a ragà, e 
mica sono tutti uguali i linguaggi, n'attimo !!!
Mi ritrovo a non avere niente se non una sfilza di "bellissimi" FW / 
Toolkit già fatti, ma ho avuto esperienze deludenti con quelli PHP più 
noti (il paragone non regge ? non ho tempo di verificare).
ACE era già stato scritto perchè mi semplifica ulteriormente il tutto 
aggiungendo maggior sicurezza e compatibilità nativa con multibytes di 
php serializzato, ACE di fatto è "il figlio di AJSHP", colma le cose che 
non andavano, è stato riscritto nei punti critici e vorrebbe essere 
portato anche su C# o mod_python perchè IO, non mi sento più di usare 
solo il php (ma nemmeno di rinuciarci) visto che mi sta facendo sempre 
più schifo e se mi capitano progetti con C# o mod_python (più facile il 
primo) devo essere pronto a portarmi dietro tutte le mie belle lib che 
con gli anni mi sono fatto per fare aree admin o altro ancora.


Non nego di non essermi preoccupato tanto della fattibilità della cosa 
per altro abbastanza banale in PHP (davo per scontato che i potenti 
rivali potessero fare altrettanto bene ed altrettnto semplicemente), ma 
vi assicuro che per me è un modo performante, semplice e veloce di 
lavorare (per me ... sarà abitudine) quindi vorrei assolutamente 
riuscire a fare questo benedetto porting per altre tecnologie, così 
almeno io, non mi devo trapanare le palle a riscrivere tutto per 
riadattare il mio js a quella o quell'altra libreria strafica che però 
usa metodi tutti suoi.
Non uso Dojo, non uso prototype, tutto quello di JS che c'è già di noto 
non mi garba per una serie di motivi per me validi, scrivo le mie lib JS 
leggere, ottimizzate, i miei components, fine, la pace dei sensi per 
quel che mi riguarda, visto che con gli anni le ho fatte sempre meglio 
(almeno in JS) ed alcune sono veramente testate o almeno non mi hanno 
mai dato problemi con nessun browser.


Ecco perchè un idiota piaccaparo arriva in ml python e comincia a 
delirare, ai vostri occhi, per una libreria inutile, spreco di tempo e 
tutto quello che volete  ecco perchè per continuare a stare a galla 
in questo settore devo poter fare cose il più velocemente possibile 
senza avere limiti tecnologici (server .NET ??? ... ok, server PHP ??? 
... ok, serve mod_python ? ... boh, ci provo, ma almeno il client so che 
è OK) ... ecco perchè ACE nasce anche semplice, da usare non da fare, 
diverso da altri, ovvio, ma potenzialmente adatto ai molti che 
potrebbero ritrovarsi nella mia situazione (almeno un paio ne conosco).


Ora rivedrò le mie convinzioni su cosa è veramente OO e cosa intendo io 
per scrivere OO o sfruttare la stessa OO su più linguaggi, abituato a 
comunità di livello