Re: [Python] mod_python ed il giusto handler
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
> 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
> 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
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
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
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
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
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
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
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