Re: [Python] Un videogioco fatto con la standard library
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
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
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
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
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
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
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
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
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
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
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
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
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