Discussion:
mod_python ed il giusto handler
(too old to reply)
unknown
2006-08-16 15:20:32 UTC
Permalink
Salve a tutti,

mi sto inoltando solo ora verso mod_python su Apache 2.X e già mi
sorgono i primi dubbi.

Qual'è secondo voi l'handler più semplice / immediato da gestire ?

- CGI lo escluderei per le performance ridotte

- PSP è un embed stile JSP, PHP, o Rails e tutto sommato potrebbe essere
quello più semplice da gestire basando il tutto su sistemi di template
dinamico (poi è scritto in C quindi velocissimo)

- la configurazione a singolo file la vedo troppo castrante e credo sia
più per un Hello World o altro di molto specifico ...

- mod_python.publisher sembra quello migliore ma ho ancora dubbi sulla
semplicità di sviluppo / debug / manutenzione dovendo (?) basare tutto
su un unico file (ma magari fa l'import anche di altri files ... non saprei)

- Vampire, basato su mod_python.publisher, pare sia la versione più
semplice o funzionale dello stesso handler ..


- ce ne sono altri ??? ... qual'è il più usato ?



insomma, vorrei avere pareri o opinioni su un modo di sfruttare python
nel web piuttosto che un altro ... voi cosa avete scelto ?

Zope, ad esempio, è basato mod_python.publisher ?

Attendo ansiosamente un vostro riscontro, grazie :-)
unknown
2006-08-16 22:01:39 UTC
Permalink
Post by unknown
Salve a tutti,
[snip]
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django, <http://djangoproject.com/>
Post by unknown
insomma, vorrei avere pareri o opinioni su un modo di sfruttare python
nel web piuttosto che un altro ... voi cosa avete scelto ?
Indovina ;)
Post by unknown
Zope, ad esempio, è basato mod_python.publisher ?
No
Post by unknown
Attendo ansiosamente un vostro riscontro, grazie :-)
Ciao,
(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.
unknown
2006-08-16 23:30:17 UTC
Permalink
Ma porca trota (scusa, intanto grazie) .. è tutto il pomeriggio che
sbatto la testa con questo mod_python ed ora viene fuori questo
framework favoloso ?

vabbeh ... proverò a continuare per la mia strada (poi un giorno
spiegherò anche il perchè o dove vorrei arrivare) con mod_python

Le conclusioni sono state le seguenti:

- publisher, come handler (credo lo stesso di django o simile), non è
dei più performanti
- psp pare sia tra i più performanti dopo la configurazione a singolo
file (anche se gestisce un embed stile Ruby on Rails o PHP, quindi non
so quanto sia veramente performante ... sicuramente più degli altri
appena citati)

In generale ho notato che la semplicità del php con le cose più banali
($_GET, $_POST, $_FILE) non esiste con nessun handler (ma le super
globali, o almeno la loro netta distinzione, le trovo estremamente utili
...).

Zope da quanto ho visto può andare anche sotto Apache e mod_python, Zope
si prende solo qualche variabile del server per partire e niente più.
Zope l'ho imitato per la scrematura di variabili ad eccezione del path
che l'ho aggiunto.

Mi sono anche scervellato per riuscire a fare una classe per delle super
globali PHP-STYLE molto fake, questo è quanto ne è venuto fuori:

### Andrea Giammarchi
# PHPRequestVars alpha 1

import mod_python

class PHPRequestVars:

def getPHPFakeEnviroment(self):
return {'SERVER':self.__SERVER, 'GET':self.__GET,
'POST':self.__POST, 'FILES':self.__FILES}

def __init__(self, HTTPRequest):

self.__SERVER = {}
self.__GET = {}
self.__POST = {}
self.__FILES = {}

HTTPRequest.add_common_vars()
for k,v in HTTPRequest.subprocess_env.iteritems():
if k.startswith('HTTP_') or k.startswith('PATH_') or
k.startswith('SERVER_') or k.startswith('REQUEST_') or k in
['CONNECTION_TYPE','REMOTE_ADDR','QUERY_STRING','CONTENT_LENGTH','CONTENT_TYPE','SCRIPT_FILENAME']:
self.__SERVER[k] = v
if HTTPRequest.headers_in.has_key('authorization'):
self.__SERVER['HTTP_AUTHORIZATION'] =
HTTPRequest.headers_in['authorization']
self.__SERVER['GATEWAY_INTERFACE'] = 'Python/mod_python.publisher'
self.__SERVER['SCRIPT_NAME'] = ''
if self.__SERVER.has_key('REQUEST_URI'):
self.__SERVER['PATH_TRANSLATED'] =
self.__SERVER['PATH_INFO'] = self.__SERVER['REQUEST_URI'].split('?')[0]
if self.__SERVER.has_key('HTTP_CONNECTION'):
self.__SERVER['CONNECTION_TYPE'] =
self.__SERVER['HTTP_CONNECTION']
if self.__SERVER.has_key('QUERY_STRING') and
len(self.__SERVER['QUERY_STRING']) > 0:
self.__initGet(self.__SERVER['QUERY_STRING'].split('&'))
if self.__SERVER.has_key('REQUEST_METHOD') and
self.__SERVER['REQUEST_METHOD'] == 'POST':
self.__initPostAndFiles(HTTPRequest)

def __initGet(self, queryString):
j = len(queryString)
tmp = []
for i in range(0, j):
tmp = queryString[i].split('=')
if len(tmp) == 2:
self.__GET[tmp[0]] = tmp[1]
else:
self.__GET[tmp[0]] = ''

def __initPostAndFiles(self, HTTPRequest):
tmplist = mod_python.util.FieldStorage(HTTPRequest).list
j = len(tmplist)
for i in range(0, j):
if tmplist[i].file.__class__.__name__ !=
'_TemporaryFileWrapper':
if not self.__GET.has_key(tmplist[i].name):
self.__POST[tmplist[i].name] = tmplist[i].value
elif self.__GET[tmplist[i].name] != tmplist[i].value:
self.__POST[tmplist[i].name] = tmplist[i].value

else:
cname = tmplist[i].value
self.__FILES[tmplist[i].name] = {
'name':tmplist[i].filename,
'type':tmplist[i].type,
'tmp_name':tmplist[i].file.__dict__['name'],
'size':len(cname),
'data':cname,
'error':0
}


e questa è la pagina index.psp che sto usando per fare i tests:

<%
from PHPRequestVars import *

def index(HTTPRequest):
buffer = []
phpFakeEnv = PHPRequestVars(HTTPRequest).getPHPFakeEnviroment()

_SERVER = phpFakeEnv['SERVER']
_GET = phpFakeEnv['GET']
_POST = phpFakeEnv['POST']
_FILES = phpFakeEnv['FILES']

buffer.append('<pre>')
for k in _POST:
buffer.append('_POST: %s %s<br />' % (k, _POST[k]))
buffer.append('</pre>')

buffer.append('<pre>')
for k in _GET:
buffer.append('_GET: %s %s<br />' % (k, _GET[k]))
buffer.append('</pre>')

buffer.append('<pre>')
for k in _FILES:
buffer.append('_FILES: %s %s<br />' % (k,
_FILES[k]['name']))
buffer.append('</pre>')

buffer.append('<hr /><pre>')
for k in _SERVER:
buffer.append('_SERVER: %s %s<br />' % (k, _SERVER[k]))
buffer.append('</pre>')

HTTPRequest.content_type = "text/html"
HTTPRequest.send_http_header()
HTTPRequest.write("".join(buffer))

index(req)
%>

Ora, funziona tutto alla perfezione (almeno dai tests che ho fatto io)
ma ho un enorme dubbio sulla variabile _FILE, in particolare in questo
pezzo:

cname = tmplist[i].value
self.__FILES[tmplist[i].name] = {
'name':tmplist[i].filename,
'type':tmplist[i].type,
'tmp_name':tmplist[i].file.__dict__['name'],
'size':len(cname),
'data':cname,
'error':0
}

il dubbio nasce dal fatto che mod_python si comporta in modo diverso da
mod_php e da quanto ho letto cname = tmplist[i].value può mandare in
tilt il web-server perchè carica in memoria tutto il file come stringa
binaria non appena richiamato.
Non ho trovato il modo di prendere la size del file inviato se non
sfruttando la len del binario ed a quel punto ho optato per l'aggiunta
di un campo data contenente tale stringa.

Ovviamente se i files sono molto grandi il server va in crisi .... avete
consigli sul come gestire il tutto o chiudere il file inviato al fine di
poter leggere la size e non quella attesa, ovvero 0L ??? (os.stat(..)[6]
già provato)

Grazie ancora, se sono uscito dal tema apro un'altra email ?

Saluti,
Andrea Giammarchi

P.S. ogni altro consiglio sul codice postato è ben accetto
Post by unknown
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django, <http://djangoproject.com/>
unknown
2006-08-17 01:44:27 UTC
Permalink
Post by unknown
Ma porca trota (scusa, intanto grazie) .. è tutto il pomeriggio che
sbatto la testa con questo mod_python ed ora viene fuori questo
framework favoloso ?
Veramente è fuori da un anno e passa :-)
Post by unknown
vabbeh ... proverò a continuare per la mia strada (poi un giorno
spiegherò anche il perchè o dove vorrei arrivare) con mod_python
Sei libero di fare quel che vuoi giustamente
Post by unknown
- publisher, come handler (credo lo stesso di django o simile), non è
dei più performanti
Eh eh non so su quale parte di mod_python poggi Django ma può usare
anche FastCGI che mi sembra una soluzione migliore. Ma come mai stai
cercando per performance?
Post by unknown
In generale ho notato che la semplicità del php con le cose più banali
($_GET, $_POST, $_FILE) non esiste con nessun handler (ma le super
globali, o almeno la loro netta distinzione, le trovo estremamente utili
...).
Veramente io le trovo inutili, proprio perchè non mi piace la via del
PHP. Ogni framework fa a se e Python è diverso da PHP. Credo che tu
faccia meglio ad abituarti a Python e ai suoi modi di essere usato nei
vari fw piuttosto che modellare Python ad immagine e somiglianza di
PHP (altrimenti sarebbe più saggio usare semplicemente PHP)
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 02:39:41 UTC
Permalink
Alt alt alt. Io non sto criticando la separazione del tipo di request.
Sto dicendo che non mi piace il modo in cui lo fa PHP. Comunque una
http://www.djangoproject.com/documentation/request_response/
Mi pare un modo decisamente più pulito
Scusami eh ....

GET
A dictionary-like object containing all given HTTP GET parameters.
POST

A dictionary-like object containing all given HTTP POST parameters.


quindi io avrei fatto monkey patch / code perchè ho messo l'underscore
prima di GET e POST ovvero ho creato _GET e _POST ???

beh .... dai, django usa lo stesso identico modo di PHP, distingue (e
non so come, cercherò di leggermi il source) i due tipi di dict, quindi
esattamente il mio stesso modo (scopo finale) senza un framework dietro ...

se ti riferivi al request invece, fa parte del dict _SERVER e della
chiave di mod_pyton REQUEST_METHOD, che ricei in modo django compatibile
con un for k in _SERVER: if key.startswith('REQUEST_') ...
e crei il tuo dict django style


alla fine non mi sembra di aver fatto chissà quale mostruosità ... anzi,
il tuo link mi ha dato speranza (ma se il file ha un content con il
contenuto resta il dubbio della chiamata al value del file che può
mandare in tilt il server)


Ciao,
Andrea Giammarchi
unknown
2006-08-17 04:30:09 UTC
Permalink
Post by unknown
GET
A dictionary-like object containing all given HTTP GET parameters.
POST
A dictionary-like object containing all given HTTP POST parameters.
quindi io avrei fatto monkey patch / code perchè ho messo l'underscore
prima di GET e POST ovvero ho creato _GET e _POST ???
Facciamo finta che io mi sia spiegato bene perchè a quanto pare non è cosi :-(
Post by unknown
beh .... dai, django usa lo stesso identico modo di PHP, distingue (e
non so come, cercherò di leggermi il source) i due tipi di dict, quindi
esattamente il mio stesso modo (scopo finale) senza un framework dietro ...
Ok!
Post by unknown
se ti riferivi al request invece, fa parte del dict _SERVER e della
chiave di mod_pyton REQUEST_METHOD, che ricei in modo django compatibile
con un for k in _SERVER: if key.startswith('REQUEST_') ...
e crei il tuo dict django style
Il punto è che in un fw è tutto più organico, tutto qui. Ma sembra che
tu non voglia usare un fw a tutti i costi, mi sbaglio?
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 18:46:18 UTC
Permalink
Post by unknown
Il punto è che in un fw è tutto più organico, tutto qui. Ma sembra che
tu non voglia usare un fw a tutti i costi, mi sbaglio?
no, non sbagli, devo fare un qualcosa di portabile, non basato su alcun
framework, per fare questo devo evitare di basarmi a mia volta su un fw.
Post by unknown
Non è che hai un intero fw in memoria eh. Solo che mod_python è un
layer sopra Apache e non mi è mai piaciuto molto. Preferisco qualcosa
di minimale come CherryPy allora che è più Pythonico.
CherryPy è molto interessante, soprattutto perchè leggero e presumo
portabile senza richiedere Apache o altri webservers (vorrei testarlo su
CD o pendrive, sarebbe veramente divertente svilupparci sopra).

Apache invece è il webserver più usato e noto della rete e mod_python è
un sotto progetto della Apache stessa.
Questo mi porta a pensare che:
1 - se devo imparare ora qualcosa su Python per il web, tanto vale
scegliere il progetto sulla quale investirei (o meglio investono) di più
(progetto ufficiale di un webserver che punta molto su questo stesso)
2 - se devo creare una libreria portabile, tanto vale crearla su misura
per il modulo usato dal webserver più noto (per poi adattarla
eventualmente su altri fw, dove le cose sono parzialmente fatte)
3 - se dovessi scegliere un webserver, già che sto imparando qualcosa,
sceglierei un server Linux con Apache e mod_python, che è "mission
critical ready" e che presumo a breve verrà sempre più sfruttato

Detto questo ho letto solo oggi che PSP sarebbe mod_psp, integrato da
non molto in mod python ... non so quindi quanto sia maturo / affidabile
performante, ma il fatto del C dietro l'intero modulo, mi fa pensare sia
la scelta migliore per semplicità e prestazioni, in grado di battersela
con C#, J2EE o altri, sicuramente kilometri sopra le performance
deludenti del PHP (sto anche tentando di migrare dal PHP perchè mi sta
facendo imbestialire ogni giorno di più ... pensavo di passare a C# per
richiesta e presenza in rete ma C# è lievemente prolisso anche per le
cose semplici e non mi sta quindi molto simpatico)

Ora non mi resta che trovare documentazione decente sul modulo, quella
ufficiale non è molto utile ... :-(

Ogni link su classi, dettagli di configurazione o altro è bene accetto,
io mi ritrovo sempre nelle stesse pagine che dicono tanto e non
approfondiscono quasi niente.

Saluti,
Andrea Giammarchi
unknown
2006-08-17 19:03:10 UTC
Permalink
Post by unknown
Post by unknown
Il punto è che in un fw è tutto più organico, tutto qui. Ma sembra che
tu non voglia usare un fw a tutti i costi, mi sbaglio?
no, non sbagli, devo fare un qualcosa di portabile, non basato su alcun
framework, per fare questo devo evitare di basarmi a mia volta su un fw.
Dai un occhio anche a Twisted.
Twisted *è* un framework, ma non uno qualsiasi.

Il problema è che vive in un mondo tutto suo (asincrono) ed è difficile
adattare delle librerie sincrone.

Twisted ha un server web (twisted.web ora in fase di riscrittura verso
twisted.web2) interamente scritto in Python che ti da una flessibilità
probabilmente senza pari.
E le performance sono buone, appunto perchè sfrutta il modello asincrono.

C'è anche un web toolkit, Nevow, piuttosto unico nel suo genere (a molti
non piace).
Post by unknown
Post by unknown
Non è che hai un intero fw in memoria eh. Solo che mod_python è un
layer sopra Apache e non mi è mai piaciuto molto. Preferisco qualcosa
di minimale come CherryPy allora che è più Pythonico.
CherryPy è molto interessante, soprattutto perchè leggero e presumo
portabile senza richiedere Apache o altri webservers (vorrei testarlo su
CD o pendrive, sarebbe veramente divertente svilupparci sopra).
Il webserver serve, altrimenti come fai?
Quello usato di default da CherryPy mi sembra sia il server HTTP
presente nella libreria standard.
Post by unknown
Apache invece è il webserver più usato e noto della rete e mod_python è
un sotto progetto della Apache stessa.
Si, ma Lighttpd sembra stia avendo un discreto successo, ed è molto più
leggero.

E per interfacciarsi a Ligttpd si usa SCGI o FASTCGI.
Ci sono un paio di package che implementano un server per questi due
protocolli, offrendo una interfaccia WSGI
(Python Web Server Gateway Interface v1.0, PEP 333,
http://www.python.org/dev/peps/pep-0333/)

WSGI è la chiave per la portabilità.
Post by unknown
1 - se devo imparare ora qualcosa su Python per il web, tanto vale
scegliere il progetto sulla quale investirei (o meglio investono) di più
(progetto ufficiale di un webserver che punta molto su questo stesso)
2 - se devo creare una libreria portabile, tanto vale crearla su misura
per il modulo usato dal webserver più noto (per poi adattarla
eventualmente su altri fw, dove le cose sono parzialmente fatte)
3 - se dovessi scegliere un webserver, già che sto imparando qualcosa,
sceglierei un server Linux con Apache e mod_python, che è "mission
critical ready" e che presumo a breve verrà sempre più sfruttato
Come ti è già stato detto, mod_python è a basso livello.
Se la gente passa a Python da PHP è per usare qualcosa che funzioni
meglio su larga scala.
Post by unknown
Detto questo ho letto solo oggi che PSP sarebbe mod_psp, integrato da
non molto in mod python ... non so quindi quanto sia maturo / affidabile
performante, ma il fatto del C dietro l'intero modulo, mi fa pensare sia
la scelta migliore per semplicità e prestazioni, in grado di battersela
con C#, J2EE o altri, sicuramente kilometri sopra le performance
deludenti del PHP
Guarda che come performance assolute Python non è meglio di PHP.
Tempo fa qualcuno ha fatto dei semplici test.

Occhio alla parola "semplici".
In realtà un test per avere significato deve essere su una applicazione
significativa.
Post by unknown
(sto anche tentando di migrare dal PHP perchè mi sta
facendo imbestialire ogni giorno di più ... pensavo di passare a C# per
richiesta e presenza in rete ma C# è lievemente prolisso anche per le
cose semplici e non mi sta quindi molto simpatico)
Ora non mi resta che trovare documentazione decente sul modulo, quella
ufficiale non è molto utile ... :-(
Ogni link su classi, dettagli di configurazione o altro è bene accetto,
io mi ritrovo sempre nelle stesse pagine che dicono tanto e non
approfondiscono quasi niente.
Per prima cosa devi conoscere bene Apache.
mod_python non mi sembra poi così complicato.



Saluti Manlio Perillo
unknown
2006-08-18 00:47:33 UTC
Permalink
Post by unknown
Il webserver serve, altrimenti come fai?
si, hai ragione, intendevo uno tipo apache, non interno al python
Post by unknown
Quello usato di default da CherryPy mi sembra sia il server HTTP
presente nella libreria standard.
quindi si potrebbe fare un serverino portabile con py2exe e cherrypy,
giusto ? ... in caso approfondirò cherrypy
Post by unknown
Come ti è già stato detto, mod_python è a basso livello.
Se la gente passa a Python da PHP è per usare qualcosa che funzioni
meglio su larga scala.
io vorei solo riprodurre le comodità del PHP per me, intanto, visto che
sono abituato con quelle e che con quelle mi sono sempre trovato bene
(GET, POST; FILE, SESSION, COOCKIE) ... a prescindere dal progettino che
già dovrebbe andare, visto che GET e POST sono riuscito a dividerle in
modo utile (almeno per il progettino)
Post by unknown
Per prima cosa devi conoscere bene Apache.
mod_python non mi sembra poi così complicato.
non sarà complicato ma non c'è molta doc in giro .... Apache lo conosco
ma non conosco i metodi, i tipi di dato o altro sfruttabile in
mod_python, che con Apache non c'entrano molto.

Ad esempio avessi una lista dei metodi del req sarei già "a cavallo",
invece di tentare con mille for in alla scoperta di variabili ... (anche
visto che Cookie e Session ci sono ... c'è poco ma ci sono metodi e opzioni)



Ciao,
Andrea Giammarchi


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
e siccome per PHP m'è riuscita bene (almeno credo :D) averla su python
potrebbe farmi fare la svolta definitiva ( uso ajax da tempo e da mesi
sfrutto mie librerie per fare interazioni OO ... poi bisogna vedere se
riesco a farla bene anche per C# senza muovere i kili di Kb "poco
flessibili" di Atlas o compagnia bella :P ).
Se interessa questa è la doc semi ufficiale per php:
http://www.3site.eu/jstests/ACE.html

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 (ciò
nonostante comunque rapidissimo)
unknown
2006-08-18 13:06:04 UTC
Permalink
Nevow Athena.
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


Saluti,
Andrea Giammarchi
unknown
2006-08-18 15:50:56 UTC
Permalink
Post by unknown
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
unknown
2006-08-18 16:51:03 UTC
Permalink
Post by unknown
Post by unknown
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
unknown
2006-08-18 18:20:19 UTC
Permalink
Post by unknown
Post by unknown
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.
unknown
2006-08-18 18:41:47 UTC
Permalink
Post by unknown
Post by unknown
Post by unknown
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 ;-)
Post by unknown
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
unknown
2006-08-18 19:35:08 UTC
Permalink
Post by unknown
Post by unknown
Post by unknown
Post by unknown
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...
Post by unknown
Post by unknown
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.. ;)
Post by unknown
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.
unknown
2006-08-18 15:56:50 UTC
Permalink
Post by unknown
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.
Post by unknown
Se poi non interesserà a nessuno o nessuno lo userà pazienza, lo
sfrutterò solo io :P
No, sembra interessante.
Post by unknown
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
unknown
2006-08-18 16:31:46 UTC
Permalink
Post by unknown
Comunque (non l'ho mai usato) mi sembra che con Athena puoi dialogare in
entrambe le direzioni, non solo client -> server.
Yup
Post by unknown
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
unknown
2006-08-18 17:22:47 UTC
Permalink
Post by unknown
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
Post by unknown
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" ? :-)
unknown
2006-08-18 19:44:05 UTC
Permalink
Post by unknown
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.
unknown
2006-08-18 21:23:55 UTC
Permalink
Post by unknown
Post by unknown
Limitato, in che senso? Nel senso di "sicuro" ? :-
più che sicuro, JSON trasporta solo parti di JS e non può fare, ad
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
Post by unknown
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/
Post by unknown
molto simili a
quelli PHP,
e non è un pregio :-P
Post by unknown
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.
Post by unknown
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)
Post by unknown
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 :-) ?
Post by unknown
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
unknown
2006-08-18 22:33:53 UTC
Permalink
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
unknown
2006-08-18 23:47:01 UTC
Permalink
Post by unknown
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
unknown
2006-08-19 03:47:33 UTC
Permalink
Post by unknown
Post by unknown
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
unknown
2006-08-19 04:54:43 UTC
Permalink
Post by unknown
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
unknown
2006-08-19 05:18:22 UTC
Permalink
Post by unknown
Post by unknown
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$ ... :-(
unknown
2006-08-19 15:32:58 UTC
Permalink
Post by unknown
Post by unknown
Post by unknown
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$ ... :-(
Hai scaricaro il 2005?
Quelle istruzioni valgono per il 2003 (che la Microsoft ha ritirato).



Saluti Manlio Perillo
unknown
2006-08-19 18:30:33 UTC
Permalink
Post by unknown
Hai scaricaro il 2005?
Quelle istruzioni valgono per il 2003 (che la Microsoft ha ritirato).
zi :E ... Visual C++ Express 2005 ... che assieme al C# ed al Web
Developer mi sta intasando l'HD a suon di 60 mega di programma da
scompattare alla volta.
Dici che posso tranquillamente disinstallarlo tanto non mi serve per
PyRex ? (ed in generale non uso C++, preferisco C#)

L'altro messaggio mi è arrivato solo in posta privata, te lo rigiro per
Post by unknown
Post by unknown
[...]
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?
Non so come funzionano le estensioni in PHP, ma se un host ti da
mod_python e un account FTP probabilmente puoi mettere sul server i
moduli che vuoi, impostando il PYTHONPATH con una istruzione di mod_python.


Questa è una cosa che mi interessa: qualcuno lo ha mai fatto?




Saluti Manlio Perillo
unknown
2006-08-19 18:35:07 UTC
Permalink
Post by unknown
zi :E ... Visual C++ Express 2005 ... che assieme al C# ed al Web
Developer mi sta intasando l'HD a suon di 60 mega di programma da
scompattare alla volta.
Non ti serve il 2005 per Python :-(
Post by unknown
Dici che posso tranquillamente disinstallarlo tanto non mi serve per
PyRex ? (ed in generale non uso C++, preferisco C#)
Decisamente si
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-19 18:36:29 UTC
Permalink
Post by unknown
Non so come funzionano le estensioni in PHP, ma se un host ti da
mod_python e un account FTP probabilmente puoi mettere sul server i
moduli che vuoi, impostando il PYTHONPATH con una istruzione di mod_python.
dimenticavo che in PHP questa possibilità spesso non c'è ... vietano
l'istallazione di librerie esterne non presenti.
Sarà anche che in php per aggiungere un modulo devi mettere mano nel
php.ini (ed avere anche accesso alla folder per i moduli, quasi mai
accessibile) e quello, almeno dalla mia esperienza, non è praticamente
mai raggiungibile, solo virtuo o simili e dedicati permettono di fare un
pò di tutto.

Con mod_python le direttive per i path sono diverse da quelle php,
quindi potendo modificare solitamente il config di apache (cosa invece
spesso possibile) per mettere rewrite rules o altro, credo sia fattibile
ma non ho un host con supporto mod_python per convermartelo :-(

Ciao,
Andrea Giammarchi

unknown
2006-08-17 20:17:50 UTC
Permalink
Post by unknown
no, non sbagli, devo fare un qualcosa di portabile, non basato su alcun
framework, per fare questo devo evitare di basarmi a mia volta su un fw.
Mi sfugge cosa intendi per portabile a questo punto.
Post by unknown
1 - se devo imparare ora qualcosa su Python per il web, tanto vale
scegliere il progetto sulla quale investirei (o meglio investono) di più
(progetto ufficiale di un webserver che punta molto su questo stesso)
mod_python è solo un progetto dei tanti, non c'è niente di ufficiale.
Post by unknown
2 - se devo creare una libreria portabile, tanto vale crearla su misura
per il modulo usato dal webserver più noto (per poi adattarla
eventualmente su altri fw, dove le cose sono parzialmente fatte)
Continuo a non capire cosa intendi per portabile
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 23:26:12 UTC
Permalink
Post by unknown
Mi sfugge cosa intendi per portabile a questo punto.
intendo usabile dal basso livello (mod_python) all'alto (fw)
Post by unknown
mod_python è solo un progetto dei tanti, non c'è niente di ufficiale.
come sotto progetto di Apache stessa ? ... ho letto solo di mod_python,
ce ne sono altri ?
unknown
2006-08-18 06:34:45 UTC
Permalink
Post by unknown
intendo usabile dal basso livello (mod_python) all'alto (fw)
Beh mod_python è solo basso livello, no?
Post by unknown
come sotto progetto di Apache stessa ? ... ho letto solo di mod_python,
ce ne sono altri ?
no parlavo di ufficiale nella comunità Python
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 01:39:14 UTC
Permalink
Post by unknown
mi sto inoltando solo ora verso mod_python su Apache 2.X e già mi
sorgono i primi dubbi.
A me mod_python non piace te lo dico subito :-)
Post by unknown
Qual'è secondo voi l'handler più semplice / immediato da gestire ?
- CGI lo escluderei per le performance ridotte
Ha poco senso direi si.
Post by unknown
- PSP è un embed stile JSP, PHP, o Rails e tutto sommato potrebbe essere
quello più semplice da gestire basando il tutto su sistemi di template
dinamico (poi è scritto in C quindi velocissimo)
Finiresti a fare monkey coding come in PHP
Post by unknown
- la configurazione a singolo file la vedo troppo castrante e credo sia
più per un Hello World o altro di molto specifico ...
Non so cosa sia ma dal nome direi aria :)
Post by unknown
- mod_python.publisher sembra quello migliore ma ho ancora dubbi sulla
semplicità di sviluppo / debug / manutenzione dovendo (?) basare tutto
su un unico file (ma magari fa l'import anche di altri files ... non saprei)
Non so, non conosco
Post by unknown
- Vampire, basato su mod_python.publisher, pare sia la versione più
semplice o funzionale dello stesso handler ..
mi pare sempre monkey coding a me :-(
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django :-)
Post by unknown
insomma, vorrei avere pareri o opinioni su un modo di sfruttare python
nel web piuttosto che un altro ... voi cosa avete scelto ?
Io non ho ancora scelto a dire il vero dato che ho fatto un annetto
senza fare roba Web. Ora sto usando Nevow per una roba ma mi parlano
tutti bene di Django e l'ho visto usare con profitto.
Post by unknown
Zope, ad esempio, è basato mod_python.publisher ?
Zope è tutto un altro mondo, ma direi che non fa per te
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 01:58:26 UTC
Permalink
Post by unknown
[...]
Post by unknown
insomma, vorrei avere pareri o opinioni su un modo di sfruttare python
nel web piuttosto che un altro ... voi cosa avete scelto ?
Io non ho ancora scelto a dire il vero dato che ho fatto un annetto
senza fare roba Web. Ora sto usando Nevow per una roba
Ma non avevi detto che ti mantenevi ben alla larga da Nevow? ;-)

Io comunque lo sto usando per un progetto abbastanza impegnativo che
richiede praticamente l'uso di tutto quello che è necessario per una
applicazione web.

Nevow mi sembra all'altezza, anche se ci sono alcuni punti (gestione
utenti autenticati, ad esempio) in cui sono indeciso sull'approccio da
seguire.

Ci sono davvero molti punti da affrontare e su nessuno c'è della buona
documentazione...

Magari quando ho tempo do una occhiata a Djando, giusto per rendermi
conto se sarei stato in grado di fare quello che sto facendo con Nevow.

Ho qualche dubbio, ma è anche vero che nel 90% dei casi avere soluzioni
preconfezionate è da preferire.
Anche se magari uno che usa spesso soluzioni più potenti ne diventa così
pratico da codificare comunque in poco tempo.


Saluti Manlio Perillo
unknown
2006-08-17 02:14:29 UTC
Permalink
Post by unknown
Ho qualche dubbio, ma è anche vero che nel 90% dei casi avere soluzioni
preconfezionate è da preferire.
Anche se magari uno che usa spesso soluzioni più potenti ne diventa così
pratico da codificare comunque in poco tempo.
sono d'accordo, però secondo me è bene anche sapere cosa ci sia dietro
queste soluzioni preconfezionate, se non altro per imparare qualcosa di
nuovo :-)

Ciao
unknown
2006-08-17 02:43:39 UTC
Permalink
Parlo di gestione database
(creazione indici particolari, tablespace - che con un ORM come quello
di django non credo sia possibile affrontare)
fortunatamente il mio piccolo ed umile progettino non necessita di
database e teoricamente potrà essere implementato anche in django :D
e caching non "banale".
mod_python fa caching di suo, non so quanto sia banale ma per cambiare
una pagina in errore oggi dovevo riavvirare il webserver, cancellare la
temporary ed altro ancora :E
(leggi non conosco assolutamente python nel web tantomeno mod_python)


Ciao,
Andrea Giammarchi
unknown
2006-08-17 02:49:35 UTC
Permalink
Post by unknown
Parlo di
e caching non "banale".
mod_python fa caching di suo,
Si, ma credo che usi solo i validatori (ETag e Last-Modified).
HTTP 1.1 ha Cache-Control che è una bella bestia.

Per questo preferisco le librerie minimali che si focalizzano su un ben
preciso layer di astrazione e che ti lascia le mani libere.

Non esiste che qualcuno debba farti credere di riuscire a fare qualcosa
senza capire quello che stai facendo (vedi Microsoft).
Post by unknown
non so quanto sia banale ma per cambiare
una pagina in errore oggi dovevo riavvirare il webserver, cancellare la
temporary ed altro ancora :E
(leggi non conosco assolutamente python nel web tantomeno mod_python)
Che intendi cambiare una pagina in errore?


Saluti Manlio Perillo
unknown
2006-08-17 03:23:52 UTC
Permalink
Post by unknown
Si, ma credo che usi solo i validatori (ETag e Last-Modified).
HTTP 1.1 ha Cache-Control che è una bella bestia.
mi sembra che la mia installazione di mod_python per py 2.4 su apache
2.0 sfrutti proprio HTML 1.1 ... e non so se per "bella bestia" intendi
a livello di buon caching o pessimo
Post by unknown
Per questo preferisco le librerie minimali che si focalizzano su un ben
preciso layer di astrazione e che ti lascia le mani libere.
è quello che sto tentando di creare :)
Post by unknown
Non esiste che qualcuno debba farti credere di riuscire a fare qualcosa
senza capire quello che stai facendo (vedi Microsoft).
ma io potrei capire tutto di django senza sapere niente di cosa django
stia facendo e questo non mi piace, magari a me serve 1/16 delle cose
che fa django per fare una libreria a parte e mi tocca "muovere tutto il
framework"
Post by unknown
Che intendi cambiare una pagina in errore?
intendo che con handler psp e mod_python come l'ho configurato io
(sicuramente malissimo, solo 4 righe) quando la pagina va in errore puoi
eliminare i pyc, i pyo, tutto quello che ti pare, togliere l'errore,
tanto Apache continua a mostrarti l'ultima versione in cache di quella
richiesta con quella pagina. Ma probabilmente sbaglio qualcosa io ....
ho porvato anche a usare la util.cache.Cache().clear() senza successo :E

unico modo è stato portarmi la classe nel file, senza importarla, per
riuscire ad avere un riscontro realtime delle mie alchimie pseudo
pythoniane :D

Ciao,
Andrea Giammarchi
unknown
2006-08-17 04:33:19 UTC
Permalink
Post by unknown
mi sembra che la mia installazione di mod_python per py 2.4 su apache
2.0 sfrutti proprio HTML 1.1 ... e non so se per "bella bestia" intendi
a livello di buon caching o pessimo
Sicuramente è una cosa positiva quella che intendeva Manlio. Leggi qui:
http://www.mnot.net/cache_docs/
Post by unknown
ma io potrei capire tutto di django senza sapere niente di cosa django
stia facendo e questo non mi piace, magari a me serve 1/16 delle cose
che fa django per fare una libreria a parte e mi tocca "muovere tutto il
framework"
Non è che hai un intero fw in memoria eh. Solo che mod_python è un
layer sopra Apache e non mi è mai piaciuto molto. Preferisco qualcosa
di minimale come CherryPy allora che è più Pythonico.
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 02:22:12 UTC
Permalink
Post by unknown
Ma non avevi detto che ti mantenevi ben alla larga da Nevow? ;-)
Beh è scritta in nevow, mica posso riscriverla :)
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 02:33:48 UTC
Permalink
Post by unknown
Post by unknown
Ma non avevi detto che ti mantenevi ben alla larga da Nevow? ;-)
Beh è scritta in nevow, mica posso riscriverla :)
Cosa è?



Saluti Manlio Perillo
unknown
2006-08-17 02:36:03 UTC
Permalink
Post by unknown
Post by unknown
Post by unknown
Ma non avevi detto che ti mantenevi ben alla larga da Nevow? ;-)
Beh è scritta in nevow, mica posso riscriverla :)
Cosa è?
Se te lo dicessi dovrei ucciderti ?

;-)
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-17 02:41:29 UTC
Permalink
Post by unknown
Post by unknown
Post by unknown
Post by unknown
Ma non avevi detto che ti mantenevi ben alla larga da Nevow? ;-)
Beh è scritta in nevow, mica posso riscriverla :)
Cosa è?
Se te lo dicessi dovrei ucciderti ?
;-)
Prima mi devi prendere ;-).

Comunque lo chiedevo perchè pensavo fosse un'applicativo Open Source che
stavi adattando, e dato che scritti in Nevow ce ne saranno non più di 5/6...



Saluti Manlio Perillo
unknown
2006-08-17 21:03:52 UTC
Permalink
Post by unknown
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django :-)
Io sto sperimentando turbogears con sqlalchemy e _totale_ introspezione
di un DB gia' esistente, piuttosto complesso (una cinquantina di tabelle
pesantemente relazionate) e sono piacevolmente basito dalla
flessibilita' di SA. Qualcuno l'ha anche usato con Django, ma non so come
Post by unknown
Post by unknown
insomma, vorrei avere pareri o opinioni su un modo di sfruttare python
nel web piuttosto che un altro ... voi cosa avete scelto ?
Io non ho ancora scelto a dire il vero dato che ho fatto un annetto
senza fare roba Web. Ora sto usando Nevow per una roba ma mi parlano
tutti bene di Django e l'ho visto usare con profitto.
Posto che sono tutti validi, dal punto di vista dell'impegno necessario
per "avere qualcosa subito", la scaletta e' Django -> TG -> Z3
(a meno che non si conoscano gia' SQLObject / SQLAlchemy / Kid /
FormEncode / MochiKit)
Post by unknown
Post by unknown
Zope, ad esempio, è basato mod_python.publisher ?
Zope è tutto un altro mondo, ma direi che non fa per te
Zope3 e' quattro spanne sopra tutti, da li' si vede un bel panorama...
ma per la maggior parte delle applicazioni e' "troppo".
unknown
2006-08-17 02:09:42 UTC
Permalink
Post by unknown
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django :-)
e due :D ... però django è un framework, non un handler... anche se
credo si basi su handler publisher (monkey code ? :??? )
Post by unknown
Veramente è fuori da un anno e passa :-)
Veramente è un anno e passa che non uso Python e una vita che non lo uso
sul web :P (mai usato per il web)
Post by unknown
Eh eh non so su quale parte di mod_python poggi Django ma può usare
anche FastCGI che mi sembra una soluzione migliore. Ma come mai stai
cercando per performance?
il progetto vorrebbe essere tra i più perfomanti, appena "lo
approveranno" per PHP ve lo mostrerò anche con anteprime per Python già
funzionanti, ora manca solo il webserver di mezzo
Post by unknown
Veramente io le trovo inutili, proprio perchè non mi piace la via del
PHP.
Credo che tutti, dal .NET al PHP passando per Ruby, Perl e Java, abbiano
una distinzione tra valori get e valori post.
Cosa non ti piace ? Sono valori ben distinti e ritrovarseli mischiati,
per quanto mi piaccia python, non serve a nessuno ... se voglio chiamare
?test=true ed input test="false" non si capisce perchè non debba poter
risalire al tipo esatto di invio richiesto :(
Post by unknown
Ogni framework fa a se e Python è diverso da PHP.
fin qui siamo tutti d'accordo :)
Post by unknown
Credo che tu
faccia meglio ad abituarti a Python e ai suoi modi di essere usato nei
vari fw piuttosto che modellare Python ad immagine e somiglianza di
PHP (altrimenti sarebbe più saggio usare semplicemente PHP)
a me piace creare librerie personali e non basarmi su frameworks altrui,
ne ho visti tanti in php e per tanti avrei avuto tante cose da ridire
per codice, ottimizzazioni o altro, idem per le librerie JS più
blasonate ... quindi solitamente preferisco conoscere la fonte dati del
framework, l'handler usato o il server (nel caso di Zope che è tutto a
parte server compreso). per poi eventualmente valutare cosa mi serve
sapere e cosa può non interessarmi tanto ci pensa il framework.

Per questo OOS però ho assoluta necessità di capire al dettaglio il
tramite delle informazioni (handler, distinzione dei metodi, altro)
altrimenti devo ritrovarmi costretto a dedurre che con python, nel web,
non sia possibile fare una cosa che stò già portando anche per C# e che
è già pronta per PHP :-)



Grazie comunque a tutti per i consigli ,
Andrea Giammarchi

------------------------------------------------------------------------

Oggetto:
Re: [Python] mod_python ed il giusto handler
Da:
Andrea Giammarchi <***@3site.it>
Data:
Wed, 16 Aug 2006 21:06:41 +0200
Post by unknown
Post by unknown
- ce ne sono altri ??? ... qual'è il più usato ?
Django :-)
e due :D ... però django è un framework, non un handler... anche se
credo si basi su handler publisher (monkey code ? :??? )
Post by unknown
Veramente è fuori da un anno e passa :-)
Veramente è un anno e passa che non uso Python e una vita che non lo uso
sul web :P (mai usato per il web)
Post by unknown
Eh eh non so su quale parte di mod_python poggi Django ma può usare
anche FastCGI che mi sembra una soluzione migliore. Ma come mai stai
cercando per performance?
il progetto vorrebbe essere tra i più perfomanti, appena "lo
approveranno" per PHP ve lo mostrerò anche con anteprime per Python già
funzionanti, ora manca solo il webserver di mezzo
Post by unknown
Veramente io le trovo inutili, proprio perchè non mi piace la via del
PHP.
Credo che tutti, dal .NET al PHP passando per Ruby, Perl e Java, abbiano
una distinzione tra valori get e valori post.
Cosa non ti piace ? Sono valori ben distinti e ritrovarseli mischiati,
per quanto mi piaccia python, non serve a nessuno ... se voglio chiamare
?test=true ed input test="false" non si capisce perchè non debba poter
risalire al tipo esatto di invio richiesto :(
Post by unknown
Ogni framework fa a se e Python è diverso da PHP.
fin qui siamo tutti d'accordo :)
Post by unknown
Credo che tu
faccia meglio ad abituarti a Python e ai suoi modi di essere usato nei
vari fw piuttosto che modellare Python ad immagine e somiglianza di
PHP (altrimenti sarebbe più saggio usare semplicemente PHP)
a me piace creare librerie personali e non basarmi su frameworks altrui,
ne ho visti tanti in php e per tanti avrei avuto tante cose da ridire
per codice, ottimizzazioni o altro, idem per le librerie JS più
blasonate ... quindi solitamente preferisco conoscere la fonte dati del
framework, l'handler usato o il server (nel caso di Zope che è tutto a
parte server compreso). per poi eventualmente valutare cosa mi serve
sapere e cosa può non interessarmi tanto ci pensa il framework.

Per questo OOS però ho assoluta necessità di capire al dettaglio il
tramite delle informazioni (handler, distinzione dei metodi, altro)
altrimenti devo ritrovarmi costretto a dedurre che con python, nel web,
non sia possibile fare una cosa che stò già portando anche per C# e che
è già pronta per PHP :-)



Grazie comunque a tutti per i consigli
unknown
2006-08-18 20:05:20 UTC
Permalink
Post by unknown
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`.
Post by unknown
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?
Post by unknown
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().
Post by unknown
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?
Post by unknown
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.
Post by unknown
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).
unknown
2006-08-19 00:09:21 UTC
Permalink
Post by unknown
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 ...
Post by unknown
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
Post by unknown
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 ?
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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 ...
Post by unknown
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
unknown
2006-08-19 00:26:16 UTC
Permalink
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 :-(
unknown
2006-08-19 01:23:32 UTC
Permalink
Post by unknown
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 :-)
Post by unknown
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)
Post by unknown
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.
Post by unknown
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
Post by unknown
_______________________________________________
Python mailing list
http://lists.python.it/mailman/listinfo/python
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-19 01:57:44 UTC
Permalink
Post by unknown
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"
Post by unknown
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
Post by unknown
Secondo me dovresti dare un'occhiata a Nevow Athena che fa proprio
quel che cerchi.
già visto, fa altro (di simile, ma troppo macchinoso)
Post by unknown
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_]+ ?
Post by unknown
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
unknown
2006-08-19 02:00:05 UTC
Permalink
Post by unknown
Post by unknown
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)
unknown
2006-08-19 02:13:44 UTC
Permalink
Post by unknown
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
unknown
2006-08-19 02:12:20 UTC
Permalink
Post by unknown
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 :-(
Post by unknown
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.
Post by unknown
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?
Post by unknown
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.
Post by unknown
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
unknown
2006-08-19 02:30:42 UTC
Permalink
Post by unknown
Post by unknown
... 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 ?
Post by unknown
Post by unknown
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 ?
Post by unknown
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
Post by unknown
Io ne ho prese di legnate sui denti
:-)
bene, allora quando finisce questa inizializzazione pitoniana ? lol

Andrea Giammarchi
unknown
2006-08-19 02:43:11 UTC
Permalink
Post by unknown
[...]
Post by unknown
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
unknown
2006-08-19 03:03:53 UTC
Permalink
Post by unknown
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?
Post by unknown
runtime .... ho una stringa
pippo = "Pippo"
come sapere se la classe Pippo è presente e già definita oppure no ?
Pippo li è una stringa
Post by unknown
class_exsists(pippo) ... esiste qualcosa del genere che restituisca un
True o un False ?
Esiste isclass() nel modulo inspect
Post by unknown
bene, allora quando finisce questa inizializzazione pitoniana ? lol
Per me può anche finire ora.
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-19 03:09:16 UTC
Permalink
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.
unknown
2006-08-19 03:56:08 UTC
Permalink
Post by unknown
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__.
Post by unknown
Cmq eccezionale questa cosa, la ignoravo completamente, grazie.
Python è un linguaggio dinamico, sul serio.


Saluti Manlio Perillo
unknown
2006-08-19 01:14:48 UTC
Permalink
Post by unknown
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
Post by unknown
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
Post by unknown
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
Post by unknown
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 :-)
Post by unknown
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?
Post by unknown
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
Post by unknown
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
unknown
2006-08-19 00:33:00 UTC
Permalink
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.
Post by unknown
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 gia` in python.
non ho approfondito ma pare pseudo compilino e mettano in cache e siano più
veloci di almeno un 20% rispetto le precedenti.
E le precedenti sono?
La facilità di un eval non mi interessa affatto quando il problema dei siti
è sempre il server e raramente i calcoli sul client.
Questo lo dici tu pero`. Il mio browser con gmail la pensa diversamente quando apre un popup dicendomi che lo script e` non responsivo.
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 ...
Sforzo inutile.
Parlavo di UTF-8, errore mio.
A giudicare da quello che hai scritto sopra direi che il problema e` piu` che un errore semplice.
unknown
2006-08-19 01:33:31 UTC
Permalink
Post by unknown
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
Post by unknown
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
Post by unknown
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.
Post by unknown
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 ?
Post by unknown
Castrare? Bisognerebbe conoscerlo python prima di avanzare ipotesi :).
...
Post by unknown
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 {}
Post by unknown
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 ?
Post by unknown
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 ...
Post by unknown
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 ...
Post by unknown
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
Post by unknown
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
Post by unknown
Decisamente non sai cosa siano gli encoding...
... decisamente non ci capiamo ...
Post by unknown
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

def __slen(self, s):
charcode = 0
result = 0
slen = len(s)
if self.UTF8:
while slen:
slen = slen - 1
try:
charcode = ord(s[slen])
except:
charcode = 65536
if charcode < 128:
result = result + 1
elif charcode < 2048:
result = result + 2
elif charcode < 65536:
result = result + 3
else:
result = result + 4
else:
result = slen
return result

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

L'assurdo non è la stringa in byte , l'assurdo è che non c'è modo di non
avere la stringa in bytes.

cmq noi piaccapari ignoranti e biasimati parliamo di questa
"caratteristica assurda" da talmente tanto tempo che in PHP6 da mesi si
parla di colmare le problematiche con UTF-8 ... ed infatti hanno messo
nativamente UTF-16 (LOL)
Post by unknown
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.
... in php unicode praticamente non esiste, ci stanno ancora lavorando
... cmq ho scritto che mi ero sbagliato, so che sono differenti anche se
non so bene quanto non essendomi mai posto il problema
Post by unknown
Ma stiamo usando python per cui mi sfugge il nesso.
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.
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 ...
Post by unknown
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?
Che ne dici di evitare di valutare ancora prima di conoscere ?
Post by unknown
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 gia` in python.
si, non è compatibile con le stringhe UTF-8 , invia liste, tuple e dict
e ritorna sempre e solo dict, non invia ne riceve Classi.
Che ne dici di dare una guardata alla mia di classe ? Che riceve anche
liste, gestisce utf-8 e classi ?
Tra l'altro il tizio della serialize "che esiste già" mi ha già fatto i
complimenti ed ha detto che quanto prima avrebbe aggiornato il suo sito
per segnalare la variante.
Il tizio non ha fatto una versione per PyRex ... ma questa che razza di
ml python è ? Open Source, Closed Eyes, Every Other Out of Here ?
Post by unknown
E le precedenti sono?
guardati il manuale
Post by unknown
Questo lo dici tu pero`. Il mio browser con gmail la pensa
diversamente quando apre un popup dicendomi che lo script e` non
responsivo.
va bene, stravolgiamo le convinzioni mondiali sull'utilità del delegare
parte dei calcoli al client in ambito web perchè Gmail su un K6 non gira
bene (ma poi Gmail ha una miriade di codice, la lib invece pesa 15 Kb
con 3 classi incluse di cui 2 riutilizzabili, JSL e PHP_Serializer ...
ah no, tutto inutile ...).
Post by unknown
Sforzo inutile.
Per quale motivo sarebbe uno sforzo inutile ??? ... ammesso che a te non
importi niente di questa versione, perchè io dovrei farne a meno ?
Post by unknown
A giudicare da quello che hai scritto sopra direi che il problema e`
piu` che un errore semplice.
Si, come dici tu
unknown
2006-08-19 02:02:55 UTC
Permalink
Post by unknown
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?
Post by unknown
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
Post by unknown
Post by unknown
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.
Post by unknown
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
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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?
Post by unknown
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?
Post by unknown
Post by unknown
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
Post by unknown
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.
Post by unknown
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?
Post by unknown
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
Post by unknown
si, non è compatibile con le stringhe UTF-8 , invia liste, tuple e dict
e ritorna sempre e solo dict, non invia ne riceve Classi.
Cavoli, i dict SONO classi, almeno in Python. Ma anche in JS
Post by unknown
Tra l'altro il tizio della serialize "che esiste già" mi ha già fatto i
complimenti ed ha detto che quanto prima avrebbe aggiornato il suo sito
per segnalare la variante.
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?
--
Lawrence
http://www.oluyede.org/blog
unknown
2006-08-19 02:24:38 UTC
Permalink
Post by unknown
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
Post by unknown
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)
Post by unknown
A te interessa solamente spostare informazioni dal pc X al pc Y. Passi
"dati", poi cosa ne fai è affar tuo
buon giorno ajax
Post by unknown
Mi sa che non hai approfondito molto Python prima di imbarcarti in
questo progetto perchè è scritto pure nel tutorial che i dizionari
sono oggetti.
Ma quanta roba devi passare da un server a un client, si può sapere?
Tutta quella che mi pare
Post by unknown
Sembra che tu stia gestendo una foresta di dati supercomplessi di
megabyte di stato.
no, ma se fosse ?
Post by unknown
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ì ?
Post by unknown
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.
Post by unknown
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: )
Post by unknown
Semplicemente perchè PHP ha un pessimo supporto per ciò che non è ASCII
appunto
Post by unknown
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.
Post by unknown
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/
Post by unknown
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
Post by unknown
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 ....
Post by unknown
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 ?
unknown
2006-08-19 02:42:55 UTC
Permalink
Post by unknown
Post by unknown
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
Post by unknown
Post by unknown
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.
... def __init__(self):
... self.x = 3
...
Post by unknown
Post by unknown
f = Foo()
print f.__dict__
{'x': 3}

Ora mi credi?
Post by unknown
buon giorno ajax
E quindi? JSON è li apposta.
Post by unknown
Post by unknown
Mi sa che non hai approfondito molto Python prima di imbarcarti in
questo progetto perchè è scritto pure nel tutorial che i dizionari
sono oggetti.
Beh dato che ti ostini a dire che i dizionari non sono oggetti ho
anche paura di avere ragione :-)
Post by unknown
Post by unknown
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
Post by unknown
Post by unknown
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.
Post by unknown
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ì ?
Post by unknown
print f.__dict__
{'x': 3}
Post by unknown
Post by unknown
f.__dict__.update(dict(x=4))
print f.__dict__
{'x': 4}
Post by unknown
Post by unknown
f.__dict__ = dict(y=8).copy()
print f.__dict__
{'y': 8}
Post by unknown
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.
Post by unknown
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
:-))
Post by unknown
Ora ho rivisto la lib in PHP che è già usata da diversi sviluppatori PHP.
Il che non mi tranquillizza di certo :-)
Post by unknown
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
Post by unknown
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
Post by unknown
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.
Post by unknown
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
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.
Post by unknown
Post by unknown
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 :-)
Post by unknown
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()
Post by unknown
le list sono classi ? i dict sono classi ? ... Python è tutto fatto di
classi ? ... si, lo sanno tutti ....
?? Stai parlando a te stesso ora?
Post by unknown
Post by unknown
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
unknown
2006-08-19 03:41:07 UTC
Permalink
Post by unknown
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
Post by unknown
Vabbè a sto punto non ha nemmeno senso discutere
non era uno scherzo, intendevo dire che non voglio porre limiti potenziali
Post by unknown
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)
... mi mostri dict, dov'è il nome della classe o la sua istanza ?
Post by unknown
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ù
Post by unknown
Il che non mi tranquillizza di certo :-)
...
Post by unknown
Volendo c'è ma sono in pochi a saperlo. Più che dentro C# è dentro .NET
ho parlato di C#, non di JScript.NET :-)
Post by unknown
Aspetto di vederla allora.
no, no ... nd' vai, sta qui che mi servono altre dritte per
l'introspezione delle classi :D
Post by unknown
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"
Post by unknown
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 ?
Post by unknown
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);
unknown
2006-08-19 05:04:33 UTC
Permalink
Post by unknown
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?
Post by unknown
non era uno scherzo, intendevo dire che non voglio porre limiti potenziali
Vedremo
Post by unknown
Post by unknown
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
Post by unknown
... 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"...
Post by unknown
Post by unknown
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#
Post by unknown
Post by unknown
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.
Post by unknown
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.
Post by unknown
Post by unknown
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.
Post by unknown
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
unknown
2006-08-19 05:37:17 UTC
Permalink
Post by unknown
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.
Post by unknown
Vedremo
Speriamo
Post by unknown
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)
Post by unknown
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
Post by unknown
Puoi usarlo anche da C#
un eval in C# ? ... e dire che avevo cercato tantissimo... preferisco
aver risolto in altro modo (cmq link ? :D)
Post by unknown
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 ...)
Post by unknown
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 ?
unknown
2006-08-19 05:51:30 UTC
Permalink
Post by unknown
Post by unknown
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.
Post by unknown
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?
Post by unknown
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 :-)
Post by unknown
Post by unknown
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
Post by unknown
è 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.
Post by unknown
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
unknown
2006-08-19 00:42:06 UTC
Permalink
Post by unknown
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.
unknown
2006-08-19 01:48:45 UTC
Permalink
Post by unknown
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 ?
unknown
2006-08-19 02:28:45 UTC
Permalink
Post by unknown
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
Post by unknown
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(user, user+' left');
},
function info_quit(self, user, msg) {
append_message(user, 'quit: '+msg);
var userlist = MochiKit.DOM.getElement('usersList');
MochiKit.Iter.forEach(userlist.children, function (item) {
if (item.innerHTML == user) {
MochiKit.DOM.removeElement(item);
}
});
}
);

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.
ma non puoi usare un metodo, come se fose istanza di classe ...
Il metodo lo devi scrivere comunque in javascript quindi questo non c'entra
niente.
e chi lavora il doppio ? lavoro per la lib, finita quella basta ... la lib è
finita, mancano dettagli ...
Lavori il doppio perche` il tuo modello e` enormemente piu` complesso da gestire.
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
Vedi sopra. Ma te lo ripeto perche` ti e` difficile capirlo evidentemente:
non puoi inviare metodi con la serializzazione ma solo lo stato quindi i metodi
devi comunque scriverli per cui non mischiare troppi argomenti.
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.
Come? E questo cosa ha a che fare col polimorfismo?
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)
Cosa c'entra? Non puoi trasportare i metodi. Devi scriverli i metodi.
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à ...
Permettimi ma non posso che dissentire, di semplice il modello non ha nulla.
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
E` tremendo. Quindi io posso accedere a tutti gli oggetti che voglio lato
client facendo quello che desidero attraverso quegli oggetti? Che poi e` molto
poi semplice fare una cosa tipo:

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

oppure

function progress(perc) {alert(perc)}

lasciando al server il compito di chiamare perc quando necessario senza scomodare
il client.
Post by unknown
Decisamente non sai cosa siano gli encoding...
... decisamente non ci capiamo ...
Post by unknown
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
charcode = 0
result = 0
slen = len(s)
slen = slen - 1
charcode = ord(s[slen])
charcode = 65536
result = result + 1
result = result + 2
result = result + 3
result = result + 4
result = slen
return result
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.
Post by unknown
[ord(x) for x in "?߯ßð¯ßð¯ß?ø,-??©??®þžŽ®þ®¶?¥,ø???-?"]
[203, 128, 195, 159, 194, 175, 195, 159, 195, 176, 194, 175, 195, 159, \
195, 176, 194, 175, 195, 159, 202, 188, 195, 184, 44, 45, 226, 137, 164, \
203, 155, 194, 169, 203, 141, 203, 135, 194, 174, 195, 190, 194, 184, 194, \
180, 194, 174, 195, 190, 194, 174, 194, 182, 202, 188, 194, 165, 44, 195, \
184, 202, 188, 226, 128, 166, 203, 157, 45, 203, 154]
Post by unknown
len("?߯ßð¯ßð¯ß?ø,-??©??®þžŽ®þ®¶?¥,ø???-?")
70
Post by unknown
len(u"ß")
1
Post by unknown
ord(u"ß")
223
Post by unknown
ord("ß")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: ord() expected a character, but string of length 2 found
Post by unknown
ord("ß"[0])
195
Post by unknown
ord("ß"[1])
159
Post by unknown
ord(u"?")
733
Post by unknown
len("?")
2
Post by unknown
ord("?"[0])
203
Post by unknown
ord("?"[1])
157
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.
L'assurdo non è la stringa in byte , l'assurdo è che non c'è modo di non
avere la stringa in bytes.
Assolutamente sbagliato e questo perche` non conosci gli encoding.
Post by unknown
len(unicode("?߯ßð¯ßð¯ß?ø,-??©??®þžŽ®þ®¶?¥,ø???-?", "utf-8"))
36
Post by unknown
len("?߯ßð¯ßð¯ß?ø,-??©??®þžŽ®þ®¶?¥,ø???-?")
70
cmq noi piaccapari ignoranti e biasimati parliamo di questa "caratteristica
assurda" da talmente tanto tempo che in PHP6 da mesi si parla di colmare le
problematiche con UTF-8 ... ed infatti hanno messo nativamente UTF-16 (LOL)
Ma il problema non lo risolverete ancora :).
cmq ho scritto che mi ero sbagliato, so che sono differenti anche se non so
bene quanto non essendomi mai posto il problema
Ora pero` sei obbligato a portelo perche` in python questo problema non e`
nascosto goffamente dal linguaggio ma ti viene sbattuto in faccia facilmente.
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.
Ma esiste gia` JSON, chissenefrega di una libreria usata in php perhe` in php
JSON e` lento come la fame?
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 ...
Esiste gia` JSON, negli altri linguaggi dubito verrai accolto molto differentemente.

Se vuoi scrivere la tua libreria in python perche` serve al tuo progetto nessuno
te lo impedisce ma e` difficile trovarne l'utilita` quando c'e` gia` JSON che
funziona ed e` _gia`_ implementato in tanti linguaggi e la tua libreria non
porta vantaggi di alcun genere per questo scopo.
Post by unknown
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?
Che ne dici di evitare di valutare ancora prima di conoscere ?
PHP lo conosco abbastanza da evitarlo direi e le ultime cose che mi hai detto su
JSON non fanno altro che confermare le mie conoscenze su PHP :).
Per quanto riguarda te non mi sono mai permesso di esprimere valutazioni sulla
tua intelligenza o professionalita`.
si, non è compatibile con le stringhe UTF-8 , invia liste, tuple e dict e
ritorna sempre e solo dict, non invia ne riceve Classi.
Perche` non si possono ne` inviare ne` ricevere classi ma solo il loro stato il
che significa inviare un dict (che se proprio uno vuole farsi del male
e` self.__dict__).
Che ne dici di dare una guardata alla mia di classe ? Che riceve anche
liste, gestisce utf-8 e classi ?
Non mi spiacerebbe ma l'ultima volta che l'ho fatto il risultato e` stato
disastroso per cui prima mi firmi un documento che ti impedira` di farmi causa
se la mia reazione sara` vigorosa, poi guardo il tuo sorgente.
Tra l'altro il tizio della serialize "che esiste già" mi ha già fatto i
complimenti ed ha detto che quanto prima avrebbe aggiornato il suo sito per
segnalare la variante.
E chi e` il tizio?
Il tizio non ha fatto una versione per PyRex ... ma questa che razza di ml
python è ? Open Source, Closed Eyes, Every Other Out of Here ?
Si. Pero` a me piace questo modo di comprendere l'open source dove non esiste
discussione, se io ho un'idea e` giusta per forza perche` e` un'altra idea, non
c'e` la possibilita` che sia sbagliata o che meriti una discussione in cui
l'autore si trova a difendere le sue scelte progettuali. Semplicemente va
accettata e ci si riempie tutti di pacche sulle spalle perche` siamo stati
bravi a creare l'ennesima variante di una libreria che esiste gia`.
va bene, stravolgiamo le convinzioni mondiali sull'utilità del delegare
parte dei calcoli al client in ambito web perchè Gmail su un K6 non gira
bene (ma poi Gmail ha una miriade di codice, la lib invece pesa 15 Kb con 3
classi incluse di cui 2 riutilizzabili, JSL e PHP_Serializer ... ah no,
tutto inutile ...).
A me spiace che una discussione in cui non ho alzato i toni e sto cercando di
capire e consigliare i motivi delle tue scelte sta diventando per te una questione
personale.
Per quale motivo sarebbe uno sforzo inutile ??? ... ammesso che a te non
importi niente di questa versione, perchè io dovrei farne a meno ?
Ma tu puoi scriverla come ti pare, te lo sto impedendo in qualche modo? Magari
ti sfugge che stiamo discutendo di una tua libreria e riguardo alle tue scelte
di inventare un nuovo formato di serializzazione che non aggiunge nulla a
JSON (non e` piu` semplice da parsare, non e` piu` veloce in Python se sia
il tuo che l'altro li si implementa in Pyrex [ma se nessuno ha implementato
json in C/pyrex/boost/altro significa che non e` un problema per nessuno]).
Nasconde semplicemente il procedimento di serializzazione di oggetti arbitrari
che non va nascosto per varie ragioni che spieghero` solo se avrai voglia
di discutere invece che prenderla sul personale.
Post by unknown
A giudicare da quello che hai scritto sopra direi che il problema e` piu`
che un errore semplice.
Si, come dici tu
Gli encoding hai ammesso di non conoscerli perche` con php non ti sei mai posto
il problema... Ora fai l'ironico a riguardo?
unknown
2006-08-19 03:06:14 UTC
Permalink
Post by unknown
E questo come e` possibile? Puoi inviare solo ascii?
utf8_encode ... utf8_decode
Post by unknown
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
Post by unknown
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)
Post by unknown
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
Post by unknown
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 ...
Post by unknown
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
Post by unknown
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
Post by unknown
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.
Post by unknown
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
Post by unknown
Come? E questo cosa ha a che fare col polimorfismo?
il polimorfismo non c'entrava niente , la frase era senza senso e commentata
Post by unknown
Cosa c'entra? Non puoi trasportare i metodi. Devi scriverli i metodi.
bene
Post by unknown
Permettimi ma non posso che dissentire, di semplice il modello non ha nulla.
modello di cosa ?
Post by unknown
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
Post by unknown
Che poi e` molto
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 ?
Post by unknown
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)
Post by unknown
lasciando al server il compito di chiamare perc quando necessario senza scomodare
il client.
ah certo, tu scomodi il server ...
Post by unknown
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 ...
Post by unknown
Post by unknown
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
Post by unknown
Assolutamente sbagliato e questo perche` non conosci gli encoding.
bravo
Post by unknown
Ma il problema non lo risolverete ancora :).
lo so bene, lo sanno tutti, il background del php è sempre più incazzato
Post by unknown
Ora pero` sei obbligato a portelo perche` in python questo problema non e`
nascosto goffamente dal linguaggio ma ti viene sbattuto in faccia facilmente.
bene, quindi il web lavora tutto su u ? devo informarmi a riguardo
Post by unknown
Ma esiste gia` JSON, chissenefrega di una libreria usata in php perhe` in php
JSON e` lento come la fame?
non condivido
Post by unknown
Esiste gia` JSON, negli altri linguaggi dubito verrai accolto molto
differentemente
...
Post by unknown
Se vuoi scrivere la tua libreria in python perche` serve al tuo progetto nessuno
te lo impedisce ma e` difficile trovarne l'utilita` quando c'e` gia` JSON che
funziona ed e` _gia`_ implementato in tanti linguaggi e la tua
libreria non
porta vantaggi di alcun genere per questo scopo.
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
Post by unknown
Non mi spiacerebbe ma l'ultima volta che l'ho fatto il risultato e` stato
disastroso per cui prima mi firmi un documento che ti impedira` di farmi causa
se la mia reazione sara` vigorosa, poi guardo il tuo sorgente.
ok
Post by unknown
E chi e` il tizio?
quello che se su google scrivi python php serialize è tra i primi col
suo package che è tra i più noti (l'unico ? io ho visto solo quello ...)
Post by unknown
Si. Pero` a me piace questo modo di comprendere l'open source dove non esiste
discussione, se io ho un'idea e` giusta per forza perche` e` un'altra idea, non
c'e` la possibilita` che sia sbagliata o che meriti una discussione in cui
l'autore si trova a difendere le sue scelte progettuali. Semplicemente va
accettata e ci si riempie tutti di pacche sulle spalle perche` siamo stati
bravi a creare l'ennesima variante di una libreria che esiste gia`.
io non voglio alcuna pacca, a me quella versione non andava bene per
mancanze per me irritanti, riscritta, messo tra i credits, fine, pacce
di cosa che c'ho già messo un cratere ?
piuttosto parlatemi di come risolvere il cratere, grazie
Post by unknown
Ma tu puoi scriverla come ti pare, te lo sto impedendo in qualche modo? Magari
ti sfugge che stiamo discutendo di una tua libreria e riguardo alle tue scelte
di inventare un nuovo formato di serializzazione che non aggiunge nulla a
JSON
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 ...
Post by unknown
(non e` piu` semplice da parsare, non e` piu` veloce in Python se sia
il tuo che l'altro li si implementa in Pyrex [ma se nessuno ha
implementato
json in C/pyrex/boost/altro significa che non e` un problema per nessuno]).
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 ...
Post by unknown
Nasconde semplicemente il procedimento di serializzazione di oggetti arbitrari
che non va nascosto per varie ragioni che spieghero` solo se avrai voglia
di discutere invece che prenderla sul personale.
parliamone
Post by unknown
Gli encoding hai ammesso di non conoscerli perche` con php non ti sei mai posto
il problema... Ora fai l'ironico a riguardo?
e che mi devo mettere a piangere ?
unknown
2006-08-19 03:27:18 UTC
Permalink
Post by unknown
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?
Post by unknown
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
Post by unknown
Post by unknown
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.
Post by unknown
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?
Post by unknown
scrivi una classe (funzione) fine, non devi poi rifare niente, ti
ritrovi l'istanza malipolabile, inviabile, etc etc
fammi vedere un esempio :-)
Post by unknown
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?
Post by unknown
Post by unknown
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?
Post by unknown
bene, quindi il web lavora tutto su u ? devo informarmi a riguardo
Tutto su che?
Post by unknown
Post by unknown
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?
Post by unknown
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
Post by unknown
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?
Post by unknown
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
unknown
2006-08-19 04:06:37 UTC
Permalink
Post by unknown
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
Post by unknown
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.
Post by unknown
E' troppo perchè sono varie funzioni.
appunto, io vorrei avere tutto disponibile subito
Post by unknown
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
Post by unknown
Interazione avanzate in AJAX?
si, se AHAH è l' abc , con altre lib puoi fare interazioni più
complesse, quindi più avanzate
Post by unknown
Post by unknown
Post by unknown
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
Post by unknown
Tutto su che?
u ... unicode
Post by unknown
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.
Post by unknown
Non è un partito preso, è un non reinventare la ruota
infatti non l'ho reinventata, l'ho solo aggiustata (male, datemi tempo)
Post by unknown
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 range(0, len(vars["arguments"])):

result["info"].append({"type":self.parseType(vars["arguments"][key]),"required":self.isRequired(vars["arguments"][key])})
elif type(vars["arguments"]) is types.DictType:
for key in vars["arguments"]:

result["info"].append({"type":self.parseType(vars["arguments"][key]),"required":self.isRequired(vars["arguments"][key])})
if result["info"][i]["required"]:
result["required"] = result["required"] + 1
i = i + 1
return result

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

def isRequired(self, value):
result = False
if value.has_key("required"):
result = value["required"]
return result

def goodRequestVariable(self, settings, i, post, hasinfo):
if self.next:
self.next = len(post) > 0
if self.next and hasinfo and settings["info"].has_key(i):
if post[0] != settings["info"][i]["type"] and
settings["info"][i]["type"] != "u":
if self.dodebug:
self.debug.append("Variable #" + str(i + 1) + ' of
type ' + self.types[settings["info"][i]["type"]] + " is not defined or
is not correct: " + post)
self.next = False
return self.next

def callClassMethod(self, className, method, _POST):
i = 0
istring = "_0"
hasinfo = False
args = settings = methodInfo = []
vars = {}
tmpclass = self.getClass(className)
if(tmpclass != None):
if in_list(method,
self.getMethods(tmpclass.__class__.__dict__)):
vars = self.getMethodInformations(tmpclass, method)
if vars["required"] == 0 or _POST.has_key("_" +
str((vars["required"] - 1))):
while _POST.has_key(istring) and
self.goodRequestVariable(vars, i, _POST, hasinfo):
if self.dodebug:
methodInfo.append("args[" + str(i) + "] = "
+ _POST[istring])
args.append(self.unserialize(_POST[istring]))
i = i + 1
istring = "_" + str(i)
if self.next:
settings = []
i = len(args)
for i in range(0, len(args)):
settings.append("args[" + str(i) + "]")
method = method + "(" + ",".join(settings) + ")"
exec "istring=self.php.serialize(tmpclass." +
method + ")"
if self.dodebug:
method = method + "<br />" + "<br
/>".join(methodInfo)
elif self.dodebug:
self.debug.append("ACE has killed itsself, bye
bye.")
elif self.dodebug:
while _POST.get("_" + i, None) != None:
i = i + 1
self.debug.append(method + " method requires at
least " + vars["required"] + " params and not " + i)
elif self.dodebug:
self.debug.append("Choosed method is not availbale: " +
method)
elif self.dodebug:
self.debug.append("Choosed Class or method is not valid: " +
className + "." + method)
if not self.next:
istring = ""
return istring

def exportClass(self, className):
result = settings = []
tmpclass = self.getClass(className)
if tmpclass != None:
settings = self.getMethods(tmpclass.__class__.__dict__)
for i in range(0, len(settings)):
result.append(settings[i])
elif self.dodebug:
self.debug.append("Class " + className + " is not valid")
return result

def getClass(self, className):
classExists = None
try:
exec "import " + className
classExists = eval(className + "." + className + "()")
except:
classExists = None
return classExists

def unserialize(self, post):
result = None
try:
result = self.php.unserialize(post)
except:
if self.dodebug:
self.debug.append("Unserialize Exception [utf8: " +
str(self.utf8) + "] with this var: " + pos)
self.next = False
return result;


ace = ACE(HAND_RULES)
_POST = {"_0":"s:4:\"ace!\";"}
print ace.exportClass("MyClass")
ace.callClassMethod("MyClass", "hello", _POST)




MyClass.py
class MyClass:

methodTable = {
"hello":{"access":"remote",
"arguments":[{
"type":"string",
"required":True
}]}
}

def hello(self, str):
print str



Devo ancora lavorarci sopra ... anche e soprattutto per l'import
dinamico (ogni consiglio è bene accetto)
unknown
2006-08-19 05:23:49 UTC
Permalink
Post by unknown
Post by unknown
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.
Post by unknown
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.
Post by unknown
Post by unknown
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
Post by unknown
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.
Post by unknown
Post by unknown
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?
Post by unknown
Post by unknown
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
Post by unknown
e nel frattempo hai anche un'istanza di classe da gestire come vuoi
Cosa fondamentale. Scusa sto diventando sarcastico.
Post by unknown
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?
Post by unknown
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.
Post by unknown
Post by unknown
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
Post by unknown
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
unknown
2006-08-19 06:04:52 UTC
Permalink
Post by unknown
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
Post by unknown
getMethods() è piena di bad practices. Non usare has_key ma usa in
semplicemente.
k
Post by unknown
Poi basta isinstance() senza scomodare il modulo types
per vedere se qualcosa è di un certo tipo.
http://www.canonical.org/~kragen/isinstance/
Post by unknown
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
Post by unknown
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
<script src="ACE.psp?class=MyClass"></script>
<script>
var mc = new MyClass();
onload = function(){
document.getElementById("tasto").onclick = function() {
mc.sayHello.result = function(s){alert(s)}
mc.sayHello.call("Ciao");
}
}
</script>
la POST per iniviare le variabili serializzate, la classe ACE per JS è
su devpro
Post by unknown
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
Post by unknown
Ok allora lasciami dire che a me pare una scelta sbagliata.
a me non troppo essendo piaccaparo :D
Post by unknown
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
Post by unknown
- procedurale = chiamo una procedura. *ESATTAMENTE* la stessa cosa che
stai facendo tu.
attraverso un oggetto
Post by unknown
- il tuo approccio è bloccante
eh ? ... e che asincrono sarebbe ?
Post by unknown
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
Post by unknown
Cosa fondamentale. Scusa sto diventando sarcastico.
k
Post by unknown
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
Post by unknown
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
Post by unknown
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
Post by unknown
import dinamico? Ossignore :-)
si si si ... lo faccio in C# è complicato in Python ? o_O
Post by unknown
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 ?
unknown
2006-08-19 06:37:18 UTC
Permalink
Post by unknown
Post by unknown
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.
Post by unknown
Post by unknown
Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile.
???
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 = ""
vtype = value["type"].lower()
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
Post by unknown
Post by unknown
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?
Post by unknown
Post by unknown
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?
Post by unknown
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
Post by unknown
Post by unknown
- 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() ?
Post by unknown
Post by unknown
- il tuo approccio è bloccante
eh ? ... e che asincrono sarebbe ?
mi sfugge dove finiscono i dati di sayHello.call() allora.
Post by unknown
Post by unknown
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ò
Post by unknown
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
Post by unknown
Post by unknown
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ò
Post by unknown
Post by unknown
import dinamico? Ossignore :-)
si si si ... lo faccio in C# è complicato in Python ? o_O
Non è complicato, è una riga.
Post by unknown
Post by unknown
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
unknown
2006-08-19 15:10:30 UTC
Permalink
Post by unknown
[...]
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?
Non so come funzionano le estensioni in PHP, ma se un host ti da
mod_python e un account FTP probabilmente puoi mettere sul server i
moduli che vuoi, impostando il PYTHONPATH con una istruzione di mod_python.


Questa è una cosa che mi interessa: qualcuno lo ha mai fatto?




Saluti Manlio Perillo
unknown
2006-08-19 02:50:37 UTC
Permalink
Post by unknown
e cosa potrà mai accadere per una cosa tipo questa ?
exec "class " + nome + ": pass"
l'unica linea di codice tolta dalla verisone PyRex ?
foo("Pifferazzo(__import__('os').listdir('.'))")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in foo
File "<string>", 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.
Post by unknown
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.
... ciao = 3
...
Post by unknown
Foo.ciao
3
Post by unknown
exec "class Foo(object): pass"
Foo.ciao
Traceback (most recent call last):
File "<stdin>", 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().
unknown
2006-08-19 03:19:42 UTC
Permalink
Post by unknown
exec "class Foo(object): pass"
Foo.ciao
File "<stdin>", 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
unknown
2006-08-19 04:07:28 UTC
Permalink
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.
Post by unknown
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?
Post by unknown
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.
Post by unknown
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.
Post by unknown
Che poi e` molto
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.
Post by unknown
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?
Post by unknown
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.
Post by unknown
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 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?
bene, quindi il web lavora tutto su u ? devo informarmi a riguardo
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. (sia esso python, java, C#, PHP, perl, ruby, brainfuck, d, c, C++, haskell, smalltalk, common lisp, scheme, erlang, boo, vb.net e chi piu` ne ha piu` ne metta).
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
Ma cosa c'e` di difficile nel rispondere a un quesito che riguarda i vantaggi della tua soluzione? Posto che 'e` piu` OO' non e` vero.
quello che se su google scrivi python php serialize è tra i primi col suo
package che è tra i più noti (l'unico ? io ho visto solo quello ...)
E` indubbio che non l'ho mai sentito nominare :).
I suoi utilizzatori pero` stanno utilizzando questa implementazione della serialize per migrare via da PHP (e poi la abbandoneranno visto che non la usano per comunicare con il browser client). Tra l'altro l'ultimo delle success stories stara` probabilmente migrando al mio framework.
io non voglio alcuna pacca, a me quella versione non andava bene per
mancanze per me irritanti, riscritta, messo tra i credits, fine, pacce di
cosa che c'ho già messo un cratere ?
Pacche non ne vuoi, critiche neanche. Quindi siamo un servizio di assistenza gratuito e basta.
piuttosto parlatemi di come risolvere il cratere, grazie
Appunto.
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 ...
Non hai capito quello che ho scritto... Ma qui davvero non e` un problema, non cambia poi molto.
Post by unknown
Nasconde semplicemente il procedimento di serializzazione di oggetti
arbitrari
che non va nascosto per varie ragioni che spieghero` solo se avrai voglia
di discutere invece che prenderla sul personale.
parliamone
No perche` da quanto ho visto sopra la lista non e` degna di muovere critiche al tuo progetto perche` sono fatti tuoi. noi dobbiamo aiutarti a risolvere il tuo problema, non discuterne. E se vuoi una consulenza da me devi pagare per averla, come fanno i miei clienti.

Il problema principale e` il poco controllo che lasci al tuo utilizzatore e questo e` male.
Post by unknown
Gli encoding hai ammesso di non conoscerli perche` con php non ti sei mai
posto
il problema... Ora fai l'ironico a riguardo?
e che mi devo mettere a piangere ?
Il bel tacer non fu mai scritto.
unknown
2006-08-19 04:45:39 UTC
Permalink
Post by unknown
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 ? ...
Post by unknown
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.
Post by unknown
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
Post by unknown
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 ?
Post by unknown
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
Post by unknown
Non so cosa sia un'interazione avanzata.
una più complessa di un'interazione base
Post by unknown
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
Post by unknown
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
Post by unknown
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
Post by unknown
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 ?
Post by unknown
Io uso quello che ora chiamano ajax e quello che ora chiamano COMET da
2 anni prima che diventassero famosi con quei nomi.
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"
Post by unknown
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
Post by unknown
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 ?
Post by unknown
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.
Post by unknown
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 ?
Post by unknown
Ma cosa c'e` di difficile nel rispondere a un quesito che riguarda i
vantaggi della tua soluzione? Posto che 'e` piu` OO' non e` vero.
per me è più OO (Orientato agli Oggetti e non procedurale, sia client
che server), quindi replico con la mia idea
Post by unknown
E` indubbio che non l'ho mai sentito nominare :).
I suoi utilizzatori pero` stanno utilizzando questa implementazione
della serialize per migrare via da PHP (e poi la abbandoneranno visto
che non la usano per comunicare con il browser client). Tra l'altro
l'ultimo delle success stories stara` probabilmente migrando al mio
framework.
speriamo allora che la mia versione rivista e corretta a prova di hack
abbia più successo per tutti quelli che si stanno muovendo verso Python
da php e vorrebbero sfruttare magari qualcosa dei vecchi lavori o db
Post by unknown
Pacche non ne vuoi, critiche neanche. Quindi siamo un servizio di
assistenza gratuito e basta.
le critiche le accetto volentieri, altrimenti avevo già sfacubizzato
tutti e mi ero tolto dalla lista
Post by unknown
Appunto.
era per tornare in tema ...
Post by unknown
Non hai capito quello che ho scritto... Ma qui davvero non e` un
problema, non cambia poi molto.
capita
Post by unknown
No perche` da quanto ho visto sopra la lista non e` degna di muovere
critiche al tuo progetto perche` sono fatti tuoi. noi dobbiamo
aiutarti a risolvere il tuo problema, non discuterne.
mi sembra di aver risposto al meglio a tutto .... dove noti tutta questa
discussione a senso unico ?
Post by unknown
E se vuoi una consulenza da me devi pagare per averla, come fanno i
miei clienti.
... poi sono io a prendermela sul personale ... LOL
Post by unknown
Il problema principale e` il poco controllo che lasci al tuo
utilizzatore e questo e` male.
non ho capito
Post by unknown
Il bel tacer non fu mai scritto.
unknown
2006-08-19 05:41:37 UTC
Permalink
Post by unknown
Post by unknown
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.
Post by unknown
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.
Post by unknown
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
Post by unknown
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.
Post by unknown
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
Mi domando per quale folle ragione hai intenzione di implementare due
type system cosi differenti per farli "specchiare"
Post by unknown
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.
Post by unknown
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.
Post by unknown
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
Post by unknown
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
unknown
2006-08-19 06:29:57 UTC
Permalink
Post by unknown
Concordo con Valentino. Non stai facendo nulla di object oriented.
ok, usare classi per i pitoniani non significa fare qualcosa di OO
Post by unknown
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
Post by unknown
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
Post by unknown
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.
Post by unknown
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 ?
Post by unknown
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
Post by unknown
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 ?
Post by unknown
Incomincio a vedere tutto sto thread come una perdita di tempo non
costruttiva.
non per me
Post by unknown
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 ?
Post by unknown
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
Post by unknown
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
Post by unknown
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
unknown
2006-08-19 06:50:48 UTC
Permalink
Post by unknown
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.
Post by unknown
Post by unknown
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.
Post by unknown
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.
Post by unknown
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
Post by unknown
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ò :-(
Post by unknown
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.
Post by unknown
Post by unknown
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.
Post by unknown
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.
Post by unknown
Post by unknown
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à
Post by unknown
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
unknown
2006-08-19 07:02:03 UTC
Permalink
Post by unknown
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.
unknown
2006-08-19 06:33:04 UTC
Permalink
Post by unknown
Post by unknown
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 :).
Post by unknown
Post by unknown
Il resto è tutto più o meno uguale. parseType con un dizionario la fai
in 3 righe ed è più facilmente manutenibile.
???
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 = ""
vtype = value["type"].lower()
result = stypes[vtype]
return result
def parseType(self, value):
stypes = {...}
type = value.get('type', '').lower()
return stypes.get(type, 'u')
Post by unknown
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.
Post by unknown
Post by unknown
- 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.
Post by unknown
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_.
unknown
2006-08-19 06:46:38 UTC
Permalink
Post by unknown
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
Post by unknown
stypes = {...}
type = value.get('type', '').lower()
return stypes.get(type, 'u')
quindi has_key non serve a un tubo, giusto ?
Post by unknown
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"
Post by unknown
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
Post by unknown
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
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 ....
unknown
2006-08-19 06:58:20 UTC
Permalink
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
unknown
2006-08-19 07:39:08 UTC
Permalink
Post by unknown
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?
Post by unknown
2 - non ci faccio niente della mia lib per me che a me semplifica
Puoi fare quel che ti pare della tua lib.
Post by unknown
3 - c'è già tutto, che razzo programmo a fare
Veramente abbiamo parlato sempre e solo di una cosa.
Post by unknown
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
Post by unknown
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à
Post by unknown
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
unknown
2006-08-19 07:07:43 UTC
Permalink
Post by unknown
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.
Post by unknown
Post by unknown
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.
Post by unknown
Post by unknown
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.
Post by unknown
Post by unknown
No, non c'entra un tubo. send(state, 'method_name') e` una notazione
perfettamente OO.
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
Post by unknown
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.
unknown
2006-08-19 07:48:10 UTC
Permalink
Allora, raccolgo le palpebre per questa ultima email spero chiarificatrice.
Post by unknown
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 tecnico spesso discutibilissimo.

Rinnovo la buona notte, stò cotto e fuso.

Saluti,
Andrea Giammarchi
Continue reading on narkive:
Loading...