Re: [Python] Un videogioco fatto con la standard library

2011-12-12 Per discussione Francesco Maida
Il 11 dicembre 2011 19:13, Daniele Tricoli er...@mornie.org ha scritto:
 Non mi piace farmi pubblicità... ma magari può interessare. Questo è un
 semplicissimo snake che realizzai tempo fa perché dovevo illustrare il
 funzionamento della FFI di Python e mi serviva un esempio più accattivante
 del richiamare qualcosa dalla libc.

Grazie, gli sto dando un'occhiata in questo momento, mi sembra molto
più semplice da leggere rispetto all'altro codice sorgente.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Alessandro Dentella
On Sun, Dec 11, 2011 at 06:55:09PM +0100, Carlos Catucci wrote:
  A me non pare che tu stia facendo un confronto alla pari: stai confrontando
 
  la programmazione tramite un framework per web con quella senza 
 framework
  per desktop.
 
 
 Quello sto dicendo, mi sono spiegato male. Non abbiamo un framework NON web. 
 La
 cosa in se e' grave. Visto che il web per sua natura, indipendentemente da
 linguaggio e OS ospite, si basa sulla compatibilita' dei vari browser, e 
 quindi
 la forza di python della portabilita' as is del codice (fatti salvi i casi
 particolari come pywin) si perde. Certo rimangono tanti altri pregi, ma 
 sarebbe
 bello avere uno strumento come Django per sviluppare in client/server.
 
  come qt, gtk o wx, semmai lo devi paragonare (salvo la maturit  degli
  strumenti) con dei framework costruiti con quelle come Camelot [1], Sqlkit
  [2] o Dabo [3] o con framework specialisti come OpenERP [4].
 
 Camelot lo scopro or ora (ammetto la mia Grassa ignoranza). Ad essere sincero
 credevo fosse un qualcosa tipo Elixir legato a SqlAlchemy (i problemi di una
 formazione culturale basta su passioni fantasy).
 
 Sqlkit lo vedo piu' come un aggiungi schermate per gestire una serie di
 tabelle.


Puoi chiarire meglio cosa intendi ed in che modo ti pare che sia
concettualmente differente da Camelot? Chiaramente lo è, ha soluzioni
differenti agli stessi problemi, capisco anche che possano non piacere, ma
non riesco a vederci l'appartenenza a categorie differenti: usa i modelli di
SqlAlchemy invece che quelli di Elixir, usa una definizione a stringa invece
che a lista della schermata, usa una serie di hooks/segnali per implementare i
controller. (Peraltro io ho solo sfogliato il tutorial di Camelot senza
averci fatto prove)

sandro
*:-)


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


[Python] Python e DAS/NAS/SAN

2011-12-12 Per discussione Balan Victor
Ciao,
ho un server su cui lancio dei script python, da questo server accedo anche
a una NAS tramite percorso UNC. Esiste un modulo di python che mi permette
di fare operazioni su questa NAS?? per esempio vedere lo spazio disco,
contare il numero di file ecc.
Grazie.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-12 Per discussione Giampaolo Rodolà
Il 12 dicembre 2011 12:45, Balan Victor balan.vict...@gmail.com ha scritto:
 Ciao,
 ho un server su cui lancio dei script python, da questo server accedo anche
 a una NAS tramite percorso UNC. Esiste un modulo di python che mi permette
 di fare operazioni su questa NAS?? per esempio vedere lo spazio disco,
 contare il numero di file ecc.
 Grazie.

Non so quale sia il comportamento su volumi di rete, ma puoi provare
ad utilizzare questa recipe e vedere che succede:
http://code.activestate.com/recipes/577972-disk-usage/


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] web2py: lo conoscete - sessioni su db

2011-12-12 Per discussione Alessandro Dentella
On Fri, Dec 02, 2011 at 03:37:34PM +, Daniele Varrazzo wrote:
 Ah, cherrypy è multithread, ma lo storage su file delle sessioni non
 è thread safe, me lo sono dovuto scrivere io. Mi chiedevo come mai
 l'autore originale del programma usasse memcached solo per salvare
 (si fa per dire le sessioni). Quando abbiamo fatto il multi-nodo, un
 mio collega ha visto lo storage delle sessioni su database (che
 potrebbe servirci se volessimo scalare su diverse macchine) e ha
 detto che anche quello è finto.

Nel cammino verso l'indipendenza dell'applicativo dal processo voglio
portare le sessioni su database. 

Considerando che attualmente le singole request vengono evase in 100 ms
circa, pensavo di farlo utilizzando SELECT FOR UPDATE, così da garantirmi
che nessun'altra request possa leggere finché non ho evaso la request. 

Ci sono idee migliori o controindicazioni? (a parte che tengo occupata una
connessione solo per questa transazione)

Guadando il codice di django non ci leggo precauzioni contro questa
eventualità, mi sfuggono o cherry-py non è solo?

sandro
*:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Enrico 'Henryx' Bianchi
On Sunday, December 11, 2011 11:10:20 PM enrico franchi wrote:

 Ah, certo! Ma il compare fa schifo per i fatti suoi: a fare query semplici
 su dati poco strutturati notoriamente ce la fa. Quando non si perde i dati
 o non fa altre spettacolari cazzate, intendo.

Appunto, degno compare di un prodotto scadente :)

 Se vuoi ci guardo... :P

Penso che se ci guardi comincerai a bestemmiare anche tu. AclFileAttributes 
dovrebbe gestire le ACL scritte in formato NFSv4 (che, oltre a NFS, usa solo 
ZFS e forse UFS) mentre UserDefiniedFileAttributes dovrebbe gestire gli 
attributi estesi, ma non ho capito bene nemmeno io come funziona (e ci sono 
stato dietro per un po'). Ovviamente, di metodi per gestire ACL di tipo 
Windows o di tipo Posix 1e nemmeno l'ombra...

 Mi hai incuriosito tantissimo...

Eh, di piu` preferirei non dire, visto che si tratta di di un prodotto che 
vendiamo e di cui nemmeno sarei autorizzato a parlare (io sarei il sistemista, 
che poi disprezzi il lavoro della maggior parte dei programmatori che 
bazzicano li dentro e` un altro paio di maniche)

Enrico


signature.asc
Description: This is a digitally signed message part.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Enrico 'Henryx' Bianchi
On Friday, December 09, 2011 02:44:30 PM Carlos Catucci wrote:
 Ah la brochure sara sotto licenza Creative Common, liberamente
 utillizzabile, modficabile, estendibile etc. Per averne una copia bastera'
 mandarmi una mail pvt con la richiesta.

Perche` non la pubblichi da qualche parte, e.g. Google Docs?

Enrico


signature.asc
Description: This is a digitally signed message part.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Enrico 'Henryx' Bianchi
On Sunday, December 11, 2011 07:05:10 PM Carlos Catucci wrote:

 (forse perche' in generale
 aborro usare librerie specifich di un OS perche' perdo la portabilita'
 appunto).

Questo dipente fortemente da cosa stai facendo. Per ritornare all'esempio che 
porto avanti da parecchio, nel mio applicativo ho necessita` di leggere degli 
attributi di file che vadano oltre a quelli che mostra la STL (per capirci, 
ACL, e attributi estesi). L'unica via, a questo punto, e` crearmi un wrapper e 
richiamare quello giusto in base al sistema su cui mi trovo

 poi ho scoperto, tanto tempo dopo,
 Python e WxWidgets.

Ecco, Wxwidgets (che, personalmente, aborro[1]) e` un wrapper :)

Enrico
[1] Qt e` LA VIA!™, Gtk e` un male accettabile :P


signature.asc
Description: This is a digitally signed message part.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Carlos Catucci
 utillizzabile, modficabile, estendibile etc. Per averne una copia bastera'

  mandarmi una mail pvt con la richiesta.

 Perche` non la pubblichi da qualche parte, e.g. Google Docs?


Buona idea. +1 per te

Carlos
-- 
If you have no voice, SCREAM! If you have no legs, RUN! If you have no
hope, INVENT!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-12 Per discussione Balan Victor
ma una nas non è proprio un volume di reteadesso ho provato e sui
volumi di rete funziona domani provo anche sulla nas.
grazie.

Il giorno 12 dicembre 2011 13:35, Giampaolo Rodolà g.rod...@gmail.com ha
scritto:

 Il 12 dicembre 2011 12:45, Balan Victor balan.vict...@gmail.com ha
 scritto:
  Ciao,
  ho un server su cui lancio dei script python, da questo server accedo
 anche
  a una NAS tramite percorso UNC. Esiste un modulo di python che mi
 permette
  di fare operazioni su questa NAS?? per esempio vedere lo spazio disco,
  contare il numero di file ecc.
  Grazie.

 Non so quale sia il comportamento su volumi di rete, ma puoi provare
 ad utilizzare questa recipe e vedere che succede:
 http://code.activestate.com/recipes/577972-disk-usage/


 --- Giampaolo
 http://code.google.com/p/pyftpdlib/
 http://code.google.com/p/psutil/
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

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


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-12 Per discussione Carlos Catucci
lineo __non Questo dipente fortemente da cosa stai facendo. Per ritornare
all'esempio che

 porto avanti da parecchio, nel mio applicativo ho necessita` di leggere
 degli
 attributi di file che vadano oltre a quelli che mostra la STL (per capirci,
 ACL, e attributi estesi). L'unica via, a questo punto, e` crearmi un
 wrapper e
 richiamare quello giusto in base al sistema su cui mi trovo


Chiaro che dipende da coasa dev fare. Ma il mio era un discroso WORM (Write
Once Run on Many). Solo che a quei tempi un inyterprete non andava bene er
certe applicazioni quindi compilare era d'obbligo. Per cui avere una seire
di wrapper che permettessero ad esempio di scrivere un video game che poi
si compila AS IS su tutte le piattaforme era un sogno.


  poi ho scoperto, tanto tempo dopo,
  Python e WxWidgets.
 Ecco, Wxwidgets (che, personalmente, aborro[1]) e` un wrapper :)

 Enrico




 [1] Qt e` LA VIA!™, Gtk e` un male accettabile :P--


A me QT non piace proprio (complice forse di essere stata la base di KDE?
Mah!), trovo GTK carino se sei su Gnome, altrimenti diventa un cazzotto in
un occhio (sono su Mac, per far girare certe cose come Inkscape devo usare
Gtk e X-Window, e si vede che non ha nulla a che vdere, indem per Gimp).
Wxwidget e' un wrapper, risolve problemi )(come Wolf) ma ha una sintassi
(come anche gli altri due citati) che mi fa venire i crampi. A che mi serve
di usare uno dei linguaggi piu' chiari e compatti della storia
dell'informatica se poi devo fare papiri per definire oggetti o fare i
relativi Bind. Forse Camelot potrebbe essere uqel che cercavo. A prima
vista sembra una favola. Appena ho un progetto da fare lo provo.

Per rispondere all'altra mail rigiuardo alle differenze con Sqlkit, a me
sembra che, senza verli provati, sia diverso in quanto Camelot e' piu' una
cosa tipo Django, mentre il secondo e' un insieme di librerire che leggono
un Db e fanno scaffolding e gestione delle tabelle sottostanti. Utilissimo
in certi casi, ma se poi mi serve anche una applicazione che faccia altro
credo che sia piu' complesso avvolgerlo attrono. Pero' ribasdisco che sono
impressioni, posso dire che sia cosi' solo dopo avere fatto prive. Cosa che
non ho tempo di fare ora.

Tornando a WxPython avevo provato cose tipo Wax che semplificava la vita,
ma purtroppo era incompleto e non piu' supporttato.

Carlos

If you have no voice, SCREAM! If you have no legs, RUN! If you have no
hope, INVENT!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] web2py: lo conoscete - sessioni su db

2011-12-12 Per discussione Alessandro Dentella

Comincio dal fondo, forse risulta più chiaro il tutto.

On Mon, Dec 12, 2011 at 10:13:48PM +, Daniele Varrazzo wrote:
 A proposito, poi com'è andata con la storia di tornado e psycopg?

bene! con 10 processi tornado i tempi si sono azzerati, la cpu continua a essere
inutilizzata e la ram pure. La situazione attuale è quindi buona come
performance ma bastarda nella natura (un server nato per essere usato in modo
asyncrono e poi reso parallelo con differenti processi.) Personalmente sarei
più contento di spostarlo su un altro framework, ma la scelta la faremo dopo
avere analizzato cosa altro devono sviluppare.

La session affinity è necessaria perché la sessione viene presa dalla RAM se
esiste altrimenti da Redis, e salvata poi comunque su Redis. Il fatto di
prenderla dalla RAM è odioso in quanto mi crea problemi a restartare il
server, e presto cambierà. 


 On Mon, 12 Dec 2011 18:49:38 +0100, Alessandro Dentella wrote:
 On Fri, Dec 02, 2011 at 03:37:34PM +, Daniele Varrazzo wrote:
 Ah, cherrypy è multithread, ma lo storage su file delle sessioni non
 è thread safe, me lo sono dovuto scrivere io. Mi chiedevo come mai
 l'autore originale del programma usasse memcached solo per salvare
 (si fa per dire le sessioni). Quando abbiamo fatto il multi-nodo, un
 mio collega ha visto lo storage delle sessioni su database (che
 potrebbe servirci se volessimo scalare su diverse macchine) e ha
 detto che anche quello è finto.
 
 Nel cammino verso l'indipendenza dell'applicativo dal processo voglio
 portare le sessioni su database.
 
 Uhm... ok... su file non vanno più bene? Assumo che lo vogliate fare
 per scalare oltre la singola macchina, altrimenti non c'è ragione.

non sono su file, in questo momento sono... 1/2 in ram e 1/2 su Redis. Non
si erano ancora resi conto che è bacato solo perché la usavano in modo
sincrono e con un solo processo. Non trovo comoda la session affinity
soprattutto in quanto non necessaria accettando il costo di qualche
millisecondo per prendere e scrivere la session su db

 Considerando che attualmente le singole request vengono evase in
 100 ms
 circa, pensavo di farlo utilizzando SELECT FOR UPDATE, così da
 garantirmi
 che nessun'altra request possa leggere finché non ho evaso la
 request.
 
 E perché vorresti impedire di leggere? Uno fa tanto per progettare
 un database che consenta letture e scritture concorrenti e tu infili
 gli un ombrello nella ruota davanti? :)

come la metti giù dura! Quelli che fanno tutta quella fatica a progettare i
db hanno anche pensato alla utilità del SELECT FOR UPDATE, quelli di
postgresql poi l'hanno fatto selettivo al singolo record, ed in lettura mica
mi si blocca se non uso FOR UPDATE. L'update della sessione lo blocco dove
mi serve!

Attualmente scrivono e se ne fregano, il risultato è che alcuni dati vengono
sovrascritti, quindi se il controllo lo devo fare, tanto vale farlo
prima, visto che esiste un modo così semplice.

Il programma è una griglia che viene compilata, ad ogni cambio cella parte
una richiesta ajax. La probabilità che uno si incespichi con sè stesso è
comunque bassa, quindi non mi aspetto che si debbano perdere molti ms.


 Ci sono idee migliori o controindicazioni? (a parte che tengo
 occupata una
 connessione solo per questa transazione)
 
 Controindicazioni dei lock espliciti? Quante ne vuoi. Non è una
 buona idea. Sono pochi i problemi che hanno davvero bisogno di un
 lock per essere risolti, e tu non sei neanche sicuro di avere un
 problema: ti direi lascia perdere che rischi di fare più danni di
 quelli di cui hai bisogno.

il problema c'è ed è tangibile 

 
 Guadando il codice di django non ci leggo precauzioni contro questa
 eventualità, mi sfuggono o cherry-py non è solo?
 
 Forse semplicemente non è un problema. Se hai un burst di letture
 sullo stesso utente dovuto a richieste asincrone, dovrebbero leggere
 tutte uno stato consistente della sessione. I problemi di cherrypy

non è così, leggono e cambiano la sessione, la successiva deve leggere i
nuovi valori. Hanno voluto aspettare a salvare sul db per offrire una
opzione di salvare o annullare e -per come è fatta ora la soluzione-
lasciano in sessione un tot di dati. 


 sono ridicolamente altri, secondo me django due o tre persone
 l'hanno testato e va bene così com'è. Con cherrypy a volte le

(due o tre? allora le conosco tutte! ;-)

 sessioni leggevano un file e lo trovavano vuoto perché la richiesta
 di prima l'aveva aperto per scrivere (con open(name, 'w')) e non
 l'aveva ancora chiuso; con postgres questo problema non esiste: o il
 vecchio, o il nuovo, ma un record consistente ce lo trovi. Le

ma se è vecchio non mi serve! allora meglio aspettare per avere il nuovo...

 Controindicazioni dei lock espliciti? Quante ne vuoi. Non è una

Dai dammene qualcuna di convincente...


sandro
*:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] cgi ottimizzati ERA: web: sync vs. async

2011-12-12 Per discussione Roberto De Ioris



 Io stavo valutando un altra strada (nel caso in cui non serva un elevato
 grado di concorrenza): il buon vecchio CGI.
 Ovviamente non CGI normale, ma fare in modo che l'interprete Python sia
 embedato nel server (e pre-caricare in memoria quanto più possibile
 specialmente se read-only) e poi fare un fork + Python exec.

 Rispetto ad un CGI normale (fork + sys exec) mi aspetto un miglioramento
 significativo, anche grazie al copy-on-write.



Ho trovato un po' di tempo per tentare questo approccio:

http://projects.unbit.it/uwsgi/wiki/CGI#Example10:optimizingCGIs

effettivamente il guadagno prestazionale c'e', e anche tanto.

Un Hello World su cgi classico su una macchina monoprocessore abbastanza
scarsa (tra l'altro virtualizzata con virtualbox) fa circa 15 richieste al
secondo. Usando la libreria c che c'e' nel link (scritta in 5 minuti, ma
che puo' essere sicuramente migliorata) ne fa 35 (!!!). E' piu' del
doppio, senza dover riscrivere una sola linea dei propri cgi. Io ad
esempio preferisco quasi sempre eseguire mercurial come cgi, questo
approccio mi sarebbe molto utile.

Il problema, e' che infilare i CGI in nginx (intendo senza passare per
uWSGI) e' fuori discussione (almeno per linux) poiche' tutte le wait()
sono bloccanti e anche usando WNOHANG sarebbe richiesto uno sforzo non
indifferente al core di nginx (che dovrebbe chiamare waitpid() a
intervalli regolari per vedere se qualcosa e' cambiato). Nei BSD sarebbe
molto piu' facile, perche' kqueue() puo' rimanere in attesa di un processo
oltre che di un file descriptor (bellissimo).

-- 
Roberto De Ioris
http://unbit.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python